Repository: MWATelescope/mwalib (language: python)

Issue:
Change deripple read from metafits to use DERIPPLE and not DR_FLAG as it is becoming deprecated



Discussion / hints:

Fix patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3586815..143f41a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,27 @@
 
 Changes in each release are listed below.
 
+## 1.4.0 24-Jul-2024
+
+* mwalib now exposes the calibration solution information in a metafits file (if present). When the metafits is generated by a call to the webservice, the metafits file will attempt to populate calibration solution information for the specified observation. The newest produced calibration solution from a calibrator with the same frequency channels and proximity in time will be added to the CALIBDATA hdu which is exposed by mwalib in the structs and attributes below. see: [Metafits files Wiki article](https://mwatelescope.atlassian.net/wiki/spaces/MP/pages/24969594/Metafits+files) for more information about metafits files.
+  * `RfInput` struct now contains the following new fields. If calibration solution information is not present in the metafits they will be `None`.
+    * `calib_delay` - Calibration delay in meters
+    * `calib_gains` - Calibration gains vector: 1 f32 per coarse channel. Channels are in `MetafitsContext.course_chans` order.
+  * When calibration solution information is present, some values of `calib_delay` and `calib_gains` may be NaN. Make sure you understand [how NaNs work in Rust](https://doc.rust-lang.org/std/primitive.f32.html) if you will be using these columns!
+  * Via C, if the calibration solution information is not present, the values will be NaN (or an array of NaNs in the case of `calib_gains`):
+  * `MetafitsContext` struct now contains the following new fields.
+    * `best_cal_fit_id` - Best calibration fit ID. If not present in the metafits it will be `None`; via C, the value will be 0.
+    * `best_cal_obs_id` - Best calibration observation ID. If not present in the metafits it will be `None`; via C, the value will be 0.
+    * `best_cal_code_ver` - Best calibration fit code version. If not present in the metafits it will be `None`; via C, the value will be an empty string.
+    * `best_cal_fit_timestamp` - Best calibration fit timestamp. If not present in the metafits it will be `None`; via C, the value will be an empty string.
+    * `best_cal_creator` - Best calibration fit creator. If not present in the metafits it will be `None`; via C, the value will be an empty string.
+    * `best_cal_fit_iters` - Best calibration fit iterations. If not present in the metafits it will be `None`; via C, the value will be 0.
+    * `best_cal_fit_iter_limit` - Best calibration fit iteration limit. If not present in the metafits it will be `None`; via C, the value will be 0.
+* When populating `RfInput::has_whitening_filter`, mwalib will use the Whitening_Filter key/value if present in the metafits, instead of deducing it from `cable_flavour`. If whitening_filter is not present, the existing deduction logic will be used.
+* `MetafitsContext::deripple_applied`- modified mwalib to use DERIPPLE metafits key (it still supports DR_FLAG just in case it is an old metafits)
+* When using the `Display` trait of `MetafitsContext` or the C function `mwalib_metafits_context_display`, limit the printing of fine channels - for better readability.
+* Added simple Rust example "mwalib-print-context" which does what it says on the tin.
+
 ## 1.3.3 10-May-2024
 
 * Bumped MSRV to 1.64
diff --git a/Cargo.toml b/Cargo.toml
index 8fa881e..9244a7d 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "mwalib"
-version = "1.3.3"
+version = "1.4.0"
 homepage = "https://github.com/MWATelescope/mwalib"
 repository = "https://github.com/MWATelescope/mwalib"
 readme = "README.md"
@@ -57,12 +57,16 @@ tempdir = "~0.3"
 
 [build-dependencies]
 built = "~0.7"
-cbindgen = { version = "~0.26", default_features = false }
+cbindgen = { version = "~0.26", default-features = false }
 
 [[example]]
 name = "mwalib-data-dump"
 required-features = ["examples"]
 
+[[example]]
+name = "mwalib-print-context"
+required-features = ["examples"]
+
 [[example]]
 name = "mwalib-print-corr-context"
 required-features = ["examples"]
diff --git a/examples/mwalib-print-context.rs b/examples/mwalib-print-context.rs
new file mode 100644
index 0000000..727a8a3
--- /dev/null
+++ b/examples/mwalib-print-context.rs
@@ -0,0 +1,35 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// Given an observation's data, verify that `mwalib` is functioning correctly
+// by printing an metafits context.
+
+// run this example with:
+// $ cargo run --example mwalib-print-context -- --metafits metafits_filename gpuboxfilename1 gpuboxfilename2...
+//
+// Turn on logging with: (then rerun)
+// $ export RUST_LOG=mwalib=debug
+//
+use anyhow::*;
+use clap::Parser;
+
+use mwalib::*;
+
+#[derive(Parser, Debug)]
+#[clap(name = "mwalib-print-context", author)]
+struct Opt {
+    /// The path to an observation's metafits file.
+    #[clap(short, long, parse(from_os_str))]
+    metafits: std::path::PathBuf,
+}
+
+fn main() -> Result<(), anyhow::Error> {
+    env_logger::try_init().unwrap_or(());
+    let opts = Opt::parse();
+    let context = MetafitsContext::new(opts.metafits, None)?;
+
+    println!("{}", context);
+
+    Ok(())
+}
diff --git a/examples/mwalib-print-corr-context.rs b/examples/mwalib-print-corr-context.rs
index 918f2d5..45fb016 100644
--- a/examples/mwalib-print-corr-context.rs
+++ b/examples/mwalib-print-corr-context.rs
@@ -3,10 +3,10 @@
 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 // Given an observation's data, verify that `mwalib` is functioning correctly
-// by printing an observation context.
+// by printing an correlator context.
 
 // run this example with:
-// $ cargo run --example mwalib-print-obs-context -- --metafits metafits_filename gpuboxfilename1 gpuboxfilename2...
+// $ cargo run --example mwalib-print-corr-context -- --metafits metafits_filename gpuboxfilename1 gpuboxfilename2...
 //
 // Turn on logging with: (then rerun)
 // $ export RUST_LOG=mwalib=debug
@@ -17,7 +17,7 @@ use clap::Parser;
 use mwalib::*;
 
 #[derive(Parser, Debug)]
-#[clap(name = "mwalib-print-obs-context", author)]
+#[clap(name = "mwalib-print-corr-context", author)]
 struct Opt {
     /// The path to an observation's metafits file.
     #[clap(short, long, parse(from_os_str))]
diff --git a/src/ffi/mod.rs b/src/ffi/mod.rs
index 047219e..f95f902 100644
--- a/src/ffi/mod.rs
+++ b/src/ffi/mod.rs
@@ -7,7 +7,7 @@
 use crate::rfinput::ReceiverType;
 use crate::*;
 use gpubox_files::GpuboxError;
-use libc::{c_schar, c_char, c_double, c_float, c_uint, c_ulong, size_t};
+use libc::{c_char, c_double, c_float, c_schar, c_uint, c_ulong, size_t};
 use std::ffi::*;
 use std::mem;
 use std::slice;
@@ -1600,6 +1600,20 @@ pub struct MetafitsMetadata {
     /// What was the configured deripple_param?
     /// If deripple_applied is False then this deripple param was not applied
     pub deripple_param: *mut c_char,
+    /// Best calibration fit ID
+    pub best_cal_fit_id: u32,
+    /// Best calibration observation ID
+    pub best_cal_obs_id: u32,
+    /// Best calibration fit code version
+    pub best_cal_code_ver: *mut c_char,
+    /// Best calibration fit timestamp
+    pub best_cal_fit_timestamp: *mut c_char,
+    /// Best calibration fit creator
+    pub best_cal_creator: *mut c_char,
+    /// Best calibration fit iterations
+    pub best_cal_fit_iters: u16,
+    /// Best calibration fit iteration limit
+    pub best_cal_fit_iter_limit: u16,
 }
 
 /// This passed back a struct containing the `MetafitsContext` metadata, given a MetafitsContext, CorrelatorContext or VoltageContext
@@ -1745,7 +1759,16 @@ pub unsafe extern "C" fn mwalib_metafits_metadata_get(
                 rec_type,
                 flavour,
                 has_whitening_filter,
+                calib_delay,
+                calib_gains,
             } = item;
+
+            let calib_delay = calib_delay.unwrap_or(f32::NAN);
+            let calib_gains_vec: Vec<f32> = calib_gains
+                .clone()
+                .unwrap_or(vec![f32::NAN; metafits_context.num_metafits_coarse_chans]);
+            let num_calib_gains = calib_gains_vec.len();
+
             Rfinput {
                 input: *input,
                 ant: *ant,
@@ -1770,6 +1793,9 @@ pub unsafe extern "C" fn mwalib_metafits_metadata_get(
                 rec_type: *rec_type,
                 flavour: CString::new(String::from(flavour)).unwrap().into_raw(),
                 has_whitening_filter: *has_whitening_filter,
+                calib_delay,
+                calib_gains: ffi_array_to_boxed_slice(calib_gains_vec),
+                num_calib_gains,
             }
         };
         rfinput_vec.push(out_item);
@@ -1901,6 +1927,13 @@ pub unsafe extern "C" fn mwalib_metafits_metadata_get(
             oversampled,
             deripple_applied,
             deripple_param,
+            best_cal_fit_id,
+            best_cal_obs_id,
+            best_cal_code_ver,
+            best_cal_fit_timestamp,
+            best_cal_creator,
+            best_cal_fit_iters,
+            best_cal_fit_iter_limit,
         } = metafits_context;
         MetafitsMetadata {
             mwa_version: mwa_version.unwrap(),
@@ -1988,6 +2021,27 @@ pub unsafe extern "C" fn mwalib_metafits_metadata_get(
             deripple_param: CString::new(String::from(deripple_param))
                 .unwrap()
                 .into_raw(),
+            best_cal_fit_id: best_cal_fit_id.unwrap_or_else(|| 0),
+            best_cal_obs_id: best_cal_obs_id.unwrap_or_else(|| 0),
+            best_cal_code_ver: CString::new(
+                best_cal_code_ver.clone().unwrap_or_else(|| "".to_string()),
+            )
+            .unwrap()
+            .into_raw(),
+            best_cal_fit_timestamp: CString::new(
+                best_cal_fit_timestamp
+                    .clone()
+                    .unwrap_or_else(|| "".to_string()),
+            )
+            .unwrap()
+            .into_raw(),
+            best_cal_creator: CString::new(
+                best_cal_creator.clone().unwrap_or_else(|| "".to_string()),
+            )
+            .unwrap()
+            .into_raw(),
+            best_cal_fit_iters: best_cal_fit_iters.unwrap_or_else(|| 0),
+            best_cal_fit_iter_limit: best_cal_fit_iter_limit.unwrap_or_else(|| 0),
         }
     };
 
@@ -2989,6 +3043,12 @@ pub struct Rfinput {
     pub flavour: *mut c_char,
     /// Has whitening filter depends on flavour
     pub has_whitening_filter: bool,
+    /// Calibration delay in meters (if provided)
+    pub calib_delay: f32,
+    /// Calibration gains (vector- 1 per coarse channel) if provided. Channels are in `MetafitsContext.course_chans` order.
+    pub calib_gains: *mut f32,
+    /// Number of elements in the calibration gains vector
+    pub num_calib_gains: usize,
 }
 
 ///
diff --git a/src/metafits_context/mod.rs b/src/metafits_context/mod.rs
index ea136f8..fbba069 100644
--- a/src/metafits_context/mod.rs
+++ b/src/metafits_context/mod.rs
@@ -9,6 +9,7 @@ use std::path::Path;
 
 use chrono::{DateTime, Duration, FixedOffset};
 use num_derive::FromPrimitive;
+use num_traits::ToPrimitive;
 
 use crate::antenna::*;
 use crate::baseline::*;
@@ -492,6 +493,20 @@ pub struct MetafitsContext {
     /// What was the configured deripple_param?
     /// If deripple_applied is False then this deripple param was not applied
     pub deripple_param: String,
+    /// Best calibration fit ID
+    pub best_cal_fit_id: Option<u32>,
+    /// Best calibration observation ID
+    pub best_cal_obs_id: Option<u32>,
+    /// Best calibration fit code version
+    pub best_cal_code_ver: Option<String>,
+    /// Best calibration fit timestamp
+    pub best_cal_fit_timestamp: Option<String>,
+    /// Best calibration fit creator
+    pub best_cal_creator: Option<String>,
+    /// Best calibration fit iterations
+    pub best_cal_fit_iters: Option<u16>,
+    /// Best calibration fit iteration limit
+    pub best_cal_fit_iter_limit: Option<u16>,
 }
 
 impl MetafitsContext {
@@ -610,6 +625,9 @@ impl MetafitsContext {
         let mut metafits_fptr = fits_open!(&metafits)?;
         let metafits_hdu = fits_open_hdu!(&mut metafits_fptr, 0)?;
         let metafits_tile_table_hdu = fits_open_hdu!(&mut metafits_fptr, 1)?;
+        // The calibration HDU is not always present, so we will check the result when we need to use it.
+        // is_ok() means it exists, is_err() = True means it does not.
+        let metafits_cal_hdu_result = fits_open_hdu!(&mut metafits_fptr, 2);
 
         // Populate obsid from the metafits
         let obsid = get_required_fits_key!(&mut metafits_fptr, &metafits_hdu, "GPSTIME")?;
@@ -668,6 +686,7 @@ impl MetafitsContext {
             MWALIB_MWA_COAX_V_FACTOR,
             metafits_coarse_chan_vec.len(),
         )?;
+        assert_eq!(num_rf_inputs, rf_inputs.len());
 
         // Sort the rf_inputs back into the correct output order
         rf_inputs.sort_by_key(|k| k.subfile_order);
@@ -715,8 +734,9 @@ impl MetafitsContext {
         let num_metafits_timesteps: usize = 0;
         let metafits_timesteps: Vec<TimeStep> = Vec::new();
 
-        let scheduled_end_utc =
-            scheduled_start_utc + Duration::try_milliseconds(scheduled_duration_ms as i64).expect("scheduled_duration_ms is out of range");
+        let scheduled_end_utc = scheduled_start_utc
+            + Duration::try_milliseconds(scheduled_duration_ms as i64)
+                .expect("scheduled_duration_ms is out of range");
 
         // To increment the mjd we need to fractional proportion of the day that the duration represents
         let scheduled_end_mjd =
@@ -851,11 +871,12 @@ impl MetafitsContext {
             get_optional_fits_key!(&mut metafits_fptr, &metafits_hdu, "ATTEN_DB")?.unwrap_or(0.0);
 
         // Deripple
-        // It is stored as a bool DR_FLAG.
-        let deripple_applied: bool = matches!(
-            get_optional_fits_key!(&mut metafits_fptr, &metafits_hdu, "DR_FLAG")?.unwrap_or(0),
-            1
-        );
+        // It is stored as a bool DR_FLAG in older metafits or DERIPPLE in newer ones.
+        let dr_flag =
+            get_optional_fits_key!(&mut metafits_fptr, &metafits_hdu, "DR_FLAG")?.unwrap_or(0);
+        let deripple =
+            get_optional_fits_key!(&mut metafits_fptr, &metafits_hdu, "DERIPPLE")?.unwrap_or(0);
+        let deripple_applied: bool = dr_flag == 1 || deripple == 1;
 
         // deripple_param is the type of deripple applied
         let deripple_param: String =
@@ -885,6 +906,51 @@ impl MetafitsContext {
         let num_volt_fine_chans_per_coarse =
             (metafits_coarse_chan_width_hz / volt_fine_chan_width_hz) as usize;
 
+        // Handle all of the calibration metadata
+        let best_cal_fit_id: Option<u32>;
+        let best_cal_obs_id: Option<u32>;
+        let best_cal_code_ver: Option<String>;
+        let best_cal_fit_timestamp: Option<String>;
+        let best_cal_creator: Option<String>;
+        let best_cal_fit_iters: Option<u16>;
+        let best_cal_fit_iter_limit: Option<u16>;
+
+        match metafits_cal_hdu_result {
+            Ok(metafits_cal_hdu) => {
+                best_cal_fit_id =
+                    get_optional_fits_key!(&mut metafits_fptr, &metafits_cal_hdu, "CALFITID")?;
+                best_cal_obs_id =
+                    get_optional_fits_key!(&mut metafits_fptr, &metafits_cal_hdu, "CALOBSID")?;
+                best_cal_code_ver =
+                    get_optional_fits_key!(&mut metafits_fptr, &metafits_cal_hdu, "CALCDVER")?;
+                best_cal_fit_timestamp =
+                    get_optional_fits_key!(&mut metafits_fptr, &metafits_cal_hdu, "CALDTIME")?;
+                best_cal_creator =
+                    get_optional_fits_key!(&mut metafits_fptr, &metafits_cal_hdu, "CALCRTR")?;
+                best_cal_fit_iters =
+                    get_optional_fits_key!(&mut metafits_fptr, &metafits_cal_hdu, "CALITERS")?;
+
+                // Currently this is an f32, but will be changed soon to u16
+                let f32_val: Option<f32> =
+                    get_optional_fits_key!(&mut metafits_fptr, &metafits_cal_hdu, "CALITLIM")?;
+                if f32_val.is_some() {
+                    best_cal_fit_iter_limit = f32_val.unwrap().to_u16();
+                } else {
+                    best_cal_fit_iter_limit = None;
+                }
+            }
+            Err(_) => {
+                // This will occur if the HDU does not exist (old / or metafits without this)
+                best_cal_fit_id = None;
+                best_cal_obs_id = None;
+                best_cal_code_ver = None;
+                best_cal_fit_timestamp = None;
+                best_cal_creator = None;
+                best_cal_fit_iters = None;
+                best_cal_fit_iter_limit = None;
+            }
+        };
+
         Ok(MetafitsContext {
             mwa_version: None,
             obs_id: obsid,
@@ -961,6 +1027,13 @@ impl MetafitsContext {
             oversampled,
             deripple_applied,
             deripple_param,
+            best_cal_fit_id,
+            best_cal_obs_id,
+            best_cal_code_ver,
+            best_cal_fit_timestamp,
+            best_cal_creator,
+            best_cal_fit_iters,
+            best_cal_fit_iter_limit,
         })
     }
 
@@ -1156,7 +1229,7 @@ impl fmt::Display for MetafitsContext {
     Deripple applied:         {dr} ({dr_param}),
 
     Num fine channels:        {nfc},
-    Fine Channels (kHz):      {fc:?},
+    Fine Channels (MHz):      {fc},
 
     R.A. (tile_pointing):     {rtpc} degrees,
     Dec. (tile_pointing):     {dtpc} degrees,
@@ -1220,10 +1293,14 @@ impl fmt::Display for MetafitsContext {
                 false => String::from("N/A"),
             },
             nfc = self.metafits_fine_chan_freqs_hz.len(),
-            fc = self
-                .metafits_fine_chan_freqs_hz
-                .iter()
-                .map(|f| format!("{:.3} ", f / 1000.)),
+            fc = misc::pretty_print_vec_to_string(
+                &self
+                    .metafits_fine_chan_freqs_hz
+                    .iter()
+                    .map(|f| (f / 1000000.) as f32)
+                    .collect::<Vec<f32>>(),
+                16
+            ),
             rtpc = self.ra_tile_pointing_degrees,
             dtpc = self.dec_tile_pointing_degrees,
             rppc = Some(self.ra_phase_center_degrees),
diff --git a/src/misc/mod.rs b/src/misc/mod.rs
index 91adc1f..29626db 100644
--- a/src/misc/mod.rs
+++ b/src/misc/mod.rs
@@ -5,7 +5,7 @@
 //! General helper/utility methods
 
 use crate::antenna;
-use std::{mem, slice};
+use std::{fmt::Debug, fmt::Display, mem, slice};
 
 #[cfg(test)]
 pub(crate) mod test;
@@ -251,7 +251,9 @@ pub fn convert_unixtime_to_gpstime(
 
 /// Returns a bool based on whether this cable flavour has a whitening filter. (Used by rfinput::new())
 ///
-/// Rules can be found in github issue #64
+/// If Whitening_Filter col is present in TILEDATA hdu, then it will be used in the first instance.
+/// A whitening_filter value of -1 indicates its absense and it will use the cable flavour rules instead.
+/// Rules for determining via cable_flavour can be found in github issue #64.
 ///
 /// # Arguments
 ///
@@ -262,14 +264,157 @@ pub fn convert_unixtime_to_gpstime(
 ///
 /// * True if this flavour has a whitening filter, False if not.
 ///
-pub fn has_whitening_filter(flavour: &str) -> bool {
-    if flavour.len() >= 3 {
-        match flavour[0..3].to_uppercase().as_str() {
-            "RG6" => !matches!(flavour, "RG6_90"),
-            "LMR" => true,
-            _ => false,
+pub fn has_whitening_filter(flavour: &str, whitening_filter: i32) -> bool {
+    if whitening_filter == -1 {
+        // no whitening filter col in this metafits. Use the flavour logic
+        if flavour.len() >= 3 {
+            match flavour[0..3].to_uppercase().as_str() {
+                "RG6" => !matches!(flavour, "RG6_90"),
+                "LMR" => true,
+                _ => false,
+            }
+        } else {
+            false
         }
     } else {
-        false
+        // whitening filter is present
+        // any non-zero means it HAS a whitening filter
+        whitening_filter != 0
     }
 }
+
+/// Returns True if the f32's are equal even if one or both are NaNs.
+/// Code is from https://stackoverflow.com/questions/40767815/how-do-i-check-whether-a-vector-is-equal-to-another-vector-that-contains-nan-and
+///
+/// # Arguments
+///
+/// * `a` - first f32 to compare
+///
+/// * `b` - second f32 to compare
+///
+/// # Returns
+///
+/// * Equality of `a and `b`
+///
+pub fn eq_with_nan_eq_f32(a: f32, b: f32) -> bool {
+    (a.is_nan() && b.is_nan()) || (a == b)
+}
+
+/// Returns True if the Vec<f32>'s are equal even if one or both contain NaNs.
+/// Code is from https://stackoverflow.com/questions/40767815/how-do-i-check-whether-a-vector-is-equal-to-another-vector-that-contains-nan-and
+///
+/// # Arguments
+///
+/// * `va` - first Vec<f32> to compare
+///
+/// * `vb` - second Vec<f32> to compare
+///
+/// # Returns
+///
+/// * Equality of `a and `b`
+///
+pub fn vec_compare_f32(va: &[f32], vb: &[f32]) -> bool {
+    (va.len() == vb.len()) &&  // zip stops at the shortest
+     va.iter()
+       .zip(vb)
+       .all(|(a,b)| eq_with_nan_eq_f32(*a,*b))
+}
+
+/// Returns True if the f64's are equal even if one or both are NaNs.
+/// Code is from https://stackoverflow.com/questions/40767815/how-do-i-check-whether-a-vector-is-equal-to-another-vector-that-contains-nan-and
+///
+/// # Arguments
+///
+/// * `a` - first f64 to compare
+///
+/// * `b` - second f64 to compare
+///
+/// # Returns
+///
+/// * Equality of `a and `b`
+///
+pub fn eq_with_nan_eq_f64(a: f64, b: f64) -> bool {
+    (a.is_nan() && b.is_nan()) || (a == b)
+}
+
+/// Returns True if the Vec<f64>'s are equal even if one or both contain NaNs.
+/// Code is from https://stackoverflow.com/questions/40767815/how-do-i-check-whether-a-vector-is-equal-to-another-vector-that-contains-nan-and
+///
+/// # Arguments
+///
+/// * `va` - first Vec<f64> to compare
+///
+/// * `vb` - second Vec<f64> to compare
+///
+/// # Returns
+///
+/// * Equality of `a and `b`
+///
+pub fn vec_compare_f64(va: &[f64], vb: &[f64]) -> bool {
+    (va.len() == vb.len()) &&  // zip stops at the shortest
+     va.iter()
+       .zip(vb)
+       .all(|(a,b)| eq_with_nan_eq_f64(*a,*b))
+}
+
+/// Returns a formatted string to 'pretty print' a vector
+/// Example 1:
+/// show_first_elements = 2
+///
+/// vec = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
+///
+/// result = "[0, 1...]"
+///
+/// Example 2:
+/// show_first_elements = 12
+/// vec = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
+///
+/// result = "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]"
+///
+/// # Arguments
+///
+/// * `vec` - slice of type T to get a formatted string for. Must support the Display trait
+///
+/// * `show_first_elements` - how many elements from the start of the slice should we display?
+///
+/// # Returns
+///
+/// * a string which puts an elipses "..." after the specified number of elements are included in the string
+///   - basically a "pretty" format of a slice
+///
+pub fn pretty_print_vec_to_string<T>(vec: &[T], show_first_elements: usize) -> String
+where
+    T: Display + Debug,
+{
+    let vec_len = vec.len();
+
+    // Check for silliness
+    if vec_len == 0 || show_first_elements == 0 {
+        return String::from("[]");
+    }
+
+    let pos: usize = if vec_len < show_first_elements {
+        vec_len
+    } else {
+        show_first_elements
+    };
+
+    let suffix: String = if vec_len <= show_first_elements {
+        String::from("")
+    } else {
+        String::from("...")
+    };
+
+    let mut ret_string = vec[0..pos]
+        .iter()
+        .fold(String::new(), |acc, num| {
+            acc + format!("{}", &num).as_str() + ", "
+        })
+        .to_string();
+
+    // Remove the last ", " and format properly
+    ret_string.remove(ret_string.len() - 1);
+    ret_string.remove(ret_string.len() - 1);
+
+    format!("[{}{}]", ret_string, suffix)
+}
diff --git a/src/rfinput/mod.rs b/src/rfinput/mod.rs
index 28f9821..3c53d57 100644
--- a/src/rfinput/mod.rs
+++ b/src/rfinput/mod.rs
@@ -5,7 +5,9 @@
 //! Structs and helper methods for rf_input metadata
 
 pub mod error;
-use crate::misc::has_whitening_filter;
+use crate::misc::{has_whitening_filter, vec_compare_f32, vec_compare_f64};
+use crate::{_open_hdu, fits_open_hdu};
+use core::f32;
 use error::RfinputError;
 use log::trace;
 use std::fmt;
@@ -161,6 +163,8 @@ struct RfInputMetafitsTableRow {
     rx_type: String,
     /// (cable) flavour
     flavour: String,
+    /// whitening filter
+    whitening_filter: i32,
 }
 
 /// ReceiverType enum.
@@ -174,7 +178,7 @@ pub enum ReceiverType {
     NI,
     Pseudo,
     SHAO,
-    EDA2
+    EDA2,
 }
 
 /// Implements fmt::Display for ReceiverType
@@ -222,7 +226,7 @@ impl fmt::Display for ReceiverType {
 impl std::str::FromStr for ReceiverType {
     type Err = ();
 
-    fn from_str(input: &str) -> Result<ReceiverType, Self::Err> {        
+    fn from_str(input: &str) -> Result<ReceiverType, Self::Err> {
         match input.to_uppercase().as_str() {
             "RRI" => Ok(ReceiverType::RRI),
             "NI" => Ok(ReceiverType::NI),
@@ -234,8 +238,19 @@ impl std::str::FromStr for ReceiverType {
     }
 }
 
+/// Structure to hold one row of the metafits calibdata table
+struct RfInputMetafitsCalibDataTableRow {
+    /// This is the ordinal index of the rf_input in the metafits file
+    antenna: u32,
+    tile: u32,
+    tilename: String,
+    pol: Pol,
+    calib_delay: f32,
+    calib_gains: Vec<f32>,
+}
+
 /// Structure for storing MWA rf_chains (tile with polarisation) information from the metafits file
-#[derive(Clone, PartialEq)]
+#[derive(Clone)]
 #[cfg_attr(feature = "python", pyo3::pyclass(get_all))]
 pub struct Rfinput {
     /// This is the metafits order (0-n inputs)
@@ -290,10 +305,61 @@ pub struct Rfinput {
     pub flavour: String,
     /// Has whitening filter (depends on flavour)
     pub has_whitening_filter: bool,
+    /// Calibration delay in meters (if provided)
+    /// If calibration solution information is not present in the metafits it will be `None`.
+    /// When calibration solution information is present, some values of `calib_delay` may be NaN.
+    /// Make sure you understand [how NaNs work in Rust](https://doc.rust-lang.org/std/primitive.f32.html) if you will be using this field!
+    pub calib_delay: Option<f32>,
+    /// Calibration gains (vector- 1 per coarse channel) if provided.  Channels are in `MetafitsContext.course_chans` order.
+    /// If calibration solution information is not present in the metafits it will be `None`.
+    /// When calibration solution information is present, some values of `calib_delay` may be NaN.
+    /// Make sure you understand [how NaNs work in Rust](https://doc.rust-lang.org/std/primitive.f32.html) if you will be using this field!
+    pub calib_gains: Option<Vec<f32>>,
+}
+
+impl PartialEq for Rfinput {
+    fn eq(&self, other: &Self) -> bool {
+        // Compare all fields as normal
+        let initial_eq = self.input == other.input
+            && self.ant == other.ant
+            && self.tile_id == other.tile_id
+            && self.tile_name == other.tile_name
+            && self.pol == other.pol
+            && self.electrical_length_m == other.electrical_length_m
+            && self.north_m == other.north_m
+            && self.east_m == other.east_m
+            && self.height_m == other.height_m
+            && self.vcs_order == other.vcs_order
+            && self.subfile_order == other.subfile_order
+            && self.flagged == other.flagged
+            && self.rec_number == other.rec_number
+            && self.rec_slot_number == other.rec_slot_number
+            && self.rec_type == other.rec_type
+            && self.dipole_delays == other.dipole_delays
+            && self.flavour == other.flavour
+            && self.has_whitening_filter == other.has_whitening_filter;
+
+        // however calib_delay could be Some(NaN) and calib_gains could be Some(Vec<32>) which may have NaNs
+        let calib_gains_eq: bool = if self.calib_gains.is_some() && other.calib_gains.is_some() {
+            vec_compare_f32(
+                &self.calib_gains.clone().unwrap(),
+                &other.calib_gains.clone().unwrap(),
+            )
+        } else {
+            self.calib_gains.is_none() && other.calib_gains.is_none()
+        };
+
+        // same for digital_gains, dipole_gains
+        let digital_gains_eq = vec_compare_f64(&self.digital_gains, &other.digital_gains);
+        let dipole_gains_eq = vec_compare_f64(&self.dipole_gains, &other.dipole_gains);
+
+        // Return
+        initial_eq && calib_gains_eq && digital_gains_eq && dipole_gains_eq
+    }
 }
 
 impl Rfinput {
-    /// This method just reads a row from the metafits tiledata table to create a new, populated mwalibCoarseChannel struct
+    /// This method just reads a row from the metafits tiledata table and returns the values in a struct
     ///
     /// # Arguments
     ///
@@ -310,7 +376,7 @@ impl Rfinput {
     ///
     /// * An Result containing a populated vector of RFInputMetafitsTableRow structss or an Error
     ///
-    fn read_metafits_values(
+    fn read_metafits_tiledata_values(
         metafits_fptr: &mut fitsio::FitsFile,
         metafits_tile_table_hdu: &fitsio::hdu::FitsHdu,
         row: usize,
@@ -345,7 +411,7 @@ impl Rfinput {
 
         // Digital gains values in metafits need to be divided by 64
         // Digital gains are in mwalib metafits coarse channel order (ascending sky frequency order)
-        let digital_gains = read_cell_array(
+        let digital_gains = read_cell_array_u32(
             metafits_fptr,
             metafits_tile_table_hdu,
             "Gains",
@@ -356,7 +422,7 @@ impl Rfinput {
         .map(|gains| *gains as f64 / 64.0)
         .collect();
 
-        let dipole_delays = read_cell_array(
+        let dipole_delays = read_cell_array_u32(
             metafits_fptr,
             metafits_tile_table_hdu,
             "Delays",
@@ -390,6 +456,15 @@ impl Rfinput {
             read_cell_value(metafits_fptr, metafits_tile_table_hdu, "Flavors", row)
                 .unwrap_or_default();
 
+        // If not present (pre-Jul 2024 metafits), return -1
+        let whitening_filter: i32 = read_cell_value(
+            metafits_fptr,
+            metafits_tile_table_hdu,
+            "Whitening_Filter",
+            row,
+        )
+        .unwrap_or(-1);
+
         Ok(RfInputMetafitsTableRow {
             input,
             antenna,
@@ -408,9 +483,78 @@ impl Rfinput {
             slot,
             rx_type,
             flavour,
+            whitening_filter,
         })
     }
 
+    /// This method just reads a row from the metafits calibdata table and returns the values in a struct
+    ///
+    /// # Arguments
+    ///
+    /// * `metafits_fptr` - reference to the FitsFile representing the metafits file.
+    ///
+    /// * `metafits_calibdata_table_hdu` - reference to the HDU containing the CALIBDATA table.
+    ///
+    /// * `row` - row index to read from the CALIBDATA table in the metafits.
+    ///
+    /// * `num_coarse_chans` - the number of coarse channels in this observation.
+    ///
+    ///
+    /// # Returns
+    ///
+    /// * An Result containing a populated vector of RFInputMetafitsTableRow structss or an Error
+    ///
+    fn read_metafits_calibdata_values(
+        metafits_fptr: &mut fitsio::FitsFile,
+        metafits_calibdata_table_hdu: &Option<fitsio::hdu::FitsHdu>,
+        row: usize,
+        num_coarse_chans: usize,
+    ) -> Result<Option<RfInputMetafitsCalibDataTableRow>, RfinputError> {
+        if let Some(metafits_cal_hdu) = metafits_calibdata_table_hdu {
+            let antenna = read_cell_value(metafits_fptr, metafits_cal_hdu, "Antenna", row)?;
+            let tile_id = read_cell_value(metafits_fptr, metafits_cal_hdu, "Tile", row)?;
+            let tile_name = read_cell_value(metafits_fptr, metafits_cal_hdu, "TileName", row)?;
+            let pol = {
+                let p: String = read_cell_value(metafits_fptr, metafits_cal_hdu, "Pol", row)?;
+                match p.as_str() {
+                    "X" => Pol::X,
+                    "Y" => Pol::Y,
+                    _ => {
+                        return Err(RfinputError::UnrecognisedPol {
+                            fits_filename: metafits_fptr.filename.clone(),
+                            hdu_num: metafits_cal_hdu.number + 1,
+                            row_num: row,
+                            got: p,
+                        })
+                    }
+                }
+            };
+
+            let calib_delay_m: f32 =
+                read_cell_value(metafits_fptr, metafits_cal_hdu, "Calib_Delay", row)?;
+
+            // calib gains are in mwalib metafits coarse channel order (ascending sky frequency order)
+            let calib_gains: Vec<f32> = read_cell_array_f32(
+                metafits_fptr,
+                metafits_cal_hdu,
+                "Calib_Gains",
+                row as i64,
+                num_coarse_chans,
+            )?;
+
+            Ok(Some(RfInputMetafitsCalibDataTableRow {
+                antenna,
+                tile: tile_id,
+                tilename: tile_name,
+                pol,
+                calib_delay: calib_delay_m,
+                calib_gains,
+            }))
+        } else {
+            Ok(None)
+        }
+    }
+
     /// Given the number of (rf)inputs, a metafits fits pointer, ptr to hdu for the tiledata table and coax_v_factor,
     /// populate a vector of rf_inputs
     ///
@@ -438,9 +582,19 @@ impl Rfinput {
         num_coarse_chans: usize,
     ) -> Result<Vec<Self>, RfinputError> {
         let mut rf_inputs: Vec<Self> = Vec::with_capacity(num_inputs);
+
+        // The calibration HDU is not always present, so we will check the result when we need to use it.
+        // is_ok() means it exists, is_err() = True means it does not.
+        let metafits_cal_hdu_result = fits_open_hdu!(metafits_fptr, 2);
+
+        let metafits_cal_hdu_option = match metafits_cal_hdu_result {
+            Ok(m) => Some(m),
+            Err(_) => None,
+        };
+
         for input in 0..num_inputs {
             // Note fits row numbers start at 1
-            let metafits_row = Self::read_metafits_values(
+            let metafits_row = Self::read_metafits_tiledata_values(
                 metafits_fptr,
                 &metafits_tile_table_hdu,
                 input,
@@ -458,7 +612,38 @@ impl Rfinput {
             let vcs_order = get_vcs_order(metafits_row.input);
             let subfile_order = get_mwax_order(metafits_row.antenna, metafits_row.pol);
 
-            let has_whitening_filter: bool = has_whitening_filter(&metafits_row.flavour);
+            let has_whitening_filter: bool =
+                has_whitening_filter(&metafits_row.flavour, metafits_row.whitening_filter);
+
+            // Get data from calibration hdu if it exists
+            let calibdata_row = Self::read_metafits_calibdata_values(
+                metafits_fptr,
+                &metafits_cal_hdu_option,
+                input,
+                num_coarse_chans,
+            )?;
+
+            let mut calib_delay: Option<f32> = None;
+            let mut calib_gains: Option<Vec<f32>> = None;
+
+            if calibdata_row.is_some() {
+                let calibdata_row = calibdata_row.unwrap();
+
+                // Check to ensure we have the same order of rf_inputs between this rf_input and the calibration hdu
+                assert_eq!(calibdata_row.antenna, metafits_row.antenna);
+                assert_eq!(calibdata_row.tile, metafits_row.tile_id);
+                assert_eq!(calibdata_row.tilename, metafits_row.tile_name);
+                assert_eq!(calibdata_row.pol, metafits_row.pol);
+
+                // Grab the delays and gains
+                // calib_delay can be NaN, swapping it out for None here
+                // prevents very weird rust error behaviour
+                calib_delay = match calibdata_row.calib_delay.is_nan() {
+                    true => None,
+                    false => Some(calibdata_row.calib_delay),
+                };
+                calib_gains = Some(calibdata_row.calib_gains);
+            }
 
             rf_inputs.push(Self {
                 input: metafits_row.input,
@@ -481,6 +666,8 @@ impl Rfinput {
                 rec_type: metafits_row.rx_type.parse::<ReceiverType>().unwrap(),
                 flavour: metafits_row.flavour,
                 has_whitening_filter,
+                calib_delay,
+                calib_gains,
             })
         }
         Ok(rf_inputs)
@@ -516,7 +703,7 @@ fn read_cell_value<T: fitsio::tables::ReadsCol>(
 /// Pull out the array-in-a-cell values. This function assumes that the output
 /// datatype is i16, and that the fits datatype is TINT, so it is not to be used
 /// generally!
-fn read_cell_array(
+fn read_cell_array_u32(
     metafits_fptr: &mut fitsio::FitsFile,
     metafits_tile_table_hdu: &fitsio::hdu::FitsHdu,
     col_name: &str,
@@ -572,7 +759,7 @@ fn read_cell_array(
                 let v = std::slice::from_raw_parts(array_ptr, n_elem);
 
                 trace!(
-                    "read_cell_array() filename: '{}' hdu: {} col_name: '{}' row '{}'",
+                    "read_cell_array_u32() filename: '{}' hdu: {} col_name: '{}' row '{}'",
                     metafits_fptr.filename.display(),
                     metafits_tile_table_hdu.number,
                     col_name,
@@ -581,12 +768,114 @@ fn read_cell_array(
 
                 Ok(v.iter().map(|v| *v as _).collect())
             }
-            _ => Err(RfinputError::CellArray {
+            _ => {
+                println!(
+                    "ERROR {} read_cell_array_u32() filename: '{}' hdu: {} col_name: '{}' row '{}'",
+                    status,
+                    metafits_fptr.filename.display(),
+                    metafits_tile_table_hdu.number,
+                    col_name,
+                    row
+                );
+
+                Err(RfinputError::CellArray {
+                    fits_filename: metafits_fptr.filename.clone(),
+                    hdu_num: metafits_tile_table_hdu.number + 1,
+                    row_num: row,
+                    col_name: col_name.to_string(),
+                })
+            }
+        }
+    }
+}
+
+/// Pull out the array-in-a-cell values. This function assumes that the output
+/// datatype is f32, and that the fits datatype is E (f32), so it is not to be used
+/// generally!
+fn read_cell_array_f32(
+    metafits_fptr: &mut fitsio::FitsFile,
+    metafits_tile_table_hdu: &fitsio::hdu::FitsHdu,
+    col_name: &str,
+    row: i64,
+    n_elem: usize,
+) -> Result<Vec<f32>, RfinputError> {
+    unsafe {
+        // With the column name, get the column number.
+        let mut status = 0;
+        let mut col_num = -1;
+        let keyword = std::ffi::CString::new(col_name).unwrap().into_raw();
+        fitsio_sys::ffgcno(
+            metafits_fptr.as_raw(),
+            0,
+            keyword,
+            &mut col_num,
+            &mut status,
+        );
+        // Check the status.
+        if status != 0 {
+            return Err(RfinputError::CellArray {
                 fits_filename: metafits_fptr.filename.clone(),
                 hdu_num: metafits_tile_table_hdu.number + 1,
                 row_num: row,
                 col_name: col_name.to_string(),
-            }),
+            });
+        }
+        drop(std::ffi::CString::from_raw(keyword));
+
+        // Now get the specified row from that column.
+        let mut array: Vec<f32> = vec![0.0; n_elem];
+        array.shrink_to_fit();
+
+        let array_ptr = array.as_mut_ptr();
+
+        // FITSIO can return NaNs (amongst other things)
+        //let mut null_replace_value: f32 = f32::MAX;
+        //let nullval_ptr: *mut c_void = &mut null_replace_value as *mut f32 as *mut c_void;
+
+        fitsio_sys::ffgcv(
+            metafits_fptr.as_raw(),
+            42,
+            col_num,
+            row + 1,
+            1,
+            n_elem as i64,
+            std::ptr::null_mut(),
+            array_ptr as *mut core::ffi::c_void,
+            &mut 0,
+            &mut status,
+        );
+
+        // Check the status.
+        match status {
+            0 => {
+                trace!(
+                    "read_cell_array_f32() filename: '{}' hdu: {} col_name: '{}' row '{}'",
+                    metafits_fptr.filename.display(),
+                    metafits_tile_table_hdu.number,
+                    col_name,
+                    row
+                );
+
+                // Re-assemble the raw array into a Rust Vector.
+                Ok(std::slice::from_raw_parts(array_ptr, n_elem).to_vec())
+            }
+            _ => {
+                println!(
+                    "ERROR {} read_cell_array_f32() filename: '{}' hdu: {} col_name: '{}' row '{}'",
+                    status,
+                    metafits_fptr.filename.display(),
+                    metafits_tile_table_hdu.number,
+                    col_name,
+                    row
+                );
+
+                Err(RfinputError::CellArray {
+                    fits_filename: metafits_fptr.filename.clone(),
+                    hdu_num: metafits_tile_table_hdu.number + 1,
+                    row_num: row,
+                    col_name: col_name.to_string(),
+                })
+            }
         }
     }
 }


Test patch:
diff --git a/src/antenna/test.rs b/src/antenna/test.rs
index 57bbb3a..b6dd5d2 100644
--- a/src/antenna/test.rs
+++ b/src/antenna/test.rs
@@ -33,6 +33,8 @@ fn test_populate_antennas() {
             rec_type: ReceiverType::RRI,
             flavour: String::from("dummy1"),
             has_whitening_filter: false,
+            calib_delay: None,
+            calib_gains: None,
         },
         Rfinput {
             input: 1,
@@ -55,6 +57,8 @@ fn test_populate_antennas() {
             rec_type: ReceiverType::RRI,
             flavour: String::from("dummy1"),
             has_whitening_filter: false,
+            calib_delay: None,
+            calib_gains: None,
         },
         Rfinput {
             input: 2,
@@ -77,6 +81,8 @@ fn test_populate_antennas() {
             rec_type: ReceiverType::RRI,
             flavour: String::from("dummy1"),
             has_whitening_filter: false,
+            calib_delay: None,
+            calib_gains: None,
         },
         Rfinput {
             input: 3,
@@ -99,6 +105,8 @@ fn test_populate_antennas() {
             rec_type: ReceiverType::RRI,
             flavour: String::from("dummy1"),
             has_whitening_filter: false,
+            calib_delay: None,
+            calib_gains: None,
         },
         Rfinput {
             input: 4,
@@ -121,6 +129,8 @@ fn test_populate_antennas() {
             rec_type: ReceiverType::RRI,
             flavour: String::from("dummy1"),
             has_whitening_filter: false,
+            calib_delay: None,
+            calib_gains: None,
         },
         Rfinput {
             input: 5,
@@ -143,6 +153,8 @@ fn test_populate_antennas() {
             rec_type: ReceiverType::RRI,
             flavour: String::from("dummy1"),
             has_whitening_filter: false,
+            calib_delay: None,
+            calib_gains: None,
         },
         Rfinput {
             input: 6,
@@ -165,6 +177,8 @@ fn test_populate_antennas() {
             rec_type: ReceiverType::RRI,
             flavour: String::from("dummy1"),
             has_whitening_filter: false,
+            calib_delay: None,
+            calib_gains: None,
         },
         Rfinput {
             input: 7,
@@ -187,6 +201,8 @@ fn test_populate_antennas() {
             rec_type: ReceiverType::RRI,
             flavour: String::from("dummy1"),
             has_whitening_filter: false,
+            calib_delay: None,
+            calib_gains: None,
         },
     ];
 
@@ -253,6 +269,8 @@ fn test_antenna_debug() {
             rec_type: ReceiverType::RRI,
             flavour: String::from("dummy1"),
             has_whitening_filter: false,
+            calib_delay: None,
+            calib_gains: None,
         },
         Rfinput {
             input: 1,
@@ -275,6 +293,8 @@ fn test_antenna_debug() {
             rec_type: ReceiverType::RRI,
             flavour: String::from("dummy1"),
             has_whitening_filter: false,
+            calib_delay: None,
+            calib_gains: None,
         },
     ];
 
diff --git a/src/ffi/test.rs b/src/ffi/test.rs
index 0cf9cae..6df6d6d 100644
--- a/src/ffi/test.rs
+++ b/src/ffi/test.rs
@@ -19,20 +19,22 @@ use voltage_context::test::get_test_voltage_context;
 /// # Arguments
 ///
 /// * `mwa_version` - Enum telling mwalib the mwa_version it should be using to interpret the metafits file.
-///
+/// * `metafits_filename` - Filename of metafits to use.
 ///
 /// # Returns
 ///
 /// * a raw pointer to an instantiated MetafitsContext for the test metafits and gpubox file
 ///
 #[cfg(test)]
-fn get_test_ffi_metafits_context(mwa_version: MWAVersion) -> *mut MetafitsContext {
+fn get_test_ffi_metafits_context_ext(
+    mwa_version: MWAVersion,
+    metafits_filename: String,
+) -> *mut MetafitsContext {
     let error_len: size_t = 128;
     let error_message = CString::new(" ".repeat(error_len)).unwrap();
     let error_message_ptr = error_message.as_ptr() as *const c_char;
 
-    let metafits_file =
-        CString::new("test_files/1101503312_1_timestep/1101503312.metafits").unwrap();
+    let metafits_file = CString::new(metafits_filename).unwrap();
     let metafits_file_ptr = metafits_file.as_ptr();
 
     unsafe {
@@ -47,7 +49,7 @@ fn get_test_ffi_metafits_context(mwa_version: MWAVersion) -> *mut MetafitsContex
         );
 
         // Check return value of mwalib_metafits_context_new
-        assert_eq!(retval, 0, "mwalib_metafits_context_new failure");
+        assert_eq!(retval, 0, "mwalib_metafits_context_new_ext failure");
 
         // Check we got valid MetafitsContext pointer
         let context_ptr = metafits_context_ptr.as_mut();
@@ -57,6 +59,26 @@ fn get_test_ffi_metafits_context(mwa_version: MWAVersion) -> *mut MetafitsContex
     }
 }
 
+/// Create and return a metafits context based on a test metafits file. Used in many tests in the module.
+///
+///
+/// # Arguments
+///
+/// * `mwa_version` - Enum telling mwalib the mwa_version it should be using to interpret the metafits file.
+///
+///
+/// # Returns
+///
+/// * a raw pointer to an instantiated MetafitsContext for the test metafits and gpubox file
+///
+#[cfg(test)]
+fn get_test_ffi_metafits_context(mwa_version: MWAVersion) -> *mut MetafitsContext {
+    get_test_ffi_metafits_context_ext(
+        mwa_version,
+        String::from("test_files/1101503312_1_timestep/1101503312.metafits"),
+    )
+}
+
 /// Create and return a correlator context ptr based on a test metafits and gpubox file. Used in many tests in the module.
 ///
 ///
@@ -1914,6 +1936,8 @@ fn test_mwalib_metafits_metadata_get_from_metafits_context_valid() {
         let rfinput_digital_gains =
             ffi_boxed_slice_to_array(item[2].digital_gains, item[2].num_digital_gains);
         assert_eq!(item[2].num_digital_gains, rfinput_digital_gains.len());
+        assert!(item[2].calib_delay.is_nan());
+        assert_eq!(item[2].num_calib_gains, 24);
 
         assert!(approx_eq!(
             f64,
@@ -2371,3 +2395,141 @@ fn test_mwalib_voltage_metadata_get_null_context() {
         assert_ne!(ret_val, 0);
     }
 }
+
+#[test]
+fn test_calibration_hdu_in_metafits() {
+    // This tests for a valid metafits context and metadata returned
+    let error_len: size_t = 128;
+    let error_message = CString::new(" ".repeat(error_len)).unwrap();
+    let error_message_ptr = error_message.as_ptr() as *const c_char;
+    // Create a MetafitsContext
+    let metafits_context_ptr: *mut MetafitsContext = get_test_ffi_metafits_context_ext(
+        MWAVersion::CorrLegacy,
+        String::from("test_files/metafits_cal_sol/1111842752_metafits.fits"),
+    );
+
+    // Check we got valid MetafitsContext pointer
+    let context_ptr = unsafe { metafits_context_ptr.as_mut() };
+    assert!(context_ptr.is_some());
+
+    let context = context_ptr.unwrap();
+    assert_eq!(context.num_rf_inputs, 256);
+    assert_eq!(context.num_ants, 128);
+
+    assert_eq!(context.rf_inputs.len(), 256);
+    assert_eq!(context.antennas.len(), 128);
+
+    unsafe {
+        // Populate a mwalibMetafitsMetadata struct
+        let mut metafits_metadata_ptr: *mut MetafitsMetadata = std::ptr::null_mut();
+        let retval = mwalib_metafits_metadata_get(
+            metafits_context_ptr,
+            std::ptr::null_mut(),
+            std::ptr::null_mut(),
+            &mut metafits_metadata_ptr,
+            error_message_ptr,
+            error_len,
+        );
+
+        // Check return value
+        let mut ret_error_message: String = String::new();
+
+        if retval != 0 {
+            let c_str: &CStr = CStr::from_ptr(error_message_ptr);
+            let str_slice: &str = c_str.to_str().unwrap();
+            str_slice.clone_into(&mut ret_error_message);
+        }
+
+        assert_eq!(
+            retval, 0,
+            "mwalib_metafits_metadata_get failure {}",
+            ret_error_message
+        );
+
+        // Get the mwalibMetadata struct from the pointer
+        let metafits_metadata = Box::from_raw(metafits_metadata_ptr);
+
+        // We should get a valid obsid and no error message
+        assert_eq!(metafits_metadata.obs_id, 1_111_842_752);
+        assert_eq!(metafits_metadata.best_cal_fit_id, 1720774022);
+        assert_eq!(metafits_metadata.best_cal_obs_id, 1111842752);
+        assert_eq!(
+            CString::from_raw(metafits_metadata.best_cal_code_ver),
+            CString::new("0.17.22").unwrap()
+        );
+        assert_eq!(
+            CString::from_raw(metafits_metadata.best_cal_fit_timestamp),
+            CString::new("2024-07-12T08:47:02.308203+00:00").unwrap()
+        );
+        assert_eq!(
+            CString::from_raw(metafits_metadata.best_cal_creator),
+            CString::new("calvin").unwrap()
+        );
+        assert_eq!(metafits_metadata.best_cal_fit_iters, 3);
+        assert_eq!(metafits_metadata.best_cal_fit_iter_limit, 20);
+    }
+}
+
+#[test]
+fn test_calibration_hdu_not_in_metafits() {
+    let error_len: size_t = 128;
+    let error_message = CString::new(" ".repeat(error_len)).unwrap();
+    let error_message_ptr = error_message.as_ptr() as *const c_char;
+
+    // Create a MetafitsContext
+    let metafits_context_ptr: *mut MetafitsContext =
+        get_test_ffi_metafits_context(MWAVersion::CorrLegacy);
+
+    unsafe {
+        // Check we got valid MetafitsContext pointer
+        let context_ptr = metafits_context_ptr.as_mut();
+        assert!(context_ptr.is_some());
+
+        // Populate a mwalibMetafitsMetadata struct
+        let mut metafits_metadata_ptr: *mut MetafitsMetadata = std::ptr::null_mut();
+        let retval = mwalib_metafits_metadata_get(
+            metafits_context_ptr,
+            std::ptr::null_mut(),
+            std::ptr::null_mut(),
+            &mut metafits_metadata_ptr,
+            error_message_ptr,
+            error_len,
+        );
+
+        // Check return value
+        let mut ret_error_message: String = String::new();
+
+        if retval != 0 {
+            let c_str: &CStr = CStr::from_ptr(error_message_ptr);
+            let str_slice: &str = c_str.to_str().unwrap();
+            str_slice.clone_into(&mut ret_error_message);
+        }
+        assert_eq!(
+            retval, 0,
+            "mwalib_metafits_metadata_get failure {}",
+            ret_error_message
+        );
+
+        // Get the mwalibMetadata struct from the pointer
+        let metafits_metadata = Box::from_raw(metafits_metadata_ptr);
+
+        // We should get a valid obsid and no error message
+        assert_eq!(metafits_metadata.obs_id, 1_101_503_312);
+        assert_eq!(metafits_metadata.best_cal_fit_id, 0);
+        assert_eq!(metafits_metadata.best_cal_obs_id, 0);
+        assert_eq!(
+            CString::from_raw(metafits_metadata.best_cal_code_ver),
+            CString::new("").unwrap()
+        );
+        assert_eq!(
+            CString::from_raw(metafits_metadata.best_cal_fit_timestamp),
+            CString::new("").unwrap()
+        );
+        assert_eq!(
+            CString::from_raw(metafits_metadata.best_cal_creator),
+            CString::new("").unwrap()
+        );
+        assert_eq!(metafits_metadata.best_cal_fit_iters, 0);
+        assert_eq!(metafits_metadata.best_cal_fit_iter_limit, 0);
+    }
+}
diff --git a/src/metafits_context/test.rs b/src/metafits_context/test.rs
index ff06874..9fe9407 100644
--- a/src/metafits_context/test.rs
+++ b/src/metafits_context/test.rs
@@ -696,3 +696,60 @@ fn test_oversampling_on_in_metafits() {
 
     assert!(context.oversampled);
 }
+
+#[test]
+fn test_calibration_hdu_in_metafits() {
+    // Open the test metafits file
+    let metafits_filename = "test_files/metafits_cal_sol/1111842752_metafits.fits";
+
+    // Open a context and load in a test metafits
+    let result = MetafitsContext::new(metafits_filename, None);
+    assert!(result.is_ok(), "{}", result.unwrap_err());
+
+    let context = result.unwrap();
+
+    assert_eq!(context.best_cal_fit_id, Some(1720774022));
+    assert_eq!(context.best_cal_obs_id, Some(1111842752));
+    assert_eq!(context.best_cal_code_ver, Some(String::from("0.17.22")));
+    assert_eq!(
+        context.best_cal_fit_timestamp,
+        Some(String::from("2024-07-12T08:47:02.308203+00:00"))
+    );
+    assert_eq!(context.best_cal_creator, Some(String::from("calvin")));
+    assert_eq!(context.best_cal_fit_iters, Some(3));
+    assert_eq!(context.best_cal_fit_iter_limit, Some(20));
+
+    assert_eq!(context.rf_inputs[2].calib_delay, Some(0.4399995));
+    assert_eq!(
+        context.rf_inputs[2].calib_gains.clone().unwrap()[0],
+        0.70867455
+    );
+    assert_eq!(
+        context.rf_inputs[2].calib_gains.clone().unwrap()[23],
+        1.1947584
+    );
+
+    assert_eq!(context.num_rf_inputs, context.rf_inputs.len());
+    assert_eq!(context.num_ants, context.antennas.len());
+    assert_eq!(context.num_ants * 2, context.num_rf_inputs);
+}
+
+#[test]
+fn test_calibration_hdu_not_in_metafits() {
+    // Open the test metafits file
+    let metafits_filename = "test_files/metafits_tests/1370752512_metafits_deripple_os.fits";
+
+    // Open a context and load in a test metafits
+    let result = MetafitsContext::new(metafits_filename, None);
+    assert!(result.is_ok(), "{}", result.unwrap_err());
+
+    let context = result.unwrap();
+
+    assert_eq!(context.best_cal_fit_id, None);
+    assert_eq!(context.best_cal_obs_id, None);
+    assert_eq!(context.best_cal_code_ver, None);
+    assert_eq!(context.best_cal_fit_timestamp, None);
+    assert_eq!(context.best_cal_creator, None);
+    assert_eq!(context.best_cal_fit_iters, None);
+    assert_eq!(context.best_cal_fit_iter_limit, None);
+}
diff --git a/src/misc/test.rs b/src/misc/test.rs
index d7fb446..ab086f1 100644
--- a/src/misc/test.rs
+++ b/src/misc/test.rs
@@ -4,6 +4,8 @@
 
 //! Unit tests for misc utility functions
 
+use core::f32;
+
 #[cfg(test)]
 use super::*;
 use crate::antenna::*;
@@ -113,6 +115,8 @@ fn test_get_baseline_from_antenna_names1() {
         rec_type: ReceiverType::Unknown,
         flavour: String::from("dummy1"),
         has_whitening_filter: false,
+        calib_delay: None,
+        calib_gains: None,
     };
 
     let dummy_rf_input_y = Rfinput {
@@ -136,6 +140,8 @@ fn test_get_baseline_from_antenna_names1() {
         rec_type: ReceiverType::Unknown,
         flavour: String::from("dummy1"),
         has_whitening_filter: false,
+        calib_delay: None,
+        calib_gains: None,
     };
 
     ants.push(Antenna {
@@ -290,6 +296,8 @@ fn test_get_baseline_from_antenna_names_ant1_not_valid() {
         rec_type: ReceiverType::Unknown,
         flavour: String::from("dummy1"),
         has_whitening_filter: false,
+        calib_delay: None,
+        calib_gains: None,
     };
 
     let dummy_rf_input_y = Rfinput {
@@ -313,6 +321,8 @@ fn test_get_baseline_from_antenna_names_ant1_not_valid() {
         rec_type: ReceiverType::Unknown,
         flavour: String::from("dummy1"),
         has_whitening_filter: false,
+        calib_delay: None,
+        calib_gains: None,
     };
 
     ants.push(Antenna {
@@ -372,6 +382,8 @@ fn test_get_baseline_from_antenna_names_ant2_not_valid() {
         rec_type: ReceiverType::Unknown,
         flavour: String::from("dummy1"),
         has_whitening_filter: false,
+        calib_delay: None,
+        calib_gains: None,
     };
 
     let dummy_rf_input_y = Rfinput {
@@ -395,6 +407,8 @@ fn test_get_baseline_from_antenna_names_ant2_not_valid() {
         rec_type: ReceiverType::Unknown,
         flavour: String::from("dummy1"),
         has_whitening_filter: false,
+        calib_delay: None,
+        calib_gains: None,
     };
 
     ants.push(Antenna {
@@ -465,23 +479,198 @@ fn test_has_whitening_filter() {
     // Every cable flavour starting with 'RG6', except for 'RG6_90' and
     // 'everything starting with LMR' [has a whitening filter].
 
-    // Test empty
-    assert!(!has_whitening_filter(""));
-
-    // Test some string
-    assert!(!has_whitening_filter("SomeOtherString"));
-
-    // Test RG6_123
-    assert!(has_whitening_filter("RG6_123"));
-    // Test RG6 by itself
-    assert!(has_whitening_filter("RG6"));
-    // Test RG6_123 (lowecase)
-    assert!(has_whitening_filter("rg6_123"));
-
-    // Test RG6_90 returns FALSE!
-    assert!(!has_whitening_filter("RG6_90"));
-    // Test LMR_123
-    assert!(has_whitening_filter("LMR_123"));
-    // Test LMR by itself
-    assert!(has_whitening_filter("LMR"));
+    // Test empty/not present for both
+    assert!(!has_whitening_filter("", -1));
+
+    // Test some string, and no whitening_filter column
+    assert!(!has_whitening_filter("SomeOtherString", -1));
+
+    // Test RG6_123 and no whitening_filter column
+    assert!(has_whitening_filter("RG6_123", -1));
+    // Test RG6 by itself and no whitening_filter column
+    assert!(has_whitening_filter("RG6", -1));
+    // Test RG6_123 (lowecase) and no whitening_filter column
+    assert!(has_whitening_filter("rg6_123", -1));
+
+    // Test RG6_90 returns FALSE! and no whitening_filter column
+    assert!(!has_whitening_filter("RG6_90", -1));
+    // Test LMR_123 and no whitening_filter column
+    assert!(has_whitening_filter("LMR_123", -1));
+    // Test LMR by itself and no whitening_filter column
+    assert!(has_whitening_filter("LMR", -1));
+
+    // Test RG6_90 returns FALSE! and whitening_filter column of 1
+    // True because whitening_filter of 1
+    assert!(has_whitening_filter("RG6_90", 1));
+
+    // Test LMR_123 and whitening_filter column of 0
+    // False because whitening_filter of 0 even though LMR_123 does has WF
+    assert!(!has_whitening_filter("LMR_123", 0));
+
+    // Test LMR by itself and whitening_filter column of 0
+    // false because whitening_filter of 0
+    assert!(!has_whitening_filter("LMR", 0));
+}
+
+#[test]
+fn test_f32_nan_eq_no_nans_eq() {
+    let x: f32 = 9.2;
+    let y: f32 = 9.2;
+
+    assert!(eq_with_nan_eq_f32(x, y));
+}
+
+#[test]
+fn test_f32_nan_eq_no_nans_neq() {
+    let x: f32 = 9.2;
+    let y: f32 = 9.3;
+
+    assert!(!eq_with_nan_eq_f32(x, y));
+}
+
+#[test]
+fn test_f32_nan_eq_one_nan() {
+    let x: f32 = 9.2;
+    let y: f32 = f32::NAN;
+
+    assert!(!eq_with_nan_eq_f32(x, y));
+}
+
+#[test]
+fn test_f32_nan_eq_two_nans() {
+    let x: f32 = f32::NAN;
+    let y: f32 = f32::NAN;
+
+    assert!(eq_with_nan_eq_f32(x, y));
+}
+
+#[test]
+fn test_vecf32_nan_eq_no_nans_eq() {
+    let x: Vec<f32> = vec![9.2; 10];
+    let y: Vec<f32> = vec![9.2; 10];
+
+    assert!(vec_compare_f32(&x, &y));
+}
+
+#[test]
+fn test_vecf32_nan_eq_no_nans_neq1() {
+    let x: Vec<f32> = vec![9.2; 9];
+    let y: Vec<f32> = vec![9.2; 10];
+
+    assert!(!vec_compare_f32(&x, &y));
+}
+
+#[test]
+fn test_vecf32_nan_eq_no_nans_neq2() {
+    let x: Vec<f32> = vec![9.3; 10];
+    let y: Vec<f32> = vec![9.2; 10];
+
+    assert!(!vec_compare_f32(&x, &y));
+}
+
+#[test]
+fn test_vecf32_nan_eq_no_nans_neq3() {
+    let mut x: Vec<f32> = vec![9.2; 10];
+    x[3] = 5.0;
+    let y: Vec<f32> = vec![9.2; 10];
+
+    assert!(!vec_compare_f32(&x, &y));
+}
+
+#[test]
+fn test_f64_nan_eq_no_nans_eq() {
+    let x: f64 = 9.2;
+    let y: f64 = 9.2;
+
+    assert!(eq_with_nan_eq_f64(x, y));
+}
+
+#[test]
+fn test_f64_nan_eq_no_nans_neq() {
+    let x: f64 = 9.2;
+    let y: f64 = 9.3;
+
+    assert!(!eq_with_nan_eq_f64(x, y));
+}
+
+#[test]
+fn test_f64_nan_eq_one_nan() {
+    let x: f64 = 9.2;
+    let y: f64 = f64::NAN;
+
+    assert!(!eq_with_nan_eq_f64(x, y));
+}
+
+#[test]
+fn test_f64_nan_eq_two_nans() {
+    let x: f64 = f64::NAN;
+    let y: f64 = f64::NAN;
+
+    assert!(eq_with_nan_eq_f64(x, y));
+}
+
+#[test]
+fn test_vecf64_nan_eq_no_nans_eq() {
+    let x: Vec<f64> = vec![9.2; 10];
+    let y: Vec<f64> = vec![9.2; 10];
+
+    assert!(vec_compare_f64(&x, &y));
+}
+
+#[test]
+fn test_vecf64_nan_eq_no_nans_neq1() {
+    let x: Vec<f64> = vec![9.2; 9];
+    let y: Vec<f64> = vec![9.2; 10];
+
+    assert!(!vec_compare_f64(&x, &y));
+}
+
+#[test]
+fn test_vecf64_nan_eq_no_nans_neq2() {
+    let x: Vec<f64> = vec![9.3; 10];
+    let y: Vec<f64> = vec![9.2; 10];
+
+    assert!(!vec_compare_f64(&x, &y));
+}
+
+#[test]
+fn test_vecf64_nan_eq_no_nans_neq3() {
+    let mut x: Vec<f64> = vec![9.2; 10];
+    x[3] = 5.0;
+    let y: Vec<f64> = vec![9.2; 10];
+
+    assert!(!vec_compare_f64(&x, &y));
+}
+
+#[test]
+fn test_pretty_print_vec_to_string() {
+    let test_vec1 = vec![1.1; 10];
+
+    let s = pretty_print_vec_to_string(&test_vec1, 12);
+    assert_eq!(
+        s,
+        String::from("[1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1]")
+    );
+
+    let s = pretty_print_vec_to_string(&test_vec1, 10);
+    assert_eq!(
+        s,
+        String::from("[1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1]")
+    );
+
+    let s = pretty_print_vec_to_string(&test_vec1, 9);
+    assert_eq!(
+        s,
+        String::from("[1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1...]")
+    );
+
+    let s = pretty_print_vec_to_string(&[1.1; 2], 1);
+    assert_eq!(s, String::from("[1.1...]"));
+
+    let s = pretty_print_vec_to_string(&[1.1; 1], 1);
+    assert_eq!(s, String::from("[1.1]"));
+
+    let empty_vec: Vec<f32> = Vec::new();
+    let s = pretty_print_vec_to_string(&empty_vec, 1);
+    assert_eq!(s, String::from("[]"));
 }
diff --git a/src/rfinput/test.rs b/src/rfinput/test.rs
index 2a2d6dd..abf71ea 100644
--- a/src/rfinput/test.rs
+++ b/src/rfinput/test.rs
@@ -56,16 +56,66 @@ fn test_get_electrical_length() {
 }
 
 #[test]
-fn test_read_cell_array() {
+fn test_read_cell_value_valid() {
+    let metafits_filename = "test_files/metafits_cal_sol/1111842752_metafits.fits";
+    let mut fptr = fits_open!(&metafits_filename).unwrap();
+    let hdu = fits_open_hdu!(&mut fptr, 2).unwrap();
+
+    let result_value: Result<f32, RfinputError> =
+        read_cell_value(&mut fptr, &hdu, "Calib_Delay", 0);
+    assert!(result_value.is_ok());
+
+    let value = result_value.unwrap();
+
+    assert!(float_cmp::approx_eq!(
+        f32,
+        value,
+        -135.49985,
+        float_cmp::F32Margin::default()
+    ));
+}
+
+#[test]
+fn test_read_cell_value_nan() {
+    let metafits_filename = "test_files/metafits_cal_sol/1111842752_metafits.fits";
+    let mut fptr = fits_open!(&metafits_filename).unwrap();
+    let hdu = fits_open_hdu!(&mut fptr, 2).unwrap();
+
+    let result_value: Result<f32, RfinputError> =
+        read_cell_value(&mut fptr, &hdu, "Calib_Delay", 2);
+    assert!(result_value.is_ok());
+
+    let value = result_value.unwrap();
+
+    assert!(float_cmp::approx_eq!(
+        f32,
+        value,
+        f32::NAN,
+        float_cmp::F32Margin::default()
+    ));
+
+    // Reassign to another float
+    let new_float = value;
+
+    assert!(float_cmp::approx_eq!(
+        f32,
+        new_float,
+        f32::NAN,
+        float_cmp::F32Margin::default()
+    ));
+}
+
+#[test]
+fn test_read_cell_array_u32() {
     let metafits_filename = "test_files/1101503312_1_timestep/1101503312.metafits";
     let mut fptr = fits_open!(&metafits_filename).unwrap();
     let hdu = fits_open_hdu!(&mut fptr, 1).unwrap();
 
-    let delays = read_cell_array(&mut fptr, &hdu, "Delays", 0, 16);
+    let delays = read_cell_array_u32(&mut fptr, &hdu, "Delays", 0, 16);
     assert!(delays.is_ok());
     assert_eq!(&delays.unwrap(), &[0; 16]);
 
-    let digital_gains = read_cell_array(&mut fptr, &hdu, "Gains", 0, 24);
+    let digital_gains = read_cell_array_u32(&mut fptr, &hdu, "Gains", 0, 24);
     assert!(digital_gains.is_ok());
     assert_eq!(
         digital_gains.unwrap(),
@@ -75,12 +125,54 @@ fn test_read_cell_array() {
         ]
     );
 
-    let asdf = read_cell_array(&mut fptr, &hdu, "NotReal", 0, 24);
+    let asdf = read_cell_array_u32(&mut fptr, &hdu, "NotReal", 0, 24);
+    assert!(asdf.is_err());
+
+    let asdf = read_cell_array_u32(&mut fptr, &hdu, "Delays", 999, 16);
     assert!(asdf.is_err());
 }
 
 #[test]
-fn test_read_metafits_values_from_row_0() {
+fn test_read_cell_array_f32() {
+    let metafits_filename = "test_files/metafits_cal_sol/1111842752_metafits.fits";
+    let mut fptr = fits_open!(&metafits_filename).unwrap();
+    let hdu = fits_open_hdu!(&mut fptr, 2).unwrap();
+
+    let gains = read_cell_array_f32(&mut fptr, &hdu, "Calib_Gains", 0, 24);
+    assert!(gains.is_ok());
+    assert_eq!(
+        gains.unwrap(),
+        &[
+            0.9759591, 0.9845909, 0.9918698, 1.0030527, 1.0122633, 1.011114, 1.0253462, 1.0438296,
+            1.0606546, 1.0932951, 1.1034626, 1.1153094, 1.1335917, 1.1480684, 1.1665345, 1.1722057,
+            1.2186697, 1.2541704, 1.2993327, 1.35544, 1.410614, 1.488467, 1.544273, 1.6084857,
+        ]
+    );
+
+    let gains_nans = read_cell_array_f32(&mut fptr, &hdu, "Calib_Gains", 2, 24);
+    assert!(gains_nans.is_ok());
+    let gains_nans = gains_nans.unwrap();
+    assert!(gains_nans[0].is_nan());
+    assert!(gains_nans[23].is_nan());
+
+    println!("zzz1");
+    test_func(gains_nans);
+
+    fn test_func(nan_float_vec: Vec<f32>) {
+        println!("zzz2");
+        assert!(nan_float_vec[0].is_nan());
+        assert!(nan_float_vec[23].is_nan());
+        println!("zzz3");
+    }
+
+    println!("zzz4");
+
+    let asdf = read_cell_array_f32(&mut fptr, &hdu, "NotReal", 0, 24);
+    assert!(asdf.is_err());
+}
+
+#[test]
+fn test_read_metafits_tiledata_values_from_row_0() {
     let metafits_filename = "test_files/1101503312_1_timestep/1101503312.metafits";
     let mut metafits_fptr = fits_open!(&metafits_filename).unwrap();
 
@@ -88,7 +180,8 @@ fn test_read_metafits_values_from_row_0() {
 
     // Get values from row 1
     let row: RfInputMetafitsTableRow =
-        Rfinput::read_metafits_values(&mut metafits_fptr, &metafits_tile_table_hdu, 0, 24).unwrap();
+        Rfinput::read_metafits_tiledata_values(&mut metafits_fptr, &metafits_tile_table_hdu, 0, 24)
+            .unwrap();
     assert_eq!(row.input, 0);
     assert_eq!(row.antenna, 75);
     assert_eq!(row.tile_id, 104);
@@ -120,7 +213,7 @@ fn test_read_metafits_values_from_row_0() {
 }
 
 #[test]
-fn test_read_metafits_values_from_invalid_metafits() {
+fn test_read_metafits_tiledata_values_from_invalid_metafits() {
     let metafits_filename = "read_metafits_values_from_invalid_metafits.metafits";
 
     with_new_temp_fits_file(metafits_filename, |metafits_fptr| {
@@ -143,7 +236,79 @@ fn test_read_metafits_values_from_invalid_metafits() {
 
         // Get values from row 1
         let metafits_result =
-            Rfinput::read_metafits_values(metafits_fptr, &metafits_tile_table_hdu, 0, 24);
+            Rfinput::read_metafits_tiledata_values(metafits_fptr, &metafits_tile_table_hdu, 0, 24);
+
+        assert!(metafits_result.is_err());
+    });
+}
+
+#[test]
+fn test_read_metafits_calibdata_values_from_row_0() {
+    let metafits_filename = "test_files/metafits_cal_sol/1111842752_metafits.fits";
+    let mut metafits_fptr = fits_open!(&metafits_filename).unwrap();
+
+    let metafits_calib_table_hdu = fits_open_hdu!(&mut metafits_fptr, 2).unwrap();
+
+    // Get values from row 1
+    let row: Option<RfInputMetafitsCalibDataTableRow> = Rfinput::read_metafits_calibdata_values(
+        &mut metafits_fptr,
+        &Some(metafits_calib_table_hdu),
+        0,
+        24,
+    )
+    .unwrap();
+    assert!(row.is_some());
+
+    let row = row.unwrap();
+
+    assert_eq!(row.antenna, 75);
+    assert_eq!(row.tile, 104);
+    assert_eq!(row.tilename, "Tile104");
+    assert_eq!(row.pol, Pol::Y);
+    assert!(float_cmp::approx_eq!(
+        f32,
+        row.calib_delay,
+        -135.49985,
+        float_cmp::F32Margin::default()
+    ));
+    assert!(row.calib_gains.len() == 24);
+    assert!(row.calib_gains[0] == 0.9759591);
+    assert!(row.calib_gains[23] == 1.6084857);
+}
+
+#[test]
+fn test_read_metafits_calibdata_values_from_invalid_metafits() {
+    let metafits_filename = "read_metafits_values_from_invalid_metafits.metafits";
+
+    with_new_temp_fits_file(metafits_filename, |metafits_fptr| {
+        // Create a tiledata hdu
+        let first_description = ColumnDescription::new("A")
+            .with_type(ColumnDataType::Int)
+            .create()
+            .unwrap();
+        let second_description = ColumnDescription::new("B")
+            .with_type(ColumnDataType::Long)
+            .create()
+            .unwrap();
+        let descriptions = [first_description, second_description];
+
+        metafits_fptr
+            .create_table("TILEDATA".to_string(), &descriptions)
+            .unwrap();
+
+        metafits_fptr
+            .create_table("CALIBDATA".to_string(), &descriptions)
+            .unwrap();
+
+        let metafits_calib_table_hdu = fits_open_hdu!(metafits_fptr, 2).unwrap();
+
+        // Get values from row 1
+        let metafits_result = Rfinput::read_metafits_calibdata_values(
+            metafits_fptr,
+            &Some(metafits_calib_table_hdu),
+            0,
+            24,
+        );
 
         assert!(metafits_result.is_err());
     });
@@ -290,3 +455,33 @@ fn test_flavor_and_whitening_filter() {
     assert_eq!(rfinput[289].flavour, "RFOF-NI");
     assert!(!rfinput[289].has_whitening_filter);
 }
+
+#[test]
+fn test_populate_rf_inputs_calib_metafits() {
+    let metafits_filename = "test_files/metafits_cal_sol/1111842752_metafits.fits";
+    let mut metafits_fptr = fits_open!(&metafits_filename).unwrap();
+    let metafits_tile_table_hdu = fits_open_hdu!(&mut metafits_fptr, 1).unwrap();
+    let result =
+        Rfinput::populate_rf_inputs(256, &mut metafits_fptr, metafits_tile_table_hdu, 1.204, 24);
+
+    assert!(result.is_ok());
+
+    let rfinput = result.unwrap();
+    assert_eq!(rfinput.len(), 256);
+
+    assert_eq!(rfinput[0].calib_delay, Some(-135.49985));
+}
+
+#[test]
+fn test_populate_rf_inputs_calib_metafits_context() {
+    let metafits_filename = "test_files/metafits_cal_sol/1111842752_metafits.fits";
+
+    let context = MetafitsContext::new(metafits_filename, Some(MWAVersion::CorrLegacy));
+
+    let context = context.unwrap();
+
+    assert_eq!(context.rf_inputs.len(), 256);
+    assert_eq!(context.rf_inputs[151].tile_name, "Tile104");
+    assert_eq!(context.rf_inputs[151].calib_delay, Some(-135.49985));
+    assert_eq!(context.antennas.len(), 128);
+}
diff --git a/src/voltage_context/test.rs b/src/voltage_context/test.rs
index f38d2d9..1198460 100644
--- a/src/voltage_context/test.rs
+++ b/src/voltage_context/test.rs
@@ -398,24 +398,26 @@ pub(crate) fn get_test_voltage_context(
 #[test]
 fn test_2_digit_channel_in_subfiles() {
     let metafits_filename = "test_files/1380365160/1380365160_metafits.fits";
-    generate_test_voltage_file_mwax("test_files/1380365160/1380365160_1380365160_65.sub", 0).unwrap();    
+    generate_test_voltage_file_mwax("test_files/1380365160/1380365160_1380365160_65.sub", 0)
+        .unwrap();
     let filename = "test_files/1380365160/1380365160_1380365160_65.sub";
     let voltage_files = vec![filename];
-        
+
     let context = VoltageContext::new(metafits_filename, &voltage_files).unwrap();
-    assert!(context.num_provided_coarse_chans==1);
+    assert!(context.num_provided_coarse_chans == 1);
     assert!(context.provided_coarse_chan_indices[0] == 3);
     assert!(context.coarse_chans[3].rec_chan_number == 65);
 }
 
 #[test]
-fn test_2_digit_channel_with_leading_zero_in_subfiles() {    
+fn test_2_digit_channel_with_leading_zero_in_subfiles() {
     let metafits_filename = "test_files/1380365160/1380365160_metafits.fits";
-    generate_test_voltage_file_mwax("test_files/1380365160/1380365160_1380365160_065.sub", 0).unwrap();
+    generate_test_voltage_file_mwax("test_files/1380365160/1380365160_1380365160_065.sub", 0)
+        .unwrap();
     let filename = "test_files/1380365160/1380365160_1380365160_065.sub";
     let voltage_files = vec![filename];
     let context = VoltageContext::new(metafits_filename, &voltage_files).unwrap();
-    assert!(context.num_provided_coarse_chans==1);
+    assert!(context.num_provided_coarse_chans == 1);
     assert!(context.provided_coarse_chan_indices[0] == 3);
     assert!(context.coarse_chans[3].rec_chan_number == 65);
 }
diff --git a/test_files/metafits_cal_sol/1111842752_metafits.fits b/test_files/metafits_cal_sol/1111842752_metafits.fits
new file mode 100644
index 0000000..f83dc2f
--- /dev/null
+++ b/test_files/metafits_cal_sol/1111842752_metafits.fits
@@ -0,0 +1,153 @@
+SIMPLE  =                    T / conforms to FITS standard                      BITPIX  =                    8 / array data type                                NAXIS   =                    0 / number of array dimensions                     EXTEND  =                    T                                                  GPSTIME =           1111842752 / [s] GPS time of observation start              EXPOSURE=                  112 / [s] duration of observation                    FILENAME= 'HydA_169'           / Name of observation                            MJD     =    57112.55018518519 / [days] MJD of observation                      DATE-OBS= '2015-03-31T13:12:16' / [UT] Date and time of observation             LST     =    143.3328684831032 / [deg] LST                                      DUT1    =   -0.574427802037037 / UT1-UTC from astropy.time.Time.delta_ut1_utc   HA      = '-00:27:55.93'       / [hours] hour angle of pointing center          AZIMUTH =             333.4349 / [deg] Azimuth of pointing center               ALTITUDE=              74.6271 / [deg] Altitude of pointing center              RA      =    136.3982026726725 / [deg] RA of pointing center                    DEC     =   -12.73191964984596 / [deg] Dec of pointing center                   RAPHASE =              139.524 / [deg] RA of desired phase center               DECPHASE=             -12.0956 / [deg] DEC of desired phase center              DELAYMOD=  / MWAX correlator delay mode                                         ATTEN_DB=                  1.0 / [dB] global analogue attenuation, in dB        SUN-DIST=    126.6706208702401 / [deg] Distance from pointing center to Sun     SUN-ALT =   -40.38257480725702 / [deg] Altitude of Sun                          MOONDIST=    25.37080465861851 / [deg] Distance from pointing center to Moon    JUP-DIST=    30.73077787898661 / [deg] Distance from pointing center to Jupiter GRIDNAME= 'sweet   '           / Pointing grid name                             GRIDNUM =                   20 / Pointing grid number                           CREATOR = 'Randall '           / Observation creator                            PROJECT = 'G0008   '           / Project ID                                     MODE    = 'HW_LFILES'          / Observation mode                               RECVRS  = '1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16' / Active receivers           DELAYS  = '9,8,7,6,7,6,5,4,5,4,3,2,3,2,1,0' / Beamformer delays                 CALIBRAT=                    T / Intended for calibration                       CALIBSRC= 'HydA    '           / Calibrator source                              CENTCHAN=                  169 / Center coarse channel                          CHANNELS= '157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173&'CONTINUE  ',174,175,176,177,178,179,180&'                                       CONTINUE  '' / Coarse channels                                                  CHANSEL = '0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23' / IndiFINECHAN=                 10.0 / [kHz] Fine channel width - correlator freq_res INTTIME =                  2.0 / [s] Individual integration time                NAV_FREQ=                    1 / # of 10kHz chans avgd to make each fine chan   NSCANS  =                   56 / Number of time instants in correlation productsNINPUTS =                  256 / Number of inputs into the correlation products NCHANS  =                 3072 / Number of (averaged) fine channels in spectrum BANDWDTH=                30.72 / [MHz] Total bandwidth                          DERIPPLE=                    0 / Deripple: 0=OFF, 1=ON                          DR_FLAG =                    0 / Deprecated MWAX deripple flag: 0=OFF, 1=ON     FREQCENT=               215.68 / [MHz] Center frequency of observation          TIMEOFF =                    0 / [s] Deprecated, use QUACKTIM or GOODTIME       DATESTRT= '2015-03-31T13:12:16' / [UT] Date and time of correlations start      RAWSCALE=                0.003 / Raw visibilities multiplied by this value      VERSION =                  2.4 / METAFITS version number                        TELESCOP= 'MWA     '                                                            INSTRUME= '128T    '                                                            CALFITID=           1720774022 / Calibration fit ID                             CALCDVER= '0.17.22 '           / Calibration fit code version                   CALDTIME= '2024-07-12T08:47:02.308203+00:00' / Calibration fit timestamp        CALCRTR = 'calvin  '           / Calibration fit creator                        CALITERS=                    3 / Calibration fit iterations                     CALITLIM=                 20.0 / Calibration fit iteration limit                QUACKTIM=                  4.0 / Seconds of bad data after observation starts   GOODTIME=         1427807540.0 / OBSID+QUACKTIME as Unix timestamp              DATE    = '2024-07-24T04:05:58' / UT Date of file creation                      COMMENT After an observation starts, the receiver hardware changes take a       COMMENT few seconds to stabilise.                                               COMMENT QUACKTIM and GOODTIME represent the start of the first uncontaminated   COMMENT data, rounded up to the next time-averaged data packet. Note that this  COMMENT time may be before the first actual data in some or all gpubox files.   COMMENT See metafits file documentation here:                                   COMMENT https://wiki.mwatelescope.org/display/MP/Metafits+files                 COMMENT https://wiki.mwatelescope.org/display/MP/MWAX+Metafits+Changes          HISTORY Created by user apache                                                  HISTORY Created on host mwa-django01p.curtin.edu.au                             HISTORY Command: "mod_wsgi"                                                     END                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             XTENSION= 'BINTABLE'           / binary table extension                         BITPIX  =                    8 / array data type                                NAXIS   =                    2 / number of array dimensions                     NAXIS1  =                  254 / length of dimension 1                          NAXIS2  =                  256 / length of dimension 2                          PCOUNT  =                    0 / number of group parameters                     GCOUNT  =                    1 / number of groups                               TFIELDS =                   21 / number of table fields                         TTYPE1  = 'Input   '                                                            TFORM1  = 'I       '                                                            TTYPE2  = 'Antenna '                                                            TFORM2  = 'I       '                                                            TTYPE3  = 'Tile    '                                                            TFORM3  = 'I       '                                                            TTYPE4  = 'TileName'                                                            TFORM4  = '8A      '                                                            TTYPE5  = 'Pol     '                                                            TFORM5  = 'A       '                                                            TTYPE6  = 'Rx      '                                                            TFORM6  = 'I       '                                                            TTYPE7  = 'Slot    '                                                            TFORM7  = 'I       '                                                            TTYPE8  = 'Flag    '                                                            TFORM8  = 'I       '                                                            TTYPE9  = 'Length  '                                                            TFORM9  = '14A     '                                                            TTYPE10 = 'North   '                                                            TFORM10 = 'E       '                                                            TUNIT10 = 'm       '                                                            TTYPE11 = 'East    '                                                            TFORM11 = 'E       '                                                            TUNIT11 = 'm       '                                                            TTYPE12 = 'Height  '                                                            TFORM12 = 'E       '                                                            TUNIT12 = 'm       '                                                            TTYPE13 = 'Gains   '                                                            TFORM13 = '24I     '                                                            TTYPE14 = 'BFTemps '                                                            TFORM14 = 'E       '                                                            TUNIT14 = 'degC    '                                                            TTYPE15 = 'Delays  '                                                            TFORM15 = '16I     '                                                            TTYPE16 = 'VCSOrder'                                                            TFORM16 = 'I       '                                                            TTYPE17 = 'Flavors '                                                            TFORM17 = '10A     '                                                            TTYPE18 = 'Calib_Delay'                                                         TFORM18 = 'E       '                                                            TUNIT18 = 'm       '                                                            TTYPE19 = 'Calib_Gains'                                                         TFORM19 = '24E     '                                                            TTYPE20 = 'Receiver_Types'                                                      TFORM20 = '10A     '                                                            TTYPE21 = 'Whitening_Filter'                                                    TFORM21 = 'B       '                                                            EXTNAME = 'TILEDATA'           / extension name                                 END                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             KhTile104Y
+EL_-756.49��\�k3C��#fhiklmoprsvxz|~���������A���	LMR400_524��?y�u?|&?}�.?�d?���?�l/?�>�?��5?�È?��?�>C?��u?��?���?�Q?�
+�?��^?���?�P�?�?��?��?Ū�?���RRIKhTile104X
+EL_-756.49��\�k3C��#fhiklmoprsvxz|~���������A���	LMR400_524�	p�?���?�V$?�7�?��?��5?���?��3?���?�d�?���?��?���?�Č?�H�?��?��?�Tt?�O�?��k?�k�?�)?��?١�?��`RRIJgTile103Y
+EL_-1191.96Cρ��C���WXYZ[[\]^_`acdefghjlnqtvA��	RG6_150�������������������������RRIJgTile103X
+EL_-1191.96Cρ��C���WXYZ[[\]^_`acdefghjlnqtvA��	RG6_150�������������������������RRIIfTile102Y
+EL_-900.98D$Z����C�t`abcdeffhiklnoqrsuxz}���A�?�	LMR400_400��)?2�x?606?9}X?;�?9��?<]�?>
+�?@��?Bcp?H�?I�?O��?T�?V��?Y�j?\nY?c_
+?g�?n�%?w��?�?���?�6?�"�RRIIfTile102X
+EL_-900.98D$Z����C�t`abcdeffhiklnoqrsuxz}���A�?�	LMR400_400�:�?E�p?K}�?N��?N�,?O�(?Q�	?UH9?Y�+?Z1�?`�?dyw?j�1?n}d?q�s?t�?w�K?~:?� ?���?�L�?�,?��=?�d�?���RRIHeTile101Y
+EL_-903.11D 1���C�MP`abcdeffhiklnoqrsuxz}���A�%	LMR400_400�E?�?�@? *�?#��?%��?&(�?'��?)�"?+~�?.�*?1��?4b�?6C?:�;??�%?B.�?DZ�?Ig�?NŲ?V��?_&?f~�?o[?u	�RRIHeTile101X
+EL_-903.11D 1���C�MP`abcdeffhiklnoqrsuxz}���A�%	LMR400_400�Y�?=�_?C%?Ew�?G�"?I�/?K�?M��?N��?QW�?R��?W��?\X?\Ҳ?`!?do?f��?i�R?o@=?v	?|��?�[k?��X?���?�RRIOlTile108Y
+EL_-757.49D��ĀB^C��fhiklmoprsvxz|~���������A�|�	 LMR400_524���?r!F?q�?u�?t��?v��?x�!?z��?���?�Wd?��?��G?���?�?��K?���?�"?�3�?���?���?�NZ?��r?�i�?�;]?ǘMRRI	OlTile108X
+EL_-757.49D��ĀB^C��fhiklmoprsvxz|~���������A�|�	$LMR400_524��?t'g?r|�?w3j?w��?}�M?�
+?�j�?�� ?�p�?�N}?��*?�N5?���?��?�Z1?�E�?��?�V�?��]?�(?�SQ?�.V?��?�;RRI
+NkTile107Y
+EL_-756.95B�	7Ć�#C��'fhiklmoprsvxz|~���������A��	(LMR400_524��?B]/?Č?F*�?G��?K�V?N}?P��?S^�?U�&?Z��?_�X?_+�?c��?i`W?m�/?pd`?w	�?���?���?�]|?�A�?��O?�a�?��aRRINkTile107X
+EL_-756.95B�	7Ć�#C��'fhiklmoprsvxz|~���������A��	 ,LMR400_524�	�f?�r?�)�?��?�ʢ?�'�?��?�k�?ާ|?�wi?�.l?�+�?�C?��?���?���?�lC@U@$�@	�i@�g@E�@�M@"�@*yKRRIMjTile106Y
+EL_-1192.31CT+�+A�C�5WXYZ[[\]^_`acdefghjlnqtvA��	0RG6_150�	�?%�$?(a^?(v-?&�3?)R?)u?(d?*v?,_�?-�?/tc?3p�?6�?66?9�?;��?>l5?F`0?K�L?R�n?[$�?e�d?m��?x{0RRIMjTile106X
+EL_-1192.31CT+�+A�C�5WXYZ[[\]^_`acdefghjlnqtvA��	4RG6_150�Ǥ?#�?%.�?$w5?%A[?&y�?&�?'��?* ^?+�g?-5$?/��?4@?8?9{?;v�?>+9?A�*?Gn�?L��?R�?\;?f��?o�?y�$RRILiTile105Y
+EL_-1095.55CAH�#]�C�;#]^_`abcdfgiklnoqrtvx{~��A�Ĝ	 8RG6_230���?>2R?A��?Dh)?B��?CW?Ed�?Fs?G��?L��?N��?Q�u?S��?X�B?Z��?[��?`f?c
+�?j�&?q�A?w�3?��%?��}?��P?��hRRILiTile105X
+EL_-1095.55CAH�#]�C�;#]^_`abcdfgiklnoqrtvx{~��A�Ĝ	<RG6_230�c�?G��?KV�?O�o?O��?P@�?SO{?T��?V�?]d�?a"?dbD?f`�?l?o-U?rf?xV�?|n�?�u\?�^R?�SH?���?��@?��*?���RRIs�Tile154YEL_-762.18�ʆfBB�C�Zfhiklmoprsvxz|~���������A�l�	LMR400_524��?^y�?^N�?b��?d��?iî?jE�?n=Y?l2b?q+�?w2�?|R�?�?��?�g?��?��}?�{�?�q�?���?���?�Z�?��h?�yF?���RRIs�Tile154XEL_-762.18�ʆfBB�C�Zfhiklmoprsvxz|~���������A�l�	LMR400_524¡.?nwY?n��?r�?t�i?yF�?{��?~w�?|��?�m�?��?�^?�y?�
+�?�t�?�+?��&?��m?��*?���?�;�?���?�??���?��RRIr�Tile153YEL_-762.01����k49C�t�fhiklmoprsvxz|~���������A�4K	 	LMR400_524o?VYI?Y�x?\Q�?^�?a)M?eh?j\�?l��?m1�?v��?��?�Y*?��S?�B?�3�?�)U?���?�e�?�|(?�Zf?�w�?�5�?���?���RRIr�Tile153XEL_-762.01����k49C�t�fhiklmoprsvxz|~���������A�4K	 LMR400_524¡�o?���?��V?���?��?�.?�7�?�+�?���?�Z�?���?��?���?�.�?�n_?��W?�k�?�S>?�D�?��T?�-�?�Hf?�Kx?�5�?�_hRRIq�Tile152YEL_-1100.79�PӖC�~�C� !]^_`abcdfgiklnoqrtvx{~��A�bO	RG6_230 P?"f�?$A�?$=�?$�j?$�?&�\?(i�?*�?-�'?,�?1��?5P�?7g?7�>?;`?@��?@�c?Gq?P~m?U7�?Z�?ex?n2/?x.�RRIq�Tile152XEL_-1100.79�PӖC�~�C� !]^_`abcdfgiklnoqrtvx{~��A�bO	RG6_230 8F?4m+?53�?5:D?5�y?5��?9�K?;B�?>�?@�X?@9?CV?F�*?Iw(?J6�?M��?Su�?So�?YԷ?bS?hD?l�H?yL?�d?��RRIp�Tile151YEL_-762.10ā��D#q�C��fhiklmoprsvxz|~���������A�v�	LMR400_524?[Gj?^�?^�_?`��?ar�?e[�?eX�?h��?l{�?r��?{P?}'�?���?�S	?��6?�-�?���?�dX?��+?�J?��?��C?��.?�ZsRRIp�Tile151XEL_-762.10ā��D#q�C��fhiklmoprsvxz|~���������A�v�	LMR400_524�?UX�?Y�?]�?`QY?c]�?e0?h<6?l�=?p��?w�R?�%�?�q ?�_ ?���?��?���?��?��,?�	�?��=?���?�#,?�h�?��=RRIw�Tile158YEL_-904.65Ù'LC��C��b`abcdeffhiklnoqrsuxz}���A���	!LMR400_400��?1(�?7]�?;j?;u�?>�?>��?=2�?@Ld?@��?A|?Eu�?K*�?O2�?Twq?WcZ?WZ?\G�?c,8?i�/?r݄?�6?���?��~?�4RRIw�Tile158XEL_-904.65Ù'LC��C��b`abcdeffhiklnoqrsuxz}���A���	%LMR400_400�?@��?D��?E��?D�H?H�?E��?Gu�?L�?NO,?O�(?Q�+?W�?]��?b�?d�]?h,?n�=?u�}?z��?�
+k?�mM?�wA?� �?�۴RRIv�Tile157YEL_-907.51ßAC��C���`abcdeffhiklnoqrsuxz}���A��	)LMR400_400�	?1�?3�[?6�
+?9�R?>�9?>�V?B<�?D�?GN�?H�`?J$Q?L6w?M=�?T>?Z��?\��?d{L?h�i?qE�?zg?�w??��?�~�?�*RRIv�Tile157XEL_-907.51ßAC��C���`abcdeffhiklnoqrsuxz}���A��	 -LMR400_400 fZ?=#�?@Q?C,?C�O?H�$?I�?Mǻ?O��?R�5?U?X<L?Z��?\�?ac�?j�R?i��?st]?w��?~�<?�A�?���?��?��)?�K	RRIu�Tile156YEL_-907.65÷9�C���C��J`abcdeffhiklnoqrsuxz}���A�a	 1LMR400_400�?-�?.�?1��?5��?9��?8�?;�T?=��?@h?A2w?D��?E�z?G"�?L�?PC9?T�?\�?c��?f�K?q��?y�?��U?��??�
+qRRIu�Tile156XEL_-907.65÷9�C���C��J`abcdeffhiklnoqrsuxz}���A�a	5LMR400_400 8F?N9�?O�<?S�?W��?Yl?X}7?]<�?_��?dt?g_?j��?l�{?m�?tX�?v�[?yE1?�b�?���?�$.?�h�?��?�E:?���?�*RRIt�Tile155YEL_-907.85ò�Ch׍C���`abcdeffhiklnoqrsuxz}���A��	9LMR400_400�F?B��?G��?J!�?I�|?K?M�?O�8?T�?W�y?[?�?^�?bU�?d�w?k�?m<�?p�?x?}�,?�p�?�
+�?���?���?���?���RRIt�Tile155XEL_-907.85ò�Ch׍C���`abcdeffhiklnoqrsuxz}���A��	 =LMR400_400 o?T��?X��?Z2D?Y�?^�&?b�]?f~~?jH?m��?r۶?x?zo?}��?��?�"�?��?��D?�3?��?�	�?��C?�6?�X�?�Z=RRI {�Tile164YEL_-763.34�W���C���fhiklmoprsvxz|~���������A�v	LMR400_524���?`�?`��?b�?c��?h5?i�o?n	?mP�?pe�?yY?}�W?��Z?�^T?�� ?��?��?�hk?�6
+?�ar?��?�s�?���?�/�?��RRI!{�Tile164XEL_-763.34�W���C���fhiklmoprsvxz|~���������A�v	LMR400_524��fT?ZTl?^Wr?`e?`��?e��?f��?nz?q��?r�?{�m?}��?�o?�<-?�Xs?���?�P?���?���?�ߐ?��$?���?�]�?�|�?�RRI"z�Tile163YEL_-764.11�LT���"�C��)fhiklmoprsvxz|~���������A�W�	 
+LMR400_524��p�?H�*?J?L}�?Ko�?O1&?O2�?Q	?U��?U˒?Z�?c?W?f��?k�?p�?p�9?u.?{��?���?��?�͍?�y?�	?�.U?��xRRI#z�Tile163XEL_-764.11�LT���"�C��)fhiklmoprsvxz|~���������A�W�	LMR400_524���^?bD�?a�`?gP�?iMZ?m�?m��?pK�?vk�?v�?�?��?��u?�;�?��p?��A?���?��?���?��?��m?�;u?�K?���?���RRI$y�Tile162YEL_-1103.41��!h���C��b]^_`abcdfgiklnoqrtvx{~��A���	RG6_230��B}?6�?9�?:3�?<pB?=�,??��?AV�?B�D?Frt?JD>?L�d?O+@?T��?W�?Y�?[e5?`��?iB�?pr�?t3?��+?��?��?���RRI%y�Tile162XEL_-1103.41��!h���C��b]^_`abcdfgiklnoqrtvx{~��A���	RG6_230���5?N-�?O��?Q�P?T��?V�S?Xw?[��?^�?a:�?f�?h"1?i�h?q�?t��?x��?{�?~��?���?�k?�jd?�;[?�wy?���?�RRI&x�Tile161YEL_-1271.33�̇���:C��RSTUVWXYZ\]_acdfhjlnqtwyA�iV	RG6_90����??��? N[?"TG?!c�?"��?$5�?%��?)��?-:d?0�M?4��?7�8?;9m?=�q?C�?F�^?J;�?R��?Z��?d��?m��?s�?}|�RRI'x�Tile161XEL_-1271.33�̇���:C��RSTUVWXYZ\]_acdfhjlnqtwyA�iV	RG6_90��ks?&i�?)�?*�D?,�Y?,-?.s�?0�U?2�?7Ti?:[h??!�?C?E�?I�[?L�S?S�;?Wu?Z�H?c�u?i?�?u��?~7@?��?��sRRI(�Tile168YEL_-1003.29À�{�"�C��}\]^_`aabcefhiklmnprtwz}�A�H	 "LMR400_320��!?*�?+��?*�?,I?,��?,ҍ?-AU?1�?3*�?4�5?9lg?:�:?>�??��?B�]?EQ�?F��?LК?SbG?[�A?b��?k�I?t�?y�5RRI)�Tile168XEL_-1003.29À�{�"�C��}\]^_`aabcefhiklmnprtwz}�A�H	&LMR400_320��ks?;1?>�?=��??4u??�:??�?A��?D��?J��?Lj(?P��?R�Q?T�?U�?Z7�?\�y?\�?c�5?g��?p��?y��?�?��G?�U�RRI*~�Tile167YEL_-909.09�)\��O+C���`abcdeffhiklnoqrsuxz}���Aܸ�	*LMR400_400���??�g??��?E��?E��?GY�?I{�?N�L?OB?OI�?TP�?W ?\U�?\�#?a0C?f�?f�#?m_?s�?y��?��n?�Y�?��?��@?�g�RRI+~�Tile167XEL_-909.09�)\��O+C���`abcdeffhiklnoqrsuxz}���Aܸ�	.LMR400_400��3!?q��?ss�?{�2?}��?~`�?�8K?���?�w�?���?��/?�y�?���?�ȟ?���?�a?��g?�7?�AF?�\1?��?�{E?���?���?�m�RRI,}�Tile166YEL_-910.73�ud���C�Ţ`abcdeffhiklnoqrsuxz}���A��	2LMR400_400���?8mP?=[�?C??H��?I�?J�u?L
+?LB�?K�&?L��?M _?S%�?W��?^w�?a�j?b`_?h�L?m�?q�j?{G�?�}@?���?��?���RRI-}�Tile166XEL_-910.73�ud���C�Ţ`abcdeffhiklnoqrsuxz}���A��	6LMR400_400��a5?�5Q?��G?��?�YA?��3?�F�?�k$?���?�ɗ?��?���?�[?���?��m?���?��?�ϼ?�[�?�}P?�`�?��?�mH?ﾝ?�eRRI.|�Tile165YEL_-765.46����(�XC���fhiklmoprsvxz|~���������A߭�	:LMR400_524��@?]��?^_C?bڅ?c�/?df�?f)k?i#�?l(?n��?t�\?zj�?~7?���?�?�gc?��?�c?��
+?�m?��\?��v?��7?���?�"�RRI/|�Tile165XEL_-765.46����(�XC���fhiklmoprsvxz|~���������A߭�	>LMR400_524��̺?���?��?��?�^?�å?��?Ŭ�?�l&?��f?�]#?��?�{'?�x'?�Ǣ?���?�C?��?�h@@^@��@�P@Z�@�hRRI03JTile074YEL_-1096.75�0���uC���]^_`abcdfgiklnoqrtvx{~��Aߠz	RG6_230���v?;�%??N?@��?A�?@�??D��?F��?Hl�?L�Y?O�?T?U=�?[3�?^�?a3�?f�Z?h�?pWu?{?��d?���?�~�?�m?��gRRI13JTile074XEL_-1096.75�0���uC���]^_`abcdfgiklnoqrtvx{~��Aߠz	RG6_230��z�?�1�?��?��?�~�?��k?���?��?�K|?�s?��?��?��>?�:�?�?���?��+?�OJ?�^�?�G?�<?�S�?�*?��?�=�RRI22ITile073YEL_-757.72�D.VÎ:C�sTfhiklmoprsvxz|~���������A݊	LMR400_524��̾?W�?Z�0?^�O?_#�?b��?dǛ?g��?h�?k�?rD??v؜?|�?�dn?�7?��?��i?���?�E�?��Q?��9?�/�?�K?��?��RRI32ITile073XEL_-757.72�D.VÎ:C�sTfhiklmoprsvxz|~���������A݊	 LMR400_524�ɨ�?q�_?u��?{�6?{@"?~X]?�3�?��`?��X?�?�F�?�̻?�z~?���?��]?�k�?�Ԋ?���?�1�?�d_?���?��?�,�?�b?�>�RRI41HTile072YEL_-1096.00B�L��F1�C��]^_`abcdfgiklnoqrtvx{~��A�T	RG6_230����?>"N?@�?A�`?B�k?D�?F�1?KED?Q�?W��?[�'?^�f?cE�?jn?mM*?q�?vD�?zD�?��?�� ?��t?��=?�6�?�e�?���RRI51HTile072XEL_-1096.00B�L��F1�C��]^_`abcdfgiklnoqrtvx{~��A�T	RG6_230��u�?>�K?@��?E�*?F~L?G��?K�J?N�0?S}u?[�P?^\?c"�?kCt?t	�?w$?}�{?���?��?���?���?�?���?�7??��??���RRI60GTile071YEL_-1097.16C=˅�C��C���]^_`abcdfgiklnoqrtvx{~��A��	RG6_230��Q�?4%�?73�?9�?;�?>Y�?@��?B#�?CU�?E��?G�<?I��?L;�?RG9?T�\?Zz�?aI?f ~?o�?u�9?{ٛ?���?�B?��D?�ȫRRI70GTile071XEL_-1097.16C=˅�C��C���]^_`abcdfgiklnoqrtvx{~��A��	RG6_230��(�?H�h?H~�?J��?N
+}?RG�?Va$?T�b?U?X�~?\�4?c_?f�?hA?h?l��?u�J?z��?�N,?�9?��?�NI?��	?��?�1RRI87NTile078YEL_-1192.71C�=�ø��C���WXYZ[[\]^_`acdefghjlnqtvA�	#RG6_150��=b???�?��?�?��?�h?�@?;�?ظ?{s?�?!l�?$�?&t�?'�B?,��?-�!?1�a?6��?<�D?C��?I�a?SE�?[�RRI97NTile078XEL_-1192.71C�=�ø��C���WXYZ[[\]^_`acdefghjlnqtvA�	'RG6_150��kv?h�?)�?!'*?"~?#?$�?':�?(��?*6?,;Y?.�e?2�?4�?9!�?:��?>�?Aj?F3C?K#?Q�I?Xyl?`��?i��?u
+�RRI:6MTile077YEL_-1266.70C7öCC�ޘRSTUVWXYZ\]_acdfhjlnqtwyAޑ~	+RG6_90�ș�?-�?1Հ?3I�?7G{?8JA?8Vd?90=?:��?<��?@�?F��?K|4?N�?U)?Ywx?`��?d�t?i�?r�1?{=e?�	�?�XL?���?��)RRI;6MTile077XEL_-1266.70C7öCC�ޘRSTUVWXYZ\]_acdfhjlnqtwyAޑ~	 /RG6_90�Ȟ�?V�?Yz�?Z9z?^j?^��?aP�?d�&?i�o?o�?qt�?v�~?y�?}�@?���?�̝?�0?��(?�c�?��?��?�|�?���?�A�?�W
+RRI<5LTile076YEL_-1096.26C9/���h�C�`B]^_`abcdfgiklnoqrtvx{~��A�Z	3RG6_230��ǟ?=Gk?>�?AG2?B�y?B�>?D�E?F�<?J��?N,F?P��?U3e?Xw�?]�?_%�?cj�?g-?j�R?s}�?z��?�
+�?���?�,�?�r�?�XRRI=5LTile076XEL_-1096.26C9/���h�C�`B]^_`abcdfgiklnoqrtvx{~��A�Z	 7RG6_230��8C?F�?Iq�?KUD?MsC?O.�?P�*?SA?Uҟ?X	?Y�?^W�?bo�?iP�?k�O?ps1?tK6?u��?}��?�O�?��?�O~?��s?��%?��+RRI>4KTile075YEL_-1096.79�~���W�C��5]^_`abcdfgiklnoqrtvx{~��A�`�	;RG6_230�������������������������RRI?4KTile075XEL_-1096.79�~���W�C��5]^_`abcdfgiklnoqrtvx{~��A�`� ?RG6_230�������������������������RRI@Tile024YEL_-593.60C���¹�+C���WXYZ[[\]^_`acdefghjlnqtvA��	@RG6_150����?&<O?'?'��?+ ?-��?/��?/�'?3G?7�A?:Q�??��?C37?E&�?H�9?J�h?O��?S-�?[�~?cz?n�o?y�>?�ش?�;�?�FIRRIATile024XEL_-593.60C���¹�+C���WXYZ[[\]^_`acdefghjlnqtvA��	DRG6_150����?)�u?*�k?,Z?-�A?.�0?/"9?-��?0�T?2$?5��?;w?=��?C�v?J8�?M}'?R�8?Vs�?\��?b+�?i�9?n?t��?}*�?��MRRIB
+Tile023YEL_-666.11C�mP��U�C��fRSTUVWXYZ\]_acdfhjlnqtwyA���	HRG6_90��G�?*
+�?,�9?/�]?2R�?3u�?5��?6�??:��??�?Dn<?J|i?Nô?R�d?V��?Ys�?`X�?dt�?k��?v2�?�?��+?��?��?���RRIC
+Tile023XEL_-666.11C�mP��U�C��fRSTUVWXYZ\]_acdfhjlnqtwyA���	LRG6_90���s?>�K?C�?E�_?I�^?K��?M��?P�?T.N?Zn�?_�??gWo?jί?pT�?v�?z�?�q�?��?�l�?��r?���?��?���?��?��RRID	Tile022YEL_-667.52C������C��NRSTUVWXYZ\]_acdfhjlnqtwyA���	 PRG6_90����?7?:+�?<�!?>Ɛ??��?B@�?E�?H&�?N��?S�w?Z�~?\5?a �?gJO?mP?r�?w�?~t?���?�`�?�P?�n_?��H?�ސRRIE	Tile022XEL_-667.52C������C��NRSTUVWXYZ\]_acdfhjlnqtwyA���	TRG6_90��Q�?;b�??C�?B��?Ek�?Gt�?I�D?Lm?O��?V�?[�X?bL�?c$}?g��?n�`?uJ�?zq}?|dm?��'?��?�Q�?�]�?�mP?���?��RRIFTile021YEL_-667.01C�N5��bC��BRSTUVWXYZ\]_acdfhjlnqtwyA�a=	XRG6_90��fT?9m�?<�?<�??�??t�?@�7?C&@?EA?J�7?OK�?V�b?X\�?\ٚ?b��?i"?p��?vF(?~�?�'�?�53?��H?��k?���?���RRIGTile021XEL_-667.01C�N5��bC��BRSTUVWXYZ\]_acdfhjlnqtwyA�a=	\RG6_90����?N�9?Q��?R��?V�2?V��?Y�?]�?a7�?g��?m�`?v"?vfB?{?�O�?�>�?��A?�g?�Q�?��?��?���?�ϯ?�Fh?�"�RRIHTile028YEL_-666.70C���0�C�O�RSTUVWXYZ\]_acdfhjlnqtwyAޚ�	`RG6_90���J?$X?(��?*3�?,?, ?.T?0�?4��?7��?<{s?Cm?Ef�?K-�?P�H?S�V?X��?\��?b�w?kƘ?s�s?F�?�Y�?�65?��?RRIITile028XEL_-666.70C���0�C�O�RSTUVWXYZ\]_acdfhjlnqtwyAޚ�	dRG6_90��
++?3�y?8�B?9k?;��?;�?=y	?@�z?D՗?He�?L�|?T�?U��?Z��?_��?b��?g�?l��?r,\?{��?���?�pM?�L�?�y?���RRIJTile027YEL_-593.76C�Q���C��%WXYZ[[\]^_`acdefghjlnqtvA���	hRG6_150��@?&�8?)if?*��?+�?-C>?-��?/�?39Q?5c?;��?AJ_?D��?G�_?I�0?P%?S��?U?Z�C?`�9?lp�?r"3?~`Z?�*y?��FRRIKTile027XEL_-593.76C�Q���C��%WXYZ[[\]^_`acdefghjlnqtvA���	lRG6_150��Q�?"e.?%v:?(ɗ?+t�?-��?.�w?1,�?4�[?67d?9I?=2�?>��?AE�?BW�?G�H?L�?N��?X7?a�o?l6�?pe�?z|�?��J?�	RRILTile026YEL_-594.23C��¦�C��fWXYZ[[\]^_`acdefghjlnqtvA�!/	 pRG6_150��\?}�?k�?��? ק? �?#T�?#�$?&I�?*??-�y?2��?4E�?8�?<��?=�?Bw,?E�c?K(F?P|�?Y��?b_�?kf�?w��?�D#RRIMTile026XEL_-594.23C��¦�C��fWXYZ[[\]^_`acdefghjlnqtvA�!/	tRG6_150����?!�-?"�!?%�U?&Az?(3�?+�7?-��?1r�?3Za?6�H?;�?>Zg?C��?FT�?H]�?N==?Oc?V��?\�d?g�?j`;?u4�?�\�?��(RRINTile025YEL_-593.87C�kd��C��bWXYZ[[\]^_`acdefghjlnqtvA��`	xRG6_150���s?�?�}?��?��?�?��?,�?��? ��?#�?%� ?'��?+g?.�??39�?6zd?:�2?B��?IG:?SX?\�{?f}�?r�W?~<RRIOTile025XEL_-593.87C�kd��C��bWXYZ[[\]^_`acdefghjlnqtvA��`	|RG6_150��(�?$(�?$�_?%�?$ea?$��?%�0?)��?.�S?1�M?2H�?7�?<��?D�	?K,-?Q�9?V;<?X/�?\̕?_��?i	�?o�?y�A?�߳?�N�RRIPTile014YEL_-583.00C�7+e`C��?WXYZ[[\]^_`acdefghjlnqtvAފ	ARG6_150����?*w?,t/?-j�?.�)?-"�?*�p?.�4?2~�?2��?2��?5P	?7v-?9��?>��?Bm?Dl!?Fah?JЭ?OQ�?X�Y?aѲ?l�?rF�?|lyRRIQTile014XEL_-583.00C�7+e`C��?WXYZ[[\]^_`acdefghjlnqtvAފ	ERG6_150>B�N?,�l?.my?0{t?0'�?0��?17?1�?6}?5Z�?6>�?:m
+??j?E�?H%<?I�?J�/?L,�?R��?X�U?dH?l�?u'�?{.?�=RRIRTile013YEL_-582.91C��±%C���WXYZ[[\]^_`acdefghjlnqtvA߶ IRG6_150>�p�?#"?#i?&�s?%W?%L�?&�?'	d?)�?,�?/k;?1a�?4�w?8�?6��?914?;,�?>�?BvB?Ix�?S�?Y�%?cr>?j�]?r7�RRISTile013XEL_-582.91C��±%C���WXYZ[[\]^_`acdefghjlnqtvA߶	 MRG6_150>�fU?/�?1H?4�?4��?5U�?7sw?6�+?:>F?<��?>}?>��?B�^?D��?E�(?K�?P�{?R�U?V�5?_�?fv?k��?tV?|*?��@RRITTile012YEL_-655.66C�¾��C��{RSTUVWXYZ\]_acdfhjlnqtwyA�O	QRG6_90>��?2[,?7��?79'?8�H?:^?;R+?>!�?AL?BN�?F�^?L�w?O�?T�?YQG?^�?d��?g�?m��?wD??�1N?��6?���?���RRIUTile012XEL_-655.66C�¾��C��{RSTUVWXYZ\]_acdfhjlnqtwyA�O	URG6_90>�G�?5k�?;3�?:�A?>H`?@��?A�b?Ee�?I��?K��?Q ?V��?Y��?_3;?eќ?i`�?m_?oН?u�?~�p?�SW?� �?���?�5$?���RRIVTile011YEL_-656.14C��1���C��hRSTUVWXYZ\]_acdfhjlnqtwyA�b�	YRG6_90?6�)?:z�?=�??��?A��?D/?Iv?M�?R4?Uon?Z�Z?[��?_��?d��?i�,?p�B?u�&?|w�?�,p?��?�M1?�LQ?�'|?��qRRIWTile011XEL_-656.14C��1���C��hRSTUVWXYZ\]_acdfhjlnqtwyA�b�	]RG6_90??��?D�?FLN?H7?Ic?K3�?P	�?T_�?YN?]W�?c�{?d��?h��?n6I?r��?y��?~3�?�?�d?�d?�N?�z~?�+o?�!%RRIXTile018YEL_-655.39C\E`�T{C��dRSTUVWXYZ\]_acdfhjlnqtwyA��*	aRG6_90>�Q�?$W�?'?)��?+=m?+�?,�~?/�o?4=�?8:�?;@�?A�?D��?H�?K��?O��?U�?Y�
+?_2q?i`?o�H?|M-?�CO?��?��kRRIYTile018XEL_-655.39C\E`�T{C��dRSTUVWXYZ\]_acdfhjlnqtwyA��*	eRG6_90��\?=�E?A�?B�K?E.�?Df�?Gy�?J�l?O_?T2�?W��?_!�?a��?ew�?iW�?nXE?t�?x��?~�?�k?�0C?���?��?��A?���RRIZTile017YEL_-583.32CrGmº�'C���WXYZ[[\]^_`acdefghjlnqtvA��O	iRG6_150>�fU?&D�?'��?)��?+�v?-I�?-.�?.K?1��?2�F?5>>?6s�?:?<C?=~�??G�?BJ�?DD7?K�?Q��?[_�?c�z?m��?t�?|��RRI[Tile017XEL_-583.32CrGmº�'C���WXYZ[[\]^_`acdefghjlnqtvA��O	 mRG6_150>Ǯ?A�m?B�1?E�C?GFP?H��?ID�?J�}?N�R?Ovy?Rڭ?S�?YY�?\�#?`%p?c�?e��?eĈ?l�S?pN�?y�?���?��~?�$9?�~tRRI\Tile016YEL_-656.34Ct��̦fC��RSTUVWXYZ\]_acdfhjlnqtwyA�K`	qRG6_90����?(}�?+�@?+:E?-�?-��?-"K?.��?1��?6� ?;@�?@	�?C�!?E{_?Ig?M)�?Q�?T�?Y�K?b��?m��?wm�?��p?��z?��RRI]Tile016XEL_-656.34Ct��̦fC��RSTUVWXYZ\]_acdfhjlnqtwyA�K`	uRG6_90>��F?:��?<�?<��?>�?AE�?CC�?EZ?GD"?J
+�?L�`?R�?W7�?[A?_m?eL�?h�G?kn ?n�d?x��?��~?�w@?�>h?���?��RRI^Tile015YEL_-583.02Cxs�­�HC��dWXYZ[[\]^_`acdefghjlnqtvA�`	yRG6_150�������������������������RRI_Tile015XEL_-583.02Cxs�­�HC��dWXYZ[[\]^_`acdefghjlnqtvA�`	}RG6_150�������������������������RRI`C^Tile094Y	EL_-497.08C���:7LC���]^_`abcdfgiklnoqrtvx{~��A��Z	BRG6_230� ?@��?Bi\?F�g?G�/?Hx�?J�?MT?Oz?S�<?W�"?^��?cm?h��?k��?r)c?s�G?u�?~��?��+?���?��?���?���?�XRRIaC^Tile094X	EL_-497.08C���:7LC���]^_`abcdfgiklnoqrtvx{~��A��Z	FRG6_230��F?A��?D�?G͏?I�?KJE?N�?Q�{?TL�?Xw�?\��?`�x?a��?f�?h�?o��?tM�?v��?�Lg?�O�?�B	?��P?�P{?�-0?�&�RRIbB]Tile093Y	EL_-593.79C�k�� ��C�r-WXYZ[[\]^_`acdefghjlnqtvA�L	JRG6_150� ��?,�?I�?n$?!+�?!
+�?$)G?#�?$�H?&��?(+?)�T?. k?2�_?3/?78R?<�Y?=�?B�7?IBK?P��?Ys?b��?i�?r�
+RRIcB]Tile093X	EL_-593.79C�k�� ��C�r-WXYZ[[\]^_`acdefghjlnqtvA�L	NRG6_150� ��?46�?7>8?9c?;5?<�&?=��?>/Z?A�?@�f?C��?GD�?L�?PT�?R7�?U��?W��?[D�?`H�?d�4?o�?w��?�k	?���?�TSRRIdA\Tile092Y	EL_-497.18CA�RC-l�C��]^_`abcdfgiklnoqrtvx{~��A��	RRG6_230� �Z?*�w?.�6?0 %?0n�?1o?1��?3�v?6??9�?=uV?B��?Eb�?H�l?JL�?O��?TkH?XX
+?^��?e�G?m�=?w�"?��?�H�?��RRIeA\Tile092X	EL_-497.18CA�RC-l�C��]^_`abcdfgiklnoqrtvx{~��A�� VRG6_230� �o?E��?H��?J�?LVO?N�?O��?P�?R�?W]�?Z�$?a|d?d��?iD�?j`f?q,?v��?x`O?M�?��Z?�M?�a!?��T?���?��RRIf@[Tile091Y	EL_-398.60CK��C�C���\]^_`aabcefhiklmnprtwz}�AᏘ	 ZLMR400_320� h�?Cw�?F3�?G�?H�A?G+�?I|�?J��?M�?Q�V?Sh�?W�?W��?[' ?\�?_?a��?f��?k��?rSy?z
+?���?�L�?��?�;�RRIg@[Tile091X	EL_-398.60CK��C�C���\]^_`aabcefhiklmnprtwz}�AᏘ	^LMR400_320� �e?M�?P;�?R3�?TL�?T�@?U�?X|?]a�?`V�?bq`?f�?iw?nك?o��?p�p?u��?z�f?��?�zu?���?�E�?���?�S�?�rRRIhGbTile098Y	EL_-497.40D�B�C�(1]^_`abcdfgiklnoqrtvx{~��A�\_	bRG6_230� Q�?=8b?>�?B~y?D�?Cs?C��?D�C?H%C?L>�?PFk?Q��?S+X?XrB?[Ӯ?_�v?d@?h�?pB�?wR�?~]r?�3�?��?�NS?��RRIiGbTile098X	EL_-497.40D�B�C�(1]^_`abcdfgiklnoqrtvx{~��A�\_	fRG6_230� ��?N��?Ph�?T�w?U�'?W�?W�?YkL?^�?b%�?d��?hФ?l�?q��?v�D?x^y?~r?�t;?�d?�?��?�k�?�Qv?�(�?��RRIjFaTile097Y	EL_-497.70D
+-BH�C�+]^_`abcdfgiklnoqrtvx{~��A�wd	 jRG6_230�!3'?:?:�?<A0?;{|?=�?>l�??��?A�?F8�?I2�?O^�?P�?T�X?V��?]s�?_N?`� ?k~~?t}�?y�j?��?�zp?��?�SxRRIkFaTile097X	EL_-497.70D
+-BH�C�+]^_`abcdfgiklnoqrtvx{~��A�wd	 nRG6_230� �1?O��?Q�?S��?S��?U�	?We�?Zҩ?\,?_��?bIj?i�?ly�?p�f?uoZ?z��?|��?��?�֟?���?�i�?��/?��"?�7�?���RRIlE`Tile096Y	EL_-497.59C��%���C�|�]^_`abcdfgiklnoqrtvx{~��A��	rRG6_230� 8F?D��?F,t?I}�?I~�?K��?O@�?P�!?Q�?W��?Y??]��?_=)?c�?i$]?m1�?qQ6?s�?|�?��_?��?���?���?��X?���RRImE`Tile096X	EL_-497.59C��%���C�|�]^_`abcdfgiklnoqrtvx{~��A��	vRG6_230� }e?F��?G��?Ku�?L�?N��?R
+:?VR$?Wi�?]��?]��?d~?ep�?k��?n��?s%�?v�g?y%�?���?���?��?���?��?���?�L�RRInD_Tile095Y	EL_-497.36C���`�bC���]^_`abcdfgiklnoqrtvx{~��A�9^	zRG6_230� �e?Dm?D)W?D��?FRf?I��?JSn?H�`?HSI?M�?O9�?S��?X�;?]S?a!�?d��?igJ?m��?wX}?}��?�K?��r?���?��B?���RRIoD_Tile095X	EL_-497.36C���`�bC���]^_`abcdfgiklnoqrtvx{~��A�9^	 ~RG6_230��?@�g?BG?CD�?D@9?HE.?K��?M��?R�?XY?X{�?Z�m?\��?b�?cu?g>�?j=?m�?u�Q?{��?��]?��?��M?�f=?��RRIp;TTile084YEL_-479.65C��'vFC��]^_`abcdfgiklnoqrtvx{~��Aݟ	CRG6_230�������������������������RRIq;TTile084XEL_-479.65C��'vFC��]^_`abcdfgiklnoqrtvx{~��Aݟ	GRG6_230�������������������������RRIr:STile083YEL_-481.56C����C���]^_`abcdfgiklnoqrtvx{~��A�m	 KRG6_230 ��?*��?+P�?.��?06s?2A9?2�?2{l?2�u?5�??:�-??�?C��?I�?N�9?Q�M?TC�?S��?Y�W?_��?g�?r�&?|��?��5?�DbRRIs:STile083XEL_-481.56C����C���]^_`abcdfgiklnoqrtvx{~��A�m	ORG6_230.	?.��?0�b?4:?5ً?8��?;"?=4�?@�?D�?Br|?D�[?F��?Lu�?M$�?Q�?U��?Y�?c;?l¡?s�?~�O?� �?�v�?��RRIt9RTile082YEL_-577.51C�?;��C�H�WXYZ[[\]^_`acdefghjlnqtvA��b	SRG6_150 V�?(b?*?*Me?)�"?*B*?+�n?,�(?/B?0��?2��?5R?7S5?:�?;��?>W�?A��?Cô?I��?P�d?Ws|?_`"?i�?q�?y~�RRIu9RTile082XEL_-577.51C�?;��C�H�WXYZ[[\]^_`acdefghjlnqtvA��b	WRG6_150 8F?%"�?'��?(�L?)}??*�d?+5�?,O�?0�?1�?3}	?6��?8�*?<�1??[/?A2�?EO*?F��?K�?Q3[?X�F?`	?jr�?tu�?|�RRIv8QTile081YEL_-481.45DM?� w
+C�b�]^_`abcdfgiklnoqrtvx{~��A�.�	[RG6_230�������������������������RRIw8QTile081XEL_-481.45DM?� w
+C�b�]^_`abcdfgiklnoqrtvx{~��A�.�	_RG6_230�������������������������RRIx?XTile088YEL_-649.84C£Ã�C��7RSTUVWXYZ\]_acdfhjlnqtwyA➗	cRG6_90 ��?*��?-9�?/�?1�|?3�j?4��?7/�?9?>?<��?A��?H�?I�{?MZ�?R�c?U��?\�?`�,?e�2?oK�?v$�?��?�bj?��j?��	RRIy?XTile088XEL_-649.84C£Ã�C��7RSTUVWXYZ\]_acdfhjlnqtwyA➗	 gRG6_90��?>�?@��?C�Y?E�F?G�a?H�_?K�?L��?P��?U{�?]T�?]�?bg�?hdE?m�y?u��?{�M?��?�M�?�MS?�y�?�\�?���?��RRIz>WTile087YEL_-480.85C��u�Ź�C�A�]^_`abcdfgiklnoqrtvx{~��A��/	 kRG6_230 L�?34?4�?6�3?7�P?8�J?9�t?:�?>F�?C`�?Dٛ?H��?K��?Pv6?RT?WD?Y��?]x�?d؎?k \?r`?~��?�3�?�Ҝ?��@RRI{>WTile087XEL_-480.85C��u�Ź�C�A�]^_`abcdfgiklnoqrtvx{~��A��/	oRG6_230L�?K
+Z?L�?Nb(?N�R?Qt�?S̍?U�"?YV?_�?aLB?f5�?h�}?m��?o��?u.�?yl�?|X�?�hz?�x}?��f?��?�@h?�96?��<RRI|=VTile086YEL_-481.50C�r���XC��]^_`abcdfgiklnoqrtvx{~��A�_�	sRG6_230 �?Kh?L	?K}�?K׹?N�?Q#�?Q�O?UR*?Y3�?[�?]~�?bHw?h{?k�?q�?w M?y�(?���?���?���?�`�?��U?���?��RRI}=VTile086XEL_-481.50C�r���XC��]^_`abcdfgiklnoqrtvx{~��A�_�	wRG6_230 
+1?cT?c��?c�L?f2�?h�u?j5?j:�?n��?s�G?t�1?v�=?|C?�`�?��i?�$�?�}�?�\�?�Ɖ?�v?�*o?�Ճ?�G+?��
+?��>RRI~<UTile085YEL_-481.51C�t�����C��f]^_`abcdfgiklnoqrtvx{~��A��?	{RG6_230�������������������������RRI<UTile085XEL_-481.51C�t�����C��f]^_`abcdfgiklnoqrtvx{~��A��?	RG6_230�������������������������RRI�[|Tile124YEL_-1673.73DL�VCc��C�߾\]^_`aabcefhiklmnprtwz}�A�x�	�LMR400_320.?!$�?#�&?$�v?&n?&0�?'�{?*s{?-��?0s�?2�w?5��?6�=?8��?;̻??�X?A۹?F!?J��?O#$?Y�?]ѣ?gj�?o�?v�%RRI�[|Tile124XEL_-1673.73DL�VCc��C�߾\]^_`aabcefhiklmnprtwz}�A�x�	�LMR400_320�)?2��?6�V?8C�?9j�?8��?:J�?<|?>ǩ?Ct/?H"/?Kǥ?Ka�?O��?S�]?T��?XQ�?Z�8?^��?cT?n�?s��?{��?��?�kRRI�Z{Tile123YEL_-1578.62D@oCnO\C��
+`abcdeffhiklnoqrsuxz}���A���	�LMR400_400��?&�C?'�b?,=[?,�t?-��?1�k?39�?3��?3ו?8�?<��?A�?D��?D�?G��?K�j?O�?X�?\�?c��?lf�?s�Q?�Be?�ufRRI�Z{Tile123XEL_-1578.62D@oCnO\C��
+`abcdeffhiklnoqrsuxz}���A���	�LMR400_400.?@��?C��?G�`?H��?G#?M!i?N�K?O��?Q��?VWQ?Y��?\��?`�?d��?i?�?h��?ne�?w��?y�K?���?��a?��^?�.5?��RRI�YzTile122YEL_-1434.47D��C�sC��'fhiklmoprsvxz|~���������A��� �LMR400_524�?R�?U��?U�G?Wۑ?Z�?]bk?^�)?c�?i��?pw�?t��?x��?��?���?�k�?�h?�=?���?��9?��?�6?�m?��?��RRI�YzTile122XEL_-1434.47D��C�sC��'fhiklmoprsvxz|~���������A���	�LMR400_524�{?[�)?_�l?_��?a��?fΆ?h�?kCw?m�]?tw?{'�?��<?�ͳ?�e�?���?���?�f?�	�?���?�ŏ?�m+?�\?�v^?�S?��bRRI�XyTile121YEL_-1435.63D��)D3'C�Mfhiklmoprsvxz|~���������AݣL	�LMR400_524��?W��?XD?\��?`�$?`d"?c��?d��?m�V?o�A?q*?u�}?xxm?|�?�"??�`$?�B0?���?��c?��?��~?��?��\?��?�o�RRI�XyTile121XEL_-1435.63D��)D3'C�Mfhiklmoprsvxz|~���������AݣL	 �LMR400_524?j4!?m!�?pn�?s؈?w(�?w��?}
+C?��?�J?�Tt?���?���?���?���?�!�?��T?�p�?�!j?�?���?�C?��:?��?��cRRI�_�Tile128YEL_-1434.03D���?��C��Lfhiklmoprsvxz|~���������A�	�LMR400_524�??vy?C�?C�J?B"V?E��?KA�?M��?O�?R\	?T��?Z�?^_8?amJ?f��?j(?m�
+?yq?|�:?���?�C*?�2�?�H[?�_Z?�h6RRI�_�Tile128XEL_-1434.03D���?��C��Lfhiklmoprsvxz|~���������A�	�LMR400_524��?`6�?b�?b��?d��?g�?l��?qT�?r�?v�
+?{��?��?� �?��-?��?��?�n2?�a�?�SC?��7?�lv?��9?��R?��?�j�RRI�^Tile127YEL_-1578.28Dm�}B�`C�#3`abcdeffhiklnoqrsuxz}���A߫�	�LMR400_400�R?&ۮ?*��?*v�?,v�?-�X?0t?4#�?5i�?8�?=x�?B�?Fԧ?H9?LE|?O�?S r?Z�?^+�?f_m?oZ?wHf?��?���?��YRRI�^Tile127XEL_-1578.28Dm�}B�`C�#3`abcdeffhiklnoqrsuxz}���A߫�	�LMR400_400Q�?B�?FQ�?E��?G�4?JU�?L"�?Q��?R��?Tn=?Z�?a�&?e`<?f�`?k5�?n�G?p�H?yX�?|�T?��?��?�)@?�r�?��E?�o�RRI�]~Tile126YEL_-1434.37DJ���k~�C���fhiklmoprsvxz|~���������A£a	 �LMR400_524R?eC�?j�W?j��?p{�?u�7?uqo?w=�?y�~?z8�?�3�?�9?��?���?�w�?��K?��+?�K!?��?��?�C�?��N?���?���?�RRI�]~Tile126XEL_-1434.37DJ���k~�C���fhiklmoprsvxz|~���������A£a	�LMR400_524��?rf�?xr�?z�?�?�8�?��i?��k?���?��i?���?��?�\A?��
+?���?�7R?��?��q?�5�?�&|?��?���?�?���?Ǡ�RRI�\}Tile125YEL_-1435.33DK�RBuŢC�!fhiklmoprsvxz|~���������A�$�	�LMR400_524��?]�D?]��?ba]?d�0?i�?g��?l;?m�B?p�X?yJk?~#*?��G?��?��?�7c?�q?�i�?�Lx?��?���?���?���?�P|?��DRRI�\}Tile125XEL_-1435.33DK�RBuŢC�!fhiklmoprsvxz|~���������A�$�	�LMR400_524��?x��?v��?~]�?��1?�?�#[?�Nk?���?���?�Q?���?�6�?�#t?��?��?��0?��e?�iY?��_?��8?�k?��?µ�?�|�RRI�SrTile114YEL_-1582.82D_RÀy�C���`abcdeffhiklnoqrsuxz}���A��	�LMR400_400�P�.?+j%?.�?1�?2�~?3�i?5mG?9i+?9|A?=Y�?@W�?D��?G�/?Kd�?N�a?R� ?V[�?Y�P?_B�?e��?p4>?z<?��?�}l?�@�RRI�SrTile114XEL_-1582.82D_RÀy�C���`abcdeffhiklnoqrsuxz}���A��	 �LMR400_400�O�?)�i?.��?0�q?1�!?3�?4�?89q?86?:h�?>j�?Cjv?GAG?H��?L�{?P�5?Se�?X�m?\A?c?i�?qf�?xə?�x?��5RRI�RqTile113YEL_-1435.76DCh��-��C��fhiklmoprsvxz|~���������A�U'	�LMR400_524�Np�?_w�?\�6?a�,?d_�?kI�?l$�?r�?w�?vb�?{��?�V�?��I?�Y?�?��?��{?��?�_�?���?��J?��?���?���?�|(RRI�RqTile113XEL_-1435.76DCh��-��C��fhiklmoprsvxz|~���������A�U'	 �LMR400_524�P��?h-�?hor?k\)?l!?tb�?t��?y0�?~v�?�b&?��7?�?�?��?�;0?��1?�$W?�_�?��	?�O�?�a?�N?�*�?�p?��?�b7RRI�QpTile112YEL_-1582.47D`�B�c&�C���`abcdeffhiklnoqrsuxz}���A�m2	�LMR400_400�PM?�2?*R?�"?�
+?�;?F�?!s�?#o?&�E?*H�?-��?20�?6�?6�G?:y?<�?A�}?H�?M��?W@?_X�?eaJ?q�'?}'wRRI�QpTile112XEL_-1582.47D`�B�c&�C���`abcdeffhiklnoqrsuxz}���A�m2	�LMR400_400�O�k?*3�?,�t?0+�?1�~?3K ?6�?9��?9�k??8h?B�#?E�]?I��?L�?Q9?S�A?Ug�?Z�W?_fo?dm�?n�?wI?}�V?��h?�(�RRI�PoTile111YEL_-1436.83Dϗmæ�C���fhiklmoprsvxz|~���������A�O�	�LMR400_524�Oh�?H�|?J̓?Lz�?L�?QG�?Q�+?T��?W��?Y3?_��?g�??h�?l�&?r�|?v%�?uN?~��?�9A?���?�ܤ?�%�?��v?��+?�əRRI�PoTile111XEL_-1436.83Dϗmæ�C���fhiklmoprsvxz|~���������A�O�	 �LMR400_524�Oǟ?XW&?X��?ZQ�?Zs�?`�5?b�?d��?i�7?i^�?o�?yP?xכ?|�?u�?���?�&_?���?� i?��?�c:?�ި?�"S?�b?��PRRI�WvTile118YEL_-1436.90D�Z�^^%C�0�fhiklmoprsvxz|~���������A��	�LMR400_524�N��?LJ*?L��?M��?M�?NUa?R�V?U��?W��?Z�?c#�?i�?i��?n�?q��?uީ?x��?��?�B�?��0?���?�L�?��3?�p�?�*�RRI�WvTile118XEL_-1436.90D�Z�^^%C�0�fhiklmoprsvxz|~���������A��	�LMR400_524�P��?a��?bp�?d�I?hr"?iOp?mQ?o��?r#�?sˈ?{�3?�q?�`6?���?��?�Qb?�Y&?��p?���?�?�?�w�?���?�_�?�w?�9RRI�VuTile117YEL_-1437.65D0�ÖYC���fhiklmoprsvxz|~���������A�J�	�LMR400_524�N?G��?I�b?L�E?Qd�?U~K?U>?Yд?]�?\t<?d<�?i�I?oz�?tP�?z,�?2v?�| ?�{?��^?�r�?���?���?��,?���?�P�RRI�VuTile117XEL_-1437.65D0�ÖYC���fhiklmoprsvxz|~���������A�J�	�LMR400_524�PL�?Z*?^)�?`a?f��?j��?i�>?o��?pft?q��?z�b?��?�ԟ?���?�Xp?�%_?���?�T?�a�?��d?���?�=�?���?�f�?��_RRI�UtTile116YEL_-1437.09D6�`�y��C��fhiklmoprsvxz|~���������A�!R	�LMR400_524�N�$?Wڌ?\'j?\��?]a?bAx?c�?e?@?f/(?m��?t��?x�x?y�k?}��?��Z?��i?�q�?�(P?��?��:?�H?�(?�n�?�}(?�SRRI�UtTile116XEL_-1437.09D6�`�y��C��fhiklmoprsvxz|~���������A�!R	�LMR400_524�PB�?t�?v��?y�?{bn?~?���?���?�?��?��7?���?�S@?�ܞ?��S?���?�.?��?��'?�c?�O�?��z?�x�?��?ɟ�RRI�TsTile115YEL_-1436.89D>�'�C�C��fhiklmoprsvxz|~���������A��	�LMR400_524�O�?Z��?\/?^M�?^̇?`�#?`�?d	?f(?h�#?p�?u�{?{nf?~
+�?�D�?�2�?�q?���?�ZH?�
+�?���?��n?�
+,?��?�|�RRI�TsTile115XEL_-1436.89D>�'�C�C��fhiklmoprsvxz|~���������A��	�LMR400_524�O�.?�-�?��?�Gf?��L?�k?�z�?�K�?��?��?���?�
+�?��x?��?�i\?�fS?�:?��w?��?�(�?�
+C?�.B?ǈ�?���?֢�RRI�k�Tile144YEL_-1440.91�C��C���C�Ofhiklmoprsvxz|~���������A�PU	�LMR400_524��?_��?aU�?dmz?f�G?h#?g�O?oI�?p��?v��?|Z?���?�Q�?���?��f?��L?�k�?�R�?�
+t?�@?���?���?���?�b)?���RRI�k�Tile144XEL_-1440.91�C��C���C�Ofhiklmoprsvxz|~���������A�PU	�LMR400_524�+3&?r�L?t��?xت?zL%?}�
+?���?�0�?�^�?��O?�s
+?�V�?�+K?�V ?���?���?��?�T�?��?�ޖ?�{?���?��L?��=?�@yRRI�j�Tile143YEL_-1680.89ÄLC�P�C��)\]^_`aabcefhiklmnprtwz}�A�`�	 �LMR400_320�3'?%��?'7?)'�?*4�?+��?,L�?+��?.��?0(�?3��?7-�?9��?=�?@3�?C�~?E��?I�%?N�?Rfl?\R?c�?m�U?w7?,DRRI�j�Tile143XEL_-1680.89ÄLC�P�C��)\]^_`aabcefhiklmnprtwz}�A�`�	�LMR400_320�1G�?>T?@}?A��?C_�?C��?D�?E{�?I_�?J�7?N��?S�&?W�?ZPN?^�?`ݟ?bOZ?e�e?jƈ?n�[?x߶?�_i?���?�	:?���RRI�i�Tile142YEL_-1441.58�ݠD�$9C�)�fhiklmoprsvxz|~���������Aߔ�	�LMR400_524���?R��?V(�?X|�?X��?\��?_�]?c_:?c�]?js�?n$�?rf�?s�1?z+�?}��?���?��?�>u?�,J?��?���?�;?�Ӄ?���?��RRI�i�Tile142XEL_-1441.58�ݠD�$9C�)�fhiklmoprsvxz|~���������Aߔ�	�LMR400_524�4Q�?R?V�?[�n?[;�?]�v?`P?fBM?dVC?k�?p^?vD?wo?}��?�'?�?��	?�?��@?��+?�ʙ?��?�2?�3?�i�RRI�h�Tile141YEL_-1441.96CD��=C��Rfhiklmoprsvxz|~���������Aᷣ	�LMR400_524�=f?_�[?`+�?e\?duN?g�?i+%?m"*?oc�?s��?y�p?�e�?��?��R?���?���?�15?���?�>�?�ێ?�uA?�n�?���?���?���RRI�h�Tile141XEL_-1441.96CD��=C��Rfhiklmoprsvxz|~���������Aᷣ	 �LMR400_524�6m?�F?��?��'?���?�:S?��<?�,�?��,?���?���?��:?���?�L?��?�}?���?��G?��?�8!?�w�?���?�b}?�#N?��RRI�o�Tile148YEL_-1586.04B���D�C�Nw`abcdeffhiklnoqrsuxz}���A���	�LMR400_400�#��?5��?8PI?:�0?;'w?<�?=4"??=?A�0?C+�?E�?G ?M�?Q?U�\?Y(�?Y�7?a[{?gGB?n_a?w7�?�sO?��d?�x�?���RRI�o�Tile148XEL_-1586.04B���D�C�Nw`abcdeffhiklnoqrsuxz}���A���	�LMR400_400�#��?DJ�?G��?J�?L�~?NO~?O?S�?T�}?U��?Z��?]�I?b`?fWe?jnH?n�?pE�?v��?{I.?���?�?���?��}?�*?���RRI�n�Tile147YEL_-1586.05�M��C�e�C�f�`abcdeffhiklnoqrsuxz}���A�.K	�LMR400_400�$z�?5u�?8�?8��?;�$?:��?;�?>f.?A~M?C�?F�T?IVl?Mg�?Pf9?S@�?Vգ?XH>?\��?c�?i��?r�?}k?��?�_8?���RRI�n�Tile147XEL_-1586.05�M��C�e�C�f�`abcdeffhiklnoqrsuxz}���A�.K	�LMR400_400�&�;?H��?Mt�?Mp�?P�?P)�?P�s?U�?X5�?Z	`?_P)?c9�?hw?h�?m 3?r��?sgz?y	�?��A?��y?���?�л?��T?���?��RRI�m�Tile146YEL_-1681.79¶M�D�C�g�\]^_`aabcefhiklmnprtwz}�A�c	�LMR400_320��Q?*�%?.��?-Q�?-)�?/J�?/��?2�?6�?98?;(?>�u?AM�?E+�?G�t?JW�?Lĥ?S�?W�0?]��?h�?q�H?w�W?�z?�;cRRI�m�Tile146XEL_-1681.79¶M�D�C�g�\]^_`aabcefhiklmnprtwz}�A�c	�LMR400_320�1�?4c�?7��?7��?8��?:/2?9�>?>#$?AY*?Co?DA�?H�B?K��?O&?N�m?R�%?T�o?\:2?^:?b�]?m?v]\?~D?�P|?��yRRI�l�Tile145YEL_-1441.63���C�R�C�+�fhiklmoprsvxz|~���������A��	�LMR400_524���?o7�?qB?s�?t��?yA�?{8�?�N�?�T�?�GR?�on?�K4?��?�|�?��]?�?�?�b?��s?���?��?��?�z4?��?���?�nRRI�l�Tile145XEL_-1441.63���C�R�C�+�fhiklmoprsvxz|~���������A��	�LMR400_524�&�E?t��?u�[?{V�?|�?�;7?�Z�?�̀?��?�Z�?��?���?�.>?�Б?��n?��<?���?�P�?��?�_H?��G?�l?ÕL?�P?��ORRI�c�Tile134YEL_-1585.29Ct|)D�C�$Z`abcdeffhiklnoqrsuxz}���A៥	�LMR400_400� +y?5@�?7܍?:0�?=Z�?>l=??��?A�a?C��?GX�?IY?Mo|?P��?Sd?Xۛ?^�?_(,?fq?l�?t{h?u�?�q�?��o?�S�?���RRI�c�Tile134XEL_-1585.29Ct|)D�C�$Z`abcdeffhiklnoqrsuxz}���A៥	�LMR400_400� ��?=9�??��?A�?D1?EjP?G�p?KSM?N#9?P�D?S��?X��?]f�?a}�?f1?h�+?jg�?p�e?v��?~@|?��f?�	�?��?�G?���RRI�b�Tile133YEL_-1439.87D
+W�D�3�C�-Pfhiklmoprsvxz|~���������Aߡ	�LMR400_524� ky?^��?c��?c��?fz�?l�?i�?m[v?q�.?tQ&?x�G?Ho?�?�?���?�1?�R$?��?��?���?�f�?�^#?�O"?�l�?��0?�?RRI�b�Tile133XEL_-1439.87D
+W�D�3�C�-Pfhiklmoprsvxz|~���������Aߡ	�LMR400_524� n?i�+?i��?kW�?o��?w��?w�t?{9�?}�?��?��Z?��\?���?��R?�&�?��Q?��M?�2?��e?��?�O�?���?�j?�.!?��VRRI�a�Tile132YEL_-1439.30DV�sD�)hC��fhiklmoprsvxz|~���������A�X'	�LMR400_524� �?_Kn?cN8?d_�?g��?h?g?i5�?l�?mU�?r�7?u�;?z��?�?�	�?��?�q�?��
+?���?��t?��?���?�gT?�F�?�&�?�ILRRI�a�Tile132XEL_-1439.30DV�sD�)hC��fhiklmoprsvxz|~���������A�X'	�LMR400_524� �?\�?_�?b��?e��?g�&?hU�?k�J?o�?u�??y~(?|�?~��?�k�?��?��(?�s?���?�~d?��?��t?�#?�.�?�(e?��kRRI�`�Tile131YEL_-1440.65Dw��DQ�ZC�Yfhiklmoprsvxz|~���������A�I	 �LMR400_524��e?4�G?8oO?:�R?=˄?B��?B:�?G(�?F�E?I�N?J?SN?Wu?[N7?^:�?dn�?f}�?n6�?wTW?���?�?"?�@b?�v�?�x,?��_RRI�`�Tile131XEL_-1440.65Dw��DQ�ZC�Yfhiklmoprsvxz|~���������A�I	�LMR400_524� َ?G�]?L;e?P��?T	?Y	�?Z�?\��?]�?a�`?f��?j�w?oT,?s��?y��?��?��?��}?���?�t�?�	/?�-T?�w�?�4 ?�|�RRI�g�Tile138YEL_-1439.32D#7LC���C� !fhiklmoprsvxz|~���������A��	�LMR400_524���?]��?`�<?c�;?b��?h��?g��?l��?o??s��?zc�?��?�59?�=�?��?�XY?��`?�	`?�<s?���?��B?��'?�5?�v{?��RRI�g�Tile138XEL_-1439.32D#7LC���C� !fhiklmoprsvxz|~���������A��	 �LMR400_524�!�Z?��R?�G�?�3v?��V?�Bv?�%�?��}?�L�?���?���?��2?��?�e�?�V[?�W�?�_�?� W?�0D?��,?ǩ�?��g?�:7?�?�|RRI�f�Tile137YEL_-1678.93D�jD&FC�d�\]^_`aabcefhiklmnprtwz}�A���	�LMR400_320�u�?&"?(?'�|?(��?(t_?(xs?+��?/?0��?4�?7�>?8T�?=��?@V?B�w?E��?K��?O=�?Td�?^�y?gFY?mJ)?u_z?}��RRI�f�Tile137XEL_-1678.93D�jD&FC�d�\]^_`aabcefhiklmnprtwz}�A���	�LMR400_320�!:�?;.}?>�?>?E??�??�1??Xn?E�S?FP�?Hy�?M@�?Q��?Q��?U�m?Vy�?Z%?^P?b�?f��?j�#?s9�?}�Q?��?���?���RRI�e�Tile136YEL_-1585.44C�}qC�m�C�{�`abcdeffhiklnoqrsuxz}���A���	 �LMR400_400� 8F?1��?3��?6 �?8N?8�E?:�??h`??[�?C.�?GtL?I��?P=\?Q/�?T�n?[G3?[&�?c�d?k?�?pxD?z��?�3?�E�?�/u?�6�RRI�e�Tile136XEL_-1585.44C�}qC�m�C�{�`abcdeffhiklnoqrsuxz}���A���	 �LMR400_400� ��?E��?F��?J�4?P1�?N��?T�?X��?[b�?^��?c�H?e�%?n	t?n�0?w<?|�?~\�?�Vp?��?��8?��z?���?��?�c)?���RRI�d�Tile135YEL_-1678.64C���D�C�A'\]^_`aabcefhiklmnprtwz}�A��a	�LMR400_320��o?A�?E=?E�?H��?G��?G��?H��?KС?ON?R��?V�?Y��?Z�<?`��?bU\?d��?k#�?q�?v�|?��s?�??��?��?���RRI�d�Tile135XEL_-1678.64C���D�C�A'\]^_`aabcefhiklmnprtwz}�A��a	�LMR400_320�!�1?A��?C�Q?D��?D��?D�k?F�?J?L-?NX?Q��?V�#?X.�?ZQ�?])�?]^�?bvM?g��?l�?sk?{�?��&?���?��M?�v�RRI�"Tile034YEL_-215.98Cm���Z�C���WXYZ[[\]^_`acdefghjlnqtvA���	�RG6_150�+z?P�]?R� ?R��?T��?T�?VT�?XMk?[��?]o�?`?cx�?dc�?j�$?k٦?oL{?uK�?wN�?|�??�R�?��?�?��?��^?�,eRRI�"Tile034XEL_-215.98Cm���Z�C���WXYZ[[\]^_`acdefghjlnqtvA���	 �RG6_150���?:
+B?=J�?=�]?=�??DI??~�?B��?D�d?E�Y?H��?K9�?L��?RC>?S��?WU>?[U�?_|?aD?e�-?o�?x��?���?���?���RRI�!Tile033YEL_-287.79Ck+��!��C�{RSTUVWXYZ\]_acdfhjlnqtwyA�YA	�RG6_90�?9wF?90�?;�\?>a??��?AI7?D�q?G7�?IP�?M�?RL�?U.�?Y�?_I�?dm�?i??kV?q�z?y�"?��?�[)?�*�?��?�9RRI�!Tile033XEL_-287.79Ck+��!��C�{RSTUVWXYZ\]_acdfhjlnqtwyA�YA	�RG6_90���?412?43�?6?�?8�y?9�x?<|A?A}?C�?F��?J/�?N�1?P��?S�j?Z��?_�?c{�?d��?j��?q|�?z?��b?��B?�5<?�#�RRI� Tile032YEL_-288.76C^Z^��jC�o�RSTUVWXYZ\]_acdfhjlnqtwyA��	�RG6_90�n
+?�I?!]u?#�5?&?&��?'S'?)?*f?.�M?2T�?7&?:$�?>:?CC�?F[]?J�?N?SIb?\i�?d��?ov0?z!{?�c?�M�RRI� Tile032XEL_-288.76C^Z^��jC�o�RSTUVWXYZ\]_acdfhjlnqtwyA��	�RG6_90�u�?5Q�?9"�?9�?<�l?=p\??U^?B\�?E�L?J�?O�N?T�9?V��?Y2v?^�?b�D?h�?l#�?r?z��?�O}?�H.?��p?��?�xERRI�Tile031YEL_-288.35CI������C�g
+RSTUVWXYZ\]_acdfhjlnqtwyA��	�RG6_90�Tp?*e?-&F?/��?2f�?2�?4�K?7fc?9��?=�@?B{W?G�$?I�?NP�?R��?U��?[��?_Y?ef?o,?w0?��?�,�?���?��NRRI�Tile031XEL_-288.35CI������C�g
+RSTUVWXYZ\]_acdfhjlnqtwyA��	 �RG6_90���?J6W?N�j?Nc�?Ryr?R??T�?V�_?Z�?_��?e�?l��?nA�?r��?y`�?{��?�?���?�v�?�ez?���?���?��6?��}?���RRI�&Tile038YEL_-215.34C�E��J�9C���WXYZ[[\]^_`acdefghjlnqtvA�j�	�RG6_150��?jX?e�?޹?\?��?=?�9?$<?%��?&�l?(V?,X2?1��?50�?6^�?7j?8�?=J<?A��?J�?Q��?[	T?b�X?ksRRI�&Tile038XEL_-215.34C�E��J�9C���WXYZ[[\]^_`acdefghjlnqtvA�j�	�RG6_150�J3?3�+?4��?7v�?9�\?9��?:C�?;��??j-?A�v?A��?Ff�?KX�?O��?SLV?R�}?V�p?W�F?[�&?b��?j.
+?qm?y�?��?���RRI�%Tile037YEL_-215.29C�և�p:^C��
+WXYZ[[\]^_`acdefghjlnqtvA�J�	�RG6_150��[?)w?,_�?*��?.r?-EZ?-*�?-�O?1%�?4��?6/�?:�Z??S�?A�?C�]?H9?K?L�?O�?X�?_��?f�B?ov?vy�?� �RRI�%Tile037XEL_-215.29C�և�p:^C��
+WXYZ[[\]^_`acdefghjlnqtvA�J�	�RG6_150��=?5�$?7�?8��?:�a?;-�??7�??��?E��?F*�?F��?H�B?K-;?Nnp?O0q?RE�?US"?WO?]�t?fɈ?o��?z]�?�M�?��G?���RRI�$Tile036YEL_-215.40C��u&fC��WXYZ[[\]^_`acdefghjlnqtvA��&	�RG6_150�?y=?�l?A�?�.?�?��?�?�4? ��?#Eh?$��?&i?&�\?',?*�&?.�?1�?5N?:�c?A��?I�?Rn?\jx?b2ZRRI�$Tile036XEL_-215.40C��u&fC��WXYZ[[\]^_`acdefghjlnqtvA��&	�RG6_150��=?9��?:�"?:��?;��?<G?=�?8��?;�??�=?A?Db�?G�?JԈ?L�Y?P[?SQn?Sx?U�?Y�,?bR"?m�?x�?��?�^RRI�#Tile035YEL_-215.97Cz�!��C���WXYZ[[\]^_`acdefghjlnqtvA�V#	�RG6_150���?wm?�?�;? �?!�N?!�U? �P?#�c?$i?'��?+$?0er?2k�?2��?2��?5:?7��?=*�?C1�?K~.?S6�?[�I?c��?jm1RRI�#Tile035XEL_-215.97Cz�!��C���WXYZ[[\]^_`acdefghjlnqtvA�V#	�RG6_150��\?4��?6?^?9�?9@&?:��?;,�?<��??��?@3�?C
+^?D��?JQa?K��?L9�?M�X?P'�?Tv�?X�W?_k�?h%�?m��?vR�?~�5?���RRI�,Tile044YEL_-214.35C��\�6(�C��sWXYZ[[\]^_`acdefghjlnqtvA�9	�RG6_150C��?�?!��?#�?%'�?%S�?$�?&�?(�v?*�.?+T?,�(?0%�?3��?6��?8�z?;D(?>O�?C��?H��?Pў?[�-?f�?mч?w�URRI�,Tile044XEL_-214.35C��\�6(�C��sWXYZ[[\]^_`acdefghjlnqtvA�9	�RG6_150C���?0�F?2��?5�&?6�?6^�?8�?8��?<��?=�y??z�??Ǉ?BЋ?J`4?LF?O��?Sa?U�?Y��?_9�?g��?rH?|?�?��A?�/�RRI�+Tile043YEL_-214.25C�h��C��BWXYZ[[\]^_`acdefghjlnqtvAݥ	�RG6_150C���?��?��?�Q?��?W?y�?r?<�?��?�?�?#��?'�O?)�;?+I�?-0�?0�6?4��?8�.?>�z?F�U?OX	?W��?_RRI�+Tile043XEL_-214.25C�h��C��BWXYZ[[\]^_`acdefghjlnqtvAݥ	 �RG6_150C��"?%��?%��?%U�?$��?%4?$�x?$b{?'\"?+v?0wD?5c?8N�?:�>?<Kk?>8�?CXG?FO�?La�?P��?Yǫ?b�??j'�?t��?z&�RRI�*Tile042YEL_-214.52C����p;dC��WXYZ[[\]^_`acdefghjlnqtvA�VT	�RG6_150C���? �?�?W[?��?�j?`�?�?�? ]�?#/�?$8�?%�?*ʑ?.�?2��?9B�?=��?BS�?F��?M1=?R��?Y�?`'?d��RRI�*Tile042XEL_-214.52C����p;dC��WXYZ[[\]^_`acdefghjlnqtvA�VT	�RG6_150C���?$�^?'�?*��?.�?/o�?5(0?7��?<g?>4;?A?D�*?De�?HO?H�a?LX�?N��?MC�?Pj�?S��?[�*?cJ<?nTb?z�?�7MRRI�)Tile041YEL_-214.26C��/��C��5WXYZ[[\]^_`acdefghjlnqtvA�^�	�RG6_150C���?�?��?��?��?��?�?=e?�? �?!?&8�?+��?1>?3Q?6ß?9�E?=i?B�o?E�r?J
+g?Q�4?\0?da?lwRRI�)Tile041XEL_-214.26C��/��C��5WXYZ[[\]^_`acdefghjlnqtvA�^�	�RG6_150C�
+,?0T�?3�f?52�?5s�?9C�?=�3?B�?F�?H��?I�e?L�f?P@�?O�$?O��?Pbg?T�[?W.�?]�?aP�?k$�?w�q?���?�$?�/�RRI�0Tile048YEL_-286.78C��\�nffC�t{RSTUVWXYZ\]_acdfhjlnqtwyA�8	�RG6_90C��~?(��?*RW?+��?.SO?.��?/r[?2�2?6Q?8��??��?E�b?G�U?L^V?Pp�?R�?W�A?Z�?a�?i��?q%�?{�$?��n?��6?��RRI�0Tile048XEL_-286.78C��\�nffC�t{RSTUVWXYZ\]_acdfhjlnqtwyA�8	�RG6_90C��t?=z�?>�??@��?D�j?E�[?G�
+?K�?M�?QVS?W��?^0H?`\�?d�?ja�?n�e?r�?rw?{�?��?�J�?��!?��?���?�IRRI�/Tile047YEL_-214.48C�${�\cTC��+WXYZ[[\]^_`acdefghjlnqtvA�d�	�RG6_150C�_?y+?�?�?��?E�?�q?�'?Q�?eL?�+? a]?#�?%��?(V�?,Q]?0c�?1r?6�?=�M?D�?Jk�?S��?[��?c��RRI�/Tile047XEL_-214.48C�${�\cTC��+WXYZ[[\]^_`acdefghjlnqtvA�d�	�RG6_150C�Г? ??!_k? Y�?!e?!sB?#ޯ?%{P?(=?+�R?-G�?1��?4�o?8???:�V?<��?A�+?E��?IG?M��?T��?[G?b�?k�?tu�RRI�.Tile046YEL_-287.51C�����E�C�yXRSTUVWXYZ\]_acdfhjlnqtwyAܮV	�RG6_90C�?%�P?(��?*�A?,�[?-��?0��?1DK?4�E?61%?;2�?B?F�?KvD?N�Z?R�}?U�?Y�?a�z?k�?sb�?|��?���?�H�?�+RRI�.Tile046XEL_-287.51C�����E�C�yXRSTUVWXYZ\]_acdfhjlnqtwyAܮV	�RG6_90C���?/��?2�?4kf?8#�?8�?9��?;��??�?A��?ER{?La�?P�4?U�?X,�?Zt�?^.�?ae�?i�?q��?x��?��e?���?���?��$RRI�-Tile045YEL_-215.48C�"N�T��C���WXYZ[[\]^_`acdefghjlnqtvA�x!	�RG6_150C姝?L�?�	?�?c;?�S?�?B? �?"�i?&��?*U?-W�?/y�?1�?4E�?9�w?</??:�?E]�?L5\?Th?\�?e�D?om�RRI�-Tile045XEL_-215.48C�"N�T��C���WXYZ[[\]^_`acdefghjlnqtvA�x!	�RG6_150C�̼?&5�?&�?)�?,��?/.4?09w?0�G?3?6W�?9�l?:3�?<(�?>(�?>dk?C�?H#s?J͸?N�A?W?^�^?e-?o(�?y�?���RRI�+@Tile064YEL_-212.49Cn ��C���WXYZ[[\]^_`acdefghjlnqtvA仐	�RG6_150C|�?":?$�g?&+X?'g8?*%�?+~�?.tG?/�D?1?3��?5�=?9U�?<��?>=[?@�?@�?C�r?Iӟ?P�?Z��?d�+?o��?x\�?�K�RRI�+@Tile064XEL_-212.49Cn ��C���WXYZ[[\]^_`acdefghjlnqtvA仐	�RG6_150C}x??1�a?5��?9�?=E�?@��?C�:?G��?M;�?P�J?WX�?]�#?fY?p��?w��?�2�?���?���?���?�1�?��?��.?���?��?���RRI�*?Tile063YEL_-212.31CeVF£��C���WXYZ[[\]^_`acdefghjlnqtvAޥ�	�RG6_150C}J+? �|? �?"LL?"p|?#RK?$m?$K�?&�?(X�?,_J?0M�?4�v?4��?6��?:�?<b�?>�?D�i?J]?R�?W�?_e?iK3?p�kRRI�*?Tile063XEL_-212.31CeVF£��C���WXYZ[[\]^_`acdefghjlnqtvAޥ�	�RG6_150C}c�?73�?8E�?:$�?:cU?:��?:�?<$�?>_S?@TQ?D}�?Hta?L��?Mkr?O�u?S�:?U��?U�?ZF?_J5?iȉ?n��?y��?��6?��RRI�)>Tile062YEL_-212.86Cf)y��\C��HWXYZ[[\]^_`acdefghjlnqtvA���	�RG6_150C}Th?#��?%?%�?%��?(��?*"U?*�'?+��?,�D?/)�?0��?4W�?66�?7��?<�?=q?@�?E��?L](?RI}?W-?`.?iF�?q��RRI�)>Tile062XEL_-212.86Cf)y��\C��HWXYZ[[\]^_`acdefghjlnqtvA���	�RG6_150C|�?8�?:Xf?9��?:m�?<��??Q?>��??�g?A�?C��?Gy^?K%�?N�$?Qg_?S�.?U�E?Wm�?]V�?d��?k��?r!?~�Q?�N�?���RRI�(=Tile061YEL_-213.19CY.�ҏ�C���WXYZ[[\]^_`acdefghjlnqtvA�B� �RG6_150C|��?&�E?(��?*��?*UY?,�q?+KT?,=?/�/?0J�?3��?6F?9�?>7�??�?At�?C�?F�?L��?PW�?Y�s?a�v?j1�?r�X?zoRRI�(=Tile061XEL_-213.19CY.�ҏ�C���WXYZ[[\]^_`acdefghjlnqtvA�B� �RG6_150C}�?/@�?2~?2�r?4�"?7�s?7d
+?8<?97?;hv??6?A�?E~D?H�V?K�?M��?Rh�?TYU?Y��?]��?f�?n�D?z�'?�p?��RRI�/DTile068YEL_-212.55C]��JÖC���WXYZ[[\]^_`acdefghjlnqtvA��	�RG6_150C|�?)�!?+b�?-P?-)�?,��?/J�?1X?4�7?9�?=�?By?D�Z?Hxp?I�w?M+�?T�`?V��?]ط?e?m9F?v�v?�k ?�#?�_RRI�/DTile068XEL_-212.55C]��JÖC���WXYZ[[\]^_`acdefghjlnqtvA��	 �RG6_150C}?�?G-c?H�g?I��?I�*?J��?J<?P�|?UHi?Yg�?`-?b�N?d��?e��?g]?i^�?o�k?rx�?x�?~X�?��?�[?�ԓ?�	�?�l(RRI�.CTile067YEL_-212.60Cd���zD�C���WXYZ[[\]^_`acdefghjlnqtvA�,n	�RG6_150C}��?%�/?*4?)�?,&-?+�6?)�M?,��?.�q?0d�?3��?5��?9�e?;8�?;�9?>q?@~[?DJ?J�?Pz?YD!?_Z�?g�?n�F?v�fRRI�.CTile067XEL_-212.60Cd���zD�C���WXYZ[[\]^_`acdefghjlnqtvA�,n	�RG6_150C}c�?;�?>H?@n�?A�7?@kT?@��?B��?F�|?Fؙ?H��?J"?O'�?S�X?U5I?W�a?Z�+?\A�?c7�?g�\?q>�?u��?�:5?�N�?��/RRI�-BTile066YEL_-212.34Ck���C���WXYZ[[\]^_`acdefghjlnqtvA�Xu	�RG6_150C}�?1�?2�?2�5?2A�?4��?6�?9�m?=��?=�w?BE�?Cr�?E�?Iz�?LA�?N5�?Q�?SB3?X�z?\�?e�i?kk�?v��?�C�?��uRRI�-BTile066XEL_-212.34Ck���C���WXYZ[[\]^_`acdefghjlnqtvA�Xu	�RG6_150C}Y�?>�?A^?B(�?C_%?D�?F��?J�?Kf�?L�?O�H?Q9T?T��?Yv?^��?`�?b�a?c�??hY�?n_?tA�?{Cv?�۾?��T?�r�RRI�,ATile065YEL_-117.36Cw�=qC���]^_`abcdfgiklnoqrtvx{~��A�$!	�RG6_230C|��?0�Q?39?5��?7��?8�4?9؃?;˴?>^�?>��?@J~?B�?E'?I��?M��?P�?Tz�?Y�[?`�I?h�c?q�?}�??��v?��p?��mRRI�,ATile065XEL_-117.36Cw�=qC���]^_`abcdfgiklnoqrtvx{~��A�$!	�RG6_230C}|?Bh�?D��?F�?HL*?IQ?Kra?L�e?O��?T8�?V<1?Y� ?a�?h��?m�3?s�2?u��?ypY?�)?��	?��<?�z�?�?h?�-�?��jRRI�#6Tile054YEL_-17.97¡!HB��5C��H\]^_`aabcefhiklmnprtwz}�Aށ�	�LMR400_320BO̽?+�?.d9?0��?/��?2�N?4�5?54f?8�?<��?>�f?BO�?F��?J�m?KO�?QQ�?S��?Y��?^
+?f)?oH\?zi?�T�?���?�|LRRI�#6Tile054XEL_-17.97¡!HB��5C��H\]^_`aabcefhiklmnprtwz}�Aށ�	�LMR400_320BN̽?0fI?4,3?4��?6N�?:/N?<�?>�V?@&�?C�j?G�`?J�)?O�#?U��?W��?Z�F?]�?b@�?f?�?lF�?s�
+?�l?�X�?��e?�l�RRI�"5Tile053YEL_-287.15B�����C�,�RSTUVWXYZ\]_acdfhjlnqtwyA�d	�RG6_90BLG�?+��?.�?0!0?2�?3��?4�?6�[?:�?>�q?Bω?H?m?I�@?N&?R��?VA?ZҖ?^VC?c}�?nZ?u|?���?��g?�`?��RRI�"5Tile053XEL_-287.15B�����C�,�RSTUVWXYZ\]_acdfhjlnqtwyA�d	�RG6_90BN�?C��?G��?H>�?J�?Kd�?N �?O��?S�?Yq�?_�?f�+?ir4?m�?r��?v4�?y܌?~�Y?��?��b?��7?��?�m�?�x�?�o�RRI�!4Tile052YEL_75.60�-�C1w�C���`abcdeffhiklnoqrsuxz}���A��	�LMR400_400BO��?'�[?,�?-X?.�!?/��?0�:?3$6?6
+�?8�?=H�?@ܻ?F?I��?Mj�?Q'?Sz�?X��?]�I?e�Z?p��?{?{?�҃?�?��RRI�!4Tile052XEL_75.60�-�C1w�C���`abcdeffhiklnoqrsuxz}���A��	�LMR400_400BO��?;�I?>��?A�0?D!?D9P?E�?I��?M3?N�F?Sa�?Xt4?_�^?_]4?d.?h�2?kL?p�W?t��?{!�?��_?�1�?��_?�fz?�HRRI� 3Tile051YEL_-287.05B���^=qC�f�RSTUVWXYZ\]_acdfhjlnqtwyAޕ�	�RG6_90BN(�?2$?4��?7s�?9��?:�?<�?>̗?B>�?B��?G�$?NΟ?Qim?Uu;?Zq�?`2�?e�?j�?ox�?x�i?���?���?���?�
+�?���RRI� 3Tile051XEL_-287.05B���^=qC�f�RSTUVWXYZ\]_acdfhjlnqtwyAޕ�	�RG6_90BNG�?<;??��?A^�?C*�?C��?E�?I��?M�?P�?V��?^?�?_q�?bϖ?f7�?l�?prb?tf�?zn|?��+?���?��>?��?�:N?��RRI�':Tile058YEL_-287.14B�d�¯1C���RSTUVWXYZ\]_acdfhjlnqtwyA�L�	�RG6_90BO�?"9?%P�?&��?*S?,L�?-;?/�u?1�?4Ӿ?9??U??B��?E��?I�_?Ma?Rk�?U��?[�O?e
+�?k��?u=M?�e?���?�,RRI�':Tile058XEL_-287.14B�d�¯1C���RSTUVWXYZ\]_acdfhjlnqtwyA�L�	�RG6_90BM3$?R^�?VA?W�i?\�V?^�d?`_?d�8?h5o?k�.?p�t?y�'?|�B?�9�?���?���?��J?���?�>�?�\`?�ܡ?���?��?�
+�?�PwRRI�&9Tile057YEL_-117.60�}����C��]^_`abcdfgiklnoqrtvx{~��A�b�	�RG6_230BO�v?6{�?:�?<�'??��?AD�?B�?EE�?HI�?K5�?M�l?Q�?U�?\�?a
+?ft?k�8?ox?uz?}�?��?�rB?�3�?�A?�PsRRI�&9Tile057XEL_-117.60�}����C��]^_`abcdfgiklnoqrtvx{~��A�b�	 �RG6_230BN�?K/c?M��?Prz?QR.?R�"?U�?Wo?[t�?`d�?dq�?h��?j�?rQ�?wI?|�M?���?�R�?�?�2�?��?��S?���?�(?�ֿRRI�%8Tile056YEL_-117.85���T)�C�f]^_`abcdfgiklnoqrtvx{~��A��*	�RG6_230BN\?:�(?;�}?;n�?='�??�m?A��?C0�?C�g?Hb?Lj|?PE?R1'?V��?W��?\��?b�H?c<�?lS?wl�?~��?�B�?�8�?�oP?�[�RRI�%8Tile056XEL_-117.85���T)�C�f]^_`abcdfgiklnoqrtvx{~��A��*	�RG6_230BN?a��?bW?ac�?aI�?dUt?g��?jQ?j��?pvT?r�?w��?z"<?�_?��?��W?�}B?���?�D�?���?�y�?��?�;�?�%?��RRI�$7Tile055YEL_220.70Á��C�3C�<�fhiklmoprsvxz|~���������A�*�	�LMR400_524BTQ�?X��?X�v?^%?`�0?eZE?g F?k�?n@&?q�?t��?{�A?��?���?���?�l�?���?�o?�r?�:�?���?��i?�y�?��?�#rRRI�$7Tile055XEL_220.70Á��C�3C�<�fhiklmoprsvxz|~���������A�*�	�LMR400_524BI̾?j��?l}Y?o�s?p��?v�E?x��?~�8?�VD?��?���?��g?�h�?���?��O?���?��?�	?��-?�*|?�4�?��t?�P�?�+?��|RRIXTENSION= 'BINTABLE'           / binary table extension                         BITPIX  =                    8 / array data type                                NAXIS   =                    2 / number of array dimensions                     NAXIS1  =                  113 / length of dimension 1                          NAXIS2  =                  256 / length of dimension 2                          PCOUNT  =                    0 / number of group parameters                     GCOUNT  =                    1 / number of groups                               TFIELDS =                    6 / number of table fields                         TTYPE1  = 'Antenna '                                                            TFORM1  = 'I       '                                                            TTYPE2  = 'Tile    '                                                            TFORM2  = 'I       '                                                            TTYPE3  = 'TileName'                                                            TFORM3  = '8A      '                                                            TTYPE4  = 'Pol     '                                                            TFORM4  = 'A       '                                                            TTYPE5  = 'Calib_Delay'                                                         TFORM5  = 'E       '                                                            TUNIT5  = 'm       '                                                            TTYPE6  = 'Calib_Gains'                                                         TFORM6  = '24E     '                                                            EXTNAME = 'CALIBDATA'          / extension name                                 CALFITID=           1720774022 / Calibration fit ID                             CALOBSID=           1111842752 / Calibration observation ID                     CALCDVER= '0.17.22 '           / Calibration fit code version                   CALDTIME= '2024-07-12T08:47:02.308203+00:00' / Calibration fit timestamp        CALCRTR = 'calvin  '           / Calibration fit creator                        CALITERS=                    3 / Calibration fit iterations                     CALITLIM=                   20 / Calibration fit iteration limit                END                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             KhTile104Y��?y�u?|&?}�.?�d?���?�l/?�>�?��5?�È?��?�>C?��u?��?���?�Q?�
+�?��^?���?�P�?�?��?��?Ū�?���KhTile104X�	p�?���?�V$?�7�?��?��5?���?��3?���?�d�?���?��?���?�Č?�H�?��?��?�Tt?�O�?��k?�k�?�)?��?١�?��`JgTile103Y�������������������������JgTile103X�������������������������IfTile102Y��)?2�x?606?9}X?;�?9��?<]�?>
+�?@��?Bcp?H�?I�?O��?T�?V��?Y�j?\nY?c_
+?g�?n�%?w��?�?���?�6?�"�IfTile102X�:�?E�p?K}�?N��?N�,?O�(?Q�	?UH9?Y�+?Z1�?`�?dyw?j�1?n}d?q�s?t�?w�K?~:?� ?���?�L�?�,?��=?�d�?���HeTile101Y�E?�?�@? *�?#��?%��?&(�?'��?)�"?+~�?.�*?1��?4b�?6C?:�;??�%?B.�?DZ�?Ig�?NŲ?V��?_&?f~�?o[?u	�HeTile101X�Y�?=�_?C%?Ew�?G�"?I�/?K�?M��?N��?QW�?R��?W��?\X?\Ҳ?`!?do?f��?i�R?o@=?v	?|��?�[k?��X?���?�OlTile108Y���?r!F?q�?u�?t��?v��?x�!?z��?���?�Wd?��?��G?���?�?��K?���?�"?�3�?���?���?�NZ?��r?�i�?�;]?ǘMOlTile108X��?t'g?r|�?w3j?w��?}�M?�
+?�j�?�� ?�p�?�N}?��*?�N5?���?��?�Z1?�E�?��?�V�?��]?�(?�SQ?�.V?��?�;NkTile107Y��?B]/?Č?F*�?G��?K�V?N}?P��?S^�?U�&?Z��?_�X?_+�?c��?i`W?m�/?pd`?w	�?���?���?�]|?�A�?��O?�a�?��aNkTile107X�	�f?�r?�)�?��?�ʢ?�'�?��?�k�?ާ|?�wi?�.l?�+�?�C?��?���?���?�lC@U@$�@	�i@�g@E�@�M@"�@*yKMjTile106Y�	�?%�$?(a^?(v-?&�3?)R?)u?(d?*v?,_�?-�?/tc?3p�?6�?66?9�?;��?>l5?F`0?K�L?R�n?[$�?e�d?m��?x{0MjTile106X�Ǥ?#�?%.�?$w5?%A[?&y�?&�?'��?* ^?+�g?-5$?/��?4@?8?9{?;v�?>+9?A�*?Gn�?L��?R�?\;?f��?o�?y�$LiTile105Y���?>2R?A��?Dh)?B��?CW?Ed�?Fs?G��?L��?N��?Q�u?S��?X�B?Z��?[��?`f?c
+�?j�&?q�A?w�3?��%?��}?��P?��hLiTile105X�c�?G��?KV�?O�o?O��?P@�?SO{?T��?V�?]d�?a"?dbD?f`�?l?o-U?rf?xV�?|n�?�u\?�^R?�SH?���?��@?��*?���s�Tile154Y��?^y�?^N�?b��?d��?iî?jE�?n=Y?l2b?q+�?w2�?|R�?�?��?�g?��?��}?�{�?�q�?���?���?�Z�?��h?�yF?���s�Tile154X¡.?nwY?n��?r�?t�i?yF�?{��?~w�?|��?�m�?��?�^?�y?�
+�?�t�?�+?��&?��m?��*?���?�;�?���?�??���?��r�Tile153Yo?VYI?Y�x?\Q�?^�?a)M?eh?j\�?l��?m1�?v��?��?�Y*?��S?�B?�3�?�)U?���?�e�?�|(?�Zf?�w�?�5�?���?���r�Tile153X¡�o?���?��V?���?��?�.?�7�?�+�?���?�Z�?���?��?���?�.�?�n_?��W?�k�?�S>?�D�?��T?�-�?�Hf?�Kx?�5�?�_hq�Tile152Y P?"f�?$A�?$=�?$�j?$�?&�\?(i�?*�?-�'?,�?1��?5P�?7g?7�>?;`?@��?@�c?Gq?P~m?U7�?Z�?ex?n2/?x.�q�Tile152X 8F?4m+?53�?5:D?5�y?5��?9�K?;B�?>�?@�X?@9?CV?F�*?Iw(?J6�?M��?Su�?So�?YԷ?bS?hD?l�H?yL?�d?��p�Tile151Y?[Gj?^�?^�_?`��?ar�?e[�?eX�?h��?l{�?r��?{P?}'�?���?�S	?��6?�-�?���?�dX?��+?�J?��?��C?��.?�Zsp�Tile151X�?UX�?Y�?]�?`QY?c]�?e0?h<6?l�=?p��?w�R?�%�?�q ?�_ ?���?��?���?��?��,?�	�?��=?���?�#,?�h�?��=w�Tile158Y��?1(�?7]�?;j?;u�?>�?>��?=2�?@Ld?@��?A|?Eu�?K*�?O2�?Twq?WcZ?WZ?\G�?c,8?i�/?r݄?�6?���?��~?�4w�Tile158X�?@��?D��?E��?D�H?H�?E��?Gu�?L�?NO,?O�(?Q�+?W�?]��?b�?d�]?h,?n�=?u�}?z��?�
+k?�mM?�wA?� �?�۴v�Tile157Y�	?1�?3�[?6�
+?9�R?>�9?>�V?B<�?D�?GN�?H�`?J$Q?L6w?M=�?T>?Z��?\��?d{L?h�i?qE�?zg?�w??��?�~�?�*v�Tile157X fZ?=#�?@Q?C,?C�O?H�$?I�?Mǻ?O��?R�5?U?X<L?Z��?\�?ac�?j�R?i��?st]?w��?~�<?�A�?���?��?��)?�K	u�Tile156Y�?-�?.�?1��?5��?9��?8�?;�T?=��?@h?A2w?D��?E�z?G"�?L�?PC9?T�?\�?c��?f�K?q��?y�?��U?��??�
+qu�Tile156X 8F?N9�?O�<?S�?W��?Yl?X}7?]<�?_��?dt?g_?j��?l�{?m�?tX�?v�[?yE1?�b�?���?�$.?�h�?��?�E:?���?�*t�Tile155Y�F?B��?G��?J!�?I�|?K?M�?O�8?T�?W�y?[?�?^�?bU�?d�w?k�?m<�?p�?x?}�,?�p�?�
+�?���?���?���?���t�Tile155X o?T��?X��?Z2D?Y�?^�&?b�]?f~~?jH?m��?r۶?x?zo?}��?��?�"�?��?��D?�3?��?�	�?��C?�6?�X�?�Z={�Tile164Y���?`�?`��?b�?c��?h5?i�o?n	?mP�?pe�?yY?}�W?��Z?�^T?�� ?��?��?�hk?�6
+?�ar?��?�s�?���?�/�?��{�Tile164X��fT?ZTl?^Wr?`e?`��?e��?f��?nz?q��?r�?{�m?}��?�o?�<-?�Xs?���?�P?���?���?�ߐ?��$?���?�]�?�|�?�z�Tile163Y��p�?H�*?J?L}�?Ko�?O1&?O2�?Q	?U��?U˒?Z�?c?W?f��?k�?p�?p�9?u.?{��?���?��?�͍?�y?�	?�.U?��xz�Tile163X���^?bD�?a�`?gP�?iMZ?m�?m��?pK�?vk�?v�?�?��?��u?�;�?��p?��A?���?��?���?��?��m?�;u?�K?���?���y�Tile162Y��B}?6�?9�?:3�?<pB?=�,??��?AV�?B�D?Frt?JD>?L�d?O+@?T��?W�?Y�?[e5?`��?iB�?pr�?t3?��+?��?��?���y�Tile162X���5?N-�?O��?Q�P?T��?V�S?Xw?[��?^�?a:�?f�?h"1?i�h?q�?t��?x��?{�?~��?���?�k?�jd?�;[?�wy?���?�x�Tile161Y����??��? N[?"TG?!c�?"��?$5�?%��?)��?-:d?0�M?4��?7�8?;9m?=�q?C�?F�^?J;�?R��?Z��?d��?m��?s�?}|�x�Tile161X��ks?&i�?)�?*�D?,�Y?,-?.s�?0�U?2�?7Ti?:[h??!�?C?E�?I�[?L�S?S�;?Wu?Z�H?c�u?i?�?u��?~7@?��?��s�Tile168Y��!?*�?+��?*�?,I?,��?,ҍ?-AU?1�?3*�?4�5?9lg?:�:?>�??��?B�]?EQ�?F��?LК?SbG?[�A?b��?k�I?t�?y�5�Tile168X��ks?;1?>�?=��??4u??�:??�?A��?D��?J��?Lj(?P��?R�Q?T�?U�?Z7�?\�y?\�?c�5?g��?p��?y��?�?��G?�U�~�Tile167Y���??�g??��?E��?E��?GY�?I{�?N�L?OB?OI�?TP�?W ?\U�?\�#?a0C?f�?f�#?m_?s�?y��?��n?�Y�?��?��@?�g�~�Tile167X��3!?q��?ss�?{�2?}��?~`�?�8K?���?�w�?���?��/?�y�?���?�ȟ?���?�a?��g?�7?�AF?�\1?��?�{E?���?���?�m�}�Tile166Y���?8mP?=[�?C??H��?I�?J�u?L
+?LB�?K�&?L��?M _?S%�?W��?^w�?a�j?b`_?h�L?m�?q�j?{G�?�}@?���?��?���}�Tile166X��a5?�5Q?��G?��?�YA?��3?�F�?�k$?���?�ɗ?��?���?�[?���?��m?���?��?�ϼ?�[�?�}P?�`�?��?�mH?ﾝ?�e|�Tile165Y��@?]��?^_C?bڅ?c�/?df�?f)k?i#�?l(?n��?t�\?zj�?~7?���?�?�gc?��?�c?��
+?�m?��\?��v?��7?���?�"�|�Tile165X��̺?���?��?��?�^?�å?��?Ŭ�?�l&?��f?�]#?��?�{'?�x'?�Ǣ?���?�C?��?�h@@^@��@�P@Z�@�h3JTile074Y���v?;�%??N?@��?A�?@�??D��?F��?Hl�?L�Y?O�?T?U=�?[3�?^�?a3�?f�Z?h�?pWu?{?��d?���?�~�?�m?��g3JTile074X��z�?�1�?��?��?�~�?��k?���?��?�K|?�s?��?��?��>?�:�?�?���?��+?�OJ?�^�?�G?�<?�S�?�*?��?�=�2ITile073Y��̾?W�?Z�0?^�O?_#�?b��?dǛ?g��?h�?k�?rD??v؜?|�?�dn?�7?��?��i?���?�E�?��Q?��9?�/�?�K?��?��2ITile073X�ɨ�?q�_?u��?{�6?{@"?~X]?�3�?��`?��X?�?�F�?�̻?�z~?���?��]?�k�?�Ԋ?���?�1�?�d_?���?��?�,�?�b?�>�1HTile072Y����?>"N?@�?A�`?B�k?D�?F�1?KED?Q�?W��?[�'?^�f?cE�?jn?mM*?q�?vD�?zD�?��?�� ?��t?��=?�6�?�e�?���1HTile072X��u�?>�K?@��?E�*?F~L?G��?K�J?N�0?S}u?[�P?^\?c"�?kCt?t	�?w$?}�{?���?��?���?���?�?���?�7??��??���0GTile071Y��Q�?4%�?73�?9�?;�?>Y�?@��?B#�?CU�?E��?G�<?I��?L;�?RG9?T�\?Zz�?aI?f ~?o�?u�9?{ٛ?���?�B?��D?�ȫ0GTile071X��(�?H�h?H~�?J��?N
+}?RG�?Va$?T�b?U?X�~?\�4?c_?f�?hA?h?l��?u�J?z��?�N,?�9?��?�NI?��	?��?�17NTile078Y��=b???�?��?�?��?�h?�@?;�?ظ?{s?�?!l�?$�?&t�?'�B?,��?-�!?1�a?6��?<�D?C��?I�a?SE�?[�7NTile078X��kv?h�?)�?!'*?"~?#?$�?':�?(��?*6?,;Y?.�e?2�?4�?9!�?:��?>�?Aj?F3C?K#?Q�I?Xyl?`��?i��?u
+�6MTile077Y�ș�?-�?1Հ?3I�?7G{?8JA?8Vd?90=?:��?<��?@�?F��?K|4?N�?U)?Ywx?`��?d�t?i�?r�1?{=e?�	�?�XL?���?��)6MTile077X�Ȟ�?V�?Yz�?Z9z?^j?^��?aP�?d�&?i�o?o�?qt�?v�~?y�?}�@?���?�̝?�0?��(?�c�?��?��?�|�?���?�A�?�W
+5LTile076Y��ǟ?=Gk?>�?AG2?B�y?B�>?D�E?F�<?J��?N,F?P��?U3e?Xw�?]�?_%�?cj�?g-?j�R?s}�?z��?�
+�?���?�,�?�r�?�X5LTile076X��8C?F�?Iq�?KUD?MsC?O.�?P�*?SA?Uҟ?X	?Y�?^W�?bo�?iP�?k�O?ps1?tK6?u��?}��?�O�?��?�O~?��s?��%?��+4KTile075Y�������������������������4KTile075X�������������������������Tile024Y����?&<O?'?'��?+ ?-��?/��?/�'?3G?7�A?:Q�??��?C37?E&�?H�9?J�h?O��?S-�?[�~?cz?n�o?y�>?�ش?�;�?�FITile024X����?)�u?*�k?,Z?-�A?.�0?/"9?-��?0�T?2$?5��?;w?=��?C�v?J8�?M}'?R�8?Vs�?\��?b+�?i�9?n?t��?}*�?��M
+Tile023Y��G�?*
+�?,�9?/�]?2R�?3u�?5��?6�??:��??�?Dn<?J|i?Nô?R�d?V��?Ys�?`X�?dt�?k��?v2�?�?��+?��?��?���
+Tile023X���s?>�K?C�?E�_?I�^?K��?M��?P�?T.N?Zn�?_�??gWo?jί?pT�?v�?z�?�q�?��?�l�?��r?���?��?���?��?��	Tile022Y����?7?:+�?<�!?>Ɛ??��?B@�?E�?H&�?N��?S�w?Z�~?\5?a �?gJO?mP?r�?w�?~t?���?�`�?�P?�n_?��H?�ސ	Tile022X��Q�?;b�??C�?B��?Ek�?Gt�?I�D?Lm?O��?V�?[�X?bL�?c$}?g��?n�`?uJ�?zq}?|dm?��'?��?�Q�?�]�?�mP?���?��Tile021Y��fT?9m�?<�?<�??�??t�?@�7?C&@?EA?J�7?OK�?V�b?X\�?\ٚ?b��?i"?p��?vF(?~�?�'�?�53?��H?��k?���?���Tile021X����?N�9?Q��?R��?V�2?V��?Y�?]�?a7�?g��?m�`?v"?vfB?{?�O�?�>�?��A?�g?�Q�?��?��?���?�ϯ?�Fh?�"�Tile028Y���J?$X?(��?*3�?,?, ?.T?0�?4��?7��?<{s?Cm?Ef�?K-�?P�H?S�V?X��?\��?b�w?kƘ?s�s?F�?�Y�?�65?��?Tile028X��
++?3�y?8�B?9k?;��?;�?=y	?@�z?D՗?He�?L�|?T�?U��?Z��?_��?b��?g�?l��?r,\?{��?���?�pM?�L�?�y?���Tile027Y��@?&�8?)if?*��?+�?-C>?-��?/�?39Q?5c?;��?AJ_?D��?G�_?I�0?P%?S��?U?Z�C?`�9?lp�?r"3?~`Z?�*y?��FTile027X��Q�?"e.?%v:?(ɗ?+t�?-��?.�w?1,�?4�[?67d?9I?=2�?>��?AE�?BW�?G�H?L�?N��?X7?a�o?l6�?pe�?z|�?��J?�	Tile026Y��\?}�?k�?��? ק? �?#T�?#�$?&I�?*??-�y?2��?4E�?8�?<��?=�?Bw,?E�c?K(F?P|�?Y��?b_�?kf�?w��?�D#Tile026X����?!�-?"�!?%�U?&Az?(3�?+�7?-��?1r�?3Za?6�H?;�?>Zg?C��?FT�?H]�?N==?Oc?V��?\�d?g�?j`;?u4�?�\�?��(Tile025Y���s?�?�}?��?��?�?��?,�?��? ��?#�?%� ?'��?+g?.�??39�?6zd?:�2?B��?IG:?SX?\�{?f}�?r�W?~<Tile025X��(�?$(�?$�_?%�?$ea?$��?%�0?)��?.�S?1�M?2H�?7�?<��?D�	?K,-?Q�9?V;<?X/�?\̕?_��?i	�?o�?y�A?�߳?�N�Tile014Y����?*w?,t/?-j�?.�)?-"�?*�p?.�4?2~�?2��?2��?5P	?7v-?9��?>��?Bm?Dl!?Fah?JЭ?OQ�?X�Y?aѲ?l�?rF�?|lyTile014X>B�N?,�l?.my?0{t?0'�?0��?17?1�?6}?5Z�?6>�?:m
+??j?E�?H%<?I�?J�/?L,�?R��?X�U?dH?l�?u'�?{.?�=Tile013Y>�p�?#"?#i?&�s?%W?%L�?&�?'	d?)�?,�?/k;?1a�?4�w?8�?6��?914?;,�?>�?BvB?Ix�?S�?Y�%?cr>?j�]?r7�Tile013X>�fU?/�?1H?4�?4��?5U�?7sw?6�+?:>F?<��?>}?>��?B�^?D��?E�(?K�?P�{?R�U?V�5?_�?fv?k��?tV?|*?��@Tile012Y>��?2[,?7��?79'?8�H?:^?;R+?>!�?AL?BN�?F�^?L�w?O�?T�?YQG?^�?d��?g�?m��?wD??�1N?��6?���?���Tile012X>�G�?5k�?;3�?:�A?>H`?@��?A�b?Ee�?I��?K��?Q ?V��?Y��?_3;?eќ?i`�?m_?oН?u�?~�p?�SW?� �?���?�5$?���Tile011Y?6�)?:z�?=�??��?A��?D/?Iv?M�?R4?Uon?Z�Z?[��?_��?d��?i�,?p�B?u�&?|w�?�,p?��?�M1?�LQ?�'|?��qTile011X??��?D�?FLN?H7?Ic?K3�?P	�?T_�?YN?]W�?c�{?d��?h��?n6I?r��?y��?~3�?�?�d?�d?�N?�z~?�+o?�!%Tile018Y>�Q�?$W�?'?)��?+=m?+�?,�~?/�o?4=�?8:�?;@�?A�?D��?H�?K��?O��?U�?Y�
+?_2q?i`?o�H?|M-?�CO?��?��kTile018X��\?=�E?A�?B�K?E.�?Df�?Gy�?J�l?O_?T2�?W��?_!�?a��?ew�?iW�?nXE?t�?x��?~�?�k?�0C?���?��?��A?���Tile017Y>�fU?&D�?'��?)��?+�v?-I�?-.�?.K?1��?2�F?5>>?6s�?:?<C?=~�??G�?BJ�?DD7?K�?Q��?[_�?c�z?m��?t�?|��Tile017X>Ǯ?A�m?B�1?E�C?GFP?H��?ID�?J�}?N�R?Ovy?Rڭ?S�?YY�?\�#?`%p?c�?e��?eĈ?l�S?pN�?y�?���?��~?�$9?�~tTile016Y����?(}�?+�@?+:E?-�?-��?-"K?.��?1��?6� ?;@�?@	�?C�!?E{_?Ig?M)�?Q�?T�?Y�K?b��?m��?wm�?��p?��z?��Tile016X>��F?:��?<�?<��?>�?AE�?CC�?EZ?GD"?J
+�?L�`?R�?W7�?[A?_m?eL�?h�G?kn ?n�d?x��?��~?�w@?�>h?���?��Tile015Y�������������������������Tile015X�������������������������C^Tile094Y� ?@��?Bi\?F�g?G�/?Hx�?J�?MT?Oz?S�<?W�"?^��?cm?h��?k��?r)c?s�G?u�?~��?��+?���?��?���?���?�XC^Tile094X��F?A��?D�?G͏?I�?KJE?N�?Q�{?TL�?Xw�?\��?`�x?a��?f�?h�?o��?tM�?v��?�Lg?�O�?�B	?��P?�P{?�-0?�&�B]Tile093Y� ��?,�?I�?n$?!+�?!
+�?$)G?#�?$�H?&��?(+?)�T?. k?2�_?3/?78R?<�Y?=�?B�7?IBK?P��?Ys?b��?i�?r�
+B]Tile093X� ��?46�?7>8?9c?;5?<�&?=��?>/Z?A�?@�f?C��?GD�?L�?PT�?R7�?U��?W��?[D�?`H�?d�4?o�?w��?�k	?���?�TSA\Tile092Y� �Z?*�w?.�6?0 %?0n�?1o?1��?3�v?6??9�?=uV?B��?Eb�?H�l?JL�?O��?TkH?XX
+?^��?e�G?m�=?w�"?��?�H�?��A\Tile092X� �o?E��?H��?J�?LVO?N�?O��?P�?R�?W]�?Z�$?a|d?d��?iD�?j`f?q,?v��?x`O?M�?��Z?�M?�a!?��T?���?��@[Tile091Y� h�?Cw�?F3�?G�?H�A?G+�?I|�?J��?M�?Q�V?Sh�?W�?W��?[' ?\�?_?a��?f��?k��?rSy?z
+?���?�L�?��?�;�@[Tile091X� �e?M�?P;�?R3�?TL�?T�@?U�?X|?]a�?`V�?bq`?f�?iw?nك?o��?p�p?u��?z�f?��?�zu?���?�E�?���?�S�?�rGbTile098Y� Q�?=8b?>�?B~y?D�?Cs?C��?D�C?H%C?L>�?PFk?Q��?S+X?XrB?[Ӯ?_�v?d@?h�?pB�?wR�?~]r?�3�?��?�NS?��GbTile098X� ��?N��?Ph�?T�w?U�'?W�?W�?YkL?^�?b%�?d��?hФ?l�?q��?v�D?x^y?~r?�t;?�d?�?��?�k�?�Qv?�(�?��FaTile097Y�!3'?:?:�?<A0?;{|?=�?>l�??��?A�?F8�?I2�?O^�?P�?T�X?V��?]s�?_N?`� ?k~~?t}�?y�j?��?�zp?��?�SxFaTile097X� �1?O��?Q�?S��?S��?U�	?We�?Zҩ?\,?_��?bIj?i�?ly�?p�f?uoZ?z��?|��?��?�֟?���?�i�?��/?��"?�7�?���E`Tile096Y� 8F?D��?F,t?I}�?I~�?K��?O@�?P�!?Q�?W��?Y??]��?_=)?c�?i$]?m1�?qQ6?s�?|�?��_?��?���?���?��X?���E`Tile096X� }e?F��?G��?Ku�?L�?N��?R
+:?VR$?Wi�?]��?]��?d~?ep�?k��?n��?s%�?v�g?y%�?���?���?��?���?��?���?�L�D_Tile095Y� �e?Dm?D)W?D��?FRf?I��?JSn?H�`?HSI?M�?O9�?S��?X�;?]S?a!�?d��?igJ?m��?wX}?}��?�K?��r?���?��B?���D_Tile095X��?@�g?BG?CD�?D@9?HE.?K��?M��?R�?XY?X{�?Z�m?\��?b�?cu?g>�?j=?m�?u�Q?{��?��]?��?��M?�f=?��;TTile084Y�������������������������;TTile084X�������������������������:STile083Y ��?*��?+P�?.��?06s?2A9?2�?2{l?2�u?5�??:�-??�?C��?I�?N�9?Q�M?TC�?S��?Y�W?_��?g�?r�&?|��?��5?�Db:STile083X.	?.��?0�b?4:?5ً?8��?;"?=4�?@�?D�?Br|?D�[?F��?Lu�?M$�?Q�?U��?Y�?c;?l¡?s�?~�O?� �?�v�?��9RTile082Y V�?(b?*?*Me?)�"?*B*?+�n?,�(?/B?0��?2��?5R?7S5?:�?;��?>W�?A��?Cô?I��?P�d?Ws|?_`"?i�?q�?y~�9RTile082X 8F?%"�?'��?(�L?)}??*�d?+5�?,O�?0�?1�?3}	?6��?8�*?<�1??[/?A2�?EO*?F��?K�?Q3[?X�F?`	?jr�?tu�?|�8QTile081Y�������������������������8QTile081X�������������������������?XTile088Y ��?*��?-9�?/�?1�|?3�j?4��?7/�?9?>?<��?A��?H�?I�{?MZ�?R�c?U��?\�?`�,?e�2?oK�?v$�?��?�bj?��j?��	?XTile088X��?>�?@��?C�Y?E�F?G�a?H�_?K�?L��?P��?U{�?]T�?]�?bg�?hdE?m�y?u��?{�M?��?�M�?�MS?�y�?�\�?���?��>WTile087Y L�?34?4�?6�3?7�P?8�J?9�t?:�?>F�?C`�?Dٛ?H��?K��?Pv6?RT?WD?Y��?]x�?d؎?k \?r`?~��?�3�?�Ҝ?��@>WTile087XL�?K
+Z?L�?Nb(?N�R?Qt�?S̍?U�"?YV?_�?aLB?f5�?h�}?m��?o��?u.�?yl�?|X�?�hz?�x}?��f?��?�@h?�96?��<=VTile086Y �?Kh?L	?K}�?K׹?N�?Q#�?Q�O?UR*?Y3�?[�?]~�?bHw?h{?k�?q�?w M?y�(?���?���?���?�`�?��U?���?��=VTile086X 
+1?cT?c��?c�L?f2�?h�u?j5?j:�?n��?s�G?t�1?v�=?|C?�`�?��i?�$�?�}�?�\�?�Ɖ?�v?�*o?�Ճ?�G+?��
+?��><UTile085Y�������������������������<UTile085X�������������������������[|Tile124Y.?!$�?#�&?$�v?&n?&0�?'�{?*s{?-��?0s�?2�w?5��?6�=?8��?;̻??�X?A۹?F!?J��?O#$?Y�?]ѣ?gj�?o�?v�%[|Tile124X�)?2��?6�V?8C�?9j�?8��?:J�?<|?>ǩ?Ct/?H"/?Kǥ?Ka�?O��?S�]?T��?XQ�?Z�8?^��?cT?n�?s��?{��?��?�kZ{Tile123Y��?&�C?'�b?,=[?,�t?-��?1�k?39�?3��?3ו?8�?<��?A�?D��?D�?G��?K�j?O�?X�?\�?c��?lf�?s�Q?�Be?�ufZ{Tile123X.?@��?C��?G�`?H��?G#?M!i?N�K?O��?Q��?VWQ?Y��?\��?`�?d��?i?�?h��?ne�?w��?y�K?���?��a?��^?�.5?��YzTile122Y�?R�?U��?U�G?Wۑ?Z�?]bk?^�)?c�?i��?pw�?t��?x��?��?���?�k�?�h?�=?���?��9?��?�6?�m?��?��YzTile122X�{?[�)?_�l?_��?a��?fΆ?h�?kCw?m�]?tw?{'�?��<?�ͳ?�e�?���?���?�f?�	�?���?�ŏ?�m+?�\?�v^?�S?��bXyTile121Y��?W��?XD?\��?`�$?`d"?c��?d��?m�V?o�A?q*?u�}?xxm?|�?�"??�`$?�B0?���?��c?��?��~?��?��\?��?�o�XyTile121X?j4!?m!�?pn�?s؈?w(�?w��?}
+C?��?�J?�Tt?���?���?���?���?�!�?��T?�p�?�!j?�?���?�C?��:?��?��c_�Tile128Y�??vy?C�?C�J?B"V?E��?KA�?M��?O�?R\	?T��?Z�?^_8?amJ?f��?j(?m�
+?yq?|�:?���?�C*?�2�?�H[?�_Z?�h6_�Tile128X��?`6�?b�?b��?d��?g�?l��?qT�?r�?v�
+?{��?��?� �?��-?��?��?�n2?�a�?�SC?��7?�lv?��9?��R?��?�j�^Tile127Y�R?&ۮ?*��?*v�?,v�?-�X?0t?4#�?5i�?8�?=x�?B�?Fԧ?H9?LE|?O�?S r?Z�?^+�?f_m?oZ?wHf?��?���?��Y^Tile127XQ�?B�?FQ�?E��?G�4?JU�?L"�?Q��?R��?Tn=?Z�?a�&?e`<?f�`?k5�?n�G?p�H?yX�?|�T?��?��?�)@?�r�?��E?�o�]~Tile126YR?eC�?j�W?j��?p{�?u�7?uqo?w=�?y�~?z8�?�3�?�9?��?���?�w�?��K?��+?�K!?��?��?�C�?��N?���?���?�]~Tile126X��?rf�?xr�?z�?�?�8�?��i?��k?���?��i?���?��?�\A?��
+?���?�7R?��?��q?�5�?�&|?��?���?�?���?Ǡ�\}Tile125Y��?]�D?]��?ba]?d�0?i�?g��?l;?m�B?p�X?yJk?~#*?��G?��?��?�7c?�q?�i�?�Lx?��?���?���?���?�P|?��D\}Tile125X��?x��?v��?~]�?��1?�?�#[?�Nk?���?���?�Q?���?�6�?�#t?��?��?��0?��e?�iY?��_?��8?�k?��?µ�?�|�SrTile114Y�P�.?+j%?.�?1�?2�~?3�i?5mG?9i+?9|A?=Y�?@W�?D��?G�/?Kd�?N�a?R� ?V[�?Y�P?_B�?e��?p4>?z<?��?�}l?�@�SrTile114X�O�?)�i?.��?0�q?1�!?3�?4�?89q?86?:h�?>j�?Cjv?GAG?H��?L�{?P�5?Se�?X�m?\A?c?i�?qf�?xə?�x?��5RqTile113Y�Np�?_w�?\�6?a�,?d_�?kI�?l$�?r�?w�?vb�?{��?�V�?��I?�Y?�?��?��{?��?�_�?���?��J?��?���?���?�|(RqTile113X�P��?h-�?hor?k\)?l!?tb�?t��?y0�?~v�?�b&?��7?�?�?��?�;0?��1?�$W?�_�?��	?�O�?�a?�N?�*�?�p?��?�b7QpTile112Y�PM?�2?*R?�"?�
+?�;?F�?!s�?#o?&�E?*H�?-��?20�?6�?6�G?:y?<�?A�}?H�?M��?W@?_X�?eaJ?q�'?}'wQpTile112X�O�k?*3�?,�t?0+�?1�~?3K ?6�?9��?9�k??8h?B�#?E�]?I��?L�?Q9?S�A?Ug�?Z�W?_fo?dm�?n�?wI?}�V?��h?�(�PoTile111Y�Oh�?H�|?J̓?Lz�?L�?QG�?Q�+?T��?W��?Y3?_��?g�??h�?l�&?r�|?v%�?uN?~��?�9A?���?�ܤ?�%�?��v?��+?�əPoTile111X�Oǟ?XW&?X��?ZQ�?Zs�?`�5?b�?d��?i�7?i^�?o�?yP?xכ?|�?u�?���?�&_?���?� i?��?�c:?�ި?�"S?�b?��PWvTile118Y�N��?LJ*?L��?M��?M�?NUa?R�V?U��?W��?Z�?c#�?i�?i��?n�?q��?uީ?x��?��?�B�?��0?���?�L�?��3?�p�?�*�WvTile118X�P��?a��?bp�?d�I?hr"?iOp?mQ?o��?r#�?sˈ?{�3?�q?�`6?���?��?�Qb?�Y&?��p?���?�?�?�w�?���?�_�?�w?�9VuTile117Y�N?G��?I�b?L�E?Qd�?U~K?U>?Yд?]�?\t<?d<�?i�I?oz�?tP�?z,�?2v?�| ?�{?��^?�r�?���?���?��,?���?�P�VuTile117X�PL�?Z*?^)�?`a?f��?j��?i�>?o��?pft?q��?z�b?��?�ԟ?���?�Xp?�%_?���?�T?�a�?��d?���?�=�?���?�f�?��_UtTile116Y�N�$?Wڌ?\'j?\��?]a?bAx?c�?e?@?f/(?m��?t��?x�x?y�k?}��?��Z?��i?�q�?�(P?��?��:?�H?�(?�n�?�}(?�SUtTile116X�PB�?t�?v��?y�?{bn?~?���?���?�?��?��7?���?�S@?�ܞ?��S?���?�.?��?��'?�c?�O�?��z?�x�?��?ɟ�TsTile115Y�O�?Z��?\/?^M�?^̇?`�#?`�?d	?f(?h�#?p�?u�{?{nf?~
+�?�D�?�2�?�q?���?�ZH?�
+�?���?��n?�
+,?��?�|�TsTile115X�O�.?�-�?��?�Gf?��L?�k?�z�?�K�?��?��?���?�
+�?��x?��?�i\?�fS?�:?��w?��?�(�?�
+C?�.B?ǈ�?���?֢�k�Tile144Y��?_��?aU�?dmz?f�G?h#?g�O?oI�?p��?v��?|Z?���?�Q�?���?��f?��L?�k�?�R�?�
+t?�@?���?���?���?�b)?���k�Tile144X�+3&?r�L?t��?xت?zL%?}�
+?���?�0�?�^�?��O?�s
+?�V�?�+K?�V ?���?���?��?�T�?��?�ޖ?�{?���?��L?��=?�@yj�Tile143Y�3'?%��?'7?)'�?*4�?+��?,L�?+��?.��?0(�?3��?7-�?9��?=�?@3�?C�~?E��?I�%?N�?Rfl?\R?c�?m�U?w7?,Dj�Tile143X�1G�?>T?@}?A��?C_�?C��?D�?E{�?I_�?J�7?N��?S�&?W�?ZPN?^�?`ݟ?bOZ?e�e?jƈ?n�[?x߶?�_i?���?�	:?���i�Tile142Y���?R��?V(�?X|�?X��?\��?_�]?c_:?c�]?js�?n$�?rf�?s�1?z+�?}��?���?��?�>u?�,J?��?���?�;?�Ӄ?���?��i�Tile142X�4Q�?R?V�?[�n?[;�?]�v?`P?fBM?dVC?k�?p^?vD?wo?}��?�'?�?��	?�?��@?��+?�ʙ?��?�2?�3?�i�h�Tile141Y�=f?_�[?`+�?e\?duN?g�?i+%?m"*?oc�?s��?y�p?�e�?��?��R?���?���?�15?���?�>�?�ێ?�uA?�n�?���?���?���h�Tile141X�6m?�F?��?��'?���?�:S?��<?�,�?��,?���?���?��:?���?�L?��?�}?���?��G?��?�8!?�w�?���?�b}?�#N?��o�Tile148Y�#��?5��?8PI?:�0?;'w?<�?=4"??=?A�0?C+�?E�?G ?M�?Q?U�\?Y(�?Y�7?a[{?gGB?n_a?w7�?�sO?��d?�x�?���o�Tile148X�#��?DJ�?G��?J�?L�~?NO~?O?S�?T�}?U��?Z��?]�I?b`?fWe?jnH?n�?pE�?v��?{I.?���?�?���?��}?�*?���n�Tile147Y�$z�?5u�?8�?8��?;�$?:��?;�?>f.?A~M?C�?F�T?IVl?Mg�?Pf9?S@�?Vգ?XH>?\��?c�?i��?r�?}k?��?�_8?���n�Tile147X�&�;?H��?Mt�?Mp�?P�?P)�?P�s?U�?X5�?Z	`?_P)?c9�?hw?h�?m 3?r��?sgz?y	�?��A?��y?���?�л?��T?���?��m�Tile146Y��Q?*�%?.��?-Q�?-)�?/J�?/��?2�?6�?98?;(?>�u?AM�?E+�?G�t?JW�?Lĥ?S�?W�0?]��?h�?q�H?w�W?�z?�;cm�Tile146X�1�?4c�?7��?7��?8��?:/2?9�>?>#$?AY*?Co?DA�?H�B?K��?O&?N�m?R�%?T�o?\:2?^:?b�]?m?v]\?~D?�P|?��yl�Tile145Y���?o7�?qB?s�?t��?yA�?{8�?�N�?�T�?�GR?�on?�K4?��?�|�?��]?�?�?�b?��s?���?��?��?�z4?��?���?�nl�Tile145X�&�E?t��?u�[?{V�?|�?�;7?�Z�?�̀?��?�Z�?��?���?�.>?�Б?��n?��<?���?�P�?��?�_H?��G?�l?ÕL?�P?��Oc�Tile134Y� +y?5@�?7܍?:0�?=Z�?>l=??��?A�a?C��?GX�?IY?Mo|?P��?Sd?Xۛ?^�?_(,?fq?l�?t{h?u�?�q�?��o?�S�?���c�Tile134X� ��?=9�??��?A�?D1?EjP?G�p?KSM?N#9?P�D?S��?X��?]f�?a}�?f1?h�+?jg�?p�e?v��?~@|?��f?�	�?��?�G?���b�Tile133Y� ky?^��?c��?c��?fz�?l�?i�?m[v?q�.?tQ&?x�G?Ho?�?�?���?�1?�R$?��?��?���?�f�?�^#?�O"?�l�?��0?�?b�Tile133X� n?i�+?i��?kW�?o��?w��?w�t?{9�?}�?��?��Z?��\?���?��R?�&�?��Q?��M?�2?��e?��?�O�?���?�j?�.!?��Va�Tile132Y� �?_Kn?cN8?d_�?g��?h?g?i5�?l�?mU�?r�7?u�;?z��?�?�	�?��?�q�?��
+?���?��t?��?���?�gT?�F�?�&�?�ILa�Tile132X� �?\�?_�?b��?e��?g�&?hU�?k�J?o�?u�??y~(?|�?~��?�k�?��?��(?�s?���?�~d?��?��t?�#?�.�?�(e?��k`�Tile131Y��e?4�G?8oO?:�R?=˄?B��?B:�?G(�?F�E?I�N?J?SN?Wu?[N7?^:�?dn�?f}�?n6�?wTW?���?�?"?�@b?�v�?�x,?��_`�Tile131X� َ?G�]?L;e?P��?T	?Y	�?Z�?\��?]�?a�`?f��?j�w?oT,?s��?y��?��?��?��}?���?�t�?�	/?�-T?�w�?�4 ?�|�g�Tile138Y���?]��?`�<?c�;?b��?h��?g��?l��?o??s��?zc�?��?�59?�=�?��?�XY?��`?�	`?�<s?���?��B?��'?�5?�v{?��g�Tile138X�!�Z?��R?�G�?�3v?��V?�Bv?�%�?��}?�L�?���?���?��2?��?�e�?�V[?�W�?�_�?� W?�0D?��,?ǩ�?��g?�:7?�?�|f�Tile137Y�u�?&"?(?'�|?(��?(t_?(xs?+��?/?0��?4�?7�>?8T�?=��?@V?B�w?E��?K��?O=�?Td�?^�y?gFY?mJ)?u_z?}��f�Tile137X�!:�?;.}?>�?>?E??�??�1??Xn?E�S?FP�?Hy�?M@�?Q��?Q��?U�m?Vy�?Z%?^P?b�?f��?j�#?s9�?}�Q?��?���?���e�Tile136Y� 8F?1��?3��?6 �?8N?8�E?:�??h`??[�?C.�?GtL?I��?P=\?Q/�?T�n?[G3?[&�?c�d?k?�?pxD?z��?�3?�E�?�/u?�6�e�Tile136X� ��?E��?F��?J�4?P1�?N��?T�?X��?[b�?^��?c�H?e�%?n	t?n�0?w<?|�?~\�?�Vp?��?��8?��z?���?��?�c)?���d�Tile135Y��o?A�?E=?E�?H��?G��?G��?H��?KС?ON?R��?V�?Y��?Z�<?`��?bU\?d��?k#�?q�?v�|?��s?�??��?��?���d�Tile135X�!�1?A��?C�Q?D��?D��?D�k?F�?J?L-?NX?Q��?V�#?X.�?ZQ�?])�?]^�?bvM?g��?l�?sk?{�?��&?���?��M?�v�"Tile034Y�+z?P�]?R� ?R��?T��?T�?VT�?XMk?[��?]o�?`?cx�?dc�?j�$?k٦?oL{?uK�?wN�?|�??�R�?��?�?��?��^?�,e"Tile034X���?:
+B?=J�?=�]?=�??DI??~�?B��?D�d?E�Y?H��?K9�?L��?RC>?S��?WU>?[U�?_|?aD?e�-?o�?x��?���?���?���!Tile033Y�?9wF?90�?;�\?>a??��?AI7?D�q?G7�?IP�?M�?RL�?U.�?Y�?_I�?dm�?i??kV?q�z?y�"?��?�[)?�*�?��?�9!Tile033X���?412?43�?6?�?8�y?9�x?<|A?A}?C�?F��?J/�?N�1?P��?S�j?Z��?_�?c{�?d��?j��?q|�?z?��b?��B?�5<?�#� Tile032Y�n
+?�I?!]u?#�5?&?&��?'S'?)?*f?.�M?2T�?7&?:$�?>:?CC�?F[]?J�?N?SIb?\i�?d��?ov0?z!{?�c?�M� Tile032X�u�?5Q�?9"�?9�?<�l?=p\??U^?B\�?E�L?J�?O�N?T�9?V��?Y2v?^�?b�D?h�?l#�?r?z��?�O}?�H.?��p?��?�xETile031Y�Tp?*e?-&F?/��?2f�?2�?4�K?7fc?9��?=�@?B{W?G�$?I�?NP�?R��?U��?[��?_Y?ef?o,?w0?��?�,�?���?��NTile031X���?J6W?N�j?Nc�?Ryr?R??T�?V�_?Z�?_��?e�?l��?nA�?r��?y`�?{��?�?���?�v�?�ez?���?���?��6?��}?���&Tile038Y��?jX?e�?޹?\?��?=?�9?$<?%��?&�l?(V?,X2?1��?50�?6^�?7j?8�?=J<?A��?J�?Q��?[	T?b�X?ks&Tile038X�J3?3�+?4��?7v�?9�\?9��?:C�?;��??j-?A�v?A��?Ff�?KX�?O��?SLV?R�}?V�p?W�F?[�&?b��?j.
+?qm?y�?��?���%Tile037Y��[?)w?,_�?*��?.r?-EZ?-*�?-�O?1%�?4��?6/�?:�Z??S�?A�?C�]?H9?K?L�?O�?X�?_��?f�B?ov?vy�?� �%Tile037X��=?5�$?7�?8��?:�a?;-�??7�??��?E��?F*�?F��?H�B?K-;?Nnp?O0q?RE�?US"?WO?]�t?fɈ?o��?z]�?�M�?��G?���$Tile036Y�?y=?�l?A�?�.?�?��?�?�4? ��?#Eh?$��?&i?&�\?',?*�&?.�?1�?5N?:�c?A��?I�?Rn?\jx?b2Z$Tile036X��=?9��?:�"?:��?;��?<G?=�?8��?;�??�=?A?Db�?G�?JԈ?L�Y?P[?SQn?Sx?U�?Y�,?bR"?m�?x�?��?�^#Tile035Y���?wm?�?�;? �?!�N?!�U? �P?#�c?$i?'��?+$?0er?2k�?2��?2��?5:?7��?=*�?C1�?K~.?S6�?[�I?c��?jm1#Tile035X��\?4��?6?^?9�?9@&?:��?;,�?<��??��?@3�?C
+^?D��?JQa?K��?L9�?M�X?P'�?Tv�?X�W?_k�?h%�?m��?vR�?~�5?���,Tile044YC��?�?!��?#�?%'�?%S�?$�?&�?(�v?*�.?+T?,�(?0%�?3��?6��?8�z?;D(?>O�?C��?H��?Pў?[�-?f�?mч?w�U,Tile044XC���?0�F?2��?5�&?6�?6^�?8�?8��?<��?=�y??z�??Ǉ?BЋ?J`4?LF?O��?Sa?U�?Y��?_9�?g��?rH?|?�?��A?�/�+Tile043YC���?��?��?�Q?��?W?y�?r?<�?��?�?�?#��?'�O?)�;?+I�?-0�?0�6?4��?8�.?>�z?F�U?OX	?W��?_+Tile043XC��"?%��?%��?%U�?$��?%4?$�x?$b{?'\"?+v?0wD?5c?8N�?:�>?<Kk?>8�?CXG?FO�?La�?P��?Yǫ?b�??j'�?t��?z&�*Tile042YC���? �?�?W[?��?�j?`�?�?�? ]�?#/�?$8�?%�?*ʑ?.�?2��?9B�?=��?BS�?F��?M1=?R��?Y�?`'?d��*Tile042XC���?$�^?'�?*��?.�?/o�?5(0?7��?<g?>4;?A?D�*?De�?HO?H�a?LX�?N��?MC�?Pj�?S��?[�*?cJ<?nTb?z�?�7M)Tile041YC���?�?��?��?��?��?�?=e?�? �?!?&8�?+��?1>?3Q?6ß?9�E?=i?B�o?E�r?J
+g?Q�4?\0?da?lw)Tile041XC�
+,?0T�?3�f?52�?5s�?9C�?=�3?B�?F�?H��?I�e?L�f?P@�?O�$?O��?Pbg?T�[?W.�?]�?aP�?k$�?w�q?���?�$?�/�0Tile048YC��~?(��?*RW?+��?.SO?.��?/r[?2�2?6Q?8��??��?E�b?G�U?L^V?Pp�?R�?W�A?Z�?a�?i��?q%�?{�$?��n?��6?��0Tile048XC��t?=z�?>�??@��?D�j?E�[?G�
+?K�?M�?QVS?W��?^0H?`\�?d�?ja�?n�e?r�?rw?{�?��?�J�?��!?��?���?�I/Tile047YC�_?y+?�?�?��?E�?�q?�'?Q�?eL?�+? a]?#�?%��?(V�?,Q]?0c�?1r?6�?=�M?D�?Jk�?S��?[��?c��/Tile047XC�Г? ??!_k? Y�?!e?!sB?#ޯ?%{P?(=?+�R?-G�?1��?4�o?8???:�V?<��?A�+?E��?IG?M��?T��?[G?b�?k�?tu�.Tile046YC�?%�P?(��?*�A?,�[?-��?0��?1DK?4�E?61%?;2�?B?F�?KvD?N�Z?R�}?U�?Y�?a�z?k�?sb�?|��?���?�H�?�+.Tile046XC���?/��?2�?4kf?8#�?8�?9��?;��??�?A��?ER{?La�?P�4?U�?X,�?Zt�?^.�?ae�?i�?q��?x��?��e?���?���?��$-Tile045YC姝?L�?�	?�?c;?�S?�?B? �?"�i?&��?*U?-W�?/y�?1�?4E�?9�w?</??:�?E]�?L5\?Th?\�?e�D?om�-Tile045XC�̼?&5�?&�?)�?,��?/.4?09w?0�G?3?6W�?9�l?:3�?<(�?>(�?>dk?C�?H#s?J͸?N�A?W?^�^?e-?o(�?y�?���+@Tile064YC|�?":?$�g?&+X?'g8?*%�?+~�?.tG?/�D?1?3��?5�=?9U�?<��?>=[?@�?@�?C�r?Iӟ?P�?Z��?d�+?o��?x\�?�K�+@Tile064XC}x??1�a?5��?9�?=E�?@��?C�:?G��?M;�?P�J?WX�?]�#?fY?p��?w��?�2�?���?���?���?�1�?��?��.?���?��?���*?Tile063YC}J+? �|? �?"LL?"p|?#RK?$m?$K�?&�?(X�?,_J?0M�?4�v?4��?6��?:�?<b�?>�?D�i?J]?R�?W�?_e?iK3?p�k*?Tile063XC}c�?73�?8E�?:$�?:cU?:��?:�?<$�?>_S?@TQ?D}�?Hta?L��?Mkr?O�u?S�:?U��?U�?ZF?_J5?iȉ?n��?y��?��6?��)>Tile062YC}Th?#��?%?%�?%��?(��?*"U?*�'?+��?,�D?/)�?0��?4W�?66�?7��?<�?=q?@�?E��?L](?RI}?W-?`.?iF�?q��)>Tile062XC|�?8�?:Xf?9��?:m�?<��??Q?>��??�g?A�?C��?Gy^?K%�?N�$?Qg_?S�.?U�E?Wm�?]V�?d��?k��?r!?~�Q?�N�?���(=Tile061YC|��?&�E?(��?*��?*UY?,�q?+KT?,=?/�/?0J�?3��?6F?9�?>7�??�?At�?C�?F�?L��?PW�?Y�s?a�v?j1�?r�X?zo(=Tile061XC}�?/@�?2~?2�r?4�"?7�s?7d
+?8<?97?;hv??6?A�?E~D?H�V?K�?M��?Rh�?TYU?Y��?]��?f�?n�D?z�'?�p?��/DTile068YC|�?)�!?+b�?-P?-)�?,��?/J�?1X?4�7?9�?=�?By?D�Z?Hxp?I�w?M+�?T�`?V��?]ط?e?m9F?v�v?�k ?�#?�_/DTile068XC}?�?G-c?H�g?I��?I�*?J��?J<?P�|?UHi?Yg�?`-?b�N?d��?e��?g]?i^�?o�k?rx�?x�?~X�?��?�[?�ԓ?�	�?�l(.CTile067YC}��?%�/?*4?)�?,&-?+�6?)�M?,��?.�q?0d�?3��?5��?9�e?;8�?;�9?>q?@~[?DJ?J�?Pz?YD!?_Z�?g�?n�F?v�f.CTile067XC}c�?;�?>H?@n�?A�7?@kT?@��?B��?F�|?Fؙ?H��?J"?O'�?S�X?U5I?W�a?Z�+?\A�?c7�?g�\?q>�?u��?�:5?�N�?��/-BTile066YC}�?1�?2�?2�5?2A�?4��?6�?9�m?=��?=�w?BE�?Cr�?E�?Iz�?LA�?N5�?Q�?SB3?X�z?\�?e�i?kk�?v��?�C�?��u-BTile066XC}Y�?>�?A^?B(�?C_%?D�?F��?J�?Kf�?L�?O�H?Q9T?T��?Yv?^��?`�?b�a?c�??hY�?n_?tA�?{Cv?�۾?��T?�r�,ATile065YC|��?0�Q?39?5��?7��?8�4?9؃?;˴?>^�?>��?@J~?B�?E'?I��?M��?P�?Tz�?Y�[?`�I?h�c?q�?}�??��v?��p?��m,ATile065XC}|?Bh�?D��?F�?HL*?IQ?Kra?L�e?O��?T8�?V<1?Y� ?a�?h��?m�3?s�2?u��?ypY?�)?��	?��<?�z�?�?h?�-�?��j#6Tile054YBO̽?+�?.d9?0��?/��?2�N?4�5?54f?8�?<��?>�f?BO�?F��?J�m?KO�?QQ�?S��?Y��?^
+?f)?oH\?zi?�T�?���?�|L#6Tile054XBN̽?0fI?4,3?4��?6N�?:/N?<�?>�V?@&�?C�j?G�`?J�)?O�#?U��?W��?Z�F?]�?b@�?f?�?lF�?s�
+?�l?�X�?��e?�l�"5Tile053YBLG�?+��?.�?0!0?2�?3��?4�?6�[?:�?>�q?Bω?H?m?I�@?N&?R��?VA?ZҖ?^VC?c}�?nZ?u|?���?��g?�`?��"5Tile053XBN�?C��?G��?H>�?J�?Kd�?N �?O��?S�?Yq�?_�?f�+?ir4?m�?r��?v4�?y܌?~�Y?��?��b?��7?��?�m�?�x�?�o�!4Tile052YBO��?'�[?,�?-X?.�!?/��?0�:?3$6?6
+�?8�?=H�?@ܻ?F?I��?Mj�?Q'?Sz�?X��?]�I?e�Z?p��?{?{?�҃?�?��!4Tile052XBO��?;�I?>��?A�0?D!?D9P?E�?I��?M3?N�F?Sa�?Xt4?_�^?_]4?d.?h�2?kL?p�W?t��?{!�?��_?�1�?��_?�fz?�H 3Tile051YBN(�?2$?4��?7s�?9��?:�?<�?>̗?B>�?B��?G�$?NΟ?Qim?Uu;?Zq�?`2�?e�?j�?ox�?x�i?���?���?���?�
+�?��� 3Tile051XBNG�?<;??��?A^�?C*�?C��?E�?I��?M�?P�?V��?^?�?_q�?bϖ?f7�?l�?prb?tf�?zn|?��+?���?��>?��?�:N?��':Tile058YBO�?"9?%P�?&��?*S?,L�?-;?/�u?1�?4Ӿ?9??U??B��?E��?I�_?Ma?Rk�?U��?[�O?e
+�?k��?u=M?�e?���?�,':Tile058XBM3$?R^�?VA?W�i?\�V?^�d?`_?d�8?h5o?k�.?p�t?y�'?|�B?�9�?���?���?��J?���?�>�?�\`?�ܡ?���?��?�
+�?�Pw&9Tile057YBO�v?6{�?:�?<�'??��?AD�?B�?EE�?HI�?K5�?M�l?Q�?U�?\�?a
+?ft?k�8?ox?uz?}�?��?�rB?�3�?�A?�Ps&9Tile057XBN�?K/c?M��?Prz?QR.?R�"?U�?Wo?[t�?`d�?dq�?h��?j�?rQ�?wI?|�M?���?�R�?�?�2�?��?��S?���?�(?�ֿ%8Tile056YBN\?:�(?;�}?;n�?='�??�m?A��?C0�?C�g?Hb?Lj|?PE?R1'?V��?W��?\��?b�H?c<�?lS?wl�?~��?�B�?�8�?�oP?�[�%8Tile056XBN?a��?bW?ac�?aI�?dUt?g��?jQ?j��?pvT?r�?w��?z"<?�_?��?��W?�}B?���?�D�?���?�y�?��?�;�?�%?��$7Tile055YBTQ�?X��?X�v?^%?`�0?eZE?g F?k�?n@&?q�?t��?{�A?��?���?���?�l�?���?�o?�r?�:�?���?��i?�y�?��?�#r$7Tile055XBI̾?j��?l}Y?o�s?p��?v�E?x��?~�8?�VD?��?���?��g?�h�?���?��O?���?��?�	?��-?�*|?�4�?��t?�P�?�+?��|
\ No newline at end of file