From 5511ac2500e5c07d384619e3fff4513e8d880b6d Mon Sep 17 00:00:00 2001 From: Bill Becker Date: Mon, 6 Jan 2025 22:42:45 -0700 Subject: [PATCH 01/25] Improve test description, avoid using Dates.jl in runtests.jl --- test/runtests.jl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/runtests.jl b/test/runtests.jl index 0a472190d..c01541604 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -3087,17 +3087,17 @@ else # run HiGHS tests input_data["ElectricLoad"]["loads_kw"] = zeros(8760) # Weekday off-peak February 28th, to set February Facility demand charge input_data["ElectricLoad"]["loads_kw"][31*24+27*24+8] = peak_load - # Weekday off-peak Feb 29th for leap year, to make sure not adding March facility demand charge if non-leap year or if Feb handled as 28 days for leap year (wrong) + # Weekday off-peak Feb 29th for leap year, March 1st for non-leap year (also if Feb is wrongly handled as 28 days for leap year) input_data["ElectricLoad"]["loads_kw"][31*24+28*24+8] = peak_load s = Scenario(input_data) inputs = REoptInputs(s) m = Model(optimizer_with_attributes(HiGHS.Optimizer, "mip_rel_gap" => 0.01, "output_flag" => false, "log_to_console" => false)) results = run_reopt(m, inputs) flat_rate = input_data["ElectricTariff"]["urdb_response"]["flatdemandstructure"][3][1]["rate"] - if isleapyear(year) + if year == 2024 demand_charge_expected = flat_rate * peak_load - else - demand_charge_expected = 2* flat_rate * peak_load + elseif year == 2023 + demand_charge_expected = 2 * flat_rate * peak_load end @test results["ElectricTariff"]["year_one_demand_cost_before_tax"] ≈ demand_charge_expected atol=1E-6 end From 3a620f58855367e4e53c2ebaf45ab5b3a776b0aa Mon Sep 17 00:00:00 2001 From: Bill Becker Date: Mon, 6 Jan 2025 22:51:25 -0700 Subject: [PATCH 02/25] Add leap year test input file --- test/runtests.jl | 2 +- test/scenarios/leap_year.json | 1414 +++++++++++++++++++++++++++++++++ 2 files changed, 1415 insertions(+), 1 deletion(-) create mode 100644 test/scenarios/leap_year.json diff --git a/test/runtests.jl b/test/runtests.jl index c01541604..2a12bbfaa 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -3056,7 +3056,7 @@ else # run HiGHS tests Flat/Facility (non-TOU) demand charges of 18.05/kW all month TOU demand charges of 10/kW between 2pm-7pm on weekdays """ - input_data = JSON.parsefile("./scenarios/leap_year.json") + input_data = JSON.parsefile("/scenarios/leap_year.json") # Set the load profile to zeros except for certain timesteps to test alignment of load with rate structure peak_load = 10.0 diff --git a/test/scenarios/leap_year.json b/test/scenarios/leap_year.json new file mode 100644 index 000000000..21ed7abb8 --- /dev/null +++ b/test/scenarios/leap_year.json @@ -0,0 +1,1414 @@ +{ + "Site": { + "latitude": 37.78, + "longitude": -122.45 + }, + "ElectricLoad": { + "year": 2024 + }, + "Financial": { + "elec_cost_escalation_rate_fraction": 0.0, + "om_cost_escalation_rate_fraction": 0.0, + "offtaker_discount_rate_fraction": 0.0, + "offtaker_tax_rate_fraction": 0.0, + "existing_boiler_fuel_cost_escalation_rate_fraction": 0.0 + }, + "ElectricTariff": { + "urdb_response": { + "energyweekdayschedule": [ + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 1, + 1 + ] + ], + "energyweekendschedule": [ + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ] + ], + "energyratestructure": [ + [ + { + "rate": 0, + "unit": "kWh" + } + ], + [ + { + "rate": 0.28, + "unit": "kWh" + } + ], + [ + { + "rate": 0.36, + "unit": "kWh" + } + ] + ], + "flatdemandstructure": [ + [ + { + "rate": 0 + } + ], + [ + { + "rate": 18.05 + } + ], + [ + { + "rate": 18.05 + } + ], + [ + { + "rate": 18.05 + } + ], + [ + { + "rate": 18.05 + } + ], + [ + { + "rate": 18.05 + } + ], + [ + { + "rate": 18.05 + } + ], + [ + { + "rate": 18.05 + } + ], + [ + { + "rate": 18.05 + } + ], + [ + { + "rate": 18.05 + } + ], + [ + { + "rate": 18.05 + } + ], + [ + { + "rate": 18.05 + } + ], + [ + { + "rate": 18.05 + } + ] + ], + "flatdemandmonths": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12 + ], + "lookbackmonths": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "demandratestructure": [ + [ + { + "rate": 0, + "unit": "kW" + } + ], + [ + { + "rate": 0.0, + "unit": "kW" + } + ], + [ + { + "rate": 10.0, + "unit": "kW" + } + ] + ], + "demandweekdayschedule": [ + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 1, + 1 + ] + ], + "demandweekendschedule": [ + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ] + ], + "lookbackpercent": 0.0, + "fixedchargefirstmeter": 24.878, + "fixedchargeunits": "$/day" + } + } +} \ No newline at end of file From fdcdd6a7b5e8b0b4b8a2f42454ba2475d85aea04 Mon Sep 17 00:00:00 2001 From: Bill Becker Date: Tue, 7 Jan 2025 09:53:07 -0700 Subject: [PATCH 03/25] Fix input file path formatting --- test/runtests.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/runtests.jl b/test/runtests.jl index 2a12bbfaa..9a9757da9 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -3056,7 +3056,7 @@ else # run HiGHS tests Flat/Facility (non-TOU) demand charges of 18.05/kW all month TOU demand charges of 10/kW between 2pm-7pm on weekdays """ - input_data = JSON.parsefile("/scenarios/leap_year.json") + input_data = JSON.parsefile("scenarios/leap_year.json") # Set the load profile to zeros except for certain timesteps to test alignment of load with rate structure peak_load = 10.0 From fc9208b9b2945e3ba6a11a64f44a9e0f3f8d5a6b Mon Sep 17 00:00:00 2001 From: Bill Becker Date: Wed, 8 Jan 2025 10:21:11 -0700 Subject: [PATCH 04/25] Include 2023 and 2024 years for all new tests --- test/runtests.jl | 61 ++++++++++++++++++++++++++++-------------------- 1 file changed, 36 insertions(+), 25 deletions(-) diff --git a/test/runtests.jl b/test/runtests.jl index 9a9757da9..3123b25e5 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -3050,7 +3050,7 @@ else # run HiGHS tests """ We tell users to truncate/cut-off the last day of the year of their load profile for leap years, to preserve the weekday/weekend and month alignment of the load with the rate structure - + The input .json file has a custom rate tariff to test leap year behavior for timesteps beyond end of February Higher energy price weekdays between 7AM (ts 8, 32, etc) through 7pm (ts 20, 44, etc) Flat/Facility (non-TOU) demand charges of 18.05/kW all month @@ -3059,31 +3059,42 @@ else # run HiGHS tests input_data = JSON.parsefile("scenarios/leap_year.json") # Set the load profile to zeros except for certain timesteps to test alignment of load with rate structure peak_load = 10.0 - - # Test for TOU energy and demand charges alignment with load profile for leap years - input_data["ElectricLoad"]["loads_kw"] = zeros(8760) - # Monday (on-peak) March 4, 2024, but Sunday (weekend, off-peak) if February handled as 28 days (as it was in REopt prior to 2025) - input_data["ElectricLoad"]["loads_kw"][31*24+29*24+3*24+16] = peak_load - s = Scenario(input_data) - inputs = REoptInputs(s) - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "mip_rel_gap" => 0.01, "output_flag" => false, "log_to_console" => false)) - results = run_reopt(m, inputs) - - # TOU Energy charges - weekend_rate = input_data["ElectricTariff"]["urdb_response"]["energyratestructure"][2][1]["rate"] # Not used in this test - weekday_rate = input_data["ElectricTariff"]["urdb_response"]["energyratestructure"][3][1]["rate"] - energy_charge_expected = weekday_rate * peak_load - @test results["ElectricTariff"]["year_one_energy_cost_before_tax"] ≈ energy_charge_expected atol=1E-6 - - # TOU Demand charges - flat_rate = input_data["ElectricTariff"]["urdb_response"]["flatdemandstructure"][3][1]["rate"] - tou_rate = input_data["ElectricTariff"]["urdb_response"]["demandratestructure"][3][1]["rate"] - demand_charge_expected = (flat_rate + tou_rate) * peak_load - @test results["ElectricTariff"]["year_one_demand_cost_before_tax"] ≈ demand_charge_expected atol=1E-6 - - # Test for flat/facility (non-TOU) demand charge for 2023 (non-leap year) and 2024 (leap year) for year in [2023, 2024] input_data["ElectricLoad"]["year"] = year + + # Test for TOU energy and demand charges alignment with load profile for leap years + input_data["ElectricLoad"]["loads_kw"] = zeros(8760) + # Sunday (off-peak) March 3, 2023, so expect off-peak energy and demand charges for 2023 + # Monday (on-peak) March 4, 2024, but Sunday (weekend, off-peak) if February handled as 28 days for leap year (as it was in REopt prior to 2025) + input_data["ElectricLoad"]["loads_kw"][31*24+29*24+3*24+16] = peak_load + s = Scenario(input_data) + inputs = REoptInputs(s) + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "mip_rel_gap" => 0.01, "output_flag" => false, "log_to_console" => false)) + results = run_reopt(m, inputs) + + # TOU Energy charges + weekend_rate = input_data["ElectricTariff"]["urdb_response"]["energyratestructure"][2][1]["rate"] # Not used in this test + weekday_rate = input_data["ElectricTariff"]["urdb_response"]["energyratestructure"][3][1]["rate"] + + # TOU Demand charges + flat_rate = input_data["ElectricTariff"]["urdb_response"]["flatdemandstructure"][3][1]["rate"] + tou_rate = input_data["ElectricTariff"]["urdb_response"]["demandratestructure"][3][1]["rate"] + + energy_charge_expected = 0.0 + demand_charge_expected = 0.0 + if year == 2023 + energy_charge_expected = weekend_rate * peak_load + demand_charge_expected = flat_rate * peak_load + elseif year == 2024 # Leap year + energy_charge_expected = weekday_rate * peak_load + demand_charge_expected = (flat_rate + tou_rate) * peak_load + end + println("year = ", year) + @test results["ElectricTariff"]["year_one_energy_cost_before_tax"] ≈ energy_charge_expected atol=1E-6 + @test results["ElectricTariff"]["year_one_demand_cost_before_tax"] ≈ demand_charge_expected atol=1E-6 + + + # Flat/facility (non-TOU) demand charge input_data["ElectricLoad"]["loads_kw"] = zeros(8760) # Weekday off-peak February 28th, to set February Facility demand charge input_data["ElectricLoad"]["loads_kw"][31*24+27*24+8] = peak_load @@ -3094,7 +3105,7 @@ else # run HiGHS tests m = Model(optimizer_with_attributes(HiGHS.Optimizer, "mip_rel_gap" => 0.01, "output_flag" => false, "log_to_console" => false)) results = run_reopt(m, inputs) flat_rate = input_data["ElectricTariff"]["urdb_response"]["flatdemandstructure"][3][1]["rate"] - if year == 2024 + if year == 2024 # Leap year demand_charge_expected = flat_rate * peak_load elseif year == 2023 demand_charge_expected = 2 * flat_rate * peak_load From dd13bedf42c1caf587f327941f3c54d6abce3b3c Mon Sep 17 00:00:00 2001 From: Bill Becker Date: Wed, 8 Jan 2025 20:48:34 -0700 Subject: [PATCH 05/25] Update year input for HeatingLoad --- src/core/heating_cooling_loads.jl | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/core/heating_cooling_loads.jl b/src/core/heating_cooling_loads.jl index 2deb832a0..1d0a3ec4b 100644 --- a/src/core/heating_cooling_loads.jl +++ b/src/core/heating_cooling_loads.jl @@ -9,11 +9,16 @@ industrial_reference_name::String = "", # For ProcessHeatLoad blended_industrial_reference_names::Array{String, 1} = String[], # For ProcessHeatLoad blended_industrial_reference_percents::Array{<:Real,1} = Real[], # For ProcessHeatLoad - addressable_load_fraction::Any = 1.0, # Fraction of input fuel load which is addressable by heating technologies. Can be a scalar or vector with length aligned with use of monthly_mmbtu or fuel_loads_mmbtu_per_hour. + city::String = "", + year::Int = doe_reference_name ≠ "" || blended_doe_reference_names ≠ String[] ? 2017 : 2022, # CRB profiles are 2017 by default. If providing load profile, specify year of data. annual_mmbtu::Union{Real, Nothing} = nothing, monthly_mmbtu::Array{<:Real,1} = Real[], + addressable_load_fraction::Any = 1.0, # Fraction of input fuel load which is addressable by heating technologies. Can be a scalar or vector with length aligned with use of monthly_mmbtu or fuel_loads_mmbtu_per_hour. fuel_loads_mmbtu_per_hour::Array{<:Real,1} = Real[], # Vector of space heating fuel loads [mmbtu/hr]. Length must equal 8760 * `Settings.time_steps_per_hour` normalize_and_scale_load_profile_input::Bool = false, # Takes fuel_loads_mmbtu_per_hour and normalizes and scales it to annual or monthly energy + time_steps_per_hour::Int = 1, # corresponding to `fuel_loads_mmbtu_per_hour` + latitude::Real = 0.0, + longitude::Real = 0.0, existing_boiler_efficiency::Real = NaN ``` @@ -49,7 +54,7 @@ function HeatingLoad(; blended_industrial_reference_names::Array{String, 1} = String[], blended_industrial_reference_percents::Array{<:Real,1} = Real[], city::String = "", - year::Int = doe_reference_name ≠ "" || blended_doe_reference_names ≠ String[] ? 2017 : 2022, # CRB profiles must use 2017. If providing load profile, specify year of data. + year::Int = doe_reference_name ≠ "" || blended_doe_reference_names ≠ String[] ? 2017 : 2022, # CRB profiles are 2017 by default. If providing load profile, specify year of data. annual_mmbtu::Union{Real, Nothing} = nothing, monthly_mmbtu::Array{<:Real,1} = Real[], addressable_load_fraction::Any = 1.0, @@ -118,14 +123,14 @@ function HeatingLoad(; loads_kw = BuiltInHeatingLoad(load_type, "Chicago", "FlatLoad", 41.8333, -88.0616, year, addressable_load_fraction, annual_mmbtu, monthly_mmbtu, existing_boiler_efficiency, normalized_profile) unaddressable_annual_fuel_mmbtu = get_unaddressable_fuel(addressable_load_fraction, annual_mmbtu, monthly_mmbtu, loads_kw, existing_boiler_efficiency) elseif !isempty(doe_reference_name) - loads_kw = BuiltInHeatingLoad(load_type, city, doe_reference_name, latitude, longitude, 2017, addressable_load_fraction, annual_mmbtu, monthly_mmbtu, existing_boiler_efficiency) + loads_kw = BuiltInHeatingLoad(load_type, city, doe_reference_name, latitude, longitude, year, addressable_load_fraction, annual_mmbtu, monthly_mmbtu, existing_boiler_efficiency) if length(blended_doe_reference_names) > 0 @warn "SpaceHeatingLoad doe_reference_name was provided, so blended_doe_reference_names will be ignored." end unaddressable_annual_fuel_mmbtu = get_unaddressable_fuel(addressable_load_fraction, annual_mmbtu, monthly_mmbtu, loads_kw, existing_boiler_efficiency) elseif length(blended_doe_reference_names) > 0 && length(blended_doe_reference_names) == length(blended_doe_reference_percents) - loads_kw = blend_and_scale_doe_profiles(BuiltInHeatingLoad, latitude, longitude, 2017, + loads_kw = blend_and_scale_doe_profiles(BuiltInHeatingLoad, latitude, longitude, year, blended_doe_reference_names, blended_doe_reference_percents, city, annual_mmbtu, monthly_mmbtu, addressable_load_fraction, existing_boiler_efficiency, load_type) From 60376db516fabec6179245372e6d6b716e2fe992 Mon Sep 17 00:00:00 2001 From: Bill Becker Date: Wed, 8 Jan 2025 20:49:05 -0700 Subject: [PATCH 06/25] Add year input for CoolingLoad --- src/core/heating_cooling_loads.jl | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/core/heating_cooling_loads.jl b/src/core/heating_cooling_loads.jl index 1d0a3ec4b..da60e6ad9 100644 --- a/src/core/heating_cooling_loads.jl +++ b/src/core/heating_cooling_loads.jl @@ -254,9 +254,10 @@ end `CoolingLoad` is an optional REopt input with the following keys and default values: ```julia doe_reference_name::String = "", - city::String = "", blended_doe_reference_names::Array{String, 1} = String[], blended_doe_reference_percents::Array{<:Real,1} = Real[], + city::String = "", + year::Int = doe_reference_name ≠ "" || blended_doe_reference_names ≠ String[] ? 2017 : 2022, # CRB profiles are 2017 by default. If providing load profile, specify year of data. annual_tonhour::Union{Real, Nothing} = nothing, monthly_tonhour::Array{<:Real,1} = Real[], thermal_loads_ton::Array{<:Real,1} = Real[], # Vector of cooling thermal loads [ton] = [short ton hours/hour]. Length must equal 8760 * `Settings.time_steps_per_hour` @@ -294,9 +295,10 @@ struct CoolingLoad function CoolingLoad(; doe_reference_name::String = "", - city::String = "", blended_doe_reference_names::Array{String, 1} = String[], blended_doe_reference_percents::Array{<:Real,1} = Real[], + city::String = "", + year::Int = doe_reference_name ≠ "" || blended_doe_reference_names ≠ String[] ? 2017 : 2022, # CRB profiles are 2017 by default. If providing load profile, specify year of data. annual_tonhour::Union{Real, Nothing} = nothing, monthly_tonhour::Array{<:Real,1} = Real[], thermal_loads_ton::Array{<:Real,1} = Real[], # Vector of cooling thermal loads [ton] = [short ton hours/hour]. Length must equal 8760 * `Settings.time_steps_per_hour` @@ -329,8 +331,8 @@ struct CoolingLoad if !(length(monthly_fractions_of_electric_load) ≈ 12) throw(@error("Provided cooling monthly_fractions_of_electric_load array does not have 12 values.")) end - timeseries = collect(DateTime(2017,1,1) : Minute(60/time_steps_per_hour) : - DateTime(2017,1,1) + Minute(8760*60 - 60/time_steps_per_hour)) + timeseries = collect(DateTime(year,1,1) : Minute(60/time_steps_per_hour) : + DateTime(year,1,1) + Minute(8760*60 - 60/time_steps_per_hour)) loads_kw = [monthly_fractions_of_electric_load[month(dt)] * site_electric_load_profile[ts] for (ts, dt) in enumerate(timeseries)] @@ -340,9 +342,9 @@ struct CoolingLoad elseif !isempty(doe_reference_name) if isnothing(annual_tonhour) && isempty(monthly_tonhour) loads_kw = get_default_fraction_of_total_electric(city, doe_reference_name, - latitude, longitude, 2017) .* site_electric_load_profile + latitude, longitude, year) .* site_electric_load_profile else - loads_kw = BuiltInCoolingLoad(city, doe_reference_name, latitude, longitude, 2017, + loads_kw = BuiltInCoolingLoad(city, doe_reference_name, latitude, longitude, year, annual_tonhour, monthly_tonhour, existing_chiller_cop) end @@ -351,7 +353,7 @@ struct CoolingLoad if isnothing(annual_tonhour) && isempty(monthly_tonhour) loads_kw = zeros(Int(8760/time_steps_per_hour)) for (i, building) in enumerate(blended_doe_reference_names) - default_fraction = get_default_fraction_of_total_electric(city, building, latitude, longitude, 2017) + default_fraction = get_default_fraction_of_total_electric(city, building, latitude, longitude, year) modified_fraction = default_fraction * blended_doe_reference_percents[i] if length(site_electric_load_profile) > 8784 modified_fraction = repeat(modified_fraction, inner=time_steps_per_hour / (length(site_electric_load_profile)/8760)) @@ -359,8 +361,8 @@ struct CoolingLoad end loads_kw += site_electric_load_profile .* modified_fraction end - else - loads_kw = blend_and_scale_doe_profiles(BuiltInCoolingLoad, latitude, longitude, 2017, + else + loads_kw = blend_and_scale_doe_profiles(BuiltInCoolingLoad, latitude, longitude, year, blended_doe_reference_names, blended_doe_reference_percents, city, annual_tonhour, monthly_tonhour) From f472f9a3cc701b22fa7167cc850563eb0349a130 Mon Sep 17 00:00:00 2001 From: Bill Becker Date: Wed, 8 Jan 2025 20:49:49 -0700 Subject: [PATCH 07/25] Remove year=2017 requirement for ElectricLoad --- src/core/electric_load.jl | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/core/electric_load.jl b/src/core/electric_load.jl index 1797a3638..a2a2ce09c 100644 --- a/src/core/electric_load.jl +++ b/src/core/electric_load.jl @@ -158,11 +158,6 @@ mutable struct ElectricLoad # mutable to adjust (critical_)loads_kw based off o end elseif !isempty(doe_reference_name) - # NOTE: must use year that starts on Sunday with DOE reference doe_ref_profiles - if year != 2017 - @warn "Changing load profile year to 2017 because DOE reference profiles start on a Sunday." - end - year = 2017 loads_kw = BuiltInElectricLoad(city, doe_reference_name, latitude, longitude, year, annual_kwh, monthly_totals_kwh) elseif length(blended_doe_reference_names) > 1 && @@ -170,7 +165,6 @@ mutable struct ElectricLoad # mutable to adjust (critical_)loads_kw based off o loads_kw = blend_and_scale_doe_profiles(BuiltInElectricLoad, latitude, longitude, year, blended_doe_reference_names, blended_doe_reference_percents, city, annual_kwh, monthly_totals_kwh) - # TODO: Should also warn here about year 2017 else throw(@error("Cannot construct ElectricLoad. You must provide either [loads_kw], [doe_reference_name, city], [doe_reference_name, latitude, longitude], From 160ed67c212333e5fb5ffa3cfc54447bf201c524 Mon Sep 17 00:00:00 2001 From: Bill Becker Date: Wed, 8 Jan 2025 21:14:49 -0700 Subject: [PATCH 08/25] Avoid passing year twice to constructors, make load consistency required by throwing error if not The get!() function (with "!") add the "year" key/value to the dictionary object, so we can now avoid passing the year kwarg in explicitly. --- src/core/scenario.jl | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/core/scenario.jl b/src/core/scenario.jl index f53fd3212..46f4bd4f3 100644 --- a/src/core/scenario.jl +++ b/src/core/scenario.jl @@ -221,14 +221,13 @@ function Scenario(d::Dict; flex_hvac_from_json=false) if haskey(d, "DomesticHotWaterLoad") && !haskey(d, "FlexibleHVAC") add_doe_reference_names_from_elec_to_thermal_loads(d["ElectricLoad"], d["DomesticHotWaterLoad"]) existing_boiler_efficiency = get_existing_boiler_efficiency(d) - year = get(d["DomesticHotWaterLoad"], "year", electric_load.year) + year = get!(d["DomesticHotWaterLoad"], "year", electric_load.year) validate_load_year_consistency(electric_load.year, year, "DomesticHotWaterLoad") dhw_load = HeatingLoad(; dictkeys_tosymbols(d["DomesticHotWaterLoad"])..., load_type = "domestic_hot_water", latitude=site.latitude, longitude=site.longitude, time_steps_per_hour=settings.time_steps_per_hour, - existing_boiler_efficiency = existing_boiler_efficiency, - year = year + existing_boiler_efficiency = existing_boiler_efficiency ) max_heat_demand_kw = maximum(dhw_load.loads_kw) else @@ -243,14 +242,13 @@ function Scenario(d::Dict; flex_hvac_from_json=false) if haskey(d, "SpaceHeatingLoad") && !haskey(d, "FlexibleHVAC") add_doe_reference_names_from_elec_to_thermal_loads(d["ElectricLoad"], d["SpaceHeatingLoad"]) existing_boiler_efficiency = get_existing_boiler_efficiency(d) - year = get(d["SpaceHeatingLoad"], "year", electric_load.year) + year = get!(d["SpaceHeatingLoad"], "year", electric_load.year) validate_load_year_consistency(electric_load.year, year, "SpaceHeatingLoad") space_heating_load = HeatingLoad(; dictkeys_tosymbols(d["SpaceHeatingLoad"])..., load_type = "space_heating", latitude=site.latitude, longitude=site.longitude, time_steps_per_hour=settings.time_steps_per_hour, - existing_boiler_efficiency = existing_boiler_efficiency, - year = year + existing_boiler_efficiency = existing_boiler_efficiency ) max_heat_demand_kw = maximum(space_heating_load.loads_kw .+ max_heat_demand_kw) else @@ -264,14 +262,13 @@ function Scenario(d::Dict; flex_hvac_from_json=false) if haskey(d, "ProcessHeatLoad") && !haskey(d, "FlexibleHVAC") existing_boiler_efficiency = get_existing_boiler_efficiency(d) - year = get(d["ProcessHeatLoad"], "year", electric_load.year) + year = get!(d["ProcessHeatLoad"], "year", electric_load.year) validate_load_year_consistency(electric_load.year, year, "ProcessHeatLoad") process_heat_load = HeatingLoad(; dictkeys_tosymbols(d["ProcessHeatLoad"])..., load_type = "process_heat", latitude = site.latitude, longitude = site.longitude, time_steps_per_hour = settings.time_steps_per_hour, - existing_boiler_efficiency = existing_boiler_efficiency, - year = year + existing_boiler_efficiency = existing_boiler_efficiency ) max_heat_demand_kw = maximum(process_heat_load.loads_kw .+ max_heat_demand_kw) @@ -418,6 +415,8 @@ function Scenario(d::Dict; flex_hvac_from_json=false) d["CoolingLoad"]["existing_chiller_max_thermal_factor_on_peak_load"] = ec_empty.max_thermal_factor_on_peak_load end end + year = get!(d["CoolingLoad"], "year", electric_load.year) + validate_load_year_consistency(electric_load.year, year, "CoolingLoad") cooling_load = CoolingLoad(; dictkeys_tosymbols(d["CoolingLoad"])..., latitude=site.latitude, longitude=site.longitude, time_steps_per_hour=settings.time_steps_per_hour @@ -826,6 +825,6 @@ end function validate_load_year_consistency(electric_load_year, year, load_type) if electric_load_year != year - @warn "Inconsistent load years: ElectricLoad year ($electric_load_year) does not match the provided year ($year) for $load_type." + throw(@error("Inconsistent load years: ElectricLoad year ($electric_load_year) does not match the provided year ($year) for $load_type.")) end end \ No newline at end of file From 93fac742976ed283cabe888fe6f03137f69f60ce Mon Sep 17 00:00:00 2001 From: Bill Becker Date: Wed, 8 Jan 2025 21:19:27 -0700 Subject: [PATCH 09/25] Shift CRB load profiles to match the starting day of the input year, if not default 2017 --- ...doe_commercial_reference_building_loads.jl | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/core/doe_commercial_reference_building_loads.jl b/src/core/doe_commercial_reference_building_loads.jl index fcc3138a1..76cde00b3 100644 --- a/src/core/doe_commercial_reference_building_loads.jl +++ b/src/core/doe_commercial_reference_building_loads.jl @@ -134,25 +134,32 @@ function built_in_load( profile_path = joinpath(lib_path, string("crb8760_norm_" * city * "_" * buildingtype * ".dat")) input_normalized = false + shift_possible = false if isempty(normalized_profile) if occursin("FlatLoad", buildingtype) normalized_profile = custom_normalized_flatload(buildingtype, year) else normalized_profile = vec(readdlm(profile_path, '\n', Float64, '\n')) + shift_possible = true end else input_normalized = true end + # The normalized_profile for CRBs (not FlatLoads) is based on year 2017 which starts on a Sunday. + # If the year is not 2017 and we're using a CRB, we need to shift the profile to make the first day of the profile equal to the first day of the input year. + if !(year == 2017) && shift_possible + first_day_of_year = Dates.dayofweek(Date(year, 1, 1)) + shift_days = first_day_of_year - 7 # 7 for Sunday, 1 for Monday, 2 for Tuesday etc., so if start day is Sunday there is no shift + normalized_profile = circshift(normalized_profile, 24 * shift_days) + end + if length(monthly_energies) == 12 annual_energy = 1.0 # do not scale based on annual_energy t0 = 1 for month in 1:12 plus_hours = daysinmonth(Date(string(year) * "-" * string(month))) * 24 - if month == 2 && isleapyear(year) && !input_normalized # for a leap year with normalized_profile, the last day is assumed to be truncated - plus_hours -= 24 - end - if month == 12 && isleapyear(year) && input_normalized + if month == 12 && isleapyear(year) # for a leap year, the last day is assumed to be truncated plus_hours -= 24 end month_total = sum(normalized_profile[t0:t0+plus_hours-1]) @@ -223,10 +230,6 @@ function blend_and_scale_doe_profiles( ) @assert sum(blended_doe_reference_percents) ≈ 1 "The sum of the blended_doe_reference_percents must equal 1" - if year != 2017 - @debug "Changing ElectricLoad.year to 2017 because DOE reference profiles start on a Sunday." - end - year = 2017 if isempty(city) if heating_load_type === "process_heat" From a6c42caa4134de8f423628e51642cb40fb10a5bd Mon Sep 17 00:00:00 2001 From: Bill Becker Date: Wed, 8 Jan 2025 21:49:26 -0700 Subject: [PATCH 10/25] Fix leap year handling for helper function get_monthly_energy for simulated_load --- src/core/doe_commercial_reference_building_loads.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/doe_commercial_reference_building_loads.jl b/src/core/doe_commercial_reference_building_loads.jl index 76cde00b3..8677e7346 100644 --- a/src/core/doe_commercial_reference_building_loads.jl +++ b/src/core/doe_commercial_reference_building_loads.jl @@ -328,7 +328,7 @@ function get_monthly_energy(power_profile::AbstractArray{<:Real,1}; monthly_energy_total = zeros(12) for month in 1:12 plus_hours = daysinmonth(Date(string(year) * "-" * string(month))) * 24 - if month == 2 && isleapyear(year) + if month == 12 && isleapyear(year) plus_hours -= 24 end if !isempty(power_profile) From b244565fafe6e6778ff34ff1e86f3f80db5b76ee Mon Sep 17 00:00:00 2001 From: Bill Becker Date: Thu, 9 Jan 2025 08:51:19 -0700 Subject: [PATCH 11/25] Update simulated_load() for year input and alignment across loads --- src/core/simulated_load.jl | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/core/simulated_load.jl b/src/core/simulated_load.jl index b6431abfe..e62d61c51 100644 --- a/src/core/simulated_load.jl +++ b/src/core/simulated_load.jl @@ -16,6 +16,7 @@ One particular aspect of this function specifically for the webtool/UI is the he function simulated_load(d::Dict) # Latitude and longitude are required if not normalizing and scaling load profile input normalize_and_scale_load_profile_input = get(d, "normalize_and_scale_load_profile_input", false) + year = get(d, "year", 2017) latitude = get(d, "latitude", 0.0) longitude = get(d, "longitude", 0.0) if (isnothing(latitude) || isnothing(longitude)) && !normalize_and_scale_load_profile_input @@ -158,6 +159,7 @@ function simulated_load(d::Dict) elec_load_inputs[:normalize_and_scale_load_profile_input] = normalize_and_scale_load_profile_input elec_load_inputs[:loads_kw] = load_profile end + elec_load_inputs[:year] = year electric_load = ElectricLoad(; elec_load_inputs..., latitude=latitude, @@ -176,6 +178,8 @@ function simulated_load(d::Dict) else cooling_load_inputs[:doe_reference_name] = cooling_doe_ref_name[1] end + cooling_load_inputs[:year] = year + cooling_load = CoolingLoad(; cooling_load_inputs..., city=electric_load.city, latitude=latitude, @@ -286,6 +290,7 @@ function simulated_load(d::Dict) if addressable_load_fraction != 1.0 heating_load_inputs[:addressable_load_fraction] = addressable_load_fraction end + heating_load_inputs[:year] = year # Split up the single heating fuel input for space + dhw annual_mmbtu or monthly_mmbtu into CRB profile split boiler_efficiency = get(d, "boiler_efficiency", EXISTING_BOILER_EFFICIENCY) @@ -313,8 +318,8 @@ function simulated_load(d::Dict) dhw_monthly_fuel_mmbtu = Vector{Real}() if !isempty(monthly_mmbtu) - space_heating_monthly_energy = get_monthly_energy(default_space_heating_load.loads_kw) - dhw_monthly_energy = get_monthly_energy(default_dhw_load.loads_kw) + space_heating_monthly_energy = get_monthly_energy(default_space_heating_load.loads_kw; year=year) + dhw_monthly_energy = get_monthly_energy(default_dhw_load.loads_kw; year=year) total_monthly_energy = space_heating_monthly_energy + dhw_monthly_energy @@ -461,6 +466,7 @@ function simulated_load(d::Dict) if addressable_load_fraction != 1.0 heating_load_inputs[:addressable_load_fraction] = addressable_load_fraction end + heating_load_inputs[:year] = year heating_load = HeatingLoad(; heating_load_inputs..., load_type = load_type, @@ -472,7 +478,7 @@ function simulated_load(d::Dict) ) load_series = heating_load.loads_kw ./ boiler_efficiency ./ KWH_PER_MMBTU # [MMBtu/hr fuel] - heating_monthly_energy = get_monthly_energy(load_series) + heating_monthly_energy = get_monthly_energy(load_series; year=year) response = Dict([ ("load_type", load_type), @@ -530,9 +536,12 @@ function simulated_load(d::Dict) throw(@error("monthly_fraction must contain a value between 0-1 for each month, and it is not valid for these months: $bad_index")) end end - days_in_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] # Only relevant for 2017 the CRB year, not for leap year + days_in_month = [daysinmonth(Date(string(year) * "-" * string(month))) for month in 1:12] fraction_series = [] for i in 1:12 + if month == 12 && isleapyear(year) + days_in_month[i] -= 1 + end append!(fraction_series, fill!(zeros(days_in_month[i] * 24), monthly_fraction[i])) end response = Dict([ @@ -577,7 +586,8 @@ function simulated_load(d::Dict) cooling_load_inputs[:blended_doe_reference_percents] = percent_share_list else cooling_load_inputs[:doe_reference_name] = doe_reference_name[1] - end + end + cooling_load_inputs[:year] = year cooling_load = CoolingLoad(; cooling_load_inputs..., latitude = latitude, From d3b5c602ec527b8b05f53b53ef3f64b508bc3ae9 Mon Sep 17 00:00:00 2001 From: Bill Becker Date: Thu, 9 Jan 2025 08:54:48 -0700 Subject: [PATCH 12/25] Add tests for load alignment based on year input --- test/data/10 kW FlatLoad_16_5 2024.csv | 8761 ++++++++++++++++++++++++ test/runtests.jl | 77 + test/scenarios/load_year_align.json | 29 + 3 files changed, 8867 insertions(+) create mode 100644 test/data/10 kW FlatLoad_16_5 2024.csv create mode 100644 test/scenarios/load_year_align.json diff --git a/test/data/10 kW FlatLoad_16_5 2024.csv b/test/data/10 kW FlatLoad_16_5 2024.csv new file mode 100644 index 000000000..6af6019a8 --- /dev/null +++ b/test/data/10 kW FlatLoad_16_5 2024.csv @@ -0,0 +1,8761 @@ +Hour,Electric Load (kW) +1,0 +2,0 +3,0 +4,0 +5,0 +6,0 +7,10 +8,10 +9,10 +10,10 +11,10 +12,10 +13,10 +14,10 +15,10 +16,10 +17,10 +18,10 +19,10 +20,10 +21,10 +22,10 +23,0 +24,0 +25,0 +26,0 +27,0 +28,0 +29,0 +30,0 +31,10 +32,10 +33,10 +34,10 +35,10 +36,10 +37,10 +38,10 +39,10 +40,10 +41,10 +42,10 +43,10 +44,10 +45,10 +46,10 +47,0 +48,0 +49,0 +50,0 +51,0 +52,0 +53,0 +54,0 +55,10 +56,10 +57,10 +58,10 +59,10 +60,10 +61,10 +62,10 +63,10 +64,10 +65,10 +66,10 +67,10 +68,10 +69,10 +70,10 +71,0 +72,0 +73,0 +74,0 +75,0 +76,0 +77,0 +78,0 +79,10 +80,10 +81,10 +82,10 +83,10 +84,10 +85,10 +86,10 +87,10 +88,10 +89,10 +90,10 +91,10 +92,10 +93,10 +94,10 +95,0 +96,0 +97,0 +98,0 +99,0 +100,0 +101,0 +102,0 +103,10 +104,10 +105,10 +106,10 +107,10 +108,10 +109,10 +110,10 +111,10 +112,10 +113,10 +114,10 +115,10 +116,10 +117,10 +118,10 +119,0 +120,0 +121,0 +122,0 +123,0 +124,0 +125,0 +126,0 +127,0 +128,0 +129,0 +130,0 +131,0 +132,0 +133,0 +134,0 +135,0 +136,0 +137,0 +138,0 +139,0 +140,0 +141,0 +142,0 +143,0 +144,0 +145,0 +146,0 +147,0 +148,0 +149,0 +150,0 +151,0 +152,0 +153,0 +154,0 +155,0 +156,0 +157,0 +158,0 +159,0 +160,0 +161,0 +162,0 +163,0 +164,0 +165,0 +166,0 +167,0 +168,0 +169,0 +170,0 +171,0 +172,0 +173,0 +174,0 +175,10 +176,10 +177,10 +178,10 +179,10 +180,10 +181,10 +182,10 +183,10 +184,10 +185,10 +186,10 +187,10 +188,10 +189,10 +190,10 +191,0 +192,0 +193,0 +194,0 +195,0 +196,0 +197,0 +198,0 +199,10 +200,10 +201,10 +202,10 +203,10 +204,10 +205,10 +206,10 +207,10 +208,10 +209,10 +210,10 +211,10 +212,10 +213,10 +214,10 +215,0 +216,0 +217,0 +218,0 +219,0 +220,0 +221,0 +222,0 +223,10 +224,10 +225,10 +226,10 +227,10 +228,10 +229,10 +230,10 +231,10 +232,10 +233,10 +234,10 +235,10 +236,10 +237,10 +238,10 +239,0 +240,0 +241,0 +242,0 +243,0 +244,0 +245,0 +246,0 +247,10 +248,10 +249,10 +250,10 +251,10 +252,10 +253,10 +254,10 +255,10 +256,10 +257,10 +258,10 +259,10 +260,10 +261,10 +262,10 +263,0 +264,0 +265,0 +266,0 +267,0 +268,0 +269,0 +270,0 +271,10 +272,10 +273,10 +274,10 +275,10 +276,10 +277,10 +278,10 +279,10 +280,10 +281,10 +282,10 +283,10 +284,10 +285,10 +286,10 +287,0 +288,0 +289,0 +290,0 +291,0 +292,0 +293,0 +294,0 +295,0 +296,0 +297,0 +298,0 +299,0 +300,0 +301,0 +302,0 +303,0 +304,0 +305,0 +306,0 +307,0 +308,0 +309,0 +310,0 +311,0 +312,0 +313,0 +314,0 +315,0 +316,0 +317,0 +318,0 +319,0 +320,0 +321,0 +322,0 +323,0 +324,0 +325,0 +326,0 +327,0 +328,0 +329,0 +330,0 +331,0 +332,0 +333,0 +334,0 +335,0 +336,0 +337,0 +338,0 +339,0 +340,0 +341,0 +342,0 +343,10 +344,10 +345,10 +346,10 +347,10 +348,10 +349,10 +350,10 +351,10 +352,10 +353,10 +354,10 +355,10 +356,10 +357,10 +358,10 +359,0 +360,0 +361,0 +362,0 +363,0 +364,0 +365,0 +366,0 +367,10 +368,10 +369,10 +370,10 +371,10 +372,10 +373,10 +374,10 +375,10 +376,10 +377,10 +378,10 +379,10 +380,10 +381,10 +382,10 +383,0 +384,0 +385,0 +386,0 +387,0 +388,0 +389,0 +390,0 +391,10 +392,10 +393,10 +394,10 +395,10 +396,10 +397,10 +398,10 +399,10 +400,10 +401,10 +402,10 +403,10 +404,10 +405,10 +406,10 +407,0 +408,0 +409,0 +410,0 +411,0 +412,0 +413,0 +414,0 +415,10 +416,10 +417,10 +418,10 +419,10 +420,10 +421,10 +422,10 +423,10 +424,10 +425,10 +426,10 +427,10 +428,10 +429,10 +430,10 +431,0 +432,0 +433,0 +434,0 +435,0 +436,0 +437,0 +438,0 +439,10 +440,10 +441,10 +442,10 +443,10 +444,10 +445,10 +446,10 +447,10 +448,10 +449,10 +450,10 +451,10 +452,10 +453,10 +454,10 +455,0 +456,0 +457,0 +458,0 +459,0 +460,0 +461,0 +462,0 +463,0 +464,0 +465,0 +466,0 +467,0 +468,0 +469,0 +470,0 +471,0 +472,0 +473,0 +474,0 +475,0 +476,0 +477,0 +478,0 +479,0 +480,0 +481,0 +482,0 +483,0 +484,0 +485,0 +486,0 +487,0 +488,0 +489,0 +490,0 +491,0 +492,0 +493,0 +494,0 +495,0 +496,0 +497,0 +498,0 +499,0 +500,0 +501,0 +502,0 +503,0 +504,0 +505,0 +506,0 +507,0 +508,0 +509,0 +510,0 +511,10 +512,10 +513,10 +514,10 +515,10 +516,10 +517,10 +518,10 +519,10 +520,10 +521,10 +522,10 +523,10 +524,10 +525,10 +526,10 +527,0 +528,0 +529,0 +530,0 +531,0 +532,0 +533,0 +534,0 +535,10 +536,10 +537,10 +538,10 +539,10 +540,10 +541,10 +542,10 +543,10 +544,10 +545,10 +546,10 +547,10 +548,10 +549,10 +550,10 +551,0 +552,0 +553,0 +554,0 +555,0 +556,0 +557,0 +558,0 +559,10 +560,10 +561,10 +562,10 +563,10 +564,10 +565,10 +566,10 +567,10 +568,10 +569,10 +570,10 +571,10 +572,10 +573,10 +574,10 +575,0 +576,0 +577,0 +578,0 +579,0 +580,0 +581,0 +582,0 +583,10 +584,10 +585,10 +586,10 +587,10 +588,10 +589,10 +590,10 +591,10 +592,10 +593,10 +594,10 +595,10 +596,10 +597,10 +598,10 +599,0 +600,0 +601,0 +602,0 +603,0 +604,0 +605,0 +606,0 +607,10 +608,10 +609,10 +610,10 +611,10 +612,10 +613,10 +614,10 +615,10 +616,10 +617,10 +618,10 +619,10 +620,10 +621,10 +622,10 +623,0 +624,0 +625,0 +626,0 +627,0 +628,0 +629,0 +630,0 +631,0 +632,0 +633,0 +634,0 +635,0 +636,0 +637,0 +638,0 +639,0 +640,0 +641,0 +642,0 +643,0 +644,0 +645,0 +646,0 +647,0 +648,0 +649,0 +650,0 +651,0 +652,0 +653,0 +654,0 +655,0 +656,0 +657,0 +658,0 +659,0 +660,0 +661,0 +662,0 +663,0 +664,0 +665,0 +666,0 +667,0 +668,0 +669,0 +670,0 +671,0 +672,0 +673,0 +674,0 +675,0 +676,0 +677,0 +678,0 +679,10 +680,10 +681,10 +682,10 +683,10 +684,10 +685,10 +686,10 +687,10 +688,10 +689,10 +690,10 +691,10 +692,10 +693,10 +694,10 +695,0 +696,0 +697,0 +698,0 +699,0 +700,0 +701,0 +702,0 +703,10 +704,10 +705,10 +706,10 +707,10 +708,10 +709,10 +710,10 +711,10 +712,10 +713,10 +714,10 +715,10 +716,10 +717,10 +718,10 +719,0 +720,0 +721,0 +722,0 +723,0 +724,0 +725,0 +726,0 +727,10 +728,10 +729,10 +730,10 +731,10 +732,10 +733,10 +734,10 +735,10 +736,10 +737,10 +738,10 +739,10 +740,10 +741,10 +742,10 +743,0 +744,0 +745,0 +746,0 +747,0 +748,0 +749,0 +750,0 +751,10 +752,10 +753,10 +754,10 +755,10 +756,10 +757,10 +758,10 +759,10 +760,10 +761,10 +762,10 +763,10 +764,10 +765,10 +766,10 +767,0 +768,0 +769,0 +770,0 +771,0 +772,0 +773,0 +774,0 +775,10 +776,10 +777,10 +778,10 +779,10 +780,10 +781,10 +782,10 +783,10 +784,10 +785,10 +786,10 +787,10 +788,10 +789,10 +790,10 +791,0 +792,0 +793,0 +794,0 +795,0 +796,0 +797,0 +798,0 +799,0 +800,0 +801,0 +802,0 +803,0 +804,0 +805,0 +806,0 +807,0 +808,0 +809,0 +810,0 +811,0 +812,0 +813,0 +814,0 +815,0 +816,0 +817,0 +818,0 +819,0 +820,0 +821,0 +822,0 +823,0 +824,0 +825,0 +826,0 +827,0 +828,0 +829,0 +830,0 +831,0 +832,0 +833,0 +834,0 +835,0 +836,0 +837,0 +838,0 +839,0 +840,0 +841,0 +842,0 +843,0 +844,0 +845,0 +846,0 +847,10 +848,10 +849,10 +850,10 +851,10 +852,10 +853,10 +854,10 +855,10 +856,10 +857,10 +858,10 +859,10 +860,10 +861,10 +862,10 +863,0 +864,0 +865,0 +866,0 +867,0 +868,0 +869,0 +870,0 +871,10 +872,10 +873,10 +874,10 +875,10 +876,10 +877,10 +878,10 +879,10 +880,10 +881,10 +882,10 +883,10 +884,10 +885,10 +886,10 +887,0 +888,0 +889,0 +890,0 +891,0 +892,0 +893,0 +894,0 +895,10 +896,10 +897,10 +898,10 +899,10 +900,10 +901,10 +902,10 +903,10 +904,10 +905,10 +906,10 +907,10 +908,10 +909,10 +910,10 +911,0 +912,0 +913,0 +914,0 +915,0 +916,0 +917,0 +918,0 +919,10 +920,10 +921,10 +922,10 +923,10 +924,10 +925,10 +926,10 +927,10 +928,10 +929,10 +930,10 +931,10 +932,10 +933,10 +934,10 +935,0 +936,0 +937,0 +938,0 +939,0 +940,0 +941,0 +942,0 +943,10 +944,10 +945,10 +946,10 +947,10 +948,10 +949,10 +950,10 +951,10 +952,10 +953,10 +954,10 +955,10 +956,10 +957,10 +958,10 +959,0 +960,0 +961,0 +962,0 +963,0 +964,0 +965,0 +966,0 +967,0 +968,0 +969,0 +970,0 +971,0 +972,0 +973,0 +974,0 +975,0 +976,0 +977,0 +978,0 +979,0 +980,0 +981,0 +982,0 +983,0 +984,0 +985,0 +986,0 +987,0 +988,0 +989,0 +990,0 +991,0 +992,0 +993,0 +994,0 +995,0 +996,0 +997,0 +998,0 +999,0 +1000,0 +1001,0 +1002,0 +1003,0 +1004,0 +1005,0 +1006,0 +1007,0 +1008,0 +1009,0 +1010,0 +1011,0 +1012,0 +1013,0 +1014,0 +1015,10 +1016,10 +1017,10 +1018,10 +1019,10 +1020,10 +1021,10 +1022,10 +1023,10 +1024,10 +1025,10 +1026,10 +1027,10 +1028,10 +1029,10 +1030,10 +1031,0 +1032,0 +1033,0 +1034,0 +1035,0 +1036,0 +1037,0 +1038,0 +1039,10 +1040,10 +1041,10 +1042,10 +1043,10 +1044,10 +1045,10 +1046,10 +1047,10 +1048,10 +1049,10 +1050,10 +1051,10 +1052,10 +1053,10 +1054,10 +1055,0 +1056,0 +1057,0 +1058,0 +1059,0 +1060,0 +1061,0 +1062,0 +1063,10 +1064,10 +1065,10 +1066,10 +1067,10 +1068,10 +1069,10 +1070,10 +1071,10 +1072,10 +1073,10 +1074,10 +1075,10 +1076,10 +1077,10 +1078,10 +1079,0 +1080,0 +1081,0 +1082,0 +1083,0 +1084,0 +1085,0 +1086,0 +1087,10 +1088,10 +1089,10 +1090,10 +1091,10 +1092,10 +1093,10 +1094,10 +1095,10 +1096,10 +1097,10 +1098,10 +1099,10 +1100,10 +1101,10 +1102,10 +1103,0 +1104,0 +1105,0 +1106,0 +1107,0 +1108,0 +1109,0 +1110,0 +1111,10 +1112,10 +1113,10 +1114,10 +1115,10 +1116,10 +1117,10 +1118,10 +1119,10 +1120,10 +1121,10 +1122,10 +1123,10 +1124,10 +1125,10 +1126,10 +1127,0 +1128,0 +1129,0 +1130,0 +1131,0 +1132,0 +1133,0 +1134,0 +1135,0 +1136,0 +1137,0 +1138,0 +1139,0 +1140,0 +1141,0 +1142,0 +1143,0 +1144,0 +1145,0 +1146,0 +1147,0 +1148,0 +1149,0 +1150,0 +1151,0 +1152,0 +1153,0 +1154,0 +1155,0 +1156,0 +1157,0 +1158,0 +1159,0 +1160,0 +1161,0 +1162,0 +1163,0 +1164,0 +1165,0 +1166,0 +1167,0 +1168,0 +1169,0 +1170,0 +1171,0 +1172,0 +1173,0 +1174,0 +1175,0 +1176,0 +1177,0 +1178,0 +1179,0 +1180,0 +1181,0 +1182,0 +1183,10 +1184,10 +1185,10 +1186,10 +1187,10 +1188,10 +1189,10 +1190,10 +1191,10 +1192,10 +1193,10 +1194,10 +1195,10 +1196,10 +1197,10 +1198,10 +1199,0 +1200,0 +1201,0 +1202,0 +1203,0 +1204,0 +1205,0 +1206,0 +1207,10 +1208,10 +1209,10 +1210,10 +1211,10 +1212,10 +1213,10 +1214,10 +1215,10 +1216,10 +1217,10 +1218,10 +1219,10 +1220,10 +1221,10 +1222,10 +1223,0 +1224,0 +1225,0 +1226,0 +1227,0 +1228,0 +1229,0 +1230,0 +1231,10 +1232,10 +1233,10 +1234,10 +1235,10 +1236,10 +1237,10 +1238,10 +1239,10 +1240,10 +1241,10 +1242,10 +1243,10 +1244,10 +1245,10 +1246,10 +1247,0 +1248,0 +1249,0 +1250,0 +1251,0 +1252,0 +1253,0 +1254,0 +1255,10 +1256,10 +1257,10 +1258,10 +1259,10 +1260,10 +1261,10 +1262,10 +1263,10 +1264,10 +1265,10 +1266,10 +1267,10 +1268,10 +1269,10 +1270,10 +1271,0 +1272,0 +1273,0 +1274,0 +1275,0 +1276,0 +1277,0 +1278,0 +1279,10 +1280,10 +1281,10 +1282,10 +1283,10 +1284,10 +1285,10 +1286,10 +1287,10 +1288,10 +1289,10 +1290,10 +1291,10 +1292,10 +1293,10 +1294,10 +1295,0 +1296,0 +1297,0 +1298,0 +1299,0 +1300,0 +1301,0 +1302,0 +1303,0 +1304,0 +1305,0 +1306,0 +1307,0 +1308,0 +1309,0 +1310,0 +1311,0 +1312,0 +1313,0 +1314,0 +1315,0 +1316,0 +1317,0 +1318,0 +1319,0 +1320,0 +1321,0 +1322,0 +1323,0 +1324,0 +1325,0 +1326,0 +1327,0 +1328,0 +1329,0 +1330,0 +1331,0 +1332,0 +1333,0 +1334,0 +1335,0 +1336,0 +1337,0 +1338,0 +1339,0 +1340,0 +1341,0 +1342,0 +1343,0 +1344,0 +1345,0 +1346,0 +1347,0 +1348,0 +1349,0 +1350,0 +1351,10 +1352,10 +1353,10 +1354,10 +1355,10 +1356,10 +1357,10 +1358,10 +1359,10 +1360,10 +1361,10 +1362,10 +1363,10 +1364,10 +1365,10 +1366,10 +1367,0 +1368,0 +1369,0 +1370,0 +1371,0 +1372,0 +1373,0 +1374,0 +1375,10 +1376,10 +1377,10 +1378,10 +1379,10 +1380,10 +1381,10 +1382,10 +1383,10 +1384,10 +1385,10 +1386,10 +1387,10 +1388,10 +1389,10 +1390,10 +1391,0 +1392,0 +1393,0 +1394,0 +1395,0 +1396,0 +1397,0 +1398,0 +1399,10 +1400,10 +1401,10 +1402,10 +1403,10 +1404,10 +1405,10 +1406,10 +1407,10 +1408,10 +1409,10 +1410,10 +1411,10 +1412,10 +1413,10 +1414,10 +1415,0 +1416,0 +1417,0 +1418,0 +1419,0 +1420,0 +1421,0 +1422,0 +1423,10 +1424,10 +1425,10 +1426,10 +1427,10 +1428,10 +1429,10 +1430,10 +1431,10 +1432,10 +1433,10 +1434,10 +1435,10 +1436,10 +1437,10 +1438,10 +1439,0 +1440,0 +1441,0 +1442,0 +1443,0 +1444,0 +1445,0 +1446,0 +1447,10 +1448,10 +1449,10 +1450,10 +1451,10 +1452,10 +1453,10 +1454,10 +1455,10 +1456,10 +1457,10 +1458,10 +1459,10 +1460,10 +1461,10 +1462,10 +1463,0 +1464,0 +1465,0 +1466,0 +1467,0 +1468,0 +1469,0 +1470,0 +1471,0 +1472,0 +1473,0 +1474,0 +1475,0 +1476,0 +1477,0 +1478,0 +1479,0 +1480,0 +1481,0 +1482,0 +1483,0 +1484,0 +1485,0 +1486,0 +1487,0 +1488,0 +1489,0 +1490,0 +1491,0 +1492,0 +1493,0 +1494,0 +1495,0 +1496,0 +1497,0 +1498,0 +1499,0 +1500,0 +1501,0 +1502,0 +1503,0 +1504,0 +1505,0 +1506,0 +1507,0 +1508,0 +1509,0 +1510,0 +1511,0 +1512,0 +1513,0 +1514,0 +1515,0 +1516,0 +1517,0 +1518,0 +1519,10 +1520,10 +1521,10 +1522,10 +1523,10 +1524,10 +1525,10 +1526,10 +1527,10 +1528,10 +1529,10 +1530,10 +1531,10 +1532,10 +1533,10 +1534,10 +1535,0 +1536,0 +1537,0 +1538,0 +1539,0 +1540,0 +1541,0 +1542,0 +1543,10 +1544,10 +1545,10 +1546,10 +1547,10 +1548,10 +1549,10 +1550,10 +1551,10 +1552,10 +1553,10 +1554,10 +1555,10 +1556,10 +1557,10 +1558,10 +1559,0 +1560,0 +1561,0 +1562,0 +1563,0 +1564,0 +1565,0 +1566,0 +1567,10 +1568,10 +1569,10 +1570,10 +1571,10 +1572,10 +1573,10 +1574,10 +1575,10 +1576,10 +1577,10 +1578,10 +1579,10 +1580,10 +1581,10 +1582,10 +1583,0 +1584,0 +1585,0 +1586,0 +1587,0 +1588,0 +1589,0 +1590,0 +1591,10 +1592,10 +1593,10 +1594,10 +1595,10 +1596,10 +1597,10 +1598,10 +1599,10 +1600,10 +1601,10 +1602,10 +1603,10 +1604,10 +1605,10 +1606,10 +1607,0 +1608,0 +1609,0 +1610,0 +1611,0 +1612,0 +1613,0 +1614,0 +1615,10 +1616,10 +1617,10 +1618,10 +1619,10 +1620,10 +1621,10 +1622,10 +1623,10 +1624,10 +1625,10 +1626,10 +1627,10 +1628,10 +1629,10 +1630,10 +1631,0 +1632,0 +1633,0 +1634,0 +1635,0 +1636,0 +1637,0 +1638,0 +1639,0 +1640,0 +1641,0 +1642,0 +1643,0 +1644,0 +1645,0 +1646,0 +1647,0 +1648,0 +1649,0 +1650,0 +1651,0 +1652,0 +1653,0 +1654,0 +1655,0 +1656,0 +1657,0 +1658,0 +1659,0 +1660,0 +1661,0 +1662,0 +1663,0 +1664,0 +1665,0 +1666,0 +1667,0 +1668,0 +1669,0 +1670,0 +1671,0 +1672,0 +1673,0 +1674,0 +1675,0 +1676,0 +1677,0 +1678,0 +1679,0 +1680,0 +1681,0 +1682,0 +1683,0 +1684,0 +1685,0 +1686,0 +1687,10 +1688,10 +1689,10 +1690,10 +1691,10 +1692,10 +1693,10 +1694,10 +1695,10 +1696,10 +1697,10 +1698,10 +1699,10 +1700,10 +1701,10 +1702,10 +1703,0 +1704,0 +1705,0 +1706,0 +1707,0 +1708,0 +1709,0 +1710,0 +1711,10 +1712,10 +1713,10 +1714,10 +1715,10 +1716,10 +1717,10 +1718,10 +1719,10 +1720,10 +1721,10 +1722,10 +1723,10 +1724,10 +1725,10 +1726,10 +1727,0 +1728,0 +1729,0 +1730,0 +1731,0 +1732,0 +1733,0 +1734,0 +1735,10 +1736,10 +1737,10 +1738,10 +1739,10 +1740,10 +1741,10 +1742,10 +1743,10 +1744,10 +1745,10 +1746,10 +1747,10 +1748,10 +1749,10 +1750,10 +1751,0 +1752,0 +1753,0 +1754,0 +1755,0 +1756,0 +1757,0 +1758,0 +1759,10 +1760,10 +1761,10 +1762,10 +1763,10 +1764,10 +1765,10 +1766,10 +1767,10 +1768,10 +1769,10 +1770,10 +1771,10 +1772,10 +1773,10 +1774,10 +1775,0 +1776,0 +1777,0 +1778,0 +1779,0 +1780,0 +1781,0 +1782,0 +1783,10 +1784,10 +1785,10 +1786,10 +1787,10 +1788,10 +1789,10 +1790,10 +1791,10 +1792,10 +1793,10 +1794,10 +1795,10 +1796,10 +1797,10 +1798,10 +1799,0 +1800,0 +1801,0 +1802,0 +1803,0 +1804,0 +1805,0 +1806,0 +1807,0 +1808,0 +1809,0 +1810,0 +1811,0 +1812,0 +1813,0 +1814,0 +1815,0 +1816,0 +1817,0 +1818,0 +1819,0 +1820,0 +1821,0 +1822,0 +1823,0 +1824,0 +1825,0 +1826,0 +1827,0 +1828,0 +1829,0 +1830,0 +1831,0 +1832,0 +1833,0 +1834,0 +1835,0 +1836,0 +1837,0 +1838,0 +1839,0 +1840,0 +1841,0 +1842,0 +1843,0 +1844,0 +1845,0 +1846,0 +1847,0 +1848,0 +1849,0 +1850,0 +1851,0 +1852,0 +1853,0 +1854,0 +1855,10 +1856,10 +1857,10 +1858,10 +1859,10 +1860,10 +1861,10 +1862,10 +1863,10 +1864,10 +1865,10 +1866,10 +1867,10 +1868,10 +1869,10 +1870,10 +1871,0 +1872,0 +1873,0 +1874,0 +1875,0 +1876,0 +1877,0 +1878,0 +1879,10 +1880,10 +1881,10 +1882,10 +1883,10 +1884,10 +1885,10 +1886,10 +1887,10 +1888,10 +1889,10 +1890,10 +1891,10 +1892,10 +1893,10 +1894,10 +1895,0 +1896,0 +1897,0 +1898,0 +1899,0 +1900,0 +1901,0 +1902,0 +1903,10 +1904,10 +1905,10 +1906,10 +1907,10 +1908,10 +1909,10 +1910,10 +1911,10 +1912,10 +1913,10 +1914,10 +1915,10 +1916,10 +1917,10 +1918,10 +1919,0 +1920,0 +1921,0 +1922,0 +1923,0 +1924,0 +1925,0 +1926,0 +1927,10 +1928,10 +1929,10 +1930,10 +1931,10 +1932,10 +1933,10 +1934,10 +1935,10 +1936,10 +1937,10 +1938,10 +1939,10 +1940,10 +1941,10 +1942,10 +1943,0 +1944,0 +1945,0 +1946,0 +1947,0 +1948,0 +1949,0 +1950,0 +1951,10 +1952,10 +1953,10 +1954,10 +1955,10 +1956,10 +1957,10 +1958,10 +1959,10 +1960,10 +1961,10 +1962,10 +1963,10 +1964,10 +1965,10 +1966,10 +1967,0 +1968,0 +1969,0 +1970,0 +1971,0 +1972,0 +1973,0 +1974,0 +1975,0 +1976,0 +1977,0 +1978,0 +1979,0 +1980,0 +1981,0 +1982,0 +1983,0 +1984,0 +1985,0 +1986,0 +1987,0 +1988,0 +1989,0 +1990,0 +1991,0 +1992,0 +1993,0 +1994,0 +1995,0 +1996,0 +1997,0 +1998,0 +1999,0 +2000,0 +2001,0 +2002,0 +2003,0 +2004,0 +2005,0 +2006,0 +2007,0 +2008,0 +2009,0 +2010,0 +2011,0 +2012,0 +2013,0 +2014,0 +2015,0 +2016,0 +2017,0 +2018,0 +2019,0 +2020,0 +2021,0 +2022,0 +2023,10 +2024,10 +2025,10 +2026,10 +2027,10 +2028,10 +2029,10 +2030,10 +2031,10 +2032,10 +2033,10 +2034,10 +2035,10 +2036,10 +2037,10 +2038,10 +2039,0 +2040,0 +2041,0 +2042,0 +2043,0 +2044,0 +2045,0 +2046,0 +2047,10 +2048,10 +2049,10 +2050,10 +2051,10 +2052,10 +2053,10 +2054,10 +2055,10 +2056,10 +2057,10 +2058,10 +2059,10 +2060,10 +2061,10 +2062,10 +2063,0 +2064,0 +2065,0 +2066,0 +2067,0 +2068,0 +2069,0 +2070,0 +2071,10 +2072,10 +2073,10 +2074,10 +2075,10 +2076,10 +2077,10 +2078,10 +2079,10 +2080,10 +2081,10 +2082,10 +2083,10 +2084,10 +2085,10 +2086,10 +2087,0 +2088,0 +2089,0 +2090,0 +2091,0 +2092,0 +2093,0 +2094,0 +2095,10 +2096,10 +2097,10 +2098,10 +2099,10 +2100,10 +2101,10 +2102,10 +2103,10 +2104,10 +2105,10 +2106,10 +2107,10 +2108,10 +2109,10 +2110,10 +2111,0 +2112,0 +2113,0 +2114,0 +2115,0 +2116,0 +2117,0 +2118,0 +2119,10 +2120,10 +2121,10 +2122,10 +2123,10 +2124,10 +2125,10 +2126,10 +2127,10 +2128,10 +2129,10 +2130,10 +2131,10 +2132,10 +2133,10 +2134,10 +2135,0 +2136,0 +2137,0 +2138,0 +2139,0 +2140,0 +2141,0 +2142,0 +2143,0 +2144,0 +2145,0 +2146,0 +2147,0 +2148,0 +2149,0 +2150,0 +2151,0 +2152,0 +2153,0 +2154,0 +2155,0 +2156,0 +2157,0 +2158,0 +2159,0 +2160,0 +2161,0 +2162,0 +2163,0 +2164,0 +2165,0 +2166,0 +2167,0 +2168,0 +2169,0 +2170,0 +2171,0 +2172,0 +2173,0 +2174,0 +2175,0 +2176,0 +2177,0 +2178,0 +2179,0 +2180,0 +2181,0 +2182,0 +2183,0 +2184,0 +2185,0 +2186,0 +2187,0 +2188,0 +2189,0 +2190,0 +2191,10 +2192,10 +2193,10 +2194,10 +2195,10 +2196,10 +2197,10 +2198,10 +2199,10 +2200,10 +2201,10 +2202,10 +2203,10 +2204,10 +2205,10 +2206,10 +2207,0 +2208,0 +2209,0 +2210,0 +2211,0 +2212,0 +2213,0 +2214,0 +2215,10 +2216,10 +2217,10 +2218,10 +2219,10 +2220,10 +2221,10 +2222,10 +2223,10 +2224,10 +2225,10 +2226,10 +2227,10 +2228,10 +2229,10 +2230,10 +2231,0 +2232,0 +2233,0 +2234,0 +2235,0 +2236,0 +2237,0 +2238,0 +2239,10 +2240,10 +2241,10 +2242,10 +2243,10 +2244,10 +2245,10 +2246,10 +2247,10 +2248,10 +2249,10 +2250,10 +2251,10 +2252,10 +2253,10 +2254,10 +2255,0 +2256,0 +2257,0 +2258,0 +2259,0 +2260,0 +2261,0 +2262,0 +2263,10 +2264,10 +2265,10 +2266,10 +2267,10 +2268,10 +2269,10 +2270,10 +2271,10 +2272,10 +2273,10 +2274,10 +2275,10 +2276,10 +2277,10 +2278,10 +2279,0 +2280,0 +2281,0 +2282,0 +2283,0 +2284,0 +2285,0 +2286,0 +2287,10 +2288,10 +2289,10 +2290,10 +2291,10 +2292,10 +2293,10 +2294,10 +2295,10 +2296,10 +2297,10 +2298,10 +2299,10 +2300,10 +2301,10 +2302,10 +2303,0 +2304,0 +2305,0 +2306,0 +2307,0 +2308,0 +2309,0 +2310,0 +2311,0 +2312,0 +2313,0 +2314,0 +2315,0 +2316,0 +2317,0 +2318,0 +2319,0 +2320,0 +2321,0 +2322,0 +2323,0 +2324,0 +2325,0 +2326,0 +2327,0 +2328,0 +2329,0 +2330,0 +2331,0 +2332,0 +2333,0 +2334,0 +2335,0 +2336,0 +2337,0 +2338,0 +2339,0 +2340,0 +2341,0 +2342,0 +2343,0 +2344,0 +2345,0 +2346,0 +2347,0 +2348,0 +2349,0 +2350,0 +2351,0 +2352,0 +2353,0 +2354,0 +2355,0 +2356,0 +2357,0 +2358,0 +2359,10 +2360,10 +2361,10 +2362,10 +2363,10 +2364,10 +2365,10 +2366,10 +2367,10 +2368,10 +2369,10 +2370,10 +2371,10 +2372,10 +2373,10 +2374,10 +2375,0 +2376,0 +2377,0 +2378,0 +2379,0 +2380,0 +2381,0 +2382,0 +2383,10 +2384,10 +2385,10 +2386,10 +2387,10 +2388,10 +2389,10 +2390,10 +2391,10 +2392,10 +2393,10 +2394,10 +2395,10 +2396,10 +2397,10 +2398,10 +2399,0 +2400,0 +2401,0 +2402,0 +2403,0 +2404,0 +2405,0 +2406,0 +2407,10 +2408,10 +2409,10 +2410,10 +2411,10 +2412,10 +2413,10 +2414,10 +2415,10 +2416,10 +2417,10 +2418,10 +2419,10 +2420,10 +2421,10 +2422,10 +2423,0 +2424,0 +2425,0 +2426,0 +2427,0 +2428,0 +2429,0 +2430,0 +2431,10 +2432,10 +2433,10 +2434,10 +2435,10 +2436,10 +2437,10 +2438,10 +2439,10 +2440,10 +2441,10 +2442,10 +2443,10 +2444,10 +2445,10 +2446,10 +2447,0 +2448,0 +2449,0 +2450,0 +2451,0 +2452,0 +2453,0 +2454,0 +2455,10 +2456,10 +2457,10 +2458,10 +2459,10 +2460,10 +2461,10 +2462,10 +2463,10 +2464,10 +2465,10 +2466,10 +2467,10 +2468,10 +2469,10 +2470,10 +2471,0 +2472,0 +2473,0 +2474,0 +2475,0 +2476,0 +2477,0 +2478,0 +2479,0 +2480,0 +2481,0 +2482,0 +2483,0 +2484,0 +2485,0 +2486,0 +2487,0 +2488,0 +2489,0 +2490,0 +2491,0 +2492,0 +2493,0 +2494,0 +2495,0 +2496,0 +2497,0 +2498,0 +2499,0 +2500,0 +2501,0 +2502,0 +2503,0 +2504,0 +2505,0 +2506,0 +2507,0 +2508,0 +2509,0 +2510,0 +2511,0 +2512,0 +2513,0 +2514,0 +2515,0 +2516,0 +2517,0 +2518,0 +2519,0 +2520,0 +2521,0 +2522,0 +2523,0 +2524,0 +2525,0 +2526,0 +2527,10 +2528,10 +2529,10 +2530,10 +2531,10 +2532,10 +2533,10 +2534,10 +2535,10 +2536,10 +2537,10 +2538,10 +2539,10 +2540,10 +2541,10 +2542,10 +2543,0 +2544,0 +2545,0 +2546,0 +2547,0 +2548,0 +2549,0 +2550,0 +2551,10 +2552,10 +2553,10 +2554,10 +2555,10 +2556,10 +2557,10 +2558,10 +2559,10 +2560,10 +2561,10 +2562,10 +2563,10 +2564,10 +2565,10 +2566,10 +2567,0 +2568,0 +2569,0 +2570,0 +2571,0 +2572,0 +2573,0 +2574,0 +2575,10 +2576,10 +2577,10 +2578,10 +2579,10 +2580,10 +2581,10 +2582,10 +2583,10 +2584,10 +2585,10 +2586,10 +2587,10 +2588,10 +2589,10 +2590,10 +2591,0 +2592,0 +2593,0 +2594,0 +2595,0 +2596,0 +2597,0 +2598,0 +2599,10 +2600,10 +2601,10 +2602,10 +2603,10 +2604,10 +2605,10 +2606,10 +2607,10 +2608,10 +2609,10 +2610,10 +2611,10 +2612,10 +2613,10 +2614,10 +2615,0 +2616,0 +2617,0 +2618,0 +2619,0 +2620,0 +2621,0 +2622,0 +2623,10 +2624,10 +2625,10 +2626,10 +2627,10 +2628,10 +2629,10 +2630,10 +2631,10 +2632,10 +2633,10 +2634,10 +2635,10 +2636,10 +2637,10 +2638,10 +2639,0 +2640,0 +2641,0 +2642,0 +2643,0 +2644,0 +2645,0 +2646,0 +2647,0 +2648,0 +2649,0 +2650,0 +2651,0 +2652,0 +2653,0 +2654,0 +2655,0 +2656,0 +2657,0 +2658,0 +2659,0 +2660,0 +2661,0 +2662,0 +2663,0 +2664,0 +2665,0 +2666,0 +2667,0 +2668,0 +2669,0 +2670,0 +2671,0 +2672,0 +2673,0 +2674,0 +2675,0 +2676,0 +2677,0 +2678,0 +2679,0 +2680,0 +2681,0 +2682,0 +2683,0 +2684,0 +2685,0 +2686,0 +2687,0 +2688,0 +2689,0 +2690,0 +2691,0 +2692,0 +2693,0 +2694,0 +2695,10 +2696,10 +2697,10 +2698,10 +2699,10 +2700,10 +2701,10 +2702,10 +2703,10 +2704,10 +2705,10 +2706,10 +2707,10 +2708,10 +2709,10 +2710,10 +2711,0 +2712,0 +2713,0 +2714,0 +2715,0 +2716,0 +2717,0 +2718,0 +2719,10 +2720,10 +2721,10 +2722,10 +2723,10 +2724,10 +2725,10 +2726,10 +2727,10 +2728,10 +2729,10 +2730,10 +2731,10 +2732,10 +2733,10 +2734,10 +2735,0 +2736,0 +2737,0 +2738,0 +2739,0 +2740,0 +2741,0 +2742,0 +2743,10 +2744,10 +2745,10 +2746,10 +2747,10 +2748,10 +2749,10 +2750,10 +2751,10 +2752,10 +2753,10 +2754,10 +2755,10 +2756,10 +2757,10 +2758,10 +2759,0 +2760,0 +2761,0 +2762,0 +2763,0 +2764,0 +2765,0 +2766,0 +2767,10 +2768,10 +2769,10 +2770,10 +2771,10 +2772,10 +2773,10 +2774,10 +2775,10 +2776,10 +2777,10 +2778,10 +2779,10 +2780,10 +2781,10 +2782,10 +2783,0 +2784,0 +2785,0 +2786,0 +2787,0 +2788,0 +2789,0 +2790,0 +2791,10 +2792,10 +2793,10 +2794,10 +2795,10 +2796,10 +2797,10 +2798,10 +2799,10 +2800,10 +2801,10 +2802,10 +2803,10 +2804,10 +2805,10 +2806,10 +2807,0 +2808,0 +2809,0 +2810,0 +2811,0 +2812,0 +2813,0 +2814,0 +2815,0 +2816,0 +2817,0 +2818,0 +2819,0 +2820,0 +2821,0 +2822,0 +2823,0 +2824,0 +2825,0 +2826,0 +2827,0 +2828,0 +2829,0 +2830,0 +2831,0 +2832,0 +2833,0 +2834,0 +2835,0 +2836,0 +2837,0 +2838,0 +2839,0 +2840,0 +2841,0 +2842,0 +2843,0 +2844,0 +2845,0 +2846,0 +2847,0 +2848,0 +2849,0 +2850,0 +2851,0 +2852,0 +2853,0 +2854,0 +2855,0 +2856,0 +2857,0 +2858,0 +2859,0 +2860,0 +2861,0 +2862,0 +2863,10 +2864,10 +2865,10 +2866,10 +2867,10 +2868,10 +2869,10 +2870,10 +2871,10 +2872,10 +2873,10 +2874,10 +2875,10 +2876,10 +2877,10 +2878,10 +2879,0 +2880,0 +2881,0 +2882,0 +2883,0 +2884,0 +2885,0 +2886,0 +2887,10 +2888,10 +2889,10 +2890,10 +2891,10 +2892,10 +2893,10 +2894,10 +2895,10 +2896,10 +2897,10 +2898,10 +2899,10 +2900,10 +2901,10 +2902,10 +2903,0 +2904,0 +2905,0 +2906,0 +2907,0 +2908,0 +2909,0 +2910,0 +2911,10 +2912,10 +2913,10 +2914,10 +2915,10 +2916,10 +2917,10 +2918,10 +2919,10 +2920,10 +2921,10 +2922,10 +2923,10 +2924,10 +2925,10 +2926,10 +2927,0 +2928,0 +2929,0 +2930,0 +2931,0 +2932,0 +2933,0 +2934,0 +2935,10 +2936,10 +2937,10 +2938,10 +2939,10 +2940,10 +2941,10 +2942,10 +2943,10 +2944,10 +2945,10 +2946,10 +2947,10 +2948,10 +2949,10 +2950,10 +2951,0 +2952,0 +2953,0 +2954,0 +2955,0 +2956,0 +2957,0 +2958,0 +2959,10 +2960,10 +2961,10 +2962,10 +2963,10 +2964,10 +2965,10 +2966,10 +2967,10 +2968,10 +2969,10 +2970,10 +2971,10 +2972,10 +2973,10 +2974,10 +2975,0 +2976,0 +2977,0 +2978,0 +2979,0 +2980,0 +2981,0 +2982,0 +2983,0 +2984,0 +2985,0 +2986,0 +2987,0 +2988,0 +2989,0 +2990,0 +2991,0 +2992,0 +2993,0 +2994,0 +2995,0 +2996,0 +2997,0 +2998,0 +2999,0 +3000,0 +3001,0 +3002,0 +3003,0 +3004,0 +3005,0 +3006,0 +3007,0 +3008,0 +3009,0 +3010,0 +3011,0 +3012,0 +3013,0 +3014,0 +3015,0 +3016,0 +3017,0 +3018,0 +3019,0 +3020,0 +3021,0 +3022,0 +3023,0 +3024,0 +3025,0 +3026,0 +3027,0 +3028,0 +3029,0 +3030,0 +3031,10 +3032,10 +3033,10 +3034,10 +3035,10 +3036,10 +3037,10 +3038,10 +3039,10 +3040,10 +3041,10 +3042,10 +3043,10 +3044,10 +3045,10 +3046,10 +3047,0 +3048,0 +3049,0 +3050,0 +3051,0 +3052,0 +3053,0 +3054,0 +3055,10 +3056,10 +3057,10 +3058,10 +3059,10 +3060,10 +3061,10 +3062,10 +3063,10 +3064,10 +3065,10 +3066,10 +3067,10 +3068,10 +3069,10 +3070,10 +3071,0 +3072,0 +3073,0 +3074,0 +3075,0 +3076,0 +3077,0 +3078,0 +3079,10 +3080,10 +3081,10 +3082,10 +3083,10 +3084,10 +3085,10 +3086,10 +3087,10 +3088,10 +3089,10 +3090,10 +3091,10 +3092,10 +3093,10 +3094,10 +3095,0 +3096,0 +3097,0 +3098,0 +3099,0 +3100,0 +3101,0 +3102,0 +3103,10 +3104,10 +3105,10 +3106,10 +3107,10 +3108,10 +3109,10 +3110,10 +3111,10 +3112,10 +3113,10 +3114,10 +3115,10 +3116,10 +3117,10 +3118,10 +3119,0 +3120,0 +3121,0 +3122,0 +3123,0 +3124,0 +3125,0 +3126,0 +3127,10 +3128,10 +3129,10 +3130,10 +3131,10 +3132,10 +3133,10 +3134,10 +3135,10 +3136,10 +3137,10 +3138,10 +3139,10 +3140,10 +3141,10 +3142,10 +3143,0 +3144,0 +3145,0 +3146,0 +3147,0 +3148,0 +3149,0 +3150,0 +3151,0 +3152,0 +3153,0 +3154,0 +3155,0 +3156,0 +3157,0 +3158,0 +3159,0 +3160,0 +3161,0 +3162,0 +3163,0 +3164,0 +3165,0 +3166,0 +3167,0 +3168,0 +3169,0 +3170,0 +3171,0 +3172,0 +3173,0 +3174,0 +3175,0 +3176,0 +3177,0 +3178,0 +3179,0 +3180,0 +3181,0 +3182,0 +3183,0 +3184,0 +3185,0 +3186,0 +3187,0 +3188,0 +3189,0 +3190,0 +3191,0 +3192,0 +3193,0 +3194,0 +3195,0 +3196,0 +3197,0 +3198,0 +3199,10 +3200,10 +3201,10 +3202,10 +3203,10 +3204,10 +3205,10 +3206,10 +3207,10 +3208,10 +3209,10 +3210,10 +3211,10 +3212,10 +3213,10 +3214,10 +3215,0 +3216,0 +3217,0 +3218,0 +3219,0 +3220,0 +3221,0 +3222,0 +3223,10 +3224,10 +3225,10 +3226,10 +3227,10 +3228,10 +3229,10 +3230,10 +3231,10 +3232,10 +3233,10 +3234,10 +3235,10 +3236,10 +3237,10 +3238,10 +3239,0 +3240,0 +3241,0 +3242,0 +3243,0 +3244,0 +3245,0 +3246,0 +3247,10 +3248,10 +3249,10 +3250,10 +3251,10 +3252,10 +3253,10 +3254,10 +3255,10 +3256,10 +3257,10 +3258,10 +3259,10 +3260,10 +3261,10 +3262,10 +3263,0 +3264,0 +3265,0 +3266,0 +3267,0 +3268,0 +3269,0 +3270,0 +3271,10 +3272,10 +3273,10 +3274,10 +3275,10 +3276,10 +3277,10 +3278,10 +3279,10 +3280,10 +3281,10 +3282,10 +3283,10 +3284,10 +3285,10 +3286,10 +3287,0 +3288,0 +3289,0 +3290,0 +3291,0 +3292,0 +3293,0 +3294,0 +3295,10 +3296,10 +3297,10 +3298,10 +3299,10 +3300,10 +3301,10 +3302,10 +3303,10 +3304,10 +3305,10 +3306,10 +3307,10 +3308,10 +3309,10 +3310,10 +3311,0 +3312,0 +3313,0 +3314,0 +3315,0 +3316,0 +3317,0 +3318,0 +3319,0 +3320,0 +3321,0 +3322,0 +3323,0 +3324,0 +3325,0 +3326,0 +3327,0 +3328,0 +3329,0 +3330,0 +3331,0 +3332,0 +3333,0 +3334,0 +3335,0 +3336,0 +3337,0 +3338,0 +3339,0 +3340,0 +3341,0 +3342,0 +3343,0 +3344,0 +3345,0 +3346,0 +3347,0 +3348,0 +3349,0 +3350,0 +3351,0 +3352,0 +3353,0 +3354,0 +3355,0 +3356,0 +3357,0 +3358,0 +3359,0 +3360,0 +3361,0 +3362,0 +3363,0 +3364,0 +3365,0 +3366,0 +3367,10 +3368,10 +3369,10 +3370,10 +3371,10 +3372,10 +3373,10 +3374,10 +3375,10 +3376,10 +3377,10 +3378,10 +3379,10 +3380,10 +3381,10 +3382,10 +3383,0 +3384,0 +3385,0 +3386,0 +3387,0 +3388,0 +3389,0 +3390,0 +3391,10 +3392,10 +3393,10 +3394,10 +3395,10 +3396,10 +3397,10 +3398,10 +3399,10 +3400,10 +3401,10 +3402,10 +3403,10 +3404,10 +3405,10 +3406,10 +3407,0 +3408,0 +3409,0 +3410,0 +3411,0 +3412,0 +3413,0 +3414,0 +3415,10 +3416,10 +3417,10 +3418,10 +3419,10 +3420,10 +3421,10 +3422,10 +3423,10 +3424,10 +3425,10 +3426,10 +3427,10 +3428,10 +3429,10 +3430,10 +3431,0 +3432,0 +3433,0 +3434,0 +3435,0 +3436,0 +3437,0 +3438,0 +3439,10 +3440,10 +3441,10 +3442,10 +3443,10 +3444,10 +3445,10 +3446,10 +3447,10 +3448,10 +3449,10 +3450,10 +3451,10 +3452,10 +3453,10 +3454,10 +3455,0 +3456,0 +3457,0 +3458,0 +3459,0 +3460,0 +3461,0 +3462,0 +3463,10 +3464,10 +3465,10 +3466,10 +3467,10 +3468,10 +3469,10 +3470,10 +3471,10 +3472,10 +3473,10 +3474,10 +3475,10 +3476,10 +3477,10 +3478,10 +3479,0 +3480,0 +3481,0 +3482,0 +3483,0 +3484,0 +3485,0 +3486,0 +3487,0 +3488,0 +3489,0 +3490,0 +3491,0 +3492,0 +3493,0 +3494,0 +3495,0 +3496,0 +3497,0 +3498,0 +3499,0 +3500,0 +3501,0 +3502,0 +3503,0 +3504,0 +3505,0 +3506,0 +3507,0 +3508,0 +3509,0 +3510,0 +3511,0 +3512,0 +3513,0 +3514,0 +3515,0 +3516,0 +3517,0 +3518,0 +3519,0 +3520,0 +3521,0 +3522,0 +3523,0 +3524,0 +3525,0 +3526,0 +3527,0 +3528,0 +3529,0 +3530,0 +3531,0 +3532,0 +3533,0 +3534,0 +3535,10 +3536,10 +3537,10 +3538,10 +3539,10 +3540,10 +3541,10 +3542,10 +3543,10 +3544,10 +3545,10 +3546,10 +3547,10 +3548,10 +3549,10 +3550,10 +3551,0 +3552,0 +3553,0 +3554,0 +3555,0 +3556,0 +3557,0 +3558,0 +3559,10 +3560,10 +3561,10 +3562,10 +3563,10 +3564,10 +3565,10 +3566,10 +3567,10 +3568,10 +3569,10 +3570,10 +3571,10 +3572,10 +3573,10 +3574,10 +3575,0 +3576,0 +3577,0 +3578,0 +3579,0 +3580,0 +3581,0 +3582,0 +3583,10 +3584,10 +3585,10 +3586,10 +3587,10 +3588,10 +3589,10 +3590,10 +3591,10 +3592,10 +3593,10 +3594,10 +3595,10 +3596,10 +3597,10 +3598,10 +3599,0 +3600,0 +3601,0 +3602,0 +3603,0 +3604,0 +3605,0 +3606,0 +3607,10 +3608,10 +3609,10 +3610,10 +3611,10 +3612,10 +3613,10 +3614,10 +3615,10 +3616,10 +3617,10 +3618,10 +3619,10 +3620,10 +3621,10 +3622,10 +3623,0 +3624,0 +3625,0 +3626,0 +3627,0 +3628,0 +3629,0 +3630,0 +3631,10 +3632,10 +3633,10 +3634,10 +3635,10 +3636,10 +3637,10 +3638,10 +3639,10 +3640,10 +3641,10 +3642,10 +3643,10 +3644,10 +3645,10 +3646,10 +3647,0 +3648,0 +3649,0 +3650,0 +3651,0 +3652,0 +3653,0 +3654,0 +3655,0 +3656,0 +3657,0 +3658,0 +3659,0 +3660,0 +3661,0 +3662,0 +3663,0 +3664,0 +3665,0 +3666,0 +3667,0 +3668,0 +3669,0 +3670,0 +3671,0 +3672,0 +3673,0 +3674,0 +3675,0 +3676,0 +3677,0 +3678,0 +3679,0 +3680,0 +3681,0 +3682,0 +3683,0 +3684,0 +3685,0 +3686,0 +3687,0 +3688,0 +3689,0 +3690,0 +3691,0 +3692,0 +3693,0 +3694,0 +3695,0 +3696,0 +3697,0 +3698,0 +3699,0 +3700,0 +3701,0 +3702,0 +3703,10 +3704,10 +3705,10 +3706,10 +3707,10 +3708,10 +3709,10 +3710,10 +3711,10 +3712,10 +3713,10 +3714,10 +3715,10 +3716,10 +3717,10 +3718,10 +3719,0 +3720,0 +3721,0 +3722,0 +3723,0 +3724,0 +3725,0 +3726,0 +3727,10 +3728,10 +3729,10 +3730,10 +3731,10 +3732,10 +3733,10 +3734,10 +3735,10 +3736,10 +3737,10 +3738,10 +3739,10 +3740,10 +3741,10 +3742,10 +3743,0 +3744,0 +3745,0 +3746,0 +3747,0 +3748,0 +3749,0 +3750,0 +3751,10 +3752,10 +3753,10 +3754,10 +3755,10 +3756,10 +3757,10 +3758,10 +3759,10 +3760,10 +3761,10 +3762,10 +3763,10 +3764,10 +3765,10 +3766,10 +3767,0 +3768,0 +3769,0 +3770,0 +3771,0 +3772,0 +3773,0 +3774,0 +3775,10 +3776,10 +3777,10 +3778,10 +3779,10 +3780,10 +3781,10 +3782,10 +3783,10 +3784,10 +3785,10 +3786,10 +3787,10 +3788,10 +3789,10 +3790,10 +3791,0 +3792,0 +3793,0 +3794,0 +3795,0 +3796,0 +3797,0 +3798,0 +3799,10 +3800,10 +3801,10 +3802,10 +3803,10 +3804,10 +3805,10 +3806,10 +3807,10 +3808,10 +3809,10 +3810,10 +3811,10 +3812,10 +3813,10 +3814,10 +3815,0 +3816,0 +3817,0 +3818,0 +3819,0 +3820,0 +3821,0 +3822,0 +3823,0 +3824,0 +3825,0 +3826,0 +3827,0 +3828,0 +3829,0 +3830,0 +3831,0 +3832,0 +3833,0 +3834,0 +3835,0 +3836,0 +3837,0 +3838,0 +3839,0 +3840,0 +3841,0 +3842,0 +3843,0 +3844,0 +3845,0 +3846,0 +3847,0 +3848,0 +3849,0 +3850,0 +3851,0 +3852,0 +3853,0 +3854,0 +3855,0 +3856,0 +3857,0 +3858,0 +3859,0 +3860,0 +3861,0 +3862,0 +3863,0 +3864,0 +3865,0 +3866,0 +3867,0 +3868,0 +3869,0 +3870,0 +3871,10 +3872,10 +3873,10 +3874,10 +3875,10 +3876,10 +3877,10 +3878,10 +3879,10 +3880,10 +3881,10 +3882,10 +3883,10 +3884,10 +3885,10 +3886,10 +3887,0 +3888,0 +3889,0 +3890,0 +3891,0 +3892,0 +3893,0 +3894,0 +3895,10 +3896,10 +3897,10 +3898,10 +3899,10 +3900,10 +3901,10 +3902,10 +3903,10 +3904,10 +3905,10 +3906,10 +3907,10 +3908,10 +3909,10 +3910,10 +3911,0 +3912,0 +3913,0 +3914,0 +3915,0 +3916,0 +3917,0 +3918,0 +3919,10 +3920,10 +3921,10 +3922,10 +3923,10 +3924,10 +3925,10 +3926,10 +3927,10 +3928,10 +3929,10 +3930,10 +3931,10 +3932,10 +3933,10 +3934,10 +3935,0 +3936,0 +3937,0 +3938,0 +3939,0 +3940,0 +3941,0 +3942,0 +3943,10 +3944,10 +3945,10 +3946,10 +3947,10 +3948,10 +3949,10 +3950,10 +3951,10 +3952,10 +3953,10 +3954,10 +3955,10 +3956,10 +3957,10 +3958,10 +3959,0 +3960,0 +3961,0 +3962,0 +3963,0 +3964,0 +3965,0 +3966,0 +3967,10 +3968,10 +3969,10 +3970,10 +3971,10 +3972,10 +3973,10 +3974,10 +3975,10 +3976,10 +3977,10 +3978,10 +3979,10 +3980,10 +3981,10 +3982,10 +3983,0 +3984,0 +3985,0 +3986,0 +3987,0 +3988,0 +3989,0 +3990,0 +3991,0 +3992,0 +3993,0 +3994,0 +3995,0 +3996,0 +3997,0 +3998,0 +3999,0 +4000,0 +4001,0 +4002,0 +4003,0 +4004,0 +4005,0 +4006,0 +4007,0 +4008,0 +4009,0 +4010,0 +4011,0 +4012,0 +4013,0 +4014,0 +4015,0 +4016,0 +4017,0 +4018,0 +4019,0 +4020,0 +4021,0 +4022,0 +4023,0 +4024,0 +4025,0 +4026,0 +4027,0 +4028,0 +4029,0 +4030,0 +4031,0 +4032,0 +4033,0 +4034,0 +4035,0 +4036,0 +4037,0 +4038,0 +4039,10 +4040,10 +4041,10 +4042,10 +4043,10 +4044,10 +4045,10 +4046,10 +4047,10 +4048,10 +4049,10 +4050,10 +4051,10 +4052,10 +4053,10 +4054,10 +4055,0 +4056,0 +4057,0 +4058,0 +4059,0 +4060,0 +4061,0 +4062,0 +4063,10 +4064,10 +4065,10 +4066,10 +4067,10 +4068,10 +4069,10 +4070,10 +4071,10 +4072,10 +4073,10 +4074,10 +4075,10 +4076,10 +4077,10 +4078,10 +4079,0 +4080,0 +4081,0 +4082,0 +4083,0 +4084,0 +4085,0 +4086,0 +4087,10 +4088,10 +4089,10 +4090,10 +4091,10 +4092,10 +4093,10 +4094,10 +4095,10 +4096,10 +4097,10 +4098,10 +4099,10 +4100,10 +4101,10 +4102,10 +4103,0 +4104,0 +4105,0 +4106,0 +4107,0 +4108,0 +4109,0 +4110,0 +4111,10 +4112,10 +4113,10 +4114,10 +4115,10 +4116,10 +4117,10 +4118,10 +4119,10 +4120,10 +4121,10 +4122,10 +4123,10 +4124,10 +4125,10 +4126,10 +4127,0 +4128,0 +4129,0 +4130,0 +4131,0 +4132,0 +4133,0 +4134,0 +4135,10 +4136,10 +4137,10 +4138,10 +4139,10 +4140,10 +4141,10 +4142,10 +4143,10 +4144,10 +4145,10 +4146,10 +4147,10 +4148,10 +4149,10 +4150,10 +4151,0 +4152,0 +4153,0 +4154,0 +4155,0 +4156,0 +4157,0 +4158,0 +4159,0 +4160,0 +4161,0 +4162,0 +4163,0 +4164,0 +4165,0 +4166,0 +4167,0 +4168,0 +4169,0 +4170,0 +4171,0 +4172,0 +4173,0 +4174,0 +4175,0 +4176,0 +4177,0 +4178,0 +4179,0 +4180,0 +4181,0 +4182,0 +4183,0 +4184,0 +4185,0 +4186,0 +4187,0 +4188,0 +4189,0 +4190,0 +4191,0 +4192,0 +4193,0 +4194,0 +4195,0 +4196,0 +4197,0 +4198,0 +4199,0 +4200,0 +4201,0 +4202,0 +4203,0 +4204,0 +4205,0 +4206,0 +4207,10 +4208,10 +4209,10 +4210,10 +4211,10 +4212,10 +4213,10 +4214,10 +4215,10 +4216,10 +4217,10 +4218,10 +4219,10 +4220,10 +4221,10 +4222,10 +4223,0 +4224,0 +4225,0 +4226,0 +4227,0 +4228,0 +4229,0 +4230,0 +4231,10 +4232,10 +4233,10 +4234,10 +4235,10 +4236,10 +4237,10 +4238,10 +4239,10 +4240,10 +4241,10 +4242,10 +4243,10 +4244,10 +4245,10 +4246,10 +4247,0 +4248,0 +4249,0 +4250,0 +4251,0 +4252,0 +4253,0 +4254,0 +4255,10 +4256,10 +4257,10 +4258,10 +4259,10 +4260,10 +4261,10 +4262,10 +4263,10 +4264,10 +4265,10 +4266,10 +4267,10 +4268,10 +4269,10 +4270,10 +4271,0 +4272,0 +4273,0 +4274,0 +4275,0 +4276,0 +4277,0 +4278,0 +4279,10 +4280,10 +4281,10 +4282,10 +4283,10 +4284,10 +4285,10 +4286,10 +4287,10 +4288,10 +4289,10 +4290,10 +4291,10 +4292,10 +4293,10 +4294,10 +4295,0 +4296,0 +4297,0 +4298,0 +4299,0 +4300,0 +4301,0 +4302,0 +4303,10 +4304,10 +4305,10 +4306,10 +4307,10 +4308,10 +4309,10 +4310,10 +4311,10 +4312,10 +4313,10 +4314,10 +4315,10 +4316,10 +4317,10 +4318,10 +4319,0 +4320,0 +4321,0 +4322,0 +4323,0 +4324,0 +4325,0 +4326,0 +4327,0 +4328,0 +4329,0 +4330,0 +4331,0 +4332,0 +4333,0 +4334,0 +4335,0 +4336,0 +4337,0 +4338,0 +4339,0 +4340,0 +4341,0 +4342,0 +4343,0 +4344,0 +4345,0 +4346,0 +4347,0 +4348,0 +4349,0 +4350,0 +4351,0 +4352,0 +4353,0 +4354,0 +4355,0 +4356,0 +4357,0 +4358,0 +4359,0 +4360,0 +4361,0 +4362,0 +4363,0 +4364,0 +4365,0 +4366,0 +4367,0 +4368,0 +4369,0 +4370,0 +4371,0 +4372,0 +4373,0 +4374,0 +4375,10 +4376,10 +4377,10 +4378,10 +4379,10 +4380,10 +4381,10 +4382,10 +4383,10 +4384,10 +4385,10 +4386,10 +4387,10 +4388,10 +4389,10 +4390,10 +4391,0 +4392,0 +4393,0 +4394,0 +4395,0 +4396,0 +4397,0 +4398,0 +4399,10 +4400,10 +4401,10 +4402,10 +4403,10 +4404,10 +4405,10 +4406,10 +4407,10 +4408,10 +4409,10 +4410,10 +4411,10 +4412,10 +4413,10 +4414,10 +4415,0 +4416,0 +4417,0 +4418,0 +4419,0 +4420,0 +4421,0 +4422,0 +4423,10 +4424,10 +4425,10 +4426,10 +4427,10 +4428,10 +4429,10 +4430,10 +4431,10 +4432,10 +4433,10 +4434,10 +4435,10 +4436,10 +4437,10 +4438,10 +4439,0 +4440,0 +4441,0 +4442,0 +4443,0 +4444,0 +4445,0 +4446,0 +4447,10 +4448,10 +4449,10 +4450,10 +4451,10 +4452,10 +4453,10 +4454,10 +4455,10 +4456,10 +4457,10 +4458,10 +4459,10 +4460,10 +4461,10 +4462,10 +4463,0 +4464,0 +4465,0 +4466,0 +4467,0 +4468,0 +4469,0 +4470,0 +4471,10 +4472,10 +4473,10 +4474,10 +4475,10 +4476,10 +4477,10 +4478,10 +4479,10 +4480,10 +4481,10 +4482,10 +4483,10 +4484,10 +4485,10 +4486,10 +4487,0 +4488,0 +4489,0 +4490,0 +4491,0 +4492,0 +4493,0 +4494,0 +4495,0 +4496,0 +4497,0 +4498,0 +4499,0 +4500,0 +4501,0 +4502,0 +4503,0 +4504,0 +4505,0 +4506,0 +4507,0 +4508,0 +4509,0 +4510,0 +4511,0 +4512,0 +4513,0 +4514,0 +4515,0 +4516,0 +4517,0 +4518,0 +4519,0 +4520,0 +4521,0 +4522,0 +4523,0 +4524,0 +4525,0 +4526,0 +4527,0 +4528,0 +4529,0 +4530,0 +4531,0 +4532,0 +4533,0 +4534,0 +4535,0 +4536,0 +4537,0 +4538,0 +4539,0 +4540,0 +4541,0 +4542,0 +4543,10 +4544,10 +4545,10 +4546,10 +4547,10 +4548,10 +4549,10 +4550,10 +4551,10 +4552,10 +4553,10 +4554,10 +4555,10 +4556,10 +4557,10 +4558,10 +4559,0 +4560,0 +4561,0 +4562,0 +4563,0 +4564,0 +4565,0 +4566,0 +4567,10 +4568,10 +4569,10 +4570,10 +4571,10 +4572,10 +4573,10 +4574,10 +4575,10 +4576,10 +4577,10 +4578,10 +4579,10 +4580,10 +4581,10 +4582,10 +4583,0 +4584,0 +4585,0 +4586,0 +4587,0 +4588,0 +4589,0 +4590,0 +4591,10 +4592,10 +4593,10 +4594,10 +4595,10 +4596,10 +4597,10 +4598,10 +4599,10 +4600,10 +4601,10 +4602,10 +4603,10 +4604,10 +4605,10 +4606,10 +4607,0 +4608,0 +4609,0 +4610,0 +4611,0 +4612,0 +4613,0 +4614,0 +4615,10 +4616,10 +4617,10 +4618,10 +4619,10 +4620,10 +4621,10 +4622,10 +4623,10 +4624,10 +4625,10 +4626,10 +4627,10 +4628,10 +4629,10 +4630,10 +4631,0 +4632,0 +4633,0 +4634,0 +4635,0 +4636,0 +4637,0 +4638,0 +4639,10 +4640,10 +4641,10 +4642,10 +4643,10 +4644,10 +4645,10 +4646,10 +4647,10 +4648,10 +4649,10 +4650,10 +4651,10 +4652,10 +4653,10 +4654,10 +4655,0 +4656,0 +4657,0 +4658,0 +4659,0 +4660,0 +4661,0 +4662,0 +4663,0 +4664,0 +4665,0 +4666,0 +4667,0 +4668,0 +4669,0 +4670,0 +4671,0 +4672,0 +4673,0 +4674,0 +4675,0 +4676,0 +4677,0 +4678,0 +4679,0 +4680,0 +4681,0 +4682,0 +4683,0 +4684,0 +4685,0 +4686,0 +4687,0 +4688,0 +4689,0 +4690,0 +4691,0 +4692,0 +4693,0 +4694,0 +4695,0 +4696,0 +4697,0 +4698,0 +4699,0 +4700,0 +4701,0 +4702,0 +4703,0 +4704,0 +4705,0 +4706,0 +4707,0 +4708,0 +4709,0 +4710,0 +4711,10 +4712,10 +4713,10 +4714,10 +4715,10 +4716,10 +4717,10 +4718,10 +4719,10 +4720,10 +4721,10 +4722,10 +4723,10 +4724,10 +4725,10 +4726,10 +4727,0 +4728,0 +4729,0 +4730,0 +4731,0 +4732,0 +4733,0 +4734,0 +4735,10 +4736,10 +4737,10 +4738,10 +4739,10 +4740,10 +4741,10 +4742,10 +4743,10 +4744,10 +4745,10 +4746,10 +4747,10 +4748,10 +4749,10 +4750,10 +4751,0 +4752,0 +4753,0 +4754,0 +4755,0 +4756,0 +4757,0 +4758,0 +4759,10 +4760,10 +4761,10 +4762,10 +4763,10 +4764,10 +4765,10 +4766,10 +4767,10 +4768,10 +4769,10 +4770,10 +4771,10 +4772,10 +4773,10 +4774,10 +4775,0 +4776,0 +4777,0 +4778,0 +4779,0 +4780,0 +4781,0 +4782,0 +4783,10 +4784,10 +4785,10 +4786,10 +4787,10 +4788,10 +4789,10 +4790,10 +4791,10 +4792,10 +4793,10 +4794,10 +4795,10 +4796,10 +4797,10 +4798,10 +4799,0 +4800,0 +4801,0 +4802,0 +4803,0 +4804,0 +4805,0 +4806,0 +4807,10 +4808,10 +4809,10 +4810,10 +4811,10 +4812,10 +4813,10 +4814,10 +4815,10 +4816,10 +4817,10 +4818,10 +4819,10 +4820,10 +4821,10 +4822,10 +4823,0 +4824,0 +4825,0 +4826,0 +4827,0 +4828,0 +4829,0 +4830,0 +4831,0 +4832,0 +4833,0 +4834,0 +4835,0 +4836,0 +4837,0 +4838,0 +4839,0 +4840,0 +4841,0 +4842,0 +4843,0 +4844,0 +4845,0 +4846,0 +4847,0 +4848,0 +4849,0 +4850,0 +4851,0 +4852,0 +4853,0 +4854,0 +4855,0 +4856,0 +4857,0 +4858,0 +4859,0 +4860,0 +4861,0 +4862,0 +4863,0 +4864,0 +4865,0 +4866,0 +4867,0 +4868,0 +4869,0 +4870,0 +4871,0 +4872,0 +4873,0 +4874,0 +4875,0 +4876,0 +4877,0 +4878,0 +4879,10 +4880,10 +4881,10 +4882,10 +4883,10 +4884,10 +4885,10 +4886,10 +4887,10 +4888,10 +4889,10 +4890,10 +4891,10 +4892,10 +4893,10 +4894,10 +4895,0 +4896,0 +4897,0 +4898,0 +4899,0 +4900,0 +4901,0 +4902,0 +4903,10 +4904,10 +4905,10 +4906,10 +4907,10 +4908,10 +4909,10 +4910,10 +4911,10 +4912,10 +4913,10 +4914,10 +4915,10 +4916,10 +4917,10 +4918,10 +4919,0 +4920,0 +4921,0 +4922,0 +4923,0 +4924,0 +4925,0 +4926,0 +4927,10 +4928,10 +4929,10 +4930,10 +4931,10 +4932,10 +4933,10 +4934,10 +4935,10 +4936,10 +4937,10 +4938,10 +4939,10 +4940,10 +4941,10 +4942,10 +4943,0 +4944,0 +4945,0 +4946,0 +4947,0 +4948,0 +4949,0 +4950,0 +4951,10 +4952,10 +4953,10 +4954,10 +4955,10 +4956,10 +4957,10 +4958,10 +4959,10 +4960,10 +4961,10 +4962,10 +4963,10 +4964,10 +4965,10 +4966,10 +4967,0 +4968,0 +4969,0 +4970,0 +4971,0 +4972,0 +4973,0 +4974,0 +4975,10 +4976,10 +4977,10 +4978,10 +4979,10 +4980,10 +4981,10 +4982,10 +4983,10 +4984,10 +4985,10 +4986,10 +4987,10 +4988,10 +4989,10 +4990,10 +4991,0 +4992,0 +4993,0 +4994,0 +4995,0 +4996,0 +4997,0 +4998,0 +4999,0 +5000,0 +5001,0 +5002,0 +5003,0 +5004,0 +5005,0 +5006,0 +5007,0 +5008,0 +5009,0 +5010,0 +5011,0 +5012,0 +5013,0 +5014,0 +5015,0 +5016,0 +5017,0 +5018,0 +5019,0 +5020,0 +5021,0 +5022,0 +5023,0 +5024,0 +5025,0 +5026,0 +5027,0 +5028,0 +5029,0 +5030,0 +5031,0 +5032,0 +5033,0 +5034,0 +5035,0 +5036,0 +5037,0 +5038,0 +5039,0 +5040,0 +5041,0 +5042,0 +5043,0 +5044,0 +5045,0 +5046,0 +5047,10 +5048,10 +5049,10 +5050,10 +5051,10 +5052,10 +5053,10 +5054,10 +5055,10 +5056,10 +5057,10 +5058,10 +5059,10 +5060,10 +5061,10 +5062,10 +5063,0 +5064,0 +5065,0 +5066,0 +5067,0 +5068,0 +5069,0 +5070,0 +5071,10 +5072,10 +5073,10 +5074,10 +5075,10 +5076,10 +5077,10 +5078,10 +5079,10 +5080,10 +5081,10 +5082,10 +5083,10 +5084,10 +5085,10 +5086,10 +5087,0 +5088,0 +5089,0 +5090,0 +5091,0 +5092,0 +5093,0 +5094,0 +5095,10 +5096,10 +5097,10 +5098,10 +5099,10 +5100,10 +5101,10 +5102,10 +5103,10 +5104,10 +5105,10 +5106,10 +5107,10 +5108,10 +5109,10 +5110,10 +5111,0 +5112,0 +5113,0 +5114,0 +5115,0 +5116,0 +5117,0 +5118,0 +5119,10 +5120,10 +5121,10 +5122,10 +5123,10 +5124,10 +5125,10 +5126,10 +5127,10 +5128,10 +5129,10 +5130,10 +5131,10 +5132,10 +5133,10 +5134,10 +5135,0 +5136,0 +5137,0 +5138,0 +5139,0 +5140,0 +5141,0 +5142,0 +5143,10 +5144,10 +5145,10 +5146,10 +5147,10 +5148,10 +5149,10 +5150,10 +5151,10 +5152,10 +5153,10 +5154,10 +5155,10 +5156,10 +5157,10 +5158,10 +5159,0 +5160,0 +5161,0 +5162,0 +5163,0 +5164,0 +5165,0 +5166,0 +5167,0 +5168,0 +5169,0 +5170,0 +5171,0 +5172,0 +5173,0 +5174,0 +5175,0 +5176,0 +5177,0 +5178,0 +5179,0 +5180,0 +5181,0 +5182,0 +5183,0 +5184,0 +5185,0 +5186,0 +5187,0 +5188,0 +5189,0 +5190,0 +5191,0 +5192,0 +5193,0 +5194,0 +5195,0 +5196,0 +5197,0 +5198,0 +5199,0 +5200,0 +5201,0 +5202,0 +5203,0 +5204,0 +5205,0 +5206,0 +5207,0 +5208,0 +5209,0 +5210,0 +5211,0 +5212,0 +5213,0 +5214,0 +5215,10 +5216,10 +5217,10 +5218,10 +5219,10 +5220,10 +5221,10 +5222,10 +5223,10 +5224,10 +5225,10 +5226,10 +5227,10 +5228,10 +5229,10 +5230,10 +5231,0 +5232,0 +5233,0 +5234,0 +5235,0 +5236,0 +5237,0 +5238,0 +5239,10 +5240,10 +5241,10 +5242,10 +5243,10 +5244,10 +5245,10 +5246,10 +5247,10 +5248,10 +5249,10 +5250,10 +5251,10 +5252,10 +5253,10 +5254,10 +5255,0 +5256,0 +5257,0 +5258,0 +5259,0 +5260,0 +5261,0 +5262,0 +5263,10 +5264,10 +5265,10 +5266,10 +5267,10 +5268,10 +5269,10 +5270,10 +5271,10 +5272,10 +5273,10 +5274,10 +5275,10 +5276,10 +5277,10 +5278,10 +5279,0 +5280,0 +5281,0 +5282,0 +5283,0 +5284,0 +5285,0 +5286,0 +5287,10 +5288,10 +5289,10 +5290,10 +5291,10 +5292,10 +5293,10 +5294,10 +5295,10 +5296,10 +5297,10 +5298,10 +5299,10 +5300,10 +5301,10 +5302,10 +5303,0 +5304,0 +5305,0 +5306,0 +5307,0 +5308,0 +5309,0 +5310,0 +5311,10 +5312,10 +5313,10 +5314,10 +5315,10 +5316,10 +5317,10 +5318,10 +5319,10 +5320,10 +5321,10 +5322,10 +5323,10 +5324,10 +5325,10 +5326,10 +5327,0 +5328,0 +5329,0 +5330,0 +5331,0 +5332,0 +5333,0 +5334,0 +5335,0 +5336,0 +5337,0 +5338,0 +5339,0 +5340,0 +5341,0 +5342,0 +5343,0 +5344,0 +5345,0 +5346,0 +5347,0 +5348,0 +5349,0 +5350,0 +5351,0 +5352,0 +5353,0 +5354,0 +5355,0 +5356,0 +5357,0 +5358,0 +5359,0 +5360,0 +5361,0 +5362,0 +5363,0 +5364,0 +5365,0 +5366,0 +5367,0 +5368,0 +5369,0 +5370,0 +5371,0 +5372,0 +5373,0 +5374,0 +5375,0 +5376,0 +5377,0 +5378,0 +5379,0 +5380,0 +5381,0 +5382,0 +5383,10 +5384,10 +5385,10 +5386,10 +5387,10 +5388,10 +5389,10 +5390,10 +5391,10 +5392,10 +5393,10 +5394,10 +5395,10 +5396,10 +5397,10 +5398,10 +5399,0 +5400,0 +5401,0 +5402,0 +5403,0 +5404,0 +5405,0 +5406,0 +5407,10 +5408,10 +5409,10 +5410,10 +5411,10 +5412,10 +5413,10 +5414,10 +5415,10 +5416,10 +5417,10 +5418,10 +5419,10 +5420,10 +5421,10 +5422,10 +5423,0 +5424,0 +5425,0 +5426,0 +5427,0 +5428,0 +5429,0 +5430,0 +5431,10 +5432,10 +5433,10 +5434,10 +5435,10 +5436,10 +5437,10 +5438,10 +5439,10 +5440,10 +5441,10 +5442,10 +5443,10 +5444,10 +5445,10 +5446,10 +5447,0 +5448,0 +5449,0 +5450,0 +5451,0 +5452,0 +5453,0 +5454,0 +5455,10 +5456,10 +5457,10 +5458,10 +5459,10 +5460,10 +5461,10 +5462,10 +5463,10 +5464,10 +5465,10 +5466,10 +5467,10 +5468,10 +5469,10 +5470,10 +5471,0 +5472,0 +5473,0 +5474,0 +5475,0 +5476,0 +5477,0 +5478,0 +5479,10 +5480,10 +5481,10 +5482,10 +5483,10 +5484,10 +5485,10 +5486,10 +5487,10 +5488,10 +5489,10 +5490,10 +5491,10 +5492,10 +5493,10 +5494,10 +5495,0 +5496,0 +5497,0 +5498,0 +5499,0 +5500,0 +5501,0 +5502,0 +5503,0 +5504,0 +5505,0 +5506,0 +5507,0 +5508,0 +5509,0 +5510,0 +5511,0 +5512,0 +5513,0 +5514,0 +5515,0 +5516,0 +5517,0 +5518,0 +5519,0 +5520,0 +5521,0 +5522,0 +5523,0 +5524,0 +5525,0 +5526,0 +5527,0 +5528,0 +5529,0 +5530,0 +5531,0 +5532,0 +5533,0 +5534,0 +5535,0 +5536,0 +5537,0 +5538,0 +5539,0 +5540,0 +5541,0 +5542,0 +5543,0 +5544,0 +5545,0 +5546,0 +5547,0 +5548,0 +5549,0 +5550,0 +5551,10 +5552,10 +5553,10 +5554,10 +5555,10 +5556,10 +5557,10 +5558,10 +5559,10 +5560,10 +5561,10 +5562,10 +5563,10 +5564,10 +5565,10 +5566,10 +5567,0 +5568,0 +5569,0 +5570,0 +5571,0 +5572,0 +5573,0 +5574,0 +5575,10 +5576,10 +5577,10 +5578,10 +5579,10 +5580,10 +5581,10 +5582,10 +5583,10 +5584,10 +5585,10 +5586,10 +5587,10 +5588,10 +5589,10 +5590,10 +5591,0 +5592,0 +5593,0 +5594,0 +5595,0 +5596,0 +5597,0 +5598,0 +5599,10 +5600,10 +5601,10 +5602,10 +5603,10 +5604,10 +5605,10 +5606,10 +5607,10 +5608,10 +5609,10 +5610,10 +5611,10 +5612,10 +5613,10 +5614,10 +5615,0 +5616,0 +5617,0 +5618,0 +5619,0 +5620,0 +5621,0 +5622,0 +5623,10 +5624,10 +5625,10 +5626,10 +5627,10 +5628,10 +5629,10 +5630,10 +5631,10 +5632,10 +5633,10 +5634,10 +5635,10 +5636,10 +5637,10 +5638,10 +5639,0 +5640,0 +5641,0 +5642,0 +5643,0 +5644,0 +5645,0 +5646,0 +5647,10 +5648,10 +5649,10 +5650,10 +5651,10 +5652,10 +5653,10 +5654,10 +5655,10 +5656,10 +5657,10 +5658,10 +5659,10 +5660,10 +5661,10 +5662,10 +5663,0 +5664,0 +5665,0 +5666,0 +5667,0 +5668,0 +5669,0 +5670,0 +5671,0 +5672,0 +5673,0 +5674,0 +5675,0 +5676,0 +5677,0 +5678,0 +5679,0 +5680,0 +5681,0 +5682,0 +5683,0 +5684,0 +5685,0 +5686,0 +5687,0 +5688,0 +5689,0 +5690,0 +5691,0 +5692,0 +5693,0 +5694,0 +5695,0 +5696,0 +5697,0 +5698,0 +5699,0 +5700,0 +5701,0 +5702,0 +5703,0 +5704,0 +5705,0 +5706,0 +5707,0 +5708,0 +5709,0 +5710,0 +5711,0 +5712,0 +5713,0 +5714,0 +5715,0 +5716,0 +5717,0 +5718,0 +5719,10 +5720,10 +5721,10 +5722,10 +5723,10 +5724,10 +5725,10 +5726,10 +5727,10 +5728,10 +5729,10 +5730,10 +5731,10 +5732,10 +5733,10 +5734,10 +5735,0 +5736,0 +5737,0 +5738,0 +5739,0 +5740,0 +5741,0 +5742,0 +5743,10 +5744,10 +5745,10 +5746,10 +5747,10 +5748,10 +5749,10 +5750,10 +5751,10 +5752,10 +5753,10 +5754,10 +5755,10 +5756,10 +5757,10 +5758,10 +5759,0 +5760,0 +5761,0 +5762,0 +5763,0 +5764,0 +5765,0 +5766,0 +5767,10 +5768,10 +5769,10 +5770,10 +5771,10 +5772,10 +5773,10 +5774,10 +5775,10 +5776,10 +5777,10 +5778,10 +5779,10 +5780,10 +5781,10 +5782,10 +5783,0 +5784,0 +5785,0 +5786,0 +5787,0 +5788,0 +5789,0 +5790,0 +5791,10 +5792,10 +5793,10 +5794,10 +5795,10 +5796,10 +5797,10 +5798,10 +5799,10 +5800,10 +5801,10 +5802,10 +5803,10 +5804,10 +5805,10 +5806,10 +5807,0 +5808,0 +5809,0 +5810,0 +5811,0 +5812,0 +5813,0 +5814,0 +5815,10 +5816,10 +5817,10 +5818,10 +5819,10 +5820,10 +5821,10 +5822,10 +5823,10 +5824,10 +5825,10 +5826,10 +5827,10 +5828,10 +5829,10 +5830,10 +5831,0 +5832,0 +5833,0 +5834,0 +5835,0 +5836,0 +5837,0 +5838,0 +5839,0 +5840,0 +5841,0 +5842,0 +5843,0 +5844,0 +5845,0 +5846,0 +5847,0 +5848,0 +5849,0 +5850,0 +5851,0 +5852,0 +5853,0 +5854,0 +5855,0 +5856,0 +5857,0 +5858,0 +5859,0 +5860,0 +5861,0 +5862,0 +5863,0 +5864,0 +5865,0 +5866,0 +5867,0 +5868,0 +5869,0 +5870,0 +5871,0 +5872,0 +5873,0 +5874,0 +5875,0 +5876,0 +5877,0 +5878,0 +5879,0 +5880,0 +5881,0 +5882,0 +5883,0 +5884,0 +5885,0 +5886,0 +5887,10 +5888,10 +5889,10 +5890,10 +5891,10 +5892,10 +5893,10 +5894,10 +5895,10 +5896,10 +5897,10 +5898,10 +5899,10 +5900,10 +5901,10 +5902,10 +5903,0 +5904,0 +5905,0 +5906,0 +5907,0 +5908,0 +5909,0 +5910,0 +5911,10 +5912,10 +5913,10 +5914,10 +5915,10 +5916,10 +5917,10 +5918,10 +5919,10 +5920,10 +5921,10 +5922,10 +5923,10 +5924,10 +5925,10 +5926,10 +5927,0 +5928,0 +5929,0 +5930,0 +5931,0 +5932,0 +5933,0 +5934,0 +5935,10 +5936,10 +5937,10 +5938,10 +5939,10 +5940,10 +5941,10 +5942,10 +5943,10 +5944,10 +5945,10 +5946,10 +5947,10 +5948,10 +5949,10 +5950,10 +5951,0 +5952,0 +5953,0 +5954,0 +5955,0 +5956,0 +5957,0 +5958,0 +5959,10 +5960,10 +5961,10 +5962,10 +5963,10 +5964,10 +5965,10 +5966,10 +5967,10 +5968,10 +5969,10 +5970,10 +5971,10 +5972,10 +5973,10 +5974,10 +5975,0 +5976,0 +5977,0 +5978,0 +5979,0 +5980,0 +5981,0 +5982,0 +5983,10 +5984,10 +5985,10 +5986,10 +5987,10 +5988,10 +5989,10 +5990,10 +5991,10 +5992,10 +5993,10 +5994,10 +5995,10 +5996,10 +5997,10 +5998,10 +5999,0 +6000,0 +6001,0 +6002,0 +6003,0 +6004,0 +6005,0 +6006,0 +6007,0 +6008,0 +6009,0 +6010,0 +6011,0 +6012,0 +6013,0 +6014,0 +6015,0 +6016,0 +6017,0 +6018,0 +6019,0 +6020,0 +6021,0 +6022,0 +6023,0 +6024,0 +6025,0 +6026,0 +6027,0 +6028,0 +6029,0 +6030,0 +6031,0 +6032,0 +6033,0 +6034,0 +6035,0 +6036,0 +6037,0 +6038,0 +6039,0 +6040,0 +6041,0 +6042,0 +6043,0 +6044,0 +6045,0 +6046,0 +6047,0 +6048,0 +6049,0 +6050,0 +6051,0 +6052,0 +6053,0 +6054,0 +6055,10 +6056,10 +6057,10 +6058,10 +6059,10 +6060,10 +6061,10 +6062,10 +6063,10 +6064,10 +6065,10 +6066,10 +6067,10 +6068,10 +6069,10 +6070,10 +6071,0 +6072,0 +6073,0 +6074,0 +6075,0 +6076,0 +6077,0 +6078,0 +6079,10 +6080,10 +6081,10 +6082,10 +6083,10 +6084,10 +6085,10 +6086,10 +6087,10 +6088,10 +6089,10 +6090,10 +6091,10 +6092,10 +6093,10 +6094,10 +6095,0 +6096,0 +6097,0 +6098,0 +6099,0 +6100,0 +6101,0 +6102,0 +6103,10 +6104,10 +6105,10 +6106,10 +6107,10 +6108,10 +6109,10 +6110,10 +6111,10 +6112,10 +6113,10 +6114,10 +6115,10 +6116,10 +6117,10 +6118,10 +6119,0 +6120,0 +6121,0 +6122,0 +6123,0 +6124,0 +6125,0 +6126,0 +6127,10 +6128,10 +6129,10 +6130,10 +6131,10 +6132,10 +6133,10 +6134,10 +6135,10 +6136,10 +6137,10 +6138,10 +6139,10 +6140,10 +6141,10 +6142,10 +6143,0 +6144,0 +6145,0 +6146,0 +6147,0 +6148,0 +6149,0 +6150,0 +6151,10 +6152,10 +6153,10 +6154,10 +6155,10 +6156,10 +6157,10 +6158,10 +6159,10 +6160,10 +6161,10 +6162,10 +6163,10 +6164,10 +6165,10 +6166,10 +6167,0 +6168,0 +6169,0 +6170,0 +6171,0 +6172,0 +6173,0 +6174,0 +6175,0 +6176,0 +6177,0 +6178,0 +6179,0 +6180,0 +6181,0 +6182,0 +6183,0 +6184,0 +6185,0 +6186,0 +6187,0 +6188,0 +6189,0 +6190,0 +6191,0 +6192,0 +6193,0 +6194,0 +6195,0 +6196,0 +6197,0 +6198,0 +6199,0 +6200,0 +6201,0 +6202,0 +6203,0 +6204,0 +6205,0 +6206,0 +6207,0 +6208,0 +6209,0 +6210,0 +6211,0 +6212,0 +6213,0 +6214,0 +6215,0 +6216,0 +6217,0 +6218,0 +6219,0 +6220,0 +6221,0 +6222,0 +6223,10 +6224,10 +6225,10 +6226,10 +6227,10 +6228,10 +6229,10 +6230,10 +6231,10 +6232,10 +6233,10 +6234,10 +6235,10 +6236,10 +6237,10 +6238,10 +6239,0 +6240,0 +6241,0 +6242,0 +6243,0 +6244,0 +6245,0 +6246,0 +6247,10 +6248,10 +6249,10 +6250,10 +6251,10 +6252,10 +6253,10 +6254,10 +6255,10 +6256,10 +6257,10 +6258,10 +6259,10 +6260,10 +6261,10 +6262,10 +6263,0 +6264,0 +6265,0 +6266,0 +6267,0 +6268,0 +6269,0 +6270,0 +6271,10 +6272,10 +6273,10 +6274,10 +6275,10 +6276,10 +6277,10 +6278,10 +6279,10 +6280,10 +6281,10 +6282,10 +6283,10 +6284,10 +6285,10 +6286,10 +6287,0 +6288,0 +6289,0 +6290,0 +6291,0 +6292,0 +6293,0 +6294,0 +6295,10 +6296,10 +6297,10 +6298,10 +6299,10 +6300,10 +6301,10 +6302,10 +6303,10 +6304,10 +6305,10 +6306,10 +6307,10 +6308,10 +6309,10 +6310,10 +6311,0 +6312,0 +6313,0 +6314,0 +6315,0 +6316,0 +6317,0 +6318,0 +6319,10 +6320,10 +6321,10 +6322,10 +6323,10 +6324,10 +6325,10 +6326,10 +6327,10 +6328,10 +6329,10 +6330,10 +6331,10 +6332,10 +6333,10 +6334,10 +6335,0 +6336,0 +6337,0 +6338,0 +6339,0 +6340,0 +6341,0 +6342,0 +6343,0 +6344,0 +6345,0 +6346,0 +6347,0 +6348,0 +6349,0 +6350,0 +6351,0 +6352,0 +6353,0 +6354,0 +6355,0 +6356,0 +6357,0 +6358,0 +6359,0 +6360,0 +6361,0 +6362,0 +6363,0 +6364,0 +6365,0 +6366,0 +6367,0 +6368,0 +6369,0 +6370,0 +6371,0 +6372,0 +6373,0 +6374,0 +6375,0 +6376,0 +6377,0 +6378,0 +6379,0 +6380,0 +6381,0 +6382,0 +6383,0 +6384,0 +6385,0 +6386,0 +6387,0 +6388,0 +6389,0 +6390,0 +6391,10 +6392,10 +6393,10 +6394,10 +6395,10 +6396,10 +6397,10 +6398,10 +6399,10 +6400,10 +6401,10 +6402,10 +6403,10 +6404,10 +6405,10 +6406,10 +6407,0 +6408,0 +6409,0 +6410,0 +6411,0 +6412,0 +6413,0 +6414,0 +6415,10 +6416,10 +6417,10 +6418,10 +6419,10 +6420,10 +6421,10 +6422,10 +6423,10 +6424,10 +6425,10 +6426,10 +6427,10 +6428,10 +6429,10 +6430,10 +6431,0 +6432,0 +6433,0 +6434,0 +6435,0 +6436,0 +6437,0 +6438,0 +6439,10 +6440,10 +6441,10 +6442,10 +6443,10 +6444,10 +6445,10 +6446,10 +6447,10 +6448,10 +6449,10 +6450,10 +6451,10 +6452,10 +6453,10 +6454,10 +6455,0 +6456,0 +6457,0 +6458,0 +6459,0 +6460,0 +6461,0 +6462,0 +6463,10 +6464,10 +6465,10 +6466,10 +6467,10 +6468,10 +6469,10 +6470,10 +6471,10 +6472,10 +6473,10 +6474,10 +6475,10 +6476,10 +6477,10 +6478,10 +6479,0 +6480,0 +6481,0 +6482,0 +6483,0 +6484,0 +6485,0 +6486,0 +6487,10 +6488,10 +6489,10 +6490,10 +6491,10 +6492,10 +6493,10 +6494,10 +6495,10 +6496,10 +6497,10 +6498,10 +6499,10 +6500,10 +6501,10 +6502,10 +6503,0 +6504,0 +6505,0 +6506,0 +6507,0 +6508,0 +6509,0 +6510,0 +6511,0 +6512,0 +6513,0 +6514,0 +6515,0 +6516,0 +6517,0 +6518,0 +6519,0 +6520,0 +6521,0 +6522,0 +6523,0 +6524,0 +6525,0 +6526,0 +6527,0 +6528,0 +6529,0 +6530,0 +6531,0 +6532,0 +6533,0 +6534,0 +6535,0 +6536,0 +6537,0 +6538,0 +6539,0 +6540,0 +6541,0 +6542,0 +6543,0 +6544,0 +6545,0 +6546,0 +6547,0 +6548,0 +6549,0 +6550,0 +6551,0 +6552,0 +6553,0 +6554,0 +6555,0 +6556,0 +6557,0 +6558,0 +6559,10 +6560,10 +6561,10 +6562,10 +6563,10 +6564,10 +6565,10 +6566,10 +6567,10 +6568,10 +6569,10 +6570,10 +6571,10 +6572,10 +6573,10 +6574,10 +6575,0 +6576,0 +6577,0 +6578,0 +6579,0 +6580,0 +6581,0 +6582,0 +6583,10 +6584,10 +6585,10 +6586,10 +6587,10 +6588,10 +6589,10 +6590,10 +6591,10 +6592,10 +6593,10 +6594,10 +6595,10 +6596,10 +6597,10 +6598,10 +6599,0 +6600,0 +6601,0 +6602,0 +6603,0 +6604,0 +6605,0 +6606,0 +6607,10 +6608,10 +6609,10 +6610,10 +6611,10 +6612,10 +6613,10 +6614,10 +6615,10 +6616,10 +6617,10 +6618,10 +6619,10 +6620,10 +6621,10 +6622,10 +6623,0 +6624,0 +6625,0 +6626,0 +6627,0 +6628,0 +6629,0 +6630,0 +6631,10 +6632,10 +6633,10 +6634,10 +6635,10 +6636,10 +6637,10 +6638,10 +6639,10 +6640,10 +6641,10 +6642,10 +6643,10 +6644,10 +6645,10 +6646,10 +6647,0 +6648,0 +6649,0 +6650,0 +6651,0 +6652,0 +6653,0 +6654,0 +6655,10 +6656,10 +6657,10 +6658,10 +6659,10 +6660,10 +6661,10 +6662,10 +6663,10 +6664,10 +6665,10 +6666,10 +6667,10 +6668,10 +6669,10 +6670,10 +6671,0 +6672,0 +6673,0 +6674,0 +6675,0 +6676,0 +6677,0 +6678,0 +6679,0 +6680,0 +6681,0 +6682,0 +6683,0 +6684,0 +6685,0 +6686,0 +6687,0 +6688,0 +6689,0 +6690,0 +6691,0 +6692,0 +6693,0 +6694,0 +6695,0 +6696,0 +6697,0 +6698,0 +6699,0 +6700,0 +6701,0 +6702,0 +6703,0 +6704,0 +6705,0 +6706,0 +6707,0 +6708,0 +6709,0 +6710,0 +6711,0 +6712,0 +6713,0 +6714,0 +6715,0 +6716,0 +6717,0 +6718,0 +6719,0 +6720,0 +6721,0 +6722,0 +6723,0 +6724,0 +6725,0 +6726,0 +6727,10 +6728,10 +6729,10 +6730,10 +6731,10 +6732,10 +6733,10 +6734,10 +6735,10 +6736,10 +6737,10 +6738,10 +6739,10 +6740,10 +6741,10 +6742,10 +6743,0 +6744,0 +6745,0 +6746,0 +6747,0 +6748,0 +6749,0 +6750,0 +6751,10 +6752,10 +6753,10 +6754,10 +6755,10 +6756,10 +6757,10 +6758,10 +6759,10 +6760,10 +6761,10 +6762,10 +6763,10 +6764,10 +6765,10 +6766,10 +6767,0 +6768,0 +6769,0 +6770,0 +6771,0 +6772,0 +6773,0 +6774,0 +6775,10 +6776,10 +6777,10 +6778,10 +6779,10 +6780,10 +6781,10 +6782,10 +6783,10 +6784,10 +6785,10 +6786,10 +6787,10 +6788,10 +6789,10 +6790,10 +6791,0 +6792,0 +6793,0 +6794,0 +6795,0 +6796,0 +6797,0 +6798,0 +6799,10 +6800,10 +6801,10 +6802,10 +6803,10 +6804,10 +6805,10 +6806,10 +6807,10 +6808,10 +6809,10 +6810,10 +6811,10 +6812,10 +6813,10 +6814,10 +6815,0 +6816,0 +6817,0 +6818,0 +6819,0 +6820,0 +6821,0 +6822,0 +6823,10 +6824,10 +6825,10 +6826,10 +6827,10 +6828,10 +6829,10 +6830,10 +6831,10 +6832,10 +6833,10 +6834,10 +6835,10 +6836,10 +6837,10 +6838,10 +6839,0 +6840,0 +6841,0 +6842,0 +6843,0 +6844,0 +6845,0 +6846,0 +6847,0 +6848,0 +6849,0 +6850,0 +6851,0 +6852,0 +6853,0 +6854,0 +6855,0 +6856,0 +6857,0 +6858,0 +6859,0 +6860,0 +6861,0 +6862,0 +6863,0 +6864,0 +6865,0 +6866,0 +6867,0 +6868,0 +6869,0 +6870,0 +6871,0 +6872,0 +6873,0 +6874,0 +6875,0 +6876,0 +6877,0 +6878,0 +6879,0 +6880,0 +6881,0 +6882,0 +6883,0 +6884,0 +6885,0 +6886,0 +6887,0 +6888,0 +6889,0 +6890,0 +6891,0 +6892,0 +6893,0 +6894,0 +6895,10 +6896,10 +6897,10 +6898,10 +6899,10 +6900,10 +6901,10 +6902,10 +6903,10 +6904,10 +6905,10 +6906,10 +6907,10 +6908,10 +6909,10 +6910,10 +6911,0 +6912,0 +6913,0 +6914,0 +6915,0 +6916,0 +6917,0 +6918,0 +6919,10 +6920,10 +6921,10 +6922,10 +6923,10 +6924,10 +6925,10 +6926,10 +6927,10 +6928,10 +6929,10 +6930,10 +6931,10 +6932,10 +6933,10 +6934,10 +6935,0 +6936,0 +6937,0 +6938,0 +6939,0 +6940,0 +6941,0 +6942,0 +6943,10 +6944,10 +6945,10 +6946,10 +6947,10 +6948,10 +6949,10 +6950,10 +6951,10 +6952,10 +6953,10 +6954,10 +6955,10 +6956,10 +6957,10 +6958,10 +6959,0 +6960,0 +6961,0 +6962,0 +6963,0 +6964,0 +6965,0 +6966,0 +6967,10 +6968,10 +6969,10 +6970,10 +6971,10 +6972,10 +6973,10 +6974,10 +6975,10 +6976,10 +6977,10 +6978,10 +6979,10 +6980,10 +6981,10 +6982,10 +6983,0 +6984,0 +6985,0 +6986,0 +6987,0 +6988,0 +6989,0 +6990,0 +6991,10 +6992,10 +6993,10 +6994,10 +6995,10 +6996,10 +6997,10 +6998,10 +6999,10 +7000,10 +7001,10 +7002,10 +7003,10 +7004,10 +7005,10 +7006,10 +7007,0 +7008,0 +7009,0 +7010,0 +7011,0 +7012,0 +7013,0 +7014,0 +7015,0 +7016,0 +7017,0 +7018,0 +7019,0 +7020,0 +7021,0 +7022,0 +7023,0 +7024,0 +7025,0 +7026,0 +7027,0 +7028,0 +7029,0 +7030,0 +7031,0 +7032,0 +7033,0 +7034,0 +7035,0 +7036,0 +7037,0 +7038,0 +7039,0 +7040,0 +7041,0 +7042,0 +7043,0 +7044,0 +7045,0 +7046,0 +7047,0 +7048,0 +7049,0 +7050,0 +7051,0 +7052,0 +7053,0 +7054,0 +7055,0 +7056,0 +7057,0 +7058,0 +7059,0 +7060,0 +7061,0 +7062,0 +7063,10 +7064,10 +7065,10 +7066,10 +7067,10 +7068,10 +7069,10 +7070,10 +7071,10 +7072,10 +7073,10 +7074,10 +7075,10 +7076,10 +7077,10 +7078,10 +7079,0 +7080,0 +7081,0 +7082,0 +7083,0 +7084,0 +7085,0 +7086,0 +7087,10 +7088,10 +7089,10 +7090,10 +7091,10 +7092,10 +7093,10 +7094,10 +7095,10 +7096,10 +7097,10 +7098,10 +7099,10 +7100,10 +7101,10 +7102,10 +7103,0 +7104,0 +7105,0 +7106,0 +7107,0 +7108,0 +7109,0 +7110,0 +7111,10 +7112,10 +7113,10 +7114,10 +7115,10 +7116,10 +7117,10 +7118,10 +7119,10 +7120,10 +7121,10 +7122,10 +7123,10 +7124,10 +7125,10 +7126,10 +7127,0 +7128,0 +7129,0 +7130,0 +7131,0 +7132,0 +7133,0 +7134,0 +7135,10 +7136,10 +7137,10 +7138,10 +7139,10 +7140,10 +7141,10 +7142,10 +7143,10 +7144,10 +7145,10 +7146,10 +7147,10 +7148,10 +7149,10 +7150,10 +7151,0 +7152,0 +7153,0 +7154,0 +7155,0 +7156,0 +7157,0 +7158,0 +7159,10 +7160,10 +7161,10 +7162,10 +7163,10 +7164,10 +7165,10 +7166,10 +7167,10 +7168,10 +7169,10 +7170,10 +7171,10 +7172,10 +7173,10 +7174,10 +7175,0 +7176,0 +7177,0 +7178,0 +7179,0 +7180,0 +7181,0 +7182,0 +7183,0 +7184,0 +7185,0 +7186,0 +7187,0 +7188,0 +7189,0 +7190,0 +7191,0 +7192,0 +7193,0 +7194,0 +7195,0 +7196,0 +7197,0 +7198,0 +7199,0 +7200,0 +7201,0 +7202,0 +7203,0 +7204,0 +7205,0 +7206,0 +7207,0 +7208,0 +7209,0 +7210,0 +7211,0 +7212,0 +7213,0 +7214,0 +7215,0 +7216,0 +7217,0 +7218,0 +7219,0 +7220,0 +7221,0 +7222,0 +7223,0 +7224,0 +7225,0 +7226,0 +7227,0 +7228,0 +7229,0 +7230,0 +7231,10 +7232,10 +7233,10 +7234,10 +7235,10 +7236,10 +7237,10 +7238,10 +7239,10 +7240,10 +7241,10 +7242,10 +7243,10 +7244,10 +7245,10 +7246,10 +7247,0 +7248,0 +7249,0 +7250,0 +7251,0 +7252,0 +7253,0 +7254,0 +7255,10 +7256,10 +7257,10 +7258,10 +7259,10 +7260,10 +7261,10 +7262,10 +7263,10 +7264,10 +7265,10 +7266,10 +7267,10 +7268,10 +7269,10 +7270,10 +7271,0 +7272,0 +7273,0 +7274,0 +7275,0 +7276,0 +7277,0 +7278,0 +7279,10 +7280,10 +7281,10 +7282,10 +7283,10 +7284,10 +7285,10 +7286,10 +7287,10 +7288,10 +7289,10 +7290,10 +7291,10 +7292,10 +7293,10 +7294,10 +7295,0 +7296,0 +7297,0 +7298,0 +7299,0 +7300,0 +7301,0 +7302,0 +7303,10 +7304,10 +7305,10 +7306,10 +7307,10 +7308,10 +7309,10 +7310,10 +7311,10 +7312,10 +7313,10 +7314,10 +7315,10 +7316,10 +7317,10 +7318,10 +7319,0 +7320,0 +7321,0 +7322,0 +7323,0 +7324,0 +7325,0 +7326,0 +7327,10 +7328,10 +7329,10 +7330,10 +7331,10 +7332,10 +7333,10 +7334,10 +7335,10 +7336,10 +7337,10 +7338,10 +7339,10 +7340,10 +7341,10 +7342,10 +7343,0 +7344,0 +7345,0 +7346,0 +7347,0 +7348,0 +7349,0 +7350,0 +7351,0 +7352,0 +7353,0 +7354,0 +7355,0 +7356,0 +7357,0 +7358,0 +7359,0 +7360,0 +7361,0 +7362,0 +7363,0 +7364,0 +7365,0 +7366,0 +7367,0 +7368,0 +7369,0 +7370,0 +7371,0 +7372,0 +7373,0 +7374,0 +7375,0 +7376,0 +7377,0 +7378,0 +7379,0 +7380,0 +7381,0 +7382,0 +7383,0 +7384,0 +7385,0 +7386,0 +7387,0 +7388,0 +7389,0 +7390,0 +7391,0 +7392,0 +7393,0 +7394,0 +7395,0 +7396,0 +7397,0 +7398,0 +7399,10 +7400,10 +7401,10 +7402,10 +7403,10 +7404,10 +7405,10 +7406,10 +7407,10 +7408,10 +7409,10 +7410,10 +7411,10 +7412,10 +7413,10 +7414,10 +7415,0 +7416,0 +7417,0 +7418,0 +7419,0 +7420,0 +7421,0 +7422,0 +7423,10 +7424,10 +7425,10 +7426,10 +7427,10 +7428,10 +7429,10 +7430,10 +7431,10 +7432,10 +7433,10 +7434,10 +7435,10 +7436,10 +7437,10 +7438,10 +7439,0 +7440,0 +7441,0 +7442,0 +7443,0 +7444,0 +7445,0 +7446,0 +7447,10 +7448,10 +7449,10 +7450,10 +7451,10 +7452,10 +7453,10 +7454,10 +7455,10 +7456,10 +7457,10 +7458,10 +7459,10 +7460,10 +7461,10 +7462,10 +7463,0 +7464,0 +7465,0 +7466,0 +7467,0 +7468,0 +7469,0 +7470,0 +7471,10 +7472,10 +7473,10 +7474,10 +7475,10 +7476,10 +7477,10 +7478,10 +7479,10 +7480,10 +7481,10 +7482,10 +7483,10 +7484,10 +7485,10 +7486,10 +7487,0 +7488,0 +7489,0 +7490,0 +7491,0 +7492,0 +7493,0 +7494,0 +7495,10 +7496,10 +7497,10 +7498,10 +7499,10 +7500,10 +7501,10 +7502,10 +7503,10 +7504,10 +7505,10 +7506,10 +7507,10 +7508,10 +7509,10 +7510,10 +7511,0 +7512,0 +7513,0 +7514,0 +7515,0 +7516,0 +7517,0 +7518,0 +7519,0 +7520,0 +7521,0 +7522,0 +7523,0 +7524,0 +7525,0 +7526,0 +7527,0 +7528,0 +7529,0 +7530,0 +7531,0 +7532,0 +7533,0 +7534,0 +7535,0 +7536,0 +7537,0 +7538,0 +7539,0 +7540,0 +7541,0 +7542,0 +7543,0 +7544,0 +7545,0 +7546,0 +7547,0 +7548,0 +7549,0 +7550,0 +7551,0 +7552,0 +7553,0 +7554,0 +7555,0 +7556,0 +7557,0 +7558,0 +7559,0 +7560,0 +7561,0 +7562,0 +7563,0 +7564,0 +7565,0 +7566,0 +7567,10 +7568,10 +7569,10 +7570,10 +7571,10 +7572,10 +7573,10 +7574,10 +7575,10 +7576,10 +7577,10 +7578,10 +7579,10 +7580,10 +7581,10 +7582,10 +7583,0 +7584,0 +7585,0 +7586,0 +7587,0 +7588,0 +7589,0 +7590,0 +7591,10 +7592,10 +7593,10 +7594,10 +7595,10 +7596,10 +7597,10 +7598,10 +7599,10 +7600,10 +7601,10 +7602,10 +7603,10 +7604,10 +7605,10 +7606,10 +7607,0 +7608,0 +7609,0 +7610,0 +7611,0 +7612,0 +7613,0 +7614,0 +7615,10 +7616,10 +7617,10 +7618,10 +7619,10 +7620,10 +7621,10 +7622,10 +7623,10 +7624,10 +7625,10 +7626,10 +7627,10 +7628,10 +7629,10 +7630,10 +7631,0 +7632,0 +7633,0 +7634,0 +7635,0 +7636,0 +7637,0 +7638,0 +7639,10 +7640,10 +7641,10 +7642,10 +7643,10 +7644,10 +7645,10 +7646,10 +7647,10 +7648,10 +7649,10 +7650,10 +7651,10 +7652,10 +7653,10 +7654,10 +7655,0 +7656,0 +7657,0 +7658,0 +7659,0 +7660,0 +7661,0 +7662,0 +7663,10 +7664,10 +7665,10 +7666,10 +7667,10 +7668,10 +7669,10 +7670,10 +7671,10 +7672,10 +7673,10 +7674,10 +7675,10 +7676,10 +7677,10 +7678,10 +7679,0 +7680,0 +7681,0 +7682,0 +7683,0 +7684,0 +7685,0 +7686,0 +7687,0 +7688,0 +7689,0 +7690,0 +7691,0 +7692,0 +7693,0 +7694,0 +7695,0 +7696,0 +7697,0 +7698,0 +7699,0 +7700,0 +7701,0 +7702,0 +7703,0 +7704,0 +7705,0 +7706,0 +7707,0 +7708,0 +7709,0 +7710,0 +7711,0 +7712,0 +7713,0 +7714,0 +7715,0 +7716,0 +7717,0 +7718,0 +7719,0 +7720,0 +7721,0 +7722,0 +7723,0 +7724,0 +7725,0 +7726,0 +7727,0 +7728,0 +7729,0 +7730,0 +7731,0 +7732,0 +7733,0 +7734,0 +7735,10 +7736,10 +7737,10 +7738,10 +7739,10 +7740,10 +7741,10 +7742,10 +7743,10 +7744,10 +7745,10 +7746,10 +7747,10 +7748,10 +7749,10 +7750,10 +7751,0 +7752,0 +7753,0 +7754,0 +7755,0 +7756,0 +7757,0 +7758,0 +7759,10 +7760,10 +7761,10 +7762,10 +7763,10 +7764,10 +7765,10 +7766,10 +7767,10 +7768,10 +7769,10 +7770,10 +7771,10 +7772,10 +7773,10 +7774,10 +7775,0 +7776,0 +7777,0 +7778,0 +7779,0 +7780,0 +7781,0 +7782,0 +7783,10 +7784,10 +7785,10 +7786,10 +7787,10 +7788,10 +7789,10 +7790,10 +7791,10 +7792,10 +7793,10 +7794,10 +7795,10 +7796,10 +7797,10 +7798,10 +7799,0 +7800,0 +7801,0 +7802,0 +7803,0 +7804,0 +7805,0 +7806,0 +7807,10 +7808,10 +7809,10 +7810,10 +7811,10 +7812,10 +7813,10 +7814,10 +7815,10 +7816,10 +7817,10 +7818,10 +7819,10 +7820,10 +7821,10 +7822,10 +7823,0 +7824,0 +7825,0 +7826,0 +7827,0 +7828,0 +7829,0 +7830,0 +7831,10 +7832,10 +7833,10 +7834,10 +7835,10 +7836,10 +7837,10 +7838,10 +7839,10 +7840,10 +7841,10 +7842,10 +7843,10 +7844,10 +7845,10 +7846,10 +7847,0 +7848,0 +7849,0 +7850,0 +7851,0 +7852,0 +7853,0 +7854,0 +7855,0 +7856,0 +7857,0 +7858,0 +7859,0 +7860,0 +7861,0 +7862,0 +7863,0 +7864,0 +7865,0 +7866,0 +7867,0 +7868,0 +7869,0 +7870,0 +7871,0 +7872,0 +7873,0 +7874,0 +7875,0 +7876,0 +7877,0 +7878,0 +7879,0 +7880,0 +7881,0 +7882,0 +7883,0 +7884,0 +7885,0 +7886,0 +7887,0 +7888,0 +7889,0 +7890,0 +7891,0 +7892,0 +7893,0 +7894,0 +7895,0 +7896,0 +7897,0 +7898,0 +7899,0 +7900,0 +7901,0 +7902,0 +7903,10 +7904,10 +7905,10 +7906,10 +7907,10 +7908,10 +7909,10 +7910,10 +7911,10 +7912,10 +7913,10 +7914,10 +7915,10 +7916,10 +7917,10 +7918,10 +7919,0 +7920,0 +7921,0 +7922,0 +7923,0 +7924,0 +7925,0 +7926,0 +7927,10 +7928,10 +7929,10 +7930,10 +7931,10 +7932,10 +7933,10 +7934,10 +7935,10 +7936,10 +7937,10 +7938,10 +7939,10 +7940,10 +7941,10 +7942,10 +7943,0 +7944,0 +7945,0 +7946,0 +7947,0 +7948,0 +7949,0 +7950,0 +7951,10 +7952,10 +7953,10 +7954,10 +7955,10 +7956,10 +7957,10 +7958,10 +7959,10 +7960,10 +7961,10 +7962,10 +7963,10 +7964,10 +7965,10 +7966,10 +7967,0 +7968,0 +7969,0 +7970,0 +7971,0 +7972,0 +7973,0 +7974,0 +7975,10 +7976,10 +7977,10 +7978,10 +7979,10 +7980,10 +7981,10 +7982,10 +7983,10 +7984,10 +7985,10 +7986,10 +7987,10 +7988,10 +7989,10 +7990,10 +7991,0 +7992,0 +7993,0 +7994,0 +7995,0 +7996,0 +7997,0 +7998,0 +7999,10 +8000,10 +8001,10 +8002,10 +8003,10 +8004,10 +8005,10 +8006,10 +8007,10 +8008,10 +8009,10 +8010,10 +8011,10 +8012,10 +8013,10 +8014,10 +8015,0 +8016,0 +8017,0 +8018,0 +8019,0 +8020,0 +8021,0 +8022,0 +8023,0 +8024,0 +8025,0 +8026,0 +8027,0 +8028,0 +8029,0 +8030,0 +8031,0 +8032,0 +8033,0 +8034,0 +8035,0 +8036,0 +8037,0 +8038,0 +8039,0 +8040,0 +8041,0 +8042,0 +8043,0 +8044,0 +8045,0 +8046,0 +8047,0 +8048,0 +8049,0 +8050,0 +8051,0 +8052,0 +8053,0 +8054,0 +8055,0 +8056,0 +8057,0 +8058,0 +8059,0 +8060,0 +8061,0 +8062,0 +8063,0 +8064,0 +8065,0 +8066,0 +8067,0 +8068,0 +8069,0 +8070,0 +8071,10 +8072,10 +8073,10 +8074,10 +8075,10 +8076,10 +8077,10 +8078,10 +8079,10 +8080,10 +8081,10 +8082,10 +8083,10 +8084,10 +8085,10 +8086,10 +8087,0 +8088,0 +8089,0 +8090,0 +8091,0 +8092,0 +8093,0 +8094,0 +8095,10 +8096,10 +8097,10 +8098,10 +8099,10 +8100,10 +8101,10 +8102,10 +8103,10 +8104,10 +8105,10 +8106,10 +8107,10 +8108,10 +8109,10 +8110,10 +8111,0 +8112,0 +8113,0 +8114,0 +8115,0 +8116,0 +8117,0 +8118,0 +8119,10 +8120,10 +8121,10 +8122,10 +8123,10 +8124,10 +8125,10 +8126,10 +8127,10 +8128,10 +8129,10 +8130,10 +8131,10 +8132,10 +8133,10 +8134,10 +8135,0 +8136,0 +8137,0 +8138,0 +8139,0 +8140,0 +8141,0 +8142,0 +8143,10 +8144,10 +8145,10 +8146,10 +8147,10 +8148,10 +8149,10 +8150,10 +8151,10 +8152,10 +8153,10 +8154,10 +8155,10 +8156,10 +8157,10 +8158,10 +8159,0 +8160,0 +8161,0 +8162,0 +8163,0 +8164,0 +8165,0 +8166,0 +8167,10 +8168,10 +8169,10 +8170,10 +8171,10 +8172,10 +8173,10 +8174,10 +8175,10 +8176,10 +8177,10 +8178,10 +8179,10 +8180,10 +8181,10 +8182,10 +8183,0 +8184,0 +8185,0 +8186,0 +8187,0 +8188,0 +8189,0 +8190,0 +8191,0 +8192,0 +8193,0 +8194,0 +8195,0 +8196,0 +8197,0 +8198,0 +8199,0 +8200,0 +8201,0 +8202,0 +8203,0 +8204,0 +8205,0 +8206,0 +8207,0 +8208,0 +8209,0 +8210,0 +8211,0 +8212,0 +8213,0 +8214,0 +8215,0 +8216,0 +8217,0 +8218,0 +8219,0 +8220,0 +8221,0 +8222,0 +8223,0 +8224,0 +8225,0 +8226,0 +8227,0 +8228,0 +8229,0 +8230,0 +8231,0 +8232,0 +8233,0 +8234,0 +8235,0 +8236,0 +8237,0 +8238,0 +8239,10 +8240,10 +8241,10 +8242,10 +8243,10 +8244,10 +8245,10 +8246,10 +8247,10 +8248,10 +8249,10 +8250,10 +8251,10 +8252,10 +8253,10 +8254,10 +8255,0 +8256,0 +8257,0 +8258,0 +8259,0 +8260,0 +8261,0 +8262,0 +8263,10 +8264,10 +8265,10 +8266,10 +8267,10 +8268,10 +8269,10 +8270,10 +8271,10 +8272,10 +8273,10 +8274,10 +8275,10 +8276,10 +8277,10 +8278,10 +8279,0 +8280,0 +8281,0 +8282,0 +8283,0 +8284,0 +8285,0 +8286,0 +8287,10 +8288,10 +8289,10 +8290,10 +8291,10 +8292,10 +8293,10 +8294,10 +8295,10 +8296,10 +8297,10 +8298,10 +8299,10 +8300,10 +8301,10 +8302,10 +8303,0 +8304,0 +8305,0 +8306,0 +8307,0 +8308,0 +8309,0 +8310,0 +8311,10 +8312,10 +8313,10 +8314,10 +8315,10 +8316,10 +8317,10 +8318,10 +8319,10 +8320,10 +8321,10 +8322,10 +8323,10 +8324,10 +8325,10 +8326,10 +8327,0 +8328,0 +8329,0 +8330,0 +8331,0 +8332,0 +8333,0 +8334,0 +8335,10 +8336,10 +8337,10 +8338,10 +8339,10 +8340,10 +8341,10 +8342,10 +8343,10 +8344,10 +8345,10 +8346,10 +8347,10 +8348,10 +8349,10 +8350,10 +8351,0 +8352,0 +8353,0 +8354,0 +8355,0 +8356,0 +8357,0 +8358,0 +8359,0 +8360,0 +8361,0 +8362,0 +8363,0 +8364,0 +8365,0 +8366,0 +8367,0 +8368,0 +8369,0 +8370,0 +8371,0 +8372,0 +8373,0 +8374,0 +8375,0 +8376,0 +8377,0 +8378,0 +8379,0 +8380,0 +8381,0 +8382,0 +8383,0 +8384,0 +8385,0 +8386,0 +8387,0 +8388,0 +8389,0 +8390,0 +8391,0 +8392,0 +8393,0 +8394,0 +8395,0 +8396,0 +8397,0 +8398,0 +8399,0 +8400,0 +8401,0 +8402,0 +8403,0 +8404,0 +8405,0 +8406,0 +8407,10 +8408,10 +8409,10 +8410,10 +8411,10 +8412,10 +8413,10 +8414,10 +8415,10 +8416,10 +8417,10 +8418,10 +8419,10 +8420,10 +8421,10 +8422,10 +8423,0 +8424,0 +8425,0 +8426,0 +8427,0 +8428,0 +8429,0 +8430,0 +8431,10 +8432,10 +8433,10 +8434,10 +8435,10 +8436,10 +8437,10 +8438,10 +8439,10 +8440,10 +8441,10 +8442,10 +8443,10 +8444,10 +8445,10 +8446,10 +8447,0 +8448,0 +8449,0 +8450,0 +8451,0 +8452,0 +8453,0 +8454,0 +8455,10 +8456,10 +8457,10 +8458,10 +8459,10 +8460,10 +8461,10 +8462,10 +8463,10 +8464,10 +8465,10 +8466,10 +8467,10 +8468,10 +8469,10 +8470,10 +8471,0 +8472,0 +8473,0 +8474,0 +8475,0 +8476,0 +8477,0 +8478,0 +8479,10 +8480,10 +8481,10 +8482,10 +8483,10 +8484,10 +8485,10 +8486,10 +8487,10 +8488,10 +8489,10 +8490,10 +8491,10 +8492,10 +8493,10 +8494,10 +8495,0 +8496,0 +8497,0 +8498,0 +8499,0 +8500,0 +8501,0 +8502,0 +8503,10 +8504,10 +8505,10 +8506,10 +8507,10 +8508,10 +8509,10 +8510,10 +8511,10 +8512,10 +8513,10 +8514,10 +8515,10 +8516,10 +8517,10 +8518,10 +8519,0 +8520,0 +8521,0 +8522,0 +8523,0 +8524,0 +8525,0 +8526,0 +8527,0 +8528,0 +8529,0 +8530,0 +8531,0 +8532,0 +8533,0 +8534,0 +8535,0 +8536,0 +8537,0 +8538,0 +8539,0 +8540,0 +8541,0 +8542,0 +8543,0 +8544,0 +8545,0 +8546,0 +8547,0 +8548,0 +8549,0 +8550,0 +8551,0 +8552,0 +8553,0 +8554,0 +8555,0 +8556,0 +8557,0 +8558,0 +8559,0 +8560,0 +8561,0 +8562,0 +8563,0 +8564,0 +8565,0 +8566,0 +8567,0 +8568,0 +8569,0 +8570,0 +8571,0 +8572,0 +8573,0 +8574,0 +8575,10 +8576,10 +8577,10 +8578,10 +8579,10 +8580,10 +8581,10 +8582,10 +8583,10 +8584,10 +8585,10 +8586,10 +8587,10 +8588,10 +8589,10 +8590,10 +8591,0 +8592,0 +8593,0 +8594,0 +8595,0 +8596,0 +8597,0 +8598,0 +8599,10 +8600,10 +8601,10 +8602,10 +8603,10 +8604,10 +8605,10 +8606,10 +8607,10 +8608,10 +8609,10 +8610,10 +8611,10 +8612,10 +8613,10 +8614,10 +8615,0 +8616,0 +8617,0 +8618,0 +8619,0 +8620,0 +8621,0 +8622,0 +8623,10 +8624,10 +8625,10 +8626,10 +8627,10 +8628,10 +8629,10 +8630,10 +8631,10 +8632,10 +8633,10 +8634,10 +8635,10 +8636,10 +8637,10 +8638,10 +8639,0 +8640,0 +8641,0 +8642,0 +8643,0 +8644,0 +8645,0 +8646,0 +8647,10 +8648,10 +8649,10 +8650,10 +8651,10 +8652,10 +8653,10 +8654,10 +8655,10 +8656,10 +8657,10 +8658,10 +8659,10 +8660,10 +8661,10 +8662,10 +8663,0 +8664,0 +8665,0 +8666,0 +8667,0 +8668,0 +8669,0 +8670,0 +8671,10 +8672,10 +8673,10 +8674,10 +8675,10 +8676,10 +8677,10 +8678,10 +8679,10 +8680,10 +8681,10 +8682,10 +8683,10 +8684,10 +8685,10 +8686,10 +8687,0 +8688,0 +8689,0 +8690,0 +8691,0 +8692,0 +8693,0 +8694,0 +8695,0 +8696,0 +8697,0 +8698,0 +8699,0 +8700,0 +8701,0 +8702,0 +8703,0 +8704,0 +8705,0 +8706,0 +8707,0 +8708,0 +8709,0 +8710,0 +8711,0 +8712,0 +8713,0 +8714,0 +8715,0 +8716,0 +8717,0 +8718,0 +8719,0 +8720,0 +8721,0 +8722,0 +8723,0 +8724,0 +8725,0 +8726,0 +8727,0 +8728,0 +8729,0 +8730,0 +8731,0 +8732,0 +8733,0 +8734,0 +8735,0 +8736,0 +8737,0 +8738,0 +8739,0 +8740,0 +8741,0 +8742,0 +8743,10 +8744,10 +8745,10 +8746,10 +8747,10 +8748,10 +8749,10 +8750,10 +8751,10 +8752,10 +8753,10 +8754,10 +8755,10 +8756,10 +8757,10 +8758,10 +8759,0 +8760,0 \ No newline at end of file diff --git a/test/runtests.jl b/test/runtests.jl index 3123b25e5..05ec07cc3 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -3112,7 +3112,84 @@ else # run HiGHS tests end @test results["ElectricTariff"]["year_one_demand_cost_before_tax"] ≈ demand_charge_expected atol=1E-6 end + end + + @testset "Align load profiles based on load year" begin + """ + Common use case: ElectricLoad.loads_kw is input with specific year, but heating and/or cooling is + simulated with either a schedule-based FlatLoad, or b) CRB type with annual or monthly energy + This test confirms that the simulated FlatLoad type and CRB are shifted to start on Monday for 2024 + """ + + input_data = JSON.parsefile("./scenarios/load_year_align.json") + year = 2024 + # ElectricLoad.loads_kw is 2024, and heating and cooling loads are shifted to align + # Use a FlatLoad_16_5 shifted to 2024 (Monday start) with the web tool's custom load builder + loads_kw = readdlm("./data/10 kW FlatLoad_16_5 2024.csv", ',', Float64, header=true)[1][:, 2] + input_data["ElectricLoad"] = Dict("loads_kw" => loads_kw, "year" => year) + + s = Scenario(input_data) + inputs = REoptInputs(s) + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "mip_rel_gap" => 0.01, "output_flag" => false, "log_to_console" => false)) + results = run_reopt(m, inputs) + + electric_load = results["ElectricLoad"]["load_series_kw"] + heating_load = results["HeatingLoad"]["space_heating_boiler_fuel_load_series_mmbtu_per_hour"] + cooling_load = results["CoolingLoad"]["load_series_ton"] + + count_misaligned_heating = sum((electric_load .> 0) .& (heating_load .== 0)) + count_misaligned_cooling = sum((electric_load .> 0) .& (cooling_load .== 0)) + + @test count_misaligned_heating == 0 + @test count_misaligned_cooling == 0 + + # Simulated load with year input (e.g. when user inputs custom electric load profile but wants to see aligned simulated heating load) + d_sim_load = Dict([("latitude", input_data["Site"]["latitude"]), + ("longitude", input_data["Site"]["longitude"]), + ("load_type", "space_heating"), # since annual_tonhour is not given + ("doe_reference_name", "FlatLoad_16_5"), + ("annual_mmbtu", input_data["SpaceHeatingLoad"]["annual_mmbtu"]), + ("year", year) + ]) + sim_load_response = simulated_load(d_sim_load) + + @test sim_load_response["loads_mmbtu_per_hour"] ≈ round.(heating_load, digits=3) + + # If a non-2017 year is input with a CRB electric load, make sure that + # electric, heating, and cooling loads are aligned by shifting as expected + norm_data = Dict() + city = "SanFrancisco" + buildingtype = "Hospital" + for type in ["electric", "space_heating", "cooling"] + lib_path = joinpath(@__DIR__, "..", "data", "load_profiles", type) + profile_path = joinpath(lib_path, string("crb8760_norm_" * city * "_" * buildingtype * ".dat")) + normalized_profile = vec(readdlm(profile_path, '\n', Float64, '\n')) + norm_data[type] = normalized_profile + end + + input_data["ElectricLoad"] = Dict("doe_reference_name" => buildingtype, "annual_kwh" => 10000, "year" => year) + input_data["SpaceHeatingLoad"] = Dict("doe_reference_name" => buildingtype, "annual_mmbtu" => 10000) + input_data["CoolingLoad"] = Dict("doe_reference_name" => buildingtype) + + s = Scenario(input_data) + inputs = REoptInputs(s) + + first_day_of_year = 1 # Monday start day for 2024 + expected_shift = first_day_of_year - 7 # 7 for Sunday start on 2017, 1 for Monday, 2 for Tuesday etc., so if start day is Sunday there is no shift + + elec_orig_shifted = circshift(norm_data["electric"], 24*expected_shift) + heat_orig_shifted = circshift(norm_data["space_heating"], 24*expected_shift) + cool_orig_shifted = circshift(norm_data["cooling"], 24*expected_shift) + + elec_load_normalized = s.electric_load.loads_kw / sum(s.electric_load.loads_kw) + heat_load_normalized = s.space_heating_load.loads_kw / sum(s.space_heating_load.loads_kw) + cooling_load_normalized = s.cooling_load.loads_kw_thermal / sum(s.cooling_load.loads_kw_thermal) + + @test elec_orig_shifted ≈ elec_load_normalized + @test heat_orig_shifted ≈ heat_load_normalized + @test cool_orig_shifted ≈ cooling_load_normalized end + end end \ No newline at end of file diff --git a/test/scenarios/load_year_align.json b/test/scenarios/load_year_align.json new file mode 100644 index 000000000..4543a34ba --- /dev/null +++ b/test/scenarios/load_year_align.json @@ -0,0 +1,29 @@ +{ + "Site": { + "latitude": 37.78, + "longitude": -122.45 + }, + "ElectricLoad": {}, + "SpaceHeatingLoad": { + "doe_reference_name": "FlatLoad_16_5", + "annual_mmbtu": 10000 + }, + "CoolingLoad": { + "doe_reference_name": "Hospital" + }, + "ExistingBoiler": { + "fuel_cost_per_mmbtu": 9.0, + "efficiency": 1.0 + }, + "Financial": { + "elec_cost_escalation_rate_fraction": 0.0, + "om_cost_escalation_rate_fraction": 0.0, + "offtaker_discount_rate_fraction": 0.0, + "offtaker_tax_rate_fraction": 0.0, + "existing_boiler_fuel_cost_escalation_rate_fraction": 0.0 + }, + "ElectricTariff": { + "blended_annual_energy_rate": 0.1, + "blended_annual_demand_rate": 0.0 + } +} \ No newline at end of file From 5384b5fb2526f9ddf2958c267c200173b8c2ac95 Mon Sep 17 00:00:00 2001 From: Bill Becker Date: Thu, 9 Jan 2025 09:27:02 -0700 Subject: [PATCH 13/25] Update changelog for load align fix --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 70d6f689e..a09335a71 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,9 @@ Classify the change according to the following categories: ### Deprecated ### Removed +## load-year-align +### Fixed +- Align heating and cooling load profiles based on electric load year input, if using custom electric load profile with simulated (CRB or schedule-based flatloads) heating/cooling loads ## leap-year-fix ### Fixed From be8197c222fb8b2d31669eb27081f1a326dbe580 Mon Sep 17 00:00:00 2001 From: adfarth Date: Thu, 9 Jan 2025 13:44:17 -0700 Subject: [PATCH 14/25] small text updates --- src/core/electric_load.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/electric_load.jl b/src/core/electric_load.jl index a2a2ce09c..5b9cc2706 100644 --- a/src/core/electric_load.jl +++ b/src/core/electric_load.jl @@ -3,12 +3,12 @@ `ElectricLoad` is a required REopt input with the following keys and default values: ```julia loads_kw::Array{<:Real,1} = Real[], - normalize_and_scale_load_profile_input::Bool = false, # Takes loads_kw and normalizes and scales it to annual or monthly energy + normalize_and_scale_load_profile_input::Bool = false, # Takes loads_kw and normalizes and scales it to annual_kwh or monthly_totals_kwh path_to_csv::String = "", # for csv containing loads_kw doe_reference_name::String = "", blended_doe_reference_names::Array{String, 1} = String[], blended_doe_reference_percents::Array{<:Real,1} = Real[], # Values should be between 0-1 and sum to 1.0 - year::Int = doe_reference_name ≠ "" || blended_doe_reference_names ≠ String[] ? 2017 : 2022, # used in ElectricTariff to align rate schedule with weekdays/weekends. DOE CRB profiles must use 2017. If providing load data, specify year of data. + year::Int = doe_reference_name ≠ "" || blended_doe_reference_names ≠ String[] ? 2017 : 2022, # used in ElectricTariff to align rate schedule with weekdays/weekends. DOE CRB profiles defaults to using 2017. If providing load data, specify year of data. city::String = "", annual_kwh::Union{Real, Nothing} = nothing, monthly_totals_kwh::Array{<:Real,1} = Real[], From 7af1601a2cd8bbb3d4c66ad2c5a9ffb84a6eb11b Mon Sep 17 00:00:00 2001 From: Bill Becker Date: Thu, 9 Jan 2025 22:48:51 -0700 Subject: [PATCH 15/25] Require year input, in particular with ElectricLoad.loads_kw input Also made year required for HeatingLoad and CoolingLoad constructors with their equivalent timeseries load profile input, but that will typically get passed in from the ElectricLoad.year, if missing. --- src/core/electric_load.jl | 9 ++++++--- src/core/heating_cooling_loads.jl | 18 ++++++++++++------ src/core/scenario.jl | 13 +++++++++---- test/runtests.jl | 9 +++++++-- 4 files changed, 34 insertions(+), 15 deletions(-) diff --git a/src/core/electric_load.jl b/src/core/electric_load.jl index 5b9cc2706..7d007543d 100644 --- a/src/core/electric_load.jl +++ b/src/core/electric_load.jl @@ -8,7 +8,7 @@ doe_reference_name::String = "", blended_doe_reference_names::Array{String, 1} = String[], blended_doe_reference_percents::Array{<:Real,1} = Real[], # Values should be between 0-1 and sum to 1.0 - year::Int = doe_reference_name ≠ "" || blended_doe_reference_names ≠ String[] ? 2017 : 2022, # used in ElectricTariff to align rate schedule with weekdays/weekends. DOE CRB profiles defaults to using 2017. If providing load data, specify year of data. + year::Union{Int, Nothing} = doe_reference_name ≠ "" || blended_doe_reference_names ≠ String[] ? 2017 : nothing, # used in ElectricTariff to align rate schedule with weekdays/weekends. DOE CRB profiles defaults to using 2017. If providing load data, specify year of data. city::String = "", annual_kwh::Union{Real, Nothing} = nothing, monthly_totals_kwh::Array{<:Real,1} = Real[], @@ -92,7 +92,7 @@ mutable struct ElectricLoad # mutable to adjust (critical_)loads_kw based off o doe_reference_name::String = "", blended_doe_reference_names::Array{String, 1} = String[], blended_doe_reference_percents::Array{<:Real,1} = Real[], - year::Int = doe_reference_name ≠ "" || blended_doe_reference_names ≠ String[] ? 2017 : 2022, # used in ElectricTariff to align rate schedule with weekdays/weekends. DOE CRB profiles must use 2017. If providing load data, specify year of data. + year::Union{Int, Nothing} = doe_reference_name ≠ "" || blended_doe_reference_names ≠ String[] ? 2017 : nothing, # used in ElectricTariff to align rate schedule with weekdays/weekends. DOE CRB profiles 2017 by default. If providing load data, specify year of data. city::String = "", annual_kwh::Union{Real, Nothing} = nothing, monthly_totals_kwh::Array{<:Real,1} = Real[], @@ -128,6 +128,10 @@ mutable struct ElectricLoad # mutable to adjust (critical_)loads_kw based off o end end + if isnothing(year) + throw(@error("Must provide the year when using loads_kw input.")) + end + if length(loads_kw) > 0 && !normalize_and_scale_load_profile_input if !(length(loads_kw) / time_steps_per_hour ≈ 8760) @@ -143,7 +147,6 @@ mutable struct ElectricLoad # mutable to adjust (critical_)loads_kw based off o end # Using dummy values for all unneeded location and building type arguments for normalizing and scaling load profile input normalized_profile = loads_kw ./ sum(loads_kw) - # Need year still mainly for loads_kw = BuiltInElectricLoad("Chicago", "LargeOffice", 41.8333, -88.0616, year, annual_kwh, monthly_totals_kwh, normalized_profile) elseif !isempty(path_to_csv) diff --git a/src/core/heating_cooling_loads.jl b/src/core/heating_cooling_loads.jl index da60e6ad9..623fdc8b2 100644 --- a/src/core/heating_cooling_loads.jl +++ b/src/core/heating_cooling_loads.jl @@ -10,15 +10,12 @@ blended_industrial_reference_names::Array{String, 1} = String[], # For ProcessHeatLoad blended_industrial_reference_percents::Array{<:Real,1} = Real[], # For ProcessHeatLoad city::String = "", - year::Int = doe_reference_name ≠ "" || blended_doe_reference_names ≠ String[] ? 2017 : 2022, # CRB profiles are 2017 by default. If providing load profile, specify year of data. + year::Union{Int, Nothing} = doe_reference_name ≠ "" || blended_doe_reference_names ≠ String[] ? 2017 : nothing, # CRB profiles are 2017 by default. If providing load profile, specify year of data. annual_mmbtu::Union{Real, Nothing} = nothing, monthly_mmbtu::Array{<:Real,1} = Real[], addressable_load_fraction::Any = 1.0, # Fraction of input fuel load which is addressable by heating technologies. Can be a scalar or vector with length aligned with use of monthly_mmbtu or fuel_loads_mmbtu_per_hour. fuel_loads_mmbtu_per_hour::Array{<:Real,1} = Real[], # Vector of space heating fuel loads [mmbtu/hr]. Length must equal 8760 * `Settings.time_steps_per_hour` normalize_and_scale_load_profile_input::Bool = false, # Takes fuel_loads_mmbtu_per_hour and normalizes and scales it to annual or monthly energy - time_steps_per_hour::Int = 1, # corresponding to `fuel_loads_mmbtu_per_hour` - latitude::Real = 0.0, - longitude::Real = 0.0, existing_boiler_efficiency::Real = NaN ``` @@ -54,7 +51,7 @@ function HeatingLoad(; blended_industrial_reference_names::Array{String, 1} = String[], blended_industrial_reference_percents::Array{<:Real,1} = Real[], city::String = "", - year::Int = doe_reference_name ≠ "" || blended_doe_reference_names ≠ String[] ? 2017 : 2022, # CRB profiles are 2017 by default. If providing load profile, specify year of data. + year::Union{Int, Nothing} = doe_reference_name ≠ "" || blended_doe_reference_names ≠ String[] ? 2017 : nothing, # CRB profiles are 2017 by default. If providing load profile, specify year of data. annual_mmbtu::Union{Real, Nothing} = nothing, monthly_mmbtu::Array{<:Real,1} = Real[], addressable_load_fraction::Any = 1.0, @@ -84,6 +81,10 @@ function HeatingLoad(; throw(@error("load_type must be 'space_heating', 'domestic_hot_water', or 'process_heat'")) end + if isnothing(year) + throw(@error("Must provide the year when using fuel_loads_mmbtu_per_hour input.")) + end + if length(addressable_load_fraction) > 1 if !isempty(fuel_loads_mmbtu_per_hour) && length(addressable_load_fraction) != length(fuel_loads_mmbtu_per_hour) throw(@error("`addressable_load_fraction` must be a scalar or an array of length `fuel_loads_mmbtu_per_hour`")) @@ -298,7 +299,7 @@ struct CoolingLoad blended_doe_reference_names::Array{String, 1} = String[], blended_doe_reference_percents::Array{<:Real,1} = Real[], city::String = "", - year::Int = doe_reference_name ≠ "" || blended_doe_reference_names ≠ String[] ? 2017 : 2022, # CRB profiles are 2017 by default. If providing load profile, specify year of data. + year::Union{Int, Nothing} = doe_reference_name ≠ "" || blended_doe_reference_names ≠ String[] ? 2017 : nothing, # CRB profiles are 2017 by default. If providing load profile, specify year of data. annual_tonhour::Union{Real, Nothing} = nothing, monthly_tonhour::Array{<:Real,1} = Real[], thermal_loads_ton::Array{<:Real,1} = Real[], # Vector of cooling thermal loads [ton] = [short ton hours/hour]. Length must equal 8760 * `Settings.time_steps_per_hour` @@ -312,6 +313,11 @@ struct CoolingLoad existing_chiller_cop::Union{Real, Nothing} = nothing, # Passed from ExistingChiller or set to a default existing_chiller_max_thermal_factor_on_peak_load::Union{Real, Nothing}= nothing # Passed from ExistingChiller or set to a default ) + + if isnothing(year) + throw(@error("Must provide the year when using inputs of thermal_loads_ton or per_time_step_fractions_of_electric_load.")) + end + # determine the timeseries of loads_kw_thermal loads_kw_thermal = nothing loads_kw = nothing diff --git a/src/core/scenario.jl b/src/core/scenario.jl index 46f4bd4f3..4954aa469 100644 --- a/src/core/scenario.jl +++ b/src/core/scenario.jl @@ -231,11 +231,13 @@ function Scenario(d::Dict; flex_hvac_from_json=false) ) max_heat_demand_kw = maximum(dhw_load.loads_kw) else + # TODO need to add a dummy year here or else will error dhw_load = HeatingLoad(; load_type = "domestic_hot_water", fuel_loads_mmbtu_per_hour=zeros(8760*settings.time_steps_per_hour), time_steps_per_hour=settings.time_steps_per_hour, - existing_boiler_efficiency = EXISTING_BOILER_EFFICIENCY + existing_boiler_efficiency = EXISTING_BOILER_EFFICIENCY, + year=electric_load.year ) end @@ -256,7 +258,8 @@ function Scenario(d::Dict; flex_hvac_from_json=false) load_type = "space_heating", fuel_loads_mmbtu_per_hour=zeros(8760*settings.time_steps_per_hour), time_steps_per_hour=settings.time_steps_per_hour, - existing_boiler_efficiency = EXISTING_BOILER_EFFICIENCY + existing_boiler_efficiency = EXISTING_BOILER_EFFICIENCY, + year=electric_load.year ) end @@ -277,7 +280,8 @@ function Scenario(d::Dict; flex_hvac_from_json=false) load_type = "process_heat", fuel_loads_mmbtu_per_hour=zeros(8760*settings.time_steps_per_hour), time_steps_per_hour=settings.time_steps_per_hour, - existing_boiler_efficiency = EXISTING_BOILER_EFFICIENCY + existing_boiler_efficiency = EXISTING_BOILER_EFFICIENCY, + year=electric_load.year ) end @@ -438,7 +442,8 @@ function Scenario(d::Dict; flex_hvac_from_json=false) else cooling_load = CoolingLoad(; thermal_loads_ton=zeros(8760*settings.time_steps_per_hour), - time_steps_per_hour=settings.time_steps_per_hour + time_steps_per_hour=settings.time_steps_per_hour, + year=electric_load.year ) end diff --git a/test/runtests.jl b/test/runtests.jl index 05ec07cc3..cb37a8f1e 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -197,7 +197,7 @@ else # run HiGHS tests @testset "Fifteen minute load" begin d = JSON.parsefile("scenarios/no_techs.json") - d["ElectricLoad"] = Dict("loads_kw" => repeat([1.0], 35040)) + d["ElectricLoad"] = Dict("loads_kw" => repeat([1.0], 35040), "year" => 2017) d["Settings"] = Dict("time_steps_per_hour" => 4) model = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) results = run_reopt(model, d) @@ -867,6 +867,7 @@ else # run HiGHS tests data = JSON.parsefile("./scenarios/chp_supplementary_firing.json") data["CHP"]["supplementary_firing_capital_cost_per_kw"] = 10000 data["ElectricLoad"]["loads_kw"] = repeat([800.0], 8760) + data["ElectricLoad"]["year"] = 2022 data["DomesticHotWaterLoad"]["fuel_loads_mmbtu_per_hour"] = repeat([6.0], 8760) data["SpaceHeatingLoad"]["fuel_loads_mmbtu_per_hour"] = repeat([6.0], 8760) #part 1: supplementary firing not used when less efficient than the boiler and expensive @@ -1247,6 +1248,7 @@ else # run HiGHS tests # has a demand charge lookback of 35% for all months with 2 different demand charges based on which month data["ElectricLoad"]["loads_kw"] = ones(8760) data["ElectricLoad"]["loads_kw"][8] = 100.0 + data["ElectricLoad"]["year"] = 2022 inputs = REoptInputs(Scenario(data)) m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) results = run_reopt(m, inputs) @@ -1263,6 +1265,7 @@ else # run HiGHS tests d["ElectricLoad"]["loads_kw"][2403] = 400 # April peak (Should set dvPeakDemandLookback) d["ElectricLoad"]["loads_kw"][4088] = 500 # June peak (not in peak month lookback) d["ElectricLoad"]["loads_kw"][8333] = 300 # Dec peak + d["ElectricLoad"]["year"] = 2022 d["ElectricTariff"]["monthly_demand_rates"] = [10,10,20,50,20,10,20,20,20,20,20,5] d["ElectricTariff"]["demand_lookback_months"] = [1,0,0,1,0,0,0,0,0,0,0,1] # Jan, April, Dec d["ElectricTariff"]["blended_annual_energy_rate"] = 0.01 @@ -1282,7 +1285,8 @@ else # run HiGHS tests d["ElectricLoad"]["loads_kw"][22] = 200 # Jan peak d["ElectricLoad"]["loads_kw"][2403] = 400 # April peak (Should set dvPeakDemandLookback) d["ElectricLoad"]["loads_kw"][4088] = 500 # June peak (not in peak month lookback) - d["ElectricLoad"]["loads_kw"][8333] = 300 # Dec peak + d["ElectricLoad"]["loads_kw"][8333] = 300 # Dec peak + d["ElectricLoad"]["year"] = 2022 d["ElectricTariff"]["monthly_demand_rates"] = [10,10,20,50,20,10,20,20,20,20,20,5] d["ElectricTariff"]["blended_annual_energy_rate"] = 0.01 d["ElectricTariff"]["demand_lookback_range"] = 6 @@ -1909,6 +1913,7 @@ else # run HiGHS tests post_name = "wind_intl_offgrid.json" post = JSON.parsefile("./scenarios/$post_name") post["ElectricLoad"]["loads_kw"] = [10.0 for i in range(1,8760)] + post["ElectricLoad"]["year"] = 2022 scen = Scenario(post) post["Wind"]["production_factor_series"] = reduce(vcat, readdlm("./data/example_wind_prod_factor_kw.csv", '\n', header=true)[1]) From c100eee633f30130263be055ac3bc29d1e66586d Mon Sep 17 00:00:00 2001 From: Bill Becker Date: Fri, 10 Jan 2025 12:21:21 -0700 Subject: [PATCH 16/25] Add year input to fix tests with loads_kw --- test/scenarios/ghp_urbanopt.json | 3 ++- test/scenarios/ghx_urbanopt.json | 3 ++- test/scenarios/outage.json | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/test/scenarios/ghp_urbanopt.json b/test/scenarios/ghp_urbanopt.json index 8c4739198..0e0a043ab 100644 --- a/test/scenarios/ghp_urbanopt.json +++ b/test/scenarios/ghp_urbanopt.json @@ -26293,7 +26293,8 @@ 40.62193249087678, 36.699852574708, 35.655914923145126 - ] + ], + "year": 2022 }, "ElectricTariff": { "urdb_label": "5b44fc455457a31c4ea907ea" diff --git a/test/scenarios/ghx_urbanopt.json b/test/scenarios/ghx_urbanopt.json index 96ef53691..1c84cfa20 100644 --- a/test/scenarios/ghx_urbanopt.json +++ b/test/scenarios/ghx_urbanopt.json @@ -26293,7 +26293,8 @@ 1e-08, 1e-08, 1e-08 - ] + ], + "year": 2022 }, "ElectricTariff": { "urdb_label": "5b44fc455457a31c4ea907ea" diff --git a/test/scenarios/outage.json b/test/scenarios/outage.json index defb09a16..4861df4d3 100644 --- a/test/scenarios/outage.json +++ b/test/scenarios/outage.json @@ -44,7 +44,8 @@ }, "ElectricLoad": { "loads_kw": [200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 410.0, 410.0, 410.0, 410.0, 410.0, 410.0, 410.0, 410.0, 410.0, 410.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 410.0, 410.0, 410.0, 410.0, 410.0, 410.0, 410.0, 410.0, 410.0, 410.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0], - "critical_load_fraction": 0.5 + "critical_load_fraction": 0.5, + "year": 2022 }, "ElectricTariff": { "monthly_energy_rates": [0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01] From 9d2ea829041c07b7b87e1a19c6a3529aad79b423 Mon Sep 17 00:00:00 2001 From: adfarth Date: Fri, 10 Jan 2025 13:13:29 -0700 Subject: [PATCH 17/25] small update to normalize explanation --- src/core/heating_cooling_loads.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/heating_cooling_loads.jl b/src/core/heating_cooling_loads.jl index 623fdc8b2..247466212 100644 --- a/src/core/heating_cooling_loads.jl +++ b/src/core/heating_cooling_loads.jl @@ -15,7 +15,7 @@ monthly_mmbtu::Array{<:Real,1} = Real[], addressable_load_fraction::Any = 1.0, # Fraction of input fuel load which is addressable by heating technologies. Can be a scalar or vector with length aligned with use of monthly_mmbtu or fuel_loads_mmbtu_per_hour. fuel_loads_mmbtu_per_hour::Array{<:Real,1} = Real[], # Vector of space heating fuel loads [mmbtu/hr]. Length must equal 8760 * `Settings.time_steps_per_hour` - normalize_and_scale_load_profile_input::Bool = false, # Takes fuel_loads_mmbtu_per_hour and normalizes and scales it to annual or monthly energy + normalize_and_scale_load_profile_input::Bool = false, # Takes fuel_loads_mmbtu_per_hour and normalizes and scales it to annual_mmbtu or monthly_mmbtu existing_boiler_efficiency::Real = NaN ``` From 2b10edef03bde5d5f25cbc046535ad7df2c177fa Mon Sep 17 00:00:00 2001 From: Bill Becker Date: Sun, 12 Jan 2025 22:15:20 -0700 Subject: [PATCH 18/25] Change CRB profile year alignment strategy --- ...doe_commercial_reference_building_loads.jl | 16 +++++-- test/runtests.jl | 46 ++++++------------- 2 files changed, 26 insertions(+), 36 deletions(-) diff --git a/src/core/doe_commercial_reference_building_loads.jl b/src/core/doe_commercial_reference_building_loads.jl index 8677e7346..6b402fb8c 100644 --- a/src/core/doe_commercial_reference_building_loads.jl +++ b/src/core/doe_commercial_reference_building_loads.jl @@ -146,12 +146,18 @@ function built_in_load( input_normalized = true end - # The normalized_profile for CRBs (not FlatLoads) is based on year 2017 which starts on a Sunday. - # If the year is not 2017 and we're using a CRB, we need to shift the profile to make the first day of the profile equal to the first day of the input year. + # The normalized_profile for CRBs (not FlatLoads, which use the year input) is based on year 2017 which starts on a Sunday. + # If the year is not 2017 and we're using a CRB, we shift the 2017 CRB profile to match the weekday/weekend profile of the input year. + # We remove the CRB start day Sunday, and shift the CRB profile to the left until reaching the start day of the input year (e.g. Friday for 2021), and + # the shifted days (but not Sunday) get wrapped around to the end of the year, and the year's start day gets duplicated at the end of the year to match the year's ending day of the week. + # We then re-normalize the profile because we've removed the previously-normalized year's first day Sunday and duplicated the year's start day profile if !(year == 2017) && shift_possible - first_day_of_year = Dates.dayofweek(Date(year, 1, 1)) - shift_days = first_day_of_year - 7 # 7 for Sunday, 1 for Monday, 2 for Tuesday etc., so if start day is Sunday there is no shift - normalized_profile = circshift(normalized_profile, 24 * shift_days) + crb_start_day = Dates.dayofweek(DateTime(2017,1,1)) + load_start_day = Dates.dayofweek(DateTime(year,1,1)) + cut_days = 7 - (crb_start_day - load_start_day) # Ex: = 7-(7-5) = 5 --> cut Sun, Mon, Tues, Wed, Thurs for 2021 load year + wrap_ts = normalized_profile[25:24+24*cut_days] # Ex: = crb_profile[25:144] wrap Mon-Fri to end for 2021 + normalized_profile = append!(normalized_profile[24*cut_days+1:end], wrap_ts) # Ex: now starts on Fri and end Fri to align with 2021 cal + normalized_profile = normalized_profile ./ sum(normalized_profile) end if length(monthly_energies) == 12 diff --git a/test/runtests.jl b/test/runtests.jl index cb37a8f1e..e143b5174 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -3094,11 +3094,9 @@ else # run HiGHS tests energy_charge_expected = weekday_rate * peak_load demand_charge_expected = (flat_rate + tou_rate) * peak_load end - println("year = ", year) @test results["ElectricTariff"]["year_one_energy_cost_before_tax"] ≈ energy_charge_expected atol=1E-6 @test results["ElectricTariff"]["year_one_demand_cost_before_tax"] ≈ demand_charge_expected atol=1E-6 - # Flat/facility (non-TOU) demand charge input_data["ElectricLoad"]["loads_kw"] = zeros(8760) # Weekday off-peak February 28th, to set February Facility demand charge @@ -3161,39 +3159,25 @@ else # run HiGHS tests @test sim_load_response["loads_mmbtu_per_hour"] ≈ round.(heating_load, digits=3) - # If a non-2017 year is input with a CRB electric load, make sure that - # electric, heating, and cooling loads are aligned by shifting as expected - norm_data = Dict() - city = "SanFrancisco" - buildingtype = "Hospital" - for type in ["electric", "space_heating", "cooling"] - lib_path = joinpath(@__DIR__, "..", "data", "load_profiles", type) - profile_path = joinpath(lib_path, string("crb8760_norm_" * city * "_" * buildingtype * ".dat")) - normalized_profile = vec(readdlm(profile_path, '\n', Float64, '\n')) - norm_data[type] = normalized_profile - end - + # If a non-2017 year is input with a CRB for electric, heating, or cooling load, make sure that + # the energy input is preserved while the CRB profile is shifted and adjusted to align with + # the load year and re-normalized to preserve the annual energy (sum of normalized profile == 1.0) input_data["ElectricLoad"] = Dict("doe_reference_name" => buildingtype, "annual_kwh" => 10000, "year" => year) input_data["SpaceHeatingLoad"] = Dict("doe_reference_name" => buildingtype, "annual_mmbtu" => 10000) - input_data["CoolingLoad"] = Dict("doe_reference_name" => buildingtype) - + input_data["CoolingLoad"] = Dict("doe_reference_name" => buildingtype, "annual_tonhour" => 100.0) + s = Scenario(input_data) inputs = REoptInputs(s) - - first_day_of_year = 1 # Monday start day for 2024 - expected_shift = first_day_of_year - 7 # 7 for Sunday start on 2017, 1 for Monday, 2 for Tuesday etc., so if start day is Sunday there is no shift - - elec_orig_shifted = circshift(norm_data["electric"], 24*expected_shift) - heat_orig_shifted = circshift(norm_data["space_heating"], 24*expected_shift) - cool_orig_shifted = circshift(norm_data["cooling"], 24*expected_shift) - - elec_load_normalized = s.electric_load.loads_kw / sum(s.electric_load.loads_kw) - heat_load_normalized = s.space_heating_load.loads_kw / sum(s.space_heating_load.loads_kw) - cooling_load_normalized = s.cooling_load.loads_kw_thermal / sum(s.cooling_load.loads_kw_thermal) - - @test elec_orig_shifted ≈ elec_load_normalized - @test heat_orig_shifted ≈ heat_load_normalized - @test cool_orig_shifted ≈ cooling_load_normalized + + # Test that the energy input is preserved with the CRB profile shift + @test sum(s.electric_load.loads_kw) ≈ input_data["ElectricLoad"]["annual_kwh"] + @test sum(s.space_heating_load.loads_kw) / REopt.KWH_PER_MMBTU ≈ input_data["SpaceHeatingLoad"]["annual_mmbtu"] + @test sum(s.cooling_load.loads_kw_thermal) / REopt.KWH_THERMAL_PER_TONHOUR ≈ input_data["CoolingLoad"]["annual_tonhour"] + + # The first CRB profile day, Sunday, is replaced by the first day of the load year, and that day is replicated at the end of the year too + @test s.electric_load.loads_kw[end-24+1:end] == s.electric_load.loads_kw[1:24] + @test s.space_heating_load.loads_kw[end-24+1:end] == s.space_heating_load.loads_kw[1:24] + @test s.cooling_load.loads_kw_thermal[end-24+1:end] == s.cooling_load.loads_kw_thermal[1:24] end end From e5a55e352b4e1f6d9a9532f6e8b9ee7e288eb7e7 Mon Sep 17 00:00:00 2001 From: Bill Becker Date: Sun, 12 Jan 2025 22:18:48 -0700 Subject: [PATCH 19/25] Add more updates to Changelog. --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a09335a71..d110ae49a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,9 @@ Classify the change according to the following categories: ## load-year-align ### Fixed - Align heating and cooling load profiles based on electric load year input, if using custom electric load profile with simulated (CRB or schedule-based flatloads) heating/cooling loads +### Changed +- Make `year` input required with `ElectricLoad.loads_kw` input +- Shift and adjust CRB load profiles (i.e. with `doe_reference_name` input) based on the `year` input ## leap-year-fix ### Fixed From cdcd928090654429c0fe49e2e9a1607af813d565 Mon Sep 17 00:00:00 2001 From: Bill Becker Date: Mon, 13 Jan 2025 12:06:43 -0700 Subject: [PATCH 20/25] Fix test input for doe_reference_name --- test/runtests.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/test/runtests.jl b/test/runtests.jl index e143b5174..3f2a3b49d 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -3162,6 +3162,7 @@ else # run HiGHS tests # If a non-2017 year is input with a CRB for electric, heating, or cooling load, make sure that # the energy input is preserved while the CRB profile is shifted and adjusted to align with # the load year and re-normalized to preserve the annual energy (sum of normalized profile == 1.0) + buildingtype = "Hospital" input_data["ElectricLoad"] = Dict("doe_reference_name" => buildingtype, "annual_kwh" => 10000, "year" => year) input_data["SpaceHeatingLoad"] = Dict("doe_reference_name" => buildingtype, "annual_mmbtu" => 10000) input_data["CoolingLoad"] = Dict("doe_reference_name" => buildingtype, "annual_tonhour" => 100.0) From 5f46a78c277bc48d672c9f02929b223bac771efe Mon Sep 17 00:00:00 2001 From: Bill Becker Date: Mon, 13 Jan 2025 12:31:57 -0700 Subject: [PATCH 21/25] Update test with get_monthly_energy() now that it's consistent with leap years --- test/runtests.jl | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/test/runtests.jl b/test/runtests.jl index 3f2a3b49d..e9bb52ee8 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -2946,8 +2946,8 @@ else # run HiGHS tests # Check that monthly energy input is preserved when normalizing and scaling the hourly profile @test abs(sum(s.electric_load.loads_kw) - sum(input_data["ElectricLoad"]["monthly_totals_kwh"])) < 1.0 - # This get_monthly_energy function is only equivalent for non-leap years with loads_kw normalization and scaling because it removes the leap day from the processing of monthly hours/energy - monthly_totals_kwh = REopt.get_monthly_energy(s.electric_load.loads_kw; year=2017) + # Check consistency of get_monthly_energy() function which is used in simulated_load() + monthly_totals_kwh = REopt.get_monthly_energy(s.electric_load.loads_kw; year=input_data["ElectricLoad"]["year"]) # Check that each month matches @test sum(monthly_totals_kwh .- input_data["ElectricLoad"]["monthly_totals_kwh"]) < 1.0 @@ -2995,15 +2995,14 @@ else # run HiGHS tests # Check that monthly energy input is preserved when normalizing and scaling the hourly profile @test abs(sum(s.space_heating_load.loads_kw / s.existing_boiler.efficiency / REopt.KWH_PER_MMBTU) - sum(input_data["SpaceHeatingLoad"]["monthly_mmbtu"]) * address_frac) < 1.0 - - # This get_monthly_energy function is only equivalent for non-leap years with loads_kw normalization and scaling because it removes the leap day from the processing of monthly hours/energy - monthly_kwht = REopt.get_monthly_energy(s.space_heating_load.loads_kw; year=2017) + # Check consistency of get_monthly_energy() function which is used in simulated_load() + monthly_kwht = REopt.get_monthly_energy(s.space_heating_load.loads_kw; year=input_data["SpaceHeatingLoad"]["year"]) monthly_mmbtu = monthly_kwht/ s.existing_boiler.efficiency / REopt.KWH_PER_MMBTU - @test abs(sum(s.process_heat_load.loads_kw / s.existing_boiler.efficiency / REopt.KWH_PER_MMBTU) - input_data["ProcessHeatLoad"]["annual_mmbtu"]) < 1.0 - - # Check that each month matches @test sum(monthly_mmbtu .- input_data["SpaceHeatingLoad"]["monthly_mmbtu"] * address_frac) < 1.0 + # Check that annual energy input is preserved when normalizing and scaling the hourly profile + @test abs(sum(s.process_heat_load.loads_kw / s.existing_boiler.efficiency / REopt.KWH_PER_MMBTU) - input_data["ProcessHeatLoad"]["annual_mmbtu"]) < 1.0 + # Check that the load ratio within a month is proportional to the loads_kw ratio @test abs(s.space_heating_load.loads_kw[6] / s.space_heating_load.loads_kw[4] - input_data["SpaceHeatingLoad"]["fuel_loads_mmbtu_per_hour"][6] / input_data["SpaceHeatingLoad"]["fuel_loads_mmbtu_per_hour"][4]) < 0.001 @test abs(s.process_heat_load.loads_kw[6] / s.process_heat_load.loads_kw[4] - input_data["ProcessHeatLoad"]["fuel_loads_mmbtu_per_hour"][6] / input_data["ProcessHeatLoad"]["fuel_loads_mmbtu_per_hour"][4]) < 0.001 From d62ef0e249bd7a7e6f9c74051b1796fe90d79e52 Mon Sep 17 00:00:00 2001 From: adfarth Date: Mon, 13 Jan 2025 16:00:38 -0700 Subject: [PATCH 22/25] updating CoolingLoad help text --- src/core/heating_cooling_loads.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/heating_cooling_loads.jl b/src/core/heating_cooling_loads.jl index 247466212..90bb2d029 100644 --- a/src/core/heating_cooling_loads.jl +++ b/src/core/heating_cooling_loads.jl @@ -258,7 +258,7 @@ end blended_doe_reference_names::Array{String, 1} = String[], blended_doe_reference_percents::Array{<:Real,1} = Real[], city::String = "", - year::Int = doe_reference_name ≠ "" || blended_doe_reference_names ≠ String[] ? 2017 : 2022, # CRB profiles are 2017 by default. If providing load profile, specify year of data. + year::Int = doe_reference_name ≠ "" || blended_doe_reference_names ≠ String[] ? 2017 : nothing, # CRB profiles are 2017 by default. If providing load profile, specify year of data. annual_tonhour::Union{Real, Nothing} = nothing, monthly_tonhour::Array{<:Real,1} = Real[], thermal_loads_ton::Array{<:Real,1} = Real[], # Vector of cooling thermal loads [ton] = [short ton hours/hour]. Length must equal 8760 * `Settings.time_steps_per_hour` From 5d700bef4f4ebd74c17c9ee01264e6b3ab5cc3e6 Mon Sep 17 00:00:00 2001 From: Bill Becker Date: Mon, 13 Jan 2025 22:08:30 -0700 Subject: [PATCH 23/25] Update changelog for required year for heating and cooling load profile inputs too --- CHANGELOG.md | 2 +- src/core/scenario.jl | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d110ae49a..f77614434 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,7 +29,7 @@ Classify the change according to the following categories: ### Fixed - Align heating and cooling load profiles based on electric load year input, if using custom electric load profile with simulated (CRB or schedule-based flatloads) heating/cooling loads ### Changed -- Make `year` input required with `ElectricLoad.loads_kw` input +- Make `year` input required with any custom load profile input (e.g. `ElectricLoad.loads_kw`, `SpaceHeatingLoad.fuel_loads_mmbtu_per_hour`) - Shift and adjust CRB load profiles (i.e. with `doe_reference_name` input) based on the `year` input ## leap-year-fix diff --git a/src/core/scenario.jl b/src/core/scenario.jl index 4954aa469..4f533a724 100644 --- a/src/core/scenario.jl +++ b/src/core/scenario.jl @@ -231,7 +231,6 @@ function Scenario(d::Dict; flex_hvac_from_json=false) ) max_heat_demand_kw = maximum(dhw_load.loads_kw) else - # TODO need to add a dummy year here or else will error dhw_load = HeatingLoad(; load_type = "domestic_hot_water", fuel_loads_mmbtu_per_hour=zeros(8760*settings.time_steps_per_hour), From 74d362d5760843cbbca9da8e60bddb853d1da840 Mon Sep 17 00:00:00 2001 From: Bill Becker Date: Mon, 13 Jan 2025 22:11:21 -0700 Subject: [PATCH 24/25] Make ElectricTariff.year = nothing by default, passed from ElectricLoad.year which is now required. --- src/core/electric_tariff.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/electric_tariff.jl b/src/core/electric_tariff.jl index b18049a26..645b76d98 100644 --- a/src/core/electric_tariff.jl +++ b/src/core/electric_tariff.jl @@ -93,7 +93,7 @@ function ElectricTariff(; urdb_response::Dict=Dict(), urdb_utility_name::String="", urdb_rate_name::String="", - year::Int=2022, # Passed from ElectricLoad + year::Union{Int, Nothing}=nothing, # Passed from ElectricLoad time_steps_per_hour::Int=1, NEM::Bool=false, wholesale_rate::T1=nothing, From 375289efbc858b97e4048b3e93acf7b41ade7059 Mon Sep 17 00:00:00 2001 From: Bill Becker Date: Mon, 13 Jan 2025 22:22:50 -0700 Subject: [PATCH 25/25] Include industrial_reference_names for process heat default year of 2017 --- src/core/heating_cooling_loads.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/heating_cooling_loads.jl b/src/core/heating_cooling_loads.jl index 247466212..6f818117b 100644 --- a/src/core/heating_cooling_loads.jl +++ b/src/core/heating_cooling_loads.jl @@ -10,7 +10,7 @@ blended_industrial_reference_names::Array{String, 1} = String[], # For ProcessHeatLoad blended_industrial_reference_percents::Array{<:Real,1} = Real[], # For ProcessHeatLoad city::String = "", - year::Union{Int, Nothing} = doe_reference_name ≠ "" || blended_doe_reference_names ≠ String[] ? 2017 : nothing, # CRB profiles are 2017 by default. If providing load profile, specify year of data. + year::Union{Int, Nothing} = doe_reference_name ≠ "" || blended_doe_reference_names ≠ String[] || industrial_reference_name ≠ "" || blended_industrial_reference_names ≠ String[] ? 2017 : nothing, # CRB profiles are 2017 by default. If providing load profile, specify year of data. annual_mmbtu::Union{Real, Nothing} = nothing, monthly_mmbtu::Array{<:Real,1} = Real[], addressable_load_fraction::Any = 1.0, # Fraction of input fuel load which is addressable by heating technologies. Can be a scalar or vector with length aligned with use of monthly_mmbtu or fuel_loads_mmbtu_per_hour. @@ -51,7 +51,7 @@ function HeatingLoad(; blended_industrial_reference_names::Array{String, 1} = String[], blended_industrial_reference_percents::Array{<:Real,1} = Real[], city::String = "", - year::Union{Int, Nothing} = doe_reference_name ≠ "" || blended_doe_reference_names ≠ String[] ? 2017 : nothing, # CRB profiles are 2017 by default. If providing load profile, specify year of data. + year::Union{Int, Nothing} = doe_reference_name ≠ "" || blended_doe_reference_names ≠ String[] || industrial_reference_name ≠ "" || blended_industrial_reference_names ≠ String[] ? 2017 : nothing, # CRB profiles are 2017 by default. If providing load profile, specify year of data. annual_mmbtu::Union{Real, Nothing} = nothing, monthly_mmbtu::Array{<:Real,1} = Real[], addressable_load_fraction::Any = 1.0,