From 1cd629271a5b9cfff4243798bc5f7d6626a6d2e7 Mon Sep 17 00:00:00 2001 From: "Bruchon, Matthew" Date: Wed, 17 Jul 2024 18:45:11 -0400 Subject: [PATCH 01/50] fixed rust get functions --- .../src/train/speed_limit_train_sim.rs | 20 +++++++++++---- rust/altrios-core/src/train/train_config.rs | 25 ++++++++++++++----- rust/altrios-core/src/train/train_state.rs | 4 +++ 3 files changed, 38 insertions(+), 11 deletions(-) diff --git a/rust/altrios-core/src/train/speed_limit_train_sim.rs b/rust/altrios-core/src/train/speed_limit_train_sim.rs index dfcdb03e..61bd5684 100644 --- a/rust/altrios-core/src/train/speed_limit_train_sim.rs +++ b/rust/altrios-core/src/train/speed_limit_train_sim.rs @@ -57,14 +57,19 @@ impl From<&Vec> for TimedLinkPath { Ok(self.get_save_interval()) } + #[pyo3(name = "get_kilometers")] + pub fn get_kilometers_py(&self, annualize: bool) -> f64 { + self.get_kilometers(annualize) + } + #[pyo3(name = "get_megagram_kilometers")] pub fn get_megagram_kilometers_py(&self, annualize: bool) -> f64 { self.get_megagram_kilometers(annualize) } - #[pyo3(name = "get_kilometers")] - pub fn get_kilometers_py(&self, annualize: bool) -> f64 { - self.get_kilometers(annualize) + #[pyo3(name = "get_car_kilometers")] + pub fn get_car_kilometers_py(&self, annualize: bool) -> f64 { + self.get_car_kilometers(annualize) } #[pyo3(name = "get_res_kilometers")] @@ -206,14 +211,19 @@ impl SpeedLimitTrainSim { } } + pub fn get_kilometers(&self, annualize: bool) -> f64 { + self.state.total_dist.get::() * self.get_scaling_factor(annualize) + } + pub fn get_megagram_kilometers(&self, annualize: bool) -> f64 { self.state.mass_freight.get::() * self.state.total_dist.get::() * self.get_scaling_factor(annualize) } - pub fn get_kilometers(&self, annualize: bool) -> f64 { - self.state.total_dist.get::() * self.get_scaling_factor(annualize) + pub fn get_car_kilometers(&self, annualize: bool) -> f64 { + let n_cars = self.state.cars_total as f64; + self.state.total_dist.get::() * n_cars * self.get_scaling_factor(annualize) } pub fn get_res_kilometers(&mut self, annualize: bool) -> f64 { diff --git a/rust/altrios-core/src/train/train_config.rs b/rust/altrios-core/src/train/train_config.rs index 54409a92..91fecf5c 100644 --- a/rust/altrios-core/src/train/train_config.rs +++ b/rust/altrios-core/src/train/train_config.rs @@ -328,13 +328,14 @@ impl TrainSimBuilder { + veh.braking_ratio_loaded * self.train_config.cars_loaded as f64) / cars_total; - let state = TrainState::new( + let mut state = TrainState::new( length, mass_static, mass_adj, mass_freight, self.init_train_state, ); + state.cars_total = self.train_config.cars_total(); let path_tpc = PathTpc::new(train_params); @@ -984,14 +985,19 @@ pub fn run_speed_limit_train_sims( self.get_net_energy_res(annualize).get::() } + #[pyo3(name = "get_kilometers")] + pub fn get_kilometers_py(&self, annualize: bool) -> f64 { + self.get_kilometers(annualize) + } + #[pyo3(name = "get_megagram_kilometers")] pub fn get_megagram_kilometers_py(&self, annualize: bool) -> f64 { self.get_megagram_kilometers(annualize) } - #[pyo3(name = "get_kilometers")] - pub fn get_kilometers_py(&self, annualize: bool) -> f64 { - self.get_kilometers(annualize) + #[pyo3(name = "get_car_kilometers")] + pub fn get_car_kilometers_py(&self, annualize: bool) -> f64 { + self.get_car_kilometers(annualize) } #[pyo3(name = "get_res_kilometers")] @@ -1027,6 +1033,10 @@ impl SpeedLimitTrainSimVec { .sum() } + pub fn get_kilometers(&self, annualize: bool) -> f64 { + self.0.iter().map(|sim| sim.get_kilometers(annualize)).sum() + } + pub fn get_megagram_kilometers(&self, annualize: bool) -> f64 { self.0 .iter() @@ -1034,8 +1044,11 @@ impl SpeedLimitTrainSimVec { .sum() } - pub fn get_kilometers(&self, annualize: bool) -> f64 { - self.0.iter().map(|sim| sim.get_kilometers(annualize)).sum() + pub fn get_car_kilometers(&self, annualize: bool) -> f64 { + self.0 + .iter() + .map(|sim| sim.get_car_kilometers(annualize)) + .sum() } pub fn get_res_kilometers(&mut self, annualize: bool) -> f64 { diff --git a/rust/altrios-core/src/train/train_state.rs b/rust/altrios-core/src/train/train_state.rs index 2e022b56..1706e24f 100644 --- a/rust/altrios-core/src/train/train_state.rs +++ b/rust/altrios-core/src/train/train_state.rs @@ -104,6 +104,9 @@ pub struct TrainState { pub res_grade: si::Force, pub res_curve: si::Force, + /// Number of cars included on the train + pub cars_total: u32, + /// Grade at front of train pub grade_front: si::Ratio, /// Grade at back of train of train if strap method is used @@ -142,6 +145,7 @@ impl Default for TrainState { mass_static: Default::default(), mass_adj: Default::default(), mass_freight: Default::default(), + cars_total: Default::default(), elev_front: Default::default(), energy_whl_out: Default::default(), grade_front: Default::default(), From f922fb4b6281d1fe60736d1e025c207cd4757735 Mon Sep 17 00:00:00 2001 From: "Bruchon, Matthew" Date: Fri, 26 Jul 2024 14:36:52 -0400 Subject: [PATCH 02/50] separate counts for empty and loaded --- python/altrios/metric_calculator.py | 96 +++++++++++++++---- .../altrios/tests/test_metric_calculator.py | 2 +- .../src/train/speed_limit_train_sim.rs | 23 ++++- rust/altrios-core/src/train/train_config.rs | 23 ++++- rust/altrios-core/src/train/train_state.rs | 9 +- 5 files changed, 119 insertions(+), 34 deletions(-) diff --git a/python/altrios/metric_calculator.py b/python/altrios/metric_calculator.py index bb15460f..4789f0bb 100644 --- a/python/altrios/metric_calculator.py +++ b/python/altrios/metric_calculator.py @@ -117,11 +117,14 @@ def main( scenario_infos: Union[ScenarioInfo, List[ScenarioInfo]], annual_metrics: Union[Tuple[str, str], List[Tuple[str, str]]] = [ - ('Mt-km', 'million tonne-km'), + ('Freight_Moved', 'million tonne-mi'), + ('Freight_Moved', 'car-miles'), + ('Freight_Moved', 'cars'), ('GHG', 'tonne CO2-eq'), ('Count_Locomotives', 'assets'), ('Count_Refuelers', 'assets'), - ('Energy_Costs', 'USD') + ('Energy_Costs', 'USD'), + ('Energy_Per_Freight_Moved', 'kWh per car-mile') ], calculate_multiyear_metrics: bool = True ) -> pl.DataFrame: @@ -146,7 +149,7 @@ def main( for annual_metric in annual_metrics: for scenario_info in scenario_infos: annual_values.append(calculate_annual_metric(annual_metric[0], annual_metric[1], scenario_info)) - + values = pl.concat(annual_values, how="diagonal_relaxed").unique() if calculate_multiyear_metrics: @@ -157,7 +160,8 @@ def main( values = (values .filter(pl.col("Value").is_not_null()) .unique() - .sort(["Metric","Units","Year","Subset"], descending = [False, False, False, True]) + .sort(["Metric","Units","Year","Subset"], + descending = [False, False, False, True]) ) return values @@ -257,6 +261,44 @@ def calculate_rollout_lcotkm(values: MetricType) -> MetricType: metric("LCOTKM", "USD per million tonne-km (levelized)", lcotkm_all) ]) +def calculate_energy_per_freight(info: ScenarioInfo, + units: str) -> MetricType: + """ + Given a years' worth of simulation results, computes a single year energy usage per unit of freight moved. + Arguments: + ---------- + info: A scenario information object representing parameters and results for a single year + units: Requested units + Outputs: + ---------- + DataFrame of energy usage per freight moved (metric name, units, value, and scenario year) + """ + if "per car-mile" not in units: + print(f"Units of {units} not supported for energy-per-freight calculation.") + return metric("Energy_Per_Freight_Moved", units, None) + + conversion_from_megajoule = 0 + if "MJ" in units: + conversion_from_megajoule = 1 + elif "MWh" in units: + conversion_from_megajoule = utilities.KWH_PER_MJ / 1e3 + elif "kWh" in units: + conversion_from_megajoule = utilities.KWH_PER_MJ + + diesel_mj = calculate_diesel_use(info, units="MJ") + electricity_mj = calculate_electricity_use(info, units="MJ") + total_mj = value_from_metrics(diesel_mj) + value_from_metrics(electricity_mj, subset="All") + total_energy = total_mj * conversion_from_megajoule + freight_moved = calculate_freight_moved(info, units="car-miles") + freight_val = value_from_metrics(freight_moved) + return metrics_from_list([ + diesel_mj, + electricity_mj, + metric("Energy_Use", "MJ", total_mj), + metric("Energy_Per_Freight_Moved", units, total_energy / freight_val) + ]) + + def calculate_energy_cost(info: ScenarioInfo, units: str) -> MetricType: """ @@ -273,8 +315,7 @@ def calculate_energy_cost(info: ScenarioInfo, return metric("Cost_Energy", units, None) diesel_used = calculate_diesel_use(info, units="gallons") - electricity_used = (calculate_electricity_use(info, units="kWh") - ) + electricity_used = calculate_electricity_use(info, units="kWh") electricity_costs_disagg = (electricity_used .filter(pl.col("Subset") != "All") .join(info.nodal_energy_prices.filter(pl.col("Fuel")=="Electricity"), left_on="Subset", right_on="Node", how="left") @@ -292,11 +333,15 @@ def calculate_energy_cost(info: ScenarioInfo, # Diesel refueling is not yet tracked spatiotemporally; just use average price across the network. diesel_price = info.nodal_energy_prices.filter(pl.col("Fuel")=="Diesel").get_column("Price").mean() diesel_cost_value = value_from_metrics(diesel_used,"Diesel_Usage") * diesel_price - return metrics_from_list([diesel_used, - metric("Cost_Diesel", "USD", diesel_cost_value), - electricity_costs_disagg, - electricity_costs_agg, - metric("Cost_Energy", units, diesel_cost_value + electricity_cost_value)]) + if electricity_cost_value is None: electricity_cost_value = 0.0 + if diesel_cost_value is None: diesel_cost_value = 0 + return metrics_from_list([ + diesel_used, + electricity_used, + metric("Cost_Diesel", "USD", diesel_cost_value), + electricity_costs_disagg, + electricity_costs_agg, + metric("Cost_Energy", units, diesel_cost_value + electricity_cost_value)]) def calculate_diesel_use( info: ScenarioInfo, @@ -351,7 +396,7 @@ def calculate_electricity_use( print(f"Units of {units} not supported for electricity use calculation.") return metric("Electricity_Usage", units, None) - if info.refuel_sessions is None: + if (info.refuel_sessions is None) or (info.refuel_sessions.filter(pl.col("Fuel_Type")==pl.lit("Electricity")).height == 0): # No refueling session data: charging was not explicitly modeled, # so take total net energy at RES and apply charging efficiency factor return metric("Electricity_Usage", units, @@ -385,20 +430,33 @@ def calculate_electricity_use( disagg_energy]) -def calculate_freight( +def calculate_freight_moved( info: ScenarioInfo, units: str) -> MetricType: """ - Given a years' worth of simulation results, computes a single year gross million tonne-km of freight delivered + Given a years' worth of simulation results, computes a single year quantity of freight moved Arguments: ---------- info: A scenario information object representing parameters and results for a single year units: Requested units Outputs: ---------- - DataFrame of gross million tonne-km of freight (metric name, units, value, and scenario year) + DataFrame of quantity of freight (metric name, units, value, and scenario year) """ - return metric("Mt-km", units, info.sims.get_megagram_kilometers(annualize=info.annualize)/1.0e6) + if "-mi" in units: + conversion_from_km = utilities.MI_PER_KM + else: + conversion_from_km = 1.0 + + if units in ["million tonne-km", "million tonne-mi"]: + return metric("Freight_Moved", units, info.sims.get_megagram_kilometers(annualize=info.annualize) * conversion_from_km /1.0e6) + elif units in ["car-km", "car-miles"]: + return metric("Freight_Moved", units, info.sims.get_car_kilometers(include_empty=True, include_loaded=True, annualize=info.annualize) * conversion_from_km) + elif units == "cars": + return metric("Freight_Moved", units, info.sims.get_cars_moved(include_empty=True, include_loaded=True, annualize=info.annualize)) + else: + print(f"Units of {units} not supported for freight movement calculation.") + return metric("Freight_Moved", units, None) def calculate_ghg( info: ScenarioInfo, @@ -445,9 +503,6 @@ def calculate_ghg( to the desired region before passing the emissions factor dataframe into the metrics calculator.""") else: if electricity_MWh.filter(pl.col("Subset") != "All").height > 0: - print(diesel_MJ) - print(info.emissions_factors) - print(electricity_MWh) # Disaggregated results are available electricity_ghg_val = (electricity_MWh .filter(pl.col("Subset") != pl.lit("All")) @@ -1011,7 +1066,8 @@ def add_battery_costs(loco_info: pd.DataFrame, year: int) -> pd.DataFrame: function_mappings = {'Energy_Costs': calculate_energy_cost, - 'Mt-km': calculate_freight, + 'Freight_Moved': calculate_freight_moved, + 'Energy_Per_Freight_Moved': calculate_energy_per_freight, 'GHG': calculate_ghg, 'Count_Locomotives': calculate_locomotive_counts, 'Count_Refuelers': calculate_refueler_counts diff --git a/python/altrios/tests/test_metric_calculator.py b/python/altrios/tests/test_metric_calculator.py index 004b6efe..6fc754c5 100644 --- a/python/altrios/tests/test_metric_calculator.py +++ b/python/altrios/tests/test_metric_calculator.py @@ -23,6 +23,6 @@ def test_dummy_sim(self): False)) for info in scenario_infos: - tkm = metric_calculator.calculate_freight(info,'Million_Tonne-KM') + tkm = metric_calculator.calculate_freight_moved(info,'million tonne-mi') self.assertEqual(tkm.filter(pl.col("Metric") == 'Mt-km').get_column("Units").len(), 1) diff --git a/rust/altrios-core/src/train/speed_limit_train_sim.rs b/rust/altrios-core/src/train/speed_limit_train_sim.rs index 61bd5684..1fc0f407 100644 --- a/rust/altrios-core/src/train/speed_limit_train_sim.rs +++ b/rust/altrios-core/src/train/speed_limit_train_sim.rs @@ -68,8 +68,13 @@ impl From<&Vec> for TimedLinkPath { } #[pyo3(name = "get_car_kilometers")] - pub fn get_car_kilometers_py(&self, annualize: bool) -> f64 { - self.get_car_kilometers(annualize) + pub fn get_car_kilometers_py(&self, include_empty: bool, include_loaded: bool, annualize: bool) -> f64 { + self.get_car_kilometers(include_empty, include_loaded, annualize) + } + + #[pyo3(name = "get_cars_moved")] + pub fn get_cars_moved_py(&self, include_empty: bool, include_loaded: bool, annualize: bool) -> f64 { + self.get_cars_moved(include_empty, include_loaded, annualize) } #[pyo3(name = "get_res_kilometers")] @@ -221,9 +226,17 @@ impl SpeedLimitTrainSim { * self.get_scaling_factor(annualize) } - pub fn get_car_kilometers(&self, annualize: bool) -> f64 { - let n_cars = self.state.cars_total as f64; - self.state.total_dist.get::() * n_cars * self.get_scaling_factor(annualize) + pub fn get_car_kilometers(&self, include_empty: bool, include_loaded: bool, annualize: bool) -> f64 { + let n_cars = self.get_cars_moved(include_empty, include_loaded, annualize); + // Note: n_cars already includes an annualization scaling factor; no need to multiply twice. + self.state.total_dist.get::() * n_cars + } + + pub fn get_cars_moved(&self, include_empty: bool, include_loaded: bool, annualize: bool) -> f64 { + let n_cars = + (self.state.cars_empty * (include_empty as u32) + + self.state.cars_loaded * (include_loaded as u32)) as f64; + n_cars * self.get_scaling_factor(annualize) } pub fn get_res_kilometers(&mut self, annualize: bool) -> f64 { diff --git a/rust/altrios-core/src/train/train_config.rs b/rust/altrios-core/src/train/train_config.rs index 91fecf5c..23613165 100644 --- a/rust/altrios-core/src/train/train_config.rs +++ b/rust/altrios-core/src/train/train_config.rs @@ -335,7 +335,8 @@ impl TrainSimBuilder { mass_freight, self.init_train_state, ); - state.cars_total = self.train_config.cars_total(); + state.cars_empty = self.train_config.cars_empty; + state.cars_loaded = self.train_config.cars_loaded; let path_tpc = PathTpc::new(train_params); @@ -996,8 +997,13 @@ pub fn run_speed_limit_train_sims( } #[pyo3(name = "get_car_kilometers")] - pub fn get_car_kilometers_py(&self, annualize: bool) -> f64 { - self.get_car_kilometers(annualize) + pub fn get_car_kilometers_py(&self, include_empty: bool, include_loaded: bool, annualize: bool) -> f64 { + self.get_car_kilometers(include_empty, include_loaded, annualize) + } + + #[pyo3(name = "get_cars_moved")] + pub fn get_cars_moved_py(&self, include_empty: bool, include_loaded: bool, annualize: bool) -> f64 { + self.get_cars_moved(include_empty, include_loaded, annualize) } #[pyo3(name = "get_res_kilometers")] @@ -1044,10 +1050,17 @@ impl SpeedLimitTrainSimVec { .sum() } - pub fn get_car_kilometers(&self, annualize: bool) -> f64 { + pub fn get_car_kilometers(&self, include_empty: bool, include_loaded: bool, annualize: bool) -> f64 { + self.0 + .iter() + .map(|sim| sim.get_car_kilometers(include_empty, include_loaded, annualize)) + .sum() + } + + pub fn get_cars_moved(&self, include_empty: bool, include_loaded: bool, annualize: bool) -> f64 { self.0 .iter() - .map(|sim| sim.get_car_kilometers(annualize)) + .map(|sim| sim.get_cars_moved(include_empty, include_loaded, annualize)) .sum() } diff --git a/rust/altrios-core/src/train/train_state.rs b/rust/altrios-core/src/train/train_state.rs index 1706e24f..7f514626 100644 --- a/rust/altrios-core/src/train/train_state.rs +++ b/rust/altrios-core/src/train/train_state.rs @@ -104,8 +104,10 @@ pub struct TrainState { pub res_grade: si::Force, pub res_curve: si::Force, - /// Number of cars included on the train - pub cars_total: u32, + /// Number of empty cars included on the train + pub cars_empty: u32, + /// Number of loaded cars included on the train + pub cars_loaded: u32, /// Grade at front of train pub grade_front: si::Ratio, @@ -145,7 +147,8 @@ impl Default for TrainState { mass_static: Default::default(), mass_adj: Default::default(), mass_freight: Default::default(), - cars_total: Default::default(), + cars_empty: Default::default(), + cars_loaded: Default::default(), elev_front: Default::default(), energy_whl_out: Default::default(), grade_front: Default::default(), From 797ddae07520cc3cc15b21854765ab15ec807a6d Mon Sep 17 00:00:00 2001 From: sakhtar Date: Tue, 10 Sep 2024 15:40:19 -0600 Subject: [PATCH 03/50] Made drag coeff a function instead of list --- python/altrios/train_planner.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/python/altrios/train_planner.py b/python/altrios/train_planner.py index e8165e6f..afdaaaec 100644 --- a/python/altrios/train_planner.py +++ b/python/altrios/train_planner.py @@ -6,7 +6,7 @@ import polars as pl import polars.selectors as cs import math -from typing import Tuple, List, Dict +from typing import Tuple, List, Dict, Callable from itertools import repeat import altrios as alt from altrios import defaults, utilities @@ -22,7 +22,7 @@ def __init__(self, #TODO single vs double stacked operations on the corridor cars_per_locomotive: int = 70, refuelers_per_incoming_corridor: int = 4, - drag_coeff_function: List = None, + drag_coeff_function: Callable = None, hp_required_per_ton: Dict = { "Default": { "Unit": 2.0, @@ -989,7 +989,8 @@ def run_train_planner( this_train['Train_Type']: this_train['Number_of_Cars'] }, train_type = train_type, - cd_area_vec = config.drag_coeff_function + cd_area_vec = config.drag_coeff_function(this_train['Number_of_Cars'], + gap_size = 0.604) ) loco_start_soc_j = dispatched.get_column("SOC_J") From 5d0bab89fdf73b0372f9880d8269b9d4f932cc1e Mon Sep 17 00:00:00 2001 From: FDsteven Date: Thu, 12 Sep 2024 16:01:42 -0600 Subject: [PATCH 04/50] Completed intermodal empty car generations --- python/altrios/train_planner.py | 34 ++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/python/altrios/train_planner.py b/python/altrios/train_planner.py index e8165e6f..80c2dc88 100644 --- a/python/altrios/train_planner.py +++ b/python/altrios/train_planner.py @@ -20,7 +20,7 @@ def __init__(self, target_cars_per_train: int = 180, manifest_empty_return_ratio: float = 0.6, #TODO single vs double stacked operations on the corridor - cars_per_locomotive: int = 70, + cars_per_locomotive: int = 30, refuelers_per_incoming_corridor: int = 4, drag_coeff_function: List = None, hp_required_per_ton: Dict = { @@ -146,18 +146,26 @@ def generate_return_demand( df_return_demand: The demand generated by the need of returning the empty cars to their original nodes """ - return (demand - .rename({"Origin": "Destination", - "Destination": "Origin"}) - .drop("Number_Of_Containers") - .with_columns( - pl.concat_str([pl.col("Train_Type").str.strip_suffix("_Empty").str.strip_suffix("_Loaded") - ,pl.lit("_Empty")]).alias("Train_Type"), - pl.when(pl.col("Train_Type") == pl.lit("Manifest")) - .then((pl.col("Number_of_Cars") * config.manifest_empty_return_ratio).floor().cast(pl.UInt32)) - .otherwise(pl.col("Number_of_Cars")) - .alias("Number_of_Cars")) - ) + intermodal = demand.filter(pl.col("Train_Type").str.starts_with("Intermodal")) + intermodal = intermodal.with_columns(pl.col("Number_of_Cars").cast(pl.Int64)) + intermodal_return = intermodal.rename({"Origin": "Destination", "Destination": "Origin", "Number_of_Cars": "Cars_Empty"}) + intermodal = intermodal.with_columns(Cars_Empty = pl.lit(0)) + intermodal_dummy = intermodal.with_columns(pl.col("Number_of_Cars").cast(pl.Int64).neg()) + for i in range(len(intermodal)): + temp = intermodal_return.filter(pl.col("Origin") == intermodal[i]["Origin"]) + reverse = temp.filter(pl.col("Destination") == intermodal[i]["Destination"]) + intermodal[i, 'Cars_Empty'] = max(reverse[0]["Cars_Empty"].item()+intermodal_dummy[i]["Number_of_Cars"].item(),0) + #calculate empty manifest + manifest = demand.filter(pl.col("Train_Type").str.starts_with("Manifest")) + + demand = demand.rename({"Origin": "Destination","Destination": "Origin"}).drop("Number_Of_Containers") + demand = demand.with_columns(pl.concat_str([pl.col("Train_Type").str.strip_suffix("_Empty").str.strip_suffix("_Loaded") + ,pl.lit("_Empty")]).alias("Train_Type"), + pl.when(pl.col("Train_Type") == pl.lit("Manifest")) + .then((pl.col("Number_of_Cars") * config.manifest_empty_return_ratio).floor().cast(pl.UInt32)) + .otherwise(pl.col("Number_of_Cars")).alias("Number_of_Cars"),) + + return demand def generate_origin_manifest_demand( demand: pl.DataFrame, From 3e7338e30ef4343c2d8178052ba0b5f8aa6c4c5e Mon Sep 17 00:00:00 2001 From: FDsteven Date: Fri, 13 Sep 2024 09:59:18 -0600 Subject: [PATCH 05/50] Completed return demand based on the three different train types --- python/altrios/train_planner.py | 38 +++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/python/altrios/train_planner.py b/python/altrios/train_planner.py index 80c2dc88..0998a83c 100644 --- a/python/altrios/train_planner.py +++ b/python/altrios/train_planner.py @@ -148,24 +148,34 @@ def generate_return_demand( """ intermodal = demand.filter(pl.col("Train_Type").str.starts_with("Intermodal")) intermodal = intermodal.with_columns(pl.col("Number_of_Cars").cast(pl.Int64)) - intermodal_return = intermodal.rename({"Origin": "Destination", "Destination": "Origin", "Number_of_Cars": "Cars_Empty"}) - intermodal = intermodal.with_columns(Cars_Empty = pl.lit(0)) + intermodal_return = intermodal.clone() intermodal_dummy = intermodal.with_columns(pl.col("Number_of_Cars").cast(pl.Int64).neg()) + intermodal_dummy = intermodal_dummy.rename({"Origin": "Destination", "Destination": "Origin"}) + intermodal_return = intermodal_return.with_columns((pl.concat_str(pl.col("Train_Type"),pl.lit("_Empty"))).alias("Train_Type")) for i in range(len(intermodal)): - temp = intermodal_return.filter(pl.col("Origin") == intermodal[i]["Origin"]) - reverse = temp.filter(pl.col("Destination") == intermodal[i]["Destination"]) - intermodal[i, 'Cars_Empty'] = max(reverse[0]["Cars_Empty"].item()+intermodal_dummy[i]["Number_of_Cars"].item(),0) + temp = intermodal.filter(pl.col("Origin") == intermodal_dummy[i]["Origin"]) + reverse = temp.filter(pl.col("Destination") == intermodal_dummy[i]["Destination"]) + intermodal_return[i, 'Number_of_Cars'] = max(reverse[0]["Number_of_Cars"].item()+intermodal_dummy[i]["Number_of_Cars"].item(),0) + intermodal_return[i, 'Number_of_Containers'] = intermodal_return[i, 'Number_of_Cars'] + intermodal_return = intermodal_return.with_columns(pl.col("Number_of_Cars").cast(pl.UInt32)) #calculate empty manifest manifest = demand.filter(pl.col("Train_Type").str.starts_with("Manifest")) - - demand = demand.rename({"Origin": "Destination","Destination": "Origin"}).drop("Number_Of_Containers") - demand = demand.with_columns(pl.concat_str([pl.col("Train_Type").str.strip_suffix("_Empty").str.strip_suffix("_Loaded") - ,pl.lit("_Empty")]).alias("Train_Type"), - pl.when(pl.col("Train_Type") == pl.lit("Manifest")) - .then((pl.col("Number_of_Cars") * config.manifest_empty_return_ratio).floor().cast(pl.UInt32)) - .otherwise(pl.col("Number_of_Cars")).alias("Number_of_Cars"),) - - return demand + manifest = manifest.with_columns(pl.col("Number_of_Cars").cast(pl.Int64)) + manifest_return = manifest.clone() + manifest_return = manifest_return.rename({"Origin": "Destination", "Destination": "Origin"}) + manifest_return = manifest_return.with_columns((pl.concat_str(pl.col("Train_Type"),pl.lit("_Empty"))).alias("Train_Type")) + manifest_return = manifest_return.with_columns((pl.col("Number_of_Cars") * config.manifest_empty_return_ratio).floor().cast(pl.UInt32)) + + + #calculate empty unit cars + unit = demand.filter(pl.col("Train_Type").str.starts_with("Unit")) + unit_return = unit.clone() + unit_return = unit_return.rename({"Origin": "Destination", "Destination": "Origin"}) + unit_return = unit_return.with_columns((pl.concat_str(pl.col("Train_Type"),pl.lit("_Empty"))).alias("Train_Type")) + + + demand_return = pl.concat([unit_return,manifest_return,intermodal_return], how = "diagonal") + return demand_return def generate_origin_manifest_demand( demand: pl.DataFrame, From 4b56ac711214af5efcf92c328a850b267ec66a59 Mon Sep 17 00:00:00 2001 From: FDsteven Date: Fri, 13 Sep 2024 12:16:04 -0600 Subject: [PATCH 06/50] Enabled mixed consist, consolidated final traind demand df --- python/altrios/train_planner.py | 38 ++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/python/altrios/train_planner.py b/python/altrios/train_planner.py index 0998a83c..3862d74e 100644 --- a/python/altrios/train_planner.py +++ b/python/altrios/train_planner.py @@ -311,6 +311,8 @@ def generate_demand_trains( demand_returns.drop("Number_of_Containers"), demand_rebalancing], how="diagonal_relaxed") + demand = demand.group_by("Origin","Destination","Train_Type").agg(pl.col("Number_of_Cars").sum()) + demand = demand.filter(pl.col("Number_of_Cars") != 0) # if rowx[first three columns] == rowy[first three columns]: # rowx[fourth column] + rowy[fourth column] # delete rowy @@ -360,8 +362,29 @@ def get_kg(veh): # Replace nulls with zero demand = demand.with_columns(cs.float().fill_null(0.0), cs.by_dtype(pl.UInt32).fill_null(pl.lit(0).cast(pl.UInt32))) # Convert total number of cars to total number of trains + + demand = demand.with_columns( + (pl.when(pl.col("Train_Type").str.ends_with("_Empty")) + .then(pl.col("Number_of_Cars")) + .otherwise(0)) + .cast(pl.UInt32) + .alias("Cars_Empty"), + (pl.when(pl.col("Train_Type").str.ends_with("_Empty")) + .then(0) + .otherwise(pl.col("Number_of_Cars"))) + .cast(pl.UInt32) + .alias("Cars_Loaded"), + (pl.concat_str(pl.col("Train_Type").str.strip_suffix("_Empty"))), + ) + demand = demand.with_columns((pl.col("Number_of_Cars") * pl.col("Tons_Per_Car")).alias("Tons_Aggregate")) + demand = demand.group_by("Origin","Destination","Train_Type").agg(pl.col("Number_of_Cars").sum(), + pl.col("Tons_Aggregate").sum(), + pl.col("Cars_Loaded").sum(), + pl.col("Cars_Empty").sum(), + pl.col("KG").sum(), + pl.col("HP_Required_Per_Ton").mean() + ) demand = demand.with_columns( - (pl.col("Number_of_Cars") * pl.col("Tons_Per_Car")).alias("Tons_Aggregate"), pl.when(config.single_train_mode) .then(1) .when(pl.col("Number_of_Cars") == 0) @@ -374,18 +397,7 @@ def get_kg(veh): # Calculate per-train car counts and tonnage demand = demand.with_columns( pl.col("Tons_Aggregate").truediv(pl.col("Number_of_Trains")).alias("Tons_Per_Train")) - demand = demand.with_columns( - (pl.when(pl.col("Train_Type").str.ends_with("_Empty")) - .then(pl.col("Number_of_Cars")) - .otherwise(0)) - .cast(pl.UInt32) - .alias("Cars_Empty"), - (pl.when(pl.col("Train_Type").str.ends_with("_Empty")) - .then(0) - .otherwise(pl.col("Number_of_Cars"))) - .cast(pl.UInt32) - .alias("Cars_Loaded") - ) + return demand From df8239a2ba183d35f4dc5d0048de397ddd76ceaf Mon Sep 17 00:00:00 2001 From: sakhtar Date: Fri, 13 Sep 2024 15:38:43 -0600 Subject: [PATCH 07/50] Corrected the drag function implementation --- python/altrios/train_planner.py | 70 ++++++++++++++++++++++++++++++++- 1 file changed, 69 insertions(+), 1 deletion(-) diff --git a/python/altrios/train_planner.py b/python/altrios/train_planner.py index afdaaaec..194e6572 100644 --- a/python/altrios/train_planner.py +++ b/python/altrios/train_planner.py @@ -99,7 +99,75 @@ def __init__(self, self.dispatch_scaling_dict = dispatch_scaling_dict self.loco_info = loco_info self.refueler_info = refueler_info - self.drag_coeff_function = drag_coeff_function + self.drag_coeff_function = drag_coeff_function if drag_coeff_function else self.default_drag_coeff_function + + def default_drag_coeff_function(self, + num_rail_vehicles: int = 1, + gap_size: float = 0.604) -> List[float]: + """ + Returns the default drag coefficient vector as a function of number of rail vehicles in a consist + and vehicle gap size + + Arguments: + --------- + num_rail_vehicles: int - Number of rail vehicles in the platoon + ps_gap_size: float - Gap size between the rail vehicles + + Output: + --------- + List of drag coefficients for each rail car. len(List) = num_rail_vehicles + + """ + + ## From slide 16 of the Aerodynamic model PPT + drag_vec_10cars_liang = [1.168, 0.292, 0.228, + 0.217, 0.238, 0.209, + 0.244,0.244,0.244, 0.409] + + ## From slide 16 of the Aerodynamic model PPT + drag_vec_10cars_liang = [1.168, 0.292, 0.228, + 0.217, 0.238, 0.209, + 0.244,0.244,0.244, 0.409] + + ## From slide 16 of the Aerodynamic model PPT + periodic_drag_coeff_liang = 0.193 + + gap_size_array = [0.508, 0.968, 1.186, 1.407, + 1.564, 1.627, 1.851] #gap size in meters from digitized plot + drag_change_array = [-32.56, -24.93, -17.85, + -6.678, 0.009, 1.7, + 7.876] # Change in drag coefficient for periodic boundary in % + + rel_drag_change = np.interp(gap_size, xp=gap_size_array, + fp=drag_change_array) + # rel_drag_change = -29.30 + drag_coeff_baseline = 0.108 + periodic_drag_coeff_ps = drag_coeff_baseline*(1+rel_drag_change/100) + drag_ratio = periodic_drag_coeff_ps/periodic_drag_coeff_liang + drag_vec = drag_vec_10cars_liang[0:num_rail_vehicles] + + ## For num_rail_vehicles 1, 2, and 3: + ## scaled the value for Liang's car from values in slide 24 + if num_rail_vehicles == 1: + drag_vec = [0.904/drag_ratio] + elif num_rail_vehicles == 2: + drag_vec[0] = 0.504/drag_ratio + drag_vec[-1] = 0.904/drag_ratio - drag_vec[0] + elif num_rail_vehicles == 3: + drag_vec[0] = 0.504/drag_ratio + # drag_vec[1] = 0.115/drag_ratio + drag_vec[-1] = 0.904/drag_ratio - sum(drag_vec[:-1]) + elif num_rail_vehicles >= 4: + drag_vec[0] = 0.504/drag_ratio + drag_vec[-1] = drag_vec_10cars_liang[-1] + if num_rail_vehicles > 10: + drag_vec = drag_vec_10cars_liang[:-1] + \ + [0.105]*(num_rail_vehicles-9) + drag_vec[-1] = drag_vec_10cars_liang[-1] + + drag_vec_ps = [round(drag_ratio*x, 3) + for x in drag_vec] + return drag_vec_ps def demand_loader( demand_table: Union[pl.DataFrame, Path, str] From 7089701cce61b442bd442196bf076a0be3c9928c Mon Sep 17 00:00:00 2001 From: sakhtar Date: Mon, 16 Sep 2024 17:03:00 -0600 Subject: [PATCH 08/50] Added gap size to defaults and proposed minor edits in train_planner.py --- python/altrios/defaults.py | 1 + python/altrios/train_planner.py | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/python/altrios/defaults.py b/python/altrios/defaults.py index 06f0cfdf..848787ce 100644 --- a/python/altrios/defaults.py +++ b/python/altrios/defaults.py @@ -33,6 +33,7 @@ LOCO_LIFESPAN = 20 ANNUAL_LOCO_TURNOVER = 1.0/LOCO_LIFESPAN +DEFAULT_GAP_SIZE = 0.604 DEMAND_FILE = alt.resources_root() / "Default Demand.csv" FUEL_EMISSIONS_FILE = alt.resources_root() / "metrics_inputs" / "GREET-CA_Emissions_Factors.csv" diff --git a/python/altrios/train_planner.py b/python/altrios/train_planner.py index 194e6572..7684e17e 100644 --- a/python/altrios/train_planner.py +++ b/python/altrios/train_planner.py @@ -996,10 +996,10 @@ def run_train_planner( #TODO eliminate the naming convention that rail vehicles (train types from demand file) must end in `_Loaded` or `_Empty` dispatch_times = (dispatch_times.with_columns( - pl.when(pl.col("Train_Type").str.ends_with("_Empty")) + pl.when(pl.col("Train_Type").str.to_lowercase().str.ends_with("_empty")) .then(pl.col("Train_Type")) - .otherwise(pl.concat_str(pl.col("Train_Type").str.strip_suffix("_Loaded"), - pl.lit("_Loaded"))) + .otherwise(pl.concat_str(pl.col("Train_Type").str.strip_suffix("_loaded"), + pl.lit("_loaded"))) .alias("Train_Type") ) ) @@ -1058,7 +1058,7 @@ def run_train_planner( }, train_type = train_type, cd_area_vec = config.drag_coeff_function(this_train['Number_of_Cars'], - gap_size = 0.604) + gap_size = defaults.DEFAULT_GAP_SIZE) ) loco_start_soc_j = dispatched.get_column("SOC_J") From 6f6e0b251eaf918406a583f0062b0806732f6b80 Mon Sep 17 00:00:00 2001 From: sakhtar Date: Tue, 17 Sep 2024 10:20:39 -0600 Subject: [PATCH 09/50] Corrected case for 'Loaded' suffix --- python/altrios/train_planner.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/python/altrios/train_planner.py b/python/altrios/train_planner.py index 7684e17e..c079cb1c 100644 --- a/python/altrios/train_planner.py +++ b/python/altrios/train_planner.py @@ -995,11 +995,12 @@ def run_train_planner( dispatch_times = calculate_dispatch_times(demand, simulation_days * 24) #TODO eliminate the naming convention that rail vehicles (train types from demand file) must end in `_Loaded` or `_Empty` + #TODO: Make 'Loaded' and 'Empty' suffix manipulation case independent dispatch_times = (dispatch_times.with_columns( pl.when(pl.col("Train_Type").str.to_lowercase().str.ends_with("_empty")) .then(pl.col("Train_Type")) .otherwise(pl.concat_str(pl.col("Train_Type").str.strip_suffix("_loaded"), - pl.lit("_loaded"))) + pl.lit("_Loaded"))) .alias("Train_Type") ) ) From b2aa1d4970c9ed588af5b517bd32145274444efb Mon Sep 17 00:00:00 2001 From: Chad Baker Date: Wed, 18 Sep 2024 12:47:05 -0600 Subject: [PATCH 10/50] changed to `dataclass` for readability --- python/altrios/train_planner.py | 228 +++++++++++--------------------- 1 file changed, 74 insertions(+), 154 deletions(-) diff --git a/python/altrios/train_planner.py b/python/altrios/train_planner.py index c079cb1c..ebd29f85 100644 --- a/python/altrios/train_planner.py +++ b/python/altrios/train_planner.py @@ -6,168 +6,88 @@ import polars as pl import polars.selectors as cs import math -from typing import Tuple, List, Dict, Callable +from typing import Tuple, List, Dict, Callable, Optional from itertools import repeat +from dataclasses import dataclass import altrios as alt from altrios import defaults, utilities pl.enable_string_cache() +@dataclass class TrainPlannerConfig: - def __init__(self, - single_train_mode: bool = False, - min_cars_per_train: int = 60, - target_cars_per_train: int = 180, - manifest_empty_return_ratio: float = 0.6, - #TODO single vs double stacked operations on the corridor - cars_per_locomotive: int = 70, - refuelers_per_incoming_corridor: int = 4, - drag_coeff_function: Callable = None, - hp_required_per_ton: Dict = { - "Default": { - "Unit": 2.0, - "Manifest": 1.5, - "Intermodal": 2.0 + 2.0, - "Unit_Empty": 2.0, - "Manifest_Empty": 1.5, - "Intermodal_Empty": 2.0 + 2.0, - } - }, - dispatch_scaling_dict: Dict = { - "time_mult_factor": 1.4, - "hours_add": 2, - "energy_mult_factor": 1.25 - }, - loco_info = pd.DataFrame({ - "Diesel_Large": { - "Capacity_Cars": 20, - "Fuel_Type": "Diesel", - "Min_Servicing_Time_Hr": 3.0, - "Rust_Loco": alt.Locomotive.default(), - "Cost_USD": defaults.DIESEL_LOCO_COST_USD, - "Lifespan_Years": defaults.LOCO_LIFESPAN - }, - "BEL": { - "Capacity_Cars": 20, - "Fuel_Type": "Electricity", - "Min_Servicing_Time_Hr": 3.0, - "Rust_Loco": alt.Locomotive.default_battery_electric_loco(), - "Cost_USD": defaults.BEL_MINUS_BATTERY_COST_USD, - "Lifespan_Years": defaults.LOCO_LIFESPAN - } - }).transpose().reset_index(names='Locomotive_Type'), - refueler_info = pd.DataFrame({ - "Diesel_Fueler": { - "Locomotive_Type": "Diesel_Large", - "Fuel_Type": "Diesel", - "Refueler_J_Per_Hr": defaults.DIESEL_REFUEL_RATE_J_PER_HR, - "Refueler_Efficiency": defaults.DIESEL_REFUELER_EFFICIENCY, - "Cost_USD": defaults.DIESEL_REFUELER_COST_USD, - "Lifespan_Years": defaults.LOCO_LIFESPAN - }, - "BEL_Charger": { - "Locomotive_Type": "BEL", - "Fuel_Type": "Electricity", - "Refueler_J_Per_Hr": defaults.BEL_CHARGE_RATE_J_PER_HR, - "Refueler_Efficiency": defaults.BEL_CHARGER_EFFICIENCY, - "Cost_USD": defaults.BEL_CHARGER_COST_USD, - "Lifespan_Years": defaults.LOCO_LIFESPAN - } - }).transpose().reset_index(names='Refueler_Type') - ): - """ - Constructor for train planner configuration objects - Arguments: - ---------- - min_cars_per_train: the minimum length in number of cars to form a train - target_cars_per_train: the standard train length in number of cars - manifest_empty_return_ratio: Desired railcar reuse ratio to calculate the empty manifest car demand, (E_ij+E_ji)/(L_ij+L_ji) - cars_per_locomotive: Heuristic scaling factor used to size number of locomotives needed based on demand. - refuelers_per_incoming_corridor: - hp_required_per_ton: - dispatch_scaling_dict: - loco_info: - refueler_info: - """ - self.single_train_mode = single_train_mode - self.min_cars_per_train = min_cars_per_train - self.target_cars_per_train = target_cars_per_train - self.manifest_empty_return_ratio = manifest_empty_return_ratio - self.cars_per_locomotive = cars_per_locomotive - self.refuelers_per_incoming_corridor = refuelers_per_incoming_corridor - self.hp_required_per_ton = hp_required_per_ton - self.dispatch_scaling_dict = dispatch_scaling_dict - self.loco_info = loco_info - self.refueler_info = refueler_info - self.drag_coeff_function = drag_coeff_function if drag_coeff_function else self.default_drag_coeff_function - - def default_drag_coeff_function(self, - num_rail_vehicles: int = 1, - gap_size: float = 0.604) -> List[float]: - """ - Returns the default drag coefficient vector as a function of number of rail vehicles in a consist - and vehicle gap size - - Arguments: - --------- - num_rail_vehicles: int - Number of rail vehicles in the platoon - ps_gap_size: float - Gap size between the rail vehicles - - Output: - --------- - List of drag coefficients for each rail car. len(List) = num_rail_vehicles - """ - - ## From slide 16 of the Aerodynamic model PPT - drag_vec_10cars_liang = [1.168, 0.292, 0.228, - 0.217, 0.238, 0.209, - 0.244,0.244,0.244, 0.409] - - ## From slide 16 of the Aerodynamic model PPT - drag_vec_10cars_liang = [1.168, 0.292, 0.228, - 0.217, 0.238, 0.209, - 0.244,0.244,0.244, 0.409] - - ## From slide 16 of the Aerodynamic model PPT - periodic_drag_coeff_liang = 0.193 - - gap_size_array = [0.508, 0.968, 1.186, 1.407, - 1.564, 1.627, 1.851] #gap size in meters from digitized plot - drag_change_array = [-32.56, -24.93, -17.85, - -6.678, 0.009, 1.7, - 7.876] # Change in drag coefficient for periodic boundary in % - - rel_drag_change = np.interp(gap_size, xp=gap_size_array, - fp=drag_change_array) - # rel_drag_change = -29.30 - drag_coeff_baseline = 0.108 - periodic_drag_coeff_ps = drag_coeff_baseline*(1+rel_drag_change/100) - drag_ratio = periodic_drag_coeff_ps/periodic_drag_coeff_liang - drag_vec = drag_vec_10cars_liang[0:num_rail_vehicles] - - ## For num_rail_vehicles 1, 2, and 3: - ## scaled the value for Liang's car from values in slide 24 - if num_rail_vehicles == 1: - drag_vec = [0.904/drag_ratio] - elif num_rail_vehicles == 2: - drag_vec[0] = 0.504/drag_ratio - drag_vec[-1] = 0.904/drag_ratio - drag_vec[0] - elif num_rail_vehicles == 3: - drag_vec[0] = 0.504/drag_ratio - # drag_vec[1] = 0.115/drag_ratio - drag_vec[-1] = 0.904/drag_ratio - sum(drag_vec[:-1]) - elif num_rail_vehicles >= 4: - drag_vec[0] = 0.504/drag_ratio - drag_vec[-1] = drag_vec_10cars_liang[-1] - if num_rail_vehicles > 10: - drag_vec = drag_vec_10cars_liang[:-1] + \ - [0.105]*(num_rail_vehicles-9) - drag_vec[-1] = drag_vec_10cars_liang[-1] - - drag_vec_ps = [round(drag_ratio*x, 3) - for x in drag_vec] - return drag_vec_ps + Attributes: + ---------- + min_cars_per_train: the minimum length in number of cars to form a train + target_cars_per_train: the standard train length in number of cars + manifest_empty_return_ratio: Desired railcar reuse ratio to calculate the empty manifest car demand, (E_ij+E_ji)/(L_ij+L_ji) + cars_per_locomotive: Heuristic scaling factor used to size number of locomotives needed based on demand. + refuelers_per_incoming_corridor: + hp_required_per_ton: + dispatch_scaling_dict: + loco_info: + refueler_info: + """ + single_train_mode: bool = False, + min_cars_per_train: int = 60, + target_cars_per_train: int = 180, + manifest_empty_return_ratio: float = 0.6, + #TODO single vs double stacked operations on the corridor + cars_per_locomotive: int = 70, + refuelers_per_incoming_corridor: int = 4, + drag_coeff_function: Optional[Callable]= None, + hp_required_per_ton: Dict = { + "Default": { + "Unit": 2.0, + "Manifest": 1.5, + "Intermodal": 2.0 + 2.0, + "Unit_Empty": 2.0, + "Manifest_Empty": 1.5, + "Intermodal_Empty": 2.0 + 2.0, + } + }, + dispatch_scaling_dict: Dict = { + "time_mult_factor": 1.4, + "hours_add": 2, + "energy_mult_factor": 1.25 + }, + loco_info = pd.DataFrame({ + "Diesel_Large": { + "Capacity_Cars": 20, + "Fuel_Type": "Diesel", + "Min_Servicing_Time_Hr": 3.0, + "Rust_Loco": alt.Locomotive.default(), + "Cost_USD": defaults.DIESEL_LOCO_COST_USD, + "Lifespan_Years": defaults.LOCO_LIFESPAN + }, + "BEL": { + "Capacity_Cars": 20, + "Fuel_Type": "Electricity", + "Min_Servicing_Time_Hr": 3.0, + "Rust_Loco": alt.Locomotive.default_battery_electric_loco(), + "Cost_USD": defaults.BEL_MINUS_BATTERY_COST_USD, + "Lifespan_Years": defaults.LOCO_LIFESPAN + } + }).transpose().reset_index(names='Locomotive_Type') + refueler_info = pd.DataFrame({ + "Diesel_Fueler": { + "Locomotive_Type": "Diesel_Large", + "Fuel_Type": "Diesel", + "Refueler_J_Per_Hr": defaults.DIESEL_REFUEL_RATE_J_PER_HR, + "Refueler_Efficiency": defaults.DIESEL_REFUELER_EFFICIENCY, + "Cost_USD": defaults.DIESEL_REFUELER_COST_USD, + "Lifespan_Years": defaults.LOCO_LIFESPAN + }, + "BEL_Charger": { + "Locomotive_Type": "BEL", + "Fuel_Type": "Electricity", + "Refueler_J_Per_Hr": defaults.BEL_CHARGE_RATE_J_PER_HR, + "Refueler_Efficiency": defaults.BEL_CHARGER_EFFICIENCY, + "Cost_USD": defaults.BEL_CHARGER_COST_USD, + "Lifespan_Years": defaults.LOCO_LIFESPAN + } + }).transpose().reset_index(names='Refueler_Type') def demand_loader( demand_table: Union[pl.DataFrame, Path, str] From e0945320a7aaec305a011222014ba37559856eaa Mon Sep 17 00:00:00 2001 From: Chad Baker Date: Wed, 18 Sep 2024 12:47:55 -0600 Subject: [PATCH 11/50] removed some of the non-generic stuff --- python/altrios/train_planner.py | 10 ++++++++-- rust/altrios-core/src/train/train_config.rs | 3 ++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/python/altrios/train_planner.py b/python/altrios/train_planner.py index ebd29f85..da13d959 100644 --- a/python/altrios/train_planner.py +++ b/python/altrios/train_planner.py @@ -972,14 +972,20 @@ def run_train_planner( ) dispatched = loco_pool.filter(selected) + if config.drag_coeff_function is not None: + cd_area_vec = config.drag_coeff_function( + this_train['Number_of_Cars'], + gap_size = defaults.DEFAULT_GAP_SIZE + ) + else: + cd_area_vec = None train_config = alt.TrainConfig( rail_vehicles = [vehicle for vehicle in rail_vehicles if vehicle.car_type==this_train['Train_Type']], n_cars_by_type = { this_train['Train_Type']: this_train['Number_of_Cars'] }, train_type = train_type, - cd_area_vec = config.drag_coeff_function(this_train['Number_of_Cars'], - gap_size = defaults.DEFAULT_GAP_SIZE) + cd_area_vec = cd_area_vec, ) loco_start_soc_j = dispatched.get_column("SOC_J") diff --git a/rust/altrios-core/src/train/train_config.rs b/rust/altrios-core/src/train/train_config.rs index 7dc0796a..f850a4e3 100644 --- a/rust/altrios-core/src/train/train_config.rs +++ b/rust/altrios-core/src/train/train_config.rs @@ -104,7 +104,8 @@ pub struct TrainConfig { /// Optional vector of drag areas (i.e. drag coeff. times frontal area) /// for each car. If provided, the total drag area (drag coefficient /// times frontal area) calculated from this vector is the sum of these - /// coefficients. + /// coefficients. Otherwise, each rail car's drag contribution based on its + /// drag coefficient and frontal area will be summed across the train. pub cd_area_vec: Option>, } From 8399956254eba6355bda8e751f47fd6a83a57369 Mon Sep 17 00:00:00 2001 From: "Bruchon, Matthew" Date: Mon, 23 Sep 2024 10:55:27 -0400 Subject: [PATCH 12/50] integrating private repo changes --- python/altrios/demos/sim_manager_demo.py | 4 +- python/altrios/train_planner.py | 575 ++++++++++++++--------- python/altrios/utilities.py | 8 + 3 files changed, 359 insertions(+), 228 deletions(-) diff --git a/python/altrios/demos/sim_manager_demo.py b/python/altrios/demos/sim_manager_demo.py index aed09db4..9057a3bd 100644 --- a/python/altrios/demos/sim_manager_demo.py +++ b/python/altrios/demos/sim_manager_demo.py @@ -35,8 +35,8 @@ ) train_planner_config = train_planner.TrainPlannerConfig( - cars_per_locomotive=50, - target_cars_per_train=90) + cars_per_locomotive={"Default": 50}, + target_cars_per_train={"Default": 90}) t0_main = time.perf_counter() diff --git a/python/altrios/train_planner.py b/python/altrios/train_planner.py index 3862d74e..d30ae98c 100644 --- a/python/altrios/train_planner.py +++ b/python/altrios/train_planner.py @@ -1,3 +1,4 @@ +from __future__ import annotations from pathlib import Path from typing import Union import numpy as np @@ -6,100 +7,184 @@ import polars as pl import polars.selectors as cs import math -from typing import Tuple, List, Dict +from typing import Tuple, List, Dict, Callable, Optional from itertools import repeat import altrios as alt from altrios import defaults, utilities +from dataclasses import dataclass, field pl.enable_string_cache() + +def initialize_reverse_empties(demand: Union[pl.LazyFrame, pl.DataFrame]) -> Union[pl.LazyFrame, pl.DataFrame]: + """ + Swap `Origin` and `Destination` and append `_Empty` to `Train_Type`. + Arguments: + ---------- + demand: `DataFrame` or `LazyFrame` representing origin-destination demand. + + Outputs: + ---------- + Updated demand `DataFrame` or `LazyFrame`. + """ + return (demand + .rename({"Origin": "Destination", "Destination": "Origin"}) + .with_columns((pl.concat_str(pl.col("Train_Type"),pl.lit("_Empty"))).alias("Train_Type")) + ) + +def generate_return_demand_unit(demand_subset: Union[pl.LazyFrame, pl.DataFrame], config: TrainPlannerConfig) -> Union[pl.LazyFrame, pl.DataFrame]: + """ + Given a set of Unit train demand for one or more origin-destination pairs, generate demand in the reverse direction(s). + Arguments: + ---------- + demand: `DataFrame` or `LazyFrame` representing origin-destination demand for Unit trains. + + Outputs: + ---------- + Updated demand `DataFrame` or `LazyFrame` representing demand in the reverse direction(s) for each origin-destination pair. + """ + return (demand_subset + .pipe(initialize_reverse_empties) + ) + +def generate_return_demand_manifest(demand_subset: Union[pl.LazyFrame, pl.DataFrame], config: TrainPlannerConfig) -> Union[pl.LazyFrame, pl.DataFrame]: + """ + Given a set of Manifest train demand for one or more origin-destination pairs, generate demand in the reverse direction(s). + Arguments: + ---------- + demand: `DataFrame` or `LazyFrame` representing origin-destination demand for Unit trains. + + Outputs: + ---------- + Updated demand `DataFrame` or `LazyFrame` representing demand in the reverse direction(s) for each origin-destination pair. + """ + return(demand_subset + .pipe(initialize_reverse_empties) + .with_columns((pl.col("Number_of_Cars") * config.manifest_empty_return_ratio).floor().cast(pl.UInt32)) + ) + +def generate_return_demand_intermodal(demand_subset: Union[pl.LazyFrame, pl.DataFrame], config: TrainPlannerConfig) -> Union[pl.LazyFrame, pl.DataFrame]: + """ + Given a set of Intermodal train demand for one or more origin-destination pairs, generate demand in the reverse direction(s). + Arguments: + ---------- + demand: `DataFrame` or `LazyFrame` representing origin-destination demand for Unit trains. + + Outputs: + ---------- + Updated demand `DataFrame` or `LazyFrame` representing demand in the reverse direction(s) for each origin-destination pair. + """ + return (demand_subset + .pipe(initialize_reverse_empties) + .with_columns( + pl.concat_str(pl.min_horizontal("Origin", "Destination"), pl.lit("_"), pl.max_horizontal("Origin", "Destination")).alias("OD") + ) + .with_columns( + pl.col("Number_of_Cars", "Number_of_Containers").range_minmax().over("OD").name.suffix("_Return") + ) + .filter( + pl.col("Number_of_Containers") == pl.col("Number_of_Containers").max().over("OD") + ) + .drop("OD", "Number_of_Containers", "Number_of_Cars") + .rename({"Number_of_Containers_Return": "Number_of_Containers", + "Number_of_Cars_Return": "Number_of_Cars"}) + ) + + +@dataclass class TrainPlannerConfig: - def __init__(self, - single_train_mode: bool = False, - min_cars_per_train: int = 60, - target_cars_per_train: int = 180, - manifest_empty_return_ratio: float = 0.6, - #TODO single vs double stacked operations on the corridor - cars_per_locomotive: int = 30, - refuelers_per_incoming_corridor: int = 4, - drag_coeff_function: List = None, - hp_required_per_ton: Dict = { - "Default": { - "Unit": 2.0, - "Manifest": 1.5, - "Intermodal": 2.0 + 2.0, - "Unit_Empty": 2.0, - "Manifest_Empty": 1.5, - "Intermodal_Empty": 2.0 + 2.0, - } - }, - dispatch_scaling_dict: Dict = { - "time_mult_factor": 1.4, - "hours_add": 2, - "energy_mult_factor": 1.25 - }, - loco_info = pd.DataFrame({ - "Diesel_Large": { - "Capacity_Cars": 20, - "Fuel_Type": "Diesel", - "Min_Servicing_Time_Hr": 3.0, - "Rust_Loco": alt.Locomotive.default(), - "Cost_USD": defaults.DIESEL_LOCO_COST_USD, - "Lifespan_Years": defaults.LOCO_LIFESPAN - }, - "BEL": { - "Capacity_Cars": 20, - "Fuel_Type": "Electricity", - "Min_Servicing_Time_Hr": 3.0, - "Rust_Loco": alt.Locomotive.default_battery_electric_loco(), - "Cost_USD": defaults.BEL_MINUS_BATTERY_COST_USD, - "Lifespan_Years": defaults.LOCO_LIFESPAN - } - }).transpose().reset_index(names='Locomotive_Type'), - refueler_info = pd.DataFrame({ - "Diesel_Fueler": { - "Locomotive_Type": "Diesel_Large", - "Fuel_Type": "Diesel", - "Refueler_J_Per_Hr": defaults.DIESEL_REFUEL_RATE_J_PER_HR, - "Refueler_Efficiency": defaults.DIESEL_REFUELER_EFFICIENCY, - "Cost_USD": defaults.DIESEL_REFUELER_COST_USD, - "Lifespan_Years": defaults.LOCO_LIFESPAN - }, - "BEL_Charger": { - "Locomotive_Type": "BEL", - "Fuel_Type": "Electricity", - "Refueler_J_Per_Hr": defaults.BEL_CHARGE_RATE_J_PER_HR, - "Refueler_Efficiency": defaults.BEL_CHARGER_EFFICIENCY, - "Cost_USD": defaults.BEL_CHARGER_COST_USD, - "Lifespan_Years": defaults.LOCO_LIFESPAN - } - }).transpose().reset_index(names='Refueler_Type') - ): - """ - Constructor for train planner configuration objects - Arguments: - ---------- - min_cars_per_train: the minimum length in number of cars to form a train - target_cars_per_train: the standard train length in number of cars - manifest_empty_return_ratio: Desired railcar reuse ratio to calculate the empty manifest car demand, (E_ij+E_ji)/(L_ij+L_ji) - cars_per_locomotive: Heuristic scaling factor used to size number of locomotives needed based on demand. - refuelers_per_incoming_corridor: - hp_required_per_ton: - dispatch_scaling_dict: - loco_info: - refueler_info: - """ - self.single_train_mode = single_train_mode - self.min_cars_per_train = min_cars_per_train - self.target_cars_per_train = target_cars_per_train - self.manifest_empty_return_ratio = manifest_empty_return_ratio - self.cars_per_locomotive = cars_per_locomotive - self.refuelers_per_incoming_corridor = refuelers_per_incoming_corridor - self.hp_required_per_ton = hp_required_per_ton - self.dispatch_scaling_dict = dispatch_scaling_dict - self.loco_info = loco_info - self.refueler_info = refueler_info - self.drag_coeff_function = drag_coeff_function + """ + Dataclass class for train planner configuration parameters. + + Fields: + - `single_train_mode`: `True` to only run one round-trip train and schedule its charging; `False` to plan train consists + - `min_cars_per_train`: `Dict` of the minimum length in number of cars to form a train for each train type + - `target_cars_per_train`: `Dict` of the standard train length in number of cars for each train type + - `manifest_empty_return_ratio`: Desired railcar reuse ratio to calculate the empty manifest car demand, (E_ij+E_ji)/(L_ij+L_ji) + - `cars_per_locomotive`: Heuristic scaling factor used to size number of locomotives needed based on demand. + - `cars_per_locomotive_fixed`: If `True`, `cars_per_locomotive` overrides `hp_per_ton` calculations used for dispatching decisions. + - `refuelers_per_incoming_corridor`: Heuristic scaling factor used to scale number of refuelers needed at each node based on number of incoming corridors. + - `stack_type`: Type of stacking (applicable only for intermodal containers) + - `require_diesel`: `True` to require each consist to have at least one diesel locomotive. + - `manifest_empty_return_ratio`: `Dict` + - `drag_coeff_function`: `Dict` + - `hp_required_per_ton`: `Dict` + - `dispatch_scaling_dict`: `Dict` + - `loco_info`: `Dict` + - `refueler_info`: `Dict` + - `return_demand_generators`: `Dict` + """ + single_train_mode: bool = False + min_cars_per_train: Dict = field(default_factory = lambda: { + "Default": 60 + }) + target_cars_per_train: Dict = field(default_factory = lambda: { + "Default": 180 + }) + cars_per_locomotive: int = 70 + cars_per_locomotive_fixed: bool = False + refuelers_per_incoming_corridor: int = 4 + stack_type: str = "single" + require_diesel: bool = False + manifest_empty_return_ratio: float = 0.6 + drag_coeff_function: List = field(default_factory = lambda: None) + hp_required_per_ton: Dict = field(default_factory = lambda: { + "Default": { + "Unit": 2.0, + "Manifest": 1.5, + "Intermodal": 2.0 + 2.0, + "Unit_Empty": 2.0, + "Manifest_Empty": 1.5, + "Intermodal_Empty": 2.0 + 2.0, + } + }) + dispatch_scaling_dict: Dict = field(default_factory = lambda: { + "time_mult_factor": 1.4, + "hours_add": 2, + "energy_mult_factor": 1.25 + }) + loco_info: pd.DataFrame = field(default_factory = lambda: pd.DataFrame({ + "Diesel_Large": { + "Capacity_Cars": 20, + "Fuel_Type": "Diesel", + "Min_Servicing_Time_Hr": 3.0, + "Rust_Loco": alt.Locomotive.default(), + "Cost_USD": defaults.DIESEL_LOCO_COST_USD, + "Lifespan_Years": defaults.LOCO_LIFESPAN + }, + "BEL": { + "Capacity_Cars": 20, + "Fuel_Type": "Electricity", + "Min_Servicing_Time_Hr": 3.0, + "Rust_Loco": alt.Locomotive.default_battery_electric_loco(), + "Cost_USD": defaults.BEL_MINUS_BATTERY_COST_USD, + "Lifespan_Years": defaults.LOCO_LIFESPAN + } + }).transpose().reset_index(names='Locomotive_Type')) + refueler_info: pd.DataFrame = field(default_factory = lambda: pd.DataFrame({ + "Diesel_Fueler": { + "Locomotive_Type": "Diesel_Large", + "Fuel_Type": "Diesel", + "Refueler_J_Per_Hr": defaults.DIESEL_REFUEL_RATE_J_PER_HR, + "Refueler_Efficiency": defaults.DIESEL_REFUELER_EFFICIENCY, + "Cost_USD": defaults.DIESEL_REFUELER_COST_USD, + "Lifespan_Years": defaults.LOCO_LIFESPAN + }, + "BEL_Charger": { + "Locomotive_Type": "BEL", + "Fuel_Type": "Electricity", + "Refueler_J_Per_Hr": defaults.BEL_CHARGE_RATE_J_PER_HR, + "Refueler_Efficiency": defaults.BEL_CHARGER_EFFICIENCY, + "Cost_USD": defaults.BEL_CHARGER_COST_USD, + "Lifespan_Years": defaults.LOCO_LIFESPAN + } + }).transpose().reset_index(names='Refueler_Type')) + + return_demand_generators: Dict = field(default_factory = lambda: { + 'Unit': generate_return_demand_unit, + 'Manifest': generate_return_demand_manifest, + 'Intermodal': generate_return_demand_intermodal + }) def demand_loader( demand_table: Union[pl.DataFrame, Path, str] @@ -129,7 +214,6 @@ def demand_loader( demand_table.get_column("Destination")]).unique().sort() return demand_table, nodes - def generate_return_demand( demand: pl.DataFrame, config: TrainPlannerConfig @@ -139,42 +223,25 @@ def generate_return_demand( Arguments: ---------- df_annual_demand: The user_input file loaded by previous functions - that contains laoded demand for each demand pair. + that contains loaded demand for each demand pair. config: Object storing train planner configuration paramaters Outputs: ---------- df_return_demand: The demand generated by the need of returning the empty cars to their original nodes """ - intermodal = demand.filter(pl.col("Train_Type").str.starts_with("Intermodal")) - intermodal = intermodal.with_columns(pl.col("Number_of_Cars").cast(pl.Int64)) - intermodal_return = intermodal.clone() - intermodal_dummy = intermodal.with_columns(pl.col("Number_of_Cars").cast(pl.Int64).neg()) - intermodal_dummy = intermodal_dummy.rename({"Origin": "Destination", "Destination": "Origin"}) - intermodal_return = intermodal_return.with_columns((pl.concat_str(pl.col("Train_Type"),pl.lit("_Empty"))).alias("Train_Type")) - for i in range(len(intermodal)): - temp = intermodal.filter(pl.col("Origin") == intermodal_dummy[i]["Origin"]) - reverse = temp.filter(pl.col("Destination") == intermodal_dummy[i]["Destination"]) - intermodal_return[i, 'Number_of_Cars'] = max(reverse[0]["Number_of_Cars"].item()+intermodal_dummy[i]["Number_of_Cars"].item(),0) - intermodal_return[i, 'Number_of_Containers'] = intermodal_return[i, 'Number_of_Cars'] - intermodal_return = intermodal_return.with_columns(pl.col("Number_of_Cars").cast(pl.UInt32)) - #calculate empty manifest - manifest = demand.filter(pl.col("Train_Type").str.starts_with("Manifest")) - manifest = manifest.with_columns(pl.col("Number_of_Cars").cast(pl.Int64)) - manifest_return = manifest.clone() - manifest_return = manifest_return.rename({"Origin": "Destination", "Destination": "Origin"}) - manifest_return = manifest_return.with_columns((pl.concat_str(pl.col("Train_Type"),pl.lit("_Empty"))).alias("Train_Type")) - manifest_return = manifest_return.with_columns((pl.col("Number_of_Cars") * config.manifest_empty_return_ratio).floor().cast(pl.UInt32)) - - - #calculate empty unit cars - unit = demand.filter(pl.col("Train_Type").str.starts_with("Unit")) - unit_return = unit.clone() - unit_return = unit_return.rename({"Origin": "Destination", "Destination": "Origin"}) - unit_return = unit_return.with_columns((pl.concat_str(pl.col("Train_Type"),pl.lit("_Empty"))).alias("Train_Type")) - - - demand_return = pl.concat([unit_return,manifest_return,intermodal_return], how = "diagonal") + demand_subsets = demand.partition_by("Train_Type", as_dict = True) + return_demand = [] + for train_type, demand_subset in demand_subsets.items(): + if train_type in config.return_demand_generators: + return_demand_generator = config.return_demand_generators[train_type] + return_demand.append(return_demand_generator(demand_subset, config)) + else: + print(f'Return demand generator not implemented for train type: {train_type}') + + demand_return = (pl.concat(return_demand, how="diagonal_relaxed") + .filter(pl.col("Number_of_Cars") + pl.col("Number_of_Containers") > 0) + ) return demand_return def generate_origin_manifest_demand( @@ -305,36 +372,38 @@ def generate_demand_trains( ---------- demand: Tabulated demand for each demand pair in terms of number of cars and number of trains """ - - demand = pl.concat([ - demand.drop("Number_of_Containers"), - demand_returns.drop("Number_of_Containers"), - demand_rebalancing], - how="diagonal_relaxed") - demand = demand.group_by("Origin","Destination","Train_Type").agg(pl.col("Number_of_Cars").sum()) - demand = demand.filter(pl.col("Number_of_Cars") != 0) - # if rowx[first three columns] == rowy[first three columns]: - # rowx[fourth column] + rowy[fourth column] - # delete rowy - # combined_row = demand.slice(10,12).select - # demand = demand.group_by() - #Prepare hp_per_ton requirements to merge onto the demand DataFrame - hp_per_ton = ( - pl.DataFrame(pd.DataFrame(config.hp_required_per_ton).reset_index(names="Train_Type")) - .melt(id_vars="Train_Type",variable_name="O_D",value_name="HP_Required_Per_Ton") - .with_columns(pl.col("O_D").str.split("_").list.first().alias("Origin"), - pl.col("O_D").str.split("_").list.last().alias("Destination")) + + cars_per_train_min = (pl.from_dict(config.min_cars_per_train) + .melt(variable_name="Train_Type", value_name="Cars_Per_Train_Min") + ) + cars_per_train_min_default = (cars_per_train_min + .filter(pl.col("Train_Type") == pl.lit("Default")) + .select("Cars_Per_Train_Min").item() + ) + cars_per_train_target = (pl.from_dict(config.target_cars_per_train) + .melt(variable_name="Train_Type", value_name="Cars_Per_Train_Target") + ) + cars_per_train_target_default = (cars_per_train_target + .filter(pl.col("Train_Type") == pl.lit("Default")) + .select("Cars_Per_Train_Target").item() ) + #Prepare hp_per_ton requirements to merge onto the demand DataFrame + hp_per_ton = pl.concat([ + (pl.DataFrame(this_dict) + .melt(variable_name="Train_Type", value_name="HP_Required_Per_Ton") + .with_columns(pl.lit(this_item).alias("O_D")) + .with_columns(pl.col("O_D").str.split("_").list.first().alias("Origin"), + pl.col("O_D").str.split("_").list.last().alias("Destination")) + ) + for this_item, this_dict in config.hp_required_per_ton.items() + ], how="horizontal_relaxed") - #MPrepare ton_per_car requirements to merge onto the demand DataFrame - # TODO: simplify mass API here. Is there a function on the Rust side to get total mass (or should there be)? + #Prepare ton_per_car requirements to merge onto the demand DataFrame def get_kg_empty(veh): return veh.mass_static_base_kilograms + veh.axle_count * veh.mass_rot_per_axle_kilograms def get_kg(veh): return veh.mass_static_base_kilograms + veh.mass_freight_kilograms + veh.axle_count * veh.mass_rot_per_axle_kilograms - # NOTE: don't need to use this for PS; just need to use target platoon size (# of rail vehicles) then convert to containers - # based on single vs. double stacked. Target # of rail vehicle Other intermodals may need to use weight ton_per_car = ( pl.DataFrame({"Train_Type": pl.Series([rv.car_type for rv in rail_vehicles]).str.strip_suffix("_Loaded"), "KG_Empty": [get_kg_empty(rv) for rv in rail_vehicles], @@ -346,62 +415,91 @@ def get_kg(veh): .drop(["KG_Empty","KG_Loaded"]) ) - demand = demand.join(ton_per_car, on="Train_Type", how="left") + demand = (pl.concat([demand, demand_returns, demand_rebalancing], how="diagonal_relaxed") + .group_by("Origin","Destination", "Train_Type") + .agg(pl.col("Number_of_Cars").sum()) + .filter(pl.col("Number_of_Cars") > 0) + .join(ton_per_car, on="Train_Type", how="left") # Merge on OD-specific hp_per_ton if the user specified any - demand = demand.join(hp_per_ton.drop("O_D"), - on=["Origin","Destination","Train_Type"], - how="left") + .join(hp_per_ton.drop("O_D"), on=["Origin","Destination","Train_Type"], how="left") # Second, merge on defaults per train type - demand = demand.join(hp_per_ton.filter((pl.col("O_D") =="Default")).drop(["O_D","Origin","Destination"]), - on=["Train_Type"], - how="left", - suffix="_Default") + .join(hp_per_ton.filter((pl.col("O_D") =="Default")).drop(["O_D","Origin","Destination"]), + on=["Train_Type"], + how="left", + suffix="_Default") + # Merge on cars_per_train_min if the user specified any + .join(cars_per_train_min, on=["Train_Type"], how="left") + # Merge on cars_per_train_target if the user specified any + .join(cars_per_train_target, on=["Train_Type"], how="left") # Fill in defaults per train type wherever the user didn't specify OD-specific hp_per_ton - demand = demand.with_columns(pl.coalesce("HP_Required_Per_Ton", "HP_Required_Per_Ton_Default").alias("HP_Required_Per_Ton")) - demand = demand.drop("HP_Required_Per_Ton_Default") - # Replace nulls with zero - demand = demand.with_columns(cs.float().fill_null(0.0), cs.by_dtype(pl.UInt32).fill_null(pl.lit(0).cast(pl.UInt32))) - # Convert total number of cars to total number of trains - - demand = demand.with_columns( - (pl.when(pl.col("Train_Type").str.ends_with("_Empty")) - .then(pl.col("Number_of_Cars")) - .otherwise(0)) - .cast(pl.UInt32) - .alias("Cars_Empty"), - (pl.when(pl.col("Train_Type").str.ends_with("_Empty")) - .then(0) - .otherwise(pl.col("Number_of_Cars"))) - .cast(pl.UInt32) - .alias("Cars_Loaded"), - (pl.concat_str(pl.col("Train_Type").str.strip_suffix("_Empty"))), + .with_columns( + pl.coalesce("HP_Required_Per_Ton", "HP_Required_Per_Ton_Default").alias("HP_Required_Per_Ton"), + pl.col("Cars_Per_Train_Min").fill_null(cars_per_train_min_default), + pl.col("Cars_Per_Train_Target").fill_null(cars_per_train_target_default), + ) ) - demand = demand.with_columns((pl.col("Number_of_Cars") * pl.col("Tons_Per_Car")).alias("Tons_Aggregate")) - demand = demand.group_by("Origin","Destination","Train_Type").agg(pl.col("Number_of_Cars").sum(), - pl.col("Tons_Aggregate").sum(), - pl.col("Cars_Loaded").sum(), - pl.col("Cars_Empty").sum(), - pl.col("KG").sum(), - pl.col("HP_Required_Per_Ton").mean() - ) - demand = demand.with_columns( - pl.when(config.single_train_mode) - .then(1) - .when(pl.col("Number_of_Cars") == 0) - .then(0) - .otherwise( - pl.max_horizontal([1, - ((pl.col("Number_of_Cars").floordiv(pl.lit(config.target_cars_per_train)) + 1)) + loaded = (demand + .filter(~pl.col("Train_Type").str.contains("_Empty")) + .with_columns( + pl.col("Number_of_Cars", "Tons_Per_Car", "HP_Required_Per_Ton", "Cars_Per_Train_Min", "Cars_Per_Train_Target").name.suffix("_Loaded") + ) + ) + empty = (demand + .filter(pl.col("Train_Type").str.contains("_Empty")) + .with_columns( + pl.col("Number_of_Cars", "Tons_Per_Car", "HP_Required_Per_Ton", "Cars_Per_Train_Min", "Cars_Per_Train_Target").name.suffix("_Empty"), + pl.col("Train_Type").str.strip_suffix("_Empty") + ) + ) + demand = (demand + .select(pl.col("Origin", "Destination"), pl.col("Train_Type").str.strip_suffix("_Empty")) + .unique() + .join(loaded.select(cs.by_name("Origin", "Destination", "Train_Type") | cs.ends_with("_Loaded")), on=["Origin", "Destination", "Train_Type"], how="left") + .join(empty.select(cs.by_name("Origin", "Destination", "Train_Type") | cs.ends_with("_Empty")), on=["Origin", "Destination", "Train_Type"], how="left") + # Replace nulls with zero + .with_columns(cs.float().fill_null(0.0), + cs.by_dtype(pl.UInt32).fill_null(pl.lit(0).cast(pl.UInt32)), + cs.by_dtype(pl.Int64).fill_null(pl.lit(0).cast(pl.Int64)), + ) + .group_by("Origin", "Destination", "Train_Type") + .agg( + pl.col("Number_of_Cars_Loaded", "Number_of_Cars_Empty").sum(), + pl.col("Tons_Per_Car_Loaded", "Tons_Per_Car_Empty", + "HP_Required_Per_Ton_Loaded", "HP_Required_Per_Ton_Empty", + "Cars_Per_Train_Min_Loaded", "Cars_Per_Train_Min_Empty", + "Cars_Per_Train_Target_Loaded", "Cars_Per_Train_Target_Empty").mean(), + pl.sum_horizontal("Number_of_Cars_Loaded", "Number_of_Cars_Empty").sum().alias("Number_of_Cars") + ) + .with_columns( + # If Cars_Per_Train_Min and Cars_Per_Train_Target "disagree" for empty vs. loaded, take the average weighted by number of cars + ((pl.col("Cars_Per_Train_Min_Loaded").mul("Number_of_Cars_Loaded") + pl.col("Cars_Per_Train_Min_Empty").mul("Number_of_Cars_Empty")) / pl.col("Number_of_Cars")).alias("Cars_Per_Train_Min"), + ((pl.col("Cars_Per_Train_Target_Loaded").mul("Number_of_Cars_Loaded") + pl.col("Cars_Per_Train_Target_Empty").mul("Number_of_Cars_Empty")) / pl.col("Number_of_Cars")).alias("Cars_Per_Train_Target") + ) + .with_columns( + pl.when(config.single_train_mode) + .then(1) + .when(pl.col("Number_of_Cars") == 0) + .then(0) + .when(pl.col("Cars_Per_Train_Target") == pl.col("Number_of_Cars")) + .then(1) + .when(pl.col("Cars_Per_Train_Target") <= 1.0) + .then(pl.col("Number_of_Cars")) + .otherwise( + pl.max_horizontal([ + 1, + pl.min_horizontal([ + pl.col("Number_of_Cars").truediv("Cars_Per_Train_Target").round(), + pl.col("Number_of_Cars").floordiv("Cars_Per_Train_Min") + ]) ]) - ).cast(pl.UInt32).alias("Number_of_Trains")) - # Calculate per-train car counts and tonnage - demand = demand.with_columns( - pl.col("Tons_Aggregate").truediv(pl.col("Number_of_Trains")).alias("Tons_Per_Train")) - + ).cast(pl.UInt32).alias("Number_of_Trains") + ) + .drop("Cars_Per_Train_Target_Loaded", "Cars_Per_Train_Target_Empty", "Cars_Per_Train_Min_Empty", "Cars_Per_Train_Min_Loaded") + ) return demand -def calculate_dispatch_times( +def generate_dispatch_details( demand: pl.DataFrame, hours: int ) -> pl.DataFrame: @@ -418,25 +516,66 @@ def calculate_dispatch_times( dispatch_times: Tabulated dispatching time for each demand pair for each train type in hours """ - demand = demand \ - .filter(pl.col("Number_of_Trains") > 0) \ - .select(["Origin","Destination","Train_Type","Number_of_Trains", - "Number_of_Cars", - "Tons_Per_Train","HP_Required_Per_Ton", "Cars_Loaded", "Cars_Empty"]) \ + def pctWithinGroup(df: pl.DataFrame, grouping_vars: List[str]) -> pl.DataFrame: + return (df + .with_columns( + (pl.cum_count().over(grouping_vars) / + pl.count().over(grouping_vars)) + .alias("Percent_Within_Group") + ) + ) + + def allocateItems(df: pl.DataFrame, target: str, grouping_vars: List[str]) -> pl.DataFrame: + return (df + .sort(grouping_vars) + .pipe(pctWithinGroup, grouping_vars = grouping_vars) + .with_columns( + pl.col(target).mul("Percent_Within_Group").round().alias(f'{target}_Group_Cumulative') + ) + .with_columns( + (pl.col(f'{target}_Group_Cumulative') - pl.col(f'{target}_Group_Cumulative').shift(1).over(grouping_vars)) + .fill_null(pl.col(f'{target}_Group_Cumulative')) + .alias(f'{target}') + ) + .drop(f'{target}_Group_Cumulative') + ) + + grouping_vars = ["Origin", "Destination", "Train_Type"] + demand = (demand + .select(pl.exclude("Number_of_Trains").repeat_by("Number_of_Trains").explode()) + .pipe(allocateItems, target = "Number_of_Cars_Loaded", grouping_vars = grouping_vars) + .drop("Percent_Within_Group") + .pipe(allocateItems, target = "Number_of_Cars_Empty", grouping_vars = grouping_vars) + .group_by(pl.exclude("Number_of_Cars_Empty", "Number_of_Cars_Loaded")) + .agg(pl.col("Number_of_Cars_Empty", "Number_of_Cars_Loaded")) + .with_columns(pl.col("Number_of_Cars_Loaded").list.sort(descending=True), + pl.col("Number_of_Cars_Empty").list.sort(descending=False)) + .explode("Number_of_Cars_Empty", "Number_of_Cars_Loaded") .with_columns( - (hours / pl.col("Number_of_Trains")).alias("Interval"), - pl.col("Number_of_Trains").cast(pl.Int32).alias("Number_of_Trains"), - pl.col("Number_of_Cars").floordiv(pl.col("Number_of_Trains")).alias("Number_of_Cars"), - pl.col("Cars_Empty").floordiv(pl.col("Number_of_Trains")).alias("Cars_Empty"), - pl.col("Cars_Loaded").floordiv(pl.col("Number_of_Trains")).alias("Cars_Loaded"), - ).select(pl.exclude("Number_of_Trains").repeat_by("Number_of_Trains").explode()) \ + (pl.col("Tons_Per_Car_Loaded").mul("Number_of_Cars_Loaded") + pl.col("Tons_Per_Car_Empty").mul("Number_of_Cars_Empty")).alias("Tons_Per_Train"), + (pl.col("HP_Required_Per_Ton_Loaded").mul("Tons_Per_Car_Loaded").mul("Number_of_Cars_Loaded") + + pl.col("HP_Required_Per_Ton_Empty").mul("Tons_Per_Car_Loaded").mul("Number_of_Cars_Loaded") + ).alias("HP_Required") + ) + .sort("Origin", "Destination", "Percent_Within_Group", "Train_Type") + .with_columns( + (hours * 1.0 / pl.len().over("Origin", "Destination")).alias("Interval") + ) .with_columns( - ((pl.col("Interval").cumcount().over(["Origin","Destination","Train_Type"])) \ + ((pl.col("Interval").cumcount().over(["Origin","Destination"])) \ * pl.col("Interval")).alias("Hour") - ).drop("Interval") \ + ) + .select("Hour", "Origin", "Destination", "Train_Type", + "Number_of_Cars", "Number_of_Cars_Loaded", "Number_of_Cars_Empty", + "Tons_Per_Train", "HP_Required" + ) + .rename({"Number_of_Cars_Loaded": "Cars_Loaded", + "Number_of_Cars_Empty": "Cars_Empty"}) .sort(["Hour","Origin","Destination","Train_Type"]) + ) return demand + def build_locopool( config: TrainPlannerConfig, demand_file: Union[pl.DataFrame, Path, str], @@ -466,7 +605,7 @@ def build_locopool( rows = initial_size else: num_destinations_per_node = num_ods*1.0 / num_nodes*1.0 - initial_size = math.ceil((cars_per_od / config.cars_per_locomotive) * + initial_size = math.ceil((cars_per_od / config.cars_per_locomotive["Default"]) * num_destinations_per_node) # number of locomotives per node rows = initial_size * num_nodes # number of locomotives in total @@ -656,10 +795,9 @@ def append_loco_info(loco_info: pd.DataFrame) -> pd.DataFrame: def dispatch( dispatch_time: int, - ton: float, origin: str, loco_pool: pl.DataFrame, - hp_per_ton: float, + hp_required: float, ) -> pl.Series: """ Update the locomotive pool by identifying the desired locomotive to dispatch and assign to the @@ -667,18 +805,14 @@ def dispatch( Arguments: ---------- dispatch_time: time that a train is due - ton: required tonnage in the train origin: origin node name of the train loco_pool: locomotive pool dataframe containing all locomotives in the network - hp_per_ton: Horsepower per ton required for this train type on this origin-destination corridor + hp_required: Horsepower required for this train type on this origin-destination corridor Outputs: ---------- selected: Indices of selected locomotives """ - hp_required = ton * hp_per_ton - # Candidate locomotives at the right place that are ready - candidates = loco_pool.select((pl.col("Node") == origin) & (pl.col("Status") == "Ready")).to_series() if not candidates.any(): @@ -954,19 +1088,9 @@ def run_train_planner( demand_origin_manifest = generate_origin_manifest_demand(demand, node_list, config) demand_rebalancing = balance_trains(demand_origin_manifest) demand = generate_demand_trains(demand, demand_returns, demand_rebalancing, rail_vehicles, config) - dispatch_times = calculate_dispatch_times(demand, simulation_days * 24) - - #TODO eliminate the naming convention that rail vehicles (train types from demand file) must end in `_Loaded` or `_Empty` - dispatch_times = (dispatch_times.with_columns( - pl.when(pl.col("Train_Type").str.ends_with("_Empty")) - .then(pl.col("Train_Type")) - .otherwise(pl.concat_str(pl.col("Train_Type").str.strip_suffix("_Loaded"), - pl.lit("_Loaded"))) - .alias("Train_Type") - ) - ) + dispatches = generate_dispatch_details(demand, simulation_days * 24) - final_departure = dispatch_times.get_column("Hour").max() + final_departure = dispatches.get_column("Hour").max() train_consist_plan = pl.DataFrame(schema= {'Train_ID': pl.Int64, 'Train_Type': pl.Utf8, @@ -990,10 +1114,10 @@ def run_train_planner( done = False # start at first departure time - current_time = dispatch_times.get_column("Hour").min() + current_time = dispatches.get_column("Hour").min() while not done: # Dispatch new train consists - current_dispatches = dispatch_times.filter(pl.col("Hour") == current_time) + current_dispatches = dispatches.filter(pl.col("Hour") == current_time) if(current_dispatches.height > 0): loco_pool, event_tracker = update_refuel_queue(loco_pool, refuelers, current_time, event_tracker) @@ -1006,10 +1130,9 @@ def run_train_planner( else: selected = dispatch( current_time, - this_train['Tons_Per_Train'], this_train['Origin'], loco_pool, - this_train['HP_Required_Per_Ton'] + this_train['HP_Required'] ) dispatched = loco_pool.filter(selected) diff --git a/python/altrios/utilities.py b/python/altrios/utilities.py index 77072f81..646f1ee0 100644 --- a/python/altrios/utilities.py +++ b/python/altrios/utilities.py @@ -5,6 +5,7 @@ import numpy as np from typing import Tuple, Union, Optional, Dict, Any, TYPE_CHECKING import pandas as pd +import polars as pl import datetime import numpy.typing as npt import logging @@ -44,6 +45,9 @@ def resources_root() -> Path: PowerTrace, ) +pl.Config.set_tbl_cols(15) +pl.Config(tbl_width_chars=150) + MPS_PER_MPH = 1.0 / 2.237 N_PER_LB = 4.448 KG_PER_LB = 1.0 / 2.20462 @@ -177,6 +181,10 @@ def _get_list(path_elem, container): return model +def range_minmax(self) -> pl.Expr: + return self.max() - self.min() +pl.Expr.range_minmax=range_minmax +del range_minmax def resample( df: pd.DataFrame, From 92a20f411cc9f14f2b1840d4ea1f24308a19310e Mon Sep 17 00:00:00 2001 From: "Bruchon, Matthew" Date: Mon, 23 Sep 2024 12:18:40 -0400 Subject: [PATCH 13/50] floordiv tweak --- python/altrios/train_planner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/altrios/train_planner.py b/python/altrios/train_planner.py index d30ae98c..b8059de0 100644 --- a/python/altrios/train_planner.py +++ b/python/altrios/train_planner.py @@ -488,7 +488,7 @@ def get_kg(veh): pl.max_horizontal([ 1, pl.min_horizontal([ - pl.col("Number_of_Cars").truediv("Cars_Per_Train_Target").round(), + pl.col("Number_of_Cars").floordiv("Cars_Per_Train_Target") + 1, pl.col("Number_of_Cars").floordiv("Cars_Per_Train_Min") ]) ]) From df40d2306d05c22bcbc8b5cad0133d03029457a3 Mon Sep 17 00:00:00 2001 From: "Bruchon, Matthew" Date: Mon, 23 Sep 2024 17:28:53 -0400 Subject: [PATCH 14/50] loco_pool generation fix --- python/altrios/demos/rollout_demo.py | 4 +- python/altrios/demos/sim_manager_demo.py | 4 +- python/altrios/train_planner.py | 105 ++++++++++++++--------- 3 files changed, 70 insertions(+), 43 deletions(-) diff --git a/python/altrios/demos/rollout_demo.py b/python/altrios/demos/rollout_demo.py index 982bf1a3..0ea84c60 100644 --- a/python/altrios/demos/rollout_demo.py +++ b/python/altrios/demos/rollout_demo.py @@ -22,8 +22,8 @@ File = defaults.DEMAND_FILE #targets = [0,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75, 0.8] train_planner_config = train_planner.TrainPlannerConfig( - cars_per_locomotive=50, - target_cars_per_train=90) + cars_per_locomotive={"Default": 50}, + target_cars_per_train={"Default": 90}) targets = [0.5] for target in targets: scenario_infos, metrics = rollout.simulate_prescribed_rollout( diff --git a/python/altrios/demos/sim_manager_demo.py b/python/altrios/demos/sim_manager_demo.py index aed09db4..9057a3bd 100644 --- a/python/altrios/demos/sim_manager_demo.py +++ b/python/altrios/demos/sim_manager_demo.py @@ -35,8 +35,8 @@ ) train_planner_config = train_planner.TrainPlannerConfig( - cars_per_locomotive=50, - target_cars_per_train=90) + cars_per_locomotive={"Default": 50}, + target_cars_per_train={"Default": 90}) t0_main = time.perf_counter() diff --git a/python/altrios/train_planner.py b/python/altrios/train_planner.py index da13d959..0ac2bcde 100644 --- a/python/altrios/train_planner.py +++ b/python/altrios/train_planner.py @@ -8,7 +8,7 @@ import math from typing import Tuple, List, Dict, Callable, Optional from itertools import repeat -from dataclasses import dataclass +from dataclasses import dataclass, field import altrios as alt from altrios import defaults, utilities @@ -17,42 +17,56 @@ @dataclass class TrainPlannerConfig: """ + Dataclass class for train planner configuration parameters. + Attributes: ---------- - min_cars_per_train: the minimum length in number of cars to form a train - target_cars_per_train: the standard train length in number of cars - manifest_empty_return_ratio: Desired railcar reuse ratio to calculate the empty manifest car demand, (E_ij+E_ji)/(L_ij+L_ji) - cars_per_locomotive: Heuristic scaling factor used to size number of locomotives needed based on demand. - refuelers_per_incoming_corridor: - hp_required_per_ton: - dispatch_scaling_dict: - loco_info: - refueler_info: + - `single_train_mode`: `True` to only run one round-trip train and schedule its charging; `False` to plan train consists + - `min_cars_per_train`: `Dict` of the minimum length in number of cars to form a train for each train type + - `target_cars_per_train`: `Dict` of the standard train length in number of cars for each train type + - `manifest_empty_return_ratio`: Desired railcar reuse ratio to calculate the empty manifest car demand, (E_ij+E_ji)/(L_ij+L_ji) + - `cars_per_locomotive`: Heuristic scaling factor used to size number of locomotives needed based on demand. + - `refuelers_per_incoming_corridor`: Heuristic scaling factor used to scale number of refuelers needed at each node based on number of incoming corridors. + - `stack_type`: Type of stacking (applicable only for intermodal containers) + - `require_diesel`: `True` to require each consist to have at least one diesel locomotive. + - `manifest_empty_return_ratio`: `Dict` + - `drag_coeff_function`: `Dict` + - `hp_required_per_ton`: `Dict` + - `dispatch_scaling_dict`: `Dict` + - `loco_info`: `Dict` + - `refueler_info`: `Dict` + - `return_demand_generators`: `Dict` """ - single_train_mode: bool = False, - min_cars_per_train: int = 60, - target_cars_per_train: int = 180, - manifest_empty_return_ratio: float = 0.6, - #TODO single vs double stacked operations on the corridor - cars_per_locomotive: int = 70, - refuelers_per_incoming_corridor: int = 4, - drag_coeff_function: Optional[Callable]= None, - hp_required_per_ton: Dict = { + single_train_mode: bool = False + min_cars_per_train: Dict = field(default_factory = lambda: { + "Default": 60 + }) + target_cars_per_train: Dict = field(default_factory = lambda: { + "Default": 180 + }) + cars_per_locomotive: Dict = field(default_factory = lambda: { + "Default": 50 + }) + refuelers_per_incoming_corridor: int = 4 + require_diesel: bool = False + manifest_empty_return_ratio: float = 0.6 + drag_coeff_function: List = field(default_factory = lambda: None) + hp_required_per_ton: Dict = field(default_factory = lambda: { "Default": { - "Unit": 2.0, - "Manifest": 1.5, - "Intermodal": 2.0 + 2.0, - "Unit_Empty": 2.0, - "Manifest_Empty": 1.5, - "Intermodal_Empty": 2.0 + 2.0, + "Unit": 2.0, + "Manifest": 1.5, + "Intermodal": 2.0 + 2.0, + "Unit_Empty": 2.0, + "Manifest_Empty": 1.5, + "Intermodal_Empty": 2.0 + 2.0, } - }, - dispatch_scaling_dict: Dict = { - "time_mult_factor": 1.4, - "hours_add": 2, - "energy_mult_factor": 1.25 - }, - loco_info = pd.DataFrame({ + }) + dispatch_scaling_dict: Dict = field(default_factory = lambda: { + "time_mult_factor": 1.4, + "hours_add": 2, + "energy_mult_factor": 1.25 + }) + loco_info: pd.DataFrame = field(default_factory = lambda: pd.DataFrame({ "Diesel_Large": { "Capacity_Cars": 20, "Fuel_Type": "Diesel", @@ -69,8 +83,8 @@ class TrainPlannerConfig: "Cost_USD": defaults.BEL_MINUS_BATTERY_COST_USD, "Lifespan_Years": defaults.LOCO_LIFESPAN } - }).transpose().reset_index(names='Locomotive_Type') - refueler_info = pd.DataFrame({ + }).transpose().reset_index(names='Locomotive_Type')) + refueler_info: pd.DataFrame = field(default_factory = lambda: pd.DataFrame({ "Diesel_Fueler": { "Locomotive_Type": "Diesel_Large", "Fuel_Type": "Diesel", @@ -87,7 +101,7 @@ class TrainPlannerConfig: "Cost_USD": defaults.BEL_CHARGER_COST_USD, "Lifespan_Years": defaults.LOCO_LIFESPAN } - }).transpose().reset_index(names='Refueler_Type') + }).transpose().reset_index(names='Refueler_Type')) def demand_loader( demand_table: Union[pl.DataFrame, Path, str] @@ -275,7 +289,20 @@ def generate_demand_trains( ---------- demand: Tabulated demand for each demand pair in terms of number of cars and number of trains """ - + cars_per_train_min = (pl.from_dict(config.min_cars_per_train) + .melt(variable_name="Train_Type", value_name="Cars_Per_Train_Min") + ) + cars_per_train_min_default = (cars_per_train_min + .filter(pl.col("Train_Type") == pl.lit("Default")) + .select("Cars_Per_Train_Min").item() + ) + cars_per_train_target = (pl.from_dict(config.target_cars_per_train) + .melt(variable_name="Train_Type", value_name="Cars_Per_Train_Target") + ) + cars_per_train_target_default = (cars_per_train_target + .filter(pl.col("Train_Type") == pl.lit("Default")) + .select("Cars_Per_Train_Target").item() + ) demand = pl.concat([ demand.drop("Number_of_Containers"), demand_returns.drop("Number_of_Containers"), @@ -338,7 +365,7 @@ def get_kg(veh): .then(0) .otherwise( pl.max_horizontal([1, - ((pl.col("Number_of_Cars").floordiv(pl.lit(config.target_cars_per_train)) + 1)) + ((pl.col("Number_of_Cars").floordiv(pl.lit(cars_per_train_target_default)) + 1)) ]) ).cast(pl.UInt32).alias("Number_of_Trains")) # Calculate per-train car counts and tonnage @@ -420,11 +447,11 @@ def build_locopool( num_ods = demand.height cars_per_od = demand.get_column("Number_of_Cars").mean() if config.single_train_mode: - initial_size = math.ceil(cars_per_od / config.cars_per_locomotive) + initial_size = math.ceil(cars_per_od / config.cars_per_locomotive["Default"]) rows = initial_size else: num_destinations_per_node = num_ods*1.0 / num_nodes*1.0 - initial_size = math.ceil((cars_per_od / config.cars_per_locomotive) * + initial_size = math.ceil((cars_per_od / config.cars_per_locomotive["Default"]) * num_destinations_per_node) # number of locomotives per node rows = initial_size * num_nodes # number of locomotives in total From 9197e89d42dd40f449ca4fe5a6159a6c4b008661 Mon Sep 17 00:00:00 2001 From: sakhtar Date: Mon, 23 Sep 2024 16:35:45 -0600 Subject: [PATCH 15/50] Corrected return type for drag_coeff_function field --- python/altrios/train_planner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/altrios/train_planner.py b/python/altrios/train_planner.py index 0ac2bcde..b42b2f83 100644 --- a/python/altrios/train_planner.py +++ b/python/altrios/train_planner.py @@ -50,7 +50,7 @@ class TrainPlannerConfig: refuelers_per_incoming_corridor: int = 4 require_diesel: bool = False manifest_empty_return_ratio: float = 0.6 - drag_coeff_function: List = field(default_factory = lambda: None) + drag_coeff_function: Callable = None hp_required_per_ton: Dict = field(default_factory = lambda: { "Default": { "Unit": 2.0, From f168fecbcacda957effc8238db1c9c0d7db6d7a9 Mon Sep 17 00:00:00 2001 From: "Bruchon, Matthew" Date: Mon, 23 Sep 2024 23:51:05 -0400 Subject: [PATCH 16/50] revert default value --- python/altrios/defaults.py | 1 + python/altrios/demos/rollout_demo.py | 4 +- python/altrios/train_planner.py | 56 ++++++++++++++++++++-------- 3 files changed, 43 insertions(+), 18 deletions(-) diff --git a/python/altrios/defaults.py b/python/altrios/defaults.py index 06f0cfdf..848787ce 100644 --- a/python/altrios/defaults.py +++ b/python/altrios/defaults.py @@ -33,6 +33,7 @@ LOCO_LIFESPAN = 20 ANNUAL_LOCO_TURNOVER = 1.0/LOCO_LIFESPAN +DEFAULT_GAP_SIZE = 0.604 DEMAND_FILE = alt.resources_root() / "Default Demand.csv" FUEL_EMISSIONS_FILE = alt.resources_root() / "metrics_inputs" / "GREET-CA_Emissions_Factors.csv" diff --git a/python/altrios/demos/rollout_demo.py b/python/altrios/demos/rollout_demo.py index 982bf1a3..fe85f46c 100644 --- a/python/altrios/demos/rollout_demo.py +++ b/python/altrios/demos/rollout_demo.py @@ -22,8 +22,8 @@ File = defaults.DEMAND_FILE #targets = [0,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75, 0.8] train_planner_config = train_planner.TrainPlannerConfig( - cars_per_locomotive=50, - target_cars_per_train=90) + cars_per_locomotive={"Default": 50}, + target_cars_per_train={"Default": 90}) targets = [0.5] for target in targets: scenario_infos, metrics = rollout.simulate_prescribed_rollout( diff --git a/python/altrios/train_planner.py b/python/altrios/train_planner.py index b8059de0..9f6f483b 100644 --- a/python/altrios/train_planner.py +++ b/python/altrios/train_planner.py @@ -102,7 +102,6 @@ class TrainPlannerConfig: - `target_cars_per_train`: `Dict` of the standard train length in number of cars for each train type - `manifest_empty_return_ratio`: Desired railcar reuse ratio to calculate the empty manifest car demand, (E_ij+E_ji)/(L_ij+L_ji) - `cars_per_locomotive`: Heuristic scaling factor used to size number of locomotives needed based on demand. - - `cars_per_locomotive_fixed`: If `True`, `cars_per_locomotive` overrides `hp_per_ton` calculations used for dispatching decisions. - `refuelers_per_incoming_corridor`: Heuristic scaling factor used to scale number of refuelers needed at each node based on number of incoming corridors. - `stack_type`: Type of stacking (applicable only for intermodal containers) - `require_diesel`: `True` to require each consist to have at least one diesel locomotive. @@ -121,13 +120,14 @@ class TrainPlannerConfig: target_cars_per_train: Dict = field(default_factory = lambda: { "Default": 180 }) - cars_per_locomotive: int = 70 - cars_per_locomotive_fixed: bool = False + cars_per_locomotive: Dict = field(default_factory = lambda: { + "Default": 70 + }) refuelers_per_incoming_corridor: int = 4 stack_type: str = "single" require_diesel: bool = False manifest_empty_return_ratio: float = 0.6 - drag_coeff_function: List = field(default_factory = lambda: None) + drag_coeff_function: Optional[Callable]= None hp_required_per_ton: Dict = field(default_factory = lambda: { "Default": { "Unit": 2.0, @@ -554,7 +554,7 @@ def allocateItems(df: pl.DataFrame, target: str, grouping_vars: List[str]) -> pl .with_columns( (pl.col("Tons_Per_Car_Loaded").mul("Number_of_Cars_Loaded") + pl.col("Tons_Per_Car_Empty").mul("Number_of_Cars_Empty")).alias("Tons_Per_Train"), (pl.col("HP_Required_Per_Ton_Loaded").mul("Tons_Per_Car_Loaded").mul("Number_of_Cars_Loaded") + - pl.col("HP_Required_Per_Ton_Empty").mul("Tons_Per_Car_Loaded").mul("Number_of_Cars_Loaded") + pl.col("HP_Required_Per_Ton_Empty").mul("Tons_Per_Car_Empty").mul("Number_of_Cars_Empty") ).alias("HP_Required") ) .sort("Origin", "Destination", "Percent_Within_Group", "Train_Type") @@ -601,7 +601,7 @@ def build_locopool( num_ods = demand.height cars_per_od = demand.get_column("Number_of_Cars").mean() if config.single_train_mode: - initial_size = math.ceil(cars_per_od / config.cars_per_locomotive) + initial_size = math.ceil(cars_per_od / config.cars_per_locomotive["Default"]) rows = initial_size else: num_destinations_per_node = num_ods*1.0 / num_nodes*1.0 @@ -797,6 +797,7 @@ def dispatch( dispatch_time: int, origin: str, loco_pool: pl.DataFrame, + train_tonnage: float, hp_required: float, ) -> pl.Series: """ @@ -812,6 +813,7 @@ def dispatch( ---------- selected: Indices of selected locomotives """ + hp_per_ton = hp_required / train_tonnage # Candidate locomotives at the right place that are ready candidates = loco_pool.select((pl.col("Node") == origin) & (pl.col("Status") == "Ready")).to_series() @@ -881,10 +883,14 @@ def dispatch( is more than the available horsepower ({available_hp}). Count of locomotives servicing, refueling, or queueing at {origin} are:""" # Hold the train until enough diesels are present (future development) - waiting_counts = loco_pool.filter( - pl.col("Node") == origin, - pl.col("Status").is_in(["Servicing","Refuel_Queue"]) - ).select("Locomotive_Type").group_by(['Locomotive_Type']).len() + waiting_counts = (loco_pool + .filter( + pl.col("Node") == origin, + pl.col("Status").is_in(["Servicing","Refuel_Queue"]) + ) + .group_by(['Locomotive_Type']) + .agg(pl.count().alias("count")) + ) for row in waiting_counts.iter_rows(named = True): message = message + f""" {row['Locomotive_Type']}: {row['count']}""" @@ -1132,17 +1138,35 @@ def run_train_planner( current_time, this_train['Origin'], loco_pool, + this_train['Tons_Per_Train'], this_train['HP_Required'] ) dispatched = loco_pool.filter(selected) + if config.drag_coeff_function is not None: + cd_area_vec = config.drag_coeff_function( + this_train['Number_of_Cars'], + gap_size = defaults.DEFAULT_GAP_SIZE + ) + else: + cd_area_vec = None + + train_types = [] + n_cars_by_type = {} + this_train_type = this_train['Train_Type'] + if this_train['Cars_Loaded'] > 0: + train_types.append(f'{this_train_type}_Loaded') + n_cars_by_type[f'{this_train_type}_Loaded'] = int(this_train['Cars_Loaded']) + if this_train['Cars_Empty'] > 0: + train_types.append(f'{this_train_type}_Empty') + n_cars_by_type[f'{this_train_type}_Empty'] = int(this_train['Cars_Empty']) + + train_config = alt.TrainConfig( - rail_vehicles = [vehicle for vehicle in rail_vehicles if vehicle.car_type==this_train['Train_Type']], - n_cars_by_type = { - this_train['Train_Type']: this_train['Number_of_Cars'] - }, + rail_vehicles = [vehicle for vehicle in rail_vehicles if vehicle.car_type in train_types], + n_cars_by_type = n_cars_by_type, train_type = train_type, - cd_area_vec = config.drag_coeff_function + cd_area_vec = cd_area_vec ) loco_start_soc_j = dispatched.get_column("SOC_J") @@ -1251,7 +1275,7 @@ def run_train_planner( loco_pool, event_tracker = update_refuel_queue(loco_pool, refuelers, current_time, event_tracker) done = True else: - current_time = dispatch_times.filter(pl.col("Hour").gt(current_time)).get_column("Hour").min() + current_time = dispatches.filter(pl.col("Hour").gt(current_time)).get_column("Hour").min() train_consist_plan = (train_consist_plan .with_columns( From 31157e3c9aa6b488912eeb1956c8dca3af73648e Mon Sep 17 00:00:00 2001 From: "Bruchon, Matthew" Date: Mon, 23 Sep 2024 23:52:15 -0400 Subject: [PATCH 17/50] Update utilities.py --- python/altrios/utilities.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/python/altrios/utilities.py b/python/altrios/utilities.py index 646f1ee0..1cfd03a9 100644 --- a/python/altrios/utilities.py +++ b/python/altrios/utilities.py @@ -45,9 +45,6 @@ def resources_root() -> Path: PowerTrace, ) -pl.Config.set_tbl_cols(15) -pl.Config(tbl_width_chars=150) - MPS_PER_MPH = 1.0 / 2.237 N_PER_LB = 4.448 KG_PER_LB = 1.0 / 2.20462 From 7d5cdcdee3636bc7958bcf211dd624ec18fcc4bb Mon Sep 17 00:00:00 2001 From: "Bruchon, Matthew" Date: Tue, 24 Sep 2024 02:50:52 -0400 Subject: [PATCH 18/50] car counting metrics working --- python/altrios/altrios_pyo3.pyi | 2 + python/altrios/metric_calculator.py | 40 +++++++++++++++++-- .../src/train/set_speed_train_sim.rs | 7 +++- .../src/train/speed_limit_train_sim.rs | 23 ++++++----- rust/altrios-core/src/train/train_config.rs | 24 ++++++----- rust/altrios-core/src/train/train_state.rs | 7 ---- 6 files changed, 70 insertions(+), 33 deletions(-) diff --git a/python/altrios/altrios_pyo3.pyi b/python/altrios/altrios_pyo3.pyi index d16a7940..2d0b17fa 100644 --- a/python/altrios/altrios_pyo3.pyi +++ b/python/altrios/altrios_pyo3.pyi @@ -819,6 +819,7 @@ class SpeedLimitTrainSim(SerdeAPI): origs: List[Location] dests: List[Location] loco_con: Consist + n_cars_by_type: Dict[str, int] state: TrainState # train_res: TrainRes # not accessible in Python path_tpc: PathTpc @@ -833,6 +834,7 @@ class SpeedLimitTrainSim(SerdeAPI): def __init__( cls, loco_con: Consist, + n_cars_by_type: Dict[str, int], state: TrainState, train_res_file: Optional[str], path_tpc_file: Optional[str], diff --git a/python/altrios/metric_calculator.py b/python/altrios/metric_calculator.py index 4789f0bb..063702d5 100644 --- a/python/altrios/metric_calculator.py +++ b/python/altrios/metric_calculator.py @@ -120,6 +120,7 @@ def main( ('Freight_Moved', 'million tonne-mi'), ('Freight_Moved', 'car-miles'), ('Freight_Moved', 'cars'), + ('Freight_Moved', 'detailed'), ('GHG', 'tonne CO2-eq'), ('Count_Locomotives', 'assets'), ('Count_Refuelers', 'assets'), @@ -447,13 +448,44 @@ def calculate_freight_moved( conversion_from_km = utilities.MI_PER_KM else: conversion_from_km = 1.0 - + if units in ["million tonne-km", "million tonne-mi"]: - return metric("Freight_Moved", units, info.sims.get_megagram_kilometers(annualize=info.annualize) * conversion_from_km /1.0e6) + return metric("Freight_Moved", units, info.sims.get_megagram_kilometers(annualize=info.annualize) * conversion_from_km /1.0e6, year=info.scenario_year) elif units in ["car-km", "car-miles"]: - return metric("Freight_Moved", units, info.sims.get_car_kilometers(include_empty=True, include_loaded=True, annualize=info.annualize) * conversion_from_km) + return metric("Freight_Moved", units, info.sims.get_car_kilometers(annualize=info.annualize) * conversion_from_km, year=info.scenario_year) elif units == "cars": - return metric("Freight_Moved", units, info.sims.get_cars_moved(include_empty=True, include_loaded=True, annualize=info.annualize)) + return metric("Freight_Moved", units, info.sims.get_cars_moved(annualize=info.annualize), year=info.scenario_year) + elif units == "detailed": + kilometers = (pl.DataFrame(data = {"car-km": [sim.get_kilometers(annualize=info.annualize) for sim in info.sims.tolist()]}) + .with_row_index("idx") + .with_columns( + pl.col("car-km").mul(utilities.MI_PER_KM).alias("car-miles") + ) + ) + all_n_cars_by_type = [sim.n_cars_by_type for sim in info.sims.tolist()] + car_counts = ( + pl.concat([pl.from_dict(item)for item in all_n_cars_by_type], how="diagonal_relaxed") + .with_row_index("idx") + .melt(id_vars = "idx", value_name = "cars", variable_name = "Subset") + .filter(pl.col("cars").is_not_null()) + .join(kilometers, how="left", on="idx") + .drop("idx") + .group_by("Subset") + .agg(pl.col("*").sum()) + .sort("Subset") + .melt(id_vars = "Subset", variable_name = "Units", value_name = "Value") + .with_columns( + pl.lit(info.scenario_year).alias("Year"), + pl.lit("Freight_Moved").alias("Metric"), + pl.when( + info.annualize, + pl.col("Units") == pl.lit("cars")) + .then(pl.col("Value").mul(365.25 / info.simulation_days)) + .otherwise(pl.col("Value")) + .alias("Value") + ) + ) + return car_counts else: print(f"Units of {units} not supported for freight movement calculation.") return metric("Freight_Moved", units, None) diff --git a/rust/altrios-core/src/train/set_speed_train_sim.rs b/rust/altrios-core/src/train/set_speed_train_sim.rs index d2b59c2d..d6721335 100644 --- a/rust/altrios-core/src/train/set_speed_train_sim.rs +++ b/rust/altrios-core/src/train/set_speed_train_sim.rs @@ -181,6 +181,7 @@ pub struct SpeedTraceElement { #[new] fn __new__( loco_con: Consist, + n_cars_by_type: HashMap, state: TrainState, speed_trace: SpeedTrace, train_res_file: Option, @@ -196,7 +197,7 @@ pub struct SpeedTraceElement { None => TrainRes::valid() }; - Self::new(loco_con, state, speed_trace, train_res, path_tpc, save_interval) + Self::new(loco_con, n_cars_by_type, state, speed_trace, train_res, path_tpc, save_interval) } #[setter] @@ -259,6 +260,7 @@ pub struct SpeedTraceElement { /// Train simulation in which speed is prescribed pub struct SetSpeedTrainSim { pub loco_con: Consist, + pub n_cars_by_type: HashMap, #[serde(default)] #[serde(skip_serializing_if = "EqDefault::eq_default")] pub state: TrainState, @@ -278,6 +280,7 @@ pub struct SetSpeedTrainSim { impl SetSpeedTrainSim { pub fn new( loco_con: Consist, + n_cars_by_type: HashMap, state: TrainState, speed_trace: SpeedTrace, train_res: TrainRes, @@ -286,6 +289,7 @@ impl SetSpeedTrainSim { ) -> Self { let mut train_sim = Self { loco_con, + n_cars_by_type, state, train_res, path_tpc, @@ -422,6 +426,7 @@ impl Default for SetSpeedTrainSim { fn default() -> Self { Self { loco_con: Consist::default(), + n_cars_by_type: Default::default(), state: TrainState::valid(), train_res: TrainRes::valid(), path_tpc: PathTpc::valid(), diff --git a/rust/altrios-core/src/train/speed_limit_train_sim.rs b/rust/altrios-core/src/train/speed_limit_train_sim.rs index 348270be..4acb73ed 100644 --- a/rust/altrios-core/src/train/speed_limit_train_sim.rs +++ b/rust/altrios-core/src/train/speed_limit_train_sim.rs @@ -68,13 +68,13 @@ impl From<&Vec> for TimedLinkPath { } #[pyo3(name = "get_car_kilometers")] - pub fn get_car_kilometers_py(&self, include_empty: bool, include_loaded: bool, annualize: bool) -> f64 { - self.get_car_kilometers(include_empty, include_loaded, annualize) + pub fn get_car_kilometers_py(&self, annualize: bool) -> f64 { + self.get_car_kilometers(annualize) } #[pyo3(name = "get_cars_moved")] - pub fn get_cars_moved_py(&self, include_empty: bool, include_loaded: bool, annualize: bool) -> f64 { - self.get_cars_moved(include_empty, include_loaded, annualize) + pub fn get_cars_moved_py(&self, annualize: bool) -> f64 { + self.get_cars_moved(annualize) } #[pyo3(name = "get_res_kilometers")] @@ -149,6 +149,8 @@ pub struct SpeedLimitTrainSim { pub origs: Vec, pub dests: Vec, pub loco_con: Consist, + /// Number of railcars by type on the train + pub n_cars_by_type: HashMap, #[serde(default)] #[serde(skip_serializing_if = "EqDefault::eq_default")] pub state: TrainState, @@ -175,6 +177,7 @@ impl SpeedLimitTrainSim { origs: &[Location], dests: &[Location], loco_con: Consist, + n_cars_by_type: HashMap, state: TrainState, train_res: TrainRes, path_tpc: PathTpc, @@ -188,6 +191,7 @@ impl SpeedLimitTrainSim { origs: origs.to_vec(), dests: dests.to_vec(), loco_con, + n_cars_by_type, state, train_res, path_tpc, @@ -226,16 +230,14 @@ impl SpeedLimitTrainSim { * self.get_scaling_factor(annualize) } - pub fn get_car_kilometers(&self, include_empty: bool, include_loaded: bool, annualize: bool) -> f64 { - let n_cars = self.get_cars_moved(include_empty, include_loaded, annualize); + pub fn get_car_kilometers(&self, annualize: bool) -> f64 { + let n_cars = self.get_cars_moved(annualize) as f64; // Note: n_cars already includes an annualization scaling factor; no need to multiply twice. self.state.total_dist.get::() * n_cars } - pub fn get_cars_moved(&self, include_empty: bool, include_loaded: bool, annualize: bool) -> f64 { - let n_cars = - (self.state.cars_empty * (include_empty as u32) - + self.state.cars_loaded * (include_loaded as u32)) as f64; + pub fn get_cars_moved(&self, annualize: bool) -> f64 { + let n_cars: f64 = self.n_cars_by_type.values().fold(0, |acc, n| *n + acc) as f64; n_cars * self.get_scaling_factor(annualize) } @@ -707,6 +709,7 @@ impl Default for SpeedLimitTrainSim { origs: Default::default(), dests: Default::default(), loco_con: Default::default(), + n_cars_by_type: Default::default(), state: TrainState::valid(), train_res: TrainRes::valid(), path_tpc: PathTpc::default(), diff --git a/rust/altrios-core/src/train/train_config.rs b/rust/altrios-core/src/train/train_config.rs index ec070503..99a241b4 100644 --- a/rust/altrios-core/src/train/train_config.rs +++ b/rust/altrios-core/src/train/train_config.rs @@ -437,15 +437,13 @@ impl TrainSimBuilder { }) / self.train_config.cars_total() as f64; - let mut state = TrainState::new( + let state = TrainState::new( length, train_mass_static, mass_rot, mass_freight, self.init_train_state, ); - state.cars_empty = self.train_config.cars_empty; - state.cars_loaded = self.train_config.cars_loaded; let path_tpc = PathTpc::new(train_params); @@ -578,6 +576,7 @@ impl TrainSimBuilder { path_tpc.extend(network, link_path)?; Ok(SetSpeedTrainSim::new( self.loco_con.clone(), + self.train_config.n_cars_by_type.clone(), state, speed_trace, train_res, @@ -607,6 +606,7 @@ impl TrainSimBuilder { Ok(( SetSpeedTrainSim::new( self.loco_con.clone(), + self.train_config.n_cars_by_type.clone(), state, speed_trace, train_res.clone(), @@ -663,6 +663,7 @@ impl TrainSimBuilder { )) })?, self.loco_con.clone(), + self.train_config.n_cars_by_type.clone(), state, train_res, path_tpc, @@ -716,6 +717,7 @@ impl TrainSimBuilder { )) })?, self.loco_con.clone(), + self.train_config.n_cars_by_type.clone(), state, train_res.clone(), path_tpc.clone(), @@ -1253,13 +1255,13 @@ pub fn run_speed_limit_train_sims( } #[pyo3(name = "get_car_kilometers")] - pub fn get_car_kilometers_py(&self, include_empty: bool, include_loaded: bool, annualize: bool) -> f64 { - self.get_car_kilometers(include_empty, include_loaded, annualize) + pub fn get_car_kilometers_py(&self, annualize: bool) -> f64 { + self.get_car_kilometers(annualize) } #[pyo3(name = "get_cars_moved")] - pub fn get_cars_moved_py(&self, include_empty: bool, include_loaded: bool, annualize: bool) -> f64 { - self.get_cars_moved(include_empty, include_loaded, annualize) + pub fn get_cars_moved_py(&self, annualize: bool) -> f64 { + self.get_cars_moved(annualize) } #[pyo3(name = "get_res_kilometers")] @@ -1306,17 +1308,17 @@ impl SpeedLimitTrainSimVec { .sum() } - pub fn get_car_kilometers(&self, include_empty: bool, include_loaded: bool, annualize: bool) -> f64 { + pub fn get_car_kilometers(&self, annualize: bool) -> f64 { self.0 .iter() - .map(|sim| sim.get_car_kilometers(include_empty, include_loaded, annualize)) + .map(|sim| sim.get_car_kilometers(annualize)) .sum() } - pub fn get_cars_moved(&self, include_empty: bool, include_loaded: bool, annualize: bool) -> f64 { + pub fn get_cars_moved(&self, annualize: bool) -> f64 { self.0 .iter() - .map(|sim| sim.get_cars_moved(include_empty, include_loaded, annualize)) + .map(|sim| sim.get_cars_moved(annualize)) .sum() } diff --git a/rust/altrios-core/src/train/train_state.rs b/rust/altrios-core/src/train/train_state.rs index 44dd3baf..fcfc0879 100644 --- a/rust/altrios-core/src/train/train_state.rs +++ b/rust/altrios-core/src/train/train_state.rs @@ -116,11 +116,6 @@ pub struct TrainState { /// Curvature resistance force pub res_curve: si::Force, - /// Number of empty cars included on the train - pub cars_empty: u32, - /// Number of loaded cars included on the train - pub cars_loaded: u32, - /// Grade at front of train pub grade_front: si::Ratio, /// Grade at back of train of train if strap method is used @@ -161,8 +156,6 @@ impl Default for TrainState { mass_static: Default::default(), mass_rot: Default::default(), mass_freight: Default::default(), - cars_empty: Default::default(), - cars_loaded: Default::default(), elev_front: Default::default(), energy_whl_out: Default::default(), grade_front: Default::default(), From c59fd8d4c9a31a37615f8070237024a1d663af38 Mon Sep 17 00:00:00 2001 From: "Bruchon, Matthew" Date: Tue, 24 Sep 2024 09:55:06 -0400 Subject: [PATCH 19/50] metrics text fix --- python/altrios/tests/test_metric_calculator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/altrios/tests/test_metric_calculator.py b/python/altrios/tests/test_metric_calculator.py index 6fc754c5..e669950b 100644 --- a/python/altrios/tests/test_metric_calculator.py +++ b/python/altrios/tests/test_metric_calculator.py @@ -24,5 +24,5 @@ def test_dummy_sim(self): for info in scenario_infos: tkm = metric_calculator.calculate_freight_moved(info,'million tonne-mi') - self.assertEqual(tkm.filter(pl.col("Metric") == 'Mt-km').get_column("Units").len(), 1) + self.assertEqual(tkm.filter(pl.col("Metric") == pl.lit("Freight_Moved")).get_column("Units").len(), 1) From 37eb8b74e45821595bc528c2c634196300a14995 Mon Sep 17 00:00:00 2001 From: "Bruchon, Matthew" Date: Thu, 7 Nov 2024 18:07:04 -0500 Subject: [PATCH 20/50] initial LIFTS check-in --- pyproject.toml | 2 +- python/lifts/__init__.py | 2 + python/lifts/avg_time_per_train.txt | 1 + .../crane_hostler_combination_results.xlsx | Bin 0 -> 5603 bytes python/lifts/crane_work_log.txt | 756 +++++++++++++++++ python/lifts/dictionary.py | 58 ++ python/lifts/distances.py | 70 ++ python/lifts/final_version.py | 614 ++++++++++++++ python/lifts/hostler_work_log.txt | 774 ++++++++++++++++++ python/lifts/merged_baseline.py | 454 ++++++++++ python/lifts/parameters.py | 120 +++ .../results/simulation_crane_1_hostler_1.xlsx | Bin 0 -> 54669 bytes .../results/simulation_crane_1_hostler_2.xlsx | Bin 0 -> 53903 bytes .../results/simulation_crane_1_hostler_3.xlsx | Bin 0 -> 53886 bytes .../results/simulation_crane_1_hostler_4.xlsx | Bin 0 -> 53928 bytes .../results/simulation_crane_1_hostler_5.xlsx | Bin 0 -> 53888 bytes .../results/simulation_crane_1_hostler_6.xlsx | Bin 0 -> 53929 bytes .../results/simulation_crane_1_hostler_7.xlsx | Bin 0 -> 53937 bytes .../results/simulation_crane_1_hostler_8.xlsx | Bin 0 -> 53903 bytes .../results/simulation_crane_2_hostler_1.xlsx | Bin 0 -> 53947 bytes .../results/simulation_crane_2_hostler_2.xlsx | Bin 0 -> 53920 bytes .../results/simulation_crane_2_hostler_3.xlsx | Bin 0 -> 53916 bytes .../results/simulation_crane_2_hostler_4.xlsx | Bin 0 -> 53957 bytes .../results/simulation_crane_3_hostler_1.xlsx | Bin 0 -> 53851 bytes .../results/simulation_crane_3_hostler_2.xlsx | Bin 0 -> 53812 bytes .../results/simulation_crane_3_hostler_3.xlsx | Bin 0 -> 53810 bytes .../results/simulation_crane_3_hostler_4.xlsx | Bin 0 -> 53859 bytes python/lifts/schedule.py | 51 ++ python/lifts/test.py | 602 ++++++++++++++ python/lifts/truck_work_log.txt | 516 ++++++++++++ python/lifts/vehicle_average_times.txt | 3 + python/lifts/vehicle_performance.py | 48 ++ 32 files changed, 4070 insertions(+), 1 deletion(-) create mode 100644 python/lifts/__init__.py create mode 100644 python/lifts/avg_time_per_train.txt create mode 100644 python/lifts/crane_hostler_combination_results.xlsx create mode 100644 python/lifts/crane_work_log.txt create mode 100644 python/lifts/dictionary.py create mode 100644 python/lifts/distances.py create mode 100644 python/lifts/final_version.py create mode 100644 python/lifts/hostler_work_log.txt create mode 100644 python/lifts/merged_baseline.py create mode 100644 python/lifts/parameters.py create mode 100644 python/lifts/results/simulation_crane_1_hostler_1.xlsx create mode 100644 python/lifts/results/simulation_crane_1_hostler_2.xlsx create mode 100644 python/lifts/results/simulation_crane_1_hostler_3.xlsx create mode 100644 python/lifts/results/simulation_crane_1_hostler_4.xlsx create mode 100644 python/lifts/results/simulation_crane_1_hostler_5.xlsx create mode 100644 python/lifts/results/simulation_crane_1_hostler_6.xlsx create mode 100644 python/lifts/results/simulation_crane_1_hostler_7.xlsx create mode 100644 python/lifts/results/simulation_crane_1_hostler_8.xlsx create mode 100644 python/lifts/results/simulation_crane_2_hostler_1.xlsx create mode 100644 python/lifts/results/simulation_crane_2_hostler_2.xlsx create mode 100644 python/lifts/results/simulation_crane_2_hostler_3.xlsx create mode 100644 python/lifts/results/simulation_crane_2_hostler_4.xlsx create mode 100644 python/lifts/results/simulation_crane_3_hostler_1.xlsx create mode 100644 python/lifts/results/simulation_crane_3_hostler_2.xlsx create mode 100644 python/lifts/results/simulation_crane_3_hostler_3.xlsx create mode 100644 python/lifts/results/simulation_crane_3_hostler_4.xlsx create mode 100644 python/lifts/schedule.py create mode 100644 python/lifts/test.py create mode 100644 python/lifts/truck_work_log.txt create mode 100644 python/lifts/vehicle_average_times.txt create mode 100644 python/lifts/vehicle_performance.py diff --git a/pyproject.toml b/pyproject.toml index 0034ef7b..7cf1b279 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -43,7 +43,7 @@ dependencies = [ "plotly", "typing_extensions", "pyyaml", - "polars==0.20.25", + "polars >= 1.12", "pyarrow", "requests", "PyYAML==6.0.2", diff --git a/python/lifts/__init__.py b/python/lifts/__init__.py new file mode 100644 index 00000000..ffc4016e --- /dev/null +++ b/python/lifts/__init__.py @@ -0,0 +1,2 @@ +from pkg_resources import get_distribution +__version__ = get_distribution("altrios").version diff --git a/python/lifts/avg_time_per_train.txt b/python/lifts/avg_time_per_train.txt new file mode 100644 index 00000000..18e88105 --- /dev/null +++ b/python/lifts/avg_time_per_train.txt @@ -0,0 +1 @@ +137.44757283817884 \ No newline at end of file diff --git a/python/lifts/crane_hostler_combination_results.xlsx b/python/lifts/crane_hostler_combination_results.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..f85c4288c03a62f790dd5fbf5ef46fcef835df07 GIT binary patch literal 5603 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 literal 0 HcmV?d00001 diff --git a/python/lifts/crane_work_log.txt b/python/lifts/crane_work_log.txt new file mode 100644 index 00000000..bb9acdea --- /dev/null +++ b/python/lifts/crane_work_log.txt @@ -0,0 +1,756 @@ +Vehicle ID: 1, Event Type: start, Timestamp: 181.18810094866248 +Vehicle ID: 1, Event Type: end, Timestamp: 181.18810094866248 +Vehicle ID: 1, Event Type: start, Timestamp: 181.2169499739688 +Vehicle ID: 1, Event Type: end, Timestamp: 181.2169499739688 +Vehicle ID: 1, Event Type: start, Timestamp: 181.2395633995604 +Vehicle ID: 1, Event Type: end, Timestamp: 181.2395633995604 +Vehicle ID: 1, Event Type: start, Timestamp: 181.2415911497569 +Vehicle ID: 1, Event Type: end, Timestamp: 181.2415911497569 +Vehicle ID: 1, Event Type: start, Timestamp: 181.27010127953702 +Vehicle ID: 1, Event Type: end, Timestamp: 181.27010127953702 +Vehicle ID: 1, Event Type: start, Timestamp: 181.2966303423458 +Vehicle ID: 1, Event Type: end, Timestamp: 181.2966303423458 +Vehicle ID: 1, Event Type: start, Timestamp: 181.29973002923202 +Vehicle ID: 1, Event Type: end, Timestamp: 181.29973002923202 +Vehicle ID: 1, Event Type: start, Timestamp: 181.3269712046554 +Vehicle ID: 1, Event Type: end, Timestamp: 181.3269712046554 +Vehicle ID: 1, Event Type: start, Timestamp: 181.37156978383837 +Vehicle ID: 1, Event Type: end, Timestamp: 181.37156978383837 +Vehicle ID: 1, Event Type: start, Timestamp: 181.39569742271803 +Vehicle ID: 1, Event Type: end, Timestamp: 181.39569742271803 +Vehicle ID: 1, Event Type: start, Timestamp: 181.39849686069468 +Vehicle ID: 1, Event Type: end, Timestamp: 181.39849686069468 +Vehicle ID: 1, Event Type: start, Timestamp: 181.43286543187185 +Vehicle ID: 1, Event Type: end, Timestamp: 181.43286543187185 +Vehicle ID: 1, Event Type: start, Timestamp: 181.4446206161728 +Vehicle ID: 1, Event Type: end, Timestamp: 181.4446206161728 +Vehicle ID: 1, Event Type: start, Timestamp: 181.4505608513666 +Vehicle ID: 1, Event Type: end, Timestamp: 181.4505608513666 +Vehicle ID: 1, Event Type: start, Timestamp: 181.45317898131094 +Vehicle ID: 1, Event Type: end, Timestamp: 181.45317898131094 +Vehicle ID: 1, Event Type: start, Timestamp: 181.4620961590926 +Vehicle ID: 1, Event Type: end, Timestamp: 181.4620961590926 +Vehicle ID: 1, Event Type: start, Timestamp: 181.4628185105591 +Vehicle ID: 1, Event Type: end, Timestamp: 181.4628185105591 +Vehicle ID: 1, Event Type: start, Timestamp: 181.4666422935576 +Vehicle ID: 1, Event Type: end, Timestamp: 181.4666422935576 +Vehicle ID: 1, Event Type: start, Timestamp: 181.47360475089386 +Vehicle ID: 1, Event Type: end, Timestamp: 181.47360475089386 +Vehicle ID: 1, Event Type: start, Timestamp: 181.4778592051455 +Vehicle ID: 1, Event Type: end, Timestamp: 181.4778592051455 +Vehicle ID: 1, Event Type: start, Timestamp: 181.48236927536854 +Vehicle ID: 1, Event Type: end, Timestamp: 181.48236927536854 +Vehicle ID: 1, Event Type: start, Timestamp: 181.4877182012895 +Vehicle ID: 1, Event Type: end, Timestamp: 181.4877182012895 +Vehicle ID: 1, Event Type: start, Timestamp: 181.49385496834242 +Vehicle ID: 1, Event Type: end, Timestamp: 181.49385496834242 +Vehicle ID: 1, Event Type: start, Timestamp: 181.4958790278033 +Vehicle ID: 1, Event Type: end, Timestamp: 181.4958790278033 +Vehicle ID: 1, Event Type: start, Timestamp: 181.51415276756347 +Vehicle ID: 1, Event Type: end, Timestamp: 181.51415276756347 +Vehicle ID: 1, Event Type: start, Timestamp: 181.51598680151878 +Vehicle ID: 1, Event Type: end, Timestamp: 181.51598680151878 +Vehicle ID: 1, Event Type: start, Timestamp: 181.5161584941351 +Vehicle ID: 1, Event Type: end, Timestamp: 181.5161584941351 +Vehicle ID: 1, Event Type: start, Timestamp: 181.52614258786556 +Vehicle ID: 1, Event Type: end, Timestamp: 181.52614258786556 +Vehicle ID: 1, Event Type: start, Timestamp: 181.538624568182 +Vehicle ID: 1, Event Type: end, Timestamp: 181.538624568182 +Vehicle ID: 1, Event Type: start, Timestamp: 181.54128287594557 +Vehicle ID: 1, Event Type: end, Timestamp: 181.54128287594557 +Vehicle ID: 1, Event Type: start, Timestamp: 181.5456369296843 +Vehicle ID: 1, Event Type: end, Timestamp: 181.5456369296843 +Vehicle ID: 1, Event Type: start, Timestamp: 181.55093016811912 +Vehicle ID: 1, Event Type: end, Timestamp: 181.55093016811912 +Vehicle ID: 1, Event Type: start, Timestamp: 181.5667558409249 +Vehicle ID: 1, Event Type: end, Timestamp: 181.5667558409249 +Vehicle ID: 1, Event Type: start, Timestamp: 181.58595532830208 +Vehicle ID: 1, Event Type: end, Timestamp: 181.58595532830208 +Vehicle ID: 1, Event Type: start, Timestamp: 181.59468483531006 +Vehicle ID: 1, Event Type: end, Timestamp: 181.59468483531006 +Vehicle ID: 1, Event Type: start, Timestamp: 181.5986984961878 +Vehicle ID: 1, Event Type: end, Timestamp: 181.5986984961878 +Vehicle ID: 1, Event Type: start, Timestamp: 181.62445046252932 +Vehicle ID: 1, Event Type: end, Timestamp: 181.62445046252932 +Vehicle ID: 1, Event Type: start, Timestamp: 181.63025814266047 +Vehicle ID: 1, Event Type: end, Timestamp: 181.63025814266047 +Vehicle ID: 1, Event Type: start, Timestamp: 181.65333433831253 +Vehicle ID: 1, Event Type: end, Timestamp: 181.65333433831253 +Vehicle ID: 1, Event Type: start, Timestamp: 181.66168683099207 +Vehicle ID: 1, Event Type: end, Timestamp: 181.66168683099207 +Vehicle ID: 1, Event Type: start, Timestamp: 181.68900601137156 +Vehicle ID: 1, Event Type: end, Timestamp: 181.68900601137156 +Vehicle ID: 1, Event Type: start, Timestamp: 181.71498060426205 +Vehicle ID: 1, Event Type: end, Timestamp: 181.71498060426205 +Vehicle ID: 1, Event Type: start, Timestamp: 181.72879533722823 +Vehicle ID: 1, Event Type: end, Timestamp: 181.72879533722823 +Vehicle ID: 1, Event Type: start, Timestamp: 181.72879533722823 +Vehicle ID: 1, Event Type: start, Timestamp: 185.29129882554636 +Vehicle ID: 1, Event Type: start, Timestamp: 188.59485466572082 +Vehicle ID: 1, Event Type: start, Timestamp: 191.80573020880337 +Vehicle ID: 1, Event Type: start, Timestamp: 195.13291747740794 +Vehicle ID: 1, Event Type: start, Timestamp: 198.24284585732684 +Vehicle ID: 1, Event Type: start, Timestamp: 201.55826542267945 +Vehicle ID: 1, Event Type: start, Timestamp: 204.7108280792925 +Vehicle ID: 1, Event Type: start, Timestamp: 207.88410895474036 +Vehicle ID: 1, Event Type: start, Timestamp: 211.1677810829238 +Vehicle ID: 1, Event Type: start, Timestamp: 214.5715207546866 +Vehicle ID: 1, Event Type: start, Timestamp: 217.91626088989418 +Vehicle ID: 1, Event Type: start, Timestamp: 221.04263344995655 +Vehicle ID: 1, Event Type: start, Timestamp: 224.21505116322993 +Vehicle ID: 1, Event Type: start, Timestamp: 227.36819152001257 +Vehicle ID: 1, Event Type: start, Timestamp: 230.70225640485077 +Vehicle ID: 1, Event Type: start, Timestamp: 234.11601199480165 +Vehicle ID: 1, Event Type: start, Timestamp: 237.61056837481476 +Vehicle ID: 1, Event Type: start, Timestamp: 241.06790153667876 +Vehicle ID: 1, Event Type: start, Timestamp: 244.35396086087565 +Vehicle ID: 1, Event Type: start, Timestamp: 247.95867513821113 +Vehicle ID: 1, Event Type: start, Timestamp: 251.5119101962305 +Vehicle ID: 1, Event Type: start, Timestamp: 254.85402223008126 +Vehicle ID: 1, Event Type: start, Timestamp: 258.16415048885403 +Vehicle ID: 1, Event Type: start, Timestamp: 261.5390441962418 +Vehicle ID: 1, Event Type: start, Timestamp: 264.8804897947488 +Vehicle ID: 1, Event Type: start, Timestamp: 268.24640170503864 +Vehicle ID: 1, Event Type: start, Timestamp: 271.86665038791364 +Vehicle ID: 1, Event Type: start, Timestamp: 275.2485328102522 +Vehicle ID: 1, Event Type: start, Timestamp: 278.9431925140135 +Vehicle ID: 1, Event Type: start, Timestamp: 282.18591289571526 +Vehicle ID: 1, Event Type: start, Timestamp: 285.6681388676054 +Vehicle ID: 1, Event Type: start, Timestamp: 289.0910656571165 +Vehicle ID: 1, Event Type: start, Timestamp: 292.4311659437903 +Vehicle ID: 1, Event Type: start, Timestamp: 295.8019065637383 +Vehicle ID: 1, Event Type: start, Timestamp: 299.0558331202028 +Vehicle ID: 1, Event Type: start, Timestamp: 302.4233966867631 +Vehicle ID: 1, Event Type: start, Timestamp: 305.7505667231033 +Vehicle ID: 1, Event Type: start, Timestamp: 309.214442293793 +Vehicle ID: 1, Event Type: start, Timestamp: 312.46635540068354 +Vehicle ID: 1, Event Type: start, Timestamp: 318.8739996002414 +Vehicle ID: 1, Event Type: end, Timestamp: 318.8739996002414 +Vehicle ID: 1, Event Type: start, Timestamp: 318.93699270648835 +Vehicle ID: 1, Event Type: end, Timestamp: 318.93699270648835 +Vehicle ID: 1, Event Type: start, Timestamp: 318.9826193820508 +Vehicle ID: 1, Event Type: end, Timestamp: 318.9826193820508 +Vehicle ID: 1, Event Type: start, Timestamp: 318.98943591221996 +Vehicle ID: 1, Event Type: end, Timestamp: 318.98943591221996 +Vehicle ID: 1, Event Type: start, Timestamp: 318.99909750369665 +Vehicle ID: 1, Event Type: end, Timestamp: 318.99909750369665 +Vehicle ID: 1, Event Type: start, Timestamp: 319.0384012754422 +Vehicle ID: 1, Event Type: end, Timestamp: 319.0384012754422 +Vehicle ID: 1, Event Type: start, Timestamp: 319.0507978948935 +Vehicle ID: 1, Event Type: end, Timestamp: 319.0507978948935 +Vehicle ID: 1, Event Type: start, Timestamp: 319.05420490829243 +Vehicle ID: 1, Event Type: end, Timestamp: 319.05420490829243 +Vehicle ID: 1, Event Type: start, Timestamp: 319.05434260093676 +Vehicle ID: 1, Event Type: end, Timestamp: 319.05434260093676 +Vehicle ID: 1, Event Type: start, Timestamp: 319.1217164745406 +Vehicle ID: 1, Event Type: end, Timestamp: 319.1217164745406 +Vehicle ID: 1, Event Type: start, Timestamp: 319.12184394750227 +Vehicle ID: 1, Event Type: end, Timestamp: 319.12184394750227 +Vehicle ID: 1, Event Type: start, Timestamp: 319.1275027870482 +Vehicle ID: 1, Event Type: end, Timestamp: 319.1275027870482 +Vehicle ID: 1, Event Type: start, Timestamp: 319.12983717099536 +Vehicle ID: 1, Event Type: end, Timestamp: 319.12983717099536 +Vehicle ID: 1, Event Type: start, Timestamp: 319.1337781489722 +Vehicle ID: 1, Event Type: end, Timestamp: 319.1337781489722 +Vehicle ID: 1, Event Type: start, Timestamp: 319.1469901387379 +Vehicle ID: 1, Event Type: end, Timestamp: 319.1469901387379 +Vehicle ID: 1, Event Type: start, Timestamp: 319.1485653144551 +Vehicle ID: 1, Event Type: end, Timestamp: 319.1485653144551 +Vehicle ID: 1, Event Type: start, Timestamp: 319.1491789069006 +Vehicle ID: 1, Event Type: end, Timestamp: 319.1491789069006 +Vehicle ID: 1, Event Type: start, Timestamp: 319.1495719690833 +Vehicle ID: 1, Event Type: end, Timestamp: 319.1495719690833 +Vehicle ID: 1, Event Type: start, Timestamp: 319.14963189413845 +Vehicle ID: 1, Event Type: end, Timestamp: 319.14963189413845 +Vehicle ID: 1, Event Type: start, Timestamp: 319.15172451244496 +Vehicle ID: 1, Event Type: end, Timestamp: 319.15172451244496 +Vehicle ID: 1, Event Type: start, Timestamp: 319.1629949895524 +Vehicle ID: 1, Event Type: end, Timestamp: 319.1629949895524 +Vehicle ID: 1, Event Type: start, Timestamp: 319.18207414950905 +Vehicle ID: 1, Event Type: end, Timestamp: 319.18207414950905 +Vehicle ID: 1, Event Type: start, Timestamp: 319.20695888083725 +Vehicle ID: 1, Event Type: end, Timestamp: 319.20695888083725 +Vehicle ID: 1, Event Type: start, Timestamp: 319.2093295884406 +Vehicle ID: 1, Event Type: end, Timestamp: 319.2093295884406 +Vehicle ID: 1, Event Type: start, Timestamp: 319.21813694702246 +Vehicle ID: 1, Event Type: end, Timestamp: 319.21813694702246 +Vehicle ID: 1, Event Type: start, Timestamp: 319.2204444346099 +Vehicle ID: 1, Event Type: end, Timestamp: 319.2204444346099 +Vehicle ID: 1, Event Type: start, Timestamp: 319.2234210815851 +Vehicle ID: 1, Event Type: end, Timestamp: 319.2234210815851 +Vehicle ID: 1, Event Type: start, Timestamp: 319.22762485177896 +Vehicle ID: 1, Event Type: end, Timestamp: 319.22762485177896 +Vehicle ID: 1, Event Type: start, Timestamp: 319.235883924627 +Vehicle ID: 1, Event Type: end, Timestamp: 319.235883924627 +Vehicle ID: 1, Event Type: start, Timestamp: 319.26354612307733 +Vehicle ID: 1, Event Type: end, Timestamp: 319.26354612307733 +Vehicle ID: 1, Event Type: start, Timestamp: 319.2749876785454 +Vehicle ID: 1, Event Type: end, Timestamp: 319.2749876785454 +Vehicle ID: 1, Event Type: start, Timestamp: 319.27809549580036 +Vehicle ID: 1, Event Type: end, Timestamp: 319.27809549580036 +Vehicle ID: 1, Event Type: start, Timestamp: 319.30891171618094 +Vehicle ID: 1, Event Type: end, Timestamp: 319.30891171618094 +Vehicle ID: 1, Event Type: start, Timestamp: 319.34390156118775 +Vehicle ID: 1, Event Type: end, Timestamp: 319.34390156118775 +Vehicle ID: 1, Event Type: start, Timestamp: 319.34570289151446 +Vehicle ID: 1, Event Type: end, Timestamp: 319.34570289151446 +Vehicle ID: 1, Event Type: start, Timestamp: 319.35881462388755 +Vehicle ID: 1, Event Type: end, Timestamp: 319.35881462388755 +Vehicle ID: 1, Event Type: start, Timestamp: 319.3764132856757 +Vehicle ID: 1, Event Type: end, Timestamp: 319.3764132856757 +Vehicle ID: 1, Event Type: start, Timestamp: 319.39401972426026 +Vehicle ID: 1, Event Type: end, Timestamp: 319.39401972426026 +Vehicle ID: 1, Event Type: start, Timestamp: 319.3982648477115 +Vehicle ID: 1, Event Type: end, Timestamp: 319.3982648477115 +Vehicle ID: 1, Event Type: start, Timestamp: 319.45737548394754 +Vehicle ID: 1, Event Type: end, Timestamp: 319.45737548394754 +Vehicle ID: 1, Event Type: start, Timestamp: 319.4921651532813 +Vehicle ID: 1, Event Type: end, Timestamp: 319.4921651532813 +Vehicle ID: 1, Event Type: start, Timestamp: 319.50146906117556 +Vehicle ID: 1, Event Type: end, Timestamp: 319.50146906117556 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5665774061846 +Vehicle ID: 1, Event Type: end, Timestamp: 319.5665774061846 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5665774061846 +Vehicle ID: 1, Event Type: start, Timestamp: 322.9056052436691 +Vehicle ID: 1, Event Type: start, Timestamp: 326.1755521192761 +Vehicle ID: 1, Event Type: start, Timestamp: 329.4632263992744 +Vehicle ID: 1, Event Type: start, Timestamp: 332.68070847585096 +Vehicle ID: 1, Event Type: start, Timestamp: 335.9967149898539 +Vehicle ID: 1, Event Type: start, Timestamp: 339.1729632248725 +Vehicle ID: 1, Event Type: start, Timestamp: 342.3786968381779 +Vehicle ID: 1, Event Type: start, Timestamp: 345.6118488976238 +Vehicle ID: 1, Event Type: start, Timestamp: 348.77749005398687 +Vehicle ID: 1, Event Type: start, Timestamp: 352.06465971330886 +Vehicle ID: 1, Event Type: start, Timestamp: 355.52707089417567 +Vehicle ID: 1, Event Type: start, Timestamp: 358.79793951547305 +Vehicle ID: 1, Event Type: start, Timestamp: 362.22404215508016 +Vehicle ID: 1, Event Type: start, Timestamp: 365.4881702508363 +Vehicle ID: 1, Event Type: start, Timestamp: 368.66241323915074 +Vehicle ID: 1, Event Type: start, Timestamp: 371.9567340068649 +Vehicle ID: 1, Event Type: start, Timestamp: 375.5827168802711 +Vehicle ID: 1, Event Type: start, Timestamp: 378.88286947155297 +Vehicle ID: 1, Event Type: start, Timestamp: 382.01359072091566 +Vehicle ID: 1, Event Type: start, Timestamp: 385.27843401114177 +Vehicle ID: 1, Event Type: start, Timestamp: 388.6932825079174 +Vehicle ID: 1, Event Type: start, Timestamp: 392.3325266709712 +Vehicle ID: 1, Event Type: start, Timestamp: 395.6461437161945 +Vehicle ID: 1, Event Type: start, Timestamp: 398.9307902874804 +Vehicle ID: 1, Event Type: start, Timestamp: 402.2711300807388 +Vehicle ID: 1, Event Type: start, Timestamp: 405.31123975006943 +Vehicle ID: 1, Event Type: start, Timestamp: 408.5937228928409 +Vehicle ID: 1, Event Type: start, Timestamp: 411.8517068908402 +Vehicle ID: 1, Event Type: start, Timestamp: 415.1968210864905 +Vehicle ID: 1, Event Type: start, Timestamp: 418.5595552059048 +Vehicle ID: 1, Event Type: start, Timestamp: 421.96308936306747 +Vehicle ID: 1, Event Type: start, Timestamp: 425.34684233749056 +Vehicle ID: 1, Event Type: start, Timestamp: 428.7178718826112 +Vehicle ID: 1, Event Type: start, Timestamp: 432.1097253373199 +Vehicle ID: 1, Event Type: start, Timestamp: 435.4535478519238 +Vehicle ID: 1, Event Type: start, Timestamp: 438.8766509636364 +Vehicle ID: 1, Event Type: start, Timestamp: 442.342131781185 +Vehicle ID: 1, Event Type: start, Timestamp: 445.77914239656707 +Vehicle ID: 1, Event Type: start, Timestamp: 448.9825534692338 +Vehicle ID: 1, Event Type: start, Timestamp: 455.5935083760501 +Vehicle ID: 1, Event Type: end, Timestamp: 455.5935083760501 +Vehicle ID: 1, Event Type: start, Timestamp: 455.6201845204868 +Vehicle ID: 1, Event Type: end, Timestamp: 455.6201845204868 +Vehicle ID: 1, Event Type: start, Timestamp: 455.6710448429829 +Vehicle ID: 1, Event Type: end, Timestamp: 455.6710448429829 +Vehicle ID: 1, Event Type: start, Timestamp: 455.71584365490673 +Vehicle ID: 1, Event Type: end, Timestamp: 455.71584365490673 +Vehicle ID: 1, Event Type: start, Timestamp: 455.72304711599696 +Vehicle ID: 1, Event Type: end, Timestamp: 455.72304711599696 +Vehicle ID: 1, Event Type: start, Timestamp: 455.7386002824134 +Vehicle ID: 1, Event Type: end, Timestamp: 455.7386002824134 +Vehicle ID: 1, Event Type: start, Timestamp: 455.7410946845584 +Vehicle ID: 1, Event Type: end, Timestamp: 455.7410946845584 +Vehicle ID: 1, Event Type: start, Timestamp: 455.76918328665187 +Vehicle ID: 1, Event Type: end, Timestamp: 455.76918328665187 +Vehicle ID: 1, Event Type: start, Timestamp: 455.7877362679247 +Vehicle ID: 1, Event Type: end, Timestamp: 455.7877362679247 +Vehicle ID: 1, Event Type: start, Timestamp: 455.7912839961487 +Vehicle ID: 1, Event Type: end, Timestamp: 455.7912839961487 +Vehicle ID: 1, Event Type: start, Timestamp: 455.7951227593967 +Vehicle ID: 1, Event Type: end, Timestamp: 455.7951227593967 +Vehicle ID: 1, Event Type: start, Timestamp: 455.82361524748967 +Vehicle ID: 1, Event Type: end, Timestamp: 455.82361524748967 +Vehicle ID: 1, Event Type: start, Timestamp: 455.8257649583366 +Vehicle ID: 1, Event Type: end, Timestamp: 455.8257649583366 +Vehicle ID: 1, Event Type: start, Timestamp: 455.84228499608304 +Vehicle ID: 1, Event Type: end, Timestamp: 455.84228499608304 +Vehicle ID: 1, Event Type: start, Timestamp: 455.84767145438695 +Vehicle ID: 1, Event Type: end, Timestamp: 455.84767145438695 +Vehicle ID: 1, Event Type: start, Timestamp: 455.86578237136786 +Vehicle ID: 1, Event Type: end, Timestamp: 455.86578237136786 +Vehicle ID: 1, Event Type: start, Timestamp: 455.8870387902212 +Vehicle ID: 1, Event Type: end, Timestamp: 455.8870387902212 +Vehicle ID: 1, Event Type: start, Timestamp: 455.8889936327316 +Vehicle ID: 1, Event Type: end, Timestamp: 455.8889936327316 +Vehicle ID: 1, Event Type: start, Timestamp: 455.8993710615559 +Vehicle ID: 1, Event Type: end, Timestamp: 455.8993710615559 +Vehicle ID: 1, Event Type: start, Timestamp: 455.9068742779516 +Vehicle ID: 1, Event Type: end, Timestamp: 455.9068742779516 +Vehicle ID: 1, Event Type: start, Timestamp: 455.91040444103027 +Vehicle ID: 1, Event Type: end, Timestamp: 455.91040444103027 +Vehicle ID: 1, Event Type: start, Timestamp: 455.910467114288 +Vehicle ID: 1, Event Type: end, Timestamp: 455.910467114288 +Vehicle ID: 1, Event Type: start, Timestamp: 455.94020943031353 +Vehicle ID: 1, Event Type: end, Timestamp: 455.94020943031353 +Vehicle ID: 1, Event Type: start, Timestamp: 455.9544088263976 +Vehicle ID: 1, Event Type: end, Timestamp: 455.9544088263976 +Vehicle ID: 1, Event Type: start, Timestamp: 455.9620472198123 +Vehicle ID: 1, Event Type: end, Timestamp: 455.9620472198123 +Vehicle ID: 1, Event Type: start, Timestamp: 455.96522068789085 +Vehicle ID: 1, Event Type: end, Timestamp: 455.96522068789085 +Vehicle ID: 1, Event Type: start, Timestamp: 455.9754971135885 +Vehicle ID: 1, Event Type: end, Timestamp: 455.9754971135885 +Vehicle ID: 1, Event Type: start, Timestamp: 455.9825210891616 +Vehicle ID: 1, Event Type: end, Timestamp: 455.9825210891616 +Vehicle ID: 1, Event Type: start, Timestamp: 455.99132724206964 +Vehicle ID: 1, Event Type: end, Timestamp: 455.99132724206964 +Vehicle ID: 1, Event Type: start, Timestamp: 456.0025517607751 +Vehicle ID: 1, Event Type: end, Timestamp: 456.0025517607751 +Vehicle ID: 1, Event Type: start, Timestamp: 456.00874052479617 +Vehicle ID: 1, Event Type: end, Timestamp: 456.00874052479617 +Vehicle ID: 1, Event Type: start, Timestamp: 456.01852998445855 +Vehicle ID: 1, Event Type: end, Timestamp: 456.01852998445855 +Vehicle ID: 1, Event Type: start, Timestamp: 456.02203586066327 +Vehicle ID: 1, Event Type: end, Timestamp: 456.02203586066327 +Vehicle ID: 1, Event Type: start, Timestamp: 456.0233424433646 +Vehicle ID: 1, Event Type: end, Timestamp: 456.0233424433646 +Vehicle ID: 1, Event Type: start, Timestamp: 456.0549417505769 +Vehicle ID: 1, Event Type: end, Timestamp: 456.0549417505769 +Vehicle ID: 1, Event Type: start, Timestamp: 456.0657118548089 +Vehicle ID: 1, Event Type: end, Timestamp: 456.0657118548089 +Vehicle ID: 1, Event Type: start, Timestamp: 456.06663525284443 +Vehicle ID: 1, Event Type: end, Timestamp: 456.06663525284443 +Vehicle ID: 1, Event Type: start, Timestamp: 456.0889000380974 +Vehicle ID: 1, Event Type: end, Timestamp: 456.0889000380974 +Vehicle ID: 1, Event Type: start, Timestamp: 456.09020777589217 +Vehicle ID: 1, Event Type: end, Timestamp: 456.09020777589217 +Vehicle ID: 1, Event Type: start, Timestamp: 456.09542709138907 +Vehicle ID: 1, Event Type: end, Timestamp: 456.09542709138907 +Vehicle ID: 1, Event Type: start, Timestamp: 456.14600852000893 +Vehicle ID: 1, Event Type: end, Timestamp: 456.14600852000893 +Vehicle ID: 1, Event Type: start, Timestamp: 456.1488599168504 +Vehicle ID: 1, Event Type: end, Timestamp: 456.1488599168504 +Vehicle ID: 1, Event Type: start, Timestamp: 456.1602464891671 +Vehicle ID: 1, Event Type: end, Timestamp: 456.1602464891671 +Vehicle ID: 1, Event Type: start, Timestamp: 456.1602464891671 +Vehicle ID: 1, Event Type: start, Timestamp: 459.61889167955337 +Vehicle ID: 1, Event Type: start, Timestamp: 462.9004809637168 +Vehicle ID: 1, Event Type: start, Timestamp: 466.26184064111095 +Vehicle ID: 1, Event Type: start, Timestamp: 469.6390484044097 +Vehicle ID: 1, Event Type: start, Timestamp: 472.81367528407833 +Vehicle ID: 1, Event Type: start, Timestamp: 476.00082075057685 +Vehicle ID: 1, Event Type: start, Timestamp: 479.16712600511926 +Vehicle ID: 1, Event Type: start, Timestamp: 482.6540710239851 +Vehicle ID: 1, Event Type: start, Timestamp: 485.9528882192979 +Vehicle ID: 1, Event Type: start, Timestamp: 489.58526662958826 +Vehicle ID: 1, Event Type: start, Timestamp: 492.92690396352316 +Vehicle ID: 1, Event Type: start, Timestamp: 496.3627266651369 +Vehicle ID: 1, Event Type: start, Timestamp: 499.6510367878425 +Vehicle ID: 1, Event Type: start, Timestamp: 502.77925288337923 +Vehicle ID: 1, Event Type: start, Timestamp: 505.9160720933218 +Vehicle ID: 1, Event Type: start, Timestamp: 508.7819332471204 +Vehicle ID: 1, Event Type: start, Timestamp: 512.0387921871225 +Vehicle ID: 1, Event Type: start, Timestamp: 515.2565179403902 +Vehicle ID: 1, Event Type: start, Timestamp: 518.675956598496 +Vehicle ID: 1, Event Type: start, Timestamp: 522.2379981564414 +Vehicle ID: 1, Event Type: start, Timestamp: 525.6840265353432 +Vehicle ID: 1, Event Type: start, Timestamp: 528.865984284031 +Vehicle ID: 1, Event Type: start, Timestamp: 532.1418896176576 +Vehicle ID: 1, Event Type: start, Timestamp: 535.5160158165572 +Vehicle ID: 1, Event Type: start, Timestamp: 538.9470301537358 +Vehicle ID: 1, Event Type: start, Timestamp: 542.2493829970781 +Vehicle ID: 1, Event Type: start, Timestamp: 545.4964644106634 +Vehicle ID: 1, Event Type: start, Timestamp: 548.8951288488275 +Vehicle ID: 1, Event Type: start, Timestamp: 552.3782446634823 +Vehicle ID: 1, Event Type: start, Timestamp: 555.8794778462774 +Vehicle ID: 1, Event Type: start, Timestamp: 559.4831322968522 +Vehicle ID: 1, Event Type: start, Timestamp: 562.6983834426575 +Vehicle ID: 1, Event Type: start, Timestamp: 565.9256861253552 +Vehicle ID: 1, Event Type: start, Timestamp: 569.5341764572795 +Vehicle ID: 1, Event Type: start, Timestamp: 573.0508043945478 +Vehicle ID: 1, Event Type: start, Timestamp: 576.3702147096086 +Vehicle ID: 1, Event Type: start, Timestamp: 579.5371484936994 +Vehicle ID: 1, Event Type: start, Timestamp: 582.7346940174698 +Vehicle ID: 1, Event Type: start, Timestamp: 586.063429054447 +Vehicle ID: 1, Event Type: start, Timestamp: 592.8712589457842 +Vehicle ID: 1, Event Type: end, Timestamp: 592.8712589457842 +Vehicle ID: 1, Event Type: start, Timestamp: 592.8736394625226 +Vehicle ID: 1, Event Type: end, Timestamp: 592.8736394625226 +Vehicle ID: 1, Event Type: start, Timestamp: 592.9353394800434 +Vehicle ID: 1, Event Type: end, Timestamp: 592.9353394800434 +Vehicle ID: 1, Event Type: start, Timestamp: 592.9990873748666 +Vehicle ID: 1, Event Type: end, Timestamp: 592.9990873748666 +Vehicle ID: 1, Event Type: start, Timestamp: 593.0084923381397 +Vehicle ID: 1, Event Type: end, Timestamp: 593.0084923381397 +Vehicle ID: 1, Event Type: start, Timestamp: 593.0102127824845 +Vehicle ID: 1, Event Type: end, Timestamp: 593.0102127824845 +Vehicle ID: 1, Event Type: start, Timestamp: 593.0470636790612 +Vehicle ID: 1, Event Type: end, Timestamp: 593.0470636790612 +Vehicle ID: 1, Event Type: start, Timestamp: 593.0644152774131 +Vehicle ID: 1, Event Type: end, Timestamp: 593.0644152774131 +Vehicle ID: 1, Event Type: start, Timestamp: 593.0792548035583 +Vehicle ID: 1, Event Type: end, Timestamp: 593.0792548035583 +Vehicle ID: 1, Event Type: start, Timestamp: 593.0926409182558 +Vehicle ID: 1, Event Type: end, Timestamp: 593.0926409182558 +Vehicle ID: 1, Event Type: start, Timestamp: 593.0935355802025 +Vehicle ID: 1, Event Type: end, Timestamp: 593.0935355802025 +Vehicle ID: 1, Event Type: start, Timestamp: 593.0956029261455 +Vehicle ID: 1, Event Type: end, Timestamp: 593.0956029261455 +Vehicle ID: 1, Event Type: start, Timestamp: 593.1157171448485 +Vehicle ID: 1, Event Type: end, Timestamp: 593.1157171448485 +Vehicle ID: 1, Event Type: start, Timestamp: 593.1215881462938 +Vehicle ID: 1, Event Type: end, Timestamp: 593.1215881462938 +Vehicle ID: 1, Event Type: start, Timestamp: 593.1299989406497 +Vehicle ID: 1, Event Type: end, Timestamp: 593.1299989406497 +Vehicle ID: 1, Event Type: start, Timestamp: 593.1335953329997 +Vehicle ID: 1, Event Type: end, Timestamp: 593.1335953329997 +Vehicle ID: 1, Event Type: start, Timestamp: 593.1508111348357 +Vehicle ID: 1, Event Type: end, Timestamp: 593.1508111348357 +Vehicle ID: 1, Event Type: start, Timestamp: 593.1605126595892 +Vehicle ID: 1, Event Type: end, Timestamp: 593.1605126595892 +Vehicle ID: 1, Event Type: start, Timestamp: 593.1644551070243 +Vehicle ID: 1, Event Type: end, Timestamp: 593.1644551070243 +Vehicle ID: 1, Event Type: start, Timestamp: 593.1662781210566 +Vehicle ID: 1, Event Type: end, Timestamp: 593.1662781210566 +Vehicle ID: 1, Event Type: start, Timestamp: 593.1747072979475 +Vehicle ID: 1, Event Type: end, Timestamp: 593.1747072979475 +Vehicle ID: 1, Event Type: start, Timestamp: 593.183167935771 +Vehicle ID: 1, Event Type: end, Timestamp: 593.183167935771 +Vehicle ID: 1, Event Type: start, Timestamp: 593.1855667067207 +Vehicle ID: 1, Event Type: end, Timestamp: 593.1855667067207 +Vehicle ID: 1, Event Type: start, Timestamp: 593.1882790691369 +Vehicle ID: 1, Event Type: end, Timestamp: 593.1882790691369 +Vehicle ID: 1, Event Type: start, Timestamp: 593.1948435437765 +Vehicle ID: 1, Event Type: end, Timestamp: 593.1948435437765 +Vehicle ID: 1, Event Type: start, Timestamp: 593.196445260608 +Vehicle ID: 1, Event Type: end, Timestamp: 593.196445260608 +Vehicle ID: 1, Event Type: start, Timestamp: 593.2035779294546 +Vehicle ID: 1, Event Type: end, Timestamp: 593.2035779294546 +Vehicle ID: 1, Event Type: start, Timestamp: 593.210942339435 +Vehicle ID: 1, Event Type: end, Timestamp: 593.210942339435 +Vehicle ID: 1, Event Type: start, Timestamp: 593.2188450241665 +Vehicle ID: 1, Event Type: end, Timestamp: 593.2188450241665 +Vehicle ID: 1, Event Type: start, Timestamp: 593.2399428482207 +Vehicle ID: 1, Event Type: end, Timestamp: 593.2399428482207 +Vehicle ID: 1, Event Type: start, Timestamp: 593.2456079453012 +Vehicle ID: 1, Event Type: end, Timestamp: 593.2456079453012 +Vehicle ID: 1, Event Type: start, Timestamp: 593.2785426389594 +Vehicle ID: 1, Event Type: end, Timestamp: 593.2785426389594 +Vehicle ID: 1, Event Type: start, Timestamp: 593.2786926669811 +Vehicle ID: 1, Event Type: end, Timestamp: 593.2786926669811 +Vehicle ID: 1, Event Type: start, Timestamp: 593.2803746846186 +Vehicle ID: 1, Event Type: end, Timestamp: 593.2803746846186 +Vehicle ID: 1, Event Type: start, Timestamp: 593.2953886900244 +Vehicle ID: 1, Event Type: end, Timestamp: 593.2953886900244 +Vehicle ID: 1, Event Type: start, Timestamp: 593.3246135919338 +Vehicle ID: 1, Event Type: end, Timestamp: 593.3246135919338 +Vehicle ID: 1, Event Type: start, Timestamp: 593.3327265420006 +Vehicle ID: 1, Event Type: end, Timestamp: 593.3327265420006 +Vehicle ID: 1, Event Type: start, Timestamp: 593.3827099347502 +Vehicle ID: 1, Event Type: end, Timestamp: 593.3827099347502 +Vehicle ID: 1, Event Type: start, Timestamp: 593.3956360099141 +Vehicle ID: 1, Event Type: end, Timestamp: 593.3956360099141 +Vehicle ID: 1, Event Type: start, Timestamp: 593.4025449697273 +Vehicle ID: 1, Event Type: end, Timestamp: 593.4025449697273 +Vehicle ID: 1, Event Type: start, Timestamp: 593.4114470403027 +Vehicle ID: 1, Event Type: end, Timestamp: 593.4114470403027 +Vehicle ID: 1, Event Type: start, Timestamp: 593.4508617986019 +Vehicle ID: 1, Event Type: end, Timestamp: 593.4508617986019 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5694365167931 +Vehicle ID: 1, Event Type: end, Timestamp: 593.5694365167931 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5694365167931 +Vehicle ID: 1, Event Type: start, Timestamp: 596.8566631949872 +Vehicle ID: 1, Event Type: start, Timestamp: 600.3048678321833 +Vehicle ID: 1, Event Type: start, Timestamp: 603.6891587255993 +Vehicle ID: 1, Event Type: start, Timestamp: 607.3415232376351 +Vehicle ID: 1, Event Type: start, Timestamp: 610.5592719442832 +Vehicle ID: 1, Event Type: start, Timestamp: 613.9318785077891 +Vehicle ID: 1, Event Type: start, Timestamp: 617.1089235580798 +Vehicle ID: 1, Event Type: start, Timestamp: 620.5216629061208 +Vehicle ID: 1, Event Type: start, Timestamp: 623.9358622066392 +Vehicle ID: 1, Event Type: start, Timestamp: 627.2976317876336 +Vehicle ID: 1, Event Type: start, Timestamp: 630.7400460479582 +Vehicle ID: 1, Event Type: start, Timestamp: 633.9887811429711 +Vehicle ID: 1, Event Type: start, Timestamp: 637.2847679319517 +Vehicle ID: 1, Event Type: start, Timestamp: 640.3921009266685 +Vehicle ID: 1, Event Type: start, Timestamp: 643.750711700144 +Vehicle ID: 1, Event Type: start, Timestamp: 647.0833509288424 +Vehicle ID: 1, Event Type: start, Timestamp: 650.1943298197803 +Vehicle ID: 1, Event Type: start, Timestamp: 653.0613859495561 +Vehicle ID: 1, Event Type: start, Timestamp: 656.5825443985923 +Vehicle ID: 1, Event Type: start, Timestamp: 660.1324437146112 +Vehicle ID: 1, Event Type: start, Timestamp: 663.427492949761 +Vehicle ID: 1, Event Type: start, Timestamp: 666.3850617117513 +Vehicle ID: 1, Event Type: start, Timestamp: 669.6640085804347 +Vehicle ID: 1, Event Type: start, Timestamp: 673.2186902950277 +Vehicle ID: 1, Event Type: start, Timestamp: 676.365400716888 +Vehicle ID: 1, Event Type: start, Timestamp: 679.9198689421906 +Vehicle ID: 1, Event Type: start, Timestamp: 683.1060452108435 +Vehicle ID: 1, Event Type: start, Timestamp: 686.4666382090737 +Vehicle ID: 1, Event Type: start, Timestamp: 690.0901181398291 +Vehicle ID: 1, Event Type: start, Timestamp: 693.3975559381556 +Vehicle ID: 1, Event Type: start, Timestamp: 696.6509971692531 +Vehicle ID: 1, Event Type: start, Timestamp: 700.3468637256792 +Vehicle ID: 1, Event Type: start, Timestamp: 704.0099113048524 +Vehicle ID: 1, Event Type: start, Timestamp: 707.5712667950886 +Vehicle ID: 1, Event Type: start, Timestamp: 710.955147861355 +Vehicle ID: 1, Event Type: start, Timestamp: 714.2303039147598 +Vehicle ID: 1, Event Type: start, Timestamp: 717.5979987610136 +Vehicle ID: 1, Event Type: start, Timestamp: 721.0742048051991 +Vehicle ID: 1, Event Type: start, Timestamp: 724.3984356817977 +Vehicle ID: 1, Event Type: start, Timestamp: 731.3206304261964 +Vehicle ID: 1, Event Type: end, Timestamp: 731.3206304261964 +Vehicle ID: 1, Event Type: start, Timestamp: 731.3901405098518 +Vehicle ID: 1, Event Type: end, Timestamp: 731.3901405098518 +Vehicle ID: 1, Event Type: start, Timestamp: 731.4065995998343 +Vehicle ID: 1, Event Type: end, Timestamp: 731.4065995998343 +Vehicle ID: 1, Event Type: start, Timestamp: 731.4242422682981 +Vehicle ID: 1, Event Type: end, Timestamp: 731.4242422682981 +Vehicle ID: 1, Event Type: start, Timestamp: 731.4286287171702 +Vehicle ID: 1, Event Type: end, Timestamp: 731.4286287171702 +Vehicle ID: 1, Event Type: start, Timestamp: 731.4489301078631 +Vehicle ID: 1, Event Type: end, Timestamp: 731.4489301078631 +Vehicle ID: 1, Event Type: start, Timestamp: 731.4581125439915 +Vehicle ID: 1, Event Type: end, Timestamp: 731.4581125439915 +Vehicle ID: 1, Event Type: start, Timestamp: 731.4897136714553 +Vehicle ID: 1, Event Type: end, Timestamp: 731.4897136714553 +Vehicle ID: 1, Event Type: start, Timestamp: 731.4906479809027 +Vehicle ID: 1, Event Type: end, Timestamp: 731.4906479809027 +Vehicle ID: 1, Event Type: start, Timestamp: 731.5016164662845 +Vehicle ID: 1, Event Type: end, Timestamp: 731.5016164662845 +Vehicle ID: 1, Event Type: start, Timestamp: 731.5065768092377 +Vehicle ID: 1, Event Type: end, Timestamp: 731.5065768092377 +Vehicle ID: 1, Event Type: start, Timestamp: 731.5114019934808 +Vehicle ID: 1, Event Type: end, Timestamp: 731.5114019934808 +Vehicle ID: 1, Event Type: start, Timestamp: 731.536995935097 +Vehicle ID: 1, Event Type: end, Timestamp: 731.536995935097 +Vehicle ID: 1, Event Type: start, Timestamp: 731.537616606379 +Vehicle ID: 1, Event Type: end, Timestamp: 731.537616606379 +Vehicle ID: 1, Event Type: start, Timestamp: 731.5425583581189 +Vehicle ID: 1, Event Type: end, Timestamp: 731.5425583581189 +Vehicle ID: 1, Event Type: start, Timestamp: 731.5641475354201 +Vehicle ID: 1, Event Type: end, Timestamp: 731.5641475354201 +Vehicle ID: 1, Event Type: start, Timestamp: 731.578917550465 +Vehicle ID: 1, Event Type: end, Timestamp: 731.578917550465 +Vehicle ID: 1, Event Type: start, Timestamp: 731.5900771757236 +Vehicle ID: 1, Event Type: end, Timestamp: 731.5900771757236 +Vehicle ID: 1, Event Type: start, Timestamp: 731.5928135091498 +Vehicle ID: 1, Event Type: end, Timestamp: 731.5928135091498 +Vehicle ID: 1, Event Type: start, Timestamp: 731.6081356013473 +Vehicle ID: 1, Event Type: end, Timestamp: 731.6081356013473 +Vehicle ID: 1, Event Type: start, Timestamp: 731.609522750243 +Vehicle ID: 1, Event Type: end, Timestamp: 731.609522750243 +Vehicle ID: 1, Event Type: start, Timestamp: 731.6138195504301 +Vehicle ID: 1, Event Type: end, Timestamp: 731.6138195504301 +Vehicle ID: 1, Event Type: start, Timestamp: 731.6328813499337 +Vehicle ID: 1, Event Type: end, Timestamp: 731.6328813499337 +Vehicle ID: 1, Event Type: start, Timestamp: 731.6346541937324 +Vehicle ID: 1, Event Type: end, Timestamp: 731.6346541937324 +Vehicle ID: 1, Event Type: start, Timestamp: 731.6390831380916 +Vehicle ID: 1, Event Type: end, Timestamp: 731.6390831380916 +Vehicle ID: 1, Event Type: start, Timestamp: 731.6502242707688 +Vehicle ID: 1, Event Type: end, Timestamp: 731.6502242707688 +Vehicle ID: 1, Event Type: start, Timestamp: 731.6527744962549 +Vehicle ID: 1, Event Type: end, Timestamp: 731.6527744962549 +Vehicle ID: 1, Event Type: start, Timestamp: 731.6602002563619 +Vehicle ID: 1, Event Type: end, Timestamp: 731.6602002563619 +Vehicle ID: 1, Event Type: start, Timestamp: 731.6669168851707 +Vehicle ID: 1, Event Type: end, Timestamp: 731.6669168851707 +Vehicle ID: 1, Event Type: start, Timestamp: 731.6823718886171 +Vehicle ID: 1, Event Type: end, Timestamp: 731.6823718886171 +Vehicle ID: 1, Event Type: start, Timestamp: 731.6881690564146 +Vehicle ID: 1, Event Type: end, Timestamp: 731.6881690564146 +Vehicle ID: 1, Event Type: start, Timestamp: 731.6935681565534 +Vehicle ID: 1, Event Type: end, Timestamp: 731.6935681565534 +Vehicle ID: 1, Event Type: start, Timestamp: 731.714647127386 +Vehicle ID: 1, Event Type: end, Timestamp: 731.714647127386 +Vehicle ID: 1, Event Type: start, Timestamp: 731.7356573736939 +Vehicle ID: 1, Event Type: end, Timestamp: 731.7356573736939 +Vehicle ID: 1, Event Type: start, Timestamp: 731.7398249039643 +Vehicle ID: 1, Event Type: end, Timestamp: 731.7398249039643 +Vehicle ID: 1, Event Type: start, Timestamp: 731.7429937451773 +Vehicle ID: 1, Event Type: end, Timestamp: 731.7429937451773 +Vehicle ID: 1, Event Type: start, Timestamp: 731.7523512720833 +Vehicle ID: 1, Event Type: end, Timestamp: 731.7523512720833 +Vehicle ID: 1, Event Type: start, Timestamp: 731.7611068709917 +Vehicle ID: 1, Event Type: end, Timestamp: 731.7611068709917 +Vehicle ID: 1, Event Type: start, Timestamp: 731.8316016379678 +Vehicle ID: 1, Event Type: end, Timestamp: 731.8316016379678 +Vehicle ID: 1, Event Type: start, Timestamp: 731.8428312427201 +Vehicle ID: 1, Event Type: end, Timestamp: 731.8428312427201 +Vehicle ID: 1, Event Type: start, Timestamp: 731.8637394255231 +Vehicle ID: 1, Event Type: end, Timestamp: 731.8637394255231 +Vehicle ID: 1, Event Type: start, Timestamp: 731.8665432571692 +Vehicle ID: 1, Event Type: end, Timestamp: 731.8665432571692 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9282189869436 +Vehicle ID: 1, Event Type: end, Timestamp: 731.9282189869436 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9282189869436 +Vehicle ID: 1, Event Type: start, Timestamp: 735.0998240118083 +Vehicle ID: 1, Event Type: start, Timestamp: 738.4200650043528 +Vehicle ID: 1, Event Type: start, Timestamp: 741.7714153627434 +Vehicle ID: 1, Event Type: start, Timestamp: 744.9431648184395 +Vehicle ID: 1, Event Type: start, Timestamp: 748.1744664633577 +Vehicle ID: 1, Event Type: start, Timestamp: 751.4804210321458 +Vehicle ID: 1, Event Type: start, Timestamp: 754.6170104579793 +Vehicle ID: 1, Event Type: start, Timestamp: 757.9256066746174 +Vehicle ID: 1, Event Type: start, Timestamp: 761.0037246413184 +Vehicle ID: 1, Event Type: start, Timestamp: 764.3937669506637 +Vehicle ID: 1, Event Type: start, Timestamp: 767.415308698361 +Vehicle ID: 1, Event Type: start, Timestamp: 771.0054513767005 +Vehicle ID: 1, Event Type: start, Timestamp: 774.4930931392231 +Vehicle ID: 1, Event Type: start, Timestamp: 777.8231656609788 +Vehicle ID: 1, Event Type: start, Timestamp: 780.7548049105734 +Vehicle ID: 1, Event Type: start, Timestamp: 784.1005281694593 +Vehicle ID: 1, Event Type: start, Timestamp: 787.4036638545809 +Vehicle ID: 1, Event Type: start, Timestamp: 790.8876897885818 +Vehicle ID: 1, Event Type: start, Timestamp: 794.4061550502396 +Vehicle ID: 1, Event Type: start, Timestamp: 797.5961471597427 +Vehicle ID: 1, Event Type: start, Timestamp: 801.0778394209822 +Vehicle ID: 1, Event Type: start, Timestamp: 804.163862230896 +Vehicle ID: 1, Event Type: start, Timestamp: 807.400555857566 +Vehicle ID: 1, Event Type: start, Timestamp: 810.9109987154833 +Vehicle ID: 1, Event Type: start, Timestamp: 814.2606653140075 +Vehicle ID: 1, Event Type: start, Timestamp: 817.3821130478354 +Vehicle ID: 1, Event Type: start, Timestamp: 820.611877609904 +Vehicle ID: 1, Event Type: start, Timestamp: 823.9685152861481 +Vehicle ID: 1, Event Type: start, Timestamp: 826.9623706146219 +Vehicle ID: 1, Event Type: start, Timestamp: 830.536412612745 +Vehicle ID: 1, Event Type: start, Timestamp: 833.8393469793829 +Vehicle ID: 1, Event Type: start, Timestamp: 837.3243445219885 +Vehicle ID: 1, Event Type: start, Timestamp: 840.5876010334862 +Vehicle ID: 1, Event Type: start, Timestamp: 843.7248773629605 +Vehicle ID: 1, Event Type: start, Timestamp: 847.0821344498537 +Vehicle ID: 1, Event Type: start, Timestamp: 850.443031418547 +Vehicle ID: 1, Event Type: start, Timestamp: 853.8416642711171 +Vehicle ID: 1, Event Type: start, Timestamp: 857.2674921126277 +Vehicle ID: 1, Event Type: start, Timestamp: 860.6510398619366 +Vehicle ID: 1, Event Type: start, Timestamp: 867.1716320897814 +Vehicle ID: 1, Event Type: end, Timestamp: 867.1716320897814 +Vehicle ID: 1, Event Type: start, Timestamp: 867.1999179923602 +Vehicle ID: 1, Event Type: end, Timestamp: 867.1999179923602 +Vehicle ID: 1, Event Type: start, Timestamp: 867.2182623528773 +Vehicle ID: 1, Event Type: end, Timestamp: 867.2182623528773 +Vehicle ID: 1, Event Type: start, Timestamp: 867.2221629321745 +Vehicle ID: 1, Event Type: end, Timestamp: 867.2221629321745 +Vehicle ID: 1, Event Type: start, Timestamp: 867.2484489022142 +Vehicle ID: 1, Event Type: end, Timestamp: 867.2484489022142 +Vehicle ID: 1, Event Type: start, Timestamp: 867.2629491496681 +Vehicle ID: 1, Event Type: end, Timestamp: 867.2629491496681 +Vehicle ID: 1, Event Type: start, Timestamp: 867.2635961927557 +Vehicle ID: 1, Event Type: end, Timestamp: 867.2635961927557 +Vehicle ID: 1, Event Type: start, Timestamp: 867.2991597652493 +Vehicle ID: 1, Event Type: end, Timestamp: 867.2991597652493 +Vehicle ID: 1, Event Type: start, Timestamp: 867.3138306533378 +Vehicle ID: 1, Event Type: end, Timestamp: 867.3138306533378 +Vehicle ID: 1, Event Type: start, Timestamp: 867.3208365469783 +Vehicle ID: 1, Event Type: end, Timestamp: 867.3208365469783 +Vehicle ID: 1, Event Type: start, Timestamp: 867.3252378046411 +Vehicle ID: 1, Event Type: end, Timestamp: 867.3252378046411 +Vehicle ID: 1, Event Type: start, Timestamp: 867.3314186434645 +Vehicle ID: 1, Event Type: end, Timestamp: 867.3314186434645 +Vehicle ID: 1, Event Type: start, Timestamp: 867.3351356067049 +Vehicle ID: 1, Event Type: end, Timestamp: 867.3351356067049 +Vehicle ID: 1, Event Type: start, Timestamp: 867.3372192107514 +Vehicle ID: 1, Event Type: end, Timestamp: 867.3372192107514 +Vehicle ID: 1, Event Type: start, Timestamp: 867.3373615100093 +Vehicle ID: 1, Event Type: end, Timestamp: 867.3373615100093 +Vehicle ID: 1, Event Type: start, Timestamp: 867.337926274468 +Vehicle ID: 1, Event Type: end, Timestamp: 867.337926274468 +Vehicle ID: 1, Event Type: start, Timestamp: 867.3418609183678 +Vehicle ID: 1, Event Type: end, Timestamp: 867.3418609183678 +Vehicle ID: 1, Event Type: start, Timestamp: 867.3435304703618 +Vehicle ID: 1, Event Type: end, Timestamp: 867.3435304703618 +Vehicle ID: 1, Event Type: start, Timestamp: 867.3575063743522 +Vehicle ID: 1, Event Type: end, Timestamp: 867.3575063743522 +Vehicle ID: 1, Event Type: start, Timestamp: 867.3696670682606 +Vehicle ID: 1, Event Type: end, Timestamp: 867.3696670682606 +Vehicle ID: 1, Event Type: start, Timestamp: 867.4022318850584 +Vehicle ID: 1, Event Type: end, Timestamp: 867.4022318850584 +Vehicle ID: 1, Event Type: start, Timestamp: 867.4022645906267 +Vehicle ID: 1, Event Type: end, Timestamp: 867.4022645906267 +Vehicle ID: 1, Event Type: start, Timestamp: 867.4023499446764 +Vehicle ID: 1, Event Type: end, Timestamp: 867.4023499446764 +Vehicle ID: 1, Event Type: start, Timestamp: 867.4030855052404 +Vehicle ID: 1, Event Type: end, Timestamp: 867.4030855052404 +Vehicle ID: 1, Event Type: start, Timestamp: 867.404601409143 +Vehicle ID: 1, Event Type: end, Timestamp: 867.404601409143 +Vehicle ID: 1, Event Type: start, Timestamp: 867.4161542614968 +Vehicle ID: 1, Event Type: end, Timestamp: 867.4161542614968 +Vehicle ID: 1, Event Type: start, Timestamp: 867.4419518297669 +Vehicle ID: 1, Event Type: end, Timestamp: 867.4419518297669 +Vehicle ID: 1, Event Type: start, Timestamp: 867.4443828058725 +Vehicle ID: 1, Event Type: end, Timestamp: 867.4443828058725 +Vehicle ID: 1, Event Type: start, Timestamp: 867.4513101495864 +Vehicle ID: 1, Event Type: end, Timestamp: 867.4513101495864 +Vehicle ID: 1, Event Type: start, Timestamp: 867.4522172898382 +Vehicle ID: 1, Event Type: end, Timestamp: 867.4522172898382 +Vehicle ID: 1, Event Type: start, Timestamp: 867.4572242409181 +Vehicle ID: 1, Event Type: end, Timestamp: 867.4572242409181 +Vehicle ID: 1, Event Type: start, Timestamp: 867.4770465455317 +Vehicle ID: 1, Event Type: end, Timestamp: 867.4770465455317 +Vehicle ID: 1, Event Type: start, Timestamp: 867.4792810708922 +Vehicle ID: 1, Event Type: end, Timestamp: 867.4792810708922 +Vehicle ID: 1, Event Type: start, Timestamp: 867.4909550291154 +Vehicle ID: 1, Event Type: end, Timestamp: 867.4909550291154 +Vehicle ID: 1, Event Type: start, Timestamp: 867.4985611840108 +Vehicle ID: 1, Event Type: end, Timestamp: 867.4985611840108 +Vehicle ID: 1, Event Type: start, Timestamp: 867.5068929947007 +Vehicle ID: 1, Event Type: end, Timestamp: 867.5068929947007 +Vehicle ID: 1, Event Type: start, Timestamp: 867.575410130665 +Vehicle ID: 1, Event Type: end, Timestamp: 867.575410130665 +Vehicle ID: 1, Event Type: start, Timestamp: 867.589805181599 +Vehicle ID: 1, Event Type: end, Timestamp: 867.589805181599 +Vehicle ID: 1, Event Type: start, Timestamp: 867.6030546230812 +Vehicle ID: 1, Event Type: end, Timestamp: 867.6030546230812 +Vehicle ID: 1, Event Type: start, Timestamp: 867.6053177439076 +Vehicle ID: 1, Event Type: end, Timestamp: 867.6053177439076 +Vehicle ID: 1, Event Type: start, Timestamp: 867.6739003818442 +Vehicle ID: 1, Event Type: end, Timestamp: 867.6739003818442 +Vehicle ID: 1, Event Type: start, Timestamp: 867.729353440657 +Vehicle ID: 1, Event Type: end, Timestamp: 867.729353440657 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7852778925983 +Vehicle ID: 1, Event Type: end, Timestamp: 867.7852778925983 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7852778925983 +Vehicle ID: 1, Event Type: start, Timestamp: 871.10637488083 +Vehicle ID: 1, Event Type: start, Timestamp: 874.6363099157693 +Vehicle ID: 1, Event Type: start, Timestamp: 877.8931156448092 +Vehicle ID: 1, Event Type: start, Timestamp: 881.3667615979431 +Vehicle ID: 1, Event Type: start, Timestamp: 884.6109525178277 +Vehicle ID: 1, Event Type: start, Timestamp: 887.9950157583431 +Vehicle ID: 1, Event Type: start, Timestamp: 891.492104860857 +Vehicle ID: 1, Event Type: start, Timestamp: 894.8614889084625 +Vehicle ID: 1, Event Type: start, Timestamp: 897.8669104087612 +Vehicle ID: 1, Event Type: start, Timestamp: 901.2163102370761 +Vehicle ID: 1, Event Type: start, Timestamp: 904.6715329841122 +Vehicle ID: 1, Event Type: start, Timestamp: 908.1193067949022 +Vehicle ID: 1, Event Type: start, Timestamp: 911.5355773772571 +Vehicle ID: 1, Event Type: start, Timestamp: 915.0648140553403 +Vehicle ID: 1, Event Type: start, Timestamp: 918.6396108179817 +Vehicle ID: 1, Event Type: start, Timestamp: 921.7810643248281 +Vehicle ID: 1, Event Type: start, Timestamp: 925.1340829475373 +Vehicle ID: 1, Event Type: start, Timestamp: 928.4840861548284 +Vehicle ID: 1, Event Type: start, Timestamp: 931.8289424449658 +Vehicle ID: 1, Event Type: start, Timestamp: 935.3783607839331 +Vehicle ID: 1, Event Type: start, Timestamp: 938.742568567247 +Vehicle ID: 1, Event Type: start, Timestamp: 942.2668656372604 +Vehicle ID: 1, Event Type: start, Timestamp: 945.4775330625824 +Vehicle ID: 1, Event Type: start, Timestamp: 948.857120542477 +Vehicle ID: 1, Event Type: start, Timestamp: 952.2416064738462 +Vehicle ID: 1, Event Type: start, Timestamp: 955.4642097684937 +Vehicle ID: 1, Event Type: start, Timestamp: 958.908004831454 +Vehicle ID: 1, Event Type: start, Timestamp: 962.1543514717368 +Vehicle ID: 1, Event Type: start, Timestamp: 965.3766851134963 +Vehicle ID: 1, Event Type: start, Timestamp: 968.6380072178458 +Vehicle ID: 1, Event Type: start, Timestamp: 972.2227800890826 +Vehicle ID: 1, Event Type: start, Timestamp: 975.612999886964 +Vehicle ID: 1, Event Type: start, Timestamp: 978.8962444201195 +Vehicle ID: 1, Event Type: start, Timestamp: 982.243657735806 +Vehicle ID: 1, Event Type: start, Timestamp: 985.8047111559798 +Vehicle ID: 1, Event Type: start, Timestamp: 989.051281603416 +Vehicle ID: 1, Event Type: start, Timestamp: 992.5200030347347 +Vehicle ID: 1, Event Type: start, Timestamp: 995.9185109073572 +Vehicle ID: 1, Event Type: start, Timestamp: 999.3107582386639 diff --git a/python/lifts/dictionary.py b/python/lifts/dictionary.py new file mode 100644 index 00000000..cbfd8bbb --- /dev/null +++ b/python/lifts/dictionary.py @@ -0,0 +1,58 @@ +import pandas as pd + + +def timetable(terminal): + df = pd.read_csv('C:/Users/Irena Tong/PycharmProjects/simulation_test/data/train_consist_plan.csv') + + df_terminal = df[(df['Destination_ID'] == terminal) & (df['Train_Type'] == 'Intermodal')] + + df_grouped = df_terminal.groupby('Train_ID').agg({ + 'Cars_Loaded': find_duplicate_numbers, + 'Cars_Empty': find_duplicate_numbers, + 'Arrival_Time_Actual_Hr': 'min', + 'Departure_Time_Actual_Hr': 'min' + }).reset_index() + + df_grouped_sorted = df_grouped.sort_values(by='Arrival_Time_Actual_Hr', ascending=True) + + train_dict_list = convert_df_to_dict(df_grouped_sorted) + + return train_dict_list + + +def convert_df_to_dict(df): + train_timetable = [] + for _, row in df.iterrows(): + train_dict = { + "train_id": row['Train_ID'], + "arrival_time": row['Departure_Time_Actual_Hr'], + "departure_time": row['Arrival_Time_Actual_Hr'], + "empty_cars": row['Cars_Empty'], + "full_cars": row['Cars_Loaded'], + "oc_number": calculate_oc_number(row), + "truck_number": calculate_truck_number(row) + } + train_timetable.append(train_dict) + return train_timetable + + +def truck_resource(data): + total_truck_number = sum(item['truck_number'] for item in data) + return total_truck_number + + +def calculate_oc_number(row): + return 40 + +def calculate_truck_number(row): + full_cars = row['Cars_Loaded'] + oc_number = calculate_oc_number(row) + return max(full_cars, oc_number) + + +def find_duplicate_numbers(series): + return series.iloc[0] + +terminal = 'Allouez' +train_data_as_dict = timetable(terminal) +print(train_data_as_dict) \ No newline at end of file diff --git a/python/lifts/distances.py b/python/lifts/distances.py new file mode 100644 index 00000000..93895280 --- /dev/null +++ b/python/lifts/distances.py @@ -0,0 +1,70 @@ +import numpy as np +from scipy.stats import triang + +# Yard setting: optimal layout output +YARD_TYPE = 'parallel' # choose 'perpendicular' or 'parallel' +M = 2 # decide the number of rows of parking blocks in the layout +N = 2 # decide the number of columns of parking blocks in the layout +n_t = 2 # decide the numbers of train side aisles per group +n_p = 2 # decide the numbers of parking area aisles per group +n_r = 5 # decide the number of spots within each parking block (10 * n_r = BL_l, the length of each parking block) + +# Fixed yard parameters +P = 10 # fixed aisle width +BL_w = 80 # fixed block width + +A = M * 10 * n_r + (M+1) * n_p * P # the vertical width of the yard +B = N * 80 + (N+1) * n_p * P # the horizontal length of the yard + +def create_triang_distribution(min_val, avg_val, max_val): + c = (avg_val - min_val) / (max_val - min_val) + return triang(c, loc=min_val, scale=(max_val - min_val)) + +def ugly_sigma(x): + total_sum = 0 + for i in range(1, x): + total_sum += 2 * i * (x - i) + result = total_sum / (x ** 2) + return result + +def A(M, n_r, n_p): + return M * 10 * n_r + (M+1) * n_p * P + +def B(N, n_p): + return N * 80 + (N+1) * n_p * P + +# Distance estimation +if YARD_TYPE == 'parallel': + # d_h: hostler distance + d_h_min = n_t * P + 1.5 * n_p * P + d_h_max = n_t * P + A(M, n_r, n_p) + B(N, n_p) + d_h_avg = 0.5 * (d_h_min + d_h_max) + + # d_r: repositioning distance + d_r_min = 0 + # d_r_avg = 5 * n_r + 40 + ugly_sigma(M) * (10 * n_r + n_p*P) + ugly_sigma(N) * (80 + n_p * P) + d_r_max = 10 * n_r + 80 + A(M, n_r, n_p) - n_p * P + B(N, n_p) - n_p * P + d_r_avg = 0.5 * (d_r_min + d_r_max) + + # d_t: truck distance + d_t_min = 1.5 * n_p * P + # d_t_avg = 0.5 * (B(N, n_p) + A(M, n_r, n_p) - 0.5 * n_p * P) + d_t_max = B(N, n_p) + A(M, n_r, n_p) - 2 * n_p * P + d_t_avg = 0.5 * (d_t_min + d_t_max) + + +elif YARD_TYPE == 'perpendicular': + # d_h + d_h_min = n_t * P + 1.5 * n_p * P + d_h_avg = 10 * n_r * M + 80 * N + (M + N + 1.5) * n_p * P + 2 * n_t * P + d_h_max = n_t * P + A(M, n_r, n_p) - n_p * P + B(N, n_p) - n_p * P + + # d_r + d_r_min = 0 + d_r_avg = 5 * n_r + 40 + ugly_sigma(M) * (10 * n_r + n_p*P) + ugly_sigma(N) * (80 + n_p * P) + d_r_max = 10 * n_r + 80 + A(M, n_r, n_p) - n_p * P + B(N, n_p) - n_p * P + + # d_t + d_t_min = 1.5 * n_p * P + d_t_avg = 0.5 * (B(N, n_p) + A(M, n_r, n_p) - 0.5 * n_p * P) + d_t_max = B(N, n_p) + A(M, n_r, n_p) - 2 * n_p * P \ No newline at end of file diff --git a/python/lifts/final_version.py b/python/lifts/final_version.py new file mode 100644 index 00000000..08685eb2 --- /dev/null +++ b/python/lifts/final_version.py @@ -0,0 +1,614 @@ +import simpy +import random +from parameters import * +from distances import * +from dictionary import * +from vehicle_performance import record_vehicle_event, save_average_times, save_vehicle_logs + + +# Test input +CRANE_NUMBER = 1 +HOSTLER_NUMBER = 1 + + +# import sys +# +# if len(sys.argv) < 3: +# raise ValueError("Not enough arguments. Please provide HOSTLER_NUMBER and CRANE_NUMBER.") +# +# HOSTLER_NUMBER = int(sys.argv[1]) +# CRANE_NUMBER = int(sys.argv[2]) +TRUCK_NUMBERS = 1000 + +def record_event(container_id, event_type, timestamp): + if container_id not in container_events: + container_events[container_id] = {} + container_events[container_id][event_type] = timestamp + + +def handle_truck_arrivals(env, in_gate_resource, truck_numbers): + global all_trucks_ready_event, truck_processed, start_oc_container_id, end_oc_container_id, TRUCK_ARRIVAL_MEAN, TRAIN_ARRIVAL_HR + + truck_id = 1 + truck_processed = 0 + TRUCK_ARRIVAL_MEAN = abs(TRAIN_ARRIVAL_HR - previous_train_departure) / max(INBOUND_CONTAINER_NUMBER, OUTBOUND_CONTAINER_NUMBER) + print(f"current time is {env.now}") + print(f"next TRAIN_ARRIVAL_HR:{TRAIN_ARRIVAL_HR}") + print(f"TRUCK_ARRIVAL_MEAN IS {TRUCK_ARRIVAL_MEAN}") + + while truck_id <= TRUCK_NUMBERS: + inter_arrival_time = random.expovariate(1 / TRUCK_ARRIVAL_MEAN) + yield env.timeout(inter_arrival_time) + truck_arrival_time.append(env.now) + + env.process(truck_through_gate(env, in_gate_resource, truck_id)) + truck_id += 1 + + if truck_id > TRUCK_NUMBERS: + # print(f"truck_id = {truck_id} vs TRUCK_NUM = {TRUCK_NUMBERS}") + if not all_trucks_ready_event.triggered: + all_trucks_ready_event.succeed() + # print(f"{env.now}: All trucks arrived for the {TRAIN_ID} train.") + + +def truck_through_gate(env, in_gate_resource, truck_id): + global last_leave_time, INBOUND_CONTAINER_NUMBER, OUTBOUND_CONTAINER_NUMBER + + with in_gate_resource.request() as request: + yield request + wait_time = max(0, truck_arrival_time[truck_id - 1] - last_leave_time) + if wait_time <= 0: + wait_time = 0 # first arriving trucks + # print(f"Truck {truck_id} enters the gate without waiting") + else: + # print(f"Truck {truck_id} enters the gate and queued for {wait_time} hrs") + truck_waiting_time.append(wait_time) + + yield env.timeout(TRUCK_INGATE_TIME + random.uniform(0, TRUCK_INGATE_TIME_DEV)) + + # Case 1: Normal handling when OC >= IC (all trucks have containers) + if OUTBOUND_CONTAINER_NUMBER >= INBOUND_CONTAINER_NUMBER: + env.process(handle_container(env, truck_id)) + + # Case 2: OC < IC, extra empty trucks are needed + else: + if truck_id <= OUTBOUND_CONTAINER_NUMBER: + env.process(handle_container(env, truck_id)) # Loaded trucks + else: + env.process(empty_truck(env, truck_id)) # Empty trucks + + +def handle_container(env, truck_id): + global outbound_container_id_counter, last_leave_time + + container_id = outbound_container_id_counter + outbound_container_id_counter += 1 + record_event(container_id, 'truck_arrival', env.now) + + d_t_dist = create_triang_distribution(d_t_min, d_t_avg, d_t_max).rvs() + yield env.timeout(d_t_dist / (2 * TRUCK_SPEED_LIMIT)) + + record_event(container_id, 'truck_drop_off', env.now) + # print(f"{env.now}: Truck {truck_id} drops outbound container {container_id}.") + last_leave_time = env.now + + +def empty_truck(env, truck_id): + global inbound_container_id_counter, last_leave_time + + d_t_dist = create_triang_distribution(d_t_min, d_t_avg, d_t_max).rvs() + yield env.timeout(d_t_dist / (2 * TRUCK_SPEED_LIMIT)) + + # print(f"{env.now}: Empty truck {truck_id} arrives.") + last_leave_time = env.now + + +def train_arrival(env, train_timetable, train_processing, cranes, hostlers, chassis, in_gate_resource, outbound_containers_store, truck_store, out_gate_resource): + global record_oc_label, train_id_counter, TRUCK_NUMBERS, INBOUND_CONTAINER_NUMBER, OUTBOUND_CONTAINER_NUMBER, TRAIN_DEPARTURE_HR, oc_chassis_filled_event, TRAIN_ID, inbound_container_id_counter, previous_train_departure + + for i, train in enumerate(train_timetable): + TRAIN_ARRIVAL_HR = train['arrival_time'] + TRAIN_DEPARTURE_HR = train['departure_time'] + INBOUND_CONTAINER_NUMBER = train['full_cars'] + OUTBOUND_CONTAINER_NUMBER = train['oc_number'] + TRUCK_NUMBERS = train['truck_number'] + TRAIN_ID = train['train_id'] + + print(f"---------- Next Train {TRAIN_ID} Is On the Way ----------") + print(f"IC {INBOUND_CONTAINER_NUMBER}") + print(f"OC {OUTBOUND_CONTAINER_NUMBER}") + + outbound_containers_store.items.clear() + for oc in range(record_oc_label, record_oc_label + OUTBOUND_CONTAINER_NUMBER): # from 10001 to 10001 + OC + # print("oc_number", oc) + outbound_containers_store.put(oc) + # yield outbound_containers_store.put(oc) + # print(f"Current store contents after putting {oc}: {outbound_containers_store.items}") + + # print("outbound_containers_store is:", outbound_containers_store.items) + + # Trucks enter until the precious train departs, if not the first truck + previous_train_departure = train_timetable[i-1]['departure_time'] if i > 0 else 0 + print(f"Schedule {TRUCK_NUMBERS} Trucks arriving between previous train departure at {previous_train_departure} and current train arrival at {TRAIN_ARRIVAL_HR}") + env.process(handle_truck_arrivals(env, in_gate_resource, outbound_containers_store)) + + # Trains arrive according to the timetable, fix negative delay bug + delay = TRAIN_ARRIVAL_HR - env.now + if delay <= 0: + yield env.timeout(0) + else: + yield env.timeout(delay) + + train_id = train_id_counter + print(f"Train {TRAIN_ID} ({train_id} in the dictionary) arrives at {env.now}") + + # for container_id in range(inbound_container_id_counter, inbound_container_id_counter + INBOUND_CONTAINER_NUMBER): + for container_id in range(int(inbound_container_id_counter), int(inbound_container_id_counter) + int(INBOUND_CONTAINER_NUMBER)): # fix float error + + record_event(container_id, 'train_arrival', env.now) + + with train_processing.request() as request: + yield request + oc_chassis_filled_event = env.event() + yield env.process(process_train(env, train_id, cranes, hostlers, chassis, in_gate_resource, outbound_containers_store, truck_store, train_processing, oc_chassis_filled_event, out_gate_resource)) + train_id_counter += 1 + + record_oc_label += OUTBOUND_CONTAINER_NUMBER + # print("record_oc_label", record_oc_label) + # print("oc_variance in train_process:", oc_variance) + + +def process_train(env, train_id, cranes, hostlers, chassis, in_gate_resource, outbound_containers_store, truck_store, train_processing, oc_chassis_filled_event, out_gate_resource): + global oc_variance, time_per_train, train_series, INBOUND_CONTAINER_NUMBER, OUTBOUND_CONTAINER_NUMBER, record_oc_label, TRAIN_ID_FIXED + + start_time = env.now + + # Cranes unload all IC + unload_processes = [] + chassis_inbound_ids = [] # To save chassis_id, current_inbound_id to hostler_transfer_IC_single_loop + + # if train_id < TRAIN_NUMBERS: + for chassis_id in range(1, int(INBOUND_CONTAINER_NUMBER) + 1): + unload_process = env.process(crane_and_chassis(env, train_id, 'unload', cranes, hostlers, chassis, truck_store, train_processing, outbound_containers_store, in_gate_resource, out_gate_resource, oc_chassis_filled_event)) + unload_processes.append(unload_process) + + # All IC are processed + # print("Unload process is:", unload_processes) + yield simpy.events.AllOf(env, unload_processes) + results = yield simpy.events.AllOf(env, unload_processes) + + # To pass chassis_id, current_inbound_id to hostler_transfer_IC_single_loop as a list from calling chassis_inbound_ids + for result in results.values(): + chassis_id, current_inbound_id = result + chassis_inbound_ids.append((chassis_id, current_inbound_id)) + env.process(hostler_transfer(env, hostlers, 'inbound', chassis, chassis_id, current_inbound_id, truck_store, cranes, + train_processing, outbound_containers_store, in_gate_resource, oc_chassis_filled_event, + out_gate_resource)) + + # # Once all OC are dropped by hostlers, crane start working + # print("Chassis are filled with OC (-1) now. ") + # print(f"Chassis status after OC processed is: {chassis_status}, where ") + # print(f"there are {chassis_status.count(0)} chassis is filled with OC (0)") + # print(f"there are {chassis_status.count(-1)} chassis is filled with empty (-1)") + # print(f"there are {chassis_status.count(1)} chassis is filled with IC (1)") + + # Cranes move all OC to chassis + load_processes = [] + for chassis_id in range(1, OUTBOUND_CONTAINER_NUMBER + 1): + load_process = env.process(crane_and_chassis(env, train_id, 'load', cranes, hostlers, chassis, truck_store, train_processing, outbound_containers_store, in_gate_resource, oc_chassis_filled_event, out_gate_resource, chassis_id=chassis_id)) + load_processes.append(load_process) + yield simpy.events.AllOf(env, load_processes) + + # Check if all outbound containers are loaded (all chassis is empty 0), the train departs + if chassis_status.count(-1) == TRAIN_UNITS: + # oc_chassis_filled_event.succeed() + TRAIN_ID_FIXED = TRAIN_ID + print(f"Train {TRAIN_ID_FIXED} is ready to depart at {env.now}.") + env.process(train_departure(env, train_id)) + time_per_train.append(env.now - start_time) + + end_time = env.now + time_per_train.append(end_time - start_time) + train_series += 1 + oc_variance += OUTBOUND_CONTAINER_NUMBER + + +def crane_and_chassis(env, train_id, action, cranes, hostlers, chassis, truck_store, train_processing, outbound_containers_store, in_gate_resource, out_gate_resource, oc_chassis_filled_event, chassis_id=None): + global record_oc_label, crane_id_counter, chassis_status, inbound_container_id_counter, outbound_containers_mapping, outbound_container_id_counter, INBOUND_CONTAINER_NUMBER, OUTBOUND_CONTAINER_NUMBER + + # # Print before requesting crane resource + if action == 'unload': + crane_id = crane_id_counter + crane_id_counter = (crane_id_counter % CRANE_NUMBER) + 1 + # print("inbound_id_counter", inbound_container_id_counter) + for container_id in range(int(inbound_container_id_counter), int(inbound_container_id_counter) + int(INBOUND_CONTAINER_NUMBER)): # fix float error + # print("container_id now:", container_id) + yield env.timeout(CRANE_UNLOAD_CONTAINER_TIME_MEAN + random.uniform(0, CRANE_MOVE_DEV_TIME)) + record_event(container_id, 'crane_unload', env.now) + # print(f"Crane {crane_id} unloads inbound container {inbound_container_id_counter} from train {train_id} at {env.now}") + + # if action == 'load': + # for container_id in range(record_oc_label, record_oc_label + OUTBOUND_CONTAINER_NUMBER): + # yield env.timeout(CRANE_LOAD_CONTAINER_TIME_MEAN + random.uniform(0, CRANE_MOVE_DEV_TIME)) + # chassis_status[chassis_id - 1] = -1 + # # print(f"Crane {crane_id} loads outbound container {container_id} to train {TRAIN_ID} at {env.now}") + # record_event(container_id, 'crane_load', env.now) + + with cranes.request() as request: + yield request + + # # Print after acquiring crane resource + # print(f"[{env.now}] Crane {crane_id_counter} acquired crane resource. Available cranes: {cranes.count}/{cranes.capacity}") + + start_time = env.now + record_vehicle_event('crane', crane_id_counter, 'start', start_time) # performance record: starting + + if action == 'unload': + # crane_id = crane_id_counter + # crane_id_counter = (crane_id_counter % CRANE_NUMBER) + 1 + + chassis_id = ((inbound_container_id_counter - 1) % CHASSIS_NUMBER) + 1 + + current_inbound_id = inbound_container_id_counter + inbound_container_id_counter += 1 + # yield env.timeout(CRANE_UNLOAD_CONTAINER_TIME_MEAN + random.uniform(0, CRANE_MOVE_DEV_TIME)) + + # for chassis_id in range(int(inbound_container_id_counter), int(inbound_container_id_counter) + int(INBOUND_CONTAINER_NUMBER)): + chassis_status[chassis_id - 1] = 1 + + end_time = env.now + record_vehicle_event('crane', crane_id_counter, 'end', end_time) # performance record: ending + + # hostler picks up IC + env.process(hostler_transfer(env, hostlers, 'inbound', chassis, chassis_id, current_inbound_id, truck_store, cranes, train_processing, outbound_containers_store, in_gate_resource, oc_chassis_filled_event, out_gate_resource)) + + return chassis_id, current_inbound_id + + elif action == 'load': + if chassis_id not in outbound_containers_mapping: + print(f"Notice: No outbound container mapped to chassis {chassis_id} at {env.now}") + return + + container_id = outbound_containers_mapping[chassis_id] # Retrieve container ID from mapping + # print("outbound_containers_mapping in crane and chassis func:", outbound_containers_mapping) + # print("container_id in crane and chassis func:", container_id) + + if CRANE_NUMBER == 1: + crane_id = 1 + else: + crane_id = (chassis_id % CRANE_NUMBER) + 1 + + chassis_status[chassis_id - 1] = -1 + + # yield env.timeout(CRANE_LOAD_CONTAINER_TIME_MEAN + random.uniform(0, CRANE_MOVE_DEV_TIME)) + # chassis_status[chassis_id - 1] = -1 + # print(f"Crane {crane_id} loads outbound container {container_id} from chassis {chassis_id} to train {TRAIN_ID} at {env.now}") + # record_event(container_id, 'crane_load', env.now) + + for container_id in range(record_oc_label, record_oc_label + OUTBOUND_CONTAINER_NUMBER): + yield env.timeout(CRANE_LOAD_CONTAINER_TIME_MEAN + random.uniform(0, CRANE_MOVE_DEV_TIME)) + # chassis_status[chassis_id - 1] = -1 + # print(f"Crane {crane_id} loads outbound container {container_id} to train {TRAIN_ID} at {env.now}") + record_event(container_id, 'crane_load', env.now) + + # # At this point, the crane resource should be released + # print(f"[{env.now}] Crane {crane_id_counter} has released crane resource. Available cranes: {cranes.count}/{cranes.capacity}") + + +def hostler_transfer(env, hostlers, container_type, chassis, chassis_id, container_id, truck_store, cranes, train_processing, outbound_containers_store, in_gate_resource, oc_chassis_filled_event, out_gate_resource): + global hostler_id_counter, chassis_status, outbound_containers_mapping, outbound_container_id, record_oc_label, HOSTLER_NUMBER + + with hostlers.request() as request: + yield request + + start_time = env.now + record_vehicle_event('hostler', hostler_id_counter, 'start', start_time) # performance record + + hostler_id = hostler_id_counter + hostler_id_counter = (hostler_id_counter % HOSTLER_NUMBER) + 1 + + with chassis.request() as chassis_request: + yield chassis_request + + if container_type == 'inbound' and chassis_status[chassis_id - 1] == 1: + d_h_dist = create_triang_distribution(d_h_min, d_h_avg, d_h_max).rvs() + HOSTLER_TRANSPORT_CONTAINER_TIME = d_h_dist / (2 * HOSTLER_SPEED_LIMIT) + print(f"Hostler pick-up time is:{HOSTLER_TRANSPORT_CONTAINER_TIME}") + yield env.timeout(HOSTLER_TRANSPORT_CONTAINER_TIME) + record_event(container_id, 'hostler_pickup', env.now) + print(f"Hostler {hostler_id} picks up inbound container {container_id} from chassis {chassis_id} and heads to parking area at {env.now}") + + chassis_status[chassis_id - 1] = -1 + + # Hostler drop off: different route for picking-up and dropping-off + d_h_dist = create_triang_distribution(d_h_min, d_h_avg, d_h_max).rvs() + HOSTLER_TRANSPORT_CONTAINER_TIME = d_h_dist / (2 * HOSTLER_SPEED_LIMIT) + print(f"Hostler drop-off time is:{HOSTLER_TRANSPORT_CONTAINER_TIME}") + yield env.timeout(HOSTLER_TRANSPORT_CONTAINER_TIME) + record_event(container_id, 'hostler_dropoff', env.now) + print(f"Hostler {hostler_id} drops off inbound container {container_id} from chassis {chassis_id} and moves toward the assigned outbound container at {env.now}") + + end_time = env.now + record_vehicle_event('hostler', hostler_id_counter, 'end', end_time) # performance record + + # Process functions of notify_truck and handle_outbound_container simultaneously + env.process(notify_truck(env, truck_store, container_id, out_gate_resource)) + + # Assign outbound container and chassis_id for the hostler which drops off an inbound container + chassis_id, outbound_container_id = yield env.process(outbound_container_decision_making( + env, hostlers, chassis, container_id, truck_store, cranes, train_processing, + outbound_containers_store, + in_gate_resource, oc_chassis_filled_event, out_gate_resource, chassis_status, + outbound_containers_mapping, + record_oc_label, outbound_container_id + )) + + # Process outbound containers + if chassis_id is not None and outbound_container_id is not None: + env.process(handle_outbound_container(env, hostler_id, chassis_id, outbound_container_id, truck_store, + cranes, train_processing, outbound_containers_store, in_gate_resource, + oc_chassis_filled_event)) + + +# When OC are fully processed, but IC are not +def hostler_transfer_IC_single_loop(env, hostlers, container_type, chassis, chassis_id, container_id, truck_store, cranes, train_processing, outbound_containers_store, in_gate_resource, oc_chassis_filled_event, out_gate_resource): + print(f"Starting single hostler transfer IC loop for chassis {chassis_id} at {env.now}") + global hostler_id_counter + + print(f"Requesting hostler for IC at chassis {chassis_id} at {env.now}") + + with hostlers.request() as request: + print(f"Request available hostlers: {hostlers.count} vs total hostlers {HOSTLER_NUMBER}, Hostlers capacity: {hostlers.capacity} at {env.now}") + yield request + + start_time = env.now + record_vehicle_event('hostler', hostler_id_counter, 'start', start_time) # performance record + + hostler_id = hostler_id_counter + hostler_id_counter = (hostler_id_counter % HOSTLER_NUMBER) + 1 + + with chassis.request() as chassis_request: + yield chassis_request + + if container_type == 'inbound' and chassis_status[chassis_id - 1] == 1: + chassis_status[chassis_id - 1] = -1 + print(f"Single loop chassis status {chassis_status}") + print(f"There are {chassis_status.count(1)} IC") + print(f"There are {chassis_status.count(-1)} empty") + print(f"There are {chassis_status.count(0)} OC") + d_h_dist = create_triang_distribution(d_h_min, d_h_avg, d_h_max).rvs() + HOSTLER_TRANSPORT_CONTAINER_TIME = d_h_dist / (2 * HOSTLER_SPEED_LIMIT) + + yield env.timeout(HOSTLER_TRANSPORT_CONTAINER_TIME) + # hostler picks up the rest of IC from the chassis + # chassis_status[chassis_id - 1] = -1 + record_event(container_id, 'hostler_pickup', env.now) + print(f"Hostler {hostler_id} picks up inbound container {container_id} from chassis {chassis_id} to parking area at {env.now}") + + # hostler drops off the IC + d_h_dist = create_triang_distribution(d_h_min, d_h_avg, d_h_max).rvs() + HOSTLER_TRANSPORT_CONTAINER_TIME = d_h_dist / (2 * HOSTLER_SPEED_LIMIT) + yield env.timeout(HOSTLER_TRANSPORT_CONTAINER_TIME) + record_event(container_id, 'hostler_dropoff', env.now) + print(f"Hostler {hostler_id} drops off inbound container {container_id} from chassis {chassis_id} to parking area at {env.now}") + + # Check if all chassis filled + if chassis_status.count(0) == OUTBOUND_CONTAINER_NUMBER and chassis_status.count( + -1) == TRAIN_UNITS - OUTBOUND_CONTAINER_NUMBER and not oc_chassis_filled_event.triggered: + print(f"Chassis is fully filled with OC, and cranes start moving: {chassis_status}") + print(f"where there are {chassis_status.count(0)} chassis filled with OC (0)") + print(f"where there are {chassis_status.count(-1)} chassis filled with empty (-1)") + print(f"where there are {chassis_status.count(1)} chassis filled with IC (1)") + oc_chassis_filled_event.succeed() + return + else: + print(f"Chassis is not fully filled: {chassis_status}") + print(f"where there are {chassis_status.count(0)} chassis filled with OC (0)") + print(f"where there are {chassis_status.count(-1)} chassis filled with empty (-1)") + print(f"where there are {chassis_status.count(1)} chassis filled with IC (1)") + + end_time = env.now + record_vehicle_event('hostler', hostler_id, 'end', end_time) # performance record + + # trucks pick up IC + yield env.process(notify_truck(env, truck_store, container_id, out_gate_resource)) + + +def outbound_container_decision_making(env, hostlers, chassis, current_inbound_id, truck_store, cranes, train_processing, outbound_containers_store, in_gate_resource, oc_chassis_filled_event, out_gate_resource, chassis_status, outbound_containers_mapping, record_oc_label, outbound_container_id): + # Check if outbound_containers_store has outbound container + if len(outbound_containers_store.items) > 0: + outbound_container_id = yield outbound_containers_store.get() + print(f"Outbound containers remaining: {len(outbound_containers_store.items)}") + + if -1 in chassis_status: + chassis_id = chassis_status.index(-1) + 1 # find the first chassis + # If chassis are not assigned with outbound container + if chassis_id not in outbound_containers_mapping: + # outbound_container_id += record_oc_label + outbound_containers_mapping[chassis_id] = outbound_container_id + chassis_status[chassis_id - 1] = 0 # already assigned outbound container + print(f"OC mapping created: outbound container {outbound_container_id} assigned to chassis {chassis_id}") + else: + print(f"Chassis {chassis_id} is already mapped to an outbound container.") + else: + print("No empty chassis available for outbound container assignment.") + + # if outbound_containers_store is null, check if we need operate single loop + else: + chassis_id = None + outbound_container_id = None + # chassis_status = 1: inbound containers are not loaded + if chassis_status.count(1) != 0: + print(f"Haven't finished all IC yet at {env.now}. Starting single loop.") + chassis_id = chassis_status.index(1) + 1 + chassis_status[chassis_id - 1] = 0 # assigned with IC + # single loop takes rest inbound container + yield env.process(hostler_transfer_IC_single_loop(env, hostlers, 'inbound', chassis, chassis_id, current_inbound_id, + truck_store, cranes, train_processing, + outbound_containers_store, in_gate_resource, oc_chassis_filled_event, + out_gate_resource)) + else: + print("All inbound containers have been processed.") + + return chassis_id, outbound_container_id + + +def handle_outbound_container(env, hostler_id, chassis_id, outbound_container_id, truck_store, cranes, train_processing, outbound_containers_store, in_gate_resource, oc_chassis_filled_event): + global HOSTLER_FIND_CONTAINER_TIME + + d_h_dist = create_triang_distribution(d_h_min, d_h_avg, d_h_max).rvs() + HOSTLER_TRANSPORT_CONTAINER_TIME = d_h_dist / (2 * HOSTLER_SPEED_LIMIT) + + d_r_dist = create_triang_distribution(d_r_min, d_r_avg, d_r_max).rvs() + HOSTLER_FIND_CONTAINER_TIME = d_r_dist / (2 * TRUCK_SPEED_LIMIT) + yield env.timeout(HOSTLER_FIND_CONTAINER_TIME) + + record_event(outbound_container_id, 'hostler_pickup', env.now) + print(f"Hostler {hostler_id} picks up outbound container {outbound_container_id} from parking area to chassis {chassis_id} at {env.now}") + + yield env.timeout(HOSTLER_TRANSPORT_CONTAINER_TIME) + + record_event(outbound_container_id, 'hostler_dropoff', env.now) + print(f"Hostler {hostler_id} drops off outbound container {outbound_container_id} to chassis {chassis_id} at {env.now}") + + +# truck pick up IC +def notify_truck(env, truck_store, container_id, out_gate_resource): + truck_id = yield truck_store.get() + yield env.timeout(TRUCK_INGATE_TIME) + print(f"Truck {truck_id} arrives at parking area and prepare to pick up inbound container {container_id} at {env.now}") + yield env.process(truck_transfer(env, truck_id, container_id, out_gate_resource)) + + +def truck_transfer(env, truck_id, container_id, out_gate_resource): + global TRUCK_INGATE_TIME, TRUCK_TRANSPORT_CONTAINER_TIME, outbound_container_id_counter + + start_time = env.now + record_vehicle_event('truck', truck_id, 'start', start_time) # performance record + + # Truck moves to the parking area + yield env.timeout(TRUCK_TO_PARKING) + record_event(container_id, 'truck_pickup', env.now) + print(f"Truck {truck_id} picks up inbound container {container_id} at {env.now}") + + # Calculate the transport time for the truck + d_t_dist = create_triang_distribution(d_t_min, d_t_avg, d_t_max).rvs() + TRUCK_TRANSPORT_CONTAINER_TIME = d_t_dist / (2 * TRUCK_SPEED_LIMIT) + yield env.timeout(TRUCK_TRANSPORT_CONTAINER_TIME) + + # Request out_gate_resource resource before the truck exits + with out_gate_resource.request() as request: + yield request + + # Simulate the time it takes for the truck to pass through the gate + yield env.timeout(TRUCK_OUTGATE_TIME + random.uniform(0,TRUCK_OUTGATE_TIME_DEV)) + record_event(container_id, 'truck_exit', env.now) + print(f"Truck {truck_id} exits gate with inbound container {container_id} at {env.now}") + + # End performance recording + end_time = env.now + record_vehicle_event('truck', truck_id, 'end', end_time) + + +def train_departure(env, train_id): + global TRAIN_ID_FIXED, record_oc_label + + if env.now < TRAIN_DEPARTURE_HR: + yield env.timeout(TRAIN_DEPARTURE_HR - env.now) + yield env.timeout(TRAIN_INSPECTION_TIME) + print(f"Train {TRAIN_ID_FIXED} ({train_id} in the dictionary) departs at {env.now}") + + for container_id in range(record_oc_label - OUTBOUND_CONTAINER_NUMBER, record_oc_label): + record_event(container_id, 'train_depart', env.now) + + +def run_simulation(): + global all_trucks_ready_event, record_oc_label, TRUCK_NUMBERS, TRAIN_NUMBERS + + print(f"Starting simulation with No.{TRAIN_ID} trains, {HOSTLER_NUMBER} hostlers, {CRANE_NUMBER} cranes, and {TRUCK_NUMBERS} trucks.") + env = simpy.Environment() + + # Resources + train_processing = simpy.Resource(env, capacity=1) + cranes = simpy.Resource(env, capacity=CRANE_NUMBER) + chassis = simpy.Resource(env, capacity=CHASSIS_NUMBER) + hostlers = simpy.Resource(env, capacity=HOSTLER_NUMBER) + in_gate_resource = simpy.Resource(env, capacity=IN_GATE_NUMBERS) + out_gate_resource = simpy.Resource(env, capacity=OUT_GATE_NUMBERS) + outbound_containers_store = simpy.Store(env, capacity=100) + truck_store = simpy.Store(env, capacity=100) + + # Initialize trucks + truck_store.items.clear() + # print("TRUCK_NUMBERS:", TRUCK_NUMBERS) + for truck_id in range(1, TRUCK_NUMBERS + 1): + truck_store.put(truck_id) + # print("TRUCK_STORE:", truck_store.items) + + all_trucks_ready_event = env.event() + + # # toy case + # train_timetable = [ + # {"train_id": 19, "arrival_time": 187, "departure_time": 200, "empty_cars": 3, "full_cars":7, "oc_number": 2, "truck_number":7 }, + # {"train_id": 25, "arrival_time": 250, "departure_time": 350, "empty_cars": 4, "full_cars":6, "oc_number": 2, "truck_number":6 }, + # {"train_id": 49, "arrival_time": 400, "departure_time": 600, "empty_cars": 5, "full_cars":5, "oc_number": 2, "truck_number":5 }, + # {"train_id": 60, "arrival_time": 650, "departure_time": 750, "empty_cars": 6, "full_cars":4, "oc_number": 2, "truck_number":4 }, + # {"train_id": 12, "arrival_time": 800, "departure_time": 1000, "empty_cars": 7, "full_cars":3, "oc_number": 4, "truck_number":4 }, + # ] + + # REAL TEST + train_timetable = timetable(terminal) + TRAIN_NUMBERS = len(timetable(terminal)) + + # env.process(train_arrival(env, train_processing, cranes, in_gate_resource, outbound_containers_store, truck_store, train_timetable)) + env.process(train_arrival(env, train_timetable, train_processing, cranes, hostlers, chassis, in_gate_resource, + outbound_containers_store, truck_store, out_gate_resource)) + + env.run(until=SIM_TIME) + + # Performance Matrix: train processing time + avg_time_per_train = sum(time_per_train) / len(time_per_train) + print(f"Average train processing time: {sum(time_per_train) / len(time_per_train) if time_per_train else 0:.2f}") + print("Simulation completed. ") + with open("avg_time_per_train.txt", "w") as f: + f.write(str(avg_time_per_train)) + + # Create DataFrame for container events + container_data = [] + + for container_id, events in sorted(container_events.items()): + container_type = 'inbound' if container_id < 10001 else 'outbound' + if container_type == 'inbound': + container_process_time = events.get('truck_exit', '-') - events.get('train_arrival', '-') if 'truck_exit' in events and 'train_arrival' in events else '-' + else: + container_process_time = events.get('train_depart', '-') - events.get('truck_drop_off', '-') if 'train_depart' in events and 'truck_drop_off' in events else '-' + + container_data.append({ + 'container_id': container_id, + 'container_type': container_type, + 'train_arrival': events.get('train_arrival', '-'), + 'truck_arrival': events.get('truck_arrival', '-'), + 'crane_unload': events.get('crane_unload', '-'), + 'hostler_pickup': events.get('hostler_pickup', '-'), + 'hostler_dropoff': events.get('hostler_dropoff', '-'), + 'truck_drop_off': events.get('truck_drop_off', '-'), + 'truck_pickup': events.get('truck_pickup', '-'), + 'truck_exit': events.get('truck_exit', '-'), + 'crane_load': events.get('crane_load', '-'), + 'train_depart': events.get('train_depart', '-'), + 'container_processing_time': container_process_time + }) + + df = pd.DataFrame(container_data) + filename = f"C:/Users/Irena Tong/PycharmProjects/simulation_test/test/results/simulation_crane_{CRANE_NUMBER}_hostler_{HOSTLER_NUMBER}.xlsx" + df.to_excel(filename, index=False) + + # Use save_average_times and save_vehicle_logs for vehicle related logs + save_average_times() + save_vehicle_logs() + + print("Done!") + + +if __name__ == "__main__": + run_simulation() \ No newline at end of file diff --git a/python/lifts/hostler_work_log.txt b/python/lifts/hostler_work_log.txt new file mode 100644 index 00000000..aca04ba6 --- /dev/null +++ b/python/lifts/hostler_work_log.txt @@ -0,0 +1,774 @@ +Vehicle ID: 1, Event Type: start, Timestamp: 181.18810094866248 +Vehicle ID: 1, Event Type: end, Timestamp: 181.1909629977074 +Vehicle ID: 1, Event Type: start, Timestamp: 181.2169499739688 +Vehicle ID: 1, Event Type: end, Timestamp: 181.2192376389858 +Vehicle ID: 1, Event Type: start, Timestamp: 181.2395633995604 +Vehicle ID: 1, Event Type: end, Timestamp: 181.24247560236748 +Vehicle ID: 1, Event Type: start, Timestamp: 181.24247560236748 +Vehicle ID: 1, Event Type: end, Timestamp: 181.24474957802855 +Vehicle ID: 1, Event Type: start, Timestamp: 181.27010127953702 +Vehicle ID: 1, Event Type: end, Timestamp: 181.27227078528222 +Vehicle ID: 1, Event Type: start, Timestamp: 181.2966303423458 +Vehicle ID: 1, Event Type: end, Timestamp: 181.29873883909787 +Vehicle ID: 1, Event Type: start, Timestamp: 181.29973002923202 +Vehicle ID: 1, Event Type: end, Timestamp: 181.30219207532855 +Vehicle ID: 1, Event Type: start, Timestamp: 181.3269712046554 +Vehicle ID: 1, Event Type: end, Timestamp: 181.32883694651983 +Vehicle ID: 1, Event Type: start, Timestamp: 181.37156978383837 +Vehicle ID: 1, Event Type: end, Timestamp: 181.37372650534027 +Vehicle ID: 1, Event Type: start, Timestamp: 181.39569742271803 +Vehicle ID: 1, Event Type: end, Timestamp: 181.39773286319627 +Vehicle ID: 1, Event Type: start, Timestamp: 181.39849686069468 +Vehicle ID: 1, Event Type: end, Timestamp: 181.39988264098568 +Vehicle ID: 1, Event Type: start, Timestamp: 181.43286543187185 +Vehicle ID: 1, Event Type: end, Timestamp: 181.4347551983158 +Vehicle ID: 1, Event Type: start, Timestamp: 181.4446206161728 +Vehicle ID: 1, Event Type: end, Timestamp: 181.44718248452511 +Vehicle ID: 1, Event Type: start, Timestamp: 181.4505608513666 +Vehicle ID: 1, Event Type: end, Timestamp: 181.45258457677969 +Vehicle ID: 1, Event Type: start, Timestamp: 181.45317898131094 +Vehicle ID: 1, Event Type: end, Timestamp: 181.4544126391442 +Vehicle ID: 1, Event Type: start, Timestamp: 181.4620961590926 +Vehicle ID: 1, Event Type: end, Timestamp: 181.46359237418892 +Vehicle ID: 1, Event Type: start, Timestamp: 181.46359237418892 +Vehicle ID: 1, Event Type: end, Timestamp: 181.46596606197136 +Vehicle ID: 1, Event Type: start, Timestamp: 181.4666422935576 +Vehicle ID: 1, Event Type: end, Timestamp: 181.46880149723694 +Vehicle ID: 1, Event Type: start, Timestamp: 181.47360475089386 +Vehicle ID: 1, Event Type: end, Timestamp: 181.47523554530932 +Vehicle ID: 1, Event Type: start, Timestamp: 181.4778592051455 +Vehicle ID: 1, Event Type: end, Timestamp: 181.48067378017487 +Vehicle ID: 1, Event Type: start, Timestamp: 181.48236927536854 +Vehicle ID: 1, Event Type: end, Timestamp: 181.4853015647036 +Vehicle ID: 1, Event Type: start, Timestamp: 181.4877182012895 +Vehicle ID: 1, Event Type: end, Timestamp: 181.48999131863707 +Vehicle ID: 1, Event Type: start, Timestamp: 181.49385496834242 +Vehicle ID: 1, Event Type: end, Timestamp: 181.49629709865573 +Vehicle ID: 1, Event Type: start, Timestamp: 181.49629709865573 +Vehicle ID: 1, Event Type: end, Timestamp: 181.49735755393826 +Vehicle ID: 1, Event Type: start, Timestamp: 181.51415276756347 +Vehicle ID: 1, Event Type: end, Timestamp: 181.5155401110712 +Vehicle ID: 1, Event Type: start, Timestamp: 181.51598680151878 +Vehicle ID: 1, Event Type: end, Timestamp: 181.51760832736412 +Vehicle ID: 1, Event Type: start, Timestamp: 181.51760832736412 +Vehicle ID: 1, Event Type: end, Timestamp: 181.51967352739416 +Vehicle ID: 1, Event Type: start, Timestamp: 181.52614258786556 +Vehicle ID: 1, Event Type: end, Timestamp: 181.52804317944896 +Vehicle ID: 1, Event Type: start, Timestamp: 181.538624568182 +Vehicle ID: 1, Event Type: end, Timestamp: 181.54145391640233 +Vehicle ID: 1, Event Type: start, Timestamp: 181.54145391640233 +Vehicle ID: 1, Event Type: end, Timestamp: 181.54335215604567 +Vehicle ID: 1, Event Type: start, Timestamp: 181.5456369296843 +Vehicle ID: 1, Event Type: end, Timestamp: 181.54773953594952 +Vehicle ID: 1, Event Type: start, Timestamp: 181.55093016811912 +Vehicle ID: 1, Event Type: end, Timestamp: 181.55326774218463 +Vehicle ID: 1, Event Type: start, Timestamp: 181.5667558409249 +Vehicle ID: 1, Event Type: end, Timestamp: 181.56865269630507 +Vehicle ID: 1, Event Type: start, Timestamp: 181.58595532830208 +Vehicle ID: 1, Event Type: end, Timestamp: 181.58704921166273 +Vehicle ID: 1, Event Type: start, Timestamp: 181.59468483531006 +Vehicle ID: 1, Event Type: end, Timestamp: 181.59708977026753 +Vehicle ID: 1, Event Type: start, Timestamp: 181.5986984961878 +Vehicle ID: 1, Event Type: end, Timestamp: 181.6007840163298 +Vehicle ID: 1, Event Type: start, Timestamp: 181.62445046252932 +Vehicle ID: 1, Event Type: end, Timestamp: 181.626534362536 +Vehicle ID: 1, Event Type: start, Timestamp: 181.63025814266047 +Vehicle ID: 1, Event Type: end, Timestamp: 181.63266996014605 +Vehicle ID: 1, Event Type: start, Timestamp: 181.65333433831253 +Vehicle ID: 1, Event Type: end, Timestamp: 181.65595723935047 +Vehicle ID: 1, Event Type: start, Timestamp: 181.66168683099207 +Vehicle ID: 1, Event Type: end, Timestamp: 181.66392157639706 +Vehicle ID: 1, Event Type: start, Timestamp: 181.68900601137156 +Vehicle ID: 1, Event Type: end, Timestamp: 181.68992773778547 +Vehicle ID: 1, Event Type: start, Timestamp: 181.71498060426205 +Vehicle ID: 1, Event Type: end, Timestamp: 181.7181636358954 +Vehicle ID: 1, Event Type: start, Timestamp: 181.72879533722823 +Vehicle ID: 1, Event Type: end, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 +Vehicle ID: 1, Event Type: start, Timestamp: 318.8739996002414 +Vehicle ID: 1, Event Type: end, Timestamp: 318.87628004656733 +Vehicle ID: 1, Event Type: start, Timestamp: 318.93699270648835 +Vehicle ID: 1, Event Type: end, Timestamp: 318.93899849887896 +Vehicle ID: 1, Event Type: start, Timestamp: 318.9826193820508 +Vehicle ID: 1, Event Type: end, Timestamp: 318.9840882892531 +Vehicle ID: 1, Event Type: start, Timestamp: 318.98943591221996 +Vehicle ID: 1, Event Type: end, Timestamp: 318.9919702920645 +Vehicle ID: 1, Event Type: start, Timestamp: 318.99909750369665 +Vehicle ID: 1, Event Type: end, Timestamp: 319.00160602498255 +Vehicle ID: 1, Event Type: start, Timestamp: 319.0384012754422 +Vehicle ID: 1, Event Type: end, Timestamp: 319.03931453970256 +Vehicle ID: 1, Event Type: start, Timestamp: 319.0507978948935 +Vehicle ID: 1, Event Type: end, Timestamp: 319.05204415198 +Vehicle ID: 1, Event Type: start, Timestamp: 319.05420490829243 +Vehicle ID: 1, Event Type: end, Timestamp: 319.0557801174885 +Vehicle ID: 1, Event Type: start, Timestamp: 319.0557801174885 +Vehicle ID: 1, Event Type: end, Timestamp: 319.05795731185646 +Vehicle ID: 1, Event Type: start, Timestamp: 319.1217164745406 +Vehicle ID: 1, Event Type: end, Timestamp: 319.1239337383814 +Vehicle ID: 1, Event Type: start, Timestamp: 319.1239337383814 +Vehicle ID: 1, Event Type: end, Timestamp: 319.1263666849844 +Vehicle ID: 1, Event Type: start, Timestamp: 319.1275027870482 +Vehicle ID: 1, Event Type: end, Timestamp: 319.13013269185126 +Vehicle ID: 1, Event Type: start, Timestamp: 319.13013269185126 +Vehicle ID: 1, Event Type: end, Timestamp: 319.13235121005897 +Vehicle ID: 1, Event Type: start, Timestamp: 319.1337781489722 +Vehicle ID: 1, Event Type: end, Timestamp: 319.1351673206903 +Vehicle ID: 1, Event Type: start, Timestamp: 319.1469901387379 +Vehicle ID: 1, Event Type: end, Timestamp: 319.14933665306376 +Vehicle ID: 1, Event Type: start, Timestamp: 319.14933665306376 +Vehicle ID: 1, Event Type: end, Timestamp: 319.15207512659606 +Vehicle ID: 1, Event Type: start, Timestamp: 319.15207512659606 +Vehicle ID: 1, Event Type: end, Timestamp: 319.15376133634476 +Vehicle ID: 1, Event Type: start, Timestamp: 319.15376133634476 +Vehicle ID: 1, Event Type: end, Timestamp: 319.1563189900259 +Vehicle ID: 1, Event Type: start, Timestamp: 319.1563189900259 +Vehicle ID: 1, Event Type: end, Timestamp: 319.1580083634366 +Vehicle ID: 1, Event Type: start, Timestamp: 319.1580083634366 +Vehicle ID: 1, Event Type: end, Timestamp: 319.16000509419155 +Vehicle ID: 1, Event Type: start, Timestamp: 319.1629949895524 +Vehicle ID: 1, Event Type: end, Timestamp: 319.16551437055034 +Vehicle ID: 1, Event Type: start, Timestamp: 319.18207414950905 +Vehicle ID: 1, Event Type: end, Timestamp: 319.1845969650427 +Vehicle ID: 1, Event Type: start, Timestamp: 319.20695888083725 +Vehicle ID: 1, Event Type: end, Timestamp: 319.208632417297 +Vehicle ID: 1, Event Type: start, Timestamp: 319.2093295884406 +Vehicle ID: 1, Event Type: end, Timestamp: 319.21176813808245 +Vehicle ID: 1, Event Type: start, Timestamp: 319.21813694702246 +Vehicle ID: 1, Event Type: end, Timestamp: 319.2206728502366 +Vehicle ID: 1, Event Type: start, Timestamp: 319.2206728502366 +Vehicle ID: 1, Event Type: end, Timestamp: 319.2237156095032 +Vehicle ID: 1, Event Type: start, Timestamp: 319.2237156095032 +Vehicle ID: 1, Event Type: end, Timestamp: 319.2263499080363 +Vehicle ID: 1, Event Type: start, Timestamp: 319.22762485177896 +Vehicle ID: 1, Event Type: end, Timestamp: 319.2302934611609 +Vehicle ID: 1, Event Type: start, Timestamp: 319.235883924627 +Vehicle ID: 1, Event Type: end, Timestamp: 319.2379971339365 +Vehicle ID: 1, Event Type: start, Timestamp: 319.26354612307733 +Vehicle ID: 1, Event Type: end, Timestamp: 319.26536666089544 +Vehicle ID: 1, Event Type: start, Timestamp: 319.2749876785454 +Vehicle ID: 1, Event Type: end, Timestamp: 319.27753475187853 +Vehicle ID: 1, Event Type: start, Timestamp: 319.27809549580036 +Vehicle ID: 1, Event Type: end, Timestamp: 319.2798857899627 +Vehicle ID: 1, Event Type: start, Timestamp: 319.30891171618094 +Vehicle ID: 1, Event Type: end, Timestamp: 319.311140538021 +Vehicle ID: 1, Event Type: start, Timestamp: 319.34390156118775 +Vehicle ID: 1, Event Type: end, Timestamp: 319.3464925862922 +Vehicle ID: 1, Event Type: start, Timestamp: 319.3464925862922 +Vehicle ID: 1, Event Type: end, Timestamp: 319.3489888217359 +Vehicle ID: 1, Event Type: start, Timestamp: 319.35881462388755 +Vehicle ID: 1, Event Type: end, Timestamp: 319.3613860680425 +Vehicle ID: 1, Event Type: start, Timestamp: 319.3764132856757 +Vehicle ID: 1, Event Type: end, Timestamp: 319.3788886891016 +Vehicle ID: 1, Event Type: start, Timestamp: 319.39401972426026 +Vehicle ID: 1, Event Type: end, Timestamp: 319.39566385756376 +Vehicle ID: 1, Event Type: start, Timestamp: 319.3982648477115 +Vehicle ID: 1, Event Type: end, Timestamp: 319.399060212666 +Vehicle ID: 1, Event Type: start, Timestamp: 319.45737548394754 +Vehicle ID: 1, Event Type: end, Timestamp: 319.45919268439985 +Vehicle ID: 1, Event Type: start, Timestamp: 319.4921651532813 +Vehicle ID: 1, Event Type: end, Timestamp: 319.4934925709501 +Vehicle ID: 1, Event Type: start, Timestamp: 319.50146906117556 +Vehicle ID: 1, Event Type: end, Timestamp: 319.502935380315 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5665774061846 +Vehicle ID: 1, Event Type: end, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 +Vehicle ID: 1, Event Type: start, Timestamp: 455.5935083760501 +Vehicle ID: 1, Event Type: end, Timestamp: 455.59616476020483 +Vehicle ID: 1, Event Type: start, Timestamp: 455.6201845204868 +Vehicle ID: 1, Event Type: end, Timestamp: 455.6219684475737 +Vehicle ID: 1, Event Type: start, Timestamp: 455.6710448429829 +Vehicle ID: 1, Event Type: end, Timestamp: 455.67358033940076 +Vehicle ID: 1, Event Type: start, Timestamp: 455.71584365490673 +Vehicle ID: 1, Event Type: end, Timestamp: 455.71710397132875 +Vehicle ID: 1, Event Type: start, Timestamp: 455.72304711599696 +Vehicle ID: 1, Event Type: end, Timestamp: 455.7252157521757 +Vehicle ID: 1, Event Type: start, Timestamp: 455.7386002824134 +Vehicle ID: 1, Event Type: end, Timestamp: 455.741131049596 +Vehicle ID: 1, Event Type: start, Timestamp: 455.741131049596 +Vehicle ID: 1, Event Type: end, Timestamp: 455.7427439203659 +Vehicle ID: 1, Event Type: start, Timestamp: 455.76918328665187 +Vehicle ID: 1, Event Type: end, Timestamp: 455.77164494212485 +Vehicle ID: 1, Event Type: start, Timestamp: 455.7877362679247 +Vehicle ID: 1, Event Type: end, Timestamp: 455.79037126864955 +Vehicle ID: 1, Event Type: start, Timestamp: 455.7912839961487 +Vehicle ID: 1, Event Type: end, Timestamp: 455.7927523486481 +Vehicle ID: 1, Event Type: start, Timestamp: 455.7951227593967 +Vehicle ID: 1, Event Type: end, Timestamp: 455.7969668175898 +Vehicle ID: 1, Event Type: start, Timestamp: 455.82361524748967 +Vehicle ID: 1, Event Type: end, Timestamp: 455.82560791859447 +Vehicle ID: 1, Event Type: start, Timestamp: 455.8257649583366 +Vehicle ID: 1, Event Type: end, Timestamp: 455.8275480009234 +Vehicle ID: 1, Event Type: start, Timestamp: 455.84228499608304 +Vehicle ID: 1, Event Type: end, Timestamp: 455.8444655856741 +Vehicle ID: 1, Event Type: start, Timestamp: 455.84767145438695 +Vehicle ID: 1, Event Type: end, Timestamp: 455.8502175747334 +Vehicle ID: 1, Event Type: start, Timestamp: 455.86578237136786 +Vehicle ID: 1, Event Type: end, Timestamp: 455.8673254101328 +Vehicle ID: 1, Event Type: start, Timestamp: 455.8870387902212 +Vehicle ID: 1, Event Type: end, Timestamp: 455.88852568508025 +Vehicle ID: 1, Event Type: start, Timestamp: 455.8889936327316 +Vehicle ID: 1, Event Type: end, Timestamp: 455.891214898909 +Vehicle ID: 1, Event Type: start, Timestamp: 455.8993710615559 +Vehicle ID: 1, Event Type: end, Timestamp: 455.9015490408544 +Vehicle ID: 1, Event Type: start, Timestamp: 455.9068742779516 +Vehicle ID: 1, Event Type: end, Timestamp: 455.9093573908465 +Vehicle ID: 1, Event Type: start, Timestamp: 455.91040444103027 +Vehicle ID: 1, Event Type: end, Timestamp: 455.91238374649697 +Vehicle ID: 1, Event Type: start, Timestamp: 455.91238374649697 +Vehicle ID: 1, Event Type: end, Timestamp: 455.9143494742705 +Vehicle ID: 1, Event Type: start, Timestamp: 455.94020943031353 +Vehicle ID: 1, Event Type: end, Timestamp: 455.9423955117434 +Vehicle ID: 1, Event Type: start, Timestamp: 455.9544088263976 +Vehicle ID: 1, Event Type: end, Timestamp: 455.9562817041935 +Vehicle ID: 1, Event Type: start, Timestamp: 455.9620472198123 +Vehicle ID: 1, Event Type: end, Timestamp: 455.96467626557023 +Vehicle ID: 1, Event Type: start, Timestamp: 455.96522068789085 +Vehicle ID: 1, Event Type: end, Timestamp: 455.9674427872417 +Vehicle ID: 1, Event Type: start, Timestamp: 455.9754971135885 +Vehicle ID: 1, Event Type: end, Timestamp: 455.97810870917374 +Vehicle ID: 1, Event Type: start, Timestamp: 455.9825210891616 +Vehicle ID: 1, Event Type: end, Timestamp: 455.98525693109116 +Vehicle ID: 1, Event Type: start, Timestamp: 455.99132724206964 +Vehicle ID: 1, Event Type: end, Timestamp: 455.9935926815302 +Vehicle ID: 1, Event Type: start, Timestamp: 456.0025517607751 +Vehicle ID: 1, Event Type: end, Timestamp: 456.00395845164746 +Vehicle ID: 1, Event Type: start, Timestamp: 456.00874052479617 +Vehicle ID: 1, Event Type: end, Timestamp: 456.0114898333702 +Vehicle ID: 1, Event Type: start, Timestamp: 456.01852998445855 +Vehicle ID: 1, Event Type: end, Timestamp: 456.020438927436 +Vehicle ID: 1, Event Type: start, Timestamp: 456.02203586066327 +Vehicle ID: 1, Event Type: end, Timestamp: 456.02488402478957 +Vehicle ID: 1, Event Type: start, Timestamp: 456.02488402478957 +Vehicle ID: 1, Event Type: end, Timestamp: 456.0273705536782 +Vehicle ID: 1, Event Type: start, Timestamp: 456.0549417505769 +Vehicle ID: 1, Event Type: end, Timestamp: 456.05667909216777 +Vehicle ID: 1, Event Type: start, Timestamp: 456.0657118548089 +Vehicle ID: 1, Event Type: end, Timestamp: 456.0674525970771 +Vehicle ID: 1, Event Type: start, Timestamp: 456.0674525970771 +Vehicle ID: 1, Event Type: end, Timestamp: 456.06989565024287 +Vehicle ID: 1, Event Type: start, Timestamp: 456.0889000380974 +Vehicle ID: 1, Event Type: end, Timestamp: 456.0905494843689 +Vehicle ID: 1, Event Type: start, Timestamp: 456.0905494843689 +Vehicle ID: 1, Event Type: end, Timestamp: 456.092916840814 +Vehicle ID: 1, Event Type: start, Timestamp: 456.09542709138907 +Vehicle ID: 1, Event Type: end, Timestamp: 456.09731196033806 +Vehicle ID: 1, Event Type: start, Timestamp: 456.14600852000893 +Vehicle ID: 1, Event Type: end, Timestamp: 456.1483024793519 +Vehicle ID: 1, Event Type: start, Timestamp: 456.1488599168504 +Vehicle ID: 1, Event Type: end, Timestamp: 456.1507504373611 +Vehicle ID: 1, Event Type: start, Timestamp: 456.1602464891671 +Vehicle ID: 1, Event Type: end, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 +Vehicle ID: 1, Event Type: start, Timestamp: 592.8712589457842 +Vehicle ID: 1, Event Type: end, Timestamp: 592.8733683856243 +Vehicle ID: 1, Event Type: start, Timestamp: 592.8736394625226 +Vehicle ID: 1, Event Type: end, Timestamp: 592.8750313158198 +Vehicle ID: 1, Event Type: start, Timestamp: 592.9353394800434 +Vehicle ID: 1, Event Type: end, Timestamp: 592.9382762981148 +Vehicle ID: 1, Event Type: start, Timestamp: 592.9990873748666 +Vehicle ID: 1, Event Type: end, Timestamp: 593.0008007974837 +Vehicle ID: 1, Event Type: start, Timestamp: 593.0084923381397 +Vehicle ID: 1, Event Type: end, Timestamp: 593.010082688741 +Vehicle ID: 1, Event Type: start, Timestamp: 593.0102127824845 +Vehicle ID: 1, Event Type: end, Timestamp: 593.012848272023 +Vehicle ID: 1, Event Type: start, Timestamp: 593.0470636790612 +Vehicle ID: 1, Event Type: end, Timestamp: 593.0496752964842 +Vehicle ID: 1, Event Type: start, Timestamp: 593.0644152774131 +Vehicle ID: 1, Event Type: end, Timestamp: 593.0667383921534 +Vehicle ID: 1, Event Type: start, Timestamp: 593.0792548035583 +Vehicle ID: 1, Event Type: end, Timestamp: 593.0821018737204 +Vehicle ID: 1, Event Type: start, Timestamp: 593.0926409182558 +Vehicle ID: 1, Event Type: end, Timestamp: 593.094788047289 +Vehicle ID: 1, Event Type: start, Timestamp: 593.094788047289 +Vehicle ID: 1, Event Type: end, Timestamp: 593.0963718999838 +Vehicle ID: 1, Event Type: start, Timestamp: 593.0963718999838 +Vehicle ID: 1, Event Type: end, Timestamp: 593.0985080845692 +Vehicle ID: 1, Event Type: start, Timestamp: 593.1157171448485 +Vehicle ID: 1, Event Type: end, Timestamp: 593.1181732875646 +Vehicle ID: 1, Event Type: start, Timestamp: 593.1215881462938 +Vehicle ID: 1, Event Type: end, Timestamp: 593.1235479619103 +Vehicle ID: 1, Event Type: start, Timestamp: 593.1299989406497 +Vehicle ID: 1, Event Type: end, Timestamp: 593.1327951475716 +Vehicle ID: 1, Event Type: start, Timestamp: 593.1335953329997 +Vehicle ID: 1, Event Type: end, Timestamp: 593.1357314233557 +Vehicle ID: 1, Event Type: start, Timestamp: 593.1508111348357 +Vehicle ID: 1, Event Type: end, Timestamp: 593.1529387377337 +Vehicle ID: 1, Event Type: start, Timestamp: 593.1605126595892 +Vehicle ID: 1, Event Type: end, Timestamp: 593.1621645242269 +Vehicle ID: 1, Event Type: start, Timestamp: 593.1644551070243 +Vehicle ID: 1, Event Type: end, Timestamp: 593.166176033041 +Vehicle ID: 1, Event Type: start, Timestamp: 593.1662781210566 +Vehicle ID: 1, Event Type: end, Timestamp: 593.1689133155484 +Vehicle ID: 1, Event Type: start, Timestamp: 593.1747072979475 +Vehicle ID: 1, Event Type: end, Timestamp: 593.1768576174082 +Vehicle ID: 1, Event Type: start, Timestamp: 593.183167935771 +Vehicle ID: 1, Event Type: end, Timestamp: 593.1853101827064 +Vehicle ID: 1, Event Type: start, Timestamp: 593.1855667067207 +Vehicle ID: 1, Event Type: end, Timestamp: 593.1884089551302 +Vehicle ID: 1, Event Type: start, Timestamp: 593.1884089551302 +Vehicle ID: 1, Event Type: end, Timestamp: 593.1907226327752 +Vehicle ID: 1, Event Type: start, Timestamp: 593.1948435437765 +Vehicle ID: 1, Event Type: end, Timestamp: 593.1972405389101 +Vehicle ID: 1, Event Type: start, Timestamp: 593.1972405389101 +Vehicle ID: 1, Event Type: end, Timestamp: 593.1991691786975 +Vehicle ID: 1, Event Type: start, Timestamp: 593.2035779294546 +Vehicle ID: 1, Event Type: end, Timestamp: 593.2056058410363 +Vehicle ID: 1, Event Type: start, Timestamp: 593.210942339435 +Vehicle ID: 1, Event Type: end, Timestamp: 593.2137801913258 +Vehicle ID: 1, Event Type: start, Timestamp: 593.2188450241665 +Vehicle ID: 1, Event Type: end, Timestamp: 593.2222206642449 +Vehicle ID: 1, Event Type: start, Timestamp: 593.2399428482207 +Vehicle ID: 1, Event Type: end, Timestamp: 593.242464869466 +Vehicle ID: 1, Event Type: start, Timestamp: 593.2456079453012 +Vehicle ID: 1, Event Type: end, Timestamp: 593.2470978353582 +Vehicle ID: 1, Event Type: start, Timestamp: 593.2785426389594 +Vehicle ID: 1, Event Type: end, Timestamp: 593.2807770881544 +Vehicle ID: 1, Event Type: start, Timestamp: 593.2807770881544 +Vehicle ID: 1, Event Type: end, Timestamp: 593.2827208144049 +Vehicle ID: 1, Event Type: start, Timestamp: 593.2827208144049 +Vehicle ID: 1, Event Type: end, Timestamp: 593.2848963674039 +Vehicle ID: 1, Event Type: start, Timestamp: 593.2953886900244 +Vehicle ID: 1, Event Type: end, Timestamp: 593.2984313364557 +Vehicle ID: 1, Event Type: start, Timestamp: 593.3246135919338 +Vehicle ID: 1, Event Type: end, Timestamp: 593.326769112242 +Vehicle ID: 1, Event Type: start, Timestamp: 593.3327265420006 +Vehicle ID: 1, Event Type: end, Timestamp: 593.3356739321351 +Vehicle ID: 1, Event Type: start, Timestamp: 593.3827099347502 +Vehicle ID: 1, Event Type: end, Timestamp: 593.3851703113219 +Vehicle ID: 1, Event Type: start, Timestamp: 593.3956360099141 +Vehicle ID: 1, Event Type: end, Timestamp: 593.3975338318866 +Vehicle ID: 1, Event Type: start, Timestamp: 593.4025449697273 +Vehicle ID: 1, Event Type: end, Timestamp: 593.405104826971 +Vehicle ID: 1, Event Type: start, Timestamp: 593.4114470403027 +Vehicle ID: 1, Event Type: end, Timestamp: 593.4133398178601 +Vehicle ID: 1, Event Type: start, Timestamp: 593.4508617986019 +Vehicle ID: 1, Event Type: end, Timestamp: 593.4533190260203 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5694365167931 +Vehicle ID: 1, Event Type: end, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 +Vehicle ID: 1, Event Type: start, Timestamp: 731.3206304261964 +Vehicle ID: 1, Event Type: end, Timestamp: 731.321566466064 +Vehicle ID: 1, Event Type: start, Timestamp: 731.3901405098518 +Vehicle ID: 1, Event Type: end, Timestamp: 731.3925583722282 +Vehicle ID: 1, Event Type: start, Timestamp: 731.4065995998343 +Vehicle ID: 1, Event Type: end, Timestamp: 731.4085454441544 +Vehicle ID: 1, Event Type: start, Timestamp: 731.4242422682981 +Vehicle ID: 1, Event Type: end, Timestamp: 731.4260268328289 +Vehicle ID: 1, Event Type: start, Timestamp: 731.4286287171702 +Vehicle ID: 1, Event Type: end, Timestamp: 731.4303211551728 +Vehicle ID: 1, Event Type: start, Timestamp: 731.4489301078631 +Vehicle ID: 1, Event Type: end, Timestamp: 731.4509490325895 +Vehicle ID: 1, Event Type: start, Timestamp: 731.4581125439915 +Vehicle ID: 1, Event Type: end, Timestamp: 731.4603016755536 +Vehicle ID: 1, Event Type: start, Timestamp: 731.4897136714553 +Vehicle ID: 1, Event Type: end, Timestamp: 731.4919371636745 +Vehicle ID: 1, Event Type: start, Timestamp: 731.4919371636745 +Vehicle ID: 1, Event Type: end, Timestamp: 731.4937557594742 +Vehicle ID: 1, Event Type: start, Timestamp: 731.5016164662845 +Vehicle ID: 1, Event Type: end, Timestamp: 731.503554279859 +Vehicle ID: 1, Event Type: start, Timestamp: 731.5065768092377 +Vehicle ID: 1, Event Type: end, Timestamp: 731.508032490001 +Vehicle ID: 1, Event Type: start, Timestamp: 731.5114019934808 +Vehicle ID: 1, Event Type: end, Timestamp: 731.5137050054302 +Vehicle ID: 1, Event Type: start, Timestamp: 731.536995935097 +Vehicle ID: 1, Event Type: end, Timestamp: 731.5391035069686 +Vehicle ID: 1, Event Type: start, Timestamp: 731.5391035069686 +Vehicle ID: 1, Event Type: end, Timestamp: 731.5419164360416 +Vehicle ID: 1, Event Type: start, Timestamp: 731.5425583581189 +Vehicle ID: 1, Event Type: end, Timestamp: 731.5442992067154 +Vehicle ID: 1, Event Type: start, Timestamp: 731.5641475354201 +Vehicle ID: 1, Event Type: end, Timestamp: 731.5655119175985 +Vehicle ID: 1, Event Type: start, Timestamp: 731.578917550465 +Vehicle ID: 1, Event Type: end, Timestamp: 731.581071040115 +Vehicle ID: 1, Event Type: start, Timestamp: 731.5900771757236 +Vehicle ID: 1, Event Type: end, Timestamp: 731.591801397184 +Vehicle ID: 1, Event Type: start, Timestamp: 731.5928135091498 +Vehicle ID: 1, Event Type: end, Timestamp: 731.5953291925514 +Vehicle ID: 1, Event Type: start, Timestamp: 731.6081356013473 +Vehicle ID: 1, Event Type: end, Timestamp: 731.6104174597806 +Vehicle ID: 1, Event Type: start, Timestamp: 731.6104174597806 +Vehicle ID: 1, Event Type: end, Timestamp: 731.6125222865786 +Vehicle ID: 1, Event Type: start, Timestamp: 731.6138195504301 +Vehicle ID: 1, Event Type: end, Timestamp: 731.6158347828781 +Vehicle ID: 1, Event Type: start, Timestamp: 731.6328813499337 +Vehicle ID: 1, Event Type: end, Timestamp: 731.6355213668236 +Vehicle ID: 1, Event Type: start, Timestamp: 731.6355213668236 +Vehicle ID: 1, Event Type: end, Timestamp: 731.6370209416734 +Vehicle ID: 1, Event Type: start, Timestamp: 731.6390831380916 +Vehicle ID: 1, Event Type: end, Timestamp: 731.6418097901131 +Vehicle ID: 1, Event Type: start, Timestamp: 731.6502242707688 +Vehicle ID: 1, Event Type: end, Timestamp: 731.6525909644229 +Vehicle ID: 1, Event Type: start, Timestamp: 731.6527744962549 +Vehicle ID: 1, Event Type: end, Timestamp: 731.6555659836237 +Vehicle ID: 1, Event Type: start, Timestamp: 731.6602002563619 +Vehicle ID: 1, Event Type: end, Timestamp: 731.6621108308668 +Vehicle ID: 1, Event Type: start, Timestamp: 731.6669168851707 +Vehicle ID: 1, Event Type: end, Timestamp: 731.6679828792808 +Vehicle ID: 1, Event Type: start, Timestamp: 731.6823718886171 +Vehicle ID: 1, Event Type: end, Timestamp: 731.6845265064159 +Vehicle ID: 1, Event Type: start, Timestamp: 731.6881690564146 +Vehicle ID: 1, Event Type: end, Timestamp: 731.6903710222352 +Vehicle ID: 1, Event Type: start, Timestamp: 731.6935681565534 +Vehicle ID: 1, Event Type: end, Timestamp: 731.6954573784978 +Vehicle ID: 1, Event Type: start, Timestamp: 731.714647127386 +Vehicle ID: 1, Event Type: end, Timestamp: 731.7169689008024 +Vehicle ID: 1, Event Type: start, Timestamp: 731.7356573736939 +Vehicle ID: 1, Event Type: end, Timestamp: 731.7383715645221 +Vehicle ID: 1, Event Type: start, Timestamp: 731.7398249039643 +Vehicle ID: 1, Event Type: end, Timestamp: 731.7420755946144 +Vehicle ID: 1, Event Type: start, Timestamp: 731.7429937451773 +Vehicle ID: 1, Event Type: end, Timestamp: 731.7446846419817 +Vehicle ID: 1, Event Type: start, Timestamp: 731.7523512720833 +Vehicle ID: 1, Event Type: end, Timestamp: 731.7549358529423 +Vehicle ID: 1, Event Type: start, Timestamp: 731.7611068709917 +Vehicle ID: 1, Event Type: end, Timestamp: 731.7623102013866 +Vehicle ID: 1, Event Type: start, Timestamp: 731.8316016379678 +Vehicle ID: 1, Event Type: end, Timestamp: 731.8339964771505 +Vehicle ID: 1, Event Type: start, Timestamp: 731.8428312427201 +Vehicle ID: 1, Event Type: end, Timestamp: 731.8452376597625 +Vehicle ID: 1, Event Type: start, Timestamp: 731.8637394255231 +Vehicle ID: 1, Event Type: end, Timestamp: 731.8652517567886 +Vehicle ID: 1, Event Type: start, Timestamp: 731.8665432571692 +Vehicle ID: 1, Event Type: end, Timestamp: 731.8681346599969 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9282189869436 +Vehicle ID: 1, Event Type: end, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 +Vehicle ID: 1, Event Type: start, Timestamp: 867.1716320897814 +Vehicle ID: 1, Event Type: end, Timestamp: 867.1732938466214 +Vehicle ID: 1, Event Type: start, Timestamp: 867.1999179923602 +Vehicle ID: 1, Event Type: end, Timestamp: 867.2018399982803 +Vehicle ID: 1, Event Type: start, Timestamp: 867.2182623528773 +Vehicle ID: 1, Event Type: end, Timestamp: 867.2197361550462 +Vehicle ID: 1, Event Type: start, Timestamp: 867.2221629321745 +Vehicle ID: 1, Event Type: end, Timestamp: 867.2242879784972 +Vehicle ID: 1, Event Type: start, Timestamp: 867.2484489022142 +Vehicle ID: 1, Event Type: end, Timestamp: 867.2504504717932 +Vehicle ID: 1, Event Type: start, Timestamp: 867.2629491496681 +Vehicle ID: 1, Event Type: end, Timestamp: 867.2647570917936 +Vehicle ID: 1, Event Type: start, Timestamp: 867.2647570917936 +Vehicle ID: 1, Event Type: end, Timestamp: 867.2668805030337 +Vehicle ID: 1, Event Type: start, Timestamp: 867.2991597652493 +Vehicle ID: 1, Event Type: end, Timestamp: 867.3008483940196 +Vehicle ID: 1, Event Type: start, Timestamp: 867.3138306533378 +Vehicle ID: 1, Event Type: end, Timestamp: 867.3158592754602 +Vehicle ID: 1, Event Type: start, Timestamp: 867.3208365469783 +Vehicle ID: 1, Event Type: end, Timestamp: 867.3233121669354 +Vehicle ID: 1, Event Type: start, Timestamp: 867.3252378046411 +Vehicle ID: 1, Event Type: end, Timestamp: 867.3272010350114 +Vehicle ID: 1, Event Type: start, Timestamp: 867.3314186434645 +Vehicle ID: 1, Event Type: end, Timestamp: 867.3332200259315 +Vehicle ID: 1, Event Type: start, Timestamp: 867.3351356067049 +Vehicle ID: 1, Event Type: end, Timestamp: 867.3371818581517 +Vehicle ID: 1, Event Type: start, Timestamp: 867.3372192107514 +Vehicle ID: 1, Event Type: end, Timestamp: 867.3382221361878 +Vehicle ID: 1, Event Type: start, Timestamp: 867.3382221361878 +Vehicle ID: 1, Event Type: end, Timestamp: 867.3399276060737 +Vehicle ID: 1, Event Type: start, Timestamp: 867.3399276060737 +Vehicle ID: 1, Event Type: end, Timestamp: 867.3412881274744 +Vehicle ID: 1, Event Type: start, Timestamp: 867.3418609183678 +Vehicle ID: 1, Event Type: end, Timestamp: 867.3430499677985 +Vehicle ID: 1, Event Type: start, Timestamp: 867.3435304703618 +Vehicle ID: 1, Event Type: end, Timestamp: 867.3456220205852 +Vehicle ID: 1, Event Type: start, Timestamp: 867.3575063743522 +Vehicle ID: 1, Event Type: end, Timestamp: 867.3591556200575 +Vehicle ID: 1, Event Type: start, Timestamp: 867.3696670682606 +Vehicle ID: 1, Event Type: end, Timestamp: 867.3721724223768 +Vehicle ID: 1, Event Type: start, Timestamp: 867.4022318850584 +Vehicle ID: 1, Event Type: end, Timestamp: 867.4048376380688 +Vehicle ID: 1, Event Type: start, Timestamp: 867.4048376380688 +Vehicle ID: 1, Event Type: end, Timestamp: 867.4077500304076 +Vehicle ID: 1, Event Type: start, Timestamp: 867.4077500304076 +Vehicle ID: 1, Event Type: end, Timestamp: 867.4102612977832 +Vehicle ID: 1, Event Type: start, Timestamp: 867.4102612977832 +Vehicle ID: 1, Event Type: end, Timestamp: 867.4131776000314 +Vehicle ID: 1, Event Type: start, Timestamp: 867.4131776000314 +Vehicle ID: 1, Event Type: end, Timestamp: 867.4153025780848 +Vehicle ID: 1, Event Type: start, Timestamp: 867.4161542614968 +Vehicle ID: 1, Event Type: end, Timestamp: 867.418224797956 +Vehicle ID: 1, Event Type: start, Timestamp: 867.4419518297669 +Vehicle ID: 1, Event Type: end, Timestamp: 867.4441587744568 +Vehicle ID: 1, Event Type: start, Timestamp: 867.4443828058725 +Vehicle ID: 1, Event Type: end, Timestamp: 867.4466402830319 +Vehicle ID: 1, Event Type: start, Timestamp: 867.4513101495864 +Vehicle ID: 1, Event Type: end, Timestamp: 867.4539381552343 +Vehicle ID: 1, Event Type: start, Timestamp: 867.4539381552343 +Vehicle ID: 1, Event Type: end, Timestamp: 867.455085601957 +Vehicle ID: 1, Event Type: start, Timestamp: 867.4572242409181 +Vehicle ID: 1, Event Type: end, Timestamp: 867.4598538463532 +Vehicle ID: 1, Event Type: start, Timestamp: 867.4770465455317 +Vehicle ID: 1, Event Type: end, Timestamp: 867.4793186657322 +Vehicle ID: 1, Event Type: start, Timestamp: 867.4793186657322 +Vehicle ID: 1, Event Type: end, Timestamp: 867.4812180038051 +Vehicle ID: 1, Event Type: start, Timestamp: 867.4909550291154 +Vehicle ID: 1, Event Type: end, Timestamp: 867.4937322801628 +Vehicle ID: 1, Event Type: start, Timestamp: 867.4985611840108 +Vehicle ID: 1, Event Type: end, Timestamp: 867.5004705622972 +Vehicle ID: 1, Event Type: start, Timestamp: 867.5068929947007 +Vehicle ID: 1, Event Type: end, Timestamp: 867.509498467419 +Vehicle ID: 1, Event Type: start, Timestamp: 867.575410130665 +Vehicle ID: 1, Event Type: end, Timestamp: 867.5776119168584 +Vehicle ID: 1, Event Type: start, Timestamp: 867.589805181599 +Vehicle ID: 1, Event Type: end, Timestamp: 867.5917934543764 +Vehicle ID: 1, Event Type: start, Timestamp: 867.6030546230812 +Vehicle ID: 1, Event Type: end, Timestamp: 867.6053061374769 +Vehicle ID: 1, Event Type: start, Timestamp: 867.6053177439076 +Vehicle ID: 1, Event Type: end, Timestamp: 867.6063065043915 +Vehicle ID: 1, Event Type: start, Timestamp: 867.6739003818442 +Vehicle ID: 1, Event Type: end, Timestamp: 867.6755726234123 +Vehicle ID: 1, Event Type: start, Timestamp: 867.729353440657 +Vehicle ID: 1, Event Type: end, Timestamp: 867.7317430268384 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7852778925983 +Vehicle ID: 1, Event Type: end, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 +Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 diff --git a/python/lifts/merged_baseline.py b/python/lifts/merged_baseline.py new file mode 100644 index 00000000..9e41832e --- /dev/null +++ b/python/lifts/merged_baseline.py @@ -0,0 +1,454 @@ +import simpy +import random +import pandas as pd +from parameters import * +from distances import * +from dictionary import * +from vehicle_performance import record_vehicle_event, save_average_times, save_vehicle_logs + + +CRANE_NUMBER = 2 +HOSTLER_NUMBER = 20 + +def record_event(container_id, event_type, timestamp): + if container_id not in container_events: + container_events[container_id] = {} + container_events[container_id][event_type] = timestamp + + +def handle_truck_arrivals(env, in_gate_resource, truck_numbers): + global all_trucks_ready_event, truck_processed + + truck_id = 1 + truck_processed = 0 + + while truck_id <= TRUCK_NUMBERS: + inter_arrival_time = random.expovariate(1 / TRUCK_ARRIVAL_MEAN) + yield env.timeout(inter_arrival_time) + truck_arrival_time.append(env.now) + + env.process(truck_through_gate(env, in_gate_resource, truck_id)) + truck_id += 1 + + if truck_id > TRUCK_NUMBERS: + # print(f"truck_id = {truck_id} vs TRUCK_NUM = {TRUCK_NUMBERS}") + if not all_trucks_ready_event.triggered: + all_trucks_ready_event.succeed() + # print(f"{env.now}: All trucks arrived for the {TRAIN_ID} train.") + + +def truck_through_gate(env, in_gate_resource, truck_id): + global last_leave_time, INBOUND_CONTAINER_NUMBER, OUTBOUND_CONTAINER_NUMBER + + with in_gate_resource.request() as request: + yield request + wait_time = max(0, truck_arrival_time[truck_id - 1] - last_leave_time) + if wait_time <= 0: + wait_time = 0 # first arriving trucks + print(f"Truck {truck_id} enters the gate without waiting") + else: + print(f"Truck {truck_id} enters the gate and queued for {wait_time} hrs") + truck_waiting_time.append(wait_time) + + yield env.timeout(TRUCK_INGATE_TIME + random.uniform(0, TRUCK_INGATE_TIME_DEV)) + + # Case 1: Normal handling when OC >= IC (all trucks have containers) + if OUTBOUND_CONTAINER_NUMBER >= INBOUND_CONTAINER_NUMBER: + env.process(handle_container(env, truck_id)) + + # Case 2: OC < IC, extra empty trucks are needed + else: + if truck_id <= OUTBOUND_CONTAINER_NUMBER: + env.process(handle_container(env, truck_id)) # Loaded trucks + else: + env.process(empty_truck(env, truck_id)) # Empty trucks + + +def handle_container(env, truck_id): + global outbound_container_id_counter, last_leave_time + + container_id = outbound_container_id_counter + 1 + outbound_container_id_counter += 1 + record_event(container_id, 'truck_arrival', env.now) + + d_g_dist = create_triang_distribution(d_t_min, d_t_avg, d_t_max).rvs() + yield env.timeout(d_g_dist / (2 * TRUCK_SPEED_LIMIT)) + + record_event(container_id, 'truck_drop_off', env.now) + print(f"{env.now}: Truck {truck_id} drops outbound container {container_id}.") + last_leave_time = env.now + + +def empty_truck(env, truck_id): + global inbound_container_id_counter, last_leave_time + + container_id = inbound_container_id_counter + OUTBOUND_CONTAINER_NUMBER + 1 + record_event(container_id, 'truck_arrival', env.now) + + d_g_dist = create_triang_distribution(d_t_min, d_t_avg, d_t_max).rvs() + yield env.timeout(d_g_dist / (2 * TRUCK_SPEED_LIMIT)) + + record_event(container_id, 'truck_drop_off', env.now) + print(f"{env.now}: Empty truck {truck_id} arrives.") + last_leave_time = env.now + + +def train_arrival(env, train_timetable, train_processing, cranes, hostlers, chassis, in_gate_resource, outbound_containers_store, truck_store, out_gate_resource): +# def train_arrival(env, train_processing, cranes, in_gate_resource, outbound_containers_store, truck_store, train_timetable): + global train_id_counter, TRUCK_NUMBERS, INBOUND_CONTAINER_NUMBER, OUTBOUND_CONTAINER_NUMBER, TRAIN_DEPARTURE_HR + + + for i, train in enumerate(train_timetable): + TRAIN_ARRIVAL_HR = train['arrival_time'] # 获取列车到达时间 + TRAIN_DEPARTURE_HR = train['departure_time'] # 获取列车离开时间 + INBOUND_CONTAINER_NUMBER = train['full_cars'] + OUTBOUND_CONTAINER_NUMBER = train['oc_number'] + TRUCK_NUMBERS = train['truck_number'] + TRAIN_ID = train['train_id'] + + print(f"---------- Next Train {TRAIN_ID} Is On the Way ----------") + print(f"IC {INBOUND_CONTAINER_NUMBER}") + print(f"OC {OUTBOUND_CONTAINER_NUMBER}") + + # 如果不是第一列火车,在上一列火车离开后安排卡车的到达 + previous_train_departure = train_timetable[i-1]['departure_time'] + print(f"Schedule {TRUCK_NUMBERS} Trucks arriving between previous train departure at {previous_train_departure} and current train arrival at {TRAIN_ARRIVAL_HR}") + env.process(handle_truck_arrivals(env, in_gate_resource, outbound_containers_store)) + + # 等待当前火车到达的时间 + yield env.timeout(TRAIN_ARRIVAL_HR - env.now) + + train_id = train_id_counter + print(f"Train {train_id} arrives at {env.now}") + + with train_processing.request() as request: + yield request + oc_chassis_filled_event = env.event() + # yield env.process(process_train(env, train_id, cranes, TRAIN_DEPARTURE_HR)) + yield env.process(process_train(env, train_id, cranes, hostlers, chassis, in_gate_resource, outbound_containers_store, truck_store, train_processing, oc_chassis_filled_event, out_gate_resource)) + train_id_counter += 1 + + +def process_train(env, train_id, cranes, hostlers, chassis, in_gate_resource, outbound_containers_store, truck_store, train_processing, oc_chassis_filled_event, out_gate_resource): + global time_per_train, train_series, INBOUND_CONTAINER_NUMBER, OUTBOUND_CONTAINER_NUMBER + + start_time = env.now + + # Cranes unload all IC + unload_processes = [] + chassis_inbound_ids = [] # To save chassis_id, current_inbound_id to hostler_transfer_IC_single_loop + for _ in range(INBOUND_CONTAINER_NUMBER): + unload_process = env.process(crane_and_chassis(env, train_id, 'unload', cranes, hostlers, chassis, truck_store, train_processing, outbound_containers_store, in_gate_resource, out_gate_resource, oc_chassis_filled_event)) + unload_processes.append(unload_process) + # All IC are processed + results = yield simpy.events.AllOf(env, unload_processes) + + # To pass chassis_id, current_inbound_id to hostler_transfer_IC_single_loop as a list from calling chassis_inbound_ids + for result in results.values(): + chassis_id, current_inbound_id = result + chassis_inbound_ids.append((chassis_id, current_inbound_id)) + + # Are all chassis filled with OC? + # Once all OC are dropped by hostlers, crane start working + print("Check before cranes start: Chassis filled with OC (-1) ? ") + print(f"Chassis status after OC processed is: {chassis_status}, where ") + print(f"there are {chassis_status.count(0)} chassis is filled with OC (0)") + print(f"there are {chassis_status.count(-1)} chassis is filled with empty (-1)") + print(f"there are {chassis_status.count(1)} chassis is filled with IC (1)") + + if chassis_status.count(1) != 0: # IC is not fully processed + print("Haven't finished all IC yet") + # env.process(hostler_transfer_IC_single_loop(env, hostlers, 'inbound', chassis, chassis_id, current_inbound_id, truck_store, oc_chassis_filled_event, out_gate_resource)) + env.process(hostler_transfer_IC_single_loop(env, hostlers, 'inbound', chassis, chassis_id, current_inbound_id, truck_store, cranes, train_processing, + outbound_containers_store, in_gate_resource, oc_chassis_filled_event, out_gate_resource)) + + yield oc_chassis_filled_event + + # Cranes move all OC to chassis + load_processes = [] + for chassis_id in range(1, OUTBOUND_CONTAINER_NUMBER + 1): + load_process = env.process(crane_and_chassis(env, train_id, 'load', cranes, hostlers, chassis, truck_store, train_processing, outbound_containers_store, in_gate_resource, oc_chassis_filled_event, out_gate_resource, chassis_id=chassis_id)) + load_processes.append(load_process) + yield simpy.events.AllOf(env, load_processes) + + # Check if all outbound containers are loaded (all chassis is empty 0), the train departs + if chassis_status.count(-1) == TRAIN_UNITS: + oc_chassis_filled_event.succeed() + print(f"Train {TRAIN_ID} is ready to depart.") + env.process(train_departure(env, train_id)) + time_per_train.append(env.now - start_time) + + end_time = env.now + time_per_train.append(end_time - start_time) + train_series += 1 + + +def crane_and_chassis(env, train_id, action, cranes, hostlers, chassis, truck_store, train_processing, outbound_containers_store, in_gate_resource, out_gate_resource, oc_chassis_filled_event, chassis_id=None): + global crane_id_counter, chassis_status, inbound_container_id_counter, outbound_containers_mapping, outbound_container_id_counter, INBOUND_CONTAINER_NUMBER, OUTBOUND_CONTAINER_NUMBER + + with cranes.request() as request: + yield request + + start_time = env.now + record_vehicle_event('crane', crane_id_counter, 'start', start_time) # performance record: starting + + if action == 'unload': + crane_id = crane_id_counter + crane_id_counter = (crane_id_counter % CRANE_NUMBER) + 1 + + chassis_id = ((inbound_container_id_counter - 1) % CHASSIS_NUMBER) + 1 + + current_inbound_id = inbound_container_id_counter + inbound_container_id_counter += 1 + yield env.timeout(CRANE_UNLOAD_CONTAINER_TIME_MEAN + random.uniform(0, CRANE_MOVE_DEV_TIME)) + + end_time = env.now + record_vehicle_event('crane', crane_id_counter, 'end', end_time) # performance record: ending + + # print(f"length of chassis status: {len(chassis_status)}") + chassis_status[chassis_id - 1] = 1 + record_event(current_inbound_id, 'crane_unload', env.now) + print(f"Crane {crane_id} unloads inbound container {current_inbound_id} at chassis {chassis_id} from train {train_id} at {env.now}") + env.process(hostler_transfer(env, hostlers, 'inbound', chassis, chassis_id, current_inbound_id, truck_store, cranes, train_processing, outbound_containers_store, in_gate_resource, oc_chassis_filled_event, out_gate_resource)) + + return chassis_id, current_inbound_id + + elif action == 'load': + if chassis_id not in outbound_containers_mapping: + print(f"Error: No outbound container mapped to chassis {chassis_id} at {env.now}") + return + + container_id = outbound_containers_mapping[chassis_id] # Retrieve container ID from mapping + + if CRANE_NUMBER == 1: + crane_id = 1 + else: + crane_id = (chassis_id % CRANE_NUMBER) + 1 + + yield env.timeout(CRANE_LOAD_CONTAINER_TIME_MEAN + random.uniform(0, CRANE_MOVE_DEV_TIME)) + chassis_status[chassis_id - 1] = -1 + record_event(container_id, 'crane_load', env.now) + print(f"Crane {crane_id} loads outbound container {container_id} from chassis {chassis_id} to train {TRAIN_ID} at {env.now}") + + +def hostler_transfer(env, hostlers, container_type, chassis, chassis_id, container_id, truck_store, cranes, train_processing, outbound_containers_store, in_gate_resource, oc_chassis_filled_event, out_gate_resource): + global hostler_id_counter + + with hostlers.request() as request: + yield request + + start_time = env.now + record_vehicle_event('hostler', hostler_id_counter, 'start', start_time) # performance record + + hostler_id = hostler_id_counter + hostler_id_counter = (hostler_id_counter % HOSTLER_NUMBER) + 1 + + with chassis.request() as chassis_request: + yield chassis_request + + if container_type == 'inbound' and chassis_status[chassis_id - 1] == 1: + d_t_dist = create_triang_distribution(d_t_min, d_t_avg, d_t_max).rvs() + d_y_dist = create_triang_distribution(d_y_min, d_y_avg, d_y_max).rvs() + HOSTLER_TRANSPORT_CONTAINER_TIME = (d_t_dist + d_y_dist) / (2 * HOSTLER_SPEED_LIMIT) + yield env.timeout(HOSTLER_TRANSPORT_CONTAINER_TIME) + chassis_status[chassis_id - 1] = -1 + record_event(container_id, 'hostler_pickup', env.now) + print(f"Hostler {hostler_id} picks up inbound container {container_id} from chassis {chassis_id} to parking area at {env.now}") + yield env.timeout(HOSTLER_TRANSPORT_CONTAINER_TIME) + record_event(container_id, 'hostler_dropoff', env.now) + print(f"Hostler {hostler_id} drops off inbound container {container_id} from chassis {chassis_id} to parking area at {env.now}") + + end_time = env.now + record_vehicle_event('hostler', hostler_id_counter, 'end', end_time) # performance record + + yield env.process(notify_truck(env, truck_store, container_id, out_gate_resource)) + + # Check and process outbound container + yield env.process(handle_outbound_container(env, hostlers, chassis, chassis_id, truck_store, cranes, + train_processing, outbound_containers_store, + in_gate_resource, oc_chassis_filled_event)) + + # When all chassis are either filled with outbound container or empty, the cranes start loading + if chassis_status.count(0) == OUTBOUND_CONTAINER_NUMBER and chassis_status.count( + -1) == TRAIN_UNITS - OUTBOUND_CONTAINER_NUMBER and not oc_chassis_filled_event.triggered: + print(f"Chassis is fully filled with OC, and cranes start moving: {chassis_status}") + print(f"where there are {chassis_status.count(0)} chassis is filled with OC (0)") + print(f"where there are {chassis_status.count(-1)} chassis is filled with empty (-1)") + print(f"where there are {chassis_status.count(1)} chassis is filled with IC (1)") + oc_chassis_filled_event.succeed() + else: + print(f"Chassis is not fully filled: {chassis_status}") + print(f"where there are {chassis_status.count(0)} chassis is filled with OC (0)") + print(f"where there are {chassis_status.count(-1)} chassis is filled with empty (-1)") + print(f"where there are {chassis_status.count(1)} chassis is filled with IC (1)") + return + + +# When OC are fully processed, but IC are not +def hostler_transfer_IC_single_loop(env, hostlers, container_type, chassis, chassis_id, container_id, truck_store, cranes, train_processing, outbound_containers_store, in_gate_resource, oc_chassis_filled_event, out_gate_resource): + print(f"Starting hostler_transfer_IC_single_loop for chassis {chassis_id} at {env.now}") + global hostler_id_counter + + print(f"Requesting hostler for chassis {chassis_id} at {env.now}") + + with hostlers.request() as request: + print(f"Request available hostlers: {hostlers.count} vs total hostlers {HOSTLER_NUMBER}, Hostlers capacity: {hostlers.capacity} at {env.now}") + yield request + + start_time = env.now + record_vehicle_event('hostler', hostler_id_counter, 'start', start_time) # performance record + + hostler_id = hostler_id_counter + hostler_id_counter = (hostler_id_counter % HOSTLER_NUMBER) + 1 + + with chassis.request() as chassis_request: + yield chassis_request + + if container_type == 'inbound' and chassis_status[chassis_id - 1] == 1: + d_t_dist = create_triang_distribution(d_t_min, d_t_avg, d_t_max).rvs() + d_y_dist = create_triang_distribution(d_y_min, d_y_avg, d_y_max).rvs() + HOSTLER_TRANSPORT_CONTAINER_TIME = (d_t_dist + d_y_dist) / (2 * HOSTLER_SPEED_LIMIT) + + yield env.timeout(HOSTLER_TRANSPORT_CONTAINER_TIME) + # hostler picks up the rest of IC from the chassis + chassis_status[chassis_id - 1] = -1 + record_event(container_id, 'hostler_pickup', env.now) + print(f"Hostler {hostler_id} picks up inbound container {container_id} from chassis {chassis_id} to parking area at {env.now}") + # hostler drops off the IC + yield env.timeout(HOSTLER_TRANSPORT_CONTAINER_TIME) + record_event(container_id, 'hostler_dropoff', env.now) + print(f"Hostler {hostler_id} drops off inbound container {container_id} from chassis {chassis_id} to parking area at {env.now}") + + # Check if all chassis filled + if chassis_status.count(0) == OUTBOUND_CONTAINER_NUMBER and chassis_status.count( + -1) == TRAIN_UNITS - OUTBOUND_CONTAINER_NUMBER and not oc_chassis_filled_event.triggered: + print(f"Chassis is fully filled with OC, and cranes start moving: {chassis_status}") + oc_chassis_filled_event.succeed() + return + else: + print(f"Chassis is not fully filled: {chassis_status}") + print(f"where there are {chassis_status.count(0)} chassis filled with OC (0)") + print(f"where there are {chassis_status.count(-1)} chassis filled with empty (-1)") + print(f"where there are {chassis_status.count(1)} chassis filled with IC (1)") + + end_time = env.now + record_vehicle_event('hostler', hostler_id, 'end', end_time) # performance record + + # trucks pick up IC + yield env.process(notify_truck(env, truck_store, container_id, out_gate_resource)) + + +def handle_outbound_container(env, hostlers, chassis, chassis_id, truck_store, cranes, train_processing, outbound_containers_store, in_gate_resource, oc_chassis_filled_event): + global HOSTLER_FIND_CONTAINER_TIME, HOSTLER_TRANSPORT_CONTAINER_TIME, chassis_status, hostler_id_counter, outbound_container_id_counter, outbound_containers_mapping + + hostler_id = hostler_id_counter + hostler_id_counter = (hostler_id_counter % HOSTLER_NUMBER) + 1 + + outbound_container_id = yield outbound_containers_store.get() + + if chassis_id not in outbound_containers_mapping: # New mapping from outbound containers to chassis + outbound_container_id = outbound_container_id + outbound_containers_mapping[chassis_id] = outbound_container_id + chassis_status[chassis_id - 1] = 0 + print(f"New mapping created: outbound container {outbound_container_id} to chassis {chassis_id} at {env.now}") + + outbound_container_id = outbound_containers_mapping[chassis_id] + d_find_dist = create_triang_distribution(0, 0.5*(A+B), (A+B)).rvs() + HOSTLER_FIND_CONTAINER_TIME = d_find_dist / (2 * TRUCK_SPEED_LIMIT) + yield env.timeout(HOSTLER_FIND_CONTAINER_TIME) + record_event(outbound_container_id, 'hostler_pickup', env.now) + print(f"Hostler {hostler_id} brings back outbound container {outbound_container_id} from parking area to chassis {chassis_id} at {env.now}") + yield env.timeout(HOSTLER_TRANSPORT_CONTAINER_TIME) + record_event(outbound_container_id, 'hostler_dropoff', env.now) + print(f"Hostler {hostler_id} drops off outbound container {outbound_container_id} from parking area to chassis {chassis_id} at {env.now}") + + +def notify_truck(env, truck_store, container_id, out_gate_resource): + + truck_id = yield truck_store.get() + yield env.timeout(TRUCK_INGATE_TIME) + print(f"Truck {truck_id} arrives at parking area at {env.now}") + yield env.process(truck_transfer(env, truck_id, container_id, out_gate_resource)) + + +def truck_transfer(env, truck_id, container_id, out_gate_resource): + global TRUCK_INGATE_TIME, TRUCK_TRANSPORT_CONTAINER_TIME, outbound_container_id_counter + + start_time = env.now + record_vehicle_event('truck', truck_id, 'start', start_time) # performance record + + # Truck moves to the parking area + yield env.timeout(TRUCK_TO_PARKING) + record_event(container_id, 'truck_pickup', env.now) + print(f"Truck {truck_id} picks up inbound container {container_id} at {env.now}") + + # Calculate the transport time for the truck + d_g_dist = create_triang_distribution(d_t_min, d_t_avg, d_t_max).rvs() + TRUCK_TRANSPORT_CONTAINER_TIME = d_g_dist / (2 * TRUCK_SPEED_LIMIT) + yield env.timeout(TRUCK_TRANSPORT_CONTAINER_TIME) + + # Request out_gate_resource resource before the truck exits + with out_gate_resource.request() as request: + yield request + + # Simulate the time it takes for the truck to pass through the gate + yield env.timeout(TRUCK_OUTGATE_TIME + random.uniform(0,TRUCK_OUTGATE_TIME_DEV)) + record_event(container_id, 'truck_exit', env.now) + print(f"Truck {truck_id} exits gate with inbound container {container_id} at {env.now}") + + # End performance recording + end_time = env.now + record_vehicle_event('truck', truck_id, 'end', end_time) + + +def train_departure(env, train_id): + if env.now < TRAIN_DEPARTURE_HR: + yield env.timeout(TRAIN_DEPARTURE_HR - env.now) + yield env.timeout(TRAIN_INSPECTION_TIME) + print(f"Train {train_id} departs at {env.now}") + + +def run_simulation(): + global all_trucks_ready_event + + print(f"Starting simulation with No.{TRAIN_ID} trains, {HOSTLER_NUMBER} hostlers, {CRANE_NUMBER} cranes, and {TRUCK_NUMBERS} trucks.") + env = simpy.Environment() + + # Resources + train_processing = simpy.Resource(env, capacity=1) + cranes = simpy.Resource(env, capacity=CRANE_NUMBER) + chassis = simpy.Resource(env, capacity=CHASSIS_NUMBER) + hostlers = simpy.Resource(env, capacity=HOSTLER_NUMBER) + in_gate_resource = simpy.Resource(env, capacity=IN_GATE_NUMBERS) + out_gate_resource = simpy.Resource(env, capacity=OUT_GATE_NUMBERS) + outbound_containers_store = simpy.Store(env, capacity=OUTBOUND_CONTAINER_NUMBER) + truck_store = simpy.Store(env, capacity=TRUCK_NUMBERS) + + # Initialize trucks + for truck_id in range(1, TRUCK_NUMBERS + 1): + truck_store.put(truck_id) + + all_trucks_ready_event = env.event() + + train_timetable = [ + {"train_id": 19, "arrival_time": 187, "departure_time": 200, "empty_cars": 3, "full_cars":7, "oc_number": 2, "truck_number":7 }, + {"train_id": 25, "arrival_time": 250, "departure_time": 350, "empty_cars": 4, "full_cars":6, "oc_number": 2, "truck_number":6 }, + {"train_id": 49, "arrival_time": 400, "departure_time": 600, "empty_cars": 5, "full_cars":5, "oc_number": 2, "truck_number":5 }, + {"train_id": 60, "arrival_time": 650, "departure_time": 750, "empty_cars": 6, "full_cars":4, "oc_number": 2, "truck_number":4 }, + {"train_id": 12, "arrival_time": 800, "departure_time": 1000, "empty_cars": 7, "full_cars":3, "oc_number": 4, "truck_number":4 }, + ] + + # # REAL TEST + # train_timetable = train_timetable(terminal) + + # env.process(train_arrival(env, train_processing, cranes, in_gate_resource, outbound_containers_store, truck_store, train_timetable)) + env.process(train_arrival(env, train_timetable, train_processing, cranes, hostlers, chassis, in_gate_resource, + outbound_containers_store, truck_store, out_gate_resource)) + + env.run(until=SIM_TIME) + + print(f"Average train processing time: {sum(time_per_train) / len(time_per_train) if time_per_train else 0:.2f}") + print("Simulation completed. ") + +if __name__ == "__main__": + run_simulation() \ No newline at end of file diff --git a/python/lifts/parameters.py b/python/lifts/parameters.py new file mode 100644 index 00000000..6ffc0de4 --- /dev/null +++ b/python/lifts/parameters.py @@ -0,0 +1,120 @@ +from schedule import * + +# Simulation parameters +RANDOM_SEED = 42 +SIM_TIME = 1100 +terminal = 'Allouez' # choose 'Hibbing' or 'Allouez' + + +# Counting vehicles +train_id_counter = 1 +crane_id_counter = 1 +hostler_id_counter = 1 +truck_id_counter = 1 +total_initial_oc_trucks = 1 +empty_truck_id_counter = 1 + + +# inbound container counting +inbound_containers_processed = 0 # trucks drop off OC to chassis +inbound_containers_hostler_processed = 0 # hostlers pick up IC from chassis +inbound_container_id_counter = 1 + +# outbound container counting +outbound_container_id_counter = 10001 +outbound_containers_processed = 0 # trucks pick up IC from chassis +outbound_containers_hostler_processed = 0 # hostlers drop off OC to chassis +outbound_container_id = 0 # initialize OC id for chassis assignment +record_oc_label = 10001 # update outbound_containers_mapping among trains +oc_variance = 0 # record previous batch OC numbers cumulatively + +# yield events or conditions +all_trucks_ready_event = None # initialize trucks +train_has_arrived_event = None # crane starts working after the train arrives +train_departure_event = None # train arrives after the last train departs +oc_chassis_filled_event = None # outbound containers fill available chassis before cranes load + + +# Trains +def train_arrival_parameters(terminal): + global train_id_counter + timetable = train_timetable(terminal) + TRAIN_TIMETABLE = timetable.iloc[train_id_counter-1] + + return TRAIN_TIMETABLE + + +# TRAIN_UNITS = int(input("Enter the number of train units: ")) +TRAIN_TIMETABLE = train_arrival_parameters(terminal) +TRAIN_ID = int(TRAIN_TIMETABLE['Train_ID']) +CARS_LOADED_ARRIVAL = int(float(TRAIN_TIMETABLE['Cars_Loaded'])) +CARS_EMPTY_ARRIVAL = int(float(TRAIN_TIMETABLE['Cars_Empty'])) +TRAIN_ARRIVAL_HR = TRAIN_TIMETABLE['Arrival_Time_Actual_Hr'] +TRAIN_DEPARTURE_HR = TRAIN_TIMETABLE['Departure_Time_Actual_Hr'] + +TRAIN_UNITS = CARS_LOADED_ARRIVAL + CARS_EMPTY_ARRIVAL +TRAIN_SPOTS = TRAIN_UNITS +# TRAIN_ARRIVAL_MEAN = 10 +TRAIN_INSPECTION_TIME = 10/60 # hr +previous_train_departure = 0 +train_series = 0 +time_per_train = [] +train_delay_time = [] + + +# Containers +CONTAINERS_PER_CAR = 1 +CONTAINER_LEN = 20 # 1 TEU = 20 ft long, 8 ft wide, and 8.6 ft tall +CONTAINER_WID = 8 +CONTAINER_TAL = 8.6 +INBOUND_CONTAINER_NUMBER = CARS_LOADED_ARRIVAL +df = outbound_containers() +OUTBOUND_CONTAINER_NUMBER = df.loc[df['Train_ID'] == TRAIN_ID, 'Outbound_Num'].values[0] +container_events = {} # Dictionary to store container event data + + +# Chassis +CHASSIS_NUMBER = TRAIN_UNITS +chassis_status = [-1] * CHASSIS_NUMBER # -1 means empty, 1 means inbound container, 0 means outbound container + + +# Cranes +# CRANE_NUMBER = int(input("Enter the number of crane: ")) +CRANE_NUMBER = 10 +CONTAINERS_PER_CRANE_MOVE_MEAN = 600 # 10ft/min = 600 ft/hr, crane speed +CRANE_LOAD_CONTAINER_TIME_MEAN = (CONTAINERS_PER_CAR*(2*CONTAINER_TAL+CONTAINER_WID))/CONTAINERS_PER_CRANE_MOVE_MEAN # hr +CRANE_UNLOAD_CONTAINER_TIME_MEAN = (CONTAINERS_PER_CAR*(2*CONTAINER_TAL+CONTAINER_WID))/CONTAINERS_PER_CRANE_MOVE_MEAN # hr +CRANE_MOVE_DEV_TIME = 5/60 # hr +outbound_containers_mapping = {} # To keep track of outbound containers ID mapped to chassis + + +# Hostlers +# HOSTLER_NUMBER = int(input("Enter the number of hostler: ")) +HOSTLER_NUMBER = 50 +CONTAINERS_PER_HOSTLER = 1 # hostler capacity +HOSTLER_SPEED_LIMIT = 20*5280 # ft/hr +HOSTLER_TRANSPORT_CONTAINER_TIME = 0 # hr, triangular distribution +HOSTLER_FIND_CONTAINER_TIME = 0 # hr, triangular distribution +hostler_status = [-1] * HOSTLER_NUMBER # 1 means trackside, 0 means parking side, -1 means hostler resources side + + +# Trucks +TRUCK_ARRIVAL_MEAN = 40/60 # hr, calculate by +TRUCK_INGATE_TIME = 1/60 # hr +TRUCK_OUTGATE_TIME = 2/60 # hr +TRUCK_INGATE_TIME_DEV = 1/60 # hr +TRUCK_OUTGATE_TIME_DEV = 1/60 # hr +TRUCK_TO_PARKING = 2/60 # hr +TRUCK_SPEED_LIMIT = 20*5280 # ft/hr +TRUCK_TRANSPORT_CONTAINER_TIME = 0 # hr, triangular distribution +TRUCK_NUMBERS = max(INBOUND_CONTAINER_NUMBER, OUTBOUND_CONTAINER_NUMBER) +IN_OUT_GAP = abs(INBOUND_CONTAINER_NUMBER - OUTBOUND_CONTAINER_NUMBER) + + + +# Gate settings +IN_GATE_NUMBERS = 6 # test queuing module with 1; normal operations with 6 +OUT_GATE_NUMBERS = 6 +last_leave_time = 0 +truck_arrival_time = [] +truck_waiting_time = [] \ No newline at end of file diff --git a/python/lifts/results/simulation_crane_1_hostler_1.xlsx b/python/lifts/results/simulation_crane_1_hostler_1.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..3af8755e158dd47fd8c75f798fc8a82d55f20970 GIT binary patch literal 54669 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 MDtPB|6R6+)KLr(P0{{R3 literal 0 HcmV?d00001 diff --git a/python/lifts/results/simulation_crane_1_hostler_2.xlsx b/python/lifts/results/simulation_crane_1_hostler_2.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..959fd1717f5537ed9694fe91fce16dd4e431e78c GIT binary patch literal 53903 zcmZs@byU^q_XcVq(gKGRLAtwJx=Xr4x*N$ONO!k%rwG#BAuS-?UD6Hra}GN9`&;+^ z;mp$IY&QFS_7nT)$V)wc0ebS}$*U(~nriB>0x|~Pz|SgxAFqKQhBhDN?QLuw==E)F z={{Lm%7pVGJY#$<{LpXLR3p$PXz+gI!?*7!?r-QL4TZi7dNp&lMOfq8V2duon^3J3 zBGdXSMXVA@&{|kgPsM6=MAZP3R5-g@6oa0 zbUts5x4Fo0>574gy#~#1v=1wP*$v1FD?Bsw6wJ5hB)$E`WCts8^fNElX{>hwo*KJc=w^k@^2xua}2LFn(8Z0nZLXD zcFIC?YAY7}<-Q<3Dz4KqT*iNE-A;$?{_WxSCDrdAe|G8W>HqI=lC)BZU%!0vB$fQh z6LerWpDgJeO^vLK9{p&kLIEn;{Xg%`FbslLI<~E&ssS<4=0i^s|!end$@!$$XA)j9$5CB}eKm{ImqbX5Vey1=UAE6c9inFT(h;cc$BOy1TE zZ`9s_hivlKWHkbpmD)R7%}w}KEP6)A#6SD=dB(!jOPptqW4vNQ;^z9QHstJa-npM1 z+CSsSVuic3di05-dSEQX7VpK9LPJ{n*Hg=u909nhY_k!=-{&)BQF%pSigM!@o{PIF zrm65@nsVb7F7xBzLEWVzpOBi59-B@0$P964mg8Q@4LHROqz}1#IuOne~pAee!|{4DlP9( zE>Io3)E+&i6*)Of`9mJ}RdTQQnV1h@*IfDCSwcf!4zt@=Pp%=0Sg={~)BOF0l;N0L zhpn~r{Fo^j!6Dm58n~kyVom)3a%*mMdoDZ^L670{^Qc@>rs2aY_+42Z69Sd^Z`#Ad zYiXhO#0~T3YM$qEV%Ee{g{_rDQ?a5XBI&)f^=qgcKO~Tt(D`3|^-naH$9t9o#~7dK ze_7RCg1Ut6S=0QgcQGvRqSz*xS2a^jV#fFKwJ7dNs>6oEsO1f8uIT8wa^qZff*Qut z1nfnYB37EN$xm^uN2RGeZ_&{PV-a2o_$QE%p%rp^$%v!hQ|Hdyr;fk>6H8BWEg2PI zR!N-iNH(~|jN2w!{>CZ5bd1OC9_A{Q6&^3@&D&=tZz@Fzea#yF;FptxCzrOPQVa4K z;IQG^|G@OFwk!12(?IJU{Uke9g?g)A!WzS;*Sj|ujYkJGB>gX*wMeZCgGA#&@+|{u9iWG~pLwzpy0NP{{K6x0zUAvy;`~ntWBv(~AOF z_zLiu;9-vH@cGu=KEboccQ?wH`M5uQ7@c8nFTV6?oBP4JENw&Iy&+|+t`9YrmV=Gu07rXwHC@D-2lX4N19 zvrvt_)J}D5^A9o($_5>bh5gugvCk}TA z1-QEFCYr=`%d>#2EK5jeL~HbFr;cbqONM&18L(f<6`mb`P}XDA?0!xindKoJDzas} znV_Y+IvTw?n`iXHx}4Gl$BO6!XS-PA}A^4no$&Es#)=DbxHvcvc4rM>Bh zsIr&{XyPAZvGOFdPH+^PH>o8$l{s2On5)qeup3u5dhBEsYtfvmQJyi?HEYi!~m3f`duU=cnaEnW) zx^|&Hbrg9<9EbN36N_n0{vbN?CHm9B*goMu&wLE?@IEJABQzZ&)=^>%mGW_dMQFbG z%j%4gqJe_HA;J)1*{>cR#+bW=PF>S@Tlp$68BSpJ3k9|DGTRINRw6wqn;}E+n_W>F zY`|?M)066Ov;Im;{xGZai?<4kSM(%1X$ikFz#+x0wq2y;L2VNMifNJ4c9v`5xy}YU zjZltPn`dzFXVhYY=K6BEE7DZ%D)%GrcPY1%vpMJUONbu7iZyZ#sZsf*U_A(;Uw#bL zJY~_102!3#Rg`wmFe18sRy#q=H0D?g5J|>mo(L)741>23n0UX=Kl=;G^c;x=FA7G7 zF{zp@drcOeXYT$G>05he`0{>8%hUfWAesa8+U2cJp0pLdc!K>XATBoc77nIHMve~j z(0@TyB(=$EoVw47^imb?x;f(b&PY(DbBw8vN=1aj*uaIK%Pq&ExTDnCs@Q1w_NJ|n zT1Vv>+&qHhcaq|vFE9EOlX_#sm)IZ9#)lt{68OEYPY3vK%lYsAtm@t$se*6U6Zju$ zbRVwiTOL;P`8_WZBGT_~x5eC!ZTRnQ^AEi;A1*e*4`;gfw0Xykwq>{1 za*Li1tL0udDXZX{gmmytO8Wiv0LtRS<+iTZeL&0YnH>1~VDrKA>a;`d;Vh!%xW(-r z<>BrI{IE)YN#J!iyLfxm0Dd^-=es+8xV_T#%6mAR(k;1NzTx-0KB8ZII9=txz1>~} zx_qd4uyNmc3$}ZIzj(-hH>E54a7XY*{eDx9{|@#(eI4cDk{ULF@9xj`MN4b9%PGOb z)pk1Y)92Dr#19XPCHFf68J8U=V6a9DetH_;;KS_!efs@&KEZv<;lrN+f`=p3ebt9Q z0df!L^Sa>6^_GWI-3vMJjqp{-mzJA@ghSxFOb1_=gD-K?PitDPc<%=o&ySQ}U*8ZM z@!mxMt>-U}+qT@EU+~{uB6y~xd)-d~g;R7N1P_*g;T=AlPbJvg?dslNr1Q(%->2W- zFFqVI-<`F1U7QRrK5V-1OW)tR=-!;P+~4!x52Zhxs5U-aH4yLv{|)$dIsec&{qFkW z;W~o!pH2~&5S*sJbok*_g=v87$#Tm* z_~(I@_}28hCx@zbd7rzg1s;+vtmO#--vz#;eVN}c(LF1F8OoegDP!bCT4ee;Tic># zWjzNey1XY!S~D*F1ddL7ycsEGa6m0V0?Esi zUx+@wRv_P46LM%`?3n5WM{ePIA`RWN_d2J%Z$K%_6V!c69ND!ff^ALTvG+!Ylg*9D zqZ=hb(fGx8jtccwcf41z2HSk~9RV@u&%t9@_c4ky%a}`>DaGvaw(%RKMD!Y*>a`tw8>Z?c<-ZG zCQHHz4Nb_SK7FL+*4aBoUc2cXnd zb9(n!T(Q_u71gKV{0tnn zt~pJIAUOfd04)95M#M@N$91)2O^X83F}GyukC9zLgU=QQdNZ~Hxz8$51mJvjuwG7# z6EKhI7JU^sOTo^;NnYwMI)lGrhD^U zNJj|6oKgpMPaZba9ku+@p)2UIdoCsl^e=AQ9^$NnIKP@13clVadiEq3o5J0rm>;))FCg_Zin#zzB}ecw&nN{(( zw#BkVyOn=wSQd)()6n;rU@U76&WS%%-=gvgWy@dP!JvGB!f|05B+Nav!*{a;dggjD zraZqrJWcO;H7kT3@bU{+kkYs!CS&&g^B49%Ml9DlKd||r*pplz*=PNUq^7B%tnHZ- z#84QRUppm|CeKgSA?0vR4zWKfgB5KI=!+QiU4Rv9C7+4yI-W+_#Nhkt=mx&W3rCk! zWO=~Pysbf%WacH0HSx`=VXKMd!bBV*r>A)K!;fNJdxd%yG)FWk6YS5KPQypv?r2}M zt?a|R9~$VnR~Qskagsb2hyir!0h2r&F2{80G)+E>@zKEz^Zxa=K1cW9Qa{ zJ(Y;$Dj{(nmNRZ(`W}gQ7Mzk%nw*AC#VF_+APXfQRH>9X-LQ9BKUkU9n7hdq zw8KrH!Bm6D*cjKfnnohb@Uy3A))QZ(8~@&ed+V`e5Yx9Ql3YeV9(EG+g?XPKgEIlM zGO$-Bs|K#=M&X>$_uM!P`Rk~kTJ_QC2yEu{1AS8e9Rn*o zMlX@^>p)#+-Ec-@9l6_O$vQ9`;|Q;x?Q%hpydrL0*!z^2-F}>9FoEho zOg|od2T6YpoWfKFyk`-!;5r_|=H>6V3AbfBfrF<~qVN<_=4}pwgRNaZR{cPPbrJ*# zc@5@n7)zO=BmL36$fo}0|E7PN1zmG)EV8ikJ;0xPvhQEUpghCr){+ z#ux=h578uB@#3!ZrCz%^lrj3^Q6Kwbr|0R-1Suy_o9xW5oe)WzK(}+ej73N$ln2cf z`kK6U9L79zy)*dqKylki;pbR=9dC$SFWI8BSa~;NOgyso-=0^TmZx34z{pvW zUjEe6CqNy9ZvL{2lT8;Peei%RA4@-(4K*3EpIJi3*s#ICR>c90e=+fuEOP_bDpc|6 zaO66svnt$E(l384Ik1u5tzLJ66)nJ|AUZbW3XF-hcgKWy81K5?0 z|5#Dg0dGlB7VVNs*Ckqvjrti~^3~9UlZKVsjxt_@bQ>Wo{P3sy4aiVvHZ#<9NUIx^ zvK%T-@LB`^$|05IEw#3c6vX3^A`HA`WsuZb6KT3d z_fa%rhVO!wkYldGp3Y^^q7^*y0tNxDoJ4I(s*dkAp3->niyAF^i(WOC+n-%)J;s8E zgp7h+Tedi`)&;(9L2Ju2LH4YhXbZ3VI%39^b9nl0I>)xR)%J;28r*bu6 z+XGNb9v0a(amyD}D)=tW5o^j#kkA@?vkkMYOWI`j2KR6YGiQ_dxH4-Kye*;07yc^G z9;4?m1SxP$Vm+@!WRPKp8zJKfzPP~k zTfuu%QCRa{pKiD$#b>*RCj9(Ti;V$NTm~r4K+BxQ=K7V7Fku>>jGqnNjQ~f$cc+T6 zAmB|I6>P^5X-tm*Xr0N`Lx?P5kt_yaU0?W6dB66(8B=m8Z)!QeU_m?CT1+8ErQnr0 zBjmi_C5paeuZ*Jm9(l2rWUX&A`OD@R-M{Kb3fo9qrFhntMT7GBf)roqs3bER6%p3o zgk=6M$`lqYNLCc(Skc(EnKpZ{knJ9N;ZvTqaJbTK%eD z)8RdPT@L>HqK1;L0#9LFYEfCH-!;b`b8Ka4QAXHMtRKzBLa`o%T141*w#^~E?17f- zKw0(6NvyI)+%MTDsKD>MKdUudf*dP8WQwL7O$wo2tldL`$fj$p8`#pQzBS?Pxpouw zES0?N|L;I7SD0K;ddVfjh#bS8c zh)#is)hGB?ypPP4B)tG%mO@}{xPPql|M!@+fqN80f(Ed$6sS=MuJ!eTEhv)YLD#y> zmf3oX1EAstKt2=6_&ga0EqWzv!#c@t1NrRxTA}O`Rk#*-(fF|EKlSVw*dJJ#*y6P# zV12xx>vIxh(JTH$qUyv}!Lp$IStvcRU}@GFoh_h1oa1{7Zktqf5Wc080QlDS1`mJC zI8qhH4Js6#hMi&#&G|bh>^>?Jl+8-V9Hv=Xq!EA$9YIwnRbER7IqiJ@hud5?I&Q3d zKKIzI5GALb(={6mme_{F>&Mc0>B7uF?fr1fWK4TAg8-8ceKK3TOmTQq#F1DC?2XkO z?uBc1Bf@o(`2Q^r;M@H1BvA^*$T3=qTQLLNn0eQ*I|~OubJ|&dO6*;it&d%!AR8a2 z7p%^;|H6#Ex97mm7u7jx0JQE6a&O^+AnJHrbsHrsc&)T ztl+Kb*k>wLbta}Ez-EU4`*fP(S5a9tMUg==#ANY?5ph1_ygmkeZP3eY(&+q3lK$aZ zx^1K=9?ukU2oXx=8DZfK!pz|R=gX_vgouxI`lEcmd^o6~3T^ZBT8Q-B07JjT6MwR3T1xoy7}ldpFcPg*J6YK$bhNG3Dc>b0(7>`^I%G zCalKeZ&;3v6Kwyoz_=gg>nkVyZ2Qu!)tyDahid5w(1qmxIC7&sBq0gmT~U>A5XwT!BK%QJLWr zvZQ6{+gbW~`DIQj_2Gt2naO%pf;MFzzZM^tk8pSBV4;`@!M?1Ho7ws{P1tcaV#2Av z3ZL37RjG7v9fM4H(=cV+!CT$Ra>USd=Fx+`?4M+dV*qBbxr(|FRFXgrW_70Vs@{Vj zQqe=LCDluOGI9vh&S$WfsQh9ajJ*C4w38d3U&+>A0|H8GKuTvzCj+Im1aY*losv0- zjrFc6zX+Lp!EY#GXL~Ld2@l^8m=FAxM=%ns2fHD`<%Vz+1HS~<6cIjByeqWxBfDO} zQPSzl>DbS4b;9-a7yvVa9^WpNHIiZ-^l{mV6s6;I+&C3j`(mB73WKvqu0SE3Q@=$p z7a?v)Miqj^sx4p9DCylSj;#(Tr(_e0Hy|gf^M=2zO2*kHP0g>A?RO}r-$q)76jn)E zbI`9};?gc|&ZRKFVPLpR?c|#Qji;$?ycljB6cDxwSB-i!6j0YJreXhV-$4Uoq6f-` zd|bz<+(m8Kiz@Jpl;(n7+nZM<@yAYU(TgL)upzqHaa^sjD(x&~kqR%Sc7nb&*h;;ZMQ;sH0*AU+5IO=t%4>c5{s58v9A1W+zKR1~+ zX&p<644VwHIAHL$WM-jYwn$RP#M4RF*c)Cw8bPiDK_C-D74vWFKH41>2#z2PPFjOudRpG}I7J!8CM(yJ_(bsxM#Z^pjyFVT8wO$a$h2C;8 zYKjcSZUmEObZAq_7UOU%8Gyb=ah6KA*E48mK~mg|hGW5J^-qDvkHon3igvCbajPOA zuRyy`rk7ryH{D2yZb|3(P5WcrRl~q1E-W(mH5E$y9zmCVnxoZw`U1VvC9v*OpE@6RwjAb#u;rhgG{(Te~|?95jqX zi$8}j;Y$XaesmtxD&m8W>lSrT#$^4Rrx(%RJTVYCKiLqI0#zXfmIWO%B*_)$0%+bB z6QlSQx@A48oq3^J*PNz%?1sg|OTtq_GT{!9-cVBzWN>u$@+$<*wPdOc_hg zTTOJnp87=Krad{l)^94}(hc-!@b`(PI)N-3^ROIy&sVr*zZZU%9ogHutOCip|Qz{spL3M?8<(lBZWdPAgtGRt+P=*5Y>FTZ)Z&Gx(L6+r2r7uJ z8Tyg6P@onuBHRNHW8j0&ulOGurqJ5){R#e3UP2#-F~hXq>J1eQsmEE^yqd0fyH>Jd z@6?9+s_E1&8ig4~HNgzV{Fdh$xdeghMou^Xe_w7|3ZU7HxnLFu~ONx(s*1M9}_H`I26d{3V$=~?Z z>CyMSmd89XiYk6b5vNRe<64^N^;r7YoF(Ddzgvd}w}GoQRmFQ0-ghT$@@6JDBQCPo zUEDh!J@yt(aG%*UAeZKqEC>2N#y*cyL|Xw4k&lq2;w*+GvLa^5yR#sEyI zG;RZfHni~r^dgFY1!1t|zxRv{og_HL9a%Wjx-ra|korh(LK~-=R~P&L&IMN{0cG>` zsOaM8cGP(Az=Uw&N^m(Tr&rB78w@%~B;{(q0eTC8My(Vfcac+?KAxk^f6SYAl09W!JJQ94C5Hf5tw z9YS9$+Ca*EQu7&o7@G@hg-=Eg)w%cRk-}A3hqzN%aXE>{(ZFaV*9UrY8wr8YbONIx zSJuyIr+p)L^Z{*Jaf+zZ{B$8Bs8qp`G_MG!mh0DveU^VD^h^XviEV}A!l{=p@SJFQ>|a;`#b zw7XQ+(me=IVUvV&6s;3ty`XY;+Gj5^ExIL=szT-m-BLbVH;IO+9h7kDpv?8$ZwZyr z{fBVc{cqsiD=79L{KYC->{#`%9aT+1q?MrIgh+dSP`N7h4!DJy%zPH$TrXjQ+Z%HP z6yq5p>x-su8t5XCf1}Xbr^Vlh1sm}jCb4oFLFe`=A6z58{BPq!>dK>aev>!YB7`eM zaaI}(cFYV;Ivm?<&lN4@#^Jm?WvOG@=^i~JZM|(H>~x6ZM<`&h^1iu%P>yhlbY&%z zimpHW-UX&oKb+f~`As#X9hi772D3IF6Bo{SgmAnozy%lvPCMajjQBT{3#yLrLt-NB zBp(a_u#Y*a0-evjt56O$Z!9Rg|0fu1T_BFvl?wS4luz9~DfiAwa#YH`O|gT{%@rP( zG*tygUkr(r1o(o4Dy#SKT}`IWZ6|{HOW}gQGLP{|pjtPd3RzNV%~nxnON5o!>Aw!+ zHz+{Xo3hD@)2vYCEce?KFmq-w-5HW!lLiRNjL))_1qP^zBzMyiTANe|Rfwr^a`~mO zDkcy^*}Mv1JB6rYhC{xE78y7U6n7dBA^$K|@4eKwhujnZ3()Kvh{;d8LLs#LOG>BQ z1Sd|+H{sg9QHS=p9^e4QC_8v~{ct4M9eWs%B&){d*)Q%q!l6Q(T7{)A%;T0T`7+7B})qOL?_pE0`csBm%i7%gdkk} zzssN9Ow+^?R$X?B{&<`NEOb1J*wpBlJhBqPB%so~0|kvRhq=v!<*HDb&d0z?C*)p@ zq#?KCyrOCyT>Tm8HICNV6i8XirlBtNy3hT;Q_DeZ;k?kf`YGt~{0t~Gp@1|mQ96a8 z6Ut@u)ULYN`WY+z8Io(0#+nmELu;?4y`w|=mStATJC#4bx$Yp!tze02WCv240J^6A zEyKuvsf+hCR2U(4W9_>Bue*qhi}`q5H%_KO&8zg-wnv9&p-u1Z1W|eM^PlQnU7Md% znP!M5sEDa4m9m#@1SknORR>$25^;c3WT|56|E?wr|B`Ocx|mnHju=bv-}7y{*ni<0K!ix+ zgmG-Ho0$4P>Az4jgH>^laoHw--fwKAwGV6C=HzL^h^WIjwsr1>s*e zsC^8I48bZK3J06k_O7V$4dcLtC1lT_iYkv5j{hY~9dvbG*-@SCMe3xEE^7m8scB<^ z6qmoCGxKJ~tj9 z$|K`orR_6t)GsW?{D!~c-(reob1<-iNKl07j1Ye7%(!t66!5SDGas2ufiBRvc{EHo zG1W}6FnK!_q0&Y00m)#d6lMMdqSm`|wy0%@k$W{>uv40-Ls|=?G%#4uG86~%SDfWJ zK1)rpvcQ*1ey~odPH0>hVxr;~YN=vhJ2Q@&f_N4*NvE)$T#e)`*Rf^g&)ikZpWmR$ z;LS+4QI7UY7DpzQN*{AE&+}=?1HnRzd805gDCG86_dhyhQA*ZxC$=UP(SC%>|9wwo zL3iuAY~gGNky!DMde`3a>HOJKtbUiN%FMQz`%|N-A%IerNkLctn@g37L0hbmpo}$e zHs`xO@MO!zo4za)W)WOXSOS2C-sU%gI%nH!w*@DvX>K`vPUbow23TID9Y1x=y#F3k5 z&AeH8OfEsY?T#*KM9yNB4(rsNao*clg1=`Ku8WRtJ7+=CvjgEPGeqB*3U?nBTKYx= zbRoL!pi{E@Xp7j2b}2{QrA9IQ@RXHHuBEgOf%^F$bg$p+0QD`ZKENi91t*D;f12^k z{zz>V|H-fmXmSk2VNU8mpz3R?51gn}9+vhqnSV+u{ZzPAxF}HsdHB&adMZt!!wcM? zIoMr!tg(*m|CCA#N>sd<*ryfFNM3QRzE zhvexAy#t&&8P6#Gk=n&MfH5Av_@?@@d&PmpL0AY$;WrpQoOQf;^n_&^`ngM@$Zp(smKoCVgcX4un#f4dY#HRSIlu@6ptb1qE}7C z!J@Qu%p<+2`eifd+)L%dRaYfYTOU$enamGTn{hc>X29EvqOGVCOn7+IPoT+wsv*-F zRQ;SV(*`*|PC`H7G2A_w_=TPuy}I(>;D2wwv97YuUIvA~1ZgxqmhYR&ZOQ!hcnfGB zlFnA}5Eh__z-`mgH_>At&3b@kQ`Tatm1$#H&i;jGGyWLwpqkpsm`YE%M)E;W2J(T_ z0&_No=O`*?2}s=xZto53 zh3cSE2ud^{df}Tw6^f7Sn~58Yo6}P>MgeN$30)$0{*c1k>*?GU!tX92y^t)U{IN<< zRvLL;SwpE7ccxA!Y!63CEXOL20-ftQ)~0-gcB})-RpYCHHpnN^gJNaM>8BsrTp^#k z5MVe5Puekl^WV}|=<-WwUl^98YI)_cZ9}m)pY;vURn7^V{P2|4x2Z);-_Q)4cO-0Z-P{{48VMBs1{XMtj60y(uG}NHxUPvk%(nu-C>)5?EX~Tp8n=4%Rgz@sNuxT z6*P4p)~#z8JTx-kX$d{4_4GNYCETJK%CGxn?O;^db}^c8>8;B|gp`wzmDdv)LmvLs zNtuaU{M>(q5BH9%Pdb^K9iI>JGmFr0zc2M%|mTS1IxIh3e%^*!USK}<=$}Nb zyFwHs2%&})+v~V=tAWQs>gH$aL9?%0`LOeMc2w=A<{yX3n*-U~-}>*TML{O&=d zjxXNrbiL_7+(#qX#OEvc{iisl!xyaxvNtP&*kWJU8AaUS-g;@beaGSIQQM*?vulwk zOUFJeI#SLe4iC0Cud-O~IYvpLPC;spXwJBMK^0;YFx3IedO%MeALnhPRSgXL`%j`d zVAwR&p+>bTKIU(>d0hD=$dvvlNjX)WJB}jnv5B$&`7HRlZ2rHVP2D22dPlQWkoY^Q z>%LDf-E1LIchI&mOHEn!XXXR1SaEM~E_^l5x-7B5T$9*Hr>Uw`a6_Xu03d;O(ihS{;m z4|m-d(|N4e3wh&*r$E=kjGn(KqLES_$T9jH_xv>e@$)~~tqGqY`lUa}Tsdro0w zU@7Q`gU^P^U*itQCbtl>KO02#lX7pF+}DCs`tCymMZ zjZ301^Z}OD-51&x95aZvD-qa*C$09Ak=I^7PQfFW@ZTwnM zK-VRnmN>ikvUBLSbGWE**CcVK3ScH4r*Es$IXS^}Ut)y|Rg8d&BDwV{F{Sp7L&OEk zv$x_{(%2>VjH^0M)-(v`sc1@}Ay zJI5Z@hDp%sYAV~h$Tmks4QePZcl;kORL2b)fDSFe0NKaYndk+H_titKhSJhdY zB^|SV$N1DpALUDTG5kgRwV`itut7nq`j2bdg>*wOfA2jHTP;ue8+GI8y9q*2yzhryk#382rotaJ!2}4Zo}ZpQ;DvGDg1Y)TNMlw9IzOp|m7{(20gh@~S4qP6Y}1P` zAdP=Nh{@i1@s_l~S@uBgdkcXf_}*DJZ8(gExeqe+flpUBmcu;GTvg9sizVs=?-yXf za!wwVe4Yi#aGxzmqV696ERYa%l!dEHn#@ORwPkufz+Cz>?7!OQ7%)vS7+^jUFC>F+IE zovDUDIXt&~hZ1UclGiz1U+-|jfZDEPxuxw`&BDWBb}Kerqkv}xhNBD_&ImJ2CbBl1 zK^x28@?13;{tCO9s6CCCf9vzVn&xjLzJZO|D@V@!7CLYr7XQ`X0KTAvRE_MH!?l}R zch~!hwp2ZCLyoGBUV}Q8x+d|}zT)mFxcZE7gthNvBH+Kv`nm`AN}!mh3#}gajchU) zn+1IT12T9Jvl$fbwHu34@QF5CUqW^g@jOR1YUj7?xM;=Mgj5af6@2OJv1G!5T?$^I z0%|Aok#gx=Y}A+{xqj15z?z`8IymL*o{~s1WSGKaxr6ec&snF!NkVDaC&&5^j<1&jK{t5C}wHv{DRsL`geCP=5`qd~j_9e*7_CsUOs zZThZ@OX&|E6!Lj~#Crb4IxQ&Hx1m_i@$fRd$(HA_5p;>$iq*);#n4YR4P+A`*R?~7 z6W&FJB1IK~l#ikb{R|Sb|8-3hvITavbox4p`zs*kfZ*kP`h#QwMDC>PA*>E`I_^J8 z5Z0YlqV{g2FuTt|)JXQ;%*MgdnZlip8yBh=RqOJAVw{c!e9ycq(PFUr-U8PgQ8r>7 zqJm7+@P&P|8Y9$@e3~B-Al-Qg=|(@2E(yBZr+kj)3?%2}ul?m{o^v~b15#_nuK+Er zDi!a1;g#i3!`UnyY66kzaevaWd>YUIoXF(bqb=%WTEYHs_lAztoRWVz=Q=>(Y_kc4 zet1(fI!Oua^vcgr3uPEY`We9#^v;ASsH|c#m_2G>81SJYS0U)dyHLGID8L1D+K`3x zlz;uL&R;X9O&FeOiv$nn9~jaP-?t)h7V%|gxEMtzZP?4xf9)ZhE z&Zp34^$9X!Th_&Vy8K9yZ7GrFbtKE@+5mr)wBq(>Ve zc2NPeqg&PUrqj|{Y#sl;z)`I&1`(}Xl`8+mwgC+{+=Jcgd)K0g^{ctw@1_PxGM8B0 zl-*f_$oofM)FjIg!w8DARzWk{FwM;id8RXJ8AF*d)7WHy2}?Ehq3>STA{*h*5KPWP zUl01H*#f%R!sP`*xoZd6&Ve{`?O;4#a2X=-2w^l*WbxC!VEsmAP{UsBNH0og8KUPO zGW21$;{tRtH8!E~IROQ&^@&5M%WL#Yu&d~ZHNCD0PHEQW_>X`q_BehDWsc&0_!XY8 zB5@h<<J+s(#DmEXdWcg0!ziE*KS87c4zJ2k@Oe{+y%w`$4Yra zK2HxM=L1aB#s|nqolM}hjkjn1!FdKb zF$d`{=lS91`J1wDP()iKnVbSS`x1}BeS_vaOesy8n_8GoQDM}Z< z;xVRV0EhP}0umhQ3df5<4kaJX*&o$Zil<&_-Tw_{puAG_SHlOE-g}AO`|Y>W{7HsT zqDhOQ8E+mFQ96?3f&0@x0&64K`>Ma5g2go@dwYtshI&}N0RopJd}W9^<=4f|s{OpX z@h>O|;~jF(;J6$wrqfd~#6Q-*t!{@5hUrnPX&B<;Rt>BCc&Ps*)w+cntMZYtyjp1( zoyC*kp87m)NobG=DW9eUF{dL-NqH^U!o!mP^32Bs2h%DXgIpKQkp3}=bGa{j!x$-# zx-<^nPx$*TP-A3*x) zq{=fX&Z2mRfG5T)&-OWjs z=%YRXHVH@_Kh-9qZGPt~NYhJncb(ur+lk}EW9VA~`y=y>`;zS_%mKz7ef7*pD^-t) zB?{53m2@)FNBZLL%OXUT{Lqni;8i{h;fnjJ^uSVZ-?+a5j9#26W(V*|k)g%+Tk?YC zn4S;bHn`=8o}Gez3&N%kI&4%)S)(g~&s4lb&i;WuE<4Bwb;>yT0+iIZv`7Z^kqGr} z%jZVJre|Ykg?l77`2y#geI)Dl<2uk~5kz|C6F?k4E@sG)oyU(#X{Fr*-3 z6s01xBqM++t???y2Wk=TVYuRy0wYNS#}xko=(AB(Lrysg>C)HamPFZhFs?6Hr}p;I z#9smtL2VLyz%&UZb3*)!_%c7-9UiTWHf5NzCDUbkCO1(e4KDi};Nj;u)Xtgc%Jd~2 z1(;Mr%4F>;WF9XBJ_mLfPUBR;j#F9dw>dF?(qAs8gJT}Qhj!>245^9wZxh4f9n1KD zGt(2|?K^Yd2vp!yEoGoyu)%a$7V$G92RDU=RFVb_5yH*{=8zz>|3~u*xuI?<6~+;` zIPhJ^66eDJJX`tz2!$C;L!#MFN;X{bU=jG&88RcUJR}LzG_e%M<(IP!MZ zcB14%c-|V1)&RO*Z=0~UBFUr0|N8U%hE7MeaKo-w><=y9P|3BuU~N63{TQ`|Pu8$uN9RzN^_`?zleu zqz}$m_u&-5qNw$TwRK5ZM5qaq*QsohZ7r35F(r7afKQtQy;z;X;O&xTQPmLoQc~1MG??PRg?K$yTyc!L)L=xnt1aTjxhqk-}xpkvbAt`-} zM$5-$X1&&9?Diz%>f}2<1Tw%44}c8hvNRdaXI!gG@*TAt4{1TZGuTV%!ymwYq{UZC zHxH1JlKqQjGdFXZWt~+&Ij{akr-4y!y3w)uOrkV79h`y3&ePmnA8q_KB+LW1rMIds zUpusMy_lTWO)Ynbsuw{G#%W`=DcSA<+1p&|3|3h!EIP`o#lr6J-nf$9=iS4`{{g0j z6hxijlu}JsQKUaDaXJhfBc^U1Nez08z`?rX78!==*DE=m`G7g&nj@bzCR)m-lLed$ zvipQi;&kon0lt5{=9xz9Fr9)~EVvccdj1+$(^}sT2!nAN6?CRF+(GxQukWs+79Qz- z3!2RkPG0$&S;!g2uzG!u9EyN%yEN*8>#+*Y>kYkscOn%HKn4hY5IevB5&r3gPt4ZJ z$-i7Ft|BG&)7zIc-|YS>=W0{nWRu+Oe+JJ)H>lVvhw4~NN`8N)%Zb|v7l~^3F~)>{ z5wK++VyP^K79fNT@7{1bbP=ax?-c$#KnzO_`FKe6$5I3yhfs zb`?9NhXB%GsG{BP>OG?h2X1VLzk+J`Jsup4hK9pWCMUb#@NLtCcL)XmB6I9c$-uZ+ z`3Y#+g2hPM0-Y|G|GH0(1zlfjSilwjo{?4oo)$;=fk^n_IDAW2Itv;{=zjJD&Y@o~ z3dJU2iv(_hDpt%zTV<5nzQZL8TI+HjtiZ=l3xoCN$RU{_8!S*p@rmvY-QPQnpPJ|_ z2FSgPx8@`h8_=sWdcfG*ussGT=&5F)mMNWQzm`J$ed){0I1IY<)umEyIewLm>7O-} zGw#6u_dt){{1#AKvhIO_THr7Caa{&}Peyi;f6-_8n0hj*!QLE6@;B9mK9-z)_ePO- zSNa2wf&vNNk)h;mo7r9Lv^-^hii3bFbLVH`o4U=Pn-Q~k+M_5vFwGZ_L2&o6{HIhp z)=pzBb@zV}R!!8#k$>#6aiB;=MfN)w#}Mr0x$(HQ5Vle4R@~@w>?)fXNNuJT`vEqkTuUOZtD0?_Z2+o!+}+Uc*nkAzjb8 zNdOEQ5(6EOsN$0xAx6h23sEjFmx=AvV2SfYHC&YD7xzAh!WWaM8#IfifPF{#qQ|nR zg=GPsmE*Jlj=K9u$X9+@oIP}L3y5nMYbYD)SAO3>GweZKd_A%=e>D;U{ zIhY93=c6D`J`VnmO3FaYg!nwYWQ)|0#+S$Q8|Oq;uoqoySpI+m9KFD%+~}?rvHh8M z1-aNDa7>PpR4c=ieH}M1kB!;TeL0xklMaD?50rD-85OSmtGUIPb*pGF@X*Ixt(&HN z7u<-3!O!w|pLu5Yh3KAJpSVYLe{sjb!b4yB74#7!V2#IWRsX~g`q9Lv#D!EZx~I|cAOFbZf>vIem;@{aJ$X? zCM~`hSBn`{@Y>Lmz&nrfXaHi5tJn9W5hNJ zy_AjcWWiRU!$0l+*8SZL?QZwo^~o6oG9T4hgMjOSL%ed~*Kxc(2UGFOWg7IY_nI$) zEi!y1fjrCNN1~;&ynXg~K%5__eceyOHU8j_nLl(?ne>nC1C0pB(GJn9p4`jg6h3|d zRl@5j7vTqUH0Y7fjup>{%bt|K{Qv(WvO;!N_Fmyw2jSRzClX~I8QCi%JA3bW z%#4yzAz9h;9F#~U^9adEGJp4dj^5wT_50Ixb=~9jdcK~|$GT5@E58s?(QHVHq4%#= zsa4}Q0rIWJ59ywNuo2k(Q5DY`DHh!xB5LY{Lign_KFNRL-GK z&)Q+*|I;jWo_*hHp)E3GQf^ErvkhzXo!-dK4yr;&e(hAkNb*_duL z9c>Ma?rm?(St?ANB>Pcz^ap{T|*{0s$J;k}4oP?V~8K%?#R49{k6|IbMHs=1)Ah1poBBVUzP{MrnUdb{R9S zKq8A4N$|5PE~#;%bfp1!c=2mCA8C~gISNp=sBbQh>iyP*kt_b}*jozc;Og#3=1G)L zC0UAMRh*6zCdnibjwt44(rSx{p1?Gqe2&f7j%WPr&b!ew<__tnxjP48B=V^TIr{>? z3jPWxM@XS%z4i%(cJsEWw>bJ9H-8-g(C`V#(k*bI@*KqUzbm|uCHnsDVjSM5ca6P< z```xI4@+Olvklf0uiRa*p_xlGjB=ldFOkNIbE(Db8Z;X1JiQe%mtfVAxhht);h$f+ zKH$SlFzYGY#CJaFA4;F?MX$aj93WrgH6Vu>WVxZsFki#qxJCwDTF;-DL6j+jo(S->1`etqE3&i^VZad;?(O82}SkqD*eKqYbRJ z(`=^*{#98S3G?I4;Q%xWM;muC-K<`5u!7iXzzX`#E+<^TZSM2sVqFME;7gH7e7E-N z>}{LVcfVa(DgJgF(9S>Kk-UD&KQhg>Drno!xc}tR_t+2tbMnV3O9N27DwI1+Bma#| z8>JA3Y8`Cw=7oU9kD~Ubo%^M>KTdu3Kl0Y@*nM@Lifn)SWnE#$xg_toF7Npk^GfK= zBcCkr>6wIr4G%}w&}lB~vZXsyM=9=ytMTc1o7B3s7SjA|B;Y@CYHv@7546W+HXKN% zy<<_8Cv7cu0Wcd9Li!T!G$Oj6XZ`%9Hyp~C5gPJf6SK898%8UEt=+mDUqOzaTYs_v zP;$qwCUHf~LPnOK+W{47LM2^ejfUdqe-b^kO@q@*rZhbaI59_3fLBcSa+I0NRA5Uy zKJfNey~$9<^3WS{7y}?4(1*%_#ZTQ~NSYjN*r`7UNjVZ4ZX-=R61lISY8wTMy$|r( za^Ufw^_#^e{e)MjD!8Y<64k+S9?wyGcwTryM_RM@xv$aL=aQ2>oi^}H*>SG`oSDts zhST|z{^JbXb+NDp4;*9%NJ|vL1x=t171F?a#OK8j4Ipy zpM(?3f=_qV31?_uqNqZozY)8;+7Vb%HT;j*I$ar8M`;cidx82^bQa%o&C+Bg;JhTt zLLpxUn^`dC2&n(-3d*t%-{!FP_=jO-?x=;7$w6K;*L0t2{(Tg&J8?M^i(tXWe=rMg z4>brfxT~m7Uu_F{Q5ChshLwArSQ5%1b(Il#tOrNK$YLJ@bvEzP z!WO|@an-Wo+bX1nN@DpxMH1g+d(a3)(y9l{DK*`Ni`cS zHcuZ$8Y=K^^L*(fZ&R4b0~)_%mJhf%pbMLn)$z9lXS$ZR+S4BXtJ1OAevFq}pt+F` z`o`+zb1Gv%6H#Rt(52`DFf8z^7#6;em|ywb|LFd;5n|#!u6;g1Hn^9$!unY-^7Jk8 z^jNknR0?Yb$l02!?P{tIHSz%~_B(yT%U;Q? z$+yRH+BDJ&OP$QFk-@9UJ-v4=uy;CJe8RVV3^hwL->@RGfW5wT zKmLI9;V0`!$!zWie3}19GyW|S;q9p+eEF#9TtIXA186QZtl;QPyU^=mQxgOolON_j z|7F=Apv=-7kd?JmG{1U(`XxF1lwI1v__SiD25<$Te}S)uOCkz1`fpyeG!0tA;kR5C z3VCz*O~oeXw*a|F14JYL!e?58R*5J2rJ*b;p&hyZi$@YY4^a;@ z7a5*em-hb7EbGqKOP6abrL?~E$P0r1_|DX!Y85ccfu;iubkmuCI*v`> zzFWzPQ9W--9RL(C>w<&ELMeeG8H?s&^YCvKfnJKrOcn`#&mbc!msxr2&Nc#)B_o+P^ zUw;JW9i#M{8PHxk2JAJn3#a-IM&zO&;q|S2*-~P_Sbz2L3fk6ehEnyeJWr9Be|}l= zQ(3%@=NJ{%qg;OdTLTRLzw_QF^jp*l&j~bI%2}d3dQ*v zk_@K|L;Gx%oVNY3cBx+z73=9#QS4ue%aj<8k{*^M!j{#YfaXBgaqpTL5iqg-boufcBm3Erz@iO6d ziV?Vaw_m;u}&aKBD$&jfGmvOf}SubS0xlo zA+aTyZjLj{WLSO}9-Q0{TD)^zx?lAiq(FkDoj`b{p-Vd2H=qSxh?ZC*$YDzKXC!KD zg&i*hZZa{W)(8tF@rQIu&wKqt=(ELh75(g7Z9~(0QE3;dj={VF^0Og~Z$LA?ztP{u zoas)#DR^-p83SItaqv!7G7}FZRwt?U47m2^SJBbYn)}&px~ON*HJNBrJHg=BTli}; zqDs}wMI26HTH!kR3*!MdN#f{*_MMZ%RktxiGzry_^KZVnU_|C01!jTtJm~#l9fslrpi7HRD5q(9TllfAi|o`JU2^ zISsq#QZn+;R6%mirMz=+nA46~vjD@~f%AP~%XMV`r#<3mpzysTirAyhcw;z0n5Gi6 zPi__5hv{b~0IzjS=0$sr$PS66qaT6cto!DC^ug}#SL+7sR(c!7UM9q!frQyyB{Ucy z%$ED=ALezAk1fR~*57(Un)l|6N(gIZQN`{_JR)6h#*NBdmAB+| zGN-oq$M(5GAQmfzKgC#i^fY@3UleKFCP?!bI|uts{AxWppe8tCntq zR3md;VlVyzF)DKh)Cmxy%JLXv`J<6E$*H%m{LT~NAK_kVVqNy^sl2MK{UF@Cx9KH@ zlx%^#fvFIsP^wJfU5co`D3+uflwoHy$$oEnd9=HKQ;i(`{}&gXS7PX`m=YFy@Pe{1 zm2xHMm;7Gwfuy>b1+A8+j&)6v^sy2RLyj{Q_ZAA#g;RdCOeR3VNSFAu3jojt?_eQep~LTxx0hws(AO}%`? z&u@d7f`E#XGK|;OvWy#;Yunjn?%;{ZA=25HS8W9x$kPz>yc+T7E>;OuczR~_^z4io z^(|iotA&{8C7~^T}^VTJUUSQ+*F3Eif*yD5g1V-L;ur?bvU~n1Iva{a>{855q#0((mkA&M5s_= zwYy|_s{XxxZ(4z1i5V#3Q{j*%bD{Y}K(5VLx8eW$?2PD(Ra%O#S`T9@XJ zG%%ZmtIqmdR1JVX{xTW$;uy!zv9$sK0Z7IKFi!jrK*%-dKlo_fN@AIwz*i>8X~h!+20B7GzVHBr*H`KdZF4OYLufL0IY0UF~@ z9)Lcs7?%ooYS?I+HrxJd^Z3D9F9YHb6kGZHwuk9Iw+X%!i%4T}H`WahergtHW}!;) zyPrG-h`}j3g-(-J%Q+oOsuN_;D?Kvo#vs?3Y!8`i5AQuR<%ZT)>Wqc|#T4NRE_np$ z<3*$IPRy19QM2#g$a@q*H7|(&>of(qw4b-$EG<3wxxEh_u_e^hjMY5qn^CkqM;l5F zM`DFvIChWt3Bcecsng;o*y-Od1G%=cgkl>&9Wh3Hc;!QVuwXxPaSkXI48|kE$&OT= zpz*^rqYL^yoh*@|MS`IqR<6sv<3M#5wG&y18bG~iarRh&A2o;xf6Rj2y@dMcmsI&l z5GgX6j2&1^enG|ks<)z5c;>j6P@Vp{|ENSP?V>=bN1uR zf4P?3qZXcM$@fZBVm+FNBojzsQ+hi{BewbA>t)e8U_)WSQt zDZPW@4<8wOdl$YA+X_-%dnAZq(f;z(fXtKFcJ_?HSoOi=zvlncKJy?4UGed)m8xW9 z`Y)C%-xUbI14*b8z#1OM82x6O{_Yi>yVTzV2v};VU$ax(yM{O5aKC`qvDn{q;O*EJ zU{KZqh)NhTdkW@B1DZ>eM_%LO%2WBB1mKsZWb#7h{39s`sTO}far4?o zh#w9m0+JeF5f}s9@LtfPmdCML3~B$66j_$ca#18UQzBm&ZsSj}Q!C4+Rv)DL4Kk${6|6_`%3v& z5%R}_`jdd42lL6k7BF}4AG{xuZkcS$v)E#;DPhgk{f(h-DG8D+JMh8u@!*B)LwYr# z*G)o0DlxI5x*QDvy8|zv^mtKCTQe>!`}R9ecjeSCKNv(4!o^az#Z?L7f?ir2eDtsIXx%Ln}sG%uV+9Id-Y*Ix^)J(YJ2_5M_8t^oPNf2Rp&XhHPF za=GOPlLYt4llP!6_6Xa3Kwk_<7n^^i^bB|MS`QEz5>S^~9>a@s6@!M4RJ%mK;9b9w zr*j|$Dn`6~&w+q3TB~>uen7RHN%_x?C*syy4e~^9u9#+FAKena^MA5)KK)|zt4be; zt=U6|>X{NviQl*~@R#h0;Q;MsaW^f#Q7{@r_*Jv(@g7QIIBw5-=Tl9%$+L8@>5%Xa zkHU@}ok!~0dIH8wi<-O15z7;gp4`I*qlUm>l$b+1@$=4rySzFb!X=k%3q4 z8THFwy>S8qk{K0(628QDc$}^qdyjk|C|D(oo8<&_k&cA;FBOVX$w_fIPI>KhXp77| z^2>~SNb9Ncf5ZWOgYx-v-PQZR!jyZ&HG&!GLZq1R_o~dW z&WjxIQ+pYoNZ!J)Zt`XS7AD&Z>p_X)KL_8ZVT2tSdQ*4^TvgKt;riEDfJdPV3sFV4a>l&yWIHn!=1T zmXC8{@-t;Sak3D$*Gbn3t#1M-8C6+MDW{dAQbZh-U&evYhW}U*kc(DD5~R+>gx_T2 z7QP!HYw|605pm7Kq^(MvnS}7E{~Q-68>a^^YVIckhHY{Vc44qsEwf>CO;OH^p7D|r z@a)<1$=p<5_adhO1EN--FDNLj9r*a7d}~$W^9EkQ`sJ)2#eq z)|QvQPY<)DAq8N!F&f2`Beipa4Gx!P$%496?qH<5)k9C24++hB-3|14i*F_)(w#6V zxAp+gk7SW=Xc%&$%9^DPr2^Pmtn{bt=HaQYvFOTZJDzR@vTz0R0xZzM!>mhT>eYeK zTi?&}va4?y60S*1GDKOp=~;CYlrkO}*w(UYI8dEL?a+d;AKkknclda_g4uwTTEq}? zv^LsVNlPP1!_n|g7VzK<)S+K#u(ppFSd3m-qDwR%dINh1HBEThJRuO>7?sSY7WVAi z`K5+!xUXtthI9boTk?nZxNAMt%`MY;kH+oRnu81bgalgGmSp4qNrC3K311=JIfU>` zlMo0+bt~jz9^SUdLy+T!b_K1-oaH^4BP3~HX|Vuj0}T*rp%0TuH4@CmIQ)PcHhm}d z=hr?xw-Sd004(fadOU>tD$XMQ_#fNpwBSk29sP*K3F|a0#O%XlmH-XvuqBC`yI`I; zi)fumqKWT`>^ud4I{0=K`BMvqT+%w53nf0+;`yxwt;=MyH`VJVfeE*^@Yj(yd<=)2 zEE^~B61R z|DwI$=NBO5B4&s6))XdJr7sj;=~f`>R(Qv8$b-51OF{80pVD~Q;gR?oW@brO9zg@c zmv8LZ@#iD%_O4GXN6uq7iFN;qNk5AD*kG z*!o{{*;beB$upqU>bEnJPDWH{QG1j!WP*JGNrS&1sJM>rr&A8V>Au)4 zKQhLIx})ygcE87x-2s!Pi*gW@P#ZEQ!fKAQ*3}-zfZaj~LSD{`XVj z$6m)spk7{<`*d)%0Ut?~Z~g52w7U2Ms+9dHDEZcsl@QOrk2{d}G7oRuRgdYgXl`rx z%Xzq_^lJk4Yhs)5Y?c!mk|1 zeE8x|F0y3vh!4fZ&2;a8|DnpQ|I{psR^Cgu9&SIRmaRSwFgOly#KeWC`e3Rf(brWpEpuF;R_iygAd5_w1l0eK&q=QREF&*+e5inx zgxbO-t*HMj{m>p}tKMSY)!d$l_*xwGwfGzAxJh#xAhH_VT1(WB<*f?CLqUFZA_(eA zAI?xZr}527IQ5IG4I@(?7z`XjPv_C8Vyu&ue1)oA>+k#3A@HL*0l0?7HvFJ zj$sre-LQ*Zx%`{d?iGdqhP9dHSnK_W5R)e;K(54GUOOI(^a3$Smej~?lq|h!h(Pvz zpeUVWW1Jb`HoQw`^ldEn-lPkLJ9+|9+DA3O2Sc&;VJE(a1*JSSX-*c6 z(Rp8s^#en1041Mh@dL_fB5vdqX+tU8!H# z%%aGW7{5S)J-h;TIH}UG`HwQO|74&h9^wB%vi^1?eZH8WwV355#?=%bIt5V7P$cKK z;L7!@>QCgXTD2fiuul)#G|qV<8~NHC;|hY7b_W6c-jm3Y106r)uP9TD_HxaQq;nRU_?PFkT&%O4ZF?hQfQJE-FPv^A)ual)VKGeAT zwl^~ZsCqH!*?@cfSd|+9VP)E32VwrJ#ws)pGMTdw>{z8%^^ZHJ;4a-S8*WTrEhZQ% zR?qxjj6EJIIA?8?lj1~^!QX$CDaCGzME%<;IucpXaodAqd>Qx{Yihri9>CW>aJS5v zTsOHlDs=ZSbBWztHqaGvO3pm(>bl3T|4}OR_l5t zFvnT8m=mA*E&tFle@EarVJ!4;URL+F(7vWqF<%=yLLM(SLf)etFD^D%lf62yL8fDF zAsLm8J|(DOSa7-eW@2`2UK$##lC32I&(S)+j(XdC56<-zy_r<%#DLOk3*AY8!$bx0 zG*14+I;3WWO0^j(Q0m1cwb5ws{t1WEE}0$B$3odcUNqmRl_mwO6VWNNI4g~C_@sxO zCBo2VX{|ecZ0Ez3(1eaBS9^V%Oq;U1HYcE#tETe~hFpqjdFY%`C z=%5``jpNU6O$ajVZMQJ8+@iQ_qu7W*m;IiQTrzVwxlh*T`K*Ke?K#j#iVW^3+SyLb zbMxXuxb{vLY`h-7>SieuAsA!WVze1NuWFL|>~q~b4KLIl$ZeJ9w(SbYu}Lhq3AZ-Lo1Xb7r%RkR`CjsnyMu#>psz}NJV1h6 z63($dG4`IfVvm86{N3BQqj^=LF<8)>Zt`(_SeaBTZSb6h!%9~$=TScL)1S=;vC>iL z<8k>f@}$U1?AXL^!c0Q;#<-X4dIX>vUhxw=Fy$J2%2QDAlTeD+CyrzV@eG|ii4^Q4A1slMHv$2GciUwMIWM}?bLz!p)OE*YegMel`$nV)n z?aUZX-pB2@z=KB55oZlKw%l*_neqp(DZaV>Qg#nR?gkWJC(!#VuK;Wjd{ng5I!ZD` zlw)^#`(14$(#=892?pnX^m-I`pp#^b((Q~uk0YxuAS38`a}c+w`QZb`AgXUW8G7tA zQ`6tx{=6fmGUX9zH80#WYo)yC-XgF&y|3AY*`{t_oA^F|ugrMVNIj`u+DVj{tM&@D zPUv$7TKMU>nMu3#FHVIQA|O-tu0!|IwRJhf9ScWMm=#FsaI0 zZ=#$H`OLAIg27cyQ{E`6o^3}>*52>RQ6^Hb7ucz5mKyL(vf-A#@J|gzs5VXbs8kJ& z70b^t#BfY8(etlzVf=D9GGFTHdU%`HtNLNK5cWB|N+#$S)H^aARUG4rS-zN$iW!N- zn%4P@;g9!D>t3??NG=xQx>-zm)_OZEzWclovjBrS=Xk;6qoq_-AJz_0-iJe7gkM36 zsfZo-tN)lh%2K4sdNS&7EfQ(!D5?Dfr2$zZIQ+OzA|oeNA)e1=V4tE;D)Zz|bGp#3 z;xSX1^ON|RpWi#9d)I@v@l|Cq#$A%05QVt&Bk6^2pc10bip5CQI8fib``r?zpWuG` zEr^V_{h;G0rCvg;u6VF>7jqkR;5Ia>E3$%ppWp(uJ`P@ZH3>UBN1FG_%M^cNZbK2f zD?gm@VkLKfd}#aypR=`DbuzQj*jYl0J4r^N?!jY4{bv zACX54KyW8(|9ajiuK(w!+meUft%~p)oDWMhUk_Fv0&f%9|1*jDP5GS73xA^8;tH9M z`FsXZe5~(se#7oWIf&z5Pb{E4;xAf-*W;fqueaD)w9@u9w6DlpC! z;x2VxQSR`@0*8tD*tsi5$L9rtHC#kg!gSmm(@#nPM6M1_bTraZYrj^-JBdjAPxV)q zFn$*tnczCQ9)3u^P!}Azr`2L=a#?=v_A=?Givr+5wV?Aqx6hx;51^B7Wa|3(hLXne z5Ong?ew2U2xbx+Tf;1gr;_AncRih*JZy%FYLa7)!VUyXn8z)+$)E+nIo|`=CP^9U2 zlE8_*k4P8XZa>cV9im8!><8>Grok=o73vXaK(!|4>;J$xAQlK(Z*SE<4e^H(cMRf(ij9KSgctT^SfPIZ7y8-BvAY3W|wiVQ{0+A*lU{fldQh%1)*;N7*`h}j?I;N-#@veR6i1)l$38_+5b)~gIa#5Bo7LOt`Y zeCzd#^oG}~Dj1U)`jiAEq3GqQG~FNGVx&;-G~x`_cHH={);`Rq;%&o!WGNj2WkA88 ztPJn)-BvDF4d8Fe=RrpDuqK;qM7>|3LCP|xOZeXLOL%&6yItqmrueq3PxS);bT8466fQU7mGlQ<2I3>)>m zyNZan9Ec$ghzD`+1NR{wb07xpvlPfNMg-Tem@YWSRDi!0&jNDW>2pQ?I4Np2J3%1G z0)BZhF>5(1esuluXMgZ`Ru@2(momib`37I^08M&bkgzbyz%ZAHPbiqS##Ktcgh*d8 znr?>V!H3*2s{0VMhy9!uhk0q)a4E4%4rawX1AShVe6QrU{>@ZIfm>~w83`PlDdf}h z%t}kWe^r)vCnIUx_nE|tNQYg#>rl>p8du0=R!w=G4W~Dl1-q8PgFIU%!WMJCzFB~Y zjR-~bo3ACaa$($MC$ln8VU&~Ln@XN$3TT%R&xhLduBZOIxd)kFXlRtg!Py2jG~qix zF8fdEHS-~I<#3|Oh#pZh&oR4N+f$POcqJAPc-tXZoLzmcPmn)Dtc1) zw9$&N7U@!SsSLF@`BdY@;Kz+!^uf!-cd_+^D~AcbWKVH7v>q!%+JxRyBcY7H`kk%d z#2MOWpVcrBYGvA7V5{y@1j8LIM{eyWh=@n~2dGEJ$c0h;&&XH#T*yc+R_k9tPxb+Z z#q~rhT1z&5i3PIM>>0ZoSO8UsL<_0VJ@h%=lu@g?V_RF(yymP?@b%g!0`nQgo7fEr zL$VW}cxOa!K<|9ksl232V2wh)_O~>*Z&ioErOZl*%vkx&N=}DpazY-mH;)(31O%sX zpLy9nH`B`(K-v{33`F0K*m1d46DbLsdLgh-T6oKw?CIm?cU7;ntQjQ#-NXppEHmP0 z3tPD*kuK1M1Ue@ilJ3-YwW&<8GZ*(>4z8zcvlU_4cx5reMgj`$qcmwoR*_*r@G~9k zEb6>Gs9#}O%5#gg@U3f!Jy-TWqXqal79oF79hAZF@^KvyV=P$e6{3VQdZ&P|F$!M- zhaN?*tnA1Z6@4~Kf$Gaey1iDUd;Mg7^96RousSU?-gj#K`%L^UxL%@%e9U>g0wKYs zQQ&g@xVCL3#)y1DmN{;lm0$WM@xUzt=#q9>&hP8;s0y<_BxbmY;a|^N{T(G)*Sw*8 zO;-1<;h%gyBrqwxNPxqbnL9?E0zrBeWwC7kdYU=xQlyw|7y|h$1b6&yqKsO*eot0w zg(uk2e^55MDL475dWS3aB}&B8#&Y}2Qb|j^9e_JP3yis3-EI5+J{v!9Jar)U20BVr z8&Fx}E|r(6zK;Yny|1{vZool>eGBRG2=3p_U4>>68AvtwTycrPn}p4d{@!3Eqzbph zJ68;BHYpK@UM;Fvl6`&{I135DJ#n5qyF_Q?-bq4VCZ68(O)gAW4kvf~4dyOIz+DVY zH(k7^pj($r?A}8Txv!iXj!z&pKd^-)p?KjR;K}vE=tNTcN|+6#e%~ zrb1v!)*{feh7y8Dl8oT=4`irm*Nt<(Fog*-;rwj^54w0hN0$>`9*xD-hAK*<)J$0r z{fkORDl^8fB4f4tD~fI1)t@uXp`T^Uv2EjB#(Cfm%q%wS%!;mk$(+cR&X3qlML&Wr zbrK6x7D=R8jtS{!kL9x=qu5y2k}xMk98a1w&`PMK7&ixETRZPMwUB@PBt!2hJ|7%4 zV*AM}!Hr_bUH1*?4NCQuMOxF*QS^JU9_S}wBmU>8#oo=32Jcd-ThJsRBURr{*R-iddbN3P{h!vU(B%Z@OP&0^?kig zoyprrDSnlXjP1iDq1XoBswg9j5Yg+K7rGqEl6ZE{@x*M1gxHlcW|zP<v{SEg%eh26vT^4na8lKGlQ|0^n7qcHsu(C%zJ=cC8xbQi`j}&z%BPw&TpQkfI zE->C)r3j~w#TWR`*czh=^^&H$3~uNy`4W5UljU<>Z%U6vM7jg4tV+^3LF0TnAE}~p zS1lOR?}x}2AmeMML0vPylwRQlf4cH*d7(MJ!djv1`ZeMOUPL02M)Nv9)xN}P;W}i& zD@%XFbqU}V0Cp{`NE-?0EcPYxjNnFE`>bY;BWt-(0ggtePePvO539)C?H>S+y=m?c z*#ab_i1y*zsW74#uL`kr7FL3)VwQ>t6u}G^-}klaiHyvHteG8CIsPvSD^s|)@3vo@ zd{*&{O8rdV%;vWlu}Zk7rVdI&SI2DlpGzV1YS^ceeW~((UACKc1aV&O$tAs|wSW~X zlGE=dJoO+vCJWIbkoeO$p?Qz?M%iO_?&i54e_d4C5qxmnVgJT|jd)zl^2XLwnwT{H zQ7y8R(xSu|t_LyxI8@<1xAP?u@FrTttpL^n=T?3)br@hpV@^XFCP4oQ04qb?no!<) z;QyTV{%HbZL`(q++Gf&Bj-M*NSxzW0qSU(p^bM5RP0^s9`Sg`o%Pf{9v6nxl_G-t;k{n2kUWnYdH5cBiJsD%nCL*?E~c zIT&phtB`T9&VMV^9M_szt|+Txs%%oyNi3v|_z*}e^c!6T6Ocj>X)9LdV48b6SC`X? zTz#C*ZD{7mhaV3ZAE(<+jpIuVI5|@wzZk8%M2<@j^7uHOODyY#HvP>ii<_RiU_y?h zud3nf{juu$@V@e zyF4pAHn0uEeCn+Mbk0s)JAb4kchXxQ8rK_{NS&-Fq#+<>7!ZcwAEniBA=QBwc&>#& zk+G#)!oL>%sQcp0&4l9=1%O}d`kcrKXS~=Gw(}W(j9H#?rbD#o@fBM&;Q94<6&V}( z*`S<7@DJse!)pBYG2#ILuzfx@I?EseQ^-mr(ns^s=nH+s#^!%o!C>gRZ{FO3VS++o zAW|Hn1P;Q$2PdNv*VL-2I&xfYZACJ&mFcg>2@QXh;L2r;#3W@_Wk24Fb0-O`r;^zm z^*S};xd0GOvsy^Qs0J<@=Mby~|H9cU9F=8U*3JBaZ(Oh7%z?=N0ny-{kwCTtSboSu zK}bFOhCJ<2a=q1z!bJ@=>*^!Qe9IH^0ks7dBf0h}`xf_&hCc^2(&HD%2OqZg1z}@w ztCn3G5s=QckjbS;#YK9T*{yaQdHW$|_2e(lf4UlSR6Yxj>$M-T^*(vjFSL(MeJ>g3mz{hYG?n`c&u+E> zGnMx6+OIw**iRnvE|1lWk<^KJ)Hfe7=zLy%&vDg_~!Yfye|Vm+e5ULo0#*e1h*c6c}!0JD69$FD`cWRax4ZY zY<&ibxAKWuN#mk>{WttblUKt!Nl(m@y7b>P8Wk4b zqp4i;H3m;vv?O6kMpzYG&2Yo(@xK^m46DJtS!?A- z7?0~kcdRH~)3l8>8M#5V4m@bT71XWg^(F~$Fcoyoqe%b{LY2eidYI3(5XHr+{RWEz zxfbm0m@|E~$y+$T1#j1SZBV(H6ZoR3sX6Aj-jL z84}wbLh_ELOW!%VtbHn(aOS?SAJa-mRuYV3Z!mUxfz8_!>InRC*=81}SAJp|HQ9=Z zg)U5$J1=eaQc%%#czUH5^FTXEV^5P@S34G=S+X|$oOu1XWwR>o3K6zKy)DN*2%~i0 zI7(@Ek!Y9jYImIvQ39yERGi*?ARz&l;yJ(HIY3_1BW6}~q{k_)JpExMrBd~M}HthLi0>vtV}rch8EzckyK|L9E4ijLVAcF zPnwJngE*j|Tv_%wNo=4w_5+NuB!5o=C9KOp2vkv?Iuo~z5G0=qdkoY*PpDAoZG0*N z=%ip+i6D-31A7TmKn}pYiSQl}QQH$mDwyL=>FY*T!Zrr06+IppMb>S=!BtX*?tAs; zh3|>Eoddh<_)Tt?BNKV0H^P}hqGwuO@1L3^)SDFjIQ1j`&Ssd24jS?Dv7o1!+O}6!;qODb&OX12Z2!Oyv&GO6o}s@Lj$trOiqR?lkMk#ZJ?h zS49}P^_4|GOUoUjAQbCQZj1M(L~}B)xRZ6uTw#*4|FkAisXH*cY-oC~dengsQ>vLt zzu460tZO#zv4ow~h&d51CxuT+6n1p!I7lh85-KaIeZvx#YlQqS^xm%fX9bwW^k7O= zZ&I^GU8yrP)>A%!40U7W7LwLrJCdvzN|U#b zmm*4IJJCWZNi#P_Mc6~dJ4{6wx{Fs?oJXh|^$}$*%|1-ygOQEMlAIYhBWO__npxxi zNho&}4@s2zIGaaC>HAn6qOsMB)5g|j#8?v(xXv4b2LP9Ho|MPq&0bM4W)7P0@2f<3 z--!ktgfKD-@CS{>1RsyduQ)^6djXhjNYQ)V+)AiXW(H*pGYk!vd{<+zmE)&$MKSYs z|7W$wfMKDBFDB6X+VkL98ebs`4zNh;gsdMUI2_$PK34;sVh3{fumV0pW~W| z9kWz`t$Ral@HnU#67YPdo`Xryp>YOVcV$$jijgAH)lj(YqIU>Ub8R}R^-ba-b}smG zli9M+m>dj(!(Z0|ckS_veBqU};urbYt>*u?)$9-&^ZFugu{Tbq?wTQPbND@9R0 zy}EAi z8c~o4_rxpp#`BbSroBz=llx=S3N zDGk?l8C*kY+}#{NhX9a8lA=kN&(m(U+xaW>preu=k?zetXFFr{Hm(DJcUP48RC8}1 zRRA$YF@%z3zlGB}gDy7Z}xB|qX7#_zI z2CP27Jm@I?NZSh~T+D@OMP<5C`Qb&TQj#qc5TwlF!~Y9DnaH z+?^1G9#4vkWo9DPdJV~1uLhQVx~mRIjK=kr{P z;$f9~dvVZI=q-|yBxQt3FIVdMK|l!1#tePrYwZ-U!GBv;rMUX@E>{q#(;xBJv>Rc7 zOvr>o1&B1P1(A$#iB>6<+U(Bz+hWE^iZBwsea5({4dD4Pdn_~vU@x&IU_aD8mXW+D z&}6*#^~Xg+Eoka}TlLC-^bF|Px6sYhTKmpA?UU1Vmg%eix66pX{oU`%{Ipo`bcz&B ziWGZ3yl85M<$Y0$mC|P=)>q6DG{-nI`mDo9DDga(os7?yyPv?59OKC#X(YMcr0e&kI++^|M{BI7iM6e2Xh1&a^)SFfChtCmwe;aC?b%}pD`=k6($f!2}PD@|n z3|5(H{YGSYliW-}Dc+nRI$gObP7pHRxm3P_AqXA-qZ z4=DS;Zn{;a#PW_k;uL`CPlqW>g3V#<4_mSu*I?Sf83TAuo4`iYO=8!h>INhwxxq1) z4OP6F>i+b!QWv1k5F~4pR~)Q<53F@4Q1(`a25l+PeFKDz+&PO6g`X~Zk+vK9<{Fw= z>5b+}UNC1{_v?L#66*8vits5*l%CB!IBm%(PGPzGhz~cg>nVU*&b$D?nJ7U1q)ax5 zsVKVV^6ORYI4H^vbx$p_YdtP|p@(E^rpVKK_p+z0E`FDRGR9n$CxM?z{Xe^e0qS~< zkrOdg7lturr0|hjL#o$ZAdSV$_>*JQ8a>o0&VMmpRxU2z)3py8yA6{=oG9{&NWeYl zU4Xw?QPxVTgyhzpF-3SGzTKvqXKWm&INg}u*>|BN2 z1RPKAMwE1L_7F$C=%c`1VQL=ds~6%K0L_-QNB55_D&IHbp6EIl4%Q+63QnTt-kL8# z=j7*2xHq3vZa&%Pk-dLZ9Xssr0xh*RI^d--x;x`sIYxFZq72|xNC_67_dnOJf5COV zyKY%g%AmaH-M-O`_-JT>)#I~`9X{BeZ+oC%Q4@Ga`QvFw^EitBsR@K5up!JTk<6^d z)>s9bOv7AGWKLs>g6FrMLXOra%$8_EKbasc67Drl&JtRBR$hLXM)t{hRF-b~y3y3H z&;8)Y8^?!^zoeL z)Nj)^SELw9WkCTei`}%8wq2i!O!VHnoCfF_;5-7{%fC3)acfa-Ss#ucbVNIC>L!t{ zs8~BqB0`@Czm`%dyChA_fR6GSWR!a4#DDv{_=RbKuA7`oJo-d9U#kNQyh`z(1mzXL zZ(gfImWZch*Vk7GIKLAN-krgY41#j*A~!+DT%OUZ&?yw;u#$jhy?hgHo9voRIY+2F zP@|YHJUajop(MRpw0ubr&p&76d7qv&#gMP2gBED=AnnLkuD#o9-l>&-GZE=4j+b^5 zuT2bZviK@^0#=@W4Eewl96JTxL){^({;9FF`QeF-TKY|==gd(PYQ5_PN-@T! zcIf}is^101k*-E2#dNJGad{Y0OvfIIS2 zOImzp$-5aw#F)O$bh_fs$1G{L{e$C|dIOG*?AGLt3cd>Iq~DHzCWvny!x>elNrV3}ja zpeQSIIQvHcKjXo`17(2OjVBd_N&dFBU1TQGHGTCn=s)Y_Yni&9+LGZHW5N8BOE1#V zbd$ncE@%T}TfRiYxRe4bi9(5h0_*t@Ip`=rZkX49qVu`a^~xs~_Y|WL7)CLxYa~1$ z9#9y7A0p6rr9i5{13GbVr{-st+rP3xoQuSc&Cpit>;S?qj06UU7)CekIqOd?Zw2k) zH3IziLLn$pTy6OMy7vlQOEFD(GvLN3W<5AtkbgK->edkFdbRucfn{0S+8>6!q-M67 z>cOr*{~eC_hGHTE-V=l`eAbTGJy%7&Q>&z&@$OEwK2LMLKuVMVYxXXN;d$YUk-sR5 zqzerB4eQK?yv457gycs@|GWHVr!s0Wakyi;{d-oni!y29WpTs*>3z-1vT=(_@}BDZ z;9J;2iGpL{Kb6z-Vn!sX=Ei6SduUQ-Y_X@DW)L{#&{nqRS!BBWL`N7zvULB(IB{vU z*}Y2-p6bDSl-2cwfTcR}s$x#~m^(&u6M(fV)3XyFcAk(utTA$xY{j+YMhMA&Z;q%7 zn|9QE^>>xn?mO|I_$Q3i(F)`T_;1J$@0mw8Il6j*UhBf&y4Y;PH}WIiy=&LvzmhY* z88Wf6)sQ{Bt!*&G`iOB0W4I3rR)q(CrvZN2c2uY6l9^^nFt6S;Gih-R2y69ON%R%D z89=vP9JKTn0wgy1(W9EjkAhprK`TL_LU~|zuBJ>r?-t=zBt6k=OI4Xp7~4)b=f{#4 z;r|JL5K390qtmMNM#{V)>IEo~cjG|^^6SE=a{l_}Dv=$4daTs2#~iS8{VfT}knbM~ zOMJ2Xgt9lLjtQM5H7+-_6OWotloB*p&I zEjtThMtNMRXTNT#Ox5d$8j%VEoBoVgd*ofa;jasYE)1E17eyx2Y@7W!8JvR_bTE?r z;b{3NHf^k&U|sfpJKc{gkP> z%U>C_nPo$76TMIn>)t16=~n7exd>prf3VN zPFWQ!RoD~vGrhrRkw6fsBiZl02^uTJhh4JsRJ~dp&9`EQznCHz zYj~#I4E5n0Ut1zA-CGUU|8em`geJ)mQ#upp9&nE-dMUh~$+zkv2Nw5uo1Af190)T6 zy(_N*_fWZjojn0i}9|h$xZlI%!{Z$_)s~2XOb}{&!OZfK4IKu^Tkk>Ys0xU2NPV!rLsdz;JgXI;@~wqioZ71r=&C1Wa}(nBy=NFIHAS zCk%W%4%b^H%5P?WbW_0v^u_G%Olc-q@j@lIg1g|ivERt?yMel%TlBOMCL5Tzv*0{#piHOPS`>sp8U?- zm3Pv*z+wEwva;ZNefa($KhK0{o6LNIt0z%tVk|+gXoMEdzkF2z)ESPLv8XohXTucl zJ#@lr3iKuA&!~9^p7B6TjB6PNNZMsczyK#nL}`2w@pktTvYo8903!*a(&d+_C^J9h zcW~Xr2p(X1-E;w?Z=gl>9rDy&N5wZ~+FSyBkB-vxCmZl=npK%s zzgLM&fF8MYh-vi!xCvL}jmrODU0(qfWfQecNDIf=8d@NUUKUf2Nj(vKuojy>IfSIzM@sL6WoL6(;|f2c1U}cin{Ha{ zmxL$NL}MWj@h;u~^!~<~N|2=ty*%OA;SWBJirrtLDPsv;>c$0NAM{zImq^?0+Yl*b z|1ocUL3AdA{ddXRmYI(R|Kb_H5Wm(I>W2z+-32yRReMz-8TV;6tIch0XFC>-=3F!a z<+?@1N#S;$GRQDiyrxO|CSi57}x}|#F zPwHUgrgIWW`QF2yd?r6p#&-HRhY#4%Eo?LACxh=jZB7=uZow298!5-C_FYTS^Oa7^ z?~}U0M9m7R#LTqjYC82%vuMeu;arJyj-8UF$QrhYx4s8Q!PIJ2TvnTbwP87-b8m3i z7EmOq=#Hqe-joyM+MIUuIXnh2F$DyoRZaeYcVe%|By`pu19 z3{TIfQ`VgWw#dOqicM5TPiP zv^j@{YV_<(C~%z^nQ8lR`G9rH1kpwU&5f+*Xpai4zWDugn9CQ-krCrj!$AlS)W6+{ zS4^-lDHfh>U}$$=J?w8m2P>V4NZvrSj07X@(z1A7oW6R$H>+K!#Rbd-XIBo(0jD9K zXQz(744&ksR^#GWiem$L*~iB}Qd6*#LR&VuSfc-+K5B#EzSF$o8*>aJ#w4^W# z%h_@0l5aC1UY5U{^^GmPMsUw-sRg6oz|--u;m}4vo$7*D4EiuoVF$;M`qFM&pSyMT_or z3&(!;tX5{Kj?jB@6O{9i;{>0ci4oDG;L3^OF=bi?34X}h1x&#!5_XB~Y!N^)YwqFK z2=cdnc+WH6ZnJ6mH@{Edn&zjhjZBUAfC5RKpQ`=vellO-T|#+zicKKR1NEs|;;|V6 z;c0+fMyXgX8EV*Ok{$p=zd#y^T+N~ht*UJN8<1AP_lDDJ7K z%S7K$-FUt#_Wb}WuuAKSRNy8c;(B+bUUsja0S)TYD#$U~&v08J{&|9{fIdgIP~;}( z@HFcMwjK=C+#%+QeC3MFb^Bhk(fXHT&t6|fn9mg_kYwSctxd|#6=QnmB&2Js%&=`D z0|CD{L2btZyH8hs;fg%jW{wClT7=WT23OiSQD7(XB_H*O?x&^MX8;o=JwD*c{bC$D zuu~mbuLh+QEk0i_bY(V)b<2Q6b?TJuXV!lk$IosBhu$}m&LY5;LRMFURbmwWDOJC| z*H4cIxMMRmXgNulMxZ)=EXw{?4R?^JF~QRRwvYZi$%)wjDqe$!udVYxcWZ@KqQVAo{KNpuGT=4~Mx5xhv&Q>OBzE18TZfTejJU$yFd9vSA8Pj*`6#=h;#Ayg^@KyTGux4^l=kH>-}R7m6s2 zVXuDneoa_4`-pxiHm#@Js-Ugbc&(H)x{Z?_QfFKO3NCUifMa!M@HyPmOe5#1otfYf zi0~gsK&icCrBS#1V#V#+N3@PL#^8BMt!&JDms>Xo6)5>m5-^IW&k9xK^+RsU(BVy> zacndQv1Y3-9b*f+?AQ#Q!p+7d=7jt2fY7gIivN^hqHjh%q0G66bWDH4!|~`YjgsqA z-&iWLIo;+J>#Ni3DU#Vn)|#49Zh5!`D;v1~`!|g9f4?z(A^)|eCSWFb(;?`XEf~*EfPz>P`SpXmP)GdpOj(&S^wHfo(XY&#J^85C|A zrDU;TC_bSdT|W|)D5T5J695yfwV&s>M2?)fbuh6`XzmgRU|qd6ArCZOyJaVvf!CwIF*Q<-^W zk`+$TZweXV8ziuwLR2C?1g+Z1i8m48dQP0VqzpapDYs|`GNxd~o1>APsmRirp&YZ? z{9K~c1ZfzVh4P~pxU{mHVOnCX73mn&AcwXoY=8hXQVCQn7w&%a&b-gDUfV$pg9Iw0 zG~&XN;*OxSl$8r`4ZW9s`Jq>>sjx3tGGxDg&h8C%bn(@U5KP}J`Py5Hg&57=3%>A6#!Jv0tFFRV?3 z`tTk_n=vn8wm5k#X$S3QS;8IntF)plRO`MF=v)+7(;9a0$}0InQCOdYj1u9DJSOoS zD7;waa<@WVUNP`mF0tbVIMO09n{{bFYsqK;rg5F5(C};2A4%S1=TR%+N{QOj{r*he zBR#F^oVM@}4qQu9O{lt0pGUd#JB8Zn4VnHI0?Tm%tZpd{yB#5}=W3|w!ZZHC0;*Ui zthhSVZ0Ymd=kY!$R60#^9F)+2U-S#oM(aPhqVEaT}Rk6eEp!Fxpz*>J~{ak>}c$gSAP!_Vu2?xrpSZK=MulJ!sK|>NKiQc6TXuS8P zca2mfJ(-YEa@iOH@%c$@1;0cz&>#ClJ)yG|_>viSe-7trTAcxoQXR3cdE7E3gavWU z5Oo@LGnJJ;6i)&re&`aNTuYDQx^JR}@Sr~fPe4-KSVX3o3cuhfhHFshXmjz!C2m_= zvVI4OD-vY=nrFvTO20e5UQT`UmB8)`!O#r$7=}n$N1y~6ogZ&98YUP%u7zMhDeUPL z`H+_nu28t?m#+r(h3wNiM$Z8KsYjNS=%QHJu|S_ZDpJl2vrJfCsgD&PXHB9MFFSYj zMu}+`4y-8gg^LrlULh*>Zv(#42lVrBnxsCmw=+1v(46 z0D^U@pCDNks{>GrMx2WZ%2j4cq$1C-;gz(~_M0XC0(D82t348ktJw{$e5e@y|uxWxcJKY!nbdpFDI{ftCWsd*2{63dhypCOUyQ~(GfHnfb4#) zkzB+Sv5(v}9ZkCP4P;;YnzEB9PebPj(fTzuxVV^9bKhD(QsC2ZV>b)GklJ5U*mj%; zK0eC4&6@O7H$JDSf{AqcF$x}Vd@8=~JX|s0ksQJF#O`aYBhI=&$^9e5u1$tMsn-!o z{!$hQBYzVPxv=VJcPlB_yIscU?U)O)){2U5m(t=*Nqxqt@XC4wC;B;bZY0@)PdRSs z5wysrgtjOVUwF9_;zm%Wuc<66oUgd!_-_3HD;{wkIQe z35dWnBWSY2LSklh+oVCO7lZLQXD@8xFA7q4Nybb_+MA)5qF&8kU4g%`@k%(o4r%&&-1z&w?*_ef|@(f>$ z8?!ijjs@tzJr8s3ML_TeU!YGBp`80KGSmn_P~ zh*Ol!h3GZw%dV2NnpX7AlP|6Bb6qY$tB|bci+dV%uDJf-XE<2UtAKSc&l8=QA<|OA zHU?yUZN<|dG^Ai!GWE;behIodaEfFZ(mkYg!j$VhDb^xFb_o|g7^86xbuGBGP+)JmvTe6P->zzg0mIRW&1ecW9op6XlW`8;Y~m+ z92M7M+yPUo--CH3L{sOf?>_hleG{22)P1&O?3uKpolU;mz2LvXoepA1JoM{Xpzj3?P*+3ZVOq#v$n`O=7~1a!jzLS z+E;O2X^Eexp>7(*f>!TFFBN)z#+8u8xsN`N$fBU7k8^mSTcjcWffqL<=WW@n_!uo& zw@>>3veduOtd07Z`wxLrvhSImQQ3CL*1a;bzF7 zi0~xDuyI=+h?G8Fq-CW;NNRZbdZ9h^ny#c^-8$%QAk4ll(X6d9+IinfhElz3!pGq(5Q!hT3?<&CH*0dbcqK~d zps6|nM8=At3x5um=ZVkE5P$N&kE`n^@UX7WTkDf4WD4^>p>2N5Jln+cGywR$$0W}g zQ8?DFtkepAL<-NJ+VKOV82O%zO%bNn={FXks3I?P40@vFCcwGs)L`1kOrUa}K%E(g zCm-R&lajw$<$5OSvwb%!-?xBt}?BlitQuk5b<6JDTpBRCPUGL<$o%q$#~yS z8)!yaLI&WUOE%gDRO?R!OT3YPp}a(54hw^UriW7~<0(RHTf_TlBdUr%_yU2u<0!}? zhsU+$Yl>NXlH*8r2}@W<7*6{y(JulgFsddxsa(hXs$<%*=UFj`EdDjQy1eiGbg`Xu zDSjcxyAGNb*IJDN$|SQjZs-qVoiH&}kVN}zeF1rU&o$N}dyS=T?uu5>M&-anhgxtvXX?lKty@ty(TZrc#!KYWJI-jxuwEkj! zfkUAv3%!0O-cvF`ZfPh-)q@7OVx+tB(Kk@_!Ca{Ds zor`~d-Jr@p{wzf(^m$6mW~VIo6vlJ-f*?`hj=Ap1JMgF{1f*VZZ@FMPH9WyaRI1jY9m?5hrvkFfH`vs7~dv$0&7d_5t<3)D%s>V~hn zc+IoXXi}dSDbC10k$(6rzIgP^MLiZBg=>$DGC(Wj82hAAX|7b?0ifq4>gY?z^h?wy zAP7rB)v)Ic2!#>%VpkKu8pMf;&ThQZ?R0lfjhx^CAjoIPwyug@GN|gLA6vT{U-UQu z@suGI^7N`3SK@B8wLyG{iVX(LO}b#+n#1ptpuR+@U{BP$fX_!`;d@9TvAf+cVG)(SyT=_3dMp?zpV|}e4Ac%p00zr`0Lc zE(9MK-+_djHN5pCjA3=v%rdGEP@J@R5xKX4(}N@rIQ=~riiWIqr&)I`9V||Ko~=^_ zAEEUvk!`NN4&dFk8hH=(tb>!{K29OaE#ucuz*V1~)}IVp^<@sAqqO;Hi8?fq zOk{YY0=Rv17J)Wk)b6<8Objq;Ak@?F5xVp|&@PU00&`8=`1l3Y8F$FwPz(AbR}f4X zTfZSN2+0JI=VJP=Q)UJEQr7EAt8E&%d;%+KpjM?|u5S*K5jq4tJI5&FC<9HcD=_WV*W91Nkc^p3tR_XsE_B(gH5{T3{aQ3)V2KX9XuQMemQ zuf=a2QK$_$qvw3%iQTADUH(u%qgE$liYJ!dRIU38Vpo+%;iU^*-;od1O4*Lv7q!ZG zEzpRlr?y`W)iwh&UQ{GQ!I2eVm@)!nK@B)qirNZJNS2LP~Rij!^+c-`;=IscX@(6EUvMQI;bS50 z2IJ7523-ocL4H@{X1j<8Q(4S_G7d71%=m7G>K%I~qtDxD&H01>l&CQu`fhY*=%SpJ zX5fQmY&vA#IKXB#R`9?|pk3c$00@|(gg9??{_FC+CIgIf0UyNj!37AxboOep>?m>i zaSJl5L9*T4ym*BS086M9!Nk~iMr{9{S$$*TpBPM%c0Gc`vIy8F87J~JT0AViwLN}< z{Myf;1tMf{3K#<1c|vraQlVy?dZOc?yRxQ?j|x=?2|90N_bpdVBJNQ^Wz7I6=;1-vM64Do{|%4c z`d8EAZ)a0|&bGl%_Mix|ni2TM&93A;GalkgRO?0LK(p~b+&zy8mTBdp6jOZ<$7|gM zSp-)H8VX4hiUucq2;)H59TSM!cS^D{L}mGV%2OSoNY{vK%(Zlf{Z$^+t*8$uKbJzJ zsC0v!%Z6MIYQ3N7Qzugj>nd(bHgM~;c$?82Q9Tq&i&Gky%2m8Z+HV`gxW=IEjJtTz zw5w|0ug*nL!m?3+8ID1X57=4FpNS5Mzo`9@*Kb>Omg0lV`Py88dCv5!>(H04cTXa+9>TJYK_54%E zCEY+!QWIYzeeF65YzRi!3sx9$*<*P)o32bhV7;I56YxV+FK*N8z_DnxmwK--3!n9V zQ&Yf~4^!{IlzFk-gVD!)<^c7z1g!dQsf7hhHl|hHeIAL_UFw@B$F;1$7&Z@iroJ>h zXSV{fH8vPi&@YH=!RnVE64CPi=sghD!?)zel1^D)LBxubQr)Cew|YnD?w3yY2bTjI z&K0Z$UKX{0#Y$aYcxWXn_-96vm%~P7VTu2;?5X~)0Pq0b+`?apEW>av@&Uo+Fvdxs(Fh+|tT$a4Po1y0?*_`H>tky`euwBYB)@Ggpl%bUstLAR7b8W;A)X zVWP@P)p*yfybt0`{=J1j=zj6 z@jTnh_z$>93yAZW7Y5s>JDYr)`H{YfAJkvyt-e$uON_M`H|uo&tO+h)IBtTvZ@#O# zhbWbMhm)tCXNi7-@kGVbK{|8o7W$+uI4LZYPp`WGG>u>b9wdJexn19z(}z1n_R|L} zo0eO9%2vwGAz^vLfok_(s2jTD*SF# z^Rj)@YawdYmahbsUkGYP`%YspF^uHtFl!IuTar-R-oKT&4I2J6ROfn^#VuDz=5;Oe{xvx@Erfv?drN$Gi$6MN!OI#-@vOtjvC-^pq5)};LKlt!8i|nh$PiZP*bJQZencbZ)J@)4Gt_gK@FNVriTCiY`mOU^fX6K%gYCtw6F*!iXE)I%?D%tn0bONi0c zWf3tIsJ$^)0?O<){d38OqvdN~vMc$w*os`@RT-4cUVjHg9XVNJxq1F+*f({~qH33Y zJp!*z7S7veg8j-P&^o6XI%;K-YZodgty^%0OWYBN3voSh4jVnirAdVnrImO8*)7^FY(B+4Dp*gj#8nzW*!=*6pjI8qACj-!t5Y_ zGET0TtI`aIc@dLNudt=V2YK?5lCoH2k|zF(thbh+gzN_ULJjr>r#DFK%JIHe8tVFq zGJI$bO9_K(5iTOBqzd=%rzQ9KCJs!&Bh#9nDb2z{E|uq&4&oi(zQFWJIDaS42x7yR z8a^9SE$6tV3D{qnv7fx0ZCNI0<^VG`As&Te#ga{WSr)L47tgtuey9o1n?{T%iV zl54A0#E9$abvhNf3)GV~B<-JsBf+sBpKo5q-EoQ*qZ8+IvRzOgKbSCMzITVCENSF= zp*IX=%{5!}f%||D;;vjv0 zj0|W3?l*o{>p}I-$I8IAo{010`2Us6iObDNjNHFY+gb~IpLSFvPQ0De?j&4p!Mfh2 zh&}ty3KVfCChigl~j|9zWLh)tHF9bs-G5i=f+`Hz}hW`&ryBfU8r`bZLrOW3WJJ1MwNDb{LiSso8U7ZIhikrxrTsQVkrBn9OQ9^rtghW^|1@_U z&>~g}pjS2%$-cG@R*ji(uaz@f>nN53ec{TtywMywqi8zL$Vt$1v*-qTZU)XLeKsyk z<*=fV91{QV=W?S#0cS=DjA1*)I~v_}In z&q~FE(rh&JpUPETu<|rlW-yOXH~`JhmEt)J9T4aOljb1f=q1)&A0gP+)(AoPp4LiX zw;0zQWkY8|2|;d)p~vll3cPv7sLD?ni#Ql8CM2Coq+ZC_A3u&%$B9u$IYM#Z6=LqW zbKRz8^iEJ6LFG#V2cNfpp*DXNq2}@WapEVC;IUVsM9Ng-($iFmnoal6eY*``V8>5oQQ7R zA^PO+h0By*;AuoUIk??6K9hT>D6j~@j&dYW<^)Zab&a|NOG0K)5o|v1xdr4J9GH|R zeor4BWBKcrsRJfjSKr4XIQhgA7&_iKS_$fZ-Av8XHXGJ3JQ-u#_AjD`2vz#AS|SY< zeIk7g+tLMSNVe=Awzj0|0Lvt_tcE?A=9+acxOd~?c<#(YY@03xz>xk3bJfL*4Iom+ z-a?&zftj48Sfo~$xZ}Cms|RkXVKRzln$BPXSH%$l>K?^RVIMqlBc5ig!-fCJOcjX! zN$0`@FBa8Y>EV!Q(g$6#3~m3k-c#Raq5D`$)LW|LHr|Ryx1TbY3eCj)rg)q&5Z&XO zivGv%Ls&X7p>%E#K&+XfXY2U3F_Tz^9c! zagi8YSYc-M&!&rS6xB;rSehpg>M1xFIw#7>5Pvxx=234bjX%cBcK$J74aAKv$F>(} zUMU#%G%Ynw!p(-039CBvbJ`#PQZfoEcf@9aq!q_?NjE#?4Aeo8dCMg}ciCu?m}6+!%-OX++#hNq5!W%NroPly{yb z?KxW>E=Guz>Lhl(QhQG<1&^exGH-5tms{9BJScc4bNY*ioid$WgxlV$ ze?fgT*JaUywM+MCG+>ngfB{xUN@8}=M6><*cpfEc)0ua>hhZPkk_}xi?Pu95|FyCp zLFaa%Di6URe$<=A#0RdnM#EeMd^NrGeWi8x#R;>o5IX!gzRpXW@O%=-p6UWTm(`=8 zvSScOe;pZ9iMhfc9nPzGe`y3ExGTqJ#pngUNsFw z(*oCDxsCXsVajV*mY|n|#DpA=GJEy71GNu$41Y3F(i0RBmqUgm7CXiVWBgYJJRR-3~=8e;snY8Od)Nm1IWqKsj?#V`&c}qUieNSoW z0y1gksY_UafU}fz!7qq-+m+4Ra5&sVOUxBq#sbz19RJnd2l&@tn*DZ*E&YQ>S>ed@ zcS$%Mw~S^GFbILS;thT!0){GWzHw6D!Lqs>R%8?_=j&rUf1Vid5>{=*5`hmZ${#wH zVwt?h9s`u=o}^g<8A-^^h1s0;If>%QSNyN}BYTfk?6YZ5^sH+5=0lUAUFzGv2+qrJ z2SnV=#rxBY4aQcuP#AA#7G(NtPo_}o%J^N6&aj2#BXw4Y7Jt+0jirjIsF>$s1Vh_jrDIlE` zDeCh8MgpyT6hH}>B}(;&rtJVBW+7J>h_A1)W37Ch3Y;847r?plo8=y9<@+Fhp_9%Xz;p6~G>KHpJc$yK%+gm)&2p;7o=GjgA2F*%9U~)uc%N`E z4mJ|j4sNQABTVEpmkb`O zSjb+%?#bX{d~#S}SmsjNp9??>c*E*8Y_WTTg>DC-HM9OWuh&f!popKG$zW#J?+_4( z1-UwTAiN6W-6dyQZ^4cj*UzO8=X>q-i@w)=Cu?7gm_r2F^aP<%oNMsI z`;6qN13L#ZpbH^@&JcWR3Ofc7BL*nGA)@EcSY5U+@J%&9;U*KFKK!KOCWhwINHl0e zwtj)meC{X3oxC|=U>c``!rcxD_QixsggE+HL26lZcs1$`W|_)>f}D^h-JI~Tld(8# z(k4RG1~2OzI35AfBC7l}!@X5g9-3;&O7D3>;Bz*01ZTr5S6<6rk6}!q;l0q|s?}O} z)?Jy#1jtO!;Z7}8XG+H;u{Qo@vwDrAQt^30VT8R$JAafw^Q4a&iPinV z*4vzx8a1_RDVzry#&!Vee1_hQ0#Ux)7+ z9xa6*l^v}Q9{n~v+P!u7?P%lL;nSm~{3CJ7?~FD_`(sDjw+@$%j;=f4M2!AB7^l_Bs-P?jaVOyxpF8OIsC&kf^$`a3Jp0V9p zdGX$tC(6Fe9Mi7Hve0bkGQP@+T0e}$L=hKDHOx_EZl`R+7+M#fj8sCe=FGYDmKb~% zQbc_FyyfOe{Ika)vv|qOeRH%<>mgyoy7@~U3&+|Sos}1x!GS`fvW-mWFRYHjzA5nn zX|h4PV|at_$m`gCAWT>j1|$Tc{+Vn%AYOaSA*EHaB2M@*Xw-WlYSj8>K(c@PgD;Rb zx$;^+Z~qBw|NYE{>=2(@-d^a=s>4IqHj|?J$}iWE)5BS!>PXq)hsN4rSF-omL=&y~ zH>!l_#*{Ia?{L7VH&6^`INH+QLzL%(3rECPb}bDtgIouu{i^wI%)i`yG}`*iYaVs> zPA9>Se>5mwd3K5(UJ_oKMKxX~%+=i6s(CB(%RyblFf6q4VyNJ5ZY)*Ul;7gMWp|{9 zy3F1MifW7fPWz-+>kK1aN31_buZl1yp) znK`zo2wvQ3yysv>c2IgqJ@t#-X1C?{%Qv)=7t({XI>egB|54|QX?S*D@ebbyTZ=u` zfoX+&4^fD=ZCqNp)Q=&K`%@0LBNl)E+SrS5JGhu^lpE1S^Im{mkT9O^X8OPpG>51wy9itxtj+n62Wpg_Zt zv7@N5H~9bCrk}>Quyp`irUP~j%o^{OkE5IKWl`)`SZb5UyDMjv!@H1qS4fatvEq)u z7|;B{H!nK(g_bB@9rmVXyu>?&f;mu8fp&t!Mfs;paYI7I`2%Vb7pu`me60q)$1Vd; zRI5jXIV59-l&^oYS9@tCtfVZ;?DV?Lfw9cD*do?u3|6A}?XsbYXGD#hp0}!tmaaI} zTK`bE*v`gTN%c7$o(yZ2fZ@5r`_tN}LhhT4+3MZHMeHTv>>syNhA}nv+=w7+^dE1? z4f5m(d%i^PyNE-{hu!Cv!~WyEEX}OXui)e1@qme*J9b`wPaoI2o}R8)_f0ZJ>AX{> z-p}y5aN7j+umqE!E)vTq6#9lY#|bm({^c8Dyv9F`TKM<(;i&=PcYPDt|1*2LCb#LBI@o^@_{K?!ePWTt)29A1h(qoYDj zzTLqw!xsK0OyA)AE9IDVSkBDP4qgtzpjPFKoIc)Hg&P!C?F3@|T2i~4Ci*n)o)f-# z_`tud+tB(wK8NP)m8GNj%1S_SIXdY~GvanwW*D9zZ=RujZCNe_k2zKxeI# z7j>R;iq^w@CSf&(LF)h3%EF?E-b^fTG|whh4Y1=?6@>`L+LTMZ6q2MO9!? ze}e^PIbPgjL;9afj5DhGCyG>&SI$P)(9YpW8dazf>Dk^C5~U{E;Gw1MswRJZIT}Aj z4tl3HPb7S`+aMo8@9$C2u)(Y0O5EenyS$25Y>kK)9r$s@@E+5P@0O2ec-}$g2N2>lFY!{Ew?RrUa%kg9#220(SwEv{v)< zfI50WZ`}y=a`d&uT2WP+zQMaI)L?dw)_kJEHw#KxZ&TQM;oBRsJU>ixwi@~-ZZNJ> zK+6!V{~}b#nFVV2AFX`;YA@l@hBnEfcxdW;ZT(a8x*$vz}^=a1BJH2y} zMsMi?Dg}bmmqx`AKAsf;m_SzjHT|rPyOs(`oqhLonBkH-v}0XwmoB6)UN3L*Mc#Ji z7QJZ{|2)d(54+c5u)MO4hT5wqadsv48R#lyIjfGK@$Ws%YTsCh3G1>7(F#1b)r` zeA?dA$MOGqJj*7Rhng42Lo4^DL`#L?aH`0LgG>jl=mmu+i0@bKPN zoWVPP`ZW07@PLvO_X4ch`$8NYp}v=K-~P|H{5PFAeNhDd`ltUS7yn&=|3>Y9AN|n# zzhd}*AN+3={P)3{zQ6zT)0p_*hyUy4|2}+n0Qd0!$LIh1p8q=1zwh}4-t&LBm60wH T*e*OgGVoIg?72J=`@8=KWGp+p literal 0 HcmV?d00001 diff --git a/python/lifts/results/simulation_crane_1_hostler_3.xlsx b/python/lifts/results/simulation_crane_1_hostler_3.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..c6b614562c13d6526cf853adf828e8d18dede03a GIT binary patch literal 53886 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 literal 0 HcmV?d00001 diff --git a/python/lifts/results/simulation_crane_1_hostler_4.xlsx b/python/lifts/results/simulation_crane_1_hostler_4.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..82a7f44e0eca6024070b7df0a556520a5b51619b GIT binary patch literal 53928 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 H_ILjWf>&KT literal 0 HcmV?d00001 diff --git a/python/lifts/results/simulation_crane_1_hostler_5.xlsx b/python/lifts/results/simulation_crane_1_hostler_5.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..0af358a8dcadd78788cbc2af98a364c7e6b13be5 GIT binary patch literal 53888 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

439ZjVv2<1QU%O&&ywb5A~uh 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 XtxOF_z;+Q3kb&P9z@A&7uz&l1spKA? literal 0 HcmV?d00001 diff --git a/python/lifts/results/simulation_crane_1_hostler_7.xlsx b/python/lifts/results/simulation_crane_1_hostler_7.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..4234697de9dab273c6eea81e755b30b608950189 GIT binary patch literal 53937 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

4Jrtk_|U&WZEg`jq;*s6{-K&D*&`-8dk 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 YG%F)r60lta1Z3d*6|m=aXzcI)A7bYWFaQ7m literal 0 HcmV?d00001 diff --git a/python/lifts/results/simulation_crane_1_hostler_8.xlsx b/python/lifts/results/simulation_crane_1_hostler_8.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..b37c09da344b65725542ca301e8ab8efccaf6e79 GIT binary patch literal 53903 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

0o>g%2Fm9T!ig)#g;`#51UHJ4SK7iBfxQq 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

m+r7nai=ds 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 literal 0 HcmV?d00001 diff --git a/python/lifts/results/simulation_crane_2_hostler_3.xlsx b/python/lifts/results/simulation_crane_2_hostler_3.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..081887f3e9cc37041207ae5004d4a2f1284eb782 GIT binary patch literal 53916 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

ec|Ti@%E~iQa*2-I@<^n}gw@6eA7V7$IMI-i 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 ClHni# literal 0 HcmV?d00001 diff --git a/python/lifts/results/simulation_crane_3_hostler_1.xlsx b/python/lifts/results/simulation_crane_3_hostler_1.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..404bbc782947e9dfc70d083c4f280109d7334e29 GIT binary patch literal 53851 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

jFfcxI41a%|-5ck4QE_Dw?O~O3gG1 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 F{|98?dKUly literal 0 HcmV?d00001 diff --git a/python/lifts/results/simulation_crane_3_hostler_2.xlsx b/python/lifts/results/simulation_crane_3_hostler_2.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..53c0589069dbd2b5344056bbabb4ca840ef547ee GIT binary patch literal 53812 zcmZU)byU>h_C2g9N{YY$(%mWD2-4jpCDPI%At6Xecb7wlG)RLW-Hp=S-8u97%;3H6 z{jT>9b-9)t4*S_>?|lxaEcfIo=+UD`NRRj>wRE0~Dj53$f2#m~y##)l*nLoTw6k|& zeQ$5i;$~y55Fvz$@cN}Vw9lcrRO9SQq)2^u8XQ@M=O-6)Ak1+qY z-4Aw-rm%hoV}=!fv!MkUBCanq_&mc>nMNH~BqM)~+`;VF#GGZB-BB<<8yi@H?e~1? z)otQ%CN<9%)r*Xb`=y>Lusz4$QVgtlU83alr$}y8#bPAbUe*WC?QpvDMZTzAfnPk; zP?__k*3_-=!%wOYpqr7*7FP;+?$h;A@91FM6*&*HfKpEAIo&CixPX##e&NR@l%)6a z3xS6S+W|>MKE`U#JNWnzt8%&=2DFRtsWjThQz$xjN9)y0^Blgoh|Z;EA3nTB*;N!YC)G?S z*B>5U%LsF%Y@EN)_PS7#vZb6Z{8dFU9Vba8k=euCu!hN7BZJP4ErOIDm}I3)gph;$ zIsqJbRo(Ria|zq4wgstYG5p(Qv0aLg7Fb(m#{cT2B*99W(}vTi_3iUq$`WxwDb&a|yj#Xpc>HOe|6*lVG8;o`tnu>mb8Dqc${M(_>D9l!p zKwjCD{VWIVr}r5Kzh&CC{QAxA>%0ReIjor?E~O^$WY;ig@;wp|8x7G@g07Bt+f z9z^AMTk9yd^E0lchK5)6tYW}kk)$6@z+5nf_^0c4Vy@c@{ZDI@xom2QZ|exeTAtW6 zq|fp5W+X+|ql~LY+5NuW?sOwq;rsiv-YZGVX7kVJ=Fnay2>j`62mZyA} z#FqVLqMqUEXw2$to@tG38NDmM4TUOSyJZr#d2!!@X+@g`@vz3blkyfTp=un(VTevi zPbM0sA}%VH^oKaSJlU*Me6^NMMwt!`-c|{YpIC{nnpQWu9Te5-us;37Kwz(L z0@Ctn?wy#Aoh1+`9MZE%|qhvVBn>eQ#DGc>3H zvn%R@jRY+;MsmMBY}1)(p|b`PLe+RelBe0pOC(i6PN^Ps?Gitr+EXOg?2CN%v-}HB z3^uTt-sX6>d4+_0!7MgzX(&^=rcM*6{(S69mU=fen{zS0gyuO>teb1Xh$$lX+>?FAg*?fADt{r zO`V-s;eWtgB(2$IoUzx2`bvxFrX}*^-c(GpV~ik1<3~tRQtd@s{tLPJ8O{ET z>&vfdTGpBf$n($Rtm{koF|bUC%_x*8d>8LFBSr3S4I%seiJ8!4pZo1dk-K$LpL07A z=-nptWY-Y7ehIx;S6aMZU+ot0x%SPt>jyq!yD@VcdcSSxbDt;zJzH-SA@VuP7lH8e zYI)!1AGSc3wOa27j~DN2Grez9Nuf8Vq^;29exKWIQpm|P{KFxa>;0rYcf&q+@zBZB z)~mxs=x*zM7<6SC_{hxG+i6zlYX2~FI1@UnbOyb@!DIBff+!h!U-e&#K#nj(ysi^{ z?k1u8(EbdMZbPCd=;bXd^g3}|1o}j{A9{D(?b8jdx?3joSzj7U6!E^kA1*&8zR!eS zohTVXuB4JEq#)2%o%>1FuPYeC(7S4HAz>k}6zKK5Vawfkq|Y6+1^Rm!dJ)-b)p`>o z;(48T2)XIbgx*F%-JvJ7N^w38N3M(ack^~Wr{j^(YYdU)SjYuWYqto|2U0^sa4Yoj z;yCo`n%3h+2>tTZ&Ih`RAu?Wjy`Jv_fnc;=pAWCSfZQ5FA$C4q*L#N0yH@C(>B%MZ z>=Fvu%-kx2UN>fX-#|oKZdccaeJ)Expu30A`@_3ypZmZ|5wFYNi9V2B44=E>#=qvR zko#6hEh+Tmlyo~5dVRYH1qusZ-_C9VpGxHZYLgVYZbeMF#dViAKsx@yY zayo4YnZ6WJf?OOYvl?8_)DA0eU>HK~=9Q|VFNd)%hJla0W%aoR5Wm|Mfy#^AjZTzp zYn}Bg(chh@p#*8j3qgYZw2w`5lpg|8gmT0Uviq z!pEY~POOt}UfOAYn3nGMB<{Y|`!5lmzF$(h3lKRz%lAE|ow>#q=_DOIiW7-G?hcAF zR;u8-`5q<`-5McFW~je?=R-5sn~-nf%#J)%vACLPoMy^a-rC>?xE+oAprgS_rla`$ux-zZjdv#PN| zKy%bATB_dh-`b9H*U;anJVe=6ZaCUEfAN&CnT}i7pXtEb_9APO%EMn64gHF-Y5Cbm z84@6RebycPnr;?9PNb6z=v*|JqX2JFY>R86ePiGw?vH}zF)JyNzuOa+J4qewUOA*d+f00~NanjgWSYYGVaLwuKx}vcTLQ^;7T4Y(!Z$`cS=36p|5sCqzeHks1yz#M#^XerC;&zFpKEFNuH?-w$9~><9RW$u= z(KdZ>(&&W>p~9Phc7mDE*9(SHN7EYq7k2@lx?i74dpuLjm?A`RXZ#%O8ap1!mY!zi z5pOi3xH)54G8B)9hY?GfirkD5@iJ2uOj;x`*CRyd$&Y*nx#J_EjiWJz2#H+}W6E*} z(Z-qkx0@A@-#V}y5B9q}B@LC`rQh7317V~obJ*u`#nM#ve5Hhc20!34EO~6hO* z$q|zGwx&4~<`wg|YUT`ye!-(ybt7GnD8K(49EUmyLC>A>Q7qC_7)I{w+*x>=Yoind zp){jofzYIs(&wSn=TaeYJ>ki+LNYe1OHDJ#*)B>kK;#ujA<+8>ayjL@dVlhP1MDgi zG8LewSVL+%QG~gZ`|ehhZ@sU^=WWA9=6I>bxRY48)q!tX!zpVsOLIxgWlT3bI0?Hi$2fJQkn$t2m&;pp zuz}c5(j0Xb(_5ZuYbf9AcU(fW>MQ;X;oN4_YEL_r#s#&4u=lgSn+b$GccT)1GQNAk zeB1Z?qOo^VBE^<<-1jv2>oy@}qL*C&DW0&rEr85{luBbxNYvp`JN3GDN2|Jx$X1cw z^o1SLEX1krrT|u_=#4f;^UOHSeb={ zyhfn+C3$SS-;fXpHIk`nox;|9B!O!$XGxHK-DnC0`*mW^{`124{y7MG`mB%Q77TTb zS776w>Qt6xZ5&>3oo5&(A9sQ7OyZUxiYYUKYvx%JuU76n1g&o}@#A&S7%3~5gf4 zr#>YOrI{dTl`5m&A=UV;=+8$YG4-i>2L9`Nh6$Z#RKGg&!xE**v%YmJpwuBZ->N)e zewQ`(@bRZR;Jid)iJm;f`q@^&tJ@G1CHFR?Pw(Z3?xn%?C{u&diClVpg z#P2vCk5|7L%}>0Rrpd>9pR%Dgc*f8ckabLA&p;a^3uog2AuXum=y&)GAUwIjwkOjkrc@vEYH-Jexc2WG&3!a!5%9jRM?yqumN~42#I8ToF!u7a>h7+8_ zl&FcfW6lg@@wQ{cY)hGWJVH5z?4$R&pWvljTObUi=c6X28TfA#!SKdAsT=ivBJ#A0 z7CxjwDwM1vnT}UGU6$?m$me4{zjZLt^(ZmyEY_Bt2`Z z7l!lFvNX25xsI7QqhvAli@h5V6aHG}OaV5r8tHMi*Hm~YIDBA#?s-Ssma`RsMd!JV zr6~b-{kj~>|CSCrdm@D?7{KZoY7U#v%U_%)B%gD>J+`eY8dPQt7ewow|G#~gM!TY5 zS`Le2Yi#I1r^#w8+ub`TGt4RG@|MD?uX^b-dbcH#hE%wkQS8CY{DUSv+v|tx@Y%m) zvs&X)PtiEl;z@I4A~GOw=lz%^h`EWiFw*mTlhbkXEKNDve^1yVdo9}Q@cXX47_tMw z-)3h1lyMY1bTgxN#FSBl)-Zb>zGkFxzQR1M$ANvLmOQUg?Qb6HN4)}Xo!3An(f3EF zo77M2r^MZV4pKLPV}gbY*NV3J!0eQu4ta}bLR^sB=4XY9S~Epg3sx(s#j|L0O_AX7 z-OW@%xGcuPWHAE$eV|1r&PY&ik;?}8Y$EA?zv!}+7W3OTpJwPmJ|6GH98qd-{_ z;ry85yiI?GFlF-9dCr;IT&e^?a^CKR58qlg$iAN7^9pFuiDAF4m!V2bNHufE`Gdt_ zQ~K?*Oq$?>u#iYb69tJQrz@E%v*is}W=$4M zlTd-YYxUtqn52 zc19tO9m@#}5@{iK{1xp1lOTNjN%$$%gBNPbY~2Esk8@+Ys~GwgZ>U?qvE9Sl05I1j z_T5Mt_7)yg7(IF?bX1!pScp`;THS|F05+~6@D7s0oa@($#adk-L+%%bU|-LS{Nwn_+YXK^_1L*504e;SokPU5o-G^ zPnO@W*r3>+k+i+>J~DRnh|Vj9iTO@+JoYvvzjw{<0~Mn&Ntw?!EcS)wkV1ao8}hpo zsjHO6cJnx&T=AvDVOjFe(tigwY%CKyYm{W+OVm~czYIZe_l{lWMx4es?o{^QE(IJq$!y6$>^te>;a-oV zIY3;zs5+$jtHoUR3ibCiWG2IaH+_*sm)N^X$nJiZCSRJ8aT?se_VQUIPo}`Ic8esK zSIgw>wZAnZtdeZ^7**D zEw;lnWOpYLS78BQF#%wKvjv0~oxY2lxb0=#M9`t}C0M#g_RR$)o}{fB8{(lajfXem z68u3iFX@5md5d!STrusAkoAArg&o0;HJ`GUg{)Sed_s;U@+(uH>B&`~Jc$TxENnzq z*x9*BYU(G-yEpx@QaBLx&T7;}RM7K`()6xV+?YJ!(o(H)(^;Jaep)9_0ly-cROHS3VF}!Q4k63rMX4Nl5Hl2xW z^{i{MY9$>F3{+v$hbxPwife?XQTL(lf4W}DZj|?zHJnG9iMhn;TO|v11Piv1$8`f7 zgvpk8F4m&OxJtvca)-9L>XI?@o^$Je?5V$-t;gPm=Jn(Swi?LCm! zwtobj=yy;zlSkzbBf}&-Gslz2kCC|6QsSHhS(06aDYy1l@dhAMSj38duW(`;Vft-* zY?`t;DZ{2<#!1VmzPoV~3-_M!f~d=kce!jk_HP>n;uST14|~ulxi#guq6GO=I@Xmq z^G-(+7PXLf&?WD7Pt(7e+;2D)oNG{Mo1A=^O_%Ecuv&Utf~#5fNM)LlGblL(yH8Ve zPE*X&s3YiPe>VzVDT30SLUB4eLUA#8F!an_W$#_XbQ2FGIHw#qQZ>JG_YVr*{V8Gdl>kzcN6 zNTUyL5_Mt6yY9N@MjRJ+(7OUH$H_3`<$1vpk$f9oX9#AHr13RJ;X2J(hGdQ4HNm^# zW{D8qEXOx#23GF;AF~C=nsaz2PTE#@EKSD-k}b0|r1paYvuO<64*C6#1NEp?!5yZB zg5$O*FF+DR=2mH%G=q96Lq*#fegfhUU3S;&_b0|cCgNn+pnFgHG4gTEeAdsWEud3p zO&Ry05uo=ZSnmw6wnOr+H+`r9QMm&svXMqjq#@(<(o%VtnSX56>;(@p-3;C=1F{vJ zcRS9hv;Z3Uf=N*#)@pxaiX`0u$-#4oa`ZVg~yx)qFGI@t;?mSY{eLYSmI+ZPz ztVZzFoIK2kEqC;3G%*VIv3mI|NN;EKCJ+@DzLXNL^mAfNQ`dQ<=vB$doN0eff+x~Q zevb=K`xtJQ)LDzl3$qhBsbTZKoKD0-t>Em3_e}xbH`@*4-rF%Yz*}-pE9*?RHAK8= zrwueGgxFW`qC>|NYdm24B_K9WdCoA!PNQj3C{rGaTk$LWSaTXgo{y=XS-;NB+pKcy z`x*=MuK@HPt3jiXo-8TEK9f=%XO9`2NfEj9m7Ys8(SeDvs7k&KU5Ly6I(ob>rx10V zya;d&8t!_JYHXb21~@aFjH=t8eN71PZ*sD!^a$R$W&)eB6m9Z|pTl_*GnKp@q03pH zO{-(GBDRGD=>w&7r2a0=2+~wLs<>v&+FXIBmu&SkV_;i1Ia&hM;*LJ=f&}BLEUQ} znOi0HK<*DGn=abck}Nyf$|F0$$y@S|7*&~yXNM_|KClb0F$-4kOn=>*zj(-`B#0ND zYgs{aDy`Ivx)$EZd)G|4Cra+Uc1U}FDawnV3|MmY4by2!LbsJU7(%N925PLfzV{rx z$g;k+39%{I4c~a1ra|MSpA;bq=$id8FWQgztj`89GY`P1|DpdOIGv@P_5>P$Fxk+^44)_ChfEkU$b+AcZBy&q@0@7V`7|LgvztnTlVI&f&II7K{ z3&#XiRINY#geadY==OFVIjOoUGUyTsBDO?qFl3l()aeqdTvKP0X>TmeqNS;fFkJS; zRzA2OknbKVwiqwJh)C*5d;{Nm6IF~^tDof)I4Ix|Z-R82sbJ;n6P)Pnr1v^0Dq!!5 z^QvUz^Kdq|8uqfsvN4zTq-S<`!{$1QEeBh($8?0%DDbWU`Y9}c3V*>yjNp5Iv(k}p z`~VKt9}^AbJS+(Y3v~5QzU#T=iB&Oua)$YlN1(ng!tDmV z7+qG^5s1iAH@i3Lqs0Fgt7)B8`9p-MRH`3nW2*jV^ktQCY2+r-C#p#~LsoO*_{;+R zKEfN1imhE3Hq?>~1;Q2%Vxo0)`0D=Z=?-JI}t+@bfdpyOvk1JEK|H; zyUZrY@hDh0U%HwdzK7wTpF29wwKtc<6@SXFZaO=6oKm@Nj+AqMYsiZ01!vBHg~ljn zoF+FZvEgK?g!E(pw-2A{8_J^JiWOW~$WFG#MeM!1?an7Ki;9lcu=o8L{1Fqr5wK=A zDYky~_o90mm{++&U6xoC)|cu6^nT(|(F5yU6Q_%TGbvvIs{!L!&U~68ZYPjvb?RH- zoy&sRk~e2n9;=%FE{(f>QeLnWY>AX$L3xpz9)%0v!we+dn>}t4cVCaAGHYZ{${E0* zLFG$432ZW8I%$9jjh;dN65+lsy<+cOttYcsQ63xqV{{_S>J;D5e7k4}#xM#OY;UKB zDKJYoLdwJlmehbIjn};Yf}ClUhJsLHST&?HeI_ok#bAh^p^VLu-fnBRGph_nn$Gic z#ZVd4nlWLSKux_O#kybXlw+4vC1y+C29C+(kpDw>>Q}k`{QHJ)S7kdM_6^gC>5p`; zm&NYDRgC9`eGhLs+zT|`V!(6*Z#?^EPedglOCuRRq;*C^sbKd`s}ov z*IR=!TzBA2`-(<6EBbg+;y4tBn@^qYKjO%`oRHM4Vk^qwm*g3tlraQ|-i>svol-En z4xTWSS0}Q9hKSHp>Rwnm!tOEreY*ucakA~vZ^2Wq$w>~~(a1;f z3znbbYH-S1*3LZuJ~B8K+V$*CQovycX7#%!jV{6myg`Ce4e812KW^krcp8CuMnpf( z4z9@O;MTX=6$x11(w;Kg;OH)BpG*OEMmCW0Y98yNJNN6Fk;YcBI3EL$ky;nY0FW^( z`^WYkivT;prMYoD?8}bDlZZt88-Y8rzvbLFRe2!sjSAW9 zzOzf#s&JGw;I1*xteHa_l!HIead~nJQ`JAf!4wubR=-o-kcECpfs16s4gXLV!HFe@ zLb)g5DI|%9ZU!E((!C0E&l!xoV|Y#_?cHFex70=+X9HVw?>wvd-= zh5jmi!IqCRovGqfwDK~C*4t^F;TLk}V6<7lQ(DDh`noZcwHWmhd6Y)BboiRBXh>kQ zODVx4IQ$ToT-5&%ej2VJPYqg8qyA~d8qk~$q=F0wOCS{t!cu{}4jy-9o;FzFMLFL)ex{`1$LUB z<)H-l-CA?}gR{cI7|U7iwQL*NJw~ge75p;0fnOpk$~YOgkVu>RA!kzVgPl2ZjYD{I zGq{2$vT?hi}l`HaRJ`jgzKBCUzZRk4CCtt8y4Xwj#V-!jE%U{?k z2Q-Oz?_YhKSwwS6)IuJr*3C*+iwX#Wo6>@0K(mW;jXk1NnM8Q;L)V_kt^eEg4Ttc@ zJX3TXaGE-To_+W1xVLN$(|n#$q@URtsh%DijES6=76288s*QP^f34@DlF;w~-yN_^ zuIi)Z6m#Y5)ueU-H$T1jgsXb(?`a9-(?NJX)#+R}_c#ZA;-u<0Dqm%26XxpJsYiK# z%Z-R#MaS;qh;4!O2Vf=ekfkrWA9Lbh$T<0A$IBQ2w-auZJz@!Ff_pTgkPf;Z9^1S7 zKeA7FoGbym8-&}PPUqxi$k==IbRCK1?On7v!Dhv2gyFMBg|^q?Om759VQ#@x`(4L? z`lsYsdMJHpSM$St10x~_qsNmjbsKx=Y1~@#h3fRIj>P)kiNuS*24U@-zgQZWR)>Wu zaore;KKU=$XmNNHKE4g5v(Q*)-oTu*Z<>x4N~8Y+auLg4^31UoSdck_3xPww`fDH& zhVB90hqy^=+v+)XWBn7bEG{=e8dfIx%GXbn+wHCQA*mC39^zAL=3GG7o`4^u=EUmhD zoF&+6{EVv~`~~Wt$PRm!9}nDA9$cF~={P+LzvHFeGcNd~l1`pa5E3B8lYEo`n)fN( zz5kK*skHPGULLp>s7?oL>mm#aMr+2lM_!gvUfIbb6PFlwGF*)6!k^V$AiV3_%Qwn9YpzSl=Am4zxr zkT2)6vg73~$@>;XDsaLCQhHniHmBKd&=6-oY}Cj;u=3Ei0;K{6aW5jln0c_Mb?w|c zLFHO=XKXQQ8aNb~#LF1q<&8RxOWcKpY+;D_9die(m$)uEtxu-fsj;OES)~8gF^!qd z-M(NS_>G1Ip|mU+FL+e%*cu&p); zr`R6+UQe^AD0(3PQY@x2$d9b^m+L3Av*qYio!ig{Rd&t;+>|HP2-*NV|{AL|oUW7eGDx#Cl%N=dA&3k5{L0_u^E@X?HP_`h1w= zwihJ6xSAgFiXLS8Qf9 zgD}#b!iRVW`(|VVH6Uhf%_h2Z?_`Bfo|wV6n@bggVT*$eHKlo+b6s(tZJ__06BAhf zhOqvDFbmYL4(YKi+=}m-4r2U0hU&P5sixYi(zC0^)_fl3SWKbIv%Nd!tf^3jFh`66 zaW?#nSxfPtW{e+j6j`vjU%WI2X##@djjLM!#%&uAocRaA0XA0EzSpY_I3c+Xx(+1` zDs*45yh=hEHUZn7(wyVn2;GInG5D#Vt+_MGDL*-UvEX0k;E`lZSskSyj<;&!)_JJz z9s>cM7Wl~&xUXuMSBo{iK2&wdrNz_%ss}`1X>j?o=+4Tw<+jJb+%*E3R}&QH~j3ED1OBtz0*FE^?5m?Zjns4PMnL)57-rwsf)%5!X0tC z1H5&U!8ClUAx#DQ!=p&n2>vXQ){NeCyi(?zpQXxJyI4|J`#apU!ppGcEm0-0pLLq( z&k5DkSN>hP-9ojxGgm*#EzI=8*xx{Jj==66YG6plX8Qcrfi&DZ)s$v19iKKq!?|y( zP&2WkmqUtj#6gOd$GIDeD%ICXls1;hpDA@QlvA-$Xz+?(l$6?9kOAv>A3PX4_-s*1 z>)VId7h$(+_lNQymOIMX*up*@4sS{Z>P)zLAqBkmeT^1GGD;gMNZrc@HdTA65UZBM z=Wl4%I5=8OYgK|csyDrHMG?NL7-j64{+)h-Ty~`hjI?W0YR!Eme1i~?yM}P%MS_1w z(7zIF>R^OFy^=W`&Qw)!eDe~epW=g#6!xdZNDoHG8qmxq8P3V>ohrPsZ6bxA+mjv! z%)7Qup3z;604&(f$DQEvf{%KwZh!RtS|53xA>Kc-qD%;g`KaC~uWapUtV5vPm3zJE zMA^@@(j@HP&dxIY_9N}@9tKeDcRqrqUS47b&dcBrnS2ddnM8e+$O*|*9+qho1TaX< zXWX*HiM$eHOljg5089+o5=U!eEQNTfG^lGQ8iC>@+Fdm_@Zwg@K=DeI!3$C;aI*Rc zN4z1@s*(8Yd<{yvY6kPrD5p%;>9?&`lhe=9U0`K~u4!Zf)Q{b@bQePysf?-UEs-rR zdl`mD5NX5u?-cwP|Ze{33oznhhX9-wUryQ5Z zwOYbFvx#64B5}o8S2t5VqV1}(f&otPruGci)bIOXJnS(IznNCkADqRLo;y`@x*zTY zo4Od`Yn{L$x44Eu&hP>M=1T{zQ)vV#SP#Huy8vyG9YqW&VQ{2COo20siUauudse5a z+0p*)jo_DAxk(pD3<;v>tkwqn|)O*r>8)!Xn9=BXT@INNJ4$}I^R%|T6%)#O(i!&tWOthB3Q9kCAeA~Ikh(;ip|Lfa@b>6?7kjm zvl{7G#v=rOk({*JI#fz&b$!zBzje5XdEYE^rWKS_WzDI`Bv(%nkAm)4ALg@eag@g& ziI7K!+o{7XWloh8T%_j;pHY?YG9m@0(?4UQ;!{{6r=R~rM@BPOOl0S?Tj4`o{C>r( zR#I^vR&gI_#MYrgRx3Zi$6@Wj5B+*6N}_2y`g}JphgFt;X|XckFK%q9zm;JLz3J!f zP7FRSB{1Ym(Z)?J%gv4oE7-I72aU4=c=AcBYD!P#6#u|&?9t)#<;>^cL>MFG+hOG^ ze`#yVf*1J?1gH$6m-pt7e<&+u{Z^l2-j6zMHL2y_4CXh7I& z32bzW^bm^iZdiFz-vl#&^lGlbkVo#c#-Wyu55y^FTJ7pq!RNG4z_ffVRACL2$8vOs zF(>D?7+}t7gNWBI=qmqDTAho>x(FTPvuQ9oa>8GKAG14c1g_QH zr}|Y&r8qN+r>EgT|E7wf&%Yx(=H*}~XR{TP05a73CFI(7|DpdQSpQ+D&}NSrwlUWJ zco}WYtA0PSH>W{PSuE2w5w>9PPGW(eos(zst6>=Q2f4Qq)FHKdo__>kLgu`_^=ri| zU#DfAfJ3v6BxkU*d6u%(AFS`pRX;cy z?B}%Q5c7e1-jD!ZThe1sC>XentF=J^VcgSl}ZY{XjJnonM zh-pK!6>6PAMyOcn^UB1h^p9S~uniL`&0j-e$_kE*59uZdZ1#w-B;DI(y4YQm16Q|k- zbP54@AKrBf{;sH}$gVUM zt=3s8XYtt>%in3YzMb9oBwGivfcWBf)=Q{k{}T%Ku}i;Y<;kt7j{j#|w`?^lQGmtDZ2IfOyuC8pFBlEKlm)$^b7Mmm=u(ggdn_zCW$<(!)!(eus0bQT~NBqXc* zxF7|X>Ls&+5=8aR=@q8r$TPA*)RhE9Ta;d@*}aFdpo{@i?n%Q}mx^31iX+zr@5WTx zbt(t)ZeXNAooN{%B2r13B!92|;jhd&#@C(U`BuS9LLD>J`$=+8LNEdUU-P|j*|eP7 z=j0i9L|7w3FKCnfOtGCEdPS4)n$N8xSjXxvVWTu8bP>3q>6v|0?ha2%DAEZ|-J%R3 zpLi9b&}m0S(6U6zNIV`0c>^OPcCK}lKuGh8PBX_g&!_0$4vj(W z*6J$BV~jR-a0WI#eKpvwTSn$nh_J2Aio8_$0L?Axs&El369}b_Hq}q{>Y0t-D*$PR zdZmN+`i~wu*VB>>ntOjmCPHVQ7Jq>4z;kZHpHqCs^S9|@6usgmwQCtsxHeMmrkq@l zE+$jzclx7mkh(G!n7-#8{~$1=wYW=p)1Q)i1pI$PxUm}Rlx*E9+`hc2w`zW6u>dIK zONe_-Doo!^X_f(ff1f-u3>LffxND&5&+#T3ko;DXzOk9e)Amv#`FyA@;BCmdw%gL5IROu>0Z|BI?;FjC^9|Hx$PFc+?28efFbP7f~ibW zEE9@o)3PkGaoR7fm|dcILGEOY4FK{anr+graV84Dd%Asty{9d5jXyR6ez3Do>_b%Q zz|hOcl4gHy2>kppK$gqMuLq<72c(Om_s_FIGM*zl^KWhNV--P6RojquH+kv?<&QEF zJFh5jEYi{)FV7gABl1%g@+{KCa@8eNsu~B6B?yLPV5IB;i5p^ZVgVnB45hgm^1S|r zgS?#Fasp~9`p^-3Li&6?(;Nz)CRCb)zi~eAiG)PO#1UjSoQ~tck%8Tu61$V|r zHW7gr(n= zdq9LubT}&p^6pSq>q*FQ%@7w(4*Eu(+l>^_j52;?m--Z98;uafAeIlb4JdFCpfM~Y zCGjec%lqmE)?lVRkQn*x7n*xzM2mMx4W^KAg|#vyTN$z{&<8a-n`Nq^hqk)~&%3Cf zidoQTCp@(q`SLoSsR+8TVYKo=)PY5YJ@tq+Tx;@*VYHwjY1HJWhVZcvT)Y50-rz%` z%JGBWB4APemAQ)idNh3M%L>eYj45`nb$ctD!6+_!+^dv2N^jFG$_8@bz$l_l#}(j5 z>sc%y#1a~VaIEu9H}O_iB9cuX~*ac%?BujIq=`zgjigA&m99xiE|~{G3pNCwvh$c20^<0HY(bS zpdR7YoZ~4Wo^4BZbIs*Hi3jL;~UK)!GXY-#l)DvF`s2Y56;xH6;JT7Qc9pz=RNN@0b zsDGWY3mc?|G^36Cs-NPf$L$7;=V0KxZecw!;>p{gjxzniR*mxn5$q^eF|c;U{yIYg zNO|+I{Vm|0WF{I@m`DQnNR@8+)U2*|74%el=5MC|1xSeP+ydD%ar zRyE>{M^7;$`#m7ZeCKg<~mGER1PYUcgF%fW!QrVv&s zLL3^2fIc5T5n`<}@?`D6N8h;(3(ko?5Ee4|Zx}EO>Z`@#JU5XU_I!207lrU3X5R9q zAOaDOiLSwB=UA1W9%`u!xo(5!Q});sSorNr2b;2TMT!)8{O0Pc@bc7Q+Ni5s4k_!-Hrzb=gw$?($<# zGM}xBAg_xwXW!BOtM8aFdck@YmX%%^E{=uZ;e<(yZ{b5bD?KnmpA*-Ns>;Fv<77{# za#$HQXJ>S2eT;EbVxIymh5<@O2ZCfDtL6oB71>aY$=oP?JsTcYet6iNhbVKCpUHjj zh?>Z?M<`EugwU!&_30+fIbQyjx~0&NuM{>s6GR*|hX58O`83h%sHCUL5$;eNz`~85 znm}ncVeZl?COf?U4`eo6?gWV6yY`tqqo*@%}kwR{#7 zpCEit!0b&Md+Hf$*tlaMY-UsFQ^JJ#7hG1}pPIl(i4x6}MaomjZlzLeya_-9*b=l3 zkYVl^Qy4a{Y5!WJNpBGD#43{!`!T&ssQd5(VhLAsnq8~66fRn?)qV1uYvUgKCrS~lYtp%cfzaj*%c+fuUYsjT>eTL zhpT-I)@$)NWXX6m%=p34^eG057MMdD62P|ufq-=KF?NYY zOU#6S*!bzmo-8YCq<9w!X2wAU>7aLKSO3#`!mIvo22xJnbopC1+<|k!vq^*~IlUZR zZmC*jhj&s@12lJXvkFzf54r4%TA1cG6F2MC8_d8KVnF3Vy3fk>!G@p42v^o(4>AFj z?;nQEYqxv@EJ;=j@M@wcAZ=Z|jA`0W4e*S}5g?`Ozzm&G5WSQyK3)q<>xD&vVjvP6 zSlG=(cWRqnTKprV1x>acBL2Q`mQx(C7r<*Pbv$SRymn=~wx+}A50AOQjdxwJBMP;| z8rw$C$0XnoF{cMcDh>Ha4aXd~L{K-3x4bGTlfxCsdsu~mECY(+^IWX^qc!og%M-X- z0So2lu>URJr#(f{TOZpAG-`F76Y1rTReGPuTn>Ld z7(T`SUxn9u=?aR$>}JdEooYdtFTd?--lNm41nwv7``9)u>#(dIaC~6cl^a1mlG|}p zqgLN^@bN$HAu(v~53y*CtEvBy<_~2@f(p{Z=<-45H8OPPrBeb<={Gh1B}PTIY+m~o zS?7=S6Df{;@p7rP^bHijMU!-8w<$!1ImaY$Z^GiQR{h0n@Ne4#avt#gn1UJ==c!6v zzlyXtC_5cgf)2V)yxyAhz;rz10HWcT#Q=jY?+#MRPxuvpI*uC-TL*j1$-)rarT!1x|N^$pvqM%?Y8*;P!cgtl5k{L4_Pp{^| zQMzwowu3~D|ENsH3D*dAfVLLw^StBi*Wabj5}|XOaeClV0U>#SS2_<^nzm$} z48jY-m@!`ea}M&DQKrCzqf-BkNyJmC`$W;3&DzQbd3i97EE0@PhT!&mby|+(mm>l( z_mO?HCl_OA#CjKXUbGw#1#i|l-V|^FEGvl(uMm#$xanT~3zB#gI=`uiRKFb)WwFJi z|NmdqBsPYxJNG0iN1Nu?SsoU%aymEK36fKwWGv0J{^sS_0e35&EfJL(?A#`Yh#yuX z;Ozo=54#q+ZlF5v$f~i~){Wq*Q3K%}2Fh+UEJXeX6meByh8FG+Pzv3?YrKW}(>_d{ zjv>@#pAeReb`1KZ1>lG}$Eyto1y`)6x@*jX(iAQA$jFlO~A$1U@?C*+<9`Q|l_%X!A`{CFK-Vuyqf6RRfli z`ZAoIPtHpF(DVL9RHMzEPw) z75Xm}(^G)u{y(O!G9aq8>k85(-60*)JqQxg-3Stj2t!JDNhsYR4MRx?N=Sor#}Fco zv`B}9fZsWT-tYZ+ulJtkJUiD~d!NxhW{>3Qw-F7zTWSEjI`eGrSKh<*p4fCcgnDgN zv8-Dz&DHtxD{Qf|oOPiMuTgR-7od3dOl6?PX|7%cKj&LOnJvuQYwl}nRv*JH*={M? zIv;FQgGV#C7)4*G^#gK`+-#5BSi`Oxaz(v5?Wgv5<+OfqjsjFhn&MPQ;$!yApB?-$ zS-OA3-rwlGzd5CuYD-5*CNHuBu8}B)Y1N7??m=G5OPbVJ!z4rva$f1U$_8u_c2T;4 zt&}XxSR&`7_9YMoUsk!jHtoy?fEM> zr9oj=gJrU-n*Gdz*~k1uJ`s3@_us5qq1^gzk4`+s=B@s}$6{|huDUPW< zIfjz+f0)oO_q;C7$TS-n`(7Wbvh*J3+P<_+&=f?#`Qqe9-iMOFElPk}fMmG%TgbI< z7`<2WOV+72yi&<~(ug`hLNsVs+QzHy8?I<81uKslhABA$OLqs=Rt3 zeQSCkQ3*}(@>p`uX#RNJN`%0J6)CVhOn>;hKRqMz-H$Zl@h;U@j3_V3S^&vM~L7<=pCx_t;%exoLxulwB7I<*%teRV`omzlIcrHxRzTms*v5Fae0lR2F|&EdKn8 z*^wl_79O;#YU5qB{Y89E7KSAA%L*zx#_qE=!j$K~umMf)+9I0+MsLo5o?HoH>9TvG zQu%>R{m6g*<9NK+ut9TsF56E55BqQIg_uYPNyz*1@!|$ zk1|K7e#cPg@Eo-X^s9?tqGHO7MSwLz=&5L(_*L|5akb2>Tuhab{0aFNNo+ewiDHrOWW}J5Wn3(J!VNw?u(q@03yD}RuineA5i4~ps_YRPya{0e7i_OgRV>~KbzP94GFhVavJG>@o4m? za#5^L)YlJ4yd)|xFPbL?W^E(iBi(<(0!LlX5UbD%v%>*xqfVs?f}^@jC>2fcXjMaM zKR66d;}KPjJ`D@f8QmT(1e)m_&`dXI{->E%jXcrM>qC3{NJPB$66mH4FC_Tunl`ca z>|d?T4`yu0I&Xa<<}W9T5YOeH$K9{XcpPqcdNo z$4c0re<0=wY3|E0o?29)%YD}MwtE8sWCH;K3K#n<2w0kC#c50Oqeyh3!nd`-SZig^vF0*ngp-Lr*2p-MH%3UuqlO7xpDMM(mtTd~&|0CuJi>hnVk*o+RAG&%z4 zLIV6vz5_1~OvTO-Q?bxL>PRx`wJgNFL`+1N7g_}^sO1l3xHDi>_MAqKM9BOSKzg@o z2ujH-L^_r}p{H_LYY8g%yi6UZ^ULHN7o8L<3`vCe9G5KG!!#&R((>|Nj>!q=_ z2aq9qZ`WXq*Sy_s3j)SgKX3(Ni1}4Ph-3nm_0U-)2t~=!(s<`aKdAVU%)0xy#;R1T z8o=aVBFrL5mWyZ^x0Kf+JRV2s<#)v^%qxtG0XVw-mcf%3vg^pwRTPxT_cPg+TjlQy>O) za!8GjiS_6~1$DF#$GS`+l6{oLL?L_QSD98HFNu*gpgoHegA)kiDJB^)Vi+mN#}GY~ zZGmyA*uaiI(Y#Zy(kz8tUr6Hf8_W5O7j=~lc3I~3g$u73l=nUdvO zm;M4>s!!2R_{gzrF`v5r*^H{hXoY#!ikkW>7uSA86Wivh5d^ZRJBW00DwGYvR(sLX ztB761l%{qHwmj_JH=3G4sLtZsn`_qvmuCR_B2&M$Is)2RM8|U)WSabn>U`SHSCYl5 z`m!r);2sPReJAaWo?eXnb^y0Qp88Ud^{x@BRi6ALnd|3k_?xAQ`5{LpM1*mZw4v8b zz_U*_kwIjq$e##K3FFEI65wdji~910EWoofJuVNm4k${?TlnSB-y1F-pX4?T@5)gY zmuLw9v4|p%BAdB3{Dk(ebeF4wc`fW+;76Lkzd?){VDpD`R^b_sgr3Q405swVvD@w0KfB=fb~q)9OLdKPJ()eo5hX>Baq9j9PTV6`D(?Xk_XjsEdg%m> zDr_R`iYy_=ft^koM2ef%taXq^rlWMvp{XZ`T@Y~Gqb4mWhr*SbeOIIFpDwkX7YRMy z(s{TUz@Jh`G&uf+pZh`*9B{^8odN?+C!x$%pSLlETj;|=IN=U)>DmJjv20iWjC`F~ zdiWh@ZUO6?zv+(zM|->IxQc!Kk2Sh>e!~f_i4qlr>XX z+~55Tm*tvAZ`bY$?z-eW>8WxyH>7ydBlicf^#p4}tW>>4PvQ|DC+J=m#ViVBfJw0k z+c>vp<{?$kA1OmUz$LRq#OT!8%|4B^R5)Wm71oB^DqxnoOB`_tXeib$`GnddLkdk8CYJTmgx>$|;sPUCL}Y`_pdMxBnkU?)Mvl=RU5pN1(t zVW5mxNS5`=L?U!swvyf^?d9SluUp zK*`&(BlI%_akN9G=PC$})SNVJvL0D(q-y+&L*FrP8aR2hd+P4|Q%{RD$&#BzTu!3W zwg83GGnOfE$$@`#{a|IRA_*CFRwSZ9H8rmZgXho8qRNt79M|mRmHI!TCu1xElU~1YR_}Zn|ofW^1&Kv+h zJ|+;7V-A?;S0^Mel|0IntlO;{%bDA{3vS)SsVW~whdn+{bh-N3<}7GVkM(^l_VdFV zn^#zkFYJd+sks43jpcR;&!@LmE7gTm=qIHHV*E^ z{KLFN-l8eWv)>rWWai!yvyJWC#iI1?$5y8C7l5+%S3|PI9eP%1xv2UJ5t6_X z;mVUjvhdJ;=@0tMQHfjo=5Aq49c`I#|PX0U84|WlQ!p^jm*<(6pjx~+@M1n z&Y{akC`eRM{*e~j7%mBzb0qBKEocSV7{E`|-ka4e;4kLY;w{>8EXNLgwROAhbji=H z$T9|fL9UtQ~{$ z-b7!ooE? z?Cs9_%+Y6j!Ys!%Dw#?AhnMZ<3V#;_NQNJQS;aZ_T#ZEM)q;^*=rr2~z^d7fsY-vY zWRKa$^fYca4t4Tgv?$JTK|fDpzVnyDlz3>Z!HL(W2F`sST?Ubg;tj*u4_*nCmVElo zboN$yZ`1k+Gc;JG&dGdEgl4WK78D>mjzurfw%vW8_j8nrofPBs0zXaqNOoml)Lq)#? z=59JyS7KcXQCl|~oq0*wLPq-uIz0*U=cpGP6;M5JQG4yo0b-v3GRTMNBg+Eb-29LJ zZE1aFq77%%q|}<$S^cK8b1(SYC{Z#wY8u<5y4mzVxl}L?G{-=b(sM25dYT4;3k!lCBfws z0daz!e3fpT)1GF5lwjm4bZkR0p})|Z7G+^$E5tiYElKvjWn3WIsk`!NF5>k50FZZE z^2f!MgMYX zJ=95?BUWpAAJ|mxo6ro@Ulv3*ZSDC<4|Z?Jvi!Hd_O8$I4Anr&1=rAeRnF%lQ7>9a z&e8%{+aZ?m;M>Qz_3%wn*b<*SoIyVufSY-^m^INbnXdg5R#2GzowryN)n}*OCWshW z=ND)^R6ovFZ59Um9pMe*D(tp!OiyY7y@q>*CVma zzsc&D71VmT^~oaT_*6r_Dshqyy+jhLM6#9fR3UP*GA1`}NFbp$(3s~^3$@qB-4t^9 z9@x|TA*9En_l;d_;!^of3RyBh^TtKTQ%OK*;HxmrDQHSyXn_!u==_lS$CTh&#@K19 ziT`d;-GiVUf9?M|9%s7Jr^wI1p~^v*I341E1=GMYdWn@VJVxwpfq|P~A^gFNd|w)b z1^CacUBXeQJ{cpF2Vi#|!Y=DJTb-02l%rgg_>B(zQ_icWx6bWCIM;Y*KMa=x^{D13eu=QtDB2me?Lua2iT)Qh#FiiWJ$U%SE{T33UEzC*e7_l=y+wu z&4>6MreD3%JDW3%h)%+3-X<0#Qw4WF&owcS4Ztyz^$P>GeTC4+mcBhqFOa?LCeCuo zCo%{}>9?~1G8Ta)Z8`ekb}6#8vH!MlrT7bA3eHQ#x%yusS!*TnY$SO|T!5rX7=ryO zV`O6*%(T!P5*WD0lBP(?+UO-^pUFujI9~+Cl8~{dKN8wTC^Da}*g?qg+;(-0Q(c+- zuhrXer=v`nkg6QV8W$$4#NzGnuP)rS5&J!)?PfI6;BG!PYOSvA;qYN%AMonVI(^Jz zS8z`ipn{ovY}Fsd^hM|nsi{tR-TZ<_Kkg2fwSMMIu((BhzzV&`uNaxS_WW!O&D6of zWjgfs9IGb8Y^ECHW*Y;mpM%kmlbHNGP@m>V`xSAc*OxckwN+kbRmnhbH_jg9nG)|kQvN+mT=DyzVP1AyT(z&6CTQRXLJ zz^@yn9>Zwiz!Tm^E@~fabq?sEf%Q zVN)E9-pj-Wc=q`3)!eh=l!9C5dLx`WqWDIh{xu7=Za0B<0C5%M`bIP7j#6jP3nJd_ zPv?Of+(9pd8_X#8!3${h2kIBcwN%1nXa60*hW1)rKg)bJ>}e`i@3_*QM)3To z$0@W{+d$~Wwf--7Virw^4<<%y4ElJ0on_|$%C#G&wVRWe`5aDX@csEmmA)E1PRt3C zSr4+15mLyEZf>Kru>3=8qKOmLstfGQ&5uSgb|D~T$qB@dy~ZNq{Src4&gZGuNklfn zIMc84n6*hmJlwxE03nTAg6~e8fGW>F3)k@sBznsFfQTtCeOe|%fDZo2ILtyv(82X= zTQ=1P1l;~8hUoy=t{}itlT|bRFKyTB>yx38Ph*?q^x70z8zga^C4ucraIRO~cMZl4 z1EZmBd{Ic8t%I>YAc_U;8jYQOF6PweErtqavOTV%qPv`^43~Y6k+!KCJ+&?=ucf5_7 zTdP+D=OZzpCK8WCez;D~C%}+firs1J*w2_R+FFM87qrFcRjU1Kg@Vu7_B=%A#QDcqhZ+^Jc@tpc$$+flS?~9@v03ocsliM{=&=l>F1HObCDzPfi?;9?} zANJcrqI|T*-u{UqowS(Jd4m=6c1Qz!+d-(-L>ciN>N5drcKG*sK^%_6ILCE4Uu+4{ zjMA<~@a*W%3vh(ZRQ(=d_IhXx_Ryo}-6h%)YBGZND6+))yI=7STfHgDrPj)16ZSxq z1jM4{V%@lpI@F0?)Kcd+u=neVT9+xX&F1m8Ilrj?`p2!=Tj)Tu#~32a{=!(O*i5AR zMa?lR_sJets7*F?0?Grm0N+{g3#^xF5ch1RTd5NP{A&6b+r%RncJ5^`g5MftQ`cqQ zy;h{MkN7lXOZ+hW+8Y1&#X~S6*)0jch>UQ8i<8bS7R0PUWcQ+;G zfwu?tlOks;V|ZB&H(*|+y@GGLSiJbNL!qW@jxiNzSg%6xAId3^aWpK+jlBX_{;W@b zch|G2-G?{SDrY38$T_V3s|WRT?+zK|w)RJak|_GsZ31W~Z#XA!u3~0$xNH#lTG6*D z`&+?1(i>#NUUF97Mi9OW6J5f;L|)AIAr9x&W0{IRXn zWGDh^3PSFedaP=@qd+&gXCoPlbK43hZ^J&GhZ#~s9u39jQe=^HiKsE@coVZE0(^Wi z_KDgoZ%??6%z75R`$VigMU#!zwncbx_UyR}f>MzUnJc>HRc7hG@+%a_y!OJs^ddb1 z1y!ENF#sYQsF2QvNB^?SULp2JUmbvt4aO%0HOsRS`4&M7D544%vT*>Y*CERF4N(l< zeZdk_G{|fJ*Tcy)kWme?Q{rZ*@FY48v7BJ9(u1oH zjceq_su=j|Hr6_q;Ho<+dq?ZIO<)zxBA8BFqrqdNB9>q+=;f3FJlermlFH~VZ{Nrk z>i_yz?XUb}MdAuzPq8L0w=adv9#lID4)INUct}LX4?<&mNK4iW0U$l1s zchPxP6U>pL)92`Aw&KuJ{von%#}B3O(b4C@6qIBwo;3L&B5|vJlQPBabx&@mK@=QoX(4=T*V!zhQ^E z(_ZX>AU>IAr-8Cg?ItJ(WL60 zO4Mt8Z-r2C=x%KH#<@+fq`a9-A6?pK%tv`-YAYo)R0?(Z$}%G*t2Sbf_o+>+eZqIf z#$5(VRrS@40uG~~GHeghd9TjGE#ngddgpU%LxPOGKfGTcvn7_TCU4_km8Eg*w2pq4 z*|iC5|3FbveBwoVS!1R%bM;{nf%nt952w%qqFMu?-FXm7!HI#*i|G6|Il<8|c{5t? zEyCKdveWCh)<^((j|0yG2%Pmk#2MaH?vR38pI?{vFq>jP#t+j=N` z^5UKv>3eSYT{0|*&8;NfQazHKX3LoURa-3YQwuqOJeJ|MMz;pyd^=qCQ+C$PD2MjT z)(~X<=>$e6riHp^@`O0?uhL6hOY9SQnJ>HpR%9km@LTs?*Xp zZ@*p#J$m5ruhNA{7d&}V+i=eImYTVGPU(H|@NQ8~-?@2H`vdzERKdqCr7Xpox`ZNf z)pjt7VeddnxXz7Urf)LCQ*}Zqc3A;8Fa3(W$N&w2L9S!qQUkbZ%^4`K`ZeCbCGC31 zE@Pg>?A*me_emzY$_$2w%XHka9I;)g%WQdxi%BoGM}6}7qGfh@ZVMYvi(5BJ@<>s8 z`nM(Dp`GkostBp-{iAr7Guf3HB~-R#&!WB2fvLj7eJ{%fo14xp`G#6<>cq{bTJeLa zD)%xDLt7c&Gj9IDft?nd7O^+VFnl!;F%{@_Ny^X6jMID3RR>1WlDwHaESwRkdo#W; z_+D_^VL9PwoNvQsa+fdUswlG{a6HV4!|=250@a^vtCYD7$tVZGs3-B!=u7o)hw{5= zg;%lt6nI&CiTTD+j$KGbEul_5&tt+`WhP=6>(~^>ayuseo%2P&?CG}*PODnS05BXF zXBXBuzr!<{^gU+kax>Qg#}!~+$-GZ19Ad$U$U3I`7M*dg>h9^@`qc;JI6B}Y3Us$p zlr`G3(r6Wp92eI_uIAqzwaAqvt8sLELqScin(bpMh0ldAkzt_{3v)hQd}8=pEHHTP z=2I6%{kVLncx)C;xV{EVidpN+1FhT}MdJFaN#L6Vs+$d?$L`6FNM}D)1rrZLqp;ny zrN|^Ov2|9t*1cY*=%jN3^Z2WDu^4rlcXx*SU%krs8+XumT4`B{wR$uzl2JD@H3Yl# zSkGkY?6MD?7qumfB%QeNXvts0dTHbv;!?i`0*G z^H+c76gy>TgZfv=T9*;({f0pTaS}YuCE;EJDqku;q*3jp^;-9uSKkZIJGWkmQ;nJ0 zsrbgjKa8FYvJ;*bVCs&eoGbtEzh5p}ZH=5yMS%JnVql!GJ<D{ix@zWx5I>8 zd?o1ykJtV0{yXDJJIs-u%U8-rT~08OjTaUQWt)xX;pp9ZS2QF|D}G(kyIp+O9{ zg9T!Or2u+Fqmo?5j=ej@Wh4}i%xDyb)`C=5+xM%nap66yR&D~@7s%+@-RI2dYQ*FV z-+Xiwyl80N7}!7-EPUx#bJeApZEXlI4$@8_3S>i-QQI-gLT=)W-di7BezyM$Wp~&v zSAuOAy^UdRy2Wb(E?F0D;&SVfjlqIl?*vqieq`eWC&V=@Uc;k(v1uphj2ErCADs3h zj=&qAZ=6#Y_#rTh!*y8n_=SIA@hEjHSH6eLcj|Zlj*zNpIh2YP8ibXHTaKg3*EDOr z`?cO~Vc5W9P?N~5sYLc{W9eQL17~U@~UAsY>qkd(l!JJ>L;Y!G-R>T6j*M_>6j>lVni6REk;eKARqp zizGlUq7Gi3*JyX*U_e&8j2cLf5pKsX?spGb%#f?a@EL*oji%_qwrux2Q*-zlJ1BVn zh1QN>XPC6H`yuD|doSAHydg-nuq7h+ zg5w?eW~L3*#YYOWzH{|VP8C1*ssbmgkWJ!fne;GXheFID>Q{KU&*{Gi46EK2mLO_d z1D%6+G2Ga(V%fl7*ue`kY14x^PDYJ4ZddNv%qbB=nXo>(-`Wfa;b?zs0uvZPs@0Us zE_j#2EHM&$P91n?;wZ#uC}iL=NV3rQ3KZQK?7@GbVf+^w%D}j$F2kIlg8smR;?X&1J_AEM` zF3xS70Z?Nt@_;k1cuYOJ>tdWvK45hw(B1s0KV=Op=%X_QRwmPH`Gh+juD4}4L2B@% zc`fdT%!3apxy(pFu?Mh^7Fc%#2a?yB#ax5&n0kT~qf+2L!5(^tvS0?&SkLbtPX`DXSJo{8 z8I1Ynbtgm)dTIec)K{@@hEAXpG5f!ifWt*YE` zQpY_}>bMaMN412?-sLWXHB3()l5(uEj<$#|BHGCdvu)hRbVLa>eD{=rw8xBs;&WMf z3D$asSMl(O++Jnk$^O5qJg~vc!uE!ykPCRc^ZRDUb3)RdNt>{fVgIT+*HifMpnw!x zZiS7NL;e9yiLG4Dm|X-=T0Zf}R5y2KQG5kL82UBLk{~ihRV_E3 z1wWZ(%)bEB*nd07aulXfKXz-cwZTO%=C_*26?zR$(_p3u=b9wk!DPHjPpw@p)y&P2eXS0=^G6tn zuQf35#i{1wdYNBgCLBLK*mCO=N1PJ`VI#m`3({eq8D$r13gh6cw0&b0GZ>tVi`v9` z3@m|x0fz1Q75=!iQCs(3GT@g3JJ}}B#~uY?bGFUp2C@&sk+Wox7W-~(#>QJuaD>aJ z{gZH;1jk-iwi@`;$_wnZ;*dizj+SGfsd#w>H@DhIXNYE-bmnY{7K8x}RrMg+mjLGG zB;A}Mv2+-F{`^D)=EY!S%SBHaH(hH?Gj^#&yv2m&ST*#w1ET>Q7}ZcNZawDaQ6u!5 z1%O~Nwy#QwyDj_Zf4M|BXv)GHb#SpVAlwR#Z;%MRHw7WBv&&Q$43q6@w3Oy37TxTy zG~L$(yT1%K305LdC=5KH*GyQhgs4xp8xUC!`vPQr1>4&@tdU`f_0ju82&~te1#y<= zUR3$m9XbS%`r^(D}%B~Om9l(c^SA|KwiX=st%z@Z^; zs%Q37k8KP+*(d)UUh2a@QVUUXJb+9sXfEta0 zNru8m&A=S*KZ_~-9&4iILwigIS1tV#MhcS->>;iuonOaz?XQh0R)XA|JdfzadcZ|S z%Y>6KmDj>qRwAIndb!6E0d8%S6{z2X#v#R9NdY7^5A>dGh;CfKzR4LB0N+j81CB?6 zE6W$s4XC(9XMxwq=fHOen{s}DYF|{T`}c@>$*cb^^4>#j%a8W{jHSs7D}LY_^CiI} zAxJLuu5WwU#h%d;mokvRSz`80*k7FPod3;~NKFM({Fx&iY&q)+x@dp~aS-5!_c)g- zIgLexLs|856FI&}Fx(a}4&M6L*!OD)7BV;?g_+_AcjU%oK4l{9BvA8M%z!06Zu`+u z_p>r>l^i9i$3Ofu>K3&0k>%md9>G*xlFwyx;Hr&Z!rW<*K6F(P-dB3!;}z{bjw<#8 zS?LGzwL;^U^%_(M_>%}d z{}~VE#G%HZf>%fiG0$$vV_a`=^my*>nm1Ih0F;k@m2aNfCJ_FT=weT{24eJNCVsDd zn#!dY-c#c8aHVc|7hp$yi5$J%VQ8nAe5}1+>EzF-Hq^;NE=`3t&sW1n_EL-=aOI2O z$>cmpzaSb`Bwe0M0lM<|5EFKk!?Jb1%!F^u5y$pd9|S;lqAaZ?q9iVffx5VI9&K85 z{hW8&;%8>FKeTu8t!)=MDon{xF~PH9Bi7Wz1Di}bT{w$Xbx^{`7*i55KNE|1QG#d- zq#Jfbok`^6Z6ttozS8y9XqB64-va{rG zlamcaM$~_xm(_5;b*l-KS59Xz;w7*rx0{du9BIDB7W>}#B}|S?LzdAbaOoCa6o41; z>W|Os41c8a*zNhMOjeD`HhDlvNx5~jKQW;`=G(nEgp;Kk*Nv% zO!xlmSbEBZ|B?#6qF9sFa%2^p;0^cTX>?_v{DEvN?gc{2G*9W6F7|E79liokQXi`>nFE4+#RK|6VmG-5zFsPL!svLP z08b_R-rMvub`y*&=WWPglm$}jR1;XsRI32;m7OZi5gYUJedYHdT!0ouW4jr>E)Vru zKzF*7P#Fzm#Bm!yrAb}FIu+`*sSV-s3Kk#i@1#{ zEWjB~yO?kEM&v#nrh_NcIH_Vv#lPrNiYCv_U(flxttWf|VB;Tnaq1mn3a7!l4gWVONtyo(opva3H)M$Fn#lg2> zgb@24GW+>_HQ`xQk7SuYnfdFy+E^T)h=*BX$lhY<8s40E1OJB|*tyb^HOKPrsI8wX zT=4?FnC+_`_jw@wwTg4FJv5!xM3Nwy>Ge>;7Z9-mhyw^Ix5<;w>FaHJmLG=CVbSQi zsr4Z~f>S^JV({cT6x=@iPXA4#(;JFo5Z_|&4^Vm#uX1c>(o~fvZGs5Tkj^W`=n(!p zLUYw7#qESu?n@%W7rcdgA@NqJIqAnkvC{{K`n>*XFc}}-RTI7hsw*wB#_GDg{bYOUEd5XkIhzToVh`-V0HO=L zchc-#A#=%OCh?x09jGEyWZRQ|4yX()>e^nWx$CYeld;E*2UHT7t{UBS!~0;tN;Nu5 zl68Ha@R;)6<8#m%9evfDOM3o9_p%C1<&bX*Fg&$U>R){Y9PVYQgL38hDVuMbHtkBN zu1EVjBE35@@rIfDvUgahHc_&CU4imq{6ok?{0&Djge1H5?==FUzu#BCp)fF}IR>#x zcRZ9}eV$FJCpTvhbr*5Qx%@t&Ww9eaf*%jOJ2i01%Pma=K?D`Ln^AY8nT|dU?Ix6| zoZcjysD3ks(S+>5CsXj&m_UV>5sV!=Zb5&hw*dSEL^L#*3IA2g#g*3*G3U%N2bmIJG+&z+?QC9pK2pZ zzlUQx@jY8|XNZwTr+-0pm)8xHw^j-OAe^s(?QEZv^2kkmm9ie9KH~=r1Hj%+kR3iv z^Afp=nw@Uminbm$SxmcGpg>E^w?E4EMelh@#0DYAMRkh0}&l(C-2XyO(FJAr+_#lNJWgq zisFDdqxakO_n_1=6Q*YZil}xJ?hG;CBfVXtUg^3n@x?b$J zzfnu}eWv2Nx8+e*V)~<~o1W@NN2&~w<7+cr{56rZUZemmxvvyxHuL*6@6pbYj!QPG z!l;Tn2TyF-pnJERJ;LMIF3P<*G8Ww9p6cx+LPs=^nW5^ECFF(QS?_ff5|Psn2r+=Dnz=#bMj{G;vDy3{r+&E3*nDqv zA5=W3C*yN@S45O;f;wDc7CX<<~0I;ult_frG4IZPt^HN zd{~k8*ncRVE6E7fDG?-=i<-#5oBN`vmgyVqx`)#z<8`q&i46FPz+ZE}il8JqfVpIj zMBXY1b4_ZlSV#lm{CfYKneEJ{%2bD@Hb+O0BULB5d9ZcE-(bH%Vrg#U7-Uv&9m}Vg zdRZ_0rHdhGiKM)_q2`~YGdqrr0GN(t$5nYc4U|eVQY_U%ZB|M+_fnPF({W5upvJ*voiKqUtW`pEM_@>qBmt9_`w zA9pHdD=#v*C_f06gD5a$T+>f_vOGGxQO?@>DJWbujzRwOk)nh@RK0Rzh`9k zf8L;?B(fkm^#=>Pl^~(E#m^+%V(If1J0E-vZ7C-9z{DHCT#7Y=8pGkj^#t0Dd0x;D z6e6#UocTeij%Rx^DuSuT+5)Bqf0q|oMN;dcPP5;tHx#9#Ao!Oc+^0P0&5k24sJ6~m z!X_V+sbTvbN)7xiolHVz*6N1^sIue8^;esS{$z~=pE!=7&|{;qTQ&^-tDZ_5(^{lO zP@jtzZ*f1hl5%SvkjN0@uIc)rJ&g(M@E|HX?0euCUsaO^WrHjtaG^lYG?c-eY%-&P zuPEV!F`<2Yd@F6?gslQU3q+uczQ+07czPX)1tFMkn@Yca{iC@BQ01vzs;;7E#foDT zFsbn`%a|1YUBl=eIZt9$By}ocf)-49e?PI)Liz$J-o(*OK9W`Fegfqet5rl7EJEv2 z9DT483=cUo>2^TeBUp@Fcvm|GHJX~%*ekpA=3<;Bu|`fvn~ixdMobwcKr zXyFb3N=RxLwQJG;E4?+`JY|uzQ_a*T2zz-kQ67Dka9}Xmy*Y|<*G6S1LC(CqoiFIV zezN6NNbG%pNu%XTAJGrwh{v|4YeA2z%}whldt*~j*=kY7t{P2jpQ~#r9sEBYjlRi> zi5Kruf~`e-c_#aS5k9sol53VXDr8&%Wqp1>f%glI_brd+#eX1C8DwF^R16DEVn|mb z5A&VM$uCbq3T6{uijpYaS|jj=J*;M!9da_1)>JC96;%UOW_e(QA#q9j$zuejp2*9a zyRHz=TqWfZm)PNkYbB0(H$DWZ!nzp&5Idx(_osiVAtMb{svu!@0E)x&`$u|`Z&F~d zJ`Ea@6>7kpl^>4^F5;NE^u8qFu0q@T9P_t-goufj83?8x+8it@aLg&_6mWZ(}M;mEfBTuM}Rk{^jij2Hy+ zbZqCxmI03pF8<(?*CYV`69hP!499OhvxabJtpG9*s}WuJn+MN`^OrXYOtawQN)(C( zI3Is`OXADJO#E%sYua(WR2=Z8Q4EDS4Re$EpYgYTbTV!qXl21po=8>#ral+*zkZ0R z)|9MbO5m4n-u)|Y?gc4`tz>X^vgg$IndWYgqH#MYekb>jT_7u2Cj~%SY$4-?dwRl~-&p6`jGbnBW zQ)W*VQ^AX+9dVD{KfLGI!whg7tWpdL!QRe*DDLrMG-r1E`WzWE)+X9ghlz zT_%q+^PL{BTT!>}`>N6GD|RGX6$#iP5(XSG=`oSQ)|Jy--IxG>;L-&1NBmNLuob$x z@KR*WRU3tn9eLhm1>tmdKngs{o;OYihS@zad8sUJ_nGW-^vE|_FB0bsXR+5l5u`mY z(5I7;b=q8HHQXdRXA#=%gJR@Hu&LCYdfqLl&>su3D$R6_FI=;PXZ-RoV|iPUk5c*_rV0GAvMu^>*V zW!l6#(cw|@kOK7VZ=&ylVbz>-xvOCZ5CxGLNdAt57}h({7Yn(%@D%v9 ztkAnl0KXb5j}<&_f3X=w7@AW?FQ2`hNE)Yvy}Z5tAE;kHRBl-?S728Dz@}he6xe^> z(Gv=xRVu;*ep7Dp9qi>?{JT8fOQ6OmFW-+%L4R;dsX_PWu~vJKXXnY3+{+IbtwzeE z<{k~&!C3zE$^dulNC~^I0M+rt2T+@`XKDg>emE6|Jl!GYKvR1F{_{}XZ*uAxKk2sn zA7G+_c04@&%TS7H!J7 zBn`^)!gw3HNpHkXgeICcP;gCTgk{{^{f24K{an~NHUHlm%#gs#I2AUV@|m}AGtU(H zY&oV}^9?g1QZt7PR<8Srq+e3K0AK_JBX(aJt-(mW!<)~Bt`8MJ!V9pt1RCZw{mHF^ zO=>Rs43xWSo1*G83YKs0*%1GolY!0{qmXp3^KjJ_uZAKq)-V0K8Z+i?uL&t5?)4o< z=C?*NW(xRwjrQoV1un%9T_YYD0f|o|w?LI&|2=t#G)K2n1fKOPhFsPbb(&W`B2T9% zkN?@~fb+$c`$5&`?Ug_~II_HB+eN0hJC)(x?RCMVzel)$mP!Xgs6G1H8naEi_k!V2 z;{+Thi-rZezM$r@Xwfx!T)Y)#jpm&FwS8mA2}0>(&{Ux)a$9@{)dh%8(J>2Po2z4> zrS!wCtlRufO1wSNJX17`q*%BDYg-YSUWAI{5VH4*VCu8zN>>5)xEeryxQBj_v!kOb z_2qjBOB+1L9k)LH(g>`=@DZ|{vH^h&P!n)<%BmVm~)3e>YjfEJB8Lbw9bS^tRSvqE_H!8 z12T#xa!_ydm@n&bW`P_lxNH*)32XOtb~fMSXaLTDymco1zJ~Oz`Ww#9DZ-LO6HXCNE~bEN#a z>cduR4{BBb4u@L#uNiXsXebc3WvirwS+VlvqO7D5-W`bT3LMlhIp7>yJz{?08OVvv zp$(43Eqtxi-PrOIJhW3WG~mlGAJ{zE21qp?bU6bCL_1h|Nyf_agYBfkG3Xj4ac(-Q zc&j*3FblEe(Tx|!QW6O@8Jtwvk=7NILD(fKZ2bNVWr3w1JNP>z=VNexj34joj(yP> zW4-ekU@enI+u@R?k3btiS&-6~D$GG}6Z;cpG|2nGiWVM`TBqGvAhe#yX9YEm)?+$C zlyMxBi?skQr_?1-h>}Fd4w`G(5Z23F_Bysc*Is$U3n6q2^*e{iaTuO7O6=lfwTLDj z&~;a*twKM%#*6SCtzkz3H#@41agL8PAAHsG0*1VZL|^x78X|WmnVp(4gs>wq6OASj zYWf$TfJ0uZ&QR~sqe7yNv^PkF5thRAxd&7JJoQ+|RZ=C)n-GQHX5GB1nbY(8LBBbc zSQG>@@Na8k+LD5j>}2lN52S7el&ED_7l$^?FNYH*DY>bM_?lR7RZPHIGN84f`dd!@ z-keMIA`rcU+AYM02cV>Ke@v4;bEFS{p*ee2CHNjYx@767oP+S8;IN$-Vhv_TFj0yMkCEeh^enFRCbu3kr})cyPoD1LT>C`vYjwJ_bisS^ApI7?o8g}* zr~~#DdsR(T=DDdo7ET}WT=?LaM4VEC?DK4U*lkgmi6}6_izt_lGIXumpO*8SN_I!i z7fS!tSchT5z*r7KMrHG;!aS#+QI$-KsJ)3<&*t1Vwgh^DESC~z^U3&gP(#cOk{7~46<^0Da^lj44Xmwg3V?W-18zgaa zA_qFT14Ri1{R)-YV$B$J0z>FT;O8)!8-XdtqJw41gqPbdJzAH(lU3gOz1mVoRG#w+ zte_Mfk8qP3J(kwN)2dHo)-fGu4Bn>~$fg_}Wzo#_k z1x#HZi_j1=5#o{+aAcww(~C(%IGD`ZIh78PfFSREklJcW!KIaehIfIf$&(! zm&Pc~37sUOya)YW-WRX2!ru|bPpIXs3@(M4YUi7VrOizvKf|eYA;k0V-(W&f;GmSa zNowXEy9HZJZiJ2$;g43NKf2oq^(TLKAB3WPrF96-y5y{)gcYk$>-{%T=v1mZ4VHm@ z*&^{a?ZC$VCj@@nE%mN?`wRDpXofb+(q91pP~8m6DgmVva6$oq?9vaWrrv%xa#kQK z1JSMufSeL>Vjam@U*81$l-|?NZv?g*Jexi*JA4?It%(7*6v(EXe%H>$CG!uQouES9 z&SM-Pbb^`>o#x-YI;d?c&nW`yQbdj5C@BI)XbAXlV=UQBpvCiE1vs>#^m8#ab$PMx zN@89PO5OMv{ppgNTEM#hwJHtrf)1>|xH7}IMJhbVolJT(rqRMFwFv=*zIfGX zmbW(`7fUz@JZC1+(Hj*m!F7a2UAUx7{wUXDzp)M=JiHSB^HXW{a`$^C!=t0DM;cJA z`p)W)_crUY_~0w_&2{}7C~k);KfdxZf36GxS(z(Kv`>hiW}|7FaMg%bMCY69=I6qNFV*xk8@_!>!OOz z&QJ<1+P7avF`@5rSvzRehuC>l_Dm4S3K-k(i=rgtuMYcYesBuCo;%;2XVI+zFfF3;m_dgq;NnF(jsc$uNF04 z*2k^U^d_2U@!g6zRTs;lNn8(;hmUmmsq4x(W5?HGoz9^6dk~NSl?Bjm`5traFfDGB zG>V~S@kpveb@g_2(OSGuly)$MfWKfs|4G8kb;e{PBUlfb-=q7QA(XDn`rOe=HgZXE zwNkdg1{;4#V8{3MibZN}Eu3~pjbwf*|DUjN{%dO7)M12fjKc{y&WLyt=O)I4;KS@b zmK+0db?QauQl)mF5nFuZ`iqAX$nKrdMsop)W40NUz$bDuI_$#9GpOQYU;>I1&hwPa zg?*P4FpG7k1;wr-U2Or2kwfPwr#c#9@+=6Xm@m38?RFO3F@(XOOc_B1!hg9r;rUwiBNK2G#IthjmV}5>1k{iAs4} zhX^mzl*Rp^IC=qGgp|0|ALw{*+LcF`=Y}t7z#j zs!8tlGbGJ3LfzuS0cs3VDqLYRe3Ir0CmNz`I;9OD*n@MmZ65(^k3m^GvY}wbD3O-2 zJk1K?;P%{A$W>-OvueQ|a;Zo9`TcMevgObqY=4p9{*zQH?-(hc-Mzm8p|7TXQbC5D zeP$IL58adT2x_-94>V%}a8w|v0dMm5;T%H{O6zzGQUk#WZ8FuluGy&mF5Ee!{|F>j zUjo{uB`rSpUb(h5+htJu(cOD9J}78wbUXakFMC@IJl9RfYNp5!vEl@uP)xc8EJSIS z9hv9Z+qZ~_Ff`$=4b#Vy2F&gZiY)=mZr)RqjpL|9Q$!($(;edvXnvY*Ie;iVS@lMd zyGyaP)KsxRF{4&Z#@w|Y+VY^3CO3B!O8e?U->;SnE3@XKD>d%=cm%$^b+EwDEBR(U z+hzM+w|H@~sj+W9L{V3cU=Yf(iBZ_Y zad2Ug@{Cml{6Ytg4Da+0Zz}9u^Rk=%vQ3uXx+9Pv3qKSKpw@h`y6}u`NGDdFTNx%K z2#yzk&)9~j8v;b&f#*vesDk2TqDkP3Ho2> z$UMFh{F%gK!=<7A(i>NAKj56qyYRxCkI1JCIUr|sck}?xHUt3-U-vn~7gV$|b}tE+ znzHWsE0ybDJL+`_#b`47c*}hNAKHofh!Wl~Kp$Hd8F&x=bGEeZ2iY6gN6$7_I4 zpvahLODg!BUBAf^_6f%YUrM|iSZJA!Yqf0|(nb*2i4-n+FTI^tt)rP)#<0YA+RfjzARBY?63%GLPX zG=al@9j@A2u0?c`@iA@f1LOO=n}8 zJTtry#8Z;G4|c-gNC@XD!bi zr;=#(I=^vgsKSxO%=@g6aK2I%QN`@Z0u-*NqbZ;=M&y32Qp%&C=|*!gBpLx)@4nKk z^x|r{_a3jbOiH3ev02mr6B#r!uF;w;6J1e+GC-o+nTvYXh~5Z*T|?QWr7Ct-YsP(& zPj=bJ6Y=+z#3}LW<9?v%H!&hq!OF-%8KX64Ti-N0h)$amoyk@2x7{7$pWVG!zCxYN z0rN0gNo-wqFV1OXOfm8&Jr{u8u8EBz^}fwRDX^=2Ex&cxRsN8n#b)Yp@KGNt52bxJ zR3!+@iU(!qj$pRFxP$z4U-Vz$OT7=#yN9kPA#}S$(rW=Po6joXj8(0%GF}1zc1_n8 z5}GzlDG^GplNr(@SV^>LcpRYu_ML5_b%%;@E%5x&Z3S|FBFhSgj|6Fz_-Z=hJh zBgZwn+e^DRHeZfGP}Wm8$`cq%MrGFky5Ts+q*n$QpY4c`8D+n7C;kdRCvS?H&r*y@ zq_kND(yHdL7Pt8Msxg@zP!0~qH~}XA+5s@ZKu3Kb&{`yI!Wa0}|MMjuAXWA8x^JYj zx0=7db8XzvZH6&h174hX?0S|dvw3LCUK|^FF4ws*=&3vv42*sI+T!COs~Aay$EgYH z9nv?o-d>NmR^ow@jbeT=4MYu;{Vy)WxpyD`SzaPsm$KWG+ZaFRM0s1IBJlj)J{UkU zxk=vE^Jg&VY8)&%RTDV;yI3&j8xFG6ejo@v|d<w<}N2_s6FQhncx5UkEwI@B{V^x79S$Tui`vd zGGz)h7AC%YFGRI)m1b}<#t8`KgizYWoD2?7r6l{RSy`?#hb6Ipxy)oY83c*FHIh35w7HfEmZ?YH zW4Ky42&zFf>TUsIMwD_9(Y6}p3cWrdVjkXaImJ)U#L!sfmE0M6%$XMaIztF6wD1p`7}D613#ewdTIEA3I|o*B5mVFrdL6 zu>wc;AErI&?b^^n>6wdlzY@rIQn{f(X`dUB#M2hrgLWWP_)WztMz{@b zPNsS6-1X?GB$Um*=H}qy7=$AFhbShVye!d%fzta5ZJapvXxr_RH5 zZ)Q12h7Lc5gj0K(K1mQXF)zN=gOg*Az1i-Ij@#|AZ_U2y8x|nRU~Ka#0jl?jyWNuM zBguGIAZ*&46mmjC_4^er7l%M*CE)UsYw$_;UpKXN(Ke|2^62KB=2LL820MSgd#ZWA z`AulvmJ!dqP8p2b2sZKz!&LFjv&&VoJoYfW*!59;5hzw!r(}G**Rg-t#;$+Aq3lHV zi-YER({dQ0W^7-!)x^KCk5_s;vz~NO^$-XZoy2v&Jo}QZH13_%ZSvvc;-U0*oFR4# zC#K}445qW!lq|qX;fA+3^eV>D0AF@)_fT-vprTRcBnA)p$jHNj_fbt=5K;te>x0UtS}zv4taE4!i(68GTf;fES& zRz9uBnL`^A}PQ9P*!a&_9Y`zUMYQK#OzMTw6>7;C-`NIiZoE3h}If$zpo zJ?M&PgED?{PK0SZ`#@dy1l%g6HtJi8j&{pHiZ5@RBeIJb=9ul%_NrO5`%F@IaYpF;EV$4+`FrSTUU^SzotQG4l9)dkdZ3ZgW*$ z|2Sf1@wL2gg?eT&u&1=HL}bmN>&b^`r3n|Kk7y+lK*(c)4#~L+x=Fs>q;gYI_5WZ~ z&Soh_ut|HQdRrrr^{qxlz{$=SOi5}eCmNL9aeu&6d1$e0;rqco8O_ZVzeNEx1QpAI z+Si!X`@_12uM7ux&Au7zP0n9B0zky&r`7(72B=b26v&)xKQUooAUs5UMI#nEt0d0M zrE973IjPkZmUymm6GN%o`dwq?=YOw#7WP#5%oHdzMw*GD4;S2i7BDgDD~^SHl%i+4 zWq-WzV@1Nx;(i8=B<~9ENsfoo~HrpV!6DLusVNp%sm~vGToTNd;c0hY* z(1P~y&pF81&?Jb8zh zc)DJ4#u0Q>O5-dmvY-$zjrNJ{l;+gn&-DRe3P16kMeJ27u#hNLAuStP$a+YLZy#c} zkIvv$PqyfS1bK8w#<@YA9qRo@m{J(<{@q>mYPOH5OatG6Vnj=xL6z5qgcv)8(nFYK#ONL&wqTC zWlVTYbs;jx#AEf&PYa(I?md(&+N~)d&d&RHfJHyhw?U4~%X+s1fJW$yW!x}(^)H3Q zlIePnqK>ATzC6DY04KGgl%yZ*87O58NH%xe7cggc9s>o4KNOzTwfkoGYUlI3YyOxo z3OG^KeA&$z0KMcQ+skNq?;hyiv43wp;KR25_g#dQ#07-LmL zkLgVssZqn9gV(<()xvqmf!5yt02P%2+qP*!4Acn{l9aR?;mAGv2}QBE+0tV@%e*%E z2~x$@f!6KHEfb+2#XTxCiMy=};KuWESDL5B&^L9%$KQ@n@C?Jy8rS1XQo4&U*jr0M zD7PLoFfl;ITapQjwBly)-DaV(tCNgOILl%sjyS;l0$Z=f zySPW5HwTcfH4|}TmeRc&U(E${-tkcXd$!2FzD!+nKN_D-I3GELX8!Vb^qQ6803ltO zT(1qc$_r*5BOnPxm5NX@Y-$njT&4lK!<0`Di}%0g0Ep80_UGv3&VNKA;-3OiLR()< z`Z~Iam*TL~^G)T5aB|Pw`7rkRicW((hb1fnbp<0Pd>>w34SX{%LP9kxZpDk9h2UtZ zOqcyOBxD50T<(3R&_eFTO8POTL0_&-k)maEK#HJ#A5K@0mm}5z@e2}P!vU=aVwJKe zSvsjEGDwv=jtnS6Sw%JwIw z!Rln{%E|IpbbyU&IdGz?ZK2u^D}%&vSz0TR)E~kQl8k1{z270SeIKed$Qw1t|49-= zu`dYH@r{`o#-Ik!E}j1L^SM;-XpPf8`NSZNR0j!RBQ(8Q@45-Ds;~z!hh=<_Fmwh7 z^dU+l*g|FS-Jk`EO;n6+Mjw;vy-5=oE|qJ54+^;~S&{|Yv@9@)lOP&#YGSmXrVI4h zi*+2qXS14J=zVeHcpEurMBx_os_-2mbFFzfEKNTd@2r8VV-Y2pMbYc_409T|PgbUj z(73}>SvaTp+fNryKKw?h`$?3B@sF%f1@1XuN7_kcE8}RVp*9vxo7=!lK#{Z5W%I9z zfo+8dkcxKOT+aULCm`(8bZDWd>t^~-Qv)PNR`}($*Ziy5BQHQqmx6oSFa0PYGbO~& zlHor)a(Oy>W-bfQE%+yPC9ywRH9J>ou;eDtqgZL6^gKWRQ4j9I-D}|Ra?udB3`i0JV!Um@*C-|#+l9vS=J-gt7ZMb%lwQ4lPM`1G>R7p_-E_+u?r#f6{Ic+Odzg%Nre>Z0YjttIfGsJDe>1`$Q8w84<-U_NY@^?)D! zeS9U7+Grvp{uRtgg6nF~fRWY`2dLGLx2m4KO>8vFndMa(4&mIzzNM!96k2X|Cu%;ER1>VFfT{>R)! zFDOwY2_<(>_iHA%9m$FG(R;Pc#=qV#w-n3fc&L<&Wdg;NT|m$Ul}@#^sSfRQv>_O| zw4Z(5Cww_SHnLt2I<8{X)P9gHz2r zHIIlL_&fXP8-0`UC?Po0!I*0c0_IV*VlGhibC zJ5w$g3ihL#yRWKx_3qDeb_|kl2MdOYQ@9{A-t>U7ra7@W;fy-T#KDV}&36a2W98YDF|Za8$5W^+MEW#yjy?t-vFJ%r5&)`)DCf4XKhD>r zjKQ}QmBlYO;-xlf*~$E!jjO^=DED#T{5qL8O;n_IDcDwY$;rS2d(ruPiY}ljaMRmc zS$YjSW)JHxPAbP@6l4+F8d=sp-WFPc?)Wm7@u-MEdEm7c8Fe~>p+T`$R4TWhaZvkG z_j|48oQb`2l?$5-l<&UQO3GG>W)L`1xWg{nlC1Q%Dsh2dM+@_`&{cXhYuG@q975q1+8^pG1E@Z(&hNpV-blS!jCOe;F-6i zXSz`kZ{Z4@B@seyodHDaaY~J-wl#rGCTSzew^W}xNR5TpAJiyq}vYd#5^ zE!MP8H`%3qWWPpCb7&j&!q3&K^5TJ72E06YhqBY_imM(<46Vhj`BKV$yol6a`hmS5 zLV@!PJ>yAyfQe9`IXNb&CD&3zwdv=$&w-k}B4VnCaF@3SSp|*tk7g?Y#M~-2sc*ZJ z{VhX_8WWH@1)rp=s^buf06(=fu_edUpll)q868ECrICOp7TusxMifdfmjime$QI={ zGH8$1N2tHs;JU!I&GOi(|}TJ!2)4DD3baDybgUiae z&kGiAGf64-tYJy%W_x(vq(2EpWFw(Wyj8ABbAnPumd0{RaGpd6^?WBSCf1_9JpCot zWWW0Rc(Zdu%f#y#oQ%rj;AbE@*Epo)Fe!S(qtr z(crinRB9s5&kf1DfyhY4>qQfM{m#ZmVGSDf97#2bT4m~!AbR+6gI-dayK8|w^lQSx zAg|d$)N~}YfnjpgYth-*-dSYuFV`NV!8}%6W%yA}vz8)$_G@8}`_)CYBvXms?D-;E zWk;(F2}Ff={U&+9hyiSwe@C<=cWcT!SQVO<%}laRi2<2ACCdWz1^1M9hlHIj{R*{! zM+0NPqs`45`wXU1+O$+O-kEx&t_^k%4c|&NsyMYPQLb+l!t~!%uP?-7p0*%F)JV zPpxlPWPRRa-7?9Ehl+noR&L32mfts7OIYF{N>P$ENCrc2poicDMBj%qw!!ki>_|s2 zf>(-zu~g%pT)T25py4{le>5k6CTR(EpF=7VcC9d?Cs0A=^d|WD*z>k-jWJ3#0QToT z+Y#xK=EL4HegtS=lpF(9rve%@Jd~)TR&!8emMUe`w?wCmu>+N5mDs=EpPrS={ArNu zQ(N&e!2cM#X*nS+wjxV51`pjA3sq1{ecVH2@}BoJ69sBdK!1(TFM*F2l+Dfs9a$iG z)c+nb%b|*)nrFI1rhlMr?Fz@hT#%i}`&HBz@xTAVaf@}Y*2A-h^Ji)?K24YWg4{Dh ze&QlR7kh{+8py`ErbNSk^4&xM+sLp}jr-k;CiyF#= z$SA4LcM(jXFZHwp3T$u!HiYXDEGH-4@6JjfjRUP72#w=3w`Oxy z|HR3bb1UQ}v$R$3|0Ay{E9i>kVyJd#h_hMxbS@PMR?Aro$Zs^zLhA0pO)Q1LC5deR z;4nt<4`&$=^_8cku%vA5R>VnXHAS|ExA+wIQ?A^RrR|EGMVPubRwWa-h(T<3sbt|z zP;-8kN_e|P@aN`IO%y)BS43?qU)-5jegnw$HpIRW(6|Aa^lEXz2+2QSvslUw;(3+< z6AAjPx?IzD z=rUal53(LT8GNb!r`)#~_^r5MJ)=U<$_l+5rBH(@yO=9u?=5JK0J4=6Kernt{P`!1 z&at{mCAUN#D1f{58~9&SM+2a%()X?ljs2R_Rk<#O$rik-6{#p|<;GpwsN;!NOMdDV z*OV>{U2583%=%l(exd*4Z%QgNV%iof6!hN@O@RGjQwYB!6+!FITQCl1)P-D{-*|z} z5>X`=FCvtJW4`2RTiaHH+wf9JNc)_(>Nx*gV;LC;RV4C`tww8diV`$JkVzw;BbNbc z8Wz}t2N2VGT~cYwg3M7EHj~Wl0yc_FCAyuiF$p)hQtW4=SeIHcfH^%#+q-BqlpX!{ z8^lo7$GTvx-N9N`n3Mf#J_|vD<2C3MJ3j59R7~?&9JrCo=mWK-Ilzc*Nzi06_5vMn zePJY$b1`T)x^6aYvGbjS&@dVIP7S69mN!bTlO}MZ`VH%t2my$q7h%072VWAiUl;e? zFWChB5u$rcrC#%cl&9)LL#E#8ztNWT%cs8!YX^#7a!KVS_)*mflE|xyc}&QSEH!sR z$Vy%idJ-mM(rK_z98yq8B71x6?ZUF*d^G>|K(E-&V7r^vKxqUj9uzOaq1*@Lle&}( z+lIWc7)2l*EB!#MTIkbA{)wA-;10=mMNBsc*ww$AQ1!Cxe2%t^`DZM;4={nY)56}Q zuMdSm0R_qGT|urXk_iH@pr<>nE%_5Mh>44qc`+tNT3eaF<6m4c#eSCr%8tudZR_(ZwsAbK@NX90u=hkUjqq z=}O{b-%hrZx)N8D@@)byK6kDzXD{Mo=^Q1o(%z5p-$ke@8_>`N!Q|aGT}f>@l1)|y zxpaBxy_hLZcvc>=Y{2rs--BB&FNwMB3K6i5zwN2oc3tqh_M&^=;dd!Dv@B*~;p znKBSa(-B@NC48nU`Q(>0oph1E{33wWp$*CtOj&yWFcVQ344d^97kOO|v#=t3b#Iz)?aY2#ihr9{|2` zs0`uW=(ZCK`qFq89xyD69}u|Re)H=D#gRni08z?^%3$tewOy0jK{7-*@p#xb*D-=t z1yq%`27=?eA(HS}5W2VCjdXa^#~LWZjGtHF}v>9glDDq=6`sP>-H;(T5#v#*qB4=BNTj)On0xO5h)Mw4Zs4LCd_p^8 zKc1C;nBfQioNv&IG`sMIG}G~1$&sHSU|($!tm!y5QQQB5@FMhBOSGtIJHSG93tb}QdE{J)E zSWZZDF&XYyGPAZlhABNZd!|Me?__i@74$lMUPJBov=a~(UvvjXe7jiwM)KmHY!$m~ z_r}L;U=T8(+7UOMao{CkW;*)4)ES7L1mimlwF4$GzJ3zrnC6YQmHwtI0$tUy5b$uT zs-9XHA`gH@l~n&Ycmt?TnJ5^9+I9W)9(+NpbVTBZYg2zL(C$NlTwcgNa3eEB*_XB{ z4o^E=o?QW!_7rpTUZ_$V;+ zQT#h#Ms^g_yX^`2O9Fdd{1;gpI0Ha0K~PKHPt+VcrSWUT!T%5>SMK#?<7sv_tgX$@ot0>BA7o(P{*T`{qsoFt9k>=pzkn*+P$5Hx*YM*{AR+suEjY3CI+?V_d+ ze--*>RLD-e2Yp#Idz|fxT-GlP4WNEBa*-#YXA^Y`q2DjNU| zlDDhZNflPi(eX)p_8udoI#NgVToJD!LSb`el#7v8BeO=m^XR)IIHRz_zOeBNL!}fD z9Xdwjg^bDomz8O* zpC4Di{{+`U9SEfcZr4+u_Un$ZL<=h0*&q{R$pB39GnKbKK!ZZ!bSJ) zcKw{R@2PiNd0@91VaebUOo3 z&rK0i?Gh}}d5FppCxw;rriE{^5OibDZ=-oVpxG+e#+)ut-TESHNQi!+&{7RTrY4R- zWglOY@+6`X&HbM1BW_qWzt;rPYK2pg$t<2s&;kbZelUr+fgKdaqxD(r?%P`+-_0yc za+LVNE@hUs;v@CACYSo5b}Uw33?|5;Ky{ZOekq-zDQ(JR*b;>%^sOEl)Bi+G4xq9iq~>&YuHNuSVQxblA@SDl7hRs` zVsGcmA5$J=D`~7qa-y5VMP0!;j&k&bFl!Coyz3}^E(44^MlTh5ONxAck0EaU`pmYX zftGQcK9O$r3&e3A7KMhZtk_eFNZix`@-sS)g$M{i=DBCj*G_GtqcTe@Ev3c=3^fuA zvzBTf`M5qxp52lli(5Glba9$Fm&>vZb)|~akZyP`G(8nDv~55wR-|-Gsz7 zz*Rnu4ax2H7XU|?GU6RIpH61Txh-NN%@VJ<&_(YxnVb(pX?nQs<4)n|v$NBk@v}E)GN;>TxVjp+c+^-} zSQoIQRZL9hH+5A@aj>vxNwBa;!M_H$3i2DrJ-7*EAc36r1Dd?hP^r)SoG zd?-oIQ|n-Jm|v+b(1l~_?I6YRdp|pgaiu!5@P{3hBy&G9LoD;kSIhm)ijO|*5q8DK zYb~1eD-Al%lRp`dJExD@_fm;uTc9lzg+Fq=Y3ZX zf*-y1sV_E+-1f$5)WUJ!?ijyjH*u)`s=isV7aYhxCRIly_vE#S-X&-*CSs!s<{`Jn#{78nN@{rU>xE>@-IP*87V4OME?n{2EarreN z8|G~CT_g=2b2I!SRDL-)e^hMqm#NO$AnS=i|LxpX<1e;RV@>Iv%gBp1?{OC9R7k2k z-V2`c3T!MQ>xFQ$RDbVRw%^#cSH7kb7Fxy~%J(ZP`cl}e-})cZo=5J=H-29wd1dnF zyqVq>ZXg_H+Ru{bHX_Sr@(5(soA!|DQ#NfWY2G!dZx)kwc>bANPK} zi@g!iNzp0!>^76dug0U-t&|d1Q-U+vMBh!$DRVx4n|@!;hO^Vsylk$!AQWO5 z122(W7-qgdYi|u(Kib~?4Rbx=PSDMQbx?fdVdBG$rMi>0XZE#zNIlhVj+`wsSOznkN6+mFB!WzKf9MOyAlb0y4`?LM=pT7oLJNFO57vLM$D4zWgyIc(G79b+3K$i7hG z$0}#HR!$arC6ZhTl#`{LW_FhUapT3?C#9E9$n~Ag#_F-v-f}*59!R?VYE*z(;_zeIpi+x_0L|cq!7s^cu=_q)>Dy22OZab@Kh+W$1AATTuxO-7T zc}bo9nK^yH$kOTkc?dF}?GA0Ga?c2Ysqg_)*FoaQTBRLZZIJouu@}^kIAPk3GtSGl z_EaLghwOV8*8iR;eFHv9o=Go3Si zA3;<6_0ik9MO+8QzDtVq<^<*)1oBN99yP8xK~LH%QsJLdM>Zny)D?({589Z&GCnvC z)6%|NCI5IQ`}x-&Z5+(FK~3_{o`2$~%HJgsxyuvn*O=V%Zu*moEt$Zb(}(`eJv!ze zu_??$?nop*4=f6o@J{(^J5;y6jTa>Ao;^e*jeXbrp;OVT4$oBwapfQyyH%S^yBLyF zop{6XJMS}l2NV;lR0+lzE>^WmW^&vidv`_P(nDYOGLfv3^768Phw58J^e0+Hd?h0C z`$f`vUe`*dy@#JFtQ>5H9powd4#@ExFyHMlHt1Y?V0`O;FD?i3bHq!qs7GLd=`o9o zIY|F=iP4AZO_JQDN5U5)D=C+-By>v^@ii^)@C%aT@3K=;cDy346NR%vwHFwc7!1we&rs9won0y6Ha1a-m3z($2qKCV$gS)Sl zVW6jjk0t69y@YFNe-I`IvvV-#6co6VSHxgVV(E!(r$b+U3U@Lao)XiZRL`TNiPWkH zm~9%&NvoKBO7VI%d;d!clU@iljuD}@EfZV7t6Ekm$e+x&Z0c{|=H!QcOOJHhsRGJ) zf>Soe#A>}gN(0sc8ML;vGTLlSW#iv}a#6ohAfZk<-qF5sHDz6?3HwFOOn>%F2lMUO9C(!7vLZ--M_h0Ef!f%Fy8 z;>r<@8*H5T)9y&z-K#}RAytLN65z06Sb`WeOf^ySoJ6PfBe9fDgHhRzQeF9|L4BYvunwT-A?$`2S<`|9#JY4e8(aqz?R_W~Hlv54H;niwOL_ M3HE$`5cRkJ2g(Gmga7~l literal 0 HcmV?d00001 diff --git a/python/lifts/results/simulation_crane_3_hostler_3.xlsx b/python/lifts/results/simulation_crane_3_hostler_3.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..c68fedbb30e8a43806f934f6ebc790b3b6d6a695 GIT binary patch literal 53810 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 M2j2NqKlE?^4{czmdjJ3c literal 0 HcmV?d00001 diff --git a/python/lifts/results/simulation_crane_3_hostler_4.xlsx b/python/lifts/results/simulation_crane_3_hostler_4.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..917a045396b7355f338b7a81559637becca809c9 GIT binary patch literal 53859 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 TRUCK_NUMBERS: + # print(f"truck_id = {truck_id} vs TRUCK_NUM = {TRUCK_NUMBERS}") + if not all_trucks_ready_event.triggered: + all_trucks_ready_event.succeed() + # print(f"{env.now}: All trucks arrived for the {TRAIN_ID} train.") + + +def truck_through_gate(env, in_gate_resource, truck_id): + global last_leave_time, INBOUND_CONTAINER_NUMBER, OUTBOUND_CONTAINER_NUMBER + + with in_gate_resource.request() as request: + yield request + wait_time = max(0, truck_arrival_time[truck_id - 1] - last_leave_time) + if wait_time <= 0: + wait_time = 0 # first arriving trucks + # print(f"Truck {truck_id} enters the gate without waiting") + else: + # print(f"Truck {truck_id} enters the gate and queued for {wait_time} hrs") + truck_waiting_time.append(wait_time) + + yield env.timeout(TRUCK_INGATE_TIME + random.uniform(0, TRUCK_INGATE_TIME_DEV)) + + # Case 1: Normal handling when OC >= IC (all trucks have containers) + if OUTBOUND_CONTAINER_NUMBER >= INBOUND_CONTAINER_NUMBER: + env.process(handle_container(env, truck_id)) + + # Case 2: OC < IC, extra empty trucks are needed + else: + if truck_id <= OUTBOUND_CONTAINER_NUMBER: + env.process(handle_container(env, truck_id)) # Loaded trucks + else: + env.process(empty_truck(env, truck_id)) # Empty trucks + + +def handle_container(env, truck_id): + global outbound_container_id_counter, last_leave_time + + container_id = outbound_container_id_counter + outbound_container_id_counter += 1 + record_event(container_id, 'truck_arrival', env.now) + + d_t_dist = create_triang_distribution(d_t_min, d_t_avg, d_t_max).rvs() + yield env.timeout(d_t_dist / (2 * TRUCK_SPEED_LIMIT)) + + record_event(container_id, 'truck_drop_off', env.now) + # print(f"{env.now}: Truck {truck_id} drops outbound container {container_id}.") + last_leave_time = env.now + + +def empty_truck(env, truck_id): + global inbound_container_id_counter, last_leave_time + + d_t_dist = create_triang_distribution(d_t_min, d_t_avg, d_t_max).rvs() + yield env.timeout(d_t_dist / (2 * TRUCK_SPEED_LIMIT)) + + # print(f"{env.now}: Empty truck {truck_id} arrives.") + last_leave_time = env.now + + +def train_arrival(env, train_timetable, train_processing, cranes, hostlers, chassis, in_gate_resource, outbound_containers_store, truck_store, out_gate_resource): + global record_oc_label, train_id_counter, TRUCK_NUMBERS, INBOUND_CONTAINER_NUMBER, OUTBOUND_CONTAINER_NUMBER, TRAIN_DEPARTURE_HR, oc_chassis_filled_event, TRAIN_ID, inbound_container_id_counter, previous_train_departure + + for i, train in enumerate(train_timetable): + TRAIN_ARRIVAL_HR = train['arrival_time'] + TRAIN_DEPARTURE_HR = train['departure_time'] + INBOUND_CONTAINER_NUMBER = train['full_cars'] + OUTBOUND_CONTAINER_NUMBER = train['oc_number'] + TRUCK_NUMBERS = train['truck_number'] + TRAIN_ID = train['train_id'] + + print(f"---------- Next Train {TRAIN_ID} Is On the Way ----------") + print(f"IC {INBOUND_CONTAINER_NUMBER}") + print(f"OC {OUTBOUND_CONTAINER_NUMBER}") + + outbound_containers_store.items.clear() + for oc in range(record_oc_label, record_oc_label + OUTBOUND_CONTAINER_NUMBER): # from 10001 to 10001 + OC + # print("oc_number", oc) + outbound_containers_store.put(oc) + # yield outbound_containers_store.put(oc) + # print(f"Current store contents after putting {oc}: {outbound_containers_store.items}") + + # print("outbound_containers_store is:", outbound_containers_store.items) + + # Trucks enter until the precious train departs, if not the first truck + previous_train_departure = train_timetable[i-1]['departure_time'] if i > 0 else 0 + print(f"Schedule {TRUCK_NUMBERS} Trucks arriving between previous train departure at {previous_train_departure} and current train arrival at {TRAIN_ARRIVAL_HR}") + env.process(handle_truck_arrivals(env, in_gate_resource, outbound_containers_store)) + + # Trains arrive according to the timetable, fix negative delay bug + delay = TRAIN_ARRIVAL_HR - env.now + if delay <= 0: + yield env.timeout(0) + else: + yield env.timeout(delay) + + train_id = train_id_counter + print(f"Train {TRAIN_ID} ({train_id} in the dictionary) arrives at {env.now}") + + # for container_id in range(inbound_container_id_counter, inbound_container_id_counter + INBOUND_CONTAINER_NUMBER): + for container_id in range(int(inbound_container_id_counter), int(inbound_container_id_counter) + int(INBOUND_CONTAINER_NUMBER)): # fix float error + + record_event(container_id, 'train_arrival', env.now) + + with train_processing.request() as request: + yield request + oc_chassis_filled_event = env.event() + yield env.process(process_train(env, train_id, cranes, hostlers, chassis, in_gate_resource, outbound_containers_store, truck_store, train_processing, oc_chassis_filled_event, out_gate_resource)) + train_id_counter += 1 + + record_oc_label += OUTBOUND_CONTAINER_NUMBER + # print("record_oc_label", record_oc_label) + # print("oc_variance in train_process:", oc_variance) + + +def process_train(env, train_id, cranes, hostlers, chassis, in_gate_resource, outbound_containers_store, truck_store, train_processing, oc_chassis_filled_event, out_gate_resource): + global oc_variance, time_per_train, train_series, INBOUND_CONTAINER_NUMBER, OUTBOUND_CONTAINER_NUMBER, record_oc_label, TRAIN_ID_FIXED + + start_time = env.now + + # Cranes unload all IC + unload_processes = [] + chassis_inbound_ids = [] # To save chassis_id, current_inbound_id to hostler_transfer_IC_single_loop + + # if train_id < TRAIN_NUMBERS: + for chassis_id in range(1, int(INBOUND_CONTAINER_NUMBER) + 1): + unload_process = env.process(crane_and_chassis(env, train_id, 'unload', cranes, hostlers, chassis, truck_store, train_processing, outbound_containers_store, in_gate_resource, out_gate_resource, oc_chassis_filled_event)) + unload_processes.append(unload_process) + + # All IC are processed + # print("Unload process is:", unload_processes) + yield simpy.events.AllOf(env, unload_processes) + results = yield simpy.events.AllOf(env, unload_processes) + + for container_id in range(int(inbound_container_id_counter), int(inbound_container_id_counter) + int(INBOUND_CONTAINER_NUMBER)): # fix float error + env.process(crane_movement(env, container_id, 'unload')) + + + # To pass chassis_id, current_inbound_id to hostler_transfer_IC_single_loop as a list from calling chassis_inbound_ids + for result in results.values(): + chassis_id, current_inbound_id = result + chassis_inbound_ids.append((chassis_id, current_inbound_id)) + env.process(hostler_transfer(env, hostlers, 'inbound', chassis, chassis_id, current_inbound_id, truck_store, cranes, + train_processing, outbound_containers_store, in_gate_resource, oc_chassis_filled_event, + out_gate_resource)) + + # # Once all OC are dropped by hostlers, crane start working + # print("Chassis are filled with OC (-1) now. ") + # print(f"Chassis status after OC processed is: {chassis_status}, where ") + # print(f"there are {chassis_status.count(0)} chassis is filled with OC (0)") + # print(f"there are {chassis_status.count(-1)} chassis is filled with empty (-1)") + # print(f"there are {chassis_status.count(1)} chassis is filled with IC (1)") + + # Cranes move all OC to chassis + load_processes = [] + for chassis_id in range(1, OUTBOUND_CONTAINER_NUMBER + 1): + load_process = env.process(crane_and_chassis(env, train_id, 'load', cranes, hostlers, chassis, truck_store, train_processing, outbound_containers_store, in_gate_resource, oc_chassis_filled_event, out_gate_resource, chassis_id=chassis_id)) + load_processes.append(load_process) + + yield simpy.events.AllOf(env, load_processes) + + for container_id in range(int(inbound_container_id_counter), int(inbound_container_id_counter) + int(INBOUND_CONTAINER_NUMBER)): # fix float error + env.process(crane_movement(env, container_id, 'load')) + + # Check if all outbound containers are loaded (all chassis is empty 0), the train departs + if chassis_status.count(-1) == TRAIN_UNITS: + # oc_chassis_filled_event.succeed() + TRAIN_ID_FIXED = TRAIN_ID + print(f"Train {TRAIN_ID_FIXED} is ready to depart at {env.now}.") + env.process(train_departure(env, train_id)) + time_per_train.append(env.now - start_time) + + end_time = env.now + time_per_train.append(end_time - start_time) + train_series += 1 + oc_variance += OUTBOUND_CONTAINER_NUMBER + +def crane_movement(env, container_id, action): + global record_oc_label, crane_id_counter, chassis_status, inbound_container_id_counter, outbound_containers_mapping, outbound_container_id_counter, INBOUND_CONTAINER_NUMBER, OUTBOUND_CONTAINER_NUMBER + + # # Print before requesting crane resource + if action == 'unload': + crane_id = crane_id_counter + crane_id_counter = (crane_id_counter % CRANE_NUMBER) + 1 + yield env.timeout(CRANE_UNLOAD_CONTAINER_TIME_MEAN + random.uniform(0, CRANE_MOVE_DEV_TIME)) + record_event(container_id, 'crane_unload', env.now) + print(f"Crane unloads outbound container {container_id} to train {TRAIN_ID} at {env.now}") + + if action == 'load': + for container_id in range(record_oc_label, record_oc_label + OUTBOUND_CONTAINER_NUMBER): + yield env.timeout(CRANE_LOAD_CONTAINER_TIME_MEAN + random.uniform(0, CRANE_MOVE_DEV_TIME)) + # chassis_status[chassis_id - 1] = -1 + print(f"Crane loads outbound container {container_id} to train {TRAIN_ID} at {env.now}") + record_event(container_id, 'crane_load', env.now) + + +def crane_and_chassis(env, train_id, action, cranes, hostlers, chassis, truck_store, train_processing, outbound_containers_store, in_gate_resource, out_gate_resource, oc_chassis_filled_event, chassis_id=None): + global record_oc_label, crane_id_counter, chassis_status, inbound_container_id_counter, outbound_containers_mapping, outbound_container_id_counter, INBOUND_CONTAINER_NUMBER, OUTBOUND_CONTAINER_NUMBER + + with cranes.request() as request: + yield request + + # # Print after acquiring crane resource + # print(f"[{env.now}] Crane {crane_id_counter} acquired crane resource. Available cranes: {cranes.count}/{cranes.capacity}") + + start_time = env.now + record_vehicle_event('crane', crane_id_counter, 'start', start_time) # performance record: starting + + if action == 'unload': + # crane_id = crane_id_counter + # crane_id_counter = (crane_id_counter % CRANE_NUMBER) + 1 + + chassis_id = ((inbound_container_id_counter - 1) % CHASSIS_NUMBER) + 1 + + current_inbound_id = inbound_container_id_counter + inbound_container_id_counter += 1 + # yield env.timeout(CRANE_UNLOAD_CONTAINER_TIME_MEAN + random.uniform(0, CRANE_MOVE_DEV_TIME)) + + # for chassis_id in range(int(inbound_container_id_counter), int(inbound_container_id_counter) + int(INBOUND_CONTAINER_NUMBER)): + chassis_status[chassis_id - 1] = 1 + + end_time = env.now + record_vehicle_event('crane', crane_id_counter, 'end', end_time) # performance record: ending + + # hostler picks up IC + env.process(hostler_transfer(env, hostlers, 'inbound', chassis, chassis_id, current_inbound_id, truck_store, cranes, train_processing, outbound_containers_store, in_gate_resource, oc_chassis_filled_event, out_gate_resource)) + + return chassis_id, current_inbound_id + + elif action == 'load': + if chassis_id not in outbound_containers_mapping: + print(f"Notice: No outbound container mapped to chassis {chassis_id} at {env.now}") + return + + container_id = outbound_containers_mapping[chassis_id] # Retrieve container ID from mapping + # print("outbound_containers_mapping in crane and chassis func:", outbound_containers_mapping) + # print("container_id in crane and chassis func:", container_id) + + if CRANE_NUMBER == 1: + crane_id = 1 + else: + crane_id = (chassis_id % CRANE_NUMBER) + 1 + + chassis_status[chassis_id - 1] = -1 + + # for container_id in range(record_oc_label, record_oc_label + OUTBOUND_CONTAINER_NUMBER): + # yield env.timeout(CRANE_LOAD_CONTAINER_TIME_MEAN + random.uniform(0, CRANE_MOVE_DEV_TIME)) + # chassis_status[chassis_id - 1] = -1 + # print(f"Crane {crane_id} loads outbound container {container_id} to train {TRAIN_ID} at {env.now}") + # record_event(container_id, 'crane_load', env.now) + + +def hostler_transfer(env, hostlers, container_type, chassis, chassis_id, container_id, truck_store, cranes, train_processing, outbound_containers_store, in_gate_resource, oc_chassis_filled_event, out_gate_resource): + global hostler_id_counter, chassis_status, outbound_containers_mapping, outbound_container_id, record_oc_label, HOSTLER_NUMBER + + with hostlers.request() as request: + yield request + + start_time = env.now + record_vehicle_event('hostler', hostler_id_counter, 'start', start_time) # performance record + + hostler_id = hostler_id_counter + hostler_id_counter = (hostler_id_counter % HOSTLER_NUMBER) + 1 + + with chassis.request() as chassis_request: + yield chassis_request + + if container_type == 'inbound' and chassis_status[chassis_id - 1] == 1: + d_h_dist = create_triang_distribution(d_h_min, d_h_avg, d_h_max).rvs() + HOSTLER_TRANSPORT_CONTAINER_TIME = d_h_dist / (2 * HOSTLER_SPEED_LIMIT) + print(f"Hostler pick-up time is:{HOSTLER_TRANSPORT_CONTAINER_TIME}") + yield env.timeout(HOSTLER_TRANSPORT_CONTAINER_TIME) + record_event(container_id, 'hostler_pickup', env.now) + print(f"Hostler {hostler_id} picks up inbound container {container_id} from chassis {chassis_id} and heads to parking area at {env.now}") + + chassis_status[chassis_id - 1] = -1 + + # Hostler drop off: different route for picking-up and dropping-off + d_h_dist = create_triang_distribution(d_h_min, d_h_avg, d_h_max).rvs() + HOSTLER_TRANSPORT_CONTAINER_TIME = d_h_dist / (2 * HOSTLER_SPEED_LIMIT) + print(f"Hostler drop-off time is:{HOSTLER_TRANSPORT_CONTAINER_TIME}") + yield env.timeout(HOSTLER_TRANSPORT_CONTAINER_TIME) + record_event(container_id, 'hostler_dropoff', env.now) + print(f"Hostler {hostler_id} drops off inbound container {container_id} from chassis {chassis_id} and moves toward the assigned outbound container at {env.now}") + + end_time = env.now + record_vehicle_event('hostler', hostler_id_counter, 'end', end_time) # performance record + + # Process functions of notify_truck and handle_outbound_container simultaneously + env.process(notify_truck(env, truck_store, container_id, out_gate_resource)) + + # Assign outbound container and chassis_id for the hostler which drops off an inbound container + chassis_id, outbound_container_id = yield env.process(outbound_container_decision_making( + env, hostlers, chassis, container_id, truck_store, cranes, train_processing, + outbound_containers_store, + in_gate_resource, oc_chassis_filled_event, out_gate_resource, chassis_status, + outbound_containers_mapping, + record_oc_label, outbound_container_id + )) + + # Process outbound containers + if chassis_id is not None and outbound_container_id is not None: + env.process(handle_outbound_container(env, hostler_id, chassis_id, outbound_container_id, truck_store, + cranes, train_processing, outbound_containers_store, in_gate_resource, + oc_chassis_filled_event)) + + +# When OC are fully processed, but IC are not +def hostler_transfer_IC_single_loop(env, hostlers, container_type, chassis, chassis_id, container_id, truck_store, cranes, train_processing, outbound_containers_store, in_gate_resource, oc_chassis_filled_event, out_gate_resource): + print(f"Starting single hostler transfer IC loop for chassis {chassis_id} at {env.now}") + global hostler_id_counter + + print(f"Requesting hostler for IC at chassis {chassis_id} at {env.now}") + + with hostlers.request() as request: + print(f"Request available hostlers: {hostlers.count} vs total hostlers {HOSTLER_NUMBER}, Hostlers capacity: {hostlers.capacity} at {env.now}") + yield request + + start_time = env.now + record_vehicle_event('hostler', hostler_id_counter, 'start', start_time) # performance record + + hostler_id = hostler_id_counter + hostler_id_counter = (hostler_id_counter % HOSTLER_NUMBER) + 1 + + with chassis.request() as chassis_request: + yield chassis_request + + if container_type == 'inbound' and chassis_status[chassis_id - 1] == 1: + chassis_status[chassis_id - 1] = -1 + print(f"Single loop chassis status {chassis_status}") + print(f"There are {chassis_status.count(1)} IC") + print(f"There are {chassis_status.count(-1)} empty") + print(f"There are {chassis_status.count(0)} OC") + d_h_dist = create_triang_distribution(d_h_min, d_h_avg, d_h_max).rvs() + HOSTLER_TRANSPORT_CONTAINER_TIME = d_h_dist / (2 * HOSTLER_SPEED_LIMIT) + + yield env.timeout(HOSTLER_TRANSPORT_CONTAINER_TIME) + # hostler picks up the rest of IC from the chassis + # chassis_status[chassis_id - 1] = -1 + record_event(container_id, 'hostler_pickup', env.now) + print(f"Hostler {hostler_id} picks up inbound container {container_id} from chassis {chassis_id} to parking area at {env.now}") + # hostler drops off the IC + yield env.timeout(HOSTLER_TRANSPORT_CONTAINER_TIME) + record_event(container_id, 'hostler_dropoff', env.now) + print(f"Hostler {hostler_id} drops off inbound container {container_id} from chassis {chassis_id} to parking area at {env.now}") + + # Check if all chassis filled + if chassis_status.count(0) == OUTBOUND_CONTAINER_NUMBER and chassis_status.count( + -1) == TRAIN_UNITS - OUTBOUND_CONTAINER_NUMBER and not oc_chassis_filled_event.triggered: + print(f"Chassis is fully filled with OC, and cranes start moving: {chassis_status}") + print(f"where there are {chassis_status.count(0)} chassis filled with OC (0)") + print(f"where there are {chassis_status.count(-1)} chassis filled with empty (-1)") + print(f"where there are {chassis_status.count(1)} chassis filled with IC (1)") + oc_chassis_filled_event.succeed() + return + else: + print(f"Chassis is not fully filled: {chassis_status}") + print(f"where there are {chassis_status.count(0)} chassis filled with OC (0)") + print(f"where there are {chassis_status.count(-1)} chassis filled with empty (-1)") + print(f"where there are {chassis_status.count(1)} chassis filled with IC (1)") + + end_time = env.now + record_vehicle_event('hostler', hostler_id, 'end', end_time) # performance record + + # trucks pick up IC + yield env.process(notify_truck(env, truck_store, container_id, out_gate_resource)) + + +def outbound_container_decision_making(env, hostlers, chassis, current_inbound_id, truck_store, cranes, train_processing, outbound_containers_store, in_gate_resource, oc_chassis_filled_event, out_gate_resource, chassis_status, outbound_containers_mapping, record_oc_label, outbound_container_id): + # Check if outbound_containers_store has outbound container + if len(outbound_containers_store.items) > 0: + outbound_container_id = yield outbound_containers_store.get() + print(f"Outbound containers remaining: {len(outbound_containers_store.items)}") + + if -1 in chassis_status: + chassis_id = chassis_status.index(-1) + 1 # find the first chassis + # If chassis are not assigned with outbound container + if chassis_id not in outbound_containers_mapping: + # outbound_container_id += record_oc_label + outbound_containers_mapping[chassis_id] = outbound_container_id + chassis_status[chassis_id - 1] = 0 # already assigned outbound container + print(f"OC mapping created: outbound container {outbound_container_id} assigned to chassis {chassis_id}") + else: + print(f"Chassis {chassis_id} is already mapped to an outbound container.") + else: + print("No empty chassis available for outbound container assignment.") + + # if outbound_containers_store is null, check if we need operate single loop + else: + chassis_id = None + outbound_container_id = None + # chassis_status = 1: inbound containers are not loaded + if chassis_status.count(1) != 0: + print(f"Haven't finished all IC yet at {env.now}. Starting single loop.") + chassis_id = chassis_status.index(1) + 1 + chassis_status[chassis_id - 1] = 0 # assigned with IC + # single loop takes rest inbound container + yield env.process(hostler_transfer_IC_single_loop(env, hostlers, 'inbound', chassis, chassis_id, current_inbound_id, + truck_store, cranes, train_processing, + outbound_containers_store, in_gate_resource, oc_chassis_filled_event, + out_gate_resource)) + else: + print("All inbound containers have been processed.") + + return chassis_id, outbound_container_id + + +def handle_outbound_container(env, hostler_id, chassis_id, outbound_container_id, truck_store, cranes, train_processing, outbound_containers_store, in_gate_resource, oc_chassis_filled_event): + global HOSTLER_FIND_CONTAINER_TIME + + d_h_dist = create_triang_distribution(d_h_min, d_h_avg, d_h_max).rvs() + HOSTLER_TRANSPORT_CONTAINER_TIME = d_h_dist / (2 * HOSTLER_SPEED_LIMIT) + + d_r_dist = create_triang_distribution(d_r_min, d_r_avg, d_r_max).rvs() + HOSTLER_FIND_CONTAINER_TIME = d_r_dist / (2 * TRUCK_SPEED_LIMIT) + yield env.timeout(HOSTLER_FIND_CONTAINER_TIME) + + record_event(outbound_container_id, 'hostler_pickup', env.now) + print(f"Hostler {hostler_id} picks up outbound container {outbound_container_id} from parking area to chassis {chassis_id} at {env.now}") + + yield env.timeout(HOSTLER_TRANSPORT_CONTAINER_TIME) + + record_event(outbound_container_id, 'hostler_dropoff', env.now) + print(f"Hostler {hostler_id} drops off outbound container {outbound_container_id} to chassis {chassis_id} at {env.now}") + + +# truck pick up IC +def notify_truck(env, truck_store, container_id, out_gate_resource): + truck_id = yield truck_store.get() + yield env.timeout(TRUCK_INGATE_TIME) + print(f"Truck {truck_id} arrives at parking area and prepare to pick up inbound container {container_id} at {env.now}") + yield env.process(truck_transfer(env, truck_id, container_id, out_gate_resource)) + + +def truck_transfer(env, truck_id, container_id, out_gate_resource): + global TRUCK_INGATE_TIME, TRUCK_TRANSPORT_CONTAINER_TIME, outbound_container_id_counter + + start_time = env.now + record_vehicle_event('truck', truck_id, 'start', start_time) # performance record + + # Truck moves to the parking area + yield env.timeout(TRUCK_TO_PARKING) + record_event(container_id, 'truck_pickup', env.now) + print(f"Truck {truck_id} picks up inbound container {container_id} at {env.now}") + + # Calculate the transport time for the truck + d_t_dist = create_triang_distribution(d_t_min, d_t_avg, d_t_max).rvs() + TRUCK_TRANSPORT_CONTAINER_TIME = d_t_dist / (2 * TRUCK_SPEED_LIMIT) + yield env.timeout(TRUCK_TRANSPORT_CONTAINER_TIME) + + # Request out_gate_resource resource before the truck exits + with out_gate_resource.request() as request: + yield request + + # Simulate the time it takes for the truck to pass through the gate + yield env.timeout(TRUCK_OUTGATE_TIME + random.uniform(0,TRUCK_OUTGATE_TIME_DEV)) + record_event(container_id, 'truck_exit', env.now) + print(f"Truck {truck_id} exits gate with inbound container {container_id} at {env.now}") + + # End performance recording + end_time = env.now + record_vehicle_event('truck', truck_id, 'end', end_time) + + +def train_departure(env, train_id): + global TRAIN_ID_FIXED, record_oc_label + + if env.now < TRAIN_DEPARTURE_HR: + yield env.timeout(TRAIN_DEPARTURE_HR - env.now) + yield env.timeout(TRAIN_INSPECTION_TIME) + print(f"Train {TRAIN_ID_FIXED} ({train_id} in the dictionary) departs at {env.now}") + + for container_id in range(record_oc_label - OUTBOUND_CONTAINER_NUMBER, record_oc_label): + record_event(container_id, 'train_depart', env.now) + + +def run_simulation(): + global all_trucks_ready_event, record_oc_label, TRUCK_NUMBERS, TRAIN_NUMBERS + + print(f"Starting simulation with No.{TRAIN_ID} trains, {HOSTLER_NUMBER} hostlers, {CRANE_NUMBER} cranes, and {TRUCK_NUMBERS} trucks.") + env = simpy.Environment() + + # Resources + train_processing = simpy.Resource(env, capacity=1) + cranes = simpy.Resource(env, capacity=CRANE_NUMBER) + chassis = simpy.Resource(env, capacity=CHASSIS_NUMBER) + hostlers = simpy.Resource(env, capacity=HOSTLER_NUMBER) + in_gate_resource = simpy.Resource(env, capacity=IN_GATE_NUMBERS) + out_gate_resource = simpy.Resource(env, capacity=OUT_GATE_NUMBERS) + outbound_containers_store = simpy.Store(env, capacity=100) + truck_store = simpy.Store(env, capacity=100) + + # Initialize trucks + truck_store.items.clear() + # print("TRUCK_NUMBERS:", TRUCK_NUMBERS) + for truck_id in range(1, TRUCK_NUMBERS + 1): + truck_store.put(truck_id) + # print("TRUCK_STORE:", truck_store.items) + + all_trucks_ready_event = env.event() + + # # toy case + # train_timetable = [ + # {"train_id": 19, "arrival_time": 187, "departure_time": 200, "empty_cars": 3, "full_cars":7, "oc_number": 2, "truck_number":7 }, + # {"train_id": 25, "arrival_time": 250, "departure_time": 350, "empty_cars": 4, "full_cars":6, "oc_number": 2, "truck_number":6 }, + # {"train_id": 49, "arrival_time": 400, "departure_time": 600, "empty_cars": 5, "full_cars":5, "oc_number": 2, "truck_number":5 }, + # {"train_id": 60, "arrival_time": 650, "departure_time": 750, "empty_cars": 6, "full_cars":4, "oc_number": 2, "truck_number":4 }, + # {"train_id": 12, "arrival_time": 800, "departure_time": 1000, "empty_cars": 7, "full_cars":3, "oc_number": 4, "truck_number":4 }, + # ] + + # REAL TEST + train_timetable = timetable(terminal) + TRAIN_NUMBERS = len(timetable(terminal)) + + # env.process(train_arrival(env, train_processing, cranes, in_gate_resource, outbound_containers_store, truck_store, train_timetable)) + env.process(train_arrival(env, train_timetable, train_processing, cranes, hostlers, chassis, in_gate_resource, + outbound_containers_store, truck_store, out_gate_resource)) + + env.run(until=SIM_TIME) + + # Performance Matrix: train processing time + avg_time_per_train = sum(time_per_train) / len(time_per_train) + print(f"Average train processing time: {sum(time_per_train) / len(time_per_train) if time_per_train else 0:.2f}") + print("Simulation completed. ") + with open("avg_time_per_train.txt", "w") as f: + f.write(str(avg_time_per_train)) + + # Create DataFrame for container events + container_data = [] + + for container_id, events in sorted(container_events.items()): + container_type = 'inbound' if container_id < 10001 else 'outbound' + if container_type == 'inbound': + container_process_time = events.get('truck_exit', '-') - events.get('train_arrival', '-') if 'truck_exit' in events and 'train_arrival' in events else '-' + else: + container_process_time = events.get('train_depart', '-') - events.get('truck_drop_off', '-') if 'train_depart' in events and 'truck_drop_off' in events else '-' + + container_data.append({ + 'container_id': container_id, + 'container_type': container_type, + 'train_arrival': events.get('train_arrival', '-'), + 'truck_arrival': events.get('truck_arrival', '-'), + 'crane_unload': events.get('crane_unload', '-'), + 'hostler_pickup': events.get('hostler_pickup', '-'), + 'hostler_dropoff': events.get('hostler_dropoff', '-'), + 'truck_drop_off': events.get('truck_drop_off', '-'), + 'truck_pickup': events.get('truck_pickup', '-'), + 'truck_exit': events.get('truck_exit', '-'), + 'crane_load': events.get('crane_load', '-'), + 'train_depart': events.get('train_depart', '-'), + 'container_processing_time': container_process_time + }) + + df = pd.DataFrame(container_data) + filename = f"C:/Users/Irena Tong/PycharmProjects/simulation_test/test/results/simulation_crane_{CRANE_NUMBER}_hostler_{HOSTLER_NUMBER}.xlsx" + df.to_excel(filename, index=False) + + # Use save_average_times and save_vehicle_logs for vehicle related logs + save_average_times() + save_vehicle_logs() + + print("Done!") + + +if __name__ == "__main__": + run_simulation() \ No newline at end of file diff --git a/python/lifts/truck_work_log.txt b/python/lifts/truck_work_log.txt new file mode 100644 index 00000000..1921429e --- /dev/null +++ b/python/lifts/truck_work_log.txt @@ -0,0 +1,516 @@ +Vehicle ID: 1, Event Type: start, Timestamp: 181.20762966437408 +Vehicle ID: 2, Event Type: start, Timestamp: 181.23590430565247 +Vehicle ID: 3, Event Type: start, Timestamp: 181.25914226903416 +Vehicle ID: 4, Event Type: start, Timestamp: 181.26141624469523 +Vehicle ID: 5, Event Type: start, Timestamp: 181.2889374519489 +Vehicle ID: 1, Event Type: end, Timestamp: 181.29090488153685 +Vehicle ID: 2, Event Type: end, Timestamp: 181.3089410913137 +Vehicle ID: 6, Event Type: start, Timestamp: 181.31540550576455 +Vehicle ID: 7, Event Type: start, Timestamp: 181.31885874199523 +Vehicle ID: 4, Event Type: end, Timestamp: 181.32968709161304 +Vehicle ID: 3, Event Type: end, Timestamp: 181.33402274089988 +Vehicle ID: 8, Event Type: start, Timestamp: 181.3455036131865 +Vehicle ID: 5, Event Type: end, Timestamp: 181.35791702524796 +Vehicle ID: 9, Event Type: start, Timestamp: 181.39039317200695 +Vehicle ID: 6, Event Type: end, Timestamp: 181.39298489498702 +Vehicle ID: 7, Event Type: end, Timestamp: 181.40013328243023 +Vehicle ID: 10, Event Type: start, Timestamp: 181.41439952986295 +Vehicle ID: 11, Event Type: start, Timestamp: 181.41654930765236 +Vehicle ID: 8, Event Type: end, Timestamp: 181.41765104905753 +Vehicle ID: 12, Event Type: start, Timestamp: 181.45142186498248 +Vehicle ID: 13, Event Type: start, Timestamp: 181.4638491511918 +Vehicle ID: 9, Event Type: end, Timestamp: 181.46545213481258 +Vehicle ID: 14, Event Type: start, Timestamp: 181.46925124344637 +Vehicle ID: 15, Event Type: start, Timestamp: 181.4710793058109 +Vehicle ID: 16, Event Type: start, Timestamp: 181.4802590408556 +Vehicle ID: 17, Event Type: start, Timestamp: 181.48263272863804 +Vehicle ID: 10, Event Type: end, Timestamp: 181.48423034618676 +Vehicle ID: 18, Event Type: start, Timestamp: 181.48546816390362 +Vehicle ID: 11, Event Type: end, Timestamp: 181.48957557126113 +Vehicle ID: 19, Event Type: start, Timestamp: 181.491902211976 +Vehicle ID: 20, Event Type: start, Timestamp: 181.49734044684155 +Vehicle ID: 21, Event Type: start, Timestamp: 181.50196823137028 +Vehicle ID: 22, Event Type: start, Timestamp: 181.50665798530375 +Vehicle ID: 23, Event Type: start, Timestamp: 181.5129637653224 +Vehicle ID: 24, Event Type: start, Timestamp: 181.51402422060494 +Vehicle ID: 12, Event Type: end, Timestamp: 181.53055211313577 +Vehicle ID: 25, Event Type: start, Timestamp: 181.53220677773788 +Vehicle ID: 26, Event Type: start, Timestamp: 181.5342749940308 +Vehicle ID: 13, Event Type: end, Timestamp: 181.53551276294726 +Vehicle ID: 27, Event Type: start, Timestamp: 181.53634019406084 +Vehicle ID: 15, Event Type: end, Timestamp: 181.53898201667218 +Vehicle ID: 28, Event Type: start, Timestamp: 181.54470984611564 +Vehicle ID: 14, Event Type: end, Timestamp: 181.54805248025957 +Vehicle ID: 17, Event Type: end, Timestamp: 181.55297052635373 +Vehicle ID: 29, Event Type: start, Timestamp: 181.558120583069 +Vehicle ID: 30, Event Type: start, Timestamp: 181.56001882271235 +Vehicle ID: 16, Event Type: end, Timestamp: 181.56327882536934 +Vehicle ID: 31, Event Type: start, Timestamp: 181.5644062026162 +Vehicle ID: 19, Event Type: end, Timestamp: 181.5696363568485 +Vehicle ID: 32, Event Type: start, Timestamp: 181.5699344088513 +Vehicle ID: 18, Event Type: end, Timestamp: 181.57058246262577 +Vehicle ID: 20, Event Type: end, Timestamp: 181.57267985756312 +Vehicle ID: 21, Event Type: end, Timestamp: 181.58294413450884 +Vehicle ID: 33, Event Type: start, Timestamp: 181.58531936297175 +Vehicle ID: 22, Event Type: end, Timestamp: 181.5994309553583 +Vehicle ID: 23, Event Type: end, Timestamp: 181.60246002872935 +Vehicle ID: 34, Event Type: start, Timestamp: 181.6037158783294 +Vehicle ID: 26, Event Type: end, Timestamp: 181.6066775136644 +Vehicle ID: 24, Event Type: end, Timestamp: 181.61357905007148 +Vehicle ID: 35, Event Type: start, Timestamp: 181.6137564369342 +Vehicle ID: 25, Event Type: end, Timestamp: 181.61633826219486 +Vehicle ID: 36, Event Type: start, Timestamp: 181.6174506829965 +Vehicle ID: 27, Event Type: end, Timestamp: 181.62493425494023 +Vehicle ID: 37, Event Type: start, Timestamp: 181.6432010292027 +Vehicle ID: 28, Event Type: end, Timestamp: 181.64600294425836 +Vehicle ID: 29, Event Type: end, Timestamp: 181.64907029463433 +Vehicle ID: 38, Event Type: start, Timestamp: 181.64933662681273 +Vehicle ID: 30, Event Type: end, Timestamp: 181.64972598420965 +Vehicle ID: 31, Event Type: end, Timestamp: 181.6547542581203 +Vehicle ID: 32, Event Type: end, Timestamp: 181.66424047654388 +Vehicle ID: 39, Event Type: start, Timestamp: 181.67262390601715 +Vehicle ID: 33, Event Type: end, Timestamp: 181.67289300461326 +Vehicle ID: 40, Event Type: start, Timestamp: 181.68058824306374 +Vehicle ID: 34, Event Type: end, Timestamp: 181.68396858814012 +Vehicle ID: 35, Event Type: end, Timestamp: 181.6912036448945 +Vehicle ID: 36, Event Type: end, Timestamp: 181.69939067105966 +Vehicle ID: 41, Event Type: start, Timestamp: 181.70659440445215 +Vehicle ID: 37, Event Type: end, Timestamp: 181.71924508314757 +Vehicle ID: 38, Event Type: end, Timestamp: 181.72020165219357 +Vehicle ID: 42, Event Type: start, Timestamp: 181.73483030256207 +Vehicle ID: 43, Event Type: start, Timestamp: 181.74756885173002 +Vehicle ID: 40, Event Type: end, Timestamp: 181.74920100522758 +Vehicle ID: 39, Event Type: end, Timestamp: 181.74942718223753 +Vehicle ID: 41, Event Type: end, Timestamp: 181.77865205546598 +Vehicle ID: 42, Event Type: end, Timestamp: 181.8134522178174 +Vehicle ID: 43, Event Type: end, Timestamp: 181.82156640442156 +Vehicle ID: 44, Event Type: start, Timestamp: 318.892946713234 +Vehicle ID: 45, Event Type: start, Timestamp: 318.9556651655456 +Vehicle ID: 44, Event Type: end, Timestamp: 318.9717585014886 +Vehicle ID: 46, Event Type: start, Timestamp: 319.0007549559198 +Vehicle ID: 47, Event Type: start, Timestamp: 319.00863695873113 +Vehicle ID: 48, Event Type: start, Timestamp: 319.0182726916492 +Vehicle ID: 45, Event Type: end, Timestamp: 319.0262041413028 +Vehicle ID: 49, Event Type: start, Timestamp: 319.0559812063692 +Vehicle ID: 50, Event Type: start, Timestamp: 319.06871081864665 +Vehicle ID: 51, Event Type: start, Timestamp: 319.07244678415515 +Vehicle ID: 52, Event Type: start, Timestamp: 319.0746239785231 +Vehicle ID: 46, Event Type: end, Timestamp: 319.0834626344009 +Vehicle ID: 47, Event Type: end, Timestamp: 319.084506353262 +Vehicle ID: 48, Event Type: end, Timestamp: 319.0888616841868 +Vehicle ID: 49, Event Type: end, Timestamp: 319.1247363692213 +Vehicle ID: 53, Event Type: start, Timestamp: 319.1406004050481 +Vehicle ID: 54, Event Type: start, Timestamp: 319.14303335165107 +Vehicle ID: 50, Event Type: end, Timestamp: 319.1439111712293 +Vehicle ID: 55, Event Type: start, Timestamp: 319.1467993585179 +Vehicle ID: 56, Event Type: start, Timestamp: 319.1490178767256 +Vehicle ID: 57, Event Type: start, Timestamp: 319.15183398735695 +Vehicle ID: 52, Event Type: end, Timestamp: 319.1554145643004 +Vehicle ID: 51, Event Type: end, Timestamp: 319.155549635218 +Vehicle ID: 58, Event Type: start, Timestamp: 319.1660033197304 +Vehicle ID: 59, Event Type: start, Timestamp: 319.1687417932627 +Vehicle ID: 60, Event Type: start, Timestamp: 319.1704280030114 +Vehicle ID: 61, Event Type: start, Timestamp: 319.17298565669256 +Vehicle ID: 62, Event Type: start, Timestamp: 319.17467503010323 +Vehicle ID: 63, Event Type: start, Timestamp: 319.1766717608582 +Vehicle ID: 64, Event Type: start, Timestamp: 319.182181037217 +Vehicle ID: 65, Event Type: start, Timestamp: 319.20126363170937 +Vehicle ID: 56, Event Type: end, Timestamp: 319.2199419615537 +Vehicle ID: 57, Event Type: end, Timestamp: 319.2205850298082 +Vehicle ID: 53, Event Type: end, Timestamp: 319.2228094782602 +Vehicle ID: 66, Event Type: start, Timestamp: 319.22529908396365 +Vehicle ID: 55, Event Type: end, Timestamp: 319.2263778264776 +Vehicle ID: 54, Event Type: end, Timestamp: 319.2266829957772 +Vehicle ID: 67, Event Type: start, Timestamp: 319.2284348047491 +Vehicle ID: 68, Event Type: start, Timestamp: 319.23733951690326 +Vehicle ID: 69, Event Type: start, Timestamp: 319.24038227616984 +Vehicle ID: 58, Event Type: end, Timestamp: 319.2406526552247 +Vehicle ID: 70, Event Type: start, Timestamp: 319.24301657470295 +Vehicle ID: 71, Event Type: start, Timestamp: 319.24696012782755 +Vehicle ID: 72, Event Type: start, Timestamp: 319.25466380060317 +Vehicle ID: 60, Event Type: end, Timestamp: 319.2551867153154 +Vehicle ID: 61, Event Type: end, Timestamp: 319.2571747368433 +Vehicle ID: 59, Event Type: end, Timestamp: 319.26979110661364 +Vehicle ID: 62, Event Type: end, Timestamp: 319.2702000757695 +Vehicle ID: 63, Event Type: end, Timestamp: 319.2753403246506 +Vehicle ID: 64, Event Type: end, Timestamp: 319.276890956167 +Vehicle ID: 73, Event Type: start, Timestamp: 319.2820333275621 +Vehicle ID: 74, Event Type: start, Timestamp: 319.2942014185452 +Vehicle ID: 65, Event Type: end, Timestamp: 319.29435536709076 +Vehicle ID: 75, Event Type: start, Timestamp: 319.29655245662934 +Vehicle ID: 66, Event Type: end, Timestamp: 319.29885050947684 +Vehicle ID: 68, Event Type: end, Timestamp: 319.3066768116884 +Vehicle ID: 67, Event Type: end, Timestamp: 319.3170619272276 +Vehicle ID: 70, Event Type: end, Timestamp: 319.31787342502105 +Vehicle ID: 69, Event Type: end, Timestamp: 319.32393841375335 +Vehicle ID: 76, Event Type: start, Timestamp: 319.32780720468764 +Vehicle ID: 71, Event Type: end, Timestamp: 319.32837047245977 +Vehicle ID: 72, Event Type: end, Timestamp: 319.33237420875713 +Vehicle ID: 73, Event Type: end, Timestamp: 319.3538965229778 +Vehicle ID: 77, Event Type: start, Timestamp: 319.36315925295884 +Vehicle ID: 78, Event Type: start, Timestamp: 319.3656554884025 +Vehicle ID: 74, Event Type: end, Timestamp: 319.3711789671606 +Vehicle ID: 75, Event Type: end, Timestamp: 319.37704287949276 +Vehicle ID: 79, Event Type: start, Timestamp: 319.3780527347092 +Vehicle ID: 80, Event Type: start, Timestamp: 319.39555535576824 +Vehicle ID: 76, Event Type: end, Timestamp: 319.3976075036375 +Vehicle ID: 81, Event Type: start, Timestamp: 319.4123305242304 +Vehicle ID: 82, Event Type: start, Timestamp: 319.4157268793326 +Vehicle ID: 77, Event Type: end, Timestamp: 319.4359478397097 +Vehicle ID: 78, Event Type: end, Timestamp: 319.44301169664567 +Vehicle ID: 79, Event Type: end, Timestamp: 319.44855142988325 +Vehicle ID: 83, Event Type: start, Timestamp: 319.4758593510665 +Vehicle ID: 80, Event Type: end, Timestamp: 319.47823227924545 +Vehicle ID: 81, Event Type: end, Timestamp: 319.48352966494355 +Vehicle ID: 82, Event Type: end, Timestamp: 319.49512275268256 +Vehicle ID: 84, Event Type: start, Timestamp: 319.51015923761673 +Vehicle ID: 85, Event Type: start, Timestamp: 319.5196020469817 +Vehicle ID: 83, Event Type: end, Timestamp: 319.5470770283558 +Vehicle ID: 84, Event Type: end, Timestamp: 319.5846954252487 +Vehicle ID: 86, Event Type: start, Timestamp: 319.58520403282125 +Vehicle ID: 85, Event Type: end, Timestamp: 319.5964536353967 +Vehicle ID: 86, Event Type: end, Timestamp: 319.65900733039405 +Vehicle ID: 87, Event Type: start, Timestamp: 455.6128314268715 +Vehicle ID: 88, Event Type: start, Timestamp: 455.63863511424034 +Vehicle ID: 89, Event Type: start, Timestamp: 455.6902470060674 +Vehicle ID: 87, Event Type: end, Timestamp: 455.6950811489529 +Vehicle ID: 88, Event Type: end, Timestamp: 455.7126987678294 +Vehicle ID: 90, Event Type: start, Timestamp: 455.7337706379954 +Vehicle ID: 91, Event Type: start, Timestamp: 455.74188241884235 +Vehicle ID: 92, Event Type: start, Timestamp: 455.75779771626264 +Vehicle ID: 93, Event Type: start, Timestamp: 455.75941058703256 +Vehicle ID: 89, Event Type: end, Timestamp: 455.7703550895415 +Vehicle ID: 94, Event Type: start, Timestamp: 455.7883116087915 +Vehicle ID: 95, Event Type: start, Timestamp: 455.8070379353162 +Vehicle ID: 96, Event Type: start, Timestamp: 455.80941901531475 +Vehicle ID: 91, Event Type: end, Timestamp: 455.8105192596578 +Vehicle ID: 97, Event Type: start, Timestamp: 455.81363348425646 +Vehicle ID: 90, Event Type: end, Timestamp: 455.8156521258953 +Vehicle ID: 92, Event Type: end, Timestamp: 455.82561897400916 +Vehicle ID: 93, Event Type: end, Timestamp: 455.83799095050927 +Vehicle ID: 98, Event Type: start, Timestamp: 455.8422745852611 +Vehicle ID: 99, Event Type: start, Timestamp: 455.84421466759005 +Vehicle ID: 100, Event Type: start, Timestamp: 455.8611322523407 +Vehicle ID: 101, Event Type: start, Timestamp: 455.86688424140004 +Vehicle ID: 94, Event Type: end, Timestamp: 455.8715851654916 +Vehicle ID: 96, Event Type: end, Timestamp: 455.87934461325904 +Vehicle ID: 95, Event Type: end, Timestamp: 455.88271611120734 +Vehicle ID: 102, Event Type: start, Timestamp: 455.8839920767995 +Vehicle ID: 97, Event Type: end, Timestamp: 455.8903818548775 +Vehicle ID: 103, Event Type: start, Timestamp: 455.9051923517469 +Vehicle ID: 104, Event Type: start, Timestamp: 455.9078815655757 +Vehicle ID: 98, Event Type: end, Timestamp: 455.91732028551445 +Vehicle ID: 99, Event Type: end, Timestamp: 455.9180973128378 +Vehicle ID: 105, Event Type: start, Timestamp: 455.91821570752103 +Vehicle ID: 106, Event Type: start, Timestamp: 455.92602405751313 +Vehicle ID: 107, Event Type: start, Timestamp: 455.9290504131636 +Vehicle ID: 108, Event Type: start, Timestamp: 455.9310161409372 +Vehicle ID: 100, Event Type: end, Timestamp: 455.93106102783184 +Vehicle ID: 101, Event Type: end, Timestamp: 455.9426844205867 +Vehicle ID: 102, Event Type: end, Timestamp: 455.95735372288595 +Vehicle ID: 109, Event Type: start, Timestamp: 455.9590621784101 +Vehicle ID: 110, Event Type: start, Timestamp: 455.97294837086014 +Vehicle ID: 103, Event Type: end, Timestamp: 455.9787397720344 +Vehicle ID: 111, Event Type: start, Timestamp: 455.9813429322369 +Vehicle ID: 104, Event Type: end, Timestamp: 455.981369923445 +Vehicle ID: 112, Event Type: start, Timestamp: 455.98410945390833 +Vehicle ID: 113, Event Type: start, Timestamp: 455.9947753758404 +Vehicle ID: 105, Event Type: end, Timestamp: 455.9956764554992 +Vehicle ID: 107, Event Type: end, Timestamp: 455.9978082947755 +Vehicle ID: 114, Event Type: start, Timestamp: 456.0019235977578 +Vehicle ID: 108, Event Type: end, Timestamp: 456.0082697628223 +Vehicle ID: 106, Event Type: end, Timestamp: 456.0099150964688 +Vehicle ID: 115, Event Type: start, Timestamp: 456.0102593481968 +Vehicle ID: 116, Event Type: start, Timestamp: 456.0206251183141 +Vehicle ID: 117, Event Type: start, Timestamp: 456.02815650003686 +Vehicle ID: 109, Event Type: end, Timestamp: 456.03639585082914 +Vehicle ID: 118, Event Type: start, Timestamp: 456.0371055941026 +Vehicle ID: 119, Event Type: start, Timestamp: 456.0415506914562 +Vehicle ID: 120, Event Type: start, Timestamp: 456.0440372203449 +Vehicle ID: 110, Event Type: end, Timestamp: 456.04408373608766 +Vehicle ID: 111, Event Type: end, Timestamp: 456.05396475941984 +Vehicle ID: 112, Event Type: end, Timestamp: 456.0628465859214 +Vehicle ID: 121, Event Type: start, Timestamp: 456.0733457588344 +Vehicle ID: 113, Event Type: end, Timestamp: 456.0762456074046 +Vehicle ID: 114, Event Type: end, Timestamp: 456.08332048485215 +Vehicle ID: 122, Event Type: start, Timestamp: 456.08411926374373 +Vehicle ID: 123, Event Type: start, Timestamp: 456.0865623169095 +Vehicle ID: 115, Event Type: end, Timestamp: 456.08956810269996 +Vehicle ID: 116, Event Type: end, Timestamp: 456.1026436260064 +Vehicle ID: 124, Event Type: start, Timestamp: 456.1072161510356 +Vehicle ID: 117, Event Type: end, Timestamp: 456.1080160163522 +Vehicle ID: 125, Event Type: start, Timestamp: 456.10958350748064 +Vehicle ID: 126, Event Type: start, Timestamp: 456.1139786270047 +Vehicle ID: 118, Event Type: end, Timestamp: 456.1170980830788 +Vehicle ID: 119, Event Type: end, Timestamp: 456.1206505393585 +Vehicle ID: 120, Event Type: end, Timestamp: 456.130247793312 +Vehicle ID: 121, Event Type: end, Timestamp: 456.1548405787109 +Vehicle ID: 122, Event Type: end, Timestamp: 456.16277226306397 +Vehicle ID: 123, Event Type: end, Timestamp: 456.1636023227099 +Vehicle ID: 127, Event Type: start, Timestamp: 456.16496914601856 +Vehicle ID: 128, Event Type: start, Timestamp: 456.1674171040278 +Vehicle ID: 129, Event Type: start, Timestamp: 456.1780503790298 +Vehicle ID: 125, Event Type: end, Timestamp: 456.1787896458115 +Vehicle ID: 124, Event Type: end, Timestamp: 456.18197664780996 +Vehicle ID: 126, Event Type: end, Timestamp: 456.1822710364678 +Vehicle ID: 127, Event Type: end, Timestamp: 456.2346017309213 +Vehicle ID: 128, Event Type: end, Timestamp: 456.24665783738874 +Vehicle ID: 129, Event Type: end, Timestamp: 456.24668915099267 +Vehicle ID: 130, Event Type: start, Timestamp: 592.890035052291 +Vehicle ID: 131, Event Type: start, Timestamp: 592.8916979824864 +Vehicle ID: 132, Event Type: start, Timestamp: 592.9549429647815 +Vehicle ID: 130, Event Type: end, Timestamp: 592.9596359737578 +Vehicle ID: 131, Event Type: end, Timestamp: 592.9729291907704 +Vehicle ID: 133, Event Type: start, Timestamp: 593.0174674641504 +Vehicle ID: 134, Event Type: start, Timestamp: 593.0267493554077 +Vehicle ID: 135, Event Type: start, Timestamp: 593.0295149386897 +Vehicle ID: 132, Event Type: end, Timestamp: 593.0368738622116 +Vehicle ID: 136, Event Type: start, Timestamp: 593.0663419631509 +Vehicle ID: 137, Event Type: start, Timestamp: 593.0834050588201 +Vehicle ID: 133, Event Type: end, Timestamp: 593.0888355812659 +Vehicle ID: 138, Event Type: start, Timestamp: 593.098768540387 +Vehicle ID: 135, Event Type: end, Timestamp: 593.0989655500287 +Vehicle ID: 134, Event Type: end, Timestamp: 593.1109156932025 +Vehicle ID: 139, Event Type: start, Timestamp: 593.1114547139556 +Vehicle ID: 140, Event Type: start, Timestamp: 593.1130385666504 +Vehicle ID: 141, Event Type: start, Timestamp: 593.1151747512358 +Vehicle ID: 142, Event Type: start, Timestamp: 593.1348399542312 +Vehicle ID: 136, Event Type: end, Timestamp: 593.1396303679653 +Vehicle ID: 143, Event Type: start, Timestamp: 593.1402146285769 +Vehicle ID: 144, Event Type: start, Timestamp: 593.1494618142383 +Vehicle ID: 145, Event Type: start, Timestamp: 593.1523980900223 +Vehicle ID: 137, Event Type: end, Timestamp: 593.1653311731775 +Vehicle ID: 146, Event Type: start, Timestamp: 593.1696054044004 +Vehicle ID: 138, Event Type: end, Timestamp: 593.174256058663 +Vehicle ID: 147, Event Type: start, Timestamp: 593.1788311908936 +Vehicle ID: 148, Event Type: start, Timestamp: 593.1828426997076 +Vehicle ID: 149, Event Type: start, Timestamp: 593.185579982215 +Vehicle ID: 141, Event Type: end, Timestamp: 593.1878067267877 +Vehicle ID: 140, Event Type: end, Timestamp: 593.1896115412811 +Vehicle ID: 139, Event Type: end, Timestamp: 593.1905524165286 +Vehicle ID: 150, Event Type: start, Timestamp: 593.1935242840749 +Vehicle ID: 151, Event Type: start, Timestamp: 593.2019768493731 +Vehicle ID: 152, Event Type: start, Timestamp: 593.2050756217968 +Vehicle ID: 153, Event Type: start, Timestamp: 593.2073892994418 +Vehicle ID: 142, Event Type: end, Timestamp: 593.2122240385146 +Vehicle ID: 143, Event Type: end, Timestamp: 593.2125178570146 +Vehicle ID: 154, Event Type: start, Timestamp: 593.2139072055768 +Vehicle ID: 155, Event Type: start, Timestamp: 593.2158358453642 +Vehicle ID: 156, Event Type: start, Timestamp: 593.222272507703 +Vehicle ID: 144, Event Type: end, Timestamp: 593.2286490050114 +Vehicle ID: 157, Event Type: start, Timestamp: 593.2304468579924 +Vehicle ID: 145, Event Type: end, Timestamp: 593.2349304846414 +Vehicle ID: 158, Event Type: start, Timestamp: 593.2388873309116 +Vehicle ID: 146, Event Type: end, Timestamp: 593.2397372734935 +Vehicle ID: 148, Event Type: end, Timestamp: 593.2531208844837 +Vehicle ID: 147, Event Type: end, Timestamp: 593.2542252362804 +Vehicle ID: 159, Event Type: start, Timestamp: 593.2591315361326 +Vehicle ID: 149, Event Type: end, Timestamp: 593.2608597870352 +Vehicle ID: 160, Event Type: start, Timestamp: 593.2637645020249 +Vehicle ID: 150, Event Type: end, Timestamp: 593.2698212222973 +Vehicle ID: 152, Event Type: end, Timestamp: 593.2751014385769 +Vehicle ID: 151, Event Type: end, Timestamp: 593.2761660977685 +Vehicle ID: 153, Event Type: end, Timestamp: 593.2912993517934 +Vehicle ID: 154, Event Type: end, Timestamp: 593.2957409500024 +Vehicle ID: 161, Event Type: start, Timestamp: 593.2974437548211 +Vehicle ID: 162, Event Type: start, Timestamp: 593.2993874810716 +Vehicle ID: 163, Event Type: start, Timestamp: 593.3015630340706 +Vehicle ID: 155, Event Type: end, Timestamp: 593.3039676188987 +Vehicle ID: 156, Event Type: end, Timestamp: 593.3047709703776 +Vehicle ID: 157, Event Type: end, Timestamp: 593.3113074787057 +Vehicle ID: 164, Event Type: start, Timestamp: 593.3150980031223 +Vehicle ID: 158, Event Type: end, Timestamp: 593.3198583076277 +Vehicle ID: 159, Event Type: end, Timestamp: 593.3358206892194 +Vehicle ID: 160, Event Type: end, Timestamp: 593.33967562855 +Vehicle ID: 165, Event Type: start, Timestamp: 593.3434357789087 +Vehicle ID: 166, Event Type: start, Timestamp: 593.3523405988018 +Vehicle ID: 161, Event Type: end, Timestamp: 593.3668288492341 +Vehicle ID: 162, Event Type: end, Timestamp: 593.3787535901455 +Vehicle ID: 164, Event Type: end, Timestamp: 593.3823277849392 +Vehicle ID: 163, Event Type: end, Timestamp: 593.3835465872439 +Vehicle ID: 167, Event Type: start, Timestamp: 593.4018369779885 +Vehicle ID: 165, Event Type: end, Timestamp: 593.4123349558319 +Vehicle ID: 168, Event Type: start, Timestamp: 593.4142004985532 +Vehicle ID: 169, Event Type: start, Timestamp: 593.4217714936376 +Vehicle ID: 166, Event Type: end, Timestamp: 593.4234754495699 +Vehicle ID: 170, Event Type: start, Timestamp: 593.4300064845268 +Vehicle ID: 171, Event Type: start, Timestamp: 593.4699856926869 +Vehicle ID: 167, Event Type: end, Timestamp: 593.4735769453137 +Vehicle ID: 168, Event Type: end, Timestamp: 593.494224342181 +Vehicle ID: 169, Event Type: end, Timestamp: 593.4942499923841 +Vehicle ID: 170, Event Type: end, Timestamp: 593.512040405368 +Vehicle ID: 171, Event Type: end, Timestamp: 593.5398065170813 +Vehicle ID: 172, Event Type: start, Timestamp: 593.588526432477 +Vehicle ID: 172, Event Type: end, Timestamp: 593.6569978484561 +Vehicle ID: 173, Event Type: start, Timestamp: 731.3382331327307 +Vehicle ID: 174, Event Type: start, Timestamp: 731.4092250388949 +Vehicle ID: 173, Event Type: end, Timestamp: 731.4204026381134 +Vehicle ID: 175, Event Type: start, Timestamp: 731.425212110821 +Vehicle ID: 176, Event Type: start, Timestamp: 731.4426934994956 +Vehicle ID: 177, Event Type: start, Timestamp: 731.4469878218395 +Vehicle ID: 178, Event Type: start, Timestamp: 731.4676156992562 +Vehicle ID: 179, Event Type: start, Timestamp: 731.4769683422203 +Vehicle ID: 174, Event Type: end, Timestamp: 731.4892422997458 +Vehicle ID: 175, Event Type: end, Timestamp: 731.4952706209534 +Vehicle ID: 180, Event Type: start, Timestamp: 731.5086038303411 +Vehicle ID: 181, Event Type: start, Timestamp: 731.5104224261408 +Vehicle ID: 176, Event Type: end, Timestamp: 731.5169276524339 +Vehicle ID: 182, Event Type: start, Timestamp: 731.5202209465257 +Vehicle ID: 177, Event Type: end, Timestamp: 731.521946668101 +Vehicle ID: 183, Event Type: start, Timestamp: 731.5246991566677 +Vehicle ID: 184, Event Type: start, Timestamp: 731.5303716720969 +Vehicle ID: 178, Event Type: end, Timestamp: 731.5436716001209 +Vehicle ID: 179, Event Type: end, Timestamp: 731.5525866959927 +Vehicle ID: 185, Event Type: start, Timestamp: 731.5557701736352 +Vehicle ID: 186, Event Type: start, Timestamp: 731.5585831027082 +Vehicle ID: 187, Event Type: start, Timestamp: 731.5609658733821 +Vehicle ID: 188, Event Type: start, Timestamp: 731.5821785842652 +Vehicle ID: 180, Event Type: end, Timestamp: 731.5861108303085 +Vehicle ID: 181, Event Type: end, Timestamp: 731.590473275577 +Vehicle ID: 182, Event Type: end, Timestamp: 731.595673583459 +Vehicle ID: 189, Event Type: start, Timestamp: 731.5977377067817 +Vehicle ID: 183, Event Type: end, Timestamp: 731.5998513612398 +Vehicle ID: 184, Event Type: end, Timestamp: 731.602872671963 +Vehicle ID: 190, Event Type: start, Timestamp: 731.6084680638506 +Vehicle ID: 191, Event Type: start, Timestamp: 731.611995859218 +Vehicle ID: 185, Event Type: end, Timestamp: 731.6265428455564 +Vehicle ID: 192, Event Type: start, Timestamp: 731.6270841264472 +Vehicle ID: 187, Event Type: end, Timestamp: 731.6289048818743 +Vehicle ID: 193, Event Type: start, Timestamp: 731.6291889532453 +Vehicle ID: 194, Event Type: start, Timestamp: 731.6325014495447 +Vehicle ID: 186, Event Type: end, Timestamp: 731.6403274820816 +Vehicle ID: 195, Event Type: start, Timestamp: 731.6521880334902 +Vehicle ID: 196, Event Type: start, Timestamp: 731.6536876083401 +Vehicle ID: 197, Event Type: start, Timestamp: 731.6584764567798 +Vehicle ID: 188, Event Type: end, Timestamp: 731.663743305048 +Vehicle ID: 198, Event Type: start, Timestamp: 731.6692576310895 +Vehicle ID: 199, Event Type: start, Timestamp: 731.6722326502903 +Vehicle ID: 189, Event Type: end, Timestamp: 731.674914894571 +Vehicle ID: 200, Event Type: start, Timestamp: 731.6787774975335 +Vehicle ID: 201, Event Type: start, Timestamp: 731.6846495459474 +Vehicle ID: 190, Event Type: end, Timestamp: 731.6863266635494 +Vehicle ID: 191, Event Type: end, Timestamp: 731.6876740113173 +Vehicle ID: 193, Event Type: end, Timestamp: 731.6980321669507 +Vehicle ID: 202, Event Type: start, Timestamp: 731.7011931730825 +Vehicle ID: 203, Event Type: start, Timestamp: 731.7070376889019 +Vehicle ID: 192, Event Type: end, Timestamp: 731.711005555445 +Vehicle ID: 204, Event Type: start, Timestamp: 731.7121240451645 +Vehicle ID: 194, Event Type: end, Timestamp: 731.7165324881539 +Vehicle ID: 196, Event Type: end, Timestamp: 731.7282666212607 +Vehicle ID: 197, Event Type: end, Timestamp: 731.7320847220542 +Vehicle ID: 195, Event Type: end, Timestamp: 731.7333344680786 +Vehicle ID: 205, Event Type: start, Timestamp: 731.733635567469 +Vehicle ID: 198, Event Type: end, Timestamp: 731.7430616206983 +Vehicle ID: 199, Event Type: end, Timestamp: 731.7504785158834 +Vehicle ID: 200, Event Type: end, Timestamp: 731.753525202983 +Vehicle ID: 206, Event Type: start, Timestamp: 731.7550382311888 +Vehicle ID: 207, Event Type: start, Timestamp: 731.7587422612811 +Vehicle ID: 208, Event Type: start, Timestamp: 731.7613513086484 +Vehicle ID: 201, Event Type: end, Timestamp: 731.7644659050379 +Vehicle ID: 209, Event Type: start, Timestamp: 731.7716025196089 +Vehicle ID: 203, Event Type: end, Timestamp: 731.7773611012453 +Vehicle ID: 210, Event Type: start, Timestamp: 731.7789768680533 +Vehicle ID: 204, Event Type: end, Timestamp: 731.7801695096061 +Vehicle ID: 202, Event Type: end, Timestamp: 731.7822432423932 +Vehicle ID: 205, Event Type: end, Timestamp: 731.8103973016393 +Vehicle ID: 207, Event Type: end, Timestamp: 731.8323205779512 +Vehicle ID: 206, Event Type: end, Timestamp: 731.8323492215056 +Vehicle ID: 208, Event Type: end, Timestamp: 731.8368469931553 +Vehicle ID: 211, Event Type: start, Timestamp: 731.8506631438172 +Vehicle ID: 209, Event Type: end, Timestamp: 731.8533912800165 +Vehicle ID: 210, Event Type: end, Timestamp: 731.8615173630737 +Vehicle ID: 212, Event Type: start, Timestamp: 731.8619043264291 +Vehicle ID: 213, Event Type: start, Timestamp: 731.8819184234552 +Vehicle ID: 214, Event Type: start, Timestamp: 731.8848013266636 +Vehicle ID: 211, Event Type: end, Timestamp: 731.9220918781584 +Vehicle ID: 212, Event Type: end, Timestamp: 731.9396483176737 +Vehicle ID: 215, Event Type: start, Timestamp: 731.9473388684119 +Vehicle ID: 214, Event Type: end, Timestamp: 731.9571503075977 +Vehicle ID: 213, Event Type: end, Timestamp: 731.9654800169269 +Vehicle ID: 215, Event Type: end, Timestamp: 732.0301626663964 +Vehicle ID: 216, Event Type: start, Timestamp: 867.189960513288 +Vehicle ID: 217, Event Type: start, Timestamp: 867.218506664947 +Vehicle ID: 218, Event Type: start, Timestamp: 867.2364028217129 +Vehicle ID: 219, Event Type: start, Timestamp: 867.2409546451638 +Vehicle ID: 216, Event Type: end, Timestamp: 867.2630736338901 +Vehicle ID: 220, Event Type: start, Timestamp: 867.2671171384599 +Vehicle ID: 221, Event Type: start, Timestamp: 867.2814237584603 +Vehicle ID: 222, Event Type: start, Timestamp: 867.2835471697003 +Vehicle ID: 217, Event Type: end, Timestamp: 867.2965602728872 +Vehicle ID: 218, Event Type: end, Timestamp: 867.3079055393721 +Vehicle ID: 223, Event Type: start, Timestamp: 867.3175150606862 +Vehicle ID: 219, Event Type: end, Timestamp: 867.3225785464335 +Vehicle ID: 224, Event Type: start, Timestamp: 867.3325259421268 +Vehicle ID: 220, Event Type: end, Timestamp: 867.3378779258128 +Vehicle ID: 225, Event Type: start, Timestamp: 867.339978833602 +Vehicle ID: 226, Event Type: start, Timestamp: 867.343867701678 +Vehicle ID: 227, Event Type: start, Timestamp: 867.3498866925981 +Vehicle ID: 221, Event Type: end, Timestamp: 867.3521993609777 +Vehicle ID: 228, Event Type: start, Timestamp: 867.3538485248183 +Vehicle ID: 229, Event Type: start, Timestamp: 867.3548888028545 +Vehicle ID: 222, Event Type: end, Timestamp: 867.3556252880882 +Vehicle ID: 230, Event Type: start, Timestamp: 867.3565942727404 +Vehicle ID: 231, Event Type: start, Timestamp: 867.357954794141 +Vehicle ID: 232, Event Type: start, Timestamp: 867.3597166344651 +Vehicle ID: 233, Event Type: start, Timestamp: 867.3622886872519 +Vehicle ID: 234, Event Type: start, Timestamp: 867.3758222867242 +Vehicle ID: 223, Event Type: end, Timestamp: 867.3869931667249 +Vehicle ID: 235, Event Type: start, Timestamp: 867.3888390890435 +Vehicle ID: 224, Event Type: end, Timestamp: 867.4076097189406 +Vehicle ID: 225, Event Type: end, Timestamp: 867.4103728348342 +Vehicle ID: 226, Event Type: end, Timestamp: 867.4192942482355 +Vehicle ID: 236, Event Type: start, Timestamp: 867.4215043047354 +Vehicle ID: 228, Event Type: end, Timestamp: 867.4225785264813 +Vehicle ID: 237, Event Type: start, Timestamp: 867.4244166970742 +Vehicle ID: 238, Event Type: start, Timestamp: 867.4269279644499 +Vehicle ID: 229, Event Type: end, Timestamp: 867.4297301005902 +Vehicle ID: 239, Event Type: start, Timestamp: 867.4298442666981 +Vehicle ID: 227, Event Type: end, Timestamp: 867.4317553409334 +Vehicle ID: 240, Event Type: start, Timestamp: 867.4319692447515 +Vehicle ID: 241, Event Type: start, Timestamp: 867.4348914646226 +Vehicle ID: 230, Event Type: end, Timestamp: 867.4446455149076 +Vehicle ID: 231, Event Type: end, Timestamp: 867.4463213165316 +Vehicle ID: 232, Event Type: end, Timestamp: 867.4578403580267 +Vehicle ID: 242, Event Type: start, Timestamp: 867.4608254411235 +Vehicle ID: 233, Event Type: end, Timestamp: 867.4625749041262 +Vehicle ID: 243, Event Type: start, Timestamp: 867.4633069496986 +Vehicle ID: 235, Event Type: end, Timestamp: 867.4682295126746 +Vehicle ID: 244, Event Type: start, Timestamp: 867.4706048219009 +Vehicle ID: 245, Event Type: start, Timestamp: 867.4717522686236 +Vehicle ID: 234, Event Type: end, Timestamp: 867.4721045794576 +Vehicle ID: 246, Event Type: start, Timestamp: 867.4765205130199 +Vehicle ID: 247, Event Type: start, Timestamp: 867.4959853323988 +Vehicle ID: 248, Event Type: start, Timestamp: 867.4978846704718 +Vehicle ID: 238, Event Type: end, Timestamp: 867.5006738000448 +Vehicle ID: 236, Event Type: end, Timestamp: 867.5037927355726 +Vehicle ID: 237, Event Type: end, Timestamp: 867.5062447163518 +Vehicle ID: 239, Event Type: end, Timestamp: 867.5085793503753 +Vehicle ID: 249, Event Type: start, Timestamp: 867.5103989468295 +Vehicle ID: 241, Event Type: end, Timestamp: 867.5109324889605 +Vehicle ID: 240, Event Type: end, Timestamp: 867.5167079648502 +Vehicle ID: 250, Event Type: start, Timestamp: 867.5171372289639 +Vehicle ID: 251, Event Type: start, Timestamp: 867.5261651340857 +Vehicle ID: 242, Event Type: end, Timestamp: 867.5410381298009 +Vehicle ID: 245, Event Type: end, Timestamp: 867.5455123170394 +Vehicle ID: 244, Event Type: end, Timestamp: 867.5455630187816 +Vehicle ID: 243, Event Type: end, Timestamp: 867.5474615918032 +Vehicle ID: 246, Event Type: end, Timestamp: 867.5564958793676 +Vehicle ID: 247, Event Type: end, Timestamp: 867.5660303754006 +Vehicle ID: 248, Event Type: end, Timestamp: 867.5770784481214 +Vehicle ID: 249, Event Type: end, Timestamp: 867.5808544450678 +Vehicle ID: 252, Event Type: start, Timestamp: 867.594278583525 +Vehicle ID: 251, Event Type: end, Timestamp: 867.5974594283919 +Vehicle ID: 250, Event Type: end, Timestamp: 867.5997091419782 +Vehicle ID: 253, Event Type: start, Timestamp: 867.6084601210431 +Vehicle ID: 254, Event Type: start, Timestamp: 867.6219728041435 +Vehicle ID: 255, Event Type: start, Timestamp: 867.6229731710581 +Vehicle ID: 252, Event Type: end, Timestamp: 867.6642700337288 +Vehicle ID: 253, Event Type: end, Timestamp: 867.67699094093 +Vehicle ID: 256, Event Type: start, Timestamp: 867.692239290079 +Vehicle ID: 255, Event Type: end, Timestamp: 867.700266075478 +Vehicle ID: 254, Event Type: end, Timestamp: 867.7014243918384 +Vehicle ID: 257, Event Type: start, Timestamp: 867.7484096935051 +Vehicle ID: 256, Event Type: end, Timestamp: 867.7708400495044 +Vehicle ID: 258, Event Type: start, Timestamp: 867.8043155333213 +Vehicle ID: 257, Event Type: end, Timestamp: 867.8279852973175 +Vehicle ID: 258, Event Type: end, Timestamp: 867.875407971388 diff --git a/python/lifts/vehicle_average_times.txt b/python/lifts/vehicle_average_times.txt new file mode 100644 index 00000000..d1910101 --- /dev/null +++ b/python/lifts/vehicle_average_times.txt @@ -0,0 +1,3 @@ +crane: 0.0 +hostler: 0.0021119418504930766 +truck: 0.01489569845431589 diff --git a/python/lifts/vehicle_performance.py b/python/lifts/vehicle_performance.py new file mode 100644 index 00000000..84f39f44 --- /dev/null +++ b/python/lifts/vehicle_performance.py @@ -0,0 +1,48 @@ +import pandas as pd + +vehicle_events = { + 'crane': [], + 'hostler': [], + 'truck': [] +} + +def record_vehicle_event(vehicle_type, vehicle_id, event_type, timestamp): + vehicle_events[vehicle_type].append({ + 'vehicle_id': vehicle_id, + 'event_type': event_type, + 'timestamp': timestamp + }) + +def calculate_average_times(): + averages = {} + for vehicle_type, events in vehicle_events.items(): + total_time = 0 + count = 0 + for event in events: + if event['event_type'] == 'start': + start_time = event['timestamp'] + elif event['event_type'] == 'end': + end_time = event['timestamp'] + total_time += (end_time - start_time) + count += 1 + if count > 0: + averages[vehicle_type] = total_time / count + else: + averages[vehicle_type] = 0 + return averages + +def save_average_times(): + averages = calculate_average_times() + with open("vehicle_average_times.txt", "w") as f: + for vehicle_type, avg_time in averages.items(): + f.write(f"{vehicle_type}: {avg_time}\n") + +def save_vehicle_logs(): + for vehicle_type, events in vehicle_events.items(): + log_file = f"{vehicle_type}_work_log.txt" + with open(log_file, "w") as f: + for event in events: + f.write(f"Vehicle ID: {event['vehicle_id']}, Event Type: {event['event_type']}, Timestamp: {event['timestamp']}\n") + +if __name__ == "__main__": + save_average_times() From 2d94977faeab313a0f241efe3dc91b28a1c982e6 Mon Sep 17 00:00:00 2001 From: "Bruchon, Matthew" Date: Mon, 2 Dec 2024 13:03:17 -0500 Subject: [PATCH 21/50] polars version updates, initial lifts integration --- applications/calibration/zanzeff_bel_cal.py | 2 +- .../calibration/zanzeff_conv_loco_cal.py | 4 +- .../zanzeff_set_speed_train_cal.py | 6 +- avg_time_per_train.txt | 1 + crane_work_log.txt | 732 +++++++++++++++++ hostler_work_log.txt | 754 ++++++++++++++++++ pyproject.toml | 3 +- python/altrios/demos/sim_manager_demo.py | 5 + python/altrios/metric_calculator.py | 2 +- python/altrios/sim_manager.py | 2 +- python/altrios/train_planner.py | 16 +- python/altrios/utilities.py | 2 +- .../demos/starter_demo/train_consist_plan.csv | 163 ++++ python/lifts/dictionary.py | 71 +- .../{final_version.py => lifts_simulator.py} | 448 ++++++----- python/lifts/merged_baseline.py | 2 +- python/lifts/parameters.py | 231 +++--- .../results/simulation_crane_1_hostler_1.xlsx | Bin 54669 -> 0 bytes .../results/simulation_crane_1_hostler_2.xlsx | Bin 53903 -> 0 bytes .../results/simulation_crane_1_hostler_3.xlsx | Bin 53886 -> 0 bytes .../results/simulation_crane_1_hostler_4.xlsx | Bin 53928 -> 0 bytes .../results/simulation_crane_1_hostler_5.xlsx | Bin 53888 -> 0 bytes .../results/simulation_crane_1_hostler_6.xlsx | Bin 53929 -> 0 bytes .../results/simulation_crane_1_hostler_7.xlsx | Bin 53937 -> 0 bytes .../results/simulation_crane_1_hostler_8.xlsx | Bin 53903 -> 0 bytes .../results/simulation_crane_2_hostler_1.xlsx | Bin 53947 -> 0 bytes .../results/simulation_crane_2_hostler_2.xlsx | Bin 53920 -> 0 bytes python/lifts/schedule.py | 55 +- python/lifts/test.py | 15 +- python/lifts/utilities.py | 17 + rust/altrios-core/src/train/train_config.rs | 2 +- truck_work_log.txt | 498 ++++++++++++ vehicle_average_times.txt | 3 + 33 files changed, 2610 insertions(+), 424 deletions(-) create mode 100644 avg_time_per_train.txt create mode 100644 crane_work_log.txt create mode 100644 hostler_work_log.txt create mode 100644 python/lifts/demos/starter_demo/train_consist_plan.csv rename python/lifts/{final_version.py => lifts_simulator.py} (53%) delete mode 100644 python/lifts/results/simulation_crane_1_hostler_1.xlsx delete mode 100644 python/lifts/results/simulation_crane_1_hostler_2.xlsx delete mode 100644 python/lifts/results/simulation_crane_1_hostler_3.xlsx delete mode 100644 python/lifts/results/simulation_crane_1_hostler_4.xlsx delete mode 100644 python/lifts/results/simulation_crane_1_hostler_5.xlsx delete mode 100644 python/lifts/results/simulation_crane_1_hostler_6.xlsx delete mode 100644 python/lifts/results/simulation_crane_1_hostler_7.xlsx delete mode 100644 python/lifts/results/simulation_crane_1_hostler_8.xlsx delete mode 100644 python/lifts/results/simulation_crane_2_hostler_1.xlsx delete mode 100644 python/lifts/results/simulation_crane_2_hostler_2.xlsx create mode 100644 python/lifts/utilities.py create mode 100644 truck_work_log.txt create mode 100644 vehicle_average_times.txt diff --git a/applications/calibration/zanzeff_bel_cal.py b/applications/calibration/zanzeff_bel_cal.py index c0be74c9..c0723b7f 100644 --- a/applications/calibration/zanzeff_bel_cal.py +++ b/applications/calibration/zanzeff_bel_cal.py @@ -55,7 +55,7 @@ def get_bel_trip_mods(df: pd.DataFrame) -> pd.DataFrame: """ # df['dt [s]'] = pd.to_datetime(df['PacificTime']).dt.tz_convert('UTC') df['timestamp'] = pd.to_datetime(df['PacificTime']).dt.to_pydatetime() - df['time [s]'] = cval.get_delta_seconds(df['timestamp']).cumsum() + df['time [s]'] = cval.get_delta_seconds(df['timestamp']).cum_sum() df3000 = df[['PacificTime', 'time [s]']].copy() df3000['Tractive Power [W]'] = ( diff --git a/applications/calibration/zanzeff_conv_loco_cal.py b/applications/calibration/zanzeff_conv_loco_cal.py index eb3505f8..7425a71e 100644 --- a/applications/calibration/zanzeff_conv_loco_cal.py +++ b/applications/calibration/zanzeff_conv_loco_cal.py @@ -33,7 +33,7 @@ def get_conv_trip_mods(df: pd.DataFrame) -> pd.DataFrame: df = df.drop_duplicates('PacificTime').copy() df['timestamp'] = pd.to_datetime( df['PacificTime']).dt.to_pydatetime() - df['time [s]'] = cval.get_delta_seconds(df['timestamp']).cumsum() + df['time [s]'] = cval.get_delta_seconds(df['timestamp']).cum_sum() @@ -69,7 +69,7 @@ def get_conv_trip_mods(df: pd.DataFrame) -> pd.DataFrame: df39xx["Fuel Energy [J]"] = (df39xx["Fuel Power [W]"] * cval.get_delta_seconds( df39xx['timestamp']) - ).cumsum().copy() + ).cum_sum().copy() df39xx["engine_on"] = df['Engine Speed (RPM) BNSF ' + str(trailing_loc)] > 100 return df39xx diff --git a/applications/calibration/zanzeff_set_speed_train_cal.py b/applications/calibration/zanzeff_set_speed_train_cal.py index e3b5fa01..b5ef7526 100644 --- a/applications/calibration/zanzeff_set_speed_train_cal.py +++ b/applications/calibration/zanzeff_set_speed_train_cal.py @@ -44,7 +44,7 @@ def get_train_sim_df_mods( df_train_sim.drop_duplicates(subset='PacificTime', inplace=True) df_train_sim['time [s]'] = cval.get_delta_seconds( - df_train_sim['PacificTime']).cumsum() + df_train_sim['PacificTime']).cum_sum() df_train_sim['Total Tractive Force [N]'] = df_train_sim[[ 'Tractive Effort Feedback BNSF 3940', 'Tractive Effort Feedback BNSF 3965', @@ -56,13 +56,13 @@ def get_train_sim_df_mods( df_train_sim['Total Cumu. Tractive Energy [J]'] = ( df_train_sim['Total Tractive Power [W]'] * df_train_sim['time [s]'].diff().fillna(0.0) - ).cumsum() + ).cum_sum() df_train_sim['Total Pos. Cumu. Tractive Energy [J]'] = ( (df_train_sim['Total Tractive Power [W]'] * df_train_sim['time [s]'].diff().fillna(0.0)) .where(df_train_sim['Total Tractive Power [W]'] > 0, 0.0) - .cumsum() + .cum_sum() ) speed = savgol_filter( diff --git a/avg_time_per_train.txt b/avg_time_per_train.txt new file mode 100644 index 00000000..c49a2166 --- /dev/null +++ b/avg_time_per_train.txt @@ -0,0 +1 @@ +17.47981863315145 \ No newline at end of file diff --git a/crane_work_log.txt b/crane_work_log.txt new file mode 100644 index 00000000..efdfc523 --- /dev/null +++ b/crane_work_log.txt @@ -0,0 +1,732 @@ +Vehicle ID: 3, Event Type: start, Timestamp: 174.2810811099409 +Vehicle ID: 3, Event Type: end, Timestamp: 174.2810811099409 +Vehicle ID: 3, Event Type: start, Timestamp: 174.28268979218822 +Vehicle ID: 3, Event Type: end, Timestamp: 174.28268979218822 +Vehicle ID: 3, Event Type: start, Timestamp: 174.47535372469952 +Vehicle ID: 3, Event Type: end, Timestamp: 174.47535372469952 +Vehicle ID: 3, Event Type: start, Timestamp: 174.4825116311807 +Vehicle ID: 3, Event Type: end, Timestamp: 174.4825116311807 +Vehicle ID: 3, Event Type: start, Timestamp: 174.4875712829535 +Vehicle ID: 3, Event Type: end, Timestamp: 174.4875712829535 +Vehicle ID: 3, Event Type: start, Timestamp: 174.5075471516836 +Vehicle ID: 3, Event Type: end, Timestamp: 174.5075471516836 +Vehicle ID: 3, Event Type: start, Timestamp: 174.58578236688152 +Vehicle ID: 3, Event Type: end, Timestamp: 174.58578236688152 +Vehicle ID: 3, Event Type: start, Timestamp: 174.60466618194823 +Vehicle ID: 3, Event Type: end, Timestamp: 174.60466618194823 +Vehicle ID: 3, Event Type: start, Timestamp: 174.610752074466 +Vehicle ID: 3, Event Type: end, Timestamp: 174.610752074466 +Vehicle ID: 3, Event Type: start, Timestamp: 174.641496556886 +Vehicle ID: 3, Event Type: end, Timestamp: 174.641496556886 +Vehicle ID: 3, Event Type: start, Timestamp: 174.6427067265711 +Vehicle ID: 3, Event Type: end, Timestamp: 174.6427067265711 +Vehicle ID: 3, Event Type: start, Timestamp: 174.65276278956236 +Vehicle ID: 3, Event Type: end, Timestamp: 174.65276278956236 +Vehicle ID: 3, Event Type: start, Timestamp: 174.66232655010518 +Vehicle ID: 3, Event Type: end, Timestamp: 174.66232655010518 +Vehicle ID: 3, Event Type: start, Timestamp: 174.66449155538277 +Vehicle ID: 3, Event Type: end, Timestamp: 174.66449155538277 +Vehicle ID: 3, Event Type: start, Timestamp: 174.6842730369544 +Vehicle ID: 3, Event Type: end, Timestamp: 174.6842730369544 +Vehicle ID: 3, Event Type: start, Timestamp: 174.69860643256507 +Vehicle ID: 3, Event Type: end, Timestamp: 174.69860643256507 +Vehicle ID: 3, Event Type: start, Timestamp: 174.70459646071723 +Vehicle ID: 3, Event Type: end, Timestamp: 174.70459646071723 +Vehicle ID: 3, Event Type: start, Timestamp: 174.71934934758505 +Vehicle ID: 3, Event Type: end, Timestamp: 174.71934934758505 +Vehicle ID: 3, Event Type: start, Timestamp: 174.72249676964316 +Vehicle ID: 3, Event Type: end, Timestamp: 174.72249676964316 +Vehicle ID: 3, Event Type: start, Timestamp: 174.72451510758023 +Vehicle ID: 3, Event Type: end, Timestamp: 174.72451510758023 +Vehicle ID: 3, Event Type: start, Timestamp: 174.76080585800494 +Vehicle ID: 3, Event Type: end, Timestamp: 174.76080585800494 +Vehicle ID: 3, Event Type: start, Timestamp: 174.76208971599385 +Vehicle ID: 3, Event Type: end, Timestamp: 174.76208971599385 +Vehicle ID: 3, Event Type: start, Timestamp: 174.76629786586113 +Vehicle ID: 3, Event Type: end, Timestamp: 174.76629786586113 +Vehicle ID: 3, Event Type: start, Timestamp: 174.77332599605248 +Vehicle ID: 3, Event Type: end, Timestamp: 174.77332599605248 +Vehicle ID: 3, Event Type: start, Timestamp: 174.78093665609822 +Vehicle ID: 3, Event Type: end, Timestamp: 174.78093665609822 +Vehicle ID: 3, Event Type: start, Timestamp: 174.78342586803905 +Vehicle ID: 3, Event Type: end, Timestamp: 174.78342586803905 +Vehicle ID: 3, Event Type: start, Timestamp: 174.81065185790777 +Vehicle ID: 3, Event Type: end, Timestamp: 174.81065185790777 +Vehicle ID: 3, Event Type: start, Timestamp: 174.8279274940461 +Vehicle ID: 3, Event Type: end, Timestamp: 174.8279274940461 +Vehicle ID: 3, Event Type: start, Timestamp: 174.8304935611614 +Vehicle ID: 3, Event Type: end, Timestamp: 174.8304935611614 +Vehicle ID: 3, Event Type: start, Timestamp: 174.8351297346581 +Vehicle ID: 3, Event Type: end, Timestamp: 174.8351297346581 +Vehicle ID: 3, Event Type: start, Timestamp: 174.84351075974314 +Vehicle ID: 3, Event Type: end, Timestamp: 174.84351075974314 +Vehicle ID: 3, Event Type: start, Timestamp: 174.84447204783694 +Vehicle ID: 3, Event Type: end, Timestamp: 174.84447204783694 +Vehicle ID: 3, Event Type: start, Timestamp: 174.85873612140853 +Vehicle ID: 3, Event Type: end, Timestamp: 174.85873612140853 +Vehicle ID: 3, Event Type: start, Timestamp: 174.8646455304948 +Vehicle ID: 3, Event Type: end, Timestamp: 174.8646455304948 +Vehicle ID: 3, Event Type: start, Timestamp: 174.86716561487376 +Vehicle ID: 3, Event Type: end, Timestamp: 174.86716561487376 +Vehicle ID: 3, Event Type: start, Timestamp: 174.87879709722236 +Vehicle ID: 3, Event Type: end, Timestamp: 174.87879709722236 +Vehicle ID: 3, Event Type: start, Timestamp: 174.88271735729327 +Vehicle ID: 3, Event Type: end, Timestamp: 174.88271735729327 +Vehicle ID: 3, Event Type: start, Timestamp: 174.8905777601963 +Vehicle ID: 3, Event Type: end, Timestamp: 174.8905777601963 +Vehicle ID: 3, Event Type: start, Timestamp: 174.89465126549422 +Vehicle ID: 3, Event Type: end, Timestamp: 174.89465126549422 +Vehicle ID: 3, Event Type: start, Timestamp: 174.90062493548228 +Vehicle ID: 3, Event Type: end, Timestamp: 174.90062493548228 +Vehicle ID: 3, Event Type: start, Timestamp: 174.91481178222327 +Vehicle ID: 3, Event Type: end, Timestamp: 174.91481178222327 +Vehicle ID: 3, Event Type: start, Timestamp: 174.9196128463235 +Vehicle ID: 3, Event Type: end, Timestamp: 174.9196128463235 +Vehicle ID: 3, Event Type: start, Timestamp: 174.92233085074517 +Vehicle ID: 3, Event Type: end, Timestamp: 174.92233085074517 +Vehicle ID: 3, Event Type: start, Timestamp: 174.92508675154414 +Vehicle ID: 3, Event Type: end, Timestamp: 174.92508675154414 +Vehicle ID: 3, Event Type: start, Timestamp: 174.92690599588406 +Vehicle ID: 3, Event Type: end, Timestamp: 174.92690599588406 +Vehicle ID: 3, Event Type: start, Timestamp: 174.92907673905395 +Vehicle ID: 3, Event Type: end, Timestamp: 174.92907673905395 +Vehicle ID: 3, Event Type: start, Timestamp: 174.93010336276376 +Vehicle ID: 3, Event Type: end, Timestamp: 174.93010336276376 +Vehicle ID: 3, Event Type: start, Timestamp: 174.932948469298 +Vehicle ID: 3, Event Type: end, Timestamp: 174.932948469298 +Vehicle ID: 3, Event Type: start, Timestamp: 174.95643371952448 +Vehicle ID: 3, Event Type: end, Timestamp: 174.95643371952448 +Vehicle ID: 3, Event Type: start, Timestamp: 174.95999447295222 +Vehicle ID: 3, Event Type: end, Timestamp: 174.95999447295222 +Vehicle ID: 3, Event Type: start, Timestamp: 174.9614823883396 +Vehicle ID: 3, Event Type: end, Timestamp: 174.9614823883396 +Vehicle ID: 3, Event Type: start, Timestamp: 174.96592695032882 +Vehicle ID: 3, Event Type: end, Timestamp: 174.96592695032882 +Vehicle ID: 3, Event Type: start, Timestamp: 174.96595641191948 +Vehicle ID: 3, Event Type: end, Timestamp: 174.96595641191948 +Vehicle ID: 3, Event Type: start, Timestamp: 174.97472398411293 +Vehicle ID: 3, Event Type: end, Timestamp: 174.97472398411293 +Vehicle ID: 3, Event Type: start, Timestamp: 174.9753245470635 +Vehicle ID: 3, Event Type: end, Timestamp: 174.9753245470635 +Vehicle ID: 3, Event Type: start, Timestamp: 174.9828149817809 +Vehicle ID: 3, Event Type: end, Timestamp: 174.9828149817809 +Vehicle ID: 3, Event Type: start, Timestamp: 174.99099326754603 +Vehicle ID: 3, Event Type: end, Timestamp: 174.99099326754603 +Vehicle ID: 3, Event Type: start, Timestamp: 175.00976794251002 +Vehicle ID: 3, Event Type: end, Timestamp: 175.00976794251002 +Vehicle ID: 3, Event Type: start, Timestamp: 175.01233327114176 +Vehicle ID: 3, Event Type: end, Timestamp: 175.01233327114176 +Vehicle ID: 3, Event Type: start, Timestamp: 175.01947438490797 +Vehicle ID: 3, Event Type: end, Timestamp: 175.01947438490797 +Vehicle ID: 3, Event Type: start, Timestamp: 175.03348852150702 +Vehicle ID: 3, Event Type: end, Timestamp: 175.03348852150702 +Vehicle ID: 3, Event Type: start, Timestamp: 175.03544352395033 +Vehicle ID: 3, Event Type: end, Timestamp: 175.03544352395033 +Vehicle ID: 3, Event Type: start, Timestamp: 175.04075999001896 +Vehicle ID: 3, Event Type: end, Timestamp: 175.04075999001896 +Vehicle ID: 3, Event Type: start, Timestamp: 175.0518569895815 +Vehicle ID: 3, Event Type: end, Timestamp: 175.0518569895815 +Vehicle ID: 3, Event Type: start, Timestamp: 175.08500368417586 +Vehicle ID: 3, Event Type: end, Timestamp: 175.08500368417586 +Vehicle ID: 3, Event Type: start, Timestamp: 175.09476839687287 +Vehicle ID: 3, Event Type: end, Timestamp: 175.09476839687287 +Vehicle ID: 3, Event Type: start, Timestamp: 175.10906211025483 +Vehicle ID: 3, Event Type: end, Timestamp: 175.10906211025483 +Vehicle ID: 3, Event Type: start, Timestamp: 175.11319094964128 +Vehicle ID: 3, Event Type: end, Timestamp: 175.11319094964128 +Vehicle ID: 3, Event Type: start, Timestamp: 175.11797960349614 +Vehicle ID: 3, Event Type: end, Timestamp: 175.11797960349614 +Vehicle ID: 3, Event Type: start, Timestamp: 175.12254529087008 +Vehicle ID: 3, Event Type: end, Timestamp: 175.12254529087008 +Vehicle ID: 3, Event Type: start, Timestamp: 175.1339043164946 +Vehicle ID: 3, Event Type: end, Timestamp: 175.1339043164946 +Vehicle ID: 3, Event Type: start, Timestamp: 175.13485893021883 +Vehicle ID: 3, Event Type: end, Timestamp: 175.13485893021883 +Vehicle ID: 3, Event Type: start, Timestamp: 175.14177742442584 +Vehicle ID: 3, Event Type: end, Timestamp: 175.14177742442584 +Vehicle ID: 3, Event Type: start, Timestamp: 175.17193123752045 +Vehicle ID: 3, Event Type: end, Timestamp: 175.17193123752045 +Vehicle ID: 3, Event Type: start, Timestamp: 175.17905309520847 +Vehicle ID: 3, Event Type: end, Timestamp: 175.17905309520847 +Vehicle ID: 3, Event Type: start, Timestamp: 175.17977384430614 +Vehicle ID: 3, Event Type: end, Timestamp: 175.17977384430614 +Vehicle ID: 3, Event Type: start, Timestamp: 175.18374598774682 +Vehicle ID: 3, Event Type: end, Timestamp: 175.18374598774682 +Vehicle ID: 3, Event Type: start, Timestamp: 175.18416589520018 +Vehicle ID: 3, Event Type: end, Timestamp: 175.18416589520018 +Vehicle ID: 3, Event Type: start, Timestamp: 175.21140781854524 +Vehicle ID: 3, Event Type: end, Timestamp: 175.21140781854524 +Vehicle ID: 3, Event Type: start, Timestamp: 175.27765311224442 +Vehicle ID: 3, Event Type: end, Timestamp: 175.27765311224442 +Vehicle ID: 3, Event Type: start, Timestamp: 175.3237013172593 +Vehicle ID: 3, Event Type: end, Timestamp: 175.3237013172593 +Vehicle ID: 3, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 3, Event Type: end, Timestamp: 175.4411026334334 +Vehicle ID: 3, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 3, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 3, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 3, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 3, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 3, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 3, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 3, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 3, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 3, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 3, Event Type: start, Timestamp: 178.47520739359268 +Vehicle ID: 3, Event Type: start, Timestamp: 178.68148692209923 +Vehicle ID: 3, Event Type: start, Timestamp: 178.6939408971703 +Vehicle ID: 3, Event Type: start, Timestamp: 178.72320629361158 +Vehicle ID: 3, Event Type: start, Timestamp: 178.72755865665314 +Vehicle ID: 3, Event Type: start, Timestamp: 178.7290960024437 +Vehicle ID: 3, Event Type: start, Timestamp: 178.7826853181713 +Vehicle ID: 3, Event Type: start, Timestamp: 178.79615823210023 +Vehicle ID: 3, Event Type: start, Timestamp: 178.80013180768074 +Vehicle ID: 3, Event Type: start, Timestamp: 178.86685199903326 +Vehicle ID: 3, Event Type: start, Timestamp: 181.63945737290967 +Vehicle ID: 3, Event Type: start, Timestamp: 181.86762744395367 +Vehicle ID: 3, Event Type: start, Timestamp: 181.87424231089636 +Vehicle ID: 3, Event Type: start, Timestamp: 181.9748502225374 +Vehicle ID: 3, Event Type: start, Timestamp: 182.0461712533577 +Vehicle ID: 3, Event Type: start, Timestamp: 182.1164714100666 +Vehicle ID: 3, Event Type: start, Timestamp: 182.12048985610326 +Vehicle ID: 3, Event Type: start, Timestamp: 182.14896821151981 +Vehicle ID: 3, Event Type: start, Timestamp: 182.16672964417788 +Vehicle ID: 3, Event Type: start, Timestamp: 182.19787725508147 +Vehicle ID: 3, Event Type: start, Timestamp: 184.82132652817916 +Vehicle ID: 3, Event Type: start, Timestamp: 185.0147257779154 +Vehicle ID: 3, Event Type: start, Timestamp: 185.2259101182826 +Vehicle ID: 3, Event Type: start, Timestamp: 185.24099632459826 +Vehicle ID: 3, Event Type: start, Timestamp: 185.26257275934168 +Vehicle ID: 3, Event Type: start, Timestamp: 185.3375046621233 +Vehicle ID: 3, Event Type: start, Timestamp: 185.3745732277629 +Vehicle ID: 3, Event Type: start, Timestamp: 185.39869732482578 +Vehicle ID: 3, Event Type: start, Timestamp: 185.49165765897274 +Vehicle ID: 3, Event Type: start, Timestamp: 185.72243038742434 +Vehicle ID: 3, Event Type: start, Timestamp: 189.0 +Vehicle ID: 3, Event Type: start, Timestamp: 189.0 +Vehicle ID: 3, Event Type: start, Timestamp: 189.0 +Vehicle ID: 3, Event Type: start, Timestamp: 189.0 +Vehicle ID: 3, Event Type: start, Timestamp: 189.0 +Vehicle ID: 3, Event Type: start, Timestamp: 189.0 +Vehicle ID: 3, Event Type: start, Timestamp: 189.0 +Vehicle ID: 3, Event Type: start, Timestamp: 189.0 +Vehicle ID: 3, Event Type: start, Timestamp: 189.0 +Vehicle ID: 3, Event Type: start, Timestamp: 189.0 +Vehicle ID: 3, Event Type: start, Timestamp: 192.17569842504352 +Vehicle ID: 3, Event Type: start, Timestamp: 192.18451207318148 +Vehicle ID: 3, Event Type: start, Timestamp: 192.22344159900777 +Vehicle ID: 3, Event Type: start, Timestamp: 192.2248438703888 +Vehicle ID: 3, Event Type: start, Timestamp: 192.27714602822522 +Vehicle ID: 3, Event Type: start, Timestamp: 192.27850546087694 +Vehicle ID: 3, Event Type: start, Timestamp: 192.28075809350048 +Vehicle ID: 3, Event Type: start, Timestamp: 192.34789020015816 +Vehicle ID: 3, Event Type: start, Timestamp: 192.47401993578748 +Vehicle ID: 3, Event Type: start, Timestamp: 192.66460415143888 +Vehicle ID: 3, Event Type: start, Timestamp: 195.34871530647473 +Vehicle ID: 3, Event Type: start, Timestamp: 195.4798567956318 +Vehicle ID: 3, Event Type: start, Timestamp: 195.48042525435972 +Vehicle ID: 3, Event Type: start, Timestamp: 195.51601770427004 +Vehicle ID: 3, Event Type: start, Timestamp: 195.6005264436997 +Vehicle ID: 3, Event Type: start, Timestamp: 195.60804404983506 +Vehicle ID: 3, Event Type: start, Timestamp: 195.61334492658108 +Vehicle ID: 3, Event Type: start, Timestamp: 195.70205019974003 +Vehicle ID: 3, Event Type: start, Timestamp: 195.7698302218526 +Vehicle ID: 3, Event Type: start, Timestamp: 196.15976868045928 +Vehicle ID: 3, Event Type: start, Timestamp: 198.4944792481381 +Vehicle ID: 3, Event Type: start, Timestamp: 198.6886543738456 +Vehicle ID: 3, Event Type: start, Timestamp: 198.72001145840426 +Vehicle ID: 3, Event Type: start, Timestamp: 198.7743750841712 +Vehicle ID: 3, Event Type: start, Timestamp: 198.80736335340356 +Vehicle ID: 3, Event Type: start, Timestamp: 198.81934435959153 +Vehicle ID: 3, Event Type: start, Timestamp: 198.89323757439922 +Vehicle ID: 3, Event Type: start, Timestamp: 199.0866934621164 +Vehicle ID: 3, Event Type: start, Timestamp: 199.22588225804574 +Vehicle ID: 3, Event Type: start, Timestamp: 199.30019454639935 +Vehicle ID: 5, Event Type: start, Timestamp: 230.29827341829468 +Vehicle ID: 5, Event Type: end, Timestamp: 230.29827341829468 +Vehicle ID: 5, Event Type: start, Timestamp: 230.3627720612013 +Vehicle ID: 5, Event Type: end, Timestamp: 230.3627720612013 +Vehicle ID: 5, Event Type: start, Timestamp: 230.3838152252046 +Vehicle ID: 5, Event Type: end, Timestamp: 230.3838152252046 +Vehicle ID: 5, Event Type: start, Timestamp: 230.44777625767 +Vehicle ID: 5, Event Type: end, Timestamp: 230.44777625767 +Vehicle ID: 5, Event Type: start, Timestamp: 230.46343203485594 +Vehicle ID: 5, Event Type: end, Timestamp: 230.46343203485594 +Vehicle ID: 5, Event Type: start, Timestamp: 230.48355884791818 +Vehicle ID: 5, Event Type: end, Timestamp: 230.48355884791818 +Vehicle ID: 5, Event Type: start, Timestamp: 230.50049767669492 +Vehicle ID: 5, Event Type: end, Timestamp: 230.50049767669492 +Vehicle ID: 5, Event Type: start, Timestamp: 230.51672058869067 +Vehicle ID: 5, Event Type: end, Timestamp: 230.51672058869067 +Vehicle ID: 5, Event Type: start, Timestamp: 230.54979692970642 +Vehicle ID: 5, Event Type: end, Timestamp: 230.54979692970642 +Vehicle ID: 5, Event Type: start, Timestamp: 230.56233060560825 +Vehicle ID: 5, Event Type: end, Timestamp: 230.56233060560825 +Vehicle ID: 5, Event Type: start, Timestamp: 230.56683743927576 +Vehicle ID: 5, Event Type: end, Timestamp: 230.56683743927576 +Vehicle ID: 5, Event Type: start, Timestamp: 230.59993390519878 +Vehicle ID: 5, Event Type: end, Timestamp: 230.59993390519878 +Vehicle ID: 5, Event Type: start, Timestamp: 230.61716546147804 +Vehicle ID: 5, Event Type: end, Timestamp: 230.61716546147804 +Vehicle ID: 5, Event Type: start, Timestamp: 230.6312915595422 +Vehicle ID: 5, Event Type: end, Timestamp: 230.6312915595422 +Vehicle ID: 5, Event Type: start, Timestamp: 230.63830987544017 +Vehicle ID: 5, Event Type: end, Timestamp: 230.63830987544017 +Vehicle ID: 5, Event Type: start, Timestamp: 230.64494056387875 +Vehicle ID: 5, Event Type: end, Timestamp: 230.64494056387875 +Vehicle ID: 5, Event Type: start, Timestamp: 230.67691745438796 +Vehicle ID: 5, Event Type: end, Timestamp: 230.67691745438796 +Vehicle ID: 5, Event Type: start, Timestamp: 230.69615062963106 +Vehicle ID: 5, Event Type: end, Timestamp: 230.69615062963106 +Vehicle ID: 5, Event Type: start, Timestamp: 230.69616965015607 +Vehicle ID: 5, Event Type: end, Timestamp: 230.69616965015607 +Vehicle ID: 5, Event Type: start, Timestamp: 230.70195429847135 +Vehicle ID: 5, Event Type: end, Timestamp: 230.70195429847135 +Vehicle ID: 5, Event Type: start, Timestamp: 230.72189492049787 +Vehicle ID: 5, Event Type: end, Timestamp: 230.72189492049787 +Vehicle ID: 5, Event Type: start, Timestamp: 230.73387443926376 +Vehicle ID: 5, Event Type: end, Timestamp: 230.73387443926376 +Vehicle ID: 5, Event Type: start, Timestamp: 230.7374823789395 +Vehicle ID: 5, Event Type: end, Timestamp: 230.7374823789395 +Vehicle ID: 5, Event Type: start, Timestamp: 230.7384914783118 +Vehicle ID: 5, Event Type: end, Timestamp: 230.7384914783118 +Vehicle ID: 5, Event Type: start, Timestamp: 230.74636761021665 +Vehicle ID: 5, Event Type: end, Timestamp: 230.74636761021665 +Vehicle ID: 5, Event Type: start, Timestamp: 230.7495708880515 +Vehicle ID: 5, Event Type: end, Timestamp: 230.7495708880515 +Vehicle ID: 5, Event Type: start, Timestamp: 230.75011446791038 +Vehicle ID: 5, Event Type: end, Timestamp: 230.75011446791038 +Vehicle ID: 5, Event Type: start, Timestamp: 230.75199221452607 +Vehicle ID: 5, Event Type: end, Timestamp: 230.75199221452607 +Vehicle ID: 5, Event Type: start, Timestamp: 230.75237981361724 +Vehicle ID: 5, Event Type: end, Timestamp: 230.75237981361724 +Vehicle ID: 5, Event Type: start, Timestamp: 230.76638232213645 +Vehicle ID: 5, Event Type: end, Timestamp: 230.76638232213645 +Vehicle ID: 5, Event Type: start, Timestamp: 230.77192270252183 +Vehicle ID: 5, Event Type: end, Timestamp: 230.77192270252183 +Vehicle ID: 5, Event Type: start, Timestamp: 230.78130464451763 +Vehicle ID: 5, Event Type: end, Timestamp: 230.78130464451763 +Vehicle ID: 5, Event Type: start, Timestamp: 230.78691723670954 +Vehicle ID: 5, Event Type: end, Timestamp: 230.78691723670954 +Vehicle ID: 5, Event Type: start, Timestamp: 230.78874165073725 +Vehicle ID: 5, Event Type: end, Timestamp: 230.78874165073725 +Vehicle ID: 5, Event Type: start, Timestamp: 230.79306011045819 +Vehicle ID: 5, Event Type: end, Timestamp: 230.79306011045819 +Vehicle ID: 5, Event Type: start, Timestamp: 230.79685924887468 +Vehicle ID: 5, Event Type: end, Timestamp: 230.79685924887468 +Vehicle ID: 5, Event Type: start, Timestamp: 230.80491311865396 +Vehicle ID: 5, Event Type: end, Timestamp: 230.80491311865396 +Vehicle ID: 5, Event Type: start, Timestamp: 230.80862898781328 +Vehicle ID: 5, Event Type: end, Timestamp: 230.80862898781328 +Vehicle ID: 5, Event Type: start, Timestamp: 230.81096809279114 +Vehicle ID: 5, Event Type: end, Timestamp: 230.81096809279114 +Vehicle ID: 5, Event Type: start, Timestamp: 230.8176327668204 +Vehicle ID: 5, Event Type: end, Timestamp: 230.8176327668204 +Vehicle ID: 5, Event Type: start, Timestamp: 230.83437229401193 +Vehicle ID: 5, Event Type: end, Timestamp: 230.83437229401193 +Vehicle ID: 5, Event Type: start, Timestamp: 230.83489521247532 +Vehicle ID: 5, Event Type: end, Timestamp: 230.83489521247532 +Vehicle ID: 5, Event Type: start, Timestamp: 230.8364343329917 +Vehicle ID: 5, Event Type: end, Timestamp: 230.8364343329917 +Vehicle ID: 5, Event Type: start, Timestamp: 230.84429061831597 +Vehicle ID: 5, Event Type: end, Timestamp: 230.84429061831597 +Vehicle ID: 5, Event Type: start, Timestamp: 230.84873827051655 +Vehicle ID: 5, Event Type: end, Timestamp: 230.84873827051655 +Vehicle ID: 5, Event Type: start, Timestamp: 230.8517973575957 +Vehicle ID: 5, Event Type: end, Timestamp: 230.8517973575957 +Vehicle ID: 5, Event Type: start, Timestamp: 230.85356491182986 +Vehicle ID: 5, Event Type: end, Timestamp: 230.85356491182986 +Vehicle ID: 5, Event Type: start, Timestamp: 230.85731259237176 +Vehicle ID: 5, Event Type: end, Timestamp: 230.85731259237176 +Vehicle ID: 5, Event Type: start, Timestamp: 230.86103790575163 +Vehicle ID: 5, Event Type: end, Timestamp: 230.86103790575163 +Vehicle ID: 5, Event Type: start, Timestamp: 230.8653598112958 +Vehicle ID: 5, Event Type: end, Timestamp: 230.8653598112958 +Vehicle ID: 5, Event Type: start, Timestamp: 230.87325812474393 +Vehicle ID: 5, Event Type: end, Timestamp: 230.87325812474393 +Vehicle ID: 5, Event Type: start, Timestamp: 230.87502604108292 +Vehicle ID: 5, Event Type: end, Timestamp: 230.87502604108292 +Vehicle ID: 5, Event Type: start, Timestamp: 230.9043716159478 +Vehicle ID: 5, Event Type: end, Timestamp: 230.9043716159478 +Vehicle ID: 5, Event Type: start, Timestamp: 230.9065061391592 +Vehicle ID: 5, Event Type: end, Timestamp: 230.9065061391592 +Vehicle ID: 5, Event Type: start, Timestamp: 230.91655853895153 +Vehicle ID: 5, Event Type: end, Timestamp: 230.91655853895153 +Vehicle ID: 5, Event Type: start, Timestamp: 230.9397275368141 +Vehicle ID: 5, Event Type: end, Timestamp: 230.9397275368141 +Vehicle ID: 5, Event Type: start, Timestamp: 230.95743987083137 +Vehicle ID: 5, Event Type: end, Timestamp: 230.95743987083137 +Vehicle ID: 5, Event Type: start, Timestamp: 230.96056895231618 +Vehicle ID: 5, Event Type: end, Timestamp: 230.96056895231618 +Vehicle ID: 5, Event Type: start, Timestamp: 230.96748430241377 +Vehicle ID: 5, Event Type: end, Timestamp: 230.96748430241377 +Vehicle ID: 5, Event Type: start, Timestamp: 230.9699240161956 +Vehicle ID: 5, Event Type: end, Timestamp: 230.9699240161956 +Vehicle ID: 5, Event Type: start, Timestamp: 230.98043458631668 +Vehicle ID: 5, Event Type: end, Timestamp: 230.98043458631668 +Vehicle ID: 5, Event Type: start, Timestamp: 230.98372432386068 +Vehicle ID: 5, Event Type: end, Timestamp: 230.98372432386068 +Vehicle ID: 5, Event Type: start, Timestamp: 230.99912392839255 +Vehicle ID: 5, Event Type: end, Timestamp: 230.99912392839255 +Vehicle ID: 5, Event Type: start, Timestamp: 231.02062434099463 +Vehicle ID: 5, Event Type: end, Timestamp: 231.02062434099463 +Vehicle ID: 5, Event Type: start, Timestamp: 231.02168394757356 +Vehicle ID: 5, Event Type: end, Timestamp: 231.02168394757356 +Vehicle ID: 5, Event Type: start, Timestamp: 231.02297707925493 +Vehicle ID: 5, Event Type: end, Timestamp: 231.02297707925493 +Vehicle ID: 5, Event Type: start, Timestamp: 231.02951999264218 +Vehicle ID: 5, Event Type: end, Timestamp: 231.02951999264218 +Vehicle ID: 5, Event Type: start, Timestamp: 231.0477077634327 +Vehicle ID: 5, Event Type: end, Timestamp: 231.0477077634327 +Vehicle ID: 5, Event Type: start, Timestamp: 231.04908102780286 +Vehicle ID: 5, Event Type: end, Timestamp: 231.04908102780286 +Vehicle ID: 5, Event Type: start, Timestamp: 231.05090496818704 +Vehicle ID: 5, Event Type: end, Timestamp: 231.05090496818704 +Vehicle ID: 5, Event Type: start, Timestamp: 231.05542786513382 +Vehicle ID: 5, Event Type: end, Timestamp: 231.05542786513382 +Vehicle ID: 5, Event Type: start, Timestamp: 231.05834930585786 +Vehicle ID: 5, Event Type: end, Timestamp: 231.05834930585786 +Vehicle ID: 5, Event Type: start, Timestamp: 231.0885893751893 +Vehicle ID: 5, Event Type: end, Timestamp: 231.0885893751893 +Vehicle ID: 5, Event Type: start, Timestamp: 231.09888188065239 +Vehicle ID: 5, Event Type: end, Timestamp: 231.09888188065239 +Vehicle ID: 5, Event Type: start, Timestamp: 231.10971628491177 +Vehicle ID: 5, Event Type: end, Timestamp: 231.10971628491177 +Vehicle ID: 5, Event Type: start, Timestamp: 231.1183114799994 +Vehicle ID: 5, Event Type: end, Timestamp: 231.1183114799994 +Vehicle ID: 5, Event Type: start, Timestamp: 231.12156369651075 +Vehicle ID: 5, Event Type: end, Timestamp: 231.12156369651075 +Vehicle ID: 5, Event Type: start, Timestamp: 231.13122812407303 +Vehicle ID: 5, Event Type: end, Timestamp: 231.13122812407303 +Vehicle ID: 5, Event Type: start, Timestamp: 231.151439515394 +Vehicle ID: 5, Event Type: end, Timestamp: 231.151439515394 +Vehicle ID: 5, Event Type: start, Timestamp: 231.18571286346827 +Vehicle ID: 5, Event Type: end, Timestamp: 231.18571286346827 +Vehicle ID: 5, Event Type: start, Timestamp: 231.20475027148282 +Vehicle ID: 5, Event Type: end, Timestamp: 231.20475027148282 +Vehicle ID: 5, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 5, Event Type: end, Timestamp: 231.3591394944944 +Vehicle ID: 5, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 5, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 5, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 5, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 5, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 5, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 5, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 5, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 5, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 5, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 5, Event Type: start, Timestamp: 234.61218307066508 +Vehicle ID: 5, Event Type: start, Timestamp: 234.67229868623448 +Vehicle ID: 5, Event Type: start, Timestamp: 234.71198602599108 +Vehicle ID: 5, Event Type: start, Timestamp: 234.7739666252984 +Vehicle ID: 5, Event Type: start, Timestamp: 234.82162317422572 +Vehicle ID: 5, Event Type: start, Timestamp: 234.82521038070985 +Vehicle ID: 5, Event Type: start, Timestamp: 234.90299888353834 +Vehicle ID: 5, Event Type: start, Timestamp: 234.9121686386596 +Vehicle ID: 5, Event Type: start, Timestamp: 234.9324691413231 +Vehicle ID: 5, Event Type: start, Timestamp: 234.9545245459871 +Vehicle ID: 5, Event Type: start, Timestamp: 237.9683651705698 +Vehicle ID: 5, Event Type: start, Timestamp: 238.00308201192564 +Vehicle ID: 5, Event Type: start, Timestamp: 238.19960775787948 +Vehicle ID: 5, Event Type: start, Timestamp: 238.24592430027332 +Vehicle ID: 5, Event Type: start, Timestamp: 238.25322138800908 +Vehicle ID: 5, Event Type: start, Timestamp: 238.27316178998237 +Vehicle ID: 5, Event Type: start, Timestamp: 238.31180381679974 +Vehicle ID: 5, Event Type: start, Timestamp: 238.3248004978933 +Vehicle ID: 5, Event Type: start, Timestamp: 238.35499460022052 +Vehicle ID: 5, Event Type: start, Timestamp: 238.3899274529902 +Vehicle ID: 5, Event Type: start, Timestamp: 241.11483805899704 +Vehicle ID: 5, Event Type: start, Timestamp: 241.23091321848335 +Vehicle ID: 5, Event Type: start, Timestamp: 241.3102283643809 +Vehicle ID: 5, Event Type: start, Timestamp: 241.3964077184347 +Vehicle ID: 5, Event Type: start, Timestamp: 241.41760834530984 +Vehicle ID: 5, Event Type: start, Timestamp: 241.49626324128397 +Vehicle ID: 5, Event Type: start, Timestamp: 241.62479834886182 +Vehicle ID: 5, Event Type: start, Timestamp: 241.67246604237718 +Vehicle ID: 5, Event Type: start, Timestamp: 241.74506764663317 +Vehicle ID: 5, Event Type: start, Timestamp: 241.85210959118754 +Vehicle ID: 5, Event Type: start, Timestamp: 252.0 +Vehicle ID: 5, Event Type: start, Timestamp: 252.0 +Vehicle ID: 5, Event Type: start, Timestamp: 252.0 +Vehicle ID: 5, Event Type: start, Timestamp: 252.0 +Vehicle ID: 5, Event Type: start, Timestamp: 252.0 +Vehicle ID: 5, Event Type: start, Timestamp: 252.0 +Vehicle ID: 5, Event Type: start, Timestamp: 252.0 +Vehicle ID: 5, Event Type: start, Timestamp: 252.0 +Vehicle ID: 5, Event Type: start, Timestamp: 252.0 +Vehicle ID: 5, Event Type: start, Timestamp: 252.0 +Vehicle ID: 5, Event Type: start, Timestamp: 255.14364487301842 +Vehicle ID: 5, Event Type: start, Timestamp: 255.20786520141553 +Vehicle ID: 5, Event Type: start, Timestamp: 255.37572530621298 +Vehicle ID: 5, Event Type: start, Timestamp: 255.38354956167169 +Vehicle ID: 5, Event Type: start, Timestamp: 255.39271450878184 +Vehicle ID: 5, Event Type: start, Timestamp: 255.3928610831799 +Vehicle ID: 5, Event Type: start, Timestamp: 255.407105033464 +Vehicle ID: 5, Event Type: start, Timestamp: 255.53182505471946 +Vehicle ID: 5, Event Type: start, Timestamp: 255.5340898996662 +Vehicle ID: 5, Event Type: start, Timestamp: 255.56410027431457 +Vehicle ID: 5, Event Type: start, Timestamp: 258.40834531216285 +Vehicle ID: 5, Event Type: start, Timestamp: 258.5573203104712 +Vehicle ID: 5, Event Type: start, Timestamp: 258.6597137513603 +Vehicle ID: 5, Event Type: start, Timestamp: 258.7120840835402 +Vehicle ID: 5, Event Type: start, Timestamp: 258.7283470213785 +Vehicle ID: 5, Event Type: start, Timestamp: 258.73803618034987 +Vehicle ID: 5, Event Type: start, Timestamp: 258.7912224922983 +Vehicle ID: 5, Event Type: start, Timestamp: 258.88693924330653 +Vehicle ID: 5, Event Type: start, Timestamp: 258.894949172084 +Vehicle ID: 5, Event Type: start, Timestamp: 259.0393880252764 +Vehicle ID: 5, Event Type: start, Timestamp: 261.7071679945645 +Vehicle ID: 5, Event Type: start, Timestamp: 261.9032367940239 +Vehicle ID: 5, Event Type: start, Timestamp: 261.93705568679354 +Vehicle ID: 5, Event Type: start, Timestamp: 262.00795549096495 +Vehicle ID: 5, Event Type: start, Timestamp: 262.04172896769944 +Vehicle ID: 5, Event Type: start, Timestamp: 262.0840237582532 +Vehicle ID: 5, Event Type: start, Timestamp: 262.16983331439457 +Vehicle ID: 5, Event Type: start, Timestamp: 262.29889142823475 +Vehicle ID: 5, Event Type: start, Timestamp: 262.3984151124415 +Vehicle ID: 5, Event Type: start, Timestamp: 262.5136266134138 +Vehicle ID: 7, Event Type: start, Timestamp: 286.2007299023512 +Vehicle ID: 7, Event Type: end, Timestamp: 286.2007299023512 +Vehicle ID: 7, Event Type: start, Timestamp: 286.4232374163958 +Vehicle ID: 7, Event Type: end, Timestamp: 286.4232374163958 +Vehicle ID: 7, Event Type: start, Timestamp: 286.47450653944765 +Vehicle ID: 7, Event Type: end, Timestamp: 286.47450653944765 +Vehicle ID: 7, Event Type: start, Timestamp: 286.5413266066375 +Vehicle ID: 7, Event Type: end, Timestamp: 286.5413266066375 +Vehicle ID: 7, Event Type: start, Timestamp: 286.55454676175464 +Vehicle ID: 7, Event Type: end, Timestamp: 286.55454676175464 +Vehicle ID: 7, Event Type: start, Timestamp: 286.56513020087 +Vehicle ID: 7, Event Type: end, Timestamp: 286.56513020087 +Vehicle ID: 7, Event Type: start, Timestamp: 286.5664260471249 +Vehicle ID: 7, Event Type: end, Timestamp: 286.5664260471249 +Vehicle ID: 7, Event Type: start, Timestamp: 286.56807285405046 +Vehicle ID: 7, Event Type: end, Timestamp: 286.56807285405046 +Vehicle ID: 7, Event Type: start, Timestamp: 286.59028084227765 +Vehicle ID: 7, Event Type: end, Timestamp: 286.59028084227765 +Vehicle ID: 7, Event Type: start, Timestamp: 286.5905667099212 +Vehicle ID: 7, Event Type: end, Timestamp: 286.5905667099212 +Vehicle ID: 7, Event Type: start, Timestamp: 286.59434786852097 +Vehicle ID: 7, Event Type: end, Timestamp: 286.59434786852097 +Vehicle ID: 7, Event Type: start, Timestamp: 286.6088855624448 +Vehicle ID: 7, Event Type: end, Timestamp: 286.6088855624448 +Vehicle ID: 7, Event Type: start, Timestamp: 286.6318637323849 +Vehicle ID: 7, Event Type: end, Timestamp: 286.6318637323849 +Vehicle ID: 7, Event Type: start, Timestamp: 286.6347638583296 +Vehicle ID: 7, Event Type: end, Timestamp: 286.6347638583296 +Vehicle ID: 7, Event Type: start, Timestamp: 286.6365903362624 +Vehicle ID: 7, Event Type: end, Timestamp: 286.6365903362624 +Vehicle ID: 7, Event Type: start, Timestamp: 286.6418816878856 +Vehicle ID: 7, Event Type: end, Timestamp: 286.6418816878856 +Vehicle ID: 7, Event Type: start, Timestamp: 286.66918871391323 +Vehicle ID: 7, Event Type: end, Timestamp: 286.66918871391323 +Vehicle ID: 7, Event Type: start, Timestamp: 286.678399442593 +Vehicle ID: 7, Event Type: end, Timestamp: 286.678399442593 +Vehicle ID: 7, Event Type: start, Timestamp: 286.67961925128003 +Vehicle ID: 7, Event Type: end, Timestamp: 286.67961925128003 +Vehicle ID: 7, Event Type: start, Timestamp: 286.68548481273615 +Vehicle ID: 7, Event Type: end, Timestamp: 286.68548481273615 +Vehicle ID: 7, Event Type: start, Timestamp: 286.69500582353805 +Vehicle ID: 7, Event Type: end, Timestamp: 286.69500582353805 +Vehicle ID: 7, Event Type: start, Timestamp: 286.70151193377546 +Vehicle ID: 7, Event Type: end, Timestamp: 286.70151193377546 +Vehicle ID: 7, Event Type: start, Timestamp: 286.7093098784749 +Vehicle ID: 7, Event Type: end, Timestamp: 286.7093098784749 +Vehicle ID: 7, Event Type: start, Timestamp: 286.7139721789099 +Vehicle ID: 7, Event Type: end, Timestamp: 286.7139721789099 +Vehicle ID: 7, Event Type: start, Timestamp: 286.7211064891278 +Vehicle ID: 7, Event Type: end, Timestamp: 286.7211064891278 +Vehicle ID: 7, Event Type: start, Timestamp: 286.74214481175096 +Vehicle ID: 7, Event Type: end, Timestamp: 286.74214481175096 +Vehicle ID: 7, Event Type: start, Timestamp: 286.74530329270624 +Vehicle ID: 7, Event Type: end, Timestamp: 286.74530329270624 +Vehicle ID: 7, Event Type: start, Timestamp: 286.7625408378355 +Vehicle ID: 7, Event Type: end, Timestamp: 286.7625408378355 +Vehicle ID: 7, Event Type: start, Timestamp: 286.76735353756794 +Vehicle ID: 7, Event Type: end, Timestamp: 286.76735353756794 +Vehicle ID: 7, Event Type: start, Timestamp: 286.7677633834523 +Vehicle ID: 7, Event Type: end, Timestamp: 286.7677633834523 +Vehicle ID: 7, Event Type: start, Timestamp: 286.7751578549607 +Vehicle ID: 7, Event Type: end, Timestamp: 286.7751578549607 +Vehicle ID: 7, Event Type: start, Timestamp: 286.77769684760347 +Vehicle ID: 7, Event Type: end, Timestamp: 286.77769684760347 +Vehicle ID: 7, Event Type: start, Timestamp: 286.7824887935317 +Vehicle ID: 7, Event Type: end, Timestamp: 286.7824887935317 +Vehicle ID: 7, Event Type: start, Timestamp: 286.78788020759004 +Vehicle ID: 7, Event Type: end, Timestamp: 286.78788020759004 +Vehicle ID: 7, Event Type: start, Timestamp: 286.8104026209856 +Vehicle ID: 7, Event Type: end, Timestamp: 286.8104026209856 +Vehicle ID: 7, Event Type: start, Timestamp: 286.8134967766926 +Vehicle ID: 7, Event Type: end, Timestamp: 286.8134967766926 +Vehicle ID: 7, Event Type: start, Timestamp: 286.81898922399404 +Vehicle ID: 7, Event Type: end, Timestamp: 286.81898922399404 +Vehicle ID: 7, Event Type: start, Timestamp: 286.82003717488726 +Vehicle ID: 7, Event Type: end, Timestamp: 286.82003717488726 +Vehicle ID: 7, Event Type: start, Timestamp: 286.8335876382509 +Vehicle ID: 7, Event Type: end, Timestamp: 286.8335876382509 +Vehicle ID: 7, Event Type: start, Timestamp: 286.8340642124405 +Vehicle ID: 7, Event Type: end, Timestamp: 286.8340642124405 +Vehicle ID: 7, Event Type: start, Timestamp: 286.84971497403626 +Vehicle ID: 7, Event Type: end, Timestamp: 286.84971497403626 +Vehicle ID: 7, Event Type: start, Timestamp: 286.8730519454271 +Vehicle ID: 7, Event Type: end, Timestamp: 286.8730519454271 +Vehicle ID: 7, Event Type: start, Timestamp: 286.882970415837 +Vehicle ID: 7, Event Type: end, Timestamp: 286.882970415837 +Vehicle ID: 7, Event Type: start, Timestamp: 286.90260886243277 +Vehicle ID: 7, Event Type: end, Timestamp: 286.90260886243277 +Vehicle ID: 7, Event Type: start, Timestamp: 286.9036403877682 +Vehicle ID: 7, Event Type: end, Timestamp: 286.9036403877682 +Vehicle ID: 7, Event Type: start, Timestamp: 286.9173545587327 +Vehicle ID: 7, Event Type: end, Timestamp: 286.9173545587327 +Vehicle ID: 7, Event Type: start, Timestamp: 286.9290661796227 +Vehicle ID: 7, Event Type: end, Timestamp: 286.9290661796227 +Vehicle ID: 7, Event Type: start, Timestamp: 286.93053160725884 +Vehicle ID: 7, Event Type: end, Timestamp: 286.93053160725884 +Vehicle ID: 7, Event Type: start, Timestamp: 286.93578531654833 +Vehicle ID: 7, Event Type: end, Timestamp: 286.93578531654833 +Vehicle ID: 7, Event Type: start, Timestamp: 286.9408800831774 +Vehicle ID: 7, Event Type: end, Timestamp: 286.9408800831774 +Vehicle ID: 7, Event Type: start, Timestamp: 286.94693068573525 +Vehicle ID: 7, Event Type: end, Timestamp: 286.94693068573525 +Vehicle ID: 7, Event Type: start, Timestamp: 286.9471015160693 +Vehicle ID: 7, Event Type: end, Timestamp: 286.9471015160693 +Vehicle ID: 7, Event Type: start, Timestamp: 286.95430172932697 +Vehicle ID: 7, Event Type: end, Timestamp: 286.95430172932697 +Vehicle ID: 7, Event Type: start, Timestamp: 286.9618933196812 +Vehicle ID: 7, Event Type: end, Timestamp: 286.9618933196812 +Vehicle ID: 7, Event Type: start, Timestamp: 286.96440885531234 +Vehicle ID: 7, Event Type: end, Timestamp: 286.96440885531234 +Vehicle ID: 7, Event Type: start, Timestamp: 286.99421150902276 +Vehicle ID: 7, Event Type: end, Timestamp: 286.99421150902276 +Vehicle ID: 7, Event Type: start, Timestamp: 287.0012694314847 +Vehicle ID: 7, Event Type: end, Timestamp: 287.0012694314847 +Vehicle ID: 7, Event Type: start, Timestamp: 287.0042428226206 +Vehicle ID: 7, Event Type: end, Timestamp: 287.0042428226206 +Vehicle ID: 7, Event Type: start, Timestamp: 287.0065209935474 +Vehicle ID: 7, Event Type: end, Timestamp: 287.0065209935474 +Vehicle ID: 7, Event Type: start, Timestamp: 287.01575209040897 +Vehicle ID: 7, Event Type: end, Timestamp: 287.01575209040897 +Vehicle ID: 7, Event Type: start, Timestamp: 287.0404315070929 +Vehicle ID: 7, Event Type: end, Timestamp: 287.0404315070929 +Vehicle ID: 7, Event Type: start, Timestamp: 287.04744418288743 +Vehicle ID: 7, Event Type: end, Timestamp: 287.04744418288743 +Vehicle ID: 7, Event Type: start, Timestamp: 287.05160423768416 +Vehicle ID: 7, Event Type: end, Timestamp: 287.05160423768416 +Vehicle ID: 7, Event Type: start, Timestamp: 287.0578229770227 +Vehicle ID: 7, Event Type: end, Timestamp: 287.0578229770227 +Vehicle ID: 7, Event Type: start, Timestamp: 287.0679626948768 +Vehicle ID: 7, Event Type: end, Timestamp: 287.0679626948768 +Vehicle ID: 7, Event Type: start, Timestamp: 287.0839596146111 +Vehicle ID: 7, Event Type: end, Timestamp: 287.0839596146111 +Vehicle ID: 7, Event Type: start, Timestamp: 287.08652180019584 +Vehicle ID: 7, Event Type: end, Timestamp: 287.08652180019584 +Vehicle ID: 7, Event Type: start, Timestamp: 287.10188848057464 +Vehicle ID: 7, Event Type: end, Timestamp: 287.10188848057464 +Vehicle ID: 7, Event Type: start, Timestamp: 287.12236778305106 +Vehicle ID: 7, Event Type: end, Timestamp: 287.12236778305106 +Vehicle ID: 7, Event Type: start, Timestamp: 287.1224176895337 +Vehicle ID: 7, Event Type: end, Timestamp: 287.1224176895337 +Vehicle ID: 7, Event Type: start, Timestamp: 287.13568787737 +Vehicle ID: 7, Event Type: end, Timestamp: 287.13568787737 +Vehicle ID: 7, Event Type: start, Timestamp: 287.1416992047933 +Vehicle ID: 7, Event Type: end, Timestamp: 287.1416992047933 +Vehicle ID: 7, Event Type: start, Timestamp: 287.1454186894738 +Vehicle ID: 7, Event Type: end, Timestamp: 287.1454186894738 +Vehicle ID: 7, Event Type: start, Timestamp: 287.1474840465442 +Vehicle ID: 7, Event Type: end, Timestamp: 287.1474840465442 +Vehicle ID: 7, Event Type: start, Timestamp: 287.1878628810483 +Vehicle ID: 7, Event Type: end, Timestamp: 287.1878628810483 +Vehicle ID: 7, Event Type: start, Timestamp: 287.2168587350141 +Vehicle ID: 7, Event Type: end, Timestamp: 287.2168587350141 +Vehicle ID: 7, Event Type: start, Timestamp: 287.251681557477 +Vehicle ID: 7, Event Type: end, Timestamp: 287.251681557477 +Vehicle ID: 7, Event Type: start, Timestamp: 287.26293593438953 +Vehicle ID: 7, Event Type: end, Timestamp: 287.26293593438953 +Vehicle ID: 7, Event Type: start, Timestamp: 287.28111765724265 +Vehicle ID: 7, Event Type: end, Timestamp: 287.28111765724265 +Vehicle ID: 7, Event Type: start, Timestamp: 287.33794795182365 +Vehicle ID: 7, Event Type: end, Timestamp: 287.33794795182365 +Vehicle ID: 7, Event Type: start, Timestamp: 287.38528557172106 +Vehicle ID: 7, Event Type: end, Timestamp: 287.38528557172106 +Vehicle ID: 7, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 7, Event Type: end, Timestamp: 287.50261787947136 +Vehicle ID: 7, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 7, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 7, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 7, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 7, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 7, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 7, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 7, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 7, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 7, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 7, Event Type: start, Timestamp: 290.60370946507334 +Vehicle ID: 7, Event Type: start, Timestamp: 290.66599483165544 +Vehicle ID: 7, Event Type: start, Timestamp: 290.7684586000132 +Vehicle ID: 7, Event Type: start, Timestamp: 290.7852871505513 +Vehicle ID: 7, Event Type: start, Timestamp: 290.831045309499 +Vehicle ID: 7, Event Type: start, Timestamp: 290.8527123015554 +Vehicle ID: 7, Event Type: start, Timestamp: 290.88401773434776 +Vehicle ID: 7, Event Type: start, Timestamp: 290.940419281618 +Vehicle ID: 7, Event Type: start, Timestamp: 291.00749746822584 +Vehicle ID: 7, Event Type: start, Timestamp: 291.0345661800837 +Vehicle ID: 7, Event Type: start, Timestamp: 293.6498581680012 +Vehicle ID: 7, Event Type: start, Timestamp: 294.00238136868563 +Vehicle ID: 7, Event Type: start, Timestamp: 294.0221660783698 +Vehicle ID: 7, Event Type: start, Timestamp: 294.12619999137644 +Vehicle ID: 7, Event Type: start, Timestamp: 294.13646693978893 +Vehicle ID: 7, Event Type: start, Timestamp: 294.1778402409145 +Vehicle ID: 7, Event Type: start, Timestamp: 294.2608006960223 +Vehicle ID: 7, Event Type: start, Timestamp: 294.29027268915297 +Vehicle ID: 7, Event Type: start, Timestamp: 294.4791493405503 +Vehicle ID: 7, Event Type: start, Timestamp: 294.50178838027784 +Vehicle ID: 7, Event Type: start, Timestamp: 296.667852901004 +Vehicle ID: 7, Event Type: start, Timestamp: 297.25654489126526 +Vehicle ID: 7, Event Type: start, Timestamp: 297.33295070402517 +Vehicle ID: 7, Event Type: start, Timestamp: 297.48555228537975 +Vehicle ID: 7, Event Type: start, Timestamp: 297.5166872492203 +Vehicle ID: 7, Event Type: start, Timestamp: 297.5284305994755 +Vehicle ID: 7, Event Type: start, Timestamp: 297.541227686328 +Vehicle ID: 7, Event Type: start, Timestamp: 297.70265590680225 +Vehicle ID: 7, Event Type: start, Timestamp: 297.9419379307469 +Vehicle ID: 7, Event Type: start, Timestamp: 298.00130163216903 +Vehicle ID: 7, Event Type: start, Timestamp: 315.0 +Vehicle ID: 7, Event Type: start, Timestamp: 315.0 +Vehicle ID: 7, Event Type: start, Timestamp: 315.0 +Vehicle ID: 7, Event Type: start, Timestamp: 315.0 +Vehicle ID: 7, Event Type: start, Timestamp: 315.0 +Vehicle ID: 7, Event Type: start, Timestamp: 315.0 +Vehicle ID: 7, Event Type: start, Timestamp: 315.0 +Vehicle ID: 7, Event Type: start, Timestamp: 315.0 +Vehicle ID: 7, Event Type: start, Timestamp: 315.0 +Vehicle ID: 7, Event Type: start, Timestamp: 315.0 +Vehicle ID: 7, Event Type: start, Timestamp: 318.2001831930649 +Vehicle ID: 7, Event Type: start, Timestamp: 318.22535310319665 +Vehicle ID: 7, Event Type: start, Timestamp: 318.33586704387517 +Vehicle ID: 7, Event Type: start, Timestamp: 318.34210669468484 +Vehicle ID: 7, Event Type: start, Timestamp: 318.3441417534911 +Vehicle ID: 7, Event Type: start, Timestamp: 318.4118404784712 +Vehicle ID: 7, Event Type: start, Timestamp: 318.4230132187219 +Vehicle ID: 7, Event Type: start, Timestamp: 318.43704882076077 +Vehicle ID: 7, Event Type: start, Timestamp: 318.481724850623 +Vehicle ID: 7, Event Type: start, Timestamp: 318.51148689585193 +Vehicle ID: 7, Event Type: start, Timestamp: 321.6167104830314 +Vehicle ID: 7, Event Type: start, Timestamp: 321.62849107291277 +Vehicle ID: 7, Event Type: start, Timestamp: 321.6784125988842 +Vehicle ID: 7, Event Type: start, Timestamp: 321.75048222270533 +Vehicle ID: 7, Event Type: start, Timestamp: 321.75164175007177 +Vehicle ID: 7, Event Type: start, Timestamp: 321.8044266933268 +Vehicle ID: 7, Event Type: start, Timestamp: 321.864152151911 +Vehicle ID: 7, Event Type: start, Timestamp: 321.8728513590356 +Vehicle ID: 7, Event Type: start, Timestamp: 321.92841390591764 +Vehicle ID: 7, Event Type: start, Timestamp: 322.0156669374294 +Vehicle ID: 7, Event Type: start, Timestamp: 324.8246834762719 +Vehicle ID: 7, Event Type: start, Timestamp: 324.93261695691297 +Vehicle ID: 7, Event Type: start, Timestamp: 324.98339570574075 +Vehicle ID: 7, Event Type: start, Timestamp: 325.00581694201946 +Vehicle ID: 7, Event Type: start, Timestamp: 325.07039368099294 +Vehicle ID: 7, Event Type: start, Timestamp: 325.1225521753373 +Vehicle ID: 7, Event Type: start, Timestamp: 325.17919319105795 +Vehicle ID: 7, Event Type: start, Timestamp: 325.1928969561298 +Vehicle ID: 7, Event Type: start, Timestamp: 325.265980385633 +Vehicle ID: 7, Event Type: start, Timestamp: 325.39992117334685 diff --git a/hostler_work_log.txt b/hostler_work_log.txt new file mode 100644 index 00000000..c361ca4b --- /dev/null +++ b/hostler_work_log.txt @@ -0,0 +1,754 @@ +Vehicle ID: 1, Event Type: start, Timestamp: 174.2810811099409 +Vehicle ID: 1, Event Type: start, Timestamp: 174.28268979218822 +Vehicle ID: 1, Event Type: end, Timestamp: 174.28395292342123 +Vehicle ID: 1, Event Type: end, Timestamp: 174.28518690398343 +Vehicle ID: 1, Event Type: start, Timestamp: 174.47535372469952 +Vehicle ID: 1, Event Type: end, Timestamp: 174.47719203115253 +Vehicle ID: 1, Event Type: start, Timestamp: 174.4825116311807 +Vehicle ID: 1, Event Type: end, Timestamp: 174.48459639917562 +Vehicle ID: 1, Event Type: start, Timestamp: 174.4875712829535 +Vehicle ID: 1, Event Type: end, Timestamp: 174.48964836918907 +Vehicle ID: 1, Event Type: start, Timestamp: 174.5075471516836 +Vehicle ID: 1, Event Type: end, Timestamp: 174.50981155264924 +Vehicle ID: 1, Event Type: start, Timestamp: 174.58578236688152 +Vehicle ID: 1, Event Type: end, Timestamp: 174.5881869348097 +Vehicle ID: 1, Event Type: start, Timestamp: 174.60466618194823 +Vehicle ID: 1, Event Type: end, Timestamp: 174.60642090477222 +Vehicle ID: 1, Event Type: start, Timestamp: 174.610752074466 +Vehicle ID: 1, Event Type: end, Timestamp: 174.61196616456596 +Vehicle ID: 1, Event Type: start, Timestamp: 174.641496556886 +Vehicle ID: 1, Event Type: start, Timestamp: 174.6427067265711 +Vehicle ID: 1, Event Type: end, Timestamp: 174.6436638141041 +Vehicle ID: 1, Event Type: end, Timestamp: 174.6445912272691 +Vehicle ID: 1, Event Type: start, Timestamp: 174.65276278956236 +Vehicle ID: 1, Event Type: end, Timestamp: 174.65492738107739 +Vehicle ID: 1, Event Type: start, Timestamp: 174.66232655010518 +Vehicle ID: 1, Event Type: end, Timestamp: 174.664226243262 +Vehicle ID: 1, Event Type: start, Timestamp: 174.66449155538277 +Vehicle ID: 1, Event Type: end, Timestamp: 174.66691574040829 +Vehicle ID: 1, Event Type: start, Timestamp: 174.6842730369544 +Vehicle ID: 1, Event Type: end, Timestamp: 174.68628592634695 +Vehicle ID: 1, Event Type: start, Timestamp: 174.69860643256507 +Vehicle ID: 1, Event Type: end, Timestamp: 174.70033609178012 +Vehicle ID: 1, Event Type: start, Timestamp: 174.70459646071723 +Vehicle ID: 1, Event Type: end, Timestamp: 174.7068167077512 +Vehicle ID: 1, Event Type: start, Timestamp: 174.71934934758505 +Vehicle ID: 1, Event Type: end, Timestamp: 174.72082963761903 +Vehicle ID: 1, Event Type: start, Timestamp: 174.72249676964316 +Vehicle ID: 1, Event Type: start, Timestamp: 174.72451510758023 +Vehicle ID: 1, Event Type: end, Timestamp: 174.72494272929708 +Vehicle ID: 1, Event Type: end, Timestamp: 174.72682237956218 +Vehicle ID: 1, Event Type: start, Timestamp: 174.76080585800494 +Vehicle ID: 1, Event Type: start, Timestamp: 174.76208971599385 +Vehicle ID: 1, Event Type: end, Timestamp: 174.76300030780627 +Vehicle ID: 1, Event Type: end, Timestamp: 174.7648593869707 +Vehicle ID: 1, Event Type: start, Timestamp: 174.76629786586113 +Vehicle ID: 1, Event Type: end, Timestamp: 174.76947795776732 +Vehicle ID: 1, Event Type: start, Timestamp: 174.77332599605248 +Vehicle ID: 1, Event Type: end, Timestamp: 174.7749154016669 +Vehicle ID: 1, Event Type: start, Timestamp: 174.78093665609822 +Vehicle ID: 1, Event Type: end, Timestamp: 174.78291732836286 +Vehicle ID: 1, Event Type: start, Timestamp: 174.78342586803905 +Vehicle ID: 1, Event Type: end, Timestamp: 174.78558867378658 +Vehicle ID: 1, Event Type: start, Timestamp: 174.81065185790777 +Vehicle ID: 1, Event Type: end, Timestamp: 174.81369392408672 +Vehicle ID: 1, Event Type: start, Timestamp: 174.8279274940461 +Vehicle ID: 1, Event Type: start, Timestamp: 174.8304935611614 +Vehicle ID: 1, Event Type: end, Timestamp: 174.8306805090947 +Vehicle ID: 1, Event Type: end, Timestamp: 174.83196811315972 +Vehicle ID: 1, Event Type: start, Timestamp: 174.8351297346581 +Vehicle ID: 1, Event Type: end, Timestamp: 174.83811978100655 +Vehicle ID: 1, Event Type: start, Timestamp: 174.84351075974314 +Vehicle ID: 1, Event Type: start, Timestamp: 174.84447204783694 +Vehicle ID: 1, Event Type: end, Timestamp: 174.84518673661086 +Vehicle ID: 1, Event Type: end, Timestamp: 174.84750534550696 +Vehicle ID: 1, Event Type: start, Timestamp: 174.85873612140853 +Vehicle ID: 1, Event Type: end, Timestamp: 174.8605832808858 +Vehicle ID: 1, Event Type: start, Timestamp: 174.8646455304948 +Vehicle ID: 1, Event Type: end, Timestamp: 174.86606856561383 +Vehicle ID: 1, Event Type: start, Timestamp: 174.86716561487376 +Vehicle ID: 1, Event Type: end, Timestamp: 174.8686484578002 +Vehicle ID: 1, Event Type: start, Timestamp: 174.87879709722236 +Vehicle ID: 1, Event Type: end, Timestamp: 174.880404714017 +Vehicle ID: 1, Event Type: start, Timestamp: 174.88271735729327 +Vehicle ID: 1, Event Type: end, Timestamp: 174.8848710774772 +Vehicle ID: 1, Event Type: start, Timestamp: 174.8905777601963 +Vehicle ID: 1, Event Type: end, Timestamp: 174.8925428506389 +Vehicle ID: 1, Event Type: start, Timestamp: 174.89465126549422 +Vehicle ID: 1, Event Type: end, Timestamp: 174.89747580440394 +Vehicle ID: 1, Event Type: start, Timestamp: 174.90062493548228 +Vehicle ID: 1, Event Type: end, Timestamp: 174.90305769890233 +Vehicle ID: 1, Event Type: start, Timestamp: 174.91481178222327 +Vehicle ID: 1, Event Type: end, Timestamp: 174.91700300350783 +Vehicle ID: 1, Event Type: start, Timestamp: 174.9196128463235 +Vehicle ID: 1, Event Type: end, Timestamp: 174.92165070047258 +Vehicle ID: 1, Event Type: start, Timestamp: 174.92233085074517 +Vehicle ID: 1, Event Type: end, Timestamp: 174.92505765976085 +Vehicle ID: 1, Event Type: start, Timestamp: 174.92508675154414 +Vehicle ID: 1, Event Type: start, Timestamp: 174.92690599588406 +Vehicle ID: 1, Event Type: end, Timestamp: 174.92735034592587 +Vehicle ID: 1, Event Type: end, Timestamp: 174.9282227507332 +Vehicle ID: 1, Event Type: start, Timestamp: 174.92907673905395 +Vehicle ID: 1, Event Type: start, Timestamp: 174.93010336276376 +Vehicle ID: 1, Event Type: end, Timestamp: 174.93036662729924 +Vehicle ID: 1, Event Type: start, Timestamp: 174.93036662729924 +Vehicle ID: 1, Event Type: end, Timestamp: 174.93199711900232 +Vehicle ID: 1, Event Type: start, Timestamp: 174.932948469298 +Vehicle ID: 1, Event Type: end, Timestamp: 174.93471283438802 +Vehicle ID: 1, Event Type: start, Timestamp: 174.95643371952448 +Vehicle ID: 1, Event Type: end, Timestamp: 174.95840472544464 +Vehicle ID: 1, Event Type: start, Timestamp: 174.95999447295222 +Vehicle ID: 1, Event Type: start, Timestamp: 174.9614823883396 +Vehicle ID: 1, Event Type: end, Timestamp: 174.96183667656115 +Vehicle ID: 1, Event Type: start, Timestamp: 174.96183667656115 +Vehicle ID: 1, Event Type: end, Timestamp: 174.9632247175163 +Vehicle ID: 1, Event Type: start, Timestamp: 174.96592695032882 +Vehicle ID: 1, Event Type: start, Timestamp: 174.96595641191948 +Vehicle ID: 1, Event Type: end, Timestamp: 174.9680332563768 +Vehicle ID: 1, Event Type: end, Timestamp: 174.96818961109247 +Vehicle ID: 1, Event Type: start, Timestamp: 174.97472398411293 +Vehicle ID: 1, Event Type: start, Timestamp: 174.9753245470635 +Vehicle ID: 1, Event Type: end, Timestamp: 174.97647923270935 +Vehicle ID: 1, Event Type: start, Timestamp: 174.97647923270935 +Vehicle ID: 1, Event Type: end, Timestamp: 174.97767022617978 +Vehicle ID: 1, Event Type: start, Timestamp: 174.9828149817809 +Vehicle ID: 1, Event Type: end, Timestamp: 174.98591904103492 +Vehicle ID: 1, Event Type: start, Timestamp: 174.99099326754603 +Vehicle ID: 1, Event Type: end, Timestamp: 174.9921421478339 +Vehicle ID: 1, Event Type: start, Timestamp: 175.00976794251002 +Vehicle ID: 1, Event Type: start, Timestamp: 175.01233327114176 +Vehicle ID: 1, Event Type: end, Timestamp: 175.01234501239816 +Vehicle ID: 1, Event Type: start, Timestamp: 175.01234501239816 +Vehicle ID: 1, Event Type: end, Timestamp: 175.01396189396155 +Vehicle ID: 1, Event Type: start, Timestamp: 175.01947438490797 +Vehicle ID: 1, Event Type: end, Timestamp: 175.02211324234312 +Vehicle ID: 1, Event Type: start, Timestamp: 175.03348852150702 +Vehicle ID: 1, Event Type: start, Timestamp: 175.03544352395033 +Vehicle ID: 1, Event Type: end, Timestamp: 175.03554408726532 +Vehicle ID: 1, Event Type: start, Timestamp: 175.03554408726532 +Vehicle ID: 1, Event Type: end, Timestamp: 175.03804885557128 +Vehicle ID: 1, Event Type: start, Timestamp: 175.04075999001896 +Vehicle ID: 1, Event Type: end, Timestamp: 175.04320388764327 +Vehicle ID: 1, Event Type: start, Timestamp: 175.0518569895815 +Vehicle ID: 1, Event Type: end, Timestamp: 175.05520174900056 +Vehicle ID: 1, Event Type: start, Timestamp: 175.08500368417586 +Vehicle ID: 1, Event Type: end, Timestamp: 175.08691020200325 +Vehicle ID: 1, Event Type: start, Timestamp: 175.09476839687287 +Vehicle ID: 1, Event Type: end, Timestamp: 175.09636970700612 +Vehicle ID: 1, Event Type: start, Timestamp: 175.10906211025483 +Vehicle ID: 1, Event Type: end, Timestamp: 175.1110504828931 +Vehicle ID: 1, Event Type: start, Timestamp: 175.11319094964128 +Vehicle ID: 1, Event Type: end, Timestamp: 175.11530326708746 +Vehicle ID: 1, Event Type: start, Timestamp: 175.11797960349614 +Vehicle ID: 1, Event Type: end, Timestamp: 175.12031850607394 +Vehicle ID: 1, Event Type: start, Timestamp: 175.12254529087008 +Vehicle ID: 1, Event Type: end, Timestamp: 175.1250112552903 +Vehicle ID: 1, Event Type: start, Timestamp: 175.1339043164946 +Vehicle ID: 1, Event Type: start, Timestamp: 175.13485893021883 +Vehicle ID: 1, Event Type: end, Timestamp: 175.13671234417697 +Vehicle ID: 1, Event Type: end, Timestamp: 175.13715150322395 +Vehicle ID: 1, Event Type: start, Timestamp: 175.14177742442584 +Vehicle ID: 1, Event Type: end, Timestamp: 175.14354082281284 +Vehicle ID: 1, Event Type: start, Timestamp: 175.17193123752045 +Vehicle ID: 1, Event Type: end, Timestamp: 175.1737790327937 +Vehicle ID: 1, Event Type: start, Timestamp: 175.17905309520847 +Vehicle ID: 1, Event Type: start, Timestamp: 175.17977384430614 +Vehicle ID: 1, Event Type: end, Timestamp: 175.18100792313348 +Vehicle ID: 1, Event Type: end, Timestamp: 175.18194362370173 +Vehicle ID: 1, Event Type: start, Timestamp: 175.18374598774682 +Vehicle ID: 1, Event Type: start, Timestamp: 175.18416589520018 +Vehicle ID: 1, Event Type: end, Timestamp: 175.18595009786452 +Vehicle ID: 1, Event Type: end, Timestamp: 175.1865052942725 +Vehicle ID: 1, Event Type: start, Timestamp: 175.21140781854524 +Vehicle ID: 1, Event Type: end, Timestamp: 175.21349456057004 +Vehicle ID: 1, Event Type: start, Timestamp: 175.27765311224442 +Vehicle ID: 1, Event Type: end, Timestamp: 175.27994554872316 +Vehicle ID: 1, Event Type: start, Timestamp: 175.3237013172593 +Vehicle ID: 1, Event Type: end, Timestamp: 175.32701583831 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 +Vehicle ID: 1, Event Type: end, Timestamp: 175.44371170639235 +Vehicle ID: 1, Event Type: end, Timestamp: 175.44385555500045 +Vehicle ID: 1, Event Type: start, Timestamp: 230.29827341829468 +Vehicle ID: 1, Event Type: end, Timestamp: 230.30032798322225 +Vehicle ID: 1, Event Type: start, Timestamp: 230.3627720612013 +Vehicle ID: 1, Event Type: end, Timestamp: 230.36455438891477 +Vehicle ID: 1, Event Type: start, Timestamp: 230.3838152252046 +Vehicle ID: 1, Event Type: end, Timestamp: 230.3856024260572 +Vehicle ID: 1, Event Type: start, Timestamp: 230.44777625767 +Vehicle ID: 1, Event Type: end, Timestamp: 230.45057942752922 +Vehicle ID: 1, Event Type: start, Timestamp: 230.46343203485594 +Vehicle ID: 1, Event Type: end, Timestamp: 230.46558775370278 +Vehicle ID: 1, Event Type: start, Timestamp: 230.48355884791818 +Vehicle ID: 1, Event Type: end, Timestamp: 230.48541216385195 +Vehicle ID: 1, Event Type: start, Timestamp: 230.50049767669492 +Vehicle ID: 1, Event Type: end, Timestamp: 230.50165642114152 +Vehicle ID: 1, Event Type: start, Timestamp: 230.51672058869067 +Vehicle ID: 1, Event Type: end, Timestamp: 230.51891843339402 +Vehicle ID: 1, Event Type: start, Timestamp: 230.54979692970642 +Vehicle ID: 1, Event Type: end, Timestamp: 230.552203847837 +Vehicle ID: 1, Event Type: start, Timestamp: 230.56233060560825 +Vehicle ID: 1, Event Type: end, Timestamp: 230.5649337764503 +Vehicle ID: 1, Event Type: start, Timestamp: 230.56683743927576 +Vehicle ID: 1, Event Type: end, Timestamp: 230.56944158634695 +Vehicle ID: 1, Event Type: start, Timestamp: 230.59993390519878 +Vehicle ID: 1, Event Type: end, Timestamp: 230.60315899114823 +Vehicle ID: 1, Event Type: start, Timestamp: 230.61716546147804 +Vehicle ID: 1, Event Type: end, Timestamp: 230.61979608418244 +Vehicle ID: 1, Event Type: start, Timestamp: 230.6312915595422 +Vehicle ID: 1, Event Type: end, Timestamp: 230.633109565271 +Vehicle ID: 1, Event Type: start, Timestamp: 230.63830987544017 +Vehicle ID: 1, Event Type: end, Timestamp: 230.6399428583969 +Vehicle ID: 1, Event Type: start, Timestamp: 230.64494056387875 +Vehicle ID: 1, Event Type: end, Timestamp: 230.64644283286185 +Vehicle ID: 1, Event Type: start, Timestamp: 230.67691745438796 +Vehicle ID: 1, Event Type: end, Timestamp: 230.67927392349506 +Vehicle ID: 1, Event Type: start, Timestamp: 230.69615062963106 +Vehicle ID: 1, Event Type: start, Timestamp: 230.69616965015607 +Vehicle ID: 1, Event Type: end, Timestamp: 230.69822420492406 +Vehicle ID: 1, Event Type: end, Timestamp: 230.6984465540385 +Vehicle ID: 1, Event Type: start, Timestamp: 230.70195429847135 +Vehicle ID: 1, Event Type: end, Timestamp: 230.70373851585686 +Vehicle ID: 1, Event Type: start, Timestamp: 230.72189492049787 +Vehicle ID: 1, Event Type: end, Timestamp: 230.72458740957615 +Vehicle ID: 1, Event Type: start, Timestamp: 230.73387443926376 +Vehicle ID: 1, Event Type: end, Timestamp: 230.7358984550763 +Vehicle ID: 1, Event Type: start, Timestamp: 230.7374823789395 +Vehicle ID: 1, Event Type: start, Timestamp: 230.7384914783118 +Vehicle ID: 1, Event Type: end, Timestamp: 230.7390416036651 +Vehicle ID: 1, Event Type: end, Timestamp: 230.74056217322766 +Vehicle ID: 1, Event Type: start, Timestamp: 230.74636761021665 +Vehicle ID: 1, Event Type: end, Timestamp: 230.7482467323713 +Vehicle ID: 1, Event Type: start, Timestamp: 230.7495708880515 +Vehicle ID: 1, Event Type: start, Timestamp: 230.75011446791038 +Vehicle ID: 1, Event Type: end, Timestamp: 230.75167543166108 +Vehicle ID: 1, Event Type: start, Timestamp: 230.75199221452607 +Vehicle ID: 1, Event Type: start, Timestamp: 230.75237981361724 +Vehicle ID: 1, Event Type: end, Timestamp: 230.75294509450907 +Vehicle ID: 1, Event Type: end, Timestamp: 230.75366794158927 +Vehicle ID: 1, Event Type: end, Timestamp: 230.75548536950802 +Vehicle ID: 1, Event Type: start, Timestamp: 230.76638232213645 +Vehicle ID: 1, Event Type: end, Timestamp: 230.76879199581714 +Vehicle ID: 1, Event Type: start, Timestamp: 230.77192270252183 +Vehicle ID: 1, Event Type: end, Timestamp: 230.7746134784685 +Vehicle ID: 1, Event Type: start, Timestamp: 230.78130464451763 +Vehicle ID: 1, Event Type: end, Timestamp: 230.7827295424007 +Vehicle ID: 1, Event Type: start, Timestamp: 230.78691723670954 +Vehicle ID: 1, Event Type: start, Timestamp: 230.78874165073725 +Vehicle ID: 1, Event Type: end, Timestamp: 230.78981288882684 +Vehicle ID: 1, Event Type: end, Timestamp: 230.79087046009914 +Vehicle ID: 1, Event Type: start, Timestamp: 230.79306011045819 +Vehicle ID: 1, Event Type: end, Timestamp: 230.79507553856206 +Vehicle ID: 1, Event Type: start, Timestamp: 230.79685924887468 +Vehicle ID: 1, Event Type: end, Timestamp: 230.79898595947373 +Vehicle ID: 1, Event Type: start, Timestamp: 230.80491311865396 +Vehicle ID: 1, Event Type: end, Timestamp: 230.808097375316 +Vehicle ID: 1, Event Type: start, Timestamp: 230.80862898781328 +Vehicle ID: 1, Event Type: start, Timestamp: 230.81096809279114 +Vehicle ID: 1, Event Type: end, Timestamp: 230.8113548148281 +Vehicle ID: 1, Event Type: end, Timestamp: 230.81353781106773 +Vehicle ID: 1, Event Type: start, Timestamp: 230.8176327668204 +Vehicle ID: 1, Event Type: end, Timestamp: 230.81934762476286 +Vehicle ID: 1, Event Type: start, Timestamp: 230.83437229401193 +Vehicle ID: 1, Event Type: start, Timestamp: 230.83489521247532 +Vehicle ID: 1, Event Type: start, Timestamp: 230.8364343329917 +Vehicle ID: 1, Event Type: end, Timestamp: 230.8364600030204 +Vehicle ID: 1, Event Type: start, Timestamp: 230.8364600030204 +Vehicle ID: 1, Event Type: end, Timestamp: 230.83689102018806 +Vehicle ID: 1, Event Type: end, Timestamp: 230.83806816330375 +Vehicle ID: 1, Event Type: start, Timestamp: 230.84429061831597 +Vehicle ID: 1, Event Type: end, Timestamp: 230.84674526738746 +Vehicle ID: 1, Event Type: start, Timestamp: 230.84873827051655 +Vehicle ID: 1, Event Type: end, Timestamp: 230.85138280584903 +Vehicle ID: 1, Event Type: start, Timestamp: 230.8517973575957 +Vehicle ID: 1, Event Type: start, Timestamp: 230.85356491182986 +Vehicle ID: 1, Event Type: end, Timestamp: 230.85403059871024 +Vehicle ID: 1, Event Type: start, Timestamp: 230.85403059871024 +Vehicle ID: 1, Event Type: end, Timestamp: 230.85622712466824 +Vehicle ID: 1, Event Type: start, Timestamp: 230.85731259237176 +Vehicle ID: 1, Event Type: end, Timestamp: 230.8598516544014 +Vehicle ID: 1, Event Type: start, Timestamp: 230.86103790575163 +Vehicle ID: 1, Event Type: end, Timestamp: 230.86312034484823 +Vehicle ID: 1, Event Type: start, Timestamp: 230.8653598112958 +Vehicle ID: 1, Event Type: end, Timestamp: 230.86716423562476 +Vehicle ID: 1, Event Type: start, Timestamp: 230.87325812474393 +Vehicle ID: 1, Event Type: start, Timestamp: 230.87502604108292 +Vehicle ID: 1, Event Type: end, Timestamp: 230.87508038794186 +Vehicle ID: 1, Event Type: start, Timestamp: 230.87508038794186 +Vehicle ID: 1, Event Type: end, Timestamp: 230.87694343815176 +Vehicle ID: 1, Event Type: start, Timestamp: 230.9043716159478 +Vehicle ID: 1, Event Type: end, Timestamp: 230.90589056330336 +Vehicle ID: 1, Event Type: start, Timestamp: 230.9065061391592 +Vehicle ID: 1, Event Type: end, Timestamp: 230.9090605885355 +Vehicle ID: 1, Event Type: start, Timestamp: 230.91655853895153 +Vehicle ID: 1, Event Type: end, Timestamp: 230.91858211092872 +Vehicle ID: 1, Event Type: start, Timestamp: 230.9397275368141 +Vehicle ID: 1, Event Type: end, Timestamp: 230.94163521732204 +Vehicle ID: 1, Event Type: start, Timestamp: 230.95743987083137 +Vehicle ID: 1, Event Type: end, Timestamp: 230.96012944038605 +Vehicle ID: 1, Event Type: start, Timestamp: 230.96056895231618 +Vehicle ID: 1, Event Type: end, Timestamp: 230.96190557019523 +Vehicle ID: 1, Event Type: start, Timestamp: 230.96748430241377 +Vehicle ID: 1, Event Type: start, Timestamp: 230.9699240161956 +Vehicle ID: 1, Event Type: end, Timestamp: 230.97008483800917 +Vehicle ID: 1, Event Type: start, Timestamp: 230.97008483800917 +Vehicle ID: 1, Event Type: end, Timestamp: 230.97249296548674 +Vehicle ID: 1, Event Type: start, Timestamp: 230.98043458631668 +Vehicle ID: 1, Event Type: end, Timestamp: 230.98249541903917 +Vehicle ID: 1, Event Type: start, Timestamp: 230.98372432386068 +Vehicle ID: 1, Event Type: end, Timestamp: 230.9849571193504 +Vehicle ID: 1, Event Type: start, Timestamp: 230.99912392839255 +Vehicle ID: 1, Event Type: end, Timestamp: 231.00089405829243 +Vehicle ID: 1, Event Type: start, Timestamp: 231.02062434099463 +Vehicle ID: 1, Event Type: start, Timestamp: 231.02168394757356 +Vehicle ID: 1, Event Type: end, Timestamp: 231.02285707430684 +Vehicle ID: 1, Event Type: start, Timestamp: 231.02297707925493 +Vehicle ID: 1, Event Type: end, Timestamp: 231.02301706044975 +Vehicle ID: 1, Event Type: start, Timestamp: 231.02301706044975 +Vehicle ID: 1, Event Type: end, Timestamp: 231.0255841229216 +Vehicle ID: 1, Event Type: start, Timestamp: 231.02951999264218 +Vehicle ID: 1, Event Type: end, Timestamp: 231.03154877875497 +Vehicle ID: 1, Event Type: start, Timestamp: 231.0477077634327 +Vehicle ID: 1, Event Type: start, Timestamp: 231.04908102780286 +Vehicle ID: 1, Event Type: end, Timestamp: 231.04919069672476 +Vehicle ID: 1, Event Type: start, Timestamp: 231.04919069672476 +Vehicle ID: 1, Event Type: start, Timestamp: 231.05090496818704 +Vehicle ID: 1, Event Type: end, Timestamp: 231.05096110715803 +Vehicle ID: 1, Event Type: start, Timestamp: 231.05096110715803 +Vehicle ID: 1, Event Type: end, Timestamp: 231.05252022197763 +Vehicle ID: 1, Event Type: start, Timestamp: 231.05542786513382 +Vehicle ID: 1, Event Type: end, Timestamp: 231.05778706109447 +Vehicle ID: 1, Event Type: start, Timestamp: 231.05834930585786 +Vehicle ID: 1, Event Type: end, Timestamp: 231.06046953487754 +Vehicle ID: 1, Event Type: start, Timestamp: 231.0885893751893 +Vehicle ID: 1, Event Type: end, Timestamp: 231.0900353691743 +Vehicle ID: 1, Event Type: start, Timestamp: 231.09888188065239 +Vehicle ID: 1, Event Type: end, Timestamp: 231.1008454836394 +Vehicle ID: 1, Event Type: start, Timestamp: 231.10971628491177 +Vehicle ID: 1, Event Type: end, Timestamp: 231.11120183452155 +Vehicle ID: 1, Event Type: start, Timestamp: 231.1183114799994 +Vehicle ID: 1, Event Type: end, Timestamp: 231.1209065153159 +Vehicle ID: 1, Event Type: start, Timestamp: 231.12156369651075 +Vehicle ID: 1, Event Type: end, Timestamp: 231.12231349405462 +Vehicle ID: 1, Event Type: start, Timestamp: 231.13122812407303 +Vehicle ID: 1, Event Type: end, Timestamp: 231.1336390284114 +Vehicle ID: 1, Event Type: start, Timestamp: 231.151439515394 +Vehicle ID: 1, Event Type: end, Timestamp: 231.15334853542853 +Vehicle ID: 1, Event Type: start, Timestamp: 231.18571286346827 +Vehicle ID: 1, Event Type: end, Timestamp: 231.18780992762615 +Vehicle ID: 1, Event Type: start, Timestamp: 231.20475027148282 +Vehicle ID: 1, Event Type: end, Timestamp: 231.20734316936918 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 +Vehicle ID: 1, Event Type: end, Timestamp: 231.3608109782748 +Vehicle ID: 1, Event Type: end, Timestamp: 231.3612624038621 +Vehicle ID: 1, Event Type: start, Timestamp: 286.2007299023512 +Vehicle ID: 1, Event Type: end, Timestamp: 286.20282545564675 +Vehicle ID: 1, Event Type: start, Timestamp: 286.4232374163958 +Vehicle ID: 1, Event Type: end, Timestamp: 286.4251226321786 +Vehicle ID: 1, Event Type: start, Timestamp: 286.47450653944765 +Vehicle ID: 1, Event Type: end, Timestamp: 286.4768381886467 +Vehicle ID: 1, Event Type: start, Timestamp: 286.5413266066375 +Vehicle ID: 1, Event Type: end, Timestamp: 286.5431582923244 +Vehicle ID: 1, Event Type: start, Timestamp: 286.55454676175464 +Vehicle ID: 1, Event Type: end, Timestamp: 286.55709521710116 +Vehicle ID: 1, Event Type: start, Timestamp: 286.56513020087 +Vehicle ID: 1, Event Type: start, Timestamp: 286.5664260471249 +Vehicle ID: 1, Event Type: end, Timestamp: 286.56663946540294 +Vehicle ID: 1, Event Type: end, Timestamp: 286.56800063853734 +Vehicle ID: 1, Event Type: start, Timestamp: 286.56807285405046 +Vehicle ID: 1, Event Type: end, Timestamp: 286.56932161138303 +Vehicle ID: 1, Event Type: start, Timestamp: 286.59028084227765 +Vehicle ID: 1, Event Type: start, Timestamp: 286.5905667099212 +Vehicle ID: 1, Event Type: end, Timestamp: 286.59185413936655 +Vehicle ID: 1, Event Type: end, Timestamp: 286.5930243433435 +Vehicle ID: 1, Event Type: start, Timestamp: 286.59434786852097 +Vehicle ID: 1, Event Type: end, Timestamp: 286.5969986333492 +Vehicle ID: 1, Event Type: start, Timestamp: 286.6088855624448 +Vehicle ID: 1, Event Type: end, Timestamp: 286.6111623084374 +Vehicle ID: 1, Event Type: start, Timestamp: 286.6318637323849 +Vehicle ID: 1, Event Type: end, Timestamp: 286.6340033215593 +Vehicle ID: 1, Event Type: start, Timestamp: 286.6347638583296 +Vehicle ID: 1, Event Type: end, Timestamp: 286.6365286266324 +Vehicle ID: 1, Event Type: start, Timestamp: 286.6365903362624 +Vehicle ID: 1, Event Type: end, Timestamp: 286.6387989361397 +Vehicle ID: 1, Event Type: start, Timestamp: 286.6418816878856 +Vehicle ID: 1, Event Type: end, Timestamp: 286.64374323452245 +Vehicle ID: 1, Event Type: start, Timestamp: 286.66918871391323 +Vehicle ID: 1, Event Type: end, Timestamp: 286.6716584890678 +Vehicle ID: 1, Event Type: start, Timestamp: 286.678399442593 +Vehicle ID: 1, Event Type: start, Timestamp: 286.67961925128003 +Vehicle ID: 1, Event Type: end, Timestamp: 286.68042052648843 +Vehicle ID: 1, Event Type: end, Timestamp: 286.6816153825815 +Vehicle ID: 1, Event Type: start, Timestamp: 286.68548481273615 +Vehicle ID: 1, Event Type: end, Timestamp: 286.68690584902185 +Vehicle ID: 1, Event Type: start, Timestamp: 286.69500582353805 +Vehicle ID: 1, Event Type: end, Timestamp: 286.6970937647793 +Vehicle ID: 1, Event Type: start, Timestamp: 286.70151193377546 +Vehicle ID: 1, Event Type: end, Timestamp: 286.70407358209576 +Vehicle ID: 1, Event Type: start, Timestamp: 286.7093098784749 +Vehicle ID: 1, Event Type: end, Timestamp: 286.71098028593997 +Vehicle ID: 1, Event Type: start, Timestamp: 286.7139721789099 +Vehicle ID: 1, Event Type: end, Timestamp: 286.71634388861844 +Vehicle ID: 1, Event Type: start, Timestamp: 286.7211064891278 +Vehicle ID: 1, Event Type: end, Timestamp: 286.7238334186798 +Vehicle ID: 1, Event Type: start, Timestamp: 286.74214481175096 +Vehicle ID: 1, Event Type: end, Timestamp: 286.7440912751207 +Vehicle ID: 1, Event Type: start, Timestamp: 286.74530329270624 +Vehicle ID: 1, Event Type: end, Timestamp: 286.74754031620836 +Vehicle ID: 1, Event Type: start, Timestamp: 286.7625408378355 +Vehicle ID: 1, Event Type: end, Timestamp: 286.76487838017766 +Vehicle ID: 1, Event Type: start, Timestamp: 286.76735353756794 +Vehicle ID: 1, Event Type: start, Timestamp: 286.7677633834523 +Vehicle ID: 1, Event Type: end, Timestamp: 286.7694825597687 +Vehicle ID: 1, Event Type: end, Timestamp: 286.76956379281984 +Vehicle ID: 1, Event Type: start, Timestamp: 286.7751578549607 +Vehicle ID: 1, Event Type: end, Timestamp: 286.7763960899241 +Vehicle ID: 1, Event Type: start, Timestamp: 286.77769684760347 +Vehicle ID: 1, Event Type: end, Timestamp: 286.77967509310383 +Vehicle ID: 1, Event Type: start, Timestamp: 286.7824887935317 +Vehicle ID: 1, Event Type: end, Timestamp: 286.78444344896 +Vehicle ID: 1, Event Type: start, Timestamp: 286.78788020759004 +Vehicle ID: 1, Event Type: end, Timestamp: 286.7905183464438 +Vehicle ID: 1, Event Type: start, Timestamp: 286.8104026209856 +Vehicle ID: 1, Event Type: end, Timestamp: 286.8122223458857 +Vehicle ID: 1, Event Type: start, Timestamp: 286.8134967766926 +Vehicle ID: 1, Event Type: end, Timestamp: 286.8157032441498 +Vehicle ID: 1, Event Type: start, Timestamp: 286.81898922399404 +Vehicle ID: 1, Event Type: start, Timestamp: 286.82003717488726 +Vehicle ID: 1, Event Type: end, Timestamp: 286.8206875395595 +Vehicle ID: 1, Event Type: end, Timestamp: 286.8231076041639 +Vehicle ID: 1, Event Type: start, Timestamp: 286.8335876382509 +Vehicle ID: 1, Event Type: start, Timestamp: 286.8340642124405 +Vehicle ID: 1, Event Type: end, Timestamp: 286.8350496803996 +Vehicle ID: 1, Event Type: end, Timestamp: 286.8364297779208 +Vehicle ID: 1, Event Type: start, Timestamp: 286.84971497403626 +Vehicle ID: 1, Event Type: end, Timestamp: 286.8515898938601 +Vehicle ID: 1, Event Type: start, Timestamp: 286.8730519454271 +Vehicle ID: 1, Event Type: end, Timestamp: 286.87551571318284 +Vehicle ID: 1, Event Type: start, Timestamp: 286.882970415837 +Vehicle ID: 1, Event Type: end, Timestamp: 286.8848190319167 +Vehicle ID: 1, Event Type: start, Timestamp: 286.90260886243277 +Vehicle ID: 1, Event Type: start, Timestamp: 286.9036403877682 +Vehicle ID: 1, Event Type: end, Timestamp: 286.9045301379363 +Vehicle ID: 1, Event Type: start, Timestamp: 286.9045301379363 +Vehicle ID: 1, Event Type: end, Timestamp: 286.90621880634734 +Vehicle ID: 1, Event Type: start, Timestamp: 286.9173545587327 +Vehicle ID: 1, Event Type: end, Timestamp: 286.91991436875855 +Vehicle ID: 1, Event Type: start, Timestamp: 286.9290661796227 +Vehicle ID: 1, Event Type: start, Timestamp: 286.93053160725884 +Vehicle ID: 1, Event Type: end, Timestamp: 286.9311893154658 +Vehicle ID: 1, Event Type: end, Timestamp: 286.9318983765232 +Vehicle ID: 1, Event Type: start, Timestamp: 286.93578531654833 +Vehicle ID: 1, Event Type: end, Timestamp: 286.93750698858105 +Vehicle ID: 1, Event Type: start, Timestamp: 286.9408800831774 +Vehicle ID: 1, Event Type: end, Timestamp: 286.94281907036236 +Vehicle ID: 1, Event Type: start, Timestamp: 286.94693068573525 +Vehicle ID: 1, Event Type: start, Timestamp: 286.9471015160693 +Vehicle ID: 1, Event Type: end, Timestamp: 286.9482193751087 +Vehicle ID: 1, Event Type: end, Timestamp: 286.94905125901226 +Vehicle ID: 1, Event Type: start, Timestamp: 286.95430172932697 +Vehicle ID: 1, Event Type: end, Timestamp: 286.9566099093979 +Vehicle ID: 1, Event Type: start, Timestamp: 286.9618933196812 +Vehicle ID: 1, Event Type: end, Timestamp: 286.96352334176567 +Vehicle ID: 1, Event Type: start, Timestamp: 286.96440885531234 +Vehicle ID: 1, Event Type: end, Timestamp: 286.9658663244119 +Vehicle ID: 1, Event Type: start, Timestamp: 286.99421150902276 +Vehicle ID: 1, Event Type: end, Timestamp: 286.9969862740242 +Vehicle ID: 1, Event Type: start, Timestamp: 287.0012694314847 +Vehicle ID: 1, Event Type: end, Timestamp: 287.00296194123484 +Vehicle ID: 1, Event Type: start, Timestamp: 287.0042428226206 +Vehicle ID: 1, Event Type: end, Timestamp: 287.0064470793557 +Vehicle ID: 1, Event Type: start, Timestamp: 287.0065209935474 +Vehicle ID: 1, Event Type: end, Timestamp: 287.00829986077633 +Vehicle ID: 1, Event Type: start, Timestamp: 287.01575209040897 +Vehicle ID: 1, Event Type: end, Timestamp: 287.0169593500918 +Vehicle ID: 1, Event Type: start, Timestamp: 287.0404315070929 +Vehicle ID: 1, Event Type: end, Timestamp: 287.0431016830019 +Vehicle ID: 1, Event Type: start, Timestamp: 287.04744418288743 +Vehicle ID: 1, Event Type: end, Timestamp: 287.0494024321526 +Vehicle ID: 1, Event Type: start, Timestamp: 287.05160423768416 +Vehicle ID: 1, Event Type: end, Timestamp: 287.0535760097785 +Vehicle ID: 1, Event Type: start, Timestamp: 287.0578229770227 +Vehicle ID: 1, Event Type: end, Timestamp: 287.0598930438552 +Vehicle ID: 1, Event Type: start, Timestamp: 287.0679626948768 +Vehicle ID: 1, Event Type: end, Timestamp: 287.07006918796503 +Vehicle ID: 1, Event Type: start, Timestamp: 287.0839596146111 +Vehicle ID: 1, Event Type: end, Timestamp: 287.08646165902036 +Vehicle ID: 1, Event Type: start, Timestamp: 287.08652180019584 +Vehicle ID: 1, Event Type: end, Timestamp: 287.0887253843419 +Vehicle ID: 1, Event Type: start, Timestamp: 287.10188848057464 +Vehicle ID: 1, Event Type: end, Timestamp: 287.10389338729567 +Vehicle ID: 1, Event Type: start, Timestamp: 287.12236778305106 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1224176895337 +Vehicle ID: 1, Event Type: end, Timestamp: 287.1244419058624 +Vehicle ID: 1, Event Type: end, Timestamp: 287.1254561866513 +Vehicle ID: 1, Event Type: start, Timestamp: 287.13568787737 +Vehicle ID: 1, Event Type: end, Timestamp: 287.1384528936205 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1416992047933 +Vehicle ID: 1, Event Type: end, Timestamp: 287.1439267648143 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1454186894738 +Vehicle ID: 1, Event Type: end, Timestamp: 287.1471691685077 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1474840465442 +Vehicle ID: 1, Event Type: end, Timestamp: 287.15045822024484 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1878628810483 +Vehicle ID: 1, Event Type: end, Timestamp: 287.1896898398109 +Vehicle ID: 1, Event Type: start, Timestamp: 287.2168587350141 +Vehicle ID: 1, Event Type: end, Timestamp: 287.2189502362054 +Vehicle ID: 1, Event Type: start, Timestamp: 287.251681557477 +Vehicle ID: 1, Event Type: end, Timestamp: 287.25382542451734 +Vehicle ID: 1, Event Type: start, Timestamp: 287.26293593438953 +Vehicle ID: 1, Event Type: end, Timestamp: 287.2650162550981 +Vehicle ID: 1, Event Type: start, Timestamp: 287.28111765724265 +Vehicle ID: 1, Event Type: end, Timestamp: 287.2833518057304 +Vehicle ID: 1, Event Type: start, Timestamp: 287.33794795182365 +Vehicle ID: 1, Event Type: end, Timestamp: 287.3395804315288 +Vehicle ID: 1, Event Type: start, Timestamp: 287.38528557172106 +Vehicle ID: 1, Event Type: end, Timestamp: 287.38736966908374 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 +Vehicle ID: 1, Event Type: end, Timestamp: 287.50469574638703 +Vehicle ID: 1, Event Type: end, Timestamp: 287.50479727411727 diff --git a/pyproject.toml b/pyproject.toml index 7cf1b279..0e8ac595 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -43,10 +43,11 @@ dependencies = [ "plotly", "typing_extensions", "pyyaml", - "polars >= 1.12", + "polars >= 1.14", "pyarrow", "requests", "PyYAML==6.0.2", + "simpy" ] [project.urls] diff --git a/python/altrios/demos/sim_manager_demo.py b/python/altrios/demos/sim_manager_demo.py index aed09db4..247d8154 100644 --- a/python/altrios/demos/sim_manager_demo.py +++ b/python/altrios/demos/sim_manager_demo.py @@ -2,6 +2,7 @@ from altrios import sim_manager from altrios import utilities, defaults, train_planner import altrios as alt +from lifts import lifts_simulator import numpy as np import matplotlib.pyplot as plt import time @@ -56,6 +57,10 @@ debug=True, ) +container_data = lifts_simulator.run_simulation( + train_consist_plan = train_consist_plan, + terminal = "Allouez") + t1_main = time.perf_counter() print(f"Elapsed time to run `sim_manager.main()`: {t1_main-t0_main:.3g} s") diff --git a/python/altrios/metric_calculator.py b/python/altrios/metric_calculator.py index bb15460f..cee0fd49 100644 --- a/python/altrios/metric_calculator.py +++ b/python/altrios/metric_calculator.py @@ -714,7 +714,7 @@ def calculate_rollout_investments(values: MetricType) -> MetricType: .alias("Count")) .drop("Change") .join(early_retirements, on=item_id_cols, how="left") - .with_columns(pl.col("Count").cumsum().over(item_id_cols).alias("Retirements_Early_Cumsum")) + .with_columns(pl.col("Count").cum_sum().over(item_id_cols).alias("Retirements_Early_Cumsum")) .with_columns(pl.when(pl.col("Change") > 0) .then(pl.when(pl.col("Retirements_Early_Cumsum") <= pl.col("Change")) .then(pl.col("Count")) diff --git a/python/altrios/sim_manager.py b/python/altrios/sim_manager.py index c15fbee9..128fdcbd 100644 --- a/python/altrios/sim_manager.py +++ b/python/altrios/sim_manager.py @@ -129,7 +129,7 @@ def main( ) train_times = pl.DataFrame( - {'Train_ID': pl.Series([sim.train_id for sim in speed_limit_train_sims], dtype=pl.Int32).cast(pl.UInt32), + {'Train_ID': pl.Series([int(sim.train_id) for sim in speed_limit_train_sims], dtype=pl.Int32).cast(pl.UInt32), 'Origin_ID': pl.Series([sim.origs[0].location_id for sim in speed_limit_train_sims], dtype=str), 'Destination_ID': pl.Series([sim.dests[0].location_id for sim in speed_limit_train_sims], dtype=str), 'Departure_Time_Actual_Hr': pl.Series([this[0].time_hours for this in timed_paths], dtype=pl.Float64), diff --git a/python/altrios/train_planner.py b/python/altrios/train_planner.py index e8165e6f..90d873c1 100644 --- a/python/altrios/train_planner.py +++ b/python/altrios/train_planner.py @@ -149,7 +149,7 @@ def generate_return_demand( return (demand .rename({"Origin": "Destination", "Destination": "Origin"}) - .drop("Number_Of_Containers") + .drop("Number_of_Containers") .with_columns( pl.concat_str([pl.col("Train_Type").str.strip_suffix("_Empty").str.strip_suffix("_Loaded") ,pl.lit("_Empty")]).alias("Train_Type"), @@ -290,7 +290,7 @@ def generate_demand_trains( demand = pl.concat([ demand.drop("Number_of_Containers"), - demand_returns.drop("Number_of_Containers"), + demand_returns,#.drop("Number_of_Containers"), demand_rebalancing], how="diagonal_relaxed") # if rowx[first three columns] == rowy[first three columns]: @@ -323,7 +323,7 @@ def get_kg(veh): .then(pl.col("KG_Empty") / utilities.KG_PER_TON) .otherwise(pl.col("KG") / utilities.KG_PER_TON) .alias("Tons_Per_Car")) - .drop(["KG_Empty","KG_Loaded"]) + .drop(["KG_Empty","KG"]) ) demand = demand.join(ton_per_car, on="Train_Type", how="left") @@ -401,7 +401,7 @@ def calculate_dispatch_times( pl.col("Cars_Loaded").floordiv(pl.col("Number_of_Trains")).alias("Cars_Loaded"), ).select(pl.exclude("Number_of_Trains").repeat_by("Number_of_Trains").explode()) \ .with_columns( - ((pl.col("Interval").cumcount().over(["Origin","Destination","Train_Type"])) \ + ((pl.col("Interval").cum_count().over(["Origin","Destination","Train_Type"])) \ * pl.col("Interval")).alias("Hour") ).drop("Interval") \ .sort(["Hour","Origin","Destination","Train_Type"]) @@ -699,7 +699,7 @@ def dispatch( message += "." raise ValueError(message) - diesel_to_require = diesel_candidates.eq(True).cumsum().eq(1).arg_max() + diesel_to_require = diesel_candidates.eq(True).cum_sum().eq(1).arg_max() diesel_to_require_hp = loco_pool.filter(diesel_filter).select(pl.first("HP")) # Need to mask this so it's not double-counted on next step candidates[diesel_to_require] = False @@ -707,12 +707,12 @@ def dispatch( enough_hp = loco_pool.select(( ( (pl.col("HP") - (pl.col("Loco_Mass_Tons") * pl.lit(hp_per_ton))) * pl.lit(candidates) - ).cumsum() + pl.lit(diesel_to_require_hp)) >= hp_required).to_series() + ).cum_sum() + pl.lit(diesel_to_require_hp)) >= hp_required).to_series() if not enough_hp.any(): available_hp = loco_pool.select( ( (pl.col("HP") - (pl.col("Loco_Mass_Tons") * pl.lit(hp_per_ton))) * pl.lit(candidates) - ).cumsum().max())[0, 0] + ).cum_sum().max())[0, 0] message = f"""Outbound horsepower needed ({hp_required}) at {origin} at hour {dispatch_time} is more than the available horsepower ({available_hp}). Count of locomotives servicing, refueling, or queueing at {origin} are:""" @@ -727,7 +727,7 @@ def dispatch( # Hold the train until enough locomotives are present (future development) raise ValueError(message) - last_row_to_use = enough_hp.eq(True).cumsum().eq(1).arg_max() + last_row_to_use = enough_hp.eq(True).cum_sum().eq(1).arg_max() # Set false all the locomotives that would add unnecessary hp selected[np.arange(last_row_to_use+1, len(selected))] = False # Add first diesel (which could come after last_row_to_use) to selection list diff --git a/python/altrios/utilities.py b/python/altrios/utilities.py index 77072f81..ad0cc7cf 100644 --- a/python/altrios/utilities.py +++ b/python/altrios/utilities.py @@ -206,7 +206,7 @@ def resample( for col in df.columns: if col in rate_vars: # calculate average value over time step - cumu_vals = (df[time_col].diff().fillna(0) * df[col]).cumsum() + cumu_vals = (df[time_col].diff().fillna(0) * df[col]).cum_sum() new_dict[col] = ( np.diff( np.interp( diff --git a/python/lifts/demos/starter_demo/train_consist_plan.csv b/python/lifts/demos/starter_demo/train_consist_plan.csv new file mode 100644 index 00000000..3a9e728b --- /dev/null +++ b/python/lifts/demos/starter_demo/train_consist_plan.csv @@ -0,0 +1,163 @@ +Train_ID,Train_Type,Locomotive_ID,Locomotive_Type,Origin_ID,Destination_ID,Cars_Loaded,Cars_Empty,Departure_SOC_J,Departure_Time_Planned_Hr,Arrival_Time_Planned_Hr,Refuel_Start_Time_Planned_Hr,Refuel_End_Time_Planned_Hr,Departure_Time_Actual_Hr,Arrival_Time_Actual_Hr,TrainSimVec_Index +25,Unit,1000,Diesel_Large,Allouez,Hibbing,43.0,44.0,828691080000.0,168.0,176.814986740618,176.814986740618,176.8360199346937,168.0,174.83160599585378,0 +32,Unit,1000,Diesel_Large,Hibbing,Allouez,44.0,43.0,828691080000.0,196.0,204.66115190304077,204.66115190304077,204.66655794550903,196.0,200.7194033488388,7 +37,Unit,1000,Diesel_Large,Allouez,Hibbing,43.0,44.0,828691080000.0,224.0,232.814986740618,232.814986740618,232.8360199346937,224.0,230.83160599585378,12 +41,Intermodal,1000,Diesel_Large,Hibbing,Allouez,43.0,41.0,828691080000.0,237.1764705882353,245.8340364958852,245.8340364958852,245.83566794943235,237.1764705882353,242.1023859005848,16 +43,Unit,1000,Diesel_Large,Allouez,Hibbing,43.0,44.0,828691080000.0,252.0,260.814986740618,260.814986740618,260.8360199346937,252.0,258.83160599585375,18 +47,Intermodal,1000,Diesel_Large,Hibbing,Allouez,43.0,41.0,828691080000.0,266.8235294117647,275.4810953194146,275.4810953194146,275.4827267729617,266.8235294117647,271.7494447241142,22 +49,Unit,1000,Diesel_Large,Allouez,Hibbing,43.0,44.0,828691080000.0,280.0,288.814986740618,288.814986740618,288.8360199346937,280.0,286.83160599585375,24 +53,Intermodal,1000,Diesel_Large,Hibbing,Allouez,43.0,41.0,828691080000.0,296.47058823529414,305.1281541429441,305.1281541429441,305.1297855964912,296.4705882352942,301.39650354764365,28 +57,Intermodal,1000,Diesel_Large,Allouez,Hibbing,41.0,43.0,828691080000.0,326.11764705882354,334.74920712941383,334.74920712941383,334.7576192186083,326.11764705882354,334.9090139408118,32 +25,Unit,1001,BEL,Allouez,Hibbing,43.0,44.0,8208000000.0,168.0,176.814986740618,176.814986740618,177.69498904461798,168.0,174.83160599585378,0 +32,Unit,1001,BEL,Hibbing,Allouez,44.0,43.0,2808004319.996545,196.0,204.66115190304077,204.66115190304077,207.54115420704076,196.0,200.7194033488388,7 +37,Unit,1001,BEL,Allouez,Hibbing,43.0,44.0,8208000000.0,224.0,232.814986740618,232.814986740618,233.69498904461798,224.0,230.83160599585378,12 +41,Intermodal,1001,BEL,Hibbing,Allouez,43.0,41.0,2808004319.996545,237.1764705882353,245.8340364958852,245.8340364958852,248.50232589744067,237.1764705882353,242.1023859005848,16 +43,Unit,1001,BEL,Allouez,Hibbing,43.0,44.0,8208000000.0,252.0,260.814986740618,260.814986740618,261.694989044618,252.0,258.83160599585375,18 +47,Intermodal,1001,BEL,Hibbing,Allouez,43.0,41.0,2808004319.996545,266.8235294117647,275.4810953194146,275.4810953194146,278.14938472097003,266.8235294117647,271.7494447241142,22 +49,Unit,1001,BEL,Allouez,Hibbing,43.0,44.0,8208000000.0,280.0,288.814986740618,288.814986740618,289.694989044618,280.0,286.83160599585375,24 +53,Intermodal,1001,BEL,Hibbing,Allouez,43.0,41.0,2808004319.996545,296.47058823529414,305.1281541429441,305.1281541429441,307.79644354449954,296.4705882352942,301.39650354764365,28 +57,Intermodal,1001,BEL,Allouez,Hibbing,41.0,43.0,8208000000.0,326.11764705882354,334.74920712941383,334.74920712941383,335.62920943341385,326.11764705882354,334.9090139408118,32 +25,Unit,1002,Diesel_Large,Allouez,Hibbing,43.0,44.0,828691080000.0,168.0,176.814986740618,176.814986740618,176.8360199346937,168.0,174.83160599585378,0 +32,Unit,1002,Diesel_Large,Hibbing,Allouez,44.0,43.0,828691080000.0,196.0,204.66115190304077,204.66115190304077,204.66655794550903,196.0,200.7194033488388,7 +37,Unit,1002,Diesel_Large,Allouez,Hibbing,43.0,44.0,828691080000.0,224.0,232.814986740618,232.814986740618,232.8360199346937,224.0,230.83160599585378,12 +41,Intermodal,1002,Diesel_Large,Hibbing,Allouez,43.0,41.0,828691080000.0,237.1764705882353,245.8340364958852,245.8340364958852,245.83566794943235,237.1764705882353,242.1023859005848,16 +43,Unit,1002,Diesel_Large,Allouez,Hibbing,43.0,44.0,828691080000.0,252.0,260.814986740618,260.814986740618,260.8360199346937,252.0,258.83160599585375,18 +47,Intermodal,1002,Diesel_Large,Hibbing,Allouez,43.0,41.0,828691080000.0,266.8235294117647,275.4810953194146,275.4810953194146,275.4827267729617,266.8235294117647,271.7494447241142,22 +49,Unit,1002,Diesel_Large,Allouez,Hibbing,43.0,44.0,828691080000.0,280.0,288.814986740618,288.814986740618,288.8360199346937,280.0,286.83160599585375,24 +53,Intermodal,1002,Diesel_Large,Hibbing,Allouez,43.0,41.0,828691080000.0,296.47058823529414,305.1281541429441,305.1281541429441,305.1297855964912,296.4705882352942,301.39650354764365,28 +57,Intermodal,1002,Diesel_Large,Allouez,Hibbing,41.0,43.0,828691080000.0,326.11764705882354,334.74920712941383,334.74920712941383,334.7576192186083,326.11764705882354,334.9090139408118,32 +27,Intermodal,1003,BEL,Allouez,Hibbing,41.0,43.0,8208000000.0,177.88235294117646,186.51317428089578,186.51317428089578,187.39317658489577,177.88235294117646,186.72657255834858,2 +35,Intermodal,1003,BEL,Hibbing,Allouez,43.0,41.0,2808004319.996545,207.52941176470588,216.1864980113696,216.1864980113696,218.8240577708916,207.52941176470588,212.4549844475042,10 +39,Intermodal,1003,BEL,Allouez,Hibbing,41.0,43.0,8208000000.0,237.1764705882353,245.80729192795462,245.80729192795462,246.6872942319546,237.1764705882353,245.9679767894695,14 +44,Unit,1003,BEL,Hibbing,Allouez,44.0,43.0,2808004319.996545,252.0,260.67653137595784,260.67653137595784,263.55653367995785,252.0,256.73038868663673,19 +45,Intermodal,1003,BEL,Allouez,Hibbing,41.0,43.0,8208000000.0,266.8235294117647,275.454350751484,275.454350751484,276.33435305548403,266.8235294117647,275.6150356129989,20 +50,Unit,1003,BEL,Hibbing,Allouez,44.0,43.0,2808004319.996545,280.0,288.67653137595784,288.67653137595784,291.55653367995785,280.0,284.73038868663673,25 +51,Intermodal,1003,BEL,Allouez,Hibbing,41.0,43.0,8208000000.0,296.47058823529414,305.10140957501335,305.10140957501335,305.98141187901336,296.4705882352942,305.3148078524663,26 +59,Intermodal,1003,BEL,Hibbing,Allouez,43.0,41.0,2808004319.996545,326.11764705882354,334.7747333054872,334.7747333054872,337.4122930650092,326.11764705882354,331.0432197416219,34 +27,Intermodal,1004,Diesel_Large,Allouez,Hibbing,41.0,43.0,828691080000.0,177.88235294117646,186.51317428089578,186.51317428089578,186.5212678320977,177.88235294117646,186.72657255834858,2 +35,Intermodal,1004,Diesel_Large,Hibbing,Allouez,43.0,41.0,828691080000.0,207.52941176470588,216.1864980113696,216.1864980113696,216.18800275139554,207.52941176470588,212.4549844475042,10 +39,Intermodal,1004,Diesel_Large,Allouez,Hibbing,41.0,43.0,828691080000.0,237.1764705882353,245.80729192795462,245.80729192795462,245.81538547915653,237.1764705882353,245.9679767894695,14 +44,Unit,1004,Diesel_Large,Hibbing,Allouez,44.0,43.0,828691080000.0,252.0,260.67653137595784,260.67653137595784,260.6824713988032,252.0,256.73038868663673,19 +45,Intermodal,1004,Diesel_Large,Allouez,Hibbing,41.0,43.0,828691080000.0,266.8235294117647,275.454350751484,275.454350751484,275.4624443026859,266.8235294117647,275.6150356129989,20 +50,Unit,1004,Diesel_Large,Hibbing,Allouez,44.0,43.0,828691080000.0,280.0,288.67653137595784,288.67653137595784,288.6824713988032,280.0,284.73038868663673,25 +51,Intermodal,1004,Diesel_Large,Allouez,Hibbing,41.0,43.0,828691080000.0,296.47058823529414,305.10140957501335,305.10140957501335,305.10950312621526,296.4705882352942,305.3148078524663,26 +59,Intermodal,1004,Diesel_Large,Hibbing,Allouez,43.0,41.0,828691080000.0,326.11764705882354,334.7747333054872,334.7747333054872,334.77623804551314,326.11764705882354,331.0432197416219,34 +27,Intermodal,1005,BEL,Allouez,Hibbing,41.0,43.0,8208000000.0,177.88235294117646,186.51317428089578,186.51317428089578,187.39317658489577,177.88235294117646,186.72657255834858,2 +35,Intermodal,1005,BEL,Hibbing,Allouez,43.0,41.0,2808004319.996545,207.52941176470588,216.1864980113696,216.1864980113696,218.8240577708916,207.52941176470588,212.4549844475042,10 +39,Intermodal,1005,BEL,Allouez,Hibbing,41.0,43.0,8208000000.0,237.1764705882353,245.80729192795462,245.80729192795462,246.6872942319546,237.1764705882353,245.9679767894695,14 +44,Unit,1005,BEL,Hibbing,Allouez,44.0,43.0,2808004319.996545,252.0,260.67653137595784,260.67653137595784,263.55653367995785,252.0,256.73038868663673,19 +45,Intermodal,1005,BEL,Allouez,Hibbing,41.0,43.0,8208000000.0,266.8235294117647,275.454350751484,275.454350751484,276.33435305548403,266.8235294117647,275.6150356129989,20 +50,Unit,1005,BEL,Hibbing,Allouez,44.0,43.0,2808004319.996545,280.0,288.67653137595784,288.67653137595784,291.55653367995785,280.0,284.73038868663673,25 +51,Intermodal,1005,BEL,Allouez,Hibbing,41.0,43.0,8208000000.0,296.47058823529414,305.10140957501335,305.10140957501335,305.98141187901336,296.4705882352942,305.3148078524663,26 +59,Intermodal,1005,BEL,Hibbing,Allouez,43.0,41.0,2808004319.996545,326.11764705882354,334.7747333054872,334.7747333054872,337.4122930650092,326.11764705882354,331.0432197416219,34 +27,Intermodal,1006,Diesel_Large,Allouez,Hibbing,41.0,43.0,828691080000.0,177.88235294117646,186.51317428089578,186.51317428089578,186.5212678320977,177.88235294117646,186.72657255834858,2 +35,Intermodal,1006,Diesel_Large,Hibbing,Allouez,43.0,41.0,828691080000.0,207.52941176470588,216.1864980113696,216.1864980113696,216.18800275139554,207.52941176470588,212.4549844475042,10 +39,Intermodal,1006,Diesel_Large,Allouez,Hibbing,41.0,43.0,828691080000.0,237.1764705882353,245.80729192795462,245.80729192795462,245.81538547915653,237.1764705882353,245.9679767894695,14 +47,Intermodal,1006,Diesel_Large,Hibbing,Allouez,43.0,41.0,828691080000.0,266.8235294117647,275.4810953194146,275.4827267729617,275.48435822650885,266.8235294117647,271.7494447241142,22 +51,Intermodal,1006,Diesel_Large,Allouez,Hibbing,41.0,43.0,828691080000.0,296.47058823529414,305.10140957501335,305.10140957501335,305.10950312621526,296.4705882352942,305.3148078524663,26 +59,Intermodal,1006,Diesel_Large,Hibbing,Allouez,43.0,41.0,828691080000.0,326.11764705882354,334.7747333054872,334.7747333054872,334.77623804551314,326.11764705882354,331.0432197416219,34 +27,Intermodal,1007,BEL,Allouez,Hibbing,41.0,43.0,8208000000.0,177.88235294117646,186.51317428089578,187.39317658489577,188.27317888889576,177.88235294117646,186.72657255834858,2 +35,Intermodal,1007,BEL,Hibbing,Allouez,43.0,41.0,2808004319.996545,207.52941176470588,216.1864980113696,218.8240577708916,221.46161753041363,207.52941176470588,212.4549844475042,10 +39,Intermodal,1007,BEL,Allouez,Hibbing,41.0,43.0,8208000000.0,237.1764705882353,245.80729192795462,246.6872942319546,247.5672965359546,237.1764705882353,245.9679767894695,14 +47,Intermodal,1007,BEL,Hibbing,Allouez,43.0,41.0,2808004319.996545,266.8235294117647,275.4810953194146,275.4810953194146,278.14938472097003,266.8235294117647,271.7494447241142,22 +51,Intermodal,1007,BEL,Allouez,Hibbing,41.0,43.0,8208000000.0,296.47058823529414,305.10140957501335,305.98141187901336,306.8614141830134,296.4705882352942,305.3148078524663,26 +59,Intermodal,1007,BEL,Hibbing,Allouez,43.0,41.0,2808004319.996545,326.11764705882354,334.7747333054872,337.4122930650092,340.0498528245312,326.11764705882354,331.0432197416219,34 +27,Intermodal,1008,Diesel_Large,Allouez,Hibbing,41.0,43.0,828691080000.0,177.88235294117646,186.51317428089578,186.5212678320977,186.5293613832996,177.88235294117646,186.72657255834858,2 +35,Intermodal,1008,Diesel_Large,Hibbing,Allouez,43.0,41.0,828691080000.0,207.52941176470588,216.1864980113696,216.18800275139554,216.1895074914215,207.52941176470588,212.4549844475042,10 +39,Intermodal,1008,Diesel_Large,Allouez,Hibbing,41.0,43.0,828691080000.0,237.1764705882353,245.80729192795462,245.81538547915653,245.82347903035844,237.1764705882353,245.9679767894695,14 +47,Intermodal,1008,Diesel_Large,Hibbing,Allouez,43.0,41.0,828691080000.0,266.8235294117647,275.4810953194146,275.4827267729617,275.48435822650885,266.8235294117647,271.7494447241142,22 +51,Intermodal,1008,Diesel_Large,Allouez,Hibbing,41.0,43.0,828691080000.0,296.47058823529414,305.10140957501335,305.10950312621526,305.11759667741717,296.4705882352942,305.3148078524663,26 +59,Intermodal,1008,Diesel_Large,Hibbing,Allouez,43.0,41.0,828691080000.0,326.11764705882354,334.7747333054872,334.77623804551314,334.7777427855391,326.11764705882354,331.0432197416219,34 +27,Intermodal,1009,BEL,Allouez,Hibbing,41.0,43.0,8208000000.0,177.88235294117646,186.51317428089578,187.39317658489577,188.27317888889576,177.88235294117646,186.72657255834858,2 +35,Intermodal,1009,BEL,Hibbing,Allouez,43.0,41.0,2808004319.996545,207.52941176470588,216.1864980113696,218.8240577708916,221.46161753041363,207.52941176470588,212.4549844475042,10 +39,Intermodal,1009,BEL,Allouez,Hibbing,41.0,43.0,8208000000.0,237.1764705882353,245.80729192795462,246.6872942319546,247.5672965359546,237.1764705882353,245.9679767894695,14 +47,Intermodal,1009,BEL,Hibbing,Allouez,43.0,41.0,2808004319.996545,266.8235294117647,275.4810953194146,278.14938472097003,280.8176741225255,266.8235294117647,271.7494447241142,22 +51,Intermodal,1009,BEL,Allouez,Hibbing,41.0,43.0,8208000000.0,296.47058823529414,305.10140957501335,305.98141187901336,306.8614141830134,296.4705882352942,305.3148078524663,26 +59,Intermodal,1009,BEL,Hibbing,Allouez,43.0,41.0,2808004319.996545,326.11764705882354,334.7747333054872,337.4122930650092,340.0498528245312,326.11764705882354,331.0432197416219,34 +28,Manifest,1010,Diesel_Large,Allouez,Hibbing,63.0,30.0,828691080000.0,177.88235294117646,186.70233846857286,186.70233846857286,186.72458623428895,178.01568627450982,186.99131350414217,3 +36,Manifest,1010,Diesel_Large,Hibbing,Allouez,50.0,42.0,828691080000.0,207.52941176470588,216.2238677177506,216.2238677177506,216.23121043150283,207.6627450980392,212.67563028912116,11 +40,Manifest,1010,Diesel_Large,Allouez,Hibbing,63.0,30.0,828691080000.0,237.1764705882353,246.1958618491161,246.1958618491161,246.22413019295246,237.30980392156863,246.36320507047125,15 +48,Manifest,1010,Diesel_Large,Hibbing,Allouez,50.0,42.0,828691080000.0,266.8235294117647,275.5179853648094,275.5179853648094,275.52532807856164,266.956862745098,271.96987082832175,23 +52,Manifest,1010,Diesel_Large,Allouez,Hibbing,63.0,30.0,828691080000.0,296.47058823529414,305.2905737626903,305.2905737626903,305.3128215284064,296.6039215686275,305.57954879825974,27 +60,Manifest,1010,Diesel_Large,Hibbing,Allouez,50.0,42.0,828691080000.0,326.11764705882354,334.81210301186815,334.81210301186815,334.81944572562037,326.2509803921569,331.26386558323884,35 +28,Manifest,1011,BEL,Allouez,Hibbing,63.0,30.0,8208000000.0,177.88235294117646,186.70233846857286,188.27317888889576,189.15318119289574,178.01568627450982,186.99131350414217,3 +36,Manifest,1011,BEL,Hibbing,Allouez,50.0,42.0,2808004319.996545,207.52941176470588,216.2238677177506,221.46161753041363,224.34161983441362,207.6627450980392,212.67563028912116,11 +40,Manifest,1011,BEL,Allouez,Hibbing,63.0,30.0,8208000000.0,237.1764705882353,246.1958618491161,247.5672965359546,248.44729883995458,237.30980392156863,246.36320507047125,15 +48,Manifest,1011,BEL,Hibbing,Allouez,50.0,42.0,2808004319.996545,266.8235294117647,275.5179853648094,278.14938472097003,281.02938702497005,266.956862745098,271.96987082832175,23 +52,Manifest,1011,BEL,Allouez,Hibbing,63.0,30.0,8208000000.0,296.47058823529414,305.2905737626903,306.8614141830134,307.7414164870134,296.6039215686275,305.57954879825974,27 +60,Manifest,1011,BEL,Hibbing,Allouez,50.0,42.0,2808004319.996545,326.11764705882354,334.81210301186815,340.0498528245312,342.9298551285312,326.2509803921569,331.26386558323884,35 +28,Manifest,1012,Diesel_Large,Allouez,Hibbing,63.0,30.0,828691080000.0,177.88235294117646,186.70233846857286,186.70233846857286,186.72458623428895,178.01568627450982,186.99131350414217,3 +36,Manifest,1012,Diesel_Large,Hibbing,Allouez,50.0,42.0,828691080000.0,207.52941176470588,216.2238677177506,216.2238677177506,216.23121043150283,207.6627450980392,212.67563028912116,11 +40,Manifest,1012,Diesel_Large,Allouez,Hibbing,63.0,30.0,828691080000.0,237.1764705882353,246.1958618491161,246.1958618491161,246.22413019295246,237.30980392156863,246.36320507047125,15 +48,Manifest,1012,Diesel_Large,Hibbing,Allouez,50.0,42.0,828691080000.0,266.8235294117647,275.5179853648094,275.5179853648094,275.52532807856164,266.956862745098,271.96987082832175,23 +52,Manifest,1012,Diesel_Large,Allouez,Hibbing,63.0,30.0,828691080000.0,296.47058823529414,305.2905737626903,305.2905737626903,305.3128215284064,296.6039215686275,305.57954879825974,27 +60,Manifest,1012,Diesel_Large,Hibbing,Allouez,50.0,42.0,828691080000.0,326.11764705882354,334.81210301186815,334.81210301186815,334.81944572562037,326.2509803921569,331.26386558323884,35 +26,Unit,1013,BEL,Hibbing,Allouez,44.0,43.0,2808004319.996545,168.0,176.67653137595784,176.67653137595784,179.55653367995782,168.0,172.7303886866367,1 +31,Unit,1013,BEL,Allouez,Hibbing,43.0,44.0,8208000000.0,196.0,205.19727027176702,205.19727027176702,206.077272575767,196.0,202.9782388778005,6 +38,Unit,1013,BEL,Hibbing,Allouez,44.0,43.0,2808004319.996545,224.0,232.67653137595784,232.67653137595784,235.55653367995782,224.0,228.7303886866367,13 +40,Manifest,1013,BEL,Allouez,Hibbing,63.0,30.0,8208000000.0,237.1764705882353,246.1958618491161,247.5672965359546,248.44729883995458,237.30980392156863,246.36320507047125,15 +53,Intermodal,1013,BEL,Hibbing,Allouez,43.0,41.0,2808004319.996545,296.47058823529414,305.1281541429441,305.1281541429441,307.79644354449954,296.4705882352942,301.39650354764365,28 +57,Intermodal,1013,BEL,Allouez,Hibbing,41.0,43.0,8208000000.0,326.11764705882354,334.74920712941383,334.74920712941383,335.62920943341385,326.11764705882354,334.9090139408118,32 +26,Unit,1014,Diesel_Large,Hibbing,Allouez,44.0,43.0,828691080000.0,168.0,176.67653137595784,176.67653137595784,176.6824713988032,168.0,172.7303886866367,1 +31,Unit,1014,Diesel_Large,Allouez,Hibbing,43.0,44.0,828691080000.0,196.0,205.19727027176702,205.19727027176702,205.22888927455517,196.0,202.9782388778005,6 +38,Unit,1014,Diesel_Large,Hibbing,Allouez,44.0,43.0,828691080000.0,224.0,232.67653137595784,232.67653137595784,232.6824713988032,224.0,228.7303886866367,13 +45,Intermodal,1014,Diesel_Large,Allouez,Hibbing,41.0,43.0,828691080000.0,266.8235294117647,275.454350751484,275.454350751484,275.4624443026859,266.8235294117647,275.6150356129989,20 +53,Intermodal,1014,Diesel_Large,Hibbing,Allouez,43.0,41.0,828691080000.0,296.47058823529414,305.1281541429441,305.1297855964912,305.13141705003835,296.4705882352942,301.39650354764365,28 +57,Intermodal,1014,Diesel_Large,Allouez,Hibbing,41.0,43.0,828691080000.0,326.11764705882354,334.74920712941383,334.7576192186083,334.76603130780273,326.11764705882354,334.9090139408118,32 +26,Unit,1015,BEL,Hibbing,Allouez,44.0,43.0,2808004319.996545,168.0,176.67653137595784,176.67653137595784,179.55653367995782,168.0,172.7303886866367,1 +31,Unit,1015,BEL,Allouez,Hibbing,43.0,44.0,8208000000.0,196.0,205.19727027176702,205.19727027176702,206.077272575767,196.0,202.9782388778005,6 +38,Unit,1015,BEL,Hibbing,Allouez,44.0,43.0,2808004319.996545,224.0,232.67653137595784,232.67653137595784,235.55653367995782,224.0,228.7303886866367,13 +45,Intermodal,1015,BEL,Allouez,Hibbing,41.0,43.0,8208000000.0,266.8235294117647,275.454350751484,276.33435305548403,277.21435535948405,266.8235294117647,275.6150356129989,20 +53,Intermodal,1015,BEL,Hibbing,Allouez,43.0,41.0,2808004319.996545,296.47058823529414,305.1281541429441,307.79644354449954,310.464732946055,296.4705882352942,301.39650354764365,28 +57,Intermodal,1015,BEL,Allouez,Hibbing,41.0,43.0,8208000000.0,326.11764705882354,334.74920712941383,335.62920943341385,336.50921173741386,326.11764705882354,334.9090139408118,32 +29,Intermodal,1016,Diesel_Large,Hibbing,Allouez,43.0,41.0,828691080000.0,177.88235294117646,186.53991884882635,186.53991884882635,186.5415503023735,177.88235294117646,182.80826825352597,4 +33,Intermodal,1016,Diesel_Large,Allouez,Hibbing,41.0,43.0,828691080000.0,207.52941176470588,216.16097183529615,216.16097183529615,216.16938392449063,207.52941176470588,216.32077864669415,8 +41,Intermodal,1016,Diesel_Large,Hibbing,Allouez,43.0,41.0,828691080000.0,237.1764705882353,245.8340364958852,245.83566794943235,245.8372994029795,237.1764705882353,242.1023859005848,16 +45,Intermodal,1016,Diesel_Large,Allouez,Hibbing,41.0,43.0,828691080000.0,266.8235294117647,275.454350751484,275.4624443026859,275.47053785388783,266.8235294117647,275.6150356129989,20 +53,Intermodal,1016,Diesel_Large,Hibbing,Allouez,43.0,41.0,828691080000.0,296.47058823529414,305.1281541429441,305.1297855964912,305.13141705003835,296.4705882352942,301.39650354764365,28 +57,Intermodal,1016,Diesel_Large,Allouez,Hibbing,41.0,43.0,828691080000.0,326.11764705882354,334.74920712941383,334.7576192186083,334.76603130780273,326.11764705882354,334.9090139408118,32 +29,Intermodal,1017,BEL,Hibbing,Allouez,43.0,41.0,2808004319.996545,177.88235294117646,186.53991884882635,186.53991884882635,189.20820825038183,177.88235294117646,182.80826825352597,4 +33,Intermodal,1017,BEL,Allouez,Hibbing,41.0,43.0,8208000000.0,207.52941176470588,216.16097183529615,216.16097183529615,217.04097413929614,207.52941176470588,216.32077864669415,8 +41,Intermodal,1017,BEL,Hibbing,Allouez,43.0,41.0,2808004319.996545,237.1764705882353,245.8340364958852,245.8340364958852,248.50232589744067,237.1764705882353,242.1023859005848,16 +45,Intermodal,1017,BEL,Allouez,Hibbing,41.0,43.0,8208000000.0,266.8235294117647,275.454350751484,276.33435305548403,277.21435535948405,266.8235294117647,275.6150356129989,20 +54,Manifest,1017,BEL,Hibbing,Allouez,50.0,42.0,2808004319.996545,296.47058823529414,305.23775179113795,307.79644354449954,310.67644584849955,296.6039215686275,301.6696430677891,29 +58,Manifest,1017,BEL,Allouez,Hibbing,63.0,30.0,8208000000.0,326.11764705882354,335.1370383197046,335.62920943341385,336.50921173741386,326.2509803921569,335.3042586489178,33 +29,Intermodal,1018,Diesel_Large,Hibbing,Allouez,43.0,41.0,828691080000.0,177.88235294117646,186.53991884882635,186.53991884882635,186.5415503023735,177.88235294117646,182.80826825352597,4 +33,Intermodal,1018,Diesel_Large,Allouez,Hibbing,41.0,43.0,828691080000.0,207.52941176470588,216.16097183529615,216.16097183529615,216.16938392449063,207.52941176470588,216.32077864669415,8 +41,Intermodal,1018,Diesel_Large,Hibbing,Allouez,43.0,41.0,828691080000.0,237.1764705882353,245.8340364958852,245.83566794943235,245.8372994029795,237.1764705882353,242.1023859005848,16 +46,Manifest,1018,Diesel_Large,Allouez,Hibbing,63.0,30.0,828691080000.0,266.8235294117647,275.8429206726455,275.8429206726455,275.8711890164819,266.956862745098,276.0102638940006,21 +54,Manifest,1018,Diesel_Large,Hibbing,Allouez,50.0,42.0,828691080000.0,296.47058823529414,305.23775179113795,305.23775179113795,305.2469049024242,296.6039215686275,301.6696430677891,29 +58,Manifest,1018,Diesel_Large,Allouez,Hibbing,63.0,30.0,828691080000.0,326.11764705882354,335.1370383197046,335.1370383197046,335.16530666354095,326.2509803921569,335.3042586489178,33 +29,Intermodal,1019,BEL,Hibbing,Allouez,43.0,41.0,2808004319.996545,177.88235294117646,186.53991884882635,186.53991884882635,189.20820825038183,177.88235294117646,182.80826825352597,4 +33,Intermodal,1019,BEL,Allouez,Hibbing,41.0,43.0,8208000000.0,207.52941176470588,216.16097183529615,216.16097183529615,217.04097413929614,207.52941176470588,216.32077864669415,8 +41,Intermodal,1019,BEL,Hibbing,Allouez,43.0,41.0,2808004319.996545,237.1764705882353,245.8340364958852,248.50232589744067,251.17061529899615,237.1764705882353,242.1023859005848,16 +46,Manifest,1019,BEL,Allouez,Hibbing,63.0,30.0,8208000000.0,266.8235294117647,275.8429206726455,277.21435535948405,278.09435766348406,266.956862745098,276.0102638940006,21 +54,Manifest,1019,BEL,Hibbing,Allouez,50.0,42.0,2808004319.996545,296.47058823529414,305.23775179113795,310.464732946055,313.344735250055,296.6039215686275,301.6696430677891,29 +58,Manifest,1019,BEL,Allouez,Hibbing,63.0,30.0,8208000000.0,326.11764705882354,335.1370383197046,336.50921173741386,337.3892140414139,326.2509803921569,335.3042586489178,33 +29,Intermodal,1020,Diesel_Large,Hibbing,Allouez,43.0,41.0,828691080000.0,177.88235294117646,186.53991884882635,186.5415503023735,186.54318175592067,177.88235294117646,182.80826825352597,4 +33,Intermodal,1020,Diesel_Large,Allouez,Hibbing,41.0,43.0,828691080000.0,207.52941176470588,216.16097183529615,216.16938392449063,216.1777960136851,207.52941176470588,216.32077864669415,8 +42,Manifest,1020,Diesel_Large,Hibbing,Allouez,50.0,42.0,828691080000.0,237.1764705882353,245.87092654128003,245.87092654128003,245.87826925503225,237.30980392156863,242.32281200479235,17 +46,Manifest,1020,Diesel_Large,Allouez,Hibbing,63.0,30.0,828691080000.0,266.8235294117647,275.8429206726455,275.8429206726455,275.8711890164819,266.956862745098,276.0102638940006,21 +56,Unit,1020,Diesel_Large,Hibbing,Allouez,44.0,43.0,828691080000.0,308.0,316.67653137595795,316.67653137595795,316.68247139880333,308.0,312.7303886866368,31 +58,Manifest,1020,Diesel_Large,Allouez,Hibbing,63.0,30.0,828691080000.0,326.11764705882354,335.1370383197046,335.1370383197046,335.16530666354095,326.2509803921569,335.3042586489178,33 +29,Intermodal,1021,BEL,Hibbing,Allouez,43.0,41.0,2808004319.996545,177.88235294117646,186.53991884882635,189.20820825038183,191.8764976519373,177.88235294117646,182.80826825352597,4 +33,Intermodal,1021,BEL,Allouez,Hibbing,41.0,43.0,8208000000.0,207.52941176470588,216.16097183529615,217.04097413929614,217.92097644329613,207.52941176470588,216.32077864669415,8 +42,Manifest,1021,BEL,Hibbing,Allouez,50.0,42.0,2808004319.996545,237.1764705882353,245.87092654128003,248.50232589744067,251.38232820144066,237.30980392156863,242.32281200479235,17 +46,Manifest,1021,BEL,Allouez,Hibbing,63.0,30.0,8208000000.0,266.8235294117647,275.8429206726455,277.21435535948405,278.09435766348406,266.956862745098,276.0102638940006,21 +56,Unit,1021,BEL,Hibbing,Allouez,44.0,43.0,2808004319.996545,308.0,316.67653137595795,316.67653137595795,319.55653367995797,308.0,312.7303886866368,31 +29,Intermodal,1022,Diesel_Large,Hibbing,Allouez,43.0,41.0,828691080000.0,177.88235294117646,186.53991884882635,186.5415503023735,186.54318175592067,177.88235294117646,182.80826825352597,4 +33,Intermodal,1022,Diesel_Large,Allouez,Hibbing,41.0,43.0,828691080000.0,207.52941176470588,216.16097183529615,216.16938392449063,216.1777960136851,207.52941176470588,216.32077864669415,8 +42,Manifest,1022,Diesel_Large,Hibbing,Allouez,50.0,42.0,828691080000.0,237.1764705882353,245.87092654128003,245.87092654128003,245.87826925503225,237.30980392156863,242.32281200479235,17 +52,Manifest,1022,Diesel_Large,Allouez,Hibbing,63.0,30.0,828691080000.0,296.47058823529414,305.2905737626903,305.3128215284064,305.3350692941225,296.6039215686275,305.57954879825974,27 +30,Manifest,1023,BEL,Hibbing,Allouez,50.0,42.0,2808004319.996545,177.88235294117646,186.64951649702033,189.20820825038183,192.08821055438182,178.01568627450982,183.0814077736714,5 +34,Manifest,1023,BEL,Allouez,Hibbing,63.0,30.0,8208000000.0,207.52941176470588,217.6086187865999,217.6086187865999,218.48862109059988,207.6627450980392,217.41810872754803,9 +56,Unit,1023,BEL,Hibbing,Allouez,44.0,43.0,2808004319.996545,308.0,316.67653137595795,316.67653137595795,319.55653367995797,308.0,312.7303886866368,31 +30,Manifest,1024,Diesel_Large,Hibbing,Allouez,50.0,42.0,828691080000.0,177.88235294117646,186.64951649702033,186.64951649702033,186.65866960830658,178.01568627450982,183.0814077736714,5 +34,Manifest,1024,Diesel_Large,Allouez,Hibbing,63.0,30.0,828691080000.0,207.52941176470588,217.6086187865999,217.6086187865999,217.65401333240675,207.6627450980392,217.41810872754803,9 +30,Manifest,1025,BEL,Hibbing,Allouez,50.0,42.0,2808004319.996545,177.88235294117646,186.64951649702033,191.8764976519373,194.7564999559373,178.01568627450982,183.0814077736714,5 +34,Manifest,1025,BEL,Allouez,Hibbing,63.0,30.0,8208000000.0,207.52941176470588,217.6086187865999,217.92097644329613,218.8009787472961,207.6627450980392,217.41810872754803,9 +28,Manifest,1030,Diesel_Large,Allouez,Hibbing,63.0,30.0,828691080000.0,177.88235294117646,186.70233846857286,186.72458623428895,186.74683400000504,178.01568627450982,186.99131350414217,3 +34,Manifest,1031,BEL,Allouez,Hibbing,63.0,30.0,8208000000.0,207.52941176470588,217.6086187865999,218.48862109059988,219.36862339459987,207.6627450980392,217.41810872754803,9 +55,Unit,1032,Diesel_Large,Allouez,Hibbing,43.0,44.0,828691080000.0,308.0,316.814986740618,316.814986740618,316.8360199346937,308.0,314.8316059958538,30 +55,Unit,1033,BEL,Allouez,Hibbing,43.0,44.0,8208000000.0,308.0,316.814986740618,316.814986740618,317.694989044618,308.0,314.8316059958538,30 +55,Unit,1034,Diesel_Large,Allouez,Hibbing,43.0,44.0,828691080000.0,308.0,316.814986740618,316.814986740618,316.8360199346937,308.0,314.8316059958538,30 diff --git a/python/lifts/dictionary.py b/python/lifts/dictionary.py index cbfd8bbb..4e13c721 100644 --- a/python/lifts/dictionary.py +++ b/python/lifts/dictionary.py @@ -1,58 +1,21 @@ -import pandas as pd +import polars as pl - -def timetable(terminal): - df = pd.read_csv('C:/Users/Irena Tong/PycharmProjects/simulation_test/data/train_consist_plan.csv') - - df_terminal = df[(df['Destination_ID'] == terminal) & (df['Train_Type'] == 'Intermodal')] - - df_grouped = df_terminal.groupby('Train_ID').agg({ - 'Cars_Loaded': find_duplicate_numbers, - 'Cars_Empty': find_duplicate_numbers, - 'Arrival_Time_Actual_Hr': 'min', - 'Departure_Time_Actual_Hr': 'min' - }).reset_index() - - df_grouped_sorted = df_grouped.sort_values(by='Arrival_Time_Actual_Hr', ascending=True) - - train_dict_list = convert_df_to_dict(df_grouped_sorted) - - return train_dict_list - - -def convert_df_to_dict(df): - train_timetable = [] - for _, row in df.iterrows(): - train_dict = { - "train_id": row['Train_ID'], - "arrival_time": row['Departure_Time_Actual_Hr'], - "departure_time": row['Arrival_Time_Actual_Hr'], - "empty_cars": row['Cars_Empty'], - "full_cars": row['Cars_Loaded'], - "oc_number": calculate_oc_number(row), - "truck_number": calculate_truck_number(row) - } - train_timetable.append(train_dict) - return train_timetable - - -def truck_resource(data): - total_truck_number = sum(item['truck_number'] for item in data) - return total_truck_number - - -def calculate_oc_number(row): +def calculate_oc_number() -> int: return 40 -def calculate_truck_number(row): - full_cars = row['Cars_Loaded'] - oc_number = calculate_oc_number(row) - return max(full_cars, oc_number) - - -def find_duplicate_numbers(series): - return series.iloc[0] +def calculate_truck_number(df): + return (df + .with_columns( + pl.max_horizontal( + pl.col("full_cars"), + calculate_oc_number() + ).alias("truck_number")) + ) + +def truck_resource(df): + total_truck_number = df.select(pl.col("truck_number").sum()).item() + return total_truck_number -terminal = 'Allouez' -train_data_as_dict = timetable(terminal) -print(train_data_as_dict) \ No newline at end of file +#terminal = 'Allouez' +#train_data_as_dict = schedule.build_train_timetable(terminal, swap_arrive_depart = True, as_dicts = True) +#print(train_data_as_dict) \ No newline at end of file diff --git a/python/lifts/final_version.py b/python/lifts/lifts_simulator.py similarity index 53% rename from python/lifts/final_version.py rename to python/lifts/lifts_simulator.py index 08685eb2..bd3b1c59 100644 --- a/python/lifts/final_version.py +++ b/python/lifts/lifts_simulator.py @@ -1,9 +1,12 @@ import simpy import random -from parameters import * -from distances import * -from dictionary import * -from vehicle_performance import record_vehicle_event, save_average_times, save_vehicle_logs +import polars as pl +from lifts import utilities +from lifts.parameters import * +from lifts.distances import * +from lifts.dictionary import * +from lifts.schedule import * +from lifts.vehicle_performance import record_vehicle_event, save_average_times, save_vehicle_logs # Test input @@ -21,72 +24,72 @@ TRUCK_NUMBERS = 1000 def record_event(container_id, event_type, timestamp): - if container_id not in container_events: - container_events[container_id] = {} - container_events[container_id][event_type] = timestamp + global state + if container_id not in state.container_events: + state.container_events[container_id] = {} + state.container_events[container_id][event_type] = timestamp def handle_truck_arrivals(env, in_gate_resource, truck_numbers): - global all_trucks_ready_event, truck_processed, start_oc_container_id, end_oc_container_id, TRUCK_ARRIVAL_MEAN, TRAIN_ARRIVAL_HR - + global state truck_id = 1 truck_processed = 0 - TRUCK_ARRIVAL_MEAN = abs(TRAIN_ARRIVAL_HR - previous_train_departure) / max(INBOUND_CONTAINER_NUMBER, OUTBOUND_CONTAINER_NUMBER) + state.TRUCK_ARRIVAL_MEAN = abs(state.TRAIN_ARRIVAL_HR - state.previous_train_departure) / max(state.INBOUND_CONTAINER_NUMBER, state.OUTBOUND_CONTAINER_NUMBER) print(f"current time is {env.now}") - print(f"next TRAIN_ARRIVAL_HR:{TRAIN_ARRIVAL_HR}") - print(f"TRUCK_ARRIVAL_MEAN IS {TRUCK_ARRIVAL_MEAN}") + print(f"next TRAIN_ARRIVAL_HR:{state.TRAIN_ARRIVAL_HR}") + print(f"TRUCK_ARRIVAL_MEAN IS {state.TRUCK_ARRIVAL_MEAN}") while truck_id <= TRUCK_NUMBERS: - inter_arrival_time = random.expovariate(1 / TRUCK_ARRIVAL_MEAN) + inter_arrival_time = random.expovariate(1 / state.TRUCK_ARRIVAL_MEAN) yield env.timeout(inter_arrival_time) - truck_arrival_time.append(env.now) + state.truck_arrival_time.append(env.now) env.process(truck_through_gate(env, in_gate_resource, truck_id)) truck_id += 1 if truck_id > TRUCK_NUMBERS: # print(f"truck_id = {truck_id} vs TRUCK_NUM = {TRUCK_NUMBERS}") - if not all_trucks_ready_event.triggered: - all_trucks_ready_event.succeed() + if not state.all_trucks_ready_event.triggered: + state.all_trucks_ready_event.succeed() # print(f"{env.now}: All trucks arrived for the {TRAIN_ID} train.") def truck_through_gate(env, in_gate_resource, truck_id): - global last_leave_time, INBOUND_CONTAINER_NUMBER, OUTBOUND_CONTAINER_NUMBER + global state with in_gate_resource.request() as request: yield request - wait_time = max(0, truck_arrival_time[truck_id - 1] - last_leave_time) + wait_time = max(0, state.truck_arrival_time[truck_id - 1] - state.last_leave_time) if wait_time <= 0: wait_time = 0 # first arriving trucks # print(f"Truck {truck_id} enters the gate without waiting") else: # print(f"Truck {truck_id} enters the gate and queued for {wait_time} hrs") - truck_waiting_time.append(wait_time) + state.truck_waiting_time.append(wait_time) - yield env.timeout(TRUCK_INGATE_TIME + random.uniform(0, TRUCK_INGATE_TIME_DEV)) + yield env.timeout(state.TRUCK_INGATE_TIME + random.uniform(0, state.TRUCK_INGATE_TIME_DEV)) # Case 1: Normal handling when OC >= IC (all trucks have containers) - if OUTBOUND_CONTAINER_NUMBER >= INBOUND_CONTAINER_NUMBER: + if state.OUTBOUND_CONTAINER_NUMBER >= state.INBOUND_CONTAINER_NUMBER: env.process(handle_container(env, truck_id)) # Case 2: OC < IC, extra empty trucks are needed else: - if truck_id <= OUTBOUND_CONTAINER_NUMBER: + if truck_id <= state.OUTBOUND_CONTAINER_NUMBER: env.process(handle_container(env, truck_id)) # Loaded trucks else: env.process(empty_truck(env, truck_id)) # Empty trucks def handle_container(env, truck_id): - global outbound_container_id_counter, last_leave_time + global state - container_id = outbound_container_id_counter - outbound_container_id_counter += 1 + container_id = state.outbound_container_id_counter + state.outbound_container_id_counter += 1 record_event(container_id, 'truck_arrival', env.now) d_t_dist = create_triang_distribution(d_t_min, d_t_avg, d_t_max).rvs() - yield env.timeout(d_t_dist / (2 * TRUCK_SPEED_LIMIT)) + yield env.timeout(d_t_dist / (2 * state.TRUCK_SPEED_LIMIT)) record_event(container_id, 'truck_drop_off', env.now) # print(f"{env.now}: Truck {truck_id} drops outbound container {container_id}.") @@ -94,32 +97,32 @@ def handle_container(env, truck_id): def empty_truck(env, truck_id): - global inbound_container_id_counter, last_leave_time + global state d_t_dist = create_triang_distribution(d_t_min, d_t_avg, d_t_max).rvs() - yield env.timeout(d_t_dist / (2 * TRUCK_SPEED_LIMIT)) + yield env.timeout(d_t_dist / (2 * state.TRUCK_SPEED_LIMIT)) # print(f"{env.now}: Empty truck {truck_id} arrives.") last_leave_time = env.now def train_arrival(env, train_timetable, train_processing, cranes, hostlers, chassis, in_gate_resource, outbound_containers_store, truck_store, out_gate_resource): - global record_oc_label, train_id_counter, TRUCK_NUMBERS, INBOUND_CONTAINER_NUMBER, OUTBOUND_CONTAINER_NUMBER, TRAIN_DEPARTURE_HR, oc_chassis_filled_event, TRAIN_ID, inbound_container_id_counter, previous_train_departure + global state for i, train in enumerate(train_timetable): - TRAIN_ARRIVAL_HR = train['arrival_time'] - TRAIN_DEPARTURE_HR = train['departure_time'] - INBOUND_CONTAINER_NUMBER = train['full_cars'] - OUTBOUND_CONTAINER_NUMBER = train['oc_number'] - TRUCK_NUMBERS = train['truck_number'] - TRAIN_ID = train['train_id'] + state.TRAIN_ARRIVAL_HR = train['arrival_time'] + state.TRAIN_DEPARTURE_HR = train['departure_time'] + state.INBOUND_CONTAINER_NUMBER = train['full_cars'] + state.OUTBOUND_CONTAINER_NUMBER = train['oc_number'] + state.TRUCK_NUMBERS = train['truck_number'] + state.TRAIN_ID = train['train_id'] - print(f"---------- Next Train {TRAIN_ID} Is On the Way ----------") - print(f"IC {INBOUND_CONTAINER_NUMBER}") - print(f"OC {OUTBOUND_CONTAINER_NUMBER}") + print(f"---------- Next Train {state.TRAIN_ID} Is On the Way ----------") + print(f"IC {state.INBOUND_CONTAINER_NUMBER}") + print(f"OC {state.OUTBOUND_CONTAINER_NUMBER}") outbound_containers_store.items.clear() - for oc in range(record_oc_label, record_oc_label + OUTBOUND_CONTAINER_NUMBER): # from 10001 to 10001 + OC + for oc in range(state.record_oc_label, state.record_oc_label + state.OUTBOUND_CONTAINER_NUMBER): # from 10001 to 10001 + OC # print("oc_number", oc) outbound_containers_store.put(oc) # yield outbound_containers_store.put(oc) @@ -128,38 +131,38 @@ def train_arrival(env, train_timetable, train_processing, cranes, hostlers, chas # print("outbound_containers_store is:", outbound_containers_store.items) # Trucks enter until the precious train departs, if not the first truck - previous_train_departure = train_timetable[i-1]['departure_time'] if i > 0 else 0 - print(f"Schedule {TRUCK_NUMBERS} Trucks arriving between previous train departure at {previous_train_departure} and current train arrival at {TRAIN_ARRIVAL_HR}") + state.previous_train_departure = train_timetable[i-1]['departure_time'] if i > 0 else 0 + print(f"Schedule {state.TRUCK_NUMBERS} Trucks arriving between previous train departure at {state.previous_train_departure} and current train arrival at {state.TRAIN_ARRIVAL_HR}") env.process(handle_truck_arrivals(env, in_gate_resource, outbound_containers_store)) # Trains arrive according to the timetable, fix negative delay bug - delay = TRAIN_ARRIVAL_HR - env.now + delay = state.TRAIN_ARRIVAL_HR - env.now if delay <= 0: yield env.timeout(0) else: yield env.timeout(delay) - train_id = train_id_counter - print(f"Train {TRAIN_ID} ({train_id} in the dictionary) arrives at {env.now}") + train_id = state.train_id_counter + print(f"Train {state.TRAIN_ID} ({train_id} in the dictionary) arrives at {env.now}") # for container_id in range(inbound_container_id_counter, inbound_container_id_counter + INBOUND_CONTAINER_NUMBER): - for container_id in range(int(inbound_container_id_counter), int(inbound_container_id_counter) + int(INBOUND_CONTAINER_NUMBER)): # fix float error + for container_id in range(int(state.inbound_container_id_counter), int(state.inbound_container_id_counter) + int(state.INBOUND_CONTAINER_NUMBER)): # fix float error record_event(container_id, 'train_arrival', env.now) with train_processing.request() as request: yield request - oc_chassis_filled_event = env.event() - yield env.process(process_train(env, train_id, cranes, hostlers, chassis, in_gate_resource, outbound_containers_store, truck_store, train_processing, oc_chassis_filled_event, out_gate_resource)) - train_id_counter += 1 + state.oc_chassis_filled_event = env.event() + yield env.process(process_train(env, train_id, cranes, hostlers, chassis, in_gate_resource, outbound_containers_store, truck_store, train_processing, out_gate_resource)) + state.train_id_counter += 1 - record_oc_label += OUTBOUND_CONTAINER_NUMBER + state.record_oc_label += state.OUTBOUND_CONTAINER_NUMBER # print("record_oc_label", record_oc_label) # print("oc_variance in train_process:", oc_variance) -def process_train(env, train_id, cranes, hostlers, chassis, in_gate_resource, outbound_containers_store, truck_store, train_processing, oc_chassis_filled_event, out_gate_resource): - global oc_variance, time_per_train, train_series, INBOUND_CONTAINER_NUMBER, OUTBOUND_CONTAINER_NUMBER, record_oc_label, TRAIN_ID_FIXED +def process_train(env, train_id, cranes, hostlers, chassis, in_gate_resource, outbound_containers_store, truck_store, train_processing, out_gate_resource): + global state start_time = env.now @@ -168,8 +171,8 @@ def process_train(env, train_id, cranes, hostlers, chassis, in_gate_resource, ou chassis_inbound_ids = [] # To save chassis_id, current_inbound_id to hostler_transfer_IC_single_loop # if train_id < TRAIN_NUMBERS: - for chassis_id in range(1, int(INBOUND_CONTAINER_NUMBER) + 1): - unload_process = env.process(crane_and_chassis(env, train_id, 'unload', cranes, hostlers, chassis, truck_store, train_processing, outbound_containers_store, in_gate_resource, out_gate_resource, oc_chassis_filled_event)) + for chassis_id in range(1, int(state.INBOUND_CONTAINER_NUMBER) + 1): + unload_process = env.process(crane_and_chassis(env, train_id, 'unload', cranes, hostlers, chassis, truck_store, train_processing, outbound_containers_store, in_gate_resource, out_gate_resource)) unload_processes.append(unload_process) # All IC are processed @@ -182,7 +185,7 @@ def process_train(env, train_id, cranes, hostlers, chassis, in_gate_resource, ou chassis_id, current_inbound_id = result chassis_inbound_ids.append((chassis_id, current_inbound_id)) env.process(hostler_transfer(env, hostlers, 'inbound', chassis, chassis_id, current_inbound_id, truck_store, cranes, - train_processing, outbound_containers_store, in_gate_resource, oc_chassis_filled_event, + train_processing, outbound_containers_store, in_gate_resource, out_gate_resource)) # # Once all OC are dropped by hostlers, crane start working @@ -194,36 +197,36 @@ def process_train(env, train_id, cranes, hostlers, chassis, in_gate_resource, ou # Cranes move all OC to chassis load_processes = [] - for chassis_id in range(1, OUTBOUND_CONTAINER_NUMBER + 1): - load_process = env.process(crane_and_chassis(env, train_id, 'load', cranes, hostlers, chassis, truck_store, train_processing, outbound_containers_store, in_gate_resource, oc_chassis_filled_event, out_gate_resource, chassis_id=chassis_id)) + for chassis_id in range(1, state.OUTBOUND_CONTAINER_NUMBER + 1): + load_process = env.process(crane_and_chassis(env, train_id, 'load', cranes, hostlers, chassis, truck_store, train_processing, outbound_containers_store, in_gate_resource, out_gate_resource, chassis_id=chassis_id)) load_processes.append(load_process) yield simpy.events.AllOf(env, load_processes) # Check if all outbound containers are loaded (all chassis is empty 0), the train departs - if chassis_status.count(-1) == TRAIN_UNITS: + if state.chassis_status.count(-1) == state.TRAIN_UNITS: # oc_chassis_filled_event.succeed() - TRAIN_ID_FIXED = TRAIN_ID - print(f"Train {TRAIN_ID_FIXED} is ready to depart at {env.now}.") + state.TRAIN_ID_FIXED = state.TRAIN_ID + print(f"Train {state.TRAIN_ID_FIXED} is ready to depart at {env.now}.") env.process(train_departure(env, train_id)) - time_per_train.append(env.now - start_time) + state.time_per_train.append(env.now - start_time) end_time = env.now - time_per_train.append(end_time - start_time) - train_series += 1 - oc_variance += OUTBOUND_CONTAINER_NUMBER + state.time_per_train.append(end_time - start_time) + state.train_series += 1 + state.oc_variance += state.OUTBOUND_CONTAINER_NUMBER -def crane_and_chassis(env, train_id, action, cranes, hostlers, chassis, truck_store, train_processing, outbound_containers_store, in_gate_resource, out_gate_resource, oc_chassis_filled_event, chassis_id=None): - global record_oc_label, crane_id_counter, chassis_status, inbound_container_id_counter, outbound_containers_mapping, outbound_container_id_counter, INBOUND_CONTAINER_NUMBER, OUTBOUND_CONTAINER_NUMBER +def crane_and_chassis(env, train_id, action, cranes, hostlers, chassis, truck_store, train_processing, outbound_containers_store, in_gate_resource, out_gate_resource, chassis_id=None): + global state # # Print before requesting crane resource if action == 'unload': - crane_id = crane_id_counter - crane_id_counter = (crane_id_counter % CRANE_NUMBER) + 1 + crane_id = state.crane_id_counter + state.crane_id_counter = (state.crane_id_counter % state.CRANE_NUMBER) + 1 # print("inbound_id_counter", inbound_container_id_counter) - for container_id in range(int(inbound_container_id_counter), int(inbound_container_id_counter) + int(INBOUND_CONTAINER_NUMBER)): # fix float error + for container_id in range(int(state.inbound_container_id_counter), int(state.inbound_container_id_counter) + int(state.INBOUND_CONTAINER_NUMBER)): # fix float error # print("container_id now:", container_id) - yield env.timeout(CRANE_UNLOAD_CONTAINER_TIME_MEAN + random.uniform(0, CRANE_MOVE_DEV_TIME)) + yield env.timeout(state.CRANE_UNLOAD_CONTAINER_TIME_MEAN + random.uniform(0, state.CRANE_MOVE_DEV_TIME)) record_event(container_id, 'crane_unload', env.now) # print(f"Crane {crane_id} unloads inbound container {inbound_container_id_counter} from train {train_id} at {env.now}") @@ -241,52 +244,52 @@ def crane_and_chassis(env, train_id, action, cranes, hostlers, chassis, truck_st # print(f"[{env.now}] Crane {crane_id_counter} acquired crane resource. Available cranes: {cranes.count}/{cranes.capacity}") start_time = env.now - record_vehicle_event('crane', crane_id_counter, 'start', start_time) # performance record: starting + record_vehicle_event('crane', state.crane_id_counter, 'start', start_time) # performance record: starting if action == 'unload': # crane_id = crane_id_counter # crane_id_counter = (crane_id_counter % CRANE_NUMBER) + 1 - chassis_id = ((inbound_container_id_counter - 1) % CHASSIS_NUMBER) + 1 + chassis_id = ((state.inbound_container_id_counter - 1) % state.CHASSIS_NUMBER) + 1 - current_inbound_id = inbound_container_id_counter - inbound_container_id_counter += 1 + current_inbound_id = state.inbound_container_id_counter + state.inbound_container_id_counter += 1 # yield env.timeout(CRANE_UNLOAD_CONTAINER_TIME_MEAN + random.uniform(0, CRANE_MOVE_DEV_TIME)) # for chassis_id in range(int(inbound_container_id_counter), int(inbound_container_id_counter) + int(INBOUND_CONTAINER_NUMBER)): - chassis_status[chassis_id - 1] = 1 + state.chassis_status[chassis_id - 1] = 1 end_time = env.now - record_vehicle_event('crane', crane_id_counter, 'end', end_time) # performance record: ending + record_vehicle_event('crane', state.crane_id_counter, 'end', end_time) # performance record: ending # hostler picks up IC - env.process(hostler_transfer(env, hostlers, 'inbound', chassis, chassis_id, current_inbound_id, truck_store, cranes, train_processing, outbound_containers_store, in_gate_resource, oc_chassis_filled_event, out_gate_resource)) + env.process(hostler_transfer(env, hostlers, 'inbound', chassis, chassis_id, current_inbound_id, truck_store, cranes, train_processing, outbound_containers_store, in_gate_resource, out_gate_resource)) return chassis_id, current_inbound_id elif action == 'load': - if chassis_id not in outbound_containers_mapping: + if chassis_id not in state.outbound_containers_mapping: print(f"Notice: No outbound container mapped to chassis {chassis_id} at {env.now}") return - container_id = outbound_containers_mapping[chassis_id] # Retrieve container ID from mapping + container_id = state.outbound_containers_mapping[chassis_id] # Retrieve container ID from mapping # print("outbound_containers_mapping in crane and chassis func:", outbound_containers_mapping) # print("container_id in crane and chassis func:", container_id) - if CRANE_NUMBER == 1: + if state.CRANE_NUMBER == 1: crane_id = 1 else: - crane_id = (chassis_id % CRANE_NUMBER) + 1 + crane_id = (chassis_id % state.CRANE_NUMBER) + 1 - chassis_status[chassis_id - 1] = -1 + state.chassis_status[chassis_id - 1] = -1 # yield env.timeout(CRANE_LOAD_CONTAINER_TIME_MEAN + random.uniform(0, CRANE_MOVE_DEV_TIME)) # chassis_status[chassis_id - 1] = -1 # print(f"Crane {crane_id} loads outbound container {container_id} from chassis {chassis_id} to train {TRAIN_ID} at {env.now}") # record_event(container_id, 'crane_load', env.now) - for container_id in range(record_oc_label, record_oc_label + OUTBOUND_CONTAINER_NUMBER): - yield env.timeout(CRANE_LOAD_CONTAINER_TIME_MEAN + random.uniform(0, CRANE_MOVE_DEV_TIME)) + for container_id in range(state.record_oc_label, state.record_oc_label + state.OUTBOUND_CONTAINER_NUMBER): + yield env.timeout(state.CRANE_LOAD_CONTAINER_TIME_MEAN + random.uniform(0, state.CRANE_MOVE_DEV_TIME)) # chassis_status[chassis_id - 1] = -1 # print(f"Crane {crane_id} loads outbound container {container_id} to train {TRAIN_ID} at {env.now}") record_event(container_id, 'crane_load', env.now) @@ -295,65 +298,61 @@ def crane_and_chassis(env, train_id, action, cranes, hostlers, chassis, truck_st # print(f"[{env.now}] Crane {crane_id_counter} has released crane resource. Available cranes: {cranes.count}/{cranes.capacity}") -def hostler_transfer(env, hostlers, container_type, chassis, chassis_id, container_id, truck_store, cranes, train_processing, outbound_containers_store, in_gate_resource, oc_chassis_filled_event, out_gate_resource): - global hostler_id_counter, chassis_status, outbound_containers_mapping, outbound_container_id, record_oc_label, HOSTLER_NUMBER +def hostler_transfer(env, hostlers, container_type, chassis, chassis_id, container_id, truck_store, cranes, train_processing, outbound_containers_store, in_gate_resource, out_gate_resource): + global state with hostlers.request() as request: yield request start_time = env.now - record_vehicle_event('hostler', hostler_id_counter, 'start', start_time) # performance record + record_vehicle_event('hostler', state.hostler_id_counter, 'start', start_time) # performance record - hostler_id = hostler_id_counter - hostler_id_counter = (hostler_id_counter % HOSTLER_NUMBER) + 1 + hostler_id = state.hostler_id_counter + state.hostler_id_counter = (state.hostler_id_counter % HOSTLER_NUMBER) + 1 with chassis.request() as chassis_request: yield chassis_request - if container_type == 'inbound' and chassis_status[chassis_id - 1] == 1: + if container_type == 'inbound' and state.chassis_status[chassis_id - 1] == 1: d_h_dist = create_triang_distribution(d_h_min, d_h_avg, d_h_max).rvs() - HOSTLER_TRANSPORT_CONTAINER_TIME = d_h_dist / (2 * HOSTLER_SPEED_LIMIT) - print(f"Hostler pick-up time is:{HOSTLER_TRANSPORT_CONTAINER_TIME}") - yield env.timeout(HOSTLER_TRANSPORT_CONTAINER_TIME) + state.HOSTLER_TRANSPORT_CONTAINER_TIME = d_h_dist / (2 * state.HOSTLER_SPEED_LIMIT) + print(f"Hostler pick-up time is:{state.HOSTLER_TRANSPORT_CONTAINER_TIME}") + yield env.timeout(state.HOSTLER_TRANSPORT_CONTAINER_TIME) record_event(container_id, 'hostler_pickup', env.now) print(f"Hostler {hostler_id} picks up inbound container {container_id} from chassis {chassis_id} and heads to parking area at {env.now}") - chassis_status[chassis_id - 1] = -1 + state.chassis_status[chassis_id - 1] = -1 # Hostler drop off: different route for picking-up and dropping-off d_h_dist = create_triang_distribution(d_h_min, d_h_avg, d_h_max).rvs() - HOSTLER_TRANSPORT_CONTAINER_TIME = d_h_dist / (2 * HOSTLER_SPEED_LIMIT) - print(f"Hostler drop-off time is:{HOSTLER_TRANSPORT_CONTAINER_TIME}") - yield env.timeout(HOSTLER_TRANSPORT_CONTAINER_TIME) + state.HOSTLER_TRANSPORT_CONTAINER_TIME = d_h_dist / (2 * state.HOSTLER_SPEED_LIMIT) + print(f"Hostler drop-off time is:{state.HOSTLER_TRANSPORT_CONTAINER_TIME}") + yield env.timeout(state.HOSTLER_TRANSPORT_CONTAINER_TIME) record_event(container_id, 'hostler_dropoff', env.now) print(f"Hostler {hostler_id} drops off inbound container {container_id} from chassis {chassis_id} and moves toward the assigned outbound container at {env.now}") end_time = env.now - record_vehicle_event('hostler', hostler_id_counter, 'end', end_time) # performance record + record_vehicle_event('hostler', state.hostler_id_counter, 'end', end_time) # performance record # Process functions of notify_truck and handle_outbound_container simultaneously env.process(notify_truck(env, truck_store, container_id, out_gate_resource)) # Assign outbound container and chassis_id for the hostler which drops off an inbound container - chassis_id, outbound_container_id = yield env.process(outbound_container_decision_making( + chassis_id, state.outbound_container_id = yield env.process(outbound_container_decision_making( env, hostlers, chassis, container_id, truck_store, cranes, train_processing, outbound_containers_store, - in_gate_resource, oc_chassis_filled_event, out_gate_resource, chassis_status, - outbound_containers_mapping, - record_oc_label, outbound_container_id - )) + in_gate_resource, out_gate_resource)) # Process outbound containers - if chassis_id is not None and outbound_container_id is not None: - env.process(handle_outbound_container(env, hostler_id, chassis_id, outbound_container_id, truck_store, - cranes, train_processing, outbound_containers_store, in_gate_resource, - oc_chassis_filled_event)) + if chassis_id is not None and state.outbound_container_id is not None: + env.process(handle_outbound_container(env, hostler_id, chassis_id, truck_store, + cranes, train_processing, outbound_containers_store, in_gate_resource,)) # When OC are fully processed, but IC are not -def hostler_transfer_IC_single_loop(env, hostlers, container_type, chassis, chassis_id, container_id, truck_store, cranes, train_processing, outbound_containers_store, in_gate_resource, oc_chassis_filled_event, out_gate_resource): +def hostler_transfer_IC_single_loop(env, hostlers, container_type, chassis, chassis_id, container_id, truck_store, cranes, train_processing, outbound_containers_store, in_gate_resource, out_gate_resource): print(f"Starting single hostler transfer IC loop for chassis {chassis_id} at {env.now}") - global hostler_id_counter + global state print(f"Requesting hostler for IC at chassis {chassis_id} at {env.now}") @@ -362,24 +361,24 @@ def hostler_transfer_IC_single_loop(env, hostlers, container_type, chassis, chas yield request start_time = env.now - record_vehicle_event('hostler', hostler_id_counter, 'start', start_time) # performance record + record_vehicle_event('hostler', state.hostler_id_counter, 'start', start_time) # performance record - hostler_id = hostler_id_counter - hostler_id_counter = (hostler_id_counter % HOSTLER_NUMBER) + 1 + hostler_id = state.hostler_id_counter + state.hostler_id_counter = (state.hostler_id_counter % HOSTLER_NUMBER) + 1 with chassis.request() as chassis_request: yield chassis_request - if container_type == 'inbound' and chassis_status[chassis_id - 1] == 1: - chassis_status[chassis_id - 1] = -1 - print(f"Single loop chassis status {chassis_status}") - print(f"There are {chassis_status.count(1)} IC") - print(f"There are {chassis_status.count(-1)} empty") - print(f"There are {chassis_status.count(0)} OC") + if container_type == 'inbound' and state.chassis_status[chassis_id - 1] == 1: + state.chassis_status[chassis_id - 1] = -1 + print(f"Single loop chassis status {state.chassis_status}") + print(f"There are {state.chassis_status.count(1)} IC") + print(f"There are {state.chassis_status.count(-1)} empty") + print(f"There are {state.chassis_status.count(0)} OC") d_h_dist = create_triang_distribution(d_h_min, d_h_avg, d_h_max).rvs() - HOSTLER_TRANSPORT_CONTAINER_TIME = d_h_dist / (2 * HOSTLER_SPEED_LIMIT) + state.HOSTLER_TRANSPORT_CONTAINER_TIME = d_h_dist / (2 * state.HOSTLER_SPEED_LIMIT) - yield env.timeout(HOSTLER_TRANSPORT_CONTAINER_TIME) + yield env.timeout(state.HOSTLER_TRANSPORT_CONTAINER_TIME) # hostler picks up the rest of IC from the chassis # chassis_status[chassis_id - 1] = -1 record_event(container_id, 'hostler_pickup', env.now) @@ -387,25 +386,25 @@ def hostler_transfer_IC_single_loop(env, hostlers, container_type, chassis, chas # hostler drops off the IC d_h_dist = create_triang_distribution(d_h_min, d_h_avg, d_h_max).rvs() - HOSTLER_TRANSPORT_CONTAINER_TIME = d_h_dist / (2 * HOSTLER_SPEED_LIMIT) - yield env.timeout(HOSTLER_TRANSPORT_CONTAINER_TIME) + state.HOSTLER_TRANSPORT_CONTAINER_TIME = d_h_dist / (2 * state.HOSTLER_SPEED_LIMIT) + yield env.timeout(state.HOSTLER_TRANSPORT_CONTAINER_TIME) record_event(container_id, 'hostler_dropoff', env.now) print(f"Hostler {hostler_id} drops off inbound container {container_id} from chassis {chassis_id} to parking area at {env.now}") # Check if all chassis filled - if chassis_status.count(0) == OUTBOUND_CONTAINER_NUMBER and chassis_status.count( - -1) == TRAIN_UNITS - OUTBOUND_CONTAINER_NUMBER and not oc_chassis_filled_event.triggered: - print(f"Chassis is fully filled with OC, and cranes start moving: {chassis_status}") - print(f"where there are {chassis_status.count(0)} chassis filled with OC (0)") - print(f"where there are {chassis_status.count(-1)} chassis filled with empty (-1)") - print(f"where there are {chassis_status.count(1)} chassis filled with IC (1)") - oc_chassis_filled_event.succeed() + if state.chassis_status.count(0) == state.OUTBOUND_CONTAINER_NUMBER and state.chassis_status.count( + -1) == state.TRAIN_UNITS - state.OUTBOUND_CONTAINER_NUMBER and not state.oc_chassis_filled_event.triggered: + print(f"Chassis is fully filled with OC, and cranes start moving: {state.chassis_status}") + print(f"where there are {state.chassis_status.count(0)} chassis filled with OC (0)") + print(f"where there are {state.chassis_status.count(-1)} chassis filled with empty (-1)") + print(f"where there are {state.chassis_status.count(1)} chassis filled with IC (1)") + state.oc_chassis_filled_event.succeed() return else: - print(f"Chassis is not fully filled: {chassis_status}") - print(f"where there are {chassis_status.count(0)} chassis filled with OC (0)") - print(f"where there are {chassis_status.count(-1)} chassis filled with empty (-1)") - print(f"where there are {chassis_status.count(1)} chassis filled with IC (1)") + print(f"Chassis is not fully filled: {state.chassis_status}") + print(f"where there are {state.chassis_status.count(0)} chassis filled with OC (0)") + print(f"where there are {state.chassis_status.count(-1)} chassis filled with empty (-1)") + print(f"where there are {state.chassis_status.count(1)} chassis filled with IC (1)") end_time = env.now record_vehicle_event('hostler', hostler_id, 'end', end_time) # performance record @@ -414,19 +413,20 @@ def hostler_transfer_IC_single_loop(env, hostlers, container_type, chassis, chas yield env.process(notify_truck(env, truck_store, container_id, out_gate_resource)) -def outbound_container_decision_making(env, hostlers, chassis, current_inbound_id, truck_store, cranes, train_processing, outbound_containers_store, in_gate_resource, oc_chassis_filled_event, out_gate_resource, chassis_status, outbound_containers_mapping, record_oc_label, outbound_container_id): +def outbound_container_decision_making(env, hostlers, chassis, current_inbound_id, truck_store, cranes, train_processing, outbound_containers_store, in_gate_resource, out_gate_resource): + global state # Check if outbound_containers_store has outbound container if len(outbound_containers_store.items) > 0: outbound_container_id = yield outbound_containers_store.get() print(f"Outbound containers remaining: {len(outbound_containers_store.items)}") - if -1 in chassis_status: - chassis_id = chassis_status.index(-1) + 1 # find the first chassis + if -1 in state.chassis_status: + chassis_id = state.chassis_status.index(-1) + 1 # find the first chassis # If chassis are not assigned with outbound container - if chassis_id not in outbound_containers_mapping: - # outbound_container_id += record_oc_label - outbound_containers_mapping[chassis_id] = outbound_container_id - chassis_status[chassis_id - 1] = 0 # already assigned outbound container + if chassis_id not in state.outbound_containers_mapping: + # outbound_container_id += state.record_oc_label + state.outbound_containers_mapping[chassis_id] = outbound_container_id + state.chassis_status[chassis_id - 1] = 0 # already assigned outbound container print(f"OC mapping created: outbound container {outbound_container_id} assigned to chassis {chassis_id}") else: print(f"Chassis {chassis_id} is already mapped to an outbound container.") @@ -438,70 +438,70 @@ def outbound_container_decision_making(env, hostlers, chassis, current_inbound_i chassis_id = None outbound_container_id = None # chassis_status = 1: inbound containers are not loaded - if chassis_status.count(1) != 0: + if state.chassis_status.count(1) != 0: print(f"Haven't finished all IC yet at {env.now}. Starting single loop.") - chassis_id = chassis_status.index(1) + 1 - chassis_status[chassis_id - 1] = 0 # assigned with IC + chassis_id = state.chassis_status.index(1) + 1 + state.chassis_status[chassis_id - 1] = 0 # assigned with IC # single loop takes rest inbound container yield env.process(hostler_transfer_IC_single_loop(env, hostlers, 'inbound', chassis, chassis_id, current_inbound_id, truck_store, cranes, train_processing, - outbound_containers_store, in_gate_resource, oc_chassis_filled_event, - out_gate_resource)) + outbound_containers_store, in_gate_resource, out_gate_resource)) else: print("All inbound containers have been processed.") return chassis_id, outbound_container_id -def handle_outbound_container(env, hostler_id, chassis_id, outbound_container_id, truck_store, cranes, train_processing, outbound_containers_store, in_gate_resource, oc_chassis_filled_event): - global HOSTLER_FIND_CONTAINER_TIME +def handle_outbound_container(env, hostler_id, chassis_id, truck_store, cranes, train_processing, outbound_containers_store, in_gate_resource): + global state d_h_dist = create_triang_distribution(d_h_min, d_h_avg, d_h_max).rvs() - HOSTLER_TRANSPORT_CONTAINER_TIME = d_h_dist / (2 * HOSTLER_SPEED_LIMIT) + state.HOSTLER_TRANSPORT_CONTAINER_TIME = d_h_dist / (2 * state.HOSTLER_SPEED_LIMIT) d_r_dist = create_triang_distribution(d_r_min, d_r_avg, d_r_max).rvs() - HOSTLER_FIND_CONTAINER_TIME = d_r_dist / (2 * TRUCK_SPEED_LIMIT) - yield env.timeout(HOSTLER_FIND_CONTAINER_TIME) + state.HOSTLER_FIND_CONTAINER_TIME = d_r_dist / (2 * state.TRUCK_SPEED_LIMIT) + yield env.timeout(state.HOSTLER_FIND_CONTAINER_TIME) - record_event(outbound_container_id, 'hostler_pickup', env.now) - print(f"Hostler {hostler_id} picks up outbound container {outbound_container_id} from parking area to chassis {chassis_id} at {env.now}") + record_event(state.outbound_container_id, 'hostler_pickup', env.now) + print(f"Hostler {hostler_id} picks up outbound container {state.outbound_container_id} from parking area to chassis {chassis_id} at {env.now}") - yield env.timeout(HOSTLER_TRANSPORT_CONTAINER_TIME) + yield env.timeout(state.HOSTLER_TRANSPORT_CONTAINER_TIME) - record_event(outbound_container_id, 'hostler_dropoff', env.now) - print(f"Hostler {hostler_id} drops off outbound container {outbound_container_id} to chassis {chassis_id} at {env.now}") + record_event(state.outbound_container_id, 'hostler_dropoff', env.now) + print(f"Hostler {hostler_id} drops off outbound container {state.outbound_container_id} to chassis {chassis_id} at {env.now}") # truck pick up IC def notify_truck(env, truck_store, container_id, out_gate_resource): + global state truck_id = yield truck_store.get() - yield env.timeout(TRUCK_INGATE_TIME) + yield env.timeout(state.TRUCK_INGATE_TIME) print(f"Truck {truck_id} arrives at parking area and prepare to pick up inbound container {container_id} at {env.now}") yield env.process(truck_transfer(env, truck_id, container_id, out_gate_resource)) def truck_transfer(env, truck_id, container_id, out_gate_resource): - global TRUCK_INGATE_TIME, TRUCK_TRANSPORT_CONTAINER_TIME, outbound_container_id_counter + global state start_time = env.now record_vehicle_event('truck', truck_id, 'start', start_time) # performance record # Truck moves to the parking area - yield env.timeout(TRUCK_TO_PARKING) + yield env.timeout(state.TRUCK_TO_PARKING) record_event(container_id, 'truck_pickup', env.now) print(f"Truck {truck_id} picks up inbound container {container_id} at {env.now}") # Calculate the transport time for the truck d_t_dist = create_triang_distribution(d_t_min, d_t_avg, d_t_max).rvs() - TRUCK_TRANSPORT_CONTAINER_TIME = d_t_dist / (2 * TRUCK_SPEED_LIMIT) - yield env.timeout(TRUCK_TRANSPORT_CONTAINER_TIME) + state.TRUCK_TRANSPORT_CONTAINER_TIME = d_t_dist / (2 * state.TRUCK_SPEED_LIMIT) + yield env.timeout(state.TRUCK_TRANSPORT_CONTAINER_TIME) # Request out_gate_resource resource before the truck exits with out_gate_resource.request() as request: yield request # Simulate the time it takes for the truck to pass through the gate - yield env.timeout(TRUCK_OUTGATE_TIME + random.uniform(0,TRUCK_OUTGATE_TIME_DEV)) + yield env.timeout(state.TRUCK_OUTGATE_TIME + random.uniform(0,state.TRUCK_OUTGATE_TIME_DEV)) record_event(container_id, 'truck_exit', env.now) print(f"Truck {truck_id} exits gate with inbound container {container_id} at {env.now}") @@ -511,30 +511,35 @@ def truck_transfer(env, truck_id, container_id, out_gate_resource): def train_departure(env, train_id): - global TRAIN_ID_FIXED, record_oc_label + global state - if env.now < TRAIN_DEPARTURE_HR: - yield env.timeout(TRAIN_DEPARTURE_HR - env.now) - yield env.timeout(TRAIN_INSPECTION_TIME) - print(f"Train {TRAIN_ID_FIXED} ({train_id} in the dictionary) departs at {env.now}") + if env.now < state.TRAIN_DEPARTURE_HR: + yield env.timeout(state.TRAIN_DEPARTURE_HR - env.now) + yield env.timeout(state.TRAIN_INSPECTION_TIME) + print(f"Train {state.TRAIN_ID_FIXED} ({train_id} in the dictionary) departs at {env.now}") - for container_id in range(record_oc_label - OUTBOUND_CONTAINER_NUMBER, record_oc_label): + for container_id in range(state.record_oc_label - state.OUTBOUND_CONTAINER_NUMBER, state.record_oc_label): record_event(container_id, 'train_depart', env.now) -def run_simulation(): - global all_trucks_ready_event, record_oc_label, TRUCK_NUMBERS, TRAIN_NUMBERS +def run_simulation( + train_consist_plan: pl.DataFrame, + terminal: str, + out_path = None): + global state + state.terminal = terminal + state.initialize_from_consist_plan(train_consist_plan) - print(f"Starting simulation with No.{TRAIN_ID} trains, {HOSTLER_NUMBER} hostlers, {CRANE_NUMBER} cranes, and {TRUCK_NUMBERS} trucks.") + print(f"Starting simulation with No.{state.TRAIN_ID} trains, {state.HOSTLER_NUMBER} hostlers, {state.CRANE_NUMBER} cranes, and {state.TRUCK_NUMBERS} trucks.") env = simpy.Environment() # Resources train_processing = simpy.Resource(env, capacity=1) - cranes = simpy.Resource(env, capacity=CRANE_NUMBER) - chassis = simpy.Resource(env, capacity=CHASSIS_NUMBER) - hostlers = simpy.Resource(env, capacity=HOSTLER_NUMBER) - in_gate_resource = simpy.Resource(env, capacity=IN_GATE_NUMBERS) - out_gate_resource = simpy.Resource(env, capacity=OUT_GATE_NUMBERS) + cranes = simpy.Resource(env, capacity=state.CRANE_NUMBER) + chassis = simpy.Resource(env, capacity=state.CHASSIS_NUMBER) + hostlers = simpy.Resource(env, capacity=state.HOSTLER_NUMBER) + in_gate_resource = simpy.Resource(env, capacity=state.IN_GATE_NUMBERS) + out_gate_resource = simpy.Resource(env, capacity=state.OUT_GATE_NUMBERS) outbound_containers_store = simpy.Store(env, capacity=100) truck_store = simpy.Store(env, capacity=100) @@ -545,7 +550,7 @@ def run_simulation(): truck_store.put(truck_id) # print("TRUCK_STORE:", truck_store.items) - all_trucks_ready_event = env.event() + state.all_trucks_ready_event = env.event() # # toy case # train_timetable = [ @@ -557,58 +562,83 @@ def run_simulation(): # ] # REAL TEST - train_timetable = timetable(terminal) - TRAIN_NUMBERS = len(timetable(terminal)) + train_timetable = build_train_timetable(train_consist_plan, terminal, swap_arrive_depart = True, as_dicts = True) + TRAIN_NUMBERS = len(train_timetable) # env.process(train_arrival(env, train_processing, cranes, in_gate_resource, outbound_containers_store, truck_store, train_timetable)) env.process(train_arrival(env, train_timetable, train_processing, cranes, hostlers, chassis, in_gate_resource, outbound_containers_store, truck_store, out_gate_resource)) - env.run(until=SIM_TIME) + env.run(until=state.sim_time) # Performance Matrix: train processing time - avg_time_per_train = sum(time_per_train) / len(time_per_train) - print(f"Average train processing time: {sum(time_per_train) / len(time_per_train) if time_per_train else 0:.2f}") + avg_time_per_train = sum(state.time_per_train) / len(state.time_per_train) + print(f"Average train processing time: {sum(state.time_per_train) / len(state.time_per_train) if state.time_per_train else 0:.2f}") print("Simulation completed. ") with open("avg_time_per_train.txt", "w") as f: f.write(str(avg_time_per_train)) # Create DataFrame for container events - container_data = [] - - for container_id, events in sorted(container_events.items()): - container_type = 'inbound' if container_id < 10001 else 'outbound' - if container_type == 'inbound': - container_process_time = events.get('truck_exit', '-') - events.get('train_arrival', '-') if 'truck_exit' in events and 'train_arrival' in events else '-' - else: - container_process_time = events.get('train_depart', '-') - events.get('truck_drop_off', '-') if 'train_depart' in events and 'truck_drop_off' in events else '-' - - container_data.append({ - 'container_id': container_id, - 'container_type': container_type, - 'train_arrival': events.get('train_arrival', '-'), - 'truck_arrival': events.get('truck_arrival', '-'), - 'crane_unload': events.get('crane_unload', '-'), - 'hostler_pickup': events.get('hostler_pickup', '-'), - 'hostler_dropoff': events.get('hostler_dropoff', '-'), - 'truck_drop_off': events.get('truck_drop_off', '-'), - 'truck_pickup': events.get('truck_pickup', '-'), - 'truck_exit': events.get('truck_exit', '-'), - 'crane_load': events.get('crane_load', '-'), - 'train_depart': events.get('train_depart', '-'), - 'container_processing_time': container_process_time - }) - - df = pd.DataFrame(container_data) - filename = f"C:/Users/Irena Tong/PycharmProjects/simulation_test/test/results/simulation_crane_{CRANE_NUMBER}_hostler_{HOSTLER_NUMBER}.xlsx" - df.to_excel(filename, index=False) + events_list = [(container_id, events) for container_id, events in sorted(state.container_events.items())] + container_data = ( + pl.concat([ + pl.DataFrame(data = None, schema = { + 'container_id': pl.UInt32, + 'container_type': pl.Utf8, + 'train_arrival': pl.Float64, + 'truck_arrival': pl.Float64, + 'crane_unload': pl.Float64, + 'hostler_pickup': pl.Float64, + 'hostler_dropoff': pl.Float64, + 'truck_drop_off': pl.Float64, + 'truck_pickup': pl.Float64, + 'truck_exit': pl.Float64, + 'crane_load': pl.Float64, + 'train_depart': pl.Float64}), + pl.concat( + [ + pl.DataFrame({"container_id": [container_id for container_id, event in events_list]}) + .with_columns( + pl.when(pl.col("container_id") < 10001).then(pl.lit("inbound")).otherwise(pl.lit("outbound")).alias("container_type") + ), + pl.from_dicts([event for container_id, event in events_list]) + ], how="horizontal") + ], how="diagonal_relaxed") + .with_columns( + pl.when( + pl.col("container_type") == pl.lit("inbound"), + pl.col("truck_exit").is_not_null(), + pl.col("train_arrival").is_not_null() + ) + .then( + pl.col("truck_exit") - pl.col("train_arrival") + ) + .when( + pl.col("container_type") == pl.lit("outbound"), + pl.col("train_depart").is_not_null(), + pl.col("truck_drop_off").is_not_null() + ) + .then( + pl.col("train_depart") - pl.col("truck_drop_off") + ) + .otherwise(None) + .alias("container_processing_time") + ) + ) + if out_path is not None: + container_data.write_excel(out_path / f"simulation_crane_{CRANE_NUMBER}_hostler_{HOSTLER_NUMBER}.xlsx") # Use save_average_times and save_vehicle_logs for vehicle related logs save_average_times() save_vehicle_logs() print("Done!") + return container_data if __name__ == "__main__": - run_simulation() \ No newline at end of file + run_simulation( + train_consist_plan=pl.read_csv(utilities.package_root() / 'demos' / 'starter_demo' / 'train_consist_plan.csv'), + terminal = "Allouez", + out_path = utilities.package_root() / 'demos' / 'starter_demo' / 'results' + ) \ No newline at end of file diff --git a/python/lifts/merged_baseline.py b/python/lifts/merged_baseline.py index 9e41832e..b5bcb455 100644 --- a/python/lifts/merged_baseline.py +++ b/python/lifts/merged_baseline.py @@ -445,7 +445,7 @@ def run_simulation(): env.process(train_arrival(env, train_timetable, train_processing, cranes, hostlers, chassis, in_gate_resource, outbound_containers_store, truck_store, out_gate_resource)) - env.run(until=SIM_TIME) + env.run(until=state.sim_time) print(f"Average train processing time: {sum(time_per_train) / len(time_per_train) if time_per_train else 0:.2f}") print("Simulation completed. ") diff --git a/python/lifts/parameters.py b/python/lifts/parameters.py index 6ffc0de4..1c1c3f2e 100644 --- a/python/lifts/parameters.py +++ b/python/lifts/parameters.py @@ -1,120 +1,123 @@ -from schedule import * +import polars +import simpy +from dataclasses import dataclass, field +from lifts.schedule import * -# Simulation parameters -RANDOM_SEED = 42 -SIM_TIME = 1100 -terminal = 'Allouez' # choose 'Hibbing' or 'Allouez' - - -# Counting vehicles -train_id_counter = 1 -crane_id_counter = 1 -hostler_id_counter = 1 -truck_id_counter = 1 -total_initial_oc_trucks = 1 -empty_truck_id_counter = 1 - - -# inbound container counting -inbound_containers_processed = 0 # trucks drop off OC to chassis -inbound_containers_hostler_processed = 0 # hostlers pick up IC from chassis -inbound_container_id_counter = 1 - -# outbound container counting -outbound_container_id_counter = 10001 -outbound_containers_processed = 0 # trucks pick up IC from chassis -outbound_containers_hostler_processed = 0 # hostlers drop off OC to chassis -outbound_container_id = 0 # initialize OC id for chassis assignment -record_oc_label = 10001 # update outbound_containers_mapping among trains -oc_variance = 0 # record previous batch OC numbers cumulatively - -# yield events or conditions -all_trucks_ready_event = None # initialize trucks -train_has_arrived_event = None # crane starts working after the train arrives -train_departure_event = None # train arrives after the last train departs -oc_chassis_filled_event = None # outbound containers fill available chassis before cranes load - - -# Trains -def train_arrival_parameters(terminal): - global train_id_counter - timetable = train_timetable(terminal) +def train_arrival_parameters(train_consist_plan, terminal, train_id_counter): + timetable = build_train_timetable(train_consist_plan, terminal, swap_arrive_depart = False, as_dicts = False) TRAIN_TIMETABLE = timetable.iloc[train_id_counter-1] return TRAIN_TIMETABLE +@dataclass +class LiftsState: + # Simulation parameters + random_seed: int = 42 + sim_time: int = 1100 + terminal: str = 'Allouez' # choose 'Hibbing' or 'Allouez' + # Counting vehicles + train_id_counter: int = 1 + crane_id_counter: int = 1 + hostler_id_counter: int = 1 + truck_id_counter: int = 1 + total_initial_oc_trucks: int = 1 + empty_truck_id_counter: int = 1 + # inbound container counting + inbound_containers_processed: int = 0 # trucks drop off OC to chassis + inbound_containers_hostler_processed: int = 0 # hostlers pick up IC from chassis + inbound_container_id_counter: int = 1 + # outbound container counting + outbound_container_id_counter: int = 10001 + outbound_containers_processed: int = 0 # trucks pick up IC from chassis + outbound_containers_hostler_processed: int = 0 # hostlers drop off OC to chassis + outbound_container_id: int = 0 # initialize OC id for chassis assignment + record_oc_label: int = 10001 # update outbound_containers_mapping among trains + oc_variance: int = 0 # record previous batch OC numbers cumulatively + # yield events or conditions + all_trucks_ready_event: simpy.events.Event = None # initialize trucks + train_has_arrived_event: simpy.events.Event = None # crane starts working after the train arrives + train_departure_event: simpy.events.Event = None # train arrives after the last train departs + oc_chassis_filled_event: simpy.events.Event = None # outbound containers fill available chassis before cranes load + # Trains + # TRAIN_UNITS = int(input("Enter the number of train units: ")) + # TRAIN_ARRIVAL_MEAN = 10 + TRAIN_INSPECTION_TIME: float = 10/60 # hr + previous_train_departure: float = 0 + train_series: int = 0 + time_per_train: list[float] = field(default_factory = lambda: []) + train_delay_time: list[float] = field(default_factory = lambda: []) + # Containers + CONTAINERS_PER_CAR: int = 1 + CONTAINER_LEN: float = 20 # 1 TEU = 20 ft long, 8 ft wide, and 8.6 ft tall + CONTAINER_WID: float = 8 + CONTAINER_TAL: float = 8.6 + container_events: dict = field(default_factory = lambda: {}) # Dictionary to store container event data + # Cranes + # CRANE_NUMBER = int(input("Enter the number of crane: ")) + CRANE_NUMBER: int = 10 + CONTAINERS_PER_CRANE_MOVE_MEAN: float = 600 # 10ft/min = 600 ft/hr, crane speed + CRANE_MOVE_DEV_TIME: float = 5/60 # hr + outbound_containers_mapping: dict = field(default_factory = lambda: {}) # To keep track of outbound containers ID mapped to chassis + # Hostlers + # HOSTLER_NUMBER = int(input("Enter the number of hostler: ")) + HOSTLER_NUMBER: int = 50 + CONTAINERS_PER_HOSTLER: int = 1 # hostler capacity + HOSTLER_SPEED_LIMIT: float = 20*5280 # ft/hr + HOSTLER_TRANSPORT_CONTAINER_TIME: float = 0 # hr, triangular distribution + HOSTLER_FIND_CONTAINER_TIME: float = 0 # hr, triangular distribution + # Trucks + TRUCK_ARRIVAL_MEAN: float = 40/60 # hr, calculate by + TRUCK_INGATE_TIME: float = 1/60 # hr + TRUCK_OUTGATE_TIME: float = 2/60 # hr + TRUCK_INGATE_TIME_DEV: float = 1/60 # hr + TRUCK_OUTGATE_TIME_DEV: float = 1/60 # hr + TRUCK_TO_PARKING: float = 2/60 # hr + TRUCK_SPEED_LIMIT: float = 20*5280 # ft/hr + TRUCK_TRANSPORT_CONTAINER_TIME: float = 0 # hr, triangular distribution + # Gate settings + IN_GATE_NUMBERS: int = 6 # test queuing module with 1; normal operations with 6 + OUT_GATE_NUMBERS: int = 6 + last_leave_time: float = 0 + truck_arrival_time: list[float] = field(default_factory = lambda: []) + truck_waiting_time: list[float] = field(default_factory = lambda: []) + train_consist_plan: pl.DataFrame = field(default_factory = lambda: pl.DataFrame()) + + def initialize_from_consist_plan(self, train_consist_plan): + self.train_consist_plan = train_consist_plan + self.TRAIN_TIMETABLE = train_arrival_parameters(self.train_consist_plan, self.terminal, self.train_id_counter) + self.TRAIN_ID = int(self.TRAIN_TIMETABLE['train_id']) + self.TRAIN_ID_FIXED = 0 + self.CARS_LOADED_ARRIVAL = int(float(self.TRAIN_TIMETABLE['full_cars'])) + self.CARS_EMPTY_ARRIVAL = int(float(self.TRAIN_TIMETABLE['empty_cars'])) + self.TRAIN_ARRIVAL_HR = self.TRAIN_TIMETABLE['arrival_time'] + self.TRAIN_DEPARTURE_HR = self.TRAIN_TIMETABLE['departure_time'] + self.TRAIN_UNITS = self.CARS_LOADED_ARRIVAL + self.CARS_EMPTY_ARRIVAL + self.TRAIN_SPOTS = self.TRAIN_UNITS + + # Containers + self.INBOUND_CONTAINER_NUMBER = self.CARS_LOADED_ARRIVAL + #df = outbound_containers() + # TODO: confirm expected source of Outbound_Num; expected input file not available + self.OUTBOUND_CONTAINER_NUMBER = self.INBOUND_CONTAINER_NUMBER#df.loc[df['Train_ID'] == TRAIN_ID, 'Outbound_Num'].values[0] + + # Chassis + self.CHASSIS_NUMBER = self.TRAIN_UNITS + self.chassis_status = [-1] * self.CHASSIS_NUMBER # -1 means empty, 1 means inbound container, 0 means outbound container + + # Trucks + self.TRUCK_NUMBERS = max(self.INBOUND_CONTAINER_NUMBER, self.OUTBOUND_CONTAINER_NUMBER) + self.IN_OUT_GAP = abs(self.INBOUND_CONTAINER_NUMBER - self.OUTBOUND_CONTAINER_NUMBER) + + def initialize(self): + self.CRANE_LOAD_CONTAINER_TIME_MEAN = (self.CONTAINERS_PER_CAR*(2*self.CONTAINER_TAL+self.CONTAINER_WID))/self.CONTAINERS_PER_CRANE_MOVE_MEAN # hr + self.CRANE_UNLOAD_CONTAINER_TIME_MEAN = (self.CONTAINERS_PER_CAR*(2*self.CONTAINER_TAL+self.CONTAINER_WID))/self.CONTAINERS_PER_CRANE_MOVE_MEAN # hr + self.hostler_status = [-1] * self.HOSTLER_NUMBER # 1 means trackside, 0 means parking side, -1 means hostler resources side + # Trains + if self.train_consist_plan.height > 0: + self.initialize_from_consist_plan() + + def __post_init__(self): + self.initialize() + +state = LiftsState() -# TRAIN_UNITS = int(input("Enter the number of train units: ")) -TRAIN_TIMETABLE = train_arrival_parameters(terminal) -TRAIN_ID = int(TRAIN_TIMETABLE['Train_ID']) -CARS_LOADED_ARRIVAL = int(float(TRAIN_TIMETABLE['Cars_Loaded'])) -CARS_EMPTY_ARRIVAL = int(float(TRAIN_TIMETABLE['Cars_Empty'])) -TRAIN_ARRIVAL_HR = TRAIN_TIMETABLE['Arrival_Time_Actual_Hr'] -TRAIN_DEPARTURE_HR = TRAIN_TIMETABLE['Departure_Time_Actual_Hr'] - -TRAIN_UNITS = CARS_LOADED_ARRIVAL + CARS_EMPTY_ARRIVAL -TRAIN_SPOTS = TRAIN_UNITS -# TRAIN_ARRIVAL_MEAN = 10 -TRAIN_INSPECTION_TIME = 10/60 # hr -previous_train_departure = 0 -train_series = 0 -time_per_train = [] -train_delay_time = [] - - -# Containers -CONTAINERS_PER_CAR = 1 -CONTAINER_LEN = 20 # 1 TEU = 20 ft long, 8 ft wide, and 8.6 ft tall -CONTAINER_WID = 8 -CONTAINER_TAL = 8.6 -INBOUND_CONTAINER_NUMBER = CARS_LOADED_ARRIVAL -df = outbound_containers() -OUTBOUND_CONTAINER_NUMBER = df.loc[df['Train_ID'] == TRAIN_ID, 'Outbound_Num'].values[0] -container_events = {} # Dictionary to store container event data - - -# Chassis -CHASSIS_NUMBER = TRAIN_UNITS -chassis_status = [-1] * CHASSIS_NUMBER # -1 means empty, 1 means inbound container, 0 means outbound container - - -# Cranes -# CRANE_NUMBER = int(input("Enter the number of crane: ")) -CRANE_NUMBER = 10 -CONTAINERS_PER_CRANE_MOVE_MEAN = 600 # 10ft/min = 600 ft/hr, crane speed -CRANE_LOAD_CONTAINER_TIME_MEAN = (CONTAINERS_PER_CAR*(2*CONTAINER_TAL+CONTAINER_WID))/CONTAINERS_PER_CRANE_MOVE_MEAN # hr -CRANE_UNLOAD_CONTAINER_TIME_MEAN = (CONTAINERS_PER_CAR*(2*CONTAINER_TAL+CONTAINER_WID))/CONTAINERS_PER_CRANE_MOVE_MEAN # hr -CRANE_MOVE_DEV_TIME = 5/60 # hr -outbound_containers_mapping = {} # To keep track of outbound containers ID mapped to chassis - - -# Hostlers -# HOSTLER_NUMBER = int(input("Enter the number of hostler: ")) -HOSTLER_NUMBER = 50 -CONTAINERS_PER_HOSTLER = 1 # hostler capacity -HOSTLER_SPEED_LIMIT = 20*5280 # ft/hr -HOSTLER_TRANSPORT_CONTAINER_TIME = 0 # hr, triangular distribution -HOSTLER_FIND_CONTAINER_TIME = 0 # hr, triangular distribution -hostler_status = [-1] * HOSTLER_NUMBER # 1 means trackside, 0 means parking side, -1 means hostler resources side - - -# Trucks -TRUCK_ARRIVAL_MEAN = 40/60 # hr, calculate by -TRUCK_INGATE_TIME = 1/60 # hr -TRUCK_OUTGATE_TIME = 2/60 # hr -TRUCK_INGATE_TIME_DEV = 1/60 # hr -TRUCK_OUTGATE_TIME_DEV = 1/60 # hr -TRUCK_TO_PARKING = 2/60 # hr -TRUCK_SPEED_LIMIT = 20*5280 # ft/hr -TRUCK_TRANSPORT_CONTAINER_TIME = 0 # hr, triangular distribution -TRUCK_NUMBERS = max(INBOUND_CONTAINER_NUMBER, OUTBOUND_CONTAINER_NUMBER) -IN_OUT_GAP = abs(INBOUND_CONTAINER_NUMBER - OUTBOUND_CONTAINER_NUMBER) - - - -# Gate settings -IN_GATE_NUMBERS = 6 # test queuing module with 1; normal operations with 6 -OUT_GATE_NUMBERS = 6 -last_leave_time = 0 -truck_arrival_time = [] -truck_waiting_time = [] \ No newline at end of file diff --git a/python/lifts/results/simulation_crane_1_hostler_1.xlsx b/python/lifts/results/simulation_crane_1_hostler_1.xlsx deleted file mode 100644 index 3af8755e158dd47fd8c75f798fc8a82d55f20970..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54669 zcmY&F-vcfsHLzTY3# z^XTl{Gc)I$nY$`Tzkmfjd-e?enPI(_<|`ptLm%KzRlpB4;D@n|k%GOAtpmdcTU&Y; zt532Kd`K`%Xd(}TcCGb79m0l!V@j3PsP1?SQO579g}vIiIwGwJZQhD4A(~OIetS(9 zpc1)88iV=_3p=DvPPfn+KhZqj$n_b|R`f{NsDz|J$uGhpg#6@9S;*@Mu}u5dgk>&r zn}4fpP2P3olfa=o*jp`r`^9z$K2IQ;KH{;^Q~3YVRS3X)aR{VI1M}<|`u|PW$j06T zn(uJTs9YB#a-crk#v->BPEgShTsHzaIoPK`G`L>$BZQL4^75j_WY>TBIcG0q-Y8{y=JpQDmPh9@N8Qg%TaNP zc?K|V>`0jZ;L|8%_em*Rm zR^n~A^}15ozTZjm+*AKzI1SIaX!-tn=d)gYC4cM*ZlC@iL~b#i@2Bhan~)Eu{l>$) zyE&_(p3N)a8Vd+*H%U6)SGxYXj7}dPs*W`k>W+5l*RlV9bdq(_$k1LsdzSX@*)vQ4 z9hXlGj^-v-CQm;zLGjtw(sr2T1bH1+jJcRySRwVY`_$E7I#@W()g=4x%MpD=*9iaQ zY8>tF-7e0KHk5#}A0yk8$_q=ob2}m`zO~KidU`-_xE&A_cj993hhc8Ixt?KhS)G|2 zU5F86z@OpLC1-%xmI7tqkO&ayTx1KIT7nz;ove~VAqZ^exb zJoRYJ1;Yc_~juCRtw!cB6YW2y^*8-r?2u0QqM%`WnrjP7s~F#A|D;%N|j zkJuEh%V`CzsC0J!urw1;``9-=A@Rj`z%vf6N%A6h5(}Ogg@-#`W5mhhqI*9xY;e|* z)e3ic?bwC0ZfGLZ79Vz5u{onN{p?eFo)AJ!uEm(~?~B>;=z`*KW%g_OY_De) z#?HtJkJz@*A{^h6X@3ZOXU&6Y&y8;;>@j+A5uH!LJbHMIxGTqNMx>TdsXIElo)KnG z*1T|`;dvo1ZcR4x?Zyqr)_8l_4Z}1A3V);ZHaVh=_TWTE@Tqv-^%=#)fMH8XbU(GVJIFOaUh>#f( z?zoYVf5XiMkt3nEMWNi+{rSWAEJtU_mG2KOZ+g$s{KLjGzU+y54l+-(j>%B%MKNpb z?%Q&v*%?-PN+Wgq;r>3Aidd@OT$w-i?#=l#j`wf=ko#ApXws3riIVpDE=1mN7dm)E z-HotqtWAM1q%vv35rUB+jAy;0d@dC~vr*AV*}$v4zEhFy$WJ?Z&8xpvGmOOYzTRH? zZ(UqlEtpg4tm>z&9N`c$j~QGRy28A;KN zh?7cDHeJ^{JubMbTz_C2J(JX}wtkO~-)?m%R^}e^CJ^)mo#c=lWCtXTcD)aDb=OZa zi|?Qfpm7<&0xRs>Ic4k%VbhGPr0`)uBo-s;Yfb*=EUCgC#c#(JbrFL`Ii;gM=Yr z6o*|Pm2--t+_ps{*{#aiF3M7ek@&V{ZL`l#PPqZYsSXu}xv`n+o0|!fS;5H?9Wnx~ zc915y$!O6YtfH>*~&zAm~?)!4Di-olt>sTHMnKaiP^yiME zFl6!gFW+D@uPYqHM7_j(J{&h7as=aRT!8;2=?1Cw1i6t4Yov^y%UhJzFF;Ojf&v2+ zQi%*lf^ENcco=Kx95!=9>tp4w!fZT+J@`JjgOA1j{cjbD)ACs`($~3FmEmUGHn4$o zmz#Au-Mfc5y|-5NSYOCL0*39p%#xNPUR7hmXYV$#0P^Xl*n z3HgFvV%XMHA%9Jg##7^d>_eP-H$9hkv9OHn@vB5D-C#jQOrxDFzqu|{Ya2u zSwU4lckv1nBYQ5DczEOV!_<}S9~76vgyHNRi2IT8)xj(0CFJcTd$-$#SUQ=A1Z3jL z;<4v*6X4X}s+g`1^am~7Z=ni6ZsolpCmUPdSNh)92e+A!V-9b~^;SEiehG3>C;+)0 z(r>%oSqp6Uy3WYB+Xeo?Mr!7c0OZQ1{eGuH!0UQbzAq4RvS8!quu<=Qy*YR2eR{h@ z@US58aCN(Me^j5@etU7t@Nl;#aCcVUez%cI^l-T`?Gt*u2)iyR>=O9~D?@ zzuG_azMQdv><>L$ot!@0&v-+kA(J-VwI_u(4<{S9nQiwgx87IBL+y|?8;JbF(#0c>GhtohJ2*JaL>q#JbM?S-n=k?lX2B85^7T^YbVZ-Oy!Y_K-DV-f!&#T}!(qMm&GqQRRq92m_tj*g_x+~L(*50% z_tofaV*7*Wwfd`vqv6q|JBYIYW?A z;sv=U^1gzY-LSXcT`?>{cAVSqljl3UALaxg_mhdEUN>97b27w^K1_PwUuSyf$v+Hn z0O0O>dz>z;uX$h1_B~wmc|S1lL%cnEZi(8jAw%tV`?rT)SEd*B`VYJE57&X2UXTdL zNxRoA@E7Ow-(|LY9-MmL90#^Tjw&9wnQR|^>PJRC4Bed$nekUNwR>$&>O*Gg1?2f} zuYO`zc*nIt`!+Fir-w-PK4CFOUqAn7w*>UM zB*_i3b_oHVB=R&ABM!a&9^wr-sy{UI-WEXFw7fT`>&Cw^zd}t}c`y>Y8aKYp`V+HR zxv5MyfAskW`@@R1e3`%0!%`x;JLc~LZq2>grWCQgh1H`@l)yY(J-CE4+iz@{Miyij zAM6ajf4TgQeN5Jv@cpp;DoRg(?nl-Yjo<1{mk$%=EDlJZhj{oXPAHnGzj<1Eq^D8k zPohWo-K*o;nv~eXj_>UU;3~duEyG zwf-yxX1lAS>@#*Vg`0Sxox2acS;oL`L4K@V$}cH;v(Su!=^fol$WqnIElzIwGPI8y zt8p&CRV1pUra}3py~NPi^Qu7X-XtCP_yV8BKlK-toK>1X+;MT@JV`e3`Ns}9%oHH; zLf2;>*n9M<(}k{;ktdMlapG|Na&jxUu-(K%3>4m!2Gwp%xRoc53Sp#Lk{UQ<+r8Ap z*YjV2F#p8Y<6;kxiv?_)g&( zH5|PGO~8_k17`*Ft#YXK-rwMDt;gO*WiZU31UMSG))zwid)s z^UZ(pnkQ@!-dtuPL#gKs`6R|!;shq9QUnunLa=K zyexlFF0zD*ZT=_ywD5i~)9HrM;d)~4&LVR)($r-zv-etA_jQe1J|W`i)$G;biaE^5 zpX=Ufzf=*@5GOYAMla2IUH_Fk=ASbR5wauK5}aBt1gXV@Z{D#Zx!8mW#81y&g`z43 zf4Ql++bKl-PIWr5f4B25_Q=(HZ9{RMpCWj!ZQ+M^^+;#33ZHanhBd+jF+b(Xic|mY zWQNha1L7Cs0;rFdM}xnJc$1*k6Fr7MB=b4)V|xfiB^gCnUyxS$Tp0P?=KAC^5d0eD z&~uHii|%Hk{@e*1h#dA`d?g+vAFkI%_?qKnC!XNi5o726`p`B_AtmivAAQg} zLLp^`E1Q=LB>J{(OYft#M|ESwGTB&B8+l5i{eZ6mrftvP_aB7N{i`{lpYRR%1nX`A zY~^FwpfIoiJEj{EelXG3P9Lqw6*0OUZLTB2?xdbL}QUzQJCjaqDc??Bk4!7|xb zAdiASNthu>KdL4Z*c#+YWU>8Iz6`7hYj-5jyo;0k{-!`#NwxyRLjtpL;;!2}@hN>z z1OJ>>8o1m*yliTJH>w%0F}X&k{Ux-D`>kIer_Rz8a>pSnDFVLeMUK&!A-f$2(#Te( zCDObJt;0Xg#~``bh;;)yqAAwJJE~tC9Fr4xxBKw#7_Y06$C`;g?+Je-pmPnxt2LKi zl>cjg0@#9%7gJe=(Pr6K())nldoirlH z)+%Ld`T8%pXFxkMYAjJILhG&KCOydMA_JA9x^A`A*jfO-OlSMThH?Sopj2<^Hd5Gm z1v;Kxe`|#3(e8Mz!z+i=XQgqF7L-NKPJxI`xh@}EvH;G+{=m&Mbw=I6IfuepkucbE z{15dHra#EPCs|AsgArM2*(mr4iHezt|> zO;31{tO5hhd?Yo?yI*)x4G(FcasZcNCSmk+!&5G-8&7{kiuDa)hZmw+5pQtOf#9tm zb>6Q$ymSNWXQVP_6)AcYNo_2YkZzl3b;A=QmTYH%!PWejc2FOIwRv@e_s*(UoGDlK zVpQ+_R*fCBUDDBuMYbwm*eGU{yO3}w_xpCiB$Ccd*kIb`YDVU4p@k-8%OEx~rr%c- zh(4pJ6agbH?Ia@Ghnh|F%Wf|?vkTRtx$(~zQ4C*$^r&6m{?eq64dgIBIpRvzVdIle zaSW56TB*ppVi%33NAq9Rp&I!c53cPV4FEm>?9C#o8&SdP3`It^s?8LDW@5ssvoFH^g^yr)3TR31>Bbl`U#c{f`!MQDzx;v)5f z4ZfrCVl|!Ygl&d1Gml#~T1~`Q4Kp)SMvkGA^;m+XRf=(cjOLd-VtzxB1r(jjA1WsY z<_O#E4J+}yakf(1{2z0K@*LY^C+`RHthLpg4g4*~{s?owK_wJ|qv9mmfeqGU%TVI# zm>4~9keoV}X>K0a5=|OWgtjA6x|2UETLW0B*{X4&Zv8-!ykcbIpo_s;WJ80qMdXBW z-Ps|Uw}m7oa5Q+mc!w*qL1Iz4aN$!qD?#FqYw{k8StYm`<7N9)19x##2b$=u(?wZ+ zhEB%_U{rnGiXs#T|oVcA4bA zw;-KcW|QaQ{}5G=&>)u9hhcR6)Ao^sxd4iMPS44{OV4w|B`RVK?Hg$N;r#xqs2nk1 z%Ya0Q$GVaNbtOm5#DvyW7)z`O&3tx;$@NniSGNE1p7MLjWyA+08%)~$jZhSiXm+g06sapl$98RDLuzvhX;-U~^R^dG7O}Tz0`%iK{neV~ zMO7TR8gHxwFsvUy10N-7PN{&F0Rhz%Ik8O;d4WC9g+~eiBk?${cEYtHD^`*D*lmP5 zexO2a`>09n7;k+;}g36znLRU;baq=VCzJD&RD{1dP%}LDgRa}E1BmQ=@|ffBgl?T%u)dyuA^0+ zvY~1)gdT~B5sZ)~2M(Y2UxZc^14&dq5RZu_M##fr{kSyfWa$oLX{>*3i`9PW>`tq} z$dNnZP$}QspMhY8@|S6d76u(bcJPb#IoQ4EI6-aUKIaza*wIkd1=Y!tXNkWEUc)E_ z2TQ+v9M#B(<8LaF*C13?(j~|rC#bs^Aloq>1imlA0{;;DEV zN@yh+b#tJCf*UmQle1&r;S+v=NSe@wCcazUzgj0HM8NzBW~5QrU-luxeGz8pyZd7o`mLLw%^NEQ3?~^0e3YA)`CSO8xm8#hQ9>bvJ}j zt{}y>*zW`6QP3U?MBNLv_{u-uKie~Mg#q+nki8F(c2pnWRDm8$7a7KI`)o&^rj4yW z3YU}vo^>NjZ0X;T^nIWGEt`{}-Wlwpqh-x7M2f$)jEiqAn_Y+cZmDa%&lH+l=sOMMTT7oR?Ew-U~|;0^6gMW7k(#BX%NX+ zi~@p_1Hsc2gsoopR~K-0yJj4_U>VHH_u!LB#hx@#)FW_CAZLCQ3VtI;87o3BqYgC} zoGUI9jrhJA$B#^#0oY`E@~f_J2if9i1%_bWbU4Lw6uk*N4A+}95hxc*!S{nONklP8 zxdbp0mc<-|cVBZULrt_eT(y>Hp7&#a*N}|KRAA_ks5hozw)dYhHUehU9T)4wDUMa# zP-8%sW-L_?(Up5Qo42Mlj{|ga#`P8O7F)4nkrri09r-a@E4Mt)%iFS)(j8huPYf|_ zPy4=7%%Y!!rh^NypGe%gAqLHMVea(g>l^SV8Dp7_M&bNr`ADHW9A_`p6G0SDfb_vR*S5 zVsXeaffA~;EChy}-H_+`%?pJE@T?YDdoBmm`ydS_{>e}GAq=tECqmy-zF89d6DLvCf2PerZ zTZ4xlhm7;hP$q0{jX?3wVCHea@>(=nB&Y}M6Ggn;j*;i*&bYjKEWzz|zxYXd4i~;` z*5^QbB)-;PCysB#8=pBy+7xa0^;EEpa@Hw~*2RgXI9mZa!F z2>glyC*EB!N}j?p*&SB|&0bW6J?KpRL?!siVu*|LE77qnLw2jMr+v>7Ei*=_sRUx% z^EgyaJ66>#OeRK>cTQGplgZzScVI0I>*6FO`F@;Qe_wj%v~A^kPGAx1BSGop1>R3f z2Ir7NO*`F(1u;_;d3p|L2izaoT)z8R@ayBdLM>Ph3R0|H+roN@+}`+$waHh|5z6oG*hjcJpIftnoW>(?HBUM3o) zyk*&ckcwqaTbdD)F2?%d#p|9K#RLBFX&LjBh)+nLcpt_0MTWZxp*1pMxj<8Vk~M|P zE?M@&l(hJ$*%Ye-0bhG|F6x{1LF(9)5t+ouZ9B#8EpW`?+p{FnF{*O)kkYF^$FTSc zKW!%zJJyd#k=+a5>QTfwku2W+eUApWFQW$-B!2D_p&_3>IEC4o=~KEoU~&ogGEI~- z^jrpPwzs)7;7yb!lXraa+#7T4zYpa|qP_5=_;xL!4BI1}BbyAnMhd#ms7b~49F(za zV%$#$1jN8UtaW+th5nt4H8lQ>k7f0+yB3BLeKwVrs@J!j>(ca-4BN!JfD|b7B{C@h z^a?ofotD_rMIJ)U%(enKZZnkpufN(j0(*g|8&;cC`Sg-3VB2e)q3-w8ZX@)fbi__} z;gK+N$+ED9m1@Tmvg31lR2XFWGO>RBWIMkLD1e49lNp3o77=k@XsK#}}NM^vmPZu8$)cSTcy=!gn7G02P>4s&H zgVomj1tM|xqxU~(R3%^6Yg!oPZMbbF)@6+1QVaAotaH?ye;S{jdcIjx9HzGLfy?6T zg^Aw6WlE#WK3UGX3#>Y6UCc6?MV&Y`ra&drb&JH1?04X9^@DsxQBWiyoBe5`;H9)z z=7YRC;mrB~!IpWSgDMF*?;mXdSZbf&BEj42Yen}4f1yarrf)SVq zpMy;sPfUXUEgH)AXdnTldKS2BTZ8ZBz)Q9E;c*!oN3TRgNyq&4b*~2Nh@x!kyZ_)Q zFa0%&1)p}_=g(ibO1O>UFO$7+19ua1#`QL-Yvobkr17k$f?afdEih=|HoROhmLCV! z85r0fHFzDvN+AR<1Z3SGcP3BA^;{8F5)1R%K#v@*vO#Gr1|WU;fy9%58a>*HChi|` zYCl=WiwoCro0PdSUVf$%E&!uhMd}uoVF^?ve;F4@%DI@o9`2C7p9oSP32Rz6^4$4hkr}~x>r#`!O=32qhSt)P4qA5O;Z#8LyzE&1EN5C#evBf z%_cgZg?8f$1&4ppuRV1Wu^Dz|g8M$W=hRdWH5LyzFkyo$XL7yNMI-Xu26gmc+_{jx z-Hn|pEu#Gn6*W+QmGr%sQEf^|38g_u*+s*JPU*K8dl4BSd&VoT)GwHbUBr24wSJG6 zh?{Ck;A(h4MJiQZe)?kcNez)Of8%+z%qz%sn^+NDVf-G_l-i)V&u<~A#18!dZ5&mT z8p~}8K?bFKgfAs(qD52df;sSgTC=}zSdL-HCabhS5g0EX zCFRR!?I#95cNg{tDujuN78&SdKhW==d!T-{M_K$wIYd)r4X57}zRc8wvTx*9CVr0@ zTndzSegA>s%~xFl1G$oM$6H(eae*@Ond|iUkLZTA;+JSC72D3Mfj$`c_|zn(*x)(A z*iL#`b?D%t6W}At!KD;MSwGGcP*yLMfspb*`-6O*vEnw+g`1kvHP?QATXv;-XeWS8 zJ{F5?&EN0@401RgdKTx1LYaip zLOM~4SjBC8V;7TI)0JX?L{|bLZSKbczSRIo`J$mYsb@Pptz?rAr8%mwxtXYC&Dzh9Xw*M(2Q4Jn7;FfoWu|)MM7+hO3OjI%) zUB21$?@p0c0K=<^g;QcEL^n95u=mvrS3O&W2T}=>y5;2q=W(B#w8|Y z0e~3y#Yt1X(_Ak80FMl0{ zRcAqPGrM-{`nlV*qHDkV|0ZwIgH))H7LgNIBZ`5QUGX_bMfs=ptQ~&81w{vZ)W?gm z5NRDiZ$EIqggQ0QudHFYo?0_Gn%FjADa<7!s&SSZ$aQDg|6C)pb~7=vt0}%Q1!g!$ z@od#PgDOjzOLF|`cuSr5S;?Ck3?;UZ>HH+^HD_Yr+(a&M!`DnZYy+iaBL#qxb;hq^ z)P{eFTD^T-@gpNVqOj53Xj`KeE%wEBrS&SzNa8=8=&?X>_L`X=nhp@U09$Axn%s;ED`-V3aTxn$c! z!YrV2_Nn<6(u$eH7QInsYMUds|Aj`f2dO~?zipz%S6cJ#OCw@F_r@0|jfPZu7#ak6 zR-Sb=VN~HN=7HU(<44+N;y#61f+}05d$c4I%pft*f1D zI_c{rmivwxOweCng<`5Cp^tfJqzv9}sbBEuRDL4{#SlRcxKEdxLQr}kpC?rg&hpc0 zn@dJH6A5Vseb3d7Ag!oRY*`%Pre=U~wgCEa7}}RI7E=u^i_+p|$59?2ju)v>#VmhG z!DlMV2zeX`y>OT(Esfpsdr&j=A!Su>7^tp!!fN(+wrEVtr_qf@jpIFuHq|7rwYYI} z-`U+S&0{aGs0Sv?^l`FkFhq66x^G;WEOCeaGD_=;cIYDwCP zTk#Tw^y@HQx4;jbjnE{h2k-Zf7e-YEVR$}?70{Mr>$uu~&4<=grp2pUVK1ECD7jW2 zB4c2uO`}Z)v7}R7r_QvYA+5N&PHB1L6c8^H27&* z>a$VZKM!C0XGBhX0$idKRzjv-X3wuKFn-TzN^Au4CSC;mSfqt{RC8f3YkKuO;(TK3 zG=NZcFu%ezq?2t?BSefnqn=P}FgLMxLoaZEzT%o!;*whyUga2lI>`|cTyJBsH4H{i zPS;B7>{C?M1A-#@SK9r(fz2BqsG!i43rwm_DSupz270^C3iE#5^A{z|Sp^Hm1BE&x<4&hNI%iJbS1Fqt={?kHvkns!M)fJy~N zXbT`ETcE^Ds=Z;X`|rkwXS=XEb{4VxYuD*HbFlOFrO}m|jS80eJzJ0PcD@AevtbY6SY8FvBn9;KVu5P4Yo-=9iq8`| zHo0xDHNhe}2Pj?Fza>f%+n^&g+TL0NwEWZFJo9xY4S)X`&wWpN$*B6v0{x&1U4n19 zWuZo?I1S1TV#gL6s(JsrpOn|A@BRK=Pi*!?msY=K#+N7>L)_FPI5Q@T+t1Fu05&e3 z$ZyZC05(rCn$KUT%KR;U%ZB?F&x+h|zgXKst~r5KQC(9Uw1SB+PIclRI7V`Pe5s@B z2fZ%-HGgn6Ha_Oud$Rfbe|OJJCO2^iXgp5j{=i)TPcX`Dxpm{_{a&Al)+=5O?5Uen z-d`nEBV<9UW2Vt^Nx|bbi92k|OJoYuTSk#*{gVId5|l9=6@k}`^B(l#SSqVn0<}!g z&D@=6<8ufhrJOTJ5JY*8SfY30CNNZV=d_UDP6Evz*qmGFW$HyraEEE&;E*}XeACDk zY%v=La@I~@k!wMGB{cfFhySy@i79KzAIlV`BP5nSy5z+dxvGLC@*rt@MQPn_fG{(^ zsw~>9Oe{ssyb9INkC)WLE^v1Q-AshaJ49uvt_zrvzOtv!R#9}ff$6nEO60!JN>c^9 z>S`T8FZ9}3_wf6BoNIpp2hhPJO`}@mZLHUs0b*EC1$~Uw#i6yu?X_1T;OZ<$t+Z2*$6zf;R{)hQRbpEJx_qIkUnR z!^ieF^$5QcOP0=oJ6PXyyD`%NJCcE-C^`T>X7xJ2kktsi0nwQR}+}39o+yUFu+ZIor zC>YyDFJt7T3Y-Mzw`XVIf_Dnc|Ou z-Ewg`ml>DD$zP%u+(im=8dD#a!{n;R(>GEzU7=b}EBvEVxKuPKWC(vd1!GCvSOC9w zPf>aKJ!8k{YQj^$b?{I6+ zNDAgxd&jAcDShvy`RU29#r+ubL0bORn39L}I875WE0v8~e|(%%*M_=XRKqJUWJMfX z#UiLDhjlsH?pcUL33=$dm>wTvok(wfj+mc0{k!ie$wR}8C8PuTzr5$-ibwdGn!`T(eB47p zb&u-8V2O7kdkctP+LvU&B!I-|zCHW#bM%Z*qHY|?0&&snD zV~gsn96X|X-BrRXFj=L_#+|qtC|AAyrJfbnEY6W5GLADc$C|K#Idt-axqL<-6Hn7r zaqpZ2ln~xK85rv0#3S*5b{|=R@40u+x7Z;_6s4Ffa{EPucYX((oaNiagp+*A{%4rp z4aK}PiZ)cw-}rw%9eFx#m(qdD4LAkm`BkspeClZJ_ zDaz`dk?k(BMKBXXd2R;nm(k+m_}rmD2N0(547%drLcZj$dLVpa?jFwpx$3OIb&;xR zF5G!{HG5?k&F$!xSb}DarziYZlkh6q2``#!k)Kp8dXw?F=vKG>NSnzFiuE|`B09nh zk~N@8*H)QN*uxjx&y@u?qto>~#vZBJ76*d&y0aQVjX&3~I>U{el%S2-^mc7J_aiUI`iFl74q6gNCDS={ASt2c zp@MiR+_nCnCqNv6F~ez9WyLcfS&<%y&#jUX4YZV`6r|Z=4weILXEV5L2%j%(0^zaG zJjTO-_#>1N%qV(sk@ZiEgH(kae3{>yYc29ij^SSN}y2S%e~Y>K~sQR8|eB>W-wHpQn^hGsA8VcrnuzO31Z z`rllgIA4@)%xf3kC&Wa_^e?tazPWNz0T#LPWeGWf0ji)ft~l zl0Gx$He6Il{yG6{UcDHV0k)Z##n*4JTa|Ue!G0x;Av>ujY^`9=D|zrALWX}7IT$#I zsKhM(hPY1L-Dh2&Ca#}&SQ{rxo6$13oO7D>3TScZexiLC16=Vrn9Ua%-I?(AogWK4&=n@UHfmcR~Z%3)^{o*U_z9?G_bFB;f6hb+rtOgX&8i7@o3Sb!zM zR*wyc9_~bna?S7ifqh^Jc1c`Z!EMobew;dAX}LmaFYo$R=ya=IlOC9_kYrZx&+uOj zb-10`mgj%FYQdYxfb&nc$>@*b`ajYx7MSZq4pH)wUM8{+>*E6BtC|z6Lm@g#IaVjv zYs@|jjjkVL0vaPF_Y<3M9;}YtJbX2r`6?@M%Ykf2Cgrg?>4V;P*)$LY=q37^gg?|! zdhaT#h`d3~%#LLFG%GcHk;wi>9~YP{)f_4hve6yywNJG*I}k8bNgR2DaAr8hEjY|w z-$L?kZ-p+ms5GBqH$BD9TpKZtU}}8h@+Su%9u5=)zt@4V%wSA&m|iEH%#Hf_PhJd| zbE@BgW2x-3^0hZaR{8k>AC&K9p_t?EN-&O0Wv>Q1)q&)Sz2B;Mmz(Kjj9TF%fv5Bd z3`eSd^qdMVaSx_vj};~j_@a$ct)j9m@2&vffnjm9q@+t9TL_K?=8Bm~Pj#(CWYXI& zG%Q+=((8WXU)LmF`CLTt8OtkI3Tz!PCZwx8Fcv|CiXbZlQvyjUQ0Pr`lHW~t2k};s zTRzj{!fg?H-=spOMFpQA>6qUW=7dnxMWJD;e4l?@jH^#ED-QTMum{b}KW0OW-YYs) zMo-Uk(0wCT9lK5Ray*kmq>&d&%oz7m05RKrAmq4+=9pYx2lSzPj%zXv+XG$Q(}v}2 zysQc{4fqPm9KL>@-JuFp3NeS>&&<^9M(!&AjV*37aUybX4jp*EDIfLSxBzmFKqM6d zl$Vo5o{~=*jk?8bDwOxFCayj81uHO_W?Xor`h4JY20h2-NRaVjnBa`)!vdn~R))Xk z{DnRz9s3R{?H`e1LXkL^3%vx{*#op{M7k@Pv$C zA}pUHURvS4=60uv$dp+!-G1##Jt@_5?OxB-Cb0&3@evTMCXt()vD2Pop6dT-0iQPa zH<6WaR77_59{F{k(8(4R<5Tm*JT{M_U?AzW4vY2Jk?qFdcwmv_>Aju2+K4gCyl%l% z!}!Z6?6<9RcY1ktjvrM3R&zWB!DG#WgFX?(l0hFK1Fc6Yq%D4#CP60N@Lh)hvadkm z4=6ez$*_-8l@k~vw6;1>baD&MyKx4y`GPJPj_5&5wcE35}W+QHXBL( zA$_93aRJo#Va89X3t%-r_01i$Zx9xE&t@Iq`GeQfOGGe3Okdw*ORal)0Bz6X_+qx% zzH#k;4d8njxPhYIp&_78u}==I8#TqtJ*Ox$r>bZg;bMjSDp2TXtB?5!df!LrNz!s< zU4-*1sV!}#Y6|%%_Oqi+s3qB-&+K9R;LSa?hNf=8Qi`MhZrh(7+#g|;Ll8Y2KMa-I zAmi-wMTShmegl@8O=;fA@K4s2c=lDFGw7ki+}ix-nr>eKY&tjG(5H}gMm>wxY&QQ3b5$`2S<@@y zOsv^(Cu1kX7)i#~61qAan06EoXqDIailDyAX>@x9zogX5`bl;ZgEH2*vf-^9AoF%% z(R+DUeL}}u6}wQ{uQnh}mOaMqowG|O&&rEdxf4I@NL?3pZ1_PJ8YerZp_f~zn@(9~ z{%AH8psHxkVqp`u7$qFe_Rr>vAf3GbE55bASsQA1{1p520*KvTZEpA&+da><`64a{ zjjaMXoG8?HIz=iEEA62c*do4a2@5nSKZ>qJ%eP+jh=_)_GYTH5>|8k!wg2j{`s#pY z+?pnvRrAd$TSQL{yCza+6{!2ABjtX!P46gPLEC%dN1B zav+Yoi^@B6FsE)ZgquxWaSP>|*%i1l1cluHH@sOM)K=B~C|Ve9VY53XycQ6s$%!8q!$xA6>uF5cxj`wQU9<3_0bLm_X$ z?bsG+FfPLY_L%jggXu1sElZn&&=rVb`$Md`z|!`^%b9fU`1Hr@?^1RiyV4ryN+>h~ zW0Zs(QI%&w$e#kl?!ss{Lqg7&t?Ycoj9lYz5Ola29%W^A_`y<#J_$xvNP(VG?q~BD z-=_@dirD14NXAJj?y0CAGszm}h;ctjd~+IB3gjPd>^EK!BST;)S3S-dP5Vv;{!AY2 zT)hH6T$GyBD#;Y>&$45HT!TmyHQm7K-NZUD#A~y0h92oz%|ooJlVNX+T@C-SP!^V? zJWeazi5;Gz(I3e(dB5#U|Lx30^!r%JGpJ$P#2MP2y4cpj7hb82FULn&G*-!xXA7lI zsK>cURO+qCU7fspWQp4|W_niS;DWIw_q+6PB4_?jPkSy*LN=4SU@~5af9(+YPTozS z(D|0lCA5Q{JX<9#V}j}urhU12$m+G4dc;ecu?~2y0=a~!l&naMDU`%*kv$uGU|IBZ z!@;Hw5SeTniN}>nkBegdC%=HH_e;i~Rd@MJ4K%0)(4hQVKo5~8KR$rO8?J#HMQ`3o zx6ZYA8gZiM9F}F+DL;+#&k>rkH~Fs)ezEZc=VpzkO-0s>{NfD8af0H}RPup7@*!=IJsSPF!6$|uBL)A zyY0aeQ2ot~FAmjv_4FB@IM~bqg1P&=!@nDwaE3nRv?Bn!I-tOGrV%KzbW;$H9dZDn zvn{sv|7##}2@eF)`g(E*voR6J1rW~hwFEg2=#Kr0=8y?2N8wkg1=w1ERs#2?T6)B9 zqm5}yji=E`G4lN@fiJx@o7tJOU2=j49V$<{@dIl=#ACJX@d;ucp8%_uIZ`)wlwyof zX8u@KN8l1YIi0OH<%;KXYPLhTi^I5qc;(N6Tj{lZ6P@a?-1j26nZL$NHLHJu?^1zV z3DPX>ctYElUVV+ql-BPZ^1DKzt1ac@ry?IgH;YpH1h&ANs&P>}vprytCrvxmLpI#j z(J!q6Uh@f$7Aq3QrUDl0co}N32%=TqM4|i~eMZFopVXMEp%A>I1FaR?|B<|s_dCk; zKLVN*5-WKHZPMwtL&9C7@$Y42)pX>Q1p9Qe38iUUcp+8+V$Rq27%CV5g`O~kDd*(_ zQfW@PFOH}i8*K7V$4C;!8E_({qWf8{tx(kDn*44{=t^GrYV;8P;Sc#;$@`yN?6~hD^3%*S-+$VcV+{s;NwCP;Gowf?Js z&`04s8CAr7-mjF@Lvn-OgmK>dSo#^G;j}DN4}Z}Rhe(ZZQs^eZEV)#{wsVUD|z~MAaia$0j=X43dt+A_E|%`(Tm(tkxG31T%-WM8T4JVD~!7 ze6^8j)~ow};$s+TB1N0};qp|;j+h8rzaujI2yb&$wQl8ma8R@WvfQv)e&o0{{38pU zYMHEN)S{o^+{A`~7WR*qpTt}T{D@OS^M1xj$1o2i$Z6J{S@zwQbKJuxCCDQ~Y_z+t zU+4DfZcyAqNfeaF)B9UAJa`USHyBA|=-}GX;nAa$e1lqaGsI;#r;%gc;lO_;;zzX# z#)QGVx1uxCQ+0Lto1SbaGa<6wRh+84C0MrvUg?YTDtf6&IipK4qLCxlV6Fe{ZirJE(>D32jeG zT0E@dqZRW;gre@*ucTfZ=0*EsrP2{&e6U00H~liQMHOTbgR&6}m}{DBZBmYo-_%0x zbxT_W$GiS1rGX}S(U3(&!YXR!Z_XF z6TJagf^q-m+qW*&eE|Hx`l#32a~vZmF7NK2l9gz8_Fw$t+=-a*(4*EIjxg%MjK}uB zOKtf-AMm-i`kBdh0!s)vEhY@NtUTfQd*QXJF{^+AZ~Xml!mGZ}yUf4!R9tJ91@SgF zsT7!pYYymHud;Ls!~J7^hPGfNInBF`cH}{U_HQ0gBVC#V5CmYP#nwca^Ny7Fh%iOZ zNr`gdpQkqj5z(-@PCCQzQ^Ut+bWO|38~{N0YIK>WLdd+rf#ZNkor? z*uVNOr!o)opQQ2WFc4f7=9EY=Msy%@7)tZXkKJ5$J7S{D*9apmsG-J4Tv4xs32@J0 zYa%kxds0nt!P*z@|LvUZFE~oQ=mKZVwUl~X77&xMyXz18P}yR7Jc!xSvP9HsX*+@D z{U!PKNb^r86qd6RyJ;YcrrQA`tr`>LsB=(r)dzT=lS+ykPNDagl6K@5|44Ia+>C7u zPx!kglIXsao?MPMj>rS4$iqp*w!Tabbiu3c)R;CBz1@mZd?Q~eW4=X_`x>}p=y4@V zvdTs;OyX1RRwUi&f$K_4-Q$-X?GK`_4~h{mAzM1 z$ll^4D|_!Pl4KsM%tD#jd&}Y2TL?!E5y{NxAVjkF$jqkS>ztGK=lgj4{zQ*+zwY~f zj_Y|{*XtxqXz<>Xd&9{$`J$iY)DzPJb+PKGi&d&(oIt<}4`q1RIS^`L1v@2N>=bwa zU3+WNX4l%g^?!_vxhIP#OijVM}H*9Hkk)a?yWb9I#0Ybwqty2m9;bWL)F zVsVA)!D2V0bAge_A^KULr@qeyFjpsaCsdCG-WMF|EyX@{!Nss6Ic2;h?taW zX?*;F6Lbm?<*QFz`_I`av>7#9UlvIbBwy14w8_hC?}_huYjankK0A;)I?!KruLi|A zu+n98q{xmuw$Uy~Sn>`h!SHYAB4!0Bf!NynwoARKA}L78Ngt4$;%rlv5<|Ktvi@DD z>4Ivhwjr;Y@3BmIWBP{reht9&1QsFZ6gZf6cKj<5fOT7-EqtUR|+J`_IE7lB+p2v`hBChxtqz8dt9SSChp8*Mzd#X zA7r3IKeUTNJEoO8=I^yu(Me@46!my*??=N&_CG}@696Hw{Q*VQ+EI2P35WR2X7J@? z{i4TcTK?Xb7ZaWYbi`arP5>Zh3B0qT$@%mx5^bg;(dIA74SIxa`bqdT9Z8#Np=zqY zEa`f;@I_it4)$M3yesL+3*<~;b~kB&^Mr7bY?h6w@i?Yt%r=2@)#z*A8xT|6JZr%E&`f8OSG}TtuBw zMU<^r*OOZbOxms*#g6ifym50j!}6Sp9p$ihTN3i4A{ORFnJOkcVnArdnvR|D4pX@w z$<04f)4!dV^>5()IBlSyv8FJdY+eli_uy5>s0SBCKR8%R&6%Zc_cXXGEuVA-p_5ut ztK%7BA&3K+R>6yS^zu&6ERv|5F#?EM2iwkc0|;FH_?kyGS3OBy(5GQ@@NbgFzw#!# zIQ2j>4ax7a)a)rQ!rW6olpP9n*-d_Zsl*&iX7up;$n%z>J=c&S7*`3Diu|pq7<%9> zisuGk4n47qzx!c`+xpQp4UDI2?RfYh9g+e(J(TLN826Pi_tiF2SD^5jaeBGpfEj1( z=+LLoSh1T0l^w|EKb+#z#vR*Rn-i0#^_U)QR2QleHxWUl08*fnw5b++@XhZO^6zw* zG{BV7M^o4fFxQUCjvP|7eZIfwXtb6lqzPQmCh_ zobc_o*-sk*Hr1g9b-f|L_4YlvwIg$ObC2cReA)=|%Sxx``#RZu00@zC{xE?LU(}+1d1@PB zj3#NTgRCV+b|O8L_AFQv^|y+S8|8Oay-_rCbmn0IQv8TAjJU^tXN!KtPBi679PL5Xcu1o44PfV&7rWhvQ)Z!*Hi~rSN#(2r7eKb*+N+xMBeo z0jD}SVEzFBR2cxE1lQityVV+r#fti(luH6X6}@-E^@YTekP0xnRNtj*;<+!#7a5rY z?8iX2V&{vs&8IQ7-sM){7VkDbU}PA1?Ub;SS$;)FyB{W( zp$9f|J-oCF`1&708#>e!2i_=}XD$1;!0G+}yFg{EEvz_JU^t*TX2Z=iTn5wC6igsb zt3E08Ead1d=WxA=80TGyPg=3Z8SZ@|@q$t5;}H64$7qPmzadoK-P%Yk=JqRVW>{?3 zi;?r6dB+EYb|{)q%MS$=x*vvTncW2?gu8pRQq@UZR&@D-xRR<`IKfm!#PR7o0oLBY z2%#1G5?LAG?Q;gshirRqhOT>VfFqrJmgba1zIvl%1{C|R7*NxecYx9WD09208Jeyi zjFG>?WO`%K)|to4Q=!mQu@L`BomPQp6(N{n{IuW&YDDQmN#E9RDz-59mgSCXLqHil zgJDPaesA@N+PJP?AoF2BfX*uvM$Q7_2f)a0_jC^KD+w8~cv;}JiGaX{?#U@FgqAPb zlGaup|B3%(_^IfZDKV;~x7wmgqi~LX2l$Zga!MZ;7W@B3}UuNas``2TN zm08?azKrw?srL2`S3?`AldMp!8*0odLViB~qEq0v>d>iILrKgcPw37NS&|!Bd9Q!k zHc)}h2j3U2fkyzCpK@Njw=W_%p&4Hy_p?dsFS`tm>_57YLRRlx_q@4f>5c{0r25Xz zo0)HXy~r__U349pXMHLH)BcQq{0w>2BxxBJJ0!v=gL~DIDqAL`Fbu6?N=lkEpaV-s zz#N2XiwWOFi>$=mUH;9uv_>2%CdNA)QqgB)Z-LHr40Nu_OEgwq04N?LR`xX|sC#XZ z&3*M4Z&jvCt4*j%LVubyGtb@NVN!Lsal^;K>m08BgxDa!SDb$GAA=!kh99gTVzeVg zTWifPrGDj~c;UM;ji!*6P!y6|`dIX4^Rl=-4L{|GZ|sA`ZhR+E0zd*B`pnEhVkd&G z5UsKO%gKf7Rqfapns3CA-1+kmfUPCZK_mb;qXc?hB$5sV{gnY0a$7J_A#);!4N`GTbR&jFgB8c9Q53*P`m#iC{uZ47=cFk165aVSNxYJSGCo~0V7 z&Yy-Y^O?^j(L6sYfA5X_Oy%Y6JeaP(&R^jSU-Jb=Q;YXqMy3NPE3<%p9Jqt74=DY( zZpdt0p^WYTQ|PAmvelVgJ!utd-EQ6DB{oxDRa$E3HZXuH({n`x-V+o|R`XJje^0@< zjad}^6up5kwe(%@Q6rUCw8mX{zl%>7XTPy8LjE2!McEb(*Cc5%TWg5eXRD>_<6tRk zS}%?XAX$vg+iU0fJ_=sD(0osooV(^%`+hlMJ+zK3%^B{Wy0Y^`2R{=xL_*-cj{p1< zsckPl*_+=reCNcg;&#diM zKmL+-b?*>jK4aj_#7ATpm0^W0QAjddRPZ^1@J^{n7FsI}vL&xFvhJ;2DX_Ip%;icB z13XVhD9_WK^G#&_X4^g(wvOV3QpV%&F-`=1>skDElAruKrg&&Pa{9k>ll4`n@^c^U+TIt27E9b+X8x;vme|O?!=2X0u$=}ZI2T_qK=OB09(x&0{ z=ST1ajXtl%d#!?`$XTd!f#|_Cz2hqqu2lHYvIg#b8-S?Sg_FBJo}N&~Z`Nj1FcsTW zm%sA=|NIFo*BwLBJFUmSn`#?*#%$X(1VS19S@}Qpt4LZc;VjMvuQG2vN4h8W%n`G< zT8Ox=x#g(c&f<`Y!7k|er@P4wlzmfjB7*3XNkX5@gXx#6Nj=em!ycchHhe>#={V7yZ*~#eiZS-_N@_XR~Pr zi)~W<==janPS_UUM7nHMKLWsl8t2ANUUh;hmS}av6OOkbwI-O={gS`?05X4A%KUbL zi>5VFnjS7!Ly|5yFB@(0?<;}YYX1o;klB+t$Eyc^O0*oyTqh}8JGhgxgp;#vZ0E01 zwvaX+E!(A43&c^TrQ1yT8ZhS=FImnH-tHr(AfUvcp1$Z*<7r?V{)2NLAl~k$<~+-p z>EN{ci%;K5Lg@4xw@)N%ODGP2YUF2xUJ0FQ1P`1uwe7?vQIymj=_q{Po7^*1_c-(W zes|W%AFUocpw$9f6xXgmrmB8nq)`cNY=LWlARqJ?Lq)t^O98>?DXtNV=;x!=%K9x7 z`w~#qS4DzLe9j|#!TA)bZ~q~|sNGO_yf&fv?{dNw;9}qW{#Fx&=Bkl5OVAHznOSSt zpkDTmp0?8P%K!Cp2gHN@Nf)3l2AKz)933fvPXcOi_P8ukv~+m)?$8M_&9y3$^&8a( zJL|NlDsL;yBAVlCx6odpMhKcv^Flqo1=$Yh`T6+IVH{Otf^IR}bT{CA7730Qzx@El z>KpEewBP}mlvenqM<09y-~6c@$NbM>RzzycWJl2J=2~F7Tp`r;j4PeES+<4>#U*dK zz^HrqNH~h2iUAcsD?O&|e%1ZUm)YuZq6_u}=@YE|0*^f6Eb)%)Jhte1uB8lo<#FV! z6|pNKNRq*R_Ty3dtw*$D}ZTK zV?Vj_t7Ld+-|*ohiHMfdDW~~WXd@jx4vyr0o6<*dl>65NX$!zngd>7#^m?zZ@wiae z0uwL$^33<6iqE;WfwH|<7B^9x^|&^Fec#o9&)M#wUm=M^m))ITxrOUJ1--d12od8; zHw{CiC|o^W6bNqrS~*5xsY)fbFE?AG_cp&~4wRgs^fGf3wz$xA*9mK*l)D}3e@Fpg z`Vo?pb!BIW4M?*E?2yTK7uVVHwBD2kYC^x^na0b|l;7ed7>*(YHPT74M*ZpiO3p8e ztUMDL?(RB*h=)r_By!aUMswHw3gN)x^Eyo2$F(As9H4z~+5Tm*{kt2#C41{qvfrgn zRy0TEP8FNXXs*^Hp#c1p!u8VP#0Hb>7^;AKi(>K);yH<;gOrAVx=!mTEs69VsG2W1 zM~w8m`S#xmv@|a>EPCPh^kIixZX=gp^3D&+Pmq|$Ot=B6!bycc+~Roy-9X! zY@zXRgAs5epKUBY1g@ElO&_#OZv1o@}Hd*=&U zm>rOxpCr2v5;WsPh%5CU;z$nDUGojJ@A)YQ@7Rx5)AZy$Tm&-tWR(sV1*wqEjQLzT zT{urBxRH`akmiAj#M#4=*ZWCFFXEX?ewBcYf@P8_;Nd)yZV3ZK4Aj(AJt&u>WO zUK*V~_TM`DQE|F*XM|Syc?X@ON}v%zOaaRW6c+y! zOW359m+}(+gVyngvg_`@5{jAbJ!Q85&%RRS`%KZHenR?Y_Zu~eiL~RKM^c4mcKn-o zYY)2C;a%(xyKxS0>5a+Ww~(Xl(WLYu{=IfESG*61_L;Y8kS#Z9V9Zdh>;Xp_QPw`H z2!RMEDA2J5m?Z=_ zRZE{JO$J#oB<%v4x9|=Su6ZD-3Pe5 zIwdoHCYd|3@`du0k{|B*PEG)h8#KvQ>Sod5CHV46@VfPS9L5vE zUxs0mUy_ODr2ZA>{;SXZcaLdV7J?F^ZF7=h73PChQ$ z3!lH$s&D%rtsmNjk2CiX?0xx9kI+=QXBlX*SvXNxUK=RQ^VePP%9pww<%i*1M%}6v zf8j(q6RwjnXy>B`=n~dY+pl{#EF#u`;Jgyu<1k@R)HC}=0&sdjDC?w?P~ zhss^0bS#9@^4=yFAj65{{k`DdM)zH$Opk=f9$os2?k=5Krxt*V6Q8PeH~>Zya02v3 zeR)_0uQTf`AT?1gUZPwE`YyqiiPPC|+>>h&`pj?42ew=e&nmR*>rUBa#+}clW&giI zA4hjx$OknNrsrH?dj*JZj`R8J?}F3s9OdSTYWoU`Pp4C%lM4C#P=c;2)yA^+l+bG! z3pfF?>Eq3hlS-aeiC9YG|8)m)_Ba4FqNA12{#d)iF*X%&StU37B=`5D>G+%RYd1OH z1V+gWQMq9yWK^J>qI*lo3HmWsSI(MdI@ePm+fhQIS4U^vW2YWg7rifa=%@dNgC5~J zuGJvKN=-Nk&SSW3 z;cIZYn0IzCcnC!Owe{KsWGTbw`jMV$?X7aXG2lbhP%vY|M1`gU|H17CK?)mG z^}WjmWvlSZS&xVU>2 zshFcLm*%>UY`3&XdM(o$6Qc0`*;glne{cb#KaoU7wye-c+4&>Yi2AYao8P&izjJ4X z0UOmZ5c)_PRfsCim)mUH-+|wUz9x}LHv+FG{kh~?V`PdaNpj={%zA)-xd8C7Nxp(8 z@@m-H`Zn953reCjGxeg$hz(#H8(0zhNx?9D^QJ)S+ zkOIe<=Hg?d13=~IPL&~aK_n^C^?C!9LQR)3MGN)K7CA&hB_} zv>?y!q9|n}7Z8b=Cy)d)zi2rMGmAKwePh~w_G-EOi783AmzRoLJroCl7xTDX_#+F08XPquB5*8M~KSxE^7fsburWG*OR_A^_>~e(|DhD!rkI zoqkdVqd57_^S$fR+%GQ@QN(PtY+%}-vXXmqFqcppSsA)eF9#^pe&rrlDD@sGB%qu9 z3HW!496_|HO1X)&{#;-!KY_Hj#d;_t)n|jk{1*0LI2FIH&@~Xr`4m=Q1&gZMo({;W z-9j78vd+-SHH=IyI@-%erLt)+M(=?FQue+Mi#wG(P*C>9<syuiyO|Fze377M}UR!pk>~_R&lD4FU%Qxcra@^gcG`s#R)w zrr0cEHloQxc=#smA}C&G{>ELJWO%$QMiArto{-onD>>11}tj)LIdEb#O$ooeH`w z&xt9jYFWd{xti>U)&*@FsT<|vqV1s98}9|>oJTPQ|2QOx&|E4T+m-> z@Rb?(>Xd0vHVcFvjEIgu*;_o)7&?$jGmTPFaViLsYWV8#DND&=)xf(~IQx4tAU$ct zqKvx7@#X?iABO8h!u!yEY{YZwhH%WTt17OBFeRC&D__8;*okD90h7%civ9HvhrH!@ zLbzS#o9CUj_WHY{`jY<2IShDpW!C14w@Gqj5k)T zcaoEms`+NiH7H98k=0#6+SDcNN04%Qe3Ya#QxaH3?wcoHH3if;*hJ-L7`yX@7NWr? zL0WIPaUP|nJC0qA!OI@94C5$wxY2R$UVOMN{kzU8>@nSM!FzhI&Q?;^a&d=q`){Bd z7s|#Ul63cp`{NIPbe?9y_3j|(f|W|~Sr5n##jpy~A1a)5#^}u=nSCF1q=TfyxMH-0 zHy+F^riyeJKgiD&p>}ak%3ggVnE>b#(s)-b&ArIL5l)!{0!LVDrLAyA3tvW8qngkw znCr7~LNZB+H3hVg?{)^K?bAS%oDMVhQj6<~b2<0?L#}~-{;q7%*Zr$dSwifb1;`2Q(Su*yNIR)wVb#Mm9T_9;G z7f7a;SWu!ymA3lE6e$R%gd-uYm{hCngth3bDDK|Zn_+~l>SiX`2Z?gvmFzun~ zYSgP{-Cb_qTguZocc$%V2k;@7QNNj7MeH;tv9<5|I)|0W2EfoSmB4F?ZUJzFk!Q@( zKifsnH5qAWtu7*Ee7vIJUbXq4Ox{dF{c8E$ir=b_d{aLq>w~lT=dzp9hO+n0rLKgV z=fNLIMyyVIhzYK8{{DrwZdQXNJlIco-}naInh|RMeSzntVy|K=8%k4|bo14)+-Uo! ztLDARTS>o{)KAI{GMX#-&C=;;*r6+4fom$VKQj2&?0>I??Ne1p4UT(;AE^bpi4#+= zUWNGPON?>BWJ%Lz`vW)M=1QL2OU{RGgewSuoEf%w-p0!^GC67=^35O=!MAK^O znd7fY>d9Rj*VYCL{WU!78(d0$&&f(~in?2+oAh+b_G@{X$Dq#)Sn49P=UVkULj z^m4%3P1zqWT}I?(A5U$F=O`Rx2a8g;^9>STU@vj_I=nfXJ}eL)9{p3b=#N|sN3vg7 zhR_dA74T>8%kZq1SRQfo2p2Q=&9d?$|CDo*BmZGcIqN=G)21-MJD4nI>^y|v0*MH?}&*|@ea%HZ0-6Ph|KVl z@;6V|XxE4ai4guBQ6^Q)Bv+jE7_J@m!>pY7rv?@!A|*q(YEi&axy57UsHN@!OUY%u zG8ZxAFEPI>Ano;r*=4sRTQ<&P*hf)ZhZ0u$*jkH9Q3n%4o{_74ypWa3bopOkXpYiN z<@>M)*>;(JGGh1qz$HBZqW7DbeRk({Et=lwU)TzsK zVQs-8YJNY3G`MGzndI_L9maOFGs!J~!zq~vJN5KwUyMv&jFybq05%x!s4oT<@e}Z| z#yNpFM)^%kt`&3wH-8?AwLIWm__0cq%|!40u+v1rHu>dOaWPGH8y*oTZC=Qe*cfG1 z%PIX2>hRs!T~tn4Q1{{Ytid-TwAV&v2B36_nRM+RYqstyREk3Bgb{cp+jrTfI5?)1 zmGgmLB%baCv_t!~WcR;2GFPy>e@5**AO1Ds zP20K)oIjZ@1g7hwGm44W{p=p_|Rn?j0GT}&hBn?$ihM6rCDN-kBv zK;~lIq-Xu0@(C1$&FpT(XAAs7M0TcUOig#xsD#A;z6QLqt%DDIKg$5ZSwY&*WsQJ9 zp!ZbE;bs}Cj>pp6&wh{!feV}i8)G&#;EXgSV9Eo~+dl#ZmPzM8!v+2-J5NfrBQ;$?7~GifY6vlt_(GvtzB6EmT z57}$OdKk1T$Z6bFtWyw~U&(GE5Sap9citq2VAM-0@+vNQ>sE8Mhy+3EjE!H3U9H@jvI(`7(Oo?> zd|)P8>J?}&@^xH+2+mDV7zS8v%R;HU{$8abY$OviEEBWEavG=z3Zt2rSaDn2yx+n; zsjJ`%`zp%aL$y9d3<-e&xC@`q18oG2>iggjT!}*U1sqpR0g<)3x5KEyL*FC^#=~=G zr>t5vEtN&KKATazHacA?g71Aw30-Lj;MEOb)1W7&zffspYL%yd5grmPlOIXCU8Vdr z9F<3$P%3k4LV;}S8#+b;MO9!{Ba6i|HxJ%2ldUg~A;EU=V=q-oHw+~mL<*hHmilU)I03}~?}JQ3C& zraZA!%egtCpbgpKuZ~>XL0p|Sc(5r|hZEb=|6*>~9{M5QZ7_B~o{!hmN>0j9*sK8O zra^#E1@zyBf`+*nfbS4}p|Vi&KGz87u5QUBJU>!i^D1LcN539IOqx0m ze}_1%wU%_c$9*WeBj$Bo7PP@s?Rv0v#NUUEP)g!7>CPsw7~3PO{E`UT8a38+>G zc3byQ7u19qt1@X&+(gH4XK$AVp2$)=FxzpB^fkuY)^YV+82HQ0epOMxp+F zBhzo71l!FD3rX)!a`Rl5@Um^D){T_?ZAxK}C@uN#JUY%?Erkuj6d`4s=i_@a$P^v% z3O59e$Y)!Sb0ZIHG{;JmN^9Pac4RK&zzn^Qk&owbh_70!1hF8utHnfCDtC5nrIG_| z0@>vRlJ(lPXu&VqQN@n<9Jj#1WSQ}zBUQqgS=pl%50PcfAh^@5K?EXqUf+AHfP|>E zpUH%2yc>pfZfg%Me)Z*rvg*BMZU07g#E?Jsc8KhjyR z1gtVhsP-jK*+LLPxq$zx9%43Fns;PZL&-^&hnlH5j8-)kahfND`#b;76pA?d=C3uvD(u-Bk@M;XE z*TbvEjNf%4NBwf$l)vmNRyM|?p(0*Y$p+7e{0w0YW5yPCi>Kh?b)Dn7`}h!f*#P;R zM9+Wgyq@Ow;N{=`v0me$GAezlM?h=+S%>Wl*%)c?6?fycA~YqWy9>$L*(Yj2>*sL&t6oi^{!yA5$C zI2t2i{C??s(rUW`g2Y&CPOukkVXv!o@wZ3^FERJ@CsF=rNMI1`CawL2q+uo*UU-tU zmTM>WdT^Qmi_1mX(L}RS6gD-9kv54T{lFTvm93y8m9j@2Y5o(EO}#(4k+CM8x+v_$ zo%Z5r0c;aqVvOnNoSyLxC^LmBx(dSmJpr5l1|TnUW~m(_SJ|aY$zXu1`f{x0Sol~e za!s4|-D7I+cR-3}vbGDI?4UpntMEvqeavlQ4(FoB@dNUP$a<#PFHHi|J}ztK_u~8v za~T=`^vj+?GHbUw&E7ht_3*xN3xIR!n?O)w_DQNvTMtI#BVH|#E?Qz#XM34^mQl__B zigE^aKcP43igGaNMjvzA`u037gI-=MUa<=B)QMf-AjEIv9CX0p-xk z&mlaYRzkfEWon#Kc1tKc2miTori!=rlY3Y20Em1pfL2Le>+N zTT4EMux%+vM>FO+f?tc0Zo$c2{1CXBFq6sir8}1oqHQS68wbNy1_K{rp6nDN;2dsj zUJ8!_op@nMD(7()u z*JGb_jQ~LxR#JzpLci^sZ|~p+I{g+3{CF~FSD9m}5;F_hAK&?gPrts115NXJkU{6_ z{JMYaPeDat{1IwK?Hwp^f9mu!3U1MZcw%QCHlQ~SrTKnq^v>O0hKasdAbD7wfr!g2 z2a=~dca@sB3slD0F7!qgm``83QIK2~QE?9c+K5$3Z$?u- zc3nn&N1do1f_PV?K;c)spq?-l28%`O5<1th>Ja;A9WYRGo}v1up#&ydTw7>3gOg0& zaSj0W$$^7=5jVcL^jXz%ZAn7$uevtg-6%CH6=`aAPD3hDa^RmJka#VW2I2Tdj0OCN zl~$*Q0+OMis006!mS2oe-~!p>?|y7TRWv*NSkRT9Wy4%cX36c_1VAr1nS*)WosoF* z=vcGKO~dPBuF6NjoQW&Q-cX!zx1y$P58_X)lHV-blU1u;X_j>PQIw^v(e~m zXUm7{Go3mP0~B*(lBj6@N^#5a!q<`-KOf&TW$C829scfTbqS2)f?@60=i9l4Zbv0b z26VF~Eu1ZH+$XIjU%u84_%{|fN>*Y_R|?!Qxk4@hjAB$2N1yY_2Q(bYN9pRZeeV82 z)fn`3D^Dx@iJxIlGO0wySBjTj1POs)u&VVp9!ZDJ5^j9U$>GpDWKwp3zC>-_;CKwfgV0rVcbp3dD>CGbd`0 zw9X08XW}eF?x|Dt1n3L{=3~c8@w_D|o%&)R0XKIxtx-S({4&Q2RbI;F9B@?2F(!=*a&KV;rkRn8h#m?E5PgTkIptXW zxkOj+m44$-<5dk9<+Q6U)|661WNA}+CjmgV`+3uz$;rNbF7-Iael0S_W3Bwlu|*Bt z-WR}K_7X@kD7;aMX*hHYEB4-%QNPE#R&Zp6jF~_y@Mbp@< z!q}`FGxMJ$(qOlFh`X-hJp>?y^cz$G@x*>7{;+2_AuF?;^w$quW`?i%-bD*0H7WBe z*i3Fbzs}jud|T{W1fIdtth=Hwt|2RQlFacq>SINL{{+C$tZUuE>>j;hR*hk;>Cpa3 zhnY@?*#aK`fU)E#9i~ZkC2eZ5vUg|4!6#((l@Tve+z_C8(A>c{C0hz6nB`%)t74&? zNiHPN{Y8;%z9jk|G#bS55+2~lUx)ze0onU$GPypM2wF2dDy-OtR6dvXx&^7AdXRsKuN*PxXh?zSD8jTEn@W+W`b+1IQ9K zTD-x+djwjSydK48EGUH4F6V7)B8VN z-~K}ORhk{k3nu?OQbkQ%1V%K9Uk~qOf{f1Fj7#>h_>ZwX60?{A4-k;kWW_?9*tjcTLc)t>48;v24xgTyVIDhq-5JgWP?oaOryp}+4ksEZ%S$U zw2@d@i7CV>Mtbhd zl6w3v;Ty3E{TqS319ugJdVZhB>3wwp=)QsMvZpqV#~XTnTzhAMs2gD%Ijw(G>R{FR z8nC<(&})V3asWtMM^>7?z>LojaSgS>#o|=NcP`lj8aKZTKM7rdb0j{Bhu*upVn+bk zl*Z_h#t8TXM@@7&L6rAg_+6tEG;NkMBGB1Ux5}eOAlQ=+y$}FJ=^VzGICw0d^4IX} zS@63iwOagxSwJ1UXKSiZxyK`fFP_FR2j>VnV)|^@zG!Hsj9Fce%?N-5P2?g&Ug^k1 z%ztT4)r}UhWqSd0HgijXCWaTyQ;Enl&+wtB964d-L#ix_oGf|S!Gz9-aQNvg>z(id6V`J{%5=Fr@fMRs$8`(kZ1h3-V6>y!Ydv;$nf04c z`50`59#IeUZKP6?i5M?k5~g^D#NWmT9F=w6HFWOZ*Hr$T3_P-J^G0&JNQx!?1rs%mWp-Ps;}rtV~$u)s{MkJ0d=otS;g zW9QD>ar31BM%Y2|?%EEASPNlwCMGj0sDrxULYn+UXH2NHeu%;iz&ZHH@o+=S0bks` zPKVDP^kYLQVCfXqT3MO=NR!0abeeJ~-GpxjV-XCfL)B+KEyI z)+fpI5KaaH;WQA+8dN2^VKKt+QToRk5k?PDFh3E-F^X#s8|dtlgrtmSEB?)Gq#TX& z->p>_=TT1JFWWj*?*d{Ltibh*>63jCmO+a)PeIqlqnD>>8KJeKQ(lphY8RCXdJabp?vudap5*IZ5pOU|b6NQ&76V|0Ub~GD6Ijz` z>9Hti*;9Je;@yji10PGWJ#+LgzGrA&dX1&D!7z3H?eMU)EYX@etd{p!c#jC0xqF(; zLH-W7KK8h~9X#m9gzMv8k>jHLCc{bj%N~*^2Cjk!BsDxM*5r|LC878zb&17Yw&!K|V_G`^AG#%6aDMdUjjyp=O>L7I!8%BtImstk5Wn8~uW=CfAlR|qXhYyhzl~o6 z(Z0A5b_4(AM+3Y{Dcw)?Skm=a@Wp0SUI2gW*?^y`)SG$bIIzi}o48I96DCnJ3#AyR z)nQG3&}igYcMaW+lcUk>3dR3+@ovF~BQMWop2H7$R1O^^a?FD4_$9EGgC+Ehzv4j0 zE%G|zEvd^+oR-%!ownX2Xn$1~WLd`BwhUtsmOoDhPiRWL@?Cc9W-wlKJQk5CF-D`> z5ib*)7q^$aMRyeTQ6=Qr4Gq=2wY0~~qh~|Jy92~?e5WX|(}ZEkSZR}1&`_U7MyoK| zgprfG`)ccAPLU?*{%&@@tHLTY{Wn`EXXN4rkNM6Vks+S;DlU?*#~HcX@OJ#flzqyd z9nd=QrP>ki9v39YEZealCNXj*F@!)k*rGA6W zJCCb{fW3Zn=)ALeH6xkQ>6+KaUpP|+;6f54E+j~`v2o6@TKlxYMGXSLDWVjksC2hrqi-|q|By+0wd438#46t>uF~6RwWdFMoRm5RZ}`N zP%gkkOSo_Hd^7+{D$3yi;$32VJv?w(1HXl9O*JHNobDJ49R9qa|B=a{h69v&E|Xa= zlzA?285fw$5t-uVrLD?EL8H-U11R{J6`B%TKhzkbyMIHwAXqur-+lJz-XfIu$lk>0 z*{lBula}H#sEPYD6Rq!0fXfr`yFWAZ2Iv22`g@?{38ytgm#NH ztpd$_9PU-~B@$N!X&7wDs*`a4zxe>?`&VMHZEx!&DQ;lOBp46TvhA-hp41ike#FcH z4;ujQ@5)grB<|1ew}kTCWP#4wxFT!7z$9$IL9& zx?6{zK11Ql0nKmga{*ybuSE0VJGA5dG!@w-3T`LD_@su!C!$bRGKyE0cTYD6wC~i# z@1U39i=mL>HhN4hnF2mkD}|D{-s+Oy4)qDOO9#s=raiqDw^(3Xn2c&(We}xobq-i( zn7uo8GPKGcUyu_vM2pW@fcix%lvU^Hs^x9iAFKcae87=GM>H$i;1=b?2~os;4!KK2T}(L8?W6JHcN zFLqmhVsI={r1LP1(?18)g74&Yi57bL)ajb*E5R!q|q{WlQ#J)Mu(`szm4r*IM-V z-UURg;hNTd_a!$xQ2m95=|64;I{fL2(Nv+a^Xd5^N))zT*k5suI3>xY2OGJWyjE|9MNvO-AMbrd*&};sD7`^Rm7A z4h^DyEg)?o0>b&3sjr3g8Rqr-_&k9!KLVDpV23tfE{t zZfab{REZUt_WnuR+{0>2!D&>KZQu7Gmyux3qdu{HOd| z+KcUr=_LvILUqlew&%Vc8_wN73uag;9@r8(Q=<_$!i?~zqe|ub=+Ggfl6G#&5wn8E zc&~611Mf5@Dk(!25yLzJLzb(rR1X83^6Lk3X~UkwCWv6Q=@Xkk0s+1u##PEe@w6q* zeJ3vPbF6JO4+@Ff0LA4(sZ2bql!I~bUk;I{gj9w$-Slk}tk4S9=OUx0pP-tGNS;fl zG0y6noa8nmei$f*4VKeiSOJ`4h5Ponp|(o1E+tHL$H+7k z_X4up{Zv8OGgZBm>%Ywab~7&#jYI#iA%KnJrd$PY#l}$H{zC@TPX1tVb4+#+YyA^5 zWHqoA1GqGzpV-=6yvkZ0l7Qlrl)Gp6K8m;QX4pODvm@+n{s+Q~@8u~)fNz25vbtT$ za&fhOeLc3}!e1Y;cj8<YFcHwzX8zlP=*yFw@Rp23-kYkbI@M$HS=eY36#y13{BK z+&25p?({$7O5+gz8tN6kGRyPD$`fhA0~SgD-y($2IId0a!aqNyQuX8|Gsu9Ns&MSK zS*VjeY0zC<@gc%;MpYfkk;sUgFGp(lQCx`UmhZelR;epLeH(!;(iZ>-DCYYGJ+3;p z_hcQwAjBZR+ZP`|D0Dd=fz;;pXa1dGxNnP zKfq3QP@v3_J4@qwfAL)bob#Y&V{H$ju%neW7>3lg+|+P6nBw+eb{XWWL{Pmyd_Dnu zTL9b1q(Bs7iK*Zqsfj{^2)YV?#Pqi7a%nfp3n$OF$sQX&6xHZjlC2Vunr;P-&z)lo+H- zLIf#MLP44#B@{^k5d}mluJF&Z1;ZFUUA>|TIkLNpn{v5*T$vP zP!5*aA3Jg?ym>ox_B~oXuG)DEBqa>QMz7DSZzqw0#^hmHp$sS>5{mUTVPeZkWY8-@ zi2X?hY#@yyQepo)K#smMeXM3tgzXyng|btIi4UID=Xz<{<2ja4Uc3hw;a6=8juwLD zdpWyFEfg`(+UJ6CXTGLyh{fq-Yt2Os5Q`usSeo;<|&LQo{zg2$(1}Hxn?jYt!&BAkp zs<6lO=%O%>s*|DdZ>(ZnP1yck;5v?Q{v8&4Af*}5g>_%l?AXHrslbL%!@H;;oJz*W zdB-;QG3>USd8*DeXiV{0ZYnaiNwO!k zDAC{uVAK@v8V9M$*4Q8>%0|dEqc(MCur|&7!DS&qkiPpe>)uGCyj0*&ZWIdsb~*G3 zrzSCMSAW1NkIFA{m(>W&N%b&@dDl@@;7!zV=NzP`AbP>ao2L4s7U*>*X4$E7Wz6^Y zB`oRw#4+fCIw0jSn_U!JN-(AlnDwg7zrx8Ap-`_&)uAwrWWZio6m!RCqRSB|{@MQa z1W>^@^J%-YsCoS^#cH@&7+)x|pFY3+k?QlKX`CLEPWiS!L0D5}^1Dryvvc-R%49xStoS(Oz8FNE;1M zlEj&NTiNdPmY=zy_YwPY)j0&98GTU1Q83cdKvh_&03ywFTFjLJk7E3AE8-dnJaGxU zfD(+lrA(3RIB-mw+9lytscBofYzH-w=>B_7CAp zJybhrLLC>`W(gznH`(!SA(0s^zg`<^KW)+HeMgb9lw~@CuXtVBD$W^nWI$Gte~J5! z+a{==g&O-JALibforu@&7^*7M`Q{cjbr$zbqR%{Kbrfa$~x9? zzQr*Gg63+@9Qm8<5;sF(bl=d3sA$T&l{+~xP;nt#HpH6tgYOh~qRUCZAU#*HPQ{NZy`Z z!akJkD+YNLOCh;u+fOTLUUW@J^kDx?+msTtdaJ@9NroG0q40F0=RrHTE_W(anX9TF zmMvrOz5${sN9)Qu!cQRn_oA|y>{53RH@Sn6nuM?q3^>^gIQsNBzs-8lp613uizZ%6 zZW0&&l5bV-)tMPRS!xD#oqPOmhHKU@*pOVLn^kj$8;fDLkER9 zFuiQ6SzQeG6~i-X`75XLE+aL5NtIy#ea78qwUMUFSzEei?*&heiL6!g;8Flr{5LVl zG_LDz1xFIm{T}NMPmcs8E1rX=Th7nr6A=*XJLkx}r@=kN%93ec1bvld3J7~B@ zX0w0@5ASv?Zku zt}6?xe7^*WLi7?cCxF)hSR(1tp>r(@oWAmDytjfHeqCmjl;*X}Tu#ew{iGW4BS3DK$=Sd3Ii(NNG zK=0Z9+&F(h%7fIN(1@ckqv<(2;Gb87A8r!(buIVm*xKreB7_Ye3wI{>V@gl37dyuO z%E{2>9(`GwGnC(6m{U29J5h)Ws>Bu6$SIig(ia86b8Ew&iKMgMI7i?Etel;9_`(Fz z#^`}F>rKL@*uLccvd?+?k(>^UgxZN@$H@u<%aUA>JaJ1fBpz;aixWa!8^GK`8{@@$ zey^@gl@l@IWw+PA*dqWhMT6AHlX8+DsGIOm>Lws{^&ETsiUupAOVNZ#SiG?H3)Por z<82K>3D%h7D!0Pi8R5&wm`v<4X42(u>0O|xb;FXD)#7D5R?o&?ryF@9(MXDgc(_SN zlk_JtU?pMl`fF(WSu*25Cu1T~<~-lUn9`+aOyvHRe^DlG68Q&5$}MXxLL0M_i9xhm zZUD)7eUpF!pV1~|jSqm}tU^ik#|sZB90!W^o_DU`+Nca`vhFKr>`8IiE_P~|lv2Dm z{>Q$gEz_{RsmIT`p%rdJkxtJZB+<}qfB9moz3CR#?S{q5|IcRNqfaNpv5mxbb7L?- zU2t*u)i>0-({D+zuav{>-1(g;{fHN)7@0+~*}rt3=gf*Q>Tf1~+58-O`Z96aFnb*= z;vQciI3nNJ;`e5$FCMWkUb`3GK%F%zl@)*b)w|H6fWKe*BS3ZXAY} zT72wda(LEAYNb`zUinVbpRgf#E*$yhBjcFt5-K+{%^q^Am84j;)3dd0 zc#04-%ogmtND1!BBntCKOzjH2cH1vSc-Q1~G){n2_CBbZ<_gD7glMlm0DN=?yfDg? z+AK&f24=7I2+sA^Ap9Js$w8*Pi&nQSa{K@!?;CCzu@MnDUbxmiUnlB8U29e#ZWhYc zg@Mckfk+(UsgfJxpxiH;4tCRuJw?1`63x8DmpE9iI+4DIWu{}aWwW76dGWDQLUa1( z+h@VQK*BFT)my_vgBE%{8@pK7T6w8^+Lus99TZIpVFL_WXJQ3uuB9bTNm-M z9|?^}RRP(Gqq4Z5$h*hkN{G0rR`qS6umK^gZxGB*c)&6%#3Id4-DiE*uKC%stpLy5 z@_8BicCbj^`USlsaZ1ZwrGtApJ0g8t0{EHTkwa$^J$4D^x5xa>0>t&`L^I%8*w^?s z$4Oj`Q}ycG%wYq}Shi7^4gruY;lB!JdVYwbpQrZijf%{HSklLg75-pVBK4(-YcRWv zJkHYAx1M$FPK}#Wij|6j9?#EG%~nMx$)$q(a<3|l7BngauGyIoIcY18sdpEh&TBg& zSPTJ=L6VNzia3G=wUvSW#{zoJnf|ohizcMO2@$8I%##yJN|M2X%W^9A9z|LMeV_TL z7WSXP@%3B1U~A{iO5%bX-KTp!@j7v+>(bEYKx;@y`iiyPigkQ?gtP*X0I$|DNDwJK zoO|M+uF+&nMoCH%@Dxmjzkk0@q>hx!$Q)Ma+Llw%h`Sf@gU^l=2z7W@HO$vld&bVw zB|_5mw~ZY=!A8>obpkSWld;8g#IbLZOmTy79^F!0$2S4GeYRk9GK13Xi#HDIw$k|Q zNIvSjPKsGbuTjGQZq;j`3&_6B-ihNl!Cqxp+Fc@eE6pYwk%VFoS~;MjUe0VetzARi z)8~Gqd{6ZugugqI`LX)MZAmHE1PzU_}33WI!3{QZWkp5}Ac3~NGuX2+c?w+dcI zbq_^KFHlrik-=LN1{O+deSpXnwJY2u{K=cGSZLjD^!g2%ysJ?Omqgp6kIt+iope}c zLi-UVWNS=TLfGYGvCnf8ZTo?Z!W)AWUT0ZITWICdM=P|&~FX@^TY*8rz#*}iW z)DP{E&LzmaTE@CEpr&>%5`I+Hu&k^|)M?nFc8tdDbO@q^3(bYyz3c^^x+U6KmrDQ{ zDsvtP33q@7M4hp}h=k3<^98pUE5SzZ)!zD3WBp;G*DX|cWqCJT;I~a$dKwZZNmw z*em_Bj>gD`&Bf{~v4ajvll0iSywmP@k6Le4n}4TEg$Qc_oft=_{USQTi35RS|G4KW zOI(qOr6NXI5AJL#*@%?gNUSkj;&P#iehE|Swe-gN#R(O~E7lwmnH&YEF1)_#JD(2n zIm0feX7`fY2{_-7wpQb{j;MZ=IdmK7#0Ynu_<(DaUCA7lir=%uG(MNAyJfu0lFZiD zmF(@s7ybEYbyLfsu>ytO6EolDTpI#fkNiZPk$Lgif=VGQ4DXNE6JMo5VDoJgL!}@l zYnH8?U=QxxVIV940!PY4Em_R_2MWZUcDR1QO}^`$7Cr8_J}$nKJ!ISDb`b9Me_=_e zSH!=nO4KRzM+V@-V`ZHyBKdslMdzybr|$3ctj6+G!vs)b^tX|wJ{~f>*y2WJ%7fsv zcsiTw{#k@F30|avCH`lxC}RvD4`O7X8obn55;=WY7cAl|=q}`5;mDTH;B64^RC+DE zV*4K@hH%;ii@atpCH>)Uxtj&59G)>$GN|X$K5yTTR{dG zSl6teYV|v5GM_w%%yL?e>@_bn&JiU7*!CVas=Prd1T`;@Z3q@Sl{ec;>b^&>vx&rBUfuElg9zMFp1(Gy zB2P`xv(&2$Z<4?hlE6Du>IM{nGN1@V8pH7O%~VJ4rsq5vu>ou+`o$DH3LriF8-=_C z&lyyhdy8*G6R6HCzmuSI?|y&C`HexQNT%HGrBNPPLkWF){lZ6RQgYPp;59&18xZ_< z+5DXmf6;b~f>DVOpHkoE?6xQP;Q_FA1vDc>nJ8WxFS)*aAz=@T51H0ey3g=kJ5JTo zeeH$8S%ac=fy8=@%1-0^wM^`5;Keu}mt?Jpi*Eh=FRzw-0Aqhf5>`}tEJJg+hj@MyCfa}&Q?XNDd$A;#{ zH_4zQsnMldZzQ$6`M&7h`Ar9~As)MIo=*EJv^Q%2@CH%#yB;U%D$=5UAc90C29YY> zl$R>`wm1yB;Fad#ba$j~O3aBY(_dvsr8_z6c)`v#QrMtql%FwBb`sDDt$cec=_2bN zsU9JemgO0^mZTpssyIpztXq6%i<071cA;{JO(Cqoi@%-Ugy+-rIF3sEej*|1K`3kG zvxwjAs?IFM>n7;UOZHDs1)S*7RU|d5)?LsWpcA^~5T8lQnEss9`3_T5cQyL6zO2T6}O?Wq^ZnQV}kCO#1ov4P#+KL4{<+=)_kxLW2_}g;kAyeg}xKaAm^nXRohWNRW z!*@Y3$|PPgE6sGNZ0jrJ-B*amA*gZq8`sJ|EBhY1(MCq%t?4CKO@{v21-QCA8o$wlF{shAztGYaRsrzpj7FzBnHCxR zWc`cJnjcVEJZ9^B@&%1R{Kmpb{2+keM(N|h!lvewg3^O|I18)NY-{Eo^{Mo&*%> zSnWSi1`eG7%aG=*H%GEQePK=vEgkanhcGeSd0<>oQ=YWM!tq4HueKhEFU(|%w*iti zmF|H}u8!tk=WJAVVW+}ofsHPuzz>1UM4kxZy>R%a)C8@kPMckKJVNa~AfNm&DLiPt z?aNo*b79^dK{BW0i^|DMS4af2j_38 zKSBCSqXTqYWl1Umo!{gr5oz^H!(5+5+xB9CW1Eo^6@}IV4~K45#Tku%Eg9GDbhDa| zu>>Qv_Zk$J`*Wj#NEuGK%^y%QGi>JUsUIUB!IQl#c9r71>NTWqVc37CR4>CVPh6;$ ziR7eW6o9rl2nn>;ks+5g9HxK{jL zRT-DNEEFMjEwpYGBnF_hir|9ePK$C;M-$X4=}9R@US&+?lcZY+TzsGsl_VqoC7|J$ z_~feIZc{B-7WcI0JjvCANfox*E3xo15IAHa#i=a)G#Ns<-iH{V)CpbyivHz?0ir1A z;f8+EOe`@wLQ(GNnu?%ZEkb5Yv?r(XGF?BUa?nKtBhh^R4EF@@sHE!)}R8Y zN8Q{g^-J6zs7DD1l9d5NtCICBPDy|NEoeAEV>MfLu3)#U?0hds3&G?$pR_H9t4{?G zH_94f#*fB=xJzouTpp|w27sKfI||5uzo6v5BlwJREu??HB-C->dAs~Xqn;cH(~fc4 z)!lfUMh3>3sC54H-)_nu2-r?P+@(tjJtqkggXM|SosIhPd9lD0jd-LwLiXj@H`=D? zH-AG*frh73LL(H$geu~J4jteG=b?5%v~qc=1(fly!+)0AM2qaLow4k060RE0*fVEil`u zjzou16iXmCIUG3oS|}<%OBd75Rmd#aSEe>Wy8Xx#LFD)BY8ke@V$del^3=q^g{W@{ z=5pud8(i{Y^K{6JYV2UQ?HXYMv>q!^L$2_vukfJG=IaJr1<;@38H3JpP~loGhm{G9ZVjFYaHmnbtu zhs=eAw=GuDguA}mnHP)y#R-m6r}9vp3A?^ zS}r}i#KNNt(Al{7&y{t9Z(SBF$OF$o3YV#T&Jq6;xZurwP-# zbYrib?&x&htqq0MD$>@5o@NT7iO)AnK^K^Y5BGU?Lb=K@*f$6GZjuVg?&2LZyLpAa zF_KcMT$J=TC6?)-hV)cGi#$Su?j(90o6>lqB0zo^T zf-m0T0;)X`BN_NB9`o_Oenqiy;BYQlIzqOIyl7Al;qUrE6$AJcS3JTxg$@Q#U0=k1 zzk8p;v+q1{Nf_8(IXGeYX%;(w7W)|PhhD}FP*O=W z`~#WyCw-?Hs%n8d$%#R7&oTxK83_kT?&&y~yt#;4Gd1Q-2vT)bjh*s4e3MiStRRY-_8-W9Xfbb&^dnYjg)o2mZx!bQ56ooi4JPymV&%iLbs{%3sEvl zP#i2b-8SrB7`wLd*BUq*x}709zHYjmjy*iI6iW7{K}{EPo8r3aOaE4l2?m^ewx7K7 zNv>uQdDY0!#1C$Qyv;sz^Q{|?{3nqM z(Try6@IncEYzh2;(HEf0CkoZ#564M7XkR>h9OJLtZukSu<$8|q($3b2=pDeR{0e#q zh^o@Iwx5Qo|3@S1r%9kVppiBJ8S( zl`_O-{O|#KdL&II()vY3Sc;4JZ|uS!c-TMi4p&j3bHwj;ry@?WAp38@Vn}jdD5}$B zW-%ngzM=mTwZ&6^Z1o;~&*xM%N;f4I_&%!U(#~1OX`X{p=@wCJc3wD7zWbn+9Kjh3 zdTEj*+znnaL3aaKy?(F zf6J*5=;+|O-%*7j-e<^Ov7{#GYd8IMer+PNELBEKlWh((hy<)a652eQu+pF@t}eO- zWR_O!fcbdDj*(fSnU5P+STlbL{{SN{U?jM~$mD~oQfVXM6|O+l>nv}KT(SL=N44+* z@t)T5sp{KGH2($W8x>bTS6$pPXh;f0)Mt1_d7%=Mt zREN~jr~KiDM%PRnexM|GZabHlO^DU!<2vg!fs7-_wh_^*=Efn>&t!&IRrpBNX}aoc zqR3E;pW1h*`Oz}2aD_q`1wuyIl zHr-T<$8n%a(CEGJr-ONg4Y=4K254h6(4f>IRjAXoGUNVW_9w(A1hipbUt2BzB);Ne zE}4`YG75%b)LLTYJh=;0?>0(wu0zh^3zO)sUNEG|MX6Mj_>r@Oz%Ll6s0w8sMYuLo zlP1Z6eiNavPN6UXp|Bl69Wae23i&YoXE;*^PvLC_%MT&$R`5)h$rL^-OE6$<`Y+BS5TmpZgE2kQAPm%|5O>MNelcJfZScD6CHi z>*@o*;$o@-COGn_xiv-HEll@%1DL6S*1nV%ZPBed9pZqhK$6QYIx7L5eU&ReJ(=2P z{3+)@k!HN`ZhzwnJl)|Qb=Zj!oNLZauD~BMGU`GsD09U>OVJ?gPomvGD6)kx_jmJ5syT=!HyXc=KfJ7BNLwwH5D z%?a<75wXRdSin|(sWun-izdE)Zu7A|9>GNpddvj$k zN?hkw*5~fd`>H?$I_=%by z?7;|Q3%=KD&vu()X!1CgzgnqQxN-QMp?BE_|15q~`&(}`3(BCd0 z7RD{^!Ef<25-6$q}aQG!0;Yfwv+3G>F;!%O3yJM>^88lK~o zfpiTGlA;g!T9SYB$1L|-$q8OaEWhZ1+(`>PPo2iKS`6Zf9Mu+9s288yk(Sg`G;6=@ z>>B^_PFHn8`3wVgD(D*zy9Lq>#O4K%Ziqcrz2EJwX;~K_mj<#LduHYVe%5B|xsX-4 z?F%+bhCSRq4j^%oq3;3~JRHKB(TT<*&5)LQE(lZM;Vt$|+9HAP!u_rga& zpGf$2jND6|9(&j9Axb(>NV+~;_EAI6Tv{a)zue`kJ@ZTc=xMCUn-^@kA%HEg{v#Bo zta(EF+Ns?)uA+0Bvtu7KdnMkRV~zb6e-Xc+9$cK<5Y(`YJv7>Cr6#Ua#!xz_4v;Bb z_>ZjXGgN0~$?wB`#RJVk{_X)mY*eilu&}YN%CY^$C?bo*JzO7NV_{E;mWBIW^_Q8v$m`J89&@RT! zTo}|rD7J9cE>A|@mKGBb%ldV|&VwprTKov)d zf{mWw%m}5G4>_UikwpUaS}* zF+OuY**!6|uba5-4_9}WE}p~>^{Qjv@@?!p+_3o~|Ne639b3gcUB_+`AX>u)Nn3@R zZ1zY!&&0UfSD_qJ!b~t5%zNijo&)^mr=Y?(D?TbevXKeecc$M|JDlE}D14@sS!(F(o&CC891UHJ>884Ok_fkWxaFvt`ITsLT10>jPt zr7W*8(*=*y=GSqrB=ZA=X0&#b9sD@5=dtEn5S~6TS<5{ z1RqA6ayHZ_L#m?HKSY-iO|&`^A}z4^#j=S6!8;;GBVkJpZ8M1uil5|`4iQH_XwT5j zUrvpy4UZPEhs3J0xjVRW2bY}WP~4^Nopv#NpuBN54Ga$|$d}?6@BC9WawJV1X3rL8 zdS!AcPHo>Yd-*YDOyCk;$<06%`Q|5`r^|I6xzxgOY5y}NtP$VydZVbyr#O{!!Gz2vmY!s!9QlSA3U9Z9B4ZsXj04> z=viN&%3cWs4R|?GpHmWil%y9wC{^gL<0jav$jZ8@l~BLBEDc-Kj^vz!li)m1&RyJ4 z_#Egy)QlcmajeAHz)-@zY;Gaz$OeX(IN;2vOU7x{)IT%06{s*j3yGbDn9e{p&7@I& zA(b?Gyp)|uiZ_iOPwRdmW&#j7Sz6b1)v{V^aUS{}hIp<0_P1)~M4pm?r7?&mnE3eQ zEJWb2hmEIy$kI4WW$L=c_t4^ytXW7C)}1y==jx*RA%XEB1W8IZN#}1=j?e&*Lvbc} z2BQoyE(x)`QQq5E$>;)ZA>+D`2aDlGUpa~;w`!nIO&qv!$$8@9MNfgT4&}Gm0;tB$ zU0$NhsRW5{nuBG85ZON(nPOfGUT{;ExgWxBhCWz8vMnGArKtKXbyEmHMVqcF8qDv5 z%HpOQFrnf3Zhq4qMGb#o{umHR!Y9>D9B4Vy8#j}+8u?u=40bp@-qv%lY)85$oMLSUt2V|DtX5)m+)2|^DyxqmV4wcbc!H=L4jf&r5K zWb@t=*B*Stf{(X@v{JLO2_9{lNjA5BoAB&g&LkC#s9+bSCH@2dCiUvtn2-h-{Ilem zRkKKGCW1H8YJqTE9l`D!!d@Kyfk_Xr!6G`MMLpRJ!mb-)prfY&B7SX>cg=ygx6om> z!Llf#Fd$>vY%K6lYDw=Y);C>8zZc}<6LOeW<6!Dd98rVy$tW10x*!pmSUQm#h>Z^4 ziyq`@@P&x`LIPw_&9*~+WSxq|bEd1~1&a)SsXXdYX%%31iJ~VLEyEuI3z&oc`MDVw z>%vvX;N4gyv0>Pi9EB-(!FHhWWbetfsEh6bVHawQjg(erDdR8Rop0AK0ksDKy97b# zJyf43K-VA_B&*b3>6JKJMZ6Off}D{d0mfcRat6+M2FQ)lg=&6_Xcu*b8^jDqR@GG) zT2k2agl97WyMhprt(9z+1ah}G$;SL6U2U6-mA`KUsefY*9b$&OzKjwSN+579BP*mm z;G3FE%+wz*Cz&TZ-bf~=9hU0@h(Hz1d z+ggcnnmNjK^+EeFY#gM4_0;t`#o1Ypt}%Y!xl`s``8oZP4}Ao)bG2wM0IbTp3l z9G~%z(XO!yZ?^<|ILe`TXYJ(uSYA$MA{%7`U_;eKc7($2jc+o=CmusqlCkd=;u1sL zBr8X)VbCqz&>>w2uWsnEAQjp}f7xkCk$#k**Jz}{Kmr6AL@7P3!3P0s*R>zYUjSfH zBS{xW?8#-&DDjo0R%|>+$Qpt!dk-5V{UsIxCKZy3{%oPGz#NB2imX~N2D$Od(tT8W z9h>?y_6`+5+5VXa_+>dOqL{qgL^bO6Js>TkCy4gJcHve1K<{^-1O%Pyt~;Ukx|Vm` z)Y}WToxE&K<#*pD=eIf><{BJ=Akcd0O?>8^&eo6enb7CuVy zD4Nc(YlGDU#gRFMH7@lPxpU2`cH&#rq21LG)>)L24IOtXu&z|P?ar90rnaC!T|kdg z=$C0x#+v7|Jys}(3oSOL`nP}U2W;Ovt(FGbz}bBad3|i545O}|XjAMcsh;TuLQ}Ak zj2L4IZANp^U6-|jMLfoD|X$>qrAc~arw`j zIRPDI?N3Y1uZ`PhHDr$v8Fq=D@aeg(EsX56Z&3cB0CUHtBUIEchIhn8A6aLKZ{>w{ z=RvN%#MF&cz})KHD0qq#h!rRMKZ9^h9o)pmr>b$!_s=cIt4LfMqnAU_n*r<~`Owe{ zi`=^Y{MKVM9DZz(GaWgQ%IPEh9ETGX7g(9Qos5uj?@d|U0@q9YOcigLLXsa~iY#JK z%iVrx>{UM%8nZmUk5(_(p7{OjZo+0+519Q3T+hSU#v79D^?RKBm`&CB;~5BZ7_}j(q>BL4@DJ)X3pcyp>VGjz>44I! z5bMiNi)O$igC-I7nukrb%aQ)d3d`JGykk`xXvG=W5O>4v%O4A#D4ddB!~R=5g#YZK zRj*BG%(Y^heB|^9VZ{*P;`$ZL{lUE;>Czkd1ddgtRby@|^!1F9<;Tyo@GWIG9?&gv z7jM+i)pD3>FMCVUttaVA`4ZFReAo~Ft#BxHI9Hd?mLFpg=j=GKI?GFYJ zR*Pcku?O5tKEFSV))6v|>?QDq>V*;X{dw7zozdPyO1*W&j9Uf_y8_%Fo}hnhVUoGY z^dfY;L0qkg1Pq`xG}(5AhRVQ=)~(=4?v z`R_TZM&G{UeOqhmAidb)X0nW4y@c~)OY?Da-g5G{n4SRNOTmv;1HrT6ee0R3?CYm* z8|JdHGPAMn-$aeq9r1HgWQm`nkISX1MVduwFPp1Kq2xaqD&U*0rpKB%yiX?rHCG%n ze4b~JSvO{)L6|2}sFwB>T6nxXnwGI5AR=|797M&SMEN%zsJ|3z=5zYxl*I&5WgL(L z8VI6Bsyc!*OpFND_P_AgS9H{e+$;e1=LYan z^zg~J#JfsPTs>Gtx?jYzUuE{gDhq3`G z;V^=G7Ws*IWXXs2*Vn65`v#m_UEaliG@Xx|zfAs@X6a%@`s19I zw_(!ce2tE`eihbf3%$d(@NtymKKhABWnO=tQ@U+WCCxfKmMxLPuw?V|TlHICu1NcG z)6LhqjO%R%&U4?H#`aDkHY4#%q?^{rvJO%X5H#&yQYWkY#B$f12TS#*1+O&DPyclD z#NQrp$ST>o;l4lBpc#(Sv}gK^%gpillJ>Xi{d<9eQ*teI8#7FfLcS?+eCcvQf8Ikz z-w-!2uQVDn#g9nxMSl9&@)v(6nN?b|^qU0EyPzrW^~fnJ^MItguft~G9eMJa+jhSL zUmrfUCOX05l(!eW_1z)d^_6jvzv8n!vq*x~r5`ndRPPlx zMQ^bp$bXE{;Ih6-e+yUqe6Mg);@ck!gUwNnzt@MApLCec+ZEO_D0mt%|m2oE*cBQ}y+ zv*T|2#QHs&NiX7Gi{#R`G;Se26caG64*FKTW7J#Q?P(J{UUduz99Sh-(7JQO@uiXg z@6Q$&hZ{tH%TCA_c3G_dygYo?K`F(SaWA`5ymjuA8c%f7WB)6+czSKjj+jOk6`pvA zz_n~*(<`J`###Lr9PC2B9Pa)&3U&L-n`D?5+C%Y{k3|3{j>aCCUEr2|h>Th(&fPYSV!q{%Wqv72cfxX5CX=@ob$jG29@>=p6nk7wq{fR{ z6zYXZj>djjJxu%+-Ns{KO6`qXAAoP6&Jn=m9612-El3gi@x3ehmr+olLFxO`$oCys z|83Kc;$AX$0$Zj6b`8uLa?{7r%~wSIw^w;)DRfm)gu$u#l>=?LZ;4rq^?O9=m3dJECC|`0sIIrNv!;#&+0O8Ii1@D` z7o^nIw7D{^7y~BOPW%_O#tJ#jX>-*2CyH1~Ls;G&q)cqq*>g4qS#A9GhMN#4eX!?A z@V?!6A{E|$@oO;TzcjYI=FM4Hb1)0%s0-}-AyMKI$WMu7!d-P!k+GZp_rupM|U|smr*#= zIWrF8wDjSwvIxzKHQ(?5ix9Y)HY}fH@aLW&h@2bv9pU#@tio(@aA|^iQWL;to z`5mmMPhYPXy@$wM+V13L#R+Ox%*-9)t}pySB4*1MbLVARf9r=K_1hPP%umAZzUnuy zdW%J2b>CbnEjO?%T*@b7={B(2~>zF z{w#wUc?(y3@EK25T0i&}d{Cg~H*!VbfYr9&^m^}Ri0QTeK3s0r+@czAsE6Qy88L^8 zF{J-{#Au^>k$QzJ;_`*4I?6SOlwqX`p016#pa?nM4=zf|o?7B&(I~7GsNb#U`NARJ z`}Lo|sqcCeH2vUKcf}uY82tJjQexE@Co-~f*}#RadfDP3e*5?<7xFZ|Hl-N}hx~8Z zMR^J*Dt>o9I^UQ5`&@SC;^lUmjY>5Ker+1YRo!lQlXREy@}O>3QH3}|oIsYBCHrze zySuaLgJ%Z%jq8DQGQZSnhgXPdKV9$&@H_d}RdGxSOk)5W9K`|G1#Hqv#nZ#j(Zlbi zNuZabuMNtIYSQ)e-&`gKyK}VS5fL&kC}XlCvGKyPH(-2vk`A*RpO?^|(=MQ-iPEbM zSZE*3e^kAYOz~_3@pC4F#ppgY_6-94+bo;`wT&EdTE{s}oZ2tat;l~3u0apK`?Nk|$mjT_YqlZaB(bomA^!=b1WJ0h!@wEVgP-K! z=lPFNaJ~?TgQvZrkEfTf=q)cV)Up2iX~Tz1IN!nlCkXB`#rdP)YbaLT|9#pXeCN>r z^?0^*9v3-21d_*#d6DOz5Q;SnmIqPY5ANvhi1}6Qe|^9qT|2V+4Fr->i3_1We;Ryk z3L_&#e*nttec_Ide!imUFaPsX{+&*oe^4ma&fve2i+>-$zrFT<9(_CVUq1Zb5B}Q= z{^!A((SQEs=RWb@5C8j?|L0-iG4#X#pF98W&-wR7`p@Tl2cPplu9cw<9(Y|42od=2 MDtPB|6R6+)KLr(P0{{R3 diff --git a/python/lifts/results/simulation_crane_1_hostler_2.xlsx b/python/lifts/results/simulation_crane_1_hostler_2.xlsx deleted file mode 100644 index 959fd1717f5537ed9694fe91fce16dd4e431e78c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53903 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 T*e*OgGVoIg?72J=`@8=KWGp+p diff --git a/python/lifts/results/simulation_crane_1_hostler_3.xlsx b/python/lifts/results/simulation_crane_1_hostler_3.xlsx deleted file mode 100644 index c6b614562c13d6526cf853adf828e8d18dede03a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53886 zcmY&fWmuGf(zQSd$pxgP8>AbgyBjHKknTph8>G9W!=2AJvLGQia5A*@u z+1Z&h=bV{WWhGv|0zG^7?9DT=PpWFK`J{BcfbS}RFC^eg-%?N3#?s1`?z5E@t&_Q# zR5&->3wk8Mhd%4Z8opM3-H*fa<&}u8*mRNl0+sw8P3)}^7I>ELgco6rC|3#)X#5o; zRtcjKpP^v{S4(T=Tj0bS=ju5>^{`(iD zY6p|9fI%PC?#6n_qHnU|pBk9;s%OJjYtu&3x59ZVdXkA}3^|Jh|2pt}VIg!xP6_E- z)bc>MsDdsm6BN^(Q7Fp+?}+q*)X%@4Rd3PDLTlORm?pg&5}0jy`=Rws%+Mkf7|y!% zJ}8y5g|?TVo@C;}eY$L8uJ&a>&HTB6R*e-w3<7kw_Ouv>$XxlKwaJP0)%zd{xgh)2 zBL3owhHqKlZtvY~?v@=<&r|JRUqpnJc^7(VJ7zXL`~THR)JP#hf`0Zah3wfgRG>Oe zW^{JO2IdA&ztThMv#0*ac7_e)aZonwWOQy0*Tv#h4Mw#!ahL@s`tC{N`ys1_nK|o6 z`Fb{supsq+d%G7c^)s3474`PbppeMs7Mt_QKCSMSe_-sflg>2V?C<&-x`ibb24ZBs z519F7hb^$Vl3G>jCePa0+qOaqw zMQ!|XSW!;hQu{r49iQU+;Y z%ltKI^}uDtwvHB4BVOe%-6Nx-U%h+XW1)VEooA1sy2OP9+gYNFm!MQ`$w9~2w(YIx#rN&T3V&VzT+{# zLLJrN@vOTz!LokqYLG4Uc76UZGQ-+dbm`r~?n&!DlzUKj%AGk{!%F0C)H)XOX+hZH zQ^!py{mdj2ExDeG%|K7LVp$Bu6nlEh?wv7D+R@(iG_h}4k{S&WdZdKc4?g1B+mOCP z$_|(<{ZAw?{fc7-tidR0{MZ)T3TNVRlj~)5lF~(X=x`{a zda)RJ;#nt{3Qe0-VjW6s%|eXTDDm$aRyVq>r4?#X9I6ptFx1tv7q}SE8|57@(!j$| ze+pDXS&`D*o7hZFDRm)qxQ=&h)j7Vi>J>p;=iJmj)f6c8IGrl}vH&M1F23 z^nxf32O1rNVNG^FIuaW7`9N&1;Nc5z{XCqn3D{hcJ3oo@cP^krSJX+m@ zgTEpd={Ef=ler>E;RL%LdA(1*{XLs=KEDL-HeRHjt51c@EAiS5KN?yu^wTMmb_7Vb zB(I{RYla@)`K#&)e5N7WVt`N*7UM)nF?$%SCEvuyb>7+Wx5nphnQ)?@wCEG7S+dup zVY%k+58jryb%ZbPg)~3^{{r&tO4=i}<=HcE!K-KQo&?0v(&me;v4Me|E#2d9k1CSV zI9o~G9Y%6VW#E!d)2uzC$dF8JZz!zqtM;j8;FlieCk`bcs-SUMMWu^HR%IL#MjWdx zvm8OWfY7StsYI%|<^JUs%lnh=^!q!yhx7IRp@+lf`_pdx`{Rh_>zZ`W`xDQrv$BWd z8_%2L{Db@Bqt*20+mAB$>%c2c=Z8)sc<=rIf4rIA;AtJB)RlMiz#KYc0 zf0|3T3{K?3#SPuVRs2}`!}I3;2OzR%H!rp4Ww$na?df`iw#NgbnVZPN1-|zEc0c~Z z8-=x=hX>Z8=4%7l+oh`^nLm@OHTjDho*ozRbPuPi_z%qo4~HkscdKPHW%tX7+V|`A z&G$!}5BIB{3(dECtbNUFm-Po8_xr%d+Xg;GK>A_w{W)uMH-30UM1=S7;=|XWZO_|V zRPMVp|C_6t=7*zz^zE_R<1t>(hk(V~Ya^T25BHPJ53@4bJU3&!4+p%SiMO}BcX#Oz zS7g`QKn3#Cn;s$#?%A%67Ty1JKV08O-uBSg-x8r->TAbHwKitba z%tm-#T}7NGKV01`KHO+Oa9v%^ZhG7!^4?u;;yOK5#u;tuykL{cQHw z$Zx(aJMc`q-CbqGZ#b^7OwarUH0i27-H_-Yon$xN^ZMvQ`~Eoo!1Hp_^FC4Qc4WM4 zo92353AVXGe7QWhV3XJ5kLSss2exK%K1`s)_nQ%(cc0Hg?#FaWe@Fc0|CJfx@0pKz z-)!iMFIA1WS?I{TIpx-qz5M5^`F;CjIJ`%M?C@ zdXb0=ej7H2)AY(3L=XHL+Y1+pdh1iO@YuNS1Gy6&@AR#mko|v{I;~G_@eegIT{HUd zQ1h6fAL6}!L9$|HiALM8u$uC58{Btt{5Lt6X(;6MFGeslw~I2wNJv;r zv|`+Diu!3LU|d6>dl1Wv&$1Jh5oRN8<|@aaw3y8GUMU+uXsJ{Q;|t!|=13S(co~XZse`PRss!vTw^? zNQ^ijQYg%IwBHAG1`WJe_|x-#Caoh45q~G>kWq z(a$j%#&kMQSL2mo9a*v{QT9e?WH;HI3y_BC2y1ITW&&x&*Eqki-jx$V z8rFeh%5reV$FQ7vpMyl;XI+N;2R=lC`8Xkt>sCZ2l-Zsz6CRP`b&7k7!-aR79i|hf zDbm>^_sckY;~eg1nLX1%{mqx^E~f+&9olEJ@Vnen?gc?;8x}S$$ayh9@+dfP?lxZD zl#7I9v0`ABOh^28ndD3PL3dW|6rWfgMoaE8Qf$^|nh7*-hD;_4x7jlZ$rN)Ves0LR ztVv8wz%jGwjVTAYfMJ$>qnGxLL-087!cKZ~wBh=DO}?oF`5DJhLQ)rv9)Fr68s@0>u|8fS}U+US4qZN z`AyX8mKq8+`QootU~8VlQ?t(;&J(AUt$rJoY4W)Sz}}d63zU7HO!&LM@of<{AM&eP ziHUQc%07GZ2mkUt-h8v7yiMP}P}$Zv4O2_-k;fQ`5&MIlryviMTe4Zl z3;{)Sjl-)qV!(Idj@(IsS~@-TVW*2i>hs!|#L>CWMjx}~gZ~zgw+oQBTVbdSSOFFd zy8@}U-0@69M4E}@qs2^FahJ3A4Ix+BWN$YjggC zCI)`{nTwqEuncKgy61Bd*9>Ii*jTj>DQ`-X(ohTO`E#*M&s4iykdIK~<6<0pNVdT& z4)g+2Ev+}97f}jl07|0rLQGxamKJPbqVmYQJ=+5w({|VME%a)uZ4WEP?Y)Y}+ZPe~ zhPv}sY|c{}RYhtDW&$(QhNi&9#e9nf-4}(@wg>b|_A;D27}XRS0hH89E6=$PN%?0X zka8Y5Re*TEOOF^*Urt!^a6SIS5lUme`;iK37XSCd=VhwxS+EJ=BhtBZrJN17oE;td^WgF1M*!7^3}%(DybF97p+=f3 zitm($8#%>w=pJkS82ntIBMo{}E8|teoBru90Jur^b3w*+CS2MZpKbIQGcP{utoq#x zAdfE#QwH?pDXh-uPy$gKPl6_w=SDDkaSpA<5)gH!$`DANbEc%IyGkVc~5&J^DcG zVEaFHVb2u4n{sChI7mI`t%K`*|E8jDe92a-#Nl3OA#Z6|JznUgDKEaXF2J7*^l zU9>wZK4ZjC`IjuI-<$Hg}5X@ zW|Ny(m~5@5yFE;~>S{YTBH+h+tXdwth2ie@%~NX#WhIVK3}$#b4j@n@ zRS{w>`6hYQ3w%fWk&rG4TlXQ=2Y{jutlt-co!pd;Tm9%BsV(kM6zA4u&C>wvZSV;u z%vm&$H}bklKkf3{ATBp)LI@m{-enTz%#P1mQ-!07_Y4g9Ei~u(9+@3tvib8bx)t6+ z)hDND`I^jtP4ZM=Xyd9CgOnRm0Dg!Ow%|YTGFbyhgfrt?T$ZLR`Na$44F;1(sL(CH z4FkdxJ%-23M1dkYy}w4%w{Sw5u@g}AMP;Hjmd*sn1tAd%ezcJ90ji<|RE3q8@Mc&5 zKg076R~3oFuJ531 z1g$C7$}EgwWS2=I1AgH24ebDFdjV;`|2w3xm5D$8uqCWw+VdF?)XHfxKoN5p9kO)d zU3B_vk|jCD423Xh0*ODvkSWsqN;=<(#u0=6G)84nx{Yawth#d2hbt2J5k}mxp4;)4 zz#Q>D&QVP(?kXy6-I&TjMuZiQ5Cu#8f<(qZ9L9w+*-|jLhX1Ik=Q{v((Xl;)B%_Zo zRxkyG)^MNfH@e#&v2Lx{^CgRoz^^^*#KDkwT!J9Nhp-Rr_!7V(?-Le}Q)Jl=c?6rO zi3iBnHm0KUxwT|K@K*c-Ey(PbwP`&t2GKpa+j&V^Pzi6=!!c=k{>YK?vY@))WAgcC zi86PVSqQFsOSqY=S<4F63F9pe_pEL**#JfLR_aoXCuQRqU4D5Z zrw!Y1*hmiR>_)L>JuFbikGCib)B^;mhm;2I`Svhb#7zpHpmhBi|)<$hcr~!}2s8E*Z;3Q|9{zSGBZtpp+Y;vX|vE}+d1OjA>U`jsOy^4M9 zbeqBhzzE1jInt zC9HL&uM%5n)nwp0)c7$=1*_aZ_Vr&8&;6v#Y4rh=q$Z7d8R{G)-p-^?u2Dz_riVUNb3(g3n^w*v z_-ea`O=;d5E%18+Wgq?KhS#NjB_eW8`;hJ>iCk~OM{tvGlrUb zMI$R7*SR4@hW|^R>hbqqBy^UGc}tP5U+9niz&(!SJixHeP}5OL*9~*t+VCX4dW7C{ zo)LsLPkVuS#yB7_)*28v9|(N<7&ZxwD8GuNdqvB8fKc?}JJ&FzrgM-NQZkiqqVZQWN zWGNQJ=S)Eon~YXAUOdepr?ANS-ff|z{laafuV4HR#avZWURv=df`E$1Wb=E(YG$PV zTK1nb{2tGrHt0g09zeJK){o0wngGIpooB1TxA*(9tFnspNK5j%-+LJB2y6#*V0lI{ z_(AOUr1|kdV{~J;9YWqg5(rqv@xYHD90Ej^UQFw!ce5uV7fae!q`svNIzBv)UMRr0 z@AY1;4qoQx+o!Lw`u=Q1c@thEC4yOmPW)WDwH3GG2V2{t!h=1BCCgCeDBZo7@}avg z#1a41Iio~|iW>+_p+>b$5}lvv!iLd1hD~^-6V=3biv5xFqZp0t^r_>{Gh21*F@juq z1}W~6KxJt7Ii45htrRQL7j+c-HBGD%nvubMVEL(U7^n8Vs}+`7VQVi5hyZ##ivKNAWmXwX~P&s{)-pnu$i z;)rlr2Ua+)K5))Pnkq)0R>}y{Qm}nQ33$P$7UlX;dTzFQM7V^B%^ky-t7!O*> z7`_8zF#%>&kN52@PDjYrqv5q7H(fOp36b2;)<`z25am&0ZiM{+%acW@8<@4f@T5E0 zM71r*Zcw>NU$l^i$0R<=7&S6kKj&^F$ao4JN-G&3`m1Utd5G({mf?eYD){qm9E+A_ z8um~N6BMap*5=OeBh(+M7R1PrRA5{tcggVZuQ1khkWBiw>+1G@69Y#-?lyMJ>T9K_JoQ<2aQ<#wkRmr>{4cC9UG(Z}M+oSvK0^ z@Lb0F@Ydq<(uQD7HuGW5B)W|b`X`I^wcQu}IQk;97(ktPSFOn~$r}8=>hLTZU?sApL<+HwZvBQ8y zDXmD*XehK?mi{4V_X|vkhzIA@8;Hnvu)ka_t1Yp!3Nf1cEMr# zHP^&_4M`9^$^xdT7H{5tctB>{!|lz?c_@wRsa+@??@DGgjgE|<2(P{!(Sp?qI9ZjrIx}t)Iz}K!sm{zIr11=35YG(jQNfCnt_PU;p!hC{azu| zFd4_oeWIB$JByw=Q4?PeJ|Jl(s4xoYC`I^?ue1r?VIE-_&i1H#Q{ttVWFEBW#&q`Z~a#-)wci-dSQ(uQKr{*`#pLpOE-WXGBtE<=5DdS&k9X z24rs(w^?lZ+#KCXr=O^Z5NwLGuMdU_(>QJ%XgQ6m|7NrLmSvwb9pm#)4uA?;MKer9 zCU_TM_dg#)R?(3tMB*Nn8Pn{oSVVDYNoSbdb?ThsV}kf&{}wIk7xf%1DN0@yu;L0@Y6|ShjjZ&|j-sy`w6SqMA90&~#I7YJTm6P;xQ{2wgj7 z-FbpMIVWXSjBtaC%gPR`J1tl)(cm5xPk_+7NDy@)mwn7lPMYI9ABDl?X`x< z@f8LshlvaD4CB8lGSpF5yy)_vGSlfo=V=vd3TOANywDLhlK; zlFvmC8=uKf^{a`kXD#Ob2Z;GfdSG#$YINh)d?le@%BU4HnE^&LQ4d+bQBGye63Rp8 zNl=vlLA5%`9N87-F`~74s)|-Z+XA<#+WVFwA%&^_N07(CH32AW)1rojpint=40c<# zK=*=1Ixz&P=%wEon{tSz@Ghg(exr;2t+je0$l>WwPC z#WC62q}2>9tOm2>kzOE2+_~WdB34ImsXmwivOnK!y`hXaUwiN8P)341`54`F9oE%d z;By(eA3(Z;ltZdY{Cv|wOcrY}-zF)?cLEJR=dS)_jhM>UvBSyROJXx%f!GWwh|O@1 z>c#C8_ui^9{5zcyJ946lTD{)06XM27+9>y0a3fXUQTO01G zlr%GCXepwV+K#NJyOeg)NxtgyDs!DkM*;KQ=F{E=`YN>)9`e< zzpsWU{@TAss{8uYysMSdx@RWI%#CfXOKDriT*x zsC&m~@~4f-0*V4)#5~+D;k64Wf?;a^EOqxXZlC3Zy2NnO^+bHN))1EI`izUaz^5{F zbBIh+m2$a8biGgf7CY#Osq$QynM#DuD7-Rd0<;_QM~M6nX*|Z~TIbF~%1pG9(I^8P zl3dB3kM6}yXIdc6K*q96-KMO`?#$)4%oUk?f#ufDL{obKFw&xOIY#s&yaX!p@L+-fJjA%JA3xf6Le{)`<{`&hx61AK{CDl6m zj)Y2?(H+=Ev#}|&NF}5cf)+HDRFeahIcpe(69gxf=cQZqAOC3EWvSkq!_tDlBh?a$ zDa??QB@J-Ph1tht_K`dC(Vl*C7mW;>xbbY>-3BO&jg`-;<4YF?uPK@x9ZZ1K2Oz0S znoQL0ght10eZbmQT7mukOr=d}{7R(lS@r~cXh;G0Gl<;-vX*|BkA__SvhdG636$~R zc^(OOA)z!p&kSs);5Je3;8)k^d**;Hi;eMn7Q4;m$D2Qo8`5;5Bxx)MJWUXE^ozN+ zDDb2ybp!ssIrN}0WsFsMzlj0L@7(P|h%Z8Az`G+#`W|8aIG|m=_8KuK2vEMsD*Q#~ zqZ6}g0_&{ow0mzg8`bRW0pC)jpNKYYCDck!yQu+HJp$cGHsjIR*8D5^RkoExKaZ$t-F*`v-nmg>!IBq(MLDTnklF0vW=}F*j;k!4gs%&~k%oW!_dpI_vN(7c+zhRIE8Xzd zLG%0+ID3u}W%Au&)|AeqG1WlPqwIEcA@X;!kUBuOKY~Ms8oTid=_-O#`u>1Yq6j3g zU6D(MTEGe+ohl;$t(>+=qAEP1Q2p5#k$|i=lDelyAtEBi)54W{B8k=-QA);V(UY@k z!s`KB@#p>xJgPb7N3Vn9;;B8`iFBZJ~Wzs2yA@jM)XPGv-=v}Q_#w%36o#~qQ z;xv-21-UGB!H&Rg`ey8VeO`hVNy6_Y5MiHfFoW`=P+Mjdw(P&> z5?5-`H$}*5BPq(H&hx$tv*cy@v5|?tBjz){RWE2CyYTjZzXjcmE=EoQyJJ=yM@y`7 z8xzAbN~jjvplf>-Xxgop-*BZYr^!6-9)RZ;9Dc`gTm&nR4;JO#^FuDuCuogJ0_It} z#g9$60p7sjRPw0g^$ZeafY%*K*~O30nYxCBr*{ChQ!QXSEvlXR^f~26U%yxz8HVmz z6df5LOJl|UdF*bL48W6@G4KmhfN3n!HuRFFf<>#G9`~3=*FnnT>|yEh)04MeQA%{q zjp=cUrOR5^Po*h-ERFlt>HU&T2`alXyyPO1JMYx{0P3C8`MjlIGp9*GW<3ZpQz2*i zu}UA;h&Ucj56|gGv+J%nWil%pOeSI_RzRMqg2`BzTQXb)^}Xs*m*|cooTz=Oc{~ zu&(EIb&4jRW`+YaGJ$R2z=)>G)~~TSv;67u&^9QUAMq800c&Wxm6gT&(uX3<`%E!N ztzqNJ99H^NY!o__D*y3>r>Qtb1&kK1rjT`JIvLqtvP8{R5=stCh=>%3D!G=>1H#8y z=F#504Fe7jQtF9J4u%}=vX@e2ZYT6kO@bPj@1kr36-HvcB^Q&uvk(08+|%409?vGg z!Tt{%yd*f77U}@@E>8pgk<(o9NzQRh^mZ%UNnDC$K_Jx06YXfRmuxk+W@6gz_j&1fngGqs zJ;v#T#6I}DUw0WR@t>CF1!}7a?rN0o-x+)EhquY5D5HMZk*eB_-omxCarvAVL?H&b zZ6K!Izku?4XZk24Jf^$g5uTLq;4ozbi)%<*N&dFg@o~u`Q!>ga92^@(B9AU^fL)LC zLcabf9%U&ML^oJK!IB+qzxm}4#M3+;+FHX{5YU=aSFaeKE@2mPIwIWfRJdti3pR=a z;T9S}4!2hwRJ0Ym_{o9HGq>nJP6_hHSGrKeb(fZ^1=sc&Ev%W|tjgi1pZjF-9GVA* zm$Iw-{zSqw3#UU}y)sBytWV6qW?zqH&&NP)rohC9TvAPTI+!l% zpsd`RqBD&hePet&OU)RxKj+kD|1&$tF&`I%xWb;)M4c`Xk^5doy3)+M)YvU($5z9s zhP_EL6l3C&a%2IQSy)arn04EEN@LpW(EW7Xn2?W0r{tU+O=vhPalfPTLwP9G;n1e= zH#H_F_cwk9UKQ{+C3wR)Qoh?N;dx~&ie}lISuUj?$$=NktLsI?^2;p0ZsKOPF*xI8wn^ zN~uBB3`EbdK2Ti!^9om@-C5I7;=#M$5HRIU%LxfR4KH8@2OiD!mJz{7$wlQ>~iXeAB{u3L|Yp({MH_s(Ny zd#&h-vK258HvqjTqTN!dVY)@ashA^+Lb(;=TJfvi%Ygs#;^5800`YB;z%R9~(9MWo ziPB6kQV83#P2Ox;$Xqs;32U|%=*#+7BBI3_xjGxV(A{Q5=^V+!l1c^q(0`{^!D5b%n9}xVpkg%fp z+y}FAwn6Tv$02fdUz%obwMe^)Ox@zPmLhO+oj@PaaenmPlLA;ri5T2^ZeL*a6_c6o zce=hOZ_jJ$2msoxq9^8v+_eb|JYGKZjVwtCzAnygecMdQB+`wAwO6nv zXsB?PyLVkV@WYvyBcl-|sY#ZN_&lCeg$3IU-#tkC)6g*4R``Ckcviv%*~B7ZAulgn z6IVL6n4$dL1OX`8dIH~^!d<}iR|{3420IqmL}Z3%!2LMIE!cu*W2IBY^^s##AROam zhya=oZw&dl$nq4OFKXi>l^e}qw-xO~yQ)L<-QD{eTfVDf2oZ>#s{p9!ikYiWD5l90 zuC6_79YJEDFf945)5U6E!(N*O^A1GG$B?{37sd*SPB1zba(hc1y@vNU`tx4dj$rg( ztML2K*}I?V*p^0=jAyy4kMa zJM5Zqs5TeUWOJzU7M!mYT$Cl;0+LE68DQm+sg7qE(0+#~&DF=z7Lia7mr%A_EV-`c0Jmx5pu(ipIT{w*q!<2jFPgwsdlidDvZn#Yq zyVKd_XgZT8ukn3D@#YgKHz1%4jZf%BkfOHb8>6!>U&|d1$CCbD_P#RFQo&B--MGmr zt*Bwlt>4}f^X#8jbH<)uUzyG5i^H_%T_yv%2WMSe<;$|gUA5nk7vmSRf)Cx9o(|SX z8#2d%Bkk12)g7caOkq>DMuQIn3*xIH@aURr>t@kWpWHCiu>TxI@v|kDrjMBo0f(VC z+CIKP-wID$+SoPu!+TRL{mbdBxQ`#C2Qn`ckx7W@pKY7KqPGhP?PzNjz>ZM z?UaSkP|>O;`@5X&EiHe2@}}~IjjerarX4|rSIIza@S;uKQZronvd@Jp^2w`A|Dp!e zE6(g3;iIzk4y#w%#q-^%$AaM|fOq0Vu>%0_qFoXriWsuUxtSaFqAdvgtogWd5xAYs z-otc;TT8NBL5A4KQHc;t{(ywH)<*A+7aDK%_@~)AY6OL+fwVSiocM@jt-SEwyo;+q zWx}W#VIYm|cfw3Y*Uk0}5kGaCv|l$)8T1wR=vWg%pEM8Oha$=ZRMyI1pSy5P?!9N@wYxc&0enZBSS^r&Vu)D*5Lqrs zzPUBML-F3;Yg1E;gafJGIB4LMLA=*9xNA~^3T?=>2_oA^@00-9)*M-wn*jq{#7kXn?vY8Km zkwTJX#nKtTmfX+AJtFGx6k5>#i5o{AxpA_6BtPR-?8CRD=2w&ZaJ2nDlk|6a1;)e=kC$5@S~;pa8ED>K=;^QJ!9nN=LmZ_RIuYQIMkmE*wzzL7xOtnsxj8y+w5ZN>@LZv6D($h`k96xm9H!rN;Mq}m& zw~e!4&wNCHCb7%7vz3rx7X$a!-|R=RWRnCy@BKa@WUpbziqmz6$x6!l4+{%_p7q5# z_})MWaL=6-V1P;R=(^<)tBk-rf}s{U%3ZLV1~v=pO>!HwXR4y%(QB6$B>yTu0cxw*DV#Qygs$hQt{;x zVLps_{2aWz1`u6ULzkik#J!CTrO%BT3?f^IUGE#dtQ2oOPv-aRK44tjFxIw;O^rs< zmkOsFWmEed3fQIIQ^O^l?p|?&zp~B8-4N(M)|Bb$g%y*k_`vr4{?_meLco>!go#pT z_+gG0%hosFt3$t4te6F5@?k6TWXaARalWl#XN&rCdVH))2AHuBCTW6ZLx5*&g^L_v z-*R}e|C3gNaNI)PYH8&4Vy5U+!3Q=#pDx!RG^WN9^^5d6qAN(Bz#pZ&ik$G%ecy#VsTHzWYmfhntAwi}oj5Hc#Kgl3Q$@sT2rnJ|>oTpp#6)yITTtWBN zNOxE4GZ4^M>gpy+o#Ka~_77(ajP3ejz2y%#*eVMF9VdKo;L^Tl5y77i(p`6~`L7ql z3QG{MCJAZ}4j71mSUnY4e##71YNqTghqm0Xi6DJI`bZKUn>qnBb%Pg+ESdyEz!Gzl z@t6Tdz=wsKEVeoCy?RfDf?X-OA>QS&%YRoUFdI9eUbc!jn6B!d1@`xO?Ry8x6lA94 zG`Y7PzIB##hFF5)L{-DFTancchLw0n`rMhqUsQU=*QP#SjFDyd!hdxpWXbuqWrr8* z0G}_u>ra2JKBkC>25lHPKl@T4B|7=BKpvqi6b^zc}pHHvb(OmRJ} zdQ{!UG4JH8<_j)XM#WBKfTCQm$8XwVcSC0{t|f4Er08W^uc(@!g-LJJ^QBAxsux;+m8JcAegg4Nz$@jNkPEaq*Q%;OGICO##P{2@-MH-SWGT>W#<1ANNvk=6Fs@ece7*9>jb`^hS!8e!573Ec~T}NfO4|cQ8VS@M7Q)wWgre% z^LaO{P0`9owVF1yOt2>w$P*6}qNv1-6pvPkkPNf1D=$TMoj>QAm>^{{aHASZJyC<2 zY>PiezX${y6k<&ZEKMnf722V2o!VKpg-vdz?#F#by2X9kA^ISVsRMz5<*oWMfVH zjjV1xJf((CA;Hf+l$#kPmOG&o2!Os*Bgm!1+kmB4`(6IU3dZUROOW8E|4sxlRH(iz zVA3E&38gSS(n6003N1EW^L(nl(DIXqKZbaCU~MJ$_IHnXroN>wwzEq=Ts+(;n$tMY z3f9YyuQ{1Gvp8{$>dIDu?0v$R?m0YUS{FNyd=J>{$YSK~;BHQoi3~ut^8wlB8-Nst z{!zBAiW$NI`(tG+oMLcqkHWwygz}bkD`i)b0ZLCSTSvu#gz2hLbX9a;86Zg}dV1D? zQmEtI(X}T}K<*Wmr`%LWbR()sE932n^~y8N9x|>#T`nPY`4Xy+)QI&02i$=|j7rJr zEXRRBhuhrfo}3-@5>x#9oYu@Mz;6gc{06I;h4Fx(IeaTa^3tOOb}(pM?c{C>mWhs) zUgpItr9-!-JIdBW_}viY7TBA<*$-CwckP47?T`&M*|8e7Pw5m)XnRY273^R@P-iVa zCiWrAHcq@lde{2Bd`3N-h_agbv1;$%HXW_~w0SdN#3S2%xB|VPgSp@OSETrUx$Ldo|UyzFe zrsiu}KZu7+j_rU&1Oqgj5h1+xIRRo*AD33&QRmvDgqO_`C;zM-EbY%g+fx5?Y}55P zH~G7hjO!EB@JA{moq$+9H67|AP!Gm9BWxy~hJ8L89iIb|?ayR&`5`E2W z9=E^vY<_z81*mByaBvaThS>QKuv!jj(?PCdiTaTG7-*aykdJKZb}LJPPKWq;hTg{Y zg1M$=5`fK0ZlW>gS1ysX;C68_t{&Ct@1A12xIfD*EK~AzE zvUy&_pS+7R+K*m)`_ak^^KrSc&1_`MSmv)wZQVN)rsoH*B@$Aa0*s7jd#+`d^=MhG z%O&X{JK%_;_-8&-xBs?4)jy5<4acyR*t~9<-2>Ow{jF{DBRoeTYyCI0E(Sr$Ek#uE zq~ZjAUOEybjXOl8G+L>Vur>l%q081~fH48m5zNEXCfnNOsv8SI)vUn(w|Vztnb#!! zVJ3BN<$`%|M!NrjbbrFx=E(x{09h|7i7*+cUR1zO>U6R@qrY&;7NzRU?oI(Q7#hb; z<$Vyui%o`@Z4j_19MTP=VMxXxRvmHA{PXhU`)X01g6Xaq=6MeBT8Yh?HAjct42vPqk(gd=d9yj z_F%@+hwr4G)<5sjG~gdN$D7dhZ@vk!-p#q$kqeSng!iW$S@QdYz>wwm*T zRJ+zs1nIvVda-2dF4PZn&sC`nN_A!!gI; z?-}ov$`+>xJ}?003GW;TFI=IE0@Qv3gdOIi3!d%!p7duB*Wf|8f&qEx&&X*A8!0)9 z5Po3+MkmvM9S(=W6z29HA;R*dgn!WIMi&a!a|GS7(#+>S#TN>^U&kG3P7wS%y3`k; zYrNWP1L;&E_!SNrLG2S-g*_LESt0#mOvw$ib6TW%{bP0;HCM_(gW#rsK%ectxcGn9 zGKAo>NVz}$)mwb)Q)0(-K5N>(YuXD@w;^H>wr4|s*KKV34QFQ!L?*F}mYK4e@`HWN zFbK2@lVI2_KJuxb!E)q3#3RrY2OYswj7&FbtVZ@=oGXJ6`9qfq-^7NpE z+*P7~9pOjy0vQt0gyJEHSh8KOFeTt29uG6 z1nWCUC*Y@T55&mwO;!|(iWvV0C&;V=_24PoK$U7GSZsckJ#>LGJi%0 zSH>)914{Mf8Q}hidL_M^IehsUN_}r)Wm$`2w=PRUiv;ue<)}JQ5yXsv1(r#@s%p;3 zx}<&pSYe0m4KzyQUueo={94Z8S0-oqYl?TS#-L;J#%H!WmBk!JZ~8MXPFQzqoe}Kj9^xkN5#^K8lv9%SFyF3y1P3R zBov83>5>jE+3?>dJrU&Sw2 z=e0?{crZlWkHqp%A4M(Q1%#lJz?#K6pkE+<`KFc0zlPb7bF5y0gT!R9k z?L$2`#S;)**X|L5q7R?ySU?nWUcGC9@@HgupUNi(DU-Xu~ z$Jpg|{@+7}tLx^Ckh7nYk#-Lz@DVxx;8YPrD=cR6le{qOwU5$jLmk zlqc@w1w`NIKG`+gYR0nnjLL%fg@rwh7HfmNk(r-eq*9SJnY*V(BFD}-;v63c2@2~L}n^YAP$Wt$Y(&gZ9d5*ve=2JPxPumL_o zOIjnA$Jaxc@PYoNJ|G=z1JXfv2l9k^0Hy{=2kV6om1Ts?%fH4#e2qX_`c<_JPm^>2 zCB$`vYp~$DeUwZCCdo0AEyy5Y@M{+zTRo&Iu?l-&%Mt)upn8eJ7keEu;=_n^T6rSi zJXCUyyBvzT6ct%cQnPGMcAhTDK66J`nvvTQkPTdB3g=Qmyml2Gk2LqXd3vo@cwnJx z;xyXM9(86j`pB4%WOXpNT`Y+RHrp#&wU|iSF~^+F8%0NygTc&5#I7IqIa@v;VDdTZ zJWYXiW*PgI{;@4vykMM0zgLZhF=7>LfRKhYXCDj$xcD(^9ko#Q%IYl_S!gI&bU_uQ zmn<7@+q%BsFUiO{HV4pe;8H(^Bq}PS4e?dm$>df%weE2b)+USm1L4KlX~h znj4zk3O04J7F(<&ktL@yY+eAlw})M1!7gUSGXFh0nq{oFz3TGZqbvM}pUxn>#`NlC zq*5quMzgSj(2Vk`wx?DJKwlNeYk@k0Wkon=T95}35ilD2d4uIK`+TJ@`_%KAND>>9 zR({^?&-=)U$W##$b;^2`t0B+7PUe#~-W`SaE|iXBvSJ18GnCn$CaJ?gdF$jYoDt7m zd=q+Kd6SXKX2`#uVS7@cWCYWfKvfV>Vm3{Aw$hY0*;hFVzMD2K?=)bI`?;88MYR;p3JM z2y!?QTr|7W&Um5vD zaTKmhL4Vta;lg8N^)q>#_2t0DyYei%^nf6gs*iClUL*p8xtrd< zDliLFf#!v4l!}~f8IldU3@LFPNdHK9st(Ov-_b5+IvFW!nx!<={+3Q+1^t?dfWd2s zQE`s8MyUr+Y&W&wwJIT^?9m2Gf2yZbT9>r-^X_C`DKCN?F!GlpRS9wivUbCUHSM-H zf2H17%1VshFE1&x<+S?8))Fp1-dE&bh3I>Z$nj8L26&ieDS7**3KPdy!X+XTJar}w;hkxMi}Z&{!+oiuX%@MvI7_<{`?O7ZhOvc1n;vL;j?b@ zYj~(5$KI@aR^e*3!7$I=Q2fQ9h4byA1{|gIH6~yp0PCYypil?h zr$min8MKBp+}mj0mkqkckN#w&6zY*BpQSJwQayAzZ^g;?oTpfmWeLl}<(y*J|NQW; z{xs%Yx4uP0>zjtO1qd78Q9D(db4j3^ZT6psBplptabId{9)|b-g(>`5MhaQ2kPm<< zbHq#ExD+EvC^q0mhzk`qL~Zwh+@JNC!0Z33a=ZsLKu1OdJ_TK0Y!7{5`s*AI&Rog! z0oR4vdzS`IvdfCVTSQN^?ZUWIQon(pa@$vQfRU_z`~zPz$j`yRu;WioJoHZ8bWZ3GKZkB4K*f-5~trgo%reP*w49;2UE#a{H1fbk=13<`KiqDdMC2f+%C_b z+EYt9hw5;pmWsVEKE@*dHza~y8380`K8~T%shtD74{%-#HYuMGK#a2>ze;|gUe>vA z16hU~cI&)(SCEKS(fzv7LI&vCe%hB_y`BH>_g6hiEuM%&y=;8@>}mjJ?j^TvrKCK{ zZ{y$!wx40!BGM25M3w7;@P#k7WHnM!ApmR$dQ)|S;Xl`H{asqt&g zMi)tn4SMUMJ(}LrCn=dd-O?35B`e-wWhKPGEm>ed`PkU6Z%uSrynn^VUCI}`t9;Ps z-eAW3SM6pfLTgk~O+pwi{)=a_eCPUb`tM!C>(vF3D3#T{vD6iR(4Yrt zI8*mtP>0V!WmQQjffh677Le&sr~Y30G{lOyv9_h^*KMT)8%b0UH^qLFd)cLRb1*5Z zNZ^FjQx>1tP;w}H784VlF0Z(-bsr`Y^uS-Qo_QPzDzQY-vodC}S_w{?Ka}z&96_jX zCFyx26}dgDb+?@FGoRDFMn&g^f}-b`r@EK>>->XFTY$O4Vj6Pvlyf{hy)K$!kLEby z0@t2T;dMArD--ZFv2ZF-B1L;#!8KY7;808}gr1enT8Iz~w&axAn7!qiwj6KgqQ((Q zM7T%el|~tZZw^^fb1+Q#Se~4OZAp<|3J$7QND0kLL2%^A6_rGoW%!^uLfutm_c(Bt zhC3k+`lbt~d3%B%Np0JdkYZfiR$`E#yYIZutpVe*fM|`^xW)E$RijaX#6{$b=L-*~ zF7ifWDC;4>*8y<)n$~{eavunp!@Jev)meXWou)=wOB~jo2r7*yO5=CnNdx1M; z+yG-{!LR7C&kb7r)4GtUZcTC`n0!cmCcf(0Rz{L1-wwgX#i|HCrI0l8x!WN zsWVwP33>lmq@^t_*<-}wjP+%R#rvBmciG%d<`>Pvv-jBt<^FrN}2xOB)TG`gtlpr?g`)uu}5mc zMknv5Vn0Q3vE^U~bFieQ1X-CJ12(C;p@Q>mggwH=6GCQW@m>F|NkAmCDt-8!@NoL6 zfT)pN|KN0amWpd`Q_=f4_5?)Ac&5Imyf__j+eY#ecq*pwhaq2l%(ln|w<4|FpIx5{ z=k=)oM^3GSG28gWo8aRzBe{Tayq*sT7athT5$$e-aC;|zr!;SJUefR;OY7{AJ_Qky zd&B!!zW|mQqzwxaA}3y|G6|*p@C}u}$-}~k;z_U7KLiBktm}{r>Ef%2C=H{pqMEL1 zd)H@B5c%wr*M!(6{klzT$;0-Q>^Fe*txHM>FBQSeupfC5icO@^9t_ys$V-aC5W>(d zSc+i()|+W9#%;9zrd=SF7&8=3rw|SR4Ce;pgU)r(G9%~q#bALGC%p1WM22oc4pc3I zO`DeGbvpB0fJGZ{G?68j8Y3g5nWLUsE;rT@{Qmf}r5A6pi7f>Z|0M0~%}Mjo{r&se zGQbf*`qmf^O&%!qTJvy$jGS_UJ2O>%;Dmasmwb+{PU@g`1pk%WZ2F6)Y8b<&S^aj(>S6R?s07i2xmamc`lfK7V~Jd7>ht zp_`R4)TehP$O9w421IFAW9o~M5&@HLfUlMVKV0#HpqHGKj^|SE?ds-PTmo(+auRVh zD}T`gkWQdO$IbtTmYB!)`SH?3@kBi|q!bFNlr&|-TY-rpb8i;H zsl)oQk=Z0?G4@u>MokSRht#hU?YEb2uU^}LhiYghXO}A(UpOvgNpG6-|Nt@bATRukNZG>UO2SAyVC9+&`bQ_vaaFLT0A}Q*m@< zT*BzoZII*l5VjA3u)^m}$AR!v+>x)7Ia;6OM*Q%^jB6z?gP(4FX*r?wD=x^CDboV` zfPQ_xN1|mGZ~?K3ilp?*BO6i`K;k!Y_j{P#?D0!iZonyB>S7gYqlAt?a|Ndu@-n@; zhOS#F(pnH*xk$~#_rg}hQpejWwm0E9Q(lO+pu%aqX&To$AU~4Yiie~*)Agyk6&s{j zOI95xS_#5`q62O^LWPP*4_ffY7Ww*25A|KGf({z_0RIGp%f)hf8p8310b>Fii+k#; z>r;PVNdGRHLTUPkVk?jS!IFEFNDEy;AnLan`WaN5)L~fJkFCP8m%d0-<8XWQAubb< zo2*Y^U{=Y+)UCaa$se}c7P3UI5K-(2kooJqbpAl1vSGwvlqZ^$(Qx9SPDT3qxhvR{ z$d)E5(=(Q3>moUa4oPKx(!UsK^R+t*|y1BLqDdo zq^&*7$vm15NQG&eIdvLANd4yu8y`lg|9QR<=FKi3lD%c=|8Y@JX+1kfjtLA*gaBH* zELx1ft2%$TzM8Jg0>;DZX*A3ZyShSD)6{tsurLajUp)t8h>~sKpctl~9c3}`h!YXrHJ@OrcSPy=Lj3kiUrNliDrpKS!gt(jwfu*i53E_1dn z5em3e6jPai)w`tl%_LFLi=uaWm_q}?N@_`Rd}nn8wHYteJ4NKvBs3V_SPCwhKiord zDC}RPeu^0abT86x{LPHpc$jKO4u7ktlERaAY3|NRVa-Xk75;so*fGqTwTn2H37$<5 z$rSy-ZxfMBh@NgipqLU)i!WKl3rmrd9SI00O_wFGM_AB0XdXqj2TMQag{bzDKpDB-?H>e;U!8vutiv# zQWcVbaXqgM84#4)tXNOA-4s=?bXeE1L!!^Dt(KNRIpUf+-Qa-RkQ{(NGm8488}S{t zHv95+EJ~hiIiXfKO2A%_x<{my89)jC#|r*;7Q05Hk%>4QzM4PF+$zV_p|t1arXnp= zryp&P7faZB%^C41Dv%X#PGuhk|sygK&RqF$!x=OnAkSkf>1A|y? z<+|#A(ODlbOUHIY+-skD6k>7SnzLm=t5a6*jAB)iP^Vm-ak{iOGvGHb_`&wFws$kC z(ttMTK*^|wU+p)p zDU$w{%;W3kR+9>`y)`x3_-PB#P4!?5rKLLs!p@$y2R@6v1Vg~Ve^HC{q*FwS^N<5wX4*7LEg0bv+@$t;tH< zTN?S768v86i$H{8fPvZ0il9SZ zM7e&;HyRg?e@tT;mcq-F+N<)so|_?E9+lCSO8=k>>`@N}^VK8P-xt`T4+I?y@&m$6 zOc}rZua&E@l5@3X4FLLq6&!=CW21MifSx{yOsXYJ@}iX)c&V63BgjL%{K^?4Q(;pYFam4*| za{J4Jt=Ll5;{O`8r$!I}qk2lqf2@{3(C^S_)FI-sZsds}s;G+f4zE?`G3$hD=6S3) z3nYx;39z&W4(aCE&}(E;ou)bW^TjH5DGp%#RWov$yERG}ji6}UHK9;tj^k7VjCMd1 z85L~?l;J0->cINl*;YfImt{?ycL~_gb1_|40e3(2&*LyW_A$SbjdUOBRX>6>q~rE4 z&;tk2XIR`AUrUag85i|s-qiYG2EKz+%H3s_V?Hm@e!#(VnG}CHE>;)7*N>dki@zYl zW8}}ArL9(fr@plg5m>}I*j6}_QqUVBb$MM-n1-01og({4gZ@%_{({6 z$<3xF%l`)cU^kv7Xj~V00eVOye=E{T1EBAqtz_P_^#hV& ziX#m8y%>6#AH;q+pA8<}R$|qf@E^y+ z5^}z=l9dSuW%kpoTPE&+Vqn<3{m2@Ax&ror@q~dsy$?tuE#OJBl}Px{z}71f13D^Q|Z4_o zhyi`?_?k06!)m5(mRqbE(dEVWFif414M9w$Oa^CdTDgF%U7nbaY0l2t+%TmJ#r^Nj zl3dExcntXMJ^(scvv-CY@ z9@3LyQg@xH8ZF37&9E6>k7ckl;Z$j(0?@@@o#w{zx5~IxoD2do%MSJriuX+cCm+Ix zh_E@1Uxj^eE2r_Q%YJd~<@1ZAxsT!LTrjoK2z)H#P~~_ucq=b-EAOYyWxdKV@@$9> zI3U5n2kbNYW+La6OUXoI5fn;4*EWpby(T`NKn_L2&-l1qESXxC{Ig%7r;60wzA3|c zCzAgllLN1%;g^+U`IQ$SPICHQ2PAS9Lgelut~zcFx>{PlcpNL)^($Le{YXyy@s6O9 z&AE#nkMB0ZTdKTFhn$V(3wXK2l4uf~-xLB2&O=t8St7p$gUVkSS``7*`T^7v*G5Dn z(d?I3{d8JgFh{F^vy?8bwx9iBA#&{x_g2o2k_}b8;i8b_{%r+gJZA^59Oum2+6e}X;Y?unk?;BIv-1ohS?&F5jZOX0Rlbrhc3B+Uc&`dbZhz^%hd!k3vc zP^>$!Mm21}uS+fulTsjkjFX7Fs%ty`H*`N9F{g+jLu)T$%_p$AeSt`(PZ(UKx!8n3 z)2LVMJNEYw82{S^A{hembqc`MA5{DPxhxhw8^&Ofof%P0I+L#{!W_@KLER;X7@S#I zh`j>j^4M-g;~XdN-tp0!A&8$0f9)FNDYb30ok7l5O^X2PZhwD&58%jkhZs+Q8UP|< z7v2TSAH^ND8IBqhpm9}B3x&UmlikTH^x8B|dG|7RC{J>F`o#)Hm_(A?@iQL&o*7G$SSn z8KACx`1*X*x&gF?$jvoo>6h$2zWHkhS2snkceDflu64a=gsxXJ4X>1M0QG#j)gxsJ ziw}-P#j1apwbv(Wc?VD*`Cob5c*ic0g%_V%f=i4IF2?<`$J_?efa%f<^Owms(S-M> zg}gSb8!9Z-Dju3Si5og?)(EEV*^ z11`2lMd1^9nU~ZZ6m!zEc$to|l-~rw(dQI!_1@Z@*LIM+kVsCtH0iDPdSF5(2t5IG zy4x{=4Z3dlN6_j0pZ1xBIC$Cyn(^x~!SJrhuRlM<1oIEibi2n%;uo}k9)Z>P7Daih zVh9vX^b)Kx{vjQOFeld)^nVG+vnJ8`^SY1%%YFY_$%=*M(g#>TBUwk?&x8mf6Pb)h zkLA*gr$MIL@@U5x=%dWBLgxbm39HPW*3Q0-oiv3!3mK))x<1CfGETIa@2*Gr#m5Y; zqj;}sV2`E^43n{=ZDe^lGNmt0y{r>b0{VVzl%>t!kNPM*y`=ZF=JmJg?W8=vcu`D? zY4hfd4Zj;+?q^f#WGzaT`iAK}uq;TtUicGoYr!@VQjr81T~YKABZi$n$^#^5OVhC&kZj_Nj^3Mp8%D>j(ME;(0*W~Jza$}fG zpf#B<(a-&4&C+yHdcUXN?s>+-L#@kWqdHX~XiHoRiDJfhtWcwfJ;5`&rg)geV9I=H zgzk(PHdjVSY6wg=pUb8+0JmMYzAD;e3SEqoN8SS!%uSkHyW{kepB@ z3uWciQiV)2f~`p=>+-3i9h)NYXWbNAjZliQpyg-{d}4xE^)Sxx;ebUjpX%jth~27c ztG}1f>2nHTQv_q1kO~Fd0*Vj_gOkkUOhIOITUeW|AuoV*Bg@<~nK)e3xk~ zw`lAsJ->q_;iZPn5HGtwTQgMILwtL2#La^rO_f+wPYGh>;dEh>V-%YOY-%M6%|EK0 z!&_y}Rh>J>=nyg^4Uz_rzdIduAQZk4@@CWd5%j)i_+g8MGvVcj{dxP}!LC6g zII@7Zw~$@(5O|L0@&_F#7RoRtWD<&R@7?6=imtjYddTkjVMsIXUlspg#-X|Jeev2S zRK_PuvZ=mi4`z|iaak}KkL9drog3wC(ec%aqOrqJ?4}@(oTM)-_!x8M5Da{ypRFOf zR@uT;p*NKV&?OqULsNBhdr#xX-A0WZOQeZQ0x#I6aG!%_j`UtYdC5aP)IvQ_S$~J- zn!H>E-~SZ3hqVcdBGj&Kd_29nAfm{E-VW*K2o|i8E4g zXf)~fNBM{p%Io&^xlEVI18O0YQaa=IX;g#nsC+U`?f8b!X*(3f;M~V?4LYhAz?XKT zxv4*N3hh&AZDzAH+PGpiu2UA+j&F{91Huh$Y2%qWq%+OGcUIB&W9NgBRgiJ1pHJLT z323v1DhTuDeEHnJwQ^{QHN2Im$|W{S@^le{%96N=~iBE zJPyk`3xnN1ccj%FRhYU%Ucf==K4ZGMX(vtLhXMN}%YJ6h@Cg}pDFl1j1mVobf{14f zbjJ{6qov6|-B;AjrGidov1y00(I#1a!+oBTF${VJ*2bzGOU_m+fYA?(hlkt$*6>wQ z4!8CJd&{ty5$E5BH!gm9GEr=e*}cgNmls!#^P5HFYiF}O4QYC0(M4bswgL9ACC(!^ zW!6?z!d>uSxLJv8YX+)8I;u;JIZucIL{Kjf&gv&376D7kx8aN`pX5@mya3Wb2JkqZQTOmTE{BY$YTduAb+tgOO$s_8qcjUr1NNKdYOO_$58dJkr4BDX#v^IZ_WuLfP zyP`jg(G+vZ9O83$EJzrf3$u%rPO-UQ(>YTm8p-%l=q4yVeo`I&WYTN>m2#Wg>)g@) zm9PJ8C)K#1qjSeFMjKJtAZ=Q1Ph1Ae{)MZ5v`q;1u1BwUhyJDxeXEu;XtR`Awsm|1 zyq?#-qGq2!|B?%w#iYGTC)FYdGux>m%SUSU_4q0dwD2IN8&mhN~VI0(55VCw1q!fwwirP>zvnBBas8UL>m@ z|JlaEI3ZC_6EXnC zkmtBfjfIJ@Fv!?&243m6VLC^xSO9#@kkjt&}82TlreFD*6`Gs7@6 zwQES#QAjNxTTNQA7I?zekTo_IxgWIM^MGq|CuQ^e9Z)Je1B&z{taHoQ(Jy__g%Y2R(blyq4fJcmO(>d`abpAZm9QagBPks?t$KSQfG%er+Y;qg0kc6xfEOy!9@FWccp|$ zjXOynZz}q@!-eEe1u`?^#-{WehlIJGh+?8 z3nL=uZ#f6fkjF(wMcyXg(C8kFZy(|iQ;2W2LP|qEi5dTJdL_?< zjwoKR@25q>$L^chm>=p}H-A~ z)7<|xmOuFi-;}UA6fDPfXxrVoX!b0Kx5CYuA4474i)9CTFq0Q_tBH^ZW5>rs2@-XI z)9&v#-&#JW9>lDUl3~>X)UFY`k~^gYTZydFg{H1itbs)#z!I6_YvDrFFBN@MZQqFZ zK|s~{(n`IxwY>X;PRtBqt8Mmehytmf&u`qJa#R+*#h4Z+A23e#Psiy=#E;iAS~}Tc z{35f%M363`hyfx<#{oK`b49}=GP()^|BAAPaybqnN*Cf@BDN|IHHr_U`XIokUMaL! zS68P(JS);CR(@^&uc%naI!{C|OSL;?ilbafaM)Ly_Lg8y)|Fh2{2eCR=pu@*t_NDz zb;oxmf6t{H*sCy7^2!i-`A$IR@;!G{+tB6-6_h8f!apLc{4zu54EiQRCm~RnaoxG3 zAsK?YH3pUrU%BQ1RErf8FltOXV?tY8@;HDekuk)>6{AIXGIoG?qr(N!h_Pbe%Fg{M zSAb;K6+Gjb2|%)ic+KJs&ZQsS+kaW*z%A_sxdj!}V8(ekYQ8nuRlEIlLee%6qH5w) z_N^3#Si4}HomTmme|>+jzU!B{_ua8ZnzSacZKfW$8JJzool>0()W4#74P?P-OhYsP zrr;G;DfOgz!Ctn;^z&%_VGiUNYG0vQMMcPCV+EskjQn)-5KSmNm4z5b(I=sF3;~kB zClanE+DmsORpcDUGhhxMq)9&n`c_;I}5a}(Eb{RDy zeN8jon@nO5^XX&E2@>p;*NxA_3D=T;9kRsvy_Z2%7qdx`n&?+m|CjaB8pjRDmWvJ` zA+3P06^V<0RiF)Ac4Al9YX>k-y0O#%F zy?vk#{H?zU@CkEon2WX{ijZPkO+7C<3*(PM_V~o<2tn~6kipEK*;TfInmjPW(B+~bgR(BqRc+PyPHk)i;%vNUW#5BH!c7thT z#r%A{@UDPiQSes~m;zb#)8xfu6J-kK9HlO?>A;b(tdq)zVhZd=jqz8NFqI-N3W;1} z&LhRi{zW4^jrU!)?p6B_PS+^R<6Iz~f>F-@`b1W#IdQsN(QO~t$X(^v7RZeZ0UKHO zQur};AG}&NFbkxmh^LsjTe3kQKg(&>3-D$BC+(r)^?HK+>`iy2=&BHFJ~TT-kAZ1d z;k#RzY**j{;YMUUAzNrPhH0{ry~#P}#yoT5@Dq+lnIhqT(80>i&V0lw&HLEJYjT{O{KvYAjlC7FP_+zF7KH@kXY6 zFRgH^x?M7Z7qKlju}u)Cl#4i}+Ay$-c$J{=>?1E!m){>ik9|u`pFF5D+j7O~opZ2s z?ze0NlDt4G{(Dp|@V^A!2T(kWjGCq9PfBje7dH4$w{OKG?7BHQJbylAEr}iqX?@1k zl0Jzs;tA2Q8P|$&Uz>!BR=)yCT6uq{OW*r~*hsjWQ$|$Ri}W&Gh@4xAZDSvOKn@T} zWk=hU^&KB$P7(bB$Bjh!Nb)4!I7zGx2vc}QTB>w~z`5q$tKIrfweX*uC_J1&Rh%gQ zIMk3_aiU*zc(Cb3$kwH?jiB1+K{@}TJy3(Ft*Xc!u)P#c63}L$n+sgp89zw@%2_=%aUhf}p%bEb;80 ztlkhwZ1YfF4io(bAW)<*5K~)2YuKLd4fBBJ1X6%MPEeshA8&;GgTiC-Z*q)o%+C!Q9U%(AES(`i8r_}0?+yw9+Derb=`|Kws4CeQd zhs3f9D{FXqKiY{^UqV?=!BR z^!zpuwFrgdb7i)BxNMnCSK?M81d-fA4XLa-9-(ZO?L-d)_t(6C9FOC!2MTR*G2lw4 zuKUbhC%3c>@$2lQT1k)cY(yi^;KP849*B!&?4dj429o9mUd#dV7NFA*{bskF6BGa8 zS>pgm4qBfF_59r=ONomc@>|A%+PV^dR+AJA=#Qjwai0fs4*my5>R>M!CvC{W{efE^ zN@j|G`9L7F%XkDgXAYST1^-J2{jnC7`ys~q?m+9_(7@AZ=`7che&5bLs3Fm}q5Pf< z<3!Zvg}fL+8_Z2GKI2Ae;Cltin^b<9QhGvVuFP)yvn zJ8HMxtHKjhNA!urkqoqS_DkP$bo+=A$ZX`_ctiyRJFv5D0N?ny1_sGrWcgop`MH4$ z49vVA8KKG;p`!F5MH$ zvr|D!hWHym{;Q$y^LCARnKhG?BMl6m`rn4D>~`5}c@7g54SV!A{X|#;L|D`Czxr%- zk@Z+yKg5G*#ZkOUJ|d|=t~BroOL`My9CTLnDYepJBCLbt4&Am`S^x4%>qmfADr79E zqhy3_FW*)e`0BA=!cRejtPLn7Z$*?xw-_wG~bA?)k4gaDmybqYeNL3Sr`=y(BFy5Q4sc3KR2#jaXG%#Vqg}(xP)<} zeaWx@SrOd|hqmyp?Jxh#4l0LSY5d$kbp}Mr*$8UUmK7d{Sg$pZl_{8g4fuZd=gNY% zCf#LNR0*!CHJX#ldjCfX&TNMH@Anog70ZX#u+kCwLJHl^*Ue~7gW1Ob0pMH3@&qZz z*o@3^;&T0<45Fn(u}wq75`Pv0{zSjG>`soTX1&4r2U`GSY7RiT?r2yC8GZ~JQQSyJ zn<4M7P_4z@pMjJg&k#PkQIcS+iYyYzfj&>p?Y>xIqg!FedobW&|E!+~9dSsN#!n68 zoJSyz5xZ1rZKdsLu^B8-L*FDq%#fizm`Zl3*|?n4f0fMJ(hzd*!L;%okPXISPsO*f zhu5%y4XmT)5I0qS{h(IyxfLBqxH@!`Vb)8^Cqnn2^;t~#AxzpSO!)p**y>UO@C?zX zqs?hc8)QCS*$9oNzf(n|>C;c$9x7g{-21Qwx=u-2$et~rzZjpZCw2a~QK>ORD^c!K zOS~j2r)+q3fd1wH-Gp`hZsgs(VVnImZ23j(uRbx`p^vug&dcAA6o?v+=6p~E`L1&w znjvVbh;VXn-FI*fbS4bI;yF}XG2S9vZN1&_@Fr`k@s3;4ngjibsgM@*4P(_=F^L7g zm<8XqK;BSw!;d7d2iQj_6YZ(Tb$`H?cds*pq@1%waQ^)(fy92S>(LXVoYYp>_ux&; zG?OwtuZF}5%AV-%_1zLAzE{QLsf=_uDQs1UIOX5O>OQ1L{{`Q5ZweW52$Ked1^Pa} zF0J?xTPE#cAp>AgKn3$RCg7jwa6NZWc7sqQZLAr6T zr$fb(Z2Qwdc?`20t*RVt!7vMk;Qi{y*0O+Jr~~MQbFUDfd-`5b*~p~r)Q&8N#xE=y zK-duxWGn5ZX1J>0e;NKPS*|3eR&?TFy~9^Y+=H5Lvx-O>iP7TR1c?le5oXmYh6NaA zxS_>k5$a@v#e`hZmWJ;~bls2lLV$pZp|!j6?q%~M5>L0wzSLM+yP_3{{&dWx4tmQ- zm0_??S?D7>{5YkSw*dG+X>K^{>3c_tUr5@8g(=h+uN|ad-e=9sL#xU|+XWkF7}E}X zlrlYx8_|Uu?{{=PBEXH=Y~D&aMMQiKT+5n%sT^lYh5tCgn;6=lMQ4RO#TO-u)5G^70P^#i3wQ)j zD(*#WX;W1*;;?%XH{1FkGud9|zd?o_xp zMp1;cYn`G9Nzvj+Nh{JJJHr~Lyn9uw*hf&cSl$ZG5i;HAaw2?O8dvBKS@T|ijlWNP zx7-I%tMJ_i1AU&?0H9o2g!R2zD@t;LF7dp;`KV};zjQaTX1JfRHCNb-34E;}C|`;tSy^oXtnO5%$(mgEy-``BAZ{G}{g z#`KRnNI;q49_Mp;0> zXB;hQeQjgvelA$YF@*$VJZdACoO_#)7iAu(a&8LyTiWjD)9J!5@z9M})~>~ZQrQ9{ z`VpwDs2Ws_n{7O$g+qKuO%B|Om@NjH&WFLZMK5i$fCL~6SEhdc~(KkvOUB+lI!GP9M;I&KyWnNRAdDU%Tqp0fw(EBVNm|{=iAd0Bz=) zT#rF9M8+&+rOHfF@?N-UV#&Xe1bPtucNRA7?wgGd>7tkd~X49S!F3YpC{Y(}8u;y%BQ zGHgbFc~er#OV~jihW=Bn5}@FE8nwJCqQ*I7%hc_8pt!O7ROX|gE$CBkw=H$Asl63W zIudG@OWW9JJ&)S8-GbxV@byRgpg!N1vfA-ewryEd7t*4|){-t^u0^&!miRhf zVhuaM+sqF>vx{(uF`VX%dvE??i7CI*X&e)BbL05NhZ`Tm%Ud@kkq4!K!xa|Tki4`O z8N0cL#kh#2yo%TWIEx{^!qcp5cLi;j9;90tY&;I=HQ7Z(&R&Au^;yA$Ggzi071qx0 z2p$qBJyQYxNM`Wme~5pvM?92%{eGeMf>Q z5!A>$tvq{raeFKFim(kbU~Ci7xrqXk3|!(0U%TV2NCDMK3(XCw%MI(crBM7*8IpZd zRDh|rdMn%1=+%%hWSFsmIV4Q5{QEu7YoV=B7=RH7Q>7oLN}s1NAFYJ+uSpknx!YqTczv6BA%c0iuU&&S&@#(}HfP6Om; zNt07#R%uf@b2LhTjRdl!Y4LmZ zc?FY$(eGh(dQCI$h$wyp(QCXBm8O9AT9GCP=}*TpUuR&vQ7_aj#HA(sBT{`gq2pI8HmwIshjp)p=I!sl1Gw#knBhU_rfFKHpD&3 zXO_Wmgug^j#461DKE$j`w}(3exQ&`be9|_rpb5<8VfCBXU77d$ZxeAGo^gpB4Thne zzQE^zmtxfHBxwdI^_xIKxzBSXzSd-$aC$QI7 zEo0j*kYS!dR@`{9P|6tQ73OrY8j^$9@4bCP_pn9aQjiP@0YjoF9^L{u!i%@FBDZ+YM&L5wGqg$W1dusL;r ziDxhEy5$bC0$?Ah;L$cjlyl}!D8f&3qx$g|MECvJVwSLQ?&wTdeIQ^JlFMhL16yGw zo0FlAYiWe^YJRIU-_YQs3sXfYow!1D!@E+&!9{E7Z(GE!D1&h|?t5Ar+c3=Yx^WJT zar)m#N7_N3IC<`I1^JS19{v>KqPP0H$g&~ijQ~Fkb zVF}_qr9G>&Y4^GHJWq{Qr8Y}Y=`%Vo^xvpj@MO~M-bie-M#y=hFZlLD-NJg^SM40c zD)-EQBeVVgM;1+0HPz6xvnhmQQ%FLUH%%EtKYFI)SPah`tK5wjzJsYxAFV7iE=sW< zOQs+mRipO`>0kf|I#goB%b#CanuA#?u(I1G{r~EE3$Q5H?t7S_B&C(^E|m_El9cXN zqy|u=8>LfVq#K45M3E3_QBi4z5=B4|P=-)x0fFy+X7rr@d#>Mi&ZS(&Gmm%fwbxpE zV-;Oq^6b2#t@NF{N>q2l&F?B5WU@iQ-P!i?lXdhIGU#;X8$j#7!@(QEzMtH>pVls% z1N^i8K;ArU}Nw$ zUd>ND$Iq!CuscD4-5CUSGlkTV6`@7{oQzz|7G6L-vRJd+wfRg*UmBuKWy)?Ew9nyX zg>YqjU>*CHOLu(lx;TasPwsuxkTU6b#xoZ&d^z#Q6f3-4R=(n~v~&rHv{Exa6s?@4 zq{Bxw>7J>qOjQpre|O|v!R+8uD!u*WJ(wR#AS^y5lQs8(*qI$kUOS?knUb0^tR-fk zx-rE>W;(6Bo^Q6K>q=Vj-?xp@(6XMb>h5K z+!caSX*__L7XDm3bp8?3Y%hl1mA!g~P2tcR9UP+ig_hS`!p!{cU*Ao+DsB|)T-a@~ z@ujlSd*>L(69PyX?H#AJpPf4dcO+O7y1U^88(7kc;)aBg4^fq|M+Il4*(PSb?rO)C zPI>$9J*Z9s7-fQ0{8)nl4cUSPn25}Lw`7f zD%kMO*^pctB7F$*>1s#_N*w%30K$oxW=glA_+7qdQ;>)^~ z$-iNTK?a7gJz&`htIy4r@A%^&!Y64KBd9kt(+o~|Nu2PhDat%#h+~8LGP>oOVHeit zVZ+XB6#1wS7jOD@P3`R%kSn%m8*E)s?|Dx9Teq=!4f~ceAHYcZ2b~GQNbGhBymguw zgterD#Gs*YuuRL1@!mI6opfB2RezWAq*^R$Me=L%YpLLm%eEtbwijtex{W(4z>Dd? zhHo;gmhFvVbF3859lN8dAPs_EwxX$yS7* z-1q+W??9>%!Dk%a$^bY;fPSmB=B&{ln38P_rwh;$A5zz{tN#VxDUNyTXOx|T%Eo(h z`&E;>ZD%gbGzZpD_89}_b7A11oEI(L!x5j>x(76JVCqtp>$NOrd*M{2yTc*pa;WQ& z&XhKV2=prd%s6mkxv3S#3tW&&a;>NtMuXq_l2ND7OWsGLR%S_MR7ZI92im9dSqx%W zC^J|L?m0mTJh;0|?|3P5Z;Ys%9?G@3VvJoo+vl|7m1j9a&yGqoej&8XR$#Mpn3G}l zv-f0~y^8UT67+M-Rkf?PU(ZGEjIJoI-5)47kfGA<(T~^Wp(%Wp&xVR-V;7$XYd`T3 zIAIGfF}AjgAIZ*F>Up&ZB|_X~%G-#YsH`G^g3RTzA_w0JA`zL)_+v&I{YfNic!&Jn zA3)DRF5KCscl5IHVw#mKL7Ql=$WI25g-NgD>oIzqi9HzxR=4Owo4uR!xlqwu?BWMl z%uRJe;%A4Tn_898&Go~sbm)D0V`y^n1uyTq&?=6c=EBTMp|Azl9(nm+CN1*Sz^{Q1 zS(mCgM)#gO+0c3Aq-G9xXt{JGD4;841E?~zh8d0LcNlCHi{Hi^-FJ_DxR00fjd?`@Fsc8&eeKJT1f~;PBQn*j?_`5e;_J09)Oson~oi~%5TK9nrYuLH-Q66-6GPi~)SxX`xVi~}$jt=Q|t8AKB0_l+#z z9?eps$qM()0&f614mFsn7QvXYKFQGYuGb-CXc({r?T`A@E@Zy~ zG||ROeosU4nz=vpKFYEL%`2TMArYpiR06E{$9;*4CM=Z+EunEAH@C4^TPrUl0& zTf#8)MY1GLqn+V_iLIFvu${-F#_h89u2oOf3Mv4>NJ65d*!-(*=i45y==Yb11(6^f zfT$w&rgRcrxA^JFEMxEv5mMx6=!QUp>zi5Y0V3odGZ`CXghc@}S=oc5pmXtVQ^Zqh zCL~ZoclIn=iICPWqg;rPeDvX7rhwIi^)S_@&ya?93w7QQ9W+yn%h`9o1-08-adlg8#T>D!ntAwWZ>Ivw#~o>3)2P{CzYL`Sv?a3ra!k{lq0{&4Y7Ub^!@gOhW^C1X&>;ZEqf zu}s1ji|hu{8uC@2`@^|k`O{LS3CMz;s}v*YEeTxy&?+cPa#@)?Uq)g*bZ!1`9MN=~ zDDq|YNL7}mkD>2Dd^~?Qy!JOFP7U9>i&JK3V|97hS+Fyy{-Fc;_y;DoBMn)CceJ!D zXL9qv{uM|ZmJnFkVpN@@?Lj_H74F>mOBM{HeB|HgQNgpj-a&wMkhG8>uNM&?9?~nG zJG&k(x{ecc$r+Q?t>dVdwRE6GMG}ipw{X1QQ!S{Q;2dSI_GY54%aI&?2UVGG1cpb3{aoS`nAU-}{#2!Ns9}|U0 z-}6u7cT=F8W_6?Pg#Kh(rmf{AsIqY*y?AweRk!_}Xy!J!AnUUjm!BN}AvwMKYgKRT zJc+H`Zf@@*pBE$cP=2DMmLypq1d2I)@Y+1_9KS*mn_Ocn2q=$Tldg#v{M6+LU)6;O z;mwz))dh{|^bLNdb||9cMm~+yYsIc)2@Y)MO6B7IMtRhfHM~D%N3_Dk^d1soHm#^t zlKAOK)@V~+>%al>B9&I+UBC*SOaK<0x1|p5+NI84eR}vbxpT8#e>o#i%F6u-1uzJ= zAtTZ3BVN7oF_Gus-kkrak#bzb28gx%sW&5SeWde(n+!fq75b7pLHVuu$6pD27YKT# zqA@WZLMu%x7g{bwdw+OFk!S=Gc)&k-dyXogYM3KCD1pGhwGo2O?HecpN|;LGRT`5D z@%-~xP#>#%hj(@-WBL6)#x4AaptS<|&b=&|0(~n>|I-~irSo>-CMTHq8w9(rPHbNt zBY_GbksJ_u0+I(NHjtyZR|KWnSw!L7j{e@1bm8I{L`PVc63M#EDs}&fjVehyG-KA0 z;Jc7txhIkb$`BOY=-gHhd(3xbCq4=Vy}UF!1Jaga3Bd20-= zuUWO=AeASJ5G9K!CyO}2o_5rSmvW38JIw7>eIKj6@i0SS9!r2tsS2FD4m0Oz;$XaU zXEe4uUiz_l{A$gh_`eqyH*7uBfxPAm8k5ltaEr2pJ#sZ7-MqV5gcfc+y-hTK&!eT?Wu$RJii7XF*_-E=4xwGlkaB<3 z!UgL}^IpAQn)03$bkWUw50d%D;c}fXUr-6XFK=u&zWOdPqwDgD5^?P{w2j3XfO(ME z3C%y5!0FW4r+S3BAMXl&)2SwMsS;`ROc|v`?arGn6apu2nMQt;PS)Q&rUZ9cWRdXG z(Y4EkTxrOJ_u~UW*KyT~1rGD|;0wT(M%;V<0An#}z?Vsm48@U{L$Y69)P$-@h<^h1 z!!d)Sn!gEY#g#JZa!Tx2DTqvtFH^o{`~9W|CRz&s*q5ze zH~Z8)mE&Kg8|$;0Hu_f#6_eL@ebD$IzvJ0&=$>yc3#s}^HX9E=k3e6)m}%M8r(=QJ z;Jg54OH3Rxqz}Cz)s^6&y_IP*rUHH=^yfY8Z?#&cUKLivx1&>9re-I@MgTRqs!&`Q zoPpBG!q}rI8QU1gYuH$t>Y|{XJqoQ`_Rhpq&1=Jo%*5Pj8x3wjRsmFbYH`O*JzO7jhDLYm_DEZfnj?#1Va*_QS z{xxPRa0NP#Suv>6DjW&?M1e|?v2-DfW#%LUb50zA8+|8H_;medF6FmgyE-6>Uil@! zl6YirU6N2SXHn5+Dv_WlOYWMnV+ zIa>Z)1fD+CO_4QL+&?&|3gx*!$K|-*AC?Ac+}g|JANSKf%L?y-O}FYlxjb4ILIYX% zZ7?832RPm%zNw8&hRl3ZN^7Ui>!Y2II@OG$B}?U3&$T~hF8h>AZf+Wk%8}WMaLwk^ zSNV&!D6Qc2sF1|U>sz&Ek-&B5Rmj0bLANeH1gH6t@O3ADFq#KZ!Q=UN)r-vBkA<6) z3Pf3;6#|pR%=SP%q4HI*98>s%U6f&&wmu+m9YqDvhY9O^eJEU%nUbeURBGbv zg)ft5lBGb>`@n)*Om@-~v(ab>Ki%&jqC|Sqx={oWY$(W+M&9V!6M8iFeWA zl&H#}C1p5C%kL`qQ~pP#k2*6xA_899c2^E_{&j^QEE5xW3lOfSLO!H`6IOE}(^VuP zzb5y3!T81JrE_xavbc6KxMQ2ZqyylP2B_4!bfG-lZam1`Lbd?A@P(Ajd2C3^Sa1B; z6_a7RX=;!-+-do(OxiGgCg(3jze1Q;6R99?T4{z|_q)n`FAew)RZ}Mb8xhR8TqPoxL{@Yi?yYRx~_(copkgzBA zf9gVVNBt?6llYZ1Yci4m(fN^O_JNUgNT~wjlgmSbgoYhnKIeL70@@c^f zJKNDJ;|-#CCz!x^FWQ)SNLEy>>PZ>JXjAvt$j9Z^!O5=D@zjs)G6!$PVsrq6rEXJ* z@~m-rwNP#@87$U=JdBDeP-Z5sXxLd=v71y;sfZWs-x{%ew)unl;OlNZ(`;}#W9>ko zT7$^w3Fo*K;5nbMW13#OnZp?9d5jB#n6V$!Yw9J|sKdu^ikp%|=s3$5e%> zgh`F&?0!hbFky!R35P>5G5{te4e?#s#x4qh*A=|goMO@-7z}0%-l+PB_xSG0&yQc* z!}FQuW0=@S(m)Oe7KI!vO0*sGmc;Me+Djiire|<2jO^2>Ig?lL)wnJ1F(U;&s0ppU zU%qt;G;*hLcaW1?U!jbt^2V_%c`Sa#)^8rhTT{r*}wLMP(N*%lfNCQJ7wGk(c z0n_dcRfXb@9XNG*`vS3URAFH?ZaZ@7N$^f2zXabNI7)A-dboXgLIfmr+uPHkGVq0NOB~4J)JPKh*Pfb3q ztu;D^%Ukr{WYwip<#lS1KXU@g9y<@~`6vA2`IG&2FrO+}p7#R~27Yf*iy)m}2{B`2aOVq~ zm1y0}cr`>p^ojz}c#HvK2LQWv#$Fp*sYkev9(!RNlP%W#O6rBZiK4r1%gm*Q-tWhw z5avMHObBpW(RpH~_ouLmD0z?TO5u=B*T85==M63AeX5<3|T{R^uN zadg8cG+~lkuUB-hJ_rUifgJ3FeCVDOvxzG}ms6kDT;nLX{A`hVOP$m3oro2{l^hVR z1g7qS-W!oTtNrt|Q1P)^)ZrMyO3mKAcbr#WV1_ILdIcR2f@{D7-EfnFT4{@^2Y2}n z1g`)w(EFCrSrNAuw02|HDu|ZjBavN|VhL-K3$w0f#&4A8uu8Tdf}vmbYhp^7px+XR zm5y(d2s0~=R%Z1_Z!5}wAi^3OyXwJ??gzfIi;R+cZ(fd;+}0Xw(`bY05%l`233O$+ zj++`H-}&56;VBu-nkFI(+83X7_iVu4Xn-eP4o?qYb1kctBZ6%EJjh0!3vMG1ZG&D^ zT>#kxexxV9Bj*7G!+>B83A9SYZ|M0=%rC8jXvupf0NxnRNzp4dDIF8HLT~V`a$s(* zj$?C$U+!9GuNd{eEEvB@q;G_Q)7t|mB7>B^u=BaWv&(NRlc#Ahjx;61ETvz6)#gw+ zj^UkpM8Ee|jcE*2kOCz6E3nm`dG$J=o3nU{R7&K^1D{NtY<7HQp*9>Cry*{g=yA#S z>u;||W(-3wNk-!nc%l{L))rbUHw_LW?#R)kgm+|NiUgnnTICdhDLjE~RjF8!DgZ;&?`VrRnIG>x5~&Exh24OdV|)o3|) zM1=GCzJuAG{irW8?AeGP32G0`ARGpH>F%rR25mm!PAq!ro*wfNQ-A~jjN|k3)12*=L^>*v6qa$NyBG9Y)VHEl0oA6; z7PzLCxC`c4klul;=lZsOp7!C$LoH3?<~H^ljDR#u_Z@Dzz@?qFz3)S`w=-61RkoTe z^HulWm$(e6?e{j-V;#No=cqD#8cq+W;AqE-x&2}h%z3){Ald$4?^fP5@VOBemioN&v*<^ELuXZB2m7!SY@zWzu;1O@veBvYVKSX1Qv`ZA-!4 zfotQ$fWEs5=)3WK48#`)mBx8YZiG@Ke$+!x4^JvFN(9=m=Uqi?Wj;yjr~vQuuuuT7 zG2CtT)>7m9EB!Z7pATR?JNmZmoT-8dw6oUAg*%;0NPpJ91MM^xhp6I#tHfL!i~`um z01pXQw_tuRAdy_jZWe@w^i5#S4K+(#dxBoy;AkuSgcJ76qn9aRj!q#y6Id`YAs>~i zUmcX~8pOmssh-Zm?nr$;gD#a;p^Eu%-H~ffID%gomYea%vkCSt(-y%bA)=^wr*IQ; z5|P~%JVTJ;suBNbQQHO2SFMBI^{Da*2}OcS2b zJNNFxU(X%YUeZnk?i&()C65~HC}?g-xFHSF&Dio#o`y=_`?0lv<*Fg7HqWl&sdjp& zpqdgFS#!Hy%W@Za-9MKWYV(gUFY?|_u7v>r5SQJz(boIi+SvMWO(^7$xZ z_zW`nfSU}mhXOL%s;&uFZ5qwtAkNn+5(*FusB1h+(BHbZ9j#i3Bp;1AS@Zpz1E|QM zH}F;Ak#B#aB&f+2`;sfY>UYjcA_$i(nHHsD$mH>SEL3*8=*tjIJS3hIV$!a!#E^Ji zUcXwXiVV(0U`uBoC@sITBzP=OccQ?zGUFiNL0L+kU~CZAH7qFGi_PknCm7V=F+Jz_ z@kcoTXukpXjS5Kl(zRlpIu&#}Bf{qxWcg*~zwHY&Ql16(K5fd--YC0qc1PxJbkfUvqakn2cx4 zx|`KZ1^P?SRw@}+0t2A{#))&8V%Cs|@=|KaPWYha-`Ub4RHzJNm{4U!jt2CfNetMz z53Hi`A?kEapb|m|!-GVdg{h<8AhbNK;JoJHW!uy$p1mHgJ6Bx!B77SO(w-75HM{*= zz;0-5LE`3Vq+@G69t6kkV3tIL;du&{h6+^dihpy7XUN@1#@7wWHOPzRpg3T`7+ji@-=PGG@-vYh0rYbNXyN-i6V% z@A9^$cZ(4}#?O5Q3L=av;8i@6>#jNlb}2ay4_H_K>0iMp=XMnDh%*_5x#p3xDvDa) zU0MeM?~q)G_TMH*`$^y^H;e@lAY^T9tyrJ2dBj^m5N6{J-HssjvU_busuIf6MAe2s zHLSILc#Du}qrFY=m@CV86uGP-j-& z8v98oXlQ}f0+^zI<>PC`2DBy{a&apk;Cu#U1*dinUv_S3ISaD=TSH>crF5^^WHJ?V zBCpxNU3hs!+Z_{;RoA`^(QCe`Ua*#;B)ct~QY{pYBUi9Kl^RVd0 ziu_B6=u7NJa4cbXsT)2Ygq%|h!?VDX3wRCm4Z=8I#_zCk>p6}52&%TxN^#C0U8uI8 zNGnx$IP0IAg?yimGY?JW#Zs1gAJk=|!%DA@6w9V|=`nq%$QMUMi?c5#Vs3gLLO?^; z>3uG{A($XGdW@+yE$-J^;ZzN2s7-f|gF6Zv>pcEc23Y7B{-?f&{%wEyBl!A@9?T-s z9)7=`t@9S=v#-IBC1?qq?PY0(3M5Y`d;K#gL0=y(<$z6z;N<}(H+5vmQa~#z@D9z{lJ2OI z?Z)YR0YtO_DpLS)*NFtW8yVz%{Co3Lp1mnjd9Zy9JdkhST`|QANxwU&%~3mdCk1s0 zrQStX_)}(Smg;%5avdKA|Kgt?vrtc9n?Y#lwHNd)5nq%bpKa4`Vbrx=LpdiocLm{E z2I4mKy$4oXIbgM|6<05lb!0QyPd2gm)&uT)>Rcc$m5Q+0Ykw~mNAxotk0525XJC#o<$a?Ye4TExVTEiW8ZFc7HF68$QG!vy2t^XVrhY!hWZ1A za*Jio=Vb_RzB(G~BpHTefm=jzW{NusJvG&OlCkqviK?@Pj~l3N+t5}dhu>eqLSWD( zsnLkBA;YFl_p2u4UK$L%7xQNHYrcPdW=~eXuN*MBTLP2&d0z};59GP1ySY4*SKY1L z;6gRPC5PW|`OA-mLGQXte62-bP0|nwV~z?$rYJ+duW4GZJ z3v4V%fZD0d{kst|YN8RGc_pCP1)dJ3Tb5tk>6}*zivNV#eX>F-wg>(0LJO>PUH8vnNjvME@v|*f=Hb>8 z6fkDE*DHj(%cs_Z_h>@rS7OMmTHDOFL{nwy1R`1L>AF#e-NT~_poN)lyarNhXqj<&_z?1%OtTbfzGl(AEO*HL6+OA* z?Sr34qhg!_>_1!pQCPrZiuI*;(nsdf-~0Z^hrlF7N)mtTLfD`fXIRRprmv2rpKVBT z!nj$91EC2AwprDdrQGvq^`jgsTZ%3Ig))>^HEig+TqoDq(#azwjWnJuzA}xnNY^g) zR!fX2?;0@7QDgZE6dPj)m6e3g_a z`5q@*Jp1^Rm5iLiDR4eD#OrG7XtD4GF_PwM#(dM?Mn5g6k1YneoA;cM$GA1Meu=hK zt)G^iNi&3_D{nLw%}S@;|D}wiQ+KtTfiNdg9EzM=&Ly)+_I$MhS)X2tO~Pk z1i#opsEC5@wYH3WA%i?rt~Wt{oegA@l>>dGb_&Ci_&e8<2DZE)kQ53!%kc0RDVv`U zE_S#@(ZqwUG5z4KlmE3}kHXvz74``ZwHGWd-{$95OH>|aZpkKq08 z+U(F8gsT>aYZnC8z6e_TT))i@x9<^I)wG!`dl>QC-re3oyh z)R#iT6A40F8En#Wz>jQHcb6uKd{iofS^7PNqsUKZSVCB?e~pP+#kThv-u*ZDM-{D) z30+GIeH(jXbJNwfY8A|~}{sT95rWIRCVr#XHVzpG+$ zZX&>t`*1{T@iR5LO{CopZ7aBa;s4dH)qMQ15K%gK^>aA|sPx3I0g=CnEfv-mY1G|XDuWVevIs#kSP-fKV{HKAP;P%l z@VN3p?&m}|+~3&QT3(t79^8ql(Ow_n$fK{g$j@-hNTtDwr|V)V$&J-I!F;)$$WNTA z+A9~D35{NletR#IK-$_kv2{OCk^k>Vw%)$M*4QL26dBM1bNY! zAwT{Wg8V08P=WL0q^St;_djcB_9EtjWs#V?lf3 zrVmZiBNAQcu#8|I{2IU)9xh{0AH)~l-ptC97qoDYW*_(;<&@T3P_g?eX3Ds=oJ*3`)n%Lv#l#O_WVT*4EASAQHRU9ovsgPY zUH*cNSwZF;XDLNcqrec9kmDA-QXvs0GAjX@G-6b>OK#i0%B1R~qDKmCz*G?PU?3?o zaO9||6vn=aNCh{f*Y_f?2hLAH`2cvuVI=hnp2P2MdCx;?q!mj*N!|O4Rv2Ufy#hu2 zyq!kx4EzPR`4(mvCuPix&$$dQ3^1(9s=EZ(*_xesraHG0mqm2~S|~sUZ0Hs5QOMT9 zIN{(cK*A6)teM!DMvQ#S3PFkbKS{XLVJK&2gKtzmCtCY1qE1RmHO0MMrTiD_w z`;59)Z@{L^Tn;08<13K_knqlj{+ry7I#^%!IQuMkx?AuHR`)7b4%}QWg_k5ep3L)Jz3+MDOVg%1K>Lt7 zoU--@?%yYTb9${ig)#}zPZ0Lu?cA>qim#Bl4H6{R)1-=G;d$q4erTCjF>ZY)@H;Rm z`jbOKSC_xXjmwE%p!|gy7OPIDnDL`bA#l~h|M`>I-{HK!aaxa{HF1KLeMLaDDZhG0 z&4AU+pX(3a^Sm)4AIGcNmfTIm0za}q>xWqe>U8Wcbxhy<8%w~=MI~~0E;!@bFR+1o z*Hc721SA&+xm}pc^s|SsCdSV%F-ar<`pHEk9tuYjXc%y=L3UpeL3B4uA~8*dw+zUH z6@|Yapbu_cEiltHS79A=ky6Ek5^f}tEj^%W#w3&%I)|%(wKtL(=dVS>&_6Kp1Jo`B zYAFLO#XuV{xZmoVTBJp+@HOLyBO_2$i~IXB_m21lzU(+HQ02Xkn-A9Aa_e({mH(x+ zfG{Wpd<<;K!qXD%|9 z!|-uvyT_W#WrOY={5kDaJiZUt<6D7gb!EvFcVgcR@CGcCeA<({)tF)-03)KaP}cNs zN(c$|q07-?wj^FgqFb(__i^k;-3)(m{5+s`>dpLfrHtG~^G7VmyV)R?Q)A!f(1f4M=F>hXMso z=|6zALA^o1Rrd}7hF$G-Ax0YFGdl1~s)k9-rvJ4qXftHtW(DE|K z7)yWvuCQ=V!c*GS_=6#fHR+HuaT9NORGW6P*{kiYW{Ay6a^8F96xQmYd3hr7WVkK$ z*&pyICy_~1&AB;7?kthc2VNpfS2aaY@mq7Ck-5o#8$a(Se(4te-%1+?jWy6Hc5;y^ zq%O4;k_Moh+iHmJos!-+P(JWY(toVePEK-j9-)}3QQ|H2XGN%0qHf1ZB}7sG0Fwo; z^+a4p;N+#r|JaGnJ(##tqy)NkT)qvdc5u+@BIYf8N4wq`S!XvoVcwO5O}$Kpg9Kx{ zzG_*6BHA7npF`uq+hjrGb1&25{fr)CM`D;Z>{c1{PP&xKr{oIeu=|#?P%sWSGInJL z8Qp$??NFu-RUpcNHV*d*)ns=%+EQ7~m1+iGK%6ABDgu&w;CsGW*oH8cj_y5csg$2e zPB`D>ZBU5961crCS}N|MMSe$*YLtH)u3P{n3f1dIdqg8f8#>}p1y>2E;Oc6`E(%}^ z1MOsspHIVKyTKQL#({}e#|}5qUN=a|Mrnatfc7u*mk-NUhW)T-1T6dLjFp^+ zcg^~3;*-+GZojXj8$D=^KE(9;tujyi1DlZ2Voku+n3oLr z+)X`4yRxE0b-%xcrIgBed`p0B%3Y`6CTFmx-t#XKP{EMum1`3CrSut6Q{2G^HW=s_ z;0q^}v$B5_n?)bw-!h8rv8R)12W~F#u~42`s^D|E(atbi9XPv4eS=Uxn9fGzSB1T} zqQ+Djw&j`XbdWuTkkO*%Olk1=!xbI~Yst09>K)PCEG0#{?y$x9Ys9tr&dm29cPx9o zd7JV@P%$Fx=4qIltC4^{*-m~VYsFL7;wwip%?pgKgO|8M&xJa{H{`bgcTRp-X_T5|<|JQH4JDx5|T0$6rZ& z7f5=IJ26y<4|vbq$Xql(NepYB5eZgC*N|PQ8NaNhZ0^roN@H|E%O!Y3mNSKucJvWz zDVE6ts0;j4BwU@<4P6H^w7DLSLYB3WdAIErv?dZ)w1yk z|D8>Y<)pYD&GMF5OLtN#BxQ8A-Gs6ns6v6#(*!r(7;PA0PfF@op+ZFH9<5c4l|(V@ zFja05&d3m>?Jd$IIAIxS@S+vhwguO)75DgWp7naS===oR@V7350Gf-Cg%QatW7YI| zop?DsV^|$Np{p9ezkG!}sI2N%WLybwkAudS;QBJs>wnO^{={T5cvV~pOxL=(C3UB+ z!eO{+>odza^%uFgwmG<3x!^sR%(M_-dX#~1;j&FZt>gg~-Jt`m$P7c0&ZF41yTzQAHaXLz7|ioSR9>GR26 z>Wkk4iYLp8r);N-*H3ou+&j*`cRF=?czQB&`V;*5bvV)Ud83sVr&ITipP%mDJK5Yn z-Mn|A0sj8$)7|}hzZZX;9{(;r-FtrT;Kk|Q4;+-@>4kfzM~Y8Qw~OJwPk;P4Jvl8n zO*#F2if3>Q51$qX2Zsnp%i6+n{=0!jH7*X$IZ_-Pa`3x>w=Vej2HkS<5e>Y3Yu4;j z;-`z0$8-x657Tqha1X>{u(3LQ;YF4eqzHfs;DS4h{f`e35Q_fr0{ z>p+Fxdm)9UPw#hc-67oQcg!kZGrhet*{B(b*Sux+l*`iU&qLwo|`ly?xa|KS+v-f2|ouk>^aH9wv!s)mvsk2KV}dok~b zS@ga&@AhLMnkgmp1$)*)%I#4)eAdqN9=Oui5afjT_d`p4^a#hX@sLXK3$qV5V<$Uu zJim^T*}uYF{H#t|f9I9xiGc9h(rC*CyaJ7*-MW`Dn~rKC`gg->_`(Da3*yh-o%37$ zZP^#)p(b<0M*773_bZ3w`YpN%Pm=w4N-28{`@)&BGmJ|EJ~i(cb(c5avDt}Mv6+v4VEN_<>-LOHj|VsqI3>*)(>Nw$oT+-|Yf>Cb9Bam_jY3idp2 zZOxCEhUYIAdx*ldY!lKSN-d7D`p-Gu2w(lRxqTFV>zFUapdkDWRS!RlAYLMkMaJ-{ zZxK&WQMh5NNLg>%lCYNEjW>woQzJPqJy`KCtt8HYt%8~rXPTiKs*@rkn-^G<`^gzH z&I%seK1O?t(`=nE8z_X`QF)j?mabWt@kEkyvyG#S|I2KpFGATbB9CPvb!}efjjUy? zZH0H4$Hin?f|z;Xw=NPR39C!LlK11m!NEw0@E>q92x+-nRls6|;(;rhBxmr!Oz%-kA zQeB51s63evW|fQ^Q@Z-eLG`JX@D(Ld2IuFUj_0a;%FW|#rV1+*K3&jPz7t+2r{ksK zs(DTP?9ZXGdt&?BWRhyj+FY5|jDh3JC;szVqexDRb9rigyk(;oxwAfl^=(Z@?XI_nUX_xI@P` z*>F_*wG!p;Oi#8OMx&7x=p;3f_;W&GFSzra(X+Qdd}^Am3rMFF{`F;iZdmyB;LMgz zsBnBrUv>b;*Geka^RA2ogdNG!6DkIkynAN8%c_jlgw}5el{&87X}nbwob<9bEB$>I z(4X+Nl}SkUx>*;P?;YIL)uXRhirXs8U)bp8X2lEcP|D07ua4E zRKH0fY;h71(AlSN-2%MYrIl=RM6xQTkcx``ir*`p9eBL}myj&P}b^2T$; zNkT1{&SAwq&mn>IL_gVN%HmaC|F9~eUW0IoiLCymR35hlMJt2w*$7{cno9)_A3drG zjL`mB$#|?=DfsY`(r%@kp_j z%`bfnCiNGXU`FiZVmH$NJH?ny_3VMd*{F+TF?H0-IFbg{ssuW=7DA$w1lwHH)Nh`U zJiibFL&*8sHx!B7`_ZRY45tn7C~4m2R(B`tcN|#%fm3eXlqfp9cv0W&eC-#@Si+96 zPB+Rl{x;@pQ!r!&ANul95=}Pq`25&yHc&@D4B>eeAbg&BC7Q>ot7~IxoGi_GD<0_{nE7&p_Xk{~Q%3L{J(77~lvV zI4)q2)~a_re4RXeubTvUI{DZ_yXbMcuHNg5lwfpD);yxZ7A2KTH%M(gVGjC?k51BE ztj0cx>rHEyP}9Ze)&|aXj1*K z&(f_a_Xn1v3|`U%*6@d9tWAnHdEcoHL@I7gzL#`)i!Rqp9Z)=^y#h8B;>T&0&HZd!aD`4#f^{3+A$Ce^F&FBI!L-s>^m`&i(*@PY9f4 zs=tqdui>z||MzL&L38@Q9?!KY;G!hN!71RwF67@&2!{=U*Mq3;3wOHhg#G!_|MdYl z2YPo4yK!)us_}8?|2_@AHbe;@qsE%@()MT7tR%m3bq|9$wsr~KcCkA^T0|Nor%|9;MY57NJ% cGe7))9xH=u1Yo&vaEQVGSHPMJqM%>>e^rt{QUCw| diff --git a/python/lifts/results/simulation_crane_1_hostler_4.xlsx b/python/lifts/results/simulation_crane_1_hostler_4.xlsx deleted file mode 100644 index 82a7f44e0eca6024070b7df0a556520a5b51619b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53928 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 H_ILjWf>&KT diff --git a/python/lifts/results/simulation_crane_1_hostler_5.xlsx b/python/lifts/results/simulation_crane_1_hostler_5.xlsx deleted file mode 100644 index 0af358a8dcadd78788cbc2af98a364c7e6b13be5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53888 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

439ZjVv2<1QU%O&&ywb5A~uh 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 XtxOF_z;+Q3kb&P9z@A&7uz&l1spKA? diff --git a/python/lifts/results/simulation_crane_1_hostler_7.xlsx b/python/lifts/results/simulation_crane_1_hostler_7.xlsx deleted file mode 100644 index 4234697de9dab273c6eea81e755b30b608950189..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53937 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

4Jrtk_|U&WZEg`jq;*s6{-K&D*&`-8dk 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 YG%F)r60lta1Z3d*6|m=aXzcI)A7bYWFaQ7m diff --git a/python/lifts/results/simulation_crane_1_hostler_8.xlsx b/python/lifts/results/simulation_crane_1_hostler_8.xlsx deleted file mode 100644 index b37c09da344b65725542ca301e8ab8efccaf6e79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53903 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

0o>g%2Fm9T!ig)#g;`#51UHJ4SK7iBfxQq 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

m+r7nai=ds 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 diff --git a/python/lifts/schedule.py b/python/lifts/schedule.py index 4dd43b2a..186f34bf 100644 --- a/python/lifts/schedule.py +++ b/python/lifts/schedule.py @@ -1,31 +1,46 @@ import pandas as pd +import polars as pl +import lifts.utilities +import lifts.dictionary -def find_duplicate_numbers(series): - duplicates = series[series.duplicated(keep=False)] - if not duplicates.empty: - return ''.join(map(str, duplicates.unique())) - else: - return series.iloc[0] - +def build_train_timetable(train_consist_plan, terminal, swap_arrive_depart, as_dicts): + df = (train_consist_plan + .filter( + pl.col("Destination_ID") == pl.lit(terminal), + pl.col("Train_Type").str.starts_with(pl.lit("Intermodal")) + ) + .rename({ + "Train_ID": "train_id", + "Departure_Time_Actual_Hr": "departure_time", + "Arrival_Time_Actual_Hr": "arrival_time", + "Cars_Empty": "empty_cars", + "Cars_Loaded": "full_cars" + }) + ) -def train_timetable(terminal): - df = pd.read_csv('C:/Users/Irena Tong/PycharmProjects/simulation_test/data/train_consist_plan.csv') - df_terminal = df[(df['Destination_ID'] == terminal) & (df['Train_Type'] == 'Intermodal')] # Filter by the selected terminal and intermodal type railcar + if swap_arrive_depart: + df = df.rename({"departure_time": "arrival_time", "arrival_time": "departure_time"}) - df_grouped = df_terminal.groupby('Train_ID').agg({ - 'Cars_Loaded': find_duplicate_numbers, - 'Cars_Empty': find_duplicate_numbers, - 'Arrival_Time_Actual_Hr': 'min', - 'Departure_Time_Actual_Hr': 'min' - }).reset_index() + df = (df + .group_by("train_id") + .agg(pl.col("full_cars", "empty_cars", "arrival_time", "departure_time").first()) + .sort("arrival_time", descending=False) + ) - df_grouped_sorted = df_grouped.sort_values(by='Arrival_Time_Actual_Hr', ascending=True) - - return df_grouped_sorted + if as_dicts: + return (df + .with_columns( + pl.lit(lifts.dictionary.calculate_oc_number()).alias("oc_number"), + ) + .pipe(lifts.dictionary.calculate_truck_number) + .to_dicts() + ) + else: + return df.to_pandas() def next_train_timetable(train_id, terminal): - df_terminal = train_timetable(terminal) + df_terminal = build_train_timetable(terminal, swap_arrive_depart = False, as_dicts = False) df_next_train = df_terminal.iloc[train_id] return df_next_train diff --git a/python/lifts/test.py b/python/lifts/test.py index 8ee12be9..33b09e24 100644 --- a/python/lifts/test.py +++ b/python/lifts/test.py @@ -1,9 +1,10 @@ import simpy import random -from parameters import * -from distances import * -from dictionary import * -from vehicle_performance import record_vehicle_event, save_average_times, save_vehicle_logs +from lifts.parameters import * +from lifts.distances import * +#from dictionary import * +from lifts.schedule import * +from lifts.vehicle_performance import record_vehicle_event, save_average_times, save_vehicle_logs # Test input @@ -545,14 +546,14 @@ def run_simulation(): # ] # REAL TEST - train_timetable = timetable(terminal) - TRAIN_NUMBERS = len(timetable(terminal)) + train_timetable = build_train_timetable(pl.read_csv(utilities.package_root() / 'demos' / 'starter_demo' / 'train_consist_plan.csv'), terminal, swap_arrive_depart = True, as_dicts = True) + TRAIN_NUMBERS = len(train_timetable) # env.process(train_arrival(env, train_processing, cranes, in_gate_resource, outbound_containers_store, truck_store, train_timetable)) env.process(train_arrival(env, train_timetable, train_processing, cranes, hostlers, chassis, in_gate_resource, outbound_containers_store, truck_store, out_gate_resource)) - env.run(until=SIM_TIME) + env.run(until=state.sim_time) # Performance Matrix: train processing time avg_time_per_train = sum(time_per_train) / len(time_per_train) diff --git a/python/lifts/utilities.py b/python/lifts/utilities.py new file mode 100644 index 00000000..428d4c8f --- /dev/null +++ b/python/lifts/utilities.py @@ -0,0 +1,17 @@ +"""Module for general functions, classes, and unit conversion factors.""" +from pathlib import Path + +def package_root() -> Path: + """ + Returns the package root directory. + """ + path = Path(__file__).parent + return path + + +def resources_root() -> Path: + """ + Returns the resources root directory. + """ + path = package_root() / "resources" + return path diff --git a/rust/altrios-core/src/train/train_config.rs b/rust/altrios-core/src/train/train_config.rs index a615e22b..a912553b 100644 --- a/rust/altrios-core/src/train/train_config.rs +++ b/rust/altrios-core/src/train/train_config.rs @@ -1030,7 +1030,7 @@ pub fn run_speed_limit_train_sims( "Node", "Locomotive_Type", "Fuel_Type", - ])) + (col("Status").eq(lit("Queued")).cumsum(false).over([ + ])) + (col("Status").eq(lit("Queued")).cum_sum(false).over([ "Node", "Locomotive_Type", "Fuel_Type", diff --git a/truck_work_log.txt b/truck_work_log.txt new file mode 100644 index 00000000..3c771784 --- /dev/null +++ b/truck_work_log.txt @@ -0,0 +1,498 @@ +Vehicle ID: 1, Event Type: start, Timestamp: 174.3006195900879 +Vehicle ID: 2, Event Type: start, Timestamp: 174.3018535706501 +Vehicle ID: 1, Event Type: end, Timestamp: 174.37599772819118 +Vehicle ID: 2, Event Type: end, Timestamp: 174.37894880350387 +Vehicle ID: 3, Event Type: start, Timestamp: 174.4938586978192 +Vehicle ID: 4, Event Type: start, Timestamp: 174.5012630658423 +Vehicle ID: 5, Event Type: start, Timestamp: 174.50631503585575 +Vehicle ID: 6, Event Type: start, Timestamp: 174.52647821931592 +Vehicle ID: 3, Event Type: end, Timestamp: 174.57278528980711 +Vehicle ID: 4, Event Type: end, Timestamp: 174.57681583766907 +Vehicle ID: 5, Event Type: end, Timestamp: 174.5866396078987 +Vehicle ID: 7, Event Type: start, Timestamp: 174.60485360147638 +Vehicle ID: 6, Event Type: end, Timestamp: 174.60556601585935 +Vehicle ID: 8, Event Type: start, Timestamp: 174.6230875714389 +Vehicle ID: 9, Event Type: start, Timestamp: 174.62863283123264 +Vehicle ID: 10, Event Type: start, Timestamp: 174.66033048077077 +Vehicle ID: 11, Event Type: start, Timestamp: 174.66125789393578 +Vehicle ID: 12, Event Type: start, Timestamp: 174.67159404774407 +Vehicle ID: 7, Event Type: end, Timestamp: 174.67768945799153 +Vehicle ID: 13, Event Type: start, Timestamp: 174.68089290992867 +Vehicle ID: 14, Event Type: start, Timestamp: 174.68358240707497 +Vehicle ID: 8, Event Type: end, Timestamp: 174.69141909979578 +Vehicle ID: 15, Event Type: start, Timestamp: 174.70295259301363 +Vehicle ID: 9, Event Type: end, Timestamp: 174.71270921883288 +Vehicle ID: 16, Event Type: start, Timestamp: 174.7170027584468 +Vehicle ID: 17, Event Type: start, Timestamp: 174.72348337441787 +Vehicle ID: 11, Event Type: end, Timestamp: 174.7292178105025 +Vehicle ID: 18, Event Type: start, Timestamp: 174.7374963042857 +Vehicle ID: 10, Event Type: end, Timestamp: 174.74129691199275 +Vehicle ID: 19, Event Type: start, Timestamp: 174.74160939596376 +Vehicle ID: 20, Event Type: start, Timestamp: 174.74348904622886 +Vehicle ID: 12, Event Type: end, Timestamp: 174.74506797816073 +Vehicle ID: 14, Event Type: end, Timestamp: 174.75468770224018 +Vehicle ID: 13, Event Type: end, Timestamp: 174.75691395889328 +Vehicle ID: 21, Event Type: start, Timestamp: 174.77966697447295 +Vehicle ID: 22, Event Type: start, Timestamp: 174.78152605363738 +Vehicle ID: 15, Event Type: end, Timestamp: 174.78264643626582 +Vehicle ID: 23, Event Type: start, Timestamp: 174.786144624434 +Vehicle ID: 24, Event Type: start, Timestamp: 174.79158206833358 +Vehicle ID: 16, Event Type: end, Timestamp: 174.79326565852304 +Vehicle ID: 25, Event Type: start, Timestamp: 174.79958399502954 +Vehicle ID: 17, Event Type: end, Timestamp: 174.80186635191185 +Vehicle ID: 26, Event Type: start, Timestamp: 174.80225534045326 +Vehicle ID: 20, Event Type: end, Timestamp: 174.820461653581 +Vehicle ID: 18, Event Type: end, Timestamp: 174.82092862084943 +Vehicle ID: 19, Event Type: end, Timestamp: 174.82555892580345 +Vehicle ID: 27, Event Type: start, Timestamp: 174.8303605907534 +Vehicle ID: 28, Event Type: start, Timestamp: 174.84734717576137 +Vehicle ID: 21, Event Type: end, Timestamp: 174.84761523991187 +Vehicle ID: 29, Event Type: start, Timestamp: 174.8486347798264 +Vehicle ID: 22, Event Type: end, Timestamp: 174.8499403410715 +Vehicle ID: 30, Event Type: start, Timestamp: 174.85478644767323 +Vehicle ID: 24, Event Type: end, Timestamp: 174.8599730752654 +Vehicle ID: 31, Event Type: start, Timestamp: 174.86185340327754 +Vehicle ID: 32, Event Type: start, Timestamp: 174.86417201217364 +Vehicle ID: 23, Event Type: end, Timestamp: 174.86738458619953 +Vehicle ID: 33, Event Type: start, Timestamp: 174.87724994755249 +Vehicle ID: 26, Event Type: end, Timestamp: 174.879773579044 +Vehicle ID: 25, Event Type: end, Timestamp: 174.88059360804525 +Vehicle ID: 34, Event Type: start, Timestamp: 174.8827352322805 +Vehicle ID: 35, Event Type: start, Timestamp: 174.88531512446687 +Vehicle ID: 36, Event Type: start, Timestamp: 174.89707138068368 +Vehicle ID: 37, Event Type: start, Timestamp: 174.90153774414387 +Vehicle ID: 38, Event Type: start, Timestamp: 174.90920951730558 +Vehicle ID: 27, Event Type: end, Timestamp: 174.91152231618614 +Vehicle ID: 39, Event Type: start, Timestamp: 174.91414247107062 +Vehicle ID: 40, Event Type: start, Timestamp: 174.919724365569 +Vehicle ID: 28, Event Type: end, Timestamp: 174.9198273608329 +Vehicle ID: 30, Event Type: end, Timestamp: 174.92239868267154 +Vehicle ID: 29, Event Type: end, Timestamp: 174.93129470509388 +Vehicle ID: 41, Event Type: start, Timestamp: 174.9336696701745 +Vehicle ID: 42, Event Type: start, Timestamp: 174.93831736713926 +Vehicle ID: 32, Event Type: end, Timestamp: 174.9417094375852 +Vehicle ID: 43, Event Type: start, Timestamp: 174.94172432642753 +Vehicle ID: 44, Event Type: start, Timestamp: 174.94401701259255 +Vehicle ID: 45, Event Type: start, Timestamp: 174.94488941739988 +Vehicle ID: 31, Event Type: end, Timestamp: 174.94515835920154 +Vehicle ID: 33, Event Type: end, Timestamp: 174.94546377198114 +Vehicle ID: 46, Event Type: start, Timestamp: 174.94703329396592 +Vehicle ID: 47, Event Type: start, Timestamp: 174.948663785669 +Vehicle ID: 48, Event Type: start, Timestamp: 174.9513795010547 +Vehicle ID: 34, Event Type: end, Timestamp: 174.95368438028902 +Vehicle ID: 36, Event Type: end, Timestamp: 174.96861819040862 +Vehicle ID: 35, Event Type: end, Timestamp: 174.97085675359654 +Vehicle ID: 49, Event Type: start, Timestamp: 174.97507139211132 +Vehicle ID: 50, Event Type: start, Timestamp: 174.97850334322783 +Vehicle ID: 37, Event Type: end, Timestamp: 174.97922172244913 +Vehicle ID: 51, Event Type: start, Timestamp: 174.979891384183 +Vehicle ID: 52, Event Type: start, Timestamp: 174.98469992304348 +Vehicle ID: 53, Event Type: start, Timestamp: 174.98485627775915 +Vehicle ID: 38, Event Type: end, Timestamp: 174.98684170965157 +Vehicle ID: 40, Event Type: end, Timestamp: 174.98957371431416 +Vehicle ID: 54, Event Type: start, Timestamp: 174.99314589937603 +Vehicle ID: 55, Event Type: start, Timestamp: 174.99433689284646 +Vehicle ID: 39, Event Type: end, Timestamp: 174.99561107522476 +Vehicle ID: 56, Event Type: start, Timestamp: 175.0025857077016 +Vehicle ID: 42, Event Type: end, Timestamp: 175.00807833039428 +Vehicle ID: 57, Event Type: start, Timestamp: 175.00880881450058 +Vehicle ID: 41, Event Type: end, Timestamp: 175.01453572835118 +Vehicle ID: 44, Event Type: end, Timestamp: 175.02119658683716 +Vehicle ID: 43, Event Type: end, Timestamp: 175.021475530569 +Vehicle ID: 45, Event Type: end, Timestamp: 175.02707913878228 +Vehicle ID: 58, Event Type: start, Timestamp: 175.02901167906484 +Vehicle ID: 46, Event Type: end, Timestamp: 175.02996644563984 +Vehicle ID: 59, Event Type: start, Timestamp: 175.03062856062823 +Vehicle ID: 60, Event Type: start, Timestamp: 175.0387799090098 +Vehicle ID: 47, Event Type: end, Timestamp: 175.0445507915872 +Vehicle ID: 48, Event Type: end, Timestamp: 175.04919390957008 +Vehicle ID: 61, Event Type: start, Timestamp: 175.052210753932 +Vehicle ID: 62, Event Type: start, Timestamp: 175.05471552223796 +Vehicle ID: 63, Event Type: start, Timestamp: 175.05987055430995 +Vehicle ID: 50, Event Type: end, Timestamp: 175.0606873062757 +Vehicle ID: 51, Event Type: end, Timestamp: 175.06537182858608 +Vehicle ID: 49, Event Type: end, Timestamp: 175.0658279218978 +Vehicle ID: 64, Event Type: start, Timestamp: 175.07186841566724 +Vehicle ID: 52, Event Type: end, Timestamp: 175.07340682806216 +Vehicle ID: 53, Event Type: end, Timestamp: 175.0815096733551 +Vehicle ID: 54, Event Type: end, Timestamp: 175.09221583725855 +Vehicle ID: 55, Event Type: end, Timestamp: 175.0966379443331 +Vehicle ID: 56, Event Type: end, Timestamp: 175.1012706119982 +Vehicle ID: 65, Event Type: start, Timestamp: 175.10357686866993 +Vehicle ID: 58, Event Type: end, Timestamp: 175.10919833700666 +Vehicle ID: 57, Event Type: end, Timestamp: 175.10991339467478 +Vehicle ID: 66, Event Type: start, Timestamp: 175.1130363736728 +Vehicle ID: 67, Event Type: start, Timestamp: 175.12771714955977 +Vehicle ID: 59, Event Type: end, Timestamp: 175.1283773440518 +Vehicle ID: 60, Event Type: end, Timestamp: 175.1317071179428 +Vehicle ID: 68, Event Type: start, Timestamp: 175.13196993375414 +Vehicle ID: 69, Event Type: start, Timestamp: 175.13698517274062 +Vehicle ID: 70, Event Type: start, Timestamp: 175.14167792195698 +Vehicle ID: 61, Event Type: end, Timestamp: 175.14509444370276 +Vehicle ID: 62, Event Type: end, Timestamp: 175.14673842484848 +Vehicle ID: 64, Event Type: end, Timestamp: 175.15119210434906 +Vehicle ID: 71, Event Type: start, Timestamp: 175.15337901084365 +Vehicle ID: 72, Event Type: start, Timestamp: 175.15381816989063 +Vehicle ID: 63, Event Type: end, Timestamp: 175.1591684499569 +Vehicle ID: 73, Event Type: start, Timestamp: 175.16020748947952 +Vehicle ID: 65, Event Type: end, Timestamp: 175.17974547939176 +Vehicle ID: 66, Event Type: end, Timestamp: 175.18951550663428 +Vehicle ID: 74, Event Type: start, Timestamp: 175.19044569946038 +Vehicle ID: 75, Event Type: start, Timestamp: 175.19767458980016 +Vehicle ID: 76, Event Type: start, Timestamp: 175.1986102903684 +Vehicle ID: 77, Event Type: start, Timestamp: 175.2026167645312 +Vehicle ID: 78, Event Type: start, Timestamp: 175.2031719609392 +Vehicle ID: 69, Event Type: end, Timestamp: 175.20719797755416 +Vehicle ID: 70, Event Type: end, Timestamp: 175.2094304962229 +Vehicle ID: 67, Event Type: end, Timestamp: 175.21137771492818 +Vehicle ID: 68, Event Type: end, Timestamp: 175.21359581250832 +Vehicle ID: 79, Event Type: start, Timestamp: 175.23016122723672 +Vehicle ID: 71, Event Type: end, Timestamp: 175.2315816439776 +Vehicle ID: 72, Event Type: end, Timestamp: 175.2368384509264 +Vehicle ID: 73, Event Type: end, Timestamp: 175.25352039084538 +Vehicle ID: 77, Event Type: end, Timestamp: 175.2706900365054 +Vehicle ID: 74, Event Type: end, Timestamp: 175.27415578781608 +Vehicle ID: 75, Event Type: end, Timestamp: 175.27832570292236 +Vehicle ID: 76, Event Type: end, Timestamp: 175.28005359181742 +Vehicle ID: 78, Event Type: end, Timestamp: 175.28326583443973 +Vehicle ID: 80, Event Type: start, Timestamp: 175.29661221538984 +Vehicle ID: 79, Event Type: end, Timestamp: 175.30003308269147 +Vehicle ID: 81, Event Type: start, Timestamp: 175.34368250497667 +Vehicle ID: 80, Event Type: end, Timestamp: 175.3778824764865 +Vehicle ID: 81, Event Type: end, Timestamp: 175.4252260708881 +Vehicle ID: 82, Event Type: start, Timestamp: 175.46037837305903 +Vehicle ID: 83, Event Type: start, Timestamp: 175.46052222166713 +Vehicle ID: 82, Event Type: end, Timestamp: 175.53325188100942 +Vehicle ID: 83, Event Type: end, Timestamp: 175.54367826263575 +Vehicle ID: 84, Event Type: start, Timestamp: 230.31699464988893 +Vehicle ID: 85, Event Type: start, Timestamp: 230.38122105558145 +Vehicle ID: 84, Event Type: end, Timestamp: 230.400712015743 +Vehicle ID: 86, Event Type: start, Timestamp: 230.40226909272388 +Vehicle ID: 85, Event Type: end, Timestamp: 230.45993832016816 +Vehicle ID: 87, Event Type: start, Timestamp: 230.4672460941959 +Vehicle ID: 86, Event Type: end, Timestamp: 230.4812438023532 +Vehicle ID: 88, Event Type: start, Timestamp: 230.48225442036946 +Vehicle ID: 89, Event Type: start, Timestamp: 230.50207883051863 +Vehicle ID: 90, Event Type: start, Timestamp: 230.5183230878082 +Vehicle ID: 91, Event Type: start, Timestamp: 230.5355851000607 +Vehicle ID: 87, Event Type: end, Timestamp: 230.54876144846347 +Vehicle ID: 88, Event Type: end, Timestamp: 230.55349441776687 +Vehicle ID: 92, Event Type: start, Timestamp: 230.5688705145037 +Vehicle ID: 89, Event Type: end, Timestamp: 230.57562609402922 +Vehicle ID: 93, Event Type: start, Timestamp: 230.58160044311697 +Vehicle ID: 94, Event Type: start, Timestamp: 230.58610825301363 +Vehicle ID: 90, Event Type: end, Timestamp: 230.59162257209675 +Vehicle ID: 91, Event Type: end, Timestamp: 230.61312266770852 +Vehicle ID: 95, Event Type: start, Timestamp: 230.6198256578149 +Vehicle ID: 96, Event Type: start, Timestamp: 230.63646275084912 +Vehicle ID: 92, Event Type: end, Timestamp: 230.64080212965018 +Vehicle ID: 97, Event Type: start, Timestamp: 230.6497762319377 +Vehicle ID: 94, Event Type: end, Timestamp: 230.6562969208555 +Vehicle ID: 98, Event Type: start, Timestamp: 230.65660952506357 +Vehicle ID: 93, Event Type: end, Timestamp: 230.65750113749993 +Vehicle ID: 99, Event Type: start, Timestamp: 230.66310949952853 +Vehicle ID: 95, Event Type: end, Timestamp: 230.6916291513093 +Vehicle ID: 100, Event Type: start, Timestamp: 230.69594059016174 +Vehicle ID: 96, Event Type: end, Timestamp: 230.70403842550803 +Vehicle ID: 101, Event Type: start, Timestamp: 230.71489087159074 +Vehicle ID: 102, Event Type: start, Timestamp: 230.71511322070518 +Vehicle ID: 103, Event Type: start, Timestamp: 230.72040518252354 +Vehicle ID: 97, Event Type: end, Timestamp: 230.72926803965038 +Vehicle ID: 98, Event Type: end, Timestamp: 230.73278120498279 +Vehicle ID: 99, Event Type: end, Timestamp: 230.74036178953537 +Vehicle ID: 104, Event Type: start, Timestamp: 230.74125407624283 +Vehicle ID: 105, Event Type: start, Timestamp: 230.75256512174298 +Vehicle ID: 106, Event Type: start, Timestamp: 230.75570827033178 +Vehicle ID: 107, Event Type: start, Timestamp: 230.75722883989434 +Vehicle ID: 108, Event Type: start, Timestamp: 230.764913399038 +Vehicle ID: 109, Event Type: start, Timestamp: 230.76834209832776 +Vehicle ID: 110, Event Type: start, Timestamp: 230.76961176117575 +Vehicle ID: 100, Event Type: end, Timestamp: 230.76964415021388 +Vehicle ID: 111, Event Type: start, Timestamp: 230.77033460825595 +Vehicle ID: 112, Event Type: start, Timestamp: 230.7721520361747 +Vehicle ID: 113, Event Type: start, Timestamp: 230.78545866248382 +Vehicle ID: 114, Event Type: start, Timestamp: 230.79128014513518 +Vehicle ID: 103, Event Type: end, Timestamp: 230.79283005786564 +Vehicle ID: 101, Event Type: end, Timestamp: 230.793835956205 +Vehicle ID: 102, Event Type: end, Timestamp: 230.794944816179 +Vehicle ID: 115, Event Type: start, Timestamp: 230.79939620906737 +Vehicle ID: 116, Event Type: start, Timestamp: 230.80647955549352 +Vehicle ID: 117, Event Type: start, Timestamp: 230.80753712676582 +Vehicle ID: 118, Event Type: start, Timestamp: 230.81174220522874 +Vehicle ID: 119, Event Type: start, Timestamp: 230.8156526261404 +Vehicle ID: 104, Event Type: end, Timestamp: 230.82334779858255 +Vehicle ID: 120, Event Type: start, Timestamp: 230.8247640419827 +Vehicle ID: 121, Event Type: start, Timestamp: 230.82802148149477 +Vehicle ID: 107, Event Type: end, Timestamp: 230.83016600158874 +Vehicle ID: 122, Event Type: start, Timestamp: 230.8302044777344 +Vehicle ID: 123, Event Type: start, Timestamp: 230.83601429142954 +Vehicle ID: 105, Event Type: end, Timestamp: 230.83648859123898 +Vehicle ID: 109, Event Type: end, Timestamp: 230.83689866102625 +Vehicle ID: 106, Event Type: end, Timestamp: 230.83956730065083 +Vehicle ID: 108, Event Type: end, Timestamp: 230.84813140353538 +Vehicle ID: 124, Event Type: start, Timestamp: 230.85312666968707 +Vehicle ID: 125, Event Type: start, Timestamp: 230.85355768685474 +Vehicle ID: 126, Event Type: start, Timestamp: 230.85473482997043 +Vehicle ID: 110, Event Type: end, Timestamp: 230.85732154489466 +Vehicle ID: 127, Event Type: start, Timestamp: 230.86341193405414 +Vehicle ID: 128, Event Type: start, Timestamp: 230.8680494725157 +Vehicle ID: 129, Event Type: start, Timestamp: 230.87069726537692 +Vehicle ID: 130, Event Type: start, Timestamp: 230.87289379133492 +Vehicle ID: 111, Event Type: end, Timestamp: 230.87399775780065 +Vehicle ID: 131, Event Type: start, Timestamp: 230.8765183210681 +Vehicle ID: 114, Event Type: end, Timestamp: 230.8792890123512 +Vehicle ID: 112, Event Type: end, Timestamp: 230.87963357177156 +Vehicle ID: 132, Event Type: start, Timestamp: 230.8797870115149 +Vehicle ID: 133, Event Type: start, Timestamp: 230.88383090229144 +Vehicle ID: 113, Event Type: end, Timestamp: 230.88487172208966 +Vehicle ID: 134, Event Type: start, Timestamp: 230.89174705460854 +Vehicle ID: 135, Event Type: start, Timestamp: 230.89361010481844 +Vehicle ID: 115, Event Type: end, Timestamp: 230.8937115558427 +Vehicle ID: 116, Event Type: end, Timestamp: 230.89464118909356 +Vehicle ID: 118, Event Type: end, Timestamp: 230.9195178433545 +Vehicle ID: 117, Event Type: end, Timestamp: 230.92124750240646 +Vehicle ID: 136, Event Type: start, Timestamp: 230.92255722997004 +Vehicle ID: 119, Event Type: end, Timestamp: 230.92527791281898 +Vehicle ID: 137, Event Type: start, Timestamp: 230.9257272552022 +Vehicle ID: 120, Event Type: end, Timestamp: 230.9294275119308 +Vehicle ID: 122, Event Type: end, Timestamp: 230.93171742250684 +Vehicle ID: 138, Event Type: start, Timestamp: 230.9352487775954 +Vehicle ID: 121, Event Type: end, Timestamp: 230.9398988150785 +Vehicle ID: 139, Event Type: start, Timestamp: 230.95830188398872 +Vehicle ID: 125, Event Type: end, Timestamp: 230.9590777954496 +Vehicle ID: 123, Event Type: end, Timestamp: 230.96578051308953 +Vehicle ID: 126, Event Type: end, Timestamp: 230.9702131084067 +Vehicle ID: 124, Event Type: end, Timestamp: 230.97516265780283 +Vehicle ID: 140, Event Type: start, Timestamp: 230.97679610705273 +Vehicle ID: 141, Event Type: start, Timestamp: 230.9785722368619 +Vehicle ID: 127, Event Type: end, Timestamp: 230.9791337572975 +Vehicle ID: 128, Event Type: end, Timestamp: 230.98461381499254 +Vehicle ID: 142, Event Type: start, Timestamp: 230.98675150467585 +Vehicle ID: 143, Event Type: start, Timestamp: 230.98915963215342 +Vehicle ID: 129, Event Type: end, Timestamp: 230.99273950857312 +Vehicle ID: 144, Event Type: start, Timestamp: 230.99916208570585 +Vehicle ID: 145, Event Type: start, Timestamp: 231.0016237860171 +Vehicle ID: 131, Event Type: end, Timestamp: 231.009488283568 +Vehicle ID: 130, Event Type: end, Timestamp: 231.01157602384194 +Vehicle ID: 146, Event Type: start, Timestamp: 231.0175607249591 +Vehicle ID: 133, Event Type: end, Timestamp: 231.0226077124859 +Vehicle ID: 132, Event Type: end, Timestamp: 231.02486139272176 +Vehicle ID: 134, Event Type: end, Timestamp: 231.02527502679007 +Vehicle ID: 147, Event Type: start, Timestamp: 231.03952374097352 +Vehicle ID: 148, Event Type: start, Timestamp: 231.03968372711643 +Vehicle ID: 135, Event Type: end, Timestamp: 231.04209517648565 +Vehicle ID: 149, Event Type: start, Timestamp: 231.04225078958828 +Vehicle ID: 136, Event Type: end, Timestamp: 231.04662533872212 +Vehicle ID: 150, Event Type: start, Timestamp: 231.04821544542165 +Vehicle ID: 137, Event Type: end, Timestamp: 231.05218767132845 +Vehicle ID: 140, Event Type: end, Timestamp: 231.05939424356228 +Vehicle ID: 139, Event Type: end, Timestamp: 231.0606535410036 +Vehicle ID: 138, Event Type: end, Timestamp: 231.06494710053113 +Vehicle ID: 151, Event Type: start, Timestamp: 231.06585736339144 +Vehicle ID: 152, Event Type: start, Timestamp: 231.0676277738247 +Vehicle ID: 153, Event Type: start, Timestamp: 231.0691868886443 +Vehicle ID: 154, Event Type: start, Timestamp: 231.07445372776115 +Vehicle ID: 141, Event Type: end, Timestamp: 231.0762537724666 +Vehicle ID: 155, Event Type: start, Timestamp: 231.07713620154422 +Vehicle ID: 142, Event Type: end, Timestamp: 231.08835574839722 +Vehicle ID: 143, Event Type: end, Timestamp: 231.09704902555453 +Vehicle ID: 145, Event Type: end, Timestamp: 231.09729870573813 +Vehicle ID: 146, Event Type: end, Timestamp: 231.10041959861059 +Vehicle ID: 144, Event Type: end, Timestamp: 231.10088995683842 +Vehicle ID: 156, Event Type: start, Timestamp: 231.10670203584098 +Vehicle ID: 157, Event Type: start, Timestamp: 231.11751215030608 +Vehicle ID: 147, Event Type: end, Timestamp: 231.12014591168816 +Vehicle ID: 158, Event Type: start, Timestamp: 231.12786850118823 +Vehicle ID: 148, Event Type: end, Timestamp: 231.13444120225427 +Vehicle ID: 152, Event Type: end, Timestamp: 231.13706748621246 +Vehicle ID: 159, Event Type: start, Timestamp: 231.1375731819826 +Vehicle ID: 160, Event Type: start, Timestamp: 231.1389801607213 +Vehicle ID: 150, Event Type: end, Timestamp: 231.14213921101717 +Vehicle ID: 149, Event Type: end, Timestamp: 231.1450433982419 +Vehicle ID: 151, Event Type: end, Timestamp: 231.14579350573476 +Vehicle ID: 161, Event Type: start, Timestamp: 231.1503056950781 +Vehicle ID: 153, Event Type: end, Timestamp: 231.1683939879819 +Vehicle ID: 162, Event Type: start, Timestamp: 231.17001520209521 +Vehicle ID: 154, Event Type: end, Timestamp: 231.17322833410464 +Vehicle ID: 155, Event Type: end, Timestamp: 231.17683778431245 +Vehicle ID: 157, Event Type: end, Timestamp: 231.18902802219617 +Vehicle ID: 156, Event Type: end, Timestamp: 231.19015133787423 +Vehicle ID: 158, Event Type: end, Timestamp: 231.20298088773606 +Vehicle ID: 163, Event Type: start, Timestamp: 231.20447659429283 +Vehicle ID: 159, Event Type: end, Timestamp: 231.2111840964192 +Vehicle ID: 160, Event Type: end, Timestamp: 231.2220501769797 +Vehicle ID: 164, Event Type: start, Timestamp: 231.22400983603586 +Vehicle ID: 161, Event Type: end, Timestamp: 231.23020598699654 +Vehicle ID: 162, Event Type: end, Timestamp: 231.2521793762277 +Vehicle ID: 163, Event Type: end, Timestamp: 231.2815050715338 +Vehicle ID: 164, Event Type: end, Timestamp: 231.29793945064733 +Vehicle ID: 165, Event Type: start, Timestamp: 231.37747764494148 +Vehicle ID: 166, Event Type: start, Timestamp: 231.37792907052878 +Vehicle ID: 166, Event Type: end, Timestamp: 231.45311951410733 +Vehicle ID: 165, Event Type: end, Timestamp: 231.45932491871778 +Vehicle ID: 167, Event Type: start, Timestamp: 286.2194921223134 +Vehicle ID: 167, Event Type: end, Timestamp: 286.29412957477655 +Vehicle ID: 168, Event Type: start, Timestamp: 286.44178929884526 +Vehicle ID: 169, Event Type: start, Timestamp: 286.49350485531335 +Vehicle ID: 168, Event Type: end, Timestamp: 286.5242777285386 +Vehicle ID: 170, Event Type: start, Timestamp: 286.55982495899104 +Vehicle ID: 171, Event Type: start, Timestamp: 286.5737618837678 +Vehicle ID: 169, Event Type: end, Timestamp: 286.57539737102877 +Vehicle ID: 172, Event Type: start, Timestamp: 286.5833061320696 +Vehicle ID: 173, Event Type: start, Timestamp: 286.584667305204 +Vehicle ID: 174, Event Type: start, Timestamp: 286.5859882780497 +Vehicle ID: 175, Event Type: start, Timestamp: 286.6085208060332 +Vehicle ID: 176, Event Type: start, Timestamp: 286.6096910100101 +Vehicle ID: 177, Event Type: start, Timestamp: 286.61366530001584 +Vehicle ID: 178, Event Type: start, Timestamp: 286.627828975104 +Vehicle ID: 170, Event Type: end, Timestamp: 286.6383807748922 +Vehicle ID: 171, Event Type: end, Timestamp: 286.65004719930283 +Vehicle ID: 179, Event Type: start, Timestamp: 286.65066998822596 +Vehicle ID: 180, Event Type: start, Timestamp: 286.65319529329906 +Vehicle ID: 181, Event Type: start, Timestamp: 286.6554656028064 +Vehicle ID: 173, Event Type: end, Timestamp: 286.6559467899076 +Vehicle ID: 182, Event Type: start, Timestamp: 286.6604099011891 +Vehicle ID: 172, Event Type: end, Timestamp: 286.66146816156754 +Vehicle ID: 174, Event Type: end, Timestamp: 286.66389209017206 +Vehicle ID: 176, Event Type: end, Timestamp: 286.6808677947616 +Vehicle ID: 175, Event Type: end, Timestamp: 286.683595874712 +Vehicle ID: 183, Event Type: start, Timestamp: 286.68832515573445 +Vehicle ID: 177, Event Type: end, Timestamp: 286.6940983130907 +Vehicle ID: 184, Event Type: start, Timestamp: 286.6970871931551 +Vehicle ID: 185, Event Type: start, Timestamp: 286.6982820492482 +Vehicle ID: 186, Event Type: start, Timestamp: 286.7035725156885 +Vehicle ID: 178, Event Type: end, Timestamp: 286.7075481350454 +Vehicle ID: 187, Event Type: start, Timestamp: 286.71376043144596 +Vehicle ID: 179, Event Type: end, Timestamp: 286.71988394114857 +Vehicle ID: 188, Event Type: start, Timestamp: 286.7207402487624 +Vehicle ID: 180, Event Type: end, Timestamp: 286.7271194833914 +Vehicle ID: 189, Event Type: start, Timestamp: 286.7276469526066 +Vehicle ID: 190, Event Type: start, Timestamp: 286.7330105552851 +Vehicle ID: 182, Event Type: end, Timestamp: 286.7349795628239 +Vehicle ID: 181, Event Type: end, Timestamp: 286.7366848329035 +Vehicle ID: 191, Event Type: start, Timestamp: 286.74050008534647 +Vehicle ID: 192, Event Type: start, Timestamp: 286.76075794178735 +Vehicle ID: 193, Event Type: start, Timestamp: 286.764206982875 +Vehicle ID: 183, Event Type: end, Timestamp: 286.7718167638346 +Vehicle ID: 185, Event Type: end, Timestamp: 286.7730192626854 +Vehicle ID: 184, Event Type: end, Timestamp: 286.7812333747083 +Vehicle ID: 194, Event Type: start, Timestamp: 286.7815450468443 +Vehicle ID: 186, Event Type: end, Timestamp: 286.7826187374835 +Vehicle ID: 195, Event Type: start, Timestamp: 286.7861492264353 +Vehicle ID: 196, Event Type: start, Timestamp: 286.7862304594865 +Vehicle ID: 187, Event Type: end, Timestamp: 286.7872023251981 +Vehicle ID: 197, Event Type: start, Timestamp: 286.79306275659076 +Vehicle ID: 188, Event Type: end, Timestamp: 286.7958859141819 +Vehicle ID: 198, Event Type: start, Timestamp: 286.7963417597705 +Vehicle ID: 199, Event Type: start, Timestamp: 286.80111011562667 +Vehicle ID: 190, Event Type: end, Timestamp: 286.80673096202304 +Vehicle ID: 200, Event Type: start, Timestamp: 286.8071850131104 +Vehicle ID: 189, Event Type: end, Timestamp: 286.81775369096357 +Vehicle ID: 191, Event Type: end, Timestamp: 286.82450263269936 +Vehicle ID: 201, Event Type: start, Timestamp: 286.82888901255234 +Vehicle ID: 202, Event Type: start, Timestamp: 286.83236991081645 +Vehicle ID: 203, Event Type: start, Timestamp: 286.83735420622617 +Vehicle ID: 204, Event Type: start, Timestamp: 286.83977427083056 +Vehicle ID: 192, Event Type: end, Timestamp: 286.844020208901 +Vehicle ID: 193, Event Type: end, Timestamp: 286.8451954656741 +Vehicle ID: 205, Event Type: start, Timestamp: 286.85171634706626 +Vehicle ID: 194, Event Type: end, Timestamp: 286.85275082519587 +Vehicle ID: 206, Event Type: start, Timestamp: 286.85309644458744 +Vehicle ID: 196, Event Type: end, Timestamp: 286.8599809636845 +Vehicle ID: 207, Event Type: start, Timestamp: 286.86825656052673 +Vehicle ID: 195, Event Type: end, Timestamp: 286.86829713155055 +Vehicle ID: 197, Event Type: end, Timestamp: 286.87175577753834 +Vehicle ID: 198, Event Type: end, Timestamp: 286.87810013456647 +Vehicle ID: 199, Event Type: end, Timestamp: 286.87908854983567 +Vehicle ID: 208, Event Type: start, Timestamp: 286.8921823798495 +Vehicle ID: 200, Event Type: end, Timestamp: 286.90037711074416 +Vehicle ID: 209, Event Type: start, Timestamp: 286.9014856985834 +Vehicle ID: 202, Event Type: end, Timestamp: 286.9036212379269 +Vehicle ID: 201, Event Type: end, Timestamp: 286.9057212671286 +Vehicle ID: 203, Event Type: end, Timestamp: 286.92065626455116 +Vehicle ID: 210, Event Type: start, Timestamp: 286.92119680460297 +Vehicle ID: 211, Event Type: start, Timestamp: 286.922885473014 +Vehicle ID: 204, Event Type: end, Timestamp: 286.92684004898433 +Vehicle ID: 205, Event Type: end, Timestamp: 286.9320836607679 +Vehicle ID: 212, Event Type: start, Timestamp: 286.9365810354252 +Vehicle ID: 207, Event Type: end, Timestamp: 286.9415310572411 +Vehicle ID: 206, Event Type: end, Timestamp: 286.9428107747935 +Vehicle ID: 213, Event Type: start, Timestamp: 286.94785598213247 +Vehicle ID: 214, Event Type: start, Timestamp: 286.94856504318983 +Vehicle ID: 215, Event Type: start, Timestamp: 286.9541736552477 +Vehicle ID: 216, Event Type: start, Timestamp: 286.959485737029 +Vehicle ID: 208, Event Type: end, Timestamp: 286.960682308553 +Vehicle ID: 217, Event Type: start, Timestamp: 286.96488604177534 +Vehicle ID: 218, Event Type: start, Timestamp: 286.9657179256789 +Vehicle ID: 219, Event Type: start, Timestamp: 286.97327657606456 +Vehicle ID: 209, Event Type: end, Timestamp: 286.97393780221546 +Vehicle ID: 220, Event Type: start, Timestamp: 286.9801900084323 +Vehicle ID: 221, Event Type: start, Timestamp: 286.98253299107853 +Vehicle ID: 211, Event Type: end, Timestamp: 286.9907160700781 +Vehicle ID: 210, Event Type: end, Timestamp: 286.99102196801203 +Vehicle ID: 222, Event Type: start, Timestamp: 287.01365294069086 +Vehicle ID: 213, Event Type: end, Timestamp: 287.01571947144345 +Vehicle ID: 212, Event Type: end, Timestamp: 287.01644403092064 +Vehicle ID: 223, Event Type: start, Timestamp: 287.0196286079015 +Vehicle ID: 224, Event Type: start, Timestamp: 287.0231137460224 +Vehicle ID: 214, Event Type: end, Timestamp: 287.0239206874935 +Vehicle ID: 225, Event Type: start, Timestamp: 287.024966527443 +Vehicle ID: 215, Event Type: end, Timestamp: 287.0268461127535 +Vehicle ID: 226, Event Type: start, Timestamp: 287.03362601675843 +Vehicle ID: 216, Event Type: end, Timestamp: 287.0412334781779 +Vehicle ID: 217, Event Type: end, Timestamp: 287.04777265658475 +Vehicle ID: 218, Event Type: end, Timestamp: 287.05438520415663 +Vehicle ID: 227, Event Type: start, Timestamp: 287.05976834966856 +Vehicle ID: 220, Event Type: end, Timestamp: 287.06236707325206 +Vehicle ID: 219, Event Type: end, Timestamp: 287.0653709364748 +Vehicle ID: 228, Event Type: start, Timestamp: 287.06606909881924 +Vehicle ID: 229, Event Type: start, Timestamp: 287.07024267644516 +Vehicle ID: 221, Event Type: end, Timestamp: 287.0719866488364 +Vehicle ID: 230, Event Type: start, Timestamp: 287.07655971052185 +Vehicle ID: 231, Event Type: start, Timestamp: 287.0867358546317 +Vehicle ID: 222, Event Type: end, Timestamp: 287.08970812667684 +Vehicle ID: 223, Event Type: end, Timestamp: 287.1020172454991 +Vehicle ID: 232, Event Type: start, Timestamp: 287.103128325687 +Vehicle ID: 225, Event Type: end, Timestamp: 287.1051686394002 +Vehicle ID: 233, Event Type: start, Timestamp: 287.10539205100855 +Vehicle ID: 224, Event Type: end, Timestamp: 287.10637084467714 +Vehicle ID: 226, Event Type: end, Timestamp: 287.11539679116805 +Vehicle ID: 234, Event Type: start, Timestamp: 287.1205600539623 +Vehicle ID: 227, Event Type: end, Timestamp: 287.1350635220183 +Vehicle ID: 235, Event Type: start, Timestamp: 287.14110857252905 +Vehicle ID: 236, Event Type: start, Timestamp: 287.14212285331797 +Vehicle ID: 228, Event Type: end, Timestamp: 287.14967450988536 +Vehicle ID: 230, Event Type: end, Timestamp: 287.15124274072997 +Vehicle ID: 229, Event Type: end, Timestamp: 287.1541320884282 +Vehicle ID: 237, Event Type: start, Timestamp: 287.1551195602872 +Vehicle ID: 231, Event Type: end, Timestamp: 287.1605549506472 +Vehicle ID: 238, Event Type: start, Timestamp: 287.16059343148095 +Vehicle ID: 239, Event Type: start, Timestamp: 287.1638358351743 +Vehicle ID: 240, Event Type: start, Timestamp: 287.1671248869115 +Vehicle ID: 233, Event Type: end, Timestamp: 287.1751916372011 +Vehicle ID: 232, Event Type: end, Timestamp: 287.1804693819087 +Vehicle ID: 234, Event Type: end, Timestamp: 287.18986043629104 +Vehicle ID: 241, Event Type: start, Timestamp: 287.20635650647756 +Vehicle ID: 235, Event Type: end, Timestamp: 287.2159900045529 +Vehicle ID: 236, Event Type: end, Timestamp: 287.2217282976418 +Vehicle ID: 237, Event Type: end, Timestamp: 287.232383569656 +Vehicle ID: 242, Event Type: start, Timestamp: 287.23561690287204 +Vehicle ID: 239, Event Type: end, Timestamp: 287.2368393594407 +Vehicle ID: 238, Event Type: end, Timestamp: 287.2428327049004 +Vehicle ID: 240, Event Type: end, Timestamp: 287.246795796001 +Vehicle ID: 243, Event Type: start, Timestamp: 287.270492091184 +Vehicle ID: 241, Event Type: end, Timestamp: 287.2774208931888 +Vehicle ID: 244, Event Type: start, Timestamp: 287.28168292176474 +Vehicle ID: 245, Event Type: start, Timestamp: 287.300018472397 +Vehicle ID: 242, Event Type: end, Timestamp: 287.3133148726396 +Vehicle ID: 243, Event Type: end, Timestamp: 287.3426751573648 +Vehicle ID: 246, Event Type: start, Timestamp: 287.35624709819547 +Vehicle ID: 244, Event Type: end, Timestamp: 287.3626193768367 +Vehicle ID: 245, Event Type: end, Timestamp: 287.36830114999225 +Vehicle ID: 247, Event Type: start, Timestamp: 287.4040363357504 +Vehicle ID: 246, Event Type: end, Timestamp: 287.43229571905374 +Vehicle ID: 247, Event Type: end, Timestamp: 287.47728732295826 +Vehicle ID: 248, Event Type: start, Timestamp: 287.5213624130537 +Vehicle ID: 249, Event Type: start, Timestamp: 287.5214639407839 +Vehicle ID: 249, Event Type: end, Timestamp: 287.59049600185 +Vehicle ID: 248, Event Type: end, Timestamp: 287.60131051536547 diff --git a/vehicle_average_times.txt b/vehicle_average_times.txt new file mode 100644 index 00000000..7d86c645 --- /dev/null +++ b/vehicle_average_times.txt @@ -0,0 +1,3 @@ +crane: 0.0 +hostler: 0.0018928077738425498 +truck: 0.013760017918324973 From a8794d3db32b70c11a62d7fa2af187f7f3ff90a9 Mon Sep 17 00:00:00 2001 From: "Bruchon, Matthew" Date: Mon, 2 Dec 2024 17:42:54 -0500 Subject: [PATCH 22/50] moved LIFTS to subdir --- .gitignore | 3 + avg_time_per_train.txt | 2 +- crane_work_log.txt | 1404 +++++++-------- hostler_work_log.txt | 1508 ++++++++--------- python/altrios/demos/sim_manager_demo.py | 2 +- python/{ => altrios}/lifts/__init__.py | 0 .../demos/starter_demo/train_consist_plan.csv | 0 python/{ => altrios}/lifts/dictionary.py | 0 python/{ => altrios}/lifts/distances.py | 0 python/{ => altrios}/lifts/lifts_simulator.py | 14 +- python/{ => altrios}/lifts/merged_baseline.py | 0 python/{ => altrios}/lifts/parameters.py | 2 +- python/{ => altrios}/lifts/schedule.py | 3 +- python/{ => altrios}/lifts/test.py | 0 python/{ => altrios}/lifts/utilities.py | 0 .../lifts/vehicle_performance.py | 0 python/lifts/avg_time_per_train.txt | 1 - .../crane_hostler_combination_results.xlsx | Bin 5603 -> 0 bytes python/lifts/crane_work_log.txt | 756 --------- python/lifts/hostler_work_log.txt | 774 --------- .../results/simulation_crane_2_hostler_3.xlsx | Bin 53916 -> 0 bytes .../results/simulation_crane_2_hostler_4.xlsx | Bin 53957 -> 0 bytes .../results/simulation_crane_3_hostler_1.xlsx | Bin 53851 -> 0 bytes .../results/simulation_crane_3_hostler_2.xlsx | Bin 53812 -> 0 bytes .../results/simulation_crane_3_hostler_3.xlsx | Bin 53810 -> 0 bytes .../results/simulation_crane_3_hostler_4.xlsx | Bin 53859 -> 0 bytes python/lifts/truck_work_log.txt | 516 ------ python/lifts/vehicle_average_times.txt | 3 - truck_work_log.txt | 996 +++++------ vehicle_average_times.txt | 4 +- 30 files changed, 1970 insertions(+), 4018 deletions(-) rename python/{ => altrios}/lifts/__init__.py (100%) rename python/{ => altrios}/lifts/demos/starter_demo/train_consist_plan.csv (100%) rename python/{ => altrios}/lifts/dictionary.py (100%) rename python/{ => altrios}/lifts/distances.py (100%) rename python/{ => altrios}/lifts/lifts_simulator.py (98%) rename python/{ => altrios}/lifts/merged_baseline.py (100%) rename python/{ => altrios}/lifts/parameters.py (99%) rename python/{ => altrios}/lifts/schedule.py (97%) rename python/{ => altrios}/lifts/test.py (100%) rename python/{ => altrios}/lifts/utilities.py (100%) rename python/{ => altrios}/lifts/vehicle_performance.py (100%) delete mode 100644 python/lifts/avg_time_per_train.txt delete mode 100644 python/lifts/crane_hostler_combination_results.xlsx delete mode 100644 python/lifts/crane_work_log.txt delete mode 100644 python/lifts/hostler_work_log.txt delete mode 100644 python/lifts/results/simulation_crane_2_hostler_3.xlsx delete mode 100644 python/lifts/results/simulation_crane_2_hostler_4.xlsx delete mode 100644 python/lifts/results/simulation_crane_3_hostler_1.xlsx delete mode 100644 python/lifts/results/simulation_crane_3_hostler_2.xlsx delete mode 100644 python/lifts/results/simulation_crane_3_hostler_3.xlsx delete mode 100644 python/lifts/results/simulation_crane_3_hostler_4.xlsx delete mode 100644 python/lifts/truck_work_log.txt delete mode 100644 python/lifts/vehicle_average_times.txt diff --git a/.gitignore b/.gitignore index ead9b2cc..a9e03c2c 100644 --- a/.gitignore +++ b/.gitignore @@ -1217,3 +1217,6 @@ code\ meetings altrios/resources/networks/Scenic - ALTRIOS Confidential.yaml altrios/dispatch/*.json activate.sh +*.xlsx +*.txt +*.txt diff --git a/avg_time_per_train.txt b/avg_time_per_train.txt index c49a2166..849cc94e 100644 --- a/avg_time_per_train.txt +++ b/avg_time_per_train.txt @@ -1 +1 @@ -17.47981863315145 \ No newline at end of file +17.43808370612796 \ No newline at end of file diff --git a/crane_work_log.txt b/crane_work_log.txt index efdfc523..30449505 100644 --- a/crane_work_log.txt +++ b/crane_work_log.txt @@ -1,207 +1,207 @@ -Vehicle ID: 3, Event Type: start, Timestamp: 174.2810811099409 -Vehicle ID: 3, Event Type: end, Timestamp: 174.2810811099409 -Vehicle ID: 3, Event Type: start, Timestamp: 174.28268979218822 -Vehicle ID: 3, Event Type: end, Timestamp: 174.28268979218822 -Vehicle ID: 3, Event Type: start, Timestamp: 174.47535372469952 -Vehicle ID: 3, Event Type: end, Timestamp: 174.47535372469952 -Vehicle ID: 3, Event Type: start, Timestamp: 174.4825116311807 -Vehicle ID: 3, Event Type: end, Timestamp: 174.4825116311807 -Vehicle ID: 3, Event Type: start, Timestamp: 174.4875712829535 -Vehicle ID: 3, Event Type: end, Timestamp: 174.4875712829535 -Vehicle ID: 3, Event Type: start, Timestamp: 174.5075471516836 -Vehicle ID: 3, Event Type: end, Timestamp: 174.5075471516836 -Vehicle ID: 3, Event Type: start, Timestamp: 174.58578236688152 -Vehicle ID: 3, Event Type: end, Timestamp: 174.58578236688152 -Vehicle ID: 3, Event Type: start, Timestamp: 174.60466618194823 -Vehicle ID: 3, Event Type: end, Timestamp: 174.60466618194823 -Vehicle ID: 3, Event Type: start, Timestamp: 174.610752074466 -Vehicle ID: 3, Event Type: end, Timestamp: 174.610752074466 -Vehicle ID: 3, Event Type: start, Timestamp: 174.641496556886 -Vehicle ID: 3, Event Type: end, Timestamp: 174.641496556886 -Vehicle ID: 3, Event Type: start, Timestamp: 174.6427067265711 -Vehicle ID: 3, Event Type: end, Timestamp: 174.6427067265711 -Vehicle ID: 3, Event Type: start, Timestamp: 174.65276278956236 -Vehicle ID: 3, Event Type: end, Timestamp: 174.65276278956236 -Vehicle ID: 3, Event Type: start, Timestamp: 174.66232655010518 -Vehicle ID: 3, Event Type: end, Timestamp: 174.66232655010518 -Vehicle ID: 3, Event Type: start, Timestamp: 174.66449155538277 -Vehicle ID: 3, Event Type: end, Timestamp: 174.66449155538277 -Vehicle ID: 3, Event Type: start, Timestamp: 174.6842730369544 -Vehicle ID: 3, Event Type: end, Timestamp: 174.6842730369544 -Vehicle ID: 3, Event Type: start, Timestamp: 174.69860643256507 -Vehicle ID: 3, Event Type: end, Timestamp: 174.69860643256507 -Vehicle ID: 3, Event Type: start, Timestamp: 174.70459646071723 -Vehicle ID: 3, Event Type: end, Timestamp: 174.70459646071723 -Vehicle ID: 3, Event Type: start, Timestamp: 174.71934934758505 -Vehicle ID: 3, Event Type: end, Timestamp: 174.71934934758505 -Vehicle ID: 3, Event Type: start, Timestamp: 174.72249676964316 -Vehicle ID: 3, Event Type: end, Timestamp: 174.72249676964316 -Vehicle ID: 3, Event Type: start, Timestamp: 174.72451510758023 -Vehicle ID: 3, Event Type: end, Timestamp: 174.72451510758023 -Vehicle ID: 3, Event Type: start, Timestamp: 174.76080585800494 -Vehicle ID: 3, Event Type: end, Timestamp: 174.76080585800494 -Vehicle ID: 3, Event Type: start, Timestamp: 174.76208971599385 -Vehicle ID: 3, Event Type: end, Timestamp: 174.76208971599385 -Vehicle ID: 3, Event Type: start, Timestamp: 174.76629786586113 -Vehicle ID: 3, Event Type: end, Timestamp: 174.76629786586113 -Vehicle ID: 3, Event Type: start, Timestamp: 174.77332599605248 -Vehicle ID: 3, Event Type: end, Timestamp: 174.77332599605248 -Vehicle ID: 3, Event Type: start, Timestamp: 174.78093665609822 -Vehicle ID: 3, Event Type: end, Timestamp: 174.78093665609822 -Vehicle ID: 3, Event Type: start, Timestamp: 174.78342586803905 -Vehicle ID: 3, Event Type: end, Timestamp: 174.78342586803905 -Vehicle ID: 3, Event Type: start, Timestamp: 174.81065185790777 -Vehicle ID: 3, Event Type: end, Timestamp: 174.81065185790777 -Vehicle ID: 3, Event Type: start, Timestamp: 174.8279274940461 -Vehicle ID: 3, Event Type: end, Timestamp: 174.8279274940461 -Vehicle ID: 3, Event Type: start, Timestamp: 174.8304935611614 -Vehicle ID: 3, Event Type: end, Timestamp: 174.8304935611614 -Vehicle ID: 3, Event Type: start, Timestamp: 174.8351297346581 -Vehicle ID: 3, Event Type: end, Timestamp: 174.8351297346581 -Vehicle ID: 3, Event Type: start, Timestamp: 174.84351075974314 -Vehicle ID: 3, Event Type: end, Timestamp: 174.84351075974314 -Vehicle ID: 3, Event Type: start, Timestamp: 174.84447204783694 -Vehicle ID: 3, Event Type: end, Timestamp: 174.84447204783694 -Vehicle ID: 3, Event Type: start, Timestamp: 174.85873612140853 -Vehicle ID: 3, Event Type: end, Timestamp: 174.85873612140853 -Vehicle ID: 3, Event Type: start, Timestamp: 174.8646455304948 -Vehicle ID: 3, Event Type: end, Timestamp: 174.8646455304948 -Vehicle ID: 3, Event Type: start, Timestamp: 174.86716561487376 -Vehicle ID: 3, Event Type: end, Timestamp: 174.86716561487376 -Vehicle ID: 3, Event Type: start, Timestamp: 174.87879709722236 -Vehicle ID: 3, Event Type: end, Timestamp: 174.87879709722236 -Vehicle ID: 3, Event Type: start, Timestamp: 174.88271735729327 -Vehicle ID: 3, Event Type: end, Timestamp: 174.88271735729327 -Vehicle ID: 3, Event Type: start, Timestamp: 174.8905777601963 -Vehicle ID: 3, Event Type: end, Timestamp: 174.8905777601963 -Vehicle ID: 3, Event Type: start, Timestamp: 174.89465126549422 -Vehicle ID: 3, Event Type: end, Timestamp: 174.89465126549422 -Vehicle ID: 3, Event Type: start, Timestamp: 174.90062493548228 -Vehicle ID: 3, Event Type: end, Timestamp: 174.90062493548228 -Vehicle ID: 3, Event Type: start, Timestamp: 174.91481178222327 -Vehicle ID: 3, Event Type: end, Timestamp: 174.91481178222327 -Vehicle ID: 3, Event Type: start, Timestamp: 174.9196128463235 -Vehicle ID: 3, Event Type: end, Timestamp: 174.9196128463235 -Vehicle ID: 3, Event Type: start, Timestamp: 174.92233085074517 -Vehicle ID: 3, Event Type: end, Timestamp: 174.92233085074517 -Vehicle ID: 3, Event Type: start, Timestamp: 174.92508675154414 -Vehicle ID: 3, Event Type: end, Timestamp: 174.92508675154414 -Vehicle ID: 3, Event Type: start, Timestamp: 174.92690599588406 -Vehicle ID: 3, Event Type: end, Timestamp: 174.92690599588406 -Vehicle ID: 3, Event Type: start, Timestamp: 174.92907673905395 -Vehicle ID: 3, Event Type: end, Timestamp: 174.92907673905395 -Vehicle ID: 3, Event Type: start, Timestamp: 174.93010336276376 -Vehicle ID: 3, Event Type: end, Timestamp: 174.93010336276376 -Vehicle ID: 3, Event Type: start, Timestamp: 174.932948469298 -Vehicle ID: 3, Event Type: end, Timestamp: 174.932948469298 -Vehicle ID: 3, Event Type: start, Timestamp: 174.95643371952448 -Vehicle ID: 3, Event Type: end, Timestamp: 174.95643371952448 -Vehicle ID: 3, Event Type: start, Timestamp: 174.95999447295222 -Vehicle ID: 3, Event Type: end, Timestamp: 174.95999447295222 -Vehicle ID: 3, Event Type: start, Timestamp: 174.9614823883396 -Vehicle ID: 3, Event Type: end, Timestamp: 174.9614823883396 -Vehicle ID: 3, Event Type: start, Timestamp: 174.96592695032882 -Vehicle ID: 3, Event Type: end, Timestamp: 174.96592695032882 -Vehicle ID: 3, Event Type: start, Timestamp: 174.96595641191948 -Vehicle ID: 3, Event Type: end, Timestamp: 174.96595641191948 -Vehicle ID: 3, Event Type: start, Timestamp: 174.97472398411293 -Vehicle ID: 3, Event Type: end, Timestamp: 174.97472398411293 -Vehicle ID: 3, Event Type: start, Timestamp: 174.9753245470635 -Vehicle ID: 3, Event Type: end, Timestamp: 174.9753245470635 -Vehicle ID: 3, Event Type: start, Timestamp: 174.9828149817809 -Vehicle ID: 3, Event Type: end, Timestamp: 174.9828149817809 -Vehicle ID: 3, Event Type: start, Timestamp: 174.99099326754603 -Vehicle ID: 3, Event Type: end, Timestamp: 174.99099326754603 -Vehicle ID: 3, Event Type: start, Timestamp: 175.00976794251002 -Vehicle ID: 3, Event Type: end, Timestamp: 175.00976794251002 -Vehicle ID: 3, Event Type: start, Timestamp: 175.01233327114176 -Vehicle ID: 3, Event Type: end, Timestamp: 175.01233327114176 -Vehicle ID: 3, Event Type: start, Timestamp: 175.01947438490797 -Vehicle ID: 3, Event Type: end, Timestamp: 175.01947438490797 -Vehicle ID: 3, Event Type: start, Timestamp: 175.03348852150702 -Vehicle ID: 3, Event Type: end, Timestamp: 175.03348852150702 -Vehicle ID: 3, Event Type: start, Timestamp: 175.03544352395033 -Vehicle ID: 3, Event Type: end, Timestamp: 175.03544352395033 -Vehicle ID: 3, Event Type: start, Timestamp: 175.04075999001896 -Vehicle ID: 3, Event Type: end, Timestamp: 175.04075999001896 -Vehicle ID: 3, Event Type: start, Timestamp: 175.0518569895815 -Vehicle ID: 3, Event Type: end, Timestamp: 175.0518569895815 -Vehicle ID: 3, Event Type: start, Timestamp: 175.08500368417586 -Vehicle ID: 3, Event Type: end, Timestamp: 175.08500368417586 -Vehicle ID: 3, Event Type: start, Timestamp: 175.09476839687287 -Vehicle ID: 3, Event Type: end, Timestamp: 175.09476839687287 -Vehicle ID: 3, Event Type: start, Timestamp: 175.10906211025483 -Vehicle ID: 3, Event Type: end, Timestamp: 175.10906211025483 -Vehicle ID: 3, Event Type: start, Timestamp: 175.11319094964128 -Vehicle ID: 3, Event Type: end, Timestamp: 175.11319094964128 -Vehicle ID: 3, Event Type: start, Timestamp: 175.11797960349614 -Vehicle ID: 3, Event Type: end, Timestamp: 175.11797960349614 -Vehicle ID: 3, Event Type: start, Timestamp: 175.12254529087008 -Vehicle ID: 3, Event Type: end, Timestamp: 175.12254529087008 -Vehicle ID: 3, Event Type: start, Timestamp: 175.1339043164946 -Vehicle ID: 3, Event Type: end, Timestamp: 175.1339043164946 -Vehicle ID: 3, Event Type: start, Timestamp: 175.13485893021883 -Vehicle ID: 3, Event Type: end, Timestamp: 175.13485893021883 -Vehicle ID: 3, Event Type: start, Timestamp: 175.14177742442584 -Vehicle ID: 3, Event Type: end, Timestamp: 175.14177742442584 -Vehicle ID: 3, Event Type: start, Timestamp: 175.17193123752045 -Vehicle ID: 3, Event Type: end, Timestamp: 175.17193123752045 -Vehicle ID: 3, Event Type: start, Timestamp: 175.17905309520847 -Vehicle ID: 3, Event Type: end, Timestamp: 175.17905309520847 -Vehicle ID: 3, Event Type: start, Timestamp: 175.17977384430614 -Vehicle ID: 3, Event Type: end, Timestamp: 175.17977384430614 -Vehicle ID: 3, Event Type: start, Timestamp: 175.18374598774682 -Vehicle ID: 3, Event Type: end, Timestamp: 175.18374598774682 -Vehicle ID: 3, Event Type: start, Timestamp: 175.18416589520018 -Vehicle ID: 3, Event Type: end, Timestamp: 175.18416589520018 -Vehicle ID: 3, Event Type: start, Timestamp: 175.21140781854524 -Vehicle ID: 3, Event Type: end, Timestamp: 175.21140781854524 -Vehicle ID: 3, Event Type: start, Timestamp: 175.27765311224442 -Vehicle ID: 3, Event Type: end, Timestamp: 175.27765311224442 -Vehicle ID: 3, Event Type: start, Timestamp: 175.3237013172593 -Vehicle ID: 3, Event Type: end, Timestamp: 175.3237013172593 -Vehicle ID: 3, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 3, Event Type: end, Timestamp: 175.4411026334334 -Vehicle ID: 3, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 3, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 3, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 3, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 3, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 3, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 3, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 3, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 3, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 3, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 3, Event Type: start, Timestamp: 178.47520739359268 -Vehicle ID: 3, Event Type: start, Timestamp: 178.68148692209923 -Vehicle ID: 3, Event Type: start, Timestamp: 178.6939408971703 -Vehicle ID: 3, Event Type: start, Timestamp: 178.72320629361158 -Vehicle ID: 3, Event Type: start, Timestamp: 178.72755865665314 -Vehicle ID: 3, Event Type: start, Timestamp: 178.7290960024437 -Vehicle ID: 3, Event Type: start, Timestamp: 178.7826853181713 -Vehicle ID: 3, Event Type: start, Timestamp: 178.79615823210023 -Vehicle ID: 3, Event Type: start, Timestamp: 178.80013180768074 -Vehicle ID: 3, Event Type: start, Timestamp: 178.86685199903326 -Vehicle ID: 3, Event Type: start, Timestamp: 181.63945737290967 -Vehicle ID: 3, Event Type: start, Timestamp: 181.86762744395367 -Vehicle ID: 3, Event Type: start, Timestamp: 181.87424231089636 -Vehicle ID: 3, Event Type: start, Timestamp: 181.9748502225374 -Vehicle ID: 3, Event Type: start, Timestamp: 182.0461712533577 -Vehicle ID: 3, Event Type: start, Timestamp: 182.1164714100666 -Vehicle ID: 3, Event Type: start, Timestamp: 182.12048985610326 -Vehicle ID: 3, Event Type: start, Timestamp: 182.14896821151981 -Vehicle ID: 3, Event Type: start, Timestamp: 182.16672964417788 -Vehicle ID: 3, Event Type: start, Timestamp: 182.19787725508147 -Vehicle ID: 3, Event Type: start, Timestamp: 184.82132652817916 -Vehicle ID: 3, Event Type: start, Timestamp: 185.0147257779154 -Vehicle ID: 3, Event Type: start, Timestamp: 185.2259101182826 -Vehicle ID: 3, Event Type: start, Timestamp: 185.24099632459826 -Vehicle ID: 3, Event Type: start, Timestamp: 185.26257275934168 -Vehicle ID: 3, Event Type: start, Timestamp: 185.3375046621233 -Vehicle ID: 3, Event Type: start, Timestamp: 185.3745732277629 -Vehicle ID: 3, Event Type: start, Timestamp: 185.39869732482578 -Vehicle ID: 3, Event Type: start, Timestamp: 185.49165765897274 -Vehicle ID: 3, Event Type: start, Timestamp: 185.72243038742434 +Vehicle ID: 3, Event Type: start, Timestamp: 174.19744645094642 +Vehicle ID: 3, Event Type: end, Timestamp: 174.19744645094642 +Vehicle ID: 3, Event Type: start, Timestamp: 174.40920793733576 +Vehicle ID: 3, Event Type: end, Timestamp: 174.40920793733576 +Vehicle ID: 3, Event Type: start, Timestamp: 174.46962757929793 +Vehicle ID: 3, Event Type: end, Timestamp: 174.46962757929793 +Vehicle ID: 3, Event Type: start, Timestamp: 174.4917878527149 +Vehicle ID: 3, Event Type: end, Timestamp: 174.4917878527149 +Vehicle ID: 3, Event Type: start, Timestamp: 174.5074285257341 +Vehicle ID: 3, Event Type: end, Timestamp: 174.5074285257341 +Vehicle ID: 3, Event Type: start, Timestamp: 174.53099703647402 +Vehicle ID: 3, Event Type: end, Timestamp: 174.53099703647402 +Vehicle ID: 3, Event Type: start, Timestamp: 174.53952787914648 +Vehicle ID: 3, Event Type: end, Timestamp: 174.53952787914648 +Vehicle ID: 3, Event Type: start, Timestamp: 174.54609629221974 +Vehicle ID: 3, Event Type: end, Timestamp: 174.54609629221974 +Vehicle ID: 3, Event Type: start, Timestamp: 174.55547801155282 +Vehicle ID: 3, Event Type: end, Timestamp: 174.55547801155282 +Vehicle ID: 3, Event Type: start, Timestamp: 174.55808262882783 +Vehicle ID: 3, Event Type: end, Timestamp: 174.55808262882783 +Vehicle ID: 3, Event Type: start, Timestamp: 174.5635273647671 +Vehicle ID: 3, Event Type: end, Timestamp: 174.5635273647671 +Vehicle ID: 3, Event Type: start, Timestamp: 174.56704169084028 +Vehicle ID: 3, Event Type: end, Timestamp: 174.56704169084028 +Vehicle ID: 3, Event Type: start, Timestamp: 174.57073015245615 +Vehicle ID: 3, Event Type: end, Timestamp: 174.57073015245615 +Vehicle ID: 3, Event Type: start, Timestamp: 174.5810379925763 +Vehicle ID: 3, Event Type: end, Timestamp: 174.5810379925763 +Vehicle ID: 3, Event Type: start, Timestamp: 174.58581529188942 +Vehicle ID: 3, Event Type: end, Timestamp: 174.58581529188942 +Vehicle ID: 3, Event Type: start, Timestamp: 174.60925288557775 +Vehicle ID: 3, Event Type: end, Timestamp: 174.60925288557775 +Vehicle ID: 3, Event Type: start, Timestamp: 174.6219183453141 +Vehicle ID: 3, Event Type: end, Timestamp: 174.6219183453141 +Vehicle ID: 3, Event Type: start, Timestamp: 174.6337482952235 +Vehicle ID: 3, Event Type: end, Timestamp: 174.6337482952235 +Vehicle ID: 3, Event Type: start, Timestamp: 174.63648281070164 +Vehicle ID: 3, Event Type: end, Timestamp: 174.63648281070164 +Vehicle ID: 3, Event Type: start, Timestamp: 174.64650460459794 +Vehicle ID: 3, Event Type: end, Timestamp: 174.64650460459794 +Vehicle ID: 3, Event Type: start, Timestamp: 174.6479950480359 +Vehicle ID: 3, Event Type: end, Timestamp: 174.6479950480359 +Vehicle ID: 3, Event Type: start, Timestamp: 174.64809003331777 +Vehicle ID: 3, Event Type: end, Timestamp: 174.64809003331777 +Vehicle ID: 3, Event Type: start, Timestamp: 174.65030501478043 +Vehicle ID: 3, Event Type: end, Timestamp: 174.65030501478043 +Vehicle ID: 3, Event Type: start, Timestamp: 174.65798512654354 +Vehicle ID: 3, Event Type: end, Timestamp: 174.65798512654354 +Vehicle ID: 3, Event Type: start, Timestamp: 174.65821449539442 +Vehicle ID: 3, Event Type: end, Timestamp: 174.65821449539442 +Vehicle ID: 3, Event Type: start, Timestamp: 174.66159541215922 +Vehicle ID: 3, Event Type: end, Timestamp: 174.66159541215922 +Vehicle ID: 3, Event Type: start, Timestamp: 174.6688858173057 +Vehicle ID: 3, Event Type: end, Timestamp: 174.6688858173057 +Vehicle ID: 3, Event Type: start, Timestamp: 174.67104467457068 +Vehicle ID: 3, Event Type: end, Timestamp: 174.67104467457068 +Vehicle ID: 3, Event Type: start, Timestamp: 174.6732036486748 +Vehicle ID: 3, Event Type: end, Timestamp: 174.6732036486748 +Vehicle ID: 3, Event Type: start, Timestamp: 174.68508410251187 +Vehicle ID: 3, Event Type: end, Timestamp: 174.68508410251187 +Vehicle ID: 3, Event Type: start, Timestamp: 174.68563486714666 +Vehicle ID: 3, Event Type: end, Timestamp: 174.68563486714666 +Vehicle ID: 3, Event Type: start, Timestamp: 174.6925343834399 +Vehicle ID: 3, Event Type: end, Timestamp: 174.6925343834399 +Vehicle ID: 3, Event Type: start, Timestamp: 174.70261313590242 +Vehicle ID: 3, Event Type: end, Timestamp: 174.70261313590242 +Vehicle ID: 3, Event Type: start, Timestamp: 174.70743363596702 +Vehicle ID: 3, Event Type: end, Timestamp: 174.70743363596702 +Vehicle ID: 3, Event Type: start, Timestamp: 174.7108157446955 +Vehicle ID: 3, Event Type: end, Timestamp: 174.7108157446955 +Vehicle ID: 3, Event Type: start, Timestamp: 174.72123982982376 +Vehicle ID: 3, Event Type: end, Timestamp: 174.72123982982376 +Vehicle ID: 3, Event Type: start, Timestamp: 174.72285214011058 +Vehicle ID: 3, Event Type: end, Timestamp: 174.72285214011058 +Vehicle ID: 3, Event Type: start, Timestamp: 174.74433501400816 +Vehicle ID: 3, Event Type: end, Timestamp: 174.74433501400816 +Vehicle ID: 3, Event Type: start, Timestamp: 174.74503253450166 +Vehicle ID: 3, Event Type: end, Timestamp: 174.74503253450166 +Vehicle ID: 3, Event Type: start, Timestamp: 174.7506068392451 +Vehicle ID: 3, Event Type: end, Timestamp: 174.7506068392451 +Vehicle ID: 3, Event Type: start, Timestamp: 174.75339521831725 +Vehicle ID: 3, Event Type: end, Timestamp: 174.75339521831725 +Vehicle ID: 3, Event Type: start, Timestamp: 174.76930184843837 +Vehicle ID: 3, Event Type: end, Timestamp: 174.76930184843837 +Vehicle ID: 3, Event Type: start, Timestamp: 174.77838926306353 +Vehicle ID: 3, Event Type: end, Timestamp: 174.77838926306353 +Vehicle ID: 3, Event Type: start, Timestamp: 174.77965102279464 +Vehicle ID: 3, Event Type: end, Timestamp: 174.77965102279464 +Vehicle ID: 3, Event Type: start, Timestamp: 174.78047005554035 +Vehicle ID: 3, Event Type: end, Timestamp: 174.78047005554035 +Vehicle ID: 3, Event Type: start, Timestamp: 174.79051325875793 +Vehicle ID: 3, Event Type: end, Timestamp: 174.79051325875793 +Vehicle ID: 3, Event Type: start, Timestamp: 174.79266452444017 +Vehicle ID: 3, Event Type: end, Timestamp: 174.79266452444017 +Vehicle ID: 3, Event Type: start, Timestamp: 174.79800349145364 +Vehicle ID: 3, Event Type: end, Timestamp: 174.79800349145364 +Vehicle ID: 3, Event Type: start, Timestamp: 174.81022825262713 +Vehicle ID: 3, Event Type: end, Timestamp: 174.81022825262713 +Vehicle ID: 3, Event Type: start, Timestamp: 174.81805583935017 +Vehicle ID: 3, Event Type: end, Timestamp: 174.81805583935017 +Vehicle ID: 3, Event Type: start, Timestamp: 174.84507140015327 +Vehicle ID: 3, Event Type: end, Timestamp: 174.84507140015327 +Vehicle ID: 3, Event Type: start, Timestamp: 174.85656066244738 +Vehicle ID: 3, Event Type: end, Timestamp: 174.85656066244738 +Vehicle ID: 3, Event Type: start, Timestamp: 174.85996803540502 +Vehicle ID: 3, Event Type: end, Timestamp: 174.85996803540502 +Vehicle ID: 3, Event Type: start, Timestamp: 174.87827711529337 +Vehicle ID: 3, Event Type: end, Timestamp: 174.87827711529337 +Vehicle ID: 3, Event Type: start, Timestamp: 174.88969376176794 +Vehicle ID: 3, Event Type: end, Timestamp: 174.88969376176794 +Vehicle ID: 3, Event Type: start, Timestamp: 174.89325195435796 +Vehicle ID: 3, Event Type: end, Timestamp: 174.89325195435796 +Vehicle ID: 3, Event Type: start, Timestamp: 174.90509261259018 +Vehicle ID: 3, Event Type: end, Timestamp: 174.90509261259018 +Vehicle ID: 3, Event Type: start, Timestamp: 174.91036525763096 +Vehicle ID: 3, Event Type: end, Timestamp: 174.91036525763096 +Vehicle ID: 3, Event Type: start, Timestamp: 174.91282636181623 +Vehicle ID: 3, Event Type: end, Timestamp: 174.91282636181623 +Vehicle ID: 3, Event Type: start, Timestamp: 174.9168746886371 +Vehicle ID: 3, Event Type: end, Timestamp: 174.9168746886371 +Vehicle ID: 3, Event Type: start, Timestamp: 174.95221896319984 +Vehicle ID: 3, Event Type: end, Timestamp: 174.95221896319984 +Vehicle ID: 3, Event Type: start, Timestamp: 174.9569857697495 +Vehicle ID: 3, Event Type: end, Timestamp: 174.9569857697495 +Vehicle ID: 3, Event Type: start, Timestamp: 174.9605074648173 +Vehicle ID: 3, Event Type: end, Timestamp: 174.9605074648173 +Vehicle ID: 3, Event Type: start, Timestamp: 174.9626422831407 +Vehicle ID: 3, Event Type: end, Timestamp: 174.9626422831407 +Vehicle ID: 3, Event Type: start, Timestamp: 174.9793933115021 +Vehicle ID: 3, Event Type: end, Timestamp: 174.9793933115021 +Vehicle ID: 3, Event Type: start, Timestamp: 174.9910291808733 +Vehicle ID: 3, Event Type: end, Timestamp: 174.9910291808733 +Vehicle ID: 3, Event Type: start, Timestamp: 174.99839745265172 +Vehicle ID: 3, Event Type: end, Timestamp: 174.99839745265172 +Vehicle ID: 3, Event Type: start, Timestamp: 175.05002342225677 +Vehicle ID: 3, Event Type: end, Timestamp: 175.05002342225677 +Vehicle ID: 3, Event Type: start, Timestamp: 175.0513653207362 +Vehicle ID: 3, Event Type: end, Timestamp: 175.0513653207362 +Vehicle ID: 3, Event Type: start, Timestamp: 175.0530960600153 +Vehicle ID: 3, Event Type: end, Timestamp: 175.0530960600153 +Vehicle ID: 3, Event Type: start, Timestamp: 175.0764771590837 +Vehicle ID: 3, Event Type: end, Timestamp: 175.0764771590837 +Vehicle ID: 3, Event Type: start, Timestamp: 175.08342553817778 +Vehicle ID: 3, Event Type: end, Timestamp: 175.08342553817778 +Vehicle ID: 3, Event Type: start, Timestamp: 175.08715946906028 +Vehicle ID: 3, Event Type: end, Timestamp: 175.08715946906028 +Vehicle ID: 3, Event Type: start, Timestamp: 175.13000725805804 +Vehicle ID: 3, Event Type: end, Timestamp: 175.13000725805804 +Vehicle ID: 3, Event Type: start, Timestamp: 175.13720870016778 +Vehicle ID: 3, Event Type: end, Timestamp: 175.13720870016778 +Vehicle ID: 3, Event Type: start, Timestamp: 175.17462427221562 +Vehicle ID: 3, Event Type: end, Timestamp: 175.17462427221562 +Vehicle ID: 3, Event Type: start, Timestamp: 175.18053080395498 +Vehicle ID: 3, Event Type: end, Timestamp: 175.18053080395498 +Vehicle ID: 3, Event Type: start, Timestamp: 175.18992297134864 +Vehicle ID: 3, Event Type: end, Timestamp: 175.18992297134864 +Vehicle ID: 3, Event Type: start, Timestamp: 175.20270193836342 +Vehicle ID: 3, Event Type: end, Timestamp: 175.20270193836342 +Vehicle ID: 3, Event Type: start, Timestamp: 175.20683344330385 +Vehicle ID: 3, Event Type: end, Timestamp: 175.20683344330385 +Vehicle ID: 3, Event Type: start, Timestamp: 175.21070571441697 +Vehicle ID: 3, Event Type: end, Timestamp: 175.21070571441697 +Vehicle ID: 3, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 3, Event Type: end, Timestamp: 175.23812273242896 +Vehicle ID: 3, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 3, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 3, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 3, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 3, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 3, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 3, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 3, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 3, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 3, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 3, Event Type: start, Timestamp: 178.45602476453286 +Vehicle ID: 3, Event Type: start, Timestamp: 178.46801240887345 +Vehicle ID: 3, Event Type: start, Timestamp: 178.51023841880027 +Vehicle ID: 3, Event Type: start, Timestamp: 178.5283503774646 +Vehicle ID: 3, Event Type: start, Timestamp: 178.5340579131613 +Vehicle ID: 3, Event Type: start, Timestamp: 178.55541042143625 +Vehicle ID: 3, Event Type: start, Timestamp: 178.64204277056206 +Vehicle ID: 3, Event Type: start, Timestamp: 178.68777257303827 +Vehicle ID: 3, Event Type: start, Timestamp: 178.7133967167643 +Vehicle ID: 3, Event Type: start, Timestamp: 178.87961969133502 +Vehicle ID: 3, Event Type: start, Timestamp: 181.58416861424436 +Vehicle ID: 3, Event Type: start, Timestamp: 181.62941947168153 +Vehicle ID: 3, Event Type: start, Timestamp: 181.77575198691187 +Vehicle ID: 3, Event Type: start, Timestamp: 181.82834254489018 +Vehicle ID: 3, Event Type: start, Timestamp: 181.89822964176756 +Vehicle ID: 3, Event Type: start, Timestamp: 181.91009241018918 +Vehicle ID: 3, Event Type: start, Timestamp: 181.92428603733813 +Vehicle ID: 3, Event Type: start, Timestamp: 182.03151057348845 +Vehicle ID: 3, Event Type: start, Timestamp: 182.05561491566445 +Vehicle ID: 3, Event Type: start, Timestamp: 182.15897146781535 +Vehicle ID: 3, Event Type: start, Timestamp: 184.71343470613468 +Vehicle ID: 3, Event Type: start, Timestamp: 184.94715329070917 +Vehicle ID: 3, Event Type: start, Timestamp: 185.02231315261702 +Vehicle ID: 3, Event Type: start, Timestamp: 185.05534176622638 +Vehicle ID: 3, Event Type: start, Timestamp: 185.30527084646502 +Vehicle ID: 3, Event Type: start, Timestamp: 185.31374242832138 +Vehicle ID: 3, Event Type: start, Timestamp: 185.32345768544764 +Vehicle ID: 3, Event Type: start, Timestamp: 185.33250274675808 +Vehicle ID: 3, Event Type: start, Timestamp: 185.3701513860044 +Vehicle ID: 3, Event Type: start, Timestamp: 185.58249798591567 Vehicle ID: 3, Event Type: start, Timestamp: 189.0 Vehicle ID: 3, Event Type: start, Timestamp: 189.0 Vehicle ID: 3, Event Type: start, Timestamp: 189.0 @@ -212,240 +212,240 @@ Vehicle ID: 3, Event Type: start, Timestamp: 189.0 Vehicle ID: 3, Event Type: start, Timestamp: 189.0 Vehicle ID: 3, Event Type: start, Timestamp: 189.0 Vehicle ID: 3, Event Type: start, Timestamp: 189.0 -Vehicle ID: 3, Event Type: start, Timestamp: 192.17569842504352 -Vehicle ID: 3, Event Type: start, Timestamp: 192.18451207318148 -Vehicle ID: 3, Event Type: start, Timestamp: 192.22344159900777 -Vehicle ID: 3, Event Type: start, Timestamp: 192.2248438703888 -Vehicle ID: 3, Event Type: start, Timestamp: 192.27714602822522 -Vehicle ID: 3, Event Type: start, Timestamp: 192.27850546087694 -Vehicle ID: 3, Event Type: start, Timestamp: 192.28075809350048 -Vehicle ID: 3, Event Type: start, Timestamp: 192.34789020015816 -Vehicle ID: 3, Event Type: start, Timestamp: 192.47401993578748 -Vehicle ID: 3, Event Type: start, Timestamp: 192.66460415143888 -Vehicle ID: 3, Event Type: start, Timestamp: 195.34871530647473 -Vehicle ID: 3, Event Type: start, Timestamp: 195.4798567956318 -Vehicle ID: 3, Event Type: start, Timestamp: 195.48042525435972 -Vehicle ID: 3, Event Type: start, Timestamp: 195.51601770427004 -Vehicle ID: 3, Event Type: start, Timestamp: 195.6005264436997 -Vehicle ID: 3, Event Type: start, Timestamp: 195.60804404983506 -Vehicle ID: 3, Event Type: start, Timestamp: 195.61334492658108 -Vehicle ID: 3, Event Type: start, Timestamp: 195.70205019974003 -Vehicle ID: 3, Event Type: start, Timestamp: 195.7698302218526 -Vehicle ID: 3, Event Type: start, Timestamp: 196.15976868045928 -Vehicle ID: 3, Event Type: start, Timestamp: 198.4944792481381 -Vehicle ID: 3, Event Type: start, Timestamp: 198.6886543738456 -Vehicle ID: 3, Event Type: start, Timestamp: 198.72001145840426 -Vehicle ID: 3, Event Type: start, Timestamp: 198.7743750841712 -Vehicle ID: 3, Event Type: start, Timestamp: 198.80736335340356 -Vehicle ID: 3, Event Type: start, Timestamp: 198.81934435959153 -Vehicle ID: 3, Event Type: start, Timestamp: 198.89323757439922 -Vehicle ID: 3, Event Type: start, Timestamp: 199.0866934621164 -Vehicle ID: 3, Event Type: start, Timestamp: 199.22588225804574 -Vehicle ID: 3, Event Type: start, Timestamp: 199.30019454639935 -Vehicle ID: 5, Event Type: start, Timestamp: 230.29827341829468 -Vehicle ID: 5, Event Type: end, Timestamp: 230.29827341829468 -Vehicle ID: 5, Event Type: start, Timestamp: 230.3627720612013 -Vehicle ID: 5, Event Type: end, Timestamp: 230.3627720612013 -Vehicle ID: 5, Event Type: start, Timestamp: 230.3838152252046 -Vehicle ID: 5, Event Type: end, Timestamp: 230.3838152252046 -Vehicle ID: 5, Event Type: start, Timestamp: 230.44777625767 -Vehicle ID: 5, Event Type: end, Timestamp: 230.44777625767 -Vehicle ID: 5, Event Type: start, Timestamp: 230.46343203485594 -Vehicle ID: 5, Event Type: end, Timestamp: 230.46343203485594 -Vehicle ID: 5, Event Type: start, Timestamp: 230.48355884791818 -Vehicle ID: 5, Event Type: end, Timestamp: 230.48355884791818 -Vehicle ID: 5, Event Type: start, Timestamp: 230.50049767669492 -Vehicle ID: 5, Event Type: end, Timestamp: 230.50049767669492 -Vehicle ID: 5, Event Type: start, Timestamp: 230.51672058869067 -Vehicle ID: 5, Event Type: end, Timestamp: 230.51672058869067 -Vehicle ID: 5, Event Type: start, Timestamp: 230.54979692970642 -Vehicle ID: 5, Event Type: end, Timestamp: 230.54979692970642 -Vehicle ID: 5, Event Type: start, Timestamp: 230.56233060560825 -Vehicle ID: 5, Event Type: end, Timestamp: 230.56233060560825 -Vehicle ID: 5, Event Type: start, Timestamp: 230.56683743927576 -Vehicle ID: 5, Event Type: end, Timestamp: 230.56683743927576 -Vehicle ID: 5, Event Type: start, Timestamp: 230.59993390519878 -Vehicle ID: 5, Event Type: end, Timestamp: 230.59993390519878 -Vehicle ID: 5, Event Type: start, Timestamp: 230.61716546147804 -Vehicle ID: 5, Event Type: end, Timestamp: 230.61716546147804 -Vehicle ID: 5, Event Type: start, Timestamp: 230.6312915595422 -Vehicle ID: 5, Event Type: end, Timestamp: 230.6312915595422 -Vehicle ID: 5, Event Type: start, Timestamp: 230.63830987544017 -Vehicle ID: 5, Event Type: end, Timestamp: 230.63830987544017 -Vehicle ID: 5, Event Type: start, Timestamp: 230.64494056387875 -Vehicle ID: 5, Event Type: end, Timestamp: 230.64494056387875 -Vehicle ID: 5, Event Type: start, Timestamp: 230.67691745438796 -Vehicle ID: 5, Event Type: end, Timestamp: 230.67691745438796 -Vehicle ID: 5, Event Type: start, Timestamp: 230.69615062963106 -Vehicle ID: 5, Event Type: end, Timestamp: 230.69615062963106 -Vehicle ID: 5, Event Type: start, Timestamp: 230.69616965015607 -Vehicle ID: 5, Event Type: end, Timestamp: 230.69616965015607 -Vehicle ID: 5, Event Type: start, Timestamp: 230.70195429847135 -Vehicle ID: 5, Event Type: end, Timestamp: 230.70195429847135 -Vehicle ID: 5, Event Type: start, Timestamp: 230.72189492049787 -Vehicle ID: 5, Event Type: end, Timestamp: 230.72189492049787 -Vehicle ID: 5, Event Type: start, Timestamp: 230.73387443926376 -Vehicle ID: 5, Event Type: end, Timestamp: 230.73387443926376 -Vehicle ID: 5, Event Type: start, Timestamp: 230.7374823789395 -Vehicle ID: 5, Event Type: end, Timestamp: 230.7374823789395 -Vehicle ID: 5, Event Type: start, Timestamp: 230.7384914783118 -Vehicle ID: 5, Event Type: end, Timestamp: 230.7384914783118 -Vehicle ID: 5, Event Type: start, Timestamp: 230.74636761021665 -Vehicle ID: 5, Event Type: end, Timestamp: 230.74636761021665 -Vehicle ID: 5, Event Type: start, Timestamp: 230.7495708880515 -Vehicle ID: 5, Event Type: end, Timestamp: 230.7495708880515 -Vehicle ID: 5, Event Type: start, Timestamp: 230.75011446791038 -Vehicle ID: 5, Event Type: end, Timestamp: 230.75011446791038 -Vehicle ID: 5, Event Type: start, Timestamp: 230.75199221452607 -Vehicle ID: 5, Event Type: end, Timestamp: 230.75199221452607 -Vehicle ID: 5, Event Type: start, Timestamp: 230.75237981361724 -Vehicle ID: 5, Event Type: end, Timestamp: 230.75237981361724 -Vehicle ID: 5, Event Type: start, Timestamp: 230.76638232213645 -Vehicle ID: 5, Event Type: end, Timestamp: 230.76638232213645 -Vehicle ID: 5, Event Type: start, Timestamp: 230.77192270252183 -Vehicle ID: 5, Event Type: end, Timestamp: 230.77192270252183 -Vehicle ID: 5, Event Type: start, Timestamp: 230.78130464451763 -Vehicle ID: 5, Event Type: end, Timestamp: 230.78130464451763 -Vehicle ID: 5, Event Type: start, Timestamp: 230.78691723670954 -Vehicle ID: 5, Event Type: end, Timestamp: 230.78691723670954 -Vehicle ID: 5, Event Type: start, Timestamp: 230.78874165073725 -Vehicle ID: 5, Event Type: end, Timestamp: 230.78874165073725 -Vehicle ID: 5, Event Type: start, Timestamp: 230.79306011045819 -Vehicle ID: 5, Event Type: end, Timestamp: 230.79306011045819 -Vehicle ID: 5, Event Type: start, Timestamp: 230.79685924887468 -Vehicle ID: 5, Event Type: end, Timestamp: 230.79685924887468 -Vehicle ID: 5, Event Type: start, Timestamp: 230.80491311865396 -Vehicle ID: 5, Event Type: end, Timestamp: 230.80491311865396 -Vehicle ID: 5, Event Type: start, Timestamp: 230.80862898781328 -Vehicle ID: 5, Event Type: end, Timestamp: 230.80862898781328 -Vehicle ID: 5, Event Type: start, Timestamp: 230.81096809279114 -Vehicle ID: 5, Event Type: end, Timestamp: 230.81096809279114 -Vehicle ID: 5, Event Type: start, Timestamp: 230.8176327668204 -Vehicle ID: 5, Event Type: end, Timestamp: 230.8176327668204 -Vehicle ID: 5, Event Type: start, Timestamp: 230.83437229401193 -Vehicle ID: 5, Event Type: end, Timestamp: 230.83437229401193 -Vehicle ID: 5, Event Type: start, Timestamp: 230.83489521247532 -Vehicle ID: 5, Event Type: end, Timestamp: 230.83489521247532 -Vehicle ID: 5, Event Type: start, Timestamp: 230.8364343329917 -Vehicle ID: 5, Event Type: end, Timestamp: 230.8364343329917 -Vehicle ID: 5, Event Type: start, Timestamp: 230.84429061831597 -Vehicle ID: 5, Event Type: end, Timestamp: 230.84429061831597 -Vehicle ID: 5, Event Type: start, Timestamp: 230.84873827051655 -Vehicle ID: 5, Event Type: end, Timestamp: 230.84873827051655 -Vehicle ID: 5, Event Type: start, Timestamp: 230.8517973575957 -Vehicle ID: 5, Event Type: end, Timestamp: 230.8517973575957 -Vehicle ID: 5, Event Type: start, Timestamp: 230.85356491182986 -Vehicle ID: 5, Event Type: end, Timestamp: 230.85356491182986 -Vehicle ID: 5, Event Type: start, Timestamp: 230.85731259237176 -Vehicle ID: 5, Event Type: end, Timestamp: 230.85731259237176 -Vehicle ID: 5, Event Type: start, Timestamp: 230.86103790575163 -Vehicle ID: 5, Event Type: end, Timestamp: 230.86103790575163 -Vehicle ID: 5, Event Type: start, Timestamp: 230.8653598112958 -Vehicle ID: 5, Event Type: end, Timestamp: 230.8653598112958 -Vehicle ID: 5, Event Type: start, Timestamp: 230.87325812474393 -Vehicle ID: 5, Event Type: end, Timestamp: 230.87325812474393 -Vehicle ID: 5, Event Type: start, Timestamp: 230.87502604108292 -Vehicle ID: 5, Event Type: end, Timestamp: 230.87502604108292 -Vehicle ID: 5, Event Type: start, Timestamp: 230.9043716159478 -Vehicle ID: 5, Event Type: end, Timestamp: 230.9043716159478 -Vehicle ID: 5, Event Type: start, Timestamp: 230.9065061391592 -Vehicle ID: 5, Event Type: end, Timestamp: 230.9065061391592 -Vehicle ID: 5, Event Type: start, Timestamp: 230.91655853895153 -Vehicle ID: 5, Event Type: end, Timestamp: 230.91655853895153 -Vehicle ID: 5, Event Type: start, Timestamp: 230.9397275368141 -Vehicle ID: 5, Event Type: end, Timestamp: 230.9397275368141 -Vehicle ID: 5, Event Type: start, Timestamp: 230.95743987083137 -Vehicle ID: 5, Event Type: end, Timestamp: 230.95743987083137 -Vehicle ID: 5, Event Type: start, Timestamp: 230.96056895231618 -Vehicle ID: 5, Event Type: end, Timestamp: 230.96056895231618 -Vehicle ID: 5, Event Type: start, Timestamp: 230.96748430241377 -Vehicle ID: 5, Event Type: end, Timestamp: 230.96748430241377 -Vehicle ID: 5, Event Type: start, Timestamp: 230.9699240161956 -Vehicle ID: 5, Event Type: end, Timestamp: 230.9699240161956 -Vehicle ID: 5, Event Type: start, Timestamp: 230.98043458631668 -Vehicle ID: 5, Event Type: end, Timestamp: 230.98043458631668 -Vehicle ID: 5, Event Type: start, Timestamp: 230.98372432386068 -Vehicle ID: 5, Event Type: end, Timestamp: 230.98372432386068 -Vehicle ID: 5, Event Type: start, Timestamp: 230.99912392839255 -Vehicle ID: 5, Event Type: end, Timestamp: 230.99912392839255 -Vehicle ID: 5, Event Type: start, Timestamp: 231.02062434099463 -Vehicle ID: 5, Event Type: end, Timestamp: 231.02062434099463 -Vehicle ID: 5, Event Type: start, Timestamp: 231.02168394757356 -Vehicle ID: 5, Event Type: end, Timestamp: 231.02168394757356 -Vehicle ID: 5, Event Type: start, Timestamp: 231.02297707925493 -Vehicle ID: 5, Event Type: end, Timestamp: 231.02297707925493 -Vehicle ID: 5, Event Type: start, Timestamp: 231.02951999264218 -Vehicle ID: 5, Event Type: end, Timestamp: 231.02951999264218 -Vehicle ID: 5, Event Type: start, Timestamp: 231.0477077634327 -Vehicle ID: 5, Event Type: end, Timestamp: 231.0477077634327 -Vehicle ID: 5, Event Type: start, Timestamp: 231.04908102780286 -Vehicle ID: 5, Event Type: end, Timestamp: 231.04908102780286 -Vehicle ID: 5, Event Type: start, Timestamp: 231.05090496818704 -Vehicle ID: 5, Event Type: end, Timestamp: 231.05090496818704 -Vehicle ID: 5, Event Type: start, Timestamp: 231.05542786513382 -Vehicle ID: 5, Event Type: end, Timestamp: 231.05542786513382 -Vehicle ID: 5, Event Type: start, Timestamp: 231.05834930585786 -Vehicle ID: 5, Event Type: end, Timestamp: 231.05834930585786 -Vehicle ID: 5, Event Type: start, Timestamp: 231.0885893751893 -Vehicle ID: 5, Event Type: end, Timestamp: 231.0885893751893 -Vehicle ID: 5, Event Type: start, Timestamp: 231.09888188065239 -Vehicle ID: 5, Event Type: end, Timestamp: 231.09888188065239 -Vehicle ID: 5, Event Type: start, Timestamp: 231.10971628491177 -Vehicle ID: 5, Event Type: end, Timestamp: 231.10971628491177 -Vehicle ID: 5, Event Type: start, Timestamp: 231.1183114799994 -Vehicle ID: 5, Event Type: end, Timestamp: 231.1183114799994 -Vehicle ID: 5, Event Type: start, Timestamp: 231.12156369651075 -Vehicle ID: 5, Event Type: end, Timestamp: 231.12156369651075 -Vehicle ID: 5, Event Type: start, Timestamp: 231.13122812407303 -Vehicle ID: 5, Event Type: end, Timestamp: 231.13122812407303 -Vehicle ID: 5, Event Type: start, Timestamp: 231.151439515394 -Vehicle ID: 5, Event Type: end, Timestamp: 231.151439515394 -Vehicle ID: 5, Event Type: start, Timestamp: 231.18571286346827 -Vehicle ID: 5, Event Type: end, Timestamp: 231.18571286346827 -Vehicle ID: 5, Event Type: start, Timestamp: 231.20475027148282 -Vehicle ID: 5, Event Type: end, Timestamp: 231.20475027148282 -Vehicle ID: 5, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 5, Event Type: end, Timestamp: 231.3591394944944 -Vehicle ID: 5, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 5, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 5, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 5, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 5, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 5, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 5, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 5, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 5, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 5, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 5, Event Type: start, Timestamp: 234.61218307066508 -Vehicle ID: 5, Event Type: start, Timestamp: 234.67229868623448 -Vehicle ID: 5, Event Type: start, Timestamp: 234.71198602599108 -Vehicle ID: 5, Event Type: start, Timestamp: 234.7739666252984 -Vehicle ID: 5, Event Type: start, Timestamp: 234.82162317422572 -Vehicle ID: 5, Event Type: start, Timestamp: 234.82521038070985 -Vehicle ID: 5, Event Type: start, Timestamp: 234.90299888353834 -Vehicle ID: 5, Event Type: start, Timestamp: 234.9121686386596 -Vehicle ID: 5, Event Type: start, Timestamp: 234.9324691413231 -Vehicle ID: 5, Event Type: start, Timestamp: 234.9545245459871 -Vehicle ID: 5, Event Type: start, Timestamp: 237.9683651705698 -Vehicle ID: 5, Event Type: start, Timestamp: 238.00308201192564 -Vehicle ID: 5, Event Type: start, Timestamp: 238.19960775787948 -Vehicle ID: 5, Event Type: start, Timestamp: 238.24592430027332 -Vehicle ID: 5, Event Type: start, Timestamp: 238.25322138800908 -Vehicle ID: 5, Event Type: start, Timestamp: 238.27316178998237 -Vehicle ID: 5, Event Type: start, Timestamp: 238.31180381679974 -Vehicle ID: 5, Event Type: start, Timestamp: 238.3248004978933 -Vehicle ID: 5, Event Type: start, Timestamp: 238.35499460022052 -Vehicle ID: 5, Event Type: start, Timestamp: 238.3899274529902 -Vehicle ID: 5, Event Type: start, Timestamp: 241.11483805899704 -Vehicle ID: 5, Event Type: start, Timestamp: 241.23091321848335 -Vehicle ID: 5, Event Type: start, Timestamp: 241.3102283643809 -Vehicle ID: 5, Event Type: start, Timestamp: 241.3964077184347 -Vehicle ID: 5, Event Type: start, Timestamp: 241.41760834530984 -Vehicle ID: 5, Event Type: start, Timestamp: 241.49626324128397 -Vehicle ID: 5, Event Type: start, Timestamp: 241.62479834886182 -Vehicle ID: 5, Event Type: start, Timestamp: 241.67246604237718 -Vehicle ID: 5, Event Type: start, Timestamp: 241.74506764663317 -Vehicle ID: 5, Event Type: start, Timestamp: 241.85210959118754 +Vehicle ID: 3, Event Type: start, Timestamp: 192.10256872591722 +Vehicle ID: 3, Event Type: start, Timestamp: 192.31359163914726 +Vehicle ID: 3, Event Type: start, Timestamp: 192.34793101801878 +Vehicle ID: 3, Event Type: start, Timestamp: 192.35200245291432 +Vehicle ID: 3, Event Type: start, Timestamp: 192.40033005307833 +Vehicle ID: 3, Event Type: start, Timestamp: 192.4134806034812 +Vehicle ID: 3, Event Type: start, Timestamp: 192.43527337960703 +Vehicle ID: 3, Event Type: start, Timestamp: 192.4450257951157 +Vehicle ID: 3, Event Type: start, Timestamp: 192.5000907831079 +Vehicle ID: 3, Event Type: start, Timestamp: 192.5344182339007 +Vehicle ID: 3, Event Type: start, Timestamp: 195.36694548274608 +Vehicle ID: 3, Event Type: start, Timestamp: 195.51108399165085 +Vehicle ID: 3, Event Type: start, Timestamp: 195.6332243286144 +Vehicle ID: 3, Event Type: start, Timestamp: 195.67539948539783 +Vehicle ID: 3, Event Type: start, Timestamp: 195.7350025000328 +Vehicle ID: 3, Event Type: start, Timestamp: 195.77136562843162 +Vehicle ID: 3, Event Type: start, Timestamp: 195.77309679391664 +Vehicle ID: 3, Event Type: start, Timestamp: 195.7769123854943 +Vehicle ID: 3, Event Type: start, Timestamp: 195.78539127187503 +Vehicle ID: 3, Event Type: start, Timestamp: 195.8024184665924 +Vehicle ID: 3, Event Type: start, Timestamp: 198.6899594874977 +Vehicle ID: 3, Event Type: start, Timestamp: 198.84733698336157 +Vehicle ID: 3, Event Type: start, Timestamp: 198.88912884049347 +Vehicle ID: 3, Event Type: start, Timestamp: 198.9286933899742 +Vehicle ID: 3, Event Type: start, Timestamp: 199.00944628875286 +Vehicle ID: 3, Event Type: start, Timestamp: 199.05056224467592 +Vehicle ID: 3, Event Type: start, Timestamp: 199.08289389102814 +Vehicle ID: 3, Event Type: start, Timestamp: 199.14775545590652 +Vehicle ID: 3, Event Type: start, Timestamp: 199.1753945645851 +Vehicle ID: 3, Event Type: start, Timestamp: 199.24080607041245 +Vehicle ID: 5, Event Type: start, Timestamp: 230.31664129548037 +Vehicle ID: 5, Event Type: end, Timestamp: 230.31664129548037 +Vehicle ID: 5, Event Type: start, Timestamp: 230.43777232998855 +Vehicle ID: 5, Event Type: end, Timestamp: 230.43777232998855 +Vehicle ID: 5, Event Type: start, Timestamp: 230.4669981200018 +Vehicle ID: 5, Event Type: end, Timestamp: 230.4669981200018 +Vehicle ID: 5, Event Type: start, Timestamp: 230.47049233752423 +Vehicle ID: 5, Event Type: end, Timestamp: 230.47049233752423 +Vehicle ID: 5, Event Type: start, Timestamp: 230.507611897847 +Vehicle ID: 5, Event Type: end, Timestamp: 230.507611897847 +Vehicle ID: 5, Event Type: start, Timestamp: 230.5252912152482 +Vehicle ID: 5, Event Type: end, Timestamp: 230.5252912152482 +Vehicle ID: 5, Event Type: start, Timestamp: 230.57795997016905 +Vehicle ID: 5, Event Type: end, Timestamp: 230.57795997016905 +Vehicle ID: 5, Event Type: start, Timestamp: 230.58229794319544 +Vehicle ID: 5, Event Type: end, Timestamp: 230.58229794319544 +Vehicle ID: 5, Event Type: start, Timestamp: 230.59244497942257 +Vehicle ID: 5, Event Type: end, Timestamp: 230.59244497942257 +Vehicle ID: 5, Event Type: start, Timestamp: 230.59736971409123 +Vehicle ID: 5, Event Type: end, Timestamp: 230.59736971409123 +Vehicle ID: 5, Event Type: start, Timestamp: 230.59925552280913 +Vehicle ID: 5, Event Type: end, Timestamp: 230.59925552280913 +Vehicle ID: 5, Event Type: start, Timestamp: 230.6005747719904 +Vehicle ID: 5, Event Type: end, Timestamp: 230.6005747719904 +Vehicle ID: 5, Event Type: start, Timestamp: 230.60844864975988 +Vehicle ID: 5, Event Type: end, Timestamp: 230.60844864975988 +Vehicle ID: 5, Event Type: start, Timestamp: 230.62483370107324 +Vehicle ID: 5, Event Type: end, Timestamp: 230.62483370107324 +Vehicle ID: 5, Event Type: start, Timestamp: 230.63264039963747 +Vehicle ID: 5, Event Type: end, Timestamp: 230.63264039963747 +Vehicle ID: 5, Event Type: start, Timestamp: 230.64569662314722 +Vehicle ID: 5, Event Type: end, Timestamp: 230.64569662314722 +Vehicle ID: 5, Event Type: start, Timestamp: 230.65069204188958 +Vehicle ID: 5, Event Type: end, Timestamp: 230.65069204188958 +Vehicle ID: 5, Event Type: start, Timestamp: 230.6629783634811 +Vehicle ID: 5, Event Type: end, Timestamp: 230.6629783634811 +Vehicle ID: 5, Event Type: start, Timestamp: 230.6731654968688 +Vehicle ID: 5, Event Type: end, Timestamp: 230.6731654968688 +Vehicle ID: 5, Event Type: start, Timestamp: 230.6797863090111 +Vehicle ID: 5, Event Type: end, Timestamp: 230.6797863090111 +Vehicle ID: 5, Event Type: start, Timestamp: 230.6980749527035 +Vehicle ID: 5, Event Type: end, Timestamp: 230.6980749527035 +Vehicle ID: 5, Event Type: start, Timestamp: 230.7065578975353 +Vehicle ID: 5, Event Type: end, Timestamp: 230.7065578975353 +Vehicle ID: 5, Event Type: start, Timestamp: 230.71544162388594 +Vehicle ID: 5, Event Type: end, Timestamp: 230.71544162388594 +Vehicle ID: 5, Event Type: start, Timestamp: 230.71575516779617 +Vehicle ID: 5, Event Type: end, Timestamp: 230.71575516779617 +Vehicle ID: 5, Event Type: start, Timestamp: 230.7162161523077 +Vehicle ID: 5, Event Type: end, Timestamp: 230.7162161523077 +Vehicle ID: 5, Event Type: start, Timestamp: 230.7196427958835 +Vehicle ID: 5, Event Type: end, Timestamp: 230.7196427958835 +Vehicle ID: 5, Event Type: start, Timestamp: 230.72098064222192 +Vehicle ID: 5, Event Type: end, Timestamp: 230.72098064222192 +Vehicle ID: 5, Event Type: start, Timestamp: 230.73081564181555 +Vehicle ID: 5, Event Type: end, Timestamp: 230.73081564181555 +Vehicle ID: 5, Event Type: start, Timestamp: 230.74095885464635 +Vehicle ID: 5, Event Type: end, Timestamp: 230.74095885464635 +Vehicle ID: 5, Event Type: start, Timestamp: 230.74656573437537 +Vehicle ID: 5, Event Type: end, Timestamp: 230.74656573437537 +Vehicle ID: 5, Event Type: start, Timestamp: 230.7581560804016 +Vehicle ID: 5, Event Type: end, Timestamp: 230.7581560804016 +Vehicle ID: 5, Event Type: start, Timestamp: 230.7686443444904 +Vehicle ID: 5, Event Type: end, Timestamp: 230.7686443444904 +Vehicle ID: 5, Event Type: start, Timestamp: 230.76949011581317 +Vehicle ID: 5, Event Type: end, Timestamp: 230.76949011581317 +Vehicle ID: 5, Event Type: start, Timestamp: 230.78971491480726 +Vehicle ID: 5, Event Type: end, Timestamp: 230.78971491480726 +Vehicle ID: 5, Event Type: start, Timestamp: 230.79048350310578 +Vehicle ID: 5, Event Type: end, Timestamp: 230.79048350310578 +Vehicle ID: 5, Event Type: start, Timestamp: 230.7936676546537 +Vehicle ID: 5, Event Type: end, Timestamp: 230.7936676546537 +Vehicle ID: 5, Event Type: start, Timestamp: 230.79602097207905 +Vehicle ID: 5, Event Type: end, Timestamp: 230.79602097207905 +Vehicle ID: 5, Event Type: start, Timestamp: 230.81353158586242 +Vehicle ID: 5, Event Type: end, Timestamp: 230.81353158586242 +Vehicle ID: 5, Event Type: start, Timestamp: 230.81491792771507 +Vehicle ID: 5, Event Type: end, Timestamp: 230.81491792771507 +Vehicle ID: 5, Event Type: start, Timestamp: 230.81848537169685 +Vehicle ID: 5, Event Type: end, Timestamp: 230.81848537169685 +Vehicle ID: 5, Event Type: start, Timestamp: 230.82112818483114 +Vehicle ID: 5, Event Type: end, Timestamp: 230.82112818483114 +Vehicle ID: 5, Event Type: start, Timestamp: 230.8220145777036 +Vehicle ID: 5, Event Type: end, Timestamp: 230.8220145777036 +Vehicle ID: 5, Event Type: start, Timestamp: 230.82661033611626 +Vehicle ID: 5, Event Type: end, Timestamp: 230.82661033611626 +Vehicle ID: 5, Event Type: start, Timestamp: 230.838906724935 +Vehicle ID: 5, Event Type: end, Timestamp: 230.838906724935 +Vehicle ID: 5, Event Type: start, Timestamp: 230.84967497804254 +Vehicle ID: 5, Event Type: end, Timestamp: 230.84967497804254 +Vehicle ID: 5, Event Type: start, Timestamp: 230.88103052990513 +Vehicle ID: 5, Event Type: end, Timestamp: 230.88103052990513 +Vehicle ID: 5, Event Type: start, Timestamp: 230.88975553865887 +Vehicle ID: 5, Event Type: end, Timestamp: 230.88975553865887 +Vehicle ID: 5, Event Type: start, Timestamp: 230.89105826964996 +Vehicle ID: 5, Event Type: end, Timestamp: 230.89105826964996 +Vehicle ID: 5, Event Type: start, Timestamp: 230.89119073925795 +Vehicle ID: 5, Event Type: end, Timestamp: 230.89119073925795 +Vehicle ID: 5, Event Type: start, Timestamp: 230.90142381345194 +Vehicle ID: 5, Event Type: end, Timestamp: 230.90142381345194 +Vehicle ID: 5, Event Type: start, Timestamp: 230.90414769678802 +Vehicle ID: 5, Event Type: end, Timestamp: 230.90414769678802 +Vehicle ID: 5, Event Type: start, Timestamp: 230.90584379827644 +Vehicle ID: 5, Event Type: end, Timestamp: 230.90584379827644 +Vehicle ID: 5, Event Type: start, Timestamp: 230.9112186500487 +Vehicle ID: 5, Event Type: end, Timestamp: 230.9112186500487 +Vehicle ID: 5, Event Type: start, Timestamp: 230.91701955655486 +Vehicle ID: 5, Event Type: end, Timestamp: 230.91701955655486 +Vehicle ID: 5, Event Type: start, Timestamp: 230.92416719007622 +Vehicle ID: 5, Event Type: end, Timestamp: 230.92416719007622 +Vehicle ID: 5, Event Type: start, Timestamp: 230.95215756838152 +Vehicle ID: 5, Event Type: end, Timestamp: 230.95215756838152 +Vehicle ID: 5, Event Type: start, Timestamp: 230.9659347467519 +Vehicle ID: 5, Event Type: end, Timestamp: 230.9659347467519 +Vehicle ID: 5, Event Type: start, Timestamp: 230.9720238425998 +Vehicle ID: 5, Event Type: end, Timestamp: 230.9720238425998 +Vehicle ID: 5, Event Type: start, Timestamp: 230.97478563775127 +Vehicle ID: 5, Event Type: end, Timestamp: 230.97478563775127 +Vehicle ID: 5, Event Type: start, Timestamp: 230.97685786462003 +Vehicle ID: 5, Event Type: end, Timestamp: 230.97685786462003 +Vehicle ID: 5, Event Type: start, Timestamp: 230.9819191051995 +Vehicle ID: 5, Event Type: end, Timestamp: 230.9819191051995 +Vehicle ID: 5, Event Type: start, Timestamp: 230.99934109132596 +Vehicle ID: 5, Event Type: end, Timestamp: 230.99934109132596 +Vehicle ID: 5, Event Type: start, Timestamp: 231.016069853024 +Vehicle ID: 5, Event Type: end, Timestamp: 231.016069853024 +Vehicle ID: 5, Event Type: start, Timestamp: 231.0212547969928 +Vehicle ID: 5, Event Type: end, Timestamp: 231.0212547969928 +Vehicle ID: 5, Event Type: start, Timestamp: 231.0252620603701 +Vehicle ID: 5, Event Type: end, Timestamp: 231.0252620603701 +Vehicle ID: 5, Event Type: start, Timestamp: 231.04423236075235 +Vehicle ID: 5, Event Type: end, Timestamp: 231.04423236075235 +Vehicle ID: 5, Event Type: start, Timestamp: 231.0630809727534 +Vehicle ID: 5, Event Type: end, Timestamp: 231.0630809727534 +Vehicle ID: 5, Event Type: start, Timestamp: 231.07740679810462 +Vehicle ID: 5, Event Type: end, Timestamp: 231.07740679810462 +Vehicle ID: 5, Event Type: start, Timestamp: 231.08413945409612 +Vehicle ID: 5, Event Type: end, Timestamp: 231.08413945409612 +Vehicle ID: 5, Event Type: start, Timestamp: 231.1028865973175 +Vehicle ID: 5, Event Type: end, Timestamp: 231.1028865973175 +Vehicle ID: 5, Event Type: start, Timestamp: 231.10454584422865 +Vehicle ID: 5, Event Type: end, Timestamp: 231.10454584422865 +Vehicle ID: 5, Event Type: start, Timestamp: 231.1230269289867 +Vehicle ID: 5, Event Type: end, Timestamp: 231.1230269289867 +Vehicle ID: 5, Event Type: start, Timestamp: 231.1285181587533 +Vehicle ID: 5, Event Type: end, Timestamp: 231.1285181587533 +Vehicle ID: 5, Event Type: start, Timestamp: 231.13353733814054 +Vehicle ID: 5, Event Type: end, Timestamp: 231.13353733814054 +Vehicle ID: 5, Event Type: start, Timestamp: 231.1450106949585 +Vehicle ID: 5, Event Type: end, Timestamp: 231.1450106949585 +Vehicle ID: 5, Event Type: start, Timestamp: 231.1469754060731 +Vehicle ID: 5, Event Type: end, Timestamp: 231.1469754060731 +Vehicle ID: 5, Event Type: start, Timestamp: 231.18645081718861 +Vehicle ID: 5, Event Type: end, Timestamp: 231.18645081718861 +Vehicle ID: 5, Event Type: start, Timestamp: 231.19375187549824 +Vehicle ID: 5, Event Type: end, Timestamp: 231.19375187549824 +Vehicle ID: 5, Event Type: start, Timestamp: 231.25277098470198 +Vehicle ID: 5, Event Type: end, Timestamp: 231.25277098470198 +Vehicle ID: 5, Event Type: start, Timestamp: 231.26975212198442 +Vehicle ID: 5, Event Type: end, Timestamp: 231.26975212198442 +Vehicle ID: 5, Event Type: start, Timestamp: 231.27712400126066 +Vehicle ID: 5, Event Type: end, Timestamp: 231.27712400126066 +Vehicle ID: 5, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 5, Event Type: end, Timestamp: 231.30006696996352 +Vehicle ID: 5, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 5, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 5, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 5, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 5, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 5, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 5, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 5, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 5, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 5, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 5, Event Type: start, Timestamp: 234.53727122082793 +Vehicle ID: 5, Event Type: start, Timestamp: 234.55336921745038 +Vehicle ID: 5, Event Type: start, Timestamp: 234.5995093865152 +Vehicle ID: 5, Event Type: start, Timestamp: 234.65916369264255 +Vehicle ID: 5, Event Type: start, Timestamp: 234.6792162854212 +Vehicle ID: 5, Event Type: start, Timestamp: 234.68375167189106 +Vehicle ID: 5, Event Type: start, Timestamp: 234.71044268444453 +Vehicle ID: 5, Event Type: start, Timestamp: 234.77559911525984 +Vehicle ID: 5, Event Type: start, Timestamp: 234.8353696146659 +Vehicle ID: 5, Event Type: start, Timestamp: 234.9219869145761 +Vehicle ID: 5, Event Type: start, Timestamp: 237.74029784106037 +Vehicle ID: 5, Event Type: start, Timestamp: 237.78378484536086 +Vehicle ID: 5, Event Type: start, Timestamp: 237.85900622078185 +Vehicle ID: 5, Event Type: start, Timestamp: 237.94571983713365 +Vehicle ID: 5, Event Type: start, Timestamp: 237.95401422838006 +Vehicle ID: 5, Event Type: start, Timestamp: 238.04329336057575 +Vehicle ID: 5, Event Type: start, Timestamp: 238.06040861627181 +Vehicle ID: 5, Event Type: start, Timestamp: 238.0608181620015 +Vehicle ID: 5, Event Type: start, Timestamp: 238.10994961953583 +Vehicle ID: 5, Event Type: start, Timestamp: 238.27995383282118 +Vehicle ID: 5, Event Type: start, Timestamp: 241.05643953455115 +Vehicle ID: 5, Event Type: start, Timestamp: 241.07304256996474 +Vehicle ID: 5, Event Type: start, Timestamp: 241.12786542068787 +Vehicle ID: 5, Event Type: start, Timestamp: 241.3221493468199 +Vehicle ID: 5, Event Type: start, Timestamp: 241.3930565801473 +Vehicle ID: 5, Event Type: start, Timestamp: 241.4294037854494 +Vehicle ID: 5, Event Type: start, Timestamp: 241.47991410918314 +Vehicle ID: 5, Event Type: start, Timestamp: 241.50428983946048 +Vehicle ID: 5, Event Type: start, Timestamp: 241.51736402339205 +Vehicle ID: 5, Event Type: start, Timestamp: 241.59773505870535 Vehicle ID: 5, Event Type: start, Timestamp: 252.0 Vehicle ID: 5, Event Type: start, Timestamp: 252.0 Vehicle ID: 5, Event Type: start, Timestamp: 252.0 @@ -456,240 +456,240 @@ Vehicle ID: 5, Event Type: start, Timestamp: 252.0 Vehicle ID: 5, Event Type: start, Timestamp: 252.0 Vehicle ID: 5, Event Type: start, Timestamp: 252.0 Vehicle ID: 5, Event Type: start, Timestamp: 252.0 -Vehicle ID: 5, Event Type: start, Timestamp: 255.14364487301842 -Vehicle ID: 5, Event Type: start, Timestamp: 255.20786520141553 -Vehicle ID: 5, Event Type: start, Timestamp: 255.37572530621298 -Vehicle ID: 5, Event Type: start, Timestamp: 255.38354956167169 -Vehicle ID: 5, Event Type: start, Timestamp: 255.39271450878184 -Vehicle ID: 5, Event Type: start, Timestamp: 255.3928610831799 -Vehicle ID: 5, Event Type: start, Timestamp: 255.407105033464 -Vehicle ID: 5, Event Type: start, Timestamp: 255.53182505471946 -Vehicle ID: 5, Event Type: start, Timestamp: 255.5340898996662 -Vehicle ID: 5, Event Type: start, Timestamp: 255.56410027431457 -Vehicle ID: 5, Event Type: start, Timestamp: 258.40834531216285 -Vehicle ID: 5, Event Type: start, Timestamp: 258.5573203104712 -Vehicle ID: 5, Event Type: start, Timestamp: 258.6597137513603 -Vehicle ID: 5, Event Type: start, Timestamp: 258.7120840835402 -Vehicle ID: 5, Event Type: start, Timestamp: 258.7283470213785 -Vehicle ID: 5, Event Type: start, Timestamp: 258.73803618034987 -Vehicle ID: 5, Event Type: start, Timestamp: 258.7912224922983 -Vehicle ID: 5, Event Type: start, Timestamp: 258.88693924330653 -Vehicle ID: 5, Event Type: start, Timestamp: 258.894949172084 -Vehicle ID: 5, Event Type: start, Timestamp: 259.0393880252764 -Vehicle ID: 5, Event Type: start, Timestamp: 261.7071679945645 -Vehicle ID: 5, Event Type: start, Timestamp: 261.9032367940239 -Vehicle ID: 5, Event Type: start, Timestamp: 261.93705568679354 -Vehicle ID: 5, Event Type: start, Timestamp: 262.00795549096495 -Vehicle ID: 5, Event Type: start, Timestamp: 262.04172896769944 -Vehicle ID: 5, Event Type: start, Timestamp: 262.0840237582532 -Vehicle ID: 5, Event Type: start, Timestamp: 262.16983331439457 -Vehicle ID: 5, Event Type: start, Timestamp: 262.29889142823475 -Vehicle ID: 5, Event Type: start, Timestamp: 262.3984151124415 -Vehicle ID: 5, Event Type: start, Timestamp: 262.5136266134138 -Vehicle ID: 7, Event Type: start, Timestamp: 286.2007299023512 -Vehicle ID: 7, Event Type: end, Timestamp: 286.2007299023512 -Vehicle ID: 7, Event Type: start, Timestamp: 286.4232374163958 -Vehicle ID: 7, Event Type: end, Timestamp: 286.4232374163958 -Vehicle ID: 7, Event Type: start, Timestamp: 286.47450653944765 -Vehicle ID: 7, Event Type: end, Timestamp: 286.47450653944765 -Vehicle ID: 7, Event Type: start, Timestamp: 286.5413266066375 -Vehicle ID: 7, Event Type: end, Timestamp: 286.5413266066375 -Vehicle ID: 7, Event Type: start, Timestamp: 286.55454676175464 -Vehicle ID: 7, Event Type: end, Timestamp: 286.55454676175464 -Vehicle ID: 7, Event Type: start, Timestamp: 286.56513020087 -Vehicle ID: 7, Event Type: end, Timestamp: 286.56513020087 -Vehicle ID: 7, Event Type: start, Timestamp: 286.5664260471249 -Vehicle ID: 7, Event Type: end, Timestamp: 286.5664260471249 -Vehicle ID: 7, Event Type: start, Timestamp: 286.56807285405046 -Vehicle ID: 7, Event Type: end, Timestamp: 286.56807285405046 -Vehicle ID: 7, Event Type: start, Timestamp: 286.59028084227765 -Vehicle ID: 7, Event Type: end, Timestamp: 286.59028084227765 -Vehicle ID: 7, Event Type: start, Timestamp: 286.5905667099212 -Vehicle ID: 7, Event Type: end, Timestamp: 286.5905667099212 -Vehicle ID: 7, Event Type: start, Timestamp: 286.59434786852097 -Vehicle ID: 7, Event Type: end, Timestamp: 286.59434786852097 -Vehicle ID: 7, Event Type: start, Timestamp: 286.6088855624448 -Vehicle ID: 7, Event Type: end, Timestamp: 286.6088855624448 -Vehicle ID: 7, Event Type: start, Timestamp: 286.6318637323849 -Vehicle ID: 7, Event Type: end, Timestamp: 286.6318637323849 -Vehicle ID: 7, Event Type: start, Timestamp: 286.6347638583296 -Vehicle ID: 7, Event Type: end, Timestamp: 286.6347638583296 -Vehicle ID: 7, Event Type: start, Timestamp: 286.6365903362624 -Vehicle ID: 7, Event Type: end, Timestamp: 286.6365903362624 -Vehicle ID: 7, Event Type: start, Timestamp: 286.6418816878856 -Vehicle ID: 7, Event Type: end, Timestamp: 286.6418816878856 -Vehicle ID: 7, Event Type: start, Timestamp: 286.66918871391323 -Vehicle ID: 7, Event Type: end, Timestamp: 286.66918871391323 -Vehicle ID: 7, Event Type: start, Timestamp: 286.678399442593 -Vehicle ID: 7, Event Type: end, Timestamp: 286.678399442593 -Vehicle ID: 7, Event Type: start, Timestamp: 286.67961925128003 -Vehicle ID: 7, Event Type: end, Timestamp: 286.67961925128003 -Vehicle ID: 7, Event Type: start, Timestamp: 286.68548481273615 -Vehicle ID: 7, Event Type: end, Timestamp: 286.68548481273615 -Vehicle ID: 7, Event Type: start, Timestamp: 286.69500582353805 -Vehicle ID: 7, Event Type: end, Timestamp: 286.69500582353805 -Vehicle ID: 7, Event Type: start, Timestamp: 286.70151193377546 -Vehicle ID: 7, Event Type: end, Timestamp: 286.70151193377546 -Vehicle ID: 7, Event Type: start, Timestamp: 286.7093098784749 -Vehicle ID: 7, Event Type: end, Timestamp: 286.7093098784749 -Vehicle ID: 7, Event Type: start, Timestamp: 286.7139721789099 -Vehicle ID: 7, Event Type: end, Timestamp: 286.7139721789099 -Vehicle ID: 7, Event Type: start, Timestamp: 286.7211064891278 -Vehicle ID: 7, Event Type: end, Timestamp: 286.7211064891278 -Vehicle ID: 7, Event Type: start, Timestamp: 286.74214481175096 -Vehicle ID: 7, Event Type: end, Timestamp: 286.74214481175096 -Vehicle ID: 7, Event Type: start, Timestamp: 286.74530329270624 -Vehicle ID: 7, Event Type: end, Timestamp: 286.74530329270624 -Vehicle ID: 7, Event Type: start, Timestamp: 286.7625408378355 -Vehicle ID: 7, Event Type: end, Timestamp: 286.7625408378355 -Vehicle ID: 7, Event Type: start, Timestamp: 286.76735353756794 -Vehicle ID: 7, Event Type: end, Timestamp: 286.76735353756794 -Vehicle ID: 7, Event Type: start, Timestamp: 286.7677633834523 -Vehicle ID: 7, Event Type: end, Timestamp: 286.7677633834523 -Vehicle ID: 7, Event Type: start, Timestamp: 286.7751578549607 -Vehicle ID: 7, Event Type: end, Timestamp: 286.7751578549607 -Vehicle ID: 7, Event Type: start, Timestamp: 286.77769684760347 -Vehicle ID: 7, Event Type: end, Timestamp: 286.77769684760347 -Vehicle ID: 7, Event Type: start, Timestamp: 286.7824887935317 -Vehicle ID: 7, Event Type: end, Timestamp: 286.7824887935317 -Vehicle ID: 7, Event Type: start, Timestamp: 286.78788020759004 -Vehicle ID: 7, Event Type: end, Timestamp: 286.78788020759004 -Vehicle ID: 7, Event Type: start, Timestamp: 286.8104026209856 -Vehicle ID: 7, Event Type: end, Timestamp: 286.8104026209856 -Vehicle ID: 7, Event Type: start, Timestamp: 286.8134967766926 -Vehicle ID: 7, Event Type: end, Timestamp: 286.8134967766926 -Vehicle ID: 7, Event Type: start, Timestamp: 286.81898922399404 -Vehicle ID: 7, Event Type: end, Timestamp: 286.81898922399404 -Vehicle ID: 7, Event Type: start, Timestamp: 286.82003717488726 -Vehicle ID: 7, Event Type: end, Timestamp: 286.82003717488726 -Vehicle ID: 7, Event Type: start, Timestamp: 286.8335876382509 -Vehicle ID: 7, Event Type: end, Timestamp: 286.8335876382509 -Vehicle ID: 7, Event Type: start, Timestamp: 286.8340642124405 -Vehicle ID: 7, Event Type: end, Timestamp: 286.8340642124405 -Vehicle ID: 7, Event Type: start, Timestamp: 286.84971497403626 -Vehicle ID: 7, Event Type: end, Timestamp: 286.84971497403626 -Vehicle ID: 7, Event Type: start, Timestamp: 286.8730519454271 -Vehicle ID: 7, Event Type: end, Timestamp: 286.8730519454271 -Vehicle ID: 7, Event Type: start, Timestamp: 286.882970415837 -Vehicle ID: 7, Event Type: end, Timestamp: 286.882970415837 -Vehicle ID: 7, Event Type: start, Timestamp: 286.90260886243277 -Vehicle ID: 7, Event Type: end, Timestamp: 286.90260886243277 -Vehicle ID: 7, Event Type: start, Timestamp: 286.9036403877682 -Vehicle ID: 7, Event Type: end, Timestamp: 286.9036403877682 -Vehicle ID: 7, Event Type: start, Timestamp: 286.9173545587327 -Vehicle ID: 7, Event Type: end, Timestamp: 286.9173545587327 -Vehicle ID: 7, Event Type: start, Timestamp: 286.9290661796227 -Vehicle ID: 7, Event Type: end, Timestamp: 286.9290661796227 -Vehicle ID: 7, Event Type: start, Timestamp: 286.93053160725884 -Vehicle ID: 7, Event Type: end, Timestamp: 286.93053160725884 -Vehicle ID: 7, Event Type: start, Timestamp: 286.93578531654833 -Vehicle ID: 7, Event Type: end, Timestamp: 286.93578531654833 -Vehicle ID: 7, Event Type: start, Timestamp: 286.9408800831774 -Vehicle ID: 7, Event Type: end, Timestamp: 286.9408800831774 -Vehicle ID: 7, Event Type: start, Timestamp: 286.94693068573525 -Vehicle ID: 7, Event Type: end, Timestamp: 286.94693068573525 -Vehicle ID: 7, Event Type: start, Timestamp: 286.9471015160693 -Vehicle ID: 7, Event Type: end, Timestamp: 286.9471015160693 -Vehicle ID: 7, Event Type: start, Timestamp: 286.95430172932697 -Vehicle ID: 7, Event Type: end, Timestamp: 286.95430172932697 -Vehicle ID: 7, Event Type: start, Timestamp: 286.9618933196812 -Vehicle ID: 7, Event Type: end, Timestamp: 286.9618933196812 -Vehicle ID: 7, Event Type: start, Timestamp: 286.96440885531234 -Vehicle ID: 7, Event Type: end, Timestamp: 286.96440885531234 -Vehicle ID: 7, Event Type: start, Timestamp: 286.99421150902276 -Vehicle ID: 7, Event Type: end, Timestamp: 286.99421150902276 -Vehicle ID: 7, Event Type: start, Timestamp: 287.0012694314847 -Vehicle ID: 7, Event Type: end, Timestamp: 287.0012694314847 -Vehicle ID: 7, Event Type: start, Timestamp: 287.0042428226206 -Vehicle ID: 7, Event Type: end, Timestamp: 287.0042428226206 -Vehicle ID: 7, Event Type: start, Timestamp: 287.0065209935474 -Vehicle ID: 7, Event Type: end, Timestamp: 287.0065209935474 -Vehicle ID: 7, Event Type: start, Timestamp: 287.01575209040897 -Vehicle ID: 7, Event Type: end, Timestamp: 287.01575209040897 -Vehicle ID: 7, Event Type: start, Timestamp: 287.0404315070929 -Vehicle ID: 7, Event Type: end, Timestamp: 287.0404315070929 -Vehicle ID: 7, Event Type: start, Timestamp: 287.04744418288743 -Vehicle ID: 7, Event Type: end, Timestamp: 287.04744418288743 -Vehicle ID: 7, Event Type: start, Timestamp: 287.05160423768416 -Vehicle ID: 7, Event Type: end, Timestamp: 287.05160423768416 -Vehicle ID: 7, Event Type: start, Timestamp: 287.0578229770227 -Vehicle ID: 7, Event Type: end, Timestamp: 287.0578229770227 -Vehicle ID: 7, Event Type: start, Timestamp: 287.0679626948768 -Vehicle ID: 7, Event Type: end, Timestamp: 287.0679626948768 -Vehicle ID: 7, Event Type: start, Timestamp: 287.0839596146111 -Vehicle ID: 7, Event Type: end, Timestamp: 287.0839596146111 -Vehicle ID: 7, Event Type: start, Timestamp: 287.08652180019584 -Vehicle ID: 7, Event Type: end, Timestamp: 287.08652180019584 -Vehicle ID: 7, Event Type: start, Timestamp: 287.10188848057464 -Vehicle ID: 7, Event Type: end, Timestamp: 287.10188848057464 -Vehicle ID: 7, Event Type: start, Timestamp: 287.12236778305106 -Vehicle ID: 7, Event Type: end, Timestamp: 287.12236778305106 -Vehicle ID: 7, Event Type: start, Timestamp: 287.1224176895337 -Vehicle ID: 7, Event Type: end, Timestamp: 287.1224176895337 -Vehicle ID: 7, Event Type: start, Timestamp: 287.13568787737 -Vehicle ID: 7, Event Type: end, Timestamp: 287.13568787737 -Vehicle ID: 7, Event Type: start, Timestamp: 287.1416992047933 -Vehicle ID: 7, Event Type: end, Timestamp: 287.1416992047933 -Vehicle ID: 7, Event Type: start, Timestamp: 287.1454186894738 -Vehicle ID: 7, Event Type: end, Timestamp: 287.1454186894738 -Vehicle ID: 7, Event Type: start, Timestamp: 287.1474840465442 -Vehicle ID: 7, Event Type: end, Timestamp: 287.1474840465442 -Vehicle ID: 7, Event Type: start, Timestamp: 287.1878628810483 -Vehicle ID: 7, Event Type: end, Timestamp: 287.1878628810483 -Vehicle ID: 7, Event Type: start, Timestamp: 287.2168587350141 -Vehicle ID: 7, Event Type: end, Timestamp: 287.2168587350141 -Vehicle ID: 7, Event Type: start, Timestamp: 287.251681557477 -Vehicle ID: 7, Event Type: end, Timestamp: 287.251681557477 -Vehicle ID: 7, Event Type: start, Timestamp: 287.26293593438953 -Vehicle ID: 7, Event Type: end, Timestamp: 287.26293593438953 -Vehicle ID: 7, Event Type: start, Timestamp: 287.28111765724265 -Vehicle ID: 7, Event Type: end, Timestamp: 287.28111765724265 -Vehicle ID: 7, Event Type: start, Timestamp: 287.33794795182365 -Vehicle ID: 7, Event Type: end, Timestamp: 287.33794795182365 -Vehicle ID: 7, Event Type: start, Timestamp: 287.38528557172106 -Vehicle ID: 7, Event Type: end, Timestamp: 287.38528557172106 -Vehicle ID: 7, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 7, Event Type: end, Timestamp: 287.50261787947136 -Vehicle ID: 7, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 7, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 7, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 7, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 7, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 7, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 7, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 7, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 7, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 7, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 7, Event Type: start, Timestamp: 290.60370946507334 -Vehicle ID: 7, Event Type: start, Timestamp: 290.66599483165544 -Vehicle ID: 7, Event Type: start, Timestamp: 290.7684586000132 -Vehicle ID: 7, Event Type: start, Timestamp: 290.7852871505513 -Vehicle ID: 7, Event Type: start, Timestamp: 290.831045309499 -Vehicle ID: 7, Event Type: start, Timestamp: 290.8527123015554 -Vehicle ID: 7, Event Type: start, Timestamp: 290.88401773434776 -Vehicle ID: 7, Event Type: start, Timestamp: 290.940419281618 -Vehicle ID: 7, Event Type: start, Timestamp: 291.00749746822584 -Vehicle ID: 7, Event Type: start, Timestamp: 291.0345661800837 -Vehicle ID: 7, Event Type: start, Timestamp: 293.6498581680012 -Vehicle ID: 7, Event Type: start, Timestamp: 294.00238136868563 -Vehicle ID: 7, Event Type: start, Timestamp: 294.0221660783698 -Vehicle ID: 7, Event Type: start, Timestamp: 294.12619999137644 -Vehicle ID: 7, Event Type: start, Timestamp: 294.13646693978893 -Vehicle ID: 7, Event Type: start, Timestamp: 294.1778402409145 -Vehicle ID: 7, Event Type: start, Timestamp: 294.2608006960223 -Vehicle ID: 7, Event Type: start, Timestamp: 294.29027268915297 -Vehicle ID: 7, Event Type: start, Timestamp: 294.4791493405503 -Vehicle ID: 7, Event Type: start, Timestamp: 294.50178838027784 -Vehicle ID: 7, Event Type: start, Timestamp: 296.667852901004 -Vehicle ID: 7, Event Type: start, Timestamp: 297.25654489126526 -Vehicle ID: 7, Event Type: start, Timestamp: 297.33295070402517 -Vehicle ID: 7, Event Type: start, Timestamp: 297.48555228537975 -Vehicle ID: 7, Event Type: start, Timestamp: 297.5166872492203 -Vehicle ID: 7, Event Type: start, Timestamp: 297.5284305994755 -Vehicle ID: 7, Event Type: start, Timestamp: 297.541227686328 -Vehicle ID: 7, Event Type: start, Timestamp: 297.70265590680225 -Vehicle ID: 7, Event Type: start, Timestamp: 297.9419379307469 -Vehicle ID: 7, Event Type: start, Timestamp: 298.00130163216903 +Vehicle ID: 5, Event Type: start, Timestamp: 255.1177739173595 +Vehicle ID: 5, Event Type: start, Timestamp: 255.13383339664364 +Vehicle ID: 5, Event Type: start, Timestamp: 255.1551764045627 +Vehicle ID: 5, Event Type: start, Timestamp: 255.21529054174545 +Vehicle ID: 5, Event Type: start, Timestamp: 255.33809377912004 +Vehicle ID: 5, Event Type: start, Timestamp: 255.36358080659969 +Vehicle ID: 5, Event Type: start, Timestamp: 255.3845508434304 +Vehicle ID: 5, Event Type: start, Timestamp: 255.4418715664773 +Vehicle ID: 5, Event Type: start, Timestamp: 255.56114718882512 +Vehicle ID: 5, Event Type: start, Timestamp: 255.56423693872185 +Vehicle ID: 5, Event Type: start, Timestamp: 258.24349872546856 +Vehicle ID: 5, Event Type: start, Timestamp: 258.4650072750476 +Vehicle ID: 5, Event Type: start, Timestamp: 258.4761942345989 +Vehicle ID: 5, Event Type: start, Timestamp: 258.67034652720895 +Vehicle ID: 5, Event Type: start, Timestamp: 258.6983222507228 +Vehicle ID: 5, Event Type: start, Timestamp: 258.7056804657048 +Vehicle ID: 5, Event Type: start, Timestamp: 258.8436158843273 +Vehicle ID: 5, Event Type: start, Timestamp: 258.8446200790034 +Vehicle ID: 5, Event Type: start, Timestamp: 258.8567466592009 +Vehicle ID: 5, Event Type: start, Timestamp: 259.13222223630964 +Vehicle ID: 5, Event Type: start, Timestamp: 261.41927541729626 +Vehicle ID: 5, Event Type: start, Timestamp: 261.85981182977 +Vehicle ID: 5, Event Type: start, Timestamp: 262.00744313857297 +Vehicle ID: 5, Event Type: start, Timestamp: 262.04419666422973 +Vehicle ID: 5, Event Type: start, Timestamp: 262.12052432385553 +Vehicle ID: 5, Event Type: start, Timestamp: 262.13825545081676 +Vehicle ID: 5, Event Type: start, Timestamp: 262.1688500214058 +Vehicle ID: 5, Event Type: start, Timestamp: 262.20298316224586 +Vehicle ID: 5, Event Type: start, Timestamp: 262.2846554677608 +Vehicle ID: 5, Event Type: start, Timestamp: 262.3757844346226 +Vehicle ID: 7, Event Type: start, Timestamp: 286.2486675293738 +Vehicle ID: 7, Event Type: end, Timestamp: 286.2486675293738 +Vehicle ID: 7, Event Type: start, Timestamp: 286.30142694243233 +Vehicle ID: 7, Event Type: end, Timestamp: 286.30142694243233 +Vehicle ID: 7, Event Type: start, Timestamp: 286.48280313073826 +Vehicle ID: 7, Event Type: end, Timestamp: 286.48280313073826 +Vehicle ID: 7, Event Type: start, Timestamp: 286.4932018160594 +Vehicle ID: 7, Event Type: end, Timestamp: 286.4932018160594 +Vehicle ID: 7, Event Type: start, Timestamp: 286.52972485757994 +Vehicle ID: 7, Event Type: end, Timestamp: 286.52972485757994 +Vehicle ID: 7, Event Type: start, Timestamp: 286.54136192566267 +Vehicle ID: 7, Event Type: end, Timestamp: 286.54136192566267 +Vehicle ID: 7, Event Type: start, Timestamp: 286.5533462943098 +Vehicle ID: 7, Event Type: end, Timestamp: 286.5533462943098 +Vehicle ID: 7, Event Type: start, Timestamp: 286.59874296396134 +Vehicle ID: 7, Event Type: end, Timestamp: 286.59874296396134 +Vehicle ID: 7, Event Type: start, Timestamp: 286.599813491626 +Vehicle ID: 7, Event Type: end, Timestamp: 286.599813491626 +Vehicle ID: 7, Event Type: start, Timestamp: 286.60849584854896 +Vehicle ID: 7, Event Type: end, Timestamp: 286.60849584854896 +Vehicle ID: 7, Event Type: start, Timestamp: 286.61295374293053 +Vehicle ID: 7, Event Type: end, Timestamp: 286.61295374293053 +Vehicle ID: 7, Event Type: start, Timestamp: 286.6214982533734 +Vehicle ID: 7, Event Type: end, Timestamp: 286.6214982533734 +Vehicle ID: 7, Event Type: start, Timestamp: 286.626951889465 +Vehicle ID: 7, Event Type: end, Timestamp: 286.626951889465 +Vehicle ID: 7, Event Type: start, Timestamp: 286.62978501072746 +Vehicle ID: 7, Event Type: end, Timestamp: 286.62978501072746 +Vehicle ID: 7, Event Type: start, Timestamp: 286.6338491096368 +Vehicle ID: 7, Event Type: end, Timestamp: 286.6338491096368 +Vehicle ID: 7, Event Type: start, Timestamp: 286.6339046483647 +Vehicle ID: 7, Event Type: end, Timestamp: 286.6339046483647 +Vehicle ID: 7, Event Type: start, Timestamp: 286.64725270153684 +Vehicle ID: 7, Event Type: end, Timestamp: 286.64725270153684 +Vehicle ID: 7, Event Type: start, Timestamp: 286.64828238775397 +Vehicle ID: 7, Event Type: end, Timestamp: 286.64828238775397 +Vehicle ID: 7, Event Type: start, Timestamp: 286.6529796280167 +Vehicle ID: 7, Event Type: end, Timestamp: 286.6529796280167 +Vehicle ID: 7, Event Type: start, Timestamp: 286.6591985569743 +Vehicle ID: 7, Event Type: end, Timestamp: 286.6591985569743 +Vehicle ID: 7, Event Type: start, Timestamp: 286.6592568661335 +Vehicle ID: 7, Event Type: end, Timestamp: 286.6592568661335 +Vehicle ID: 7, Event Type: start, Timestamp: 286.6743182721671 +Vehicle ID: 7, Event Type: end, Timestamp: 286.6743182721671 +Vehicle ID: 7, Event Type: start, Timestamp: 286.67918450935315 +Vehicle ID: 7, Event Type: end, Timestamp: 286.67918450935315 +Vehicle ID: 7, Event Type: start, Timestamp: 286.679588470797 +Vehicle ID: 7, Event Type: end, Timestamp: 286.679588470797 +Vehicle ID: 7, Event Type: start, Timestamp: 286.68506006549524 +Vehicle ID: 7, Event Type: end, Timestamp: 286.68506006549524 +Vehicle ID: 7, Event Type: start, Timestamp: 286.68560052493535 +Vehicle ID: 7, Event Type: end, Timestamp: 286.68560052493535 +Vehicle ID: 7, Event Type: start, Timestamp: 286.68992542641905 +Vehicle ID: 7, Event Type: end, Timestamp: 286.68992542641905 +Vehicle ID: 7, Event Type: start, Timestamp: 286.692735559887 +Vehicle ID: 7, Event Type: end, Timestamp: 286.692735559887 +Vehicle ID: 7, Event Type: start, Timestamp: 286.7022656534072 +Vehicle ID: 7, Event Type: end, Timestamp: 286.7022656534072 +Vehicle ID: 7, Event Type: start, Timestamp: 286.7137269637127 +Vehicle ID: 7, Event Type: end, Timestamp: 286.7137269637127 +Vehicle ID: 7, Event Type: start, Timestamp: 286.7155584353457 +Vehicle ID: 7, Event Type: end, Timestamp: 286.7155584353457 +Vehicle ID: 7, Event Type: start, Timestamp: 286.71585474556144 +Vehicle ID: 7, Event Type: end, Timestamp: 286.71585474556144 +Vehicle ID: 7, Event Type: start, Timestamp: 286.7210608365174 +Vehicle ID: 7, Event Type: end, Timestamp: 286.7210608365174 +Vehicle ID: 7, Event Type: start, Timestamp: 286.7215609014895 +Vehicle ID: 7, Event Type: end, Timestamp: 286.7215609014895 +Vehicle ID: 7, Event Type: start, Timestamp: 286.7226514847775 +Vehicle ID: 7, Event Type: end, Timestamp: 286.7226514847775 +Vehicle ID: 7, Event Type: start, Timestamp: 286.7389519077027 +Vehicle ID: 7, Event Type: end, Timestamp: 286.7389519077027 +Vehicle ID: 7, Event Type: start, Timestamp: 286.7441554552264 +Vehicle ID: 7, Event Type: end, Timestamp: 286.7441554552264 +Vehicle ID: 7, Event Type: start, Timestamp: 286.7477220478195 +Vehicle ID: 7, Event Type: end, Timestamp: 286.7477220478195 +Vehicle ID: 7, Event Type: start, Timestamp: 286.7558673456066 +Vehicle ID: 7, Event Type: end, Timestamp: 286.7558673456066 +Vehicle ID: 7, Event Type: start, Timestamp: 286.75608406940273 +Vehicle ID: 7, Event Type: end, Timestamp: 286.75608406940273 +Vehicle ID: 7, Event Type: start, Timestamp: 286.7561166538875 +Vehicle ID: 7, Event Type: end, Timestamp: 286.7561166538875 +Vehicle ID: 7, Event Type: start, Timestamp: 286.7681863612352 +Vehicle ID: 7, Event Type: end, Timestamp: 286.7681863612352 +Vehicle ID: 7, Event Type: start, Timestamp: 286.79226048547395 +Vehicle ID: 7, Event Type: end, Timestamp: 286.79226048547395 +Vehicle ID: 7, Event Type: start, Timestamp: 286.7935514280163 +Vehicle ID: 7, Event Type: end, Timestamp: 286.7935514280163 +Vehicle ID: 7, Event Type: start, Timestamp: 286.7935639562887 +Vehicle ID: 7, Event Type: end, Timestamp: 286.7935639562887 +Vehicle ID: 7, Event Type: start, Timestamp: 286.8017719013135 +Vehicle ID: 7, Event Type: end, Timestamp: 286.8017719013135 +Vehicle ID: 7, Event Type: start, Timestamp: 286.81529395595004 +Vehicle ID: 7, Event Type: end, Timestamp: 286.81529395595004 +Vehicle ID: 7, Event Type: start, Timestamp: 286.8213853681062 +Vehicle ID: 7, Event Type: end, Timestamp: 286.8213853681062 +Vehicle ID: 7, Event Type: start, Timestamp: 286.82863597563335 +Vehicle ID: 7, Event Type: end, Timestamp: 286.82863597563335 +Vehicle ID: 7, Event Type: start, Timestamp: 286.8293599218265 +Vehicle ID: 7, Event Type: end, Timestamp: 286.8293599218265 +Vehicle ID: 7, Event Type: start, Timestamp: 286.84209367574863 +Vehicle ID: 7, Event Type: end, Timestamp: 286.84209367574863 +Vehicle ID: 7, Event Type: start, Timestamp: 286.8508632290787 +Vehicle ID: 7, Event Type: end, Timestamp: 286.8508632290787 +Vehicle ID: 7, Event Type: start, Timestamp: 286.85141832772524 +Vehicle ID: 7, Event Type: end, Timestamp: 286.85141832772524 +Vehicle ID: 7, Event Type: start, Timestamp: 286.85225842293255 +Vehicle ID: 7, Event Type: end, Timestamp: 286.85225842293255 +Vehicle ID: 7, Event Type: start, Timestamp: 286.8583008343282 +Vehicle ID: 7, Event Type: end, Timestamp: 286.8583008343282 +Vehicle ID: 7, Event Type: start, Timestamp: 286.86425024013255 +Vehicle ID: 7, Event Type: end, Timestamp: 286.86425024013255 +Vehicle ID: 7, Event Type: start, Timestamp: 286.8656590903207 +Vehicle ID: 7, Event Type: end, Timestamp: 286.8656590903207 +Vehicle ID: 7, Event Type: start, Timestamp: 286.87691477684683 +Vehicle ID: 7, Event Type: end, Timestamp: 286.87691477684683 +Vehicle ID: 7, Event Type: start, Timestamp: 286.87996861005297 +Vehicle ID: 7, Event Type: end, Timestamp: 286.87996861005297 +Vehicle ID: 7, Event Type: start, Timestamp: 286.88343638167174 +Vehicle ID: 7, Event Type: end, Timestamp: 286.88343638167174 +Vehicle ID: 7, Event Type: start, Timestamp: 286.88925405686206 +Vehicle ID: 7, Event Type: end, Timestamp: 286.88925405686206 +Vehicle ID: 7, Event Type: start, Timestamp: 286.89203736552327 +Vehicle ID: 7, Event Type: end, Timestamp: 286.89203736552327 +Vehicle ID: 7, Event Type: start, Timestamp: 286.8921323926715 +Vehicle ID: 7, Event Type: end, Timestamp: 286.8921323926715 +Vehicle ID: 7, Event Type: start, Timestamp: 286.8965859524383 +Vehicle ID: 7, Event Type: end, Timestamp: 286.8965859524383 +Vehicle ID: 7, Event Type: start, Timestamp: 286.9191052725913 +Vehicle ID: 7, Event Type: end, Timestamp: 286.9191052725913 +Vehicle ID: 7, Event Type: start, Timestamp: 286.92662576786495 +Vehicle ID: 7, Event Type: end, Timestamp: 286.92662576786495 +Vehicle ID: 7, Event Type: start, Timestamp: 286.93737477075916 +Vehicle ID: 7, Event Type: end, Timestamp: 286.93737477075916 +Vehicle ID: 7, Event Type: start, Timestamp: 286.9412963601412 +Vehicle ID: 7, Event Type: end, Timestamp: 286.9412963601412 +Vehicle ID: 7, Event Type: start, Timestamp: 286.9659449129824 +Vehicle ID: 7, Event Type: end, Timestamp: 286.9659449129824 +Vehicle ID: 7, Event Type: start, Timestamp: 286.9711240831367 +Vehicle ID: 7, Event Type: end, Timestamp: 286.9711240831367 +Vehicle ID: 7, Event Type: start, Timestamp: 287.0213804977999 +Vehicle ID: 7, Event Type: end, Timestamp: 287.0213804977999 +Vehicle ID: 7, Event Type: start, Timestamp: 287.0364844694459 +Vehicle ID: 7, Event Type: end, Timestamp: 287.0364844694459 +Vehicle ID: 7, Event Type: start, Timestamp: 287.04858746386304 +Vehicle ID: 7, Event Type: end, Timestamp: 287.04858746386304 +Vehicle ID: 7, Event Type: start, Timestamp: 287.0565090846145 +Vehicle ID: 7, Event Type: end, Timestamp: 287.0565090846145 +Vehicle ID: 7, Event Type: start, Timestamp: 287.0640274759096 +Vehicle ID: 7, Event Type: end, Timestamp: 287.0640274759096 +Vehicle ID: 7, Event Type: start, Timestamp: 287.06508874841467 +Vehicle ID: 7, Event Type: end, Timestamp: 287.06508874841467 +Vehicle ID: 7, Event Type: start, Timestamp: 287.0664517058599 +Vehicle ID: 7, Event Type: end, Timestamp: 287.0664517058599 +Vehicle ID: 7, Event Type: start, Timestamp: 287.1050236805988 +Vehicle ID: 7, Event Type: end, Timestamp: 287.1050236805988 +Vehicle ID: 7, Event Type: start, Timestamp: 287.1306008074966 +Vehicle ID: 7, Event Type: end, Timestamp: 287.1306008074966 +Vehicle ID: 7, Event Type: start, Timestamp: 287.16951335196745 +Vehicle ID: 7, Event Type: end, Timestamp: 287.16951335196745 +Vehicle ID: 7, Event Type: start, Timestamp: 287.1741449911549 +Vehicle ID: 7, Event Type: end, Timestamp: 287.1741449911549 +Vehicle ID: 7, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 7, Event Type: end, Timestamp: 287.1908033118669 +Vehicle ID: 7, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 7, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 7, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 7, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 7, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 7, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 7, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 7, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 7, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 7, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 7, Event Type: start, Timestamp: 290.24124089007273 +Vehicle ID: 7, Event Type: start, Timestamp: 290.41877296373553 +Vehicle ID: 7, Event Type: start, Timestamp: 290.43105636686175 +Vehicle ID: 7, Event Type: start, Timestamp: 290.498048222908 +Vehicle ID: 7, Event Type: start, Timestamp: 290.5593493740203 +Vehicle ID: 7, Event Type: start, Timestamp: 290.57981768352386 +Vehicle ID: 7, Event Type: start, Timestamp: 290.6549848822593 +Vehicle ID: 7, Event Type: start, Timestamp: 290.6681292232688 +Vehicle ID: 7, Event Type: start, Timestamp: 290.7207085294063 +Vehicle ID: 7, Event Type: start, Timestamp: 290.77066763969765 +Vehicle ID: 7, Event Type: start, Timestamp: 293.5913748047546 +Vehicle ID: 7, Event Type: start, Timestamp: 293.8280469083808 +Vehicle ID: 7, Event Type: start, Timestamp: 293.83567375217194 +Vehicle ID: 7, Event Type: start, Timestamp: 293.8427277924664 +Vehicle ID: 7, Event Type: start, Timestamp: 293.97497682558827 +Vehicle ID: 7, Event Type: start, Timestamp: 293.99938520528264 +Vehicle ID: 7, Event Type: start, Timestamp: 294.01136646545797 +Vehicle ID: 7, Event Type: start, Timestamp: 294.08481012557667 +Vehicle ID: 7, Event Type: start, Timestamp: 294.1257515599836 +Vehicle ID: 7, Event Type: start, Timestamp: 294.23945610991314 +Vehicle ID: 7, Event Type: start, Timestamp: 297.0946120520787 +Vehicle ID: 7, Event Type: start, Timestamp: 297.23187745387395 +Vehicle ID: 7, Event Type: start, Timestamp: 297.2596917175385 +Vehicle ID: 7, Event Type: start, Timestamp: 297.2735806964041 +Vehicle ID: 7, Event Type: start, Timestamp: 297.44069451034954 +Vehicle ID: 7, Event Type: start, Timestamp: 297.45388525629045 +Vehicle ID: 7, Event Type: start, Timestamp: 297.5130611162925 +Vehicle ID: 7, Event Type: start, Timestamp: 297.53546191262075 +Vehicle ID: 7, Event Type: start, Timestamp: 297.53652905789505 +Vehicle ID: 7, Event Type: start, Timestamp: 297.74277561994523 Vehicle ID: 7, Event Type: start, Timestamp: 315.0 Vehicle ID: 7, Event Type: start, Timestamp: 315.0 Vehicle ID: 7, Event Type: start, Timestamp: 315.0 @@ -700,33 +700,33 @@ Vehicle ID: 7, Event Type: start, Timestamp: 315.0 Vehicle ID: 7, Event Type: start, Timestamp: 315.0 Vehicle ID: 7, Event Type: start, Timestamp: 315.0 Vehicle ID: 7, Event Type: start, Timestamp: 315.0 -Vehicle ID: 7, Event Type: start, Timestamp: 318.2001831930649 -Vehicle ID: 7, Event Type: start, Timestamp: 318.22535310319665 -Vehicle ID: 7, Event Type: start, Timestamp: 318.33586704387517 -Vehicle ID: 7, Event Type: start, Timestamp: 318.34210669468484 -Vehicle ID: 7, Event Type: start, Timestamp: 318.3441417534911 -Vehicle ID: 7, Event Type: start, Timestamp: 318.4118404784712 -Vehicle ID: 7, Event Type: start, Timestamp: 318.4230132187219 -Vehicle ID: 7, Event Type: start, Timestamp: 318.43704882076077 -Vehicle ID: 7, Event Type: start, Timestamp: 318.481724850623 -Vehicle ID: 7, Event Type: start, Timestamp: 318.51148689585193 -Vehicle ID: 7, Event Type: start, Timestamp: 321.6167104830314 -Vehicle ID: 7, Event Type: start, Timestamp: 321.62849107291277 -Vehicle ID: 7, Event Type: start, Timestamp: 321.6784125988842 -Vehicle ID: 7, Event Type: start, Timestamp: 321.75048222270533 -Vehicle ID: 7, Event Type: start, Timestamp: 321.75164175007177 -Vehicle ID: 7, Event Type: start, Timestamp: 321.8044266933268 -Vehicle ID: 7, Event Type: start, Timestamp: 321.864152151911 -Vehicle ID: 7, Event Type: start, Timestamp: 321.8728513590356 -Vehicle ID: 7, Event Type: start, Timestamp: 321.92841390591764 -Vehicle ID: 7, Event Type: start, Timestamp: 322.0156669374294 -Vehicle ID: 7, Event Type: start, Timestamp: 324.8246834762719 -Vehicle ID: 7, Event Type: start, Timestamp: 324.93261695691297 -Vehicle ID: 7, Event Type: start, Timestamp: 324.98339570574075 -Vehicle ID: 7, Event Type: start, Timestamp: 325.00581694201946 -Vehicle ID: 7, Event Type: start, Timestamp: 325.07039368099294 -Vehicle ID: 7, Event Type: start, Timestamp: 325.1225521753373 -Vehicle ID: 7, Event Type: start, Timestamp: 325.17919319105795 -Vehicle ID: 7, Event Type: start, Timestamp: 325.1928969561298 -Vehicle ID: 7, Event Type: start, Timestamp: 325.265980385633 -Vehicle ID: 7, Event Type: start, Timestamp: 325.39992117334685 +Vehicle ID: 7, Event Type: start, Timestamp: 317.9779666383999 +Vehicle ID: 7, Event Type: start, Timestamp: 318.2344157422331 +Vehicle ID: 7, Event Type: start, Timestamp: 318.2659937572542 +Vehicle ID: 7, Event Type: start, Timestamp: 318.3026317463095 +Vehicle ID: 7, Event Type: start, Timestamp: 318.409734784028 +Vehicle ID: 7, Event Type: start, Timestamp: 318.4228329279144 +Vehicle ID: 7, Event Type: start, Timestamp: 318.4415397872024 +Vehicle ID: 7, Event Type: start, Timestamp: 318.44751094571143 +Vehicle ID: 7, Event Type: start, Timestamp: 318.6101070288131 +Vehicle ID: 7, Event Type: start, Timestamp: 318.66912920842555 +Vehicle ID: 7, Event Type: start, Timestamp: 321.2606914267114 +Vehicle ID: 7, Event Type: start, Timestamp: 321.4327750302874 +Vehicle ID: 7, Event Type: start, Timestamp: 321.4893454253754 +Vehicle ID: 7, Event Type: start, Timestamp: 321.53590975927887 +Vehicle ID: 7, Event Type: start, Timestamp: 321.5986694207599 +Vehicle ID: 7, Event Type: start, Timestamp: 321.6398720022045 +Vehicle ID: 7, Event Type: start, Timestamp: 321.7673866794433 +Vehicle ID: 7, Event Type: start, Timestamp: 321.7853386110861 +Vehicle ID: 7, Event Type: start, Timestamp: 321.8982229852671 +Vehicle ID: 7, Event Type: start, Timestamp: 322.0560459450651 +Vehicle ID: 7, Event Type: start, Timestamp: 324.47676632168196 +Vehicle ID: 7, Event Type: start, Timestamp: 324.644364203983 +Vehicle ID: 7, Event Type: start, Timestamp: 324.6833694862226 +Vehicle ID: 7, Event Type: start, Timestamp: 324.7036064140159 +Vehicle ID: 7, Event Type: start, Timestamp: 324.8809394839729 +Vehicle ID: 7, Event Type: start, Timestamp: 324.95272972635007 +Vehicle ID: 7, Event Type: start, Timestamp: 324.9789508305227 +Vehicle ID: 7, Event Type: start, Timestamp: 325.086316977708 +Vehicle ID: 7, Event Type: start, Timestamp: 325.10089665794004 +Vehicle ID: 7, Event Type: start, Timestamp: 325.54499836807526 diff --git a/hostler_work_log.txt b/hostler_work_log.txt index c361ca4b..ee526025 100644 --- a/hostler_work_log.txt +++ b/hostler_work_log.txt @@ -1,754 +1,754 @@ -Vehicle ID: 1, Event Type: start, Timestamp: 174.2810811099409 -Vehicle ID: 1, Event Type: start, Timestamp: 174.28268979218822 -Vehicle ID: 1, Event Type: end, Timestamp: 174.28395292342123 -Vehicle ID: 1, Event Type: end, Timestamp: 174.28518690398343 -Vehicle ID: 1, Event Type: start, Timestamp: 174.47535372469952 -Vehicle ID: 1, Event Type: end, Timestamp: 174.47719203115253 -Vehicle ID: 1, Event Type: start, Timestamp: 174.4825116311807 -Vehicle ID: 1, Event Type: end, Timestamp: 174.48459639917562 -Vehicle ID: 1, Event Type: start, Timestamp: 174.4875712829535 -Vehicle ID: 1, Event Type: end, Timestamp: 174.48964836918907 -Vehicle ID: 1, Event Type: start, Timestamp: 174.5075471516836 -Vehicle ID: 1, Event Type: end, Timestamp: 174.50981155264924 -Vehicle ID: 1, Event Type: start, Timestamp: 174.58578236688152 -Vehicle ID: 1, Event Type: end, Timestamp: 174.5881869348097 -Vehicle ID: 1, Event Type: start, Timestamp: 174.60466618194823 -Vehicle ID: 1, Event Type: end, Timestamp: 174.60642090477222 -Vehicle ID: 1, Event Type: start, Timestamp: 174.610752074466 -Vehicle ID: 1, Event Type: end, Timestamp: 174.61196616456596 -Vehicle ID: 1, Event Type: start, Timestamp: 174.641496556886 -Vehicle ID: 1, Event Type: start, Timestamp: 174.6427067265711 -Vehicle ID: 1, Event Type: end, Timestamp: 174.6436638141041 -Vehicle ID: 1, Event Type: end, Timestamp: 174.6445912272691 -Vehicle ID: 1, Event Type: start, Timestamp: 174.65276278956236 -Vehicle ID: 1, Event Type: end, Timestamp: 174.65492738107739 -Vehicle ID: 1, Event Type: start, Timestamp: 174.66232655010518 -Vehicle ID: 1, Event Type: end, Timestamp: 174.664226243262 -Vehicle ID: 1, Event Type: start, Timestamp: 174.66449155538277 -Vehicle ID: 1, Event Type: end, Timestamp: 174.66691574040829 -Vehicle ID: 1, Event Type: start, Timestamp: 174.6842730369544 -Vehicle ID: 1, Event Type: end, Timestamp: 174.68628592634695 -Vehicle ID: 1, Event Type: start, Timestamp: 174.69860643256507 -Vehicle ID: 1, Event Type: end, Timestamp: 174.70033609178012 -Vehicle ID: 1, Event Type: start, Timestamp: 174.70459646071723 -Vehicle ID: 1, Event Type: end, Timestamp: 174.7068167077512 -Vehicle ID: 1, Event Type: start, Timestamp: 174.71934934758505 -Vehicle ID: 1, Event Type: end, Timestamp: 174.72082963761903 -Vehicle ID: 1, Event Type: start, Timestamp: 174.72249676964316 -Vehicle ID: 1, Event Type: start, Timestamp: 174.72451510758023 -Vehicle ID: 1, Event Type: end, Timestamp: 174.72494272929708 -Vehicle ID: 1, Event Type: end, Timestamp: 174.72682237956218 -Vehicle ID: 1, Event Type: start, Timestamp: 174.76080585800494 -Vehicle ID: 1, Event Type: start, Timestamp: 174.76208971599385 -Vehicle ID: 1, Event Type: end, Timestamp: 174.76300030780627 -Vehicle ID: 1, Event Type: end, Timestamp: 174.7648593869707 -Vehicle ID: 1, Event Type: start, Timestamp: 174.76629786586113 -Vehicle ID: 1, Event Type: end, Timestamp: 174.76947795776732 -Vehicle ID: 1, Event Type: start, Timestamp: 174.77332599605248 -Vehicle ID: 1, Event Type: end, Timestamp: 174.7749154016669 -Vehicle ID: 1, Event Type: start, Timestamp: 174.78093665609822 -Vehicle ID: 1, Event Type: end, Timestamp: 174.78291732836286 -Vehicle ID: 1, Event Type: start, Timestamp: 174.78342586803905 -Vehicle ID: 1, Event Type: end, Timestamp: 174.78558867378658 -Vehicle ID: 1, Event Type: start, Timestamp: 174.81065185790777 -Vehicle ID: 1, Event Type: end, Timestamp: 174.81369392408672 -Vehicle ID: 1, Event Type: start, Timestamp: 174.8279274940461 -Vehicle ID: 1, Event Type: start, Timestamp: 174.8304935611614 -Vehicle ID: 1, Event Type: end, Timestamp: 174.8306805090947 -Vehicle ID: 1, Event Type: end, Timestamp: 174.83196811315972 -Vehicle ID: 1, Event Type: start, Timestamp: 174.8351297346581 -Vehicle ID: 1, Event Type: end, Timestamp: 174.83811978100655 -Vehicle ID: 1, Event Type: start, Timestamp: 174.84351075974314 -Vehicle ID: 1, Event Type: start, Timestamp: 174.84447204783694 -Vehicle ID: 1, Event Type: end, Timestamp: 174.84518673661086 -Vehicle ID: 1, Event Type: end, Timestamp: 174.84750534550696 -Vehicle ID: 1, Event Type: start, Timestamp: 174.85873612140853 -Vehicle ID: 1, Event Type: end, Timestamp: 174.8605832808858 -Vehicle ID: 1, Event Type: start, Timestamp: 174.8646455304948 -Vehicle ID: 1, Event Type: end, Timestamp: 174.86606856561383 -Vehicle ID: 1, Event Type: start, Timestamp: 174.86716561487376 -Vehicle ID: 1, Event Type: end, Timestamp: 174.8686484578002 -Vehicle ID: 1, Event Type: start, Timestamp: 174.87879709722236 -Vehicle ID: 1, Event Type: end, Timestamp: 174.880404714017 -Vehicle ID: 1, Event Type: start, Timestamp: 174.88271735729327 -Vehicle ID: 1, Event Type: end, Timestamp: 174.8848710774772 -Vehicle ID: 1, Event Type: start, Timestamp: 174.8905777601963 -Vehicle ID: 1, Event Type: end, Timestamp: 174.8925428506389 -Vehicle ID: 1, Event Type: start, Timestamp: 174.89465126549422 -Vehicle ID: 1, Event Type: end, Timestamp: 174.89747580440394 -Vehicle ID: 1, Event Type: start, Timestamp: 174.90062493548228 -Vehicle ID: 1, Event Type: end, Timestamp: 174.90305769890233 -Vehicle ID: 1, Event Type: start, Timestamp: 174.91481178222327 -Vehicle ID: 1, Event Type: end, Timestamp: 174.91700300350783 -Vehicle ID: 1, Event Type: start, Timestamp: 174.9196128463235 -Vehicle ID: 1, Event Type: end, Timestamp: 174.92165070047258 -Vehicle ID: 1, Event Type: start, Timestamp: 174.92233085074517 -Vehicle ID: 1, Event Type: end, Timestamp: 174.92505765976085 -Vehicle ID: 1, Event Type: start, Timestamp: 174.92508675154414 -Vehicle ID: 1, Event Type: start, Timestamp: 174.92690599588406 -Vehicle ID: 1, Event Type: end, Timestamp: 174.92735034592587 -Vehicle ID: 1, Event Type: end, Timestamp: 174.9282227507332 -Vehicle ID: 1, Event Type: start, Timestamp: 174.92907673905395 -Vehicle ID: 1, Event Type: start, Timestamp: 174.93010336276376 -Vehicle ID: 1, Event Type: end, Timestamp: 174.93036662729924 -Vehicle ID: 1, Event Type: start, Timestamp: 174.93036662729924 -Vehicle ID: 1, Event Type: end, Timestamp: 174.93199711900232 -Vehicle ID: 1, Event Type: start, Timestamp: 174.932948469298 -Vehicle ID: 1, Event Type: end, Timestamp: 174.93471283438802 -Vehicle ID: 1, Event Type: start, Timestamp: 174.95643371952448 -Vehicle ID: 1, Event Type: end, Timestamp: 174.95840472544464 -Vehicle ID: 1, Event Type: start, Timestamp: 174.95999447295222 -Vehicle ID: 1, Event Type: start, Timestamp: 174.9614823883396 -Vehicle ID: 1, Event Type: end, Timestamp: 174.96183667656115 -Vehicle ID: 1, Event Type: start, Timestamp: 174.96183667656115 -Vehicle ID: 1, Event Type: end, Timestamp: 174.9632247175163 -Vehicle ID: 1, Event Type: start, Timestamp: 174.96592695032882 -Vehicle ID: 1, Event Type: start, Timestamp: 174.96595641191948 -Vehicle ID: 1, Event Type: end, Timestamp: 174.9680332563768 -Vehicle ID: 1, Event Type: end, Timestamp: 174.96818961109247 -Vehicle ID: 1, Event Type: start, Timestamp: 174.97472398411293 -Vehicle ID: 1, Event Type: start, Timestamp: 174.9753245470635 -Vehicle ID: 1, Event Type: end, Timestamp: 174.97647923270935 -Vehicle ID: 1, Event Type: start, Timestamp: 174.97647923270935 -Vehicle ID: 1, Event Type: end, Timestamp: 174.97767022617978 -Vehicle ID: 1, Event Type: start, Timestamp: 174.9828149817809 -Vehicle ID: 1, Event Type: end, Timestamp: 174.98591904103492 -Vehicle ID: 1, Event Type: start, Timestamp: 174.99099326754603 -Vehicle ID: 1, Event Type: end, Timestamp: 174.9921421478339 -Vehicle ID: 1, Event Type: start, Timestamp: 175.00976794251002 -Vehicle ID: 1, Event Type: start, Timestamp: 175.01233327114176 -Vehicle ID: 1, Event Type: end, Timestamp: 175.01234501239816 -Vehicle ID: 1, Event Type: start, Timestamp: 175.01234501239816 -Vehicle ID: 1, Event Type: end, Timestamp: 175.01396189396155 -Vehicle ID: 1, Event Type: start, Timestamp: 175.01947438490797 -Vehicle ID: 1, Event Type: end, Timestamp: 175.02211324234312 -Vehicle ID: 1, Event Type: start, Timestamp: 175.03348852150702 -Vehicle ID: 1, Event Type: start, Timestamp: 175.03544352395033 -Vehicle ID: 1, Event Type: end, Timestamp: 175.03554408726532 -Vehicle ID: 1, Event Type: start, Timestamp: 175.03554408726532 -Vehicle ID: 1, Event Type: end, Timestamp: 175.03804885557128 -Vehicle ID: 1, Event Type: start, Timestamp: 175.04075999001896 -Vehicle ID: 1, Event Type: end, Timestamp: 175.04320388764327 -Vehicle ID: 1, Event Type: start, Timestamp: 175.0518569895815 -Vehicle ID: 1, Event Type: end, Timestamp: 175.05520174900056 -Vehicle ID: 1, Event Type: start, Timestamp: 175.08500368417586 -Vehicle ID: 1, Event Type: end, Timestamp: 175.08691020200325 -Vehicle ID: 1, Event Type: start, Timestamp: 175.09476839687287 -Vehicle ID: 1, Event Type: end, Timestamp: 175.09636970700612 -Vehicle ID: 1, Event Type: start, Timestamp: 175.10906211025483 -Vehicle ID: 1, Event Type: end, Timestamp: 175.1110504828931 -Vehicle ID: 1, Event Type: start, Timestamp: 175.11319094964128 -Vehicle ID: 1, Event Type: end, Timestamp: 175.11530326708746 -Vehicle ID: 1, Event Type: start, Timestamp: 175.11797960349614 -Vehicle ID: 1, Event Type: end, Timestamp: 175.12031850607394 -Vehicle ID: 1, Event Type: start, Timestamp: 175.12254529087008 -Vehicle ID: 1, Event Type: end, Timestamp: 175.1250112552903 -Vehicle ID: 1, Event Type: start, Timestamp: 175.1339043164946 -Vehicle ID: 1, Event Type: start, Timestamp: 175.13485893021883 -Vehicle ID: 1, Event Type: end, Timestamp: 175.13671234417697 -Vehicle ID: 1, Event Type: end, Timestamp: 175.13715150322395 -Vehicle ID: 1, Event Type: start, Timestamp: 175.14177742442584 -Vehicle ID: 1, Event Type: end, Timestamp: 175.14354082281284 -Vehicle ID: 1, Event Type: start, Timestamp: 175.17193123752045 -Vehicle ID: 1, Event Type: end, Timestamp: 175.1737790327937 -Vehicle ID: 1, Event Type: start, Timestamp: 175.17905309520847 -Vehicle ID: 1, Event Type: start, Timestamp: 175.17977384430614 -Vehicle ID: 1, Event Type: end, Timestamp: 175.18100792313348 -Vehicle ID: 1, Event Type: end, Timestamp: 175.18194362370173 -Vehicle ID: 1, Event Type: start, Timestamp: 175.18374598774682 -Vehicle ID: 1, Event Type: start, Timestamp: 175.18416589520018 -Vehicle ID: 1, Event Type: end, Timestamp: 175.18595009786452 -Vehicle ID: 1, Event Type: end, Timestamp: 175.1865052942725 -Vehicle ID: 1, Event Type: start, Timestamp: 175.21140781854524 -Vehicle ID: 1, Event Type: end, Timestamp: 175.21349456057004 -Vehicle ID: 1, Event Type: start, Timestamp: 175.27765311224442 -Vehicle ID: 1, Event Type: end, Timestamp: 175.27994554872316 -Vehicle ID: 1, Event Type: start, Timestamp: 175.3237013172593 -Vehicle ID: 1, Event Type: end, Timestamp: 175.32701583831 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: start, Timestamp: 175.4411026334334 -Vehicle ID: 1, Event Type: end, Timestamp: 175.44371170639235 -Vehicle ID: 1, Event Type: end, Timestamp: 175.44385555500045 -Vehicle ID: 1, Event Type: start, Timestamp: 230.29827341829468 -Vehicle ID: 1, Event Type: end, Timestamp: 230.30032798322225 -Vehicle ID: 1, Event Type: start, Timestamp: 230.3627720612013 -Vehicle ID: 1, Event Type: end, Timestamp: 230.36455438891477 -Vehicle ID: 1, Event Type: start, Timestamp: 230.3838152252046 -Vehicle ID: 1, Event Type: end, Timestamp: 230.3856024260572 -Vehicle ID: 1, Event Type: start, Timestamp: 230.44777625767 -Vehicle ID: 1, Event Type: end, Timestamp: 230.45057942752922 -Vehicle ID: 1, Event Type: start, Timestamp: 230.46343203485594 -Vehicle ID: 1, Event Type: end, Timestamp: 230.46558775370278 -Vehicle ID: 1, Event Type: start, Timestamp: 230.48355884791818 -Vehicle ID: 1, Event Type: end, Timestamp: 230.48541216385195 -Vehicle ID: 1, Event Type: start, Timestamp: 230.50049767669492 -Vehicle ID: 1, Event Type: end, Timestamp: 230.50165642114152 -Vehicle ID: 1, Event Type: start, Timestamp: 230.51672058869067 -Vehicle ID: 1, Event Type: end, Timestamp: 230.51891843339402 -Vehicle ID: 1, Event Type: start, Timestamp: 230.54979692970642 -Vehicle ID: 1, Event Type: end, Timestamp: 230.552203847837 -Vehicle ID: 1, Event Type: start, Timestamp: 230.56233060560825 -Vehicle ID: 1, Event Type: end, Timestamp: 230.5649337764503 -Vehicle ID: 1, Event Type: start, Timestamp: 230.56683743927576 -Vehicle ID: 1, Event Type: end, Timestamp: 230.56944158634695 -Vehicle ID: 1, Event Type: start, Timestamp: 230.59993390519878 -Vehicle ID: 1, Event Type: end, Timestamp: 230.60315899114823 -Vehicle ID: 1, Event Type: start, Timestamp: 230.61716546147804 -Vehicle ID: 1, Event Type: end, Timestamp: 230.61979608418244 -Vehicle ID: 1, Event Type: start, Timestamp: 230.6312915595422 -Vehicle ID: 1, Event Type: end, Timestamp: 230.633109565271 -Vehicle ID: 1, Event Type: start, Timestamp: 230.63830987544017 -Vehicle ID: 1, Event Type: end, Timestamp: 230.6399428583969 -Vehicle ID: 1, Event Type: start, Timestamp: 230.64494056387875 -Vehicle ID: 1, Event Type: end, Timestamp: 230.64644283286185 -Vehicle ID: 1, Event Type: start, Timestamp: 230.67691745438796 -Vehicle ID: 1, Event Type: end, Timestamp: 230.67927392349506 -Vehicle ID: 1, Event Type: start, Timestamp: 230.69615062963106 -Vehicle ID: 1, Event Type: start, Timestamp: 230.69616965015607 -Vehicle ID: 1, Event Type: end, Timestamp: 230.69822420492406 -Vehicle ID: 1, Event Type: end, Timestamp: 230.6984465540385 -Vehicle ID: 1, Event Type: start, Timestamp: 230.70195429847135 -Vehicle ID: 1, Event Type: end, Timestamp: 230.70373851585686 -Vehicle ID: 1, Event Type: start, Timestamp: 230.72189492049787 -Vehicle ID: 1, Event Type: end, Timestamp: 230.72458740957615 -Vehicle ID: 1, Event Type: start, Timestamp: 230.73387443926376 -Vehicle ID: 1, Event Type: end, Timestamp: 230.7358984550763 -Vehicle ID: 1, Event Type: start, Timestamp: 230.7374823789395 -Vehicle ID: 1, Event Type: start, Timestamp: 230.7384914783118 -Vehicle ID: 1, Event Type: end, Timestamp: 230.7390416036651 -Vehicle ID: 1, Event Type: end, Timestamp: 230.74056217322766 -Vehicle ID: 1, Event Type: start, Timestamp: 230.74636761021665 -Vehicle ID: 1, Event Type: end, Timestamp: 230.7482467323713 -Vehicle ID: 1, Event Type: start, Timestamp: 230.7495708880515 -Vehicle ID: 1, Event Type: start, Timestamp: 230.75011446791038 -Vehicle ID: 1, Event Type: end, Timestamp: 230.75167543166108 -Vehicle ID: 1, Event Type: start, Timestamp: 230.75199221452607 -Vehicle ID: 1, Event Type: start, Timestamp: 230.75237981361724 -Vehicle ID: 1, Event Type: end, Timestamp: 230.75294509450907 -Vehicle ID: 1, Event Type: end, Timestamp: 230.75366794158927 -Vehicle ID: 1, Event Type: end, Timestamp: 230.75548536950802 -Vehicle ID: 1, Event Type: start, Timestamp: 230.76638232213645 -Vehicle ID: 1, Event Type: end, Timestamp: 230.76879199581714 -Vehicle ID: 1, Event Type: start, Timestamp: 230.77192270252183 -Vehicle ID: 1, Event Type: end, Timestamp: 230.7746134784685 -Vehicle ID: 1, Event Type: start, Timestamp: 230.78130464451763 -Vehicle ID: 1, Event Type: end, Timestamp: 230.7827295424007 -Vehicle ID: 1, Event Type: start, Timestamp: 230.78691723670954 -Vehicle ID: 1, Event Type: start, Timestamp: 230.78874165073725 -Vehicle ID: 1, Event Type: end, Timestamp: 230.78981288882684 -Vehicle ID: 1, Event Type: end, Timestamp: 230.79087046009914 -Vehicle ID: 1, Event Type: start, Timestamp: 230.79306011045819 -Vehicle ID: 1, Event Type: end, Timestamp: 230.79507553856206 -Vehicle ID: 1, Event Type: start, Timestamp: 230.79685924887468 -Vehicle ID: 1, Event Type: end, Timestamp: 230.79898595947373 -Vehicle ID: 1, Event Type: start, Timestamp: 230.80491311865396 -Vehicle ID: 1, Event Type: end, Timestamp: 230.808097375316 -Vehicle ID: 1, Event Type: start, Timestamp: 230.80862898781328 -Vehicle ID: 1, Event Type: start, Timestamp: 230.81096809279114 -Vehicle ID: 1, Event Type: end, Timestamp: 230.8113548148281 -Vehicle ID: 1, Event Type: end, Timestamp: 230.81353781106773 -Vehicle ID: 1, Event Type: start, Timestamp: 230.8176327668204 -Vehicle ID: 1, Event Type: end, Timestamp: 230.81934762476286 -Vehicle ID: 1, Event Type: start, Timestamp: 230.83437229401193 -Vehicle ID: 1, Event Type: start, Timestamp: 230.83489521247532 -Vehicle ID: 1, Event Type: start, Timestamp: 230.8364343329917 -Vehicle ID: 1, Event Type: end, Timestamp: 230.8364600030204 -Vehicle ID: 1, Event Type: start, Timestamp: 230.8364600030204 -Vehicle ID: 1, Event Type: end, Timestamp: 230.83689102018806 -Vehicle ID: 1, Event Type: end, Timestamp: 230.83806816330375 -Vehicle ID: 1, Event Type: start, Timestamp: 230.84429061831597 -Vehicle ID: 1, Event Type: end, Timestamp: 230.84674526738746 -Vehicle ID: 1, Event Type: start, Timestamp: 230.84873827051655 -Vehicle ID: 1, Event Type: end, Timestamp: 230.85138280584903 -Vehicle ID: 1, Event Type: start, Timestamp: 230.8517973575957 -Vehicle ID: 1, Event Type: start, Timestamp: 230.85356491182986 -Vehicle ID: 1, Event Type: end, Timestamp: 230.85403059871024 -Vehicle ID: 1, Event Type: start, Timestamp: 230.85403059871024 -Vehicle ID: 1, Event Type: end, Timestamp: 230.85622712466824 -Vehicle ID: 1, Event Type: start, Timestamp: 230.85731259237176 -Vehicle ID: 1, Event Type: end, Timestamp: 230.8598516544014 -Vehicle ID: 1, Event Type: start, Timestamp: 230.86103790575163 -Vehicle ID: 1, Event Type: end, Timestamp: 230.86312034484823 -Vehicle ID: 1, Event Type: start, Timestamp: 230.8653598112958 -Vehicle ID: 1, Event Type: end, Timestamp: 230.86716423562476 -Vehicle ID: 1, Event Type: start, Timestamp: 230.87325812474393 -Vehicle ID: 1, Event Type: start, Timestamp: 230.87502604108292 -Vehicle ID: 1, Event Type: end, Timestamp: 230.87508038794186 -Vehicle ID: 1, Event Type: start, Timestamp: 230.87508038794186 -Vehicle ID: 1, Event Type: end, Timestamp: 230.87694343815176 -Vehicle ID: 1, Event Type: start, Timestamp: 230.9043716159478 -Vehicle ID: 1, Event Type: end, Timestamp: 230.90589056330336 -Vehicle ID: 1, Event Type: start, Timestamp: 230.9065061391592 -Vehicle ID: 1, Event Type: end, Timestamp: 230.9090605885355 -Vehicle ID: 1, Event Type: start, Timestamp: 230.91655853895153 -Vehicle ID: 1, Event Type: end, Timestamp: 230.91858211092872 -Vehicle ID: 1, Event Type: start, Timestamp: 230.9397275368141 -Vehicle ID: 1, Event Type: end, Timestamp: 230.94163521732204 -Vehicle ID: 1, Event Type: start, Timestamp: 230.95743987083137 -Vehicle ID: 1, Event Type: end, Timestamp: 230.96012944038605 -Vehicle ID: 1, Event Type: start, Timestamp: 230.96056895231618 -Vehicle ID: 1, Event Type: end, Timestamp: 230.96190557019523 -Vehicle ID: 1, Event Type: start, Timestamp: 230.96748430241377 -Vehicle ID: 1, Event Type: start, Timestamp: 230.9699240161956 -Vehicle ID: 1, Event Type: end, Timestamp: 230.97008483800917 -Vehicle ID: 1, Event Type: start, Timestamp: 230.97008483800917 -Vehicle ID: 1, Event Type: end, Timestamp: 230.97249296548674 -Vehicle ID: 1, Event Type: start, Timestamp: 230.98043458631668 -Vehicle ID: 1, Event Type: end, Timestamp: 230.98249541903917 -Vehicle ID: 1, Event Type: start, Timestamp: 230.98372432386068 -Vehicle ID: 1, Event Type: end, Timestamp: 230.9849571193504 -Vehicle ID: 1, Event Type: start, Timestamp: 230.99912392839255 -Vehicle ID: 1, Event Type: end, Timestamp: 231.00089405829243 -Vehicle ID: 1, Event Type: start, Timestamp: 231.02062434099463 -Vehicle ID: 1, Event Type: start, Timestamp: 231.02168394757356 -Vehicle ID: 1, Event Type: end, Timestamp: 231.02285707430684 -Vehicle ID: 1, Event Type: start, Timestamp: 231.02297707925493 -Vehicle ID: 1, Event Type: end, Timestamp: 231.02301706044975 -Vehicle ID: 1, Event Type: start, Timestamp: 231.02301706044975 -Vehicle ID: 1, Event Type: end, Timestamp: 231.0255841229216 -Vehicle ID: 1, Event Type: start, Timestamp: 231.02951999264218 -Vehicle ID: 1, Event Type: end, Timestamp: 231.03154877875497 -Vehicle ID: 1, Event Type: start, Timestamp: 231.0477077634327 -Vehicle ID: 1, Event Type: start, Timestamp: 231.04908102780286 -Vehicle ID: 1, Event Type: end, Timestamp: 231.04919069672476 -Vehicle ID: 1, Event Type: start, Timestamp: 231.04919069672476 -Vehicle ID: 1, Event Type: start, Timestamp: 231.05090496818704 -Vehicle ID: 1, Event Type: end, Timestamp: 231.05096110715803 -Vehicle ID: 1, Event Type: start, Timestamp: 231.05096110715803 -Vehicle ID: 1, Event Type: end, Timestamp: 231.05252022197763 -Vehicle ID: 1, Event Type: start, Timestamp: 231.05542786513382 -Vehicle ID: 1, Event Type: end, Timestamp: 231.05778706109447 -Vehicle ID: 1, Event Type: start, Timestamp: 231.05834930585786 -Vehicle ID: 1, Event Type: end, Timestamp: 231.06046953487754 -Vehicle ID: 1, Event Type: start, Timestamp: 231.0885893751893 -Vehicle ID: 1, Event Type: end, Timestamp: 231.0900353691743 -Vehicle ID: 1, Event Type: start, Timestamp: 231.09888188065239 -Vehicle ID: 1, Event Type: end, Timestamp: 231.1008454836394 -Vehicle ID: 1, Event Type: start, Timestamp: 231.10971628491177 -Vehicle ID: 1, Event Type: end, Timestamp: 231.11120183452155 -Vehicle ID: 1, Event Type: start, Timestamp: 231.1183114799994 -Vehicle ID: 1, Event Type: end, Timestamp: 231.1209065153159 -Vehicle ID: 1, Event Type: start, Timestamp: 231.12156369651075 -Vehicle ID: 1, Event Type: end, Timestamp: 231.12231349405462 -Vehicle ID: 1, Event Type: start, Timestamp: 231.13122812407303 -Vehicle ID: 1, Event Type: end, Timestamp: 231.1336390284114 -Vehicle ID: 1, Event Type: start, Timestamp: 231.151439515394 -Vehicle ID: 1, Event Type: end, Timestamp: 231.15334853542853 -Vehicle ID: 1, Event Type: start, Timestamp: 231.18571286346827 -Vehicle ID: 1, Event Type: end, Timestamp: 231.18780992762615 -Vehicle ID: 1, Event Type: start, Timestamp: 231.20475027148282 -Vehicle ID: 1, Event Type: end, Timestamp: 231.20734316936918 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: start, Timestamp: 231.3591394944944 -Vehicle ID: 1, Event Type: end, Timestamp: 231.3608109782748 -Vehicle ID: 1, Event Type: end, Timestamp: 231.3612624038621 -Vehicle ID: 1, Event Type: start, Timestamp: 286.2007299023512 -Vehicle ID: 1, Event Type: end, Timestamp: 286.20282545564675 -Vehicle ID: 1, Event Type: start, Timestamp: 286.4232374163958 -Vehicle ID: 1, Event Type: end, Timestamp: 286.4251226321786 -Vehicle ID: 1, Event Type: start, Timestamp: 286.47450653944765 -Vehicle ID: 1, Event Type: end, Timestamp: 286.4768381886467 -Vehicle ID: 1, Event Type: start, Timestamp: 286.5413266066375 -Vehicle ID: 1, Event Type: end, Timestamp: 286.5431582923244 -Vehicle ID: 1, Event Type: start, Timestamp: 286.55454676175464 -Vehicle ID: 1, Event Type: end, Timestamp: 286.55709521710116 -Vehicle ID: 1, Event Type: start, Timestamp: 286.56513020087 -Vehicle ID: 1, Event Type: start, Timestamp: 286.5664260471249 -Vehicle ID: 1, Event Type: end, Timestamp: 286.56663946540294 -Vehicle ID: 1, Event Type: end, Timestamp: 286.56800063853734 -Vehicle ID: 1, Event Type: start, Timestamp: 286.56807285405046 -Vehicle ID: 1, Event Type: end, Timestamp: 286.56932161138303 -Vehicle ID: 1, Event Type: start, Timestamp: 286.59028084227765 -Vehicle ID: 1, Event Type: start, Timestamp: 286.5905667099212 -Vehicle ID: 1, Event Type: end, Timestamp: 286.59185413936655 -Vehicle ID: 1, Event Type: end, Timestamp: 286.5930243433435 -Vehicle ID: 1, Event Type: start, Timestamp: 286.59434786852097 -Vehicle ID: 1, Event Type: end, Timestamp: 286.5969986333492 -Vehicle ID: 1, Event Type: start, Timestamp: 286.6088855624448 -Vehicle ID: 1, Event Type: end, Timestamp: 286.6111623084374 -Vehicle ID: 1, Event Type: start, Timestamp: 286.6318637323849 -Vehicle ID: 1, Event Type: end, Timestamp: 286.6340033215593 -Vehicle ID: 1, Event Type: start, Timestamp: 286.6347638583296 -Vehicle ID: 1, Event Type: end, Timestamp: 286.6365286266324 -Vehicle ID: 1, Event Type: start, Timestamp: 286.6365903362624 -Vehicle ID: 1, Event Type: end, Timestamp: 286.6387989361397 -Vehicle ID: 1, Event Type: start, Timestamp: 286.6418816878856 -Vehicle ID: 1, Event Type: end, Timestamp: 286.64374323452245 -Vehicle ID: 1, Event Type: start, Timestamp: 286.66918871391323 -Vehicle ID: 1, Event Type: end, Timestamp: 286.6716584890678 -Vehicle ID: 1, Event Type: start, Timestamp: 286.678399442593 -Vehicle ID: 1, Event Type: start, Timestamp: 286.67961925128003 -Vehicle ID: 1, Event Type: end, Timestamp: 286.68042052648843 -Vehicle ID: 1, Event Type: end, Timestamp: 286.6816153825815 -Vehicle ID: 1, Event Type: start, Timestamp: 286.68548481273615 -Vehicle ID: 1, Event Type: end, Timestamp: 286.68690584902185 -Vehicle ID: 1, Event Type: start, Timestamp: 286.69500582353805 -Vehicle ID: 1, Event Type: end, Timestamp: 286.6970937647793 -Vehicle ID: 1, Event Type: start, Timestamp: 286.70151193377546 -Vehicle ID: 1, Event Type: end, Timestamp: 286.70407358209576 -Vehicle ID: 1, Event Type: start, Timestamp: 286.7093098784749 -Vehicle ID: 1, Event Type: end, Timestamp: 286.71098028593997 -Vehicle ID: 1, Event Type: start, Timestamp: 286.7139721789099 -Vehicle ID: 1, Event Type: end, Timestamp: 286.71634388861844 -Vehicle ID: 1, Event Type: start, Timestamp: 286.7211064891278 -Vehicle ID: 1, Event Type: end, Timestamp: 286.7238334186798 -Vehicle ID: 1, Event Type: start, Timestamp: 286.74214481175096 -Vehicle ID: 1, Event Type: end, Timestamp: 286.7440912751207 -Vehicle ID: 1, Event Type: start, Timestamp: 286.74530329270624 -Vehicle ID: 1, Event Type: end, Timestamp: 286.74754031620836 -Vehicle ID: 1, Event Type: start, Timestamp: 286.7625408378355 -Vehicle ID: 1, Event Type: end, Timestamp: 286.76487838017766 -Vehicle ID: 1, Event Type: start, Timestamp: 286.76735353756794 -Vehicle ID: 1, Event Type: start, Timestamp: 286.7677633834523 -Vehicle ID: 1, Event Type: end, Timestamp: 286.7694825597687 -Vehicle ID: 1, Event Type: end, Timestamp: 286.76956379281984 -Vehicle ID: 1, Event Type: start, Timestamp: 286.7751578549607 -Vehicle ID: 1, Event Type: end, Timestamp: 286.7763960899241 -Vehicle ID: 1, Event Type: start, Timestamp: 286.77769684760347 -Vehicle ID: 1, Event Type: end, Timestamp: 286.77967509310383 -Vehicle ID: 1, Event Type: start, Timestamp: 286.7824887935317 -Vehicle ID: 1, Event Type: end, Timestamp: 286.78444344896 -Vehicle ID: 1, Event Type: start, Timestamp: 286.78788020759004 -Vehicle ID: 1, Event Type: end, Timestamp: 286.7905183464438 -Vehicle ID: 1, Event Type: start, Timestamp: 286.8104026209856 -Vehicle ID: 1, Event Type: end, Timestamp: 286.8122223458857 -Vehicle ID: 1, Event Type: start, Timestamp: 286.8134967766926 -Vehicle ID: 1, Event Type: end, Timestamp: 286.8157032441498 -Vehicle ID: 1, Event Type: start, Timestamp: 286.81898922399404 -Vehicle ID: 1, Event Type: start, Timestamp: 286.82003717488726 -Vehicle ID: 1, Event Type: end, Timestamp: 286.8206875395595 -Vehicle ID: 1, Event Type: end, Timestamp: 286.8231076041639 -Vehicle ID: 1, Event Type: start, Timestamp: 286.8335876382509 -Vehicle ID: 1, Event Type: start, Timestamp: 286.8340642124405 -Vehicle ID: 1, Event Type: end, Timestamp: 286.8350496803996 -Vehicle ID: 1, Event Type: end, Timestamp: 286.8364297779208 -Vehicle ID: 1, Event Type: start, Timestamp: 286.84971497403626 -Vehicle ID: 1, Event Type: end, Timestamp: 286.8515898938601 -Vehicle ID: 1, Event Type: start, Timestamp: 286.8730519454271 -Vehicle ID: 1, Event Type: end, Timestamp: 286.87551571318284 -Vehicle ID: 1, Event Type: start, Timestamp: 286.882970415837 -Vehicle ID: 1, Event Type: end, Timestamp: 286.8848190319167 -Vehicle ID: 1, Event Type: start, Timestamp: 286.90260886243277 -Vehicle ID: 1, Event Type: start, Timestamp: 286.9036403877682 -Vehicle ID: 1, Event Type: end, Timestamp: 286.9045301379363 -Vehicle ID: 1, Event Type: start, Timestamp: 286.9045301379363 -Vehicle ID: 1, Event Type: end, Timestamp: 286.90621880634734 -Vehicle ID: 1, Event Type: start, Timestamp: 286.9173545587327 -Vehicle ID: 1, Event Type: end, Timestamp: 286.91991436875855 -Vehicle ID: 1, Event Type: start, Timestamp: 286.9290661796227 -Vehicle ID: 1, Event Type: start, Timestamp: 286.93053160725884 -Vehicle ID: 1, Event Type: end, Timestamp: 286.9311893154658 -Vehicle ID: 1, Event Type: end, Timestamp: 286.9318983765232 -Vehicle ID: 1, Event Type: start, Timestamp: 286.93578531654833 -Vehicle ID: 1, Event Type: end, Timestamp: 286.93750698858105 -Vehicle ID: 1, Event Type: start, Timestamp: 286.9408800831774 -Vehicle ID: 1, Event Type: end, Timestamp: 286.94281907036236 -Vehicle ID: 1, Event Type: start, Timestamp: 286.94693068573525 -Vehicle ID: 1, Event Type: start, Timestamp: 286.9471015160693 -Vehicle ID: 1, Event Type: end, Timestamp: 286.9482193751087 -Vehicle ID: 1, Event Type: end, Timestamp: 286.94905125901226 -Vehicle ID: 1, Event Type: start, Timestamp: 286.95430172932697 -Vehicle ID: 1, Event Type: end, Timestamp: 286.9566099093979 -Vehicle ID: 1, Event Type: start, Timestamp: 286.9618933196812 -Vehicle ID: 1, Event Type: end, Timestamp: 286.96352334176567 -Vehicle ID: 1, Event Type: start, Timestamp: 286.96440885531234 -Vehicle ID: 1, Event Type: end, Timestamp: 286.9658663244119 -Vehicle ID: 1, Event Type: start, Timestamp: 286.99421150902276 -Vehicle ID: 1, Event Type: end, Timestamp: 286.9969862740242 -Vehicle ID: 1, Event Type: start, Timestamp: 287.0012694314847 -Vehicle ID: 1, Event Type: end, Timestamp: 287.00296194123484 -Vehicle ID: 1, Event Type: start, Timestamp: 287.0042428226206 -Vehicle ID: 1, Event Type: end, Timestamp: 287.0064470793557 -Vehicle ID: 1, Event Type: start, Timestamp: 287.0065209935474 -Vehicle ID: 1, Event Type: end, Timestamp: 287.00829986077633 -Vehicle ID: 1, Event Type: start, Timestamp: 287.01575209040897 -Vehicle ID: 1, Event Type: end, Timestamp: 287.0169593500918 -Vehicle ID: 1, Event Type: start, Timestamp: 287.0404315070929 -Vehicle ID: 1, Event Type: end, Timestamp: 287.0431016830019 -Vehicle ID: 1, Event Type: start, Timestamp: 287.04744418288743 -Vehicle ID: 1, Event Type: end, Timestamp: 287.0494024321526 -Vehicle ID: 1, Event Type: start, Timestamp: 287.05160423768416 -Vehicle ID: 1, Event Type: end, Timestamp: 287.0535760097785 -Vehicle ID: 1, Event Type: start, Timestamp: 287.0578229770227 -Vehicle ID: 1, Event Type: end, Timestamp: 287.0598930438552 -Vehicle ID: 1, Event Type: start, Timestamp: 287.0679626948768 -Vehicle ID: 1, Event Type: end, Timestamp: 287.07006918796503 -Vehicle ID: 1, Event Type: start, Timestamp: 287.0839596146111 -Vehicle ID: 1, Event Type: end, Timestamp: 287.08646165902036 -Vehicle ID: 1, Event Type: start, Timestamp: 287.08652180019584 -Vehicle ID: 1, Event Type: end, Timestamp: 287.0887253843419 -Vehicle ID: 1, Event Type: start, Timestamp: 287.10188848057464 -Vehicle ID: 1, Event Type: end, Timestamp: 287.10389338729567 -Vehicle ID: 1, Event Type: start, Timestamp: 287.12236778305106 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1224176895337 -Vehicle ID: 1, Event Type: end, Timestamp: 287.1244419058624 -Vehicle ID: 1, Event Type: end, Timestamp: 287.1254561866513 -Vehicle ID: 1, Event Type: start, Timestamp: 287.13568787737 -Vehicle ID: 1, Event Type: end, Timestamp: 287.1384528936205 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1416992047933 -Vehicle ID: 1, Event Type: end, Timestamp: 287.1439267648143 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1454186894738 -Vehicle ID: 1, Event Type: end, Timestamp: 287.1471691685077 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1474840465442 -Vehicle ID: 1, Event Type: end, Timestamp: 287.15045822024484 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1878628810483 -Vehicle ID: 1, Event Type: end, Timestamp: 287.1896898398109 -Vehicle ID: 1, Event Type: start, Timestamp: 287.2168587350141 -Vehicle ID: 1, Event Type: end, Timestamp: 287.2189502362054 -Vehicle ID: 1, Event Type: start, Timestamp: 287.251681557477 -Vehicle ID: 1, Event Type: end, Timestamp: 287.25382542451734 -Vehicle ID: 1, Event Type: start, Timestamp: 287.26293593438953 -Vehicle ID: 1, Event Type: end, Timestamp: 287.2650162550981 -Vehicle ID: 1, Event Type: start, Timestamp: 287.28111765724265 -Vehicle ID: 1, Event Type: end, Timestamp: 287.2833518057304 -Vehicle ID: 1, Event Type: start, Timestamp: 287.33794795182365 -Vehicle ID: 1, Event Type: end, Timestamp: 287.3395804315288 -Vehicle ID: 1, Event Type: start, Timestamp: 287.38528557172106 -Vehicle ID: 1, Event Type: end, Timestamp: 287.38736966908374 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: start, Timestamp: 287.50261787947136 -Vehicle ID: 1, Event Type: end, Timestamp: 287.50469574638703 -Vehicle ID: 1, Event Type: end, Timestamp: 287.50479727411727 +Vehicle ID: 1, Event Type: start, Timestamp: 174.19744645094642 +Vehicle ID: 1, Event Type: end, Timestamp: 174.19934992722273 +Vehicle ID: 1, Event Type: start, Timestamp: 174.40920793733576 +Vehicle ID: 1, Event Type: end, Timestamp: 174.41092385658425 +Vehicle ID: 1, Event Type: start, Timestamp: 174.46962757929793 +Vehicle ID: 1, Event Type: end, Timestamp: 174.47155378732728 +Vehicle ID: 1, Event Type: start, Timestamp: 174.4917878527149 +Vehicle ID: 1, Event Type: end, Timestamp: 174.49379433043322 +Vehicle ID: 1, Event Type: start, Timestamp: 174.5074285257341 +Vehicle ID: 1, Event Type: end, Timestamp: 174.50898550574 +Vehicle ID: 1, Event Type: start, Timestamp: 174.53099703647402 +Vehicle ID: 1, Event Type: end, Timestamp: 174.53337295586655 +Vehicle ID: 1, Event Type: start, Timestamp: 174.53952787914648 +Vehicle ID: 1, Event Type: end, Timestamp: 174.54203380065005 +Vehicle ID: 1, Event Type: start, Timestamp: 174.54609629221974 +Vehicle ID: 1, Event Type: end, Timestamp: 174.54809456910215 +Vehicle ID: 1, Event Type: start, Timestamp: 174.55547801155282 +Vehicle ID: 1, Event Type: end, Timestamp: 174.5567077307847 +Vehicle ID: 1, Event Type: start, Timestamp: 174.55808262882783 +Vehicle ID: 1, Event Type: end, Timestamp: 174.56014312929472 +Vehicle ID: 1, Event Type: start, Timestamp: 174.5635273647671 +Vehicle ID: 1, Event Type: end, Timestamp: 174.56529768660292 +Vehicle ID: 1, Event Type: start, Timestamp: 174.56704169084028 +Vehicle ID: 1, Event Type: end, Timestamp: 174.56990489139704 +Vehicle ID: 1, Event Type: start, Timestamp: 174.57073015245615 +Vehicle ID: 1, Event Type: end, Timestamp: 174.57294147587675 +Vehicle ID: 1, Event Type: start, Timestamp: 174.5810379925763 +Vehicle ID: 1, Event Type: end, Timestamp: 174.58350258660275 +Vehicle ID: 1, Event Type: start, Timestamp: 174.58581529188942 +Vehicle ID: 1, Event Type: end, Timestamp: 174.58826833317093 +Vehicle ID: 1, Event Type: start, Timestamp: 174.60925288557775 +Vehicle ID: 1, Event Type: end, Timestamp: 174.6110694758055 +Vehicle ID: 1, Event Type: start, Timestamp: 174.6219183453141 +Vehicle ID: 1, Event Type: end, Timestamp: 174.62417892306604 +Vehicle ID: 1, Event Type: start, Timestamp: 174.6337482952235 +Vehicle ID: 1, Event Type: end, Timestamp: 174.63647895572373 +Vehicle ID: 1, Event Type: start, Timestamp: 174.63648281070164 +Vehicle ID: 1, Event Type: end, Timestamp: 174.63815446932404 +Vehicle ID: 1, Event Type: start, Timestamp: 174.64650460459794 +Vehicle ID: 1, Event Type: start, Timestamp: 174.6479950480359 +Vehicle ID: 1, Event Type: start, Timestamp: 174.64809003331777 +Vehicle ID: 1, Event Type: end, Timestamp: 174.64837483736952 +Vehicle ID: 1, Event Type: end, Timestamp: 174.64993785467752 +Vehicle ID: 1, Event Type: start, Timestamp: 174.65030501478043 +Vehicle ID: 1, Event Type: end, Timestamp: 174.65083865392512 +Vehicle ID: 1, Event Type: end, Timestamp: 174.65229348051537 +Vehicle ID: 1, Event Type: start, Timestamp: 174.65798512654354 +Vehicle ID: 1, Event Type: start, Timestamp: 174.65821449539442 +Vehicle ID: 1, Event Type: end, Timestamp: 174.66021487773548 +Vehicle ID: 1, Event Type: end, Timestamp: 174.6602627009171 +Vehicle ID: 1, Event Type: start, Timestamp: 174.66159541215922 +Vehicle ID: 1, Event Type: end, Timestamp: 174.66379841216138 +Vehicle ID: 1, Event Type: start, Timestamp: 174.6688858173057 +Vehicle ID: 1, Event Type: end, Timestamp: 174.67103578945157 +Vehicle ID: 1, Event Type: start, Timestamp: 174.67104467457068 +Vehicle ID: 1, Event Type: end, Timestamp: 174.67270612862606 +Vehicle ID: 1, Event Type: start, Timestamp: 174.6732036486748 +Vehicle ID: 1, Event Type: end, Timestamp: 174.67503244538634 +Vehicle ID: 1, Event Type: start, Timestamp: 174.68508410251187 +Vehicle ID: 1, Event Type: start, Timestamp: 174.68563486714666 +Vehicle ID: 1, Event Type: end, Timestamp: 174.6870488380183 +Vehicle ID: 1, Event Type: end, Timestamp: 174.6875560502529 +Vehicle ID: 1, Event Type: start, Timestamp: 174.6925343834399 +Vehicle ID: 1, Event Type: end, Timestamp: 174.69491075597386 +Vehicle ID: 1, Event Type: start, Timestamp: 174.70261313590242 +Vehicle ID: 1, Event Type: end, Timestamp: 174.7046645321335 +Vehicle ID: 1, Event Type: start, Timestamp: 174.70743363596702 +Vehicle ID: 1, Event Type: end, Timestamp: 174.7094559962698 +Vehicle ID: 1, Event Type: start, Timestamp: 174.7108157446955 +Vehicle ID: 1, Event Type: end, Timestamp: 174.71271728141392 +Vehicle ID: 1, Event Type: start, Timestamp: 174.72123982982376 +Vehicle ID: 1, Event Type: start, Timestamp: 174.72285214011058 +Vehicle ID: 1, Event Type: end, Timestamp: 174.7233874282198 +Vehicle ID: 1, Event Type: end, Timestamp: 174.72585957780086 +Vehicle ID: 1, Event Type: start, Timestamp: 174.74433501400816 +Vehicle ID: 1, Event Type: start, Timestamp: 174.74503253450166 +Vehicle ID: 1, Event Type: end, Timestamp: 174.74563168718169 +Vehicle ID: 1, Event Type: end, Timestamp: 174.74808119156964 +Vehicle ID: 1, Event Type: start, Timestamp: 174.7506068392451 +Vehicle ID: 1, Event Type: end, Timestamp: 174.75205204474258 +Vehicle ID: 1, Event Type: start, Timestamp: 174.75339521831725 +Vehicle ID: 1, Event Type: end, Timestamp: 174.75491008182328 +Vehicle ID: 1, Event Type: start, Timestamp: 174.76930184843837 +Vehicle ID: 1, Event Type: end, Timestamp: 174.7719026791878 +Vehicle ID: 1, Event Type: start, Timestamp: 174.77838926306353 +Vehicle ID: 1, Event Type: start, Timestamp: 174.77965102279464 +Vehicle ID: 1, Event Type: start, Timestamp: 174.78047005554035 +Vehicle ID: 1, Event Type: end, Timestamp: 174.78050304804285 +Vehicle ID: 1, Event Type: start, Timestamp: 174.78050304804285 +Vehicle ID: 1, Event Type: end, Timestamp: 174.78163976678928 +Vehicle ID: 1, Event Type: end, Timestamp: 174.78287612416543 +Vehicle ID: 1, Event Type: start, Timestamp: 174.79051325875793 +Vehicle ID: 1, Event Type: end, Timestamp: 174.7923031357411 +Vehicle ID: 1, Event Type: start, Timestamp: 174.79266452444017 +Vehicle ID: 1, Event Type: end, Timestamp: 174.79475032019545 +Vehicle ID: 1, Event Type: start, Timestamp: 174.79800349145364 +Vehicle ID: 1, Event Type: end, Timestamp: 174.80069514858255 +Vehicle ID: 1, Event Type: start, Timestamp: 174.81022825262713 +Vehicle ID: 1, Event Type: end, Timestamp: 174.81244115832905 +Vehicle ID: 1, Event Type: start, Timestamp: 174.81805583935017 +Vehicle ID: 1, Event Type: end, Timestamp: 174.82076743293973 +Vehicle ID: 1, Event Type: start, Timestamp: 174.84507140015327 +Vehicle ID: 1, Event Type: end, Timestamp: 174.8472245519101 +Vehicle ID: 1, Event Type: start, Timestamp: 174.85656066244738 +Vehicle ID: 1, Event Type: end, Timestamp: 174.85920209503615 +Vehicle ID: 1, Event Type: start, Timestamp: 174.85996803540502 +Vehicle ID: 1, Event Type: end, Timestamp: 174.86232894204426 +Vehicle ID: 1, Event Type: start, Timestamp: 174.87827711529337 +Vehicle ID: 1, Event Type: end, Timestamp: 174.88139224101465 +Vehicle ID: 1, Event Type: start, Timestamp: 174.88969376176794 +Vehicle ID: 1, Event Type: end, Timestamp: 174.8916459345203 +Vehicle ID: 1, Event Type: start, Timestamp: 174.89325195435796 +Vehicle ID: 1, Event Type: end, Timestamp: 174.89590936582098 +Vehicle ID: 1, Event Type: start, Timestamp: 174.90509261259018 +Vehicle ID: 1, Event Type: end, Timestamp: 174.90804592266687 +Vehicle ID: 1, Event Type: start, Timestamp: 174.91036525763096 +Vehicle ID: 1, Event Type: start, Timestamp: 174.91282636181623 +Vehicle ID: 1, Event Type: end, Timestamp: 174.91309735258776 +Vehicle ID: 1, Event Type: start, Timestamp: 174.91309735258776 +Vehicle ID: 1, Event Type: end, Timestamp: 174.9158814884633 +Vehicle ID: 1, Event Type: start, Timestamp: 174.9168746886371 +Vehicle ID: 1, Event Type: end, Timestamp: 174.91962375585578 +Vehicle ID: 1, Event Type: start, Timestamp: 174.95221896319984 +Vehicle ID: 1, Event Type: end, Timestamp: 174.95407042357286 +Vehicle ID: 1, Event Type: start, Timestamp: 174.9569857697495 +Vehicle ID: 1, Event Type: end, Timestamp: 174.9591397383262 +Vehicle ID: 1, Event Type: start, Timestamp: 174.9605074648173 +Vehicle ID: 1, Event Type: start, Timestamp: 174.9626422831407 +Vehicle ID: 1, Event Type: end, Timestamp: 174.96321030354548 +Vehicle ID: 1, Event Type: start, Timestamp: 174.96321030354548 +Vehicle ID: 1, Event Type: end, Timestamp: 174.96453946354035 +Vehicle ID: 1, Event Type: start, Timestamp: 174.9793933115021 +Vehicle ID: 1, Event Type: end, Timestamp: 174.9810448648175 +Vehicle ID: 1, Event Type: start, Timestamp: 174.9910291808733 +Vehicle ID: 1, Event Type: end, Timestamp: 174.99266237115577 +Vehicle ID: 1, Event Type: start, Timestamp: 174.99839745265172 +Vehicle ID: 1, Event Type: end, Timestamp: 175.0008191770373 +Vehicle ID: 1, Event Type: start, Timestamp: 175.05002342225677 +Vehicle ID: 1, Event Type: start, Timestamp: 175.0513653207362 +Vehicle ID: 1, Event Type: end, Timestamp: 175.05184319746428 +Vehicle ID: 1, Event Type: start, Timestamp: 175.05184319746428 +Vehicle ID: 1, Event Type: start, Timestamp: 175.0530960600153 +Vehicle ID: 1, Event Type: end, Timestamp: 175.0539502119968 +Vehicle ID: 1, Event Type: start, Timestamp: 175.0539502119968 +Vehicle ID: 1, Event Type: end, Timestamp: 175.05601406938325 +Vehicle ID: 1, Event Type: start, Timestamp: 175.0764771590837 +Vehicle ID: 1, Event Type: end, Timestamp: 175.07789934320175 +Vehicle ID: 1, Event Type: start, Timestamp: 175.08342553817778 +Vehicle ID: 1, Event Type: end, Timestamp: 175.08527719091558 +Vehicle ID: 1, Event Type: start, Timestamp: 175.08715946906028 +Vehicle ID: 1, Event Type: end, Timestamp: 175.08912071730296 +Vehicle ID: 1, Event Type: start, Timestamp: 175.13000725805804 +Vehicle ID: 1, Event Type: end, Timestamp: 175.13192934794233 +Vehicle ID: 1, Event Type: start, Timestamp: 175.13720870016778 +Vehicle ID: 1, Event Type: end, Timestamp: 175.13966710071347 +Vehicle ID: 1, Event Type: start, Timestamp: 175.17462427221562 +Vehicle ID: 1, Event Type: end, Timestamp: 175.17634534130983 +Vehicle ID: 1, Event Type: start, Timestamp: 175.18053080395498 +Vehicle ID: 1, Event Type: end, Timestamp: 175.18249057878614 +Vehicle ID: 1, Event Type: start, Timestamp: 175.18992297134864 +Vehicle ID: 1, Event Type: end, Timestamp: 175.19286328601382 +Vehicle ID: 1, Event Type: start, Timestamp: 175.20270193836342 +Vehicle ID: 1, Event Type: end, Timestamp: 175.20414676142988 +Vehicle ID: 1, Event Type: start, Timestamp: 175.20683344330385 +Vehicle ID: 1, Event Type: end, Timestamp: 175.209706239991 +Vehicle ID: 1, Event Type: start, Timestamp: 175.21070571441697 +Vehicle ID: 1, Event Type: end, Timestamp: 175.21274887984862 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 +Vehicle ID: 1, Event Type: end, Timestamp: 175.2394812283194 +Vehicle ID: 1, Event Type: end, Timestamp: 175.24016107401755 +Vehicle ID: 1, Event Type: start, Timestamp: 230.31664129548037 +Vehicle ID: 1, Event Type: end, Timestamp: 230.31902319163 +Vehicle ID: 1, Event Type: start, Timestamp: 230.43777232998855 +Vehicle ID: 1, Event Type: end, Timestamp: 230.44065748298044 +Vehicle ID: 1, Event Type: start, Timestamp: 230.4669981200018 +Vehicle ID: 1, Event Type: end, Timestamp: 230.46933270138936 +Vehicle ID: 1, Event Type: start, Timestamp: 230.47049233752423 +Vehicle ID: 1, Event Type: end, Timestamp: 230.47337152208996 +Vehicle ID: 1, Event Type: start, Timestamp: 230.507611897847 +Vehicle ID: 1, Event Type: end, Timestamp: 230.50994251837992 +Vehicle ID: 1, Event Type: start, Timestamp: 230.5252912152482 +Vehicle ID: 1, Event Type: end, Timestamp: 230.52740277736606 +Vehicle ID: 1, Event Type: start, Timestamp: 230.57795997016905 +Vehicle ID: 1, Event Type: end, Timestamp: 230.58054878202998 +Vehicle ID: 1, Event Type: start, Timestamp: 230.58229794319544 +Vehicle ID: 1, Event Type: end, Timestamp: 230.5847062161119 +Vehicle ID: 1, Event Type: start, Timestamp: 230.59244497942257 +Vehicle ID: 1, Event Type: end, Timestamp: 230.59508644969583 +Vehicle ID: 1, Event Type: start, Timestamp: 230.59736971409123 +Vehicle ID: 1, Event Type: end, Timestamp: 230.59919639518696 +Vehicle ID: 1, Event Type: start, Timestamp: 230.59925552280913 +Vehicle ID: 1, Event Type: start, Timestamp: 230.6005747719904 +Vehicle ID: 1, Event Type: end, Timestamp: 230.60128434969332 +Vehicle ID: 1, Event Type: end, Timestamp: 230.60292655094645 +Vehicle ID: 1, Event Type: start, Timestamp: 230.60844864975988 +Vehicle ID: 1, Event Type: end, Timestamp: 230.61142722216604 +Vehicle ID: 1, Event Type: start, Timestamp: 230.62483370107324 +Vehicle ID: 1, Event Type: end, Timestamp: 230.62694637126145 +Vehicle ID: 1, Event Type: start, Timestamp: 230.63264039963747 +Vehicle ID: 1, Event Type: end, Timestamp: 230.63491824260055 +Vehicle ID: 1, Event Type: start, Timestamp: 230.64569662314722 +Vehicle ID: 1, Event Type: end, Timestamp: 230.6471821303743 +Vehicle ID: 1, Event Type: start, Timestamp: 230.65069204188958 +Vehicle ID: 1, Event Type: end, Timestamp: 230.65335055313653 +Vehicle ID: 1, Event Type: start, Timestamp: 230.6629783634811 +Vehicle ID: 1, Event Type: end, Timestamp: 230.66511840730433 +Vehicle ID: 1, Event Type: start, Timestamp: 230.6731654968688 +Vehicle ID: 1, Event Type: end, Timestamp: 230.67521593516685 +Vehicle ID: 1, Event Type: start, Timestamp: 230.6797863090111 +Vehicle ID: 1, Event Type: end, Timestamp: 230.68256982064668 +Vehicle ID: 1, Event Type: start, Timestamp: 230.6980749527035 +Vehicle ID: 1, Event Type: end, Timestamp: 230.70052194319106 +Vehicle ID: 1, Event Type: start, Timestamp: 230.7065578975353 +Vehicle ID: 1, Event Type: end, Timestamp: 230.7089458645708 +Vehicle ID: 1, Event Type: start, Timestamp: 230.71544162388594 +Vehicle ID: 1, Event Type: start, Timestamp: 230.71575516779617 +Vehicle ID: 1, Event Type: start, Timestamp: 230.7162161523077 +Vehicle ID: 1, Event Type: end, Timestamp: 230.71762009358355 +Vehicle ID: 1, Event Type: end, Timestamp: 230.71859080327985 +Vehicle ID: 1, Event Type: end, Timestamp: 230.71870950558812 +Vehicle ID: 1, Event Type: start, Timestamp: 230.7196427958835 +Vehicle ID: 1, Event Type: start, Timestamp: 230.72098064222192 +Vehicle ID: 1, Event Type: end, Timestamp: 230.7217570584437 +Vehicle ID: 1, Event Type: end, Timestamp: 230.72293327886896 +Vehicle ID: 1, Event Type: start, Timestamp: 230.73081564181555 +Vehicle ID: 1, Event Type: end, Timestamp: 230.73220326452346 +Vehicle ID: 1, Event Type: start, Timestamp: 230.74095885464635 +Vehicle ID: 1, Event Type: end, Timestamp: 230.74275944133578 +Vehicle ID: 1, Event Type: start, Timestamp: 230.74656573437537 +Vehicle ID: 1, Event Type: end, Timestamp: 230.7483334182452 +Vehicle ID: 1, Event Type: start, Timestamp: 230.7581560804016 +Vehicle ID: 1, Event Type: end, Timestamp: 230.7604649654494 +Vehicle ID: 1, Event Type: start, Timestamp: 230.7686443444904 +Vehicle ID: 1, Event Type: start, Timestamp: 230.76949011581317 +Vehicle ID: 1, Event Type: end, Timestamp: 230.77108857001562 +Vehicle ID: 1, Event Type: end, Timestamp: 230.77170252711198 +Vehicle ID: 1, Event Type: start, Timestamp: 230.78971491480726 +Vehicle ID: 1, Event Type: start, Timestamp: 230.79048350310578 +Vehicle ID: 1, Event Type: end, Timestamp: 230.79189185988005 +Vehicle ID: 1, Event Type: end, Timestamp: 230.79228156157131 +Vehicle ID: 1, Event Type: start, Timestamp: 230.7936676546537 +Vehicle ID: 1, Event Type: end, Timestamp: 230.79519862480848 +Vehicle ID: 1, Event Type: start, Timestamp: 230.79602097207905 +Vehicle ID: 1, Event Type: end, Timestamp: 230.7981733058357 +Vehicle ID: 1, Event Type: start, Timestamp: 230.81353158586242 +Vehicle ID: 1, Event Type: start, Timestamp: 230.81491792771507 +Vehicle ID: 1, Event Type: end, Timestamp: 230.81504132433778 +Vehicle ID: 1, Event Type: end, Timestamp: 230.81695873968877 +Vehicle ID: 1, Event Type: start, Timestamp: 230.81848537169685 +Vehicle ID: 1, Event Type: start, Timestamp: 230.82112818483114 +Vehicle ID: 1, Event Type: end, Timestamp: 230.8212180402089 +Vehicle ID: 1, Event Type: start, Timestamp: 230.8220145777036 +Vehicle ID: 1, Event Type: end, Timestamp: 230.82368400892904 +Vehicle ID: 1, Event Type: end, Timestamp: 230.82515667596815 +Vehicle ID: 1, Event Type: start, Timestamp: 230.82661033611626 +Vehicle ID: 1, Event Type: end, Timestamp: 230.82816230554567 +Vehicle ID: 1, Event Type: start, Timestamp: 230.838906724935 +Vehicle ID: 1, Event Type: end, Timestamp: 230.8408890795587 +Vehicle ID: 1, Event Type: start, Timestamp: 230.84967497804254 +Vehicle ID: 1, Event Type: end, Timestamp: 230.8513487946203 +Vehicle ID: 1, Event Type: start, Timestamp: 230.88103052990513 +Vehicle ID: 1, Event Type: end, Timestamp: 230.8830549531143 +Vehicle ID: 1, Event Type: start, Timestamp: 230.88975553865887 +Vehicle ID: 1, Event Type: start, Timestamp: 230.89105826964996 +Vehicle ID: 1, Event Type: start, Timestamp: 230.89119073925795 +Vehicle ID: 1, Event Type: end, Timestamp: 230.8918894829788 +Vehicle ID: 1, Event Type: start, Timestamp: 230.8918894829788 +Vehicle ID: 1, Event Type: end, Timestamp: 230.89352296465427 +Vehicle ID: 1, Event Type: end, Timestamp: 230.8936595727531 +Vehicle ID: 1, Event Type: start, Timestamp: 230.90142381345194 +Vehicle ID: 1, Event Type: end, Timestamp: 230.90384021064983 +Vehicle ID: 1, Event Type: start, Timestamp: 230.90414769678802 +Vehicle ID: 1, Event Type: end, Timestamp: 230.90536126037617 +Vehicle ID: 1, Event Type: start, Timestamp: 230.90584379827644 +Vehicle ID: 1, Event Type: end, Timestamp: 230.90812682024026 +Vehicle ID: 1, Event Type: start, Timestamp: 230.9112186500487 +Vehicle ID: 1, Event Type: end, Timestamp: 230.9139356105304 +Vehicle ID: 1, Event Type: start, Timestamp: 230.91701955655486 +Vehicle ID: 1, Event Type: end, Timestamp: 230.9188016627727 +Vehicle ID: 1, Event Type: start, Timestamp: 230.92416719007622 +Vehicle ID: 1, Event Type: end, Timestamp: 230.92685780081987 +Vehicle ID: 1, Event Type: start, Timestamp: 230.95215756838152 +Vehicle ID: 1, Event Type: end, Timestamp: 230.95453722208103 +Vehicle ID: 1, Event Type: start, Timestamp: 230.9659347467519 +Vehicle ID: 1, Event Type: end, Timestamp: 230.9681990396162 +Vehicle ID: 1, Event Type: start, Timestamp: 230.9720238425998 +Vehicle ID: 1, Event Type: end, Timestamp: 230.97413543948977 +Vehicle ID: 1, Event Type: start, Timestamp: 230.97478563775127 +Vehicle ID: 1, Event Type: start, Timestamp: 230.97685786462003 +Vehicle ID: 1, Event Type: end, Timestamp: 230.97714372857666 +Vehicle ID: 1, Event Type: start, Timestamp: 230.97714372857666 +Vehicle ID: 1, Event Type: end, Timestamp: 230.97837325389483 +Vehicle ID: 1, Event Type: start, Timestamp: 230.9819191051995 +Vehicle ID: 1, Event Type: end, Timestamp: 230.98406132572086 +Vehicle ID: 1, Event Type: start, Timestamp: 230.99934109132596 +Vehicle ID: 1, Event Type: end, Timestamp: 231.00114232985032 +Vehicle ID: 1, Event Type: start, Timestamp: 231.016069853024 +Vehicle ID: 1, Event Type: end, Timestamp: 231.01881577843906 +Vehicle ID: 1, Event Type: start, Timestamp: 231.0212547969928 +Vehicle ID: 1, Event Type: end, Timestamp: 231.0234042984531 +Vehicle ID: 1, Event Type: start, Timestamp: 231.0252620603701 +Vehicle ID: 1, Event Type: end, Timestamp: 231.02651807937482 +Vehicle ID: 1, Event Type: start, Timestamp: 231.04423236075235 +Vehicle ID: 1, Event Type: end, Timestamp: 231.04581546071304 +Vehicle ID: 1, Event Type: start, Timestamp: 231.0630809727534 +Vehicle ID: 1, Event Type: end, Timestamp: 231.06554531364426 +Vehicle ID: 1, Event Type: start, Timestamp: 231.07740679810462 +Vehicle ID: 1, Event Type: end, Timestamp: 231.07914749568812 +Vehicle ID: 1, Event Type: start, Timestamp: 231.08413945409612 +Vehicle ID: 1, Event Type: end, Timestamp: 231.08712262084074 +Vehicle ID: 1, Event Type: start, Timestamp: 231.1028865973175 +Vehicle ID: 1, Event Type: start, Timestamp: 231.10454584422865 +Vehicle ID: 1, Event Type: end, Timestamp: 231.1054113291568 +Vehicle ID: 1, Event Type: start, Timestamp: 231.1054113291568 +Vehicle ID: 1, Event Type: end, Timestamp: 231.10693587282222 +Vehicle ID: 1, Event Type: start, Timestamp: 231.1230269289867 +Vehicle ID: 1, Event Type: end, Timestamp: 231.12575313894567 +Vehicle ID: 1, Event Type: start, Timestamp: 231.1285181587533 +Vehicle ID: 1, Event Type: end, Timestamp: 231.13054517048968 +Vehicle ID: 1, Event Type: start, Timestamp: 231.13353733814054 +Vehicle ID: 1, Event Type: end, Timestamp: 231.13586853313652 +Vehicle ID: 1, Event Type: start, Timestamp: 231.1450106949585 +Vehicle ID: 1, Event Type: start, Timestamp: 231.1469754060731 +Vehicle ID: 1, Event Type: end, Timestamp: 231.1478789507578 +Vehicle ID: 1, Event Type: start, Timestamp: 231.1478789507578 +Vehicle ID: 1, Event Type: end, Timestamp: 231.14880364323932 +Vehicle ID: 1, Event Type: start, Timestamp: 231.18645081718861 +Vehicle ID: 1, Event Type: end, Timestamp: 231.18837026544404 +Vehicle ID: 1, Event Type: start, Timestamp: 231.19375187549824 +Vehicle ID: 1, Event Type: end, Timestamp: 231.19561904275994 +Vehicle ID: 1, Event Type: start, Timestamp: 231.25277098470198 +Vehicle ID: 1, Event Type: end, Timestamp: 231.2552284608394 +Vehicle ID: 1, Event Type: start, Timestamp: 231.26975212198442 +Vehicle ID: 1, Event Type: end, Timestamp: 231.27103857422426 +Vehicle ID: 1, Event Type: start, Timestamp: 231.27712400126066 +Vehicle ID: 1, Event Type: end, Timestamp: 231.2795239398536 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 +Vehicle ID: 1, Event Type: end, Timestamp: 231.3016066108937 +Vehicle ID: 1, Event Type: end, Timestamp: 231.3018090276437 +Vehicle ID: 1, Event Type: start, Timestamp: 286.2486675293738 +Vehicle ID: 1, Event Type: end, Timestamp: 286.25052197712125 +Vehicle ID: 1, Event Type: start, Timestamp: 286.30142694243233 +Vehicle ID: 1, Event Type: end, Timestamp: 286.30356623020947 +Vehicle ID: 1, Event Type: start, Timestamp: 286.48280313073826 +Vehicle ID: 1, Event Type: end, Timestamp: 286.4850466642004 +Vehicle ID: 1, Event Type: start, Timestamp: 286.4932018160594 +Vehicle ID: 1, Event Type: end, Timestamp: 286.4952740045327 +Vehicle ID: 1, Event Type: start, Timestamp: 286.52972485757994 +Vehicle ID: 1, Event Type: end, Timestamp: 286.5314842786296 +Vehicle ID: 1, Event Type: start, Timestamp: 286.54136192566267 +Vehicle ID: 1, Event Type: end, Timestamp: 286.54308952991346 +Vehicle ID: 1, Event Type: start, Timestamp: 286.5533462943098 +Vehicle ID: 1, Event Type: end, Timestamp: 286.55560734804186 +Vehicle ID: 1, Event Type: start, Timestamp: 286.59874296396134 +Vehicle ID: 1, Event Type: start, Timestamp: 286.599813491626 +Vehicle ID: 1, Event Type: end, Timestamp: 286.60031817131164 +Vehicle ID: 1, Event Type: end, Timestamp: 286.60124914289526 +Vehicle ID: 1, Event Type: start, Timestamp: 286.60849584854896 +Vehicle ID: 1, Event Type: end, Timestamp: 286.61058237864415 +Vehicle ID: 1, Event Type: start, Timestamp: 286.61295374293053 +Vehicle ID: 1, Event Type: end, Timestamp: 286.614790998244 +Vehicle ID: 1, Event Type: start, Timestamp: 286.6214982533734 +Vehicle ID: 1, Event Type: end, Timestamp: 286.6230179298535 +Vehicle ID: 1, Event Type: start, Timestamp: 286.626951889465 +Vehicle ID: 1, Event Type: end, Timestamp: 286.6289186960128 +Vehicle ID: 1, Event Type: start, Timestamp: 286.62978501072746 +Vehicle ID: 1, Event Type: end, Timestamp: 286.632402543433 +Vehicle ID: 1, Event Type: start, Timestamp: 286.6338491096368 +Vehicle ID: 1, Event Type: start, Timestamp: 286.6339046483647 +Vehicle ID: 1, Event Type: end, Timestamp: 286.6366413982534 +Vehicle ID: 1, Event Type: end, Timestamp: 286.63718299166766 +Vehicle ID: 1, Event Type: start, Timestamp: 286.64725270153684 +Vehicle ID: 1, Event Type: start, Timestamp: 286.64828238775397 +Vehicle ID: 1, Event Type: end, Timestamp: 286.6490750796143 +Vehicle ID: 1, Event Type: end, Timestamp: 286.6503565688687 +Vehicle ID: 1, Event Type: start, Timestamp: 286.6529796280167 +Vehicle ID: 1, Event Type: end, Timestamp: 286.6558949925678 +Vehicle ID: 1, Event Type: start, Timestamp: 286.6591985569743 +Vehicle ID: 1, Event Type: start, Timestamp: 286.6592568661335 +Vehicle ID: 1, Event Type: end, Timestamp: 286.6608826619159 +Vehicle ID: 1, Event Type: end, Timestamp: 286.66245562525745 +Vehicle ID: 1, Event Type: start, Timestamp: 286.6743182721671 +Vehicle ID: 1, Event Type: end, Timestamp: 286.67689668702064 +Vehicle ID: 1, Event Type: start, Timestamp: 286.67918450935315 +Vehicle ID: 1, Event Type: start, Timestamp: 286.679588470797 +Vehicle ID: 1, Event Type: end, Timestamp: 286.68099651792835 +Vehicle ID: 1, Event Type: end, Timestamp: 286.68148846221357 +Vehicle ID: 1, Event Type: start, Timestamp: 286.68506006549524 +Vehicle ID: 1, Event Type: start, Timestamp: 286.68560052493535 +Vehicle ID: 1, Event Type: end, Timestamp: 286.68704934657916 +Vehicle ID: 1, Event Type: end, Timestamp: 286.6876085234131 +Vehicle ID: 1, Event Type: start, Timestamp: 286.68992542641905 +Vehicle ID: 1, Event Type: end, Timestamp: 286.69161153997123 +Vehicle ID: 1, Event Type: start, Timestamp: 286.692735559887 +Vehicle ID: 1, Event Type: end, Timestamp: 286.69428325943215 +Vehicle ID: 1, Event Type: start, Timestamp: 286.7022656534072 +Vehicle ID: 1, Event Type: end, Timestamp: 286.70406471043094 +Vehicle ID: 1, Event Type: start, Timestamp: 286.7137269637127 +Vehicle ID: 1, Event Type: start, Timestamp: 286.7155584353457 +Vehicle ID: 1, Event Type: end, Timestamp: 286.71558961238105 +Vehicle ID: 1, Event Type: start, Timestamp: 286.71585474556144 +Vehicle ID: 1, Event Type: end, Timestamp: 286.71782024806777 +Vehicle ID: 1, Event Type: end, Timestamp: 286.7180037643051 +Vehicle ID: 1, Event Type: start, Timestamp: 286.7210608365174 +Vehicle ID: 1, Event Type: start, Timestamp: 286.7215609014895 +Vehicle ID: 1, Event Type: start, Timestamp: 286.7226514847775 +Vehicle ID: 1, Event Type: end, Timestamp: 286.72270311752897 +Vehicle ID: 1, Event Type: end, Timestamp: 286.7229903170798 +Vehicle ID: 1, Event Type: end, Timestamp: 286.7250044651255 +Vehicle ID: 1, Event Type: start, Timestamp: 286.7389519077027 +Vehicle ID: 1, Event Type: end, Timestamp: 286.7410362451765 +Vehicle ID: 1, Event Type: start, Timestamp: 286.7441554552264 +Vehicle ID: 1, Event Type: end, Timestamp: 286.74693167384925 +Vehicle ID: 1, Event Type: start, Timestamp: 286.7477220478195 +Vehicle ID: 1, Event Type: end, Timestamp: 286.75083093854846 +Vehicle ID: 1, Event Type: start, Timestamp: 286.7558673456066 +Vehicle ID: 1, Event Type: start, Timestamp: 286.75608406940273 +Vehicle ID: 1, Event Type: start, Timestamp: 286.7561166538875 +Vehicle ID: 1, Event Type: end, Timestamp: 286.75779490131663 +Vehicle ID: 1, Event Type: end, Timestamp: 286.7580543072003 +Vehicle ID: 1, Event Type: end, Timestamp: 286.7588519121278 +Vehicle ID: 1, Event Type: start, Timestamp: 286.7681863612352 +Vehicle ID: 1, Event Type: end, Timestamp: 286.7700893655219 +Vehicle ID: 1, Event Type: start, Timestamp: 286.79226048547395 +Vehicle ID: 1, Event Type: end, Timestamp: 286.7932566653064 +Vehicle ID: 1, Event Type: start, Timestamp: 286.7935514280163 +Vehicle ID: 1, Event Type: start, Timestamp: 286.7935639562887 +Vehicle ID: 1, Event Type: end, Timestamp: 286.79547779230626 +Vehicle ID: 1, Event Type: end, Timestamp: 286.79627394560634 +Vehicle ID: 1, Event Type: start, Timestamp: 286.8017719013135 +Vehicle ID: 1, Event Type: end, Timestamp: 286.80413127148347 +Vehicle ID: 1, Event Type: start, Timestamp: 286.81529395595004 +Vehicle ID: 1, Event Type: end, Timestamp: 286.81661415292524 +Vehicle ID: 1, Event Type: start, Timestamp: 286.8213853681062 +Vehicle ID: 1, Event Type: end, Timestamp: 286.8229894238662 +Vehicle ID: 1, Event Type: start, Timestamp: 286.82863597563335 +Vehicle ID: 1, Event Type: start, Timestamp: 286.8293599218265 +Vehicle ID: 1, Event Type: end, Timestamp: 286.8306235292571 +Vehicle ID: 1, Event Type: start, Timestamp: 286.8306235292571 +Vehicle ID: 1, Event Type: end, Timestamp: 286.83232345484697 +Vehicle ID: 1, Event Type: start, Timestamp: 286.84209367574863 +Vehicle ID: 1, Event Type: end, Timestamp: 286.844335425427 +Vehicle ID: 1, Event Type: start, Timestamp: 286.8508632290787 +Vehicle ID: 1, Event Type: start, Timestamp: 286.85141832772524 +Vehicle ID: 1, Event Type: start, Timestamp: 286.85225842293255 +Vehicle ID: 1, Event Type: end, Timestamp: 286.85284407149766 +Vehicle ID: 1, Event Type: start, Timestamp: 286.85284407149766 +Vehicle ID: 1, Event Type: end, Timestamp: 286.85324103980486 +Vehicle ID: 1, Event Type: end, Timestamp: 286.8540532977209 +Vehicle ID: 1, Event Type: start, Timestamp: 286.8583008343282 +Vehicle ID: 1, Event Type: end, Timestamp: 286.86077513079226 +Vehicle ID: 1, Event Type: start, Timestamp: 286.86425024013255 +Vehicle ID: 1, Event Type: start, Timestamp: 286.8656590903207 +Vehicle ID: 1, Event Type: end, Timestamp: 286.8661667939113 +Vehicle ID: 1, Event Type: start, Timestamp: 286.8661667939113 +Vehicle ID: 1, Event Type: end, Timestamp: 286.86751768101306 +Vehicle ID: 1, Event Type: start, Timestamp: 286.87691477684683 +Vehicle ID: 1, Event Type: end, Timestamp: 286.8783163297159 +Vehicle ID: 1, Event Type: start, Timestamp: 286.87996861005297 +Vehicle ID: 1, Event Type: end, Timestamp: 286.88132313245336 +Vehicle ID: 1, Event Type: start, Timestamp: 286.88343638167174 +Vehicle ID: 1, Event Type: end, Timestamp: 286.8857298155743 +Vehicle ID: 1, Event Type: start, Timestamp: 286.88925405686206 +Vehicle ID: 1, Event Type: end, Timestamp: 286.8917290437532 +Vehicle ID: 1, Event Type: start, Timestamp: 286.89203736552327 +Vehicle ID: 1, Event Type: start, Timestamp: 286.8921323926715 +Vehicle ID: 1, Event Type: end, Timestamp: 286.89455725545025 +Vehicle ID: 1, Event Type: end, Timestamp: 286.8945812602523 +Vehicle ID: 1, Event Type: start, Timestamp: 286.8965859524383 +Vehicle ID: 1, Event Type: end, Timestamp: 286.8989877893261 +Vehicle ID: 1, Event Type: start, Timestamp: 286.9191052725913 +Vehicle ID: 1, Event Type: end, Timestamp: 286.92115743158547 +Vehicle ID: 1, Event Type: start, Timestamp: 286.92662576786495 +Vehicle ID: 1, Event Type: end, Timestamp: 286.9284685258884 +Vehicle ID: 1, Event Type: start, Timestamp: 286.93737477075916 +Vehicle ID: 1, Event Type: end, Timestamp: 286.93901772370094 +Vehicle ID: 1, Event Type: start, Timestamp: 286.9412963601412 +Vehicle ID: 1, Event Type: end, Timestamp: 286.943028669342 +Vehicle ID: 1, Event Type: start, Timestamp: 286.9659449129824 +Vehicle ID: 1, Event Type: end, Timestamp: 286.9682701897321 +Vehicle ID: 1, Event Type: start, Timestamp: 286.9711240831367 +Vehicle ID: 1, Event Type: end, Timestamp: 286.9739630842782 +Vehicle ID: 1, Event Type: start, Timestamp: 287.0213804977999 +Vehicle ID: 1, Event Type: end, Timestamp: 287.02387355617145 +Vehicle ID: 1, Event Type: start, Timestamp: 287.0364844694459 +Vehicle ID: 1, Event Type: end, Timestamp: 287.0386672830133 +Vehicle ID: 1, Event Type: start, Timestamp: 287.04858746386304 +Vehicle ID: 1, Event Type: end, Timestamp: 287.051211375177 +Vehicle ID: 1, Event Type: start, Timestamp: 287.0565090846145 +Vehicle ID: 1, Event Type: end, Timestamp: 287.05862480716786 +Vehicle ID: 1, Event Type: start, Timestamp: 287.0640274759096 +Vehicle ID: 1, Event Type: start, Timestamp: 287.06508874841467 +Vehicle ID: 1, Event Type: end, Timestamp: 287.065565722253 +Vehicle ID: 1, Event Type: start, Timestamp: 287.065565722253 +Vehicle ID: 1, Event Type: start, Timestamp: 287.0664517058599 +Vehicle ID: 1, Event Type: end, Timestamp: 287.0679282741997 +Vehicle ID: 1, Event Type: end, Timestamp: 287.068509400709 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1050236805988 +Vehicle ID: 1, Event Type: end, Timestamp: 287.1073983955745 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1306008074966 +Vehicle ID: 1, Event Type: end, Timestamp: 287.1320382563551 +Vehicle ID: 1, Event Type: start, Timestamp: 287.16951335196745 +Vehicle ID: 1, Event Type: end, Timestamp: 287.1716112693931 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1741449911549 +Vehicle ID: 1, Event Type: end, Timestamp: 287.1760550394994 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 +Vehicle ID: 1, Event Type: end, Timestamp: 287.19312326283386 +Vehicle ID: 1, Event Type: end, Timestamp: 287.1934481874737 diff --git a/python/altrios/demos/sim_manager_demo.py b/python/altrios/demos/sim_manager_demo.py index 247d8154..70b6048a 100644 --- a/python/altrios/demos/sim_manager_demo.py +++ b/python/altrios/demos/sim_manager_demo.py @@ -2,7 +2,7 @@ from altrios import sim_manager from altrios import utilities, defaults, train_planner import altrios as alt -from lifts import lifts_simulator +from altrios.lifts import lifts_simulator import numpy as np import matplotlib.pyplot as plt import time diff --git a/python/lifts/__init__.py b/python/altrios/lifts/__init__.py similarity index 100% rename from python/lifts/__init__.py rename to python/altrios/lifts/__init__.py diff --git a/python/lifts/demos/starter_demo/train_consist_plan.csv b/python/altrios/lifts/demos/starter_demo/train_consist_plan.csv similarity index 100% rename from python/lifts/demos/starter_demo/train_consist_plan.csv rename to python/altrios/lifts/demos/starter_demo/train_consist_plan.csv diff --git a/python/lifts/dictionary.py b/python/altrios/lifts/dictionary.py similarity index 100% rename from python/lifts/dictionary.py rename to python/altrios/lifts/dictionary.py diff --git a/python/lifts/distances.py b/python/altrios/lifts/distances.py similarity index 100% rename from python/lifts/distances.py rename to python/altrios/lifts/distances.py diff --git a/python/lifts/lifts_simulator.py b/python/altrios/lifts/lifts_simulator.py similarity index 98% rename from python/lifts/lifts_simulator.py rename to python/altrios/lifts/lifts_simulator.py index bd3b1c59..b636c8d7 100644 --- a/python/lifts/lifts_simulator.py +++ b/python/altrios/lifts/lifts_simulator.py @@ -1,12 +1,12 @@ import simpy import random import polars as pl -from lifts import utilities -from lifts.parameters import * -from lifts.distances import * -from lifts.dictionary import * -from lifts.schedule import * -from lifts.vehicle_performance import record_vehicle_event, save_average_times, save_vehicle_logs +from altrios.lifts import utilities +from altrios.lifts.parameters import * +from altrios.lifts.distances import * +from altrios.lifts.dictionary import * +from altrios.lifts.schedule import * +from altrios.lifts.vehicle_performance import record_vehicle_event, save_average_times, save_vehicle_logs # Test input @@ -579,7 +579,7 @@ def run_simulation( f.write(str(avg_time_per_train)) # Create DataFrame for container events - events_list = [(container_id, events) for container_id, events in sorted(state.container_events.items())] + events_list = [(container_id, events) for container_id, events in state.container_events.items()] container_data = ( pl.concat([ pl.DataFrame(data = None, schema = { diff --git a/python/lifts/merged_baseline.py b/python/altrios/lifts/merged_baseline.py similarity index 100% rename from python/lifts/merged_baseline.py rename to python/altrios/lifts/merged_baseline.py diff --git a/python/lifts/parameters.py b/python/altrios/lifts/parameters.py similarity index 99% rename from python/lifts/parameters.py rename to python/altrios/lifts/parameters.py index 1c1c3f2e..550151e3 100644 --- a/python/lifts/parameters.py +++ b/python/altrios/lifts/parameters.py @@ -1,7 +1,7 @@ import polars import simpy from dataclasses import dataclass, field -from lifts.schedule import * +from altrios.lifts.schedule import * def train_arrival_parameters(train_consist_plan, terminal, train_id_counter): timetable = build_train_timetable(train_consist_plan, terminal, swap_arrive_depart = False, as_dicts = False) diff --git a/python/lifts/schedule.py b/python/altrios/lifts/schedule.py similarity index 97% rename from python/lifts/schedule.py rename to python/altrios/lifts/schedule.py index 186f34bf..4e796612 100644 --- a/python/lifts/schedule.py +++ b/python/altrios/lifts/schedule.py @@ -1,7 +1,6 @@ import pandas as pd import polars as pl -import lifts.utilities -import lifts.dictionary +import altrios.lifts as lifts def build_train_timetable(train_consist_plan, terminal, swap_arrive_depart, as_dicts): df = (train_consist_plan diff --git a/python/lifts/test.py b/python/altrios/lifts/test.py similarity index 100% rename from python/lifts/test.py rename to python/altrios/lifts/test.py diff --git a/python/lifts/utilities.py b/python/altrios/lifts/utilities.py similarity index 100% rename from python/lifts/utilities.py rename to python/altrios/lifts/utilities.py diff --git a/python/lifts/vehicle_performance.py b/python/altrios/lifts/vehicle_performance.py similarity index 100% rename from python/lifts/vehicle_performance.py rename to python/altrios/lifts/vehicle_performance.py diff --git a/python/lifts/avg_time_per_train.txt b/python/lifts/avg_time_per_train.txt deleted file mode 100644 index 18e88105..00000000 --- a/python/lifts/avg_time_per_train.txt +++ /dev/null @@ -1 +0,0 @@ -137.44757283817884 \ No newline at end of file diff --git a/python/lifts/crane_hostler_combination_results.xlsx b/python/lifts/crane_hostler_combination_results.xlsx deleted file mode 100644 index f85c4288c03a62f790dd5fbf5ef46fcef835df07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5603 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 diff --git a/python/lifts/crane_work_log.txt b/python/lifts/crane_work_log.txt deleted file mode 100644 index bb9acdea..00000000 --- a/python/lifts/crane_work_log.txt +++ /dev/null @@ -1,756 +0,0 @@ -Vehicle ID: 1, Event Type: start, Timestamp: 181.18810094866248 -Vehicle ID: 1, Event Type: end, Timestamp: 181.18810094866248 -Vehicle ID: 1, Event Type: start, Timestamp: 181.2169499739688 -Vehicle ID: 1, Event Type: end, Timestamp: 181.2169499739688 -Vehicle ID: 1, Event Type: start, Timestamp: 181.2395633995604 -Vehicle ID: 1, Event Type: end, Timestamp: 181.2395633995604 -Vehicle ID: 1, Event Type: start, Timestamp: 181.2415911497569 -Vehicle ID: 1, Event Type: end, Timestamp: 181.2415911497569 -Vehicle ID: 1, Event Type: start, Timestamp: 181.27010127953702 -Vehicle ID: 1, Event Type: end, Timestamp: 181.27010127953702 -Vehicle ID: 1, Event Type: start, Timestamp: 181.2966303423458 -Vehicle ID: 1, Event Type: end, Timestamp: 181.2966303423458 -Vehicle ID: 1, Event Type: start, Timestamp: 181.29973002923202 -Vehicle ID: 1, Event Type: end, Timestamp: 181.29973002923202 -Vehicle ID: 1, Event Type: start, Timestamp: 181.3269712046554 -Vehicle ID: 1, Event Type: end, Timestamp: 181.3269712046554 -Vehicle ID: 1, Event Type: start, Timestamp: 181.37156978383837 -Vehicle ID: 1, Event Type: end, Timestamp: 181.37156978383837 -Vehicle ID: 1, Event Type: start, Timestamp: 181.39569742271803 -Vehicle ID: 1, Event Type: end, Timestamp: 181.39569742271803 -Vehicle ID: 1, Event Type: start, Timestamp: 181.39849686069468 -Vehicle ID: 1, Event Type: end, Timestamp: 181.39849686069468 -Vehicle ID: 1, Event Type: start, Timestamp: 181.43286543187185 -Vehicle ID: 1, Event Type: end, Timestamp: 181.43286543187185 -Vehicle ID: 1, Event Type: start, Timestamp: 181.4446206161728 -Vehicle ID: 1, Event Type: end, Timestamp: 181.4446206161728 -Vehicle ID: 1, Event Type: start, Timestamp: 181.4505608513666 -Vehicle ID: 1, Event Type: end, Timestamp: 181.4505608513666 -Vehicle ID: 1, Event Type: start, Timestamp: 181.45317898131094 -Vehicle ID: 1, Event Type: end, Timestamp: 181.45317898131094 -Vehicle ID: 1, Event Type: start, Timestamp: 181.4620961590926 -Vehicle ID: 1, Event Type: end, Timestamp: 181.4620961590926 -Vehicle ID: 1, Event Type: start, Timestamp: 181.4628185105591 -Vehicle ID: 1, Event Type: end, Timestamp: 181.4628185105591 -Vehicle ID: 1, Event Type: start, Timestamp: 181.4666422935576 -Vehicle ID: 1, Event Type: end, Timestamp: 181.4666422935576 -Vehicle ID: 1, Event Type: start, Timestamp: 181.47360475089386 -Vehicle ID: 1, Event Type: end, Timestamp: 181.47360475089386 -Vehicle ID: 1, Event Type: start, Timestamp: 181.4778592051455 -Vehicle ID: 1, Event Type: end, Timestamp: 181.4778592051455 -Vehicle ID: 1, Event Type: start, Timestamp: 181.48236927536854 -Vehicle ID: 1, Event Type: end, Timestamp: 181.48236927536854 -Vehicle ID: 1, Event Type: start, Timestamp: 181.4877182012895 -Vehicle ID: 1, Event Type: end, Timestamp: 181.4877182012895 -Vehicle ID: 1, Event Type: start, Timestamp: 181.49385496834242 -Vehicle ID: 1, Event Type: end, Timestamp: 181.49385496834242 -Vehicle ID: 1, Event Type: start, Timestamp: 181.4958790278033 -Vehicle ID: 1, Event Type: end, Timestamp: 181.4958790278033 -Vehicle ID: 1, Event Type: start, Timestamp: 181.51415276756347 -Vehicle ID: 1, Event Type: end, Timestamp: 181.51415276756347 -Vehicle ID: 1, Event Type: start, Timestamp: 181.51598680151878 -Vehicle ID: 1, Event Type: end, Timestamp: 181.51598680151878 -Vehicle ID: 1, Event Type: start, Timestamp: 181.5161584941351 -Vehicle ID: 1, Event Type: end, Timestamp: 181.5161584941351 -Vehicle ID: 1, Event Type: start, Timestamp: 181.52614258786556 -Vehicle ID: 1, Event Type: end, Timestamp: 181.52614258786556 -Vehicle ID: 1, Event Type: start, Timestamp: 181.538624568182 -Vehicle ID: 1, Event Type: end, Timestamp: 181.538624568182 -Vehicle ID: 1, Event Type: start, Timestamp: 181.54128287594557 -Vehicle ID: 1, Event Type: end, Timestamp: 181.54128287594557 -Vehicle ID: 1, Event Type: start, Timestamp: 181.5456369296843 -Vehicle ID: 1, Event Type: end, Timestamp: 181.5456369296843 -Vehicle ID: 1, Event Type: start, Timestamp: 181.55093016811912 -Vehicle ID: 1, Event Type: end, Timestamp: 181.55093016811912 -Vehicle ID: 1, Event Type: start, Timestamp: 181.5667558409249 -Vehicle ID: 1, Event Type: end, Timestamp: 181.5667558409249 -Vehicle ID: 1, Event Type: start, Timestamp: 181.58595532830208 -Vehicle ID: 1, Event Type: end, Timestamp: 181.58595532830208 -Vehicle ID: 1, Event Type: start, Timestamp: 181.59468483531006 -Vehicle ID: 1, Event Type: end, Timestamp: 181.59468483531006 -Vehicle ID: 1, Event Type: start, Timestamp: 181.5986984961878 -Vehicle ID: 1, Event Type: end, Timestamp: 181.5986984961878 -Vehicle ID: 1, Event Type: start, Timestamp: 181.62445046252932 -Vehicle ID: 1, Event Type: end, Timestamp: 181.62445046252932 -Vehicle ID: 1, Event Type: start, Timestamp: 181.63025814266047 -Vehicle ID: 1, Event Type: end, Timestamp: 181.63025814266047 -Vehicle ID: 1, Event Type: start, Timestamp: 181.65333433831253 -Vehicle ID: 1, Event Type: end, Timestamp: 181.65333433831253 -Vehicle ID: 1, Event Type: start, Timestamp: 181.66168683099207 -Vehicle ID: 1, Event Type: end, Timestamp: 181.66168683099207 -Vehicle ID: 1, Event Type: start, Timestamp: 181.68900601137156 -Vehicle ID: 1, Event Type: end, Timestamp: 181.68900601137156 -Vehicle ID: 1, Event Type: start, Timestamp: 181.71498060426205 -Vehicle ID: 1, Event Type: end, Timestamp: 181.71498060426205 -Vehicle ID: 1, Event Type: start, Timestamp: 181.72879533722823 -Vehicle ID: 1, Event Type: end, Timestamp: 181.72879533722823 -Vehicle ID: 1, Event Type: start, Timestamp: 181.72879533722823 -Vehicle ID: 1, Event Type: start, Timestamp: 185.29129882554636 -Vehicle ID: 1, Event Type: start, Timestamp: 188.59485466572082 -Vehicle ID: 1, Event Type: start, Timestamp: 191.80573020880337 -Vehicle ID: 1, Event Type: start, Timestamp: 195.13291747740794 -Vehicle ID: 1, Event Type: start, Timestamp: 198.24284585732684 -Vehicle ID: 1, Event Type: start, Timestamp: 201.55826542267945 -Vehicle ID: 1, Event Type: start, Timestamp: 204.7108280792925 -Vehicle ID: 1, Event Type: start, Timestamp: 207.88410895474036 -Vehicle ID: 1, Event Type: start, Timestamp: 211.1677810829238 -Vehicle ID: 1, Event Type: start, Timestamp: 214.5715207546866 -Vehicle ID: 1, Event Type: start, Timestamp: 217.91626088989418 -Vehicle ID: 1, Event Type: start, Timestamp: 221.04263344995655 -Vehicle ID: 1, Event Type: start, Timestamp: 224.21505116322993 -Vehicle ID: 1, Event Type: start, Timestamp: 227.36819152001257 -Vehicle ID: 1, Event Type: start, Timestamp: 230.70225640485077 -Vehicle ID: 1, Event Type: start, Timestamp: 234.11601199480165 -Vehicle ID: 1, Event Type: start, Timestamp: 237.61056837481476 -Vehicle ID: 1, Event Type: start, Timestamp: 241.06790153667876 -Vehicle ID: 1, Event Type: start, Timestamp: 244.35396086087565 -Vehicle ID: 1, Event Type: start, Timestamp: 247.95867513821113 -Vehicle ID: 1, Event Type: start, Timestamp: 251.5119101962305 -Vehicle ID: 1, Event Type: start, Timestamp: 254.85402223008126 -Vehicle ID: 1, Event Type: start, Timestamp: 258.16415048885403 -Vehicle ID: 1, Event Type: start, Timestamp: 261.5390441962418 -Vehicle ID: 1, Event Type: start, Timestamp: 264.8804897947488 -Vehicle ID: 1, Event Type: start, Timestamp: 268.24640170503864 -Vehicle ID: 1, Event Type: start, Timestamp: 271.86665038791364 -Vehicle ID: 1, Event Type: start, Timestamp: 275.2485328102522 -Vehicle ID: 1, Event Type: start, Timestamp: 278.9431925140135 -Vehicle ID: 1, Event Type: start, Timestamp: 282.18591289571526 -Vehicle ID: 1, Event Type: start, Timestamp: 285.6681388676054 -Vehicle ID: 1, Event Type: start, Timestamp: 289.0910656571165 -Vehicle ID: 1, Event Type: start, Timestamp: 292.4311659437903 -Vehicle ID: 1, Event Type: start, Timestamp: 295.8019065637383 -Vehicle ID: 1, Event Type: start, Timestamp: 299.0558331202028 -Vehicle ID: 1, Event Type: start, Timestamp: 302.4233966867631 -Vehicle ID: 1, Event Type: start, Timestamp: 305.7505667231033 -Vehicle ID: 1, Event Type: start, Timestamp: 309.214442293793 -Vehicle ID: 1, Event Type: start, Timestamp: 312.46635540068354 -Vehicle ID: 1, Event Type: start, Timestamp: 318.8739996002414 -Vehicle ID: 1, Event Type: end, Timestamp: 318.8739996002414 -Vehicle ID: 1, Event Type: start, Timestamp: 318.93699270648835 -Vehicle ID: 1, Event Type: end, Timestamp: 318.93699270648835 -Vehicle ID: 1, Event Type: start, Timestamp: 318.9826193820508 -Vehicle ID: 1, Event Type: end, Timestamp: 318.9826193820508 -Vehicle ID: 1, Event Type: start, Timestamp: 318.98943591221996 -Vehicle ID: 1, Event Type: end, Timestamp: 318.98943591221996 -Vehicle ID: 1, Event Type: start, Timestamp: 318.99909750369665 -Vehicle ID: 1, Event Type: end, Timestamp: 318.99909750369665 -Vehicle ID: 1, Event Type: start, Timestamp: 319.0384012754422 -Vehicle ID: 1, Event Type: end, Timestamp: 319.0384012754422 -Vehicle ID: 1, Event Type: start, Timestamp: 319.0507978948935 -Vehicle ID: 1, Event Type: end, Timestamp: 319.0507978948935 -Vehicle ID: 1, Event Type: start, Timestamp: 319.05420490829243 -Vehicle ID: 1, Event Type: end, Timestamp: 319.05420490829243 -Vehicle ID: 1, Event Type: start, Timestamp: 319.05434260093676 -Vehicle ID: 1, Event Type: end, Timestamp: 319.05434260093676 -Vehicle ID: 1, Event Type: start, Timestamp: 319.1217164745406 -Vehicle ID: 1, Event Type: end, Timestamp: 319.1217164745406 -Vehicle ID: 1, Event Type: start, Timestamp: 319.12184394750227 -Vehicle ID: 1, Event Type: end, Timestamp: 319.12184394750227 -Vehicle ID: 1, Event Type: start, Timestamp: 319.1275027870482 -Vehicle ID: 1, Event Type: end, Timestamp: 319.1275027870482 -Vehicle ID: 1, Event Type: start, Timestamp: 319.12983717099536 -Vehicle ID: 1, Event Type: end, Timestamp: 319.12983717099536 -Vehicle ID: 1, Event Type: start, Timestamp: 319.1337781489722 -Vehicle ID: 1, Event Type: end, Timestamp: 319.1337781489722 -Vehicle ID: 1, Event Type: start, Timestamp: 319.1469901387379 -Vehicle ID: 1, Event Type: end, Timestamp: 319.1469901387379 -Vehicle ID: 1, Event Type: start, Timestamp: 319.1485653144551 -Vehicle ID: 1, Event Type: end, Timestamp: 319.1485653144551 -Vehicle ID: 1, Event Type: start, Timestamp: 319.1491789069006 -Vehicle ID: 1, Event Type: end, Timestamp: 319.1491789069006 -Vehicle ID: 1, Event Type: start, Timestamp: 319.1495719690833 -Vehicle ID: 1, Event Type: end, Timestamp: 319.1495719690833 -Vehicle ID: 1, Event Type: start, Timestamp: 319.14963189413845 -Vehicle ID: 1, Event Type: end, Timestamp: 319.14963189413845 -Vehicle ID: 1, Event Type: start, Timestamp: 319.15172451244496 -Vehicle ID: 1, Event Type: end, Timestamp: 319.15172451244496 -Vehicle ID: 1, Event Type: start, Timestamp: 319.1629949895524 -Vehicle ID: 1, Event Type: end, Timestamp: 319.1629949895524 -Vehicle ID: 1, Event Type: start, Timestamp: 319.18207414950905 -Vehicle ID: 1, Event Type: end, Timestamp: 319.18207414950905 -Vehicle ID: 1, Event Type: start, Timestamp: 319.20695888083725 -Vehicle ID: 1, Event Type: end, Timestamp: 319.20695888083725 -Vehicle ID: 1, Event Type: start, Timestamp: 319.2093295884406 -Vehicle ID: 1, Event Type: end, Timestamp: 319.2093295884406 -Vehicle ID: 1, Event Type: start, Timestamp: 319.21813694702246 -Vehicle ID: 1, Event Type: end, Timestamp: 319.21813694702246 -Vehicle ID: 1, Event Type: start, Timestamp: 319.2204444346099 -Vehicle ID: 1, Event Type: end, Timestamp: 319.2204444346099 -Vehicle ID: 1, Event Type: start, Timestamp: 319.2234210815851 -Vehicle ID: 1, Event Type: end, Timestamp: 319.2234210815851 -Vehicle ID: 1, Event Type: start, Timestamp: 319.22762485177896 -Vehicle ID: 1, Event Type: end, Timestamp: 319.22762485177896 -Vehicle ID: 1, Event Type: start, Timestamp: 319.235883924627 -Vehicle ID: 1, Event Type: end, Timestamp: 319.235883924627 -Vehicle ID: 1, Event Type: start, Timestamp: 319.26354612307733 -Vehicle ID: 1, Event Type: end, Timestamp: 319.26354612307733 -Vehicle ID: 1, Event Type: start, Timestamp: 319.2749876785454 -Vehicle ID: 1, Event Type: end, Timestamp: 319.2749876785454 -Vehicle ID: 1, Event Type: start, Timestamp: 319.27809549580036 -Vehicle ID: 1, Event Type: end, Timestamp: 319.27809549580036 -Vehicle ID: 1, Event Type: start, Timestamp: 319.30891171618094 -Vehicle ID: 1, Event Type: end, Timestamp: 319.30891171618094 -Vehicle ID: 1, Event Type: start, Timestamp: 319.34390156118775 -Vehicle ID: 1, Event Type: end, Timestamp: 319.34390156118775 -Vehicle ID: 1, Event Type: start, Timestamp: 319.34570289151446 -Vehicle ID: 1, Event Type: end, Timestamp: 319.34570289151446 -Vehicle ID: 1, Event Type: start, Timestamp: 319.35881462388755 -Vehicle ID: 1, Event Type: end, Timestamp: 319.35881462388755 -Vehicle ID: 1, Event Type: start, Timestamp: 319.3764132856757 -Vehicle ID: 1, Event Type: end, Timestamp: 319.3764132856757 -Vehicle ID: 1, Event Type: start, Timestamp: 319.39401972426026 -Vehicle ID: 1, Event Type: end, Timestamp: 319.39401972426026 -Vehicle ID: 1, Event Type: start, Timestamp: 319.3982648477115 -Vehicle ID: 1, Event Type: end, Timestamp: 319.3982648477115 -Vehicle ID: 1, Event Type: start, Timestamp: 319.45737548394754 -Vehicle ID: 1, Event Type: end, Timestamp: 319.45737548394754 -Vehicle ID: 1, Event Type: start, Timestamp: 319.4921651532813 -Vehicle ID: 1, Event Type: end, Timestamp: 319.4921651532813 -Vehicle ID: 1, Event Type: start, Timestamp: 319.50146906117556 -Vehicle ID: 1, Event Type: end, Timestamp: 319.50146906117556 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5665774061846 -Vehicle ID: 1, Event Type: end, Timestamp: 319.5665774061846 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5665774061846 -Vehicle ID: 1, Event Type: start, Timestamp: 322.9056052436691 -Vehicle ID: 1, Event Type: start, Timestamp: 326.1755521192761 -Vehicle ID: 1, Event Type: start, Timestamp: 329.4632263992744 -Vehicle ID: 1, Event Type: start, Timestamp: 332.68070847585096 -Vehicle ID: 1, Event Type: start, Timestamp: 335.9967149898539 -Vehicle ID: 1, Event Type: start, Timestamp: 339.1729632248725 -Vehicle ID: 1, Event Type: start, Timestamp: 342.3786968381779 -Vehicle ID: 1, Event Type: start, Timestamp: 345.6118488976238 -Vehicle ID: 1, Event Type: start, Timestamp: 348.77749005398687 -Vehicle ID: 1, Event Type: start, Timestamp: 352.06465971330886 -Vehicle ID: 1, Event Type: start, Timestamp: 355.52707089417567 -Vehicle ID: 1, Event Type: start, Timestamp: 358.79793951547305 -Vehicle ID: 1, Event Type: start, Timestamp: 362.22404215508016 -Vehicle ID: 1, Event Type: start, Timestamp: 365.4881702508363 -Vehicle ID: 1, Event Type: start, Timestamp: 368.66241323915074 -Vehicle ID: 1, Event Type: start, Timestamp: 371.9567340068649 -Vehicle ID: 1, Event Type: start, Timestamp: 375.5827168802711 -Vehicle ID: 1, Event Type: start, Timestamp: 378.88286947155297 -Vehicle ID: 1, Event Type: start, Timestamp: 382.01359072091566 -Vehicle ID: 1, Event Type: start, Timestamp: 385.27843401114177 -Vehicle ID: 1, Event Type: start, Timestamp: 388.6932825079174 -Vehicle ID: 1, Event Type: start, Timestamp: 392.3325266709712 -Vehicle ID: 1, Event Type: start, Timestamp: 395.6461437161945 -Vehicle ID: 1, Event Type: start, Timestamp: 398.9307902874804 -Vehicle ID: 1, Event Type: start, Timestamp: 402.2711300807388 -Vehicle ID: 1, Event Type: start, Timestamp: 405.31123975006943 -Vehicle ID: 1, Event Type: start, Timestamp: 408.5937228928409 -Vehicle ID: 1, Event Type: start, Timestamp: 411.8517068908402 -Vehicle ID: 1, Event Type: start, Timestamp: 415.1968210864905 -Vehicle ID: 1, Event Type: start, Timestamp: 418.5595552059048 -Vehicle ID: 1, Event Type: start, Timestamp: 421.96308936306747 -Vehicle ID: 1, Event Type: start, Timestamp: 425.34684233749056 -Vehicle ID: 1, Event Type: start, Timestamp: 428.7178718826112 -Vehicle ID: 1, Event Type: start, Timestamp: 432.1097253373199 -Vehicle ID: 1, Event Type: start, Timestamp: 435.4535478519238 -Vehicle ID: 1, Event Type: start, Timestamp: 438.8766509636364 -Vehicle ID: 1, Event Type: start, Timestamp: 442.342131781185 -Vehicle ID: 1, Event Type: start, Timestamp: 445.77914239656707 -Vehicle ID: 1, Event Type: start, Timestamp: 448.9825534692338 -Vehicle ID: 1, Event Type: start, Timestamp: 455.5935083760501 -Vehicle ID: 1, Event Type: end, Timestamp: 455.5935083760501 -Vehicle ID: 1, Event Type: start, Timestamp: 455.6201845204868 -Vehicle ID: 1, Event Type: end, Timestamp: 455.6201845204868 -Vehicle ID: 1, Event Type: start, Timestamp: 455.6710448429829 -Vehicle ID: 1, Event Type: end, Timestamp: 455.6710448429829 -Vehicle ID: 1, Event Type: start, Timestamp: 455.71584365490673 -Vehicle ID: 1, Event Type: end, Timestamp: 455.71584365490673 -Vehicle ID: 1, Event Type: start, Timestamp: 455.72304711599696 -Vehicle ID: 1, Event Type: end, Timestamp: 455.72304711599696 -Vehicle ID: 1, Event Type: start, Timestamp: 455.7386002824134 -Vehicle ID: 1, Event Type: end, Timestamp: 455.7386002824134 -Vehicle ID: 1, Event Type: start, Timestamp: 455.7410946845584 -Vehicle ID: 1, Event Type: end, Timestamp: 455.7410946845584 -Vehicle ID: 1, Event Type: start, Timestamp: 455.76918328665187 -Vehicle ID: 1, Event Type: end, Timestamp: 455.76918328665187 -Vehicle ID: 1, Event Type: start, Timestamp: 455.7877362679247 -Vehicle ID: 1, Event Type: end, Timestamp: 455.7877362679247 -Vehicle ID: 1, Event Type: start, Timestamp: 455.7912839961487 -Vehicle ID: 1, Event Type: end, Timestamp: 455.7912839961487 -Vehicle ID: 1, Event Type: start, Timestamp: 455.7951227593967 -Vehicle ID: 1, Event Type: end, Timestamp: 455.7951227593967 -Vehicle ID: 1, Event Type: start, Timestamp: 455.82361524748967 -Vehicle ID: 1, Event Type: end, Timestamp: 455.82361524748967 -Vehicle ID: 1, Event Type: start, Timestamp: 455.8257649583366 -Vehicle ID: 1, Event Type: end, Timestamp: 455.8257649583366 -Vehicle ID: 1, Event Type: start, Timestamp: 455.84228499608304 -Vehicle ID: 1, Event Type: end, Timestamp: 455.84228499608304 -Vehicle ID: 1, Event Type: start, Timestamp: 455.84767145438695 -Vehicle ID: 1, Event Type: end, Timestamp: 455.84767145438695 -Vehicle ID: 1, Event Type: start, Timestamp: 455.86578237136786 -Vehicle ID: 1, Event Type: end, Timestamp: 455.86578237136786 -Vehicle ID: 1, Event Type: start, Timestamp: 455.8870387902212 -Vehicle ID: 1, Event Type: end, Timestamp: 455.8870387902212 -Vehicle ID: 1, Event Type: start, Timestamp: 455.8889936327316 -Vehicle ID: 1, Event Type: end, Timestamp: 455.8889936327316 -Vehicle ID: 1, Event Type: start, Timestamp: 455.8993710615559 -Vehicle ID: 1, Event Type: end, Timestamp: 455.8993710615559 -Vehicle ID: 1, Event Type: start, Timestamp: 455.9068742779516 -Vehicle ID: 1, Event Type: end, Timestamp: 455.9068742779516 -Vehicle ID: 1, Event Type: start, Timestamp: 455.91040444103027 -Vehicle ID: 1, Event Type: end, Timestamp: 455.91040444103027 -Vehicle ID: 1, Event Type: start, Timestamp: 455.910467114288 -Vehicle ID: 1, Event Type: end, Timestamp: 455.910467114288 -Vehicle ID: 1, Event Type: start, Timestamp: 455.94020943031353 -Vehicle ID: 1, Event Type: end, Timestamp: 455.94020943031353 -Vehicle ID: 1, Event Type: start, Timestamp: 455.9544088263976 -Vehicle ID: 1, Event Type: end, Timestamp: 455.9544088263976 -Vehicle ID: 1, Event Type: start, Timestamp: 455.9620472198123 -Vehicle ID: 1, Event Type: end, Timestamp: 455.9620472198123 -Vehicle ID: 1, Event Type: start, Timestamp: 455.96522068789085 -Vehicle ID: 1, Event Type: end, Timestamp: 455.96522068789085 -Vehicle ID: 1, Event Type: start, Timestamp: 455.9754971135885 -Vehicle ID: 1, Event Type: end, Timestamp: 455.9754971135885 -Vehicle ID: 1, Event Type: start, Timestamp: 455.9825210891616 -Vehicle ID: 1, Event Type: end, Timestamp: 455.9825210891616 -Vehicle ID: 1, Event Type: start, Timestamp: 455.99132724206964 -Vehicle ID: 1, Event Type: end, Timestamp: 455.99132724206964 -Vehicle ID: 1, Event Type: start, Timestamp: 456.0025517607751 -Vehicle ID: 1, Event Type: end, Timestamp: 456.0025517607751 -Vehicle ID: 1, Event Type: start, Timestamp: 456.00874052479617 -Vehicle ID: 1, Event Type: end, Timestamp: 456.00874052479617 -Vehicle ID: 1, Event Type: start, Timestamp: 456.01852998445855 -Vehicle ID: 1, Event Type: end, Timestamp: 456.01852998445855 -Vehicle ID: 1, Event Type: start, Timestamp: 456.02203586066327 -Vehicle ID: 1, Event Type: end, Timestamp: 456.02203586066327 -Vehicle ID: 1, Event Type: start, Timestamp: 456.0233424433646 -Vehicle ID: 1, Event Type: end, Timestamp: 456.0233424433646 -Vehicle ID: 1, Event Type: start, Timestamp: 456.0549417505769 -Vehicle ID: 1, Event Type: end, Timestamp: 456.0549417505769 -Vehicle ID: 1, Event Type: start, Timestamp: 456.0657118548089 -Vehicle ID: 1, Event Type: end, Timestamp: 456.0657118548089 -Vehicle ID: 1, Event Type: start, Timestamp: 456.06663525284443 -Vehicle ID: 1, Event Type: end, Timestamp: 456.06663525284443 -Vehicle ID: 1, Event Type: start, Timestamp: 456.0889000380974 -Vehicle ID: 1, Event Type: end, Timestamp: 456.0889000380974 -Vehicle ID: 1, Event Type: start, Timestamp: 456.09020777589217 -Vehicle ID: 1, Event Type: end, Timestamp: 456.09020777589217 -Vehicle ID: 1, Event Type: start, Timestamp: 456.09542709138907 -Vehicle ID: 1, Event Type: end, Timestamp: 456.09542709138907 -Vehicle ID: 1, Event Type: start, Timestamp: 456.14600852000893 -Vehicle ID: 1, Event Type: end, Timestamp: 456.14600852000893 -Vehicle ID: 1, Event Type: start, Timestamp: 456.1488599168504 -Vehicle ID: 1, Event Type: end, Timestamp: 456.1488599168504 -Vehicle ID: 1, Event Type: start, Timestamp: 456.1602464891671 -Vehicle ID: 1, Event Type: end, Timestamp: 456.1602464891671 -Vehicle ID: 1, Event Type: start, Timestamp: 456.1602464891671 -Vehicle ID: 1, Event Type: start, Timestamp: 459.61889167955337 -Vehicle ID: 1, Event Type: start, Timestamp: 462.9004809637168 -Vehicle ID: 1, Event Type: start, Timestamp: 466.26184064111095 -Vehicle ID: 1, Event Type: start, Timestamp: 469.6390484044097 -Vehicle ID: 1, Event Type: start, Timestamp: 472.81367528407833 -Vehicle ID: 1, Event Type: start, Timestamp: 476.00082075057685 -Vehicle ID: 1, Event Type: start, Timestamp: 479.16712600511926 -Vehicle ID: 1, Event Type: start, Timestamp: 482.6540710239851 -Vehicle ID: 1, Event Type: start, Timestamp: 485.9528882192979 -Vehicle ID: 1, Event Type: start, Timestamp: 489.58526662958826 -Vehicle ID: 1, Event Type: start, Timestamp: 492.92690396352316 -Vehicle ID: 1, Event Type: start, Timestamp: 496.3627266651369 -Vehicle ID: 1, Event Type: start, Timestamp: 499.6510367878425 -Vehicle ID: 1, Event Type: start, Timestamp: 502.77925288337923 -Vehicle ID: 1, Event Type: start, Timestamp: 505.9160720933218 -Vehicle ID: 1, Event Type: start, Timestamp: 508.7819332471204 -Vehicle ID: 1, Event Type: start, Timestamp: 512.0387921871225 -Vehicle ID: 1, Event Type: start, Timestamp: 515.2565179403902 -Vehicle ID: 1, Event Type: start, Timestamp: 518.675956598496 -Vehicle ID: 1, Event Type: start, Timestamp: 522.2379981564414 -Vehicle ID: 1, Event Type: start, Timestamp: 525.6840265353432 -Vehicle ID: 1, Event Type: start, Timestamp: 528.865984284031 -Vehicle ID: 1, Event Type: start, Timestamp: 532.1418896176576 -Vehicle ID: 1, Event Type: start, Timestamp: 535.5160158165572 -Vehicle ID: 1, Event Type: start, Timestamp: 538.9470301537358 -Vehicle ID: 1, Event Type: start, Timestamp: 542.2493829970781 -Vehicle ID: 1, Event Type: start, Timestamp: 545.4964644106634 -Vehicle ID: 1, Event Type: start, Timestamp: 548.8951288488275 -Vehicle ID: 1, Event Type: start, Timestamp: 552.3782446634823 -Vehicle ID: 1, Event Type: start, Timestamp: 555.8794778462774 -Vehicle ID: 1, Event Type: start, Timestamp: 559.4831322968522 -Vehicle ID: 1, Event Type: start, Timestamp: 562.6983834426575 -Vehicle ID: 1, Event Type: start, Timestamp: 565.9256861253552 -Vehicle ID: 1, Event Type: start, Timestamp: 569.5341764572795 -Vehicle ID: 1, Event Type: start, Timestamp: 573.0508043945478 -Vehicle ID: 1, Event Type: start, Timestamp: 576.3702147096086 -Vehicle ID: 1, Event Type: start, Timestamp: 579.5371484936994 -Vehicle ID: 1, Event Type: start, Timestamp: 582.7346940174698 -Vehicle ID: 1, Event Type: start, Timestamp: 586.063429054447 -Vehicle ID: 1, Event Type: start, Timestamp: 592.8712589457842 -Vehicle ID: 1, Event Type: end, Timestamp: 592.8712589457842 -Vehicle ID: 1, Event Type: start, Timestamp: 592.8736394625226 -Vehicle ID: 1, Event Type: end, Timestamp: 592.8736394625226 -Vehicle ID: 1, Event Type: start, Timestamp: 592.9353394800434 -Vehicle ID: 1, Event Type: end, Timestamp: 592.9353394800434 -Vehicle ID: 1, Event Type: start, Timestamp: 592.9990873748666 -Vehicle ID: 1, Event Type: end, Timestamp: 592.9990873748666 -Vehicle ID: 1, Event Type: start, Timestamp: 593.0084923381397 -Vehicle ID: 1, Event Type: end, Timestamp: 593.0084923381397 -Vehicle ID: 1, Event Type: start, Timestamp: 593.0102127824845 -Vehicle ID: 1, Event Type: end, Timestamp: 593.0102127824845 -Vehicle ID: 1, Event Type: start, Timestamp: 593.0470636790612 -Vehicle ID: 1, Event Type: end, Timestamp: 593.0470636790612 -Vehicle ID: 1, Event Type: start, Timestamp: 593.0644152774131 -Vehicle ID: 1, Event Type: end, Timestamp: 593.0644152774131 -Vehicle ID: 1, Event Type: start, Timestamp: 593.0792548035583 -Vehicle ID: 1, Event Type: end, Timestamp: 593.0792548035583 -Vehicle ID: 1, Event Type: start, Timestamp: 593.0926409182558 -Vehicle ID: 1, Event Type: end, Timestamp: 593.0926409182558 -Vehicle ID: 1, Event Type: start, Timestamp: 593.0935355802025 -Vehicle ID: 1, Event Type: end, Timestamp: 593.0935355802025 -Vehicle ID: 1, Event Type: start, Timestamp: 593.0956029261455 -Vehicle ID: 1, Event Type: end, Timestamp: 593.0956029261455 -Vehicle ID: 1, Event Type: start, Timestamp: 593.1157171448485 -Vehicle ID: 1, Event Type: end, Timestamp: 593.1157171448485 -Vehicle ID: 1, Event Type: start, Timestamp: 593.1215881462938 -Vehicle ID: 1, Event Type: end, Timestamp: 593.1215881462938 -Vehicle ID: 1, Event Type: start, Timestamp: 593.1299989406497 -Vehicle ID: 1, Event Type: end, Timestamp: 593.1299989406497 -Vehicle ID: 1, Event Type: start, Timestamp: 593.1335953329997 -Vehicle ID: 1, Event Type: end, Timestamp: 593.1335953329997 -Vehicle ID: 1, Event Type: start, Timestamp: 593.1508111348357 -Vehicle ID: 1, Event Type: end, Timestamp: 593.1508111348357 -Vehicle ID: 1, Event Type: start, Timestamp: 593.1605126595892 -Vehicle ID: 1, Event Type: end, Timestamp: 593.1605126595892 -Vehicle ID: 1, Event Type: start, Timestamp: 593.1644551070243 -Vehicle ID: 1, Event Type: end, Timestamp: 593.1644551070243 -Vehicle ID: 1, Event Type: start, Timestamp: 593.1662781210566 -Vehicle ID: 1, Event Type: end, Timestamp: 593.1662781210566 -Vehicle ID: 1, Event Type: start, Timestamp: 593.1747072979475 -Vehicle ID: 1, Event Type: end, Timestamp: 593.1747072979475 -Vehicle ID: 1, Event Type: start, Timestamp: 593.183167935771 -Vehicle ID: 1, Event Type: end, Timestamp: 593.183167935771 -Vehicle ID: 1, Event Type: start, Timestamp: 593.1855667067207 -Vehicle ID: 1, Event Type: end, Timestamp: 593.1855667067207 -Vehicle ID: 1, Event Type: start, Timestamp: 593.1882790691369 -Vehicle ID: 1, Event Type: end, Timestamp: 593.1882790691369 -Vehicle ID: 1, Event Type: start, Timestamp: 593.1948435437765 -Vehicle ID: 1, Event Type: end, Timestamp: 593.1948435437765 -Vehicle ID: 1, Event Type: start, Timestamp: 593.196445260608 -Vehicle ID: 1, Event Type: end, Timestamp: 593.196445260608 -Vehicle ID: 1, Event Type: start, Timestamp: 593.2035779294546 -Vehicle ID: 1, Event Type: end, Timestamp: 593.2035779294546 -Vehicle ID: 1, Event Type: start, Timestamp: 593.210942339435 -Vehicle ID: 1, Event Type: end, Timestamp: 593.210942339435 -Vehicle ID: 1, Event Type: start, Timestamp: 593.2188450241665 -Vehicle ID: 1, Event Type: end, Timestamp: 593.2188450241665 -Vehicle ID: 1, Event Type: start, Timestamp: 593.2399428482207 -Vehicle ID: 1, Event Type: end, Timestamp: 593.2399428482207 -Vehicle ID: 1, Event Type: start, Timestamp: 593.2456079453012 -Vehicle ID: 1, Event Type: end, Timestamp: 593.2456079453012 -Vehicle ID: 1, Event Type: start, Timestamp: 593.2785426389594 -Vehicle ID: 1, Event Type: end, Timestamp: 593.2785426389594 -Vehicle ID: 1, Event Type: start, Timestamp: 593.2786926669811 -Vehicle ID: 1, Event Type: end, Timestamp: 593.2786926669811 -Vehicle ID: 1, Event Type: start, Timestamp: 593.2803746846186 -Vehicle ID: 1, Event Type: end, Timestamp: 593.2803746846186 -Vehicle ID: 1, Event Type: start, Timestamp: 593.2953886900244 -Vehicle ID: 1, Event Type: end, Timestamp: 593.2953886900244 -Vehicle ID: 1, Event Type: start, Timestamp: 593.3246135919338 -Vehicle ID: 1, Event Type: end, Timestamp: 593.3246135919338 -Vehicle ID: 1, Event Type: start, Timestamp: 593.3327265420006 -Vehicle ID: 1, Event Type: end, Timestamp: 593.3327265420006 -Vehicle ID: 1, Event Type: start, Timestamp: 593.3827099347502 -Vehicle ID: 1, Event Type: end, Timestamp: 593.3827099347502 -Vehicle ID: 1, Event Type: start, Timestamp: 593.3956360099141 -Vehicle ID: 1, Event Type: end, Timestamp: 593.3956360099141 -Vehicle ID: 1, Event Type: start, Timestamp: 593.4025449697273 -Vehicle ID: 1, Event Type: end, Timestamp: 593.4025449697273 -Vehicle ID: 1, Event Type: start, Timestamp: 593.4114470403027 -Vehicle ID: 1, Event Type: end, Timestamp: 593.4114470403027 -Vehicle ID: 1, Event Type: start, Timestamp: 593.4508617986019 -Vehicle ID: 1, Event Type: end, Timestamp: 593.4508617986019 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5694365167931 -Vehicle ID: 1, Event Type: end, Timestamp: 593.5694365167931 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5694365167931 -Vehicle ID: 1, Event Type: start, Timestamp: 596.8566631949872 -Vehicle ID: 1, Event Type: start, Timestamp: 600.3048678321833 -Vehicle ID: 1, Event Type: start, Timestamp: 603.6891587255993 -Vehicle ID: 1, Event Type: start, Timestamp: 607.3415232376351 -Vehicle ID: 1, Event Type: start, Timestamp: 610.5592719442832 -Vehicle ID: 1, Event Type: start, Timestamp: 613.9318785077891 -Vehicle ID: 1, Event Type: start, Timestamp: 617.1089235580798 -Vehicle ID: 1, Event Type: start, Timestamp: 620.5216629061208 -Vehicle ID: 1, Event Type: start, Timestamp: 623.9358622066392 -Vehicle ID: 1, Event Type: start, Timestamp: 627.2976317876336 -Vehicle ID: 1, Event Type: start, Timestamp: 630.7400460479582 -Vehicle ID: 1, Event Type: start, Timestamp: 633.9887811429711 -Vehicle ID: 1, Event Type: start, Timestamp: 637.2847679319517 -Vehicle ID: 1, Event Type: start, Timestamp: 640.3921009266685 -Vehicle ID: 1, Event Type: start, Timestamp: 643.750711700144 -Vehicle ID: 1, Event Type: start, Timestamp: 647.0833509288424 -Vehicle ID: 1, Event Type: start, Timestamp: 650.1943298197803 -Vehicle ID: 1, Event Type: start, Timestamp: 653.0613859495561 -Vehicle ID: 1, Event Type: start, Timestamp: 656.5825443985923 -Vehicle ID: 1, Event Type: start, Timestamp: 660.1324437146112 -Vehicle ID: 1, Event Type: start, Timestamp: 663.427492949761 -Vehicle ID: 1, Event Type: start, Timestamp: 666.3850617117513 -Vehicle ID: 1, Event Type: start, Timestamp: 669.6640085804347 -Vehicle ID: 1, Event Type: start, Timestamp: 673.2186902950277 -Vehicle ID: 1, Event Type: start, Timestamp: 676.365400716888 -Vehicle ID: 1, Event Type: start, Timestamp: 679.9198689421906 -Vehicle ID: 1, Event Type: start, Timestamp: 683.1060452108435 -Vehicle ID: 1, Event Type: start, Timestamp: 686.4666382090737 -Vehicle ID: 1, Event Type: start, Timestamp: 690.0901181398291 -Vehicle ID: 1, Event Type: start, Timestamp: 693.3975559381556 -Vehicle ID: 1, Event Type: start, Timestamp: 696.6509971692531 -Vehicle ID: 1, Event Type: start, Timestamp: 700.3468637256792 -Vehicle ID: 1, Event Type: start, Timestamp: 704.0099113048524 -Vehicle ID: 1, Event Type: start, Timestamp: 707.5712667950886 -Vehicle ID: 1, Event Type: start, Timestamp: 710.955147861355 -Vehicle ID: 1, Event Type: start, Timestamp: 714.2303039147598 -Vehicle ID: 1, Event Type: start, Timestamp: 717.5979987610136 -Vehicle ID: 1, Event Type: start, Timestamp: 721.0742048051991 -Vehicle ID: 1, Event Type: start, Timestamp: 724.3984356817977 -Vehicle ID: 1, Event Type: start, Timestamp: 731.3206304261964 -Vehicle ID: 1, Event Type: end, Timestamp: 731.3206304261964 -Vehicle ID: 1, Event Type: start, Timestamp: 731.3901405098518 -Vehicle ID: 1, Event Type: end, Timestamp: 731.3901405098518 -Vehicle ID: 1, Event Type: start, Timestamp: 731.4065995998343 -Vehicle ID: 1, Event Type: end, Timestamp: 731.4065995998343 -Vehicle ID: 1, Event Type: start, Timestamp: 731.4242422682981 -Vehicle ID: 1, Event Type: end, Timestamp: 731.4242422682981 -Vehicle ID: 1, Event Type: start, Timestamp: 731.4286287171702 -Vehicle ID: 1, Event Type: end, Timestamp: 731.4286287171702 -Vehicle ID: 1, Event Type: start, Timestamp: 731.4489301078631 -Vehicle ID: 1, Event Type: end, Timestamp: 731.4489301078631 -Vehicle ID: 1, Event Type: start, Timestamp: 731.4581125439915 -Vehicle ID: 1, Event Type: end, Timestamp: 731.4581125439915 -Vehicle ID: 1, Event Type: start, Timestamp: 731.4897136714553 -Vehicle ID: 1, Event Type: end, Timestamp: 731.4897136714553 -Vehicle ID: 1, Event Type: start, Timestamp: 731.4906479809027 -Vehicle ID: 1, Event Type: end, Timestamp: 731.4906479809027 -Vehicle ID: 1, Event Type: start, Timestamp: 731.5016164662845 -Vehicle ID: 1, Event Type: end, Timestamp: 731.5016164662845 -Vehicle ID: 1, Event Type: start, Timestamp: 731.5065768092377 -Vehicle ID: 1, Event Type: end, Timestamp: 731.5065768092377 -Vehicle ID: 1, Event Type: start, Timestamp: 731.5114019934808 -Vehicle ID: 1, Event Type: end, Timestamp: 731.5114019934808 -Vehicle ID: 1, Event Type: start, Timestamp: 731.536995935097 -Vehicle ID: 1, Event Type: end, Timestamp: 731.536995935097 -Vehicle ID: 1, Event Type: start, Timestamp: 731.537616606379 -Vehicle ID: 1, Event Type: end, Timestamp: 731.537616606379 -Vehicle ID: 1, Event Type: start, Timestamp: 731.5425583581189 -Vehicle ID: 1, Event Type: end, Timestamp: 731.5425583581189 -Vehicle ID: 1, Event Type: start, Timestamp: 731.5641475354201 -Vehicle ID: 1, Event Type: end, Timestamp: 731.5641475354201 -Vehicle ID: 1, Event Type: start, Timestamp: 731.578917550465 -Vehicle ID: 1, Event Type: end, Timestamp: 731.578917550465 -Vehicle ID: 1, Event Type: start, Timestamp: 731.5900771757236 -Vehicle ID: 1, Event Type: end, Timestamp: 731.5900771757236 -Vehicle ID: 1, Event Type: start, Timestamp: 731.5928135091498 -Vehicle ID: 1, Event Type: end, Timestamp: 731.5928135091498 -Vehicle ID: 1, Event Type: start, Timestamp: 731.6081356013473 -Vehicle ID: 1, Event Type: end, Timestamp: 731.6081356013473 -Vehicle ID: 1, Event Type: start, Timestamp: 731.609522750243 -Vehicle ID: 1, Event Type: end, Timestamp: 731.609522750243 -Vehicle ID: 1, Event Type: start, Timestamp: 731.6138195504301 -Vehicle ID: 1, Event Type: end, Timestamp: 731.6138195504301 -Vehicle ID: 1, Event Type: start, Timestamp: 731.6328813499337 -Vehicle ID: 1, Event Type: end, Timestamp: 731.6328813499337 -Vehicle ID: 1, Event Type: start, Timestamp: 731.6346541937324 -Vehicle ID: 1, Event Type: end, Timestamp: 731.6346541937324 -Vehicle ID: 1, Event Type: start, Timestamp: 731.6390831380916 -Vehicle ID: 1, Event Type: end, Timestamp: 731.6390831380916 -Vehicle ID: 1, Event Type: start, Timestamp: 731.6502242707688 -Vehicle ID: 1, Event Type: end, Timestamp: 731.6502242707688 -Vehicle ID: 1, Event Type: start, Timestamp: 731.6527744962549 -Vehicle ID: 1, Event Type: end, Timestamp: 731.6527744962549 -Vehicle ID: 1, Event Type: start, Timestamp: 731.6602002563619 -Vehicle ID: 1, Event Type: end, Timestamp: 731.6602002563619 -Vehicle ID: 1, Event Type: start, Timestamp: 731.6669168851707 -Vehicle ID: 1, Event Type: end, Timestamp: 731.6669168851707 -Vehicle ID: 1, Event Type: start, Timestamp: 731.6823718886171 -Vehicle ID: 1, Event Type: end, Timestamp: 731.6823718886171 -Vehicle ID: 1, Event Type: start, Timestamp: 731.6881690564146 -Vehicle ID: 1, Event Type: end, Timestamp: 731.6881690564146 -Vehicle ID: 1, Event Type: start, Timestamp: 731.6935681565534 -Vehicle ID: 1, Event Type: end, Timestamp: 731.6935681565534 -Vehicle ID: 1, Event Type: start, Timestamp: 731.714647127386 -Vehicle ID: 1, Event Type: end, Timestamp: 731.714647127386 -Vehicle ID: 1, Event Type: start, Timestamp: 731.7356573736939 -Vehicle ID: 1, Event Type: end, Timestamp: 731.7356573736939 -Vehicle ID: 1, Event Type: start, Timestamp: 731.7398249039643 -Vehicle ID: 1, Event Type: end, Timestamp: 731.7398249039643 -Vehicle ID: 1, Event Type: start, Timestamp: 731.7429937451773 -Vehicle ID: 1, Event Type: end, Timestamp: 731.7429937451773 -Vehicle ID: 1, Event Type: start, Timestamp: 731.7523512720833 -Vehicle ID: 1, Event Type: end, Timestamp: 731.7523512720833 -Vehicle ID: 1, Event Type: start, Timestamp: 731.7611068709917 -Vehicle ID: 1, Event Type: end, Timestamp: 731.7611068709917 -Vehicle ID: 1, Event Type: start, Timestamp: 731.8316016379678 -Vehicle ID: 1, Event Type: end, Timestamp: 731.8316016379678 -Vehicle ID: 1, Event Type: start, Timestamp: 731.8428312427201 -Vehicle ID: 1, Event Type: end, Timestamp: 731.8428312427201 -Vehicle ID: 1, Event Type: start, Timestamp: 731.8637394255231 -Vehicle ID: 1, Event Type: end, Timestamp: 731.8637394255231 -Vehicle ID: 1, Event Type: start, Timestamp: 731.8665432571692 -Vehicle ID: 1, Event Type: end, Timestamp: 731.8665432571692 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9282189869436 -Vehicle ID: 1, Event Type: end, Timestamp: 731.9282189869436 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9282189869436 -Vehicle ID: 1, Event Type: start, Timestamp: 735.0998240118083 -Vehicle ID: 1, Event Type: start, Timestamp: 738.4200650043528 -Vehicle ID: 1, Event Type: start, Timestamp: 741.7714153627434 -Vehicle ID: 1, Event Type: start, Timestamp: 744.9431648184395 -Vehicle ID: 1, Event Type: start, Timestamp: 748.1744664633577 -Vehicle ID: 1, Event Type: start, Timestamp: 751.4804210321458 -Vehicle ID: 1, Event Type: start, Timestamp: 754.6170104579793 -Vehicle ID: 1, Event Type: start, Timestamp: 757.9256066746174 -Vehicle ID: 1, Event Type: start, Timestamp: 761.0037246413184 -Vehicle ID: 1, Event Type: start, Timestamp: 764.3937669506637 -Vehicle ID: 1, Event Type: start, Timestamp: 767.415308698361 -Vehicle ID: 1, Event Type: start, Timestamp: 771.0054513767005 -Vehicle ID: 1, Event Type: start, Timestamp: 774.4930931392231 -Vehicle ID: 1, Event Type: start, Timestamp: 777.8231656609788 -Vehicle ID: 1, Event Type: start, Timestamp: 780.7548049105734 -Vehicle ID: 1, Event Type: start, Timestamp: 784.1005281694593 -Vehicle ID: 1, Event Type: start, Timestamp: 787.4036638545809 -Vehicle ID: 1, Event Type: start, Timestamp: 790.8876897885818 -Vehicle ID: 1, Event Type: start, Timestamp: 794.4061550502396 -Vehicle ID: 1, Event Type: start, Timestamp: 797.5961471597427 -Vehicle ID: 1, Event Type: start, Timestamp: 801.0778394209822 -Vehicle ID: 1, Event Type: start, Timestamp: 804.163862230896 -Vehicle ID: 1, Event Type: start, Timestamp: 807.400555857566 -Vehicle ID: 1, Event Type: start, Timestamp: 810.9109987154833 -Vehicle ID: 1, Event Type: start, Timestamp: 814.2606653140075 -Vehicle ID: 1, Event Type: start, Timestamp: 817.3821130478354 -Vehicle ID: 1, Event Type: start, Timestamp: 820.611877609904 -Vehicle ID: 1, Event Type: start, Timestamp: 823.9685152861481 -Vehicle ID: 1, Event Type: start, Timestamp: 826.9623706146219 -Vehicle ID: 1, Event Type: start, Timestamp: 830.536412612745 -Vehicle ID: 1, Event Type: start, Timestamp: 833.8393469793829 -Vehicle ID: 1, Event Type: start, Timestamp: 837.3243445219885 -Vehicle ID: 1, Event Type: start, Timestamp: 840.5876010334862 -Vehicle ID: 1, Event Type: start, Timestamp: 843.7248773629605 -Vehicle ID: 1, Event Type: start, Timestamp: 847.0821344498537 -Vehicle ID: 1, Event Type: start, Timestamp: 850.443031418547 -Vehicle ID: 1, Event Type: start, Timestamp: 853.8416642711171 -Vehicle ID: 1, Event Type: start, Timestamp: 857.2674921126277 -Vehicle ID: 1, Event Type: start, Timestamp: 860.6510398619366 -Vehicle ID: 1, Event Type: start, Timestamp: 867.1716320897814 -Vehicle ID: 1, Event Type: end, Timestamp: 867.1716320897814 -Vehicle ID: 1, Event Type: start, Timestamp: 867.1999179923602 -Vehicle ID: 1, Event Type: end, Timestamp: 867.1999179923602 -Vehicle ID: 1, Event Type: start, Timestamp: 867.2182623528773 -Vehicle ID: 1, Event Type: end, Timestamp: 867.2182623528773 -Vehicle ID: 1, Event Type: start, Timestamp: 867.2221629321745 -Vehicle ID: 1, Event Type: end, Timestamp: 867.2221629321745 -Vehicle ID: 1, Event Type: start, Timestamp: 867.2484489022142 -Vehicle ID: 1, Event Type: end, Timestamp: 867.2484489022142 -Vehicle ID: 1, Event Type: start, Timestamp: 867.2629491496681 -Vehicle ID: 1, Event Type: end, Timestamp: 867.2629491496681 -Vehicle ID: 1, Event Type: start, Timestamp: 867.2635961927557 -Vehicle ID: 1, Event Type: end, Timestamp: 867.2635961927557 -Vehicle ID: 1, Event Type: start, Timestamp: 867.2991597652493 -Vehicle ID: 1, Event Type: end, Timestamp: 867.2991597652493 -Vehicle ID: 1, Event Type: start, Timestamp: 867.3138306533378 -Vehicle ID: 1, Event Type: end, Timestamp: 867.3138306533378 -Vehicle ID: 1, Event Type: start, Timestamp: 867.3208365469783 -Vehicle ID: 1, Event Type: end, Timestamp: 867.3208365469783 -Vehicle ID: 1, Event Type: start, Timestamp: 867.3252378046411 -Vehicle ID: 1, Event Type: end, Timestamp: 867.3252378046411 -Vehicle ID: 1, Event Type: start, Timestamp: 867.3314186434645 -Vehicle ID: 1, Event Type: end, Timestamp: 867.3314186434645 -Vehicle ID: 1, Event Type: start, Timestamp: 867.3351356067049 -Vehicle ID: 1, Event Type: end, Timestamp: 867.3351356067049 -Vehicle ID: 1, Event Type: start, Timestamp: 867.3372192107514 -Vehicle ID: 1, Event Type: end, Timestamp: 867.3372192107514 -Vehicle ID: 1, Event Type: start, Timestamp: 867.3373615100093 -Vehicle ID: 1, Event Type: end, Timestamp: 867.3373615100093 -Vehicle ID: 1, Event Type: start, Timestamp: 867.337926274468 -Vehicle ID: 1, Event Type: end, Timestamp: 867.337926274468 -Vehicle ID: 1, Event Type: start, Timestamp: 867.3418609183678 -Vehicle ID: 1, Event Type: end, Timestamp: 867.3418609183678 -Vehicle ID: 1, Event Type: start, Timestamp: 867.3435304703618 -Vehicle ID: 1, Event Type: end, Timestamp: 867.3435304703618 -Vehicle ID: 1, Event Type: start, Timestamp: 867.3575063743522 -Vehicle ID: 1, Event Type: end, Timestamp: 867.3575063743522 -Vehicle ID: 1, Event Type: start, Timestamp: 867.3696670682606 -Vehicle ID: 1, Event Type: end, Timestamp: 867.3696670682606 -Vehicle ID: 1, Event Type: start, Timestamp: 867.4022318850584 -Vehicle ID: 1, Event Type: end, Timestamp: 867.4022318850584 -Vehicle ID: 1, Event Type: start, Timestamp: 867.4022645906267 -Vehicle ID: 1, Event Type: end, Timestamp: 867.4022645906267 -Vehicle ID: 1, Event Type: start, Timestamp: 867.4023499446764 -Vehicle ID: 1, Event Type: end, Timestamp: 867.4023499446764 -Vehicle ID: 1, Event Type: start, Timestamp: 867.4030855052404 -Vehicle ID: 1, Event Type: end, Timestamp: 867.4030855052404 -Vehicle ID: 1, Event Type: start, Timestamp: 867.404601409143 -Vehicle ID: 1, Event Type: end, Timestamp: 867.404601409143 -Vehicle ID: 1, Event Type: start, Timestamp: 867.4161542614968 -Vehicle ID: 1, Event Type: end, Timestamp: 867.4161542614968 -Vehicle ID: 1, Event Type: start, Timestamp: 867.4419518297669 -Vehicle ID: 1, Event Type: end, Timestamp: 867.4419518297669 -Vehicle ID: 1, Event Type: start, Timestamp: 867.4443828058725 -Vehicle ID: 1, Event Type: end, Timestamp: 867.4443828058725 -Vehicle ID: 1, Event Type: start, Timestamp: 867.4513101495864 -Vehicle ID: 1, Event Type: end, Timestamp: 867.4513101495864 -Vehicle ID: 1, Event Type: start, Timestamp: 867.4522172898382 -Vehicle ID: 1, Event Type: end, Timestamp: 867.4522172898382 -Vehicle ID: 1, Event Type: start, Timestamp: 867.4572242409181 -Vehicle ID: 1, Event Type: end, Timestamp: 867.4572242409181 -Vehicle ID: 1, Event Type: start, Timestamp: 867.4770465455317 -Vehicle ID: 1, Event Type: end, Timestamp: 867.4770465455317 -Vehicle ID: 1, Event Type: start, Timestamp: 867.4792810708922 -Vehicle ID: 1, Event Type: end, Timestamp: 867.4792810708922 -Vehicle ID: 1, Event Type: start, Timestamp: 867.4909550291154 -Vehicle ID: 1, Event Type: end, Timestamp: 867.4909550291154 -Vehicle ID: 1, Event Type: start, Timestamp: 867.4985611840108 -Vehicle ID: 1, Event Type: end, Timestamp: 867.4985611840108 -Vehicle ID: 1, Event Type: start, Timestamp: 867.5068929947007 -Vehicle ID: 1, Event Type: end, Timestamp: 867.5068929947007 -Vehicle ID: 1, Event Type: start, Timestamp: 867.575410130665 -Vehicle ID: 1, Event Type: end, Timestamp: 867.575410130665 -Vehicle ID: 1, Event Type: start, Timestamp: 867.589805181599 -Vehicle ID: 1, Event Type: end, Timestamp: 867.589805181599 -Vehicle ID: 1, Event Type: start, Timestamp: 867.6030546230812 -Vehicle ID: 1, Event Type: end, Timestamp: 867.6030546230812 -Vehicle ID: 1, Event Type: start, Timestamp: 867.6053177439076 -Vehicle ID: 1, Event Type: end, Timestamp: 867.6053177439076 -Vehicle ID: 1, Event Type: start, Timestamp: 867.6739003818442 -Vehicle ID: 1, Event Type: end, Timestamp: 867.6739003818442 -Vehicle ID: 1, Event Type: start, Timestamp: 867.729353440657 -Vehicle ID: 1, Event Type: end, Timestamp: 867.729353440657 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7852778925983 -Vehicle ID: 1, Event Type: end, Timestamp: 867.7852778925983 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7852778925983 -Vehicle ID: 1, Event Type: start, Timestamp: 871.10637488083 -Vehicle ID: 1, Event Type: start, Timestamp: 874.6363099157693 -Vehicle ID: 1, Event Type: start, Timestamp: 877.8931156448092 -Vehicle ID: 1, Event Type: start, Timestamp: 881.3667615979431 -Vehicle ID: 1, Event Type: start, Timestamp: 884.6109525178277 -Vehicle ID: 1, Event Type: start, Timestamp: 887.9950157583431 -Vehicle ID: 1, Event Type: start, Timestamp: 891.492104860857 -Vehicle ID: 1, Event Type: start, Timestamp: 894.8614889084625 -Vehicle ID: 1, Event Type: start, Timestamp: 897.8669104087612 -Vehicle ID: 1, Event Type: start, Timestamp: 901.2163102370761 -Vehicle ID: 1, Event Type: start, Timestamp: 904.6715329841122 -Vehicle ID: 1, Event Type: start, Timestamp: 908.1193067949022 -Vehicle ID: 1, Event Type: start, Timestamp: 911.5355773772571 -Vehicle ID: 1, Event Type: start, Timestamp: 915.0648140553403 -Vehicle ID: 1, Event Type: start, Timestamp: 918.6396108179817 -Vehicle ID: 1, Event Type: start, Timestamp: 921.7810643248281 -Vehicle ID: 1, Event Type: start, Timestamp: 925.1340829475373 -Vehicle ID: 1, Event Type: start, Timestamp: 928.4840861548284 -Vehicle ID: 1, Event Type: start, Timestamp: 931.8289424449658 -Vehicle ID: 1, Event Type: start, Timestamp: 935.3783607839331 -Vehicle ID: 1, Event Type: start, Timestamp: 938.742568567247 -Vehicle ID: 1, Event Type: start, Timestamp: 942.2668656372604 -Vehicle ID: 1, Event Type: start, Timestamp: 945.4775330625824 -Vehicle ID: 1, Event Type: start, Timestamp: 948.857120542477 -Vehicle ID: 1, Event Type: start, Timestamp: 952.2416064738462 -Vehicle ID: 1, Event Type: start, Timestamp: 955.4642097684937 -Vehicle ID: 1, Event Type: start, Timestamp: 958.908004831454 -Vehicle ID: 1, Event Type: start, Timestamp: 962.1543514717368 -Vehicle ID: 1, Event Type: start, Timestamp: 965.3766851134963 -Vehicle ID: 1, Event Type: start, Timestamp: 968.6380072178458 -Vehicle ID: 1, Event Type: start, Timestamp: 972.2227800890826 -Vehicle ID: 1, Event Type: start, Timestamp: 975.612999886964 -Vehicle ID: 1, Event Type: start, Timestamp: 978.8962444201195 -Vehicle ID: 1, Event Type: start, Timestamp: 982.243657735806 -Vehicle ID: 1, Event Type: start, Timestamp: 985.8047111559798 -Vehicle ID: 1, Event Type: start, Timestamp: 989.051281603416 -Vehicle ID: 1, Event Type: start, Timestamp: 992.5200030347347 -Vehicle ID: 1, Event Type: start, Timestamp: 995.9185109073572 -Vehicle ID: 1, Event Type: start, Timestamp: 999.3107582386639 diff --git a/python/lifts/hostler_work_log.txt b/python/lifts/hostler_work_log.txt deleted file mode 100644 index aca04ba6..00000000 --- a/python/lifts/hostler_work_log.txt +++ /dev/null @@ -1,774 +0,0 @@ -Vehicle ID: 1, Event Type: start, Timestamp: 181.18810094866248 -Vehicle ID: 1, Event Type: end, Timestamp: 181.1909629977074 -Vehicle ID: 1, Event Type: start, Timestamp: 181.2169499739688 -Vehicle ID: 1, Event Type: end, Timestamp: 181.2192376389858 -Vehicle ID: 1, Event Type: start, Timestamp: 181.2395633995604 -Vehicle ID: 1, Event Type: end, Timestamp: 181.24247560236748 -Vehicle ID: 1, Event Type: start, Timestamp: 181.24247560236748 -Vehicle ID: 1, Event Type: end, Timestamp: 181.24474957802855 -Vehicle ID: 1, Event Type: start, Timestamp: 181.27010127953702 -Vehicle ID: 1, Event Type: end, Timestamp: 181.27227078528222 -Vehicle ID: 1, Event Type: start, Timestamp: 181.2966303423458 -Vehicle ID: 1, Event Type: end, Timestamp: 181.29873883909787 -Vehicle ID: 1, Event Type: start, Timestamp: 181.29973002923202 -Vehicle ID: 1, Event Type: end, Timestamp: 181.30219207532855 -Vehicle ID: 1, Event Type: start, Timestamp: 181.3269712046554 -Vehicle ID: 1, Event Type: end, Timestamp: 181.32883694651983 -Vehicle ID: 1, Event Type: start, Timestamp: 181.37156978383837 -Vehicle ID: 1, Event Type: end, Timestamp: 181.37372650534027 -Vehicle ID: 1, Event Type: start, Timestamp: 181.39569742271803 -Vehicle ID: 1, Event Type: end, Timestamp: 181.39773286319627 -Vehicle ID: 1, Event Type: start, Timestamp: 181.39849686069468 -Vehicle ID: 1, Event Type: end, Timestamp: 181.39988264098568 -Vehicle ID: 1, Event Type: start, Timestamp: 181.43286543187185 -Vehicle ID: 1, Event Type: end, Timestamp: 181.4347551983158 -Vehicle ID: 1, Event Type: start, Timestamp: 181.4446206161728 -Vehicle ID: 1, Event Type: end, Timestamp: 181.44718248452511 -Vehicle ID: 1, Event Type: start, Timestamp: 181.4505608513666 -Vehicle ID: 1, Event Type: end, Timestamp: 181.45258457677969 -Vehicle ID: 1, Event Type: start, Timestamp: 181.45317898131094 -Vehicle ID: 1, Event Type: end, Timestamp: 181.4544126391442 -Vehicle ID: 1, Event Type: start, Timestamp: 181.4620961590926 -Vehicle ID: 1, Event Type: end, Timestamp: 181.46359237418892 -Vehicle ID: 1, Event Type: start, Timestamp: 181.46359237418892 -Vehicle ID: 1, Event Type: end, Timestamp: 181.46596606197136 -Vehicle ID: 1, Event Type: start, Timestamp: 181.4666422935576 -Vehicle ID: 1, Event Type: end, Timestamp: 181.46880149723694 -Vehicle ID: 1, Event Type: start, Timestamp: 181.47360475089386 -Vehicle ID: 1, Event Type: end, Timestamp: 181.47523554530932 -Vehicle ID: 1, Event Type: start, Timestamp: 181.4778592051455 -Vehicle ID: 1, Event Type: end, Timestamp: 181.48067378017487 -Vehicle ID: 1, Event Type: start, Timestamp: 181.48236927536854 -Vehicle ID: 1, Event Type: end, Timestamp: 181.4853015647036 -Vehicle ID: 1, Event Type: start, Timestamp: 181.4877182012895 -Vehicle ID: 1, Event Type: end, Timestamp: 181.48999131863707 -Vehicle ID: 1, Event Type: start, Timestamp: 181.49385496834242 -Vehicle ID: 1, Event Type: end, Timestamp: 181.49629709865573 -Vehicle ID: 1, Event Type: start, Timestamp: 181.49629709865573 -Vehicle ID: 1, Event Type: end, Timestamp: 181.49735755393826 -Vehicle ID: 1, Event Type: start, Timestamp: 181.51415276756347 -Vehicle ID: 1, Event Type: end, Timestamp: 181.5155401110712 -Vehicle ID: 1, Event Type: start, Timestamp: 181.51598680151878 -Vehicle ID: 1, Event Type: end, Timestamp: 181.51760832736412 -Vehicle ID: 1, Event Type: start, Timestamp: 181.51760832736412 -Vehicle ID: 1, Event Type: end, Timestamp: 181.51967352739416 -Vehicle ID: 1, Event Type: start, Timestamp: 181.52614258786556 -Vehicle ID: 1, Event Type: end, Timestamp: 181.52804317944896 -Vehicle ID: 1, Event Type: start, Timestamp: 181.538624568182 -Vehicle ID: 1, Event Type: end, Timestamp: 181.54145391640233 -Vehicle ID: 1, Event Type: start, Timestamp: 181.54145391640233 -Vehicle ID: 1, Event Type: end, Timestamp: 181.54335215604567 -Vehicle ID: 1, Event Type: start, Timestamp: 181.5456369296843 -Vehicle ID: 1, Event Type: end, Timestamp: 181.54773953594952 -Vehicle ID: 1, Event Type: start, Timestamp: 181.55093016811912 -Vehicle ID: 1, Event Type: end, Timestamp: 181.55326774218463 -Vehicle ID: 1, Event Type: start, Timestamp: 181.5667558409249 -Vehicle ID: 1, Event Type: end, Timestamp: 181.56865269630507 -Vehicle ID: 1, Event Type: start, Timestamp: 181.58595532830208 -Vehicle ID: 1, Event Type: end, Timestamp: 181.58704921166273 -Vehicle ID: 1, Event Type: start, Timestamp: 181.59468483531006 -Vehicle ID: 1, Event Type: end, Timestamp: 181.59708977026753 -Vehicle ID: 1, Event Type: start, Timestamp: 181.5986984961878 -Vehicle ID: 1, Event Type: end, Timestamp: 181.6007840163298 -Vehicle ID: 1, Event Type: start, Timestamp: 181.62445046252932 -Vehicle ID: 1, Event Type: end, Timestamp: 181.626534362536 -Vehicle ID: 1, Event Type: start, Timestamp: 181.63025814266047 -Vehicle ID: 1, Event Type: end, Timestamp: 181.63266996014605 -Vehicle ID: 1, Event Type: start, Timestamp: 181.65333433831253 -Vehicle ID: 1, Event Type: end, Timestamp: 181.65595723935047 -Vehicle ID: 1, Event Type: start, Timestamp: 181.66168683099207 -Vehicle ID: 1, Event Type: end, Timestamp: 181.66392157639706 -Vehicle ID: 1, Event Type: start, Timestamp: 181.68900601137156 -Vehicle ID: 1, Event Type: end, Timestamp: 181.68992773778547 -Vehicle ID: 1, Event Type: start, Timestamp: 181.71498060426205 -Vehicle ID: 1, Event Type: end, Timestamp: 181.7181636358954 -Vehicle ID: 1, Event Type: start, Timestamp: 181.72879533722823 -Vehicle ID: 1, Event Type: end, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 181.73090218506334 -Vehicle ID: 1, Event Type: start, Timestamp: 318.8739996002414 -Vehicle ID: 1, Event Type: end, Timestamp: 318.87628004656733 -Vehicle ID: 1, Event Type: start, Timestamp: 318.93699270648835 -Vehicle ID: 1, Event Type: end, Timestamp: 318.93899849887896 -Vehicle ID: 1, Event Type: start, Timestamp: 318.9826193820508 -Vehicle ID: 1, Event Type: end, Timestamp: 318.9840882892531 -Vehicle ID: 1, Event Type: start, Timestamp: 318.98943591221996 -Vehicle ID: 1, Event Type: end, Timestamp: 318.9919702920645 -Vehicle ID: 1, Event Type: start, Timestamp: 318.99909750369665 -Vehicle ID: 1, Event Type: end, Timestamp: 319.00160602498255 -Vehicle ID: 1, Event Type: start, Timestamp: 319.0384012754422 -Vehicle ID: 1, Event Type: end, Timestamp: 319.03931453970256 -Vehicle ID: 1, Event Type: start, Timestamp: 319.0507978948935 -Vehicle ID: 1, Event Type: end, Timestamp: 319.05204415198 -Vehicle ID: 1, Event Type: start, Timestamp: 319.05420490829243 -Vehicle ID: 1, Event Type: end, Timestamp: 319.0557801174885 -Vehicle ID: 1, Event Type: start, Timestamp: 319.0557801174885 -Vehicle ID: 1, Event Type: end, Timestamp: 319.05795731185646 -Vehicle ID: 1, Event Type: start, Timestamp: 319.1217164745406 -Vehicle ID: 1, Event Type: end, Timestamp: 319.1239337383814 -Vehicle ID: 1, Event Type: start, Timestamp: 319.1239337383814 -Vehicle ID: 1, Event Type: end, Timestamp: 319.1263666849844 -Vehicle ID: 1, Event Type: start, Timestamp: 319.1275027870482 -Vehicle ID: 1, Event Type: end, Timestamp: 319.13013269185126 -Vehicle ID: 1, Event Type: start, Timestamp: 319.13013269185126 -Vehicle ID: 1, Event Type: end, Timestamp: 319.13235121005897 -Vehicle ID: 1, Event Type: start, Timestamp: 319.1337781489722 -Vehicle ID: 1, Event Type: end, Timestamp: 319.1351673206903 -Vehicle ID: 1, Event Type: start, Timestamp: 319.1469901387379 -Vehicle ID: 1, Event Type: end, Timestamp: 319.14933665306376 -Vehicle ID: 1, Event Type: start, Timestamp: 319.14933665306376 -Vehicle ID: 1, Event Type: end, Timestamp: 319.15207512659606 -Vehicle ID: 1, Event Type: start, Timestamp: 319.15207512659606 -Vehicle ID: 1, Event Type: end, Timestamp: 319.15376133634476 -Vehicle ID: 1, Event Type: start, Timestamp: 319.15376133634476 -Vehicle ID: 1, Event Type: end, Timestamp: 319.1563189900259 -Vehicle ID: 1, Event Type: start, Timestamp: 319.1563189900259 -Vehicle ID: 1, Event Type: end, Timestamp: 319.1580083634366 -Vehicle ID: 1, Event Type: start, Timestamp: 319.1580083634366 -Vehicle ID: 1, Event Type: end, Timestamp: 319.16000509419155 -Vehicle ID: 1, Event Type: start, Timestamp: 319.1629949895524 -Vehicle ID: 1, Event Type: end, Timestamp: 319.16551437055034 -Vehicle ID: 1, Event Type: start, Timestamp: 319.18207414950905 -Vehicle ID: 1, Event Type: end, Timestamp: 319.1845969650427 -Vehicle ID: 1, Event Type: start, Timestamp: 319.20695888083725 -Vehicle ID: 1, Event Type: end, Timestamp: 319.208632417297 -Vehicle ID: 1, Event Type: start, Timestamp: 319.2093295884406 -Vehicle ID: 1, Event Type: end, Timestamp: 319.21176813808245 -Vehicle ID: 1, Event Type: start, Timestamp: 319.21813694702246 -Vehicle ID: 1, Event Type: end, Timestamp: 319.2206728502366 -Vehicle ID: 1, Event Type: start, Timestamp: 319.2206728502366 -Vehicle ID: 1, Event Type: end, Timestamp: 319.2237156095032 -Vehicle ID: 1, Event Type: start, Timestamp: 319.2237156095032 -Vehicle ID: 1, Event Type: end, Timestamp: 319.2263499080363 -Vehicle ID: 1, Event Type: start, Timestamp: 319.22762485177896 -Vehicle ID: 1, Event Type: end, Timestamp: 319.2302934611609 -Vehicle ID: 1, Event Type: start, Timestamp: 319.235883924627 -Vehicle ID: 1, Event Type: end, Timestamp: 319.2379971339365 -Vehicle ID: 1, Event Type: start, Timestamp: 319.26354612307733 -Vehicle ID: 1, Event Type: end, Timestamp: 319.26536666089544 -Vehicle ID: 1, Event Type: start, Timestamp: 319.2749876785454 -Vehicle ID: 1, Event Type: end, Timestamp: 319.27753475187853 -Vehicle ID: 1, Event Type: start, Timestamp: 319.27809549580036 -Vehicle ID: 1, Event Type: end, Timestamp: 319.2798857899627 -Vehicle ID: 1, Event Type: start, Timestamp: 319.30891171618094 -Vehicle ID: 1, Event Type: end, Timestamp: 319.311140538021 -Vehicle ID: 1, Event Type: start, Timestamp: 319.34390156118775 -Vehicle ID: 1, Event Type: end, Timestamp: 319.3464925862922 -Vehicle ID: 1, Event Type: start, Timestamp: 319.3464925862922 -Vehicle ID: 1, Event Type: end, Timestamp: 319.3489888217359 -Vehicle ID: 1, Event Type: start, Timestamp: 319.35881462388755 -Vehicle ID: 1, Event Type: end, Timestamp: 319.3613860680425 -Vehicle ID: 1, Event Type: start, Timestamp: 319.3764132856757 -Vehicle ID: 1, Event Type: end, Timestamp: 319.3788886891016 -Vehicle ID: 1, Event Type: start, Timestamp: 319.39401972426026 -Vehicle ID: 1, Event Type: end, Timestamp: 319.39566385756376 -Vehicle ID: 1, Event Type: start, Timestamp: 319.3982648477115 -Vehicle ID: 1, Event Type: end, Timestamp: 319.399060212666 -Vehicle ID: 1, Event Type: start, Timestamp: 319.45737548394754 -Vehicle ID: 1, Event Type: end, Timestamp: 319.45919268439985 -Vehicle ID: 1, Event Type: start, Timestamp: 319.4921651532813 -Vehicle ID: 1, Event Type: end, Timestamp: 319.4934925709501 -Vehicle ID: 1, Event Type: start, Timestamp: 319.50146906117556 -Vehicle ID: 1, Event Type: end, Timestamp: 319.502935380315 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5665774061846 -Vehicle ID: 1, Event Type: end, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 319.5685373661546 -Vehicle ID: 1, Event Type: start, Timestamp: 455.5935083760501 -Vehicle ID: 1, Event Type: end, Timestamp: 455.59616476020483 -Vehicle ID: 1, Event Type: start, Timestamp: 455.6201845204868 -Vehicle ID: 1, Event Type: end, Timestamp: 455.6219684475737 -Vehicle ID: 1, Event Type: start, Timestamp: 455.6710448429829 -Vehicle ID: 1, Event Type: end, Timestamp: 455.67358033940076 -Vehicle ID: 1, Event Type: start, Timestamp: 455.71584365490673 -Vehicle ID: 1, Event Type: end, Timestamp: 455.71710397132875 -Vehicle ID: 1, Event Type: start, Timestamp: 455.72304711599696 -Vehicle ID: 1, Event Type: end, Timestamp: 455.7252157521757 -Vehicle ID: 1, Event Type: start, Timestamp: 455.7386002824134 -Vehicle ID: 1, Event Type: end, Timestamp: 455.741131049596 -Vehicle ID: 1, Event Type: start, Timestamp: 455.741131049596 -Vehicle ID: 1, Event Type: end, Timestamp: 455.7427439203659 -Vehicle ID: 1, Event Type: start, Timestamp: 455.76918328665187 -Vehicle ID: 1, Event Type: end, Timestamp: 455.77164494212485 -Vehicle ID: 1, Event Type: start, Timestamp: 455.7877362679247 -Vehicle ID: 1, Event Type: end, Timestamp: 455.79037126864955 -Vehicle ID: 1, Event Type: start, Timestamp: 455.7912839961487 -Vehicle ID: 1, Event Type: end, Timestamp: 455.7927523486481 -Vehicle ID: 1, Event Type: start, Timestamp: 455.7951227593967 -Vehicle ID: 1, Event Type: end, Timestamp: 455.7969668175898 -Vehicle ID: 1, Event Type: start, Timestamp: 455.82361524748967 -Vehicle ID: 1, Event Type: end, Timestamp: 455.82560791859447 -Vehicle ID: 1, Event Type: start, Timestamp: 455.8257649583366 -Vehicle ID: 1, Event Type: end, Timestamp: 455.8275480009234 -Vehicle ID: 1, Event Type: start, Timestamp: 455.84228499608304 -Vehicle ID: 1, Event Type: end, Timestamp: 455.8444655856741 -Vehicle ID: 1, Event Type: start, Timestamp: 455.84767145438695 -Vehicle ID: 1, Event Type: end, Timestamp: 455.8502175747334 -Vehicle ID: 1, Event Type: start, Timestamp: 455.86578237136786 -Vehicle ID: 1, Event Type: end, Timestamp: 455.8673254101328 -Vehicle ID: 1, Event Type: start, Timestamp: 455.8870387902212 -Vehicle ID: 1, Event Type: end, Timestamp: 455.88852568508025 -Vehicle ID: 1, Event Type: start, Timestamp: 455.8889936327316 -Vehicle ID: 1, Event Type: end, Timestamp: 455.891214898909 -Vehicle ID: 1, Event Type: start, Timestamp: 455.8993710615559 -Vehicle ID: 1, Event Type: end, Timestamp: 455.9015490408544 -Vehicle ID: 1, Event Type: start, Timestamp: 455.9068742779516 -Vehicle ID: 1, Event Type: end, Timestamp: 455.9093573908465 -Vehicle ID: 1, Event Type: start, Timestamp: 455.91040444103027 -Vehicle ID: 1, Event Type: end, Timestamp: 455.91238374649697 -Vehicle ID: 1, Event Type: start, Timestamp: 455.91238374649697 -Vehicle ID: 1, Event Type: end, Timestamp: 455.9143494742705 -Vehicle ID: 1, Event Type: start, Timestamp: 455.94020943031353 -Vehicle ID: 1, Event Type: end, Timestamp: 455.9423955117434 -Vehicle ID: 1, Event Type: start, Timestamp: 455.9544088263976 -Vehicle ID: 1, Event Type: end, Timestamp: 455.9562817041935 -Vehicle ID: 1, Event Type: start, Timestamp: 455.9620472198123 -Vehicle ID: 1, Event Type: end, Timestamp: 455.96467626557023 -Vehicle ID: 1, Event Type: start, Timestamp: 455.96522068789085 -Vehicle ID: 1, Event Type: end, Timestamp: 455.9674427872417 -Vehicle ID: 1, Event Type: start, Timestamp: 455.9754971135885 -Vehicle ID: 1, Event Type: end, Timestamp: 455.97810870917374 -Vehicle ID: 1, Event Type: start, Timestamp: 455.9825210891616 -Vehicle ID: 1, Event Type: end, Timestamp: 455.98525693109116 -Vehicle ID: 1, Event Type: start, Timestamp: 455.99132724206964 -Vehicle ID: 1, Event Type: end, Timestamp: 455.9935926815302 -Vehicle ID: 1, Event Type: start, Timestamp: 456.0025517607751 -Vehicle ID: 1, Event Type: end, Timestamp: 456.00395845164746 -Vehicle ID: 1, Event Type: start, Timestamp: 456.00874052479617 -Vehicle ID: 1, Event Type: end, Timestamp: 456.0114898333702 -Vehicle ID: 1, Event Type: start, Timestamp: 456.01852998445855 -Vehicle ID: 1, Event Type: end, Timestamp: 456.020438927436 -Vehicle ID: 1, Event Type: start, Timestamp: 456.02203586066327 -Vehicle ID: 1, Event Type: end, Timestamp: 456.02488402478957 -Vehicle ID: 1, Event Type: start, Timestamp: 456.02488402478957 -Vehicle ID: 1, Event Type: end, Timestamp: 456.0273705536782 -Vehicle ID: 1, Event Type: start, Timestamp: 456.0549417505769 -Vehicle ID: 1, Event Type: end, Timestamp: 456.05667909216777 -Vehicle ID: 1, Event Type: start, Timestamp: 456.0657118548089 -Vehicle ID: 1, Event Type: end, Timestamp: 456.0674525970771 -Vehicle ID: 1, Event Type: start, Timestamp: 456.0674525970771 -Vehicle ID: 1, Event Type: end, Timestamp: 456.06989565024287 -Vehicle ID: 1, Event Type: start, Timestamp: 456.0889000380974 -Vehicle ID: 1, Event Type: end, Timestamp: 456.0905494843689 -Vehicle ID: 1, Event Type: start, Timestamp: 456.0905494843689 -Vehicle ID: 1, Event Type: end, Timestamp: 456.092916840814 -Vehicle ID: 1, Event Type: start, Timestamp: 456.09542709138907 -Vehicle ID: 1, Event Type: end, Timestamp: 456.09731196033806 -Vehicle ID: 1, Event Type: start, Timestamp: 456.14600852000893 -Vehicle ID: 1, Event Type: end, Timestamp: 456.1483024793519 -Vehicle ID: 1, Event Type: start, Timestamp: 456.1488599168504 -Vehicle ID: 1, Event Type: end, Timestamp: 456.1507504373611 -Vehicle ID: 1, Event Type: start, Timestamp: 456.1602464891671 -Vehicle ID: 1, Event Type: end, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 456.16138371236315 -Vehicle ID: 1, Event Type: start, Timestamp: 592.8712589457842 -Vehicle ID: 1, Event Type: end, Timestamp: 592.8733683856243 -Vehicle ID: 1, Event Type: start, Timestamp: 592.8736394625226 -Vehicle ID: 1, Event Type: end, Timestamp: 592.8750313158198 -Vehicle ID: 1, Event Type: start, Timestamp: 592.9353394800434 -Vehicle ID: 1, Event Type: end, Timestamp: 592.9382762981148 -Vehicle ID: 1, Event Type: start, Timestamp: 592.9990873748666 -Vehicle ID: 1, Event Type: end, Timestamp: 593.0008007974837 -Vehicle ID: 1, Event Type: start, Timestamp: 593.0084923381397 -Vehicle ID: 1, Event Type: end, Timestamp: 593.010082688741 -Vehicle ID: 1, Event Type: start, Timestamp: 593.0102127824845 -Vehicle ID: 1, Event Type: end, Timestamp: 593.012848272023 -Vehicle ID: 1, Event Type: start, Timestamp: 593.0470636790612 -Vehicle ID: 1, Event Type: end, Timestamp: 593.0496752964842 -Vehicle ID: 1, Event Type: start, Timestamp: 593.0644152774131 -Vehicle ID: 1, Event Type: end, Timestamp: 593.0667383921534 -Vehicle ID: 1, Event Type: start, Timestamp: 593.0792548035583 -Vehicle ID: 1, Event Type: end, Timestamp: 593.0821018737204 -Vehicle ID: 1, Event Type: start, Timestamp: 593.0926409182558 -Vehicle ID: 1, Event Type: end, Timestamp: 593.094788047289 -Vehicle ID: 1, Event Type: start, Timestamp: 593.094788047289 -Vehicle ID: 1, Event Type: end, Timestamp: 593.0963718999838 -Vehicle ID: 1, Event Type: start, Timestamp: 593.0963718999838 -Vehicle ID: 1, Event Type: end, Timestamp: 593.0985080845692 -Vehicle ID: 1, Event Type: start, Timestamp: 593.1157171448485 -Vehicle ID: 1, Event Type: end, Timestamp: 593.1181732875646 -Vehicle ID: 1, Event Type: start, Timestamp: 593.1215881462938 -Vehicle ID: 1, Event Type: end, Timestamp: 593.1235479619103 -Vehicle ID: 1, Event Type: start, Timestamp: 593.1299989406497 -Vehicle ID: 1, Event Type: end, Timestamp: 593.1327951475716 -Vehicle ID: 1, Event Type: start, Timestamp: 593.1335953329997 -Vehicle ID: 1, Event Type: end, Timestamp: 593.1357314233557 -Vehicle ID: 1, Event Type: start, Timestamp: 593.1508111348357 -Vehicle ID: 1, Event Type: end, Timestamp: 593.1529387377337 -Vehicle ID: 1, Event Type: start, Timestamp: 593.1605126595892 -Vehicle ID: 1, Event Type: end, Timestamp: 593.1621645242269 -Vehicle ID: 1, Event Type: start, Timestamp: 593.1644551070243 -Vehicle ID: 1, Event Type: end, Timestamp: 593.166176033041 -Vehicle ID: 1, Event Type: start, Timestamp: 593.1662781210566 -Vehicle ID: 1, Event Type: end, Timestamp: 593.1689133155484 -Vehicle ID: 1, Event Type: start, Timestamp: 593.1747072979475 -Vehicle ID: 1, Event Type: end, Timestamp: 593.1768576174082 -Vehicle ID: 1, Event Type: start, Timestamp: 593.183167935771 -Vehicle ID: 1, Event Type: end, Timestamp: 593.1853101827064 -Vehicle ID: 1, Event Type: start, Timestamp: 593.1855667067207 -Vehicle ID: 1, Event Type: end, Timestamp: 593.1884089551302 -Vehicle ID: 1, Event Type: start, Timestamp: 593.1884089551302 -Vehicle ID: 1, Event Type: end, Timestamp: 593.1907226327752 -Vehicle ID: 1, Event Type: start, Timestamp: 593.1948435437765 -Vehicle ID: 1, Event Type: end, Timestamp: 593.1972405389101 -Vehicle ID: 1, Event Type: start, Timestamp: 593.1972405389101 -Vehicle ID: 1, Event Type: end, Timestamp: 593.1991691786975 -Vehicle ID: 1, Event Type: start, Timestamp: 593.2035779294546 -Vehicle ID: 1, Event Type: end, Timestamp: 593.2056058410363 -Vehicle ID: 1, Event Type: start, Timestamp: 593.210942339435 -Vehicle ID: 1, Event Type: end, Timestamp: 593.2137801913258 -Vehicle ID: 1, Event Type: start, Timestamp: 593.2188450241665 -Vehicle ID: 1, Event Type: end, Timestamp: 593.2222206642449 -Vehicle ID: 1, Event Type: start, Timestamp: 593.2399428482207 -Vehicle ID: 1, Event Type: end, Timestamp: 593.242464869466 -Vehicle ID: 1, Event Type: start, Timestamp: 593.2456079453012 -Vehicle ID: 1, Event Type: end, Timestamp: 593.2470978353582 -Vehicle ID: 1, Event Type: start, Timestamp: 593.2785426389594 -Vehicle ID: 1, Event Type: end, Timestamp: 593.2807770881544 -Vehicle ID: 1, Event Type: start, Timestamp: 593.2807770881544 -Vehicle ID: 1, Event Type: end, Timestamp: 593.2827208144049 -Vehicle ID: 1, Event Type: start, Timestamp: 593.2827208144049 -Vehicle ID: 1, Event Type: end, Timestamp: 593.2848963674039 -Vehicle ID: 1, Event Type: start, Timestamp: 593.2953886900244 -Vehicle ID: 1, Event Type: end, Timestamp: 593.2984313364557 -Vehicle ID: 1, Event Type: start, Timestamp: 593.3246135919338 -Vehicle ID: 1, Event Type: end, Timestamp: 593.326769112242 -Vehicle ID: 1, Event Type: start, Timestamp: 593.3327265420006 -Vehicle ID: 1, Event Type: end, Timestamp: 593.3356739321351 -Vehicle ID: 1, Event Type: start, Timestamp: 593.3827099347502 -Vehicle ID: 1, Event Type: end, Timestamp: 593.3851703113219 -Vehicle ID: 1, Event Type: start, Timestamp: 593.3956360099141 -Vehicle ID: 1, Event Type: end, Timestamp: 593.3975338318866 -Vehicle ID: 1, Event Type: start, Timestamp: 593.4025449697273 -Vehicle ID: 1, Event Type: end, Timestamp: 593.405104826971 -Vehicle ID: 1, Event Type: start, Timestamp: 593.4114470403027 -Vehicle ID: 1, Event Type: end, Timestamp: 593.4133398178601 -Vehicle ID: 1, Event Type: start, Timestamp: 593.4508617986019 -Vehicle ID: 1, Event Type: end, Timestamp: 593.4533190260203 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5694365167931 -Vehicle ID: 1, Event Type: end, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 593.5718597658104 -Vehicle ID: 1, Event Type: start, Timestamp: 731.3206304261964 -Vehicle ID: 1, Event Type: end, Timestamp: 731.321566466064 -Vehicle ID: 1, Event Type: start, Timestamp: 731.3901405098518 -Vehicle ID: 1, Event Type: end, Timestamp: 731.3925583722282 -Vehicle ID: 1, Event Type: start, Timestamp: 731.4065995998343 -Vehicle ID: 1, Event Type: end, Timestamp: 731.4085454441544 -Vehicle ID: 1, Event Type: start, Timestamp: 731.4242422682981 -Vehicle ID: 1, Event Type: end, Timestamp: 731.4260268328289 -Vehicle ID: 1, Event Type: start, Timestamp: 731.4286287171702 -Vehicle ID: 1, Event Type: end, Timestamp: 731.4303211551728 -Vehicle ID: 1, Event Type: start, Timestamp: 731.4489301078631 -Vehicle ID: 1, Event Type: end, Timestamp: 731.4509490325895 -Vehicle ID: 1, Event Type: start, Timestamp: 731.4581125439915 -Vehicle ID: 1, Event Type: end, Timestamp: 731.4603016755536 -Vehicle ID: 1, Event Type: start, Timestamp: 731.4897136714553 -Vehicle ID: 1, Event Type: end, Timestamp: 731.4919371636745 -Vehicle ID: 1, Event Type: start, Timestamp: 731.4919371636745 -Vehicle ID: 1, Event Type: end, Timestamp: 731.4937557594742 -Vehicle ID: 1, Event Type: start, Timestamp: 731.5016164662845 -Vehicle ID: 1, Event Type: end, Timestamp: 731.503554279859 -Vehicle ID: 1, Event Type: start, Timestamp: 731.5065768092377 -Vehicle ID: 1, Event Type: end, Timestamp: 731.508032490001 -Vehicle ID: 1, Event Type: start, Timestamp: 731.5114019934808 -Vehicle ID: 1, Event Type: end, Timestamp: 731.5137050054302 -Vehicle ID: 1, Event Type: start, Timestamp: 731.536995935097 -Vehicle ID: 1, Event Type: end, Timestamp: 731.5391035069686 -Vehicle ID: 1, Event Type: start, Timestamp: 731.5391035069686 -Vehicle ID: 1, Event Type: end, Timestamp: 731.5419164360416 -Vehicle ID: 1, Event Type: start, Timestamp: 731.5425583581189 -Vehicle ID: 1, Event Type: end, Timestamp: 731.5442992067154 -Vehicle ID: 1, Event Type: start, Timestamp: 731.5641475354201 -Vehicle ID: 1, Event Type: end, Timestamp: 731.5655119175985 -Vehicle ID: 1, Event Type: start, Timestamp: 731.578917550465 -Vehicle ID: 1, Event Type: end, Timestamp: 731.581071040115 -Vehicle ID: 1, Event Type: start, Timestamp: 731.5900771757236 -Vehicle ID: 1, Event Type: end, Timestamp: 731.591801397184 -Vehicle ID: 1, Event Type: start, Timestamp: 731.5928135091498 -Vehicle ID: 1, Event Type: end, Timestamp: 731.5953291925514 -Vehicle ID: 1, Event Type: start, Timestamp: 731.6081356013473 -Vehicle ID: 1, Event Type: end, Timestamp: 731.6104174597806 -Vehicle ID: 1, Event Type: start, Timestamp: 731.6104174597806 -Vehicle ID: 1, Event Type: end, Timestamp: 731.6125222865786 -Vehicle ID: 1, Event Type: start, Timestamp: 731.6138195504301 -Vehicle ID: 1, Event Type: end, Timestamp: 731.6158347828781 -Vehicle ID: 1, Event Type: start, Timestamp: 731.6328813499337 -Vehicle ID: 1, Event Type: end, Timestamp: 731.6355213668236 -Vehicle ID: 1, Event Type: start, Timestamp: 731.6355213668236 -Vehicle ID: 1, Event Type: end, Timestamp: 731.6370209416734 -Vehicle ID: 1, Event Type: start, Timestamp: 731.6390831380916 -Vehicle ID: 1, Event Type: end, Timestamp: 731.6418097901131 -Vehicle ID: 1, Event Type: start, Timestamp: 731.6502242707688 -Vehicle ID: 1, Event Type: end, Timestamp: 731.6525909644229 -Vehicle ID: 1, Event Type: start, Timestamp: 731.6527744962549 -Vehicle ID: 1, Event Type: end, Timestamp: 731.6555659836237 -Vehicle ID: 1, Event Type: start, Timestamp: 731.6602002563619 -Vehicle ID: 1, Event Type: end, Timestamp: 731.6621108308668 -Vehicle ID: 1, Event Type: start, Timestamp: 731.6669168851707 -Vehicle ID: 1, Event Type: end, Timestamp: 731.6679828792808 -Vehicle ID: 1, Event Type: start, Timestamp: 731.6823718886171 -Vehicle ID: 1, Event Type: end, Timestamp: 731.6845265064159 -Vehicle ID: 1, Event Type: start, Timestamp: 731.6881690564146 -Vehicle ID: 1, Event Type: end, Timestamp: 731.6903710222352 -Vehicle ID: 1, Event Type: start, Timestamp: 731.6935681565534 -Vehicle ID: 1, Event Type: end, Timestamp: 731.6954573784978 -Vehicle ID: 1, Event Type: start, Timestamp: 731.714647127386 -Vehicle ID: 1, Event Type: end, Timestamp: 731.7169689008024 -Vehicle ID: 1, Event Type: start, Timestamp: 731.7356573736939 -Vehicle ID: 1, Event Type: end, Timestamp: 731.7383715645221 -Vehicle ID: 1, Event Type: start, Timestamp: 731.7398249039643 -Vehicle ID: 1, Event Type: end, Timestamp: 731.7420755946144 -Vehicle ID: 1, Event Type: start, Timestamp: 731.7429937451773 -Vehicle ID: 1, Event Type: end, Timestamp: 731.7446846419817 -Vehicle ID: 1, Event Type: start, Timestamp: 731.7523512720833 -Vehicle ID: 1, Event Type: end, Timestamp: 731.7549358529423 -Vehicle ID: 1, Event Type: start, Timestamp: 731.7611068709917 -Vehicle ID: 1, Event Type: end, Timestamp: 731.7623102013866 -Vehicle ID: 1, Event Type: start, Timestamp: 731.8316016379678 -Vehicle ID: 1, Event Type: end, Timestamp: 731.8339964771505 -Vehicle ID: 1, Event Type: start, Timestamp: 731.8428312427201 -Vehicle ID: 1, Event Type: end, Timestamp: 731.8452376597625 -Vehicle ID: 1, Event Type: start, Timestamp: 731.8637394255231 -Vehicle ID: 1, Event Type: end, Timestamp: 731.8652517567886 -Vehicle ID: 1, Event Type: start, Timestamp: 731.8665432571692 -Vehicle ID: 1, Event Type: end, Timestamp: 731.8681346599969 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9282189869436 -Vehicle ID: 1, Event Type: end, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 731.9306722017452 -Vehicle ID: 1, Event Type: start, Timestamp: 867.1716320897814 -Vehicle ID: 1, Event Type: end, Timestamp: 867.1732938466214 -Vehicle ID: 1, Event Type: start, Timestamp: 867.1999179923602 -Vehicle ID: 1, Event Type: end, Timestamp: 867.2018399982803 -Vehicle ID: 1, Event Type: start, Timestamp: 867.2182623528773 -Vehicle ID: 1, Event Type: end, Timestamp: 867.2197361550462 -Vehicle ID: 1, Event Type: start, Timestamp: 867.2221629321745 -Vehicle ID: 1, Event Type: end, Timestamp: 867.2242879784972 -Vehicle ID: 1, Event Type: start, Timestamp: 867.2484489022142 -Vehicle ID: 1, Event Type: end, Timestamp: 867.2504504717932 -Vehicle ID: 1, Event Type: start, Timestamp: 867.2629491496681 -Vehicle ID: 1, Event Type: end, Timestamp: 867.2647570917936 -Vehicle ID: 1, Event Type: start, Timestamp: 867.2647570917936 -Vehicle ID: 1, Event Type: end, Timestamp: 867.2668805030337 -Vehicle ID: 1, Event Type: start, Timestamp: 867.2991597652493 -Vehicle ID: 1, Event Type: end, Timestamp: 867.3008483940196 -Vehicle ID: 1, Event Type: start, Timestamp: 867.3138306533378 -Vehicle ID: 1, Event Type: end, Timestamp: 867.3158592754602 -Vehicle ID: 1, Event Type: start, Timestamp: 867.3208365469783 -Vehicle ID: 1, Event Type: end, Timestamp: 867.3233121669354 -Vehicle ID: 1, Event Type: start, Timestamp: 867.3252378046411 -Vehicle ID: 1, Event Type: end, Timestamp: 867.3272010350114 -Vehicle ID: 1, Event Type: start, Timestamp: 867.3314186434645 -Vehicle ID: 1, Event Type: end, Timestamp: 867.3332200259315 -Vehicle ID: 1, Event Type: start, Timestamp: 867.3351356067049 -Vehicle ID: 1, Event Type: end, Timestamp: 867.3371818581517 -Vehicle ID: 1, Event Type: start, Timestamp: 867.3372192107514 -Vehicle ID: 1, Event Type: end, Timestamp: 867.3382221361878 -Vehicle ID: 1, Event Type: start, Timestamp: 867.3382221361878 -Vehicle ID: 1, Event Type: end, Timestamp: 867.3399276060737 -Vehicle ID: 1, Event Type: start, Timestamp: 867.3399276060737 -Vehicle ID: 1, Event Type: end, Timestamp: 867.3412881274744 -Vehicle ID: 1, Event Type: start, Timestamp: 867.3418609183678 -Vehicle ID: 1, Event Type: end, Timestamp: 867.3430499677985 -Vehicle ID: 1, Event Type: start, Timestamp: 867.3435304703618 -Vehicle ID: 1, Event Type: end, Timestamp: 867.3456220205852 -Vehicle ID: 1, Event Type: start, Timestamp: 867.3575063743522 -Vehicle ID: 1, Event Type: end, Timestamp: 867.3591556200575 -Vehicle ID: 1, Event Type: start, Timestamp: 867.3696670682606 -Vehicle ID: 1, Event Type: end, Timestamp: 867.3721724223768 -Vehicle ID: 1, Event Type: start, Timestamp: 867.4022318850584 -Vehicle ID: 1, Event Type: end, Timestamp: 867.4048376380688 -Vehicle ID: 1, Event Type: start, Timestamp: 867.4048376380688 -Vehicle ID: 1, Event Type: end, Timestamp: 867.4077500304076 -Vehicle ID: 1, Event Type: start, Timestamp: 867.4077500304076 -Vehicle ID: 1, Event Type: end, Timestamp: 867.4102612977832 -Vehicle ID: 1, Event Type: start, Timestamp: 867.4102612977832 -Vehicle ID: 1, Event Type: end, Timestamp: 867.4131776000314 -Vehicle ID: 1, Event Type: start, Timestamp: 867.4131776000314 -Vehicle ID: 1, Event Type: end, Timestamp: 867.4153025780848 -Vehicle ID: 1, Event Type: start, Timestamp: 867.4161542614968 -Vehicle ID: 1, Event Type: end, Timestamp: 867.418224797956 -Vehicle ID: 1, Event Type: start, Timestamp: 867.4419518297669 -Vehicle ID: 1, Event Type: end, Timestamp: 867.4441587744568 -Vehicle ID: 1, Event Type: start, Timestamp: 867.4443828058725 -Vehicle ID: 1, Event Type: end, Timestamp: 867.4466402830319 -Vehicle ID: 1, Event Type: start, Timestamp: 867.4513101495864 -Vehicle ID: 1, Event Type: end, Timestamp: 867.4539381552343 -Vehicle ID: 1, Event Type: start, Timestamp: 867.4539381552343 -Vehicle ID: 1, Event Type: end, Timestamp: 867.455085601957 -Vehicle ID: 1, Event Type: start, Timestamp: 867.4572242409181 -Vehicle ID: 1, Event Type: end, Timestamp: 867.4598538463532 -Vehicle ID: 1, Event Type: start, Timestamp: 867.4770465455317 -Vehicle ID: 1, Event Type: end, Timestamp: 867.4793186657322 -Vehicle ID: 1, Event Type: start, Timestamp: 867.4793186657322 -Vehicle ID: 1, Event Type: end, Timestamp: 867.4812180038051 -Vehicle ID: 1, Event Type: start, Timestamp: 867.4909550291154 -Vehicle ID: 1, Event Type: end, Timestamp: 867.4937322801628 -Vehicle ID: 1, Event Type: start, Timestamp: 867.4985611840108 -Vehicle ID: 1, Event Type: end, Timestamp: 867.5004705622972 -Vehicle ID: 1, Event Type: start, Timestamp: 867.5068929947007 -Vehicle ID: 1, Event Type: end, Timestamp: 867.509498467419 -Vehicle ID: 1, Event Type: start, Timestamp: 867.575410130665 -Vehicle ID: 1, Event Type: end, Timestamp: 867.5776119168584 -Vehicle ID: 1, Event Type: start, Timestamp: 867.589805181599 -Vehicle ID: 1, Event Type: end, Timestamp: 867.5917934543764 -Vehicle ID: 1, Event Type: start, Timestamp: 867.6030546230812 -Vehicle ID: 1, Event Type: end, Timestamp: 867.6053061374769 -Vehicle ID: 1, Event Type: start, Timestamp: 867.6053177439076 -Vehicle ID: 1, Event Type: end, Timestamp: 867.6063065043915 -Vehicle ID: 1, Event Type: start, Timestamp: 867.6739003818442 -Vehicle ID: 1, Event Type: end, Timestamp: 867.6755726234123 -Vehicle ID: 1, Event Type: start, Timestamp: 867.729353440657 -Vehicle ID: 1, Event Type: end, Timestamp: 867.7317430268384 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7852778925983 -Vehicle ID: 1, Event Type: end, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 -Vehicle ID: 1, Event Type: start, Timestamp: 867.7876488666546 diff --git a/python/lifts/results/simulation_crane_2_hostler_3.xlsx b/python/lifts/results/simulation_crane_2_hostler_3.xlsx deleted file mode 100644 index 081887f3e9cc37041207ae5004d4a2f1284eb782..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53916 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

ec|Ti@%E~iQa*2-I@<^n}gw@6eA7V7$IMI-i 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 ClHni# diff --git a/python/lifts/results/simulation_crane_3_hostler_1.xlsx b/python/lifts/results/simulation_crane_3_hostler_1.xlsx deleted file mode 100644 index 404bbc782947e9dfc70d083c4f280109d7334e29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53851 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

jFfcxI41a%|-5ck4QE_Dw?O~O3gG1 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 F{|98?dKUly diff --git a/python/lifts/results/simulation_crane_3_hostler_2.xlsx b/python/lifts/results/simulation_crane_3_hostler_2.xlsx deleted file mode 100644 index 53c0589069dbd2b5344056bbabb4ca840ef547ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53812 zcmZU)byU>h_C2g9N{YY$(%mWD2-4jpCDPI%At6Xecb7wlG)RLW-Hp=S-8u97%;3H6 z{jT>9b-9)t4*S_>?|lxaEcfIo=+UD`NRRj>wRE0~Dj53$f2#m~y##)l*nLoTw6k|& zeQ$5i;$~y55Fvz$@cN}Vw9lcrRO9SQq)2^u8XQ@M=O-6)Ak1+qY z-4Aw-rm%hoV}=!fv!MkUBCanq_&mc>nMNH~BqM)~+`;VF#GGZB-BB<<8yi@H?e~1? z)otQ%CN<9%)r*Xb`=y>Lusz4$QVgtlU83alr$}y8#bPAbUe*WC?QpvDMZTzAfnPk; zP?__k*3_-=!%wOYpqr7*7FP;+?$h;A@91FM6*&*HfKpEAIo&CixPX##e&NR@l%)6a z3xS6S+W|>MKE`U#JNWnzt8%&=2DFRtsWjThQz$xjN9)y0^Blgoh|Z;EA3nTB*;N!YC)G?S z*B>5U%LsF%Y@EN)_PS7#vZb6Z{8dFU9Vba8k=euCu!hN7BZJP4ErOIDm}I3)gph;$ zIsqJbRo(Ria|zq4wgstYG5p(Qv0aLg7Fb(m#{cT2B*99W(}vTi_3iUq$`WxwDb&a|yj#Xpc>HOe|6*lVG8;o`tnu>mb8Dqc${M(_>D9l!p zKwjCD{VWIVr}r5Kzh&CC{QAxA>%0ReIjor?E~O^$WY;ig@;wp|8x7G@g07Bt+f z9z^AMTk9yd^E0lchK5)6tYW}kk)$6@z+5nf_^0c4Vy@c@{ZDI@xom2QZ|exeTAtW6 zq|fp5W+X+|ql~LY+5NuW?sOwq;rsiv-YZGVX7kVJ=Fnay2>j`62mZyA} z#FqVLqMqUEXw2$to@tG38NDmM4TUOSyJZr#d2!!@X+@g`@vz3blkyfTp=un(VTevi zPbM0sA}%VH^oKaSJlU*Me6^NMMwt!`-c|{YpIC{nnpQWu9Te5-us;37Kwz(L z0@Ctn?wy#Aoh1+`9MZE%|qhvVBn>eQ#DGc>3H zvn%R@jRY+;MsmMBY}1)(p|b`PLe+RelBe0pOC(i6PN^Ps?Gitr+EXOg?2CN%v-}HB z3^uTt-sX6>d4+_0!7MgzX(&^=rcM*6{(S69mU=fen{zS0gyuO>teb1Xh$$lX+>?FAg*?fADt{r zO`V-s;eWtgB(2$IoUzx2`bvxFrX}*^-c(GpV~ik1<3~tRQtd@s{tLPJ8O{ET z>&vfdTGpBf$n($Rtm{koF|bUC%_x*8d>8LFBSr3S4I%seiJ8!4pZo1dk-K$LpL07A z=-nptWY-Y7ehIx;S6aMZU+ot0x%SPt>jyq!yD@VcdcSSxbDt;zJzH-SA@VuP7lH8e zYI)!1AGSc3wOa27j~DN2Grez9Nuf8Vq^;29exKWIQpm|P{KFxa>;0rYcf&q+@zBZB z)~mxs=x*zM7<6SC_{hxG+i6zlYX2~FI1@UnbOyb@!DIBff+!h!U-e&#K#nj(ysi^{ z?k1u8(EbdMZbPCd=;bXd^g3}|1o}j{A9{D(?b8jdx?3joSzj7U6!E^kA1*&8zR!eS zohTVXuB4JEq#)2%o%>1FuPYeC(7S4HAz>k}6zKK5Vawfkq|Y6+1^Rm!dJ)-b)p`>o z;(48T2)XIbgx*F%-JvJ7N^w38N3M(ack^~Wr{j^(YYdU)SjYuWYqto|2U0^sa4Yoj z;yCo`n%3h+2>tTZ&Ih`RAu?Wjy`Jv_fnc;=pAWCSfZQ5FA$C4q*L#N0yH@C(>B%MZ z>=Fvu%-kx2UN>fX-#|oKZdccaeJ)Expu30A`@_3ypZmZ|5wFYNi9V2B44=E>#=qvR zko#6hEh+Tmlyo~5dVRYH1qusZ-_C9VpGxHZYLgVYZbeMF#dViAKsx@yY zayo4YnZ6WJf?OOYvl?8_)DA0eU>HK~=9Q|VFNd)%hJla0W%aoR5Wm|Mfy#^AjZTzp zYn}Bg(chh@p#*8j3qgYZw2w`5lpg|8gmT0Uviq z!pEY~POOt}UfOAYn3nGMB<{Y|`!5lmzF$(h3lKRz%lAE|ow>#q=_DOIiW7-G?hcAF zR;u8-`5q<`-5McFW~je?=R-5sn~-nf%#J)%vACLPoMy^a-rC>?xE+oAprgS_rla`$ux-zZjdv#PN| zKy%bATB_dh-`b9H*U;anJVe=6ZaCUEfAN&CnT}i7pXtEb_9APO%EMn64gHF-Y5Cbm z84@6RebycPnr;?9PNb6z=v*|JqX2JFY>R86ePiGw?vH}zF)JyNzuOa+J4qewUOA*d+f00~NanjgWSYYGVaLwuKx}vcTLQ^;7T4Y(!Z$`cS=36p|5sCqzeHks1yz#M#^XerC;&zFpKEFNuH?-w$9~><9RW$u= z(KdZ>(&&W>p~9Phc7mDE*9(SHN7EYq7k2@lx?i74dpuLjm?A`RXZ#%O8ap1!mY!zi z5pOi3xH)54G8B)9hY?GfirkD5@iJ2uOj;x`*CRyd$&Y*nx#J_EjiWJz2#H+}W6E*} z(Z-qkx0@A@-#V}y5B9q}B@LC`rQh7317V~obJ*u`#nM#ve5Hhc20!34EO~6hO* z$q|zGwx&4~<`wg|YUT`ye!-(ybt7GnD8K(49EUmyLC>A>Q7qC_7)I{w+*x>=Yoind zp){jofzYIs(&wSn=TaeYJ>ki+LNYe1OHDJ#*)B>kK;#ujA<+8>ayjL@dVlhP1MDgi zG8LewSVL+%QG~gZ`|ehhZ@sU^=WWA9=6I>bxRY48)q!tX!zpVsOLIxgWlT3bI0?Hi$2fJQkn$t2m&;pp zuz}c5(j0Xb(_5ZuYbf9AcU(fW>MQ;X;oN4_YEL_r#s#&4u=lgSn+b$GccT)1GQNAk zeB1Z?qOo^VBE^<<-1jv2>oy@}qL*C&DW0&rEr85{luBbxNYvp`JN3GDN2|Jx$X1cw z^o1SLEX1krrT|u_=#4f;^UOHSeb={ zyhfn+C3$SS-;fXpHIk`nox;|9B!O!$XGxHK-DnC0`*mW^{`124{y7MG`mB%Q77TTb zS776w>Qt6xZ5&>3oo5&(A9sQ7OyZUxiYYUKYvx%JuU76n1g&o}@#A&S7%3~5gf4 zr#>YOrI{dTl`5m&A=UV;=+8$YG4-i>2L9`Nh6$Z#RKGg&!xE**v%YmJpwuBZ->N)e zewQ`(@bRZR;Jid)iJm;f`q@^&tJ@G1CHFR?Pw(Z3?xn%?C{u&diClVpg z#P2vCk5|7L%}>0Rrpd>9pR%Dgc*f8ckabLA&p;a^3uog2AuXum=y&)GAUwIjwkOjkrc@vEYH-Jexc2WG&3!a!5%9jRM?yqumN~42#I8ToF!u7a>h7+8_ zl&FcfW6lg@@wQ{cY)hGWJVH5z?4$R&pWvljTObUi=c6X28TfA#!SKdAsT=ivBJ#A0 z7CxjwDwM1vnT}UGU6$?m$me4{zjZLt^(ZmyEY_Bt2`Z z7l!lFvNX25xsI7QqhvAli@h5V6aHG}OaV5r8tHMi*Hm~YIDBA#?s-Ssma`RsMd!JV zr6~b-{kj~>|CSCrdm@D?7{KZoY7U#v%U_%)B%gD>J+`eY8dPQt7ewow|G#~gM!TY5 zS`Le2Yi#I1r^#w8+ub`TGt4RG@|MD?uX^b-dbcH#hE%wkQS8CY{DUSv+v|tx@Y%m) zvs&X)PtiEl;z@I4A~GOw=lz%^h`EWiFw*mTlhbkXEKNDve^1yVdo9}Q@cXX47_tMw z-)3h1lyMY1bTgxN#FSBl)-Zb>zGkFxzQR1M$ANvLmOQUg?Qb6HN4)}Xo!3An(f3EF zo77M2r^MZV4pKLPV}gbY*NV3J!0eQu4ta}bLR^sB=4XY9S~Epg3sx(s#j|L0O_AX7 z-OW@%xGcuPWHAE$eV|1r&PY&ik;?}8Y$EA?zv!}+7W3OTpJwPmJ|6GH98qd-{_ z;ry85yiI?GFlF-9dCr;IT&e^?a^CKR58qlg$iAN7^9pFuiDAF4m!V2bNHufE`Gdt_ zQ~K?*Oq$?>u#iYb69tJQrz@E%v*is}W=$4M zlTd-YYxUtqn52 zc19tO9m@#}5@{iK{1xp1lOTNjN%$$%gBNPbY~2Esk8@+Ys~GwgZ>U?qvE9Sl05I1j z_T5Mt_7)yg7(IF?bX1!pScp`;THS|F05+~6@D7s0oa@($#adk-L+%%bU|-LS{Nwn_+YXK^_1L*504e;SokPU5o-G^ zPnO@W*r3>+k+i+>J~DRnh|Vj9iTO@+JoYvvzjw{<0~Mn&Ntw?!EcS)wkV1ao8}hpo zsjHO6cJnx&T=AvDVOjFe(tigwY%CKyYm{W+OVm~czYIZe_l{lWMx4es?o{^QE(IJq$!y6$>^te>;a-oV zIY3;zs5+$jtHoUR3ibCiWG2IaH+_*sm)N^X$nJiZCSRJ8aT?se_VQUIPo}`Ic8esK zSIgw>wZAnZtdeZ^7**D zEw;lnWOpYLS78BQF#%wKvjv0~oxY2lxb0=#M9`t}C0M#g_RR$)o}{fB8{(lajfXem z68u3iFX@5md5d!STrusAkoAArg&o0;HJ`GUg{)Sed_s;U@+(uH>B&`~Jc$TxENnzq z*x9*BYU(G-yEpx@QaBLx&T7;}RM7K`()6xV+?YJ!(o(H)(^;Jaep)9_0ly-cROHS3VF}!Q4k63rMX4Nl5Hl2xW z^{i{MY9$>F3{+v$hbxPwife?XQTL(lf4W}DZj|?zHJnG9iMhn;TO|v11Piv1$8`f7 zgvpk8F4m&OxJtvca)-9L>XI?@o^$Je?5V$-t;gPm=Jn(Swi?LCm! zwtobj=yy;zlSkzbBf}&-Gslz2kCC|6QsSHhS(06aDYy1l@dhAMSj38duW(`;Vft-* zY?`t;DZ{2<#!1VmzPoV~3-_M!f~d=kce!jk_HP>n;uST14|~ulxi#guq6GO=I@Xmq z^G-(+7PXLf&?WD7Pt(7e+;2D)oNG{Mo1A=^O_%Ecuv&Utf~#5fNM)LlGblL(yH8Ve zPE*X&s3YiPe>VzVDT30SLUB4eLUA#8F!an_W$#_XbQ2FGIHw#qQZ>JG_YVr*{V8Gdl>kzcN6 zNTUyL5_Mt6yY9N@MjRJ+(7OUH$H_3`<$1vpk$f9oX9#AHr13RJ;X2J(hGdQ4HNm^# zW{D8qEXOx#23GF;AF~C=nsaz2PTE#@EKSD-k}b0|r1paYvuO<64*C6#1NEp?!5yZB zg5$O*FF+DR=2mH%G=q96Lq*#fegfhUU3S;&_b0|cCgNn+pnFgHG4gTEeAdsWEud3p zO&Ry05uo=ZSnmw6wnOr+H+`r9QMm&svXMqjq#@(<(o%VtnSX56>;(@p-3;C=1F{vJ zcRS9hv;Z3Uf=N*#)@pxaiX`0u$-#4oa`ZVg~yx)qFGI@t;?mSY{eLYSmI+ZPz ztVZzFoIK2kEqC;3G%*VIv3mI|NN;EKCJ+@DzLXNL^mAfNQ`dQ<=vB$doN0eff+x~Q zevb=K`xtJQ)LDzl3$qhBsbTZKoKD0-t>Em3_e}xbH`@*4-rF%Yz*}-pE9*?RHAK8= zrwueGgxFW`qC>|NYdm24B_K9WdCoA!PNQj3C{rGaTk$LWSaTXgo{y=XS-;NB+pKcy z`x*=MuK@HPt3jiXo-8TEK9f=%XO9`2NfEj9m7Ys8(SeDvs7k&KU5Ly6I(ob>rx10V zya;d&8t!_JYHXb21~@aFjH=t8eN71PZ*sD!^a$R$W&)eB6m9Z|pTl_*GnKp@q03pH zO{-(GBDRGD=>w&7r2a0=2+~wLs<>v&+FXIBmu&SkV_;i1Ia&hM;*LJ=f&}BLEUQ} znOi0HK<*DGn=abck}Nyf$|F0$$y@S|7*&~yXNM_|KClb0F$-4kOn=>*zj(-`B#0ND zYgs{aDy`Ivx)$EZd)G|4Cra+Uc1U}FDawnV3|MmY4by2!LbsJU7(%N925PLfzV{rx z$g;k+39%{I4c~a1ra|MSpA;bq=$id8FWQgztj`89GY`P1|DpdOIGv@P_5>P$Fxk+^44)_ChfEkU$b+AcZBy&q@0@7V`7|LgvztnTlVI&f&II7K{ z3&#XiRINY#geadY==OFVIjOoUGUyTsBDO?qFl3l()aeqdTvKP0X>TmeqNS;fFkJS; zRzA2OknbKVwiqwJh)C*5d;{Nm6IF~^tDof)I4Ix|Z-R82sbJ;n6P)Pnr1v^0Dq!!5 z^QvUz^Kdq|8uqfsvN4zTq-S<`!{$1QEeBh($8?0%DDbWU`Y9}c3V*>yjNp5Iv(k}p z`~VKt9}^AbJS+(Y3v~5QzU#T=iB&Oua)$YlN1(ng!tDmV z7+qG^5s1iAH@i3Lqs0Fgt7)B8`9p-MRH`3nW2*jV^ktQCY2+r-C#p#~LsoO*_{;+R zKEfN1imhE3Hq?>~1;Q2%Vxo0)`0D=Z=?-JI}t+@bfdpyOvk1JEK|H; zyUZrY@hDh0U%HwdzK7wTpF29wwKtc<6@SXFZaO=6oKm@Nj+AqMYsiZ01!vBHg~ljn zoF+FZvEgK?g!E(pw-2A{8_J^JiWOW~$WFG#MeM!1?an7Ki;9lcu=o8L{1Fqr5wK=A zDYky~_o90mm{++&U6xoC)|cu6^nT(|(F5yU6Q_%TGbvvIs{!L!&U~68ZYPjvb?RH- zoy&sRk~e2n9;=%FE{(f>QeLnWY>AX$L3xpz9)%0v!we+dn>}t4cVCaAGHYZ{${E0* zLFG$432ZW8I%$9jjh;dN65+lsy<+cOttYcsQ63xqV{{_S>J;D5e7k4}#xM#OY;UKB zDKJYoLdwJlmehbIjn};Yf}ClUhJsLHST&?HeI_ok#bAh^p^VLu-fnBRGph_nn$Gic z#ZVd4nlWLSKux_O#kybXlw+4vC1y+C29C+(kpDw>>Q}k`{QHJ)S7kdM_6^gC>5p`; zm&NYDRgC9`eGhLs+zT|`V!(6*Z#?^EPedglOCuRRq;*C^sbKd`s}ov z*IR=!TzBA2`-(<6EBbg+;y4tBn@^qYKjO%`oRHM4Vk^qwm*g3tlraQ|-i>svol-En z4xTWSS0}Q9hKSHp>Rwnm!tOEreY*ucakA~vZ^2Wq$w>~~(a1;f z3znbbYH-S1*3LZuJ~B8K+V$*CQovycX7#%!jV{6myg`Ce4e812KW^krcp8CuMnpf( z4z9@O;MTX=6$x11(w;Kg;OH)BpG*OEMmCW0Y98yNJNN6Fk;YcBI3EL$ky;nY0FW^( z`^WYkivT;prMYoD?8}bDlZZt88-Y8rzvbLFRe2!sjSAW9 zzOzf#s&JGw;I1*xteHa_l!HIead~nJQ`JAf!4wubR=-o-kcECpfs16s4gXLV!HFe@ zLb)g5DI|%9ZU!E((!C0E&l!xoV|Y#_?cHFex70=+X9HVw?>wvd-= zh5jmi!IqCRovGqfwDK~C*4t^F;TLk}V6<7lQ(DDh`noZcwHWmhd6Y)BboiRBXh>kQ zODVx4IQ$ToT-5&%ej2VJPYqg8qyA~d8qk~$q=F0wOCS{t!cu{}4jy-9o;FzFMLFL)ex{`1$LUB z<)H-l-CA?}gR{cI7|U7iwQL*NJw~ge75p;0fnOpk$~YOgkVu>RA!kzVgPl2ZjYD{I zGq{2$vT?hi}l`HaRJ`jgzKBCUzZRk4CCtt8y4Xwj#V-!jE%U{?k z2Q-Oz?_YhKSwwS6)IuJr*3C*+iwX#Wo6>@0K(mW;jXk1NnM8Q;L)V_kt^eEg4Ttc@ zJX3TXaGE-To_+W1xVLN$(|n#$q@URtsh%DijES6=76288s*QP^f34@DlF;w~-yN_^ zuIi)Z6m#Y5)ueU-H$T1jgsXb(?`a9-(?NJX)#+R}_c#ZA;-u<0Dqm%26XxpJsYiK# z%Z-R#MaS;qh;4!O2Vf=ekfkrWA9Lbh$T<0A$IBQ2w-auZJz@!Ff_pTgkPf;Z9^1S7 zKeA7FoGbym8-&}PPUqxi$k==IbRCK1?On7v!Dhv2gyFMBg|^q?Om759VQ#@x`(4L? z`lsYsdMJHpSM$St10x~_qsNmjbsKx=Y1~@#h3fRIj>P)kiNuS*24U@-zgQZWR)>Wu zaore;KKU=$XmNNHKE4g5v(Q*)-oTu*Z<>x4N~8Y+auLg4^31UoSdck_3xPww`fDH& zhVB90hqy^=+v+)XWBn7bEG{=e8dfIx%GXbn+wHCQA*mC39^zAL=3GG7o`4^u=EUmhD zoF&+6{EVv~`~~Wt$PRm!9}nDA9$cF~={P+LzvHFeGcNd~l1`pa5E3B8lYEo`n)fN( zz5kK*skHPGULLp>s7?oL>mm#aMr+2lM_!gvUfIbb6PFlwGF*)6!k^V$AiV3_%Qwn9YpzSl=Am4zxr zkT2)6vg73~$@>;XDsaLCQhHniHmBKd&=6-oY}Cj;u=3Ei0;K{6aW5jln0c_Mb?w|c zLFHO=XKXQQ8aNb~#LF1q<&8RxOWcKpY+;D_9die(m$)uEtxu-fsj;OES)~8gF^!qd z-M(NS_>G1Ip|mU+FL+e%*cu&p); zr`R6+UQe^AD0(3PQY@x2$d9b^m+L3Av*qYio!ig{Rd&t;+>|HP2-*NV|{AL|oUW7eGDx#Cl%N=dA&3k5{L0_u^E@X?HP_`h1w= zwihJ6xSAgFiXLS8Qf9 zgD}#b!iRVW`(|VVH6Uhf%_h2Z?_`Bfo|wV6n@bggVT*$eHKlo+b6s(tZJ__06BAhf zhOqvDFbmYL4(YKi+=}m-4r2U0hU&P5sixYi(zC0^)_fl3SWKbIv%Nd!tf^3jFh`66 zaW?#nSxfPtW{e+j6j`vjU%WI2X##@djjLM!#%&uAocRaA0XA0EzSpY_I3c+Xx(+1` zDs*45yh=hEHUZn7(wyVn2;GInG5D#Vt+_MGDL*-UvEX0k;E`lZSskSyj<;&!)_JJz z9s>cM7Wl~&xUXuMSBo{iK2&wdrNz_%ss}`1X>j?o=+4Tw<+jJb+%*E3R}&QH~j3ED1OBtz0*FE^?5m?Zjns4PMnL)57-rwsf)%5!X0tC z1H5&U!8ClUAx#DQ!=p&n2>vXQ){NeCyi(?zpQXxJyI4|J`#apU!ppGcEm0-0pLLq( z&k5DkSN>hP-9ojxGgm*#EzI=8*xx{Jj==66YG6plX8Qcrfi&DZ)s$v19iKKq!?|y( zP&2WkmqUtj#6gOd$GIDeD%ICXls1;hpDA@QlvA-$Xz+?(l$6?9kOAv>A3PX4_-s*1 z>)VId7h$(+_lNQymOIMX*up*@4sS{Z>P)zLAqBkmeT^1GGD;gMNZrc@HdTA65UZBM z=Wl4%I5=8OYgK|csyDrHMG?NL7-j64{+)h-Ty~`hjI?W0YR!Eme1i~?yM}P%MS_1w z(7zIF>R^OFy^=W`&Qw)!eDe~epW=g#6!xdZNDoHG8qmxq8P3V>ohrPsZ6bxA+mjv! z%)7Qup3z;604&(f$DQEvf{%KwZh!RtS|53xA>Kc-qD%;g`KaC~uWapUtV5vPm3zJE zMA^@@(j@HP&dxIY_9N}@9tKeDcRqrqUS47b&dcBrnS2ddnM8e+$O*|*9+qho1TaX< zXWX*HiM$eHOljg5089+o5=U!eEQNTfG^lGQ8iC>@+Fdm_@Zwg@K=DeI!3$C;aI*Rc zN4z1@s*(8Yd<{yvY6kPrD5p%;>9?&`lhe=9U0`K~u4!Zf)Q{b@bQePysf?-UEs-rR zdl`mD5NX5u?-cwP|Ze{33oznhhX9-wUryQ5Z zwOYbFvx#64B5}o8S2t5VqV1}(f&otPruGci)bIOXJnS(IznNCkADqRLo;y`@x*zTY zo4Od`Yn{L$x44Eu&hP>M=1T{zQ)vV#SP#Huy8vyG9YqW&VQ{2COo20siUauudse5a z+0p*)jo_DAxk(pD3<;v>tkwqn|)O*r>8)!Xn9=BXT@INNJ4$}I^R%|T6%)#O(i!&tWOthB3Q9kCAeA~Ikh(;ip|Lfa@b>6?7kjm zvl{7G#v=rOk({*JI#fz&b$!zBzje5XdEYE^rWKS_WzDI`Bv(%nkAm)4ALg@eag@g& ziI7K!+o{7XWloh8T%_j;pHY?YG9m@0(?4UQ;!{{6r=R~rM@BPOOl0S?Tj4`o{C>r( zR#I^vR&gI_#MYrgRx3Zi$6@Wj5B+*6N}_2y`g}JphgFt;X|XckFK%q9zm;JLz3J!f zP7FRSB{1Ym(Z)?J%gv4oE7-I72aU4=c=AcBYD!P#6#u|&?9t)#<;>^cL>MFG+hOG^ ze`#yVf*1J?1gH$6m-pt7e<&+u{Z^l2-j6zMHL2y_4CXh7I& z32bzW^bm^iZdiFz-vl#&^lGlbkVo#c#-Wyu55y^FTJ7pq!RNG4z_ffVRACL2$8vOs zF(>D?7+}t7gNWBI=qmqDTAho>x(FTPvuQ9oa>8GKAG14c1g_QH zr}|Y&r8qN+r>EgT|E7wf&%Yx(=H*}~XR{TP05a73CFI(7|DpdQSpQ+D&}NSrwlUWJ zco}WYtA0PSH>W{PSuE2w5w>9PPGW(eos(zst6>=Q2f4Qq)FHKdo__>kLgu`_^=ri| zU#DfAfJ3v6BxkU*d6u%(AFS`pRX;cy z?B}%Q5c7e1-jD!ZThe1sC>XentF=J^VcgSl}ZY{XjJnonM zh-pK!6>6PAMyOcn^UB1h^p9S~uniL`&0j-e$_kE*59uZdZ1#w-B;DI(y4YQm16Q|k- zbP54@AKrBf{;sH}$gVUM zt=3s8XYtt>%in3YzMb9oBwGivfcWBf)=Q{k{}T%Ku}i;Y<;kt7j{j#|w`?^lQGmtDZ2IfOyuC8pFBlEKlm)$^b7Mmm=u(ggdn_zCW$<(!)!(eus0bQT~NBqXc* zxF7|X>Ls&+5=8aR=@q8r$TPA*)RhE9Ta;d@*}aFdpo{@i?n%Q}mx^31iX+zr@5WTx zbt(t)ZeXNAooN{%B2r13B!92|;jhd&#@C(U`BuS9LLD>J`$=+8LNEdUU-P|j*|eP7 z=j0i9L|7w3FKCnfOtGCEdPS4)n$N8xSjXxvVWTu8bP>3q>6v|0?ha2%DAEZ|-J%R3 zpLi9b&}m0S(6U6zNIV`0c>^OPcCK}lKuGh8PBX_g&!_0$4vj(W z*6J$BV~jR-a0WI#eKpvwTSn$nh_J2Aio8_$0L?Axs&El369}b_Hq}q{>Y0t-D*$PR zdZmN+`i~wu*VB>>ntOjmCPHVQ7Jq>4z;kZHpHqCs^S9|@6usgmwQCtsxHeMmrkq@l zE+$jzclx7mkh(G!n7-#8{~$1=wYW=p)1Q)i1pI$PxUm}Rlx*E9+`hc2w`zW6u>dIK zONe_-Doo!^X_f(ff1f-u3>LffxND&5&+#T3ko;DXzOk9e)Amv#`FyA@;BCmdw%gL5IROu>0Z|BI?;FjC^9|Hx$PFc+?28efFbP7f~ibW zEE9@o)3PkGaoR7fm|dcILGEOY4FK{anr+graV84Dd%Asty{9d5jXyR6ez3Do>_b%Q zz|hOcl4gHy2>kppK$gqMuLq<72c(Om_s_FIGM*zl^KWhNV--P6RojquH+kv?<&QEF zJFh5jEYi{)FV7gABl1%g@+{KCa@8eNsu~B6B?yLPV5IB;i5p^ZVgVnB45hgm^1S|r zgS?#Fasp~9`p^-3Li&6?(;Nz)CRCb)zi~eAiG)PO#1UjSoQ~tck%8Tu61$V|r zHW7gr(n= zdq9LubT}&p^6pSq>q*FQ%@7w(4*Eu(+l>^_j52;?m--Z98;uafAeIlb4JdFCpfM~Y zCGjec%lqmE)?lVRkQn*x7n*xzM2mMx4W^KAg|#vyTN$z{&<8a-n`Nq^hqk)~&%3Cf zidoQTCp@(q`SLoSsR+8TVYKo=)PY5YJ@tq+Tx;@*VYHwjY1HJWhVZcvT)Y50-rz%` z%JGBWB4APemAQ)idNh3M%L>eYj45`nb$ctD!6+_!+^dv2N^jFG$_8@bz$l_l#}(j5 z>sc%y#1a~VaIEu9H}O_iB9cuX~*ac%?BujIq=`zgjigA&m99xiE|~{G3pNCwvh$c20^<0HY(bS zpdR7YoZ~4Wo^4BZbIs*Hi3jL;~UK)!GXY-#l)DvF`s2Y56;xH6;JT7Qc9pz=RNN@0b zsDGWY3mc?|G^36Cs-NPf$L$7;=V0KxZecw!;>p{gjxzniR*mxn5$q^eF|c;U{yIYg zNO|+I{Vm|0WF{I@m`DQnNR@8+)U2*|74%el=5MC|1xSeP+ydD%ar zRyE>{M^7;$`#m7ZeCKg<~mGER1PYUcgF%fW!QrVv&s zLL3^2fIc5T5n`<}@?`D6N8h;(3(ko?5Ee4|Zx}EO>Z`@#JU5XU_I!207lrU3X5R9q zAOaDOiLSwB=UA1W9%`u!xo(5!Q});sSorNr2b;2TMT!)8{O0Pc@bc7Q+Ni5s4k_!-Hrzb=gw$?($<# zGM}xBAg_xwXW!BOtM8aFdck@YmX%%^E{=uZ;e<(yZ{b5bD?KnmpA*-Ns>;Fv<77{# za#$HQXJ>S2eT;EbVxIymh5<@O2ZCfDtL6oB71>aY$=oP?JsTcYet6iNhbVKCpUHjj zh?>Z?M<`EugwU!&_30+fIbQyjx~0&NuM{>s6GR*|hX58O`83h%sHCUL5$;eNz`~85 znm}ncVeZl?COf?U4`eo6?gWV6yY`tqqo*@%}kwR{#7 zpCEit!0b&Md+Hf$*tlaMY-UsFQ^JJ#7hG1}pPIl(i4x6}MaomjZlzLeya_-9*b=l3 zkYVl^Qy4a{Y5!WJNpBGD#43{!`!T&ssQd5(VhLAsnq8~66fRn?)qV1uYvUgKCrS~lYtp%cfzaj*%c+fuUYsjT>eTL zhpT-I)@$)NWXX6m%=p34^eG057MMdD62P|ufq-=KF?NYY zOU#6S*!bzmo-8YCq<9w!X2wAU>7aLKSO3#`!mIvo22xJnbopC1+<|k!vq^*~IlUZR zZmC*jhj&s@12lJXvkFzf54r4%TA1cG6F2MC8_d8KVnF3Vy3fk>!G@p42v^o(4>AFj z?;nQEYqxv@EJ;=j@M@wcAZ=Z|jA`0W4e*S}5g?`Ozzm&G5WSQyK3)q<>xD&vVjvP6 zSlG=(cWRqnTKprV1x>acBL2Q`mQx(C7r<*Pbv$SRymn=~wx+}A50AOQjdxwJBMP;| z8rw$C$0XnoF{cMcDh>Ha4aXd~L{K-3x4bGTlfxCsdsu~mECY(+^IWX^qc!og%M-X- z0So2lu>URJr#(f{TOZpAG-`F76Y1rTReGPuTn>Ld z7(T`SUxn9u=?aR$>}JdEooYdtFTd?--lNm41nwv7``9)u>#(dIaC~6cl^a1mlG|}p zqgLN^@bN$HAu(v~53y*CtEvBy<_~2@f(p{Z=<-45H8OPPrBeb<={Gh1B}PTIY+m~o zS?7=S6Df{;@p7rP^bHijMU!-8w<$!1ImaY$Z^GiQR{h0n@Ne4#avt#gn1UJ==c!6v zzlyXtC_5cgf)2V)yxyAhz;rz10HWcT#Q=jY?+#MRPxuvpI*uC-TL*j1$-)rarT!1x|N^$pvqM%?Y8*;P!cgtl5k{L4_Pp{^| zQMzwowu3~D|ENsH3D*dAfVLLw^StBi*Wabj5}|XOaeClV0U>#SS2_<^nzm$} z48jY-m@!`ea}M&DQKrCzqf-BkNyJmC`$W;3&DzQbd3i97EE0@PhT!&mby|+(mm>l( z_mO?HCl_OA#CjKXUbGw#1#i|l-V|^FEGvl(uMm#$xanT~3zB#gI=`uiRKFb)WwFJi z|NmdqBsPYxJNG0iN1Nu?SsoU%aymEK36fKwWGv0J{^sS_0e35&EfJL(?A#`Yh#yuX z;Ozo=54#q+ZlF5v$f~i~){Wq*Q3K%}2Fh+UEJXeX6meByh8FG+Pzv3?YrKW}(>_d{ zjv>@#pAeReb`1KZ1>lG}$Eyto1y`)6x@*jX(iAQA$jFlO~A$1U@?C*+<9`Q|l_%X!A`{CFK-Vuyqf6RRfli z`ZAoIPtHpF(DVL9RHMzEPw) z75Xm}(^G)u{y(O!G9aq8>k85(-60*)JqQxg-3Stj2t!JDNhsYR4MRx?N=Sor#}Fco zv`B}9fZsWT-tYZ+ulJtkJUiD~d!NxhW{>3Qw-F7zTWSEjI`eGrSKh<*p4fCcgnDgN zv8-Dz&DHtxD{Qf|oOPiMuTgR-7od3dOl6?PX|7%cKj&LOnJvuQYwl}nRv*JH*={M? zIv;FQgGV#C7)4*G^#gK`+-#5BSi`Oxaz(v5?Wgv5<+OfqjsjFhn&MPQ;$!yApB?-$ zS-OA3-rwlGzd5CuYD-5*CNHuBu8}B)Y1N7??m=G5OPbVJ!z4rva$f1U$_8u_c2T;4 zt&}XxSR&`7_9YMoUsk!jHtoy?fEM> zr9oj=gJrU-n*Gdz*~k1uJ`s3@_us5qq1^gzk4`+s=B@s}$6{|huDUPW< zIfjz+f0)oO_q;C7$TS-n`(7Wbvh*J3+P<_+&=f?#`Qqe9-iMOFElPk}fMmG%TgbI< z7`<2WOV+72yi&<~(ug`hLNsVs+QzHy8?I<81uKslhABA$OLqs=Rt3 zeQSCkQ3*}(@>p`uX#RNJN`%0J6)CVhOn>;hKRqMz-H$Zl@h;U@j3_V3S^&vM~L7<=pCx_t;%exoLxulwB7I<*%teRV`omzlIcrHxRzTms*v5Fae0lR2F|&EdKn8 z*^wl_79O;#YU5qB{Y89E7KSAA%L*zx#_qE=!j$K~umMf)+9I0+MsLo5o?HoH>9TvG zQu%>R{m6g*<9NK+ut9TsF56E55BqQIg_uYPNyz*1@!|$ zk1|K7e#cPg@Eo-X^s9?tqGHO7MSwLz=&5L(_*L|5akb2>Tuhab{0aFNNo+ewiDHrOWW}J5Wn3(J!VNw?u(q@03yD}RuineA5i4~ps_YRPya{0e7i_OgRV>~KbzP94GFhVavJG>@o4m? za#5^L)YlJ4yd)|xFPbL?W^E(iBi(<(0!LlX5UbD%v%>*xqfVs?f}^@jC>2fcXjMaM zKR66d;}KPjJ`D@f8QmT(1e)m_&`dXI{->E%jXcrM>qC3{NJPB$66mH4FC_Tunl`ca z>|d?T4`yu0I&Xa<<}W9T5YOeH$K9{XcpPqcdNo z$4c0re<0=wY3|E0o?29)%YD}MwtE8sWCH;K3K#n<2w0kC#c50Oqeyh3!nd`-SZig^vF0*ngp-Lr*2p-MH%3UuqlO7xpDMM(mtTd~&|0CuJi>hnVk*o+RAG&%z4 zLIV6vz5_1~OvTO-Q?bxL>PRx`wJgNFL`+1N7g_}^sO1l3xHDi>_MAqKM9BOSKzg@o z2ujH-L^_r}p{H_LYY8g%yi6UZ^ULHN7o8L<3`vCe9G5KG!!#&R((>|Nj>!q=_ z2aq9qZ`WXq*Sy_s3j)SgKX3(Ni1}4Ph-3nm_0U-)2t~=!(s<`aKdAVU%)0xy#;R1T z8o=aVBFrL5mWyZ^x0Kf+JRV2s<#)v^%qxtG0XVw-mcf%3vg^pwRTPxT_cPg+TjlQy>O) za!8GjiS_6~1$DF#$GS`+l6{oLL?L_QSD98HFNu*gpgoHegA)kiDJB^)Vi+mN#}GY~ zZGmyA*uaiI(Y#Zy(kz8tUr6Hf8_W5O7j=~lc3I~3g$u73l=nUdvO zm;M4>s!!2R_{gzrF`v5r*^H{hXoY#!ikkW>7uSA86Wivh5d^ZRJBW00DwGYvR(sLX ztB761l%{qHwmj_JH=3G4sLtZsn`_qvmuCR_B2&M$Is)2RM8|U)WSabn>U`SHSCYl5 z`m!r);2sPReJAaWo?eXnb^y0Qp88Ud^{x@BRi6ALnd|3k_?xAQ`5{LpM1*mZw4v8b zz_U*_kwIjq$e##K3FFEI65wdji~910EWoofJuVNm4k${?TlnSB-y1F-pX4?T@5)gY zmuLw9v4|p%BAdB3{Dk(ebeF4wc`fW+;76Lkzd?){VDpD`R^b_sgr3Q405swVvD@w0KfB=fb~q)9OLdKPJ()eo5hX>Baq9j9PTV6`D(?Xk_XjsEdg%m> zDr_R`iYy_=ft^koM2ef%taXq^rlWMvp{XZ`T@Y~Gqb4mWhr*SbeOIIFpDwkX7YRMy z(s{TUz@Jh`G&uf+pZh`*9B{^8odN?+C!x$%pSLlETj;|=IN=U)>DmJjv20iWjC`F~ zdiWh@ZUO6?zv+(zM|->IxQc!Kk2Sh>e!~f_i4qlr>XX z+~55Tm*tvAZ`bY$?z-eW>8WxyH>7ydBlicf^#p4}tW>>4PvQ|DC+J=m#ViVBfJw0k z+c>vp<{?$kA1OmUz$LRq#OT!8%|4B^R5)Wm71oB^DqxnoOB`_tXeib$`GnddLkdk8CYJTmgx>$|;sPUCL}Y`_pdMxBnkU?)Mvl=RU5pN1(t zVW5mxNS5`=L?U!swvyf^?d9SluUp zK*`&(BlI%_akN9G=PC$})SNVJvL0D(q-y+&L*FrP8aR2hd+P4|Q%{RD$&#BzTu!3W zwg83GGnOfE$$@`#{a|IRA_*CFRwSZ9H8rmZgXho8qRNt79M|mRmHI!TCu1xElU~1YR_}Zn|ofW^1&Kv+h zJ|+;7V-A?;S0^Mel|0IntlO;{%bDA{3vS)SsVW~whdn+{bh-N3<}7GVkM(^l_VdFV zn^#zkFYJd+sks43jpcR;&!@LmE7gTm=qIHHV*E^ z{KLFN-l8eWv)>rWWai!yvyJWC#iI1?$5y8C7l5+%S3|PI9eP%1xv2UJ5t6_X z;mVUjvhdJ;=@0tMQHfjo=5Aq49c`I#|PX0U84|WlQ!p^jm*<(6pjx~+@M1n z&Y{akC`eRM{*e~j7%mBzb0qBKEocSV7{E`|-ka4e;4kLY;w{>8EXNLgwROAhbji=H z$T9|fL9UtQ~{$ z-b7!ooE? z?Cs9_%+Y6j!Ys!%Dw#?AhnMZ<3V#;_NQNJQS;aZ_T#ZEM)q;^*=rr2~z^d7fsY-vY zWRKa$^fYca4t4Tgv?$JTK|fDpzVnyDlz3>Z!HL(W2F`sST?Ubg;tj*u4_*nCmVElo zboN$yZ`1k+Gc;JG&dGdEgl4WK78D>mjzurfw%vW8_j8nrofPBs0zXaqNOoml)Lq)#? z=59JyS7KcXQCl|~oq0*wLPq-uIz0*U=cpGP6;M5JQG4yo0b-v3GRTMNBg+Eb-29LJ zZE1aFq77%%q|}<$S^cK8b1(SYC{Z#wY8u<5y4mzVxl}L?G{-=b(sM25dYT4;3k!lCBfws z0daz!e3fpT)1GF5lwjm4bZkR0p})|Z7G+^$E5tiYElKvjWn3WIsk`!NF5>k50FZZE z^2f!MgMYX zJ=95?BUWpAAJ|mxo6ro@Ulv3*ZSDC<4|Z?Jvi!Hd_O8$I4Anr&1=rAeRnF%lQ7>9a z&e8%{+aZ?m;M>Qz_3%wn*b<*SoIyVufSY-^m^INbnXdg5R#2GzowryN)n}*OCWshW z=ND)^R6ovFZ59Um9pMe*D(tp!OiyY7y@q>*CVma zzsc&D71VmT^~oaT_*6r_Dshqyy+jhLM6#9fR3UP*GA1`}NFbp$(3s~^3$@qB-4t^9 z9@x|TA*9En_l;d_;!^of3RyBh^TtKTQ%OK*;HxmrDQHSyXn_!u==_lS$CTh&#@K19 ziT`d;-GiVUf9?M|9%s7Jr^wI1p~^v*I341E1=GMYdWn@VJVxwpfq|P~A^gFNd|w)b z1^CacUBXeQJ{cpF2Vi#|!Y=DJTb-02l%rgg_>B(zQ_icWx6bWCIM;Y*KMa=x^{D13eu=QtDB2me?Lua2iT)Qh#FiiWJ$U%SE{T33UEzC*e7_l=y+wu z&4>6MreD3%JDW3%h)%+3-X<0#Qw4WF&owcS4Ztyz^$P>GeTC4+mcBhqFOa?LCeCuo zCo%{}>9?~1G8Ta)Z8`ekb}6#8vH!MlrT7bA3eHQ#x%yusS!*TnY$SO|T!5rX7=ryO zV`O6*%(T!P5*WD0lBP(?+UO-^pUFujI9~+Cl8~{dKN8wTC^Da}*g?qg+;(-0Q(c+- zuhrXer=v`nkg6QV8W$$4#NzGnuP)rS5&J!)?PfI6;BG!PYOSvA;qYN%AMonVI(^Jz zS8z`ipn{ovY}Fsd^hM|nsi{tR-TZ<_Kkg2fwSMMIu((BhzzV&`uNaxS_WW!O&D6of zWjgfs9IGb8Y^ECHW*Y;mpM%kmlbHNGP@m>V`xSAc*OxckwN+kbRmnhbH_jg9nG)|kQvN+mT=DyzVP1AyT(z&6CTQRXLJ zz^@yn9>Zwiz!Tm^E@~fabq?sEf%Q zVN)E9-pj-Wc=q`3)!eh=l!9C5dLx`WqWDIh{xu7=Za0B<0C5%M`bIP7j#6jP3nJd_ zPv?Of+(9pd8_X#8!3${h2kIBcwN%1nXa60*hW1)rKg)bJ>}e`i@3_*QM)3To z$0@W{+d$~Wwf--7Virw^4<<%y4ElJ0on_|$%C#G&wVRWe`5aDX@csEmmA)E1PRt3C zSr4+15mLyEZf>Kru>3=8qKOmLstfGQ&5uSgb|D~T$qB@dy~ZNq{Src4&gZGuNklfn zIMc84n6*hmJlwxE03nTAg6~e8fGW>F3)k@sBznsFfQTtCeOe|%fDZo2ILtyv(82X= zTQ=1P1l;~8hUoy=t{}itlT|bRFKyTB>yx38Ph*?q^x70z8zga^C4ucraIRO~cMZl4 z1EZmBd{Ic8t%I>YAc_U;8jYQOF6PweErtqavOTV%qPv`^43~Y6k+!KCJ+&?=ucf5_7 zTdP+D=OZzpCK8WCez;D~C%}+firs1J*w2_R+FFM87qrFcRjU1Kg@Vu7_B=%A#QDcqhZ+^Jc@tpc$$+flS?~9@v03ocsliM{=&=l>F1HObCDzPfi?;9?} zANJcrqI|T*-u{UqowS(Jd4m=6c1Qz!+d-(-L>ciN>N5drcKG*sK^%_6ILCE4Uu+4{ zjMA<~@a*W%3vh(ZRQ(=d_IhXx_Ryo}-6h%)YBGZND6+))yI=7STfHgDrPj)16ZSxq z1jM4{V%@lpI@F0?)Kcd+u=neVT9+xX&F1m8Ilrj?`p2!=Tj)Tu#~32a{=!(O*i5AR zMa?lR_sJets7*F?0?Grm0N+{g3#^xF5ch1RTd5NP{A&6b+r%RncJ5^`g5MftQ`cqQ zy;h{MkN7lXOZ+hW+8Y1&#X~S6*)0jch>UQ8i<8bS7R0PUWcQ+;G zfwu?tlOks;V|ZB&H(*|+y@GGLSiJbNL!qW@jxiNzSg%6xAId3^aWpK+jlBX_{;W@b zch|G2-G?{SDrY38$T_V3s|WRT?+zK|w)RJak|_GsZ31W~Z#XA!u3~0$xNH#lTG6*D z`&+?1(i>#NUUF97Mi9OW6J5f;L|)AIAr9x&W0{IRXn zWGDh^3PSFedaP=@qd+&gXCoPlbK43hZ^J&GhZ#~s9u39jQe=^HiKsE@coVZE0(^Wi z_KDgoZ%??6%z75R`$VigMU#!zwncbx_UyR}f>MzUnJc>HRc7hG@+%a_y!OJs^ddb1 z1y!ENF#sYQsF2QvNB^?SULp2JUmbvt4aO%0HOsRS`4&M7D544%vT*>Y*CERF4N(l< zeZdk_G{|fJ*Tcy)kWme?Q{rZ*@FY48v7BJ9(u1oH zjceq_su=j|Hr6_q;Ho<+dq?ZIO<)zxBA8BFqrqdNB9>q+=;f3FJlermlFH~VZ{Nrk z>i_yz?XUb}MdAuzPq8L0w=adv9#lID4)INUct}LX4?<&mNK4iW0U$l1s zchPxP6U>pL)92`Aw&KuJ{von%#}B3O(b4C@6qIBwo;3L&B5|vJlQPBabx&@mK@=QoX(4=T*V!zhQ^E z(_ZX>AU>IAr-8Cg?ItJ(WL60 zO4Mt8Z-r2C=x%KH#<@+fq`a9-A6?pK%tv`-YAYo)R0?(Z$}%G*t2Sbf_o+>+eZqIf z#$5(VRrS@40uG~~GHeghd9TjGE#ngddgpU%LxPOGKfGTcvn7_TCU4_km8Eg*w2pq4 z*|iC5|3FbveBwoVS!1R%bM;{nf%nt952w%qqFMu?-FXm7!HI#*i|G6|Il<8|c{5t? zEyCKdveWCh)<^((j|0yG2%Pmk#2MaH?vR38pI?{vFq>jP#t+j=N` z^5UKv>3eSYT{0|*&8;NfQazHKX3LoURa-3YQwuqOJeJ|MMz;pyd^=qCQ+C$PD2MjT z)(~X<=>$e6riHp^@`O0?uhL6hOY9SQnJ>HpR%9km@LTs?*Xp zZ@*p#J$m5ruhNA{7d&}V+i=eImYTVGPU(H|@NQ8~-?@2H`vdzERKdqCr7Xpox`ZNf z)pjt7VeddnxXz7Urf)LCQ*}Zqc3A;8Fa3(W$N&w2L9S!qQUkbZ%^4`K`ZeCbCGC31 zE@Pg>?A*me_emzY$_$2w%XHka9I;)g%WQdxi%BoGM}6}7qGfh@ZVMYvi(5BJ@<>s8 z`nM(Dp`GkostBp-{iAr7Guf3HB~-R#&!WB2fvLj7eJ{%fo14xp`G#6<>cq{bTJeLa zD)%xDLt7c&Gj9IDft?nd7O^+VFnl!;F%{@_Ny^X6jMID3RR>1WlDwHaESwRkdo#W; z_+D_^VL9PwoNvQsa+fdUswlG{a6HV4!|=250@a^vtCYD7$tVZGs3-B!=u7o)hw{5= zg;%lt6nI&CiTTD+j$KGbEul_5&tt+`WhP=6>(~^>ayuseo%2P&?CG}*PODnS05BXF zXBXBuzr!<{^gU+kax>Qg#}!~+$-GZ19Ad$U$U3I`7M*dg>h9^@`qc;JI6B}Y3Us$p zlr`G3(r6Wp92eI_uIAqzwaAqvt8sLELqScin(bpMh0ldAkzt_{3v)hQd}8=pEHHTP z=2I6%{kVLncx)C;xV{EVidpN+1FhT}MdJFaN#L6Vs+$d?$L`6FNM}D)1rrZLqp;ny zrN|^Ov2|9t*1cY*=%jN3^Z2WDu^4rlcXx*SU%krs8+XumT4`B{wR$uzl2JD@H3Yl# zSkGkY?6MD?7qumfB%QeNXvts0dTHbv;!?i`0*G z^H+c76gy>TgZfv=T9*;({f0pTaS}YuCE;EJDqku;q*3jp^;-9uSKkZIJGWkmQ;nJ0 zsrbgjKa8FYvJ;*bVCs&eoGbtEzh5p}ZH=5yMS%JnVql!GJ<D{ix@zWx5I>8 zd?o1ykJtV0{yXDJJIs-u%U8-rT~08OjTaUQWt)xX;pp9ZS2QF|D}G(kyIp+O9{ zg9T!Or2u+Fqmo?5j=ej@Wh4}i%xDyb)`C=5+xM%nap66yR&D~@7s%+@-RI2dYQ*FV z-+Xiwyl80N7}!7-EPUx#bJeApZEXlI4$@8_3S>i-QQI-gLT=)W-di7BezyM$Wp~&v zSAuOAy^UdRy2Wb(E?F0D;&SVfjlqIl?*vqieq`eWC&V=@Uc;k(v1uphj2ErCADs3h zj=&qAZ=6#Y_#rTh!*y8n_=SIA@hEjHSH6eLcj|Zlj*zNpIh2YP8ibXHTaKg3*EDOr z`?cO~Vc5W9P?N~5sYLc{W9eQL17~U@~UAsY>qkd(l!JJ>L;Y!G-R>T6j*M_>6j>lVni6REk;eKARqp zizGlUq7Gi3*JyX*U_e&8j2cLf5pKsX?spGb%#f?a@EL*oji%_qwrux2Q*-zlJ1BVn zh1QN>XPC6H`yuD|doSAHydg-nuq7h+ zg5w?eW~L3*#YYOWzH{|VP8C1*ssbmgkWJ!fne;GXheFID>Q{KU&*{Gi46EK2mLO_d z1D%6+G2Ga(V%fl7*ue`kY14x^PDYJ4ZddNv%qbB=nXo>(-`Wfa;b?zs0uvZPs@0Us zE_j#2EHM&$P91n?;wZ#uC}iL=NV3rQ3KZQK?7@GbVf+^w%D}j$F2kIlg8smR;?X&1J_AEM` zF3xS70Z?Nt@_;k1cuYOJ>tdWvK45hw(B1s0KV=Op=%X_QRwmPH`Gh+juD4}4L2B@% zc`fdT%!3apxy(pFu?Mh^7Fc%#2a?yB#ax5&n0kT~qf+2L!5(^tvS0?&SkLbtPX`DXSJo{8 z8I1Ynbtgm)dTIec)K{@@hEAXpG5f!ifWt*YE` zQpY_}>bMaMN412?-sLWXHB3()l5(uEj<$#|BHGCdvu)hRbVLa>eD{=rw8xBs;&WMf z3D$asSMl(O++Jnk$^O5qJg~vc!uE!ykPCRc^ZRDUb3)RdNt>{fVgIT+*HifMpnw!x zZiS7NL;e9yiLG4Dm|X-=T0Zf}R5y2KQG5kL82UBLk{~ihRV_E3 z1wWZ(%)bEB*nd07aulXfKXz-cwZTO%=C_*26?zR$(_p3u=b9wk!DPHjPpw@p)y&P2eXS0=^G6tn zuQf35#i{1wdYNBgCLBLK*mCO=N1PJ`VI#m`3({eq8D$r13gh6cw0&b0GZ>tVi`v9` z3@m|x0fz1Q75=!iQCs(3GT@g3JJ}}B#~uY?bGFUp2C@&sk+Wox7W-~(#>QJuaD>aJ z{gZH;1jk-iwi@`;$_wnZ;*dizj+SGfsd#w>H@DhIXNYE-bmnY{7K8x}RrMg+mjLGG zB;A}Mv2+-F{`^D)=EY!S%SBHaH(hH?Gj^#&yv2m&ST*#w1ET>Q7}ZcNZawDaQ6u!5 z1%O~Nwy#QwyDj_Zf4M|BXv)GHb#SpVAlwR#Z;%MRHw7WBv&&Q$43q6@w3Oy37TxTy zG~L$(yT1%K305LdC=5KH*GyQhgs4xp8xUC!`vPQr1>4&@tdU`f_0ju82&~te1#y<= zUR3$m9XbS%`r^(D}%B~Om9l(c^SA|KwiX=st%z@Z^; zs%Q37k8KP+*(d)UUh2a@QVUUXJb+9sXfEta0 zNru8m&A=S*KZ_~-9&4iILwigIS1tV#MhcS->>;iuonOaz?XQh0R)XA|JdfzadcZ|S z%Y>6KmDj>qRwAIndb!6E0d8%S6{z2X#v#R9NdY7^5A>dGh;CfKzR4LB0N+j81CB?6 zE6W$s4XC(9XMxwq=fHOen{s}DYF|{T`}c@>$*cb^^4>#j%a8W{jHSs7D}LY_^CiI} zAxJLuu5WwU#h%d;mokvRSz`80*k7FPod3;~NKFM({Fx&iY&q)+x@dp~aS-5!_c)g- zIgLexLs|856FI&}Fx(a}4&M6L*!OD)7BV;?g_+_AcjU%oK4l{9BvA8M%z!06Zu`+u z_p>r>l^i9i$3Ofu>K3&0k>%md9>G*xlFwyx;Hr&Z!rW<*K6F(P-dB3!;}z{bjw<#8 zS?LGzwL;^U^%_(M_>%}d z{}~VE#G%HZf>%fiG0$$vV_a`=^my*>nm1Ih0F;k@m2aNfCJ_FT=weT{24eJNCVsDd zn#!dY-c#c8aHVc|7hp$yi5$J%VQ8nAe5}1+>EzF-Hq^;NE=`3t&sW1n_EL-=aOI2O z$>cmpzaSb`Bwe0M0lM<|5EFKk!?Jb1%!F^u5y$pd9|S;lqAaZ?q9iVffx5VI9&K85 z{hW8&;%8>FKeTu8t!)=MDon{xF~PH9Bi7Wz1Di}bT{w$Xbx^{`7*i55KNE|1QG#d- zq#Jfbok`^6Z6ttozS8y9XqB64-va{rG zlamcaM$~_xm(_5;b*l-KS59Xz;w7*rx0{du9BIDB7W>}#B}|S?LzdAbaOoCa6o41; z>W|Os41c8a*zNhMOjeD`HhDlvNx5~jKQW;`=G(nEgp;Kk*Nv% zO!xlmSbEBZ|B?#6qF9sFa%2^p;0^cTX>?_v{DEvN?gc{2G*9W6F7|E79liokQXi`>nFE4+#RK|6VmG-5zFsPL!svLP z08b_R-rMvub`y*&=WWPglm$}jR1;XsRI32;m7OZi5gYUJedYHdT!0ouW4jr>E)Vru zKzF*7P#Fzm#Bm!yrAb}FIu+`*sSV-s3Kk#i@1#{ zEWjB~yO?kEM&v#nrh_NcIH_Vv#lPrNiYCv_U(flxttWf|VB;Tnaq1mn3a7!l4gWVONtyo(opva3H)M$Fn#lg2> zgb@24GW+>_HQ`xQk7SuYnfdFy+E^T)h=*BX$lhY<8s40E1OJB|*tyb^HOKPrsI8wX zT=4?FnC+_`_jw@wwTg4FJv5!xM3Nwy>Ge>;7Z9-mhyw^Ix5<;w>FaHJmLG=CVbSQi zsr4Z~f>S^JV({cT6x=@iPXA4#(;JFo5Z_|&4^Vm#uX1c>(o~fvZGs5Tkj^W`=n(!p zLUYw7#qESu?n@%W7rcdgA@NqJIqAnkvC{{K`n>*XFc}}-RTI7hsw*wB#_GDg{bYOUEd5XkIhzToVh`-V0HO=L zchc-#A#=%OCh?x09jGEyWZRQ|4yX()>e^nWx$CYeld;E*2UHT7t{UBS!~0;tN;Nu5 zl68Ha@R;)6<8#m%9evfDOM3o9_p%C1<&bX*Fg&$U>R){Y9PVYQgL38hDVuMbHtkBN zu1EVjBE35@@rIfDvUgahHc_&CU4imq{6ok?{0&Djge1H5?==FUzu#BCp)fF}IR>#x zcRZ9}eV$FJCpTvhbr*5Qx%@t&Ww9eaf*%jOJ2i01%Pma=K?D`Ln^AY8nT|dU?Ix6| zoZcjysD3ks(S+>5CsXj&m_UV>5sV!=Zb5&hw*dSEL^L#*3IA2g#g*3*G3U%N2bmIJG+&z+?QC9pK2pZ zzlUQx@jY8|XNZwTr+-0pm)8xHw^j-OAe^s(?QEZv^2kkmm9ie9KH~=r1Hj%+kR3iv z^Afp=nw@Uminbm$SxmcGpg>E^w?E4EMelh@#0DYAMRkh0}&l(C-2XyO(FJAr+_#lNJWgq zisFDdqxakO_n_1=6Q*YZil}xJ?hG;CBfVXtUg^3n@x?b$J zzfnu}eWv2Nx8+e*V)~<~o1W@NN2&~w<7+cr{56rZUZemmxvvyxHuL*6@6pbYj!QPG z!l;Tn2TyF-pnJERJ;LMIF3P<*G8Ww9p6cx+LPs=^nW5^ECFF(QS?_ff5|Psn2r+=Dnz=#bMj{G;vDy3{r+&E3*nDqv zA5=W3C*yN@S45O;f;wDc7CX<<~0I;ult_frG4IZPt^HN zd{~k8*ncRVE6E7fDG?-=i<-#5oBN`vmgyVqx`)#z<8`q&i46FPz+ZE}il8JqfVpIj zMBXY1b4_ZlSV#lm{CfYKneEJ{%2bD@Hb+O0BULB5d9ZcE-(bH%Vrg#U7-Uv&9m}Vg zdRZ_0rHdhGiKM)_q2`~YGdqrr0GN(t$5nYc4U|eVQY_U%ZB|M+_fnPF({W5upvJ*voiKqUtW`pEM_@>qBmt9_`w zA9pHdD=#v*C_f06gD5a$T+>f_vOGGxQO?@>DJWbujzRwOk)nh@RK0Rzh`9k zf8L;?B(fkm^#=>Pl^~(E#m^+%V(If1J0E-vZ7C-9z{DHCT#7Y=8pGkj^#t0Dd0x;D z6e6#UocTeij%Rx^DuSuT+5)Bqf0q|oMN;dcPP5;tHx#9#Ao!Oc+^0P0&5k24sJ6~m z!X_V+sbTvbN)7xiolHVz*6N1^sIue8^;esS{$z~=pE!=7&|{;qTQ&^-tDZ_5(^{lO zP@jtzZ*f1hl5%SvkjN0@uIc)rJ&g(M@E|HX?0euCUsaO^WrHjtaG^lYG?c-eY%-&P zuPEV!F`<2Yd@F6?gslQU3q+uczQ+07czPX)1tFMkn@Yca{iC@BQ01vzs;;7E#foDT zFsbn`%a|1YUBl=eIZt9$By}ocf)-49e?PI)Liz$J-o(*OK9W`Fegfqet5rl7EJEv2 z9DT483=cUo>2^TeBUp@Fcvm|GHJX~%*ekpA=3<;Bu|`fvn~ixdMobwcKr zXyFb3N=RxLwQJG;E4?+`JY|uzQ_a*T2zz-kQ67Dka9}Xmy*Y|<*G6S1LC(CqoiFIV zezN6NNbG%pNu%XTAJGrwh{v|4YeA2z%}whldt*~j*=kY7t{P2jpQ~#r9sEBYjlRi> zi5Kruf~`e-c_#aS5k9sol53VXDr8&%Wqp1>f%glI_brd+#eX1C8DwF^R16DEVn|mb z5A&VM$uCbq3T6{uijpYaS|jj=J*;M!9da_1)>JC96;%UOW_e(QA#q9j$zuejp2*9a zyRHz=TqWfZm)PNkYbB0(H$DWZ!nzp&5Idx(_osiVAtMb{svu!@0E)x&`$u|`Z&F~d zJ`Ea@6>7kpl^>4^F5;NE^u8qFu0q@T9P_t-goufj83?8x+8it@aLg&_6mWZ(}M;mEfBTuM}Rk{^jij2Hy+ zbZqCxmI03pF8<(?*CYV`69hP!499OhvxabJtpG9*s}WuJn+MN`^OrXYOtawQN)(C( zI3Is`OXADJO#E%sYua(WR2=Z8Q4EDS4Re$EpYgYTbTV!qXl21po=8>#ral+*zkZ0R z)|9MbO5m4n-u)|Y?gc4`tz>X^vgg$IndWYgqH#MYekb>jT_7u2Cj~%SY$4-?dwRl~-&p6`jGbnBW zQ)W*VQ^AX+9dVD{KfLGI!whg7tWpdL!QRe*DDLrMG-r1E`WzWE)+X9ghlz zT_%q+^PL{BTT!>}`>N6GD|RGX6$#iP5(XSG=`oSQ)|Jy--IxG>;L-&1NBmNLuob$x z@KR*WRU3tn9eLhm1>tmdKngs{o;OYihS@zad8sUJ_nGW-^vE|_FB0bsXR+5l5u`mY z(5I7;b=q8HHQXdRXA#=%gJR@Hu&LCYdfqLl&>su3D$R6_FI=;PXZ-RoV|iPUk5c*_rV0GAvMu^>*V zW!l6#(cw|@kOK7VZ=&ylVbz>-xvOCZ5CxGLNdAt57}h({7Yn(%@D%v9 ztkAnl0KXb5j}<&_f3X=w7@AW?FQ2`hNE)Yvy}Z5tAE;kHRBl-?S728Dz@}he6xe^> z(Gv=xRVu;*ep7Dp9qi>?{JT8fOQ6OmFW-+%L4R;dsX_PWu~vJKXXnY3+{+IbtwzeE z<{k~&!C3zE$^dulNC~^I0M+rt2T+@`XKDg>emE6|Jl!GYKvR1F{_{}XZ*uAxKk2sn zA7G+_c04@&%TS7H!J7 zBn`^)!gw3HNpHkXgeICcP;gCTgk{{^{f24K{an~NHUHlm%#gs#I2AUV@|m}AGtU(H zY&oV}^9?g1QZt7PR<8Srq+e3K0AK_JBX(aJt-(mW!<)~Bt`8MJ!V9pt1RCZw{mHF^ zO=>Rs43xWSo1*G83YKs0*%1GolY!0{qmXp3^KjJ_uZAKq)-V0K8Z+i?uL&t5?)4o< z=C?*NW(xRwjrQoV1un%9T_YYD0f|o|w?LI&|2=t#G)K2n1fKOPhFsPbb(&W`B2T9% zkN?@~fb+$c`$5&`?Ug_~II_HB+eN0hJC)(x?RCMVzel)$mP!Xgs6G1H8naEi_k!V2 z;{+Thi-rZezM$r@Xwfx!T)Y)#jpm&FwS8mA2}0>(&{Ux)a$9@{)dh%8(J>2Po2z4> zrS!wCtlRufO1wSNJX17`q*%BDYg-YSUWAI{5VH4*VCu8zN>>5)xEeryxQBj_v!kOb z_2qjBOB+1L9k)LH(g>`=@DZ|{vH^h&P!n)<%BmVm~)3e>YjfEJB8Lbw9bS^tRSvqE_H!8 z12T#xa!_ydm@n&bW`P_lxNH*)32XOtb~fMSXaLTDymco1zJ~Oz`Ww#9DZ-LO6HXCNE~bEN#a z>cduR4{BBb4u@L#uNiXsXebc3WvirwS+VlvqO7D5-W`bT3LMlhIp7>yJz{?08OVvv zp$(43Eqtxi-PrOIJhW3WG~mlGAJ{zE21qp?bU6bCL_1h|Nyf_agYBfkG3Xj4ac(-Q zc&j*3FblEe(Tx|!QW6O@8Jtwvk=7NILD(fKZ2bNVWr3w1JNP>z=VNexj34joj(yP> zW4-ekU@enI+u@R?k3btiS&-6~D$GG}6Z;cpG|2nGiWVM`TBqGvAhe#yX9YEm)?+$C zlyMxBi?skQr_?1-h>}Fd4w`G(5Z23F_Bysc*Is$U3n6q2^*e{iaTuO7O6=lfwTLDj z&~;a*twKM%#*6SCtzkz3H#@41agL8PAAHsG0*1VZL|^x78X|WmnVp(4gs>wq6OASj zYWf$TfJ0uZ&QR~sqe7yNv^PkF5thRAxd&7JJoQ+|RZ=C)n-GQHX5GB1nbY(8LBBbc zSQG>@@Na8k+LD5j>}2lN52S7el&ED_7l$^?FNYH*DY>bM_?lR7RZPHIGN84f`dd!@ z-keMIA`rcU+AYM02cV>Ke@v4;bEFS{p*ee2CHNjYx@767oP+S8;IN$-Vhv_TFj0yMkCEeh^enFRCbu3kr})cyPoD1LT>C`vYjwJ_bisS^ApI7?o8g}* zr~~#DdsR(T=DDdo7ET}WT=?LaM4VEC?DK4U*lkgmi6}6_izt_lGIXumpO*8SN_I!i z7fS!tSchT5z*r7KMrHG;!aS#+QI$-KsJ)3<&*t1Vwgh^DESC~z^U3&gP(#cOk{7~46<^0Da^lj44Xmwg3V?W-18zgaa zA_qFT14Ri1{R)-YV$B$J0z>FT;O8)!8-XdtqJw41gqPbdJzAH(lU3gOz1mVoRG#w+ zte_Mfk8qP3J(kwN)2dHo)-fGu4Bn>~$fg_}Wzo#_k z1x#HZi_j1=5#o{+aAcww(~C(%IGD`ZIh78PfFSREklJcW!KIaehIfIf$&(! zm&Pc~37sUOya)YW-WRX2!ru|bPpIXs3@(M4YUi7VrOizvKf|eYA;k0V-(W&f;GmSa zNowXEy9HZJZiJ2$;g43NKf2oq^(TLKAB3WPrF96-y5y{)gcYk$>-{%T=v1mZ4VHm@ z*&^{a?ZC$VCj@@nE%mN?`wRDpXofb+(q91pP~8m6DgmVva6$oq?9vaWrrv%xa#kQK z1JSMufSeL>Vjam@U*81$l-|?NZv?g*Jexi*JA4?It%(7*6v(EXe%H>$CG!uQouES9 z&SM-Pbb^`>o#x-YI;d?c&nW`yQbdj5C@BI)XbAXlV=UQBpvCiE1vs>#^m8#ab$PMx zN@89PO5OMv{ppgNTEM#hwJHtrf)1>|xH7}IMJhbVolJT(rqRMFwFv=*zIfGX zmbW(`7fUz@JZC1+(Hj*m!F7a2UAUx7{wUXDzp)M=JiHSB^HXW{a`$^C!=t0DM;cJA z`p)W)_crUY_~0w_&2{}7C~k);KfdxZf36GxS(z(Kv`>hiW}|7FaMg%bMCY69=I6qNFV*xk8@_!>!OOz z&QJ<1+P7avF`@5rSvzRehuC>l_Dm4S3K-k(i=rgtuMYcYesBuCo;%;2XVI+zFfF3;m_dgq;NnF(jsc$uNF04 z*2k^U^d_2U@!g6zRTs;lNn8(;hmUmmsq4x(W5?HGoz9^6dk~NSl?Bjm`5traFfDGB zG>V~S@kpveb@g_2(OSGuly)$MfWKfs|4G8kb;e{PBUlfb-=q7QA(XDn`rOe=HgZXE zwNkdg1{;4#V8{3MibZN}Eu3~pjbwf*|DUjN{%dO7)M12fjKc{y&WLyt=O)I4;KS@b zmK+0db?QauQl)mF5nFuZ`iqAX$nKrdMsop)W40NUz$bDuI_$#9GpOQYU;>I1&hwPa zg?*P4FpG7k1;wr-U2Or2kwfPwr#c#9@+=6Xm@m38?RFO3F@(XOOc_B1!hg9r;rUwiBNK2G#IthjmV}5>1k{iAs4} zhX^mzl*Rp^IC=qGgp|0|ALw{*+LcF`=Y}t7z#j zs!8tlGbGJ3LfzuS0cs3VDqLYRe3Ir0CmNz`I;9OD*n@MmZ65(^k3m^GvY}wbD3O-2 zJk1K?;P%{A$W>-OvueQ|a;Zo9`TcMevgObqY=4p9{*zQH?-(hc-Mzm8p|7TXQbC5D zeP$IL58adT2x_-94>V%}a8w|v0dMm5;T%H{O6zzGQUk#WZ8FuluGy&mF5Ee!{|F>j zUjo{uB`rSpUb(h5+htJu(cOD9J}78wbUXakFMC@IJl9RfYNp5!vEl@uP)xc8EJSIS z9hv9Z+qZ~_Ff`$=4b#Vy2F&gZiY)=mZr)RqjpL|9Q$!($(;edvXnvY*Ie;iVS@lMd zyGyaP)KsxRF{4&Z#@w|Y+VY^3CO3B!O8e?U->;SnE3@XKD>d%=cm%$^b+EwDEBR(U z+hzM+w|H@~sj+W9L{V3cU=Yf(iBZ_Y zad2Ug@{Cml{6Ytg4Da+0Zz}9u^Rk=%vQ3uXx+9Pv3qKSKpw@h`y6}u`NGDdFTNx%K z2#yzk&)9~j8v;b&f#*vesDk2TqDkP3Ho2> z$UMFh{F%gK!=<7A(i>NAKj56qyYRxCkI1JCIUr|sck}?xHUt3-U-vn~7gV$|b}tE+ znzHWsE0ybDJL+`_#b`47c*}hNAKHofh!Wl~Kp$Hd8F&x=bGEeZ2iY6gN6$7_I4 zpvahLODg!BUBAf^_6f%YUrM|iSZJA!Yqf0|(nb*2i4-n+FTI^tt)rP)#<0YA+RfjzARBY?63%GLPX zG=al@9j@A2u0?c`@iA@f1LOO=n}8 zJTtry#8Z;G4|c-gNC@XD!bi zr;=#(I=^vgsKSxO%=@g6aK2I%QN`@Z0u-*NqbZ;=M&y32Qp%&C=|*!gBpLx)@4nKk z^x|r{_a3jbOiH3ev02mr6B#r!uF;w;6J1e+GC-o+nTvYXh~5Z*T|?QWr7Ct-YsP(& zPj=bJ6Y=+z#3}LW<9?v%H!&hq!OF-%8KX64Ti-N0h)$amoyk@2x7{7$pWVG!zCxYN z0rN0gNo-wqFV1OXOfm8&Jr{u8u8EBz^}fwRDX^=2Ex&cxRsN8n#b)Yp@KGNt52bxJ zR3!+@iU(!qj$pRFxP$z4U-Vz$OT7=#yN9kPA#}S$(rW=Po6joXj8(0%GF}1zc1_n8 z5}GzlDG^GplNr(@SV^>LcpRYu_ML5_b%%;@E%5x&Z3S|FBFhSgj|6Fz_-Z=hJh zBgZwn+e^DRHeZfGP}Wm8$`cq%MrGFky5Ts+q*n$QpY4c`8D+n7C;kdRCvS?H&r*y@ zq_kND(yHdL7Pt8Msxg@zP!0~qH~}XA+5s@ZKu3Kb&{`yI!Wa0}|MMjuAXWA8x^JYj zx0=7db8XzvZH6&h174hX?0S|dvw3LCUK|^FF4ws*=&3vv42*sI+T!COs~Aay$EgYH z9nv?o-d>NmR^ow@jbeT=4MYu;{Vy)WxpyD`SzaPsm$KWG+ZaFRM0s1IBJlj)J{UkU zxk=vE^Jg&VY8)&%RTDV;yI3&j8xFG6ejo@v|d<w<}N2_s6FQhncx5UkEwI@B{V^x79S$Tui`vd zGGz)h7AC%YFGRI)m1b}<#t8`KgizYWoD2?7r6l{RSy`?#hb6Ipxy)oY83c*FHIh35w7HfEmZ?YH zW4Ky42&zFf>TUsIMwD_9(Y6}p3cWrdVjkXaImJ)U#L!sfmE0M6%$XMaIztF6wD1p`7}D613#ewdTIEA3I|o*B5mVFrdL6 zu>wc;AErI&?b^^n>6wdlzY@rIQn{f(X`dUB#M2hrgLWWP_)WztMz{@b zPNsS6-1X?GB$Um*=H}qy7=$AFhbShVye!d%fzta5ZJapvXxr_RH5 zZ)Q12h7Lc5gj0K(K1mQXF)zN=gOg*Az1i-Ij@#|AZ_U2y8x|nRU~Ka#0jl?jyWNuM zBguGIAZ*&46mmjC_4^er7l%M*CE)UsYw$_;UpKXN(Ke|2^62KB=2LL820MSgd#ZWA z`AulvmJ!dqP8p2b2sZKz!&LFjv&&VoJoYfW*!59;5hzw!r(}G**Rg-t#;$+Aq3lHV zi-YER({dQ0W^7-!)x^KCk5_s;vz~NO^$-XZoy2v&Jo}QZH13_%ZSvvc;-U0*oFR4# zC#K}445qW!lq|qX;fA+3^eV>D0AF@)_fT-vprTRcBnA)p$jHNj_fbt=5K;te>x0UtS}zv4taE4!i(68GTf;fES& zRz9uBnL`^A}PQ9P*!a&_9Y`zUMYQK#OzMTw6>7;C-`NIiZoE3h}If$zpo zJ?M&PgED?{PK0SZ`#@dy1l%g6HtJi8j&{pHiZ5@RBeIJb=9ul%_NrO5`%F@IaYpF;EV$4+`FrSTUU^SzotQG4l9)dkdZ3ZgW*$ z|2Sf1@wL2gg?eT&u&1=HL}bmN>&b^`r3n|Kk7y+lK*(c)4#~L+x=Fs>q;gYI_5WZ~ z&Soh_ut|HQdRrrr^{qxlz{$=SOi5}eCmNL9aeu&6d1$e0;rqco8O_ZVzeNEx1QpAI z+Si!X`@_12uM7ux&Au7zP0n9B0zky&r`7(72B=b26v&)xKQUooAUs5UMI#nEt0d0M zrE973IjPkZmUymm6GN%o`dwq?=YOw#7WP#5%oHdzMw*GD4;S2i7BDgDD~^SHl%i+4 zWq-WzV@1Nx;(i8=B<~9ENsfoo~HrpV!6DLusVNp%sm~vGToTNd;c0hY* z(1P~y&pF81&?Jb8zh zc)DJ4#u0Q>O5-dmvY-$zjrNJ{l;+gn&-DRe3P16kMeJ27u#hNLAuStP$a+YLZy#c} zkIvv$PqyfS1bK8w#<@YA9qRo@m{J(<{@q>mYPOH5OatG6Vnj=xL6z5qgcv)8(nFYK#ONL&wqTC zWlVTYbs;jx#AEf&PYa(I?md(&+N~)d&d&RHfJHyhw?U4~%X+s1fJW$yW!x}(^)H3Q zlIePnqK>ATzC6DY04KGgl%yZ*87O58NH%xe7cggc9s>o4KNOzTwfkoGYUlI3YyOxo z3OG^KeA&$z0KMcQ+skNq?;hyiv43wp;KR25_g#dQ#07-LmL zkLgVssZqn9gV(<()xvqmf!5yt02P%2+qP*!4Acn{l9aR?;mAGv2}QBE+0tV@%e*%E z2~x$@f!6KHEfb+2#XTxCiMy=};KuWESDL5B&^L9%$KQ@n@C?Jy8rS1XQo4&U*jr0M zD7PLoFfl;ITapQjwBly)-DaV(tCNgOILl%sjyS;l0$Z=f zySPW5HwTcfH4|}TmeRc&U(E${-tkcXd$!2FzD!+nKN_D-I3GELX8!Vb^qQ6803ltO zT(1qc$_r*5BOnPxm5NX@Y-$njT&4lK!<0`Di}%0g0Ep80_UGv3&VNKA;-3OiLR()< z`Z~Iam*TL~^G)T5aB|Pw`7rkRicW((hb1fnbp<0Pd>>w34SX{%LP9kxZpDk9h2UtZ zOqcyOBxD50T<(3R&_eFTO8POTL0_&-k)maEK#HJ#A5K@0mm}5z@e2}P!vU=aVwJKe zSvsjEGDwv=jtnS6Sw%JwIw z!Rln{%E|IpbbyU&IdGz?ZK2u^D}%&vSz0TR)E~kQl8k1{z270SeIKed$Qw1t|49-= zu`dYH@r{`o#-Ik!E}j1L^SM;-XpPf8`NSZNR0j!RBQ(8Q@45-Ds;~z!hh=<_Fmwh7 z^dU+l*g|FS-Jk`EO;n6+Mjw;vy-5=oE|qJ54+^;~S&{|Yv@9@)lOP&#YGSmXrVI4h zi*+2qXS14J=zVeHcpEurMBx_os_-2mbFFzfEKNTd@2r8VV-Y2pMbYc_409T|PgbUj z(73}>SvaTp+fNryKKw?h`$?3B@sF%f1@1XuN7_kcE8}RVp*9vxo7=!lK#{Z5W%I9z zfo+8dkcxKOT+aULCm`(8bZDWd>t^~-Qv)PNR`}($*Ziy5BQHQqmx6oSFa0PYGbO~& zlHor)a(Oy>W-bfQE%+yPC9ywRH9J>ou;eDtqgZL6^gKWRQ4j9I-D}|Ra?udB3`i0JV!Um@*C-|#+l9vS=J-gt7ZMb%lwQ4lPM`1G>R7p_-E_+u?r#f6{Ic+Odzg%Nre>Z0YjttIfGsJDe>1`$Q8w84<-U_NY@^?)D! zeS9U7+Grvp{uRtgg6nF~fRWY`2dLGLx2m4KO>8vFndMa(4&mIzzNM!96k2X|Cu%;ER1>VFfT{>R)! zFDOwY2_<(>_iHA%9m$FG(R;Pc#=qV#w-n3fc&L<&Wdg;NT|m$Ul}@#^sSfRQv>_O| zw4Z(5Cww_SHnLt2I<8{X)P9gHz2r zHIIlL_&fXP8-0`UC?Po0!I*0c0_IV*VlGhibC zJ5w$g3ihL#yRWKx_3qDeb_|kl2MdOYQ@9{A-t>U7ra7@W;fy-T#KDV}&36a2W98YDF|Za8$5W^+MEW#yjy?t-vFJ%r5&)`)DCf4XKhD>r zjKQ}QmBlYO;-xlf*~$E!jjO^=DED#T{5qL8O;n_IDcDwY$;rS2d(ruPiY}ljaMRmc zS$YjSW)JHxPAbP@6l4+F8d=sp-WFPc?)Wm7@u-MEdEm7c8Fe~>p+T`$R4TWhaZvkG z_j|48oQb`2l?$5-l<&UQO3GG>W)L`1xWg{nlC1Q%Dsh2dM+@_`&{cXhYuG@q975q1+8^pG1E@Z(&hNpV-blS!jCOe;F-6i zXSz`kZ{Z4@B@seyodHDaaY~J-wl#rGCTSzew^W}xNR5TpAJiyq}vYd#5^ zE!MP8H`%3qWWPpCb7&j&!q3&K^5TJ72E06YhqBY_imM(<46Vhj`BKV$yol6a`hmS5 zLV@!PJ>yAyfQe9`IXNb&CD&3zwdv=$&w-k}B4VnCaF@3SSp|*tk7g?Y#M~-2sc*ZJ z{VhX_8WWH@1)rp=s^buf06(=fu_edUpll)q868ECrICOp7TusxMifdfmjime$QI={ zGH8$1N2tHs;JU!I&GOi(|}TJ!2)4DD3baDybgUiae z&kGiAGf64-tYJy%W_x(vq(2EpWFw(Wyj8ABbAnPumd0{RaGpd6^?WBSCf1_9JpCot zWWW0Rc(Zdu%f#y#oQ%rj;AbE@*Epo)Fe!S(qtr z(crinRB9s5&kf1DfyhY4>qQfM{m#ZmVGSDf97#2bT4m~!AbR+6gI-dayK8|w^lQSx zAg|d$)N~}YfnjpgYth-*-dSYuFV`NV!8}%6W%yA}vz8)$_G@8}`_)CYBvXms?D-;E zWk;(F2}Ff={U&+9hyiSwe@C<=cWcT!SQVO<%}laRi2<2ACCdWz1^1M9hlHIj{R*{! zM+0NPqs`45`wXU1+O$+O-kEx&t_^k%4c|&NsyMYPQLb+l!t~!%uP?-7p0*%F)JV zPpxlPWPRRa-7?9Ehl+noR&L32mfts7OIYF{N>P$ENCrc2poicDMBj%qw!!ki>_|s2 zf>(-zu~g%pT)T25py4{le>5k6CTR(EpF=7VcC9d?Cs0A=^d|WD*z>k-jWJ3#0QToT z+Y#xK=EL4HegtS=lpF(9rve%@Jd~)TR&!8emMUe`w?wCmu>+N5mDs=EpPrS={ArNu zQ(N&e!2cM#X*nS+wjxV51`pjA3sq1{ecVH2@}BoJ69sBdK!1(TFM*F2l+Dfs9a$iG z)c+nb%b|*)nrFI1rhlMr?Fz@hT#%i}`&HBz@xTAVaf@}Y*2A-h^Ji)?K24YWg4{Dh ze&QlR7kh{+8py`ErbNSk^4&xM+sLp}jr-k;CiyF#= z$SA4LcM(jXFZHwp3T$u!HiYXDEGH-4@6JjfjRUP72#w=3w`Oxy z|HR3bb1UQ}v$R$3|0Ay{E9i>kVyJd#h_hMxbS@PMR?Aro$Zs^zLhA0pO)Q1LC5deR z;4nt<4`&$=^_8cku%vA5R>VnXHAS|ExA+wIQ?A^RrR|EGMVPubRwWa-h(T<3sbt|z zP;-8kN_e|P@aN`IO%y)BS43?qU)-5jegnw$HpIRW(6|Aa^lEXz2+2QSvslUw;(3+< z6AAjPx?IzD z=rUal53(LT8GNb!r`)#~_^r5MJ)=U<$_l+5rBH(@yO=9u?=5JK0J4=6Kernt{P`!1 z&at{mCAUN#D1f{58~9&SM+2a%()X?ljs2R_Rk<#O$rik-6{#p|<;GpwsN;!NOMdDV z*OV>{U2583%=%l(exd*4Z%QgNV%iof6!hN@O@RGjQwYB!6+!FITQCl1)P-D{-*|z} z5>X`=FCvtJW4`2RTiaHH+wf9JNc)_(>Nx*gV;LC;RV4C`tww8diV`$JkVzw;BbNbc z8Wz}t2N2VGT~cYwg3M7EHj~Wl0yc_FCAyuiF$p)hQtW4=SeIHcfH^%#+q-BqlpX!{ z8^lo7$GTvx-N9N`n3Mf#J_|vD<2C3MJ3j59R7~?&9JrCo=mWK-Ilzc*Nzi06_5vMn zePJY$b1`T)x^6aYvGbjS&@dVIP7S69mN!bTlO}MZ`VH%t2my$q7h%072VWAiUl;e? zFWChB5u$rcrC#%cl&9)LL#E#8ztNWT%cs8!YX^#7a!KVS_)*mflE|xyc}&QSEH!sR z$Vy%idJ-mM(rK_z98yq8B71x6?ZUF*d^G>|K(E-&V7r^vKxqUj9uzOaq1*@Lle&}( z+lIWc7)2l*EB!#MTIkbA{)wA-;10=mMNBsc*ww$AQ1!Cxe2%t^`DZM;4={nY)56}Q zuMdSm0R_qGT|urXk_iH@pr<>nE%_5Mh>44qc`+tNT3eaF<6m4c#eSCr%8tudZR_(ZwsAbK@NX90u=hkUjqq z=}O{b-%hrZx)N8D@@)byK6kDzXD{Mo=^Q1o(%z5p-$ke@8_>`N!Q|aGT}f>@l1)|y zxpaBxy_hLZcvc>=Y{2rs--BB&FNwMB3K6i5zwN2oc3tqh_M&^=;dd!Dv@B*~;p znKBSa(-B@NC48nU`Q(>0oph1E{33wWp$*CtOj&yWFcVQ344d^97kOO|v#=t3b#Iz)?aY2#ihr9{|2` zs0`uW=(ZCK`qFq89xyD69}u|Re)H=D#gRni08z?^%3$tewOy0jK{7-*@p#xb*D-=t z1yq%`27=?eA(HS}5W2VCjdXa^#~LWZjGtHF}v>9glDDq=6`sP>-H;(T5#v#*qB4=BNTj)On0xO5h)Mw4Zs4LCd_p^8 zKc1C;nBfQioNv&IG`sMIG}G~1$&sHSU|($!tm!y5QQQB5@FMhBOSGtIJHSG93tb}QdE{J)E zSWZZDF&XYyGPAZlhABNZd!|Me?__i@74$lMUPJBov=a~(UvvjXe7jiwM)KmHY!$m~ z_r}L;U=T8(+7UOMao{CkW;*)4)ES7L1mimlwF4$GzJ3zrnC6YQmHwtI0$tUy5b$uT zs-9XHA`gH@l~n&Ycmt?TnJ5^9+I9W)9(+NpbVTBZYg2zL(C$NlTwcgNa3eEB*_XB{ z4o^E=o?QW!_7rpTUZ_$V;+ zQT#h#Ms^g_yX^`2O9Fdd{1;gpI0Ha0K~PKHPt+VcrSWUT!T%5>SMK#?<7sv_tgX$@ot0>BA7o(P{*T`{qsoFt9k>=pzkn*+P$5Hx*YM*{AR+suEjY3CI+?V_d+ ze--*>RLD-e2Yp#Idz|fxT-GlP4WNEBa*-#YXA^Y`q2DjNU| zlDDhZNflPi(eX)p_8udoI#NgVToJD!LSb`el#7v8BeO=m^XR)IIHRz_zOeBNL!}fD z9Xdwjg^bDomz8O* zpC4Di{{+`U9SEfcZr4+u_Un$ZL<=h0*&q{R$pB39GnKbKK!ZZ!bSJ) zcKw{R@2PiNd0@91VaebUOo3 z&rK0i?Gh}}d5FppCxw;rriE{^5OibDZ=-oVpxG+e#+)ut-TESHNQi!+&{7RTrY4R- zWglOY@+6`X&HbM1BW_qWzt;rPYK2pg$t<2s&;kbZelUr+fgKdaqxD(r?%P`+-_0yc za+LVNE@hUs;v@CACYSo5b}Uw33?|5;Ky{ZOekq-zDQ(JR*b;>%^sOEl)Bi+G4xq9iq~>&YuHNuSVQxblA@SDl7hRs` zVsGcmA5$J=D`~7qa-y5VMP0!;j&k&bFl!Coyz3}^E(44^MlTh5ONxAck0EaU`pmYX zftGQcK9O$r3&e3A7KMhZtk_eFNZix`@-sS)g$M{i=DBCj*G_GtqcTe@Ev3c=3^fuA zvzBTf`M5qxp52lli(5Glba9$Fm&>vZb)|~akZyP`G(8nDv~55wR-|-Gsz7 zz*Rnu4ax2H7XU|?GU6RIpH61Txh-NN%@VJ<&_(YxnVb(pX?nQs<4)n|v$NBk@v}E)GN;>TxVjp+c+^-} zSQoIQRZL9hH+5A@aj>vxNwBa;!M_H$3i2DrJ-7*EAc36r1Dd?hP^r)SoG zd?-oIQ|n-Jm|v+b(1l~_?I6YRdp|pgaiu!5@P{3hBy&G9LoD;kSIhm)ijO|*5q8DK zYb~1eD-Al%lRp`dJExD@_fm;uTc9lzg+Fq=Y3ZX zf*-y1sV_E+-1f$5)WUJ!?ijyjH*u)`s=isV7aYhxCRIly_vE#S-X&-*CSs!s<{`Jn#{78nN@{rU>xE>@-IP*87V4OME?n{2EarreN z8|G~CT_g=2b2I!SRDL-)e^hMqm#NO$AnS=i|LxpX<1e;RV@>Iv%gBp1?{OC9R7k2k z-V2`c3T!MQ>xFQ$RDbVRw%^#cSH7kb7Fxy~%J(ZP`cl}e-})cZo=5J=H-29wd1dnF zyqVq>ZXg_H+Ru{bHX_Sr@(5(soA!|DQ#NfWY2G!dZx)kwc>bANPK} zi@g!iNzp0!>^76dug0U-t&|d1Q-U+vMBh!$DRVx4n|@!;hO^Vsylk$!AQWO5 z122(W7-qgdYi|u(Kib~?4Rbx=PSDMQbx?fdVdBG$rMi>0XZE#zNIlhVj+`wsSOznkN6+mFB!WzKf9MOyAlb0y4`?LM=pT7oLJNFO57vLM$D4zWgyIc(G79b+3K$i7hG z$0}#HR!$arC6ZhTl#`{LW_FhUapT3?C#9E9$n~Ag#_F-v-f}*59!R?VYE*z(;_zeIpi+x_0L|cq!7s^cu=_q)>Dy22OZab@Kh+W$1AATTuxO-7T zc}bo9nK^yH$kOTkc?dF}?GA0Ga?c2Ysqg_)*FoaQTBRLZZIJouu@}^kIAPk3GtSGl z_EaLghwOV8*8iR;eFHv9o=Go3Si zA3;<6_0ik9MO+8QzDtVq<^<*)1oBN99yP8xK~LH%QsJLdM>Zny)D?({589Z&GCnvC z)6%|NCI5IQ`}x-&Z5+(FK~3_{o`2$~%HJgsxyuvn*O=V%Zu*moEt$Zb(}(`eJv!ze zu_??$?nop*4=f6o@J{(^J5;y6jTa>Ao;^e*jeXbrp;OVT4$oBwapfQyyH%S^yBLyF zop{6XJMS}l2NV;lR0+lzE>^WmW^&vidv`_P(nDYOGLfv3^768Phw58J^e0+Hd?h0C z`$f`vUe`*dy@#JFtQ>5H9powd4#@ExFyHMlHt1Y?V0`O;FD?i3bHq!qs7GLd=`o9o zIY|F=iP4AZO_JQDN5U5)D=C+-By>v^@ii^)@C%aT@3K=;cDy346NR%vwHFwc7!1we&rs9won0y6Ha1a-m3z($2qKCV$gS)Sl zVW6jjk0t69y@YFNe-I`IvvV-#6co6VSHxgVV(E!(r$b+U3U@Lao)XiZRL`TNiPWkH zm~9%&NvoKBO7VI%d;d!clU@iljuD}@EfZV7t6Ekm$e+x&Z0c{|=H!QcOOJHhsRGJ) zf>Soe#A>}gN(0sc8ML;vGTLlSW#iv}a#6ohAfZk<-qF5sHDz6?3HwFOOn>%F2lMUO9C(!7vLZ--M_h0Ef!f%Fy8 z;>r<@8*H5T)9y&z-K#}RAytLN65z06Sb`WeOf^ySoJ6PfBe9fDgHhRzQeF9|L4BYvunwT-A?$`2S<`|9#JY4e8(aqz?R_W~Hlv54H;niwOL_ M3HE$`5cRkJ2g(Gmga7~l diff --git a/python/lifts/results/simulation_crane_3_hostler_3.xlsx b/python/lifts/results/simulation_crane_3_hostler_3.xlsx deleted file mode 100644 index c68fedbb30e8a43806f934f6ebc790b3b6d6a695..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53810 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 M2j2NqKlE?^4{czmdjJ3c diff --git a/python/lifts/results/simulation_crane_3_hostler_4.xlsx b/python/lifts/results/simulation_crane_3_hostler_4.xlsx deleted file mode 100644 index 917a045396b7355f338b7a81559637becca809c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53859 zcmZsDbyQXD_O+sjgd*J_-Q7q?cXx+0(nyDNcXyWv2ppulK{^GbQ@Z=`?Q?kFd+%?I z?+3--$d9+PBmRb_f}L98>yHjqHKP7-KA4E#%$G-4Sg=Xp1ejj9^By zR{EAcNF{omBo6r*23FWlIo)C#{ABaOPj1gXY{!m7j7mrvluZ$qz!#=&$%5ZTiDf&y zB`kN9+xlB&XF}OkNDTYt(ZPDDbc+3m;v$J?=Jcq_ zldXdZq~GDV4ykUYcR~814z`pQ)51Gjd9F(DbQGEcjh#8?*obi~t`4l%ZLr4Sj#E+v zmOWogrc%jDTxSS%i@ZIX-nb){M&sQ7h)({I1MZw>*3l>>y(y--=qB~@UG2@7M?lb- z_OZmg<;0I?W%a13f4|34(ZKa4#E_C*cm=1l)KpWT_f@O3r%+i zFO=WdR?v2o75xcQTe73RzFWKPIwINk|MKA~I&#$So4>wGZtJuE3r?y|2I;$3&z@ya zK6{1+faCg^(aGGz+T`h1W(Yh7TH22DTQ(Sr6j!-D0SF2_5tc%NQ01dTk(J%b9v@811jLwQSE+gs8U(muIwE&CH zx!B^y23~q}<{!sY6t!&i--9-ZSg$dLR3c6CpQEV@QZ$5sPH#T<+|MuZn~d)A5U}{# zFyU#u_ZhJ*-jLG@Syk!mZnrcOP_ybApOEuAf5_;db~hR}`DFIy28dw-pG&gYqrLjOQ-rD`JbjMJmfrUU@C= zrJH9UL~6@VTDkn0j0){7A9H=vdLkd(RT0`-Hs-WvK|%RYVO6k;X)YwTzUPjLQM>tZ z^8GUnJLj2S6EBkVsBga{;Ql6P`Xi`wtZ~R4iURKKc{yV-fs@20=8zc!`}P@U_qdFL zXQklJu$9iZ37wdkQR-R++}COSz8B(t#663Z4;RTz0|l(^nO;02RtY{9WzUNbn$kz( z?;UqGvWw$qWrarUn(5$A?nt!_gDGu3pgHj1n+bW2US7r)lCz8+-5~7A@tP5-CH>GH z9o@)^a3F2^bE)BVDKBnAI$PRaLo%BnMkbowPv5wK!c{Bzh6PRFb!JeCr2;-o0X%b3 zZqPNT_dCi8npa)x>;C1)kgGD=G(PoQ4axa{>vv+fYZ;DPj^m&2;0ndYFIAft^OH3& zo+o23vwdTy>zQ#)Y(FW_;3Ysq9Zo=eB^Z=UMuA$&?JX;T2Bs~X2WL!vJWgOFyOoNK zwx}U3cA^;GVa4qbtHk>fY(By34u-wSU`N1@#Up?*!>bV^4zOrCCaffjN-OU~p%vmc z!r{PmsKxaCX-Fw*;tJW`7H2 z<1Zm(L4ZAJAmrb4cSYb#>TOo2@bh^7I6lwWS$6H$&h5kCHClMoaL$)IQO8N@W!5nn zuDv8?quqU1!8||9#z6H+-C?-DPo*-RdX780egDCnKkMY+_BUBTWtt{EDQ1kcZ;c>X z{eAf0F-;ZKsq?B|c5;M6NFU62;|PAbWd z;mS&hZ9te*im~mw+3j(~UE}`!vcW4w-Fka&eEe>^L-9xc5pNPfU&v`5@nLRI%4nBx zu$zZ|idkZ>0vo#Z=kH{6Vs!@fvnO=uE5-)&IdJ}!iZG{2ss_y3y)S5E@;qfCM0f1A zlXdjh$K%!)icD&4Dydy?tVxu(J1tVs%*qCrOsYCm2}V`5Pk*#p@_{hqM!}lp{n_m zTMx=}Cs7#EMEqBnSS%X~hjB5l(4G$`42T@V_!$@Be@(eXY&k`0pvD*}=jZkjrSlJx z)0-eiMGyOd1WSzNuzqwDZ|M>-drRkQ9iYNuJdHId9NNLh>L5I)LVi{;Pk|V?u%C|lSxncxS%)12g2eLJIha9A*=~@On0yE6#f3FF++I6vdnF_z_av1Zwrl1 zxWK!^D=h3QN|{k>W2O8JdBz8j$BFOz^!u5Gg3CWENS;$=T7|~6C<4-OoaP;!S=IMHN+ans^%{GzG?YfJ=q|d{yzV}12z~lLYOPc_AC)(%wi(SS2 zE%3R=#rh9jwo#7hT_EwC%y?xAM_-_>0p=@bQDs{pR_oPw?oefY1HO^09u>^5a7#zRoQedHM0sZ0!ys!5Dz|ZHE_IUG0zxAcxF+(sLgU{RxZiTQ4*s;iUiSVR z*{AdBT)-O~ng#yY^>B~ec6TB#Fj;r=ApdyYb>wrlmpwpmf7Ay4vkbnyE%$jidjy|d z#RJ_v-XHmZL&3M%t#`Y{MBs-e0U7Xpo&Mcf8~AV;953)#seb}4J_4UV2s~WK`&^$i z{WfcR*!Fp-6aa5-3ye`do&gW5YXiHTUR~MV-7P#IDDUo4C}yqN|cK5LrF(ehlk-erIcP*B6pA>|Qd{Sk|Tr1TTbmY2fPx ztX^{b%Fy8E=#J^1Ua~4P>E@@G`;2+)eMzEcZ~gFcj%DwL?8G0l>mpKYt#E9jtV)~foNBO0eZq6*3-7C$E zIl2|E_Z{R-Izp%Vo^~c9IroVEr@PU=kL-t?Uv1hN#hAJd=KR7&|8&R(YvNvum`-b> z`6F*NvM4*S=vi+LPLe77wy;YobN||L=bOF)Ts_#I$#Ld7YgW*2Ywl z1y1p5wyI?<@kaA!>r#HD+WS7u$bvm2Qg3Pk+n?s~Bb~^oPA>8_pSOG$CfB-6pC4s1mu%{Fu6FHeXAPwBIYS7A{f4*KS%-0(W|>rqI{J=vJgyl%Y^ zM##4_jLhT&WaJn-*%Wtei+-P1OHq+fy33n)Zc1NFZuFQ69r=@r6cLh~?1bYf!iU~V zmRxO*u5x9vNuCMh$3JrLSQKqLokqwJ;GLupoRpsSo4+J#BG_kwIoL+MTIYvV*3i_J zWwztd%+L$iO;DLEds(-p^_gG~Z#%vxayVcKPGGH&>oe+y=HnLHp>&_JY40)V2E7A; zci$iCsAsi;pY9% zUsycwhXk|)!zT1*Bb4!W)P~n<}m3kQi!_>-J+O34mZyT?-6Oz$UtULZtmG- zd!ar{<-n-Z@0pUJSFrmnO%ImqZU%3)MPoFZf|CQy{VMgOGy!`8MayY3Ww?#qMxf-o z&gLai{~~z7$!7XILoRSUv}if%Q_e=A*h-)SzU~3RHdwF18O`pjuu1B~W8H}*^v{Ho zvTP-c%o&>T+$-vAqK4G_Ihmb5So{Lqw_x zH1Tp7{fj+N+jq@WJg6bc!oeM-s0L^oHKK&Ccw*-hLPvW+Q2JOC(Z#V6!pN_-dK7l< zGy0G_#kkFY+mC2h%M@W{McV;?GZff3O|(wTqx;rd)3I0_i#~n@SB~$;bLX0_U|JLt z>TCx)QWRqu@_c}Bq%=T{#~L;qDOYB#9^lBxYm5)&?)r-oVR<-9x31U;nhY_)$S+Ti ztzjB0-Lu$sv2&$-MGlo^%k70=b2+xNJaS5di);ynhuZ^%Sk<*xsl$=uC&QUC|17X+ zBdNiUjC-UFQoY|2e~GSNhGA>!H%G1WSg+51+{?;p$HxDckij%2`E8bhArtbh4djvbIPuwZIZz9XhTD z|5F{VD0UJPjpSxEC@Bh04(E@VWCD?ceixe5Suk6MYk> zclOv-Cy%e zGo*f12;YiPwUX-OV9{7or2f2@Te0wK*;vzi5~_GP8=)h^sev-vKcrT$HZQHCuVx0i zG%?=jP$CoUY^*LgIRFYEpLjyeaodOzHP$PqE+6X;FebdTXhUQv4025? zAlDQTHcVs0k$Q2rcpw^3^RAM3Qe-BAPKt(H>ysrGH?HtJUcNP4{+NNTx`7Rdn&Ymc zf%>#8G+pFQC8nCHU9H2!!m+m~ z#R{Wot&dGmDRKSg$6}tB_jZsnP@%O7HLM(6$~eH1k0(2XsNt+8PkY1NF%&QhUKOgJ zPl{HS>>`VfQ&$Zg++(4oS8!vTtDrCbz%gp`8no(DOz=)op~o$f|Ft@u*0Ck-~~*$0E@gc#-bbM zte0lXR{PAoG-|x@5&+3bi5ber^m?1R5U~>I^*qBj>|;b4BnSoG0f2`>0k02;(5K+I zO`twS)aQIo5%w;f=AayAw5v(JV?Yp={{HVMWbn(NWqUKzQ&2spa6uIL;^#Qr4!!=Q zqzsX~cC`dH8Ockr3bwJlZ_}u-2G-$7-0nGIA-5lWHip{sv?P7aaa;V7^Em^kVGtd6 z{1=6KGfqlUQIPT%@83O;^6HgodgS%>`!VUlcy!FdsVWW-&;CBrg{F&kf(@U3|JBuGUy5CvXc~V{&sM(MB|3frdSczhpYlnoCcuy2xSHF zI0K-G;X&Xi2&T> zDyY=Uu}f$8!v2^&ugTjJi}t?$r9LmRS9L^?11$!uxvtzZakofJin6yL*g1kCKU!ce zel!bUf!zJO{t)S_enu+&#j!zyqB@zZk#FW}EN-_SDdd+a;vtg=wRDD=B2QTY#B_`! z^)*_Fn955cJnQ`wQbhZ2!I+f*K(i*C6d{Hvmx;ljBs869J#`TH|5a*Ol*`ZHu+5k=E~?Y3bc z9FXxzs#sDSj=uArHwS-Jc&6V7(B>_kSlt#lU31R7t;0aZf?=_qrE(7ooO!87_z9un zZJm*E))xArWpO**$QGi59Enwlq#}}ty6mSET>Py6F1ReesJXrQXhq2deM@Q8_!T)DB|Ysi(Jni z*Q#o%8xDp%V;MrLD#h<~`!`9k+f3!I)nXXvriQ6gU~c4^SnR<@5T_Uqaf&ilOj2jL zbCq*@z}KO<%jfH4jX7?X{1&wL&r2$<)5;oIqiXZ@kR>YF^zW&x9xO;joCMwV_q80p zm%k8W3Yqv|t&Je79;q+gDBqDflNE-mouNuGtdk-Ku@uLOVsM*9nMmWZc@6L_#fogj z(~U;DIp+D9d$SQB_wcP*ymJNARL1 zemRQP1dL|HdV(}Jt%?7p6)N&H2Wsk2p>(K{%jY{q$#|z#!YILh8Ve|`bIKYKvRIn{ z;O8Nt^G;Nwc&?i=(!)(w2utKj^2hq+I#wPA(^c3oi2!q!5gtAN#s_&~?-b8}A_aC2 zy;Y7uD(|+W%Rkk<-}?S^(RzqcE8pF|DbL=n(He}VsJwac0Km?!R{BCllUxSN{ST=_ z;kS(MV#igND-<%Nnj3}7#Ttv=BrtYw{%o9*(7Ozu(){4gvqA`S3;1<*C<7U9S>o_~ zzVd7Xq$qcboz@#u+CrmdJ#3Efd_M1Ukulo_spDf9WM=0SOTvq2VijC~j5~vx)`lob zlgPQzFxr6*+MIV2{RW8^DI*ZrnYa-W%g~`NZ;4UVQ4W>&0{28nr08FReAQslAwY#`G^hNts;volPz*boB zlmT*k81o+gp-2#aECovV=rA4{u^dAMF|F@O&RNT0Kh zKlb`Q#S|!gS`j>BB<@F2JdNa;ATEBSDn}b%!62JlXHh}_+K#)TF-amToMj7&`DlK1 zmW4kG@k%#(m@-+}z1qx~ruZiHi1m@WpNjZe`sXx6x%{wW-NN5m}*~mjVX2=qksZEX#PD{P@Xh@gnTA zRb9?mH0dhLsx)+EEhBjF)0TQ7dJGd$?f=gEQTF1Og(`QsdvR&8(jsA64hB{kYtLYX z!Y{(^>2H7&ZN3_Y9ry2mjOX=aMVU&}j2~SRa~!9L$xoSUThWklB>$su;e!D$XBmOT zh1%SirsSsMDZ5Y353}&jinmO~s-Hl4o2~gatn{?JH-||L8kw}#FF#3$Uk_QZzvx@{ z>=_arEBJvpDW1L10E|+LmIB7Np{)P<=(Ca^lLeuNau~%Na!m&@kZ(Y`^d5f|AkJKk zsG&Ms%H%gzEpio};!Xa3wy)Zlmh6W$>QlT}>~M$5c6%)(HtWT|AYL~uPk$H~r{}*( zPTdA<$INXv(6A4sz;T?{@-WHTFjFKJ)8Ka z#c1w7S+p>SH9mRB+mi=-%pJN;|~cLBS6UT8%KYxue*X1CLfOnBwnmhjlhhbVT87Yh;rp9( zMW>pVTKw;T;>JMn8X6|GX{6OUHa1DDc#PSy+-Jlc@GS3^U(0p$GhEfjk7$~p{x018 z4lG8nT`=$%RzuLQiU%OOC~1T5e?bq3JEAL2YAx)S4l_zOyL+{sIaOHUy}+58sTzN` z6u;ogQ-QxXe^d+5AyBZcGD%QheSU|oGlofv@U$sX2mDL>&S$L;2p3LSyT?yM35WgC z?^~0^Jrx&@3e4r{%-oQs^d={4#pa9177aG%FJHOK>wBZbXlqH81x_-WwNV_th+LSE zwU}jb+GYD$kSb7p#ON9O&xMLe{}hRNurCS=bPmZ~(ncUlUl^tSeroenwas$iM3V-U zn=1dOx)|)du8s_7weX7H1kA8JC{i)H z{*)XoBGkki%!2#bEM05{wLdYM(I+nVHYXvoT^fx;rR;Bn+Kxjim7ImJbzIxHRR44& z2{UNyGH+$h>ur&n(9cE4SPj_3WgjZ*Rw~)|jGMKV;RoiPo|s!pUYXXJLYe#CprL`+ z(B1`I{%Jh-_3Kd8L5Dm_s4g8m{vcf&el)l-F zoxzBRR#eJ&U@VwVrL2KicK4u_VIpcWrP}>wvNF^teE$S2?NR+u7EvXj3Cq#dRgat7 z(>ACyBTj7Vp1t*L*Q1AN;%U!NiyaU9m2}weY<(}?rkbm|{<31jkHnZ)E8DllYIuAm z3+uBtbUO-&0C~NO6QK>8`ib@7BsAK6L7zL}Z^Z52l){6v{^^dme?eDps`Tf7%ZHAC zGaMzL3F#S{S^hTm&EjlU@k3uIY0MoGzK$%_ml5O_viyt_4wH11Fbh=X1q6}|754OC z3kS#|fM;;8c4A&V_9AwKZ#u66m`&V0(-((!lfL}c)}EF2 zWkMxl#fs5e%DzV}fVSsh400+u-2OLIW5$)e$8Z~A%>3t2|MJkoq8sPLOCD_ha4MMA z)~z(dNTejv-GlqFhRE@w zKrm1RtTiV-8+mjS5eY#r6q&@(JvR3u)rCntQmjp?AFVwX?wE?SShIU@YwoonkkV@Q zyEuG3x+f*Uq=y*@OkSk@>UoL7jyK!wfBu3R!N>yFYx?uEewkF47211z+%#Jy@uTNAdiOq8*eQo#p30pHH>L4BIE+!8p~w z4(YLz?LeI!c!dFc%i}@aXU{gD{Kh;^IghAnWGnZSr#eO1CFb0Mro`q=-Rz}r`w|_5 zkO^v$L!&6kVL7Sme>w6KpK%iH%68eSZQkTxQDdtMImQLfK&2gskf@8XSs_YxzC@1# zP#3l&=9@{PUVxt%hW6%w!qEe9|A4N5gW*RVV3kattP*Oij`{YRp61+Ds$vYdNs*|( z-8*Chlx5VI>cY_sLqOp0(oJK4Z0o3>4M}_wwXh`AgzoEGB5!%@Lz4tv7E)Dyf1P_! zURhTYHE6PJb@x%<7V7avXcUDCFT)r}t9Y{BJEN_LX*14xYSFQt=Ztl={)7riK89r? zX7peKKb52!wDGvXv&PDU7hWxz=TPYi0PlO659CTyGve6C8>kS_qT5pZCNV;=*`W!v zW-m^ZGytqOB;#c$jB)jRMRf(_B@mF8g_0jGSf7vypTD%$PmDD1kOlxRbYR||=Z~37 z7d3*?5OEBBFzG8vs35-8;!Eu09nvV5^qnoQY(LgULq#@XBii_GhD+=)i8R5+#8YE_vU~J z2($=GVuQS>3xlWSQh8hf0kaQS*Kx%$guuQ)Wl+$SE)!Y+hV+N<(tC-=d0s88s61GMP?FRTy36m`Xh137}hI0#1bkrn6x2dHvw-1xjyQY_1sga6cm?0 zBsjPJz0IDB{m5tNu9PEezbX$*Xf7&{H?vaIB6{hJseF?<34l}$JXiIkO z)Cl?I(*uA+hT6oGN$l4+MfD1kd!H0rCO2^+cLw3$Wdk-3ELwApGfVb&$jex#w@}|3 zAC+_yM&b`JGZJ8ClNso*`I5*&#FCOqQagBN?oLzsK?N`w!m>Pit4_1t7-@Sw4KiDzXx`y8cRWqGR6_X>gx`A}L3%m_esf zMxBBwn?^!Hxewhva61sgOf4{eLLA`@PxHLXXyw|UdxC-qt!QBL_`C-vUHqyuOUM8{tKG@HY<7E(R#;5|_zN{tP=Rh_@$UbT;Rw zkX=!aC)m0Y6_5kq$(eh_Z@JH=+3?CR(bmD-|$lR`99G9 zxT;AQG>Nr({Ah55=?j^w-$pb7aVwTYrxG`>cx*DurpYO81>^m*D9zblaGuLMuf3Z7 zFKO5fVvFm7ifDbJ4)y@$cW5y;}VafHb4$G_7v*o+jNbdHkLN)V;D;1@Q zj0WjV@i)FbAFxAt1G+Jd$=_A)F*y>FrgUJyY1-P6&^L=Ij3?sg!?MW0v>CqU5hPvC z{m5aN2TB}H9DcPdt{-9yFUga&Xy4&M?tV3rE#aJ`HjrWP8!qq8{Ctm&b>Q%qtMEZe zh^0B`vx=VHS?_pA7UKNaEIx@qR@3M>=pe$^*-U4sn!8nEy#((&wmzjfy24pj$d+4I zR`EZNXs=cpp9|fpepefnxD<#s)Y;C$(9xEKr)i3^dO?hy1lwCJ^r1q-sPf$MB;Gvg zm93=>NP!1G>2;FqSkHI`gZlX28$(CW*j{SOsfbE6Hs%TCdko!GRiP{nbq+jFBCqE| zV5^I=Ex5BLbWa&+M@hU!Tk-EE9hMdN3K6*Mq$hAj6>iZt@$GgrBAS8Iir&yz%2 z^0<>an_mvcAfj^AVOcc4ng-Cp0u_`Jn=X}HSezNxbX<)mx=xuD)}cr8-MXC(Qzglv zOTXx;=K)F=q=;q%rKyszd$eAm+1a+9p)KQy`*T#~aTnxE21uVfvK%o?3$IABlAN!2`&z)t1YUn7V%}n{g5;D1>NTE^$HHs*cSF)>L@-7 zG=jN};GLY>8Zh-g%4a+YdCy`Q_%U{}g1}u}4xjc#U%dm+`$mdr6VN*shvfoztyRVb+m!h;E{lKcKU^R|7My?|~qAk4fjxw)y7?rHH^HR zU3fo20ntjo5(XVwr`usn5$+(%8Cw`PuBa9a&lP-9>bbW?GdF}V+o&;jq8~8r8|MG* z{HKm|u-&ZGzTkqvZT!yBpLUkq+dFv`A6un|Y2qz9yhyYmg*R_91<{60gf6axc#GdP z=5MGSt=)prWgTUm(2-B#FM=V>+k&lie#qn@9`-64tHB&0o`4#vf3Mu_Ab#6;CH{z9 zPUtXEq3z+L^ze{#>+wI&Ku>b(t=?z#I_k!qCklU4gtg|z%>xsRPIHv#l%0<_Oa!Xx z7m8+w+}QpRHOPgU(6yJH!5T$mUeNjd`Pl0mmM(ucd9g#u2h4{vB=@b2NX2LA>&7kQ zLP=hzLoO8dkkoOkX#jRLS6+iX+xfF@j!v#BzER(OC5hpUR?SA9o3K9gWyjwtxo{pZ%kKK_5O7a@_QaD z2R7IE@ebe4`c7qzLuDsq!eGVwtnsd`D-!FvoZotsD-Kiam66_Bxt~&apL%D-u^x#{ z2q<@-da3CX_wexk?kuAYQvDOfZ=m|Bh7rEiTl&3w#bPxFnUd{*57j@zcCuWv^U8ub z&_&BLpxF2E%QCmhjnVf+ z@ZWa`Lo8-EJ)cTz@d>afZ15v=b)|_xTGi_<1&5AK=Y7*0-d?MQXCA58qtGh_pDwLc z03)B|HUAIns@vmnO}9E0w0Rf~MWbIxe&^hs&3DcMydRKhY~u+KVyU>hipa7Z=+km* zSjQ9p6wCA1@B+Q3YSk-BjGPj^5;a(wqAxl0j=AQs==1aW5kgZ3J889wn@QcBg0 zdx6hUfE>6$dJmF9v)U&fTqlpGO@GrG-TH3m{Vk_BUef+ZDSU(p9} zS#4=~kMX&Tb+jw5sG>Q4XW!H#G3W$r7Khwe^=QAMD)HF+tN&c5kL$M&VnHMH)iU0PJZ09$V6aGUk{F-tWl*nq00s-bX(i~ z1B{51RsZ=HICu6&cY=}N_Rzq5<4^#DGSJ@Ij%o-m8IMLzH{vNjB{8TF5FW$hZO z)MiHW=y*#4wz+IPUCjV^!c{f05?_|?45X4bWscEt_OA$^IDlSQfZPVDKt-|p1-HS1 z7u%7ImB5+CrK&*A)Hp9ClCk_k!ERC|!vNttmNP!Bk3*TvNPb)*rQbVF)6~H;72EdP zNn(De@%80v{2Ga2_kXEQ7JhDt&Svy?RYfMVYQNwvSnz7wj1@xlAt=>5Su_`d`02Ei zZaXVkmdF~#6Jo?_QU=ki4;|V5qO2iFRR1cvlU|o)Z*^cRVwu;QFwRtPRQLh>WjY{{ zL(GZf8%(eIodrv!R=Omwko^xwRa2g*4#oX1NP-Px z?%n!MA=ULM1|SlXEa7KMHL*yAYt!66CYy)y+-*K&4WxWXZ)T2fJgMfz68@Xa#}xl; zVxfLf8-cCyEO8&fE8M}>BK}?$@&paB4^rL6p&{9E6gR=~8$_=LvMULnu!#d?pp%7o zsLyZ62K4NdEiV0K{=HT~T_}gB4qQE8$Us7#8yFHq9Bo)O`0??Uo|!qhi0cVIxtHK> zEF4WBo(78q=NnA^N2ai(zskQQPmulBMj3T=p`@XPh}b}Z-J#At`kAr_g-La<4_(H_ ziaxq>f9dBS8$V6Bs&2h8V;v;BmLP4PkpM+Dj*g@BywuqYpMpqxC#^Md z$qP@w*2U3kMH2I=(TAcy%Rf@Re7p`_5x|bj6ND}RE?tW}4^ zAqs&<7Cr18dn#QP`Xd(=xcR07f>O1CQL5~TS?>oaXC*crg)=o9CUG`zy7Q#J=<*60 z6q+2u$(UB%iVX(9XC?R6Ku-8W1?{+lWM#s;PqGl%8S!jbk%Ea>InYJU<3!f<{^V~k64Q0#Y$zP&_`2#~l%%DYP&J~A<`U9+we zyqQ!Y8v#)<3@u^f3Rp`KZsHI;XtB_x=k5-DZ#nTxKu%vC>UN&}4E%h7H`kO=c=>7O z;Uv_w{z{hSp&=vJqVbw^s&-YnThF;XBe8;TzpFabkfSym=jc3kJb_DzH@n{3=acz; zMgMEd5`7ZyxjX#KCKr(Qw)9@t)-_3FzNViM01c`2Ht)fLW9+<9nSjtg0?=y5+exz@ifG&5 z4B~f1YtCn{DR_@IShVxe_i!9n`o}MdTf}woFKZ0|Co9fng?QTyAw)Xo>~Pr{f~_MH zq7+vWzmtqKp&S=@n^cqbbEedid&y#C{-Y6*@Z}`GxNdlfx?mwc<6PY5_(X;0aSYlP>8Jg)Z~zCJ~7xTR;JxpCBWQnrXG`SdywlO|02rsLcz%7*J9m7S9L zKh^7h#%2l+p#6sF+koV#U&)B&3v9u}2e2&xQy6DtH^qXd@Y_YllsELctdA9^&6UOj73gu!KUUNFU2Owyb3RDxLzWT0*C^&iv$T6w$h>_6HYMSItw91*8bulMP<U`qJ(Fjd3N^ zd2UfKVWeq(GPjAc)7OupcZ%G}(8k*$!(Yhwjx^xkssxz>bU}N7&_zh!Rp79~JsU8_g1RXty`KqN1iJ8)xbdp!q|b ztrD_I$Dd#c>&Hrv}P9& zUkeM-JGb1VRDAt{lMI#hy_b=vILvvt>2!ym901<|(H8=)-D!!!E9b+X!y3*?;Io{2 zv)ub_`Gm*MNT;_+IiuR@a>%*v`bt(_^B_6b5K4eZO#;%levw>{fe#t+6Usz zcOc$0az*bAl;6^@YyL}_6&~vx1bRYdb?fL<`9UAT1Rt;=R2)+io)XASAKvB;X_JC$ zb~K*&dP)%`!XOW-c|aVq=;R2=Sn|N00xw`~(AGuSTcy~%C&u1ChC)79y_L zT^It&IXMSA4rzA6BQMpXj$k8Xq?$f89~oEQcD=q5sP?Np9q1l=o8&jnM1g3%K;h!U9gN>NfLdM$pb@|`|}0X~Gh`cO*- z{|K>UsFXPL#C#rMwHb7QnSp+U%4OvE82uZ5+``JBKX}#$0jIYAm~GWO>5tV0c>{E( z3v*8aidBD%h39=T@}8;62lvhR^K7`??AgHyU6}o zmD5@+JU>EcRBDdwMfWr2*wn{8`gWq4*OtKatu>e;9_wGHfj<8|$CR%gbNZ~%6MCd) zZ%zTqNU+480v9#rJ5!wDq$m+iI$>+vA{XxSI+t_u+`#aCY(CLDp@d(e9Oo>M;De@eD*t~OquN_7g5o5BE&-<(wcFbfQWuRk zwzJk*$+xs^?(-w(B%maC_(&9&QI8!M)~QPrN1sFwU<6sxk8S-R>e%?EFlaFR&3L(3 zb^LKQ+-kP|VH1Fhq$z~%=yB{~)%c+tppF7&E?XP?NL89V6*=dz(w9S~J2D-5SH6h$ zP(P^`2QguLvEoV!!x9ApX^=Dz%#G5e^*G|{*JOUq?W^$$TogBv2aeiaP~!UE&eCbV&YLW9pIlHMS^0N}O6&k~#hFQ{z!YJLOym zZ@FtT)wxT-CJGNX4BNn{&evcr1;p1eEV4J$Xu1JC>MyOFGbObSuYk%|g;=Kk>4iJ| zNK15cLaJ(J83@%iAyoJJh_H&UMSe;@^dFrO#R(SU|40@b{j%1b)i`OLeDX)%oAJ#cY-EHGW?&uPtE$ZLf86DmgB1$Nn4? z{B*DIQpkPyp8s~DJxF5>7 z!OFc!mS=l3nz#oVkFp;oY6v%%i)$%iv|l$r4$9l#f^onV;jF~L&E-CnV?()4hZun} zzzFPwY5f{|TTS=g>J(T7yKEs)RO2GH5VVjKOi4VIJ|mHN+RdavcQXt@>!un05gWh; z21b`es@6&0F?Im3FU7A%dfKIx_@UYY1Xd|F(fL#(u8r;!p0@w+90P+VCfJu~x=ir5 z^92-WS;14p9sVr`oZ2VY=Da#!t^Cy{BnP0^s{ z$d3YHW5~WHkD{_7iL#>&$xlGv8giIXsX!ci9r!8lmHcPw4ODY8Mp{Eewu;wZ_FEQ= zt1`Z(OKVJ_E-UhWhAfybAR8ryKDU(oqgX57|3CujRDK=7&&1AEYcIkL4>oys@79qH z8PmoT9l)3-PVMg%&u_(+x{AUwY>{;OQZl}4uO7k)2D0RatEA>4zZ=xlK@*Zk{tvX8 zFG+s?kBO@ei>mv&N+_Yy4Fb|FLx(gB-65?~gM!ixA_CGK(%lGB5>nF5j0y;X(hMaj z9pAl!yua^XAD?^fJ!hY_*IIiGZ78Le!hLhnlX{*sziMYen&&Nr>ySeA!U-^C(*ROL z#J@?%nxML^n17u153Ouxtc*C&G2b;Zx-yGlU%29*mEoVQvjn^rz`m+L(qBG!b-A0c z5*e0wmFZF27CV zt5>Vi`j_!|LV9;)>GRc{XS{07xLcV+??R#m(}n6qC|4zBZl`<_mNm$NkLgkyKDuto zPWuRR63+`5bJyPJwcQ{s#$$9B);UHKwr^`2{x=_Z_}EQrgih1D=GuLu zB#hGC5pnZ?sXW&s%?n=tLnE&*FXb&SuVzeuzQ{g!B0A74kUVx#`j_!&LVA1U=^p4a zR6U=2ueN3L>9m`uGu;`=fF8TdmwWk1V$6T=MuyGA^a|{mWqCz^Ksd@#E(9po6hnyI zU<&n7M)@_|7P~LT7NrD+4PfEN8=JL>9ZIl2>)G2 zXIc0G`qyXtGY2y47E$#~OaHq3RH3VORf~E%Qy}Rh`_!WkhegA&z+5tg1IY%@J4E`f zelKMFo4-FHy}IK07(CUMrXVxHoUF+|WG46W&Yus^Nwje`tQxd&y=m(}oR7msQvf@r#NoufIdp8G#pqSm(_Lvmno{ z`huJgE{uA(LS8e&CMcEt+X7F?EtCoYRdxQ}dM~Awu1b9bj*a6T8Oreq)%yRS95$-+ zPxro67Dt?-EM>7h%t#Ja{+yY7s0s#GXHiDNg&^y>8teHcQNinnCwg&{fqvF$iot^2 z1Rsb4B95T@JA>9MIx_LF5@S^afoVrsdY>vNyG%jZReF(sQ9vH6$)%c!vUa3N9=zk& z3JT~;5SYx(u)GlLJ3D*04D|l|#~(F^3U~Q_0zcc7tq%!HJDn$;4!NjahNC4?pMN?F zSn!SFrvGNLaIF3ZHBEi11MW>~&pdavdvpEhzur$aT`*eG9k)swW@K5Fp?e`%e0CNI z(iSCBF2@i5+qLx+meF4;NPn}r+L##4Ecmp*?t zr%E0mxIts^I$jeEFkjkRdECuDpZ{-sQh3;rC_~G)8~^^g8k6Ur$uMb53DT3vE&Nbg zeD$_(RB{6>b>8s4%BXAyPQECCu#D)A*2$e$mp$;_4QXnQ`+7G$1_Ms1O(AO=hs?Tu zDA{=4-GG0LDf~bUooz&5u&0F?WizyzuG7mXk`G;s{OS4(QK7Nb(2wwTE4Pr6+p`rUdBxeIH8<1qr_xX3jj(XJd{nF0;&R2P6o*Ou)6 zl_TDXEqSElLWgr`mLaSJ(CB{_196iUhEm(}DDe#+l-myU4Mvqrp9@e$5-hI8siUAnDyS?b9c?L8h3P_JW(8>^ss@W9Is!^2g&ZXT z9Hp7vyy96$l5kSgR#C=LPyk_Sw{mVW<5KyI#&edEw!7MrZH+!45)3`~3+xT!dW0o0 z*&>D>iD(KPMe-2(8&U4S*>FO}v~0)Bke7cT$a3di<|8Votc zVl#Hmn188aOD#@z=eAAFiuS=XkZW^XWQl^SQoh=JPrbgY+AKlUrZr<( z!ThJzaEbm@3{&KK238WGee*G9{3*3+8cS``-24h^W&r#_7GTz_@a^$n=wmi2x0HXp zh7IWu+VQior-pe**p2Y?l;?z4`g$UN!Pu++eY4L0WwMaY1S5Jso;E7o)($o;Yv+hrHF zN@ANhy1ShAkEJG4Hc3uNi><`#)P=`?{e8P2tNw8tN}p<-fUw|LkX86FAv*hYKf@sR zzEeJj4y(eiKH_RN(QJp5@ameD{wo)M&>;mIaxR>U}|gsqTQx zK=f&-Oub%~<#N!!Hzzw;R_=lQkOmhe~bf~Czo(I|8)|WK>*=^>L)-j$E~HOa$&ZP%?28fquR~3yh8B%%N=5 zD6yC!U?lPq=`KNTMt&}Ks!GqXeWb!##UO0`^|)Yj@%JaDUW^l@PsrEs-IFv_v?7J4 zcod2&UAXCRx1{W*p{OJ0UFro;IzU}k9gsEcYwh4tmfP990;h(6|D|S0bG|c=uz>3H!IUIpIq`tF5BO+H z)T8Mscq()pd~fC&-0}GYL_#{~5=M6K&CDK+I7O+Ga9zkHilzMyug%B>?F=m#QZb&$ zx9OjM-mpq^#2Ki>enb#}0v`l9(Z$(jUoMKeZ^LA&o-d?@pGTYL}+ zj5V#LuKK42zOwR5m+g_W;*4`g!L5(wss&>rIId1I0dANOk4=8r!)5~s}=TpZ1CF(zs zf^h!@LUT&iF(-e4yB|s^MnCI<-cQ!tFs7EPvwtC66EUN5{w$cgwE%xmuI-`i`M(Dj zI?RTgIujbq+Wi|2N5xNjr;fyG5xwcfg<5BmoZg`!~;XrC=5<8TD7vQ)q#&`*sW@PZSuC%h)p^4 zEGz3MxoMxCXCHXy9Gq%=_j{#v3PM)Ds4&4_%oyB3q3qAUz9ncn5(09UjY-OXKl1yei8(r0mE1WZVFC+Al>WqTE?lTVflX8%q-f4&c zFTZX8R5!ESHtEv_%T#>-Do5>_7_4&u{eKn=gTH-m|ntXuCF0C$Qz2H}#WR?R$#ZTt=R8j}m{@PauE* zxEO_ii_xGE!o|Nn-dE#(b=_%w>B9<;ws+f8^kI4#-RhKWwETWN{C=0AJ(A>V(E5B` zEz3AJC-JU}4?xnd3gH2LN5;4d4U;-nU+;k<@ivv)Um0gKd;~Cyid$;D%i{ZW{Kg=( zP&3;t{q<5GI)LO?BmH@%+$^c*iYa%rvij5?w9(4>nT2hmhMIg;pjuiupO1DD%$Ub8 zd>fIopfwPlM3ved7r&CIv+pP-JamvCm}pLkI@kE#yGbFMA@BIF465kX?AvmAef2`= z%ULSpd`TI)ev-v!CP%HHuRab;+569cDSI+CTLHf;qKw-;(RBM37ah!al~1z0aTEdM z7oD5+c2I4??03)cU6oMviUk}Usc+sChd(WW0|sNQ+66okv=fDC%+W#dL$tS2vJSO@ zDgMvLf`H>N_#H?STJ(fkwbVt8yi%N;;{LqQG#g7h2TP zJo*6US0X(+T$UWkJ2H}6zd>`riSxZMK%Y`}qVk$I5LVqnW*T!n@S~@;P%<1e*krVO zl=_>FmpN*WKyT2^DHU)Xf!Oe!R4EhuM_Klu2nK?)`)W=kTu{i@$?u*U`FroASMX$3 z@UoC+ZxNNwL(KcYv1&U6u?kH`Cl}2#oL~jQUv$yd(}FmoWB14Q(E`pEDkMPkg&z>9 zrkVx9u28LX6E1sYz#oWi?NV_oNeH>6TN|YOT-7b^q?7LN-sg`fPbn_cO7H`)EoAA( z2%#+%!ikwzcYL=C;f%K07#-<1iQ^u-yOB8y$zrvkpWc_adO{@R zCuV0Hm-Mg3_-v)%!)fk%S~#VU8C-`5nI62T7D-@Y9TBTsVh@f-(gG96Hb&IDhXL2-Z5Q>cQgf*xh>^^T3WLDoPjMIE{h)xKL9WY2BQ-rJ z(ywn+h}94LcXB$E!`AA947jLFo22AdaBN~|4aVh&lOh8eJ`2P4M6!SQBVqlBkOo_h zHKU>Vx#{U;R4SF1Wi-e{mY`?Pf4-ocyP44nK z)6Nqpo9dzbQ_z`x5n&~)#zD*uzm*lP2xzfaMvARTc}{IlChw@lo26}-T~TUqL@4^% zM|Vx7IFI46^*3NP3kIu_OuBFC+$9;~6iCWICH+i-8~@*%yN*<6db7e-MEW1!k&!s$ znn;yp%M}~NI~2A)?}6%22RdYi!I z#72PZ=k>P3C%%fjd#Q``(G+Om%yhXFMqX$kFLsD#B*Di60n5y)i1%=DQHKK7Zv(k8 zqlo3Cj@LqLzCuu)bd{f42)fh%DR@3#^%J!muRd*#e>gy&q&F3;t6R+@@Z8Bz9Q)D{ z|Dv(*O20Fn0lUtKn{L_Aflk2|9(EuU)pIrnu_r-FrZ?jW$sej0mWdlfj$0Ie7Jq$I z4_JBKd9?|7C3?!$DBA>t`@d-RanEEYRP>Vvroa2>@YbYFTu` z^y=9oIa5xJ>etkkuek-lG#m9*1hSWKfgCLjPNge@$Vtv4kX&fRW0v6c1?egp<(0Gs;Bi8lSUNJ3)PA4p+he!5^93MF?9vKqQ!7-K_^IJC zXJ=8AfbeuI3FpF^XQAHh#Fd(b*;DFiQ|`XUM3liO0agqo9Jn9PXel;&c~(xKk{NkC zbQCQ)k@}JTm%2sO@oTiV$Fh=RuCyI$#1==Q04biUU51w}u`n*oi6`Wp=dtaUX0|BTJ# zZ;^kKcGZCh1Sq5jXFa1~j}n1k$*w5e8sjr5kF3_VRwW6~>@l zDGD6@t!kZf?e&NDdH!0Ph?fBIuk+(~SJULH;b5dwLtBigkt(YU(v~m@dq>6vTFD$oMS1(m4|9aG3`^ci zl^i9%DwV7Goof%Th9F0nr)cl%aw_OI9+g(Ds5{3Haia^5dN|!Rsly!&(y0B!diFg z%=`W9h<}I3MKHST1$J=mV;(cB#H%6hp4UE$4+T9shmpU&53f(ysd| zbL@G|wfypVUnN`Wn{&rejft!XG&892VX{06p;6Zmll}LJbB=V)pjzdJOjOM2wV&Dn zNM=%$cK*fkACOW{FG@$nKS_xhaULGl+drP){q7s}=Vpsbqr*0kCRY3@2k8bPS~?rS z)mrolBf#hs)Vxshdr<=U&5ToZ>1p42qcVsu`B^W{bU|Zz@jdG4!lV?v)h}v4lrrC7 zZuJAj2Q?pR_SVb3LQW|i@0(B@xA$Ii(s-Noa4dZxtQW|C!JGn4e*y7~FXrStT42VZ zCHJ5RN@h);fbzcpbljX{6=vhoOAUUZ?Vil?Me=Td@}Uw*>8-@W0NC_Z-+}f%HalGS_wy@~AQAMp zLUb1Wj8p0e>wC5IiQPEhkOq~YaQRDokAG@Du;XXvwR#E|SsGn4iJ16hEJJ zyF2Uk7Fdw|SD8eJmVa;KA{sY`d`SHXTKnWFk z0a^ojB90{jpNCdjt}iKkgD_~ED9X%RhbnIIYD+5V{{NQb3{2#?8}+dwxfPiM_munm zpRMP1?)pYm)C$vCsIgw4@Flq3Q6wIle>pnPN4KIy{7Mlt5%PreBDo44Lx{I(&(^Pw z)0yB5C>7vWBD>(PM3}!jgmr7qaX0l@%%{mM;15i2zRZ|jfs>a(&0-V{`8|O`aR)nI zUlnJo;JzXOB;{W$JmgvA;;sr=nI)j8aZio?#A}}s!d*s;{$VN7p9lde|<|SnJ)a;x41_9KiF=j;@ zi~$nYxC;$Cdk}6{$eXBDSQe5G&o&d4jHNXVO;)GEJBp)jnR)&t(T5Ny@*^AiqZJK| zOFPuG}IeKu$~{8yd2&cqyR6%qaV+>j;p#Gqz$=O^N>duX4F{TqD_ z978$W*vscNeipRV$Klb$&SJD)@6!R*(QxoS947Pky=PQe#(iBkpKlF6#LexuSCFb$ ztJ={Ue8n$flgDO+n@j^b*Ji$0XQtFUyA(Vm==F?wGBPO^@tkF*%|k(eKAA*~@nW>Z zIyULGSd+BmW9XdzMgl`ihmX>6rQo{I0sT+M+nAW0kEVJ<&$`)CAG?L*%C4Zif)c-bnjxM!`_z5O%Hz3>a4JjGhXH?A)8W#&$C--ZuaJLDp0D*~d?P1I^8v zX6h@KOmXnsoDb)TkURtbp<-f%(l~Z8xH`&R zFi5bucr!sxM#sixX|4U}P^N~O?^2rorN|DM1}DV6+Y(~+fl5nk z*D2O*_ogy)P6<)1lPm1ZJI638^^)9{ZqDqMuOYgNr=4xJLJfvFQcOlPCt)LfBMt2` ze^jJtpa-8z;qOpMsJk7OgKWa+$}hqBvb(JWWCW>Lxd+4!dkOV*vD0J6l24A`TZ8`2??a@0#E>X6q-2vcLWjz_U+7pJA>S9v|{p zh%GDETh3L~_50sc{6h(*W2|b+S~zEy0hJF`qtqQ<0o~XH`MiM}$KV$!xHJi*BqMtA zPG6ihr&GVtR)VcDelVe-y)=U*$*xE$P%7RyxS3?0v{g>XMf+(M*SFVHlw?I~H(o(P z#AgKY_@VVCTdQ>!u0FT-BY^@w+^w-&zZKZwhB86c(a-lvcfY(t{C3e-vMK5Bzzat> zaARwTilv|x#E$45*fokuU$l&Hu8h2n;Qy+Yl%hDc3SpK@>^}U632fYj_PsyExzdHL zHWKoK>l|g&b#Tw&kil*GJqa&dQYL=f9dIdbe4{8OKd2#NSD(4l9+u4-xhSSP7Z&KA~cUnLt+ zj@|7w%TPhtPFMdQ`@kXPiQ3>*JIoF8yrQ~V>=ZI!k@Nm(?yl2LC-RjH6=G+6N$e!u z@$L`vvHl8{SJ`nw?VgZB^rysAOGV2vRIq&Gt|8i|3b%@$A4u4JAv=kBKx5)+M_?+; z>?uuDTVCI6Cq8%n5zgH8wpUu*jBr$j@4E1?gQ8T9b|rRv-{R%9VMW4sn1Azn?e_ys za;==jCOeL=-DVP4h$MBGf*iJi>;D67_f6iJt{L{Q^&MS_HI3@xWZ<11ye&#tq28n- zY@<|J5unf1{89=1aqsyW|J5?pxN4tnus#cy<>2Cv=aEAC@`io3gm5kTxSAPj^hhyT z_!Et6-R@xLPvd$k~;WJH&A{IeNM;l!HlVSssBir8?N)Yxtoc)8~zH>kS*0X}mx^8$t6Y+4Mi1CH$?ty#JiXC*|_rI#v^gYgKPP+sGbv&b|_*Li8n% zRud#MJ-L&tx4+g;T5O5C&3xoXS1wvJiH08O^w#PD`ebVY*A(eP@ZQLXOwQfWv92Gm z7;%moX%SegWP|$3h(9}?d2kOcam4PEKXz-RiCcy%|I5{Cj(roH#j8@j2u}LN-41Pf znW>}kNs7tXUuW~`=(!%kS%nO9-HEyO2!tN)XMVHB)s;YM7>>XGnDu;a>9=zj=>w(U zAEhdF8X-dYRtAP8jyr?@ojz9|$9$@)!w2V!K>!K@^_5_-ZhGU)fR@vx5Vu`S_G7f> zvL;%rGPqr9yHwt<1Dq#gxA{5JsdFdo-VEG6$G*+X^lTeZP+Np-IE1FUpr>sskV+|d z5vBdOzLfBk^4w=#YKO%y-}sQ9tJyG2%^aYqU~l@%Hd4dY!B3%MHO{{1BW*bQ9yBt- zKQ&B};_(a{VPJam=qYY1+&$1mv#(tw-Pw^oY6X+>QQ`yI%~tDX=N<~am-?%isly}> zztqR#x&*IhJ~o-RjvT-*Wj64K-#duk5YB@d)RpB$x;bG|Hlms2@A}b2h<-l%ZeoKT z$!yG&|Dz9PYE{*raQ_N9MXKlU8Y-86{Pa>sz|eyR?Kv|h5`JJ)5qy_(mPK;${QCpI2RaGAOC+P{6u;;w@onKQTF?wT~)j zOgh0d__KJKJ&R6uEE|3T8{E$l$HZ?<2IlBv#!4J8{@TcS1jR((rQCxtF8EwKx;lsO4_}_OmXQi4UXkOg3>ncyfd_DYMKkX zWI6jjeh_u+lmqw>aPWb_-)e%bv5>)qf!0o#3bmuca%HU;lQ@fhdRRFbCT|ofZmg`% z0M{NSXz(Qe4H|O;H>)?L3B~sp{AnEUqjbr|smX2pEA;0+Y;hq(1e`QsJH@E`K%V5#t@2E2s6nn*DkR8j>?)T$d>anY}Go}Kihe^Zfbm^IP z3LZ9CyO{5s4(^#6w%VoLPpKD5G3fYfR0EJw%9jS5#gDD+EitBi!#$Z5R8g@O$zLvkx-n;mnBsY7VteXnZco!%|7M zGFIXvA&0u~?sn&%!=DQOPM!2&Lcw`8&F@weQMy$N)lz1$aA$o_Q9&4Z(oc#6P&nFI z5?>+5)bBZWZLC6TPAINfXOvg)b2&atb5`Me1~I2&Ei2=S&%wj(TKP%gqs#%a~uHWg)6fB!uCBx#12+RB&Kbj%aR_v^m%gX6ZLjy;g!6Px9%Fca!F13%@QN zmx{R+f(P#a*`;=T{Kv&;lbFWRWV3on_jH(Ihx(cH4Eal@%YQt%dayiu+@O@rI>X?n zT4sAl@G9x@UureX=9PjyB{rDDgbQM5zlJ& zul!16aeknnEZLT$hR&9-O_#CE?d5qOUA@i#5&@ir&NDm6m(VF;-&ql89yLBU ztTeJc!XsAe?vk$X!GA}tuSq*PNPJ&K3ksWA#Ew9k!cIy0NN49wu{RfiC=`YV`+rO1 z{r1^u8QfEA(Q73Fi3<1`ebY%X4@O$NGIeV2_~d4cyU<{$iDz#S_-u693|)6Ce50Vb zFtdC}?0SZOKM^^i;h{O_cpH;$4Vje958_WkCOm3Pr!UKaXfS3N;0H8o4Id zpmr-2MsBJl8fN}!Fh25Xjm;y}T?f}N?Xfb{`t1K9ja}v6Zhf=t)J2eL{S5)|opof~ z1Q813o9FFbQ?aJnvR`Nc2$$lL!QBN-M9-+e(pywrCAu(+W&Sz%sUc$eM?@o2ibcc! zPzh)uV=2Q#ks%SYVwqK0d7z0h?$E(mjD^aq)Q>>7 z^O6#{0_D-T1k3dOxSQi;M!6t7MqiLxC@8$HU~STnNy`(XwC#6_t&|uJ?exJhWpeoG z0mxPb-RG@K>6SX$$~^2J_BxS%vfg}#--TSBFfPBQL`?n`=XRM08x&fR=UyGka#2XS zVJ_JW)bogH5>U_4xRIF8Vrj9tRuh1KxBBWh&QVbxvh7pYLj+ke^9~!9 z+Qn|7v6Kav3~=y+O`aly2B&A^w#2sNKsWF==7g~$P2O}>w1c;D5hsFQ zCMKgskLT;tfTN@~lCCJ0>I zWS6sUEqj;ae7;?bqZ=0>9P@bsZ5Y2(&8#D$IbNTgWknM8EnZR-$3GyYBxcT!R*=i= z2d!&Z_Ug^Jwv%6-`U9_8SXTjQN|z}~&e$KK(Rmd4f^U%P$uAbgN4ER%Z8~vi0w1H{ z@4khiUjRVZ&UylRyHs00^(n+TRs80?sGljD1}sF=QaUneIr7hdUl2NuctC4iT~l6h zwAwcVGM|Avmv4@8gv z@@#Adu0pfG!FPOd6!|7Zd)Twu+znj+(@AY*_786A)OSm*J`AyZ{&ylO@`&6g zesL~EZsm4d(l~VHfuHqCVj%a%QvK85k8o9>c)7oZDz-}@S~_kaoTHN3mLKyOw^xcd z5*SJ+i&t#HKxsWjDpyw8ZfM4jup7e;@Mc*UMtNSlNDLW`!FXz$I??TJ5pt z8Qwvr_IcJh^K@(}jq!Co=-FMb!!nZ?}E_-fG7?I*6OCCXDTuMJ7IlO;Hd#ie3 z|CDW{;BZkR$)82Vzjp%Q5(7il*hf2-Ex%3Loti{UD79E%;2Q57KAI&XAOgO+V)7Qj z?RCCZ*h3+MrShNd!N|*8fS#(l4Q$tlQGy}SN?j=ji$z;MXCwr-8nazXw5Q)?3F|1H zVYZ)O)@~QI#xmBCszwR;VL8Kk1)aeimVf`ni9VtiYS*mHwvQMN2C+^(k`m8fkxoWbyv3T2K7ySp;XRv|T`L#4b`|70#FSs=-4PZj zUbI(u{mqcZHCP?5;#13hOB*ba{JbA;d-3+R(-KOT9N$EbjF~;Co%tfI=huS!@%Uz@ z#*s?MV=4>mVpl=*LrN==36I3R)V&c_-SAXyWg9`Ub_}4yBZn-gVnj-m5c%>PwMF<6Ys&o0%K_xf?ew8N_CHb;v}i)Qfat-Zaj|y-424T0aIoHJtm0 zI9!lA5?#}|%?sx+?&95FEo)^*sYDu(SELkZdN`?}pb^zoFwe@v#Dg0Xz^}%{A5Z@< zJ8!6;)j!xwqruUasn!94fkuJmV+AUB8BoE)(C>;@e&?NMeCI@7&Zn~x^lWRuRs?FO zki$!}ZWqQ4Bj%vh!mSnAinVnvJpw{Bm=$nWcTHT$#u)V(AD zt8K$X`YZjeV8UKH7&7IoKuOGE>jx?a8-BuD&)B^MWu)#8{`(aFS8G>xm*kV|H!F4Z zvN01?B}ra*#=vgLipY298y3u&)qS13LqlyHTE5mebUKUV8@9ZH-yQNDB> z=dPhTECgB=Vu`&IEh`it4_d5+!ZR`7KqUvfv} zA)Iz~Sv&#TE(ZRJer}e9ltNM0ItG;S@}hdJg`8HhvG$FmQ+HYnlG#kn3Eva&C<;Zc z{WwL@ZYnK;3;}*=SaCoSGcJET6Hvo;<&LFUOWmb!E9FJSJkj2W-~5FJZkUar23-Vn zUHJUV%!lBx2|#f!V`E4xK|frMo2<9gygo_K6Y~=68PT76p>8rhTph{gqqT$bAE_J( za&pAVHvDu(Gx07_rpgzhZ9*fru?F#*^yWB#6aqgbWeauhJ<)Oyd!;a|A3H8J>XU#0 z$$G?16MHAsZz9{sa1;TsfF?)0by1aZ{# z%e}3FI7f?28dv8maWEj5r4Y=HXw^4^8m3tG;>KI`>83F}0r`=oqj13Knzgu~jJHdQ znJix!rqKU%r{GiZqY<{vMIW5Csb4>PynutxeZbyHVb(<{wAvH}P}Az0Gq3bopDQeg zCZ8-dQ)om);<~dMm>|Z z5ep$Z^B4~G_N>kE^m}yO5wSjOkQ9X5eGoC;2QEA?5ugbl4^ips?sm?^!``&SmaE2S zcnJC`LDn@Gw(5}{oma*>eTe`c; zn)W6*5`1+I3b|tPG!%>oxzdKhmVLISJ~Vk!5iegsrc8u)L0M+lf90zdoZdjj-XCAa zim=4SKUp>juWE?%ZeC-;U+5Z+;W%SpS8fE{r6X|XeisNvD z8Q~RJt!~$k(u&-nki1)tyT!zX|LeLjIAkXAtKaryfV~2YZ8&BqXWyD?LDu^B*bzX@ zF{=2Jkz8p;LUP!wqbq;5JPZA?=-Q28V&EQXswWoc$Kk6>g23b*wgPS?l0qiJD3+zRdmfKM0nNwwQjf z5qda)BJoF$UeO$OTQYESoH&drOIeS{!}|zlyAUYT!y5Yz|8}!ePvSYJwoV3yT@_ha z3&-v5gP4pl5!?k4`9WQz)xz?z_0EeCDj`!i#1zn_S4fYbfDn9CKzDtVox*wZB(t6p z{;Mc_;2E~TeH(E@v{=rY70$kr`1%=>oNwOT$~1_liR5V=PY^a;z4B?H#OccGKgOQt z48yx~I`E5lT9=z;li{pwA6%@RubGhiRKZ!;+SxfUYk*L-EpsjDBSuT>oF$)YPxj-5 zEZ%n59R$i(&w3C27Uk);=X&Fn0yzf-`YFSBAwC_yWfIL<#vi3g1AmE69VwQQ#=Q(- zYGn~{9s4zZUA-yNnAK`Yf29{)55Zxepr1zVyxeca(BA_~Ft=*-2a`9|CU5RQ-9X3A zMUYx}#ia~!oMg-cDPFbxW_?>uVm`TD81o*?HTUo)AO9a>xk@iez@>fLX%ekG0}u%) zib$~DPGpctDj62~Rr{L%OS>I9TsF&4Lv5{2ux<139Lez4Ct~l3b7hzS% za|c5$sJcMg*+U~swo9B|UT%yE>7yco3{ev<9?1xv>Y|or#u)V|sRvO1O7bgj7)s~q zWmferZm0Y0fDhVKc$uR6!a#S`%;R9g0|l!1?eqZ|9DM3xdN)dj!y6DnF_Z+jvCt7tgfTeelMr|03C_bNz< z$yO6u9>6-xWO40-gVB?oE#cw<%s$Wi~pDG2Wba&Z&s`BEdEkhLmg^imBkAWM? zzo;H~MD~R#Cqw*=T;>g0wyO`(06K9IN2m02n#~E_FJS=0VkQRG1SeZym{qfOPNnWAmT62VGIm}t;RYTsB{t#gFz}lb)Jy@I} zOYr?>+Pw^$+)d4&LR5xh~&y*oTu9DT-PRg?zQmw2|tBcpMflo^ls^YlE9Cgj-2 zA)dMOe2$QTBjPdk@G{PO)aW!E($@bu(B+0iGRo=>HbdLdkEtJXTyIGzJ6|^n%ap^{@{k?q(?;&mhk(wy~OF+X8gudxnjomOHJ^O{DCL? zht(^?un!X=YfFnj3-jAnS_IX$pbKG)bSsJOVBfD5O&(V_)GDTvXsggqS3r<1TJNRO zC&t}yGR<66Cur;+5bh!)ljioeVS_+@((4XhNNg9Px%sT$-=m161vIbyakWt*(yBsG#Z)Oj3e5N@Vlq`zcDOu4vIXrA= zhJl#;;4_w7(zi|`MO{{Ae{Oce0E8^OLP-8ayu3tKY9%Wi%Xqej*@#*hX4U+{@8iZT z19F2bI&|@D?TxokhT1SOIV|wc%j$}4VO6X|K6BbnC=zD*K0?iJn7l4cLVl}N;`szy z#<0h`$LX-R(YfEKfDSk?-&~Ihxo0!ohXlz>o*UYOnc$>7CBLMy_(-2>3FEb{cd{E3(3k`c+)Fjyl)OVUF0erIGX?+YPqYBS2U z1Hw7hkRMMZSb4qvRGk2ak#ZLq{I(-_@r3Z5m|i|W^kM*_mjwt^VDK*jFcI3 zK0V|~;$KT}9`vY6#!a~@=TD?WX-2L^*zR}sWJRERSwt>7We%mG`lJFkLA@8cK27x- z#NkU6^}cEPY9@y<7O&-rh67V=JX1_R;ghVD>t+II;K1)H@AUgklcoNV`$@DTec6pB z;wfS-zUUzud#4aVhA2akK?_ZaX%uY%u`x?I(NKKAFQxJps2yR`>QV~*sTt)ajuQvU zAOuHe`YWnoZ$dLsW4iHGPpevX83`}EsRe#OLIB`M>dVxhtY)Z(@E$=>n5H|883Y$~ z;Wj-v>8iRu5xUx0bZaL&KTom0VCnwVf^Gjeun&&7{rCBxp?ZasBP0J3P6BNs8rbeX z2z!~4U|t&Id8-kUre2Lr(=~TL3fo6ZuE01O(hdGz0y3q9k)W{Y$#wh-h{udKKuB{~ znS@dRXbgud@Eeiv8>TbWF0gG5__4DXXL}H)R$~rC+g<4tVbd*wesf_dS%UkIT!9-x z?2{aIM+2Ko#Pi*G`dcf6am>3MSHUGNW2*#N9nZR}k-tecA9coNqQP3e)-&ElGzQV% zVVnrUmqlY{JY_kF@f@0HtE!D?OIIUJ7gD5WVuIG1dQWV2W&V3$3F@!0eN|)Zl3C-E zchXPIaI{%&t9eeebm)&06@{XPzhp?xxg*ta8>Z3?kV1gIU8iX#V-3WKW*~9c5E#vd z=JQzrTa^NARTJEBaV2PoF6B&&P!p9Zn6tPDv+zq0FCWnG8bRFE>y8mF4isd_w3Jck zehCa3S-?Rf36j&mGR|U)YCkC9*)E1cEwX%;-3HI_uI(oWcD zYc)8{SYY4;t=AM_a2na$Y;6&i-rWjA9BcUYVSoBbCfgllreCN7J_T$)@1;b_bw@mS zQ=ZolVY3P*Jz(E8r2HQ7&q;gc-scGd01?RJv1w$V^$~&Q3LNsNGA#bKVfXxcu`It1 zXnK8>t`eRwuJCz#CIVdn8kMRRQ!Ry~mZhtJbJ*_xrhxS5)9tSYrY^yN+%7Bs~;4nH$|(GurAT_0IXBdGFo}tD8&SOXm9` z(1oz(Xg!0U?{||l3Rq8d0Bh}PENf~btSld!(zhB!d+T*PMIDh;ERL2#Y4vYagH`Dz zOPmB{h)$u@aV#4++e*>%GZ`B^G0vRGKlsFUAX6nT%<3B8_J4JK1ys~o*f-rBBCR4_ zN`s^b2uPQ-$P6WtgHjR_B9c;qfP{3YGzfwyN;7mLNP~0;Qs4d0;O_hGdB5GGp53!E zcW*uSd4BQmIbXhLn>o*p-ZX@U_*689Sz5>eeo|rp3QZ^x!b%V|4rmYMR34oKc{C{L z7?N;OcpHX?n&(4i+{$p&*pj)`!91v-d31h@+Y4PF=lb-Dxep0MLW%M-ihdDdT%;-C zJWU6w**YSR-#yC(yUy~yD{STB94fbmWLJu%*~h)eT0>_Ejl`y~N7WY|EZJ!Ux8F$O ztmIVBh+&^jVAuA85u!96Y3W8Ga&$Kei;8^Ci{G;PpJbvZSptSPl(Ors5w33U0h#%r zu4JGsw10sBdIZ@+AB`U^w7&}rHSnH-ieH9Wh1-+L***FKM^}g9*t9`REYtw8eP9$Q z?xc#M-WYB8$l%ex9{mByBB9&SVi=j^H{HI)miMtaY8LBG7-*L$}eoneB@iyp3-{DD0_RuKJ1aCY2 z%9f+@$9A!yjwuC6ERHdhgfy0(NaO}0ohZFr1B&dzD;!9*#5M^l!ZiWrKyNo39!ad@ zZ%|HRBc^gMN35~PAliU~)lG<1f z7eECnO1j=;$9oKa;06W{r=e=`#nti%lPj&{+erz?l{WHxfCdx$fLtMA^f(|;88O4* zBMs}%mEf(lMGY|7x*KXkX8txi$yOM_S9+!B&Y`B>&$73_3Jki5{ZXnRK*rkm^qHw7 zKQ=I3Ks~cISXjK<)cZ_&8b(UDR#AhzFZV?yBw!G{^d!Dqos4?JhTtb)Bdh^eqLcW6 zR<%rlF;x$-mA^oR@Sov!rB^77D^P|zqVj4mhMm%s!NBXJ+DK|&6jUco#2?%smbxKS zR$FBD-Fq9G=MdAk&+YFh%7`rvEuyq5zIyCeSgJ-kE*>Sh!H5H%UNvAgkhZleR?tq) zUaq>YH&tVZOmm>w`b)}mBPU26TdNtCo$Qul$+FSg|8)sdmC(}^e2X}7CvxLY`TReGK3W6LVwM_4j+h* zw$KP|I>>%&`s*lChUsSoFJnXcae$hiytbeGNh~WAs1hOQb`5jSeogYb@D*7o{p1Os)t$rFO0U^$tSw--ZHzF-fj>^5Yebs z|GfFC%lOAX=IjGiajeKz^6AP|K*f1LR9rU$tEMeIZ5@eiPLVDg1wegwiE}N>>atXl zyaaAYB#Vp0u0CM;$;kjIal}2_21&WZf9fjja50A;{g7PQZw^lE70kXz+V@1-x#3hK zORo{AtouLkxmwroRS#=El4rXS;Qtyd-AbnoK8eT`5)meu)-wvaJ09K6DbW6-3!dp9#q7!AzMKNWX^z<>B%izDc&d59d*YB^jN__ zLLjoz`FKK}tgQT7NFi?;ATyLhF<4{Jn6@HB03Z-&B#XjrwyOf&3AyoQ7lan;-6FJg=A} zt~1s~VFx2{IbA`;cVPeuT>oZDP{w(Sd^Lli9E}ZyBJ2=-I)OKTP`t{7^J+6QVS3El ztC`uvU->u>f_xO3k|Q-pHSH7!=^1-r<~Rc+Xr`P{=buFH?+r7O{EwatO9M8H~2 zdl^i)Mf%{|Ka>IbU?!$M1u=ex=PI(APr7?s4dV<#hDIaAqeQ*!bR@O@hG2RDQH028 zlVyB&p{lLN03dC%DtV655ZvXcYeLXYZYQ^m4QSrW zB2_MBUMq-$^NOu6R^7T<9(NhpN)gshVJ9a9(aD#~HG6oi7Lo>&SJQ|sQHv$etYFUW znYh$a3IlavohZ&|b5V+d-p_0O*<}^~$Ssm%lugtQ>8=Ae{M*V1vP&}xWkKMt6jP@(j^+_g6T(5$HDxm{))g{L9qlQ z*feNFM@fR+Ei?0PzPpMe@0Pa74y;}@xH#%W)z7eej%|bPp-R%^l&rzB<2S~WBKXQ2 zTh_U%LkV#KP9?sAh&8#rDbHo`dG8H*vr zPs@y&Tb@{Gpp+wI%NZLc2?qMTCy#TNC{h&NuXvPRXJ=7+R9n>CcaCfm2M=Za66GyC zy}kqCfcz0R;{rR|Ff8Gj9xOGg(0c;L*jqqrwl5>uWZtF5%2Vi(N2w2?0t(r3#gGt5 zPA6U~5NvmKkW3j|?jKH-SZ8i^DW*o=f&3vr5+OpFypzw8vq1;()^@Hm4D00=5ZIIM! z`V$_a81A%DCZIhA(v27&mNTfwMZJ%l8QCz)5E{h zIP~sf6Rh29qw1O?AhDxl;Q5hdY1mz+UI!%MQSzKB0XrmUSuh*&d(fV@BH>HEXx>?U zQvkjYAY^ChmM?v*%hmSkIZMrU{h|7ZJymiqg<3`PQygaomnf%Jqi6otGM!d_(ZNrS&(wM(ztTF|OXF za~m@d>m4OAkIkCkl(EdK_jw7Ab@!#({wIUbwkO}al{L%U1EE=lD#>l)YnKn#Vd5@c z&&%I11!_iNVM!3Z`wSP*y7C-l$?v$w605GrvD8o8d7?$Me0fIIF2l z&92w~C3F4H@0)ChMuXjk_S>#;)tkC@r&mP)cWJNy?Fx_yu>pJ|e4$ZP-;2$_k_OTx zy+FWPAJ-)58*n!Q-;6pz*>inB@^1y32mRXdWV?r!^iXEvb~-k+FNl{1p-{6!9lN^+ zRu3W(pFCrKy)pyRx;ueib5YVd7?9TOFAmh$f?^kt^Pxcx z1og@sZ}b~{vUZz?Bx#<;C@2#(%AI8n!58YSOr0yHPzWX>Tb?c@kZRx0U(fFBE#Mga zrt+!ktnQM9aA}Y`$ML`E_C+>LG1%pn-#Soyoc&#&+3LJkmO-%SNBFkfyN@2|ki{V| zv-=LvA+zOPQSbWcyI$G$)I=*40MAbqC7Ef(_WzW$)4a;&HPKZ1&X@yIm0L-Bu7)M6 z=La}TIG&rZWQOCyntSk&c0#Rp>KJ90B-CA}4ka5t=^n{)b?-KB?!;7Bfkj zOi*u2s&qKNktUMm&IInf+s4}3I>7DZix$|4#J4rGcdNox@cjEn@7gX^RTsw=2rs%N zu*4s?(QeKWxk%<81zv0awXNr#Oe(Tju`gUSg2dLVECv^zOCoqSJDA)@nB&uTNtNFb z4)+!2Z*)Jm&f`>MzhU~9@8wc4d@eM$%kjd@z+N%izo?vY4L1VoJ{gOZyAgGsTrF0* zSzxgl<{6t2Bp|xUNS3D8Fjzm_9J9zcAfpLsp%kSspWpB8z%yl+?(VHI!Z^&|a#WM9 zqJdpp*qiuw;~Sp1eGzr@xLX7?!YQmFq5C?w{ajm%8^+xJ#PLqI(N6cDlRZQv;AhB* zCl|t0qBMUfiGHX;i6YWsf)w}tXVl#RLO}aFRlRU|HC5u*?zE@)Q5EE$h|C{2$sjIC zj^m274T)Ahv#_H()IC) zN|emUVPR4|bu+;odlZVTNH`KN{^_l>|kd}nbyuijB?A7x)y!@q7X<{d)*R*rJ z(ea>{zNKrz zjRaGexXRzXC(EkNd1`65&Xn7x9QZU~GA z=GSFIcv}6TDcxFluqjg233#UA6AVtN$D1kC-*NHvx3wSDq4a!gNi^G}8ii`)T*sda zR#=s@okOCRo+bKD^L>z`tebVguAZ`1leApG4~gTYXr-NwLu)Y>h;X!eh);g|Dwy1# zIq5@Lf?~+(I+cE4^IQbmg5+u$4T+PQctxe6yZLI&m*AWwh0~dgl0S2!lH|IP2I|KJ zl}y^*5OM*P`XD1=TZvk%Kr>8>HR#d+6WApjZ;LYh=+->-!rd+uCj8NjVakqyCOcn{zb&r7j-i}L59^(dU5HM3#r6r z;P~oOiFGxP;oW+BVO$6kE+a14@OS}N3-i@Fg+olNM-`1$kRql}?vA-j>s~{LUg8^#{+q4R+mx+IE@vi=&wZ zgLio}03Et?BcS6eB!{pOy8*1eY~T55=v{>_eBj|;M{&sUTU0Z_Si-7#PFlS!@Oayy zY6(DJIX(D%T@QHpFd<$v5GhS&Xx1drNxKfgwIUAeNVNxKU9>I(j}ksmqQ}4=K}Sdc z-P~7@jzAp=sS;^EK%P z6+?>cWZpcq-Pul9l7wa#O2{743((nd-nbOQtewD2;RnP2i_f!lNwz+ZG1#L$&&~K?k-U#J=Zl(m>>#(po7eqI-awv3CwXV#zbklB_65TkS?t z7+YrAalmaqjJ!E$+wH{UE=4`tEQ^XXJ`K>zFYHA5OjwYAI@+*mIeye~4ZDYbYapI; z-XWa^9*{)-lw$)%t-s7=MT8B%>bEqC!&($^=|{uhCpSPAR+&1f2e1N254HIeEwwqs zbd?TKxoMX$8PRDtq5#abB$z}3eG2{4VN|8AS1P#cJbE<^;jwvNdqFF}y;8TJJ5YfF zXkNQ*0fPa-Z)A7V29!a;l{H!7HNwIU-&NZ-x_JXF>zeXMfzNz_66s$a8-H*A!L2(PeicMuC?NBw$lI_q^Pslvu>D#qz6yd%nKf#kiQx~paI1?*z*_GFT%TDa@M?e0jpw<>aTJ{>cJ7c$u>Vn8Y2zxlpe?&k=E*RF)h1y z>}7TPgmW5Qddb`LIu0CRpiCtC+Sx-q|CJ%Ut^jd_+V{)MFy!OtPh{A0}jB(>Ay!@{}wU7o{-D}Z0c7{0|Zy00@zN> z^j-$#$B%8rqpm3oaXjBqraWN66na35AEjjJo07@)sGz~kt9&?Bys!HsUz5Rg5o)wu z4r!d!ON)E`z7d^0xQV&tTPm?Kob8S{&nzCzuhfVEXaDU_7|yNeJVFrU5zLRQ5;zT} zQ|&C9AYtN1x4JkZ{m|p$7wa0m*P?o7EtVadO)t3BSfomPnLXFPu!nfNZxgq74#5I* z1>Kb6_^wBTi&L4dpp{&WE_(|~k9wAqdV$Ks zPP^BM{++OI3^Id(Yz^ zcPt=k=t>D%P2-pf_fggvqEmILvSF={ZUX_pdA;ZsB-v!U3i3M*OB%%s2~!j(5xIT9>aFo#5KNyi)zhRfRB2C z=&DEe4<9Gy`D~eC+$Wm7xJhcfrU9W?&AkF&T}3ERYx!#Xe9XfHO} z)_Lqk-6>NF-;*j40|xI~r5NNN(D#HEdbHY{2;n%ecAi4sJg9Arl9W&2ud&qQhIY@? zr@c9uKi!J^Mk5~Qvm->f^rgy^&xJ{$On%9`JZcNPP?fvo!;zYq(@f$; zz$SOT_cXU>lid^ZOx;_Ac<2Vh&RaIs%0&`~ zOogyD#z?Hq&WJP-k|D0zipn3(5&e(th6 zf{SwgtVSDf{ASHrW*JWWHjp+PqLhos3?FN9#g;g^a)9XQr!|2~jcZFk;MTe4_T*6+ z4wW%h{QwG(04z1nZv9iot+`$)`h>j%8Z^ltTcD9h&}*-9kLUs-z%suNnOi^4uM+p- zIiR&sdLhvJ;@Gdi5Rs%UC2S1N?rwFckVn4XJnV;8K{;v`_Y}9lEFgoZy|jt5r$w2r z%5S4IqX*#)+P};t%LGczPpQl3^`u^B;tDW6Q^o&C?~FitXg>b#^Y^*xhULEdOz8gO z5U&-YO~ib)@YAd?Bh|8O+hQQC^A+^~%Vtz$v>|-E1!HEnWNRn5r1ZvF?>x`GYD{-D z_kKoS9M@)vuir|3ktnB}-Z|F!X>HDT;n!@C<^rTb9Rj0YsO4Myb5O_~Zaq0x*0s@J zyQ?P)C|M{1PWYD97^UhM9r-dendK-0>sb^BN`?MWZSnj`m}8QRj$MwG{P=V8iO*vm2=m{Ki#!>qJ4vH zO1tl)_NuV(Z{rrOsmd;UB6PEj46ry@-ponS(&Pv zBK?3OOicJv(auTe5j|HRtJmOmy?phMZ;$W74v4;Tuosy;d+6W`;B(y6qdgkmTeO5Z zLUD}OGOT*5!{?fU*M*Yi6?fW5Tj%f)^LTTtwU|I>Lt!$vi2F<|iznVK6vX$Ai@xu4 z0}}UyJ`NTO)PWR!-PNYpZ3bwPCKq41V&4J*4eu4oPUyYHMgG!lapMqDJt+mkCG!@k?=xO~#w(U`2Y-?&>okp6j+7v7EWY4_}=VjitvmHh>D1Kaos0(iFp+CAYH!?Xt;3b43M30qv zgyzS=ZUE)^t>l^uidvBmn^6brjGb9f?&Z?m`>O@+p^4Q-HW^KAFF;1hTNaF;VJG?bypZf<;0p%jraw2>t@aYxRDxA~y=}u0?OVOe7 zF6|Vp=d@gfW{>*N)F*bDmtDTco9Ih|KvKy+I&ZefnuvgpEw^dQ)t# zspjj;(3MvT#_MR?u=Psj41vt&l|8`khy6p}<(7%O3T0xjt zVvd5n)!U7YYI2W2=v4`_*5m59U_5!0E0h8-Xa{&gz7rXMq}VP9K34}f6TLySw7+4D z0o_a)v|1J3bS%?-jlzQR+ za6g^LznON?V`o89X~X=pkI^{b&T8tJ?Fc zku;aT7m?aZf-znq{~g0FHr*+|l_W7I_t@Z}1n8#4%;aJ0781s}&`)FD@coHZ;yh5l zg{<$JOoD`73$i!>%ohHIo4N*@lfA-@YAoy%?k}4U2`}vzh2Yt#(t$5;+qF}3p)J0b zD{l3u=la(STX4CSo}kL!4Q*sPSXp(T@9-^K*ppcW&yX15p|$r1i)o#UF5OoNVB%$=)xm zOLT%<#Ic%*Ex1yN2C~h*-JfwErl%O${E4sX)X$%5KXhEybYYCw1hgf~I;pI?1V zK-zr$y~S6cDSVDQt53dG&yX#5))sj8Nk z4N4{$O6?HuD$kOpZcv3au?e+Na&dtrX3E}GoCd5QjPdic&(_Ki`W<%6|0M?4`_$^Aq#X ze6A8-6xsgduY~N9$S#hOQae+Hpti;*ph>Jz;TkW9SW}KN`q=G_>NqByga!&gm$q2# zQkG>sfw_sAlQ9%j=i1Yj$f|0gYFT+AqV$Z#A)pBKCz+3Y8Jk~MjIb#OFj{1d{s2Y7 z2ZLPA0Z#z_iH>4<)XQIf-8~UwmEaQeljlQKx?`YP6$UjF@X?NmAsg{$&DNA@+0-{^ zQFaESKR0Af^I z5f;JN)vCsYuRh#M9Np$+XeBje5>XsMEiG-HxAY4L?y~!W8*Z8OW}hYK!*0h|)E5q5lNy!&Kig8OM3tTO98E>jQ=T zXqX7J@ZirPzo`&JGx+NSI?ElPDI*Dto`q&xK~Ox6(>mkj^(JSiCryZrFdi_P?G)yl zFFMTdeR;;edo%O#Oe;-NS!YZATR)IoA^wwGmA z!bZmFqNN|VQ?qxbN^)FEe}NF}?w0s4l%)sNHV=62NsFSNT6k*?kL5!HY}{0Q^EA{V zXK||IY6bfAc5MGWy^-m3P8@^jbAghwcD@j-4Ya7Ns{1DmFi|tvyrn3-OohkN06p*c zI_k=kU5zDXiZZehXy6Fmmsd(@H$&<3XYg=MjuA;dQLUFBC9#d6+W+Cei3eCmp|qZ2 zY~-uhq>B&(+zKc9_B*6wmHd3rDU({lX4c#{9-!o8PUwS+=_mcl{R+RRDp_PP|Ccu- zDEV3QaU)5f=HV=g0G!CUUHyq}Qeh2)ex%e%t}>1v30fbyX90SSXbsSFnWQ4R?VI96 zzEXlONIb&N8&H)kl5>9?IYe%H1tzkJ8j4PV!{y3JPkTyhAbZTP+yfF3}SnVrISzdg}Qv$r?9 zJ~-cE)lpe`A*{-7Y!TJM5^~&Y)AdNwWw3${mb}+8W~b5>L)9lj_ZD?)z?SeL0rc-! zghEjlh$^-a%&Pd9w7M|opB~IQsFGCbde%wiyTZXWcQQ@fBTa+;714Qf^OEgQ{WaNS zv_2xEd_~(+i$n5z3M2{d#xuG!;ZiPF8~?)bNvY6-@irRJ!NWyz1q=e3Qh-4m8?yMZ z95JJnrM;&rlCdJA56kb^m+61k!0EmU@c(?~U^hGOKr!~I_d(naBwpv_jKh~t6zuBz ziUcz003g7O+#aXDpxTkyp1ZhGT!n6BcgA_%$__~-Czu)SGvnp*fE+aS3;g!|css7n zvV(uV}H?)*fDz3zhYn!=z_4qEx>T}D1tGoIWC%H9Y zTDLVdz=jARX$0;Ls_^x~dI$<%pQp0xpOskm9%@2Mb@o!zHJ^;ZSh7cQ1a!=Gsmnx& z%`m4X;f}o}c=~)F^jNr+lSNfSUV=~Q+t;O&0%>BdlwT@Z)K^o14|cfO0RfSS8;)l& zn!^oOWKc8lE6noI1Hd$#2jS4O@Ip0Z>RM!6w^p2sco}8RN#$g zQwMztKFi!|Abpi-rKzufO$V5-R3*`2LmN9O~7YY3@H+8 za=(OMBY??ZQ@q5Zm~qldfl48yWZu1;H+Qsiw)7Y#LLXhx`zKc$^XtliyH9Bicd{U% zMUq{>`S#9~l1EGTKgrN&j)1yZh3?Q!ZX3l#WWIWEotKaO2EuqC2c@x-*Y^WWv>^R% zZ8va3n(_ZEeec-mv#2wNqI=J7LiI8QA)iRZKPl6{_7JM0YV7J6IK6!-X&m5J}q?}*5w(^7M6}V zqg^s&WC3uo_$N^317=}03^9NZa9TV`w0voe2DjJ%n*HTUdvJju2_u-3`Ug#ix=ti5{zz-|!0c#*r=U>EVK;rvzhSqQ z&&MG%sM{C_eSl0bI}>A_u&pq+RW{o!En^Qg5umMH`dh@^>LISm>M0Z7NP8CwWm=H( zf^&fFdCf(rUEcR0?TN%EwSdN0S}M~&aQ#~>Ua9z0Bwr=1SxJRTPHQsdZ%e3tXAb5~ zNc$C_`3S>#9R!j>q1VjUkWF8jE7#{-F1E0pqVk^@(y=3UvvKu_i4{qe$40OP?mDl@ zcyXfMwu8@fMt?Jt*vPo=#%aI&;CJ*2#)(dRVqJwX^~b_WGgh@5nYuvd4oKMYJ=DR_9UW9^LB$T#HV|~dsA7N95 zjVFTO$Tt2~){{BC0Xm#KlIOe;z!{2~gbn^Kkk4PBZfJdTpM1i91+9e0TL>dktt@0X z0)b>|EDR{gM^h=gSaH}CNFz-!ZW^9y*gQ$ z8>5(DKi>WdI7PR&xyh(C*w23{uyUG5&87o=|MU;zMN5uz%P{n5flD0Ga*^G~vVrgw z1-XJv@l>6YfFpVw;1$MhS$x`I)czPX4yf9V2eli1VY|)EkN!A2k~^Ch^go*I@ju#; zJ0A8w*^xV$*YZED_WzS~wzF|I?|(AS${zf2Mr^6^q(kmx=j`lR7cshPIamIMId4{2_j*UZu zfq_AQp`>hNJiV^1Qh$V|F5vmlanf)+eEb^43GEDde%z~+ zny-Ok6kHW>tKXUL)cC$*8N0zHuO98C#WF3HrR1zxQ;V^5^(G6a(9f9ftrvfFXA8E@ zGhF_3hhec!%YJNwv3L74XgL_~tytAOS>k@oej084O6))(;`-}(`;HvVAzqn^@u59O zXS}s`SmN7NgNM6=<+q<=S8W@xKLw81HKyLUy>{== z>(jw2Gs08MD>tlptu|m!A2jG@J(7RFjhyaJ7EnS;_CM88^}CjG#3T@5%CS?zOFb;V zENI1&MzPaNi^I|o_tj2*!6$P-c>RyD)^g9~6TPmRZyF6p?uQQ6zj9gVC9!J8n*E_n z{K2_d;FOzhb*{HY5Ia@nXz$%;i7l8Czn0&VLe3{Ve^SH9{H8osj*Z)boRlPvScyxG zj+?C`KWx(uxDfrGrVz7Iu}YiB#%Gx8a4-DMpfSJIQpbBd2lw=9pTnP0^)P^cRN&#< zt8suC5T4|oQcP_zoBjEC@V=2slr`Qbxk;#Y?1vKjv#M8*WUSb~nHwE3c27&caT2go zHGdwLFE-o9@@NWnFJR?hYv(Ay@q{xJ6(&U!3~+_ z`(`WB^L%CQAoBOKI(B128dsbTo_L@aktd^la65)O`1#a38=s&3*75ez${9Wj9&W_^ z-)A~0{3BBnILp-FT!UkcVd(~UbQctWeouQ@>-6OsiM)RcGW{Ap@^Y9keCq_qRr2X2WSYGUI|;3eExVr0%%hw7;z`Ot#t8=P&eo zheT9qUX3lml)%I>w@Fm>3vrV4~#c%lp{b?ZJI#=LgXBjnwH?`yx+qoZ!NG zPq+7J&hiT-{;&(YPa3bjwppHhI5J)__U>^U1>eEX{;6)hFP#(HcYOK6qS}%kUtY+i zw5PLY=)kLw6d$;$oy)Orh?rMoFvT-%!IQ67cP@8K_kQuYI5BQ0v41rLM@@lF5$H$j#wG*An_sRM0o(4W{ zXwx$Nib-kedsp=3Yp>j=qHggs_mR~rTR7g*PH9MLDNGB~K-=8X7MCTsh>|z0^^#SJ z^>gA=tw{ahyUi)>-HI_ERPcrwNj`iQOSyWNyq2DiED+&Tcs(`0sHo60P;E1p;Y1^s zC;z(qUapjmD}VlkTVJ%o;{LkdeufgFTZU(!#iGqn@7uD!q1^vIMORr~XO)0OJpc>L zfL>hmLHeIdj5<`6u`*;q*GNL%QO#qBY8NQt-Z8(+D?ov}!$w8bQc6@U7=jrig|I41 z=l9=e(|lt`^Vlh)YUir*1H5)v$FB{Hx26^00^PIMv>fP)e;SA4)%P_xP`u=-Qy3A3 zrLQMvrAnVFB0MJTeI-uHBsR&f)tfIBD8abZXc^}2G}~2)eb)WiaVIe=Ux+@OC(*^^ z($BU_5A6+~yw}pKSoES3|E*NoHA`6fgT%!Xar&RD0*~=}Ne?F2gAJ|=n53zqvl9aD zgs{~2a)G;>L#L=DPDAs{H3~30xGB2;-`$K{#(Tu(E|}I@3`M7LwkCb!!kS}h8C0|( z8pWPd^*!lH#Z%Fg@0Zf{M&g-ud}*)@@HOu~o78>x88ec`1`7@3Eil^orvQxKjBIvxyAWSOp)jFWIj4 zBCcz2q+g5Z`8ay~*@mdKU4w{H@&k_l_cXS)Ndp+$ZNLY5UM}1Fb)=wa8uTf)Yxac1 zUVJX_{@sP11D|hnXN=ujl+Ejnav$o4G#UICUd+f@_=AO{VM>hF9rt8*;?Dp*~MMZ%Ebj**8hGwI`MY)I{5E+!Cj{O`%&;`0Oq^@`Dtrs zH~9bc@no}9HVQlpj8snaM*jVV0L)G>Jb2X+cJPOA^zYaIuP?y%7`+zMgn^M)fP-=I z@2A0^Re_`gs4swyy}KP8j&K)5{qcW(%YV~}zh4x9`K|Ro$;E#c;J;D(-;btr{I3}P z-w*yb3jX`Spw55(&;Q26|9<$txBTA^Pj{g{{QtT0|NWl-UZj7&r=|P Date: Tue, 10 Dec 2024 13:52:11 -0500 Subject: [PATCH 23/50] in-progress check-in --- python/altrios/demos/sim_manager_demo.py | 4 +- python/altrios/lifts/lifts_simulator.py | 118 ++++++++++------------- python/altrios/lifts/parameters.py | 4 +- 3 files changed, 58 insertions(+), 68 deletions(-) diff --git a/python/altrios/demos/sim_manager_demo.py b/python/altrios/demos/sim_manager_demo.py index 70b6048a..7e738dc1 100644 --- a/python/altrios/demos/sim_manager_demo.py +++ b/python/altrios/demos/sim_manager_demo.py @@ -4,6 +4,7 @@ import altrios as alt from altrios.lifts import lifts_simulator import numpy as np +import polars as pl import matplotlib.pyplot as plt import time import seaborn as sns @@ -57,8 +58,9 @@ debug=True, ) +train_consist_plan_csv = pl.read_csv('C:/Users/mbruchon/Downloads/simulation_operation/lifts/results/train_consist_plan.csv') container_data = lifts_simulator.run_simulation( - train_consist_plan = train_consist_plan, + train_consist_plan = train_consist_plan_csv, terminal = "Allouez") t1_main = time.perf_counter() diff --git a/python/altrios/lifts/lifts_simulator.py b/python/altrios/lifts/lifts_simulator.py index b636c8d7..a477d36e 100644 --- a/python/altrios/lifts/lifts_simulator.py +++ b/python/altrios/lifts/lifts_simulator.py @@ -8,12 +8,6 @@ from altrios.lifts.schedule import * from altrios.lifts.vehicle_performance import record_vehicle_event, save_average_times, save_vehicle_logs - -# Test input -CRANE_NUMBER = 1 -HOSTLER_NUMBER = 1 - - # import sys # # if len(sys.argv) < 3: @@ -21,25 +15,25 @@ # # HOSTLER_NUMBER = int(sys.argv[1]) # CRANE_NUMBER = int(sys.argv[2]) -TRUCK_NUMBERS = 1000 def record_event(container_id, event_type, timestamp): global state + if container_id is None: + x = 5 if container_id not in state.container_events: state.container_events[container_id] = {} state.container_events[container_id][event_type] = timestamp -def handle_truck_arrivals(env, in_gate_resource, truck_numbers): +def handle_truck_arrivals(env, in_gate_resource): global state truck_id = 1 - truck_processed = 0 state.TRUCK_ARRIVAL_MEAN = abs(state.TRAIN_ARRIVAL_HR - state.previous_train_departure) / max(state.INBOUND_CONTAINER_NUMBER, state.OUTBOUND_CONTAINER_NUMBER) print(f"current time is {env.now}") print(f"next TRAIN_ARRIVAL_HR:{state.TRAIN_ARRIVAL_HR}") print(f"TRUCK_ARRIVAL_MEAN IS {state.TRUCK_ARRIVAL_MEAN}") - while truck_id <= TRUCK_NUMBERS: + while truck_id <= state.TRUCK_NUMBERS: inter_arrival_time = random.expovariate(1 / state.TRUCK_ARRIVAL_MEAN) yield env.timeout(inter_arrival_time) state.truck_arrival_time.append(env.now) @@ -47,7 +41,7 @@ def handle_truck_arrivals(env, in_gate_resource, truck_numbers): env.process(truck_through_gate(env, in_gate_resource, truck_id)) truck_id += 1 - if truck_id > TRUCK_NUMBERS: + if truck_id > state.TRUCK_NUMBERS: # print(f"truck_id = {truck_id} vs TRUCK_NUM = {TRUCK_NUMBERS}") if not state.all_trucks_ready_event.triggered: state.all_trucks_ready_event.succeed() @@ -85,6 +79,8 @@ def handle_container(env, truck_id): global state container_id = state.outbound_container_id_counter + if container_id is None: + x = 5 state.outbound_container_id_counter += 1 record_event(container_id, 'truck_arrival', env.now) @@ -93,7 +89,7 @@ def handle_container(env, truck_id): record_event(container_id, 'truck_drop_off', env.now) # print(f"{env.now}: Truck {truck_id} drops outbound container {container_id}.") - last_leave_time = env.now + state.last_leave_time = env.now def empty_truck(env, truck_id): @@ -103,7 +99,7 @@ def empty_truck(env, truck_id): yield env.timeout(d_t_dist / (2 * state.TRUCK_SPEED_LIMIT)) # print(f"{env.now}: Empty truck {truck_id} arrives.") - last_leave_time = env.now + state.last_leave_time = env.now def train_arrival(env, train_timetable, train_processing, cranes, hostlers, chassis, in_gate_resource, outbound_containers_store, truck_store, out_gate_resource): @@ -133,7 +129,7 @@ def train_arrival(env, train_timetable, train_processing, cranes, hostlers, chas # Trucks enter until the precious train departs, if not the first truck state.previous_train_departure = train_timetable[i-1]['departure_time'] if i > 0 else 0 print(f"Schedule {state.TRUCK_NUMBERS} Trucks arriving between previous train departure at {state.previous_train_departure} and current train arrival at {state.TRAIN_ARRIVAL_HR}") - env.process(handle_truck_arrivals(env, in_gate_resource, outbound_containers_store)) + env.process(handle_truck_arrivals(env, in_gate_resource)) # Trains arrive according to the timetable, fix negative delay bug delay = state.TRAIN_ARRIVAL_HR - env.now @@ -153,7 +149,7 @@ def train_arrival(env, train_timetable, train_processing, cranes, hostlers, chas with train_processing.request() as request: yield request state.oc_chassis_filled_event = env.event() - yield env.process(process_train(env, train_id, cranes, hostlers, chassis, in_gate_resource, outbound_containers_store, truck_store, train_processing, out_gate_resource)) + yield env.process(process_train(env, train_id, cranes, hostlers, chassis, in_gate_resource, outbound_containers_store, truck_store, train_processing, state.oc_chassis_filled_event, out_gate_resource)) state.train_id_counter += 1 state.record_oc_label += state.OUTBOUND_CONTAINER_NUMBER @@ -161,7 +157,7 @@ def train_arrival(env, train_timetable, train_processing, cranes, hostlers, chas # print("oc_variance in train_process:", oc_variance) -def process_train(env, train_id, cranes, hostlers, chassis, in_gate_resource, outbound_containers_store, truck_store, train_processing, out_gate_resource): +def process_train(env, train_id, cranes, hostlers, chassis, in_gate_resource, outbound_containers_store, truck_store, train_processing, oc_chassis_filled_event, out_gate_resource): global state start_time = env.now @@ -172,7 +168,7 @@ def process_train(env, train_id, cranes, hostlers, chassis, in_gate_resource, ou # if train_id < TRAIN_NUMBERS: for chassis_id in range(1, int(state.INBOUND_CONTAINER_NUMBER) + 1): - unload_process = env.process(crane_and_chassis(env, train_id, 'unload', cranes, hostlers, chassis, truck_store, train_processing, outbound_containers_store, in_gate_resource, out_gate_resource)) + unload_process = env.process(crane_and_chassis(env, train_id, 'unload', cranes, hostlers, chassis, truck_store, train_processing, outbound_containers_store, in_gate_resource, out_gate_resource, oc_chassis_filled_event)) unload_processes.append(unload_process) # All IC are processed @@ -185,7 +181,7 @@ def process_train(env, train_id, cranes, hostlers, chassis, in_gate_resource, ou chassis_id, current_inbound_id = result chassis_inbound_ids.append((chassis_id, current_inbound_id)) env.process(hostler_transfer(env, hostlers, 'inbound', chassis, chassis_id, current_inbound_id, truck_store, cranes, - train_processing, outbound_containers_store, in_gate_resource, + train_processing, outbound_containers_store, in_gate_resource, oc_chassis_filled_event, out_gate_resource)) # # Once all OC are dropped by hostlers, crane start working @@ -198,7 +194,7 @@ def process_train(env, train_id, cranes, hostlers, chassis, in_gate_resource, ou # Cranes move all OC to chassis load_processes = [] for chassis_id in range(1, state.OUTBOUND_CONTAINER_NUMBER + 1): - load_process = env.process(crane_and_chassis(env, train_id, 'load', cranes, hostlers, chassis, truck_store, train_processing, outbound_containers_store, in_gate_resource, out_gate_resource, chassis_id=chassis_id)) + load_process = env.process(crane_and_chassis(env, train_id, 'load', cranes, hostlers, chassis, truck_store, train_processing, outbound_containers_store, in_gate_resource, oc_chassis_filled_event, out_gate_resource, chassis_id=chassis_id)) load_processes.append(load_process) yield simpy.events.AllOf(env, load_processes) @@ -216,7 +212,7 @@ def process_train(env, train_id, cranes, hostlers, chassis, in_gate_resource, ou state.oc_variance += state.OUTBOUND_CONTAINER_NUMBER -def crane_and_chassis(env, train_id, action, cranes, hostlers, chassis, truck_store, train_processing, outbound_containers_store, in_gate_resource, out_gate_resource, chassis_id=None): +def crane_and_chassis(env, train_id, action, cranes, hostlers, chassis, truck_store, train_processing, outbound_containers_store, in_gate_resource, out_gate_resource, oc_chassis_filled_event, chassis_id=None): global state # # Print before requesting crane resource @@ -263,7 +259,7 @@ def crane_and_chassis(env, train_id, action, cranes, hostlers, chassis, truck_st record_vehicle_event('crane', state.crane_id_counter, 'end', end_time) # performance record: ending # hostler picks up IC - env.process(hostler_transfer(env, hostlers, 'inbound', chassis, chassis_id, current_inbound_id, truck_store, cranes, train_processing, outbound_containers_store, in_gate_resource, out_gate_resource)) + env.process(hostler_transfer(env, hostlers, 'inbound', chassis, chassis_id, current_inbound_id, truck_store, cranes, train_processing, outbound_containers_store, in_gate_resource, oc_chassis_filled_event, out_gate_resource)) return chassis_id, current_inbound_id @@ -298,21 +294,25 @@ def crane_and_chassis(env, train_id, action, cranes, hostlers, chassis, truck_st # print(f"[{env.now}] Crane {crane_id_counter} has released crane resource. Available cranes: {cranes.count}/{cranes.capacity}") -def hostler_transfer(env, hostlers, container_type, chassis, chassis_id, container_id, truck_store, cranes, train_processing, outbound_containers_store, in_gate_resource, out_gate_resource): +def hostler_transfer(env, hostlers, container_type, chassis, chassis_id, container_id, truck_store, cranes, train_processing, outbound_containers_store, in_gate_resource, oc_chassis_filled_event, out_gate_resource): global state with hostlers.request() as request: yield request - + if container_id is None: + x =5 start_time = env.now record_vehicle_event('hostler', state.hostler_id_counter, 'start', start_time) # performance record hostler_id = state.hostler_id_counter - state.hostler_id_counter = (state.hostler_id_counter % HOSTLER_NUMBER) + 1 + state.hostler_id_counter = (state.hostler_id_counter % state.HOSTLER_NUMBER) + 1 with chassis.request() as chassis_request: yield chassis_request + if container_type == "inbound": + x = 5 + if container_type == 'inbound' and state.chassis_status[chassis_id - 1] == 1: d_h_dist = create_triang_distribution(d_h_min, d_h_avg, d_h_max).rvs() state.HOSTLER_TRANSPORT_CONTAINER_TIME = d_h_dist / (2 * state.HOSTLER_SPEED_LIMIT) @@ -328,6 +328,8 @@ def hostler_transfer(env, hostlers, container_type, chassis, chassis_id, contain state.HOSTLER_TRANSPORT_CONTAINER_TIME = d_h_dist / (2 * state.HOSTLER_SPEED_LIMIT) print(f"Hostler drop-off time is:{state.HOSTLER_TRANSPORT_CONTAINER_TIME}") yield env.timeout(state.HOSTLER_TRANSPORT_CONTAINER_TIME) + if container_id is None: + x =5 record_event(container_id, 'hostler_dropoff', env.now) print(f"Hostler {hostler_id} drops off inbound container {container_id} from chassis {chassis_id} and moves toward the assigned outbound container at {env.now}") @@ -341,30 +343,30 @@ def hostler_transfer(env, hostlers, container_type, chassis, chassis_id, contain chassis_id, state.outbound_container_id = yield env.process(outbound_container_decision_making( env, hostlers, chassis, container_id, truck_store, cranes, train_processing, outbound_containers_store, - in_gate_resource, out_gate_resource)) + in_gate_resource, oc_chassis_filled_event, out_gate_resource)) # Process outbound containers if chassis_id is not None and state.outbound_container_id is not None: - env.process(handle_outbound_container(env, hostler_id, chassis_id, truck_store, - cranes, train_processing, outbound_containers_store, in_gate_resource,)) + env.process(handle_outbound_container(env, hostler_id, chassis_id, state.outbound_container_id, truck_store, + cranes, train_processing, outbound_containers_store, in_gate_resource)) # When OC are fully processed, but IC are not -def hostler_transfer_IC_single_loop(env, hostlers, container_type, chassis, chassis_id, container_id, truck_store, cranes, train_processing, outbound_containers_store, in_gate_resource, out_gate_resource): +def hostler_transfer_IC_single_loop(env, hostlers, container_type, chassis, chassis_id, container_id, truck_store, cranes, train_processing, outbound_containers_store, in_gate_resource, oc_chassis_filled_event, out_gate_resource): print(f"Starting single hostler transfer IC loop for chassis {chassis_id} at {env.now}") global state print(f"Requesting hostler for IC at chassis {chassis_id} at {env.now}") with hostlers.request() as request: - print(f"Request available hostlers: {hostlers.count} vs total hostlers {HOSTLER_NUMBER}, Hostlers capacity: {hostlers.capacity} at {env.now}") + print(f"Request available hostlers: {hostlers.count} vs total hostlers {state.HOSTLER_NUMBER}, Hostlers capacity: {hostlers.capacity} at {env.now}") yield request start_time = env.now record_vehicle_event('hostler', state.hostler_id_counter, 'start', start_time) # performance record hostler_id = state.hostler_id_counter - state.hostler_id_counter = (state.hostler_id_counter % HOSTLER_NUMBER) + 1 + state.hostler_id_counter = (state.hostler_id_counter % state.HOSTLER_NUMBER) + 1 with chassis.request() as chassis_request: yield chassis_request @@ -393,12 +395,12 @@ def hostler_transfer_IC_single_loop(env, hostlers, container_type, chassis, chas # Check if all chassis filled if state.chassis_status.count(0) == state.OUTBOUND_CONTAINER_NUMBER and state.chassis_status.count( - -1) == state.TRAIN_UNITS - state.OUTBOUND_CONTAINER_NUMBER and not state.oc_chassis_filled_event.triggered: + -1) == state.TRAIN_UNITS - state.OUTBOUND_CONTAINER_NUMBER and not oc_chassis_filled_event.triggered: print(f"Chassis is fully filled with OC, and cranes start moving: {state.chassis_status}") print(f"where there are {state.chassis_status.count(0)} chassis filled with OC (0)") print(f"where there are {state.chassis_status.count(-1)} chassis filled with empty (-1)") print(f"where there are {state.chassis_status.count(1)} chassis filled with IC (1)") - state.oc_chassis_filled_event.succeed() + oc_chassis_filled_event.succeed() return else: print(f"Chassis is not fully filled: {state.chassis_status}") @@ -413,7 +415,7 @@ def hostler_transfer_IC_single_loop(env, hostlers, container_type, chassis, chas yield env.process(notify_truck(env, truck_store, container_id, out_gate_resource)) -def outbound_container_decision_making(env, hostlers, chassis, current_inbound_id, truck_store, cranes, train_processing, outbound_containers_store, in_gate_resource, out_gate_resource): +def outbound_container_decision_making(env, hostlers, chassis, current_inbound_id, truck_store, cranes, train_processing, outbound_containers_store, in_gate_resource, oc_chassis_filled_event, out_gate_resource): global state # Check if outbound_containers_store has outbound container if len(outbound_containers_store.items) > 0: @@ -445,14 +447,16 @@ def outbound_container_decision_making(env, hostlers, chassis, current_inbound_i # single loop takes rest inbound container yield env.process(hostler_transfer_IC_single_loop(env, hostlers, 'inbound', chassis, chassis_id, current_inbound_id, truck_store, cranes, train_processing, - outbound_containers_store, in_gate_resource, out_gate_resource)) + outbound_containers_store, in_gate_resource, oc_chassis_filled_event, out_gate_resource)) else: print("All inbound containers have been processed.") + if outbound_container_id is None: + x = 5 return chassis_id, outbound_container_id -def handle_outbound_container(env, hostler_id, chassis_id, truck_store, cranes, train_processing, outbound_containers_store, in_gate_resource): +def handle_outbound_container(env, hostler_id, chassis_id, outbound_container_id, truck_store, cranes, train_processing, outbound_containers_store, in_gate_resource): global state d_h_dist = create_triang_distribution(d_h_min, d_h_avg, d_h_max).rvs() @@ -462,13 +466,13 @@ def handle_outbound_container(env, hostler_id, chassis_id, truck_store, cranes, state.HOSTLER_FIND_CONTAINER_TIME = d_r_dist / (2 * state.TRUCK_SPEED_LIMIT) yield env.timeout(state.HOSTLER_FIND_CONTAINER_TIME) - record_event(state.outbound_container_id, 'hostler_pickup', env.now) - print(f"Hostler {hostler_id} picks up outbound container {state.outbound_container_id} from parking area to chassis {chassis_id} at {env.now}") + record_event(outbound_container_id, 'hostler_pickup', env.now) + print(f"Hostler {hostler_id} picks up outbound container {outbound_container_id} from parking area to chassis {chassis_id} at {env.now}") yield env.timeout(state.HOSTLER_TRANSPORT_CONTAINER_TIME) - record_event(state.outbound_container_id, 'hostler_dropoff', env.now) - print(f"Hostler {hostler_id} drops off outbound container {state.outbound_container_id} to chassis {chassis_id} at {env.now}") + record_event(outbound_container_id, 'hostler_dropoff', env.now) + print(f"Hostler {hostler_id} drops off outbound container {outbound_container_id} to chassis {chassis_id} at {env.now}") # truck pick up IC @@ -546,7 +550,7 @@ def run_simulation( # Initialize trucks truck_store.items.clear() # print("TRUCK_NUMBERS:", TRUCK_NUMBERS) - for truck_id in range(1, TRUCK_NUMBERS + 1): + for truck_id in range(1, 100 + 1): truck_store.put(truck_id) # print("TRUCK_STORE:", truck_store.items) @@ -579,31 +583,13 @@ def run_simulation( f.write(str(avg_time_per_train)) # Create DataFrame for container events - events_list = [(container_id, events) for container_id, events in state.container_events.items()] container_data = ( - pl.concat([ - pl.DataFrame(data = None, schema = { - 'container_id': pl.UInt32, - 'container_type': pl.Utf8, - 'train_arrival': pl.Float64, - 'truck_arrival': pl.Float64, - 'crane_unload': pl.Float64, - 'hostler_pickup': pl.Float64, - 'hostler_dropoff': pl.Float64, - 'truck_drop_off': pl.Float64, - 'truck_pickup': pl.Float64, - 'truck_exit': pl.Float64, - 'crane_load': pl.Float64, - 'train_depart': pl.Float64}), - pl.concat( - [ - pl.DataFrame({"container_id": [container_id for container_id, event in events_list]}) - .with_columns( - pl.when(pl.col("container_id") < 10001).then(pl.lit("inbound")).otherwise(pl.lit("outbound")).alias("container_type") - ), - pl.from_dicts([event for container_id, event in events_list]) - ], how="horizontal") - ], how="diagonal_relaxed") + pl.from_dicts( + [dict(event, **{'container_id': container_id}) for container_id, event in state.container_events.items()] + ) + .with_columns( + pl.when(pl.col("container_id") < 10001).then(pl.lit("inbound")).otherwise(pl.lit("outbound")).alias("container_type") + ) .with_columns( pl.when( pl.col("container_type") == pl.lit("inbound"), @@ -624,9 +610,11 @@ def run_simulation( .otherwise(None) .alias("container_processing_time") ) + .sort("container_id") + .select(pl.col("container_id", "container_type"), pl.all().exclude("container_id", "container_type")) ) if out_path is not None: - container_data.write_excel(out_path / f"simulation_crane_{CRANE_NUMBER}_hostler_{HOSTLER_NUMBER}.xlsx") + container_data.write_excel(out_path / f"simulation_crane_{state.CRANE_NUMBER}_hostler_{state.HOSTLER_NUMBER}.xlsx") # Use save_average_times and save_vehicle_logs for vehicle related logs save_average_times() diff --git a/python/altrios/lifts/parameters.py b/python/altrios/lifts/parameters.py index 550151e3..89f40f1c 100644 --- a/python/altrios/lifts/parameters.py +++ b/python/altrios/lifts/parameters.py @@ -54,13 +54,13 @@ class LiftsState: container_events: dict = field(default_factory = lambda: {}) # Dictionary to store container event data # Cranes # CRANE_NUMBER = int(input("Enter the number of crane: ")) - CRANE_NUMBER: int = 10 + CRANE_NUMBER: int = 1 CONTAINERS_PER_CRANE_MOVE_MEAN: float = 600 # 10ft/min = 600 ft/hr, crane speed CRANE_MOVE_DEV_TIME: float = 5/60 # hr outbound_containers_mapping: dict = field(default_factory = lambda: {}) # To keep track of outbound containers ID mapped to chassis # Hostlers # HOSTLER_NUMBER = int(input("Enter the number of hostler: ")) - HOSTLER_NUMBER: int = 50 + HOSTLER_NUMBER: int = 1 CONTAINERS_PER_HOSTLER: int = 1 # hostler capacity HOSTLER_SPEED_LIMIT: float = 20*5280 # ft/hr HOSTLER_TRANSPORT_CONTAINER_TIME: float = 0 # hr, triangular distribution From c914562fed2a70f69b9dd6670a3c41060d982ec5 Mon Sep 17 00:00:00 2001 From: "Bruchon, Matthew" Date: Thu, 19 Dec 2024 18:31:33 -0500 Subject: [PATCH 24/50] update --- rust/altrios-core/src/train/train_config.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/altrios-core/src/train/train_config.rs b/rust/altrios-core/src/train/train_config.rs index a912553b..a615e22b 100644 --- a/rust/altrios-core/src/train/train_config.rs +++ b/rust/altrios-core/src/train/train_config.rs @@ -1030,7 +1030,7 @@ pub fn run_speed_limit_train_sims( "Node", "Locomotive_Type", "Fuel_Type", - ])) + (col("Status").eq(lit("Queued")).cum_sum(false).over([ + ])) + (col("Status").eq(lit("Queued")).cumsum(false).over([ "Node", "Locomotive_Type", "Fuel_Type", From ba4385f256f9fcb419c89bb6b3b2302d4ffd1bfc Mon Sep 17 00:00:00 2001 From: "Bruchon, Matthew" Date: Sat, 11 Jan 2025 21:03:46 -0500 Subject: [PATCH 25/50] partial port of train planner from private repo changes from wang-dev-matt-edits --- .gitignore | 1 - pyproject.toml | 2 +- python/altrios/lifts/dictionary.py | 1 + python/altrios/train_planner.py | 161 ++++++++++++++++++----------- 4 files changed, 105 insertions(+), 60 deletions(-) diff --git a/.gitignore b/.gitignore index a9e03c2c..09a40c2b 100644 --- a/.gitignore +++ b/.gitignore @@ -1219,4 +1219,3 @@ altrios/dispatch/*.json activate.sh *.xlsx *.txt -*.txt diff --git a/pyproject.toml b/pyproject.toml index 847bbc9a..1114ccec 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -43,7 +43,7 @@ dependencies = [ "plotly", "typing_extensions", "pyyaml", - "polars >= 1.14", + "polars >= 1.19.0", "pyarrow", "requests", "PyYAML==6.0.2", diff --git a/python/altrios/lifts/dictionary.py b/python/altrios/lifts/dictionary.py index 4e13c721..0c66b90f 100644 --- a/python/altrios/lifts/dictionary.py +++ b/python/altrios/lifts/dictionary.py @@ -1,3 +1,4 @@ + import polars as pl def calculate_oc_number() -> int: diff --git a/python/altrios/train_planner.py b/python/altrios/train_planner.py index e2762ef8..456fc5c1 100644 --- a/python/altrios/train_planner.py +++ b/python/altrios/train_planner.py @@ -98,19 +98,35 @@ class TrainPlannerConfig: Attributes: ---------- - `single_train_mode`: `True` to only run one round-trip train and schedule its charging; `False` to plan train consists + - `min_cars_per_train`: `Dict` of the minimum length in number of cars to form a train for each train type + - `target_cars_per_train`: `Dict` of the standard train length in number of cars for each train type + - `manifest_empty_return_ratio`: Desired railcar reuse ratio to calculate the empty manifest car demand, (E_ij+E_ji)/(L_ij+L_ji) + - `cars_per_locomotive`: Heuristic scaling factor used to size number of locomotives needed based on demand. + + - `cars_per_locomotive_fixed`: If `True`, `cars_per_locomotive` overrides `hp_per_ton` calculations used for dispatching decisions. + - `refuelers_per_incoming_corridor`: Heuristic scaling factor used to scale number of refuelers needed at each node based on number of incoming corridors. + - `stack_type`: Type of stacking (applicable only for intermodal containers) + - `require_diesel`: `True` to require each consist to have at least one diesel locomotive. + - `manifest_empty_return_ratio`: `Dict` + - `drag_coeff_function`: `Dict` + - `hp_required_per_ton`: `Dict` + - `dispatch_scaling_dict`: `Dict` + - `loco_info`: `Dict` + - `refueler_info`: `Dict` + - `return_demand_generators`: `Dict` """ single_train_mode: bool = False @@ -123,6 +139,7 @@ class TrainPlannerConfig: cars_per_locomotive: Dict = field(default_factory = lambda: { "Default": 70 }) + cars_per_locomotive_fixed: bool = False refuelers_per_incoming_corridor: int = 4 stack_type: str = "single" require_diesel: bool = False @@ -179,7 +196,6 @@ class TrainPlannerConfig: "Lifespan_Years": defaults.LOCO_LIFESPAN } }).transpose().reset_index(names='Refueler_Type')) - return_demand_generators: Dict = field(default_factory = lambda: { 'Unit': generate_return_demand_unit, 'Manifest': generate_return_demand_manifest, @@ -233,11 +249,14 @@ def generate_return_demand( demand_subsets = demand.partition_by("Train_Type", as_dict = True) return_demand = [] for train_type, demand_subset in demand_subsets.items(): - if train_type in config.return_demand_generators: - return_demand_generator = config.return_demand_generators[train_type] - return_demand.append(return_demand_generator(demand_subset, config)) + train_type_label = train_type[0] + if train_type_label in config.return_demand_generators: + return_demand_generator = config.return_demand_generators[train_type_label] + temp = return_demand_generator(demand_subset, config) + print(temp) + return_demand.append(temp) else: - print(f'Return demand generator not implemented for train type: {train_type}') + print(f'Return demand generator not implemented for train type: {train_type_label}') demand_return = (pl.concat(return_demand, how="diagonal_relaxed") .filter(pl.col("Number_of_Cars") + pl.col("Number_of_Containers") > 0) @@ -518,7 +537,7 @@ def generate_dispatch_details( def pctWithinGroup(df: pl.DataFrame, grouping_vars: List[str]) -> pl.DataFrame: return (df .with_columns( - (pl.cum_count().over(grouping_vars) / + (pl.cum_count('Origin').over(grouping_vars) / pl.count().over(grouping_vars)) .alias("Percent_Within_Group") ) @@ -561,7 +580,7 @@ def allocateItems(df: pl.DataFrame, target: str, grouping_vars: List[str]) -> pl (hours * 1.0 / pl.len().over("Origin", "Destination")).alias("Interval") ) .with_columns( - ((pl.col("Interval").cumcount().over(["Origin","Destination"])) \ + ((pl.col("Interval").cum_count().over(["Origin","Destination"])) \ * pl.col("Interval")).alias("Hour") ) .select("Hour", "Origin", "Destination", "Train_Type", @@ -580,6 +599,7 @@ def build_locopool( demand_file: Union[pl.DataFrame, Path, str], method: str = "tile", shares: List[float] = [], + locomotives_per_node: int = None ) -> pl.DataFrame: """ Generate default locomotive pool @@ -597,17 +617,20 @@ def build_locopool( demand, node_list = demand_loader(demand_file) num_nodes = len(node_list) - num_ods = demand.height - cars_per_od = demand.get_column("Number_of_Cars").mean() - if config.single_train_mode: - initial_size = math.ceil(cars_per_od / config.cars_per_locomotive["Default"]) - rows = initial_size + if locomotives_per_node is None: + num_ods = demand.height + cars_per_od = demand.get_column("Number_of_Cars").mean() + if config.single_train_mode: + initial_size = math.ceil(cars_per_od / config.cars_per_locomotive["Default"]) + rows = initial_size + else: + num_destinations_per_node = num_ods*1.0 / num_nodes*1.0 + initial_size = math.ceil((cars_per_od / config.cars_per_locomotive["Default"]) * + num_destinations_per_node) # number of locomotives per node + rows = initial_size * num_nodes # number of locomotives in total else: - num_destinations_per_node = num_ods*1.0 / num_nodes*1.0 - initial_size = math.ceil((cars_per_od / config.cars_per_locomotive["Default"]) * - num_destinations_per_node) # number of locomotives per node - rows = initial_size * num_nodes # number of locomotives in total - + initial_size = locomotives_per_node + rows = locomotives_per_node * num_nodes if config.single_train_mode: sorted_nodes = np.tile([demand.select(pl.col("Origin").first()).item()],rows).tolist() @@ -798,6 +821,8 @@ def dispatch( loco_pool: pl.DataFrame, train_tonnage: float, hp_required: float, + total_cars: float, + config: TrainPlannerConfig, ) -> pl.Series: """ Update the locomotive pool by identifying the desired locomotive to dispatch and assign to the @@ -808,6 +833,8 @@ def dispatch( origin: origin node name of the train loco_pool: locomotive pool dataframe containing all locomotives in the network hp_required: Horsepower required for this train type on this origin-destination corridor + total_cars: Total number of cars (loaded, empty, or otherwise) included on the train + config: TrainPlannerConfig object Outputs: ---------- selected: Indices of selected locomotives @@ -840,47 +867,62 @@ def dispatch( # Running list of downselected candidates selected = candidates - # First available diesel (in order of loco_pool) will be moved from candidates to selected - # TODO gracefully handle cases when there is no diesel locomotive to be dispatched - # (ex: hold the train until enough diesels are present) - diesel_filter = pl.col("Fuel_Type").cast(pl.Utf8).str.contains("(?i)diesel") - diesel_candidates = loco_pool.select(pl.lit(candidates) & diesel_filter).to_series() - if not diesel_candidates.any(): - refueling_diesel_count = loco_pool.filter( - pl.col("Node") == origin, - pl.col("Status").is_in(["Servicing","Refuel_Queue"]), - diesel_filter - ).select(pl.len())[0, 0] - message = f"""No available diesel locomotives at node {origin} at hour {dispatch_time}, so - the one-diesel-per-consist rule cannot be satisfied. {refueling_diesel_count} diesel locomotives at - {origin} are servicing, refueling, or queueing.""" - if refueling_diesel_count > 0: - diesel_port_count = loco_pool.filter( + diesel_to_require_hp = 0 + if config.require_diesel: + # First available diesel (in order of loco_pool) will be moved from candidates to selected + # TODO gracefully handle cases when there is no diesel locomotive to be dispatched + # (ex: hold the train until enough diesels are present) + diesel_filter = pl.col("Fuel_Type").cast(pl.Utf8).str.contains("(?i)diesel") + diesel_candidates = loco_pool.select(pl.lit(candidates) & diesel_filter).to_series() + if not diesel_candidates.any(): + refueling_diesel_count = loco_pool.filter( pl.col("Node") == origin, + pl.col("Status").is_in(["Servicing","Refuel_Queue"]), diesel_filter - ).select(pl.col("Port_Count").min()).item() - message += f""" (queue capacity {diesel_port_count}).""" - else: - message += "." - raise ValueError(message) - - diesel_to_require = diesel_candidates.eq(True).cum_sum().eq(1).arg_max() - diesel_to_require_hp = loco_pool.filter(diesel_filter).select(pl.first("HP")) - # Need to mask this so it's not double-counted on next step - candidates[diesel_to_require] = False - # Get running sum, including first diesel, of hp of the candidates (in order of loco_pool) - enough_hp = loco_pool.select(( - ( - (pl.col("HP") - (pl.col("Loco_Mass_Tons") * pl.lit(hp_per_ton))) * pl.lit(candidates) - ).cum_sum() + pl.lit(diesel_to_require_hp)) >= hp_required).to_series() - if not enough_hp.any(): - available_hp = loco_pool.select( + ).select(pl.len())[0, 0] + message = f"""No available diesel locomotives at node {origin} at hour {dispatch_time}, so + the one-diesel-per-consist rule cannot be satisfied. {refueling_diesel_count} diesel locomotives at + {origin} are servicing, refueling, or queueing.""" + if refueling_diesel_count > 0: + diesel_port_count = loco_pool.filter( + pl.col("Node") == origin, + diesel_filter + ).select(pl.col("Port_Count").min()).item() + message += f""" (queue capacity {diesel_port_count}).""" + else: + message += "." + raise ValueError(message) + + diesel_to_require = diesel_candidates.eq(True).cum_sum().eq(1).arg_max() + diesel_to_require_hp = loco_pool.filter(diesel_filter).select(pl.first("HP")) + # Need to mask this so it's not double-counted on next step + candidates[diesel_to_require] = False + + message = "" + if config.cars_per_locomotive_fixed: + # Get as many available locomotives as are needed (in order of loco_pool) + enough_locomotives = loco_pool.select( + (pl.lit(1.0) * pl.lit(candidates)).cumsum() >= total_cars).to_series() + if not enough_locomotives.any(): + message = f"""Locomotives needed ({total_cars}) at {origin} at hour {dispatch_time} + is more than the available locomotives ({candidates.sum()}). + Count of locomotives servicing, refueling, or queueing at {origin} are:""" + else: + # Get running sum, including first diesel, of hp of the candidates (in order of loco_pool) + enough_hp = loco_pool.select(( ( (pl.col("HP") - (pl.col("Loco_Mass_Tons") * pl.lit(hp_per_ton))) * pl.lit(candidates) - ).cum_sum().max())[0, 0] - message = f"""Outbound horsepower needed ({hp_required}) at {origin} at hour {dispatch_time} - is more than the available horsepower ({available_hp}). - Count of locomotives servicing, refueling, or queueing at {origin} are:""" + ).cum_sum() + pl.lit(diesel_to_require_hp)) >= hp_required).to_series() + if not enough_hp.any(): + available_hp = loco_pool.select( + ( + (pl.col("HP") - (pl.col("Loco_Mass_Tons") * pl.lit(hp_per_ton))) * pl.lit(candidates) + ).cum_sum().max())[0, 0] + message = f"""Outbound horsepower needed ({hp_required}) at {origin} at hour {dispatch_time} + is more than the available horsepower ({available_hp}). + Count of locomotives servicing, refueling, or queueing at {origin} are:""" + + if not enough_hp.any(): # Hold the train until enough diesels are present (future development) waiting_counts = (loco_pool .filter( @@ -899,8 +941,10 @@ def dispatch( last_row_to_use = enough_hp.eq(True).cum_sum().eq(1).arg_max() # Set false all the locomotives that would add unnecessary hp selected[np.arange(last_row_to_use+1, len(selected))] = False - # Add first diesel (which could come after last_row_to_use) to selection list - selected[diesel_to_require] = True + + if config.require_diesel: + # Add first diesel (which could come after last_row_to_use) to selection list + selected[diesel_to_require] = True return selected def update_refuel_queue( @@ -1138,7 +1182,9 @@ def run_train_planner( this_train['Origin'], loco_pool, this_train['Tons_Per_Train'], - this_train['HP_Required'] + this_train['HP_Required'], + this_train['Cars_Loaded'] + this_train['Cars_Empty'], + config ) dispatched = loco_pool.filter(selected) @@ -1259,7 +1305,6 @@ def run_train_planner( pl.Series(repeat(this_train['Destination'], new_row_count)), pl.Series(repeat(this_train['Cars_Loaded'], new_row_count)), pl.Series(repeat(this_train['Cars_Empty'], new_row_count)), - # pl.Series(repeat(this_train['Number_of_Cars'], new_row_count)), loco_start_soc_j, pl.Series(repeat(current_time, new_row_count)), pl.Series(repeat(current_time + travel_time, new_row_count))], From c93ebb13413de25f9237034596e25e43e5685e25 Mon Sep 17 00:00:00 2001 From: "Bruchon, Matthew" Date: Sun, 12 Jan 2025 14:20:36 -0500 Subject: [PATCH 26/50] train planner refactored into multiple files --- .gitignore | 2 +- avg_time_per_train.txt | 1 - crane_work_log.txt | 732 ----------------- hostler_work_log.txt | 754 ------------------ python/altrios/demos/rollout_demo.py | 5 +- python/altrios/demos/sim_manager_demo.py | 5 +- python/altrios/rollout.py | 5 +- python/altrios/sim_manager.py | 4 +- python/altrios/tests/test_train_planner.py | 2 +- .../train_planner/demand_generators.py | 367 +++++++++ .../planner.py} | 631 +-------------- .../altrios/train_planner/planner_config.py | 108 +++ python/altrios/train_planner/schedulers.py | 534 +++++++++++++ python/altrios/utilities.py | 33 +- truck_work_log.txt | 498 ------------ vehicle_average_times.txt | 3 - 16 files changed, 1094 insertions(+), 2590 deletions(-) delete mode 100644 avg_time_per_train.txt delete mode 100644 crane_work_log.txt delete mode 100644 hostler_work_log.txt create mode 100644 python/altrios/train_planner/demand_generators.py rename python/altrios/{train_planner.py => train_planner/planner.py} (59%) create mode 100644 python/altrios/train_planner/planner_config.py create mode 100644 python/altrios/train_planner/schedulers.py delete mode 100644 truck_work_log.txt delete mode 100644 vehicle_average_times.txt diff --git a/.gitignore b/.gitignore index 09a40c2b..f7049904 100644 --- a/.gitignore +++ b/.gitignore @@ -1218,4 +1218,4 @@ altrios/resources/networks/Scenic - ALTRIOS Confidential.yaml altrios/dispatch/*.json activate.sh *.xlsx -*.txt +altrios/*.txt diff --git a/avg_time_per_train.txt b/avg_time_per_train.txt deleted file mode 100644 index 849cc94e..00000000 --- a/avg_time_per_train.txt +++ /dev/null @@ -1 +0,0 @@ -17.43808370612796 \ No newline at end of file diff --git a/crane_work_log.txt b/crane_work_log.txt deleted file mode 100644 index 30449505..00000000 --- a/crane_work_log.txt +++ /dev/null @@ -1,732 +0,0 @@ -Vehicle ID: 3, Event Type: start, Timestamp: 174.19744645094642 -Vehicle ID: 3, Event Type: end, Timestamp: 174.19744645094642 -Vehicle ID: 3, Event Type: start, Timestamp: 174.40920793733576 -Vehicle ID: 3, Event Type: end, Timestamp: 174.40920793733576 -Vehicle ID: 3, Event Type: start, Timestamp: 174.46962757929793 -Vehicle ID: 3, Event Type: end, Timestamp: 174.46962757929793 -Vehicle ID: 3, Event Type: start, Timestamp: 174.4917878527149 -Vehicle ID: 3, Event Type: end, Timestamp: 174.4917878527149 -Vehicle ID: 3, Event Type: start, Timestamp: 174.5074285257341 -Vehicle ID: 3, Event Type: end, Timestamp: 174.5074285257341 -Vehicle ID: 3, Event Type: start, Timestamp: 174.53099703647402 -Vehicle ID: 3, Event Type: end, Timestamp: 174.53099703647402 -Vehicle ID: 3, Event Type: start, Timestamp: 174.53952787914648 -Vehicle ID: 3, Event Type: end, Timestamp: 174.53952787914648 -Vehicle ID: 3, Event Type: start, Timestamp: 174.54609629221974 -Vehicle ID: 3, Event Type: end, Timestamp: 174.54609629221974 -Vehicle ID: 3, Event Type: start, Timestamp: 174.55547801155282 -Vehicle ID: 3, Event Type: end, Timestamp: 174.55547801155282 -Vehicle ID: 3, Event Type: start, Timestamp: 174.55808262882783 -Vehicle ID: 3, Event Type: end, Timestamp: 174.55808262882783 -Vehicle ID: 3, Event Type: start, Timestamp: 174.5635273647671 -Vehicle ID: 3, Event Type: end, Timestamp: 174.5635273647671 -Vehicle ID: 3, Event Type: start, Timestamp: 174.56704169084028 -Vehicle ID: 3, Event Type: end, Timestamp: 174.56704169084028 -Vehicle ID: 3, Event Type: start, Timestamp: 174.57073015245615 -Vehicle ID: 3, Event Type: end, Timestamp: 174.57073015245615 -Vehicle ID: 3, Event Type: start, Timestamp: 174.5810379925763 -Vehicle ID: 3, Event Type: end, Timestamp: 174.5810379925763 -Vehicle ID: 3, Event Type: start, Timestamp: 174.58581529188942 -Vehicle ID: 3, Event Type: end, Timestamp: 174.58581529188942 -Vehicle ID: 3, Event Type: start, Timestamp: 174.60925288557775 -Vehicle ID: 3, Event Type: end, Timestamp: 174.60925288557775 -Vehicle ID: 3, Event Type: start, Timestamp: 174.6219183453141 -Vehicle ID: 3, Event Type: end, Timestamp: 174.6219183453141 -Vehicle ID: 3, Event Type: start, Timestamp: 174.6337482952235 -Vehicle ID: 3, Event Type: end, Timestamp: 174.6337482952235 -Vehicle ID: 3, Event Type: start, Timestamp: 174.63648281070164 -Vehicle ID: 3, Event Type: end, Timestamp: 174.63648281070164 -Vehicle ID: 3, Event Type: start, Timestamp: 174.64650460459794 -Vehicle ID: 3, Event Type: end, Timestamp: 174.64650460459794 -Vehicle ID: 3, Event Type: start, Timestamp: 174.6479950480359 -Vehicle ID: 3, Event Type: end, Timestamp: 174.6479950480359 -Vehicle ID: 3, Event Type: start, Timestamp: 174.64809003331777 -Vehicle ID: 3, Event Type: end, Timestamp: 174.64809003331777 -Vehicle ID: 3, Event Type: start, Timestamp: 174.65030501478043 -Vehicle ID: 3, Event Type: end, Timestamp: 174.65030501478043 -Vehicle ID: 3, Event Type: start, Timestamp: 174.65798512654354 -Vehicle ID: 3, Event Type: end, Timestamp: 174.65798512654354 -Vehicle ID: 3, Event Type: start, Timestamp: 174.65821449539442 -Vehicle ID: 3, Event Type: end, Timestamp: 174.65821449539442 -Vehicle ID: 3, Event Type: start, Timestamp: 174.66159541215922 -Vehicle ID: 3, Event Type: end, Timestamp: 174.66159541215922 -Vehicle ID: 3, Event Type: start, Timestamp: 174.6688858173057 -Vehicle ID: 3, Event Type: end, Timestamp: 174.6688858173057 -Vehicle ID: 3, Event Type: start, Timestamp: 174.67104467457068 -Vehicle ID: 3, Event Type: end, Timestamp: 174.67104467457068 -Vehicle ID: 3, Event Type: start, Timestamp: 174.6732036486748 -Vehicle ID: 3, Event Type: end, Timestamp: 174.6732036486748 -Vehicle ID: 3, Event Type: start, Timestamp: 174.68508410251187 -Vehicle ID: 3, Event Type: end, Timestamp: 174.68508410251187 -Vehicle ID: 3, Event Type: start, Timestamp: 174.68563486714666 -Vehicle ID: 3, Event Type: end, Timestamp: 174.68563486714666 -Vehicle ID: 3, Event Type: start, Timestamp: 174.6925343834399 -Vehicle ID: 3, Event Type: end, Timestamp: 174.6925343834399 -Vehicle ID: 3, Event Type: start, Timestamp: 174.70261313590242 -Vehicle ID: 3, Event Type: end, Timestamp: 174.70261313590242 -Vehicle ID: 3, Event Type: start, Timestamp: 174.70743363596702 -Vehicle ID: 3, Event Type: end, Timestamp: 174.70743363596702 -Vehicle ID: 3, Event Type: start, Timestamp: 174.7108157446955 -Vehicle ID: 3, Event Type: end, Timestamp: 174.7108157446955 -Vehicle ID: 3, Event Type: start, Timestamp: 174.72123982982376 -Vehicle ID: 3, Event Type: end, Timestamp: 174.72123982982376 -Vehicle ID: 3, Event Type: start, Timestamp: 174.72285214011058 -Vehicle ID: 3, Event Type: end, Timestamp: 174.72285214011058 -Vehicle ID: 3, Event Type: start, Timestamp: 174.74433501400816 -Vehicle ID: 3, Event Type: end, Timestamp: 174.74433501400816 -Vehicle ID: 3, Event Type: start, Timestamp: 174.74503253450166 -Vehicle ID: 3, Event Type: end, Timestamp: 174.74503253450166 -Vehicle ID: 3, Event Type: start, Timestamp: 174.7506068392451 -Vehicle ID: 3, Event Type: end, Timestamp: 174.7506068392451 -Vehicle ID: 3, Event Type: start, Timestamp: 174.75339521831725 -Vehicle ID: 3, Event Type: end, Timestamp: 174.75339521831725 -Vehicle ID: 3, Event Type: start, Timestamp: 174.76930184843837 -Vehicle ID: 3, Event Type: end, Timestamp: 174.76930184843837 -Vehicle ID: 3, Event Type: start, Timestamp: 174.77838926306353 -Vehicle ID: 3, Event Type: end, Timestamp: 174.77838926306353 -Vehicle ID: 3, Event Type: start, Timestamp: 174.77965102279464 -Vehicle ID: 3, Event Type: end, Timestamp: 174.77965102279464 -Vehicle ID: 3, Event Type: start, Timestamp: 174.78047005554035 -Vehicle ID: 3, Event Type: end, Timestamp: 174.78047005554035 -Vehicle ID: 3, Event Type: start, Timestamp: 174.79051325875793 -Vehicle ID: 3, Event Type: end, Timestamp: 174.79051325875793 -Vehicle ID: 3, Event Type: start, Timestamp: 174.79266452444017 -Vehicle ID: 3, Event Type: end, Timestamp: 174.79266452444017 -Vehicle ID: 3, Event Type: start, Timestamp: 174.79800349145364 -Vehicle ID: 3, Event Type: end, Timestamp: 174.79800349145364 -Vehicle ID: 3, Event Type: start, Timestamp: 174.81022825262713 -Vehicle ID: 3, Event Type: end, Timestamp: 174.81022825262713 -Vehicle ID: 3, Event Type: start, Timestamp: 174.81805583935017 -Vehicle ID: 3, Event Type: end, Timestamp: 174.81805583935017 -Vehicle ID: 3, Event Type: start, Timestamp: 174.84507140015327 -Vehicle ID: 3, Event Type: end, Timestamp: 174.84507140015327 -Vehicle ID: 3, Event Type: start, Timestamp: 174.85656066244738 -Vehicle ID: 3, Event Type: end, Timestamp: 174.85656066244738 -Vehicle ID: 3, Event Type: start, Timestamp: 174.85996803540502 -Vehicle ID: 3, Event Type: end, Timestamp: 174.85996803540502 -Vehicle ID: 3, Event Type: start, Timestamp: 174.87827711529337 -Vehicle ID: 3, Event Type: end, Timestamp: 174.87827711529337 -Vehicle ID: 3, Event Type: start, Timestamp: 174.88969376176794 -Vehicle ID: 3, Event Type: end, Timestamp: 174.88969376176794 -Vehicle ID: 3, Event Type: start, Timestamp: 174.89325195435796 -Vehicle ID: 3, Event Type: end, Timestamp: 174.89325195435796 -Vehicle ID: 3, Event Type: start, Timestamp: 174.90509261259018 -Vehicle ID: 3, Event Type: end, Timestamp: 174.90509261259018 -Vehicle ID: 3, Event Type: start, Timestamp: 174.91036525763096 -Vehicle ID: 3, Event Type: end, Timestamp: 174.91036525763096 -Vehicle ID: 3, Event Type: start, Timestamp: 174.91282636181623 -Vehicle ID: 3, Event Type: end, Timestamp: 174.91282636181623 -Vehicle ID: 3, Event Type: start, Timestamp: 174.9168746886371 -Vehicle ID: 3, Event Type: end, Timestamp: 174.9168746886371 -Vehicle ID: 3, Event Type: start, Timestamp: 174.95221896319984 -Vehicle ID: 3, Event Type: end, Timestamp: 174.95221896319984 -Vehicle ID: 3, Event Type: start, Timestamp: 174.9569857697495 -Vehicle ID: 3, Event Type: end, Timestamp: 174.9569857697495 -Vehicle ID: 3, Event Type: start, Timestamp: 174.9605074648173 -Vehicle ID: 3, Event Type: end, Timestamp: 174.9605074648173 -Vehicle ID: 3, Event Type: start, Timestamp: 174.9626422831407 -Vehicle ID: 3, Event Type: end, Timestamp: 174.9626422831407 -Vehicle ID: 3, Event Type: start, Timestamp: 174.9793933115021 -Vehicle ID: 3, Event Type: end, Timestamp: 174.9793933115021 -Vehicle ID: 3, Event Type: start, Timestamp: 174.9910291808733 -Vehicle ID: 3, Event Type: end, Timestamp: 174.9910291808733 -Vehicle ID: 3, Event Type: start, Timestamp: 174.99839745265172 -Vehicle ID: 3, Event Type: end, Timestamp: 174.99839745265172 -Vehicle ID: 3, Event Type: start, Timestamp: 175.05002342225677 -Vehicle ID: 3, Event Type: end, Timestamp: 175.05002342225677 -Vehicle ID: 3, Event Type: start, Timestamp: 175.0513653207362 -Vehicle ID: 3, Event Type: end, Timestamp: 175.0513653207362 -Vehicle ID: 3, Event Type: start, Timestamp: 175.0530960600153 -Vehicle ID: 3, Event Type: end, Timestamp: 175.0530960600153 -Vehicle ID: 3, Event Type: start, Timestamp: 175.0764771590837 -Vehicle ID: 3, Event Type: end, Timestamp: 175.0764771590837 -Vehicle ID: 3, Event Type: start, Timestamp: 175.08342553817778 -Vehicle ID: 3, Event Type: end, Timestamp: 175.08342553817778 -Vehicle ID: 3, Event Type: start, Timestamp: 175.08715946906028 -Vehicle ID: 3, Event Type: end, Timestamp: 175.08715946906028 -Vehicle ID: 3, Event Type: start, Timestamp: 175.13000725805804 -Vehicle ID: 3, Event Type: end, Timestamp: 175.13000725805804 -Vehicle ID: 3, Event Type: start, Timestamp: 175.13720870016778 -Vehicle ID: 3, Event Type: end, Timestamp: 175.13720870016778 -Vehicle ID: 3, Event Type: start, Timestamp: 175.17462427221562 -Vehicle ID: 3, Event Type: end, Timestamp: 175.17462427221562 -Vehicle ID: 3, Event Type: start, Timestamp: 175.18053080395498 -Vehicle ID: 3, Event Type: end, Timestamp: 175.18053080395498 -Vehicle ID: 3, Event Type: start, Timestamp: 175.18992297134864 -Vehicle ID: 3, Event Type: end, Timestamp: 175.18992297134864 -Vehicle ID: 3, Event Type: start, Timestamp: 175.20270193836342 -Vehicle ID: 3, Event Type: end, Timestamp: 175.20270193836342 -Vehicle ID: 3, Event Type: start, Timestamp: 175.20683344330385 -Vehicle ID: 3, Event Type: end, Timestamp: 175.20683344330385 -Vehicle ID: 3, Event Type: start, Timestamp: 175.21070571441697 -Vehicle ID: 3, Event Type: end, Timestamp: 175.21070571441697 -Vehicle ID: 3, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 3, Event Type: end, Timestamp: 175.23812273242896 -Vehicle ID: 3, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 3, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 3, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 3, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 3, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 3, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 3, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 3, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 3, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 3, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 3, Event Type: start, Timestamp: 178.45602476453286 -Vehicle ID: 3, Event Type: start, Timestamp: 178.46801240887345 -Vehicle ID: 3, Event Type: start, Timestamp: 178.51023841880027 -Vehicle ID: 3, Event Type: start, Timestamp: 178.5283503774646 -Vehicle ID: 3, Event Type: start, Timestamp: 178.5340579131613 -Vehicle ID: 3, Event Type: start, Timestamp: 178.55541042143625 -Vehicle ID: 3, Event Type: start, Timestamp: 178.64204277056206 -Vehicle ID: 3, Event Type: start, Timestamp: 178.68777257303827 -Vehicle ID: 3, Event Type: start, Timestamp: 178.7133967167643 -Vehicle ID: 3, Event Type: start, Timestamp: 178.87961969133502 -Vehicle ID: 3, Event Type: start, Timestamp: 181.58416861424436 -Vehicle ID: 3, Event Type: start, Timestamp: 181.62941947168153 -Vehicle ID: 3, Event Type: start, Timestamp: 181.77575198691187 -Vehicle ID: 3, Event Type: start, Timestamp: 181.82834254489018 -Vehicle ID: 3, Event Type: start, Timestamp: 181.89822964176756 -Vehicle ID: 3, Event Type: start, Timestamp: 181.91009241018918 -Vehicle ID: 3, Event Type: start, Timestamp: 181.92428603733813 -Vehicle ID: 3, Event Type: start, Timestamp: 182.03151057348845 -Vehicle ID: 3, Event Type: start, Timestamp: 182.05561491566445 -Vehicle ID: 3, Event Type: start, Timestamp: 182.15897146781535 -Vehicle ID: 3, Event Type: start, Timestamp: 184.71343470613468 -Vehicle ID: 3, Event Type: start, Timestamp: 184.94715329070917 -Vehicle ID: 3, Event Type: start, Timestamp: 185.02231315261702 -Vehicle ID: 3, Event Type: start, Timestamp: 185.05534176622638 -Vehicle ID: 3, Event Type: start, Timestamp: 185.30527084646502 -Vehicle ID: 3, Event Type: start, Timestamp: 185.31374242832138 -Vehicle ID: 3, Event Type: start, Timestamp: 185.32345768544764 -Vehicle ID: 3, Event Type: start, Timestamp: 185.33250274675808 -Vehicle ID: 3, Event Type: start, Timestamp: 185.3701513860044 -Vehicle ID: 3, Event Type: start, Timestamp: 185.58249798591567 -Vehicle ID: 3, Event Type: start, Timestamp: 189.0 -Vehicle ID: 3, Event Type: start, Timestamp: 189.0 -Vehicle ID: 3, Event Type: start, Timestamp: 189.0 -Vehicle ID: 3, Event Type: start, Timestamp: 189.0 -Vehicle ID: 3, Event Type: start, Timestamp: 189.0 -Vehicle ID: 3, Event Type: start, Timestamp: 189.0 -Vehicle ID: 3, Event Type: start, Timestamp: 189.0 -Vehicle ID: 3, Event Type: start, Timestamp: 189.0 -Vehicle ID: 3, Event Type: start, Timestamp: 189.0 -Vehicle ID: 3, Event Type: start, Timestamp: 189.0 -Vehicle ID: 3, Event Type: start, Timestamp: 192.10256872591722 -Vehicle ID: 3, Event Type: start, Timestamp: 192.31359163914726 -Vehicle ID: 3, Event Type: start, Timestamp: 192.34793101801878 -Vehicle ID: 3, Event Type: start, Timestamp: 192.35200245291432 -Vehicle ID: 3, Event Type: start, Timestamp: 192.40033005307833 -Vehicle ID: 3, Event Type: start, Timestamp: 192.4134806034812 -Vehicle ID: 3, Event Type: start, Timestamp: 192.43527337960703 -Vehicle ID: 3, Event Type: start, Timestamp: 192.4450257951157 -Vehicle ID: 3, Event Type: start, Timestamp: 192.5000907831079 -Vehicle ID: 3, Event Type: start, Timestamp: 192.5344182339007 -Vehicle ID: 3, Event Type: start, Timestamp: 195.36694548274608 -Vehicle ID: 3, Event Type: start, Timestamp: 195.51108399165085 -Vehicle ID: 3, Event Type: start, Timestamp: 195.6332243286144 -Vehicle ID: 3, Event Type: start, Timestamp: 195.67539948539783 -Vehicle ID: 3, Event Type: start, Timestamp: 195.7350025000328 -Vehicle ID: 3, Event Type: start, Timestamp: 195.77136562843162 -Vehicle ID: 3, Event Type: start, Timestamp: 195.77309679391664 -Vehicle ID: 3, Event Type: start, Timestamp: 195.7769123854943 -Vehicle ID: 3, Event Type: start, Timestamp: 195.78539127187503 -Vehicle ID: 3, Event Type: start, Timestamp: 195.8024184665924 -Vehicle ID: 3, Event Type: start, Timestamp: 198.6899594874977 -Vehicle ID: 3, Event Type: start, Timestamp: 198.84733698336157 -Vehicle ID: 3, Event Type: start, Timestamp: 198.88912884049347 -Vehicle ID: 3, Event Type: start, Timestamp: 198.9286933899742 -Vehicle ID: 3, Event Type: start, Timestamp: 199.00944628875286 -Vehicle ID: 3, Event Type: start, Timestamp: 199.05056224467592 -Vehicle ID: 3, Event Type: start, Timestamp: 199.08289389102814 -Vehicle ID: 3, Event Type: start, Timestamp: 199.14775545590652 -Vehicle ID: 3, Event Type: start, Timestamp: 199.1753945645851 -Vehicle ID: 3, Event Type: start, Timestamp: 199.24080607041245 -Vehicle ID: 5, Event Type: start, Timestamp: 230.31664129548037 -Vehicle ID: 5, Event Type: end, Timestamp: 230.31664129548037 -Vehicle ID: 5, Event Type: start, Timestamp: 230.43777232998855 -Vehicle ID: 5, Event Type: end, Timestamp: 230.43777232998855 -Vehicle ID: 5, Event Type: start, Timestamp: 230.4669981200018 -Vehicle ID: 5, Event Type: end, Timestamp: 230.4669981200018 -Vehicle ID: 5, Event Type: start, Timestamp: 230.47049233752423 -Vehicle ID: 5, Event Type: end, Timestamp: 230.47049233752423 -Vehicle ID: 5, Event Type: start, Timestamp: 230.507611897847 -Vehicle ID: 5, Event Type: end, Timestamp: 230.507611897847 -Vehicle ID: 5, Event Type: start, Timestamp: 230.5252912152482 -Vehicle ID: 5, Event Type: end, Timestamp: 230.5252912152482 -Vehicle ID: 5, Event Type: start, Timestamp: 230.57795997016905 -Vehicle ID: 5, Event Type: end, Timestamp: 230.57795997016905 -Vehicle ID: 5, Event Type: start, Timestamp: 230.58229794319544 -Vehicle ID: 5, Event Type: end, Timestamp: 230.58229794319544 -Vehicle ID: 5, Event Type: start, Timestamp: 230.59244497942257 -Vehicle ID: 5, Event Type: end, Timestamp: 230.59244497942257 -Vehicle ID: 5, Event Type: start, Timestamp: 230.59736971409123 -Vehicle ID: 5, Event Type: end, Timestamp: 230.59736971409123 -Vehicle ID: 5, Event Type: start, Timestamp: 230.59925552280913 -Vehicle ID: 5, Event Type: end, Timestamp: 230.59925552280913 -Vehicle ID: 5, Event Type: start, Timestamp: 230.6005747719904 -Vehicle ID: 5, Event Type: end, Timestamp: 230.6005747719904 -Vehicle ID: 5, Event Type: start, Timestamp: 230.60844864975988 -Vehicle ID: 5, Event Type: end, Timestamp: 230.60844864975988 -Vehicle ID: 5, Event Type: start, Timestamp: 230.62483370107324 -Vehicle ID: 5, Event Type: end, Timestamp: 230.62483370107324 -Vehicle ID: 5, Event Type: start, Timestamp: 230.63264039963747 -Vehicle ID: 5, Event Type: end, Timestamp: 230.63264039963747 -Vehicle ID: 5, Event Type: start, Timestamp: 230.64569662314722 -Vehicle ID: 5, Event Type: end, Timestamp: 230.64569662314722 -Vehicle ID: 5, Event Type: start, Timestamp: 230.65069204188958 -Vehicle ID: 5, Event Type: end, Timestamp: 230.65069204188958 -Vehicle ID: 5, Event Type: start, Timestamp: 230.6629783634811 -Vehicle ID: 5, Event Type: end, Timestamp: 230.6629783634811 -Vehicle ID: 5, Event Type: start, Timestamp: 230.6731654968688 -Vehicle ID: 5, Event Type: end, Timestamp: 230.6731654968688 -Vehicle ID: 5, Event Type: start, Timestamp: 230.6797863090111 -Vehicle ID: 5, Event Type: end, Timestamp: 230.6797863090111 -Vehicle ID: 5, Event Type: start, Timestamp: 230.6980749527035 -Vehicle ID: 5, Event Type: end, Timestamp: 230.6980749527035 -Vehicle ID: 5, Event Type: start, Timestamp: 230.7065578975353 -Vehicle ID: 5, Event Type: end, Timestamp: 230.7065578975353 -Vehicle ID: 5, Event Type: start, Timestamp: 230.71544162388594 -Vehicle ID: 5, Event Type: end, Timestamp: 230.71544162388594 -Vehicle ID: 5, Event Type: start, Timestamp: 230.71575516779617 -Vehicle ID: 5, Event Type: end, Timestamp: 230.71575516779617 -Vehicle ID: 5, Event Type: start, Timestamp: 230.7162161523077 -Vehicle ID: 5, Event Type: end, Timestamp: 230.7162161523077 -Vehicle ID: 5, Event Type: start, Timestamp: 230.7196427958835 -Vehicle ID: 5, Event Type: end, Timestamp: 230.7196427958835 -Vehicle ID: 5, Event Type: start, Timestamp: 230.72098064222192 -Vehicle ID: 5, Event Type: end, Timestamp: 230.72098064222192 -Vehicle ID: 5, Event Type: start, Timestamp: 230.73081564181555 -Vehicle ID: 5, Event Type: end, Timestamp: 230.73081564181555 -Vehicle ID: 5, Event Type: start, Timestamp: 230.74095885464635 -Vehicle ID: 5, Event Type: end, Timestamp: 230.74095885464635 -Vehicle ID: 5, Event Type: start, Timestamp: 230.74656573437537 -Vehicle ID: 5, Event Type: end, Timestamp: 230.74656573437537 -Vehicle ID: 5, Event Type: start, Timestamp: 230.7581560804016 -Vehicle ID: 5, Event Type: end, Timestamp: 230.7581560804016 -Vehicle ID: 5, Event Type: start, Timestamp: 230.7686443444904 -Vehicle ID: 5, Event Type: end, Timestamp: 230.7686443444904 -Vehicle ID: 5, Event Type: start, Timestamp: 230.76949011581317 -Vehicle ID: 5, Event Type: end, Timestamp: 230.76949011581317 -Vehicle ID: 5, Event Type: start, Timestamp: 230.78971491480726 -Vehicle ID: 5, Event Type: end, Timestamp: 230.78971491480726 -Vehicle ID: 5, Event Type: start, Timestamp: 230.79048350310578 -Vehicle ID: 5, Event Type: end, Timestamp: 230.79048350310578 -Vehicle ID: 5, Event Type: start, Timestamp: 230.7936676546537 -Vehicle ID: 5, Event Type: end, Timestamp: 230.7936676546537 -Vehicle ID: 5, Event Type: start, Timestamp: 230.79602097207905 -Vehicle ID: 5, Event Type: end, Timestamp: 230.79602097207905 -Vehicle ID: 5, Event Type: start, Timestamp: 230.81353158586242 -Vehicle ID: 5, Event Type: end, Timestamp: 230.81353158586242 -Vehicle ID: 5, Event Type: start, Timestamp: 230.81491792771507 -Vehicle ID: 5, Event Type: end, Timestamp: 230.81491792771507 -Vehicle ID: 5, Event Type: start, Timestamp: 230.81848537169685 -Vehicle ID: 5, Event Type: end, Timestamp: 230.81848537169685 -Vehicle ID: 5, Event Type: start, Timestamp: 230.82112818483114 -Vehicle ID: 5, Event Type: end, Timestamp: 230.82112818483114 -Vehicle ID: 5, Event Type: start, Timestamp: 230.8220145777036 -Vehicle ID: 5, Event Type: end, Timestamp: 230.8220145777036 -Vehicle ID: 5, Event Type: start, Timestamp: 230.82661033611626 -Vehicle ID: 5, Event Type: end, Timestamp: 230.82661033611626 -Vehicle ID: 5, Event Type: start, Timestamp: 230.838906724935 -Vehicle ID: 5, Event Type: end, Timestamp: 230.838906724935 -Vehicle ID: 5, Event Type: start, Timestamp: 230.84967497804254 -Vehicle ID: 5, Event Type: end, Timestamp: 230.84967497804254 -Vehicle ID: 5, Event Type: start, Timestamp: 230.88103052990513 -Vehicle ID: 5, Event Type: end, Timestamp: 230.88103052990513 -Vehicle ID: 5, Event Type: start, Timestamp: 230.88975553865887 -Vehicle ID: 5, Event Type: end, Timestamp: 230.88975553865887 -Vehicle ID: 5, Event Type: start, Timestamp: 230.89105826964996 -Vehicle ID: 5, Event Type: end, Timestamp: 230.89105826964996 -Vehicle ID: 5, Event Type: start, Timestamp: 230.89119073925795 -Vehicle ID: 5, Event Type: end, Timestamp: 230.89119073925795 -Vehicle ID: 5, Event Type: start, Timestamp: 230.90142381345194 -Vehicle ID: 5, Event Type: end, Timestamp: 230.90142381345194 -Vehicle ID: 5, Event Type: start, Timestamp: 230.90414769678802 -Vehicle ID: 5, Event Type: end, Timestamp: 230.90414769678802 -Vehicle ID: 5, Event Type: start, Timestamp: 230.90584379827644 -Vehicle ID: 5, Event Type: end, Timestamp: 230.90584379827644 -Vehicle ID: 5, Event Type: start, Timestamp: 230.9112186500487 -Vehicle ID: 5, Event Type: end, Timestamp: 230.9112186500487 -Vehicle ID: 5, Event Type: start, Timestamp: 230.91701955655486 -Vehicle ID: 5, Event Type: end, Timestamp: 230.91701955655486 -Vehicle ID: 5, Event Type: start, Timestamp: 230.92416719007622 -Vehicle ID: 5, Event Type: end, Timestamp: 230.92416719007622 -Vehicle ID: 5, Event Type: start, Timestamp: 230.95215756838152 -Vehicle ID: 5, Event Type: end, Timestamp: 230.95215756838152 -Vehicle ID: 5, Event Type: start, Timestamp: 230.9659347467519 -Vehicle ID: 5, Event Type: end, Timestamp: 230.9659347467519 -Vehicle ID: 5, Event Type: start, Timestamp: 230.9720238425998 -Vehicle ID: 5, Event Type: end, Timestamp: 230.9720238425998 -Vehicle ID: 5, Event Type: start, Timestamp: 230.97478563775127 -Vehicle ID: 5, Event Type: end, Timestamp: 230.97478563775127 -Vehicle ID: 5, Event Type: start, Timestamp: 230.97685786462003 -Vehicle ID: 5, Event Type: end, Timestamp: 230.97685786462003 -Vehicle ID: 5, Event Type: start, Timestamp: 230.9819191051995 -Vehicle ID: 5, Event Type: end, Timestamp: 230.9819191051995 -Vehicle ID: 5, Event Type: start, Timestamp: 230.99934109132596 -Vehicle ID: 5, Event Type: end, Timestamp: 230.99934109132596 -Vehicle ID: 5, Event Type: start, Timestamp: 231.016069853024 -Vehicle ID: 5, Event Type: end, Timestamp: 231.016069853024 -Vehicle ID: 5, Event Type: start, Timestamp: 231.0212547969928 -Vehicle ID: 5, Event Type: end, Timestamp: 231.0212547969928 -Vehicle ID: 5, Event Type: start, Timestamp: 231.0252620603701 -Vehicle ID: 5, Event Type: end, Timestamp: 231.0252620603701 -Vehicle ID: 5, Event Type: start, Timestamp: 231.04423236075235 -Vehicle ID: 5, Event Type: end, Timestamp: 231.04423236075235 -Vehicle ID: 5, Event Type: start, Timestamp: 231.0630809727534 -Vehicle ID: 5, Event Type: end, Timestamp: 231.0630809727534 -Vehicle ID: 5, Event Type: start, Timestamp: 231.07740679810462 -Vehicle ID: 5, Event Type: end, Timestamp: 231.07740679810462 -Vehicle ID: 5, Event Type: start, Timestamp: 231.08413945409612 -Vehicle ID: 5, Event Type: end, Timestamp: 231.08413945409612 -Vehicle ID: 5, Event Type: start, Timestamp: 231.1028865973175 -Vehicle ID: 5, Event Type: end, Timestamp: 231.1028865973175 -Vehicle ID: 5, Event Type: start, Timestamp: 231.10454584422865 -Vehicle ID: 5, Event Type: end, Timestamp: 231.10454584422865 -Vehicle ID: 5, Event Type: start, Timestamp: 231.1230269289867 -Vehicle ID: 5, Event Type: end, Timestamp: 231.1230269289867 -Vehicle ID: 5, Event Type: start, Timestamp: 231.1285181587533 -Vehicle ID: 5, Event Type: end, Timestamp: 231.1285181587533 -Vehicle ID: 5, Event Type: start, Timestamp: 231.13353733814054 -Vehicle ID: 5, Event Type: end, Timestamp: 231.13353733814054 -Vehicle ID: 5, Event Type: start, Timestamp: 231.1450106949585 -Vehicle ID: 5, Event Type: end, Timestamp: 231.1450106949585 -Vehicle ID: 5, Event Type: start, Timestamp: 231.1469754060731 -Vehicle ID: 5, Event Type: end, Timestamp: 231.1469754060731 -Vehicle ID: 5, Event Type: start, Timestamp: 231.18645081718861 -Vehicle ID: 5, Event Type: end, Timestamp: 231.18645081718861 -Vehicle ID: 5, Event Type: start, Timestamp: 231.19375187549824 -Vehicle ID: 5, Event Type: end, Timestamp: 231.19375187549824 -Vehicle ID: 5, Event Type: start, Timestamp: 231.25277098470198 -Vehicle ID: 5, Event Type: end, Timestamp: 231.25277098470198 -Vehicle ID: 5, Event Type: start, Timestamp: 231.26975212198442 -Vehicle ID: 5, Event Type: end, Timestamp: 231.26975212198442 -Vehicle ID: 5, Event Type: start, Timestamp: 231.27712400126066 -Vehicle ID: 5, Event Type: end, Timestamp: 231.27712400126066 -Vehicle ID: 5, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 5, Event Type: end, Timestamp: 231.30006696996352 -Vehicle ID: 5, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 5, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 5, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 5, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 5, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 5, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 5, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 5, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 5, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 5, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 5, Event Type: start, Timestamp: 234.53727122082793 -Vehicle ID: 5, Event Type: start, Timestamp: 234.55336921745038 -Vehicle ID: 5, Event Type: start, Timestamp: 234.5995093865152 -Vehicle ID: 5, Event Type: start, Timestamp: 234.65916369264255 -Vehicle ID: 5, Event Type: start, Timestamp: 234.6792162854212 -Vehicle ID: 5, Event Type: start, Timestamp: 234.68375167189106 -Vehicle ID: 5, Event Type: start, Timestamp: 234.71044268444453 -Vehicle ID: 5, Event Type: start, Timestamp: 234.77559911525984 -Vehicle ID: 5, Event Type: start, Timestamp: 234.8353696146659 -Vehicle ID: 5, Event Type: start, Timestamp: 234.9219869145761 -Vehicle ID: 5, Event Type: start, Timestamp: 237.74029784106037 -Vehicle ID: 5, Event Type: start, Timestamp: 237.78378484536086 -Vehicle ID: 5, Event Type: start, Timestamp: 237.85900622078185 -Vehicle ID: 5, Event Type: start, Timestamp: 237.94571983713365 -Vehicle ID: 5, Event Type: start, Timestamp: 237.95401422838006 -Vehicle ID: 5, Event Type: start, Timestamp: 238.04329336057575 -Vehicle ID: 5, Event Type: start, Timestamp: 238.06040861627181 -Vehicle ID: 5, Event Type: start, Timestamp: 238.0608181620015 -Vehicle ID: 5, Event Type: start, Timestamp: 238.10994961953583 -Vehicle ID: 5, Event Type: start, Timestamp: 238.27995383282118 -Vehicle ID: 5, Event Type: start, Timestamp: 241.05643953455115 -Vehicle ID: 5, Event Type: start, Timestamp: 241.07304256996474 -Vehicle ID: 5, Event Type: start, Timestamp: 241.12786542068787 -Vehicle ID: 5, Event Type: start, Timestamp: 241.3221493468199 -Vehicle ID: 5, Event Type: start, Timestamp: 241.3930565801473 -Vehicle ID: 5, Event Type: start, Timestamp: 241.4294037854494 -Vehicle ID: 5, Event Type: start, Timestamp: 241.47991410918314 -Vehicle ID: 5, Event Type: start, Timestamp: 241.50428983946048 -Vehicle ID: 5, Event Type: start, Timestamp: 241.51736402339205 -Vehicle ID: 5, Event Type: start, Timestamp: 241.59773505870535 -Vehicle ID: 5, Event Type: start, Timestamp: 252.0 -Vehicle ID: 5, Event Type: start, Timestamp: 252.0 -Vehicle ID: 5, Event Type: start, Timestamp: 252.0 -Vehicle ID: 5, Event Type: start, Timestamp: 252.0 -Vehicle ID: 5, Event Type: start, Timestamp: 252.0 -Vehicle ID: 5, Event Type: start, Timestamp: 252.0 -Vehicle ID: 5, Event Type: start, Timestamp: 252.0 -Vehicle ID: 5, Event Type: start, Timestamp: 252.0 -Vehicle ID: 5, Event Type: start, Timestamp: 252.0 -Vehicle ID: 5, Event Type: start, Timestamp: 252.0 -Vehicle ID: 5, Event Type: start, Timestamp: 255.1177739173595 -Vehicle ID: 5, Event Type: start, Timestamp: 255.13383339664364 -Vehicle ID: 5, Event Type: start, Timestamp: 255.1551764045627 -Vehicle ID: 5, Event Type: start, Timestamp: 255.21529054174545 -Vehicle ID: 5, Event Type: start, Timestamp: 255.33809377912004 -Vehicle ID: 5, Event Type: start, Timestamp: 255.36358080659969 -Vehicle ID: 5, Event Type: start, Timestamp: 255.3845508434304 -Vehicle ID: 5, Event Type: start, Timestamp: 255.4418715664773 -Vehicle ID: 5, Event Type: start, Timestamp: 255.56114718882512 -Vehicle ID: 5, Event Type: start, Timestamp: 255.56423693872185 -Vehicle ID: 5, Event Type: start, Timestamp: 258.24349872546856 -Vehicle ID: 5, Event Type: start, Timestamp: 258.4650072750476 -Vehicle ID: 5, Event Type: start, Timestamp: 258.4761942345989 -Vehicle ID: 5, Event Type: start, Timestamp: 258.67034652720895 -Vehicle ID: 5, Event Type: start, Timestamp: 258.6983222507228 -Vehicle ID: 5, Event Type: start, Timestamp: 258.7056804657048 -Vehicle ID: 5, Event Type: start, Timestamp: 258.8436158843273 -Vehicle ID: 5, Event Type: start, Timestamp: 258.8446200790034 -Vehicle ID: 5, Event Type: start, Timestamp: 258.8567466592009 -Vehicle ID: 5, Event Type: start, Timestamp: 259.13222223630964 -Vehicle ID: 5, Event Type: start, Timestamp: 261.41927541729626 -Vehicle ID: 5, Event Type: start, Timestamp: 261.85981182977 -Vehicle ID: 5, Event Type: start, Timestamp: 262.00744313857297 -Vehicle ID: 5, Event Type: start, Timestamp: 262.04419666422973 -Vehicle ID: 5, Event Type: start, Timestamp: 262.12052432385553 -Vehicle ID: 5, Event Type: start, Timestamp: 262.13825545081676 -Vehicle ID: 5, Event Type: start, Timestamp: 262.1688500214058 -Vehicle ID: 5, Event Type: start, Timestamp: 262.20298316224586 -Vehicle ID: 5, Event Type: start, Timestamp: 262.2846554677608 -Vehicle ID: 5, Event Type: start, Timestamp: 262.3757844346226 -Vehicle ID: 7, Event Type: start, Timestamp: 286.2486675293738 -Vehicle ID: 7, Event Type: end, Timestamp: 286.2486675293738 -Vehicle ID: 7, Event Type: start, Timestamp: 286.30142694243233 -Vehicle ID: 7, Event Type: end, Timestamp: 286.30142694243233 -Vehicle ID: 7, Event Type: start, Timestamp: 286.48280313073826 -Vehicle ID: 7, Event Type: end, Timestamp: 286.48280313073826 -Vehicle ID: 7, Event Type: start, Timestamp: 286.4932018160594 -Vehicle ID: 7, Event Type: end, Timestamp: 286.4932018160594 -Vehicle ID: 7, Event Type: start, Timestamp: 286.52972485757994 -Vehicle ID: 7, Event Type: end, Timestamp: 286.52972485757994 -Vehicle ID: 7, Event Type: start, Timestamp: 286.54136192566267 -Vehicle ID: 7, Event Type: end, Timestamp: 286.54136192566267 -Vehicle ID: 7, Event Type: start, Timestamp: 286.5533462943098 -Vehicle ID: 7, Event Type: end, Timestamp: 286.5533462943098 -Vehicle ID: 7, Event Type: start, Timestamp: 286.59874296396134 -Vehicle ID: 7, Event Type: end, Timestamp: 286.59874296396134 -Vehicle ID: 7, Event Type: start, Timestamp: 286.599813491626 -Vehicle ID: 7, Event Type: end, Timestamp: 286.599813491626 -Vehicle ID: 7, Event Type: start, Timestamp: 286.60849584854896 -Vehicle ID: 7, Event Type: end, Timestamp: 286.60849584854896 -Vehicle ID: 7, Event Type: start, Timestamp: 286.61295374293053 -Vehicle ID: 7, Event Type: end, Timestamp: 286.61295374293053 -Vehicle ID: 7, Event Type: start, Timestamp: 286.6214982533734 -Vehicle ID: 7, Event Type: end, Timestamp: 286.6214982533734 -Vehicle ID: 7, Event Type: start, Timestamp: 286.626951889465 -Vehicle ID: 7, Event Type: end, Timestamp: 286.626951889465 -Vehicle ID: 7, Event Type: start, Timestamp: 286.62978501072746 -Vehicle ID: 7, Event Type: end, Timestamp: 286.62978501072746 -Vehicle ID: 7, Event Type: start, Timestamp: 286.6338491096368 -Vehicle ID: 7, Event Type: end, Timestamp: 286.6338491096368 -Vehicle ID: 7, Event Type: start, Timestamp: 286.6339046483647 -Vehicle ID: 7, Event Type: end, Timestamp: 286.6339046483647 -Vehicle ID: 7, Event Type: start, Timestamp: 286.64725270153684 -Vehicle ID: 7, Event Type: end, Timestamp: 286.64725270153684 -Vehicle ID: 7, Event Type: start, Timestamp: 286.64828238775397 -Vehicle ID: 7, Event Type: end, Timestamp: 286.64828238775397 -Vehicle ID: 7, Event Type: start, Timestamp: 286.6529796280167 -Vehicle ID: 7, Event Type: end, Timestamp: 286.6529796280167 -Vehicle ID: 7, Event Type: start, Timestamp: 286.6591985569743 -Vehicle ID: 7, Event Type: end, Timestamp: 286.6591985569743 -Vehicle ID: 7, Event Type: start, Timestamp: 286.6592568661335 -Vehicle ID: 7, Event Type: end, Timestamp: 286.6592568661335 -Vehicle ID: 7, Event Type: start, Timestamp: 286.6743182721671 -Vehicle ID: 7, Event Type: end, Timestamp: 286.6743182721671 -Vehicle ID: 7, Event Type: start, Timestamp: 286.67918450935315 -Vehicle ID: 7, Event Type: end, Timestamp: 286.67918450935315 -Vehicle ID: 7, Event Type: start, Timestamp: 286.679588470797 -Vehicle ID: 7, Event Type: end, Timestamp: 286.679588470797 -Vehicle ID: 7, Event Type: start, Timestamp: 286.68506006549524 -Vehicle ID: 7, Event Type: end, Timestamp: 286.68506006549524 -Vehicle ID: 7, Event Type: start, Timestamp: 286.68560052493535 -Vehicle ID: 7, Event Type: end, Timestamp: 286.68560052493535 -Vehicle ID: 7, Event Type: start, Timestamp: 286.68992542641905 -Vehicle ID: 7, Event Type: end, Timestamp: 286.68992542641905 -Vehicle ID: 7, Event Type: start, Timestamp: 286.692735559887 -Vehicle ID: 7, Event Type: end, Timestamp: 286.692735559887 -Vehicle ID: 7, Event Type: start, Timestamp: 286.7022656534072 -Vehicle ID: 7, Event Type: end, Timestamp: 286.7022656534072 -Vehicle ID: 7, Event Type: start, Timestamp: 286.7137269637127 -Vehicle ID: 7, Event Type: end, Timestamp: 286.7137269637127 -Vehicle ID: 7, Event Type: start, Timestamp: 286.7155584353457 -Vehicle ID: 7, Event Type: end, Timestamp: 286.7155584353457 -Vehicle ID: 7, Event Type: start, Timestamp: 286.71585474556144 -Vehicle ID: 7, Event Type: end, Timestamp: 286.71585474556144 -Vehicle ID: 7, Event Type: start, Timestamp: 286.7210608365174 -Vehicle ID: 7, Event Type: end, Timestamp: 286.7210608365174 -Vehicle ID: 7, Event Type: start, Timestamp: 286.7215609014895 -Vehicle ID: 7, Event Type: end, Timestamp: 286.7215609014895 -Vehicle ID: 7, Event Type: start, Timestamp: 286.7226514847775 -Vehicle ID: 7, Event Type: end, Timestamp: 286.7226514847775 -Vehicle ID: 7, Event Type: start, Timestamp: 286.7389519077027 -Vehicle ID: 7, Event Type: end, Timestamp: 286.7389519077027 -Vehicle ID: 7, Event Type: start, Timestamp: 286.7441554552264 -Vehicle ID: 7, Event Type: end, Timestamp: 286.7441554552264 -Vehicle ID: 7, Event Type: start, Timestamp: 286.7477220478195 -Vehicle ID: 7, Event Type: end, Timestamp: 286.7477220478195 -Vehicle ID: 7, Event Type: start, Timestamp: 286.7558673456066 -Vehicle ID: 7, Event Type: end, Timestamp: 286.7558673456066 -Vehicle ID: 7, Event Type: start, Timestamp: 286.75608406940273 -Vehicle ID: 7, Event Type: end, Timestamp: 286.75608406940273 -Vehicle ID: 7, Event Type: start, Timestamp: 286.7561166538875 -Vehicle ID: 7, Event Type: end, Timestamp: 286.7561166538875 -Vehicle ID: 7, Event Type: start, Timestamp: 286.7681863612352 -Vehicle ID: 7, Event Type: end, Timestamp: 286.7681863612352 -Vehicle ID: 7, Event Type: start, Timestamp: 286.79226048547395 -Vehicle ID: 7, Event Type: end, Timestamp: 286.79226048547395 -Vehicle ID: 7, Event Type: start, Timestamp: 286.7935514280163 -Vehicle ID: 7, Event Type: end, Timestamp: 286.7935514280163 -Vehicle ID: 7, Event Type: start, Timestamp: 286.7935639562887 -Vehicle ID: 7, Event Type: end, Timestamp: 286.7935639562887 -Vehicle ID: 7, Event Type: start, Timestamp: 286.8017719013135 -Vehicle ID: 7, Event Type: end, Timestamp: 286.8017719013135 -Vehicle ID: 7, Event Type: start, Timestamp: 286.81529395595004 -Vehicle ID: 7, Event Type: end, Timestamp: 286.81529395595004 -Vehicle ID: 7, Event Type: start, Timestamp: 286.8213853681062 -Vehicle ID: 7, Event Type: end, Timestamp: 286.8213853681062 -Vehicle ID: 7, Event Type: start, Timestamp: 286.82863597563335 -Vehicle ID: 7, Event Type: end, Timestamp: 286.82863597563335 -Vehicle ID: 7, Event Type: start, Timestamp: 286.8293599218265 -Vehicle ID: 7, Event Type: end, Timestamp: 286.8293599218265 -Vehicle ID: 7, Event Type: start, Timestamp: 286.84209367574863 -Vehicle ID: 7, Event Type: end, Timestamp: 286.84209367574863 -Vehicle ID: 7, Event Type: start, Timestamp: 286.8508632290787 -Vehicle ID: 7, Event Type: end, Timestamp: 286.8508632290787 -Vehicle ID: 7, Event Type: start, Timestamp: 286.85141832772524 -Vehicle ID: 7, Event Type: end, Timestamp: 286.85141832772524 -Vehicle ID: 7, Event Type: start, Timestamp: 286.85225842293255 -Vehicle ID: 7, Event Type: end, Timestamp: 286.85225842293255 -Vehicle ID: 7, Event Type: start, Timestamp: 286.8583008343282 -Vehicle ID: 7, Event Type: end, Timestamp: 286.8583008343282 -Vehicle ID: 7, Event Type: start, Timestamp: 286.86425024013255 -Vehicle ID: 7, Event Type: end, Timestamp: 286.86425024013255 -Vehicle ID: 7, Event Type: start, Timestamp: 286.8656590903207 -Vehicle ID: 7, Event Type: end, Timestamp: 286.8656590903207 -Vehicle ID: 7, Event Type: start, Timestamp: 286.87691477684683 -Vehicle ID: 7, Event Type: end, Timestamp: 286.87691477684683 -Vehicle ID: 7, Event Type: start, Timestamp: 286.87996861005297 -Vehicle ID: 7, Event Type: end, Timestamp: 286.87996861005297 -Vehicle ID: 7, Event Type: start, Timestamp: 286.88343638167174 -Vehicle ID: 7, Event Type: end, Timestamp: 286.88343638167174 -Vehicle ID: 7, Event Type: start, Timestamp: 286.88925405686206 -Vehicle ID: 7, Event Type: end, Timestamp: 286.88925405686206 -Vehicle ID: 7, Event Type: start, Timestamp: 286.89203736552327 -Vehicle ID: 7, Event Type: end, Timestamp: 286.89203736552327 -Vehicle ID: 7, Event Type: start, Timestamp: 286.8921323926715 -Vehicle ID: 7, Event Type: end, Timestamp: 286.8921323926715 -Vehicle ID: 7, Event Type: start, Timestamp: 286.8965859524383 -Vehicle ID: 7, Event Type: end, Timestamp: 286.8965859524383 -Vehicle ID: 7, Event Type: start, Timestamp: 286.9191052725913 -Vehicle ID: 7, Event Type: end, Timestamp: 286.9191052725913 -Vehicle ID: 7, Event Type: start, Timestamp: 286.92662576786495 -Vehicle ID: 7, Event Type: end, Timestamp: 286.92662576786495 -Vehicle ID: 7, Event Type: start, Timestamp: 286.93737477075916 -Vehicle ID: 7, Event Type: end, Timestamp: 286.93737477075916 -Vehicle ID: 7, Event Type: start, Timestamp: 286.9412963601412 -Vehicle ID: 7, Event Type: end, Timestamp: 286.9412963601412 -Vehicle ID: 7, Event Type: start, Timestamp: 286.9659449129824 -Vehicle ID: 7, Event Type: end, Timestamp: 286.9659449129824 -Vehicle ID: 7, Event Type: start, Timestamp: 286.9711240831367 -Vehicle ID: 7, Event Type: end, Timestamp: 286.9711240831367 -Vehicle ID: 7, Event Type: start, Timestamp: 287.0213804977999 -Vehicle ID: 7, Event Type: end, Timestamp: 287.0213804977999 -Vehicle ID: 7, Event Type: start, Timestamp: 287.0364844694459 -Vehicle ID: 7, Event Type: end, Timestamp: 287.0364844694459 -Vehicle ID: 7, Event Type: start, Timestamp: 287.04858746386304 -Vehicle ID: 7, Event Type: end, Timestamp: 287.04858746386304 -Vehicle ID: 7, Event Type: start, Timestamp: 287.0565090846145 -Vehicle ID: 7, Event Type: end, Timestamp: 287.0565090846145 -Vehicle ID: 7, Event Type: start, Timestamp: 287.0640274759096 -Vehicle ID: 7, Event Type: end, Timestamp: 287.0640274759096 -Vehicle ID: 7, Event Type: start, Timestamp: 287.06508874841467 -Vehicle ID: 7, Event Type: end, Timestamp: 287.06508874841467 -Vehicle ID: 7, Event Type: start, Timestamp: 287.0664517058599 -Vehicle ID: 7, Event Type: end, Timestamp: 287.0664517058599 -Vehicle ID: 7, Event Type: start, Timestamp: 287.1050236805988 -Vehicle ID: 7, Event Type: end, Timestamp: 287.1050236805988 -Vehicle ID: 7, Event Type: start, Timestamp: 287.1306008074966 -Vehicle ID: 7, Event Type: end, Timestamp: 287.1306008074966 -Vehicle ID: 7, Event Type: start, Timestamp: 287.16951335196745 -Vehicle ID: 7, Event Type: end, Timestamp: 287.16951335196745 -Vehicle ID: 7, Event Type: start, Timestamp: 287.1741449911549 -Vehicle ID: 7, Event Type: end, Timestamp: 287.1741449911549 -Vehicle ID: 7, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 7, Event Type: end, Timestamp: 287.1908033118669 -Vehicle ID: 7, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 7, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 7, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 7, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 7, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 7, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 7, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 7, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 7, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 7, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 7, Event Type: start, Timestamp: 290.24124089007273 -Vehicle ID: 7, Event Type: start, Timestamp: 290.41877296373553 -Vehicle ID: 7, Event Type: start, Timestamp: 290.43105636686175 -Vehicle ID: 7, Event Type: start, Timestamp: 290.498048222908 -Vehicle ID: 7, Event Type: start, Timestamp: 290.5593493740203 -Vehicle ID: 7, Event Type: start, Timestamp: 290.57981768352386 -Vehicle ID: 7, Event Type: start, Timestamp: 290.6549848822593 -Vehicle ID: 7, Event Type: start, Timestamp: 290.6681292232688 -Vehicle ID: 7, Event Type: start, Timestamp: 290.7207085294063 -Vehicle ID: 7, Event Type: start, Timestamp: 290.77066763969765 -Vehicle ID: 7, Event Type: start, Timestamp: 293.5913748047546 -Vehicle ID: 7, Event Type: start, Timestamp: 293.8280469083808 -Vehicle ID: 7, Event Type: start, Timestamp: 293.83567375217194 -Vehicle ID: 7, Event Type: start, Timestamp: 293.8427277924664 -Vehicle ID: 7, Event Type: start, Timestamp: 293.97497682558827 -Vehicle ID: 7, Event Type: start, Timestamp: 293.99938520528264 -Vehicle ID: 7, Event Type: start, Timestamp: 294.01136646545797 -Vehicle ID: 7, Event Type: start, Timestamp: 294.08481012557667 -Vehicle ID: 7, Event Type: start, Timestamp: 294.1257515599836 -Vehicle ID: 7, Event Type: start, Timestamp: 294.23945610991314 -Vehicle ID: 7, Event Type: start, Timestamp: 297.0946120520787 -Vehicle ID: 7, Event Type: start, Timestamp: 297.23187745387395 -Vehicle ID: 7, Event Type: start, Timestamp: 297.2596917175385 -Vehicle ID: 7, Event Type: start, Timestamp: 297.2735806964041 -Vehicle ID: 7, Event Type: start, Timestamp: 297.44069451034954 -Vehicle ID: 7, Event Type: start, Timestamp: 297.45388525629045 -Vehicle ID: 7, Event Type: start, Timestamp: 297.5130611162925 -Vehicle ID: 7, Event Type: start, Timestamp: 297.53546191262075 -Vehicle ID: 7, Event Type: start, Timestamp: 297.53652905789505 -Vehicle ID: 7, Event Type: start, Timestamp: 297.74277561994523 -Vehicle ID: 7, Event Type: start, Timestamp: 315.0 -Vehicle ID: 7, Event Type: start, Timestamp: 315.0 -Vehicle ID: 7, Event Type: start, Timestamp: 315.0 -Vehicle ID: 7, Event Type: start, Timestamp: 315.0 -Vehicle ID: 7, Event Type: start, Timestamp: 315.0 -Vehicle ID: 7, Event Type: start, Timestamp: 315.0 -Vehicle ID: 7, Event Type: start, Timestamp: 315.0 -Vehicle ID: 7, Event Type: start, Timestamp: 315.0 -Vehicle ID: 7, Event Type: start, Timestamp: 315.0 -Vehicle ID: 7, Event Type: start, Timestamp: 315.0 -Vehicle ID: 7, Event Type: start, Timestamp: 317.9779666383999 -Vehicle ID: 7, Event Type: start, Timestamp: 318.2344157422331 -Vehicle ID: 7, Event Type: start, Timestamp: 318.2659937572542 -Vehicle ID: 7, Event Type: start, Timestamp: 318.3026317463095 -Vehicle ID: 7, Event Type: start, Timestamp: 318.409734784028 -Vehicle ID: 7, Event Type: start, Timestamp: 318.4228329279144 -Vehicle ID: 7, Event Type: start, Timestamp: 318.4415397872024 -Vehicle ID: 7, Event Type: start, Timestamp: 318.44751094571143 -Vehicle ID: 7, Event Type: start, Timestamp: 318.6101070288131 -Vehicle ID: 7, Event Type: start, Timestamp: 318.66912920842555 -Vehicle ID: 7, Event Type: start, Timestamp: 321.2606914267114 -Vehicle ID: 7, Event Type: start, Timestamp: 321.4327750302874 -Vehicle ID: 7, Event Type: start, Timestamp: 321.4893454253754 -Vehicle ID: 7, Event Type: start, Timestamp: 321.53590975927887 -Vehicle ID: 7, Event Type: start, Timestamp: 321.5986694207599 -Vehicle ID: 7, Event Type: start, Timestamp: 321.6398720022045 -Vehicle ID: 7, Event Type: start, Timestamp: 321.7673866794433 -Vehicle ID: 7, Event Type: start, Timestamp: 321.7853386110861 -Vehicle ID: 7, Event Type: start, Timestamp: 321.8982229852671 -Vehicle ID: 7, Event Type: start, Timestamp: 322.0560459450651 -Vehicle ID: 7, Event Type: start, Timestamp: 324.47676632168196 -Vehicle ID: 7, Event Type: start, Timestamp: 324.644364203983 -Vehicle ID: 7, Event Type: start, Timestamp: 324.6833694862226 -Vehicle ID: 7, Event Type: start, Timestamp: 324.7036064140159 -Vehicle ID: 7, Event Type: start, Timestamp: 324.8809394839729 -Vehicle ID: 7, Event Type: start, Timestamp: 324.95272972635007 -Vehicle ID: 7, Event Type: start, Timestamp: 324.9789508305227 -Vehicle ID: 7, Event Type: start, Timestamp: 325.086316977708 -Vehicle ID: 7, Event Type: start, Timestamp: 325.10089665794004 -Vehicle ID: 7, Event Type: start, Timestamp: 325.54499836807526 diff --git a/hostler_work_log.txt b/hostler_work_log.txt deleted file mode 100644 index ee526025..00000000 --- a/hostler_work_log.txt +++ /dev/null @@ -1,754 +0,0 @@ -Vehicle ID: 1, Event Type: start, Timestamp: 174.19744645094642 -Vehicle ID: 1, Event Type: end, Timestamp: 174.19934992722273 -Vehicle ID: 1, Event Type: start, Timestamp: 174.40920793733576 -Vehicle ID: 1, Event Type: end, Timestamp: 174.41092385658425 -Vehicle ID: 1, Event Type: start, Timestamp: 174.46962757929793 -Vehicle ID: 1, Event Type: end, Timestamp: 174.47155378732728 -Vehicle ID: 1, Event Type: start, Timestamp: 174.4917878527149 -Vehicle ID: 1, Event Type: end, Timestamp: 174.49379433043322 -Vehicle ID: 1, Event Type: start, Timestamp: 174.5074285257341 -Vehicle ID: 1, Event Type: end, Timestamp: 174.50898550574 -Vehicle ID: 1, Event Type: start, Timestamp: 174.53099703647402 -Vehicle ID: 1, Event Type: end, Timestamp: 174.53337295586655 -Vehicle ID: 1, Event Type: start, Timestamp: 174.53952787914648 -Vehicle ID: 1, Event Type: end, Timestamp: 174.54203380065005 -Vehicle ID: 1, Event Type: start, Timestamp: 174.54609629221974 -Vehicle ID: 1, Event Type: end, Timestamp: 174.54809456910215 -Vehicle ID: 1, Event Type: start, Timestamp: 174.55547801155282 -Vehicle ID: 1, Event Type: end, Timestamp: 174.5567077307847 -Vehicle ID: 1, Event Type: start, Timestamp: 174.55808262882783 -Vehicle ID: 1, Event Type: end, Timestamp: 174.56014312929472 -Vehicle ID: 1, Event Type: start, Timestamp: 174.5635273647671 -Vehicle ID: 1, Event Type: end, Timestamp: 174.56529768660292 -Vehicle ID: 1, Event Type: start, Timestamp: 174.56704169084028 -Vehicle ID: 1, Event Type: end, Timestamp: 174.56990489139704 -Vehicle ID: 1, Event Type: start, Timestamp: 174.57073015245615 -Vehicle ID: 1, Event Type: end, Timestamp: 174.57294147587675 -Vehicle ID: 1, Event Type: start, Timestamp: 174.5810379925763 -Vehicle ID: 1, Event Type: end, Timestamp: 174.58350258660275 -Vehicle ID: 1, Event Type: start, Timestamp: 174.58581529188942 -Vehicle ID: 1, Event Type: end, Timestamp: 174.58826833317093 -Vehicle ID: 1, Event Type: start, Timestamp: 174.60925288557775 -Vehicle ID: 1, Event Type: end, Timestamp: 174.6110694758055 -Vehicle ID: 1, Event Type: start, Timestamp: 174.6219183453141 -Vehicle ID: 1, Event Type: end, Timestamp: 174.62417892306604 -Vehicle ID: 1, Event Type: start, Timestamp: 174.6337482952235 -Vehicle ID: 1, Event Type: end, Timestamp: 174.63647895572373 -Vehicle ID: 1, Event Type: start, Timestamp: 174.63648281070164 -Vehicle ID: 1, Event Type: end, Timestamp: 174.63815446932404 -Vehicle ID: 1, Event Type: start, Timestamp: 174.64650460459794 -Vehicle ID: 1, Event Type: start, Timestamp: 174.6479950480359 -Vehicle ID: 1, Event Type: start, Timestamp: 174.64809003331777 -Vehicle ID: 1, Event Type: end, Timestamp: 174.64837483736952 -Vehicle ID: 1, Event Type: end, Timestamp: 174.64993785467752 -Vehicle ID: 1, Event Type: start, Timestamp: 174.65030501478043 -Vehicle ID: 1, Event Type: end, Timestamp: 174.65083865392512 -Vehicle ID: 1, Event Type: end, Timestamp: 174.65229348051537 -Vehicle ID: 1, Event Type: start, Timestamp: 174.65798512654354 -Vehicle ID: 1, Event Type: start, Timestamp: 174.65821449539442 -Vehicle ID: 1, Event Type: end, Timestamp: 174.66021487773548 -Vehicle ID: 1, Event Type: end, Timestamp: 174.6602627009171 -Vehicle ID: 1, Event Type: start, Timestamp: 174.66159541215922 -Vehicle ID: 1, Event Type: end, Timestamp: 174.66379841216138 -Vehicle ID: 1, Event Type: start, Timestamp: 174.6688858173057 -Vehicle ID: 1, Event Type: end, Timestamp: 174.67103578945157 -Vehicle ID: 1, Event Type: start, Timestamp: 174.67104467457068 -Vehicle ID: 1, Event Type: end, Timestamp: 174.67270612862606 -Vehicle ID: 1, Event Type: start, Timestamp: 174.6732036486748 -Vehicle ID: 1, Event Type: end, Timestamp: 174.67503244538634 -Vehicle ID: 1, Event Type: start, Timestamp: 174.68508410251187 -Vehicle ID: 1, Event Type: start, Timestamp: 174.68563486714666 -Vehicle ID: 1, Event Type: end, Timestamp: 174.6870488380183 -Vehicle ID: 1, Event Type: end, Timestamp: 174.6875560502529 -Vehicle ID: 1, Event Type: start, Timestamp: 174.6925343834399 -Vehicle ID: 1, Event Type: end, Timestamp: 174.69491075597386 -Vehicle ID: 1, Event Type: start, Timestamp: 174.70261313590242 -Vehicle ID: 1, Event Type: end, Timestamp: 174.7046645321335 -Vehicle ID: 1, Event Type: start, Timestamp: 174.70743363596702 -Vehicle ID: 1, Event Type: end, Timestamp: 174.7094559962698 -Vehicle ID: 1, Event Type: start, Timestamp: 174.7108157446955 -Vehicle ID: 1, Event Type: end, Timestamp: 174.71271728141392 -Vehicle ID: 1, Event Type: start, Timestamp: 174.72123982982376 -Vehicle ID: 1, Event Type: start, Timestamp: 174.72285214011058 -Vehicle ID: 1, Event Type: end, Timestamp: 174.7233874282198 -Vehicle ID: 1, Event Type: end, Timestamp: 174.72585957780086 -Vehicle ID: 1, Event Type: start, Timestamp: 174.74433501400816 -Vehicle ID: 1, Event Type: start, Timestamp: 174.74503253450166 -Vehicle ID: 1, Event Type: end, Timestamp: 174.74563168718169 -Vehicle ID: 1, Event Type: end, Timestamp: 174.74808119156964 -Vehicle ID: 1, Event Type: start, Timestamp: 174.7506068392451 -Vehicle ID: 1, Event Type: end, Timestamp: 174.75205204474258 -Vehicle ID: 1, Event Type: start, Timestamp: 174.75339521831725 -Vehicle ID: 1, Event Type: end, Timestamp: 174.75491008182328 -Vehicle ID: 1, Event Type: start, Timestamp: 174.76930184843837 -Vehicle ID: 1, Event Type: end, Timestamp: 174.7719026791878 -Vehicle ID: 1, Event Type: start, Timestamp: 174.77838926306353 -Vehicle ID: 1, Event Type: start, Timestamp: 174.77965102279464 -Vehicle ID: 1, Event Type: start, Timestamp: 174.78047005554035 -Vehicle ID: 1, Event Type: end, Timestamp: 174.78050304804285 -Vehicle ID: 1, Event Type: start, Timestamp: 174.78050304804285 -Vehicle ID: 1, Event Type: end, Timestamp: 174.78163976678928 -Vehicle ID: 1, Event Type: end, Timestamp: 174.78287612416543 -Vehicle ID: 1, Event Type: start, Timestamp: 174.79051325875793 -Vehicle ID: 1, Event Type: end, Timestamp: 174.7923031357411 -Vehicle ID: 1, Event Type: start, Timestamp: 174.79266452444017 -Vehicle ID: 1, Event Type: end, Timestamp: 174.79475032019545 -Vehicle ID: 1, Event Type: start, Timestamp: 174.79800349145364 -Vehicle ID: 1, Event Type: end, Timestamp: 174.80069514858255 -Vehicle ID: 1, Event Type: start, Timestamp: 174.81022825262713 -Vehicle ID: 1, Event Type: end, Timestamp: 174.81244115832905 -Vehicle ID: 1, Event Type: start, Timestamp: 174.81805583935017 -Vehicle ID: 1, Event Type: end, Timestamp: 174.82076743293973 -Vehicle ID: 1, Event Type: start, Timestamp: 174.84507140015327 -Vehicle ID: 1, Event Type: end, Timestamp: 174.8472245519101 -Vehicle ID: 1, Event Type: start, Timestamp: 174.85656066244738 -Vehicle ID: 1, Event Type: end, Timestamp: 174.85920209503615 -Vehicle ID: 1, Event Type: start, Timestamp: 174.85996803540502 -Vehicle ID: 1, Event Type: end, Timestamp: 174.86232894204426 -Vehicle ID: 1, Event Type: start, Timestamp: 174.87827711529337 -Vehicle ID: 1, Event Type: end, Timestamp: 174.88139224101465 -Vehicle ID: 1, Event Type: start, Timestamp: 174.88969376176794 -Vehicle ID: 1, Event Type: end, Timestamp: 174.8916459345203 -Vehicle ID: 1, Event Type: start, Timestamp: 174.89325195435796 -Vehicle ID: 1, Event Type: end, Timestamp: 174.89590936582098 -Vehicle ID: 1, Event Type: start, Timestamp: 174.90509261259018 -Vehicle ID: 1, Event Type: end, Timestamp: 174.90804592266687 -Vehicle ID: 1, Event Type: start, Timestamp: 174.91036525763096 -Vehicle ID: 1, Event Type: start, Timestamp: 174.91282636181623 -Vehicle ID: 1, Event Type: end, Timestamp: 174.91309735258776 -Vehicle ID: 1, Event Type: start, Timestamp: 174.91309735258776 -Vehicle ID: 1, Event Type: end, Timestamp: 174.9158814884633 -Vehicle ID: 1, Event Type: start, Timestamp: 174.9168746886371 -Vehicle ID: 1, Event Type: end, Timestamp: 174.91962375585578 -Vehicle ID: 1, Event Type: start, Timestamp: 174.95221896319984 -Vehicle ID: 1, Event Type: end, Timestamp: 174.95407042357286 -Vehicle ID: 1, Event Type: start, Timestamp: 174.9569857697495 -Vehicle ID: 1, Event Type: end, Timestamp: 174.9591397383262 -Vehicle ID: 1, Event Type: start, Timestamp: 174.9605074648173 -Vehicle ID: 1, Event Type: start, Timestamp: 174.9626422831407 -Vehicle ID: 1, Event Type: end, Timestamp: 174.96321030354548 -Vehicle ID: 1, Event Type: start, Timestamp: 174.96321030354548 -Vehicle ID: 1, Event Type: end, Timestamp: 174.96453946354035 -Vehicle ID: 1, Event Type: start, Timestamp: 174.9793933115021 -Vehicle ID: 1, Event Type: end, Timestamp: 174.9810448648175 -Vehicle ID: 1, Event Type: start, Timestamp: 174.9910291808733 -Vehicle ID: 1, Event Type: end, Timestamp: 174.99266237115577 -Vehicle ID: 1, Event Type: start, Timestamp: 174.99839745265172 -Vehicle ID: 1, Event Type: end, Timestamp: 175.0008191770373 -Vehicle ID: 1, Event Type: start, Timestamp: 175.05002342225677 -Vehicle ID: 1, Event Type: start, Timestamp: 175.0513653207362 -Vehicle ID: 1, Event Type: end, Timestamp: 175.05184319746428 -Vehicle ID: 1, Event Type: start, Timestamp: 175.05184319746428 -Vehicle ID: 1, Event Type: start, Timestamp: 175.0530960600153 -Vehicle ID: 1, Event Type: end, Timestamp: 175.0539502119968 -Vehicle ID: 1, Event Type: start, Timestamp: 175.0539502119968 -Vehicle ID: 1, Event Type: end, Timestamp: 175.05601406938325 -Vehicle ID: 1, Event Type: start, Timestamp: 175.0764771590837 -Vehicle ID: 1, Event Type: end, Timestamp: 175.07789934320175 -Vehicle ID: 1, Event Type: start, Timestamp: 175.08342553817778 -Vehicle ID: 1, Event Type: end, Timestamp: 175.08527719091558 -Vehicle ID: 1, Event Type: start, Timestamp: 175.08715946906028 -Vehicle ID: 1, Event Type: end, Timestamp: 175.08912071730296 -Vehicle ID: 1, Event Type: start, Timestamp: 175.13000725805804 -Vehicle ID: 1, Event Type: end, Timestamp: 175.13192934794233 -Vehicle ID: 1, Event Type: start, Timestamp: 175.13720870016778 -Vehicle ID: 1, Event Type: end, Timestamp: 175.13966710071347 -Vehicle ID: 1, Event Type: start, Timestamp: 175.17462427221562 -Vehicle ID: 1, Event Type: end, Timestamp: 175.17634534130983 -Vehicle ID: 1, Event Type: start, Timestamp: 175.18053080395498 -Vehicle ID: 1, Event Type: end, Timestamp: 175.18249057878614 -Vehicle ID: 1, Event Type: start, Timestamp: 175.18992297134864 -Vehicle ID: 1, Event Type: end, Timestamp: 175.19286328601382 -Vehicle ID: 1, Event Type: start, Timestamp: 175.20270193836342 -Vehicle ID: 1, Event Type: end, Timestamp: 175.20414676142988 -Vehicle ID: 1, Event Type: start, Timestamp: 175.20683344330385 -Vehicle ID: 1, Event Type: end, Timestamp: 175.209706239991 -Vehicle ID: 1, Event Type: start, Timestamp: 175.21070571441697 -Vehicle ID: 1, Event Type: end, Timestamp: 175.21274887984862 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: start, Timestamp: 175.23812273242896 -Vehicle ID: 1, Event Type: end, Timestamp: 175.2394812283194 -Vehicle ID: 1, Event Type: end, Timestamp: 175.24016107401755 -Vehicle ID: 1, Event Type: start, Timestamp: 230.31664129548037 -Vehicle ID: 1, Event Type: end, Timestamp: 230.31902319163 -Vehicle ID: 1, Event Type: start, Timestamp: 230.43777232998855 -Vehicle ID: 1, Event Type: end, Timestamp: 230.44065748298044 -Vehicle ID: 1, Event Type: start, Timestamp: 230.4669981200018 -Vehicle ID: 1, Event Type: end, Timestamp: 230.46933270138936 -Vehicle ID: 1, Event Type: start, Timestamp: 230.47049233752423 -Vehicle ID: 1, Event Type: end, Timestamp: 230.47337152208996 -Vehicle ID: 1, Event Type: start, Timestamp: 230.507611897847 -Vehicle ID: 1, Event Type: end, Timestamp: 230.50994251837992 -Vehicle ID: 1, Event Type: start, Timestamp: 230.5252912152482 -Vehicle ID: 1, Event Type: end, Timestamp: 230.52740277736606 -Vehicle ID: 1, Event Type: start, Timestamp: 230.57795997016905 -Vehicle ID: 1, Event Type: end, Timestamp: 230.58054878202998 -Vehicle ID: 1, Event Type: start, Timestamp: 230.58229794319544 -Vehicle ID: 1, Event Type: end, Timestamp: 230.5847062161119 -Vehicle ID: 1, Event Type: start, Timestamp: 230.59244497942257 -Vehicle ID: 1, Event Type: end, Timestamp: 230.59508644969583 -Vehicle ID: 1, Event Type: start, Timestamp: 230.59736971409123 -Vehicle ID: 1, Event Type: end, Timestamp: 230.59919639518696 -Vehicle ID: 1, Event Type: start, Timestamp: 230.59925552280913 -Vehicle ID: 1, Event Type: start, Timestamp: 230.6005747719904 -Vehicle ID: 1, Event Type: end, Timestamp: 230.60128434969332 -Vehicle ID: 1, Event Type: end, Timestamp: 230.60292655094645 -Vehicle ID: 1, Event Type: start, Timestamp: 230.60844864975988 -Vehicle ID: 1, Event Type: end, Timestamp: 230.61142722216604 -Vehicle ID: 1, Event Type: start, Timestamp: 230.62483370107324 -Vehicle ID: 1, Event Type: end, Timestamp: 230.62694637126145 -Vehicle ID: 1, Event Type: start, Timestamp: 230.63264039963747 -Vehicle ID: 1, Event Type: end, Timestamp: 230.63491824260055 -Vehicle ID: 1, Event Type: start, Timestamp: 230.64569662314722 -Vehicle ID: 1, Event Type: end, Timestamp: 230.6471821303743 -Vehicle ID: 1, Event Type: start, Timestamp: 230.65069204188958 -Vehicle ID: 1, Event Type: end, Timestamp: 230.65335055313653 -Vehicle ID: 1, Event Type: start, Timestamp: 230.6629783634811 -Vehicle ID: 1, Event Type: end, Timestamp: 230.66511840730433 -Vehicle ID: 1, Event Type: start, Timestamp: 230.6731654968688 -Vehicle ID: 1, Event Type: end, Timestamp: 230.67521593516685 -Vehicle ID: 1, Event Type: start, Timestamp: 230.6797863090111 -Vehicle ID: 1, Event Type: end, Timestamp: 230.68256982064668 -Vehicle ID: 1, Event Type: start, Timestamp: 230.6980749527035 -Vehicle ID: 1, Event Type: end, Timestamp: 230.70052194319106 -Vehicle ID: 1, Event Type: start, Timestamp: 230.7065578975353 -Vehicle ID: 1, Event Type: end, Timestamp: 230.7089458645708 -Vehicle ID: 1, Event Type: start, Timestamp: 230.71544162388594 -Vehicle ID: 1, Event Type: start, Timestamp: 230.71575516779617 -Vehicle ID: 1, Event Type: start, Timestamp: 230.7162161523077 -Vehicle ID: 1, Event Type: end, Timestamp: 230.71762009358355 -Vehicle ID: 1, Event Type: end, Timestamp: 230.71859080327985 -Vehicle ID: 1, Event Type: end, Timestamp: 230.71870950558812 -Vehicle ID: 1, Event Type: start, Timestamp: 230.7196427958835 -Vehicle ID: 1, Event Type: start, Timestamp: 230.72098064222192 -Vehicle ID: 1, Event Type: end, Timestamp: 230.7217570584437 -Vehicle ID: 1, Event Type: end, Timestamp: 230.72293327886896 -Vehicle ID: 1, Event Type: start, Timestamp: 230.73081564181555 -Vehicle ID: 1, Event Type: end, Timestamp: 230.73220326452346 -Vehicle ID: 1, Event Type: start, Timestamp: 230.74095885464635 -Vehicle ID: 1, Event Type: end, Timestamp: 230.74275944133578 -Vehicle ID: 1, Event Type: start, Timestamp: 230.74656573437537 -Vehicle ID: 1, Event Type: end, Timestamp: 230.7483334182452 -Vehicle ID: 1, Event Type: start, Timestamp: 230.7581560804016 -Vehicle ID: 1, Event Type: end, Timestamp: 230.7604649654494 -Vehicle ID: 1, Event Type: start, Timestamp: 230.7686443444904 -Vehicle ID: 1, Event Type: start, Timestamp: 230.76949011581317 -Vehicle ID: 1, Event Type: end, Timestamp: 230.77108857001562 -Vehicle ID: 1, Event Type: end, Timestamp: 230.77170252711198 -Vehicle ID: 1, Event Type: start, Timestamp: 230.78971491480726 -Vehicle ID: 1, Event Type: start, Timestamp: 230.79048350310578 -Vehicle ID: 1, Event Type: end, Timestamp: 230.79189185988005 -Vehicle ID: 1, Event Type: end, Timestamp: 230.79228156157131 -Vehicle ID: 1, Event Type: start, Timestamp: 230.7936676546537 -Vehicle ID: 1, Event Type: end, Timestamp: 230.79519862480848 -Vehicle ID: 1, Event Type: start, Timestamp: 230.79602097207905 -Vehicle ID: 1, Event Type: end, Timestamp: 230.7981733058357 -Vehicle ID: 1, Event Type: start, Timestamp: 230.81353158586242 -Vehicle ID: 1, Event Type: start, Timestamp: 230.81491792771507 -Vehicle ID: 1, Event Type: end, Timestamp: 230.81504132433778 -Vehicle ID: 1, Event Type: end, Timestamp: 230.81695873968877 -Vehicle ID: 1, Event Type: start, Timestamp: 230.81848537169685 -Vehicle ID: 1, Event Type: start, Timestamp: 230.82112818483114 -Vehicle ID: 1, Event Type: end, Timestamp: 230.8212180402089 -Vehicle ID: 1, Event Type: start, Timestamp: 230.8220145777036 -Vehicle ID: 1, Event Type: end, Timestamp: 230.82368400892904 -Vehicle ID: 1, Event Type: end, Timestamp: 230.82515667596815 -Vehicle ID: 1, Event Type: start, Timestamp: 230.82661033611626 -Vehicle ID: 1, Event Type: end, Timestamp: 230.82816230554567 -Vehicle ID: 1, Event Type: start, Timestamp: 230.838906724935 -Vehicle ID: 1, Event Type: end, Timestamp: 230.8408890795587 -Vehicle ID: 1, Event Type: start, Timestamp: 230.84967497804254 -Vehicle ID: 1, Event Type: end, Timestamp: 230.8513487946203 -Vehicle ID: 1, Event Type: start, Timestamp: 230.88103052990513 -Vehicle ID: 1, Event Type: end, Timestamp: 230.8830549531143 -Vehicle ID: 1, Event Type: start, Timestamp: 230.88975553865887 -Vehicle ID: 1, Event Type: start, Timestamp: 230.89105826964996 -Vehicle ID: 1, Event Type: start, Timestamp: 230.89119073925795 -Vehicle ID: 1, Event Type: end, Timestamp: 230.8918894829788 -Vehicle ID: 1, Event Type: start, Timestamp: 230.8918894829788 -Vehicle ID: 1, Event Type: end, Timestamp: 230.89352296465427 -Vehicle ID: 1, Event Type: end, Timestamp: 230.8936595727531 -Vehicle ID: 1, Event Type: start, Timestamp: 230.90142381345194 -Vehicle ID: 1, Event Type: end, Timestamp: 230.90384021064983 -Vehicle ID: 1, Event Type: start, Timestamp: 230.90414769678802 -Vehicle ID: 1, Event Type: end, Timestamp: 230.90536126037617 -Vehicle ID: 1, Event Type: start, Timestamp: 230.90584379827644 -Vehicle ID: 1, Event Type: end, Timestamp: 230.90812682024026 -Vehicle ID: 1, Event Type: start, Timestamp: 230.9112186500487 -Vehicle ID: 1, Event Type: end, Timestamp: 230.9139356105304 -Vehicle ID: 1, Event Type: start, Timestamp: 230.91701955655486 -Vehicle ID: 1, Event Type: end, Timestamp: 230.9188016627727 -Vehicle ID: 1, Event Type: start, Timestamp: 230.92416719007622 -Vehicle ID: 1, Event Type: end, Timestamp: 230.92685780081987 -Vehicle ID: 1, Event Type: start, Timestamp: 230.95215756838152 -Vehicle ID: 1, Event Type: end, Timestamp: 230.95453722208103 -Vehicle ID: 1, Event Type: start, Timestamp: 230.9659347467519 -Vehicle ID: 1, Event Type: end, Timestamp: 230.9681990396162 -Vehicle ID: 1, Event Type: start, Timestamp: 230.9720238425998 -Vehicle ID: 1, Event Type: end, Timestamp: 230.97413543948977 -Vehicle ID: 1, Event Type: start, Timestamp: 230.97478563775127 -Vehicle ID: 1, Event Type: start, Timestamp: 230.97685786462003 -Vehicle ID: 1, Event Type: end, Timestamp: 230.97714372857666 -Vehicle ID: 1, Event Type: start, Timestamp: 230.97714372857666 -Vehicle ID: 1, Event Type: end, Timestamp: 230.97837325389483 -Vehicle ID: 1, Event Type: start, Timestamp: 230.9819191051995 -Vehicle ID: 1, Event Type: end, Timestamp: 230.98406132572086 -Vehicle ID: 1, Event Type: start, Timestamp: 230.99934109132596 -Vehicle ID: 1, Event Type: end, Timestamp: 231.00114232985032 -Vehicle ID: 1, Event Type: start, Timestamp: 231.016069853024 -Vehicle ID: 1, Event Type: end, Timestamp: 231.01881577843906 -Vehicle ID: 1, Event Type: start, Timestamp: 231.0212547969928 -Vehicle ID: 1, Event Type: end, Timestamp: 231.0234042984531 -Vehicle ID: 1, Event Type: start, Timestamp: 231.0252620603701 -Vehicle ID: 1, Event Type: end, Timestamp: 231.02651807937482 -Vehicle ID: 1, Event Type: start, Timestamp: 231.04423236075235 -Vehicle ID: 1, Event Type: end, Timestamp: 231.04581546071304 -Vehicle ID: 1, Event Type: start, Timestamp: 231.0630809727534 -Vehicle ID: 1, Event Type: end, Timestamp: 231.06554531364426 -Vehicle ID: 1, Event Type: start, Timestamp: 231.07740679810462 -Vehicle ID: 1, Event Type: end, Timestamp: 231.07914749568812 -Vehicle ID: 1, Event Type: start, Timestamp: 231.08413945409612 -Vehicle ID: 1, Event Type: end, Timestamp: 231.08712262084074 -Vehicle ID: 1, Event Type: start, Timestamp: 231.1028865973175 -Vehicle ID: 1, Event Type: start, Timestamp: 231.10454584422865 -Vehicle ID: 1, Event Type: end, Timestamp: 231.1054113291568 -Vehicle ID: 1, Event Type: start, Timestamp: 231.1054113291568 -Vehicle ID: 1, Event Type: end, Timestamp: 231.10693587282222 -Vehicle ID: 1, Event Type: start, Timestamp: 231.1230269289867 -Vehicle ID: 1, Event Type: end, Timestamp: 231.12575313894567 -Vehicle ID: 1, Event Type: start, Timestamp: 231.1285181587533 -Vehicle ID: 1, Event Type: end, Timestamp: 231.13054517048968 -Vehicle ID: 1, Event Type: start, Timestamp: 231.13353733814054 -Vehicle ID: 1, Event Type: end, Timestamp: 231.13586853313652 -Vehicle ID: 1, Event Type: start, Timestamp: 231.1450106949585 -Vehicle ID: 1, Event Type: start, Timestamp: 231.1469754060731 -Vehicle ID: 1, Event Type: end, Timestamp: 231.1478789507578 -Vehicle ID: 1, Event Type: start, Timestamp: 231.1478789507578 -Vehicle ID: 1, Event Type: end, Timestamp: 231.14880364323932 -Vehicle ID: 1, Event Type: start, Timestamp: 231.18645081718861 -Vehicle ID: 1, Event Type: end, Timestamp: 231.18837026544404 -Vehicle ID: 1, Event Type: start, Timestamp: 231.19375187549824 -Vehicle ID: 1, Event Type: end, Timestamp: 231.19561904275994 -Vehicle ID: 1, Event Type: start, Timestamp: 231.25277098470198 -Vehicle ID: 1, Event Type: end, Timestamp: 231.2552284608394 -Vehicle ID: 1, Event Type: start, Timestamp: 231.26975212198442 -Vehicle ID: 1, Event Type: end, Timestamp: 231.27103857422426 -Vehicle ID: 1, Event Type: start, Timestamp: 231.27712400126066 -Vehicle ID: 1, Event Type: end, Timestamp: 231.2795239398536 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: start, Timestamp: 231.30006696996352 -Vehicle ID: 1, Event Type: end, Timestamp: 231.3016066108937 -Vehicle ID: 1, Event Type: end, Timestamp: 231.3018090276437 -Vehicle ID: 1, Event Type: start, Timestamp: 286.2486675293738 -Vehicle ID: 1, Event Type: end, Timestamp: 286.25052197712125 -Vehicle ID: 1, Event Type: start, Timestamp: 286.30142694243233 -Vehicle ID: 1, Event Type: end, Timestamp: 286.30356623020947 -Vehicle ID: 1, Event Type: start, Timestamp: 286.48280313073826 -Vehicle ID: 1, Event Type: end, Timestamp: 286.4850466642004 -Vehicle ID: 1, Event Type: start, Timestamp: 286.4932018160594 -Vehicle ID: 1, Event Type: end, Timestamp: 286.4952740045327 -Vehicle ID: 1, Event Type: start, Timestamp: 286.52972485757994 -Vehicle ID: 1, Event Type: end, Timestamp: 286.5314842786296 -Vehicle ID: 1, Event Type: start, Timestamp: 286.54136192566267 -Vehicle ID: 1, Event Type: end, Timestamp: 286.54308952991346 -Vehicle ID: 1, Event Type: start, Timestamp: 286.5533462943098 -Vehicle ID: 1, Event Type: end, Timestamp: 286.55560734804186 -Vehicle ID: 1, Event Type: start, Timestamp: 286.59874296396134 -Vehicle ID: 1, Event Type: start, Timestamp: 286.599813491626 -Vehicle ID: 1, Event Type: end, Timestamp: 286.60031817131164 -Vehicle ID: 1, Event Type: end, Timestamp: 286.60124914289526 -Vehicle ID: 1, Event Type: start, Timestamp: 286.60849584854896 -Vehicle ID: 1, Event Type: end, Timestamp: 286.61058237864415 -Vehicle ID: 1, Event Type: start, Timestamp: 286.61295374293053 -Vehicle ID: 1, Event Type: end, Timestamp: 286.614790998244 -Vehicle ID: 1, Event Type: start, Timestamp: 286.6214982533734 -Vehicle ID: 1, Event Type: end, Timestamp: 286.6230179298535 -Vehicle ID: 1, Event Type: start, Timestamp: 286.626951889465 -Vehicle ID: 1, Event Type: end, Timestamp: 286.6289186960128 -Vehicle ID: 1, Event Type: start, Timestamp: 286.62978501072746 -Vehicle ID: 1, Event Type: end, Timestamp: 286.632402543433 -Vehicle ID: 1, Event Type: start, Timestamp: 286.6338491096368 -Vehicle ID: 1, Event Type: start, Timestamp: 286.6339046483647 -Vehicle ID: 1, Event Type: end, Timestamp: 286.6366413982534 -Vehicle ID: 1, Event Type: end, Timestamp: 286.63718299166766 -Vehicle ID: 1, Event Type: start, Timestamp: 286.64725270153684 -Vehicle ID: 1, Event Type: start, Timestamp: 286.64828238775397 -Vehicle ID: 1, Event Type: end, Timestamp: 286.6490750796143 -Vehicle ID: 1, Event Type: end, Timestamp: 286.6503565688687 -Vehicle ID: 1, Event Type: start, Timestamp: 286.6529796280167 -Vehicle ID: 1, Event Type: end, Timestamp: 286.6558949925678 -Vehicle ID: 1, Event Type: start, Timestamp: 286.6591985569743 -Vehicle ID: 1, Event Type: start, Timestamp: 286.6592568661335 -Vehicle ID: 1, Event Type: end, Timestamp: 286.6608826619159 -Vehicle ID: 1, Event Type: end, Timestamp: 286.66245562525745 -Vehicle ID: 1, Event Type: start, Timestamp: 286.6743182721671 -Vehicle ID: 1, Event Type: end, Timestamp: 286.67689668702064 -Vehicle ID: 1, Event Type: start, Timestamp: 286.67918450935315 -Vehicle ID: 1, Event Type: start, Timestamp: 286.679588470797 -Vehicle ID: 1, Event Type: end, Timestamp: 286.68099651792835 -Vehicle ID: 1, Event Type: end, Timestamp: 286.68148846221357 -Vehicle ID: 1, Event Type: start, Timestamp: 286.68506006549524 -Vehicle ID: 1, Event Type: start, Timestamp: 286.68560052493535 -Vehicle ID: 1, Event Type: end, Timestamp: 286.68704934657916 -Vehicle ID: 1, Event Type: end, Timestamp: 286.6876085234131 -Vehicle ID: 1, Event Type: start, Timestamp: 286.68992542641905 -Vehicle ID: 1, Event Type: end, Timestamp: 286.69161153997123 -Vehicle ID: 1, Event Type: start, Timestamp: 286.692735559887 -Vehicle ID: 1, Event Type: end, Timestamp: 286.69428325943215 -Vehicle ID: 1, Event Type: start, Timestamp: 286.7022656534072 -Vehicle ID: 1, Event Type: end, Timestamp: 286.70406471043094 -Vehicle ID: 1, Event Type: start, Timestamp: 286.7137269637127 -Vehicle ID: 1, Event Type: start, Timestamp: 286.7155584353457 -Vehicle ID: 1, Event Type: end, Timestamp: 286.71558961238105 -Vehicle ID: 1, Event Type: start, Timestamp: 286.71585474556144 -Vehicle ID: 1, Event Type: end, Timestamp: 286.71782024806777 -Vehicle ID: 1, Event Type: end, Timestamp: 286.7180037643051 -Vehicle ID: 1, Event Type: start, Timestamp: 286.7210608365174 -Vehicle ID: 1, Event Type: start, Timestamp: 286.7215609014895 -Vehicle ID: 1, Event Type: start, Timestamp: 286.7226514847775 -Vehicle ID: 1, Event Type: end, Timestamp: 286.72270311752897 -Vehicle ID: 1, Event Type: end, Timestamp: 286.7229903170798 -Vehicle ID: 1, Event Type: end, Timestamp: 286.7250044651255 -Vehicle ID: 1, Event Type: start, Timestamp: 286.7389519077027 -Vehicle ID: 1, Event Type: end, Timestamp: 286.7410362451765 -Vehicle ID: 1, Event Type: start, Timestamp: 286.7441554552264 -Vehicle ID: 1, Event Type: end, Timestamp: 286.74693167384925 -Vehicle ID: 1, Event Type: start, Timestamp: 286.7477220478195 -Vehicle ID: 1, Event Type: end, Timestamp: 286.75083093854846 -Vehicle ID: 1, Event Type: start, Timestamp: 286.7558673456066 -Vehicle ID: 1, Event Type: start, Timestamp: 286.75608406940273 -Vehicle ID: 1, Event Type: start, Timestamp: 286.7561166538875 -Vehicle ID: 1, Event Type: end, Timestamp: 286.75779490131663 -Vehicle ID: 1, Event Type: end, Timestamp: 286.7580543072003 -Vehicle ID: 1, Event Type: end, Timestamp: 286.7588519121278 -Vehicle ID: 1, Event Type: start, Timestamp: 286.7681863612352 -Vehicle ID: 1, Event Type: end, Timestamp: 286.7700893655219 -Vehicle ID: 1, Event Type: start, Timestamp: 286.79226048547395 -Vehicle ID: 1, Event Type: end, Timestamp: 286.7932566653064 -Vehicle ID: 1, Event Type: start, Timestamp: 286.7935514280163 -Vehicle ID: 1, Event Type: start, Timestamp: 286.7935639562887 -Vehicle ID: 1, Event Type: end, Timestamp: 286.79547779230626 -Vehicle ID: 1, Event Type: end, Timestamp: 286.79627394560634 -Vehicle ID: 1, Event Type: start, Timestamp: 286.8017719013135 -Vehicle ID: 1, Event Type: end, Timestamp: 286.80413127148347 -Vehicle ID: 1, Event Type: start, Timestamp: 286.81529395595004 -Vehicle ID: 1, Event Type: end, Timestamp: 286.81661415292524 -Vehicle ID: 1, Event Type: start, Timestamp: 286.8213853681062 -Vehicle ID: 1, Event Type: end, Timestamp: 286.8229894238662 -Vehicle ID: 1, Event Type: start, Timestamp: 286.82863597563335 -Vehicle ID: 1, Event Type: start, Timestamp: 286.8293599218265 -Vehicle ID: 1, Event Type: end, Timestamp: 286.8306235292571 -Vehicle ID: 1, Event Type: start, Timestamp: 286.8306235292571 -Vehicle ID: 1, Event Type: end, Timestamp: 286.83232345484697 -Vehicle ID: 1, Event Type: start, Timestamp: 286.84209367574863 -Vehicle ID: 1, Event Type: end, Timestamp: 286.844335425427 -Vehicle ID: 1, Event Type: start, Timestamp: 286.8508632290787 -Vehicle ID: 1, Event Type: start, Timestamp: 286.85141832772524 -Vehicle ID: 1, Event Type: start, Timestamp: 286.85225842293255 -Vehicle ID: 1, Event Type: end, Timestamp: 286.85284407149766 -Vehicle ID: 1, Event Type: start, Timestamp: 286.85284407149766 -Vehicle ID: 1, Event Type: end, Timestamp: 286.85324103980486 -Vehicle ID: 1, Event Type: end, Timestamp: 286.8540532977209 -Vehicle ID: 1, Event Type: start, Timestamp: 286.8583008343282 -Vehicle ID: 1, Event Type: end, Timestamp: 286.86077513079226 -Vehicle ID: 1, Event Type: start, Timestamp: 286.86425024013255 -Vehicle ID: 1, Event Type: start, Timestamp: 286.8656590903207 -Vehicle ID: 1, Event Type: end, Timestamp: 286.8661667939113 -Vehicle ID: 1, Event Type: start, Timestamp: 286.8661667939113 -Vehicle ID: 1, Event Type: end, Timestamp: 286.86751768101306 -Vehicle ID: 1, Event Type: start, Timestamp: 286.87691477684683 -Vehicle ID: 1, Event Type: end, Timestamp: 286.8783163297159 -Vehicle ID: 1, Event Type: start, Timestamp: 286.87996861005297 -Vehicle ID: 1, Event Type: end, Timestamp: 286.88132313245336 -Vehicle ID: 1, Event Type: start, Timestamp: 286.88343638167174 -Vehicle ID: 1, Event Type: end, Timestamp: 286.8857298155743 -Vehicle ID: 1, Event Type: start, Timestamp: 286.88925405686206 -Vehicle ID: 1, Event Type: end, Timestamp: 286.8917290437532 -Vehicle ID: 1, Event Type: start, Timestamp: 286.89203736552327 -Vehicle ID: 1, Event Type: start, Timestamp: 286.8921323926715 -Vehicle ID: 1, Event Type: end, Timestamp: 286.89455725545025 -Vehicle ID: 1, Event Type: end, Timestamp: 286.8945812602523 -Vehicle ID: 1, Event Type: start, Timestamp: 286.8965859524383 -Vehicle ID: 1, Event Type: end, Timestamp: 286.8989877893261 -Vehicle ID: 1, Event Type: start, Timestamp: 286.9191052725913 -Vehicle ID: 1, Event Type: end, Timestamp: 286.92115743158547 -Vehicle ID: 1, Event Type: start, Timestamp: 286.92662576786495 -Vehicle ID: 1, Event Type: end, Timestamp: 286.9284685258884 -Vehicle ID: 1, Event Type: start, Timestamp: 286.93737477075916 -Vehicle ID: 1, Event Type: end, Timestamp: 286.93901772370094 -Vehicle ID: 1, Event Type: start, Timestamp: 286.9412963601412 -Vehicle ID: 1, Event Type: end, Timestamp: 286.943028669342 -Vehicle ID: 1, Event Type: start, Timestamp: 286.9659449129824 -Vehicle ID: 1, Event Type: end, Timestamp: 286.9682701897321 -Vehicle ID: 1, Event Type: start, Timestamp: 286.9711240831367 -Vehicle ID: 1, Event Type: end, Timestamp: 286.9739630842782 -Vehicle ID: 1, Event Type: start, Timestamp: 287.0213804977999 -Vehicle ID: 1, Event Type: end, Timestamp: 287.02387355617145 -Vehicle ID: 1, Event Type: start, Timestamp: 287.0364844694459 -Vehicle ID: 1, Event Type: end, Timestamp: 287.0386672830133 -Vehicle ID: 1, Event Type: start, Timestamp: 287.04858746386304 -Vehicle ID: 1, Event Type: end, Timestamp: 287.051211375177 -Vehicle ID: 1, Event Type: start, Timestamp: 287.0565090846145 -Vehicle ID: 1, Event Type: end, Timestamp: 287.05862480716786 -Vehicle ID: 1, Event Type: start, Timestamp: 287.0640274759096 -Vehicle ID: 1, Event Type: start, Timestamp: 287.06508874841467 -Vehicle ID: 1, Event Type: end, Timestamp: 287.065565722253 -Vehicle ID: 1, Event Type: start, Timestamp: 287.065565722253 -Vehicle ID: 1, Event Type: start, Timestamp: 287.0664517058599 -Vehicle ID: 1, Event Type: end, Timestamp: 287.0679282741997 -Vehicle ID: 1, Event Type: end, Timestamp: 287.068509400709 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1050236805988 -Vehicle ID: 1, Event Type: end, Timestamp: 287.1073983955745 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1306008074966 -Vehicle ID: 1, Event Type: end, Timestamp: 287.1320382563551 -Vehicle ID: 1, Event Type: start, Timestamp: 287.16951335196745 -Vehicle ID: 1, Event Type: end, Timestamp: 287.1716112693931 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1741449911549 -Vehicle ID: 1, Event Type: end, Timestamp: 287.1760550394994 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: start, Timestamp: 287.1908033118669 -Vehicle ID: 1, Event Type: end, Timestamp: 287.19312326283386 -Vehicle ID: 1, Event Type: end, Timestamp: 287.1934481874737 diff --git a/python/altrios/demos/rollout_demo.py b/python/altrios/demos/rollout_demo.py index fe85f46c..9ec56682 100644 --- a/python/altrios/demos/rollout_demo.py +++ b/python/altrios/demos/rollout_demo.py @@ -1,7 +1,8 @@ # %% import altrios as alt -from altrios import rollout, defaults, train_planner +from altrios import rollout, defaults +from altrios.train_planner import planner, planner_config import numpy as np import matplotlib.pyplot as plt import seaborn as sns @@ -21,7 +22,7 @@ plot_dir.mkdir(exist_ok=True) File = defaults.DEMAND_FILE #targets = [0,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75, 0.8] -train_planner_config = train_planner.TrainPlannerConfig( +train_planner_config = planner_config.TrainPlannerConfig( cars_per_locomotive={"Default": 50}, target_cars_per_train={"Default": 90}) targets = [0.5] diff --git a/python/altrios/demos/sim_manager_demo.py b/python/altrios/demos/sim_manager_demo.py index 3c015ef8..6229c36d 100644 --- a/python/altrios/demos/sim_manager_demo.py +++ b/python/altrios/demos/sim_manager_demo.py @@ -1,8 +1,9 @@ # %% from altrios import sim_manager -from altrios import utilities, defaults, train_planner +from altrios import utilities, defaults import altrios as alt from altrios.lifts import lifts_simulator +from altrios.train_planner import planner_config import numpy as np import polars as pl import matplotlib.pyplot as plt @@ -36,7 +37,7 @@ f"Elapsed time to import rail vehicles, locations, and network: {t1_import - t0_import:.3g} s" ) -train_planner_config = train_planner.TrainPlannerConfig( +train_planner_config = planner_config.TrainPlannerConfig( cars_per_locomotive={"Default": 50}, target_cars_per_train={"Default": 90}) diff --git a/python/altrios/rollout.py b/python/altrios/rollout.py index 6e8b430b..83913472 100644 --- a/python/altrios/rollout.py +++ b/python/altrios/rollout.py @@ -1,8 +1,9 @@ from altrios import sim_manager -from altrios import metric_calculator, train_planner, defaults +from altrios import metric_calculator, defaults from altrios.metric_calculator import ScenarioInfo import altrios as alt +from altrios.train_planner import planner import numpy as np import time import pandas as pd @@ -23,7 +24,7 @@ def simulate_prescribed_rollout( save_interval: Optional[int] = None, freight_demand_percent_growth:float = 0.0, demand_file: Union[pl.DataFrame, Path, str] = defaults.DEMAND_FILE, - train_planner_config: train_planner.TrainPlannerConfig = train_planner.TrainPlannerConfig(), + train_planner_config: planner.TrainPlannerConfig = planner.TrainPlannerConfig(), count_unused_locomotives = False, write_complete_results: Optional[bool] = False, write_metrics: Optional[bool] = False, diff --git a/python/altrios/sim_manager.py b/python/altrios/sim_manager.py index 128fdcbd..aaced8ed 100644 --- a/python/altrios/sim_manager.py +++ b/python/altrios/sim_manager.py @@ -9,7 +9,7 @@ from altrios import defaults import altrios as alt -from altrios import train_planner as planner +from altrios.train_planner import planner, planner_config from altrios import metric_calculator as metrics def main( @@ -25,7 +25,7 @@ def main( refuelers: pl.DataFrame = None, grid_emissions_factors: pl.DataFrame = None, nodal_energy_prices: pl.DataFrame = None, - train_planner_config: planner.TrainPlannerConfig = planner.TrainPlannerConfig(), + train_planner_config: planner_config.TrainPlannerConfig = planner_config.TrainPlannerConfig(), train_type: alt.TrainType = alt.TrainType.Freight, demand_file: Union[pl.DataFrame, Path, str] = str(defaults.DEMAND_FILE), network_charging_guidelines: pl.DataFrame = None diff --git a/python/altrios/tests/test_train_planner.py b/python/altrios/tests/test_train_planner.py index 6d0eb0a4..86b70321 100644 --- a/python/altrios/tests/test_train_planner.py +++ b/python/altrios/tests/test_train_planner.py @@ -1,7 +1,7 @@ import unittest -from altrios import train_planner +from altrios.train_planner import planner class TestTrainPlanner(unittest.TestCase): diff --git a/python/altrios/train_planner/demand_generators.py b/python/altrios/train_planner/demand_generators.py new file mode 100644 index 00000000..4ee2f46f --- /dev/null +++ b/python/altrios/train_planner/demand_generators.py @@ -0,0 +1,367 @@ +from typing import Union, List +import polars as pl +import polars.selectors as cs +import pandas as pd +import numpy as np +import altrios as alt +from altrios import utilities +from altrios.train_planner import planner_config + +def initialize_reverse_empties(demand: Union[pl.LazyFrame, pl.DataFrame]) -> Union[pl.LazyFrame, pl.DataFrame]: + """ + Swap `Origin` and `Destination` and append `_Empty` to `Train_Type`. + Arguments: + ---------- + demand: `DataFrame` or `LazyFrame` representing origin-destination demand. + + Outputs: + ---------- + Updated demand `DataFrame` or `LazyFrame`. + """ + return (demand + .rename({"Origin": "Destination", "Destination": "Origin"}) + .with_columns((pl.concat_str(pl.col("Train_Type"),pl.lit("_Empty"))).alias("Train_Type")) + ) + +def generate_return_demand_unit(demand_subset: Union[pl.LazyFrame, pl.DataFrame], config: planner_config.TrainPlannerConfig) -> Union[pl.LazyFrame, pl.DataFrame]: + """ + Given a set of Unit train demand for one or more origin-destination pairs, generate demand in the reverse direction(s). + Arguments: + ---------- + demand: `DataFrame` or `LazyFrame` representing origin-destination demand for Unit trains. + + Outputs: + ---------- + Updated demand `DataFrame` or `LazyFrame` representing demand in the reverse direction(s) for each origin-destination pair. + """ + return (demand_subset + .pipe(initialize_reverse_empties) + ) + +def generate_return_demand_manifest(demand_subset: Union[pl.LazyFrame, pl.DataFrame], config: planner_config.TrainPlannerConfig) -> Union[pl.LazyFrame, pl.DataFrame]: + """ + Given a set of Manifest train demand for one or more origin-destination pairs, generate demand in the reverse direction(s). + Arguments: + ---------- + demand: `DataFrame` or `LazyFrame` representing origin-destination demand for Unit trains. + + Outputs: + ---------- + Updated demand `DataFrame` or `LazyFrame` representing demand in the reverse direction(s) for each origin-destination pair. + """ + return(demand_subset + .pipe(initialize_reverse_empties) + .with_columns((pl.col("Number_of_Cars") * config.manifest_empty_return_ratio).floor().cast(pl.UInt32)) + ) + +def generate_return_demand_intermodal(demand_subset: Union[pl.LazyFrame, pl.DataFrame], config: planner_config.TrainPlannerConfig) -> Union[pl.LazyFrame, pl.DataFrame]: + """ + Given a set of Intermodal train demand for one or more origin-destination pairs, generate demand in the reverse direction(s). + Arguments: + ---------- + demand: `DataFrame` or `LazyFrame` representing origin-destination demand for Unit trains. + + Outputs: + ---------- + Updated demand `DataFrame` or `LazyFrame` representing demand in the reverse direction(s) for each origin-destination pair. + """ + return (demand_subset + .pipe(initialize_reverse_empties) + .with_columns( + pl.concat_str(pl.min_horizontal("Origin", "Destination"), pl.lit("_"), pl.max_horizontal("Origin", "Destination")).alias("OD") + ) + .with_columns( + pl.col("Number_of_Cars", "Number_of_Containers").range_minmax().over("OD").name.suffix("_Return") + ) + .filter( + pl.col("Number_of_Containers") == pl.col("Number_of_Containers").max().over("OD") + ) + .drop("OD", "Number_of_Containers", "Number_of_Cars") + .rename({"Number_of_Containers_Return": "Number_of_Containers", + "Number_of_Cars_Return": "Number_of_Cars"}) + ) + +def generate_return_demand( + demand: pl.DataFrame, + config: planner_config.TrainPlannerConfig +) -> pl.DataFrame: + """ + Create a dataframe for additional demand needed for empty cars of the return trains + Arguments: + ---------- + df_annual_demand: The user_input file loaded by previous functions + that contains loaded demand for each demand pair. + config: Object storing train planner configuration paramaters + Outputs: + ---------- + df_return_demand: The demand generated by the need + of returning the empty cars to their original nodes + """ + demand_subsets = demand.partition_by("Train_Type", as_dict = True) + return_demand = [] + for train_type, demand_subset in demand_subsets.items(): + train_type_label = train_type[0] + if train_type_label in config.return_demand_generators: + return_demand_generator = config.return_demand_generators[train_type_label] + temp = return_demand_generator(demand_subset, config) + print(temp) + return_demand.append(temp) + else: + print(f'Return demand generator not implemented for train type: {train_type_label}') + + demand_return = (pl.concat(return_demand, how="diagonal_relaxed") + .filter(pl.col("Number_of_Cars") + pl.col("Number_of_Containers") > 0) + ) + return demand_return + +def generate_origin_manifest_demand( + demand: pl.DataFrame, + node_list: List[str], + config: planner_config.TrainPlannerConfig +) -> pl.DataFrame: + """ + Create a dataframe for summarized view of all origins' manifest demand + in number of cars and received cars, both with loaded and empty counts + Arguments: + ---------- + demand: The user_input file loaded by previous functions + that contains laoded demand for each demand pair. + node_list: A list containing all the names of nodes in the system + config: Object storing train planner configuration paramaters + + Outputs: + ---------- + origin_manifest_demand: The dataframe that summarized all the manifest demand + originated from each node by number of loaded and empty cars + with additional columns for checking the unbalance quantity and serve as check columns + for the manifest empty car rebalancing function + """ + manifest_demand = (demand + .filter(pl.col("Train_Type").str.strip_suffix("_Loaded") == "Manifest") + .select(["Origin", "Destination","Number_of_Cars"]) + .rename({"Number_of_Cars": "Manifest"}) + .unique()) + + origin_volume = manifest_demand.group_by("Origin").agg(pl.col("Manifest").sum()) + destination_volume = manifest_demand.group_by("Destination").agg(pl.col("Manifest").sum().alias("Manifest_Reverse")) + origin_manifest_demand = (pl.DataFrame({"Origin": node_list}) + .join(origin_volume, left_on="Origin", right_on="Origin", how="left") + .join(destination_volume, left_on="Origin", right_on="Destination", how="left") + .with_columns( + (pl.col("Manifest_Reverse") * config.manifest_empty_return_ratio).floor().cast(pl.UInt32).alias("Manifest_Empty")) + .with_columns( + (pl.col("Manifest") + pl.col("Manifest_Empty")).alias("Manifest_Dispatched"), + (pl.col("Manifest_Reverse") + pl.col("Manifest") * config.manifest_empty_return_ratio).floor().cast(pl.UInt32).alias("Manifest_Received")) + .drop("Manifest_Reverse") + .filter((pl.col("Manifest").is_not_null()) | (pl.col("Manifest_Empty").is_not_null())) + ) + + return origin_manifest_demand + +def balance_trains( + demand_origin_manifest: pl.DataFrame +) -> pl.DataFrame: + """ + Update the manifest demand, especially the empty car demand to maintain equilibrium of number of + cars dispatched and received at each node for manifest + Arguments: + ---------- + demand_origin_manifest: Dataframe that summarizes empty and loaded + manifest demand dispatched and received for each node by number cars + Outputs: + ---------- + demand_origin_manifest: Updated demand_origin_manifest with additional + manifest empty car demand added to each node + df_balance_storage: Documented additional manifest demand pairs and corresponding quantity for + rebalancing process + """ + df_balance_storage = pd.DataFrame(np.zeros(shape=(0, 4))) + df_balance_storage = df_balance_storage.rename( + columns={0: "Origin", + 1: "Destination", + 2: "Train_Type", + 3: "Number_of_Cars"}) + + train_type = "Manifest_Empty" + demand = demand_origin_manifest.to_pandas()[ + ["Origin","Manifest_Received","Manifest_Dispatched","Manifest_Empty"]] + demand = demand.rename(columns={"Manifest_Received": "Received", + "Manifest_Dispatched": "Dispatched", + "Manifest_Empty": "Empty"}) + + step = 0 + # Calculate the number of iterations needed + max_iter = len(demand) * (len(demand)-1) / 2 + while (~np.isclose(demand["Received"], demand["Dispatched"])).any() and (step <= max_iter): + rows_def = demand[demand["Received"] < demand["Dispatched"]] + rows_sur = demand[demand["Received"] > demand["Dispatched"]] + if((len(rows_def) == 0) | (len(rows_sur) == 0)): + break + # Find the first node that is in deficit of cars because of the empty return + row_def = rows_def.index[0] + # Find the first node that is in surplus of cars + row_sur = rows_sur.index[0] + surplus = demand.loc[row_sur, "Received"] - demand.loc[row_sur, "Dispatched"] + df_balance_storage.loc[len(df_balance_storage.index)] = \ + [demand.loc[row_sur, "Origin"], + demand.loc[row_def, "Origin"], + train_type, + surplus] + demand.loc[row_def, "Received"] += surplus + demand.loc[row_sur, "Dispatched"] = demand.loc[row_sur, "Received"] + step += 1 + + if (~np.isclose(demand["Received"], demand["Dispatched"])).any(): + raise Exception("While loop didn't converge") + return pl.from_pandas(df_balance_storage) + +def generate_demand_trains( + demand: pl.DataFrame, + demand_returns: pl.DataFrame, + demand_rebalancing: pl.DataFrame, + rail_vehicles: List[alt.RailVehicle], + config: planner_config.TrainPlannerConfig +) -> pl.DataFrame: + """ + Generate a tabulated demand pair to indicate the final demand + for each demand pair for each train type in number of trains + Arguments: + ---------- + demand: Tabulated demand for each demand pair for each train type in number of cars + + demand: The user_input file loaded and prepared by previous functions + that contains loaded car demand for each demand pair. + demand_returns: The demand generated by the need + of returning the empty cars to their original nodes + demand_rebalancing: Documented additional manifest demand pairs and corresponding quantity for + rebalancing process + + config: Object storing train planner configuration paramaters + Outputs: + ---------- + demand: Tabulated demand for each demand pair in terms of number of cars and number of trains + """ + cars_per_train_min = (pl.from_dict(config.min_cars_per_train) + .melt(variable_name="Train_Type", value_name="Cars_Per_Train_Min") + ) + cars_per_train_min_default = (cars_per_train_min + .filter(pl.col("Train_Type") == pl.lit("Default")) + .select("Cars_Per_Train_Min").item() + ) + cars_per_train_target = (pl.from_dict(config.target_cars_per_train) + .melt(variable_name="Train_Type", value_name="Cars_Per_Train_Target") + ) + cars_per_train_target_default = (cars_per_train_target + .filter(pl.col("Train_Type") == pl.lit("Default")) + .select("Cars_Per_Train_Target").item() + ) + #Prepare hp_per_ton requirements to merge onto the demand DataFrame + hp_per_ton = pl.concat([ + (pl.DataFrame(this_dict) + .melt(variable_name="Train_Type", value_name="HP_Required_Per_Ton") + .with_columns(pl.lit(this_item).alias("O_D")) + .with_columns(pl.col("O_D").str.split("_").list.first().alias("Origin"), + pl.col("O_D").str.split("_").list.last().alias("Destination")) + ) + for this_item, this_dict in config.hp_required_per_ton.items() + ], how="horizontal_relaxed") + + #Prepare ton_per_car requirements to merge onto the demand DataFrame + def get_kg_empty(veh): + return veh.mass_static_base_kilograms + veh.axle_count * veh.mass_rot_per_axle_kilograms + def get_kg(veh): + return veh.mass_static_base_kilograms + veh.mass_freight_kilograms + veh.axle_count * veh.mass_rot_per_axle_kilograms + + ton_per_car = ( + pl.DataFrame({"Train_Type": pl.Series([rv.car_type for rv in rail_vehicles]).str.strip_suffix("_Loaded"), + "KG_Empty": [get_kg_empty(rv) for rv in rail_vehicles], + "KG": [get_kg(rv) for rv in rail_vehicles]}) + .with_columns(pl.when(pl.col("Train_Type").str.contains("_Empty")) + .then(pl.col("KG_Empty") / utilities.KG_PER_TON) + .otherwise(pl.col("KG") / utilities.KG_PER_TON) + .alias("Tons_Per_Car")) + .drop(["KG_Empty","KG"]) + ) + + demand = (pl.concat([demand, demand_returns, demand_rebalancing], how="diagonal_relaxed") + .group_by("Origin","Destination", "Train_Type") + .agg(pl.col("Number_of_Cars").sum()) + .filter(pl.col("Number_of_Cars") > 0) + .join(ton_per_car, on="Train_Type", how="left") + # Merge on OD-specific hp_per_ton if the user specified any + .join(hp_per_ton.drop("O_D"), on=["Origin","Destination","Train_Type"], how="left") + # Second, merge on defaults per train type + .join(hp_per_ton.filter((pl.col("O_D") =="Default")).drop(["O_D","Origin","Destination"]), + on=["Train_Type"], + how="left", + suffix="_Default") + # Merge on cars_per_train_min if the user specified any + .join(cars_per_train_min, on=["Train_Type"], how="left") + # Merge on cars_per_train_target if the user specified any + .join(cars_per_train_target, on=["Train_Type"], how="left") + # Fill in defaults per train type wherever the user didn't specify OD-specific hp_per_ton + .with_columns( + pl.coalesce("HP_Required_Per_Ton", "HP_Required_Per_Ton_Default").alias("HP_Required_Per_Ton"), + pl.col("Cars_Per_Train_Min").fill_null(cars_per_train_min_default), + pl.col("Cars_Per_Train_Target").fill_null(cars_per_train_target_default), + ) + ) + loaded = (demand + .filter(~pl.col("Train_Type").str.contains("_Empty")) + .with_columns( + pl.col("Number_of_Cars", "Tons_Per_Car", "HP_Required_Per_Ton", "Cars_Per_Train_Min", "Cars_Per_Train_Target").name.suffix("_Loaded") + ) + ) + empty = (demand + .filter(pl.col("Train_Type").str.contains("_Empty")) + .with_columns( + pl.col("Number_of_Cars", "Tons_Per_Car", "HP_Required_Per_Ton", "Cars_Per_Train_Min", "Cars_Per_Train_Target").name.suffix("_Empty"), + pl.col("Train_Type").str.strip_suffix("_Empty") + ) + ) + demand = (demand + .select(pl.col("Origin", "Destination"), pl.col("Train_Type").str.strip_suffix("_Empty")) + .unique() + .join(loaded.select(cs.by_name("Origin", "Destination", "Train_Type") | cs.ends_with("_Loaded")), on=["Origin", "Destination", "Train_Type"], how="left") + .join(empty.select(cs.by_name("Origin", "Destination", "Train_Type") | cs.ends_with("_Empty")), on=["Origin", "Destination", "Train_Type"], how="left") + # Replace nulls with zero + .with_columns(cs.float().fill_null(0.0), + cs.by_dtype(pl.UInt32).fill_null(pl.lit(0).cast(pl.UInt32)), + cs.by_dtype(pl.Int64).fill_null(pl.lit(0).cast(pl.Int64)), + ) + .group_by("Origin", "Destination", "Train_Type") + .agg( + pl.col("Number_of_Cars_Loaded", "Number_of_Cars_Empty").sum(), + pl.col("Tons_Per_Car_Loaded", "Tons_Per_Car_Empty", + "HP_Required_Per_Ton_Loaded", "HP_Required_Per_Ton_Empty", + "Cars_Per_Train_Min_Loaded", "Cars_Per_Train_Min_Empty", + "Cars_Per_Train_Target_Loaded", "Cars_Per_Train_Target_Empty").mean(), + pl.sum_horizontal("Number_of_Cars_Loaded", "Number_of_Cars_Empty").sum().alias("Number_of_Cars") + ) + .with_columns( + # If Cars_Per_Train_Min and Cars_Per_Train_Target "disagree" for empty vs. loaded, take the average weighted by number of cars + ((pl.col("Cars_Per_Train_Min_Loaded").mul("Number_of_Cars_Loaded") + pl.col("Cars_Per_Train_Min_Empty").mul("Number_of_Cars_Empty")) / pl.col("Number_of_Cars")).alias("Cars_Per_Train_Min"), + ((pl.col("Cars_Per_Train_Target_Loaded").mul("Number_of_Cars_Loaded") + pl.col("Cars_Per_Train_Target_Empty").mul("Number_of_Cars_Empty")) / pl.col("Number_of_Cars")).alias("Cars_Per_Train_Target") + ) + .with_columns( + pl.when(config.single_train_mode) + .then(1) + .when(pl.col("Number_of_Cars") == 0) + .then(0) + .when(pl.col("Cars_Per_Train_Target") == pl.col("Number_of_Cars")) + .then(1) + .when(pl.col("Cars_Per_Train_Target") <= 1.0) + .then(pl.col("Number_of_Cars")) + .otherwise( + pl.max_horizontal([ + 1, + pl.min_horizontal([ + pl.col("Number_of_Cars").floordiv("Cars_Per_Train_Target") + 1, + pl.col("Number_of_Cars").floordiv("Cars_Per_Train_Min") + ]) + ]) + ).cast(pl.UInt32).alias("Number_of_Trains") + ) + .drop("Cars_Per_Train_Target_Loaded", "Cars_Per_Train_Target_Empty", "Cars_Per_Train_Min_Empty", "Cars_Per_Train_Min_Loaded") + ) + return demand diff --git a/python/altrios/train_planner.py b/python/altrios/train_planner/planner.py similarity index 59% rename from python/altrios/train_planner.py rename to python/altrios/train_planner/planner.py index 456fc5c1..5276f42d 100644 --- a/python/altrios/train_planner.py +++ b/python/altrios/train_planner/planner.py @@ -1,206 +1,17 @@ from __future__ import annotations from pathlib import Path -from typing import Union +from altrios.train_planner import demand_generators, schedulers, planner_config import numpy as np from scipy.stats import rankdata import pandas as pd import polars as pl import polars.selectors as cs import math -from typing import Tuple, List, Dict, Callable, Optional +from typing import Union, Tuple, List, Dict, Callable, Optional from itertools import repeat from dataclasses import dataclass, field import altrios as alt from altrios import defaults, utilities -from dataclasses import dataclass, field - -pl.enable_string_cache() - -def initialize_reverse_empties(demand: Union[pl.LazyFrame, pl.DataFrame]) -> Union[pl.LazyFrame, pl.DataFrame]: - """ - Swap `Origin` and `Destination` and append `_Empty` to `Train_Type`. - Arguments: - ---------- - demand: `DataFrame` or `LazyFrame` representing origin-destination demand. - - Outputs: - ---------- - Updated demand `DataFrame` or `LazyFrame`. - """ - return (demand - .rename({"Origin": "Destination", "Destination": "Origin"}) - .with_columns((pl.concat_str(pl.col("Train_Type"),pl.lit("_Empty"))).alias("Train_Type")) - ) - -def generate_return_demand_unit(demand_subset: Union[pl.LazyFrame, pl.DataFrame], config: TrainPlannerConfig) -> Union[pl.LazyFrame, pl.DataFrame]: - """ - Given a set of Unit train demand for one or more origin-destination pairs, generate demand in the reverse direction(s). - Arguments: - ---------- - demand: `DataFrame` or `LazyFrame` representing origin-destination demand for Unit trains. - - Outputs: - ---------- - Updated demand `DataFrame` or `LazyFrame` representing demand in the reverse direction(s) for each origin-destination pair. - """ - return (demand_subset - .pipe(initialize_reverse_empties) - ) - -def generate_return_demand_manifest(demand_subset: Union[pl.LazyFrame, pl.DataFrame], config: TrainPlannerConfig) -> Union[pl.LazyFrame, pl.DataFrame]: - """ - Given a set of Manifest train demand for one or more origin-destination pairs, generate demand in the reverse direction(s). - Arguments: - ---------- - demand: `DataFrame` or `LazyFrame` representing origin-destination demand for Unit trains. - - Outputs: - ---------- - Updated demand `DataFrame` or `LazyFrame` representing demand in the reverse direction(s) for each origin-destination pair. - """ - return(demand_subset - .pipe(initialize_reverse_empties) - .with_columns((pl.col("Number_of_Cars") * config.manifest_empty_return_ratio).floor().cast(pl.UInt32)) - ) - -def generate_return_demand_intermodal(demand_subset: Union[pl.LazyFrame, pl.DataFrame], config: TrainPlannerConfig) -> Union[pl.LazyFrame, pl.DataFrame]: - """ - Given a set of Intermodal train demand for one or more origin-destination pairs, generate demand in the reverse direction(s). - Arguments: - ---------- - demand: `DataFrame` or `LazyFrame` representing origin-destination demand for Unit trains. - - Outputs: - ---------- - Updated demand `DataFrame` or `LazyFrame` representing demand in the reverse direction(s) for each origin-destination pair. - """ - return (demand_subset - .pipe(initialize_reverse_empties) - .with_columns( - pl.concat_str(pl.min_horizontal("Origin", "Destination"), pl.lit("_"), pl.max_horizontal("Origin", "Destination")).alias("OD") - ) - .with_columns( - pl.col("Number_of_Cars", "Number_of_Containers").range_minmax().over("OD").name.suffix("_Return") - ) - .filter( - pl.col("Number_of_Containers") == pl.col("Number_of_Containers").max().over("OD") - ) - .drop("OD", "Number_of_Containers", "Number_of_Cars") - .rename({"Number_of_Containers_Return": "Number_of_Containers", - "Number_of_Cars_Return": "Number_of_Cars"}) - ) - -@dataclass -class TrainPlannerConfig: - """ - Dataclass class for train planner configuration parameters. - - Attributes: - ---------- - - `single_train_mode`: `True` to only run one round-trip train and schedule its charging; `False` to plan train consists - - - `min_cars_per_train`: `Dict` of the minimum length in number of cars to form a train for each train type - - - `target_cars_per_train`: `Dict` of the standard train length in number of cars for each train type - - - `manifest_empty_return_ratio`: Desired railcar reuse ratio to calculate the empty manifest car demand, (E_ij+E_ji)/(L_ij+L_ji) - - - `cars_per_locomotive`: Heuristic scaling factor used to size number of locomotives needed based on demand. - - - `cars_per_locomotive_fixed`: If `True`, `cars_per_locomotive` overrides `hp_per_ton` calculations used for dispatching decisions. - - - `refuelers_per_incoming_corridor`: Heuristic scaling factor used to scale number of refuelers needed at each node based on number of incoming corridors. - - - `stack_type`: Type of stacking (applicable only for intermodal containers) - - - `require_diesel`: `True` to require each consist to have at least one diesel locomotive. - - - `manifest_empty_return_ratio`: `Dict` - - - `drag_coeff_function`: `Dict` - - - `hp_required_per_ton`: `Dict` - - - `dispatch_scaling_dict`: `Dict` - - - `loco_info`: `Dict` - - - `refueler_info`: `Dict` - - - `return_demand_generators`: `Dict` - """ - single_train_mode: bool = False - min_cars_per_train: Dict = field(default_factory = lambda: { - "Default": 60 - }) - target_cars_per_train: Dict = field(default_factory = lambda: { - "Default": 180 - }) - cars_per_locomotive: Dict = field(default_factory = lambda: { - "Default": 70 - }) - cars_per_locomotive_fixed: bool = False - refuelers_per_incoming_corridor: int = 4 - stack_type: str = "single" - require_diesel: bool = False - manifest_empty_return_ratio: float = 0.6 - drag_coeff_function: Optional[Callable]= None - hp_required_per_ton: Dict = field(default_factory = lambda: { - "Default": { - "Unit": 2.0, - "Manifest": 1.5, - "Intermodal": 2.0 + 2.0, - "Unit_Empty": 2.0, - "Manifest_Empty": 1.5, - "Intermodal_Empty": 2.0 + 2.0, - } - }) - dispatch_scaling_dict: Dict = field(default_factory = lambda: { - "time_mult_factor": 1.4, - "hours_add": 2, - "energy_mult_factor": 1.25 - }) - loco_info: pd.DataFrame = field(default_factory = lambda: pd.DataFrame({ - "Diesel_Large": { - "Capacity_Cars": 20, - "Fuel_Type": "Diesel", - "Min_Servicing_Time_Hr": 3.0, - "Rust_Loco": alt.Locomotive.default(), - "Cost_USD": defaults.DIESEL_LOCO_COST_USD, - "Lifespan_Years": defaults.LOCO_LIFESPAN - }, - "BEL": { - "Capacity_Cars": 20, - "Fuel_Type": "Electricity", - "Min_Servicing_Time_Hr": 3.0, - "Rust_Loco": alt.Locomotive.default_battery_electric_loco(), - "Cost_USD": defaults.BEL_MINUS_BATTERY_COST_USD, - "Lifespan_Years": defaults.LOCO_LIFESPAN - } - }).transpose().reset_index(names='Locomotive_Type')) - refueler_info: pd.DataFrame = field(default_factory = lambda: pd.DataFrame({ - "Diesel_Fueler": { - "Locomotive_Type": "Diesel_Large", - "Fuel_Type": "Diesel", - "Refueler_J_Per_Hr": defaults.DIESEL_REFUEL_RATE_J_PER_HR, - "Refueler_Efficiency": defaults.DIESEL_REFUELER_EFFICIENCY, - "Cost_USD": defaults.DIESEL_REFUELER_COST_USD, - "Lifespan_Years": defaults.LOCO_LIFESPAN - }, - "BEL_Charger": { - "Locomotive_Type": "BEL", - "Fuel_Type": "Electricity", - "Refueler_J_Per_Hr": defaults.BEL_CHARGE_RATE_J_PER_HR, - "Refueler_Efficiency": defaults.BEL_CHARGER_EFFICIENCY, - "Cost_USD": defaults.BEL_CHARGER_COST_USD, - "Lifespan_Years": defaults.LOCO_LIFESPAN - } - }).transpose().reset_index(names='Refueler_Type')) - return_demand_generators: Dict = field(default_factory = lambda: { - 'Unit': generate_return_demand_unit, - 'Manifest': generate_return_demand_manifest, - 'Intermodal': generate_return_demand_intermodal - }) def demand_loader( demand_table: Union[pl.DataFrame, Path, str] @@ -230,372 +41,27 @@ def demand_loader( demand_table.get_column("Destination")]).unique().sort() return demand_table, nodes -def generate_return_demand( - demand: pl.DataFrame, - config: TrainPlannerConfig -) -> pl.DataFrame: - """ - Create a dataframe for additional demand needed for empty cars of the return trains - Arguments: - ---------- - df_annual_demand: The user_input file loaded by previous functions - that contains loaded demand for each demand pair. - config: Object storing train planner configuration paramaters - Outputs: - ---------- - df_return_demand: The demand generated by the need - of returning the empty cars to their original nodes - """ - demand_subsets = demand.partition_by("Train_Type", as_dict = True) - return_demand = [] - for train_type, demand_subset in demand_subsets.items(): - train_type_label = train_type[0] - if train_type_label in config.return_demand_generators: - return_demand_generator = config.return_demand_generators[train_type_label] - temp = return_demand_generator(demand_subset, config) - print(temp) - return_demand.append(temp) - else: - print(f'Return demand generator not implemented for train type: {train_type_label}') - - demand_return = (pl.concat(return_demand, how="diagonal_relaxed") - .filter(pl.col("Number_of_Cars") + pl.col("Number_of_Containers") > 0) - ) - return demand_return - -def generate_origin_manifest_demand( - demand: pl.DataFrame, - node_list: List[str], - config: TrainPlannerConfig -) -> pl.DataFrame: - """ - Create a dataframe for summarized view of all origins' manifest demand - in number of cars and received cars, both with loaded and empty counts - Arguments: - ---------- - demand: The user_input file loaded by previous functions - that contains laoded demand for each demand pair. - node_list: A list containing all the names of nodes in the system - config: Object storing train planner configuration paramaters - - Outputs: - ---------- - origin_manifest_demand: The dataframe that summarized all the manifest demand - originated from each node by number of loaded and empty cars - with additional columns for checking the unbalance quantity and serve as check columns - for the manifest empty car rebalancing function - """ - manifest_demand = (demand - .filter(pl.col("Train_Type").str.strip_suffix("_Loaded") == "Manifest") - .select(["Origin", "Destination","Number_of_Cars"]) - .rename({"Number_of_Cars": "Manifest"}) - .unique()) - - origin_volume = manifest_demand.group_by("Origin").agg(pl.col("Manifest").sum()) - destination_volume = manifest_demand.group_by("Destination").agg(pl.col("Manifest").sum().alias("Manifest_Reverse")) - origin_manifest_demand = (pl.DataFrame({"Origin": node_list}) - .join(origin_volume, left_on="Origin", right_on="Origin", how="left") - .join(destination_volume, left_on="Origin", right_on="Destination", how="left") - .with_columns( - (pl.col("Manifest_Reverse") * config.manifest_empty_return_ratio).floor().cast(pl.UInt32).alias("Manifest_Empty")) - .with_columns( - (pl.col("Manifest") + pl.col("Manifest_Empty")).alias("Manifest_Dispatched"), - (pl.col("Manifest_Reverse") + pl.col("Manifest") * config.manifest_empty_return_ratio).floor().cast(pl.UInt32).alias("Manifest_Received")) - .drop("Manifest_Reverse") - .filter((pl.col("Manifest").is_not_null()) | (pl.col("Manifest_Empty").is_not_null())) - ) - - return origin_manifest_demand - - -def balance_trains( - demand_origin_manifest: pl.DataFrame -) -> pl.DataFrame: - """ - Update the manifest demand, especially the empty car demand to maintain equilibrium of number of - cars dispatched and received at each node for manifest - Arguments: - ---------- - demand_origin_manifest: Dataframe that summarizes empty and loaded - manifest demand dispatched and received for each node by number cars - Outputs: - ---------- - demand_origin_manifest: Updated demand_origin_manifest with additional - manifest empty car demand added to each node - df_balance_storage: Documented additional manifest demand pairs and corresponding quantity for - rebalancing process - """ - df_balance_storage = pd.DataFrame(np.zeros(shape=(0, 4))) - df_balance_storage = df_balance_storage.rename( - columns={0: "Origin", - 1: "Destination", - 2: "Train_Type", - 3: "Number_of_Cars"}) - - train_type = "Manifest_Empty" - demand = demand_origin_manifest.to_pandas()[ - ["Origin","Manifest_Received","Manifest_Dispatched","Manifest_Empty"]] - demand = demand.rename(columns={"Manifest_Received": "Received", - "Manifest_Dispatched": "Dispatched", - "Manifest_Empty": "Empty"}) - - step = 0 - # Calculate the number of iterations needed - max_iter = len(demand) * (len(demand)-1) / 2 - while (~np.isclose(demand["Received"], demand["Dispatched"])).any() and (step <= max_iter): - rows_def = demand[demand["Received"] < demand["Dispatched"]] - rows_sur = demand[demand["Received"] > demand["Dispatched"]] - if((len(rows_def) == 0) | (len(rows_sur) == 0)): - break - # Find the first node that is in deficit of cars because of the empty return - row_def = rows_def.index[0] - # Find the first node that is in surplus of cars - row_sur = rows_sur.index[0] - surplus = demand.loc[row_sur, "Received"] - demand.loc[row_sur, "Dispatched"] - df_balance_storage.loc[len(df_balance_storage.index)] = \ - [demand.loc[row_sur, "Origin"], - demand.loc[row_def, "Origin"], - train_type, - surplus] - demand.loc[row_def, "Received"] += surplus - demand.loc[row_sur, "Dispatched"] = demand.loc[row_sur, "Received"] - step += 1 - - if (~np.isclose(demand["Received"], demand["Dispatched"])).any(): - raise Exception("While loop didn't converge") - return pl.from_pandas(df_balance_storage) - -def generate_demand_trains( - demand: pl.DataFrame, - demand_returns: pl.DataFrame, - demand_rebalancing: pl.DataFrame, - rail_vehicles: List[alt.RailVehicle], - config: TrainPlannerConfig -) -> pl.DataFrame: - """ - Generate a tabulated demand pair to indicate the final demand - for each demand pair for each train type in number of trains - Arguments: - ---------- - demand: Tabulated demand for each demand pair for each train type in number of cars - - demand: The user_input file loaded and prepared by previous functions - that contains loaded car demand for each demand pair. - demand_returns: The demand generated by the need - of returning the empty cars to their original nodes - demand_rebalancing: Documented additional manifest demand pairs and corresponding quantity for - rebalancing process - - config: Object storing train planner configuration paramaters - Outputs: - ---------- - demand: Tabulated demand for each demand pair in terms of number of cars and number of trains - """ - cars_per_train_min = (pl.from_dict(config.min_cars_per_train) - .melt(variable_name="Train_Type", value_name="Cars_Per_Train_Min") - ) - cars_per_train_min_default = (cars_per_train_min - .filter(pl.col("Train_Type") == pl.lit("Default")) - .select("Cars_Per_Train_Min").item() - ) - cars_per_train_target = (pl.from_dict(config.target_cars_per_train) - .melt(variable_name="Train_Type", value_name="Cars_Per_Train_Target") - ) - cars_per_train_target_default = (cars_per_train_target - .filter(pl.col("Train_Type") == pl.lit("Default")) - .select("Cars_Per_Train_Target").item() - ) - #Prepare hp_per_ton requirements to merge onto the demand DataFrame - hp_per_ton = pl.concat([ - (pl.DataFrame(this_dict) - .melt(variable_name="Train_Type", value_name="HP_Required_Per_Ton") - .with_columns(pl.lit(this_item).alias("O_D")) - .with_columns(pl.col("O_D").str.split("_").list.first().alias("Origin"), - pl.col("O_D").str.split("_").list.last().alias("Destination")) - ) - for this_item, this_dict in config.hp_required_per_ton.items() - ], how="horizontal_relaxed") - - #Prepare ton_per_car requirements to merge onto the demand DataFrame - def get_kg_empty(veh): - return veh.mass_static_base_kilograms + veh.axle_count * veh.mass_rot_per_axle_kilograms - def get_kg(veh): - return veh.mass_static_base_kilograms + veh.mass_freight_kilograms + veh.axle_count * veh.mass_rot_per_axle_kilograms - - ton_per_car = ( - pl.DataFrame({"Train_Type": pl.Series([rv.car_type for rv in rail_vehicles]).str.strip_suffix("_Loaded"), - "KG_Empty": [get_kg_empty(rv) for rv in rail_vehicles], - "KG": [get_kg(rv) for rv in rail_vehicles]}) - .with_columns(pl.when(pl.col("Train_Type").str.contains("_Empty")) - .then(pl.col("KG_Empty") / utilities.KG_PER_TON) - .otherwise(pl.col("KG") / utilities.KG_PER_TON) - .alias("Tons_Per_Car")) - .drop(["KG_Empty","KG"]) - ) - - demand = (pl.concat([demand, demand_returns, demand_rebalancing], how="diagonal_relaxed") - .group_by("Origin","Destination", "Train_Type") - .agg(pl.col("Number_of_Cars").sum()) - .filter(pl.col("Number_of_Cars") > 0) - .join(ton_per_car, on="Train_Type", how="left") - # Merge on OD-specific hp_per_ton if the user specified any - .join(hp_per_ton.drop("O_D"), on=["Origin","Destination","Train_Type"], how="left") - # Second, merge on defaults per train type - .join(hp_per_ton.filter((pl.col("O_D") =="Default")).drop(["O_D","Origin","Destination"]), - on=["Train_Type"], - how="left", - suffix="_Default") - # Merge on cars_per_train_min if the user specified any - .join(cars_per_train_min, on=["Train_Type"], how="left") - # Merge on cars_per_train_target if the user specified any - .join(cars_per_train_target, on=["Train_Type"], how="left") - # Fill in defaults per train type wherever the user didn't specify OD-specific hp_per_ton - .with_columns( - pl.coalesce("HP_Required_Per_Ton", "HP_Required_Per_Ton_Default").alias("HP_Required_Per_Ton"), - pl.col("Cars_Per_Train_Min").fill_null(cars_per_train_min_default), - pl.col("Cars_Per_Train_Target").fill_null(cars_per_train_target_default), - ) - ) - loaded = (demand - .filter(~pl.col("Train_Type").str.contains("_Empty")) - .with_columns( - pl.col("Number_of_Cars", "Tons_Per_Car", "HP_Required_Per_Ton", "Cars_Per_Train_Min", "Cars_Per_Train_Target").name.suffix("_Loaded") - ) - ) - empty = (demand - .filter(pl.col("Train_Type").str.contains("_Empty")) - .with_columns( - pl.col("Number_of_Cars", "Tons_Per_Car", "HP_Required_Per_Ton", "Cars_Per_Train_Min", "Cars_Per_Train_Target").name.suffix("_Empty"), - pl.col("Train_Type").str.strip_suffix("_Empty") - ) - ) - demand = (demand - .select(pl.col("Origin", "Destination"), pl.col("Train_Type").str.strip_suffix("_Empty")) - .unique() - .join(loaded.select(cs.by_name("Origin", "Destination", "Train_Type") | cs.ends_with("_Loaded")), on=["Origin", "Destination", "Train_Type"], how="left") - .join(empty.select(cs.by_name("Origin", "Destination", "Train_Type") | cs.ends_with("_Empty")), on=["Origin", "Destination", "Train_Type"], how="left") - # Replace nulls with zero - .with_columns(cs.float().fill_null(0.0), - cs.by_dtype(pl.UInt32).fill_null(pl.lit(0).cast(pl.UInt32)), - cs.by_dtype(pl.Int64).fill_null(pl.lit(0).cast(pl.Int64)), - ) - .group_by("Origin", "Destination", "Train_Type") - .agg( - pl.col("Number_of_Cars_Loaded", "Number_of_Cars_Empty").sum(), - pl.col("Tons_Per_Car_Loaded", "Tons_Per_Car_Empty", - "HP_Required_Per_Ton_Loaded", "HP_Required_Per_Ton_Empty", - "Cars_Per_Train_Min_Loaded", "Cars_Per_Train_Min_Empty", - "Cars_Per_Train_Target_Loaded", "Cars_Per_Train_Target_Empty").mean(), - pl.sum_horizontal("Number_of_Cars_Loaded", "Number_of_Cars_Empty").sum().alias("Number_of_Cars") - ) - .with_columns( - # If Cars_Per_Train_Min and Cars_Per_Train_Target "disagree" for empty vs. loaded, take the average weighted by number of cars - ((pl.col("Cars_Per_Train_Min_Loaded").mul("Number_of_Cars_Loaded") + pl.col("Cars_Per_Train_Min_Empty").mul("Number_of_Cars_Empty")) / pl.col("Number_of_Cars")).alias("Cars_Per_Train_Min"), - ((pl.col("Cars_Per_Train_Target_Loaded").mul("Number_of_Cars_Loaded") + pl.col("Cars_Per_Train_Target_Empty").mul("Number_of_Cars_Empty")) / pl.col("Number_of_Cars")).alias("Cars_Per_Train_Target") - ) - .with_columns( - pl.when(config.single_train_mode) - .then(1) - .when(pl.col("Number_of_Cars") == 0) - .then(0) - .when(pl.col("Cars_Per_Train_Target") == pl.col("Number_of_Cars")) - .then(1) - .when(pl.col("Cars_Per_Train_Target") <= 1.0) - .then(pl.col("Number_of_Cars")) - .otherwise( - pl.max_horizontal([ - 1, - pl.min_horizontal([ - pl.col("Number_of_Cars").floordiv("Cars_Per_Train_Target") + 1, - pl.col("Number_of_Cars").floordiv("Cars_Per_Train_Min") - ]) - ]) - ).cast(pl.UInt32).alias("Number_of_Trains") - ) - .drop("Cars_Per_Train_Target_Loaded", "Cars_Per_Train_Target_Empty", "Cars_Per_Train_Min_Empty", "Cars_Per_Train_Min_Loaded") - ) - return demand - - -def generate_dispatch_details( - demand: pl.DataFrame, - hours: int -) -> pl.DataFrame: - """ - Generate a tabulated demand pair to indicate the expected dispatching interval - and actual dispatching timesteps after rounding - Arguments: - ---------- - config: Object storing train planner configuration paramaters - demand_train: Dataframe of demand (number of trains) for each OD pair for each train type - hours: Number of hours in the simulation time period - Outputs: - ---------- - dispatch_times: Tabulated dispatching time for each demand pair for each train type - in hours - """ - def pctWithinGroup(df: pl.DataFrame, grouping_vars: List[str]) -> pl.DataFrame: - return (df - .with_columns( - (pl.cum_count('Origin').over(grouping_vars) / - pl.count().over(grouping_vars)) - .alias("Percent_Within_Group") - ) - ) - - def allocateItems(df: pl.DataFrame, target: str, grouping_vars: List[str]) -> pl.DataFrame: - return (df - .sort(grouping_vars) - .pipe(pctWithinGroup, grouping_vars = grouping_vars) - .with_columns( - pl.col(target).mul("Percent_Within_Group").round().alias(f'{target}_Group_Cumulative') - ) - .with_columns( - (pl.col(f'{target}_Group_Cumulative') - pl.col(f'{target}_Group_Cumulative').shift(1).over(grouping_vars)) - .fill_null(pl.col(f'{target}_Group_Cumulative')) - .alias(f'{target}') - ) - .drop(f'{target}_Group_Cumulative') - ) - - grouping_vars = ["Origin", "Destination", "Train_Type"] - demand = (demand - .select(pl.exclude("Number_of_Trains").repeat_by("Number_of_Trains").explode()) - .pipe(allocateItems, target = "Number_of_Cars_Loaded", grouping_vars = grouping_vars) - .drop("Percent_Within_Group") - .pipe(allocateItems, target = "Number_of_Cars_Empty", grouping_vars = grouping_vars) - .group_by(pl.exclude("Number_of_Cars_Empty", "Number_of_Cars_Loaded")) - .agg(pl.col("Number_of_Cars_Empty", "Number_of_Cars_Loaded")) - .with_columns(pl.col("Number_of_Cars_Loaded").list.sort(descending=True), - pl.col("Number_of_Cars_Empty").list.sort(descending=False)) - .explode("Number_of_Cars_Empty", "Number_of_Cars_Loaded") - .with_columns( - (pl.col("Tons_Per_Car_Loaded").mul("Number_of_Cars_Loaded") + pl.col("Tons_Per_Car_Empty").mul("Number_of_Cars_Empty")).alias("Tons_Per_Train"), - (pl.col("HP_Required_Per_Ton_Loaded").mul("Tons_Per_Car_Loaded").mul("Number_of_Cars_Loaded") + - pl.col("HP_Required_Per_Ton_Empty").mul("Tons_Per_Car_Empty").mul("Number_of_Cars_Empty") - ).alias("HP_Required") - ) - .sort("Origin", "Destination", "Percent_Within_Group", "Train_Type") - .with_columns( - (hours * 1.0 / pl.len().over("Origin", "Destination")).alias("Interval") - ) - .with_columns( - ((pl.col("Interval").cum_count().over(["Origin","Destination"])) \ - * pl.col("Interval")).alias("Hour") - ) - .select("Hour", "Origin", "Destination", "Train_Type", - "Number_of_Cars", "Number_of_Cars_Loaded", "Number_of_Cars_Empty", - "Tons_Per_Train", "HP_Required" - ) - .rename({"Number_of_Cars_Loaded": "Cars_Loaded", - "Number_of_Cars_Empty": "Cars_Empty"}) - .sort(["Hour","Origin","Destination","Train_Type"]) - ) - - return demand +def append_loco_info(loco_info: pd.DataFrame) -> pd.DataFrame: + if all(item in loco_info.columns for item in [ + 'HP','Loco_Mass_Tons','SOC_J','SOC_Min_J','SOC_Max_J','Capacity_J' + ] + ): return loco_info + get_hp = lambda loco: loco.pwr_rated_kilowatts * 1e3 / alt.utils.W_PER_HP + get_mass_ton = lambda loco: 0 if not loco.mass_kg else loco.mass_kg / alt.utils.KG_PER_TON + get_starting_soc = lambda loco: defaults.DIESEL_TANK_CAPACITY_J if not loco.res else loco.res.state.soc * loco.res.energy_capacity_joules + get_min_soc = lambda loco: 0 if not loco.res else loco.res.min_soc * loco.res.energy_capacity_joules + get_max_soc = lambda loco: defaults.DIESEL_TANK_CAPACITY_J if not loco.res else loco.res.max_soc * loco.res.energy_capacity_joules + get_capacity = lambda loco: defaults.DIESEL_TANK_CAPACITY_J if not loco.res else loco.res.energy_capacity_joules + loco_info.loc[:,'HP'] = loco_info.loc[:,'Rust_Loco'].apply(get_hp) + loco_info.loc[:,'Loco_Mass_Tons'] = loco_info.loc[:,'Rust_Loco'].apply(get_mass_ton) + loco_info.loc[:,'SOC_J'] = loco_info.loc[:,'Rust_Loco'].apply(get_starting_soc) + loco_info.loc[:,'SOC_Min_J'] = loco_info.loc[:,'Rust_Loco'].apply(get_min_soc) + loco_info.loc[:,'SOC_Max_J'] = loco_info.loc[:,'Rust_Loco'].apply(get_max_soc) + loco_info.loc[:,'Capacity_J'] = loco_info.loc[:,'Rust_Loco'].apply(get_capacity) + return loco_info def build_locopool( - config: TrainPlannerConfig, + config: planner_config.TrainPlannerConfig, demand_file: Union[pl.DataFrame, Path, str], method: str = "tile", shares: List[float] = [], @@ -635,7 +101,6 @@ def build_locopool( if config.single_train_mode: sorted_nodes = np.tile([demand.select(pl.col("Origin").first()).item()],rows).tolist() engine_numbers = range(0, rows) - print(engine_numbers) else: sorted_nodes = np.sort(np.tile(node_list, initial_size)).tolist() engine_numbers = rankdata(sorted_nodes, method="dense") * 1000 + \ @@ -645,6 +110,7 @@ def build_locopool( repetitions = math.ceil(rows/len(loco_types)) types = np.tile(loco_types, repetitions).tolist()[0:rows] elif method == "shares_twoway": + # TODO: this logic can be replaced (and generalized to >2 types) using altrios.utilities.allocateItems if((len(loco_types) != 2) | (len(shares) != 2)): raise ValueError( f"""2-way prescribed locopool requested but number of locomotive types is not 2.""") @@ -704,7 +170,6 @@ def build_locopool( loco_pool = loco_pool.join(loco_info_pl, on="Locomotive_Type") return loco_pool - def build_refuelers( node_list: pd.Series, loco_pool: pl.DataFrame, @@ -796,25 +261,6 @@ def append_charging_guidelines( .with_columns(pl.max_horizontal([pl.col('SOC_Max_J')-pl.col('Battery_Headroom_J'), pl.col('SOC_Min_J')]).alias("SOC_J"))) return refuelers, loco_pool -def append_loco_info(loco_info: pd.DataFrame) -> pd.DataFrame: - if all(item in loco_info.columns for item in [ - 'HP','Loco_Mass_Tons','SOC_J','SOC_Min_J','SOC_Max_J','Capacity_J' - ] - ): return loco_info - get_hp = lambda loco: loco.pwr_rated_kilowatts * 1e3 / alt.utils.W_PER_HP - get_mass_ton = lambda loco: 0 if not loco.mass_kg else loco.mass_kg / alt.utils.KG_PER_TON - get_starting_soc = lambda loco: defaults.DIESEL_TANK_CAPACITY_J if not loco.res else loco.res.state.soc * loco.res.energy_capacity_joules - get_min_soc = lambda loco: 0 if not loco.res else loco.res.min_soc * loco.res.energy_capacity_joules - get_max_soc = lambda loco: defaults.DIESEL_TANK_CAPACITY_J if not loco.res else loco.res.max_soc * loco.res.energy_capacity_joules - get_capacity = lambda loco: defaults.DIESEL_TANK_CAPACITY_J if not loco.res else loco.res.energy_capacity_joules - loco_info.loc[:,'HP'] = loco_info.loc[:,'Rust_Loco'].apply(get_hp) - loco_info.loc[:,'Loco_Mass_Tons'] = loco_info.loc[:,'Rust_Loco'].apply(get_mass_ton) - loco_info.loc[:,'SOC_J'] = loco_info.loc[:,'Rust_Loco'].apply(get_starting_soc) - loco_info.loc[:,'SOC_Min_J'] = loco_info.loc[:,'Rust_Loco'].apply(get_min_soc) - loco_info.loc[:,'SOC_Max_J'] = loco_info.loc[:,'Rust_Loco'].apply(get_max_soc) - loco_info.loc[:,'Capacity_J'] = loco_info.loc[:,'Rust_Loco'].apply(get_capacity) - return loco_info - def dispatch( dispatch_time: int, origin: str, @@ -822,7 +268,7 @@ def dispatch( train_tonnage: float, hp_required: float, total_cars: float, - config: TrainPlannerConfig, + config: planner_config.TrainPlannerConfig, ) -> pl.Series: """ Update the locomotive pool by identifying the desired locomotive to dispatch and assign to the @@ -1081,7 +527,7 @@ def run_train_planner( simulation_days: int, scenario_year: int, train_type: alt.TrainType = alt.TrainType.Freight, - config: TrainPlannerConfig = TrainPlannerConfig(), + config: planner_config.TrainPlannerConfig = planner_config.TrainPlannerConfig(), demand_file: Union[pl.DataFrame, Path, str] = defaults.DEMAND_FILE, network_charging_guidelines: pl.DataFrame = None, ) -> Tuple[ @@ -1108,6 +554,7 @@ def run_train_planner( """ config.loco_info = append_loco_info(config.loco_info) demand, node_list = demand_loader(demand_file) + if refuelers is None: refuelers = build_refuelers( node_list, @@ -1120,26 +567,28 @@ def run_train_planner( refuelers, loco_pool = append_charging_guidelines(refuelers, loco_pool, demand, network_charging_guidelines) if config.single_train_mode: - demand = generate_demand_trains(demand, + demand = demand_generators.generate_demand_trains(demand, demand_returns = pl.DataFrame(), demand_rebalancing = pl.DataFrame(), rail_vehicles = rail_vehicles, config = config) - dispatch_times = (demand + dispatch_schedule = (demand .with_row_index(name="index") .with_columns(pl.col("index").mul(24.0).alias("Hour")) .drop("index") ) else: - demand_returns = generate_return_demand(demand, config) + demand_returns = demand_generators.generate_return_demand(demand, config) demand_rebalancing = pl.DataFrame() if demand.filter(pl.col("Train_Type").str.contains("Manifest")).height > 0: - demand_origin_manifest = generate_origin_manifest_demand(demand, node_list, config) - demand_rebalancing = balance_trains(demand_origin_manifest) - demand = generate_demand_trains(demand, demand_returns, demand_rebalancing, rail_vehicles, config) - dispatches = generate_dispatch_details(demand, simulation_days * 24) - - final_departure = dispatches.get_column("Hour").max() + demand_origin_manifest = demand_generators.generate_origin_manifest_demand(demand, node_list, config) + demand_rebalancing = demand_generators.balance_trains(demand_origin_manifest) + demand = demand_generators.generate_demand_trains(demand, demand_returns, demand_rebalancing, rail_vehicles, config) + if config.dispatch_scheduler is None: + config.dispatch_scheduler = schedulers.generate_dispatch_details + dispatch_schedule = config.dispatch_scheduler(demand, rail_vehicles, simulation_days, config) + + final_departure = dispatch_schedule.get_column("Hour").max() train_consist_plan = pl.DataFrame(schema= {'Train_ID': pl.Int64, 'Train_Type': pl.Utf8, @@ -1163,10 +612,10 @@ def run_train_planner( done = False # start at first departure time - current_time = dispatches.get_column("Hour").min() + current_time = dispatch_schedule.get_column("Hour").min() while not done: # Dispatch new train consists - current_dispatches = dispatches.filter(pl.col("Hour") == current_time) + current_dispatches = dispatch_schedule.filter(pl.col("Hour") == current_time) if(current_dispatches.height > 0): loco_pool, event_tracker = update_refuel_queue(loco_pool, refuelers, current_time, event_tracker) @@ -1318,7 +767,7 @@ def run_train_planner( loco_pool, event_tracker = update_refuel_queue(loco_pool, refuelers, current_time, event_tracker) done = True else: - current_time = dispatches.filter(pl.col("Hour").gt(current_time)).get_column("Hour").min() + current_time = dispatch_schedule.filter(pl.col("Hour").gt(current_time)).get_column("Hour").min() train_consist_plan = (train_consist_plan .with_columns( @@ -1358,7 +807,7 @@ def run_train_planner( network = alt.Network.from_file( str(alt.resources_root() / "networks/Taconite-NoBalloon.yaml") ) - config = TrainPlannerConfig() + config = planner_config.TrainPlannerConfig() loco_pool = build_locopool(config, defaults.DEMAND_FILE) demand, node_list = demand_loader(defaults.DEMAND_FILE) refuelers = build_refuelers( diff --git a/python/altrios/train_planner/planner_config.py b/python/altrios/train_planner/planner_config.py new file mode 100644 index 00000000..749c8900 --- /dev/null +++ b/python/altrios/train_planner/planner_config.py @@ -0,0 +1,108 @@ +from __future__ import annotations +from altrios.train_planner import demand_generators +import polars as pl +import pandas as pd +from typing import Dict, Callable, Optional +from dataclasses import dataclass, field +import altrios as alt +from altrios import defaults + +pl.enable_string_cache() + +@dataclass +class TrainPlannerConfig: + """ + Dataclass class for train planner configuration parameters. + + Attributes: + ---------- + - `single_train_mode`: `True` to only run one round-trip train and schedule its charging; `False` to plan train consists + - `min_cars_per_train`: `Dict` of the minimum length in number of cars to form a train for each train type + - `target_cars_per_train`: `Dict` of the standard train length in number of cars for each train type + - `manifest_empty_return_ratio`: Desired railcar reuse ratio to calculate the empty manifest car demand, (E_ij+E_ji)/(L_ij+L_ji) + - `cars_per_locomotive`: Heuristic scaling factor used to size number of locomotives needed based on demand. + - `cars_per_locomotive_fixed`: If `True`, `cars_per_locomotive` overrides `hp_per_ton` calculations used for dispatching decisions. + - `refuelers_per_incoming_corridor`: Heuristic scaling factor used to scale number of refuelers needed at each node based on number of incoming corridors. + - `stack_type`: Type of stacking (applicable only for intermodal containers) + - `require_diesel`: `True` to require each consist to have at least one diesel locomotive. + - `manifest_empty_return_ratio`: `Dict` + - `drag_coeff_function`: `Dict` + - `hp_required_per_ton`: `Dict` + - `dispatch_scaling_dict`: `Dict` + - `loco_info`: `Dict` + - `refueler_info`: `Dict` + - `return_demand_generators`: `Dict` + """ + single_train_mode: bool = False + min_cars_per_train: Dict = field(default_factory = lambda: { + "Default": 60 + }) + target_cars_per_train: Dict = field(default_factory = lambda: { + "Default": 180 + }) + cars_per_locomotive: Dict = field(default_factory = lambda: { + "Default": 70 + }) + cars_per_locomotive_fixed: bool = False + refuelers_per_incoming_corridor: int = 4 + stack_type: str = "single" + require_diesel: bool = False + manifest_empty_return_ratio: float = 0.6 + hp_required_per_ton: Dict = field(default_factory = lambda: { + "Default": { + "Unit": 2.0, + "Manifest": 1.5, + "Intermodal": 2.0 + 2.0, + "Unit_Empty": 2.0, + "Manifest_Empty": 1.5, + "Intermodal_Empty": 2.0 + 2.0, + } + }) + dispatch_scaling_dict: Dict = field(default_factory = lambda: { + "time_mult_factor": 1.4, + "hours_add": 2, + "energy_mult_factor": 1.25 + }) + loco_info: pd.DataFrame = field(default_factory = lambda: pd.DataFrame({ + "Diesel_Large": { + "Capacity_Cars": 20, + "Fuel_Type": "Diesel", + "Min_Servicing_Time_Hr": 3.0, + "Rust_Loco": alt.Locomotive.default(), + "Cost_USD": defaults.DIESEL_LOCO_COST_USD, + "Lifespan_Years": defaults.LOCO_LIFESPAN + }, + "BEL": { + "Capacity_Cars": 20, + "Fuel_Type": "Electricity", + "Min_Servicing_Time_Hr": 3.0, + "Rust_Loco": alt.Locomotive.default_battery_electric_loco(), + "Cost_USD": defaults.BEL_MINUS_BATTERY_COST_USD, + "Lifespan_Years": defaults.LOCO_LIFESPAN + } + }).transpose().reset_index(names='Locomotive_Type')) + refueler_info: pd.DataFrame = field(default_factory = lambda: pd.DataFrame({ + "Diesel_Fueler": { + "Locomotive_Type": "Diesel_Large", + "Fuel_Type": "Diesel", + "Refueler_J_Per_Hr": defaults.DIESEL_REFUEL_RATE_J_PER_HR, + "Refueler_Efficiency": defaults.DIESEL_REFUELER_EFFICIENCY, + "Cost_USD": defaults.DIESEL_REFUELER_COST_USD, + "Lifespan_Years": defaults.LOCO_LIFESPAN + }, + "BEL_Charger": { + "Locomotive_Type": "BEL", + "Fuel_Type": "Electricity", + "Refueler_J_Per_Hr": defaults.BEL_CHARGE_RATE_J_PER_HR, + "Refueler_Efficiency": defaults.BEL_CHARGER_EFFICIENCY, + "Cost_USD": defaults.BEL_CHARGER_COST_USD, + "Lifespan_Years": defaults.LOCO_LIFESPAN + } + }).transpose().reset_index(names='Refueler_Type')) + drag_coeff_function: Optional[Callable]= None + dispatch_scheduler: Optional[Callable] = None + return_demand_generators: Dict = field(default_factory = lambda: { + 'Unit': demand_generators.generate_return_demand_unit, + 'Manifest': demand_generators.generate_return_demand_manifest, + 'Intermodal': demand_generators.generate_return_demand_intermodal + }) diff --git a/python/altrios/train_planner/schedulers.py b/python/altrios/train_planner/schedulers.py new file mode 100644 index 00000000..14eee6f9 --- /dev/null +++ b/python/altrios/train_planner/schedulers.py @@ -0,0 +1,534 @@ +import math +from typing import Dict, List +from collections import defaultdict +import polars as pl +import altrios as alt +from altrios import utilities +from altrios.train_planner import planner_config + +def calculate_waiting_time_single_dispatch( + cumulative_demand_control: int, + last_dispatch: int, + demand_hourly: pl.DataFrame, + dispatch_hour: int, + remaining_demand_list: pl.DataFrame, + remaining_demand_list_control: pl.DataFrame, + search_range: int, + od_pair_loop: str, + min_num_cars_per_train: int, + target_num_cars_per_train: int + +) -> tuple: + """ + Calculate the waiting time for a single dispatch using Polars DataFrames. + """ + # Initialize variables + direction_demand = demand_hourly.filter(pl.col("OD_Pair") == od_pair_loop) + remaining_demand = 0 + total_waiting_time = 0 + total_waiting_time_before_dispatch = 0 + dispatched = 0 + cumulative_demand = cumulative_demand_control + remaining_demand_list = remaining_demand_list_control.clone() #Copy to avoid modifying original + remaining_demand_tem = [] + # Calculate cumulative demand up to the dispatch hour + end_hour = min(dispatch_hour + 1, len(demand_hourly)) + hourly_demand = direction_demand.slice(last_dispatch, end_hour - last_dispatch) + cumulative_demand += hourly_demand["Number_of_Containers"].sum() + + if remaining_demand_list.is_empty(): + hourly_demand = hourly_demand.with_columns( + ((pl.col("Number_of_Containers") * (dispatch_hour - pl.col("Hour"))).alias("Waiting_Time")) + ) + total_waiting_time_before_dispatch = hourly_demand["Waiting_Time"].sum() + total_waiting_time += hourly_demand["Waiting_Time"].sum() + + # If there is remaining demand, calculate waiting time for new and remaining demand + else: + hourly_demand = hourly_demand.with_columns( + ((pl.col("Number_of_Containers") * (dispatch_hour - pl.col("Hour"))).alias("Waiting_Time")) + ) + total_waiting_time_before_dispatch = hourly_demand["Waiting_Time"].sum() + total_waiting_time += hourly_demand["Waiting_Time"].sum() + + # Calculate waiting time for each entry in the remaining demand list + remaining_waiting_times = remaining_demand_list.with_columns( + (pl.col("Remaining_Demand") * (dispatch_hour - pl.col("Hour"))).alias("Remaining_Waiting_Time") + ) + total_waiting_time_before_dispatch += remaining_waiting_times["Remaining_Waiting_Time"].sum() + total_waiting_time += remaining_waiting_times["Remaining_Waiting_Time"].sum() + + + # Handle remaining demands if cumulative demand exceeds thresholds + if cumulative_demand >= min_num_cars_per_train: + if cumulative_demand >= target_num_cars_per_train: + dispatched = target_num_cars_per_train + dispatched_split = target_num_cars_per_train + remaining_demand = cumulative_demand - dispatched_split # Carry over remaining demand + # Update remaining demand list if there's no prior remaining demand + if remaining_demand_list.height == 0: + #remaining_demand_tem = [] + for row in hourly_demand.iter_rows(): + # Number_of_Containers is located at the 4th column + if row[3] > 0: + if dispatched_split >= row[3]: + dispatched_split -= row[3] + else: + remaining_demand_for_hour = row[3] - dispatched_split + # Hour is located at the 5th column + remaining_demand_tem.append((remaining_demand_for_hour,row[4])) + # dispatched_split stop working from this hour to the end of this loop behavior + dispatched_split = 0 + # Filter `remaining_demand_tem` to include only positive Remaining_Demand values + filtered_remaining_demand_tem = [(rd[0], rd[1]) for rd in remaining_demand_tem if rd[0] > 0] + + # Construct the DataFrame directly from the filtered list + remaining_demand_list = pl.DataFrame({ + "Remaining_Demand": [rd[0] for rd in filtered_remaining_demand_tem], + "Hour": [rd[1] for rd in filtered_remaining_demand_tem] + }) + #remaining_demand_list = pl.DataFrame({"Remaining_Demand": [rd[0] for rd in remaining_demand_tem],"Hour": [rd[1] for rd in remaining_demand_tem]}).filter(pl.col("Remaining_Demand") > 0) + cumulative_demand = remaining_demand + else: + # Prepare the cumulative transformation approach + for row in remaining_demand_list.iter_rows(): + if dispatched_split >= row[0]: + dispatched_split -= row[0] + list_tem = list(row) + list_tem[0] = 0 + row = tuple(list_tem) + else: + row[0] -= dispatched_split + dispatched_split = 0 + remaining_demand_list = remaining_demand_list.filter(pl.col("Remaining_Demand") > 0) + # If there is still dispatched capacity left, apply it to new demand within the range + if dispatched_split > 0: + for row in hourly_demand.iter_rows(): + if row[3] > 0: + if dispatched_split >= row[3]: + dispatched_split -= row[3] + else: + remaining_demand_for_hour = row[3] - dispatched_split + remaining_demand_tem.append((remaining_demand_for_hour,row[4])) + dispatched_split = 0 + remaining_demand_list = pl.DataFrame({"Remaining_Demand": [rd[0] for rd in remaining_demand_tem],"Hour": [rd[1] for rd in remaining_demand_tem]}).filter(pl.col("Remaining_Demand") > 0) + cumulative_demand = remaining_demand + else: + dispatched = cumulative_demand + cumulative_demand = 0 # Reset cumulative demand if all is dispatched + + # Accumulate demand if below minimum threshold + else: + cumulative_demand = cumulative_demand + + # Filter demand for future hours in the specified search range + future_demand = demand_hourly.filter( + (pl.col("Hour") > dispatch_hour) & (pl.col("Hour") < min(last_dispatch + search_range, len(demand_hourly))) + ) + + # Calculate waiting time for each future hour + future_demand = future_demand.with_columns( + ((last_dispatch + search_range - 1 - pl.col("Hour")) * pl.col("Number_of_Containers")).alias("Waiting_Time") + ) + + # Sum up all waiting times for future demand + total_waiting_time += future_demand["Waiting_Time"].sum() + + # Calculate waiting time for remaining demand from previous hours, if any + if not remaining_demand_list.is_empty(): + # Add waiting time for remaining demand entries + remaining_waiting = remaining_demand_list.with_columns( + ((last_dispatch + search_range - 1 - pl.col("Hour")) * pl.col("Remaining_Demand")).alias("Remaining_Waiting_Time") + ) + + # Sum up the waiting times from remaining demand list + total_waiting_time += remaining_waiting["Remaining_Waiting_Time"].sum() +# Return results + return total_waiting_time_before_dispatch, total_waiting_time, remaining_demand_list, cumulative_demand, dispatched + +def find_minimum_waiting_time( + num_iterations: int, + demand_hourly: pl.DataFrame, + border_time_list: list, +) -> pl.DataFrame: + """ + Find the minimum waiting time for dispatches using Polars DataFrame. + """ + for i in range(len(border_time_list)): + od_pair_loop = border_time_list[i][0] + reverse_pair = "-".join(od_pair_loop.split("-")[::-1]) + directional_total_containers = demand_hourly.filter(pl.col("OD_Pair") == od_pair_loop)["Number_of_Containers"].sum() + reverse_total_containers = demand_hourly.filter(pl.col("OD_Pair") == reverse_pair)["Number_of_Containers"].sum() + if directional_total_containers > reverse_total_containers: + empty_containers = directional_total_containers - reverse_total_containers + empty_containers_o_d = reverse_pair + else: + empty_containers = reverse_total_containers - directional_total_containers + empty_containers_o_d = od_pair_loop + print(f"total containers for {od_pair_loop} is {directional_total_containers}") + print(f"reverse_total_containers for {reverse_pair} is {reverse_total_containers}") + #print(f"empty_containers for {empty_containers_o_d} is {empty_containers}") + print(f"empty_containers for {empty_containers_o_d} is {empty_containers}") + print(f"There are {len(border_time_list[0])-1} trains to dispatch") + empty_return = [] + final_dispatch_rows = [] + for j in range(len(border_time_list)): + start_hour = 0 + total_dispatched = 0 + dispatch_time = [] + waiting_time_total = 0 + waiting_time_total_before_dispatch = 0 + cumulative_demand_control = 0 + last_dispatch = 0 + remaining_demand_list_control = pl.DataFrame({ + "Remaining_Demand": pl.Series([], dtype=pl.Int64), + "Hour": pl.Series([], dtype=pl.Float64), + }) + dispatched_list = [] + #print(f"border_time_list[j][0] is {border_time_list[j][0]}") + od_pair_loop = border_time_list[j][0] + #print(f"od_pair_loop is {od_pair_loop}") + origin, destination = border_time_list[j][0].split('-') + #print(f"origin is {origin}") + #print(f"destination is {destination}") + #print(demand) + total_containers = demand_hourly.filter(pl.col("OD_Pair") == od_pair_loop)["Number_of_Containers"].sum() + for i in range(2, num_iterations): + if total_containers - total_dispatched == 0: + dispatched_list.append(0.0) + search_range = border_time_list[j][i] - start_hour + # DataFrame to accumulate dispatch hour info + total_waiting_time_demand_list = pl.DataFrame({ + "Dispatch_Hour": pl.Series([], dtype=pl.Int64), + "Waiting_Before_Dispatch": pl.Series([], dtype=pl.Float64), + "Total_Waiting": pl.Series([], dtype=pl.Float64), + "Remaining_Demand_List": pl.Series([], dtype=pl.Object), + "Cumulative_Demand": pl.Series([], dtype=pl.Float64), + "Dispatched": pl.Series([], dtype=pl.Float64) + }) + for dispatch_hour in range(start_hour, start_hour + search_range): + total_waiting_time_before_dispatch, total_waiting_time, remaining_demand_list, cumulative_demand, dispatched = calculate_waiting_time_single_dispatch( + cumulative_demand_control, last_dispatch, demand_hourly, dispatch_hour, remaining_demand_list_control, remaining_demand_list_control.clone(), search_range,od_pair_loop,min_num_cars_per_train, target_num_cars_per_train + ) + # Append data for each dispatch hour, ensuring consistent types + new_row = pl.DataFrame({ + "Dispatch_Hour": [dispatch_hour], + "Waiting_Before_Dispatch": [float(total_waiting_time_before_dispatch)], + "Total_Waiting": [float(total_waiting_time)], + "Remaining_Demand_List": [remaining_demand_list], + "Cumulative_Demand": [float(cumulative_demand)], + "Dispatched": [float(dispatched)] + }) + total_waiting_time_demand_list = total_waiting_time_demand_list.vstack(new_row) + + # Find the row with the minimum "Total_Waiting" + min_waiting_row = total_waiting_time_demand_list.sort("Total_Waiting").head(1) + min_waiting_time_hour = min_waiting_row[0, "Dispatch_Hour"] + min_waiting_time_before_dispatch = min_waiting_row[0, "Waiting_Before_Dispatch"] + min_waiting_time = min_waiting_row[0, "Total_Waiting"] + remaining_demand_list = min_waiting_row[0, "Remaining_Demand_List"] + cumulative_demand = min_waiting_row[0, "Cumulative_Demand"] + dispatched = min_waiting_row[0, "Dispatched"] + + + # Track dispatched containers for each dispatch hour + dispatched_list.append(dispatched) + # Reset remaining demand if cumulative demand is zero + if cumulative_demand == 0: + remaining_demand_list = pl.DataFrame(schema=["Remaining_Demand_List"]) + + # Update control values for the next iteration + remaining_demand_list_control = remaining_demand_list + cumulative_demand_control = cumulative_demand + last_dispatch = min_waiting_time_hour + 1 + start_hour = min_waiting_time_hour + 1 + total_dispatched += dispatched + waiting_time_total += min_waiting_time + + # Accumulate total waiting time for before dispatch and overall + if i == num_iterations - 1: + waiting_time_total_before_dispatch += min_waiting_time + else: + waiting_time_total_before_dispatch += min_waiting_time_before_dispatch + + # Add the dispatch hour to the list + dispatch_time.append(min_waiting_time_hour) + + remaining_to_dispatch = total_containers - total_dispatched + final_waiting_time = remaining_to_dispatch * (168 - start_hour) + waiting_time_total += final_waiting_time + dispatch_time.append(167) # Assuming final dispatch at the end of the period + dispatched_list.append(remaining_to_dispatch) + dispatch_df_row = [] + print(dispatched_list) + for i in range(len(dispatched_list)): + dispatch_df_row.append({ + "Origin": origin, + "Destination": destination, + "Train_Type": "Intermodal", + "Cars_Per_Train_Loaded": dispatched_list[i], + "Cars_Per_Train_Empty": 0.0, + "Target_Cars_Per_Train": float(target_num_cars_per_train), + "Number_of_Cars_Total": dispatched_list[i], + "Tons_Per_Train_Total": dispatched_list[i]*98.006382, + "HP_Required_Per_Ton": 4.0, + "Hour":float(dispatch_time[i]) + }) + if od_pair_loop == empty_containers_o_d: + dispatch_df_row = [] + for i in range(len(dispatched_list)): + if empty_containers > target_num_cars_per_train-dispatched_list[i]: + empty_return.append(target_num_cars_per_train-dispatched_list[i]) + empty_containers -= (target_num_cars_per_train-dispatched_list[i]) + else: + empty_return.append(empty_containers) + empty_containers = 0.0 + for i in range(len(dispatched_list)): + dispatch_df_row.append({ + "Origin": origin, + "Destination": destination, + "Train_Type": "Intermodal", + "Cars_Per_Train_Loaded": dispatched_list[i], + "Cars_Per_Train_Empty": empty_return[i], + "Target_Cars_Per_Train": float(target_num_cars_per_train), + "Number_of_Cars_Total": dispatched_list[i]+empty_return[i], + "Tons_Per_Train_Total": dispatched_list[i]*98.006382 + empty_return[i]*39.106152 , + "HP_Required_Per_Ton": 4.0, + "Hour":float(dispatch_time[i]) + }) + #print(f"dispatch_df_row is {dispatch_df_row}") + final_dispatch_rows.extend(dispatch_df_row) + #print(f"final_dispatch_rows is {final_dispatch_rows}") + dispatch_times = pl.DataFrame(final_dispatch_rows) + dispatch_times = dispatch_times.sort("Hour") + print(dispatch_times) + print(f"empty_return is {empty_return}") + return dispatch_times + +def calculate_dispatch_data(total_containers, target_num_cars, label, containers, max_min_cars): + remaining_containers = total_containers % target_num_cars + min_num_cars = ( + total_containers // target_num_cars + (1 if remaining_containers > 0 else 0) + ) + + ## Apply the maximum min_num_cars value + min_num_cars = int(max(min_num_cars, max_min_cars)) + + border_list = [] + border_time_list = [] + dispatched_list = [] + + if remaining_containers == 0: + border = total_containers / min_num_cars + else: + border = math.ceil(total_containers / min_num_cars) + + containers_left = total_containers + for _ in range(min_num_cars): + if containers_left >= border: + border_list.append(border) + containers_left -= border + else: + border_list.append(containers_left) + break + + cumulate_demand = 0 + p = 0 + for i, container in enumerate(containers): + cumulate_demand += container + if p == len(border_list) - 1: + border_time_list.append(len(containers) - 1) + break + if cumulate_demand >= border_list[p]: + border_time_list.append(i) + dispatched_list.append(cumulate_demand) + total_containers -= cumulate_demand + cumulate_demand = 0 + p += 1 + if p >= len(border_list): + break + if len(border_time_list) < len(border_list): + for _ in range(len(border_list) - len(border_time_list)): + border_time_list.append(border_time_list[-1]+_+1) + dispatched_list.append(total_containers) + if len(dispatched_list) < len(border_list): + for _ in range(len(border_list) - len(dispatched_list)): + dispatched_list.append(0) + return { + "Border": border_list, + "Border_Times": border_time_list, + "Dispatched": dispatched_list, + } + +# TODO read from config +min_num_cars_per_train = 5 +target_num_cars_per_train = 30 + +# Define the main function to generate demand trains with the updated rule +def generate_trains( + demand_hourly: pl.DataFrame, + target_num_cars_per_train:int +) -> pl.DataFrame: + # Step 1: Create an OD pair column + demand_hourly = demand_hourly.with_columns( + (pl.col("Origin") + "-" + pl.col("Destination")).alias("OD_Pair") + ) + + # Step 2: Group data by OD pair and calculate total containers for each pair + grouped_data = demand_hourly.group_by("OD_Pair").agg([ + pl.col("Number_of_Containers").sum().alias("Total_Containers") + ]) + + # Step 3: Create a dictionary to store the max min_num_cars for each OD pair + max_min_cars_dict = {} + + # Calculate min_num_cars for each direction and store the maximum in the dictionary + for row in grouped_data.iter_rows(): + od_pair = row[0] + total_containers = row[1] + + remaining_containers = total_containers % target_num_cars_per_train + min_num_cars = ( + total_containers // target_num_cars_per_train + (1 if remaining_containers > 0 else 0) + ) + + # Check the reverse direction + reverse_pair = "-".join(od_pair.split("-")[::-1]) + + if reverse_pair in max_min_cars_dict: + max_min_cars_dict[od_pair] = max(min_num_cars, max_min_cars_dict[reverse_pair]) + max_min_cars_dict[reverse_pair] = max_min_cars_dict[od_pair] + else: + max_min_cars_dict[od_pair] = min_num_cars + + # Prepare a list to collect the results for all OD pairs + all_dispatch_data = [] + # Step 4: Loop through each unique OD pair to calculate dispatch data + for row in grouped_data.iter_rows(): + od_pair = row[0] # This is the "OD_Pair" string like "Origin-Destination" + total_containers = row[1] # This is the "Total_Containers" value + + # Filter containers list for the specific OD pair + containers = demand_hourly.filter(pl.col("OD_Pair") == od_pair).select("Number_of_Containers").to_series().to_list() + + # Retrieve the max min_num_cars for this OD pair + max_min_cars = max_min_cars_dict[od_pair] + + # Calculate dispatch data for the current OD pair with the updated rule + dispatch_data = calculate_dispatch_data(total_containers, target_num_cars_per_train, od_pair, containers, max_min_cars) + + # Add the OD pair label to each entry in the dispatch data + dispatch_data_df = pl.DataFrame(dispatch_data) + dispatch_data_df = dispatch_data_df.with_columns(pl.lit(od_pair).alias("OD_Pair")) + + # Ensure the "Border" column exists and is cast to Float64 + if "Border" in dispatch_data_df.columns: + dispatch_data_df = dispatch_data_df.with_columns( + pl.col("Border").cast(pl.Float64) + ) + + # Append the result to the list + all_dispatch_data.append(dispatch_data_df) + + # Combine all dispatch data into a single DataFrame + final_dispatch_df = pl.concat(all_dispatch_data, how="diagonal") + + return final_dispatch_df + +def calculate_dispatches_deterministic_hourly( + demand: pl.DataFrame, + rail_vehicles: List[alt.RailVehicle], + simulation_days: int, + config: planner_config.TrainPlannerConfig +) -> pl.DataFrame: + """ + Converts a table of demand into a dispatch plan where trains depart from each origin in uniformly spaced intervals. + Arguments: + ---------- + demand: `DataFrame` or `LazyFrame` representing origin-destination demands (number of trains). + rail_vehicles: List of `altrios.RailVehicle` objects. + simulation_days: Number of days of simulation to run. + config: `TrainPlannerConfig` object. + Outputs: + ---------- + Updated demand `DataFrame` or `LazyFrame` representing dispatches, each defined with an origin, destination, train type, number of (loaded and empty) cars, tonnage, and HP per ton requirement. + """ + target_num_cars_per_train = config.target_num_cars_per_train + dispatch_df = generate_trains(demand,target_num_cars_per_train) + od_border_time = [] + border_time = dispatch_df["Border_Times"].to_list() + od_pair_list = dispatch_df["OD_Pair"].to_list() + for i in range(len(od_pair_list)): + od_border_list_sub =[] + od_border_list_sub.append(od_pair_list[i]) + od_border_list_sub.append(border_time[i]) + od_border_time.append(od_border_list_sub) + grouped_data = defaultdict(list) + for od_pair, value in od_border_time: + grouped_data[od_pair].append(value) + border_time_list= [[key] + values for key, values in grouped_data.items()] + num_iterations = len(border_time_list[0]) + schedule = find_minimum_waiting_time(num_iterations=num_iterations, + demand_hourly=demand, + border_time_list=border_time_list, + ) + return schedule + +def generate_dispatch_details( + demand: pl.DataFrame, + rail_vehicles: List[alt.RailVehicle], + simulation_days: int, + config: planner_config.TrainPlannerConfig +) -> pl.DataFrame: + """ + Generate a tabulated demand pair to indicate the expected dispatching interval + and actual dispatching timesteps after rounding, with departures from each terminal + spaced as evenly as possible + Arguments: + ---------- + demand: `DataFrame` or `LazyFrame` representing origin-destination demands (number of trains). + rail_vehicles: List of `altrios.RailVehicle` objects. + simulation_days: Number of days of simulation to run. + config: `TrainPlannerConfig` object. + Outputs: + ---------- + schedule: Tabulated dispatching time for each demand pair for each train type + in hours + """ + hours = simulation_days * 24 + + grouping_vars = ["Origin", "Destination", "Train_Type"] + schedule = (demand + .select(pl.exclude("Number_of_Trains").repeat_by("Number_of_Trains").explode()) + .pipe(utilities.allocateItems, target = "Number_of_Cars_Loaded", grouping_vars = grouping_vars) + .drop("Percent_Within_Group") + .pipe(utilities.allocateItems, target = "Number_of_Cars_Empty", grouping_vars = grouping_vars) + .group_by(pl.exclude("Number_of_Cars_Empty", "Number_of_Cars_Loaded")) + .agg(pl.col("Number_of_Cars_Empty", "Number_of_Cars_Loaded")) + .with_columns(pl.col("Number_of_Cars_Loaded").list.sort(descending=True), + pl.col("Number_of_Cars_Empty").list.sort(descending=False)) + .explode("Number_of_Cars_Empty", "Number_of_Cars_Loaded") + .with_columns( + (pl.col("Tons_Per_Car_Loaded").mul("Number_of_Cars_Loaded") + pl.col("Tons_Per_Car_Empty").mul("Number_of_Cars_Empty")).alias("Tons_Per_Train"), + (pl.col("HP_Required_Per_Ton_Loaded").mul("Tons_Per_Car_Loaded").mul("Number_of_Cars_Loaded") + + pl.col("HP_Required_Per_Ton_Empty").mul("Tons_Per_Car_Empty").mul("Number_of_Cars_Empty") + ).alias("HP_Required") + ) + .sort("Origin", "Destination", "Percent_Within_Group", "Train_Type") + .with_columns( + (hours * 1.0 / pl.len().over("Origin", "Destination")).alias("Interval") + ) + .with_columns( + ((pl.col("Interval").cum_count().over(["Origin","Destination"])) \ + * pl.col("Interval")).alias("Hour") + ) + .select("Hour", "Origin", "Destination", "Train_Type", + "Number_of_Cars", "Number_of_Cars_Loaded", "Number_of_Cars_Empty", + "Tons_Per_Train", "HP_Required" + ) + .rename({"Number_of_Cars_Loaded": "Cars_Loaded", + "Number_of_Cars_Empty": "Cars_Empty"}) + .sort(["Hour","Origin","Destination","Train_Type"]) + ) + + return schedule \ No newline at end of file diff --git a/python/altrios/utilities.py b/python/altrios/utilities.py index da9ffafe..eb0280eb 100644 --- a/python/altrios/utilities.py +++ b/python/altrios/utilities.py @@ -3,7 +3,7 @@ from __future__ import annotations import re import numpy as np -from typing import Tuple, Union, Optional, Dict, Any, TYPE_CHECKING +from typing import Tuple, Union, Optional, List, Dict, Any, TYPE_CHECKING import pandas as pd import polars as pl import datetime @@ -183,6 +183,37 @@ def range_minmax(self) -> pl.Expr: pl.Expr.range_minmax=range_minmax del range_minmax +def pctWithinGroup( + df: Union[pl.DataFrame, pl.LazyFrame], + grouping_vars: List[str] +) -> Union[pl.DataFrame, pl.LazyFrame]: + return (df + .with_columns( + ((pl.int_range(pl.len(), dtype=pl.UInt32).over(grouping_vars).add(1)) / + pl.count().over(grouping_vars)) + .alias("Percent_Within_Group") + ) + ) + +def allocateItems( + df: Union[pl.DataFrame, pl.LazyFrame], + target: str, + grouping_vars: List[str] +) -> Union[pl.DataFrame, pl.LazyFrame]: + return (df + .sort(grouping_vars) + .pipe(pctWithinGroup, grouping_vars = grouping_vars) + .with_columns( + pl.col(target).mul("Percent_Within_Group").round().alias(f'{target}_Group_Cumulative') + ) + .with_columns( + (pl.col(f'{target}_Group_Cumulative') - pl.col(f'{target}_Group_Cumulative').shift(1).over(grouping_vars)) + .fill_null(pl.col(f'{target}_Group_Cumulative')) + .alias(f'{target}') + ) + .drop(f'{target}_Group_Cumulative') +) + def resample( df: pd.DataFrame, dt_new: Optional[float] = 1.0, diff --git a/truck_work_log.txt b/truck_work_log.txt deleted file mode 100644 index 75bb88dd..00000000 --- a/truck_work_log.txt +++ /dev/null @@ -1,498 +0,0 @@ -Vehicle ID: 1, Event Type: start, Timestamp: 174.2160165938894 -Vehicle ID: 1, Event Type: end, Timestamp: 174.2841399184887 -Vehicle ID: 2, Event Type: start, Timestamp: 174.42759052325093 -Vehicle ID: 3, Event Type: start, Timestamp: 174.48822045399396 -Vehicle ID: 2, Event Type: end, Timestamp: 174.50251702668348 -Vehicle ID: 4, Event Type: start, Timestamp: 174.5104609970999 -Vehicle ID: 5, Event Type: start, Timestamp: 174.52565217240667 -Vehicle ID: 6, Event Type: start, Timestamp: 174.55003962253323 -Vehicle ID: 7, Event Type: start, Timestamp: 174.55870046731673 -Vehicle ID: 3, Event Type: end, Timestamp: 174.56211135073673 -Vehicle ID: 8, Event Type: start, Timestamp: 174.56476123576883 -Vehicle ID: 9, Event Type: start, Timestamp: 174.57337439745137 -Vehicle ID: 10, Event Type: start, Timestamp: 174.5768097959614 -Vehicle ID: 11, Event Type: start, Timestamp: 174.5819643532696 -Vehicle ID: 12, Event Type: start, Timestamp: 174.58657155806372 -Vehicle ID: 4, Event Type: end, Timestamp: 174.5867161367358 -Vehicle ID: 13, Event Type: start, Timestamp: 174.58960814254343 -Vehicle ID: 14, Event Type: start, Timestamp: 174.60016925326943 -Vehicle ID: 5, Event Type: end, Timestamp: 174.60377844287396 -Vehicle ID: 15, Event Type: start, Timestamp: 174.6049349998376 -Vehicle ID: 6, Event Type: end, Timestamp: 174.62601582830848 -Vehicle ID: 16, Event Type: start, Timestamp: 174.62773614247217 -Vehicle ID: 7, Event Type: end, Timestamp: 174.6316161906628 -Vehicle ID: 17, Event Type: start, Timestamp: 174.64084558973272 -Vehicle ID: 8, Event Type: end, Timestamp: 174.64375454298641 -Vehicle ID: 18, Event Type: start, Timestamp: 174.6531456223904 -Vehicle ID: 19, Event Type: start, Timestamp: 174.65482113599072 -Vehicle ID: 9, Event Type: end, Timestamp: 174.65708923644593 -Vehicle ID: 10, Event Type: end, Timestamp: 174.65712502088186 -Vehicle ID: 12, Event Type: end, Timestamp: 174.66093513826118 -Vehicle ID: 11, Event Type: end, Timestamp: 174.66301292643178 -Vehicle ID: 20, Event Type: start, Timestamp: 174.6650415040362 -Vehicle ID: 21, Event Type: start, Timestamp: 174.6666045213442 -Vehicle ID: 22, Event Type: start, Timestamp: 174.6675053205918 -Vehicle ID: 23, Event Type: start, Timestamp: 174.66896014718205 -Vehicle ID: 13, Event Type: end, Timestamp: 174.67448340747785 -Vehicle ID: 24, Event Type: start, Timestamp: 174.67688154440216 -Vehicle ID: 25, Event Type: start, Timestamp: 174.67692936758377 -Vehicle ID: 14, Event Type: end, Timestamp: 174.67969919244803 -Vehicle ID: 26, Event Type: start, Timestamp: 174.68046507882806 -Vehicle ID: 27, Event Type: start, Timestamp: 174.68770245611825 -Vehicle ID: 28, Event Type: start, Timestamp: 174.68937279529274 -Vehicle ID: 29, Event Type: start, Timestamp: 174.69169911205302 -Vehicle ID: 15, Event Type: end, Timestamp: 174.69566494939892 -Vehicle ID: 30, Event Type: start, Timestamp: 174.703715504685 -Vehicle ID: 16, Event Type: end, Timestamp: 174.70406928412237 -Vehicle ID: 31, Event Type: start, Timestamp: 174.7042227169196 -Vehicle ID: 32, Event Type: start, Timestamp: 174.71157742264054 -Vehicle ID: 17, Event Type: end, Timestamp: 174.7166256855984 -Vehicle ID: 33, Event Type: start, Timestamp: 174.7213311988002 -Vehicle ID: 19, Event Type: end, Timestamp: 174.72470508430624 -Vehicle ID: 34, Event Type: start, Timestamp: 174.7261226629365 -Vehicle ID: 35, Event Type: start, Timestamp: 174.7293839480806 -Vehicle ID: 18, Event Type: end, Timestamp: 174.73678063371503 -Vehicle ID: 20, Event Type: end, Timestamp: 174.73807409505494 -Vehicle ID: 36, Event Type: start, Timestamp: 174.7400540948865 -Vehicle ID: 37, Event Type: start, Timestamp: 174.74252624446754 -Vehicle ID: 21, Event Type: end, Timestamp: 174.74276002383522 -Vehicle ID: 22, Event Type: end, Timestamp: 174.74276824956618 -Vehicle ID: 23, Event Type: end, Timestamp: 174.7595024014968 -Vehicle ID: 38, Event Type: start, Timestamp: 174.76229835384837 -Vehicle ID: 39, Event Type: start, Timestamp: 174.76474785823632 -Vehicle ID: 40, Event Type: start, Timestamp: 174.76871871140926 -Vehicle ID: 41, Event Type: start, Timestamp: 174.77157674848996 -Vehicle ID: 26, Event Type: end, Timestamp: 174.77340032503218 -Vehicle ID: 24, Event Type: end, Timestamp: 174.77363406825293 -Vehicle ID: 25, Event Type: end, Timestamp: 174.78213557992225 -Vehicle ID: 27, Event Type: end, Timestamp: 174.78388710713818 -Vehicle ID: 28, Event Type: end, Timestamp: 174.7840762601045 -Vehicle ID: 42, Event Type: start, Timestamp: 174.78856934585448 -Vehicle ID: 43, Event Type: start, Timestamp: 174.79716971470953 -Vehicle ID: 44, Event Type: start, Timestamp: 174.79830643345596 -Vehicle ID: 45, Event Type: start, Timestamp: 174.7995427908321 -Vehicle ID: 29, Event Type: end, Timestamp: 174.80798103600063 -Vehicle ID: 46, Event Type: start, Timestamp: 174.80896980240777 -Vehicle ID: 47, Event Type: start, Timestamp: 174.81141698686213 -Vehicle ID: 48, Event Type: start, Timestamp: 174.81736181524923 -Vehicle ID: 30, Event Type: end, Timestamp: 174.82062377527492 -Vehicle ID: 31, Event Type: end, Timestamp: 174.82204223160247 -Vehicle ID: 32, Event Type: end, Timestamp: 174.8227648390547 -Vehicle ID: 34, Event Type: end, Timestamp: 174.82721661744944 -Vehicle ID: 49, Event Type: start, Timestamp: 174.82910782499573 -Vehicle ID: 33, Event Type: end, Timestamp: 174.83215693883326 -Vehicle ID: 50, Event Type: start, Timestamp: 174.8374340996064 -Vehicle ID: 38, Event Type: end, Timestamp: 174.85644504258278 -Vehicle ID: 35, Event Type: end, Timestamp: 174.85718566529985 -Vehicle ID: 37, Event Type: end, Timestamp: 174.86123546814696 -Vehicle ID: 36, Event Type: end, Timestamp: 174.86132224340477 -Vehicle ID: 51, Event Type: start, Timestamp: 174.86389121857678 -Vehicle ID: 39, Event Type: end, Timestamp: 174.87130863370302 -Vehicle ID: 40, Event Type: end, Timestamp: 174.87390453047192 -Vehicle ID: 52, Event Type: start, Timestamp: 174.87586876170283 -Vehicle ID: 53, Event Type: start, Timestamp: 174.87899560871094 -Vehicle ID: 42, Event Type: end, Timestamp: 174.89441040828365 -Vehicle ID: 43, Event Type: end, Timestamp: 174.89777021769265 -Vehicle ID: 54, Event Type: start, Timestamp: 174.89805890768133 -Vehicle ID: 41, Event Type: end, Timestamp: 174.90188330571866 -Vehicle ID: 44, Event Type: end, Timestamp: 174.90667810349524 -Vehicle ID: 45, Event Type: end, Timestamp: 174.9073045016907 -Vehicle ID: 55, Event Type: start, Timestamp: 174.908312601187 -Vehicle ID: 56, Event Type: start, Timestamp: 174.91257603248766 -Vehicle ID: 46, Event Type: end, Timestamp: 174.92262925385867 -Vehicle ID: 57, Event Type: start, Timestamp: 174.92471258933355 -Vehicle ID: 58, Event Type: start, Timestamp: 174.92976401925443 -Vehicle ID: 59, Event Type: start, Timestamp: 174.93254815512998 -Vehicle ID: 47, Event Type: end, Timestamp: 174.9348873163908 -Vehicle ID: 60, Event Type: start, Timestamp: 174.93629042252246 -Vehicle ID: 48, Event Type: end, Timestamp: 174.9430328400664 -Vehicle ID: 50, Event Type: end, Timestamp: 174.9450933025473 -Vehicle ID: 49, Event Type: end, Timestamp: 174.9482913050975 -Vehicle ID: 51, Event Type: end, Timestamp: 174.95516779362572 -Vehicle ID: 52, Event Type: end, Timestamp: 174.95806020299565 -Vehicle ID: 61, Event Type: start, Timestamp: 174.97073709023954 -Vehicle ID: 53, Event Type: end, Timestamp: 174.97109406816762 -Vehicle ID: 62, Event Type: start, Timestamp: 174.97580640499288 -Vehicle ID: 63, Event Type: start, Timestamp: 174.97987697021216 -Vehicle ID: 64, Event Type: start, Timestamp: 174.98120613020703 -Vehicle ID: 54, Event Type: end, Timestamp: 174.9851248754795 -Vehicle ID: 55, Event Type: end, Timestamp: 174.9931535128036 -Vehicle ID: 56, Event Type: end, Timestamp: 174.99709939215896 -Vehicle ID: 65, Event Type: start, Timestamp: 174.99771153148419 -Vehicle ID: 57, Event Type: end, Timestamp: 174.9994448552584 -Vehicle ID: 58, Event Type: end, Timestamp: 175.0072762376331 -Vehicle ID: 66, Event Type: start, Timestamp: 175.00932903782245 -Vehicle ID: 59, Event Type: end, Timestamp: 175.00988721099728 -Vehicle ID: 67, Event Type: start, Timestamp: 175.01748584370398 -Vehicle ID: 60, Event Type: end, Timestamp: 175.02081437715856 -Vehicle ID: 63, Event Type: end, Timestamp: 175.04965169337828 -Vehicle ID: 61, Event Type: end, Timestamp: 175.0515194767836 -Vehicle ID: 62, Event Type: end, Timestamp: 175.05709094633215 -Vehicle ID: 64, Event Type: end, Timestamp: 175.06423532643575 -Vehicle ID: 68, Event Type: start, Timestamp: 175.06850986413096 -Vehicle ID: 69, Event Type: start, Timestamp: 175.0706168786635 -Vehicle ID: 65, Event Type: end, Timestamp: 175.07255234622286 -Vehicle ID: 70, Event Type: start, Timestamp: 175.07268073604993 -Vehicle ID: 66, Event Type: end, Timestamp: 175.08265011947123 -Vehicle ID: 67, Event Type: end, Timestamp: 175.09398191716897 -Vehicle ID: 71, Event Type: start, Timestamp: 175.09456600986843 -Vehicle ID: 72, Event Type: start, Timestamp: 175.10194385758226 -Vehicle ID: 73, Event Type: start, Timestamp: 175.10578738396964 -Vehicle ID: 68, Event Type: end, Timestamp: 175.14521935767706 -Vehicle ID: 74, Event Type: start, Timestamp: 175.148596014609 -Vehicle ID: 69, Event Type: end, Timestamp: 175.14894044748573 -Vehicle ID: 70, Event Type: end, Timestamp: 175.15201505133902 -Vehicle ID: 75, Event Type: start, Timestamp: 175.15633376738015 -Vehicle ID: 71, Event Type: end, Timestamp: 175.17852080693962 -Vehicle ID: 72, Event Type: end, Timestamp: 175.18359611618098 -Vehicle ID: 73, Event Type: end, Timestamp: 175.18626935018355 -Vehicle ID: 76, Event Type: start, Timestamp: 175.1930120079765 -Vehicle ID: 77, Event Type: start, Timestamp: 175.19915724545282 -Vehicle ID: 78, Event Type: start, Timestamp: 175.2095299526805 -Vehicle ID: 79, Event Type: start, Timestamp: 175.22081342809656 -Vehicle ID: 74, Event Type: end, Timestamp: 175.221453229358 -Vehicle ID: 80, Event Type: start, Timestamp: 175.22637290665767 -Vehicle ID: 75, Event Type: end, Timestamp: 175.2264230518239 -Vehicle ID: 81, Event Type: start, Timestamp: 175.2294155465153 -Vehicle ID: 82, Event Type: start, Timestamp: 175.25614789498607 -Vehicle ID: 83, Event Type: start, Timestamp: 175.25682774068423 -Vehicle ID: 76, Event Type: end, Timestamp: 175.2686255172057 -Vehicle ID: 78, Event Type: end, Timestamp: 175.28029497138021 -Vehicle ID: 77, Event Type: end, Timestamp: 175.28111247792984 -Vehicle ID: 79, Event Type: end, Timestamp: 175.29809816828504 -Vehicle ID: 81, Event Type: end, Timestamp: 175.30090681778174 -Vehicle ID: 80, Event Type: end, Timestamp: 175.30518779720745 -Vehicle ID: 83, Event Type: end, Timestamp: 175.3263279475174 -Vehicle ID: 82, Event Type: end, Timestamp: 175.33507763670147 -Vehicle ID: 84, Event Type: start, Timestamp: 230.3356898582967 -Vehicle ID: 84, Event Type: end, Timestamp: 230.41623369587546 -Vehicle ID: 85, Event Type: start, Timestamp: 230.45732414964712 -Vehicle ID: 86, Event Type: start, Timestamp: 230.48599936805604 -Vehicle ID: 87, Event Type: start, Timestamp: 230.49003818875664 -Vehicle ID: 88, Event Type: start, Timestamp: 230.5266091850466 -Vehicle ID: 85, Event Type: end, Timestamp: 230.52662288433237 -Vehicle ID: 89, Event Type: start, Timestamp: 230.54406944403274 -Vehicle ID: 86, Event Type: end, Timestamp: 230.55405588844238 -Vehicle ID: 87, Event Type: end, Timestamp: 230.57130959897177 -Vehicle ID: 90, Event Type: start, Timestamp: 230.59721544869666 -Vehicle ID: 88, Event Type: end, Timestamp: 230.59896340636544 -Vehicle ID: 91, Event Type: start, Timestamp: 230.60137288277858 -Vehicle ID: 92, Event Type: start, Timestamp: 230.6117531163625 -Vehicle ID: 89, Event Type: end, Timestamp: 230.61514523497493 -Vehicle ID: 93, Event Type: start, Timestamp: 230.61586306185364 -Vehicle ID: 94, Event Type: start, Timestamp: 230.61795101636 -Vehicle ID: 95, Event Type: start, Timestamp: 230.61959321761313 -Vehicle ID: 96, Event Type: start, Timestamp: 230.62809388883272 -Vehicle ID: 97, Event Type: start, Timestamp: 230.64361303792813 -Vehicle ID: 98, Event Type: start, Timestamp: 230.65158490926723 -Vehicle ID: 99, Event Type: start, Timestamp: 230.66384879704097 -Vehicle ID: 100, Event Type: start, Timestamp: 230.6700172198032 -Vehicle ID: 90, Event Type: end, Timestamp: 230.680397374972 -Vehicle ID: 101, Event Type: start, Timestamp: 230.681785073971 -Vehicle ID: 91, Event Type: end, Timestamp: 230.68179147846058 -Vehicle ID: 92, Event Type: end, Timestamp: 230.68568044976686 -Vehicle ID: 93, Event Type: end, Timestamp: 230.6873023523148 -Vehicle ID: 94, Event Type: end, Timestamp: 230.68885408657047 -Vehicle ID: 102, Event Type: start, Timestamp: 230.69188260183353 -Vehicle ID: 95, Event Type: end, Timestamp: 230.6948830049949 -Vehicle ID: 103, Event Type: start, Timestamp: 230.69923648731336 -Vehicle ID: 104, Event Type: start, Timestamp: 230.71718860985774 -Vehicle ID: 97, Event Type: end, Timestamp: 230.71829818700525 -Vehicle ID: 105, Event Type: start, Timestamp: 230.7256125312375 -Vehicle ID: 96, Event Type: end, Timestamp: 230.7299837511392 -Vehicle ID: 98, Event Type: end, Timestamp: 230.73137332333457 -Vehicle ID: 106, Event Type: start, Timestamp: 230.73428676025023 -Vehicle ID: 107, Event Type: start, Timestamp: 230.73525746994653 -Vehicle ID: 108, Event Type: start, Timestamp: 230.7353761722548 -Vehicle ID: 109, Event Type: start, Timestamp: 230.73842372511038 -Vehicle ID: 110, Event Type: start, Timestamp: 230.73959994553564 -Vehicle ID: 99, Event Type: end, Timestamp: 230.7402067336381 -Vehicle ID: 100, Event Type: end, Timestamp: 230.7481005226481 -Vehicle ID: 111, Event Type: start, Timestamp: 230.74886993119014 -Vehicle ID: 112, Event Type: start, Timestamp: 230.75942610800246 -Vehicle ID: 101, Event Type: end, Timestamp: 230.75955116507123 -Vehicle ID: 113, Event Type: start, Timestamp: 230.7650000849119 -Vehicle ID: 102, Event Type: end, Timestamp: 230.76647526474378 -Vehicle ID: 114, Event Type: start, Timestamp: 230.77713163211607 -Vehicle ID: 103, Event Type: end, Timestamp: 230.77741986163468 -Vehicle ID: 115, Event Type: start, Timestamp: 230.7877552366823 -Vehicle ID: 116, Event Type: start, Timestamp: 230.78836919377866 -Vehicle ID: 104, Event Type: end, Timestamp: 230.79748490144343 -Vehicle ID: 108, Event Type: end, Timestamp: 230.80622030212209 -Vehicle ID: 105, Event Type: end, Timestamp: 230.80721041739116 -Vehicle ID: 117, Event Type: start, Timestamp: 230.80855852654673 -Vehicle ID: 118, Event Type: start, Timestamp: 230.808948228238 -Vehicle ID: 107, Event Type: end, Timestamp: 230.811049578261 -Vehicle ID: 119, Event Type: start, Timestamp: 230.81186529147516 -Vehicle ID: 120, Event Type: start, Timestamp: 230.81483997250237 -Vehicle ID: 106, Event Type: end, Timestamp: 230.8157492061475 -Vehicle ID: 109, Event Type: end, Timestamp: 230.82243232680395 -Vehicle ID: 121, Event Type: start, Timestamp: 230.83170799100446 -Vehicle ID: 122, Event Type: start, Timestamp: 230.83362540635545 -Vehicle ID: 123, Event Type: start, Timestamp: 230.83788470687557 -Vehicle ID: 110, Event Type: end, Timestamp: 230.83976177211449 -Vehicle ID: 124, Event Type: start, Timestamp: 230.84035067559572 -Vehicle ID: 125, Event Type: start, Timestamp: 230.84182334263483 -Vehicle ID: 126, Event Type: start, Timestamp: 230.84482897221235 -Vehicle ID: 112, Event Type: end, Timestamp: 230.84801859861776 -Vehicle ID: 111, Event Type: end, Timestamp: 230.8503782233912 -Vehicle ID: 113, Event Type: end, Timestamp: 230.85531086905436 -Vehicle ID: 127, Event Type: start, Timestamp: 230.8575557462254 -Vehicle ID: 114, Event Type: end, Timestamp: 230.8605190806873 -Vehicle ID: 128, Event Type: start, Timestamp: 230.86801546128697 -Vehicle ID: 115, Event Type: end, Timestamp: 230.8705375240272 -Vehicle ID: 116, Event Type: end, Timestamp: 230.8735543096228 -Vehicle ID: 117, Event Type: end, Timestamp: 230.88459206163543 -Vehicle ID: 129, Event Type: start, Timestamp: 230.899721619781 -Vehicle ID: 118, Event Type: end, Timestamp: 230.90020910869393 -Vehicle ID: 119, Event Type: end, Timestamp: 230.90066913878388 -Vehicle ID: 120, Event Type: end, Timestamp: 230.90404160704531 -Vehicle ID: 130, Event Type: start, Timestamp: 230.90855614964548 -Vehicle ID: 121, Event Type: end, Timestamp: 230.9098934059283 -Vehicle ID: 131, Event Type: start, Timestamp: 230.91018963132095 -Vehicle ID: 132, Event Type: start, Timestamp: 230.9103262394198 -Vehicle ID: 123, Event Type: end, Timestamp: 230.92012071144367 -Vehicle ID: 122, Event Type: end, Timestamp: 230.92049375295906 -Vehicle ID: 133, Event Type: start, Timestamp: 230.9205068773165 -Vehicle ID: 134, Event Type: start, Timestamp: 230.92202792704285 -Vehicle ID: 135, Event Type: start, Timestamp: 230.92479348690694 -Vehicle ID: 136, Event Type: start, Timestamp: 230.93060227719707 -Vehicle ID: 125, Event Type: end, Timestamp: 230.93401282170265 -Vehicle ID: 137, Event Type: start, Timestamp: 230.93546832943937 -Vehicle ID: 138, Event Type: start, Timestamp: 230.94352446748655 -Vehicle ID: 124, Event Type: end, Timestamp: 230.9473322291012 -Vehicle ID: 126, Event Type: end, Timestamp: 230.95295291697136 -Vehicle ID: 127, Event Type: end, Timestamp: 230.95305055215155 -Vehicle ID: 128, Event Type: end, Timestamp: 230.96293780132945 -Vehicle ID: 139, Event Type: start, Timestamp: 230.9712038887477 -Vehicle ID: 132, Event Type: end, Timestamp: 230.9817316235202 -Vehicle ID: 129, Event Type: end, Timestamp: 230.98320109124361 -Vehicle ID: 140, Event Type: start, Timestamp: 230.98486570628287 -Vehicle ID: 130, Event Type: end, Timestamp: 230.98985138494385 -Vehicle ID: 141, Event Type: start, Timestamp: 230.99080210615645 -Vehicle ID: 142, Event Type: start, Timestamp: 230.99381039524334 -Vehicle ID: 143, Event Type: start, Timestamp: 230.9950399205615 -Vehicle ID: 133, Event Type: end, Timestamp: 230.99716091219614 -Vehicle ID: 131, Event Type: end, Timestamp: 230.99899364401358 -Vehicle ID: 134, Event Type: end, Timestamp: 231.00010567375367 -Vehicle ID: 144, Event Type: start, Timestamp: 231.00072799238754 -Vehicle ID: 145, Event Type: start, Timestamp: 231.017808996517 -Vehicle ID: 136, Event Type: end, Timestamp: 231.02208263139016 -Vehicle ID: 137, Event Type: end, Timestamp: 231.0284554359686 -Vehicle ID: 135, Event Type: end, Timestamp: 231.02975721075356 -Vehicle ID: 138, Event Type: end, Timestamp: 231.03347547531948 -Vehicle ID: 146, Event Type: start, Timestamp: 231.03548244510574 -Vehicle ID: 147, Event Type: start, Timestamp: 231.04007096511978 -Vehicle ID: 148, Event Type: start, Timestamp: 231.0431847460415 -Vehicle ID: 139, Event Type: end, Timestamp: 231.04721225712723 -Vehicle ID: 140, Event Type: end, Timestamp: 231.0526077086448 -Vehicle ID: 149, Event Type: start, Timestamp: 231.06248212737972 -Vehicle ID: 143, Event Type: end, Timestamp: 231.06542240943116 -Vehicle ID: 141, Event Type: end, Timestamp: 231.0706323400163 -Vehicle ID: 144, Event Type: end, Timestamp: 231.07745246031615 -Vehicle ID: 142, Event Type: end, Timestamp: 231.07762801528835 -Vehicle ID: 150, Event Type: start, Timestamp: 231.08221198031094 -Vehicle ID: 151, Event Type: start, Timestamp: 231.0958141623548 -Vehicle ID: 145, Event Type: end, Timestamp: 231.099902169336 -Vehicle ID: 152, Event Type: start, Timestamp: 231.10378928750742 -Vehicle ID: 146, Event Type: end, Timestamp: 231.10828783495197 -Vehicle ID: 147, Event Type: end, Timestamp: 231.1110615639357 -Vehicle ID: 153, Event Type: start, Timestamp: 231.12207799582347 -Vehicle ID: 154, Event Type: start, Timestamp: 231.1236025394889 -Vehicle ID: 148, Event Type: end, Timestamp: 231.12707824009095 -Vehicle ID: 149, Event Type: end, Timestamp: 231.1346074213072 -Vehicle ID: 155, Event Type: start, Timestamp: 231.14241980561235 -Vehicle ID: 156, Event Type: start, Timestamp: 231.14721183715636 -Vehicle ID: 157, Event Type: start, Timestamp: 231.1525351998032 -Vehicle ID: 150, Event Type: end, Timestamp: 231.15991953763253 -Vehicle ID: 158, Event Type: start, Timestamp: 231.1645456174245 -Vehicle ID: 151, Event Type: end, Timestamp: 231.16533533612161 -Vehicle ID: 159, Event Type: start, Timestamp: 231.165470309906 -Vehicle ID: 152, Event Type: end, Timestamp: 231.17748520705433 -Vehicle ID: 153, Event Type: end, Timestamp: 231.19785408264198 -Vehicle ID: 154, Event Type: end, Timestamp: 231.2031756860014 -Vehicle ID: 160, Event Type: start, Timestamp: 231.20503693211072 -Vehicle ID: 161, Event Type: start, Timestamp: 231.21228570942662 -Vehicle ID: 155, Event Type: end, Timestamp: 231.2134823414163 -Vehicle ID: 156, Event Type: end, Timestamp: 231.2294445736213 -Vehicle ID: 157, Event Type: end, Timestamp: 231.23087581584988 -Vehicle ID: 159, Event Type: end, Timestamp: 231.24016646563655 -Vehicle ID: 158, Event Type: end, Timestamp: 231.2476756261547 -Vehicle ID: 162, Event Type: start, Timestamp: 231.27189512750607 -Vehicle ID: 160, Event Type: end, Timestamp: 231.2848958757992 -Vehicle ID: 163, Event Type: start, Timestamp: 231.28770524089094 -Vehicle ID: 161, Event Type: end, Timestamp: 231.2883229632942 -Vehicle ID: 164, Event Type: start, Timestamp: 231.29619060652027 -Vehicle ID: 165, Event Type: start, Timestamp: 231.3182732775604 -Vehicle ID: 166, Event Type: start, Timestamp: 231.3184756943104 -Vehicle ID: 162, Event Type: end, Timestamp: 231.3434968358377 -Vehicle ID: 163, Event Type: end, Timestamp: 231.3571538405196 -Vehicle ID: 164, Event Type: end, Timestamp: 231.37228339356744 -Vehicle ID: 165, Event Type: end, Timestamp: 231.39375959928427 -Vehicle ID: 166, Event Type: end, Timestamp: 231.40024477916907 -Vehicle ID: 167, Event Type: start, Timestamp: 286.2671886437879 -Vehicle ID: 168, Event Type: start, Timestamp: 286.3202328968761 -Vehicle ID: 167, Event Type: end, Timestamp: 286.3449019924572 -Vehicle ID: 168, Event Type: end, Timestamp: 286.3924216613475 -Vehicle ID: 169, Event Type: start, Timestamp: 286.50171333086706 -Vehicle ID: 170, Event Type: start, Timestamp: 286.51194067119934 -Vehicle ID: 171, Event Type: start, Timestamp: 286.54815094529624 -Vehicle ID: 172, Event Type: start, Timestamp: 286.5597561965801 -Vehicle ID: 173, Event Type: start, Timestamp: 286.5722740147085 -Vehicle ID: 169, Event Type: end, Timestamp: 286.58228904045694 -Vehicle ID: 170, Event Type: end, Timestamp: 286.58943341641316 -Vehicle ID: 174, Event Type: start, Timestamp: 286.6169848379783 -Vehicle ID: 175, Event Type: start, Timestamp: 286.6179158095619 -Vehicle ID: 171, Event Type: end, Timestamp: 286.6227661373908 -Vehicle ID: 176, Event Type: start, Timestamp: 286.6272490453108 -Vehicle ID: 177, Event Type: start, Timestamp: 286.63145766491067 -Vehicle ID: 178, Event Type: start, Timestamp: 286.63968459652017 -Vehicle ID: 172, Event Type: end, Timestamp: 286.6434454417307 -Vehicle ID: 179, Event Type: start, Timestamp: 286.64558536267947 -Vehicle ID: 173, Event Type: end, Timestamp: 286.6478894552119 -Vehicle ID: 180, Event Type: start, Timestamp: 286.64906921009964 -Vehicle ID: 181, Event Type: start, Timestamp: 286.65330806492005 -Vehicle ID: 182, Event Type: start, Timestamp: 286.6538496583343 -Vehicle ID: 183, Event Type: start, Timestamp: 286.66574174628096 -Vehicle ID: 184, Event Type: start, Timestamp: 286.66702323553534 -Vehicle ID: 185, Event Type: start, Timestamp: 286.6725616592345 -Vehicle ID: 186, Event Type: start, Timestamp: 286.67754932858253 -Vehicle ID: 187, Event Type: start, Timestamp: 286.6791222919241 -Vehicle ID: 188, Event Type: start, Timestamp: 286.6935633536873 -Vehicle ID: 174, Event Type: end, Timestamp: 286.69574289104906 -Vehicle ID: 176, Event Type: end, Timestamp: 286.6965496799385 -Vehicle ID: 189, Event Type: start, Timestamp: 286.697663184595 -Vehicle ID: 190, Event Type: start, Timestamp: 286.6981551288802 -Vehicle ID: 175, Event Type: end, Timestamp: 286.6984693503603 -Vehicle ID: 191, Event Type: start, Timestamp: 286.7037160132458 -Vehicle ID: 192, Event Type: start, Timestamp: 286.7042751900797 -Vehicle ID: 177, Event Type: end, Timestamp: 286.70645980355096 -Vehicle ID: 193, Event Type: start, Timestamp: 286.7082782066379 -Vehicle ID: 194, Event Type: start, Timestamp: 286.7109499260988 -Vehicle ID: 178, Event Type: end, Timestamp: 286.71392506062665 -Vehicle ID: 195, Event Type: start, Timestamp: 286.7207313770976 -Vehicle ID: 179, Event Type: end, Timestamp: 286.72830885983416 -Vehicle ID: 196, Event Type: start, Timestamp: 286.7322562790477 -Vehicle ID: 197, Event Type: start, Timestamp: 286.7344869147344 -Vehicle ID: 198, Event Type: start, Timestamp: 286.73467043097173 -Vehicle ID: 182, Event Type: end, Timestamp: 286.73673862408185 -Vehicle ID: 199, Event Type: start, Timestamp: 286.7393697841956 -Vehicle ID: 200, Event Type: start, Timestamp: 286.73965698374644 -Vehicle ID: 180, Event Type: end, Timestamp: 286.7398667312604 -Vehicle ID: 201, Event Type: start, Timestamp: 286.74167113179215 -Vehicle ID: 181, Event Type: end, Timestamp: 286.7435993427744 -Vehicle ID: 183, Event Type: end, Timestamp: 286.74609681230135 -Vehicle ID: 184, Event Type: end, Timestamp: 286.7567264758645 -Vehicle ID: 202, Event Type: start, Timestamp: 286.7577029118431 -Vehicle ID: 203, Event Type: start, Timestamp: 286.7635983405159 -Vehicle ID: 204, Event Type: start, Timestamp: 286.7674976052151 -Vehicle ID: 185, Event Type: end, Timestamp: 286.77209415056006 -Vehicle ID: 187, Event Type: end, Timestamp: 286.77374209016415 -Vehicle ID: 205, Event Type: start, Timestamp: 286.7744615679833 -Vehicle ID: 206, Event Type: start, Timestamp: 286.774720973867 -Vehicle ID: 207, Event Type: start, Timestamp: 286.77551857879445 -Vehicle ID: 189, Event Type: end, Timestamp: 286.7800023777409 -Vehicle ID: 186, Event Type: end, Timestamp: 286.78311752825095 -Vehicle ID: 188, Event Type: end, Timestamp: 286.78311759730536 -Vehicle ID: 208, Event Type: start, Timestamp: 286.7867560321886 -Vehicle ID: 190, Event Type: end, Timestamp: 286.7946997345856 -Vehicle ID: 192, Event Type: end, Timestamp: 286.8077295813927 -Vehicle ID: 209, Event Type: start, Timestamp: 286.80992333197304 -Vehicle ID: 191, Event Type: end, Timestamp: 286.81005599612666 -Vehicle ID: 210, Event Type: start, Timestamp: 286.8121444589729 -Vehicle ID: 211, Event Type: start, Timestamp: 286.812940612273 -Vehicle ID: 212, Event Type: start, Timestamp: 286.8207979381501 -Vehicle ID: 193, Event Type: end, Timestamp: 286.8233589161838 -Vehicle ID: 194, Event Type: end, Timestamp: 286.82425236734525 -Vehicle ID: 195, Event Type: end, Timestamp: 286.83222201406943 -Vehicle ID: 213, Event Type: start, Timestamp: 286.8332808195919 -Vehicle ID: 214, Event Type: start, Timestamp: 286.83965609053286 -Vehicle ID: 196, Event Type: end, Timestamp: 286.84165151213654 -Vehicle ID: 197, Event Type: end, Timestamp: 286.8438034699711 -Vehicle ID: 215, Event Type: start, Timestamp: 286.84729019592373 -Vehicle ID: 216, Event Type: start, Timestamp: 286.8489901215136 -Vehicle ID: 198, Event Type: end, Timestamp: 286.85862220502923 -Vehicle ID: 199, Event Type: end, Timestamp: 286.85863233541687 -Vehicle ID: 217, Event Type: start, Timestamp: 286.86100209209366 -Vehicle ID: 200, Event Type: end, Timestamp: 286.86712490806843 -Vehicle ID: 218, Event Type: start, Timestamp: 286.8695107381643 -Vehicle ID: 219, Event Type: start, Timestamp: 286.8699077064715 -Vehicle ID: 220, Event Type: start, Timestamp: 286.87071996438755 -Vehicle ID: 201, Event Type: end, Timestamp: 286.8725706463089 -Vehicle ID: 221, Event Type: start, Timestamp: 286.8774417974589 -Vehicle ID: 222, Event Type: start, Timestamp: 286.88283346057796 -Vehicle ID: 202, Event Type: end, Timestamp: 286.8832912524515 -Vehicle ID: 223, Event Type: start, Timestamp: 286.8841843476797 -Vehicle ID: 203, Event Type: end, Timestamp: 286.8902723143794 -Vehicle ID: 204, Event Type: end, Timestamp: 286.894143040904 -Vehicle ID: 224, Event Type: start, Timestamp: 286.89498299638257 -Vehicle ID: 205, Event Type: end, Timestamp: 286.89599585446916 -Vehicle ID: 225, Event Type: start, Timestamp: 286.89798979912 -Vehicle ID: 226, Event Type: start, Timestamp: 286.90239648224093 -Vehicle ID: 227, Event Type: start, Timestamp: 286.9083957104198 -Vehicle ID: 228, Event Type: start, Timestamp: 286.9112239221169 -Vehicle ID: 229, Event Type: start, Timestamp: 286.911247926919 -Vehicle ID: 206, Event Type: end, Timestamp: 286.91393013277496 -Vehicle ID: 207, Event Type: end, Timestamp: 286.91491189590033 -Vehicle ID: 230, Event Type: start, Timestamp: 286.91565445599275 -Vehicle ID: 208, Event Type: end, Timestamp: 286.93064857465123 -Vehicle ID: 211, Event Type: end, Timestamp: 286.9325109683642 -Vehicle ID: 210, Event Type: end, Timestamp: 286.9362137788723 -Vehicle ID: 209, Event Type: end, Timestamp: 286.93680697702115 -Vehicle ID: 231, Event Type: start, Timestamp: 286.9378240982521 -Vehicle ID: 232, Event Type: start, Timestamp: 286.94513519255503 -Vehicle ID: 233, Event Type: start, Timestamp: 286.9556843903676 -Vehicle ID: 234, Event Type: start, Timestamp: 286.9596953360087 -Vehicle ID: 213, Event Type: end, Timestamp: 286.9607245128594 -Vehicle ID: 212, Event Type: end, Timestamp: 286.9621527592734 -Vehicle ID: 214, Event Type: end, Timestamp: 286.96534271666843 -Vehicle ID: 215, Event Type: end, Timestamp: 286.9699712062956 -Vehicle ID: 217, Event Type: end, Timestamp: 286.97430037184495 -Vehicle ID: 235, Event Type: start, Timestamp: 286.98493685639875 -Vehicle ID: 216, Event Type: end, Timestamp: 286.98571709805805 -Vehicle ID: 236, Event Type: start, Timestamp: 286.99062975094483 -Vehicle ID: 218, Event Type: end, Timestamp: 287.00069908920284 -Vehicle ID: 220, Event Type: end, Timestamp: 287.0055441305047 -Vehicle ID: 219, Event Type: end, Timestamp: 287.00933551544824 -Vehicle ID: 222, Event Type: end, Timestamp: 287.0160623058522 -Vehicle ID: 221, Event Type: end, Timestamp: 287.0198496187612 -Vehicle ID: 223, Event Type: end, Timestamp: 287.02689884097475 -Vehicle ID: 224, Event Type: end, Timestamp: 287.0403509101794 -Vehicle ID: 237, Event Type: start, Timestamp: 287.0405402228381 -Vehicle ID: 226, Event Type: end, Timestamp: 287.0437085861921 -Vehicle ID: 225, Event Type: end, Timestamp: 287.051828385591 -Vehicle ID: 238, Event Type: start, Timestamp: 287.05533394967995 -Vehicle ID: 229, Event Type: end, Timestamp: 287.05890535671097 -Vehicle ID: 227, Event Type: end, Timestamp: 287.0632454623826 -Vehicle ID: 239, Event Type: start, Timestamp: 287.06787804184364 -Vehicle ID: 228, Event Type: end, Timestamp: 287.07220189764695 -Vehicle ID: 240, Event Type: start, Timestamp: 287.0752914738345 -Vehicle ID: 241, Event Type: start, Timestamp: 287.08223238891964 -Vehicle ID: 242, Event Type: start, Timestamp: 287.08459494086634 -Vehicle ID: 243, Event Type: start, Timestamp: 287.08517606737564 -Vehicle ID: 232, Event Type: end, Timestamp: 287.08559571267193 -Vehicle ID: 230, Event Type: end, Timestamp: 287.0872564612549 -Vehicle ID: 231, Event Type: end, Timestamp: 287.0880724811396 -Vehicle ID: 233, Event Type: end, Timestamp: 287.1012100115228 -Vehicle ID: 234, Event Type: end, Timestamp: 287.10940503615393 -Vehicle ID: 235, Event Type: end, Timestamp: 287.11148539451113 -Vehicle ID: 244, Event Type: start, Timestamp: 287.12406506224113 -Vehicle ID: 236, Event Type: end, Timestamp: 287.13131395145996 -Vehicle ID: 238, Event Type: end, Timestamp: 287.1356076251286 -Vehicle ID: 237, Event Type: end, Timestamp: 287.13573741737946 -Vehicle ID: 240, Event Type: end, Timestamp: 287.1434122745391 -Vehicle ID: 239, Event Type: end, Timestamp: 287.14560264252367 -Vehicle ID: 245, Event Type: start, Timestamp: 287.14870492302174 -Vehicle ID: 241, Event Type: end, Timestamp: 287.16114681582206 -Vehicle ID: 242, Event Type: end, Timestamp: 287.165719191854 -Vehicle ID: 243, Event Type: end, Timestamp: 287.1818488989902 -Vehicle ID: 246, Event Type: start, Timestamp: 287.18827793605976 -Vehicle ID: 247, Event Type: start, Timestamp: 287.192721706166 -Vehicle ID: 244, Event Type: end, Timestamp: 287.2016945979772 -Vehicle ID: 248, Event Type: start, Timestamp: 287.2097899295005 -Vehicle ID: 249, Event Type: start, Timestamp: 287.21011485414033 -Vehicle ID: 245, Event Type: end, Timestamp: 287.2201085826874 -Vehicle ID: 246, Event Type: end, Timestamp: 287.26653932053154 -Vehicle ID: 247, Event Type: end, Timestamp: 287.2756161281044 -Vehicle ID: 248, Event Type: end, Timestamp: 287.2796511553798 -Vehicle ID: 249, Event Type: end, Timestamp: 287.2899963255058 diff --git a/vehicle_average_times.txt b/vehicle_average_times.txt deleted file mode 100644 index 22b0b727..00000000 --- a/vehicle_average_times.txt +++ /dev/null @@ -1,3 +0,0 @@ -crane: 0.0 -hostler: 0.0019168163174070507 -truck: 0.01337536359778584 From d4390dec33628ac4fda34f76b8c28a748cb41a6b Mon Sep 17 00:00:00 2001 From: "Bruchon, Matthew" Date: Sun, 12 Jan 2025 14:31:54 -0500 Subject: [PATCH 27/50] refactoring --- .../train_planner/demand_generators.py | 118 +++++++++--------- python/altrios/train_planner/planner.py | 3 +- python/altrios/utilities.py | 10 +- 3 files changed, 66 insertions(+), 65 deletions(-) diff --git a/python/altrios/train_planner/demand_generators.py b/python/altrios/train_planner/demand_generators.py index 4ee2f46f..ed221210 100644 --- a/python/altrios/train_planner/demand_generators.py +++ b/python/altrios/train_planner/demand_generators.py @@ -71,7 +71,7 @@ def generate_return_demand_intermodal(demand_subset: Union[pl.LazyFrame, pl.Data pl.concat_str(pl.min_horizontal("Origin", "Destination"), pl.lit("_"), pl.max_horizontal("Origin", "Destination")).alias("OD") ) .with_columns( - pl.col("Number_of_Cars", "Number_of_Containers").range_minmax().over("OD").name.suffix("_Return") + pl.col("Number_of_Cars", "Number_of_Containers").range().over("OD").name.suffix("_Return") ) .filter( pl.col("Number_of_Containers") == pl.col("Number_of_Containers").max().over("OD") @@ -114,7 +114,7 @@ def generate_return_demand( ) return demand_return -def generate_origin_manifest_demand( +def generate_manifest_rebalancing_demand( demand: pl.DataFrame, node_list: List[str], config: planner_config.TrainPlannerConfig @@ -136,6 +136,63 @@ def generate_origin_manifest_demand( with additional columns for checking the unbalance quantity and serve as check columns for the manifest empty car rebalancing function """ + def balance_trains( + demand_origin_manifest: pl.DataFrame + ) -> pl.DataFrame: + """ + Update the manifest demand, especially the empty car demand to maintain equilibrium of number of + cars dispatched and received at each node for manifest + Arguments: + ---------- + demand_origin_manifest: Dataframe that summarizes empty and loaded + manifest demand dispatched and received for each node by number cars + Outputs: + ---------- + demand_origin_manifest: Updated demand_origin_manifest with additional + manifest empty car demand added to each node + df_balance_storage: Documented additional manifest demand pairs and corresponding quantity for + rebalancing process + """ + df_balance_storage = pd.DataFrame(np.zeros(shape=(0, 4))) + df_balance_storage = df_balance_storage.rename( + columns={0: "Origin", + 1: "Destination", + 2: "Train_Type", + 3: "Number_of_Cars"}) + + train_type = "Manifest_Empty" + demand = demand_origin_manifest.to_pandas()[ + ["Origin","Manifest_Received","Manifest_Dispatched","Manifest_Empty"]] + demand = demand.rename(columns={"Manifest_Received": "Received", + "Manifest_Dispatched": "Dispatched", + "Manifest_Empty": "Empty"}) + + step = 0 + # Calculate the number of iterations needed + max_iter = len(demand) * (len(demand)-1) / 2 + while (~np.isclose(demand["Received"], demand["Dispatched"])).any() and (step <= max_iter): + rows_def = demand[demand["Received"] < demand["Dispatched"]] + rows_sur = demand[demand["Received"] > demand["Dispatched"]] + if((len(rows_def) == 0) | (len(rows_sur) == 0)): + break + # Find the first node that is in deficit of cars because of the empty return + row_def = rows_def.index[0] + # Find the first node that is in surplus of cars + row_sur = rows_sur.index[0] + surplus = demand.loc[row_sur, "Received"] - demand.loc[row_sur, "Dispatched"] + df_balance_storage.loc[len(df_balance_storage.index)] = \ + [demand.loc[row_sur, "Origin"], + demand.loc[row_def, "Origin"], + train_type, + surplus] + demand.loc[row_def, "Received"] += surplus + demand.loc[row_sur, "Dispatched"] = demand.loc[row_sur, "Received"] + step += 1 + + if (~np.isclose(demand["Received"], demand["Dispatched"])).any(): + raise Exception("While loop didn't converge") + return pl.from_pandas(df_balance_storage) + manifest_demand = (demand .filter(pl.col("Train_Type").str.strip_suffix("_Loaded") == "Manifest") .select(["Origin", "Destination","Number_of_Cars"]) @@ -156,64 +213,9 @@ def generate_origin_manifest_demand( .filter((pl.col("Manifest").is_not_null()) | (pl.col("Manifest_Empty").is_not_null())) ) - return origin_manifest_demand + return balance_trains(origin_manifest_demand) -def balance_trains( - demand_origin_manifest: pl.DataFrame -) -> pl.DataFrame: - """ - Update the manifest demand, especially the empty car demand to maintain equilibrium of number of - cars dispatched and received at each node for manifest - Arguments: - ---------- - demand_origin_manifest: Dataframe that summarizes empty and loaded - manifest demand dispatched and received for each node by number cars - Outputs: - ---------- - demand_origin_manifest: Updated demand_origin_manifest with additional - manifest empty car demand added to each node - df_balance_storage: Documented additional manifest demand pairs and corresponding quantity for - rebalancing process - """ - df_balance_storage = pd.DataFrame(np.zeros(shape=(0, 4))) - df_balance_storage = df_balance_storage.rename( - columns={0: "Origin", - 1: "Destination", - 2: "Train_Type", - 3: "Number_of_Cars"}) - - train_type = "Manifest_Empty" - demand = demand_origin_manifest.to_pandas()[ - ["Origin","Manifest_Received","Manifest_Dispatched","Manifest_Empty"]] - demand = demand.rename(columns={"Manifest_Received": "Received", - "Manifest_Dispatched": "Dispatched", - "Manifest_Empty": "Empty"}) - step = 0 - # Calculate the number of iterations needed - max_iter = len(demand) * (len(demand)-1) / 2 - while (~np.isclose(demand["Received"], demand["Dispatched"])).any() and (step <= max_iter): - rows_def = demand[demand["Received"] < demand["Dispatched"]] - rows_sur = demand[demand["Received"] > demand["Dispatched"]] - if((len(rows_def) == 0) | (len(rows_sur) == 0)): - break - # Find the first node that is in deficit of cars because of the empty return - row_def = rows_def.index[0] - # Find the first node that is in surplus of cars - row_sur = rows_sur.index[0] - surplus = demand.loc[row_sur, "Received"] - demand.loc[row_sur, "Dispatched"] - df_balance_storage.loc[len(df_balance_storage.index)] = \ - [demand.loc[row_sur, "Origin"], - demand.loc[row_def, "Origin"], - train_type, - surplus] - demand.loc[row_def, "Received"] += surplus - demand.loc[row_sur, "Dispatched"] = demand.loc[row_sur, "Received"] - step += 1 - - if (~np.isclose(demand["Received"], demand["Dispatched"])).any(): - raise Exception("While loop didn't converge") - return pl.from_pandas(df_balance_storage) def generate_demand_trains( demand: pl.DataFrame, diff --git a/python/altrios/train_planner/planner.py b/python/altrios/train_planner/planner.py index 5276f42d..7abe4f0e 100644 --- a/python/altrios/train_planner/planner.py +++ b/python/altrios/train_planner/planner.py @@ -581,8 +581,7 @@ def run_train_planner( demand_returns = demand_generators.generate_return_demand(demand, config) demand_rebalancing = pl.DataFrame() if demand.filter(pl.col("Train_Type").str.contains("Manifest")).height > 0: - demand_origin_manifest = demand_generators.generate_origin_manifest_demand(demand, node_list, config) - demand_rebalancing = demand_generators.balance_trains(demand_origin_manifest) + demand_rebalancing = demand_generators.generate_manifest_rebalancing_demand(demand, node_list, config) demand = demand_generators.generate_demand_trains(demand, demand_returns, demand_rebalancing, rail_vehicles, config) if config.dispatch_scheduler is None: config.dispatch_scheduler = schedulers.generate_dispatch_details diff --git a/python/altrios/utilities.py b/python/altrios/utilities.py index eb0280eb..74405f61 100644 --- a/python/altrios/utilities.py +++ b/python/altrios/utilities.py @@ -180,10 +180,10 @@ def _get_list(path_elem, container): def range_minmax(self) -> pl.Expr: return self.max() - self.min() -pl.Expr.range_minmax=range_minmax +pl.Expr.range=range_minmax del range_minmax -def pctWithinGroup( +def cumPctWithinGroup( df: Union[pl.DataFrame, pl.LazyFrame], grouping_vars: List[str] ) -> Union[pl.DataFrame, pl.LazyFrame]: @@ -191,7 +191,7 @@ def pctWithinGroup( .with_columns( ((pl.int_range(pl.len(), dtype=pl.UInt32).over(grouping_vars).add(1)) / pl.count().over(grouping_vars)) - .alias("Percent_Within_Group") + .alias("Percent_Within_Group_Cumulative") ) ) @@ -202,9 +202,9 @@ def allocateItems( ) -> Union[pl.DataFrame, pl.LazyFrame]: return (df .sort(grouping_vars) - .pipe(pctWithinGroup, grouping_vars = grouping_vars) + .pipe(cumPctWithinGroup, grouping_vars = grouping_vars) .with_columns( - pl.col(target).mul("Percent_Within_Group").round().alias(f'{target}_Group_Cumulative') + pl.col(target).mul("Percent_Within_Group_Cumulative").round().alias(f'{target}_Group_Cumulative') ) .with_columns( (pl.col(f'{target}_Group_Cumulative') - pl.col(f'{target}_Group_Cumulative').shift(1).over(grouping_vars)) From 1ca782782530b2ef05a882f4ed9a3d8c9a0ed46e Mon Sep 17 00:00:00 2001 From: "Bruchon, Matthew" Date: Sun, 12 Jan 2025 20:30:29 -0500 Subject: [PATCH 28/50] fix for unit test --- python/altrios/rollout.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/altrios/rollout.py b/python/altrios/rollout.py index 83913472..5c1f3ff2 100644 --- a/python/altrios/rollout.py +++ b/python/altrios/rollout.py @@ -3,7 +3,7 @@ from altrios.metric_calculator import ScenarioInfo import altrios as alt -from altrios.train_planner import planner +from altrios.train_planner import planner, planner_config import numpy as np import time import pandas as pd @@ -24,7 +24,7 @@ def simulate_prescribed_rollout( save_interval: Optional[int] = None, freight_demand_percent_growth:float = 0.0, demand_file: Union[pl.DataFrame, Path, str] = defaults.DEMAND_FILE, - train_planner_config: planner.TrainPlannerConfig = planner.TrainPlannerConfig(), + train_planner_config: planner_config.TrainPlannerConfig = planner_config.TrainPlannerConfig(), count_unused_locomotives = False, write_complete_results: Optional[bool] = False, write_metrics: Optional[bool] = False, From 615f8e0433d96d9ca13caf6a2ce7c9646394fc6d Mon Sep 17 00:00:00 2001 From: "Bruchon, Matthew" Date: Sun, 12 Jan 2025 21:40:31 -0500 Subject: [PATCH 29/50] more fixes for unit tests --- python/altrios/train_planner/schedulers.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/altrios/train_planner/schedulers.py b/python/altrios/train_planner/schedulers.py index 14eee6f9..110bdc57 100644 --- a/python/altrios/train_planner/schedulers.py +++ b/python/altrios/train_planner/schedulers.py @@ -501,7 +501,7 @@ def generate_dispatch_details( schedule = (demand .select(pl.exclude("Number_of_Trains").repeat_by("Number_of_Trains").explode()) .pipe(utilities.allocateItems, target = "Number_of_Cars_Loaded", grouping_vars = grouping_vars) - .drop("Percent_Within_Group") + .drop("Percent_Within_Group_Cumulative") .pipe(utilities.allocateItems, target = "Number_of_Cars_Empty", grouping_vars = grouping_vars) .group_by(pl.exclude("Number_of_Cars_Empty", "Number_of_Cars_Loaded")) .agg(pl.col("Number_of_Cars_Empty", "Number_of_Cars_Loaded")) @@ -514,7 +514,7 @@ def generate_dispatch_details( pl.col("HP_Required_Per_Ton_Empty").mul("Tons_Per_Car_Empty").mul("Number_of_Cars_Empty") ).alias("HP_Required") ) - .sort("Origin", "Destination", "Percent_Within_Group", "Train_Type") + .sort("Origin", "Destination", "Percent_Within_Group_Cumulative", "Train_Type") .with_columns( (hours * 1.0 / pl.len().over("Origin", "Destination")).alias("Interval") ) From b2cbc4f0c8a5dd29fc4f9eef36c851a2dbb190cc Mon Sep 17 00:00:00 2001 From: "Bruchon, Matthew" Date: Tue, 14 Jan 2025 13:58:52 -0500 Subject: [PATCH 30/50] refactoring --- python/altrios/train_planner/schedulers.py | 119 ++++----------------- python/altrios/utilities.py | 20 +++- 2 files changed, 41 insertions(+), 98 deletions(-) diff --git a/python/altrios/train_planner/schedulers.py b/python/altrios/train_planner/schedulers.py index 110bdc57..5df66147 100644 --- a/python/altrios/train_planner/schedulers.py +++ b/python/altrios/train_planner/schedulers.py @@ -150,6 +150,7 @@ def find_minimum_waiting_time( num_iterations: int, demand_hourly: pl.DataFrame, border_time_list: list, + target_num_cars_per_train: int ) -> pl.DataFrame: """ Find the minimum waiting time for dispatches using Polars DataFrame. @@ -305,120 +306,43 @@ def find_minimum_waiting_time( print(f"empty_return is {empty_return}") return dispatch_times -def calculate_dispatch_data(total_containers, target_num_cars, label, containers, max_min_cars): - remaining_containers = total_containers % target_num_cars - min_num_cars = ( - total_containers // target_num_cars + (1 if remaining_containers > 0 else 0) - ) - - ## Apply the maximum min_num_cars value - min_num_cars = int(max(min_num_cars, max_min_cars)) - - border_list = [] - border_time_list = [] - dispatched_list = [] - - if remaining_containers == 0: - border = total_containers / min_num_cars - else: - border = math.ceil(total_containers / min_num_cars) - - containers_left = total_containers - for _ in range(min_num_cars): - if containers_left >= border: - border_list.append(border) - containers_left -= border - else: - border_list.append(containers_left) - break - - cumulate_demand = 0 - p = 0 - for i, container in enumerate(containers): - cumulate_demand += container - if p == len(border_list) - 1: - border_time_list.append(len(containers) - 1) - break - if cumulate_demand >= border_list[p]: - border_time_list.append(i) - dispatched_list.append(cumulate_demand) - total_containers -= cumulate_demand - cumulate_demand = 0 - p += 1 - if p >= len(border_list): - break - if len(border_time_list) < len(border_list): - for _ in range(len(border_list) - len(border_time_list)): - border_time_list.append(border_time_list[-1]+_+1) - dispatched_list.append(total_containers) - if len(dispatched_list) < len(border_list): - for _ in range(len(border_list) - len(dispatched_list)): - dispatched_list.append(0) - return { - "Border": border_list, - "Border_Times": border_time_list, - "Dispatched": dispatched_list, - } - -# TODO read from config -min_num_cars_per_train = 5 -target_num_cars_per_train = 30 - # Define the main function to generate demand trains with the updated rule def generate_trains( demand_hourly: pl.DataFrame, target_num_cars_per_train:int ) -> pl.DataFrame: - # Step 1: Create an OD pair column - demand_hourly = demand_hourly.with_columns( - (pl.col("Origin") + "-" + pl.col("Destination")).alias("OD_Pair") - ) - - # Step 2: Group data by OD pair and calculate total containers for each pair - grouped_data = demand_hourly.group_by("OD_Pair").agg([ - pl.col("Number_of_Containers").sum().alias("Total_Containers") - ]) - - # Step 3: Create a dictionary to store the max min_num_cars for each OD pair - max_min_cars_dict = {} - - # Calculate min_num_cars for each direction and store the maximum in the dictionary - for row in grouped_data.iter_rows(): - od_pair = row[0] - total_containers = row[1] - - remaining_containers = total_containers % target_num_cars_per_train - min_num_cars = ( - total_containers // target_num_cars_per_train + (1 if remaining_containers > 0 else 0) + grouped_data = (demand_hourly + .with_columns( + (pl.col("Origin") + "-" + pl.col("Destination")).alias("OD_Pair") ) - - # Check the reverse direction - reverse_pair = "-".join(od_pair.split("-")[::-1]) - - if reverse_pair in max_min_cars_dict: - max_min_cars_dict[od_pair] = max(min_num_cars, max_min_cars_dict[reverse_pair]) - max_min_cars_dict[reverse_pair] = max_min_cars_dict[od_pair] - else: - max_min_cars_dict[od_pair] = min_num_cars + .group_by("OD_Pair") + .agg( + pl.col("Number_of_Containers").sum().alias("Total_Containers"), + pl.col("Number_of_Containers").sum().mod(target_num_cars_per_train).alias("Remaining_Containers") + ) + .with_columns( + pl.col("Total_Containers").truediv(target_num_cars_per_train).round().add(pl.col("Remaining_Containers").gt(0)).alias("Max_Min_Cars") + ) + ) # Prepare a list to collect the results for all OD pairs all_dispatch_data = [] # Step 4: Loop through each unique OD pair to calculate dispatch data - for row in grouped_data.iter_rows(): - od_pair = row[0] # This is the "OD_Pair" string like "Origin-Destination" - total_containers = row[1] # This is the "Total_Containers" value + for row in grouped_data.iter_rows(named=True): + od_pair = row['OD_Pair'] # This is the "OD_Pair" string like "Origin-Destination" + total_containers = row['Total_Containers'] # This is the "Total_Containers" value # Filter containers list for the specific OD pair containers = demand_hourly.filter(pl.col("OD_Pair") == od_pair).select("Number_of_Containers").to_series().to_list() # Retrieve the max min_num_cars for this OD pair - max_min_cars = max_min_cars_dict[od_pair] + max_min_cars = row['Max_Min_Cars'] # Calculate dispatch data for the current OD pair with the updated rule dispatch_data = calculate_dispatch_data(total_containers, target_num_cars_per_train, od_pair, containers, max_min_cars) # Add the OD pair label to each entry in the dispatch data - dispatch_data_df = pl.DataFrame(dispatch_data) + dispatch_data_df = pl.DataFrame(dispatch_data, strict=False) dispatch_data_df = dispatch_data_df.with_columns(pl.lit(od_pair).alias("OD_Pair")) # Ensure the "Border" column exists and is cast to Float64 @@ -431,7 +355,7 @@ def generate_trains( all_dispatch_data.append(dispatch_data_df) # Combine all dispatch data into a single DataFrame - final_dispatch_df = pl.concat(all_dispatch_data, how="diagonal") + final_dispatch_df = pl.concat(all_dispatch_data, how="diagonal_relaxed") return final_dispatch_df @@ -471,6 +395,7 @@ def calculate_dispatches_deterministic_hourly( schedule = find_minimum_waiting_time(num_iterations=num_iterations, demand_hourly=demand, border_time_list=border_time_list, + target_num_cars_per_train=config.target_num_cars_per_train['Intermodal'] #TODO make this flexible ) return schedule @@ -500,9 +425,9 @@ def generate_dispatch_details( grouping_vars = ["Origin", "Destination", "Train_Type"] schedule = (demand .select(pl.exclude("Number_of_Trains").repeat_by("Number_of_Trains").explode()) - .pipe(utilities.allocateItems, target = "Number_of_Cars_Loaded", grouping_vars = grouping_vars) + .pipe(utilities.allocateIntegerEvenly, target = "Number_of_Cars_Loaded", grouping_vars = grouping_vars) .drop("Percent_Within_Group_Cumulative") - .pipe(utilities.allocateItems, target = "Number_of_Cars_Empty", grouping_vars = grouping_vars) + .pipe(utilities.allocateIntegerEvenly, target = "Number_of_Cars_Empty", grouping_vars = grouping_vars) .group_by(pl.exclude("Number_of_Cars_Empty", "Number_of_Cars_Loaded")) .agg(pl.col("Number_of_Cars_Empty", "Number_of_Cars_Loaded")) .with_columns(pl.col("Number_of_Cars_Loaded").list.sort(descending=True), diff --git a/python/altrios/utilities.py b/python/altrios/utilities.py index 74405f61..d2b27645 100644 --- a/python/altrios/utilities.py +++ b/python/altrios/utilities.py @@ -195,7 +195,7 @@ def cumPctWithinGroup( ) ) -def allocateItems( +def allocateIntegerEvenly( df: Union[pl.DataFrame, pl.LazyFrame], target: str, grouping_vars: List[str] @@ -213,6 +213,24 @@ def allocateItems( ) .drop(f'{target}_Group_Cumulative') ) + +def allocateItems( + df: Union[pl.DataFrame, pl.LazyFrame], + grouping_vars: list[str], + count_target: str +) -> Union[pl.DataFrame, pl.LazyFrame]: + return (df + .sort(grouping_vars+ [count_target], descending = True) + .with_columns( + pl.col(count_target).sum().over(grouping_vars).round().alias(f'{count_target}_Group'), + (pl.col(count_target).sum().over(grouping_vars).round() * + ( + pl.col(count_target).cum_sum().over(grouping_vars) / + pl.col(count_target).sum().over(grouping_vars) + ) + ).round().alias(f'{count_target}_Group_Cumulative')) + .with_columns((pl.col(f'{count_target}_Group_Cumulative') - pl.col(f'{count_target}_Group_Cumulative').shift(1).over(grouping_vars)).fill_null(pl.col(f'{count_target}_Group_Cumulative')).alias("Count")) + ) def resample( df: pd.DataFrame, From 832271ec7593e8e27425561ac004cbaacd95c368 Mon Sep 17 00:00:00 2001 From: "Bruchon, Matthew" Date: Thu, 16 Jan 2025 16:40:16 -0500 Subject: [PATCH 31/50] train planner restructuring --- pyproject.toml | 2 +- python/altrios/train_planner/data_prep.py | 265 +++++++++++++++++ python/altrios/train_planner/planner.py | 266 +----------------- .../altrios/train_planner/planner_config.py | 8 +- 4 files changed, 277 insertions(+), 264 deletions(-) create mode 100644 python/altrios/train_planner/data_prep.py diff --git a/pyproject.toml b/pyproject.toml index 1114ccec..813ae078 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -43,7 +43,7 @@ dependencies = [ "plotly", "typing_extensions", "pyyaml", - "polars >= 1.19.0", + "polars >= 1.20.0", "pyarrow", "requests", "PyYAML==6.0.2", diff --git a/python/altrios/train_planner/data_prep.py b/python/altrios/train_planner/data_prep.py new file mode 100644 index 00000000..7bee7ad9 --- /dev/null +++ b/python/altrios/train_planner/data_prep.py @@ -0,0 +1,265 @@ +from typing import Union, List, Tuple +from pathlib import Path +import polars as pl +import polars.selectors as cs +import pandas as pd +import numpy as np +import altrios as alt +from altrios import defaults, utilities +from altrios.train_planner import planner_config + +def load_freight_demand( + demand_table: Union[pl.DataFrame, Path, str] +) -> Tuple[pl.DataFrame, pl.Series, int]: + """ + Load the user input csv file into a dataframe for later processing + Arguments: + ---------- + user_input_file: path to the input csv file that user import to the module + Example Input: + Origin Destination Train_Type Number_of_Cars Number_of_Containers + Barstow Stockton Unit 2394 0 + Barstow Stockton Manifest 2588 0 + Barstow Stockton Intermodal 2221 2221 + + Outputs: + ---------- + df_annual_demand: dataframe with all pair information including: + origin, destination, train type, number of cars + node_list: List of origin or destination demand nodes + """ + if type(demand_table) is not pl.DataFrame: + demand_table = pl.read_csv(demand_table, dtypes = {"Number_of_Cars": pl.UInt32, "Number_of_Containers": pl.UInt32}) + + nodes = pl.concat( + [demand_table.get_column("Origin"), + demand_table.get_column("Destination")]).unique().sort() + return demand_table, nodes + +def prep_hourly_demand( + total_demand: Union[pl.DataFrame, pl.LazyFrame], + hourly_demand_density: Union[pl.DataFrame, pl.LazyFrame], + daily_demand_density: Union[pl.DataFrame, pl.LazyFrame] +) -> Union[pl.DataFrame, pl.LazyFrame]: + return ( + + ) +def append_loco_info(loco_info: pd.DataFrame) -> pd.DataFrame: + if all(item in loco_info.columns for item in [ + 'HP','Loco_Mass_Tons','SOC_J','SOC_Min_J','SOC_Max_J','Capacity_J' + ] + ): return loco_info + get_hp = lambda loco: loco.pwr_rated_kilowatts * 1e3 / alt.utils.W_PER_HP + get_mass_ton = lambda loco: 0 if not loco.mass_kg else loco.mass_kg / alt.utils.KG_PER_TON + get_starting_soc = lambda loco: defaults.DIESEL_TANK_CAPACITY_J if not loco.res else loco.res.state.soc * loco.res.energy_capacity_joules + get_min_soc = lambda loco: 0 if not loco.res else loco.res.min_soc * loco.res.energy_capacity_joules + get_max_soc = lambda loco: defaults.DIESEL_TANK_CAPACITY_J if not loco.res else loco.res.max_soc * loco.res.energy_capacity_joules + get_capacity = lambda loco: defaults.DIESEL_TANK_CAPACITY_J if not loco.res else loco.res.energy_capacity_joules + loco_info.loc[:,'HP'] = loco_info.loc[:,'Rust_Loco'].apply(get_hp) + loco_info.loc[:,'Loco_Mass_Tons'] = loco_info.loc[:,'Rust_Loco'].apply(get_mass_ton) + loco_info.loc[:,'SOC_J'] = loco_info.loc[:,'Rust_Loco'].apply(get_starting_soc) + loco_info.loc[:,'SOC_Min_J'] = loco_info.loc[:,'Rust_Loco'].apply(get_min_soc) + loco_info.loc[:,'SOC_Max_J'] = loco_info.loc[:,'Rust_Loco'].apply(get_max_soc) + loco_info.loc[:,'Capacity_J'] = loco_info.loc[:,'Rust_Loco'].apply(get_capacity) + return loco_info + +def build_locopool( + config: planner_config.TrainPlannerConfig, + demand_file: Union[pl.DataFrame, Path, str], + method: str = "tile", + shares: List[float] = [], + locomotives_per_node: int = None +) -> pl.DataFrame: + """ + Generate default locomotive pool + Arguments: + ---------- + demand_file: Path to a file with origin-destination demand + method: Method to determine each locomotive's type ("tile" or "shares_twoway" currently implemented) + shares: List of shares for each locomotive type in loco_info (implemented for two-way shares only) + Outputs: + ---------- + loco_pool: Locomotive pool containing all locomotives' information that are within the system + """ + config.loco_info = append_loco_info(config.loco_info) + loco_types = list(config.loco_info.loc[:,'Locomotive_Type']) + demand, node_list = demand_loader(demand_file) + + num_nodes = len(node_list) + if locomotives_per_node is None: + num_ods = demand.height + cars_per_od = demand.get_column("Number_of_Cars").mean() + if config.single_train_mode: + initial_size = math.ceil(cars_per_od / config.cars_per_locomotive["Default"]) + rows = initial_size + else: + num_destinations_per_node = num_ods*1.0 / num_nodes*1.0 + initial_size = math.ceil((cars_per_od / config.cars_per_locomotive["Default"]) * + num_destinations_per_node) # number of locomotives per node + rows = initial_size * num_nodes # number of locomotives in total + else: + initial_size = locomotives_per_node + rows = locomotives_per_node * num_nodes + + if config.single_train_mode: + sorted_nodes = np.tile([demand.select(pl.col("Origin").first()).item()],rows).tolist() + engine_numbers = range(0, rows) + else: + sorted_nodes = np.sort(np.tile(node_list, initial_size)).tolist() + engine_numbers = rankdata(sorted_nodes, method="dense") * 1000 + \ + np.tile(range(0, initial_size), num_nodes) + + if method == "tile": + repetitions = math.ceil(rows/len(loco_types)) + types = np.tile(loco_types, repetitions).tolist()[0:rows] + elif method == "shares_twoway": + # TODO: this logic can be replaced (and generalized to >2 types) using altrios.utilities.allocateItems + if((len(loco_types) != 2) | (len(shares) != 2)): + raise ValueError( + f"""2-way prescribed locopool requested but number of locomotive types is not 2.""") + + idx_1 = np.argmin(shares) + idx_2 = 1 - idx_1 + share_type_one = shares[idx_1] + label_type_one = loco_types[idx_1] + label_type_two = loco_types[idx_2] + + num_type_one = round(initial_size * share_type_one) + if 0 == num_type_one: + types = pd.Series([label_type_two] * initial_size) + elif initial_size == num_type_one: + types = pd.Series([label_type_one] * initial_size) + else: + # Arrange repeated sequences of type 1 + {type_two_per_type_one, type_two_per_type_one+1} type 2 + # so as to match the required total counts of each. + type_two_per_type_one = ( + initial_size - num_type_one) / num_type_one + # Number of type 1 + {type_two_per_bel+1} type 2 sequences needed + num_extra_type_two = round( + num_type_one * (type_two_per_type_one % 1.0)) + series_fewer_type_two = pd.Series( + [label_type_one] + [label_type_two] * math.floor(type_two_per_type_one)) + series_more_type_two = pd.Series( + [label_type_one] + [label_type_two] * math.ceil(type_two_per_type_one)) + types = np.concatenate(( + np.tile(series_more_type_two, num_extra_type_two), + np.tile(series_fewer_type_two, num_type_one-num_extra_type_two)), + axis=None) + types = np.tile(types, num_nodes).tolist() + else: + raise ValueError( + f"""Locopool build method '{method}' invalid or not implemented.""") + + loco_pool = pl.DataFrame( + {'Locomotive_ID': pl.Series(engine_numbers, dtype=pl.UInt32), + 'Locomotive_Type': pl.Series(types, dtype=pl.Categorical), + 'Node': pl.Series(sorted_nodes, dtype=pl.Categorical), + 'Arrival_Time': pl.Series(np.zeros(rows), dtype=pl.Float64), + 'Servicing_Done_Time': pl.Series(np.zeros(rows), dtype=pl.Float64), + 'Refueling_Done_Time': pl.Series(np.tile(0, rows), dtype=pl.Float64), + 'Status': pl.Series(np.tile("Ready", rows), dtype=pl.Categorical), + 'SOC_Target_J': pl.Series(np.zeros(rows), dtype=pl.Float64), + 'Refuel_Duration': pl.Series(np.zeros(rows), dtype=pl.Float64), + 'Refueler_J_Per_Hr': pl.Series(np.zeros(rows), dtype=pl.Float64), + 'Refueler_Efficiency': pl.Series(np.zeros(rows), dtype=pl.Float64), + 'Port_Count': pl.Series(np.zeros(rows), dtype=pl.UInt32)} + ) + + loco_info_pl = pl.from_pandas(config.loco_info.drop(labels='Rust_Loco',axis=1), + schema_overrides={'Locomotive_Type': pl.Categorical, + 'Fuel_Type': pl.Categorical} + ) + + loco_pool = loco_pool.join(loco_info_pl, on="Locomotive_Type") + return loco_pool + +def build_refuelers( + node_list: pd.Series, + loco_pool: pl.DataFrame, + refueler_info: pd.DataFrame, + refuelers_per_incoming_corridor: int, +) -> pl.DataFrame: + """ + Build the default set of refueling facilities. + Arguments: + ---------- + node_list: List of origin or destination demand nodes + loco_pool: Locomotive pool + refueler_info: DataFrame with information for each type of refueling infrastructure to use + refuelers_per_incoming_corridor: Queue size per corridor arriving at each node. + Outputs: + ---------- + refuelers: Polars dataframe of facility county by node and type of fuel + """ + ports_per_node = (loco_pool + .group_by(pl.col("Locomotive_Type", "Fuel_Type").cast(pl.Utf8)) + .agg([(pl.lit(refuelers_per_incoming_corridor) * pl.len() / pl.lit(loco_pool.height)) + .ceil() + .alias("Ports_Per_Node")]) + .join(pl.from_pandas(refueler_info), + on=["Locomotive_Type", "Fuel_Type"], + how="left") + ) + + locations = pd.DataFrame(data={ + 'Node': np.tile(node_list, ports_per_node.height)}) + locations = locations.sort_values(by=['Node']).reset_index(drop=True) + + refuelers = pl.DataFrame({ + 'Node': pl.Series(locations['Node'], dtype=pl.Categorical).cast(pl.Categorical), + 'Refueler_Type': pl.Series(np.tile( + ports_per_node.get_column("Refueler_Type").to_list(), len(node_list)), + dtype=pl.Categorical).cast(pl.Categorical), + 'Locomotive_Type': pl.Series(np.tile( + ports_per_node.get_column("Locomotive_Type").to_list(), len(node_list)), + dtype=pl.Categorical).cast(pl.Categorical), + 'Fuel_Type': pl.Series(np.tile( + ports_per_node.get_column("Fuel_Type").to_list(), len(node_list)), + dtype=pl.Categorical).cast(pl.Categorical), + 'Refueler_J_Per_Hr': pl.Series(np.tile( + ports_per_node.get_column("Refueler_J_Per_Hr").to_list(), len(node_list)), + dtype=pl.Float64), + 'Refueler_Efficiency': pl.Series(np.tile( + ports_per_node.get_column("Refueler_Efficiency").to_list(), len(node_list)), + dtype=pl.Float64), + 'Lifespan_Years': pl.Series(np.tile( + ports_per_node.get_column("Lifespan_Years").to_list(), len(node_list)), + dtype=pl.Float64), + 'Cost_USD': pl.Series(np.tile( + ports_per_node.get_column("Cost_USD").to_list(), len(node_list)), + dtype=pl.Float64), + 'Port_Count': pl.Series(np.tile( + ports_per_node.get_column("Ports_Per_Node").to_list(), len(node_list)), + dtype=pl.UInt32)}) + return refuelers + +def append_charging_guidelines( + refuelers: pl.DataFrame, + loco_pool: pl.DataFrame, + demand: pl.DataFrame, + network_charging_guidelines: pl.DataFrame +) -> pl.DataFrame: + active_ods = demand.select(["Origin","Destination"]).unique() + network_charging_guidelines = (network_charging_guidelines + .join(active_ods, on=["Origin","Destination"], how="inner") + .group_by(pl.col("Origin")) + .agg(pl.col("Allowable_Battery_Headroom_MWh").min() * 1e6 / utilities.MWH_PER_MJ) + .rename({"Allowable_Battery_Headroom_MWh": "Battery_Headroom_J"}) + .with_columns(pl.col("Origin").cast(pl.Categorical))) + refuelers = (refuelers + .join(network_charging_guidelines, left_on="Node", right_on="Origin", how="left") + .with_columns(pl.when(pl.col("Fuel_Type")=="Electricity") + .then(pl.col("Battery_Headroom_J")) + .otherwise(0) + .fill_null(0) + .alias("Battery_Headroom_J") + )) + loco_pool = (loco_pool + .join(network_charging_guidelines, left_on="Node", right_on="Origin", how="left") + .with_columns(pl.when(pl.col("Fuel_Type")=="Electricity") + .then(pl.col("Battery_Headroom_J")) + .otherwise(0) + .fill_null(0) + .alias("Battery_Headroom_J")) + .with_columns(pl.max_horizontal([pl.col('SOC_Max_J')-pl.col('Battery_Headroom_J'), pl.col('SOC_Min_J')]).alias("SOC_J"))) + return refuelers, loco_pool \ No newline at end of file diff --git a/python/altrios/train_planner/planner.py b/python/altrios/train_planner/planner.py index 7abe4f0e..042b6892 100644 --- a/python/altrios/train_planner/planner.py +++ b/python/altrios/train_planner/planner.py @@ -1,265 +1,13 @@ from __future__ import annotations from pathlib import Path -from altrios.train_planner import demand_generators, schedulers, planner_config +from altrios.train_planner import data_prep, demand_generators, schedulers, planner_config import numpy as np -from scipy.stats import rankdata -import pandas as pd import polars as pl import polars.selectors as cs -import math -from typing import Union, Tuple, List, Dict, Callable, Optional +from typing import Union, Tuple, List, Dict from itertools import repeat -from dataclasses import dataclass, field import altrios as alt -from altrios import defaults, utilities - -def demand_loader( - demand_table: Union[pl.DataFrame, Path, str] -) -> Tuple[pl.DataFrame, pl.Series, int]: - """ - Load the user input csv file into a dataframe for later processing - Arguments: - ---------- - user_input_file: path to the input csv file that user import to the module - Example Input: - Origin Destination Train_Type Number_of_Cars Number_of_Containers - Barstow Stockton Unit 2394 0 - Barstow Stockton Manifest 2588 0 - Barstow Stockton Intermodal 2221 2221 - - Outputs: - ---------- - df_annual_demand: dataframe with all pair information including: - origin, destination, train type, number of cars - node_list: List of origin or destination demand nodes - """ - if type(demand_table) is not pl.DataFrame: - demand_table = pl.read_csv(demand_table, dtypes = {"Number_of_Cars": pl.UInt32, "Number_of_Containers": pl.UInt32}) - - nodes = pl.concat( - [demand_table.get_column("Origin"), - demand_table.get_column("Destination")]).unique().sort() - return demand_table, nodes - -def append_loco_info(loco_info: pd.DataFrame) -> pd.DataFrame: - if all(item in loco_info.columns for item in [ - 'HP','Loco_Mass_Tons','SOC_J','SOC_Min_J','SOC_Max_J','Capacity_J' - ] - ): return loco_info - get_hp = lambda loco: loco.pwr_rated_kilowatts * 1e3 / alt.utils.W_PER_HP - get_mass_ton = lambda loco: 0 if not loco.mass_kg else loco.mass_kg / alt.utils.KG_PER_TON - get_starting_soc = lambda loco: defaults.DIESEL_TANK_CAPACITY_J if not loco.res else loco.res.state.soc * loco.res.energy_capacity_joules - get_min_soc = lambda loco: 0 if not loco.res else loco.res.min_soc * loco.res.energy_capacity_joules - get_max_soc = lambda loco: defaults.DIESEL_TANK_CAPACITY_J if not loco.res else loco.res.max_soc * loco.res.energy_capacity_joules - get_capacity = lambda loco: defaults.DIESEL_TANK_CAPACITY_J if not loco.res else loco.res.energy_capacity_joules - loco_info.loc[:,'HP'] = loco_info.loc[:,'Rust_Loco'].apply(get_hp) - loco_info.loc[:,'Loco_Mass_Tons'] = loco_info.loc[:,'Rust_Loco'].apply(get_mass_ton) - loco_info.loc[:,'SOC_J'] = loco_info.loc[:,'Rust_Loco'].apply(get_starting_soc) - loco_info.loc[:,'SOC_Min_J'] = loco_info.loc[:,'Rust_Loco'].apply(get_min_soc) - loco_info.loc[:,'SOC_Max_J'] = loco_info.loc[:,'Rust_Loco'].apply(get_max_soc) - loco_info.loc[:,'Capacity_J'] = loco_info.loc[:,'Rust_Loco'].apply(get_capacity) - return loco_info - -def build_locopool( - config: planner_config.TrainPlannerConfig, - demand_file: Union[pl.DataFrame, Path, str], - method: str = "tile", - shares: List[float] = [], - locomotives_per_node: int = None -) -> pl.DataFrame: - """ - Generate default locomotive pool - Arguments: - ---------- - demand_file: Path to a file with origin-destination demand - method: Method to determine each locomotive's type ("tile" or "shares_twoway" currently implemented) - shares: List of shares for each locomotive type in loco_info (implemented for two-way shares only) - Outputs: - ---------- - loco_pool: Locomotive pool containing all locomotives' information that are within the system - """ - config.loco_info = append_loco_info(config.loco_info) - loco_types = list(config.loco_info.loc[:,'Locomotive_Type']) - demand, node_list = demand_loader(demand_file) - - num_nodes = len(node_list) - if locomotives_per_node is None: - num_ods = demand.height - cars_per_od = demand.get_column("Number_of_Cars").mean() - if config.single_train_mode: - initial_size = math.ceil(cars_per_od / config.cars_per_locomotive["Default"]) - rows = initial_size - else: - num_destinations_per_node = num_ods*1.0 / num_nodes*1.0 - initial_size = math.ceil((cars_per_od / config.cars_per_locomotive["Default"]) * - num_destinations_per_node) # number of locomotives per node - rows = initial_size * num_nodes # number of locomotives in total - else: - initial_size = locomotives_per_node - rows = locomotives_per_node * num_nodes - - if config.single_train_mode: - sorted_nodes = np.tile([demand.select(pl.col("Origin").first()).item()],rows).tolist() - engine_numbers = range(0, rows) - else: - sorted_nodes = np.sort(np.tile(node_list, initial_size)).tolist() - engine_numbers = rankdata(sorted_nodes, method="dense") * 1000 + \ - np.tile(range(0, initial_size), num_nodes) - - if method == "tile": - repetitions = math.ceil(rows/len(loco_types)) - types = np.tile(loco_types, repetitions).tolist()[0:rows] - elif method == "shares_twoway": - # TODO: this logic can be replaced (and generalized to >2 types) using altrios.utilities.allocateItems - if((len(loco_types) != 2) | (len(shares) != 2)): - raise ValueError( - f"""2-way prescribed locopool requested but number of locomotive types is not 2.""") - - idx_1 = np.argmin(shares) - idx_2 = 1 - idx_1 - share_type_one = shares[idx_1] - label_type_one = loco_types[idx_1] - label_type_two = loco_types[idx_2] - - num_type_one = round(initial_size * share_type_one) - if 0 == num_type_one: - types = pd.Series([label_type_two] * initial_size) - elif initial_size == num_type_one: - types = pd.Series([label_type_one] * initial_size) - else: - # Arrange repeated sequences of type 1 + {type_two_per_type_one, type_two_per_type_one+1} type 2 - # so as to match the required total counts of each. - type_two_per_type_one = ( - initial_size - num_type_one) / num_type_one - # Number of type 1 + {type_two_per_bel+1} type 2 sequences needed - num_extra_type_two = round( - num_type_one * (type_two_per_type_one % 1.0)) - series_fewer_type_two = pd.Series( - [label_type_one] + [label_type_two] * math.floor(type_two_per_type_one)) - series_more_type_two = pd.Series( - [label_type_one] + [label_type_two] * math.ceil(type_two_per_type_one)) - types = np.concatenate(( - np.tile(series_more_type_two, num_extra_type_two), - np.tile(series_fewer_type_two, num_type_one-num_extra_type_two)), - axis=None) - types = np.tile(types, num_nodes).tolist() - else: - raise ValueError( - f"""Locopool build method '{method}' invalid or not implemented.""") - - loco_pool = pl.DataFrame( - {'Locomotive_ID': pl.Series(engine_numbers, dtype=pl.UInt32), - 'Locomotive_Type': pl.Series(types, dtype=pl.Categorical), - 'Node': pl.Series(sorted_nodes, dtype=pl.Categorical), - 'Arrival_Time': pl.Series(np.zeros(rows), dtype=pl.Float64), - 'Servicing_Done_Time': pl.Series(np.zeros(rows), dtype=pl.Float64), - 'Refueling_Done_Time': pl.Series(np.tile(0, rows), dtype=pl.Float64), - 'Status': pl.Series(np.tile("Ready", rows), dtype=pl.Categorical), - 'SOC_Target_J': pl.Series(np.zeros(rows), dtype=pl.Float64), - 'Refuel_Duration': pl.Series(np.zeros(rows), dtype=pl.Float64), - 'Refueler_J_Per_Hr': pl.Series(np.zeros(rows), dtype=pl.Float64), - 'Refueler_Efficiency': pl.Series(np.zeros(rows), dtype=pl.Float64), - 'Port_Count': pl.Series(np.zeros(rows), dtype=pl.UInt32)} - ) - - loco_info_pl = pl.from_pandas(config.loco_info.drop(labels='Rust_Loco',axis=1), - schema_overrides={'Locomotive_Type': pl.Categorical, - 'Fuel_Type': pl.Categorical} - ) - - loco_pool = loco_pool.join(loco_info_pl, on="Locomotive_Type") - return loco_pool - -def build_refuelers( - node_list: pd.Series, - loco_pool: pl.DataFrame, - refueler_info: pd.DataFrame, - refuelers_per_incoming_corridor: int, -) -> pl.DataFrame: - """ - Build the default set of refueling facilities. - Arguments: - ---------- - node_list: List of origin or destination demand nodes - loco_pool: Locomotive pool - refueler_info: DataFrame with information for each type of refueling infrastructure to use - refuelers_per_incoming_corridor: Queue size per corridor arriving at each node. - Outputs: - ---------- - refuelers: Polars dataframe of facility county by node and type of fuel - """ - ports_per_node = (loco_pool - .group_by(pl.col("Locomotive_Type", "Fuel_Type").cast(pl.Utf8)) - .agg([(pl.lit(refuelers_per_incoming_corridor) * pl.len() / pl.lit(loco_pool.height)) - .ceil() - .alias("Ports_Per_Node")]) - .join(pl.from_pandas(refueler_info), - on=["Locomotive_Type", "Fuel_Type"], - how="left") - ) - - locations = pd.DataFrame(data={ - 'Node': np.tile(node_list, ports_per_node.height)}) - locations = locations.sort_values(by=['Node']).reset_index(drop=True) - - refuelers = pl.DataFrame({ - 'Node': pl.Series(locations['Node'], dtype=pl.Categorical).cast(pl.Categorical), - 'Refueler_Type': pl.Series(np.tile( - ports_per_node.get_column("Refueler_Type").to_list(), len(node_list)), - dtype=pl.Categorical).cast(pl.Categorical), - 'Locomotive_Type': pl.Series(np.tile( - ports_per_node.get_column("Locomotive_Type").to_list(), len(node_list)), - dtype=pl.Categorical).cast(pl.Categorical), - 'Fuel_Type': pl.Series(np.tile( - ports_per_node.get_column("Fuel_Type").to_list(), len(node_list)), - dtype=pl.Categorical).cast(pl.Categorical), - 'Refueler_J_Per_Hr': pl.Series(np.tile( - ports_per_node.get_column("Refueler_J_Per_Hr").to_list(), len(node_list)), - dtype=pl.Float64), - 'Refueler_Efficiency': pl.Series(np.tile( - ports_per_node.get_column("Refueler_Efficiency").to_list(), len(node_list)), - dtype=pl.Float64), - 'Lifespan_Years': pl.Series(np.tile( - ports_per_node.get_column("Lifespan_Years").to_list(), len(node_list)), - dtype=pl.Float64), - 'Cost_USD': pl.Series(np.tile( - ports_per_node.get_column("Cost_USD").to_list(), len(node_list)), - dtype=pl.Float64), - 'Port_Count': pl.Series(np.tile( - ports_per_node.get_column("Ports_Per_Node").to_list(), len(node_list)), - dtype=pl.UInt32)}) - return refuelers - -def append_charging_guidelines( - refuelers: pl.DataFrame, - loco_pool: pl.DataFrame, - demand: pl.DataFrame, - network_charging_guidelines: pl.DataFrame -) -> pl.DataFrame: - active_ods = demand.select(["Origin","Destination"]).unique() - network_charging_guidelines = (network_charging_guidelines - .join(active_ods, on=["Origin","Destination"], how="inner") - .group_by(pl.col("Origin")) - .agg(pl.col("Allowable_Battery_Headroom_MWh").min() * 1e6 / utilities.MWH_PER_MJ) - .rename({"Allowable_Battery_Headroom_MWh": "Battery_Headroom_J"}) - .with_columns(pl.col("Origin").cast(pl.Categorical))) - refuelers = (refuelers - .join(network_charging_guidelines, left_on="Node", right_on="Origin", how="left") - .with_columns(pl.when(pl.col("Fuel_Type")=="Electricity") - .then(pl.col("Battery_Headroom_J")) - .otherwise(0) - .fill_null(0) - .alias("Battery_Headroom_J") - )) - loco_pool = (loco_pool - .join(network_charging_guidelines, left_on="Node", right_on="Origin", how="left") - .with_columns(pl.when(pl.col("Fuel_Type")=="Electricity") - .then(pl.col("Battery_Headroom_J")) - .otherwise(0) - .fill_null(0) - .alias("Battery_Headroom_J")) - .with_columns(pl.max_horizontal([pl.col('SOC_Max_J')-pl.col('Battery_Headroom_J'), pl.col('SOC_Min_J')]).alias("SOC_J"))) - return refuelers, loco_pool +from altrios import defaults def dispatch( dispatch_time: int, @@ -552,11 +300,11 @@ def run_train_planner( Outputs: ---------- """ - config.loco_info = append_loco_info(config.loco_info) - demand, node_list = demand_loader(demand_file) + config.loco_info = data_prep.append_loco_info(config.loco_info) + demand, node_list = data_prep.load_freight_demand(demand_file) if refuelers is None: - refuelers = build_refuelers( + refuelers = data_prep.build_refuelers( node_list, loco_pool, config.refueler_info, @@ -565,7 +313,7 @@ def run_train_planner( if network_charging_guidelines is None: network_charging_guidelines = pl.read_csv(alt.resources_root() / "networks" / "network_charging_guidelines.csv") - refuelers, loco_pool = append_charging_guidelines(refuelers, loco_pool, demand, network_charging_guidelines) + refuelers, loco_pool = data_prep.append_charging_guidelines(refuelers, loco_pool, demand, network_charging_guidelines) if config.single_train_mode: demand = demand_generators.generate_demand_trains(demand, demand_returns = pl.DataFrame(), diff --git a/python/altrios/train_planner/planner_config.py b/python/altrios/train_planner/planner_config.py index 749c8900..e851ae4c 100644 --- a/python/altrios/train_planner/planner_config.py +++ b/python/altrios/train_planner/planner_config.py @@ -1,5 +1,5 @@ from __future__ import annotations -from altrios.train_planner import demand_generators +from altrios.train_planner import data_prep import polars as pl import pandas as pd from typing import Dict, Callable, Optional @@ -102,7 +102,7 @@ class TrainPlannerConfig: drag_coeff_function: Optional[Callable]= None dispatch_scheduler: Optional[Callable] = None return_demand_generators: Dict = field(default_factory = lambda: { - 'Unit': demand_generators.generate_return_demand_unit, - 'Manifest': demand_generators.generate_return_demand_manifest, - 'Intermodal': demand_generators.generate_return_demand_intermodal + 'Unit': data_prep.generate_return_demand_unit, + 'Manifest': data_prep.generate_return_demand_manifest, + 'Intermodal': data_prep.generate_return_demand_intermodal }) From f756c4d87430f0f1162bcbf3421663ae2a17c765 Mon Sep 17 00:00:00 2001 From: "Bruchon, Matthew" Date: Thu, 16 Jan 2025 16:53:06 -0500 Subject: [PATCH 32/50] updates for demand calculations --- python/altrios/train_planner/data_prep.py | 29 +++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/python/altrios/train_planner/data_prep.py b/python/altrios/train_planner/data_prep.py index 7bee7ad9..5710b071 100644 --- a/python/altrios/train_planner/data_prep.py +++ b/python/altrios/train_planner/data_prep.py @@ -8,6 +8,8 @@ from altrios import defaults, utilities from altrios.train_planner import planner_config +day_order_map = + def load_freight_demand( demand_table: Union[pl.DataFrame, Path, str] ) -> Tuple[pl.DataFrame, pl.Series, int]: @@ -41,9 +43,32 @@ def prep_hourly_demand( hourly_demand_density: Union[pl.DataFrame, pl.LazyFrame], daily_demand_density: Union[pl.DataFrame, pl.LazyFrame] ) -> Union[pl.DataFrame, pl.LazyFrame]: - return ( - + day_order_map = { + "Mon": 1, + "Tue": 2, + "Wed": 3, + "Thu": 4, + "Fri": 5, + "Sat": 6, + "Sun": 7 + } + return (total_demand + .join(hourly_demand_density, how="inner", on=["Origin", "Destination"]) + .with_columns( + (pl.col("Number_of_Containers") * pl.col("Percentage")).round(0).alias("Number_of_Containers_Daily"), + pl.col("Day of Week").replace_strict(day_order_map).alias("Day_Order") + ) + .join(hourly_demand_density, how="inner", on=["Origin", "Destination"]) + .sort("Origin", "Destination", "Day_Order", "Hour of Day") + .with_columns( + (pl.col("Number_of_Containers_Daily") * pl.col("Percentage_of_Hour")).round(0).alias("Number_of_Containers"), + pl.concat_str(pl.col("Origin"), pl.lit("-"), pl.col("Destination")).alias("OD_Pair"), + pl.int_range(0, pl.len()).over("Origin", "Destination").alias("Hour") + ) + .with_columns(pl.col("Number_of_Containers").alias("Number_of_Cars")) + .select("Origin", "Destination", "Train_Type", "Hour", "Number_of_Cars", "Number_of_Containers") ) + def append_loco_info(loco_info: pd.DataFrame) -> pd.DataFrame: if all(item in loco_info.columns for item in [ 'HP','Loco_Mass_Tons','SOC_J','SOC_Min_J','SOC_Max_J','Capacity_J' From 84501e6d50c097c43506bda62b06735d2a14c5a1 Mon Sep 17 00:00:00 2001 From: "Bruchon, Matthew" Date: Thu, 16 Jan 2025 16:57:19 -0500 Subject: [PATCH 33/50] hourly demand code --- python/altrios/train_planner/data_prep.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/python/altrios/train_planner/data_prep.py b/python/altrios/train_planner/data_prep.py index 5710b071..847af26d 100644 --- a/python/altrios/train_planner/data_prep.py +++ b/python/altrios/train_planner/data_prep.py @@ -1,15 +1,14 @@ from typing import Union, List, Tuple from pathlib import Path import polars as pl -import polars.selectors as cs import pandas as pd import numpy as np +import math +from scipy.stats import rankdata import altrios as alt from altrios import defaults, utilities from altrios.train_planner import planner_config -day_order_map = - def load_freight_demand( demand_table: Union[pl.DataFrame, Path, str] ) -> Tuple[pl.DataFrame, pl.Series, int]: @@ -61,11 +60,13 @@ def prep_hourly_demand( .join(hourly_demand_density, how="inner", on=["Origin", "Destination"]) .sort("Origin", "Destination", "Day_Order", "Hour of Day") .with_columns( - (pl.col("Number_of_Containers_Daily") * pl.col("Percentage_of_Hour")).round(0).alias("Number_of_Containers"), + (pl.col("Number_of_Containers_Daily") * pl.col("Percentage_of_Hour")).alias("Number_of_Containers"), pl.concat_str(pl.col("Origin"), pl.lit("-"), pl.col("Destination")).alias("OD_Pair"), pl.int_range(0, pl.len()).over("Origin", "Destination").alias("Hour") ) .with_columns(pl.col("Number_of_Containers").alias("Number_of_Cars")) + #TODO allocateItems to get integers + #TODO handle double vs single stacked? .select("Origin", "Destination", "Train_Type", "Hour", "Number_of_Cars", "Number_of_Containers") ) @@ -108,7 +109,7 @@ def build_locopool( """ config.loco_info = append_loco_info(config.loco_info) loco_types = list(config.loco_info.loc[:,'Locomotive_Type']) - demand, node_list = demand_loader(demand_file) + demand, node_list = load_freight_demand(demand_file) num_nodes = len(node_list) if locomotives_per_node is None: From f9bb7996c6cd9fa9339f65b2cb22a430eb07280b Mon Sep 17 00:00:00 2001 From: "Bruchon, Matthew" Date: Fri, 17 Jan 2025 00:00:05 -0500 Subject: [PATCH 34/50] Refactoring and improvements - Improved prep_hourly_demand - Moved default return_demand_generators - Renamed / restructured more train planner code --- .gitignore | 5 ++ python/altrios/sim_manager.py | 4 +- python/altrios/train_planner/data_prep.py | 52 ++++++++++++------- python/altrios/train_planner/planner.py | 13 +++-- .../altrios/train_planner/planner_config.py | 7 +-- ...nerators.py => train_demand_generators.py} | 11 ++-- 6 files changed, 57 insertions(+), 35 deletions(-) rename python/altrios/train_planner/{demand_generators.py => train_demand_generators.py} (98%) diff --git a/.gitignore b/.gitignore index f7049904..2e556424 100644 --- a/.gitignore +++ b/.gitignore @@ -1219,3 +1219,8 @@ altrios/dispatch/*.json activate.sh *.xlsx altrios/*.txt +truck_work_log.txt +vehicle_average_times.txt +avg_time_per_train.txt +crane_work_log.txt +hostler_work_log.txt diff --git a/python/altrios/sim_manager.py b/python/altrios/sim_manager.py index aaced8ed..918f4592 100644 --- a/python/altrios/sim_manager.py +++ b/python/altrios/sim_manager.py @@ -3,7 +3,7 @@ """ import polars as pl -from typing import Any, Union, Dict, List, Optional, Tuple +from typing import Any, Union, Dict, List, Tuple from pathlib import Path import time from altrios import defaults @@ -65,7 +65,7 @@ def main( train_planner_config.loco_info = metrics.add_battery_costs(train_planner_config.loco_info, scenario_year) - if loco_pool is None: loco_pool = planner.build_locopool( + if loco_pool is None: loco_pool = planner.data_prep.build_locopool( config = train_planner_config, method="shares_twoway", shares=[1-target_bel_share, target_bel_share], diff --git a/python/altrios/train_planner/data_prep.py b/python/altrios/train_planner/data_prep.py index 847af26d..334135cd 100644 --- a/python/altrios/train_planner/data_prep.py +++ b/python/altrios/train_planner/data_prep.py @@ -8,6 +8,16 @@ import altrios as alt from altrios import defaults, utilities from altrios.train_planner import planner_config + +day_order_map = { + "Mon": 1, + "Tue": 2, + "Wed": 3, + "Thu": 4, + "Fri": 5, + "Sat": 6, + "Sun": 7 +} def load_freight_demand( demand_table: Union[pl.DataFrame, Path, str] @@ -42,32 +52,36 @@ def prep_hourly_demand( hourly_demand_density: Union[pl.DataFrame, pl.LazyFrame], daily_demand_density: Union[pl.DataFrame, pl.LazyFrame] ) -> Union[pl.DataFrame, pl.LazyFrame]: - day_order_map = { - "Mon": 1, - "Tue": 2, - "Wed": 3, - "Thu": 4, - "Fri": 5, - "Sat": 6, - "Sun": 7 - } + hourly_demand_density = (hourly_demand_density + .group_by("Terminal_Type", "Hour_Of_Day") + .agg(pl.col("Share").sum()) + .with_columns(pl.col("Share").truediv(pl.col("Share").sum().over("Terminal_Type"))) + ) + daily_demand_density = (daily_demand_density + .group_by("Terminal_Type", "Day_Of_Week") + .agg(pl.col("Share").sum()) + .with_columns(pl.col("Share").truediv(pl.col("Share").sum().over("Terminal_Type"))) + ) return (total_demand - .join(hourly_demand_density, how="inner", on=["Origin", "Destination"]) + .join(daily_demand_density, how="inner", on=["Terminal_Type"]) .with_columns( - (pl.col("Number_of_Containers") * pl.col("Percentage")).round(0).alias("Number_of_Containers_Daily"), - pl.col("Day of Week").replace_strict(day_order_map).alias("Day_Order") + (pl.col("Number_of_Cars") * pl.col("Share")).alias("Number_of_Cars_Daily"), + pl.col("Day_Of_Week").replace_strict(day_order_map).alias("Day_Order") ) - .join(hourly_demand_density, how="inner", on=["Origin", "Destination"]) - .sort("Origin", "Destination", "Day_Order", "Hour of Day") + .pipe(utilities.allocateItems, grouping_vars=["Origin", "Destination", "Train_Type"], count_target="Number_of_Cars_Daily") + .drop("Number_of_Cars_Daily", "Share") + .rename({"Count": "Number_of_Cars_Daily"}) + .join(hourly_demand_density, how="inner", on=["Terminal_Type"]) + .sort("Origin", "Destination", "Day_Order", "Hour_Of_Day") .with_columns( - (pl.col("Number_of_Containers_Daily") * pl.col("Percentage_of_Hour")).alias("Number_of_Containers"), + (pl.col("Number_of_Cars_Daily") * pl.col("Share")).alias("Number_of_Cars"), pl.concat_str(pl.col("Origin"), pl.lit("-"), pl.col("Destination")).alias("OD_Pair"), pl.int_range(0, pl.len()).over("Origin", "Destination").alias("Hour") ) - .with_columns(pl.col("Number_of_Containers").alias("Number_of_Cars")) - #TODO allocateItems to get integers - #TODO handle double vs single stacked? - .select("Origin", "Destination", "Train_Type", "Hour", "Number_of_Cars", "Number_of_Containers") + .pipe(utilities.allocateItems, grouping_vars=["Origin", "Destination", "Train_Type", "Day_Order"], count_target="Number_of_Cars") + .drop("Number_of_Cars") + .rename({"Count": "Number_of_Cars"}) + .select("Origin", "Destination", "Train_Type", "Hour", "Number_of_Cars") ) def append_loco_info(loco_info: pd.DataFrame) -> pd.DataFrame: diff --git a/python/altrios/train_planner/planner.py b/python/altrios/train_planner/planner.py index 042b6892..814d0660 100644 --- a/python/altrios/train_planner/planner.py +++ b/python/altrios/train_planner/planner.py @@ -1,6 +1,6 @@ from __future__ import annotations from pathlib import Path -from altrios.train_planner import data_prep, demand_generators, schedulers, planner_config +from altrios.train_planner import data_prep, schedulers, planner_config, train_demand_generators import numpy as np import polars as pl import polars.selectors as cs @@ -313,9 +313,12 @@ def run_train_planner( if network_charging_guidelines is None: network_charging_guidelines = pl.read_csv(alt.resources_root() / "networks" / "network_charging_guidelines.csv") + if config.return_demand_generators is None: + config.return_demand_generators = train_demand_generators.get_default_return_demand_generators() + refuelers, loco_pool = data_prep.append_charging_guidelines(refuelers, loco_pool, demand, network_charging_guidelines) if config.single_train_mode: - demand = demand_generators.generate_demand_trains(demand, + demand = train_demand_generators.generate_demand_trains(demand, demand_returns = pl.DataFrame(), demand_rebalancing = pl.DataFrame(), rail_vehicles = rail_vehicles, @@ -326,11 +329,11 @@ def run_train_planner( .drop("index") ) else: - demand_returns = demand_generators.generate_return_demand(demand, config) + demand_returns = train_demand_generators.generate_return_demand(demand, config) demand_rebalancing = pl.DataFrame() if demand.filter(pl.col("Train_Type").str.contains("Manifest")).height > 0: - demand_rebalancing = demand_generators.generate_manifest_rebalancing_demand(demand, node_list, config) - demand = demand_generators.generate_demand_trains(demand, demand_returns, demand_rebalancing, rail_vehicles, config) + demand_rebalancing = train_demand_generators.generate_manifest_rebalancing_demand(demand, node_list, config) + demand = train_demand_generators.generate_demand_trains(demand, demand_returns, demand_rebalancing, rail_vehicles, config) if config.dispatch_scheduler is None: config.dispatch_scheduler = schedulers.generate_dispatch_details dispatch_schedule = config.dispatch_scheduler(demand, rail_vehicles, simulation_days, config) diff --git a/python/altrios/train_planner/planner_config.py b/python/altrios/train_planner/planner_config.py index e851ae4c..20adcd21 100644 --- a/python/altrios/train_planner/planner_config.py +++ b/python/altrios/train_planner/planner_config.py @@ -1,5 +1,4 @@ from __future__ import annotations -from altrios.train_planner import data_prep import polars as pl import pandas as pd from typing import Dict, Callable, Optional @@ -101,8 +100,4 @@ class TrainPlannerConfig: }).transpose().reset_index(names='Refueler_Type')) drag_coeff_function: Optional[Callable]= None dispatch_scheduler: Optional[Callable] = None - return_demand_generators: Dict = field(default_factory = lambda: { - 'Unit': data_prep.generate_return_demand_unit, - 'Manifest': data_prep.generate_return_demand_manifest, - 'Intermodal': data_prep.generate_return_demand_intermodal - }) + return_demand_generators: Optional[Dict] = None #default defined in train_demand_generators.py diff --git a/python/altrios/train_planner/demand_generators.py b/python/altrios/train_planner/train_demand_generators.py similarity index 98% rename from python/altrios/train_planner/demand_generators.py rename to python/altrios/train_planner/train_demand_generators.py index ed221210..6cb04624 100644 --- a/python/altrios/train_planner/demand_generators.py +++ b/python/altrios/train_planner/train_demand_generators.py @@ -1,4 +1,4 @@ -from typing import Union, List +from typing import Union, List, Dict, Callable import polars as pl import polars.selectors as cs import pandas as pd @@ -7,6 +7,13 @@ from altrios import utilities from altrios.train_planner import planner_config +def get_default_return_demand_generators() -> Dict[str, Callable]: + return { + 'Unit': generate_return_demand_unit, + 'Manifest': generate_return_demand_manifest, + 'Intermodal': generate_return_demand_intermodal + } + def initialize_reverse_empties(demand: Union[pl.LazyFrame, pl.DataFrame]) -> Union[pl.LazyFrame, pl.DataFrame]: """ Swap `Origin` and `Destination` and append `_Empty` to `Train_Type`. @@ -215,8 +222,6 @@ def balance_trains( return balance_trains(origin_manifest_demand) - - def generate_demand_trains( demand: pl.DataFrame, demand_returns: pl.DataFrame, From c909094f81abec2d28527832ae35fe2a89052c5e Mon Sep 17 00:00:00 2001 From: "Bruchon, Matthew" Date: Sat, 18 Jan 2025 15:57:43 -0500 Subject: [PATCH 35/50] Train planner config refactoring --- python/altrios/altrios_pyo3.pyi | 1 + .../rolling_stock/Intermodal_Empty.yaml | 1 + .../rolling_stock/Intermodal_Loaded.yaml | 1 + .../rolling_stock/Manifest_Empty.yaml | 1 + .../rolling_stock/Manifest_Loaded.yaml | 1 + .../resources/rolling_stock/Unit_Empty.yaml | 1 + .../resources/rolling_stock/Unit_Loaded.yaml | 1 + python/altrios/train_planner/data_prep.py | 39 ++++- python/altrios/train_planner/planner.py | 45 +++--- .../altrios/train_planner/planner_config.py | 5 +- python/altrios/train_planner/schedulers.py | 146 +++++++++--------- .../train_planner/train_demand_generators.py | 48 +++--- rust/altrios-core/src/train/rail_vehicle.rs | 4 + 13 files changed, 175 insertions(+), 119 deletions(-) diff --git a/python/altrios/altrios_pyo3.pyi b/python/altrios/altrios_pyo3.pyi index 2d0b17fa..063b84fc 100644 --- a/python/altrios/altrios_pyo3.pyi +++ b/python/altrios/altrios_pyo3.pyi @@ -933,6 +933,7 @@ class RailVehicle(SerdeAPI): braking_ratio_empty: float braking_ratio_loaded: float car_type: str + freight_type: str davis_b_seconds_per_meter: float cd_area_empty_square_meters: float cd_area_loaded_square_meters: float diff --git a/python/altrios/resources/rolling_stock/Intermodal_Empty.yaml b/python/altrios/resources/rolling_stock/Intermodal_Empty.yaml index 2b140c0c..81266eb6 100644 --- a/python/altrios/resources/rolling_stock/Intermodal_Empty.yaml +++ b/python/altrios/resources/rolling_stock/Intermodal_Empty.yaml @@ -1,5 +1,6 @@ --- car_type: Intermodal_Empty +freight_type: Intermodal length: 18.0 axle_count: 4 brake_count: 1 diff --git a/python/altrios/resources/rolling_stock/Intermodal_Loaded.yaml b/python/altrios/resources/rolling_stock/Intermodal_Loaded.yaml index 0054d89a..4fcff84b 100644 --- a/python/altrios/resources/rolling_stock/Intermodal_Loaded.yaml +++ b/python/altrios/resources/rolling_stock/Intermodal_Loaded.yaml @@ -1,5 +1,6 @@ --- car_type: Intermodal_Loaded +freight_type: Intermodal length: 18.0 axle_count: 4 brake_count: 1 diff --git a/python/altrios/resources/rolling_stock/Manifest_Empty.yaml b/python/altrios/resources/rolling_stock/Manifest_Empty.yaml index a2c54e73..bba1ed5a 100644 --- a/python/altrios/resources/rolling_stock/Manifest_Empty.yaml +++ b/python/altrios/resources/rolling_stock/Manifest_Empty.yaml @@ -1,5 +1,6 @@ --- car_type: Manifest_Empty +freight_type: Manifest length: 18.0 axle_count: 4 brake_count: 1 diff --git a/python/altrios/resources/rolling_stock/Manifest_Loaded.yaml b/python/altrios/resources/rolling_stock/Manifest_Loaded.yaml index 80140aee..552cb398 100644 --- a/python/altrios/resources/rolling_stock/Manifest_Loaded.yaml +++ b/python/altrios/resources/rolling_stock/Manifest_Loaded.yaml @@ -1,5 +1,6 @@ --- car_type: Manifest_Loaded +freight_type: Manifest length: 18.0 axle_count: 4 brake_count: 1 diff --git a/python/altrios/resources/rolling_stock/Unit_Empty.yaml b/python/altrios/resources/rolling_stock/Unit_Empty.yaml index caa39153..b52971a3 100644 --- a/python/altrios/resources/rolling_stock/Unit_Empty.yaml +++ b/python/altrios/resources/rolling_stock/Unit_Empty.yaml @@ -1,5 +1,6 @@ --- car_type: Unit_Empty +freight_type: Unit length: 10.7 axle_count: 4 brake_count: 1 diff --git a/python/altrios/resources/rolling_stock/Unit_Loaded.yaml b/python/altrios/resources/rolling_stock/Unit_Loaded.yaml index 584c244f..6bae35d6 100644 --- a/python/altrios/resources/rolling_stock/Unit_Loaded.yaml +++ b/python/altrios/resources/rolling_stock/Unit_Loaded.yaml @@ -1,5 +1,6 @@ --- car_type: Unit_Loaded +freight_type: Unit length: 10.7 axle_count: 4 brake_count: 1 diff --git a/python/altrios/train_planner/data_prep.py b/python/altrios/train_planner/data_prep.py index 334135cd..06b1d0f4 100644 --- a/python/altrios/train_planner/data_prep.py +++ b/python/altrios/train_planner/data_prep.py @@ -1,4 +1,4 @@ -from typing import Union, List, Tuple +from typing import Union, List, Tuple, Dict from pathlib import Path import polars as pl import pandas as pd @@ -124,17 +124,18 @@ def build_locopool( config.loco_info = append_loco_info(config.loco_info) loco_types = list(config.loco_info.loc[:,'Locomotive_Type']) demand, node_list = load_freight_demand(demand_file) + #TODO: handle different train types (or mixed train types?) num_nodes = len(node_list) if locomotives_per_node is None: num_ods = demand.height cars_per_od = demand.get_column("Number_of_Cars").mean() if config.single_train_mode: - initial_size = math.ceil(cars_per_od / config.cars_per_locomotive["Default"]) + initial_size = math.ceil(cars_per_od / min(config.cars_per_locomotive.values())) rows = initial_size else: num_destinations_per_node = num_ods*1.0 / num_nodes*1.0 - initial_size = math.ceil((cars_per_od / config.cars_per_locomotive["Default"]) * + initial_size = math.ceil((cars_per_od / min(config.cars_per_locomotive.values())) * num_destinations_per_node) # number of locomotives per node rows = initial_size * num_nodes # number of locomotives in total else: @@ -302,4 +303,34 @@ def append_charging_guidelines( .fill_null(0) .alias("Battery_Headroom_J")) .with_columns(pl.max_horizontal([pl.col('SOC_Max_J')-pl.col('Battery_Headroom_J'), pl.col('SOC_Min_J')]).alias("SOC_J"))) - return refuelers, loco_pool \ No newline at end of file + return refuelers, loco_pool + +def configure_rail_vehicles( + single_train_dispatch: Dict, + available_rail_vehicles: List[alt.RailVehicle], + freight_type_to_car_type: Dict +) -> (List[alt.RailVehicle], Dict[str, int]): + freight_types = [] + n_cars_by_type = {} + this_train_type = single_train_dispatch['Train_Type'] + if single_train_dispatch['Cars_Loaded'] > 0: + freight_type = f'{this_train_type}_Loaded' + freight_types.append(freight_type) + car_type = None + if freight_type in freight_type_to_car_type: + car_type = freight_type_to_car_type[freight_type] + else: + assert(f'Rail vehicle car type not found for freight type {freight_type}.') + n_cars_by_type[car_type] = int(single_train_dispatch['Cars_Loaded']) + if single_train_dispatch['Cars_Empty'] > 0: + freight_type = f'{this_train_type}_Empty' + freight_types.append(freight_type) + car_type = None + if freight_type in freight_type_to_car_type: + car_type = freight_type_to_car_type[freight_type] + else: + assert(f'Rail vehicle car type not found for freight type {freight_type}.') + n_cars_by_type[car_type] = int(single_train_dispatch['Cars_Empty']) + + rv_to_use = [vehicle for vehicle in available_rail_vehicles if vehicle.freight_type in freight_types] + return rv_to_use, n_cars_by_type diff --git a/python/altrios/train_planner/planner.py b/python/altrios/train_planner/planner.py index 814d0660..c88644fd 100644 --- a/python/altrios/train_planner/planner.py +++ b/python/altrios/train_planner/planner.py @@ -95,19 +95,19 @@ def dispatch( message = "" if config.cars_per_locomotive_fixed: # Get as many available locomotives as are needed (in order of loco_pool) - enough_locomotives = loco_pool.select( - (pl.lit(1.0) * pl.lit(candidates)).cumsum() >= total_cars).to_series() - if not enough_locomotives.any(): + enough = loco_pool.select( + (pl.lit(1.0) * pl.lit(candidates)).cum_sum() >= total_cars).to_series() + if not enough.any(): message = f"""Locomotives needed ({total_cars}) at {origin} at hour {dispatch_time} is more than the available locomotives ({candidates.sum()}). Count of locomotives servicing, refueling, or queueing at {origin} are:""" else: # Get running sum, including first diesel, of hp of the candidates (in order of loco_pool) - enough_hp = loco_pool.select(( + enough = loco_pool.select(( ( (pl.col("HP") - (pl.col("Loco_Mass_Tons") * pl.lit(hp_per_ton))) * pl.lit(candidates) ).cum_sum() + pl.lit(diesel_to_require_hp)) >= hp_required).to_series() - if not enough_hp.any(): + if not enough.any(): available_hp = loco_pool.select( ( (pl.col("HP") - (pl.col("Loco_Mass_Tons") * pl.lit(hp_per_ton))) * pl.lit(candidates) @@ -116,7 +116,7 @@ def dispatch( is more than the available horsepower ({available_hp}). Count of locomotives servicing, refueling, or queueing at {origin} are:""" - if not enough_hp.any(): + if not enough.any(): # Hold the train until enough diesels are present (future development) waiting_counts = (loco_pool .filter( @@ -132,7 +132,7 @@ def dispatch( # Hold the train until enough locomotives are present (future development) raise ValueError(message) - last_row_to_use = enough_hp.eq(True).cum_sum().eq(1).arg_max() + last_row_to_use = enough.eq(True).cum_sum().eq(1).arg_max() # Set false all the locomotives that would add unnecessary hp selected[np.arange(last_row_to_use+1, len(selected))] = False @@ -317,6 +317,14 @@ def run_train_planner( config.return_demand_generators = train_demand_generators.get_default_return_demand_generators() refuelers, loco_pool = data_prep.append_charging_guidelines(refuelers, loco_pool, demand, network_charging_guidelines) + + freight_type_to_car_type = {} + for rv in rail_vehicles: + if rv.freight_type in freight_type_to_car_type: + assert(f'More than one rail vehicle car type for freight type {rv.freight_type}') + else: + freight_type_to_car_type[rv.freight_type] = rv.car_type + if config.single_train_mode: demand = train_demand_generators.generate_demand_trains(demand, demand_returns = pl.DataFrame(), @@ -333,7 +341,7 @@ def run_train_planner( demand_rebalancing = pl.DataFrame() if demand.filter(pl.col("Train_Type").str.contains("Manifest")).height > 0: demand_rebalancing = train_demand_generators.generate_manifest_rebalancing_demand(demand, node_list, config) - demand = train_demand_generators.generate_demand_trains(demand, demand_returns, demand_rebalancing, rail_vehicles, config) + demand = train_demand_generators.generate_demand_trains(demand, demand_returns, demand_rebalancing, rail_vehicles, freight_type_to_car_type, config) if config.dispatch_scheduler is None: config.dispatch_scheduler = schedulers.generate_dispatch_details dispatch_schedule = config.dispatch_scheduler(demand, rail_vehicles, simulation_days, config) @@ -389,24 +397,15 @@ def run_train_planner( if config.drag_coeff_function is not None: cd_area_vec = config.drag_coeff_function( - this_train['Number_of_Cars'], - gap_size = defaults.DEFAULT_GAP_SIZE + int(this_train['Number_of_Cars']) ) else: cd_area_vec = None - train_types = [] - n_cars_by_type = {} - this_train_type = this_train['Train_Type'] - if this_train['Cars_Loaded'] > 0: - train_types.append(f'{this_train_type}_Loaded') - n_cars_by_type[f'{this_train_type}_Loaded'] = int(this_train['Cars_Loaded']) - if this_train['Cars_Empty'] > 0: - train_types.append(f'{this_train_type}_Empty') - n_cars_by_type[f'{this_train_type}_Empty'] = int(this_train['Cars_Empty']) + rv_to_use, n_cars_by_type = data_prep.configure_rail_vehicles(this_train, rail_vehicles, freight_type_to_car_type) train_config = alt.TrainConfig( - rail_vehicles = [vehicle for vehicle in rail_vehicles if vehicle.car_type in train_types], + rail_vehicles = rv_to_use, n_cars_by_type = n_cars_by_type, train_type = train_type, cd_area_vec = cd_area_vec @@ -558,9 +557,9 @@ def run_train_planner( str(alt.resources_root() / "networks/Taconite-NoBalloon.yaml") ) config = planner_config.TrainPlannerConfig() - loco_pool = build_locopool(config, defaults.DEMAND_FILE) - demand, node_list = demand_loader(defaults.DEMAND_FILE) - refuelers = build_refuelers( + loco_pool = data_prep.build_locopool(config, defaults.DEMAND_FILE) + demand, node_list = data_prep.load_freight_demand(defaults.DEMAND_FILE) + refuelers = data_prep.build_refuelers( node_list, loco_pool, config.refueler_info, diff --git a/python/altrios/train_planner/planner_config.py b/python/altrios/train_planner/planner_config.py index 20adcd21..72db6d03 100644 --- a/python/altrios/train_planner/planner_config.py +++ b/python/altrios/train_planner/planner_config.py @@ -51,10 +51,7 @@ class TrainPlannerConfig: "Default": { "Unit": 2.0, "Manifest": 1.5, - "Intermodal": 2.0 + 2.0, - "Unit_Empty": 2.0, - "Manifest_Empty": 1.5, - "Intermodal_Empty": 2.0 + 2.0, + "Intermodal": 4.0 } }) dispatch_scaling_dict: Dict = field(default_factory = lambda: { diff --git a/python/altrios/train_planner/schedulers.py b/python/altrios/train_planner/schedulers.py index 5df66147..d267f89e 100644 --- a/python/altrios/train_planner/schedulers.py +++ b/python/altrios/train_planner/schedulers.py @@ -1,5 +1,4 @@ -import math -from typing import Dict, List +from typing import List, Union from collections import defaultdict import polars as pl import altrios as alt @@ -306,59 +305,23 @@ def find_minimum_waiting_time( print(f"empty_return is {empty_return}") return dispatch_times -# Define the main function to generate demand trains with the updated rule -def generate_trains( - demand_hourly: pl.DataFrame, - target_num_cars_per_train:int -) -> pl.DataFrame: - grouped_data = (demand_hourly +def formatScheduleColumns(df: Union[pl.DataFrame, pl.LazyFrame]) -> Union[pl.DataFrame, pl.LazyFrame]: + return (df .with_columns( - (pl.col("Origin") + "-" + pl.col("Destination")).alias("OD_Pair") + (pl.col("Tons_Per_Car_Loaded").mul("Number_of_Cars_Loaded") + pl.col("Tons_Per_Car_Empty").mul("Number_of_Cars_Empty")).alias("Tons_Per_Train"), + (pl.col("HP_Required_Per_Ton_Loaded").mul("Tons_Per_Car_Loaded").mul("Number_of_Cars_Loaded") + + pl.col("HP_Required_Per_Ton_Empty").mul("Tons_Per_Car_Empty").mul("Number_of_Cars_Empty") + ).alias("HP_Required") ) - .group_by("OD_Pair") - .agg( - pl.col("Number_of_Containers").sum().alias("Total_Containers"), - pl.col("Number_of_Containers").sum().mod(target_num_cars_per_train).alias("Remaining_Containers") - ) - .with_columns( - pl.col("Total_Containers").truediv(target_num_cars_per_train).round().add(pl.col("Remaining_Containers").gt(0)).alias("Max_Min_Cars") + .select("Hour", "Origin", "Destination", "Train_Type", + "Number_of_Cars", "Number_of_Cars_Loaded", "Number_of_Cars_Empty", + "Tons_Per_Train", "HP_Required" ) + .rename({"Number_of_Cars_Loaded": "Cars_Loaded", + "Number_of_Cars_Empty": "Cars_Empty"}) + .sort(["Hour","Origin","Destination","Train_Type"]) ) - # Prepare a list to collect the results for all OD pairs - all_dispatch_data = [] - # Step 4: Loop through each unique OD pair to calculate dispatch data - for row in grouped_data.iter_rows(named=True): - od_pair = row['OD_Pair'] # This is the "OD_Pair" string like "Origin-Destination" - total_containers = row['Total_Containers'] # This is the "Total_Containers" value - - # Filter containers list for the specific OD pair - containers = demand_hourly.filter(pl.col("OD_Pair") == od_pair).select("Number_of_Containers").to_series().to_list() - - # Retrieve the max min_num_cars for this OD pair - max_min_cars = row['Max_Min_Cars'] - - # Calculate dispatch data for the current OD pair with the updated rule - dispatch_data = calculate_dispatch_data(total_containers, target_num_cars_per_train, od_pair, containers, max_min_cars) - - # Add the OD pair label to each entry in the dispatch data - dispatch_data_df = pl.DataFrame(dispatch_data, strict=False) - dispatch_data_df = dispatch_data_df.with_columns(pl.lit(od_pair).alias("OD_Pair")) - - # Ensure the "Border" column exists and is cast to Float64 - if "Border" in dispatch_data_df.columns: - dispatch_data_df = dispatch_data_df.with_columns( - pl.col("Border").cast(pl.Float64) - ) - - # Append the result to the list - all_dispatch_data.append(dispatch_data_df) - - # Combine all dispatch data into a single DataFrame - final_dispatch_df = pl.concat(all_dispatch_data, how="diagonal_relaxed") - - return final_dispatch_df - def calculate_dispatches_deterministic_hourly( demand: pl.DataFrame, rail_vehicles: List[alt.RailVehicle], @@ -377,6 +340,59 @@ def calculate_dispatches_deterministic_hourly( ---------- Updated demand `DataFrame` or `LazyFrame` representing dispatches, each defined with an origin, destination, train type, number of (loaded and empty) cars, tonnage, and HP per ton requirement. """ + # Define the main function to generate demand trains with the updated rule + def generate_trains( + demand_hourly: pl.DataFrame, + target_num_cars_per_train:int + ) -> pl.DataFrame: + grouped_data = (demand_hourly + .with_columns( + (pl.col("Origin") + "-" + pl.col("Destination")).alias("OD_Pair") + ) + .group_by("OD_Pair") + .agg( + pl.col("Number_of_Containers").sum().alias("Total_Containers"), + pl.col("Number_of_Containers").sum().mod(target_num_cars_per_train).alias("Remaining_Containers") + ) + .with_columns( + pl.col("Total_Containers").truediv(target_num_cars_per_train).round().add(pl.col("Remaining_Containers").gt(0)).alias("Max_Min_Cars") + ) + ) + + # Prepare a list to collect the results for all OD pairs + all_dispatch_data = [] + # Step 4: Loop through each unique OD pair to calculate dispatch data + for row in grouped_data.iter_rows(named=True): + od_pair = row['OD_Pair'] # This is the "OD_Pair" string like "Origin-Destination" + total_containers = row['Total_Containers'] # This is the "Total_Containers" value + + # Filter containers list for the specific OD pair + containers = demand_hourly.filter(pl.col("OD_Pair") == od_pair).select("Number_of_Containers").to_series().to_list() + + # Retrieve the max min_num_cars for this OD pair + max_min_cars = row['Max_Min_Cars'] + + # Calculate dispatch data for the current OD pair with the updated rule + dispatch_data = calculate_dispatch_data(total_containers, target_num_cars_per_train, od_pair, containers, max_min_cars) + + # Add the OD pair label to each entry in the dispatch data + dispatch_data_df = pl.DataFrame(dispatch_data, strict=False) + dispatch_data_df = dispatch_data_df.with_columns(pl.lit(od_pair).alias("OD_Pair")) + + # Ensure the "Border" column exists and is cast to Float64 + if "Border" in dispatch_data_df.columns: + dispatch_data_df = dispatch_data_df.with_columns( + pl.col("Border").cast(pl.Float64) + ) + + # Append the result to the list + all_dispatch_data.append(dispatch_data_df) + + # Combine all dispatch data into a single DataFrame + final_dispatch_df = pl.concat(all_dispatch_data, how="diagonal_relaxed") + + return final_dispatch_df + target_num_cars_per_train = config.target_num_cars_per_train dispatch_df = generate_trains(demand,target_num_cars_per_train) od_border_time = [] @@ -397,7 +413,7 @@ def calculate_dispatches_deterministic_hourly( border_time_list=border_time_list, target_num_cars_per_train=config.target_num_cars_per_train['Intermodal'] #TODO make this flexible ) - return schedule + return schedule.pipe(formatScheduleColumns) def generate_dispatch_details( demand: pl.DataFrame, @@ -421,25 +437,23 @@ def generate_dispatch_details( in hours """ hours = simulation_days * 24 - grouping_vars = ["Origin", "Destination", "Train_Type"] - schedule = (demand + return (demand .select(pl.exclude("Number_of_Trains").repeat_by("Number_of_Trains").explode()) .pipe(utilities.allocateIntegerEvenly, target = "Number_of_Cars_Loaded", grouping_vars = grouping_vars) .drop("Percent_Within_Group_Cumulative") .pipe(utilities.allocateIntegerEvenly, target = "Number_of_Cars_Empty", grouping_vars = grouping_vars) + .drop("Percent_Within_Group_Cumulative") .group_by(pl.exclude("Number_of_Cars_Empty", "Number_of_Cars_Loaded")) .agg(pl.col("Number_of_Cars_Empty", "Number_of_Cars_Loaded")) .with_columns(pl.col("Number_of_Cars_Loaded").list.sort(descending=True), pl.col("Number_of_Cars_Empty").list.sort(descending=False)) .explode("Number_of_Cars_Empty", "Number_of_Cars_Loaded") - .with_columns( - (pl.col("Tons_Per_Car_Loaded").mul("Number_of_Cars_Loaded") + pl.col("Tons_Per_Car_Empty").mul("Number_of_Cars_Empty")).alias("Tons_Per_Train"), - (pl.col("HP_Required_Per_Ton_Loaded").mul("Tons_Per_Car_Loaded").mul("Number_of_Cars_Loaded") + - pl.col("HP_Required_Per_Ton_Empty").mul("Tons_Per_Car_Empty").mul("Number_of_Cars_Empty") - ).alias("HP_Required") - ) - .sort("Origin", "Destination", "Percent_Within_Group_Cumulative", "Train_Type") + .with_columns((pl.col("Number_of_Cars_Empty") + pl.col("Number_of_Cars_Loaded")).alias("Number_of_Cars")) + #TODO: space out trains with slightly more vs less demand, instead of ordering randomly + .with_columns(pl.int_range(pl.len()).shuffle().alias("random_int")) + .sort("Origin", "Destination", "Train_Type", "random_int") + .drop("random_int") .with_columns( (hours * 1.0 / pl.len().over("Origin", "Destination")).alias("Interval") ) @@ -447,13 +461,5 @@ def generate_dispatch_details( ((pl.col("Interval").cum_count().over(["Origin","Destination"])) \ * pl.col("Interval")).alias("Hour") ) - .select("Hour", "Origin", "Destination", "Train_Type", - "Number_of_Cars", "Number_of_Cars_Loaded", "Number_of_Cars_Empty", - "Tons_Per_Train", "HP_Required" - ) - .rename({"Number_of_Cars_Loaded": "Cars_Loaded", - "Number_of_Cars_Empty": "Cars_Empty"}) - .sort(["Hour","Origin","Destination","Train_Type"]) - ) - - return schedule \ No newline at end of file + .pipe(formatScheduleColumns) + ) \ No newline at end of file diff --git a/python/altrios/train_planner/train_demand_generators.py b/python/altrios/train_planner/train_demand_generators.py index 6cb04624..ee0178e1 100644 --- a/python/altrios/train_planner/train_demand_generators.py +++ b/python/altrios/train_planner/train_demand_generators.py @@ -78,14 +78,13 @@ def generate_return_demand_intermodal(demand_subset: Union[pl.LazyFrame, pl.Data pl.concat_str(pl.min_horizontal("Origin", "Destination"), pl.lit("_"), pl.max_horizontal("Origin", "Destination")).alias("OD") ) .with_columns( - pl.col("Number_of_Cars", "Number_of_Containers").range().over("OD").name.suffix("_Return") + pl.col("Number_of_Cars").range().over("OD").name.suffix("_Return") ) .filter( - pl.col("Number_of_Containers") == pl.col("Number_of_Containers").max().over("OD") + pl.col("Number_of_Cars") == pl.col("Number_of_Cars").max().over("OD") ) - .drop("OD", "Number_of_Containers", "Number_of_Cars") - .rename({"Number_of_Containers_Return": "Number_of_Containers", - "Number_of_Cars_Return": "Number_of_Cars"}) + .drop("OD", "Number_of_Cars") + .rename({"Number_of_Cars_Return": "Number_of_Cars"}) ) def generate_return_demand( @@ -117,7 +116,7 @@ def generate_return_demand( print(f'Return demand generator not implemented for train type: {train_type_label}') demand_return = (pl.concat(return_demand, how="diagonal_relaxed") - .filter(pl.col("Number_of_Cars") + pl.col("Number_of_Containers") > 0) + .filter(pl.col("Number_of_Cars") > 0) ) return demand_return @@ -227,6 +226,7 @@ def generate_demand_trains( demand_returns: pl.DataFrame, demand_rebalancing: pl.DataFrame, rail_vehicles: List[alt.RailVehicle], + freight_type_to_car_type: Dict[str, str], config: planner_config.TrainPlannerConfig ) -> pl.DataFrame: """ @@ -279,27 +279,39 @@ def get_kg_empty(veh): def get_kg(veh): return veh.mass_static_base_kilograms + veh.mass_freight_kilograms + veh.axle_count * veh.mass_rot_per_axle_kilograms - ton_per_car = ( - pl.DataFrame({"Train_Type": pl.Series([rv.car_type for rv in rail_vehicles]).str.strip_suffix("_Loaded"), - "KG_Empty": [get_kg_empty(rv) for rv in rail_vehicles], - "KG": [get_kg(rv) for rv in rail_vehicles]}) - .with_columns(pl.when(pl.col("Train_Type").str.contains("_Empty")) - .then(pl.col("KG_Empty") / utilities.KG_PER_TON) - .otherwise(pl.col("KG") / utilities.KG_PER_TON) - .alias("Tons_Per_Car")) - .drop(["KG_Empty","KG"]) + tons_per_car = ( + pl.DataFrame({"Car_Type": pl.Series([rv.car_type for rv in rail_vehicles]), + "KG": [get_kg(rv) for rv in rail_vehicles], + "KG_Empty": [get_kg_empty(rv) for rv in rail_vehicles] + }) + .with_columns( + pl.when(pl.col("Car_Type").str.to_lowercase().str.contains("_empty")) + .then(pl.col("KG_Empty") / utilities.KG_PER_TON) + .otherwise(pl.col("KG") / utilities.KG_PER_TON) + .alias("Tons_Per_Car"), + pl.col("Car_Type").str.strip_suffix("_Loaded")) + .drop(["KG_Empty","KG"]) ) demand = (pl.concat([demand, demand_returns, demand_rebalancing], how="diagonal_relaxed") .group_by("Origin","Destination", "Train_Type") .agg(pl.col("Number_of_Cars").sum()) .filter(pl.col("Number_of_Cars") > 0) - .join(ton_per_car, on="Train_Type", how="left") + .with_columns( + pl.when(pl.col("Train_Type").str.contains(pl.lit("_Empty"))) + .then(pl.col("Train_Type")) + .otherwise(pl.concat_str(pl.col("Train_Type").str.strip_suffix("_Loaded"), pl.lit("_Loaded"))) + .replace_strict(freight_type_to_car_type) + .alias("Car_Type") + ) + .join(tons_per_car, how="left", on="Car_Type") # Merge on OD-specific hp_per_ton if the user specified any - .join(hp_per_ton.drop("O_D"), on=["Origin","Destination","Train_Type"], how="left") + .join(hp_per_ton.drop("O_D"), + on=[pl.col("Origin"), pl.col("Destination"), pl.col("Train_Type").str.strip_suffix("_Empty").str.strip_suffix("_Loaded")], + how="left") # Second, merge on defaults per train type .join(hp_per_ton.filter((pl.col("O_D") =="Default")).drop(["O_D","Origin","Destination"]), - on=["Train_Type"], + on=[pl.col("Train_Type").str.strip_suffix("_Empty").str.strip_suffix("_Loaded")], how="left", suffix="_Default") # Merge on cars_per_train_min if the user specified any diff --git a/rust/altrios-core/src/train/rail_vehicle.rs b/rust/altrios-core/src/train/rail_vehicle.rs index 5971db4b..dd29fe34 100644 --- a/rust/altrios-core/src/train/rail_vehicle.rs +++ b/rust/altrios-core/src/train/rail_vehicle.rs @@ -8,6 +8,10 @@ pub struct RailVehicle { #[serde(alias = "Car Type")] pub car_type: String, + /// Identifier for the freight type carried by this car type (e.g., Intermodal). + #[serde(alias = "Freight Type")] + pub freight_type: String, + /// Railcar length (between pulling-faces) #[serde(alias = "Length (m)")] pub length: si::Length, From 5027670b9f34de3eee1035ed535018d5d90c2ef8 Mon Sep 17 00:00:00 2001 From: "Bruchon, Matthew" Date: Sat, 18 Jan 2025 17:28:54 -0500 Subject: [PATCH 36/50] refactoring --- python/altrios/metric_calculator.py | 31 ++++++++++-- .../rolling_stock/Intermodal_Empty.yaml | 2 +- .../rolling_stock/Intermodal_Loaded.yaml | 2 +- .../rolling_stock/Manifest_Empty.yaml | 2 +- .../rolling_stock/Manifest_Loaded.yaml | 2 +- .../resources/rolling_stock/Unit_Empty.yaml | 2 +- .../resources/rolling_stock/Unit_Loaded.yaml | 2 +- python/altrios/train_planner/planner.py | 6 ++- .../altrios/train_planner/planner_config.py | 2 +- python/altrios/train_planner/schedulers.py | 48 ++++++++++++------- 10 files changed, 72 insertions(+), 27 deletions(-) diff --git a/python/altrios/metric_calculator.py b/python/altrios/metric_calculator.py index efbe81f0..cd70504c 100644 --- a/python/altrios/metric_calculator.py +++ b/python/altrios/metric_calculator.py @@ -8,6 +8,7 @@ import altrios as alt from altrios import utilities, defaults +from altrios.train_planner import planner_config MetricType = pl.DataFrame @@ -73,6 +74,7 @@ class ScenarioInfo: emissions_factors: pl.DataFrame = None nodal_energy_prices: pl.DataFrame = None count_unused_locomotives: bool = False + train_planner_config: planner_config = None def metric( name: str, @@ -274,7 +276,7 @@ def calculate_energy_per_freight(info: ScenarioInfo, ---------- DataFrame of energy usage per freight moved (metric name, units, value, and scenario year) """ - if "per car-mile" not in units: + if "per car-mile" not in units and "per container-mile" not in units: print(f"Units of {units} not supported for energy-per-freight calculation.") return metric("Energy_Per_Freight_Moved", units, None) @@ -290,7 +292,10 @@ def calculate_energy_per_freight(info: ScenarioInfo, electricity_mj = calculate_electricity_use(info, units="MJ") total_mj = value_from_metrics(diesel_mj) + value_from_metrics(electricity_mj, subset="All") total_energy = total_mj * conversion_from_megajoule - freight_moved = calculate_freight_moved(info, units="car-miles") + if "per car-mile" in units: + freight_moved = calculate_freight_moved(info, units="car-miles") + elif "per container-mile" in units: + freight_moved = calculate_freight_moved(info, units="container-miles") freight_val = value_from_metrics(freight_moved) return metrics_from_list([ diesel_mj, @@ -455,7 +460,27 @@ def calculate_freight_moved( return metric("Freight_Moved", units, info.sims.get_car_kilometers(annualize=info.annualize) * conversion_from_km, year=info.scenario_year) elif units == "cars": return metric("Freight_Moved", units, info.sims.get_cars_moved(annualize=info.annualize), year=info.scenario_year) - elif units == "detailed": + elif units in ["container-km", "container-miles"]: + assert info.consist_plan.filter(~pl.col("Train_Type").str.contains("Intermodal")).height == 0, "Can only count containers if the consist plan is all Intermodal" + car_distance = info.sims.get_car_kilometers(annualize=info.annualize) * conversion_from_km + + if info.train_planner_config.stack_type == "double": + containers_per_car = 2.0 + elif info.train_planner_config.stack_type == "single": + containers_per_car = 1.0 + return metric("Freight_Moved", units, car_distance * containers_per_car, year=info.scenario_year) + + elif units == "containers": + container_counts = info.consist_plan.select("Train_ID", "Containers_Loaded", "Containers_Empty").unique().drop("Train_ID").sum() + if info.annualize: + annualizer = 365.25 / info.simulation_days + else: + annualizer = 1.0 + return metrics_from_list([ + metric("Freight_Moved", units, container_counts.get_column("Containers_Loaded").item() * annualizer, "Loaded", year=info.scenario_year), + metric("Freight_Moved", units, container_counts.get_column("Containers_Empty").item() * annualizer, "Loaded", year=info.scenario_year), + ]) + elif units == "detailed_car_counts": kilometers = (pl.DataFrame(data = {"car-km": [sim.get_kilometers(annualize=info.annualize) for sim in info.sims.tolist()]}) .with_row_index("idx") .with_columns( diff --git a/python/altrios/resources/rolling_stock/Intermodal_Empty.yaml b/python/altrios/resources/rolling_stock/Intermodal_Empty.yaml index 81266eb6..f257a251 100644 --- a/python/altrios/resources/rolling_stock/Intermodal_Empty.yaml +++ b/python/altrios/resources/rolling_stock/Intermodal_Empty.yaml @@ -1,6 +1,6 @@ --- car_type: Intermodal_Empty -freight_type: Intermodal +freight_type: Intermodal_Empty length: 18.0 axle_count: 4 brake_count: 1 diff --git a/python/altrios/resources/rolling_stock/Intermodal_Loaded.yaml b/python/altrios/resources/rolling_stock/Intermodal_Loaded.yaml index 4fcff84b..c0d0921f 100644 --- a/python/altrios/resources/rolling_stock/Intermodal_Loaded.yaml +++ b/python/altrios/resources/rolling_stock/Intermodal_Loaded.yaml @@ -1,6 +1,6 @@ --- car_type: Intermodal_Loaded -freight_type: Intermodal +freight_type: Intermodal_Loaded length: 18.0 axle_count: 4 brake_count: 1 diff --git a/python/altrios/resources/rolling_stock/Manifest_Empty.yaml b/python/altrios/resources/rolling_stock/Manifest_Empty.yaml index bba1ed5a..a304a398 100644 --- a/python/altrios/resources/rolling_stock/Manifest_Empty.yaml +++ b/python/altrios/resources/rolling_stock/Manifest_Empty.yaml @@ -1,6 +1,6 @@ --- car_type: Manifest_Empty -freight_type: Manifest +freight_type: Manifest_Empty length: 18.0 axle_count: 4 brake_count: 1 diff --git a/python/altrios/resources/rolling_stock/Manifest_Loaded.yaml b/python/altrios/resources/rolling_stock/Manifest_Loaded.yaml index 552cb398..8e398ba4 100644 --- a/python/altrios/resources/rolling_stock/Manifest_Loaded.yaml +++ b/python/altrios/resources/rolling_stock/Manifest_Loaded.yaml @@ -1,6 +1,6 @@ --- car_type: Manifest_Loaded -freight_type: Manifest +freight_type: Manifest_Loaded length: 18.0 axle_count: 4 brake_count: 1 diff --git a/python/altrios/resources/rolling_stock/Unit_Empty.yaml b/python/altrios/resources/rolling_stock/Unit_Empty.yaml index b52971a3..33ce94dd 100644 --- a/python/altrios/resources/rolling_stock/Unit_Empty.yaml +++ b/python/altrios/resources/rolling_stock/Unit_Empty.yaml @@ -1,6 +1,6 @@ --- car_type: Unit_Empty -freight_type: Unit +freight_type: Unit_Empty length: 10.7 axle_count: 4 brake_count: 1 diff --git a/python/altrios/resources/rolling_stock/Unit_Loaded.yaml b/python/altrios/resources/rolling_stock/Unit_Loaded.yaml index 6bae35d6..cb23f308 100644 --- a/python/altrios/resources/rolling_stock/Unit_Loaded.yaml +++ b/python/altrios/resources/rolling_stock/Unit_Loaded.yaml @@ -1,6 +1,6 @@ --- car_type: Unit_Loaded -freight_type: Unit +freight_type: Unit_Loaded length: 10.7 axle_count: 4 brake_count: 1 diff --git a/python/altrios/train_planner/planner.py b/python/altrios/train_planner/planner.py index c88644fd..a7da1cb1 100644 --- a/python/altrios/train_planner/planner.py +++ b/python/altrios/train_planner/planner.py @@ -355,7 +355,9 @@ def run_train_planner( 'Origin_ID': pl.Utf8, 'Destination_ID': pl.Utf8, 'Cars_Loaded': pl.Float64, - 'Cars_Empty': pl.Float64, + 'Cars_Empty': pl.Float64, + 'Containers_Loaded': pl.Float64, + 'Containers_Empty': pl.Float64, 'Departure_SOC_J': pl.Float64, 'Departure_Time_Planned_Hr': pl.Float64, 'Arrival_Time_Planned_Hr': pl.Float64}) @@ -503,6 +505,8 @@ def run_train_planner( pl.Series(repeat(this_train['Destination'], new_row_count)), pl.Series(repeat(this_train['Cars_Loaded'], new_row_count)), pl.Series(repeat(this_train['Cars_Empty'], new_row_count)), + pl.Series(repeat(this_train['Containers_Loaded'], new_row_count)), + pl.Series(repeat(this_train['Containers_Empty'], new_row_count)), loco_start_soc_j, pl.Series(repeat(current_time, new_row_count)), pl.Series(repeat(current_time + travel_time, new_row_count))], diff --git a/python/altrios/train_planner/planner_config.py b/python/altrios/train_planner/planner_config.py index 72db6d03..e4bbaaee 100644 --- a/python/altrios/train_planner/planner_config.py +++ b/python/altrios/train_planner/planner_config.py @@ -44,7 +44,7 @@ class TrainPlannerConfig: }) cars_per_locomotive_fixed: bool = False refuelers_per_incoming_corridor: int = 4 - stack_type: str = "single" + stack_type: str = "double" require_diesel: bool = False manifest_empty_return_ratio: float = 0.6 hp_required_per_ton: Dict = field(default_factory = lambda: { diff --git a/python/altrios/train_planner/schedulers.py b/python/altrios/train_planner/schedulers.py index d267f89e..b0ee70bd 100644 --- a/python/altrios/train_planner/schedulers.py +++ b/python/altrios/train_planner/schedulers.py @@ -305,16 +305,34 @@ def find_minimum_waiting_time( print(f"empty_return is {empty_return}") return dispatch_times -def formatScheduleColumns(df: Union[pl.DataFrame, pl.LazyFrame]) -> Union[pl.DataFrame, pl.LazyFrame]: +def formatScheduleColumns( + df: Union[pl.DataFrame, pl.LazyFrame], + config: planner_config.TrainPlannerConfig +) -> Union[pl.DataFrame, pl.LazyFrame]: + containers_per_car = 0.0 + if config.stack_type == "single": + containers_per_car = 1.0 + elif config.stack_type == "double": + containers_per_car = 2.0 + else: + assert(f'Unhandled container stack type: {config.stack_type}') return (df .with_columns( (pl.col("Tons_Per_Car_Loaded").mul("Number_of_Cars_Loaded") + pl.col("Tons_Per_Car_Empty").mul("Number_of_Cars_Empty")).alias("Tons_Per_Train"), (pl.col("HP_Required_Per_Ton_Loaded").mul("Tons_Per_Car_Loaded").mul("Number_of_Cars_Loaded") + pl.col("HP_Required_Per_Ton_Empty").mul("Tons_Per_Car_Empty").mul("Number_of_Cars_Empty") - ).alias("HP_Required") + ).alias("HP_Required"), + pl.when(pl.col("Train_Type").str.contains("Intermodal")) + .then(pl.col("Number_of_Cars_Loaded").mul(containers_per_car)) + .otherwise(0) + .alias("Containers_Loaded"), + pl.when(pl.col("Train_Type").str.contains("Intermodal")) + .then(pl.col("Number_of_Cars_Empty").mul(containers_per_car)) + .otherwise(0) + .alias("Containers_Empty"), ) .select("Hour", "Origin", "Destination", "Train_Type", - "Number_of_Cars", "Number_of_Cars_Loaded", "Number_of_Cars_Empty", + "Number_of_Cars", "Number_of_Cars_Loaded", "Number_of_Cars_Empty", "Containers_Empty", "Containers_Loaded", "Tons_Per_Train", "HP_Required" ) .rename({"Number_of_Cars_Loaded": "Cars_Loaded", @@ -345,17 +363,15 @@ def generate_trains( demand_hourly: pl.DataFrame, target_num_cars_per_train:int ) -> pl.DataFrame: + demand_hourly = demand_hourly.with_columns((pl.col("Origin") + "-" + pl.col("Destination")).alias("OD_Pair")) grouped_data = (demand_hourly - .with_columns( - (pl.col("Origin") + "-" + pl.col("Destination")).alias("OD_Pair") - ) .group_by("OD_Pair") .agg( - pl.col("Number_of_Containers").sum().alias("Total_Containers"), - pl.col("Number_of_Containers").sum().mod(target_num_cars_per_train).alias("Remaining_Containers") + pl.col("Number_of_Cars").sum().alias("Total_Cars"), + pl.col("Number_of_Cars").sum().mod(target_num_cars_per_train).alias("Remaining_Cars") ) .with_columns( - pl.col("Total_Containers").truediv(target_num_cars_per_train).round().add(pl.col("Remaining_Containers").gt(0)).alias("Max_Min_Cars") + pl.col("Total_Cars").truediv(target_num_cars_per_train).round().add(pl.col("Remaining_Cars").gt(0)).alias("Max_Min_Cars") ) ) @@ -364,16 +380,16 @@ def generate_trains( # Step 4: Loop through each unique OD pair to calculate dispatch data for row in grouped_data.iter_rows(named=True): od_pair = row['OD_Pair'] # This is the "OD_Pair" string like "Origin-Destination" - total_containers = row['Total_Containers'] # This is the "Total_Containers" value + total_cars = row['Total_Cars'] # This is the "Total_Cars" value - # Filter containers list for the specific OD pair - containers = demand_hourly.filter(pl.col("OD_Pair") == od_pair).select("Number_of_Containers").to_series().to_list() + # Filter cars list for the specific OD pair + cars = demand_hourly.filter(pl.col("OD_Pair") == od_pair).select("Number_of_Cars").to_series().to_list() # Retrieve the max min_num_cars for this OD pair max_min_cars = row['Max_Min_Cars'] # Calculate dispatch data for the current OD pair with the updated rule - dispatch_data = calculate_dispatch_data(total_containers, target_num_cars_per_train, od_pair, containers, max_min_cars) + dispatch_data = calculate_dispatch_data(total_cars, target_num_cars_per_train, od_pair, cars, max_min_cars) # Add the OD pair label to each entry in the dispatch data dispatch_data_df = pl.DataFrame(dispatch_data, strict=False) @@ -393,7 +409,7 @@ def generate_trains( return final_dispatch_df - target_num_cars_per_train = config.target_num_cars_per_train + target_num_cars_per_train = config.target_cars_per_train['Default'] #TODO make this flexible dispatch_df = generate_trains(demand,target_num_cars_per_train) od_border_time = [] border_time = dispatch_df["Border_Times"].to_list() @@ -411,7 +427,7 @@ def generate_trains( schedule = find_minimum_waiting_time(num_iterations=num_iterations, demand_hourly=demand, border_time_list=border_time_list, - target_num_cars_per_train=config.target_num_cars_per_train['Intermodal'] #TODO make this flexible + target_num_cars_per_train=target_num_cars_per_train ) return schedule.pipe(formatScheduleColumns) @@ -461,5 +477,5 @@ def generate_dispatch_details( ((pl.col("Interval").cum_count().over(["Origin","Destination"])) \ * pl.col("Interval")).alias("Hour") ) - .pipe(formatScheduleColumns) + .pipe(formatScheduleColumns, config = config) ) \ No newline at end of file From 65f7cab0c1a2d2c586ce2d8aaddcbc9db8af5ec4 Mon Sep 17 00:00:00 2001 From: "Bruchon, Matthew" Date: Sat, 18 Jan 2025 17:33:05 -0500 Subject: [PATCH 37/50] added hourly dispatch function --- python/altrios/train_planner/schedulers.py | 58 ++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/python/altrios/train_planner/schedulers.py b/python/altrios/train_planner/schedulers.py index b0ee70bd..7bd469b3 100644 --- a/python/altrios/train_planner/schedulers.py +++ b/python/altrios/train_planner/schedulers.py @@ -1,3 +1,4 @@ +import math from typing import List, Union from collections import defaultdict import polars as pl @@ -340,6 +341,63 @@ def formatScheduleColumns( .sort(["Hour","Origin","Destination","Train_Type"]) ) + +def calculate_dispatch_data(total_cars, target_num_cars, label, cars, max_min_cars): + remaining_cars = total_cars % target_num_cars + min_num_cars = ( + total_cars // target_num_cars + (1 if remaining_cars > 0 else 0) + ) + + ## Apply the maximum min_num_cars value + min_num_cars = int(max(min_num_cars, max_min_cars)) + + border_list = [] + border_time_list = [] + dispatched_list = [] + + if remaining_cars == 0: + border = total_cars / min_num_cars + else: + border = math.ceil(total_cars / min_num_cars) + + containers_left = total_cars + for _ in range(min_num_cars): + if containers_left >= border: + border_list.append(border) + containers_left -= border + else: + border_list.append(containers_left) + break + + cumulate_demand = 0 + p = 0 + for i, car in enumerate(cars): + cumulate_demand += car + if p == len(border_list) - 1: + border_time_list.append(len(cars) - 1) + break + if cumulate_demand >= border_list[p]: + border_time_list.append(i) + dispatched_list.append(cumulate_demand) + total_cars -= cumulate_demand + cumulate_demand = 0 + p += 1 + if p >= len(border_list): + break + if len(border_time_list) < len(border_list): + for _ in range(len(border_list) - len(border_time_list)): + border_time_list.append(border_time_list[-1]+_+1) + dispatched_list.append(total_cars) + if len(dispatched_list) < len(border_list): + for _ in range(len(border_list) - len(dispatched_list)): + dispatched_list.append(0) + return { + "Border": border_list, + "Border_Times": border_time_list, + "Dispatched": dispatched_list, + } + + def calculate_dispatches_deterministic_hourly( demand: pl.DataFrame, rail_vehicles: List[alt.RailVehicle], From 43399892e5681bf5ba72134f5ac2f528e1497f95 Mon Sep 17 00:00:00 2001 From: "Bruchon, Matthew" Date: Sun, 19 Jan 2025 23:05:40 -0500 Subject: [PATCH 38/50] partially implemented calculate_dispatch_data for diesel --- python/altrios/metric_calculator.py | 7 +- python/altrios/sim_manager.py | 15 +- python/altrios/train_planner/data_prep.py | 106 ++++++-- python/altrios/train_planner/planner.py | 65 +++-- .../altrios/train_planner/planner_config.py | 5 +- python/altrios/train_planner/schedulers.py | 253 +++++++++--------- .../train_planner/train_demand_generators.py | 28 +- 7 files changed, 287 insertions(+), 192 deletions(-) diff --git a/python/altrios/metric_calculator.py b/python/altrios/metric_calculator.py index cd70504c..a8df5fc1 100644 --- a/python/altrios/metric_calculator.py +++ b/python/altrios/metric_calculator.py @@ -463,12 +463,7 @@ def calculate_freight_moved( elif units in ["container-km", "container-miles"]: assert info.consist_plan.filter(~pl.col("Train_Type").str.contains("Intermodal")).height == 0, "Can only count containers if the consist plan is all Intermodal" car_distance = info.sims.get_car_kilometers(annualize=info.annualize) * conversion_from_km - - if info.train_planner_config.stack_type == "double": - containers_per_car = 2.0 - elif info.train_planner_config.stack_type == "single": - containers_per_car = 1.0 - return metric("Freight_Moved", units, car_distance * containers_per_car, year=info.scenario_year) + return metric("Freight_Moved", units, car_distance * info.train_planner_config.containers_per_car, year=info.scenario_year) elif units == "containers": container_counts = info.consist_plan.select("Train_ID", "Containers_Loaded", "Containers_Empty").unique().drop("Train_ID").sum() diff --git a/python/altrios/sim_manager.py b/python/altrios/sim_manager.py index 918f4592..0163224a 100644 --- a/python/altrios/sim_manager.py +++ b/python/altrios/sim_manager.py @@ -64,13 +64,15 @@ def main( str(loc.link_idx.idx) + " is invalid for network!") train_planner_config.loco_info = metrics.add_battery_costs(train_planner_config.loco_info, scenario_year) + train_planner_config.simulation_days = simulation_days + 2 * warm_start_days - if loco_pool is None: loco_pool = planner.data_prep.build_locopool( - config = train_planner_config, - method="shares_twoway", - shares=[1-target_bel_share, target_bel_share], - demand_file=demand_file - ) + # TODO mbruchon: un-comment this and move it out into rollout.py so rollouts still work + #if loco_pool is None: loco_pool = planner.data_prep.build_locopool( + # config = train_planner_config, + # method="shares_twoway", + # shares=[1-target_bel_share, target_bel_share], + # demand_file=demand_file + # ) t0_ptc = time.perf_counter() ( @@ -85,7 +87,6 @@ def main( network = network, loco_pool= loco_pool, refuelers = refuelers, - simulation_days=simulation_days + 2 * warm_start_days, scenario_year = scenario_year, config = train_planner_config, demand_file = demand_file, diff --git a/python/altrios/train_planner/data_prep.py b/python/altrios/train_planner/data_prep.py index 06b1d0f4..380cf730 100644 --- a/python/altrios/train_planner/data_prep.py +++ b/python/altrios/train_planner/data_prep.py @@ -1,6 +1,7 @@ from typing import Union, List, Tuple, Dict from pathlib import Path import polars as pl +import polars.selectors as cs import pandas as pd import numpy as np import math @@ -19,8 +20,25 @@ "Sun": 7 } +def convert_demand_to_sim_days( + demand_table: Union[pl.DataFrame, pl.LazyFrame], + simulation_days: int +) -> Union[pl.DataFrame, pl.LazyFrame]: + if "Number_of_Days" in demand_table.collect_schema(): + return demand_table.with_columns( + cs.starts_with("Number_of_").truediv(pl.col("Number_of_Days").truediv(simulation_days)) + ) + + else: + print("`Number_of_Days` not specified in demand file. Assuming demand in the file is expressed per week.") + return demand_table.with_columns( + cs.starts_with("Number_of_").mul(simulation_days / 7.0) + ) + + def load_freight_demand( - demand_table: Union[pl.DataFrame, Path, str] + demand_table: Union[pl.DataFrame, pl.LazyFrame, Path, str], + config: planner_config.TrainPlannerConfig, ) -> Tuple[pl.DataFrame, pl.Series, int]: """ Load the user input csv file into a dataframe for later processing @@ -39,8 +57,14 @@ def load_freight_demand( origin, destination, train type, number of cars node_list: List of origin or destination demand nodes """ - if type(demand_table) is not pl.DataFrame: - demand_table = pl.read_csv(demand_table, dtypes = {"Number_of_Cars": pl.UInt32, "Number_of_Containers": pl.UInt32}) + if isinstance(demand_table, (Path, str)): + demand_table = (pl.read_csv(demand_table) + .pipe(convert_demand_to_sim_days, simulation_days = config.simulation_days) + ) + elif "Hour" not in demand_table.collect_schema(): + demand_table = (demand_table + .pipe(convert_demand_to_sim_days, simulation_days = config.simulation_days) + ) nodes = pl.concat( [demand_table.get_column("Origin"), @@ -50,8 +74,16 @@ def load_freight_demand( def prep_hourly_demand( total_demand: Union[pl.DataFrame, pl.LazyFrame], hourly_demand_density: Union[pl.DataFrame, pl.LazyFrame], - daily_demand_density: Union[pl.DataFrame, pl.LazyFrame] + daily_demand_density: Union[pl.DataFrame, pl.LazyFrame], + simulation_weeks = 1 ) -> Union[pl.DataFrame, pl.LazyFrame]: + if "Number_of_Containers" in total_demand.collect_schema(): + demand_col = "Number_of_Containers" + else: + demand_col = "Number_of_Cars" + + total_demand = total_demand.pipe(convert_demand_to_sim_days, simulation_days = simulation_weeks * 7) + hourly_demand_density = (hourly_demand_density .group_by("Terminal_Type", "Hour_Of_Day") .agg(pl.col("Share").sum()) @@ -62,27 +94,32 @@ def prep_hourly_demand( .agg(pl.col("Share").sum()) .with_columns(pl.col("Share").truediv(pl.col("Share").sum().over("Terminal_Type"))) ) - return (total_demand + one_week = (total_demand .join(daily_demand_density, how="inner", on=["Terminal_Type"]) .with_columns( - (pl.col("Number_of_Cars") * pl.col("Share")).alias("Number_of_Cars_Daily"), + (pl.col(demand_col) * pl.col("Share")).alias(f'{demand_col}_Daily'), pl.col("Day_Of_Week").replace_strict(day_order_map).alias("Day_Order") ) - .pipe(utilities.allocateItems, grouping_vars=["Origin", "Destination", "Train_Type"], count_target="Number_of_Cars_Daily") - .drop("Number_of_Cars_Daily", "Share") - .rename({"Count": "Number_of_Cars_Daily"}) + .pipe(utilities.allocateItems, grouping_vars=["Origin", "Destination", "Train_Type"], count_target=f'{demand_col}_Daily') + .drop(f'{demand_col}_Daily', "Share") + .rename({"Count": f'{demand_col}_Daily'}) .join(hourly_demand_density, how="inner", on=["Terminal_Type"]) .sort("Origin", "Destination", "Day_Order", "Hour_Of_Day") .with_columns( - (pl.col("Number_of_Cars_Daily") * pl.col("Share")).alias("Number_of_Cars"), + (pl.col(f'{demand_col}_Daily') * pl.col("Share")).alias(demand_col), pl.concat_str(pl.col("Origin"), pl.lit("-"), pl.col("Destination")).alias("OD_Pair"), pl.int_range(0, pl.len()).over("Origin", "Destination").alias("Hour") ) - .pipe(utilities.allocateItems, grouping_vars=["Origin", "Destination", "Train_Type", "Day_Order"], count_target="Number_of_Cars") - .drop("Number_of_Cars") - .rename({"Count": "Number_of_Cars"}) - .select("Origin", "Destination", "Train_Type", "Hour", "Number_of_Cars") + .pipe(utilities.allocateItems, grouping_vars=["Origin", "Destination", "Train_Type", "Day_Order"], count_target=demand_col) + .drop(demand_col) + .rename({"Count": demand_col}) + .select("Origin", "Destination", "Train_Type", "Hour", "Number_of_Days", demand_col) ) + return pl.concat([ + one_week, + one_week.with_columns(pl.col("Hour").add(24*7)), + one_week.with_columns(pl.col("Hour").add(24*7*2)) + ]) def append_loco_info(loco_info: pd.DataFrame) -> pd.DataFrame: if all(item in loco_info.columns for item in [ @@ -105,7 +142,8 @@ def append_loco_info(loco_info: pd.DataFrame) -> pd.DataFrame: def build_locopool( config: planner_config.TrainPlannerConfig, - demand_file: Union[pl.DataFrame, Path, str], + demand_file: Union[pl.DataFrame, pl.LazyFrame, Path, str], + dispatch_schedule: Union[pl.DataFrame, pl.LazyFrame] = None, method: str = "tile", shares: List[float] = [], locomotives_per_node: int = None @@ -123,21 +161,49 @@ def build_locopool( """ config.loco_info = append_loco_info(config.loco_info) loco_types = list(config.loco_info.loc[:,'Locomotive_Type']) - demand, node_list = load_freight_demand(demand_file) + demand, node_list = load_freight_demand(demand_file, config) #TODO: handle different train types (or mixed train types?) num_nodes = len(node_list) if locomotives_per_node is None: - num_ods = demand.height - cars_per_od = demand.get_column("Number_of_Cars").mean() + num_ods = demand.select("Origin", "Destination").unique().height + if "Number_of_Cars" in demand.collect_schema(): + cars_per_od = (demand + .group_by("Origin","Destination") + .agg(pl.col("Number_of_Cars").sum()) + .get_column("Number_of_Cars").mean() + ) + elif "Number_of_Containers" in demand.collect_schema(): + cars_per_od = (demand + .group_by("Origin","Destination") + .agg(pl.col("Number_of_Containers").sum()) + .get_column("Number_of_Containers").mean() + ) / config.containers_per_car + else: + assert("No valid columns in demand DataFrame") if config.single_train_mode: initial_size = math.ceil(cars_per_od / min(config.cars_per_locomotive.values())) rows = initial_size else: num_destinations_per_node = num_ods*1.0 / num_nodes*1.0 - initial_size = math.ceil((cars_per_od / min(config.cars_per_locomotive.values())) * + initial_size_demand = math.ceil((cars_per_od / min(config.cars_per_locomotive.values())) * num_destinations_per_node) # number of locomotives per node - rows = initial_size * num_nodes # number of locomotives in total + initial_size_hp = 0 + if dispatch_schedule is not None: + # Compute the 24-hour window with the most total locomotives needed + # (assuming each loco is only dispatched once in a given day) + loco_mass = config.loco_info['Loco_Mass_Tons'].mean() + hp_per_ton = config.hp_required_per_ton['Default'][dispatch_schedule.select(pl.col("Train_Type").mode()).item()] + hp_per_loco = config.loco_info['HP'].mean() - loco_mass * hp_per_ton + initial_size_hp = (dispatch_schedule + .with_columns((pl.col("Hour") // 24).cast(pl.Int32).alias("Day"), + pl.col("HP_Required").truediv(hp_per_loco).ceil().alias("Locos_Per_Dispatch")) + .group_by("Day", "Origin") + .agg(pl.col("Locos_Per_Dispatch").ceil().sum().alias("Locos_Per_Day_Per_Origin")) + .select(pl.col("Locos_Per_Day_Per_Origin").max().cast(pl.Int64)).item() + ) + initial_size = max(initial_size_demand, initial_size_hp) + rows = initial_size * num_nodes # number of locomotives in total else: initial_size = locomotives_per_node rows = locomotives_per_node * num_nodes diff --git a/python/altrios/train_planner/planner.py b/python/altrios/train_planner/planner.py index a7da1cb1..bcfe9e59 100644 --- a/python/altrios/train_planner/planner.py +++ b/python/altrios/train_planner/planner.py @@ -272,7 +272,6 @@ def run_train_planner( network: List[alt.Link], loco_pool: pl.DataFrame, refuelers: pl.DataFrame, - simulation_days: int, scenario_year: int, train_type: alt.TrainType = alt.TrainType.Freight, config: planner_config.TrainPlannerConfig = planner_config.TrainPlannerConfig(), @@ -294,30 +293,17 @@ def run_train_planner( network: loco_pool: refuelers: - simulation_days: config: Object storing train planner configuration paramaters demand_file: Outputs: ---------- """ config.loco_info = data_prep.append_loco_info(config.loco_info) - demand, node_list = data_prep.load_freight_demand(demand_file) - - if refuelers is None: - refuelers = data_prep.build_refuelers( - node_list, - loco_pool, - config.refueler_info, - config.refuelers_per_incoming_corridor) - - if network_charging_guidelines is None: - network_charging_guidelines = pl.read_csv(alt.resources_root() / "networks" / "network_charging_guidelines.csv") - + demand, node_list = data_prep.load_freight_demand(demand_file, config) + if config.return_demand_generators is None: config.return_demand_generators = train_demand_generators.get_default_return_demand_generators() - refuelers, loco_pool = data_prep.append_charging_guidelines(refuelers, loco_pool, demand, network_charging_guidelines) - freight_type_to_car_type = {} for rv in rail_vehicles: if rv.freight_type in freight_type_to_car_type: @@ -336,15 +322,46 @@ def run_train_planner( .with_columns(pl.col("index").mul(24.0).alias("Hour")) .drop("index") ) - else: - demand_returns = train_demand_generators.generate_return_demand(demand, config) + else: + demand_returns = pl.DataFrame() demand_rebalancing = pl.DataFrame() - if demand.filter(pl.col("Train_Type").str.contains("Manifest")).height > 0: - demand_rebalancing = train_demand_generators.generate_manifest_rebalancing_demand(demand, node_list, config) - demand = train_demand_generators.generate_demand_trains(demand, demand_returns, demand_rebalancing, rail_vehicles, freight_type_to_car_type, config) + if (config.dispatch_scheduler is None) and ("Hour" in demand.collect_schema()): + if "Number_of_Containers" in demand.collect_schema(): + demand = (demand + .group_by("Origin", "Destination", "Train_Type") + .agg(pl.col("Number_of_Containers").sum()) + .with_columns(pl.col("Number_of_Containers").truediv(config.containers_per_car).ceil().alias("Number_of_Cars")) + ) + else: + demand = (demand + .group_by("Origin", "Destination", "Train_Type") + .agg(pl.col("Number_of_Cars").sum()) + ) + if "Hour" not in demand.schema: + demand_returns = train_demand_generators.generate_return_demand(demand, config) + if demand.filter(pl.col("Train_Type").str.contains("Manifest")).height > 0: + demand_rebalancing = train_demand_generators.generate_manifest_rebalancing_demand(demand, node_list, config) + if config.dispatch_scheduler is None: + demand = train_demand_generators.generate_demand_trains(demand, demand_returns, demand_rebalancing, rail_vehicles, freight_type_to_car_type, config) config.dispatch_scheduler = schedulers.generate_dispatch_details - dispatch_schedule = config.dispatch_scheduler(demand, rail_vehicles, simulation_days, config) + + dispatch_schedule = config.dispatch_scheduler(demand, rail_vehicles, config) + + if loco_pool is None: + loco_pool = data_prep.build_locopool(config=config, demand_file=demand, dispatch_schedule=dispatch_schedule) + + if refuelers is None: + refuelers = data_prep.build_refuelers( + node_list, + loco_pool, + config.refueler_info, + config.refuelers_per_incoming_corridor) + + if network_charging_guidelines is None: + network_charging_guidelines = pl.read_csv(alt.resources_root() / "networks" / "network_charging_guidelines.csv") + + refuelers, loco_pool = data_prep.append_charging_guidelines(refuelers, loco_pool, demand, network_charging_guidelines) final_departure = dispatch_schedule.get_column("Hour").max() train_consist_plan = pl.DataFrame(schema= @@ -450,7 +467,7 @@ def run_train_planner( slts = tsb.make_speed_limit_train_sim( location_map=location_map, save_interval=None, - simulation_days=simulation_days, + simulation_days=config.simulation_days, scenario_year=scenario_year ) @@ -561,6 +578,7 @@ def run_train_planner( str(alt.resources_root() / "networks/Taconite-NoBalloon.yaml") ) config = planner_config.TrainPlannerConfig() + config.simulation_days=defaults.SIMULATION_DAYS + 2 * defaults.WARM_START_DAYS loco_pool = data_prep.build_locopool(config, defaults.DEMAND_FILE) demand, node_list = data_prep.load_freight_demand(defaults.DEMAND_FILE) refuelers = data_prep.build_refuelers( @@ -575,6 +593,5 @@ def run_train_planner( network=network, loco_pool=loco_pool, refuelers=refuelers, - simulation_days=defaults.SIMULATION_DAYS + 2 * defaults.WARM_START_DAYS, scenario_year=defaults.BASE_ANALYSIS_YEAR, config=config) diff --git a/python/altrios/train_planner/planner_config.py b/python/altrios/train_planner/planner_config.py index e4bbaaee..54c86685 100644 --- a/python/altrios/train_planner/planner_config.py +++ b/python/altrios/train_planner/planner_config.py @@ -22,7 +22,7 @@ class TrainPlannerConfig: - `cars_per_locomotive`: Heuristic scaling factor used to size number of locomotives needed based on demand. - `cars_per_locomotive_fixed`: If `True`, `cars_per_locomotive` overrides `hp_per_ton` calculations used for dispatching decisions. - `refuelers_per_incoming_corridor`: Heuristic scaling factor used to scale number of refuelers needed at each node based on number of incoming corridors. - - `stack_type`: Type of stacking (applicable only for intermodal containers) + - `containers_per_car`: Containers stacked on each car (applicable only for intermodal containers) - `require_diesel`: `True` to require each consist to have at least one diesel locomotive. - `manifest_empty_return_ratio`: `Dict` - `drag_coeff_function`: `Dict` @@ -32,6 +32,7 @@ class TrainPlannerConfig: - `refueler_info`: `Dict` - `return_demand_generators`: `Dict` """ + simulation_days: int = 21 single_train_mode: bool = False min_cars_per_train: Dict = field(default_factory = lambda: { "Default": 60 @@ -44,7 +45,7 @@ class TrainPlannerConfig: }) cars_per_locomotive_fixed: bool = False refuelers_per_incoming_corridor: int = 4 - stack_type: str = "double" + containers_per_car: int = 2 require_diesel: bool = False manifest_empty_return_ratio: float = 0.6 hp_required_per_ton: Dict = field(default_factory = lambda: { diff --git a/python/altrios/train_planner/schedulers.py b/python/altrios/train_planner/schedulers.py index 7bd469b3..bf725747 100644 --- a/python/altrios/train_planner/schedulers.py +++ b/python/altrios/train_planner/schedulers.py @@ -150,6 +150,7 @@ def find_minimum_waiting_time( num_iterations: int, demand_hourly: pl.DataFrame, border_time_list: list, + min_num_cars_per_train: int, target_num_cars_per_train: int ) -> pl.DataFrame: """ @@ -158,16 +159,16 @@ def find_minimum_waiting_time( for i in range(len(border_time_list)): od_pair_loop = border_time_list[i][0] reverse_pair = "-".join(od_pair_loop.split("-")[::-1]) - directional_total_containers = demand_hourly.filter(pl.col("OD_Pair") == od_pair_loop)["Number_of_Containers"].sum() - reverse_total_containers = demand_hourly.filter(pl.col("OD_Pair") == reverse_pair)["Number_of_Containers"].sum() - if directional_total_containers > reverse_total_containers: - empty_containers = directional_total_containers - reverse_total_containers + directional_total_cars = demand_hourly.filter(pl.col("OD_Pair") == od_pair_loop)["Number_of_Cars"].sum() + reverse_total_cars = demand_hourly.filter(pl.col("OD_Pair") == reverse_pair)["Number_of_Cars"].sum() + if directional_total_cars > reverse_total_cars: + empty_containers = directional_total_cars - reverse_total_cars empty_containers_o_d = reverse_pair else: - empty_containers = reverse_total_containers - directional_total_containers + empty_containers = reverse_total_cars - directional_total_cars empty_containers_o_d = od_pair_loop - print(f"total containers for {od_pair_loop} is {directional_total_containers}") - print(f"reverse_total_containers for {reverse_pair} is {reverse_total_containers}") + print(f"total cars for {od_pair_loop} is {directional_total_cars}") + print(f"reverse_total_cars for {reverse_pair} is {reverse_total_cars}") #print(f"empty_containers for {empty_containers_o_d} is {empty_containers}") print(f"empty_containers for {empty_containers_o_d} is {empty_containers}") print(f"There are {len(border_time_list[0])-1} trains to dispatch") @@ -193,7 +194,7 @@ def find_minimum_waiting_time( #print(f"origin is {origin}") #print(f"destination is {destination}") #print(demand) - total_containers = demand_hourly.filter(pl.col("OD_Pair") == od_pair_loop)["Number_of_Containers"].sum() + total_containers = demand_hourly.filter(pl.col("OD_Pair") == od_pair_loop)["Number_of_Cars"].sum() for i in range(2, num_iterations): if total_containers - total_dispatched == 0: dispatched_list.append(0.0) @@ -310,13 +311,6 @@ def formatScheduleColumns( df: Union[pl.DataFrame, pl.LazyFrame], config: planner_config.TrainPlannerConfig ) -> Union[pl.DataFrame, pl.LazyFrame]: - containers_per_car = 0.0 - if config.stack_type == "single": - containers_per_car = 1.0 - elif config.stack_type == "double": - containers_per_car = 2.0 - else: - assert(f'Unhandled container stack type: {config.stack_type}') return (df .with_columns( (pl.col("Tons_Per_Car_Loaded").mul("Number_of_Cars_Loaded") + pl.col("Tons_Per_Car_Empty").mul("Number_of_Cars_Empty")).alias("Tons_Per_Train"), @@ -324,11 +318,11 @@ def formatScheduleColumns( pl.col("HP_Required_Per_Ton_Empty").mul("Tons_Per_Car_Empty").mul("Number_of_Cars_Empty") ).alias("HP_Required"), pl.when(pl.col("Train_Type").str.contains("Intermodal")) - .then(pl.col("Number_of_Cars_Loaded").mul(containers_per_car)) + .then(pl.col("Number_of_Cars_Loaded").mul(config.containers_per_car)) .otherwise(0) .alias("Containers_Loaded"), pl.when(pl.col("Train_Type").str.contains("Intermodal")) - .then(pl.col("Number_of_Cars_Empty").mul(containers_per_car)) + .then(pl.col("Number_of_Cars_Empty").mul(config.containers_per_car)) .otherwise(0) .alias("Containers_Empty"), ) @@ -341,67 +335,135 @@ def formatScheduleColumns( .sort(["Hour","Origin","Destination","Train_Type"]) ) - -def calculate_dispatch_data(total_cars, target_num_cars, label, cars, max_min_cars): - remaining_cars = total_cars % target_num_cars - min_num_cars = ( - total_cars // target_num_cars + (1 if remaining_cars > 0 else 0) +def calculate_dispatch_data( + total_containers, + target_num_cars_per_train, + od_pair, + demand_hourly, + max_min_trains, + containers_per_car): + remaining_containers = total_containers % (target_num_cars_per_train * containers_per_car) + num_trains = ( + total_containers // (target_num_cars_per_train * containers_per_car) + (1 if remaining_containers > 0 else 0) ) ## Apply the maximum min_num_cars value - min_num_cars = int(max(min_num_cars, max_min_cars)) + num_trains = int(max(num_trains, max_min_trains)) - border_list = [] - border_time_list = [] - dispatched_list = [] + accumulated_arrivals = (demand_hourly + .sort("Hour") + .with_columns(pl.col("Number_of_Containers").cum_sum().floordiv(containers_per_car).alias("Accumulated_Arrivals")) + .filter(pl.col("Accumulated_Arrivals") - pl.col("Accumulated_Arrivals").shift(1).fill_null(0.0) > 0) + .select("Hour", "Accumulated_Arrivals") + ) - if remaining_cars == 0: - border = total_cars / min_num_cars - else: - border = math.ceil(total_cars / min_num_cars) - - containers_left = total_cars - for _ in range(min_num_cars): - if containers_left >= border: - border_list.append(border) - containers_left -= border - else: - border_list.append(containers_left) - break + planned_train_sizes = ( + pl.DataFrame({ + "Group": [1] * num_trains, #Unused, just needed for allocateIntegerEvenly to work, + "Train_ID": list(range(num_trains)), + "Cars": [total_containers / containers_per_car] * num_trains + }) + # Divide containers into trains as evenly as possible + .pipe(utilities.allocateIntegerEvenly, target="Cars", grouping_vars = ["Group"]) + .with_columns(pl.col("Cars").cum_sum().alias("Cumulative_Cars")) + .select("Train_ID", "Cars", "Cumulative_Cars") + #.join_where(accumulated_arrivals, pl.col("Cumulative_Cars") <= pl.col("Accumulated_Arrivals")) + #.sort("Train_ID", "Hour") + ) - cumulate_demand = 0 p = 0 - for i, car in enumerate(cars): - cumulate_demand += car - if p == len(border_list) - 1: - border_time_list.append(len(cars) - 1) + for arrival in accumulated_arrivals.iter_rows(named=True): + accumulated_demand += arrival['Accumulated_Arrivals'] + if p == planned_train_sizes.height - 1: + + for train in planned_train_sizes.partition_by("Train_ID"): + dispatch_time = train.filter() + + train_dispatch_times = [] + dispatched_container_counts = [] + accumulated_demand = 0 + p = 0 + for i, container_count in enumerate(containers): + accumulated_demand += container_count + if p == len(planned_container_counts) - 1: + train_dispatch_times.append(len(containers) - 1) break - if cumulate_demand >= border_list[p]: - border_time_list.append(i) - dispatched_list.append(cumulate_demand) - total_cars -= cumulate_demand - cumulate_demand = 0 + if accumulated_demand >= planned_container_counts[p]: + train_dispatch_times.append(i) + dispatched_container_counts.append(accumulated_demand) + total_containers -= accumulated_demand + accumulated_demand = 0 p += 1 - if p >= len(border_list): + if p >= len(planned_container_counts): break - if len(border_time_list) < len(border_list): - for _ in range(len(border_list) - len(border_time_list)): - border_time_list.append(border_time_list[-1]+_+1) - dispatched_list.append(total_cars) - if len(dispatched_list) < len(border_list): - for _ in range(len(border_list) - len(dispatched_list)): - dispatched_list.append(0) + if len(train_dispatch_times) < len(planned_container_counts): + for _ in range(len(planned_container_counts) - len(train_dispatch_times)): + train_dispatch_times.append(train_dispatch_times[-1]+_+1) + dispatched_container_counts.append(total_containers) + if len(dispatched_container_counts) < len(planned_container_counts): + for _ in range(len(planned_container_counts) - len(dispatched_container_counts)): + dispatched_container_counts.append(0) return { - "Border": border_list, - "Border_Times": border_time_list, - "Dispatched": dispatched_list, + "Border": planned_container_counts, + "Border_Times": train_dispatch_times, + "Dispatched": dispatched_container_counts, } +# Define the main function to generate demand trains with the updated rule +def generate_trains_deterministic_hourly( + demand_hourly: pl.DataFrame, + target_num_cars_per_train: int, + containers_per_car: int +) -> pl.DataFrame: + grouped_data = (demand_hourly + .group_by("Origin", "Destination", "OD_Pair") + .agg( + pl.col("Number_of_Containers").sum().alias("Total_Containers"), + pl.col("Number_of_Containers").sum().mod(target_num_cars_per_train * containers_per_car).alias("Remaining_Containers") + ) + .with_columns( + pl.col("Total_Containers").floordiv(target_num_cars_per_train * containers_per_car).add(pl.col("Remaining_Containers").gt(0)).alias("Min_Trains") + ) + .with_columns( + pl.col("Min_Trains").max().over(pl.concat_str( + pl.min_horizontal(pl.col("Origin","Destination")), + pl.lit("_"), + pl.max_horizontal(pl.col("Origin","Destination"))) + ).alias("Max_Min_Trains") + ) + ) + + # Prepare a list to collect the results for all OD pairs + all_dispatch_data = [] + # Step 4: Loop through each unique OD pair to calculate dispatch data + for row in grouped_data.iter_rows(named=True): + # Calculate dispatch data for the current OD pair with the updated rule + dispatch_data = calculate_dispatch_data( + total_containers = row['Total_Containers'], + target_num_cars_per_train = target_num_cars_per_train, + od_pair = row['OD_Pair'], + containers = demand_hourly.filter(pl.col("OD_Pair") == row['OD_Pair']).sort("Hour"), + max_min_trains =row['Max_Min_Trains'], + containers_per_car = containers_per_car) + + # Add the OD pair label to each entry in the dispatch data + dispatch_data_df = (pl.DataFrame(dispatch_data, strict=False) + .with_columns( + pl.lit(od_pair).alias("OD_Pair"), + pl.col("Border").cast(pl.Float64) + ) + ) + + # Append the result to the list + all_dispatch_data.append(dispatch_data_df) + + # Combine all dispatch data into a single DataFrame + final_dispatch_df = pl.concat(all_dispatch_data, how="diagonal_relaxed") + return final_dispatch_df def calculate_dispatches_deterministic_hourly( - demand: pl.DataFrame, + demand_hourly: pl.DataFrame, rail_vehicles: List[alt.RailVehicle], - simulation_days: int, config: planner_config.TrainPlannerConfig ) -> pl.DataFrame: """ @@ -410,65 +472,15 @@ def calculate_dispatches_deterministic_hourly( ---------- demand: `DataFrame` or `LazyFrame` representing origin-destination demands (number of trains). rail_vehicles: List of `altrios.RailVehicle` objects. - simulation_days: Number of days of simulation to run. config: `TrainPlannerConfig` object. Outputs: ---------- Updated demand `DataFrame` or `LazyFrame` representing dispatches, each defined with an origin, destination, train type, number of (loaded and empty) cars, tonnage, and HP per ton requirement. """ - # Define the main function to generate demand trains with the updated rule - def generate_trains( - demand_hourly: pl.DataFrame, - target_num_cars_per_train:int - ) -> pl.DataFrame: - demand_hourly = demand_hourly.with_columns((pl.col("Origin") + "-" + pl.col("Destination")).alias("OD_Pair")) - grouped_data = (demand_hourly - .group_by("OD_Pair") - .agg( - pl.col("Number_of_Cars").sum().alias("Total_Cars"), - pl.col("Number_of_Cars").sum().mod(target_num_cars_per_train).alias("Remaining_Cars") - ) - .with_columns( - pl.col("Total_Cars").truediv(target_num_cars_per_train).round().add(pl.col("Remaining_Cars").gt(0)).alias("Max_Min_Cars") - ) - ) - - # Prepare a list to collect the results for all OD pairs - all_dispatch_data = [] - # Step 4: Loop through each unique OD pair to calculate dispatch data - for row in grouped_data.iter_rows(named=True): - od_pair = row['OD_Pair'] # This is the "OD_Pair" string like "Origin-Destination" - total_cars = row['Total_Cars'] # This is the "Total_Cars" value - - # Filter cars list for the specific OD pair - cars = demand_hourly.filter(pl.col("OD_Pair") == od_pair).select("Number_of_Cars").to_series().to_list() - - # Retrieve the max min_num_cars for this OD pair - max_min_cars = row['Max_Min_Cars'] - - # Calculate dispatch data for the current OD pair with the updated rule - dispatch_data = calculate_dispatch_data(total_cars, target_num_cars_per_train, od_pair, cars, max_min_cars) - - # Add the OD pair label to each entry in the dispatch data - dispatch_data_df = pl.DataFrame(dispatch_data, strict=False) - dispatch_data_df = dispatch_data_df.with_columns(pl.lit(od_pair).alias("OD_Pair")) - - # Ensure the "Border" column exists and is cast to Float64 - if "Border" in dispatch_data_df.columns: - dispatch_data_df = dispatch_data_df.with_columns( - pl.col("Border").cast(pl.Float64) - ) - - # Append the result to the list - all_dispatch_data.append(dispatch_data_df) - - # Combine all dispatch data into a single DataFrame - final_dispatch_df = pl.concat(all_dispatch_data, how="diagonal_relaxed") - - return final_dispatch_df - - target_num_cars_per_train = config.target_cars_per_train['Default'] #TODO make this flexible - dispatch_df = generate_trains(demand,target_num_cars_per_train) + min_num_cars_per_train=config.min_cars_per_train['Intermodal_Loaded'] #TODO make this flexible + target_num_cars_per_train=config.target_cars_per_train['Intermodal_Loaded'] #TODO make this flexible + demand_hourly = demand_hourly.with_columns((pl.col("Origin") + "-" + pl.col("Destination")).alias("OD_Pair")) + dispatch_df = generate_trains_deterministic_hourly(demand_hourly,target_num_cars_per_train, config.containers_per_car) od_border_time = [] border_time = dispatch_df["Border_Times"].to_list() od_pair_list = dispatch_df["OD_Pair"].to_list() @@ -483,16 +495,16 @@ def generate_trains( border_time_list= [[key] + values for key, values in grouped_data.items()] num_iterations = len(border_time_list[0]) schedule = find_minimum_waiting_time(num_iterations=num_iterations, - demand_hourly=demand, + demand_hourly=demand_hourly, border_time_list=border_time_list, - target_num_cars_per_train=target_num_cars_per_train + min_num_cars_per_train=min_num_cars_per_train, + target_num_cars_per_train=target_num_cars_per_train ) return schedule.pipe(formatScheduleColumns) def generate_dispatch_details( demand: pl.DataFrame, rail_vehicles: List[alt.RailVehicle], - simulation_days: int, config: planner_config.TrainPlannerConfig ) -> pl.DataFrame: """ @@ -503,14 +515,13 @@ def generate_dispatch_details( ---------- demand: `DataFrame` or `LazyFrame` representing origin-destination demands (number of trains). rail_vehicles: List of `altrios.RailVehicle` objects. - simulation_days: Number of days of simulation to run. config: `TrainPlannerConfig` object. Outputs: ---------- schedule: Tabulated dispatching time for each demand pair for each train type in hours """ - hours = simulation_days * 24 + hours = config.simulation_days * 24 grouping_vars = ["Origin", "Destination", "Train_Type"] return (demand .select(pl.exclude("Number_of_Trains").repeat_by("Number_of_Trains").explode()) diff --git a/python/altrios/train_planner/train_demand_generators.py b/python/altrios/train_planner/train_demand_generators.py index ee0178e1..19d3ecea 100644 --- a/python/altrios/train_planner/train_demand_generators.py +++ b/python/altrios/train_planner/train_demand_generators.py @@ -78,13 +78,15 @@ def generate_return_demand_intermodal(demand_subset: Union[pl.LazyFrame, pl.Data pl.concat_str(pl.min_horizontal("Origin", "Destination"), pl.lit("_"), pl.max_horizontal("Origin", "Destination")).alias("OD") ) .with_columns( - pl.col("Number_of_Cars").range().over("OD").name.suffix("_Return") + pl.col("Number_of_Cars", "Number_of_Containers").range().over("OD").name.suffix("_Return") ) .filter( - pl.col("Number_of_Cars") == pl.col("Number_of_Cars").max().over("OD") + pl.col("Number_of_Cars") == pl.col("Number_of_Cars").max().over("OD"), + pl.col("Number_of_Cars_Return") > 0 ) - .drop("OD", "Number_of_Cars") - .rename({"Number_of_Cars_Return": "Number_of_Cars"}) + .drop("OD", "Number_of_Cars", "Number_of_Containers") + .rename({"Number_of_Cars_Return": "Number_of_Cars", + "Number_of_Containers_Return": "Number_of_Containers"}) ) def generate_return_demand( @@ -104,18 +106,17 @@ def generate_return_demand( of returning the empty cars to their original nodes """ demand_subsets = demand.partition_by("Train_Type", as_dict = True) - return_demand = [] + return_demands = [] for train_type, demand_subset in demand_subsets.items(): train_type_label = train_type[0] if train_type_label in config.return_demand_generators: return_demand_generator = config.return_demand_generators[train_type_label] - temp = return_demand_generator(demand_subset, config) - print(temp) - return_demand.append(temp) + return_demand = return_demand_generator(demand_subset, config) + return_demands.append(return_demand) else: print(f'Return demand generator not implemented for train type: {train_type_label}') - demand_return = (pl.concat(return_demand, how="diagonal_relaxed") + demand_return = (pl.concat(return_demands, how="diagonal_relaxed") .filter(pl.col("Number_of_Cars") > 0) ) return demand_return @@ -288,8 +289,8 @@ def get_kg(veh): pl.when(pl.col("Car_Type").str.to_lowercase().str.contains("_empty")) .then(pl.col("KG_Empty") / utilities.KG_PER_TON) .otherwise(pl.col("KG") / utilities.KG_PER_TON) - .alias("Tons_Per_Car"), - pl.col("Car_Type").str.strip_suffix("_Loaded")) + .alias("Tons_Per_Car") + ) .drop(["KG_Empty","KG"]) ) @@ -379,7 +380,10 @@ def get_kg(veh): pl.col("Number_of_Cars").floordiv("Cars_Per_Train_Min") ]) ]) - ).cast(pl.UInt32).alias("Number_of_Trains") + ).cast(pl.UInt32).alias("Number_of_Trains"), + pl.col("Number_of_Cars_Loaded").mul(config.containers_per_car).alias("Number_of_Containers_Loaded"), + pl.col("Number_of_Cars_Empty").mul(config.containers_per_car).alias("Number_of_Containers_Empty"), + pl.lit(config.simulation_days).alias("Number_of_Days") ) .drop("Cars_Per_Train_Target_Loaded", "Cars_Per_Train_Target_Empty", "Cars_Per_Train_Min_Empty", "Cars_Per_Train_Min_Loaded") ) From f4df3922455fd8e6da113f32ffa2f0483734f6ec Mon Sep 17 00:00:00 2001 From: "Bruchon, Matthew" Date: Sun, 19 Jan 2025 23:32:39 -0500 Subject: [PATCH 39/50] fixed calculate_dispatch_data for diesel --- python/altrios/train_planner/schedulers.py | 66 ++++++++++------------ 1 file changed, 30 insertions(+), 36 deletions(-) diff --git a/python/altrios/train_planner/schedulers.py b/python/altrios/train_planner/schedulers.py index bf725747..a9bab16a 100644 --- a/python/altrios/train_planner/schedulers.py +++ b/python/altrios/train_planner/schedulers.py @@ -350,14 +350,15 @@ def calculate_dispatch_data( ## Apply the maximum min_num_cars value num_trains = int(max(num_trains, max_min_trains)) - accumulated_arrivals = (demand_hourly + new_accumulated_carloads = (demand_hourly .sort("Hour") - .with_columns(pl.col("Number_of_Containers").cum_sum().floordiv(containers_per_car).alias("Accumulated_Arrivals")) - .filter(pl.col("Accumulated_Arrivals") - pl.col("Accumulated_Arrivals").shift(1).fill_null(0.0) > 0) - .select("Hour", "Accumulated_Arrivals") + .with_columns(pl.col("Number_of_Containers").cum_sum().floordiv(containers_per_car).alias("Accumulated_Carloads")) + .with_columns((pl.col("Accumulated_Carloads") - pl.col("Accumulated_Carloads").shift(1).fill_null(0.0)).alias("New_Carloads")) + .filter(pl.col("New_Carloads") > 0) + .select("Hour", "New_Carloads") ) - planned_train_sizes = ( + planned_train_lengths = ( pl.DataFrame({ "Group": [1] * num_trains, #Unused, just needed for allocateIntegerEvenly to work, "Train_ID": list(range(num_trains)), @@ -365,48 +366,41 @@ def calculate_dispatch_data( }) # Divide containers into trains as evenly as possible .pipe(utilities.allocateIntegerEvenly, target="Cars", grouping_vars = ["Group"]) - .with_columns(pl.col("Cars").cum_sum().alias("Cumulative_Cars")) - .select("Train_ID", "Cars", "Cumulative_Cars") - #.join_where(accumulated_arrivals, pl.col("Cumulative_Cars") <= pl.col("Accumulated_Arrivals")) - #.sort("Train_ID", "Hour") + .sort("Train_ID") + .get_column("Cars") + .to_list() ) - p = 0 - for arrival in accumulated_arrivals.iter_rows(named=True): - accumulated_demand += arrival['Accumulated_Arrivals'] - if p == planned_train_sizes.height - 1: - - for train in planned_train_sizes.partition_by("Train_ID"): - dispatch_time = train.filter() - train_dispatch_times = [] - dispatched_container_counts = [] + dispatched_train_lengths = [] accumulated_demand = 0 p = 0 - for i, container_count in enumerate(containers): - accumulated_demand += container_count - if p == len(planned_container_counts) - 1: - train_dispatch_times.append(len(containers) - 1) + for arrival in new_accumulated_carloads.iter_rows(named=True): + accumulated_demand += arrival['New_Carloads'] + if p == len(planned_train_lengths) - 1: + train_dispatch_times.append(new_accumulated_carloads.get_column("Hour").max()) break - if accumulated_demand >= planned_container_counts[p]: - train_dispatch_times.append(i) - dispatched_container_counts.append(accumulated_demand) - total_containers -= accumulated_demand + if accumulated_demand >= planned_train_lengths[p]: + train_dispatch_times.append(arrival['Hour']) + dispatched_train_lengths.append(accumulated_demand) + total_containers -= (accumulated_demand * containers_per_car) accumulated_demand = 0 p += 1 - if p >= len(planned_container_counts): + if p >= len(planned_train_lengths): break - if len(train_dispatch_times) < len(planned_container_counts): - for _ in range(len(planned_container_counts) - len(train_dispatch_times)): + + if len(train_dispatch_times) < len(planned_train_lengths): + for _ in range(len(planned_train_lengths) - len(train_dispatch_times)): train_dispatch_times.append(train_dispatch_times[-1]+_+1) - dispatched_container_counts.append(total_containers) - if len(dispatched_container_counts) < len(planned_container_counts): - for _ in range(len(planned_container_counts) - len(dispatched_container_counts)): - dispatched_container_counts.append(0) + dispatched_train_lengths.append(total_containers / containers_per_car) + if len(dispatched_train_lengths) < len(planned_train_lengths): + for _ in range(len(planned_train_lengths) - len(dispatched_train_lengths)): + dispatched_train_lengths.append(0) + return { - "Border": planned_container_counts, + "Border": planned_train_lengths, "Border_Times": train_dispatch_times, - "Dispatched": dispatched_container_counts, + "Dispatched": dispatched_train_lengths, } # Define the main function to generate demand trains with the updated rule @@ -442,7 +436,7 @@ def generate_trains_deterministic_hourly( total_containers = row['Total_Containers'], target_num_cars_per_train = target_num_cars_per_train, od_pair = row['OD_Pair'], - containers = demand_hourly.filter(pl.col("OD_Pair") == row['OD_Pair']).sort("Hour"), + demand_hourly = demand_hourly.filter(pl.col("OD_Pair") == row['OD_Pair']).sort("Hour"), max_min_trains =row['Max_Min_Trains'], containers_per_car = containers_per_car) From 33b4a889942b440c8fce9532c26c35fe2eb948ba Mon Sep 17 00:00:00 2001 From: "Bruchon, Matthew" Date: Mon, 20 Jan 2025 02:43:26 -0500 Subject: [PATCH 40/50] more partial fixes --- python/altrios/train_planner/data_prep.py | 75 +++++- python/altrios/train_planner/planner.py | 2 +- .../altrios/train_planner/planner_config.py | 1 + python/altrios/train_planner/schedulers.py | 224 ++++++++++-------- .../train_planner/train_demand_generators.py | 54 +---- 5 files changed, 197 insertions(+), 159 deletions(-) diff --git a/python/altrios/train_planner/data_prep.py b/python/altrios/train_planner/data_prep.py index 380cf730..bcf3b0ea 100644 --- a/python/altrios/train_planner/data_prep.py +++ b/python/altrios/train_planner/data_prep.py @@ -115,11 +115,14 @@ def prep_hourly_demand( .rename({"Count": demand_col}) .select("Origin", "Destination", "Train_Type", "Hour", "Number_of_Days", demand_col) ) - return pl.concat([ - one_week, - one_week.with_columns(pl.col("Hour").add(24*7)), - one_week.with_columns(pl.col("Hour").add(24*7*2)) - ]) + return ( + pl.concat([ + one_week, + one_week.with_columns(pl.col("Hour").add(24*7)), + one_week.with_columns(pl.col("Hour").add(24*7*2)) + ]) + .sort("Origin", "Destination", "Train_Type", "Hour") + ) def append_loco_info(loco_info: pd.DataFrame) -> pd.DataFrame: if all(item in loco_info.columns for item in [ @@ -197,7 +200,7 @@ def build_locopool( hp_per_loco = config.loco_info['HP'].mean() - loco_mass * hp_per_ton initial_size_hp = (dispatch_schedule .with_columns((pl.col("Hour") // 24).cast(pl.Int32).alias("Day"), - pl.col("HP_Required").truediv(hp_per_loco).ceil().alias("Locos_Per_Dispatch")) + pl.col("HP_Required").truediv(hp_per_loco).ceil().mul(config.loco_pool_safety_factor).alias("Locos_Per_Dispatch")) .group_by("Day", "Origin") .agg(pl.col("Locos_Per_Dispatch").ceil().sum().alias("Locos_Per_Day_Per_Origin")) .select(pl.col("Locos_Per_Day_Per_Origin").max().cast(pl.Int64)).item() @@ -400,3 +403,63 @@ def configure_rail_vehicles( rv_to_use = [vehicle for vehicle in available_rail_vehicles if vehicle.freight_type in freight_types] return rv_to_use, n_cars_by_type + +def appendTonsAndHP( + df: Union[pl.DataFrame, pl.LazyFrame], + rail_vehicles, + freight_type_to_car_type, + config +) -> Union[pl.DataFrame, pl.LazyFrame]: + + hp_per_ton = pl.concat([ + (pl.DataFrame(this_dict) + .melt(variable_name="Train_Type", value_name="HP_Required_Per_Ton") + .with_columns(pl.lit(this_item).alias("O_D")) + .with_columns(pl.col("O_D").str.split("_").list.first().alias("Origin"), + pl.col("O_D").str.split("_").list.last().alias("Destination")) + ) + for this_item, this_dict in config.hp_required_per_ton.items() + ], how="horizontal_relaxed") + + def get_kg_empty(veh): + return veh.mass_static_base_kilograms + veh.axle_count * veh.mass_rot_per_axle_kilograms + def get_kg(veh): + return veh.mass_static_base_kilograms + veh.mass_freight_kilograms + veh.axle_count * veh.mass_rot_per_axle_kilograms + + tons_per_car = ( + pl.DataFrame({"Car_Type": pl.Series([rv.car_type for rv in rail_vehicles]), + "KG": [get_kg(rv) for rv in rail_vehicles], + "KG_Empty": [get_kg_empty(rv) for rv in rail_vehicles] + }) + .with_columns( + pl.when(pl.col("Car_Type").str.to_lowercase().str.contains("_empty")) + .then(pl.col("KG_Empty") / utilities.KG_PER_TON) + .otherwise(pl.col("KG") / utilities.KG_PER_TON) + .alias("Tons_Per_Car") + ) + .drop(["KG_Empty","KG"]) + ) + + return (df + .with_columns( + pl.when(pl.col("Train_Type").str.contains(pl.lit("_Empty"))) + .then(pl.col("Train_Type")) + .otherwise(pl.concat_str(pl.col("Train_Type").str.strip_suffix("_Loaded"), pl.lit("_Loaded"))) + .replace_strict(freight_type_to_car_type) + .alias("Car_Type") + ) + .join(tons_per_car, how="left", on="Car_Type") + # Merge on OD-specific hp_per_ton if the user specified any + .join(hp_per_ton.filter(pl.col("O_D") != pl.lit("Default")).drop("O_D"), + on=[pl.col("Origin"), pl.col("Destination"), pl.col("Train_Type").str.strip_suffix("_Empty").str.strip_suffix("_Loaded")], + how="left") + # Second, merge on defaults per train type + .join(hp_per_ton.filter((pl.col("O_D") =="Default")).drop(["O_D","Origin","Destination"]), + on=[pl.col("Train_Type").str.strip_suffix("_Empty").str.strip_suffix("_Loaded")], + how="left", + suffix="_Default") + .with_columns( + pl.coalesce("HP_Required_Per_Ton", "HP_Required_Per_Ton_Default").alias("HP_Required_Per_Ton") + ) + .drop(cs.ends_with("_Default") | cs.ends_with("_right")) + ) \ No newline at end of file diff --git a/python/altrios/train_planner/planner.py b/python/altrios/train_planner/planner.py index bcfe9e59..1f502c69 100644 --- a/python/altrios/train_planner/planner.py +++ b/python/altrios/train_planner/planner.py @@ -346,7 +346,7 @@ def run_train_planner( demand = train_demand_generators.generate_demand_trains(demand, demand_returns, demand_rebalancing, rail_vehicles, freight_type_to_car_type, config) config.dispatch_scheduler = schedulers.generate_dispatch_details - dispatch_schedule = config.dispatch_scheduler(demand, rail_vehicles, config) + dispatch_schedule = config.dispatch_scheduler(demand, rail_vehicles, freight_type_to_car_type, config) if loco_pool is None: loco_pool = data_prep.build_locopool(config=config, demand_file=demand, dispatch_schedule=dispatch_schedule) diff --git a/python/altrios/train_planner/planner_config.py b/python/altrios/train_planner/planner_config.py index 54c86685..679047fd 100644 --- a/python/altrios/train_planner/planner_config.py +++ b/python/altrios/train_planner/planner_config.py @@ -48,6 +48,7 @@ class TrainPlannerConfig: containers_per_car: int = 2 require_diesel: bool = False manifest_empty_return_ratio: float = 0.6 + loco_pool_safety_factor: float = 1.1 hp_required_per_ton: Dict = field(default_factory = lambda: { "Default": { "Unit": 2.0, diff --git a/python/altrios/train_planner/schedulers.py b/python/altrios/train_planner/schedulers.py index a9bab16a..dfbc2549 100644 --- a/python/altrios/train_planner/schedulers.py +++ b/python/altrios/train_planner/schedulers.py @@ -1,29 +1,29 @@ import math -from typing import List, Union +from typing import List, Union, Dict from collections import defaultdict import polars as pl import altrios as alt from altrios import utilities -from altrios.train_planner import planner_config +from altrios.train_planner import planner_config, data_prep def calculate_waiting_time_single_dispatch( cumulative_demand_control: int, last_dispatch: int, - demand_hourly: pl.DataFrame, + new_accumulated_carloads: pl.DataFrame, dispatch_hour: int, remaining_demand_list: pl.DataFrame, remaining_demand_list_control: pl.DataFrame, search_range: int, od_pair_loop: str, min_num_cars_per_train: int, - target_num_cars_per_train: int - + target_num_cars_per_train: int, + config: planner_config.TrainPlannerConfig ) -> tuple: """ Calculate the waiting time for a single dispatch using Polars DataFrames. """ # Initialize variables - direction_demand = demand_hourly.filter(pl.col("OD_Pair") == od_pair_loop) + direction_demand = new_accumulated_carloads.filter(pl.col("OD_Pair") == od_pair_loop) remaining_demand = 0 total_waiting_time = 0 total_waiting_time_before_dispatch = 0 @@ -32,13 +32,13 @@ def calculate_waiting_time_single_dispatch( remaining_demand_list = remaining_demand_list_control.clone() #Copy to avoid modifying original remaining_demand_tem = [] # Calculate cumulative demand up to the dispatch hour - end_hour = min(dispatch_hour + 1, len(demand_hourly)) + end_hour = min(dispatch_hour + 1, direction_demand.get_column("Hour").max()) hourly_demand = direction_demand.slice(last_dispatch, end_hour - last_dispatch) - cumulative_demand += hourly_demand["Number_of_Containers"].sum() + cumulative_demand += hourly_demand["Number_of_Cars"].sum() if remaining_demand_list.is_empty(): hourly_demand = hourly_demand.with_columns( - ((pl.col("Number_of_Containers") * (dispatch_hour - pl.col("Hour"))).alias("Waiting_Time")) + ((pl.col("Number_of_Cars") * (dispatch_hour - pl.col("Hour"))).alias("Waiting_Time")) ) total_waiting_time_before_dispatch = hourly_demand["Waiting_Time"].sum() total_waiting_time += hourly_demand["Waiting_Time"].sum() @@ -46,7 +46,7 @@ def calculate_waiting_time_single_dispatch( # If there is remaining demand, calculate waiting time for new and remaining demand else: hourly_demand = hourly_demand.with_columns( - ((pl.col("Number_of_Containers") * (dispatch_hour - pl.col("Hour"))).alias("Waiting_Time")) + ((pl.col("Number_of_Cars") * (dispatch_hour - pl.col("Hour"))).alias("Waiting_Time")) ) total_waiting_time_before_dispatch = hourly_demand["Waiting_Time"].sum() total_waiting_time += hourly_demand["Waiting_Time"].sum() @@ -68,15 +68,15 @@ def calculate_waiting_time_single_dispatch( # Update remaining demand list if there's no prior remaining demand if remaining_demand_list.height == 0: #remaining_demand_tem = [] - for row in hourly_demand.iter_rows(): + for row in hourly_demand.iter_rows(named=True): # Number_of_Containers is located at the 4th column - if row[3] > 0: - if dispatched_split >= row[3]: - dispatched_split -= row[3] + if row['Number_of_Cars'] > 0: + if dispatched_split >= row['Number_of_Cars']: + dispatched_split -= row['Number_of_Cars'] else: - remaining_demand_for_hour = row[3] - dispatched_split + remaining_demand_for_hour = row['Number_of_Cars'] - dispatched_split # Hour is located at the 5th column - remaining_demand_tem.append((remaining_demand_for_hour,row[4])) + remaining_demand_tem.append((remaining_demand_for_hour,row['Hour'])) # dispatched_split stop working from this hour to the end of this loop behavior dispatched_split = 0 # Filter `remaining_demand_tem` to include only positive Remaining_Demand values @@ -91,25 +91,16 @@ def calculate_waiting_time_single_dispatch( cumulative_demand = remaining_demand else: # Prepare the cumulative transformation approach - for row in remaining_demand_list.iter_rows(): - if dispatched_split >= row[0]: - dispatched_split -= row[0] - list_tem = list(row) - list_tem[0] = 0 - row = tuple(list_tem) - else: - row[0] -= dispatched_split - dispatched_split = 0 - remaining_demand_list = remaining_demand_list.filter(pl.col("Remaining_Demand") > 0) + dispatched_split -= min(dispatched_split, remaining_demand_list.get_column("Remaining_Demand").sum()) # If there is still dispatched capacity left, apply it to new demand within the range if dispatched_split > 0: - for row in hourly_demand.iter_rows(): - if row[3] > 0: - if dispatched_split >= row[3]: - dispatched_split -= row[3] + for row in hourly_demand.iter_rows(named=True): + if row['Number_of_Cars'] > 0: + if dispatched_split >= row['Number_of_Cars']: + dispatched_split -= row['Number_of_Cars'] else: - remaining_demand_for_hour = row[3] - dispatched_split - remaining_demand_tem.append((remaining_demand_for_hour,row[4])) + remaining_demand_for_hour = row['Number_of_Cars'] - dispatched_split + remaining_demand_tem.append((remaining_demand_for_hour,row['Hour'])) dispatched_split = 0 remaining_demand_list = pl.DataFrame({"Remaining_Demand": [rd[0] for rd in remaining_demand_tem],"Hour": [rd[1] for rd in remaining_demand_tem]}).filter(pl.col("Remaining_Demand") > 0) cumulative_demand = remaining_demand @@ -122,13 +113,13 @@ def calculate_waiting_time_single_dispatch( cumulative_demand = cumulative_demand # Filter demand for future hours in the specified search range - future_demand = demand_hourly.filter( - (pl.col("Hour") > dispatch_hour) & (pl.col("Hour") < min(last_dispatch + search_range, len(demand_hourly))) + future_demand = direction_demand.filter( + (pl.col("Hour") > dispatch_hour) & (pl.col("Hour") < min(last_dispatch + search_range, direction_demand.get_column("Hour").max())) ) # Calculate waiting time for each future hour future_demand = future_demand.with_columns( - ((last_dispatch + search_range - 1 - pl.col("Hour")) * pl.col("Number_of_Containers")).alias("Waiting_Time") + ((last_dispatch + search_range - 1 - pl.col("Hour")) * pl.col("Number_of_Cars")).alias("Waiting_Time") ) # Sum up all waiting times for future demand @@ -151,28 +142,30 @@ def find_minimum_waiting_time( demand_hourly: pl.DataFrame, border_time_list: list, min_num_cars_per_train: int, - target_num_cars_per_train: int + target_num_cars_per_train: int, + config: planner_config.TrainPlannerConfig ) -> pl.DataFrame: """ Find the minimum waiting time for dispatches using Polars DataFrame. """ + group_cols = ["Origin", "Destination", "OD_Pair", "Train_Type"] + new_accumulated_carloads = get_new_accumulated_carloads(demand_hourly, group_cols, containers_per_car = config.containers_per_car).rename({"New_Carloads": "Number_of_Cars"}) for i in range(len(border_time_list)): od_pair_loop = border_time_list[i][0] reverse_pair = "-".join(od_pair_loop.split("-")[::-1]) - directional_total_cars = demand_hourly.filter(pl.col("OD_Pair") == od_pair_loop)["Number_of_Cars"].sum() - reverse_total_cars = demand_hourly.filter(pl.col("OD_Pair") == reverse_pair)["Number_of_Cars"].sum() + directional_total_cars = new_accumulated_carloads.filter(pl.col("OD_Pair") == od_pair_loop)["Number_of_Cars"].sum() + reverse_total_cars = new_accumulated_carloads.filter(pl.col("OD_Pair") == reverse_pair)["Number_of_Cars"].sum() if directional_total_cars > reverse_total_cars: - empty_containers = directional_total_cars - reverse_total_cars - empty_containers_o_d = reverse_pair + empty_cars = directional_total_cars - reverse_total_cars + empty_cars_o_d = reverse_pair else: - empty_containers = reverse_total_cars - directional_total_cars - empty_containers_o_d = od_pair_loop + empty_cars = reverse_total_cars - directional_total_cars + empty_cars_o_d = od_pair_loop print(f"total cars for {od_pair_loop} is {directional_total_cars}") print(f"reverse_total_cars for {reverse_pair} is {reverse_total_cars}") - #print(f"empty_containers for {empty_containers_o_d} is {empty_containers}") - print(f"empty_containers for {empty_containers_o_d} is {empty_containers}") + #print(f"empty_containers for {empty_cars_o_d} is {empty_containers}") + print(f"empty_containers for {empty_cars_o_d} is {empty_cars}") print(f"There are {len(border_time_list[0])-1} trains to dispatch") - empty_return = [] final_dispatch_rows = [] for j in range(len(border_time_list)): start_hour = 0 @@ -194,9 +187,9 @@ def find_minimum_waiting_time( #print(f"origin is {origin}") #print(f"destination is {destination}") #print(demand) - total_containers = demand_hourly.filter(pl.col("OD_Pair") == od_pair_loop)["Number_of_Cars"].sum() + total_cars = new_accumulated_carloads.filter(pl.col("OD_Pair") == od_pair_loop)["Number_of_Cars"].sum() for i in range(2, num_iterations): - if total_containers - total_dispatched == 0: + if total_cars - total_dispatched == 0: dispatched_list.append(0.0) search_range = border_time_list[j][i] - start_hour # DataFrame to accumulate dispatch hour info @@ -210,7 +203,7 @@ def find_minimum_waiting_time( }) for dispatch_hour in range(start_hour, start_hour + search_range): total_waiting_time_before_dispatch, total_waiting_time, remaining_demand_list, cumulative_demand, dispatched = calculate_waiting_time_single_dispatch( - cumulative_demand_control, last_dispatch, demand_hourly, dispatch_hour, remaining_demand_list_control, remaining_demand_list_control.clone(), search_range,od_pair_loop,min_num_cars_per_train, target_num_cars_per_train + cumulative_demand_control, last_dispatch, new_accumulated_carloads, dispatch_hour, remaining_demand_list_control, remaining_demand_list_control.clone(), search_range,od_pair_loop,min_num_cars_per_train, target_num_cars_per_train, config ) # Append data for each dispatch hour, ensuring consistent types new_row = pl.DataFrame({ @@ -256,13 +249,12 @@ def find_minimum_waiting_time( # Add the dispatch hour to the list dispatch_time.append(min_waiting_time_hour) - remaining_to_dispatch = total_containers - total_dispatched - final_waiting_time = remaining_to_dispatch * (168 - start_hour) + remaining_to_dispatch = total_cars - total_dispatched + final_waiting_time = remaining_to_dispatch * (demand_hourly.get_column("Hour").max()+1 - start_hour) waiting_time_total += final_waiting_time - dispatch_time.append(167) # Assuming final dispatch at the end of the period + dispatch_time.append(demand_hourly.get_column("Hour").max()) # Assuming final dispatch at the end of the period dispatched_list.append(remaining_to_dispatch) dispatch_df_row = [] - print(dispatched_list) for i in range(len(dispatched_list)): dispatch_df_row.append({ "Origin": origin, @@ -272,30 +264,19 @@ def find_minimum_waiting_time( "Cars_Per_Train_Empty": 0.0, "Target_Cars_Per_Train": float(target_num_cars_per_train), "Number_of_Cars_Total": dispatched_list[i], - "Tons_Per_Train_Total": dispatched_list[i]*98.006382, - "HP_Required_Per_Ton": 4.0, "Hour":float(dispatch_time[i]) }) - if od_pair_loop == empty_containers_o_d: + if od_pair_loop == empty_cars_o_d: dispatch_df_row = [] - for i in range(len(dispatched_list)): - if empty_containers > target_num_cars_per_train-dispatched_list[i]: - empty_return.append(target_num_cars_per_train-dispatched_list[i]) - empty_containers -= (target_num_cars_per_train-dispatched_list[i]) - else: - empty_return.append(empty_containers) - empty_containers = 0.0 for i in range(len(dispatched_list)): dispatch_df_row.append({ "Origin": origin, "Destination": destination, "Train_Type": "Intermodal", "Cars_Per_Train_Loaded": dispatched_list[i], - "Cars_Per_Train_Empty": empty_return[i], + "Cars_Per_Train_Empty": 0.0, "Target_Cars_Per_Train": float(target_num_cars_per_train), - "Number_of_Cars_Total": dispatched_list[i]+empty_return[i], - "Tons_Per_Train_Total": dispatched_list[i]*98.006382 + empty_return[i]*39.106152 , - "HP_Required_Per_Ton": 4.0, + "Number_of_Cars_Total": dispatched_list[i], "Hour":float(dispatch_time[i]) }) #print(f"dispatch_df_row is {dispatch_df_row}") @@ -303,8 +284,6 @@ def find_minimum_waiting_time( #print(f"final_dispatch_rows is {final_dispatch_rows}") dispatch_times = pl.DataFrame(final_dispatch_rows) dispatch_times = dispatch_times.sort("Hour") - print(dispatch_times) - print(f"empty_return is {empty_return}") return dispatch_times def formatScheduleColumns( @@ -335,6 +314,29 @@ def formatScheduleColumns( .sort(["Hour","Origin","Destination","Train_Type"]) ) +def get_new_accumulated_carloads( + demand_hourly: Union[pl.DataFrame, pl.LazyFrame], + group_cols: List[str], + containers_per_car: int +) -> Union[pl.DataFrame, pl.LazyFrame]: + if group_cols is None: + return (demand_hourly + .sort("Hour") + .with_columns(pl.col("Number_of_Containers").cum_sum().floordiv(containers_per_car).alias("Accumulated_Carloads")) + .with_columns((pl.col("Accumulated_Carloads") - pl.col("Accumulated_Carloads").shift(1).fill_null(0.0)).alias("New_Carloads")) + .filter(pl.col("New_Carloads") > 0) + .select("Hour", "New_Carloads") + ) + else: + return (demand_hourly + .sort(group_cols + ["Hour"]) + .with_columns(pl.col("Number_of_Containers").cum_sum().over(group_cols).floordiv(containers_per_car).alias("Accumulated_Carloads")) + .with_columns((pl.col("Accumulated_Carloads") - pl.col("Accumulated_Carloads").shift(1).over(group_cols).fill_null(0.0)).alias("New_Carloads")) + .filter(pl.col("New_Carloads") > 0) + .select(group_cols + ["Hour", "New_Carloads"]) + ) + + def calculate_dispatch_data( total_containers, target_num_cars_per_train, @@ -346,17 +348,9 @@ def calculate_dispatch_data( num_trains = ( total_containers // (target_num_cars_per_train * containers_per_car) + (1 if remaining_containers > 0 else 0) ) - - ## Apply the maximum min_num_cars value num_trains = int(max(num_trains, max_min_trains)) - new_accumulated_carloads = (demand_hourly - .sort("Hour") - .with_columns(pl.col("Number_of_Containers").cum_sum().floordiv(containers_per_car).alias("Accumulated_Carloads")) - .with_columns((pl.col("Accumulated_Carloads") - pl.col("Accumulated_Carloads").shift(1).fill_null(0.0)).alias("New_Carloads")) - .filter(pl.col("New_Carloads") > 0) - .select("Hour", "New_Carloads") - ) + new_accumulated_carloads = get_new_accumulated_carloads(demand_hourly, group_cols = None, containers_per_car = containers_per_car) planned_train_lengths = ( pl.DataFrame({ @@ -397,11 +391,17 @@ def calculate_dispatch_data( for _ in range(len(planned_train_lengths) - len(dispatched_train_lengths)): dispatched_train_lengths.append(0) - return { - "Border": planned_train_lengths, - "Border_Times": train_dispatch_times, - "Dispatched": dispatched_train_lengths, - } + return ( + pl.DataFrame({ + "Dispatch_Time": train_dispatch_times, + "Number_of_Cars_Planned": planned_train_lengths, + "Number_of_Cars_Dispatched": dispatched_train_lengths + }) + .with_columns( + (pl.col("Number_of_Cars_Planned") * containers_per_car).alias("Number_of_Containers_Planned"), + (pl.col("Number_of_Cars_Dispatched") * containers_per_car).alias("Number_of_Containers_Dispatched") + ) + ) # Define the main function to generate demand trains with the updated rule def generate_trains_deterministic_hourly( @@ -439,25 +439,21 @@ def generate_trains_deterministic_hourly( demand_hourly = demand_hourly.filter(pl.col("OD_Pair") == row['OD_Pair']).sort("Hour"), max_min_trains =row['Max_Min_Trains'], containers_per_car = containers_per_car) - - # Add the OD pair label to each entry in the dispatch data - dispatch_data_df = (pl.DataFrame(dispatch_data, strict=False) - .with_columns( - pl.lit(od_pair).alias("OD_Pair"), - pl.col("Border").cast(pl.Float64) + # Append the result to the list + all_dispatch_data.append( + dispatch_data.with_columns( + pl.lit(row['Origin']).alias("Origin"), + pl.lit(row['Destination']).alias("Destination"), + pl.lit(row['OD_Pair']).alias("OD_Pair") ) ) - # Append the result to the list - all_dispatch_data.append(dispatch_data_df) - - # Combine all dispatch data into a single DataFrame - final_dispatch_df = pl.concat(all_dispatch_data, how="diagonal_relaxed") - return final_dispatch_df + return pl.concat(all_dispatch_data, how="diagonal_relaxed") def calculate_dispatches_deterministic_hourly( demand_hourly: pl.DataFrame, rail_vehicles: List[alt.RailVehicle], + freight_type_to_car_type: Dict[str, str], config: planner_config.TrainPlannerConfig ) -> pl.DataFrame: """ @@ -475,30 +471,56 @@ def calculate_dispatches_deterministic_hourly( target_num_cars_per_train=config.target_cars_per_train['Intermodal_Loaded'] #TODO make this flexible demand_hourly = demand_hourly.with_columns((pl.col("Origin") + "-" + pl.col("Destination")).alias("OD_Pair")) dispatch_df = generate_trains_deterministic_hourly(demand_hourly,target_num_cars_per_train, config.containers_per_car) - od_border_time = [] - border_time = dispatch_df["Border_Times"].to_list() + od_dispatch_times = [] + dispatch_times = dispatch_df["Dispatch_Time"].to_list() od_pair_list = dispatch_df["OD_Pair"].to_list() for i in range(len(od_pair_list)): od_border_list_sub =[] od_border_list_sub.append(od_pair_list[i]) - od_border_list_sub.append(border_time[i]) - od_border_time.append(od_border_list_sub) + od_border_list_sub.append(dispatch_times[i]) + od_dispatch_times.append(od_border_list_sub) grouped_data = defaultdict(list) - for od_pair, value in od_border_time: + for od_pair, value in od_dispatch_times: grouped_data[od_pair].append(value) border_time_list= [[key] + values for key, values in grouped_data.items()] num_iterations = len(border_time_list[0]) + schedule = find_minimum_waiting_time(num_iterations=num_iterations, demand_hourly=demand_hourly, border_time_list=border_time_list, min_num_cars_per_train=min_num_cars_per_train, - target_num_cars_per_train=target_num_cars_per_train + target_num_cars_per_train=target_num_cars_per_train, + config=config + ) + return (schedule + #TODO: this doesn't handle tons correctly for train type empty + .pipe(data_prep.appendTonsAndHP, rail_vehicles, freight_type_to_car_type, config) + .rename({"Cars_Per_Train_Loaded": "Cars_Loaded", + "Cars_Per_Train_Empty": "Cars_Empty"}) + .with_columns( + (pl.col("Cars_Loaded") + pl.col("Cars_Empty")).alias("Number_of_Cars"), + pl.col("Tons_Per_Car").mul("Cars_Loaded").alias("Tons_Per_Train"), + pl.col("Tons_Per_Car").mul("Cars_Loaded").mul("HP_Required_Per_Ton").alias("HP_Required"), + pl.when(pl.col("Train_Type").str.contains("Intermodal")) + .then(pl.col("Cars_Loaded").mul(config.containers_per_car)) + .otherwise(0) + .alias("Containers_Loaded"), + pl.when(pl.col("Train_Type").str.contains("Intermodal")) + .then(pl.col("Cars_Empty").mul(config.containers_per_car)) + .otherwise(0) + .alias("Containers_Empty"), + ) + .select("Hour", "Origin", "Destination", "Train_Type", + "Number_of_Cars", "Cars_Loaded", "Cars_Empty", "Containers_Empty", "Containers_Loaded", + "Tons_Per_Train", "HP_Required" + ) + .sort(["Hour","Origin","Destination","Train_Type"]) ) - return schedule.pipe(formatScheduleColumns) def generate_dispatch_details( demand: pl.DataFrame, rail_vehicles: List[alt.RailVehicle], + freight_type_to_car_type: Dict[str, str], config: planner_config.TrainPlannerConfig ) -> pl.DataFrame: """ diff --git a/python/altrios/train_planner/train_demand_generators.py b/python/altrios/train_planner/train_demand_generators.py index 19d3ecea..8f4c1483 100644 --- a/python/altrios/train_planner/train_demand_generators.py +++ b/python/altrios/train_planner/train_demand_generators.py @@ -4,8 +4,7 @@ import pandas as pd import numpy as np import altrios as alt -from altrios import utilities -from altrios.train_planner import planner_config +from altrios.train_planner import planner_config, data_prep def get_default_return_demand_generators() -> Dict[str, Callable]: return { @@ -263,65 +262,18 @@ def generate_demand_trains( .filter(pl.col("Train_Type") == pl.lit("Default")) .select("Cars_Per_Train_Target").item() ) - #Prepare hp_per_ton requirements to merge onto the demand DataFrame - hp_per_ton = pl.concat([ - (pl.DataFrame(this_dict) - .melt(variable_name="Train_Type", value_name="HP_Required_Per_Ton") - .with_columns(pl.lit(this_item).alias("O_D")) - .with_columns(pl.col("O_D").str.split("_").list.first().alias("Origin"), - pl.col("O_D").str.split("_").list.last().alias("Destination")) - ) - for this_item, this_dict in config.hp_required_per_ton.items() - ], how="horizontal_relaxed") - - #Prepare ton_per_car requirements to merge onto the demand DataFrame - def get_kg_empty(veh): - return veh.mass_static_base_kilograms + veh.axle_count * veh.mass_rot_per_axle_kilograms - def get_kg(veh): - return veh.mass_static_base_kilograms + veh.mass_freight_kilograms + veh.axle_count * veh.mass_rot_per_axle_kilograms - - tons_per_car = ( - pl.DataFrame({"Car_Type": pl.Series([rv.car_type for rv in rail_vehicles]), - "KG": [get_kg(rv) for rv in rail_vehicles], - "KG_Empty": [get_kg_empty(rv) for rv in rail_vehicles] - }) - .with_columns( - pl.when(pl.col("Car_Type").str.to_lowercase().str.contains("_empty")) - .then(pl.col("KG_Empty") / utilities.KG_PER_TON) - .otherwise(pl.col("KG") / utilities.KG_PER_TON) - .alias("Tons_Per_Car") - ) - .drop(["KG_Empty","KG"]) - ) - + demand = (pl.concat([demand, demand_returns, demand_rebalancing], how="diagonal_relaxed") .group_by("Origin","Destination", "Train_Type") .agg(pl.col("Number_of_Cars").sum()) .filter(pl.col("Number_of_Cars") > 0) - .with_columns( - pl.when(pl.col("Train_Type").str.contains(pl.lit("_Empty"))) - .then(pl.col("Train_Type")) - .otherwise(pl.concat_str(pl.col("Train_Type").str.strip_suffix("_Loaded"), pl.lit("_Loaded"))) - .replace_strict(freight_type_to_car_type) - .alias("Car_Type") - ) - .join(tons_per_car, how="left", on="Car_Type") - # Merge on OD-specific hp_per_ton if the user specified any - .join(hp_per_ton.drop("O_D"), - on=[pl.col("Origin"), pl.col("Destination"), pl.col("Train_Type").str.strip_suffix("_Empty").str.strip_suffix("_Loaded")], - how="left") - # Second, merge on defaults per train type - .join(hp_per_ton.filter((pl.col("O_D") =="Default")).drop(["O_D","Origin","Destination"]), - on=[pl.col("Train_Type").str.strip_suffix("_Empty").str.strip_suffix("_Loaded")], - how="left", - suffix="_Default") + .pipe(data_prep.appendTonsAndHP, rail_vehicles, freight_type_to_car_type, config) # Merge on cars_per_train_min if the user specified any .join(cars_per_train_min, on=["Train_Type"], how="left") # Merge on cars_per_train_target if the user specified any .join(cars_per_train_target, on=["Train_Type"], how="left") # Fill in defaults per train type wherever the user didn't specify OD-specific hp_per_ton .with_columns( - pl.coalesce("HP_Required_Per_Ton", "HP_Required_Per_Ton_Default").alias("HP_Required_Per_Ton"), pl.col("Cars_Per_Train_Min").fill_null(cars_per_train_min_default), pl.col("Cars_Per_Train_Target").fill_null(cars_per_train_target_default), ) From 55e31d4824d925a96589a13f9b3ee81c14a38563 Mon Sep 17 00:00:00 2001 From: "Bruchon, Matthew" Date: Mon, 20 Jan 2025 18:27:38 -0500 Subject: [PATCH 41/50] debugging --- python/altrios/metric_calculator.py | 2 +- python/altrios/train_planner/data_prep.py | 1 + python/altrios/train_planner/planner.py | 6 +- python/altrios/train_planner/schedulers.py | 140 ++++++++++++++++-- .../train_planner/train_demand_generators.py | 14 +- 5 files changed, 145 insertions(+), 18 deletions(-) diff --git a/python/altrios/metric_calculator.py b/python/altrios/metric_calculator.py index a8df5fc1..32f7cfb0 100644 --- a/python/altrios/metric_calculator.py +++ b/python/altrios/metric_calculator.py @@ -475,7 +475,7 @@ def calculate_freight_moved( metric("Freight_Moved", units, container_counts.get_column("Containers_Loaded").item() * annualizer, "Loaded", year=info.scenario_year), metric("Freight_Moved", units, container_counts.get_column("Containers_Empty").item() * annualizer, "Loaded", year=info.scenario_year), ]) - elif units == "detailed_car_counts": + elif units == "detailed car counts": kilometers = (pl.DataFrame(data = {"car-km": [sim.get_kilometers(annualize=info.annualize) for sim in info.sims.tolist()]}) .with_row_index("idx") .with_columns( diff --git a/python/altrios/train_planner/data_prep.py b/python/altrios/train_planner/data_prep.py index bcf3b0ea..a5f335c3 100644 --- a/python/altrios/train_planner/data_prep.py +++ b/python/altrios/train_planner/data_prep.py @@ -121,6 +121,7 @@ def prep_hourly_demand( one_week.with_columns(pl.col("Hour").add(24*7)), one_week.with_columns(pl.col("Hour").add(24*7*2)) ]) + .with_columns(pl.col("Number_of_Days").mul(3)) .sort("Origin", "Destination", "Train_Type", "Hour") ) diff --git a/python/altrios/train_planner/planner.py b/python/altrios/train_planner/planner.py index 1f502c69..1bfc94f6 100644 --- a/python/altrios/train_planner/planner.py +++ b/python/altrios/train_planner/planner.py @@ -328,13 +328,13 @@ def run_train_planner( if (config.dispatch_scheduler is None) and ("Hour" in demand.collect_schema()): if "Number_of_Containers" in demand.collect_schema(): demand = (demand - .group_by("Origin", "Destination", "Train_Type") + .group_by("Origin", "Destination", "Number_of_Days", "Train_Type") .agg(pl.col("Number_of_Containers").sum()) .with_columns(pl.col("Number_of_Containers").truediv(config.containers_per_car).ceil().alias("Number_of_Cars")) ) else: demand = (demand - .group_by("Origin", "Destination", "Train_Type") + .group_by("Origin", "Destination", "Number_of_Days", "Train_Type") .agg(pl.col("Number_of_Cars").sum()) ) if "Hour" not in demand.schema: @@ -344,7 +344,7 @@ def run_train_planner( if config.dispatch_scheduler is None: demand = train_demand_generators.generate_demand_trains(demand, demand_returns, demand_rebalancing, rail_vehicles, freight_type_to_car_type, config) - config.dispatch_scheduler = schedulers.generate_dispatch_details + config.dispatch_scheduler = schedulers.dispatch_uniform_demand_uniform_departure dispatch_schedule = config.dispatch_scheduler(demand, rail_vehicles, freight_type_to_car_type, config) diff --git a/python/altrios/train_planner/schedulers.py b/python/altrios/train_planner/schedulers.py index dfbc2549..2d1d1e1f 100644 --- a/python/altrios/train_planner/schedulers.py +++ b/python/altrios/train_planner/schedulers.py @@ -2,14 +2,15 @@ from typing import List, Union, Dict from collections import defaultdict import polars as pl +import polars.selectors as cs import altrios as alt from altrios import utilities -from altrios.train_planner import planner_config, data_prep +from altrios.train_planner import planner_config, data_prep, train_demand_generators def calculate_waiting_time_single_dispatch( cumulative_demand_control: int, last_dispatch: int, - new_accumulated_carloads: pl.DataFrame, + demand_hourly: pl.DataFrame, dispatch_hour: int, remaining_demand_list: pl.DataFrame, remaining_demand_list_control: pl.DataFrame, @@ -23,7 +24,7 @@ def calculate_waiting_time_single_dispatch( Calculate the waiting time for a single dispatch using Polars DataFrames. """ # Initialize variables - direction_demand = new_accumulated_carloads.filter(pl.col("OD_Pair") == od_pair_loop) + direction_demand = demand_hourly.filter(pl.col("OD_Pair") == od_pair_loop) remaining_demand = 0 total_waiting_time = 0 total_waiting_time_before_dispatch = 0 @@ -150,6 +151,11 @@ def find_minimum_waiting_time( """ group_cols = ["Origin", "Destination", "OD_Pair", "Train_Type"] new_accumulated_carloads = get_new_accumulated_carloads(demand_hourly, group_cols, containers_per_car = config.containers_per_car).rename({"New_Carloads": "Number_of_Cars"}) + demand_hourly = (demand_hourly + .join(new_accumulated_carloads, how="left", on=["Origin", "Destination", "Train_Type", "Hour"]) + .with_columns(pl.col("Number_of_Cars").fill_null(0.0)) + .drop(cs.ends_with("_right") | cs.by_name("Number_of_Containers")) + ) for i in range(len(border_time_list)): od_pair_loop = border_time_list[i][0] reverse_pair = "-".join(od_pair_loop.split("-")[::-1]) @@ -203,7 +209,7 @@ def find_minimum_waiting_time( }) for dispatch_hour in range(start_hour, start_hour + search_range): total_waiting_time_before_dispatch, total_waiting_time, remaining_demand_list, cumulative_demand, dispatched = calculate_waiting_time_single_dispatch( - cumulative_demand_control, last_dispatch, new_accumulated_carloads, dispatch_hour, remaining_demand_list_control, remaining_demand_list_control.clone(), search_range,od_pair_loop,min_num_cars_per_train, target_num_cars_per_train, config + cumulative_demand_control, last_dispatch, demand_hourly, dispatch_hour, remaining_demand_list_control, remaining_demand_list_control.clone(), search_range,od_pair_loop,min_num_cars_per_train, target_num_cars_per_train, config ) # Append data for each dispatch hour, ensuring consistent types new_row = pl.DataFrame({ @@ -317,24 +323,28 @@ def formatScheduleColumns( def get_new_accumulated_carloads( demand_hourly: Union[pl.DataFrame, pl.LazyFrame], group_cols: List[str], - containers_per_car: int + containers_per_car: int, + filter_zero: bool = True ) -> Union[pl.DataFrame, pl.LazyFrame]: if group_cols is None: - return (demand_hourly + df = (demand_hourly .sort("Hour") .with_columns(pl.col("Number_of_Containers").cum_sum().floordiv(containers_per_car).alias("Accumulated_Carloads")) .with_columns((pl.col("Accumulated_Carloads") - pl.col("Accumulated_Carloads").shift(1).fill_null(0.0)).alias("New_Carloads")) - .filter(pl.col("New_Carloads") > 0) .select("Hour", "New_Carloads") ) else: - return (demand_hourly + df = (demand_hourly .sort(group_cols + ["Hour"]) .with_columns(pl.col("Number_of_Containers").cum_sum().over(group_cols).floordiv(containers_per_car).alias("Accumulated_Carloads")) .with_columns((pl.col("Accumulated_Carloads") - pl.col("Accumulated_Carloads").shift(1).over(group_cols).fill_null(0.0)).alias("New_Carloads")) - .filter(pl.col("New_Carloads") > 0) .select(group_cols + ["Hour", "New_Carloads"]) ) + if filter_zero: + df = (df + .filter(pl.col("New_Carloads") > 0) + ) + return df def calculate_dispatch_data( @@ -450,7 +460,7 @@ def generate_trains_deterministic_hourly( return pl.concat(all_dispatch_data, how="diagonal_relaxed") -def calculate_dispatches_deterministic_hourly( +def dispatch_hourly_demand_optimized_departure( demand_hourly: pl.DataFrame, rail_vehicles: List[alt.RailVehicle], freight_type_to_car_type: Dict[str, str], @@ -517,7 +527,7 @@ def calculate_dispatches_deterministic_hourly( .sort(["Hour","Origin","Destination","Train_Type"]) ) -def generate_dispatch_details( +def dispatch_uniform_demand_uniform_departure( demand: pl.DataFrame, rail_vehicles: List[alt.RailVehicle], freight_type_to_car_type: Dict[str, str], @@ -563,4 +573,110 @@ def generate_dispatch_details( * pl.col("Interval")).alias("Hour") ) .pipe(formatScheduleColumns, config = config) - ) \ No newline at end of file + ) + +def dispatch_hourly_demand_uniform_departure( + demand_hourly: pl.DataFrame, + rail_vehicles: List[alt.RailVehicle], + freight_type_to_car_type: Dict[str, str], + config: planner_config.TrainPlannerConfig +) -> pl.DataFrame: + + if "Number_of_Containers" in demand_hourly.collect_schema(): + demand_aggregate = (demand_hourly + .group_by("Origin", "Destination", "Number_of_Days", "Train_Type") + .agg(pl.col("Number_of_Containers").sum()) + .with_columns(pl.col("Number_of_Containers").truediv(config.containers_per_car).ceil().alias("Number_of_Cars")) + ) + else: + demand_aggregate = (demand_hourly + .group_by("Origin", "Destination", "Number_of_Days", "Train_Type") + .agg(pl.col("Number_of_Cars").sum()) + ) + + demand_returns = train_demand_generators.generate_return_demand(demand_aggregate, config) + demand_rebalancing = pl.DataFrame() + if demand_aggregate.filter(pl.col("Train_Type").str.contains("Manifest")).height > 0: + nodes = pl.concat( + [demand_aggregate.get_column("Origin"), + demand_aggregate.get_column("Destination")]).unique().sort() + demand_rebalancing = train_demand_generators.generate_manifest_rebalancing_demand(demand_aggregate, nodes, config) + + demand = train_demand_generators.generate_demand_trains(demand_aggregate, demand_returns, demand_rebalancing, rail_vehicles, freight_type_to_car_type, config) + + departure_schedule = ( + dispatch_uniform_demand_uniform_departure(demand, rail_vehicles, freight_type_to_car_type, config) + .select("Hour", "Origin", "Destination", "Train_Type") + ) + new_carloads = ( + get_new_accumulated_carloads(demand_hourly, group_cols=["Origin", "Destination", "Train_Type"], containers_per_car=config.containers_per_car, filter_zero=False) + .with_columns(pl.col("New_Carloads").cum_sum().over("Origin", "Destination", "Train_Type").alias("Cumulative_Carloads")) + .drop("New_Carloads") + .sort("Origin", "Destination", "Train_Type", "Hour") + ) + departure_schedule = (departure_schedule + .sort("Origin", "Destination", "Train_Type", "Hour") + .join_asof( + new_carloads.with_columns(pl.col("Hour").cast(pl.Float64)), + by=["Origin", "Destination", "Train_Type"], + on="Hour", + strategy="backward") + .sort("Origin", "Destination", "Train_Type", "Hour") + .with_columns((pl.col("Cumulative_Carloads") - pl.col("Cumulative_Carloads").shift(1).over("Origin", "Destination", "Train_Type").fill_null(0.0)).alias("New_Cumulative_Carloads")) + ) + + od_departures_revised = [] + max_train_length = math.floor(config.target_cars_per_train["Intermodal_Loaded"] * 1.1) + min_train_length = config.min_cars_per_train["Intermodal_Loaded"] + for od_departures in departure_schedule.partition_by(["Origin", "Destination", "Train_Type"], maintain_order=True): + train_lengths = od_departures.get_column("New_Cumulative_Carloads").to_list() + for i in range(len(train_lengths)): + if (train_lengths[i] > max_train_length) and (i < len(train_lengths) - 1): + train_lengths[i+1] += (train_lengths[i] - max_train_length) + train_lengths[i] = max_train_length + elif (train_lengths[i] < min_train_length) and (i < len(train_lengths) - 1): + train_lengths[i+1] += train_lengths[i] + train_lengths[i] = 0 + + if train_lengths[len(train_lengths) - 1] > max_train_length: + print(f'Unsupported case: final train too long ({train_lengths[len(train_lengths) - 1]} cars)') + elif train_lengths[len(train_lengths) - 1] < min_train_length: + if train_lengths[len(train_lengths) - 1] + train_lengths[len(train_lengths) - 2] <= max_train_length: + train_lengths[len(train_lengths) - 2] += train_lengths[len(train_lengths) - 1] + train_lengths[len(train_lengths) - 1] = 0 + else: + new_val = (train_lengths[len(train_lengths) - 2] + train_lengths[len(train_lengths) - 1]) / 2 + train_lengths[len(train_lengths) - 2] = math.ceil(new_val) + train_lengths[len(train_lengths) - 1] = math.floor(new_val) + + od_departures = od_departures.with_columns(pl.Series("Carloads", train_lengths, strict=False)) + od_departures_revised.append(od_departures) + + departure_schedule = (pl.concat(od_departures_revised, how="diagonal_relaxed") + .rename({"Carloads": "Cars_Per_Train_Loaded"}) + .filter(pl.col("Cars_Per_Train_Loaded") > 0) + .select("Hour", "Origin", "Destination", "Train_Type", "Cars_Per_Train_Loaded") + .with_columns(pl.lit(0).alias("Cars_Per_Train_Empty")) + .pipe(data_prep.appendTonsAndHP, rail_vehicles, freight_type_to_car_type, config) + .rename({"Cars_Per_Train_Loaded": "Cars_Loaded", + "Cars_Per_Train_Empty": "Cars_Empty"}) + .with_columns( + (pl.col("Cars_Loaded") + pl.col("Cars_Empty")).alias("Number_of_Cars"), + pl.col("Tons_Per_Car").mul("Cars_Loaded").alias("Tons_Per_Train"), + pl.col("Tons_Per_Car").mul("Cars_Loaded").mul("HP_Required_Per_Ton").alias("HP_Required"), + pl.when(pl.col("Train_Type").str.contains("Intermodal")) + .then(pl.col("Cars_Loaded").mul(config.containers_per_car)) + .otherwise(0) + .alias("Containers_Loaded"), + pl.when(pl.col("Train_Type").str.contains("Intermodal")) + .then(pl.col("Cars_Empty").mul(config.containers_per_car)) + .otherwise(0) + .alias("Containers_Empty"), + ) + .select("Hour", "Origin", "Destination", "Train_Type", + "Number_of_Cars", "Cars_Loaded", "Cars_Empty", "Containers_Empty", "Containers_Loaded", + "Tons_Per_Train", "HP_Required" + ) + .sort(["Hour","Origin","Destination","Train_Type"]) + ) + return departure_schedule \ No newline at end of file diff --git a/python/altrios/train_planner/train_demand_generators.py b/python/altrios/train_planner/train_demand_generators.py index 8f4c1483..c0f461f0 100644 --- a/python/altrios/train_planner/train_demand_generators.py +++ b/python/altrios/train_planner/train_demand_generators.py @@ -269,9 +269,19 @@ def generate_demand_trains( .filter(pl.col("Number_of_Cars") > 0) .pipe(data_prep.appendTonsAndHP, rail_vehicles, freight_type_to_car_type, config) # Merge on cars_per_train_min if the user specified any - .join(cars_per_train_min, on=["Train_Type"], how="left") + .join(cars_per_train_min, + left_on = pl.when(pl.col("Train_Type").str.contains(pl.lit("_Empty"))) + .then(pl.col("Train_Type")) + .otherwise(pl.concat_str(pl.col("Train_Type").str.strip_suffix("_Loaded"), pl.lit("_Loaded"))), + right_on=["Train_Type"], + how="left") # Merge on cars_per_train_target if the user specified any - .join(cars_per_train_target, on=["Train_Type"], how="left") + .join(cars_per_train_target, + left_on = pl.when(pl.col("Train_Type").str.contains(pl.lit("_Empty"))) + .then(pl.col("Train_Type")) + .otherwise(pl.concat_str(pl.col("Train_Type").str.strip_suffix("_Loaded"), pl.lit("_Loaded"))), + right_on=["Train_Type"], + how="left") # Fill in defaults per train type wherever the user didn't specify OD-specific hp_per_ton .with_columns( pl.col("Cars_Per_Train_Min").fill_null(cars_per_train_min_default), From cb49698dd28cff34ccb23ebe30a25f7cc52e094c Mon Sep 17 00:00:00 2001 From: Chad Baker Date: Tue, 21 Jan 2025 13:14:05 -0700 Subject: [PATCH 42/50] fixed demo_variable_paths.py reference --- .../variable_path_list_expected.txt | 6458 ++++++++--------- 1 file changed, 3229 insertions(+), 3229 deletions(-) diff --git a/python/altrios/resources/demo_data/demo_variable_paths/variable_path_list_expected.txt b/python/altrios/resources/demo_data/demo_variable_paths/variable_path_list_expected.txt index aee41c77..08956e3c 100644 --- a/python/altrios/resources/demo_data/demo_variable_paths/variable_path_list_expected.txt +++ b/python/altrios/resources/demo_data/demo_variable_paths/variable_path_list_expected.txt @@ -34,10 +34,10 @@ ['loco_con']['loco_vec'][0]['loco_type']['BatteryElectricLoco']['res']['state']['min_soc'] ['loco_con']['loco_vec'][0]['loco_type']['BatteryElectricLoco']['res']['state']['soc_lo_ramp_start'] ['loco_con']['loco_vec'][0]['loco_type']['BatteryElectricLoco']['res']['state']['temperature_celsius'] -['loco_con']['loco_vec'][0]['loco_type']['BatteryElectricLoco']['res']['mass'] -['loco_con']['loco_vec'][0]['loco_type']['BatteryElectricLoco']['res']['volume'] -['loco_con']['loco_vec'][0]['loco_type']['BatteryElectricLoco']['res']['specific_energy'] -['loco_con']['loco_vec'][0]['loco_type']['BatteryElectricLoco']['res']['energy_density'] +['loco_con']['loco_vec'][0]['loco_type']['BatteryElectricLoco']['res']['mass_kilograms'] +['loco_con']['loco_vec'][0]['loco_type']['BatteryElectricLoco']['res']['volume_liters'] +['loco_con']['loco_vec'][0]['loco_type']['BatteryElectricLoco']['res']['specific_energy_joules_per_kilogram'] +['loco_con']['loco_vec'][0]['loco_type']['BatteryElectricLoco']['res']['energy_density_kilopascals'] ['loco_con']['loco_vec'][0]['loco_type']['BatteryElectricLoco']['res']['eta_interp_grid'][0] ['loco_con']['loco_vec'][0]['loco_type']['BatteryElectricLoco']['res']['eta_interp_grid'][1] ['loco_con']['loco_vec'][0]['loco_type']['BatteryElectricLoco']['res']['eta_interp_grid'][2] @@ -160,10 +160,10 @@ ['loco_con']['loco_vec'][0]['state']['pwr_aux'] ['loco_con']['loco_vec'][0]['state']['energy_out'] ['loco_con']['loco_vec'][0]['state']['energy_aux'] -['loco_con']['loco_vec'][0]['mass'] +['loco_con']['loco_vec'][0]['mass_kilograms'] ['loco_con']['loco_vec'][0]['mu'] -['loco_con']['loco_vec'][0]['ballast_mass'] -['loco_con']['loco_vec'][0]['baseline_mass'] +['loco_con']['loco_vec'][0]['ballast_mass_kilograms'] +['loco_con']['loco_vec'][0]['baseline_mass_kilograms'] ['loco_con']['loco_vec'][0]['save_interval'] ['loco_con']['loco_vec'][0]['history']['i'] ['loco_con']['loco_vec'][0]['history']['pwr_out_max'] @@ -174,9 +174,9 @@ ['loco_con']['loco_vec'][0]['history']['energy_out'] ['loco_con']['loco_vec'][0]['history']['energy_aux'] ['loco_con']['loco_vec'][0]['assert_limits'] -['loco_con']['loco_vec'][0]['pwr_aux_offset'] +['loco_con']['loco_vec'][0]['pwr_aux_offset_watts'] ['loco_con']['loco_vec'][0]['pwr_aux_traction_coeff'] -['loco_con']['loco_vec'][0]['force_max'] +['loco_con']['loco_vec'][0]['force_max_newtons'] ['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['fc']['state']['i'] ['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['fc']['state']['pwr_out_max'] ['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['fc']['state']['eta'] @@ -189,10 +189,10 @@ ['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['fc']['state']['energy_loss'] ['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['fc']['state']['energy_idle_fuel'] ['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['fc']['state']['engine_on'] -['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['fc']['mass'] -['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['fc']['specific_pwr'] +['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['fc']['mass_kilograms'] +['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['fc']['specific_pwr_watts_per_kilogram'] ['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_watts'] -['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_init'] +['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_init_watts'] ['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['fc']['pwr_ramp_lag_seconds'] ['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['fc']['pwr_out_frac_interp'] ['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['fc']['eta_interp'] @@ -223,8 +223,8 @@ ['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['gen']['state']['energy_elec_prop_out'] ['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['gen']['state']['energy_elec_aux'] ['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['gen']['state']['energy_loss'] -['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['gen']['mass'] -['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['gen']['specific_pwr'] +['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['gen']['mass_kilograms'] +['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['gen']['specific_pwr_watts_per_kilogram'] ['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['gen']['pwr_out_frac_interp'] ['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['gen']['eta_interp'] ['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['gen']['pwr_out_max_watts'] @@ -286,10 +286,10 @@ ['loco_con']['loco_vec'][1]['state']['pwr_aux'] ['loco_con']['loco_vec'][1]['state']['energy_out'] ['loco_con']['loco_vec'][1]['state']['energy_aux'] -['loco_con']['loco_vec'][1]['mass'] +['loco_con']['loco_vec'][1]['mass_kilograms'] ['loco_con']['loco_vec'][1]['mu'] -['loco_con']['loco_vec'][1]['ballast_mass'] -['loco_con']['loco_vec'][1]['baseline_mass'] +['loco_con']['loco_vec'][1]['ballast_mass_kilograms'] +['loco_con']['loco_vec'][1]['baseline_mass_kilograms'] ['loco_con']['loco_vec'][1]['save_interval'] ['loco_con']['loco_vec'][1]['history']['i'] ['loco_con']['loco_vec'][1]['history']['pwr_out_max'] @@ -300,9 +300,9 @@ ['loco_con']['loco_vec'][1]['history']['energy_out'] ['loco_con']['loco_vec'][1]['history']['energy_aux'] ['loco_con']['loco_vec'][1]['assert_limits'] -['loco_con']['loco_vec'][1]['pwr_aux_offset'] +['loco_con']['loco_vec'][1]['pwr_aux_offset_watts'] ['loco_con']['loco_vec'][1]['pwr_aux_traction_coeff'] -['loco_con']['loco_vec'][1]['force_max'] +['loco_con']['loco_vec'][1]['force_max_newtons'] ['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['fc']['state']['i'] ['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['fc']['state']['pwr_out_max'] ['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['fc']['state']['eta'] @@ -315,10 +315,10 @@ ['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['fc']['state']['energy_loss'] ['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['fc']['state']['energy_idle_fuel'] ['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['fc']['state']['engine_on'] -['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['fc']['mass'] -['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['fc']['specific_pwr'] +['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['fc']['mass_kilograms'] +['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['fc']['specific_pwr_watts_per_kilogram'] ['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_watts'] -['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_init'] +['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_init_watts'] ['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['fc']['pwr_ramp_lag_seconds'] ['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['fc']['pwr_out_frac_interp'] ['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['fc']['eta_interp'] @@ -349,8 +349,8 @@ ['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['gen']['state']['energy_elec_prop_out'] ['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['gen']['state']['energy_elec_aux'] ['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['gen']['state']['energy_loss'] -['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['gen']['mass'] -['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['gen']['specific_pwr'] +['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['gen']['mass_kilograms'] +['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['gen']['specific_pwr_watts_per_kilogram'] ['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['gen']['pwr_out_frac_interp'] ['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['gen']['eta_interp'] ['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['gen']['pwr_out_max_watts'] @@ -412,10 +412,10 @@ ['loco_con']['loco_vec'][2]['state']['pwr_aux'] ['loco_con']['loco_vec'][2]['state']['energy_out'] ['loco_con']['loco_vec'][2]['state']['energy_aux'] -['loco_con']['loco_vec'][2]['mass'] +['loco_con']['loco_vec'][2]['mass_kilograms'] ['loco_con']['loco_vec'][2]['mu'] -['loco_con']['loco_vec'][2]['ballast_mass'] -['loco_con']['loco_vec'][2]['baseline_mass'] +['loco_con']['loco_vec'][2]['ballast_mass_kilograms'] +['loco_con']['loco_vec'][2]['baseline_mass_kilograms'] ['loco_con']['loco_vec'][2]['save_interval'] ['loco_con']['loco_vec'][2]['history']['i'] ['loco_con']['loco_vec'][2]['history']['pwr_out_max'] @@ -426,9 +426,9 @@ ['loco_con']['loco_vec'][2]['history']['energy_out'] ['loco_con']['loco_vec'][2]['history']['energy_aux'] ['loco_con']['loco_vec'][2]['assert_limits'] -['loco_con']['loco_vec'][2]['pwr_aux_offset'] +['loco_con']['loco_vec'][2]['pwr_aux_offset_watts'] ['loco_con']['loco_vec'][2]['pwr_aux_traction_coeff'] -['loco_con']['loco_vec'][2]['force_max'] +['loco_con']['loco_vec'][2]['force_max_newtons'] ['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['fc']['state']['i'] ['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['fc']['state']['pwr_out_max'] ['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['fc']['state']['eta'] @@ -441,10 +441,10 @@ ['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['fc']['state']['energy_loss'] ['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['fc']['state']['energy_idle_fuel'] ['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['fc']['state']['engine_on'] -['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['fc']['mass'] -['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['fc']['specific_pwr'] +['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['fc']['mass_kilograms'] +['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['fc']['specific_pwr_watts_per_kilogram'] ['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_watts'] -['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_init'] +['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_init_watts'] ['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['fc']['pwr_ramp_lag_seconds'] ['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['fc']['pwr_out_frac_interp'] ['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['fc']['eta_interp'] @@ -475,8 +475,8 @@ ['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['gen']['state']['energy_elec_prop_out'] ['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['gen']['state']['energy_elec_aux'] ['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['gen']['state']['energy_loss'] -['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['gen']['mass'] -['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['gen']['specific_pwr'] +['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['gen']['mass_kilograms'] +['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['gen']['specific_pwr_watts_per_kilogram'] ['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['gen']['pwr_out_frac_interp'] ['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['gen']['eta_interp'] ['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['gen']['pwr_out_max_watts'] @@ -538,10 +538,10 @@ ['loco_con']['loco_vec'][3]['state']['pwr_aux'] ['loco_con']['loco_vec'][3]['state']['energy_out'] ['loco_con']['loco_vec'][3]['state']['energy_aux'] -['loco_con']['loco_vec'][3]['mass'] +['loco_con']['loco_vec'][3]['mass_kilograms'] ['loco_con']['loco_vec'][3]['mu'] -['loco_con']['loco_vec'][3]['ballast_mass'] -['loco_con']['loco_vec'][3]['baseline_mass'] +['loco_con']['loco_vec'][3]['ballast_mass_kilograms'] +['loco_con']['loco_vec'][3]['baseline_mass_kilograms'] ['loco_con']['loco_vec'][3]['save_interval'] ['loco_con']['loco_vec'][3]['history']['i'] ['loco_con']['loco_vec'][3]['history']['pwr_out_max'] @@ -552,9 +552,9 @@ ['loco_con']['loco_vec'][3]['history']['energy_out'] ['loco_con']['loco_vec'][3]['history']['energy_aux'] ['loco_con']['loco_vec'][3]['assert_limits'] -['loco_con']['loco_vec'][3]['pwr_aux_offset'] +['loco_con']['loco_vec'][3]['pwr_aux_offset_watts'] ['loco_con']['loco_vec'][3]['pwr_aux_traction_coeff'] -['loco_con']['loco_vec'][3]['force_max'] +['loco_con']['loco_vec'][3]['force_max_newtons'] ['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['fc']['state']['i'] ['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['fc']['state']['pwr_out_max'] ['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['fc']['state']['eta'] @@ -567,10 +567,10 @@ ['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['fc']['state']['energy_loss'] ['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['fc']['state']['energy_idle_fuel'] ['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['fc']['state']['engine_on'] -['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['fc']['mass'] -['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['fc']['specific_pwr'] +['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['fc']['mass_kilograms'] +['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['fc']['specific_pwr_watts_per_kilogram'] ['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_watts'] -['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_init'] +['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_init_watts'] ['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['fc']['pwr_ramp_lag_seconds'] ['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['fc']['pwr_out_frac_interp'] ['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['fc']['eta_interp'] @@ -601,8 +601,8 @@ ['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['gen']['state']['energy_elec_prop_out'] ['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['gen']['state']['energy_elec_aux'] ['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['gen']['state']['energy_loss'] -['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['gen']['mass'] -['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['gen']['specific_pwr'] +['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['gen']['mass_kilograms'] +['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['gen']['specific_pwr_watts_per_kilogram'] ['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['gen']['pwr_out_frac_interp'] ['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['gen']['eta_interp'] ['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['gen']['pwr_out_max_watts'] @@ -664,10 +664,10 @@ ['loco_con']['loco_vec'][4]['state']['pwr_aux'] ['loco_con']['loco_vec'][4]['state']['energy_out'] ['loco_con']['loco_vec'][4]['state']['energy_aux'] -['loco_con']['loco_vec'][4]['mass'] +['loco_con']['loco_vec'][4]['mass_kilograms'] ['loco_con']['loco_vec'][4]['mu'] -['loco_con']['loco_vec'][4]['ballast_mass'] -['loco_con']['loco_vec'][4]['baseline_mass'] +['loco_con']['loco_vec'][4]['ballast_mass_kilograms'] +['loco_con']['loco_vec'][4]['baseline_mass_kilograms'] ['loco_con']['loco_vec'][4]['save_interval'] ['loco_con']['loco_vec'][4]['history']['i'] ['loco_con']['loco_vec'][4]['history']['pwr_out_max'] @@ -678,9 +678,9 @@ ['loco_con']['loco_vec'][4]['history']['energy_out'] ['loco_con']['loco_vec'][4]['history']['energy_aux'] ['loco_con']['loco_vec'][4]['assert_limits'] -['loco_con']['loco_vec'][4]['pwr_aux_offset'] +['loco_con']['loco_vec'][4]['pwr_aux_offset_watts'] ['loco_con']['loco_vec'][4]['pwr_aux_traction_coeff'] -['loco_con']['loco_vec'][4]['force_max'] +['loco_con']['loco_vec'][4]['force_max_newtons'] ['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['fc']['state']['i'] ['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['fc']['state']['pwr_out_max'] ['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['fc']['state']['eta'] @@ -693,10 +693,10 @@ ['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['fc']['state']['energy_loss'] ['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['fc']['state']['energy_idle_fuel'] ['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['fc']['state']['engine_on'] -['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['fc']['mass'] -['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['fc']['specific_pwr'] +['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['fc']['mass_kilograms'] +['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['fc']['specific_pwr_watts_per_kilogram'] ['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_watts'] -['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_init'] +['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_init_watts'] ['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['fc']['pwr_ramp_lag_seconds'] ['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['fc']['pwr_out_frac_interp'] ['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['fc']['eta_interp'] @@ -727,8 +727,8 @@ ['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['gen']['state']['energy_elec_prop_out'] ['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['gen']['state']['energy_elec_aux'] ['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['gen']['state']['energy_loss'] -['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['gen']['mass'] -['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['gen']['specific_pwr'] +['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['gen']['mass_kilograms'] +['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['gen']['specific_pwr_watts_per_kilogram'] ['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['gen']['pwr_out_frac_interp'] ['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['gen']['eta_interp'] ['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['gen']['pwr_out_max_watts'] @@ -790,10 +790,10 @@ ['loco_con']['loco_vec'][5]['state']['pwr_aux'] ['loco_con']['loco_vec'][5]['state']['energy_out'] ['loco_con']['loco_vec'][5]['state']['energy_aux'] -['loco_con']['loco_vec'][5]['mass'] +['loco_con']['loco_vec'][5]['mass_kilograms'] ['loco_con']['loco_vec'][5]['mu'] -['loco_con']['loco_vec'][5]['ballast_mass'] -['loco_con']['loco_vec'][5]['baseline_mass'] +['loco_con']['loco_vec'][5]['ballast_mass_kilograms'] +['loco_con']['loco_vec'][5]['baseline_mass_kilograms'] ['loco_con']['loco_vec'][5]['save_interval'] ['loco_con']['loco_vec'][5]['history']['i'] ['loco_con']['loco_vec'][5]['history']['pwr_out_max'] @@ -804,9 +804,9 @@ ['loco_con']['loco_vec'][5]['history']['energy_out'] ['loco_con']['loco_vec'][5]['history']['energy_aux'] ['loco_con']['loco_vec'][5]['assert_limits'] -['loco_con']['loco_vec'][5]['pwr_aux_offset'] +['loco_con']['loco_vec'][5]['pwr_aux_offset_watts'] ['loco_con']['loco_vec'][5]['pwr_aux_traction_coeff'] -['loco_con']['loco_vec'][5]['force_max'] +['loco_con']['loco_vec'][5]['force_max_newtons'] ['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['fc']['state']['i'] ['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['fc']['state']['pwr_out_max'] ['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['fc']['state']['eta'] @@ -819,10 +819,10 @@ ['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['fc']['state']['energy_loss'] ['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['fc']['state']['energy_idle_fuel'] ['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['fc']['state']['engine_on'] -['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['fc']['mass'] -['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['fc']['specific_pwr'] +['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['fc']['mass_kilograms'] +['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['fc']['specific_pwr_watts_per_kilogram'] ['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_watts'] -['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_init'] +['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_init_watts'] ['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['fc']['pwr_ramp_lag_seconds'] ['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['fc']['pwr_out_frac_interp'] ['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['fc']['eta_interp'] @@ -853,8 +853,8 @@ ['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['gen']['state']['energy_elec_prop_out'] ['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['gen']['state']['energy_elec_aux'] ['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['gen']['state']['energy_loss'] -['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['gen']['mass'] -['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['gen']['specific_pwr'] +['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['gen']['mass_kilograms'] +['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['gen']['specific_pwr_watts_per_kilogram'] ['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['gen']['pwr_out_frac_interp'] ['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['gen']['eta_interp'] ['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['gen']['pwr_out_max_watts'] @@ -916,10 +916,10 @@ ['loco_con']['loco_vec'][6]['state']['pwr_aux'] ['loco_con']['loco_vec'][6]['state']['energy_out'] ['loco_con']['loco_vec'][6]['state']['energy_aux'] -['loco_con']['loco_vec'][6]['mass'] +['loco_con']['loco_vec'][6]['mass_kilograms'] ['loco_con']['loco_vec'][6]['mu'] -['loco_con']['loco_vec'][6]['ballast_mass'] -['loco_con']['loco_vec'][6]['baseline_mass'] +['loco_con']['loco_vec'][6]['ballast_mass_kilograms'] +['loco_con']['loco_vec'][6]['baseline_mass_kilograms'] ['loco_con']['loco_vec'][6]['save_interval'] ['loco_con']['loco_vec'][6]['history']['i'] ['loco_con']['loco_vec'][6]['history']['pwr_out_max'] @@ -930,9 +930,9 @@ ['loco_con']['loco_vec'][6]['history']['energy_out'] ['loco_con']['loco_vec'][6]['history']['energy_aux'] ['loco_con']['loco_vec'][6]['assert_limits'] -['loco_con']['loco_vec'][6]['pwr_aux_offset'] +['loco_con']['loco_vec'][6]['pwr_aux_offset_watts'] ['loco_con']['loco_vec'][6]['pwr_aux_traction_coeff'] -['loco_con']['loco_vec'][6]['force_max'] +['loco_con']['loco_vec'][6]['force_max_newtons'] ['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['fc']['state']['i'] ['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['fc']['state']['pwr_out_max'] ['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['fc']['state']['eta'] @@ -945,10 +945,10 @@ ['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['fc']['state']['energy_loss'] ['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['fc']['state']['energy_idle_fuel'] ['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['fc']['state']['engine_on'] -['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['fc']['mass'] -['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['fc']['specific_pwr'] +['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['fc']['mass_kilograms'] +['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['fc']['specific_pwr_watts_per_kilogram'] ['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_watts'] -['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_init'] +['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_init_watts'] ['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['fc']['pwr_ramp_lag_seconds'] ['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['fc']['pwr_out_frac_interp'] ['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['fc']['eta_interp'] @@ -979,8 +979,8 @@ ['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['gen']['state']['energy_elec_prop_out'] ['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['gen']['state']['energy_elec_aux'] ['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['gen']['state']['energy_loss'] -['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['gen']['mass'] -['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['gen']['specific_pwr'] +['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['gen']['mass_kilograms'] +['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['gen']['specific_pwr_watts_per_kilogram'] ['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['gen']['pwr_out_frac_interp'] ['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['gen']['eta_interp'] ['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['gen']['pwr_out_max_watts'] @@ -1042,10 +1042,10 @@ ['loco_con']['loco_vec'][7]['state']['pwr_aux'] ['loco_con']['loco_vec'][7]['state']['energy_out'] ['loco_con']['loco_vec'][7]['state']['energy_aux'] -['loco_con']['loco_vec'][7]['mass'] +['loco_con']['loco_vec'][7]['mass_kilograms'] ['loco_con']['loco_vec'][7]['mu'] -['loco_con']['loco_vec'][7]['ballast_mass'] -['loco_con']['loco_vec'][7]['baseline_mass'] +['loco_con']['loco_vec'][7]['ballast_mass_kilograms'] +['loco_con']['loco_vec'][7]['baseline_mass_kilograms'] ['loco_con']['loco_vec'][7]['save_interval'] ['loco_con']['loco_vec'][7]['history']['i'] ['loco_con']['loco_vec'][7]['history']['pwr_out_max'] @@ -1056,9 +1056,9 @@ ['loco_con']['loco_vec'][7]['history']['energy_out'] ['loco_con']['loco_vec'][7]['history']['energy_aux'] ['loco_con']['loco_vec'][7]['assert_limits'] -['loco_con']['loco_vec'][7]['pwr_aux_offset'] +['loco_con']['loco_vec'][7]['pwr_aux_offset_watts'] ['loco_con']['loco_vec'][7]['pwr_aux_traction_coeff'] -['loco_con']['loco_vec'][7]['force_max'] +['loco_con']['loco_vec'][7]['force_max_newtons'] ['loco_con']['pdct']['RESGreedy'] ['loco_con']['assert_limits'] ['loco_con']['state']['i'] @@ -1594,4728 +1594,4728 @@ ['path_tpc']['link_points'][90]['curve_count'] ['path_tpc']['link_points'][90]['cat_power_count'] ['path_tpc']['link_points'][90]['link_idx'] -['path_tpc']['grades'][0]['offset'] +['path_tpc']['grades'][0]['offset_meters'] ['path_tpc']['grades'][0]['res_coeff'] -['path_tpc']['grades'][0]['res_net'] -['path_tpc']['grades'][1]['offset'] +['path_tpc']['grades'][0]['res_net_meters'] +['path_tpc']['grades'][1]['offset_meters'] ['path_tpc']['grades'][1]['res_coeff'] -['path_tpc']['grades'][1]['res_net'] -['path_tpc']['grades'][2]['offset'] +['path_tpc']['grades'][1]['res_net_meters'] +['path_tpc']['grades'][2]['offset_meters'] ['path_tpc']['grades'][2]['res_coeff'] -['path_tpc']['grades'][2]['res_net'] -['path_tpc']['grades'][3]['offset'] +['path_tpc']['grades'][2]['res_net_meters'] +['path_tpc']['grades'][3]['offset_meters'] ['path_tpc']['grades'][3]['res_coeff'] -['path_tpc']['grades'][3]['res_net'] -['path_tpc']['grades'][4]['offset'] +['path_tpc']['grades'][3]['res_net_meters'] +['path_tpc']['grades'][4]['offset_meters'] ['path_tpc']['grades'][4]['res_coeff'] -['path_tpc']['grades'][4]['res_net'] -['path_tpc']['grades'][5]['offset'] +['path_tpc']['grades'][4]['res_net_meters'] +['path_tpc']['grades'][5]['offset_meters'] ['path_tpc']['grades'][5]['res_coeff'] -['path_tpc']['grades'][5]['res_net'] -['path_tpc']['grades'][6]['offset'] +['path_tpc']['grades'][5]['res_net_meters'] +['path_tpc']['grades'][6]['offset_meters'] ['path_tpc']['grades'][6]['res_coeff'] -['path_tpc']['grades'][6]['res_net'] -['path_tpc']['grades'][7]['offset'] +['path_tpc']['grades'][6]['res_net_meters'] +['path_tpc']['grades'][7]['offset_meters'] ['path_tpc']['grades'][7]['res_coeff'] -['path_tpc']['grades'][7]['res_net'] -['path_tpc']['grades'][8]['offset'] +['path_tpc']['grades'][7]['res_net_meters'] +['path_tpc']['grades'][8]['offset_meters'] ['path_tpc']['grades'][8]['res_coeff'] -['path_tpc']['grades'][8]['res_net'] -['path_tpc']['grades'][9]['offset'] +['path_tpc']['grades'][8]['res_net_meters'] +['path_tpc']['grades'][9]['offset_meters'] ['path_tpc']['grades'][9]['res_coeff'] -['path_tpc']['grades'][9]['res_net'] -['path_tpc']['grades'][10]['offset'] +['path_tpc']['grades'][9]['res_net_meters'] +['path_tpc']['grades'][10]['offset_meters'] ['path_tpc']['grades'][10]['res_coeff'] -['path_tpc']['grades'][10]['res_net'] -['path_tpc']['grades'][11]['offset'] +['path_tpc']['grades'][10]['res_net_meters'] +['path_tpc']['grades'][11]['offset_meters'] ['path_tpc']['grades'][11]['res_coeff'] -['path_tpc']['grades'][11]['res_net'] -['path_tpc']['grades'][12]['offset'] +['path_tpc']['grades'][11]['res_net_meters'] +['path_tpc']['grades'][12]['offset_meters'] ['path_tpc']['grades'][12]['res_coeff'] -['path_tpc']['grades'][12]['res_net'] -['path_tpc']['grades'][13]['offset'] +['path_tpc']['grades'][12]['res_net_meters'] +['path_tpc']['grades'][13]['offset_meters'] ['path_tpc']['grades'][13]['res_coeff'] -['path_tpc']['grades'][13]['res_net'] -['path_tpc']['grades'][14]['offset'] +['path_tpc']['grades'][13]['res_net_meters'] +['path_tpc']['grades'][14]['offset_meters'] ['path_tpc']['grades'][14]['res_coeff'] -['path_tpc']['grades'][14]['res_net'] -['path_tpc']['grades'][15]['offset'] +['path_tpc']['grades'][14]['res_net_meters'] +['path_tpc']['grades'][15]['offset_meters'] ['path_tpc']['grades'][15]['res_coeff'] -['path_tpc']['grades'][15]['res_net'] -['path_tpc']['grades'][16]['offset'] +['path_tpc']['grades'][15]['res_net_meters'] +['path_tpc']['grades'][16]['offset_meters'] ['path_tpc']['grades'][16]['res_coeff'] -['path_tpc']['grades'][16]['res_net'] -['path_tpc']['grades'][17]['offset'] +['path_tpc']['grades'][16]['res_net_meters'] +['path_tpc']['grades'][17]['offset_meters'] ['path_tpc']['grades'][17]['res_coeff'] -['path_tpc']['grades'][17]['res_net'] -['path_tpc']['grades'][18]['offset'] +['path_tpc']['grades'][17]['res_net_meters'] +['path_tpc']['grades'][18]['offset_meters'] ['path_tpc']['grades'][18]['res_coeff'] -['path_tpc']['grades'][18]['res_net'] -['path_tpc']['grades'][19]['offset'] +['path_tpc']['grades'][18]['res_net_meters'] +['path_tpc']['grades'][19]['offset_meters'] ['path_tpc']['grades'][19]['res_coeff'] -['path_tpc']['grades'][19]['res_net'] -['path_tpc']['grades'][20]['offset'] +['path_tpc']['grades'][19]['res_net_meters'] +['path_tpc']['grades'][20]['offset_meters'] ['path_tpc']['grades'][20]['res_coeff'] -['path_tpc']['grades'][20]['res_net'] -['path_tpc']['grades'][21]['offset'] +['path_tpc']['grades'][20]['res_net_meters'] +['path_tpc']['grades'][21]['offset_meters'] ['path_tpc']['grades'][21]['res_coeff'] -['path_tpc']['grades'][21]['res_net'] -['path_tpc']['grades'][22]['offset'] +['path_tpc']['grades'][21]['res_net_meters'] +['path_tpc']['grades'][22]['offset_meters'] ['path_tpc']['grades'][22]['res_coeff'] -['path_tpc']['grades'][22]['res_net'] -['path_tpc']['grades'][23]['offset'] +['path_tpc']['grades'][22]['res_net_meters'] +['path_tpc']['grades'][23]['offset_meters'] ['path_tpc']['grades'][23]['res_coeff'] -['path_tpc']['grades'][23]['res_net'] -['path_tpc']['grades'][24]['offset'] +['path_tpc']['grades'][23]['res_net_meters'] +['path_tpc']['grades'][24]['offset_meters'] ['path_tpc']['grades'][24]['res_coeff'] -['path_tpc']['grades'][24]['res_net'] -['path_tpc']['grades'][25]['offset'] +['path_tpc']['grades'][24]['res_net_meters'] +['path_tpc']['grades'][25]['offset_meters'] ['path_tpc']['grades'][25]['res_coeff'] -['path_tpc']['grades'][25]['res_net'] -['path_tpc']['grades'][26]['offset'] +['path_tpc']['grades'][25]['res_net_meters'] +['path_tpc']['grades'][26]['offset_meters'] ['path_tpc']['grades'][26]['res_coeff'] -['path_tpc']['grades'][26]['res_net'] -['path_tpc']['grades'][27]['offset'] +['path_tpc']['grades'][26]['res_net_meters'] +['path_tpc']['grades'][27]['offset_meters'] ['path_tpc']['grades'][27]['res_coeff'] -['path_tpc']['grades'][27]['res_net'] -['path_tpc']['grades'][28]['offset'] +['path_tpc']['grades'][27]['res_net_meters'] +['path_tpc']['grades'][28]['offset_meters'] ['path_tpc']['grades'][28]['res_coeff'] -['path_tpc']['grades'][28]['res_net'] -['path_tpc']['grades'][29]['offset'] +['path_tpc']['grades'][28]['res_net_meters'] +['path_tpc']['grades'][29]['offset_meters'] ['path_tpc']['grades'][29]['res_coeff'] -['path_tpc']['grades'][29]['res_net'] -['path_tpc']['grades'][30]['offset'] +['path_tpc']['grades'][29]['res_net_meters'] +['path_tpc']['grades'][30]['offset_meters'] ['path_tpc']['grades'][30]['res_coeff'] -['path_tpc']['grades'][30]['res_net'] -['path_tpc']['grades'][31]['offset'] +['path_tpc']['grades'][30]['res_net_meters'] +['path_tpc']['grades'][31]['offset_meters'] ['path_tpc']['grades'][31]['res_coeff'] -['path_tpc']['grades'][31]['res_net'] -['path_tpc']['grades'][32]['offset'] +['path_tpc']['grades'][31]['res_net_meters'] +['path_tpc']['grades'][32]['offset_meters'] ['path_tpc']['grades'][32]['res_coeff'] -['path_tpc']['grades'][32]['res_net'] -['path_tpc']['grades'][33]['offset'] +['path_tpc']['grades'][32]['res_net_meters'] +['path_tpc']['grades'][33]['offset_meters'] ['path_tpc']['grades'][33]['res_coeff'] -['path_tpc']['grades'][33]['res_net'] -['path_tpc']['grades'][34]['offset'] +['path_tpc']['grades'][33]['res_net_meters'] +['path_tpc']['grades'][34]['offset_meters'] ['path_tpc']['grades'][34]['res_coeff'] -['path_tpc']['grades'][34]['res_net'] -['path_tpc']['grades'][35]['offset'] +['path_tpc']['grades'][34]['res_net_meters'] +['path_tpc']['grades'][35]['offset_meters'] ['path_tpc']['grades'][35]['res_coeff'] -['path_tpc']['grades'][35]['res_net'] -['path_tpc']['grades'][36]['offset'] +['path_tpc']['grades'][35]['res_net_meters'] +['path_tpc']['grades'][36]['offset_meters'] ['path_tpc']['grades'][36]['res_coeff'] -['path_tpc']['grades'][36]['res_net'] -['path_tpc']['grades'][37]['offset'] +['path_tpc']['grades'][36]['res_net_meters'] +['path_tpc']['grades'][37]['offset_meters'] ['path_tpc']['grades'][37]['res_coeff'] -['path_tpc']['grades'][37]['res_net'] -['path_tpc']['grades'][38]['offset'] +['path_tpc']['grades'][37]['res_net_meters'] +['path_tpc']['grades'][38]['offset_meters'] ['path_tpc']['grades'][38]['res_coeff'] -['path_tpc']['grades'][38]['res_net'] -['path_tpc']['grades'][39]['offset'] +['path_tpc']['grades'][38]['res_net_meters'] +['path_tpc']['grades'][39]['offset_meters'] ['path_tpc']['grades'][39]['res_coeff'] -['path_tpc']['grades'][39]['res_net'] -['path_tpc']['grades'][40]['offset'] +['path_tpc']['grades'][39]['res_net_meters'] +['path_tpc']['grades'][40]['offset_meters'] ['path_tpc']['grades'][40]['res_coeff'] -['path_tpc']['grades'][40]['res_net'] -['path_tpc']['grades'][41]['offset'] +['path_tpc']['grades'][40]['res_net_meters'] +['path_tpc']['grades'][41]['offset_meters'] ['path_tpc']['grades'][41]['res_coeff'] -['path_tpc']['grades'][41]['res_net'] -['path_tpc']['grades'][42]['offset'] +['path_tpc']['grades'][41]['res_net_meters'] +['path_tpc']['grades'][42]['offset_meters'] ['path_tpc']['grades'][42]['res_coeff'] -['path_tpc']['grades'][42]['res_net'] -['path_tpc']['grades'][43]['offset'] +['path_tpc']['grades'][42]['res_net_meters'] +['path_tpc']['grades'][43]['offset_meters'] ['path_tpc']['grades'][43]['res_coeff'] -['path_tpc']['grades'][43]['res_net'] -['path_tpc']['grades'][44]['offset'] +['path_tpc']['grades'][43]['res_net_meters'] +['path_tpc']['grades'][44]['offset_meters'] ['path_tpc']['grades'][44]['res_coeff'] -['path_tpc']['grades'][44]['res_net'] -['path_tpc']['grades'][45]['offset'] +['path_tpc']['grades'][44]['res_net_meters'] +['path_tpc']['grades'][45]['offset_meters'] ['path_tpc']['grades'][45]['res_coeff'] -['path_tpc']['grades'][45]['res_net'] -['path_tpc']['grades'][46]['offset'] +['path_tpc']['grades'][45]['res_net_meters'] +['path_tpc']['grades'][46]['offset_meters'] ['path_tpc']['grades'][46]['res_coeff'] -['path_tpc']['grades'][46]['res_net'] -['path_tpc']['grades'][47]['offset'] +['path_tpc']['grades'][46]['res_net_meters'] +['path_tpc']['grades'][47]['offset_meters'] ['path_tpc']['grades'][47]['res_coeff'] -['path_tpc']['grades'][47]['res_net'] -['path_tpc']['grades'][48]['offset'] +['path_tpc']['grades'][47]['res_net_meters'] +['path_tpc']['grades'][48]['offset_meters'] ['path_tpc']['grades'][48]['res_coeff'] -['path_tpc']['grades'][48]['res_net'] -['path_tpc']['grades'][49]['offset'] +['path_tpc']['grades'][48]['res_net_meters'] +['path_tpc']['grades'][49]['offset_meters'] ['path_tpc']['grades'][49]['res_coeff'] -['path_tpc']['grades'][49]['res_net'] -['path_tpc']['grades'][50]['offset'] +['path_tpc']['grades'][49]['res_net_meters'] +['path_tpc']['grades'][50]['offset_meters'] ['path_tpc']['grades'][50]['res_coeff'] -['path_tpc']['grades'][50]['res_net'] -['path_tpc']['grades'][51]['offset'] +['path_tpc']['grades'][50]['res_net_meters'] +['path_tpc']['grades'][51]['offset_meters'] ['path_tpc']['grades'][51]['res_coeff'] -['path_tpc']['grades'][51]['res_net'] -['path_tpc']['grades'][52]['offset'] +['path_tpc']['grades'][51]['res_net_meters'] +['path_tpc']['grades'][52]['offset_meters'] ['path_tpc']['grades'][52]['res_coeff'] -['path_tpc']['grades'][52]['res_net'] -['path_tpc']['grades'][53]['offset'] +['path_tpc']['grades'][52]['res_net_meters'] +['path_tpc']['grades'][53]['offset_meters'] ['path_tpc']['grades'][53]['res_coeff'] -['path_tpc']['grades'][53]['res_net'] -['path_tpc']['grades'][54]['offset'] +['path_tpc']['grades'][53]['res_net_meters'] +['path_tpc']['grades'][54]['offset_meters'] ['path_tpc']['grades'][54]['res_coeff'] -['path_tpc']['grades'][54]['res_net'] -['path_tpc']['grades'][55]['offset'] +['path_tpc']['grades'][54]['res_net_meters'] +['path_tpc']['grades'][55]['offset_meters'] ['path_tpc']['grades'][55]['res_coeff'] -['path_tpc']['grades'][55]['res_net'] -['path_tpc']['grades'][56]['offset'] +['path_tpc']['grades'][55]['res_net_meters'] +['path_tpc']['grades'][56]['offset_meters'] ['path_tpc']['grades'][56]['res_coeff'] -['path_tpc']['grades'][56]['res_net'] -['path_tpc']['grades'][57]['offset'] +['path_tpc']['grades'][56]['res_net_meters'] +['path_tpc']['grades'][57]['offset_meters'] ['path_tpc']['grades'][57]['res_coeff'] -['path_tpc']['grades'][57]['res_net'] -['path_tpc']['grades'][58]['offset'] +['path_tpc']['grades'][57]['res_net_meters'] +['path_tpc']['grades'][58]['offset_meters'] ['path_tpc']['grades'][58]['res_coeff'] -['path_tpc']['grades'][58]['res_net'] -['path_tpc']['grades'][59]['offset'] +['path_tpc']['grades'][58]['res_net_meters'] +['path_tpc']['grades'][59]['offset_meters'] ['path_tpc']['grades'][59]['res_coeff'] -['path_tpc']['grades'][59]['res_net'] -['path_tpc']['grades'][60]['offset'] +['path_tpc']['grades'][59]['res_net_meters'] +['path_tpc']['grades'][60]['offset_meters'] ['path_tpc']['grades'][60]['res_coeff'] -['path_tpc']['grades'][60]['res_net'] -['path_tpc']['grades'][61]['offset'] +['path_tpc']['grades'][60]['res_net_meters'] +['path_tpc']['grades'][61]['offset_meters'] ['path_tpc']['grades'][61]['res_coeff'] -['path_tpc']['grades'][61]['res_net'] -['path_tpc']['grades'][62]['offset'] +['path_tpc']['grades'][61]['res_net_meters'] +['path_tpc']['grades'][62]['offset_meters'] ['path_tpc']['grades'][62]['res_coeff'] -['path_tpc']['grades'][62]['res_net'] -['path_tpc']['grades'][63]['offset'] +['path_tpc']['grades'][62]['res_net_meters'] +['path_tpc']['grades'][63]['offset_meters'] ['path_tpc']['grades'][63]['res_coeff'] -['path_tpc']['grades'][63]['res_net'] -['path_tpc']['grades'][64]['offset'] +['path_tpc']['grades'][63]['res_net_meters'] +['path_tpc']['grades'][64]['offset_meters'] ['path_tpc']['grades'][64]['res_coeff'] -['path_tpc']['grades'][64]['res_net'] -['path_tpc']['grades'][65]['offset'] +['path_tpc']['grades'][64]['res_net_meters'] +['path_tpc']['grades'][65]['offset_meters'] ['path_tpc']['grades'][65]['res_coeff'] -['path_tpc']['grades'][65]['res_net'] -['path_tpc']['grades'][66]['offset'] +['path_tpc']['grades'][65]['res_net_meters'] +['path_tpc']['grades'][66]['offset_meters'] ['path_tpc']['grades'][66]['res_coeff'] -['path_tpc']['grades'][66]['res_net'] -['path_tpc']['grades'][67]['offset'] +['path_tpc']['grades'][66]['res_net_meters'] +['path_tpc']['grades'][67]['offset_meters'] ['path_tpc']['grades'][67]['res_coeff'] -['path_tpc']['grades'][67]['res_net'] -['path_tpc']['grades'][68]['offset'] +['path_tpc']['grades'][67]['res_net_meters'] +['path_tpc']['grades'][68]['offset_meters'] ['path_tpc']['grades'][68]['res_coeff'] -['path_tpc']['grades'][68]['res_net'] -['path_tpc']['grades'][69]['offset'] +['path_tpc']['grades'][68]['res_net_meters'] +['path_tpc']['grades'][69]['offset_meters'] ['path_tpc']['grades'][69]['res_coeff'] -['path_tpc']['grades'][69]['res_net'] -['path_tpc']['grades'][70]['offset'] +['path_tpc']['grades'][69]['res_net_meters'] +['path_tpc']['grades'][70]['offset_meters'] ['path_tpc']['grades'][70]['res_coeff'] -['path_tpc']['grades'][70]['res_net'] -['path_tpc']['grades'][71]['offset'] +['path_tpc']['grades'][70]['res_net_meters'] +['path_tpc']['grades'][71]['offset_meters'] ['path_tpc']['grades'][71]['res_coeff'] -['path_tpc']['grades'][71]['res_net'] -['path_tpc']['grades'][72]['offset'] +['path_tpc']['grades'][71]['res_net_meters'] +['path_tpc']['grades'][72]['offset_meters'] ['path_tpc']['grades'][72]['res_coeff'] -['path_tpc']['grades'][72]['res_net'] -['path_tpc']['grades'][73]['offset'] +['path_tpc']['grades'][72]['res_net_meters'] +['path_tpc']['grades'][73]['offset_meters'] ['path_tpc']['grades'][73]['res_coeff'] -['path_tpc']['grades'][73]['res_net'] -['path_tpc']['grades'][74]['offset'] +['path_tpc']['grades'][73]['res_net_meters'] +['path_tpc']['grades'][74]['offset_meters'] ['path_tpc']['grades'][74]['res_coeff'] -['path_tpc']['grades'][74]['res_net'] -['path_tpc']['grades'][75]['offset'] +['path_tpc']['grades'][74]['res_net_meters'] +['path_tpc']['grades'][75]['offset_meters'] ['path_tpc']['grades'][75]['res_coeff'] -['path_tpc']['grades'][75]['res_net'] -['path_tpc']['grades'][76]['offset'] +['path_tpc']['grades'][75]['res_net_meters'] +['path_tpc']['grades'][76]['offset_meters'] ['path_tpc']['grades'][76]['res_coeff'] -['path_tpc']['grades'][76]['res_net'] -['path_tpc']['grades'][77]['offset'] +['path_tpc']['grades'][76]['res_net_meters'] +['path_tpc']['grades'][77]['offset_meters'] ['path_tpc']['grades'][77]['res_coeff'] -['path_tpc']['grades'][77]['res_net'] -['path_tpc']['grades'][78]['offset'] +['path_tpc']['grades'][77]['res_net_meters'] +['path_tpc']['grades'][78]['offset_meters'] ['path_tpc']['grades'][78]['res_coeff'] -['path_tpc']['grades'][78]['res_net'] -['path_tpc']['grades'][79]['offset'] +['path_tpc']['grades'][78]['res_net_meters'] +['path_tpc']['grades'][79]['offset_meters'] ['path_tpc']['grades'][79]['res_coeff'] -['path_tpc']['grades'][79]['res_net'] -['path_tpc']['grades'][80]['offset'] +['path_tpc']['grades'][79]['res_net_meters'] +['path_tpc']['grades'][80]['offset_meters'] ['path_tpc']['grades'][80]['res_coeff'] -['path_tpc']['grades'][80]['res_net'] -['path_tpc']['grades'][81]['offset'] +['path_tpc']['grades'][80]['res_net_meters'] +['path_tpc']['grades'][81]['offset_meters'] ['path_tpc']['grades'][81]['res_coeff'] -['path_tpc']['grades'][81]['res_net'] -['path_tpc']['grades'][82]['offset'] +['path_tpc']['grades'][81]['res_net_meters'] +['path_tpc']['grades'][82]['offset_meters'] ['path_tpc']['grades'][82]['res_coeff'] -['path_tpc']['grades'][82]['res_net'] -['path_tpc']['grades'][83]['offset'] +['path_tpc']['grades'][82]['res_net_meters'] +['path_tpc']['grades'][83]['offset_meters'] ['path_tpc']['grades'][83]['res_coeff'] -['path_tpc']['grades'][83]['res_net'] -['path_tpc']['grades'][84]['offset'] +['path_tpc']['grades'][83]['res_net_meters'] +['path_tpc']['grades'][84]['offset_meters'] ['path_tpc']['grades'][84]['res_coeff'] -['path_tpc']['grades'][84]['res_net'] -['path_tpc']['grades'][85]['offset'] +['path_tpc']['grades'][84]['res_net_meters'] +['path_tpc']['grades'][85]['offset_meters'] ['path_tpc']['grades'][85]['res_coeff'] -['path_tpc']['grades'][85]['res_net'] -['path_tpc']['grades'][86]['offset'] +['path_tpc']['grades'][85]['res_net_meters'] +['path_tpc']['grades'][86]['offset_meters'] ['path_tpc']['grades'][86]['res_coeff'] -['path_tpc']['grades'][86]['res_net'] -['path_tpc']['grades'][87]['offset'] +['path_tpc']['grades'][86]['res_net_meters'] +['path_tpc']['grades'][87]['offset_meters'] ['path_tpc']['grades'][87]['res_coeff'] -['path_tpc']['grades'][87]['res_net'] -['path_tpc']['grades'][88]['offset'] +['path_tpc']['grades'][87]['res_net_meters'] +['path_tpc']['grades'][88]['offset_meters'] ['path_tpc']['grades'][88]['res_coeff'] -['path_tpc']['grades'][88]['res_net'] -['path_tpc']['grades'][89]['offset'] +['path_tpc']['grades'][88]['res_net_meters'] +['path_tpc']['grades'][89]['offset_meters'] ['path_tpc']['grades'][89]['res_coeff'] -['path_tpc']['grades'][89]['res_net'] -['path_tpc']['grades'][90]['offset'] +['path_tpc']['grades'][89]['res_net_meters'] +['path_tpc']['grades'][90]['offset_meters'] ['path_tpc']['grades'][90]['res_coeff'] -['path_tpc']['grades'][90]['res_net'] -['path_tpc']['grades'][91]['offset'] +['path_tpc']['grades'][90]['res_net_meters'] +['path_tpc']['grades'][91]['offset_meters'] ['path_tpc']['grades'][91]['res_coeff'] -['path_tpc']['grades'][91]['res_net'] -['path_tpc']['grades'][92]['offset'] +['path_tpc']['grades'][91]['res_net_meters'] +['path_tpc']['grades'][92]['offset_meters'] ['path_tpc']['grades'][92]['res_coeff'] -['path_tpc']['grades'][92]['res_net'] -['path_tpc']['grades'][93]['offset'] +['path_tpc']['grades'][92]['res_net_meters'] +['path_tpc']['grades'][93]['offset_meters'] ['path_tpc']['grades'][93]['res_coeff'] -['path_tpc']['grades'][93]['res_net'] -['path_tpc']['grades'][94]['offset'] +['path_tpc']['grades'][93]['res_net_meters'] +['path_tpc']['grades'][94]['offset_meters'] ['path_tpc']['grades'][94]['res_coeff'] -['path_tpc']['grades'][94]['res_net'] -['path_tpc']['grades'][95]['offset'] +['path_tpc']['grades'][94]['res_net_meters'] +['path_tpc']['grades'][95]['offset_meters'] ['path_tpc']['grades'][95]['res_coeff'] -['path_tpc']['grades'][95]['res_net'] -['path_tpc']['grades'][96]['offset'] +['path_tpc']['grades'][95]['res_net_meters'] +['path_tpc']['grades'][96]['offset_meters'] ['path_tpc']['grades'][96]['res_coeff'] -['path_tpc']['grades'][96]['res_net'] -['path_tpc']['grades'][97]['offset'] +['path_tpc']['grades'][96]['res_net_meters'] +['path_tpc']['grades'][97]['offset_meters'] ['path_tpc']['grades'][97]['res_coeff'] -['path_tpc']['grades'][97]['res_net'] -['path_tpc']['grades'][98]['offset'] +['path_tpc']['grades'][97]['res_net_meters'] +['path_tpc']['grades'][98]['offset_meters'] ['path_tpc']['grades'][98]['res_coeff'] -['path_tpc']['grades'][98]['res_net'] -['path_tpc']['grades'][99]['offset'] +['path_tpc']['grades'][98]['res_net_meters'] +['path_tpc']['grades'][99]['offset_meters'] ['path_tpc']['grades'][99]['res_coeff'] -['path_tpc']['grades'][99]['res_net'] -['path_tpc']['grades'][100]['offset'] +['path_tpc']['grades'][99]['res_net_meters'] +['path_tpc']['grades'][100]['offset_meters'] ['path_tpc']['grades'][100]['res_coeff'] -['path_tpc']['grades'][100]['res_net'] -['path_tpc']['grades'][101]['offset'] +['path_tpc']['grades'][100]['res_net_meters'] +['path_tpc']['grades'][101]['offset_meters'] ['path_tpc']['grades'][101]['res_coeff'] -['path_tpc']['grades'][101]['res_net'] -['path_tpc']['grades'][102]['offset'] +['path_tpc']['grades'][101]['res_net_meters'] +['path_tpc']['grades'][102]['offset_meters'] ['path_tpc']['grades'][102]['res_coeff'] -['path_tpc']['grades'][102]['res_net'] -['path_tpc']['grades'][103]['offset'] +['path_tpc']['grades'][102]['res_net_meters'] +['path_tpc']['grades'][103]['offset_meters'] ['path_tpc']['grades'][103]['res_coeff'] -['path_tpc']['grades'][103]['res_net'] -['path_tpc']['grades'][104]['offset'] +['path_tpc']['grades'][103]['res_net_meters'] +['path_tpc']['grades'][104]['offset_meters'] ['path_tpc']['grades'][104]['res_coeff'] -['path_tpc']['grades'][104]['res_net'] -['path_tpc']['grades'][105]['offset'] +['path_tpc']['grades'][104]['res_net_meters'] +['path_tpc']['grades'][105]['offset_meters'] ['path_tpc']['grades'][105]['res_coeff'] -['path_tpc']['grades'][105]['res_net'] -['path_tpc']['grades'][106]['offset'] +['path_tpc']['grades'][105]['res_net_meters'] +['path_tpc']['grades'][106]['offset_meters'] ['path_tpc']['grades'][106]['res_coeff'] -['path_tpc']['grades'][106]['res_net'] -['path_tpc']['grades'][107]['offset'] +['path_tpc']['grades'][106]['res_net_meters'] +['path_tpc']['grades'][107]['offset_meters'] ['path_tpc']['grades'][107]['res_coeff'] -['path_tpc']['grades'][107]['res_net'] -['path_tpc']['grades'][108]['offset'] +['path_tpc']['grades'][107]['res_net_meters'] +['path_tpc']['grades'][108]['offset_meters'] ['path_tpc']['grades'][108]['res_coeff'] -['path_tpc']['grades'][108]['res_net'] -['path_tpc']['grades'][109]['offset'] +['path_tpc']['grades'][108]['res_net_meters'] +['path_tpc']['grades'][109]['offset_meters'] ['path_tpc']['grades'][109]['res_coeff'] -['path_tpc']['grades'][109]['res_net'] -['path_tpc']['grades'][110]['offset'] +['path_tpc']['grades'][109]['res_net_meters'] +['path_tpc']['grades'][110]['offset_meters'] ['path_tpc']['grades'][110]['res_coeff'] -['path_tpc']['grades'][110]['res_net'] -['path_tpc']['grades'][111]['offset'] +['path_tpc']['grades'][110]['res_net_meters'] +['path_tpc']['grades'][111]['offset_meters'] ['path_tpc']['grades'][111]['res_coeff'] -['path_tpc']['grades'][111]['res_net'] -['path_tpc']['grades'][112]['offset'] +['path_tpc']['grades'][111]['res_net_meters'] +['path_tpc']['grades'][112]['offset_meters'] ['path_tpc']['grades'][112]['res_coeff'] -['path_tpc']['grades'][112]['res_net'] -['path_tpc']['grades'][113]['offset'] +['path_tpc']['grades'][112]['res_net_meters'] +['path_tpc']['grades'][113]['offset_meters'] ['path_tpc']['grades'][113]['res_coeff'] -['path_tpc']['grades'][113]['res_net'] -['path_tpc']['grades'][114]['offset'] +['path_tpc']['grades'][113]['res_net_meters'] +['path_tpc']['grades'][114]['offset_meters'] ['path_tpc']['grades'][114]['res_coeff'] -['path_tpc']['grades'][114]['res_net'] -['path_tpc']['grades'][115]['offset'] +['path_tpc']['grades'][114]['res_net_meters'] +['path_tpc']['grades'][115]['offset_meters'] ['path_tpc']['grades'][115]['res_coeff'] -['path_tpc']['grades'][115]['res_net'] -['path_tpc']['grades'][116]['offset'] +['path_tpc']['grades'][115]['res_net_meters'] +['path_tpc']['grades'][116]['offset_meters'] ['path_tpc']['grades'][116]['res_coeff'] -['path_tpc']['grades'][116]['res_net'] -['path_tpc']['grades'][117]['offset'] +['path_tpc']['grades'][116]['res_net_meters'] +['path_tpc']['grades'][117]['offset_meters'] ['path_tpc']['grades'][117]['res_coeff'] -['path_tpc']['grades'][117]['res_net'] -['path_tpc']['grades'][118]['offset'] +['path_tpc']['grades'][117]['res_net_meters'] +['path_tpc']['grades'][118]['offset_meters'] ['path_tpc']['grades'][118]['res_coeff'] -['path_tpc']['grades'][118]['res_net'] -['path_tpc']['grades'][119]['offset'] +['path_tpc']['grades'][118]['res_net_meters'] +['path_tpc']['grades'][119]['offset_meters'] ['path_tpc']['grades'][119]['res_coeff'] -['path_tpc']['grades'][119]['res_net'] -['path_tpc']['grades'][120]['offset'] +['path_tpc']['grades'][119]['res_net_meters'] +['path_tpc']['grades'][120]['offset_meters'] ['path_tpc']['grades'][120]['res_coeff'] -['path_tpc']['grades'][120]['res_net'] -['path_tpc']['grades'][121]['offset'] +['path_tpc']['grades'][120]['res_net_meters'] +['path_tpc']['grades'][121]['offset_meters'] ['path_tpc']['grades'][121]['res_coeff'] -['path_tpc']['grades'][121]['res_net'] -['path_tpc']['grades'][122]['offset'] +['path_tpc']['grades'][121]['res_net_meters'] +['path_tpc']['grades'][122]['offset_meters'] ['path_tpc']['grades'][122]['res_coeff'] -['path_tpc']['grades'][122]['res_net'] -['path_tpc']['grades'][123]['offset'] +['path_tpc']['grades'][122]['res_net_meters'] +['path_tpc']['grades'][123]['offset_meters'] ['path_tpc']['grades'][123]['res_coeff'] -['path_tpc']['grades'][123]['res_net'] -['path_tpc']['grades'][124]['offset'] +['path_tpc']['grades'][123]['res_net_meters'] +['path_tpc']['grades'][124]['offset_meters'] ['path_tpc']['grades'][124]['res_coeff'] -['path_tpc']['grades'][124]['res_net'] -['path_tpc']['grades'][125]['offset'] +['path_tpc']['grades'][124]['res_net_meters'] +['path_tpc']['grades'][125]['offset_meters'] ['path_tpc']['grades'][125]['res_coeff'] -['path_tpc']['grades'][125]['res_net'] -['path_tpc']['grades'][126]['offset'] +['path_tpc']['grades'][125]['res_net_meters'] +['path_tpc']['grades'][126]['offset_meters'] ['path_tpc']['grades'][126]['res_coeff'] -['path_tpc']['grades'][126]['res_net'] -['path_tpc']['grades'][127]['offset'] +['path_tpc']['grades'][126]['res_net_meters'] +['path_tpc']['grades'][127]['offset_meters'] ['path_tpc']['grades'][127]['res_coeff'] -['path_tpc']['grades'][127]['res_net'] -['path_tpc']['grades'][128]['offset'] +['path_tpc']['grades'][127]['res_net_meters'] +['path_tpc']['grades'][128]['offset_meters'] ['path_tpc']['grades'][128]['res_coeff'] -['path_tpc']['grades'][128]['res_net'] -['path_tpc']['grades'][129]['offset'] +['path_tpc']['grades'][128]['res_net_meters'] +['path_tpc']['grades'][129]['offset_meters'] ['path_tpc']['grades'][129]['res_coeff'] -['path_tpc']['grades'][129]['res_net'] -['path_tpc']['grades'][130]['offset'] +['path_tpc']['grades'][129]['res_net_meters'] +['path_tpc']['grades'][130]['offset_meters'] ['path_tpc']['grades'][130]['res_coeff'] -['path_tpc']['grades'][130]['res_net'] -['path_tpc']['grades'][131]['offset'] +['path_tpc']['grades'][130]['res_net_meters'] +['path_tpc']['grades'][131]['offset_meters'] ['path_tpc']['grades'][131]['res_coeff'] -['path_tpc']['grades'][131]['res_net'] -['path_tpc']['grades'][132]['offset'] +['path_tpc']['grades'][131]['res_net_meters'] +['path_tpc']['grades'][132]['offset_meters'] ['path_tpc']['grades'][132]['res_coeff'] -['path_tpc']['grades'][132]['res_net'] -['path_tpc']['grades'][133]['offset'] +['path_tpc']['grades'][132]['res_net_meters'] +['path_tpc']['grades'][133]['offset_meters'] ['path_tpc']['grades'][133]['res_coeff'] -['path_tpc']['grades'][133]['res_net'] -['path_tpc']['grades'][134]['offset'] +['path_tpc']['grades'][133]['res_net_meters'] +['path_tpc']['grades'][134]['offset_meters'] ['path_tpc']['grades'][134]['res_coeff'] -['path_tpc']['grades'][134]['res_net'] -['path_tpc']['grades'][135]['offset'] +['path_tpc']['grades'][134]['res_net_meters'] +['path_tpc']['grades'][135]['offset_meters'] ['path_tpc']['grades'][135]['res_coeff'] -['path_tpc']['grades'][135]['res_net'] -['path_tpc']['grades'][136]['offset'] +['path_tpc']['grades'][135]['res_net_meters'] +['path_tpc']['grades'][136]['offset_meters'] ['path_tpc']['grades'][136]['res_coeff'] -['path_tpc']['grades'][136]['res_net'] -['path_tpc']['grades'][137]['offset'] +['path_tpc']['grades'][136]['res_net_meters'] +['path_tpc']['grades'][137]['offset_meters'] ['path_tpc']['grades'][137]['res_coeff'] -['path_tpc']['grades'][137]['res_net'] -['path_tpc']['grades'][138]['offset'] +['path_tpc']['grades'][137]['res_net_meters'] +['path_tpc']['grades'][138]['offset_meters'] ['path_tpc']['grades'][138]['res_coeff'] -['path_tpc']['grades'][138]['res_net'] -['path_tpc']['grades'][139]['offset'] +['path_tpc']['grades'][138]['res_net_meters'] +['path_tpc']['grades'][139]['offset_meters'] ['path_tpc']['grades'][139]['res_coeff'] -['path_tpc']['grades'][139]['res_net'] -['path_tpc']['grades'][140]['offset'] +['path_tpc']['grades'][139]['res_net_meters'] +['path_tpc']['grades'][140]['offset_meters'] ['path_tpc']['grades'][140]['res_coeff'] -['path_tpc']['grades'][140]['res_net'] -['path_tpc']['grades'][141]['offset'] +['path_tpc']['grades'][140]['res_net_meters'] +['path_tpc']['grades'][141]['offset_meters'] ['path_tpc']['grades'][141]['res_coeff'] -['path_tpc']['grades'][141]['res_net'] -['path_tpc']['grades'][142]['offset'] +['path_tpc']['grades'][141]['res_net_meters'] +['path_tpc']['grades'][142]['offset_meters'] ['path_tpc']['grades'][142]['res_coeff'] -['path_tpc']['grades'][142]['res_net'] -['path_tpc']['grades'][143]['offset'] +['path_tpc']['grades'][142]['res_net_meters'] +['path_tpc']['grades'][143]['offset_meters'] ['path_tpc']['grades'][143]['res_coeff'] -['path_tpc']['grades'][143]['res_net'] -['path_tpc']['grades'][144]['offset'] +['path_tpc']['grades'][143]['res_net_meters'] +['path_tpc']['grades'][144]['offset_meters'] ['path_tpc']['grades'][144]['res_coeff'] -['path_tpc']['grades'][144]['res_net'] -['path_tpc']['grades'][145]['offset'] +['path_tpc']['grades'][144]['res_net_meters'] +['path_tpc']['grades'][145]['offset_meters'] ['path_tpc']['grades'][145]['res_coeff'] -['path_tpc']['grades'][145]['res_net'] -['path_tpc']['grades'][146]['offset'] +['path_tpc']['grades'][145]['res_net_meters'] +['path_tpc']['grades'][146]['offset_meters'] ['path_tpc']['grades'][146]['res_coeff'] -['path_tpc']['grades'][146]['res_net'] -['path_tpc']['grades'][147]['offset'] +['path_tpc']['grades'][146]['res_net_meters'] +['path_tpc']['grades'][147]['offset_meters'] ['path_tpc']['grades'][147]['res_coeff'] -['path_tpc']['grades'][147]['res_net'] -['path_tpc']['grades'][148]['offset'] +['path_tpc']['grades'][147]['res_net_meters'] +['path_tpc']['grades'][148]['offset_meters'] ['path_tpc']['grades'][148]['res_coeff'] -['path_tpc']['grades'][148]['res_net'] -['path_tpc']['grades'][149]['offset'] +['path_tpc']['grades'][148]['res_net_meters'] +['path_tpc']['grades'][149]['offset_meters'] ['path_tpc']['grades'][149]['res_coeff'] -['path_tpc']['grades'][149]['res_net'] -['path_tpc']['grades'][150]['offset'] +['path_tpc']['grades'][149]['res_net_meters'] +['path_tpc']['grades'][150]['offset_meters'] ['path_tpc']['grades'][150]['res_coeff'] -['path_tpc']['grades'][150]['res_net'] -['path_tpc']['grades'][151]['offset'] +['path_tpc']['grades'][150]['res_net_meters'] +['path_tpc']['grades'][151]['offset_meters'] ['path_tpc']['grades'][151]['res_coeff'] -['path_tpc']['grades'][151]['res_net'] -['path_tpc']['grades'][152]['offset'] +['path_tpc']['grades'][151]['res_net_meters'] +['path_tpc']['grades'][152]['offset_meters'] ['path_tpc']['grades'][152]['res_coeff'] -['path_tpc']['grades'][152]['res_net'] -['path_tpc']['grades'][153]['offset'] +['path_tpc']['grades'][152]['res_net_meters'] +['path_tpc']['grades'][153]['offset_meters'] ['path_tpc']['grades'][153]['res_coeff'] -['path_tpc']['grades'][153]['res_net'] -['path_tpc']['grades'][154]['offset'] +['path_tpc']['grades'][153]['res_net_meters'] +['path_tpc']['grades'][154]['offset_meters'] ['path_tpc']['grades'][154]['res_coeff'] -['path_tpc']['grades'][154]['res_net'] -['path_tpc']['grades'][155]['offset'] +['path_tpc']['grades'][154]['res_net_meters'] +['path_tpc']['grades'][155]['offset_meters'] ['path_tpc']['grades'][155]['res_coeff'] -['path_tpc']['grades'][155]['res_net'] -['path_tpc']['grades'][156]['offset'] +['path_tpc']['grades'][155]['res_net_meters'] +['path_tpc']['grades'][156]['offset_meters'] ['path_tpc']['grades'][156]['res_coeff'] -['path_tpc']['grades'][156]['res_net'] -['path_tpc']['grades'][157]['offset'] +['path_tpc']['grades'][156]['res_net_meters'] +['path_tpc']['grades'][157]['offset_meters'] ['path_tpc']['grades'][157]['res_coeff'] -['path_tpc']['grades'][157]['res_net'] -['path_tpc']['grades'][158]['offset'] +['path_tpc']['grades'][157]['res_net_meters'] +['path_tpc']['grades'][158]['offset_meters'] ['path_tpc']['grades'][158]['res_coeff'] -['path_tpc']['grades'][158]['res_net'] -['path_tpc']['grades'][159]['offset'] +['path_tpc']['grades'][158]['res_net_meters'] +['path_tpc']['grades'][159]['offset_meters'] ['path_tpc']['grades'][159]['res_coeff'] -['path_tpc']['grades'][159]['res_net'] -['path_tpc']['grades'][160]['offset'] +['path_tpc']['grades'][159]['res_net_meters'] +['path_tpc']['grades'][160]['offset_meters'] ['path_tpc']['grades'][160]['res_coeff'] -['path_tpc']['grades'][160]['res_net'] -['path_tpc']['grades'][161]['offset'] +['path_tpc']['grades'][160]['res_net_meters'] +['path_tpc']['grades'][161]['offset_meters'] ['path_tpc']['grades'][161]['res_coeff'] -['path_tpc']['grades'][161]['res_net'] -['path_tpc']['grades'][162]['offset'] +['path_tpc']['grades'][161]['res_net_meters'] +['path_tpc']['grades'][162]['offset_meters'] ['path_tpc']['grades'][162]['res_coeff'] -['path_tpc']['grades'][162]['res_net'] -['path_tpc']['grades'][163]['offset'] +['path_tpc']['grades'][162]['res_net_meters'] +['path_tpc']['grades'][163]['offset_meters'] ['path_tpc']['grades'][163]['res_coeff'] -['path_tpc']['grades'][163]['res_net'] -['path_tpc']['grades'][164]['offset'] +['path_tpc']['grades'][163]['res_net_meters'] +['path_tpc']['grades'][164]['offset_meters'] ['path_tpc']['grades'][164]['res_coeff'] -['path_tpc']['grades'][164]['res_net'] -['path_tpc']['grades'][165]['offset'] +['path_tpc']['grades'][164]['res_net_meters'] +['path_tpc']['grades'][165]['offset_meters'] ['path_tpc']['grades'][165]['res_coeff'] -['path_tpc']['grades'][165]['res_net'] -['path_tpc']['grades'][166]['offset'] +['path_tpc']['grades'][165]['res_net_meters'] +['path_tpc']['grades'][166]['offset_meters'] ['path_tpc']['grades'][166]['res_coeff'] -['path_tpc']['grades'][166]['res_net'] -['path_tpc']['grades'][167]['offset'] +['path_tpc']['grades'][166]['res_net_meters'] +['path_tpc']['grades'][167]['offset_meters'] ['path_tpc']['grades'][167]['res_coeff'] -['path_tpc']['grades'][167]['res_net'] -['path_tpc']['grades'][168]['offset'] +['path_tpc']['grades'][167]['res_net_meters'] +['path_tpc']['grades'][168]['offset_meters'] ['path_tpc']['grades'][168]['res_coeff'] -['path_tpc']['grades'][168]['res_net'] -['path_tpc']['grades'][169]['offset'] +['path_tpc']['grades'][168]['res_net_meters'] +['path_tpc']['grades'][169]['offset_meters'] ['path_tpc']['grades'][169]['res_coeff'] -['path_tpc']['grades'][169]['res_net'] -['path_tpc']['grades'][170]['offset'] +['path_tpc']['grades'][169]['res_net_meters'] +['path_tpc']['grades'][170]['offset_meters'] ['path_tpc']['grades'][170]['res_coeff'] -['path_tpc']['grades'][170]['res_net'] -['path_tpc']['grades'][171]['offset'] +['path_tpc']['grades'][170]['res_net_meters'] +['path_tpc']['grades'][171]['offset_meters'] ['path_tpc']['grades'][171]['res_coeff'] -['path_tpc']['grades'][171]['res_net'] -['path_tpc']['grades'][172]['offset'] +['path_tpc']['grades'][171]['res_net_meters'] +['path_tpc']['grades'][172]['offset_meters'] ['path_tpc']['grades'][172]['res_coeff'] -['path_tpc']['grades'][172]['res_net'] -['path_tpc']['grades'][173]['offset'] +['path_tpc']['grades'][172]['res_net_meters'] +['path_tpc']['grades'][173]['offset_meters'] ['path_tpc']['grades'][173]['res_coeff'] -['path_tpc']['grades'][173]['res_net'] -['path_tpc']['grades'][174]['offset'] +['path_tpc']['grades'][173]['res_net_meters'] +['path_tpc']['grades'][174]['offset_meters'] ['path_tpc']['grades'][174]['res_coeff'] -['path_tpc']['grades'][174]['res_net'] -['path_tpc']['grades'][175]['offset'] +['path_tpc']['grades'][174]['res_net_meters'] +['path_tpc']['grades'][175]['offset_meters'] ['path_tpc']['grades'][175]['res_coeff'] -['path_tpc']['grades'][175]['res_net'] -['path_tpc']['grades'][176]['offset'] +['path_tpc']['grades'][175]['res_net_meters'] +['path_tpc']['grades'][176]['offset_meters'] ['path_tpc']['grades'][176]['res_coeff'] -['path_tpc']['grades'][176]['res_net'] -['path_tpc']['grades'][177]['offset'] +['path_tpc']['grades'][176]['res_net_meters'] +['path_tpc']['grades'][177]['offset_meters'] ['path_tpc']['grades'][177]['res_coeff'] -['path_tpc']['grades'][177]['res_net'] -['path_tpc']['grades'][178]['offset'] +['path_tpc']['grades'][177]['res_net_meters'] +['path_tpc']['grades'][178]['offset_meters'] ['path_tpc']['grades'][178]['res_coeff'] -['path_tpc']['grades'][178]['res_net'] -['path_tpc']['grades'][179]['offset'] +['path_tpc']['grades'][178]['res_net_meters'] +['path_tpc']['grades'][179]['offset_meters'] ['path_tpc']['grades'][179]['res_coeff'] -['path_tpc']['grades'][179]['res_net'] -['path_tpc']['grades'][180]['offset'] +['path_tpc']['grades'][179]['res_net_meters'] +['path_tpc']['grades'][180]['offset_meters'] ['path_tpc']['grades'][180]['res_coeff'] -['path_tpc']['grades'][180]['res_net'] -['path_tpc']['grades'][181]['offset'] +['path_tpc']['grades'][180]['res_net_meters'] +['path_tpc']['grades'][181]['offset_meters'] ['path_tpc']['grades'][181]['res_coeff'] -['path_tpc']['grades'][181]['res_net'] -['path_tpc']['grades'][182]['offset'] +['path_tpc']['grades'][181]['res_net_meters'] +['path_tpc']['grades'][182]['offset_meters'] ['path_tpc']['grades'][182]['res_coeff'] -['path_tpc']['grades'][182]['res_net'] -['path_tpc']['grades'][183]['offset'] +['path_tpc']['grades'][182]['res_net_meters'] +['path_tpc']['grades'][183]['offset_meters'] ['path_tpc']['grades'][183]['res_coeff'] -['path_tpc']['grades'][183]['res_net'] -['path_tpc']['grades'][184]['offset'] +['path_tpc']['grades'][183]['res_net_meters'] +['path_tpc']['grades'][184]['offset_meters'] ['path_tpc']['grades'][184]['res_coeff'] -['path_tpc']['grades'][184]['res_net'] -['path_tpc']['grades'][185]['offset'] +['path_tpc']['grades'][184]['res_net_meters'] +['path_tpc']['grades'][185]['offset_meters'] ['path_tpc']['grades'][185]['res_coeff'] -['path_tpc']['grades'][185]['res_net'] -['path_tpc']['grades'][186]['offset'] +['path_tpc']['grades'][185]['res_net_meters'] +['path_tpc']['grades'][186]['offset_meters'] ['path_tpc']['grades'][186]['res_coeff'] -['path_tpc']['grades'][186]['res_net'] -['path_tpc']['grades'][187]['offset'] +['path_tpc']['grades'][186]['res_net_meters'] +['path_tpc']['grades'][187]['offset_meters'] ['path_tpc']['grades'][187]['res_coeff'] -['path_tpc']['grades'][187]['res_net'] -['path_tpc']['grades'][188]['offset'] +['path_tpc']['grades'][187]['res_net_meters'] +['path_tpc']['grades'][188]['offset_meters'] ['path_tpc']['grades'][188]['res_coeff'] -['path_tpc']['grades'][188]['res_net'] -['path_tpc']['grades'][189]['offset'] +['path_tpc']['grades'][188]['res_net_meters'] +['path_tpc']['grades'][189]['offset_meters'] ['path_tpc']['grades'][189]['res_coeff'] -['path_tpc']['grades'][189]['res_net'] -['path_tpc']['grades'][190]['offset'] +['path_tpc']['grades'][189]['res_net_meters'] +['path_tpc']['grades'][190]['offset_meters'] ['path_tpc']['grades'][190]['res_coeff'] -['path_tpc']['grades'][190]['res_net'] -['path_tpc']['grades'][191]['offset'] +['path_tpc']['grades'][190]['res_net_meters'] +['path_tpc']['grades'][191]['offset_meters'] ['path_tpc']['grades'][191]['res_coeff'] -['path_tpc']['grades'][191]['res_net'] -['path_tpc']['grades'][192]['offset'] +['path_tpc']['grades'][191]['res_net_meters'] +['path_tpc']['grades'][192]['offset_meters'] ['path_tpc']['grades'][192]['res_coeff'] -['path_tpc']['grades'][192]['res_net'] -['path_tpc']['grades'][193]['offset'] +['path_tpc']['grades'][192]['res_net_meters'] +['path_tpc']['grades'][193]['offset_meters'] ['path_tpc']['grades'][193]['res_coeff'] -['path_tpc']['grades'][193]['res_net'] -['path_tpc']['grades'][194]['offset'] +['path_tpc']['grades'][193]['res_net_meters'] +['path_tpc']['grades'][194]['offset_meters'] ['path_tpc']['grades'][194]['res_coeff'] -['path_tpc']['grades'][194]['res_net'] -['path_tpc']['grades'][195]['offset'] +['path_tpc']['grades'][194]['res_net_meters'] +['path_tpc']['grades'][195]['offset_meters'] ['path_tpc']['grades'][195]['res_coeff'] -['path_tpc']['grades'][195]['res_net'] -['path_tpc']['grades'][196]['offset'] +['path_tpc']['grades'][195]['res_net_meters'] +['path_tpc']['grades'][196]['offset_meters'] ['path_tpc']['grades'][196]['res_coeff'] -['path_tpc']['grades'][196]['res_net'] -['path_tpc']['grades'][197]['offset'] +['path_tpc']['grades'][196]['res_net_meters'] +['path_tpc']['grades'][197]['offset_meters'] ['path_tpc']['grades'][197]['res_coeff'] -['path_tpc']['grades'][197]['res_net'] -['path_tpc']['grades'][198]['offset'] +['path_tpc']['grades'][197]['res_net_meters'] +['path_tpc']['grades'][198]['offset_meters'] ['path_tpc']['grades'][198]['res_coeff'] -['path_tpc']['grades'][198]['res_net'] -['path_tpc']['grades'][199]['offset'] +['path_tpc']['grades'][198]['res_net_meters'] +['path_tpc']['grades'][199]['offset_meters'] ['path_tpc']['grades'][199]['res_coeff'] -['path_tpc']['grades'][199]['res_net'] -['path_tpc']['grades'][200]['offset'] +['path_tpc']['grades'][199]['res_net_meters'] +['path_tpc']['grades'][200]['offset_meters'] ['path_tpc']['grades'][200]['res_coeff'] -['path_tpc']['grades'][200]['res_net'] -['path_tpc']['grades'][201]['offset'] +['path_tpc']['grades'][200]['res_net_meters'] +['path_tpc']['grades'][201]['offset_meters'] ['path_tpc']['grades'][201]['res_coeff'] -['path_tpc']['grades'][201]['res_net'] -['path_tpc']['grades'][202]['offset'] +['path_tpc']['grades'][201]['res_net_meters'] +['path_tpc']['grades'][202]['offset_meters'] ['path_tpc']['grades'][202]['res_coeff'] -['path_tpc']['grades'][202]['res_net'] -['path_tpc']['grades'][203]['offset'] +['path_tpc']['grades'][202]['res_net_meters'] +['path_tpc']['grades'][203]['offset_meters'] ['path_tpc']['grades'][203]['res_coeff'] -['path_tpc']['grades'][203]['res_net'] -['path_tpc']['grades'][204]['offset'] +['path_tpc']['grades'][203]['res_net_meters'] +['path_tpc']['grades'][204]['offset_meters'] ['path_tpc']['grades'][204]['res_coeff'] -['path_tpc']['grades'][204]['res_net'] -['path_tpc']['grades'][205]['offset'] +['path_tpc']['grades'][204]['res_net_meters'] +['path_tpc']['grades'][205]['offset_meters'] ['path_tpc']['grades'][205]['res_coeff'] -['path_tpc']['grades'][205]['res_net'] -['path_tpc']['grades'][206]['offset'] +['path_tpc']['grades'][205]['res_net_meters'] +['path_tpc']['grades'][206]['offset_meters'] ['path_tpc']['grades'][206]['res_coeff'] -['path_tpc']['grades'][206]['res_net'] -['path_tpc']['grades'][207]['offset'] +['path_tpc']['grades'][206]['res_net_meters'] +['path_tpc']['grades'][207]['offset_meters'] ['path_tpc']['grades'][207]['res_coeff'] -['path_tpc']['grades'][207]['res_net'] -['path_tpc']['grades'][208]['offset'] +['path_tpc']['grades'][207]['res_net_meters'] +['path_tpc']['grades'][208]['offset_meters'] ['path_tpc']['grades'][208]['res_coeff'] -['path_tpc']['grades'][208]['res_net'] -['path_tpc']['grades'][209]['offset'] +['path_tpc']['grades'][208]['res_net_meters'] +['path_tpc']['grades'][209]['offset_meters'] ['path_tpc']['grades'][209]['res_coeff'] -['path_tpc']['grades'][209]['res_net'] -['path_tpc']['grades'][210]['offset'] +['path_tpc']['grades'][209]['res_net_meters'] +['path_tpc']['grades'][210]['offset_meters'] ['path_tpc']['grades'][210]['res_coeff'] -['path_tpc']['grades'][210]['res_net'] -['path_tpc']['grades'][211]['offset'] +['path_tpc']['grades'][210]['res_net_meters'] +['path_tpc']['grades'][211]['offset_meters'] ['path_tpc']['grades'][211]['res_coeff'] -['path_tpc']['grades'][211]['res_net'] -['path_tpc']['grades'][212]['offset'] +['path_tpc']['grades'][211]['res_net_meters'] +['path_tpc']['grades'][212]['offset_meters'] ['path_tpc']['grades'][212]['res_coeff'] -['path_tpc']['grades'][212]['res_net'] -['path_tpc']['grades'][213]['offset'] +['path_tpc']['grades'][212]['res_net_meters'] +['path_tpc']['grades'][213]['offset_meters'] ['path_tpc']['grades'][213]['res_coeff'] -['path_tpc']['grades'][213]['res_net'] -['path_tpc']['grades'][214]['offset'] +['path_tpc']['grades'][213]['res_net_meters'] +['path_tpc']['grades'][214]['offset_meters'] ['path_tpc']['grades'][214]['res_coeff'] -['path_tpc']['grades'][214]['res_net'] -['path_tpc']['grades'][215]['offset'] +['path_tpc']['grades'][214]['res_net_meters'] +['path_tpc']['grades'][215]['offset_meters'] ['path_tpc']['grades'][215]['res_coeff'] -['path_tpc']['grades'][215]['res_net'] -['path_tpc']['grades'][216]['offset'] +['path_tpc']['grades'][215]['res_net_meters'] +['path_tpc']['grades'][216]['offset_meters'] ['path_tpc']['grades'][216]['res_coeff'] -['path_tpc']['grades'][216]['res_net'] -['path_tpc']['grades'][217]['offset'] +['path_tpc']['grades'][216]['res_net_meters'] +['path_tpc']['grades'][217]['offset_meters'] ['path_tpc']['grades'][217]['res_coeff'] -['path_tpc']['grades'][217]['res_net'] -['path_tpc']['grades'][218]['offset'] +['path_tpc']['grades'][217]['res_net_meters'] +['path_tpc']['grades'][218]['offset_meters'] ['path_tpc']['grades'][218]['res_coeff'] -['path_tpc']['grades'][218]['res_net'] -['path_tpc']['grades'][219]['offset'] +['path_tpc']['grades'][218]['res_net_meters'] +['path_tpc']['grades'][219]['offset_meters'] ['path_tpc']['grades'][219]['res_coeff'] -['path_tpc']['grades'][219]['res_net'] -['path_tpc']['grades'][220]['offset'] +['path_tpc']['grades'][219]['res_net_meters'] +['path_tpc']['grades'][220]['offset_meters'] ['path_tpc']['grades'][220]['res_coeff'] -['path_tpc']['grades'][220]['res_net'] -['path_tpc']['grades'][221]['offset'] +['path_tpc']['grades'][220]['res_net_meters'] +['path_tpc']['grades'][221]['offset_meters'] ['path_tpc']['grades'][221]['res_coeff'] -['path_tpc']['grades'][221]['res_net'] -['path_tpc']['grades'][222]['offset'] +['path_tpc']['grades'][221]['res_net_meters'] +['path_tpc']['grades'][222]['offset_meters'] ['path_tpc']['grades'][222]['res_coeff'] -['path_tpc']['grades'][222]['res_net'] -['path_tpc']['grades'][223]['offset'] +['path_tpc']['grades'][222]['res_net_meters'] +['path_tpc']['grades'][223]['offset_meters'] ['path_tpc']['grades'][223]['res_coeff'] -['path_tpc']['grades'][223]['res_net'] -['path_tpc']['grades'][224]['offset'] +['path_tpc']['grades'][223]['res_net_meters'] +['path_tpc']['grades'][224]['offset_meters'] ['path_tpc']['grades'][224]['res_coeff'] -['path_tpc']['grades'][224]['res_net'] -['path_tpc']['grades'][225]['offset'] +['path_tpc']['grades'][224]['res_net_meters'] +['path_tpc']['grades'][225]['offset_meters'] ['path_tpc']['grades'][225]['res_coeff'] -['path_tpc']['grades'][225]['res_net'] -['path_tpc']['grades'][226]['offset'] +['path_tpc']['grades'][225]['res_net_meters'] +['path_tpc']['grades'][226]['offset_meters'] ['path_tpc']['grades'][226]['res_coeff'] -['path_tpc']['grades'][226]['res_net'] -['path_tpc']['grades'][227]['offset'] +['path_tpc']['grades'][226]['res_net_meters'] +['path_tpc']['grades'][227]['offset_meters'] ['path_tpc']['grades'][227]['res_coeff'] -['path_tpc']['grades'][227]['res_net'] -['path_tpc']['grades'][228]['offset'] +['path_tpc']['grades'][227]['res_net_meters'] +['path_tpc']['grades'][228]['offset_meters'] ['path_tpc']['grades'][228]['res_coeff'] -['path_tpc']['grades'][228]['res_net'] -['path_tpc']['grades'][229]['offset'] +['path_tpc']['grades'][228]['res_net_meters'] +['path_tpc']['grades'][229]['offset_meters'] ['path_tpc']['grades'][229]['res_coeff'] -['path_tpc']['grades'][229]['res_net'] -['path_tpc']['grades'][230]['offset'] +['path_tpc']['grades'][229]['res_net_meters'] +['path_tpc']['grades'][230]['offset_meters'] ['path_tpc']['grades'][230]['res_coeff'] -['path_tpc']['grades'][230]['res_net'] -['path_tpc']['grades'][231]['offset'] +['path_tpc']['grades'][230]['res_net_meters'] +['path_tpc']['grades'][231]['offset_meters'] ['path_tpc']['grades'][231]['res_coeff'] -['path_tpc']['grades'][231]['res_net'] -['path_tpc']['grades'][232]['offset'] +['path_tpc']['grades'][231]['res_net_meters'] +['path_tpc']['grades'][232]['offset_meters'] ['path_tpc']['grades'][232]['res_coeff'] -['path_tpc']['grades'][232]['res_net'] -['path_tpc']['grades'][233]['offset'] +['path_tpc']['grades'][232]['res_net_meters'] +['path_tpc']['grades'][233]['offset_meters'] ['path_tpc']['grades'][233]['res_coeff'] -['path_tpc']['grades'][233]['res_net'] -['path_tpc']['grades'][234]['offset'] +['path_tpc']['grades'][233]['res_net_meters'] +['path_tpc']['grades'][234]['offset_meters'] ['path_tpc']['grades'][234]['res_coeff'] -['path_tpc']['grades'][234]['res_net'] -['path_tpc']['grades'][235]['offset'] +['path_tpc']['grades'][234]['res_net_meters'] +['path_tpc']['grades'][235]['offset_meters'] ['path_tpc']['grades'][235]['res_coeff'] -['path_tpc']['grades'][235]['res_net'] -['path_tpc']['grades'][236]['offset'] +['path_tpc']['grades'][235]['res_net_meters'] +['path_tpc']['grades'][236]['offset_meters'] ['path_tpc']['grades'][236]['res_coeff'] -['path_tpc']['grades'][236]['res_net'] -['path_tpc']['grades'][237]['offset'] +['path_tpc']['grades'][236]['res_net_meters'] +['path_tpc']['grades'][237]['offset_meters'] ['path_tpc']['grades'][237]['res_coeff'] -['path_tpc']['grades'][237]['res_net'] -['path_tpc']['grades'][238]['offset'] +['path_tpc']['grades'][237]['res_net_meters'] +['path_tpc']['grades'][238]['offset_meters'] ['path_tpc']['grades'][238]['res_coeff'] -['path_tpc']['grades'][238]['res_net'] -['path_tpc']['grades'][239]['offset'] +['path_tpc']['grades'][238]['res_net_meters'] +['path_tpc']['grades'][239]['offset_meters'] ['path_tpc']['grades'][239]['res_coeff'] -['path_tpc']['grades'][239]['res_net'] -['path_tpc']['grades'][240]['offset'] +['path_tpc']['grades'][239]['res_net_meters'] +['path_tpc']['grades'][240]['offset_meters'] ['path_tpc']['grades'][240]['res_coeff'] -['path_tpc']['grades'][240]['res_net'] -['path_tpc']['grades'][241]['offset'] +['path_tpc']['grades'][240]['res_net_meters'] +['path_tpc']['grades'][241]['offset_meters'] ['path_tpc']['grades'][241]['res_coeff'] -['path_tpc']['grades'][241]['res_net'] -['path_tpc']['grades'][242]['offset'] +['path_tpc']['grades'][241]['res_net_meters'] +['path_tpc']['grades'][242]['offset_meters'] ['path_tpc']['grades'][242]['res_coeff'] -['path_tpc']['grades'][242]['res_net'] -['path_tpc']['grades'][243]['offset'] +['path_tpc']['grades'][242]['res_net_meters'] +['path_tpc']['grades'][243]['offset_meters'] ['path_tpc']['grades'][243]['res_coeff'] -['path_tpc']['grades'][243]['res_net'] -['path_tpc']['grades'][244]['offset'] +['path_tpc']['grades'][243]['res_net_meters'] +['path_tpc']['grades'][244]['offset_meters'] ['path_tpc']['grades'][244]['res_coeff'] -['path_tpc']['grades'][244]['res_net'] -['path_tpc']['grades'][245]['offset'] +['path_tpc']['grades'][244]['res_net_meters'] +['path_tpc']['grades'][245]['offset_meters'] ['path_tpc']['grades'][245]['res_coeff'] -['path_tpc']['grades'][245]['res_net'] -['path_tpc']['grades'][246]['offset'] +['path_tpc']['grades'][245]['res_net_meters'] +['path_tpc']['grades'][246]['offset_meters'] ['path_tpc']['grades'][246]['res_coeff'] -['path_tpc']['grades'][246]['res_net'] -['path_tpc']['grades'][247]['offset'] +['path_tpc']['grades'][246]['res_net_meters'] +['path_tpc']['grades'][247]['offset_meters'] ['path_tpc']['grades'][247]['res_coeff'] -['path_tpc']['grades'][247]['res_net'] -['path_tpc']['grades'][248]['offset'] +['path_tpc']['grades'][247]['res_net_meters'] +['path_tpc']['grades'][248]['offset_meters'] ['path_tpc']['grades'][248]['res_coeff'] -['path_tpc']['grades'][248]['res_net'] -['path_tpc']['grades'][249]['offset'] +['path_tpc']['grades'][248]['res_net_meters'] +['path_tpc']['grades'][249]['offset_meters'] ['path_tpc']['grades'][249]['res_coeff'] -['path_tpc']['grades'][249]['res_net'] -['path_tpc']['grades'][250]['offset'] +['path_tpc']['grades'][249]['res_net_meters'] +['path_tpc']['grades'][250]['offset_meters'] ['path_tpc']['grades'][250]['res_coeff'] -['path_tpc']['grades'][250]['res_net'] -['path_tpc']['grades'][251]['offset'] +['path_tpc']['grades'][250]['res_net_meters'] +['path_tpc']['grades'][251]['offset_meters'] ['path_tpc']['grades'][251]['res_coeff'] -['path_tpc']['grades'][251]['res_net'] -['path_tpc']['grades'][252]['offset'] +['path_tpc']['grades'][251]['res_net_meters'] +['path_tpc']['grades'][252]['offset_meters'] ['path_tpc']['grades'][252]['res_coeff'] -['path_tpc']['grades'][252]['res_net'] -['path_tpc']['grades'][253]['offset'] +['path_tpc']['grades'][252]['res_net_meters'] +['path_tpc']['grades'][253]['offset_meters'] ['path_tpc']['grades'][253]['res_coeff'] -['path_tpc']['grades'][253]['res_net'] -['path_tpc']['grades'][254]['offset'] +['path_tpc']['grades'][253]['res_net_meters'] +['path_tpc']['grades'][254]['offset_meters'] ['path_tpc']['grades'][254]['res_coeff'] -['path_tpc']['grades'][254]['res_net'] -['path_tpc']['grades'][255]['offset'] +['path_tpc']['grades'][254]['res_net_meters'] +['path_tpc']['grades'][255]['offset_meters'] ['path_tpc']['grades'][255]['res_coeff'] -['path_tpc']['grades'][255]['res_net'] -['path_tpc']['grades'][256]['offset'] +['path_tpc']['grades'][255]['res_net_meters'] +['path_tpc']['grades'][256]['offset_meters'] ['path_tpc']['grades'][256]['res_coeff'] -['path_tpc']['grades'][256]['res_net'] -['path_tpc']['grades'][257]['offset'] +['path_tpc']['grades'][256]['res_net_meters'] +['path_tpc']['grades'][257]['offset_meters'] ['path_tpc']['grades'][257]['res_coeff'] -['path_tpc']['grades'][257]['res_net'] -['path_tpc']['grades'][258]['offset'] +['path_tpc']['grades'][257]['res_net_meters'] +['path_tpc']['grades'][258]['offset_meters'] ['path_tpc']['grades'][258]['res_coeff'] -['path_tpc']['grades'][258]['res_net'] -['path_tpc']['grades'][259]['offset'] +['path_tpc']['grades'][258]['res_net_meters'] +['path_tpc']['grades'][259]['offset_meters'] ['path_tpc']['grades'][259]['res_coeff'] -['path_tpc']['grades'][259]['res_net'] -['path_tpc']['grades'][260]['offset'] +['path_tpc']['grades'][259]['res_net_meters'] +['path_tpc']['grades'][260]['offset_meters'] ['path_tpc']['grades'][260]['res_coeff'] -['path_tpc']['grades'][260]['res_net'] -['path_tpc']['grades'][261]['offset'] +['path_tpc']['grades'][260]['res_net_meters'] +['path_tpc']['grades'][261]['offset_meters'] ['path_tpc']['grades'][261]['res_coeff'] -['path_tpc']['grades'][261]['res_net'] -['path_tpc']['grades'][262]['offset'] +['path_tpc']['grades'][261]['res_net_meters'] +['path_tpc']['grades'][262]['offset_meters'] ['path_tpc']['grades'][262]['res_coeff'] -['path_tpc']['grades'][262]['res_net'] -['path_tpc']['grades'][263]['offset'] +['path_tpc']['grades'][262]['res_net_meters'] +['path_tpc']['grades'][263]['offset_meters'] ['path_tpc']['grades'][263]['res_coeff'] -['path_tpc']['grades'][263]['res_net'] -['path_tpc']['grades'][264]['offset'] +['path_tpc']['grades'][263]['res_net_meters'] +['path_tpc']['grades'][264]['offset_meters'] ['path_tpc']['grades'][264]['res_coeff'] -['path_tpc']['grades'][264]['res_net'] -['path_tpc']['grades'][265]['offset'] +['path_tpc']['grades'][264]['res_net_meters'] +['path_tpc']['grades'][265]['offset_meters'] ['path_tpc']['grades'][265]['res_coeff'] -['path_tpc']['grades'][265]['res_net'] -['path_tpc']['grades'][266]['offset'] +['path_tpc']['grades'][265]['res_net_meters'] +['path_tpc']['grades'][266]['offset_meters'] ['path_tpc']['grades'][266]['res_coeff'] -['path_tpc']['grades'][266]['res_net'] -['path_tpc']['grades'][267]['offset'] +['path_tpc']['grades'][266]['res_net_meters'] +['path_tpc']['grades'][267]['offset_meters'] ['path_tpc']['grades'][267]['res_coeff'] -['path_tpc']['grades'][267]['res_net'] -['path_tpc']['grades'][268]['offset'] +['path_tpc']['grades'][267]['res_net_meters'] +['path_tpc']['grades'][268]['offset_meters'] ['path_tpc']['grades'][268]['res_coeff'] -['path_tpc']['grades'][268]['res_net'] -['path_tpc']['grades'][269]['offset'] +['path_tpc']['grades'][268]['res_net_meters'] +['path_tpc']['grades'][269]['offset_meters'] ['path_tpc']['grades'][269]['res_coeff'] -['path_tpc']['grades'][269]['res_net'] -['path_tpc']['grades'][270]['offset'] +['path_tpc']['grades'][269]['res_net_meters'] +['path_tpc']['grades'][270]['offset_meters'] ['path_tpc']['grades'][270]['res_coeff'] -['path_tpc']['grades'][270]['res_net'] -['path_tpc']['grades'][271]['offset'] +['path_tpc']['grades'][270]['res_net_meters'] +['path_tpc']['grades'][271]['offset_meters'] ['path_tpc']['grades'][271]['res_coeff'] -['path_tpc']['grades'][271]['res_net'] -['path_tpc']['grades'][272]['offset'] +['path_tpc']['grades'][271]['res_net_meters'] +['path_tpc']['grades'][272]['offset_meters'] ['path_tpc']['grades'][272]['res_coeff'] -['path_tpc']['grades'][272]['res_net'] -['path_tpc']['grades'][273]['offset'] +['path_tpc']['grades'][272]['res_net_meters'] +['path_tpc']['grades'][273]['offset_meters'] ['path_tpc']['grades'][273]['res_coeff'] -['path_tpc']['grades'][273]['res_net'] -['path_tpc']['grades'][274]['offset'] +['path_tpc']['grades'][273]['res_net_meters'] +['path_tpc']['grades'][274]['offset_meters'] ['path_tpc']['grades'][274]['res_coeff'] -['path_tpc']['grades'][274]['res_net'] -['path_tpc']['grades'][275]['offset'] +['path_tpc']['grades'][274]['res_net_meters'] +['path_tpc']['grades'][275]['offset_meters'] ['path_tpc']['grades'][275]['res_coeff'] -['path_tpc']['grades'][275]['res_net'] -['path_tpc']['grades'][276]['offset'] +['path_tpc']['grades'][275]['res_net_meters'] +['path_tpc']['grades'][276]['offset_meters'] ['path_tpc']['grades'][276]['res_coeff'] -['path_tpc']['grades'][276]['res_net'] -['path_tpc']['grades'][277]['offset'] +['path_tpc']['grades'][276]['res_net_meters'] +['path_tpc']['grades'][277]['offset_meters'] ['path_tpc']['grades'][277]['res_coeff'] -['path_tpc']['grades'][277]['res_net'] -['path_tpc']['grades'][278]['offset'] +['path_tpc']['grades'][277]['res_net_meters'] +['path_tpc']['grades'][278]['offset_meters'] ['path_tpc']['grades'][278]['res_coeff'] -['path_tpc']['grades'][278]['res_net'] -['path_tpc']['grades'][279]['offset'] +['path_tpc']['grades'][278]['res_net_meters'] +['path_tpc']['grades'][279]['offset_meters'] ['path_tpc']['grades'][279]['res_coeff'] -['path_tpc']['grades'][279]['res_net'] -['path_tpc']['grades'][280]['offset'] +['path_tpc']['grades'][279]['res_net_meters'] +['path_tpc']['grades'][280]['offset_meters'] ['path_tpc']['grades'][280]['res_coeff'] -['path_tpc']['grades'][280]['res_net'] -['path_tpc']['grades'][281]['offset'] +['path_tpc']['grades'][280]['res_net_meters'] +['path_tpc']['grades'][281]['offset_meters'] ['path_tpc']['grades'][281]['res_coeff'] -['path_tpc']['grades'][281]['res_net'] -['path_tpc']['grades'][282]['offset'] +['path_tpc']['grades'][281]['res_net_meters'] +['path_tpc']['grades'][282]['offset_meters'] ['path_tpc']['grades'][282]['res_coeff'] -['path_tpc']['grades'][282]['res_net'] -['path_tpc']['grades'][283]['offset'] +['path_tpc']['grades'][282]['res_net_meters'] +['path_tpc']['grades'][283]['offset_meters'] ['path_tpc']['grades'][283]['res_coeff'] -['path_tpc']['grades'][283]['res_net'] -['path_tpc']['grades'][284]['offset'] +['path_tpc']['grades'][283]['res_net_meters'] +['path_tpc']['grades'][284]['offset_meters'] ['path_tpc']['grades'][284]['res_coeff'] -['path_tpc']['grades'][284]['res_net'] -['path_tpc']['grades'][285]['offset'] +['path_tpc']['grades'][284]['res_net_meters'] +['path_tpc']['grades'][285]['offset_meters'] ['path_tpc']['grades'][285]['res_coeff'] -['path_tpc']['grades'][285]['res_net'] -['path_tpc']['grades'][286]['offset'] +['path_tpc']['grades'][285]['res_net_meters'] +['path_tpc']['grades'][286]['offset_meters'] ['path_tpc']['grades'][286]['res_coeff'] -['path_tpc']['grades'][286]['res_net'] -['path_tpc']['grades'][287]['offset'] +['path_tpc']['grades'][286]['res_net_meters'] +['path_tpc']['grades'][287]['offset_meters'] ['path_tpc']['grades'][287]['res_coeff'] -['path_tpc']['grades'][287]['res_net'] -['path_tpc']['grades'][288]['offset'] +['path_tpc']['grades'][287]['res_net_meters'] +['path_tpc']['grades'][288]['offset_meters'] ['path_tpc']['grades'][288]['res_coeff'] -['path_tpc']['grades'][288]['res_net'] -['path_tpc']['grades'][289]['offset'] +['path_tpc']['grades'][288]['res_net_meters'] +['path_tpc']['grades'][289]['offset_meters'] ['path_tpc']['grades'][289]['res_coeff'] -['path_tpc']['grades'][289]['res_net'] -['path_tpc']['grades'][290]['offset'] +['path_tpc']['grades'][289]['res_net_meters'] +['path_tpc']['grades'][290]['offset_meters'] ['path_tpc']['grades'][290]['res_coeff'] -['path_tpc']['grades'][290]['res_net'] -['path_tpc']['grades'][291]['offset'] +['path_tpc']['grades'][290]['res_net_meters'] +['path_tpc']['grades'][291]['offset_meters'] ['path_tpc']['grades'][291]['res_coeff'] -['path_tpc']['grades'][291]['res_net'] -['path_tpc']['grades'][292]['offset'] +['path_tpc']['grades'][291]['res_net_meters'] +['path_tpc']['grades'][292]['offset_meters'] ['path_tpc']['grades'][292]['res_coeff'] -['path_tpc']['grades'][292]['res_net'] -['path_tpc']['grades'][293]['offset'] +['path_tpc']['grades'][292]['res_net_meters'] +['path_tpc']['grades'][293]['offset_meters'] ['path_tpc']['grades'][293]['res_coeff'] -['path_tpc']['grades'][293]['res_net'] -['path_tpc']['grades'][294]['offset'] +['path_tpc']['grades'][293]['res_net_meters'] +['path_tpc']['grades'][294]['offset_meters'] ['path_tpc']['grades'][294]['res_coeff'] -['path_tpc']['grades'][294]['res_net'] -['path_tpc']['grades'][295]['offset'] +['path_tpc']['grades'][294]['res_net_meters'] +['path_tpc']['grades'][295]['offset_meters'] ['path_tpc']['grades'][295]['res_coeff'] -['path_tpc']['grades'][295]['res_net'] -['path_tpc']['grades'][296]['offset'] +['path_tpc']['grades'][295]['res_net_meters'] +['path_tpc']['grades'][296]['offset_meters'] ['path_tpc']['grades'][296]['res_coeff'] -['path_tpc']['grades'][296]['res_net'] -['path_tpc']['grades'][297]['offset'] +['path_tpc']['grades'][296]['res_net_meters'] +['path_tpc']['grades'][297]['offset_meters'] ['path_tpc']['grades'][297]['res_coeff'] -['path_tpc']['grades'][297]['res_net'] -['path_tpc']['grades'][298]['offset'] +['path_tpc']['grades'][297]['res_net_meters'] +['path_tpc']['grades'][298]['offset_meters'] ['path_tpc']['grades'][298]['res_coeff'] -['path_tpc']['grades'][298]['res_net'] -['path_tpc']['grades'][299]['offset'] +['path_tpc']['grades'][298]['res_net_meters'] +['path_tpc']['grades'][299]['offset_meters'] ['path_tpc']['grades'][299]['res_coeff'] -['path_tpc']['grades'][299]['res_net'] -['path_tpc']['grades'][300]['offset'] +['path_tpc']['grades'][299]['res_net_meters'] +['path_tpc']['grades'][300]['offset_meters'] ['path_tpc']['grades'][300]['res_coeff'] -['path_tpc']['grades'][300]['res_net'] -['path_tpc']['grades'][301]['offset'] +['path_tpc']['grades'][300]['res_net_meters'] +['path_tpc']['grades'][301]['offset_meters'] ['path_tpc']['grades'][301]['res_coeff'] -['path_tpc']['grades'][301]['res_net'] -['path_tpc']['grades'][302]['offset'] +['path_tpc']['grades'][301]['res_net_meters'] +['path_tpc']['grades'][302]['offset_meters'] ['path_tpc']['grades'][302]['res_coeff'] -['path_tpc']['grades'][302]['res_net'] -['path_tpc']['grades'][303]['offset'] +['path_tpc']['grades'][302]['res_net_meters'] +['path_tpc']['grades'][303]['offset_meters'] ['path_tpc']['grades'][303]['res_coeff'] -['path_tpc']['grades'][303]['res_net'] -['path_tpc']['grades'][304]['offset'] +['path_tpc']['grades'][303]['res_net_meters'] +['path_tpc']['grades'][304]['offset_meters'] ['path_tpc']['grades'][304]['res_coeff'] -['path_tpc']['grades'][304]['res_net'] -['path_tpc']['grades'][305]['offset'] +['path_tpc']['grades'][304]['res_net_meters'] +['path_tpc']['grades'][305]['offset_meters'] ['path_tpc']['grades'][305]['res_coeff'] -['path_tpc']['grades'][305]['res_net'] -['path_tpc']['grades'][306]['offset'] +['path_tpc']['grades'][305]['res_net_meters'] +['path_tpc']['grades'][306]['offset_meters'] ['path_tpc']['grades'][306]['res_coeff'] -['path_tpc']['grades'][306]['res_net'] -['path_tpc']['grades'][307]['offset'] +['path_tpc']['grades'][306]['res_net_meters'] +['path_tpc']['grades'][307]['offset_meters'] ['path_tpc']['grades'][307]['res_coeff'] -['path_tpc']['grades'][307]['res_net'] -['path_tpc']['grades'][308]['offset'] +['path_tpc']['grades'][307]['res_net_meters'] +['path_tpc']['grades'][308]['offset_meters'] ['path_tpc']['grades'][308]['res_coeff'] -['path_tpc']['grades'][308]['res_net'] -['path_tpc']['grades'][309]['offset'] +['path_tpc']['grades'][308]['res_net_meters'] +['path_tpc']['grades'][309]['offset_meters'] ['path_tpc']['grades'][309]['res_coeff'] -['path_tpc']['grades'][309]['res_net'] -['path_tpc']['grades'][310]['offset'] +['path_tpc']['grades'][309]['res_net_meters'] +['path_tpc']['grades'][310]['offset_meters'] ['path_tpc']['grades'][310]['res_coeff'] -['path_tpc']['grades'][310]['res_net'] -['path_tpc']['grades'][311]['offset'] +['path_tpc']['grades'][310]['res_net_meters'] +['path_tpc']['grades'][311]['offset_meters'] ['path_tpc']['grades'][311]['res_coeff'] -['path_tpc']['grades'][311]['res_net'] -['path_tpc']['grades'][312]['offset'] +['path_tpc']['grades'][311]['res_net_meters'] +['path_tpc']['grades'][312]['offset_meters'] ['path_tpc']['grades'][312]['res_coeff'] -['path_tpc']['grades'][312]['res_net'] -['path_tpc']['grades'][313]['offset'] +['path_tpc']['grades'][312]['res_net_meters'] +['path_tpc']['grades'][313]['offset_meters'] ['path_tpc']['grades'][313]['res_coeff'] -['path_tpc']['grades'][313]['res_net'] -['path_tpc']['grades'][314]['offset'] +['path_tpc']['grades'][313]['res_net_meters'] +['path_tpc']['grades'][314]['offset_meters'] ['path_tpc']['grades'][314]['res_coeff'] -['path_tpc']['grades'][314]['res_net'] -['path_tpc']['grades'][315]['offset'] +['path_tpc']['grades'][314]['res_net_meters'] +['path_tpc']['grades'][315]['offset_meters'] ['path_tpc']['grades'][315]['res_coeff'] -['path_tpc']['grades'][315]['res_net'] -['path_tpc']['grades'][316]['offset'] +['path_tpc']['grades'][315]['res_net_meters'] +['path_tpc']['grades'][316]['offset_meters'] ['path_tpc']['grades'][316]['res_coeff'] -['path_tpc']['grades'][316]['res_net'] -['path_tpc']['grades'][317]['offset'] +['path_tpc']['grades'][316]['res_net_meters'] +['path_tpc']['grades'][317]['offset_meters'] ['path_tpc']['grades'][317]['res_coeff'] -['path_tpc']['grades'][317]['res_net'] -['path_tpc']['grades'][318]['offset'] +['path_tpc']['grades'][317]['res_net_meters'] +['path_tpc']['grades'][318]['offset_meters'] ['path_tpc']['grades'][318]['res_coeff'] -['path_tpc']['grades'][318]['res_net'] -['path_tpc']['grades'][319]['offset'] +['path_tpc']['grades'][318]['res_net_meters'] +['path_tpc']['grades'][319]['offset_meters'] ['path_tpc']['grades'][319]['res_coeff'] -['path_tpc']['grades'][319]['res_net'] -['path_tpc']['grades'][320]['offset'] +['path_tpc']['grades'][319]['res_net_meters'] +['path_tpc']['grades'][320]['offset_meters'] ['path_tpc']['grades'][320]['res_coeff'] -['path_tpc']['grades'][320]['res_net'] -['path_tpc']['grades'][321]['offset'] +['path_tpc']['grades'][320]['res_net_meters'] +['path_tpc']['grades'][321]['offset_meters'] ['path_tpc']['grades'][321]['res_coeff'] -['path_tpc']['grades'][321]['res_net'] -['path_tpc']['grades'][322]['offset'] +['path_tpc']['grades'][321]['res_net_meters'] +['path_tpc']['grades'][322]['offset_meters'] ['path_tpc']['grades'][322]['res_coeff'] -['path_tpc']['grades'][322]['res_net'] -['path_tpc']['grades'][323]['offset'] +['path_tpc']['grades'][322]['res_net_meters'] +['path_tpc']['grades'][323]['offset_meters'] ['path_tpc']['grades'][323]['res_coeff'] -['path_tpc']['grades'][323]['res_net'] -['path_tpc']['grades'][324]['offset'] +['path_tpc']['grades'][323]['res_net_meters'] +['path_tpc']['grades'][324]['offset_meters'] ['path_tpc']['grades'][324]['res_coeff'] -['path_tpc']['grades'][324]['res_net'] -['path_tpc']['grades'][325]['offset'] +['path_tpc']['grades'][324]['res_net_meters'] +['path_tpc']['grades'][325]['offset_meters'] ['path_tpc']['grades'][325]['res_coeff'] -['path_tpc']['grades'][325]['res_net'] -['path_tpc']['grades'][326]['offset'] +['path_tpc']['grades'][325]['res_net_meters'] +['path_tpc']['grades'][326]['offset_meters'] ['path_tpc']['grades'][326]['res_coeff'] -['path_tpc']['grades'][326]['res_net'] -['path_tpc']['grades'][327]['offset'] +['path_tpc']['grades'][326]['res_net_meters'] +['path_tpc']['grades'][327]['offset_meters'] ['path_tpc']['grades'][327]['res_coeff'] -['path_tpc']['grades'][327]['res_net'] -['path_tpc']['grades'][328]['offset'] +['path_tpc']['grades'][327]['res_net_meters'] +['path_tpc']['grades'][328]['offset_meters'] ['path_tpc']['grades'][328]['res_coeff'] -['path_tpc']['grades'][328]['res_net'] -['path_tpc']['grades'][329]['offset'] +['path_tpc']['grades'][328]['res_net_meters'] +['path_tpc']['grades'][329]['offset_meters'] ['path_tpc']['grades'][329]['res_coeff'] -['path_tpc']['grades'][329]['res_net'] -['path_tpc']['grades'][330]['offset'] +['path_tpc']['grades'][329]['res_net_meters'] +['path_tpc']['grades'][330]['offset_meters'] ['path_tpc']['grades'][330]['res_coeff'] -['path_tpc']['grades'][330]['res_net'] -['path_tpc']['grades'][331]['offset'] +['path_tpc']['grades'][330]['res_net_meters'] +['path_tpc']['grades'][331]['offset_meters'] ['path_tpc']['grades'][331]['res_coeff'] -['path_tpc']['grades'][331]['res_net'] -['path_tpc']['grades'][332]['offset'] +['path_tpc']['grades'][331]['res_net_meters'] +['path_tpc']['grades'][332]['offset_meters'] ['path_tpc']['grades'][332]['res_coeff'] -['path_tpc']['grades'][332]['res_net'] -['path_tpc']['grades'][333]['offset'] +['path_tpc']['grades'][332]['res_net_meters'] +['path_tpc']['grades'][333]['offset_meters'] ['path_tpc']['grades'][333]['res_coeff'] -['path_tpc']['grades'][333]['res_net'] -['path_tpc']['grades'][334]['offset'] +['path_tpc']['grades'][333]['res_net_meters'] +['path_tpc']['grades'][334]['offset_meters'] ['path_tpc']['grades'][334]['res_coeff'] -['path_tpc']['grades'][334]['res_net'] -['path_tpc']['grades'][335]['offset'] +['path_tpc']['grades'][334]['res_net_meters'] +['path_tpc']['grades'][335]['offset_meters'] ['path_tpc']['grades'][335]['res_coeff'] -['path_tpc']['grades'][335]['res_net'] -['path_tpc']['grades'][336]['offset'] +['path_tpc']['grades'][335]['res_net_meters'] +['path_tpc']['grades'][336]['offset_meters'] ['path_tpc']['grades'][336]['res_coeff'] -['path_tpc']['grades'][336]['res_net'] -['path_tpc']['grades'][337]['offset'] +['path_tpc']['grades'][336]['res_net_meters'] +['path_tpc']['grades'][337]['offset_meters'] ['path_tpc']['grades'][337]['res_coeff'] -['path_tpc']['grades'][337]['res_net'] -['path_tpc']['grades'][338]['offset'] +['path_tpc']['grades'][337]['res_net_meters'] +['path_tpc']['grades'][338]['offset_meters'] ['path_tpc']['grades'][338]['res_coeff'] -['path_tpc']['grades'][338]['res_net'] -['path_tpc']['grades'][339]['offset'] +['path_tpc']['grades'][338]['res_net_meters'] +['path_tpc']['grades'][339]['offset_meters'] ['path_tpc']['grades'][339]['res_coeff'] -['path_tpc']['grades'][339]['res_net'] -['path_tpc']['grades'][340]['offset'] +['path_tpc']['grades'][339]['res_net_meters'] +['path_tpc']['grades'][340]['offset_meters'] ['path_tpc']['grades'][340]['res_coeff'] -['path_tpc']['grades'][340]['res_net'] -['path_tpc']['grades'][341]['offset'] +['path_tpc']['grades'][340]['res_net_meters'] +['path_tpc']['grades'][341]['offset_meters'] ['path_tpc']['grades'][341]['res_coeff'] -['path_tpc']['grades'][341]['res_net'] -['path_tpc']['grades'][342]['offset'] +['path_tpc']['grades'][341]['res_net_meters'] +['path_tpc']['grades'][342]['offset_meters'] ['path_tpc']['grades'][342]['res_coeff'] -['path_tpc']['grades'][342]['res_net'] -['path_tpc']['grades'][343]['offset'] +['path_tpc']['grades'][342]['res_net_meters'] +['path_tpc']['grades'][343]['offset_meters'] ['path_tpc']['grades'][343]['res_coeff'] -['path_tpc']['grades'][343]['res_net'] -['path_tpc']['grades'][344]['offset'] +['path_tpc']['grades'][343]['res_net_meters'] +['path_tpc']['grades'][344]['offset_meters'] ['path_tpc']['grades'][344]['res_coeff'] -['path_tpc']['grades'][344]['res_net'] -['path_tpc']['grades'][345]['offset'] +['path_tpc']['grades'][344]['res_net_meters'] +['path_tpc']['grades'][345]['offset_meters'] ['path_tpc']['grades'][345]['res_coeff'] -['path_tpc']['grades'][345]['res_net'] -['path_tpc']['grades'][346]['offset'] +['path_tpc']['grades'][345]['res_net_meters'] +['path_tpc']['grades'][346]['offset_meters'] ['path_tpc']['grades'][346]['res_coeff'] -['path_tpc']['grades'][346]['res_net'] -['path_tpc']['grades'][347]['offset'] +['path_tpc']['grades'][346]['res_net_meters'] +['path_tpc']['grades'][347]['offset_meters'] ['path_tpc']['grades'][347]['res_coeff'] -['path_tpc']['grades'][347]['res_net'] -['path_tpc']['grades'][348]['offset'] +['path_tpc']['grades'][347]['res_net_meters'] +['path_tpc']['grades'][348]['offset_meters'] ['path_tpc']['grades'][348]['res_coeff'] -['path_tpc']['grades'][348]['res_net'] -['path_tpc']['grades'][349]['offset'] +['path_tpc']['grades'][348]['res_net_meters'] +['path_tpc']['grades'][349]['offset_meters'] ['path_tpc']['grades'][349]['res_coeff'] -['path_tpc']['grades'][349]['res_net'] -['path_tpc']['grades'][350]['offset'] +['path_tpc']['grades'][349]['res_net_meters'] +['path_tpc']['grades'][350]['offset_meters'] ['path_tpc']['grades'][350]['res_coeff'] -['path_tpc']['grades'][350]['res_net'] -['path_tpc']['grades'][351]['offset'] +['path_tpc']['grades'][350]['res_net_meters'] +['path_tpc']['grades'][351]['offset_meters'] ['path_tpc']['grades'][351]['res_coeff'] -['path_tpc']['grades'][351]['res_net'] -['path_tpc']['grades'][352]['offset'] +['path_tpc']['grades'][351]['res_net_meters'] +['path_tpc']['grades'][352]['offset_meters'] ['path_tpc']['grades'][352]['res_coeff'] -['path_tpc']['grades'][352]['res_net'] -['path_tpc']['grades'][353]['offset'] +['path_tpc']['grades'][352]['res_net_meters'] +['path_tpc']['grades'][353]['offset_meters'] ['path_tpc']['grades'][353]['res_coeff'] -['path_tpc']['grades'][353]['res_net'] -['path_tpc']['grades'][354]['offset'] +['path_tpc']['grades'][353]['res_net_meters'] +['path_tpc']['grades'][354]['offset_meters'] ['path_tpc']['grades'][354]['res_coeff'] -['path_tpc']['grades'][354]['res_net'] -['path_tpc']['grades'][355]['offset'] +['path_tpc']['grades'][354]['res_net_meters'] +['path_tpc']['grades'][355]['offset_meters'] ['path_tpc']['grades'][355]['res_coeff'] -['path_tpc']['grades'][355]['res_net'] -['path_tpc']['grades'][356]['offset'] +['path_tpc']['grades'][355]['res_net_meters'] +['path_tpc']['grades'][356]['offset_meters'] ['path_tpc']['grades'][356]['res_coeff'] -['path_tpc']['grades'][356]['res_net'] -['path_tpc']['grades'][357]['offset'] +['path_tpc']['grades'][356]['res_net_meters'] +['path_tpc']['grades'][357]['offset_meters'] ['path_tpc']['grades'][357]['res_coeff'] -['path_tpc']['grades'][357]['res_net'] -['path_tpc']['grades'][358]['offset'] +['path_tpc']['grades'][357]['res_net_meters'] +['path_tpc']['grades'][358]['offset_meters'] ['path_tpc']['grades'][358]['res_coeff'] -['path_tpc']['grades'][358]['res_net'] -['path_tpc']['grades'][359]['offset'] +['path_tpc']['grades'][358]['res_net_meters'] +['path_tpc']['grades'][359]['offset_meters'] ['path_tpc']['grades'][359]['res_coeff'] -['path_tpc']['grades'][359]['res_net'] -['path_tpc']['grades'][360]['offset'] +['path_tpc']['grades'][359]['res_net_meters'] +['path_tpc']['grades'][360]['offset_meters'] ['path_tpc']['grades'][360]['res_coeff'] -['path_tpc']['grades'][360]['res_net'] -['path_tpc']['grades'][361]['offset'] +['path_tpc']['grades'][360]['res_net_meters'] +['path_tpc']['grades'][361]['offset_meters'] ['path_tpc']['grades'][361]['res_coeff'] -['path_tpc']['grades'][361]['res_net'] -['path_tpc']['grades'][362]['offset'] +['path_tpc']['grades'][361]['res_net_meters'] +['path_tpc']['grades'][362]['offset_meters'] ['path_tpc']['grades'][362]['res_coeff'] -['path_tpc']['grades'][362]['res_net'] -['path_tpc']['grades'][363]['offset'] +['path_tpc']['grades'][362]['res_net_meters'] +['path_tpc']['grades'][363]['offset_meters'] ['path_tpc']['grades'][363]['res_coeff'] -['path_tpc']['grades'][363]['res_net'] -['path_tpc']['grades'][364]['offset'] +['path_tpc']['grades'][363]['res_net_meters'] +['path_tpc']['grades'][364]['offset_meters'] ['path_tpc']['grades'][364]['res_coeff'] -['path_tpc']['grades'][364]['res_net'] -['path_tpc']['grades'][365]['offset'] +['path_tpc']['grades'][364]['res_net_meters'] +['path_tpc']['grades'][365]['offset_meters'] ['path_tpc']['grades'][365]['res_coeff'] -['path_tpc']['grades'][365]['res_net'] -['path_tpc']['grades'][366]['offset'] +['path_tpc']['grades'][365]['res_net_meters'] +['path_tpc']['grades'][366]['offset_meters'] ['path_tpc']['grades'][366]['res_coeff'] -['path_tpc']['grades'][366]['res_net'] -['path_tpc']['grades'][367]['offset'] +['path_tpc']['grades'][366]['res_net_meters'] +['path_tpc']['grades'][367]['offset_meters'] ['path_tpc']['grades'][367]['res_coeff'] -['path_tpc']['grades'][367]['res_net'] -['path_tpc']['grades'][368]['offset'] +['path_tpc']['grades'][367]['res_net_meters'] +['path_tpc']['grades'][368]['offset_meters'] ['path_tpc']['grades'][368]['res_coeff'] -['path_tpc']['grades'][368]['res_net'] -['path_tpc']['grades'][369]['offset'] +['path_tpc']['grades'][368]['res_net_meters'] +['path_tpc']['grades'][369]['offset_meters'] ['path_tpc']['grades'][369]['res_coeff'] -['path_tpc']['grades'][369]['res_net'] -['path_tpc']['grades'][370]['offset'] +['path_tpc']['grades'][369]['res_net_meters'] +['path_tpc']['grades'][370]['offset_meters'] ['path_tpc']['grades'][370]['res_coeff'] -['path_tpc']['grades'][370]['res_net'] -['path_tpc']['grades'][371]['offset'] +['path_tpc']['grades'][370]['res_net_meters'] +['path_tpc']['grades'][371]['offset_meters'] ['path_tpc']['grades'][371]['res_coeff'] -['path_tpc']['grades'][371]['res_net'] -['path_tpc']['grades'][372]['offset'] +['path_tpc']['grades'][371]['res_net_meters'] +['path_tpc']['grades'][372]['offset_meters'] ['path_tpc']['grades'][372]['res_coeff'] -['path_tpc']['grades'][372]['res_net'] -['path_tpc']['grades'][373]['offset'] +['path_tpc']['grades'][372]['res_net_meters'] +['path_tpc']['grades'][373]['offset_meters'] ['path_tpc']['grades'][373]['res_coeff'] -['path_tpc']['grades'][373]['res_net'] -['path_tpc']['grades'][374]['offset'] +['path_tpc']['grades'][373]['res_net_meters'] +['path_tpc']['grades'][374]['offset_meters'] ['path_tpc']['grades'][374]['res_coeff'] -['path_tpc']['grades'][374]['res_net'] -['path_tpc']['grades'][375]['offset'] +['path_tpc']['grades'][374]['res_net_meters'] +['path_tpc']['grades'][375]['offset_meters'] ['path_tpc']['grades'][375]['res_coeff'] -['path_tpc']['grades'][375]['res_net'] -['path_tpc']['grades'][376]['offset'] +['path_tpc']['grades'][375]['res_net_meters'] +['path_tpc']['grades'][376]['offset_meters'] ['path_tpc']['grades'][376]['res_coeff'] -['path_tpc']['grades'][376]['res_net'] -['path_tpc']['grades'][377]['offset'] +['path_tpc']['grades'][376]['res_net_meters'] +['path_tpc']['grades'][377]['offset_meters'] ['path_tpc']['grades'][377]['res_coeff'] -['path_tpc']['grades'][377]['res_net'] -['path_tpc']['grades'][378]['offset'] +['path_tpc']['grades'][377]['res_net_meters'] +['path_tpc']['grades'][378]['offset_meters'] ['path_tpc']['grades'][378]['res_coeff'] -['path_tpc']['grades'][378]['res_net'] -['path_tpc']['grades'][379]['offset'] +['path_tpc']['grades'][378]['res_net_meters'] +['path_tpc']['grades'][379]['offset_meters'] ['path_tpc']['grades'][379]['res_coeff'] -['path_tpc']['grades'][379]['res_net'] -['path_tpc']['grades'][380]['offset'] +['path_tpc']['grades'][379]['res_net_meters'] +['path_tpc']['grades'][380]['offset_meters'] ['path_tpc']['grades'][380]['res_coeff'] -['path_tpc']['grades'][380]['res_net'] -['path_tpc']['grades'][381]['offset'] +['path_tpc']['grades'][380]['res_net_meters'] +['path_tpc']['grades'][381]['offset_meters'] ['path_tpc']['grades'][381]['res_coeff'] -['path_tpc']['grades'][381]['res_net'] -['path_tpc']['grades'][382]['offset'] +['path_tpc']['grades'][381]['res_net_meters'] +['path_tpc']['grades'][382]['offset_meters'] ['path_tpc']['grades'][382]['res_coeff'] -['path_tpc']['grades'][382]['res_net'] -['path_tpc']['grades'][383]['offset'] +['path_tpc']['grades'][382]['res_net_meters'] +['path_tpc']['grades'][383]['offset_meters'] ['path_tpc']['grades'][383]['res_coeff'] -['path_tpc']['grades'][383]['res_net'] -['path_tpc']['grades'][384]['offset'] +['path_tpc']['grades'][383]['res_net_meters'] +['path_tpc']['grades'][384]['offset_meters'] ['path_tpc']['grades'][384]['res_coeff'] -['path_tpc']['grades'][384]['res_net'] -['path_tpc']['grades'][385]['offset'] +['path_tpc']['grades'][384]['res_net_meters'] +['path_tpc']['grades'][385]['offset_meters'] ['path_tpc']['grades'][385]['res_coeff'] -['path_tpc']['grades'][385]['res_net'] -['path_tpc']['grades'][386]['offset'] +['path_tpc']['grades'][385]['res_net_meters'] +['path_tpc']['grades'][386]['offset_meters'] ['path_tpc']['grades'][386]['res_coeff'] -['path_tpc']['grades'][386]['res_net'] -['path_tpc']['grades'][387]['offset'] +['path_tpc']['grades'][386]['res_net_meters'] +['path_tpc']['grades'][387]['offset_meters'] ['path_tpc']['grades'][387]['res_coeff'] -['path_tpc']['grades'][387]['res_net'] -['path_tpc']['grades'][388]['offset'] +['path_tpc']['grades'][387]['res_net_meters'] +['path_tpc']['grades'][388]['offset_meters'] ['path_tpc']['grades'][388]['res_coeff'] -['path_tpc']['grades'][388]['res_net'] -['path_tpc']['grades'][389]['offset'] +['path_tpc']['grades'][388]['res_net_meters'] +['path_tpc']['grades'][389]['offset_meters'] ['path_tpc']['grades'][389]['res_coeff'] -['path_tpc']['grades'][389]['res_net'] -['path_tpc']['grades'][390]['offset'] +['path_tpc']['grades'][389]['res_net_meters'] +['path_tpc']['grades'][390]['offset_meters'] ['path_tpc']['grades'][390]['res_coeff'] -['path_tpc']['grades'][390]['res_net'] -['path_tpc']['grades'][391]['offset'] +['path_tpc']['grades'][390]['res_net_meters'] +['path_tpc']['grades'][391]['offset_meters'] ['path_tpc']['grades'][391]['res_coeff'] -['path_tpc']['grades'][391]['res_net'] -['path_tpc']['grades'][392]['offset'] +['path_tpc']['grades'][391]['res_net_meters'] +['path_tpc']['grades'][392]['offset_meters'] ['path_tpc']['grades'][392]['res_coeff'] -['path_tpc']['grades'][392]['res_net'] -['path_tpc']['grades'][393]['offset'] +['path_tpc']['grades'][392]['res_net_meters'] +['path_tpc']['grades'][393]['offset_meters'] ['path_tpc']['grades'][393]['res_coeff'] -['path_tpc']['grades'][393]['res_net'] -['path_tpc']['grades'][394]['offset'] +['path_tpc']['grades'][393]['res_net_meters'] +['path_tpc']['grades'][394]['offset_meters'] ['path_tpc']['grades'][394]['res_coeff'] -['path_tpc']['grades'][394]['res_net'] -['path_tpc']['grades'][395]['offset'] +['path_tpc']['grades'][394]['res_net_meters'] +['path_tpc']['grades'][395]['offset_meters'] ['path_tpc']['grades'][395]['res_coeff'] -['path_tpc']['grades'][395]['res_net'] -['path_tpc']['grades'][396]['offset'] +['path_tpc']['grades'][395]['res_net_meters'] +['path_tpc']['grades'][396]['offset_meters'] ['path_tpc']['grades'][396]['res_coeff'] -['path_tpc']['grades'][396]['res_net'] -['path_tpc']['grades'][397]['offset'] +['path_tpc']['grades'][396]['res_net_meters'] +['path_tpc']['grades'][397]['offset_meters'] ['path_tpc']['grades'][397]['res_coeff'] -['path_tpc']['grades'][397]['res_net'] -['path_tpc']['grades'][398]['offset'] +['path_tpc']['grades'][397]['res_net_meters'] +['path_tpc']['grades'][398]['offset_meters'] ['path_tpc']['grades'][398]['res_coeff'] -['path_tpc']['grades'][398]['res_net'] -['path_tpc']['grades'][399]['offset'] +['path_tpc']['grades'][398]['res_net_meters'] +['path_tpc']['grades'][399]['offset_meters'] ['path_tpc']['grades'][399]['res_coeff'] -['path_tpc']['grades'][399]['res_net'] -['path_tpc']['grades'][400]['offset'] +['path_tpc']['grades'][399]['res_net_meters'] +['path_tpc']['grades'][400]['offset_meters'] ['path_tpc']['grades'][400]['res_coeff'] -['path_tpc']['grades'][400]['res_net'] -['path_tpc']['grades'][401]['offset'] +['path_tpc']['grades'][400]['res_net_meters'] +['path_tpc']['grades'][401]['offset_meters'] ['path_tpc']['grades'][401]['res_coeff'] -['path_tpc']['grades'][401]['res_net'] -['path_tpc']['grades'][402]['offset'] +['path_tpc']['grades'][401]['res_net_meters'] +['path_tpc']['grades'][402]['offset_meters'] ['path_tpc']['grades'][402]['res_coeff'] -['path_tpc']['grades'][402]['res_net'] -['path_tpc']['grades'][403]['offset'] +['path_tpc']['grades'][402]['res_net_meters'] +['path_tpc']['grades'][403]['offset_meters'] ['path_tpc']['grades'][403]['res_coeff'] -['path_tpc']['grades'][403]['res_net'] -['path_tpc']['grades'][404]['offset'] +['path_tpc']['grades'][403]['res_net_meters'] +['path_tpc']['grades'][404]['offset_meters'] ['path_tpc']['grades'][404]['res_coeff'] -['path_tpc']['grades'][404]['res_net'] -['path_tpc']['grades'][405]['offset'] +['path_tpc']['grades'][404]['res_net_meters'] +['path_tpc']['grades'][405]['offset_meters'] ['path_tpc']['grades'][405]['res_coeff'] -['path_tpc']['grades'][405]['res_net'] -['path_tpc']['grades'][406]['offset'] +['path_tpc']['grades'][405]['res_net_meters'] +['path_tpc']['grades'][406]['offset_meters'] ['path_tpc']['grades'][406]['res_coeff'] -['path_tpc']['grades'][406]['res_net'] -['path_tpc']['grades'][407]['offset'] +['path_tpc']['grades'][406]['res_net_meters'] +['path_tpc']['grades'][407]['offset_meters'] ['path_tpc']['grades'][407]['res_coeff'] -['path_tpc']['grades'][407]['res_net'] -['path_tpc']['grades'][408]['offset'] +['path_tpc']['grades'][407]['res_net_meters'] +['path_tpc']['grades'][408]['offset_meters'] ['path_tpc']['grades'][408]['res_coeff'] -['path_tpc']['grades'][408]['res_net'] -['path_tpc']['grades'][409]['offset'] +['path_tpc']['grades'][408]['res_net_meters'] +['path_tpc']['grades'][409]['offset_meters'] ['path_tpc']['grades'][409]['res_coeff'] -['path_tpc']['grades'][409]['res_net'] -['path_tpc']['grades'][410]['offset'] +['path_tpc']['grades'][409]['res_net_meters'] +['path_tpc']['grades'][410]['offset_meters'] ['path_tpc']['grades'][410]['res_coeff'] -['path_tpc']['grades'][410]['res_net'] -['path_tpc']['grades'][411]['offset'] +['path_tpc']['grades'][410]['res_net_meters'] +['path_tpc']['grades'][411]['offset_meters'] ['path_tpc']['grades'][411]['res_coeff'] -['path_tpc']['grades'][411]['res_net'] -['path_tpc']['grades'][412]['offset'] +['path_tpc']['grades'][411]['res_net_meters'] +['path_tpc']['grades'][412]['offset_meters'] ['path_tpc']['grades'][412]['res_coeff'] -['path_tpc']['grades'][412]['res_net'] -['path_tpc']['grades'][413]['offset'] +['path_tpc']['grades'][412]['res_net_meters'] +['path_tpc']['grades'][413]['offset_meters'] ['path_tpc']['grades'][413]['res_coeff'] -['path_tpc']['grades'][413]['res_net'] -['path_tpc']['grades'][414]['offset'] +['path_tpc']['grades'][413]['res_net_meters'] +['path_tpc']['grades'][414]['offset_meters'] ['path_tpc']['grades'][414]['res_coeff'] -['path_tpc']['grades'][414]['res_net'] -['path_tpc']['grades'][415]['offset'] +['path_tpc']['grades'][414]['res_net_meters'] +['path_tpc']['grades'][415]['offset_meters'] ['path_tpc']['grades'][415]['res_coeff'] -['path_tpc']['grades'][415]['res_net'] -['path_tpc']['grades'][416]['offset'] +['path_tpc']['grades'][415]['res_net_meters'] +['path_tpc']['grades'][416]['offset_meters'] ['path_tpc']['grades'][416]['res_coeff'] -['path_tpc']['grades'][416]['res_net'] -['path_tpc']['grades'][417]['offset'] +['path_tpc']['grades'][416]['res_net_meters'] +['path_tpc']['grades'][417]['offset_meters'] ['path_tpc']['grades'][417]['res_coeff'] -['path_tpc']['grades'][417]['res_net'] -['path_tpc']['grades'][418]['offset'] +['path_tpc']['grades'][417]['res_net_meters'] +['path_tpc']['grades'][418]['offset_meters'] ['path_tpc']['grades'][418]['res_coeff'] -['path_tpc']['grades'][418]['res_net'] -['path_tpc']['grades'][419]['offset'] +['path_tpc']['grades'][418]['res_net_meters'] +['path_tpc']['grades'][419]['offset_meters'] ['path_tpc']['grades'][419]['res_coeff'] -['path_tpc']['grades'][419]['res_net'] -['path_tpc']['grades'][420]['offset'] +['path_tpc']['grades'][419]['res_net_meters'] +['path_tpc']['grades'][420]['offset_meters'] ['path_tpc']['grades'][420]['res_coeff'] -['path_tpc']['grades'][420]['res_net'] -['path_tpc']['grades'][421]['offset'] +['path_tpc']['grades'][420]['res_net_meters'] +['path_tpc']['grades'][421]['offset_meters'] ['path_tpc']['grades'][421]['res_coeff'] -['path_tpc']['grades'][421]['res_net'] -['path_tpc']['grades'][422]['offset'] +['path_tpc']['grades'][421]['res_net_meters'] +['path_tpc']['grades'][422]['offset_meters'] ['path_tpc']['grades'][422]['res_coeff'] -['path_tpc']['grades'][422]['res_net'] -['path_tpc']['grades'][423]['offset'] +['path_tpc']['grades'][422]['res_net_meters'] +['path_tpc']['grades'][423]['offset_meters'] ['path_tpc']['grades'][423]['res_coeff'] -['path_tpc']['grades'][423]['res_net'] -['path_tpc']['grades'][424]['offset'] +['path_tpc']['grades'][423]['res_net_meters'] +['path_tpc']['grades'][424]['offset_meters'] ['path_tpc']['grades'][424]['res_coeff'] -['path_tpc']['grades'][424]['res_net'] -['path_tpc']['grades'][425]['offset'] +['path_tpc']['grades'][424]['res_net_meters'] +['path_tpc']['grades'][425]['offset_meters'] ['path_tpc']['grades'][425]['res_coeff'] -['path_tpc']['grades'][425]['res_net'] -['path_tpc']['grades'][426]['offset'] +['path_tpc']['grades'][425]['res_net_meters'] +['path_tpc']['grades'][426]['offset_meters'] ['path_tpc']['grades'][426]['res_coeff'] -['path_tpc']['grades'][426]['res_net'] -['path_tpc']['grades'][427]['offset'] +['path_tpc']['grades'][426]['res_net_meters'] +['path_tpc']['grades'][427]['offset_meters'] ['path_tpc']['grades'][427]['res_coeff'] -['path_tpc']['grades'][427]['res_net'] -['path_tpc']['grades'][428]['offset'] +['path_tpc']['grades'][427]['res_net_meters'] +['path_tpc']['grades'][428]['offset_meters'] ['path_tpc']['grades'][428]['res_coeff'] -['path_tpc']['grades'][428]['res_net'] -['path_tpc']['grades'][429]['offset'] +['path_tpc']['grades'][428]['res_net_meters'] +['path_tpc']['grades'][429]['offset_meters'] ['path_tpc']['grades'][429]['res_coeff'] -['path_tpc']['grades'][429]['res_net'] -['path_tpc']['grades'][430]['offset'] +['path_tpc']['grades'][429]['res_net_meters'] +['path_tpc']['grades'][430]['offset_meters'] ['path_tpc']['grades'][430]['res_coeff'] -['path_tpc']['grades'][430]['res_net'] -['path_tpc']['grades'][431]['offset'] +['path_tpc']['grades'][430]['res_net_meters'] +['path_tpc']['grades'][431]['offset_meters'] ['path_tpc']['grades'][431]['res_coeff'] -['path_tpc']['grades'][431]['res_net'] -['path_tpc']['grades'][432]['offset'] +['path_tpc']['grades'][431]['res_net_meters'] +['path_tpc']['grades'][432]['offset_meters'] ['path_tpc']['grades'][432]['res_coeff'] -['path_tpc']['grades'][432]['res_net'] -['path_tpc']['grades'][433]['offset'] +['path_tpc']['grades'][432]['res_net_meters'] +['path_tpc']['grades'][433]['offset_meters'] ['path_tpc']['grades'][433]['res_coeff'] -['path_tpc']['grades'][433]['res_net'] -['path_tpc']['grades'][434]['offset'] +['path_tpc']['grades'][433]['res_net_meters'] +['path_tpc']['grades'][434]['offset_meters'] ['path_tpc']['grades'][434]['res_coeff'] -['path_tpc']['grades'][434]['res_net'] -['path_tpc']['grades'][435]['offset'] +['path_tpc']['grades'][434]['res_net_meters'] +['path_tpc']['grades'][435]['offset_meters'] ['path_tpc']['grades'][435]['res_coeff'] -['path_tpc']['grades'][435]['res_net'] -['path_tpc']['grades'][436]['offset'] +['path_tpc']['grades'][435]['res_net_meters'] +['path_tpc']['grades'][436]['offset_meters'] ['path_tpc']['grades'][436]['res_coeff'] -['path_tpc']['grades'][436]['res_net'] -['path_tpc']['grades'][437]['offset'] +['path_tpc']['grades'][436]['res_net_meters'] +['path_tpc']['grades'][437]['offset_meters'] ['path_tpc']['grades'][437]['res_coeff'] -['path_tpc']['grades'][437]['res_net'] -['path_tpc']['grades'][438]['offset'] +['path_tpc']['grades'][437]['res_net_meters'] +['path_tpc']['grades'][438]['offset_meters'] ['path_tpc']['grades'][438]['res_coeff'] -['path_tpc']['grades'][438]['res_net'] -['path_tpc']['grades'][439]['offset'] +['path_tpc']['grades'][438]['res_net_meters'] +['path_tpc']['grades'][439]['offset_meters'] ['path_tpc']['grades'][439]['res_coeff'] -['path_tpc']['grades'][439]['res_net'] -['path_tpc']['grades'][440]['offset'] +['path_tpc']['grades'][439]['res_net_meters'] +['path_tpc']['grades'][440]['offset_meters'] ['path_tpc']['grades'][440]['res_coeff'] -['path_tpc']['grades'][440]['res_net'] -['path_tpc']['grades'][441]['offset'] +['path_tpc']['grades'][440]['res_net_meters'] +['path_tpc']['grades'][441]['offset_meters'] ['path_tpc']['grades'][441]['res_coeff'] -['path_tpc']['grades'][441]['res_net'] -['path_tpc']['grades'][442]['offset'] +['path_tpc']['grades'][441]['res_net_meters'] +['path_tpc']['grades'][442]['offset_meters'] ['path_tpc']['grades'][442]['res_coeff'] -['path_tpc']['grades'][442]['res_net'] -['path_tpc']['grades'][443]['offset'] +['path_tpc']['grades'][442]['res_net_meters'] +['path_tpc']['grades'][443]['offset_meters'] ['path_tpc']['grades'][443]['res_coeff'] -['path_tpc']['grades'][443]['res_net'] -['path_tpc']['grades'][444]['offset'] +['path_tpc']['grades'][443]['res_net_meters'] +['path_tpc']['grades'][444]['offset_meters'] ['path_tpc']['grades'][444]['res_coeff'] -['path_tpc']['grades'][444]['res_net'] -['path_tpc']['grades'][445]['offset'] +['path_tpc']['grades'][444]['res_net_meters'] +['path_tpc']['grades'][445]['offset_meters'] ['path_tpc']['grades'][445]['res_coeff'] -['path_tpc']['grades'][445]['res_net'] -['path_tpc']['grades'][446]['offset'] +['path_tpc']['grades'][445]['res_net_meters'] +['path_tpc']['grades'][446]['offset_meters'] ['path_tpc']['grades'][446]['res_coeff'] -['path_tpc']['grades'][446]['res_net'] -['path_tpc']['grades'][447]['offset'] +['path_tpc']['grades'][446]['res_net_meters'] +['path_tpc']['grades'][447]['offset_meters'] ['path_tpc']['grades'][447]['res_coeff'] -['path_tpc']['grades'][447]['res_net'] -['path_tpc']['grades'][448]['offset'] +['path_tpc']['grades'][447]['res_net_meters'] +['path_tpc']['grades'][448]['offset_meters'] ['path_tpc']['grades'][448]['res_coeff'] -['path_tpc']['grades'][448]['res_net'] -['path_tpc']['grades'][449]['offset'] +['path_tpc']['grades'][448]['res_net_meters'] +['path_tpc']['grades'][449]['offset_meters'] ['path_tpc']['grades'][449]['res_coeff'] -['path_tpc']['grades'][449]['res_net'] -['path_tpc']['grades'][450]['offset'] +['path_tpc']['grades'][449]['res_net_meters'] +['path_tpc']['grades'][450]['offset_meters'] ['path_tpc']['grades'][450]['res_coeff'] -['path_tpc']['grades'][450]['res_net'] -['path_tpc']['grades'][451]['offset'] +['path_tpc']['grades'][450]['res_net_meters'] +['path_tpc']['grades'][451]['offset_meters'] ['path_tpc']['grades'][451]['res_coeff'] -['path_tpc']['grades'][451]['res_net'] -['path_tpc']['grades'][452]['offset'] +['path_tpc']['grades'][451]['res_net_meters'] +['path_tpc']['grades'][452]['offset_meters'] ['path_tpc']['grades'][452]['res_coeff'] -['path_tpc']['grades'][452]['res_net'] -['path_tpc']['grades'][453]['offset'] +['path_tpc']['grades'][452]['res_net_meters'] +['path_tpc']['grades'][453]['offset_meters'] ['path_tpc']['grades'][453]['res_coeff'] -['path_tpc']['grades'][453]['res_net'] -['path_tpc']['grades'][454]['offset'] +['path_tpc']['grades'][453]['res_net_meters'] +['path_tpc']['grades'][454]['offset_meters'] ['path_tpc']['grades'][454]['res_coeff'] -['path_tpc']['grades'][454]['res_net'] -['path_tpc']['grades'][455]['offset'] +['path_tpc']['grades'][454]['res_net_meters'] +['path_tpc']['grades'][455]['offset_meters'] ['path_tpc']['grades'][455]['res_coeff'] -['path_tpc']['grades'][455]['res_net'] -['path_tpc']['grades'][456]['offset'] +['path_tpc']['grades'][455]['res_net_meters'] +['path_tpc']['grades'][456]['offset_meters'] ['path_tpc']['grades'][456]['res_coeff'] -['path_tpc']['grades'][456]['res_net'] -['path_tpc']['grades'][457]['offset'] +['path_tpc']['grades'][456]['res_net_meters'] +['path_tpc']['grades'][457]['offset_meters'] ['path_tpc']['grades'][457]['res_coeff'] -['path_tpc']['grades'][457]['res_net'] -['path_tpc']['grades'][458]['offset'] +['path_tpc']['grades'][457]['res_net_meters'] +['path_tpc']['grades'][458]['offset_meters'] ['path_tpc']['grades'][458]['res_coeff'] -['path_tpc']['grades'][458]['res_net'] -['path_tpc']['grades'][459]['offset'] +['path_tpc']['grades'][458]['res_net_meters'] +['path_tpc']['grades'][459]['offset_meters'] ['path_tpc']['grades'][459]['res_coeff'] -['path_tpc']['grades'][459]['res_net'] -['path_tpc']['grades'][460]['offset'] +['path_tpc']['grades'][459]['res_net_meters'] +['path_tpc']['grades'][460]['offset_meters'] ['path_tpc']['grades'][460]['res_coeff'] -['path_tpc']['grades'][460]['res_net'] -['path_tpc']['grades'][461]['offset'] +['path_tpc']['grades'][460]['res_net_meters'] +['path_tpc']['grades'][461]['offset_meters'] ['path_tpc']['grades'][461]['res_coeff'] -['path_tpc']['grades'][461]['res_net'] -['path_tpc']['grades'][462]['offset'] +['path_tpc']['grades'][461]['res_net_meters'] +['path_tpc']['grades'][462]['offset_meters'] ['path_tpc']['grades'][462]['res_coeff'] -['path_tpc']['grades'][462]['res_net'] -['path_tpc']['grades'][463]['offset'] +['path_tpc']['grades'][462]['res_net_meters'] +['path_tpc']['grades'][463]['offset_meters'] ['path_tpc']['grades'][463]['res_coeff'] -['path_tpc']['grades'][463]['res_net'] -['path_tpc']['grades'][464]['offset'] +['path_tpc']['grades'][463]['res_net_meters'] +['path_tpc']['grades'][464]['offset_meters'] ['path_tpc']['grades'][464]['res_coeff'] -['path_tpc']['grades'][464]['res_net'] -['path_tpc']['grades'][465]['offset'] +['path_tpc']['grades'][464]['res_net_meters'] +['path_tpc']['grades'][465]['offset_meters'] ['path_tpc']['grades'][465]['res_coeff'] -['path_tpc']['grades'][465]['res_net'] -['path_tpc']['grades'][466]['offset'] +['path_tpc']['grades'][465]['res_net_meters'] +['path_tpc']['grades'][466]['offset_meters'] ['path_tpc']['grades'][466]['res_coeff'] -['path_tpc']['grades'][466]['res_net'] -['path_tpc']['grades'][467]['offset'] +['path_tpc']['grades'][466]['res_net_meters'] +['path_tpc']['grades'][467]['offset_meters'] ['path_tpc']['grades'][467]['res_coeff'] -['path_tpc']['grades'][467]['res_net'] -['path_tpc']['grades'][468]['offset'] +['path_tpc']['grades'][467]['res_net_meters'] +['path_tpc']['grades'][468]['offset_meters'] ['path_tpc']['grades'][468]['res_coeff'] -['path_tpc']['grades'][468]['res_net'] -['path_tpc']['grades'][469]['offset'] +['path_tpc']['grades'][468]['res_net_meters'] +['path_tpc']['grades'][469]['offset_meters'] ['path_tpc']['grades'][469]['res_coeff'] -['path_tpc']['grades'][469]['res_net'] -['path_tpc']['grades'][470]['offset'] +['path_tpc']['grades'][469]['res_net_meters'] +['path_tpc']['grades'][470]['offset_meters'] ['path_tpc']['grades'][470]['res_coeff'] -['path_tpc']['grades'][470]['res_net'] -['path_tpc']['grades'][471]['offset'] +['path_tpc']['grades'][470]['res_net_meters'] +['path_tpc']['grades'][471]['offset_meters'] ['path_tpc']['grades'][471]['res_coeff'] -['path_tpc']['grades'][471]['res_net'] -['path_tpc']['grades'][472]['offset'] +['path_tpc']['grades'][471]['res_net_meters'] +['path_tpc']['grades'][472]['offset_meters'] ['path_tpc']['grades'][472]['res_coeff'] -['path_tpc']['grades'][472]['res_net'] -['path_tpc']['grades'][473]['offset'] +['path_tpc']['grades'][472]['res_net_meters'] +['path_tpc']['grades'][473]['offset_meters'] ['path_tpc']['grades'][473]['res_coeff'] -['path_tpc']['grades'][473]['res_net'] -['path_tpc']['grades'][474]['offset'] +['path_tpc']['grades'][473]['res_net_meters'] +['path_tpc']['grades'][474]['offset_meters'] ['path_tpc']['grades'][474]['res_coeff'] -['path_tpc']['grades'][474]['res_net'] -['path_tpc']['grades'][475]['offset'] +['path_tpc']['grades'][474]['res_net_meters'] +['path_tpc']['grades'][475]['offset_meters'] ['path_tpc']['grades'][475]['res_coeff'] -['path_tpc']['grades'][475]['res_net'] -['path_tpc']['grades'][476]['offset'] +['path_tpc']['grades'][475]['res_net_meters'] +['path_tpc']['grades'][476]['offset_meters'] ['path_tpc']['grades'][476]['res_coeff'] -['path_tpc']['grades'][476]['res_net'] -['path_tpc']['grades'][477]['offset'] +['path_tpc']['grades'][476]['res_net_meters'] +['path_tpc']['grades'][477]['offset_meters'] ['path_tpc']['grades'][477]['res_coeff'] -['path_tpc']['grades'][477]['res_net'] -['path_tpc']['grades'][478]['offset'] +['path_tpc']['grades'][477]['res_net_meters'] +['path_tpc']['grades'][478]['offset_meters'] ['path_tpc']['grades'][478]['res_coeff'] -['path_tpc']['grades'][478]['res_net'] -['path_tpc']['grades'][479]['offset'] +['path_tpc']['grades'][478]['res_net_meters'] +['path_tpc']['grades'][479]['offset_meters'] ['path_tpc']['grades'][479]['res_coeff'] -['path_tpc']['grades'][479]['res_net'] -['path_tpc']['grades'][480]['offset'] +['path_tpc']['grades'][479]['res_net_meters'] +['path_tpc']['grades'][480]['offset_meters'] ['path_tpc']['grades'][480]['res_coeff'] -['path_tpc']['grades'][480]['res_net'] -['path_tpc']['grades'][481]['offset'] +['path_tpc']['grades'][480]['res_net_meters'] +['path_tpc']['grades'][481]['offset_meters'] ['path_tpc']['grades'][481]['res_coeff'] -['path_tpc']['grades'][481]['res_net'] -['path_tpc']['grades'][482]['offset'] +['path_tpc']['grades'][481]['res_net_meters'] +['path_tpc']['grades'][482]['offset_meters'] ['path_tpc']['grades'][482]['res_coeff'] -['path_tpc']['grades'][482]['res_net'] -['path_tpc']['grades'][483]['offset'] +['path_tpc']['grades'][482]['res_net_meters'] +['path_tpc']['grades'][483]['offset_meters'] ['path_tpc']['grades'][483]['res_coeff'] -['path_tpc']['grades'][483]['res_net'] -['path_tpc']['grades'][484]['offset'] +['path_tpc']['grades'][483]['res_net_meters'] +['path_tpc']['grades'][484]['offset_meters'] ['path_tpc']['grades'][484]['res_coeff'] -['path_tpc']['grades'][484]['res_net'] -['path_tpc']['grades'][485]['offset'] +['path_tpc']['grades'][484]['res_net_meters'] +['path_tpc']['grades'][485]['offset_meters'] ['path_tpc']['grades'][485]['res_coeff'] -['path_tpc']['grades'][485]['res_net'] -['path_tpc']['grades'][486]['offset'] +['path_tpc']['grades'][485]['res_net_meters'] +['path_tpc']['grades'][486]['offset_meters'] ['path_tpc']['grades'][486]['res_coeff'] -['path_tpc']['grades'][486]['res_net'] -['path_tpc']['grades'][487]['offset'] +['path_tpc']['grades'][486]['res_net_meters'] +['path_tpc']['grades'][487]['offset_meters'] ['path_tpc']['grades'][487]['res_coeff'] -['path_tpc']['grades'][487]['res_net'] -['path_tpc']['grades'][488]['offset'] +['path_tpc']['grades'][487]['res_net_meters'] +['path_tpc']['grades'][488]['offset_meters'] ['path_tpc']['grades'][488]['res_coeff'] -['path_tpc']['grades'][488]['res_net'] -['path_tpc']['grades'][489]['offset'] +['path_tpc']['grades'][488]['res_net_meters'] +['path_tpc']['grades'][489]['offset_meters'] ['path_tpc']['grades'][489]['res_coeff'] -['path_tpc']['grades'][489]['res_net'] -['path_tpc']['grades'][490]['offset'] +['path_tpc']['grades'][489]['res_net_meters'] +['path_tpc']['grades'][490]['offset_meters'] ['path_tpc']['grades'][490]['res_coeff'] -['path_tpc']['grades'][490]['res_net'] -['path_tpc']['grades'][491]['offset'] +['path_tpc']['grades'][490]['res_net_meters'] +['path_tpc']['grades'][491]['offset_meters'] ['path_tpc']['grades'][491]['res_coeff'] -['path_tpc']['grades'][491]['res_net'] -['path_tpc']['grades'][492]['offset'] +['path_tpc']['grades'][491]['res_net_meters'] +['path_tpc']['grades'][492]['offset_meters'] ['path_tpc']['grades'][492]['res_coeff'] -['path_tpc']['grades'][492]['res_net'] -['path_tpc']['grades'][493]['offset'] +['path_tpc']['grades'][492]['res_net_meters'] +['path_tpc']['grades'][493]['offset_meters'] ['path_tpc']['grades'][493]['res_coeff'] -['path_tpc']['grades'][493]['res_net'] -['path_tpc']['grades'][494]['offset'] +['path_tpc']['grades'][493]['res_net_meters'] +['path_tpc']['grades'][494]['offset_meters'] ['path_tpc']['grades'][494]['res_coeff'] -['path_tpc']['grades'][494]['res_net'] -['path_tpc']['grades'][495]['offset'] +['path_tpc']['grades'][494]['res_net_meters'] +['path_tpc']['grades'][495]['offset_meters'] ['path_tpc']['grades'][495]['res_coeff'] -['path_tpc']['grades'][495]['res_net'] -['path_tpc']['grades'][496]['offset'] +['path_tpc']['grades'][495]['res_net_meters'] +['path_tpc']['grades'][496]['offset_meters'] ['path_tpc']['grades'][496]['res_coeff'] -['path_tpc']['grades'][496]['res_net'] -['path_tpc']['grades'][497]['offset'] +['path_tpc']['grades'][496]['res_net_meters'] +['path_tpc']['grades'][497]['offset_meters'] ['path_tpc']['grades'][497]['res_coeff'] -['path_tpc']['grades'][497]['res_net'] -['path_tpc']['grades'][498]['offset'] +['path_tpc']['grades'][497]['res_net_meters'] +['path_tpc']['grades'][498]['offset_meters'] ['path_tpc']['grades'][498]['res_coeff'] -['path_tpc']['grades'][498]['res_net'] -['path_tpc']['grades'][499]['offset'] +['path_tpc']['grades'][498]['res_net_meters'] +['path_tpc']['grades'][499]['offset_meters'] ['path_tpc']['grades'][499]['res_coeff'] -['path_tpc']['grades'][499]['res_net'] -['path_tpc']['grades'][500]['offset'] +['path_tpc']['grades'][499]['res_net_meters'] +['path_tpc']['grades'][500]['offset_meters'] ['path_tpc']['grades'][500]['res_coeff'] -['path_tpc']['grades'][500]['res_net'] -['path_tpc']['grades'][501]['offset'] +['path_tpc']['grades'][500]['res_net_meters'] +['path_tpc']['grades'][501]['offset_meters'] ['path_tpc']['grades'][501]['res_coeff'] -['path_tpc']['grades'][501]['res_net'] -['path_tpc']['grades'][502]['offset'] +['path_tpc']['grades'][501]['res_net_meters'] +['path_tpc']['grades'][502]['offset_meters'] ['path_tpc']['grades'][502]['res_coeff'] -['path_tpc']['grades'][502]['res_net'] -['path_tpc']['grades'][503]['offset'] +['path_tpc']['grades'][502]['res_net_meters'] +['path_tpc']['grades'][503]['offset_meters'] ['path_tpc']['grades'][503]['res_coeff'] -['path_tpc']['grades'][503]['res_net'] -['path_tpc']['grades'][504]['offset'] +['path_tpc']['grades'][503]['res_net_meters'] +['path_tpc']['grades'][504]['offset_meters'] ['path_tpc']['grades'][504]['res_coeff'] -['path_tpc']['grades'][504]['res_net'] -['path_tpc']['grades'][505]['offset'] +['path_tpc']['grades'][504]['res_net_meters'] +['path_tpc']['grades'][505]['offset_meters'] ['path_tpc']['grades'][505]['res_coeff'] -['path_tpc']['grades'][505]['res_net'] -['path_tpc']['grades'][506]['offset'] +['path_tpc']['grades'][505]['res_net_meters'] +['path_tpc']['grades'][506]['offset_meters'] ['path_tpc']['grades'][506]['res_coeff'] -['path_tpc']['grades'][506]['res_net'] -['path_tpc']['grades'][507]['offset'] +['path_tpc']['grades'][506]['res_net_meters'] +['path_tpc']['grades'][507]['offset_meters'] ['path_tpc']['grades'][507]['res_coeff'] -['path_tpc']['grades'][507]['res_net'] -['path_tpc']['grades'][508]['offset'] +['path_tpc']['grades'][507]['res_net_meters'] +['path_tpc']['grades'][508]['offset_meters'] ['path_tpc']['grades'][508]['res_coeff'] -['path_tpc']['grades'][508]['res_net'] -['path_tpc']['grades'][509]['offset'] +['path_tpc']['grades'][508]['res_net_meters'] +['path_tpc']['grades'][509]['offset_meters'] ['path_tpc']['grades'][509]['res_coeff'] -['path_tpc']['grades'][509]['res_net'] -['path_tpc']['grades'][510]['offset'] +['path_tpc']['grades'][509]['res_net_meters'] +['path_tpc']['grades'][510]['offset_meters'] ['path_tpc']['grades'][510]['res_coeff'] -['path_tpc']['grades'][510]['res_net'] -['path_tpc']['grades'][511]['offset'] +['path_tpc']['grades'][510]['res_net_meters'] +['path_tpc']['grades'][511]['offset_meters'] ['path_tpc']['grades'][511]['res_coeff'] -['path_tpc']['grades'][511]['res_net'] -['path_tpc']['grades'][512]['offset'] +['path_tpc']['grades'][511]['res_net_meters'] +['path_tpc']['grades'][512]['offset_meters'] ['path_tpc']['grades'][512]['res_coeff'] -['path_tpc']['grades'][512]['res_net'] -['path_tpc']['grades'][513]['offset'] +['path_tpc']['grades'][512]['res_net_meters'] +['path_tpc']['grades'][513]['offset_meters'] ['path_tpc']['grades'][513]['res_coeff'] -['path_tpc']['grades'][513]['res_net'] -['path_tpc']['grades'][514]['offset'] +['path_tpc']['grades'][513]['res_net_meters'] +['path_tpc']['grades'][514]['offset_meters'] ['path_tpc']['grades'][514]['res_coeff'] -['path_tpc']['grades'][514]['res_net'] -['path_tpc']['grades'][515]['offset'] +['path_tpc']['grades'][514]['res_net_meters'] +['path_tpc']['grades'][515]['offset_meters'] ['path_tpc']['grades'][515]['res_coeff'] -['path_tpc']['grades'][515]['res_net'] -['path_tpc']['grades'][516]['offset'] +['path_tpc']['grades'][515]['res_net_meters'] +['path_tpc']['grades'][516]['offset_meters'] ['path_tpc']['grades'][516]['res_coeff'] -['path_tpc']['grades'][516]['res_net'] -['path_tpc']['grades'][517]['offset'] +['path_tpc']['grades'][516]['res_net_meters'] +['path_tpc']['grades'][517]['offset_meters'] ['path_tpc']['grades'][517]['res_coeff'] -['path_tpc']['grades'][517]['res_net'] -['path_tpc']['grades'][518]['offset'] +['path_tpc']['grades'][517]['res_net_meters'] +['path_tpc']['grades'][518]['offset_meters'] ['path_tpc']['grades'][518]['res_coeff'] -['path_tpc']['grades'][518]['res_net'] -['path_tpc']['grades'][519]['offset'] +['path_tpc']['grades'][518]['res_net_meters'] +['path_tpc']['grades'][519]['offset_meters'] ['path_tpc']['grades'][519]['res_coeff'] -['path_tpc']['grades'][519]['res_net'] -['path_tpc']['grades'][520]['offset'] +['path_tpc']['grades'][519]['res_net_meters'] +['path_tpc']['grades'][520]['offset_meters'] ['path_tpc']['grades'][520]['res_coeff'] -['path_tpc']['grades'][520]['res_net'] -['path_tpc']['grades'][521]['offset'] +['path_tpc']['grades'][520]['res_net_meters'] +['path_tpc']['grades'][521]['offset_meters'] ['path_tpc']['grades'][521]['res_coeff'] -['path_tpc']['grades'][521]['res_net'] -['path_tpc']['grades'][522]['offset'] +['path_tpc']['grades'][521]['res_net_meters'] +['path_tpc']['grades'][522]['offset_meters'] ['path_tpc']['grades'][522]['res_coeff'] -['path_tpc']['grades'][522]['res_net'] -['path_tpc']['grades'][523]['offset'] +['path_tpc']['grades'][522]['res_net_meters'] +['path_tpc']['grades'][523]['offset_meters'] ['path_tpc']['grades'][523]['res_coeff'] -['path_tpc']['grades'][523]['res_net'] -['path_tpc']['grades'][524]['offset'] +['path_tpc']['grades'][523]['res_net_meters'] +['path_tpc']['grades'][524]['offset_meters'] ['path_tpc']['grades'][524]['res_coeff'] -['path_tpc']['grades'][524]['res_net'] -['path_tpc']['grades'][525]['offset'] +['path_tpc']['grades'][524]['res_net_meters'] +['path_tpc']['grades'][525]['offset_meters'] ['path_tpc']['grades'][525]['res_coeff'] -['path_tpc']['grades'][525]['res_net'] -['path_tpc']['grades'][526]['offset'] +['path_tpc']['grades'][525]['res_net_meters'] +['path_tpc']['grades'][526]['offset_meters'] ['path_tpc']['grades'][526]['res_coeff'] -['path_tpc']['grades'][526]['res_net'] -['path_tpc']['grades'][527]['offset'] +['path_tpc']['grades'][526]['res_net_meters'] +['path_tpc']['grades'][527]['offset_meters'] ['path_tpc']['grades'][527]['res_coeff'] -['path_tpc']['grades'][527]['res_net'] -['path_tpc']['grades'][528]['offset'] +['path_tpc']['grades'][527]['res_net_meters'] +['path_tpc']['grades'][528]['offset_meters'] ['path_tpc']['grades'][528]['res_coeff'] -['path_tpc']['grades'][528]['res_net'] -['path_tpc']['grades'][529]['offset'] +['path_tpc']['grades'][528]['res_net_meters'] +['path_tpc']['grades'][529]['offset_meters'] ['path_tpc']['grades'][529]['res_coeff'] -['path_tpc']['grades'][529]['res_net'] -['path_tpc']['grades'][530]['offset'] +['path_tpc']['grades'][529]['res_net_meters'] +['path_tpc']['grades'][530]['offset_meters'] ['path_tpc']['grades'][530]['res_coeff'] -['path_tpc']['grades'][530]['res_net'] -['path_tpc']['grades'][531]['offset'] +['path_tpc']['grades'][530]['res_net_meters'] +['path_tpc']['grades'][531]['offset_meters'] ['path_tpc']['grades'][531]['res_coeff'] -['path_tpc']['grades'][531]['res_net'] -['path_tpc']['grades'][532]['offset'] +['path_tpc']['grades'][531]['res_net_meters'] +['path_tpc']['grades'][532]['offset_meters'] ['path_tpc']['grades'][532]['res_coeff'] -['path_tpc']['grades'][532]['res_net'] -['path_tpc']['grades'][533]['offset'] +['path_tpc']['grades'][532]['res_net_meters'] +['path_tpc']['grades'][533]['offset_meters'] ['path_tpc']['grades'][533]['res_coeff'] -['path_tpc']['grades'][533]['res_net'] -['path_tpc']['grades'][534]['offset'] +['path_tpc']['grades'][533]['res_net_meters'] +['path_tpc']['grades'][534]['offset_meters'] ['path_tpc']['grades'][534]['res_coeff'] -['path_tpc']['grades'][534]['res_net'] -['path_tpc']['grades'][535]['offset'] +['path_tpc']['grades'][534]['res_net_meters'] +['path_tpc']['grades'][535]['offset_meters'] ['path_tpc']['grades'][535]['res_coeff'] -['path_tpc']['grades'][535]['res_net'] -['path_tpc']['grades'][536]['offset'] +['path_tpc']['grades'][535]['res_net_meters'] +['path_tpc']['grades'][536]['offset_meters'] ['path_tpc']['grades'][536]['res_coeff'] -['path_tpc']['grades'][536]['res_net'] -['path_tpc']['grades'][537]['offset'] +['path_tpc']['grades'][536]['res_net_meters'] +['path_tpc']['grades'][537]['offset_meters'] ['path_tpc']['grades'][537]['res_coeff'] -['path_tpc']['grades'][537]['res_net'] -['path_tpc']['grades'][538]['offset'] +['path_tpc']['grades'][537]['res_net_meters'] +['path_tpc']['grades'][538]['offset_meters'] ['path_tpc']['grades'][538]['res_coeff'] -['path_tpc']['grades'][538]['res_net'] -['path_tpc']['grades'][539]['offset'] +['path_tpc']['grades'][538]['res_net_meters'] +['path_tpc']['grades'][539]['offset_meters'] ['path_tpc']['grades'][539]['res_coeff'] -['path_tpc']['grades'][539]['res_net'] -['path_tpc']['grades'][540]['offset'] +['path_tpc']['grades'][539]['res_net_meters'] +['path_tpc']['grades'][540]['offset_meters'] ['path_tpc']['grades'][540]['res_coeff'] -['path_tpc']['grades'][540]['res_net'] -['path_tpc']['grades'][541]['offset'] +['path_tpc']['grades'][540]['res_net_meters'] +['path_tpc']['grades'][541]['offset_meters'] ['path_tpc']['grades'][541]['res_coeff'] -['path_tpc']['grades'][541]['res_net'] -['path_tpc']['grades'][542]['offset'] +['path_tpc']['grades'][541]['res_net_meters'] +['path_tpc']['grades'][542]['offset_meters'] ['path_tpc']['grades'][542]['res_coeff'] -['path_tpc']['grades'][542]['res_net'] -['path_tpc']['grades'][543]['offset'] +['path_tpc']['grades'][542]['res_net_meters'] +['path_tpc']['grades'][543]['offset_meters'] ['path_tpc']['grades'][543]['res_coeff'] -['path_tpc']['grades'][543]['res_net'] -['path_tpc']['grades'][544]['offset'] +['path_tpc']['grades'][543]['res_net_meters'] +['path_tpc']['grades'][544]['offset_meters'] ['path_tpc']['grades'][544]['res_coeff'] -['path_tpc']['grades'][544]['res_net'] -['path_tpc']['grades'][545]['offset'] +['path_tpc']['grades'][544]['res_net_meters'] +['path_tpc']['grades'][545]['offset_meters'] ['path_tpc']['grades'][545]['res_coeff'] -['path_tpc']['grades'][545]['res_net'] -['path_tpc']['grades'][546]['offset'] +['path_tpc']['grades'][545]['res_net_meters'] +['path_tpc']['grades'][546]['offset_meters'] ['path_tpc']['grades'][546]['res_coeff'] -['path_tpc']['grades'][546]['res_net'] -['path_tpc']['grades'][547]['offset'] +['path_tpc']['grades'][546]['res_net_meters'] +['path_tpc']['grades'][547]['offset_meters'] ['path_tpc']['grades'][547]['res_coeff'] -['path_tpc']['grades'][547]['res_net'] -['path_tpc']['grades'][548]['offset'] +['path_tpc']['grades'][547]['res_net_meters'] +['path_tpc']['grades'][548]['offset_meters'] ['path_tpc']['grades'][548]['res_coeff'] -['path_tpc']['grades'][548]['res_net'] -['path_tpc']['grades'][549]['offset'] +['path_tpc']['grades'][548]['res_net_meters'] +['path_tpc']['grades'][549]['offset_meters'] ['path_tpc']['grades'][549]['res_coeff'] -['path_tpc']['grades'][549]['res_net'] -['path_tpc']['grades'][550]['offset'] +['path_tpc']['grades'][549]['res_net_meters'] +['path_tpc']['grades'][550]['offset_meters'] ['path_tpc']['grades'][550]['res_coeff'] -['path_tpc']['grades'][550]['res_net'] -['path_tpc']['grades'][551]['offset'] +['path_tpc']['grades'][550]['res_net_meters'] +['path_tpc']['grades'][551]['offset_meters'] ['path_tpc']['grades'][551]['res_coeff'] -['path_tpc']['grades'][551]['res_net'] -['path_tpc']['grades'][552]['offset'] +['path_tpc']['grades'][551]['res_net_meters'] +['path_tpc']['grades'][552]['offset_meters'] ['path_tpc']['grades'][552]['res_coeff'] -['path_tpc']['grades'][552]['res_net'] -['path_tpc']['grades'][553]['offset'] +['path_tpc']['grades'][552]['res_net_meters'] +['path_tpc']['grades'][553]['offset_meters'] ['path_tpc']['grades'][553]['res_coeff'] -['path_tpc']['grades'][553]['res_net'] -['path_tpc']['grades'][554]['offset'] +['path_tpc']['grades'][553]['res_net_meters'] +['path_tpc']['grades'][554]['offset_meters'] ['path_tpc']['grades'][554]['res_coeff'] -['path_tpc']['grades'][554]['res_net'] -['path_tpc']['grades'][555]['offset'] +['path_tpc']['grades'][554]['res_net_meters'] +['path_tpc']['grades'][555]['offset_meters'] ['path_tpc']['grades'][555]['res_coeff'] -['path_tpc']['grades'][555]['res_net'] -['path_tpc']['grades'][556]['offset'] +['path_tpc']['grades'][555]['res_net_meters'] +['path_tpc']['grades'][556]['offset_meters'] ['path_tpc']['grades'][556]['res_coeff'] -['path_tpc']['grades'][556]['res_net'] -['path_tpc']['grades'][557]['offset'] +['path_tpc']['grades'][556]['res_net_meters'] +['path_tpc']['grades'][557]['offset_meters'] ['path_tpc']['grades'][557]['res_coeff'] -['path_tpc']['grades'][557]['res_net'] -['path_tpc']['grades'][558]['offset'] +['path_tpc']['grades'][557]['res_net_meters'] +['path_tpc']['grades'][558]['offset_meters'] ['path_tpc']['grades'][558]['res_coeff'] -['path_tpc']['grades'][558]['res_net'] -['path_tpc']['grades'][559]['offset'] +['path_tpc']['grades'][558]['res_net_meters'] +['path_tpc']['grades'][559]['offset_meters'] ['path_tpc']['grades'][559]['res_coeff'] -['path_tpc']['grades'][559]['res_net'] -['path_tpc']['grades'][560]['offset'] +['path_tpc']['grades'][559]['res_net_meters'] +['path_tpc']['grades'][560]['offset_meters'] ['path_tpc']['grades'][560]['res_coeff'] -['path_tpc']['grades'][560]['res_net'] -['path_tpc']['grades'][561]['offset'] +['path_tpc']['grades'][560]['res_net_meters'] +['path_tpc']['grades'][561]['offset_meters'] ['path_tpc']['grades'][561]['res_coeff'] -['path_tpc']['grades'][561]['res_net'] -['path_tpc']['grades'][562]['offset'] +['path_tpc']['grades'][561]['res_net_meters'] +['path_tpc']['grades'][562]['offset_meters'] ['path_tpc']['grades'][562]['res_coeff'] -['path_tpc']['grades'][562]['res_net'] -['path_tpc']['grades'][563]['offset'] +['path_tpc']['grades'][562]['res_net_meters'] +['path_tpc']['grades'][563]['offset_meters'] ['path_tpc']['grades'][563]['res_coeff'] -['path_tpc']['grades'][563]['res_net'] -['path_tpc']['grades'][564]['offset'] +['path_tpc']['grades'][563]['res_net_meters'] +['path_tpc']['grades'][564]['offset_meters'] ['path_tpc']['grades'][564]['res_coeff'] -['path_tpc']['grades'][564]['res_net'] -['path_tpc']['grades'][565]['offset'] +['path_tpc']['grades'][564]['res_net_meters'] +['path_tpc']['grades'][565]['offset_meters'] ['path_tpc']['grades'][565]['res_coeff'] -['path_tpc']['grades'][565]['res_net'] -['path_tpc']['grades'][566]['offset'] +['path_tpc']['grades'][565]['res_net_meters'] +['path_tpc']['grades'][566]['offset_meters'] ['path_tpc']['grades'][566]['res_coeff'] -['path_tpc']['grades'][566]['res_net'] -['path_tpc']['grades'][567]['offset'] +['path_tpc']['grades'][566]['res_net_meters'] +['path_tpc']['grades'][567]['offset_meters'] ['path_tpc']['grades'][567]['res_coeff'] -['path_tpc']['grades'][567]['res_net'] -['path_tpc']['grades'][568]['offset'] +['path_tpc']['grades'][567]['res_net_meters'] +['path_tpc']['grades'][568]['offset_meters'] ['path_tpc']['grades'][568]['res_coeff'] -['path_tpc']['grades'][568]['res_net'] -['path_tpc']['grades'][569]['offset'] +['path_tpc']['grades'][568]['res_net_meters'] +['path_tpc']['grades'][569]['offset_meters'] ['path_tpc']['grades'][569]['res_coeff'] -['path_tpc']['grades'][569]['res_net'] -['path_tpc']['grades'][570]['offset'] +['path_tpc']['grades'][569]['res_net_meters'] +['path_tpc']['grades'][570]['offset_meters'] ['path_tpc']['grades'][570]['res_coeff'] -['path_tpc']['grades'][570]['res_net'] -['path_tpc']['grades'][571]['offset'] +['path_tpc']['grades'][570]['res_net_meters'] +['path_tpc']['grades'][571]['offset_meters'] ['path_tpc']['grades'][571]['res_coeff'] -['path_tpc']['grades'][571]['res_net'] -['path_tpc']['grades'][572]['offset'] +['path_tpc']['grades'][571]['res_net_meters'] +['path_tpc']['grades'][572]['offset_meters'] ['path_tpc']['grades'][572]['res_coeff'] -['path_tpc']['grades'][572]['res_net'] -['path_tpc']['grades'][573]['offset'] +['path_tpc']['grades'][572]['res_net_meters'] +['path_tpc']['grades'][573]['offset_meters'] ['path_tpc']['grades'][573]['res_coeff'] -['path_tpc']['grades'][573]['res_net'] -['path_tpc']['grades'][574]['offset'] +['path_tpc']['grades'][573]['res_net_meters'] +['path_tpc']['grades'][574]['offset_meters'] ['path_tpc']['grades'][574]['res_coeff'] -['path_tpc']['grades'][574]['res_net'] -['path_tpc']['grades'][575]['offset'] +['path_tpc']['grades'][574]['res_net_meters'] +['path_tpc']['grades'][575]['offset_meters'] ['path_tpc']['grades'][575]['res_coeff'] -['path_tpc']['grades'][575]['res_net'] -['path_tpc']['grades'][576]['offset'] +['path_tpc']['grades'][575]['res_net_meters'] +['path_tpc']['grades'][576]['offset_meters'] ['path_tpc']['grades'][576]['res_coeff'] -['path_tpc']['grades'][576]['res_net'] -['path_tpc']['grades'][577]['offset'] +['path_tpc']['grades'][576]['res_net_meters'] +['path_tpc']['grades'][577]['offset_meters'] ['path_tpc']['grades'][577]['res_coeff'] -['path_tpc']['grades'][577]['res_net'] -['path_tpc']['grades'][578]['offset'] +['path_tpc']['grades'][577]['res_net_meters'] +['path_tpc']['grades'][578]['offset_meters'] ['path_tpc']['grades'][578]['res_coeff'] -['path_tpc']['grades'][578]['res_net'] -['path_tpc']['grades'][579]['offset'] +['path_tpc']['grades'][578]['res_net_meters'] +['path_tpc']['grades'][579]['offset_meters'] ['path_tpc']['grades'][579]['res_coeff'] -['path_tpc']['grades'][579]['res_net'] -['path_tpc']['grades'][580]['offset'] +['path_tpc']['grades'][579]['res_net_meters'] +['path_tpc']['grades'][580]['offset_meters'] ['path_tpc']['grades'][580]['res_coeff'] -['path_tpc']['grades'][580]['res_net'] -['path_tpc']['grades'][581]['offset'] +['path_tpc']['grades'][580]['res_net_meters'] +['path_tpc']['grades'][581]['offset_meters'] ['path_tpc']['grades'][581]['res_coeff'] -['path_tpc']['grades'][581]['res_net'] -['path_tpc']['grades'][582]['offset'] +['path_tpc']['grades'][581]['res_net_meters'] +['path_tpc']['grades'][582]['offset_meters'] ['path_tpc']['grades'][582]['res_coeff'] -['path_tpc']['grades'][582]['res_net'] -['path_tpc']['grades'][583]['offset'] +['path_tpc']['grades'][582]['res_net_meters'] +['path_tpc']['grades'][583]['offset_meters'] ['path_tpc']['grades'][583]['res_coeff'] -['path_tpc']['grades'][583]['res_net'] -['path_tpc']['grades'][584]['offset'] +['path_tpc']['grades'][583]['res_net_meters'] +['path_tpc']['grades'][584]['offset_meters'] ['path_tpc']['grades'][584]['res_coeff'] -['path_tpc']['grades'][584]['res_net'] -['path_tpc']['grades'][585]['offset'] +['path_tpc']['grades'][584]['res_net_meters'] +['path_tpc']['grades'][585]['offset_meters'] ['path_tpc']['grades'][585]['res_coeff'] -['path_tpc']['grades'][585]['res_net'] -['path_tpc']['grades'][586]['offset'] +['path_tpc']['grades'][585]['res_net_meters'] +['path_tpc']['grades'][586]['offset_meters'] ['path_tpc']['grades'][586]['res_coeff'] -['path_tpc']['grades'][586]['res_net'] -['path_tpc']['grades'][587]['offset'] +['path_tpc']['grades'][586]['res_net_meters'] +['path_tpc']['grades'][587]['offset_meters'] ['path_tpc']['grades'][587]['res_coeff'] -['path_tpc']['grades'][587]['res_net'] -['path_tpc']['grades'][588]['offset'] +['path_tpc']['grades'][587]['res_net_meters'] +['path_tpc']['grades'][588]['offset_meters'] ['path_tpc']['grades'][588]['res_coeff'] -['path_tpc']['grades'][588]['res_net'] -['path_tpc']['grades'][589]['offset'] +['path_tpc']['grades'][588]['res_net_meters'] +['path_tpc']['grades'][589]['offset_meters'] ['path_tpc']['grades'][589]['res_coeff'] -['path_tpc']['grades'][589]['res_net'] -['path_tpc']['grades'][590]['offset'] +['path_tpc']['grades'][589]['res_net_meters'] +['path_tpc']['grades'][590]['offset_meters'] ['path_tpc']['grades'][590]['res_coeff'] -['path_tpc']['grades'][590]['res_net'] -['path_tpc']['grades'][591]['offset'] +['path_tpc']['grades'][590]['res_net_meters'] +['path_tpc']['grades'][591]['offset_meters'] ['path_tpc']['grades'][591]['res_coeff'] -['path_tpc']['grades'][591]['res_net'] -['path_tpc']['grades'][592]['offset'] +['path_tpc']['grades'][591]['res_net_meters'] +['path_tpc']['grades'][592]['offset_meters'] ['path_tpc']['grades'][592]['res_coeff'] -['path_tpc']['grades'][592]['res_net'] -['path_tpc']['grades'][593]['offset'] +['path_tpc']['grades'][592]['res_net_meters'] +['path_tpc']['grades'][593]['offset_meters'] ['path_tpc']['grades'][593]['res_coeff'] -['path_tpc']['grades'][593]['res_net'] -['path_tpc']['grades'][594]['offset'] +['path_tpc']['grades'][593]['res_net_meters'] +['path_tpc']['grades'][594]['offset_meters'] ['path_tpc']['grades'][594]['res_coeff'] -['path_tpc']['grades'][594]['res_net'] -['path_tpc']['grades'][595]['offset'] +['path_tpc']['grades'][594]['res_net_meters'] +['path_tpc']['grades'][595]['offset_meters'] ['path_tpc']['grades'][595]['res_coeff'] -['path_tpc']['grades'][595]['res_net'] -['path_tpc']['grades'][596]['offset'] +['path_tpc']['grades'][595]['res_net_meters'] +['path_tpc']['grades'][596]['offset_meters'] ['path_tpc']['grades'][596]['res_coeff'] -['path_tpc']['grades'][596]['res_net'] -['path_tpc']['grades'][597]['offset'] +['path_tpc']['grades'][596]['res_net_meters'] +['path_tpc']['grades'][597]['offset_meters'] ['path_tpc']['grades'][597]['res_coeff'] -['path_tpc']['grades'][597]['res_net'] -['path_tpc']['grades'][598]['offset'] +['path_tpc']['grades'][597]['res_net_meters'] +['path_tpc']['grades'][598]['offset_meters'] ['path_tpc']['grades'][598]['res_coeff'] -['path_tpc']['grades'][598]['res_net'] -['path_tpc']['grades'][599]['offset'] +['path_tpc']['grades'][598]['res_net_meters'] +['path_tpc']['grades'][599]['offset_meters'] ['path_tpc']['grades'][599]['res_coeff'] -['path_tpc']['grades'][599]['res_net'] -['path_tpc']['grades'][600]['offset'] +['path_tpc']['grades'][599]['res_net_meters'] +['path_tpc']['grades'][600]['offset_meters'] ['path_tpc']['grades'][600]['res_coeff'] -['path_tpc']['grades'][600]['res_net'] -['path_tpc']['grades'][601]['offset'] +['path_tpc']['grades'][600]['res_net_meters'] +['path_tpc']['grades'][601]['offset_meters'] ['path_tpc']['grades'][601]['res_coeff'] -['path_tpc']['grades'][601]['res_net'] -['path_tpc']['grades'][602]['offset'] +['path_tpc']['grades'][601]['res_net_meters'] +['path_tpc']['grades'][602]['offset_meters'] ['path_tpc']['grades'][602]['res_coeff'] -['path_tpc']['grades'][602]['res_net'] -['path_tpc']['grades'][603]['offset'] +['path_tpc']['grades'][602]['res_net_meters'] +['path_tpc']['grades'][603]['offset_meters'] ['path_tpc']['grades'][603]['res_coeff'] -['path_tpc']['grades'][603]['res_net'] -['path_tpc']['grades'][604]['offset'] +['path_tpc']['grades'][603]['res_net_meters'] +['path_tpc']['grades'][604]['offset_meters'] ['path_tpc']['grades'][604]['res_coeff'] -['path_tpc']['grades'][604]['res_net'] -['path_tpc']['grades'][605]['offset'] +['path_tpc']['grades'][604]['res_net_meters'] +['path_tpc']['grades'][605]['offset_meters'] ['path_tpc']['grades'][605]['res_coeff'] -['path_tpc']['grades'][605]['res_net'] -['path_tpc']['grades'][606]['offset'] +['path_tpc']['grades'][605]['res_net_meters'] +['path_tpc']['grades'][606]['offset_meters'] ['path_tpc']['grades'][606]['res_coeff'] -['path_tpc']['grades'][606]['res_net'] -['path_tpc']['grades'][607]['offset'] +['path_tpc']['grades'][606]['res_net_meters'] +['path_tpc']['grades'][607]['offset_meters'] ['path_tpc']['grades'][607]['res_coeff'] -['path_tpc']['grades'][607]['res_net'] -['path_tpc']['grades'][608]['offset'] +['path_tpc']['grades'][607]['res_net_meters'] +['path_tpc']['grades'][608]['offset_meters'] ['path_tpc']['grades'][608]['res_coeff'] -['path_tpc']['grades'][608]['res_net'] -['path_tpc']['grades'][609]['offset'] +['path_tpc']['grades'][608]['res_net_meters'] +['path_tpc']['grades'][609]['offset_meters'] ['path_tpc']['grades'][609]['res_coeff'] -['path_tpc']['grades'][609]['res_net'] -['path_tpc']['grades'][610]['offset'] +['path_tpc']['grades'][609]['res_net_meters'] +['path_tpc']['grades'][610]['offset_meters'] ['path_tpc']['grades'][610]['res_coeff'] -['path_tpc']['grades'][610]['res_net'] -['path_tpc']['grades'][611]['offset'] +['path_tpc']['grades'][610]['res_net_meters'] +['path_tpc']['grades'][611]['offset_meters'] ['path_tpc']['grades'][611]['res_coeff'] -['path_tpc']['grades'][611]['res_net'] -['path_tpc']['grades'][612]['offset'] +['path_tpc']['grades'][611]['res_net_meters'] +['path_tpc']['grades'][612]['offset_meters'] ['path_tpc']['grades'][612]['res_coeff'] -['path_tpc']['grades'][612]['res_net'] -['path_tpc']['grades'][613]['offset'] +['path_tpc']['grades'][612]['res_net_meters'] +['path_tpc']['grades'][613]['offset_meters'] ['path_tpc']['grades'][613]['res_coeff'] -['path_tpc']['grades'][613]['res_net'] -['path_tpc']['grades'][614]['offset'] +['path_tpc']['grades'][613]['res_net_meters'] +['path_tpc']['grades'][614]['offset_meters'] ['path_tpc']['grades'][614]['res_coeff'] -['path_tpc']['grades'][614]['res_net'] -['path_tpc']['grades'][615]['offset'] +['path_tpc']['grades'][614]['res_net_meters'] +['path_tpc']['grades'][615]['offset_meters'] ['path_tpc']['grades'][615]['res_coeff'] -['path_tpc']['grades'][615]['res_net'] -['path_tpc']['grades'][616]['offset'] +['path_tpc']['grades'][615]['res_net_meters'] +['path_tpc']['grades'][616]['offset_meters'] ['path_tpc']['grades'][616]['res_coeff'] -['path_tpc']['grades'][616]['res_net'] -['path_tpc']['grades'][617]['offset'] +['path_tpc']['grades'][616]['res_net_meters'] +['path_tpc']['grades'][617]['offset_meters'] ['path_tpc']['grades'][617]['res_coeff'] -['path_tpc']['grades'][617]['res_net'] -['path_tpc']['grades'][618]['offset'] +['path_tpc']['grades'][617]['res_net_meters'] +['path_tpc']['grades'][618]['offset_meters'] ['path_tpc']['grades'][618]['res_coeff'] -['path_tpc']['grades'][618]['res_net'] -['path_tpc']['grades'][619]['offset'] +['path_tpc']['grades'][618]['res_net_meters'] +['path_tpc']['grades'][619]['offset_meters'] ['path_tpc']['grades'][619]['res_coeff'] -['path_tpc']['grades'][619]['res_net'] -['path_tpc']['grades'][620]['offset'] +['path_tpc']['grades'][619]['res_net_meters'] +['path_tpc']['grades'][620]['offset_meters'] ['path_tpc']['grades'][620]['res_coeff'] -['path_tpc']['grades'][620]['res_net'] -['path_tpc']['grades'][621]['offset'] +['path_tpc']['grades'][620]['res_net_meters'] +['path_tpc']['grades'][621]['offset_meters'] ['path_tpc']['grades'][621]['res_coeff'] -['path_tpc']['grades'][621]['res_net'] -['path_tpc']['grades'][622]['offset'] +['path_tpc']['grades'][621]['res_net_meters'] +['path_tpc']['grades'][622]['offset_meters'] ['path_tpc']['grades'][622]['res_coeff'] -['path_tpc']['grades'][622]['res_net'] -['path_tpc']['grades'][623]['offset'] +['path_tpc']['grades'][622]['res_net_meters'] +['path_tpc']['grades'][623]['offset_meters'] ['path_tpc']['grades'][623]['res_coeff'] -['path_tpc']['grades'][623]['res_net'] -['path_tpc']['grades'][624]['offset'] +['path_tpc']['grades'][623]['res_net_meters'] +['path_tpc']['grades'][624]['offset_meters'] ['path_tpc']['grades'][624]['res_coeff'] -['path_tpc']['grades'][624]['res_net'] -['path_tpc']['grades'][625]['offset'] +['path_tpc']['grades'][624]['res_net_meters'] +['path_tpc']['grades'][625]['offset_meters'] ['path_tpc']['grades'][625]['res_coeff'] -['path_tpc']['grades'][625]['res_net'] -['path_tpc']['grades'][626]['offset'] +['path_tpc']['grades'][625]['res_net_meters'] +['path_tpc']['grades'][626]['offset_meters'] ['path_tpc']['grades'][626]['res_coeff'] -['path_tpc']['grades'][626]['res_net'] -['path_tpc']['grades'][627]['offset'] +['path_tpc']['grades'][626]['res_net_meters'] +['path_tpc']['grades'][627]['offset_meters'] ['path_tpc']['grades'][627]['res_coeff'] -['path_tpc']['grades'][627]['res_net'] -['path_tpc']['grades'][628]['offset'] +['path_tpc']['grades'][627]['res_net_meters'] +['path_tpc']['grades'][628]['offset_meters'] ['path_tpc']['grades'][628]['res_coeff'] -['path_tpc']['grades'][628]['res_net'] -['path_tpc']['grades'][629]['offset'] +['path_tpc']['grades'][628]['res_net_meters'] +['path_tpc']['grades'][629]['offset_meters'] ['path_tpc']['grades'][629]['res_coeff'] -['path_tpc']['grades'][629]['res_net'] -['path_tpc']['grades'][630]['offset'] +['path_tpc']['grades'][629]['res_net_meters'] +['path_tpc']['grades'][630]['offset_meters'] ['path_tpc']['grades'][630]['res_coeff'] -['path_tpc']['grades'][630]['res_net'] -['path_tpc']['grades'][631]['offset'] +['path_tpc']['grades'][630]['res_net_meters'] +['path_tpc']['grades'][631]['offset_meters'] ['path_tpc']['grades'][631]['res_coeff'] -['path_tpc']['grades'][631]['res_net'] -['path_tpc']['grades'][632]['offset'] +['path_tpc']['grades'][631]['res_net_meters'] +['path_tpc']['grades'][632]['offset_meters'] ['path_tpc']['grades'][632]['res_coeff'] -['path_tpc']['grades'][632]['res_net'] -['path_tpc']['grades'][633]['offset'] +['path_tpc']['grades'][632]['res_net_meters'] +['path_tpc']['grades'][633]['offset_meters'] ['path_tpc']['grades'][633]['res_coeff'] -['path_tpc']['grades'][633]['res_net'] -['path_tpc']['grades'][634]['offset'] +['path_tpc']['grades'][633]['res_net_meters'] +['path_tpc']['grades'][634]['offset_meters'] ['path_tpc']['grades'][634]['res_coeff'] -['path_tpc']['grades'][634]['res_net'] -['path_tpc']['grades'][635]['offset'] +['path_tpc']['grades'][634]['res_net_meters'] +['path_tpc']['grades'][635]['offset_meters'] ['path_tpc']['grades'][635]['res_coeff'] -['path_tpc']['grades'][635]['res_net'] -['path_tpc']['grades'][636]['offset'] +['path_tpc']['grades'][635]['res_net_meters'] +['path_tpc']['grades'][636]['offset_meters'] ['path_tpc']['grades'][636]['res_coeff'] -['path_tpc']['grades'][636]['res_net'] -['path_tpc']['grades'][637]['offset'] +['path_tpc']['grades'][636]['res_net_meters'] +['path_tpc']['grades'][637]['offset_meters'] ['path_tpc']['grades'][637]['res_coeff'] -['path_tpc']['grades'][637]['res_net'] -['path_tpc']['grades'][638]['offset'] +['path_tpc']['grades'][637]['res_net_meters'] +['path_tpc']['grades'][638]['offset_meters'] ['path_tpc']['grades'][638]['res_coeff'] -['path_tpc']['grades'][638]['res_net'] -['path_tpc']['grades'][639]['offset'] +['path_tpc']['grades'][638]['res_net_meters'] +['path_tpc']['grades'][639]['offset_meters'] ['path_tpc']['grades'][639]['res_coeff'] -['path_tpc']['grades'][639]['res_net'] -['path_tpc']['grades'][640]['offset'] +['path_tpc']['grades'][639]['res_net_meters'] +['path_tpc']['grades'][640]['offset_meters'] ['path_tpc']['grades'][640]['res_coeff'] -['path_tpc']['grades'][640]['res_net'] -['path_tpc']['grades'][641]['offset'] +['path_tpc']['grades'][640]['res_net_meters'] +['path_tpc']['grades'][641]['offset_meters'] ['path_tpc']['grades'][641]['res_coeff'] -['path_tpc']['grades'][641]['res_net'] -['path_tpc']['grades'][642]['offset'] +['path_tpc']['grades'][641]['res_net_meters'] +['path_tpc']['grades'][642]['offset_meters'] ['path_tpc']['grades'][642]['res_coeff'] -['path_tpc']['grades'][642]['res_net'] -['path_tpc']['grades'][643]['offset'] +['path_tpc']['grades'][642]['res_net_meters'] +['path_tpc']['grades'][643]['offset_meters'] ['path_tpc']['grades'][643]['res_coeff'] -['path_tpc']['grades'][643]['res_net'] -['path_tpc']['grades'][644]['offset'] +['path_tpc']['grades'][643]['res_net_meters'] +['path_tpc']['grades'][644]['offset_meters'] ['path_tpc']['grades'][644]['res_coeff'] -['path_tpc']['grades'][644]['res_net'] -['path_tpc']['grades'][645]['offset'] +['path_tpc']['grades'][644]['res_net_meters'] +['path_tpc']['grades'][645]['offset_meters'] ['path_tpc']['grades'][645]['res_coeff'] -['path_tpc']['grades'][645]['res_net'] -['path_tpc']['grades'][646]['offset'] +['path_tpc']['grades'][645]['res_net_meters'] +['path_tpc']['grades'][646]['offset_meters'] ['path_tpc']['grades'][646]['res_coeff'] -['path_tpc']['grades'][646]['res_net'] -['path_tpc']['grades'][647]['offset'] +['path_tpc']['grades'][646]['res_net_meters'] +['path_tpc']['grades'][647]['offset_meters'] ['path_tpc']['grades'][647]['res_coeff'] -['path_tpc']['grades'][647]['res_net'] -['path_tpc']['grades'][648]['offset'] +['path_tpc']['grades'][647]['res_net_meters'] +['path_tpc']['grades'][648]['offset_meters'] ['path_tpc']['grades'][648]['res_coeff'] -['path_tpc']['grades'][648]['res_net'] -['path_tpc']['grades'][649]['offset'] +['path_tpc']['grades'][648]['res_net_meters'] +['path_tpc']['grades'][649]['offset_meters'] ['path_tpc']['grades'][649]['res_coeff'] -['path_tpc']['grades'][649]['res_net'] -['path_tpc']['grades'][650]['offset'] +['path_tpc']['grades'][649]['res_net_meters'] +['path_tpc']['grades'][650]['offset_meters'] ['path_tpc']['grades'][650]['res_coeff'] -['path_tpc']['grades'][650]['res_net'] -['path_tpc']['grades'][651]['offset'] +['path_tpc']['grades'][650]['res_net_meters'] +['path_tpc']['grades'][651]['offset_meters'] ['path_tpc']['grades'][651]['res_coeff'] -['path_tpc']['grades'][651]['res_net'] -['path_tpc']['grades'][652]['offset'] +['path_tpc']['grades'][651]['res_net_meters'] +['path_tpc']['grades'][652]['offset_meters'] ['path_tpc']['grades'][652]['res_coeff'] -['path_tpc']['grades'][652]['res_net'] -['path_tpc']['grades'][653]['offset'] +['path_tpc']['grades'][652]['res_net_meters'] +['path_tpc']['grades'][653]['offset_meters'] ['path_tpc']['grades'][653]['res_coeff'] -['path_tpc']['grades'][653]['res_net'] -['path_tpc']['grades'][654]['offset'] +['path_tpc']['grades'][653]['res_net_meters'] +['path_tpc']['grades'][654]['offset_meters'] ['path_tpc']['grades'][654]['res_coeff'] -['path_tpc']['grades'][654]['res_net'] -['path_tpc']['grades'][655]['offset'] +['path_tpc']['grades'][654]['res_net_meters'] +['path_tpc']['grades'][655]['offset_meters'] ['path_tpc']['grades'][655]['res_coeff'] -['path_tpc']['grades'][655]['res_net'] -['path_tpc']['grades'][656]['offset'] +['path_tpc']['grades'][655]['res_net_meters'] +['path_tpc']['grades'][656]['offset_meters'] ['path_tpc']['grades'][656]['res_coeff'] -['path_tpc']['grades'][656]['res_net'] -['path_tpc']['grades'][657]['offset'] +['path_tpc']['grades'][656]['res_net_meters'] +['path_tpc']['grades'][657]['offset_meters'] ['path_tpc']['grades'][657]['res_coeff'] -['path_tpc']['grades'][657]['res_net'] -['path_tpc']['grades'][658]['offset'] +['path_tpc']['grades'][657]['res_net_meters'] +['path_tpc']['grades'][658]['offset_meters'] ['path_tpc']['grades'][658]['res_coeff'] -['path_tpc']['grades'][658]['res_net'] -['path_tpc']['grades'][659]['offset'] +['path_tpc']['grades'][658]['res_net_meters'] +['path_tpc']['grades'][659]['offset_meters'] ['path_tpc']['grades'][659]['res_coeff'] -['path_tpc']['grades'][659]['res_net'] -['path_tpc']['grades'][660]['offset'] +['path_tpc']['grades'][659]['res_net_meters'] +['path_tpc']['grades'][660]['offset_meters'] ['path_tpc']['grades'][660]['res_coeff'] -['path_tpc']['grades'][660]['res_net'] -['path_tpc']['grades'][661]['offset'] +['path_tpc']['grades'][660]['res_net_meters'] +['path_tpc']['grades'][661]['offset_meters'] ['path_tpc']['grades'][661]['res_coeff'] -['path_tpc']['grades'][661]['res_net'] -['path_tpc']['grades'][662]['offset'] +['path_tpc']['grades'][661]['res_net_meters'] +['path_tpc']['grades'][662]['offset_meters'] ['path_tpc']['grades'][662]['res_coeff'] -['path_tpc']['grades'][662]['res_net'] -['path_tpc']['grades'][663]['offset'] +['path_tpc']['grades'][662]['res_net_meters'] +['path_tpc']['grades'][663]['offset_meters'] ['path_tpc']['grades'][663]['res_coeff'] -['path_tpc']['grades'][663]['res_net'] -['path_tpc']['grades'][664]['offset'] +['path_tpc']['grades'][663]['res_net_meters'] +['path_tpc']['grades'][664]['offset_meters'] ['path_tpc']['grades'][664]['res_coeff'] -['path_tpc']['grades'][664]['res_net'] -['path_tpc']['grades'][665]['offset'] +['path_tpc']['grades'][664]['res_net_meters'] +['path_tpc']['grades'][665]['offset_meters'] ['path_tpc']['grades'][665]['res_coeff'] -['path_tpc']['grades'][665]['res_net'] -['path_tpc']['grades'][666]['offset'] +['path_tpc']['grades'][665]['res_net_meters'] +['path_tpc']['grades'][666]['offset_meters'] ['path_tpc']['grades'][666]['res_coeff'] -['path_tpc']['grades'][666]['res_net'] -['path_tpc']['grades'][667]['offset'] +['path_tpc']['grades'][666]['res_net_meters'] +['path_tpc']['grades'][667]['offset_meters'] ['path_tpc']['grades'][667]['res_coeff'] -['path_tpc']['grades'][667]['res_net'] -['path_tpc']['grades'][668]['offset'] +['path_tpc']['grades'][667]['res_net_meters'] +['path_tpc']['grades'][668]['offset_meters'] ['path_tpc']['grades'][668]['res_coeff'] -['path_tpc']['grades'][668]['res_net'] -['path_tpc']['grades'][669]['offset'] +['path_tpc']['grades'][668]['res_net_meters'] +['path_tpc']['grades'][669]['offset_meters'] ['path_tpc']['grades'][669]['res_coeff'] -['path_tpc']['grades'][669]['res_net'] -['path_tpc']['grades'][670]['offset'] +['path_tpc']['grades'][669]['res_net_meters'] +['path_tpc']['grades'][670]['offset_meters'] ['path_tpc']['grades'][670]['res_coeff'] -['path_tpc']['grades'][670]['res_net'] -['path_tpc']['grades'][671]['offset'] +['path_tpc']['grades'][670]['res_net_meters'] +['path_tpc']['grades'][671]['offset_meters'] ['path_tpc']['grades'][671]['res_coeff'] -['path_tpc']['grades'][671]['res_net'] -['path_tpc']['grades'][672]['offset'] +['path_tpc']['grades'][671]['res_net_meters'] +['path_tpc']['grades'][672]['offset_meters'] ['path_tpc']['grades'][672]['res_coeff'] -['path_tpc']['grades'][672]['res_net'] -['path_tpc']['grades'][673]['offset'] +['path_tpc']['grades'][672]['res_net_meters'] +['path_tpc']['grades'][673]['offset_meters'] ['path_tpc']['grades'][673]['res_coeff'] -['path_tpc']['grades'][673]['res_net'] -['path_tpc']['grades'][674]['offset'] +['path_tpc']['grades'][673]['res_net_meters'] +['path_tpc']['grades'][674]['offset_meters'] ['path_tpc']['grades'][674]['res_coeff'] -['path_tpc']['grades'][674]['res_net'] -['path_tpc']['grades'][675]['offset'] +['path_tpc']['grades'][674]['res_net_meters'] +['path_tpc']['grades'][675]['offset_meters'] ['path_tpc']['grades'][675]['res_coeff'] -['path_tpc']['grades'][675]['res_net'] -['path_tpc']['grades'][676]['offset'] +['path_tpc']['grades'][675]['res_net_meters'] +['path_tpc']['grades'][676]['offset_meters'] ['path_tpc']['grades'][676]['res_coeff'] -['path_tpc']['grades'][676]['res_net'] -['path_tpc']['grades'][677]['offset'] +['path_tpc']['grades'][676]['res_net_meters'] +['path_tpc']['grades'][677]['offset_meters'] ['path_tpc']['grades'][677]['res_coeff'] -['path_tpc']['grades'][677]['res_net'] -['path_tpc']['grades'][678]['offset'] +['path_tpc']['grades'][677]['res_net_meters'] +['path_tpc']['grades'][678]['offset_meters'] ['path_tpc']['grades'][678]['res_coeff'] -['path_tpc']['grades'][678]['res_net'] -['path_tpc']['grades'][679]['offset'] +['path_tpc']['grades'][678]['res_net_meters'] +['path_tpc']['grades'][679]['offset_meters'] ['path_tpc']['grades'][679]['res_coeff'] -['path_tpc']['grades'][679]['res_net'] -['path_tpc']['grades'][680]['offset'] +['path_tpc']['grades'][679]['res_net_meters'] +['path_tpc']['grades'][680]['offset_meters'] ['path_tpc']['grades'][680]['res_coeff'] -['path_tpc']['grades'][680]['res_net'] -['path_tpc']['grades'][681]['offset'] +['path_tpc']['grades'][680]['res_net_meters'] +['path_tpc']['grades'][681]['offset_meters'] ['path_tpc']['grades'][681]['res_coeff'] -['path_tpc']['grades'][681]['res_net'] -['path_tpc']['grades'][682]['offset'] +['path_tpc']['grades'][681]['res_net_meters'] +['path_tpc']['grades'][682]['offset_meters'] ['path_tpc']['grades'][682]['res_coeff'] -['path_tpc']['grades'][682]['res_net'] -['path_tpc']['grades'][683]['offset'] +['path_tpc']['grades'][682]['res_net_meters'] +['path_tpc']['grades'][683]['offset_meters'] ['path_tpc']['grades'][683]['res_coeff'] -['path_tpc']['grades'][683]['res_net'] -['path_tpc']['grades'][684]['offset'] +['path_tpc']['grades'][683]['res_net_meters'] +['path_tpc']['grades'][684]['offset_meters'] ['path_tpc']['grades'][684]['res_coeff'] -['path_tpc']['grades'][684]['res_net'] -['path_tpc']['grades'][685]['offset'] +['path_tpc']['grades'][684]['res_net_meters'] +['path_tpc']['grades'][685]['offset_meters'] ['path_tpc']['grades'][685]['res_coeff'] -['path_tpc']['grades'][685]['res_net'] -['path_tpc']['grades'][686]['offset'] +['path_tpc']['grades'][685]['res_net_meters'] +['path_tpc']['grades'][686]['offset_meters'] ['path_tpc']['grades'][686]['res_coeff'] -['path_tpc']['grades'][686]['res_net'] -['path_tpc']['grades'][687]['offset'] +['path_tpc']['grades'][686]['res_net_meters'] +['path_tpc']['grades'][687]['offset_meters'] ['path_tpc']['grades'][687]['res_coeff'] -['path_tpc']['grades'][687]['res_net'] -['path_tpc']['grades'][688]['offset'] +['path_tpc']['grades'][687]['res_net_meters'] +['path_tpc']['grades'][688]['offset_meters'] ['path_tpc']['grades'][688]['res_coeff'] -['path_tpc']['grades'][688]['res_net'] -['path_tpc']['grades'][689]['offset'] +['path_tpc']['grades'][688]['res_net_meters'] +['path_tpc']['grades'][689]['offset_meters'] ['path_tpc']['grades'][689]['res_coeff'] -['path_tpc']['grades'][689]['res_net'] -['path_tpc']['grades'][690]['offset'] +['path_tpc']['grades'][689]['res_net_meters'] +['path_tpc']['grades'][690]['offset_meters'] ['path_tpc']['grades'][690]['res_coeff'] -['path_tpc']['grades'][690]['res_net'] -['path_tpc']['grades'][691]['offset'] +['path_tpc']['grades'][690]['res_net_meters'] +['path_tpc']['grades'][691]['offset_meters'] ['path_tpc']['grades'][691]['res_coeff'] -['path_tpc']['grades'][691]['res_net'] -['path_tpc']['grades'][692]['offset'] +['path_tpc']['grades'][691]['res_net_meters'] +['path_tpc']['grades'][692]['offset_meters'] ['path_tpc']['grades'][692]['res_coeff'] -['path_tpc']['grades'][692]['res_net'] -['path_tpc']['grades'][693]['offset'] +['path_tpc']['grades'][692]['res_net_meters'] +['path_tpc']['grades'][693]['offset_meters'] ['path_tpc']['grades'][693]['res_coeff'] -['path_tpc']['grades'][693]['res_net'] -['path_tpc']['grades'][694]['offset'] +['path_tpc']['grades'][693]['res_net_meters'] +['path_tpc']['grades'][694]['offset_meters'] ['path_tpc']['grades'][694]['res_coeff'] -['path_tpc']['grades'][694]['res_net'] -['path_tpc']['grades'][695]['offset'] +['path_tpc']['grades'][694]['res_net_meters'] +['path_tpc']['grades'][695]['offset_meters'] ['path_tpc']['grades'][695]['res_coeff'] -['path_tpc']['grades'][695]['res_net'] -['path_tpc']['grades'][696]['offset'] +['path_tpc']['grades'][695]['res_net_meters'] +['path_tpc']['grades'][696]['offset_meters'] ['path_tpc']['grades'][696]['res_coeff'] -['path_tpc']['grades'][696]['res_net'] -['path_tpc']['grades'][697]['offset'] +['path_tpc']['grades'][696]['res_net_meters'] +['path_tpc']['grades'][697]['offset_meters'] ['path_tpc']['grades'][697]['res_coeff'] -['path_tpc']['grades'][697]['res_net'] -['path_tpc']['grades'][698]['offset'] +['path_tpc']['grades'][697]['res_net_meters'] +['path_tpc']['grades'][698]['offset_meters'] ['path_tpc']['grades'][698]['res_coeff'] -['path_tpc']['grades'][698]['res_net'] -['path_tpc']['grades'][699]['offset'] +['path_tpc']['grades'][698]['res_net_meters'] +['path_tpc']['grades'][699]['offset_meters'] ['path_tpc']['grades'][699]['res_coeff'] -['path_tpc']['grades'][699]['res_net'] -['path_tpc']['grades'][700]['offset'] +['path_tpc']['grades'][699]['res_net_meters'] +['path_tpc']['grades'][700]['offset_meters'] ['path_tpc']['grades'][700]['res_coeff'] -['path_tpc']['grades'][700]['res_net'] -['path_tpc']['grades'][701]['offset'] +['path_tpc']['grades'][700]['res_net_meters'] +['path_tpc']['grades'][701]['offset_meters'] ['path_tpc']['grades'][701]['res_coeff'] -['path_tpc']['grades'][701]['res_net'] -['path_tpc']['grades'][702]['offset'] +['path_tpc']['grades'][701]['res_net_meters'] +['path_tpc']['grades'][702]['offset_meters'] ['path_tpc']['grades'][702]['res_coeff'] -['path_tpc']['grades'][702]['res_net'] -['path_tpc']['grades'][703]['offset'] +['path_tpc']['grades'][702]['res_net_meters'] +['path_tpc']['grades'][703]['offset_meters'] ['path_tpc']['grades'][703]['res_coeff'] -['path_tpc']['grades'][703]['res_net'] -['path_tpc']['grades'][704]['offset'] +['path_tpc']['grades'][703]['res_net_meters'] +['path_tpc']['grades'][704]['offset_meters'] ['path_tpc']['grades'][704]['res_coeff'] -['path_tpc']['grades'][704]['res_net'] -['path_tpc']['grades'][705]['offset'] +['path_tpc']['grades'][704]['res_net_meters'] +['path_tpc']['grades'][705]['offset_meters'] ['path_tpc']['grades'][705]['res_coeff'] -['path_tpc']['grades'][705]['res_net'] -['path_tpc']['grades'][706]['offset'] +['path_tpc']['grades'][705]['res_net_meters'] +['path_tpc']['grades'][706]['offset_meters'] ['path_tpc']['grades'][706]['res_coeff'] -['path_tpc']['grades'][706]['res_net'] -['path_tpc']['grades'][707]['offset'] +['path_tpc']['grades'][706]['res_net_meters'] +['path_tpc']['grades'][707]['offset_meters'] ['path_tpc']['grades'][707]['res_coeff'] -['path_tpc']['grades'][707]['res_net'] -['path_tpc']['grades'][708]['offset'] +['path_tpc']['grades'][707]['res_net_meters'] +['path_tpc']['grades'][708]['offset_meters'] ['path_tpc']['grades'][708]['res_coeff'] -['path_tpc']['grades'][708]['res_net'] -['path_tpc']['grades'][709]['offset'] +['path_tpc']['grades'][708]['res_net_meters'] +['path_tpc']['grades'][709]['offset_meters'] ['path_tpc']['grades'][709]['res_coeff'] -['path_tpc']['grades'][709]['res_net'] -['path_tpc']['grades'][710]['offset'] +['path_tpc']['grades'][709]['res_net_meters'] +['path_tpc']['grades'][710]['offset_meters'] ['path_tpc']['grades'][710]['res_coeff'] -['path_tpc']['grades'][710]['res_net'] -['path_tpc']['grades'][711]['offset'] +['path_tpc']['grades'][710]['res_net_meters'] +['path_tpc']['grades'][711]['offset_meters'] ['path_tpc']['grades'][711]['res_coeff'] -['path_tpc']['grades'][711]['res_net'] -['path_tpc']['grades'][712]['offset'] +['path_tpc']['grades'][711]['res_net_meters'] +['path_tpc']['grades'][712]['offset_meters'] ['path_tpc']['grades'][712]['res_coeff'] -['path_tpc']['grades'][712]['res_net'] -['path_tpc']['grades'][713]['offset'] +['path_tpc']['grades'][712]['res_net_meters'] +['path_tpc']['grades'][713]['offset_meters'] ['path_tpc']['grades'][713]['res_coeff'] -['path_tpc']['grades'][713]['res_net'] -['path_tpc']['grades'][714]['offset'] +['path_tpc']['grades'][713]['res_net_meters'] +['path_tpc']['grades'][714]['offset_meters'] ['path_tpc']['grades'][714]['res_coeff'] -['path_tpc']['grades'][714]['res_net'] -['path_tpc']['grades'][715]['offset'] +['path_tpc']['grades'][714]['res_net_meters'] +['path_tpc']['grades'][715]['offset_meters'] ['path_tpc']['grades'][715]['res_coeff'] -['path_tpc']['grades'][715]['res_net'] -['path_tpc']['grades'][716]['offset'] +['path_tpc']['grades'][715]['res_net_meters'] +['path_tpc']['grades'][716]['offset_meters'] ['path_tpc']['grades'][716]['res_coeff'] -['path_tpc']['grades'][716]['res_net'] -['path_tpc']['grades'][717]['offset'] +['path_tpc']['grades'][716]['res_net_meters'] +['path_tpc']['grades'][717]['offset_meters'] ['path_tpc']['grades'][717]['res_coeff'] -['path_tpc']['grades'][717]['res_net'] -['path_tpc']['grades'][718]['offset'] +['path_tpc']['grades'][717]['res_net_meters'] +['path_tpc']['grades'][718]['offset_meters'] ['path_tpc']['grades'][718]['res_coeff'] -['path_tpc']['grades'][718]['res_net'] -['path_tpc']['grades'][719]['offset'] +['path_tpc']['grades'][718]['res_net_meters'] +['path_tpc']['grades'][719]['offset_meters'] ['path_tpc']['grades'][719]['res_coeff'] -['path_tpc']['grades'][719]['res_net'] -['path_tpc']['grades'][720]['offset'] +['path_tpc']['grades'][719]['res_net_meters'] +['path_tpc']['grades'][720]['offset_meters'] ['path_tpc']['grades'][720]['res_coeff'] -['path_tpc']['grades'][720]['res_net'] -['path_tpc']['grades'][721]['offset'] +['path_tpc']['grades'][720]['res_net_meters'] +['path_tpc']['grades'][721]['offset_meters'] ['path_tpc']['grades'][721]['res_coeff'] -['path_tpc']['grades'][721]['res_net'] -['path_tpc']['grades'][722]['offset'] +['path_tpc']['grades'][721]['res_net_meters'] +['path_tpc']['grades'][722]['offset_meters'] ['path_tpc']['grades'][722]['res_coeff'] -['path_tpc']['grades'][722]['res_net'] -['path_tpc']['grades'][723]['offset'] +['path_tpc']['grades'][722]['res_net_meters'] +['path_tpc']['grades'][723]['offset_meters'] ['path_tpc']['grades'][723]['res_coeff'] -['path_tpc']['grades'][723]['res_net'] -['path_tpc']['grades'][724]['offset'] +['path_tpc']['grades'][723]['res_net_meters'] +['path_tpc']['grades'][724]['offset_meters'] ['path_tpc']['grades'][724]['res_coeff'] -['path_tpc']['grades'][724]['res_net'] -['path_tpc']['grades'][725]['offset'] +['path_tpc']['grades'][724]['res_net_meters'] +['path_tpc']['grades'][725]['offset_meters'] ['path_tpc']['grades'][725]['res_coeff'] -['path_tpc']['grades'][725]['res_net'] -['path_tpc']['grades'][726]['offset'] +['path_tpc']['grades'][725]['res_net_meters'] +['path_tpc']['grades'][726]['offset_meters'] ['path_tpc']['grades'][726]['res_coeff'] -['path_tpc']['grades'][726]['res_net'] -['path_tpc']['grades'][727]['offset'] +['path_tpc']['grades'][726]['res_net_meters'] +['path_tpc']['grades'][727]['offset_meters'] ['path_tpc']['grades'][727]['res_coeff'] -['path_tpc']['grades'][727]['res_net'] -['path_tpc']['grades'][728]['offset'] +['path_tpc']['grades'][727]['res_net_meters'] +['path_tpc']['grades'][728]['offset_meters'] ['path_tpc']['grades'][728]['res_coeff'] -['path_tpc']['grades'][728]['res_net'] -['path_tpc']['grades'][729]['offset'] +['path_tpc']['grades'][728]['res_net_meters'] +['path_tpc']['grades'][729]['offset_meters'] ['path_tpc']['grades'][729]['res_coeff'] -['path_tpc']['grades'][729]['res_net'] -['path_tpc']['grades'][730]['offset'] +['path_tpc']['grades'][729]['res_net_meters'] +['path_tpc']['grades'][730]['offset_meters'] ['path_tpc']['grades'][730]['res_coeff'] -['path_tpc']['grades'][730]['res_net'] -['path_tpc']['grades'][731]['offset'] +['path_tpc']['grades'][730]['res_net_meters'] +['path_tpc']['grades'][731]['offset_meters'] ['path_tpc']['grades'][731]['res_coeff'] -['path_tpc']['grades'][731]['res_net'] -['path_tpc']['grades'][732]['offset'] +['path_tpc']['grades'][731]['res_net_meters'] +['path_tpc']['grades'][732]['offset_meters'] ['path_tpc']['grades'][732]['res_coeff'] -['path_tpc']['grades'][732]['res_net'] -['path_tpc']['grades'][733]['offset'] +['path_tpc']['grades'][732]['res_net_meters'] +['path_tpc']['grades'][733]['offset_meters'] ['path_tpc']['grades'][733]['res_coeff'] -['path_tpc']['grades'][733]['res_net'] -['path_tpc']['grades'][734]['offset'] +['path_tpc']['grades'][733]['res_net_meters'] +['path_tpc']['grades'][734]['offset_meters'] ['path_tpc']['grades'][734]['res_coeff'] -['path_tpc']['grades'][734]['res_net'] -['path_tpc']['grades'][735]['offset'] +['path_tpc']['grades'][734]['res_net_meters'] +['path_tpc']['grades'][735]['offset_meters'] ['path_tpc']['grades'][735]['res_coeff'] -['path_tpc']['grades'][735]['res_net'] -['path_tpc']['grades'][736]['offset'] +['path_tpc']['grades'][735]['res_net_meters'] +['path_tpc']['grades'][736]['offset_meters'] ['path_tpc']['grades'][736]['res_coeff'] -['path_tpc']['grades'][736]['res_net'] -['path_tpc']['grades'][737]['offset'] +['path_tpc']['grades'][736]['res_net_meters'] +['path_tpc']['grades'][737]['offset_meters'] ['path_tpc']['grades'][737]['res_coeff'] -['path_tpc']['grades'][737]['res_net'] -['path_tpc']['grades'][738]['offset'] +['path_tpc']['grades'][737]['res_net_meters'] +['path_tpc']['grades'][738]['offset_meters'] ['path_tpc']['grades'][738]['res_coeff'] -['path_tpc']['grades'][738]['res_net'] -['path_tpc']['grades'][739]['offset'] +['path_tpc']['grades'][738]['res_net_meters'] +['path_tpc']['grades'][739]['offset_meters'] ['path_tpc']['grades'][739]['res_coeff'] -['path_tpc']['grades'][739]['res_net'] -['path_tpc']['grades'][740]['offset'] +['path_tpc']['grades'][739]['res_net_meters'] +['path_tpc']['grades'][740]['offset_meters'] ['path_tpc']['grades'][740]['res_coeff'] -['path_tpc']['grades'][740]['res_net'] -['path_tpc']['grades'][741]['offset'] +['path_tpc']['grades'][740]['res_net_meters'] +['path_tpc']['grades'][741]['offset_meters'] ['path_tpc']['grades'][741]['res_coeff'] -['path_tpc']['grades'][741]['res_net'] -['path_tpc']['grades'][742]['offset'] +['path_tpc']['grades'][741]['res_net_meters'] +['path_tpc']['grades'][742]['offset_meters'] ['path_tpc']['grades'][742]['res_coeff'] -['path_tpc']['grades'][742]['res_net'] -['path_tpc']['grades'][743]['offset'] +['path_tpc']['grades'][742]['res_net_meters'] +['path_tpc']['grades'][743]['offset_meters'] ['path_tpc']['grades'][743]['res_coeff'] -['path_tpc']['grades'][743]['res_net'] -['path_tpc']['grades'][744]['offset'] +['path_tpc']['grades'][743]['res_net_meters'] +['path_tpc']['grades'][744]['offset_meters'] ['path_tpc']['grades'][744]['res_coeff'] -['path_tpc']['grades'][744]['res_net'] -['path_tpc']['grades'][745]['offset'] +['path_tpc']['grades'][744]['res_net_meters'] +['path_tpc']['grades'][745]['offset_meters'] ['path_tpc']['grades'][745]['res_coeff'] -['path_tpc']['grades'][745]['res_net'] -['path_tpc']['grades'][746]['offset'] +['path_tpc']['grades'][745]['res_net_meters'] +['path_tpc']['grades'][746]['offset_meters'] ['path_tpc']['grades'][746]['res_coeff'] -['path_tpc']['grades'][746]['res_net'] -['path_tpc']['grades'][747]['offset'] +['path_tpc']['grades'][746]['res_net_meters'] +['path_tpc']['grades'][747]['offset_meters'] ['path_tpc']['grades'][747]['res_coeff'] -['path_tpc']['grades'][747]['res_net'] -['path_tpc']['grades'][748]['offset'] +['path_tpc']['grades'][747]['res_net_meters'] +['path_tpc']['grades'][748]['offset_meters'] ['path_tpc']['grades'][748]['res_coeff'] -['path_tpc']['grades'][748]['res_net'] -['path_tpc']['grades'][749]['offset'] +['path_tpc']['grades'][748]['res_net_meters'] +['path_tpc']['grades'][749]['offset_meters'] ['path_tpc']['grades'][749]['res_coeff'] -['path_tpc']['grades'][749]['res_net'] -['path_tpc']['grades'][750]['offset'] +['path_tpc']['grades'][749]['res_net_meters'] +['path_tpc']['grades'][750]['offset_meters'] ['path_tpc']['grades'][750]['res_coeff'] -['path_tpc']['grades'][750]['res_net'] -['path_tpc']['grades'][751]['offset'] +['path_tpc']['grades'][750]['res_net_meters'] +['path_tpc']['grades'][751]['offset_meters'] ['path_tpc']['grades'][751]['res_coeff'] -['path_tpc']['grades'][751]['res_net'] -['path_tpc']['grades'][752]['offset'] +['path_tpc']['grades'][751]['res_net_meters'] +['path_tpc']['grades'][752]['offset_meters'] ['path_tpc']['grades'][752]['res_coeff'] -['path_tpc']['grades'][752]['res_net'] -['path_tpc']['grades'][753]['offset'] +['path_tpc']['grades'][752]['res_net_meters'] +['path_tpc']['grades'][753]['offset_meters'] ['path_tpc']['grades'][753]['res_coeff'] -['path_tpc']['grades'][753]['res_net'] -['path_tpc']['grades'][754]['offset'] +['path_tpc']['grades'][753]['res_net_meters'] +['path_tpc']['grades'][754]['offset_meters'] ['path_tpc']['grades'][754]['res_coeff'] -['path_tpc']['grades'][754]['res_net'] -['path_tpc']['grades'][755]['offset'] +['path_tpc']['grades'][754]['res_net_meters'] +['path_tpc']['grades'][755]['offset_meters'] ['path_tpc']['grades'][755]['res_coeff'] -['path_tpc']['grades'][755]['res_net'] -['path_tpc']['grades'][756]['offset'] +['path_tpc']['grades'][755]['res_net_meters'] +['path_tpc']['grades'][756]['offset_meters'] ['path_tpc']['grades'][756]['res_coeff'] -['path_tpc']['grades'][756]['res_net'] -['path_tpc']['grades'][757]['offset'] +['path_tpc']['grades'][756]['res_net_meters'] +['path_tpc']['grades'][757]['offset_meters'] ['path_tpc']['grades'][757]['res_coeff'] -['path_tpc']['grades'][757]['res_net'] -['path_tpc']['grades'][758]['offset'] +['path_tpc']['grades'][757]['res_net_meters'] +['path_tpc']['grades'][758]['offset_meters'] ['path_tpc']['grades'][758]['res_coeff'] -['path_tpc']['grades'][758]['res_net'] -['path_tpc']['grades'][759]['offset'] +['path_tpc']['grades'][758]['res_net_meters'] +['path_tpc']['grades'][759]['offset_meters'] ['path_tpc']['grades'][759]['res_coeff'] -['path_tpc']['grades'][759]['res_net'] -['path_tpc']['grades'][760]['offset'] +['path_tpc']['grades'][759]['res_net_meters'] +['path_tpc']['grades'][760]['offset_meters'] ['path_tpc']['grades'][760]['res_coeff'] -['path_tpc']['grades'][760]['res_net'] -['path_tpc']['grades'][761]['offset'] +['path_tpc']['grades'][760]['res_net_meters'] +['path_tpc']['grades'][761]['offset_meters'] ['path_tpc']['grades'][761]['res_coeff'] -['path_tpc']['grades'][761]['res_net'] -['path_tpc']['grades'][762]['offset'] +['path_tpc']['grades'][761]['res_net_meters'] +['path_tpc']['grades'][762]['offset_meters'] ['path_tpc']['grades'][762]['res_coeff'] -['path_tpc']['grades'][762]['res_net'] -['path_tpc']['grades'][763]['offset'] +['path_tpc']['grades'][762]['res_net_meters'] +['path_tpc']['grades'][763]['offset_meters'] ['path_tpc']['grades'][763]['res_coeff'] -['path_tpc']['grades'][763]['res_net'] -['path_tpc']['grades'][764]['offset'] +['path_tpc']['grades'][763]['res_net_meters'] +['path_tpc']['grades'][764]['offset_meters'] ['path_tpc']['grades'][764]['res_coeff'] -['path_tpc']['grades'][764]['res_net'] -['path_tpc']['grades'][765]['offset'] +['path_tpc']['grades'][764]['res_net_meters'] +['path_tpc']['grades'][765]['offset_meters'] ['path_tpc']['grades'][765]['res_coeff'] -['path_tpc']['grades'][765]['res_net'] -['path_tpc']['grades'][766]['offset'] +['path_tpc']['grades'][765]['res_net_meters'] +['path_tpc']['grades'][766]['offset_meters'] ['path_tpc']['grades'][766]['res_coeff'] -['path_tpc']['grades'][766]['res_net'] -['path_tpc']['grades'][767]['offset'] +['path_tpc']['grades'][766]['res_net_meters'] +['path_tpc']['grades'][767]['offset_meters'] ['path_tpc']['grades'][767]['res_coeff'] -['path_tpc']['grades'][767]['res_net'] -['path_tpc']['grades'][768]['offset'] +['path_tpc']['grades'][767]['res_net_meters'] +['path_tpc']['grades'][768]['offset_meters'] ['path_tpc']['grades'][768]['res_coeff'] -['path_tpc']['grades'][768]['res_net'] -['path_tpc']['grades'][769]['offset'] +['path_tpc']['grades'][768]['res_net_meters'] +['path_tpc']['grades'][769]['offset_meters'] ['path_tpc']['grades'][769]['res_coeff'] -['path_tpc']['grades'][769]['res_net'] -['path_tpc']['grades'][770]['offset'] +['path_tpc']['grades'][769]['res_net_meters'] +['path_tpc']['grades'][770]['offset_meters'] ['path_tpc']['grades'][770]['res_coeff'] -['path_tpc']['grades'][770]['res_net'] -['path_tpc']['grades'][771]['offset'] +['path_tpc']['grades'][770]['res_net_meters'] +['path_tpc']['grades'][771]['offset_meters'] ['path_tpc']['grades'][771]['res_coeff'] -['path_tpc']['grades'][771]['res_net'] -['path_tpc']['grades'][772]['offset'] +['path_tpc']['grades'][771]['res_net_meters'] +['path_tpc']['grades'][772]['offset_meters'] ['path_tpc']['grades'][772]['res_coeff'] -['path_tpc']['grades'][772]['res_net'] -['path_tpc']['grades'][773]['offset'] +['path_tpc']['grades'][772]['res_net_meters'] +['path_tpc']['grades'][773]['offset_meters'] ['path_tpc']['grades'][773]['res_coeff'] -['path_tpc']['grades'][773]['res_net'] -['path_tpc']['grades'][774]['offset'] +['path_tpc']['grades'][773]['res_net_meters'] +['path_tpc']['grades'][774]['offset_meters'] ['path_tpc']['grades'][774]['res_coeff'] -['path_tpc']['grades'][774]['res_net'] -['path_tpc']['grades'][775]['offset'] +['path_tpc']['grades'][774]['res_net_meters'] +['path_tpc']['grades'][775]['offset_meters'] ['path_tpc']['grades'][775]['res_coeff'] -['path_tpc']['grades'][775]['res_net'] -['path_tpc']['grades'][776]['offset'] +['path_tpc']['grades'][775]['res_net_meters'] +['path_tpc']['grades'][776]['offset_meters'] ['path_tpc']['grades'][776]['res_coeff'] -['path_tpc']['grades'][776]['res_net'] -['path_tpc']['grades'][777]['offset'] +['path_tpc']['grades'][776]['res_net_meters'] +['path_tpc']['grades'][777]['offset_meters'] ['path_tpc']['grades'][777]['res_coeff'] -['path_tpc']['grades'][777]['res_net'] -['path_tpc']['grades'][778]['offset'] +['path_tpc']['grades'][777]['res_net_meters'] +['path_tpc']['grades'][778]['offset_meters'] ['path_tpc']['grades'][778]['res_coeff'] -['path_tpc']['grades'][778]['res_net'] -['path_tpc']['grades'][779]['offset'] +['path_tpc']['grades'][778]['res_net_meters'] +['path_tpc']['grades'][779]['offset_meters'] ['path_tpc']['grades'][779]['res_coeff'] -['path_tpc']['grades'][779]['res_net'] -['path_tpc']['grades'][780]['offset'] +['path_tpc']['grades'][779]['res_net_meters'] +['path_tpc']['grades'][780]['offset_meters'] ['path_tpc']['grades'][780]['res_coeff'] -['path_tpc']['grades'][780]['res_net'] -['path_tpc']['grades'][781]['offset'] +['path_tpc']['grades'][780]['res_net_meters'] +['path_tpc']['grades'][781]['offset_meters'] ['path_tpc']['grades'][781]['res_coeff'] -['path_tpc']['grades'][781]['res_net'] -['path_tpc']['grades'][782]['offset'] +['path_tpc']['grades'][781]['res_net_meters'] +['path_tpc']['grades'][782]['offset_meters'] ['path_tpc']['grades'][782]['res_coeff'] -['path_tpc']['grades'][782]['res_net'] -['path_tpc']['grades'][783]['offset'] +['path_tpc']['grades'][782]['res_net_meters'] +['path_tpc']['grades'][783]['offset_meters'] ['path_tpc']['grades'][783]['res_coeff'] -['path_tpc']['grades'][783]['res_net'] -['path_tpc']['grades'][784]['offset'] +['path_tpc']['grades'][783]['res_net_meters'] +['path_tpc']['grades'][784]['offset_meters'] ['path_tpc']['grades'][784]['res_coeff'] -['path_tpc']['grades'][784]['res_net'] -['path_tpc']['grades'][785]['offset'] +['path_tpc']['grades'][784]['res_net_meters'] +['path_tpc']['grades'][785]['offset_meters'] ['path_tpc']['grades'][785]['res_coeff'] -['path_tpc']['grades'][785]['res_net'] -['path_tpc']['grades'][786]['offset'] +['path_tpc']['grades'][785]['res_net_meters'] +['path_tpc']['grades'][786]['offset_meters'] ['path_tpc']['grades'][786]['res_coeff'] -['path_tpc']['grades'][786]['res_net'] -['path_tpc']['curves'][0]['offset'] +['path_tpc']['grades'][786]['res_net_meters'] +['path_tpc']['curves'][0]['offset_meters'] ['path_tpc']['curves'][0]['res_coeff'] -['path_tpc']['curves'][0]['res_net'] -['path_tpc']['curves'][1]['offset'] +['path_tpc']['curves'][0]['res_net_meters'] +['path_tpc']['curves'][1]['offset_meters'] ['path_tpc']['curves'][1]['res_coeff'] -['path_tpc']['curves'][1]['res_net'] -['path_tpc']['curves'][2]['offset'] +['path_tpc']['curves'][1]['res_net_meters'] +['path_tpc']['curves'][2]['offset_meters'] ['path_tpc']['curves'][2]['res_coeff'] -['path_tpc']['curves'][2]['res_net'] -['path_tpc']['curves'][3]['offset'] +['path_tpc']['curves'][2]['res_net_meters'] +['path_tpc']['curves'][3]['offset_meters'] ['path_tpc']['curves'][3]['res_coeff'] -['path_tpc']['curves'][3]['res_net'] -['path_tpc']['curves'][4]['offset'] +['path_tpc']['curves'][3]['res_net_meters'] +['path_tpc']['curves'][4]['offset_meters'] ['path_tpc']['curves'][4]['res_coeff'] -['path_tpc']['curves'][4]['res_net'] -['path_tpc']['curves'][5]['offset'] +['path_tpc']['curves'][4]['res_net_meters'] +['path_tpc']['curves'][5]['offset_meters'] ['path_tpc']['curves'][5]['res_coeff'] -['path_tpc']['curves'][5]['res_net'] -['path_tpc']['curves'][6]['offset'] +['path_tpc']['curves'][5]['res_net_meters'] +['path_tpc']['curves'][6]['offset_meters'] ['path_tpc']['curves'][6]['res_coeff'] -['path_tpc']['curves'][6]['res_net'] -['path_tpc']['curves'][7]['offset'] +['path_tpc']['curves'][6]['res_net_meters'] +['path_tpc']['curves'][7]['offset_meters'] ['path_tpc']['curves'][7]['res_coeff'] -['path_tpc']['curves'][7]['res_net'] -['path_tpc']['curves'][8]['offset'] +['path_tpc']['curves'][7]['res_net_meters'] +['path_tpc']['curves'][8]['offset_meters'] ['path_tpc']['curves'][8]['res_coeff'] -['path_tpc']['curves'][8]['res_net'] -['path_tpc']['curves'][9]['offset'] +['path_tpc']['curves'][8]['res_net_meters'] +['path_tpc']['curves'][9]['offset_meters'] ['path_tpc']['curves'][9]['res_coeff'] -['path_tpc']['curves'][9]['res_net'] -['path_tpc']['curves'][10]['offset'] +['path_tpc']['curves'][9]['res_net_meters'] +['path_tpc']['curves'][10]['offset_meters'] ['path_tpc']['curves'][10]['res_coeff'] -['path_tpc']['curves'][10]['res_net'] -['path_tpc']['curves'][11]['offset'] +['path_tpc']['curves'][10]['res_net_meters'] +['path_tpc']['curves'][11]['offset_meters'] ['path_tpc']['curves'][11]['res_coeff'] -['path_tpc']['curves'][11]['res_net'] -['path_tpc']['curves'][12]['offset'] +['path_tpc']['curves'][11]['res_net_meters'] +['path_tpc']['curves'][12]['offset_meters'] ['path_tpc']['curves'][12]['res_coeff'] -['path_tpc']['curves'][12]['res_net'] -['path_tpc']['curves'][13]['offset'] +['path_tpc']['curves'][12]['res_net_meters'] +['path_tpc']['curves'][13]['offset_meters'] ['path_tpc']['curves'][13]['res_coeff'] -['path_tpc']['curves'][13]['res_net'] -['path_tpc']['curves'][14]['offset'] +['path_tpc']['curves'][13]['res_net_meters'] +['path_tpc']['curves'][14]['offset_meters'] ['path_tpc']['curves'][14]['res_coeff'] -['path_tpc']['curves'][14]['res_net'] -['path_tpc']['curves'][15]['offset'] +['path_tpc']['curves'][14]['res_net_meters'] +['path_tpc']['curves'][15]['offset_meters'] ['path_tpc']['curves'][15]['res_coeff'] -['path_tpc']['curves'][15]['res_net'] -['path_tpc']['curves'][16]['offset'] +['path_tpc']['curves'][15]['res_net_meters'] +['path_tpc']['curves'][16]['offset_meters'] ['path_tpc']['curves'][16]['res_coeff'] -['path_tpc']['curves'][16]['res_net'] -['path_tpc']['curves'][17]['offset'] +['path_tpc']['curves'][16]['res_net_meters'] +['path_tpc']['curves'][17]['offset_meters'] ['path_tpc']['curves'][17]['res_coeff'] -['path_tpc']['curves'][17]['res_net'] -['path_tpc']['curves'][18]['offset'] +['path_tpc']['curves'][17]['res_net_meters'] +['path_tpc']['curves'][18]['offset_meters'] ['path_tpc']['curves'][18]['res_coeff'] -['path_tpc']['curves'][18]['res_net'] -['path_tpc']['curves'][19]['offset'] +['path_tpc']['curves'][18]['res_net_meters'] +['path_tpc']['curves'][19]['offset_meters'] ['path_tpc']['curves'][19]['res_coeff'] -['path_tpc']['curves'][19]['res_net'] -['path_tpc']['curves'][20]['offset'] +['path_tpc']['curves'][19]['res_net_meters'] +['path_tpc']['curves'][20]['offset_meters'] ['path_tpc']['curves'][20]['res_coeff'] -['path_tpc']['curves'][20]['res_net'] -['path_tpc']['curves'][21]['offset'] +['path_tpc']['curves'][20]['res_net_meters'] +['path_tpc']['curves'][21]['offset_meters'] ['path_tpc']['curves'][21]['res_coeff'] -['path_tpc']['curves'][21]['res_net'] -['path_tpc']['curves'][22]['offset'] +['path_tpc']['curves'][21]['res_net_meters'] +['path_tpc']['curves'][22]['offset_meters'] ['path_tpc']['curves'][22]['res_coeff'] -['path_tpc']['curves'][22]['res_net'] -['path_tpc']['curves'][23]['offset'] +['path_tpc']['curves'][22]['res_net_meters'] +['path_tpc']['curves'][23]['offset_meters'] ['path_tpc']['curves'][23]['res_coeff'] -['path_tpc']['curves'][23]['res_net'] -['path_tpc']['curves'][24]['offset'] +['path_tpc']['curves'][23]['res_net_meters'] +['path_tpc']['curves'][24]['offset_meters'] ['path_tpc']['curves'][24]['res_coeff'] -['path_tpc']['curves'][24]['res_net'] -['path_tpc']['curves'][25]['offset'] +['path_tpc']['curves'][24]['res_net_meters'] +['path_tpc']['curves'][25]['offset_meters'] ['path_tpc']['curves'][25]['res_coeff'] -['path_tpc']['curves'][25]['res_net'] -['path_tpc']['curves'][26]['offset'] +['path_tpc']['curves'][25]['res_net_meters'] +['path_tpc']['curves'][26]['offset_meters'] ['path_tpc']['curves'][26]['res_coeff'] -['path_tpc']['curves'][26]['res_net'] -['path_tpc']['curves'][27]['offset'] +['path_tpc']['curves'][26]['res_net_meters'] +['path_tpc']['curves'][27]['offset_meters'] ['path_tpc']['curves'][27]['res_coeff'] -['path_tpc']['curves'][27]['res_net'] -['path_tpc']['curves'][28]['offset'] +['path_tpc']['curves'][27]['res_net_meters'] +['path_tpc']['curves'][28]['offset_meters'] ['path_tpc']['curves'][28]['res_coeff'] -['path_tpc']['curves'][28]['res_net'] -['path_tpc']['curves'][29]['offset'] +['path_tpc']['curves'][28]['res_net_meters'] +['path_tpc']['curves'][29]['offset_meters'] ['path_tpc']['curves'][29]['res_coeff'] -['path_tpc']['curves'][29]['res_net'] -['path_tpc']['curves'][30]['offset'] +['path_tpc']['curves'][29]['res_net_meters'] +['path_tpc']['curves'][30]['offset_meters'] ['path_tpc']['curves'][30]['res_coeff'] -['path_tpc']['curves'][30]['res_net'] -['path_tpc']['curves'][31]['offset'] +['path_tpc']['curves'][30]['res_net_meters'] +['path_tpc']['curves'][31]['offset_meters'] ['path_tpc']['curves'][31]['res_coeff'] -['path_tpc']['curves'][31]['res_net'] -['path_tpc']['curves'][32]['offset'] +['path_tpc']['curves'][31]['res_net_meters'] +['path_tpc']['curves'][32]['offset_meters'] ['path_tpc']['curves'][32]['res_coeff'] -['path_tpc']['curves'][32]['res_net'] -['path_tpc']['curves'][33]['offset'] +['path_tpc']['curves'][32]['res_net_meters'] +['path_tpc']['curves'][33]['offset_meters'] ['path_tpc']['curves'][33]['res_coeff'] -['path_tpc']['curves'][33]['res_net'] -['path_tpc']['curves'][34]['offset'] +['path_tpc']['curves'][33]['res_net_meters'] +['path_tpc']['curves'][34]['offset_meters'] ['path_tpc']['curves'][34]['res_coeff'] -['path_tpc']['curves'][34]['res_net'] -['path_tpc']['curves'][35]['offset'] +['path_tpc']['curves'][34]['res_net_meters'] +['path_tpc']['curves'][35]['offset_meters'] ['path_tpc']['curves'][35]['res_coeff'] -['path_tpc']['curves'][35]['res_net'] -['path_tpc']['curves'][36]['offset'] +['path_tpc']['curves'][35]['res_net_meters'] +['path_tpc']['curves'][36]['offset_meters'] ['path_tpc']['curves'][36]['res_coeff'] -['path_tpc']['curves'][36]['res_net'] -['path_tpc']['curves'][37]['offset'] +['path_tpc']['curves'][36]['res_net_meters'] +['path_tpc']['curves'][37]['offset_meters'] ['path_tpc']['curves'][37]['res_coeff'] -['path_tpc']['curves'][37]['res_net'] -['path_tpc']['curves'][38]['offset'] +['path_tpc']['curves'][37]['res_net_meters'] +['path_tpc']['curves'][38]['offset_meters'] ['path_tpc']['curves'][38]['res_coeff'] -['path_tpc']['curves'][38]['res_net'] -['path_tpc']['curves'][39]['offset'] +['path_tpc']['curves'][38]['res_net_meters'] +['path_tpc']['curves'][39]['offset_meters'] ['path_tpc']['curves'][39]['res_coeff'] -['path_tpc']['curves'][39]['res_net'] -['path_tpc']['curves'][40]['offset'] +['path_tpc']['curves'][39]['res_net_meters'] +['path_tpc']['curves'][40]['offset_meters'] ['path_tpc']['curves'][40]['res_coeff'] -['path_tpc']['curves'][40]['res_net'] -['path_tpc']['curves'][41]['offset'] +['path_tpc']['curves'][40]['res_net_meters'] +['path_tpc']['curves'][41]['offset_meters'] ['path_tpc']['curves'][41]['res_coeff'] -['path_tpc']['curves'][41]['res_net'] -['path_tpc']['curves'][42]['offset'] +['path_tpc']['curves'][41]['res_net_meters'] +['path_tpc']['curves'][42]['offset_meters'] ['path_tpc']['curves'][42]['res_coeff'] -['path_tpc']['curves'][42]['res_net'] -['path_tpc']['curves'][43]['offset'] +['path_tpc']['curves'][42]['res_net_meters'] +['path_tpc']['curves'][43]['offset_meters'] ['path_tpc']['curves'][43]['res_coeff'] -['path_tpc']['curves'][43]['res_net'] -['path_tpc']['curves'][44]['offset'] +['path_tpc']['curves'][43]['res_net_meters'] +['path_tpc']['curves'][44]['offset_meters'] ['path_tpc']['curves'][44]['res_coeff'] -['path_tpc']['curves'][44]['res_net'] -['path_tpc']['curves'][45]['offset'] +['path_tpc']['curves'][44]['res_net_meters'] +['path_tpc']['curves'][45]['offset_meters'] ['path_tpc']['curves'][45]['res_coeff'] -['path_tpc']['curves'][45]['res_net'] -['path_tpc']['curves'][46]['offset'] +['path_tpc']['curves'][45]['res_net_meters'] +['path_tpc']['curves'][46]['offset_meters'] ['path_tpc']['curves'][46]['res_coeff'] -['path_tpc']['curves'][46]['res_net'] -['path_tpc']['curves'][47]['offset'] +['path_tpc']['curves'][46]['res_net_meters'] +['path_tpc']['curves'][47]['offset_meters'] ['path_tpc']['curves'][47]['res_coeff'] -['path_tpc']['curves'][47]['res_net'] -['path_tpc']['curves'][48]['offset'] +['path_tpc']['curves'][47]['res_net_meters'] +['path_tpc']['curves'][48]['offset_meters'] ['path_tpc']['curves'][48]['res_coeff'] -['path_tpc']['curves'][48]['res_net'] -['path_tpc']['curves'][49]['offset'] +['path_tpc']['curves'][48]['res_net_meters'] +['path_tpc']['curves'][49]['offset_meters'] ['path_tpc']['curves'][49]['res_coeff'] -['path_tpc']['curves'][49]['res_net'] -['path_tpc']['curves'][50]['offset'] +['path_tpc']['curves'][49]['res_net_meters'] +['path_tpc']['curves'][50]['offset_meters'] ['path_tpc']['curves'][50]['res_coeff'] -['path_tpc']['curves'][50]['res_net'] -['path_tpc']['curves'][51]['offset'] +['path_tpc']['curves'][50]['res_net_meters'] +['path_tpc']['curves'][51]['offset_meters'] ['path_tpc']['curves'][51]['res_coeff'] -['path_tpc']['curves'][51]['res_net'] -['path_tpc']['curves'][52]['offset'] +['path_tpc']['curves'][51]['res_net_meters'] +['path_tpc']['curves'][52]['offset_meters'] ['path_tpc']['curves'][52]['res_coeff'] -['path_tpc']['curves'][52]['res_net'] -['path_tpc']['curves'][53]['offset'] +['path_tpc']['curves'][52]['res_net_meters'] +['path_tpc']['curves'][53]['offset_meters'] ['path_tpc']['curves'][53]['res_coeff'] -['path_tpc']['curves'][53]['res_net'] -['path_tpc']['curves'][54]['offset'] +['path_tpc']['curves'][53]['res_net_meters'] +['path_tpc']['curves'][54]['offset_meters'] ['path_tpc']['curves'][54]['res_coeff'] -['path_tpc']['curves'][54]['res_net'] -['path_tpc']['curves'][55]['offset'] +['path_tpc']['curves'][54]['res_net_meters'] +['path_tpc']['curves'][55]['offset_meters'] ['path_tpc']['curves'][55]['res_coeff'] -['path_tpc']['curves'][55]['res_net'] -['path_tpc']['curves'][56]['offset'] +['path_tpc']['curves'][55]['res_net_meters'] +['path_tpc']['curves'][56]['offset_meters'] ['path_tpc']['curves'][56]['res_coeff'] -['path_tpc']['curves'][56]['res_net'] -['path_tpc']['curves'][57]['offset'] +['path_tpc']['curves'][56]['res_net_meters'] +['path_tpc']['curves'][57]['offset_meters'] ['path_tpc']['curves'][57]['res_coeff'] -['path_tpc']['curves'][57]['res_net'] -['path_tpc']['curves'][58]['offset'] +['path_tpc']['curves'][57]['res_net_meters'] +['path_tpc']['curves'][58]['offset_meters'] ['path_tpc']['curves'][58]['res_coeff'] -['path_tpc']['curves'][58]['res_net'] -['path_tpc']['curves'][59]['offset'] +['path_tpc']['curves'][58]['res_net_meters'] +['path_tpc']['curves'][59]['offset_meters'] ['path_tpc']['curves'][59]['res_coeff'] -['path_tpc']['curves'][59]['res_net'] -['path_tpc']['curves'][60]['offset'] +['path_tpc']['curves'][59]['res_net_meters'] +['path_tpc']['curves'][60]['offset_meters'] ['path_tpc']['curves'][60]['res_coeff'] -['path_tpc']['curves'][60]['res_net'] -['path_tpc']['curves'][61]['offset'] +['path_tpc']['curves'][60]['res_net_meters'] +['path_tpc']['curves'][61]['offset_meters'] ['path_tpc']['curves'][61]['res_coeff'] -['path_tpc']['curves'][61]['res_net'] -['path_tpc']['curves'][62]['offset'] +['path_tpc']['curves'][61]['res_net_meters'] +['path_tpc']['curves'][62]['offset_meters'] ['path_tpc']['curves'][62]['res_coeff'] -['path_tpc']['curves'][62]['res_net'] -['path_tpc']['curves'][63]['offset'] +['path_tpc']['curves'][62]['res_net_meters'] +['path_tpc']['curves'][63]['offset_meters'] ['path_tpc']['curves'][63]['res_coeff'] -['path_tpc']['curves'][63]['res_net'] -['path_tpc']['curves'][64]['offset'] +['path_tpc']['curves'][63]['res_net_meters'] +['path_tpc']['curves'][64]['offset_meters'] ['path_tpc']['curves'][64]['res_coeff'] -['path_tpc']['curves'][64]['res_net'] -['path_tpc']['curves'][65]['offset'] +['path_tpc']['curves'][64]['res_net_meters'] +['path_tpc']['curves'][65]['offset_meters'] ['path_tpc']['curves'][65]['res_coeff'] -['path_tpc']['curves'][65]['res_net'] -['path_tpc']['curves'][66]['offset'] +['path_tpc']['curves'][65]['res_net_meters'] +['path_tpc']['curves'][66]['offset_meters'] ['path_tpc']['curves'][66]['res_coeff'] -['path_tpc']['curves'][66]['res_net'] -['path_tpc']['curves'][67]['offset'] +['path_tpc']['curves'][66]['res_net_meters'] +['path_tpc']['curves'][67]['offset_meters'] ['path_tpc']['curves'][67]['res_coeff'] -['path_tpc']['curves'][67]['res_net'] -['path_tpc']['curves'][68]['offset'] +['path_tpc']['curves'][67]['res_net_meters'] +['path_tpc']['curves'][68]['offset_meters'] ['path_tpc']['curves'][68]['res_coeff'] -['path_tpc']['curves'][68]['res_net'] -['path_tpc']['curves'][69]['offset'] +['path_tpc']['curves'][68]['res_net_meters'] +['path_tpc']['curves'][69]['offset_meters'] ['path_tpc']['curves'][69]['res_coeff'] -['path_tpc']['curves'][69]['res_net'] -['path_tpc']['curves'][70]['offset'] +['path_tpc']['curves'][69]['res_net_meters'] +['path_tpc']['curves'][70]['offset_meters'] ['path_tpc']['curves'][70]['res_coeff'] -['path_tpc']['curves'][70]['res_net'] -['path_tpc']['curves'][71]['offset'] +['path_tpc']['curves'][70]['res_net_meters'] +['path_tpc']['curves'][71]['offset_meters'] ['path_tpc']['curves'][71]['res_coeff'] -['path_tpc']['curves'][71]['res_net'] -['path_tpc']['curves'][72]['offset'] +['path_tpc']['curves'][71]['res_net_meters'] +['path_tpc']['curves'][72]['offset_meters'] ['path_tpc']['curves'][72]['res_coeff'] -['path_tpc']['curves'][72]['res_net'] -['path_tpc']['curves'][73]['offset'] +['path_tpc']['curves'][72]['res_net_meters'] +['path_tpc']['curves'][73]['offset_meters'] ['path_tpc']['curves'][73]['res_coeff'] -['path_tpc']['curves'][73]['res_net'] -['path_tpc']['curves'][74]['offset'] +['path_tpc']['curves'][73]['res_net_meters'] +['path_tpc']['curves'][74]['offset_meters'] ['path_tpc']['curves'][74]['res_coeff'] -['path_tpc']['curves'][74]['res_net'] -['path_tpc']['curves'][75]['offset'] +['path_tpc']['curves'][74]['res_net_meters'] +['path_tpc']['curves'][75]['offset_meters'] ['path_tpc']['curves'][75]['res_coeff'] -['path_tpc']['curves'][75]['res_net'] -['path_tpc']['curves'][76]['offset'] +['path_tpc']['curves'][75]['res_net_meters'] +['path_tpc']['curves'][76]['offset_meters'] ['path_tpc']['curves'][76]['res_coeff'] -['path_tpc']['curves'][76]['res_net'] -['path_tpc']['curves'][77]['offset'] +['path_tpc']['curves'][76]['res_net_meters'] +['path_tpc']['curves'][77]['offset_meters'] ['path_tpc']['curves'][77]['res_coeff'] -['path_tpc']['curves'][77]['res_net'] -['path_tpc']['curves'][78]['offset'] +['path_tpc']['curves'][77]['res_net_meters'] +['path_tpc']['curves'][78]['offset_meters'] ['path_tpc']['curves'][78]['res_coeff'] -['path_tpc']['curves'][78]['res_net'] -['path_tpc']['curves'][79]['offset'] +['path_tpc']['curves'][78]['res_net_meters'] +['path_tpc']['curves'][79]['offset_meters'] ['path_tpc']['curves'][79]['res_coeff'] -['path_tpc']['curves'][79]['res_net'] -['path_tpc']['curves'][80]['offset'] +['path_tpc']['curves'][79]['res_net_meters'] +['path_tpc']['curves'][80]['offset_meters'] ['path_tpc']['curves'][80]['res_coeff'] -['path_tpc']['curves'][80]['res_net'] -['path_tpc']['curves'][81]['offset'] +['path_tpc']['curves'][80]['res_net_meters'] +['path_tpc']['curves'][81]['offset_meters'] ['path_tpc']['curves'][81]['res_coeff'] -['path_tpc']['curves'][81]['res_net'] -['path_tpc']['curves'][82]['offset'] +['path_tpc']['curves'][81]['res_net_meters'] +['path_tpc']['curves'][82]['offset_meters'] ['path_tpc']['curves'][82]['res_coeff'] -['path_tpc']['curves'][82]['res_net'] -['path_tpc']['curves'][83]['offset'] +['path_tpc']['curves'][82]['res_net_meters'] +['path_tpc']['curves'][83]['offset_meters'] ['path_tpc']['curves'][83]['res_coeff'] -['path_tpc']['curves'][83]['res_net'] -['path_tpc']['curves'][84]['offset'] +['path_tpc']['curves'][83]['res_net_meters'] +['path_tpc']['curves'][84]['offset_meters'] ['path_tpc']['curves'][84]['res_coeff'] -['path_tpc']['curves'][84]['res_net'] -['path_tpc']['curves'][85]['offset'] +['path_tpc']['curves'][84]['res_net_meters'] +['path_tpc']['curves'][85]['offset_meters'] ['path_tpc']['curves'][85]['res_coeff'] -['path_tpc']['curves'][85]['res_net'] -['path_tpc']['curves'][86]['offset'] +['path_tpc']['curves'][85]['res_net_meters'] +['path_tpc']['curves'][86]['offset_meters'] ['path_tpc']['curves'][86]['res_coeff'] -['path_tpc']['curves'][86]['res_net'] -['path_tpc']['curves'][87]['offset'] +['path_tpc']['curves'][86]['res_net_meters'] +['path_tpc']['curves'][87]['offset_meters'] ['path_tpc']['curves'][87]['res_coeff'] -['path_tpc']['curves'][87]['res_net'] -['path_tpc']['curves'][88]['offset'] +['path_tpc']['curves'][87]['res_net_meters'] +['path_tpc']['curves'][88]['offset_meters'] ['path_tpc']['curves'][88]['res_coeff'] -['path_tpc']['curves'][88]['res_net'] -['path_tpc']['curves'][89]['offset'] +['path_tpc']['curves'][88]['res_net_meters'] +['path_tpc']['curves'][89]['offset_meters'] ['path_tpc']['curves'][89]['res_coeff'] -['path_tpc']['curves'][89]['res_net'] -['path_tpc']['curves'][90]['offset'] +['path_tpc']['curves'][89]['res_net_meters'] +['path_tpc']['curves'][90]['offset_meters'] ['path_tpc']['curves'][90]['res_coeff'] -['path_tpc']['curves'][90]['res_net'] -['path_tpc']['curves'][91]['offset'] +['path_tpc']['curves'][90]['res_net_meters'] +['path_tpc']['curves'][91]['offset_meters'] ['path_tpc']['curves'][91]['res_coeff'] -['path_tpc']['curves'][91]['res_net'] -['path_tpc']['curves'][92]['offset'] +['path_tpc']['curves'][91]['res_net_meters'] +['path_tpc']['curves'][92]['offset_meters'] ['path_tpc']['curves'][92]['res_coeff'] -['path_tpc']['curves'][92]['res_net'] -['path_tpc']['curves'][93]['offset'] +['path_tpc']['curves'][92]['res_net_meters'] +['path_tpc']['curves'][93]['offset_meters'] ['path_tpc']['curves'][93]['res_coeff'] -['path_tpc']['curves'][93]['res_net'] -['path_tpc']['curves'][94]['offset'] +['path_tpc']['curves'][93]['res_net_meters'] +['path_tpc']['curves'][94]['offset_meters'] ['path_tpc']['curves'][94]['res_coeff'] -['path_tpc']['curves'][94]['res_net'] -['path_tpc']['curves'][95]['offset'] +['path_tpc']['curves'][94]['res_net_meters'] +['path_tpc']['curves'][95]['offset_meters'] ['path_tpc']['curves'][95]['res_coeff'] -['path_tpc']['curves'][95]['res_net'] -['path_tpc']['curves'][96]['offset'] +['path_tpc']['curves'][95]['res_net_meters'] +['path_tpc']['curves'][96]['offset_meters'] ['path_tpc']['curves'][96]['res_coeff'] -['path_tpc']['curves'][96]['res_net'] -['path_tpc']['curves'][97]['offset'] +['path_tpc']['curves'][96]['res_net_meters'] +['path_tpc']['curves'][97]['offset_meters'] ['path_tpc']['curves'][97]['res_coeff'] -['path_tpc']['curves'][97]['res_net'] -['path_tpc']['curves'][98]['offset'] +['path_tpc']['curves'][97]['res_net_meters'] +['path_tpc']['curves'][98]['offset_meters'] ['path_tpc']['curves'][98]['res_coeff'] -['path_tpc']['curves'][98]['res_net'] -['path_tpc']['curves'][99]['offset'] +['path_tpc']['curves'][98]['res_net_meters'] +['path_tpc']['curves'][99]['offset_meters'] ['path_tpc']['curves'][99]['res_coeff'] -['path_tpc']['curves'][99]['res_net'] -['path_tpc']['curves'][100]['offset'] +['path_tpc']['curves'][99]['res_net_meters'] +['path_tpc']['curves'][100]['offset_meters'] ['path_tpc']['curves'][100]['res_coeff'] -['path_tpc']['curves'][100]['res_net'] -['path_tpc']['curves'][101]['offset'] +['path_tpc']['curves'][100]['res_net_meters'] +['path_tpc']['curves'][101]['offset_meters'] ['path_tpc']['curves'][101]['res_coeff'] -['path_tpc']['curves'][101]['res_net'] -['path_tpc']['curves'][102]['offset'] +['path_tpc']['curves'][101]['res_net_meters'] +['path_tpc']['curves'][102]['offset_meters'] ['path_tpc']['curves'][102]['res_coeff'] -['path_tpc']['curves'][102]['res_net'] -['path_tpc']['curves'][103]['offset'] +['path_tpc']['curves'][102]['res_net_meters'] +['path_tpc']['curves'][103]['offset_meters'] ['path_tpc']['curves'][103]['res_coeff'] -['path_tpc']['curves'][103]['res_net'] -['path_tpc']['curves'][104]['offset'] +['path_tpc']['curves'][103]['res_net_meters'] +['path_tpc']['curves'][104]['offset_meters'] ['path_tpc']['curves'][104]['res_coeff'] -['path_tpc']['curves'][104]['res_net'] -['path_tpc']['curves'][105]['offset'] +['path_tpc']['curves'][104]['res_net_meters'] +['path_tpc']['curves'][105]['offset_meters'] ['path_tpc']['curves'][105]['res_coeff'] -['path_tpc']['curves'][105]['res_net'] -['path_tpc']['curves'][106]['offset'] +['path_tpc']['curves'][105]['res_net_meters'] +['path_tpc']['curves'][106]['offset_meters'] ['path_tpc']['curves'][106]['res_coeff'] -['path_tpc']['curves'][106]['res_net'] -['path_tpc']['curves'][107]['offset'] +['path_tpc']['curves'][106]['res_net_meters'] +['path_tpc']['curves'][107]['offset_meters'] ['path_tpc']['curves'][107]['res_coeff'] -['path_tpc']['curves'][107]['res_net'] -['path_tpc']['curves'][108]['offset'] +['path_tpc']['curves'][107]['res_net_meters'] +['path_tpc']['curves'][108]['offset_meters'] ['path_tpc']['curves'][108]['res_coeff'] -['path_tpc']['curves'][108]['res_net'] -['path_tpc']['curves'][109]['offset'] +['path_tpc']['curves'][108]['res_net_meters'] +['path_tpc']['curves'][109]['offset_meters'] ['path_tpc']['curves'][109]['res_coeff'] -['path_tpc']['curves'][109]['res_net'] -['path_tpc']['curves'][110]['offset'] +['path_tpc']['curves'][109]['res_net_meters'] +['path_tpc']['curves'][110]['offset_meters'] ['path_tpc']['curves'][110]['res_coeff'] -['path_tpc']['curves'][110]['res_net'] -['path_tpc']['curves'][111]['offset'] +['path_tpc']['curves'][110]['res_net_meters'] +['path_tpc']['curves'][111]['offset_meters'] ['path_tpc']['curves'][111]['res_coeff'] -['path_tpc']['curves'][111]['res_net'] -['path_tpc']['curves'][112]['offset'] +['path_tpc']['curves'][111]['res_net_meters'] +['path_tpc']['curves'][112]['offset_meters'] ['path_tpc']['curves'][112]['res_coeff'] -['path_tpc']['curves'][112]['res_net'] -['path_tpc']['curves'][113]['offset'] +['path_tpc']['curves'][112]['res_net_meters'] +['path_tpc']['curves'][113]['offset_meters'] ['path_tpc']['curves'][113]['res_coeff'] -['path_tpc']['curves'][113]['res_net'] -['path_tpc']['curves'][114]['offset'] +['path_tpc']['curves'][113]['res_net_meters'] +['path_tpc']['curves'][114]['offset_meters'] ['path_tpc']['curves'][114]['res_coeff'] -['path_tpc']['curves'][114]['res_net'] -['path_tpc']['curves'][115]['offset'] +['path_tpc']['curves'][114]['res_net_meters'] +['path_tpc']['curves'][115]['offset_meters'] ['path_tpc']['curves'][115]['res_coeff'] -['path_tpc']['curves'][115]['res_net'] -['path_tpc']['curves'][116]['offset'] +['path_tpc']['curves'][115]['res_net_meters'] +['path_tpc']['curves'][116]['offset_meters'] ['path_tpc']['curves'][116]['res_coeff'] -['path_tpc']['curves'][116]['res_net'] -['path_tpc']['curves'][117]['offset'] +['path_tpc']['curves'][116]['res_net_meters'] +['path_tpc']['curves'][117]['offset_meters'] ['path_tpc']['curves'][117]['res_coeff'] -['path_tpc']['curves'][117]['res_net'] -['path_tpc']['curves'][118]['offset'] +['path_tpc']['curves'][117]['res_net_meters'] +['path_tpc']['curves'][118]['offset_meters'] ['path_tpc']['curves'][118]['res_coeff'] -['path_tpc']['curves'][118]['res_net'] -['path_tpc']['curves'][119]['offset'] +['path_tpc']['curves'][118]['res_net_meters'] +['path_tpc']['curves'][119]['offset_meters'] ['path_tpc']['curves'][119]['res_coeff'] -['path_tpc']['curves'][119]['res_net'] -['path_tpc']['curves'][120]['offset'] +['path_tpc']['curves'][119]['res_net_meters'] +['path_tpc']['curves'][120]['offset_meters'] ['path_tpc']['curves'][120]['res_coeff'] -['path_tpc']['curves'][120]['res_net'] -['path_tpc']['curves'][121]['offset'] +['path_tpc']['curves'][120]['res_net_meters'] +['path_tpc']['curves'][121]['offset_meters'] ['path_tpc']['curves'][121]['res_coeff'] -['path_tpc']['curves'][121]['res_net'] -['path_tpc']['curves'][122]['offset'] +['path_tpc']['curves'][121]['res_net_meters'] +['path_tpc']['curves'][122]['offset_meters'] ['path_tpc']['curves'][122]['res_coeff'] -['path_tpc']['curves'][122]['res_net'] -['path_tpc']['curves'][123]['offset'] +['path_tpc']['curves'][122]['res_net_meters'] +['path_tpc']['curves'][123]['offset_meters'] ['path_tpc']['curves'][123]['res_coeff'] -['path_tpc']['curves'][123]['res_net'] -['path_tpc']['curves'][124]['offset'] +['path_tpc']['curves'][123]['res_net_meters'] +['path_tpc']['curves'][124]['offset_meters'] ['path_tpc']['curves'][124]['res_coeff'] -['path_tpc']['curves'][124]['res_net'] -['path_tpc']['curves'][125]['offset'] +['path_tpc']['curves'][124]['res_net_meters'] +['path_tpc']['curves'][125]['offset_meters'] ['path_tpc']['curves'][125]['res_coeff'] -['path_tpc']['curves'][125]['res_net'] -['path_tpc']['curves'][126]['offset'] +['path_tpc']['curves'][125]['res_net_meters'] +['path_tpc']['curves'][126]['offset_meters'] ['path_tpc']['curves'][126]['res_coeff'] -['path_tpc']['curves'][126]['res_net'] -['path_tpc']['curves'][127]['offset'] +['path_tpc']['curves'][126]['res_net_meters'] +['path_tpc']['curves'][127]['offset_meters'] ['path_tpc']['curves'][127]['res_coeff'] -['path_tpc']['curves'][127]['res_net'] -['path_tpc']['curves'][128]['offset'] +['path_tpc']['curves'][127]['res_net_meters'] +['path_tpc']['curves'][128]['offset_meters'] ['path_tpc']['curves'][128]['res_coeff'] -['path_tpc']['curves'][128]['res_net'] -['path_tpc']['curves'][129]['offset'] +['path_tpc']['curves'][128]['res_net_meters'] +['path_tpc']['curves'][129]['offset_meters'] ['path_tpc']['curves'][129]['res_coeff'] -['path_tpc']['curves'][129]['res_net'] -['path_tpc']['curves'][130]['offset'] +['path_tpc']['curves'][129]['res_net_meters'] +['path_tpc']['curves'][130]['offset_meters'] ['path_tpc']['curves'][130]['res_coeff'] -['path_tpc']['curves'][130]['res_net'] -['path_tpc']['curves'][131]['offset'] +['path_tpc']['curves'][130]['res_net_meters'] +['path_tpc']['curves'][131]['offset_meters'] ['path_tpc']['curves'][131]['res_coeff'] -['path_tpc']['curves'][131]['res_net'] -['path_tpc']['curves'][132]['offset'] +['path_tpc']['curves'][131]['res_net_meters'] +['path_tpc']['curves'][132]['offset_meters'] ['path_tpc']['curves'][132]['res_coeff'] -['path_tpc']['curves'][132]['res_net'] -['path_tpc']['curves'][133]['offset'] +['path_tpc']['curves'][132]['res_net_meters'] +['path_tpc']['curves'][133]['offset_meters'] ['path_tpc']['curves'][133]['res_coeff'] -['path_tpc']['curves'][133]['res_net'] -['path_tpc']['curves'][134]['offset'] +['path_tpc']['curves'][133]['res_net_meters'] +['path_tpc']['curves'][134]['offset_meters'] ['path_tpc']['curves'][134]['res_coeff'] -['path_tpc']['curves'][134]['res_net'] -['path_tpc']['curves'][135]['offset'] +['path_tpc']['curves'][134]['res_net_meters'] +['path_tpc']['curves'][135]['offset_meters'] ['path_tpc']['curves'][135]['res_coeff'] -['path_tpc']['curves'][135]['res_net'] -['path_tpc']['curves'][136]['offset'] +['path_tpc']['curves'][135]['res_net_meters'] +['path_tpc']['curves'][136]['offset_meters'] ['path_tpc']['curves'][136]['res_coeff'] -['path_tpc']['curves'][136]['res_net'] -['path_tpc']['curves'][137]['offset'] +['path_tpc']['curves'][136]['res_net_meters'] +['path_tpc']['curves'][137]['offset_meters'] ['path_tpc']['curves'][137]['res_coeff'] -['path_tpc']['curves'][137]['res_net'] -['path_tpc']['curves'][138]['offset'] +['path_tpc']['curves'][137]['res_net_meters'] +['path_tpc']['curves'][138]['offset_meters'] ['path_tpc']['curves'][138]['res_coeff'] -['path_tpc']['curves'][138]['res_net'] -['path_tpc']['curves'][139]['offset'] +['path_tpc']['curves'][138]['res_net_meters'] +['path_tpc']['curves'][139]['offset_meters'] ['path_tpc']['curves'][139]['res_coeff'] -['path_tpc']['curves'][139]['res_net'] -['path_tpc']['curves'][140]['offset'] +['path_tpc']['curves'][139]['res_net_meters'] +['path_tpc']['curves'][140]['offset_meters'] ['path_tpc']['curves'][140]['res_coeff'] -['path_tpc']['curves'][140]['res_net'] -['path_tpc']['curves'][141]['offset'] +['path_tpc']['curves'][140]['res_net_meters'] +['path_tpc']['curves'][141]['offset_meters'] ['path_tpc']['curves'][141]['res_coeff'] -['path_tpc']['curves'][141]['res_net'] -['path_tpc']['curves'][142]['offset'] +['path_tpc']['curves'][141]['res_net_meters'] +['path_tpc']['curves'][142]['offset_meters'] ['path_tpc']['curves'][142]['res_coeff'] -['path_tpc']['curves'][142]['res_net'] -['path_tpc']['curves'][143]['offset'] +['path_tpc']['curves'][142]['res_net_meters'] +['path_tpc']['curves'][143]['offset_meters'] ['path_tpc']['curves'][143]['res_coeff'] -['path_tpc']['curves'][143]['res_net'] -['path_tpc']['curves'][144]['offset'] +['path_tpc']['curves'][143]['res_net_meters'] +['path_tpc']['curves'][144]['offset_meters'] ['path_tpc']['curves'][144]['res_coeff'] -['path_tpc']['curves'][144]['res_net'] -['path_tpc']['curves'][145]['offset'] +['path_tpc']['curves'][144]['res_net_meters'] +['path_tpc']['curves'][145]['offset_meters'] ['path_tpc']['curves'][145]['res_coeff'] -['path_tpc']['curves'][145]['res_net'] -['path_tpc']['curves'][146]['offset'] +['path_tpc']['curves'][145]['res_net_meters'] +['path_tpc']['curves'][146]['offset_meters'] ['path_tpc']['curves'][146]['res_coeff'] -['path_tpc']['curves'][146]['res_net'] -['path_tpc']['curves'][147]['offset'] +['path_tpc']['curves'][146]['res_net_meters'] +['path_tpc']['curves'][147]['offset_meters'] ['path_tpc']['curves'][147]['res_coeff'] -['path_tpc']['curves'][147]['res_net'] -['path_tpc']['curves'][148]['offset'] +['path_tpc']['curves'][147]['res_net_meters'] +['path_tpc']['curves'][148]['offset_meters'] ['path_tpc']['curves'][148]['res_coeff'] -['path_tpc']['curves'][148]['res_net'] -['path_tpc']['curves'][149]['offset'] +['path_tpc']['curves'][148]['res_net_meters'] +['path_tpc']['curves'][149]['offset_meters'] ['path_tpc']['curves'][149]['res_coeff'] -['path_tpc']['curves'][149]['res_net'] -['path_tpc']['curves'][150]['offset'] +['path_tpc']['curves'][149]['res_net_meters'] +['path_tpc']['curves'][150]['offset_meters'] ['path_tpc']['curves'][150]['res_coeff'] -['path_tpc']['curves'][150]['res_net'] -['path_tpc']['curves'][151]['offset'] +['path_tpc']['curves'][150]['res_net_meters'] +['path_tpc']['curves'][151]['offset_meters'] ['path_tpc']['curves'][151]['res_coeff'] -['path_tpc']['curves'][151]['res_net'] -['path_tpc']['curves'][152]['offset'] +['path_tpc']['curves'][151]['res_net_meters'] +['path_tpc']['curves'][152]['offset_meters'] ['path_tpc']['curves'][152]['res_coeff'] -['path_tpc']['curves'][152]['res_net'] -['path_tpc']['curves'][153]['offset'] +['path_tpc']['curves'][152]['res_net_meters'] +['path_tpc']['curves'][153]['offset_meters'] ['path_tpc']['curves'][153]['res_coeff'] -['path_tpc']['curves'][153]['res_net'] -['path_tpc']['curves'][154]['offset'] +['path_tpc']['curves'][153]['res_net_meters'] +['path_tpc']['curves'][154]['offset_meters'] ['path_tpc']['curves'][154]['res_coeff'] -['path_tpc']['curves'][154]['res_net'] -['path_tpc']['curves'][155]['offset'] +['path_tpc']['curves'][154]['res_net_meters'] +['path_tpc']['curves'][155]['offset_meters'] ['path_tpc']['curves'][155]['res_coeff'] -['path_tpc']['curves'][155]['res_net'] -['path_tpc']['curves'][156]['offset'] +['path_tpc']['curves'][155]['res_net_meters'] +['path_tpc']['curves'][156]['offset_meters'] ['path_tpc']['curves'][156]['res_coeff'] -['path_tpc']['curves'][156]['res_net'] -['path_tpc']['curves'][157]['offset'] +['path_tpc']['curves'][156]['res_net_meters'] +['path_tpc']['curves'][157]['offset_meters'] ['path_tpc']['curves'][157]['res_coeff'] -['path_tpc']['curves'][157]['res_net'] -['path_tpc']['curves'][158]['offset'] +['path_tpc']['curves'][157]['res_net_meters'] +['path_tpc']['curves'][158]['offset_meters'] ['path_tpc']['curves'][158]['res_coeff'] -['path_tpc']['curves'][158]['res_net'] -['path_tpc']['curves'][159]['offset'] +['path_tpc']['curves'][158]['res_net_meters'] +['path_tpc']['curves'][159]['offset_meters'] ['path_tpc']['curves'][159]['res_coeff'] -['path_tpc']['curves'][159]['res_net'] -['path_tpc']['curves'][160]['offset'] +['path_tpc']['curves'][159]['res_net_meters'] +['path_tpc']['curves'][160]['offset_meters'] ['path_tpc']['curves'][160]['res_coeff'] -['path_tpc']['curves'][160]['res_net'] -['path_tpc']['curves'][161]['offset'] +['path_tpc']['curves'][160]['res_net_meters'] +['path_tpc']['curves'][161]['offset_meters'] ['path_tpc']['curves'][161]['res_coeff'] -['path_tpc']['curves'][161]['res_net'] -['path_tpc']['curves'][162]['offset'] +['path_tpc']['curves'][161]['res_net_meters'] +['path_tpc']['curves'][162]['offset_meters'] ['path_tpc']['curves'][162]['res_coeff'] -['path_tpc']['curves'][162]['res_net'] -['path_tpc']['curves'][163]['offset'] +['path_tpc']['curves'][162]['res_net_meters'] +['path_tpc']['curves'][163]['offset_meters'] ['path_tpc']['curves'][163]['res_coeff'] -['path_tpc']['curves'][163]['res_net'] -['path_tpc']['curves'][164]['offset'] +['path_tpc']['curves'][163]['res_net_meters'] +['path_tpc']['curves'][164]['offset_meters'] ['path_tpc']['curves'][164]['res_coeff'] -['path_tpc']['curves'][164]['res_net'] -['path_tpc']['curves'][165]['offset'] +['path_tpc']['curves'][164]['res_net_meters'] +['path_tpc']['curves'][165]['offset_meters'] ['path_tpc']['curves'][165]['res_coeff'] -['path_tpc']['curves'][165]['res_net'] -['path_tpc']['curves'][166]['offset'] +['path_tpc']['curves'][165]['res_net_meters'] +['path_tpc']['curves'][166]['offset_meters'] ['path_tpc']['curves'][166]['res_coeff'] -['path_tpc']['curves'][166]['res_net'] -['path_tpc']['curves'][167]['offset'] +['path_tpc']['curves'][166]['res_net_meters'] +['path_tpc']['curves'][167]['offset_meters'] ['path_tpc']['curves'][167]['res_coeff'] -['path_tpc']['curves'][167]['res_net'] -['path_tpc']['curves'][168]['offset'] +['path_tpc']['curves'][167]['res_net_meters'] +['path_tpc']['curves'][168]['offset_meters'] ['path_tpc']['curves'][168]['res_coeff'] -['path_tpc']['curves'][168]['res_net'] -['path_tpc']['curves'][169]['offset'] +['path_tpc']['curves'][168]['res_net_meters'] +['path_tpc']['curves'][169]['offset_meters'] ['path_tpc']['curves'][169]['res_coeff'] -['path_tpc']['curves'][169]['res_net'] -['path_tpc']['curves'][170]['offset'] +['path_tpc']['curves'][169]['res_net_meters'] +['path_tpc']['curves'][170]['offset_meters'] ['path_tpc']['curves'][170]['res_coeff'] -['path_tpc']['curves'][170]['res_net'] -['path_tpc']['curves'][171]['offset'] +['path_tpc']['curves'][170]['res_net_meters'] +['path_tpc']['curves'][171]['offset_meters'] ['path_tpc']['curves'][171]['res_coeff'] -['path_tpc']['curves'][171]['res_net'] -['path_tpc']['curves'][172]['offset'] +['path_tpc']['curves'][171]['res_net_meters'] +['path_tpc']['curves'][172]['offset_meters'] ['path_tpc']['curves'][172]['res_coeff'] -['path_tpc']['curves'][172]['res_net'] -['path_tpc']['curves'][173]['offset'] +['path_tpc']['curves'][172]['res_net_meters'] +['path_tpc']['curves'][173]['offset_meters'] ['path_tpc']['curves'][173]['res_coeff'] -['path_tpc']['curves'][173]['res_net'] -['path_tpc']['curves'][174]['offset'] +['path_tpc']['curves'][173]['res_net_meters'] +['path_tpc']['curves'][174]['offset_meters'] ['path_tpc']['curves'][174]['res_coeff'] -['path_tpc']['curves'][174]['res_net'] -['path_tpc']['curves'][175]['offset'] +['path_tpc']['curves'][174]['res_net_meters'] +['path_tpc']['curves'][175]['offset_meters'] ['path_tpc']['curves'][175]['res_coeff'] -['path_tpc']['curves'][175]['res_net'] -['path_tpc']['curves'][176]['offset'] +['path_tpc']['curves'][175]['res_net_meters'] +['path_tpc']['curves'][176]['offset_meters'] ['path_tpc']['curves'][176]['res_coeff'] -['path_tpc']['curves'][176]['res_net'] -['path_tpc']['curves'][177]['offset'] +['path_tpc']['curves'][176]['res_net_meters'] +['path_tpc']['curves'][177]['offset_meters'] ['path_tpc']['curves'][177]['res_coeff'] -['path_tpc']['curves'][177]['res_net'] -['path_tpc']['curves'][178]['offset'] +['path_tpc']['curves'][177]['res_net_meters'] +['path_tpc']['curves'][178]['offset_meters'] ['path_tpc']['curves'][178]['res_coeff'] -['path_tpc']['curves'][178]['res_net'] -['path_tpc']['curves'][179]['offset'] +['path_tpc']['curves'][178]['res_net_meters'] +['path_tpc']['curves'][179]['offset_meters'] ['path_tpc']['curves'][179]['res_coeff'] -['path_tpc']['curves'][179]['res_net'] -['path_tpc']['curves'][180]['offset'] +['path_tpc']['curves'][179]['res_net_meters'] +['path_tpc']['curves'][180]['offset_meters'] ['path_tpc']['curves'][180]['res_coeff'] -['path_tpc']['curves'][180]['res_net'] -['path_tpc']['curves'][181]['offset'] +['path_tpc']['curves'][180]['res_net_meters'] +['path_tpc']['curves'][181]['offset_meters'] ['path_tpc']['curves'][181]['res_coeff'] -['path_tpc']['curves'][181]['res_net'] -['path_tpc']['curves'][182]['offset'] +['path_tpc']['curves'][181]['res_net_meters'] +['path_tpc']['curves'][182]['offset_meters'] ['path_tpc']['curves'][182]['res_coeff'] -['path_tpc']['curves'][182]['res_net'] -['path_tpc']['curves'][183]['offset'] +['path_tpc']['curves'][182]['res_net_meters'] +['path_tpc']['curves'][183]['offset_meters'] ['path_tpc']['curves'][183]['res_coeff'] -['path_tpc']['curves'][183]['res_net'] -['path_tpc']['curves'][184]['offset'] +['path_tpc']['curves'][183]['res_net_meters'] +['path_tpc']['curves'][184]['offset_meters'] ['path_tpc']['curves'][184]['res_coeff'] -['path_tpc']['curves'][184]['res_net'] -['path_tpc']['curves'][185]['offset'] +['path_tpc']['curves'][184]['res_net_meters'] +['path_tpc']['curves'][185]['offset_meters'] ['path_tpc']['curves'][185]['res_coeff'] -['path_tpc']['curves'][185]['res_net'] -['path_tpc']['curves'][186]['offset'] +['path_tpc']['curves'][185]['res_net_meters'] +['path_tpc']['curves'][186]['offset_meters'] ['path_tpc']['curves'][186]['res_coeff'] -['path_tpc']['curves'][186]['res_net'] -['path_tpc']['curves'][187]['offset'] +['path_tpc']['curves'][186]['res_net_meters'] +['path_tpc']['curves'][187]['offset_meters'] ['path_tpc']['curves'][187]['res_coeff'] -['path_tpc']['curves'][187]['res_net'] -['path_tpc']['curves'][188]['offset'] +['path_tpc']['curves'][187]['res_net_meters'] +['path_tpc']['curves'][188]['offset_meters'] ['path_tpc']['curves'][188]['res_coeff'] -['path_tpc']['curves'][188]['res_net'] -['path_tpc']['curves'][189]['offset'] +['path_tpc']['curves'][188]['res_net_meters'] +['path_tpc']['curves'][189]['offset_meters'] ['path_tpc']['curves'][189]['res_coeff'] -['path_tpc']['curves'][189]['res_net'] -['path_tpc']['curves'][190]['offset'] +['path_tpc']['curves'][189]['res_net_meters'] +['path_tpc']['curves'][190]['offset_meters'] ['path_tpc']['curves'][190]['res_coeff'] -['path_tpc']['curves'][190]['res_net'] -['path_tpc']['curves'][191]['offset'] +['path_tpc']['curves'][190]['res_net_meters'] +['path_tpc']['curves'][191]['offset_meters'] ['path_tpc']['curves'][191]['res_coeff'] -['path_tpc']['curves'][191]['res_net'] -['path_tpc']['curves'][192]['offset'] +['path_tpc']['curves'][191]['res_net_meters'] +['path_tpc']['curves'][192]['offset_meters'] ['path_tpc']['curves'][192]['res_coeff'] -['path_tpc']['curves'][192]['res_net'] -['path_tpc']['curves'][193]['offset'] +['path_tpc']['curves'][192]['res_net_meters'] +['path_tpc']['curves'][193]['offset_meters'] ['path_tpc']['curves'][193]['res_coeff'] -['path_tpc']['curves'][193]['res_net'] -['path_tpc']['curves'][194]['offset'] +['path_tpc']['curves'][193]['res_net_meters'] +['path_tpc']['curves'][194]['offset_meters'] ['path_tpc']['curves'][194]['res_coeff'] -['path_tpc']['curves'][194]['res_net'] -['path_tpc']['curves'][195]['offset'] +['path_tpc']['curves'][194]['res_net_meters'] +['path_tpc']['curves'][195]['offset_meters'] ['path_tpc']['curves'][195]['res_coeff'] -['path_tpc']['curves'][195]['res_net'] -['path_tpc']['curves'][196]['offset'] +['path_tpc']['curves'][195]['res_net_meters'] +['path_tpc']['curves'][196]['offset_meters'] ['path_tpc']['curves'][196]['res_coeff'] -['path_tpc']['curves'][196]['res_net'] -['path_tpc']['curves'][197]['offset'] +['path_tpc']['curves'][196]['res_net_meters'] +['path_tpc']['curves'][197]['offset_meters'] ['path_tpc']['curves'][197]['res_coeff'] -['path_tpc']['curves'][197]['res_net'] -['path_tpc']['curves'][198]['offset'] +['path_tpc']['curves'][197]['res_net_meters'] +['path_tpc']['curves'][198]['offset_meters'] ['path_tpc']['curves'][198]['res_coeff'] -['path_tpc']['curves'][198]['res_net'] -['path_tpc']['curves'][199]['offset'] +['path_tpc']['curves'][198]['res_net_meters'] +['path_tpc']['curves'][199]['offset_meters'] ['path_tpc']['curves'][199]['res_coeff'] -['path_tpc']['curves'][199]['res_net'] -['path_tpc']['curves'][200]['offset'] +['path_tpc']['curves'][199]['res_net_meters'] +['path_tpc']['curves'][200]['offset_meters'] ['path_tpc']['curves'][200]['res_coeff'] -['path_tpc']['curves'][200]['res_net'] -['path_tpc']['curves'][201]['offset'] +['path_tpc']['curves'][200]['res_net_meters'] +['path_tpc']['curves'][201]['offset_meters'] ['path_tpc']['curves'][201]['res_coeff'] -['path_tpc']['curves'][201]['res_net'] -['path_tpc']['curves'][202]['offset'] +['path_tpc']['curves'][201]['res_net_meters'] +['path_tpc']['curves'][202]['offset_meters'] ['path_tpc']['curves'][202]['res_coeff'] -['path_tpc']['curves'][202]['res_net'] -['path_tpc']['curves'][203]['offset'] +['path_tpc']['curves'][202]['res_net_meters'] +['path_tpc']['curves'][203]['offset_meters'] ['path_tpc']['curves'][203]['res_coeff'] -['path_tpc']['curves'][203]['res_net'] -['path_tpc']['curves'][204]['offset'] +['path_tpc']['curves'][203]['res_net_meters'] +['path_tpc']['curves'][204]['offset_meters'] ['path_tpc']['curves'][204]['res_coeff'] -['path_tpc']['curves'][204]['res_net'] -['path_tpc']['curves'][205]['offset'] +['path_tpc']['curves'][204]['res_net_meters'] +['path_tpc']['curves'][205]['offset_meters'] ['path_tpc']['curves'][205]['res_coeff'] -['path_tpc']['curves'][205]['res_net'] -['path_tpc']['curves'][206]['offset'] +['path_tpc']['curves'][205]['res_net_meters'] +['path_tpc']['curves'][206]['offset_meters'] ['path_tpc']['curves'][206]['res_coeff'] -['path_tpc']['curves'][206]['res_net'] -['path_tpc']['curves'][207]['offset'] +['path_tpc']['curves'][206]['res_net_meters'] +['path_tpc']['curves'][207]['offset_meters'] ['path_tpc']['curves'][207]['res_coeff'] -['path_tpc']['curves'][207]['res_net'] -['path_tpc']['curves'][208]['offset'] +['path_tpc']['curves'][207]['res_net_meters'] +['path_tpc']['curves'][208]['offset_meters'] ['path_tpc']['curves'][208]['res_coeff'] -['path_tpc']['curves'][208]['res_net'] -['path_tpc']['curves'][209]['offset'] +['path_tpc']['curves'][208]['res_net_meters'] +['path_tpc']['curves'][209]['offset_meters'] ['path_tpc']['curves'][209]['res_coeff'] -['path_tpc']['curves'][209]['res_net'] -['path_tpc']['curves'][210]['offset'] +['path_tpc']['curves'][209]['res_net_meters'] +['path_tpc']['curves'][210]['offset_meters'] ['path_tpc']['curves'][210]['res_coeff'] -['path_tpc']['curves'][210]['res_net'] -['path_tpc']['curves'][211]['offset'] +['path_tpc']['curves'][210]['res_net_meters'] +['path_tpc']['curves'][211]['offset_meters'] ['path_tpc']['curves'][211]['res_coeff'] -['path_tpc']['curves'][211]['res_net'] -['path_tpc']['curves'][212]['offset'] +['path_tpc']['curves'][211]['res_net_meters'] +['path_tpc']['curves'][212]['offset_meters'] ['path_tpc']['curves'][212]['res_coeff'] -['path_tpc']['curves'][212]['res_net'] -['path_tpc']['curves'][213]['offset'] +['path_tpc']['curves'][212]['res_net_meters'] +['path_tpc']['curves'][213]['offset_meters'] ['path_tpc']['curves'][213]['res_coeff'] -['path_tpc']['curves'][213]['res_net'] -['path_tpc']['curves'][214]['offset'] +['path_tpc']['curves'][213]['res_net_meters'] +['path_tpc']['curves'][214]['offset_meters'] ['path_tpc']['curves'][214]['res_coeff'] -['path_tpc']['curves'][214]['res_net'] -['path_tpc']['curves'][215]['offset'] +['path_tpc']['curves'][214]['res_net_meters'] +['path_tpc']['curves'][215]['offset_meters'] ['path_tpc']['curves'][215]['res_coeff'] -['path_tpc']['curves'][215]['res_net'] -['path_tpc']['curves'][216]['offset'] +['path_tpc']['curves'][215]['res_net_meters'] +['path_tpc']['curves'][216]['offset_meters'] ['path_tpc']['curves'][216]['res_coeff'] -['path_tpc']['curves'][216]['res_net'] -['path_tpc']['curves'][217]['offset'] +['path_tpc']['curves'][216]['res_net_meters'] +['path_tpc']['curves'][217]['offset_meters'] ['path_tpc']['curves'][217]['res_coeff'] -['path_tpc']['curves'][217]['res_net'] -['path_tpc']['curves'][218]['offset'] +['path_tpc']['curves'][217]['res_net_meters'] +['path_tpc']['curves'][218]['offset_meters'] ['path_tpc']['curves'][218]['res_coeff'] -['path_tpc']['curves'][218]['res_net'] -['path_tpc']['curves'][219]['offset'] +['path_tpc']['curves'][218]['res_net_meters'] +['path_tpc']['curves'][219]['offset_meters'] ['path_tpc']['curves'][219]['res_coeff'] -['path_tpc']['curves'][219]['res_net'] -['path_tpc']['curves'][220]['offset'] +['path_tpc']['curves'][219]['res_net_meters'] +['path_tpc']['curves'][220]['offset_meters'] ['path_tpc']['curves'][220]['res_coeff'] -['path_tpc']['curves'][220]['res_net'] -['path_tpc']['curves'][221]['offset'] +['path_tpc']['curves'][220]['res_net_meters'] +['path_tpc']['curves'][221]['offset_meters'] ['path_tpc']['curves'][221]['res_coeff'] -['path_tpc']['curves'][221]['res_net'] -['path_tpc']['curves'][222]['offset'] +['path_tpc']['curves'][221]['res_net_meters'] +['path_tpc']['curves'][222]['offset_meters'] ['path_tpc']['curves'][222]['res_coeff'] -['path_tpc']['curves'][222]['res_net'] -['path_tpc']['curves'][223]['offset'] +['path_tpc']['curves'][222]['res_net_meters'] +['path_tpc']['curves'][223]['offset_meters'] ['path_tpc']['curves'][223]['res_coeff'] -['path_tpc']['curves'][223]['res_net'] -['path_tpc']['curves'][224]['offset'] +['path_tpc']['curves'][223]['res_net_meters'] +['path_tpc']['curves'][224]['offset_meters'] ['path_tpc']['curves'][224]['res_coeff'] -['path_tpc']['curves'][224]['res_net'] -['path_tpc']['curves'][225]['offset'] +['path_tpc']['curves'][224]['res_net_meters'] +['path_tpc']['curves'][225]['offset_meters'] ['path_tpc']['curves'][225]['res_coeff'] -['path_tpc']['curves'][225]['res_net'] -['path_tpc']['curves'][226]['offset'] +['path_tpc']['curves'][225]['res_net_meters'] +['path_tpc']['curves'][226]['offset_meters'] ['path_tpc']['curves'][226]['res_coeff'] -['path_tpc']['curves'][226]['res_net'] -['path_tpc']['curves'][227]['offset'] +['path_tpc']['curves'][226]['res_net_meters'] +['path_tpc']['curves'][227]['offset_meters'] ['path_tpc']['curves'][227]['res_coeff'] -['path_tpc']['curves'][227]['res_net'] -['path_tpc']['curves'][228]['offset'] +['path_tpc']['curves'][227]['res_net_meters'] +['path_tpc']['curves'][228]['offset_meters'] ['path_tpc']['curves'][228]['res_coeff'] -['path_tpc']['curves'][228]['res_net'] -['path_tpc']['curves'][229]['offset'] +['path_tpc']['curves'][228]['res_net_meters'] +['path_tpc']['curves'][229]['offset_meters'] ['path_tpc']['curves'][229]['res_coeff'] -['path_tpc']['curves'][229]['res_net'] -['path_tpc']['curves'][230]['offset'] +['path_tpc']['curves'][229]['res_net_meters'] +['path_tpc']['curves'][230]['offset_meters'] ['path_tpc']['curves'][230]['res_coeff'] -['path_tpc']['curves'][230]['res_net'] -['path_tpc']['curves'][231]['offset'] +['path_tpc']['curves'][230]['res_net_meters'] +['path_tpc']['curves'][231]['offset_meters'] ['path_tpc']['curves'][231]['res_coeff'] -['path_tpc']['curves'][231]['res_net'] -['path_tpc']['curves'][232]['offset'] +['path_tpc']['curves'][231]['res_net_meters'] +['path_tpc']['curves'][232]['offset_meters'] ['path_tpc']['curves'][232]['res_coeff'] -['path_tpc']['curves'][232]['res_net'] -['path_tpc']['curves'][233]['offset'] +['path_tpc']['curves'][232]['res_net_meters'] +['path_tpc']['curves'][233]['offset_meters'] ['path_tpc']['curves'][233]['res_coeff'] -['path_tpc']['curves'][233]['res_net'] -['path_tpc']['curves'][234]['offset'] +['path_tpc']['curves'][233]['res_net_meters'] +['path_tpc']['curves'][234]['offset_meters'] ['path_tpc']['curves'][234]['res_coeff'] -['path_tpc']['curves'][234]['res_net'] -['path_tpc']['curves'][235]['offset'] +['path_tpc']['curves'][234]['res_net_meters'] +['path_tpc']['curves'][235]['offset_meters'] ['path_tpc']['curves'][235]['res_coeff'] -['path_tpc']['curves'][235]['res_net'] -['path_tpc']['curves'][236]['offset'] +['path_tpc']['curves'][235]['res_net_meters'] +['path_tpc']['curves'][236]['offset_meters'] ['path_tpc']['curves'][236]['res_coeff'] -['path_tpc']['curves'][236]['res_net'] -['path_tpc']['curves'][237]['offset'] +['path_tpc']['curves'][236]['res_net_meters'] +['path_tpc']['curves'][237]['offset_meters'] ['path_tpc']['curves'][237]['res_coeff'] -['path_tpc']['curves'][237]['res_net'] -['path_tpc']['curves'][238]['offset'] +['path_tpc']['curves'][237]['res_net_meters'] +['path_tpc']['curves'][238]['offset_meters'] ['path_tpc']['curves'][238]['res_coeff'] -['path_tpc']['curves'][238]['res_net'] -['path_tpc']['curves'][239]['offset'] +['path_tpc']['curves'][238]['res_net_meters'] +['path_tpc']['curves'][239]['offset_meters'] ['path_tpc']['curves'][239]['res_coeff'] -['path_tpc']['curves'][239]['res_net'] -['path_tpc']['curves'][240]['offset'] +['path_tpc']['curves'][239]['res_net_meters'] +['path_tpc']['curves'][240]['offset_meters'] ['path_tpc']['curves'][240]['res_coeff'] -['path_tpc']['curves'][240]['res_net'] -['path_tpc']['curves'][241]['offset'] +['path_tpc']['curves'][240]['res_net_meters'] +['path_tpc']['curves'][241]['offset_meters'] ['path_tpc']['curves'][241]['res_coeff'] -['path_tpc']['curves'][241]['res_net'] -['path_tpc']['curves'][242]['offset'] +['path_tpc']['curves'][241]['res_net_meters'] +['path_tpc']['curves'][242]['offset_meters'] ['path_tpc']['curves'][242]['res_coeff'] -['path_tpc']['curves'][242]['res_net'] -['path_tpc']['curves'][243]['offset'] +['path_tpc']['curves'][242]['res_net_meters'] +['path_tpc']['curves'][243]['offset_meters'] ['path_tpc']['curves'][243]['res_coeff'] -['path_tpc']['curves'][243]['res_net'] -['path_tpc']['curves'][244]['offset'] +['path_tpc']['curves'][243]['res_net_meters'] +['path_tpc']['curves'][244]['offset_meters'] ['path_tpc']['curves'][244]['res_coeff'] -['path_tpc']['curves'][244]['res_net'] -['path_tpc']['curves'][245]['offset'] +['path_tpc']['curves'][244]['res_net_meters'] +['path_tpc']['curves'][245]['offset_meters'] ['path_tpc']['curves'][245]['res_coeff'] -['path_tpc']['curves'][245]['res_net'] -['path_tpc']['curves'][246]['offset'] +['path_tpc']['curves'][245]['res_net_meters'] +['path_tpc']['curves'][246]['offset_meters'] ['path_tpc']['curves'][246]['res_coeff'] -['path_tpc']['curves'][246]['res_net'] -['path_tpc']['curves'][247]['offset'] +['path_tpc']['curves'][246]['res_net_meters'] +['path_tpc']['curves'][247]['offset_meters'] ['path_tpc']['curves'][247]['res_coeff'] -['path_tpc']['curves'][247]['res_net'] -['path_tpc']['curves'][248]['offset'] +['path_tpc']['curves'][247]['res_net_meters'] +['path_tpc']['curves'][248]['offset_meters'] ['path_tpc']['curves'][248]['res_coeff'] -['path_tpc']['curves'][248]['res_net'] -['path_tpc']['curves'][249]['offset'] +['path_tpc']['curves'][248]['res_net_meters'] +['path_tpc']['curves'][249]['offset_meters'] ['path_tpc']['curves'][249]['res_coeff'] -['path_tpc']['curves'][249]['res_net'] -['path_tpc']['curves'][250]['offset'] +['path_tpc']['curves'][249]['res_net_meters'] +['path_tpc']['curves'][250]['offset_meters'] ['path_tpc']['curves'][250]['res_coeff'] -['path_tpc']['curves'][250]['res_net'] -['path_tpc']['curves'][251]['offset'] +['path_tpc']['curves'][250]['res_net_meters'] +['path_tpc']['curves'][251]['offset_meters'] ['path_tpc']['curves'][251]['res_coeff'] -['path_tpc']['curves'][251]['res_net'] -['path_tpc']['curves'][252]['offset'] +['path_tpc']['curves'][251]['res_net_meters'] +['path_tpc']['curves'][252]['offset_meters'] ['path_tpc']['curves'][252]['res_coeff'] -['path_tpc']['curves'][252]['res_net'] -['path_tpc']['curves'][253]['offset'] +['path_tpc']['curves'][252]['res_net_meters'] +['path_tpc']['curves'][253]['offset_meters'] ['path_tpc']['curves'][253]['res_coeff'] -['path_tpc']['curves'][253]['res_net'] -['path_tpc']['curves'][254]['offset'] +['path_tpc']['curves'][253]['res_net_meters'] +['path_tpc']['curves'][254]['offset_meters'] ['path_tpc']['curves'][254]['res_coeff'] -['path_tpc']['curves'][254]['res_net'] -['path_tpc']['curves'][255]['offset'] +['path_tpc']['curves'][254]['res_net_meters'] +['path_tpc']['curves'][255]['offset_meters'] ['path_tpc']['curves'][255]['res_coeff'] -['path_tpc']['curves'][255]['res_net'] -['path_tpc']['curves'][256]['offset'] +['path_tpc']['curves'][255]['res_net_meters'] +['path_tpc']['curves'][256]['offset_meters'] ['path_tpc']['curves'][256]['res_coeff'] -['path_tpc']['curves'][256]['res_net'] -['path_tpc']['curves'][257]['offset'] +['path_tpc']['curves'][256]['res_net_meters'] +['path_tpc']['curves'][257]['offset_meters'] ['path_tpc']['curves'][257]['res_coeff'] -['path_tpc']['curves'][257]['res_net'] -['path_tpc']['curves'][258]['offset'] +['path_tpc']['curves'][257]['res_net_meters'] +['path_tpc']['curves'][258]['offset_meters'] ['path_tpc']['curves'][258]['res_coeff'] -['path_tpc']['curves'][258]['res_net'] -['path_tpc']['curves'][259]['offset'] +['path_tpc']['curves'][258]['res_net_meters'] +['path_tpc']['curves'][259]['offset_meters'] ['path_tpc']['curves'][259]['res_coeff'] -['path_tpc']['curves'][259]['res_net'] -['path_tpc']['curves'][260]['offset'] +['path_tpc']['curves'][259]['res_net_meters'] +['path_tpc']['curves'][260]['offset_meters'] ['path_tpc']['curves'][260]['res_coeff'] -['path_tpc']['curves'][260]['res_net'] -['path_tpc']['curves'][261]['offset'] +['path_tpc']['curves'][260]['res_net_meters'] +['path_tpc']['curves'][261]['offset_meters'] ['path_tpc']['curves'][261]['res_coeff'] -['path_tpc']['curves'][261]['res_net'] -['path_tpc']['curves'][262]['offset'] +['path_tpc']['curves'][261]['res_net_meters'] +['path_tpc']['curves'][262]['offset_meters'] ['path_tpc']['curves'][262]['res_coeff'] -['path_tpc']['curves'][262]['res_net'] -['path_tpc']['curves'][263]['offset'] +['path_tpc']['curves'][262]['res_net_meters'] +['path_tpc']['curves'][263]['offset_meters'] ['path_tpc']['curves'][263]['res_coeff'] -['path_tpc']['curves'][263]['res_net'] -['path_tpc']['curves'][264]['offset'] +['path_tpc']['curves'][263]['res_net_meters'] +['path_tpc']['curves'][264]['offset_meters'] ['path_tpc']['curves'][264]['res_coeff'] -['path_tpc']['curves'][264]['res_net'] -['path_tpc']['curves'][265]['offset'] +['path_tpc']['curves'][264]['res_net_meters'] +['path_tpc']['curves'][265]['offset_meters'] ['path_tpc']['curves'][265]['res_coeff'] -['path_tpc']['curves'][265]['res_net'] -['path_tpc']['curves'][266]['offset'] +['path_tpc']['curves'][265]['res_net_meters'] +['path_tpc']['curves'][266]['offset_meters'] ['path_tpc']['curves'][266]['res_coeff'] -['path_tpc']['curves'][266]['res_net'] -['path_tpc']['curves'][267]['offset'] +['path_tpc']['curves'][266]['res_net_meters'] +['path_tpc']['curves'][267]['offset_meters'] ['path_tpc']['curves'][267]['res_coeff'] -['path_tpc']['curves'][267]['res_net'] -['path_tpc']['curves'][268]['offset'] +['path_tpc']['curves'][267]['res_net_meters'] +['path_tpc']['curves'][268]['offset_meters'] ['path_tpc']['curves'][268]['res_coeff'] -['path_tpc']['curves'][268]['res_net'] -['path_tpc']['curves'][269]['offset'] +['path_tpc']['curves'][268]['res_net_meters'] +['path_tpc']['curves'][269]['offset_meters'] ['path_tpc']['curves'][269]['res_coeff'] -['path_tpc']['curves'][269]['res_net'] -['path_tpc']['curves'][270]['offset'] +['path_tpc']['curves'][269]['res_net_meters'] +['path_tpc']['curves'][270]['offset_meters'] ['path_tpc']['curves'][270]['res_coeff'] -['path_tpc']['curves'][270]['res_net'] -['path_tpc']['curves'][271]['offset'] +['path_tpc']['curves'][270]['res_net_meters'] +['path_tpc']['curves'][271]['offset_meters'] ['path_tpc']['curves'][271]['res_coeff'] -['path_tpc']['curves'][271]['res_net'] -['path_tpc']['curves'][272]['offset'] +['path_tpc']['curves'][271]['res_net_meters'] +['path_tpc']['curves'][272]['offset_meters'] ['path_tpc']['curves'][272]['res_coeff'] -['path_tpc']['curves'][272]['res_net'] -['path_tpc']['curves'][273]['offset'] +['path_tpc']['curves'][272]['res_net_meters'] +['path_tpc']['curves'][273]['offset_meters'] ['path_tpc']['curves'][273]['res_coeff'] -['path_tpc']['curves'][273]['res_net'] -['path_tpc']['curves'][274]['offset'] +['path_tpc']['curves'][273]['res_net_meters'] +['path_tpc']['curves'][274]['offset_meters'] ['path_tpc']['curves'][274]['res_coeff'] -['path_tpc']['curves'][274]['res_net'] -['path_tpc']['curves'][275]['offset'] +['path_tpc']['curves'][274]['res_net_meters'] +['path_tpc']['curves'][275]['offset_meters'] ['path_tpc']['curves'][275]['res_coeff'] -['path_tpc']['curves'][275]['res_net'] -['path_tpc']['curves'][276]['offset'] +['path_tpc']['curves'][275]['res_net_meters'] +['path_tpc']['curves'][276]['offset_meters'] ['path_tpc']['curves'][276]['res_coeff'] -['path_tpc']['curves'][276]['res_net'] -['path_tpc']['curves'][277]['offset'] +['path_tpc']['curves'][276]['res_net_meters'] +['path_tpc']['curves'][277]['offset_meters'] ['path_tpc']['curves'][277]['res_coeff'] -['path_tpc']['curves'][277]['res_net'] -['path_tpc']['curves'][278]['offset'] +['path_tpc']['curves'][277]['res_net_meters'] +['path_tpc']['curves'][278]['offset_meters'] ['path_tpc']['curves'][278]['res_coeff'] -['path_tpc']['curves'][278]['res_net'] -['path_tpc']['curves'][279]['offset'] +['path_tpc']['curves'][278]['res_net_meters'] +['path_tpc']['curves'][279]['offset_meters'] ['path_tpc']['curves'][279]['res_coeff'] -['path_tpc']['curves'][279]['res_net'] -['path_tpc']['curves'][280]['offset'] +['path_tpc']['curves'][279]['res_net_meters'] +['path_tpc']['curves'][280]['offset_meters'] ['path_tpc']['curves'][280]['res_coeff'] -['path_tpc']['curves'][280]['res_net'] -['path_tpc']['curves'][281]['offset'] +['path_tpc']['curves'][280]['res_net_meters'] +['path_tpc']['curves'][281]['offset_meters'] ['path_tpc']['curves'][281]['res_coeff'] -['path_tpc']['curves'][281]['res_net'] -['path_tpc']['curves'][282]['offset'] +['path_tpc']['curves'][281]['res_net_meters'] +['path_tpc']['curves'][282]['offset_meters'] ['path_tpc']['curves'][282]['res_coeff'] -['path_tpc']['curves'][282]['res_net'] -['path_tpc']['curves'][283]['offset'] +['path_tpc']['curves'][282]['res_net_meters'] +['path_tpc']['curves'][283]['offset_meters'] ['path_tpc']['curves'][283]['res_coeff'] -['path_tpc']['curves'][283]['res_net'] -['path_tpc']['curves'][284]['offset'] +['path_tpc']['curves'][283]['res_net_meters'] +['path_tpc']['curves'][284]['offset_meters'] ['path_tpc']['curves'][284]['res_coeff'] -['path_tpc']['curves'][284]['res_net'] -['path_tpc']['curves'][285]['offset'] +['path_tpc']['curves'][284]['res_net_meters'] +['path_tpc']['curves'][285]['offset_meters'] ['path_tpc']['curves'][285]['res_coeff'] -['path_tpc']['curves'][285]['res_net'] -['path_tpc']['curves'][286]['offset'] +['path_tpc']['curves'][285]['res_net_meters'] +['path_tpc']['curves'][286]['offset_meters'] ['path_tpc']['curves'][286]['res_coeff'] -['path_tpc']['curves'][286]['res_net'] -['path_tpc']['curves'][287]['offset'] +['path_tpc']['curves'][286]['res_net_meters'] +['path_tpc']['curves'][287]['offset_meters'] ['path_tpc']['curves'][287]['res_coeff'] -['path_tpc']['curves'][287]['res_net'] -['path_tpc']['curves'][288]['offset'] +['path_tpc']['curves'][287]['res_net_meters'] +['path_tpc']['curves'][288]['offset_meters'] ['path_tpc']['curves'][288]['res_coeff'] -['path_tpc']['curves'][288]['res_net'] -['path_tpc']['curves'][289]['offset'] +['path_tpc']['curves'][288]['res_net_meters'] +['path_tpc']['curves'][289]['offset_meters'] ['path_tpc']['curves'][289]['res_coeff'] -['path_tpc']['curves'][289]['res_net'] -['path_tpc']['curves'][290]['offset'] +['path_tpc']['curves'][289]['res_net_meters'] +['path_tpc']['curves'][290]['offset_meters'] ['path_tpc']['curves'][290]['res_coeff'] -['path_tpc']['curves'][290]['res_net'] -['path_tpc']['curves'][291]['offset'] +['path_tpc']['curves'][290]['res_net_meters'] +['path_tpc']['curves'][291]['offset_meters'] ['path_tpc']['curves'][291]['res_coeff'] -['path_tpc']['curves'][291]['res_net'] -['path_tpc']['curves'][292]['offset'] +['path_tpc']['curves'][291]['res_net_meters'] +['path_tpc']['curves'][292]['offset_meters'] ['path_tpc']['curves'][292]['res_coeff'] -['path_tpc']['curves'][292]['res_net'] -['path_tpc']['curves'][293]['offset'] +['path_tpc']['curves'][292]['res_net_meters'] +['path_tpc']['curves'][293]['offset_meters'] ['path_tpc']['curves'][293]['res_coeff'] -['path_tpc']['curves'][293]['res_net'] -['path_tpc']['curves'][294]['offset'] +['path_tpc']['curves'][293]['res_net_meters'] +['path_tpc']['curves'][294]['offset_meters'] ['path_tpc']['curves'][294]['res_coeff'] -['path_tpc']['curves'][294]['res_net'] -['path_tpc']['curves'][295]['offset'] +['path_tpc']['curves'][294]['res_net_meters'] +['path_tpc']['curves'][295]['offset_meters'] ['path_tpc']['curves'][295]['res_coeff'] -['path_tpc']['curves'][295]['res_net'] -['path_tpc']['curves'][296]['offset'] +['path_tpc']['curves'][295]['res_net_meters'] +['path_tpc']['curves'][296]['offset_meters'] ['path_tpc']['curves'][296]['res_coeff'] -['path_tpc']['curves'][296]['res_net'] -['path_tpc']['curves'][297]['offset'] +['path_tpc']['curves'][296]['res_net_meters'] +['path_tpc']['curves'][297]['offset_meters'] ['path_tpc']['curves'][297]['res_coeff'] -['path_tpc']['curves'][297]['res_net'] -['path_tpc']['curves'][298]['offset'] +['path_tpc']['curves'][297]['res_net_meters'] +['path_tpc']['curves'][298]['offset_meters'] ['path_tpc']['curves'][298]['res_coeff'] -['path_tpc']['curves'][298]['res_net'] -['path_tpc']['curves'][299]['offset'] +['path_tpc']['curves'][298]['res_net_meters'] +['path_tpc']['curves'][299]['offset_meters'] ['path_tpc']['curves'][299]['res_coeff'] -['path_tpc']['curves'][299]['res_net'] -['path_tpc']['curves'][300]['offset'] +['path_tpc']['curves'][299]['res_net_meters'] +['path_tpc']['curves'][300]['offset_meters'] ['path_tpc']['curves'][300]['res_coeff'] -['path_tpc']['curves'][300]['res_net'] -['path_tpc']['curves'][301]['offset'] +['path_tpc']['curves'][300]['res_net_meters'] +['path_tpc']['curves'][301]['offset_meters'] ['path_tpc']['curves'][301]['res_coeff'] -['path_tpc']['curves'][301]['res_net'] -['path_tpc']['curves'][302]['offset'] +['path_tpc']['curves'][301]['res_net_meters'] +['path_tpc']['curves'][302]['offset_meters'] ['path_tpc']['curves'][302]['res_coeff'] -['path_tpc']['curves'][302]['res_net'] -['path_tpc']['curves'][303]['offset'] +['path_tpc']['curves'][302]['res_net_meters'] +['path_tpc']['curves'][303]['offset_meters'] ['path_tpc']['curves'][303]['res_coeff'] -['path_tpc']['curves'][303]['res_net'] -['path_tpc']['curves'][304]['offset'] +['path_tpc']['curves'][303]['res_net_meters'] +['path_tpc']['curves'][304]['offset_meters'] ['path_tpc']['curves'][304]['res_coeff'] -['path_tpc']['curves'][304]['res_net'] -['path_tpc']['curves'][305]['offset'] +['path_tpc']['curves'][304]['res_net_meters'] +['path_tpc']['curves'][305]['offset_meters'] ['path_tpc']['curves'][305]['res_coeff'] -['path_tpc']['curves'][305]['res_net'] -['path_tpc']['curves'][306]['offset'] +['path_tpc']['curves'][305]['res_net_meters'] +['path_tpc']['curves'][306]['offset_meters'] ['path_tpc']['curves'][306]['res_coeff'] -['path_tpc']['curves'][306]['res_net'] -['path_tpc']['curves'][307]['offset'] +['path_tpc']['curves'][306]['res_net_meters'] +['path_tpc']['curves'][307]['offset_meters'] ['path_tpc']['curves'][307]['res_coeff'] -['path_tpc']['curves'][307]['res_net'] -['path_tpc']['curves'][308]['offset'] +['path_tpc']['curves'][307]['res_net_meters'] +['path_tpc']['curves'][308]['offset_meters'] ['path_tpc']['curves'][308]['res_coeff'] -['path_tpc']['curves'][308]['res_net'] -['path_tpc']['curves'][309]['offset'] +['path_tpc']['curves'][308]['res_net_meters'] +['path_tpc']['curves'][309]['offset_meters'] ['path_tpc']['curves'][309]['res_coeff'] -['path_tpc']['curves'][309]['res_net'] -['path_tpc']['curves'][310]['offset'] +['path_tpc']['curves'][309]['res_net_meters'] +['path_tpc']['curves'][310]['offset_meters'] ['path_tpc']['curves'][310]['res_coeff'] -['path_tpc']['curves'][310]['res_net'] -['path_tpc']['curves'][311]['offset'] +['path_tpc']['curves'][310]['res_net_meters'] +['path_tpc']['curves'][311]['offset_meters'] ['path_tpc']['curves'][311]['res_coeff'] -['path_tpc']['curves'][311]['res_net'] -['path_tpc']['curves'][312]['offset'] +['path_tpc']['curves'][311]['res_net_meters'] +['path_tpc']['curves'][312]['offset_meters'] ['path_tpc']['curves'][312]['res_coeff'] -['path_tpc']['curves'][312]['res_net'] -['path_tpc']['curves'][313]['offset'] +['path_tpc']['curves'][312]['res_net_meters'] +['path_tpc']['curves'][313]['offset_meters'] ['path_tpc']['curves'][313]['res_coeff'] -['path_tpc']['curves'][313]['res_net'] -['path_tpc']['curves'][314]['offset'] +['path_tpc']['curves'][313]['res_net_meters'] +['path_tpc']['curves'][314]['offset_meters'] ['path_tpc']['curves'][314]['res_coeff'] -['path_tpc']['curves'][314]['res_net'] -['path_tpc']['curves'][315]['offset'] +['path_tpc']['curves'][314]['res_net_meters'] +['path_tpc']['curves'][315]['offset_meters'] ['path_tpc']['curves'][315]['res_coeff'] -['path_tpc']['curves'][315]['res_net'] -['path_tpc']['curves'][316]['offset'] +['path_tpc']['curves'][315]['res_net_meters'] +['path_tpc']['curves'][316]['offset_meters'] ['path_tpc']['curves'][316]['res_coeff'] -['path_tpc']['curves'][316]['res_net'] -['path_tpc']['curves'][317]['offset'] +['path_tpc']['curves'][316]['res_net_meters'] +['path_tpc']['curves'][317]['offset_meters'] ['path_tpc']['curves'][317]['res_coeff'] -['path_tpc']['curves'][317]['res_net'] -['path_tpc']['curves'][318]['offset'] +['path_tpc']['curves'][317]['res_net_meters'] +['path_tpc']['curves'][318]['offset_meters'] ['path_tpc']['curves'][318]['res_coeff'] -['path_tpc']['curves'][318]['res_net'] -['path_tpc']['curves'][319]['offset'] +['path_tpc']['curves'][318]['res_net_meters'] +['path_tpc']['curves'][319]['offset_meters'] ['path_tpc']['curves'][319]['res_coeff'] -['path_tpc']['curves'][319]['res_net'] -['path_tpc']['curves'][320]['offset'] +['path_tpc']['curves'][319]['res_net_meters'] +['path_tpc']['curves'][320]['offset_meters'] ['path_tpc']['curves'][320]['res_coeff'] -['path_tpc']['curves'][320]['res_net'] -['path_tpc']['curves'][321]['offset'] +['path_tpc']['curves'][320]['res_net_meters'] +['path_tpc']['curves'][321]['offset_meters'] ['path_tpc']['curves'][321]['res_coeff'] -['path_tpc']['curves'][321]['res_net'] -['path_tpc']['curves'][322]['offset'] +['path_tpc']['curves'][321]['res_net_meters'] +['path_tpc']['curves'][322]['offset_meters'] ['path_tpc']['curves'][322]['res_coeff'] -['path_tpc']['curves'][322]['res_net'] -['path_tpc']['curves'][323]['offset'] +['path_tpc']['curves'][322]['res_net_meters'] +['path_tpc']['curves'][323]['offset_meters'] ['path_tpc']['curves'][323]['res_coeff'] -['path_tpc']['curves'][323]['res_net'] -['path_tpc']['curves'][324]['offset'] +['path_tpc']['curves'][323]['res_net_meters'] +['path_tpc']['curves'][324]['offset_meters'] ['path_tpc']['curves'][324]['res_coeff'] -['path_tpc']['curves'][324]['res_net'] -['path_tpc']['curves'][325]['offset'] +['path_tpc']['curves'][324]['res_net_meters'] +['path_tpc']['curves'][325]['offset_meters'] ['path_tpc']['curves'][325]['res_coeff'] -['path_tpc']['curves'][325]['res_net'] -['path_tpc']['curves'][326]['offset'] +['path_tpc']['curves'][325]['res_net_meters'] +['path_tpc']['curves'][326]['offset_meters'] ['path_tpc']['curves'][326]['res_coeff'] -['path_tpc']['curves'][326]['res_net'] -['path_tpc']['curves'][327]['offset'] +['path_tpc']['curves'][326]['res_net_meters'] +['path_tpc']['curves'][327]['offset_meters'] ['path_tpc']['curves'][327]['res_coeff'] -['path_tpc']['curves'][327]['res_net'] -['path_tpc']['curves'][328]['offset'] +['path_tpc']['curves'][327]['res_net_meters'] +['path_tpc']['curves'][328]['offset_meters'] ['path_tpc']['curves'][328]['res_coeff'] -['path_tpc']['curves'][328]['res_net'] -['path_tpc']['curves'][329]['offset'] +['path_tpc']['curves'][328]['res_net_meters'] +['path_tpc']['curves'][329]['offset_meters'] ['path_tpc']['curves'][329]['res_coeff'] -['path_tpc']['curves'][329]['res_net'] -['path_tpc']['curves'][330]['offset'] +['path_tpc']['curves'][329]['res_net_meters'] +['path_tpc']['curves'][330]['offset_meters'] ['path_tpc']['curves'][330]['res_coeff'] -['path_tpc']['curves'][330]['res_net'] -['path_tpc']['curves'][331]['offset'] +['path_tpc']['curves'][330]['res_net_meters'] +['path_tpc']['curves'][331]['offset_meters'] ['path_tpc']['curves'][331]['res_coeff'] -['path_tpc']['curves'][331]['res_net'] -['path_tpc']['curves'][332]['offset'] +['path_tpc']['curves'][331]['res_net_meters'] +['path_tpc']['curves'][332]['offset_meters'] ['path_tpc']['curves'][332]['res_coeff'] -['path_tpc']['curves'][332]['res_net'] -['path_tpc']['curves'][333]['offset'] +['path_tpc']['curves'][332]['res_net_meters'] +['path_tpc']['curves'][333]['offset_meters'] ['path_tpc']['curves'][333]['res_coeff'] -['path_tpc']['curves'][333]['res_net'] -['path_tpc']['curves'][334]['offset'] +['path_tpc']['curves'][333]['res_net_meters'] +['path_tpc']['curves'][334]['offset_meters'] ['path_tpc']['curves'][334]['res_coeff'] -['path_tpc']['curves'][334]['res_net'] -['path_tpc']['curves'][335]['offset'] +['path_tpc']['curves'][334]['res_net_meters'] +['path_tpc']['curves'][335]['offset_meters'] ['path_tpc']['curves'][335]['res_coeff'] -['path_tpc']['curves'][335]['res_net'] -['path_tpc']['curves'][336]['offset'] +['path_tpc']['curves'][335]['res_net_meters'] +['path_tpc']['curves'][336]['offset_meters'] ['path_tpc']['curves'][336]['res_coeff'] -['path_tpc']['curves'][336]['res_net'] -['path_tpc']['curves'][337]['offset'] +['path_tpc']['curves'][336]['res_net_meters'] +['path_tpc']['curves'][337]['offset_meters'] ['path_tpc']['curves'][337]['res_coeff'] -['path_tpc']['curves'][337]['res_net'] -['path_tpc']['curves'][338]['offset'] +['path_tpc']['curves'][337]['res_net_meters'] +['path_tpc']['curves'][338]['offset_meters'] ['path_tpc']['curves'][338]['res_coeff'] -['path_tpc']['curves'][338]['res_net'] -['path_tpc']['curves'][339]['offset'] +['path_tpc']['curves'][338]['res_net_meters'] +['path_tpc']['curves'][339]['offset_meters'] ['path_tpc']['curves'][339]['res_coeff'] -['path_tpc']['curves'][339]['res_net'] -['path_tpc']['curves'][340]['offset'] +['path_tpc']['curves'][339]['res_net_meters'] +['path_tpc']['curves'][340]['offset_meters'] ['path_tpc']['curves'][340]['res_coeff'] -['path_tpc']['curves'][340]['res_net'] -['path_tpc']['curves'][341]['offset'] +['path_tpc']['curves'][340]['res_net_meters'] +['path_tpc']['curves'][341]['offset_meters'] ['path_tpc']['curves'][341]['res_coeff'] -['path_tpc']['curves'][341]['res_net'] -['path_tpc']['curves'][342]['offset'] +['path_tpc']['curves'][341]['res_net_meters'] +['path_tpc']['curves'][342]['offset_meters'] ['path_tpc']['curves'][342]['res_coeff'] -['path_tpc']['curves'][342]['res_net'] -['path_tpc']['curves'][343]['offset'] +['path_tpc']['curves'][342]['res_net_meters'] +['path_tpc']['curves'][343]['offset_meters'] ['path_tpc']['curves'][343]['res_coeff'] -['path_tpc']['curves'][343]['res_net'] -['path_tpc']['curves'][344]['offset'] +['path_tpc']['curves'][343]['res_net_meters'] +['path_tpc']['curves'][344]['offset_meters'] ['path_tpc']['curves'][344]['res_coeff'] -['path_tpc']['curves'][344]['res_net'] -['path_tpc']['curves'][345]['offset'] +['path_tpc']['curves'][344]['res_net_meters'] +['path_tpc']['curves'][345]['offset_meters'] ['path_tpc']['curves'][345]['res_coeff'] -['path_tpc']['curves'][345]['res_net'] -['path_tpc']['curves'][346]['offset'] +['path_tpc']['curves'][345]['res_net_meters'] +['path_tpc']['curves'][346]['offset_meters'] ['path_tpc']['curves'][346]['res_coeff'] -['path_tpc']['curves'][346]['res_net'] -['path_tpc']['curves'][347]['offset'] +['path_tpc']['curves'][346]['res_net_meters'] +['path_tpc']['curves'][347]['offset_meters'] ['path_tpc']['curves'][347]['res_coeff'] -['path_tpc']['curves'][347]['res_net'] -['path_tpc']['curves'][348]['offset'] +['path_tpc']['curves'][347]['res_net_meters'] +['path_tpc']['curves'][348]['offset_meters'] ['path_tpc']['curves'][348]['res_coeff'] -['path_tpc']['curves'][348]['res_net'] -['path_tpc']['curves'][349]['offset'] +['path_tpc']['curves'][348]['res_net_meters'] +['path_tpc']['curves'][349]['offset_meters'] ['path_tpc']['curves'][349]['res_coeff'] -['path_tpc']['curves'][349]['res_net'] -['path_tpc']['curves'][350]['offset'] +['path_tpc']['curves'][349]['res_net_meters'] +['path_tpc']['curves'][350]['offset_meters'] ['path_tpc']['curves'][350]['res_coeff'] -['path_tpc']['curves'][350]['res_net'] -['path_tpc']['curves'][351]['offset'] +['path_tpc']['curves'][350]['res_net_meters'] +['path_tpc']['curves'][351]['offset_meters'] ['path_tpc']['curves'][351]['res_coeff'] -['path_tpc']['curves'][351]['res_net'] -['path_tpc']['curves'][352]['offset'] +['path_tpc']['curves'][351]['res_net_meters'] +['path_tpc']['curves'][352]['offset_meters'] ['path_tpc']['curves'][352]['res_coeff'] -['path_tpc']['curves'][352]['res_net'] -['path_tpc']['curves'][353]['offset'] +['path_tpc']['curves'][352]['res_net_meters'] +['path_tpc']['curves'][353]['offset_meters'] ['path_tpc']['curves'][353]['res_coeff'] -['path_tpc']['curves'][353]['res_net'] -['path_tpc']['curves'][354]['offset'] +['path_tpc']['curves'][353]['res_net_meters'] +['path_tpc']['curves'][354]['offset_meters'] ['path_tpc']['curves'][354]['res_coeff'] -['path_tpc']['curves'][354]['res_net'] -['path_tpc']['curves'][355]['offset'] +['path_tpc']['curves'][354]['res_net_meters'] +['path_tpc']['curves'][355]['offset_meters'] ['path_tpc']['curves'][355]['res_coeff'] -['path_tpc']['curves'][355]['res_net'] -['path_tpc']['curves'][356]['offset'] +['path_tpc']['curves'][355]['res_net_meters'] +['path_tpc']['curves'][356]['offset_meters'] ['path_tpc']['curves'][356]['res_coeff'] -['path_tpc']['curves'][356]['res_net'] -['path_tpc']['curves'][357]['offset'] +['path_tpc']['curves'][356]['res_net_meters'] +['path_tpc']['curves'][357]['offset_meters'] ['path_tpc']['curves'][357]['res_coeff'] -['path_tpc']['curves'][357]['res_net'] -['path_tpc']['curves'][358]['offset'] +['path_tpc']['curves'][357]['res_net_meters'] +['path_tpc']['curves'][358]['offset_meters'] ['path_tpc']['curves'][358]['res_coeff'] -['path_tpc']['curves'][358]['res_net'] -['path_tpc']['curves'][359]['offset'] +['path_tpc']['curves'][358]['res_net_meters'] +['path_tpc']['curves'][359]['offset_meters'] ['path_tpc']['curves'][359]['res_coeff'] -['path_tpc']['curves'][359]['res_net'] -['path_tpc']['curves'][360]['offset'] +['path_tpc']['curves'][359]['res_net_meters'] +['path_tpc']['curves'][360]['offset_meters'] ['path_tpc']['curves'][360]['res_coeff'] -['path_tpc']['curves'][360]['res_net'] -['path_tpc']['curves'][361]['offset'] +['path_tpc']['curves'][360]['res_net_meters'] +['path_tpc']['curves'][361]['offset_meters'] ['path_tpc']['curves'][361]['res_coeff'] -['path_tpc']['curves'][361]['res_net'] -['path_tpc']['curves'][362]['offset'] +['path_tpc']['curves'][361]['res_net_meters'] +['path_tpc']['curves'][362]['offset_meters'] ['path_tpc']['curves'][362]['res_coeff'] -['path_tpc']['curves'][362]['res_net'] -['path_tpc']['curves'][363]['offset'] +['path_tpc']['curves'][362]['res_net_meters'] +['path_tpc']['curves'][363]['offset_meters'] ['path_tpc']['curves'][363]['res_coeff'] -['path_tpc']['curves'][363]['res_net'] -['path_tpc']['curves'][364]['offset'] +['path_tpc']['curves'][363]['res_net_meters'] +['path_tpc']['curves'][364]['offset_meters'] ['path_tpc']['curves'][364]['res_coeff'] -['path_tpc']['curves'][364]['res_net'] -['path_tpc']['curves'][365]['offset'] +['path_tpc']['curves'][364]['res_net_meters'] +['path_tpc']['curves'][365]['offset_meters'] ['path_tpc']['curves'][365]['res_coeff'] -['path_tpc']['curves'][365]['res_net'] -['path_tpc']['curves'][366]['offset'] +['path_tpc']['curves'][365]['res_net_meters'] +['path_tpc']['curves'][366]['offset_meters'] ['path_tpc']['curves'][366]['res_coeff'] -['path_tpc']['curves'][366]['res_net'] -['path_tpc']['curves'][367]['offset'] +['path_tpc']['curves'][366]['res_net_meters'] +['path_tpc']['curves'][367]['offset_meters'] ['path_tpc']['curves'][367]['res_coeff'] -['path_tpc']['curves'][367]['res_net'] -['path_tpc']['curves'][368]['offset'] +['path_tpc']['curves'][367]['res_net_meters'] +['path_tpc']['curves'][368]['offset_meters'] ['path_tpc']['curves'][368]['res_coeff'] -['path_tpc']['curves'][368]['res_net'] -['path_tpc']['curves'][369]['offset'] +['path_tpc']['curves'][368]['res_net_meters'] +['path_tpc']['curves'][369]['offset_meters'] ['path_tpc']['curves'][369]['res_coeff'] -['path_tpc']['curves'][369]['res_net'] -['path_tpc']['curves'][370]['offset'] +['path_tpc']['curves'][369]['res_net_meters'] +['path_tpc']['curves'][370]['offset_meters'] ['path_tpc']['curves'][370]['res_coeff'] -['path_tpc']['curves'][370]['res_net'] -['path_tpc']['curves'][371]['offset'] +['path_tpc']['curves'][370]['res_net_meters'] +['path_tpc']['curves'][371]['offset_meters'] ['path_tpc']['curves'][371]['res_coeff'] -['path_tpc']['curves'][371]['res_net'] -['path_tpc']['curves'][372]['offset'] +['path_tpc']['curves'][371]['res_net_meters'] +['path_tpc']['curves'][372]['offset_meters'] ['path_tpc']['curves'][372]['res_coeff'] -['path_tpc']['curves'][372]['res_net'] -['path_tpc']['curves'][373]['offset'] +['path_tpc']['curves'][372]['res_net_meters'] +['path_tpc']['curves'][373]['offset_meters'] ['path_tpc']['curves'][373]['res_coeff'] -['path_tpc']['curves'][373]['res_net'] -['path_tpc']['curves'][374]['offset'] +['path_tpc']['curves'][373]['res_net_meters'] +['path_tpc']['curves'][374]['offset_meters'] ['path_tpc']['curves'][374]['res_coeff'] -['path_tpc']['curves'][374]['res_net'] -['path_tpc']['curves'][375]['offset'] +['path_tpc']['curves'][374]['res_net_meters'] +['path_tpc']['curves'][375]['offset_meters'] ['path_tpc']['curves'][375]['res_coeff'] -['path_tpc']['curves'][375]['res_net'] -['path_tpc']['curves'][376]['offset'] +['path_tpc']['curves'][375]['res_net_meters'] +['path_tpc']['curves'][376]['offset_meters'] ['path_tpc']['curves'][376]['res_coeff'] -['path_tpc']['curves'][376]['res_net'] -['path_tpc']['curves'][377]['offset'] +['path_tpc']['curves'][376]['res_net_meters'] +['path_tpc']['curves'][377]['offset_meters'] ['path_tpc']['curves'][377]['res_coeff'] -['path_tpc']['curves'][377]['res_net'] -['path_tpc']['curves'][378]['offset'] +['path_tpc']['curves'][377]['res_net_meters'] +['path_tpc']['curves'][378]['offset_meters'] ['path_tpc']['curves'][378]['res_coeff'] -['path_tpc']['curves'][378]['res_net'] -['path_tpc']['curves'][379]['offset'] +['path_tpc']['curves'][378]['res_net_meters'] +['path_tpc']['curves'][379]['offset_meters'] ['path_tpc']['curves'][379]['res_coeff'] -['path_tpc']['curves'][379]['res_net'] -['path_tpc']['curves'][380]['offset'] +['path_tpc']['curves'][379]['res_net_meters'] +['path_tpc']['curves'][380]['offset_meters'] ['path_tpc']['curves'][380]['res_coeff'] -['path_tpc']['curves'][380]['res_net'] -['path_tpc']['curves'][381]['offset'] +['path_tpc']['curves'][380]['res_net_meters'] +['path_tpc']['curves'][381]['offset_meters'] ['path_tpc']['curves'][381]['res_coeff'] -['path_tpc']['curves'][381]['res_net'] -['path_tpc']['curves'][382]['offset'] +['path_tpc']['curves'][381]['res_net_meters'] +['path_tpc']['curves'][382]['offset_meters'] ['path_tpc']['curves'][382]['res_coeff'] -['path_tpc']['curves'][382]['res_net'] -['path_tpc']['curves'][383]['offset'] +['path_tpc']['curves'][382]['res_net_meters'] +['path_tpc']['curves'][383]['offset_meters'] ['path_tpc']['curves'][383]['res_coeff'] -['path_tpc']['curves'][383]['res_net'] -['path_tpc']['curves'][384]['offset'] +['path_tpc']['curves'][383]['res_net_meters'] +['path_tpc']['curves'][384]['offset_meters'] ['path_tpc']['curves'][384]['res_coeff'] -['path_tpc']['curves'][384]['res_net'] -['path_tpc']['curves'][385]['offset'] +['path_tpc']['curves'][384]['res_net_meters'] +['path_tpc']['curves'][385]['offset_meters'] ['path_tpc']['curves'][385]['res_coeff'] -['path_tpc']['curves'][385]['res_net'] -['path_tpc']['curves'][386]['offset'] +['path_tpc']['curves'][385]['res_net_meters'] +['path_tpc']['curves'][386]['offset_meters'] ['path_tpc']['curves'][386]['res_coeff'] -['path_tpc']['curves'][386]['res_net'] -['path_tpc']['curves'][387]['offset'] +['path_tpc']['curves'][386]['res_net_meters'] +['path_tpc']['curves'][387]['offset_meters'] ['path_tpc']['curves'][387]['res_coeff'] -['path_tpc']['curves'][387]['res_net'] -['path_tpc']['curves'][388]['offset'] +['path_tpc']['curves'][387]['res_net_meters'] +['path_tpc']['curves'][388]['offset_meters'] ['path_tpc']['curves'][388]['res_coeff'] -['path_tpc']['curves'][388]['res_net'] -['path_tpc']['curves'][389]['offset'] +['path_tpc']['curves'][388]['res_net_meters'] +['path_tpc']['curves'][389]['offset_meters'] ['path_tpc']['curves'][389]['res_coeff'] -['path_tpc']['curves'][389]['res_net'] -['path_tpc']['curves'][390]['offset'] +['path_tpc']['curves'][389]['res_net_meters'] +['path_tpc']['curves'][390]['offset_meters'] ['path_tpc']['curves'][390]['res_coeff'] -['path_tpc']['curves'][390]['res_net'] -['path_tpc']['curves'][391]['offset'] +['path_tpc']['curves'][390]['res_net_meters'] +['path_tpc']['curves'][391]['offset_meters'] ['path_tpc']['curves'][391]['res_coeff'] -['path_tpc']['curves'][391]['res_net'] -['path_tpc']['curves'][392]['offset'] +['path_tpc']['curves'][391]['res_net_meters'] +['path_tpc']['curves'][392]['offset_meters'] ['path_tpc']['curves'][392]['res_coeff'] -['path_tpc']['curves'][392]['res_net'] -['path_tpc']['curves'][393]['offset'] +['path_tpc']['curves'][392]['res_net_meters'] +['path_tpc']['curves'][393]['offset_meters'] ['path_tpc']['curves'][393]['res_coeff'] -['path_tpc']['curves'][393]['res_net'] -['path_tpc']['curves'][394]['offset'] +['path_tpc']['curves'][393]['res_net_meters'] +['path_tpc']['curves'][394]['offset_meters'] ['path_tpc']['curves'][394]['res_coeff'] -['path_tpc']['curves'][394]['res_net'] -['path_tpc']['curves'][395]['offset'] +['path_tpc']['curves'][394]['res_net_meters'] +['path_tpc']['curves'][395]['offset_meters'] ['path_tpc']['curves'][395]['res_coeff'] -['path_tpc']['curves'][395]['res_net'] -['path_tpc']['curves'][396]['offset'] +['path_tpc']['curves'][395]['res_net_meters'] +['path_tpc']['curves'][396]['offset_meters'] ['path_tpc']['curves'][396]['res_coeff'] -['path_tpc']['curves'][396]['res_net'] -['path_tpc']['curves'][397]['offset'] +['path_tpc']['curves'][396]['res_net_meters'] +['path_tpc']['curves'][397]['offset_meters'] ['path_tpc']['curves'][397]['res_coeff'] -['path_tpc']['curves'][397]['res_net'] -['path_tpc']['curves'][398]['offset'] +['path_tpc']['curves'][397]['res_net_meters'] +['path_tpc']['curves'][398]['offset_meters'] ['path_tpc']['curves'][398]['res_coeff'] -['path_tpc']['curves'][398]['res_net'] -['path_tpc']['curves'][399]['offset'] +['path_tpc']['curves'][398]['res_net_meters'] +['path_tpc']['curves'][399]['offset_meters'] ['path_tpc']['curves'][399]['res_coeff'] -['path_tpc']['curves'][399]['res_net'] -['path_tpc']['curves'][400]['offset'] +['path_tpc']['curves'][399]['res_net_meters'] +['path_tpc']['curves'][400]['offset_meters'] ['path_tpc']['curves'][400]['res_coeff'] -['path_tpc']['curves'][400]['res_net'] -['path_tpc']['curves'][401]['offset'] +['path_tpc']['curves'][400]['res_net_meters'] +['path_tpc']['curves'][401]['offset_meters'] ['path_tpc']['curves'][401]['res_coeff'] -['path_tpc']['curves'][401]['res_net'] -['path_tpc']['curves'][402]['offset'] +['path_tpc']['curves'][401]['res_net_meters'] +['path_tpc']['curves'][402]['offset_meters'] ['path_tpc']['curves'][402]['res_coeff'] -['path_tpc']['curves'][402]['res_net'] -['path_tpc']['curves'][403]['offset'] +['path_tpc']['curves'][402]['res_net_meters'] +['path_tpc']['curves'][403]['offset_meters'] ['path_tpc']['curves'][403]['res_coeff'] -['path_tpc']['curves'][403]['res_net'] -['path_tpc']['curves'][404]['offset'] +['path_tpc']['curves'][403]['res_net_meters'] +['path_tpc']['curves'][404]['offset_meters'] ['path_tpc']['curves'][404]['res_coeff'] -['path_tpc']['curves'][404]['res_net'] -['path_tpc']['curves'][405]['offset'] +['path_tpc']['curves'][404]['res_net_meters'] +['path_tpc']['curves'][405]['offset_meters'] ['path_tpc']['curves'][405]['res_coeff'] -['path_tpc']['curves'][405]['res_net'] -['path_tpc']['curves'][406]['offset'] +['path_tpc']['curves'][405]['res_net_meters'] +['path_tpc']['curves'][406]['offset_meters'] ['path_tpc']['curves'][406]['res_coeff'] -['path_tpc']['curves'][406]['res_net'] -['path_tpc']['curves'][407]['offset'] +['path_tpc']['curves'][406]['res_net_meters'] +['path_tpc']['curves'][407]['offset_meters'] ['path_tpc']['curves'][407]['res_coeff'] -['path_tpc']['curves'][407]['res_net'] -['path_tpc']['curves'][408]['offset'] +['path_tpc']['curves'][407]['res_net_meters'] +['path_tpc']['curves'][408]['offset_meters'] ['path_tpc']['curves'][408]['res_coeff'] -['path_tpc']['curves'][408]['res_net'] -['path_tpc']['curves'][409]['offset'] +['path_tpc']['curves'][408]['res_net_meters'] +['path_tpc']['curves'][409]['offset_meters'] ['path_tpc']['curves'][409]['res_coeff'] -['path_tpc']['curves'][409]['res_net'] -['path_tpc']['curves'][410]['offset'] +['path_tpc']['curves'][409]['res_net_meters'] +['path_tpc']['curves'][410]['offset_meters'] ['path_tpc']['curves'][410]['res_coeff'] -['path_tpc']['curves'][410]['res_net'] -['path_tpc']['curves'][411]['offset'] +['path_tpc']['curves'][410]['res_net_meters'] +['path_tpc']['curves'][411]['offset_meters'] ['path_tpc']['curves'][411]['res_coeff'] -['path_tpc']['curves'][411]['res_net'] -['path_tpc']['curves'][412]['offset'] +['path_tpc']['curves'][411]['res_net_meters'] +['path_tpc']['curves'][412]['offset_meters'] ['path_tpc']['curves'][412]['res_coeff'] -['path_tpc']['curves'][412]['res_net'] -['path_tpc']['curves'][413]['offset'] +['path_tpc']['curves'][412]['res_net_meters'] +['path_tpc']['curves'][413]['offset_meters'] ['path_tpc']['curves'][413]['res_coeff'] -['path_tpc']['curves'][413]['res_net'] -['path_tpc']['curves'][414]['offset'] +['path_tpc']['curves'][413]['res_net_meters'] +['path_tpc']['curves'][414]['offset_meters'] ['path_tpc']['curves'][414]['res_coeff'] -['path_tpc']['curves'][414]['res_net'] -['path_tpc']['curves'][415]['offset'] +['path_tpc']['curves'][414]['res_net_meters'] +['path_tpc']['curves'][415]['offset_meters'] ['path_tpc']['curves'][415]['res_coeff'] -['path_tpc']['curves'][415]['res_net'] -['path_tpc']['curves'][416]['offset'] +['path_tpc']['curves'][415]['res_net_meters'] +['path_tpc']['curves'][416]['offset_meters'] ['path_tpc']['curves'][416]['res_coeff'] -['path_tpc']['curves'][416]['res_net'] -['path_tpc']['curves'][417]['offset'] +['path_tpc']['curves'][416]['res_net_meters'] +['path_tpc']['curves'][417]['offset_meters'] ['path_tpc']['curves'][417]['res_coeff'] -['path_tpc']['curves'][417]['res_net'] -['path_tpc']['curves'][418]['offset'] +['path_tpc']['curves'][417]['res_net_meters'] +['path_tpc']['curves'][418]['offset_meters'] ['path_tpc']['curves'][418]['res_coeff'] -['path_tpc']['curves'][418]['res_net'] -['path_tpc']['curves'][419]['offset'] +['path_tpc']['curves'][418]['res_net_meters'] +['path_tpc']['curves'][419]['offset_meters'] ['path_tpc']['curves'][419]['res_coeff'] -['path_tpc']['curves'][419]['res_net'] -['path_tpc']['curves'][420]['offset'] +['path_tpc']['curves'][419]['res_net_meters'] +['path_tpc']['curves'][420]['offset_meters'] ['path_tpc']['curves'][420]['res_coeff'] -['path_tpc']['curves'][420]['res_net'] -['path_tpc']['curves'][421]['offset'] +['path_tpc']['curves'][420]['res_net_meters'] +['path_tpc']['curves'][421]['offset_meters'] ['path_tpc']['curves'][421]['res_coeff'] -['path_tpc']['curves'][421]['res_net'] -['path_tpc']['curves'][422]['offset'] +['path_tpc']['curves'][421]['res_net_meters'] +['path_tpc']['curves'][422]['offset_meters'] ['path_tpc']['curves'][422]['res_coeff'] -['path_tpc']['curves'][422]['res_net'] -['path_tpc']['curves'][423]['offset'] +['path_tpc']['curves'][422]['res_net_meters'] +['path_tpc']['curves'][423]['offset_meters'] ['path_tpc']['curves'][423]['res_coeff'] -['path_tpc']['curves'][423]['res_net'] -['path_tpc']['curves'][424]['offset'] +['path_tpc']['curves'][423]['res_net_meters'] +['path_tpc']['curves'][424]['offset_meters'] ['path_tpc']['curves'][424]['res_coeff'] -['path_tpc']['curves'][424]['res_net'] -['path_tpc']['curves'][425]['offset'] +['path_tpc']['curves'][424]['res_net_meters'] +['path_tpc']['curves'][425]['offset_meters'] ['path_tpc']['curves'][425]['res_coeff'] -['path_tpc']['curves'][425]['res_net'] -['path_tpc']['curves'][426]['offset'] +['path_tpc']['curves'][425]['res_net_meters'] +['path_tpc']['curves'][426]['offset_meters'] ['path_tpc']['curves'][426]['res_coeff'] -['path_tpc']['curves'][426]['res_net'] -['path_tpc']['curves'][427]['offset'] +['path_tpc']['curves'][426]['res_net_meters'] +['path_tpc']['curves'][427]['offset_meters'] ['path_tpc']['curves'][427]['res_coeff'] -['path_tpc']['curves'][427]['res_net'] -['path_tpc']['curves'][428]['offset'] +['path_tpc']['curves'][427]['res_net_meters'] +['path_tpc']['curves'][428]['offset_meters'] ['path_tpc']['curves'][428]['res_coeff'] -['path_tpc']['curves'][428]['res_net'] -['path_tpc']['curves'][429]['offset'] +['path_tpc']['curves'][428]['res_net_meters'] +['path_tpc']['curves'][429]['offset_meters'] ['path_tpc']['curves'][429]['res_coeff'] -['path_tpc']['curves'][429]['res_net'] -['path_tpc']['curves'][430]['offset'] +['path_tpc']['curves'][429]['res_net_meters'] +['path_tpc']['curves'][430]['offset_meters'] ['path_tpc']['curves'][430]['res_coeff'] -['path_tpc']['curves'][430]['res_net'] -['path_tpc']['curves'][431]['offset'] +['path_tpc']['curves'][430]['res_net_meters'] +['path_tpc']['curves'][431]['offset_meters'] ['path_tpc']['curves'][431]['res_coeff'] -['path_tpc']['curves'][431]['res_net'] -['path_tpc']['curves'][432]['offset'] +['path_tpc']['curves'][431]['res_net_meters'] +['path_tpc']['curves'][432]['offset_meters'] ['path_tpc']['curves'][432]['res_coeff'] -['path_tpc']['curves'][432]['res_net'] -['path_tpc']['curves'][433]['offset'] +['path_tpc']['curves'][432]['res_net_meters'] +['path_tpc']['curves'][433]['offset_meters'] ['path_tpc']['curves'][433]['res_coeff'] -['path_tpc']['curves'][433]['res_net'] -['path_tpc']['curves'][434]['offset'] +['path_tpc']['curves'][433]['res_net_meters'] +['path_tpc']['curves'][434]['offset_meters'] ['path_tpc']['curves'][434]['res_coeff'] -['path_tpc']['curves'][434]['res_net'] -['path_tpc']['curves'][435]['offset'] +['path_tpc']['curves'][434]['res_net_meters'] +['path_tpc']['curves'][435]['offset_meters'] ['path_tpc']['curves'][435]['res_coeff'] -['path_tpc']['curves'][435]['res_net'] -['path_tpc']['curves'][436]['offset'] +['path_tpc']['curves'][435]['res_net_meters'] +['path_tpc']['curves'][436]['offset_meters'] ['path_tpc']['curves'][436]['res_coeff'] -['path_tpc']['curves'][436]['res_net'] -['path_tpc']['curves'][437]['offset'] +['path_tpc']['curves'][436]['res_net_meters'] +['path_tpc']['curves'][437]['offset_meters'] ['path_tpc']['curves'][437]['res_coeff'] -['path_tpc']['curves'][437]['res_net'] -['path_tpc']['curves'][438]['offset'] +['path_tpc']['curves'][437]['res_net_meters'] +['path_tpc']['curves'][438]['offset_meters'] ['path_tpc']['curves'][438]['res_coeff'] -['path_tpc']['curves'][438]['res_net'] -['path_tpc']['curves'][439]['offset'] +['path_tpc']['curves'][438]['res_net_meters'] +['path_tpc']['curves'][439]['offset_meters'] ['path_tpc']['curves'][439]['res_coeff'] -['path_tpc']['curves'][439]['res_net'] -['path_tpc']['curves'][440]['offset'] +['path_tpc']['curves'][439]['res_net_meters'] +['path_tpc']['curves'][440]['offset_meters'] ['path_tpc']['curves'][440]['res_coeff'] -['path_tpc']['curves'][440]['res_net'] -['path_tpc']['curves'][441]['offset'] +['path_tpc']['curves'][440]['res_net_meters'] +['path_tpc']['curves'][441]['offset_meters'] ['path_tpc']['curves'][441]['res_coeff'] -['path_tpc']['curves'][441]['res_net'] -['path_tpc']['curves'][442]['offset'] +['path_tpc']['curves'][441]['res_net_meters'] +['path_tpc']['curves'][442]['offset_meters'] ['path_tpc']['curves'][442]['res_coeff'] -['path_tpc']['curves'][442]['res_net'] -['path_tpc']['curves'][443]['offset'] +['path_tpc']['curves'][442]['res_net_meters'] +['path_tpc']['curves'][443]['offset_meters'] ['path_tpc']['curves'][443]['res_coeff'] -['path_tpc']['curves'][443]['res_net'] -['path_tpc']['curves'][444]['offset'] +['path_tpc']['curves'][443]['res_net_meters'] +['path_tpc']['curves'][444]['offset_meters'] ['path_tpc']['curves'][444]['res_coeff'] -['path_tpc']['curves'][444]['res_net'] -['path_tpc']['curves'][445]['offset'] +['path_tpc']['curves'][444]['res_net_meters'] +['path_tpc']['curves'][445]['offset_meters'] ['path_tpc']['curves'][445]['res_coeff'] -['path_tpc']['curves'][445]['res_net'] -['path_tpc']['curves'][446]['offset'] +['path_tpc']['curves'][445]['res_net_meters'] +['path_tpc']['curves'][446]['offset_meters'] ['path_tpc']['curves'][446]['res_coeff'] -['path_tpc']['curves'][446]['res_net'] -['path_tpc']['curves'][447]['offset'] +['path_tpc']['curves'][446]['res_net_meters'] +['path_tpc']['curves'][447]['offset_meters'] ['path_tpc']['curves'][447]['res_coeff'] -['path_tpc']['curves'][447]['res_net'] -['path_tpc']['curves'][448]['offset'] +['path_tpc']['curves'][447]['res_net_meters'] +['path_tpc']['curves'][448]['offset_meters'] ['path_tpc']['curves'][448]['res_coeff'] -['path_tpc']['curves'][448]['res_net'] -['path_tpc']['curves'][449]['offset'] +['path_tpc']['curves'][448]['res_net_meters'] +['path_tpc']['curves'][449]['offset_meters'] ['path_tpc']['curves'][449]['res_coeff'] -['path_tpc']['curves'][449]['res_net'] -['path_tpc']['curves'][450]['offset'] +['path_tpc']['curves'][449]['res_net_meters'] +['path_tpc']['curves'][450]['offset_meters'] ['path_tpc']['curves'][450]['res_coeff'] -['path_tpc']['curves'][450]['res_net'] -['path_tpc']['curves'][451]['offset'] +['path_tpc']['curves'][450]['res_net_meters'] +['path_tpc']['curves'][451]['offset_meters'] ['path_tpc']['curves'][451]['res_coeff'] -['path_tpc']['curves'][451]['res_net'] -['path_tpc']['curves'][452]['offset'] +['path_tpc']['curves'][451]['res_net_meters'] +['path_tpc']['curves'][452]['offset_meters'] ['path_tpc']['curves'][452]['res_coeff'] -['path_tpc']['curves'][452]['res_net'] -['path_tpc']['curves'][453]['offset'] +['path_tpc']['curves'][452]['res_net_meters'] +['path_tpc']['curves'][453]['offset_meters'] ['path_tpc']['curves'][453]['res_coeff'] -['path_tpc']['curves'][453]['res_net'] -['path_tpc']['curves'][454]['offset'] +['path_tpc']['curves'][453]['res_net_meters'] +['path_tpc']['curves'][454]['offset_meters'] ['path_tpc']['curves'][454]['res_coeff'] -['path_tpc']['curves'][454]['res_net'] -['path_tpc']['curves'][455]['offset'] +['path_tpc']['curves'][454]['res_net_meters'] +['path_tpc']['curves'][455]['offset_meters'] ['path_tpc']['curves'][455]['res_coeff'] -['path_tpc']['curves'][455]['res_net'] -['path_tpc']['curves'][456]['offset'] +['path_tpc']['curves'][455]['res_net_meters'] +['path_tpc']['curves'][456]['offset_meters'] ['path_tpc']['curves'][456]['res_coeff'] -['path_tpc']['curves'][456]['res_net'] -['path_tpc']['curves'][457]['offset'] +['path_tpc']['curves'][456]['res_net_meters'] +['path_tpc']['curves'][457]['offset_meters'] ['path_tpc']['curves'][457]['res_coeff'] -['path_tpc']['curves'][457]['res_net'] -['path_tpc']['curves'][458]['offset'] +['path_tpc']['curves'][457]['res_net_meters'] +['path_tpc']['curves'][458]['offset_meters'] ['path_tpc']['curves'][458]['res_coeff'] -['path_tpc']['curves'][458]['res_net'] -['path_tpc']['curves'][459]['offset'] +['path_tpc']['curves'][458]['res_net_meters'] +['path_tpc']['curves'][459]['offset_meters'] ['path_tpc']['curves'][459]['res_coeff'] -['path_tpc']['curves'][459]['res_net'] -['path_tpc']['curves'][460]['offset'] +['path_tpc']['curves'][459]['res_net_meters'] +['path_tpc']['curves'][460]['offset_meters'] ['path_tpc']['curves'][460]['res_coeff'] -['path_tpc']['curves'][460]['res_net'] -['path_tpc']['curves'][461]['offset'] +['path_tpc']['curves'][460]['res_net_meters'] +['path_tpc']['curves'][461]['offset_meters'] ['path_tpc']['curves'][461]['res_coeff'] -['path_tpc']['curves'][461]['res_net'] -['path_tpc']['curves'][462]['offset'] +['path_tpc']['curves'][461]['res_net_meters'] +['path_tpc']['curves'][462]['offset_meters'] ['path_tpc']['curves'][462]['res_coeff'] -['path_tpc']['curves'][462]['res_net'] -['path_tpc']['curves'][463]['offset'] +['path_tpc']['curves'][462]['res_net_meters'] +['path_tpc']['curves'][463]['offset_meters'] ['path_tpc']['curves'][463]['res_coeff'] -['path_tpc']['curves'][463]['res_net'] -['path_tpc']['curves'][464]['offset'] +['path_tpc']['curves'][463]['res_net_meters'] +['path_tpc']['curves'][464]['offset_meters'] ['path_tpc']['curves'][464]['res_coeff'] -['path_tpc']['curves'][464]['res_net'] -['path_tpc']['curves'][465]['offset'] +['path_tpc']['curves'][464]['res_net_meters'] +['path_tpc']['curves'][465]['offset_meters'] ['path_tpc']['curves'][465]['res_coeff'] -['path_tpc']['curves'][465]['res_net'] -['path_tpc']['curves'][466]['offset'] +['path_tpc']['curves'][465]['res_net_meters'] +['path_tpc']['curves'][466]['offset_meters'] ['path_tpc']['curves'][466]['res_coeff'] -['path_tpc']['curves'][466]['res_net'] -['path_tpc']['curves'][467]['offset'] +['path_tpc']['curves'][466]['res_net_meters'] +['path_tpc']['curves'][467]['offset_meters'] ['path_tpc']['curves'][467]['res_coeff'] -['path_tpc']['curves'][467]['res_net'] -['path_tpc']['curves'][468]['offset'] +['path_tpc']['curves'][467]['res_net_meters'] +['path_tpc']['curves'][468]['offset_meters'] ['path_tpc']['curves'][468]['res_coeff'] -['path_tpc']['curves'][468]['res_net'] -['path_tpc']['curves'][469]['offset'] +['path_tpc']['curves'][468]['res_net_meters'] +['path_tpc']['curves'][469]['offset_meters'] ['path_tpc']['curves'][469]['res_coeff'] -['path_tpc']['curves'][469]['res_net'] -['path_tpc']['curves'][470]['offset'] +['path_tpc']['curves'][469]['res_net_meters'] +['path_tpc']['curves'][470]['offset_meters'] ['path_tpc']['curves'][470]['res_coeff'] -['path_tpc']['curves'][470]['res_net'] -['path_tpc']['curves'][471]['offset'] +['path_tpc']['curves'][470]['res_net_meters'] +['path_tpc']['curves'][471]['offset_meters'] ['path_tpc']['curves'][471]['res_coeff'] -['path_tpc']['curves'][471]['res_net'] -['path_tpc']['curves'][472]['offset'] +['path_tpc']['curves'][471]['res_net_meters'] +['path_tpc']['curves'][472]['offset_meters'] ['path_tpc']['curves'][472]['res_coeff'] -['path_tpc']['curves'][472]['res_net'] -['path_tpc']['curves'][473]['offset'] +['path_tpc']['curves'][472]['res_net_meters'] +['path_tpc']['curves'][473]['offset_meters'] ['path_tpc']['curves'][473]['res_coeff'] -['path_tpc']['curves'][473]['res_net'] -['path_tpc']['curves'][474]['offset'] +['path_tpc']['curves'][473]['res_net_meters'] +['path_tpc']['curves'][474]['offset_meters'] ['path_tpc']['curves'][474]['res_coeff'] -['path_tpc']['curves'][474]['res_net'] -['path_tpc']['curves'][475]['offset'] +['path_tpc']['curves'][474]['res_net_meters'] +['path_tpc']['curves'][475]['offset_meters'] ['path_tpc']['curves'][475]['res_coeff'] -['path_tpc']['curves'][475]['res_net'] -['path_tpc']['curves'][476]['offset'] +['path_tpc']['curves'][475]['res_net_meters'] +['path_tpc']['curves'][476]['offset_meters'] ['path_tpc']['curves'][476]['res_coeff'] -['path_tpc']['curves'][476]['res_net'] -['path_tpc']['curves'][477]['offset'] +['path_tpc']['curves'][476]['res_net_meters'] +['path_tpc']['curves'][477]['offset_meters'] ['path_tpc']['curves'][477]['res_coeff'] -['path_tpc']['curves'][477]['res_net'] -['path_tpc']['curves'][478]['offset'] +['path_tpc']['curves'][477]['res_net_meters'] +['path_tpc']['curves'][478]['offset_meters'] ['path_tpc']['curves'][478]['res_coeff'] -['path_tpc']['curves'][478]['res_net'] -['path_tpc']['curves'][479]['offset'] +['path_tpc']['curves'][478]['res_net_meters'] +['path_tpc']['curves'][479]['offset_meters'] ['path_tpc']['curves'][479]['res_coeff'] -['path_tpc']['curves'][479]['res_net'] -['path_tpc']['curves'][480]['offset'] +['path_tpc']['curves'][479]['res_net_meters'] +['path_tpc']['curves'][480]['offset_meters'] ['path_tpc']['curves'][480]['res_coeff'] -['path_tpc']['curves'][480]['res_net'] -['path_tpc']['curves'][481]['offset'] +['path_tpc']['curves'][480]['res_net_meters'] +['path_tpc']['curves'][481]['offset_meters'] ['path_tpc']['curves'][481]['res_coeff'] -['path_tpc']['curves'][481]['res_net'] -['path_tpc']['curves'][482]['offset'] +['path_tpc']['curves'][481]['res_net_meters'] +['path_tpc']['curves'][482]['offset_meters'] ['path_tpc']['curves'][482]['res_coeff'] -['path_tpc']['curves'][482]['res_net'] -['path_tpc']['curves'][483]['offset'] +['path_tpc']['curves'][482]['res_net_meters'] +['path_tpc']['curves'][483]['offset_meters'] ['path_tpc']['curves'][483]['res_coeff'] -['path_tpc']['curves'][483]['res_net'] -['path_tpc']['curves'][484]['offset'] +['path_tpc']['curves'][483]['res_net_meters'] +['path_tpc']['curves'][484]['offset_meters'] ['path_tpc']['curves'][484]['res_coeff'] -['path_tpc']['curves'][484]['res_net'] -['path_tpc']['curves'][485]['offset'] +['path_tpc']['curves'][484]['res_net_meters'] +['path_tpc']['curves'][485]['offset_meters'] ['path_tpc']['curves'][485]['res_coeff'] -['path_tpc']['curves'][485]['res_net'] -['path_tpc']['curves'][486]['offset'] +['path_tpc']['curves'][485]['res_net_meters'] +['path_tpc']['curves'][486]['offset_meters'] ['path_tpc']['curves'][486]['res_coeff'] -['path_tpc']['curves'][486]['res_net'] -['path_tpc']['curves'][487]['offset'] +['path_tpc']['curves'][486]['res_net_meters'] +['path_tpc']['curves'][487]['offset_meters'] ['path_tpc']['curves'][487]['res_coeff'] -['path_tpc']['curves'][487]['res_net'] -['path_tpc']['curves'][488]['offset'] +['path_tpc']['curves'][487]['res_net_meters'] +['path_tpc']['curves'][488]['offset_meters'] ['path_tpc']['curves'][488]['res_coeff'] -['path_tpc']['curves'][488]['res_net'] -['path_tpc']['curves'][489]['offset'] +['path_tpc']['curves'][488]['res_net_meters'] +['path_tpc']['curves'][489]['offset_meters'] ['path_tpc']['curves'][489]['res_coeff'] -['path_tpc']['curves'][489]['res_net'] -['path_tpc']['curves'][490]['offset'] +['path_tpc']['curves'][489]['res_net_meters'] +['path_tpc']['curves'][490]['offset_meters'] ['path_tpc']['curves'][490]['res_coeff'] -['path_tpc']['curves'][490]['res_net'] -['path_tpc']['curves'][491]['offset'] +['path_tpc']['curves'][490]['res_net_meters'] +['path_tpc']['curves'][491]['offset_meters'] ['path_tpc']['curves'][491]['res_coeff'] -['path_tpc']['curves'][491]['res_net'] -['path_tpc']['curves'][492]['offset'] +['path_tpc']['curves'][491]['res_net_meters'] +['path_tpc']['curves'][492]['offset_meters'] ['path_tpc']['curves'][492]['res_coeff'] -['path_tpc']['curves'][492]['res_net'] -['path_tpc']['curves'][493]['offset'] +['path_tpc']['curves'][492]['res_net_meters'] +['path_tpc']['curves'][493]['offset_meters'] ['path_tpc']['curves'][493]['res_coeff'] -['path_tpc']['curves'][493]['res_net'] -['path_tpc']['curves'][494]['offset'] +['path_tpc']['curves'][493]['res_net_meters'] +['path_tpc']['curves'][494]['offset_meters'] ['path_tpc']['curves'][494]['res_coeff'] -['path_tpc']['curves'][494]['res_net'] -['path_tpc']['curves'][495]['offset'] +['path_tpc']['curves'][494]['res_net_meters'] +['path_tpc']['curves'][495]['offset_meters'] ['path_tpc']['curves'][495]['res_coeff'] -['path_tpc']['curves'][495]['res_net'] -['path_tpc']['curves'][496]['offset'] +['path_tpc']['curves'][495]['res_net_meters'] +['path_tpc']['curves'][496]['offset_meters'] ['path_tpc']['curves'][496]['res_coeff'] -['path_tpc']['curves'][496]['res_net'] -['path_tpc']['curves'][497]['offset'] +['path_tpc']['curves'][496]['res_net_meters'] +['path_tpc']['curves'][497]['offset_meters'] ['path_tpc']['curves'][497]['res_coeff'] -['path_tpc']['curves'][497]['res_net'] -['path_tpc']['curves'][498]['offset'] +['path_tpc']['curves'][497]['res_net_meters'] +['path_tpc']['curves'][498]['offset_meters'] ['path_tpc']['curves'][498]['res_coeff'] -['path_tpc']['curves'][498]['res_net'] -['path_tpc']['curves'][499]['offset'] +['path_tpc']['curves'][498]['res_net_meters'] +['path_tpc']['curves'][499]['offset_meters'] ['path_tpc']['curves'][499]['res_coeff'] -['path_tpc']['curves'][499]['res_net'] -['path_tpc']['curves'][500]['offset'] +['path_tpc']['curves'][499]['res_net_meters'] +['path_tpc']['curves'][500]['offset_meters'] ['path_tpc']['curves'][500]['res_coeff'] -['path_tpc']['curves'][500]['res_net'] -['path_tpc']['curves'][501]['offset'] +['path_tpc']['curves'][500]['res_net_meters'] +['path_tpc']['curves'][501]['offset_meters'] ['path_tpc']['curves'][501]['res_coeff'] -['path_tpc']['curves'][501]['res_net'] -['path_tpc']['curves'][502]['offset'] +['path_tpc']['curves'][501]['res_net_meters'] +['path_tpc']['curves'][502]['offset_meters'] ['path_tpc']['curves'][502]['res_coeff'] -['path_tpc']['curves'][502]['res_net'] -['path_tpc']['curves'][503]['offset'] +['path_tpc']['curves'][502]['res_net_meters'] +['path_tpc']['curves'][503]['offset_meters'] ['path_tpc']['curves'][503]['res_coeff'] -['path_tpc']['curves'][503]['res_net'] -['path_tpc']['curves'][504]['offset'] +['path_tpc']['curves'][503]['res_net_meters'] +['path_tpc']['curves'][504]['offset_meters'] ['path_tpc']['curves'][504]['res_coeff'] -['path_tpc']['curves'][504]['res_net'] -['path_tpc']['curves'][505]['offset'] +['path_tpc']['curves'][504]['res_net_meters'] +['path_tpc']['curves'][505]['offset_meters'] ['path_tpc']['curves'][505]['res_coeff'] -['path_tpc']['curves'][505]['res_net'] -['path_tpc']['curves'][506]['offset'] +['path_tpc']['curves'][505]['res_net_meters'] +['path_tpc']['curves'][506]['offset_meters'] ['path_tpc']['curves'][506]['res_coeff'] -['path_tpc']['curves'][506]['res_net'] -['path_tpc']['curves'][507]['offset'] +['path_tpc']['curves'][506]['res_net_meters'] +['path_tpc']['curves'][507]['offset_meters'] ['path_tpc']['curves'][507]['res_coeff'] -['path_tpc']['curves'][507]['res_net'] -['path_tpc']['curves'][508]['offset'] +['path_tpc']['curves'][507]['res_net_meters'] +['path_tpc']['curves'][508]['offset_meters'] ['path_tpc']['curves'][508]['res_coeff'] -['path_tpc']['curves'][508]['res_net'] -['path_tpc']['curves'][509]['offset'] +['path_tpc']['curves'][508]['res_net_meters'] +['path_tpc']['curves'][509]['offset_meters'] ['path_tpc']['curves'][509]['res_coeff'] -['path_tpc']['curves'][509]['res_net'] -['path_tpc']['curves'][510]['offset'] +['path_tpc']['curves'][509]['res_net_meters'] +['path_tpc']['curves'][510]['offset_meters'] ['path_tpc']['curves'][510]['res_coeff'] -['path_tpc']['curves'][510]['res_net'] -['path_tpc']['curves'][511]['offset'] +['path_tpc']['curves'][510]['res_net_meters'] +['path_tpc']['curves'][511]['offset_meters'] ['path_tpc']['curves'][511]['res_coeff'] -['path_tpc']['curves'][511]['res_net'] -['path_tpc']['curves'][512]['offset'] +['path_tpc']['curves'][511]['res_net_meters'] +['path_tpc']['curves'][512]['offset_meters'] ['path_tpc']['curves'][512]['res_coeff'] -['path_tpc']['curves'][512]['res_net'] -['path_tpc']['curves'][513]['offset'] +['path_tpc']['curves'][512]['res_net_meters'] +['path_tpc']['curves'][513]['offset_meters'] ['path_tpc']['curves'][513]['res_coeff'] -['path_tpc']['curves'][513]['res_net'] -['path_tpc']['curves'][514]['offset'] +['path_tpc']['curves'][513]['res_net_meters'] +['path_tpc']['curves'][514]['offset_meters'] ['path_tpc']['curves'][514]['res_coeff'] -['path_tpc']['curves'][514]['res_net'] -['path_tpc']['curves'][515]['offset'] +['path_tpc']['curves'][514]['res_net_meters'] +['path_tpc']['curves'][515]['offset_meters'] ['path_tpc']['curves'][515]['res_coeff'] -['path_tpc']['curves'][515]['res_net'] -['path_tpc']['curves'][516]['offset'] +['path_tpc']['curves'][515]['res_net_meters'] +['path_tpc']['curves'][516]['offset_meters'] ['path_tpc']['curves'][516]['res_coeff'] -['path_tpc']['curves'][516]['res_net'] -['path_tpc']['curves'][517]['offset'] +['path_tpc']['curves'][516]['res_net_meters'] +['path_tpc']['curves'][517]['offset_meters'] ['path_tpc']['curves'][517]['res_coeff'] -['path_tpc']['curves'][517]['res_net'] -['path_tpc']['curves'][518]['offset'] +['path_tpc']['curves'][517]['res_net_meters'] +['path_tpc']['curves'][518]['offset_meters'] ['path_tpc']['curves'][518]['res_coeff'] -['path_tpc']['curves'][518]['res_net'] -['path_tpc']['curves'][519]['offset'] +['path_tpc']['curves'][518]['res_net_meters'] +['path_tpc']['curves'][519]['offset_meters'] ['path_tpc']['curves'][519]['res_coeff'] -['path_tpc']['curves'][519]['res_net'] -['path_tpc']['curves'][520]['offset'] +['path_tpc']['curves'][519]['res_net_meters'] +['path_tpc']['curves'][520]['offset_meters'] ['path_tpc']['curves'][520]['res_coeff'] -['path_tpc']['curves'][520]['res_net'] -['path_tpc']['curves'][521]['offset'] +['path_tpc']['curves'][520]['res_net_meters'] +['path_tpc']['curves'][521]['offset_meters'] ['path_tpc']['curves'][521]['res_coeff'] -['path_tpc']['curves'][521]['res_net'] -['path_tpc']['curves'][522]['offset'] +['path_tpc']['curves'][521]['res_net_meters'] +['path_tpc']['curves'][522]['offset_meters'] ['path_tpc']['curves'][522]['res_coeff'] -['path_tpc']['curves'][522]['res_net'] -['path_tpc']['curves'][523]['offset'] +['path_tpc']['curves'][522]['res_net_meters'] +['path_tpc']['curves'][523]['offset_meters'] ['path_tpc']['curves'][523]['res_coeff'] -['path_tpc']['curves'][523]['res_net'] -['path_tpc']['curves'][524]['offset'] +['path_tpc']['curves'][523]['res_net_meters'] +['path_tpc']['curves'][524]['offset_meters'] ['path_tpc']['curves'][524]['res_coeff'] -['path_tpc']['curves'][524]['res_net'] -['path_tpc']['curves'][525]['offset'] +['path_tpc']['curves'][524]['res_net_meters'] +['path_tpc']['curves'][525]['offset_meters'] ['path_tpc']['curves'][525]['res_coeff'] -['path_tpc']['curves'][525]['res_net'] -['path_tpc']['curves'][526]['offset'] +['path_tpc']['curves'][525]['res_net_meters'] +['path_tpc']['curves'][526]['offset_meters'] ['path_tpc']['curves'][526]['res_coeff'] -['path_tpc']['curves'][526]['res_net'] -['path_tpc']['curves'][527]['offset'] +['path_tpc']['curves'][526]['res_net_meters'] +['path_tpc']['curves'][527]['offset_meters'] ['path_tpc']['curves'][527]['res_coeff'] -['path_tpc']['curves'][527]['res_net'] -['path_tpc']['curves'][528]['offset'] +['path_tpc']['curves'][527]['res_net_meters'] +['path_tpc']['curves'][528]['offset_meters'] ['path_tpc']['curves'][528]['res_coeff'] -['path_tpc']['curves'][528]['res_net'] -['path_tpc']['curves'][529]['offset'] +['path_tpc']['curves'][528]['res_net_meters'] +['path_tpc']['curves'][529]['offset_meters'] ['path_tpc']['curves'][529]['res_coeff'] -['path_tpc']['curves'][529]['res_net'] -['path_tpc']['curves'][530]['offset'] +['path_tpc']['curves'][529]['res_net_meters'] +['path_tpc']['curves'][530]['offset_meters'] ['path_tpc']['curves'][530]['res_coeff'] -['path_tpc']['curves'][530]['res_net'] -['path_tpc']['curves'][531]['offset'] +['path_tpc']['curves'][530]['res_net_meters'] +['path_tpc']['curves'][531]['offset_meters'] ['path_tpc']['curves'][531]['res_coeff'] -['path_tpc']['curves'][531]['res_net'] -['path_tpc']['curves'][532]['offset'] +['path_tpc']['curves'][531]['res_net_meters'] +['path_tpc']['curves'][532]['offset_meters'] ['path_tpc']['curves'][532]['res_coeff'] -['path_tpc']['curves'][532]['res_net'] -['path_tpc']['curves'][533]['offset'] +['path_tpc']['curves'][532]['res_net_meters'] +['path_tpc']['curves'][533]['offset_meters'] ['path_tpc']['curves'][533]['res_coeff'] -['path_tpc']['curves'][533]['res_net'] -['path_tpc']['curves'][534]['offset'] +['path_tpc']['curves'][533]['res_net_meters'] +['path_tpc']['curves'][534]['offset_meters'] ['path_tpc']['curves'][534]['res_coeff'] -['path_tpc']['curves'][534]['res_net'] -['path_tpc']['curves'][535]['offset'] +['path_tpc']['curves'][534]['res_net_meters'] +['path_tpc']['curves'][535]['offset_meters'] ['path_tpc']['curves'][535]['res_coeff'] -['path_tpc']['curves'][535]['res_net'] -['path_tpc']['curves'][536]['offset'] +['path_tpc']['curves'][535]['res_net_meters'] +['path_tpc']['curves'][536]['offset_meters'] ['path_tpc']['curves'][536]['res_coeff'] -['path_tpc']['curves'][536]['res_net'] -['path_tpc']['curves'][537]['offset'] +['path_tpc']['curves'][536]['res_net_meters'] +['path_tpc']['curves'][537]['offset_meters'] ['path_tpc']['curves'][537]['res_coeff'] -['path_tpc']['curves'][537]['res_net'] -['path_tpc']['curves'][538]['offset'] +['path_tpc']['curves'][537]['res_net_meters'] +['path_tpc']['curves'][538]['offset_meters'] ['path_tpc']['curves'][538]['res_coeff'] -['path_tpc']['curves'][538]['res_net'] -['path_tpc']['curves'][539]['offset'] +['path_tpc']['curves'][538]['res_net_meters'] +['path_tpc']['curves'][539]['offset_meters'] ['path_tpc']['curves'][539]['res_coeff'] -['path_tpc']['curves'][539]['res_net'] -['path_tpc']['curves'][540]['offset'] +['path_tpc']['curves'][539]['res_net_meters'] +['path_tpc']['curves'][540]['offset_meters'] ['path_tpc']['curves'][540]['res_coeff'] -['path_tpc']['curves'][540]['res_net'] -['path_tpc']['curves'][541]['offset'] +['path_tpc']['curves'][540]['res_net_meters'] +['path_tpc']['curves'][541]['offset_meters'] ['path_tpc']['curves'][541]['res_coeff'] -['path_tpc']['curves'][541]['res_net'] -['path_tpc']['curves'][542]['offset'] +['path_tpc']['curves'][541]['res_net_meters'] +['path_tpc']['curves'][542]['offset_meters'] ['path_tpc']['curves'][542]['res_coeff'] -['path_tpc']['curves'][542]['res_net'] -['path_tpc']['curves'][543]['offset'] +['path_tpc']['curves'][542]['res_net_meters'] +['path_tpc']['curves'][543]['offset_meters'] ['path_tpc']['curves'][543]['res_coeff'] -['path_tpc']['curves'][543]['res_net'] -['path_tpc']['curves'][544]['offset'] +['path_tpc']['curves'][543]['res_net_meters'] +['path_tpc']['curves'][544]['offset_meters'] ['path_tpc']['curves'][544]['res_coeff'] -['path_tpc']['curves'][544]['res_net'] -['path_tpc']['curves'][545]['offset'] +['path_tpc']['curves'][544]['res_net_meters'] +['path_tpc']['curves'][545]['offset_meters'] ['path_tpc']['curves'][545]['res_coeff'] -['path_tpc']['curves'][545]['res_net'] -['path_tpc']['curves'][546]['offset'] +['path_tpc']['curves'][545]['res_net_meters'] +['path_tpc']['curves'][546]['offset_meters'] ['path_tpc']['curves'][546]['res_coeff'] -['path_tpc']['curves'][546]['res_net'] -['path_tpc']['curves'][547]['offset'] +['path_tpc']['curves'][546]['res_net_meters'] +['path_tpc']['curves'][547]['offset_meters'] ['path_tpc']['curves'][547]['res_coeff'] -['path_tpc']['curves'][547]['res_net'] -['path_tpc']['curves'][548]['offset'] +['path_tpc']['curves'][547]['res_net_meters'] +['path_tpc']['curves'][548]['offset_meters'] ['path_tpc']['curves'][548]['res_coeff'] -['path_tpc']['curves'][548]['res_net'] -['path_tpc']['curves'][549]['offset'] +['path_tpc']['curves'][548]['res_net_meters'] +['path_tpc']['curves'][549]['offset_meters'] ['path_tpc']['curves'][549]['res_coeff'] -['path_tpc']['curves'][549]['res_net'] -['path_tpc']['curves'][550]['offset'] +['path_tpc']['curves'][549]['res_net_meters'] +['path_tpc']['curves'][550]['offset_meters'] ['path_tpc']['curves'][550]['res_coeff'] -['path_tpc']['curves'][550]['res_net'] -['path_tpc']['curves'][551]['offset'] +['path_tpc']['curves'][550]['res_net_meters'] +['path_tpc']['curves'][551]['offset_meters'] ['path_tpc']['curves'][551]['res_coeff'] -['path_tpc']['curves'][551]['res_net'] -['path_tpc']['curves'][552]['offset'] +['path_tpc']['curves'][551]['res_net_meters'] +['path_tpc']['curves'][552]['offset_meters'] ['path_tpc']['curves'][552]['res_coeff'] -['path_tpc']['curves'][552]['res_net'] -['path_tpc']['curves'][553]['offset'] +['path_tpc']['curves'][552]['res_net_meters'] +['path_tpc']['curves'][553]['offset_meters'] ['path_tpc']['curves'][553]['res_coeff'] -['path_tpc']['curves'][553]['res_net'] -['path_tpc']['curves'][554]['offset'] +['path_tpc']['curves'][553]['res_net_meters'] +['path_tpc']['curves'][554]['offset_meters'] ['path_tpc']['curves'][554]['res_coeff'] -['path_tpc']['curves'][554]['res_net'] -['path_tpc']['curves'][555]['offset'] +['path_tpc']['curves'][554]['res_net_meters'] +['path_tpc']['curves'][555]['offset_meters'] ['path_tpc']['curves'][555]['res_coeff'] -['path_tpc']['curves'][555]['res_net'] -['path_tpc']['curves'][556]['offset'] +['path_tpc']['curves'][555]['res_net_meters'] +['path_tpc']['curves'][556]['offset_meters'] ['path_tpc']['curves'][556]['res_coeff'] -['path_tpc']['curves'][556]['res_net'] -['path_tpc']['curves'][557]['offset'] +['path_tpc']['curves'][556]['res_net_meters'] +['path_tpc']['curves'][557]['offset_meters'] ['path_tpc']['curves'][557]['res_coeff'] -['path_tpc']['curves'][557]['res_net'] -['path_tpc']['curves'][558]['offset'] +['path_tpc']['curves'][557]['res_net_meters'] +['path_tpc']['curves'][558]['offset_meters'] ['path_tpc']['curves'][558]['res_coeff'] -['path_tpc']['curves'][558]['res_net'] -['path_tpc']['curves'][559]['offset'] +['path_tpc']['curves'][558]['res_net_meters'] +['path_tpc']['curves'][559]['offset_meters'] ['path_tpc']['curves'][559]['res_coeff'] -['path_tpc']['curves'][559]['res_net'] -['path_tpc']['curves'][560]['offset'] +['path_tpc']['curves'][559]['res_net_meters'] +['path_tpc']['curves'][560]['offset_meters'] ['path_tpc']['curves'][560]['res_coeff'] -['path_tpc']['curves'][560]['res_net'] -['path_tpc']['curves'][561]['offset'] +['path_tpc']['curves'][560]['res_net_meters'] +['path_tpc']['curves'][561]['offset_meters'] ['path_tpc']['curves'][561]['res_coeff'] -['path_tpc']['curves'][561]['res_net'] -['path_tpc']['curves'][562]['offset'] +['path_tpc']['curves'][561]['res_net_meters'] +['path_tpc']['curves'][562]['offset_meters'] ['path_tpc']['curves'][562]['res_coeff'] -['path_tpc']['curves'][562]['res_net'] -['path_tpc']['curves'][563]['offset'] +['path_tpc']['curves'][562]['res_net_meters'] +['path_tpc']['curves'][563]['offset_meters'] ['path_tpc']['curves'][563]['res_coeff'] -['path_tpc']['curves'][563]['res_net'] -['path_tpc']['curves'][564]['offset'] +['path_tpc']['curves'][563]['res_net_meters'] +['path_tpc']['curves'][564]['offset_meters'] ['path_tpc']['curves'][564]['res_coeff'] -['path_tpc']['curves'][564]['res_net'] -['path_tpc']['curves'][565]['offset'] +['path_tpc']['curves'][564]['res_net_meters'] +['path_tpc']['curves'][565]['offset_meters'] ['path_tpc']['curves'][565]['res_coeff'] -['path_tpc']['curves'][565]['res_net'] -['path_tpc']['curves'][566]['offset'] +['path_tpc']['curves'][565]['res_net_meters'] +['path_tpc']['curves'][566]['offset_meters'] ['path_tpc']['curves'][566]['res_coeff'] -['path_tpc']['curves'][566]['res_net'] -['path_tpc']['curves'][567]['offset'] +['path_tpc']['curves'][566]['res_net_meters'] +['path_tpc']['curves'][567]['offset_meters'] ['path_tpc']['curves'][567]['res_coeff'] -['path_tpc']['curves'][567]['res_net'] -['path_tpc']['curves'][568]['offset'] +['path_tpc']['curves'][567]['res_net_meters'] +['path_tpc']['curves'][568]['offset_meters'] ['path_tpc']['curves'][568]['res_coeff'] -['path_tpc']['curves'][568]['res_net'] -['path_tpc']['curves'][569]['offset'] +['path_tpc']['curves'][568]['res_net_meters'] +['path_tpc']['curves'][569]['offset_meters'] ['path_tpc']['curves'][569]['res_coeff'] -['path_tpc']['curves'][569]['res_net'] -['path_tpc']['curves'][570]['offset'] +['path_tpc']['curves'][569]['res_net_meters'] +['path_tpc']['curves'][570]['offset_meters'] ['path_tpc']['curves'][570]['res_coeff'] -['path_tpc']['curves'][570]['res_net'] -['path_tpc']['curves'][571]['offset'] +['path_tpc']['curves'][570]['res_net_meters'] +['path_tpc']['curves'][571]['offset_meters'] ['path_tpc']['curves'][571]['res_coeff'] -['path_tpc']['curves'][571]['res_net'] -['path_tpc']['curves'][572]['offset'] +['path_tpc']['curves'][571]['res_net_meters'] +['path_tpc']['curves'][572]['offset_meters'] ['path_tpc']['curves'][572]['res_coeff'] -['path_tpc']['curves'][572]['res_net'] -['path_tpc']['curves'][573]['offset'] +['path_tpc']['curves'][572]['res_net_meters'] +['path_tpc']['curves'][573]['offset_meters'] ['path_tpc']['curves'][573]['res_coeff'] -['path_tpc']['curves'][573]['res_net'] -['path_tpc']['curves'][574]['offset'] +['path_tpc']['curves'][573]['res_net_meters'] +['path_tpc']['curves'][574]['offset_meters'] ['path_tpc']['curves'][574]['res_coeff'] -['path_tpc']['curves'][574]['res_net'] -['path_tpc']['curves'][575]['offset'] +['path_tpc']['curves'][574]['res_net_meters'] +['path_tpc']['curves'][575]['offset_meters'] ['path_tpc']['curves'][575]['res_coeff'] -['path_tpc']['curves'][575]['res_net'] -['path_tpc']['curves'][576]['offset'] +['path_tpc']['curves'][575]['res_net_meters'] +['path_tpc']['curves'][576]['offset_meters'] ['path_tpc']['curves'][576]['res_coeff'] -['path_tpc']['curves'][576]['res_net'] -['path_tpc']['curves'][577]['offset'] +['path_tpc']['curves'][576]['res_net_meters'] +['path_tpc']['curves'][577]['offset_meters'] ['path_tpc']['curves'][577]['res_coeff'] -['path_tpc']['curves'][577]['res_net'] -['path_tpc']['curves'][578]['offset'] +['path_tpc']['curves'][577]['res_net_meters'] +['path_tpc']['curves'][578]['offset_meters'] ['path_tpc']['curves'][578]['res_coeff'] -['path_tpc']['curves'][578]['res_net'] -['path_tpc']['curves'][579]['offset'] +['path_tpc']['curves'][578]['res_net_meters'] +['path_tpc']['curves'][579]['offset_meters'] ['path_tpc']['curves'][579]['res_coeff'] -['path_tpc']['curves'][579]['res_net'] -['path_tpc']['curves'][580]['offset'] +['path_tpc']['curves'][579]['res_net_meters'] +['path_tpc']['curves'][580]['offset_meters'] ['path_tpc']['curves'][580]['res_coeff'] -['path_tpc']['curves'][580]['res_net'] -['path_tpc']['curves'][581]['offset'] +['path_tpc']['curves'][580]['res_net_meters'] +['path_tpc']['curves'][581]['offset_meters'] ['path_tpc']['curves'][581]['res_coeff'] -['path_tpc']['curves'][581]['res_net'] -['path_tpc']['curves'][582]['offset'] +['path_tpc']['curves'][581]['res_net_meters'] +['path_tpc']['curves'][582]['offset_meters'] ['path_tpc']['curves'][582]['res_coeff'] -['path_tpc']['curves'][582]['res_net'] -['path_tpc']['curves'][583]['offset'] +['path_tpc']['curves'][582]['res_net_meters'] +['path_tpc']['curves'][583]['offset_meters'] ['path_tpc']['curves'][583]['res_coeff'] -['path_tpc']['curves'][583]['res_net'] -['path_tpc']['curves'][584]['offset'] +['path_tpc']['curves'][583]['res_net_meters'] +['path_tpc']['curves'][584]['offset_meters'] ['path_tpc']['curves'][584]['res_coeff'] -['path_tpc']['curves'][584]['res_net'] -['path_tpc']['curves'][585]['offset'] +['path_tpc']['curves'][584]['res_net_meters'] +['path_tpc']['curves'][585]['offset_meters'] ['path_tpc']['curves'][585]['res_coeff'] -['path_tpc']['curves'][585]['res_net'] -['path_tpc']['curves'][586]['offset'] +['path_tpc']['curves'][585]['res_net_meters'] +['path_tpc']['curves'][586]['offset_meters'] ['path_tpc']['curves'][586]['res_coeff'] -['path_tpc']['curves'][586]['res_net'] -['path_tpc']['curves'][587]['offset'] +['path_tpc']['curves'][586]['res_net_meters'] +['path_tpc']['curves'][587]['offset_meters'] ['path_tpc']['curves'][587]['res_coeff'] -['path_tpc']['curves'][587]['res_net'] -['path_tpc']['curves'][588]['offset'] +['path_tpc']['curves'][587]['res_net_meters'] +['path_tpc']['curves'][588]['offset_meters'] ['path_tpc']['curves'][588]['res_coeff'] -['path_tpc']['curves'][588]['res_net'] -['path_tpc']['curves'][589]['offset'] +['path_tpc']['curves'][588]['res_net_meters'] +['path_tpc']['curves'][589]['offset_meters'] ['path_tpc']['curves'][589]['res_coeff'] -['path_tpc']['curves'][589]['res_net'] -['path_tpc']['curves'][590]['offset'] +['path_tpc']['curves'][589]['res_net_meters'] +['path_tpc']['curves'][590]['offset_meters'] ['path_tpc']['curves'][590]['res_coeff'] -['path_tpc']['curves'][590]['res_net'] -['path_tpc']['curves'][591]['offset'] +['path_tpc']['curves'][590]['res_net_meters'] +['path_tpc']['curves'][591]['offset_meters'] ['path_tpc']['curves'][591]['res_coeff'] -['path_tpc']['curves'][591]['res_net'] -['path_tpc']['curves'][592]['offset'] +['path_tpc']['curves'][591]['res_net_meters'] +['path_tpc']['curves'][592]['offset_meters'] ['path_tpc']['curves'][592]['res_coeff'] -['path_tpc']['curves'][592]['res_net'] -['path_tpc']['curves'][593]['offset'] +['path_tpc']['curves'][592]['res_net_meters'] +['path_tpc']['curves'][593]['offset_meters'] ['path_tpc']['curves'][593]['res_coeff'] -['path_tpc']['curves'][593]['res_net'] -['path_tpc']['curves'][594]['offset'] +['path_tpc']['curves'][593]['res_net_meters'] +['path_tpc']['curves'][594]['offset_meters'] ['path_tpc']['curves'][594]['res_coeff'] -['path_tpc']['curves'][594]['res_net'] -['path_tpc']['curves'][595]['offset'] +['path_tpc']['curves'][594]['res_net_meters'] +['path_tpc']['curves'][595]['offset_meters'] ['path_tpc']['curves'][595]['res_coeff'] -['path_tpc']['curves'][595]['res_net'] -['path_tpc']['curves'][596]['offset'] +['path_tpc']['curves'][595]['res_net_meters'] +['path_tpc']['curves'][596]['offset_meters'] ['path_tpc']['curves'][596]['res_coeff'] -['path_tpc']['curves'][596]['res_net'] -['path_tpc']['curves'][597]['offset'] +['path_tpc']['curves'][596]['res_net_meters'] +['path_tpc']['curves'][597]['offset_meters'] ['path_tpc']['curves'][597]['res_coeff'] -['path_tpc']['curves'][597]['res_net'] -['path_tpc']['curves'][598]['offset'] +['path_tpc']['curves'][597]['res_net_meters'] +['path_tpc']['curves'][598]['offset_meters'] ['path_tpc']['curves'][598]['res_coeff'] -['path_tpc']['curves'][598]['res_net'] -['path_tpc']['curves'][599]['offset'] +['path_tpc']['curves'][598]['res_net_meters'] +['path_tpc']['curves'][599]['offset_meters'] ['path_tpc']['curves'][599]['res_coeff'] -['path_tpc']['curves'][599]['res_net'] -['path_tpc']['curves'][600]['offset'] +['path_tpc']['curves'][599]['res_net_meters'] +['path_tpc']['curves'][600]['offset_meters'] ['path_tpc']['curves'][600]['res_coeff'] -['path_tpc']['curves'][600]['res_net'] -['path_tpc']['curves'][601]['offset'] +['path_tpc']['curves'][600]['res_net_meters'] +['path_tpc']['curves'][601]['offset_meters'] ['path_tpc']['curves'][601]['res_coeff'] -['path_tpc']['curves'][601]['res_net'] -['path_tpc']['curves'][602]['offset'] +['path_tpc']['curves'][601]['res_net_meters'] +['path_tpc']['curves'][602]['offset_meters'] ['path_tpc']['curves'][602]['res_coeff'] -['path_tpc']['curves'][602]['res_net'] -['path_tpc']['curves'][603]['offset'] +['path_tpc']['curves'][602]['res_net_meters'] +['path_tpc']['curves'][603]['offset_meters'] ['path_tpc']['curves'][603]['res_coeff'] -['path_tpc']['curves'][603]['res_net'] -['path_tpc']['curves'][604]['offset'] +['path_tpc']['curves'][603]['res_net_meters'] +['path_tpc']['curves'][604]['offset_meters'] ['path_tpc']['curves'][604]['res_coeff'] -['path_tpc']['curves'][604]['res_net'] -['path_tpc']['curves'][605]['offset'] +['path_tpc']['curves'][604]['res_net_meters'] +['path_tpc']['curves'][605]['offset_meters'] ['path_tpc']['curves'][605]['res_coeff'] -['path_tpc']['curves'][605]['res_net'] -['path_tpc']['curves'][606]['offset'] +['path_tpc']['curves'][605]['res_net_meters'] +['path_tpc']['curves'][606]['offset_meters'] ['path_tpc']['curves'][606]['res_coeff'] -['path_tpc']['curves'][606]['res_net'] -['path_tpc']['curves'][607]['offset'] +['path_tpc']['curves'][606]['res_net_meters'] +['path_tpc']['curves'][607]['offset_meters'] ['path_tpc']['curves'][607]['res_coeff'] -['path_tpc']['curves'][607]['res_net'] -['path_tpc']['curves'][608]['offset'] +['path_tpc']['curves'][607]['res_net_meters'] +['path_tpc']['curves'][608]['offset_meters'] ['path_tpc']['curves'][608]['res_coeff'] -['path_tpc']['curves'][608]['res_net'] -['path_tpc']['curves'][609]['offset'] +['path_tpc']['curves'][608]['res_net_meters'] +['path_tpc']['curves'][609]['offset_meters'] ['path_tpc']['curves'][609]['res_coeff'] -['path_tpc']['curves'][609]['res_net'] -['path_tpc']['curves'][610]['offset'] +['path_tpc']['curves'][609]['res_net_meters'] +['path_tpc']['curves'][610]['offset_meters'] ['path_tpc']['curves'][610]['res_coeff'] -['path_tpc']['curves'][610]['res_net'] -['path_tpc']['curves'][611]['offset'] +['path_tpc']['curves'][610]['res_net_meters'] +['path_tpc']['curves'][611]['offset_meters'] ['path_tpc']['curves'][611]['res_coeff'] -['path_tpc']['curves'][611]['res_net'] -['path_tpc']['curves'][612]['offset'] +['path_tpc']['curves'][611]['res_net_meters'] +['path_tpc']['curves'][612]['offset_meters'] ['path_tpc']['curves'][612]['res_coeff'] -['path_tpc']['curves'][612]['res_net'] -['path_tpc']['curves'][613]['offset'] +['path_tpc']['curves'][612]['res_net_meters'] +['path_tpc']['curves'][613]['offset_meters'] ['path_tpc']['curves'][613]['res_coeff'] -['path_tpc']['curves'][613]['res_net'] -['path_tpc']['curves'][614]['offset'] +['path_tpc']['curves'][613]['res_net_meters'] +['path_tpc']['curves'][614]['offset_meters'] ['path_tpc']['curves'][614]['res_coeff'] -['path_tpc']['curves'][614]['res_net'] -['path_tpc']['curves'][615]['offset'] +['path_tpc']['curves'][614]['res_net_meters'] +['path_tpc']['curves'][615]['offset_meters'] ['path_tpc']['curves'][615]['res_coeff'] -['path_tpc']['curves'][615]['res_net'] -['path_tpc']['curves'][616]['offset'] +['path_tpc']['curves'][615]['res_net_meters'] +['path_tpc']['curves'][616]['offset_meters'] ['path_tpc']['curves'][616]['res_coeff'] -['path_tpc']['curves'][616]['res_net'] -['path_tpc']['curves'][617]['offset'] +['path_tpc']['curves'][616]['res_net_meters'] +['path_tpc']['curves'][617]['offset_meters'] ['path_tpc']['curves'][617]['res_coeff'] -['path_tpc']['curves'][617]['res_net'] -['path_tpc']['curves'][618]['offset'] +['path_tpc']['curves'][617]['res_net_meters'] +['path_tpc']['curves'][618]['offset_meters'] ['path_tpc']['curves'][618]['res_coeff'] -['path_tpc']['curves'][618]['res_net'] -['path_tpc']['curves'][619]['offset'] +['path_tpc']['curves'][618]['res_net_meters'] +['path_tpc']['curves'][619]['offset_meters'] ['path_tpc']['curves'][619]['res_coeff'] -['path_tpc']['curves'][619]['res_net'] -['path_tpc']['curves'][620]['offset'] +['path_tpc']['curves'][619]['res_net_meters'] +['path_tpc']['curves'][620]['offset_meters'] ['path_tpc']['curves'][620]['res_coeff'] -['path_tpc']['curves'][620]['res_net'] -['path_tpc']['curves'][621]['offset'] +['path_tpc']['curves'][620]['res_net_meters'] +['path_tpc']['curves'][621]['offset_meters'] ['path_tpc']['curves'][621]['res_coeff'] -['path_tpc']['curves'][621]['res_net'] -['path_tpc']['curves'][622]['offset'] +['path_tpc']['curves'][621]['res_net_meters'] +['path_tpc']['curves'][622]['offset_meters'] ['path_tpc']['curves'][622]['res_coeff'] -['path_tpc']['curves'][622]['res_net'] -['path_tpc']['curves'][623]['offset'] +['path_tpc']['curves'][622]['res_net_meters'] +['path_tpc']['curves'][623]['offset_meters'] ['path_tpc']['curves'][623]['res_coeff'] -['path_tpc']['curves'][623]['res_net'] -['path_tpc']['curves'][624]['offset'] +['path_tpc']['curves'][623]['res_net_meters'] +['path_tpc']['curves'][624]['offset_meters'] ['path_tpc']['curves'][624]['res_coeff'] -['path_tpc']['curves'][624]['res_net'] -['path_tpc']['curves'][625]['offset'] +['path_tpc']['curves'][624]['res_net_meters'] +['path_tpc']['curves'][625]['offset_meters'] ['path_tpc']['curves'][625]['res_coeff'] -['path_tpc']['curves'][625]['res_net'] -['path_tpc']['curves'][626]['offset'] +['path_tpc']['curves'][625]['res_net_meters'] +['path_tpc']['curves'][626]['offset_meters'] ['path_tpc']['curves'][626]['res_coeff'] -['path_tpc']['curves'][626]['res_net'] -['path_tpc']['curves'][627]['offset'] +['path_tpc']['curves'][626]['res_net_meters'] +['path_tpc']['curves'][627]['offset_meters'] ['path_tpc']['curves'][627]['res_coeff'] -['path_tpc']['curves'][627]['res_net'] -['path_tpc']['curves'][628]['offset'] +['path_tpc']['curves'][627]['res_net_meters'] +['path_tpc']['curves'][628]['offset_meters'] ['path_tpc']['curves'][628]['res_coeff'] -['path_tpc']['curves'][628]['res_net'] -['path_tpc']['curves'][629]['offset'] +['path_tpc']['curves'][628]['res_net_meters'] +['path_tpc']['curves'][629]['offset_meters'] ['path_tpc']['curves'][629]['res_coeff'] -['path_tpc']['curves'][629]['res_net'] -['path_tpc']['curves'][630]['offset'] +['path_tpc']['curves'][629]['res_net_meters'] +['path_tpc']['curves'][630]['offset_meters'] ['path_tpc']['curves'][630]['res_coeff'] -['path_tpc']['curves'][630]['res_net'] -['path_tpc']['curves'][631]['offset'] +['path_tpc']['curves'][630]['res_net_meters'] +['path_tpc']['curves'][631]['offset_meters'] ['path_tpc']['curves'][631]['res_coeff'] -['path_tpc']['curves'][631]['res_net'] -['path_tpc']['curves'][632]['offset'] +['path_tpc']['curves'][631]['res_net_meters'] +['path_tpc']['curves'][632]['offset_meters'] ['path_tpc']['curves'][632]['res_coeff'] -['path_tpc']['curves'][632]['res_net'] -['path_tpc']['curves'][633]['offset'] +['path_tpc']['curves'][632]['res_net_meters'] +['path_tpc']['curves'][633]['offset_meters'] ['path_tpc']['curves'][633]['res_coeff'] -['path_tpc']['curves'][633]['res_net'] -['path_tpc']['curves'][634]['offset'] +['path_tpc']['curves'][633]['res_net_meters'] +['path_tpc']['curves'][634]['offset_meters'] ['path_tpc']['curves'][634]['res_coeff'] -['path_tpc']['curves'][634]['res_net'] -['path_tpc']['curves'][635]['offset'] +['path_tpc']['curves'][634]['res_net_meters'] +['path_tpc']['curves'][635]['offset_meters'] ['path_tpc']['curves'][635]['res_coeff'] -['path_tpc']['curves'][635]['res_net'] -['path_tpc']['curves'][636]['offset'] +['path_tpc']['curves'][635]['res_net_meters'] +['path_tpc']['curves'][636]['offset_meters'] ['path_tpc']['curves'][636]['res_coeff'] -['path_tpc']['curves'][636]['res_net'] -['path_tpc']['curves'][637]['offset'] +['path_tpc']['curves'][636]['res_net_meters'] +['path_tpc']['curves'][637]['offset_meters'] ['path_tpc']['curves'][637]['res_coeff'] -['path_tpc']['curves'][637]['res_net'] -['path_tpc']['curves'][638]['offset'] +['path_tpc']['curves'][637]['res_net_meters'] +['path_tpc']['curves'][638]['offset_meters'] ['path_tpc']['curves'][638]['res_coeff'] -['path_tpc']['curves'][638]['res_net'] -['path_tpc']['curves'][639]['offset'] +['path_tpc']['curves'][638]['res_net_meters'] +['path_tpc']['curves'][639]['offset_meters'] ['path_tpc']['curves'][639]['res_coeff'] -['path_tpc']['curves'][639]['res_net'] -['path_tpc']['curves'][640]['offset'] +['path_tpc']['curves'][639]['res_net_meters'] +['path_tpc']['curves'][640]['offset_meters'] ['path_tpc']['curves'][640]['res_coeff'] -['path_tpc']['curves'][640]['res_net'] -['path_tpc']['curves'][641]['offset'] +['path_tpc']['curves'][640]['res_net_meters'] +['path_tpc']['curves'][641]['offset_meters'] ['path_tpc']['curves'][641]['res_coeff'] -['path_tpc']['curves'][641]['res_net'] -['path_tpc']['curves'][642]['offset'] +['path_tpc']['curves'][641]['res_net_meters'] +['path_tpc']['curves'][642]['offset_meters'] ['path_tpc']['curves'][642]['res_coeff'] -['path_tpc']['curves'][642]['res_net'] -['path_tpc']['curves'][643]['offset'] +['path_tpc']['curves'][642]['res_net_meters'] +['path_tpc']['curves'][643]['offset_meters'] ['path_tpc']['curves'][643]['res_coeff'] -['path_tpc']['curves'][643]['res_net'] -['path_tpc']['curves'][644]['offset'] +['path_tpc']['curves'][643]['res_net_meters'] +['path_tpc']['curves'][644]['offset_meters'] ['path_tpc']['curves'][644]['res_coeff'] -['path_tpc']['curves'][644]['res_net'] -['path_tpc']['curves'][645]['offset'] +['path_tpc']['curves'][644]['res_net_meters'] +['path_tpc']['curves'][645]['offset_meters'] ['path_tpc']['curves'][645]['res_coeff'] -['path_tpc']['curves'][645]['res_net'] -['path_tpc']['curves'][646]['offset'] +['path_tpc']['curves'][645]['res_net_meters'] +['path_tpc']['curves'][646]['offset_meters'] ['path_tpc']['curves'][646]['res_coeff'] -['path_tpc']['curves'][646]['res_net'] -['path_tpc']['curves'][647]['offset'] +['path_tpc']['curves'][646]['res_net_meters'] +['path_tpc']['curves'][647]['offset_meters'] ['path_tpc']['curves'][647]['res_coeff'] -['path_tpc']['curves'][647]['res_net'] -['path_tpc']['curves'][648]['offset'] +['path_tpc']['curves'][647]['res_net_meters'] +['path_tpc']['curves'][648]['offset_meters'] ['path_tpc']['curves'][648]['res_coeff'] -['path_tpc']['curves'][648]['res_net'] -['path_tpc']['curves'][649]['offset'] +['path_tpc']['curves'][648]['res_net_meters'] +['path_tpc']['curves'][649]['offset_meters'] ['path_tpc']['curves'][649]['res_coeff'] -['path_tpc']['curves'][649]['res_net'] -['path_tpc']['curves'][650]['offset'] +['path_tpc']['curves'][649]['res_net_meters'] +['path_tpc']['curves'][650]['offset_meters'] ['path_tpc']['curves'][650]['res_coeff'] -['path_tpc']['curves'][650]['res_net'] -['path_tpc']['curves'][651]['offset'] +['path_tpc']['curves'][650]['res_net_meters'] +['path_tpc']['curves'][651]['offset_meters'] ['path_tpc']['curves'][651]['res_coeff'] -['path_tpc']['curves'][651]['res_net'] -['path_tpc']['curves'][652]['offset'] +['path_tpc']['curves'][651]['res_net_meters'] +['path_tpc']['curves'][652]['offset_meters'] ['path_tpc']['curves'][652]['res_coeff'] -['path_tpc']['curves'][652]['res_net'] -['path_tpc']['curves'][653]['offset'] +['path_tpc']['curves'][652]['res_net_meters'] +['path_tpc']['curves'][653]['offset_meters'] ['path_tpc']['curves'][653]['res_coeff'] -['path_tpc']['curves'][653]['res_net'] -['path_tpc']['curves'][654]['offset'] +['path_tpc']['curves'][653]['res_net_meters'] +['path_tpc']['curves'][654]['offset_meters'] ['path_tpc']['curves'][654]['res_coeff'] -['path_tpc']['curves'][654]['res_net'] -['path_tpc']['curves'][655]['offset'] +['path_tpc']['curves'][654]['res_net_meters'] +['path_tpc']['curves'][655]['offset_meters'] ['path_tpc']['curves'][655]['res_coeff'] -['path_tpc']['curves'][655]['res_net'] -['path_tpc']['curves'][656]['offset'] +['path_tpc']['curves'][655]['res_net_meters'] +['path_tpc']['curves'][656]['offset_meters'] ['path_tpc']['curves'][656]['res_coeff'] -['path_tpc']['curves'][656]['res_net'] -['path_tpc']['curves'][657]['offset'] +['path_tpc']['curves'][656]['res_net_meters'] +['path_tpc']['curves'][657]['offset_meters'] ['path_tpc']['curves'][657]['res_coeff'] -['path_tpc']['curves'][657]['res_net'] -['path_tpc']['curves'][658]['offset'] +['path_tpc']['curves'][657]['res_net_meters'] +['path_tpc']['curves'][658]['offset_meters'] ['path_tpc']['curves'][658]['res_coeff'] -['path_tpc']['curves'][658]['res_net'] -['path_tpc']['curves'][659]['offset'] +['path_tpc']['curves'][658]['res_net_meters'] +['path_tpc']['curves'][659]['offset_meters'] ['path_tpc']['curves'][659]['res_coeff'] -['path_tpc']['curves'][659]['res_net'] -['path_tpc']['curves'][660]['offset'] +['path_tpc']['curves'][659]['res_net_meters'] +['path_tpc']['curves'][660]['offset_meters'] ['path_tpc']['curves'][660]['res_coeff'] -['path_tpc']['curves'][660]['res_net'] -['path_tpc']['curves'][661]['offset'] +['path_tpc']['curves'][660]['res_net_meters'] +['path_tpc']['curves'][661]['offset_meters'] ['path_tpc']['curves'][661]['res_coeff'] -['path_tpc']['curves'][661]['res_net'] -['path_tpc']['curves'][662]['offset'] +['path_tpc']['curves'][661]['res_net_meters'] +['path_tpc']['curves'][662]['offset_meters'] ['path_tpc']['curves'][662]['res_coeff'] -['path_tpc']['curves'][662]['res_net'] -['path_tpc']['curves'][663]['offset'] +['path_tpc']['curves'][662]['res_net_meters'] +['path_tpc']['curves'][663]['offset_meters'] ['path_tpc']['curves'][663]['res_coeff'] -['path_tpc']['curves'][663]['res_net'] -['path_tpc']['curves'][664]['offset'] +['path_tpc']['curves'][663]['res_net_meters'] +['path_tpc']['curves'][664]['offset_meters'] ['path_tpc']['curves'][664]['res_coeff'] -['path_tpc']['curves'][664]['res_net'] -['path_tpc']['curves'][665]['offset'] +['path_tpc']['curves'][664]['res_net_meters'] +['path_tpc']['curves'][665]['offset_meters'] ['path_tpc']['curves'][665]['res_coeff'] -['path_tpc']['curves'][665]['res_net'] -['path_tpc']['curves'][666]['offset'] +['path_tpc']['curves'][665]['res_net_meters'] +['path_tpc']['curves'][666]['offset_meters'] ['path_tpc']['curves'][666]['res_coeff'] -['path_tpc']['curves'][666]['res_net'] -['path_tpc']['curves'][667]['offset'] +['path_tpc']['curves'][666]['res_net_meters'] +['path_tpc']['curves'][667]['offset_meters'] ['path_tpc']['curves'][667]['res_coeff'] -['path_tpc']['curves'][667]['res_net'] -['path_tpc']['curves'][668]['offset'] +['path_tpc']['curves'][667]['res_net_meters'] +['path_tpc']['curves'][668]['offset_meters'] ['path_tpc']['curves'][668]['res_coeff'] -['path_tpc']['curves'][668]['res_net'] -['path_tpc']['curves'][669]['offset'] +['path_tpc']['curves'][668]['res_net_meters'] +['path_tpc']['curves'][669]['offset_meters'] ['path_tpc']['curves'][669]['res_coeff'] -['path_tpc']['curves'][669]['res_net'] -['path_tpc']['curves'][670]['offset'] +['path_tpc']['curves'][669]['res_net_meters'] +['path_tpc']['curves'][670]['offset_meters'] ['path_tpc']['curves'][670]['res_coeff'] -['path_tpc']['curves'][670]['res_net'] -['path_tpc']['curves'][671]['offset'] +['path_tpc']['curves'][670]['res_net_meters'] +['path_tpc']['curves'][671]['offset_meters'] ['path_tpc']['curves'][671]['res_coeff'] -['path_tpc']['curves'][671]['res_net'] -['path_tpc']['curves'][672]['offset'] +['path_tpc']['curves'][671]['res_net_meters'] +['path_tpc']['curves'][672]['offset_meters'] ['path_tpc']['curves'][672]['res_coeff'] -['path_tpc']['curves'][672]['res_net'] -['path_tpc']['curves'][673]['offset'] +['path_tpc']['curves'][672]['res_net_meters'] +['path_tpc']['curves'][673]['offset_meters'] ['path_tpc']['curves'][673]['res_coeff'] -['path_tpc']['curves'][673]['res_net'] -['path_tpc']['curves'][674]['offset'] +['path_tpc']['curves'][673]['res_net_meters'] +['path_tpc']['curves'][674]['offset_meters'] ['path_tpc']['curves'][674]['res_coeff'] -['path_tpc']['curves'][674]['res_net'] -['path_tpc']['curves'][675]['offset'] +['path_tpc']['curves'][674]['res_net_meters'] +['path_tpc']['curves'][675]['offset_meters'] ['path_tpc']['curves'][675]['res_coeff'] -['path_tpc']['curves'][675]['res_net'] -['path_tpc']['curves'][676]['offset'] +['path_tpc']['curves'][675]['res_net_meters'] +['path_tpc']['curves'][676]['offset_meters'] ['path_tpc']['curves'][676]['res_coeff'] -['path_tpc']['curves'][676]['res_net'] -['path_tpc']['curves'][677]['offset'] +['path_tpc']['curves'][676]['res_net_meters'] +['path_tpc']['curves'][677]['offset_meters'] ['path_tpc']['curves'][677]['res_coeff'] -['path_tpc']['curves'][677]['res_net'] -['path_tpc']['curves'][678]['offset'] +['path_tpc']['curves'][677]['res_net_meters'] +['path_tpc']['curves'][678]['offset_meters'] ['path_tpc']['curves'][678]['res_coeff'] -['path_tpc']['curves'][678]['res_net'] -['path_tpc']['curves'][679]['offset'] +['path_tpc']['curves'][678]['res_net_meters'] +['path_tpc']['curves'][679]['offset_meters'] ['path_tpc']['curves'][679]['res_coeff'] -['path_tpc']['curves'][679]['res_net'] -['path_tpc']['curves'][680]['offset'] +['path_tpc']['curves'][679]['res_net_meters'] +['path_tpc']['curves'][680]['offset_meters'] ['path_tpc']['curves'][680]['res_coeff'] -['path_tpc']['curves'][680]['res_net'] -['path_tpc']['curves'][681]['offset'] +['path_tpc']['curves'][680]['res_net_meters'] +['path_tpc']['curves'][681]['offset_meters'] ['path_tpc']['curves'][681]['res_coeff'] -['path_tpc']['curves'][681]['res_net'] -['path_tpc']['curves'][682]['offset'] +['path_tpc']['curves'][681]['res_net_meters'] +['path_tpc']['curves'][682]['offset_meters'] ['path_tpc']['curves'][682]['res_coeff'] -['path_tpc']['curves'][682]['res_net'] -['path_tpc']['curves'][683]['offset'] +['path_tpc']['curves'][682]['res_net_meters'] +['path_tpc']['curves'][683]['offset_meters'] ['path_tpc']['curves'][683]['res_coeff'] -['path_tpc']['curves'][683]['res_net'] -['path_tpc']['curves'][684]['offset'] +['path_tpc']['curves'][683]['res_net_meters'] +['path_tpc']['curves'][684]['offset_meters'] ['path_tpc']['curves'][684]['res_coeff'] -['path_tpc']['curves'][684]['res_net'] -['path_tpc']['curves'][685]['offset'] +['path_tpc']['curves'][684]['res_net_meters'] +['path_tpc']['curves'][685]['offset_meters'] ['path_tpc']['curves'][685]['res_coeff'] -['path_tpc']['curves'][685]['res_net'] -['path_tpc']['curves'][686]['offset'] +['path_tpc']['curves'][685]['res_net_meters'] +['path_tpc']['curves'][686]['offset_meters'] ['path_tpc']['curves'][686]['res_coeff'] -['path_tpc']['curves'][686]['res_net'] -['path_tpc']['curves'][687]['offset'] +['path_tpc']['curves'][686]['res_net_meters'] +['path_tpc']['curves'][687]['offset_meters'] ['path_tpc']['curves'][687]['res_coeff'] -['path_tpc']['curves'][687]['res_net'] -['path_tpc']['curves'][688]['offset'] +['path_tpc']['curves'][687]['res_net_meters'] +['path_tpc']['curves'][688]['offset_meters'] ['path_tpc']['curves'][688]['res_coeff'] -['path_tpc']['curves'][688]['res_net'] -['path_tpc']['curves'][689]['offset'] +['path_tpc']['curves'][688]['res_net_meters'] +['path_tpc']['curves'][689]['offset_meters'] ['path_tpc']['curves'][689]['res_coeff'] -['path_tpc']['curves'][689]['res_net'] -['path_tpc']['curves'][690]['offset'] +['path_tpc']['curves'][689]['res_net_meters'] +['path_tpc']['curves'][690]['offset_meters'] ['path_tpc']['curves'][690]['res_coeff'] -['path_tpc']['curves'][690]['res_net'] -['path_tpc']['curves'][691]['offset'] +['path_tpc']['curves'][690]['res_net_meters'] +['path_tpc']['curves'][691]['offset_meters'] ['path_tpc']['curves'][691]['res_coeff'] -['path_tpc']['curves'][691]['res_net'] -['path_tpc']['curves'][692]['offset'] +['path_tpc']['curves'][691]['res_net_meters'] +['path_tpc']['curves'][692]['offset_meters'] ['path_tpc']['curves'][692]['res_coeff'] -['path_tpc']['curves'][692]['res_net'] -['path_tpc']['curves'][693]['offset'] +['path_tpc']['curves'][692]['res_net_meters'] +['path_tpc']['curves'][693]['offset_meters'] ['path_tpc']['curves'][693]['res_coeff'] -['path_tpc']['curves'][693]['res_net'] -['path_tpc']['curves'][694]['offset'] +['path_tpc']['curves'][693]['res_net_meters'] +['path_tpc']['curves'][694]['offset_meters'] ['path_tpc']['curves'][694]['res_coeff'] -['path_tpc']['curves'][694]['res_net'] -['path_tpc']['curves'][695]['offset'] +['path_tpc']['curves'][694]['res_net_meters'] +['path_tpc']['curves'][695]['offset_meters'] ['path_tpc']['curves'][695]['res_coeff'] -['path_tpc']['curves'][695]['res_net'] -['path_tpc']['curves'][696]['offset'] +['path_tpc']['curves'][695]['res_net_meters'] +['path_tpc']['curves'][696]['offset_meters'] ['path_tpc']['curves'][696]['res_coeff'] -['path_tpc']['curves'][696]['res_net'] -['path_tpc']['curves'][697]['offset'] +['path_tpc']['curves'][696]['res_net_meters'] +['path_tpc']['curves'][697]['offset_meters'] ['path_tpc']['curves'][697]['res_coeff'] -['path_tpc']['curves'][697]['res_net'] -['path_tpc']['curves'][698]['offset'] +['path_tpc']['curves'][697]['res_net_meters'] +['path_tpc']['curves'][698]['offset_meters'] ['path_tpc']['curves'][698]['res_coeff'] -['path_tpc']['curves'][698]['res_net'] -['path_tpc']['curves'][699]['offset'] +['path_tpc']['curves'][698]['res_net_meters'] +['path_tpc']['curves'][699]['offset_meters'] ['path_tpc']['curves'][699]['res_coeff'] -['path_tpc']['curves'][699]['res_net'] -['path_tpc']['curves'][700]['offset'] +['path_tpc']['curves'][699]['res_net_meters'] +['path_tpc']['curves'][700]['offset_meters'] ['path_tpc']['curves'][700]['res_coeff'] -['path_tpc']['curves'][700]['res_net'] -['path_tpc']['curves'][701]['offset'] +['path_tpc']['curves'][700]['res_net_meters'] +['path_tpc']['curves'][701]['offset_meters'] ['path_tpc']['curves'][701]['res_coeff'] -['path_tpc']['curves'][701]['res_net'] -['path_tpc']['curves'][702]['offset'] +['path_tpc']['curves'][701]['res_net_meters'] +['path_tpc']['curves'][702]['offset_meters'] ['path_tpc']['curves'][702]['res_coeff'] -['path_tpc']['curves'][702]['res_net'] -['path_tpc']['curves'][703]['offset'] +['path_tpc']['curves'][702]['res_net_meters'] +['path_tpc']['curves'][703]['offset_meters'] ['path_tpc']['curves'][703]['res_coeff'] -['path_tpc']['curves'][703]['res_net'] -['path_tpc']['curves'][704]['offset'] +['path_tpc']['curves'][703]['res_net_meters'] +['path_tpc']['curves'][704]['offset_meters'] ['path_tpc']['curves'][704]['res_coeff'] -['path_tpc']['curves'][704]['res_net'] -['path_tpc']['curves'][705]['offset'] +['path_tpc']['curves'][704]['res_net_meters'] +['path_tpc']['curves'][705]['offset_meters'] ['path_tpc']['curves'][705]['res_coeff'] -['path_tpc']['curves'][705]['res_net'] -['path_tpc']['curves'][706]['offset'] +['path_tpc']['curves'][705]['res_net_meters'] +['path_tpc']['curves'][706]['offset_meters'] ['path_tpc']['curves'][706]['res_coeff'] -['path_tpc']['curves'][706]['res_net'] -['path_tpc']['curves'][707]['offset'] +['path_tpc']['curves'][706]['res_net_meters'] +['path_tpc']['curves'][707]['offset_meters'] ['path_tpc']['curves'][707]['res_coeff'] -['path_tpc']['curves'][707]['res_net'] -['path_tpc']['curves'][708]['offset'] +['path_tpc']['curves'][707]['res_net_meters'] +['path_tpc']['curves'][708]['offset_meters'] ['path_tpc']['curves'][708]['res_coeff'] -['path_tpc']['curves'][708]['res_net'] -['path_tpc']['curves'][709]['offset'] +['path_tpc']['curves'][708]['res_net_meters'] +['path_tpc']['curves'][709]['offset_meters'] ['path_tpc']['curves'][709]['res_coeff'] -['path_tpc']['curves'][709]['res_net'] -['path_tpc']['curves'][710]['offset'] +['path_tpc']['curves'][709]['res_net_meters'] +['path_tpc']['curves'][710]['offset_meters'] ['path_tpc']['curves'][710]['res_coeff'] -['path_tpc']['curves'][710]['res_net'] -['path_tpc']['curves'][711]['offset'] +['path_tpc']['curves'][710]['res_net_meters'] +['path_tpc']['curves'][711]['offset_meters'] ['path_tpc']['curves'][711]['res_coeff'] -['path_tpc']['curves'][711]['res_net'] -['path_tpc']['curves'][712]['offset'] +['path_tpc']['curves'][711]['res_net_meters'] +['path_tpc']['curves'][712]['offset_meters'] ['path_tpc']['curves'][712]['res_coeff'] -['path_tpc']['curves'][712]['res_net'] -['path_tpc']['curves'][713]['offset'] +['path_tpc']['curves'][712]['res_net_meters'] +['path_tpc']['curves'][713]['offset_meters'] ['path_tpc']['curves'][713]['res_coeff'] -['path_tpc']['curves'][713]['res_net'] -['path_tpc']['curves'][714]['offset'] +['path_tpc']['curves'][713]['res_net_meters'] +['path_tpc']['curves'][714]['offset_meters'] ['path_tpc']['curves'][714]['res_coeff'] -['path_tpc']['curves'][714]['res_net'] -['path_tpc']['curves'][715]['offset'] +['path_tpc']['curves'][714]['res_net_meters'] +['path_tpc']['curves'][715]['offset_meters'] ['path_tpc']['curves'][715]['res_coeff'] -['path_tpc']['curves'][715]['res_net'] -['path_tpc']['curves'][716]['offset'] +['path_tpc']['curves'][715]['res_net_meters'] +['path_tpc']['curves'][716]['offset_meters'] ['path_tpc']['curves'][716]['res_coeff'] -['path_tpc']['curves'][716]['res_net'] -['path_tpc']['curves'][717]['offset'] +['path_tpc']['curves'][716]['res_net_meters'] +['path_tpc']['curves'][717]['offset_meters'] ['path_tpc']['curves'][717]['res_coeff'] -['path_tpc']['curves'][717]['res_net'] -['path_tpc']['curves'][718]['offset'] +['path_tpc']['curves'][717]['res_net_meters'] +['path_tpc']['curves'][718]['offset_meters'] ['path_tpc']['curves'][718]['res_coeff'] -['path_tpc']['curves'][718]['res_net'] -['path_tpc']['curves'][719]['offset'] +['path_tpc']['curves'][718]['res_net_meters'] +['path_tpc']['curves'][719]['offset_meters'] ['path_tpc']['curves'][719]['res_coeff'] -['path_tpc']['curves'][719]['res_net'] -['path_tpc']['curves'][720]['offset'] +['path_tpc']['curves'][719]['res_net_meters'] +['path_tpc']['curves'][720]['offset_meters'] ['path_tpc']['curves'][720]['res_coeff'] -['path_tpc']['curves'][720]['res_net'] -['path_tpc']['curves'][721]['offset'] +['path_tpc']['curves'][720]['res_net_meters'] +['path_tpc']['curves'][721]['offset_meters'] ['path_tpc']['curves'][721]['res_coeff'] -['path_tpc']['curves'][721]['res_net'] -['path_tpc']['curves'][722]['offset'] +['path_tpc']['curves'][721]['res_net_meters'] +['path_tpc']['curves'][722]['offset_meters'] ['path_tpc']['curves'][722]['res_coeff'] -['path_tpc']['curves'][722]['res_net'] -['path_tpc']['curves'][723]['offset'] +['path_tpc']['curves'][722]['res_net_meters'] +['path_tpc']['curves'][723]['offset_meters'] ['path_tpc']['curves'][723]['res_coeff'] -['path_tpc']['curves'][723]['res_net'] -['path_tpc']['curves'][724]['offset'] +['path_tpc']['curves'][723]['res_net_meters'] +['path_tpc']['curves'][724]['offset_meters'] ['path_tpc']['curves'][724]['res_coeff'] -['path_tpc']['curves'][724]['res_net'] -['path_tpc']['curves'][725]['offset'] +['path_tpc']['curves'][724]['res_net_meters'] +['path_tpc']['curves'][725]['offset_meters'] ['path_tpc']['curves'][725]['res_coeff'] -['path_tpc']['curves'][725]['res_net'] -['path_tpc']['curves'][726]['offset'] +['path_tpc']['curves'][725]['res_net_meters'] +['path_tpc']['curves'][726]['offset_meters'] ['path_tpc']['curves'][726]['res_coeff'] -['path_tpc']['curves'][726]['res_net'] -['path_tpc']['curves'][727]['offset'] +['path_tpc']['curves'][726]['res_net_meters'] +['path_tpc']['curves'][727]['offset_meters'] ['path_tpc']['curves'][727]['res_coeff'] -['path_tpc']['curves'][727]['res_net'] -['path_tpc']['curves'][728]['offset'] +['path_tpc']['curves'][727]['res_net_meters'] +['path_tpc']['curves'][728]['offset_meters'] ['path_tpc']['curves'][728]['res_coeff'] -['path_tpc']['curves'][728]['res_net'] -['path_tpc']['curves'][729]['offset'] +['path_tpc']['curves'][728]['res_net_meters'] +['path_tpc']['curves'][729]['offset_meters'] ['path_tpc']['curves'][729]['res_coeff'] -['path_tpc']['curves'][729]['res_net'] -['path_tpc']['curves'][730]['offset'] +['path_tpc']['curves'][729]['res_net_meters'] +['path_tpc']['curves'][730]['offset_meters'] ['path_tpc']['curves'][730]['res_coeff'] -['path_tpc']['curves'][730]['res_net'] -['path_tpc']['curves'][731]['offset'] +['path_tpc']['curves'][730]['res_net_meters'] +['path_tpc']['curves'][731]['offset_meters'] ['path_tpc']['curves'][731]['res_coeff'] -['path_tpc']['curves'][731]['res_net'] -['path_tpc']['curves'][732]['offset'] +['path_tpc']['curves'][731]['res_net_meters'] +['path_tpc']['curves'][732]['offset_meters'] ['path_tpc']['curves'][732]['res_coeff'] -['path_tpc']['curves'][732]['res_net'] -['path_tpc']['curves'][733]['offset'] +['path_tpc']['curves'][732]['res_net_meters'] +['path_tpc']['curves'][733]['offset_meters'] ['path_tpc']['curves'][733]['res_coeff'] -['path_tpc']['curves'][733]['res_net'] -['path_tpc']['curves'][734]['offset'] +['path_tpc']['curves'][733]['res_net_meters'] +['path_tpc']['curves'][734]['offset_meters'] ['path_tpc']['curves'][734]['res_coeff'] -['path_tpc']['curves'][734]['res_net'] -['path_tpc']['curves'][735]['offset'] +['path_tpc']['curves'][734]['res_net_meters'] +['path_tpc']['curves'][735]['offset_meters'] ['path_tpc']['curves'][735]['res_coeff'] -['path_tpc']['curves'][735]['res_net'] -['path_tpc']['curves'][736]['offset'] +['path_tpc']['curves'][735]['res_net_meters'] +['path_tpc']['curves'][736]['offset_meters'] ['path_tpc']['curves'][736]['res_coeff'] -['path_tpc']['curves'][736]['res_net'] -['path_tpc']['curves'][737]['offset'] +['path_tpc']['curves'][736]['res_net_meters'] +['path_tpc']['curves'][737]['offset_meters'] ['path_tpc']['curves'][737]['res_coeff'] -['path_tpc']['curves'][737]['res_net'] -['path_tpc']['curves'][738]['offset'] +['path_tpc']['curves'][737]['res_net_meters'] +['path_tpc']['curves'][738]['offset_meters'] ['path_tpc']['curves'][738]['res_coeff'] -['path_tpc']['curves'][738]['res_net'] -['path_tpc']['curves'][739]['offset'] +['path_tpc']['curves'][738]['res_net_meters'] +['path_tpc']['curves'][739]['offset_meters'] ['path_tpc']['curves'][739]['res_coeff'] -['path_tpc']['curves'][739]['res_net'] -['path_tpc']['curves'][740]['offset'] +['path_tpc']['curves'][739]['res_net_meters'] +['path_tpc']['curves'][740]['offset_meters'] ['path_tpc']['curves'][740]['res_coeff'] -['path_tpc']['curves'][740]['res_net'] -['path_tpc']['curves'][741]['offset'] +['path_tpc']['curves'][740]['res_net_meters'] +['path_tpc']['curves'][741]['offset_meters'] ['path_tpc']['curves'][741]['res_coeff'] -['path_tpc']['curves'][741]['res_net'] -['path_tpc']['curves'][742]['offset'] +['path_tpc']['curves'][741]['res_net_meters'] +['path_tpc']['curves'][742]['offset_meters'] ['path_tpc']['curves'][742]['res_coeff'] -['path_tpc']['curves'][742]['res_net'] -['path_tpc']['curves'][743]['offset'] +['path_tpc']['curves'][742]['res_net_meters'] +['path_tpc']['curves'][743]['offset_meters'] ['path_tpc']['curves'][743]['res_coeff'] -['path_tpc']['curves'][743]['res_net'] -['path_tpc']['curves'][744]['offset'] +['path_tpc']['curves'][743]['res_net_meters'] +['path_tpc']['curves'][744]['offset_meters'] ['path_tpc']['curves'][744]['res_coeff'] -['path_tpc']['curves'][744]['res_net'] -['path_tpc']['curves'][745]['offset'] +['path_tpc']['curves'][744]['res_net_meters'] +['path_tpc']['curves'][745]['offset_meters'] ['path_tpc']['curves'][745]['res_coeff'] -['path_tpc']['curves'][745]['res_net'] -['path_tpc']['curves'][746]['offset'] +['path_tpc']['curves'][745]['res_net_meters'] +['path_tpc']['curves'][746]['offset_meters'] ['path_tpc']['curves'][746]['res_coeff'] -['path_tpc']['curves'][746]['res_net'] -['path_tpc']['curves'][747]['offset'] +['path_tpc']['curves'][746]['res_net_meters'] +['path_tpc']['curves'][747]['offset_meters'] ['path_tpc']['curves'][747]['res_coeff'] -['path_tpc']['curves'][747]['res_net'] -['path_tpc']['curves'][748]['offset'] +['path_tpc']['curves'][747]['res_net_meters'] +['path_tpc']['curves'][748]['offset_meters'] ['path_tpc']['curves'][748]['res_coeff'] -['path_tpc']['curves'][748]['res_net'] -['path_tpc']['curves'][749]['offset'] +['path_tpc']['curves'][748]['res_net_meters'] +['path_tpc']['curves'][749]['offset_meters'] ['path_tpc']['curves'][749]['res_coeff'] -['path_tpc']['curves'][749]['res_net'] -['path_tpc']['curves'][750]['offset'] +['path_tpc']['curves'][749]['res_net_meters'] +['path_tpc']['curves'][750]['offset_meters'] ['path_tpc']['curves'][750]['res_coeff'] -['path_tpc']['curves'][750]['res_net'] -['path_tpc']['curves'][751]['offset'] +['path_tpc']['curves'][750]['res_net_meters'] +['path_tpc']['curves'][751]['offset_meters'] ['path_tpc']['curves'][751]['res_coeff'] -['path_tpc']['curves'][751]['res_net'] -['path_tpc']['curves'][752]['offset'] +['path_tpc']['curves'][751]['res_net_meters'] +['path_tpc']['curves'][752]['offset_meters'] ['path_tpc']['curves'][752]['res_coeff'] -['path_tpc']['curves'][752]['res_net'] -['path_tpc']['curves'][753]['offset'] +['path_tpc']['curves'][752]['res_net_meters'] +['path_tpc']['curves'][753]['offset_meters'] ['path_tpc']['curves'][753]['res_coeff'] -['path_tpc']['curves'][753]['res_net'] -['path_tpc']['curves'][754]['offset'] +['path_tpc']['curves'][753]['res_net_meters'] +['path_tpc']['curves'][754]['offset_meters'] ['path_tpc']['curves'][754]['res_coeff'] -['path_tpc']['curves'][754]['res_net'] -['path_tpc']['curves'][755]['offset'] +['path_tpc']['curves'][754]['res_net_meters'] +['path_tpc']['curves'][755]['offset_meters'] ['path_tpc']['curves'][755]['res_coeff'] -['path_tpc']['curves'][755]['res_net'] -['path_tpc']['curves'][756]['offset'] +['path_tpc']['curves'][755]['res_net_meters'] +['path_tpc']['curves'][756]['offset_meters'] ['path_tpc']['curves'][756]['res_coeff'] -['path_tpc']['curves'][756]['res_net'] -['path_tpc']['curves'][757]['offset'] +['path_tpc']['curves'][756]['res_net_meters'] +['path_tpc']['curves'][757]['offset_meters'] ['path_tpc']['curves'][757]['res_coeff'] -['path_tpc']['curves'][757]['res_net'] -['path_tpc']['curves'][758]['offset'] +['path_tpc']['curves'][757]['res_net_meters'] +['path_tpc']['curves'][758]['offset_meters'] ['path_tpc']['curves'][758]['res_coeff'] -['path_tpc']['curves'][758]['res_net'] -['path_tpc']['curves'][759]['offset'] +['path_tpc']['curves'][758]['res_net_meters'] +['path_tpc']['curves'][759]['offset_meters'] ['path_tpc']['curves'][759]['res_coeff'] -['path_tpc']['curves'][759]['res_net'] -['path_tpc']['curves'][760]['offset'] +['path_tpc']['curves'][759]['res_net_meters'] +['path_tpc']['curves'][760]['offset_meters'] ['path_tpc']['curves'][760]['res_coeff'] -['path_tpc']['curves'][760]['res_net'] -['path_tpc']['curves'][761]['offset'] +['path_tpc']['curves'][760]['res_net_meters'] +['path_tpc']['curves'][761]['offset_meters'] ['path_tpc']['curves'][761]['res_coeff'] -['path_tpc']['curves'][761]['res_net'] -['path_tpc']['curves'][762]['offset'] +['path_tpc']['curves'][761]['res_net_meters'] +['path_tpc']['curves'][762]['offset_meters'] ['path_tpc']['curves'][762]['res_coeff'] -['path_tpc']['curves'][762]['res_net'] -['path_tpc']['curves'][763]['offset'] +['path_tpc']['curves'][762]['res_net_meters'] +['path_tpc']['curves'][763]['offset_meters'] ['path_tpc']['curves'][763]['res_coeff'] -['path_tpc']['curves'][763]['res_net'] -['path_tpc']['curves'][764]['offset'] +['path_tpc']['curves'][763]['res_net_meters'] +['path_tpc']['curves'][764]['offset_meters'] ['path_tpc']['curves'][764]['res_coeff'] -['path_tpc']['curves'][764]['res_net'] -['path_tpc']['curves'][765]['offset'] +['path_tpc']['curves'][764]['res_net_meters'] +['path_tpc']['curves'][765]['offset_meters'] ['path_tpc']['curves'][765]['res_coeff'] -['path_tpc']['curves'][765]['res_net'] -['path_tpc']['curves'][766]['offset'] +['path_tpc']['curves'][765]['res_net_meters'] +['path_tpc']['curves'][766]['offset_meters'] ['path_tpc']['curves'][766]['res_coeff'] -['path_tpc']['curves'][766]['res_net'] -['path_tpc']['curves'][767]['offset'] +['path_tpc']['curves'][766]['res_net_meters'] +['path_tpc']['curves'][767]['offset_meters'] ['path_tpc']['curves'][767]['res_coeff'] -['path_tpc']['curves'][767]['res_net'] -['path_tpc']['curves'][768]['offset'] +['path_tpc']['curves'][767]['res_net_meters'] +['path_tpc']['curves'][768]['offset_meters'] ['path_tpc']['curves'][768]['res_coeff'] -['path_tpc']['curves'][768]['res_net'] -['path_tpc']['curves'][769]['offset'] +['path_tpc']['curves'][768]['res_net_meters'] +['path_tpc']['curves'][769]['offset_meters'] ['path_tpc']['curves'][769]['res_coeff'] -['path_tpc']['curves'][769]['res_net'] -['path_tpc']['curves'][770]['offset'] +['path_tpc']['curves'][769]['res_net_meters'] +['path_tpc']['curves'][770]['offset_meters'] ['path_tpc']['curves'][770]['res_coeff'] -['path_tpc']['curves'][770]['res_net'] -['path_tpc']['curves'][771]['offset'] +['path_tpc']['curves'][770]['res_net_meters'] +['path_tpc']['curves'][771]['offset_meters'] ['path_tpc']['curves'][771]['res_coeff'] -['path_tpc']['curves'][771]['res_net'] -['path_tpc']['curves'][772]['offset'] +['path_tpc']['curves'][771]['res_net_meters'] +['path_tpc']['curves'][772]['offset_meters'] ['path_tpc']['curves'][772]['res_coeff'] -['path_tpc']['curves'][772]['res_net'] -['path_tpc']['curves'][773]['offset'] +['path_tpc']['curves'][772]['res_net_meters'] +['path_tpc']['curves'][773]['offset_meters'] ['path_tpc']['curves'][773]['res_coeff'] -['path_tpc']['curves'][773]['res_net'] -['path_tpc']['curves'][774]['offset'] +['path_tpc']['curves'][773]['res_net_meters'] +['path_tpc']['curves'][774]['offset_meters'] ['path_tpc']['curves'][774]['res_coeff'] -['path_tpc']['curves'][774]['res_net'] -['path_tpc']['curves'][775]['offset'] +['path_tpc']['curves'][774]['res_net_meters'] +['path_tpc']['curves'][775]['offset_meters'] ['path_tpc']['curves'][775]['res_coeff'] -['path_tpc']['curves'][775]['res_net'] -['path_tpc']['curves'][776]['offset'] +['path_tpc']['curves'][775]['res_net_meters'] +['path_tpc']['curves'][776]['offset_meters'] ['path_tpc']['curves'][776]['res_coeff'] -['path_tpc']['curves'][776]['res_net'] -['path_tpc']['curves'][777]['offset'] +['path_tpc']['curves'][776]['res_net_meters'] +['path_tpc']['curves'][777]['offset_meters'] ['path_tpc']['curves'][777]['res_coeff'] -['path_tpc']['curves'][777]['res_net'] -['path_tpc']['curves'][778]['offset'] +['path_tpc']['curves'][777]['res_net_meters'] +['path_tpc']['curves'][778]['offset_meters'] ['path_tpc']['curves'][778]['res_coeff'] -['path_tpc']['curves'][778]['res_net'] -['path_tpc']['curves'][779]['offset'] +['path_tpc']['curves'][778]['res_net_meters'] +['path_tpc']['curves'][779]['offset_meters'] ['path_tpc']['curves'][779]['res_coeff'] -['path_tpc']['curves'][779]['res_net'] -['path_tpc']['curves'][780]['offset'] +['path_tpc']['curves'][779]['res_net_meters'] +['path_tpc']['curves'][780]['offset_meters'] ['path_tpc']['curves'][780]['res_coeff'] -['path_tpc']['curves'][780]['res_net'] -['path_tpc']['curves'][781]['offset'] +['path_tpc']['curves'][780]['res_net_meters'] +['path_tpc']['curves'][781]['offset_meters'] ['path_tpc']['curves'][781]['res_coeff'] -['path_tpc']['curves'][781]['res_net'] -['path_tpc']['curves'][782]['offset'] +['path_tpc']['curves'][781]['res_net_meters'] +['path_tpc']['curves'][782]['offset_meters'] ['path_tpc']['curves'][782]['res_coeff'] -['path_tpc']['curves'][782]['res_net'] -['path_tpc']['curves'][783]['offset'] +['path_tpc']['curves'][782]['res_net_meters'] +['path_tpc']['curves'][783]['offset_meters'] ['path_tpc']['curves'][783]['res_coeff'] -['path_tpc']['curves'][783]['res_net'] -['path_tpc']['curves'][784]['offset'] +['path_tpc']['curves'][783]['res_net_meters'] +['path_tpc']['curves'][784]['offset_meters'] ['path_tpc']['curves'][784]['res_coeff'] -['path_tpc']['curves'][784]['res_net'] -['path_tpc']['curves'][785]['offset'] +['path_tpc']['curves'][784]['res_net_meters'] +['path_tpc']['curves'][785]['offset_meters'] ['path_tpc']['curves'][785]['res_coeff'] -['path_tpc']['curves'][785]['res_net'] -['path_tpc']['curves'][786]['offset'] +['path_tpc']['curves'][785]['res_net_meters'] +['path_tpc']['curves'][786]['offset_meters'] ['path_tpc']['curves'][786]['res_coeff'] -['path_tpc']['curves'][786]['res_net'] +['path_tpc']['curves'][786]['res_net_meters'] ['path_tpc']['speed_points'][0]['offset'] ['path_tpc']['speed_points'][0]['speed_limit'] ['path_tpc']['speed_points'][1]['offset'] @@ -6466,8 +6466,8 @@ ['braking_points']['points'][42]['speed_limit'] ['braking_points']['points'][42]['speed_target'] ['braking_points']['idx_curr'] -['fric_brake']['force_max'] -['fric_brake']['ramp_up_time'] +['fric_brake']['force_max_newtons'] +['fric_brake']['ramp_up_time_seconds'] ['fric_brake']['ramp_up_coeff'] ['fric_brake']['state']['i'] ['fric_brake']['state']['force'] From 2ebe7568823f2f0ca981b387dc517eb58afe1023 Mon Sep 17 00:00:00 2001 From: Chad Baker Date: Tue, 21 Jan 2025 13:36:22 -0700 Subject: [PATCH 43/50] fixed build errors --- pyproject.toml | 2 +- rust/altrios-core/src/train/set_speed_train_sim.rs | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 3a3f970e..0996d31c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -47,7 +47,7 @@ dependencies = [ "pyarrow", "requests", "PyYAML==6.0.2", - "simpy" + "simpy", "msgpack==1.1.0", ] diff --git a/rust/altrios-core/src/train/set_speed_train_sim.rs b/rust/altrios-core/src/train/set_speed_train_sim.rs index 4dd415f4..dada9bdd 100644 --- a/rust/altrios-core/src/train/set_speed_train_sim.rs +++ b/rust/altrios-core/src/train/set_speed_train_sim.rs @@ -190,6 +190,7 @@ pub struct SpeedTraceElement { #[new] #[pyo3(signature = ( loco_con, + n_cars_by_type, state, speed_trace, train_res_file=None, From a5831259f52f6edfeefe5f2c8e2b269e344de065 Mon Sep 17 00:00:00 2001 From: Chad Baker Date: Tue, 21 Jan 2025 13:37:32 -0700 Subject: [PATCH 44/50] regenerated `variable_path_list_expected.txt` --- .../variable_path_list_expected.txt | 6460 ++++++++--------- 1 file changed, 3230 insertions(+), 3230 deletions(-) diff --git a/python/altrios/resources/demo_data/demo_variable_paths/variable_path_list_expected.txt b/python/altrios/resources/demo_data/demo_variable_paths/variable_path_list_expected.txt index 1c666211..bbee3394 100644 --- a/python/altrios/resources/demo_data/demo_variable_paths/variable_path_list_expected.txt +++ b/python/altrios/resources/demo_data/demo_variable_paths/variable_path_list_expected.txt @@ -34,10 +34,10 @@ ['loco_con']['loco_vec'][0]['loco_type']['BatteryElectricLoco']['res']['state']['min_soc'] ['loco_con']['loco_vec'][0]['loco_type']['BatteryElectricLoco']['res']['state']['soc_lo_ramp_start'] ['loco_con']['loco_vec'][0]['loco_type']['BatteryElectricLoco']['res']['state']['temperature_celsius'] -['loco_con']['loco_vec'][0]['loco_type']['BatteryElectricLoco']['res']['mass'] -['loco_con']['loco_vec'][0]['loco_type']['BatteryElectricLoco']['res']['volume'] -['loco_con']['loco_vec'][0]['loco_type']['BatteryElectricLoco']['res']['specific_energy'] -['loco_con']['loco_vec'][0]['loco_type']['BatteryElectricLoco']['res']['energy_density'] +['loco_con']['loco_vec'][0]['loco_type']['BatteryElectricLoco']['res']['mass_kilograms'] +['loco_con']['loco_vec'][0]['loco_type']['BatteryElectricLoco']['res']['volume_liters'] +['loco_con']['loco_vec'][0]['loco_type']['BatteryElectricLoco']['res']['specific_energy_joules_per_kilogram'] +['loco_con']['loco_vec'][0]['loco_type']['BatteryElectricLoco']['res']['energy_density_kilopascals'] ['loco_con']['loco_vec'][0]['loco_type']['BatteryElectricLoco']['res']['eta_interp_grid'][0] ['loco_con']['loco_vec'][0]['loco_type']['BatteryElectricLoco']['res']['eta_interp_grid'][1] ['loco_con']['loco_vec'][0]['loco_type']['BatteryElectricLoco']['res']['eta_interp_grid'][2] @@ -160,10 +160,10 @@ ['loco_con']['loco_vec'][0]['state']['pwr_aux'] ['loco_con']['loco_vec'][0]['state']['energy_out'] ['loco_con']['loco_vec'][0]['state']['energy_aux'] -['loco_con']['loco_vec'][0]['mass'] +['loco_con']['loco_vec'][0]['mass_kilograms'] ['loco_con']['loco_vec'][0]['mu'] -['loco_con']['loco_vec'][0]['ballast_mass'] -['loco_con']['loco_vec'][0]['baseline_mass'] +['loco_con']['loco_vec'][0]['ballast_mass_kilograms'] +['loco_con']['loco_vec'][0]['baseline_mass_kilograms'] ['loco_con']['loco_vec'][0]['save_interval'] ['loco_con']['loco_vec'][0]['history']['i'] ['loco_con']['loco_vec'][0]['history']['pwr_out_max'] @@ -174,9 +174,9 @@ ['loco_con']['loco_vec'][0]['history']['energy_out'] ['loco_con']['loco_vec'][0]['history']['energy_aux'] ['loco_con']['loco_vec'][0]['assert_limits'] -['loco_con']['loco_vec'][0]['pwr_aux_offset'] +['loco_con']['loco_vec'][0]['pwr_aux_offset_watts'] ['loco_con']['loco_vec'][0]['pwr_aux_traction_coeff'] -['loco_con']['loco_vec'][0]['force_max'] +['loco_con']['loco_vec'][0]['force_max_newtons'] ['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['fc']['state']['i'] ['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['fc']['state']['pwr_out_max'] ['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['fc']['state']['eta'] @@ -189,10 +189,10 @@ ['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['fc']['state']['energy_loss'] ['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['fc']['state']['energy_idle_fuel'] ['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['fc']['state']['engine_on'] -['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['fc']['mass'] -['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['fc']['specific_pwr'] +['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['fc']['mass_kilograms'] +['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['fc']['specific_pwr_watts_per_kilogram'] ['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_watts'] -['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_init'] +['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_init_watts'] ['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['fc']['pwr_ramp_lag_seconds'] ['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['fc']['pwr_out_frac_interp'] ['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['fc']['eta_interp'] @@ -223,8 +223,8 @@ ['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['gen']['state']['energy_elec_prop_out'] ['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['gen']['state']['energy_elec_aux'] ['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['gen']['state']['energy_loss'] -['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['gen']['mass'] -['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['gen']['specific_pwr'] +['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['gen']['mass_kilograms'] +['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['gen']['specific_pwr_watts_per_kilogram'] ['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['gen']['pwr_out_frac_interp'] ['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['gen']['eta_interp'] ['loco_con']['loco_vec'][1]['loco_type']['ConventionalLoco']['gen']['pwr_out_max_watts'] @@ -286,10 +286,10 @@ ['loco_con']['loco_vec'][1]['state']['pwr_aux'] ['loco_con']['loco_vec'][1]['state']['energy_out'] ['loco_con']['loco_vec'][1]['state']['energy_aux'] -['loco_con']['loco_vec'][1]['mass'] +['loco_con']['loco_vec'][1]['mass_kilograms'] ['loco_con']['loco_vec'][1]['mu'] -['loco_con']['loco_vec'][1]['ballast_mass'] -['loco_con']['loco_vec'][1]['baseline_mass'] +['loco_con']['loco_vec'][1]['ballast_mass_kilograms'] +['loco_con']['loco_vec'][1]['baseline_mass_kilograms'] ['loco_con']['loco_vec'][1]['save_interval'] ['loco_con']['loco_vec'][1]['history']['i'] ['loco_con']['loco_vec'][1]['history']['pwr_out_max'] @@ -300,9 +300,9 @@ ['loco_con']['loco_vec'][1]['history']['energy_out'] ['loco_con']['loco_vec'][1]['history']['energy_aux'] ['loco_con']['loco_vec'][1]['assert_limits'] -['loco_con']['loco_vec'][1]['pwr_aux_offset'] +['loco_con']['loco_vec'][1]['pwr_aux_offset_watts'] ['loco_con']['loco_vec'][1]['pwr_aux_traction_coeff'] -['loco_con']['loco_vec'][1]['force_max'] +['loco_con']['loco_vec'][1]['force_max_newtons'] ['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['fc']['state']['i'] ['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['fc']['state']['pwr_out_max'] ['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['fc']['state']['eta'] @@ -315,10 +315,10 @@ ['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['fc']['state']['energy_loss'] ['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['fc']['state']['energy_idle_fuel'] ['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['fc']['state']['engine_on'] -['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['fc']['mass'] -['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['fc']['specific_pwr'] +['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['fc']['mass_kilograms'] +['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['fc']['specific_pwr_watts_per_kilogram'] ['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_watts'] -['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_init'] +['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_init_watts'] ['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['fc']['pwr_ramp_lag_seconds'] ['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['fc']['pwr_out_frac_interp'] ['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['fc']['eta_interp'] @@ -349,8 +349,8 @@ ['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['gen']['state']['energy_elec_prop_out'] ['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['gen']['state']['energy_elec_aux'] ['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['gen']['state']['energy_loss'] -['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['gen']['mass'] -['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['gen']['specific_pwr'] +['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['gen']['mass_kilograms'] +['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['gen']['specific_pwr_watts_per_kilogram'] ['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['gen']['pwr_out_frac_interp'] ['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['gen']['eta_interp'] ['loco_con']['loco_vec'][2]['loco_type']['ConventionalLoco']['gen']['pwr_out_max_watts'] @@ -412,10 +412,10 @@ ['loco_con']['loco_vec'][2]['state']['pwr_aux'] ['loco_con']['loco_vec'][2]['state']['energy_out'] ['loco_con']['loco_vec'][2]['state']['energy_aux'] -['loco_con']['loco_vec'][2]['mass'] +['loco_con']['loco_vec'][2]['mass_kilograms'] ['loco_con']['loco_vec'][2]['mu'] -['loco_con']['loco_vec'][2]['ballast_mass'] -['loco_con']['loco_vec'][2]['baseline_mass'] +['loco_con']['loco_vec'][2]['ballast_mass_kilograms'] +['loco_con']['loco_vec'][2]['baseline_mass_kilograms'] ['loco_con']['loco_vec'][2]['save_interval'] ['loco_con']['loco_vec'][2]['history']['i'] ['loco_con']['loco_vec'][2]['history']['pwr_out_max'] @@ -426,9 +426,9 @@ ['loco_con']['loco_vec'][2]['history']['energy_out'] ['loco_con']['loco_vec'][2]['history']['energy_aux'] ['loco_con']['loco_vec'][2]['assert_limits'] -['loco_con']['loco_vec'][2]['pwr_aux_offset'] +['loco_con']['loco_vec'][2]['pwr_aux_offset_watts'] ['loco_con']['loco_vec'][2]['pwr_aux_traction_coeff'] -['loco_con']['loco_vec'][2]['force_max'] +['loco_con']['loco_vec'][2]['force_max_newtons'] ['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['fc']['state']['i'] ['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['fc']['state']['pwr_out_max'] ['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['fc']['state']['eta'] @@ -441,10 +441,10 @@ ['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['fc']['state']['energy_loss'] ['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['fc']['state']['energy_idle_fuel'] ['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['fc']['state']['engine_on'] -['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['fc']['mass'] -['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['fc']['specific_pwr'] +['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['fc']['mass_kilograms'] +['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['fc']['specific_pwr_watts_per_kilogram'] ['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_watts'] -['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_init'] +['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_init_watts'] ['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['fc']['pwr_ramp_lag_seconds'] ['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['fc']['pwr_out_frac_interp'] ['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['fc']['eta_interp'] @@ -475,8 +475,8 @@ ['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['gen']['state']['energy_elec_prop_out'] ['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['gen']['state']['energy_elec_aux'] ['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['gen']['state']['energy_loss'] -['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['gen']['mass'] -['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['gen']['specific_pwr'] +['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['gen']['mass_kilograms'] +['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['gen']['specific_pwr_watts_per_kilogram'] ['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['gen']['pwr_out_frac_interp'] ['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['gen']['eta_interp'] ['loco_con']['loco_vec'][3]['loco_type']['ConventionalLoco']['gen']['pwr_out_max_watts'] @@ -538,10 +538,10 @@ ['loco_con']['loco_vec'][3]['state']['pwr_aux'] ['loco_con']['loco_vec'][3]['state']['energy_out'] ['loco_con']['loco_vec'][3]['state']['energy_aux'] -['loco_con']['loco_vec'][3]['mass'] +['loco_con']['loco_vec'][3]['mass_kilograms'] ['loco_con']['loco_vec'][3]['mu'] -['loco_con']['loco_vec'][3]['ballast_mass'] -['loco_con']['loco_vec'][3]['baseline_mass'] +['loco_con']['loco_vec'][3]['ballast_mass_kilograms'] +['loco_con']['loco_vec'][3]['baseline_mass_kilograms'] ['loco_con']['loco_vec'][3]['save_interval'] ['loco_con']['loco_vec'][3]['history']['i'] ['loco_con']['loco_vec'][3]['history']['pwr_out_max'] @@ -552,9 +552,9 @@ ['loco_con']['loco_vec'][3]['history']['energy_out'] ['loco_con']['loco_vec'][3]['history']['energy_aux'] ['loco_con']['loco_vec'][3]['assert_limits'] -['loco_con']['loco_vec'][3]['pwr_aux_offset'] +['loco_con']['loco_vec'][3]['pwr_aux_offset_watts'] ['loco_con']['loco_vec'][3]['pwr_aux_traction_coeff'] -['loco_con']['loco_vec'][3]['force_max'] +['loco_con']['loco_vec'][3]['force_max_newtons'] ['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['fc']['state']['i'] ['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['fc']['state']['pwr_out_max'] ['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['fc']['state']['eta'] @@ -567,10 +567,10 @@ ['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['fc']['state']['energy_loss'] ['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['fc']['state']['energy_idle_fuel'] ['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['fc']['state']['engine_on'] -['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['fc']['mass'] -['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['fc']['specific_pwr'] +['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['fc']['mass_kilograms'] +['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['fc']['specific_pwr_watts_per_kilogram'] ['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_watts'] -['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_init'] +['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_init_watts'] ['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['fc']['pwr_ramp_lag_seconds'] ['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['fc']['pwr_out_frac_interp'] ['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['fc']['eta_interp'] @@ -601,8 +601,8 @@ ['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['gen']['state']['energy_elec_prop_out'] ['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['gen']['state']['energy_elec_aux'] ['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['gen']['state']['energy_loss'] -['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['gen']['mass'] -['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['gen']['specific_pwr'] +['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['gen']['mass_kilograms'] +['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['gen']['specific_pwr_watts_per_kilogram'] ['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['gen']['pwr_out_frac_interp'] ['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['gen']['eta_interp'] ['loco_con']['loco_vec'][4]['loco_type']['ConventionalLoco']['gen']['pwr_out_max_watts'] @@ -664,10 +664,10 @@ ['loco_con']['loco_vec'][4]['state']['pwr_aux'] ['loco_con']['loco_vec'][4]['state']['energy_out'] ['loco_con']['loco_vec'][4]['state']['energy_aux'] -['loco_con']['loco_vec'][4]['mass'] +['loco_con']['loco_vec'][4]['mass_kilograms'] ['loco_con']['loco_vec'][4]['mu'] -['loco_con']['loco_vec'][4]['ballast_mass'] -['loco_con']['loco_vec'][4]['baseline_mass'] +['loco_con']['loco_vec'][4]['ballast_mass_kilograms'] +['loco_con']['loco_vec'][4]['baseline_mass_kilograms'] ['loco_con']['loco_vec'][4]['save_interval'] ['loco_con']['loco_vec'][4]['history']['i'] ['loco_con']['loco_vec'][4]['history']['pwr_out_max'] @@ -678,9 +678,9 @@ ['loco_con']['loco_vec'][4]['history']['energy_out'] ['loco_con']['loco_vec'][4]['history']['energy_aux'] ['loco_con']['loco_vec'][4]['assert_limits'] -['loco_con']['loco_vec'][4]['pwr_aux_offset'] +['loco_con']['loco_vec'][4]['pwr_aux_offset_watts'] ['loco_con']['loco_vec'][4]['pwr_aux_traction_coeff'] -['loco_con']['loco_vec'][4]['force_max'] +['loco_con']['loco_vec'][4]['force_max_newtons'] ['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['fc']['state']['i'] ['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['fc']['state']['pwr_out_max'] ['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['fc']['state']['eta'] @@ -693,10 +693,10 @@ ['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['fc']['state']['energy_loss'] ['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['fc']['state']['energy_idle_fuel'] ['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['fc']['state']['engine_on'] -['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['fc']['mass'] -['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['fc']['specific_pwr'] +['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['fc']['mass_kilograms'] +['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['fc']['specific_pwr_watts_per_kilogram'] ['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_watts'] -['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_init'] +['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_init_watts'] ['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['fc']['pwr_ramp_lag_seconds'] ['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['fc']['pwr_out_frac_interp'] ['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['fc']['eta_interp'] @@ -727,8 +727,8 @@ ['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['gen']['state']['energy_elec_prop_out'] ['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['gen']['state']['energy_elec_aux'] ['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['gen']['state']['energy_loss'] -['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['gen']['mass'] -['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['gen']['specific_pwr'] +['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['gen']['mass_kilograms'] +['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['gen']['specific_pwr_watts_per_kilogram'] ['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['gen']['pwr_out_frac_interp'] ['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['gen']['eta_interp'] ['loco_con']['loco_vec'][5]['loco_type']['ConventionalLoco']['gen']['pwr_out_max_watts'] @@ -790,10 +790,10 @@ ['loco_con']['loco_vec'][5]['state']['pwr_aux'] ['loco_con']['loco_vec'][5]['state']['energy_out'] ['loco_con']['loco_vec'][5]['state']['energy_aux'] -['loco_con']['loco_vec'][5]['mass'] +['loco_con']['loco_vec'][5]['mass_kilograms'] ['loco_con']['loco_vec'][5]['mu'] -['loco_con']['loco_vec'][5]['ballast_mass'] -['loco_con']['loco_vec'][5]['baseline_mass'] +['loco_con']['loco_vec'][5]['ballast_mass_kilograms'] +['loco_con']['loco_vec'][5]['baseline_mass_kilograms'] ['loco_con']['loco_vec'][5]['save_interval'] ['loco_con']['loco_vec'][5]['history']['i'] ['loco_con']['loco_vec'][5]['history']['pwr_out_max'] @@ -804,9 +804,9 @@ ['loco_con']['loco_vec'][5]['history']['energy_out'] ['loco_con']['loco_vec'][5]['history']['energy_aux'] ['loco_con']['loco_vec'][5]['assert_limits'] -['loco_con']['loco_vec'][5]['pwr_aux_offset'] +['loco_con']['loco_vec'][5]['pwr_aux_offset_watts'] ['loco_con']['loco_vec'][5]['pwr_aux_traction_coeff'] -['loco_con']['loco_vec'][5]['force_max'] +['loco_con']['loco_vec'][5]['force_max_newtons'] ['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['fc']['state']['i'] ['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['fc']['state']['pwr_out_max'] ['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['fc']['state']['eta'] @@ -819,10 +819,10 @@ ['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['fc']['state']['energy_loss'] ['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['fc']['state']['energy_idle_fuel'] ['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['fc']['state']['engine_on'] -['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['fc']['mass'] -['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['fc']['specific_pwr'] +['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['fc']['mass_kilograms'] +['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['fc']['specific_pwr_watts_per_kilogram'] ['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_watts'] -['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_init'] +['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_init_watts'] ['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['fc']['pwr_ramp_lag_seconds'] ['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['fc']['pwr_out_frac_interp'] ['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['fc']['eta_interp'] @@ -853,8 +853,8 @@ ['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['gen']['state']['energy_elec_prop_out'] ['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['gen']['state']['energy_elec_aux'] ['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['gen']['state']['energy_loss'] -['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['gen']['mass'] -['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['gen']['specific_pwr'] +['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['gen']['mass_kilograms'] +['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['gen']['specific_pwr_watts_per_kilogram'] ['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['gen']['pwr_out_frac_interp'] ['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['gen']['eta_interp'] ['loco_con']['loco_vec'][6]['loco_type']['ConventionalLoco']['gen']['pwr_out_max_watts'] @@ -916,10 +916,10 @@ ['loco_con']['loco_vec'][6]['state']['pwr_aux'] ['loco_con']['loco_vec'][6]['state']['energy_out'] ['loco_con']['loco_vec'][6]['state']['energy_aux'] -['loco_con']['loco_vec'][6]['mass'] +['loco_con']['loco_vec'][6]['mass_kilograms'] ['loco_con']['loco_vec'][6]['mu'] -['loco_con']['loco_vec'][6]['ballast_mass'] -['loco_con']['loco_vec'][6]['baseline_mass'] +['loco_con']['loco_vec'][6]['ballast_mass_kilograms'] +['loco_con']['loco_vec'][6]['baseline_mass_kilograms'] ['loco_con']['loco_vec'][6]['save_interval'] ['loco_con']['loco_vec'][6]['history']['i'] ['loco_con']['loco_vec'][6]['history']['pwr_out_max'] @@ -930,9 +930,9 @@ ['loco_con']['loco_vec'][6]['history']['energy_out'] ['loco_con']['loco_vec'][6]['history']['energy_aux'] ['loco_con']['loco_vec'][6]['assert_limits'] -['loco_con']['loco_vec'][6]['pwr_aux_offset'] +['loco_con']['loco_vec'][6]['pwr_aux_offset_watts'] ['loco_con']['loco_vec'][6]['pwr_aux_traction_coeff'] -['loco_con']['loco_vec'][6]['force_max'] +['loco_con']['loco_vec'][6]['force_max_newtons'] ['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['fc']['state']['i'] ['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['fc']['state']['pwr_out_max'] ['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['fc']['state']['eta'] @@ -945,10 +945,10 @@ ['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['fc']['state']['energy_loss'] ['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['fc']['state']['energy_idle_fuel'] ['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['fc']['state']['engine_on'] -['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['fc']['mass'] -['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['fc']['specific_pwr'] +['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['fc']['mass_kilograms'] +['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['fc']['specific_pwr_watts_per_kilogram'] ['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_watts'] -['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_init'] +['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['fc']['pwr_out_max_init_watts'] ['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['fc']['pwr_ramp_lag_seconds'] ['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['fc']['pwr_out_frac_interp'] ['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['fc']['eta_interp'] @@ -979,8 +979,8 @@ ['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['gen']['state']['energy_elec_prop_out'] ['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['gen']['state']['energy_elec_aux'] ['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['gen']['state']['energy_loss'] -['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['gen']['mass'] -['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['gen']['specific_pwr'] +['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['gen']['mass_kilograms'] +['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['gen']['specific_pwr_watts_per_kilogram'] ['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['gen']['pwr_out_frac_interp'] ['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['gen']['eta_interp'] ['loco_con']['loco_vec'][7]['loco_type']['ConventionalLoco']['gen']['pwr_out_max_watts'] @@ -1042,10 +1042,10 @@ ['loco_con']['loco_vec'][7]['state']['pwr_aux'] ['loco_con']['loco_vec'][7]['state']['energy_out'] ['loco_con']['loco_vec'][7]['state']['energy_aux'] -['loco_con']['loco_vec'][7]['mass'] +['loco_con']['loco_vec'][7]['mass_kilograms'] ['loco_con']['loco_vec'][7]['mu'] -['loco_con']['loco_vec'][7]['ballast_mass'] -['loco_con']['loco_vec'][7]['baseline_mass'] +['loco_con']['loco_vec'][7]['ballast_mass_kilograms'] +['loco_con']['loco_vec'][7]['baseline_mass_kilograms'] ['loco_con']['loco_vec'][7]['save_interval'] ['loco_con']['loco_vec'][7]['history']['i'] ['loco_con']['loco_vec'][7]['history']['pwr_out_max'] @@ -1056,9 +1056,9 @@ ['loco_con']['loco_vec'][7]['history']['energy_out'] ['loco_con']['loco_vec'][7]['history']['energy_aux'] ['loco_con']['loco_vec'][7]['assert_limits'] -['loco_con']['loco_vec'][7]['pwr_aux_offset'] +['loco_con']['loco_vec'][7]['pwr_aux_offset_watts'] ['loco_con']['loco_vec'][7]['pwr_aux_traction_coeff'] -['loco_con']['loco_vec'][7]['force_max'] +['loco_con']['loco_vec'][7]['force_max_newtons'] ['loco_con']['pdct']['RESGreedy'] ['loco_con']['assert_limits'] ['loco_con']['state']['i'] @@ -1100,8 +1100,8 @@ ['loco_con']['history']['energy_res'] ['loco_con']['history']['energy_fuel'] ['loco_con']['save_interval'] -['n_cars_by_type']['Manifest_Loaded'] ['n_cars_by_type']['Manifest_Empty'] +['n_cars_by_type']['Manifest_Loaded'] ['state']['time'] ['state']['i'] ['state']['offset'] @@ -1596,4728 +1596,4728 @@ ['path_tpc']['link_points'][90]['curve_count'] ['path_tpc']['link_points'][90]['cat_power_count'] ['path_tpc']['link_points'][90]['link_idx'] -['path_tpc']['grades'][0]['offset'] +['path_tpc']['grades'][0]['offset_meters'] ['path_tpc']['grades'][0]['res_coeff'] -['path_tpc']['grades'][0]['res_net'] -['path_tpc']['grades'][1]['offset'] +['path_tpc']['grades'][0]['res_net_meters'] +['path_tpc']['grades'][1]['offset_meters'] ['path_tpc']['grades'][1]['res_coeff'] -['path_tpc']['grades'][1]['res_net'] -['path_tpc']['grades'][2]['offset'] +['path_tpc']['grades'][1]['res_net_meters'] +['path_tpc']['grades'][2]['offset_meters'] ['path_tpc']['grades'][2]['res_coeff'] -['path_tpc']['grades'][2]['res_net'] -['path_tpc']['grades'][3]['offset'] +['path_tpc']['grades'][2]['res_net_meters'] +['path_tpc']['grades'][3]['offset_meters'] ['path_tpc']['grades'][3]['res_coeff'] -['path_tpc']['grades'][3]['res_net'] -['path_tpc']['grades'][4]['offset'] +['path_tpc']['grades'][3]['res_net_meters'] +['path_tpc']['grades'][4]['offset_meters'] ['path_tpc']['grades'][4]['res_coeff'] -['path_tpc']['grades'][4]['res_net'] -['path_tpc']['grades'][5]['offset'] +['path_tpc']['grades'][4]['res_net_meters'] +['path_tpc']['grades'][5]['offset_meters'] ['path_tpc']['grades'][5]['res_coeff'] -['path_tpc']['grades'][5]['res_net'] -['path_tpc']['grades'][6]['offset'] +['path_tpc']['grades'][5]['res_net_meters'] +['path_tpc']['grades'][6]['offset_meters'] ['path_tpc']['grades'][6]['res_coeff'] -['path_tpc']['grades'][6]['res_net'] -['path_tpc']['grades'][7]['offset'] +['path_tpc']['grades'][6]['res_net_meters'] +['path_tpc']['grades'][7]['offset_meters'] ['path_tpc']['grades'][7]['res_coeff'] -['path_tpc']['grades'][7]['res_net'] -['path_tpc']['grades'][8]['offset'] +['path_tpc']['grades'][7]['res_net_meters'] +['path_tpc']['grades'][8]['offset_meters'] ['path_tpc']['grades'][8]['res_coeff'] -['path_tpc']['grades'][8]['res_net'] -['path_tpc']['grades'][9]['offset'] +['path_tpc']['grades'][8]['res_net_meters'] +['path_tpc']['grades'][9]['offset_meters'] ['path_tpc']['grades'][9]['res_coeff'] -['path_tpc']['grades'][9]['res_net'] -['path_tpc']['grades'][10]['offset'] +['path_tpc']['grades'][9]['res_net_meters'] +['path_tpc']['grades'][10]['offset_meters'] ['path_tpc']['grades'][10]['res_coeff'] -['path_tpc']['grades'][10]['res_net'] -['path_tpc']['grades'][11]['offset'] +['path_tpc']['grades'][10]['res_net_meters'] +['path_tpc']['grades'][11]['offset_meters'] ['path_tpc']['grades'][11]['res_coeff'] -['path_tpc']['grades'][11]['res_net'] -['path_tpc']['grades'][12]['offset'] +['path_tpc']['grades'][11]['res_net_meters'] +['path_tpc']['grades'][12]['offset_meters'] ['path_tpc']['grades'][12]['res_coeff'] -['path_tpc']['grades'][12]['res_net'] -['path_tpc']['grades'][13]['offset'] +['path_tpc']['grades'][12]['res_net_meters'] +['path_tpc']['grades'][13]['offset_meters'] ['path_tpc']['grades'][13]['res_coeff'] -['path_tpc']['grades'][13]['res_net'] -['path_tpc']['grades'][14]['offset'] +['path_tpc']['grades'][13]['res_net_meters'] +['path_tpc']['grades'][14]['offset_meters'] ['path_tpc']['grades'][14]['res_coeff'] -['path_tpc']['grades'][14]['res_net'] -['path_tpc']['grades'][15]['offset'] +['path_tpc']['grades'][14]['res_net_meters'] +['path_tpc']['grades'][15]['offset_meters'] ['path_tpc']['grades'][15]['res_coeff'] -['path_tpc']['grades'][15]['res_net'] -['path_tpc']['grades'][16]['offset'] +['path_tpc']['grades'][15]['res_net_meters'] +['path_tpc']['grades'][16]['offset_meters'] ['path_tpc']['grades'][16]['res_coeff'] -['path_tpc']['grades'][16]['res_net'] -['path_tpc']['grades'][17]['offset'] +['path_tpc']['grades'][16]['res_net_meters'] +['path_tpc']['grades'][17]['offset_meters'] ['path_tpc']['grades'][17]['res_coeff'] -['path_tpc']['grades'][17]['res_net'] -['path_tpc']['grades'][18]['offset'] +['path_tpc']['grades'][17]['res_net_meters'] +['path_tpc']['grades'][18]['offset_meters'] ['path_tpc']['grades'][18]['res_coeff'] -['path_tpc']['grades'][18]['res_net'] -['path_tpc']['grades'][19]['offset'] +['path_tpc']['grades'][18]['res_net_meters'] +['path_tpc']['grades'][19]['offset_meters'] ['path_tpc']['grades'][19]['res_coeff'] -['path_tpc']['grades'][19]['res_net'] -['path_tpc']['grades'][20]['offset'] +['path_tpc']['grades'][19]['res_net_meters'] +['path_tpc']['grades'][20]['offset_meters'] ['path_tpc']['grades'][20]['res_coeff'] -['path_tpc']['grades'][20]['res_net'] -['path_tpc']['grades'][21]['offset'] +['path_tpc']['grades'][20]['res_net_meters'] +['path_tpc']['grades'][21]['offset_meters'] ['path_tpc']['grades'][21]['res_coeff'] -['path_tpc']['grades'][21]['res_net'] -['path_tpc']['grades'][22]['offset'] +['path_tpc']['grades'][21]['res_net_meters'] +['path_tpc']['grades'][22]['offset_meters'] ['path_tpc']['grades'][22]['res_coeff'] -['path_tpc']['grades'][22]['res_net'] -['path_tpc']['grades'][23]['offset'] +['path_tpc']['grades'][22]['res_net_meters'] +['path_tpc']['grades'][23]['offset_meters'] ['path_tpc']['grades'][23]['res_coeff'] -['path_tpc']['grades'][23]['res_net'] -['path_tpc']['grades'][24]['offset'] +['path_tpc']['grades'][23]['res_net_meters'] +['path_tpc']['grades'][24]['offset_meters'] ['path_tpc']['grades'][24]['res_coeff'] -['path_tpc']['grades'][24]['res_net'] -['path_tpc']['grades'][25]['offset'] +['path_tpc']['grades'][24]['res_net_meters'] +['path_tpc']['grades'][25]['offset_meters'] ['path_tpc']['grades'][25]['res_coeff'] -['path_tpc']['grades'][25]['res_net'] -['path_tpc']['grades'][26]['offset'] +['path_tpc']['grades'][25]['res_net_meters'] +['path_tpc']['grades'][26]['offset_meters'] ['path_tpc']['grades'][26]['res_coeff'] -['path_tpc']['grades'][26]['res_net'] -['path_tpc']['grades'][27]['offset'] +['path_tpc']['grades'][26]['res_net_meters'] +['path_tpc']['grades'][27]['offset_meters'] ['path_tpc']['grades'][27]['res_coeff'] -['path_tpc']['grades'][27]['res_net'] -['path_tpc']['grades'][28]['offset'] +['path_tpc']['grades'][27]['res_net_meters'] +['path_tpc']['grades'][28]['offset_meters'] ['path_tpc']['grades'][28]['res_coeff'] -['path_tpc']['grades'][28]['res_net'] -['path_tpc']['grades'][29]['offset'] +['path_tpc']['grades'][28]['res_net_meters'] +['path_tpc']['grades'][29]['offset_meters'] ['path_tpc']['grades'][29]['res_coeff'] -['path_tpc']['grades'][29]['res_net'] -['path_tpc']['grades'][30]['offset'] +['path_tpc']['grades'][29]['res_net_meters'] +['path_tpc']['grades'][30]['offset_meters'] ['path_tpc']['grades'][30]['res_coeff'] -['path_tpc']['grades'][30]['res_net'] -['path_tpc']['grades'][31]['offset'] +['path_tpc']['grades'][30]['res_net_meters'] +['path_tpc']['grades'][31]['offset_meters'] ['path_tpc']['grades'][31]['res_coeff'] -['path_tpc']['grades'][31]['res_net'] -['path_tpc']['grades'][32]['offset'] +['path_tpc']['grades'][31]['res_net_meters'] +['path_tpc']['grades'][32]['offset_meters'] ['path_tpc']['grades'][32]['res_coeff'] -['path_tpc']['grades'][32]['res_net'] -['path_tpc']['grades'][33]['offset'] +['path_tpc']['grades'][32]['res_net_meters'] +['path_tpc']['grades'][33]['offset_meters'] ['path_tpc']['grades'][33]['res_coeff'] -['path_tpc']['grades'][33]['res_net'] -['path_tpc']['grades'][34]['offset'] +['path_tpc']['grades'][33]['res_net_meters'] +['path_tpc']['grades'][34]['offset_meters'] ['path_tpc']['grades'][34]['res_coeff'] -['path_tpc']['grades'][34]['res_net'] -['path_tpc']['grades'][35]['offset'] +['path_tpc']['grades'][34]['res_net_meters'] +['path_tpc']['grades'][35]['offset_meters'] ['path_tpc']['grades'][35]['res_coeff'] -['path_tpc']['grades'][35]['res_net'] -['path_tpc']['grades'][36]['offset'] +['path_tpc']['grades'][35]['res_net_meters'] +['path_tpc']['grades'][36]['offset_meters'] ['path_tpc']['grades'][36]['res_coeff'] -['path_tpc']['grades'][36]['res_net'] -['path_tpc']['grades'][37]['offset'] +['path_tpc']['grades'][36]['res_net_meters'] +['path_tpc']['grades'][37]['offset_meters'] ['path_tpc']['grades'][37]['res_coeff'] -['path_tpc']['grades'][37]['res_net'] -['path_tpc']['grades'][38]['offset'] +['path_tpc']['grades'][37]['res_net_meters'] +['path_tpc']['grades'][38]['offset_meters'] ['path_tpc']['grades'][38]['res_coeff'] -['path_tpc']['grades'][38]['res_net'] -['path_tpc']['grades'][39]['offset'] +['path_tpc']['grades'][38]['res_net_meters'] +['path_tpc']['grades'][39]['offset_meters'] ['path_tpc']['grades'][39]['res_coeff'] -['path_tpc']['grades'][39]['res_net'] -['path_tpc']['grades'][40]['offset'] +['path_tpc']['grades'][39]['res_net_meters'] +['path_tpc']['grades'][40]['offset_meters'] ['path_tpc']['grades'][40]['res_coeff'] -['path_tpc']['grades'][40]['res_net'] -['path_tpc']['grades'][41]['offset'] +['path_tpc']['grades'][40]['res_net_meters'] +['path_tpc']['grades'][41]['offset_meters'] ['path_tpc']['grades'][41]['res_coeff'] -['path_tpc']['grades'][41]['res_net'] -['path_tpc']['grades'][42]['offset'] +['path_tpc']['grades'][41]['res_net_meters'] +['path_tpc']['grades'][42]['offset_meters'] ['path_tpc']['grades'][42]['res_coeff'] -['path_tpc']['grades'][42]['res_net'] -['path_tpc']['grades'][43]['offset'] +['path_tpc']['grades'][42]['res_net_meters'] +['path_tpc']['grades'][43]['offset_meters'] ['path_tpc']['grades'][43]['res_coeff'] -['path_tpc']['grades'][43]['res_net'] -['path_tpc']['grades'][44]['offset'] +['path_tpc']['grades'][43]['res_net_meters'] +['path_tpc']['grades'][44]['offset_meters'] ['path_tpc']['grades'][44]['res_coeff'] -['path_tpc']['grades'][44]['res_net'] -['path_tpc']['grades'][45]['offset'] +['path_tpc']['grades'][44]['res_net_meters'] +['path_tpc']['grades'][45]['offset_meters'] ['path_tpc']['grades'][45]['res_coeff'] -['path_tpc']['grades'][45]['res_net'] -['path_tpc']['grades'][46]['offset'] +['path_tpc']['grades'][45]['res_net_meters'] +['path_tpc']['grades'][46]['offset_meters'] ['path_tpc']['grades'][46]['res_coeff'] -['path_tpc']['grades'][46]['res_net'] -['path_tpc']['grades'][47]['offset'] +['path_tpc']['grades'][46]['res_net_meters'] +['path_tpc']['grades'][47]['offset_meters'] ['path_tpc']['grades'][47]['res_coeff'] -['path_tpc']['grades'][47]['res_net'] -['path_tpc']['grades'][48]['offset'] +['path_tpc']['grades'][47]['res_net_meters'] +['path_tpc']['grades'][48]['offset_meters'] ['path_tpc']['grades'][48]['res_coeff'] -['path_tpc']['grades'][48]['res_net'] -['path_tpc']['grades'][49]['offset'] +['path_tpc']['grades'][48]['res_net_meters'] +['path_tpc']['grades'][49]['offset_meters'] ['path_tpc']['grades'][49]['res_coeff'] -['path_tpc']['grades'][49]['res_net'] -['path_tpc']['grades'][50]['offset'] +['path_tpc']['grades'][49]['res_net_meters'] +['path_tpc']['grades'][50]['offset_meters'] ['path_tpc']['grades'][50]['res_coeff'] -['path_tpc']['grades'][50]['res_net'] -['path_tpc']['grades'][51]['offset'] +['path_tpc']['grades'][50]['res_net_meters'] +['path_tpc']['grades'][51]['offset_meters'] ['path_tpc']['grades'][51]['res_coeff'] -['path_tpc']['grades'][51]['res_net'] -['path_tpc']['grades'][52]['offset'] +['path_tpc']['grades'][51]['res_net_meters'] +['path_tpc']['grades'][52]['offset_meters'] ['path_tpc']['grades'][52]['res_coeff'] -['path_tpc']['grades'][52]['res_net'] -['path_tpc']['grades'][53]['offset'] +['path_tpc']['grades'][52]['res_net_meters'] +['path_tpc']['grades'][53]['offset_meters'] ['path_tpc']['grades'][53]['res_coeff'] -['path_tpc']['grades'][53]['res_net'] -['path_tpc']['grades'][54]['offset'] +['path_tpc']['grades'][53]['res_net_meters'] +['path_tpc']['grades'][54]['offset_meters'] ['path_tpc']['grades'][54]['res_coeff'] -['path_tpc']['grades'][54]['res_net'] -['path_tpc']['grades'][55]['offset'] +['path_tpc']['grades'][54]['res_net_meters'] +['path_tpc']['grades'][55]['offset_meters'] ['path_tpc']['grades'][55]['res_coeff'] -['path_tpc']['grades'][55]['res_net'] -['path_tpc']['grades'][56]['offset'] +['path_tpc']['grades'][55]['res_net_meters'] +['path_tpc']['grades'][56]['offset_meters'] ['path_tpc']['grades'][56]['res_coeff'] -['path_tpc']['grades'][56]['res_net'] -['path_tpc']['grades'][57]['offset'] +['path_tpc']['grades'][56]['res_net_meters'] +['path_tpc']['grades'][57]['offset_meters'] ['path_tpc']['grades'][57]['res_coeff'] -['path_tpc']['grades'][57]['res_net'] -['path_tpc']['grades'][58]['offset'] +['path_tpc']['grades'][57]['res_net_meters'] +['path_tpc']['grades'][58]['offset_meters'] ['path_tpc']['grades'][58]['res_coeff'] -['path_tpc']['grades'][58]['res_net'] -['path_tpc']['grades'][59]['offset'] +['path_tpc']['grades'][58]['res_net_meters'] +['path_tpc']['grades'][59]['offset_meters'] ['path_tpc']['grades'][59]['res_coeff'] -['path_tpc']['grades'][59]['res_net'] -['path_tpc']['grades'][60]['offset'] +['path_tpc']['grades'][59]['res_net_meters'] +['path_tpc']['grades'][60]['offset_meters'] ['path_tpc']['grades'][60]['res_coeff'] -['path_tpc']['grades'][60]['res_net'] -['path_tpc']['grades'][61]['offset'] +['path_tpc']['grades'][60]['res_net_meters'] +['path_tpc']['grades'][61]['offset_meters'] ['path_tpc']['grades'][61]['res_coeff'] -['path_tpc']['grades'][61]['res_net'] -['path_tpc']['grades'][62]['offset'] +['path_tpc']['grades'][61]['res_net_meters'] +['path_tpc']['grades'][62]['offset_meters'] ['path_tpc']['grades'][62]['res_coeff'] -['path_tpc']['grades'][62]['res_net'] -['path_tpc']['grades'][63]['offset'] +['path_tpc']['grades'][62]['res_net_meters'] +['path_tpc']['grades'][63]['offset_meters'] ['path_tpc']['grades'][63]['res_coeff'] -['path_tpc']['grades'][63]['res_net'] -['path_tpc']['grades'][64]['offset'] +['path_tpc']['grades'][63]['res_net_meters'] +['path_tpc']['grades'][64]['offset_meters'] ['path_tpc']['grades'][64]['res_coeff'] -['path_tpc']['grades'][64]['res_net'] -['path_tpc']['grades'][65]['offset'] +['path_tpc']['grades'][64]['res_net_meters'] +['path_tpc']['grades'][65]['offset_meters'] ['path_tpc']['grades'][65]['res_coeff'] -['path_tpc']['grades'][65]['res_net'] -['path_tpc']['grades'][66]['offset'] +['path_tpc']['grades'][65]['res_net_meters'] +['path_tpc']['grades'][66]['offset_meters'] ['path_tpc']['grades'][66]['res_coeff'] -['path_tpc']['grades'][66]['res_net'] -['path_tpc']['grades'][67]['offset'] +['path_tpc']['grades'][66]['res_net_meters'] +['path_tpc']['grades'][67]['offset_meters'] ['path_tpc']['grades'][67]['res_coeff'] -['path_tpc']['grades'][67]['res_net'] -['path_tpc']['grades'][68]['offset'] +['path_tpc']['grades'][67]['res_net_meters'] +['path_tpc']['grades'][68]['offset_meters'] ['path_tpc']['grades'][68]['res_coeff'] -['path_tpc']['grades'][68]['res_net'] -['path_tpc']['grades'][69]['offset'] +['path_tpc']['grades'][68]['res_net_meters'] +['path_tpc']['grades'][69]['offset_meters'] ['path_tpc']['grades'][69]['res_coeff'] -['path_tpc']['grades'][69]['res_net'] -['path_tpc']['grades'][70]['offset'] +['path_tpc']['grades'][69]['res_net_meters'] +['path_tpc']['grades'][70]['offset_meters'] ['path_tpc']['grades'][70]['res_coeff'] -['path_tpc']['grades'][70]['res_net'] -['path_tpc']['grades'][71]['offset'] +['path_tpc']['grades'][70]['res_net_meters'] +['path_tpc']['grades'][71]['offset_meters'] ['path_tpc']['grades'][71]['res_coeff'] -['path_tpc']['grades'][71]['res_net'] -['path_tpc']['grades'][72]['offset'] +['path_tpc']['grades'][71]['res_net_meters'] +['path_tpc']['grades'][72]['offset_meters'] ['path_tpc']['grades'][72]['res_coeff'] -['path_tpc']['grades'][72]['res_net'] -['path_tpc']['grades'][73]['offset'] +['path_tpc']['grades'][72]['res_net_meters'] +['path_tpc']['grades'][73]['offset_meters'] ['path_tpc']['grades'][73]['res_coeff'] -['path_tpc']['grades'][73]['res_net'] -['path_tpc']['grades'][74]['offset'] +['path_tpc']['grades'][73]['res_net_meters'] +['path_tpc']['grades'][74]['offset_meters'] ['path_tpc']['grades'][74]['res_coeff'] -['path_tpc']['grades'][74]['res_net'] -['path_tpc']['grades'][75]['offset'] +['path_tpc']['grades'][74]['res_net_meters'] +['path_tpc']['grades'][75]['offset_meters'] ['path_tpc']['grades'][75]['res_coeff'] -['path_tpc']['grades'][75]['res_net'] -['path_tpc']['grades'][76]['offset'] +['path_tpc']['grades'][75]['res_net_meters'] +['path_tpc']['grades'][76]['offset_meters'] ['path_tpc']['grades'][76]['res_coeff'] -['path_tpc']['grades'][76]['res_net'] -['path_tpc']['grades'][77]['offset'] +['path_tpc']['grades'][76]['res_net_meters'] +['path_tpc']['grades'][77]['offset_meters'] ['path_tpc']['grades'][77]['res_coeff'] -['path_tpc']['grades'][77]['res_net'] -['path_tpc']['grades'][78]['offset'] +['path_tpc']['grades'][77]['res_net_meters'] +['path_tpc']['grades'][78]['offset_meters'] ['path_tpc']['grades'][78]['res_coeff'] -['path_tpc']['grades'][78]['res_net'] -['path_tpc']['grades'][79]['offset'] +['path_tpc']['grades'][78]['res_net_meters'] +['path_tpc']['grades'][79]['offset_meters'] ['path_tpc']['grades'][79]['res_coeff'] -['path_tpc']['grades'][79]['res_net'] -['path_tpc']['grades'][80]['offset'] +['path_tpc']['grades'][79]['res_net_meters'] +['path_tpc']['grades'][80]['offset_meters'] ['path_tpc']['grades'][80]['res_coeff'] -['path_tpc']['grades'][80]['res_net'] -['path_tpc']['grades'][81]['offset'] +['path_tpc']['grades'][80]['res_net_meters'] +['path_tpc']['grades'][81]['offset_meters'] ['path_tpc']['grades'][81]['res_coeff'] -['path_tpc']['grades'][81]['res_net'] -['path_tpc']['grades'][82]['offset'] +['path_tpc']['grades'][81]['res_net_meters'] +['path_tpc']['grades'][82]['offset_meters'] ['path_tpc']['grades'][82]['res_coeff'] -['path_tpc']['grades'][82]['res_net'] -['path_tpc']['grades'][83]['offset'] +['path_tpc']['grades'][82]['res_net_meters'] +['path_tpc']['grades'][83]['offset_meters'] ['path_tpc']['grades'][83]['res_coeff'] -['path_tpc']['grades'][83]['res_net'] -['path_tpc']['grades'][84]['offset'] +['path_tpc']['grades'][83]['res_net_meters'] +['path_tpc']['grades'][84]['offset_meters'] ['path_tpc']['grades'][84]['res_coeff'] -['path_tpc']['grades'][84]['res_net'] -['path_tpc']['grades'][85]['offset'] +['path_tpc']['grades'][84]['res_net_meters'] +['path_tpc']['grades'][85]['offset_meters'] ['path_tpc']['grades'][85]['res_coeff'] -['path_tpc']['grades'][85]['res_net'] -['path_tpc']['grades'][86]['offset'] +['path_tpc']['grades'][85]['res_net_meters'] +['path_tpc']['grades'][86]['offset_meters'] ['path_tpc']['grades'][86]['res_coeff'] -['path_tpc']['grades'][86]['res_net'] -['path_tpc']['grades'][87]['offset'] +['path_tpc']['grades'][86]['res_net_meters'] +['path_tpc']['grades'][87]['offset_meters'] ['path_tpc']['grades'][87]['res_coeff'] -['path_tpc']['grades'][87]['res_net'] -['path_tpc']['grades'][88]['offset'] +['path_tpc']['grades'][87]['res_net_meters'] +['path_tpc']['grades'][88]['offset_meters'] ['path_tpc']['grades'][88]['res_coeff'] -['path_tpc']['grades'][88]['res_net'] -['path_tpc']['grades'][89]['offset'] +['path_tpc']['grades'][88]['res_net_meters'] +['path_tpc']['grades'][89]['offset_meters'] ['path_tpc']['grades'][89]['res_coeff'] -['path_tpc']['grades'][89]['res_net'] -['path_tpc']['grades'][90]['offset'] +['path_tpc']['grades'][89]['res_net_meters'] +['path_tpc']['grades'][90]['offset_meters'] ['path_tpc']['grades'][90]['res_coeff'] -['path_tpc']['grades'][90]['res_net'] -['path_tpc']['grades'][91]['offset'] +['path_tpc']['grades'][90]['res_net_meters'] +['path_tpc']['grades'][91]['offset_meters'] ['path_tpc']['grades'][91]['res_coeff'] -['path_tpc']['grades'][91]['res_net'] -['path_tpc']['grades'][92]['offset'] +['path_tpc']['grades'][91]['res_net_meters'] +['path_tpc']['grades'][92]['offset_meters'] ['path_tpc']['grades'][92]['res_coeff'] -['path_tpc']['grades'][92]['res_net'] -['path_tpc']['grades'][93]['offset'] +['path_tpc']['grades'][92]['res_net_meters'] +['path_tpc']['grades'][93]['offset_meters'] ['path_tpc']['grades'][93]['res_coeff'] -['path_tpc']['grades'][93]['res_net'] -['path_tpc']['grades'][94]['offset'] +['path_tpc']['grades'][93]['res_net_meters'] +['path_tpc']['grades'][94]['offset_meters'] ['path_tpc']['grades'][94]['res_coeff'] -['path_tpc']['grades'][94]['res_net'] -['path_tpc']['grades'][95]['offset'] +['path_tpc']['grades'][94]['res_net_meters'] +['path_tpc']['grades'][95]['offset_meters'] ['path_tpc']['grades'][95]['res_coeff'] -['path_tpc']['grades'][95]['res_net'] -['path_tpc']['grades'][96]['offset'] +['path_tpc']['grades'][95]['res_net_meters'] +['path_tpc']['grades'][96]['offset_meters'] ['path_tpc']['grades'][96]['res_coeff'] -['path_tpc']['grades'][96]['res_net'] -['path_tpc']['grades'][97]['offset'] +['path_tpc']['grades'][96]['res_net_meters'] +['path_tpc']['grades'][97]['offset_meters'] ['path_tpc']['grades'][97]['res_coeff'] -['path_tpc']['grades'][97]['res_net'] -['path_tpc']['grades'][98]['offset'] +['path_tpc']['grades'][97]['res_net_meters'] +['path_tpc']['grades'][98]['offset_meters'] ['path_tpc']['grades'][98]['res_coeff'] -['path_tpc']['grades'][98]['res_net'] -['path_tpc']['grades'][99]['offset'] +['path_tpc']['grades'][98]['res_net_meters'] +['path_tpc']['grades'][99]['offset_meters'] ['path_tpc']['grades'][99]['res_coeff'] -['path_tpc']['grades'][99]['res_net'] -['path_tpc']['grades'][100]['offset'] +['path_tpc']['grades'][99]['res_net_meters'] +['path_tpc']['grades'][100]['offset_meters'] ['path_tpc']['grades'][100]['res_coeff'] -['path_tpc']['grades'][100]['res_net'] -['path_tpc']['grades'][101]['offset'] +['path_tpc']['grades'][100]['res_net_meters'] +['path_tpc']['grades'][101]['offset_meters'] ['path_tpc']['grades'][101]['res_coeff'] -['path_tpc']['grades'][101]['res_net'] -['path_tpc']['grades'][102]['offset'] +['path_tpc']['grades'][101]['res_net_meters'] +['path_tpc']['grades'][102]['offset_meters'] ['path_tpc']['grades'][102]['res_coeff'] -['path_tpc']['grades'][102]['res_net'] -['path_tpc']['grades'][103]['offset'] +['path_tpc']['grades'][102]['res_net_meters'] +['path_tpc']['grades'][103]['offset_meters'] ['path_tpc']['grades'][103]['res_coeff'] -['path_tpc']['grades'][103]['res_net'] -['path_tpc']['grades'][104]['offset'] +['path_tpc']['grades'][103]['res_net_meters'] +['path_tpc']['grades'][104]['offset_meters'] ['path_tpc']['grades'][104]['res_coeff'] -['path_tpc']['grades'][104]['res_net'] -['path_tpc']['grades'][105]['offset'] +['path_tpc']['grades'][104]['res_net_meters'] +['path_tpc']['grades'][105]['offset_meters'] ['path_tpc']['grades'][105]['res_coeff'] -['path_tpc']['grades'][105]['res_net'] -['path_tpc']['grades'][106]['offset'] +['path_tpc']['grades'][105]['res_net_meters'] +['path_tpc']['grades'][106]['offset_meters'] ['path_tpc']['grades'][106]['res_coeff'] -['path_tpc']['grades'][106]['res_net'] -['path_tpc']['grades'][107]['offset'] +['path_tpc']['grades'][106]['res_net_meters'] +['path_tpc']['grades'][107]['offset_meters'] ['path_tpc']['grades'][107]['res_coeff'] -['path_tpc']['grades'][107]['res_net'] -['path_tpc']['grades'][108]['offset'] +['path_tpc']['grades'][107]['res_net_meters'] +['path_tpc']['grades'][108]['offset_meters'] ['path_tpc']['grades'][108]['res_coeff'] -['path_tpc']['grades'][108]['res_net'] -['path_tpc']['grades'][109]['offset'] +['path_tpc']['grades'][108]['res_net_meters'] +['path_tpc']['grades'][109]['offset_meters'] ['path_tpc']['grades'][109]['res_coeff'] -['path_tpc']['grades'][109]['res_net'] -['path_tpc']['grades'][110]['offset'] +['path_tpc']['grades'][109]['res_net_meters'] +['path_tpc']['grades'][110]['offset_meters'] ['path_tpc']['grades'][110]['res_coeff'] -['path_tpc']['grades'][110]['res_net'] -['path_tpc']['grades'][111]['offset'] +['path_tpc']['grades'][110]['res_net_meters'] +['path_tpc']['grades'][111]['offset_meters'] ['path_tpc']['grades'][111]['res_coeff'] -['path_tpc']['grades'][111]['res_net'] -['path_tpc']['grades'][112]['offset'] +['path_tpc']['grades'][111]['res_net_meters'] +['path_tpc']['grades'][112]['offset_meters'] ['path_tpc']['grades'][112]['res_coeff'] -['path_tpc']['grades'][112]['res_net'] -['path_tpc']['grades'][113]['offset'] +['path_tpc']['grades'][112]['res_net_meters'] +['path_tpc']['grades'][113]['offset_meters'] ['path_tpc']['grades'][113]['res_coeff'] -['path_tpc']['grades'][113]['res_net'] -['path_tpc']['grades'][114]['offset'] +['path_tpc']['grades'][113]['res_net_meters'] +['path_tpc']['grades'][114]['offset_meters'] ['path_tpc']['grades'][114]['res_coeff'] -['path_tpc']['grades'][114]['res_net'] -['path_tpc']['grades'][115]['offset'] +['path_tpc']['grades'][114]['res_net_meters'] +['path_tpc']['grades'][115]['offset_meters'] ['path_tpc']['grades'][115]['res_coeff'] -['path_tpc']['grades'][115]['res_net'] -['path_tpc']['grades'][116]['offset'] +['path_tpc']['grades'][115]['res_net_meters'] +['path_tpc']['grades'][116]['offset_meters'] ['path_tpc']['grades'][116]['res_coeff'] -['path_tpc']['grades'][116]['res_net'] -['path_tpc']['grades'][117]['offset'] +['path_tpc']['grades'][116]['res_net_meters'] +['path_tpc']['grades'][117]['offset_meters'] ['path_tpc']['grades'][117]['res_coeff'] -['path_tpc']['grades'][117]['res_net'] -['path_tpc']['grades'][118]['offset'] +['path_tpc']['grades'][117]['res_net_meters'] +['path_tpc']['grades'][118]['offset_meters'] ['path_tpc']['grades'][118]['res_coeff'] -['path_tpc']['grades'][118]['res_net'] -['path_tpc']['grades'][119]['offset'] +['path_tpc']['grades'][118]['res_net_meters'] +['path_tpc']['grades'][119]['offset_meters'] ['path_tpc']['grades'][119]['res_coeff'] -['path_tpc']['grades'][119]['res_net'] -['path_tpc']['grades'][120]['offset'] +['path_tpc']['grades'][119]['res_net_meters'] +['path_tpc']['grades'][120]['offset_meters'] ['path_tpc']['grades'][120]['res_coeff'] -['path_tpc']['grades'][120]['res_net'] -['path_tpc']['grades'][121]['offset'] +['path_tpc']['grades'][120]['res_net_meters'] +['path_tpc']['grades'][121]['offset_meters'] ['path_tpc']['grades'][121]['res_coeff'] -['path_tpc']['grades'][121]['res_net'] -['path_tpc']['grades'][122]['offset'] +['path_tpc']['grades'][121]['res_net_meters'] +['path_tpc']['grades'][122]['offset_meters'] ['path_tpc']['grades'][122]['res_coeff'] -['path_tpc']['grades'][122]['res_net'] -['path_tpc']['grades'][123]['offset'] +['path_tpc']['grades'][122]['res_net_meters'] +['path_tpc']['grades'][123]['offset_meters'] ['path_tpc']['grades'][123]['res_coeff'] -['path_tpc']['grades'][123]['res_net'] -['path_tpc']['grades'][124]['offset'] +['path_tpc']['grades'][123]['res_net_meters'] +['path_tpc']['grades'][124]['offset_meters'] ['path_tpc']['grades'][124]['res_coeff'] -['path_tpc']['grades'][124]['res_net'] -['path_tpc']['grades'][125]['offset'] +['path_tpc']['grades'][124]['res_net_meters'] +['path_tpc']['grades'][125]['offset_meters'] ['path_tpc']['grades'][125]['res_coeff'] -['path_tpc']['grades'][125]['res_net'] -['path_tpc']['grades'][126]['offset'] +['path_tpc']['grades'][125]['res_net_meters'] +['path_tpc']['grades'][126]['offset_meters'] ['path_tpc']['grades'][126]['res_coeff'] -['path_tpc']['grades'][126]['res_net'] -['path_tpc']['grades'][127]['offset'] +['path_tpc']['grades'][126]['res_net_meters'] +['path_tpc']['grades'][127]['offset_meters'] ['path_tpc']['grades'][127]['res_coeff'] -['path_tpc']['grades'][127]['res_net'] -['path_tpc']['grades'][128]['offset'] +['path_tpc']['grades'][127]['res_net_meters'] +['path_tpc']['grades'][128]['offset_meters'] ['path_tpc']['grades'][128]['res_coeff'] -['path_tpc']['grades'][128]['res_net'] -['path_tpc']['grades'][129]['offset'] +['path_tpc']['grades'][128]['res_net_meters'] +['path_tpc']['grades'][129]['offset_meters'] ['path_tpc']['grades'][129]['res_coeff'] -['path_tpc']['grades'][129]['res_net'] -['path_tpc']['grades'][130]['offset'] +['path_tpc']['grades'][129]['res_net_meters'] +['path_tpc']['grades'][130]['offset_meters'] ['path_tpc']['grades'][130]['res_coeff'] -['path_tpc']['grades'][130]['res_net'] -['path_tpc']['grades'][131]['offset'] +['path_tpc']['grades'][130]['res_net_meters'] +['path_tpc']['grades'][131]['offset_meters'] ['path_tpc']['grades'][131]['res_coeff'] -['path_tpc']['grades'][131]['res_net'] -['path_tpc']['grades'][132]['offset'] +['path_tpc']['grades'][131]['res_net_meters'] +['path_tpc']['grades'][132]['offset_meters'] ['path_tpc']['grades'][132]['res_coeff'] -['path_tpc']['grades'][132]['res_net'] -['path_tpc']['grades'][133]['offset'] +['path_tpc']['grades'][132]['res_net_meters'] +['path_tpc']['grades'][133]['offset_meters'] ['path_tpc']['grades'][133]['res_coeff'] -['path_tpc']['grades'][133]['res_net'] -['path_tpc']['grades'][134]['offset'] +['path_tpc']['grades'][133]['res_net_meters'] +['path_tpc']['grades'][134]['offset_meters'] ['path_tpc']['grades'][134]['res_coeff'] -['path_tpc']['grades'][134]['res_net'] -['path_tpc']['grades'][135]['offset'] +['path_tpc']['grades'][134]['res_net_meters'] +['path_tpc']['grades'][135]['offset_meters'] ['path_tpc']['grades'][135]['res_coeff'] -['path_tpc']['grades'][135]['res_net'] -['path_tpc']['grades'][136]['offset'] +['path_tpc']['grades'][135]['res_net_meters'] +['path_tpc']['grades'][136]['offset_meters'] ['path_tpc']['grades'][136]['res_coeff'] -['path_tpc']['grades'][136]['res_net'] -['path_tpc']['grades'][137]['offset'] +['path_tpc']['grades'][136]['res_net_meters'] +['path_tpc']['grades'][137]['offset_meters'] ['path_tpc']['grades'][137]['res_coeff'] -['path_tpc']['grades'][137]['res_net'] -['path_tpc']['grades'][138]['offset'] +['path_tpc']['grades'][137]['res_net_meters'] +['path_tpc']['grades'][138]['offset_meters'] ['path_tpc']['grades'][138]['res_coeff'] -['path_tpc']['grades'][138]['res_net'] -['path_tpc']['grades'][139]['offset'] +['path_tpc']['grades'][138]['res_net_meters'] +['path_tpc']['grades'][139]['offset_meters'] ['path_tpc']['grades'][139]['res_coeff'] -['path_tpc']['grades'][139]['res_net'] -['path_tpc']['grades'][140]['offset'] +['path_tpc']['grades'][139]['res_net_meters'] +['path_tpc']['grades'][140]['offset_meters'] ['path_tpc']['grades'][140]['res_coeff'] -['path_tpc']['grades'][140]['res_net'] -['path_tpc']['grades'][141]['offset'] +['path_tpc']['grades'][140]['res_net_meters'] +['path_tpc']['grades'][141]['offset_meters'] ['path_tpc']['grades'][141]['res_coeff'] -['path_tpc']['grades'][141]['res_net'] -['path_tpc']['grades'][142]['offset'] +['path_tpc']['grades'][141]['res_net_meters'] +['path_tpc']['grades'][142]['offset_meters'] ['path_tpc']['grades'][142]['res_coeff'] -['path_tpc']['grades'][142]['res_net'] -['path_tpc']['grades'][143]['offset'] +['path_tpc']['grades'][142]['res_net_meters'] +['path_tpc']['grades'][143]['offset_meters'] ['path_tpc']['grades'][143]['res_coeff'] -['path_tpc']['grades'][143]['res_net'] -['path_tpc']['grades'][144]['offset'] +['path_tpc']['grades'][143]['res_net_meters'] +['path_tpc']['grades'][144]['offset_meters'] ['path_tpc']['grades'][144]['res_coeff'] -['path_tpc']['grades'][144]['res_net'] -['path_tpc']['grades'][145]['offset'] +['path_tpc']['grades'][144]['res_net_meters'] +['path_tpc']['grades'][145]['offset_meters'] ['path_tpc']['grades'][145]['res_coeff'] -['path_tpc']['grades'][145]['res_net'] -['path_tpc']['grades'][146]['offset'] +['path_tpc']['grades'][145]['res_net_meters'] +['path_tpc']['grades'][146]['offset_meters'] ['path_tpc']['grades'][146]['res_coeff'] -['path_tpc']['grades'][146]['res_net'] -['path_tpc']['grades'][147]['offset'] +['path_tpc']['grades'][146]['res_net_meters'] +['path_tpc']['grades'][147]['offset_meters'] ['path_tpc']['grades'][147]['res_coeff'] -['path_tpc']['grades'][147]['res_net'] -['path_tpc']['grades'][148]['offset'] +['path_tpc']['grades'][147]['res_net_meters'] +['path_tpc']['grades'][148]['offset_meters'] ['path_tpc']['grades'][148]['res_coeff'] -['path_tpc']['grades'][148]['res_net'] -['path_tpc']['grades'][149]['offset'] +['path_tpc']['grades'][148]['res_net_meters'] +['path_tpc']['grades'][149]['offset_meters'] ['path_tpc']['grades'][149]['res_coeff'] -['path_tpc']['grades'][149]['res_net'] -['path_tpc']['grades'][150]['offset'] +['path_tpc']['grades'][149]['res_net_meters'] +['path_tpc']['grades'][150]['offset_meters'] ['path_tpc']['grades'][150]['res_coeff'] -['path_tpc']['grades'][150]['res_net'] -['path_tpc']['grades'][151]['offset'] +['path_tpc']['grades'][150]['res_net_meters'] +['path_tpc']['grades'][151]['offset_meters'] ['path_tpc']['grades'][151]['res_coeff'] -['path_tpc']['grades'][151]['res_net'] -['path_tpc']['grades'][152]['offset'] +['path_tpc']['grades'][151]['res_net_meters'] +['path_tpc']['grades'][152]['offset_meters'] ['path_tpc']['grades'][152]['res_coeff'] -['path_tpc']['grades'][152]['res_net'] -['path_tpc']['grades'][153]['offset'] +['path_tpc']['grades'][152]['res_net_meters'] +['path_tpc']['grades'][153]['offset_meters'] ['path_tpc']['grades'][153]['res_coeff'] -['path_tpc']['grades'][153]['res_net'] -['path_tpc']['grades'][154]['offset'] +['path_tpc']['grades'][153]['res_net_meters'] +['path_tpc']['grades'][154]['offset_meters'] ['path_tpc']['grades'][154]['res_coeff'] -['path_tpc']['grades'][154]['res_net'] -['path_tpc']['grades'][155]['offset'] +['path_tpc']['grades'][154]['res_net_meters'] +['path_tpc']['grades'][155]['offset_meters'] ['path_tpc']['grades'][155]['res_coeff'] -['path_tpc']['grades'][155]['res_net'] -['path_tpc']['grades'][156]['offset'] +['path_tpc']['grades'][155]['res_net_meters'] +['path_tpc']['grades'][156]['offset_meters'] ['path_tpc']['grades'][156]['res_coeff'] -['path_tpc']['grades'][156]['res_net'] -['path_tpc']['grades'][157]['offset'] +['path_tpc']['grades'][156]['res_net_meters'] +['path_tpc']['grades'][157]['offset_meters'] ['path_tpc']['grades'][157]['res_coeff'] -['path_tpc']['grades'][157]['res_net'] -['path_tpc']['grades'][158]['offset'] +['path_tpc']['grades'][157]['res_net_meters'] +['path_tpc']['grades'][158]['offset_meters'] ['path_tpc']['grades'][158]['res_coeff'] -['path_tpc']['grades'][158]['res_net'] -['path_tpc']['grades'][159]['offset'] +['path_tpc']['grades'][158]['res_net_meters'] +['path_tpc']['grades'][159]['offset_meters'] ['path_tpc']['grades'][159]['res_coeff'] -['path_tpc']['grades'][159]['res_net'] -['path_tpc']['grades'][160]['offset'] +['path_tpc']['grades'][159]['res_net_meters'] +['path_tpc']['grades'][160]['offset_meters'] ['path_tpc']['grades'][160]['res_coeff'] -['path_tpc']['grades'][160]['res_net'] -['path_tpc']['grades'][161]['offset'] +['path_tpc']['grades'][160]['res_net_meters'] +['path_tpc']['grades'][161]['offset_meters'] ['path_tpc']['grades'][161]['res_coeff'] -['path_tpc']['grades'][161]['res_net'] -['path_tpc']['grades'][162]['offset'] +['path_tpc']['grades'][161]['res_net_meters'] +['path_tpc']['grades'][162]['offset_meters'] ['path_tpc']['grades'][162]['res_coeff'] -['path_tpc']['grades'][162]['res_net'] -['path_tpc']['grades'][163]['offset'] +['path_tpc']['grades'][162]['res_net_meters'] +['path_tpc']['grades'][163]['offset_meters'] ['path_tpc']['grades'][163]['res_coeff'] -['path_tpc']['grades'][163]['res_net'] -['path_tpc']['grades'][164]['offset'] +['path_tpc']['grades'][163]['res_net_meters'] +['path_tpc']['grades'][164]['offset_meters'] ['path_tpc']['grades'][164]['res_coeff'] -['path_tpc']['grades'][164]['res_net'] -['path_tpc']['grades'][165]['offset'] +['path_tpc']['grades'][164]['res_net_meters'] +['path_tpc']['grades'][165]['offset_meters'] ['path_tpc']['grades'][165]['res_coeff'] -['path_tpc']['grades'][165]['res_net'] -['path_tpc']['grades'][166]['offset'] +['path_tpc']['grades'][165]['res_net_meters'] +['path_tpc']['grades'][166]['offset_meters'] ['path_tpc']['grades'][166]['res_coeff'] -['path_tpc']['grades'][166]['res_net'] -['path_tpc']['grades'][167]['offset'] +['path_tpc']['grades'][166]['res_net_meters'] +['path_tpc']['grades'][167]['offset_meters'] ['path_tpc']['grades'][167]['res_coeff'] -['path_tpc']['grades'][167]['res_net'] -['path_tpc']['grades'][168]['offset'] +['path_tpc']['grades'][167]['res_net_meters'] +['path_tpc']['grades'][168]['offset_meters'] ['path_tpc']['grades'][168]['res_coeff'] -['path_tpc']['grades'][168]['res_net'] -['path_tpc']['grades'][169]['offset'] +['path_tpc']['grades'][168]['res_net_meters'] +['path_tpc']['grades'][169]['offset_meters'] ['path_tpc']['grades'][169]['res_coeff'] -['path_tpc']['grades'][169]['res_net'] -['path_tpc']['grades'][170]['offset'] +['path_tpc']['grades'][169]['res_net_meters'] +['path_tpc']['grades'][170]['offset_meters'] ['path_tpc']['grades'][170]['res_coeff'] -['path_tpc']['grades'][170]['res_net'] -['path_tpc']['grades'][171]['offset'] +['path_tpc']['grades'][170]['res_net_meters'] +['path_tpc']['grades'][171]['offset_meters'] ['path_tpc']['grades'][171]['res_coeff'] -['path_tpc']['grades'][171]['res_net'] -['path_tpc']['grades'][172]['offset'] +['path_tpc']['grades'][171]['res_net_meters'] +['path_tpc']['grades'][172]['offset_meters'] ['path_tpc']['grades'][172]['res_coeff'] -['path_tpc']['grades'][172]['res_net'] -['path_tpc']['grades'][173]['offset'] +['path_tpc']['grades'][172]['res_net_meters'] +['path_tpc']['grades'][173]['offset_meters'] ['path_tpc']['grades'][173]['res_coeff'] -['path_tpc']['grades'][173]['res_net'] -['path_tpc']['grades'][174]['offset'] +['path_tpc']['grades'][173]['res_net_meters'] +['path_tpc']['grades'][174]['offset_meters'] ['path_tpc']['grades'][174]['res_coeff'] -['path_tpc']['grades'][174]['res_net'] -['path_tpc']['grades'][175]['offset'] +['path_tpc']['grades'][174]['res_net_meters'] +['path_tpc']['grades'][175]['offset_meters'] ['path_tpc']['grades'][175]['res_coeff'] -['path_tpc']['grades'][175]['res_net'] -['path_tpc']['grades'][176]['offset'] +['path_tpc']['grades'][175]['res_net_meters'] +['path_tpc']['grades'][176]['offset_meters'] ['path_tpc']['grades'][176]['res_coeff'] -['path_tpc']['grades'][176]['res_net'] -['path_tpc']['grades'][177]['offset'] +['path_tpc']['grades'][176]['res_net_meters'] +['path_tpc']['grades'][177]['offset_meters'] ['path_tpc']['grades'][177]['res_coeff'] -['path_tpc']['grades'][177]['res_net'] -['path_tpc']['grades'][178]['offset'] +['path_tpc']['grades'][177]['res_net_meters'] +['path_tpc']['grades'][178]['offset_meters'] ['path_tpc']['grades'][178]['res_coeff'] -['path_tpc']['grades'][178]['res_net'] -['path_tpc']['grades'][179]['offset'] +['path_tpc']['grades'][178]['res_net_meters'] +['path_tpc']['grades'][179]['offset_meters'] ['path_tpc']['grades'][179]['res_coeff'] -['path_tpc']['grades'][179]['res_net'] -['path_tpc']['grades'][180]['offset'] +['path_tpc']['grades'][179]['res_net_meters'] +['path_tpc']['grades'][180]['offset_meters'] ['path_tpc']['grades'][180]['res_coeff'] -['path_tpc']['grades'][180]['res_net'] -['path_tpc']['grades'][181]['offset'] +['path_tpc']['grades'][180]['res_net_meters'] +['path_tpc']['grades'][181]['offset_meters'] ['path_tpc']['grades'][181]['res_coeff'] -['path_tpc']['grades'][181]['res_net'] -['path_tpc']['grades'][182]['offset'] +['path_tpc']['grades'][181]['res_net_meters'] +['path_tpc']['grades'][182]['offset_meters'] ['path_tpc']['grades'][182]['res_coeff'] -['path_tpc']['grades'][182]['res_net'] -['path_tpc']['grades'][183]['offset'] +['path_tpc']['grades'][182]['res_net_meters'] +['path_tpc']['grades'][183]['offset_meters'] ['path_tpc']['grades'][183]['res_coeff'] -['path_tpc']['grades'][183]['res_net'] -['path_tpc']['grades'][184]['offset'] +['path_tpc']['grades'][183]['res_net_meters'] +['path_tpc']['grades'][184]['offset_meters'] ['path_tpc']['grades'][184]['res_coeff'] -['path_tpc']['grades'][184]['res_net'] -['path_tpc']['grades'][185]['offset'] +['path_tpc']['grades'][184]['res_net_meters'] +['path_tpc']['grades'][185]['offset_meters'] ['path_tpc']['grades'][185]['res_coeff'] -['path_tpc']['grades'][185]['res_net'] -['path_tpc']['grades'][186]['offset'] +['path_tpc']['grades'][185]['res_net_meters'] +['path_tpc']['grades'][186]['offset_meters'] ['path_tpc']['grades'][186]['res_coeff'] -['path_tpc']['grades'][186]['res_net'] -['path_tpc']['grades'][187]['offset'] +['path_tpc']['grades'][186]['res_net_meters'] +['path_tpc']['grades'][187]['offset_meters'] ['path_tpc']['grades'][187]['res_coeff'] -['path_tpc']['grades'][187]['res_net'] -['path_tpc']['grades'][188]['offset'] +['path_tpc']['grades'][187]['res_net_meters'] +['path_tpc']['grades'][188]['offset_meters'] ['path_tpc']['grades'][188]['res_coeff'] -['path_tpc']['grades'][188]['res_net'] -['path_tpc']['grades'][189]['offset'] +['path_tpc']['grades'][188]['res_net_meters'] +['path_tpc']['grades'][189]['offset_meters'] ['path_tpc']['grades'][189]['res_coeff'] -['path_tpc']['grades'][189]['res_net'] -['path_tpc']['grades'][190]['offset'] +['path_tpc']['grades'][189]['res_net_meters'] +['path_tpc']['grades'][190]['offset_meters'] ['path_tpc']['grades'][190]['res_coeff'] -['path_tpc']['grades'][190]['res_net'] -['path_tpc']['grades'][191]['offset'] +['path_tpc']['grades'][190]['res_net_meters'] +['path_tpc']['grades'][191]['offset_meters'] ['path_tpc']['grades'][191]['res_coeff'] -['path_tpc']['grades'][191]['res_net'] -['path_tpc']['grades'][192]['offset'] +['path_tpc']['grades'][191]['res_net_meters'] +['path_tpc']['grades'][192]['offset_meters'] ['path_tpc']['grades'][192]['res_coeff'] -['path_tpc']['grades'][192]['res_net'] -['path_tpc']['grades'][193]['offset'] +['path_tpc']['grades'][192]['res_net_meters'] +['path_tpc']['grades'][193]['offset_meters'] ['path_tpc']['grades'][193]['res_coeff'] -['path_tpc']['grades'][193]['res_net'] -['path_tpc']['grades'][194]['offset'] +['path_tpc']['grades'][193]['res_net_meters'] +['path_tpc']['grades'][194]['offset_meters'] ['path_tpc']['grades'][194]['res_coeff'] -['path_tpc']['grades'][194]['res_net'] -['path_tpc']['grades'][195]['offset'] +['path_tpc']['grades'][194]['res_net_meters'] +['path_tpc']['grades'][195]['offset_meters'] ['path_tpc']['grades'][195]['res_coeff'] -['path_tpc']['grades'][195]['res_net'] -['path_tpc']['grades'][196]['offset'] +['path_tpc']['grades'][195]['res_net_meters'] +['path_tpc']['grades'][196]['offset_meters'] ['path_tpc']['grades'][196]['res_coeff'] -['path_tpc']['grades'][196]['res_net'] -['path_tpc']['grades'][197]['offset'] +['path_tpc']['grades'][196]['res_net_meters'] +['path_tpc']['grades'][197]['offset_meters'] ['path_tpc']['grades'][197]['res_coeff'] -['path_tpc']['grades'][197]['res_net'] -['path_tpc']['grades'][198]['offset'] +['path_tpc']['grades'][197]['res_net_meters'] +['path_tpc']['grades'][198]['offset_meters'] ['path_tpc']['grades'][198]['res_coeff'] -['path_tpc']['grades'][198]['res_net'] -['path_tpc']['grades'][199]['offset'] +['path_tpc']['grades'][198]['res_net_meters'] +['path_tpc']['grades'][199]['offset_meters'] ['path_tpc']['grades'][199]['res_coeff'] -['path_tpc']['grades'][199]['res_net'] -['path_tpc']['grades'][200]['offset'] +['path_tpc']['grades'][199]['res_net_meters'] +['path_tpc']['grades'][200]['offset_meters'] ['path_tpc']['grades'][200]['res_coeff'] -['path_tpc']['grades'][200]['res_net'] -['path_tpc']['grades'][201]['offset'] +['path_tpc']['grades'][200]['res_net_meters'] +['path_tpc']['grades'][201]['offset_meters'] ['path_tpc']['grades'][201]['res_coeff'] -['path_tpc']['grades'][201]['res_net'] -['path_tpc']['grades'][202]['offset'] +['path_tpc']['grades'][201]['res_net_meters'] +['path_tpc']['grades'][202]['offset_meters'] ['path_tpc']['grades'][202]['res_coeff'] -['path_tpc']['grades'][202]['res_net'] -['path_tpc']['grades'][203]['offset'] +['path_tpc']['grades'][202]['res_net_meters'] +['path_tpc']['grades'][203]['offset_meters'] ['path_tpc']['grades'][203]['res_coeff'] -['path_tpc']['grades'][203]['res_net'] -['path_tpc']['grades'][204]['offset'] +['path_tpc']['grades'][203]['res_net_meters'] +['path_tpc']['grades'][204]['offset_meters'] ['path_tpc']['grades'][204]['res_coeff'] -['path_tpc']['grades'][204]['res_net'] -['path_tpc']['grades'][205]['offset'] +['path_tpc']['grades'][204]['res_net_meters'] +['path_tpc']['grades'][205]['offset_meters'] ['path_tpc']['grades'][205]['res_coeff'] -['path_tpc']['grades'][205]['res_net'] -['path_tpc']['grades'][206]['offset'] +['path_tpc']['grades'][205]['res_net_meters'] +['path_tpc']['grades'][206]['offset_meters'] ['path_tpc']['grades'][206]['res_coeff'] -['path_tpc']['grades'][206]['res_net'] -['path_tpc']['grades'][207]['offset'] +['path_tpc']['grades'][206]['res_net_meters'] +['path_tpc']['grades'][207]['offset_meters'] ['path_tpc']['grades'][207]['res_coeff'] -['path_tpc']['grades'][207]['res_net'] -['path_tpc']['grades'][208]['offset'] +['path_tpc']['grades'][207]['res_net_meters'] +['path_tpc']['grades'][208]['offset_meters'] ['path_tpc']['grades'][208]['res_coeff'] -['path_tpc']['grades'][208]['res_net'] -['path_tpc']['grades'][209]['offset'] +['path_tpc']['grades'][208]['res_net_meters'] +['path_tpc']['grades'][209]['offset_meters'] ['path_tpc']['grades'][209]['res_coeff'] -['path_tpc']['grades'][209]['res_net'] -['path_tpc']['grades'][210]['offset'] +['path_tpc']['grades'][209]['res_net_meters'] +['path_tpc']['grades'][210]['offset_meters'] ['path_tpc']['grades'][210]['res_coeff'] -['path_tpc']['grades'][210]['res_net'] -['path_tpc']['grades'][211]['offset'] +['path_tpc']['grades'][210]['res_net_meters'] +['path_tpc']['grades'][211]['offset_meters'] ['path_tpc']['grades'][211]['res_coeff'] -['path_tpc']['grades'][211]['res_net'] -['path_tpc']['grades'][212]['offset'] +['path_tpc']['grades'][211]['res_net_meters'] +['path_tpc']['grades'][212]['offset_meters'] ['path_tpc']['grades'][212]['res_coeff'] -['path_tpc']['grades'][212]['res_net'] -['path_tpc']['grades'][213]['offset'] +['path_tpc']['grades'][212]['res_net_meters'] +['path_tpc']['grades'][213]['offset_meters'] ['path_tpc']['grades'][213]['res_coeff'] -['path_tpc']['grades'][213]['res_net'] -['path_tpc']['grades'][214]['offset'] +['path_tpc']['grades'][213]['res_net_meters'] +['path_tpc']['grades'][214]['offset_meters'] ['path_tpc']['grades'][214]['res_coeff'] -['path_tpc']['grades'][214]['res_net'] -['path_tpc']['grades'][215]['offset'] +['path_tpc']['grades'][214]['res_net_meters'] +['path_tpc']['grades'][215]['offset_meters'] ['path_tpc']['grades'][215]['res_coeff'] -['path_tpc']['grades'][215]['res_net'] -['path_tpc']['grades'][216]['offset'] +['path_tpc']['grades'][215]['res_net_meters'] +['path_tpc']['grades'][216]['offset_meters'] ['path_tpc']['grades'][216]['res_coeff'] -['path_tpc']['grades'][216]['res_net'] -['path_tpc']['grades'][217]['offset'] +['path_tpc']['grades'][216]['res_net_meters'] +['path_tpc']['grades'][217]['offset_meters'] ['path_tpc']['grades'][217]['res_coeff'] -['path_tpc']['grades'][217]['res_net'] -['path_tpc']['grades'][218]['offset'] +['path_tpc']['grades'][217]['res_net_meters'] +['path_tpc']['grades'][218]['offset_meters'] ['path_tpc']['grades'][218]['res_coeff'] -['path_tpc']['grades'][218]['res_net'] -['path_tpc']['grades'][219]['offset'] +['path_tpc']['grades'][218]['res_net_meters'] +['path_tpc']['grades'][219]['offset_meters'] ['path_tpc']['grades'][219]['res_coeff'] -['path_tpc']['grades'][219]['res_net'] -['path_tpc']['grades'][220]['offset'] +['path_tpc']['grades'][219]['res_net_meters'] +['path_tpc']['grades'][220]['offset_meters'] ['path_tpc']['grades'][220]['res_coeff'] -['path_tpc']['grades'][220]['res_net'] -['path_tpc']['grades'][221]['offset'] +['path_tpc']['grades'][220]['res_net_meters'] +['path_tpc']['grades'][221]['offset_meters'] ['path_tpc']['grades'][221]['res_coeff'] -['path_tpc']['grades'][221]['res_net'] -['path_tpc']['grades'][222]['offset'] +['path_tpc']['grades'][221]['res_net_meters'] +['path_tpc']['grades'][222]['offset_meters'] ['path_tpc']['grades'][222]['res_coeff'] -['path_tpc']['grades'][222]['res_net'] -['path_tpc']['grades'][223]['offset'] +['path_tpc']['grades'][222]['res_net_meters'] +['path_tpc']['grades'][223]['offset_meters'] ['path_tpc']['grades'][223]['res_coeff'] -['path_tpc']['grades'][223]['res_net'] -['path_tpc']['grades'][224]['offset'] +['path_tpc']['grades'][223]['res_net_meters'] +['path_tpc']['grades'][224]['offset_meters'] ['path_tpc']['grades'][224]['res_coeff'] -['path_tpc']['grades'][224]['res_net'] -['path_tpc']['grades'][225]['offset'] +['path_tpc']['grades'][224]['res_net_meters'] +['path_tpc']['grades'][225]['offset_meters'] ['path_tpc']['grades'][225]['res_coeff'] -['path_tpc']['grades'][225]['res_net'] -['path_tpc']['grades'][226]['offset'] +['path_tpc']['grades'][225]['res_net_meters'] +['path_tpc']['grades'][226]['offset_meters'] ['path_tpc']['grades'][226]['res_coeff'] -['path_tpc']['grades'][226]['res_net'] -['path_tpc']['grades'][227]['offset'] +['path_tpc']['grades'][226]['res_net_meters'] +['path_tpc']['grades'][227]['offset_meters'] ['path_tpc']['grades'][227]['res_coeff'] -['path_tpc']['grades'][227]['res_net'] -['path_tpc']['grades'][228]['offset'] +['path_tpc']['grades'][227]['res_net_meters'] +['path_tpc']['grades'][228]['offset_meters'] ['path_tpc']['grades'][228]['res_coeff'] -['path_tpc']['grades'][228]['res_net'] -['path_tpc']['grades'][229]['offset'] +['path_tpc']['grades'][228]['res_net_meters'] +['path_tpc']['grades'][229]['offset_meters'] ['path_tpc']['grades'][229]['res_coeff'] -['path_tpc']['grades'][229]['res_net'] -['path_tpc']['grades'][230]['offset'] +['path_tpc']['grades'][229]['res_net_meters'] +['path_tpc']['grades'][230]['offset_meters'] ['path_tpc']['grades'][230]['res_coeff'] -['path_tpc']['grades'][230]['res_net'] -['path_tpc']['grades'][231]['offset'] +['path_tpc']['grades'][230]['res_net_meters'] +['path_tpc']['grades'][231]['offset_meters'] ['path_tpc']['grades'][231]['res_coeff'] -['path_tpc']['grades'][231]['res_net'] -['path_tpc']['grades'][232]['offset'] +['path_tpc']['grades'][231]['res_net_meters'] +['path_tpc']['grades'][232]['offset_meters'] ['path_tpc']['grades'][232]['res_coeff'] -['path_tpc']['grades'][232]['res_net'] -['path_tpc']['grades'][233]['offset'] +['path_tpc']['grades'][232]['res_net_meters'] +['path_tpc']['grades'][233]['offset_meters'] ['path_tpc']['grades'][233]['res_coeff'] -['path_tpc']['grades'][233]['res_net'] -['path_tpc']['grades'][234]['offset'] +['path_tpc']['grades'][233]['res_net_meters'] +['path_tpc']['grades'][234]['offset_meters'] ['path_tpc']['grades'][234]['res_coeff'] -['path_tpc']['grades'][234]['res_net'] -['path_tpc']['grades'][235]['offset'] +['path_tpc']['grades'][234]['res_net_meters'] +['path_tpc']['grades'][235]['offset_meters'] ['path_tpc']['grades'][235]['res_coeff'] -['path_tpc']['grades'][235]['res_net'] -['path_tpc']['grades'][236]['offset'] +['path_tpc']['grades'][235]['res_net_meters'] +['path_tpc']['grades'][236]['offset_meters'] ['path_tpc']['grades'][236]['res_coeff'] -['path_tpc']['grades'][236]['res_net'] -['path_tpc']['grades'][237]['offset'] +['path_tpc']['grades'][236]['res_net_meters'] +['path_tpc']['grades'][237]['offset_meters'] ['path_tpc']['grades'][237]['res_coeff'] -['path_tpc']['grades'][237]['res_net'] -['path_tpc']['grades'][238]['offset'] +['path_tpc']['grades'][237]['res_net_meters'] +['path_tpc']['grades'][238]['offset_meters'] ['path_tpc']['grades'][238]['res_coeff'] -['path_tpc']['grades'][238]['res_net'] -['path_tpc']['grades'][239]['offset'] +['path_tpc']['grades'][238]['res_net_meters'] +['path_tpc']['grades'][239]['offset_meters'] ['path_tpc']['grades'][239]['res_coeff'] -['path_tpc']['grades'][239]['res_net'] -['path_tpc']['grades'][240]['offset'] +['path_tpc']['grades'][239]['res_net_meters'] +['path_tpc']['grades'][240]['offset_meters'] ['path_tpc']['grades'][240]['res_coeff'] -['path_tpc']['grades'][240]['res_net'] -['path_tpc']['grades'][241]['offset'] +['path_tpc']['grades'][240]['res_net_meters'] +['path_tpc']['grades'][241]['offset_meters'] ['path_tpc']['grades'][241]['res_coeff'] -['path_tpc']['grades'][241]['res_net'] -['path_tpc']['grades'][242]['offset'] +['path_tpc']['grades'][241]['res_net_meters'] +['path_tpc']['grades'][242]['offset_meters'] ['path_tpc']['grades'][242]['res_coeff'] -['path_tpc']['grades'][242]['res_net'] -['path_tpc']['grades'][243]['offset'] +['path_tpc']['grades'][242]['res_net_meters'] +['path_tpc']['grades'][243]['offset_meters'] ['path_tpc']['grades'][243]['res_coeff'] -['path_tpc']['grades'][243]['res_net'] -['path_tpc']['grades'][244]['offset'] +['path_tpc']['grades'][243]['res_net_meters'] +['path_tpc']['grades'][244]['offset_meters'] ['path_tpc']['grades'][244]['res_coeff'] -['path_tpc']['grades'][244]['res_net'] -['path_tpc']['grades'][245]['offset'] +['path_tpc']['grades'][244]['res_net_meters'] +['path_tpc']['grades'][245]['offset_meters'] ['path_tpc']['grades'][245]['res_coeff'] -['path_tpc']['grades'][245]['res_net'] -['path_tpc']['grades'][246]['offset'] +['path_tpc']['grades'][245]['res_net_meters'] +['path_tpc']['grades'][246]['offset_meters'] ['path_tpc']['grades'][246]['res_coeff'] -['path_tpc']['grades'][246]['res_net'] -['path_tpc']['grades'][247]['offset'] +['path_tpc']['grades'][246]['res_net_meters'] +['path_tpc']['grades'][247]['offset_meters'] ['path_tpc']['grades'][247]['res_coeff'] -['path_tpc']['grades'][247]['res_net'] -['path_tpc']['grades'][248]['offset'] +['path_tpc']['grades'][247]['res_net_meters'] +['path_tpc']['grades'][248]['offset_meters'] ['path_tpc']['grades'][248]['res_coeff'] -['path_tpc']['grades'][248]['res_net'] -['path_tpc']['grades'][249]['offset'] +['path_tpc']['grades'][248]['res_net_meters'] +['path_tpc']['grades'][249]['offset_meters'] ['path_tpc']['grades'][249]['res_coeff'] -['path_tpc']['grades'][249]['res_net'] -['path_tpc']['grades'][250]['offset'] +['path_tpc']['grades'][249]['res_net_meters'] +['path_tpc']['grades'][250]['offset_meters'] ['path_tpc']['grades'][250]['res_coeff'] -['path_tpc']['grades'][250]['res_net'] -['path_tpc']['grades'][251]['offset'] +['path_tpc']['grades'][250]['res_net_meters'] +['path_tpc']['grades'][251]['offset_meters'] ['path_tpc']['grades'][251]['res_coeff'] -['path_tpc']['grades'][251]['res_net'] -['path_tpc']['grades'][252]['offset'] +['path_tpc']['grades'][251]['res_net_meters'] +['path_tpc']['grades'][252]['offset_meters'] ['path_tpc']['grades'][252]['res_coeff'] -['path_tpc']['grades'][252]['res_net'] -['path_tpc']['grades'][253]['offset'] +['path_tpc']['grades'][252]['res_net_meters'] +['path_tpc']['grades'][253]['offset_meters'] ['path_tpc']['grades'][253]['res_coeff'] -['path_tpc']['grades'][253]['res_net'] -['path_tpc']['grades'][254]['offset'] +['path_tpc']['grades'][253]['res_net_meters'] +['path_tpc']['grades'][254]['offset_meters'] ['path_tpc']['grades'][254]['res_coeff'] -['path_tpc']['grades'][254]['res_net'] -['path_tpc']['grades'][255]['offset'] +['path_tpc']['grades'][254]['res_net_meters'] +['path_tpc']['grades'][255]['offset_meters'] ['path_tpc']['grades'][255]['res_coeff'] -['path_tpc']['grades'][255]['res_net'] -['path_tpc']['grades'][256]['offset'] +['path_tpc']['grades'][255]['res_net_meters'] +['path_tpc']['grades'][256]['offset_meters'] ['path_tpc']['grades'][256]['res_coeff'] -['path_tpc']['grades'][256]['res_net'] -['path_tpc']['grades'][257]['offset'] +['path_tpc']['grades'][256]['res_net_meters'] +['path_tpc']['grades'][257]['offset_meters'] ['path_tpc']['grades'][257]['res_coeff'] -['path_tpc']['grades'][257]['res_net'] -['path_tpc']['grades'][258]['offset'] +['path_tpc']['grades'][257]['res_net_meters'] +['path_tpc']['grades'][258]['offset_meters'] ['path_tpc']['grades'][258]['res_coeff'] -['path_tpc']['grades'][258]['res_net'] -['path_tpc']['grades'][259]['offset'] +['path_tpc']['grades'][258]['res_net_meters'] +['path_tpc']['grades'][259]['offset_meters'] ['path_tpc']['grades'][259]['res_coeff'] -['path_tpc']['grades'][259]['res_net'] -['path_tpc']['grades'][260]['offset'] +['path_tpc']['grades'][259]['res_net_meters'] +['path_tpc']['grades'][260]['offset_meters'] ['path_tpc']['grades'][260]['res_coeff'] -['path_tpc']['grades'][260]['res_net'] -['path_tpc']['grades'][261]['offset'] +['path_tpc']['grades'][260]['res_net_meters'] +['path_tpc']['grades'][261]['offset_meters'] ['path_tpc']['grades'][261]['res_coeff'] -['path_tpc']['grades'][261]['res_net'] -['path_tpc']['grades'][262]['offset'] +['path_tpc']['grades'][261]['res_net_meters'] +['path_tpc']['grades'][262]['offset_meters'] ['path_tpc']['grades'][262]['res_coeff'] -['path_tpc']['grades'][262]['res_net'] -['path_tpc']['grades'][263]['offset'] +['path_tpc']['grades'][262]['res_net_meters'] +['path_tpc']['grades'][263]['offset_meters'] ['path_tpc']['grades'][263]['res_coeff'] -['path_tpc']['grades'][263]['res_net'] -['path_tpc']['grades'][264]['offset'] +['path_tpc']['grades'][263]['res_net_meters'] +['path_tpc']['grades'][264]['offset_meters'] ['path_tpc']['grades'][264]['res_coeff'] -['path_tpc']['grades'][264]['res_net'] -['path_tpc']['grades'][265]['offset'] +['path_tpc']['grades'][264]['res_net_meters'] +['path_tpc']['grades'][265]['offset_meters'] ['path_tpc']['grades'][265]['res_coeff'] -['path_tpc']['grades'][265]['res_net'] -['path_tpc']['grades'][266]['offset'] +['path_tpc']['grades'][265]['res_net_meters'] +['path_tpc']['grades'][266]['offset_meters'] ['path_tpc']['grades'][266]['res_coeff'] -['path_tpc']['grades'][266]['res_net'] -['path_tpc']['grades'][267]['offset'] +['path_tpc']['grades'][266]['res_net_meters'] +['path_tpc']['grades'][267]['offset_meters'] ['path_tpc']['grades'][267]['res_coeff'] -['path_tpc']['grades'][267]['res_net'] -['path_tpc']['grades'][268]['offset'] +['path_tpc']['grades'][267]['res_net_meters'] +['path_tpc']['grades'][268]['offset_meters'] ['path_tpc']['grades'][268]['res_coeff'] -['path_tpc']['grades'][268]['res_net'] -['path_tpc']['grades'][269]['offset'] +['path_tpc']['grades'][268]['res_net_meters'] +['path_tpc']['grades'][269]['offset_meters'] ['path_tpc']['grades'][269]['res_coeff'] -['path_tpc']['grades'][269]['res_net'] -['path_tpc']['grades'][270]['offset'] +['path_tpc']['grades'][269]['res_net_meters'] +['path_tpc']['grades'][270]['offset_meters'] ['path_tpc']['grades'][270]['res_coeff'] -['path_tpc']['grades'][270]['res_net'] -['path_tpc']['grades'][271]['offset'] +['path_tpc']['grades'][270]['res_net_meters'] +['path_tpc']['grades'][271]['offset_meters'] ['path_tpc']['grades'][271]['res_coeff'] -['path_tpc']['grades'][271]['res_net'] -['path_tpc']['grades'][272]['offset'] +['path_tpc']['grades'][271]['res_net_meters'] +['path_tpc']['grades'][272]['offset_meters'] ['path_tpc']['grades'][272]['res_coeff'] -['path_tpc']['grades'][272]['res_net'] -['path_tpc']['grades'][273]['offset'] +['path_tpc']['grades'][272]['res_net_meters'] +['path_tpc']['grades'][273]['offset_meters'] ['path_tpc']['grades'][273]['res_coeff'] -['path_tpc']['grades'][273]['res_net'] -['path_tpc']['grades'][274]['offset'] +['path_tpc']['grades'][273]['res_net_meters'] +['path_tpc']['grades'][274]['offset_meters'] ['path_tpc']['grades'][274]['res_coeff'] -['path_tpc']['grades'][274]['res_net'] -['path_tpc']['grades'][275]['offset'] +['path_tpc']['grades'][274]['res_net_meters'] +['path_tpc']['grades'][275]['offset_meters'] ['path_tpc']['grades'][275]['res_coeff'] -['path_tpc']['grades'][275]['res_net'] -['path_tpc']['grades'][276]['offset'] +['path_tpc']['grades'][275]['res_net_meters'] +['path_tpc']['grades'][276]['offset_meters'] ['path_tpc']['grades'][276]['res_coeff'] -['path_tpc']['grades'][276]['res_net'] -['path_tpc']['grades'][277]['offset'] +['path_tpc']['grades'][276]['res_net_meters'] +['path_tpc']['grades'][277]['offset_meters'] ['path_tpc']['grades'][277]['res_coeff'] -['path_tpc']['grades'][277]['res_net'] -['path_tpc']['grades'][278]['offset'] +['path_tpc']['grades'][277]['res_net_meters'] +['path_tpc']['grades'][278]['offset_meters'] ['path_tpc']['grades'][278]['res_coeff'] -['path_tpc']['grades'][278]['res_net'] -['path_tpc']['grades'][279]['offset'] +['path_tpc']['grades'][278]['res_net_meters'] +['path_tpc']['grades'][279]['offset_meters'] ['path_tpc']['grades'][279]['res_coeff'] -['path_tpc']['grades'][279]['res_net'] -['path_tpc']['grades'][280]['offset'] +['path_tpc']['grades'][279]['res_net_meters'] +['path_tpc']['grades'][280]['offset_meters'] ['path_tpc']['grades'][280]['res_coeff'] -['path_tpc']['grades'][280]['res_net'] -['path_tpc']['grades'][281]['offset'] +['path_tpc']['grades'][280]['res_net_meters'] +['path_tpc']['grades'][281]['offset_meters'] ['path_tpc']['grades'][281]['res_coeff'] -['path_tpc']['grades'][281]['res_net'] -['path_tpc']['grades'][282]['offset'] +['path_tpc']['grades'][281]['res_net_meters'] +['path_tpc']['grades'][282]['offset_meters'] ['path_tpc']['grades'][282]['res_coeff'] -['path_tpc']['grades'][282]['res_net'] -['path_tpc']['grades'][283]['offset'] +['path_tpc']['grades'][282]['res_net_meters'] +['path_tpc']['grades'][283]['offset_meters'] ['path_tpc']['grades'][283]['res_coeff'] -['path_tpc']['grades'][283]['res_net'] -['path_tpc']['grades'][284]['offset'] +['path_tpc']['grades'][283]['res_net_meters'] +['path_tpc']['grades'][284]['offset_meters'] ['path_tpc']['grades'][284]['res_coeff'] -['path_tpc']['grades'][284]['res_net'] -['path_tpc']['grades'][285]['offset'] +['path_tpc']['grades'][284]['res_net_meters'] +['path_tpc']['grades'][285]['offset_meters'] ['path_tpc']['grades'][285]['res_coeff'] -['path_tpc']['grades'][285]['res_net'] -['path_tpc']['grades'][286]['offset'] +['path_tpc']['grades'][285]['res_net_meters'] +['path_tpc']['grades'][286]['offset_meters'] ['path_tpc']['grades'][286]['res_coeff'] -['path_tpc']['grades'][286]['res_net'] -['path_tpc']['grades'][287]['offset'] +['path_tpc']['grades'][286]['res_net_meters'] +['path_tpc']['grades'][287]['offset_meters'] ['path_tpc']['grades'][287]['res_coeff'] -['path_tpc']['grades'][287]['res_net'] -['path_tpc']['grades'][288]['offset'] +['path_tpc']['grades'][287]['res_net_meters'] +['path_tpc']['grades'][288]['offset_meters'] ['path_tpc']['grades'][288]['res_coeff'] -['path_tpc']['grades'][288]['res_net'] -['path_tpc']['grades'][289]['offset'] +['path_tpc']['grades'][288]['res_net_meters'] +['path_tpc']['grades'][289]['offset_meters'] ['path_tpc']['grades'][289]['res_coeff'] -['path_tpc']['grades'][289]['res_net'] -['path_tpc']['grades'][290]['offset'] +['path_tpc']['grades'][289]['res_net_meters'] +['path_tpc']['grades'][290]['offset_meters'] ['path_tpc']['grades'][290]['res_coeff'] -['path_tpc']['grades'][290]['res_net'] -['path_tpc']['grades'][291]['offset'] +['path_tpc']['grades'][290]['res_net_meters'] +['path_tpc']['grades'][291]['offset_meters'] ['path_tpc']['grades'][291]['res_coeff'] -['path_tpc']['grades'][291]['res_net'] -['path_tpc']['grades'][292]['offset'] +['path_tpc']['grades'][291]['res_net_meters'] +['path_tpc']['grades'][292]['offset_meters'] ['path_tpc']['grades'][292]['res_coeff'] -['path_tpc']['grades'][292]['res_net'] -['path_tpc']['grades'][293]['offset'] +['path_tpc']['grades'][292]['res_net_meters'] +['path_tpc']['grades'][293]['offset_meters'] ['path_tpc']['grades'][293]['res_coeff'] -['path_tpc']['grades'][293]['res_net'] -['path_tpc']['grades'][294]['offset'] +['path_tpc']['grades'][293]['res_net_meters'] +['path_tpc']['grades'][294]['offset_meters'] ['path_tpc']['grades'][294]['res_coeff'] -['path_tpc']['grades'][294]['res_net'] -['path_tpc']['grades'][295]['offset'] +['path_tpc']['grades'][294]['res_net_meters'] +['path_tpc']['grades'][295]['offset_meters'] ['path_tpc']['grades'][295]['res_coeff'] -['path_tpc']['grades'][295]['res_net'] -['path_tpc']['grades'][296]['offset'] +['path_tpc']['grades'][295]['res_net_meters'] +['path_tpc']['grades'][296]['offset_meters'] ['path_tpc']['grades'][296]['res_coeff'] -['path_tpc']['grades'][296]['res_net'] -['path_tpc']['grades'][297]['offset'] +['path_tpc']['grades'][296]['res_net_meters'] +['path_tpc']['grades'][297]['offset_meters'] ['path_tpc']['grades'][297]['res_coeff'] -['path_tpc']['grades'][297]['res_net'] -['path_tpc']['grades'][298]['offset'] +['path_tpc']['grades'][297]['res_net_meters'] +['path_tpc']['grades'][298]['offset_meters'] ['path_tpc']['grades'][298]['res_coeff'] -['path_tpc']['grades'][298]['res_net'] -['path_tpc']['grades'][299]['offset'] +['path_tpc']['grades'][298]['res_net_meters'] +['path_tpc']['grades'][299]['offset_meters'] ['path_tpc']['grades'][299]['res_coeff'] -['path_tpc']['grades'][299]['res_net'] -['path_tpc']['grades'][300]['offset'] +['path_tpc']['grades'][299]['res_net_meters'] +['path_tpc']['grades'][300]['offset_meters'] ['path_tpc']['grades'][300]['res_coeff'] -['path_tpc']['grades'][300]['res_net'] -['path_tpc']['grades'][301]['offset'] +['path_tpc']['grades'][300]['res_net_meters'] +['path_tpc']['grades'][301]['offset_meters'] ['path_tpc']['grades'][301]['res_coeff'] -['path_tpc']['grades'][301]['res_net'] -['path_tpc']['grades'][302]['offset'] +['path_tpc']['grades'][301]['res_net_meters'] +['path_tpc']['grades'][302]['offset_meters'] ['path_tpc']['grades'][302]['res_coeff'] -['path_tpc']['grades'][302]['res_net'] -['path_tpc']['grades'][303]['offset'] +['path_tpc']['grades'][302]['res_net_meters'] +['path_tpc']['grades'][303]['offset_meters'] ['path_tpc']['grades'][303]['res_coeff'] -['path_tpc']['grades'][303]['res_net'] -['path_tpc']['grades'][304]['offset'] +['path_tpc']['grades'][303]['res_net_meters'] +['path_tpc']['grades'][304]['offset_meters'] ['path_tpc']['grades'][304]['res_coeff'] -['path_tpc']['grades'][304]['res_net'] -['path_tpc']['grades'][305]['offset'] +['path_tpc']['grades'][304]['res_net_meters'] +['path_tpc']['grades'][305]['offset_meters'] ['path_tpc']['grades'][305]['res_coeff'] -['path_tpc']['grades'][305]['res_net'] -['path_tpc']['grades'][306]['offset'] +['path_tpc']['grades'][305]['res_net_meters'] +['path_tpc']['grades'][306]['offset_meters'] ['path_tpc']['grades'][306]['res_coeff'] -['path_tpc']['grades'][306]['res_net'] -['path_tpc']['grades'][307]['offset'] +['path_tpc']['grades'][306]['res_net_meters'] +['path_tpc']['grades'][307]['offset_meters'] ['path_tpc']['grades'][307]['res_coeff'] -['path_tpc']['grades'][307]['res_net'] -['path_tpc']['grades'][308]['offset'] +['path_tpc']['grades'][307]['res_net_meters'] +['path_tpc']['grades'][308]['offset_meters'] ['path_tpc']['grades'][308]['res_coeff'] -['path_tpc']['grades'][308]['res_net'] -['path_tpc']['grades'][309]['offset'] +['path_tpc']['grades'][308]['res_net_meters'] +['path_tpc']['grades'][309]['offset_meters'] ['path_tpc']['grades'][309]['res_coeff'] -['path_tpc']['grades'][309]['res_net'] -['path_tpc']['grades'][310]['offset'] +['path_tpc']['grades'][309]['res_net_meters'] +['path_tpc']['grades'][310]['offset_meters'] ['path_tpc']['grades'][310]['res_coeff'] -['path_tpc']['grades'][310]['res_net'] -['path_tpc']['grades'][311]['offset'] +['path_tpc']['grades'][310]['res_net_meters'] +['path_tpc']['grades'][311]['offset_meters'] ['path_tpc']['grades'][311]['res_coeff'] -['path_tpc']['grades'][311]['res_net'] -['path_tpc']['grades'][312]['offset'] +['path_tpc']['grades'][311]['res_net_meters'] +['path_tpc']['grades'][312]['offset_meters'] ['path_tpc']['grades'][312]['res_coeff'] -['path_tpc']['grades'][312]['res_net'] -['path_tpc']['grades'][313]['offset'] +['path_tpc']['grades'][312]['res_net_meters'] +['path_tpc']['grades'][313]['offset_meters'] ['path_tpc']['grades'][313]['res_coeff'] -['path_tpc']['grades'][313]['res_net'] -['path_tpc']['grades'][314]['offset'] +['path_tpc']['grades'][313]['res_net_meters'] +['path_tpc']['grades'][314]['offset_meters'] ['path_tpc']['grades'][314]['res_coeff'] -['path_tpc']['grades'][314]['res_net'] -['path_tpc']['grades'][315]['offset'] +['path_tpc']['grades'][314]['res_net_meters'] +['path_tpc']['grades'][315]['offset_meters'] ['path_tpc']['grades'][315]['res_coeff'] -['path_tpc']['grades'][315]['res_net'] -['path_tpc']['grades'][316]['offset'] +['path_tpc']['grades'][315]['res_net_meters'] +['path_tpc']['grades'][316]['offset_meters'] ['path_tpc']['grades'][316]['res_coeff'] -['path_tpc']['grades'][316]['res_net'] -['path_tpc']['grades'][317]['offset'] +['path_tpc']['grades'][316]['res_net_meters'] +['path_tpc']['grades'][317]['offset_meters'] ['path_tpc']['grades'][317]['res_coeff'] -['path_tpc']['grades'][317]['res_net'] -['path_tpc']['grades'][318]['offset'] +['path_tpc']['grades'][317]['res_net_meters'] +['path_tpc']['grades'][318]['offset_meters'] ['path_tpc']['grades'][318]['res_coeff'] -['path_tpc']['grades'][318]['res_net'] -['path_tpc']['grades'][319]['offset'] +['path_tpc']['grades'][318]['res_net_meters'] +['path_tpc']['grades'][319]['offset_meters'] ['path_tpc']['grades'][319]['res_coeff'] -['path_tpc']['grades'][319]['res_net'] -['path_tpc']['grades'][320]['offset'] +['path_tpc']['grades'][319]['res_net_meters'] +['path_tpc']['grades'][320]['offset_meters'] ['path_tpc']['grades'][320]['res_coeff'] -['path_tpc']['grades'][320]['res_net'] -['path_tpc']['grades'][321]['offset'] +['path_tpc']['grades'][320]['res_net_meters'] +['path_tpc']['grades'][321]['offset_meters'] ['path_tpc']['grades'][321]['res_coeff'] -['path_tpc']['grades'][321]['res_net'] -['path_tpc']['grades'][322]['offset'] +['path_tpc']['grades'][321]['res_net_meters'] +['path_tpc']['grades'][322]['offset_meters'] ['path_tpc']['grades'][322]['res_coeff'] -['path_tpc']['grades'][322]['res_net'] -['path_tpc']['grades'][323]['offset'] +['path_tpc']['grades'][322]['res_net_meters'] +['path_tpc']['grades'][323]['offset_meters'] ['path_tpc']['grades'][323]['res_coeff'] -['path_tpc']['grades'][323]['res_net'] -['path_tpc']['grades'][324]['offset'] +['path_tpc']['grades'][323]['res_net_meters'] +['path_tpc']['grades'][324]['offset_meters'] ['path_tpc']['grades'][324]['res_coeff'] -['path_tpc']['grades'][324]['res_net'] -['path_tpc']['grades'][325]['offset'] +['path_tpc']['grades'][324]['res_net_meters'] +['path_tpc']['grades'][325]['offset_meters'] ['path_tpc']['grades'][325]['res_coeff'] -['path_tpc']['grades'][325]['res_net'] -['path_tpc']['grades'][326]['offset'] +['path_tpc']['grades'][325]['res_net_meters'] +['path_tpc']['grades'][326]['offset_meters'] ['path_tpc']['grades'][326]['res_coeff'] -['path_tpc']['grades'][326]['res_net'] -['path_tpc']['grades'][327]['offset'] +['path_tpc']['grades'][326]['res_net_meters'] +['path_tpc']['grades'][327]['offset_meters'] ['path_tpc']['grades'][327]['res_coeff'] -['path_tpc']['grades'][327]['res_net'] -['path_tpc']['grades'][328]['offset'] +['path_tpc']['grades'][327]['res_net_meters'] +['path_tpc']['grades'][328]['offset_meters'] ['path_tpc']['grades'][328]['res_coeff'] -['path_tpc']['grades'][328]['res_net'] -['path_tpc']['grades'][329]['offset'] +['path_tpc']['grades'][328]['res_net_meters'] +['path_tpc']['grades'][329]['offset_meters'] ['path_tpc']['grades'][329]['res_coeff'] -['path_tpc']['grades'][329]['res_net'] -['path_tpc']['grades'][330]['offset'] +['path_tpc']['grades'][329]['res_net_meters'] +['path_tpc']['grades'][330]['offset_meters'] ['path_tpc']['grades'][330]['res_coeff'] -['path_tpc']['grades'][330]['res_net'] -['path_tpc']['grades'][331]['offset'] +['path_tpc']['grades'][330]['res_net_meters'] +['path_tpc']['grades'][331]['offset_meters'] ['path_tpc']['grades'][331]['res_coeff'] -['path_tpc']['grades'][331]['res_net'] -['path_tpc']['grades'][332]['offset'] +['path_tpc']['grades'][331]['res_net_meters'] +['path_tpc']['grades'][332]['offset_meters'] ['path_tpc']['grades'][332]['res_coeff'] -['path_tpc']['grades'][332]['res_net'] -['path_tpc']['grades'][333]['offset'] +['path_tpc']['grades'][332]['res_net_meters'] +['path_tpc']['grades'][333]['offset_meters'] ['path_tpc']['grades'][333]['res_coeff'] -['path_tpc']['grades'][333]['res_net'] -['path_tpc']['grades'][334]['offset'] +['path_tpc']['grades'][333]['res_net_meters'] +['path_tpc']['grades'][334]['offset_meters'] ['path_tpc']['grades'][334]['res_coeff'] -['path_tpc']['grades'][334]['res_net'] -['path_tpc']['grades'][335]['offset'] +['path_tpc']['grades'][334]['res_net_meters'] +['path_tpc']['grades'][335]['offset_meters'] ['path_tpc']['grades'][335]['res_coeff'] -['path_tpc']['grades'][335]['res_net'] -['path_tpc']['grades'][336]['offset'] +['path_tpc']['grades'][335]['res_net_meters'] +['path_tpc']['grades'][336]['offset_meters'] ['path_tpc']['grades'][336]['res_coeff'] -['path_tpc']['grades'][336]['res_net'] -['path_tpc']['grades'][337]['offset'] +['path_tpc']['grades'][336]['res_net_meters'] +['path_tpc']['grades'][337]['offset_meters'] ['path_tpc']['grades'][337]['res_coeff'] -['path_tpc']['grades'][337]['res_net'] -['path_tpc']['grades'][338]['offset'] +['path_tpc']['grades'][337]['res_net_meters'] +['path_tpc']['grades'][338]['offset_meters'] ['path_tpc']['grades'][338]['res_coeff'] -['path_tpc']['grades'][338]['res_net'] -['path_tpc']['grades'][339]['offset'] +['path_tpc']['grades'][338]['res_net_meters'] +['path_tpc']['grades'][339]['offset_meters'] ['path_tpc']['grades'][339]['res_coeff'] -['path_tpc']['grades'][339]['res_net'] -['path_tpc']['grades'][340]['offset'] +['path_tpc']['grades'][339]['res_net_meters'] +['path_tpc']['grades'][340]['offset_meters'] ['path_tpc']['grades'][340]['res_coeff'] -['path_tpc']['grades'][340]['res_net'] -['path_tpc']['grades'][341]['offset'] +['path_tpc']['grades'][340]['res_net_meters'] +['path_tpc']['grades'][341]['offset_meters'] ['path_tpc']['grades'][341]['res_coeff'] -['path_tpc']['grades'][341]['res_net'] -['path_tpc']['grades'][342]['offset'] +['path_tpc']['grades'][341]['res_net_meters'] +['path_tpc']['grades'][342]['offset_meters'] ['path_tpc']['grades'][342]['res_coeff'] -['path_tpc']['grades'][342]['res_net'] -['path_tpc']['grades'][343]['offset'] +['path_tpc']['grades'][342]['res_net_meters'] +['path_tpc']['grades'][343]['offset_meters'] ['path_tpc']['grades'][343]['res_coeff'] -['path_tpc']['grades'][343]['res_net'] -['path_tpc']['grades'][344]['offset'] +['path_tpc']['grades'][343]['res_net_meters'] +['path_tpc']['grades'][344]['offset_meters'] ['path_tpc']['grades'][344]['res_coeff'] -['path_tpc']['grades'][344]['res_net'] -['path_tpc']['grades'][345]['offset'] +['path_tpc']['grades'][344]['res_net_meters'] +['path_tpc']['grades'][345]['offset_meters'] ['path_tpc']['grades'][345]['res_coeff'] -['path_tpc']['grades'][345]['res_net'] -['path_tpc']['grades'][346]['offset'] +['path_tpc']['grades'][345]['res_net_meters'] +['path_tpc']['grades'][346]['offset_meters'] ['path_tpc']['grades'][346]['res_coeff'] -['path_tpc']['grades'][346]['res_net'] -['path_tpc']['grades'][347]['offset'] +['path_tpc']['grades'][346]['res_net_meters'] +['path_tpc']['grades'][347]['offset_meters'] ['path_tpc']['grades'][347]['res_coeff'] -['path_tpc']['grades'][347]['res_net'] -['path_tpc']['grades'][348]['offset'] +['path_tpc']['grades'][347]['res_net_meters'] +['path_tpc']['grades'][348]['offset_meters'] ['path_tpc']['grades'][348]['res_coeff'] -['path_tpc']['grades'][348]['res_net'] -['path_tpc']['grades'][349]['offset'] +['path_tpc']['grades'][348]['res_net_meters'] +['path_tpc']['grades'][349]['offset_meters'] ['path_tpc']['grades'][349]['res_coeff'] -['path_tpc']['grades'][349]['res_net'] -['path_tpc']['grades'][350]['offset'] +['path_tpc']['grades'][349]['res_net_meters'] +['path_tpc']['grades'][350]['offset_meters'] ['path_tpc']['grades'][350]['res_coeff'] -['path_tpc']['grades'][350]['res_net'] -['path_tpc']['grades'][351]['offset'] +['path_tpc']['grades'][350]['res_net_meters'] +['path_tpc']['grades'][351]['offset_meters'] ['path_tpc']['grades'][351]['res_coeff'] -['path_tpc']['grades'][351]['res_net'] -['path_tpc']['grades'][352]['offset'] +['path_tpc']['grades'][351]['res_net_meters'] +['path_tpc']['grades'][352]['offset_meters'] ['path_tpc']['grades'][352]['res_coeff'] -['path_tpc']['grades'][352]['res_net'] -['path_tpc']['grades'][353]['offset'] +['path_tpc']['grades'][352]['res_net_meters'] +['path_tpc']['grades'][353]['offset_meters'] ['path_tpc']['grades'][353]['res_coeff'] -['path_tpc']['grades'][353]['res_net'] -['path_tpc']['grades'][354]['offset'] +['path_tpc']['grades'][353]['res_net_meters'] +['path_tpc']['grades'][354]['offset_meters'] ['path_tpc']['grades'][354]['res_coeff'] -['path_tpc']['grades'][354]['res_net'] -['path_tpc']['grades'][355]['offset'] +['path_tpc']['grades'][354]['res_net_meters'] +['path_tpc']['grades'][355]['offset_meters'] ['path_tpc']['grades'][355]['res_coeff'] -['path_tpc']['grades'][355]['res_net'] -['path_tpc']['grades'][356]['offset'] +['path_tpc']['grades'][355]['res_net_meters'] +['path_tpc']['grades'][356]['offset_meters'] ['path_tpc']['grades'][356]['res_coeff'] -['path_tpc']['grades'][356]['res_net'] -['path_tpc']['grades'][357]['offset'] +['path_tpc']['grades'][356]['res_net_meters'] +['path_tpc']['grades'][357]['offset_meters'] ['path_tpc']['grades'][357]['res_coeff'] -['path_tpc']['grades'][357]['res_net'] -['path_tpc']['grades'][358]['offset'] +['path_tpc']['grades'][357]['res_net_meters'] +['path_tpc']['grades'][358]['offset_meters'] ['path_tpc']['grades'][358]['res_coeff'] -['path_tpc']['grades'][358]['res_net'] -['path_tpc']['grades'][359]['offset'] +['path_tpc']['grades'][358]['res_net_meters'] +['path_tpc']['grades'][359]['offset_meters'] ['path_tpc']['grades'][359]['res_coeff'] -['path_tpc']['grades'][359]['res_net'] -['path_tpc']['grades'][360]['offset'] +['path_tpc']['grades'][359]['res_net_meters'] +['path_tpc']['grades'][360]['offset_meters'] ['path_tpc']['grades'][360]['res_coeff'] -['path_tpc']['grades'][360]['res_net'] -['path_tpc']['grades'][361]['offset'] +['path_tpc']['grades'][360]['res_net_meters'] +['path_tpc']['grades'][361]['offset_meters'] ['path_tpc']['grades'][361]['res_coeff'] -['path_tpc']['grades'][361]['res_net'] -['path_tpc']['grades'][362]['offset'] +['path_tpc']['grades'][361]['res_net_meters'] +['path_tpc']['grades'][362]['offset_meters'] ['path_tpc']['grades'][362]['res_coeff'] -['path_tpc']['grades'][362]['res_net'] -['path_tpc']['grades'][363]['offset'] +['path_tpc']['grades'][362]['res_net_meters'] +['path_tpc']['grades'][363]['offset_meters'] ['path_tpc']['grades'][363]['res_coeff'] -['path_tpc']['grades'][363]['res_net'] -['path_tpc']['grades'][364]['offset'] +['path_tpc']['grades'][363]['res_net_meters'] +['path_tpc']['grades'][364]['offset_meters'] ['path_tpc']['grades'][364]['res_coeff'] -['path_tpc']['grades'][364]['res_net'] -['path_tpc']['grades'][365]['offset'] +['path_tpc']['grades'][364]['res_net_meters'] +['path_tpc']['grades'][365]['offset_meters'] ['path_tpc']['grades'][365]['res_coeff'] -['path_tpc']['grades'][365]['res_net'] -['path_tpc']['grades'][366]['offset'] +['path_tpc']['grades'][365]['res_net_meters'] +['path_tpc']['grades'][366]['offset_meters'] ['path_tpc']['grades'][366]['res_coeff'] -['path_tpc']['grades'][366]['res_net'] -['path_tpc']['grades'][367]['offset'] +['path_tpc']['grades'][366]['res_net_meters'] +['path_tpc']['grades'][367]['offset_meters'] ['path_tpc']['grades'][367]['res_coeff'] -['path_tpc']['grades'][367]['res_net'] -['path_tpc']['grades'][368]['offset'] +['path_tpc']['grades'][367]['res_net_meters'] +['path_tpc']['grades'][368]['offset_meters'] ['path_tpc']['grades'][368]['res_coeff'] -['path_tpc']['grades'][368]['res_net'] -['path_tpc']['grades'][369]['offset'] +['path_tpc']['grades'][368]['res_net_meters'] +['path_tpc']['grades'][369]['offset_meters'] ['path_tpc']['grades'][369]['res_coeff'] -['path_tpc']['grades'][369]['res_net'] -['path_tpc']['grades'][370]['offset'] +['path_tpc']['grades'][369]['res_net_meters'] +['path_tpc']['grades'][370]['offset_meters'] ['path_tpc']['grades'][370]['res_coeff'] -['path_tpc']['grades'][370]['res_net'] -['path_tpc']['grades'][371]['offset'] +['path_tpc']['grades'][370]['res_net_meters'] +['path_tpc']['grades'][371]['offset_meters'] ['path_tpc']['grades'][371]['res_coeff'] -['path_tpc']['grades'][371]['res_net'] -['path_tpc']['grades'][372]['offset'] +['path_tpc']['grades'][371]['res_net_meters'] +['path_tpc']['grades'][372]['offset_meters'] ['path_tpc']['grades'][372]['res_coeff'] -['path_tpc']['grades'][372]['res_net'] -['path_tpc']['grades'][373]['offset'] +['path_tpc']['grades'][372]['res_net_meters'] +['path_tpc']['grades'][373]['offset_meters'] ['path_tpc']['grades'][373]['res_coeff'] -['path_tpc']['grades'][373]['res_net'] -['path_tpc']['grades'][374]['offset'] +['path_tpc']['grades'][373]['res_net_meters'] +['path_tpc']['grades'][374]['offset_meters'] ['path_tpc']['grades'][374]['res_coeff'] -['path_tpc']['grades'][374]['res_net'] -['path_tpc']['grades'][375]['offset'] +['path_tpc']['grades'][374]['res_net_meters'] +['path_tpc']['grades'][375]['offset_meters'] ['path_tpc']['grades'][375]['res_coeff'] -['path_tpc']['grades'][375]['res_net'] -['path_tpc']['grades'][376]['offset'] +['path_tpc']['grades'][375]['res_net_meters'] +['path_tpc']['grades'][376]['offset_meters'] ['path_tpc']['grades'][376]['res_coeff'] -['path_tpc']['grades'][376]['res_net'] -['path_tpc']['grades'][377]['offset'] +['path_tpc']['grades'][376]['res_net_meters'] +['path_tpc']['grades'][377]['offset_meters'] ['path_tpc']['grades'][377]['res_coeff'] -['path_tpc']['grades'][377]['res_net'] -['path_tpc']['grades'][378]['offset'] +['path_tpc']['grades'][377]['res_net_meters'] +['path_tpc']['grades'][378]['offset_meters'] ['path_tpc']['grades'][378]['res_coeff'] -['path_tpc']['grades'][378]['res_net'] -['path_tpc']['grades'][379]['offset'] +['path_tpc']['grades'][378]['res_net_meters'] +['path_tpc']['grades'][379]['offset_meters'] ['path_tpc']['grades'][379]['res_coeff'] -['path_tpc']['grades'][379]['res_net'] -['path_tpc']['grades'][380]['offset'] +['path_tpc']['grades'][379]['res_net_meters'] +['path_tpc']['grades'][380]['offset_meters'] ['path_tpc']['grades'][380]['res_coeff'] -['path_tpc']['grades'][380]['res_net'] -['path_tpc']['grades'][381]['offset'] +['path_tpc']['grades'][380]['res_net_meters'] +['path_tpc']['grades'][381]['offset_meters'] ['path_tpc']['grades'][381]['res_coeff'] -['path_tpc']['grades'][381]['res_net'] -['path_tpc']['grades'][382]['offset'] +['path_tpc']['grades'][381]['res_net_meters'] +['path_tpc']['grades'][382]['offset_meters'] ['path_tpc']['grades'][382]['res_coeff'] -['path_tpc']['grades'][382]['res_net'] -['path_tpc']['grades'][383]['offset'] +['path_tpc']['grades'][382]['res_net_meters'] +['path_tpc']['grades'][383]['offset_meters'] ['path_tpc']['grades'][383]['res_coeff'] -['path_tpc']['grades'][383]['res_net'] -['path_tpc']['grades'][384]['offset'] +['path_tpc']['grades'][383]['res_net_meters'] +['path_tpc']['grades'][384]['offset_meters'] ['path_tpc']['grades'][384]['res_coeff'] -['path_tpc']['grades'][384]['res_net'] -['path_tpc']['grades'][385]['offset'] +['path_tpc']['grades'][384]['res_net_meters'] +['path_tpc']['grades'][385]['offset_meters'] ['path_tpc']['grades'][385]['res_coeff'] -['path_tpc']['grades'][385]['res_net'] -['path_tpc']['grades'][386]['offset'] +['path_tpc']['grades'][385]['res_net_meters'] +['path_tpc']['grades'][386]['offset_meters'] ['path_tpc']['grades'][386]['res_coeff'] -['path_tpc']['grades'][386]['res_net'] -['path_tpc']['grades'][387]['offset'] +['path_tpc']['grades'][386]['res_net_meters'] +['path_tpc']['grades'][387]['offset_meters'] ['path_tpc']['grades'][387]['res_coeff'] -['path_tpc']['grades'][387]['res_net'] -['path_tpc']['grades'][388]['offset'] +['path_tpc']['grades'][387]['res_net_meters'] +['path_tpc']['grades'][388]['offset_meters'] ['path_tpc']['grades'][388]['res_coeff'] -['path_tpc']['grades'][388]['res_net'] -['path_tpc']['grades'][389]['offset'] +['path_tpc']['grades'][388]['res_net_meters'] +['path_tpc']['grades'][389]['offset_meters'] ['path_tpc']['grades'][389]['res_coeff'] -['path_tpc']['grades'][389]['res_net'] -['path_tpc']['grades'][390]['offset'] +['path_tpc']['grades'][389]['res_net_meters'] +['path_tpc']['grades'][390]['offset_meters'] ['path_tpc']['grades'][390]['res_coeff'] -['path_tpc']['grades'][390]['res_net'] -['path_tpc']['grades'][391]['offset'] +['path_tpc']['grades'][390]['res_net_meters'] +['path_tpc']['grades'][391]['offset_meters'] ['path_tpc']['grades'][391]['res_coeff'] -['path_tpc']['grades'][391]['res_net'] -['path_tpc']['grades'][392]['offset'] +['path_tpc']['grades'][391]['res_net_meters'] +['path_tpc']['grades'][392]['offset_meters'] ['path_tpc']['grades'][392]['res_coeff'] -['path_tpc']['grades'][392]['res_net'] -['path_tpc']['grades'][393]['offset'] +['path_tpc']['grades'][392]['res_net_meters'] +['path_tpc']['grades'][393]['offset_meters'] ['path_tpc']['grades'][393]['res_coeff'] -['path_tpc']['grades'][393]['res_net'] -['path_tpc']['grades'][394]['offset'] +['path_tpc']['grades'][393]['res_net_meters'] +['path_tpc']['grades'][394]['offset_meters'] ['path_tpc']['grades'][394]['res_coeff'] -['path_tpc']['grades'][394]['res_net'] -['path_tpc']['grades'][395]['offset'] +['path_tpc']['grades'][394]['res_net_meters'] +['path_tpc']['grades'][395]['offset_meters'] ['path_tpc']['grades'][395]['res_coeff'] -['path_tpc']['grades'][395]['res_net'] -['path_tpc']['grades'][396]['offset'] +['path_tpc']['grades'][395]['res_net_meters'] +['path_tpc']['grades'][396]['offset_meters'] ['path_tpc']['grades'][396]['res_coeff'] -['path_tpc']['grades'][396]['res_net'] -['path_tpc']['grades'][397]['offset'] +['path_tpc']['grades'][396]['res_net_meters'] +['path_tpc']['grades'][397]['offset_meters'] ['path_tpc']['grades'][397]['res_coeff'] -['path_tpc']['grades'][397]['res_net'] -['path_tpc']['grades'][398]['offset'] +['path_tpc']['grades'][397]['res_net_meters'] +['path_tpc']['grades'][398]['offset_meters'] ['path_tpc']['grades'][398]['res_coeff'] -['path_tpc']['grades'][398]['res_net'] -['path_tpc']['grades'][399]['offset'] +['path_tpc']['grades'][398]['res_net_meters'] +['path_tpc']['grades'][399]['offset_meters'] ['path_tpc']['grades'][399]['res_coeff'] -['path_tpc']['grades'][399]['res_net'] -['path_tpc']['grades'][400]['offset'] +['path_tpc']['grades'][399]['res_net_meters'] +['path_tpc']['grades'][400]['offset_meters'] ['path_tpc']['grades'][400]['res_coeff'] -['path_tpc']['grades'][400]['res_net'] -['path_tpc']['grades'][401]['offset'] +['path_tpc']['grades'][400]['res_net_meters'] +['path_tpc']['grades'][401]['offset_meters'] ['path_tpc']['grades'][401]['res_coeff'] -['path_tpc']['grades'][401]['res_net'] -['path_tpc']['grades'][402]['offset'] +['path_tpc']['grades'][401]['res_net_meters'] +['path_tpc']['grades'][402]['offset_meters'] ['path_tpc']['grades'][402]['res_coeff'] -['path_tpc']['grades'][402]['res_net'] -['path_tpc']['grades'][403]['offset'] +['path_tpc']['grades'][402]['res_net_meters'] +['path_tpc']['grades'][403]['offset_meters'] ['path_tpc']['grades'][403]['res_coeff'] -['path_tpc']['grades'][403]['res_net'] -['path_tpc']['grades'][404]['offset'] +['path_tpc']['grades'][403]['res_net_meters'] +['path_tpc']['grades'][404]['offset_meters'] ['path_tpc']['grades'][404]['res_coeff'] -['path_tpc']['grades'][404]['res_net'] -['path_tpc']['grades'][405]['offset'] +['path_tpc']['grades'][404]['res_net_meters'] +['path_tpc']['grades'][405]['offset_meters'] ['path_tpc']['grades'][405]['res_coeff'] -['path_tpc']['grades'][405]['res_net'] -['path_tpc']['grades'][406]['offset'] +['path_tpc']['grades'][405]['res_net_meters'] +['path_tpc']['grades'][406]['offset_meters'] ['path_tpc']['grades'][406]['res_coeff'] -['path_tpc']['grades'][406]['res_net'] -['path_tpc']['grades'][407]['offset'] +['path_tpc']['grades'][406]['res_net_meters'] +['path_tpc']['grades'][407]['offset_meters'] ['path_tpc']['grades'][407]['res_coeff'] -['path_tpc']['grades'][407]['res_net'] -['path_tpc']['grades'][408]['offset'] +['path_tpc']['grades'][407]['res_net_meters'] +['path_tpc']['grades'][408]['offset_meters'] ['path_tpc']['grades'][408]['res_coeff'] -['path_tpc']['grades'][408]['res_net'] -['path_tpc']['grades'][409]['offset'] +['path_tpc']['grades'][408]['res_net_meters'] +['path_tpc']['grades'][409]['offset_meters'] ['path_tpc']['grades'][409]['res_coeff'] -['path_tpc']['grades'][409]['res_net'] -['path_tpc']['grades'][410]['offset'] +['path_tpc']['grades'][409]['res_net_meters'] +['path_tpc']['grades'][410]['offset_meters'] ['path_tpc']['grades'][410]['res_coeff'] -['path_tpc']['grades'][410]['res_net'] -['path_tpc']['grades'][411]['offset'] +['path_tpc']['grades'][410]['res_net_meters'] +['path_tpc']['grades'][411]['offset_meters'] ['path_tpc']['grades'][411]['res_coeff'] -['path_tpc']['grades'][411]['res_net'] -['path_tpc']['grades'][412]['offset'] +['path_tpc']['grades'][411]['res_net_meters'] +['path_tpc']['grades'][412]['offset_meters'] ['path_tpc']['grades'][412]['res_coeff'] -['path_tpc']['grades'][412]['res_net'] -['path_tpc']['grades'][413]['offset'] +['path_tpc']['grades'][412]['res_net_meters'] +['path_tpc']['grades'][413]['offset_meters'] ['path_tpc']['grades'][413]['res_coeff'] -['path_tpc']['grades'][413]['res_net'] -['path_tpc']['grades'][414]['offset'] +['path_tpc']['grades'][413]['res_net_meters'] +['path_tpc']['grades'][414]['offset_meters'] ['path_tpc']['grades'][414]['res_coeff'] -['path_tpc']['grades'][414]['res_net'] -['path_tpc']['grades'][415]['offset'] +['path_tpc']['grades'][414]['res_net_meters'] +['path_tpc']['grades'][415]['offset_meters'] ['path_tpc']['grades'][415]['res_coeff'] -['path_tpc']['grades'][415]['res_net'] -['path_tpc']['grades'][416]['offset'] +['path_tpc']['grades'][415]['res_net_meters'] +['path_tpc']['grades'][416]['offset_meters'] ['path_tpc']['grades'][416]['res_coeff'] -['path_tpc']['grades'][416]['res_net'] -['path_tpc']['grades'][417]['offset'] +['path_tpc']['grades'][416]['res_net_meters'] +['path_tpc']['grades'][417]['offset_meters'] ['path_tpc']['grades'][417]['res_coeff'] -['path_tpc']['grades'][417]['res_net'] -['path_tpc']['grades'][418]['offset'] +['path_tpc']['grades'][417]['res_net_meters'] +['path_tpc']['grades'][418]['offset_meters'] ['path_tpc']['grades'][418]['res_coeff'] -['path_tpc']['grades'][418]['res_net'] -['path_tpc']['grades'][419]['offset'] +['path_tpc']['grades'][418]['res_net_meters'] +['path_tpc']['grades'][419]['offset_meters'] ['path_tpc']['grades'][419]['res_coeff'] -['path_tpc']['grades'][419]['res_net'] -['path_tpc']['grades'][420]['offset'] +['path_tpc']['grades'][419]['res_net_meters'] +['path_tpc']['grades'][420]['offset_meters'] ['path_tpc']['grades'][420]['res_coeff'] -['path_tpc']['grades'][420]['res_net'] -['path_tpc']['grades'][421]['offset'] +['path_tpc']['grades'][420]['res_net_meters'] +['path_tpc']['grades'][421]['offset_meters'] ['path_tpc']['grades'][421]['res_coeff'] -['path_tpc']['grades'][421]['res_net'] -['path_tpc']['grades'][422]['offset'] +['path_tpc']['grades'][421]['res_net_meters'] +['path_tpc']['grades'][422]['offset_meters'] ['path_tpc']['grades'][422]['res_coeff'] -['path_tpc']['grades'][422]['res_net'] -['path_tpc']['grades'][423]['offset'] +['path_tpc']['grades'][422]['res_net_meters'] +['path_tpc']['grades'][423]['offset_meters'] ['path_tpc']['grades'][423]['res_coeff'] -['path_tpc']['grades'][423]['res_net'] -['path_tpc']['grades'][424]['offset'] +['path_tpc']['grades'][423]['res_net_meters'] +['path_tpc']['grades'][424]['offset_meters'] ['path_tpc']['grades'][424]['res_coeff'] -['path_tpc']['grades'][424]['res_net'] -['path_tpc']['grades'][425]['offset'] +['path_tpc']['grades'][424]['res_net_meters'] +['path_tpc']['grades'][425]['offset_meters'] ['path_tpc']['grades'][425]['res_coeff'] -['path_tpc']['grades'][425]['res_net'] -['path_tpc']['grades'][426]['offset'] +['path_tpc']['grades'][425]['res_net_meters'] +['path_tpc']['grades'][426]['offset_meters'] ['path_tpc']['grades'][426]['res_coeff'] -['path_tpc']['grades'][426]['res_net'] -['path_tpc']['grades'][427]['offset'] +['path_tpc']['grades'][426]['res_net_meters'] +['path_tpc']['grades'][427]['offset_meters'] ['path_tpc']['grades'][427]['res_coeff'] -['path_tpc']['grades'][427]['res_net'] -['path_tpc']['grades'][428]['offset'] +['path_tpc']['grades'][427]['res_net_meters'] +['path_tpc']['grades'][428]['offset_meters'] ['path_tpc']['grades'][428]['res_coeff'] -['path_tpc']['grades'][428]['res_net'] -['path_tpc']['grades'][429]['offset'] +['path_tpc']['grades'][428]['res_net_meters'] +['path_tpc']['grades'][429]['offset_meters'] ['path_tpc']['grades'][429]['res_coeff'] -['path_tpc']['grades'][429]['res_net'] -['path_tpc']['grades'][430]['offset'] +['path_tpc']['grades'][429]['res_net_meters'] +['path_tpc']['grades'][430]['offset_meters'] ['path_tpc']['grades'][430]['res_coeff'] -['path_tpc']['grades'][430]['res_net'] -['path_tpc']['grades'][431]['offset'] +['path_tpc']['grades'][430]['res_net_meters'] +['path_tpc']['grades'][431]['offset_meters'] ['path_tpc']['grades'][431]['res_coeff'] -['path_tpc']['grades'][431]['res_net'] -['path_tpc']['grades'][432]['offset'] +['path_tpc']['grades'][431]['res_net_meters'] +['path_tpc']['grades'][432]['offset_meters'] ['path_tpc']['grades'][432]['res_coeff'] -['path_tpc']['grades'][432]['res_net'] -['path_tpc']['grades'][433]['offset'] +['path_tpc']['grades'][432]['res_net_meters'] +['path_tpc']['grades'][433]['offset_meters'] ['path_tpc']['grades'][433]['res_coeff'] -['path_tpc']['grades'][433]['res_net'] -['path_tpc']['grades'][434]['offset'] +['path_tpc']['grades'][433]['res_net_meters'] +['path_tpc']['grades'][434]['offset_meters'] ['path_tpc']['grades'][434]['res_coeff'] -['path_tpc']['grades'][434]['res_net'] -['path_tpc']['grades'][435]['offset'] +['path_tpc']['grades'][434]['res_net_meters'] +['path_tpc']['grades'][435]['offset_meters'] ['path_tpc']['grades'][435]['res_coeff'] -['path_tpc']['grades'][435]['res_net'] -['path_tpc']['grades'][436]['offset'] +['path_tpc']['grades'][435]['res_net_meters'] +['path_tpc']['grades'][436]['offset_meters'] ['path_tpc']['grades'][436]['res_coeff'] -['path_tpc']['grades'][436]['res_net'] -['path_tpc']['grades'][437]['offset'] +['path_tpc']['grades'][436]['res_net_meters'] +['path_tpc']['grades'][437]['offset_meters'] ['path_tpc']['grades'][437]['res_coeff'] -['path_tpc']['grades'][437]['res_net'] -['path_tpc']['grades'][438]['offset'] +['path_tpc']['grades'][437]['res_net_meters'] +['path_tpc']['grades'][438]['offset_meters'] ['path_tpc']['grades'][438]['res_coeff'] -['path_tpc']['grades'][438]['res_net'] -['path_tpc']['grades'][439]['offset'] +['path_tpc']['grades'][438]['res_net_meters'] +['path_tpc']['grades'][439]['offset_meters'] ['path_tpc']['grades'][439]['res_coeff'] -['path_tpc']['grades'][439]['res_net'] -['path_tpc']['grades'][440]['offset'] +['path_tpc']['grades'][439]['res_net_meters'] +['path_tpc']['grades'][440]['offset_meters'] ['path_tpc']['grades'][440]['res_coeff'] -['path_tpc']['grades'][440]['res_net'] -['path_tpc']['grades'][441]['offset'] +['path_tpc']['grades'][440]['res_net_meters'] +['path_tpc']['grades'][441]['offset_meters'] ['path_tpc']['grades'][441]['res_coeff'] -['path_tpc']['grades'][441]['res_net'] -['path_tpc']['grades'][442]['offset'] +['path_tpc']['grades'][441]['res_net_meters'] +['path_tpc']['grades'][442]['offset_meters'] ['path_tpc']['grades'][442]['res_coeff'] -['path_tpc']['grades'][442]['res_net'] -['path_tpc']['grades'][443]['offset'] +['path_tpc']['grades'][442]['res_net_meters'] +['path_tpc']['grades'][443]['offset_meters'] ['path_tpc']['grades'][443]['res_coeff'] -['path_tpc']['grades'][443]['res_net'] -['path_tpc']['grades'][444]['offset'] +['path_tpc']['grades'][443]['res_net_meters'] +['path_tpc']['grades'][444]['offset_meters'] ['path_tpc']['grades'][444]['res_coeff'] -['path_tpc']['grades'][444]['res_net'] -['path_tpc']['grades'][445]['offset'] +['path_tpc']['grades'][444]['res_net_meters'] +['path_tpc']['grades'][445]['offset_meters'] ['path_tpc']['grades'][445]['res_coeff'] -['path_tpc']['grades'][445]['res_net'] -['path_tpc']['grades'][446]['offset'] +['path_tpc']['grades'][445]['res_net_meters'] +['path_tpc']['grades'][446]['offset_meters'] ['path_tpc']['grades'][446]['res_coeff'] -['path_tpc']['grades'][446]['res_net'] -['path_tpc']['grades'][447]['offset'] +['path_tpc']['grades'][446]['res_net_meters'] +['path_tpc']['grades'][447]['offset_meters'] ['path_tpc']['grades'][447]['res_coeff'] -['path_tpc']['grades'][447]['res_net'] -['path_tpc']['grades'][448]['offset'] +['path_tpc']['grades'][447]['res_net_meters'] +['path_tpc']['grades'][448]['offset_meters'] ['path_tpc']['grades'][448]['res_coeff'] -['path_tpc']['grades'][448]['res_net'] -['path_tpc']['grades'][449]['offset'] +['path_tpc']['grades'][448]['res_net_meters'] +['path_tpc']['grades'][449]['offset_meters'] ['path_tpc']['grades'][449]['res_coeff'] -['path_tpc']['grades'][449]['res_net'] -['path_tpc']['grades'][450]['offset'] +['path_tpc']['grades'][449]['res_net_meters'] +['path_tpc']['grades'][450]['offset_meters'] ['path_tpc']['grades'][450]['res_coeff'] -['path_tpc']['grades'][450]['res_net'] -['path_tpc']['grades'][451]['offset'] +['path_tpc']['grades'][450]['res_net_meters'] +['path_tpc']['grades'][451]['offset_meters'] ['path_tpc']['grades'][451]['res_coeff'] -['path_tpc']['grades'][451]['res_net'] -['path_tpc']['grades'][452]['offset'] +['path_tpc']['grades'][451]['res_net_meters'] +['path_tpc']['grades'][452]['offset_meters'] ['path_tpc']['grades'][452]['res_coeff'] -['path_tpc']['grades'][452]['res_net'] -['path_tpc']['grades'][453]['offset'] +['path_tpc']['grades'][452]['res_net_meters'] +['path_tpc']['grades'][453]['offset_meters'] ['path_tpc']['grades'][453]['res_coeff'] -['path_tpc']['grades'][453]['res_net'] -['path_tpc']['grades'][454]['offset'] +['path_tpc']['grades'][453]['res_net_meters'] +['path_tpc']['grades'][454]['offset_meters'] ['path_tpc']['grades'][454]['res_coeff'] -['path_tpc']['grades'][454]['res_net'] -['path_tpc']['grades'][455]['offset'] +['path_tpc']['grades'][454]['res_net_meters'] +['path_tpc']['grades'][455]['offset_meters'] ['path_tpc']['grades'][455]['res_coeff'] -['path_tpc']['grades'][455]['res_net'] -['path_tpc']['grades'][456]['offset'] +['path_tpc']['grades'][455]['res_net_meters'] +['path_tpc']['grades'][456]['offset_meters'] ['path_tpc']['grades'][456]['res_coeff'] -['path_tpc']['grades'][456]['res_net'] -['path_tpc']['grades'][457]['offset'] +['path_tpc']['grades'][456]['res_net_meters'] +['path_tpc']['grades'][457]['offset_meters'] ['path_tpc']['grades'][457]['res_coeff'] -['path_tpc']['grades'][457]['res_net'] -['path_tpc']['grades'][458]['offset'] +['path_tpc']['grades'][457]['res_net_meters'] +['path_tpc']['grades'][458]['offset_meters'] ['path_tpc']['grades'][458]['res_coeff'] -['path_tpc']['grades'][458]['res_net'] -['path_tpc']['grades'][459]['offset'] +['path_tpc']['grades'][458]['res_net_meters'] +['path_tpc']['grades'][459]['offset_meters'] ['path_tpc']['grades'][459]['res_coeff'] -['path_tpc']['grades'][459]['res_net'] -['path_tpc']['grades'][460]['offset'] +['path_tpc']['grades'][459]['res_net_meters'] +['path_tpc']['grades'][460]['offset_meters'] ['path_tpc']['grades'][460]['res_coeff'] -['path_tpc']['grades'][460]['res_net'] -['path_tpc']['grades'][461]['offset'] +['path_tpc']['grades'][460]['res_net_meters'] +['path_tpc']['grades'][461]['offset_meters'] ['path_tpc']['grades'][461]['res_coeff'] -['path_tpc']['grades'][461]['res_net'] -['path_tpc']['grades'][462]['offset'] +['path_tpc']['grades'][461]['res_net_meters'] +['path_tpc']['grades'][462]['offset_meters'] ['path_tpc']['grades'][462]['res_coeff'] -['path_tpc']['grades'][462]['res_net'] -['path_tpc']['grades'][463]['offset'] +['path_tpc']['grades'][462]['res_net_meters'] +['path_tpc']['grades'][463]['offset_meters'] ['path_tpc']['grades'][463]['res_coeff'] -['path_tpc']['grades'][463]['res_net'] -['path_tpc']['grades'][464]['offset'] +['path_tpc']['grades'][463]['res_net_meters'] +['path_tpc']['grades'][464]['offset_meters'] ['path_tpc']['grades'][464]['res_coeff'] -['path_tpc']['grades'][464]['res_net'] -['path_tpc']['grades'][465]['offset'] +['path_tpc']['grades'][464]['res_net_meters'] +['path_tpc']['grades'][465]['offset_meters'] ['path_tpc']['grades'][465]['res_coeff'] -['path_tpc']['grades'][465]['res_net'] -['path_tpc']['grades'][466]['offset'] +['path_tpc']['grades'][465]['res_net_meters'] +['path_tpc']['grades'][466]['offset_meters'] ['path_tpc']['grades'][466]['res_coeff'] -['path_tpc']['grades'][466]['res_net'] -['path_tpc']['grades'][467]['offset'] +['path_tpc']['grades'][466]['res_net_meters'] +['path_tpc']['grades'][467]['offset_meters'] ['path_tpc']['grades'][467]['res_coeff'] -['path_tpc']['grades'][467]['res_net'] -['path_tpc']['grades'][468]['offset'] +['path_tpc']['grades'][467]['res_net_meters'] +['path_tpc']['grades'][468]['offset_meters'] ['path_tpc']['grades'][468]['res_coeff'] -['path_tpc']['grades'][468]['res_net'] -['path_tpc']['grades'][469]['offset'] +['path_tpc']['grades'][468]['res_net_meters'] +['path_tpc']['grades'][469]['offset_meters'] ['path_tpc']['grades'][469]['res_coeff'] -['path_tpc']['grades'][469]['res_net'] -['path_tpc']['grades'][470]['offset'] +['path_tpc']['grades'][469]['res_net_meters'] +['path_tpc']['grades'][470]['offset_meters'] ['path_tpc']['grades'][470]['res_coeff'] -['path_tpc']['grades'][470]['res_net'] -['path_tpc']['grades'][471]['offset'] +['path_tpc']['grades'][470]['res_net_meters'] +['path_tpc']['grades'][471]['offset_meters'] ['path_tpc']['grades'][471]['res_coeff'] -['path_tpc']['grades'][471]['res_net'] -['path_tpc']['grades'][472]['offset'] +['path_tpc']['grades'][471]['res_net_meters'] +['path_tpc']['grades'][472]['offset_meters'] ['path_tpc']['grades'][472]['res_coeff'] -['path_tpc']['grades'][472]['res_net'] -['path_tpc']['grades'][473]['offset'] +['path_tpc']['grades'][472]['res_net_meters'] +['path_tpc']['grades'][473]['offset_meters'] ['path_tpc']['grades'][473]['res_coeff'] -['path_tpc']['grades'][473]['res_net'] -['path_tpc']['grades'][474]['offset'] +['path_tpc']['grades'][473]['res_net_meters'] +['path_tpc']['grades'][474]['offset_meters'] ['path_tpc']['grades'][474]['res_coeff'] -['path_tpc']['grades'][474]['res_net'] -['path_tpc']['grades'][475]['offset'] +['path_tpc']['grades'][474]['res_net_meters'] +['path_tpc']['grades'][475]['offset_meters'] ['path_tpc']['grades'][475]['res_coeff'] -['path_tpc']['grades'][475]['res_net'] -['path_tpc']['grades'][476]['offset'] +['path_tpc']['grades'][475]['res_net_meters'] +['path_tpc']['grades'][476]['offset_meters'] ['path_tpc']['grades'][476]['res_coeff'] -['path_tpc']['grades'][476]['res_net'] -['path_tpc']['grades'][477]['offset'] +['path_tpc']['grades'][476]['res_net_meters'] +['path_tpc']['grades'][477]['offset_meters'] ['path_tpc']['grades'][477]['res_coeff'] -['path_tpc']['grades'][477]['res_net'] -['path_tpc']['grades'][478]['offset'] +['path_tpc']['grades'][477]['res_net_meters'] +['path_tpc']['grades'][478]['offset_meters'] ['path_tpc']['grades'][478]['res_coeff'] -['path_tpc']['grades'][478]['res_net'] -['path_tpc']['grades'][479]['offset'] +['path_tpc']['grades'][478]['res_net_meters'] +['path_tpc']['grades'][479]['offset_meters'] ['path_tpc']['grades'][479]['res_coeff'] -['path_tpc']['grades'][479]['res_net'] -['path_tpc']['grades'][480]['offset'] +['path_tpc']['grades'][479]['res_net_meters'] +['path_tpc']['grades'][480]['offset_meters'] ['path_tpc']['grades'][480]['res_coeff'] -['path_tpc']['grades'][480]['res_net'] -['path_tpc']['grades'][481]['offset'] +['path_tpc']['grades'][480]['res_net_meters'] +['path_tpc']['grades'][481]['offset_meters'] ['path_tpc']['grades'][481]['res_coeff'] -['path_tpc']['grades'][481]['res_net'] -['path_tpc']['grades'][482]['offset'] +['path_tpc']['grades'][481]['res_net_meters'] +['path_tpc']['grades'][482]['offset_meters'] ['path_tpc']['grades'][482]['res_coeff'] -['path_tpc']['grades'][482]['res_net'] -['path_tpc']['grades'][483]['offset'] +['path_tpc']['grades'][482]['res_net_meters'] +['path_tpc']['grades'][483]['offset_meters'] ['path_tpc']['grades'][483]['res_coeff'] -['path_tpc']['grades'][483]['res_net'] -['path_tpc']['grades'][484]['offset'] +['path_tpc']['grades'][483]['res_net_meters'] +['path_tpc']['grades'][484]['offset_meters'] ['path_tpc']['grades'][484]['res_coeff'] -['path_tpc']['grades'][484]['res_net'] -['path_tpc']['grades'][485]['offset'] +['path_tpc']['grades'][484]['res_net_meters'] +['path_tpc']['grades'][485]['offset_meters'] ['path_tpc']['grades'][485]['res_coeff'] -['path_tpc']['grades'][485]['res_net'] -['path_tpc']['grades'][486]['offset'] +['path_tpc']['grades'][485]['res_net_meters'] +['path_tpc']['grades'][486]['offset_meters'] ['path_tpc']['grades'][486]['res_coeff'] -['path_tpc']['grades'][486]['res_net'] -['path_tpc']['grades'][487]['offset'] +['path_tpc']['grades'][486]['res_net_meters'] +['path_tpc']['grades'][487]['offset_meters'] ['path_tpc']['grades'][487]['res_coeff'] -['path_tpc']['grades'][487]['res_net'] -['path_tpc']['grades'][488]['offset'] +['path_tpc']['grades'][487]['res_net_meters'] +['path_tpc']['grades'][488]['offset_meters'] ['path_tpc']['grades'][488]['res_coeff'] -['path_tpc']['grades'][488]['res_net'] -['path_tpc']['grades'][489]['offset'] +['path_tpc']['grades'][488]['res_net_meters'] +['path_tpc']['grades'][489]['offset_meters'] ['path_tpc']['grades'][489]['res_coeff'] -['path_tpc']['grades'][489]['res_net'] -['path_tpc']['grades'][490]['offset'] +['path_tpc']['grades'][489]['res_net_meters'] +['path_tpc']['grades'][490]['offset_meters'] ['path_tpc']['grades'][490]['res_coeff'] -['path_tpc']['grades'][490]['res_net'] -['path_tpc']['grades'][491]['offset'] +['path_tpc']['grades'][490]['res_net_meters'] +['path_tpc']['grades'][491]['offset_meters'] ['path_tpc']['grades'][491]['res_coeff'] -['path_tpc']['grades'][491]['res_net'] -['path_tpc']['grades'][492]['offset'] +['path_tpc']['grades'][491]['res_net_meters'] +['path_tpc']['grades'][492]['offset_meters'] ['path_tpc']['grades'][492]['res_coeff'] -['path_tpc']['grades'][492]['res_net'] -['path_tpc']['grades'][493]['offset'] +['path_tpc']['grades'][492]['res_net_meters'] +['path_tpc']['grades'][493]['offset_meters'] ['path_tpc']['grades'][493]['res_coeff'] -['path_tpc']['grades'][493]['res_net'] -['path_tpc']['grades'][494]['offset'] +['path_tpc']['grades'][493]['res_net_meters'] +['path_tpc']['grades'][494]['offset_meters'] ['path_tpc']['grades'][494]['res_coeff'] -['path_tpc']['grades'][494]['res_net'] -['path_tpc']['grades'][495]['offset'] +['path_tpc']['grades'][494]['res_net_meters'] +['path_tpc']['grades'][495]['offset_meters'] ['path_tpc']['grades'][495]['res_coeff'] -['path_tpc']['grades'][495]['res_net'] -['path_tpc']['grades'][496]['offset'] +['path_tpc']['grades'][495]['res_net_meters'] +['path_tpc']['grades'][496]['offset_meters'] ['path_tpc']['grades'][496]['res_coeff'] -['path_tpc']['grades'][496]['res_net'] -['path_tpc']['grades'][497]['offset'] +['path_tpc']['grades'][496]['res_net_meters'] +['path_tpc']['grades'][497]['offset_meters'] ['path_tpc']['grades'][497]['res_coeff'] -['path_tpc']['grades'][497]['res_net'] -['path_tpc']['grades'][498]['offset'] +['path_tpc']['grades'][497]['res_net_meters'] +['path_tpc']['grades'][498]['offset_meters'] ['path_tpc']['grades'][498]['res_coeff'] -['path_tpc']['grades'][498]['res_net'] -['path_tpc']['grades'][499]['offset'] +['path_tpc']['grades'][498]['res_net_meters'] +['path_tpc']['grades'][499]['offset_meters'] ['path_tpc']['grades'][499]['res_coeff'] -['path_tpc']['grades'][499]['res_net'] -['path_tpc']['grades'][500]['offset'] +['path_tpc']['grades'][499]['res_net_meters'] +['path_tpc']['grades'][500]['offset_meters'] ['path_tpc']['grades'][500]['res_coeff'] -['path_tpc']['grades'][500]['res_net'] -['path_tpc']['grades'][501]['offset'] +['path_tpc']['grades'][500]['res_net_meters'] +['path_tpc']['grades'][501]['offset_meters'] ['path_tpc']['grades'][501]['res_coeff'] -['path_tpc']['grades'][501]['res_net'] -['path_tpc']['grades'][502]['offset'] +['path_tpc']['grades'][501]['res_net_meters'] +['path_tpc']['grades'][502]['offset_meters'] ['path_tpc']['grades'][502]['res_coeff'] -['path_tpc']['grades'][502]['res_net'] -['path_tpc']['grades'][503]['offset'] +['path_tpc']['grades'][502]['res_net_meters'] +['path_tpc']['grades'][503]['offset_meters'] ['path_tpc']['grades'][503]['res_coeff'] -['path_tpc']['grades'][503]['res_net'] -['path_tpc']['grades'][504]['offset'] +['path_tpc']['grades'][503]['res_net_meters'] +['path_tpc']['grades'][504]['offset_meters'] ['path_tpc']['grades'][504]['res_coeff'] -['path_tpc']['grades'][504]['res_net'] -['path_tpc']['grades'][505]['offset'] +['path_tpc']['grades'][504]['res_net_meters'] +['path_tpc']['grades'][505]['offset_meters'] ['path_tpc']['grades'][505]['res_coeff'] -['path_tpc']['grades'][505]['res_net'] -['path_tpc']['grades'][506]['offset'] +['path_tpc']['grades'][505]['res_net_meters'] +['path_tpc']['grades'][506]['offset_meters'] ['path_tpc']['grades'][506]['res_coeff'] -['path_tpc']['grades'][506]['res_net'] -['path_tpc']['grades'][507]['offset'] +['path_tpc']['grades'][506]['res_net_meters'] +['path_tpc']['grades'][507]['offset_meters'] ['path_tpc']['grades'][507]['res_coeff'] -['path_tpc']['grades'][507]['res_net'] -['path_tpc']['grades'][508]['offset'] +['path_tpc']['grades'][507]['res_net_meters'] +['path_tpc']['grades'][508]['offset_meters'] ['path_tpc']['grades'][508]['res_coeff'] -['path_tpc']['grades'][508]['res_net'] -['path_tpc']['grades'][509]['offset'] +['path_tpc']['grades'][508]['res_net_meters'] +['path_tpc']['grades'][509]['offset_meters'] ['path_tpc']['grades'][509]['res_coeff'] -['path_tpc']['grades'][509]['res_net'] -['path_tpc']['grades'][510]['offset'] +['path_tpc']['grades'][509]['res_net_meters'] +['path_tpc']['grades'][510]['offset_meters'] ['path_tpc']['grades'][510]['res_coeff'] -['path_tpc']['grades'][510]['res_net'] -['path_tpc']['grades'][511]['offset'] +['path_tpc']['grades'][510]['res_net_meters'] +['path_tpc']['grades'][511]['offset_meters'] ['path_tpc']['grades'][511]['res_coeff'] -['path_tpc']['grades'][511]['res_net'] -['path_tpc']['grades'][512]['offset'] +['path_tpc']['grades'][511]['res_net_meters'] +['path_tpc']['grades'][512]['offset_meters'] ['path_tpc']['grades'][512]['res_coeff'] -['path_tpc']['grades'][512]['res_net'] -['path_tpc']['grades'][513]['offset'] +['path_tpc']['grades'][512]['res_net_meters'] +['path_tpc']['grades'][513]['offset_meters'] ['path_tpc']['grades'][513]['res_coeff'] -['path_tpc']['grades'][513]['res_net'] -['path_tpc']['grades'][514]['offset'] +['path_tpc']['grades'][513]['res_net_meters'] +['path_tpc']['grades'][514]['offset_meters'] ['path_tpc']['grades'][514]['res_coeff'] -['path_tpc']['grades'][514]['res_net'] -['path_tpc']['grades'][515]['offset'] +['path_tpc']['grades'][514]['res_net_meters'] +['path_tpc']['grades'][515]['offset_meters'] ['path_tpc']['grades'][515]['res_coeff'] -['path_tpc']['grades'][515]['res_net'] -['path_tpc']['grades'][516]['offset'] +['path_tpc']['grades'][515]['res_net_meters'] +['path_tpc']['grades'][516]['offset_meters'] ['path_tpc']['grades'][516]['res_coeff'] -['path_tpc']['grades'][516]['res_net'] -['path_tpc']['grades'][517]['offset'] +['path_tpc']['grades'][516]['res_net_meters'] +['path_tpc']['grades'][517]['offset_meters'] ['path_tpc']['grades'][517]['res_coeff'] -['path_tpc']['grades'][517]['res_net'] -['path_tpc']['grades'][518]['offset'] +['path_tpc']['grades'][517]['res_net_meters'] +['path_tpc']['grades'][518]['offset_meters'] ['path_tpc']['grades'][518]['res_coeff'] -['path_tpc']['grades'][518]['res_net'] -['path_tpc']['grades'][519]['offset'] +['path_tpc']['grades'][518]['res_net_meters'] +['path_tpc']['grades'][519]['offset_meters'] ['path_tpc']['grades'][519]['res_coeff'] -['path_tpc']['grades'][519]['res_net'] -['path_tpc']['grades'][520]['offset'] +['path_tpc']['grades'][519]['res_net_meters'] +['path_tpc']['grades'][520]['offset_meters'] ['path_tpc']['grades'][520]['res_coeff'] -['path_tpc']['grades'][520]['res_net'] -['path_tpc']['grades'][521]['offset'] +['path_tpc']['grades'][520]['res_net_meters'] +['path_tpc']['grades'][521]['offset_meters'] ['path_tpc']['grades'][521]['res_coeff'] -['path_tpc']['grades'][521]['res_net'] -['path_tpc']['grades'][522]['offset'] +['path_tpc']['grades'][521]['res_net_meters'] +['path_tpc']['grades'][522]['offset_meters'] ['path_tpc']['grades'][522]['res_coeff'] -['path_tpc']['grades'][522]['res_net'] -['path_tpc']['grades'][523]['offset'] +['path_tpc']['grades'][522]['res_net_meters'] +['path_tpc']['grades'][523]['offset_meters'] ['path_tpc']['grades'][523]['res_coeff'] -['path_tpc']['grades'][523]['res_net'] -['path_tpc']['grades'][524]['offset'] +['path_tpc']['grades'][523]['res_net_meters'] +['path_tpc']['grades'][524]['offset_meters'] ['path_tpc']['grades'][524]['res_coeff'] -['path_tpc']['grades'][524]['res_net'] -['path_tpc']['grades'][525]['offset'] +['path_tpc']['grades'][524]['res_net_meters'] +['path_tpc']['grades'][525]['offset_meters'] ['path_tpc']['grades'][525]['res_coeff'] -['path_tpc']['grades'][525]['res_net'] -['path_tpc']['grades'][526]['offset'] +['path_tpc']['grades'][525]['res_net_meters'] +['path_tpc']['grades'][526]['offset_meters'] ['path_tpc']['grades'][526]['res_coeff'] -['path_tpc']['grades'][526]['res_net'] -['path_tpc']['grades'][527]['offset'] +['path_tpc']['grades'][526]['res_net_meters'] +['path_tpc']['grades'][527]['offset_meters'] ['path_tpc']['grades'][527]['res_coeff'] -['path_tpc']['grades'][527]['res_net'] -['path_tpc']['grades'][528]['offset'] +['path_tpc']['grades'][527]['res_net_meters'] +['path_tpc']['grades'][528]['offset_meters'] ['path_tpc']['grades'][528]['res_coeff'] -['path_tpc']['grades'][528]['res_net'] -['path_tpc']['grades'][529]['offset'] +['path_tpc']['grades'][528]['res_net_meters'] +['path_tpc']['grades'][529]['offset_meters'] ['path_tpc']['grades'][529]['res_coeff'] -['path_tpc']['grades'][529]['res_net'] -['path_tpc']['grades'][530]['offset'] +['path_tpc']['grades'][529]['res_net_meters'] +['path_tpc']['grades'][530]['offset_meters'] ['path_tpc']['grades'][530]['res_coeff'] -['path_tpc']['grades'][530]['res_net'] -['path_tpc']['grades'][531]['offset'] +['path_tpc']['grades'][530]['res_net_meters'] +['path_tpc']['grades'][531]['offset_meters'] ['path_tpc']['grades'][531]['res_coeff'] -['path_tpc']['grades'][531]['res_net'] -['path_tpc']['grades'][532]['offset'] +['path_tpc']['grades'][531]['res_net_meters'] +['path_tpc']['grades'][532]['offset_meters'] ['path_tpc']['grades'][532]['res_coeff'] -['path_tpc']['grades'][532]['res_net'] -['path_tpc']['grades'][533]['offset'] +['path_tpc']['grades'][532]['res_net_meters'] +['path_tpc']['grades'][533]['offset_meters'] ['path_tpc']['grades'][533]['res_coeff'] -['path_tpc']['grades'][533]['res_net'] -['path_tpc']['grades'][534]['offset'] +['path_tpc']['grades'][533]['res_net_meters'] +['path_tpc']['grades'][534]['offset_meters'] ['path_tpc']['grades'][534]['res_coeff'] -['path_tpc']['grades'][534]['res_net'] -['path_tpc']['grades'][535]['offset'] +['path_tpc']['grades'][534]['res_net_meters'] +['path_tpc']['grades'][535]['offset_meters'] ['path_tpc']['grades'][535]['res_coeff'] -['path_tpc']['grades'][535]['res_net'] -['path_tpc']['grades'][536]['offset'] +['path_tpc']['grades'][535]['res_net_meters'] +['path_tpc']['grades'][536]['offset_meters'] ['path_tpc']['grades'][536]['res_coeff'] -['path_tpc']['grades'][536]['res_net'] -['path_tpc']['grades'][537]['offset'] +['path_tpc']['grades'][536]['res_net_meters'] +['path_tpc']['grades'][537]['offset_meters'] ['path_tpc']['grades'][537]['res_coeff'] -['path_tpc']['grades'][537]['res_net'] -['path_tpc']['grades'][538]['offset'] +['path_tpc']['grades'][537]['res_net_meters'] +['path_tpc']['grades'][538]['offset_meters'] ['path_tpc']['grades'][538]['res_coeff'] -['path_tpc']['grades'][538]['res_net'] -['path_tpc']['grades'][539]['offset'] +['path_tpc']['grades'][538]['res_net_meters'] +['path_tpc']['grades'][539]['offset_meters'] ['path_tpc']['grades'][539]['res_coeff'] -['path_tpc']['grades'][539]['res_net'] -['path_tpc']['grades'][540]['offset'] +['path_tpc']['grades'][539]['res_net_meters'] +['path_tpc']['grades'][540]['offset_meters'] ['path_tpc']['grades'][540]['res_coeff'] -['path_tpc']['grades'][540]['res_net'] -['path_tpc']['grades'][541]['offset'] +['path_tpc']['grades'][540]['res_net_meters'] +['path_tpc']['grades'][541]['offset_meters'] ['path_tpc']['grades'][541]['res_coeff'] -['path_tpc']['grades'][541]['res_net'] -['path_tpc']['grades'][542]['offset'] +['path_tpc']['grades'][541]['res_net_meters'] +['path_tpc']['grades'][542]['offset_meters'] ['path_tpc']['grades'][542]['res_coeff'] -['path_tpc']['grades'][542]['res_net'] -['path_tpc']['grades'][543]['offset'] +['path_tpc']['grades'][542]['res_net_meters'] +['path_tpc']['grades'][543]['offset_meters'] ['path_tpc']['grades'][543]['res_coeff'] -['path_tpc']['grades'][543]['res_net'] -['path_tpc']['grades'][544]['offset'] +['path_tpc']['grades'][543]['res_net_meters'] +['path_tpc']['grades'][544]['offset_meters'] ['path_tpc']['grades'][544]['res_coeff'] -['path_tpc']['grades'][544]['res_net'] -['path_tpc']['grades'][545]['offset'] +['path_tpc']['grades'][544]['res_net_meters'] +['path_tpc']['grades'][545]['offset_meters'] ['path_tpc']['grades'][545]['res_coeff'] -['path_tpc']['grades'][545]['res_net'] -['path_tpc']['grades'][546]['offset'] +['path_tpc']['grades'][545]['res_net_meters'] +['path_tpc']['grades'][546]['offset_meters'] ['path_tpc']['grades'][546]['res_coeff'] -['path_tpc']['grades'][546]['res_net'] -['path_tpc']['grades'][547]['offset'] +['path_tpc']['grades'][546]['res_net_meters'] +['path_tpc']['grades'][547]['offset_meters'] ['path_tpc']['grades'][547]['res_coeff'] -['path_tpc']['grades'][547]['res_net'] -['path_tpc']['grades'][548]['offset'] +['path_tpc']['grades'][547]['res_net_meters'] +['path_tpc']['grades'][548]['offset_meters'] ['path_tpc']['grades'][548]['res_coeff'] -['path_tpc']['grades'][548]['res_net'] -['path_tpc']['grades'][549]['offset'] +['path_tpc']['grades'][548]['res_net_meters'] +['path_tpc']['grades'][549]['offset_meters'] ['path_tpc']['grades'][549]['res_coeff'] -['path_tpc']['grades'][549]['res_net'] -['path_tpc']['grades'][550]['offset'] +['path_tpc']['grades'][549]['res_net_meters'] +['path_tpc']['grades'][550]['offset_meters'] ['path_tpc']['grades'][550]['res_coeff'] -['path_tpc']['grades'][550]['res_net'] -['path_tpc']['grades'][551]['offset'] +['path_tpc']['grades'][550]['res_net_meters'] +['path_tpc']['grades'][551]['offset_meters'] ['path_tpc']['grades'][551]['res_coeff'] -['path_tpc']['grades'][551]['res_net'] -['path_tpc']['grades'][552]['offset'] +['path_tpc']['grades'][551]['res_net_meters'] +['path_tpc']['grades'][552]['offset_meters'] ['path_tpc']['grades'][552]['res_coeff'] -['path_tpc']['grades'][552]['res_net'] -['path_tpc']['grades'][553]['offset'] +['path_tpc']['grades'][552]['res_net_meters'] +['path_tpc']['grades'][553]['offset_meters'] ['path_tpc']['grades'][553]['res_coeff'] -['path_tpc']['grades'][553]['res_net'] -['path_tpc']['grades'][554]['offset'] +['path_tpc']['grades'][553]['res_net_meters'] +['path_tpc']['grades'][554]['offset_meters'] ['path_tpc']['grades'][554]['res_coeff'] -['path_tpc']['grades'][554]['res_net'] -['path_tpc']['grades'][555]['offset'] +['path_tpc']['grades'][554]['res_net_meters'] +['path_tpc']['grades'][555]['offset_meters'] ['path_tpc']['grades'][555]['res_coeff'] -['path_tpc']['grades'][555]['res_net'] -['path_tpc']['grades'][556]['offset'] +['path_tpc']['grades'][555]['res_net_meters'] +['path_tpc']['grades'][556]['offset_meters'] ['path_tpc']['grades'][556]['res_coeff'] -['path_tpc']['grades'][556]['res_net'] -['path_tpc']['grades'][557]['offset'] +['path_tpc']['grades'][556]['res_net_meters'] +['path_tpc']['grades'][557]['offset_meters'] ['path_tpc']['grades'][557]['res_coeff'] -['path_tpc']['grades'][557]['res_net'] -['path_tpc']['grades'][558]['offset'] +['path_tpc']['grades'][557]['res_net_meters'] +['path_tpc']['grades'][558]['offset_meters'] ['path_tpc']['grades'][558]['res_coeff'] -['path_tpc']['grades'][558]['res_net'] -['path_tpc']['grades'][559]['offset'] +['path_tpc']['grades'][558]['res_net_meters'] +['path_tpc']['grades'][559]['offset_meters'] ['path_tpc']['grades'][559]['res_coeff'] -['path_tpc']['grades'][559]['res_net'] -['path_tpc']['grades'][560]['offset'] +['path_tpc']['grades'][559]['res_net_meters'] +['path_tpc']['grades'][560]['offset_meters'] ['path_tpc']['grades'][560]['res_coeff'] -['path_tpc']['grades'][560]['res_net'] -['path_tpc']['grades'][561]['offset'] +['path_tpc']['grades'][560]['res_net_meters'] +['path_tpc']['grades'][561]['offset_meters'] ['path_tpc']['grades'][561]['res_coeff'] -['path_tpc']['grades'][561]['res_net'] -['path_tpc']['grades'][562]['offset'] +['path_tpc']['grades'][561]['res_net_meters'] +['path_tpc']['grades'][562]['offset_meters'] ['path_tpc']['grades'][562]['res_coeff'] -['path_tpc']['grades'][562]['res_net'] -['path_tpc']['grades'][563]['offset'] +['path_tpc']['grades'][562]['res_net_meters'] +['path_tpc']['grades'][563]['offset_meters'] ['path_tpc']['grades'][563]['res_coeff'] -['path_tpc']['grades'][563]['res_net'] -['path_tpc']['grades'][564]['offset'] +['path_tpc']['grades'][563]['res_net_meters'] +['path_tpc']['grades'][564]['offset_meters'] ['path_tpc']['grades'][564]['res_coeff'] -['path_tpc']['grades'][564]['res_net'] -['path_tpc']['grades'][565]['offset'] +['path_tpc']['grades'][564]['res_net_meters'] +['path_tpc']['grades'][565]['offset_meters'] ['path_tpc']['grades'][565]['res_coeff'] -['path_tpc']['grades'][565]['res_net'] -['path_tpc']['grades'][566]['offset'] +['path_tpc']['grades'][565]['res_net_meters'] +['path_tpc']['grades'][566]['offset_meters'] ['path_tpc']['grades'][566]['res_coeff'] -['path_tpc']['grades'][566]['res_net'] -['path_tpc']['grades'][567]['offset'] +['path_tpc']['grades'][566]['res_net_meters'] +['path_tpc']['grades'][567]['offset_meters'] ['path_tpc']['grades'][567]['res_coeff'] -['path_tpc']['grades'][567]['res_net'] -['path_tpc']['grades'][568]['offset'] +['path_tpc']['grades'][567]['res_net_meters'] +['path_tpc']['grades'][568]['offset_meters'] ['path_tpc']['grades'][568]['res_coeff'] -['path_tpc']['grades'][568]['res_net'] -['path_tpc']['grades'][569]['offset'] +['path_tpc']['grades'][568]['res_net_meters'] +['path_tpc']['grades'][569]['offset_meters'] ['path_tpc']['grades'][569]['res_coeff'] -['path_tpc']['grades'][569]['res_net'] -['path_tpc']['grades'][570]['offset'] +['path_tpc']['grades'][569]['res_net_meters'] +['path_tpc']['grades'][570]['offset_meters'] ['path_tpc']['grades'][570]['res_coeff'] -['path_tpc']['grades'][570]['res_net'] -['path_tpc']['grades'][571]['offset'] +['path_tpc']['grades'][570]['res_net_meters'] +['path_tpc']['grades'][571]['offset_meters'] ['path_tpc']['grades'][571]['res_coeff'] -['path_tpc']['grades'][571]['res_net'] -['path_tpc']['grades'][572]['offset'] +['path_tpc']['grades'][571]['res_net_meters'] +['path_tpc']['grades'][572]['offset_meters'] ['path_tpc']['grades'][572]['res_coeff'] -['path_tpc']['grades'][572]['res_net'] -['path_tpc']['grades'][573]['offset'] +['path_tpc']['grades'][572]['res_net_meters'] +['path_tpc']['grades'][573]['offset_meters'] ['path_tpc']['grades'][573]['res_coeff'] -['path_tpc']['grades'][573]['res_net'] -['path_tpc']['grades'][574]['offset'] +['path_tpc']['grades'][573]['res_net_meters'] +['path_tpc']['grades'][574]['offset_meters'] ['path_tpc']['grades'][574]['res_coeff'] -['path_tpc']['grades'][574]['res_net'] -['path_tpc']['grades'][575]['offset'] +['path_tpc']['grades'][574]['res_net_meters'] +['path_tpc']['grades'][575]['offset_meters'] ['path_tpc']['grades'][575]['res_coeff'] -['path_tpc']['grades'][575]['res_net'] -['path_tpc']['grades'][576]['offset'] +['path_tpc']['grades'][575]['res_net_meters'] +['path_tpc']['grades'][576]['offset_meters'] ['path_tpc']['grades'][576]['res_coeff'] -['path_tpc']['grades'][576]['res_net'] -['path_tpc']['grades'][577]['offset'] +['path_tpc']['grades'][576]['res_net_meters'] +['path_tpc']['grades'][577]['offset_meters'] ['path_tpc']['grades'][577]['res_coeff'] -['path_tpc']['grades'][577]['res_net'] -['path_tpc']['grades'][578]['offset'] +['path_tpc']['grades'][577]['res_net_meters'] +['path_tpc']['grades'][578]['offset_meters'] ['path_tpc']['grades'][578]['res_coeff'] -['path_tpc']['grades'][578]['res_net'] -['path_tpc']['grades'][579]['offset'] +['path_tpc']['grades'][578]['res_net_meters'] +['path_tpc']['grades'][579]['offset_meters'] ['path_tpc']['grades'][579]['res_coeff'] -['path_tpc']['grades'][579]['res_net'] -['path_tpc']['grades'][580]['offset'] +['path_tpc']['grades'][579]['res_net_meters'] +['path_tpc']['grades'][580]['offset_meters'] ['path_tpc']['grades'][580]['res_coeff'] -['path_tpc']['grades'][580]['res_net'] -['path_tpc']['grades'][581]['offset'] +['path_tpc']['grades'][580]['res_net_meters'] +['path_tpc']['grades'][581]['offset_meters'] ['path_tpc']['grades'][581]['res_coeff'] -['path_tpc']['grades'][581]['res_net'] -['path_tpc']['grades'][582]['offset'] +['path_tpc']['grades'][581]['res_net_meters'] +['path_tpc']['grades'][582]['offset_meters'] ['path_tpc']['grades'][582]['res_coeff'] -['path_tpc']['grades'][582]['res_net'] -['path_tpc']['grades'][583]['offset'] +['path_tpc']['grades'][582]['res_net_meters'] +['path_tpc']['grades'][583]['offset_meters'] ['path_tpc']['grades'][583]['res_coeff'] -['path_tpc']['grades'][583]['res_net'] -['path_tpc']['grades'][584]['offset'] +['path_tpc']['grades'][583]['res_net_meters'] +['path_tpc']['grades'][584]['offset_meters'] ['path_tpc']['grades'][584]['res_coeff'] -['path_tpc']['grades'][584]['res_net'] -['path_tpc']['grades'][585]['offset'] +['path_tpc']['grades'][584]['res_net_meters'] +['path_tpc']['grades'][585]['offset_meters'] ['path_tpc']['grades'][585]['res_coeff'] -['path_tpc']['grades'][585]['res_net'] -['path_tpc']['grades'][586]['offset'] +['path_tpc']['grades'][585]['res_net_meters'] +['path_tpc']['grades'][586]['offset_meters'] ['path_tpc']['grades'][586]['res_coeff'] -['path_tpc']['grades'][586]['res_net'] -['path_tpc']['grades'][587]['offset'] +['path_tpc']['grades'][586]['res_net_meters'] +['path_tpc']['grades'][587]['offset_meters'] ['path_tpc']['grades'][587]['res_coeff'] -['path_tpc']['grades'][587]['res_net'] -['path_tpc']['grades'][588]['offset'] +['path_tpc']['grades'][587]['res_net_meters'] +['path_tpc']['grades'][588]['offset_meters'] ['path_tpc']['grades'][588]['res_coeff'] -['path_tpc']['grades'][588]['res_net'] -['path_tpc']['grades'][589]['offset'] +['path_tpc']['grades'][588]['res_net_meters'] +['path_tpc']['grades'][589]['offset_meters'] ['path_tpc']['grades'][589]['res_coeff'] -['path_tpc']['grades'][589]['res_net'] -['path_tpc']['grades'][590]['offset'] +['path_tpc']['grades'][589]['res_net_meters'] +['path_tpc']['grades'][590]['offset_meters'] ['path_tpc']['grades'][590]['res_coeff'] -['path_tpc']['grades'][590]['res_net'] -['path_tpc']['grades'][591]['offset'] +['path_tpc']['grades'][590]['res_net_meters'] +['path_tpc']['grades'][591]['offset_meters'] ['path_tpc']['grades'][591]['res_coeff'] -['path_tpc']['grades'][591]['res_net'] -['path_tpc']['grades'][592]['offset'] +['path_tpc']['grades'][591]['res_net_meters'] +['path_tpc']['grades'][592]['offset_meters'] ['path_tpc']['grades'][592]['res_coeff'] -['path_tpc']['grades'][592]['res_net'] -['path_tpc']['grades'][593]['offset'] +['path_tpc']['grades'][592]['res_net_meters'] +['path_tpc']['grades'][593]['offset_meters'] ['path_tpc']['grades'][593]['res_coeff'] -['path_tpc']['grades'][593]['res_net'] -['path_tpc']['grades'][594]['offset'] +['path_tpc']['grades'][593]['res_net_meters'] +['path_tpc']['grades'][594]['offset_meters'] ['path_tpc']['grades'][594]['res_coeff'] -['path_tpc']['grades'][594]['res_net'] -['path_tpc']['grades'][595]['offset'] +['path_tpc']['grades'][594]['res_net_meters'] +['path_tpc']['grades'][595]['offset_meters'] ['path_tpc']['grades'][595]['res_coeff'] -['path_tpc']['grades'][595]['res_net'] -['path_tpc']['grades'][596]['offset'] +['path_tpc']['grades'][595]['res_net_meters'] +['path_tpc']['grades'][596]['offset_meters'] ['path_tpc']['grades'][596]['res_coeff'] -['path_tpc']['grades'][596]['res_net'] -['path_tpc']['grades'][597]['offset'] +['path_tpc']['grades'][596]['res_net_meters'] +['path_tpc']['grades'][597]['offset_meters'] ['path_tpc']['grades'][597]['res_coeff'] -['path_tpc']['grades'][597]['res_net'] -['path_tpc']['grades'][598]['offset'] +['path_tpc']['grades'][597]['res_net_meters'] +['path_tpc']['grades'][598]['offset_meters'] ['path_tpc']['grades'][598]['res_coeff'] -['path_tpc']['grades'][598]['res_net'] -['path_tpc']['grades'][599]['offset'] +['path_tpc']['grades'][598]['res_net_meters'] +['path_tpc']['grades'][599]['offset_meters'] ['path_tpc']['grades'][599]['res_coeff'] -['path_tpc']['grades'][599]['res_net'] -['path_tpc']['grades'][600]['offset'] +['path_tpc']['grades'][599]['res_net_meters'] +['path_tpc']['grades'][600]['offset_meters'] ['path_tpc']['grades'][600]['res_coeff'] -['path_tpc']['grades'][600]['res_net'] -['path_tpc']['grades'][601]['offset'] +['path_tpc']['grades'][600]['res_net_meters'] +['path_tpc']['grades'][601]['offset_meters'] ['path_tpc']['grades'][601]['res_coeff'] -['path_tpc']['grades'][601]['res_net'] -['path_tpc']['grades'][602]['offset'] +['path_tpc']['grades'][601]['res_net_meters'] +['path_tpc']['grades'][602]['offset_meters'] ['path_tpc']['grades'][602]['res_coeff'] -['path_tpc']['grades'][602]['res_net'] -['path_tpc']['grades'][603]['offset'] +['path_tpc']['grades'][602]['res_net_meters'] +['path_tpc']['grades'][603]['offset_meters'] ['path_tpc']['grades'][603]['res_coeff'] -['path_tpc']['grades'][603]['res_net'] -['path_tpc']['grades'][604]['offset'] +['path_tpc']['grades'][603]['res_net_meters'] +['path_tpc']['grades'][604]['offset_meters'] ['path_tpc']['grades'][604]['res_coeff'] -['path_tpc']['grades'][604]['res_net'] -['path_tpc']['grades'][605]['offset'] +['path_tpc']['grades'][604]['res_net_meters'] +['path_tpc']['grades'][605]['offset_meters'] ['path_tpc']['grades'][605]['res_coeff'] -['path_tpc']['grades'][605]['res_net'] -['path_tpc']['grades'][606]['offset'] +['path_tpc']['grades'][605]['res_net_meters'] +['path_tpc']['grades'][606]['offset_meters'] ['path_tpc']['grades'][606]['res_coeff'] -['path_tpc']['grades'][606]['res_net'] -['path_tpc']['grades'][607]['offset'] +['path_tpc']['grades'][606]['res_net_meters'] +['path_tpc']['grades'][607]['offset_meters'] ['path_tpc']['grades'][607]['res_coeff'] -['path_tpc']['grades'][607]['res_net'] -['path_tpc']['grades'][608]['offset'] +['path_tpc']['grades'][607]['res_net_meters'] +['path_tpc']['grades'][608]['offset_meters'] ['path_tpc']['grades'][608]['res_coeff'] -['path_tpc']['grades'][608]['res_net'] -['path_tpc']['grades'][609]['offset'] +['path_tpc']['grades'][608]['res_net_meters'] +['path_tpc']['grades'][609]['offset_meters'] ['path_tpc']['grades'][609]['res_coeff'] -['path_tpc']['grades'][609]['res_net'] -['path_tpc']['grades'][610]['offset'] +['path_tpc']['grades'][609]['res_net_meters'] +['path_tpc']['grades'][610]['offset_meters'] ['path_tpc']['grades'][610]['res_coeff'] -['path_tpc']['grades'][610]['res_net'] -['path_tpc']['grades'][611]['offset'] +['path_tpc']['grades'][610]['res_net_meters'] +['path_tpc']['grades'][611]['offset_meters'] ['path_tpc']['grades'][611]['res_coeff'] -['path_tpc']['grades'][611]['res_net'] -['path_tpc']['grades'][612]['offset'] +['path_tpc']['grades'][611]['res_net_meters'] +['path_tpc']['grades'][612]['offset_meters'] ['path_tpc']['grades'][612]['res_coeff'] -['path_tpc']['grades'][612]['res_net'] -['path_tpc']['grades'][613]['offset'] +['path_tpc']['grades'][612]['res_net_meters'] +['path_tpc']['grades'][613]['offset_meters'] ['path_tpc']['grades'][613]['res_coeff'] -['path_tpc']['grades'][613]['res_net'] -['path_tpc']['grades'][614]['offset'] +['path_tpc']['grades'][613]['res_net_meters'] +['path_tpc']['grades'][614]['offset_meters'] ['path_tpc']['grades'][614]['res_coeff'] -['path_tpc']['grades'][614]['res_net'] -['path_tpc']['grades'][615]['offset'] +['path_tpc']['grades'][614]['res_net_meters'] +['path_tpc']['grades'][615]['offset_meters'] ['path_tpc']['grades'][615]['res_coeff'] -['path_tpc']['grades'][615]['res_net'] -['path_tpc']['grades'][616]['offset'] +['path_tpc']['grades'][615]['res_net_meters'] +['path_tpc']['grades'][616]['offset_meters'] ['path_tpc']['grades'][616]['res_coeff'] -['path_tpc']['grades'][616]['res_net'] -['path_tpc']['grades'][617]['offset'] +['path_tpc']['grades'][616]['res_net_meters'] +['path_tpc']['grades'][617]['offset_meters'] ['path_tpc']['grades'][617]['res_coeff'] -['path_tpc']['grades'][617]['res_net'] -['path_tpc']['grades'][618]['offset'] +['path_tpc']['grades'][617]['res_net_meters'] +['path_tpc']['grades'][618]['offset_meters'] ['path_tpc']['grades'][618]['res_coeff'] -['path_tpc']['grades'][618]['res_net'] -['path_tpc']['grades'][619]['offset'] +['path_tpc']['grades'][618]['res_net_meters'] +['path_tpc']['grades'][619]['offset_meters'] ['path_tpc']['grades'][619]['res_coeff'] -['path_tpc']['grades'][619]['res_net'] -['path_tpc']['grades'][620]['offset'] +['path_tpc']['grades'][619]['res_net_meters'] +['path_tpc']['grades'][620]['offset_meters'] ['path_tpc']['grades'][620]['res_coeff'] -['path_tpc']['grades'][620]['res_net'] -['path_tpc']['grades'][621]['offset'] +['path_tpc']['grades'][620]['res_net_meters'] +['path_tpc']['grades'][621]['offset_meters'] ['path_tpc']['grades'][621]['res_coeff'] -['path_tpc']['grades'][621]['res_net'] -['path_tpc']['grades'][622]['offset'] +['path_tpc']['grades'][621]['res_net_meters'] +['path_tpc']['grades'][622]['offset_meters'] ['path_tpc']['grades'][622]['res_coeff'] -['path_tpc']['grades'][622]['res_net'] -['path_tpc']['grades'][623]['offset'] +['path_tpc']['grades'][622]['res_net_meters'] +['path_tpc']['grades'][623]['offset_meters'] ['path_tpc']['grades'][623]['res_coeff'] -['path_tpc']['grades'][623]['res_net'] -['path_tpc']['grades'][624]['offset'] +['path_tpc']['grades'][623]['res_net_meters'] +['path_tpc']['grades'][624]['offset_meters'] ['path_tpc']['grades'][624]['res_coeff'] -['path_tpc']['grades'][624]['res_net'] -['path_tpc']['grades'][625]['offset'] +['path_tpc']['grades'][624]['res_net_meters'] +['path_tpc']['grades'][625]['offset_meters'] ['path_tpc']['grades'][625]['res_coeff'] -['path_tpc']['grades'][625]['res_net'] -['path_tpc']['grades'][626]['offset'] +['path_tpc']['grades'][625]['res_net_meters'] +['path_tpc']['grades'][626]['offset_meters'] ['path_tpc']['grades'][626]['res_coeff'] -['path_tpc']['grades'][626]['res_net'] -['path_tpc']['grades'][627]['offset'] +['path_tpc']['grades'][626]['res_net_meters'] +['path_tpc']['grades'][627]['offset_meters'] ['path_tpc']['grades'][627]['res_coeff'] -['path_tpc']['grades'][627]['res_net'] -['path_tpc']['grades'][628]['offset'] +['path_tpc']['grades'][627]['res_net_meters'] +['path_tpc']['grades'][628]['offset_meters'] ['path_tpc']['grades'][628]['res_coeff'] -['path_tpc']['grades'][628]['res_net'] -['path_tpc']['grades'][629]['offset'] +['path_tpc']['grades'][628]['res_net_meters'] +['path_tpc']['grades'][629]['offset_meters'] ['path_tpc']['grades'][629]['res_coeff'] -['path_tpc']['grades'][629]['res_net'] -['path_tpc']['grades'][630]['offset'] +['path_tpc']['grades'][629]['res_net_meters'] +['path_tpc']['grades'][630]['offset_meters'] ['path_tpc']['grades'][630]['res_coeff'] -['path_tpc']['grades'][630]['res_net'] -['path_tpc']['grades'][631]['offset'] +['path_tpc']['grades'][630]['res_net_meters'] +['path_tpc']['grades'][631]['offset_meters'] ['path_tpc']['grades'][631]['res_coeff'] -['path_tpc']['grades'][631]['res_net'] -['path_tpc']['grades'][632]['offset'] +['path_tpc']['grades'][631]['res_net_meters'] +['path_tpc']['grades'][632]['offset_meters'] ['path_tpc']['grades'][632]['res_coeff'] -['path_tpc']['grades'][632]['res_net'] -['path_tpc']['grades'][633]['offset'] +['path_tpc']['grades'][632]['res_net_meters'] +['path_tpc']['grades'][633]['offset_meters'] ['path_tpc']['grades'][633]['res_coeff'] -['path_tpc']['grades'][633]['res_net'] -['path_tpc']['grades'][634]['offset'] +['path_tpc']['grades'][633]['res_net_meters'] +['path_tpc']['grades'][634]['offset_meters'] ['path_tpc']['grades'][634]['res_coeff'] -['path_tpc']['grades'][634]['res_net'] -['path_tpc']['grades'][635]['offset'] +['path_tpc']['grades'][634]['res_net_meters'] +['path_tpc']['grades'][635]['offset_meters'] ['path_tpc']['grades'][635]['res_coeff'] -['path_tpc']['grades'][635]['res_net'] -['path_tpc']['grades'][636]['offset'] +['path_tpc']['grades'][635]['res_net_meters'] +['path_tpc']['grades'][636]['offset_meters'] ['path_tpc']['grades'][636]['res_coeff'] -['path_tpc']['grades'][636]['res_net'] -['path_tpc']['grades'][637]['offset'] +['path_tpc']['grades'][636]['res_net_meters'] +['path_tpc']['grades'][637]['offset_meters'] ['path_tpc']['grades'][637]['res_coeff'] -['path_tpc']['grades'][637]['res_net'] -['path_tpc']['grades'][638]['offset'] +['path_tpc']['grades'][637]['res_net_meters'] +['path_tpc']['grades'][638]['offset_meters'] ['path_tpc']['grades'][638]['res_coeff'] -['path_tpc']['grades'][638]['res_net'] -['path_tpc']['grades'][639]['offset'] +['path_tpc']['grades'][638]['res_net_meters'] +['path_tpc']['grades'][639]['offset_meters'] ['path_tpc']['grades'][639]['res_coeff'] -['path_tpc']['grades'][639]['res_net'] -['path_tpc']['grades'][640]['offset'] +['path_tpc']['grades'][639]['res_net_meters'] +['path_tpc']['grades'][640]['offset_meters'] ['path_tpc']['grades'][640]['res_coeff'] -['path_tpc']['grades'][640]['res_net'] -['path_tpc']['grades'][641]['offset'] +['path_tpc']['grades'][640]['res_net_meters'] +['path_tpc']['grades'][641]['offset_meters'] ['path_tpc']['grades'][641]['res_coeff'] -['path_tpc']['grades'][641]['res_net'] -['path_tpc']['grades'][642]['offset'] +['path_tpc']['grades'][641]['res_net_meters'] +['path_tpc']['grades'][642]['offset_meters'] ['path_tpc']['grades'][642]['res_coeff'] -['path_tpc']['grades'][642]['res_net'] -['path_tpc']['grades'][643]['offset'] +['path_tpc']['grades'][642]['res_net_meters'] +['path_tpc']['grades'][643]['offset_meters'] ['path_tpc']['grades'][643]['res_coeff'] -['path_tpc']['grades'][643]['res_net'] -['path_tpc']['grades'][644]['offset'] +['path_tpc']['grades'][643]['res_net_meters'] +['path_tpc']['grades'][644]['offset_meters'] ['path_tpc']['grades'][644]['res_coeff'] -['path_tpc']['grades'][644]['res_net'] -['path_tpc']['grades'][645]['offset'] +['path_tpc']['grades'][644]['res_net_meters'] +['path_tpc']['grades'][645]['offset_meters'] ['path_tpc']['grades'][645]['res_coeff'] -['path_tpc']['grades'][645]['res_net'] -['path_tpc']['grades'][646]['offset'] +['path_tpc']['grades'][645]['res_net_meters'] +['path_tpc']['grades'][646]['offset_meters'] ['path_tpc']['grades'][646]['res_coeff'] -['path_tpc']['grades'][646]['res_net'] -['path_tpc']['grades'][647]['offset'] +['path_tpc']['grades'][646]['res_net_meters'] +['path_tpc']['grades'][647]['offset_meters'] ['path_tpc']['grades'][647]['res_coeff'] -['path_tpc']['grades'][647]['res_net'] -['path_tpc']['grades'][648]['offset'] +['path_tpc']['grades'][647]['res_net_meters'] +['path_tpc']['grades'][648]['offset_meters'] ['path_tpc']['grades'][648]['res_coeff'] -['path_tpc']['grades'][648]['res_net'] -['path_tpc']['grades'][649]['offset'] +['path_tpc']['grades'][648]['res_net_meters'] +['path_tpc']['grades'][649]['offset_meters'] ['path_tpc']['grades'][649]['res_coeff'] -['path_tpc']['grades'][649]['res_net'] -['path_tpc']['grades'][650]['offset'] +['path_tpc']['grades'][649]['res_net_meters'] +['path_tpc']['grades'][650]['offset_meters'] ['path_tpc']['grades'][650]['res_coeff'] -['path_tpc']['grades'][650]['res_net'] -['path_tpc']['grades'][651]['offset'] +['path_tpc']['grades'][650]['res_net_meters'] +['path_tpc']['grades'][651]['offset_meters'] ['path_tpc']['grades'][651]['res_coeff'] -['path_tpc']['grades'][651]['res_net'] -['path_tpc']['grades'][652]['offset'] +['path_tpc']['grades'][651]['res_net_meters'] +['path_tpc']['grades'][652]['offset_meters'] ['path_tpc']['grades'][652]['res_coeff'] -['path_tpc']['grades'][652]['res_net'] -['path_tpc']['grades'][653]['offset'] +['path_tpc']['grades'][652]['res_net_meters'] +['path_tpc']['grades'][653]['offset_meters'] ['path_tpc']['grades'][653]['res_coeff'] -['path_tpc']['grades'][653]['res_net'] -['path_tpc']['grades'][654]['offset'] +['path_tpc']['grades'][653]['res_net_meters'] +['path_tpc']['grades'][654]['offset_meters'] ['path_tpc']['grades'][654]['res_coeff'] -['path_tpc']['grades'][654]['res_net'] -['path_tpc']['grades'][655]['offset'] +['path_tpc']['grades'][654]['res_net_meters'] +['path_tpc']['grades'][655]['offset_meters'] ['path_tpc']['grades'][655]['res_coeff'] -['path_tpc']['grades'][655]['res_net'] -['path_tpc']['grades'][656]['offset'] +['path_tpc']['grades'][655]['res_net_meters'] +['path_tpc']['grades'][656]['offset_meters'] ['path_tpc']['grades'][656]['res_coeff'] -['path_tpc']['grades'][656]['res_net'] -['path_tpc']['grades'][657]['offset'] +['path_tpc']['grades'][656]['res_net_meters'] +['path_tpc']['grades'][657]['offset_meters'] ['path_tpc']['grades'][657]['res_coeff'] -['path_tpc']['grades'][657]['res_net'] -['path_tpc']['grades'][658]['offset'] +['path_tpc']['grades'][657]['res_net_meters'] +['path_tpc']['grades'][658]['offset_meters'] ['path_tpc']['grades'][658]['res_coeff'] -['path_tpc']['grades'][658]['res_net'] -['path_tpc']['grades'][659]['offset'] +['path_tpc']['grades'][658]['res_net_meters'] +['path_tpc']['grades'][659]['offset_meters'] ['path_tpc']['grades'][659]['res_coeff'] -['path_tpc']['grades'][659]['res_net'] -['path_tpc']['grades'][660]['offset'] +['path_tpc']['grades'][659]['res_net_meters'] +['path_tpc']['grades'][660]['offset_meters'] ['path_tpc']['grades'][660]['res_coeff'] -['path_tpc']['grades'][660]['res_net'] -['path_tpc']['grades'][661]['offset'] +['path_tpc']['grades'][660]['res_net_meters'] +['path_tpc']['grades'][661]['offset_meters'] ['path_tpc']['grades'][661]['res_coeff'] -['path_tpc']['grades'][661]['res_net'] -['path_tpc']['grades'][662]['offset'] +['path_tpc']['grades'][661]['res_net_meters'] +['path_tpc']['grades'][662]['offset_meters'] ['path_tpc']['grades'][662]['res_coeff'] -['path_tpc']['grades'][662]['res_net'] -['path_tpc']['grades'][663]['offset'] +['path_tpc']['grades'][662]['res_net_meters'] +['path_tpc']['grades'][663]['offset_meters'] ['path_tpc']['grades'][663]['res_coeff'] -['path_tpc']['grades'][663]['res_net'] -['path_tpc']['grades'][664]['offset'] +['path_tpc']['grades'][663]['res_net_meters'] +['path_tpc']['grades'][664]['offset_meters'] ['path_tpc']['grades'][664]['res_coeff'] -['path_tpc']['grades'][664]['res_net'] -['path_tpc']['grades'][665]['offset'] +['path_tpc']['grades'][664]['res_net_meters'] +['path_tpc']['grades'][665]['offset_meters'] ['path_tpc']['grades'][665]['res_coeff'] -['path_tpc']['grades'][665]['res_net'] -['path_tpc']['grades'][666]['offset'] +['path_tpc']['grades'][665]['res_net_meters'] +['path_tpc']['grades'][666]['offset_meters'] ['path_tpc']['grades'][666]['res_coeff'] -['path_tpc']['grades'][666]['res_net'] -['path_tpc']['grades'][667]['offset'] +['path_tpc']['grades'][666]['res_net_meters'] +['path_tpc']['grades'][667]['offset_meters'] ['path_tpc']['grades'][667]['res_coeff'] -['path_tpc']['grades'][667]['res_net'] -['path_tpc']['grades'][668]['offset'] +['path_tpc']['grades'][667]['res_net_meters'] +['path_tpc']['grades'][668]['offset_meters'] ['path_tpc']['grades'][668]['res_coeff'] -['path_tpc']['grades'][668]['res_net'] -['path_tpc']['grades'][669]['offset'] +['path_tpc']['grades'][668]['res_net_meters'] +['path_tpc']['grades'][669]['offset_meters'] ['path_tpc']['grades'][669]['res_coeff'] -['path_tpc']['grades'][669]['res_net'] -['path_tpc']['grades'][670]['offset'] +['path_tpc']['grades'][669]['res_net_meters'] +['path_tpc']['grades'][670]['offset_meters'] ['path_tpc']['grades'][670]['res_coeff'] -['path_tpc']['grades'][670]['res_net'] -['path_tpc']['grades'][671]['offset'] +['path_tpc']['grades'][670]['res_net_meters'] +['path_tpc']['grades'][671]['offset_meters'] ['path_tpc']['grades'][671]['res_coeff'] -['path_tpc']['grades'][671]['res_net'] -['path_tpc']['grades'][672]['offset'] +['path_tpc']['grades'][671]['res_net_meters'] +['path_tpc']['grades'][672]['offset_meters'] ['path_tpc']['grades'][672]['res_coeff'] -['path_tpc']['grades'][672]['res_net'] -['path_tpc']['grades'][673]['offset'] +['path_tpc']['grades'][672]['res_net_meters'] +['path_tpc']['grades'][673]['offset_meters'] ['path_tpc']['grades'][673]['res_coeff'] -['path_tpc']['grades'][673]['res_net'] -['path_tpc']['grades'][674]['offset'] +['path_tpc']['grades'][673]['res_net_meters'] +['path_tpc']['grades'][674]['offset_meters'] ['path_tpc']['grades'][674]['res_coeff'] -['path_tpc']['grades'][674]['res_net'] -['path_tpc']['grades'][675]['offset'] +['path_tpc']['grades'][674]['res_net_meters'] +['path_tpc']['grades'][675]['offset_meters'] ['path_tpc']['grades'][675]['res_coeff'] -['path_tpc']['grades'][675]['res_net'] -['path_tpc']['grades'][676]['offset'] +['path_tpc']['grades'][675]['res_net_meters'] +['path_tpc']['grades'][676]['offset_meters'] ['path_tpc']['grades'][676]['res_coeff'] -['path_tpc']['grades'][676]['res_net'] -['path_tpc']['grades'][677]['offset'] +['path_tpc']['grades'][676]['res_net_meters'] +['path_tpc']['grades'][677]['offset_meters'] ['path_tpc']['grades'][677]['res_coeff'] -['path_tpc']['grades'][677]['res_net'] -['path_tpc']['grades'][678]['offset'] +['path_tpc']['grades'][677]['res_net_meters'] +['path_tpc']['grades'][678]['offset_meters'] ['path_tpc']['grades'][678]['res_coeff'] -['path_tpc']['grades'][678]['res_net'] -['path_tpc']['grades'][679]['offset'] +['path_tpc']['grades'][678]['res_net_meters'] +['path_tpc']['grades'][679]['offset_meters'] ['path_tpc']['grades'][679]['res_coeff'] -['path_tpc']['grades'][679]['res_net'] -['path_tpc']['grades'][680]['offset'] +['path_tpc']['grades'][679]['res_net_meters'] +['path_tpc']['grades'][680]['offset_meters'] ['path_tpc']['grades'][680]['res_coeff'] -['path_tpc']['grades'][680]['res_net'] -['path_tpc']['grades'][681]['offset'] +['path_tpc']['grades'][680]['res_net_meters'] +['path_tpc']['grades'][681]['offset_meters'] ['path_tpc']['grades'][681]['res_coeff'] -['path_tpc']['grades'][681]['res_net'] -['path_tpc']['grades'][682]['offset'] +['path_tpc']['grades'][681]['res_net_meters'] +['path_tpc']['grades'][682]['offset_meters'] ['path_tpc']['grades'][682]['res_coeff'] -['path_tpc']['grades'][682]['res_net'] -['path_tpc']['grades'][683]['offset'] +['path_tpc']['grades'][682]['res_net_meters'] +['path_tpc']['grades'][683]['offset_meters'] ['path_tpc']['grades'][683]['res_coeff'] -['path_tpc']['grades'][683]['res_net'] -['path_tpc']['grades'][684]['offset'] +['path_tpc']['grades'][683]['res_net_meters'] +['path_tpc']['grades'][684]['offset_meters'] ['path_tpc']['grades'][684]['res_coeff'] -['path_tpc']['grades'][684]['res_net'] -['path_tpc']['grades'][685]['offset'] +['path_tpc']['grades'][684]['res_net_meters'] +['path_tpc']['grades'][685]['offset_meters'] ['path_tpc']['grades'][685]['res_coeff'] -['path_tpc']['grades'][685]['res_net'] -['path_tpc']['grades'][686]['offset'] +['path_tpc']['grades'][685]['res_net_meters'] +['path_tpc']['grades'][686]['offset_meters'] ['path_tpc']['grades'][686]['res_coeff'] -['path_tpc']['grades'][686]['res_net'] -['path_tpc']['grades'][687]['offset'] +['path_tpc']['grades'][686]['res_net_meters'] +['path_tpc']['grades'][687]['offset_meters'] ['path_tpc']['grades'][687]['res_coeff'] -['path_tpc']['grades'][687]['res_net'] -['path_tpc']['grades'][688]['offset'] +['path_tpc']['grades'][687]['res_net_meters'] +['path_tpc']['grades'][688]['offset_meters'] ['path_tpc']['grades'][688]['res_coeff'] -['path_tpc']['grades'][688]['res_net'] -['path_tpc']['grades'][689]['offset'] +['path_tpc']['grades'][688]['res_net_meters'] +['path_tpc']['grades'][689]['offset_meters'] ['path_tpc']['grades'][689]['res_coeff'] -['path_tpc']['grades'][689]['res_net'] -['path_tpc']['grades'][690]['offset'] +['path_tpc']['grades'][689]['res_net_meters'] +['path_tpc']['grades'][690]['offset_meters'] ['path_tpc']['grades'][690]['res_coeff'] -['path_tpc']['grades'][690]['res_net'] -['path_tpc']['grades'][691]['offset'] +['path_tpc']['grades'][690]['res_net_meters'] +['path_tpc']['grades'][691]['offset_meters'] ['path_tpc']['grades'][691]['res_coeff'] -['path_tpc']['grades'][691]['res_net'] -['path_tpc']['grades'][692]['offset'] +['path_tpc']['grades'][691]['res_net_meters'] +['path_tpc']['grades'][692]['offset_meters'] ['path_tpc']['grades'][692]['res_coeff'] -['path_tpc']['grades'][692]['res_net'] -['path_tpc']['grades'][693]['offset'] +['path_tpc']['grades'][692]['res_net_meters'] +['path_tpc']['grades'][693]['offset_meters'] ['path_tpc']['grades'][693]['res_coeff'] -['path_tpc']['grades'][693]['res_net'] -['path_tpc']['grades'][694]['offset'] +['path_tpc']['grades'][693]['res_net_meters'] +['path_tpc']['grades'][694]['offset_meters'] ['path_tpc']['grades'][694]['res_coeff'] -['path_tpc']['grades'][694]['res_net'] -['path_tpc']['grades'][695]['offset'] +['path_tpc']['grades'][694]['res_net_meters'] +['path_tpc']['grades'][695]['offset_meters'] ['path_tpc']['grades'][695]['res_coeff'] -['path_tpc']['grades'][695]['res_net'] -['path_tpc']['grades'][696]['offset'] +['path_tpc']['grades'][695]['res_net_meters'] +['path_tpc']['grades'][696]['offset_meters'] ['path_tpc']['grades'][696]['res_coeff'] -['path_tpc']['grades'][696]['res_net'] -['path_tpc']['grades'][697]['offset'] +['path_tpc']['grades'][696]['res_net_meters'] +['path_tpc']['grades'][697]['offset_meters'] ['path_tpc']['grades'][697]['res_coeff'] -['path_tpc']['grades'][697]['res_net'] -['path_tpc']['grades'][698]['offset'] +['path_tpc']['grades'][697]['res_net_meters'] +['path_tpc']['grades'][698]['offset_meters'] ['path_tpc']['grades'][698]['res_coeff'] -['path_tpc']['grades'][698]['res_net'] -['path_tpc']['grades'][699]['offset'] +['path_tpc']['grades'][698]['res_net_meters'] +['path_tpc']['grades'][699]['offset_meters'] ['path_tpc']['grades'][699]['res_coeff'] -['path_tpc']['grades'][699]['res_net'] -['path_tpc']['grades'][700]['offset'] +['path_tpc']['grades'][699]['res_net_meters'] +['path_tpc']['grades'][700]['offset_meters'] ['path_tpc']['grades'][700]['res_coeff'] -['path_tpc']['grades'][700]['res_net'] -['path_tpc']['grades'][701]['offset'] +['path_tpc']['grades'][700]['res_net_meters'] +['path_tpc']['grades'][701]['offset_meters'] ['path_tpc']['grades'][701]['res_coeff'] -['path_tpc']['grades'][701]['res_net'] -['path_tpc']['grades'][702]['offset'] +['path_tpc']['grades'][701]['res_net_meters'] +['path_tpc']['grades'][702]['offset_meters'] ['path_tpc']['grades'][702]['res_coeff'] -['path_tpc']['grades'][702]['res_net'] -['path_tpc']['grades'][703]['offset'] +['path_tpc']['grades'][702]['res_net_meters'] +['path_tpc']['grades'][703]['offset_meters'] ['path_tpc']['grades'][703]['res_coeff'] -['path_tpc']['grades'][703]['res_net'] -['path_tpc']['grades'][704]['offset'] +['path_tpc']['grades'][703]['res_net_meters'] +['path_tpc']['grades'][704]['offset_meters'] ['path_tpc']['grades'][704]['res_coeff'] -['path_tpc']['grades'][704]['res_net'] -['path_tpc']['grades'][705]['offset'] +['path_tpc']['grades'][704]['res_net_meters'] +['path_tpc']['grades'][705]['offset_meters'] ['path_tpc']['grades'][705]['res_coeff'] -['path_tpc']['grades'][705]['res_net'] -['path_tpc']['grades'][706]['offset'] +['path_tpc']['grades'][705]['res_net_meters'] +['path_tpc']['grades'][706]['offset_meters'] ['path_tpc']['grades'][706]['res_coeff'] -['path_tpc']['grades'][706]['res_net'] -['path_tpc']['grades'][707]['offset'] +['path_tpc']['grades'][706]['res_net_meters'] +['path_tpc']['grades'][707]['offset_meters'] ['path_tpc']['grades'][707]['res_coeff'] -['path_tpc']['grades'][707]['res_net'] -['path_tpc']['grades'][708]['offset'] +['path_tpc']['grades'][707]['res_net_meters'] +['path_tpc']['grades'][708]['offset_meters'] ['path_tpc']['grades'][708]['res_coeff'] -['path_tpc']['grades'][708]['res_net'] -['path_tpc']['grades'][709]['offset'] +['path_tpc']['grades'][708]['res_net_meters'] +['path_tpc']['grades'][709]['offset_meters'] ['path_tpc']['grades'][709]['res_coeff'] -['path_tpc']['grades'][709]['res_net'] -['path_tpc']['grades'][710]['offset'] +['path_tpc']['grades'][709]['res_net_meters'] +['path_tpc']['grades'][710]['offset_meters'] ['path_tpc']['grades'][710]['res_coeff'] -['path_tpc']['grades'][710]['res_net'] -['path_tpc']['grades'][711]['offset'] +['path_tpc']['grades'][710]['res_net_meters'] +['path_tpc']['grades'][711]['offset_meters'] ['path_tpc']['grades'][711]['res_coeff'] -['path_tpc']['grades'][711]['res_net'] -['path_tpc']['grades'][712]['offset'] +['path_tpc']['grades'][711]['res_net_meters'] +['path_tpc']['grades'][712]['offset_meters'] ['path_tpc']['grades'][712]['res_coeff'] -['path_tpc']['grades'][712]['res_net'] -['path_tpc']['grades'][713]['offset'] +['path_tpc']['grades'][712]['res_net_meters'] +['path_tpc']['grades'][713]['offset_meters'] ['path_tpc']['grades'][713]['res_coeff'] -['path_tpc']['grades'][713]['res_net'] -['path_tpc']['grades'][714]['offset'] +['path_tpc']['grades'][713]['res_net_meters'] +['path_tpc']['grades'][714]['offset_meters'] ['path_tpc']['grades'][714]['res_coeff'] -['path_tpc']['grades'][714]['res_net'] -['path_tpc']['grades'][715]['offset'] +['path_tpc']['grades'][714]['res_net_meters'] +['path_tpc']['grades'][715]['offset_meters'] ['path_tpc']['grades'][715]['res_coeff'] -['path_tpc']['grades'][715]['res_net'] -['path_tpc']['grades'][716]['offset'] +['path_tpc']['grades'][715]['res_net_meters'] +['path_tpc']['grades'][716]['offset_meters'] ['path_tpc']['grades'][716]['res_coeff'] -['path_tpc']['grades'][716]['res_net'] -['path_tpc']['grades'][717]['offset'] +['path_tpc']['grades'][716]['res_net_meters'] +['path_tpc']['grades'][717]['offset_meters'] ['path_tpc']['grades'][717]['res_coeff'] -['path_tpc']['grades'][717]['res_net'] -['path_tpc']['grades'][718]['offset'] +['path_tpc']['grades'][717]['res_net_meters'] +['path_tpc']['grades'][718]['offset_meters'] ['path_tpc']['grades'][718]['res_coeff'] -['path_tpc']['grades'][718]['res_net'] -['path_tpc']['grades'][719]['offset'] +['path_tpc']['grades'][718]['res_net_meters'] +['path_tpc']['grades'][719]['offset_meters'] ['path_tpc']['grades'][719]['res_coeff'] -['path_tpc']['grades'][719]['res_net'] -['path_tpc']['grades'][720]['offset'] +['path_tpc']['grades'][719]['res_net_meters'] +['path_tpc']['grades'][720]['offset_meters'] ['path_tpc']['grades'][720]['res_coeff'] -['path_tpc']['grades'][720]['res_net'] -['path_tpc']['grades'][721]['offset'] +['path_tpc']['grades'][720]['res_net_meters'] +['path_tpc']['grades'][721]['offset_meters'] ['path_tpc']['grades'][721]['res_coeff'] -['path_tpc']['grades'][721]['res_net'] -['path_tpc']['grades'][722]['offset'] +['path_tpc']['grades'][721]['res_net_meters'] +['path_tpc']['grades'][722]['offset_meters'] ['path_tpc']['grades'][722]['res_coeff'] -['path_tpc']['grades'][722]['res_net'] -['path_tpc']['grades'][723]['offset'] +['path_tpc']['grades'][722]['res_net_meters'] +['path_tpc']['grades'][723]['offset_meters'] ['path_tpc']['grades'][723]['res_coeff'] -['path_tpc']['grades'][723]['res_net'] -['path_tpc']['grades'][724]['offset'] +['path_tpc']['grades'][723]['res_net_meters'] +['path_tpc']['grades'][724]['offset_meters'] ['path_tpc']['grades'][724]['res_coeff'] -['path_tpc']['grades'][724]['res_net'] -['path_tpc']['grades'][725]['offset'] +['path_tpc']['grades'][724]['res_net_meters'] +['path_tpc']['grades'][725]['offset_meters'] ['path_tpc']['grades'][725]['res_coeff'] -['path_tpc']['grades'][725]['res_net'] -['path_tpc']['grades'][726]['offset'] +['path_tpc']['grades'][725]['res_net_meters'] +['path_tpc']['grades'][726]['offset_meters'] ['path_tpc']['grades'][726]['res_coeff'] -['path_tpc']['grades'][726]['res_net'] -['path_tpc']['grades'][727]['offset'] +['path_tpc']['grades'][726]['res_net_meters'] +['path_tpc']['grades'][727]['offset_meters'] ['path_tpc']['grades'][727]['res_coeff'] -['path_tpc']['grades'][727]['res_net'] -['path_tpc']['grades'][728]['offset'] +['path_tpc']['grades'][727]['res_net_meters'] +['path_tpc']['grades'][728]['offset_meters'] ['path_tpc']['grades'][728]['res_coeff'] -['path_tpc']['grades'][728]['res_net'] -['path_tpc']['grades'][729]['offset'] +['path_tpc']['grades'][728]['res_net_meters'] +['path_tpc']['grades'][729]['offset_meters'] ['path_tpc']['grades'][729]['res_coeff'] -['path_tpc']['grades'][729]['res_net'] -['path_tpc']['grades'][730]['offset'] +['path_tpc']['grades'][729]['res_net_meters'] +['path_tpc']['grades'][730]['offset_meters'] ['path_tpc']['grades'][730]['res_coeff'] -['path_tpc']['grades'][730]['res_net'] -['path_tpc']['grades'][731]['offset'] +['path_tpc']['grades'][730]['res_net_meters'] +['path_tpc']['grades'][731]['offset_meters'] ['path_tpc']['grades'][731]['res_coeff'] -['path_tpc']['grades'][731]['res_net'] -['path_tpc']['grades'][732]['offset'] +['path_tpc']['grades'][731]['res_net_meters'] +['path_tpc']['grades'][732]['offset_meters'] ['path_tpc']['grades'][732]['res_coeff'] -['path_tpc']['grades'][732]['res_net'] -['path_tpc']['grades'][733]['offset'] +['path_tpc']['grades'][732]['res_net_meters'] +['path_tpc']['grades'][733]['offset_meters'] ['path_tpc']['grades'][733]['res_coeff'] -['path_tpc']['grades'][733]['res_net'] -['path_tpc']['grades'][734]['offset'] +['path_tpc']['grades'][733]['res_net_meters'] +['path_tpc']['grades'][734]['offset_meters'] ['path_tpc']['grades'][734]['res_coeff'] -['path_tpc']['grades'][734]['res_net'] -['path_tpc']['grades'][735]['offset'] +['path_tpc']['grades'][734]['res_net_meters'] +['path_tpc']['grades'][735]['offset_meters'] ['path_tpc']['grades'][735]['res_coeff'] -['path_tpc']['grades'][735]['res_net'] -['path_tpc']['grades'][736]['offset'] +['path_tpc']['grades'][735]['res_net_meters'] +['path_tpc']['grades'][736]['offset_meters'] ['path_tpc']['grades'][736]['res_coeff'] -['path_tpc']['grades'][736]['res_net'] -['path_tpc']['grades'][737]['offset'] +['path_tpc']['grades'][736]['res_net_meters'] +['path_tpc']['grades'][737]['offset_meters'] ['path_tpc']['grades'][737]['res_coeff'] -['path_tpc']['grades'][737]['res_net'] -['path_tpc']['grades'][738]['offset'] +['path_tpc']['grades'][737]['res_net_meters'] +['path_tpc']['grades'][738]['offset_meters'] ['path_tpc']['grades'][738]['res_coeff'] -['path_tpc']['grades'][738]['res_net'] -['path_tpc']['grades'][739]['offset'] +['path_tpc']['grades'][738]['res_net_meters'] +['path_tpc']['grades'][739]['offset_meters'] ['path_tpc']['grades'][739]['res_coeff'] -['path_tpc']['grades'][739]['res_net'] -['path_tpc']['grades'][740]['offset'] +['path_tpc']['grades'][739]['res_net_meters'] +['path_tpc']['grades'][740]['offset_meters'] ['path_tpc']['grades'][740]['res_coeff'] -['path_tpc']['grades'][740]['res_net'] -['path_tpc']['grades'][741]['offset'] +['path_tpc']['grades'][740]['res_net_meters'] +['path_tpc']['grades'][741]['offset_meters'] ['path_tpc']['grades'][741]['res_coeff'] -['path_tpc']['grades'][741]['res_net'] -['path_tpc']['grades'][742]['offset'] +['path_tpc']['grades'][741]['res_net_meters'] +['path_tpc']['grades'][742]['offset_meters'] ['path_tpc']['grades'][742]['res_coeff'] -['path_tpc']['grades'][742]['res_net'] -['path_tpc']['grades'][743]['offset'] +['path_tpc']['grades'][742]['res_net_meters'] +['path_tpc']['grades'][743]['offset_meters'] ['path_tpc']['grades'][743]['res_coeff'] -['path_tpc']['grades'][743]['res_net'] -['path_tpc']['grades'][744]['offset'] +['path_tpc']['grades'][743]['res_net_meters'] +['path_tpc']['grades'][744]['offset_meters'] ['path_tpc']['grades'][744]['res_coeff'] -['path_tpc']['grades'][744]['res_net'] -['path_tpc']['grades'][745]['offset'] +['path_tpc']['grades'][744]['res_net_meters'] +['path_tpc']['grades'][745]['offset_meters'] ['path_tpc']['grades'][745]['res_coeff'] -['path_tpc']['grades'][745]['res_net'] -['path_tpc']['grades'][746]['offset'] +['path_tpc']['grades'][745]['res_net_meters'] +['path_tpc']['grades'][746]['offset_meters'] ['path_tpc']['grades'][746]['res_coeff'] -['path_tpc']['grades'][746]['res_net'] -['path_tpc']['grades'][747]['offset'] +['path_tpc']['grades'][746]['res_net_meters'] +['path_tpc']['grades'][747]['offset_meters'] ['path_tpc']['grades'][747]['res_coeff'] -['path_tpc']['grades'][747]['res_net'] -['path_tpc']['grades'][748]['offset'] +['path_tpc']['grades'][747]['res_net_meters'] +['path_tpc']['grades'][748]['offset_meters'] ['path_tpc']['grades'][748]['res_coeff'] -['path_tpc']['grades'][748]['res_net'] -['path_tpc']['grades'][749]['offset'] +['path_tpc']['grades'][748]['res_net_meters'] +['path_tpc']['grades'][749]['offset_meters'] ['path_tpc']['grades'][749]['res_coeff'] -['path_tpc']['grades'][749]['res_net'] -['path_tpc']['grades'][750]['offset'] +['path_tpc']['grades'][749]['res_net_meters'] +['path_tpc']['grades'][750]['offset_meters'] ['path_tpc']['grades'][750]['res_coeff'] -['path_tpc']['grades'][750]['res_net'] -['path_tpc']['grades'][751]['offset'] +['path_tpc']['grades'][750]['res_net_meters'] +['path_tpc']['grades'][751]['offset_meters'] ['path_tpc']['grades'][751]['res_coeff'] -['path_tpc']['grades'][751]['res_net'] -['path_tpc']['grades'][752]['offset'] +['path_tpc']['grades'][751]['res_net_meters'] +['path_tpc']['grades'][752]['offset_meters'] ['path_tpc']['grades'][752]['res_coeff'] -['path_tpc']['grades'][752]['res_net'] -['path_tpc']['grades'][753]['offset'] +['path_tpc']['grades'][752]['res_net_meters'] +['path_tpc']['grades'][753]['offset_meters'] ['path_tpc']['grades'][753]['res_coeff'] -['path_tpc']['grades'][753]['res_net'] -['path_tpc']['grades'][754]['offset'] +['path_tpc']['grades'][753]['res_net_meters'] +['path_tpc']['grades'][754]['offset_meters'] ['path_tpc']['grades'][754]['res_coeff'] -['path_tpc']['grades'][754]['res_net'] -['path_tpc']['grades'][755]['offset'] +['path_tpc']['grades'][754]['res_net_meters'] +['path_tpc']['grades'][755]['offset_meters'] ['path_tpc']['grades'][755]['res_coeff'] -['path_tpc']['grades'][755]['res_net'] -['path_tpc']['grades'][756]['offset'] +['path_tpc']['grades'][755]['res_net_meters'] +['path_tpc']['grades'][756]['offset_meters'] ['path_tpc']['grades'][756]['res_coeff'] -['path_tpc']['grades'][756]['res_net'] -['path_tpc']['grades'][757]['offset'] +['path_tpc']['grades'][756]['res_net_meters'] +['path_tpc']['grades'][757]['offset_meters'] ['path_tpc']['grades'][757]['res_coeff'] -['path_tpc']['grades'][757]['res_net'] -['path_tpc']['grades'][758]['offset'] +['path_tpc']['grades'][757]['res_net_meters'] +['path_tpc']['grades'][758]['offset_meters'] ['path_tpc']['grades'][758]['res_coeff'] -['path_tpc']['grades'][758]['res_net'] -['path_tpc']['grades'][759]['offset'] +['path_tpc']['grades'][758]['res_net_meters'] +['path_tpc']['grades'][759]['offset_meters'] ['path_tpc']['grades'][759]['res_coeff'] -['path_tpc']['grades'][759]['res_net'] -['path_tpc']['grades'][760]['offset'] +['path_tpc']['grades'][759]['res_net_meters'] +['path_tpc']['grades'][760]['offset_meters'] ['path_tpc']['grades'][760]['res_coeff'] -['path_tpc']['grades'][760]['res_net'] -['path_tpc']['grades'][761]['offset'] +['path_tpc']['grades'][760]['res_net_meters'] +['path_tpc']['grades'][761]['offset_meters'] ['path_tpc']['grades'][761]['res_coeff'] -['path_tpc']['grades'][761]['res_net'] -['path_tpc']['grades'][762]['offset'] +['path_tpc']['grades'][761]['res_net_meters'] +['path_tpc']['grades'][762]['offset_meters'] ['path_tpc']['grades'][762]['res_coeff'] -['path_tpc']['grades'][762]['res_net'] -['path_tpc']['grades'][763]['offset'] +['path_tpc']['grades'][762]['res_net_meters'] +['path_tpc']['grades'][763]['offset_meters'] ['path_tpc']['grades'][763]['res_coeff'] -['path_tpc']['grades'][763]['res_net'] -['path_tpc']['grades'][764]['offset'] +['path_tpc']['grades'][763]['res_net_meters'] +['path_tpc']['grades'][764]['offset_meters'] ['path_tpc']['grades'][764]['res_coeff'] -['path_tpc']['grades'][764]['res_net'] -['path_tpc']['grades'][765]['offset'] +['path_tpc']['grades'][764]['res_net_meters'] +['path_tpc']['grades'][765]['offset_meters'] ['path_tpc']['grades'][765]['res_coeff'] -['path_tpc']['grades'][765]['res_net'] -['path_tpc']['grades'][766]['offset'] +['path_tpc']['grades'][765]['res_net_meters'] +['path_tpc']['grades'][766]['offset_meters'] ['path_tpc']['grades'][766]['res_coeff'] -['path_tpc']['grades'][766]['res_net'] -['path_tpc']['grades'][767]['offset'] +['path_tpc']['grades'][766]['res_net_meters'] +['path_tpc']['grades'][767]['offset_meters'] ['path_tpc']['grades'][767]['res_coeff'] -['path_tpc']['grades'][767]['res_net'] -['path_tpc']['grades'][768]['offset'] +['path_tpc']['grades'][767]['res_net_meters'] +['path_tpc']['grades'][768]['offset_meters'] ['path_tpc']['grades'][768]['res_coeff'] -['path_tpc']['grades'][768]['res_net'] -['path_tpc']['grades'][769]['offset'] +['path_tpc']['grades'][768]['res_net_meters'] +['path_tpc']['grades'][769]['offset_meters'] ['path_tpc']['grades'][769]['res_coeff'] -['path_tpc']['grades'][769]['res_net'] -['path_tpc']['grades'][770]['offset'] +['path_tpc']['grades'][769]['res_net_meters'] +['path_tpc']['grades'][770]['offset_meters'] ['path_tpc']['grades'][770]['res_coeff'] -['path_tpc']['grades'][770]['res_net'] -['path_tpc']['grades'][771]['offset'] +['path_tpc']['grades'][770]['res_net_meters'] +['path_tpc']['grades'][771]['offset_meters'] ['path_tpc']['grades'][771]['res_coeff'] -['path_tpc']['grades'][771]['res_net'] -['path_tpc']['grades'][772]['offset'] +['path_tpc']['grades'][771]['res_net_meters'] +['path_tpc']['grades'][772]['offset_meters'] ['path_tpc']['grades'][772]['res_coeff'] -['path_tpc']['grades'][772]['res_net'] -['path_tpc']['grades'][773]['offset'] +['path_tpc']['grades'][772]['res_net_meters'] +['path_tpc']['grades'][773]['offset_meters'] ['path_tpc']['grades'][773]['res_coeff'] -['path_tpc']['grades'][773]['res_net'] -['path_tpc']['grades'][774]['offset'] +['path_tpc']['grades'][773]['res_net_meters'] +['path_tpc']['grades'][774]['offset_meters'] ['path_tpc']['grades'][774]['res_coeff'] -['path_tpc']['grades'][774]['res_net'] -['path_tpc']['grades'][775]['offset'] +['path_tpc']['grades'][774]['res_net_meters'] +['path_tpc']['grades'][775]['offset_meters'] ['path_tpc']['grades'][775]['res_coeff'] -['path_tpc']['grades'][775]['res_net'] -['path_tpc']['grades'][776]['offset'] +['path_tpc']['grades'][775]['res_net_meters'] +['path_tpc']['grades'][776]['offset_meters'] ['path_tpc']['grades'][776]['res_coeff'] -['path_tpc']['grades'][776]['res_net'] -['path_tpc']['grades'][777]['offset'] +['path_tpc']['grades'][776]['res_net_meters'] +['path_tpc']['grades'][777]['offset_meters'] ['path_tpc']['grades'][777]['res_coeff'] -['path_tpc']['grades'][777]['res_net'] -['path_tpc']['grades'][778]['offset'] +['path_tpc']['grades'][777]['res_net_meters'] +['path_tpc']['grades'][778]['offset_meters'] ['path_tpc']['grades'][778]['res_coeff'] -['path_tpc']['grades'][778]['res_net'] -['path_tpc']['grades'][779]['offset'] +['path_tpc']['grades'][778]['res_net_meters'] +['path_tpc']['grades'][779]['offset_meters'] ['path_tpc']['grades'][779]['res_coeff'] -['path_tpc']['grades'][779]['res_net'] -['path_tpc']['grades'][780]['offset'] +['path_tpc']['grades'][779]['res_net_meters'] +['path_tpc']['grades'][780]['offset_meters'] ['path_tpc']['grades'][780]['res_coeff'] -['path_tpc']['grades'][780]['res_net'] -['path_tpc']['grades'][781]['offset'] +['path_tpc']['grades'][780]['res_net_meters'] +['path_tpc']['grades'][781]['offset_meters'] ['path_tpc']['grades'][781]['res_coeff'] -['path_tpc']['grades'][781]['res_net'] -['path_tpc']['grades'][782]['offset'] +['path_tpc']['grades'][781]['res_net_meters'] +['path_tpc']['grades'][782]['offset_meters'] ['path_tpc']['grades'][782]['res_coeff'] -['path_tpc']['grades'][782]['res_net'] -['path_tpc']['grades'][783]['offset'] +['path_tpc']['grades'][782]['res_net_meters'] +['path_tpc']['grades'][783]['offset_meters'] ['path_tpc']['grades'][783]['res_coeff'] -['path_tpc']['grades'][783]['res_net'] -['path_tpc']['grades'][784]['offset'] +['path_tpc']['grades'][783]['res_net_meters'] +['path_tpc']['grades'][784]['offset_meters'] ['path_tpc']['grades'][784]['res_coeff'] -['path_tpc']['grades'][784]['res_net'] -['path_tpc']['grades'][785]['offset'] +['path_tpc']['grades'][784]['res_net_meters'] +['path_tpc']['grades'][785]['offset_meters'] ['path_tpc']['grades'][785]['res_coeff'] -['path_tpc']['grades'][785]['res_net'] -['path_tpc']['grades'][786]['offset'] +['path_tpc']['grades'][785]['res_net_meters'] +['path_tpc']['grades'][786]['offset_meters'] ['path_tpc']['grades'][786]['res_coeff'] -['path_tpc']['grades'][786]['res_net'] -['path_tpc']['curves'][0]['offset'] +['path_tpc']['grades'][786]['res_net_meters'] +['path_tpc']['curves'][0]['offset_meters'] ['path_tpc']['curves'][0]['res_coeff'] -['path_tpc']['curves'][0]['res_net'] -['path_tpc']['curves'][1]['offset'] +['path_tpc']['curves'][0]['res_net_meters'] +['path_tpc']['curves'][1]['offset_meters'] ['path_tpc']['curves'][1]['res_coeff'] -['path_tpc']['curves'][1]['res_net'] -['path_tpc']['curves'][2]['offset'] +['path_tpc']['curves'][1]['res_net_meters'] +['path_tpc']['curves'][2]['offset_meters'] ['path_tpc']['curves'][2]['res_coeff'] -['path_tpc']['curves'][2]['res_net'] -['path_tpc']['curves'][3]['offset'] +['path_tpc']['curves'][2]['res_net_meters'] +['path_tpc']['curves'][3]['offset_meters'] ['path_tpc']['curves'][3]['res_coeff'] -['path_tpc']['curves'][3]['res_net'] -['path_tpc']['curves'][4]['offset'] +['path_tpc']['curves'][3]['res_net_meters'] +['path_tpc']['curves'][4]['offset_meters'] ['path_tpc']['curves'][4]['res_coeff'] -['path_tpc']['curves'][4]['res_net'] -['path_tpc']['curves'][5]['offset'] +['path_tpc']['curves'][4]['res_net_meters'] +['path_tpc']['curves'][5]['offset_meters'] ['path_tpc']['curves'][5]['res_coeff'] -['path_tpc']['curves'][5]['res_net'] -['path_tpc']['curves'][6]['offset'] +['path_tpc']['curves'][5]['res_net_meters'] +['path_tpc']['curves'][6]['offset_meters'] ['path_tpc']['curves'][6]['res_coeff'] -['path_tpc']['curves'][6]['res_net'] -['path_tpc']['curves'][7]['offset'] +['path_tpc']['curves'][6]['res_net_meters'] +['path_tpc']['curves'][7]['offset_meters'] ['path_tpc']['curves'][7]['res_coeff'] -['path_tpc']['curves'][7]['res_net'] -['path_tpc']['curves'][8]['offset'] +['path_tpc']['curves'][7]['res_net_meters'] +['path_tpc']['curves'][8]['offset_meters'] ['path_tpc']['curves'][8]['res_coeff'] -['path_tpc']['curves'][8]['res_net'] -['path_tpc']['curves'][9]['offset'] +['path_tpc']['curves'][8]['res_net_meters'] +['path_tpc']['curves'][9]['offset_meters'] ['path_tpc']['curves'][9]['res_coeff'] -['path_tpc']['curves'][9]['res_net'] -['path_tpc']['curves'][10]['offset'] +['path_tpc']['curves'][9]['res_net_meters'] +['path_tpc']['curves'][10]['offset_meters'] ['path_tpc']['curves'][10]['res_coeff'] -['path_tpc']['curves'][10]['res_net'] -['path_tpc']['curves'][11]['offset'] +['path_tpc']['curves'][10]['res_net_meters'] +['path_tpc']['curves'][11]['offset_meters'] ['path_tpc']['curves'][11]['res_coeff'] -['path_tpc']['curves'][11]['res_net'] -['path_tpc']['curves'][12]['offset'] +['path_tpc']['curves'][11]['res_net_meters'] +['path_tpc']['curves'][12]['offset_meters'] ['path_tpc']['curves'][12]['res_coeff'] -['path_tpc']['curves'][12]['res_net'] -['path_tpc']['curves'][13]['offset'] +['path_tpc']['curves'][12]['res_net_meters'] +['path_tpc']['curves'][13]['offset_meters'] ['path_tpc']['curves'][13]['res_coeff'] -['path_tpc']['curves'][13]['res_net'] -['path_tpc']['curves'][14]['offset'] +['path_tpc']['curves'][13]['res_net_meters'] +['path_tpc']['curves'][14]['offset_meters'] ['path_tpc']['curves'][14]['res_coeff'] -['path_tpc']['curves'][14]['res_net'] -['path_tpc']['curves'][15]['offset'] +['path_tpc']['curves'][14]['res_net_meters'] +['path_tpc']['curves'][15]['offset_meters'] ['path_tpc']['curves'][15]['res_coeff'] -['path_tpc']['curves'][15]['res_net'] -['path_tpc']['curves'][16]['offset'] +['path_tpc']['curves'][15]['res_net_meters'] +['path_tpc']['curves'][16]['offset_meters'] ['path_tpc']['curves'][16]['res_coeff'] -['path_tpc']['curves'][16]['res_net'] -['path_tpc']['curves'][17]['offset'] +['path_tpc']['curves'][16]['res_net_meters'] +['path_tpc']['curves'][17]['offset_meters'] ['path_tpc']['curves'][17]['res_coeff'] -['path_tpc']['curves'][17]['res_net'] -['path_tpc']['curves'][18]['offset'] +['path_tpc']['curves'][17]['res_net_meters'] +['path_tpc']['curves'][18]['offset_meters'] ['path_tpc']['curves'][18]['res_coeff'] -['path_tpc']['curves'][18]['res_net'] -['path_tpc']['curves'][19]['offset'] +['path_tpc']['curves'][18]['res_net_meters'] +['path_tpc']['curves'][19]['offset_meters'] ['path_tpc']['curves'][19]['res_coeff'] -['path_tpc']['curves'][19]['res_net'] -['path_tpc']['curves'][20]['offset'] +['path_tpc']['curves'][19]['res_net_meters'] +['path_tpc']['curves'][20]['offset_meters'] ['path_tpc']['curves'][20]['res_coeff'] -['path_tpc']['curves'][20]['res_net'] -['path_tpc']['curves'][21]['offset'] +['path_tpc']['curves'][20]['res_net_meters'] +['path_tpc']['curves'][21]['offset_meters'] ['path_tpc']['curves'][21]['res_coeff'] -['path_tpc']['curves'][21]['res_net'] -['path_tpc']['curves'][22]['offset'] +['path_tpc']['curves'][21]['res_net_meters'] +['path_tpc']['curves'][22]['offset_meters'] ['path_tpc']['curves'][22]['res_coeff'] -['path_tpc']['curves'][22]['res_net'] -['path_tpc']['curves'][23]['offset'] +['path_tpc']['curves'][22]['res_net_meters'] +['path_tpc']['curves'][23]['offset_meters'] ['path_tpc']['curves'][23]['res_coeff'] -['path_tpc']['curves'][23]['res_net'] -['path_tpc']['curves'][24]['offset'] +['path_tpc']['curves'][23]['res_net_meters'] +['path_tpc']['curves'][24]['offset_meters'] ['path_tpc']['curves'][24]['res_coeff'] -['path_tpc']['curves'][24]['res_net'] -['path_tpc']['curves'][25]['offset'] +['path_tpc']['curves'][24]['res_net_meters'] +['path_tpc']['curves'][25]['offset_meters'] ['path_tpc']['curves'][25]['res_coeff'] -['path_tpc']['curves'][25]['res_net'] -['path_tpc']['curves'][26]['offset'] +['path_tpc']['curves'][25]['res_net_meters'] +['path_tpc']['curves'][26]['offset_meters'] ['path_tpc']['curves'][26]['res_coeff'] -['path_tpc']['curves'][26]['res_net'] -['path_tpc']['curves'][27]['offset'] +['path_tpc']['curves'][26]['res_net_meters'] +['path_tpc']['curves'][27]['offset_meters'] ['path_tpc']['curves'][27]['res_coeff'] -['path_tpc']['curves'][27]['res_net'] -['path_tpc']['curves'][28]['offset'] +['path_tpc']['curves'][27]['res_net_meters'] +['path_tpc']['curves'][28]['offset_meters'] ['path_tpc']['curves'][28]['res_coeff'] -['path_tpc']['curves'][28]['res_net'] -['path_tpc']['curves'][29]['offset'] +['path_tpc']['curves'][28]['res_net_meters'] +['path_tpc']['curves'][29]['offset_meters'] ['path_tpc']['curves'][29]['res_coeff'] -['path_tpc']['curves'][29]['res_net'] -['path_tpc']['curves'][30]['offset'] +['path_tpc']['curves'][29]['res_net_meters'] +['path_tpc']['curves'][30]['offset_meters'] ['path_tpc']['curves'][30]['res_coeff'] -['path_tpc']['curves'][30]['res_net'] -['path_tpc']['curves'][31]['offset'] +['path_tpc']['curves'][30]['res_net_meters'] +['path_tpc']['curves'][31]['offset_meters'] ['path_tpc']['curves'][31]['res_coeff'] -['path_tpc']['curves'][31]['res_net'] -['path_tpc']['curves'][32]['offset'] +['path_tpc']['curves'][31]['res_net_meters'] +['path_tpc']['curves'][32]['offset_meters'] ['path_tpc']['curves'][32]['res_coeff'] -['path_tpc']['curves'][32]['res_net'] -['path_tpc']['curves'][33]['offset'] +['path_tpc']['curves'][32]['res_net_meters'] +['path_tpc']['curves'][33]['offset_meters'] ['path_tpc']['curves'][33]['res_coeff'] -['path_tpc']['curves'][33]['res_net'] -['path_tpc']['curves'][34]['offset'] +['path_tpc']['curves'][33]['res_net_meters'] +['path_tpc']['curves'][34]['offset_meters'] ['path_tpc']['curves'][34]['res_coeff'] -['path_tpc']['curves'][34]['res_net'] -['path_tpc']['curves'][35]['offset'] +['path_tpc']['curves'][34]['res_net_meters'] +['path_tpc']['curves'][35]['offset_meters'] ['path_tpc']['curves'][35]['res_coeff'] -['path_tpc']['curves'][35]['res_net'] -['path_tpc']['curves'][36]['offset'] +['path_tpc']['curves'][35]['res_net_meters'] +['path_tpc']['curves'][36]['offset_meters'] ['path_tpc']['curves'][36]['res_coeff'] -['path_tpc']['curves'][36]['res_net'] -['path_tpc']['curves'][37]['offset'] +['path_tpc']['curves'][36]['res_net_meters'] +['path_tpc']['curves'][37]['offset_meters'] ['path_tpc']['curves'][37]['res_coeff'] -['path_tpc']['curves'][37]['res_net'] -['path_tpc']['curves'][38]['offset'] +['path_tpc']['curves'][37]['res_net_meters'] +['path_tpc']['curves'][38]['offset_meters'] ['path_tpc']['curves'][38]['res_coeff'] -['path_tpc']['curves'][38]['res_net'] -['path_tpc']['curves'][39]['offset'] +['path_tpc']['curves'][38]['res_net_meters'] +['path_tpc']['curves'][39]['offset_meters'] ['path_tpc']['curves'][39]['res_coeff'] -['path_tpc']['curves'][39]['res_net'] -['path_tpc']['curves'][40]['offset'] +['path_tpc']['curves'][39]['res_net_meters'] +['path_tpc']['curves'][40]['offset_meters'] ['path_tpc']['curves'][40]['res_coeff'] -['path_tpc']['curves'][40]['res_net'] -['path_tpc']['curves'][41]['offset'] +['path_tpc']['curves'][40]['res_net_meters'] +['path_tpc']['curves'][41]['offset_meters'] ['path_tpc']['curves'][41]['res_coeff'] -['path_tpc']['curves'][41]['res_net'] -['path_tpc']['curves'][42]['offset'] +['path_tpc']['curves'][41]['res_net_meters'] +['path_tpc']['curves'][42]['offset_meters'] ['path_tpc']['curves'][42]['res_coeff'] -['path_tpc']['curves'][42]['res_net'] -['path_tpc']['curves'][43]['offset'] +['path_tpc']['curves'][42]['res_net_meters'] +['path_tpc']['curves'][43]['offset_meters'] ['path_tpc']['curves'][43]['res_coeff'] -['path_tpc']['curves'][43]['res_net'] -['path_tpc']['curves'][44]['offset'] +['path_tpc']['curves'][43]['res_net_meters'] +['path_tpc']['curves'][44]['offset_meters'] ['path_tpc']['curves'][44]['res_coeff'] -['path_tpc']['curves'][44]['res_net'] -['path_tpc']['curves'][45]['offset'] +['path_tpc']['curves'][44]['res_net_meters'] +['path_tpc']['curves'][45]['offset_meters'] ['path_tpc']['curves'][45]['res_coeff'] -['path_tpc']['curves'][45]['res_net'] -['path_tpc']['curves'][46]['offset'] +['path_tpc']['curves'][45]['res_net_meters'] +['path_tpc']['curves'][46]['offset_meters'] ['path_tpc']['curves'][46]['res_coeff'] -['path_tpc']['curves'][46]['res_net'] -['path_tpc']['curves'][47]['offset'] +['path_tpc']['curves'][46]['res_net_meters'] +['path_tpc']['curves'][47]['offset_meters'] ['path_tpc']['curves'][47]['res_coeff'] -['path_tpc']['curves'][47]['res_net'] -['path_tpc']['curves'][48]['offset'] +['path_tpc']['curves'][47]['res_net_meters'] +['path_tpc']['curves'][48]['offset_meters'] ['path_tpc']['curves'][48]['res_coeff'] -['path_tpc']['curves'][48]['res_net'] -['path_tpc']['curves'][49]['offset'] +['path_tpc']['curves'][48]['res_net_meters'] +['path_tpc']['curves'][49]['offset_meters'] ['path_tpc']['curves'][49]['res_coeff'] -['path_tpc']['curves'][49]['res_net'] -['path_tpc']['curves'][50]['offset'] +['path_tpc']['curves'][49]['res_net_meters'] +['path_tpc']['curves'][50]['offset_meters'] ['path_tpc']['curves'][50]['res_coeff'] -['path_tpc']['curves'][50]['res_net'] -['path_tpc']['curves'][51]['offset'] +['path_tpc']['curves'][50]['res_net_meters'] +['path_tpc']['curves'][51]['offset_meters'] ['path_tpc']['curves'][51]['res_coeff'] -['path_tpc']['curves'][51]['res_net'] -['path_tpc']['curves'][52]['offset'] +['path_tpc']['curves'][51]['res_net_meters'] +['path_tpc']['curves'][52]['offset_meters'] ['path_tpc']['curves'][52]['res_coeff'] -['path_tpc']['curves'][52]['res_net'] -['path_tpc']['curves'][53]['offset'] +['path_tpc']['curves'][52]['res_net_meters'] +['path_tpc']['curves'][53]['offset_meters'] ['path_tpc']['curves'][53]['res_coeff'] -['path_tpc']['curves'][53]['res_net'] -['path_tpc']['curves'][54]['offset'] +['path_tpc']['curves'][53]['res_net_meters'] +['path_tpc']['curves'][54]['offset_meters'] ['path_tpc']['curves'][54]['res_coeff'] -['path_tpc']['curves'][54]['res_net'] -['path_tpc']['curves'][55]['offset'] +['path_tpc']['curves'][54]['res_net_meters'] +['path_tpc']['curves'][55]['offset_meters'] ['path_tpc']['curves'][55]['res_coeff'] -['path_tpc']['curves'][55]['res_net'] -['path_tpc']['curves'][56]['offset'] +['path_tpc']['curves'][55]['res_net_meters'] +['path_tpc']['curves'][56]['offset_meters'] ['path_tpc']['curves'][56]['res_coeff'] -['path_tpc']['curves'][56]['res_net'] -['path_tpc']['curves'][57]['offset'] +['path_tpc']['curves'][56]['res_net_meters'] +['path_tpc']['curves'][57]['offset_meters'] ['path_tpc']['curves'][57]['res_coeff'] -['path_tpc']['curves'][57]['res_net'] -['path_tpc']['curves'][58]['offset'] +['path_tpc']['curves'][57]['res_net_meters'] +['path_tpc']['curves'][58]['offset_meters'] ['path_tpc']['curves'][58]['res_coeff'] -['path_tpc']['curves'][58]['res_net'] -['path_tpc']['curves'][59]['offset'] +['path_tpc']['curves'][58]['res_net_meters'] +['path_tpc']['curves'][59]['offset_meters'] ['path_tpc']['curves'][59]['res_coeff'] -['path_tpc']['curves'][59]['res_net'] -['path_tpc']['curves'][60]['offset'] +['path_tpc']['curves'][59]['res_net_meters'] +['path_tpc']['curves'][60]['offset_meters'] ['path_tpc']['curves'][60]['res_coeff'] -['path_tpc']['curves'][60]['res_net'] -['path_tpc']['curves'][61]['offset'] +['path_tpc']['curves'][60]['res_net_meters'] +['path_tpc']['curves'][61]['offset_meters'] ['path_tpc']['curves'][61]['res_coeff'] -['path_tpc']['curves'][61]['res_net'] -['path_tpc']['curves'][62]['offset'] +['path_tpc']['curves'][61]['res_net_meters'] +['path_tpc']['curves'][62]['offset_meters'] ['path_tpc']['curves'][62]['res_coeff'] -['path_tpc']['curves'][62]['res_net'] -['path_tpc']['curves'][63]['offset'] +['path_tpc']['curves'][62]['res_net_meters'] +['path_tpc']['curves'][63]['offset_meters'] ['path_tpc']['curves'][63]['res_coeff'] -['path_tpc']['curves'][63]['res_net'] -['path_tpc']['curves'][64]['offset'] +['path_tpc']['curves'][63]['res_net_meters'] +['path_tpc']['curves'][64]['offset_meters'] ['path_tpc']['curves'][64]['res_coeff'] -['path_tpc']['curves'][64]['res_net'] -['path_tpc']['curves'][65]['offset'] +['path_tpc']['curves'][64]['res_net_meters'] +['path_tpc']['curves'][65]['offset_meters'] ['path_tpc']['curves'][65]['res_coeff'] -['path_tpc']['curves'][65]['res_net'] -['path_tpc']['curves'][66]['offset'] +['path_tpc']['curves'][65]['res_net_meters'] +['path_tpc']['curves'][66]['offset_meters'] ['path_tpc']['curves'][66]['res_coeff'] -['path_tpc']['curves'][66]['res_net'] -['path_tpc']['curves'][67]['offset'] +['path_tpc']['curves'][66]['res_net_meters'] +['path_tpc']['curves'][67]['offset_meters'] ['path_tpc']['curves'][67]['res_coeff'] -['path_tpc']['curves'][67]['res_net'] -['path_tpc']['curves'][68]['offset'] +['path_tpc']['curves'][67]['res_net_meters'] +['path_tpc']['curves'][68]['offset_meters'] ['path_tpc']['curves'][68]['res_coeff'] -['path_tpc']['curves'][68]['res_net'] -['path_tpc']['curves'][69]['offset'] +['path_tpc']['curves'][68]['res_net_meters'] +['path_tpc']['curves'][69]['offset_meters'] ['path_tpc']['curves'][69]['res_coeff'] -['path_tpc']['curves'][69]['res_net'] -['path_tpc']['curves'][70]['offset'] +['path_tpc']['curves'][69]['res_net_meters'] +['path_tpc']['curves'][70]['offset_meters'] ['path_tpc']['curves'][70]['res_coeff'] -['path_tpc']['curves'][70]['res_net'] -['path_tpc']['curves'][71]['offset'] +['path_tpc']['curves'][70]['res_net_meters'] +['path_tpc']['curves'][71]['offset_meters'] ['path_tpc']['curves'][71]['res_coeff'] -['path_tpc']['curves'][71]['res_net'] -['path_tpc']['curves'][72]['offset'] +['path_tpc']['curves'][71]['res_net_meters'] +['path_tpc']['curves'][72]['offset_meters'] ['path_tpc']['curves'][72]['res_coeff'] -['path_tpc']['curves'][72]['res_net'] -['path_tpc']['curves'][73]['offset'] +['path_tpc']['curves'][72]['res_net_meters'] +['path_tpc']['curves'][73]['offset_meters'] ['path_tpc']['curves'][73]['res_coeff'] -['path_tpc']['curves'][73]['res_net'] -['path_tpc']['curves'][74]['offset'] +['path_tpc']['curves'][73]['res_net_meters'] +['path_tpc']['curves'][74]['offset_meters'] ['path_tpc']['curves'][74]['res_coeff'] -['path_tpc']['curves'][74]['res_net'] -['path_tpc']['curves'][75]['offset'] +['path_tpc']['curves'][74]['res_net_meters'] +['path_tpc']['curves'][75]['offset_meters'] ['path_tpc']['curves'][75]['res_coeff'] -['path_tpc']['curves'][75]['res_net'] -['path_tpc']['curves'][76]['offset'] +['path_tpc']['curves'][75]['res_net_meters'] +['path_tpc']['curves'][76]['offset_meters'] ['path_tpc']['curves'][76]['res_coeff'] -['path_tpc']['curves'][76]['res_net'] -['path_tpc']['curves'][77]['offset'] +['path_tpc']['curves'][76]['res_net_meters'] +['path_tpc']['curves'][77]['offset_meters'] ['path_tpc']['curves'][77]['res_coeff'] -['path_tpc']['curves'][77]['res_net'] -['path_tpc']['curves'][78]['offset'] +['path_tpc']['curves'][77]['res_net_meters'] +['path_tpc']['curves'][78]['offset_meters'] ['path_tpc']['curves'][78]['res_coeff'] -['path_tpc']['curves'][78]['res_net'] -['path_tpc']['curves'][79]['offset'] +['path_tpc']['curves'][78]['res_net_meters'] +['path_tpc']['curves'][79]['offset_meters'] ['path_tpc']['curves'][79]['res_coeff'] -['path_tpc']['curves'][79]['res_net'] -['path_tpc']['curves'][80]['offset'] +['path_tpc']['curves'][79]['res_net_meters'] +['path_tpc']['curves'][80]['offset_meters'] ['path_tpc']['curves'][80]['res_coeff'] -['path_tpc']['curves'][80]['res_net'] -['path_tpc']['curves'][81]['offset'] +['path_tpc']['curves'][80]['res_net_meters'] +['path_tpc']['curves'][81]['offset_meters'] ['path_tpc']['curves'][81]['res_coeff'] -['path_tpc']['curves'][81]['res_net'] -['path_tpc']['curves'][82]['offset'] +['path_tpc']['curves'][81]['res_net_meters'] +['path_tpc']['curves'][82]['offset_meters'] ['path_tpc']['curves'][82]['res_coeff'] -['path_tpc']['curves'][82]['res_net'] -['path_tpc']['curves'][83]['offset'] +['path_tpc']['curves'][82]['res_net_meters'] +['path_tpc']['curves'][83]['offset_meters'] ['path_tpc']['curves'][83]['res_coeff'] -['path_tpc']['curves'][83]['res_net'] -['path_tpc']['curves'][84]['offset'] +['path_tpc']['curves'][83]['res_net_meters'] +['path_tpc']['curves'][84]['offset_meters'] ['path_tpc']['curves'][84]['res_coeff'] -['path_tpc']['curves'][84]['res_net'] -['path_tpc']['curves'][85]['offset'] +['path_tpc']['curves'][84]['res_net_meters'] +['path_tpc']['curves'][85]['offset_meters'] ['path_tpc']['curves'][85]['res_coeff'] -['path_tpc']['curves'][85]['res_net'] -['path_tpc']['curves'][86]['offset'] +['path_tpc']['curves'][85]['res_net_meters'] +['path_tpc']['curves'][86]['offset_meters'] ['path_tpc']['curves'][86]['res_coeff'] -['path_tpc']['curves'][86]['res_net'] -['path_tpc']['curves'][87]['offset'] +['path_tpc']['curves'][86]['res_net_meters'] +['path_tpc']['curves'][87]['offset_meters'] ['path_tpc']['curves'][87]['res_coeff'] -['path_tpc']['curves'][87]['res_net'] -['path_tpc']['curves'][88]['offset'] +['path_tpc']['curves'][87]['res_net_meters'] +['path_tpc']['curves'][88]['offset_meters'] ['path_tpc']['curves'][88]['res_coeff'] -['path_tpc']['curves'][88]['res_net'] -['path_tpc']['curves'][89]['offset'] +['path_tpc']['curves'][88]['res_net_meters'] +['path_tpc']['curves'][89]['offset_meters'] ['path_tpc']['curves'][89]['res_coeff'] -['path_tpc']['curves'][89]['res_net'] -['path_tpc']['curves'][90]['offset'] +['path_tpc']['curves'][89]['res_net_meters'] +['path_tpc']['curves'][90]['offset_meters'] ['path_tpc']['curves'][90]['res_coeff'] -['path_tpc']['curves'][90]['res_net'] -['path_tpc']['curves'][91]['offset'] +['path_tpc']['curves'][90]['res_net_meters'] +['path_tpc']['curves'][91]['offset_meters'] ['path_tpc']['curves'][91]['res_coeff'] -['path_tpc']['curves'][91]['res_net'] -['path_tpc']['curves'][92]['offset'] +['path_tpc']['curves'][91]['res_net_meters'] +['path_tpc']['curves'][92]['offset_meters'] ['path_tpc']['curves'][92]['res_coeff'] -['path_tpc']['curves'][92]['res_net'] -['path_tpc']['curves'][93]['offset'] +['path_tpc']['curves'][92]['res_net_meters'] +['path_tpc']['curves'][93]['offset_meters'] ['path_tpc']['curves'][93]['res_coeff'] -['path_tpc']['curves'][93]['res_net'] -['path_tpc']['curves'][94]['offset'] +['path_tpc']['curves'][93]['res_net_meters'] +['path_tpc']['curves'][94]['offset_meters'] ['path_tpc']['curves'][94]['res_coeff'] -['path_tpc']['curves'][94]['res_net'] -['path_tpc']['curves'][95]['offset'] +['path_tpc']['curves'][94]['res_net_meters'] +['path_tpc']['curves'][95]['offset_meters'] ['path_tpc']['curves'][95]['res_coeff'] -['path_tpc']['curves'][95]['res_net'] -['path_tpc']['curves'][96]['offset'] +['path_tpc']['curves'][95]['res_net_meters'] +['path_tpc']['curves'][96]['offset_meters'] ['path_tpc']['curves'][96]['res_coeff'] -['path_tpc']['curves'][96]['res_net'] -['path_tpc']['curves'][97]['offset'] +['path_tpc']['curves'][96]['res_net_meters'] +['path_tpc']['curves'][97]['offset_meters'] ['path_tpc']['curves'][97]['res_coeff'] -['path_tpc']['curves'][97]['res_net'] -['path_tpc']['curves'][98]['offset'] +['path_tpc']['curves'][97]['res_net_meters'] +['path_tpc']['curves'][98]['offset_meters'] ['path_tpc']['curves'][98]['res_coeff'] -['path_tpc']['curves'][98]['res_net'] -['path_tpc']['curves'][99]['offset'] +['path_tpc']['curves'][98]['res_net_meters'] +['path_tpc']['curves'][99]['offset_meters'] ['path_tpc']['curves'][99]['res_coeff'] -['path_tpc']['curves'][99]['res_net'] -['path_tpc']['curves'][100]['offset'] +['path_tpc']['curves'][99]['res_net_meters'] +['path_tpc']['curves'][100]['offset_meters'] ['path_tpc']['curves'][100]['res_coeff'] -['path_tpc']['curves'][100]['res_net'] -['path_tpc']['curves'][101]['offset'] +['path_tpc']['curves'][100]['res_net_meters'] +['path_tpc']['curves'][101]['offset_meters'] ['path_tpc']['curves'][101]['res_coeff'] -['path_tpc']['curves'][101]['res_net'] -['path_tpc']['curves'][102]['offset'] +['path_tpc']['curves'][101]['res_net_meters'] +['path_tpc']['curves'][102]['offset_meters'] ['path_tpc']['curves'][102]['res_coeff'] -['path_tpc']['curves'][102]['res_net'] -['path_tpc']['curves'][103]['offset'] +['path_tpc']['curves'][102]['res_net_meters'] +['path_tpc']['curves'][103]['offset_meters'] ['path_tpc']['curves'][103]['res_coeff'] -['path_tpc']['curves'][103]['res_net'] -['path_tpc']['curves'][104]['offset'] +['path_tpc']['curves'][103]['res_net_meters'] +['path_tpc']['curves'][104]['offset_meters'] ['path_tpc']['curves'][104]['res_coeff'] -['path_tpc']['curves'][104]['res_net'] -['path_tpc']['curves'][105]['offset'] +['path_tpc']['curves'][104]['res_net_meters'] +['path_tpc']['curves'][105]['offset_meters'] ['path_tpc']['curves'][105]['res_coeff'] -['path_tpc']['curves'][105]['res_net'] -['path_tpc']['curves'][106]['offset'] +['path_tpc']['curves'][105]['res_net_meters'] +['path_tpc']['curves'][106]['offset_meters'] ['path_tpc']['curves'][106]['res_coeff'] -['path_tpc']['curves'][106]['res_net'] -['path_tpc']['curves'][107]['offset'] +['path_tpc']['curves'][106]['res_net_meters'] +['path_tpc']['curves'][107]['offset_meters'] ['path_tpc']['curves'][107]['res_coeff'] -['path_tpc']['curves'][107]['res_net'] -['path_tpc']['curves'][108]['offset'] +['path_tpc']['curves'][107]['res_net_meters'] +['path_tpc']['curves'][108]['offset_meters'] ['path_tpc']['curves'][108]['res_coeff'] -['path_tpc']['curves'][108]['res_net'] -['path_tpc']['curves'][109]['offset'] +['path_tpc']['curves'][108]['res_net_meters'] +['path_tpc']['curves'][109]['offset_meters'] ['path_tpc']['curves'][109]['res_coeff'] -['path_tpc']['curves'][109]['res_net'] -['path_tpc']['curves'][110]['offset'] +['path_tpc']['curves'][109]['res_net_meters'] +['path_tpc']['curves'][110]['offset_meters'] ['path_tpc']['curves'][110]['res_coeff'] -['path_tpc']['curves'][110]['res_net'] -['path_tpc']['curves'][111]['offset'] +['path_tpc']['curves'][110]['res_net_meters'] +['path_tpc']['curves'][111]['offset_meters'] ['path_tpc']['curves'][111]['res_coeff'] -['path_tpc']['curves'][111]['res_net'] -['path_tpc']['curves'][112]['offset'] +['path_tpc']['curves'][111]['res_net_meters'] +['path_tpc']['curves'][112]['offset_meters'] ['path_tpc']['curves'][112]['res_coeff'] -['path_tpc']['curves'][112]['res_net'] -['path_tpc']['curves'][113]['offset'] +['path_tpc']['curves'][112]['res_net_meters'] +['path_tpc']['curves'][113]['offset_meters'] ['path_tpc']['curves'][113]['res_coeff'] -['path_tpc']['curves'][113]['res_net'] -['path_tpc']['curves'][114]['offset'] +['path_tpc']['curves'][113]['res_net_meters'] +['path_tpc']['curves'][114]['offset_meters'] ['path_tpc']['curves'][114]['res_coeff'] -['path_tpc']['curves'][114]['res_net'] -['path_tpc']['curves'][115]['offset'] +['path_tpc']['curves'][114]['res_net_meters'] +['path_tpc']['curves'][115]['offset_meters'] ['path_tpc']['curves'][115]['res_coeff'] -['path_tpc']['curves'][115]['res_net'] -['path_tpc']['curves'][116]['offset'] +['path_tpc']['curves'][115]['res_net_meters'] +['path_tpc']['curves'][116]['offset_meters'] ['path_tpc']['curves'][116]['res_coeff'] -['path_tpc']['curves'][116]['res_net'] -['path_tpc']['curves'][117]['offset'] +['path_tpc']['curves'][116]['res_net_meters'] +['path_tpc']['curves'][117]['offset_meters'] ['path_tpc']['curves'][117]['res_coeff'] -['path_tpc']['curves'][117]['res_net'] -['path_tpc']['curves'][118]['offset'] +['path_tpc']['curves'][117]['res_net_meters'] +['path_tpc']['curves'][118]['offset_meters'] ['path_tpc']['curves'][118]['res_coeff'] -['path_tpc']['curves'][118]['res_net'] -['path_tpc']['curves'][119]['offset'] +['path_tpc']['curves'][118]['res_net_meters'] +['path_tpc']['curves'][119]['offset_meters'] ['path_tpc']['curves'][119]['res_coeff'] -['path_tpc']['curves'][119]['res_net'] -['path_tpc']['curves'][120]['offset'] +['path_tpc']['curves'][119]['res_net_meters'] +['path_tpc']['curves'][120]['offset_meters'] ['path_tpc']['curves'][120]['res_coeff'] -['path_tpc']['curves'][120]['res_net'] -['path_tpc']['curves'][121]['offset'] +['path_tpc']['curves'][120]['res_net_meters'] +['path_tpc']['curves'][121]['offset_meters'] ['path_tpc']['curves'][121]['res_coeff'] -['path_tpc']['curves'][121]['res_net'] -['path_tpc']['curves'][122]['offset'] +['path_tpc']['curves'][121]['res_net_meters'] +['path_tpc']['curves'][122]['offset_meters'] ['path_tpc']['curves'][122]['res_coeff'] -['path_tpc']['curves'][122]['res_net'] -['path_tpc']['curves'][123]['offset'] +['path_tpc']['curves'][122]['res_net_meters'] +['path_tpc']['curves'][123]['offset_meters'] ['path_tpc']['curves'][123]['res_coeff'] -['path_tpc']['curves'][123]['res_net'] -['path_tpc']['curves'][124]['offset'] +['path_tpc']['curves'][123]['res_net_meters'] +['path_tpc']['curves'][124]['offset_meters'] ['path_tpc']['curves'][124]['res_coeff'] -['path_tpc']['curves'][124]['res_net'] -['path_tpc']['curves'][125]['offset'] +['path_tpc']['curves'][124]['res_net_meters'] +['path_tpc']['curves'][125]['offset_meters'] ['path_tpc']['curves'][125]['res_coeff'] -['path_tpc']['curves'][125]['res_net'] -['path_tpc']['curves'][126]['offset'] +['path_tpc']['curves'][125]['res_net_meters'] +['path_tpc']['curves'][126]['offset_meters'] ['path_tpc']['curves'][126]['res_coeff'] -['path_tpc']['curves'][126]['res_net'] -['path_tpc']['curves'][127]['offset'] +['path_tpc']['curves'][126]['res_net_meters'] +['path_tpc']['curves'][127]['offset_meters'] ['path_tpc']['curves'][127]['res_coeff'] -['path_tpc']['curves'][127]['res_net'] -['path_tpc']['curves'][128]['offset'] +['path_tpc']['curves'][127]['res_net_meters'] +['path_tpc']['curves'][128]['offset_meters'] ['path_tpc']['curves'][128]['res_coeff'] -['path_tpc']['curves'][128]['res_net'] -['path_tpc']['curves'][129]['offset'] +['path_tpc']['curves'][128]['res_net_meters'] +['path_tpc']['curves'][129]['offset_meters'] ['path_tpc']['curves'][129]['res_coeff'] -['path_tpc']['curves'][129]['res_net'] -['path_tpc']['curves'][130]['offset'] +['path_tpc']['curves'][129]['res_net_meters'] +['path_tpc']['curves'][130]['offset_meters'] ['path_tpc']['curves'][130]['res_coeff'] -['path_tpc']['curves'][130]['res_net'] -['path_tpc']['curves'][131]['offset'] +['path_tpc']['curves'][130]['res_net_meters'] +['path_tpc']['curves'][131]['offset_meters'] ['path_tpc']['curves'][131]['res_coeff'] -['path_tpc']['curves'][131]['res_net'] -['path_tpc']['curves'][132]['offset'] +['path_tpc']['curves'][131]['res_net_meters'] +['path_tpc']['curves'][132]['offset_meters'] ['path_tpc']['curves'][132]['res_coeff'] -['path_tpc']['curves'][132]['res_net'] -['path_tpc']['curves'][133]['offset'] +['path_tpc']['curves'][132]['res_net_meters'] +['path_tpc']['curves'][133]['offset_meters'] ['path_tpc']['curves'][133]['res_coeff'] -['path_tpc']['curves'][133]['res_net'] -['path_tpc']['curves'][134]['offset'] +['path_tpc']['curves'][133]['res_net_meters'] +['path_tpc']['curves'][134]['offset_meters'] ['path_tpc']['curves'][134]['res_coeff'] -['path_tpc']['curves'][134]['res_net'] -['path_tpc']['curves'][135]['offset'] +['path_tpc']['curves'][134]['res_net_meters'] +['path_tpc']['curves'][135]['offset_meters'] ['path_tpc']['curves'][135]['res_coeff'] -['path_tpc']['curves'][135]['res_net'] -['path_tpc']['curves'][136]['offset'] +['path_tpc']['curves'][135]['res_net_meters'] +['path_tpc']['curves'][136]['offset_meters'] ['path_tpc']['curves'][136]['res_coeff'] -['path_tpc']['curves'][136]['res_net'] -['path_tpc']['curves'][137]['offset'] +['path_tpc']['curves'][136]['res_net_meters'] +['path_tpc']['curves'][137]['offset_meters'] ['path_tpc']['curves'][137]['res_coeff'] -['path_tpc']['curves'][137]['res_net'] -['path_tpc']['curves'][138]['offset'] +['path_tpc']['curves'][137]['res_net_meters'] +['path_tpc']['curves'][138]['offset_meters'] ['path_tpc']['curves'][138]['res_coeff'] -['path_tpc']['curves'][138]['res_net'] -['path_tpc']['curves'][139]['offset'] +['path_tpc']['curves'][138]['res_net_meters'] +['path_tpc']['curves'][139]['offset_meters'] ['path_tpc']['curves'][139]['res_coeff'] -['path_tpc']['curves'][139]['res_net'] -['path_tpc']['curves'][140]['offset'] +['path_tpc']['curves'][139]['res_net_meters'] +['path_tpc']['curves'][140]['offset_meters'] ['path_tpc']['curves'][140]['res_coeff'] -['path_tpc']['curves'][140]['res_net'] -['path_tpc']['curves'][141]['offset'] +['path_tpc']['curves'][140]['res_net_meters'] +['path_tpc']['curves'][141]['offset_meters'] ['path_tpc']['curves'][141]['res_coeff'] -['path_tpc']['curves'][141]['res_net'] -['path_tpc']['curves'][142]['offset'] +['path_tpc']['curves'][141]['res_net_meters'] +['path_tpc']['curves'][142]['offset_meters'] ['path_tpc']['curves'][142]['res_coeff'] -['path_tpc']['curves'][142]['res_net'] -['path_tpc']['curves'][143]['offset'] +['path_tpc']['curves'][142]['res_net_meters'] +['path_tpc']['curves'][143]['offset_meters'] ['path_tpc']['curves'][143]['res_coeff'] -['path_tpc']['curves'][143]['res_net'] -['path_tpc']['curves'][144]['offset'] +['path_tpc']['curves'][143]['res_net_meters'] +['path_tpc']['curves'][144]['offset_meters'] ['path_tpc']['curves'][144]['res_coeff'] -['path_tpc']['curves'][144]['res_net'] -['path_tpc']['curves'][145]['offset'] +['path_tpc']['curves'][144]['res_net_meters'] +['path_tpc']['curves'][145]['offset_meters'] ['path_tpc']['curves'][145]['res_coeff'] -['path_tpc']['curves'][145]['res_net'] -['path_tpc']['curves'][146]['offset'] +['path_tpc']['curves'][145]['res_net_meters'] +['path_tpc']['curves'][146]['offset_meters'] ['path_tpc']['curves'][146]['res_coeff'] -['path_tpc']['curves'][146]['res_net'] -['path_tpc']['curves'][147]['offset'] +['path_tpc']['curves'][146]['res_net_meters'] +['path_tpc']['curves'][147]['offset_meters'] ['path_tpc']['curves'][147]['res_coeff'] -['path_tpc']['curves'][147]['res_net'] -['path_tpc']['curves'][148]['offset'] +['path_tpc']['curves'][147]['res_net_meters'] +['path_tpc']['curves'][148]['offset_meters'] ['path_tpc']['curves'][148]['res_coeff'] -['path_tpc']['curves'][148]['res_net'] -['path_tpc']['curves'][149]['offset'] +['path_tpc']['curves'][148]['res_net_meters'] +['path_tpc']['curves'][149]['offset_meters'] ['path_tpc']['curves'][149]['res_coeff'] -['path_tpc']['curves'][149]['res_net'] -['path_tpc']['curves'][150]['offset'] +['path_tpc']['curves'][149]['res_net_meters'] +['path_tpc']['curves'][150]['offset_meters'] ['path_tpc']['curves'][150]['res_coeff'] -['path_tpc']['curves'][150]['res_net'] -['path_tpc']['curves'][151]['offset'] +['path_tpc']['curves'][150]['res_net_meters'] +['path_tpc']['curves'][151]['offset_meters'] ['path_tpc']['curves'][151]['res_coeff'] -['path_tpc']['curves'][151]['res_net'] -['path_tpc']['curves'][152]['offset'] +['path_tpc']['curves'][151]['res_net_meters'] +['path_tpc']['curves'][152]['offset_meters'] ['path_tpc']['curves'][152]['res_coeff'] -['path_tpc']['curves'][152]['res_net'] -['path_tpc']['curves'][153]['offset'] +['path_tpc']['curves'][152]['res_net_meters'] +['path_tpc']['curves'][153]['offset_meters'] ['path_tpc']['curves'][153]['res_coeff'] -['path_tpc']['curves'][153]['res_net'] -['path_tpc']['curves'][154]['offset'] +['path_tpc']['curves'][153]['res_net_meters'] +['path_tpc']['curves'][154]['offset_meters'] ['path_tpc']['curves'][154]['res_coeff'] -['path_tpc']['curves'][154]['res_net'] -['path_tpc']['curves'][155]['offset'] +['path_tpc']['curves'][154]['res_net_meters'] +['path_tpc']['curves'][155]['offset_meters'] ['path_tpc']['curves'][155]['res_coeff'] -['path_tpc']['curves'][155]['res_net'] -['path_tpc']['curves'][156]['offset'] +['path_tpc']['curves'][155]['res_net_meters'] +['path_tpc']['curves'][156]['offset_meters'] ['path_tpc']['curves'][156]['res_coeff'] -['path_tpc']['curves'][156]['res_net'] -['path_tpc']['curves'][157]['offset'] +['path_tpc']['curves'][156]['res_net_meters'] +['path_tpc']['curves'][157]['offset_meters'] ['path_tpc']['curves'][157]['res_coeff'] -['path_tpc']['curves'][157]['res_net'] -['path_tpc']['curves'][158]['offset'] +['path_tpc']['curves'][157]['res_net_meters'] +['path_tpc']['curves'][158]['offset_meters'] ['path_tpc']['curves'][158]['res_coeff'] -['path_tpc']['curves'][158]['res_net'] -['path_tpc']['curves'][159]['offset'] +['path_tpc']['curves'][158]['res_net_meters'] +['path_tpc']['curves'][159]['offset_meters'] ['path_tpc']['curves'][159]['res_coeff'] -['path_tpc']['curves'][159]['res_net'] -['path_tpc']['curves'][160]['offset'] +['path_tpc']['curves'][159]['res_net_meters'] +['path_tpc']['curves'][160]['offset_meters'] ['path_tpc']['curves'][160]['res_coeff'] -['path_tpc']['curves'][160]['res_net'] -['path_tpc']['curves'][161]['offset'] +['path_tpc']['curves'][160]['res_net_meters'] +['path_tpc']['curves'][161]['offset_meters'] ['path_tpc']['curves'][161]['res_coeff'] -['path_tpc']['curves'][161]['res_net'] -['path_tpc']['curves'][162]['offset'] +['path_tpc']['curves'][161]['res_net_meters'] +['path_tpc']['curves'][162]['offset_meters'] ['path_tpc']['curves'][162]['res_coeff'] -['path_tpc']['curves'][162]['res_net'] -['path_tpc']['curves'][163]['offset'] +['path_tpc']['curves'][162]['res_net_meters'] +['path_tpc']['curves'][163]['offset_meters'] ['path_tpc']['curves'][163]['res_coeff'] -['path_tpc']['curves'][163]['res_net'] -['path_tpc']['curves'][164]['offset'] +['path_tpc']['curves'][163]['res_net_meters'] +['path_tpc']['curves'][164]['offset_meters'] ['path_tpc']['curves'][164]['res_coeff'] -['path_tpc']['curves'][164]['res_net'] -['path_tpc']['curves'][165]['offset'] +['path_tpc']['curves'][164]['res_net_meters'] +['path_tpc']['curves'][165]['offset_meters'] ['path_tpc']['curves'][165]['res_coeff'] -['path_tpc']['curves'][165]['res_net'] -['path_tpc']['curves'][166]['offset'] +['path_tpc']['curves'][165]['res_net_meters'] +['path_tpc']['curves'][166]['offset_meters'] ['path_tpc']['curves'][166]['res_coeff'] -['path_tpc']['curves'][166]['res_net'] -['path_tpc']['curves'][167]['offset'] +['path_tpc']['curves'][166]['res_net_meters'] +['path_tpc']['curves'][167]['offset_meters'] ['path_tpc']['curves'][167]['res_coeff'] -['path_tpc']['curves'][167]['res_net'] -['path_tpc']['curves'][168]['offset'] +['path_tpc']['curves'][167]['res_net_meters'] +['path_tpc']['curves'][168]['offset_meters'] ['path_tpc']['curves'][168]['res_coeff'] -['path_tpc']['curves'][168]['res_net'] -['path_tpc']['curves'][169]['offset'] +['path_tpc']['curves'][168]['res_net_meters'] +['path_tpc']['curves'][169]['offset_meters'] ['path_tpc']['curves'][169]['res_coeff'] -['path_tpc']['curves'][169]['res_net'] -['path_tpc']['curves'][170]['offset'] +['path_tpc']['curves'][169]['res_net_meters'] +['path_tpc']['curves'][170]['offset_meters'] ['path_tpc']['curves'][170]['res_coeff'] -['path_tpc']['curves'][170]['res_net'] -['path_tpc']['curves'][171]['offset'] +['path_tpc']['curves'][170]['res_net_meters'] +['path_tpc']['curves'][171]['offset_meters'] ['path_tpc']['curves'][171]['res_coeff'] -['path_tpc']['curves'][171]['res_net'] -['path_tpc']['curves'][172]['offset'] +['path_tpc']['curves'][171]['res_net_meters'] +['path_tpc']['curves'][172]['offset_meters'] ['path_tpc']['curves'][172]['res_coeff'] -['path_tpc']['curves'][172]['res_net'] -['path_tpc']['curves'][173]['offset'] +['path_tpc']['curves'][172]['res_net_meters'] +['path_tpc']['curves'][173]['offset_meters'] ['path_tpc']['curves'][173]['res_coeff'] -['path_tpc']['curves'][173]['res_net'] -['path_tpc']['curves'][174]['offset'] +['path_tpc']['curves'][173]['res_net_meters'] +['path_tpc']['curves'][174]['offset_meters'] ['path_tpc']['curves'][174]['res_coeff'] -['path_tpc']['curves'][174]['res_net'] -['path_tpc']['curves'][175]['offset'] +['path_tpc']['curves'][174]['res_net_meters'] +['path_tpc']['curves'][175]['offset_meters'] ['path_tpc']['curves'][175]['res_coeff'] -['path_tpc']['curves'][175]['res_net'] -['path_tpc']['curves'][176]['offset'] +['path_tpc']['curves'][175]['res_net_meters'] +['path_tpc']['curves'][176]['offset_meters'] ['path_tpc']['curves'][176]['res_coeff'] -['path_tpc']['curves'][176]['res_net'] -['path_tpc']['curves'][177]['offset'] +['path_tpc']['curves'][176]['res_net_meters'] +['path_tpc']['curves'][177]['offset_meters'] ['path_tpc']['curves'][177]['res_coeff'] -['path_tpc']['curves'][177]['res_net'] -['path_tpc']['curves'][178]['offset'] +['path_tpc']['curves'][177]['res_net_meters'] +['path_tpc']['curves'][178]['offset_meters'] ['path_tpc']['curves'][178]['res_coeff'] -['path_tpc']['curves'][178]['res_net'] -['path_tpc']['curves'][179]['offset'] +['path_tpc']['curves'][178]['res_net_meters'] +['path_tpc']['curves'][179]['offset_meters'] ['path_tpc']['curves'][179]['res_coeff'] -['path_tpc']['curves'][179]['res_net'] -['path_tpc']['curves'][180]['offset'] +['path_tpc']['curves'][179]['res_net_meters'] +['path_tpc']['curves'][180]['offset_meters'] ['path_tpc']['curves'][180]['res_coeff'] -['path_tpc']['curves'][180]['res_net'] -['path_tpc']['curves'][181]['offset'] +['path_tpc']['curves'][180]['res_net_meters'] +['path_tpc']['curves'][181]['offset_meters'] ['path_tpc']['curves'][181]['res_coeff'] -['path_tpc']['curves'][181]['res_net'] -['path_tpc']['curves'][182]['offset'] +['path_tpc']['curves'][181]['res_net_meters'] +['path_tpc']['curves'][182]['offset_meters'] ['path_tpc']['curves'][182]['res_coeff'] -['path_tpc']['curves'][182]['res_net'] -['path_tpc']['curves'][183]['offset'] +['path_tpc']['curves'][182]['res_net_meters'] +['path_tpc']['curves'][183]['offset_meters'] ['path_tpc']['curves'][183]['res_coeff'] -['path_tpc']['curves'][183]['res_net'] -['path_tpc']['curves'][184]['offset'] +['path_tpc']['curves'][183]['res_net_meters'] +['path_tpc']['curves'][184]['offset_meters'] ['path_tpc']['curves'][184]['res_coeff'] -['path_tpc']['curves'][184]['res_net'] -['path_tpc']['curves'][185]['offset'] +['path_tpc']['curves'][184]['res_net_meters'] +['path_tpc']['curves'][185]['offset_meters'] ['path_tpc']['curves'][185]['res_coeff'] -['path_tpc']['curves'][185]['res_net'] -['path_tpc']['curves'][186]['offset'] +['path_tpc']['curves'][185]['res_net_meters'] +['path_tpc']['curves'][186]['offset_meters'] ['path_tpc']['curves'][186]['res_coeff'] -['path_tpc']['curves'][186]['res_net'] -['path_tpc']['curves'][187]['offset'] +['path_tpc']['curves'][186]['res_net_meters'] +['path_tpc']['curves'][187]['offset_meters'] ['path_tpc']['curves'][187]['res_coeff'] -['path_tpc']['curves'][187]['res_net'] -['path_tpc']['curves'][188]['offset'] +['path_tpc']['curves'][187]['res_net_meters'] +['path_tpc']['curves'][188]['offset_meters'] ['path_tpc']['curves'][188]['res_coeff'] -['path_tpc']['curves'][188]['res_net'] -['path_tpc']['curves'][189]['offset'] +['path_tpc']['curves'][188]['res_net_meters'] +['path_tpc']['curves'][189]['offset_meters'] ['path_tpc']['curves'][189]['res_coeff'] -['path_tpc']['curves'][189]['res_net'] -['path_tpc']['curves'][190]['offset'] +['path_tpc']['curves'][189]['res_net_meters'] +['path_tpc']['curves'][190]['offset_meters'] ['path_tpc']['curves'][190]['res_coeff'] -['path_tpc']['curves'][190]['res_net'] -['path_tpc']['curves'][191]['offset'] +['path_tpc']['curves'][190]['res_net_meters'] +['path_tpc']['curves'][191]['offset_meters'] ['path_tpc']['curves'][191]['res_coeff'] -['path_tpc']['curves'][191]['res_net'] -['path_tpc']['curves'][192]['offset'] +['path_tpc']['curves'][191]['res_net_meters'] +['path_tpc']['curves'][192]['offset_meters'] ['path_tpc']['curves'][192]['res_coeff'] -['path_tpc']['curves'][192]['res_net'] -['path_tpc']['curves'][193]['offset'] +['path_tpc']['curves'][192]['res_net_meters'] +['path_tpc']['curves'][193]['offset_meters'] ['path_tpc']['curves'][193]['res_coeff'] -['path_tpc']['curves'][193]['res_net'] -['path_tpc']['curves'][194]['offset'] +['path_tpc']['curves'][193]['res_net_meters'] +['path_tpc']['curves'][194]['offset_meters'] ['path_tpc']['curves'][194]['res_coeff'] -['path_tpc']['curves'][194]['res_net'] -['path_tpc']['curves'][195]['offset'] +['path_tpc']['curves'][194]['res_net_meters'] +['path_tpc']['curves'][195]['offset_meters'] ['path_tpc']['curves'][195]['res_coeff'] -['path_tpc']['curves'][195]['res_net'] -['path_tpc']['curves'][196]['offset'] +['path_tpc']['curves'][195]['res_net_meters'] +['path_tpc']['curves'][196]['offset_meters'] ['path_tpc']['curves'][196]['res_coeff'] -['path_tpc']['curves'][196]['res_net'] -['path_tpc']['curves'][197]['offset'] +['path_tpc']['curves'][196]['res_net_meters'] +['path_tpc']['curves'][197]['offset_meters'] ['path_tpc']['curves'][197]['res_coeff'] -['path_tpc']['curves'][197]['res_net'] -['path_tpc']['curves'][198]['offset'] +['path_tpc']['curves'][197]['res_net_meters'] +['path_tpc']['curves'][198]['offset_meters'] ['path_tpc']['curves'][198]['res_coeff'] -['path_tpc']['curves'][198]['res_net'] -['path_tpc']['curves'][199]['offset'] +['path_tpc']['curves'][198]['res_net_meters'] +['path_tpc']['curves'][199]['offset_meters'] ['path_tpc']['curves'][199]['res_coeff'] -['path_tpc']['curves'][199]['res_net'] -['path_tpc']['curves'][200]['offset'] +['path_tpc']['curves'][199]['res_net_meters'] +['path_tpc']['curves'][200]['offset_meters'] ['path_tpc']['curves'][200]['res_coeff'] -['path_tpc']['curves'][200]['res_net'] -['path_tpc']['curves'][201]['offset'] +['path_tpc']['curves'][200]['res_net_meters'] +['path_tpc']['curves'][201]['offset_meters'] ['path_tpc']['curves'][201]['res_coeff'] -['path_tpc']['curves'][201]['res_net'] -['path_tpc']['curves'][202]['offset'] +['path_tpc']['curves'][201]['res_net_meters'] +['path_tpc']['curves'][202]['offset_meters'] ['path_tpc']['curves'][202]['res_coeff'] -['path_tpc']['curves'][202]['res_net'] -['path_tpc']['curves'][203]['offset'] +['path_tpc']['curves'][202]['res_net_meters'] +['path_tpc']['curves'][203]['offset_meters'] ['path_tpc']['curves'][203]['res_coeff'] -['path_tpc']['curves'][203]['res_net'] -['path_tpc']['curves'][204]['offset'] +['path_tpc']['curves'][203]['res_net_meters'] +['path_tpc']['curves'][204]['offset_meters'] ['path_tpc']['curves'][204]['res_coeff'] -['path_tpc']['curves'][204]['res_net'] -['path_tpc']['curves'][205]['offset'] +['path_tpc']['curves'][204]['res_net_meters'] +['path_tpc']['curves'][205]['offset_meters'] ['path_tpc']['curves'][205]['res_coeff'] -['path_tpc']['curves'][205]['res_net'] -['path_tpc']['curves'][206]['offset'] +['path_tpc']['curves'][205]['res_net_meters'] +['path_tpc']['curves'][206]['offset_meters'] ['path_tpc']['curves'][206]['res_coeff'] -['path_tpc']['curves'][206]['res_net'] -['path_tpc']['curves'][207]['offset'] +['path_tpc']['curves'][206]['res_net_meters'] +['path_tpc']['curves'][207]['offset_meters'] ['path_tpc']['curves'][207]['res_coeff'] -['path_tpc']['curves'][207]['res_net'] -['path_tpc']['curves'][208]['offset'] +['path_tpc']['curves'][207]['res_net_meters'] +['path_tpc']['curves'][208]['offset_meters'] ['path_tpc']['curves'][208]['res_coeff'] -['path_tpc']['curves'][208]['res_net'] -['path_tpc']['curves'][209]['offset'] +['path_tpc']['curves'][208]['res_net_meters'] +['path_tpc']['curves'][209]['offset_meters'] ['path_tpc']['curves'][209]['res_coeff'] -['path_tpc']['curves'][209]['res_net'] -['path_tpc']['curves'][210]['offset'] +['path_tpc']['curves'][209]['res_net_meters'] +['path_tpc']['curves'][210]['offset_meters'] ['path_tpc']['curves'][210]['res_coeff'] -['path_tpc']['curves'][210]['res_net'] -['path_tpc']['curves'][211]['offset'] +['path_tpc']['curves'][210]['res_net_meters'] +['path_tpc']['curves'][211]['offset_meters'] ['path_tpc']['curves'][211]['res_coeff'] -['path_tpc']['curves'][211]['res_net'] -['path_tpc']['curves'][212]['offset'] +['path_tpc']['curves'][211]['res_net_meters'] +['path_tpc']['curves'][212]['offset_meters'] ['path_tpc']['curves'][212]['res_coeff'] -['path_tpc']['curves'][212]['res_net'] -['path_tpc']['curves'][213]['offset'] +['path_tpc']['curves'][212]['res_net_meters'] +['path_tpc']['curves'][213]['offset_meters'] ['path_tpc']['curves'][213]['res_coeff'] -['path_tpc']['curves'][213]['res_net'] -['path_tpc']['curves'][214]['offset'] +['path_tpc']['curves'][213]['res_net_meters'] +['path_tpc']['curves'][214]['offset_meters'] ['path_tpc']['curves'][214]['res_coeff'] -['path_tpc']['curves'][214]['res_net'] -['path_tpc']['curves'][215]['offset'] +['path_tpc']['curves'][214]['res_net_meters'] +['path_tpc']['curves'][215]['offset_meters'] ['path_tpc']['curves'][215]['res_coeff'] -['path_tpc']['curves'][215]['res_net'] -['path_tpc']['curves'][216]['offset'] +['path_tpc']['curves'][215]['res_net_meters'] +['path_tpc']['curves'][216]['offset_meters'] ['path_tpc']['curves'][216]['res_coeff'] -['path_tpc']['curves'][216]['res_net'] -['path_tpc']['curves'][217]['offset'] +['path_tpc']['curves'][216]['res_net_meters'] +['path_tpc']['curves'][217]['offset_meters'] ['path_tpc']['curves'][217]['res_coeff'] -['path_tpc']['curves'][217]['res_net'] -['path_tpc']['curves'][218]['offset'] +['path_tpc']['curves'][217]['res_net_meters'] +['path_tpc']['curves'][218]['offset_meters'] ['path_tpc']['curves'][218]['res_coeff'] -['path_tpc']['curves'][218]['res_net'] -['path_tpc']['curves'][219]['offset'] +['path_tpc']['curves'][218]['res_net_meters'] +['path_tpc']['curves'][219]['offset_meters'] ['path_tpc']['curves'][219]['res_coeff'] -['path_tpc']['curves'][219]['res_net'] -['path_tpc']['curves'][220]['offset'] +['path_tpc']['curves'][219]['res_net_meters'] +['path_tpc']['curves'][220]['offset_meters'] ['path_tpc']['curves'][220]['res_coeff'] -['path_tpc']['curves'][220]['res_net'] -['path_tpc']['curves'][221]['offset'] +['path_tpc']['curves'][220]['res_net_meters'] +['path_tpc']['curves'][221]['offset_meters'] ['path_tpc']['curves'][221]['res_coeff'] -['path_tpc']['curves'][221]['res_net'] -['path_tpc']['curves'][222]['offset'] +['path_tpc']['curves'][221]['res_net_meters'] +['path_tpc']['curves'][222]['offset_meters'] ['path_tpc']['curves'][222]['res_coeff'] -['path_tpc']['curves'][222]['res_net'] -['path_tpc']['curves'][223]['offset'] +['path_tpc']['curves'][222]['res_net_meters'] +['path_tpc']['curves'][223]['offset_meters'] ['path_tpc']['curves'][223]['res_coeff'] -['path_tpc']['curves'][223]['res_net'] -['path_tpc']['curves'][224]['offset'] +['path_tpc']['curves'][223]['res_net_meters'] +['path_tpc']['curves'][224]['offset_meters'] ['path_tpc']['curves'][224]['res_coeff'] -['path_tpc']['curves'][224]['res_net'] -['path_tpc']['curves'][225]['offset'] +['path_tpc']['curves'][224]['res_net_meters'] +['path_tpc']['curves'][225]['offset_meters'] ['path_tpc']['curves'][225]['res_coeff'] -['path_tpc']['curves'][225]['res_net'] -['path_tpc']['curves'][226]['offset'] +['path_tpc']['curves'][225]['res_net_meters'] +['path_tpc']['curves'][226]['offset_meters'] ['path_tpc']['curves'][226]['res_coeff'] -['path_tpc']['curves'][226]['res_net'] -['path_tpc']['curves'][227]['offset'] +['path_tpc']['curves'][226]['res_net_meters'] +['path_tpc']['curves'][227]['offset_meters'] ['path_tpc']['curves'][227]['res_coeff'] -['path_tpc']['curves'][227]['res_net'] -['path_tpc']['curves'][228]['offset'] +['path_tpc']['curves'][227]['res_net_meters'] +['path_tpc']['curves'][228]['offset_meters'] ['path_tpc']['curves'][228]['res_coeff'] -['path_tpc']['curves'][228]['res_net'] -['path_tpc']['curves'][229]['offset'] +['path_tpc']['curves'][228]['res_net_meters'] +['path_tpc']['curves'][229]['offset_meters'] ['path_tpc']['curves'][229]['res_coeff'] -['path_tpc']['curves'][229]['res_net'] -['path_tpc']['curves'][230]['offset'] +['path_tpc']['curves'][229]['res_net_meters'] +['path_tpc']['curves'][230]['offset_meters'] ['path_tpc']['curves'][230]['res_coeff'] -['path_tpc']['curves'][230]['res_net'] -['path_tpc']['curves'][231]['offset'] +['path_tpc']['curves'][230]['res_net_meters'] +['path_tpc']['curves'][231]['offset_meters'] ['path_tpc']['curves'][231]['res_coeff'] -['path_tpc']['curves'][231]['res_net'] -['path_tpc']['curves'][232]['offset'] +['path_tpc']['curves'][231]['res_net_meters'] +['path_tpc']['curves'][232]['offset_meters'] ['path_tpc']['curves'][232]['res_coeff'] -['path_tpc']['curves'][232]['res_net'] -['path_tpc']['curves'][233]['offset'] +['path_tpc']['curves'][232]['res_net_meters'] +['path_tpc']['curves'][233]['offset_meters'] ['path_tpc']['curves'][233]['res_coeff'] -['path_tpc']['curves'][233]['res_net'] -['path_tpc']['curves'][234]['offset'] +['path_tpc']['curves'][233]['res_net_meters'] +['path_tpc']['curves'][234]['offset_meters'] ['path_tpc']['curves'][234]['res_coeff'] -['path_tpc']['curves'][234]['res_net'] -['path_tpc']['curves'][235]['offset'] +['path_tpc']['curves'][234]['res_net_meters'] +['path_tpc']['curves'][235]['offset_meters'] ['path_tpc']['curves'][235]['res_coeff'] -['path_tpc']['curves'][235]['res_net'] -['path_tpc']['curves'][236]['offset'] +['path_tpc']['curves'][235]['res_net_meters'] +['path_tpc']['curves'][236]['offset_meters'] ['path_tpc']['curves'][236]['res_coeff'] -['path_tpc']['curves'][236]['res_net'] -['path_tpc']['curves'][237]['offset'] +['path_tpc']['curves'][236]['res_net_meters'] +['path_tpc']['curves'][237]['offset_meters'] ['path_tpc']['curves'][237]['res_coeff'] -['path_tpc']['curves'][237]['res_net'] -['path_tpc']['curves'][238]['offset'] +['path_tpc']['curves'][237]['res_net_meters'] +['path_tpc']['curves'][238]['offset_meters'] ['path_tpc']['curves'][238]['res_coeff'] -['path_tpc']['curves'][238]['res_net'] -['path_tpc']['curves'][239]['offset'] +['path_tpc']['curves'][238]['res_net_meters'] +['path_tpc']['curves'][239]['offset_meters'] ['path_tpc']['curves'][239]['res_coeff'] -['path_tpc']['curves'][239]['res_net'] -['path_tpc']['curves'][240]['offset'] +['path_tpc']['curves'][239]['res_net_meters'] +['path_tpc']['curves'][240]['offset_meters'] ['path_tpc']['curves'][240]['res_coeff'] -['path_tpc']['curves'][240]['res_net'] -['path_tpc']['curves'][241]['offset'] +['path_tpc']['curves'][240]['res_net_meters'] +['path_tpc']['curves'][241]['offset_meters'] ['path_tpc']['curves'][241]['res_coeff'] -['path_tpc']['curves'][241]['res_net'] -['path_tpc']['curves'][242]['offset'] +['path_tpc']['curves'][241]['res_net_meters'] +['path_tpc']['curves'][242]['offset_meters'] ['path_tpc']['curves'][242]['res_coeff'] -['path_tpc']['curves'][242]['res_net'] -['path_tpc']['curves'][243]['offset'] +['path_tpc']['curves'][242]['res_net_meters'] +['path_tpc']['curves'][243]['offset_meters'] ['path_tpc']['curves'][243]['res_coeff'] -['path_tpc']['curves'][243]['res_net'] -['path_tpc']['curves'][244]['offset'] +['path_tpc']['curves'][243]['res_net_meters'] +['path_tpc']['curves'][244]['offset_meters'] ['path_tpc']['curves'][244]['res_coeff'] -['path_tpc']['curves'][244]['res_net'] -['path_tpc']['curves'][245]['offset'] +['path_tpc']['curves'][244]['res_net_meters'] +['path_tpc']['curves'][245]['offset_meters'] ['path_tpc']['curves'][245]['res_coeff'] -['path_tpc']['curves'][245]['res_net'] -['path_tpc']['curves'][246]['offset'] +['path_tpc']['curves'][245]['res_net_meters'] +['path_tpc']['curves'][246]['offset_meters'] ['path_tpc']['curves'][246]['res_coeff'] -['path_tpc']['curves'][246]['res_net'] -['path_tpc']['curves'][247]['offset'] +['path_tpc']['curves'][246]['res_net_meters'] +['path_tpc']['curves'][247]['offset_meters'] ['path_tpc']['curves'][247]['res_coeff'] -['path_tpc']['curves'][247]['res_net'] -['path_tpc']['curves'][248]['offset'] +['path_tpc']['curves'][247]['res_net_meters'] +['path_tpc']['curves'][248]['offset_meters'] ['path_tpc']['curves'][248]['res_coeff'] -['path_tpc']['curves'][248]['res_net'] -['path_tpc']['curves'][249]['offset'] +['path_tpc']['curves'][248]['res_net_meters'] +['path_tpc']['curves'][249]['offset_meters'] ['path_tpc']['curves'][249]['res_coeff'] -['path_tpc']['curves'][249]['res_net'] -['path_tpc']['curves'][250]['offset'] +['path_tpc']['curves'][249]['res_net_meters'] +['path_tpc']['curves'][250]['offset_meters'] ['path_tpc']['curves'][250]['res_coeff'] -['path_tpc']['curves'][250]['res_net'] -['path_tpc']['curves'][251]['offset'] +['path_tpc']['curves'][250]['res_net_meters'] +['path_tpc']['curves'][251]['offset_meters'] ['path_tpc']['curves'][251]['res_coeff'] -['path_tpc']['curves'][251]['res_net'] -['path_tpc']['curves'][252]['offset'] +['path_tpc']['curves'][251]['res_net_meters'] +['path_tpc']['curves'][252]['offset_meters'] ['path_tpc']['curves'][252]['res_coeff'] -['path_tpc']['curves'][252]['res_net'] -['path_tpc']['curves'][253]['offset'] +['path_tpc']['curves'][252]['res_net_meters'] +['path_tpc']['curves'][253]['offset_meters'] ['path_tpc']['curves'][253]['res_coeff'] -['path_tpc']['curves'][253]['res_net'] -['path_tpc']['curves'][254]['offset'] +['path_tpc']['curves'][253]['res_net_meters'] +['path_tpc']['curves'][254]['offset_meters'] ['path_tpc']['curves'][254]['res_coeff'] -['path_tpc']['curves'][254]['res_net'] -['path_tpc']['curves'][255]['offset'] +['path_tpc']['curves'][254]['res_net_meters'] +['path_tpc']['curves'][255]['offset_meters'] ['path_tpc']['curves'][255]['res_coeff'] -['path_tpc']['curves'][255]['res_net'] -['path_tpc']['curves'][256]['offset'] +['path_tpc']['curves'][255]['res_net_meters'] +['path_tpc']['curves'][256]['offset_meters'] ['path_tpc']['curves'][256]['res_coeff'] -['path_tpc']['curves'][256]['res_net'] -['path_tpc']['curves'][257]['offset'] +['path_tpc']['curves'][256]['res_net_meters'] +['path_tpc']['curves'][257]['offset_meters'] ['path_tpc']['curves'][257]['res_coeff'] -['path_tpc']['curves'][257]['res_net'] -['path_tpc']['curves'][258]['offset'] +['path_tpc']['curves'][257]['res_net_meters'] +['path_tpc']['curves'][258]['offset_meters'] ['path_tpc']['curves'][258]['res_coeff'] -['path_tpc']['curves'][258]['res_net'] -['path_tpc']['curves'][259]['offset'] +['path_tpc']['curves'][258]['res_net_meters'] +['path_tpc']['curves'][259]['offset_meters'] ['path_tpc']['curves'][259]['res_coeff'] -['path_tpc']['curves'][259]['res_net'] -['path_tpc']['curves'][260]['offset'] +['path_tpc']['curves'][259]['res_net_meters'] +['path_tpc']['curves'][260]['offset_meters'] ['path_tpc']['curves'][260]['res_coeff'] -['path_tpc']['curves'][260]['res_net'] -['path_tpc']['curves'][261]['offset'] +['path_tpc']['curves'][260]['res_net_meters'] +['path_tpc']['curves'][261]['offset_meters'] ['path_tpc']['curves'][261]['res_coeff'] -['path_tpc']['curves'][261]['res_net'] -['path_tpc']['curves'][262]['offset'] +['path_tpc']['curves'][261]['res_net_meters'] +['path_tpc']['curves'][262]['offset_meters'] ['path_tpc']['curves'][262]['res_coeff'] -['path_tpc']['curves'][262]['res_net'] -['path_tpc']['curves'][263]['offset'] +['path_tpc']['curves'][262]['res_net_meters'] +['path_tpc']['curves'][263]['offset_meters'] ['path_tpc']['curves'][263]['res_coeff'] -['path_tpc']['curves'][263]['res_net'] -['path_tpc']['curves'][264]['offset'] +['path_tpc']['curves'][263]['res_net_meters'] +['path_tpc']['curves'][264]['offset_meters'] ['path_tpc']['curves'][264]['res_coeff'] -['path_tpc']['curves'][264]['res_net'] -['path_tpc']['curves'][265]['offset'] +['path_tpc']['curves'][264]['res_net_meters'] +['path_tpc']['curves'][265]['offset_meters'] ['path_tpc']['curves'][265]['res_coeff'] -['path_tpc']['curves'][265]['res_net'] -['path_tpc']['curves'][266]['offset'] +['path_tpc']['curves'][265]['res_net_meters'] +['path_tpc']['curves'][266]['offset_meters'] ['path_tpc']['curves'][266]['res_coeff'] -['path_tpc']['curves'][266]['res_net'] -['path_tpc']['curves'][267]['offset'] +['path_tpc']['curves'][266]['res_net_meters'] +['path_tpc']['curves'][267]['offset_meters'] ['path_tpc']['curves'][267]['res_coeff'] -['path_tpc']['curves'][267]['res_net'] -['path_tpc']['curves'][268]['offset'] +['path_tpc']['curves'][267]['res_net_meters'] +['path_tpc']['curves'][268]['offset_meters'] ['path_tpc']['curves'][268]['res_coeff'] -['path_tpc']['curves'][268]['res_net'] -['path_tpc']['curves'][269]['offset'] +['path_tpc']['curves'][268]['res_net_meters'] +['path_tpc']['curves'][269]['offset_meters'] ['path_tpc']['curves'][269]['res_coeff'] -['path_tpc']['curves'][269]['res_net'] -['path_tpc']['curves'][270]['offset'] +['path_tpc']['curves'][269]['res_net_meters'] +['path_tpc']['curves'][270]['offset_meters'] ['path_tpc']['curves'][270]['res_coeff'] -['path_tpc']['curves'][270]['res_net'] -['path_tpc']['curves'][271]['offset'] +['path_tpc']['curves'][270]['res_net_meters'] +['path_tpc']['curves'][271]['offset_meters'] ['path_tpc']['curves'][271]['res_coeff'] -['path_tpc']['curves'][271]['res_net'] -['path_tpc']['curves'][272]['offset'] +['path_tpc']['curves'][271]['res_net_meters'] +['path_tpc']['curves'][272]['offset_meters'] ['path_tpc']['curves'][272]['res_coeff'] -['path_tpc']['curves'][272]['res_net'] -['path_tpc']['curves'][273]['offset'] +['path_tpc']['curves'][272]['res_net_meters'] +['path_tpc']['curves'][273]['offset_meters'] ['path_tpc']['curves'][273]['res_coeff'] -['path_tpc']['curves'][273]['res_net'] -['path_tpc']['curves'][274]['offset'] +['path_tpc']['curves'][273]['res_net_meters'] +['path_tpc']['curves'][274]['offset_meters'] ['path_tpc']['curves'][274]['res_coeff'] -['path_tpc']['curves'][274]['res_net'] -['path_tpc']['curves'][275]['offset'] +['path_tpc']['curves'][274]['res_net_meters'] +['path_tpc']['curves'][275]['offset_meters'] ['path_tpc']['curves'][275]['res_coeff'] -['path_tpc']['curves'][275]['res_net'] -['path_tpc']['curves'][276]['offset'] +['path_tpc']['curves'][275]['res_net_meters'] +['path_tpc']['curves'][276]['offset_meters'] ['path_tpc']['curves'][276]['res_coeff'] -['path_tpc']['curves'][276]['res_net'] -['path_tpc']['curves'][277]['offset'] +['path_tpc']['curves'][276]['res_net_meters'] +['path_tpc']['curves'][277]['offset_meters'] ['path_tpc']['curves'][277]['res_coeff'] -['path_tpc']['curves'][277]['res_net'] -['path_tpc']['curves'][278]['offset'] +['path_tpc']['curves'][277]['res_net_meters'] +['path_tpc']['curves'][278]['offset_meters'] ['path_tpc']['curves'][278]['res_coeff'] -['path_tpc']['curves'][278]['res_net'] -['path_tpc']['curves'][279]['offset'] +['path_tpc']['curves'][278]['res_net_meters'] +['path_tpc']['curves'][279]['offset_meters'] ['path_tpc']['curves'][279]['res_coeff'] -['path_tpc']['curves'][279]['res_net'] -['path_tpc']['curves'][280]['offset'] +['path_tpc']['curves'][279]['res_net_meters'] +['path_tpc']['curves'][280]['offset_meters'] ['path_tpc']['curves'][280]['res_coeff'] -['path_tpc']['curves'][280]['res_net'] -['path_tpc']['curves'][281]['offset'] +['path_tpc']['curves'][280]['res_net_meters'] +['path_tpc']['curves'][281]['offset_meters'] ['path_tpc']['curves'][281]['res_coeff'] -['path_tpc']['curves'][281]['res_net'] -['path_tpc']['curves'][282]['offset'] +['path_tpc']['curves'][281]['res_net_meters'] +['path_tpc']['curves'][282]['offset_meters'] ['path_tpc']['curves'][282]['res_coeff'] -['path_tpc']['curves'][282]['res_net'] -['path_tpc']['curves'][283]['offset'] +['path_tpc']['curves'][282]['res_net_meters'] +['path_tpc']['curves'][283]['offset_meters'] ['path_tpc']['curves'][283]['res_coeff'] -['path_tpc']['curves'][283]['res_net'] -['path_tpc']['curves'][284]['offset'] +['path_tpc']['curves'][283]['res_net_meters'] +['path_tpc']['curves'][284]['offset_meters'] ['path_tpc']['curves'][284]['res_coeff'] -['path_tpc']['curves'][284]['res_net'] -['path_tpc']['curves'][285]['offset'] +['path_tpc']['curves'][284]['res_net_meters'] +['path_tpc']['curves'][285]['offset_meters'] ['path_tpc']['curves'][285]['res_coeff'] -['path_tpc']['curves'][285]['res_net'] -['path_tpc']['curves'][286]['offset'] +['path_tpc']['curves'][285]['res_net_meters'] +['path_tpc']['curves'][286]['offset_meters'] ['path_tpc']['curves'][286]['res_coeff'] -['path_tpc']['curves'][286]['res_net'] -['path_tpc']['curves'][287]['offset'] +['path_tpc']['curves'][286]['res_net_meters'] +['path_tpc']['curves'][287]['offset_meters'] ['path_tpc']['curves'][287]['res_coeff'] -['path_tpc']['curves'][287]['res_net'] -['path_tpc']['curves'][288]['offset'] +['path_tpc']['curves'][287]['res_net_meters'] +['path_tpc']['curves'][288]['offset_meters'] ['path_tpc']['curves'][288]['res_coeff'] -['path_tpc']['curves'][288]['res_net'] -['path_tpc']['curves'][289]['offset'] +['path_tpc']['curves'][288]['res_net_meters'] +['path_tpc']['curves'][289]['offset_meters'] ['path_tpc']['curves'][289]['res_coeff'] -['path_tpc']['curves'][289]['res_net'] -['path_tpc']['curves'][290]['offset'] +['path_tpc']['curves'][289]['res_net_meters'] +['path_tpc']['curves'][290]['offset_meters'] ['path_tpc']['curves'][290]['res_coeff'] -['path_tpc']['curves'][290]['res_net'] -['path_tpc']['curves'][291]['offset'] +['path_tpc']['curves'][290]['res_net_meters'] +['path_tpc']['curves'][291]['offset_meters'] ['path_tpc']['curves'][291]['res_coeff'] -['path_tpc']['curves'][291]['res_net'] -['path_tpc']['curves'][292]['offset'] +['path_tpc']['curves'][291]['res_net_meters'] +['path_tpc']['curves'][292]['offset_meters'] ['path_tpc']['curves'][292]['res_coeff'] -['path_tpc']['curves'][292]['res_net'] -['path_tpc']['curves'][293]['offset'] +['path_tpc']['curves'][292]['res_net_meters'] +['path_tpc']['curves'][293]['offset_meters'] ['path_tpc']['curves'][293]['res_coeff'] -['path_tpc']['curves'][293]['res_net'] -['path_tpc']['curves'][294]['offset'] +['path_tpc']['curves'][293]['res_net_meters'] +['path_tpc']['curves'][294]['offset_meters'] ['path_tpc']['curves'][294]['res_coeff'] -['path_tpc']['curves'][294]['res_net'] -['path_tpc']['curves'][295]['offset'] +['path_tpc']['curves'][294]['res_net_meters'] +['path_tpc']['curves'][295]['offset_meters'] ['path_tpc']['curves'][295]['res_coeff'] -['path_tpc']['curves'][295]['res_net'] -['path_tpc']['curves'][296]['offset'] +['path_tpc']['curves'][295]['res_net_meters'] +['path_tpc']['curves'][296]['offset_meters'] ['path_tpc']['curves'][296]['res_coeff'] -['path_tpc']['curves'][296]['res_net'] -['path_tpc']['curves'][297]['offset'] +['path_tpc']['curves'][296]['res_net_meters'] +['path_tpc']['curves'][297]['offset_meters'] ['path_tpc']['curves'][297]['res_coeff'] -['path_tpc']['curves'][297]['res_net'] -['path_tpc']['curves'][298]['offset'] +['path_tpc']['curves'][297]['res_net_meters'] +['path_tpc']['curves'][298]['offset_meters'] ['path_tpc']['curves'][298]['res_coeff'] -['path_tpc']['curves'][298]['res_net'] -['path_tpc']['curves'][299]['offset'] +['path_tpc']['curves'][298]['res_net_meters'] +['path_tpc']['curves'][299]['offset_meters'] ['path_tpc']['curves'][299]['res_coeff'] -['path_tpc']['curves'][299]['res_net'] -['path_tpc']['curves'][300]['offset'] +['path_tpc']['curves'][299]['res_net_meters'] +['path_tpc']['curves'][300]['offset_meters'] ['path_tpc']['curves'][300]['res_coeff'] -['path_tpc']['curves'][300]['res_net'] -['path_tpc']['curves'][301]['offset'] +['path_tpc']['curves'][300]['res_net_meters'] +['path_tpc']['curves'][301]['offset_meters'] ['path_tpc']['curves'][301]['res_coeff'] -['path_tpc']['curves'][301]['res_net'] -['path_tpc']['curves'][302]['offset'] +['path_tpc']['curves'][301]['res_net_meters'] +['path_tpc']['curves'][302]['offset_meters'] ['path_tpc']['curves'][302]['res_coeff'] -['path_tpc']['curves'][302]['res_net'] -['path_tpc']['curves'][303]['offset'] +['path_tpc']['curves'][302]['res_net_meters'] +['path_tpc']['curves'][303]['offset_meters'] ['path_tpc']['curves'][303]['res_coeff'] -['path_tpc']['curves'][303]['res_net'] -['path_tpc']['curves'][304]['offset'] +['path_tpc']['curves'][303]['res_net_meters'] +['path_tpc']['curves'][304]['offset_meters'] ['path_tpc']['curves'][304]['res_coeff'] -['path_tpc']['curves'][304]['res_net'] -['path_tpc']['curves'][305]['offset'] +['path_tpc']['curves'][304]['res_net_meters'] +['path_tpc']['curves'][305]['offset_meters'] ['path_tpc']['curves'][305]['res_coeff'] -['path_tpc']['curves'][305]['res_net'] -['path_tpc']['curves'][306]['offset'] +['path_tpc']['curves'][305]['res_net_meters'] +['path_tpc']['curves'][306]['offset_meters'] ['path_tpc']['curves'][306]['res_coeff'] -['path_tpc']['curves'][306]['res_net'] -['path_tpc']['curves'][307]['offset'] +['path_tpc']['curves'][306]['res_net_meters'] +['path_tpc']['curves'][307]['offset_meters'] ['path_tpc']['curves'][307]['res_coeff'] -['path_tpc']['curves'][307]['res_net'] -['path_tpc']['curves'][308]['offset'] +['path_tpc']['curves'][307]['res_net_meters'] +['path_tpc']['curves'][308]['offset_meters'] ['path_tpc']['curves'][308]['res_coeff'] -['path_tpc']['curves'][308]['res_net'] -['path_tpc']['curves'][309]['offset'] +['path_tpc']['curves'][308]['res_net_meters'] +['path_tpc']['curves'][309]['offset_meters'] ['path_tpc']['curves'][309]['res_coeff'] -['path_tpc']['curves'][309]['res_net'] -['path_tpc']['curves'][310]['offset'] +['path_tpc']['curves'][309]['res_net_meters'] +['path_tpc']['curves'][310]['offset_meters'] ['path_tpc']['curves'][310]['res_coeff'] -['path_tpc']['curves'][310]['res_net'] -['path_tpc']['curves'][311]['offset'] +['path_tpc']['curves'][310]['res_net_meters'] +['path_tpc']['curves'][311]['offset_meters'] ['path_tpc']['curves'][311]['res_coeff'] -['path_tpc']['curves'][311]['res_net'] -['path_tpc']['curves'][312]['offset'] +['path_tpc']['curves'][311]['res_net_meters'] +['path_tpc']['curves'][312]['offset_meters'] ['path_tpc']['curves'][312]['res_coeff'] -['path_tpc']['curves'][312]['res_net'] -['path_tpc']['curves'][313]['offset'] +['path_tpc']['curves'][312]['res_net_meters'] +['path_tpc']['curves'][313]['offset_meters'] ['path_tpc']['curves'][313]['res_coeff'] -['path_tpc']['curves'][313]['res_net'] -['path_tpc']['curves'][314]['offset'] +['path_tpc']['curves'][313]['res_net_meters'] +['path_tpc']['curves'][314]['offset_meters'] ['path_tpc']['curves'][314]['res_coeff'] -['path_tpc']['curves'][314]['res_net'] -['path_tpc']['curves'][315]['offset'] +['path_tpc']['curves'][314]['res_net_meters'] +['path_tpc']['curves'][315]['offset_meters'] ['path_tpc']['curves'][315]['res_coeff'] -['path_tpc']['curves'][315]['res_net'] -['path_tpc']['curves'][316]['offset'] +['path_tpc']['curves'][315]['res_net_meters'] +['path_tpc']['curves'][316]['offset_meters'] ['path_tpc']['curves'][316]['res_coeff'] -['path_tpc']['curves'][316]['res_net'] -['path_tpc']['curves'][317]['offset'] +['path_tpc']['curves'][316]['res_net_meters'] +['path_tpc']['curves'][317]['offset_meters'] ['path_tpc']['curves'][317]['res_coeff'] -['path_tpc']['curves'][317]['res_net'] -['path_tpc']['curves'][318]['offset'] +['path_tpc']['curves'][317]['res_net_meters'] +['path_tpc']['curves'][318]['offset_meters'] ['path_tpc']['curves'][318]['res_coeff'] -['path_tpc']['curves'][318]['res_net'] -['path_tpc']['curves'][319]['offset'] +['path_tpc']['curves'][318]['res_net_meters'] +['path_tpc']['curves'][319]['offset_meters'] ['path_tpc']['curves'][319]['res_coeff'] -['path_tpc']['curves'][319]['res_net'] -['path_tpc']['curves'][320]['offset'] +['path_tpc']['curves'][319]['res_net_meters'] +['path_tpc']['curves'][320]['offset_meters'] ['path_tpc']['curves'][320]['res_coeff'] -['path_tpc']['curves'][320]['res_net'] -['path_tpc']['curves'][321]['offset'] +['path_tpc']['curves'][320]['res_net_meters'] +['path_tpc']['curves'][321]['offset_meters'] ['path_tpc']['curves'][321]['res_coeff'] -['path_tpc']['curves'][321]['res_net'] -['path_tpc']['curves'][322]['offset'] +['path_tpc']['curves'][321]['res_net_meters'] +['path_tpc']['curves'][322]['offset_meters'] ['path_tpc']['curves'][322]['res_coeff'] -['path_tpc']['curves'][322]['res_net'] -['path_tpc']['curves'][323]['offset'] +['path_tpc']['curves'][322]['res_net_meters'] +['path_tpc']['curves'][323]['offset_meters'] ['path_tpc']['curves'][323]['res_coeff'] -['path_tpc']['curves'][323]['res_net'] -['path_tpc']['curves'][324]['offset'] +['path_tpc']['curves'][323]['res_net_meters'] +['path_tpc']['curves'][324]['offset_meters'] ['path_tpc']['curves'][324]['res_coeff'] -['path_tpc']['curves'][324]['res_net'] -['path_tpc']['curves'][325]['offset'] +['path_tpc']['curves'][324]['res_net_meters'] +['path_tpc']['curves'][325]['offset_meters'] ['path_tpc']['curves'][325]['res_coeff'] -['path_tpc']['curves'][325]['res_net'] -['path_tpc']['curves'][326]['offset'] +['path_tpc']['curves'][325]['res_net_meters'] +['path_tpc']['curves'][326]['offset_meters'] ['path_tpc']['curves'][326]['res_coeff'] -['path_tpc']['curves'][326]['res_net'] -['path_tpc']['curves'][327]['offset'] +['path_tpc']['curves'][326]['res_net_meters'] +['path_tpc']['curves'][327]['offset_meters'] ['path_tpc']['curves'][327]['res_coeff'] -['path_tpc']['curves'][327]['res_net'] -['path_tpc']['curves'][328]['offset'] +['path_tpc']['curves'][327]['res_net_meters'] +['path_tpc']['curves'][328]['offset_meters'] ['path_tpc']['curves'][328]['res_coeff'] -['path_tpc']['curves'][328]['res_net'] -['path_tpc']['curves'][329]['offset'] +['path_tpc']['curves'][328]['res_net_meters'] +['path_tpc']['curves'][329]['offset_meters'] ['path_tpc']['curves'][329]['res_coeff'] -['path_tpc']['curves'][329]['res_net'] -['path_tpc']['curves'][330]['offset'] +['path_tpc']['curves'][329]['res_net_meters'] +['path_tpc']['curves'][330]['offset_meters'] ['path_tpc']['curves'][330]['res_coeff'] -['path_tpc']['curves'][330]['res_net'] -['path_tpc']['curves'][331]['offset'] +['path_tpc']['curves'][330]['res_net_meters'] +['path_tpc']['curves'][331]['offset_meters'] ['path_tpc']['curves'][331]['res_coeff'] -['path_tpc']['curves'][331]['res_net'] -['path_tpc']['curves'][332]['offset'] +['path_tpc']['curves'][331]['res_net_meters'] +['path_tpc']['curves'][332]['offset_meters'] ['path_tpc']['curves'][332]['res_coeff'] -['path_tpc']['curves'][332]['res_net'] -['path_tpc']['curves'][333]['offset'] +['path_tpc']['curves'][332]['res_net_meters'] +['path_tpc']['curves'][333]['offset_meters'] ['path_tpc']['curves'][333]['res_coeff'] -['path_tpc']['curves'][333]['res_net'] -['path_tpc']['curves'][334]['offset'] +['path_tpc']['curves'][333]['res_net_meters'] +['path_tpc']['curves'][334]['offset_meters'] ['path_tpc']['curves'][334]['res_coeff'] -['path_tpc']['curves'][334]['res_net'] -['path_tpc']['curves'][335]['offset'] +['path_tpc']['curves'][334]['res_net_meters'] +['path_tpc']['curves'][335]['offset_meters'] ['path_tpc']['curves'][335]['res_coeff'] -['path_tpc']['curves'][335]['res_net'] -['path_tpc']['curves'][336]['offset'] +['path_tpc']['curves'][335]['res_net_meters'] +['path_tpc']['curves'][336]['offset_meters'] ['path_tpc']['curves'][336]['res_coeff'] -['path_tpc']['curves'][336]['res_net'] -['path_tpc']['curves'][337]['offset'] +['path_tpc']['curves'][336]['res_net_meters'] +['path_tpc']['curves'][337]['offset_meters'] ['path_tpc']['curves'][337]['res_coeff'] -['path_tpc']['curves'][337]['res_net'] -['path_tpc']['curves'][338]['offset'] +['path_tpc']['curves'][337]['res_net_meters'] +['path_tpc']['curves'][338]['offset_meters'] ['path_tpc']['curves'][338]['res_coeff'] -['path_tpc']['curves'][338]['res_net'] -['path_tpc']['curves'][339]['offset'] +['path_tpc']['curves'][338]['res_net_meters'] +['path_tpc']['curves'][339]['offset_meters'] ['path_tpc']['curves'][339]['res_coeff'] -['path_tpc']['curves'][339]['res_net'] -['path_tpc']['curves'][340]['offset'] +['path_tpc']['curves'][339]['res_net_meters'] +['path_tpc']['curves'][340]['offset_meters'] ['path_tpc']['curves'][340]['res_coeff'] -['path_tpc']['curves'][340]['res_net'] -['path_tpc']['curves'][341]['offset'] +['path_tpc']['curves'][340]['res_net_meters'] +['path_tpc']['curves'][341]['offset_meters'] ['path_tpc']['curves'][341]['res_coeff'] -['path_tpc']['curves'][341]['res_net'] -['path_tpc']['curves'][342]['offset'] +['path_tpc']['curves'][341]['res_net_meters'] +['path_tpc']['curves'][342]['offset_meters'] ['path_tpc']['curves'][342]['res_coeff'] -['path_tpc']['curves'][342]['res_net'] -['path_tpc']['curves'][343]['offset'] +['path_tpc']['curves'][342]['res_net_meters'] +['path_tpc']['curves'][343]['offset_meters'] ['path_tpc']['curves'][343]['res_coeff'] -['path_tpc']['curves'][343]['res_net'] -['path_tpc']['curves'][344]['offset'] +['path_tpc']['curves'][343]['res_net_meters'] +['path_tpc']['curves'][344]['offset_meters'] ['path_tpc']['curves'][344]['res_coeff'] -['path_tpc']['curves'][344]['res_net'] -['path_tpc']['curves'][345]['offset'] +['path_tpc']['curves'][344]['res_net_meters'] +['path_tpc']['curves'][345]['offset_meters'] ['path_tpc']['curves'][345]['res_coeff'] -['path_tpc']['curves'][345]['res_net'] -['path_tpc']['curves'][346]['offset'] +['path_tpc']['curves'][345]['res_net_meters'] +['path_tpc']['curves'][346]['offset_meters'] ['path_tpc']['curves'][346]['res_coeff'] -['path_tpc']['curves'][346]['res_net'] -['path_tpc']['curves'][347]['offset'] +['path_tpc']['curves'][346]['res_net_meters'] +['path_tpc']['curves'][347]['offset_meters'] ['path_tpc']['curves'][347]['res_coeff'] -['path_tpc']['curves'][347]['res_net'] -['path_tpc']['curves'][348]['offset'] +['path_tpc']['curves'][347]['res_net_meters'] +['path_tpc']['curves'][348]['offset_meters'] ['path_tpc']['curves'][348]['res_coeff'] -['path_tpc']['curves'][348]['res_net'] -['path_tpc']['curves'][349]['offset'] +['path_tpc']['curves'][348]['res_net_meters'] +['path_tpc']['curves'][349]['offset_meters'] ['path_tpc']['curves'][349]['res_coeff'] -['path_tpc']['curves'][349]['res_net'] -['path_tpc']['curves'][350]['offset'] +['path_tpc']['curves'][349]['res_net_meters'] +['path_tpc']['curves'][350]['offset_meters'] ['path_tpc']['curves'][350]['res_coeff'] -['path_tpc']['curves'][350]['res_net'] -['path_tpc']['curves'][351]['offset'] +['path_tpc']['curves'][350]['res_net_meters'] +['path_tpc']['curves'][351]['offset_meters'] ['path_tpc']['curves'][351]['res_coeff'] -['path_tpc']['curves'][351]['res_net'] -['path_tpc']['curves'][352]['offset'] +['path_tpc']['curves'][351]['res_net_meters'] +['path_tpc']['curves'][352]['offset_meters'] ['path_tpc']['curves'][352]['res_coeff'] -['path_tpc']['curves'][352]['res_net'] -['path_tpc']['curves'][353]['offset'] +['path_tpc']['curves'][352]['res_net_meters'] +['path_tpc']['curves'][353]['offset_meters'] ['path_tpc']['curves'][353]['res_coeff'] -['path_tpc']['curves'][353]['res_net'] -['path_tpc']['curves'][354]['offset'] +['path_tpc']['curves'][353]['res_net_meters'] +['path_tpc']['curves'][354]['offset_meters'] ['path_tpc']['curves'][354]['res_coeff'] -['path_tpc']['curves'][354]['res_net'] -['path_tpc']['curves'][355]['offset'] +['path_tpc']['curves'][354]['res_net_meters'] +['path_tpc']['curves'][355]['offset_meters'] ['path_tpc']['curves'][355]['res_coeff'] -['path_tpc']['curves'][355]['res_net'] -['path_tpc']['curves'][356]['offset'] +['path_tpc']['curves'][355]['res_net_meters'] +['path_tpc']['curves'][356]['offset_meters'] ['path_tpc']['curves'][356]['res_coeff'] -['path_tpc']['curves'][356]['res_net'] -['path_tpc']['curves'][357]['offset'] +['path_tpc']['curves'][356]['res_net_meters'] +['path_tpc']['curves'][357]['offset_meters'] ['path_tpc']['curves'][357]['res_coeff'] -['path_tpc']['curves'][357]['res_net'] -['path_tpc']['curves'][358]['offset'] +['path_tpc']['curves'][357]['res_net_meters'] +['path_tpc']['curves'][358]['offset_meters'] ['path_tpc']['curves'][358]['res_coeff'] -['path_tpc']['curves'][358]['res_net'] -['path_tpc']['curves'][359]['offset'] +['path_tpc']['curves'][358]['res_net_meters'] +['path_tpc']['curves'][359]['offset_meters'] ['path_tpc']['curves'][359]['res_coeff'] -['path_tpc']['curves'][359]['res_net'] -['path_tpc']['curves'][360]['offset'] +['path_tpc']['curves'][359]['res_net_meters'] +['path_tpc']['curves'][360]['offset_meters'] ['path_tpc']['curves'][360]['res_coeff'] -['path_tpc']['curves'][360]['res_net'] -['path_tpc']['curves'][361]['offset'] +['path_tpc']['curves'][360]['res_net_meters'] +['path_tpc']['curves'][361]['offset_meters'] ['path_tpc']['curves'][361]['res_coeff'] -['path_tpc']['curves'][361]['res_net'] -['path_tpc']['curves'][362]['offset'] +['path_tpc']['curves'][361]['res_net_meters'] +['path_tpc']['curves'][362]['offset_meters'] ['path_tpc']['curves'][362]['res_coeff'] -['path_tpc']['curves'][362]['res_net'] -['path_tpc']['curves'][363]['offset'] +['path_tpc']['curves'][362]['res_net_meters'] +['path_tpc']['curves'][363]['offset_meters'] ['path_tpc']['curves'][363]['res_coeff'] -['path_tpc']['curves'][363]['res_net'] -['path_tpc']['curves'][364]['offset'] +['path_tpc']['curves'][363]['res_net_meters'] +['path_tpc']['curves'][364]['offset_meters'] ['path_tpc']['curves'][364]['res_coeff'] -['path_tpc']['curves'][364]['res_net'] -['path_tpc']['curves'][365]['offset'] +['path_tpc']['curves'][364]['res_net_meters'] +['path_tpc']['curves'][365]['offset_meters'] ['path_tpc']['curves'][365]['res_coeff'] -['path_tpc']['curves'][365]['res_net'] -['path_tpc']['curves'][366]['offset'] +['path_tpc']['curves'][365]['res_net_meters'] +['path_tpc']['curves'][366]['offset_meters'] ['path_tpc']['curves'][366]['res_coeff'] -['path_tpc']['curves'][366]['res_net'] -['path_tpc']['curves'][367]['offset'] +['path_tpc']['curves'][366]['res_net_meters'] +['path_tpc']['curves'][367]['offset_meters'] ['path_tpc']['curves'][367]['res_coeff'] -['path_tpc']['curves'][367]['res_net'] -['path_tpc']['curves'][368]['offset'] +['path_tpc']['curves'][367]['res_net_meters'] +['path_tpc']['curves'][368]['offset_meters'] ['path_tpc']['curves'][368]['res_coeff'] -['path_tpc']['curves'][368]['res_net'] -['path_tpc']['curves'][369]['offset'] +['path_tpc']['curves'][368]['res_net_meters'] +['path_tpc']['curves'][369]['offset_meters'] ['path_tpc']['curves'][369]['res_coeff'] -['path_tpc']['curves'][369]['res_net'] -['path_tpc']['curves'][370]['offset'] +['path_tpc']['curves'][369]['res_net_meters'] +['path_tpc']['curves'][370]['offset_meters'] ['path_tpc']['curves'][370]['res_coeff'] -['path_tpc']['curves'][370]['res_net'] -['path_tpc']['curves'][371]['offset'] +['path_tpc']['curves'][370]['res_net_meters'] +['path_tpc']['curves'][371]['offset_meters'] ['path_tpc']['curves'][371]['res_coeff'] -['path_tpc']['curves'][371]['res_net'] -['path_tpc']['curves'][372]['offset'] +['path_tpc']['curves'][371]['res_net_meters'] +['path_tpc']['curves'][372]['offset_meters'] ['path_tpc']['curves'][372]['res_coeff'] -['path_tpc']['curves'][372]['res_net'] -['path_tpc']['curves'][373]['offset'] +['path_tpc']['curves'][372]['res_net_meters'] +['path_tpc']['curves'][373]['offset_meters'] ['path_tpc']['curves'][373]['res_coeff'] -['path_tpc']['curves'][373]['res_net'] -['path_tpc']['curves'][374]['offset'] +['path_tpc']['curves'][373]['res_net_meters'] +['path_tpc']['curves'][374]['offset_meters'] ['path_tpc']['curves'][374]['res_coeff'] -['path_tpc']['curves'][374]['res_net'] -['path_tpc']['curves'][375]['offset'] +['path_tpc']['curves'][374]['res_net_meters'] +['path_tpc']['curves'][375]['offset_meters'] ['path_tpc']['curves'][375]['res_coeff'] -['path_tpc']['curves'][375]['res_net'] -['path_tpc']['curves'][376]['offset'] +['path_tpc']['curves'][375]['res_net_meters'] +['path_tpc']['curves'][376]['offset_meters'] ['path_tpc']['curves'][376]['res_coeff'] -['path_tpc']['curves'][376]['res_net'] -['path_tpc']['curves'][377]['offset'] +['path_tpc']['curves'][376]['res_net_meters'] +['path_tpc']['curves'][377]['offset_meters'] ['path_tpc']['curves'][377]['res_coeff'] -['path_tpc']['curves'][377]['res_net'] -['path_tpc']['curves'][378]['offset'] +['path_tpc']['curves'][377]['res_net_meters'] +['path_tpc']['curves'][378]['offset_meters'] ['path_tpc']['curves'][378]['res_coeff'] -['path_tpc']['curves'][378]['res_net'] -['path_tpc']['curves'][379]['offset'] +['path_tpc']['curves'][378]['res_net_meters'] +['path_tpc']['curves'][379]['offset_meters'] ['path_tpc']['curves'][379]['res_coeff'] -['path_tpc']['curves'][379]['res_net'] -['path_tpc']['curves'][380]['offset'] +['path_tpc']['curves'][379]['res_net_meters'] +['path_tpc']['curves'][380]['offset_meters'] ['path_tpc']['curves'][380]['res_coeff'] -['path_tpc']['curves'][380]['res_net'] -['path_tpc']['curves'][381]['offset'] +['path_tpc']['curves'][380]['res_net_meters'] +['path_tpc']['curves'][381]['offset_meters'] ['path_tpc']['curves'][381]['res_coeff'] -['path_tpc']['curves'][381]['res_net'] -['path_tpc']['curves'][382]['offset'] +['path_tpc']['curves'][381]['res_net_meters'] +['path_tpc']['curves'][382]['offset_meters'] ['path_tpc']['curves'][382]['res_coeff'] -['path_tpc']['curves'][382]['res_net'] -['path_tpc']['curves'][383]['offset'] +['path_tpc']['curves'][382]['res_net_meters'] +['path_tpc']['curves'][383]['offset_meters'] ['path_tpc']['curves'][383]['res_coeff'] -['path_tpc']['curves'][383]['res_net'] -['path_tpc']['curves'][384]['offset'] +['path_tpc']['curves'][383]['res_net_meters'] +['path_tpc']['curves'][384]['offset_meters'] ['path_tpc']['curves'][384]['res_coeff'] -['path_tpc']['curves'][384]['res_net'] -['path_tpc']['curves'][385]['offset'] +['path_tpc']['curves'][384]['res_net_meters'] +['path_tpc']['curves'][385]['offset_meters'] ['path_tpc']['curves'][385]['res_coeff'] -['path_tpc']['curves'][385]['res_net'] -['path_tpc']['curves'][386]['offset'] +['path_tpc']['curves'][385]['res_net_meters'] +['path_tpc']['curves'][386]['offset_meters'] ['path_tpc']['curves'][386]['res_coeff'] -['path_tpc']['curves'][386]['res_net'] -['path_tpc']['curves'][387]['offset'] +['path_tpc']['curves'][386]['res_net_meters'] +['path_tpc']['curves'][387]['offset_meters'] ['path_tpc']['curves'][387]['res_coeff'] -['path_tpc']['curves'][387]['res_net'] -['path_tpc']['curves'][388]['offset'] +['path_tpc']['curves'][387]['res_net_meters'] +['path_tpc']['curves'][388]['offset_meters'] ['path_tpc']['curves'][388]['res_coeff'] -['path_tpc']['curves'][388]['res_net'] -['path_tpc']['curves'][389]['offset'] +['path_tpc']['curves'][388]['res_net_meters'] +['path_tpc']['curves'][389]['offset_meters'] ['path_tpc']['curves'][389]['res_coeff'] -['path_tpc']['curves'][389]['res_net'] -['path_tpc']['curves'][390]['offset'] +['path_tpc']['curves'][389]['res_net_meters'] +['path_tpc']['curves'][390]['offset_meters'] ['path_tpc']['curves'][390]['res_coeff'] -['path_tpc']['curves'][390]['res_net'] -['path_tpc']['curves'][391]['offset'] +['path_tpc']['curves'][390]['res_net_meters'] +['path_tpc']['curves'][391]['offset_meters'] ['path_tpc']['curves'][391]['res_coeff'] -['path_tpc']['curves'][391]['res_net'] -['path_tpc']['curves'][392]['offset'] +['path_tpc']['curves'][391]['res_net_meters'] +['path_tpc']['curves'][392]['offset_meters'] ['path_tpc']['curves'][392]['res_coeff'] -['path_tpc']['curves'][392]['res_net'] -['path_tpc']['curves'][393]['offset'] +['path_tpc']['curves'][392]['res_net_meters'] +['path_tpc']['curves'][393]['offset_meters'] ['path_tpc']['curves'][393]['res_coeff'] -['path_tpc']['curves'][393]['res_net'] -['path_tpc']['curves'][394]['offset'] +['path_tpc']['curves'][393]['res_net_meters'] +['path_tpc']['curves'][394]['offset_meters'] ['path_tpc']['curves'][394]['res_coeff'] -['path_tpc']['curves'][394]['res_net'] -['path_tpc']['curves'][395]['offset'] +['path_tpc']['curves'][394]['res_net_meters'] +['path_tpc']['curves'][395]['offset_meters'] ['path_tpc']['curves'][395]['res_coeff'] -['path_tpc']['curves'][395]['res_net'] -['path_tpc']['curves'][396]['offset'] +['path_tpc']['curves'][395]['res_net_meters'] +['path_tpc']['curves'][396]['offset_meters'] ['path_tpc']['curves'][396]['res_coeff'] -['path_tpc']['curves'][396]['res_net'] -['path_tpc']['curves'][397]['offset'] +['path_tpc']['curves'][396]['res_net_meters'] +['path_tpc']['curves'][397]['offset_meters'] ['path_tpc']['curves'][397]['res_coeff'] -['path_tpc']['curves'][397]['res_net'] -['path_tpc']['curves'][398]['offset'] +['path_tpc']['curves'][397]['res_net_meters'] +['path_tpc']['curves'][398]['offset_meters'] ['path_tpc']['curves'][398]['res_coeff'] -['path_tpc']['curves'][398]['res_net'] -['path_tpc']['curves'][399]['offset'] +['path_tpc']['curves'][398]['res_net_meters'] +['path_tpc']['curves'][399]['offset_meters'] ['path_tpc']['curves'][399]['res_coeff'] -['path_tpc']['curves'][399]['res_net'] -['path_tpc']['curves'][400]['offset'] +['path_tpc']['curves'][399]['res_net_meters'] +['path_tpc']['curves'][400]['offset_meters'] ['path_tpc']['curves'][400]['res_coeff'] -['path_tpc']['curves'][400]['res_net'] -['path_tpc']['curves'][401]['offset'] +['path_tpc']['curves'][400]['res_net_meters'] +['path_tpc']['curves'][401]['offset_meters'] ['path_tpc']['curves'][401]['res_coeff'] -['path_tpc']['curves'][401]['res_net'] -['path_tpc']['curves'][402]['offset'] +['path_tpc']['curves'][401]['res_net_meters'] +['path_tpc']['curves'][402]['offset_meters'] ['path_tpc']['curves'][402]['res_coeff'] -['path_tpc']['curves'][402]['res_net'] -['path_tpc']['curves'][403]['offset'] +['path_tpc']['curves'][402]['res_net_meters'] +['path_tpc']['curves'][403]['offset_meters'] ['path_tpc']['curves'][403]['res_coeff'] -['path_tpc']['curves'][403]['res_net'] -['path_tpc']['curves'][404]['offset'] +['path_tpc']['curves'][403]['res_net_meters'] +['path_tpc']['curves'][404]['offset_meters'] ['path_tpc']['curves'][404]['res_coeff'] -['path_tpc']['curves'][404]['res_net'] -['path_tpc']['curves'][405]['offset'] +['path_tpc']['curves'][404]['res_net_meters'] +['path_tpc']['curves'][405]['offset_meters'] ['path_tpc']['curves'][405]['res_coeff'] -['path_tpc']['curves'][405]['res_net'] -['path_tpc']['curves'][406]['offset'] +['path_tpc']['curves'][405]['res_net_meters'] +['path_tpc']['curves'][406]['offset_meters'] ['path_tpc']['curves'][406]['res_coeff'] -['path_tpc']['curves'][406]['res_net'] -['path_tpc']['curves'][407]['offset'] +['path_tpc']['curves'][406]['res_net_meters'] +['path_tpc']['curves'][407]['offset_meters'] ['path_tpc']['curves'][407]['res_coeff'] -['path_tpc']['curves'][407]['res_net'] -['path_tpc']['curves'][408]['offset'] +['path_tpc']['curves'][407]['res_net_meters'] +['path_tpc']['curves'][408]['offset_meters'] ['path_tpc']['curves'][408]['res_coeff'] -['path_tpc']['curves'][408]['res_net'] -['path_tpc']['curves'][409]['offset'] +['path_tpc']['curves'][408]['res_net_meters'] +['path_tpc']['curves'][409]['offset_meters'] ['path_tpc']['curves'][409]['res_coeff'] -['path_tpc']['curves'][409]['res_net'] -['path_tpc']['curves'][410]['offset'] +['path_tpc']['curves'][409]['res_net_meters'] +['path_tpc']['curves'][410]['offset_meters'] ['path_tpc']['curves'][410]['res_coeff'] -['path_tpc']['curves'][410]['res_net'] -['path_tpc']['curves'][411]['offset'] +['path_tpc']['curves'][410]['res_net_meters'] +['path_tpc']['curves'][411]['offset_meters'] ['path_tpc']['curves'][411]['res_coeff'] -['path_tpc']['curves'][411]['res_net'] -['path_tpc']['curves'][412]['offset'] +['path_tpc']['curves'][411]['res_net_meters'] +['path_tpc']['curves'][412]['offset_meters'] ['path_tpc']['curves'][412]['res_coeff'] -['path_tpc']['curves'][412]['res_net'] -['path_tpc']['curves'][413]['offset'] +['path_tpc']['curves'][412]['res_net_meters'] +['path_tpc']['curves'][413]['offset_meters'] ['path_tpc']['curves'][413]['res_coeff'] -['path_tpc']['curves'][413]['res_net'] -['path_tpc']['curves'][414]['offset'] +['path_tpc']['curves'][413]['res_net_meters'] +['path_tpc']['curves'][414]['offset_meters'] ['path_tpc']['curves'][414]['res_coeff'] -['path_tpc']['curves'][414]['res_net'] -['path_tpc']['curves'][415]['offset'] +['path_tpc']['curves'][414]['res_net_meters'] +['path_tpc']['curves'][415]['offset_meters'] ['path_tpc']['curves'][415]['res_coeff'] -['path_tpc']['curves'][415]['res_net'] -['path_tpc']['curves'][416]['offset'] +['path_tpc']['curves'][415]['res_net_meters'] +['path_tpc']['curves'][416]['offset_meters'] ['path_tpc']['curves'][416]['res_coeff'] -['path_tpc']['curves'][416]['res_net'] -['path_tpc']['curves'][417]['offset'] +['path_tpc']['curves'][416]['res_net_meters'] +['path_tpc']['curves'][417]['offset_meters'] ['path_tpc']['curves'][417]['res_coeff'] -['path_tpc']['curves'][417]['res_net'] -['path_tpc']['curves'][418]['offset'] +['path_tpc']['curves'][417]['res_net_meters'] +['path_tpc']['curves'][418]['offset_meters'] ['path_tpc']['curves'][418]['res_coeff'] -['path_tpc']['curves'][418]['res_net'] -['path_tpc']['curves'][419]['offset'] +['path_tpc']['curves'][418]['res_net_meters'] +['path_tpc']['curves'][419]['offset_meters'] ['path_tpc']['curves'][419]['res_coeff'] -['path_tpc']['curves'][419]['res_net'] -['path_tpc']['curves'][420]['offset'] +['path_tpc']['curves'][419]['res_net_meters'] +['path_tpc']['curves'][420]['offset_meters'] ['path_tpc']['curves'][420]['res_coeff'] -['path_tpc']['curves'][420]['res_net'] -['path_tpc']['curves'][421]['offset'] +['path_tpc']['curves'][420]['res_net_meters'] +['path_tpc']['curves'][421]['offset_meters'] ['path_tpc']['curves'][421]['res_coeff'] -['path_tpc']['curves'][421]['res_net'] -['path_tpc']['curves'][422]['offset'] +['path_tpc']['curves'][421]['res_net_meters'] +['path_tpc']['curves'][422]['offset_meters'] ['path_tpc']['curves'][422]['res_coeff'] -['path_tpc']['curves'][422]['res_net'] -['path_tpc']['curves'][423]['offset'] +['path_tpc']['curves'][422]['res_net_meters'] +['path_tpc']['curves'][423]['offset_meters'] ['path_tpc']['curves'][423]['res_coeff'] -['path_tpc']['curves'][423]['res_net'] -['path_tpc']['curves'][424]['offset'] +['path_tpc']['curves'][423]['res_net_meters'] +['path_tpc']['curves'][424]['offset_meters'] ['path_tpc']['curves'][424]['res_coeff'] -['path_tpc']['curves'][424]['res_net'] -['path_tpc']['curves'][425]['offset'] +['path_tpc']['curves'][424]['res_net_meters'] +['path_tpc']['curves'][425]['offset_meters'] ['path_tpc']['curves'][425]['res_coeff'] -['path_tpc']['curves'][425]['res_net'] -['path_tpc']['curves'][426]['offset'] +['path_tpc']['curves'][425]['res_net_meters'] +['path_tpc']['curves'][426]['offset_meters'] ['path_tpc']['curves'][426]['res_coeff'] -['path_tpc']['curves'][426]['res_net'] -['path_tpc']['curves'][427]['offset'] +['path_tpc']['curves'][426]['res_net_meters'] +['path_tpc']['curves'][427]['offset_meters'] ['path_tpc']['curves'][427]['res_coeff'] -['path_tpc']['curves'][427]['res_net'] -['path_tpc']['curves'][428]['offset'] +['path_tpc']['curves'][427]['res_net_meters'] +['path_tpc']['curves'][428]['offset_meters'] ['path_tpc']['curves'][428]['res_coeff'] -['path_tpc']['curves'][428]['res_net'] -['path_tpc']['curves'][429]['offset'] +['path_tpc']['curves'][428]['res_net_meters'] +['path_tpc']['curves'][429]['offset_meters'] ['path_tpc']['curves'][429]['res_coeff'] -['path_tpc']['curves'][429]['res_net'] -['path_tpc']['curves'][430]['offset'] +['path_tpc']['curves'][429]['res_net_meters'] +['path_tpc']['curves'][430]['offset_meters'] ['path_tpc']['curves'][430]['res_coeff'] -['path_tpc']['curves'][430]['res_net'] -['path_tpc']['curves'][431]['offset'] +['path_tpc']['curves'][430]['res_net_meters'] +['path_tpc']['curves'][431]['offset_meters'] ['path_tpc']['curves'][431]['res_coeff'] -['path_tpc']['curves'][431]['res_net'] -['path_tpc']['curves'][432]['offset'] +['path_tpc']['curves'][431]['res_net_meters'] +['path_tpc']['curves'][432]['offset_meters'] ['path_tpc']['curves'][432]['res_coeff'] -['path_tpc']['curves'][432]['res_net'] -['path_tpc']['curves'][433]['offset'] +['path_tpc']['curves'][432]['res_net_meters'] +['path_tpc']['curves'][433]['offset_meters'] ['path_tpc']['curves'][433]['res_coeff'] -['path_tpc']['curves'][433]['res_net'] -['path_tpc']['curves'][434]['offset'] +['path_tpc']['curves'][433]['res_net_meters'] +['path_tpc']['curves'][434]['offset_meters'] ['path_tpc']['curves'][434]['res_coeff'] -['path_tpc']['curves'][434]['res_net'] -['path_tpc']['curves'][435]['offset'] +['path_tpc']['curves'][434]['res_net_meters'] +['path_tpc']['curves'][435]['offset_meters'] ['path_tpc']['curves'][435]['res_coeff'] -['path_tpc']['curves'][435]['res_net'] -['path_tpc']['curves'][436]['offset'] +['path_tpc']['curves'][435]['res_net_meters'] +['path_tpc']['curves'][436]['offset_meters'] ['path_tpc']['curves'][436]['res_coeff'] -['path_tpc']['curves'][436]['res_net'] -['path_tpc']['curves'][437]['offset'] +['path_tpc']['curves'][436]['res_net_meters'] +['path_tpc']['curves'][437]['offset_meters'] ['path_tpc']['curves'][437]['res_coeff'] -['path_tpc']['curves'][437]['res_net'] -['path_tpc']['curves'][438]['offset'] +['path_tpc']['curves'][437]['res_net_meters'] +['path_tpc']['curves'][438]['offset_meters'] ['path_tpc']['curves'][438]['res_coeff'] -['path_tpc']['curves'][438]['res_net'] -['path_tpc']['curves'][439]['offset'] +['path_tpc']['curves'][438]['res_net_meters'] +['path_tpc']['curves'][439]['offset_meters'] ['path_tpc']['curves'][439]['res_coeff'] -['path_tpc']['curves'][439]['res_net'] -['path_tpc']['curves'][440]['offset'] +['path_tpc']['curves'][439]['res_net_meters'] +['path_tpc']['curves'][440]['offset_meters'] ['path_tpc']['curves'][440]['res_coeff'] -['path_tpc']['curves'][440]['res_net'] -['path_tpc']['curves'][441]['offset'] +['path_tpc']['curves'][440]['res_net_meters'] +['path_tpc']['curves'][441]['offset_meters'] ['path_tpc']['curves'][441]['res_coeff'] -['path_tpc']['curves'][441]['res_net'] -['path_tpc']['curves'][442]['offset'] +['path_tpc']['curves'][441]['res_net_meters'] +['path_tpc']['curves'][442]['offset_meters'] ['path_tpc']['curves'][442]['res_coeff'] -['path_tpc']['curves'][442]['res_net'] -['path_tpc']['curves'][443]['offset'] +['path_tpc']['curves'][442]['res_net_meters'] +['path_tpc']['curves'][443]['offset_meters'] ['path_tpc']['curves'][443]['res_coeff'] -['path_tpc']['curves'][443]['res_net'] -['path_tpc']['curves'][444]['offset'] +['path_tpc']['curves'][443]['res_net_meters'] +['path_tpc']['curves'][444]['offset_meters'] ['path_tpc']['curves'][444]['res_coeff'] -['path_tpc']['curves'][444]['res_net'] -['path_tpc']['curves'][445]['offset'] +['path_tpc']['curves'][444]['res_net_meters'] +['path_tpc']['curves'][445]['offset_meters'] ['path_tpc']['curves'][445]['res_coeff'] -['path_tpc']['curves'][445]['res_net'] -['path_tpc']['curves'][446]['offset'] +['path_tpc']['curves'][445]['res_net_meters'] +['path_tpc']['curves'][446]['offset_meters'] ['path_tpc']['curves'][446]['res_coeff'] -['path_tpc']['curves'][446]['res_net'] -['path_tpc']['curves'][447]['offset'] +['path_tpc']['curves'][446]['res_net_meters'] +['path_tpc']['curves'][447]['offset_meters'] ['path_tpc']['curves'][447]['res_coeff'] -['path_tpc']['curves'][447]['res_net'] -['path_tpc']['curves'][448]['offset'] +['path_tpc']['curves'][447]['res_net_meters'] +['path_tpc']['curves'][448]['offset_meters'] ['path_tpc']['curves'][448]['res_coeff'] -['path_tpc']['curves'][448]['res_net'] -['path_tpc']['curves'][449]['offset'] +['path_tpc']['curves'][448]['res_net_meters'] +['path_tpc']['curves'][449]['offset_meters'] ['path_tpc']['curves'][449]['res_coeff'] -['path_tpc']['curves'][449]['res_net'] -['path_tpc']['curves'][450]['offset'] +['path_tpc']['curves'][449]['res_net_meters'] +['path_tpc']['curves'][450]['offset_meters'] ['path_tpc']['curves'][450]['res_coeff'] -['path_tpc']['curves'][450]['res_net'] -['path_tpc']['curves'][451]['offset'] +['path_tpc']['curves'][450]['res_net_meters'] +['path_tpc']['curves'][451]['offset_meters'] ['path_tpc']['curves'][451]['res_coeff'] -['path_tpc']['curves'][451]['res_net'] -['path_tpc']['curves'][452]['offset'] +['path_tpc']['curves'][451]['res_net_meters'] +['path_tpc']['curves'][452]['offset_meters'] ['path_tpc']['curves'][452]['res_coeff'] -['path_tpc']['curves'][452]['res_net'] -['path_tpc']['curves'][453]['offset'] +['path_tpc']['curves'][452]['res_net_meters'] +['path_tpc']['curves'][453]['offset_meters'] ['path_tpc']['curves'][453]['res_coeff'] -['path_tpc']['curves'][453]['res_net'] -['path_tpc']['curves'][454]['offset'] +['path_tpc']['curves'][453]['res_net_meters'] +['path_tpc']['curves'][454]['offset_meters'] ['path_tpc']['curves'][454]['res_coeff'] -['path_tpc']['curves'][454]['res_net'] -['path_tpc']['curves'][455]['offset'] +['path_tpc']['curves'][454]['res_net_meters'] +['path_tpc']['curves'][455]['offset_meters'] ['path_tpc']['curves'][455]['res_coeff'] -['path_tpc']['curves'][455]['res_net'] -['path_tpc']['curves'][456]['offset'] +['path_tpc']['curves'][455]['res_net_meters'] +['path_tpc']['curves'][456]['offset_meters'] ['path_tpc']['curves'][456]['res_coeff'] -['path_tpc']['curves'][456]['res_net'] -['path_tpc']['curves'][457]['offset'] +['path_tpc']['curves'][456]['res_net_meters'] +['path_tpc']['curves'][457]['offset_meters'] ['path_tpc']['curves'][457]['res_coeff'] -['path_tpc']['curves'][457]['res_net'] -['path_tpc']['curves'][458]['offset'] +['path_tpc']['curves'][457]['res_net_meters'] +['path_tpc']['curves'][458]['offset_meters'] ['path_tpc']['curves'][458]['res_coeff'] -['path_tpc']['curves'][458]['res_net'] -['path_tpc']['curves'][459]['offset'] +['path_tpc']['curves'][458]['res_net_meters'] +['path_tpc']['curves'][459]['offset_meters'] ['path_tpc']['curves'][459]['res_coeff'] -['path_tpc']['curves'][459]['res_net'] -['path_tpc']['curves'][460]['offset'] +['path_tpc']['curves'][459]['res_net_meters'] +['path_tpc']['curves'][460]['offset_meters'] ['path_tpc']['curves'][460]['res_coeff'] -['path_tpc']['curves'][460]['res_net'] -['path_tpc']['curves'][461]['offset'] +['path_tpc']['curves'][460]['res_net_meters'] +['path_tpc']['curves'][461]['offset_meters'] ['path_tpc']['curves'][461]['res_coeff'] -['path_tpc']['curves'][461]['res_net'] -['path_tpc']['curves'][462]['offset'] +['path_tpc']['curves'][461]['res_net_meters'] +['path_tpc']['curves'][462]['offset_meters'] ['path_tpc']['curves'][462]['res_coeff'] -['path_tpc']['curves'][462]['res_net'] -['path_tpc']['curves'][463]['offset'] +['path_tpc']['curves'][462]['res_net_meters'] +['path_tpc']['curves'][463]['offset_meters'] ['path_tpc']['curves'][463]['res_coeff'] -['path_tpc']['curves'][463]['res_net'] -['path_tpc']['curves'][464]['offset'] +['path_tpc']['curves'][463]['res_net_meters'] +['path_tpc']['curves'][464]['offset_meters'] ['path_tpc']['curves'][464]['res_coeff'] -['path_tpc']['curves'][464]['res_net'] -['path_tpc']['curves'][465]['offset'] +['path_tpc']['curves'][464]['res_net_meters'] +['path_tpc']['curves'][465]['offset_meters'] ['path_tpc']['curves'][465]['res_coeff'] -['path_tpc']['curves'][465]['res_net'] -['path_tpc']['curves'][466]['offset'] +['path_tpc']['curves'][465]['res_net_meters'] +['path_tpc']['curves'][466]['offset_meters'] ['path_tpc']['curves'][466]['res_coeff'] -['path_tpc']['curves'][466]['res_net'] -['path_tpc']['curves'][467]['offset'] +['path_tpc']['curves'][466]['res_net_meters'] +['path_tpc']['curves'][467]['offset_meters'] ['path_tpc']['curves'][467]['res_coeff'] -['path_tpc']['curves'][467]['res_net'] -['path_tpc']['curves'][468]['offset'] +['path_tpc']['curves'][467]['res_net_meters'] +['path_tpc']['curves'][468]['offset_meters'] ['path_tpc']['curves'][468]['res_coeff'] -['path_tpc']['curves'][468]['res_net'] -['path_tpc']['curves'][469]['offset'] +['path_tpc']['curves'][468]['res_net_meters'] +['path_tpc']['curves'][469]['offset_meters'] ['path_tpc']['curves'][469]['res_coeff'] -['path_tpc']['curves'][469]['res_net'] -['path_tpc']['curves'][470]['offset'] +['path_tpc']['curves'][469]['res_net_meters'] +['path_tpc']['curves'][470]['offset_meters'] ['path_tpc']['curves'][470]['res_coeff'] -['path_tpc']['curves'][470]['res_net'] -['path_tpc']['curves'][471]['offset'] +['path_tpc']['curves'][470]['res_net_meters'] +['path_tpc']['curves'][471]['offset_meters'] ['path_tpc']['curves'][471]['res_coeff'] -['path_tpc']['curves'][471]['res_net'] -['path_tpc']['curves'][472]['offset'] +['path_tpc']['curves'][471]['res_net_meters'] +['path_tpc']['curves'][472]['offset_meters'] ['path_tpc']['curves'][472]['res_coeff'] -['path_tpc']['curves'][472]['res_net'] -['path_tpc']['curves'][473]['offset'] +['path_tpc']['curves'][472]['res_net_meters'] +['path_tpc']['curves'][473]['offset_meters'] ['path_tpc']['curves'][473]['res_coeff'] -['path_tpc']['curves'][473]['res_net'] -['path_tpc']['curves'][474]['offset'] +['path_tpc']['curves'][473]['res_net_meters'] +['path_tpc']['curves'][474]['offset_meters'] ['path_tpc']['curves'][474]['res_coeff'] -['path_tpc']['curves'][474]['res_net'] -['path_tpc']['curves'][475]['offset'] +['path_tpc']['curves'][474]['res_net_meters'] +['path_tpc']['curves'][475]['offset_meters'] ['path_tpc']['curves'][475]['res_coeff'] -['path_tpc']['curves'][475]['res_net'] -['path_tpc']['curves'][476]['offset'] +['path_tpc']['curves'][475]['res_net_meters'] +['path_tpc']['curves'][476]['offset_meters'] ['path_tpc']['curves'][476]['res_coeff'] -['path_tpc']['curves'][476]['res_net'] -['path_tpc']['curves'][477]['offset'] +['path_tpc']['curves'][476]['res_net_meters'] +['path_tpc']['curves'][477]['offset_meters'] ['path_tpc']['curves'][477]['res_coeff'] -['path_tpc']['curves'][477]['res_net'] -['path_tpc']['curves'][478]['offset'] +['path_tpc']['curves'][477]['res_net_meters'] +['path_tpc']['curves'][478]['offset_meters'] ['path_tpc']['curves'][478]['res_coeff'] -['path_tpc']['curves'][478]['res_net'] -['path_tpc']['curves'][479]['offset'] +['path_tpc']['curves'][478]['res_net_meters'] +['path_tpc']['curves'][479]['offset_meters'] ['path_tpc']['curves'][479]['res_coeff'] -['path_tpc']['curves'][479]['res_net'] -['path_tpc']['curves'][480]['offset'] +['path_tpc']['curves'][479]['res_net_meters'] +['path_tpc']['curves'][480]['offset_meters'] ['path_tpc']['curves'][480]['res_coeff'] -['path_tpc']['curves'][480]['res_net'] -['path_tpc']['curves'][481]['offset'] +['path_tpc']['curves'][480]['res_net_meters'] +['path_tpc']['curves'][481]['offset_meters'] ['path_tpc']['curves'][481]['res_coeff'] -['path_tpc']['curves'][481]['res_net'] -['path_tpc']['curves'][482]['offset'] +['path_tpc']['curves'][481]['res_net_meters'] +['path_tpc']['curves'][482]['offset_meters'] ['path_tpc']['curves'][482]['res_coeff'] -['path_tpc']['curves'][482]['res_net'] -['path_tpc']['curves'][483]['offset'] +['path_tpc']['curves'][482]['res_net_meters'] +['path_tpc']['curves'][483]['offset_meters'] ['path_tpc']['curves'][483]['res_coeff'] -['path_tpc']['curves'][483]['res_net'] -['path_tpc']['curves'][484]['offset'] +['path_tpc']['curves'][483]['res_net_meters'] +['path_tpc']['curves'][484]['offset_meters'] ['path_tpc']['curves'][484]['res_coeff'] -['path_tpc']['curves'][484]['res_net'] -['path_tpc']['curves'][485]['offset'] +['path_tpc']['curves'][484]['res_net_meters'] +['path_tpc']['curves'][485]['offset_meters'] ['path_tpc']['curves'][485]['res_coeff'] -['path_tpc']['curves'][485]['res_net'] -['path_tpc']['curves'][486]['offset'] +['path_tpc']['curves'][485]['res_net_meters'] +['path_tpc']['curves'][486]['offset_meters'] ['path_tpc']['curves'][486]['res_coeff'] -['path_tpc']['curves'][486]['res_net'] -['path_tpc']['curves'][487]['offset'] +['path_tpc']['curves'][486]['res_net_meters'] +['path_tpc']['curves'][487]['offset_meters'] ['path_tpc']['curves'][487]['res_coeff'] -['path_tpc']['curves'][487]['res_net'] -['path_tpc']['curves'][488]['offset'] +['path_tpc']['curves'][487]['res_net_meters'] +['path_tpc']['curves'][488]['offset_meters'] ['path_tpc']['curves'][488]['res_coeff'] -['path_tpc']['curves'][488]['res_net'] -['path_tpc']['curves'][489]['offset'] +['path_tpc']['curves'][488]['res_net_meters'] +['path_tpc']['curves'][489]['offset_meters'] ['path_tpc']['curves'][489]['res_coeff'] -['path_tpc']['curves'][489]['res_net'] -['path_tpc']['curves'][490]['offset'] +['path_tpc']['curves'][489]['res_net_meters'] +['path_tpc']['curves'][490]['offset_meters'] ['path_tpc']['curves'][490]['res_coeff'] -['path_tpc']['curves'][490]['res_net'] -['path_tpc']['curves'][491]['offset'] +['path_tpc']['curves'][490]['res_net_meters'] +['path_tpc']['curves'][491]['offset_meters'] ['path_tpc']['curves'][491]['res_coeff'] -['path_tpc']['curves'][491]['res_net'] -['path_tpc']['curves'][492]['offset'] +['path_tpc']['curves'][491]['res_net_meters'] +['path_tpc']['curves'][492]['offset_meters'] ['path_tpc']['curves'][492]['res_coeff'] -['path_tpc']['curves'][492]['res_net'] -['path_tpc']['curves'][493]['offset'] +['path_tpc']['curves'][492]['res_net_meters'] +['path_tpc']['curves'][493]['offset_meters'] ['path_tpc']['curves'][493]['res_coeff'] -['path_tpc']['curves'][493]['res_net'] -['path_tpc']['curves'][494]['offset'] +['path_tpc']['curves'][493]['res_net_meters'] +['path_tpc']['curves'][494]['offset_meters'] ['path_tpc']['curves'][494]['res_coeff'] -['path_tpc']['curves'][494]['res_net'] -['path_tpc']['curves'][495]['offset'] +['path_tpc']['curves'][494]['res_net_meters'] +['path_tpc']['curves'][495]['offset_meters'] ['path_tpc']['curves'][495]['res_coeff'] -['path_tpc']['curves'][495]['res_net'] -['path_tpc']['curves'][496]['offset'] +['path_tpc']['curves'][495]['res_net_meters'] +['path_tpc']['curves'][496]['offset_meters'] ['path_tpc']['curves'][496]['res_coeff'] -['path_tpc']['curves'][496]['res_net'] -['path_tpc']['curves'][497]['offset'] +['path_tpc']['curves'][496]['res_net_meters'] +['path_tpc']['curves'][497]['offset_meters'] ['path_tpc']['curves'][497]['res_coeff'] -['path_tpc']['curves'][497]['res_net'] -['path_tpc']['curves'][498]['offset'] +['path_tpc']['curves'][497]['res_net_meters'] +['path_tpc']['curves'][498]['offset_meters'] ['path_tpc']['curves'][498]['res_coeff'] -['path_tpc']['curves'][498]['res_net'] -['path_tpc']['curves'][499]['offset'] +['path_tpc']['curves'][498]['res_net_meters'] +['path_tpc']['curves'][499]['offset_meters'] ['path_tpc']['curves'][499]['res_coeff'] -['path_tpc']['curves'][499]['res_net'] -['path_tpc']['curves'][500]['offset'] +['path_tpc']['curves'][499]['res_net_meters'] +['path_tpc']['curves'][500]['offset_meters'] ['path_tpc']['curves'][500]['res_coeff'] -['path_tpc']['curves'][500]['res_net'] -['path_tpc']['curves'][501]['offset'] +['path_tpc']['curves'][500]['res_net_meters'] +['path_tpc']['curves'][501]['offset_meters'] ['path_tpc']['curves'][501]['res_coeff'] -['path_tpc']['curves'][501]['res_net'] -['path_tpc']['curves'][502]['offset'] +['path_tpc']['curves'][501]['res_net_meters'] +['path_tpc']['curves'][502]['offset_meters'] ['path_tpc']['curves'][502]['res_coeff'] -['path_tpc']['curves'][502]['res_net'] -['path_tpc']['curves'][503]['offset'] +['path_tpc']['curves'][502]['res_net_meters'] +['path_tpc']['curves'][503]['offset_meters'] ['path_tpc']['curves'][503]['res_coeff'] -['path_tpc']['curves'][503]['res_net'] -['path_tpc']['curves'][504]['offset'] +['path_tpc']['curves'][503]['res_net_meters'] +['path_tpc']['curves'][504]['offset_meters'] ['path_tpc']['curves'][504]['res_coeff'] -['path_tpc']['curves'][504]['res_net'] -['path_tpc']['curves'][505]['offset'] +['path_tpc']['curves'][504]['res_net_meters'] +['path_tpc']['curves'][505]['offset_meters'] ['path_tpc']['curves'][505]['res_coeff'] -['path_tpc']['curves'][505]['res_net'] -['path_tpc']['curves'][506]['offset'] +['path_tpc']['curves'][505]['res_net_meters'] +['path_tpc']['curves'][506]['offset_meters'] ['path_tpc']['curves'][506]['res_coeff'] -['path_tpc']['curves'][506]['res_net'] -['path_tpc']['curves'][507]['offset'] +['path_tpc']['curves'][506]['res_net_meters'] +['path_tpc']['curves'][507]['offset_meters'] ['path_tpc']['curves'][507]['res_coeff'] -['path_tpc']['curves'][507]['res_net'] -['path_tpc']['curves'][508]['offset'] +['path_tpc']['curves'][507]['res_net_meters'] +['path_tpc']['curves'][508]['offset_meters'] ['path_tpc']['curves'][508]['res_coeff'] -['path_tpc']['curves'][508]['res_net'] -['path_tpc']['curves'][509]['offset'] +['path_tpc']['curves'][508]['res_net_meters'] +['path_tpc']['curves'][509]['offset_meters'] ['path_tpc']['curves'][509]['res_coeff'] -['path_tpc']['curves'][509]['res_net'] -['path_tpc']['curves'][510]['offset'] +['path_tpc']['curves'][509]['res_net_meters'] +['path_tpc']['curves'][510]['offset_meters'] ['path_tpc']['curves'][510]['res_coeff'] -['path_tpc']['curves'][510]['res_net'] -['path_tpc']['curves'][511]['offset'] +['path_tpc']['curves'][510]['res_net_meters'] +['path_tpc']['curves'][511]['offset_meters'] ['path_tpc']['curves'][511]['res_coeff'] -['path_tpc']['curves'][511]['res_net'] -['path_tpc']['curves'][512]['offset'] +['path_tpc']['curves'][511]['res_net_meters'] +['path_tpc']['curves'][512]['offset_meters'] ['path_tpc']['curves'][512]['res_coeff'] -['path_tpc']['curves'][512]['res_net'] -['path_tpc']['curves'][513]['offset'] +['path_tpc']['curves'][512]['res_net_meters'] +['path_tpc']['curves'][513]['offset_meters'] ['path_tpc']['curves'][513]['res_coeff'] -['path_tpc']['curves'][513]['res_net'] -['path_tpc']['curves'][514]['offset'] +['path_tpc']['curves'][513]['res_net_meters'] +['path_tpc']['curves'][514]['offset_meters'] ['path_tpc']['curves'][514]['res_coeff'] -['path_tpc']['curves'][514]['res_net'] -['path_tpc']['curves'][515]['offset'] +['path_tpc']['curves'][514]['res_net_meters'] +['path_tpc']['curves'][515]['offset_meters'] ['path_tpc']['curves'][515]['res_coeff'] -['path_tpc']['curves'][515]['res_net'] -['path_tpc']['curves'][516]['offset'] +['path_tpc']['curves'][515]['res_net_meters'] +['path_tpc']['curves'][516]['offset_meters'] ['path_tpc']['curves'][516]['res_coeff'] -['path_tpc']['curves'][516]['res_net'] -['path_tpc']['curves'][517]['offset'] +['path_tpc']['curves'][516]['res_net_meters'] +['path_tpc']['curves'][517]['offset_meters'] ['path_tpc']['curves'][517]['res_coeff'] -['path_tpc']['curves'][517]['res_net'] -['path_tpc']['curves'][518]['offset'] +['path_tpc']['curves'][517]['res_net_meters'] +['path_tpc']['curves'][518]['offset_meters'] ['path_tpc']['curves'][518]['res_coeff'] -['path_tpc']['curves'][518]['res_net'] -['path_tpc']['curves'][519]['offset'] +['path_tpc']['curves'][518]['res_net_meters'] +['path_tpc']['curves'][519]['offset_meters'] ['path_tpc']['curves'][519]['res_coeff'] -['path_tpc']['curves'][519]['res_net'] -['path_tpc']['curves'][520]['offset'] +['path_tpc']['curves'][519]['res_net_meters'] +['path_tpc']['curves'][520]['offset_meters'] ['path_tpc']['curves'][520]['res_coeff'] -['path_tpc']['curves'][520]['res_net'] -['path_tpc']['curves'][521]['offset'] +['path_tpc']['curves'][520]['res_net_meters'] +['path_tpc']['curves'][521]['offset_meters'] ['path_tpc']['curves'][521]['res_coeff'] -['path_tpc']['curves'][521]['res_net'] -['path_tpc']['curves'][522]['offset'] +['path_tpc']['curves'][521]['res_net_meters'] +['path_tpc']['curves'][522]['offset_meters'] ['path_tpc']['curves'][522]['res_coeff'] -['path_tpc']['curves'][522]['res_net'] -['path_tpc']['curves'][523]['offset'] +['path_tpc']['curves'][522]['res_net_meters'] +['path_tpc']['curves'][523]['offset_meters'] ['path_tpc']['curves'][523]['res_coeff'] -['path_tpc']['curves'][523]['res_net'] -['path_tpc']['curves'][524]['offset'] +['path_tpc']['curves'][523]['res_net_meters'] +['path_tpc']['curves'][524]['offset_meters'] ['path_tpc']['curves'][524]['res_coeff'] -['path_tpc']['curves'][524]['res_net'] -['path_tpc']['curves'][525]['offset'] +['path_tpc']['curves'][524]['res_net_meters'] +['path_tpc']['curves'][525]['offset_meters'] ['path_tpc']['curves'][525]['res_coeff'] -['path_tpc']['curves'][525]['res_net'] -['path_tpc']['curves'][526]['offset'] +['path_tpc']['curves'][525]['res_net_meters'] +['path_tpc']['curves'][526]['offset_meters'] ['path_tpc']['curves'][526]['res_coeff'] -['path_tpc']['curves'][526]['res_net'] -['path_tpc']['curves'][527]['offset'] +['path_tpc']['curves'][526]['res_net_meters'] +['path_tpc']['curves'][527]['offset_meters'] ['path_tpc']['curves'][527]['res_coeff'] -['path_tpc']['curves'][527]['res_net'] -['path_tpc']['curves'][528]['offset'] +['path_tpc']['curves'][527]['res_net_meters'] +['path_tpc']['curves'][528]['offset_meters'] ['path_tpc']['curves'][528]['res_coeff'] -['path_tpc']['curves'][528]['res_net'] -['path_tpc']['curves'][529]['offset'] +['path_tpc']['curves'][528]['res_net_meters'] +['path_tpc']['curves'][529]['offset_meters'] ['path_tpc']['curves'][529]['res_coeff'] -['path_tpc']['curves'][529]['res_net'] -['path_tpc']['curves'][530]['offset'] +['path_tpc']['curves'][529]['res_net_meters'] +['path_tpc']['curves'][530]['offset_meters'] ['path_tpc']['curves'][530]['res_coeff'] -['path_tpc']['curves'][530]['res_net'] -['path_tpc']['curves'][531]['offset'] +['path_tpc']['curves'][530]['res_net_meters'] +['path_tpc']['curves'][531]['offset_meters'] ['path_tpc']['curves'][531]['res_coeff'] -['path_tpc']['curves'][531]['res_net'] -['path_tpc']['curves'][532]['offset'] +['path_tpc']['curves'][531]['res_net_meters'] +['path_tpc']['curves'][532]['offset_meters'] ['path_tpc']['curves'][532]['res_coeff'] -['path_tpc']['curves'][532]['res_net'] -['path_tpc']['curves'][533]['offset'] +['path_tpc']['curves'][532]['res_net_meters'] +['path_tpc']['curves'][533]['offset_meters'] ['path_tpc']['curves'][533]['res_coeff'] -['path_tpc']['curves'][533]['res_net'] -['path_tpc']['curves'][534]['offset'] +['path_tpc']['curves'][533]['res_net_meters'] +['path_tpc']['curves'][534]['offset_meters'] ['path_tpc']['curves'][534]['res_coeff'] -['path_tpc']['curves'][534]['res_net'] -['path_tpc']['curves'][535]['offset'] +['path_tpc']['curves'][534]['res_net_meters'] +['path_tpc']['curves'][535]['offset_meters'] ['path_tpc']['curves'][535]['res_coeff'] -['path_tpc']['curves'][535]['res_net'] -['path_tpc']['curves'][536]['offset'] +['path_tpc']['curves'][535]['res_net_meters'] +['path_tpc']['curves'][536]['offset_meters'] ['path_tpc']['curves'][536]['res_coeff'] -['path_tpc']['curves'][536]['res_net'] -['path_tpc']['curves'][537]['offset'] +['path_tpc']['curves'][536]['res_net_meters'] +['path_tpc']['curves'][537]['offset_meters'] ['path_tpc']['curves'][537]['res_coeff'] -['path_tpc']['curves'][537]['res_net'] -['path_tpc']['curves'][538]['offset'] +['path_tpc']['curves'][537]['res_net_meters'] +['path_tpc']['curves'][538]['offset_meters'] ['path_tpc']['curves'][538]['res_coeff'] -['path_tpc']['curves'][538]['res_net'] -['path_tpc']['curves'][539]['offset'] +['path_tpc']['curves'][538]['res_net_meters'] +['path_tpc']['curves'][539]['offset_meters'] ['path_tpc']['curves'][539]['res_coeff'] -['path_tpc']['curves'][539]['res_net'] -['path_tpc']['curves'][540]['offset'] +['path_tpc']['curves'][539]['res_net_meters'] +['path_tpc']['curves'][540]['offset_meters'] ['path_tpc']['curves'][540]['res_coeff'] -['path_tpc']['curves'][540]['res_net'] -['path_tpc']['curves'][541]['offset'] +['path_tpc']['curves'][540]['res_net_meters'] +['path_tpc']['curves'][541]['offset_meters'] ['path_tpc']['curves'][541]['res_coeff'] -['path_tpc']['curves'][541]['res_net'] -['path_tpc']['curves'][542]['offset'] +['path_tpc']['curves'][541]['res_net_meters'] +['path_tpc']['curves'][542]['offset_meters'] ['path_tpc']['curves'][542]['res_coeff'] -['path_tpc']['curves'][542]['res_net'] -['path_tpc']['curves'][543]['offset'] +['path_tpc']['curves'][542]['res_net_meters'] +['path_tpc']['curves'][543]['offset_meters'] ['path_tpc']['curves'][543]['res_coeff'] -['path_tpc']['curves'][543]['res_net'] -['path_tpc']['curves'][544]['offset'] +['path_tpc']['curves'][543]['res_net_meters'] +['path_tpc']['curves'][544]['offset_meters'] ['path_tpc']['curves'][544]['res_coeff'] -['path_tpc']['curves'][544]['res_net'] -['path_tpc']['curves'][545]['offset'] +['path_tpc']['curves'][544]['res_net_meters'] +['path_tpc']['curves'][545]['offset_meters'] ['path_tpc']['curves'][545]['res_coeff'] -['path_tpc']['curves'][545]['res_net'] -['path_tpc']['curves'][546]['offset'] +['path_tpc']['curves'][545]['res_net_meters'] +['path_tpc']['curves'][546]['offset_meters'] ['path_tpc']['curves'][546]['res_coeff'] -['path_tpc']['curves'][546]['res_net'] -['path_tpc']['curves'][547]['offset'] +['path_tpc']['curves'][546]['res_net_meters'] +['path_tpc']['curves'][547]['offset_meters'] ['path_tpc']['curves'][547]['res_coeff'] -['path_tpc']['curves'][547]['res_net'] -['path_tpc']['curves'][548]['offset'] +['path_tpc']['curves'][547]['res_net_meters'] +['path_tpc']['curves'][548]['offset_meters'] ['path_tpc']['curves'][548]['res_coeff'] -['path_tpc']['curves'][548]['res_net'] -['path_tpc']['curves'][549]['offset'] +['path_tpc']['curves'][548]['res_net_meters'] +['path_tpc']['curves'][549]['offset_meters'] ['path_tpc']['curves'][549]['res_coeff'] -['path_tpc']['curves'][549]['res_net'] -['path_tpc']['curves'][550]['offset'] +['path_tpc']['curves'][549]['res_net_meters'] +['path_tpc']['curves'][550]['offset_meters'] ['path_tpc']['curves'][550]['res_coeff'] -['path_tpc']['curves'][550]['res_net'] -['path_tpc']['curves'][551]['offset'] +['path_tpc']['curves'][550]['res_net_meters'] +['path_tpc']['curves'][551]['offset_meters'] ['path_tpc']['curves'][551]['res_coeff'] -['path_tpc']['curves'][551]['res_net'] -['path_tpc']['curves'][552]['offset'] +['path_tpc']['curves'][551]['res_net_meters'] +['path_tpc']['curves'][552]['offset_meters'] ['path_tpc']['curves'][552]['res_coeff'] -['path_tpc']['curves'][552]['res_net'] -['path_tpc']['curves'][553]['offset'] +['path_tpc']['curves'][552]['res_net_meters'] +['path_tpc']['curves'][553]['offset_meters'] ['path_tpc']['curves'][553]['res_coeff'] -['path_tpc']['curves'][553]['res_net'] -['path_tpc']['curves'][554]['offset'] +['path_tpc']['curves'][553]['res_net_meters'] +['path_tpc']['curves'][554]['offset_meters'] ['path_tpc']['curves'][554]['res_coeff'] -['path_tpc']['curves'][554]['res_net'] -['path_tpc']['curves'][555]['offset'] +['path_tpc']['curves'][554]['res_net_meters'] +['path_tpc']['curves'][555]['offset_meters'] ['path_tpc']['curves'][555]['res_coeff'] -['path_tpc']['curves'][555]['res_net'] -['path_tpc']['curves'][556]['offset'] +['path_tpc']['curves'][555]['res_net_meters'] +['path_tpc']['curves'][556]['offset_meters'] ['path_tpc']['curves'][556]['res_coeff'] -['path_tpc']['curves'][556]['res_net'] -['path_tpc']['curves'][557]['offset'] +['path_tpc']['curves'][556]['res_net_meters'] +['path_tpc']['curves'][557]['offset_meters'] ['path_tpc']['curves'][557]['res_coeff'] -['path_tpc']['curves'][557]['res_net'] -['path_tpc']['curves'][558]['offset'] +['path_tpc']['curves'][557]['res_net_meters'] +['path_tpc']['curves'][558]['offset_meters'] ['path_tpc']['curves'][558]['res_coeff'] -['path_tpc']['curves'][558]['res_net'] -['path_tpc']['curves'][559]['offset'] +['path_tpc']['curves'][558]['res_net_meters'] +['path_tpc']['curves'][559]['offset_meters'] ['path_tpc']['curves'][559]['res_coeff'] -['path_tpc']['curves'][559]['res_net'] -['path_tpc']['curves'][560]['offset'] +['path_tpc']['curves'][559]['res_net_meters'] +['path_tpc']['curves'][560]['offset_meters'] ['path_tpc']['curves'][560]['res_coeff'] -['path_tpc']['curves'][560]['res_net'] -['path_tpc']['curves'][561]['offset'] +['path_tpc']['curves'][560]['res_net_meters'] +['path_tpc']['curves'][561]['offset_meters'] ['path_tpc']['curves'][561]['res_coeff'] -['path_tpc']['curves'][561]['res_net'] -['path_tpc']['curves'][562]['offset'] +['path_tpc']['curves'][561]['res_net_meters'] +['path_tpc']['curves'][562]['offset_meters'] ['path_tpc']['curves'][562]['res_coeff'] -['path_tpc']['curves'][562]['res_net'] -['path_tpc']['curves'][563]['offset'] +['path_tpc']['curves'][562]['res_net_meters'] +['path_tpc']['curves'][563]['offset_meters'] ['path_tpc']['curves'][563]['res_coeff'] -['path_tpc']['curves'][563]['res_net'] -['path_tpc']['curves'][564]['offset'] +['path_tpc']['curves'][563]['res_net_meters'] +['path_tpc']['curves'][564]['offset_meters'] ['path_tpc']['curves'][564]['res_coeff'] -['path_tpc']['curves'][564]['res_net'] -['path_tpc']['curves'][565]['offset'] +['path_tpc']['curves'][564]['res_net_meters'] +['path_tpc']['curves'][565]['offset_meters'] ['path_tpc']['curves'][565]['res_coeff'] -['path_tpc']['curves'][565]['res_net'] -['path_tpc']['curves'][566]['offset'] +['path_tpc']['curves'][565]['res_net_meters'] +['path_tpc']['curves'][566]['offset_meters'] ['path_tpc']['curves'][566]['res_coeff'] -['path_tpc']['curves'][566]['res_net'] -['path_tpc']['curves'][567]['offset'] +['path_tpc']['curves'][566]['res_net_meters'] +['path_tpc']['curves'][567]['offset_meters'] ['path_tpc']['curves'][567]['res_coeff'] -['path_tpc']['curves'][567]['res_net'] -['path_tpc']['curves'][568]['offset'] +['path_tpc']['curves'][567]['res_net_meters'] +['path_tpc']['curves'][568]['offset_meters'] ['path_tpc']['curves'][568]['res_coeff'] -['path_tpc']['curves'][568]['res_net'] -['path_tpc']['curves'][569]['offset'] +['path_tpc']['curves'][568]['res_net_meters'] +['path_tpc']['curves'][569]['offset_meters'] ['path_tpc']['curves'][569]['res_coeff'] -['path_tpc']['curves'][569]['res_net'] -['path_tpc']['curves'][570]['offset'] +['path_tpc']['curves'][569]['res_net_meters'] +['path_tpc']['curves'][570]['offset_meters'] ['path_tpc']['curves'][570]['res_coeff'] -['path_tpc']['curves'][570]['res_net'] -['path_tpc']['curves'][571]['offset'] +['path_tpc']['curves'][570]['res_net_meters'] +['path_tpc']['curves'][571]['offset_meters'] ['path_tpc']['curves'][571]['res_coeff'] -['path_tpc']['curves'][571]['res_net'] -['path_tpc']['curves'][572]['offset'] +['path_tpc']['curves'][571]['res_net_meters'] +['path_tpc']['curves'][572]['offset_meters'] ['path_tpc']['curves'][572]['res_coeff'] -['path_tpc']['curves'][572]['res_net'] -['path_tpc']['curves'][573]['offset'] +['path_tpc']['curves'][572]['res_net_meters'] +['path_tpc']['curves'][573]['offset_meters'] ['path_tpc']['curves'][573]['res_coeff'] -['path_tpc']['curves'][573]['res_net'] -['path_tpc']['curves'][574]['offset'] +['path_tpc']['curves'][573]['res_net_meters'] +['path_tpc']['curves'][574]['offset_meters'] ['path_tpc']['curves'][574]['res_coeff'] -['path_tpc']['curves'][574]['res_net'] -['path_tpc']['curves'][575]['offset'] +['path_tpc']['curves'][574]['res_net_meters'] +['path_tpc']['curves'][575]['offset_meters'] ['path_tpc']['curves'][575]['res_coeff'] -['path_tpc']['curves'][575]['res_net'] -['path_tpc']['curves'][576]['offset'] +['path_tpc']['curves'][575]['res_net_meters'] +['path_tpc']['curves'][576]['offset_meters'] ['path_tpc']['curves'][576]['res_coeff'] -['path_tpc']['curves'][576]['res_net'] -['path_tpc']['curves'][577]['offset'] +['path_tpc']['curves'][576]['res_net_meters'] +['path_tpc']['curves'][577]['offset_meters'] ['path_tpc']['curves'][577]['res_coeff'] -['path_tpc']['curves'][577]['res_net'] -['path_tpc']['curves'][578]['offset'] +['path_tpc']['curves'][577]['res_net_meters'] +['path_tpc']['curves'][578]['offset_meters'] ['path_tpc']['curves'][578]['res_coeff'] -['path_tpc']['curves'][578]['res_net'] -['path_tpc']['curves'][579]['offset'] +['path_tpc']['curves'][578]['res_net_meters'] +['path_tpc']['curves'][579]['offset_meters'] ['path_tpc']['curves'][579]['res_coeff'] -['path_tpc']['curves'][579]['res_net'] -['path_tpc']['curves'][580]['offset'] +['path_tpc']['curves'][579]['res_net_meters'] +['path_tpc']['curves'][580]['offset_meters'] ['path_tpc']['curves'][580]['res_coeff'] -['path_tpc']['curves'][580]['res_net'] -['path_tpc']['curves'][581]['offset'] +['path_tpc']['curves'][580]['res_net_meters'] +['path_tpc']['curves'][581]['offset_meters'] ['path_tpc']['curves'][581]['res_coeff'] -['path_tpc']['curves'][581]['res_net'] -['path_tpc']['curves'][582]['offset'] +['path_tpc']['curves'][581]['res_net_meters'] +['path_tpc']['curves'][582]['offset_meters'] ['path_tpc']['curves'][582]['res_coeff'] -['path_tpc']['curves'][582]['res_net'] -['path_tpc']['curves'][583]['offset'] +['path_tpc']['curves'][582]['res_net_meters'] +['path_tpc']['curves'][583]['offset_meters'] ['path_tpc']['curves'][583]['res_coeff'] -['path_tpc']['curves'][583]['res_net'] -['path_tpc']['curves'][584]['offset'] +['path_tpc']['curves'][583]['res_net_meters'] +['path_tpc']['curves'][584]['offset_meters'] ['path_tpc']['curves'][584]['res_coeff'] -['path_tpc']['curves'][584]['res_net'] -['path_tpc']['curves'][585]['offset'] +['path_tpc']['curves'][584]['res_net_meters'] +['path_tpc']['curves'][585]['offset_meters'] ['path_tpc']['curves'][585]['res_coeff'] -['path_tpc']['curves'][585]['res_net'] -['path_tpc']['curves'][586]['offset'] +['path_tpc']['curves'][585]['res_net_meters'] +['path_tpc']['curves'][586]['offset_meters'] ['path_tpc']['curves'][586]['res_coeff'] -['path_tpc']['curves'][586]['res_net'] -['path_tpc']['curves'][587]['offset'] +['path_tpc']['curves'][586]['res_net_meters'] +['path_tpc']['curves'][587]['offset_meters'] ['path_tpc']['curves'][587]['res_coeff'] -['path_tpc']['curves'][587]['res_net'] -['path_tpc']['curves'][588]['offset'] +['path_tpc']['curves'][587]['res_net_meters'] +['path_tpc']['curves'][588]['offset_meters'] ['path_tpc']['curves'][588]['res_coeff'] -['path_tpc']['curves'][588]['res_net'] -['path_tpc']['curves'][589]['offset'] +['path_tpc']['curves'][588]['res_net_meters'] +['path_tpc']['curves'][589]['offset_meters'] ['path_tpc']['curves'][589]['res_coeff'] -['path_tpc']['curves'][589]['res_net'] -['path_tpc']['curves'][590]['offset'] +['path_tpc']['curves'][589]['res_net_meters'] +['path_tpc']['curves'][590]['offset_meters'] ['path_tpc']['curves'][590]['res_coeff'] -['path_tpc']['curves'][590]['res_net'] -['path_tpc']['curves'][591]['offset'] +['path_tpc']['curves'][590]['res_net_meters'] +['path_tpc']['curves'][591]['offset_meters'] ['path_tpc']['curves'][591]['res_coeff'] -['path_tpc']['curves'][591]['res_net'] -['path_tpc']['curves'][592]['offset'] +['path_tpc']['curves'][591]['res_net_meters'] +['path_tpc']['curves'][592]['offset_meters'] ['path_tpc']['curves'][592]['res_coeff'] -['path_tpc']['curves'][592]['res_net'] -['path_tpc']['curves'][593]['offset'] +['path_tpc']['curves'][592]['res_net_meters'] +['path_tpc']['curves'][593]['offset_meters'] ['path_tpc']['curves'][593]['res_coeff'] -['path_tpc']['curves'][593]['res_net'] -['path_tpc']['curves'][594]['offset'] +['path_tpc']['curves'][593]['res_net_meters'] +['path_tpc']['curves'][594]['offset_meters'] ['path_tpc']['curves'][594]['res_coeff'] -['path_tpc']['curves'][594]['res_net'] -['path_tpc']['curves'][595]['offset'] +['path_tpc']['curves'][594]['res_net_meters'] +['path_tpc']['curves'][595]['offset_meters'] ['path_tpc']['curves'][595]['res_coeff'] -['path_tpc']['curves'][595]['res_net'] -['path_tpc']['curves'][596]['offset'] +['path_tpc']['curves'][595]['res_net_meters'] +['path_tpc']['curves'][596]['offset_meters'] ['path_tpc']['curves'][596]['res_coeff'] -['path_tpc']['curves'][596]['res_net'] -['path_tpc']['curves'][597]['offset'] +['path_tpc']['curves'][596]['res_net_meters'] +['path_tpc']['curves'][597]['offset_meters'] ['path_tpc']['curves'][597]['res_coeff'] -['path_tpc']['curves'][597]['res_net'] -['path_tpc']['curves'][598]['offset'] +['path_tpc']['curves'][597]['res_net_meters'] +['path_tpc']['curves'][598]['offset_meters'] ['path_tpc']['curves'][598]['res_coeff'] -['path_tpc']['curves'][598]['res_net'] -['path_tpc']['curves'][599]['offset'] +['path_tpc']['curves'][598]['res_net_meters'] +['path_tpc']['curves'][599]['offset_meters'] ['path_tpc']['curves'][599]['res_coeff'] -['path_tpc']['curves'][599]['res_net'] -['path_tpc']['curves'][600]['offset'] +['path_tpc']['curves'][599]['res_net_meters'] +['path_tpc']['curves'][600]['offset_meters'] ['path_tpc']['curves'][600]['res_coeff'] -['path_tpc']['curves'][600]['res_net'] -['path_tpc']['curves'][601]['offset'] +['path_tpc']['curves'][600]['res_net_meters'] +['path_tpc']['curves'][601]['offset_meters'] ['path_tpc']['curves'][601]['res_coeff'] -['path_tpc']['curves'][601]['res_net'] -['path_tpc']['curves'][602]['offset'] +['path_tpc']['curves'][601]['res_net_meters'] +['path_tpc']['curves'][602]['offset_meters'] ['path_tpc']['curves'][602]['res_coeff'] -['path_tpc']['curves'][602]['res_net'] -['path_tpc']['curves'][603]['offset'] +['path_tpc']['curves'][602]['res_net_meters'] +['path_tpc']['curves'][603]['offset_meters'] ['path_tpc']['curves'][603]['res_coeff'] -['path_tpc']['curves'][603]['res_net'] -['path_tpc']['curves'][604]['offset'] +['path_tpc']['curves'][603]['res_net_meters'] +['path_tpc']['curves'][604]['offset_meters'] ['path_tpc']['curves'][604]['res_coeff'] -['path_tpc']['curves'][604]['res_net'] -['path_tpc']['curves'][605]['offset'] +['path_tpc']['curves'][604]['res_net_meters'] +['path_tpc']['curves'][605]['offset_meters'] ['path_tpc']['curves'][605]['res_coeff'] -['path_tpc']['curves'][605]['res_net'] -['path_tpc']['curves'][606]['offset'] +['path_tpc']['curves'][605]['res_net_meters'] +['path_tpc']['curves'][606]['offset_meters'] ['path_tpc']['curves'][606]['res_coeff'] -['path_tpc']['curves'][606]['res_net'] -['path_tpc']['curves'][607]['offset'] +['path_tpc']['curves'][606]['res_net_meters'] +['path_tpc']['curves'][607]['offset_meters'] ['path_tpc']['curves'][607]['res_coeff'] -['path_tpc']['curves'][607]['res_net'] -['path_tpc']['curves'][608]['offset'] +['path_tpc']['curves'][607]['res_net_meters'] +['path_tpc']['curves'][608]['offset_meters'] ['path_tpc']['curves'][608]['res_coeff'] -['path_tpc']['curves'][608]['res_net'] -['path_tpc']['curves'][609]['offset'] +['path_tpc']['curves'][608]['res_net_meters'] +['path_tpc']['curves'][609]['offset_meters'] ['path_tpc']['curves'][609]['res_coeff'] -['path_tpc']['curves'][609]['res_net'] -['path_tpc']['curves'][610]['offset'] +['path_tpc']['curves'][609]['res_net_meters'] +['path_tpc']['curves'][610]['offset_meters'] ['path_tpc']['curves'][610]['res_coeff'] -['path_tpc']['curves'][610]['res_net'] -['path_tpc']['curves'][611]['offset'] +['path_tpc']['curves'][610]['res_net_meters'] +['path_tpc']['curves'][611]['offset_meters'] ['path_tpc']['curves'][611]['res_coeff'] -['path_tpc']['curves'][611]['res_net'] -['path_tpc']['curves'][612]['offset'] +['path_tpc']['curves'][611]['res_net_meters'] +['path_tpc']['curves'][612]['offset_meters'] ['path_tpc']['curves'][612]['res_coeff'] -['path_tpc']['curves'][612]['res_net'] -['path_tpc']['curves'][613]['offset'] +['path_tpc']['curves'][612]['res_net_meters'] +['path_tpc']['curves'][613]['offset_meters'] ['path_tpc']['curves'][613]['res_coeff'] -['path_tpc']['curves'][613]['res_net'] -['path_tpc']['curves'][614]['offset'] +['path_tpc']['curves'][613]['res_net_meters'] +['path_tpc']['curves'][614]['offset_meters'] ['path_tpc']['curves'][614]['res_coeff'] -['path_tpc']['curves'][614]['res_net'] -['path_tpc']['curves'][615]['offset'] +['path_tpc']['curves'][614]['res_net_meters'] +['path_tpc']['curves'][615]['offset_meters'] ['path_tpc']['curves'][615]['res_coeff'] -['path_tpc']['curves'][615]['res_net'] -['path_tpc']['curves'][616]['offset'] +['path_tpc']['curves'][615]['res_net_meters'] +['path_tpc']['curves'][616]['offset_meters'] ['path_tpc']['curves'][616]['res_coeff'] -['path_tpc']['curves'][616]['res_net'] -['path_tpc']['curves'][617]['offset'] +['path_tpc']['curves'][616]['res_net_meters'] +['path_tpc']['curves'][617]['offset_meters'] ['path_tpc']['curves'][617]['res_coeff'] -['path_tpc']['curves'][617]['res_net'] -['path_tpc']['curves'][618]['offset'] +['path_tpc']['curves'][617]['res_net_meters'] +['path_tpc']['curves'][618]['offset_meters'] ['path_tpc']['curves'][618]['res_coeff'] -['path_tpc']['curves'][618]['res_net'] -['path_tpc']['curves'][619]['offset'] +['path_tpc']['curves'][618]['res_net_meters'] +['path_tpc']['curves'][619]['offset_meters'] ['path_tpc']['curves'][619]['res_coeff'] -['path_tpc']['curves'][619]['res_net'] -['path_tpc']['curves'][620]['offset'] +['path_tpc']['curves'][619]['res_net_meters'] +['path_tpc']['curves'][620]['offset_meters'] ['path_tpc']['curves'][620]['res_coeff'] -['path_tpc']['curves'][620]['res_net'] -['path_tpc']['curves'][621]['offset'] +['path_tpc']['curves'][620]['res_net_meters'] +['path_tpc']['curves'][621]['offset_meters'] ['path_tpc']['curves'][621]['res_coeff'] -['path_tpc']['curves'][621]['res_net'] -['path_tpc']['curves'][622]['offset'] +['path_tpc']['curves'][621]['res_net_meters'] +['path_tpc']['curves'][622]['offset_meters'] ['path_tpc']['curves'][622]['res_coeff'] -['path_tpc']['curves'][622]['res_net'] -['path_tpc']['curves'][623]['offset'] +['path_tpc']['curves'][622]['res_net_meters'] +['path_tpc']['curves'][623]['offset_meters'] ['path_tpc']['curves'][623]['res_coeff'] -['path_tpc']['curves'][623]['res_net'] -['path_tpc']['curves'][624]['offset'] +['path_tpc']['curves'][623]['res_net_meters'] +['path_tpc']['curves'][624]['offset_meters'] ['path_tpc']['curves'][624]['res_coeff'] -['path_tpc']['curves'][624]['res_net'] -['path_tpc']['curves'][625]['offset'] +['path_tpc']['curves'][624]['res_net_meters'] +['path_tpc']['curves'][625]['offset_meters'] ['path_tpc']['curves'][625]['res_coeff'] -['path_tpc']['curves'][625]['res_net'] -['path_tpc']['curves'][626]['offset'] +['path_tpc']['curves'][625]['res_net_meters'] +['path_tpc']['curves'][626]['offset_meters'] ['path_tpc']['curves'][626]['res_coeff'] -['path_tpc']['curves'][626]['res_net'] -['path_tpc']['curves'][627]['offset'] +['path_tpc']['curves'][626]['res_net_meters'] +['path_tpc']['curves'][627]['offset_meters'] ['path_tpc']['curves'][627]['res_coeff'] -['path_tpc']['curves'][627]['res_net'] -['path_tpc']['curves'][628]['offset'] +['path_tpc']['curves'][627]['res_net_meters'] +['path_tpc']['curves'][628]['offset_meters'] ['path_tpc']['curves'][628]['res_coeff'] -['path_tpc']['curves'][628]['res_net'] -['path_tpc']['curves'][629]['offset'] +['path_tpc']['curves'][628]['res_net_meters'] +['path_tpc']['curves'][629]['offset_meters'] ['path_tpc']['curves'][629]['res_coeff'] -['path_tpc']['curves'][629]['res_net'] -['path_tpc']['curves'][630]['offset'] +['path_tpc']['curves'][629]['res_net_meters'] +['path_tpc']['curves'][630]['offset_meters'] ['path_tpc']['curves'][630]['res_coeff'] -['path_tpc']['curves'][630]['res_net'] -['path_tpc']['curves'][631]['offset'] +['path_tpc']['curves'][630]['res_net_meters'] +['path_tpc']['curves'][631]['offset_meters'] ['path_tpc']['curves'][631]['res_coeff'] -['path_tpc']['curves'][631]['res_net'] -['path_tpc']['curves'][632]['offset'] +['path_tpc']['curves'][631]['res_net_meters'] +['path_tpc']['curves'][632]['offset_meters'] ['path_tpc']['curves'][632]['res_coeff'] -['path_tpc']['curves'][632]['res_net'] -['path_tpc']['curves'][633]['offset'] +['path_tpc']['curves'][632]['res_net_meters'] +['path_tpc']['curves'][633]['offset_meters'] ['path_tpc']['curves'][633]['res_coeff'] -['path_tpc']['curves'][633]['res_net'] -['path_tpc']['curves'][634]['offset'] +['path_tpc']['curves'][633]['res_net_meters'] +['path_tpc']['curves'][634]['offset_meters'] ['path_tpc']['curves'][634]['res_coeff'] -['path_tpc']['curves'][634]['res_net'] -['path_tpc']['curves'][635]['offset'] +['path_tpc']['curves'][634]['res_net_meters'] +['path_tpc']['curves'][635]['offset_meters'] ['path_tpc']['curves'][635]['res_coeff'] -['path_tpc']['curves'][635]['res_net'] -['path_tpc']['curves'][636]['offset'] +['path_tpc']['curves'][635]['res_net_meters'] +['path_tpc']['curves'][636]['offset_meters'] ['path_tpc']['curves'][636]['res_coeff'] -['path_tpc']['curves'][636]['res_net'] -['path_tpc']['curves'][637]['offset'] +['path_tpc']['curves'][636]['res_net_meters'] +['path_tpc']['curves'][637]['offset_meters'] ['path_tpc']['curves'][637]['res_coeff'] -['path_tpc']['curves'][637]['res_net'] -['path_tpc']['curves'][638]['offset'] +['path_tpc']['curves'][637]['res_net_meters'] +['path_tpc']['curves'][638]['offset_meters'] ['path_tpc']['curves'][638]['res_coeff'] -['path_tpc']['curves'][638]['res_net'] -['path_tpc']['curves'][639]['offset'] +['path_tpc']['curves'][638]['res_net_meters'] +['path_tpc']['curves'][639]['offset_meters'] ['path_tpc']['curves'][639]['res_coeff'] -['path_tpc']['curves'][639]['res_net'] -['path_tpc']['curves'][640]['offset'] +['path_tpc']['curves'][639]['res_net_meters'] +['path_tpc']['curves'][640]['offset_meters'] ['path_tpc']['curves'][640]['res_coeff'] -['path_tpc']['curves'][640]['res_net'] -['path_tpc']['curves'][641]['offset'] +['path_tpc']['curves'][640]['res_net_meters'] +['path_tpc']['curves'][641]['offset_meters'] ['path_tpc']['curves'][641]['res_coeff'] -['path_tpc']['curves'][641]['res_net'] -['path_tpc']['curves'][642]['offset'] +['path_tpc']['curves'][641]['res_net_meters'] +['path_tpc']['curves'][642]['offset_meters'] ['path_tpc']['curves'][642]['res_coeff'] -['path_tpc']['curves'][642]['res_net'] -['path_tpc']['curves'][643]['offset'] +['path_tpc']['curves'][642]['res_net_meters'] +['path_tpc']['curves'][643]['offset_meters'] ['path_tpc']['curves'][643]['res_coeff'] -['path_tpc']['curves'][643]['res_net'] -['path_tpc']['curves'][644]['offset'] +['path_tpc']['curves'][643]['res_net_meters'] +['path_tpc']['curves'][644]['offset_meters'] ['path_tpc']['curves'][644]['res_coeff'] -['path_tpc']['curves'][644]['res_net'] -['path_tpc']['curves'][645]['offset'] +['path_tpc']['curves'][644]['res_net_meters'] +['path_tpc']['curves'][645]['offset_meters'] ['path_tpc']['curves'][645]['res_coeff'] -['path_tpc']['curves'][645]['res_net'] -['path_tpc']['curves'][646]['offset'] +['path_tpc']['curves'][645]['res_net_meters'] +['path_tpc']['curves'][646]['offset_meters'] ['path_tpc']['curves'][646]['res_coeff'] -['path_tpc']['curves'][646]['res_net'] -['path_tpc']['curves'][647]['offset'] +['path_tpc']['curves'][646]['res_net_meters'] +['path_tpc']['curves'][647]['offset_meters'] ['path_tpc']['curves'][647]['res_coeff'] -['path_tpc']['curves'][647]['res_net'] -['path_tpc']['curves'][648]['offset'] +['path_tpc']['curves'][647]['res_net_meters'] +['path_tpc']['curves'][648]['offset_meters'] ['path_tpc']['curves'][648]['res_coeff'] -['path_tpc']['curves'][648]['res_net'] -['path_tpc']['curves'][649]['offset'] +['path_tpc']['curves'][648]['res_net_meters'] +['path_tpc']['curves'][649]['offset_meters'] ['path_tpc']['curves'][649]['res_coeff'] -['path_tpc']['curves'][649]['res_net'] -['path_tpc']['curves'][650]['offset'] +['path_tpc']['curves'][649]['res_net_meters'] +['path_tpc']['curves'][650]['offset_meters'] ['path_tpc']['curves'][650]['res_coeff'] -['path_tpc']['curves'][650]['res_net'] -['path_tpc']['curves'][651]['offset'] +['path_tpc']['curves'][650]['res_net_meters'] +['path_tpc']['curves'][651]['offset_meters'] ['path_tpc']['curves'][651]['res_coeff'] -['path_tpc']['curves'][651]['res_net'] -['path_tpc']['curves'][652]['offset'] +['path_tpc']['curves'][651]['res_net_meters'] +['path_tpc']['curves'][652]['offset_meters'] ['path_tpc']['curves'][652]['res_coeff'] -['path_tpc']['curves'][652]['res_net'] -['path_tpc']['curves'][653]['offset'] +['path_tpc']['curves'][652]['res_net_meters'] +['path_tpc']['curves'][653]['offset_meters'] ['path_tpc']['curves'][653]['res_coeff'] -['path_tpc']['curves'][653]['res_net'] -['path_tpc']['curves'][654]['offset'] +['path_tpc']['curves'][653]['res_net_meters'] +['path_tpc']['curves'][654]['offset_meters'] ['path_tpc']['curves'][654]['res_coeff'] -['path_tpc']['curves'][654]['res_net'] -['path_tpc']['curves'][655]['offset'] +['path_tpc']['curves'][654]['res_net_meters'] +['path_tpc']['curves'][655]['offset_meters'] ['path_tpc']['curves'][655]['res_coeff'] -['path_tpc']['curves'][655]['res_net'] -['path_tpc']['curves'][656]['offset'] +['path_tpc']['curves'][655]['res_net_meters'] +['path_tpc']['curves'][656]['offset_meters'] ['path_tpc']['curves'][656]['res_coeff'] -['path_tpc']['curves'][656]['res_net'] -['path_tpc']['curves'][657]['offset'] +['path_tpc']['curves'][656]['res_net_meters'] +['path_tpc']['curves'][657]['offset_meters'] ['path_tpc']['curves'][657]['res_coeff'] -['path_tpc']['curves'][657]['res_net'] -['path_tpc']['curves'][658]['offset'] +['path_tpc']['curves'][657]['res_net_meters'] +['path_tpc']['curves'][658]['offset_meters'] ['path_tpc']['curves'][658]['res_coeff'] -['path_tpc']['curves'][658]['res_net'] -['path_tpc']['curves'][659]['offset'] +['path_tpc']['curves'][658]['res_net_meters'] +['path_tpc']['curves'][659]['offset_meters'] ['path_tpc']['curves'][659]['res_coeff'] -['path_tpc']['curves'][659]['res_net'] -['path_tpc']['curves'][660]['offset'] +['path_tpc']['curves'][659]['res_net_meters'] +['path_tpc']['curves'][660]['offset_meters'] ['path_tpc']['curves'][660]['res_coeff'] -['path_tpc']['curves'][660]['res_net'] -['path_tpc']['curves'][661]['offset'] +['path_tpc']['curves'][660]['res_net_meters'] +['path_tpc']['curves'][661]['offset_meters'] ['path_tpc']['curves'][661]['res_coeff'] -['path_tpc']['curves'][661]['res_net'] -['path_tpc']['curves'][662]['offset'] +['path_tpc']['curves'][661]['res_net_meters'] +['path_tpc']['curves'][662]['offset_meters'] ['path_tpc']['curves'][662]['res_coeff'] -['path_tpc']['curves'][662]['res_net'] -['path_tpc']['curves'][663]['offset'] +['path_tpc']['curves'][662]['res_net_meters'] +['path_tpc']['curves'][663]['offset_meters'] ['path_tpc']['curves'][663]['res_coeff'] -['path_tpc']['curves'][663]['res_net'] -['path_tpc']['curves'][664]['offset'] +['path_tpc']['curves'][663]['res_net_meters'] +['path_tpc']['curves'][664]['offset_meters'] ['path_tpc']['curves'][664]['res_coeff'] -['path_tpc']['curves'][664]['res_net'] -['path_tpc']['curves'][665]['offset'] +['path_tpc']['curves'][664]['res_net_meters'] +['path_tpc']['curves'][665]['offset_meters'] ['path_tpc']['curves'][665]['res_coeff'] -['path_tpc']['curves'][665]['res_net'] -['path_tpc']['curves'][666]['offset'] +['path_tpc']['curves'][665]['res_net_meters'] +['path_tpc']['curves'][666]['offset_meters'] ['path_tpc']['curves'][666]['res_coeff'] -['path_tpc']['curves'][666]['res_net'] -['path_tpc']['curves'][667]['offset'] +['path_tpc']['curves'][666]['res_net_meters'] +['path_tpc']['curves'][667]['offset_meters'] ['path_tpc']['curves'][667]['res_coeff'] -['path_tpc']['curves'][667]['res_net'] -['path_tpc']['curves'][668]['offset'] +['path_tpc']['curves'][667]['res_net_meters'] +['path_tpc']['curves'][668]['offset_meters'] ['path_tpc']['curves'][668]['res_coeff'] -['path_tpc']['curves'][668]['res_net'] -['path_tpc']['curves'][669]['offset'] +['path_tpc']['curves'][668]['res_net_meters'] +['path_tpc']['curves'][669]['offset_meters'] ['path_tpc']['curves'][669]['res_coeff'] -['path_tpc']['curves'][669]['res_net'] -['path_tpc']['curves'][670]['offset'] +['path_tpc']['curves'][669]['res_net_meters'] +['path_tpc']['curves'][670]['offset_meters'] ['path_tpc']['curves'][670]['res_coeff'] -['path_tpc']['curves'][670]['res_net'] -['path_tpc']['curves'][671]['offset'] +['path_tpc']['curves'][670]['res_net_meters'] +['path_tpc']['curves'][671]['offset_meters'] ['path_tpc']['curves'][671]['res_coeff'] -['path_tpc']['curves'][671]['res_net'] -['path_tpc']['curves'][672]['offset'] +['path_tpc']['curves'][671]['res_net_meters'] +['path_tpc']['curves'][672]['offset_meters'] ['path_tpc']['curves'][672]['res_coeff'] -['path_tpc']['curves'][672]['res_net'] -['path_tpc']['curves'][673]['offset'] +['path_tpc']['curves'][672]['res_net_meters'] +['path_tpc']['curves'][673]['offset_meters'] ['path_tpc']['curves'][673]['res_coeff'] -['path_tpc']['curves'][673]['res_net'] -['path_tpc']['curves'][674]['offset'] +['path_tpc']['curves'][673]['res_net_meters'] +['path_tpc']['curves'][674]['offset_meters'] ['path_tpc']['curves'][674]['res_coeff'] -['path_tpc']['curves'][674]['res_net'] -['path_tpc']['curves'][675]['offset'] +['path_tpc']['curves'][674]['res_net_meters'] +['path_tpc']['curves'][675]['offset_meters'] ['path_tpc']['curves'][675]['res_coeff'] -['path_tpc']['curves'][675]['res_net'] -['path_tpc']['curves'][676]['offset'] +['path_tpc']['curves'][675]['res_net_meters'] +['path_tpc']['curves'][676]['offset_meters'] ['path_tpc']['curves'][676]['res_coeff'] -['path_tpc']['curves'][676]['res_net'] -['path_tpc']['curves'][677]['offset'] +['path_tpc']['curves'][676]['res_net_meters'] +['path_tpc']['curves'][677]['offset_meters'] ['path_tpc']['curves'][677]['res_coeff'] -['path_tpc']['curves'][677]['res_net'] -['path_tpc']['curves'][678]['offset'] +['path_tpc']['curves'][677]['res_net_meters'] +['path_tpc']['curves'][678]['offset_meters'] ['path_tpc']['curves'][678]['res_coeff'] -['path_tpc']['curves'][678]['res_net'] -['path_tpc']['curves'][679]['offset'] +['path_tpc']['curves'][678]['res_net_meters'] +['path_tpc']['curves'][679]['offset_meters'] ['path_tpc']['curves'][679]['res_coeff'] -['path_tpc']['curves'][679]['res_net'] -['path_tpc']['curves'][680]['offset'] +['path_tpc']['curves'][679]['res_net_meters'] +['path_tpc']['curves'][680]['offset_meters'] ['path_tpc']['curves'][680]['res_coeff'] -['path_tpc']['curves'][680]['res_net'] -['path_tpc']['curves'][681]['offset'] +['path_tpc']['curves'][680]['res_net_meters'] +['path_tpc']['curves'][681]['offset_meters'] ['path_tpc']['curves'][681]['res_coeff'] -['path_tpc']['curves'][681]['res_net'] -['path_tpc']['curves'][682]['offset'] +['path_tpc']['curves'][681]['res_net_meters'] +['path_tpc']['curves'][682]['offset_meters'] ['path_tpc']['curves'][682]['res_coeff'] -['path_tpc']['curves'][682]['res_net'] -['path_tpc']['curves'][683]['offset'] +['path_tpc']['curves'][682]['res_net_meters'] +['path_tpc']['curves'][683]['offset_meters'] ['path_tpc']['curves'][683]['res_coeff'] -['path_tpc']['curves'][683]['res_net'] -['path_tpc']['curves'][684]['offset'] +['path_tpc']['curves'][683]['res_net_meters'] +['path_tpc']['curves'][684]['offset_meters'] ['path_tpc']['curves'][684]['res_coeff'] -['path_tpc']['curves'][684]['res_net'] -['path_tpc']['curves'][685]['offset'] +['path_tpc']['curves'][684]['res_net_meters'] +['path_tpc']['curves'][685]['offset_meters'] ['path_tpc']['curves'][685]['res_coeff'] -['path_tpc']['curves'][685]['res_net'] -['path_tpc']['curves'][686]['offset'] +['path_tpc']['curves'][685]['res_net_meters'] +['path_tpc']['curves'][686]['offset_meters'] ['path_tpc']['curves'][686]['res_coeff'] -['path_tpc']['curves'][686]['res_net'] -['path_tpc']['curves'][687]['offset'] +['path_tpc']['curves'][686]['res_net_meters'] +['path_tpc']['curves'][687]['offset_meters'] ['path_tpc']['curves'][687]['res_coeff'] -['path_tpc']['curves'][687]['res_net'] -['path_tpc']['curves'][688]['offset'] +['path_tpc']['curves'][687]['res_net_meters'] +['path_tpc']['curves'][688]['offset_meters'] ['path_tpc']['curves'][688]['res_coeff'] -['path_tpc']['curves'][688]['res_net'] -['path_tpc']['curves'][689]['offset'] +['path_tpc']['curves'][688]['res_net_meters'] +['path_tpc']['curves'][689]['offset_meters'] ['path_tpc']['curves'][689]['res_coeff'] -['path_tpc']['curves'][689]['res_net'] -['path_tpc']['curves'][690]['offset'] +['path_tpc']['curves'][689]['res_net_meters'] +['path_tpc']['curves'][690]['offset_meters'] ['path_tpc']['curves'][690]['res_coeff'] -['path_tpc']['curves'][690]['res_net'] -['path_tpc']['curves'][691]['offset'] +['path_tpc']['curves'][690]['res_net_meters'] +['path_tpc']['curves'][691]['offset_meters'] ['path_tpc']['curves'][691]['res_coeff'] -['path_tpc']['curves'][691]['res_net'] -['path_tpc']['curves'][692]['offset'] +['path_tpc']['curves'][691]['res_net_meters'] +['path_tpc']['curves'][692]['offset_meters'] ['path_tpc']['curves'][692]['res_coeff'] -['path_tpc']['curves'][692]['res_net'] -['path_tpc']['curves'][693]['offset'] +['path_tpc']['curves'][692]['res_net_meters'] +['path_tpc']['curves'][693]['offset_meters'] ['path_tpc']['curves'][693]['res_coeff'] -['path_tpc']['curves'][693]['res_net'] -['path_tpc']['curves'][694]['offset'] +['path_tpc']['curves'][693]['res_net_meters'] +['path_tpc']['curves'][694]['offset_meters'] ['path_tpc']['curves'][694]['res_coeff'] -['path_tpc']['curves'][694]['res_net'] -['path_tpc']['curves'][695]['offset'] +['path_tpc']['curves'][694]['res_net_meters'] +['path_tpc']['curves'][695]['offset_meters'] ['path_tpc']['curves'][695]['res_coeff'] -['path_tpc']['curves'][695]['res_net'] -['path_tpc']['curves'][696]['offset'] +['path_tpc']['curves'][695]['res_net_meters'] +['path_tpc']['curves'][696]['offset_meters'] ['path_tpc']['curves'][696]['res_coeff'] -['path_tpc']['curves'][696]['res_net'] -['path_tpc']['curves'][697]['offset'] +['path_tpc']['curves'][696]['res_net_meters'] +['path_tpc']['curves'][697]['offset_meters'] ['path_tpc']['curves'][697]['res_coeff'] -['path_tpc']['curves'][697]['res_net'] -['path_tpc']['curves'][698]['offset'] +['path_tpc']['curves'][697]['res_net_meters'] +['path_tpc']['curves'][698]['offset_meters'] ['path_tpc']['curves'][698]['res_coeff'] -['path_tpc']['curves'][698]['res_net'] -['path_tpc']['curves'][699]['offset'] +['path_tpc']['curves'][698]['res_net_meters'] +['path_tpc']['curves'][699]['offset_meters'] ['path_tpc']['curves'][699]['res_coeff'] -['path_tpc']['curves'][699]['res_net'] -['path_tpc']['curves'][700]['offset'] +['path_tpc']['curves'][699]['res_net_meters'] +['path_tpc']['curves'][700]['offset_meters'] ['path_tpc']['curves'][700]['res_coeff'] -['path_tpc']['curves'][700]['res_net'] -['path_tpc']['curves'][701]['offset'] +['path_tpc']['curves'][700]['res_net_meters'] +['path_tpc']['curves'][701]['offset_meters'] ['path_tpc']['curves'][701]['res_coeff'] -['path_tpc']['curves'][701]['res_net'] -['path_tpc']['curves'][702]['offset'] +['path_tpc']['curves'][701]['res_net_meters'] +['path_tpc']['curves'][702]['offset_meters'] ['path_tpc']['curves'][702]['res_coeff'] -['path_tpc']['curves'][702]['res_net'] -['path_tpc']['curves'][703]['offset'] +['path_tpc']['curves'][702]['res_net_meters'] +['path_tpc']['curves'][703]['offset_meters'] ['path_tpc']['curves'][703]['res_coeff'] -['path_tpc']['curves'][703]['res_net'] -['path_tpc']['curves'][704]['offset'] +['path_tpc']['curves'][703]['res_net_meters'] +['path_tpc']['curves'][704]['offset_meters'] ['path_tpc']['curves'][704]['res_coeff'] -['path_tpc']['curves'][704]['res_net'] -['path_tpc']['curves'][705]['offset'] +['path_tpc']['curves'][704]['res_net_meters'] +['path_tpc']['curves'][705]['offset_meters'] ['path_tpc']['curves'][705]['res_coeff'] -['path_tpc']['curves'][705]['res_net'] -['path_tpc']['curves'][706]['offset'] +['path_tpc']['curves'][705]['res_net_meters'] +['path_tpc']['curves'][706]['offset_meters'] ['path_tpc']['curves'][706]['res_coeff'] -['path_tpc']['curves'][706]['res_net'] -['path_tpc']['curves'][707]['offset'] +['path_tpc']['curves'][706]['res_net_meters'] +['path_tpc']['curves'][707]['offset_meters'] ['path_tpc']['curves'][707]['res_coeff'] -['path_tpc']['curves'][707]['res_net'] -['path_tpc']['curves'][708]['offset'] +['path_tpc']['curves'][707]['res_net_meters'] +['path_tpc']['curves'][708]['offset_meters'] ['path_tpc']['curves'][708]['res_coeff'] -['path_tpc']['curves'][708]['res_net'] -['path_tpc']['curves'][709]['offset'] +['path_tpc']['curves'][708]['res_net_meters'] +['path_tpc']['curves'][709]['offset_meters'] ['path_tpc']['curves'][709]['res_coeff'] -['path_tpc']['curves'][709]['res_net'] -['path_tpc']['curves'][710]['offset'] +['path_tpc']['curves'][709]['res_net_meters'] +['path_tpc']['curves'][710]['offset_meters'] ['path_tpc']['curves'][710]['res_coeff'] -['path_tpc']['curves'][710]['res_net'] -['path_tpc']['curves'][711]['offset'] +['path_tpc']['curves'][710]['res_net_meters'] +['path_tpc']['curves'][711]['offset_meters'] ['path_tpc']['curves'][711]['res_coeff'] -['path_tpc']['curves'][711]['res_net'] -['path_tpc']['curves'][712]['offset'] +['path_tpc']['curves'][711]['res_net_meters'] +['path_tpc']['curves'][712]['offset_meters'] ['path_tpc']['curves'][712]['res_coeff'] -['path_tpc']['curves'][712]['res_net'] -['path_tpc']['curves'][713]['offset'] +['path_tpc']['curves'][712]['res_net_meters'] +['path_tpc']['curves'][713]['offset_meters'] ['path_tpc']['curves'][713]['res_coeff'] -['path_tpc']['curves'][713]['res_net'] -['path_tpc']['curves'][714]['offset'] +['path_tpc']['curves'][713]['res_net_meters'] +['path_tpc']['curves'][714]['offset_meters'] ['path_tpc']['curves'][714]['res_coeff'] -['path_tpc']['curves'][714]['res_net'] -['path_tpc']['curves'][715]['offset'] +['path_tpc']['curves'][714]['res_net_meters'] +['path_tpc']['curves'][715]['offset_meters'] ['path_tpc']['curves'][715]['res_coeff'] -['path_tpc']['curves'][715]['res_net'] -['path_tpc']['curves'][716]['offset'] +['path_tpc']['curves'][715]['res_net_meters'] +['path_tpc']['curves'][716]['offset_meters'] ['path_tpc']['curves'][716]['res_coeff'] -['path_tpc']['curves'][716]['res_net'] -['path_tpc']['curves'][717]['offset'] +['path_tpc']['curves'][716]['res_net_meters'] +['path_tpc']['curves'][717]['offset_meters'] ['path_tpc']['curves'][717]['res_coeff'] -['path_tpc']['curves'][717]['res_net'] -['path_tpc']['curves'][718]['offset'] +['path_tpc']['curves'][717]['res_net_meters'] +['path_tpc']['curves'][718]['offset_meters'] ['path_tpc']['curves'][718]['res_coeff'] -['path_tpc']['curves'][718]['res_net'] -['path_tpc']['curves'][719]['offset'] +['path_tpc']['curves'][718]['res_net_meters'] +['path_tpc']['curves'][719]['offset_meters'] ['path_tpc']['curves'][719]['res_coeff'] -['path_tpc']['curves'][719]['res_net'] -['path_tpc']['curves'][720]['offset'] +['path_tpc']['curves'][719]['res_net_meters'] +['path_tpc']['curves'][720]['offset_meters'] ['path_tpc']['curves'][720]['res_coeff'] -['path_tpc']['curves'][720]['res_net'] -['path_tpc']['curves'][721]['offset'] +['path_tpc']['curves'][720]['res_net_meters'] +['path_tpc']['curves'][721]['offset_meters'] ['path_tpc']['curves'][721]['res_coeff'] -['path_tpc']['curves'][721]['res_net'] -['path_tpc']['curves'][722]['offset'] +['path_tpc']['curves'][721]['res_net_meters'] +['path_tpc']['curves'][722]['offset_meters'] ['path_tpc']['curves'][722]['res_coeff'] -['path_tpc']['curves'][722]['res_net'] -['path_tpc']['curves'][723]['offset'] +['path_tpc']['curves'][722]['res_net_meters'] +['path_tpc']['curves'][723]['offset_meters'] ['path_tpc']['curves'][723]['res_coeff'] -['path_tpc']['curves'][723]['res_net'] -['path_tpc']['curves'][724]['offset'] +['path_tpc']['curves'][723]['res_net_meters'] +['path_tpc']['curves'][724]['offset_meters'] ['path_tpc']['curves'][724]['res_coeff'] -['path_tpc']['curves'][724]['res_net'] -['path_tpc']['curves'][725]['offset'] +['path_tpc']['curves'][724]['res_net_meters'] +['path_tpc']['curves'][725]['offset_meters'] ['path_tpc']['curves'][725]['res_coeff'] -['path_tpc']['curves'][725]['res_net'] -['path_tpc']['curves'][726]['offset'] +['path_tpc']['curves'][725]['res_net_meters'] +['path_tpc']['curves'][726]['offset_meters'] ['path_tpc']['curves'][726]['res_coeff'] -['path_tpc']['curves'][726]['res_net'] -['path_tpc']['curves'][727]['offset'] +['path_tpc']['curves'][726]['res_net_meters'] +['path_tpc']['curves'][727]['offset_meters'] ['path_tpc']['curves'][727]['res_coeff'] -['path_tpc']['curves'][727]['res_net'] -['path_tpc']['curves'][728]['offset'] +['path_tpc']['curves'][727]['res_net_meters'] +['path_tpc']['curves'][728]['offset_meters'] ['path_tpc']['curves'][728]['res_coeff'] -['path_tpc']['curves'][728]['res_net'] -['path_tpc']['curves'][729]['offset'] +['path_tpc']['curves'][728]['res_net_meters'] +['path_tpc']['curves'][729]['offset_meters'] ['path_tpc']['curves'][729]['res_coeff'] -['path_tpc']['curves'][729]['res_net'] -['path_tpc']['curves'][730]['offset'] +['path_tpc']['curves'][729]['res_net_meters'] +['path_tpc']['curves'][730]['offset_meters'] ['path_tpc']['curves'][730]['res_coeff'] -['path_tpc']['curves'][730]['res_net'] -['path_tpc']['curves'][731]['offset'] +['path_tpc']['curves'][730]['res_net_meters'] +['path_tpc']['curves'][731]['offset_meters'] ['path_tpc']['curves'][731]['res_coeff'] -['path_tpc']['curves'][731]['res_net'] -['path_tpc']['curves'][732]['offset'] +['path_tpc']['curves'][731]['res_net_meters'] +['path_tpc']['curves'][732]['offset_meters'] ['path_tpc']['curves'][732]['res_coeff'] -['path_tpc']['curves'][732]['res_net'] -['path_tpc']['curves'][733]['offset'] +['path_tpc']['curves'][732]['res_net_meters'] +['path_tpc']['curves'][733]['offset_meters'] ['path_tpc']['curves'][733]['res_coeff'] -['path_tpc']['curves'][733]['res_net'] -['path_tpc']['curves'][734]['offset'] +['path_tpc']['curves'][733]['res_net_meters'] +['path_tpc']['curves'][734]['offset_meters'] ['path_tpc']['curves'][734]['res_coeff'] -['path_tpc']['curves'][734]['res_net'] -['path_tpc']['curves'][735]['offset'] +['path_tpc']['curves'][734]['res_net_meters'] +['path_tpc']['curves'][735]['offset_meters'] ['path_tpc']['curves'][735]['res_coeff'] -['path_tpc']['curves'][735]['res_net'] -['path_tpc']['curves'][736]['offset'] +['path_tpc']['curves'][735]['res_net_meters'] +['path_tpc']['curves'][736]['offset_meters'] ['path_tpc']['curves'][736]['res_coeff'] -['path_tpc']['curves'][736]['res_net'] -['path_tpc']['curves'][737]['offset'] +['path_tpc']['curves'][736]['res_net_meters'] +['path_tpc']['curves'][737]['offset_meters'] ['path_tpc']['curves'][737]['res_coeff'] -['path_tpc']['curves'][737]['res_net'] -['path_tpc']['curves'][738]['offset'] +['path_tpc']['curves'][737]['res_net_meters'] +['path_tpc']['curves'][738]['offset_meters'] ['path_tpc']['curves'][738]['res_coeff'] -['path_tpc']['curves'][738]['res_net'] -['path_tpc']['curves'][739]['offset'] +['path_tpc']['curves'][738]['res_net_meters'] +['path_tpc']['curves'][739]['offset_meters'] ['path_tpc']['curves'][739]['res_coeff'] -['path_tpc']['curves'][739]['res_net'] -['path_tpc']['curves'][740]['offset'] +['path_tpc']['curves'][739]['res_net_meters'] +['path_tpc']['curves'][740]['offset_meters'] ['path_tpc']['curves'][740]['res_coeff'] -['path_tpc']['curves'][740]['res_net'] -['path_tpc']['curves'][741]['offset'] +['path_tpc']['curves'][740]['res_net_meters'] +['path_tpc']['curves'][741]['offset_meters'] ['path_tpc']['curves'][741]['res_coeff'] -['path_tpc']['curves'][741]['res_net'] -['path_tpc']['curves'][742]['offset'] +['path_tpc']['curves'][741]['res_net_meters'] +['path_tpc']['curves'][742]['offset_meters'] ['path_tpc']['curves'][742]['res_coeff'] -['path_tpc']['curves'][742]['res_net'] -['path_tpc']['curves'][743]['offset'] +['path_tpc']['curves'][742]['res_net_meters'] +['path_tpc']['curves'][743]['offset_meters'] ['path_tpc']['curves'][743]['res_coeff'] -['path_tpc']['curves'][743]['res_net'] -['path_tpc']['curves'][744]['offset'] +['path_tpc']['curves'][743]['res_net_meters'] +['path_tpc']['curves'][744]['offset_meters'] ['path_tpc']['curves'][744]['res_coeff'] -['path_tpc']['curves'][744]['res_net'] -['path_tpc']['curves'][745]['offset'] +['path_tpc']['curves'][744]['res_net_meters'] +['path_tpc']['curves'][745]['offset_meters'] ['path_tpc']['curves'][745]['res_coeff'] -['path_tpc']['curves'][745]['res_net'] -['path_tpc']['curves'][746]['offset'] +['path_tpc']['curves'][745]['res_net_meters'] +['path_tpc']['curves'][746]['offset_meters'] ['path_tpc']['curves'][746]['res_coeff'] -['path_tpc']['curves'][746]['res_net'] -['path_tpc']['curves'][747]['offset'] +['path_tpc']['curves'][746]['res_net_meters'] +['path_tpc']['curves'][747]['offset_meters'] ['path_tpc']['curves'][747]['res_coeff'] -['path_tpc']['curves'][747]['res_net'] -['path_tpc']['curves'][748]['offset'] +['path_tpc']['curves'][747]['res_net_meters'] +['path_tpc']['curves'][748]['offset_meters'] ['path_tpc']['curves'][748]['res_coeff'] -['path_tpc']['curves'][748]['res_net'] -['path_tpc']['curves'][749]['offset'] +['path_tpc']['curves'][748]['res_net_meters'] +['path_tpc']['curves'][749]['offset_meters'] ['path_tpc']['curves'][749]['res_coeff'] -['path_tpc']['curves'][749]['res_net'] -['path_tpc']['curves'][750]['offset'] +['path_tpc']['curves'][749]['res_net_meters'] +['path_tpc']['curves'][750]['offset_meters'] ['path_tpc']['curves'][750]['res_coeff'] -['path_tpc']['curves'][750]['res_net'] -['path_tpc']['curves'][751]['offset'] +['path_tpc']['curves'][750]['res_net_meters'] +['path_tpc']['curves'][751]['offset_meters'] ['path_tpc']['curves'][751]['res_coeff'] -['path_tpc']['curves'][751]['res_net'] -['path_tpc']['curves'][752]['offset'] +['path_tpc']['curves'][751]['res_net_meters'] +['path_tpc']['curves'][752]['offset_meters'] ['path_tpc']['curves'][752]['res_coeff'] -['path_tpc']['curves'][752]['res_net'] -['path_tpc']['curves'][753]['offset'] +['path_tpc']['curves'][752]['res_net_meters'] +['path_tpc']['curves'][753]['offset_meters'] ['path_tpc']['curves'][753]['res_coeff'] -['path_tpc']['curves'][753]['res_net'] -['path_tpc']['curves'][754]['offset'] +['path_tpc']['curves'][753]['res_net_meters'] +['path_tpc']['curves'][754]['offset_meters'] ['path_tpc']['curves'][754]['res_coeff'] -['path_tpc']['curves'][754]['res_net'] -['path_tpc']['curves'][755]['offset'] +['path_tpc']['curves'][754]['res_net_meters'] +['path_tpc']['curves'][755]['offset_meters'] ['path_tpc']['curves'][755]['res_coeff'] -['path_tpc']['curves'][755]['res_net'] -['path_tpc']['curves'][756]['offset'] +['path_tpc']['curves'][755]['res_net_meters'] +['path_tpc']['curves'][756]['offset_meters'] ['path_tpc']['curves'][756]['res_coeff'] -['path_tpc']['curves'][756]['res_net'] -['path_tpc']['curves'][757]['offset'] +['path_tpc']['curves'][756]['res_net_meters'] +['path_tpc']['curves'][757]['offset_meters'] ['path_tpc']['curves'][757]['res_coeff'] -['path_tpc']['curves'][757]['res_net'] -['path_tpc']['curves'][758]['offset'] +['path_tpc']['curves'][757]['res_net_meters'] +['path_tpc']['curves'][758]['offset_meters'] ['path_tpc']['curves'][758]['res_coeff'] -['path_tpc']['curves'][758]['res_net'] -['path_tpc']['curves'][759]['offset'] +['path_tpc']['curves'][758]['res_net_meters'] +['path_tpc']['curves'][759]['offset_meters'] ['path_tpc']['curves'][759]['res_coeff'] -['path_tpc']['curves'][759]['res_net'] -['path_tpc']['curves'][760]['offset'] +['path_tpc']['curves'][759]['res_net_meters'] +['path_tpc']['curves'][760]['offset_meters'] ['path_tpc']['curves'][760]['res_coeff'] -['path_tpc']['curves'][760]['res_net'] -['path_tpc']['curves'][761]['offset'] +['path_tpc']['curves'][760]['res_net_meters'] +['path_tpc']['curves'][761]['offset_meters'] ['path_tpc']['curves'][761]['res_coeff'] -['path_tpc']['curves'][761]['res_net'] -['path_tpc']['curves'][762]['offset'] +['path_tpc']['curves'][761]['res_net_meters'] +['path_tpc']['curves'][762]['offset_meters'] ['path_tpc']['curves'][762]['res_coeff'] -['path_tpc']['curves'][762]['res_net'] -['path_tpc']['curves'][763]['offset'] +['path_tpc']['curves'][762]['res_net_meters'] +['path_tpc']['curves'][763]['offset_meters'] ['path_tpc']['curves'][763]['res_coeff'] -['path_tpc']['curves'][763]['res_net'] -['path_tpc']['curves'][764]['offset'] +['path_tpc']['curves'][763]['res_net_meters'] +['path_tpc']['curves'][764]['offset_meters'] ['path_tpc']['curves'][764]['res_coeff'] -['path_tpc']['curves'][764]['res_net'] -['path_tpc']['curves'][765]['offset'] +['path_tpc']['curves'][764]['res_net_meters'] +['path_tpc']['curves'][765]['offset_meters'] ['path_tpc']['curves'][765]['res_coeff'] -['path_tpc']['curves'][765]['res_net'] -['path_tpc']['curves'][766]['offset'] +['path_tpc']['curves'][765]['res_net_meters'] +['path_tpc']['curves'][766]['offset_meters'] ['path_tpc']['curves'][766]['res_coeff'] -['path_tpc']['curves'][766]['res_net'] -['path_tpc']['curves'][767]['offset'] +['path_tpc']['curves'][766]['res_net_meters'] +['path_tpc']['curves'][767]['offset_meters'] ['path_tpc']['curves'][767]['res_coeff'] -['path_tpc']['curves'][767]['res_net'] -['path_tpc']['curves'][768]['offset'] +['path_tpc']['curves'][767]['res_net_meters'] +['path_tpc']['curves'][768]['offset_meters'] ['path_tpc']['curves'][768]['res_coeff'] -['path_tpc']['curves'][768]['res_net'] -['path_tpc']['curves'][769]['offset'] +['path_tpc']['curves'][768]['res_net_meters'] +['path_tpc']['curves'][769]['offset_meters'] ['path_tpc']['curves'][769]['res_coeff'] -['path_tpc']['curves'][769]['res_net'] -['path_tpc']['curves'][770]['offset'] +['path_tpc']['curves'][769]['res_net_meters'] +['path_tpc']['curves'][770]['offset_meters'] ['path_tpc']['curves'][770]['res_coeff'] -['path_tpc']['curves'][770]['res_net'] -['path_tpc']['curves'][771]['offset'] +['path_tpc']['curves'][770]['res_net_meters'] +['path_tpc']['curves'][771]['offset_meters'] ['path_tpc']['curves'][771]['res_coeff'] -['path_tpc']['curves'][771]['res_net'] -['path_tpc']['curves'][772]['offset'] +['path_tpc']['curves'][771]['res_net_meters'] +['path_tpc']['curves'][772]['offset_meters'] ['path_tpc']['curves'][772]['res_coeff'] -['path_tpc']['curves'][772]['res_net'] -['path_tpc']['curves'][773]['offset'] +['path_tpc']['curves'][772]['res_net_meters'] +['path_tpc']['curves'][773]['offset_meters'] ['path_tpc']['curves'][773]['res_coeff'] -['path_tpc']['curves'][773]['res_net'] -['path_tpc']['curves'][774]['offset'] +['path_tpc']['curves'][773]['res_net_meters'] +['path_tpc']['curves'][774]['offset_meters'] ['path_tpc']['curves'][774]['res_coeff'] -['path_tpc']['curves'][774]['res_net'] -['path_tpc']['curves'][775]['offset'] +['path_tpc']['curves'][774]['res_net_meters'] +['path_tpc']['curves'][775]['offset_meters'] ['path_tpc']['curves'][775]['res_coeff'] -['path_tpc']['curves'][775]['res_net'] -['path_tpc']['curves'][776]['offset'] +['path_tpc']['curves'][775]['res_net_meters'] +['path_tpc']['curves'][776]['offset_meters'] ['path_tpc']['curves'][776]['res_coeff'] -['path_tpc']['curves'][776]['res_net'] -['path_tpc']['curves'][777]['offset'] +['path_tpc']['curves'][776]['res_net_meters'] +['path_tpc']['curves'][777]['offset_meters'] ['path_tpc']['curves'][777]['res_coeff'] -['path_tpc']['curves'][777]['res_net'] -['path_tpc']['curves'][778]['offset'] +['path_tpc']['curves'][777]['res_net_meters'] +['path_tpc']['curves'][778]['offset_meters'] ['path_tpc']['curves'][778]['res_coeff'] -['path_tpc']['curves'][778]['res_net'] -['path_tpc']['curves'][779]['offset'] +['path_tpc']['curves'][778]['res_net_meters'] +['path_tpc']['curves'][779]['offset_meters'] ['path_tpc']['curves'][779]['res_coeff'] -['path_tpc']['curves'][779]['res_net'] -['path_tpc']['curves'][780]['offset'] +['path_tpc']['curves'][779]['res_net_meters'] +['path_tpc']['curves'][780]['offset_meters'] ['path_tpc']['curves'][780]['res_coeff'] -['path_tpc']['curves'][780]['res_net'] -['path_tpc']['curves'][781]['offset'] +['path_tpc']['curves'][780]['res_net_meters'] +['path_tpc']['curves'][781]['offset_meters'] ['path_tpc']['curves'][781]['res_coeff'] -['path_tpc']['curves'][781]['res_net'] -['path_tpc']['curves'][782]['offset'] +['path_tpc']['curves'][781]['res_net_meters'] +['path_tpc']['curves'][782]['offset_meters'] ['path_tpc']['curves'][782]['res_coeff'] -['path_tpc']['curves'][782]['res_net'] -['path_tpc']['curves'][783]['offset'] +['path_tpc']['curves'][782]['res_net_meters'] +['path_tpc']['curves'][783]['offset_meters'] ['path_tpc']['curves'][783]['res_coeff'] -['path_tpc']['curves'][783]['res_net'] -['path_tpc']['curves'][784]['offset'] +['path_tpc']['curves'][783]['res_net_meters'] +['path_tpc']['curves'][784]['offset_meters'] ['path_tpc']['curves'][784]['res_coeff'] -['path_tpc']['curves'][784]['res_net'] -['path_tpc']['curves'][785]['offset'] +['path_tpc']['curves'][784]['res_net_meters'] +['path_tpc']['curves'][785]['offset_meters'] ['path_tpc']['curves'][785]['res_coeff'] -['path_tpc']['curves'][785]['res_net'] -['path_tpc']['curves'][786]['offset'] +['path_tpc']['curves'][785]['res_net_meters'] +['path_tpc']['curves'][786]['offset_meters'] ['path_tpc']['curves'][786]['res_coeff'] -['path_tpc']['curves'][786]['res_net'] +['path_tpc']['curves'][786]['res_net_meters'] ['path_tpc']['speed_points'][0]['offset'] ['path_tpc']['speed_points'][0]['speed_limit'] ['path_tpc']['speed_points'][1]['offset'] @@ -6468,8 +6468,8 @@ ['braking_points']['points'][42]['speed_limit'] ['braking_points']['points'][42]['speed_target'] ['braking_points']['idx_curr'] -['fric_brake']['force_max'] -['fric_brake']['ramp_up_time'] +['fric_brake']['force_max_newtons'] +['fric_brake']['ramp_up_time_seconds'] ['fric_brake']['ramp_up_coeff'] ['fric_brake']['state']['i'] ['fric_brake']['state']['force'] From 8b7d396b3e8b3457bc4eb40fbbb504b1e7c5938b Mon Sep 17 00:00:00 2001 From: Chad Baker Date: Tue, 21 Jan 2025 13:50:08 -0700 Subject: [PATCH 45/50] not sure why this changed --- .../demo_variable_paths/variable_path_list_expected.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/altrios/resources/demo_data/demo_variable_paths/variable_path_list_expected.txt b/python/altrios/resources/demo_data/demo_variable_paths/variable_path_list_expected.txt index bbee3394..dcf7ad11 100644 --- a/python/altrios/resources/demo_data/demo_variable_paths/variable_path_list_expected.txt +++ b/python/altrios/resources/demo_data/demo_variable_paths/variable_path_list_expected.txt @@ -1100,8 +1100,8 @@ ['loco_con']['history']['energy_res'] ['loco_con']['history']['energy_fuel'] ['loco_con']['save_interval'] -['n_cars_by_type']['Manifest_Empty'] ['n_cars_by_type']['Manifest_Loaded'] +['n_cars_by_type']['Manifest_Empty'] ['state']['time'] ['state']['i'] ['state']['offset'] From 52d64c347923dcb97d8155e614fc14f8c07b1cf9 Mon Sep 17 00:00:00 2001 From: Chad Baker Date: Tue, 21 Jan 2025 13:54:50 -0700 Subject: [PATCH 46/50] removed deprecated hard-coded braking parameters --- rust/altrios-core/src/train/friction_brakes.rs | 2 ++ rust/altrios-core/src/train/train_config.rs | 11 +---------- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/rust/altrios-core/src/train/friction_brakes.rs b/rust/altrios-core/src/train/friction_brakes.rs index b86aa6f7..d786e3ac 100644 --- a/rust/altrios-core/src/train/friction_brakes.rs +++ b/rust/altrios-core/src/train/friction_brakes.rs @@ -26,6 +26,8 @@ use crate::imports::*; } )] #[derive(Debug, Clone, PartialEq, Serialize, Deserialize, HistoryMethods, SerdeAPI)] +// brake propagation rate is ~800 ft/s (about speed of sound) +// ramp up duration is ~30 s pub struct FricBrake { /// max static force achievable pub force_max: si::Force, diff --git a/rust/altrios-core/src/train/train_config.rs b/rust/altrios-core/src/train/train_config.rs index a5ae5446..0e79dc48 100644 --- a/rust/altrios-core/src/train/train_config.rs +++ b/rust/altrios-core/src/train/train_config.rs @@ -542,12 +542,6 @@ impl TrainSimBuilder { )) }; - // brake propagation rate is 800 ft/s (about speed of sound) - // ramp up duration is ~30 s - // TODO: make this not hard coded! - let ramp_up_time = 0.0 * uc::S; - let ramp_up_coeff = 0.6 * uc::R; - let fric_brake = FricBrake::new( max_fric_braking, ramp_up_time, @@ -1457,10 +1451,7 @@ impl SpeedLimitTrainSimVec { } pub fn get_cars_moved(&self, annualize: bool) -> f64 { - self.0 - .iter() - .map(|sim| sim.get_cars_moved(annualize)) - .sum() + self.0.iter().map(|sim| sim.get_cars_moved(annualize)).sum() } pub fn get_res_kilometers(&mut self, annualize: bool) -> f64 { From 52e568d3035b95b83638d51f3243c5aef8cd3d94 Mon Sep 17 00:00:00 2001 From: Chad Baker Date: Tue, 21 Jan 2025 14:09:00 -0700 Subject: [PATCH 47/50] fixed errors related to deleting hardcoded parameters --- .../altrios-core/src/train/friction_brakes.rs | 19 +++++++++++-------- rust/altrios-core/src/train/train_config.rs | 8 +------- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/rust/altrios-core/src/train/friction_brakes.rs b/rust/altrios-core/src/train/friction_brakes.rs index d786e3ac..b376b3f3 100644 --- a/rust/altrios-core/src/train/friction_brakes.rs +++ b/rust/altrios-core/src/train/friction_brakes.rs @@ -4,22 +4,22 @@ use crate::imports::*; #[new] #[pyo3(signature = ( force_max_newtons, - ramp_up_time_seconds, - ramp_up_coeff, + ramp_up_time_seconds=None, + ramp_up_coeff=None, state=None, save_interval=None, ))] fn __new__( force_max_newtons: f64, - ramp_up_time_seconds: f64, - ramp_up_coeff: f64, + ramp_up_time_seconds: Option, + ramp_up_coeff: Option, state: Option, save_interval: Option, ) -> Self { Self::new( force_max_newtons * uc::N, - ramp_up_time_seconds * uc::S, - ramp_up_coeff * uc::R, + ramp_up_time_seconds.map(|ruts| ruts * uc::S), + ramp_up_coeff.map(|ruc| ruc * uc::R), state, save_interval, ) @@ -67,14 +67,17 @@ impl Default for FricBrake { impl FricBrake { pub fn new( force_max: si::Force, - ramp_up_time: si::Time, - ramp_up_coeff: si::Ratio, + ramp_up_time: Option, + ramp_up_coeff: Option, // recharge_rate_pa_per_sec: f64, state: Option, save_interval: Option, ) -> Self { let mut state = state.unwrap_or_default(); state.force_max_curr = force_max; + let fric_brake_def: Self = Default::default(); + let ramp_up_time = ramp_up_time.unwrap_or(fric_brake_def.ramp_up_time); + let ramp_up_coeff = ramp_up_coeff.unwrap_or(fric_brake_def.ramp_up_coeff); Self { force_max, ramp_up_time, diff --git a/rust/altrios-core/src/train/train_config.rs b/rust/altrios-core/src/train/train_config.rs index 0e79dc48..b044b53c 100644 --- a/rust/altrios-core/src/train/train_config.rs +++ b/rust/altrios-core/src/train/train_config.rs @@ -542,13 +542,7 @@ impl TrainSimBuilder { )) }; - let fric_brake = FricBrake::new( - max_fric_braking, - ramp_up_time, - ramp_up_coeff, - None, - save_interval, - ); + let fric_brake = FricBrake::new(max_fric_braking, None, None, None, save_interval); Ok((train_params, state, path_tpc, train_res, fric_brake)) } From ff4cd5c7afad0ad8e5e0c7107128ee489399352a Mon Sep 17 00:00:00 2001 From: sakhtar Date: Tue, 21 Jan 2025 14:16:18 -0700 Subject: [PATCH 48/50] Incorporated Geordie's changes into the code --- rust/altrios-core/src/meet_pass/train_disp/free_path.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rust/altrios-core/src/meet_pass/train_disp/free_path.rs b/rust/altrios-core/src/meet_pass/train_disp/free_path.rs index 0c380c71..2d591f86 100644 --- a/rust/altrios-core/src/meet_pass/train_disp/free_path.rs +++ b/rust/altrios-core/src/meet_pass/train_disp/free_path.rs @@ -719,9 +719,9 @@ impl TrainDisp { // Update front and back dispatch nodes let (idx_min, idx_max) = if self.disp_node_idx_back < self.disp_node_idx_front { - (&mut self.disp_node_idx_front, &mut self.disp_node_idx_back) - } else { (&mut self.disp_node_idx_back, &mut self.disp_node_idx_front) + } else { + (&mut self.disp_node_idx_front, &mut self.disp_node_idx_back) }; assert!(idx_max.idx() < idx_join_base); From ff8d0c0cb4e16560f295bb4da03ea1aff3d472bd Mon Sep 17 00:00:00 2001 From: "Bruchon, Matthew" Date: Tue, 21 Jan 2025 19:04:58 -0500 Subject: [PATCH 49/50] Update sim_manager.py --- python/altrios/sim_manager.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/python/altrios/sim_manager.py b/python/altrios/sim_manager.py index 0163224a..c3da4239 100644 --- a/python/altrios/sim_manager.py +++ b/python/altrios/sim_manager.py @@ -137,6 +137,7 @@ def main( 'Arrival_Time_Actual_Hr': pl.Series([this[len(this)-1].time_hours for this in timed_paths], dtype=pl.Float64)} ) + train_consist_plan_untrimmed = train_consist_plan.clone() train_consist_plan = (train_consist_plan .join(train_times,on=["Train_ID","Origin_ID","Destination_ID"],how="left") ) @@ -165,4 +166,5 @@ def main( nodal_energy_prices, train_sims, timed_paths, + train_consist_plan_untrimmed ) From 972f9a2540af661d76244087056db46f436c8101 Mon Sep 17 00:00:00 2001 From: Chad Baker Date: Wed, 22 Jan 2025 08:23:57 -0700 Subject: [PATCH 50/50] incorporated change from Geordie --- rust/altrios-core/src/meet_pass/train_disp/free_path.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rust/altrios-core/src/meet_pass/train_disp/free_path.rs b/rust/altrios-core/src/meet_pass/train_disp/free_path.rs index 0c380c71..2d591f86 100644 --- a/rust/altrios-core/src/meet_pass/train_disp/free_path.rs +++ b/rust/altrios-core/src/meet_pass/train_disp/free_path.rs @@ -719,9 +719,9 @@ impl TrainDisp { // Update front and back dispatch nodes let (idx_min, idx_max) = if self.disp_node_idx_back < self.disp_node_idx_front { - (&mut self.disp_node_idx_front, &mut self.disp_node_idx_back) - } else { (&mut self.disp_node_idx_back, &mut self.disp_node_idx_front) + } else { + (&mut self.disp_node_idx_front, &mut self.disp_node_idx_back) }; assert!(idx_max.idx() < idx_join_base);