From 51f0662f9b2af70275a5adc40be22b254758787e Mon Sep 17 00:00:00 2001
From: 2hwk <15316958+2hwk@users.noreply.github.com>
Date: Thu, 26 Sep 2024 02:28:53 +0800
Subject: [PATCH] feat(a380x): proper trim tank calculation/logic for automatic
refueling (#8885)
* init trim tank lut
* feat: trim tank calculation v1
* fix: don't round 2 digits
* revert: back to normal defaults
* fix: tests
* feat: target zfw bsaed on efb values
* fix: initialise desired fuel on first load
* chore: remove old comment
* chore: readme
* chore: remove unnecessary features
* feat: limit refuel slider % to be more sensible for current WV (can be overriden)
* fix: review comments
* fix: review comments
* refactor: updated flts for current tank fueling logic
* fix: adjust for 0 pax
* refactor: remove clone and immutable mut, cleanup
* fix: arm gnd spoilers in appropriate flt states
* fix: update flaps and ths setting for runway flt
* fix: seatbelt sign
* fix: seatbelt sign
* fix: use clamp
* fix: remove def
* fix: flt + xml
* revert: a320 apron.flt
---
Cargo.lock | 817 ++++++++++++++----
dev-env | 1 +
fbw-a380x/README.md | 8 +-
.../AirPlanes/FlyByWire_A380_842/Climb.flt | 60 +-
.../AirPlanes/FlyByWire_A380_842/approach.FLT | 38 +
.../AirPlanes/FlyByWire_A380_842/apron.FLT | 1 +
.../AirPlanes/FlyByWire_A380_842/cruise.FLT | 59 +-
.../AirPlanes/FlyByWire_A380_842/final.FLT | 39 +
.../FlyByWire_A380_842/model/A380_COCKPIT.xml | 5 +-
.../AirPlanes/FlyByWire_A380_842/runway.FLT | 65 +-
.../AirPlanes/FlyByWire_A380_842/taxi.flt | 46 +-
fbw-a380x/src/systems/systems-host/index.ts | 2 +
.../systems-host/systems/LegacyFuelInit.ts | 16 +
.../src/wasm/systems/a380_systems/Cargo.toml | 3 +
.../fuel/fuel_quantity_management_system.rs | 161 +++-
.../wasm/systems/a380_systems/src/fuel/mod.rs | 1 +
.../systems/a380_systems/src/fuel/test.rs | 48 +-
.../src/fuel/trim_tank_targets.toml | 16 +
.../systems/a380_systems/src/payload/mod.rs | 3 +
.../Ground/Pages/Fuel/A380_842/A380Fuel.tsx | 11 +-
20 files changed, 1162 insertions(+), 238 deletions(-)
create mode 160000 dev-env
create mode 100644 fbw-a380x/src/systems/systems-host/systems/LegacyFuelInit.ts
create mode 100644 fbw-a380x/src/wasm/systems/a380_systems/src/fuel/trim_tank_targets.toml
diff --git a/Cargo.lock b/Cargo.lock
index 902db99939e..38ff78c5ec4 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -51,7 +51,10 @@ dependencies = [
"rand",
"rand_pcg",
"rstest",
+ "serde",
+ "serde_with",
"systems",
+ "toml",
"uom",
]
@@ -68,18 +71,42 @@ dependencies = [
[[package]]
name = "addr2line"
-version = "0.19.0"
+version = "0.24.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97"
+checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375"
dependencies = [
"gimli",
]
[[package]]
-name = "adler"
-version = "1.0.2"
+name = "adler2"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
+
+[[package]]
+name = "aho-corasick"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "android-tzdata"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
+
+[[package]]
+name = "android_system_properties"
+version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
+checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
+dependencies = [
+ "libc",
+]
[[package]]
name = "approx"
@@ -92,32 +119,38 @@ dependencies = [
[[package]]
name = "autocfg"
-version = "1.1.0"
+version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
[[package]]
name = "backtrace"
-version = "0.3.67"
+version = "0.3.74"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca"
+checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a"
dependencies = [
"addr2line",
- "cc",
"cfg-if",
"libc",
"miniz_oxide",
"object",
"rustc-demangle",
+ "windows-targets",
]
+[[package]]
+name = "base64"
+version = "0.22.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
+
[[package]]
name = "bindgen"
version = "0.66.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2b84e06fc203107bfbad243f4aba2af864eb7db3b1cf46ea0a023b0b433d2a7"
dependencies = [
- "bitflags 2.4.1",
+ "bitflags 2.6.0",
"cexpr",
"clang-sys",
"lazy_static",
@@ -130,7 +163,7 @@ dependencies = [
"regex",
"rustc-hash",
"shlex",
- "syn 2.0.38",
+ "syn 2.0.77",
"which",
]
@@ -142,9 +175,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bitflags"
-version = "2.4.1"
+version = "2.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07"
+checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
[[package]]
name = "bounded-vec-deque"
@@ -152,17 +185,26 @@ version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2225b558afc76c596898f5f1b3fc35cfce0eb1b13635cbd7d1b2a7177dc10ccd"
+[[package]]
+name = "bumpalo"
+version = "3.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
+
[[package]]
name = "byteorder"
-version = "1.4.3"
+version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
[[package]]
name = "cc"
-version = "1.0.79"
+version = "1.1.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
+checksum = "2d74707dde2ba56f86ae90effb3b43ddd369504387e718014de010cec7959800"
+dependencies = [
+ "shlex",
+]
[[package]]
name = "cexpr"
@@ -179,33 +221,113 @@ version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+[[package]]
+name = "chrono"
+version = "0.4.38"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401"
+dependencies = [
+ "android-tzdata",
+ "iana-time-zone",
+ "num-traits",
+ "serde",
+ "windows-targets",
+]
+
[[package]]
name = "clang-sys"
-version = "1.6.1"
+version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f"
+checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4"
dependencies = [
"glob",
"libc",
"libloading",
]
+[[package]]
+name = "core-foundation-sys"
+version = "0.8.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
+
+[[package]]
+name = "darling"
+version = "0.20.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989"
+dependencies = [
+ "darling_core",
+ "darling_macro",
+]
+
+[[package]]
+name = "darling_core"
+version = "0.20.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5"
+dependencies = [
+ "fnv",
+ "ident_case",
+ "proc-macro2",
+ "quote",
+ "strsim",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "darling_macro"
+version = "0.20.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806"
+dependencies = [
+ "darling_core",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "deranged"
+version = "0.3.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
+dependencies = [
+ "powerfmt",
+ "serde",
+]
+
[[package]]
name = "either"
-version = "1.8.1"
+version = "1.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
+checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
[[package]]
name = "enum_dispatch"
-version = "0.3.11"
+version = "0.3.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "11f36e95862220b211a6e2aa5eca09b4fa391b13cd52ceb8035a24bf65a79de2"
+checksum = "aa18ce2bc66555b3218614519ac839ddb759a7d6720732f979ef8d13be147ecd"
dependencies = [
"once_cell",
"proc-macro2",
"quote",
- "syn 1.0.109",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "equivalent"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
+
+[[package]]
+name = "errno"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba"
+dependencies = [
+ "libc",
+ "windows-sys",
]
[[package]]
@@ -230,11 +352,17 @@ dependencies = [
"synstructure",
]
+[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
[[package]]
name = "futures"
-version = "0.3.28"
+version = "0.3.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40"
+checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0"
dependencies = [
"futures-channel",
"futures-core",
@@ -247,9 +375,9 @@ dependencies = [
[[package]]
name = "futures-channel"
-version = "0.3.28"
+version = "0.3.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2"
+checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78"
dependencies = [
"futures-core",
"futures-sink",
@@ -257,15 +385,15 @@ dependencies = [
[[package]]
name = "futures-core"
-version = "0.3.28"
+version = "0.3.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c"
+checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d"
[[package]]
name = "futures-executor"
-version = "0.3.28"
+version = "0.3.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0"
+checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d"
dependencies = [
"futures-core",
"futures-task",
@@ -274,38 +402,38 @@ dependencies = [
[[package]]
name = "futures-io"
-version = "0.3.28"
+version = "0.3.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964"
+checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
[[package]]
name = "futures-macro"
-version = "0.3.28"
+version = "0.3.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72"
+checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.38",
+ "syn 2.0.77",
]
[[package]]
name = "futures-sink"
-version = "0.3.28"
+version = "0.3.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e"
+checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5"
[[package]]
name = "futures-task"
-version = "0.3.28"
+version = "0.3.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65"
+checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
[[package]]
name = "futures-util"
-version = "0.3.28"
+version = "0.3.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533"
+checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
dependencies = [
"futures-channel",
"futures-core",
@@ -340,9 +468,9 @@ dependencies = [
[[package]]
name = "getrandom"
-version = "0.2.9"
+version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4"
+checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
dependencies = [
"cfg-if",
"libc",
@@ -351,9 +479,9 @@ dependencies = [
[[package]]
name = "gimli"
-version = "0.27.2"
+version = "0.31.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4"
+checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64"
[[package]]
name = "glob"
@@ -367,6 +495,56 @@ version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+[[package]]
+name = "hashbrown"
+version = "0.14.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
+
+[[package]]
+name = "hex"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
+
+[[package]]
+name = "home"
+version = "0.5.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5"
+dependencies = [
+ "windows-sys",
+]
+
+[[package]]
+name = "iana-time-zone"
+version = "0.1.60"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141"
+dependencies = [
+ "android_system_properties",
+ "core-foundation-sys",
+ "iana-time-zone-haiku",
+ "js-sys",
+ "wasm-bindgen",
+ "windows-core",
+]
+
+[[package]]
+name = "iana-time-zone-haiku"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "ident_case"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
+
[[package]]
name = "indexmap"
version = "1.9.3"
@@ -374,14 +552,41 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
dependencies = [
"autocfg",
- "hashbrown",
+ "hashbrown 0.12.3",
+ "serde",
+]
+
+[[package]]
+name = "indexmap"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5"
+dependencies = [
+ "equivalent",
+ "hashbrown 0.14.5",
+ "serde",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
+
+[[package]]
+name = "js-sys"
+version = "0.3.70"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a"
+dependencies = [
+ "wasm-bindgen",
]
[[package]]
name = "lazy_static"
-version = "1.4.0"
+version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
[[package]]
name = "lazycell"
@@ -391,49 +596,53 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
[[package]]
name = "libc"
-version = "0.2.141"
+version = "0.2.158"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5"
+checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439"
[[package]]
name = "libloading"
-version = "0.7.4"
+version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f"
+checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4"
dependencies = [
"cfg-if",
- "winapi",
+ "windows-targets",
]
[[package]]
name = "libm"
-version = "0.2.6"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058"
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.4.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "348108ab3fba42ec82ff6e9564fc4ca0247bdccdc68dd8af9764bbc79c3c8ffb"
+checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"
[[package]]
name = "log"
-version = "0.4.17"
+version = "0.4.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
-dependencies = [
- "cfg-if",
-]
+checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
[[package]]
name = "matrixmultiply"
-version = "0.3.2"
+version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "add85d4dd35074e6fedc608f8c8f513a3548619a9024b751949ef0e8e45a4d84"
+checksum = "9380b911e3e96d10c1f415da0876389aaf1b56759054eeb0de7df940c456ba1a"
dependencies = [
+ "autocfg",
"rawpointer",
]
[[package]]
name = "memchr"
-version = "2.5.0"
+version = "2.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
[[package]]
name = "minimal-lexical"
@@ -443,11 +652,11 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
[[package]]
name = "miniz_oxide"
-version = "0.6.2"
+version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa"
+checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1"
dependencies = [
- "adler",
+ "adler2",
]
[[package]]
@@ -553,6 +762,12 @@ dependencies = [
"num-traits",
]
+[[package]]
+name = "num-conv"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
+
[[package]]
name = "num-derive"
version = "0.3.3"
@@ -566,11 +781,10 @@ dependencies = [
[[package]]
name = "num-integer"
-version = "0.1.45"
+version = "0.1.46"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
+checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
dependencies = [
- "autocfg",
"num-traits",
]
@@ -587,9 +801,9 @@ dependencies = [
[[package]]
name = "num-traits"
-version = "0.2.15"
+version = "0.2.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
dependencies = [
"autocfg",
"libm",
@@ -597,24 +811,24 @@ dependencies = [
[[package]]
name = "object"
-version = "0.30.3"
+version = "0.36.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ea86265d3d3dcb6a27fc51bd29a4bf387fae9d2986b823079d4986af253eb439"
+checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a"
dependencies = [
"memchr",
]
[[package]]
name = "once_cell"
-version = "1.17.1"
+version = "1.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
+checksum = "33ea5043e58958ee56f3e15a90aee535795cd7dfd319846288d93c5b57d85cbe"
[[package]]
name = "paste"
-version = "1.0.12"
+version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9f746c4065a8fa3fe23974dd82f15431cc8d40779821001404d10d2e79ca7d79"
+checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
[[package]]
name = "peeking_take_while"
@@ -624,19 +838,20 @@ checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
[[package]]
name = "pest"
-version = "2.5.7"
+version = "2.7.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b1403e8401ad5dedea73c626b99758535b342502f8d1e361f4a2dd952749122"
+checksum = "9c73c26c01b8c87956cea613c907c9d6ecffd8d18a2a5908e5de0adfaa185cea"
dependencies = [
+ "memchr",
"thiserror",
"ucd-trie",
]
[[package]]
name = "pin-project-lite"
-version = "0.2.9"
+version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
+checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"
[[package]]
name = "pin-utils"
@@ -654,20 +869,29 @@ dependencies = [
"svg",
]
+[[package]]
+name = "powerfmt"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
+
[[package]]
name = "ppv-lite86"
-version = "0.2.17"
+version = "0.2.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
+checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04"
+dependencies = [
+ "zerocopy",
+]
[[package]]
name = "prettyplease"
-version = "0.2.15"
+version = "0.2.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d"
+checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba"
dependencies = [
"proc-macro2",
- "syn 2.0.38",
+ "syn 2.0.77",
]
[[package]]
@@ -677,23 +901,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
dependencies = [
"once_cell",
- "toml_edit",
+ "toml_edit 0.19.15",
]
[[package]]
name = "proc-macro2"
-version = "1.0.69"
+version = "1.0.86"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da"
+checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
-version = "1.0.33"
+version = "1.0.37"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
+checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af"
dependencies = [
"proc-macro2",
]
@@ -755,18 +979,32 @@ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
[[package]]
name = "regex"
-version = "1.7.3"
+version = "1.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b1f693b24f6ac912f4893ef08244d70b6067480d2f1a46e950c9691e6749d1d"
+checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df"
dependencies = [
+ "aho-corasick",
+ "memchr",
"regex-syntax",
]
[[package]]
name = "regex-syntax"
-version = "0.6.29"
+version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
+checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b"
[[package]]
name = "rstest"
@@ -783,9 +1021,9 @@ dependencies = [
[[package]]
name = "rustc-demangle"
-version = "0.1.22"
+version = "0.1.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d4a36c42d1873f9a77c53bde094f9664d9891bc604a45b4798fd2c389ed12e5b"
+checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
[[package]]
name = "rustc-hash"
@@ -802,12 +1040,31 @@ dependencies = [
"semver",
]
+[[package]]
+name = "rustix"
+version = "0.38.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811"
+dependencies = [
+ "bitflags 2.6.0",
+ "errno",
+ "libc",
+ "linux-raw-sys",
+ "windows-sys",
+]
+
[[package]]
name = "rustplotlib"
version = "0.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4326f7ac67e4ff419282ad12dabf1fcad09481a849b72108c890e01414ebb88a"
+[[package]]
+name = "ryu"
+version = "1.0.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
+
[[package]]
name = "semver"
version = "0.11.0"
@@ -828,29 +1085,80 @@ dependencies = [
[[package]]
name = "serde"
-version = "1.0.160"
+version = "1.0.210"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bb2f3770c8bce3bcda7e149193a069a0f4365bda1fa5cd88e03bca26afc1216c"
+checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
-version = "1.0.160"
+version = "1.0.210"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.128"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8"
+dependencies = [
+ "itoa",
+ "memchr",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "serde_spanned"
+version = "0.6.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "serde_with"
+version = "3.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "291a097c63d8497e00160b166a967a4a79c64f3facdd01cbd7502231688d77df"
+checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857"
dependencies = [
+ "base64",
+ "chrono",
+ "hex",
+ "indexmap 1.9.3",
+ "indexmap 2.5.0",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "serde_with_macros",
+ "time",
+]
+
+[[package]]
+name = "serde_with_macros"
+version = "3.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8fee4991ef4f274617a51ad4af30519438dacb2f56ac773b08a1922ff743350"
+dependencies = [
+ "darling",
"proc-macro2",
"quote",
- "syn 2.0.38",
+ "syn 2.0.77",
]
[[package]]
name = "shlex"
-version = "1.1.0"
+version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3"
+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
[[package]]
name = "simba"
@@ -866,13 +1174,19 @@ dependencies = [
[[package]]
name = "slab"
-version = "0.4.8"
+version = "0.4.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
+checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
dependencies = [
"autocfg",
]
+[[package]]
+name = "strsim"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
+
[[package]]
name = "svg"
version = "0.7.2"
@@ -892,9 +1206,9 @@ dependencies = [
[[package]]
name = "syn"
-version = "2.0.38"
+version = "2.0.77"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b"
+checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed"
dependencies = [
"proc-macro2",
"quote",
@@ -944,64 +1258,123 @@ dependencies = [
[[package]]
name = "thiserror"
-version = "1.0.40"
+version = "1.0.63"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
+checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
-version = "1.0.40"
+version = "1.0.63"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
+checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.38",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "time"
+version = "0.3.36"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885"
+dependencies = [
+ "deranged",
+ "itoa",
+ "num-conv",
+ "powerfmt",
+ "serde",
+ "time-core",
+ "time-macros",
+]
+
+[[package]]
+name = "time-core"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
+
+[[package]]
+name = "time-macros"
+version = "0.2.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf"
+dependencies = [
+ "num-conv",
+ "time-core",
+]
+
+[[package]]
+name = "toml"
+version = "0.8.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e"
+dependencies = [
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "toml_edit 0.22.20",
]
[[package]]
name = "toml_datetime"
-version = "0.6.1"
+version = "0.6.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.19.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622"
+checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
+dependencies = [
+ "indexmap 2.5.0",
+ "toml_datetime",
+ "winnow 0.5.40",
+]
[[package]]
name = "toml_edit"
-version = "0.19.8"
+version = "0.22.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13"
+checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d"
dependencies = [
- "indexmap",
+ "indexmap 2.5.0",
+ "serde",
+ "serde_spanned",
"toml_datetime",
- "winnow",
+ "winnow 0.6.18",
]
[[package]]
name = "typenum"
-version = "1.16.0"
+version = "1.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba"
+checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
[[package]]
name = "ucd-trie"
-version = "0.1.5"
+version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81"
+checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9"
[[package]]
name = "unicode-ident"
-version = "1.0.8"
+version = "1.0.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
+checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe"
[[package]]
name = "unicode-xid"
-version = "0.2.4"
+version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c"
+checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a"
[[package]]
name = "uom"
@@ -1015,9 +1388,9 @@ dependencies = [
[[package]]
name = "version_check"
-version = "0.9.4"
+version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
[[package]]
name = "wasi"
@@ -1025,44 +1398,190 @@ version = "0.11.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.93"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.93"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b"
+dependencies = [
+ "bumpalo",
+ "log",
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.93"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.93"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.93"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484"
+
[[package]]
name = "which"
-version = "4.4.0"
+version = "4.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2441c784c52b289a054b7201fc93253e288f094e2f4be9058343127c4226a269"
+checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7"
dependencies = [
"either",
- "libc",
+ "home",
"once_cell",
+ "rustix",
]
[[package]]
-name = "winapi"
-version = "0.3.9"
+name = "windows-core"
+version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
dependencies = [
- "winapi-i686-pc-windows-gnu",
- "winapi-x86_64-pc-windows-gnu",
+ "windows-targets",
]
[[package]]
-name = "winapi-i686-pc-windows-gnu"
-version = "0.4.0"
+name = "windows-sys"
+version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+dependencies = [
+ "windows-targets",
+]
[[package]]
-name = "winapi-x86_64-pc-windows-gnu"
-version = "0.4.0"
+name = "windows-targets"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
+dependencies = [
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
[[package]]
name = "winnow"
-version = "0.4.1"
+version = "0.5.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae8970b36c66498d8ff1d66685dc86b91b29db0c7739899012f63a63814b4b28"
+checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876"
dependencies = [
"memchr",
]
+
+[[package]]
+name = "winnow"
+version = "0.6.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "zerocopy"
+version = "0.7.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
+dependencies = [
+ "byteorder",
+ "zerocopy-derive",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.7.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
diff --git a/dev-env b/dev-env
new file mode 160000
index 00000000000..232438fdd52
--- /dev/null
+++ b/dev-env
@@ -0,0 +1 @@
+Subproject commit 232438fdd5244fc390c52083136eb71e7e63232c
diff --git a/fbw-a380x/README.md b/fbw-a380x/README.md
index 1f2409c2056..59427b006fe 100644
--- a/fbw-a380x/README.md
+++ b/fbw-a380x/README.md
@@ -56,8 +56,12 @@ These systems are currently not operational / these features are missing and sha
- Complete SLAT/FLAP CTL implementation (adapted A32NX computers atm)
### ATA 28 Fuel
-
-- Automatic fuel transfer system
+- Refuel Driver/Refuel Application placeholder pseudo-FQMS implementation (pre-cursor for realistic FQMS implementation while supporting instant load)
+ - CPIOM etc. not implemented yet.
+- Automatic fuel transfer system - Not fully implemented yet i.e. AGT off when 2 engines on
+- Manual refueling - Not supported yet
+- Integrated Refuel Panel - Simulated in the systems but not modeled in the plane model, or fully connected to ELEC
+- MFD entry - Not supported yet (ZFW/ZFWCG entry - Possible via EFB currently for testing)
### ATA 29 Hydraulic System
diff --git a/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/Climb.flt b/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/Climb.flt
index 99fcf8c1436..6fca24c0466 100644
--- a/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/Climb.flt
+++ b/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/Climb.flt
@@ -203,23 +203,24 @@ Pump.18=False
Pump.19=False
Pump.20=False
Pump.21=False
-Tank.1=0
-Tank.2=1
-Tank.3=0.25
-Tank.4=0.25
-Tank.5=1
-Tank.6=1
-Tank.7=0.25
-Tank.8=0.25
-Tank.9=1
-Tank.10=0
-Tank.11=0
+Tank.1=0.4818560183048248291
+Tank.2=0.74762970209121704102
+Tank.3=0
+Tank.4=0.14810475707054138184
+Tank.5=0.72874546051025390625
+Tank.6=0.72874546051025390625
+Tank.7=0.14810457825660705566
+Tank.8=0
+Tank.9=0.74762970209121704102
+Tank.10=0.4818560183048248291
+Tank.11=0.55189013481140136719
Junction.7=1
Junction.8=1
Junction.9=1
[Systems.0]
BatterySwitch=True
+SeatBeltsSwitch=True
StructuralDeiceSwitch=False
PropDeiceSwitch=False
StandbyVacuum=False
@@ -234,7 +235,16 @@ TailhookState=0
FoldingWingsHandle=False
FoldingWingsState=0, 0
+[Payload.0]
+PayloadList=1296.3,4629.7,7037.2,8703.8,7037.2,7777.9,7037.2,6296.4,7037.2,7037.2,2222.3,5370.5,4629.7,3148.2,10491.8,7456.0, 923.7, 1.0, 1.0
+
[LocalVars.0]
+A32NX_CARGO_FWD=4759
+A32NX_CARGO_FWD_DESIRED=4759
+A32NX_CARGO_AFT=3382
+A32NX_CARGO_AFT_DESIRED=3382
+A32NX_CARGO_BULK=419
+A32NX_CARGO_BULK_DESIRED=419
A32NX_EFIS_L_NAVAID_1_MODE=2
A32NX_EFIS_L_NAVAID_2_MODE=2
A32NX_EFIS_L_ND_MODE=3
@@ -294,6 +304,34 @@ A32NX_OVHD_HYD_ENG_4B_PUMP_PB_IS_AUTO = 1
A32NX_OVHD_PRESS_MAN_ALTITUDE_PB_IS_AUTO=1
A32NX_OVHD_PRESS_MAN_VS_CTL_PB_IS_AUTO=1
A32NX_OVHD_VENT_CAB_FANS_PB_IS_ON=1
+A32NX_PAX_MAIN_FWD_A=35160464
+A32NX_PAX_MAIN_FWD_A_DESIRED=35160464
+A32NX_PAX_MAIN_FWD_B=268430719
+A32NX_PAX_MAIN_FWD_B_DESIRED=268430719
+A32NX_PAX_MAIN_MID_1A=1097363095551
+A32NX_PAX_MAIN_MID_1A_DESIRED=1097363095551
+A32NX_PAX_MAIN_MID_1B=2251796592328701
+A32NX_PAX_MAIN_MID_1B_DESIRED=2251796592328701
+A32NX_PAX_MAIN_MID_1C=17589501640446
+A32NX_PAX_MAIN_MID_1C_DESIRED=17589501640446
+A32NX_PAX_MAIN_MID_2A=558386550667247
+A32NX_PAX_MAIN_MID_2A_DESIRED=558386550667247
+A32NX_PAX_MAIN_MID_2B=1647119957759
+A32NX_PAX_MAIN_MID_2B_DESIRED=1647119957759
+A32NX_PAX_MAIN_MID_2C=135157121023
+A32NX_PAX_MAIN_MID_2C_DESIRED=135157121023
+A32NX_PAX_MAIN_AFT_A=4361203744767
+A32NX_PAX_MAIN_AFT_A_DESIRED=4361203744767
+A32NX_PAX_MAIN_AFT_B=2196875509695
+A32NX_PAX_MAIN_AFT_B_DESIRED=2196875509695
+A32NX_PAX_UPPER_FWD=15615
+A32NX_PAX_UPPER_FWD_DESIRED=15615
+A32NX_PAX_UPPER_MID_A=1073741819
+A32NX_PAX_UPPER_MID_A_DESIRED=1073741819
+A32NX_PAX_UPPER_MID_B=268432127
+A32NX_PAX_UPPER_MID_B_DESIRED=268432127
+A32NX_PAX_UPPER_AFT=261631
+A32NX_PAX_UPPER_AFT_DESIRED=261631
A32NX_PRIM_1_PUSHBUTTON_PRESSED=1
A32NX_PRIM_2_PUSHBUTTON_PRESSED=1
A32NX_PRIM_3_PUSHBUTTON_PRESSED=1
diff --git a/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/approach.FLT b/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/approach.FLT
index 24c830238b4..8c0d21e7e56 100644
--- a/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/approach.FLT
+++ b/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/approach.FLT
@@ -222,6 +222,10 @@ TailhookHandle=False
TailhookState=0
FoldingWingsHandle=False
FoldingWingsState=0, 0
+SeatBeltsSwitch=True
+
+[Payload.0]
+PayloadList=1296.3,4629.7,7037.2,8703.8,7037.2,7777.9,7037.2,6296.4,7037.2,7037.2,2222.3,5370.5,4629.7,3148.2,10491.8,7456.0, 923.7, 1.0, 1.0
[LocalVars.0]
A320_Neo_AIRCOND_LVL_1=50
@@ -241,6 +245,12 @@ A32NX_AVIONICS_STARTUP_SOUNDS_INHIBIT=1
A32NX_BARO_BRIGHTNESS=0.75
A32NX_CALLS_EMERLOCK_TOGGLE=1
A32NX_CALLS_EMER_ON=0
+A32NX_CARGO_FWD=4759
+A32NX_CARGO_FWD_DESIRED=4759
+A32NX_CARGO_AFT=3382
+A32NX_CARGO_AFT_DESIRED=3382
+A32NX_CARGO_BULK=419
+A32NX_CARGO_BULK_DESIRED=419
A32NX_CARGOSMOKE_AFT_DISCHARGED = 0
A32NX_CARGOSMOKE_DISCH1LOCK_TOGGLE=0
A32NX_CARGOSMOKE_DISCH2LOCK_TOGGLE=0
@@ -357,6 +367,34 @@ A32NX_OXYGEN_TMR_RESET_FAULT = 0
A32NX_PANEL_DCDU_L_BRIGHTNESS=0.5
A32NX_PANEL_DCDU_R_BRIGHTNESS=0.5
A32NX_PARK_BRAKE_LEVER_POS=0
+A32NX_PAX_MAIN_FWD_A=35160464
+A32NX_PAX_MAIN_FWD_A_DESIRED=35160464
+A32NX_PAX_MAIN_FWD_B=268430719
+A32NX_PAX_MAIN_FWD_B_DESIRED=268430719
+A32NX_PAX_MAIN_MID_1A=1097363095551
+A32NX_PAX_MAIN_MID_1A_DESIRED=1097363095551
+A32NX_PAX_MAIN_MID_1B=2251796592328701
+A32NX_PAX_MAIN_MID_1B_DESIRED=2251796592328701
+A32NX_PAX_MAIN_MID_1C=17589501640446
+A32NX_PAX_MAIN_MID_1C_DESIRED=17589501640446
+A32NX_PAX_MAIN_MID_2A=558386550667247
+A32NX_PAX_MAIN_MID_2A_DESIRED=558386550667247
+A32NX_PAX_MAIN_MID_2B=1647119957759
+A32NX_PAX_MAIN_MID_2B_DESIRED=1647119957759
+A32NX_PAX_MAIN_MID_2C=135157121023
+A32NX_PAX_MAIN_MID_2C_DESIRED=135157121023
+A32NX_PAX_MAIN_AFT_A=4361203744767
+A32NX_PAX_MAIN_AFT_A_DESIRED=4361203744767
+A32NX_PAX_MAIN_AFT_B=2196875509695
+A32NX_PAX_MAIN_AFT_B_DESIRED=2196875509695
+A32NX_PAX_UPPER_FWD=15615
+A32NX_PAX_UPPER_FWD_DESIRED=15615
+A32NX_PAX_UPPER_MID_A=1073741819
+A32NX_PAX_UPPER_MID_A_DESIRED=1073741819
+A32NX_PAX_UPPER_MID_B=268432127
+A32NX_PAX_UPPER_MID_B_DESIRED=268432127
+A32NX_PAX_UPPER_AFT=261631
+A32NX_PAX_UPPER_AFT_DESIRED=261631
A32NX_PRIM_1_PUSHBUTTON_PRESSED=1
A32NX_PRIM_2_PUSHBUTTON_PRESSED=1
A32NX_PRIM_3_PUSHBUTTON_PRESSED=1
diff --git a/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/apron.FLT b/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/apron.FLT
index deef85c3ed9..48bc7b56f3b 100644
--- a/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/apron.FLT
+++ b/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/apron.FLT
@@ -224,6 +224,7 @@ TailhookState=0
FoldingWingsHandle=False
FoldingWingsState=0, 0
ExternalPowerSwitch=False
+SeatBeltsSwitch=False
[LocalVars.0]
A320_Neo_AIRCOND_LVL_1=50
diff --git a/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/cruise.FLT b/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/cruise.FLT
index 6b0cba85026..9b9d548c0cf 100644
--- a/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/cruise.FLT
+++ b/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/cruise.FLT
@@ -203,17 +203,17 @@ Pump.18=False
Pump.19=False
Pump.20=False
Pump.21=False
-Tank.1=0
-Tank.2=1
-Tank.3=0.25
-Tank.4=0.25
-Tank.5=1
-Tank.6=1
-Tank.7=0.25
-Tank.8=0.25
-Tank.9=1
-Tank.10=0
-Tank.11=0
+Tank.1=0.4818560183048248291
+Tank.2=0.74762970209121704102
+Tank.3=0
+Tank.4=0.14810475707054138184
+Tank.5=0.72874546051025390625
+Tank.6=0.72874546051025390625
+Tank.7=0.14810457825660705566
+Tank.8=0
+Tank.9=0.74762970209121704102
+Tank.10=0.4818560183048248291
+Tank.11=0.55189013481140136719
Junction.7=1
Junction.8=1
Junction.9=1
@@ -234,6 +234,9 @@ TailhookState=0
FoldingWingsHandle=False
FoldingWingsState=0, 0
+[Payload.0]
+PayloadList=1296.3,4629.7,7037.2,8703.8,7037.2,7777.9,7037.2,6296.4,7037.2,7037.2,2222.3,5370.5,4629.7,3148.2,10491.8,7456.0, 923.7, 1.0, 1.0
+
[LocalVars.0]
A320_Neo_AIRCOND_LVL_1=50
A320_Neo_AIRCOND_LVL_2=50
@@ -252,6 +255,12 @@ A32NX_AVIONICS_STARTUP_SOUNDS_INHIBIT=1
A32NX_BARO_BRIGHTNESS=0.75
A32NX_CALLS_EMERLOCK_TOGGLE=1
A32NX_CALLS_EMER_ON=0
+A32NX_CARGO_FWD=4759
+A32NX_CARGO_FWD_DESIRED=4759
+A32NX_CARGO_AFT=3382
+A32NX_CARGO_AFT_DESIRED=3382
+A32NX_CARGO_BULK=419
+A32NX_CARGO_BULK_DESIRED=419
A32NX_CARGOSMOKE_AFT_DISCHARGED = 0
A32NX_CARGOSMOKE_DISCH1LOCK_TOGGLE=0
A32NX_CARGOSMOKE_DISCH2LOCK_TOGGLE=0
@@ -391,6 +400,34 @@ A32NX_OXYGEN_TMR_RESET_FAULT = 0
A32NX_PANEL_DCDU_L_BRIGHTNESS=0.5
A32NX_PANEL_DCDU_R_BRIGHTNESS=0.5
A32NX_PARK_BRAKE_LEVER_POS=0
+A32NX_PAX_MAIN_FWD_A=35160464
+A32NX_PAX_MAIN_FWD_A_DESIRED=35160464
+A32NX_PAX_MAIN_FWD_B=268430719
+A32NX_PAX_MAIN_FWD_B_DESIRED=268430719
+A32NX_PAX_MAIN_MID_1A=1097363095551
+A32NX_PAX_MAIN_MID_1A_DESIRED=1097363095551
+A32NX_PAX_MAIN_MID_1B=2251796592328701
+A32NX_PAX_MAIN_MID_1B_DESIRED=2251796592328701
+A32NX_PAX_MAIN_MID_1C=17589501640446
+A32NX_PAX_MAIN_MID_1C_DESIRED=17589501640446
+A32NX_PAX_MAIN_MID_2A=558386550667247
+A32NX_PAX_MAIN_MID_2A_DESIRED=558386550667247
+A32NX_PAX_MAIN_MID_2B=1647119957759
+A32NX_PAX_MAIN_MID_2B_DESIRED=1647119957759
+A32NX_PAX_MAIN_MID_2C=135157121023
+A32NX_PAX_MAIN_MID_2C_DESIRED=135157121023
+A32NX_PAX_MAIN_AFT_A=4361203744767
+A32NX_PAX_MAIN_AFT_A_DESIRED=4361203744767
+A32NX_PAX_MAIN_AFT_B=2196875509695
+A32NX_PAX_MAIN_AFT_B_DESIRED=2196875509695
+A32NX_PAX_UPPER_FWD=15615
+A32NX_PAX_UPPER_FWD_DESIRED=15615
+A32NX_PAX_UPPER_MID_A=1073741819
+A32NX_PAX_UPPER_MID_A_DESIRED=1073741819
+A32NX_PAX_UPPER_MID_B=268432127
+A32NX_PAX_UPPER_MID_B_DESIRED=268432127
+A32NX_PAX_UPPER_AFT=261631
+A32NX_PAX_UPPER_AFT_DESIRED=261631
A32NX_PRIM_1_PUSHBUTTON_PRESSED=1
A32NX_PRIM_2_PUSHBUTTON_PRESSED=1
A32NX_PRIM_3_PUSHBUTTON_PRESSED=1
diff --git a/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/final.FLT b/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/final.FLT
index e1429500b32..9ede50cea2c 100644
--- a/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/final.FLT
+++ b/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/final.FLT
@@ -219,6 +219,7 @@ Junction.9=1
[Systems.0]
BatterySwitch=True
+SeatBeltsSwitch=True
StructuralDeiceSwitch=False
PropDeiceSwitch=False
StandbyVacuum=False
@@ -233,6 +234,9 @@ TailhookState=0
FoldingWingsHandle=False
FoldingWingsState=0, 0
+[Payload.0]
+PayloadList=1296.3,4629.7,7037.2,8703.8,7037.2,7777.9,7037.2,6296.4,7037.2,7037.2,2222.3,5370.5,4629.7,3148.2,10491.8,7456.0, 923.7, 1.0, 1.0
+
[LocalVars.0]
A320_NEO_CDU_START_PAGE=35
A320_Neo_AIRCOND_LVL_1=50
@@ -252,6 +256,12 @@ A32NX_AVIONICS_STARTUP_SOUNDS_INHIBIT=1
A32NX_BARO_BRIGHTNESS=0.75
A32NX_CALLS_EMERLOCK_TOGGLE=1
A32NX_CALLS_EMER_ON=0
+A32NX_CARGO_FWD=4759
+A32NX_CARGO_FWD_DESIRED=4759
+A32NX_CARGO_AFT=3382
+A32NX_CARGO_AFT_DESIRED=3382
+A32NX_CARGO_BULK=419
+A32NX_CARGO_BULK_DESIRED=419
A32NX_CARGOSMOKE_AFT_DISCHARGED = 0
A32NX_CARGOSMOKE_DISCH1LOCK_TOGGLE=0
A32NX_CARGOSMOKE_DISCH2LOCK_TOGGLE=0
@@ -390,6 +400,34 @@ A32NX_OXYGEN_TMR_RESET_FAULT = 0
A32NX_PANEL_DCDU_L_BRIGHTNESS=0.5
A32NX_PANEL_DCDU_R_BRIGHTNESS=0.5
A32NX_PARK_BRAKE_LEVER_POS=0
+A32NX_PAX_MAIN_FWD_A=35160464
+A32NX_PAX_MAIN_FWD_A_DESIRED=35160464
+A32NX_PAX_MAIN_FWD_B=268430719
+A32NX_PAX_MAIN_FWD_B_DESIRED=268430719
+A32NX_PAX_MAIN_MID_1A=1097363095551
+A32NX_PAX_MAIN_MID_1A_DESIRED=1097363095551
+A32NX_PAX_MAIN_MID_1B=2251796592328701
+A32NX_PAX_MAIN_MID_1B_DESIRED=2251796592328701
+A32NX_PAX_MAIN_MID_1C=17589501640446
+A32NX_PAX_MAIN_MID_1C_DESIRED=17589501640446
+A32NX_PAX_MAIN_MID_2A=558386550667247
+A32NX_PAX_MAIN_MID_2A_DESIRED=558386550667247
+A32NX_PAX_MAIN_MID_2B=1647119957759
+A32NX_PAX_MAIN_MID_2B_DESIRED=1647119957759
+A32NX_PAX_MAIN_MID_2C=135157121023
+A32NX_PAX_MAIN_MID_2C_DESIRED=135157121023
+A32NX_PAX_MAIN_AFT_A=4361203744767
+A32NX_PAX_MAIN_AFT_A_DESIRED=4361203744767
+A32NX_PAX_MAIN_AFT_B=2196875509695
+A32NX_PAX_MAIN_AFT_B_DESIRED=2196875509695
+A32NX_PAX_UPPER_FWD=15615
+A32NX_PAX_UPPER_FWD_DESIRED=15615
+A32NX_PAX_UPPER_MID_A=1073741819
+A32NX_PAX_UPPER_MID_A_DESIRED=1073741819
+A32NX_PAX_UPPER_MID_B=268432127
+A32NX_PAX_UPPER_MID_B_DESIRED=268432127
+A32NX_PAX_UPPER_AFT=261631
+A32NX_PAX_UPPER_AFT_DESIRED=261631
A32NX_PRIM_1_PUSHBUTTON_PRESSED=1
A32NX_PRIM_2_PUSHBUTTON_PRESSED=1
A32NX_PRIM_3_PUSHBUTTON_PRESSED=1
@@ -402,6 +440,7 @@ A32NX_RCDR_TEST = 0
A32NX_SEC_1_PUSHBUTTON_PRESSED=1
A32NX_SEC_2_PUSHBUTTON_PRESSED=1
A32NX_SEC_3_PUSHBUTTON_PRESSED=1
+A32NX_SPOILERS_ARMED=1
A32NX_START_STATE=8
A32NX_SVGEINT_OVRD_ON = 0
A32NX_SWITCH_RADAR_PWS_Position=1
diff --git a/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/model/A380_COCKPIT.xml b/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/model/A380_COCKPIT.xml
index cc6cc057007..de2e6dd6e95 100644
--- a/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/model/A380_COCKPIT.xml
+++ b/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/model/A380_COCKPIT.xml
@@ -2071,9 +2071,8 @@
- (L:XMLVAR_SWITCH_OVHD_INTLT_SEATBELT_Position) 1 == (A:CABIN SEATBELTS ALERT
- SWITCH, bool) 0 == and if{
- (>K:CABIN_SEATBELTS_ALERT_SWITCH_TOGGLE)
+ (L:XMLVAR_SWITCH_OVHD_INTLT_SEATBELT_Position) (A:CABIN SEATBELTS ALERT SWITCH, bool) != if{
+ (>K:CABIN_SEATBELTS_ALERT_SWITCH_TOGGLE)
}
diff --git a/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/runway.FLT b/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/runway.FLT
index ae03e1e6f64..95cfbb4e069 100644
--- a/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/runway.FLT
+++ b/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/runway.FLT
@@ -212,23 +212,24 @@ Pump.18=True
Pump.19=True
Pump.20=True
Pump.21=True
-Tank.1=0
-Tank.2=1
-Tank.3=0.25
-Tank.4=0.25
-Tank.5=1
-Tank.6=1
-Tank.7=0.25
-Tank.8=0.25
-Tank.9=1
-Tank.10=0
-Tank.11=0
+Tank.1=0.4818560183048248291
+Tank.2=0.74762970209121704102
+Tank.3=0
+Tank.4=0.14810475707054138184
+Tank.5=0.72874546051025390625
+Tank.6=0.72874546051025390625
+Tank.7=0.14810457825660705566
+Tank.8=0
+Tank.9=0.74762970209121704102
+Tank.10=0.4818560183048248291
+Tank.11=0.55189013481140136719
Junction.7=1
Junction.8=1
Junction.9=1
[Systems.0]
BatterySwitch=True
+SeatBeltsSwitch=True
StructuralDeiceSwitch=False
PropDeiceSwitch=False
StandbyVacuum=False
@@ -244,7 +245,7 @@ FoldingWingsHandle=False
FoldingWingsState=0, 0
[Payload.0]
-PayloadList = 9200,18000,12000,10000,2000,5000,3000,3000,3000,3000,1,1
+PayloadList=1296.3,4629.7,7037.2,8703.8,7037.2,7777.9,7037.2,6296.4,7037.2,7037.2,2222.3,5370.5,4629.7,3148.2,10491.8,7456.0, 923.7, 1.0, 1.0
[LocalVars.0]
A32NX_AIDS_PRINT_ON = 0
@@ -259,6 +260,12 @@ A32NX_BARO_BRIGHTNESS=0.75
A32NX_CABIN_READY=1
A32NX_CALLS_EMERLOCK_TOGGLE=1
A32NX_CALLS_EMER_ON=0
+A32NX_CARGO_FWD=4759
+A32NX_CARGO_FWD_DESIRED=4759
+A32NX_CARGO_AFT=3382
+A32NX_CARGO_AFT_DESIRED=3382
+A32NX_CARGO_BULK=419
+A32NX_CARGO_BULK_DESIRED=419
A32NX_CARGOSMOKE_AFT_DISCHARGED = 0
A32NX_CARGOSMOKE_DISCH1LOCK_TOGGLE=0
A32NX_CARGOSMOKE_DISCH2LOCK_TOGGLE=0
@@ -404,6 +411,34 @@ A32NX_OXYGEN_TMR_RESET_FAULT = 0
A32NX_PANEL_DCDU_L_BRIGHTNESS=0.5
A32NX_PANEL_DCDU_R_BRIGHTNESS=0.5
A32NX_PARK_BRAKE_LEVER_POS=1
+A32NX_PAX_MAIN_FWD_A=35160464
+A32NX_PAX_MAIN_FWD_A_DESIRED=35160464
+A32NX_PAX_MAIN_FWD_B=268430719
+A32NX_PAX_MAIN_FWD_B_DESIRED=268430719
+A32NX_PAX_MAIN_MID_1A=1097363095551
+A32NX_PAX_MAIN_MID_1A_DESIRED=1097363095551
+A32NX_PAX_MAIN_MID_1B=2251796592328701
+A32NX_PAX_MAIN_MID_1B_DESIRED=2251796592328701
+A32NX_PAX_MAIN_MID_1C=17589501640446
+A32NX_PAX_MAIN_MID_1C_DESIRED=17589501640446
+A32NX_PAX_MAIN_MID_2A=558386550667247
+A32NX_PAX_MAIN_MID_2A_DESIRED=558386550667247
+A32NX_PAX_MAIN_MID_2B=1647119957759
+A32NX_PAX_MAIN_MID_2B_DESIRED=1647119957759
+A32NX_PAX_MAIN_MID_2C=135157121023
+A32NX_PAX_MAIN_MID_2C_DESIRED=135157121023
+A32NX_PAX_MAIN_AFT_A=4361203744767
+A32NX_PAX_MAIN_AFT_A_DESIRED=4361203744767
+A32NX_PAX_MAIN_AFT_B=2196875509695
+A32NX_PAX_MAIN_AFT_B_DESIRED=2196875509695
+A32NX_PAX_UPPER_FWD=15615
+A32NX_PAX_UPPER_FWD_DESIRED=15615
+A32NX_PAX_UPPER_MID_A=1073741819
+A32NX_PAX_UPPER_MID_A_DESIRED=1073741819
+A32NX_PAX_UPPER_MID_B=268432127
+A32NX_PAX_UPPER_MID_B_DESIRED=268432127
+A32NX_PAX_UPPER_AFT=261631
+A32NX_PAX_UPPER_AFT_DESIRED=261631
A32NX_PRIM_1_PUSHBUTTON_PRESSED=1
A32NX_PRIM_2_PUSHBUTTON_PRESSED=1
A32NX_PRIM_3_PUSHBUTTON_PRESSED=1
@@ -416,11 +451,16 @@ A32NX_RCDR_TEST = 0
A32NX_SEC_1_PUSHBUTTON_PRESSED=1
A32NX_SEC_2_PUSHBUTTON_PRESSED=1
A32NX_SEC_3_PUSHBUTTON_PRESSED=1
+A32NX_FLAPS_HANDLE_INDEX=1
+A32NX_FLAPS_HANDLE_PERCENT=0.25
+A32NX_SPOILERS_ARMED=1
A32NX_START_STATE=4
A32NX_SVGEINT_OVRD_ON = 0
A32NX_SWITCH_RADAR_PWS_Position=1
A32NX_SWITCH_TCAS_Position=2
A32NX_SWITCH_TCAS_TRAFFIC_POSITION = 2
+A32NX_THS_GREEN_SERVO_SOLENOID_ENERGIZED=1
+A32NX_THS_GREEN_COMMANDED_POSITION=-2.0075902938842773438
A32NX_TO_CONFIG_NORMAL=1
A32NX_VENTILATION_BLOWER_FAULT=0
A32NX_VENTILATION_BLOWER_TOGGLE=1
@@ -531,6 +571,7 @@ VSSlotIndex=2
SpoilersHandle=000.00
SpoilersArmed=True
FlapsHandle=020.00
+ElevatorTrim=060.04
LeftFlap=014.28
RightFlap=014.28
GearsHandle=000.01
diff --git a/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/taxi.flt b/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/taxi.flt
index 9f883d39e31..485c5bb7c48 100644
--- a/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/taxi.flt
+++ b/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/taxi.flt
@@ -237,6 +237,9 @@ Potentiometer.97=0
Potentiometer.98=0.5
Potentiometer.99=0.5
+[Payload.0]
+PayloadList=1296.3,4629.7,7037.2,8703.8,7037.2,7777.9,7037.2,6296.4,7037.2,7037.2,2222.3,5370.5,4629.7,3148.2,10491.8,7456.0, 923.7, 1.0, 1.0
+
[LocalVars.0]
A320_Neo_AIRCOND_LVL_1=50
A320_Neo_AIRCOND_LVL_2=50
@@ -251,6 +254,12 @@ A32NX_ATT_HDG_SWITCHING_KNOB=1
A32NX_AVIONICS_COMPLT_ON = 0
A32NX_AVIONICS_STARTUP_SOUNDS_INHIBIT=0
A32NX_BARO_BRIGHTNESS=0.75
+A32NX_CARGO_FWD=4759
+A32NX_CARGO_FWD_DESIRED=4759
+A32NX_CARGO_AFT=3382
+A32NX_CARGO_AFT_DESIRED=3382
+A32NX_CARGO_BULK=419
+A32NX_CARGO_BULK_DESIRED=419
A32NX_CARGOSMOKE_AFT_DISCHARGED = 0
A32NX_CARGOSMOKE_DISCH1LOCK_TOGGLE=0
A32NX_CARGOSMOKE_DISCH2LOCK_TOGGLE=0
@@ -384,6 +393,34 @@ A32NX_OXYGEN_TMR_RESET_FAULT = 0
A32NX_PANEL_DCDU_L_BRIGHTNESS=0.5
A32NX_PANEL_DCDU_R_BRIGHTNESS=0.5
A32NX_PARK_BRAKE_LEVER_POS=0
+A32NX_PAX_MAIN_FWD_A=35160464
+A32NX_PAX_MAIN_FWD_A_DESIRED=35160464
+A32NX_PAX_MAIN_FWD_B=268430719
+A32NX_PAX_MAIN_FWD_B_DESIRED=268430719
+A32NX_PAX_MAIN_MID_1A=1097363095551
+A32NX_PAX_MAIN_MID_1A_DESIRED=1097363095551
+A32NX_PAX_MAIN_MID_1B=2251796592328701
+A32NX_PAX_MAIN_MID_1B_DESIRED=2251796592328701
+A32NX_PAX_MAIN_MID_1C=17589501640446
+A32NX_PAX_MAIN_MID_1C_DESIRED=17589501640446
+A32NX_PAX_MAIN_MID_2A=558386550667247
+A32NX_PAX_MAIN_MID_2A_DESIRED=558386550667247
+A32NX_PAX_MAIN_MID_2B=1647119957759
+A32NX_PAX_MAIN_MID_2B_DESIRED=1647119957759
+A32NX_PAX_MAIN_MID_2C=135157121023
+A32NX_PAX_MAIN_MID_2C_DESIRED=135157121023
+A32NX_PAX_MAIN_AFT_A=4361203744767
+A32NX_PAX_MAIN_AFT_A_DESIRED=4361203744767
+A32NX_PAX_MAIN_AFT_B=2196875509695
+A32NX_PAX_MAIN_AFT_B_DESIRED=2196875509695
+A32NX_PAX_UPPER_FWD=15615
+A32NX_PAX_UPPER_FWD_DESIRED=15615
+A32NX_PAX_UPPER_MID_A=1073741819
+A32NX_PAX_UPPER_MID_A_DESIRED=1073741819
+A32NX_PAX_UPPER_MID_B=268432127
+A32NX_PAX_UPPER_MID_B_DESIRED=268432127
+A32NX_PAX_UPPER_AFT=261631
+A32NX_PAX_UPPER_AFT_DESIRED=261631
A32NX_PRIM_1_PUSHBUTTON_PRESSED=1
A32NX_PRIM_2_PUSHBUTTON_PRESSED=1
A32NX_PRIM_3_PUSHBUTTON_PRESSED=1
@@ -399,6 +436,8 @@ A32NX_SEC_3_PUSHBUTTON_PRESSED=1
A32NX_START_STATE=3
A32NX_SVGEINT_OVRD_ON = 0
A32NX_SWITCH_TCAS_TRAFFIC_POSITION = 2
+A32NX_THS_GREEN_SERVO_SOLENOID_ENERGIZED=1
+A32NX_THS_GREEN_COMMANDED_POSITION=-2.0075902938842773438
A380X_OVHD_ELEC_BAT_SELECTOR_KNOB=2
STROBE_1_Auto=1
XMLVAR_A320_WEATHERRADAR_MODE = 1
@@ -481,9 +520,10 @@ VSSlotIndex=2
[Controls.0]
SpoilersHandle=000.00
SpoilersArmed=False
-FlapsHandle=000.00
-LeftFlap=000.00
-RightFlap=000.00
+FlapsHandle=020.00
+ElevatorTrim=060.04
+LeftFlap=014.28
+RightFlap=014.28
GearsHandle=000.01
Gear1=100.00
Gear2=100.00
diff --git a/fbw-a380x/src/systems/systems-host/index.ts b/fbw-a380x/src/systems/systems-host/index.ts
index e9d9c4af550..af6d2caf391 100644
--- a/fbw-a380x/src/systems/systems-host/index.ts
+++ b/fbw-a380x/src/systems/systems-host/index.ts
@@ -17,6 +17,7 @@ import {
} from '@microsoft/msfs-sdk';
import { LegacyGpws } from 'systems-host/systems/LegacyGpws';
import { LegacyFwc } from 'systems-host/systems/LegacyFwc';
+import { LegacyFuelInit } from 'systems-host/systems/LegacyFuelInit';
import { LegacySoundManager } from 'systems-host/systems/LegacySoundManager';
import { VhfRadio } from 'systems-host/systems/Communications/VhfRadio';
import { FailuresConsumer, VhfComIndices } from '@flybywiresim/fbw-sdk';
@@ -111,6 +112,7 @@ class SystemsHost extends BaseInstrument {
this.backplane.addPublisher('RmpAmuBusPublisher', this.rmpAmuBusPublisher);
this.backplane.addPublisher('CameraPublisher', this.cameraPublisher);
this.backplane.addPublisher('PowerPublisher', this.powerPublisher);
+ this.backplane.addInstrument('LegacyFuel', new LegacyFuelInit());
this.hEventPublisher = new HEventPublisher(this.bus);
this.fwc = new LegacyFwc();
diff --git a/fbw-a380x/src/systems/systems-host/systems/LegacyFuelInit.ts b/fbw-a380x/src/systems/systems-host/systems/LegacyFuelInit.ts
new file mode 100644
index 00000000000..52bcd94e3eb
--- /dev/null
+++ b/fbw-a380x/src/systems/systems-host/systems/LegacyFuelInit.ts
@@ -0,0 +1,16 @@
+import { Instrument } from '@microsoft/msfs-sdk';
+
+/**
+ * This is needed to initialize the desired fuel L:Var on load to sync with the fuel quantity as per the fuel state management per ATC ID
+ * This is a temporary solution until all fuel state related ops are contained in the same module.
+ */
+export class LegacyFuelInit implements Instrument {
+ init() {
+ const fuelWeight = SimVar.GetSimVarValue('FUEL TOTAL QUANTITY WEIGHT', 'kilograms');
+ SimVar.SetSimVarValue('L:A32NX_FUEL_DESIRED', 'kilograms', fuelWeight);
+ }
+
+ public onUpdate(): void {
+ // noop
+ }
+}
diff --git a/fbw-a380x/src/wasm/systems/a380_systems/Cargo.toml b/fbw-a380x/src/wasm/systems/a380_systems/Cargo.toml
index fe1b7175a41..f5f467527ee 100644
--- a/fbw-a380x/src/wasm/systems/a380_systems/Cargo.toml
+++ b/fbw-a380x/src/wasm/systems/a380_systems/Cargo.toml
@@ -10,6 +10,9 @@ nalgebra = "0.25.0"
ntest = "0.7.2"
fxhash = "0.2.1"
rand = "0.8.0"
+serde = { version = "1.0.210", features = ["derive"] }
+serde_with = { version = "3.9.0", features = ["std"] }
+toml = { version = "0.8.19", features = ["parse"] }
systems = { path = "../../../../../fbw-common/src/wasm/systems/systems" }
[dev-dependencies]
diff --git a/fbw-a380x/src/wasm/systems/a380_systems/src/fuel/fuel_quantity_management_system.rs b/fbw-a380x/src/wasm/systems/a380_systems/src/fuel/fuel_quantity_management_system.rs
index e01d2c99735..4247161bb6d 100644
--- a/fbw-a380x/src/wasm/systems/a380_systems/src/fuel/fuel_quantity_management_system.rs
+++ b/fbw-a380x/src/wasm/systems/a380_systems/src/fuel/fuel_quantity_management_system.rs
@@ -2,6 +2,7 @@ use std::{collections::HashMap, time::Duration};
use crate::systems::simulation::SimulationElement;
use nalgebra::Vector3;
+use serde::Deserialize;
use systems::{
fuel::{self, FuelInfo, FuelSystem, FuelTank, RefuelRate},
pneumatic::EngineState,
@@ -19,6 +20,8 @@ use uom::si::{
use super::A380FuelTankType;
+use serde_with::{serde_as, DisplayFromStr};
+
#[derive(Clone, Copy)]
enum ModeSelect {
AutoRefuel,
@@ -28,6 +31,31 @@ enum ModeSelect {
_Transfer,
}
+#[derive(Deserialize)]
+struct ZfwParams {
+ target_zfw_cg: Vec,
+ target_zfw: Vec,
+}
+
+#[derive(Deserialize)]
+struct ZfwRange {
+ start: u32,
+ end: u32,
+}
+
+#[serde_as]
+#[derive(Deserialize)]
+struct TrimTankTables {
+ #[serde_as(as = "Vec>")]
+ tables: Vec>>,
+}
+
+#[derive(Deserialize)]
+struct TrimTankMapping {
+ params: ZfwParams,
+ trim_tank_targets: TrimTankTables,
+}
+
pub struct RefuelPanelInput {
total_desired_fuel_id: VariableIdentifier,
total_desired_fuel_input: Mass,
@@ -46,6 +74,13 @@ pub struct RefuelPanelInput {
engine_state_ids: [VariableIdentifier; 4],
engine_states: [EngineState; 4],
+
+ // TODO: Replace when proper implementation is done
+ target_zero_fuel_weight: Mass,
+ target_zero_fuel_weight_id: VariableIdentifier,
+
+ target_zero_fuel_weight_cg_mac: f64,
+ target_zero_fuel_weight_cg_mac_id: VariableIdentifier,
}
impl RefuelPanelInput {
pub fn new(context: &mut InitContext) -> Self {
@@ -66,6 +101,13 @@ impl RefuelPanelInput {
engine_state_ids: [1, 2, 3, 4]
.map(|id| context.get_identifier(format!("ENGINE_STATE:{id}"))),
engine_states: [EngineState::Off; 4],
+
+ target_zero_fuel_weight: Mass::new::(300000.),
+ target_zero_fuel_weight_id: context.get_identifier("AIRFRAME_ZFW_DESIRED".to_owned()),
+
+ target_zero_fuel_weight_cg_mac: 36.5,
+ target_zero_fuel_weight_cg_mac_id: context
+ .get_identifier("AIRFRAME_ZFW_CG_PERCENT_MAC_DESIRED".to_owned()),
}
}
@@ -90,6 +132,7 @@ impl RefuelPanelInput {
}
fn refuel_is_enabled(&self) -> bool {
+ // TODO: Should this be if two engines are running instead of just one?
self.refuel_status
&& self
.engine_states
@@ -98,6 +141,14 @@ impl RefuelPanelInput {
&& self.is_on_ground
&& self.ground_speed < Velocity::new::(0.1)
}
+
+ fn target_zero_fuel_weight(&self) -> Mass {
+ self.target_zero_fuel_weight
+ }
+
+ fn target_zero_fuel_weight_cg_mac(&self) -> f64 {
+ self.target_zero_fuel_weight_cg_mac
+ }
}
impl SimulationElement for RefuelPanelInput {
fn read(&mut self, reader: &mut SimulatorReader) {
@@ -114,6 +165,9 @@ impl SimulationElement for RefuelPanelInput {
{
*state = reader.read(id);
}
+ self.target_zero_fuel_weight =
+ Mass::new::(reader.read(&self.target_zero_fuel_weight_id));
+ self.target_zero_fuel_weight_cg_mac = reader.read(&self.target_zero_fuel_weight_cg_mac_id);
}
fn write(&self, writer: &mut SimulatorWriter) {
@@ -165,6 +219,14 @@ impl IntegratedRefuelPanel {
fn refuel_is_enabled(&self) -> bool {
self.input.refuel_is_enabled()
}
+
+ fn target_zero_fuel_weight(&self) -> Mass {
+ self.input.target_zero_fuel_weight()
+ }
+
+ fn target_zero_fuel_weight_cg_mac(&self) -> f64 {
+ self.input.target_zero_fuel_weight_cg_mac()
+ }
}
impl SimulationElement for IntegratedRefuelPanel {
fn receive_power(&mut self, buses: &impl ElectricalBuses) {
@@ -177,13 +239,17 @@ impl SimulationElement for IntegratedRefuelPanel {
}
}
+const TRIM_TANK_TOML: &str = include_str!("./trim_tank_targets.toml");
pub struct RefuelApplication {
refuel_driver: RefuelDriver,
+ trim_tank_map: TrimTankMapping,
}
impl RefuelApplication {
pub fn new(_context: &mut InitContext, _powered_by: ElectricalBusType) -> Self {
Self {
refuel_driver: RefuelDriver::new(),
+ trim_tank_map: toml::from_str(TRIM_TANK_TOML)
+ .expect("Failed to parse trim tank TOML file"),
}
}
@@ -194,8 +260,12 @@ impl RefuelApplication {
refuel_panel_input: &mut IntegratedRefuelPanel,
) {
// Automatic Refueling
- let desired_quantities =
- self.calculate_auto_refuel(refuel_panel_input.total_desired_fuel());
+ let desired_quantities = self.calculate_auto_refuel(
+ refuel_panel_input.total_desired_fuel(),
+ // TODO FIXME: Add values from either MFD (or EFB)
+ refuel_panel_input.target_zero_fuel_weight(),
+ refuel_panel_input.target_zero_fuel_weight_cg_mac(),
+ );
// TODO: Uncomment when IS_SIM_READY variable is implemented
// if !context.is_sim_ready() {
@@ -237,10 +307,73 @@ impl RefuelApplication {
}
}
+ fn lookup_trim_fuel_from_target_fuel_range(
+ target_zfw_cg_keys: &[u32],
+ target_fuel_range: &[u32],
+ zero_fuel_weight_cg_rounded: u32,
+ ) -> Mass {
+ let cg_index = target_zfw_cg_keys
+ .iter()
+ .position(|&x| x == zero_fuel_weight_cg_rounded)
+ .unwrap_or_default();
+ Mass::new::(target_fuel_range[cg_index] as f64)
+ }
+
+ fn get_target_fuel_range(
+ zfw_category: &HashMap>,
+ total_desired_fuel_rounded: u32,
+ ) -> &Vec {
+ let min_fuel_desired = *zfw_category.keys().min().unwrap();
+ let max_fuel_desired = *zfw_category.keys().max().unwrap();
+
+ zfw_category
+ .get(&total_desired_fuel_rounded.clamp(min_fuel_desired, max_fuel_desired))
+ .unwrap()
+ }
+
+ fn calculate_trim_fuel(
+ &mut self,
+ total_desired_fuel: Mass,
+ zero_fuel_weight: Mass,
+ zero_fuel_weight_cg_percent_mac: f64,
+ ) -> Mass {
+ // Init Inputs
+ let total_desired_fuel_rounded =
+ ((total_desired_fuel.get::() / 1000.0).floor() * 1000.0) as u32;
+ let zero_fuel_weight_cg_rounded = (zero_fuel_weight_cg_percent_mac).floor() as u32;
+ let target_zfw = &self.trim_tank_map.params.target_zfw;
+ let trim_tank_tables = &self.trim_tank_map.trim_tank_targets.tables;
+
+ // Find the correct table to use based on ZFW
+ for (range, zfw_category) in target_zfw.iter().zip(trim_tank_tables) {
+ if (range.start as f64..=range.end as f64).contains(&zero_fuel_weight.get::())
+ {
+ // Fetch 1) Possible ZFWCG% column values and 2) The target fuel row values
+ let target_zfw_cg_keys = &self.trim_tank_map.params.target_zfw_cg;
+ let target_fuel_range =
+ Self::get_target_fuel_range(zfw_category, total_desired_fuel_rounded);
+
+ // Then, given the current target fuel (row). Shift this value depending on ZFWCG% (column) to find trim fuel value.
+ return Self::lookup_trim_fuel_from_target_fuel_range(
+ target_zfw_cg_keys,
+ target_fuel_range,
+ zero_fuel_weight_cg_rounded,
+ );
+ }
+ }
+ Mass::default()
+ }
+
pub fn calculate_auto_refuel(
&mut self,
total_desired_fuel: Mass,
+ zero_fuel_weight: Mass,
+ zero_fuel_weight_cg_percent_mac: f64,
) -> HashMap {
+ // Note: Does not account for unusable fuel, or non-fixed H-ARM
+
+ // TODO FIXME: If no input is provided from the MFD, The default values are ZFW = 300 000 kg (661 386 lb), and ZFCG = 36.5 %RC.
+
let a = Mass::new::(18000.);
let b = Mass::new::(26000.);
let c = Mass::new::(36000.);
@@ -250,20 +383,11 @@ impl RefuelApplication {
let g = Mass::new::(215702.);
let h = Mass::new::(223028.);
- let trim_1 = Mass::new::(4000.);
- let trim_2 = Mass::new::(8000.);
- let trim_max = Mass::new::(19026.);
-
- // TODO: Trim tank logic
- let trim_fuel = match total_desired_fuel {
- x if x <= f => Mass::default(),
- x if x <= f + trim_1 => x - f,
- x if x <= g => trim_1,
- x if x <= g + trim_2 => trim_1 + total_desired_fuel - g,
- x if x <= h => trim_2,
- x if x <= h + (trim_max - trim_2) => trim_2 + total_desired_fuel - h,
- _ => trim_max,
- };
+ let trim_fuel = self.calculate_trim_fuel(
+ total_desired_fuel,
+ zero_fuel_weight,
+ zero_fuel_weight_cg_percent_mac,
+ );
let wing_fuel = total_desired_fuel - trim_fuel;
@@ -324,7 +448,6 @@ impl RefuelApplication {
x if x <= h => mid_tank_f,
_ => mid_tank_f + (wing_fuel - h) / 10.,
};
- // TODO: maximum amount per tick and use efb refueling rate
[
(A380FuelTankType::LeftOuter, outer_tank),
@@ -367,6 +490,10 @@ impl RefuelDriver {
refuel_panel_input: &mut IntegratedRefuelPanel,
desired_quantities: HashMap,
) {
+ // TODO: Proper fuel transfer logic from proper fuel ports into the correct fuel tanks (LMID/LINNER RMID/RINNER). Replace naive method below.
+ // TODO: Deprecating this realistically timed refueling function from refuel driver, which will only be used for instant refueling, into a proper FQMS implementation.
+ // TODO: Account for AGT (Auto Ground Transfer) logic, disable when 2 engines are running (only when realistic setting is used)
+
let speed_multi = if is_fast { Self::FAST_SPEED_FACTOR } else { 1. };
let t = delta_time.as_secs_f64();
diff --git a/fbw-a380x/src/wasm/systems/a380_systems/src/fuel/mod.rs b/fbw-a380x/src/wasm/systems/a380_systems/src/fuel/mod.rs
index 379901edb91..69ee4ad51b2 100644
--- a/fbw-a380x/src/wasm/systems/a380_systems/src/fuel/mod.rs
+++ b/fbw-a380x/src/wasm/systems/a380_systems/src/fuel/mod.rs
@@ -65,6 +65,7 @@ pub struct A380Fuel {
}
impl A380Fuel {
+ // TODO: Move to toml cfg
pub const A380_FUEL: [FuelInfo<'static>; 11] = [
FuelInfo {
// LEFT_OUTER - Capacity: 2731.5
diff --git a/fbw-a380x/src/wasm/systems/a380_systems/src/fuel/test.rs b/fbw-a380x/src/wasm/systems/a380_systems/src/fuel/test.rs
index 2bfe3fb974b..4125e8a40ef 100644
--- a/fbw-a380x/src/wasm/systems/a380_systems/src/fuel/test.rs
+++ b/fbw-a380x/src/wasm/systems/a380_systems/src/fuel/test.rs
@@ -164,30 +164,40 @@ impl FuelTestBed {
#[allow(dead_code)]
fn desired_fuel_max(mut self) -> Self {
self.write_by_name("FUEL_DESIRED", 260059.);
+ self.write_by_name("AIRFRAME_ZFW_DESIRED", 300000.);
+ self.write_by_name("AIRFRAME_ZFW_CG_PERCENT_MAC_DESIRED", 36.5);
self
}
#[allow(dead_code)]
fn desired_fuel_min(mut self) -> Self {
self.write_by_name("FUEL_DESIRED", 0.);
+ self.write_by_name("AIRFRAME_ZFW_DESIRED", 300000.);
+ self.write_by_name("AIRFRAME_ZFW_CG_PERCENT_MAC_DESIRED", 36.5);
self
}
#[allow(dead_code)]
fn desired_fuel_50000(mut self) -> Self {
self.write_by_name("FUEL_DESIRED", 50000.);
+ self.write_by_name("AIRFRAME_ZFW_DESIRED", 300000.);
+ self.write_by_name("AIRFRAME_ZFW_CG_PERCENT_MAC_DESIRED", 36.5);
self
}
#[allow(dead_code)]
fn desired_fuel_100000(mut self) -> Self {
self.write_by_name("FUEL_DESIRED", 100000.);
+ self.write_by_name("AIRFRAME_ZFW_DESIRED", 300000.);
+ self.write_by_name("AIRFRAME_ZFW_CG_PERCENT_MAC_DESIRED", 36.5);
self
}
#[allow(dead_code)]
fn desired_fuel_200000(mut self) -> Self {
self.write_by_name("FUEL_DESIRED", 200000.);
+ self.write_by_name("AIRFRAME_ZFW_DESIRED", 300000.);
+ self.write_by_name("AIRFRAME_ZFW_CG_PERCENT_MAC_DESIRED", 36.5);
self
}
@@ -266,70 +276,58 @@ fn assert_fuel_quantity_0(test_bed: &FuelTestBed) {
fn assert_fuel_quantity_50000(test_bed: &FuelTestBed) {
let mut expected_quantities = HashMap::new();
+ expected_quantities.insert(A380FuelTankType::Trim, Mass::new::(3000.));
expected_quantities.insert(A380FuelTankType::LeftOuter, Mass::new::(4000.));
expected_quantities.insert(A380FuelTankType::RightOuter, Mass::new::(4000.));
expected_quantities.insert(A380FuelTankType::LeftInner, Mass::new::(5500.));
expected_quantities.insert(A380FuelTankType::RightInner, Mass::new::(5500.));
- expected_quantities.insert(
- A380FuelTankType::FeedOne,
- Mass::new::(7000. + 3000. * 20558. / 84788.),
- );
- expected_quantities.insert(
- A380FuelTankType::FeedTwo,
- Mass::new::(7000. + 3000. * 21836. / 84788.),
- );
- expected_quantities.insert(
- A380FuelTankType::FeedThree,
- Mass::new::(7000. + 3000. * 21836. / 84788.),
- );
- expected_quantities.insert(
- A380FuelTankType::FeedFour,
- Mass::new::(7000. + 3000. * 20558. / 84788.),
- );
- expected_quantities.insert(A380FuelTankType::Trim, Mass::default());
+ expected_quantities.insert(A380FuelTankType::FeedOne, Mass::new::(7000.));
+ expected_quantities.insert(A380FuelTankType::FeedTwo, Mass::new::(7000.));
+ expected_quantities.insert(A380FuelTankType::FeedThree, Mass::new::(7000.));
+ expected_quantities.insert(A380FuelTankType::FeedFour, Mass::new::(7000.));
assert_fuel_quantity(test_bed, expected_quantities);
}
fn assert_fuel_quantity_100000(test_bed: &FuelTestBed) {
let mut expected_quantities = HashMap::new();
+ expected_quantities.insert(A380FuelTankType::Trim, Mass::new::(8500.));
expected_quantities.insert(A380FuelTankType::LeftOuter, Mass::new::(4000.));
expected_quantities.insert(A380FuelTankType::RightOuter, Mass::new::(4000.));
expected_quantities.insert(A380FuelTankType::LeftInner, Mass::new::(5500.));
expected_quantities.insert(A380FuelTankType::RightInner, Mass::new::(5500.));
expected_quantities.insert(
A380FuelTankType::FeedOne,
- Mass::new::(7000. + 53000. * 20558. / 84788.),
+ Mass::new::(7000. + 44500. * 20558. / 84788.),
);
expected_quantities.insert(
A380FuelTankType::FeedTwo,
- Mass::new::(7000. + 53000. * 21836. / 84788.),
+ Mass::new::(7000. + 44500. * 21836. / 84788.),
);
expected_quantities.insert(
A380FuelTankType::FeedThree,
- Mass::new::(7000. + 53000. * 21836. / 84788.),
+ Mass::new::(7000. + 44500. * 21836. / 84788.),
);
expected_quantities.insert(
A380FuelTankType::FeedFour,
- Mass::new::(7000. + 53000. * 20558. / 84788.),
+ Mass::new::(7000. + 44500. * 20558. / 84788.),
);
- expected_quantities.insert(A380FuelTankType::Trim, Mass::default());
assert_fuel_quantity(test_bed, expected_quantities);
}
fn assert_fuel_quantity_200000(test_bed: &FuelTestBed) {
let mut expected_quantities = HashMap::new();
+ expected_quantities.insert(A380FuelTankType::Trim, Mass::new::(13500.));
expected_quantities.insert(A380FuelTankType::LeftOuter, Mass::new::(4000.));
expected_quantities.insert(A380FuelTankType::RightOuter, Mass::new::(4000.));
expected_quantities.insert(A380FuelTankType::LeftMid, Mass::new::(27127.));
expected_quantities.insert(A380FuelTankType::RightMid, Mass::new::(27127.));
- expected_quantities.insert(A380FuelTankType::LeftInner, Mass::new::(24479.));
- expected_quantities.insert(A380FuelTankType::RightInner, Mass::new::(24479.));
+ expected_quantities.insert(A380FuelTankType::LeftInner, Mass::new::(19729.));
+ expected_quantities.insert(A380FuelTankType::RightInner, Mass::new::(19729.));
expected_quantities.insert(A380FuelTankType::FeedOne, Mass::new::(20558.));
expected_quantities.insert(A380FuelTankType::FeedTwo, Mass::new::(21836.));
expected_quantities.insert(A380FuelTankType::FeedThree, Mass::new::(21836.));
expected_quantities.insert(A380FuelTankType::FeedFour, Mass::new::(20558.));
- expected_quantities.insert(A380FuelTankType::Trim, Mass::new::(4000.));
assert_fuel_quantity(test_bed, expected_quantities);
}
diff --git a/fbw-a380x/src/wasm/systems/a380_systems/src/fuel/trim_tank_targets.toml b/fbw-a380x/src/wasm/systems/a380_systems/src/fuel/trim_tank_targets.toml
new file mode 100644
index 00000000000..54a78765419
--- /dev/null
+++ b/fbw-a380x/src/wasm/systems/a380_systems/src/fuel/trim_tank_targets.toml
@@ -0,0 +1,16 @@
+[params]
+target_zfw_cg = [29,30,31,32,33,34,35,36,37,38,39,40,41,42,43]
+target_zfw = [
+ { start = 270000, end = 292599 },
+ { start = 292600, end = 315099 },
+ { start = 315100, end = 337599 },
+ { start = 337600, end = 372000 }
+]
+
+[trim_tank_targets]
+tables = [
+ {47000 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 48000 = [1000,1000,1000,1000,1000,1000,1000,1000,1000,1000,1000,500,0,0,0], 49000 = [2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,500,0,0,0], 50000 = [3000,3000,3000,3000,3000,3000,3000,3000,3000,3000,2000,500,0,0,0], 51000 = [4000,4000,4000,4000,4000,4000,4000,4000,4000,3000,2000,1000,0,0,0], 52000 = [5000,5000,5000,5000,5000,5000,5000,5000,4500,3000,2000,1000,0,0,0], 53000 = [6000,6000,6000,6000,6000,6000,6000,5500,4500,3000,2000,1000,0,0,0], 54000 = [7000,7000,7000,7000,7000,7000,7000,5500,4500,3500,2000,1000,0,0,0], 55000 = [8000,8000,8000,8000,8000,8000,7000,5500,4500,3500,2000,1000,0,0,0], 56000 = [9000,9000,9000,9000,9000,8000,7000,5500,4500,3500,2000,1000,0,0,0], 57000 = [10000,10000,10000,10000,9000,8000,7000,6000,4500,3500,2500,1000,0,0,0], 58000 = [11000,11000,11000,10500,9500,8000,7000,6000,4500,3500,2500,1000,0,0,0], 59000 = [12000,12000,11500,10500,9500,8000,7000,6000,4500,3500,2500,1000,0,0,0], 60000 = [13000,13000,11500,10500,9500,8500,7000,6000,5000,3500,2500,1500,0,0,0], 61000 = [14000,13000,12000,10500,9500,8500,7000,6000,5000,3500,2500,1500,0,0,0], 62000 = [14000,13000,12000,10500,9500,8500,7000,6000,5000,4000,2500,1500,0,0,0], 63000 = [14000,13000,12000,10500,9500,8500,7500,6000,5000,4000,2500,1500,500,0,0], 64000 = [14500,13000,12000,11000,9500,8500,7500,6000,5000,4000,2500,1500,500,0,0], 65000 = [14500,13000,12000,11000,9500,8500,7500,6000,5000,4000,2500,1500,500,0,0], 66000 = [14500,13000,12000,11000,10000,8500,7500,6500,5000,4000,3000,1500,500,0,0], 67000 = [14500,13500,12000,11000,10000,8500,7500,6500,5000,4000,3000,1500,500,0,0], 68000 = [14500,13500,12000,11000,10000,8500,7500,6500,5000,4000,3000,1500,500,0,0], 69000 = [14500,13500,12000,11000,10000,9000,7500,6500,5500,4000,3000,2000,500,0,0], 70000 = [14500,13500,12500,11000,10000,9000,7500,6500,5500,4000,3000,2000,500,0,0], 71000 = [14500,13500,12500,11000,10000,9000,7500,6500,5500,4000,3000,2000,500,0,0], 72000 = [14500,13500,12500,11500,10000,9000,8000,6500,5500,4500,3000,2000,1000,0,0], 73000 = [15000,13500,12500,11500,10000,9000,8000,6500,5500,4500,3000,2000,1000,0,0], 74000 = [15000,13500,12500,11500,10000,9000,8000,6500,5500,4500,3000,2000,1000,0,0], 75000 = [15000,13500,12500,11500,10500,9000,8000,7000,5500,4500,3500,2000,1000,0,0], 76000 = [15000,14000,12500,11500,10500,9000,8000,7000,5500,4500,3500,2000,1000,0,0], 77000 = [15000,14000,12500,11500,10500,9000,8000,7000,5500,4500,3500,2000,1000,0,0], 78000 = [15000,14000,12500,11500,10500,9500,8000,7000,6000,4500,3500,2500,1000,0,0], 79000 = [15000,14000,13000,11500,10500,9500,8000,7000,6000,4500,3500,2500,1000,0,0], 80000 = [15000,14000,13000,11500,10500,9500,8000,7000,6000,4500,3500,2500,1000,0,0], 81000 = [15000,14000,13000,11500,10500,9500,8500,7000,6000,5000,3500,2500,1000,0,0], 82000 = [15500,14000,13000,12000,10500,9500,8500,7000,6000,5000,3500,2500,1500,0,0], 83000 = [15500,14000,13000,12000,10500,9500,8500,7000,6000,5000,3500,2500,1500,0,0], 84000 = [15500,14000,13000,12000,10500,9500,8500,7000,6000,5000,3500,2500,1500,0,0], 85000 = [15500,14500,13000,12000,11000,9500,8500,7500,6000,5000,4000,2500,1500,0,0], 86000 = [15500,14500,13000,12000,11000,9500,8500,7500,6000,5000,4000,2500,1500,500,0], 87000 = [15500,14500,13000,12000,11000,9500,8500,7500,6000,5000,4000,2500,1500,500,0], 88000 = [15500,14500,13000,12000,11000,10000,8500,7500,6500,5000,4000,3000,1500,500,0], 89000 = [15500,14500,13500,12000,11000,10000,8500,7500,6500,5000,4000,3000,1500,500,0], 90000 = [15500,14500,13500,12000,11000,10000,8500,7500,6500,5000,4000,3000,1500,500,0], 91000 = [15500,14500,13500,12000,11000,10000,9000,7500,6500,5500,4000,3000,1500,500,0], 92000 = [16000,14500,13500,12500,11000,10000,9000,7500,6500,5500,4000,3000,2000,500,0], 93000 = [16000,14500,13500,12500,11000,10000,9000,7500,6500,5500,4000,3000,2000,500,0], 94000 = [16000,14500,13500,12500,11000,10000,9000,8000,6500,5500,4500,3000,2000,500,0], 95000 = [16000,15000,13500,12500,11500,10000,9000,8000,6500,5500,4500,3000,2000,500,0], 96000 = [16000,15000,13500,12500,11500,10000,9000,8000,6500,5500,4500,3000,2000,1000,0], 97000 = [16000,15000,13500,12500,11500,10000,9000,8000,6500,5500,4500,3000,2000,1000,0], 98000 = [16000,15000,14000,12500,11500,10500,9000,8000,7000,5500,4500,3000,2000,1000,0], 99000 = [16000,15000,14000,12500,11500,10500,9000,8000,7000,5500,4500,3500,2000,1000,0], 100000 = [16000,15000,14000,12500,11500,10500,9000,8000,7000,5500,4500,3500,2000,1000,0], 101000 = [16000,15000,14000,12500,11500,10500,9500,8000,7000,5500,4500,3500,2000,1000,0], 102000 = [16500,15000,14000,13000,11500,10500,9500,8000,7000,6000,4500,3500,2000,1000,0], 103000 = [16500,15000,14000,13000,11500,10500,9500,8000,7000,6000,4500,3500,2500,1000,0], 104000 = [16500,15000,14000,13000,11500,10500,9500,8000,7000,6000,4500,3500,2500,1000,0], 105000 = [16500,15500,14000,13000,12000,10500,9500,8500,7000,6000,4500,3500,2500,1000,0], 106000 = [16500,15500,14000,13000,12000,10500,9500,8500,7000,6000,5000,3500,2500,1000,0], 107000 = [16500,15500,14000,13000,12000,10500,9500,8500,7000,6000,5000,3500,2500,1000,0], 108000 = [16500,15500,14000,13000,12000,10500,9500,8500,7000,6000,5000,3500,2500,1000,0], 109000 = [16500,15500,14500,13000,12000,11000,9500,8500,7000,6000,5000,3500,2500,1000,0], 110000 = [16500,15500,14500,13000,12000,11000,9500,8500,7500,6000,5000,3500,2500,1500,0], 111000 = [16500,15500,14500,13000,12000,11000,9500,8500,7500,6000,5000,3500,2500,1500,0], 112000 = [16500,15500,14500,13000,12000,11000,9500,8500,7500,6000,5000,3500,2500,1500,0], 113000 = [17000,15500,14500,13500,12000,11000,9500,8500,7500,6000,5000,4000,2500,1500,0], 114000 = [17000,15500,14500,13500,12000,11000,10000,8500,7500,6000,5000,4000,2500,1500,0], 115000 = [17000,15500,14500,13500,12000,11000,10000,8500,7500,6000,5000,4000,2500,1500,0], 116000 = [17000,15500,14500,13500,12000,11000,10000,8500,7500,6500,5000,4000,2500,1500,500], 117000 = [17000,16000,14500,13500,12000,11000,10000,8500,7500,6500,5000,4000,2500,1500,500], 118000 = [17000,16000,14500,13500,12000,11000,10000,8500,7500,6500,5000,4000,3000,1500,500], 119000 = [17000,16000,14500,13500,12500,11000,10000,8500,7500,6500,5000,4000,3000,1500,500], 120000 = [17000,16000,14500,13500,12500,11000,10000,9000,7500,6500,5000,4000,3000,1500,500], 121000 = [17000,16000,14500,13500,12500,11000,10000,9000,7500,6500,5000,4000,3000,1500,500], 122000 = [17000,16000,14500,13500,12500,11000,10000,9000,7500,6500,5500,4000,3000,1500,500], 123000 = [17000,16000,15000,13500,12500,11000,10000,9000,7500,6500,5500,4000,3000,1500,500], 124000 = [17000,16000,15000,13500,12500,11500,10000,9000,7500,6500,5500,4000,3000,1500,500], 125000 = [17000,16000,15000,13500,12500,11500,10000,9000,8000,6500,5500,4000,3000,2000,500], 126000 = [17000,16000,15000,13500,12500,11500,10000,9000,8000,6500,5500,4000,3000,2000,500], 127000 = [17500,16000,15000,13500,12500,11500,10000,9000,8000,6500,5500,4000,3000,2000,500], 128000 = [17500,16000,15000,14000,12500,11500,10000,9000,8000,6500,5500,4500,3000,2000,500], 129000 = [17500,16000,15000,14000,12500,11500,10000,9000,8000,6500,5500,4500,3000,2000,500], 130000 = [17500,16000,15000,14000,12500,11500,10500,9000,8000,6500,5500,4500,3000,2000,500], 131000 = [17500,16000,15000,14000,12500,11500,10500,9000,8000,6500,5500,4500,3000,2000,500], 132000 = [17500,16500,15000,14000,12500,11500,10500,9000,8000,7000,5500,4500,3000,2000,500], 133000 = [17500,16500,15000,14000,12500,11500,10500,9000,8000,7000,5500,4500,3000,2000,500], 134000 = [17500,16500,15000,14000,13000,11500,10500,9000,8000,7000,5500,4500,3000,2000,1000], 135000 = [17500,16500,15000,14000,13000,11500,10500,9000,8000,7000,5500,4500,3000,2000,1000], 136000 = [17500,16500,15000,14000,13000,11500,10500,9500,8000,7000,5500,4500,3000,2000,1000], 137000 = [17500,16500,15000,14000,13000,11500,10500,9500,8000,7000,5500,4500,3500,2000,1000], 138000 = [17500,16500,15500,14000,13000,11500,10500,9500,8000,7000,5500,4500,3500,2000,1000], 139000 = [17500,16500,15500,14000,13000,11500,10500,9500,8000,7000,5500,4500,3500,2000,1000], 140000 = [17500,16500,15500,14000,13000,11500,10500,9500,8000,7000,5500,4500,3500,2000,1000], 141000 = [17500,16500,15500,14000,13000,12000,10500,9500,8000,7000,6000,4500,3500,2000,1000], 142000 = [17500,16500,15500,14000,13000,12000,10500,9500,8000,7000,6000,4500,3500,2000,1000], 143000 = [18000,16500,15500,14000,13000,12000,10500,9500,8000,7000,6000,4500,3500,2000,1000], 144000 = [18000,16500,15500,14000,13000,12000,10500,9500,8000,7000,6000,4500,3500,2000,1000], 145000 = [18000,16500,15500,14000,13000,12000,10500,9500,8000,7000,6000,4500,3500,2000,1000], 146000 = [18000,16500,15500,14500,13000,12000,10500,9500,8000,7000,6000,4500,3500,2000,1000], 147000 = [18000,16500,15500,14500,13000,12000,10500,9500,8500,7000,6000,4500,3500,2000,1000], 148000 = [18000,16500,15500,14500,13000,12000,10500,9500,8500,7000,6000,4500,3500,2000,1000], 149000 = [18000,16500,15500,14500,13000,12000,10500,9500,8500,7000,6000,4500,3500,2000,1000], 150000 = [18000,16500,15500,14500,13000,12000,10500,9500,8500,7000,6000,4500,3500,2500,1000], 151000 = [18000,16500,15500,14500,13000,12000,10500,9500,8500,7000,6000,4500,3500,2500,1000], 152000 = [18000,17000,15500,14500,13000,12000,11000,9500,8500,7000,6000,4500,3500,2500,1000], 153000 = [18000,17000,15500,14500,13000,12000,11000,9500,8500,7000,6000,4500,3500,2500,1000], 154000 = [18000,17000,15500,14500,13000,12000,11000,9500,8500,7000,6000,5000,3500,2500,1000], 155000 = [18000,17000,15500,14500,13000,12000,11000,9500,8500,7000,6000,5000,3500,2500,1000], 156000 = [18000,17000,15500,14500,13000,12000,11000,9500,8500,7000,6000,5000,3500,2500,1000], 157000 = [18000,17000,15500,14500,13000,12000,11000,9500,8500,7000,6000,5000,3500,2500,1000], 158000 = [18000,17000,15500,14500,13500,12000,11000,9500,8500,7000,6000,5000,3500,2500,1000], 159000 = [18000,17000,15500,14500,13500,12000,11000,9500,8500,7000,6000,5000,3500,2500,1000], 160000 = [18000,17000,15500,14500,13500,12000,11000,9500,8500,7500,6000,5000,3500,2500,1000], 161000 = [18000,17000,15500,14500,13500,12000,11000,9500,8500,7500,6000,5000,3500,2500,1500], 162000 = [18000,17000,15500,14500,13500,12000,11000,9500,8500,7500,6000,5000,3500,2500,1500], 163000 = [18000,17000,15500,14500,13500,12000,11000,9500,8500,7500,6000,5000,3500,2500,1500], 164000 = [18000,17000,16000,14500,13500,12000,11000,9500,8500,7500,6000,5000,4000,3000,1500], 165000 = [18000,17000,16000,14500,13500,12000,11000,9500,8500,7500,6000,5000,4000,3000,2000], 166000 = [18000,17000,16000,14500,13500,12000,11000,9500,8500,7500,6500,5000,4000,3000,2000], 167000 = [18000,17000,16000,14500,13500,12000,11000,9500,8500,7500,6500,5500,4000,3000,2000], 168000 = [18000,17000,16000,14500,13500,12000,11000,9500,8500,7500,6500,5500,4500,3000,2000], 169000 = [18000,17000,16000,14500,13500,12000,11000,10000,9000,7500,6500,5500,4500,3500,2000], 170000 = [18000,17000,16000,14500,13500,12000,11000,10000,9000,8000,6500,5500,4500,3500,2500], 171000 = [18500,17000,16000,14500,13500,12500,11000,10000,9000,8000,7000,5500,4500,3500,2500], 172000 = [18500,17000,16000,14500,13500,12500,11500,10000,9000,8000,7000,6000,4500,3500,2500], 173000 = [18500,17000,16000,14500,13500,12500,11500,10500,9000,8000,7000,6000,5000,3500,2500], 174000 = [18500,17000,16000,15000,13500,12500,11500,10500,9500,8000,7000,6000,5000,4000,2500], 175000 = [18500,17000,16000,15000,14000,12500,11500,10500,9500,8500,7500,6000,5000,4000,3000], 176000 = [18500,17000,16000,15000,14000,13000,11500,10500,9500,8500,7500,6500,5000,4000,3000], 177000 = [18500,17500,16000,15000,14000,13000,12000,10500,9500,8500,7500,6500,5500,4000,3000], 178000 = [18500,17500,16500,15000,14000,13000,12000,11000,10000,8500,7500,6500,5500,4500,3000], 179000 = [18500,17500,16500,15500,14000,13000,12000,11000,10000,9000,7500,6500,5500,4500,3500], 180000 = [18500,17500,16500,15500,14500,13000,12000,11000,10000,9000,8000,6500,5500,4500,3500], 181000 = [18500,17500,16500,15500,14500,13500,12500,11000,10000,9000,8000,7000,5500,4500,3500], 182000 = [18500,18000,16500,15500,14500,13500,12500,11500,10000,9000,8000,7000,6000,4500,3500], 183000 = [18500,18000,17000,15500,14500,13500,12500,11500,10500,9000,8000,7000,6000,5000,3500], 184000 = [18500,18000,17000,16000,15000,13500,12500,11500,10500,9500,8000,7000,6000,5000,4000], 185000 = [18500,18000,17000,16000,15000,14000,12500,11500,10500,9500,8500,7000,6000,5000,4000], 186000 = [18500,18500,17000,16000,15000,14000,13000,11500,10500,9500,8500,7500,6000,5000,4000], 187000 = [18500,18500,17500,16000,15000,14000,13000,12000,10500,9500,8500,7500,6500,5000,4000], 188000 = [18500,18500,17500,16500,15000,14000,13000,12000,11000,9500,8500,7500,6500,5500,4000], 189000 = [18500,18500,17500,16500,15500,14000,13000,12000,11000,10000,8500,7500,6500,5500,4500], 190000 = [18500,18500,17500,16500,15500,14500,13000,12000,11000,10000,9000,7500,6500,5500,4500], 191000 = [18500,18500,17500,16500,15500,14500,13500,12000,11000,10000,9000,8000,6500,5500,4500], 192000 = [18500,18500,18000,16500,15500,14500,13500,12500,11000,10000,9000,8000,7000,5500,4500], 193000 = [18500,18500,18000,17000,15500,14500,13500,12500,11500,10000,9000,8000,7000,6000,4500], 194000 = [18500,18500,18000,17000,16000,14500,13500,12500,11500,10500,9000,8000,7000,6000,5000], 195000 = [18500,18500,18000,17000,16000,15000,13500,12500,11500,10500,9500,8000,7000,6000,5000], 196000 = [18500,18500,18000,17000,16000,15000,14000,12500,11500,10500,9500,8500,7000,6000,5000], 197000 = [18500,18500,18500,17000,16000,15000,14000,13000,11500,10500,9500,8500,7500,6000,5000], 198000 = [18500,18500,18500,17500,16000,15000,14000,13000,12000,10500,9500,8500,7500,6500,5000], 199000 = [18500,18500,18500,17500,16500,15000,14000,13000,12000,11000,9500,8500,7500,6500,5500], 200000 = [18500,18500,18500,17500,16500,15500,14000,13000,12000,11000,10000,8500,7500,6500,5500], 201000 = [18500,18500,18500,17500,16500,15500,14500,13000,12000,11000,10000,9000,7500,6500,5500], 202000 = [18500,18500,18500,17500,16500,15500,14500,13500,12000,11000,10000,9000,8000,6500,5500], 203000 = [18500,18500,18500,18000,16500,15500,14500,13500,12500,11000,10000,9000,8000,7000,5500], 204000 = [18500,18500,18500,18000,17000,15500,14500,13500,12500,11500,10000,9000,8000,7000,6000], 205000 = [18500,18500,18500,18000,17000,16000,14500,13500,12500,11500,10500,9000,8000,7000,6000], 206000 = [18500,18500,18500,18000,17000,16000,15000,13500,12500,11500,10500,9500,8000,7000,6000], 207000 = [18500,18500,18500,18000,17000,16000,15000,14000,12500,11500,10500,9500,8500,7000,6000], 208000 = [18500,18500,18500,18500,17000,16000,15000,14000,13000,11500,10500,9500,8500,7500,6000], 209000 = [18500,18500,18500,18500,17500,16000,15000,14000,13000,12000,10500,9500,8500,7500,6500], 210000 = [18500,18500,18500,18500,17500,16500,15000,14000,13000,12000,11000,9500,8500,7500,6500], 211000 = [18500,18500,18500,18500,17500,16500,15500,14000,13000,12000,11000,10000,8500,7500,6500], 212000 = [18500,18500,18500,18500,17500,16500,15500,14500,13000,12000,11000,10000,9000,7500,6500], 213000 = [18500,18500,18500,18500,17500,16500,15500,14500,13500,12000,11000,10000,9000,8000,6500], 214000 = [18500,18500,18500,18500,18000,16500,15500,14500,13500,12500,11000,10000,9000,8000,7000], 215000 = [18500,18500,18500,18500,18000,17000,15500,14500,13500,12500,11500,10000,9000,8000,7000], 216000 = [18500,18500,18500,18500,18000,17000,16000,14500,13500,12500,11500,10500,9000,8000,7000], 217000 = [18500,18500,18500,18500,18000,17000,16000,15000,13500,12500,11500,10500,9500,8500,7000], 218000 = [18500,18500,18500,18500,18000,17000,16000,15000,14000,12500,11500,10500,9500,8500,7500], 219000 = [18500,18500,18500,18500,18500,17000,16000,15000,14000,13000,11500,10500,9500,8500,7500], 220000 = [18500,18500,18500,18500,18500,17500,16000,15000,14000,13000,12000,11000,9500,8500,7500], 221000 = [18500,18500,18500,18500,18500,17500,16500,15000,14000,13000,12000,11000,10000,8500,7500], 222000 = [18500,18500,18500,18500,18500,17500,16500,15500,14500,13000,12000,11000,10000,9000,7500], 223000 = [18500,18500,18500,18500,18500,17500,16500,15500,14500,13500,12000,11000,10000,9000,8000], 224000 = [18500,18500,18500,18500,18500,17500,16500,15500,14500,13500,12500,11000,10000,9000,8000], 225000 = [18500,18500,18500,18500,18500,18000,17000,15500,14500,13500,12500,11500,10000,9000,7500], 226000 = [18500,18500,18500,18500,18500,18000,17000,16000,14500,13500,12500,11500,10500,8500,7000], 227000 = [18500,18500,18500,18500,18500,18000,17000,16000,15000,13500,12500,11500,10000,8000,6500], 228000 = [18500,18500,18500,18500,18500,18000,17000,16000,15000,14000,13000,11500,9500,7500,6000], 229000 = [18500,18500,18500,18500,18500,18500,17000,16000,15000,14000,12500,11000,9000,7000,5500], 230000 = [18500,18500,18500,18500,18500,18500,17500,16000,15000,14000,12000,10500,8500,6500,5500], 231000 = [18500,18500,18500,18500,18500,18500,17500,16500,15500,13500,11500,10000,8000,6500,5500], 232000 = [18500,18500,18500,18500,18500,18500,17500,16500,15000,13000,11000,9500,8000,7000,5500], 233000 = [18500,18500,18500,18500,18500,18500,17500,16000,14500,12500,10500,9000,8000,7000,5500], 234000 = [18500,18500,18500,18500,18500,18500,17500,15500,14000,12000,10500,9000,8000,7000,5500], 235000 = [18500,18500,18500,18500,18500,18500,17000,15000,13500,11500,10500,9000,8000,7000,5500], 236000 = [18500,18500,18500,18500,18500,18500,16500,14500,13000,11500,10500,9000,8000,7000,5500], 237000 = [18500,18500,18500,18500,18500,18000,16000,14000,13000,11500,10500,9500,8000,7000,5500], 238000 = [18500,18500,18500,18500,18500,17500,15500,14000,13000,11500,10500,9500,8000,7000,5500], 239000 = [18500,18500,18500,18500,18500,17000,15000,14000,13000,11500,10500,9500,8000,7000,5500], 240000 = [18500,18500,18500,18500,18000,16500,15500,14000,13000,11500,10500,9500,8000,7000,6000], 241000 = [18500,18500,18500,18500,17500,16500,15500,14000,13000,11500,10500,9500,8000,7000,6000], 242000 = [18500,18500,18500,18500,17500,16500,15500,14000,13000,12000,10500,9500,8000,7000,6500], 243000 = [18500,18500,18500,18500,17500,16500,15500,14000,13000,12000,10500,9500,8000,7500,7500], 244000 = [18500,18500,18500,18500,18000,16500,15500,14000,13000,12000,10500,9500,8500,8500,8500], 245000 = [18500,18500,18500,18500,18000,16500,15500,14000,13000,12000,10500,9500,9500,9500,9500], 246000 = [18500,18500,18500,18500,18000,16500,15500,14500,13000,12000,10500,10500,10500,10500,10500], 247000 = [18500,18500,18500,18500,18000,16500,15500,14500,13000,12000,11500,11500,11500,11500,11500], 248000 = [18500,18500,18500,18500,18000,16500,15500,14500,13000,12500,12500,12500,12500,12500,12500], 249000 = [18500,18500,18500,18500,18000,16500,15500,14500,13500,13500,13500,13500,13500,13500,13500], 250000 = [18500,18500,18500,18500,18000,16500,15500,14500,14500,14500,14500,14500,14500,14500,14500], 251000 = [18500,18500,18500,18500,18000,17000,15500,15500,15500,15500,15500,15500,15500,15500,15500], 252000 = [18500,18500,18500,18500,18000,17000,16500,16500,16500,16500,16500,16500,16500,16500,16500], 253000 = [18500,18500,18500,18500,18000,17500,17500,17500,17500,17500,17500,17500,17500,17500,17500], 254000 = [18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500], 255000 = [18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500], 256000 = [18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500], 257000 = [18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500], 258000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 259000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 260000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 261000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 262000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 263000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 264000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 265000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 266000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 267000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 268000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 269000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 270000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 271000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 272000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 273000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 274000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 275000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 276000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 277000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 278000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 279000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 280000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 281000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 282000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 283000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 284000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 285000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 286000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 287000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 288000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 289000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 290000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000]},
+ {47000 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 48000 = [1000,1000,1000,1000,1000,1000,1000,1000,1000,1000,1000,500,0,0,0], 49000 = [2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,500,0,0,0], 50000 = [3000,3000,3000,3000,3000,3000,3000,3000,3000,3000,2000,500,0,0,0], 51000 = [4000,4000,4000,4000,4000,4000,4000,4000,4000,3000,2000,500,0,0,0], 52000 = [5000,5000,5000,5000,5000,5000,5000,5000,4500,3500,2000,1000,0,0,0], 53000 = [6000,6000,6000,6000,6000,6000,6000,6000,4500,3500,2000,1000,0,0,0], 54000 = [7000,7000,7000,7000,7000,7000,7000,6000,4500,3500,2000,1000,0,0,0], 55000 = [8000,8000,8000,8000,8000,8000,7000,6000,4500,3500,2000,1000,0,0,0], 56000 = [9000,9000,9000,9000,9000,8500,7500,6000,5000,3500,2500,1000,0,0,0], 57000 = [10000,10000,10000,10000,10000,8500,7500,6000,5000,3500,2500,1000,0,0,0], 58000 = [11000,11000,11000,11000,10000,8500,7500,6000,5000,3500,2500,1000,0,0,0], 59000 = [12000,12000,12000,11000,10000,8500,7500,6000,5000,3500,2500,1000,0,0,0], 60000 = [13000,13000,12500,11500,10000,9000,7500,6500,5000,4000,2500,1000,0,0,0], 61000 = [14000,14000,12500,11500,10000,9000,7500,6500,5000,4000,2500,1500,0,0,0], 62000 = [15000,14000,12500,11500,10000,9000,7500,6500,5000,4000,2500,1500,0,0,0], 63000 = [15000,14000,12500,11500,10000,9000,7500,6500,5000,4000,2500,1500,0,0,0], 64000 = [15000,14000,12500,11500,10500,9000,8000,6500,5500,4000,2500,1500,0,0,0], 65000 = [15500,14000,13000,11500,10500,9000,8000,6500,5500,4000,3000,1500,0,0,0], 66000 = [15500,14000,13000,11500,10500,9000,8000,6500,5500,4000,3000,1500,500,0,0], 67000 = [15500,14000,13000,11500,10500,9000,8000,6500,5500,4000,3000,1500,500,0,0], 68000 = [15500,14000,13000,11500,10500,9000,8000,6500,5500,4000,3000,1500,500,0,0], 69000 = [15500,14500,13000,12000,10500,9500,8000,7000,5500,4500,3000,1500,500,0,0], 70000 = [15500,14500,13000,12000,10500,9500,8000,7000,5500,4500,3000,2000,500,0,0], 71000 = [15500,14500,13000,12000,10500,9500,8000,7000,5500,4500,3000,2000,500,0,0], 72000 = [15500,14500,13000,12000,10500,9500,8000,7000,5500,4500,3000,2000,500,0,0], 73000 = [15500,14500,13000,12000,11000,9500,8500,7000,5500,4500,3000,2000,500,0,0], 74000 = [16000,14500,13500,12000,11000,9500,8500,7000,6000,4500,3500,2000,500,0,0], 75000 = [16000,14500,13500,12000,11000,9500,8500,7000,6000,4500,3500,2000,1000,0,0], 76000 = [16000,14500,13500,12000,11000,9500,8500,7000,6000,4500,3500,2000,1000,0,0], 77000 = [16000,14500,13500,12000,11000,9500,8500,7000,6000,4500,3500,2000,1000,0,0], 78000 = [16000,15000,13500,12500,11000,10000,8500,7500,6000,4500,3500,2000,1000,0,0], 79000 = [16000,15000,13500,12500,11000,10000,8500,7500,6000,5000,3500,2500,1000,0,0], 80000 = [16000,15000,13500,12500,11000,10000,8500,7500,6000,5000,3500,2500,1000,0,0], 81000 = [16000,15000,13500,12500,11000,10000,8500,7500,6000,5000,3500,2500,1000,0,0], 82000 = [16000,15000,13500,12500,11000,10000,8500,7500,6000,5000,3500,2500,1000,0,0], 83000 = [16500,15000,14000,12500,11500,10000,9000,7500,6500,5000,3500,2500,1000,0,0], 84000 = [16500,15000,14000,12500,11500,10000,9000,7500,6500,5000,4000,2500,1000,0,0], 85000 = [16500,15000,14000,12500,11500,10000,9000,7500,6500,5000,4000,2500,1500,0,0], 86000 = [16500,15000,14000,12500,11500,10000,9000,7500,6500,5000,4000,2500,1500,0,0], 87000 = [16500,15000,14000,12500,11500,10000,9000,7500,6500,5000,4000,2500,1500,0,0], 88000 = [16500,15500,14000,13000,11500,10500,9000,8000,6500,5500,4000,2500,1500,0,0], 89000 = [16500,15500,14000,13000,11500,10500,9000,8000,6500,5500,4000,3000,1500,0,0], 90000 = [16500,15500,14000,13000,11500,10500,10500,8000,6500,5500,4000,3000,1500,500,0], 91000 = [16500,15500,14000,13000,11500,10500,10500,8000,6500,5500,4000,3000,1500,500,0], 92000 = [16500,15500,14000,13000,11500,10500,9000,8000,6500,5500,4000,3000,1500,500,0], 93000 = [17000,15500,14500,13000,12000,10500,9500,8000,7000,5500,4500,3000,1500,500,0], 94000 = [17000,15500,14500,13000,12000,10500,9500,8000,7000,5500,4500,3000,1500,500,0], 95000 = [17000,15500,14500,13000,12000,10500,9500,8000,7000,5500,4500,3000,2000,500,0], 96000 = [17000,15500,14500,13000,12000,10500,9500,8000,7000,5500,4500,3000,2000,500,0], 97000 = [17000,16000,14500,13000,12000,10500,9500,8000,7000,5500,4500,3000,2000,500,0], 98000 = [17000,16000,14500,13500,12000,11000,9500,8500,7000,5500,4500,3000,2000,500,0], 99000 = [17000,16000,14500,13500,12000,11000,9500,8500,7000,6000,4500,3000,2000,500,0], 100000 = [17000,16000,14500,13500,12000,11000,9500,8500,7000,6000,4500,3500,2000,500,0], 101000 = [17000,16000,14500,13500,12000,11000,9500,8500,7000,6000,4500,3500,2000,500,0], 102000 = [17500,16000,15000,13500,12000,11000,9500,8500,7000,6000,4500,3500,2000,1000,0], 103000 = [17500,16000,15000,13500,12500,11000,10000,8500,7000,6000,4500,3500,2000,1000,0], 104000 = [17500,16000,15000,13500,12500,11000,10000,8500,7500,6000,4500,3500,2000,1000,0], 105000 = [17500,16000,15000,13500,12500,11000,10000,8500,7500,6000,5000,3500,2000,1000,0], 106000 = [17500,16000,15000,13500,12500,11000,10000,8500,7500,6000,5000,3500,2000,1000,0], 107000 = [17500,16000,15000,13500,12500,11000,10000,8500,7500,6000,5000,3500,2000,1000,0], 108000 = [17500,16500,15000,14000,12500,11000,10000,8500,7500,6000,5000,3500,2500,1000,0], 109000 = [17500,16500,15000,14000,12500,11500,10000,8500,7500,6000,5000,3500,2500,1000,0], 110000 = [17500,16500,15000,14000,12500,11500,10000,9000,7500,6000,5000,3500,2500,1000,0], 111000 = [17500,16500,15000,14000,12500,11500,10000,9000,7500,6000,5000,3500,2500,1000,0], 112000 = [17500,16500,15000,14000,12500,11500,10000,9000,7500,6500,5000,3500,2500,1000,0], 113000 = [18000,16500,15000,14000,12500,11500,10000,9000,7500,6500,5000,3500,2500,1000,0], 114000 = [18000,16500,15500,14000,12500,11500,10000,9000,7500,6500,5000,4000,2500,1000,0], 115000 = [18000,16500,15500,14000,13000,11500,10000,9000,7500,6500,5000,4000,2500,1000,0], 116000 = [18000,16500,15500,14000,13000,11500,10000,9000,7500,6500,5000,4000,2500,1000,0], 117000 = [18000,16500,15500,14000,13000,11500,10500,9000,7500,6500,5000,4000,2500,1500,0], 118000 = [18000,16500,15500,14000,13000,11500,10500,9000,7500,6500,5000,4000,2500,1500,0], 119000 = [18000,16500,15500,14000,13000,11500,10500,9000,8000,6500,5000,4000,2500,1500,0], 120000 = [18000,17000,15500,14000,13000,11500,10500,9000,8000,6500,5500,4000,2500,1500,0], 121000 = [18000,17000,15500,14000,13000,11500,10500,9000,8000,6500,5500,4000,2500,1500,0], 122000 = [18000,17000,15500,14500,13000,11500,10500,9000,8000,6500,5500,4000,2500,1500,0], 123000 = [18000,17000,15500,14500,13000,11500,10500,9000,8000,6500,5500,4000,3000,1500,0], 124000 = [18000,17000,15500,14500,13000,12000,10500,9000,8000,6500,5500,4000,3000,1500,0], 125000 = [18000,17000,15500,14500,13000,12000,10500,9500,8000,6500,5500,4000,3000,1500,0], 126000 = [18000,17000,15500,14500,13000,12000,10500,9500,8000,6500,5500,4000,3000,1500,0], 127000 = [18500,17000,15500,14500,13000,12000,10500,9500,8000,7000,5500,4000,3000,1500,500], 128000 = [18500,17000,15500,14500,13000,12000,10500,9500,8000,7000,5500,4000,3000,1500,500], 129000 = [18500,17000,16000,14500,13000,12000,10500,9500,8000,7000,5500,4000,3000,1500,500], 130000 = [18500,17000,16000,14500,13500,12000,10500,9500,8000,7000,5500,4500,3000,1500,500], 131000 = [18500,17000,16000,14500,13500,12000,10500,9500,8000,7000,5500,4500,3000,1500,500], 132000 = [18500,17000,16000,14500,13500,12000,11000,9500,8000,7000,5500,4500,3000,1500,500], 133000 = [18500,17000,16000,14500,13500,12000,11000,9500,8000,7000,5500,4500,3000,1500,500], 134000 = [18500,17000,16000,14500,13500,12000,11000,9500,8500,7000,5500,4500,3000,1500,500], 135000 = [18500,17500,16000,14500,13500,12000,11000,9500,8500,7000,5500,4500,3000,2000,500], 136000 = [18500,17500,16000,14500,13500,12000,11000,9500,8500,7000,5500,4500,3000,2000,500], 137000 = [18500,17500,16000,15000,13500,12000,11000,9500,8500,7000,5500,4500,3000,2000,500], 138000 = [18500,17500,16000,15000,13500,12000,11000,9500,8500,7000,6000,4500,3000,2000,500], 139000 = [18500,17500,16000,15000,13500,12000,11000,9500,8500,7000,6000,4500,3000,2000,500], 140000 = [18500,17500,16000,15000,13500,12500,11000,9500,8500,7000,6000,4500,3000,2000,500], 141000 = [18500,17500,16000,15000,13500,12500,11000,9500,8500,7000,6000,4500,3000,2000,500], 142000 = [18500,17500,16000,15000,13500,12500,11000,9500,8500,7000,6000,4500,3000,2000,500], 143000 = [18500,17500,16000,15000,13500,12500,11000,9500,8500,7000,6000,4500,3000,2000,500], 144000 = [18500,17500,16000,15000,13500,12500,11000,10000,8500,7000,6000,4500,3000,2000,500], 145000 = [18500,17500,16000,15000,13500,12500,11000,10000,8500,7000,6000,4500,3000,2000,500], 146000 = [18500,17500,16500,15000,13500,12500,11000,10000,8500,7000,6000,4500,3500,2000,500], 147000 = [18500,17500,16500,15000,13500,12500,11000,10000,8500,7000,6000,4500,3500,2000,500], 148000 = [18500,17500,16500,15000,13500,12500,11000,10000,8500,7000,6000,4500,3500,2000,500], 149000 = [18500,17500,16500,15000,13500,12500,11000,10000,8500,7000,6000,4500,3500,2000,500], 150000 = [18500,17500,16500,15000,13500,12500,11000,10000,8500,7500,6000,4500,3500,2000,500], 151000 = [18500,17500,16500,15000,14000,12500,11000,10000,8500,7500,6000,4500,3500,2000,500], 152000 = [18500,17500,16500,15000,14000,12500,11000,10000,8500,7500,6000,4500,3500,2000,500], 153000 = [18500,17500,16500,15000,14000,12500,11000,10000,8500,7500,6000,4500,3500,2000,500], 154000 = [18500,17500,16500,15000,14000,12500,11000,10000,8500,7500,6000,4500,3500,2000,500], 155000 = [18500,17500,16500,15000,14000,12500,11000,10000,8500,7500,6000,4500,3500,2000,500], 156000 = [18500,17500,16500,15000,14000,12500,11000,10000,8500,7500,6000,4500,3500,2000,500], 157000 = [18500,18000,16500,15000,14000,12500,11500,10000,8500,7500,6000,4500,3500,2000,500], 158000 = [18500,18000,16500,15000,14000,12500,11500,10000,8500,7500,6000,5000,3500,2000,500], 159000 = [18500,18000,16500,15000,14000,12500,11500,10000,8500,7500,6000,5000,3500,2000,1000], 160000 = [18500,18000,16500,15000,14000,12500,11500,10000,8500,7500,6000,5000,3500,2000,1000], 161000 = [18500,18000,16500,15000,14000,12500,11500,10000,8500,7500,6000,5000,3500,2000,1000], 162000 = [18500,18000,16500,15000,14000,12500,11500,10000,8500,7500,6000,5000,3500,2500,1000], 163000 = [18500,18000,16500,15500,14000,12500,11500,10000,8500,7500,6000,5000,3500,2500,1000], 164000 = [18500,18000,16500,15500,14000,12500,11500,10000,8500,7500,6000,5000,3500,2500,1500], 165000 = [18500,18000,16500,15500,14000,12500,11500,10000,8500,7500,6000,5000,4000,2500,1500], 166000 = [18500,18000,16500,15500,14000,12500,11500,10000,8500,7500,6500,5000,4000,3000,1500], 167000 = [18500,18000,16500,15500,14000,12500,11500,10000,9000,7500,6500,5000,4000,3000,1500], 168000 = [18500,18000,16500,15500,14000,12500,11500,10000,9000,7500,6500,5500,4000,3000,2000], 169000 = [18500,18000,16500,15500,14000,12500,11500,10000,9000,8000,6500,5500,4500,3000,2000], 170000 = [18500,18000,16500,15500,14000,12500,11500,10500,9000,8000,7000,5500,4500,3000,2000], 171000 = [18500,18000,16500,15500,14000,12500,11500,10500,9000,8000,7000,5500,4500,3500,2000], 172000 = [18500,18000,16500,15500,14000,13000,11500,10500,9500,8000,7000,6000,4500,3500,2000], 173000 = [18500,18000,16500,15500,14000,13000,12000,10500,9500,8500,7000,6000,4500,3500,2500], 174000 = [18500,18000,16500,15500,14000,13000,12000,10500,9500,8500,7000,6000,5000,3500,2500], 175000 = [18500,18000,16500,15500,14500,13000,12000,11000,9500,8500,7500,6000,5000,3500,2500], 176000 = [18500,18000,17000,15500,14500,13500,12000,11000,10000,8500,7500,6000,5000,4000,2500], 177000 = [18500,18000,17000,16000,14500,13500,12000,11000,10000,8500,7500,6500,5000,4000,2500], 178000 = [18500,18000,17000,16000,14500,13500,12500,11000,10000,9000,7500,6500,5000,4000,3000], 179000 = [18500,18500,17000,16000,15000,13500,12500,11500,10000,9000,7500,6500,5500,4000,3000], 180000 = [18500,18500,17500,16000,15000,13500,12500,11500,10000,9000,8000,6500,5500,4500,3000], 181000 = [18500,18500,17500,16000,15000,14000,12500,11500,10500,9000,8000,6500,5500,4500,3000], 182000 = [18500,18500,17500,16500,15000,14000,13000,11500,10500,9000,8000,7000,5500,4500,3500], 183000 = [18500,18500,17500,16500,15000,14000,13000,11500,10500,9500,8000,7000,6000,4500,3500], 184000 = [18500,18500,17500,16500,15500,14000,13000,12000,10500,9500,8000,7000,6000,4500,3500], 185000 = [18500,18500,18000,16500,15500,14000,13000,12000,10500,9500,8500,7000,6000,5000,3500], 186000 = [18500,18500,18000,16500,15500,14500,13000,12000,11000,9500,8500,7500,6000,5000,3500], 187000 = [18500,18500,18000,17000,15500,14500,13500,12000,11000,9500,8500,7500,6000,5000,4000], 188000 = [18500,18500,18000,17000,15500,14500,13500,12000,11000,10000,8500,7500,6500,5000,4000], 189000 = [18500,18500,18000,17000,16000,14500,13500,12500,11000,10000,8500,7500,6500,5000,4000], 190000 = [18500,18500,18500,17000,16000,15000,13500,12500,11000,10000,9000,7500,6500,5500,4000], 191000 = [18500,18500,18500,17000,16000,15000,13500,12500,11500,10000,9000,8000,6500,5500,4000], 192000 = [18500,18500,18500,17500,16000,15000,14000,12500,11500,10000,9000,8000,6500,5500,4500], 193000 = [18500,18500,18500,17500,16500,15000,14000,12500,11500,10500,9000,8000,7000,5500,4500], 194000 = [18500,18500,18500,17500,16500,15000,14000,13000,11500,10500,9000,8000,7000,5500,4500], 195000 = [18500,18500,18500,17500,16500,15500,14000,13000,11500,10500,9500,8000,7000,6000,4500], 196000 = [18500,18500,18500,18000,16500,15500,14000,13000,12000,10500,9500,8500,7000,6000,4500], 197000 = [18500,18500,18500,18000,16500,15500,14500,13000,12000,10500,9500,8500,7000,6000,5000], 198000 = [18500,18500,18500,18000,17000,15500,14500,13000,12000,11000,9500,8500,7500,6000,5000], 199000 = [18500,18500,18500,18000,17000,15500,14500,13500,12000,11000,9500,8500,7500,6000,5000], 200000 = [18500,18500,18500,18000,17000,16000,14500,13500,12000,11000,10000,8500,7500,6500,5000], 201000 = [18500,18500,18500,18500,17000,16000,14500,13500,12500,11000,10000,9000,7500,6500,5000], 202000 = [18500,18500,18500,18500,17000,16000,15000,13500,12500,11000,10000,9000,7500,6500,5500], 203000 = [18500,18500,18500,18500,17500,16000,15000,13500,12500,11500,10000,9000,8000,6500,5500], 204000 = [18500,18500,18500,18500,17500,16000,15000,14000,12500,11500,10000,9000,8000,6500,5500], 205000 = [18500,18500,18500,18500,17500,16500,15000,14000,12500,11500,10500,9000,8000,7000,5500], 206000 = [18500,18500,18500,18500,17500,16500,15000,14000,13000,11500,10500,9500,8000,7000,5500], 207000 = [18500,18500,18500,18500,17500,16500,15500,14000,13000,11500,10500,9500,8000,7000,6000], 208000 = [18500,18500,18500,18500,18000,16500,15500,14000,13000,12000,10500,9500,8500,7000,6000], 209000 = [18500,18500,18500,18500,18000,16500,15500,14500,13000,12000,10500,9500,8500,7000,6000], 210000 = [18500,18500,18500,18500,18000,17000,15500,14500,13000,12000,11000,9500,8500,7500,6000], 211000 = [18500,18500,18500,18500,18000,17000,15500,14500,13500,12000,11000,10000,8500,7500,6000], 212000 = [18500,18500,18500,18500,18000,17000,16000,14500,13500,12000,11000,10000,8500,7500,6500], 213000 = [18500,18500,18500,18500,18500,17000,16000,14500,13500,12500,11000,10000,9000,7500,6500], 214000 = [18500,18500,18500,18500,18500,17000,16000,15000,13500,12500,11500,10000,9000,7500,6500], 215000 = [18500,18500,18500,18500,18500,17500,16000,15000,13500,12500,11500,10000,9000,8000,6500], 216000 = [18500,18500,18500,18500,18500,17500,16000,15000,14000,12500,11500,10500,9000,8000,7000], 217000 = [18500,18500,18500,18500,18500,17500,16500,15000,14000,13000,11500,10500,9000,8000,7000], 218000 = [18500,18500,18500,18500,18500,17500,16500,15000,14000,13000,11500,10500,9500,8000,7000], 219000 = [18500,18500,18500,18500,18500,17500,16500,15500,14000,13000,12000,10500,9500,8500,7000], 220000 = [18500,18500,18500,18500,18500,18000,16500,15500,14500,13000,12000,10500,9500,8500,7000], 221000 = [18500,18500,18500,18500,18500,18000,16500,15500,14500,13000,12000,11000,9500,8500,7500], 222000 = [18500,18500,18500,18500,18500,18000,17000,15500,14500,13500,12000,11000,10000,8500,7500], 223000 = [18500,18500,18500,18500,18500,18000,17000,16000,14500,13500,12000,11000,10000,8500,7500], 224000 = [18500,18500,18500,18500,18500,18000,17000,16000,14500,13500,12500,11000,10000,9000,7500], 225000 = [18500,18500,18500,18500,18500,18500,17000,16000,15000,13500,12500,11500,10000,9000,7000], 226000 = [18500,18500,18500,18500,18500,18500,17500,16000,15000,13500,12500,11500,10000,8500,6500], 227000 = [18500,18500,18500,18500,18500,18500,17500,16000,15000,14000,12500,11500,10000,8000,6000], 228000 = [18500,18500,18500,18500,18500,18500,17500,16500,15000,14000,13000,11000,9500,7500,5500], 229000 = [18500,18500,18500,18500,18500,18500,17500,16500,15000,14000,12500,10500,9000,7000,5000], 230000 = [18500,18500,18500,18500,18500,18500,17500,16500,15500,14000,12000,10000,8500,6500,5000], 231000 = [18500,18500,18500,18500,18500,18500,18000,16500,15500,13500,11500,9500,8000,6500,5000], 232000 = [18500,18500,18500,18500,18500,18500,18000,17000,15000,13000,11000,9000,8000,6500,5000], 233000 = [18500,18500,18500,18500,18500,18500,18000,16500,14500,12500,10500,9000,8000,6500,5500], 234000 = [18500,18500,18500,18500,18500,18500,18000,16000,14000,12000,10500,9000,8000,6500,5500], 235000 = [18500,18500,18500,18500,18500,18500,17500,15500,13500,11500,10500,9000,8000,6500,5500], 236000 = [18500,18500,18500,18500,18500,18500,17000,15000,13000,11500,10500,9000,8000,6500,5500], 237000 = [18500,18500,18500,18500,18500,18500,16500,14500,13000,12000,10500,9000,8000,6500,5500], 238000 = [18500,18500,18500,18500,18500,18000,16000,14500,13000,12000,10500,9000,8000,6500,5500], 239000 = [18500,18500,18500,18500,18500,17500,15500,14500,13000,12000,10500,9500,8000,6500,5500], 240000 = [18500,18500,18500,18500,18500,17000,15500,14500,13000,12000,10500,9500,8000,6500,5500], 241000 = [18500,18500,18500,18500,18500,17000,15500,14500,13000,12000,10500,9500,8000,6500,5500], 242000 = [18500,18500,18500,18500,18500,17000,16000,14500,13000,12000,10500,9500,8000,7000,6500], 243000 = [18500,18500,18500,18500,18500,17000,16000,14500,13000,12000,10500,9500,8000,7500,7500], 244000 = [18500,18500,18500,18500,18500,17000,16000,14500,13000,12000,10500,9500,8500,8500,8500], 245000 = [18500,18500,18500,18500,18500,17000,16000,14500,13500,12000,10500,9500,9500,9500,9500], 246000 = [18500,18500,18500,18500,18500,17000,16000,14500,13500,12000,10500,10500,10500,10500,10500], 247000 = [18500,18500,18500,18500,18500,17000,16000,14500,13500,12000,11500,11500,11500,11500,11500], 248000 = [18500,18500,18500,18500,18500,17000,16000,14500,13500,12500,12500,12500,12500,12500,12500], 249000 = [18500,18500,18500,18500,18500,17000,16000,14500,13500,13500,13500,13500,13500,13500,13500], 250000 = [18500,18500,18500,18500,18500,17500,16000,14500,14500,14500,14500,14500,14500,14500,14500], 251000 = [18500,18500,18500,18500,18500,17500,16000,15500,15500,15500,15500,15500,15500,15500,15500], 252000 = [18500,18500,18500,18500,18500,17500,16500,16500,16500,16500,16500,16500,16500,16500,16500], 253000 = [18500,18500,18500,18500,18500,17500,17500,17500,17500,17500,17500,17500,17500,17500,17500], 254000 = [18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500], 255000 = [18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500], 256000 = [18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500], 257000 = [18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500], 258000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 259000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 260000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 261000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 262000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 263000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 264000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 265000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 266000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 267000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 268000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 269000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 270000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 271000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 272000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 273000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 274000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 275000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 276000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 277000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 278000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 279000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 280000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 281000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 282000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 283000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 284000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 285000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 286000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 287000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 288000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 289000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 290000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000]},
+ {47000 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 48000 = [1000,1000,1000,1000,1000,1000,1000,1000,1000,1000,1000,500,0,0,0], 49000 = [2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,500,0,0,0], 50000 = [3000,3000,3000,3000,3000,3000,3000,3000,3000,3000,2000,500,0,0,0], 51000 = [4000,4000,4000,4000,4000,4000,4000,4000,4000,3500,2000,500,0,0,0], 52000 = [5000,5000,5000,5000,5000,5000,5000,5000,5000,3500,2000,500,0,0,0], 53000 = [6000,6000,6000,6000,6000,6000,6000,6000,5000,3500,2000,1000,0,0,0], 54000 = [7000,7000,7000,7000,7000,7000,7000,6500,5000,3500,2000,1000,0,0,0], 55000 = [8000,8000,8000,8000,8000,8000,8000,6500,5000,3500,2500,1000,0,0,0], 56000 = [9000,9000,9000,9000,9000,9000,9000,6500,5000,3500,2500,1000,0,0,0], 57000 = [10000,10000,10000,10000,10000,9000,9000,6500,5000,3500,2500,1000,0,0,0], 58000 = [11000,11000,11000,11000,10500,9000,9000,6500,5000,4000,2500,1000,0,0,0], 59000 = [12000,12000,12000,12000,10500,9000,9000,6500,5000,4000,2500,1000,0,0,0], 60000 = [13000,13000,13000,12000,10500,9500,9500,6500,5500,4000,2500,1000,0,0,0], 61000 = [14000,14000,13500,12000,10500,9500,9500,6500,5500,4000,2500,1500,0,0,0], 62000 = [15000,14500,13500,12000,10500,9500,9500,6500,5500,4000,2500,1500,0,0,0], 63000 = [16000,15000,13500,12000,11000,9500,9500,7000,5500,4000,2500,1500,0,0,0], 64000 = [16000,15000,13500,12000,11000,9500,9500,7000,5500,4000,3000,1500,0,0,0], 65000 = [16000,15000,13500,12000,11000,9500,9500,7000,5500,4000,3000,1500,0,0,0], 66000 = [16500,15000,13500,12500,11000,9500,9500,7000,5500,4500,3000,1500,0,0,0], 67000 = [16500,15000,13500,12500,11000,9500,9500,7000,5500,4500,3000,1500,0,0,0], 68000 = [16500,15000,14000,12500,11000,9500,9500,7000,5500,4500,3000,1500,500,0,0], 69000 = [16500,15000,14000,12500,11000,10000,10000,7000,6000,4500,3000,1500,500,0,0], 70000 = [16500,15000,14000,12500,11000,10000,10000,7000,6000,4500,3000,1500,500,0,0], 71000 = [16500,15500,14000,12500,11000,10000,10000,7000,6000,4500,3000,2000,500,0,0], 72000 = [16500,15500,14000,12500,11500,10000,10000,7500,6000,4500,3000,2000,500,0,0], 73000 = [16500,15500,14000,12500,11500,10000,10000,7500,6000,4500,3500,2000,500,0,0], 74000 = [17000,15500,14000,12500,11500,10000,10000,7500,6000,4500,3500,2000,500,0,0], 75000 = [17000,15500,14000,13000,11500,10000,10000,7500,6000,4500,3500,2000,500,0,0], 76000 = [17000,15500,14000,13000,11500,10000,10000,7500,6000,5000,3500,2000,500,0,0], 77000 = [17000,15500,14000,13000,11500,10000,10000,7500,6000,5000,3500,2000,500,0,0], 78000 = [17000,15500,14500,13000,11500,10500,10500,7500,6000,5000,3500,2000,1000,0,0], 79000 = [17000,15500,14500,13000,11500,10500,10500,7500,6500,5000,3500,2000,1000,0,0], 80000 = [17000,16000,14500,13000,11500,10500,10500,7500,6500,5000,3500,2500,1000,0,0], 81000 = [17000,16000,14500,13000,12000,10500,9000,7500,6500,5000,3500,2500,1000,0,0], 82000 = [17000,16000,14500,13000,12000,10500,9000,8000,6500,5000,3500,2500,1000,0,0], 83000 = [17500,16000,14500,13000,12000,10500,9000,8000,6500,5000,4000,2500,1000,0,0], 84000 = [17500,16000,14500,13500,12000,10500,9000,8000,6500,5000,4000,2500,1000,0,0], 85000 = [17500,16000,14500,13500,12000,10500,9500,8000,6500,5500,4000,2500,1000,0,0], 86000 = [17500,16000,14500,13500,12000,10500,9500,8000,6500,5500,4000,2500,1000,0,0], 87000 = [17500,16000,15000,13500,12000,10500,9500,8000,6500,5500,4000,2500,1500,0,0], 88000 = [17500,16000,15000,13500,12000,11000,9500,8000,7000,5500,4000,2500,1500,0,0], 89000 = [17500,16000,15000,13500,12000,11000,9500,8000,7000,5500,4000,2500,1500,0,0], 90000 = [17500,16500,15000,13500,12000,11000,9500,8000,7000,5500,4000,3000,1500,0,0], 91000 = [17500,16500,15000,13500,12500,11000,9500,8500,7000,5500,4000,3000,1500,0,0], 92000 = [17500,16500,15000,13500,12500,11000,9500,8500,7000,5500,4500,3000,1500,0,0], 93000 = [18000,16500,15000,13500,12500,11000,9500,8500,7000,5500,4500,3000,1500,0,0], 94000 = [18000,16500,15000,14000,12500,11000,10000,8500,7000,5500,4500,3000,1500,0,0], 95000 = [18000,16500,15000,14000,12500,11000,10000,8500,7000,6000,4500,3000,1500,0,0], 96000 = [18000,16500,15000,14000,12500,11000,10000,8500,7000,6000,4500,3000,1500,500,0], 97000 = [18000,16500,15500,14000,12500,11500,10000,8500,7000,6000,4500,3000,1500,500,0], 98000 = [18000,16500,15500,14000,12500,11500,10000,8500,7000,6000,4500,3000,2000,500,0], 99000 = [18000,16500,15500,14000,12500,11500,10000,8500,7500,6000,4500,3000,2000,500,0], 100000 = [18000,17000,15500,14000,12500,11500,10000,8500,7500,6000,4500,3000,2000,500,0], 101000 = [18000,17000,15500,14000,13000,11500,10000,8500,7500,6000,4500,3500,2000,500,0], 102000 = [18000,17000,15500,14000,13000,11500,10000,9000,7500,6000,4500,3500,2000,500,0], 103000 = [18500,17000,15500,14000,13000,11500,10000,9000,7500,6000,4500,3500,2000,500,0], 104000 = [18500,17000,15500,14500,13000,11500,10000,9000,7500,6000,5000,3500,2000,500,0], 105000 = [18500,17000,15500,14500,13000,11500,10500,9000,7500,6000,5000,3500,2000,500,0], 106000 = [18500,17000,15500,14500,13000,11500,10500,9000,7500,6000,5000,3500,2000,500,0], 107000 = [18500,17000,16000,14500,13000,11500,10500,9000,7500,6500,5000,3500,2000,500,0], 108000 = [18500,17000,16000,14500,13000,11500,10500,9000,7500,6500,5000,3500,2000,500,0], 109000 = [18500,17000,16000,14500,13000,12000,10500,9000,7500,6500,5000,3500,2000,500,0], 110000 = [18500,17500,16000,14500,13000,12000,10500,9000,7500,6500,5000,3500,2000,1000,0], 111000 = [18500,17500,16000,14500,13000,12000,10500,9000,8000,6500,5000,3500,2000,1000,0], 112000 = [18500,17500,16000,14500,13500,12000,10500,9000,8000,6500,5000,3500,2500,1000,0], 113000 = [18500,17500,16000,14500,13500,12000,10500,9000,8000,6500,5000,3500,2500,1000,0], 114000 = [18500,17500,16000,14500,13500,12000,10500,9000,8000,6500,5000,3500,2500,1000,0], 115000 = [18500,17500,16000,14500,13500,12000,10500,9500,8000,6500,5000,4000,2500,1000,0], 116000 = [18500,17500,16000,15000,13500,12000,10500,9500,8000,6500,5000,4000,2500,1000,0], 117000 = [18500,17500,16000,15000,13500,12000,10500,9500,8000,6500,5000,4000,2500,1000,0], 118000 = [18500,17500,16000,15000,13500,12000,10500,9500,8000,6500,5000,4000,2500,1000,0], 119000 = [18500,17500,16500,15000,13500,12000,11000,9500,8000,6500,5500,4000,2500,1000,0], 120000 = [18500,17500,16500,15000,13500,12000,11000,9500,8000,6500,5500,4000,2500,1000,0], 121000 = [18500,17500,16500,15000,13500,12000,11000,9500,8000,6500,5500,4000,2500,1000,0], 122000 = [18500,17500,16500,15000,13500,12000,11000,9500,8000,7000,5500,4000,2500,1000,0], 123000 = [18500,17500,16500,15000,13500,12500,11000,9500,8000,7000,5500,4000,2500,1000,0], 124000 = [18500,18000,16500,15000,13500,12500,11000,9500,8000,7000,5500,4000,2500,1500,0], 125000 = [18500,18000,16500,15000,13500,12500,11000,9500,8000,7000,5500,4000,2500,1500,0], 126000 = [18500,18000,16500,15000,13500,12500,11000,9500,8500,7000,5500,4000,2500,1500,0], 127000 = [18500,18000,16500,15000,14000,12500,11000,9500,8500,7000,5500,4000,2500,1500,0], 128000 = [18500,18000,16500,15000,14000,12500,11000,9500,8500,7000,5500,4000,3000,1500,0], 129000 = [18500,18000,16500,15000,14000,12500,11000,9500,8500,7000,5500,4000,3000,1500,0], 130000 = [18500,18000,16500,15000,14000,12500,11000,10000,8500,7000,5500,4000,3000,1500,0], 131000 = [18500,18000,16500,15500,14000,12500,11000,10000,8500,7000,5500,4500,3000,1500,0], 132000 = [18500,18000,16500,15500,14000,12500,11000,10000,8500,7000,5500,4500,3000,1500,0], 133000 = [18500,18000,16500,15500,14000,12500,11000,10000,8500,7000,5500,4500,3000,1500,0], 134000 = [18500,18000,16500,15500,14000,12500,11000,10000,8500,7000,5500,4500,3000,1500,0], 135000 = [18500,18000,17000,15500,14000,12500,11500,10000,8500,7000,5500,4500,3000,1500,0], 136000 = [18500,18000,17000,15500,14000,12500,11500,10000,8500,7000,6000,4500,3000,1500,0], 137000 = [18500,18000,17000,15500,14000,12500,11500,10000,8500,7000,6000,4500,3000,1500,0], 138000 = [18500,18000,17000,15500,14000,12500,11500,10000,8500,7000,6000,4500,3000,1500,0], 139000 = [18500,18500,17000,15500,14000,13000,11500,10000,8500,7000,6000,4500,3000,1500,0], 140000 = [18500,18500,17000,15500,14000,13000,11500,10000,8500,7000,6000,4500,3000,1500,0], 141000 = [18500,18500,17000,15500,14000,13000,11500,10000,8500,7500,6000,4500,3000,1500,0], 142000 = [18500,18500,17000,15500,14000,13000,11500,10000,8500,7500,6000,4500,3000,1500,0], 143000 = [18500,18500,17000,15500,14000,13000,11500,10000,8500,7500,6000,4500,3000,1500,0], 144000 = [18500,18500,17000,15500,14500,13000,11500,10000,8500,7500,6000,4500,3000,1500,0], 145000 = [18500,18500,17000,15500,14500,13000,11500,10000,8500,7500,6000,4500,3000,1500,0], 146000 = [18500,18500,17000,15500,14500,13000,11500,10000,8500,7500,6000,4500,3000,1500,500], 147000 = [18500,18500,17000,15500,14500,13000,11500,10000,8500,7500,6000,4500,3000,1500,500], 148000 = [18500,18500,17000,15500,14500,13000,11500,10000,9000,7500,6000,4500,3000,1500,500], 149000 = [18500,18500,17000,15500,14500,13000,11500,10000,9000,7500,6000,4500,3000,1500,500], 150000 = [18500,18500,17000,16000,14500,13000,11500,10000,9000,7500,6000,4500,3000,2000,500], 151000 = [18500,18500,17000,16000,14500,13000,11500,10000,9000,7500,6000,4500,14500,2000,500], 152000 = [18500,18500,17000,16000,14500,13000,11500,10000,9000,7500,6000,4500,3000,2000,500], 153000 = [18500,18500,17000,16000,14500,13000,11500,10000,9000,7500,6000,4500,3000,2000,500], 154000 = [18500,18500,17000,16000,14500,13000,11500,10500,9000,7500,6000,4500,3000,2000,500], 155000 = [18500,18500,17000,16000,14500,13000,11500,10500,9000,7500,6000,4500,3500,2000,500], 156000 = [18500,18500,17500,16000,14500,13000,11500,10500,9000,7500,6000,4500,3500,2000,500], 157000 = [18500,18500,17500,16000,14500,13000,11500,11500,9000,7500,6000,4500,3500,2000,500], 158000 = [18500,18500,17500,16000,14500,13000,11500,11500,9000,7500,6000,4500,3500,2000,500], 159000 = [18500,18500,17500,16000,14500,13000,11500,11500,9000,7500,6000,4500,3500,2000,500], 160000 = [18500,18500,17500,16000,14500,13000,11500,11500,9000,7500,6000,4500,3500,2000,500], 161000 = [18500,18500,17500,16000,14500,13000,12000,12000,9000,7500,6000,4500,3500,2000,500], 162000 = [18500,18500,17500,16000,14500,13000,12000,12000,9000,7500,6000,4500,3500,2000,1000], 163000 = [18500,18500,17500,16000,14500,13000,12000,12000,9000,7500,6000,4500,3500,2000,1000], 164000 = [18500,18500,17500,16000,14500,13000,12000,12000,9000,7500,6000,5000,3500,2500,1000], 165000 = [18500,18500,17500,16000,14500,13000,12000,12000,9000,7500,6000,5000,3500,2500,1000], 166000 = [18500,18500,17500,16000,14500,13000,12000,12000,9000,7500,6500,5000,4000,2500,1000], 167000 = [18500,18500,17500,16000,14500,13000,12000,12000,9000,7500,6500,5000,4000,2500,1500], 168000 = [18500,18500,17500,16000,14500,13000,12000,12000,9000,8000,6500,5500,4000,3000,1500], 169000 = [18500,18500,17500,16000,14500,13000,12000,12000,9000,8000,6500,5500,4000,3000,1500], 170000 = [18500,18500,17500,16000,14500,13000,12000,12000,9500,8000,7000,5500,4500,3000,1500], 171000 = [18500,18500,17500,16000,14500,13000,12000,12000,9500,8000,7000,5500,4500,3000,2000], 172000 = [18500,18500,17500,16000,14500,13500,12000,12000,9500,8500,7000,5500,4500,3000,2000], 173000 = [18500,18500,17500,16000,14500,13500,12000,12000,9500,8500,7000,6000,4500,3500,2000], 174000 = [18500,18500,17500,16000,15000,13500,12500,12500,10000,8500,7000,6000,4500,3500,2000], 175000 = [18500,18500,17500,16000,15000,13500,12500,12500,10000,8500,7500,6000,5000,3500,2000], 176000 = [18500,18500,17500,16500,15000,14000,12500,12500,10000,8500,7500,6000,5000,3500,2500], 177000 = [18500,18500,17500,16500,15000,14000,12500,12500,10000,9000,7500,6500,5000,3500,2500], 178000 = [18500,18500,18000,16500,15500,14000,12500,12500,10000,9000,7500,6500,5000,4000,2500], 179000 = [18500,18500,18000,16500,15500,14000,13000,13000,10500,9000,8000,6500,5000,4000,2500], 180000 = [18500,18500,18000,16500,15500,14000,13000,13000,10500,9000,8000,6500,5500,4000,2500], 181000 = [18500,18500,18000,17000,15500,14500,13000,13000,10500,9000,8000,6500,5500,4000,3000], 182000 = [18500,18500,18000,17000,15500,14500,13000,13000,10500,9500,8000,7000,5500,4000,3000], 183000 = [18500,18500,18500,17000,16000,14500,13500,13500,10500,9500,8000,7000,5500,4500,3000], 184000 = [18500,18500,18500,17000,16000,14500,13500,13500,11000,9500,8500,7000,5500,4500,3000], 185000 = [18500,18500,18500,17500,16000,14500,13500,13500,11000,9500,8500,7000,6000,4500,3500], 186000 = [18500,18500,18500,17500,16000,15000,13500,13500,11000,10000,8500,7000,6000,4500,3500], 187000 = [18500,18500,18500,17500,16000,15000,13500,13500,11000,10000,8500,7500,6000,5000,3500], 188000 = [18500,18500,18500,17500,16500,15000,14000,14000,11000,10000,8500,7500,6000,5000,3500], 189000 = [18500,18500,18500,17500,16500,15000,14000,14000,11500,10000,9000,7500,6000,5000,3500], 190000 = [18500,18500,18500,18000,16500,15500,14000,14000,11500,10000,9000,7500,6500,5000,4000], 191000 = [18500,18500,18500,18000,16500,15500,14000,14000,11500,10500,9000,7500,6500,5000,4000], 192000 = [18500,18500,18500,18000,16500,15500,14000,14000,11500,10500,9000,8000,6500,5500,4000], 193000 = [18500,18500,18500,18000,17000,15500,14500,14500,11500,10500,9000,8000,6500,5500,4000], 194000 = [18500,18500,18500,18000,17000,15500,14500,14500,12000,10500,9500,8000,6500,5500,4000], 195000 = [18500,18500,18500,18500,17000,16000,14500,13000,12000,10500,9500,8000,7000,5500,4500], 196000 = [18500,18500,18500,18500,17000,16000,14500,13500,12000,11000,9500,8000,7000,5500,4500], 197000 = [18500,18500,18500,18500,17000,16000,14500,13500,12000,11000,9500,8500,7000,6000,4500], 198000 = [18500,18500,18500,18500,17500,16000,15000,13500,12000,11000,9500,8500,7000,6000,4500], 199000 = [18500,18500,18500,18500,17500,16000,15000,13500,12500,11000,10000,8500,7000,6000,4500], 200000 = [18500,18500,18500,18500,17500,16500,15000,13500,12500,11000,10000,8500,7500,6000,5000], 201000 = [18500,18500,18500,18500,17500,16500,15000,14000,12500,11500,10000,8500,7500,6000,5000], 202000 = [18500,18500,18500,18500,17500,16500,15000,14000,12500,11500,10000,9000,7500,6500,5000], 203000 = [18500,18500,18500,18500,18000,16500,15500,14000,12500,11500,10000,9000,7500,6500,5000], 204000 = [18500,18500,18500,18500,18000,16500,15500,14000,13000,11500,10500,9000,7500,6500,5000], 205000 = [18500,18500,18500,18500,18000,17000,15500,14000,13000,11500,10500,9000,8000,6500,5500], 206000 = [18500,18500,18500,18500,18000,17000,15500,14500,13000,12000,10500,9000,8000,6500,5500], 207000 = [18500,18500,18500,18500,18000,17000,15500,14500,13000,12000,10500,9500,8000,7000,5500], 208000 = [18500,18500,18500,18500,18500,17000,16000,14500,13000,12000,10500,9500,8000,7000,5500], 209000 = [18500,18500,18500,18500,18500,17000,16000,14500,13500,12000,11000,9500,8000,7000,5500], 210000 = [18500,18500,18500,18500,18500,17500,16000,14500,13500,12000,11000,9500,8500,7000,6000], 211000 = [18500,18500,18500,18500,18500,17500,16000,15000,13500,12500,11000,9500,8500,7000,6000], 212000 = [18500,18500,18500,18500,18500,17500,16000,15000,13500,12500,11000,10000,8500,7500,6000], 213000 = [18500,18500,18500,18500,18500,17500,16500,15000,13500,12500,11000,10000,6000,7500,6000], 214000 = [18500,18500,18500,18500,18500,17500,16500,15000,14000,12500,11500,10000,9000,7500,6000], 215000 = [18500,18500,18500,18500,18500,18000,16500,15000,14000,12500,11500,10000,9000,7500,6500], 216000 = [18500,18500,18500,18500,18500,18000,16500,15500,14000,13000,11500,10000,9000,7500,6500], 217000 = [18500,18500,18500,18500,18500,18000,16500,15500,14000,13000,11500,10500,9000,8000,6500], 218000 = [18500,18500,18500,18500,18500,18000,17000,15500,14500,13000,11500,10500,9000,8000,6500], 219000 = [18500,18500,18500,18500,18500,18000,17000,15500,14500,13000,12000,10500,9500,8000,7000], 220000 = [18500,18500,18500,18500,18500,18500,17000,15500,14500,13000,12000,10500,9500,8000,7000], 221000 = [18500,18500,18500,18500,18500,18500,17000,16000,14500,13500,12000,11000,9500,8500,7000], 222000 = [18500,18500,18500,18500,18500,18500,17000,16000,14500,13500,12000,11000,9500,8500,7000], 223000 = [18500,18500,18500,18500,18500,18500,17500,16000,15000,13500,12500,11000,10000,8500,7500], 224000 = [18500,18500,18500,18500,18500,18500,17500,16000,15000,13500,12500,11000,10000,8500,7000], 225000 = [18500,18500,18500,18500,18500,18500,17500,16500,15000,14000,12500,11000,10000,8500,6500], 226000 = [18500,18500,18500,18500,18500,18500,17500,16500,15000,14000,12500,11500,10000,8000,6000], 227000 = [18500,18500,18500,18500,18500,18500,18000,16500,15000,14000,12500,11500,9500,7500,5500], 228000 = [18500,18500,18500,18500,18500,18500,18000,16500,15500,14000,13000,11000,9000,7000,5000], 229000 = [18500,18500,18500,18500,18500,18500,18000,16500,15500,14000,13000,10500,8500,6500,5000], 230000 = [18500,18500,18500,18500,18500,18500,18000,17000,15500,14500,12500,10000,8000,6000,5000], 231000 = [18500,18500,18500,18500,18500,18500,18000,17000,15500,14000,12000,9500,7500,6000,5000], 232000 = [18500,18500,18500,18500,18500,18500,18500,17000,15500,13500,11500,9000,7500,6500,5000], 233000 = [18500,18500,18500,18500,18500,18500,18500,17000,15000,13000,11000,9000,7500,6500,5000], 234000 = [18500,18500,18500,18500,18500,18500,18500,16500,14500,12500,10500,9000,7500,6500,5000], 235000 = [18500,18500,18500,18500,18500,18500,18500,16000,14000,12000,10500,9000,7500,6500,5000], 236000 = [18500,18500,18500,18500,18500,18500,18000,15500,13500,12000,10500,9000,8000,6500,5000], 237000 = [18500,18500,18500,18500,18500,18500,17500,15000,13500,12000,10500,9000,8000,6500,5000], 238000 = [18500,18500,18500,18500,18500,18500,17000,14500,13500,12000,10500,9000,8000,6500,5000], 239000 = [18500,18500,18500,18500,18500,18500,16500,14500,13500,12000,10500,9000,8000,6500,5000], 240000 = [18500,18500,18500,18500,18500,18000,16000,15000,13500,12000,10500,9000,8000,6500,5000], 241000 = [18500,18500,18500,18500,18500,17500,16000,15000,13500,12000,10500,9500,8000,6500,5500], 242000 = [18500,18500,18500,18500,18500,17500,16000,15000,13500,12000,10500,9500,8000,6500,6500], 243000 = [18500,18500,18500,18500,18500,17500,16000,15000,13500,12000,10500,9500,8000,7500,7500], 244000 = [18500,18500,18500,18500,18500,17500,16000,15000,13500,12000,10500,9500,8500,8500,8500], 245000 = [18500,18500,18500,18500,18500,17500,16500,15000,13500,12000,11000,9500,9500,9500,9500], 246000 = [18500,18500,18500,18500,18500,17500,16500,15000,13500,12000,11000,10500,10500,10500,10500], 247000 = [18500,18500,18500,18500,18500,17500,16500,15000,13500,12000,11500,11500,11500,11500,11500], 248000 = [18500,18500,18500,18500,18500,17500,16500,15000,13500,12500,12500,12500,12500,12500,12500], 249000 = [18500,18500,18500,18500,18500,18000,16500,15000,13500,13500,13500,13500,13500,13500,13500], 250000 = [18500,18500,18500,18500,18500,18000,16500,15000,14500,14500,14500,14500,14500,14500,14500], 251000 = [18500,18500,18500,18500,18500,18000,16500,15500,15500,15500,15500,15500,15500,15500,15500], 252000 = [18500,18500,18500,18500,18500,18000,16500,16500,16500,16500,16500,16500,16500,16500,16500], 253000 = [18500,18500,18500,18500,18500,18000,17500,17500,17500,17500,17500,17500,17500,17500,17500], 254000 = [18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500], 255000 = [18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500], 256000 = [18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500], 257000 = [18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500], 258000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 259000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 260000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 261000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 262000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 263000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 264000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 265000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 266000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 267000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 268000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 269000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 270000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 271000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 272000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 273000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 274000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 275000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 276000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 277000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 278000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 279000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 280000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 281000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 282000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 283000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 284000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 285000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 286000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 287000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 288000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 289000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 290000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000]},
+ {47000 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 48000 = [1000,1000,1000,1000,1000,1000,1000,1000,1000,1000,1000,500,0,0,0], 49000 = [2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,500,0,0,0], 50000 = [3000,3000,3000,3000,3000,3000,3000,3000,3000,3000,2000,500,0,0,0], 51000 = [4000,4000,4000,4000,4000,4000,4000,4000,4000,3500,2000,500,0,0,0], 52000 = [5000,5000,5000,5000,5000,5000,5000,5000,5000,3500,2000,500,0,0,0], 53000 = [6000,6000,6000,6000,6000,6000,6000,6000,5000,3500,2000,500,0,0,0], 54000 = [7000,7000,7000,7000,7000,7000,7000,6500,5000,3500,2500,1000,0,0,0], 55000 = [8000,8000,8000,8000,8000,8000,8000,6500,5000,4000,2500,1000,0,0,0], 56000 = [9000,9000,9000,9000,9000,9000,8000,6500,5500,4000,2500,1000,0,0,0], 57000 = [10000,10000,10000,10000,10000,9500,8000,7000,5500,4000,2500,1000,0,0,0], 58000 = [11000,11000,11000,11000,11000,9500,8000,7000,5500,4000,2500,1000,0,0,0], 59000 = [12000,12000,12000,12000,11000,9500,8500,7000,5500,4000,2500,1000,0,0,0], 60000 = [13000,13000,13000,12500,11000,10000,8500,7000,5500,4000,2500,1000,0,0,0], 61000 = [14000,14000,14000,12500,11500,10000,8500,7000,5500,4000,2500,1000,0,0,0], 62000 = [15000,15000,14000,13000,11500,10000,8500,7000,5500,4000,2500,1500,0,0,0], 63000 = [16000,15500,14000,13000,11500,10000,8500,7000,5500,4000,3000,1500,0,0,0], 64000 = [17000,15500,14500,13000,11500,10000,8500,7000,5500,4500,3000,1500,0,0,0], 65000 = [17000,16000,14500,13000,11500,10000,8500,7000,6000,4500,3000,1500,0,0,0], 66000 = [17500,16000,14500,13000,11500,10000,8500,7500,6000,4500,3000,1500,0,0,0], 67000 = [17500,16000,14500,13000,11500,10000,9000,7500,6000,4500,3000,1500,0,0,0], 68000 = [17500,16000,14500,13000,11500,10000,9000,7500,6000,4500,3000,1500,0,0,0], 69000 = [17500,16000,14500,13000,11500,10500,9000,7500,6000,4500,3000,1500,0,0,0], 70000 = [17500,16000,14500,13000,12000,10500,9000,7500,6000,4500,3000,1500,0,0,0], 71000 = [17500,16000,14500,13500,12000,10500,9000,7500,6000,4500,3000,1500,500,0,0], 72000 = [17500,16000,15000,13500,12000,10500,9000,7500,6000,4500,3500,2000,500,0,0], 73000 = [17500,16500,15000,13500,12000,10500,9000,7500,6000,5000,3500,2000,500,0,0], 74000 = [17500,16500,15000,13500,12000,10500,9000,7500,6500,5000,3500,2000,500,0,0], 75000 = [18000,16500,15000,13500,12000,10500,9000,8000,6500,5000,3500,2000,500,0,0], 76000 = [18000,16500,15000,13500,12000,10500,9000,8000,6500,5000,3500,2000,500,0,0], 77000 = [18000,16500,15000,13500,12000,10500,9500,8000,6500,5000,3500,2000,500,0,0], 78000 = [18000,16500,15000,13500,12000,11000,9500,8000,6500,5000,3500,2000,500,0,0], 79000 = [18000,16500,15000,13500,12500,11000,9500,8000,6500,5000,3500,2000,500,0,0], 80000 = [18000,16500,15000,14000,12500,11000,9500,8000,6500,5000,3500,2000,500,0,0], 81000 = [18000,16500,15000,14000,12500,11000,9500,8000,6500,5000,3500,2500,1000,0,0], 82000 = [18000,16500,15500,14000,12500,11000,9500,8000,6500,5000,4000,2500,1000,0,0], 83000 = [18000,17000,15500,14000,12500,11000,9500,8000,6500,5500,4000,2500,1000,0,0], 84000 = [18500,17000,15500,14000,12500,11000,9500,8000,7000,5500,4000,2500,1000,0,0], 85000 = [18500,17000,15500,14000,12500,11000,9500,8500,7000,5500,4000,2500,1000,0,0], 86000 = [18500,17000,15500,14000,12500,11000,10000,8500,7000,5500,4000,2500,1000,0,0], 87000 = [18500,17000,15500,14000,12500,11000,10000,8500,7000,5500,4000,2500,1000,0,0], 88000 = [18500,17000,15500,14000,12500,11500,10000,8500,7000,5500,4000,2500,1000,0,0], 89000 = [18500,17000,15500,14000,13000,11500,10000,8500,7000,5500,4000,2500,1000,0,0], 90000 = [18500,17000,15500,14500,13000,11500,10000,8500,7000,5500,4000,2500,1500,0,0], 91000 = [18500,17000,16000,14500,13000,11500,10000,8500,7000,5500,4000,3000,1500,0,0], 92000 = [18500,17500,16000,14500,13000,11500,10000,8500,7000,5500,4500,3000,1500,0,0], 93000 = [18500,17500,16000,14500,13000,11500,10000,8500,7000,6000,4500,3000,1500,0,0], 94000 = [18500,17500,16000,14500,13000,11500,10000,8500,7500,6000,4500,3000,1500,0,0], 95000 = [18500,17500,16000,14500,13000,11500,10000,9000,7500,6000,4500,3000,1500,0,0], 96000 = [18500,17500,16000,14500,13000,11500,10500,9000,7500,6000,4500,3000,1500,0,0], 97000 = [18500,17500,16000,14500,13000,12000,10500,9000,7500,6000,4500,3000,1500,0,0], 98000 = [18500,17500,16000,14500,13500,12000,10500,9000,7500,6000,4500,3000,1500,0,0], 99000 = [18500,17500,16000,14500,13500,12000,10500,9000,7500,6000,4500,3000,1500,0,0], 100000 = [18500,17500,16000,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0,0], 101000 = [18500,17500,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0,0], 102000 = [18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3500,2000,500,0], 103000 = [18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,5000,3500,2000,500,0], 104000 = [18500,18000,16500,15000,13500,12000,10500,9000,7500,6500,5000,3500,2000,500,0], 105000 = [18500,18000,16500,15000,13500,12000,10500,9000,8000,6500,5000,3500,2000,500,0], 106000 = [18500,18000,16500,15000,13500,12000,10500,9500,8000,6500,5000,3500,2000,500,0], 107000 = [18500,18000,16500,15000,13500,12000,11000,9500,8000,6500,5000,3500,2000,500,0], 108000 = [18500,18000,16500,15000,13500,12500,11000,9500,8000,6500,5000,3500,2000,500,0], 109000 = [18500,18000,16500,15000,14000,12500,11000,9500,8000,6500,5000,3500,2000,500,0], 110000 = [18500,18000,16500,15500,14000,12500,11000,9500,8000,6500,5000,3500,2000,500,0], 111000 = [18500,18000,16500,15500,14000,12500,11000,9500,8000,6500,5000,3500,2000,500,0], 112000 = [18500,18000,17000,15500,14000,12500,11000,9500,8000,6500,5000,3500,2000,500,0], 113000 = [18500,18500,17000,15500,14000,12500,11000,9500,8000,6500,5000,3500,2000,500,0], 114000 = [18500,18500,17000,15500,14000,12500,11000,9500,8000,6500,5000,3500,2000,500,0], 115000 = [18500,18500,17000,15500,14000,12500,11000,9500,8000,6500,5000,3500,2000,500,0], 116000 = [18500,18500,17000,15500,14000,12500,11000,9500,8000,6500,5000,3500,2500,1000,0], 117000 = [18500,18500,17000,15500,14000,12500,11000,9500,8000,6500,5500,4000,2500,1000,0], 118000 = [18500,18500,17000,15500,14000,12500,11000,9500,8000,7000,5500,4000,2500,1000,0], 119000 = [18500,18500,17000,15500,14000,12500,11000,9500,8500,7000,5500,4000,2500,1000,0], 120000 = [18500,18500,17000,15500,14000,12500,11000,9500,8500,7000,5500,4000,2500,1000,0], 121000 = [18500,18500,17000,15500,14000,12500,11000,10000,8500,7000,5500,4000,2500,1000,0], 122000 = [18500,18500,17000,15500,14000,12500,11500,10000,8500,7000,5500,4000,2500,1000,0], 123000 = [18500,18500,17000,15500,14000,13000,11500,10000,8500,7000,5500,4000,2500,1000,0], 124000 = [18500,18500,17000,15500,14500,13000,11500,10000,8500,7000,5500,4000,2500,1000,0], 125000 = [18500,18500,17000,16000,14500,13000,11500,10000,8500,7000,5500,4000,2500,1000,0], 126000 = [18500,18500,17500,16000,14500,13000,11500,10000,8500,7000,5500,4000,2500,1000,0], 127000 = [18500,18500,17500,16000,14500,13000,11500,10000,8500,7000,5500,4000,2500,1000,0], 128000 = [18500,18500,17500,16000,14500,13000,11500,10000,8500,7000,5500,4000,2500,1000,0], 129000 = [18500,18500,17500,16000,14500,13000,11500,10000,8500,7000,5500,4000,2500,1000,0], 130000 = [18500,18500,17500,16000,14500,13000,11500,10000,8500,7000,5500,4000,2500,1000,0], 131000 = [18500,18500,17500,16000,14500,13000,11500,10000,8500,7000,5500,4000,2500,1000,0], 132000 = [18500,18500,17500,16000,14500,13000,11500,10000,8500,7000,5500,4000,2500,1000,0], 133000 = [18500,18500,17500,16000,14500,13000,11500,10000,8500,7000,5500,4500,2500,1000,0], 134000 = [18500,18500,17500,16000,14500,13000,11500,10000,8500,7000,6000,4500,3000,1000,0], 135000 = [18500,18500,17500,16000,14500,13000,11500,10000,9000,7500,6000,4500,3000,1500,0], 136000 = [18500,18500,17500,16000,14500,13000,11500,10500,9000,7500,6000,4500,3000,1500,0], 137000 = [18500,18500,17500,16000,14500,13000,12000,10500,9000,7500,6000,4500,3000,1500,0], 138000 = [18500,18500,17500,16000,14500,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 139000 = [18500,18500,17500,16000,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 140000 = [18500,18500,17500,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 141000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 142000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 143000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 144000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 145000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 146000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 147000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 148000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 149000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 150000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 151000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 152000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 153000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 154000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 155000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 156000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 157000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 158000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 159000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 160000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,500], 161000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,2000,500], 162000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,2000,500], 163000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3500,2000,500], 164000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,5000,3500,2000,500], 165000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6500,5000,3500,2000,1000], 166000 = [18500,18500,18000,16500,15500,14000,12500,10500,9000,7500,6500,5000,3500,2500,1000], 167000 = [18500,18500,18500,17000,15500,14000,12500,11000,9000,8000,6500,5000,4000,2500,1000], 168000 = [18500,18500,18500,17000,15500,14000,12500,11000,9500,8000,6500,5500,4000,2500,1000], 169000 = [18500,18500,18500,17000,15500,14000,12500,11000,9500,8000,6500,5500,4000,2500,1500], 170000 = [18500,18500,18500,17000,15500,14000,12500,11000,9500,8000,7000,5500,4000,3000,1500], 171000 = [18500,18500,18500,17000,15500,14000,12500,11000,9500,8500,7000,5500,4000,3000,1500], 172000 = [18500,18500,18500,17000,15500,14000,12500,11000,10000,8500,7000,5500,4500,3000,1500], 173000 = [18500,18500,18500,17000,15500,14000,12500,11000,10000,8500,7000,6000,4500,3000,1500], 174000 = [18500,18500,18500,17000,15500,14000,12500,11500,10000,8500,7500,6000,4500,3000,2000], 175000 = [18500,18500,18500,17000,15500,14000,13000,11500,10000,8500,7500,6000,4500,3500,2000], 176000 = [18500,18500,18500,17000,15500,14000,13000,11500,10000,9000,7500,6000,5000,3500,2000], 177000 = [18500,18500,18500,17000,15500,14500,13000,11500,10500,9000,7500,6000,5000,3500,2000], 178000 = [18500,18500,18500,17000,16000,14500,13000,12000,10500,9000,7500,6500,5000,3500,2000], 179000 = [18500,18500,18500,17500,16000,14500,13000,12000,10500,9000,8000,6500,5000,3500,2500], 180000 = [18500,18500,18500,17500,16000,14500,13500,12000,10500,9500,8000,6500,5000,4000,2500], 181000 = [18500,18500,18500,17500,16000,15000,13500,12000,10500,9500,8000,6500,5500,4000,2500], 182000 = [18500,18500,18500,17500,16500,15000,13500,12000,11000,9500,8000,7000,5500,4000,2500], 183000 = [18500,18500,18500,17500,16500,15000,13500,12500,11000,9500,8000,7000,5500,4000,2500], 184000 = [18500,18500,18500,18000,16500,15000,14000,12500,11000,9500,8500,7000,5500,4000,3000], 185000 = [18500,18500,18500,18000,16500,15000,14000,12500,11000,10000,8500,7000,5500,4500,3000], 186000 = [18500,18500,18500,18000,16500,15500,14000,12500,11000,10000,8500,7000,6000,4500,3000], 187000 = [18500,18500,18500,18000,17000,15500,14000,12500,11500,10000,8500,7500,6000,4500,3000], 188000 = [18500,18500,18500,18000,17000,15500,14000,13000,11500,10000,8500,7500,6000,4500,3500], 189000 = [18500,18500,18500,18500,17000,15500,14500,13000,11500,10000,9000,7500,6000,4500,3500], 190000 = [18500,18500,18500,18500,17000,15500,14500,13000,11500,10500,9000,7500,6000,5000,3500], 191000 = [18500,18500,18500,18500,17000,16000,14500,13000,12000,10500,9000,7500,6500,5000,3500], 192000 = [18500,18500,18500,18500,17500,16000,14500,13000,12000,10500,9000,8000,6500,5000,3500], 193000 = [18500,18500,18500,18500,17500,16000,14500,13500,12000,10500,9000,8000,6500,5000,4000], 194000 = [18500,18500,18500,18500,17500,16000,15000,13500,12000,10500,9500,8000,6500,5000,4000], 195000 = [18500,18500,18500,18500,17500,16000,15000,13500,12000,11000,9500,8000,6500,5500,4000], 196000 = [18500,18500,18500,18500,17500,16500,15000,13500,12500,11000,9500,8000,7000,5500,4000], 197000 = [18500,18500,18500,18500,18000,16500,15000,13500,12500,11000,9500,8500,7000,5500,4000], 198000 = [18500,18500,18500,18500,18000,16500,15000,14000,12500,11000,9500,8500,7000,5500,4500], 199000 = [18500,18500,18500,18500,18000,16500,15500,14000,12500,11000,10000,8500,7000,5500,4500], 200000 = [18500,18500,18500,18500,18000,17000,15500,14000,12500,11500,10000,8500,7000,6000,4500], 201000 = [18500,18500,18500,18500,18000,17000,15500,14000,13000,11500,10000,8500,7500,6000,4500], 202000 = [18500,18500,18500,18500,18500,17000,15500,14000,13000,11500,10000,9000,7500,6000,4500], 203000 = [18500,18500,18500,18500,18500,17000,15500,14500,13000,11500,10000,9000,7500,6000,5000], 204000 = [18500,18500,18500,18500,18500,17000,16000,14500,13000,11500,10500,9000,7500,6000,5000], 205000 = [18500,18500,18500,18500,18500,17500,16000,14500,13000,12000,10500,9000,7500,6500,5000], 206000 = [18500,18500,18500,18500,18500,17500,16000,14500,13500,12000,10500,9000,8000,6500,5000], 207000 = [18500,18500,18500,18500,18500,17500,16000,14500,13500,12000,10500,9500,8000,6500,5000], 208000 = [18500,18500,18500,18500,18500,17500,16000,15000,13500,12000,10500,9500,8000,6500,5500], 209000 = [18500,18500,18500,18500,18500,17500,16500,15000,13500,12000,11000,9500,8000,7000,5500], 210000 = [18500,18500,18500,18500,18500,17500,16500,15000,13500,12500,11000,9500,8000,7000,5500], 211000 = [18500,18500,18500,18500,18500,18000,16500,15000,14000,12500,11000,9500,8500,7000,5500], 212000 = [18500,18500,18500,18500,18500,18000,16500,15000,14000,12500,11000,10000,8500,7000,5500], 213000 = [18500,18500,18500,18500,18500,18000,16500,15500,14000,12500,11000,10000,8500,7000,6000], 214000 = [18500,18500,18500,18500,18500,18000,17000,15500,14000,12500,11500,10000,8500,7500,6000], 215000 = [18500,18500,18500,18500,18500,18500,17000,15500,14000,13000,11500,10000,8500,7500,6000], 216000 = [18500,18500,18500,18500,18500,18500,17000,15500,14500,13000,11500,10000,9000,7500,6000], 217000 = [18500,18500,18500,18500,18500,18500,17000,15500,14500,13000,11500,10500,9000,7500,6500], 218000 = [18500,18500,18500,18500,18500,18500,17000,16000,14500,13000,12000,10500,9000,7500,6500], 219000 = [18500,18500,18500,18500,18500,18500,17500,16000,14500,13000,12000,10500,9000,8000,6500], 220000 = [18500,18500,18500,18500,18500,18500,17500,16000,14500,13500,12000,10500,9500,8000,6500], 221000 = [18500,18500,18500,18500,18500,18500,17500,16000,15000,13500,12000,10500,9500,8000,6500], 222000 = [18500,18500,18500,18500,18500,18500,17500,16500,15000,13500,12000,11000,9500,8000,7000], 223000 = [18500,18500,18500,18500,18500,18500,17500,16500,15000,13500,12500,11000,9500,8500,7000], 224000 = [18500,18500,18500,18500,18500,18500,18000,16500,15000,14000,12500,11000,9500,8500,6500], 225000 = [18500,18500,18500,18500,18500,18500,18000,16500,15000,14000,12500,11000,10000,8000,6000], 226000 = [18500,18500,18500,18500,18500,18500,18000,16500,15500,14000,12500,11500,10000,7500,5500], 227000 = [18500,18500,18500,18500,18500,18500,18000,17000,15500,14000,13000,11500,9500,7000,4500], 228000 = [18500,18500,18500,18500,18500,18500,18500,17000,15500,14000,13000,11000,9000,6500,4500], 229000 = [18500,18500,18500,18500,18500,18500,18500,17000,15500,14500,13000,10500,8500,6000,4500], 230000 = [18500,18500,18500,18500,18500,18500,18500,17000,16000,14500,12500,10000,8000,6000,4500], 231000 = [18500,18500,18500,18500,18500,18500,18500,17500,16000,14000,12000,9500,7500,6000,4500], 232000 = [18500,18500,18500,18500,18500,18500,18500,17500,16000,13500,11500,9000,7500,6000,4500], 233000 = [18500,18500,18500,18500,18500,18500,18500,17500,15500,13000,11000,9000,7500,6000,4500], 234000 = [18500,18500,18500,18500,18500,18500,18500,17000,15000,12500,10500,9000,7500,6000,4500], 235000 = [18500,18500,18500,18500,18500,18500,18500,16500,14500,12000,10500,9000,7500,6000,4500], 236000 = [18500,18500,18500,18500,18500,18500,18500,16000,14000,12000,10500,9000,7500,6000,4500], 237000 = [18500,18500,18500,18500,18500,18500,18000,15500,13500,12000,10500,9000,7500,6000,4500], 238000 = [18500,18500,18500,18500,18500,18500,17500,15000,13500,12000,10500,9000,7500,6000,4500], 239000 = [18500,18500,18500,18500,18500,18500,17000,15000,13500,12000,10500,9000,7500,6000,4500], 240000 = [18500,18500,18500,18500,18500,18500,16500,15000,13500,12000,10500,9000,7500,6000,5000], 241000 = [18500,18500,18500,18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6500,5500], 242000 = [18500,18500,18500,18500,18500,18000,16500,15000,13500,12000,10500,9000,8000,6500,6500], 243000 = [18500,18500,18500,18500,18500,18000,16500,15000,13500,12000,10500,9500,8000,7500,7500], 244000 = [18500,18500,18500,18500,18500,18000,16500,15000,13500,12000,11000,9500,8500,8500,8500], 245000 = [18500,18500,18500,18500,18500,18000,16500,15000,13500,12500,11000,9500,9500,9500,9500], 246000 = [18500,18500,18500,18500,18500,18000,16500,15500,14000,12500,11000,10500,10500,10500,10500], 247000 = [18500,18500,18500,18500,18500,18000,17000,15500,14000,12500,11500,11500,11500,11500,11500], 248000 = [18500,18500,18500,18500,18500,18500,17000,15500,14000,12500,12500,12500,12500,12500,12500], 249000 = [18500,18500,18500,18500,18500,18500,17000,15500,14000,13500,13500,13500,13500,13500,13500], 250000 = [18500,18500,18500,18500,18500,18500,17000,15500,14500,14500,14500,14500,14500,14500,14500], 251000 = [18500,18500,18500,18500,18500,18500,17000,15500,15500,15500,15500,15500,15500,15500,15500], 252000 = [18500,18500,18500,18500,18500,18500,17000,16500,16500,16500,16500,16500,16500,16500,16500], 253000 = [18500,18500,18500,18500,18500,18500,17500,17500,17500,17500,17500,17500,17500,17500,17500], 254000 = [18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500], 255000 = [18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500], 256000 = [18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500], 257000 = [18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500], 258000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 259000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 260000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 261000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 262000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 263000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 264000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 265000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 266000 = [9500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 267000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 268000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 269000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 270000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 271000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 272000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 273000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 274000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 275000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 276000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 277000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 278000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 279000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 280000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 281000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 282000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 283000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 284000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 285000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 286000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 287000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 288000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 289000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 290000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000]}
+]
diff --git a/fbw-a380x/src/wasm/systems/a380_systems/src/payload/mod.rs b/fbw-a380x/src/wasm/systems/a380_systems/src/payload/mod.rs
index 4597bc32006..94485b6fb57 100644
--- a/fbw-a380x/src/wasm/systems/a380_systems/src/payload/mod.rs
+++ b/fbw-a380x/src/wasm/systems/a380_systems/src/payload/mod.rs
@@ -86,6 +86,7 @@ pub struct A380Payload {
impl A380Payload {
// Note: These constants reflect flight_model.cfg values and will have to be updated in sync with the configuration
pub const DEFAULT_PER_PAX_WEIGHT_KG: f64 = 84.;
+ // TODO: Move into a toml cfg
const A380_PAX: [PaxInfo<'static>; 14] = [
PaxInfo {
max_pax: 28,
@@ -179,6 +180,7 @@ impl A380Payload {
},
// PAX UPPER AFT: 18
];
+ // TODO: Move into a toml cfg
const A380_CARGO: [CargoInfo<'static>; 3] = [
CargoInfo {
max_cargo_kg: 28577.,
@@ -228,6 +230,7 @@ impl A380Payload {
Mass::new::(c.max_cargo_kg),
)
});
+ // TODO: Move into a toml cfg
let boarding_agents = [
BoardingAgent::new(
context.get_identifier("INTERACTIVE POINT OPEN:0".to_owned()),
diff --git a/fbw-common/src/systems/instruments/src/EFB/Ground/Pages/Fuel/A380_842/A380Fuel.tsx b/fbw-common/src/systems/instruments/src/EFB/Ground/Pages/Fuel/A380_842/A380Fuel.tsx
index bea9ef6eb0f..8bd264e923c 100644
--- a/fbw-common/src/systems/instruments/src/EFB/Ground/Pages/Fuel/A380_842/A380Fuel.tsx
+++ b/fbw-common/src/systems/instruments/src/EFB/Ground/Pages/Fuel/A380_842/A380Fuel.tsx
@@ -120,9 +120,10 @@ export const A380Fuel: React.FC = ({
massUnitForDisplay,
isOnGround,
}) => {
- const [TOTAL_FUEL_GALLONS] = useState(85471.7); // 323545.6 litres
- const [FUEL_GALLONS_TO_KG] = useState(3.039075693483925);
- const [TOTAL_MAX_FUEL_KG] = useState(TOTAL_FUEL_GALLONS * FUEL_GALLONS_TO_KG);
+ const TOTAL_FUEL_GALLONS = 85471.7; // 323545.6 litres
+ const FUEL_GALLONS_TO_KG = 3.039075693483925; // Check: MSFS fuel density is currently always fixed, if this changes this will need to read from the var.
+ const TOTAL_MAX_FUEL_KG = TOTAL_FUEL_GALLONS * FUEL_GALLONS_TO_KG;
+ const TOTAL_UI_MAX_FUEL_KG = 220000.0; // Temporarily while we are using WV003, so the slider will not set a value that is far above current MTOW. OFP and manual entry not affected.
const [eng1Running] = useSimVar('ENG COMBUSTION:1', 'Bool', 1_000);
const [eng2Running] = useSimVar('ENG COMBUSTION:2', 'Bool', 1_000);
@@ -235,7 +236,7 @@ export const A380Fuel: React.FC = ({
if (percent < 0.5) {
percent = 0;
}
- const fuel = Math.round(TOTAL_MAX_FUEL_KG * (percent / 100));
+ const fuel = Math.round(TOTAL_UI_MAX_FUEL_KG * (percent / 100));
updateDesiredFuel(fuel);
};
@@ -606,7 +607,7 @@ export const A380Fuel: React.FC = ({