diff --git a/bindings-wasm/processCooling.cpp b/bindings-wasm/processCooling.cpp new file mode 100644 index 00000000..a4dda79c --- /dev/null +++ b/bindings-wasm/processCooling.cpp @@ -0,0 +1,87 @@ +#include "chillers/ProcessCooling.h" +#include + +using namespace std; +using namespace emscripten; + +EMSCRIPTEN_BINDINGS(processCooling_class) +{ + enum_("RefrigerantType") + .value("R_11", ProcessCooling::RefrigerantType::R_11) + .value("R_123", ProcessCooling::RefrigerantType::R_123) + .value("R_12", ProcessCooling::RefrigerantType::R_12) + .value("R_134a", ProcessCooling::RefrigerantType::R_134a) + .value("R_22", ProcessCooling::RefrigerantType::R_22) + .value("R_717", ProcessCooling::RefrigerantType::R_717); + + enum_("ACSourceLocation") + .value("Inside", ProcessCooling::ACSourceLocation::Inside) + .value("Outside", ProcessCooling::ACSourceLocation::Outside); + + enum_("CoolingSystemType") + .value("Water", ProcessCooling::CoolingSystemType::Water) + .value("Air", ProcessCooling::CoolingSystemType::Air); + + enum_("CellFanType") + .value("AxialFan", ProcessCooling::CellFanType::AxialFan) + .value("CentrifugalFan", ProcessCooling::CellFanType::CentrifugalFan); + + enum_("TowerSizedBy") + .value("Tonnage", ProcessCooling::TowerSizedBy::Tonnage) + .value("Fan_HP", ProcessCooling::TowerSizedBy::Fan_HP); + + enum_("ChillerCompressorType") + .value("Centrifugal", ProcessCooling::ChillerCompressorType::Centrifugal) + .value("Screw", ProcessCooling::ChillerCompressorType::Screw) + .value("Reciprocating", ProcessCooling::ChillerCompressorType::Reciprocating); + + enum_("FanMotorSpeedType") + .value("One", ProcessCooling::FanMotorSpeedType::One) + .value("Two", ProcessCooling::FanMotorSpeedType::Two) + .value("Variable", ProcessCooling::FanMotorSpeedType::Variable); + + class_("WaterCooledSystemInput") + .constructor(); + + class_("AirCooledSystemInput") + .constructor(); + + + class_("ChillerOutput") + .property("efficiency", &ProcessCooling::ChillerOutput::efficiency) + .property("hours", &ProcessCooling::ChillerOutput::hours) + .property("power", &ProcessCooling::ChillerOutput::power) + .property("energy", &ProcessCooling::ChillerOutput::energy); + + class_("ChillerPumpingEnergyOutput") + .property("chillerPumpingEnergy", &ProcessCooling::ChillerPumpingEnergyOutput::chillerPumpingEnergy); + + class_("TowerOutput") + .property("efficiency", &ProcessCooling::TowerOutput::tempBins) + .property("hours", &ProcessCooling::TowerOutput::hours) + .property("energy", &ProcessCooling::TowerOutput::energy); + + + class_("PumpInput") + .constructor(); + + class_("TowerInput") + .constructor(); + + class_("ChillerInput") + .constructor>>() + .constructor>, bool, ProcessCooling::RefrigerantType, ProcessCooling::RefrigerantType>() + .constructor>, vector, vector>() + .constructor>, vector, vector, ProcessCooling::RefrigerantType, ProcessCooling::RefrigerantType>(); + + + class_("ProcessCooling") + .constructor&, const vector&, const vector&, const vector&, ProcessCooling::TowerInput, ProcessCooling::WaterCooledSystemInput>() + .constructor&, const vector&, const vector&, const vector&, ProcessCooling::AirCooledSystemInput>() + .function("calculateTowerEnergy", &ProcessCooling::calculateTowerEnergy) + .function("calculateChillerEnergy", &ProcessCooling::calculateChillerEnergy) + .function("calculatePumpEnergy", &ProcessCooling::calculatePumpEnergy); + + register_vector("IntVector"); + register_vector("ChillerInputV"); +} \ No newline at end of file diff --git a/include/chillers/ProcessCooling.h b/include/chillers/ProcessCooling.h new file mode 100644 index 00000000..2ad1ccd5 --- /dev/null +++ b/include/chillers/ProcessCooling.h @@ -0,0 +1,570 @@ +/** + * @file Header file for Process Fluid Cooling Energy Calculations + * + * @brief Originally (CWSAT) writen in VB by University of Massachusetts - Amherst with funding from the U.S. Department of Energy + * Calculator estimates energy consumption of operating Chillers, Pumps and Towers in a cooling system (both air & water). + * Allows: + * Input multiple & varying capacity and types of Chillers that are operating together. + * Flexible input for operating schedule for each Chiller. + * Apply changes ( improvements / measures) and compare & examine, quantifying energy and cost savings. + * Changes: + * Increasing the chilled water temperature + * Decreasing the condenser water temperature + * Replacing the chillers + * Applying variable speed control to circulation pump motors + * Upgrade Tower Cell Fan Motor controls + * Upgrades: + * Replace chiller refrigerant + * Install Variable Speed Drive (VSD) on Centrifugal compressors + * Use Free Cooling + * + * @extends This converted implementation version removes the limit on number of Pumps and Chillers. + * + * @author Converted by Omer Aziz from VB to C++ (omerb). + * @bug No known bugs. + * + */ + +#ifndef AMO_TOOLS_SUITE_PROCESSCOOLING_H +#define AMO_TOOLS_SUITE_PROCESSCOOLING_H + +#include +#include +#include +#include +#include +#include +#include + +using namespace std; + +const int MONTHS = 12; +const int LOAD_NUM = 11; +const int HOURS_IN_YEAR = 8760; + +class ProcessCooling{ +public: + enum RefrigerantType { + R_11, + R_123, + R_12, + R_134a, + R_22, + R_717 + }; + + enum ACSourceLocation { + Inside, + Outside + }; + + enum CoolingSystemType { + Water, + Air + }; + + enum CellFanType { + AxialFan, + CentrifugalFan + }; + + enum TowerSizedBy { + Tonnage, + Fan_HP + }; + + enum ChillerCompressorType { + Centrifugal, + Screw, + Reciprocating + }; + + enum FanMotorSpeedType { + One, + Two, + Variable + }; + + struct ChillerOutput { + /** + * + * @returns arrays of double corresponding to 11 % load bins (0,10,20,30,40,50,60,70,80,90,100) + * + * @param efficiency array of double, units kW/ton + * @param hours array of double, units hours + * @param power array of double, units kW + * @param energy array of double, units kWh + */ + ChillerOutput(vector> efficiency, vector> hours, vector> power, vector> energy) : + efficiency(std::move(efficiency)), hours(std::move(hours)), power(std::move(power)), energy(std::move(energy)) {} + + vector> efficiency; + vector> hours; + vector> power; + vector> energy; + }; + + struct ChillerPumpingEnergyOutput { + /** + * + * @returns array of double (Pumps Energy), size corresponding to the # of chillers + * + * @param chillerPumpingEnergy double, units kWh + */ + explicit ChillerPumpingEnergyOutput(vector pumpingEnergy) : + chillerPumpingEnergy(std::move(pumpingEnergy)){} + + vector chillerPumpingEnergy; + }; + + struct TowerOutput { + /** + * + * @param no arguments + */ + TowerOutput()= default; + + /** + * + * @returns arrays of double corresponding to 6 wet bulb temp bins => <35, 35-44, 45-54, 55-64, 65-74, >=75; + * + * @param tempBins, constant array {35, 45, 55, 65, 75, 75} + * @param hours array of double, units hours + * @param energy array of double, units kWh + */ + TowerOutput(vector hours, vector energy) : + hours(std::move(hours)), energy(std::move(energy)) {} + + vector tempBins = {35, 45, 55, 65, 75, 75}; + vector hours; + vector energy; + }; + + struct WaterCooledSystemInput { + /** + * + * @param no arguments + */ + WaterCooledSystemInput()= default; + + /** + * + * @param CHWT double, units F, 35 - 55 Default 44, Chilled Water Supply Temperature + * @param useFreeCooling boolean + * @param HEXApproachTemp double, units F, 5 - 20, heat exchange temp when free cooling and heat exchanger used + * @param constantCWT boolean, Is CW temperature constant + * @param CWT double, units F, 70 - 90, CW temperature constant + * @param CWVariableFlow boolean + * @param CWFlowRate double, units gpm/ton + * @param CWTFollow double, units F, when CW temperature not constant + */ + WaterCooledSystemInput(double CHWT, bool useFreeCooling, double HEXApproachTemp, + bool constantCWT, double CWT, bool CWVariableFlow, double CWFlowRate, double CWTFollow) : + CHWT(CHWT), useFreeCooling(useFreeCooling), HEXApproachTemp(HEXApproachTemp), + constantCWT(constantCWT), CWT(CWT), CWVariableFlow(CWVariableFlow), CWFlowRate(CWFlowRate), CWTFollow(CWTFollow) { + isWaterCooled = true; + } + + double CHWT = 44; + bool useFreeCooling = false; + double HEXApproachTemp = 0; + bool constantCWT = true; + double CWT = 85; + bool CWVariableFlow = true; + double CWFlowRate = 3; + double CWTFollow = 0; + bool isWaterCooled = false; + }; + + struct AirCooledSystemInput { + /** + * + * @param no arguments + */ + AirCooledSystemInput()= default; + + /** + * + * @param CHWT double, units F, 35 - 55 Default 44, Chilled Water Supply Temperature + * @param OADT double, units F, 80 - 110 Standard 95, Outdoor Air Design Temperature + * @param ACSource Enumeration ACSourceLocation, Cooling Air Source, Indoor or Outside + * @param indoorTemp double, units F, if Air Source Indoor 60 - 90 + * @param CWTFollow double, units F, if Air Source Outside 5 - 20 + */ + AirCooledSystemInput(double CHWT, double OADT, ACSourceLocation ACSource, double indoorTemp, double CWTFollow) : + CHWT(CHWT), OADT(OADT), ACSource(ACSource), indoorTemp(indoorTemp), CWTFollow(CWTFollow) { + isAirCooled = true; + } + + double CHWT = 44; + double OADT = 95; + ACSourceLocation ACSource = ACSourceLocation::Outside; + double indoorTemp = 75; + double CWTFollow = 0; + bool isAirCooled = false; + }; + + struct PumpInput { + /** + * + * @param variableFlow boolean + * @param flowRate double, units gpm/ton + * @param efficiency double, percentage as fraction + * @param motorSize double, units hp + * @param motorEfficiency double, percentage as fraction + */ + PumpInput(bool variableFlow, double flowRate, double efficiency, double motorSize, double motorEfficiency) : + variableFlow(variableFlow), flowRate(flowRate), efficiency(efficiency*100), motorSize(motorSize), motorEfficiency(motorEfficiency*100) {} + + bool variableFlow; + double flowRate; + double efficiency; + double motorSize; + double motorEfficiency; + }; + + struct TowerInput { + /** + * + * @param no arguments + */ + TowerInput()= default; + + /** + * + * @param numTower integer, # of Towers + * @param numFanPerTower_Cells integer, # Cells + * @param fanSpeedType Enumeration FanMotorSpeedType + * @param towerSizing Enumeration TowerSizedBy, sized by tonnage or fan hp + * @param towerCellFanType Enumeration CellFanType + * @param cellFanHP double, units hp, 1 -100 hp + * @param tonnage double, units ton, 20 - 3000 + */ + TowerInput(int numTower, int numFanPerTower_Cells, FanMotorSpeedType fanSpeedType, + TowerSizedBy towerSizing, CellFanType towerCellFanType, double cellFanHP, double tonnage) : + numTower(numTower), numFanPerTower_Cells(numFanPerTower_Cells), fanSpeedType(fanSpeedType), + fanHP(cellFanHP), tonnage(tonnage) { + fanHP = getFanHP(tonnage, towerSizing, numFanPerTower_Cells, towerCellFanType, fanHP); + } + + int numTower; + int numFanPerTower_Cells; + FanMotorSpeedType fanSpeedType; + double fanHP; + double tonnage; + }; + + struct ChillerInput { + /** + * + * @details Use this constructor when not defining custom Chiller and not replacing chiller refrigerant + * + * @param chillerType Enumeration ChillerCompressorType + * @param capacity double, units ton + * @param isFullLoadEffKnown boolean, Is full load efficiency known? for this Chiller + * @param fullLoadEff double, fraction, 0.2 - 2.5 increments of .01 + * @param age double # of years, 0 - 20, (can be 1.5 for eighteen months), assumption chiller efficiency is degraded by 1% / year + * @param installVSD boolean, Install a VSD on each Centrifugal Compressor Motor + * @param useARIMonthlyLoadSchedule boolean, if true monthlyLoads not needed and can be set to empty + * @param monthlyLoads double, 12x11 array of 11 %load bins (0,10,20,30,40,50,60,70,80,90,100) for 12 calendar months + */ + ChillerInput(ChillerCompressorType chillerType, double capacity, bool isFullLoadEffKnown, double fullLoadEff, double age, + bool installVSD, bool useARIMonthlyLoadSchedule, vector> monthlyLoads) : + chillerType(chillerType), capacity(capacity), isFullLoadEffKnown(isFullLoadEffKnown), fullLoadEff(fullLoadEff), age(age), + installVSD(installVSD), useARIMonthlyLoadSchedule(useARIMonthlyLoadSchedule), monthlyLoads(std::move(monthlyLoads)), + isCustomChiller(false), loadAtPercent({}), kwPerTonLoads({}) , + changeRefrig(false), currentRefrig(RefrigerantType::R_11), proposedRefrig(RefrigerantType::R_11){} + + /** + * + * @details Use this constructor when replacing chiller refrigerant + * + * @param chillerType Enumeration ChillerCompressorType + * @param capacity double, units ton + * @param isFullLoadEffKnown boolean, Is full load efficiency known? for this Chiller + * @param fullLoadEff double, fraction, 0.2 - 2.5 increments of .01 + * @param age double # of years, 0 - 20, (can be 1.5 for eighteen months), assumption chiller efficiency is degraded by 1% / year + * @param installVSD boolean, Install a VSD on each Centrifugal Compressor Motor + * @param useARIMonthlyLoadSchedule boolean, if true monthlyLoads not needed and can be set to empty + * @param monthlyLoads double, 12x11 array of 11 %load bins (0,10,20,30,40,50,60,70,80,90,100) for 12 calendar months + * + * @param currentRefrig Enumeration RefrigerantType + * @param proposedRefrig Enumeration RefrigerantType + */ + ChillerInput(ChillerCompressorType chillerType, double capacity, bool isFullLoadEffKnown, double fullLoadEff, double age, + bool installVSD, bool useARIMonthlyLoadSchedule, vector> monthlyLoads, + bool changeRefrig, RefrigerantType currentRefrig, RefrigerantType proposedRefrig) : + chillerType(chillerType), capacity(capacity), isFullLoadEffKnown(isFullLoadEffKnown), fullLoadEff(fullLoadEff), age(age), + installVSD(installVSD), useARIMonthlyLoadSchedule(useARIMonthlyLoadSchedule), monthlyLoads(std::move(monthlyLoads)), + isCustomChiller(false), loadAtPercent({}), kwPerTonLoads({}) , + changeRefrig(changeRefrig), currentRefrig(currentRefrig), proposedRefrig(proposedRefrig){} + + /** + * + * @details Use this constructor when replacing chiller refrigerant + * + * @param chillerType Enumeration ChillerCompressorType + * @param capacity double, units ton + * @param isFullLoadEffKnown boolean, Is full load efficiency known? for this Chiller + * @param fullLoadEff double, fraction, 0.2 - 2.5 increments of .01 + * @param age double # of years, 0 - 20, (can be 1.5 for eighteen months), assumption chiller efficiency is degraded by 1% / year + * @param installVSD boolean, Install a VSD on each Centrifugal Compressor Motor + * @param useARIMonthlyLoadSchedule boolean, if true monthlyLoads not needed and can be set to empty + * @param monthlyLoads double, 12x11 array of 11 %load bins (0,10,20,30,40,50,60,70,80,90,100) for 12 calendar months + * + * @param currentRefrig Enumeration RefrigerantType + * @param proposedRefrig Enumeration RefrigerantType + */ + ChillerInput(ChillerCompressorType chillerType, double capacity, bool isFullLoadEffKnown, double fullLoadEff, double age, + bool installVSD, bool useARIMonthlyLoadSchedule, vector> monthlyLoads, + RefrigerantType currentRefrig, RefrigerantType proposedRefrig) : + chillerType(chillerType), capacity(capacity), isFullLoadEffKnown(isFullLoadEffKnown), fullLoadEff(fullLoadEff), age(age), + installVSD(installVSD), useARIMonthlyLoadSchedule(useARIMonthlyLoadSchedule), monthlyLoads(std::move(monthlyLoads)), + isCustomChiller(false), loadAtPercent({}), kwPerTonLoads({}) , + changeRefrig(true), currentRefrig(currentRefrig), proposedRefrig(proposedRefrig){} + + /** + * + * @details Use this constructor to define custom Chiller + * + * @param chillerType Enumeration ChillerCompressorType + * @param capacity double, units ton + * @param isFullLoadEffKnown boolean, Is full load efficiency known? for this Chiller + * @param fullLoadEff double, fraction, 0.2 - 2.5 increments of .01 + * @param age double # of years, 0 - 20, (can be 1.5 for eighteen months), assumption chiller efficiency is degraded by 1% / year + * @param installVSD boolean, Install a VSD on each Centrifugal Compressor Motor + * @param useARIMonthlyLoadSchedule boolean, if true monthlyLoads not needed and can be set to empty + * @param monthlyLoads double, 12x11 array of 11 %load bins (0,10,20,30,40,50,60,70,80,90,100) for 12 calendar months + * + * @param loadAtPercent double array, % loading + * @param kwPerTonLoads double array, kW/ton at the corresponding % loading + */ + ChillerInput(ChillerCompressorType chillerType, double capacity, bool isFullLoadEffKnown, double fullLoadEff, double age, + bool installVSD, bool useARIMonthlyLoadSchedule, vector> monthlyLoads, + vector loadAtPercent, vector kwPerTonLoads) : + chillerType(chillerType), capacity(capacity), isFullLoadEffKnown(isFullLoadEffKnown), fullLoadEff(fullLoadEff), age(age), + installVSD(installVSD), useARIMonthlyLoadSchedule(useARIMonthlyLoadSchedule), monthlyLoads(std::move(monthlyLoads)), + isCustomChiller(true), loadAtPercent(std::move(loadAtPercent)), kwPerTonLoads(std::move(kwPerTonLoads)), + changeRefrig(false), currentRefrig(RefrigerantType::R_11), proposedRefrig(RefrigerantType::R_11){ + SetCustomCoefficient(); + } + + /** + * + * @details Use this constructor for custom Chiller with replacing refrigerant + * + * @param chillerType Enumeration ChillerCompressorType + * @param capacity double, units ton + * @param isFullLoadEffKnown boolean, Is full load efficiency known? for this Chiller + * @param fullLoadEff double, fraction, 0.2 - 2.5 increments of .01 + * @param age double # of years, 0 - 20, (can be 1.5 for eighteen months), assumption chiller efficiency is degraded by 1% / year + * @param installVSD boolean, Install a VSD on each Centrifugal Compressor Motor + * @param useARIMonthlyLoadSchedule boolean, if true monthlyLoads not needed and can be set to empty + * @param monthlyLoads double, 12x11 array of 11 %load bins (0,10,20,30,40,50,60,70,80,90,100) for 12 calendar months + * + * @param loadAtPercent double array, % loading + * @param kwPerTonLoads double array, kW/ton at the corresponding % loading + * + * @param currentRefrig Enumeration RefrigerantType + * @param proposedRefrig Enumeration RefrigerantType + */ + ChillerInput(ChillerCompressorType chillerType, double capacity, bool isFullLoadEffKnown, double fullLoadEff, double age, + bool installVSD, bool useARIMonthlyLoadSchedule, vector> monthlyLoads, + vector loadAtPercent, vector kwPerTonLoads, + RefrigerantType currentRefrig, RefrigerantType proposedRefrig) : + chillerType(chillerType), capacity(capacity), isFullLoadEffKnown(isFullLoadEffKnown), fullLoadEff(fullLoadEff), age(age), + installVSD(installVSD), useARIMonthlyLoadSchedule(useARIMonthlyLoadSchedule), monthlyLoads(std::move(monthlyLoads)), + isCustomChiller(true), loadAtPercent(std::move(loadAtPercent)), kwPerTonLoads(std::move(kwPerTonLoads)), + changeRefrig(true), currentRefrig(currentRefrig), proposedRefrig(proposedRefrig){ + SetCustomCoefficient(); + } + + ChillerCompressorType chillerType; + double capacity; + bool isFullLoadEffKnown; + double fullLoadEff; + double age; + bool installVSD; + bool useARIMonthlyLoadSchedule; + vector> monthlyLoads; + + bool isCustomChiller; + vector loadAtPercent; + vector kwPerTonLoads; + + bool changeRefrig = false; + RefrigerantType currentRefrig; + RefrigerantType proposedRefrig; + + vector customCoeffs; + + private: + void SetCustomCoefficient() { + auto size = static_cast(loadAtPercent.size()); + vector x(size, 0); + vector y(size, 0); + for (int i = 0; i < size; i++) { + x[i] = loadAtPercent[i]; + y[i] = kwPerTonLoads[i] * loadAtPercent[i] / kwPerTonLoads[0]; + } + vector coeff = solveForCoefficients(x, y); + + size = static_cast(coeff.size()); + customCoeffs.resize(size, 0); + for (int i = 0; i < size; i++) { + customCoeffs[i] = coeff[i]; + } + } + + static vector solveForCoefficients(vector x, vector y) { + if(x.empty() || x.size() != y.size()) return {}; + + const int n = (int)x.size(); + + vector> a(n, vector(n, 0)); + for (int i = 0; i < n; ++i) { + for (int j = 0; j < n; ++j) { + a[i][j] = pow(x[i], n-1-j); + } + } + + // Forward Elimination + for (int k = 0; k < n - 1; ++k) { + for (int i = k + 1; i < n; ++i) { + double factor = a[i][k] / a[k][k]; + for (int j = k + 1; j < n; ++j) { + a[i][j] -= factor * a[k][j]; + } + y[i] -= factor * y[k]; + } + } + + // Back Substitution + vector coeff(n, 0); + coeff[n-1] = y[n-1] / a[n-1][n-1]; + for (int i = n - 2; i >= 0; --i) { + double sum = y[i]; + for (int j = i + 1; j < n; ++j) { + sum -= a[i][j] * coeff[j]; + } + coeff[i] = sum / a[i][i]; + } + + return coeff; + } + }; + + ~ProcessCooling() = default; + + /** + * + * @details Use this constructor for water cooling system + * + * @param systemOperationAnnualHours integer array of 8760 hours of the year with values as 0 or 1 + * @param weatherDryBulbHourlyTemp double, units F, array of 8760 hours of the year with dry bulb hourly recorded temperature + * @param weatherWetBulbHourlyTemp double, units F, array of 8760 hours of the year with wet bulb hourly recorded temperature + * @param chillerInputList ChillerInput array + * + * @param towerInput TowerInput + * @param waterCooledSystemInput WaterCooledSystemInput + */ + ProcessCooling(const vector& systemOperationAnnualHours, + const vector& weatherDryBulbHourlyTemp, const vector& weatherWetBulbHourlyTemp, + const vector& chillerInputList, + TowerInput towerInput, WaterCooledSystemInput waterCooledSystemInput) : + ProcessCooling(systemOperationAnnualHours, weatherDryBulbHourlyTemp, weatherWetBulbHourlyTemp, chillerInputList, + {}, towerInput, waterCooledSystemInput){} + + /** + * + ** @details Use this constructor for air cooled system + * + * @param systemOperationAnnualHours integer array of 8760 hours of the year with values as 0 or 1 + * @param weatherDryBulbHourlyTemp double array of 8760 hours of the year with dry bulb hourly recorded temperature + * @param weatherWetBulbHourlyTemp double array of 8760 hours of the year with wet bulb hourly recorded temperature + * @param chillerInputList ChillerInput array + * + * @param airCooledSystemInput AirCooledSystemInput + */ + ProcessCooling(const vector& systemOperationAnnualHours, + const vector& weatherDryBulbHourlyTemp, const vector& weatherWetBulbHourlyTemp, + const vector& chillerInputList, + AirCooledSystemInput airCooledSystemInput) : + ProcessCooling(systemOperationAnnualHours, weatherDryBulbHourlyTemp, weatherWetBulbHourlyTemp, chillerInputList, + airCooledSystemInput, {}, {}){} + + /** + * + * @return TowerOutput + */ + TowerOutput calculateTowerEnergy(); + + /** + * + * @return ChillerOutput + */ + ChillerOutput calculateChillerEnergy(); + + /** + * + * @param pump PumpInput + * @return ChillerPumpingEnergyOutput + */ + ChillerPumpingEnergyOutput calculatePumpEnergy(PumpInput pump); + +private: + ProcessCooling(const vector& systemOperationAnnualHours, + const vector& weatherDryBulbHourlyTemp, const vector& weatherWetBulbHourlyTemp, + const vector& chillerInputList, + AirCooledSystemInput airCooledSystemInput, TowerInput towerInput, WaterCooledSystemInput waterCooledSystemInput); + + vector systemOperationAnnual; + vector dryBulbHourlyTemp; + vector wetBulbHourlyTemp; + + TowerInput tower{}; + WaterCooledSystemInput waterCooledSystem; + AirCooledSystemInput airCooledSystem; + CoolingSystemType coolingType; + + double FCTemp = 0; // Free Cooling Temperature + vector CWTHourly; + + int numChillers; + vector chillers; + vector> chillerHourlyLoad; + vector> chillerHourlyLoadOperational; + vector> chillerHourlyEfficiencyARI; + vector> chillerHourlyEfficiency; + vector> chillerHourlyPower; + + void annualChillerLoadProfile(); + + void annualChillerEfficiencyProfileARI(); + + void annualChillerEfficiencyProfile(); + + void annualChillerPowerProfile(); + + static double getFanHP(double tonnage, TowerSizedBy towerSizing, int fanNum, CellFanType fanType, double fanHP); + + double getPercentFanPower(double wetBulbTemp, double percentWaterFlow, double range, double desiredApproach, int yearHourIndex); + + double getPercentWaterFlow(int yearHourIndex); + + double getRange(int yearHourIndex); + + double getApproach(double wetBulbTemp, double minToChillersTemp) const; + + double modifyPercentFanPower(double percentFanPower) const; + + double getWeightedAverageChillerLoad(int yearHourIndex); + + double getChillerTonnageTotal(); + + static double getCubeRoot(double number); + + static double getPumpHP(double power); +}; + +#endif //AMO_TOOLS_SUITE_PROCESSCOOLING_H diff --git a/package-lock.json b/package-lock.json index 9fc0607f..902a3635 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "amo-tools-suite", - "version": "1.0.4", + "version": "1.0.8", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "amo-tools-suite", - "version": "1.0.4", + "version": "1.0.8", "license": "MIT", "dependencies": { "express": "^4.17.1", @@ -14,8 +14,8 @@ "request": "^2.88.2" }, "engines": { - "node": "20.13.1", - "npm": "10.5.2" + "node": "20.16.0", + "npm": "10.8.1" } }, "node_modules/accepts": { diff --git a/src/chillers/ProcessCooling.cpp b/src/chillers/ProcessCooling.cpp new file mode 100644 index 00000000..6663baa0 --- /dev/null +++ b/src/chillers/ProcessCooling.cpp @@ -0,0 +1,1062 @@ +/** + * @file Implementation of Process Fluid Cooling Energy Calculations + * Originally (CWSAT) writen in VB by University of Massachusetts - Amherst with funding from the U.S. Department of Energy + * @author Converted by Omer Aziz from VB to C++ (omerb). + */ + +#include "chillers/ProcessCooling.h" + +const double nominalWaterFlowGPMPerTon = 3.0; // Typical value for towers + +ProcessCooling::ProcessCooling(const vector& systemOperationAnnualHours, + const vector& weatherDryBulbHourlyTemp, const vector& weatherWetBulbHourlyTemp, + const vector& chillerInputList, + AirCooledSystemInput airCooledSystemInput, TowerInput towerInput, WaterCooledSystemInput waterCooledSystemInput) { + if(systemOperationAnnualHours.size() != HOURS_IN_YEAR || systemOperationAnnualHours.size() != weatherDryBulbHourlyTemp.size() || + systemOperationAnnualHours.size() != weatherWetBulbHourlyTemp.size() || chillerInputList.empty()) { + throw invalid_argument("Invalid input, requires weather and operation data of size " + to_string(HOURS_IN_YEAR) + " and at least one chiller."); + } + + if((airCooledSystemInput.isAirCooled && waterCooledSystemInput.isWaterCooled) || + (!airCooledSystemInput.isAirCooled && !waterCooledSystemInput.isWaterCooled)) { + throw invalid_argument("Invalid cooling system."); + } + + systemOperationAnnual = systemOperationAnnualHours; + dryBulbHourlyTemp = weatherDryBulbHourlyTemp; + wetBulbHourlyTemp = weatherWetBulbHourlyTemp; + + tower = towerInput; + + if(airCooledSystemInput.isAirCooled) { + coolingType = CoolingSystemType::Air; + airCooledSystem = airCooledSystemInput; + } + else if(waterCooledSystemInput.isWaterCooled) { + coolingType = CoolingSystemType::Water; + waterCooledSystem = waterCooledSystemInput; + + FCTemp = waterCooledSystem.CHWT - waterCooledSystem.HEXApproachTemp - 10; + + CWTHourly.resize(HOURS_IN_YEAR, 0); + } + + chillers = chillerInputList; + + numChillers = (int)chillers.size(); + chillerHourlyLoad.resize(numChillers, vector(HOURS_IN_YEAR, 0)); + chillerHourlyLoadOperational.resize(numChillers, vector(LOAD_NUM, 0)); + chillerHourlyEfficiencyARI.resize(numChillers, vector(HOURS_IN_YEAR, 0)); + chillerHourlyEfficiency.resize(numChillers, vector(HOURS_IN_YEAR, 0)); + chillerHourlyPower.resize(numChillers, vector(HOURS_IN_YEAR, 0)); + + annualChillerLoadProfile(); + annualChillerEfficiencyProfileARI(); + annualChillerEfficiencyProfile(); + annualChillerPowerProfile(); +} + +ProcessCooling::TowerOutput ProcessCooling::calculateTowerEnergy() { + vector tempBins = TowerOutput().tempBins; + int numBins = (int)tempBins.size(); + vector towerHours(numBins, 0); + vector towerEnergy(numBins, 0); + + for (int j = 0; j < HOURS_IN_YEAR; ++j) { + double towerPowerHourly; + if (systemOperationAnnual[j] == 1) { + double TWetBulb = wetBulbHourlyTemp[j]; + double percentWaterFlow = getPercentWaterFlow(j); + double range = getRange(j); + double approach = getApproach(TWetBulb, 60); // Minimum temperature to chillers 60 + double percentFanPower = getPercentFanPower(TWetBulb, percentWaterFlow, range, approach, j); + + towerPowerHourly = tower.fanHP * tower.numFanPerTower_Cells * tower.numTower * 0.746 * percentFanPower; + + int binNum = numBins - 1; + int wbTemp = static_cast(round(wetBulbHourlyTemp[j])); + if (wbTemp < tempBins[binNum]) { + for (int i = 0; i < binNum; i++) { + if (wbTemp < tempBins[i]) { + binNum = i; + break; + } + } + } + + towerHours[binNum] += 1; + towerEnergy[binNum] += towerPowerHourly; + } + } + + return {towerHours, towerEnergy}; +} + +ProcessCooling::ChillerOutput ProcessCooling::calculateChillerEnergy() { + vector> chillerEnergy(numChillers, vector(LOAD_NUM, 0)); + vector> chillerPower(numChillers, vector(LOAD_NUM, 0)); + vector> chillerEff(numChillers, vector(LOAD_NUM, 0)); + + for (int c = 0; c < numChillers; ++c) { + for (int j = 0; j < HOURS_IN_YEAR; ++j) { + int l = static_cast(chillerHourlyLoad[c][j] / 10); + chillerEnergy[c][l] += chillerHourlyPower[c][j]; + + if (chillerHourlyLoad[c][j] > 0) { + chillerPower[c][l] += chillerHourlyPower[c][j]; + chillerEff[c][l] += chillerHourlyEfficiency[c][j]; + } + } + + for (int loadIndex = 0; loadIndex < LOAD_NUM; loadIndex++) { + if (chillerHourlyLoadOperational[c][loadIndex] > 0) { + chillerEff[c][loadIndex] /= chillerHourlyLoadOperational[c][loadIndex]; + chillerPower[c][loadIndex] /= chillerHourlyLoadOperational[c][loadIndex]; + } + } + } + + return {chillerEff, chillerHourlyLoadOperational, chillerPower, chillerEnergy}; +} + +ProcessCooling::ChillerPumpingEnergyOutput ProcessCooling::calculatePumpEnergy(PumpInput pump) { + vector chillerPumpingEnergy(numChillers, 0); + vector chillerVSDPumpingEnergy(numChillers, 0); + + if (pump.motorSize == 0) { //Size unknown + pump.motorSize = getPumpHP( + getChillerTonnageTotal() * pump.flowRate * 30 / 3960 / (pump.efficiency / 100) / numChillers); + } + + for (int c = 0; c < numChillers; ++c) { + double pumpEnergyTotal = 0; + double pumpVSDEnergyTotal = 0; + + for (int l = 1; l < LOAD_NUM; ++l) { + double VSDM = 0.31; + switch (l) { + case 6: + VSDM = 0.41; + break; + case 7: + VSDM = 0.52; + break; + case 8: + VSDM = 0.66; + break; + case 9: + VSDM = 0.81; + break; + case 10: + VSDM = 1.02; + break; + default: + break; + } + double pumpPower = pump.motorSize * 0.746 / (pump.motorEfficiency / 100); + double pumpVSDPower = pumpPower * VSDM; + + pumpEnergyTotal += pumpPower * chillerHourlyLoadOperational[c][l]; + pumpVSDEnergyTotal += pumpVSDPower * chillerHourlyLoadOperational[c][l]; + } + + if (pump.variableFlow) { + chillerVSDPumpingEnergy[c] = pumpVSDEnergyTotal; + } + else { + chillerPumpingEnergy[c] = pumpEnergyTotal; + } + } + + return pump.variableFlow ? ChillerPumpingEnergyOutput(chillerVSDPumpingEnergy) : ChillerPumpingEnergyOutput(chillerPumpingEnergy); +} + +void ProcessCooling::annualChillerLoadProfile() { + vector>> chillerMonthlyLoads(numChillers, vector>(MONTHS, vector(LOAD_NUM, 0))); + vector monthHourStart = {0, 744, 1416, 2160, 2880, 3624, 4344, 5088, 5832, 6552, 7296, 8016, 8760}; + vector systemOperationMonthly = {744, 672, 744, 720, 744, 720, 744, 744, 720, 744, 720, 744}; + + int monthIndex = 0; + int monthHours = 0; + int cutOffHours = monthHourStart[monthIndex + 1] - 1; + + for (int c = 0; c < numChillers; ++c) { + for (int m = 0; m < MONTHS; ++m) { + if (chillers[c].useARIMonthlyLoadSchedule) + chillerMonthlyLoads[c][m] = {0, 0, 1, 5, 13, 23, 26, 19, 9, 3, 1}; + else + chillerMonthlyLoads[c][m] = chillers[c].monthlyLoads[m]; + } + } + + for (int j = 0; j < HOURS_IN_YEAR; j++) { + if (j > cutOffHours) { + systemOperationMonthly[monthIndex] = monthHours; + ++monthIndex; + monthHours = 0; + cutOffHours = monthHourStart[monthIndex + 1] - 1; + } + if (systemOperationAnnual[j] == 1) ++monthHours; + } + + for (int c = 0; c < numChillers; ++c) { + for (int m = 0; m < MONTHS; ++m) { + int count = 0; + int j = 12; + double remainder = 0; + bool evenMarker = true; + + vector temp(LOAD_NUM, 0); + for (int l = 0; l < LOAD_NUM; ++l) { + temp[l] = chillerMonthlyLoads[c][m][l] / 100 * systemOperationMonthly[m]; + } + + int loadNum = LOAD_NUM - 1; + while (loadNum >= 0) { + if (j == 0) { + loadNum--; + } + else if (j > 0) { + int index = monthHourStart[m] + j - 1; + if (index < HOURS_IN_YEAR) { + if (systemOperationAnnual[index] == 1 && chillerHourlyLoad[c][index] == 0) { + temp[loadNum] += remainder; + + double tempValueRounded = round(temp[loadNum]); + if (tempValueRounded - temp[loadNum] < 0.1 && tempValueRounded - temp[loadNum] > 0) { + temp[loadNum] = tempValueRounded; + } + + if (temp[loadNum] >= 1) { + chillerHourlyLoad[c][index] = loadNum * 10; + temp[loadNum]--; + remainder = 0; + } else { + remainder = temp[loadNum]; + loadNum--; + j -= 24; + } + } else { + chillerHourlyLoad[c][index] = 0; + } + } + + j += 24; + + if (monthHourStart[m] + j > monthHourStart[m + 1]) { + if (evenMarker) { + count++; + j = 12 + count; + evenMarker = false; + } else { + j = 12 - count; + evenMarker = true; + } + } + } + } + } + + for (int j = 0; j < HOURS_IN_YEAR; ++j) { + chillerHourlyLoadOperational[c][static_cast(chillerHourlyLoad[c][j] / 10)] += 1; + } + } +} + +void ProcessCooling::annualChillerEfficiencyProfileARI() { + // Method 2 - Part Load Efficiency Curves [%Load vs. %kW], All chiller types, fullLoadEff known + vector> ArrayMethod2 = { + // x^3 - x, B [constant] + {0.3807, 0.2203, 0.2485, 0.1553}, // CentrifugalFan / Water-Cooled + {0.0, 0.3412, 0.6792, -0.0154}, // Reciprocating / Water-Cooled + {0.5024, -0.022, 0.3832, 0.136}, // Helical Rotary / Water-Cooled + {0.0, -0.0263, 0.9971, 0.0103}, // Reciprocating / Air-Cooled + {0.5024, -0.022, 0.3832, 0.136} // Helical Rotary / Air-Cooled + }; + + // Method 1 CentrifugalFan / Water-Cooled, Water, centrifugal, fullLoadEff unknown + vector> ArrayCDataWater{ + // capacity [tons], Full Load Efficiency [kW/ton], x^5 - x, B [constant] + {200, 0.84, 0.0, 0.0, -2.1395, 5.2528, -3.7337, 1.4533}, + {250, 0.68, 0.0, 0.0, -1.732, 4.2522, -3.0225, 1.1764} // Includes 250-1000 by 50, 1000-2000 by 100 + }; + + // Method 1 Reciprocating / Water-Cooled, Water, reciprocating, fullLoadEff unknown + vector> ArrayRDataWater = { + // capacity [tons], Full Load Efficiency [kW/ton], x^5 - x, B [constant] + {20, 0.88, 0.0, 0.0, 0.0, -0.0954, 0.4706, 0.502}, + {25, 0.88, 0.0, 0.0, 0.0, -0.0954, 0.4706, 0.502}, + {30, 32.5 / 34.5, 0.0, 0.0, 0.0, -0.1023, 0.5049, 0.5386}, + {35, 32.5 / 34.5, 0.0, 0.0, 0.0, -0.1023, 0.5049, 0.5386}, + {40, 32.5 / 34.5, 0.0, 0.0, 0.0, -0.1023, 0.5049, 0.5386}, + {45, 50.5 / 49.4, 0.0, 0.0, 0.0, -0.111, 0.5479, 0.5844}, + {50, 50.5 / 49.4, 0.0, 0.0, 0.0, -0.111, 0.5479, 0.5844}, + {60, 12.0 / 13.2, 0.0, 0.0, 0.0, -0.098, 0.486, 0.5196}, + {70, 12.0 / 13.0, 0.0, 0.0, 0.2574, -0.6057, 0.799, 0.4719}, + {80, 12.0 / 13.8, 0.0, 0.0, 0.2365, -0.5533, 0.7141, 0.4748}, + {90, 12.0 / 13.9, 0.0, -10.43, 28.937, -28.825, 12.435, -1.2535}, + {100, 12.0 / 13.1, 0.0, -20.508, 56.982, -56.78, 24.15, -2.9284}, + {110, 12.0 / 13.8, 0.0, -11.693, 32.445, -32.318, 13.903, -1.4673}, + {115, 12.0 / 13.5, 0.0, -7.9441, 21.944, -21.655, 9.2935, -0.7489}, + {120, 12.0 / 13.2, 0.0, -19.057, 52.955, -52.81, 22.529, -2.7065}, + {130, 12.0 / 12.7, 0.0, 0.0, 0.7169, -1.0517, 0.7741, 0.5088}, + {140, 12.0 / 12.8, 0.0, 0.0, 0.0, 0.223, 0.1025, 0.6095}, + {150, 12.0 / 12.7, 0.0, 4.9661, -11.483, 9.3654, -2.7811, 0.8762}, + {160, 12.0 / 13.0, 0.0, 4.1948, -9.2594, 7.2022, -1.9972, 0.7876}, + {170, 12.0 / 12.6, 0.0, 4.275, -9.3462, 7.0888, -1.8392, 0.7739}, + {175, 12.0 / 12.6, 0.0, 4.275, -9.3462, 7.0888, -1.8392, 0.7739}, + {180, 12.0 / 12.6, 0.0, 4.275, -9.3462, 7.0888, -1.8392, 0.7739}, + {190, 12.0 / 12.2, 0.0, 4.9849, -11.281, 9.0204, -2.6834, 0.946}, + {200, 12.0 / 12.5, -10.1, 32.577, -38.646, 20.939, -4.8209, 1.0106}, + {210, 12.0 / 12.5, -10.1, 32.577, -38.646, 20.939, -4.8209, 1.0106}, + {220, 12.0 / 12.5, -10.1, 32.577, -38.646, 20.939, -4.8209, 1.0106}, + {230, 12.0 / 12.1, -15.869, 47.034, -52.156, 26.754, -6.0112, 1.237}, + {240, 12.0 / 12.1, -15.869, 47.034, -52.156, 26.754, -6.0112, 1.237}, + {250, 12.0 / 12.1, -15.869, 47.034, -52.156, 26.754, -6.0112, 1.237} + }; + + // Method 1 Helical Rotary / Water-Cooled, Water, helical rotary, fullLoadEff unknown + vector> ArraySDataWater = { + // capacity [tons], Full Load Efficiency [kW/ton], x^5 - x, B [constant] + {70, 12.0 / 15.3, 0.0, 0.0, 0.0, 0.493, -0.3382, 0.6329}, + {80, 12.0 / 15.6, 0.0, 0.0, -3.0228, 6.8805, -4.5542, 1.4658}, + {90, 12.0 / 15.5, 0.0, 0.0, -1.6269, 3.8762, -2.5615, 1.0865}, + {100, 12.0 / 15.4, 0.0, 0.0, -1.3381, 3.141, -1.982, 0.9584}, + {110, 12.0 / 15.2, 0.0, 0.0, -1.5986, 3.6242, -2.2305, 0.9944}, + {120, 12.0 / 15.3, 0.0, 0.0, -2.4371, 5.5781, -3.7157, 1.3591}, + {125, 12.0 / 15.3, 0.0, 0.0, -2.4371, 5.5781, -3.7157, 1.3591}, + {130, 12.0 / 15.3, 0.0, 0.0, -2.4371, 5.5781, -3.7157, 1.3591}, + {140, 0.84, 0.0, 0.0, 0.0, 1.0149, -1.1397, 0.9731} // Includes 140-200 by 10, 200-800 by 50 + }; + + // Method 1 Reciprocating / Air-Cooled, Air, reciprocating, fullLoadEff unknown + vector> ArrayRDataAir = { + // capacity [tons], Full Load Efficiency [kW/ton], x^5 - x, B [constant] + {40, 1.05, 0.0, 0.0, 0.0, 0.0482, -0.1241, 1.125}, + {50, 1.09, 0.0, 0.0, 0.0, 0.05, -0.1286, 1.166}, + {60, 1.09, 0.0, 0.0, 0.0, 0.05, -0.1286, 1.166}, + {70, 1.11, 0.0, 0.0, 0.0, 0.051, -0.1313, 1.1903}, + {80, 1.11, 0.0, 0.0, 0.0, 0.051, -0.1313, 1.1903}, + {90, 1.09, 0.0, 0.0, 0.0, 0.05, -0.1286, 1.166}, + {100, 1.06, 0.0, 0.0, 0.0, 0.0487, -0.1252, 1.135}, + {110, 1.11, 0.0, 0.0, 0.0, 0.051, -0.1313, 1.1903}, + {200, 1.15, 0.0, 0.0, 0.0, 0.0527, -0.1355, 1.2284}, + {210, 1.15, 0.0, 0.0, 0.0, 0.0527, -0.1355, 1.2284}, + {220, 1.15, 0.0, 0.0, 0.0, 0.0527, -0.1355, 1.2284}, + {230, 12.0 / 9.5, 0.0, -17.753, 42.824, -34.985, 10.845, 0.2139}, + {240, 12.0 / 9.5, 0.0, -17.753, 42.824, -34.985, 10.845, 0.2139}, + {250, 12.0 / 9.5, 0.0, -17.753, 42.824, -34.985, 10.845, 0.2139}, + {275, 12.0 / 9.7, 0.0, -20.957, 53.744, -47.559, 16.471, -0.5675}, + {300, 12.0 / 9.7, 53.156, -159.84, 182.28, -97.116, 23.5, -0.8358}, + {325, 12.0 / 9.6, 57.771, -173.81, 198.34, -105.76, 25.624, -0.9891}, + {350, 12.0 / 9.6, 57.771, -173.81, 198.34, -105.76, 25.624, -0.9891}, + {370, 12.0 / 9.5, 16.672, -53.78, 65.6, -36.521, 8.7508, 0.427}, + {375, 12.0 / 9.5, 16.672, -53.78, 65.6, -36.521, 8.7508, 0.427}, + {400, 12.0 / 9.7, 11.306, -39.007, 50.56, -29.343, 7.0493, 0.577}, + {425, 12.0 / 9.6, 12.317, -42.59, 55.331, -32.217, 7.777, 0.5474}, + {450, 12.0 / 9.6, 12.317, -42.59, 55.331, -32.217, 7.777, 0.5474} + }; + + // Method 1 Helical Rotary / Air-Cooled Air, helical rotary, fullLoadEff unknown + vector> ArraySDataAir = { + {70, 12.0 / 10.2, 0.0, 0.0, 0.0, 0.3996, 0.0891, 0.6929}, + {80, 12.0 / 10.2, 0.0, 0.0, -4.6584, 9.9259, -5.9944, 1.9034}, + {90, 12.0 / 9.9, 0.0, 0.0, -2.0203, 4.3627, -2.362, 1.2317}, + {100, 12.0 / 9.7, 0.0, 0.0, -1.9174, 3.8677, -1.7496, 1.0364}, + {110, 12.0 / 9.7, 0.0, 0.0, -2.3327, 4.6982, -2.2427, 1.1143}, + {120, 12.0 / 9.8, 0.0, 0.0, -2.7475, 5.8423, -3.2581, 1.3878}, + {125, 12.0 / 9.8, 0.0, 0.0, -2.7475, 5.8423, -3.2581, 1.3878}, + {130, 12.0 / 9.5, 0.0, 0.0, 0.0, 0.5195, 0.0769, 0.6646}, + {140, 12.0 / 9.5, 0.0, 0.0, 0.0, 0.4609, 0.1068, 0.6556}, + {150, 12.0 / 9.5, 0.0, 0.0, 0.0, 0.4609, 0.1068, 0.6556}, + {155, 12.0 / 9.4, 0.0, 0.0, 0.0, 0.3573, 0.2743, 0.6364}, + {160, 12.0 / 9.2, 0.0, 0.0, 0.0, 0.8587, -0.3208, 0.7601}, + {170, 12.0 / 9.2, 0.0, 0.0, 0.0, 0.8587, -0.3208, 0.7601}, + {180, 12.0 / 9.2, 0.0, 0.0, 0.0, 1.2421, -0.9662, 1.0278}, + {185, 12.0 / 9.2, 0.0, 0.0, 0.0, 1.2421, -0.9662, 1.0278}, + {190, 12.0 / 9.2, 0.0, 0.0, 0.0, 1.2421, -0.9662, 1.0278}, + {200, 12.0 / 9.0, 0.0, 0.0, 3.3211, -5.4082, 3.2153, 0.2052}, + {215, 12.0 / 9.2, 0.0, 0.0, 3.2895, -5.4202, 3.2557, 0.1793}, + {220, 12.0 / 9.2, 0.0, 0.0, 3.2895, -5.4202, 3.2557, 0.1793}, + {230, 12.0 / 9.4, 0.0, 0.0, 0.0, 0.7427, -0.131, 0.6627}, + {240, 12.0 / 9.4, 0.0, 0.0, 0.0, 0.7427, -0.131, 0.6627}, + {250, 12.0 / 9.4, 0.0, 0.0, 0.0, 0.7427, -0.131, 0.6627}, + {270, 12.0 / 9.3, 0.0, 0.0, 0.0, 0.9024, -0.2977, 0.687}, + {275, 12.0 / 9.3, 0.0, 0.0, 0.0, 0.9024, -0.2977, 0.687}, + {300, 12.0 / 9.2, 0.0, 0.0, 0.0, 0.8341, -0.2, 0.6749}, + {325, 12.0 / 9.4, 0.0, 0.0, 0.0, 0.7244, -0.0863, 0.637}, + {340, 12.0 / 9.4, 0.0, 0.0, 0.0, 0.7244, -0.0863, 0.637}, + {350, 12.0 / 9.4, 0.0, 0.0, 0.0, 0.7244, -0.0863, 0.637}, + {370, 12.0 / 9.3, 0.0, 0.0, 0.0, 0.7642, -0.1199, 0.6474}, + {375, 12.0 / 9.3, 0.0, 0.0, 0.0, 0.7642, -0.1199, 0.6474}, + {400, 12.0 / 9.3, 0.0, 0.0, 0.0, 0.7331, -0.0961, 0.6528} + }; + + vector capacityIndex(31, 0); + vector> efficiencyData(numChillers, vector(7, 0)); // 7 columns for each chiller. Dummy array for chiller values + for (int c = 0; c < numChillers; ++c) { //gvg for custom chiller + // Method 1 CentrifugalFan / Water-Cooled + if (chillers[c].chillerType == ChillerCompressorType::Centrifugal && coolingType == CoolingSystemType::Water) { + if (capacityIndex[c] > 1) capacityIndex[c] = 2; + } + + // Method 1 Helical Rotary / Water-Cooled; + if (chillers[c].chillerType == ChillerCompressorType::Screw && coolingType == CoolingSystemType::Water) { + if(capacityIndex[c] > 8) capacityIndex[c] = 9; + } + + // Method 1 Reciprocating / Air-Cooled; + if (chillers[c].chillerType == ChillerCompressorType::Reciprocating && coolingType == CoolingSystemType::Air){ + if (capacityIndex[c] > 7 && capacityIndex[c] < 17) capacityIndex[c] = 8; + else if (capacityIndex[c] > 16) capacityIndex[c] = capacityIndex[c] - 8; + } + + if (chillers[c].isFullLoadEffKnown) { + if (chillers[c].isCustomChiller) { + for (int i = 0; i < 4; i++) { + efficiencyData[c][i] = chillers[c].customCoeffs[i]; + } + } + else { + if (coolingType == CoolingSystemType::Water) { + if (chillers[c].chillerType == ChillerCompressorType::Centrifugal) { + for (int i = 0; i < 4; i++) { + efficiencyData[c][i] = ArrayMethod2[0][i]; + } + } + else if (chillers[c].chillerType == ChillerCompressorType::Reciprocating) { + for (int i = 0; i < 4; i++) { + efficiencyData[c][i] = ArrayMethod2[1][i]; + } + } + else if (chillers[c].chillerType == ChillerCompressorType::Screw) { + for (int i = 0; i < 4; i++) { + efficiencyData[c][i] = ArrayMethod2[2][i]; + } + } + } + else if (coolingType == CoolingSystemType::Air) { + if (chillers[c].chillerType == ChillerCompressorType::Reciprocating) { + for (int i = 0; i < 4; i++) { + efficiencyData[c][i] = ArrayMethod2[3][i]; + } + } + else if (chillers[c].chillerType == ChillerCompressorType::Screw) { + for (int i = 0; i < 4; i++) { + efficiencyData[c][i] = ArrayMethod2[4][i]; + } + } + } + } + + for (int j = 0; j < HOURS_IN_YEAR; ++j) { + double load = chillerHourlyLoad[c][j]; + + if (load == 0) { + chillerHourlyEfficiencyARI[c][j] = (1 + chillers[c].age / 100.0f) * + (efficiencyData[c][0] * pow(1.0f / 10, 3) + + efficiencyData[c][1] * pow(1.0f / 10, 2) + + efficiencyData[c][2] * (1.0f / 10) + + efficiencyData[c][3]) * + chillers[c].fullLoadEff / 1.0f / (1.0f / 10); + } + else if (load == 100) { + chillerHourlyEfficiencyARI[c][j] = (1 + chillers[c].age / 100.0f) * + chillers[c].fullLoadEff / 1.0f; + } + else { + chillerHourlyEfficiencyARI[c][j] = (1 + chillers[c].age / 100.0f) * + (efficiencyData[c][0] * pow(load / 100.0f, 3) + + efficiencyData[c][1] * pow(load / 100.0f, 2) + + efficiencyData[c][2] * (load / 100.0f) + + efficiencyData[c][3]) * + chillers[c].fullLoadEff / 1.0f / (load / 100.0f); + } + } + } + else { + int idx = capacityIndex[c]; + if (coolingType == CoolingSystemType::Water) { + if (chillers[c].chillerType == ChillerCompressorType::Centrifugal) { + efficiencyData[c][0] = ArrayCDataWater[idx][2]; + efficiencyData[c][1] = ArrayCDataWater[idx][3]; + efficiencyData[c][2] = ArrayCDataWater[idx][4]; + efficiencyData[c][3] = ArrayCDataWater[idx][5]; + efficiencyData[c][4] = ArrayCDataWater[idx][6]; + efficiencyData[c][5] = ArrayCDataWater[idx][7]; + efficiencyData[c][6] = ArrayCDataWater[idx][1]; + } + else if (chillers[c].chillerType == ChillerCompressorType::Reciprocating) { + efficiencyData[c][0] = ArrayRDataWater[idx][2]; + efficiencyData[c][1] = ArrayRDataWater[idx][3]; + efficiencyData[c][2] = ArrayRDataWater[idx][4]; + efficiencyData[c][3] = ArrayRDataWater[idx][5]; + efficiencyData[c][4] = ArrayRDataWater[idx][6]; + efficiencyData[c][5] = ArrayRDataWater[idx][7]; + efficiencyData[c][6] = ArrayRDataWater[idx][1]; + } + else if (chillers[c].chillerType == ChillerCompressorType::Screw) { + efficiencyData[c][0] = ArraySDataWater[idx][2]; + efficiencyData[c][1] = ArraySDataWater[idx][3]; + efficiencyData[c][2] = ArraySDataWater[idx][4]; + efficiencyData[c][3] = ArraySDataWater[idx][5]; + efficiencyData[c][4] = ArraySDataWater[idx][6]; + efficiencyData[c][5] = ArraySDataWater[idx][7]; + efficiencyData[c][6] = ArraySDataWater[idx][1]; + } + } + else if (coolingType == CoolingSystemType::Air) { + if (chillers[c].chillerType == ChillerCompressorType::Reciprocating) { + efficiencyData[c][0] = ArrayRDataAir[idx][2]; + efficiencyData[c][1] = ArrayRDataAir[idx][3]; + efficiencyData[c][2] = ArrayRDataAir[idx][4]; + efficiencyData[c][3] = ArrayRDataAir[idx][5]; + efficiencyData[c][4] = ArrayRDataAir[idx][6]; + efficiencyData[c][5] = ArrayRDataAir[idx][7]; + efficiencyData[c][6] = ArrayRDataAir[idx][1]; + } + else if (chillers[c].chillerType == ChillerCompressorType::Screw) { + efficiencyData[c][0] = ArraySDataAir[idx][2]; + efficiencyData[c][1] = ArraySDataAir[idx][3]; + efficiencyData[c][2] = ArraySDataAir[idx][4]; + efficiencyData[c][3] = ArraySDataAir[idx][5]; + efficiencyData[c][4] = ArraySDataAir[idx][6]; + efficiencyData[c][5] = ArraySDataAir[idx][7]; + efficiencyData[c][6] = ArraySDataAir[idx][1]; + } + } + + for (int j = 0; j < HOURS_IN_YEAR; ++j) { + double load = chillerHourlyLoad[c][j]; + + if (load == 0) { + chillerHourlyEfficiencyARI[c][j] = (1 + chillers[c].age / 100.0f) * + (efficiencyData[c][0] * pow(1.0f / 10, 5) + + efficiencyData[c][1] * pow(1.0f / 10, 4) + + efficiencyData[c][2] * pow(1.0f / 10, 3) + + efficiencyData[c][3] * pow(1.0f / 10, 2) + + efficiencyData[c][4] * (1.0f / 10) + + efficiencyData[c][5]) * 2 - + (1 + chillers[c].age / 100.0f) * + (efficiencyData[c][0] * pow(2.0f / 10, 5) + + efficiencyData[c][1] * pow(2.0f / 10, 4) + + efficiencyData[c][2] * pow(2.0f / 10, 3) + + efficiencyData[c][3] * pow(2.0f / 10, 2) + + efficiencyData[c][4] * (2.0f / 10) + + efficiencyData[c][5]); + } + else if (load == 100) { + chillerHourlyEfficiencyARI[c][j] = (1 + chillers[c].age / 100.0f) * + efficiencyData[c][6]; + } + else { + chillerHourlyEfficiencyARI[c][j] = (1 + chillers[c].age / 100.0f) * + (efficiencyData[c][0] * pow(load / 100.0f, 5) + + efficiencyData[c][1] * pow(load / 100.0f, 4) + + efficiencyData[c][2] * pow(load / 100.0f, 3) + + efficiencyData[c][3] * pow(load / 100.0f, 2) + + efficiencyData[c][4] * (load / 100.0f) + + efficiencyData[c][5]); + } + + if (load <= 40) { + double tempEff = (1 + chillers[c].age / 100.0f) * + (efficiencyData[c][0] * pow((load / 100.0f + 0.1f), 5) + + efficiencyData[c][1] * pow((load / 100.0f + 0.1f), 4) + + efficiencyData[c][2] * pow((load / 100.0f + 0.1f), 3) + + efficiencyData[c][3] * pow((load / 100.0f + 0.1f), 2) + + efficiencyData[c][4] * (load / 100.0f + 0.1f) + + efficiencyData[c][5]); + + if (chillerHourlyEfficiencyARI[c][j] < tempEff) { + chillerHourlyEfficiencyARI[c][j] = tempEff * 1.1f; + } + } + } + } + } +} + +void ProcessCooling::annualChillerEfficiencyProfile() { + int measureCount = 0; + double CWTdiff; + double CWTeffAdjust = 0; + double ECMeffAdjust; + + double CHWTVar = (44 - (coolingType == Water ? waterCooledSystem.CHWT : airCooledSystem.CHWT)); + vector CHWTMult(numChillers, 0); + vector CtypeMult(numChillers, 0); + vector refrigMult(numChillers, 1); + vector> VSDMult(numChillers, vector(LOAD_NUM, 1)); + + for (int c = 0; c < numChillers; ++c) { + if (chillers[c].chillerType == ChillerCompressorType::Reciprocating) { + CtypeMult[c] = 0.013; + } + else if (chillers[c].chillerType == ChillerCompressorType::Screw) { + CtypeMult[c] = 0.0179; + } + else if (chillers[c].chillerType == ChillerCompressorType::Centrifugal) { + CtypeMult[c] = 0.01; + } + CHWTMult[c] = 1 + (CtypeMult[c] * CHWTVar); + + if (chillers[c].chillerType == ChillerCompressorType::Centrifugal && chillers[c].installVSD) { + VSDMult[c] = {0.5, 0.5, 0.5, 0.514, 0.542, 0.57, 0.694, 0.818, 0.904, 0.952, 1.02}; + } + + vector refrigFactor = {0.45, 0.46, 0.51, 0.52, 0.5, 0.48}; + refrigMult[c] = chillers[c].changeRefrig ? + refrigFactor[chillers[c].proposedRefrig] / refrigFactor[chillers[c].currentRefrig] : 1; + } + + if (coolingType == CoolingSystemType::Water) { + for (int Chiller = 0; Chiller < numChillers; ++Chiller) { + for (int j = 0; j < HOURS_IN_YEAR; ++j) { + double CWTBase = 65; // Default ARI base + + if (chillerHourlyLoad[Chiller][j] >= 0 && chillerHourlyLoad[Chiller][j] <= 50) { + CWTBase = 65; + } else if (chillerHourlyLoad[Chiller][j] == 60) { + CWTBase = 69; + } else if (chillerHourlyLoad[Chiller][j] == 70) { + CWTBase = 73; + } else if (chillerHourlyLoad[Chiller][j] == 80) { + CWTBase = 77; + } else if (chillerHourlyLoad[Chiller][j] == 90) { + CWTBase = 81; + } else if (chillerHourlyLoad[Chiller][j] == 100) { + CWTBase = 85; + } + + if (CWTHourly[j] != 0) { + CWTdiff = CWTBase - CWTHourly[j]; + } else { + double CWTWater; + if (waterCooledSystem.constantCWT) { + CWTdiff = (CWTBase - waterCooledSystem.CWT); + } else { + CWTWater = wetBulbHourlyTemp[j] + waterCooledSystem.CWTFollow; + CWTWater = max(60.0, min(CWTWater, 110.0)); + CWTdiff = (CWTBase - CWTWater); + } + } + + if (chillers[Chiller].chillerType == ChillerCompressorType::Reciprocating) { + CWTeffAdjust = (CWTdiff >= 0) + ? 1 + (0.0273 * CWTdiff * CWTdiff - 1.5769 * CWTdiff) / 100 + : 1 + (-0.0273 * CWTdiff * CWTdiff - 1.5769 * CWTdiff) / 100; + } + else if (chillers[Chiller].chillerType == ChillerCompressorType::Screw) { + CWTeffAdjust = (CWTdiff >= 0) + ? 1 + (0.0282 * CWTdiff * CWTdiff - 2.0172 * CWTdiff) / 100 + : 1 + (-0.0282 * CWTdiff * CWTdiff - 2.0172 * CWTdiff) / 100; + } + else if (chillers[Chiller].chillerType == ChillerCompressorType::Centrifugal) { + CWTeffAdjust = (CWTdiff >= 0) + ? 1 + (0.0014 * CWTdiff * CWTdiff - 0.4363 * CWTdiff) / 100 + : 1 + (-0.0014 * CWTdiff * CWTdiff - 0.4363 * CWTdiff) / 100; + } + + if (measureCount == 0) { + ECMeffAdjust = 1.0; + measureCount = 1; + } else { + ECMeffAdjust = refrigMult[Chiller] * VSDMult[Chiller][static_cast(chillerHourlyLoad[Chiller][j] / 10)]; + } + + chillerHourlyEfficiency[Chiller][j] = chillerHourlyEfficiencyARI[Chiller][j] * CHWTMult[Chiller] * CWTeffAdjust * ECMeffAdjust; + } + } + } + else if (coolingType == CoolingSystemType::Air) { + for (int c = 0; c < numChillers; ++c) { + for (int j = 0; j < HOURS_IN_YEAR; ++j) { + double OADT_ARI = 95; + double OADTVar = (OADT_ARI - airCooledSystem.OADT); + + // Determine CATBase based on load + double CATBase = 55; // Default value + if (chillerHourlyLoad[c][j] == 10 || chillerHourlyLoad[c][j] == 0) { + CATBase = 55; + } else if (chillerHourlyLoad[c][j] == 30) { + CATBase = 57; + } else if (chillerHourlyLoad[c][j] == 40) { + CATBase = 61; + } else if (chillerHourlyLoad[c][j] == 50) { + CATBase = 65; + } else if (chillerHourlyLoad[c][j] == 60) { + CATBase = 71; + } else if (chillerHourlyLoad[c][j] == 70) { + CATBase = 77; + } else if (chillerHourlyLoad[c][j] == 80) { + CATBase = 83; + } else if (chillerHourlyLoad[c][j] == 90) { + CATBase = 89; + } else if (chillerHourlyLoad[c][j] == 100) { + CATBase = 95; + } + + double CATdiff = 0; + if (airCooledSystem.ACSource == ACSourceLocation::Inside) { + CATdiff = (CATBase - airCooledSystem.indoorTemp); + } + else if (airCooledSystem.ACSource == ACSourceLocation::Outside) { + double CWTAir = dryBulbHourlyTemp[j] + airCooledSystem.CWTFollow; + CATdiff = (CATBase - CWTAir); + } + + double OADeffAdjust = 1.0; + double CATeffAdjust = 1.0; + + if (chillers[c].chillerType == ChillerCompressorType::Reciprocating) { + OADeffAdjust = (OADTVar >= 0) ? + 1 + (-0.0273 * pow(OADTVar, 2) - 1.5769 * OADTVar) / 100 : + 1 + (0.0273 * pow(OADTVar, 2) - 1.5769 * OADTVar) / 100; + } + else if (chillers[c].chillerType == ChillerCompressorType::Screw) { + OADeffAdjust = (OADTVar >= 0) ? + 1 + (-0.0282 * pow(OADTVar, 2) - 2.0172 * OADTVar) / 100 : + 1 + (0.0282 * pow(OADTVar, 2) - 2.0172 * OADTVar) / 100; + } + + if (chillers[c].chillerType == ChillerCompressorType::Reciprocating) { + CATeffAdjust = (CATdiff >= 0) ? + 1 + (0.0273 * pow(CATdiff, 2) - 1.5769 * CATdiff) / 100 : + 1 + (-0.0273 * pow(CATdiff, 2) - 1.5769 * CATdiff) / 100; + } + else if (chillers[c].chillerType == ChillerCompressorType::Screw) { + CATeffAdjust = (CATdiff >= 0) ? + 1 + (0.0282 * pow(CATdiff, 2) - 2.0172 * CATdiff) / 100 : + 1 + (-0.0282 * pow(CATdiff, 2) - 2.0172 * CATdiff) / 100; + } + + if (measureCount == 0) { + ECMeffAdjust = 1.0; + measureCount = 1; + } else { + ECMeffAdjust = refrigMult[c] * + VSDMult[c][static_cast(chillerHourlyLoad[c][j] / 10)]; + } + + chillerHourlyEfficiency[c][j] = chillerHourlyEfficiencyARI[c][j] * CHWTMult[c] * OADeffAdjust * CATeffAdjust * ECMeffAdjust; + } + } + } +} + +void ProcessCooling::annualChillerPowerProfile() { + for (int c = 0; c < numChillers; ++c) { + for (int j = 0; j < HOURS_IN_YEAR; ++j) { + chillerHourlyPower[c][j] = (waterCooledSystem.useFreeCooling && wetBulbHourlyTemp[j] <= FCTemp) ? 0 : + chillerHourlyLoad[c][j] / 100 * chillers[c].capacity * chillerHourlyEfficiency[c][j]; + } + } +} + +double ProcessCooling::getFanHP(double tonnage, TowerSizedBy towerSizing, int fanNum, CellFanType fanType, double fanHP) { + if (towerSizing == TowerSizedBy::Fan_HP) { + return fanHP; + } + + vector fanHPOptions = { + 0.5, 1.0, 1.5, 2.0, 3.0, 5.0, 7.5, 10.0, 15.0, + 20.0, 25.0, 30.0, 40.0, 50.0, 60.0, 75.0, 100.0, 125.0 + }; + + if (fanNum == 0) { + fanNum = 1; + } + + double calculatedHP = 0.065 * tonnage / fanNum; + + if (fanType == CellFanType::CentrifugalFan) { + calculatedHP *= 2; + } + + int a = 0; + int size = static_cast(fanHPOptions.size()); + while (a < size - 1 && !(calculatedHP > fanHPOptions[a] && calculatedHP < fanHPOptions[a + 1])) { + ++a; + } + + if (a >= size - 1) { + return fanHPOptions.back(); + } else { + return fanHPOptions[a + 1]; + } +} + +double ProcessCooling::getPercentFanPower(double wetBulbTemp, double percentWaterFlow, double range, double desiredApproach, int yearHourIndex) { + double percentFanPower = 0.0; + double percentFanPowerReturned = 0.0; + double deltaPercentFanPower = 0.05; + double oldDeltaApproach = 1000; + string towerFlowType = "X"; + + for (int percentFanPowerCount = 0; percentFanPowerCount <= 20; ++percentFanPowerCount) { + double approach1, approach2, approach, deltaApproach; + + if (towerFlowType == "X") { // Cross flow + approach1 = -2.1985908408527 * 1 + + -24.3108065555106 * percentFanPower + + 21.9333667825398 * percentFanPower * percentFanPower + + -4.94979078884808 * percentFanPower * percentFanPower * percentFanPower + + 14.6788552214526 * percentWaterFlow + + -15.4612468065777 * percentFanPower * percentWaterFlow + + 2.83753688605444 * percentFanPower * percentFanPower * percentWaterFlow + + 10.0023162199558 * percentWaterFlow * percentWaterFlow + + 2.70780345372045 * percentFanPower * percentWaterFlow * percentWaterFlow + + -5.91993527180418 * percentWaterFlow * percentWaterFlow * percentWaterFlow + + 0.194222288920726 * wetBulbTemp + + 0.142543400927955 * percentFanPower * wetBulbTemp + + -0.0818947291400898 * percentFanPower * percentFanPower * wetBulbTemp + + -0.169584760441541 * percentWaterFlow * wetBulbTemp + + 0.0186741309635284 * percentFanPower * percentWaterFlow * wetBulbTemp + + 0.0536824177590012 * percentWaterFlow * percentWaterFlow * wetBulbTemp + + -0.00375848174056975 * wetBulbTemp * wetBulbTemp + + 0.000623763881051551 * percentFanPower * wetBulbTemp * wetBulbTemp + + -0.000709769430542879 * percentWaterFlow * wetBulbTemp * wetBulbTemp + + 0.0000234697776728891 * wetBulbTemp * wetBulbTemp * wetBulbTemp + + 2.45541543720225 * range + + -0.607566456611435 * percentFanPower * range + + 0.117339576910507 * percentFanPower * percentFanPower * range; + + approach2 = 1.64648551160799 * percentWaterFlow * range + + -0.135898905926974 * percentFanPower * percentWaterFlow * range + + -0.152577581866506 * percentWaterFlow * percentWaterFlow * range + + -0.034055419164321 * wetBulbTemp * range + + 0.00274052705314173 * percentFanPower * wetBulbTemp * range + + -0.00442366885652332 * percentWaterFlow * wetBulbTemp * range + + 0.0000687098236486247 * wetBulbTemp * wetBulbTemp * range + + -0.0416435261408276 * range * range + + 0.00263481599534274 * percentFanPower * range * range + + -0.010325259545311 * percentWaterFlow * range * range + + 0.000356999078067433 * wetBulbTemp * range * range + + 0.000249188476685273 * range * range * range; + + } + else { // Counter flow + approach1 = -4.48760943345722 * 1 + + 0.741749875850003 * percentFanPower + + 1.74679844252553 * percentFanPower * percentFanPower + + -0.397320959632943 * percentFanPower * percentFanPower * percentFanPower + + 19.5106208955792 * percentWaterFlow + + -9.79489761472574 * percentFanPower * percentWaterFlow + + 1.96690857354709 * percentFanPower * percentFanPower * percentWaterFlow + + -1.40803729637148 * percentWaterFlow * percentWaterFlow + + 0.633867141219563 * percentFanPower * percentWaterFlow * percentWaterFlow + + -0.517255742412696 * percentWaterFlow * percentWaterFlow * percentWaterFlow + + 0.0546335532842876 * wetBulbTemp + + 0.0468060318806566 * percentFanPower * wetBulbTemp + + -0.0244033403339062 * percentFanPower * percentFanPower * wetBulbTemp + + -0.267365212754448 * percentWaterFlow * wetBulbTemp + + 0.0385664546399435 * percentFanPower * percentWaterFlow * wetBulbTemp + + 0.037765628073743 * percentWaterFlow * percentWaterFlow * wetBulbTemp + + -0.000928698541521428 * wetBulbTemp * wetBulbTemp + + -0.000122211107650076 * percentFanPower * wetBulbTemp * wetBulbTemp + + 0.000682937021895334 * percentWaterFlow * wetBulbTemp * wetBulbTemp + + 0.00000679217734960548 * wetBulbTemp * wetBulbTemp * wetBulbTemp + + 1.47274732178792 * range + + -0.869303590626237 * percentFanPower * range + + 0.149995781695274 * percentFanPower * percentFanPower * range; + + approach2 = 2.4548219494635 * percentWaterFlow * range + + -0.161092120908292 * percentFanPower * percentWaterFlow * range + + -0.0830303891087807 * percentWaterFlow * percentWaterFlow * range + + -0.0251101427687245 * wetBulbTemp * range + + 0.00430042875730149 * percentFanPower * wetBulbTemp * range + + -0.013969370453107 * percentWaterFlow * wetBulbTemp * range + + 0.000096171182587938 * wetBulbTemp * wetBulbTemp * range + + -0.0251558254472348 * range * range + + 0.0077094706621763 * percentFanPower * range * range + + -0.0173842428341529 * percentWaterFlow * range * range + + 0.000244578460749651 * wetBulbTemp * range * range + + 0.000123026859143619 * range * range * range; + } + + approach = approach1 + approach2; + deltaApproach = abs(approach - desiredApproach); + + if (deltaApproach < oldDeltaApproach || deltaApproach > 100) { + oldDeltaApproach = deltaApproach; + percentFanPowerReturned = percentFanPower; + } + + percentFanPower += deltaPercentFanPower; + } + + percentFanPowerReturned = modifyPercentFanPower(percentFanPowerReturned); + + if (range == 0) { + percentFanPowerReturned = 0; + } + + if (percentFanPowerReturned >= 1) { + CWTHourly[yearHourIndex] = wetBulbHourlyTemp[yearHourIndex] + oldDeltaApproach + desiredApproach; + + if (CWTHourly[yearHourIndex] > 150) { + CWTHourly[yearHourIndex] = 150; + } + } else { + CWTHourly[yearHourIndex] = wetBulbHourlyTemp[yearHourIndex] + desiredApproach; + } + + return percentFanPowerReturned; +} + +double ProcessCooling::getPercentWaterFlow(int yearHourIndex) { + double percentWaterFlowTemporary; + double chillerTonnageTotal; + + chillerTonnageTotal = getChillerTonnageTotal(); + percentWaterFlowTemporary = (waterCooledSystem.CWFlowRate * chillerTonnageTotal) / (nominalWaterFlowGPMPerTon * tower.tonnage * tower.numTower); + + if (waterCooledSystem.CWVariableFlow) { + double weightedAverageChillerLoad = getWeightedAverageChillerLoad(yearHourIndex) / chillerTonnageTotal; + percentWaterFlowTemporary *= weightedAverageChillerLoad; + } + + percentWaterFlowTemporary = max(0.5, percentWaterFlowTemporary); // Minimum 50% flow + percentWaterFlowTemporary = min(2.0, percentWaterFlowTemporary); // Maximum 200% flow + + return percentWaterFlowTemporary; +} + +double ProcessCooling::getRange(int yearHourIndex) { + double chillerTonnageTotal = getChillerTonnageTotal(); + double weightedAverageChillerLoad = getWeightedAverageChillerLoad(yearHourIndex) / chillerTonnageTotal; + if (weightedAverageChillerLoad == 0) { + return 0.0; + } + + double percentWaterFlowTemporary = (waterCooledSystem.CWFlowRate * chillerTonnageTotal) / (nominalWaterFlowGPMPerTon * tower.tonnage * tower.numTower); + + double averageChillerEfficiency = 0.0; + for (int Chiller = 0; Chiller < numChillers; ++Chiller) { + averageChillerEfficiency += chillerHourlyPower[Chiller][yearHourIndex] / chillerTonnageTotal; + } + + double range; + if (waterCooledSystem.CWVariableFlow) { + percentWaterFlowTemporary *= weightedAverageChillerLoad; + + if (weightedAverageChillerLoad < 0.5) { + range = ((1 * weightedAverageChillerLoad + averageChillerEfficiency * 3413 / 12000) / (waterCooledSystem.CWFlowRate * 0.5)) * 24; + } else { + range = ((1 * weightedAverageChillerLoad + averageChillerEfficiency * 3413 / 12000) / (waterCooledSystem.CWFlowRate * weightedAverageChillerLoad)) * 24; + } + + } else { + range = ((1 * weightedAverageChillerLoad + averageChillerEfficiency * 3413 / 12000) / waterCooledSystem.CWFlowRate) * 24; + } + + if (percentWaterFlowTemporary > 2) { // Maximum 200% flow (need bypass) + range *= percentWaterFlowTemporary / 2; + } + + return range; +} + +double ProcessCooling::getApproach(double wetBulbTemp, double minToChillersTemp) const { + double approach; + + if (waterCooledSystem.useFreeCooling && wetBulbTemp <= FCTemp) { + approach = FCTemp - wetBulbTemp; + } else { + if (waterCooledSystem.constantCWT) { + approach = waterCooledSystem.CWT - wetBulbTemp; + } else { + double followDiffTemp = coolingType == Water ? waterCooledSystem.CWVariableFlow : airCooledSystem.CWTFollow; + if (wetBulbTemp < (minToChillersTemp - followDiffTemp)) { + approach = minToChillersTemp - wetBulbTemp; + } else { + if (wetBulbTemp + followDiffTemp > 110) { + approach = 110 - wetBulbTemp; + if (approach <= 0) { + approach = 1; + } + } else { + approach = followDiffTemp; + } + } + } + } + + return approach; +} + +double ProcessCooling::modifyPercentFanPower(double percentFanPower) const { + double percentFanPowerTemporary1 = percentFanPower; + double percentFanPowerTemporary2; + double VSDEfficiency; + double motorEfficiency; + + if (tower.fanSpeedType == FanMotorSpeedType::One) { + percentFanPowerTemporary1 = getCubeRoot(percentFanPowerTemporary1); + } + else if (tower.fanSpeedType == FanMotorSpeedType::Two) { + percentFanPowerTemporary1 = getCubeRoot(percentFanPowerTemporary1); + percentFanPowerTemporary2 = percentFanPowerTemporary1 * 0.25; // 0.25 slope of first segment + + if (percentFanPowerTemporary1 > 0.5) { + percentFanPowerTemporary2 = percentFanPowerTemporary1 * 1.75 - 0.75; // Adjust for second segment + } + + percentFanPowerTemporary1 = percentFanPowerTemporary2; + } + else if (tower.fanSpeedType == FanMotorSpeedType::Variable) { + motorEfficiency = 1; + + VSDEfficiency = (50.87 + + 1.283 * percentFanPowerTemporary1 * 100 - + 0.0142 * percentFanPowerTemporary1 * 100 * percentFanPowerTemporary1 * 100 + + 0.0000583 * percentFanPowerTemporary1 * 100 * percentFanPowerTemporary1 * 100 * percentFanPowerTemporary1 * 100) / 100; + + percentFanPowerTemporary1 /= (VSDEfficiency * motorEfficiency); + } + + return percentFanPowerTemporary1; +} + +double ProcessCooling::getWeightedAverageChillerLoad(int yearHourIndex) { + double weightedAverageChillerLoad = 0.0; + for (int c = 0; c < numChillers; ++c) { + weightedAverageChillerLoad += (chillerHourlyLoad[c][yearHourIndex] / 100.0) * chillers[c].capacity; + } + + return weightedAverageChillerLoad; +} + +double ProcessCooling::getChillerTonnageTotal() { + double chillerTonnageTotalTemp = 0.0; + + for (int c = 0; c < numChillers; ++c) { + chillerTonnageTotalTemp += chillers[c].capacity; + } + + return chillerTonnageTotalTemp; +} + +double ProcessCooling::getCubeRoot(double number) { + if (number > 0.0) { + return exp(log(number) / 3.0); + } else { + return number; + } +} + +double ProcessCooling::getPumpHP(double power) { + double pumpHPOptions[21] = {0.5, 1, 1.5, 2, 3, 5, 7.5, 10, 15, 20, + 25, 30, 40, 50, 60, 75, 100, 125, 150, 175, 200}; + + double result = power; + for (int p = 0; p < 20; ++p) { + if (result > pumpHPOptions[p] && result < pumpHPOptions[p + 1]) { + result = pumpHPOptions[p + 1]; + break; + } + } + + return result; +} diff --git a/src/ssmt/service/medium_pressure_header/SteamBalanceCheckerService.cpp b/src/ssmt/service/medium_pressure_header/SteamBalanceCheckerService.cpp index 260f8a8d..520dbb28 100644 --- a/src/ssmt/service/medium_pressure_header/SteamBalanceCheckerService.cpp +++ b/src/ssmt/service/medium_pressure_header/SteamBalanceCheckerService.cpp @@ -46,10 +46,8 @@ SteamBalanceCheckerService::check(const std::string &itemName, const PressureTur // return {remainingAdditionalSteamNeeded, highToLowPressureTurbine, highToLowPressureTurbineIdeal}; } } - else - { - return {0, highToLowPressureTurbine, highToLowPressureTurbineIdeal}; - } + + return {0, highToLowPressureTurbine, highToLowPressureTurbineIdeal}; } SteamReducerOutput diff --git a/tests/cpp/ProcessCooling.unit.cpp b/tests/cpp/ProcessCooling.unit.cpp new file mode 100644 index 00000000..79c11329 --- /dev/null +++ b/tests/cpp/ProcessCooling.unit.cpp @@ -0,0 +1,218 @@ +#include +#include "chillers/ProcessCooling.h" + +using namespace std; + +auto validateArrays = [](vector const & results, vector const & expected) { + auto size = static_cast(results.size()); + for (auto i = 0; i < size; i++) { + CHECK(Approx(results[i]) == expected[i]); + } +}; + +TEST_CASE("Process Fluid Cooling Energy Calculations:", "[processCooling]") { + vector systemOperationAnnualHours = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; + vector dryBulbHourlyTemp = {28.9, 28.9, 28, 28, 27, 27, 26.1, 28, 30.9, 33.1, 34, 37, 36, 37, 37, 35.1, 33.1, 34, 33.1, 33.1, 32, 32, 33.1, 30.9, 28.9, 28, 28, 28, 27, 26.1, 26.1, 27, 28.9, 33.1, 36, 35.1, 37, 36, 36, 36, 33.1, 34, 34, 34, 34, 32, 32, 30, 28.9, 27, 26.1, 25, 25, 24.1, 23, 25, 26.1, 27, 28, 28.9, 30, 32, 32, 30, 28, 27, 25, 24.1, 21.9, 21, 19.9, 19, 18, 17.1, 16, 16, 16, 16, 16, 15.1, 17.1, 19, 21.9, 25, 26.1, 26.1, 26.1, 26.1, 25, 25, 26.1, 26.1, 27, 26.1, 27, 27, 27, 27, 27, 26.1, 26.1, 26.1, 28, 28, 30.9, 30.9, 28.9, 27, 25, 26.1, 25, 25, 24.1, 24.1, 23, 24.1, 24.1, 23, 21.9, 21.9, 19.9, 19, 18, 18, 17.1, 17.1, 15.1, 15.1, 17.1, 19.9, 21.9, 23, 25, 27, 26.1, 25, 24.1, 21.9, 21.9, 21, 21, 21, 21.9, 21, 23, 23, 24.1, 25, 26.1, 26.1, 28.9, 28.9, 32, 34, 39.9, 46, 45, 45, 44.1, 42.1, 41, 39.9, 39.9, 39, 37.9, 37.9, 37, 37, 35.1, 35.1, 35.1, 34, 33.1, 33.1, 33.1, 33.1, 33.1, 34, 36, 36, 37, 37, 36, 35.1, 34, 33.1, 32, 30.9, 30, 28.9, 28, 28, 27, 26.1, 26.1, 26.1, 26.1, 26.1, 26.1, 27, 28, 28, 28.9, 28.9, 30, 30.9, 30, 28.9, 28, 28.9, 28, 28, 28, 27, 27, 26.1, 25, 25, 24.1, 23, 21, 21, 19.9, 19.9, 21, 25, 25, 28.9, 28, 30.9, 30, 28.9, 28, 28, 27, 26.1, 26.1, 25, 25, 26.1, 26.1, 26.1, 25, 27, 28, 30.9, 28.9, 34, 35.1, 39.9, 39.9, 48.9, 53.1, 54, 54, 53.1, 53.1, 54, 53.1, 53.1, 53.1, 54, 55.9, 55.9, 57, 55, 54, 53.1, 54, 46, 39, 37.9, 36, 36, 35.1, 32, 32, 32, 30.9, 30, 28, 27, 26.1, 25, 25, 24.1, 25, 24.1, 24.1, 24.1, 25, 23, 23, 23, 21.9, 21.9, 24.1, 26.1, 27, 28, 27, 27, 27, 27, 28, 28, 27, 28, 27, 27, 27, 26.1, 28, 28, 28, 28.9, 32, 34, 35.1, 34, 35.1, 37.9, 39.9, 41, 44.1, 42.1, 41, 42.1, 42.1, 41, 39, 39.9, 42.1, 41, 41, 43, 42.1, 41, 41, 42.1, 42.1, 41, 42.1, 41, 43, 42.1, 45, 44.1, 46, 44.1, 43, 44.1, 42.1, 42.1, 41, 39.9, 39, 37.9, 37, 37, 37, 35.1, 34, 33.1, 33.1, 34, 32, 30.9, 32, 32, 30.9, 30.9, 32, 32, 32, 33.1, 32, 32, 33.1, 32, 32, 32, 32, 30.9, 30, 28, 26.1, 26.1, 25, 25, 24.1, 25, 26.1, 27, 27, 27, 28, 28, 28.9, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30.9, 30.9, 32, 33.1, 35.1, 37, 37.9, 37, 37, 37, 37, 37, 35.1, 35.1, 37, 37, 37, 36, 35.1, 36, 36, 37, 37, 37, 37, 37.9, 37.9, 39, 39.9, 39.9, 41, 41, 45, 42.1, 39.9, 39.9, 39.9, 39.9, 37.9, 37.9, 37.9, 37, 36, 35.1, 34, 34, 34, 34, 33.1, 34, 36, 37.9, 39, 35.1, 37, 36, 37, 36, 34, 32, 30.9, 28.9, 28, 27, 27, 27, 26.1, 25, 25, 24.1, 24.1, 25, 24.1, 25, 27, 28.9, 30, 30, 30.9, 33.1, 34, 33.1, 30, 30, 28.9, 28.9, 28, 28, 27, 26.1, 25, 25, 25, 25, 25, 24.1, 24.1, 26.1, 28.9, 32, 34, 35.1, 34, 32, 32, 32, 32, 32, 32, 32, 33.1, 34, 35.1, 34, 33.1, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 33.1, 33.1, 34, 34, 34, 34, 34, 35.1, 34, 32, 30, 28, 25, 21.9, 21, 19, 19, 18, 18, 18, 18, 18, 19, 19.9, 21, 21, 21.9, 21.9, 21, 19.9, 19.9, 19.9, 19.9, 19, 19, 19, 19, 18, 17.1, 18, 17.1, 16, 17.1, 16, 17.1, 19, 21, 21.9, 25, 27, 27, 28, 28, 27, 27, 26.1, 24.1, 23, 24.1, 23, 23, 21.9, 21.9, 21, 21, 21, 21, 21.9, 23, 24.1, 26.1, 28.9, 30, 32, 34, 33.1, 32, 30.9, 30, 28.9, 27, 26.1, 26.1, 25, 25, 24.1, 23, 23, 23, 23, 23, 23, 23, 24.1, 28, 30.9, 33.1, 34, 35.1, 36, 36, 34, 33.1, 32, 30.9, 30, 28.9, 28, 28, 27, 26.1, 26.1, 25, 25, 25, 25, 25, 27, 28, 30.9, 33.1, 34, 35.1, 35.1, 34, 32, 30.9, 30, 30, 28, 28, 27, 27, 26.1, 25, 24.1, 24.1, 23, 24.1, 25, 25, 27, 28.9, 30.9, 32, 32, 33.1, 30.9, 30.9, 30, 28.9, 28, 27, 26.1, 24.1, 23, 23, 21.9, 19.9, 18, 17.1, 17.1, 16, 15.1, 14, 15.1, 16, 18, 19, 21, 23, 24.1, 24.1, 21.9, 21, 19.9, 19, 19, 18, 17.1, 16, 15.1, 15.1, 14, 14, 14, 12.9, 12.9, 12, 12, 12.9, 14, 14, 16, 18, 19, 19.9, 19, 18, 16.7, 15.6, 14.7, 13.8, 13.8, 14, 14.9, 15.4, 15.1, 15.3, 15.6, 16.7, 17.1, 18, 19, 19.9, 24.1, 27, 28.9, 28.9, 28, 28.9, 28, 26.1, 25, 24.1, 21, 19, 17.1, 16, 16, 16, 15.1, 15.1, 14, 12.9, 12.9, 14, 15.1, 16, 18, 19.9, 21.9, 24.1, 26.1, 27, 27, 26.1, 25, 24.1, 23, 21.9, 21.9, 19.9, 19.9, 19, 19.9, 19.9, 21, 21.9, 21.9, 23, 24.1, 26.1, 30, 32, 33.1, 34, 35.1, 34, 35.1, 35.1, 35.1, 34, 34, 33.1, 32, 30.9, 30, 30, 30, 30.9, 30, 30, 28.9, 28.9, 28.9, 30, 30.9, 32, 34, 35.1, 35.1, 35.1, 34, 34, 33.1, 33.1, 33.1, 33.1, 30.9, 30.9, 30.9, 28.9, 28, 26.1, 27, 27, 28, 27, 28.9, 30, 30, 30.9, 30.9, 30.9, 30.9, 30.9, 30.9, 30.9, 30.9, 28.9, 28.9, 28, 27, 27, 27, 27, 24.1, 21.9, 21.9, 19.9, 19.9, 19.9, 19.9, 19, 21, 21.9, 23, 25, 26.1, 24.1, 21.9, 21.9, 19.9, 19, 18, 18, 17.1, 17.1, 17.1, 17.1, 18, 18, 18, 18, 19, 19, 19, 19, 19.9, 21.9, 24.1, 25, 27, 27, 27, 26.1, 25, 24.1, 21.9, 21, 19.9, 19, 19, 18, 18, 19, 18, 18, 18, 19, 19.9, 21.9, 25, 28, 30, 33.1, 33.1, 33.1, 32, 30.9, 30, 28.9, 28, 27, 27, 25, 24.1, 23, 21.9, 23, 23, 23, 23, 21, 24.1, 26.1, 30, 32, 34, 34, 36, 35.1, 35.1, 33.1, 32, 32, 32, 33.1, 33.1, 33.1, 34, 34, 34, 33.1, 33.1, 32, 33.1, 35.1, 30.9, 34, 37, 39, 39.9, 41, 41, 41, 39.9, 39, 37.9, 36, 35.1, 35.1, 32, 28.9, 28.9, 30, 32, 32, 30, 28.9, 28, 30, 30.9, 36, 39, 39.9, 41, 43, 44.1, 43, 43, 39.9, 39, 42.1, 43, 43, 44.1, 46.9, 44.1, 42.1, 41, 41, 39.9, 39.9, 39.9, 41, 41, 42.1, 41, 44.1, 45, 46, 44.1, 44.1, 44.1, 43, 41, 39.9, 39, 37, 37, 36, 36, 36, 35.1, 35.1, 34, 35.1, 35.1, 35.1, 36, 36, 39, 39, 37.9, 39, 41, 39.9, 37.9, 37.9, 39, 39, 39.9, 39, 39.9, 41, 39, 37.9, 37.9, 37, 35.1, 35.1, 35.1, 36, 37.9, 39.9, 41, 42.1, 42.1, 43, 43, 44.1, 43, 43, 41, 37.9, 37, 37.9, 37, 36, 36, 35.1, 35.1, 35.1, 34, 35.1, 35.1, 35.1, 34, 34, 33.1, 34, 34, 36, 35.1, 36, 36, 34, 30.9, 30.9, 28.9, 28, 27, 26.1, 24.1, 23, 21.9, 21, 21, 19.9, 19.9, 21, 21, 23, 23, 25, 26.1, 26.1, 28, 27, 28, 26.1, 25, 23, 21, 19.9, 19, 18, 17.1, 15.1, 12.9, 10.9, 10, 9, 9, 10, 12, 14, 16, 17.1, 19, 21, 23, 23, 23, 23, 21.9, 21.9, 21, 19.9, 18, 18, 18, 17.1, 18, 17.1, 18, 18, 18, 19, 19.9, 24.1, 28, 27, 28, 30, 30.9, 33.1, 28, 27, 28, 27, 28, 28, 25, 24.1, 24.1, 24.1, 23, 23, 25, 25, 27, 28.9, 30, 32, 35.1, 36, 37, 37.9, 37, 36, 36, 37, 37, 35.1, 33.1, 30.9, 32, 32, 30.9, 27, 30.9, 28.9, 28.9, 28.9, 28.9, 30.9, 32, 34, 36, 35.1, 34, 34, 34, 34, 34, 33.1, 32, 32, 32, 32, 30.9, 30.9, 30, 30, 30, 30, 30.9, 30.9, 30.9, 30, 30, 30.9, 30.9, 32, 32, 33.1, 33.1, 33.1, 30.9, 30.9, 28.9, 28, 26.1, 24.1, 23, 21, 21.9, 19.9, 19.9, 19, 19, 17.1, 16, 19, 21, 24.1, 28, 30.9, 33.1, 35.1, 36, 36, 37, 35.1, 35.1, 35.1, 34, 33.1, 30, 32, 33.1, 33.1, 33.1, 33.1, 33.1, 32, 32, 32, 35.1, 37, 37.9, 37, 37, 35.1, 35.1, 35.1, 35.1, 35.1, 35.1, 35.1, 35.1, 34, 35.1, 35.1, 34, 33.1, 33.1, 33.1, 34, 34, 34, 35.1, 33.1, 33.1, 33.1, 34, 34, 35.1, 35.1, 36, 36, 37, 37, 37.9, 39, 39, 37.9, 37.9, 39.9, 41, 42.1, 41, 39, 41, 39, 41, 43, 45, 46, 46, 46, 46, 46.9, 46.9, 46, 45, 44.1, 43, 43, 42.1, 42.1, 42.1, 42.1, 41, 41, 42.1, 41, 41, 42.1, 42.1, 43, 43, 43, 43, 44.1, 45, 46, 46, 45, 43, 42.1, 41, 39.9, 39.9, 37.9, 36, 36, 37.9, 37, 35.1, 36, 35.1, 35.1, 37, 39, 39, 39.9, 39.9, 39.9, 39, 39, 39, 39, 39, 37.9, 39, 39, 39.9, 39.9, 41, 39, 39, 37.9, 39.9, 39.9, 42.1, 41, 39.9, 39.9, 41, 41, 41, 41, 42.1, 43, 43, 41, 37.9, 36.1, 33.8, 33.3, 32.2, 31.5, 30.9, 30.9, 30.9, 30.6, 29.8, 29.5, 28.4, 28, 30.9, 35.1, 37, 37, 37.9, 37, 37, 36, 36, 36, 34, 33.1, 33.1, 33.1, 33.1, 33.1, 33.1, 33.1, 33.1, 32, 32, 32, 32, 33.1, 34, 34, 36, 37, 37, 37.9, 39.9, 41, 42.1, 41, 39.9, 37.9, 35.1, 35.1, 34, 34, 34, 34, 34, 35.1, 36, 36, 37.9, 39, 41, 45, 48.9, 53.1, 55, 57.9, 59, 59, 59, 57.9, 55.9, 55, 52, 52, 50, 50, 46.9, 46, 45, 46.9, 46.9, 45, 44.1, 45, 46.9, 48, 48, 46, 46.9, 48, 46.9, 44.1, 45, 45, 44.1, 44.1, 42.1, 41, 41, 39.9, 39, 37.9, 37, 37, 37, 37, 37, 36, 37, 37.9, 37.9, 37, 37, 37, 37, 37, 37.9, 37, 37, 37, 37, 37, 37, 35.1, 34, 33.1, 33.1, 32, 32, 32, 32, 32, 32, 32, 32, 33.1, 34, 36, 37, 37, 36, 36, 36, 35.1, 35.1, 35.1, 35.1, 35.1, 35.1, 35.1, 35.1, 35.1, 35.1, 34, 35.1, 36, 36, 37.9, 45, 48.9, 50, 50, 53.1, 53.1, 53.1, 52, 48.9, 46.9, 44.1, 43, 39, 36, 33.1, 32, 30.9, 30, 30, 28.9, 28, 28, 30, 30.9, 30.9, 30.9, 30, 30.9, 30, 30, 28.9, 28.9, 30, 28.9, 30, 30, 30.9, 32, 30.9, 32, 32, 33.1, 34, 35.1, 35.1, 35.1, 37.9, 37, 36, 36, 30.9, 28.9, 30, 30.9, 32, 33.1, 34, 34, 34, 34, 33.1, 32, 30.9, 28.9, 26.1, 25, 24.1, 23, 23, 24.1, 25, 27, 28, 28.9, 30, 30.9, 30.9, 32, 30.9, 30, 28, 27, 25, 23, 21.9, 21, 21, 19.9, 19, 19, 19, 19, 18, 19, 19.9, 23, 24.1, 28, 30.9, 33.1, 34, 35.1, 34, 33.1, 33.1, 33.1, 32, 32, 30.9, 32, 32, 30.9, 30.9, 30, 28.9, 28, 28, 28, 28.9, 30, 32, 33.1, 34, 35.1, 36, 35.1, 35.1, 34, 34, 34, 33.1, 34, 36, 35.1, 35.1, 34, 33.1, 32, 30.9, 30, 28.9, 30, 32, 35.1, 39, 39.9, 39, 42.1, 41, 39.9, 39, 37, 36, 36, 36, 35.1, 35.1, 35.1, 35.1, 35.1, 35.1, 34, 32, 32, 32, 32, 32, 32, 32, 32, 33.1, 34, 35.1, 35.1, 35.1, 35.1, 36, 35.1, 34, 33.1, 32, 30, 28.9, 28.9, 28, 28.9, 28, 28.9, 30, 30.9, 35.1, 37.9, 42.1, 44.1, 45, 48, 48, 48.9, 46, 41, 41, 39.9, 39, 37.9, 39, 39, 37.9, 37.9, 37, 36, 36, 35.1, 35.1, 35.1, 36, 37.9, 39, 41, 42.1, 42.1, 43, 39.9, 39.9, 36, 36, 35.1, 32, 28.9, 27, 27, 24.1, 21, 19.9, 19, 18, 17.1, 17.1, 16, 17.1, 18, 18, 21, 24.1, 25, 27, 28, 28.9, 28, 25, 24.1, 21.9, 19, 17.1, 17.1, 16, 16, 16, 16, 16, 16, 16, 17.1, 19.9, 23, 28, 32, 34, 35.1, 36, 39, 36, 35.1, 34, 37, 33.1, 32, 32, 30.9, 30.9, 30, 30, 30, 30.9, 32, 32, 30.9, 30.9, 32, 32, 32, 33.1, 33.1, 33.1, 33.1, 33.1, 32, 32, 32, 30.9, 30.9, 30.9, 30.9, 30.9, 30, 30, 30, 28.9, 30.9, 28.9, 30, 32, 35.1, 37, 37, 39, 39.9, 42.1, 41, 42.1, 39.9, 37.9, 35.1, 33.1, 32, 30, 28, 26.1, 24.1, 23, 21.9, 21.9, 21, 21, 21.9, 25, 27, 28.9, 30.9, 34, 33.1, 36, 37, 37, 36, 33.1, 32, 32, 33.1, 32, 32, 32, 30.9, 28.9, 30, 28.9, 28, 27, 28, 32, 37.9, 37.9, 42.1, 43, 43, 43, 43, 44.1, 39.9, 39, 39.9, 39.9, 37.9, 36, 37, 36, 35.1, 34, 36, 34, 33.1, 32, 33.1, 37, 42.1, 43, 45, 46, 46, 46, 44.1, 41, 41, 39.9, 37.9, 37.9, 37, 37, 37, 37, 36, 34, 33.1, 33.1, 34, 34, 34, 35.1, 35.1, 36, 36, 37, 39, 39, 39.9, 39.9, 39.9, 39.9, 39.9, 37.9, 37.9, 37.9, 37.9, 37.9, 37, 37, 36, 36, 37, 37, 37, 37.9, 39, 39.9, 41, 46.9, 48.9, 51.1, 50, 51.1, 48, 45, 44.1, 42.1, 39.9, 39, 37.9, 37, 37, 36, 36, 35.1, 35.1, 34, 35.1, 37.9, 41, 45, 46, 48, 48.9, 53.1, 53.1, 54, 54, 51.1, 48, 46.9, 45, 43, 42.1, 41, 39.9, 39, 39, 37.9, 37.9, 37.9, 39.9, 44.1, 48, 51.1, 55, 57, 57.9, 60.1, 59, 63, 64, 60.1, 57, 55.9, 54, 53.1, 52, 48, 46, 48, 45, 43, 41, 39.9, 39.9, 41, 42.1, 46.9, 48.9, 53.1, 48.9, 48.9, 48.9, 48, 46.9, 45, 48, 50, 51.1, 50, 45, 43, 43, 43, 41, 39, 39, 39.9, 41, 42.1, 46, 48.9, 52, 52, 53.1, 55, 54, 46, 43, 42.1, 39.9, 42.1, 44.1, 43, 43, 39.9, 39.9, 39, 39, 39.9, 39.9, 39, 39.9, 41, 41, 41, 42.1, 43, 43, 44.1, 44.1, 42.1, 41, 39.9, 39, 39, 37.9, 36, 36, 35.1, 34, 34, 34, 32, 32, 32, 33.1, 34, 37, 39, 43, 46, 48, 52, 52, 48.9, 46, 46, 43.5, 41.9, 39.4, 37.8, 36.3, 35.4, 33.6, 32.4, 30.9, 29.1, 27.7, 26.4, 27, 30, 32, 34, 35.1, 36, 37.9, 39.9, 39.9, 39.9, 39.9, 37.9, 36, 35.1, 34, 33.1, 32, 32, 32, 30.9, 30, 28, 28, 28, 32, 33.1, 34, 37, 39, 43, 45, 46.9, 46.9, 46.9, 43, 42.1, 39.9, 39, 39, 39, 39, 39, 39, 39.9, 41, 41, 42.1, 42.1, 43, 46, 48, 51.1, 52, 52, 60.1, 62.1, 62.1, 59, 45, 43, 42.1, 42.1, 42.1, 39, 37, 35.1, 34, 34, 33.1, 33.1, 32, 32, 33.1, 34, 37, 37.9, 37, 39, 39.9, 41, 41, 41, 39.9, 37, 36, 35.1, 34, 33.1, 32, 30, 28, 28, 28, 27, 26.1, 26.1, 28, 30, 33.1, 37, 39, 43, 44.1, 46.9, 46.9, 46.9, 48.9, 46.9, 43, 39, 39.9, 37.9, 36, 35.1, 36, 34, 34, 33.1, 34, 34, 36, 37.9, 41, 42.1, 43, 42.1, 43, 50, 46.9, 45, 41, 39.9, 39, 37.9, 37.9, 37.9, 39, 39.9, 43, 43, 44.1, 42.1, 39.9, 39.9, 39.9, 39.9, 39.9, 39.9, 41, 41, 41, 42.1, 42.1, 41, 41, 39.9, 39.9, 41, 39.9, 42.1, 43, 44.1, 44.1, 44.1, 43, 44.1, 44.1, 44.1, 45, 46, 50, 52, 54, 55.9, 55.9, 57, 57, 55.9, 55, 55, 55, 53.1, 48.9, 48, 46.9, 46.9, 46, 45, 43, 42.1, 39.9, 39.9, 39, 41, 43, 44.1, 44.1, 44.1, 44.1, 45, 43, 42.1, 42.1, 42.1, 39.9, 39, 39, 39, 39, 39, 39, 39, 37.9, 37.9, 37, 37.9, 39.9, 43, 45, 46.9, 50, 52, 55, 57, 57.9, 60.1, 59, 57, 55, 52, 51.1, 52, 48, 48, 46.9, 46, 44.1, 42.1, 41, 41, 42.1, 45, 46.9, 48.9, 50, 50, 48.9, 48.9, 48, 46.9, 46.9, 46.9, 46, 44.1, 45, 44.1, 41, 42.1, 39.9, 39.9, 39.9, 39.9, 39, 39.9, 43, 46, 48.9, 52, 55, 51.1, 53.1, 52, 57, 60.1, 55.9, 53.1, 50, 46.9, 45, 45, 44.1, 41, 39.9, 39.9, 39, 39, 37.9, 39, 42.1, 45, 46, 46, 45, 46, 50, 53.1, 57, 59, 57, 55, 53.1, 51.1, 48.9, 48, 48, 50, 50, 50, 51.1, 50, 50, 50, 50, 50, 53.1, 55, 55, 57, 59, 60.1, 55, 54, 53.1, 54, 54, 53.1, 53.1, 53.1, 53.1, 54, 52, 52, 51.1, 50, 51.1, 53.1, 53.1, 51.1, 50, 48, 46.9, 46.9, 48, 46.9, 48, 48.9, 48.9, 48.9, 46.9, 48, 48, 48, 48, 48.9, 48, 46, 44.1, 43, 41, 39.9, 41, 43, 46, 48.9, 50, 52, 54, 55.9, 57, 57, 55.9, 55, 53.1, 50, 48.9, 48, 46, 46, 46, 45, 45, 45, 46, 43, 46.9, 52, 54, 55, 57.9, 57.9, 53.1, 51.1, 51.1, 50, 48, 48, 48.9, 48.9, 48, 46.9, 46, 46, 46, 45, 46, 46, 48, 51.1, 55.9, 64, 70, 73.9, 79, 81, 82, 80.1, 79, 77, 73.9, 73, 70, 68, 64, 62.1, 60.1, 60.1, 52, 52, 52, 51.1, 48, 46.9, 46, 46, 48, 50, 48.9, 48.9, 48, 48, 48, 46.9, 46.9, 46, 46, 45, 46, 46, 46.9, 46, 45, 46, 45, 44.1, 43, 43, 42.1, 42.1, 42.1, 42.1, 41, 39, 39.9, 41, 39.9, 39.9, 39.9, 39.9, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39.9, 42.1, 42.1, 43, 43, 44.1, 44.1, 45, 45, 45, 45, 45, 43, 43, 43, 43, 42.1, 42.1, 42.1, 41, 42.1, 42.1, 41, 39.9, 39, 37.9, 39, 39.9, 39.9, 41, 39.9, 42.1, 42.1, 43, 44.1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 44.1, 44.1, 44.1, 46, 46.9, 50, 51.1, 48.9, 46.9, 46.9, 46.9, 46, 45, 45, 44.1, 44.1, 43, 43, 43, 43, 44.1, 44.1, 44.1, 44.1, 43, 44.1, 44.1, 44.1, 46, 45, 45, 44.1, 45, 44.1, 43, 42.1, 42.1, 39.9, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42.1, 43, 45, 45, 44.1, 45, 44.1, 44.1, 45, 45, 45, 44.1, 43, 44.1, 44.1, 44.1, 44.1, 44.1, 45, 46, 46, 46, 46, 46, 46.9, 48.9, 51.1, 53.1, 53.1, 51.1, 54, 55, 55, 57, 57, 54, 50, 48, 46.9, 46.9, 46, 46, 45, 45, 44.1, 44.1, 44.1, 46, 48, 53.1, 60.1, 62.1, 66, 68, 70, 71.1, 72, 71.1, 71.1, 63, 57, 53.1, 53.1, 53.1, 52, 52, 52, 52, 51.1, 48, 46.9, 46.9, 50, 50, 52, 52, 53.1, 52, 50, 50, 48.9, 46.9, 46.9, 46, 44.1, 44.1, 45, 44.1, 43, 43, 43, 43, 43, 42.1, 42.1, 43, 43, 43, 45, 46, 45, 45, 44.1, 44.1, 44.1, 43, 42.1, 41, 41, 41, 41, 39.9, 39.9, 39, 39.9, 39, 39.9, 39.9, 39.9, 39.9, 41, 42.1, 43, 45, 45, 45, 46, 44.1, 44.1, 44.1, 45, 45, 43.7, 43.2, 42.8, 42.3, 41.9, 41.2, 40.8, 40.5, 40.1, 39.2, 38.1, 37.6, 41, 44.1, 46.9, 48.9, 52, 54, 55.9, 55, 53.1, 53.1, 50, 48.9, 46.9, 44.1, 44.1, 43, 42.1, 42.1, 42.1, 41, 41, 39.9, 39.9, 41, 43, 45, 48, 51.1, 54, 55.9, 57.9, 61, 62.1, 63, 61, 60.1, 55.9, 54, 53.1, 51.1, 48.9, 46, 46, 46, 46.9, 46.9, 46.9, 46.9, 48, 50, 53.1, 54, 55.9, 57.9, 60.1, 57.9, 55.9, 53.1, 52, 52, 52, 51.1, 48.9, 48, 48.9, 48.9, 48, 45, 43, 43, 42.1, 43, 45, 48, 50, 53.1, 53.1, 53.1, 54, 54, 54, 54, 53.1, 53.1, 53.1, 52, 51.1, 51.1, 50, 48.9, 48, 48, 48, 48, 46.9, 46.9, 46, 46, 46, 45, 45, 45, 45, 46, 46.9, 46.9, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46.9, 48.9, 52, 57, 57.9, 59, 60.1, 61, 61, 60.1, 60.1, 60.1, 57.9, 57.9, 55.9, 55, 55, 55, 54, 54, 54, 54, 54, 54, 55, 55.9, 59, 62.1, 64, 63, 61, 62.1, 61, 63, 64.9, 63, 60.1, 57.9, 55.9, 55.9, 57.9, 57, 55.9, 55, 55, 53.1, 53.1, 52, 53.1, 55.9, 59, 63, 64.9, 66, 66, 66.9, 66.9, 70, 69.1, 66, 62.1, 60.1, 57.9, 55.9, 55.9, 55.9, 55.9, 57, 59, 60.1, 57, 55.9, 55.9, 57, 57.9, 59, 60.1, 59, 60.1, 60.1, 61, 60.1, 60.1, 60.1, 59, 57.9, 57.9, 57, 57.9, 59, 57.9, 57.9, 57.9, 55.9, 55, 55.9, 57.9, 61, 63, 64.9, 66, 66.9, 66.9, 69.1, 68, 69.1, 69.1, 68, 64.9, 64, 62.1, 60.1, 59, 57.9, 57.9, 55.9, 55.9, 55, 54, 53.1, 55, 57, 59, 60.1, 62.1, 60.1, 60.1, 62.1, 64, 64, 63, 64, 64, 63, 60.1, 57.9, 55.9, 55, 54, 52, 52, 51.1, 50, 50, 53.1, 57, 60.1, 64, 68, 66.9, 64.9, 68, 70, 73, 75.9, 72, 69.1, 66, 62.1, 60.1, 59, 57, 55.9, 55, 55, 55, 53.1, 52, 52, 53.1, 54, 57, 59, 59, 61, 61, 64, 68, 69.1, 69.1, 64.9, 62.1, 61, 55.9, 55, 55, 54, 54, 53.1, 53.1, 53.1, 52, 53.1, 54, 55.9, 57, 57.9, 57.9, 57.9, 57.9, 57, 55.9, 55, 54, 53.1, 52, 52, 51.1, 51.1, 50, 50, 50, 50, 48.9, 48.9, 48.9, 48.9, 48.9, 48.9, 48.9, 50, 50, 50, 50, 51.1, 51.1, 51.1, 51.1, 51.1, 50, 51.1, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 51.1, 51.1, 51.1, 52, 52, 52, 51.1, 51.1, 51.1, 51.1, 51.1, 52, 52, 53.1, 53.1, 53.1, 53.1, 53.1, 53.1, 53.1, 53.1, 52, 52, 52, 53.1, 54, 55, 55.9, 59, 57.9, 57.9, 55.9, 55, 54, 52, 51.1, 51.1, 48.9, 48, 48, 48.9, 48.9, 50, 48.9, 48.9, 48.9, 48.9, 50, 51.1, 52, 54, 54, 55, 53.1, 53.1, 54, 54, 53.1, 54, 54, 55, 55, 55, 55, 57.9, 55.9, 54, 54, 54, 53.1, 53.1, 55, 59, 63, 66.9, 66.9, 64.9, 63, 64, 64.9, 68, 69.1, 66.9, 68, 66, 64, 62.1, 62.1, 62.1, 61, 60.1, 59, 57.9, 57.9, 61, 66, 70, 75, 79, 80.1, 78.1, 73.9, 73.9, 73.9, 78.1, 79, 77, 75, 72, 71.1, 69.1, 68, 68, 71.1, 66.9, 66.9, 66.9, 66.9, 68, 64.9, 66, 68, 70, 73.9, 77, 75.9, 77, 75, 72, 69.1, 66.9, 64.9, 64, 63, 62.1, 61, 61, 59, 59, 57.9, 57.9, 57.9, 57.9, 60.1, 63, 66, 69.1, 72, 75, 75.9, 77, 79, 79, 79, 78.1, 75, 73.9, 70, 69.1, 61, 59, 61, 60.1, 61, 60.1, 59, 61, 64, 68, 70, 73.9, 75.9, 78.1, 80.1, 82, 78.1, 75, 78.1, 75, 71.1, 70, 69.1, 68, 66.9, 64, 64, 60.1, 60.1, 59, 59, 61, 63, 66, 70, 73, 75, 75, 73, 71.1, 69.1, 66.9, 66, 64, 63, 63, 62.1, 60.1, 59, 57.9, 57.9, 57, 57, 57, 57, 57, 55.9, 57, 57, 57, 57, 57, 57.9, 57, 57.9, 57.9, 57.9, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 57.9, 57, 57, 59, 61, 63, 63, 60.1, 60.1, 60.1, 60.1, 59, 59, 59, 57, 55.9, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55.9, 55.9, 55.9, 55.9, 57.9, 59, 59, 59, 59, 59, 57.9, 55.9, 55, 55, 55, 55, 55, 55.9, 55.9, 55.9, 55.9, 55.9, 57, 59, 62.1, 64.9, 68, 71.1, 73.9, 75, 75, 73.9, 75, 77, 75, 72, 71.1, 69.1, 68, 66.9, 66, 66, 66, 66, 64.9, 64.9, 66, 66, 68, 70, 73, 75.9, 79, 82.9, 86, 84.9, 82.9, 81, 78.1, 75, 73.9, 72, 69.1, 68, 66, 66, 64.9, 64.9, 64, 64.9, 64.9, 66, 66.9, 69.1, 70, 71.1, 72, 75, 77, 78.1, 79, 77, 73.9, 72, 72, 71.1, 66.9, 68, 66.9, 64.9, 63, 62.1, 60.1, 60.1, 59, 59, 60.1, 61, 61, 60.1, 61, 62.1, 63, 62.1, 62.1, 60.1, 59, 58.3, 58.8, 59.2, 59.7, 60.1, 60.4, 61.5, 62.1, 62.6, 62.8, 63.9, 66, 71.1, 75, 79, 82, 86, 87.1, 88, 87.1, 87.1, 84.9, 64, 80.1, 77, 73, 71.1, 71.1, 70, 68, 66, 66, 64.9, 64.9, 64, 66.9, 70, 73.9, 77, 81, 82.9, 86, 84.9, 87.1, 87.1, 84, 80.1, 77, 73.9, 73.9, 72, 71.1, 70, 69.1, 69.1, 68, 66.9, 66.9, 68, 70, 72, 73, 75, 79, 81, 84, 86, 88, 87.1, 84, 79, 70, 69.1, 69.1, 69.1, 66, 62.1, 62.1, 62.1, 61, 61, 62.1, 61, 62.1, 60.1, 57.9, 60.1, 62.1, 63, 62.1, 63, 62.1, 61, 61, 61, 62.1, 62.1, 63, 62.1, 61, 60.1, 59, 59, 59, 57.9, 57, 57.9, 57.9, 60.1, 60.1, 60.1, 60.1, 60.1, 61, 61, 61, 60.1, 60.1, 57.9, 57, 60.1, 60.1, 60.1, 60.1, 59, 57.9, 57.9, 57.9, 57.9, 57, 57.9, 57, 57, 55, 55.9, 57, 57.9, 57, 55.9, 57, 55, 54, 53.1, 53.1, 53.1, 53.1, 53.1, 53.1, 53.1, 53.1, 53.1, 52, 53.1, 53.1, 53.1, 53.1, 55, 55, 55, 55, 55, 57, 57, 57.9, 57, 55.9, 55.9, 55.9, 55.9, 55.9, 55.9, 55.9, 55.9, 57, 57.9, 59, 57.9, 57.9, 57.9, 59, 62.1, 66, 70, 73, 75, 75.9, 75.9, 71.1, 72, 72, 71.1, 75.9, 72, 70, 70, 66.9, 66.9, 66, 64, 63, 62.1, 63, 62.1, 66, 68, 73, 77, 79, 81, 82.9, 84, 82, 81, 80.1, 80.1, 73.9, 72, 70, 68, 66, 66.9, 66, 64.9, 64.9, 64, 64, 64, 64.9, 68, 70, 71.1, 73.9, 75.9, 77, 80.1, 82.9, 80.1, 81, 80.1, 78.1, 73.9, 73, 71.1, 69.1, 68, 68, 66.9, 66.9, 66, 66.9, 66.9, 69.1, 72, 75, 80.1, 84.9, 88, 89.1, 89.1, 89.1, 89.1, 90, 89.1, 86, 82.9, 80.1, 80.1, 80.1, 77, 75, 75, 73, 69.1, 72, 71.1, 64.9, 63, 62.1, 62.1, 63, 63, 62.1, 62.1, 64, 64, 63, 62.1, 59, 57.9, 59, 62.1, 60.1, 57.9, 59, 61, 57.9, 57.9, 55.9, 55.9, 57, 57.9, 61, 62.1, 63, 63, 62.1, 61, 61, 61, 60.1, 59, 59, 57.9, 57, 55.9, 55, 55.9, 55.9, 55.9, 55.9, 54, 52, 53.1, 55, 59, 62.1, 64, 64.9, 68, 69.1, 71.1, 73, 72, 72, 69.1, 73, 69.1, 64.9, 63, 62.1, 60.1, 59, 57.9, 57.9, 57, 57, 57, 59, 62.1, 66, 70, 73.9, 77, 77, 77, 75.9, 75.9, 75, 73, 70, 66, 63, 62.1, 61, 61, 60.1, 61, 61, 60.1, 59, 59, 61, 66, 69.1, 70, 71.1, 73.9, 75, 73, 73.9, 73, 73, 71.1, 72, 71.1, 69.1, 68, 66.9, 68, 66.9, 66, 64.9, 63, 64, 64.9, 66, 68, 69.1, 72, 72, 75, 75, 75, 75, 73.9, 73, 72, 71.1, 68, 66.9, 66.9, 66.9, 68, 66, 68, 66.9, 66, 66, 66, 66.9, 68, 71.1, 72, 73.9, 75.9, 77, 73.9, 75, 73, 75, 75.9, 73.9, 73, 70, 71.1, 71.1, 70, 68, 66.9, 70, 68, 66.9, 68, 70, 73, 77, 78.1, 81, 82.9, 84, 84.9, 86, 86, 84, 84.9, 82, 79, 79, 75.9, 73.9, 73, 71.1, 68, 66, 64, 61, 60.1, 61, 61, 62.1, 63, 66, 68, 68, 69.1, 69.1, 68, 66, 66, 64, 62.1, 61, 61, 60.1, 60.1, 57.9, 57.9, 57, 55.9, 55, 55, 57, 60.1, 63, 64.9, 69.1, 69.1, 71.1, 72, 72, 71.1, 70, 69.1, 64, 63, 62.1, 62.1, 62.1, 61, 61, 61, 60.1, 59, 59, 60.1, 60.1, 62.1, 62.1, 64.9, 64.9, 64.9, 64.9, 64.9, 64.9, 69.1, 68, 68, 68, 66.9, 64.9, 62.1, 62.1, 62.1, 62.1, 61, 62.1, 61, 60.1, 61, 64, 66.9, 71.1, 75.9, 78.1, 80.1, 78.1, 78.1, 75.9, 77, 75, 73, 72, 71.1, 69.1, 66.9, 66.9, 68, 66, 64, 64, 64, 61, 62.1, 64.9, 70, 75, 80.1, 84, 82, 82, 84, 84.9, 82, 81, 79, 75.9, 73, 70, 66.9, 66, 64.9, 64, 64.9, 64, 64.9, 64.9, 66, 68, 70, 72, 75, 79, 80.1, 81, 82, 82.9, 82, 82, 81, 72, 66.9, 64, 62.1, 62.1, 60.1, 61, 62.1, 61, 59, 57.9, 59, 60.1, 61, 57.9, 55.9, 57, 57, 57, 55.9, 55.9, 57, 57, 57, 57, 57.9, 57, 57.9, 57.9, 57.9, 57.9, 57.9, 55.9, 55.9, 57, 57, 57.9, 59, 59, 59, 60.1, 62.1, 61, 60.1, 57.9, 59, 61, 62.1, 62.1, 62.1, 59, 57, 57.9, 57, 55.9, 55, 54, 53.1, 53.1, 53.1, 55.9, 60.1, 63, 66.9, 68, 68, 71.1, 72, 70, 73, 73.9, 75, 73.9, 73, 64, 69.1, 61, 57, 57, 60.1, 57, 55.9, 57, 54, 60.1, 64, 66.9, 72, 75, 78.1, 79, 80.1, 81, 80.1, 79, 77, 73.9, 71.1, 68, 66, 66, 66, 64.9, 64.9, 66.9, 66, 64.9, 66, 64.9, 68, 69.1, 70, 68, 66, 66, 66, 66.9, 68, 71.1, 70, 69.1, 70.3, 68.9, 68, 67.1, 66.9, 66.6, 66.4, 66, 65.8, 66.2, 66.7, 66, 66.9, 69.1, 71.1, 72, 66.9, 71.1, 69.1, 64.9, 66.9, 66, 64.9, 66, 64.9, 64.9, 66, 66, 63, 63, 61, 63, 62.1, 63, 62.1, 62.1, 64, 64.9, 68, 71.1, 71.1, 73, 64, 66.9, 64.9, 66, 66.9, 69.1, 69.1, 77, 71.1, 69.1, 70, 69.1, 68, 66.9, 68, 66, 66.9, 70, 73.9, 75.9, 78.1, 81, 84, 82.9, 82.9, 82.9, 82.9, 82.9, 82, 79, 72, 68, 70, 70, 68, 69.1, 69.1, 68, 66, 64.9, 64, 66, 69.1, 70, 71.1, 70, 69.1, 66.9, 68, 68, 66, 66, 64.9, 62.1, 61, 60.1, 60.1, 59, 59, 59, 59, 57.9, 60.1, 62.1, 64, 66.9, 70, 75, 78.1, 79, 80.1, 81, 82, 80.1, 81, 80.1, 80.1, 77, 73.9, 77, 73.9, 73, 72, 72, 71.1, 68, 68, 68, 68, 72, 75, 80.1, 81, 84, 84.9, 87.1, 88, 87.1, 82, 84.9, 89.1, 86, 82.9, 80.1, 80.1, 79, 75.9, 75, 73.9, 73, 72, 71.1, 71.1, 73, 75, 78.1, 81, 82.9, 84, 84, 81, 80.1, 75, 78.1, 80.1, 80.1, 75.9, 75, 73.9, 73, 73, 73, 73, 73, 72, 72, 71.1, 73, 73.9, 77, 78.1, 80.1, 82, 84.9, 84.9, 84.9, 84.9, 86, 86, 82.9, 81, 79, 75, 75.9, 73.9, 73, 73, 73, 72, 72, 71.1, 72, 73, 75.9, 78.1, 80.1, 82.9, 82, 84, 78.1, 79, 80.1, 77, 73, 75, 75.9, 73.9, 75.9, 75, 73.9, 73, 71.1, 69.1, 66.9, 66.9, 70, 73, 73, 78.1, 75, 77, 75.9, 75, 75.9, 75, 73.9, 75.9, 73.9, 71.1, 72, 75.9, 73.9, 73, 73, 73, 71.1, 70, 66.9, 68, 71.1, 72, 78.1, 80.1, 84, 84.9, 87.1, 86, 86, 84.9, 86, 84, 82, 79, 75.9, 75, 75, 73, 72, 72, 72, 71.1, 72, 72, 73, 75, 80.1, 81, 84, 82, 87.1, 82.9, 82.9, 82.9, 82, 81, 78.1, 75, 73, 72, 71.1, 69.1, 68, 66.9, 66, 64.9, 64.9, 64.9, 64.9, 64.9, 66.9, 71.1, 73, 73, 73.9, 75, 75, 75, 75.9, 75, 75, 73.9, 71.1, 70, 69.1, 66.9, 66.9, 66.9, 66, 66, 64.9, 64.9, 64, 66, 66.9, 69.1, 70, 70, 66, 69.1, 70, 71.1, 69.1, 70, 68, 69.1, 71.1, 70, 69.1, 69.1, 66.9, 66.9, 66.9, 66.9, 66, 66, 66.9, 68, 70, 72, 73, 71.1, 69.1, 70, 72, 73.9, 73, 75, 73.9, 72, 73, 71.1, 70, 69.1, 69.1, 68, 66.9, 64.9, 64, 64.9, 68, 73, 75.9, 81, 82, 82.9, 80.1, 80.1, 84.9, 84, 81, 77, 75.9, 73.9, 73, 73, 71.1, 70, 70, 70, 70, 70, 71.1, 71.1, 70, 70, 71.1, 71.1, 73.9, 79, 80.1, 84, 81, 88, 87.1, 86, 84, 80.1, 75.9, 73, 71.1, 70, 69.1, 68, 66, 64.9, 64.9, 64, 66.9, 69.1, 71.1, 73.9, 75.9, 78.1, 79, 80.1, 79, 81, 81, 79, 78.1, 77, 75, 73.9, 72, 72, 70, 69.1, 69.1, 70, 71.1, 70, 73, 73.9, 78.1, 81, 84, 87.1, 88, 88, 89.1, 88, 88, 86, 86, 84.9, 82.9, 80.1, 79, 79, 78.1, 77, 75, 73, 73, 73, 75, 78.1, 82, 86, 89.1, 91, 91.9, 91.9, 91.9, 91.9, 90, 88, 84.9, 82, 80.1, 78.1, 75.9, 75.9, 75, 75, 75, 75, 73.9, 73.9, 73, 72, 72, 75, 75, 75, 73.9, 75, 75, 75, 75, 75, 73.9, 71.1, 70, 70, 71.1, 71.1, 70, 69.1, 66.9, 66, 64.9, 64.9, 66, 66.9, 70, 72, 71.1, 71.1, 70, 71.1, 72, 70, 70, 68, 68, 66, 64, 63, 63, 63, 62.1, 63, 63, 63, 60.1, 60.1, 63, 66, 66.9, 69.1, 70, 72, 72, 71.1, 73, 73, 72, 71.1, 68, 68, 69.1, 72, 72, 71.1, 71.1, 71.1, 71.1, 71.1, 72, 72, 72, 71.1, 71.1, 73.9, 78.1, 82, 84, 86, 88, 89.1, 88, 87.1, 86, 82, 80.1, 78.1, 75, 71.1, 69.1, 66.9, 64.9, 63, 63, 62.1, 63, 66, 66.9, 70, 71.1, 72, 73, 73.9, 73.9, 73, 75.9, 75, 73, 70, 66.9, 66, 64.9, 64, 62.1, 61, 60.1, 60.1, 59, 59, 62.1, 64.9, 69.1, 72, 73.9, 75, 77, 78.1, 80.1, 80.1, 80.1, 79, 78.1, 73, 72, 70, 70, 69.1, 69.1, 68, 66.9, 66.9, 66.9, 68, 70, 70, 75, 78.1, 82, 82, 84, 86, 86, 84.9, 84.9, 84, 81, 79, 78.1, 77, 75, 73.9, 73, 73, 72, 72, 71.1, 71.1, 72, 73.9, 78.1, 81, 82, 82.9, 84.9, 86, 86, 77, 75, 75.9, 75, 73, 73, 72, 70, 69.1, 69.1, 69.1, 68, 68, 68, 66.9, 68, 69.1, 69.1, 71.1, 73, 71.1, 73, 70, 68, 69.1, 68, 66.9, 68, 66.9, 66.9, 66.9, 66.9, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66.9, 66.9, 66.9, 68, 66.9, 66.9, 66, 66.9, 66, 64.9, 64, 64, 64, 64, 64, 64, 63, 63, 63, 63, 63, 63, 63, 64, 64, 66, 64.9, 64.9, 64, 63, 63, 63, 62.8, 62.2, 62.2, 62.4, 62.4, 62.6, 62.6, 62.8, 62.8, 62.8, 63, 64, 64.9, 64.9, 70, 72, 72, 75.9, 80.1, 82, 75, 73.9, 78.1, 81, 80.1, 78.1, 78.1, 73.9, 75, 73, 72, 71.1, 70, 69.1, 70, 71.1, 72, 72, 71.1, 71.1, 71.1, 71.1, 70, 70, 69.1, 68, 68, 66.9, 66, 66, 66, 64.9, 64.9, 64, 64, 64, 64, 64, 64, 64.9, 66.9, 71.1, 75, 80.1, 82.9, 84, 82.9, 82.9, 82, 79, 78.1, 77, 75, 75, 73.9, 73, 72, 72, 73, 73, 73, 73, 73, 72, 70, 71.1, 72, 75, 75, 77, 77, 77, 77, 77, 73.9, 71.1, 69.1, 66, 64, 62.1, 60.1, 57.9, 55, 57, 55, 54, 57, 62.1, 66, 66.9, 66.9, 68, 69.1, 69.1, 70, 71.1, 70, 70, 69.1, 66.9, 66, 64, 63, 63, 61, 60.1, 60.1, 59, 59, 59, 61, 64, 68, 71.1, 73.9, 77, 79, 78.1, 79, 79, 78.1, 75.9, 73, 70, 66.9, 64.9, 64.9, 63, 63, 62.1, 63, 63, 63, 63, 64, 66, 69.1, 71.1, 73, 77, 75.9, 75.9, 75, 75, 75, 73.9, 73, 72, 72, 72, 73, 73, 73.9, 73.9, 73.9, 73.9, 73.9, 73.9, 73.9, 75, 75.9, 78.1, 79, 81, 81, 82, 82.9, 82, 82, 80.1, 78.1, 75.9, 73.9, 73, 71.1, 71.1, 70, 68, 64.9, 64.9, 66, 66, 66, 69.1, 71.1, 73.9, 75, 77, 73.9, 84, 82, 81, 77, 80.1, 78.1, 75.9, 75, 75, 73, 72, 68, 64.9, 62.1, 61, 60.1, 60.1, 61, 62.1, 64, 66.9, 70, 71.1, 72, 73, 75, 75, 73.9, 72, 71.1, 70, 68, 66, 64, 62.1, 60.1, 60.1, 57.9, 57.9, 57, 57, 57.9, 62.1, 64.9, 66.9, 68, 71.1, 71.1, 70, 68, 69.1, 69.1, 68, 68, 64.9, 64, 66, 66, 64, 63, 63, 62.1, 62.1, 62.1, 62.1, 63, 64.9, 69.1, 73, 73, 73.9, 75, 75.9, 77, 75.9, 75.9, 75, 73.9, 72, 70, 70, 69.1, 66.9, 66.9, 66, 66, 66, 66, 66, 68, 69.1, 72, 75.9, 79, 81, 82.9, 84, 84.9, 84.9, 86, 84.9, 84, 82, 80.1, 78.1, 75, 75, 72, 70, 69.1, 68, 64.9, 64, 64, 66, 66, 64.9, 64.9, 64, 64, 64, 64, 62.1, 62.1, 62.1, 60.1, 59, 57.9, 57.9, 57.9, 57, 57, 57, 57, 57.9, 57.9, 57.9, 59, 59, 63, 64, 66.9, 68, 68, 68, 70, 68, 64.9, 64.9, 63, 60.1, 60.1, 60.1, 60.1, 59, 60.1, 59, 57.9, 57.9, 57.9, 55.9, 57, 62.1, 66, 66.9, 69.1, 68, 69.1, 70, 70, 68, 68, 68, 66, 64.9, 64.9, 64.9, 64.9, 64, 64.9, 64, 63, 62.1, 62.1, 61, 62.1, 62.1, 64.9, 66.9, 70, 71.1, 70, 73, 71.1, 72, 72, 70, 69.1, 68, 66.9, 66, 64.9, 64, 64, 64, 64, 64, 64, 63, 63, 63, 64, 66, 69.1, 71.1, 75, 75, 75.9, 75.9, 78.1, 73.9, 73.9, 72, 72, 71.1, 70, 69.1, 69.1, 69.1, 69.1, 69.1, 68, 68, 69.1, 70, 71.1, 73.9, 73.9, 75.9, 77, 75, 75.9, 77, 75.9, 73.9, 72, 70, 70, 69.1, 70, 70, 68, 64.9, 64.9, 64, 63, 62.1, 63, 66, 69.1, 71.1, 69.1, 71.1, 70, 70, 69.1, 69.1, 69.1, 69.1, 68, 64.9, 64.9, 64, 63, 63, 63, 63, 64, 64, 64, 63, 64, 66, 70, 72, 73.9, 75, 75, 81, 82.9, 82.9, 84, 79, 75.9, 73, 72, 70, 69.1, 66.9, 66, 64.9, 64, 64, 63, 63, 63, 66.9, 71.1, 75, 79, 82.9, 84.9, 87.1, 86, 86, 86, 84.9, 81, 75, 73, 71.1, 71.1, 70, 68, 66.9, 66, 64.9, 64.9, 64.9, 64.9, 68, 72, 75, 79, 82.9, 84.9, 86, 87.1, 87.1, 86, 84, 79, 75.9, 73, 72, 72, 72, 72, 73, 73, 72, 71.1, 71.1, 72, 73.9, 75.9, 81, 84, 81, 79, 81, 78.1, 75.9, 73, 72, 71.1, 70, 71.1, 71.1, 71.1, 69.1, 70, 68, 69.1, 68, 66.9, 66.9, 66, 66.9, 69.1, 70, 72, 72, 71.1, 73.9, 73.9, 78.1, 75.9, 80.1, 79, 81, 79, 80.1, 79, 79, 78.1, 77, 77, 78.1, 77, 77, 75.9, 79, 80.1, 82.9, 86, 84, 80.1, 79, 79, 78.1, 75, 73, 71.1, 69.1, 70, 69.1, 69.1, 68, 66.9, 66.9, 66.9, 66.9, 66.9, 66, 64.9, 66, 66, 66, 66.9, 68, 66, 69.1, 70, 70, 72, 71.1, 71.1, 73.9, 73, 73, 72, 71.1, 73.9, 73, 73.9, 73.9, 73, 73.9, 73.9, 75, 75.9, 77, 84, 84, 84.9, 87.1, 86, 82.9, 82.9, 82.9, 80.1, 78.1, 75.9, 75.9, 73.9, 73.9, 73, 72, 71.1, 70, 69.1, 69.1, 68, 71.1, 75.9, 79, 82, 82.9, 84.9, 84.9, 87.1, 84.9, 84.9, 84, 81, 77, 75, 72, 71.1, 68, 66, 66.9, 66, 64.9, 64.9, 64, 64, 66.9, 72, 75.9, 75.9, 78.1, 79, 79, 77, 77, 78.1, 75.9, 73, 70, 66.9, 66.9, 68, 68, 64.9, 66, 66, 64, 64, 63, 64, 69.1, 73, 73.9, 75, 79, 82, 79, 78.1, 77, 77, 75, 72, 70, 68.2, 67.8, 65.8, 64.8, 64.2, 62.8, 61.7, 60.8, 59.7, 59.5, 60.6, 62.1, 66.9, 71.1, 73.9, 75.9, 77, 78.1, 79, 77, 77, 75, 72, 72, 71.1, 70, 69.1, 68, 68, 68, 69.1, 68, 68, 66.9, 66, 66, 62.1, 63, 62.1, 61, 61, 59, 59, 57.9, 59, 57.9, 57.9, 57.9, 57.9, 57.9, 57.9, 57, 55.9, 55, 55, 55, 54, 53.1, 53.1, 55.9, 55.9, 59, 63, 63, 63, 64.9, 66.9, 70, 66, 68, 63, 61, 61, 60.1, 60.1, 59, 57.9, 57.9, 57, 55.9, 55.9, 55.9, 57, 60.1, 63, 66, 69.1, 72, 72, 73.9, 72, 71.1, 70, 70, 68, 64.9, 64, 63, 63, 64.9, 64, 64, 63, 64, 64.9, 64.9, 64.9, 66, 68, 69.1, 70, 70, 70, 69.1, 70, 73.9, 71.1, 72, 72, 70, 66.9, 64, 63, 61, 60.1, 59, 57.9, 57, 55.9, 55, 55, 57, 60.1, 61, 63, 66, 68, 69.1, 69.1, 70, 70, 68, 66.9, 64.9, 63, 61, 59, 57.9, 57, 57, 55.9, 55, 55, 54, 55, 57, 62.1, 64.9, 66.9, 69.1, 72, 72, 70, 70, 70, 71.1, 70, 69.1, 68, 66.9, 64.9, 64, 64, 62.1, 61, 60.1, 59, 57.9, 57.9, 62.1, 66.9, 70, 71.1, 73.9, 75, 77, 64.9, 64, 64, 62.1, 61, 60.1, 59, 59, 59, 57.9, 59, 55.9, 57, 55, 54, 54, 54, 57, 62.1, 64, 66, 68, 70, 71.1, 66.9, 66.9, 66.9, 68, 64, 62.1, 63, 62.1, 61, 59, 57.9, 59, 60.1, 59, 59, 59, 59, 62.1, 66.9, 70, 70, 72, 73, 71.1, 66, 66, 68, 68, 68, 69.1, 70, 70, 69.1, 68, 64.9, 63, 62.1, 61, 60.1, 60.1, 60.1, 60.1, 63, 64, 66, 60.1, 70, 70, 71.1, 71.1, 70, 69.1, 66, 64, 63, 61, 61, 62.1, 60.1, 59, 57.9, 57.9, 57, 55.9, 55.9, 57, 60.1, 63, 66, 68, 69.1, 70, 72, 72, 72, 72, 70, 68, 66, 64.9, 61, 60.1, 59, 60.1, 60.1, 61, 61, 59, 59, 63, 66, 70, 72, 75.9, 75.9, 78.1, 79, 81, 82, 80.1, 77, 75, 73, 70, 68, 71.1, 68, 66, 64.9, 64, 63, 62.1, 64, 64.9, 72, 79, 81, 84, 84.9, 86, 88, 88, 84.9, 84, 78.1, 73.9, 73.9, 72, 71.1, 71.1, 69.1, 69.1, 68, 64.9, 64.9, 63, 64.9, 66.9, 69.1, 72, 75.9, 77, 79, 79, 80.1, 79, 78.1, 77, 75, 73.9, 71.1, 71.1, 69.1, 68, 68, 66.9, 66, 64.9, 64.9, 64.9, 63, 66.9, 69.1, 71.1, 73.9, 73.9, 69.1, 69.1, 70, 69.1, 64.9, 63, 63, 63, 61, 60.1, 60.1, 61, 62.1, 63, 64, 63, 63, 62.1, 63, 63, 64, 64.9, 64.9, 64.9, 66.9, 68, 68, 68, 64.9, 64.9, 64.9, 66, 64.9, 64.9, 64.9, 64, 64, 63, 64, 64, 64, 62.1, 63, 66, 68, 70, 73.9, 78.1, 80.1, 80.1, 79, 79, 79, 75, 72, 71.1, 71.1, 70, 69.1, 68, 66.9, 66, 66, 66, 64, 64, 63, 64.9, 68, 72, 73, 75, 77, 77, 77, 77, 78.1, 77, 75, 72, 70, 71.1, 70, 70, 68, 69.1, 64.9, 64.9, 64.9, 64.9, 64, 66, 68, 72, 73.9, 78.1, 80.1, 81, 80.1, 81, 80.1, 78.1, 73.9, 72, 72, 72, 70, 66.9, 66, 66.9, 66.9, 66, 64.9, 64.9, 64.9, 66, 70, 70, 72, 73.9, 73.9, 73, 73.9, 72, 69.1, 68, 68, 66.9, 66, 64.9, 64, 61, 61, 59, 55, 55, 54, 53.1, 53.1, 57, 60.1, 60.1, 62.1, 63, 64.9, 66.9, 64.9, 66, 66, 64.9, 63, 63, 62.1, 59, 57, 55, 55.9, 55.9, 55.9, 54, 52, 50, 48.9, 52, 57, 59, 61, 64, 66, 69.1, 70, 70, 69.1, 66, 64, 63, 62.1, 62.1, 62.1, 63, 64, 64, 63, 63, 61, 59, 57.9, 57, 57, 57, 57.9, 61, 64, 66, 64, 64, 64, 62.1, 59, 57, 55.9, 55, 55.9, 54, 52, 51.1, 50, 48, 48, 48, 46.9, 50, 55, 57.9, 61, 63, 64.9, 66, 68, 68, 68, 64.9, 63, 62.1, 57, 55.9, 57.9, 55.9, 55, 54, 55, 54, 53.1, 53.1, 52, 55.9, 57.9, 57.9, 61, 66, 66, 70, 70, 66, 64.9, 63, 61, 60.1, 60.1, 60.1, 61, 62.1, 63, 66, 66, 64.9, 64.9, 64.9, 66, 66.9, 69.1, 72, 73, 73, 73.9, 73, 73, 72, 70, 69.1, 69.1, 68, 64, 63, 60.1, 57.9, 57, 57, 55.9, 57, 55.9, 55.9, 55.9, 55.9, 57, 61, 63, 63, 63, 64.9, 66, 64.9, 62.1, 62.1, 59, 57, 55, 54, 52, 52, 51.1, 48.9, 48.9, 48, 46.9, 48, 46, 48.9, 51.1, 54, 57, 60.1, 62.1, 64, 64.9, 66, 64.9, 64, 61, 59, 57.9, 57, 55, 55, 55.9, 55, 55, 55, 53.1, 53.1, 53.1, 55.9, 60.1, 62.1, 64.9, 64.9, 64.9, 66, 66.9, 66.9, 62.1, 62.1, 60.1, 60.1, 59.4, 59.4, 59.5, 59.7, 59.9, 60.1, 60.1, 60.1, 59.4, 59.4, 59.2, 60.1, 62.1, 63, 64.9, 66, 64.9, 66, 64, 63, 60.1, 60.1, 57.9, 55.9, 55, 53.1, 53.1, 53.1, 53.1, 52, 50, 48, 46.9, 46.9, 48.9, 52, 55, 60.1, 64.9, 66, 66.9, 68, 68, 68, 68, 66, 64, 63, 63, 62.1, 63, 63, 62.1, 62.1, 61, 61, 60.1, 61, 60.1, 62.1, 64.9, 68, 68, 72, 68, 66.9, 64.9, 63, 63, 64, 63, 63, 62.1, 62.1, 59, 57.9, 59, 59, 59, 57, 57, 57.9, 57.9, 53.1, 50, 50, 51.1, 50, 48.9, 48.9, 48, 48, 46.9, 46.9, 46, 45, 45, 45, 45, 46, 45, 45, 46, 44.1, 43, 43, 43, 45, 48.9, 54, 57.9, 61, 64, 66, 66.9, 68, 68, 66.9, 64.9, 63, 60.1, 59, 57.9, 57.9, 55.9, 54, 53.1, 53.1, 52, 52, 52, 55, 57, 59, 63, 66, 70, 71.1, 72, 72, 69.1, 64.9, 62.1, 61, 57.9, 57, 57, 55.9, 55.9, 55.9, 55.9, 57, 57, 57, 57, 59, 61, 62.1, 63, 62.1, 68, 68, 70, 71.1, 69.1, 66.9, 66, 64, 64, 64, 63, 62.1, 61, 60.1, 59, 59, 57, 55, 55, 55, 57, 59, 60.1, 62.1, 63, 63, 63, 63, 60.1, 59, 57, 55.9, 54, 53.1, 51.1, 50, 48.9, 48, 46.9, 46, 46, 45, 45, 46, 48, 50, 52, 52, 55, 57, 57.9, 59, 59, 57.9, 55.9, 55, 54, 54, 54, 54, 55, 55, 54, 54, 54, 53.1, 53.1, 53.1, 55, 57.9, 61, 64, 66.9, 68, 69.1, 69.1, 68, 66.9, 64, 63, 61, 59, 57, 57, 55, 54, 53.1, 53.1, 53.1, 51.1, 50, 51.1, 51.1, 51.1, 52, 51.1, 50, 48, 46, 46, 46, 46, 45, 45, 44.1, 44.1, 44.1, 43, 43, 44.1, 44.1, 44.1, 44.1, 44.1, 44.1, 44.1, 44.1, 45, 46, 48, 48, 48.9, 48.9, 48.9, 48.9, 48, 46.9, 46.9, 46.9, 46.9, 46, 46, 44.1, 44.1, 43, 42.1, 42.1, 41, 41, 41, 44.1, 48.9, 52, 54, 54, 55, 54, 54, 53.1, 51.1, 50, 48.9, 48.9, 48, 46.9, 46, 45, 44.1, 43, 43, 42.1, 42.1, 42.1, 44.1, 46.9, 51.1, 54, 55, 55, 55.9, 55, 55, 54, 53.1, 52, 51.1, 50, 48.9, 46.9, 46.9, 46, 46, 46, 43, 42.1, 42.1, 42.1, 44.1, 48.9, 52, 53.1, 55, 59, 61, 61, 62.1, 60.1, 55, 54, 54, 53.1, 54, 52, 52, 51.1, 50, 48.9, 48.9, 48, 50, 50, 51.1, 54, 57, 59, 59, 59, 59, 57.9, 57, 55.9, 54, 53.1, 53.1, 53.1, 53.1, 52, 52, 52, 52, 52, 52, 52, 52, 51.1, 50, 54, 55.9, 55.9, 55.9, 57.9, 57.9, 59, 59, 57.9, 55.9, 55.9, 55.9, 55.9, 55.9, 55.9, 55.9, 57, 55.9, 55.9, 55.9, 55.9, 55.9, 55, 55, 57, 62.1, 64.9, 69.1, 70, 71.1, 71.1, 71.1, 70, 63, 59, 57, 62.1, 60.1, 57.9, 57, 55.9, 55, 53.1, 52, 51.1, 51.1, 52, 52, 55, 59, 61, 63, 61, 62.1, 66, 66.9, 60.1, 55.9, 55, 55, 53.1, 53.1, 53.1, 53.1, 52, 51.1, 50, 48.9, 48.9, 50, 48.9, 48.9, 51.1, 51.1, 51.1, 55.9, 57, 59, 59, 57.9, 62.1, 60.1, 57, 55, 54, 55.9, 55.9, 55.9, 55.9, 57, 57, 57, 57.9, 59, 59, 57.9, 59, 61, 62.1, 63, 64.9, 64.9, 66.9, 66, 57, 55.9, 55, 53.1, 52, 51.1, 50, 48, 48, 46.9, 46, 45, 44.1, 44.1, 43, 43, 45, 46.9, 48.9, 52, 54, 55, 57, 55.9, 55, 53.1, 52, 52, 50, 50, 48.9, 48, 46, 41, 43, 44.1, 44.1, 45, 45, 46.9, 48.9, 52, 55.9, 55.9, 57, 57.9, 60.1, 61, 57.9, 57, 55.9, 55.9, 55.9, 55, 53.1, 52, 50, 51.1, 51.1, 50, 48.9, 48.9, 50, 51.1, 52, 54, 57.9, 62.1, 59, 63, 68, 66, 64.9, 61, 59, 57.9, 57, 55.9, 57, 57, 59, 60.1, 62.1, 62.1, 61, 61, 61, 62.1, 53.1, 52, 53.1, 57, 59, 61, 61, 60.1, 57.9, 55, 53.1, 52, 50, 48, 46.9, 46, 45, 44.1, 43, 42.1, 41, 39.9, 39.9, 41, 42.1, 46, 48, 50, 53.1, 51.1, 52, 54, 52, 51.1, 48.9, 46.9, 46, 46, 46.9, 46, 45, 43, 41, 42.1, 42.1, 39, 37.9, 39, 46, 50, 52, 55, 57, 55.9, 57, 57, 55.9, 54, 54, 54, 54, 54, 54, 55, 55, 55, 55, 55, 54, 55.9, 55.9, 59, 63, 64.9, 64, 64, 64.9, 62.1, 62.1, 62.1, 59, 57, 55.9, 54, 52, 51.1, 51.1, 48.9, 48, 46, 46, 45, 44.1, 43, 42.1, 43, 44.1, 46.9, 48.9, 51.1, 54, 54, 55, 55, 53.1, 52, 51.1, 50, 48, 48, 45, 45, 43, 42.1, 43, 42.1, 39.9, 39, 39.9, 42.1, 43, 46, 48, 51.1, 53.1, 54, 55, 53.1, 53.1, 52, 50, 50, 48.9, 48.9, 48, 48, 48, 48, 50, 51.1, 52, 51.1, 50, 50, 53.1, 54, 57, 57, 57.9, 57.9, 57.9, 57.9, 55.9, 53.1, 51.1, 47.8, 45.3, 43, 43.5, 42.8, 41.9, 41.2, 40.8, 40.5, 40.6, 41.2, 42.1, 43, 46.9, 51.1, 55, 57, 59, 60.1, 62.1, 62.1, 61, 59, 57.9, 57, 57, 57, 57.9, 57, 57, 55.9, 57, 57, 60.1, 59, 60.1, 60.1, 61, 63, 63, 53.1, 53.1, 53.1, 51.1, 48.9, 48, 48, 46, 45, 44.1, 43, 42.1, 41, 39, 37.9, 37, 36, 36, 35.1, 35.1, 36, 39, 44.1, 45, 46, 46.9, 46, 46.9, 46.9, 46, 46, 45, 44.1, 44.1, 42.1, 42.1, 43, 43, 44.1, 44.1, 44.1, 45, 45, 45, 46.9, 48, 48, 50, 52, 55, 55.9, 55, 54, 54, 53.1, 53.1, 46.9, 44.1, 42.1, 39, 36, 34, 34, 32, 32, 30.9, 30.9, 30.9, 30, 32, 34, 36, 37.9, 39, 39, 39, 39, 39, 39.9, 39.9, 41, 42.1, 43, 44.1, 43, 43, 44.1, 45, 45, 46, 46.9, 46.9, 46.9, 46.9, 48, 42.1, 39, 39, 41, 42.1, 43, 43, 43, 43, 43, 43, 43, 43, 42.1, 43, 43, 44.1, 44.1, 45, 44.1, 45, 45, 45, 45, 46.9, 48, 48.9, 50, 50, 48.9, 50, 48.9, 48.9, 48, 46.9, 46.9, 46.9, 46, 46.9, 46.9, 48, 48, 48, 48, 48.9, 50, 50, 51.1, 52, 52, 52, 51.1, 51.1, 52, 52, 52, 52, 52, 53.1, 52, 53.1, 52, 53.1, 52, 52, 55, 54, 54, 53.1, 55, 63, 64.9, 68, 68, 69.1, 71.1, 71.1, 70, 63, 59, 57.9, 57.9, 57, 55.9, 54, 55, 53.1, 51.1, 50, 46, 43, 42.1, 41, 39.9, 39.9, 41, 42.1, 43, 45, 46.9, 46.9, 46.9, 45, 43, 42.1, 41, 39.9, 39, 37.9, 37, 36, 35.1, 35.1, 35.1, 35.1, 35.1, 36, 37, 37, 39, 39, 39, 39.9, 35.1, 33.1, 33.1, 32, 33.1, 33.1, 34, 35.1, 34, 34, 35.1, 35.1, 35.1, 35.1, 35.1, 35.1, 35.1, 35.1, 35.1, 37, 39, 42.1, 44.1, 44.1, 46, 46, 45, 43, 41, 41, 41, 39.9, 41, 39.9, 37.9, 37.9, 39, 37, 35.1, 33.1, 34, 37, 37, 37, 37.9, 39, 39.9, 41, 37.9, 37.9, 37, 35.1, 32, 30.9, 28.9, 26.1, 24.1, 23, 21.9, 21, 19.9, 19.9, 19.9, 19.9, 19.9, 19, 19.9, 21.9, 24.1, 26.1, 28.9, 30, 32, 33.1, 33.1, 33.1, 32, 32, 30.9, 30.9, 30.9, 30, 30, 30, 30, 30.9, 30, 28.9, 28, 27, 28, 28.9, 30.9, 34, 37.9, 41, 39.9, 39.9, 41, 41, 39.9, 39, 41, 41, 42.1, 42.1, 41, 42.1, 41, 41, 41, 41, 39.9, 39.9, 39.9, 41, 43, 46, 48.9, 46.9, 46.9, 48, 48, 45, 44.1, 43, 43, 42.1, 42.1, 42.1, 39.9, 39, 39.9, 39, 39.9, 39.9, 37, 37.9, 39.9, 43, 44.1, 44.1, 48, 51.1, 51.1, 51.1, 51.1, 51.1, 51.1, 48.9, 50, 50, 50, 48.9, 48.9, 46.9, 46.9, 46.9, 46.9, 46, 45, 45, 44.1, 45, 46, 46, 46, 46.9, 48, 48, 48, 46, 43, 42.1, 44.1, 44.1, 44.1, 44.1, 44.1, 44.1, 44.1, 39, 37.9, 36, 32, 30, 28, 27, 27, 28, 28, 28.9, 30, 32, 30.9, 30.9, 28.9, 28, 27, 27, 25, 23, 23, 21, 21, 19.9, 19.9, 19.9, 19.9, 19.9, 19, 21, 24.1, 26.1, 28, 32, 34, 37, 37, 37, 37.9, 39, 39, 39.9, 41, 41, 42.1, 43, 46, 46, 46.9, 48, 48, 50, 48.9, 50, 50, 46, 39.9, 37.9, 39, 39.9, 42.1, 39.9, 39, 37.9, 35.1, 33.1, 32, 32, 33.1, 34, 34, 34, 34, 33.1, 32, 32, 30.9, 33.1, 34, 35.1, 37, 39, 41, 42.1, 41, 39.9, 39, 37, 37, 36, 35.1, 34, 34, 33.1, 30.9, 30.9, 30.9, 30.9, 30, 30, 30, 32, 37, 39, 42.1, 43, 43, 45, 46, 45, 45, 45, 45, 45, 45, 46, 46, 48, 48.9, 50, 53.1, 52, 53.1, 53.1, 52, 53.1, 53.1, 53.1, 54, 54, 54, 53.1, 53.1, 53.1, 48, 46, 45, 44.1, 43, 42.1, 42.1, 42.1, 42.1, 41, 39.9, 39.9, 39, 39, 39.9, 39.9, 43, 44.1, 46, 46.9, 48, 48.9, 48.9, 48, 46.9, 44.1, 42.1, 42.1, 41, 42.1, 39, 37, 37.9, 37, 35.1, 35.1, 34, 36, 36, 37.9, 39.9, 43, 44.1, 46, 46, 46.9, 48.9, 48.9, 50, 52, 53.1, 57, 60.1, 60.1, 63, 64, 62.1, 61, 59, 57, 55.9, 50, 48, 46.9, 46.9, 46.9, 48, 50, 50, 48.9, 48, 46, 44.1, 42.1, 41, 41, 39, 37.9, 37, 37, 33.1, 35.1, 33.1, 34, 34, 33.1, 34, 36, 39, 42.1, 46, 48.9, 53.1, 55, 55, 53.1, 51.1, 46, 46.9, 45, 43, 42.1, 42.1, 39, 39.9, 39.9, 39.9, 39, 39, 39, 39.9, 41, 44.1, 48.9, 50, 54, 55.9, 55.9, 55, 52, 48.9, 46.9, 46, 44.1, 43, 42.1, 41, 39, 37.9, 37.9, 37, 36, 34, 33.1, 32, 33.1, 34, 35.1, 36, 37, 36, 36, 35.1, 34, 32, 30, 31.5, 30.7, 31.6, 32.9, 35.2, 37.8, 43.2, 45.7, 48, 51.1, 54.5, 58.1, 62.1, 63, 64.9, 62.1, 51.1, 48.9, 46, 45, 44.1, 43, 41, 39.9, 37.9, 37, 36, 36, 36, 34, 35.1, 34, 34, 34, 33.1, 33.1, 32, 33.1, 35.1, 37, 39, 39, 39, 39.9, 39, 37.9, 39, 37.9, 37, 36, 36, 37, 37, 36, 35.1, 35.1, 35.1, 36, 35.1, 35.1, 35.1, 36, 37, 37.9, 39.9, 41, 41, 39.9, 39, 37.9, 37, 35.1, 34, 33.1, 33.1, 32, 30.9, 30, 28.9, 28.9, 28, 28, 28, 27, 27, 27, 28.9, 30.9, 32, 33.1, 34, 34, 34, 32, 30.9, 30, 30, 30, 28.9, 28, 26.1, 26.1, 25, 25, 25, 24.1, 24.1, 24.1, 23, 27, 28.9, 30.9, 35.1, 39, 42.1, 44.1, 44.1, 44.1, 43, 41, 41, 42.1, 43, 43, 43, 44.1, 45, 45, 46.9, 46.9, 46, 46, 46.9, 48, 50, 53.1, 55, 57, 60.1, 57, 55.9, 55, 55, 55, 54, 55, 53.1, 53.1, 48, 44.1, 41, 39, 35.1, 32, 30, 28.9, 28, 28, 28.9, 30, 32, 34, 36, 37, 37, 35.1, 33.1, 32, 30.9, 28.9, 28.9, 28, 27, 28, 28, 28, 28, 27, 27, 27, 26.1, 26.1, 27, 27, 27, 28, 28.9, 28.9, 28.9, 28, 28, 28.9, 30, 32, 35.1, 34, 37, 36, 37, 37, 37.9, 39.9, 37, 37, 36, 36, 42.1, 36, 43, 45, 46, 46, 46.9, 46.9, 46.9, 48, 46.9, 46.9, 46.9, 46.9, 48, 48, 48.9, 48.9, 50, 48.9, 48, 48.9, 48.9, 48.9, 48.9, 50, 48.9, 46.9, 46.9, 46.9, 46.9, 46.9, 46.9, 48, 46.9, 46.9, 46.9, 46.9, 45, 45, 43, 43, 42.1, 41, 39.9, 39, 37.9, 37.9, 39.9, 42.1, 44.1, 46.9, 48, 48, 46.9, 46, 45, 44.1, 43, 42.1, 39.9, 39, 37.9, 36, 35.1, 34, 32, 30.9, 30.9, 30.9, 30.9, 30, 30, 32, 34, 35.1, 36, 36, 36, 36, 35.1, 35.1, 35.1, 36, 36, 36, 36, 36, 36, 36, 35.1, 35.1, 35.1, 35.1, 34, 34, 34, 35.1, 37, 37.9, 39, 39.9, 39.9, 39.9, 39.9, 39.9, 39.9, 39.9, 41, 41, 41, 39.9, 41, 41, 39.9, 39.9, 39.9, 39.9, 39.9, 39.9, 42.1, 45, 51.1, 54, 55.9, 57, 55.9, 55.9, 55, 54, 53.1, 54, 53.1, 53.1, 53.1, 53.1, 53.1, 52, 51.1, 50, 48.9, 48.9, 48.9, 50, 51.1, 54, 57, 62.1, 63, 64.9, 64.9, 62.1, 60.1, 59, 59, 57, 55.9, 55.9, 55.9, 55.9, 54, 52, 50, 48, 46, 44.1, 44.1, 42.1, 39, 39.9, 41, 44.1, 43, 44.1, 43, 39.9, 37, 35.1, 33.1, 32, 30.9, 28.9, 28, 25, 25, 24.1, 23, 23, 21.9, 21.9, 23, 23, 26.1, 30, 30.9, 33.1, 35.1, 36, 37.9, 37.9, 37, 37, 37.9, 39, 39.9, 41, 41, 42.1, 41, 39, 37, 36, 35.1, 35.1, 35.1, 36, 35.1, 36, 37, 35.1, 35.1, 34, 33.1, 32, 30, 28.9, 27, 24.1, 21.9, 19.9, 19, 18, 17.1, 17.1, 18, 17.1, 16, 16, 17.1, 18, 19.9, 23, 24.1, 25, 25, 25, 21.9, 21.9, 19.9, 14, 12.9, 12, 10, 10, 10, 9, 8.1, 8.1, 8.1, 7, 7, 8.1, 9, 10, 12, 15.1, 17.1, 18, 19, 19.9, 19.9, 21, 21, 26.1, 28, 30, 30.9, 33.1, 34, 34, 35.1, 35.1, 34, 26.1, 21, 21, 19, 19.9, 19.9, 21, 23, 24.1, 24.1, 24.1, 23, 23, 23, 23, 24.1, 24.1, 24.1, 24.1, 25, 25, 25, 26.1, 27, 28.9, 28.9, 30, 30, 30.9, 32, 32, 33.1, 33.1, 34, 34, 34, 34, 32, 32, 30.9, 30, 28.9, 28, 28, 27, 26.1, 26.1, 26.1, 25, 23, 23, 21.9, 21.9, 23, 24.1, 27, 28.9, 28.9, 28.9, 28.9, 28.9, 27, 26.1, 25, 21.9, 19, 18, 15.1, 14, 12, 10, 9, 8.1, 6.1, 5, 5, 5, 5, 6.1, 8.1, 10, 12, 14, 14, 12.9, 10.9, 10.9, 10, 9, 9, 8.1, 7, 7, 7, 6.1, 6.1, 7, 6.1, 6.1, 7, 8.1, 9, 12.9, 15.1, 17.1, 19, 19.9, 21, 21.9, 25, 26.1, 27, 25, 23, 24.1, 23, 24.1, 23, 24.1, 24.1, 27, 28, 30, 32, 33.1, 34, 37, 44.1, 39.9, 46, 46.9, 48.9, 51.1, 50, 50, 46, 48, 46.9, 46.9, 46, 42.1, 44.1, 45, 45, 43, 41, 39.9, 39.9, 41, 41, 42.1, 43, 41, 42.1, 41, 39, 37.9, 37, 37, 37, 37, 36, 35.1, 33.1, 33.1, 33.1, 32, 32, 32, 30.9, 30, 28, 27, 27, 28, 28.9, 30.9, 32, 33.1, 34, 34, 33.1, 32, 30.9, 30, 28.9, 28, 27, 26.1, 24.1, 24.1, 24.1, 24.1, 24.1, 24.1, 23, 23, 24.1, 28, 28.9, 32, 32, 33.1, 32, 32, 30, 28.9, 28.9, 30, 28.9, 28.9, 27, 27, 26.1, 25, 25, 25, 26.1, 26.1, 26.1, 25, 28, 30.9, 33.1, 35.1, 35.1, 37, 37, 37, 37, 37, 37, 37, 37.9, 37, 37, 37.9, 39.9, 42.1, 42.1, 41, 39.9, 41, 41, 41, 42.1, 43, 44.1, 45, 46, 46.9, 45, 43, 42.1, 42.1, 41, 39.9, 39, 37, 36, 35.1}; + vector wetBulbHourlyTemp = {23.7, 23.9, 23.5, 23.7, 23, 23.2, 22.6, 24.1, 26.5, 27.9, 28.9, 30.6, 30.3, 31.1, 31.1, 30.5, 29.1, 29.9, 29.7, 29.7, 29.3, 29, 29.7, 27.7, 26.1, 25.3, 25.3, 25.3, 24.6, 24, 23.3, 25.1, 26.7, 29.7, 31.9, 31.4, 31.9, 31.1, 31.3, 31.1, 29.4, 29.9, 29.9, 29.9, 29.4, 28.1, 27.9, 26.4, 25.4, 23.4, 22.6, 21.6, 21.4, 20.6, 19.8, 21.2, 22.2, 22.6, 23.3, 23.9, 24.4, 25.5, 25.5, 24.1, 22.6, 21.9, 20.5, 19.7, 18.1, 17.5, 16.5, 15.9, 15.1, 14.3, 13.4, 13.3, 13.3, 13.3, 13.2, 12.5, 14, 15.6, 17.7, 20, 21, 21, 21.5, 21.8, 20.5, 20.7, 21.4, 22, 22.5, 21.8, 23.4, 22.6, 21.9, 21.8, 21.8, 21.3, 21.8, 22.6, 23.9, 24.3, 26.7, 27.2, 25.6, 24.1, 22.8, 23.5, 21.2, 20.6, 19.4, 19.4, 18.9, 19.7, 20.2, 19.2, 18.1, 18, 16.5, 15.9, 15, 14.7, 13.9, 13.5, 11.7, 12.5, 13.9, 15.4, 17, 17.9, 19, 20.5, 20.3, 19.6, 19.2, 17.9, 17.9, 17.7, 17.4, 17.4, 18, 17.4, 19.1, 20.3, 21.6, 22.6, 23.8, 24.1, 26.4, 26.7, 29.6, 31.8, 36.5, 40.6, 39.7, 38.7, 38.9, 38.5, 37.5, 36.1, 36.1, 35.3, 34.3, 33.9, 33.1, 33.1, 32.1, 31.8, 30.9, 28.9, 27.4, 27.3, 27, 27.1, 27.1, 27.8, 29.1, 29.1, 29.8, 29.8, 29, 28.1, 27.6, 26.9, 26.2, 25.6, 24.8, 23.9, 23.3, 23.5, 23, 22.6, 22.4, 22.6, 22.6, 22.4, 22.4, 22.8, 23.7, 23.5, 24.1, 24.1, 24.8, 25.4, 24.8, 24.9, 24.1, 24.5, 24.3, 24.2, 23.9, 23.2, 23.2, 22.4, 21.7, 21.7, 21, 20, 18, 17.9, 16.8, 16.8, 17.9, 20.7, 20.7, 23.1, 22.6, 24.6, 24, 23.2, 22.6, 22.8, 22.3, 21.8, 22.7, 21.9, 21.9, 22.7, 22.7, 22.8, 22.3, 24.4, 25.9, 28.3, 27.6, 31.1, 32.8, 38.2, 38.2, 45, 47.4, 48.4, 48.8, 48.5, 48.8, 49.3, 50.3, 50.8, 51.5, 52.9, 54.2, 54.7, 55.3, 53.8, 53.3, 52, 52.9, 41.8, 34.6, 31.8, 30.3, 29.3, 28.4, 26.2, 25.5, 25.5, 24.9, 23.4, 22.1, 21.3, 20.8, 20.2, 20.4, 19.8, 20.7, 20.2, 20.2, 20.5, 21, 19.7, 19.7, 19.7, 18.8, 18.8, 20.1, 21.1, 21.4, 22.2, 22, 22, 22.2, 22.7, 23.5, 23.9, 23.5, 24.4, 23.7, 23.9, 24.4, 23.8, 25.9, 26.5, 26.5, 27.3, 30.3, 32.1, 33.1, 32.4, 33.1, 36.3, 38.6, 39.2, 41.4, 40.3, 39.6, 40.3, 40.3, 39.6, 38.2, 39, 40.7, 39.6, 40.1, 41.6, 41.2, 40.1, 40.1, 41.2, 41.2, 40.1, 40.7, 40.5, 42.1, 41.6, 43.1, 42.6, 43.6, 42.6, 41.6, 41.8, 39.9, 39.4, 37.9, 35.9, 33.7, 32.5, 31.3, 31.1, 31.1, 29.8, 28.9, 28.2, 27.9, 28.5, 27.2, 26.2, 27.3, 28, 27.5, 27.5, 28.2, 28.2, 28.2, 28.6, 27.7, 27.5, 28.4, 26.9, 27.3, 28, 28.2, 27.5, 26.9, 24.3, 23.1, 23.3, 23.3, 23, 22.4, 23.3, 24.3, 25.2, 24.9, 25.2, 25.8, 26.1, 26.7, 27.7, 27.7, 27.7, 28, 28.4, 28.4, 28.6, 29, 29, 29, 29, 29, 29, 29, 29, 29.9, 29.9, 30.9, 32, 33.1, 34.9, 35.8, 35.3, 35.3, 35.3, 35.3, 34.9, 34.2, 33.9, 35.3, 34.9, 34.9, 34, 33.1, 34.3, 35.1, 35.7, 35.7, 35.7, 35.3, 35.8, 35.8, 36.4, 36.9, 36.9, 37.1, 36.5, 38.7, 36.7, 35.1, 35.1, 34.8, 34.8, 33.7, 33.7, 33.7, 32.5, 31.6, 30.9, 30.2, 29.9, 29.9, 29.6, 28.6, 29.1, 30.9, 31.8, 32.9, 30, 30.4, 28.7, 29.4, 28.1, 27.2, 25.7, 24.6, 23, 22.6, 21.5, 21.1, 21.3, 20.6, 20, 20.3, 20, 20, 20.3, 19.9, 20.8, 22.4, 23.7, 24.2, 24.1, 24.6, 25.6, 25.8, 25.3, 23, 22.9, 22.1, 22.1, 21.9, 21.8, 21, 20.5, 19.9, 19.9, 20.1, 20.8, 21.4, 21.2, 21.5, 23.3, 25.1, 27.6, 28.9, 29.3, 28.9, 29.6, 29.9, 29.9, 29.9, 30.2, 30.5, 31.2, 32.3, 33.1, 33.9, 32.8, 31.9, 30.5, 30.2, 30.2, 29.9, 29.9, 29.5, 29.5, 29.2, 29.2, 29.5, 30.5, 30.5, 31.1, 31.4, 31.4, 31.4, 31.4, 32, 31.1, 28.1, 25.8, 23.4, 20.6, 17.8, 16.9, 15.6, 15.5, 14.7, 14.6, 14.3, 14.3, 14.3, 14.8, 15.5, 16.3, 16.3, 17.1, 16.8, 16.2, 15.3, 15.3, 15.5, 15.6, 15.1, 15.2, 15.4, 15.4, 14.6, 13.8, 14.5, 13.8, 13.1, 14, 13.3, 14.1, 15.5, 16.6, 17, 19.2, 20.7, 20.7, 21.7, 21.8, 21, 21, 20.2, 18.8, 17.9, 19.1, 18.6, 18.6, 17.8, 17.8, 17.3, 17.3, 17.5, 17.6, 18.3, 19.1, 19.9, 21.2, 23.1, 23.9, 25.5, 26.8, 26.3, 25.7, 24.8, 24.4, 23.7, 22.2, 21.6, 21.4, 20.8, 20.8, 20.2, 19.4, 19.4, 19.6, 19.6, 19.6, 19.6, 19.8, 20.6, 23.5, 25.4, 27.1, 27.8, 28.4, 29, 29, 27.8, 27.3, 26.5, 25.6, 25.2, 24.4, 23.9, 23.9, 23.2, 22.6, 22.6, 21.6, 21.6, 21.6, 21.4, 21.4, 23, 23.7, 25.8, 27.3, 27.8, 28.2, 28.2, 27.5, 25.9, 25.4, 25, 25.2, 23.9, 23.9, 23, 22.8, 22.2, 21.4, 20.6, 20.4, 19.6, 20.6, 21.2, 21.4, 22.6, 24.1, 25.4, 26, 26, 26.6, 25, 24.8, 24.2, 23.3, 22.7, 22.2, 21.8, 20.2, 19.2, 18.9, 18, 15.9, 14, 13.2, 13.1, 12.3, 11.6, 10.6, 11.5, 12.2, 13.8, 14.7, 16.1, 17.7, 18.6, 18.7, 17, 16.3, 15.3, 14.5, 14.3, 13.6, 12.9, 12, 11.2, 11.3, 10.3, 10.3, 10.5, 9.6, 9.6, 9, 9, 9.7, 10.6, 10.6, 12.3, 13.9, 14.8, 15.5, 14.8, 14, 12.6, 11.7, 11, 10.3, 10.3, 10.5, 11.4, 11.8, 11.7, 11.9, 12.2, 13.4, 14.3, 15.1, 16.2, 16.8, 20.2, 22.6, 23.8, 23.8, 23.4, 23.8, 23.3, 22, 20.8, 19.7, 16.8, 14.8, 13.5, 12.5, 12.4, 12.4, 11.7, 11.7, 10.8, 10, 10, 10.8, 11.7, 12.5, 14, 15.7, 17.2, 18.8, 20.3, 20.9, 20.8, 20.1, 19.3, 18.8, 18.1, 17.6, 17.9, 16.2, 16.5, 15.9, 16.7, 16.7, 17.6, 18.7, 18.8, 20.2, 21.5, 23.3, 26.4, 28.4, 30.2, 31.4, 32.4, 31.7, 32.4, 32.4, 31.7, 30.5, 30.5, 29.7, 28.9, 27.9, 27.1, 26.8, 26.6, 26.1, 25.4, 25.4, 24.6, 24.6, 24.6, 25.4, 25.5, 26.4, 27.7, 28.6, 28.6, 28.8, 28.2, 27.9, 27.3, 27.3, 27.3, 27.3, 26.6, 26.4, 26.6, 25.5, 25, 23.8, 24.6, 24.9, 25.8, 24.9, 26.6, 28, 28, 28.5, 28.5, 29.2, 28.8, 28.8, 28.8, 28.5, 28.2, 26.9, 26.1, 25.3, 24.6, 24.3, 24.3, 24.9, 21.6, 19.4, 19, 17.3, 17, 16.8, 16.8, 16, 17.6, 18.1, 19.1, 20.5, 21.2, 19.7, 18, 18, 16.3, 15.5, 14.6, 14.6, 13.9, 13.9, 13.9, 14, 14.8, 14.8, 14.6, 14.7, 15.5, 15.5, 15.4, 15.7, 16.3, 18.1, 19.9, 20.5, 22.1, 22.1, 22.1, 21.3, 20.5, 19.9, 18.1, 17.4, 16.5, 15.7, 15.7, 15, 15, 15.7, 14.8, 14.8, 14.8, 15.7, 16.5, 18.3, 21.3, 23.3, 25.2, 27.3, 27.1, 26.9, 26, 24.9, 24.2, 23.2, 22.6, 22, 22.1, 20.7, 20.1, 19.4, 18.7, 19.4, 19.4, 19.4, 19.4, 18.2, 20.6, 21.8, 24.8, 26.3, 27.6, 27.8, 29.1, 29.1, 28.9, 27.7, 26.9, 27.4, 27.4, 28.4, 28.4, 28.6, 29.1, 29.1, 29.1, 28.6, 28.6, 27.9, 28.9, 29.8, 28.5, 30.2, 31.9, 32.9, 33.4, 34, 34, 34, 33.1, 32.5, 31.6, 30.3, 29.6, 29.6, 27.7, 26.1, 26.1, 27.1, 28.5, 28.2, 26.9, 25.9, 25.3, 27.1, 28, 31.7, 33.7, 34.4, 35.5, 36.5, 38.2, 38, 38, 35.9, 35.3, 37.2, 37.3, 37.3, 37.9, 39.4, 37.5, 36.5, 35.8, 35.5, 34.8, 34.8, 34.8, 35.5, 35.5, 36.5, 36.1, 37.5, 37.9, 38.3, 37.5, 37.2, 37.2, 36.5, 35.5, 35.1, 34.3, 33.5, 33.5, 32.6, 32.9, 32.9, 32.4, 32.8, 31.7, 32.8, 32.8, 33.1, 34, 34, 36.8, 36.8, 36.2, 37.3, 39.2, 37.6, 36.6, 35.7, 36.4, 36.4, 36.9, 36.4, 36.9, 36.4, 35.3, 33.7, 33.7, 32.5, 31.4, 31.4, 31.1, 31.6, 32.7, 33.6, 34.2, 34.3, 34.3, 34.3, 34.3, 34.8, 34.3, 34.1, 33.1, 31.6, 31.3, 32.2, 31.7, 31.1, 31.1, 30.5, 30.9, 30.9, 30.8, 31.4, 31.4, 31.8, 31.4, 31.7, 31.2, 32.1, 32.1, 33.6, 32.1, 31.9, 30.8, 28.2, 25.8, 25.6, 24.1, 23.3, 22.5, 21.6, 20, 19.1, 18.1, 17.5, 17.5, 16.7, 16.7, 17.5, 17.6, 19.1, 19.2, 20.5, 21.4, 21.2, 22.6, 21.9, 22.4, 21.1, 20.1, 18.6, 17, 16.2, 15.5, 14.7, 13.9, 12.2, 10.3, 8.5, 7.6, 6.8, 6.8, 7.6, 9.3, 11.1, 12.8, 13.9, 15.3, 16.8, 18.6, 18.6, 18.6, 18.6, 17.8, 17.8, 17.1, 16.2, 14.8, 15, 15, 14.3, 15, 14.3, 15, 15, 15, 15.9, 16.7, 20.2, 22.8, 22.6, 23.3, 25, 25.4, 26.6, 24.1, 23.4, 24.3, 23, 23.9, 23.7, 21.2, 20.9, 21, 21.2, 20.6, 20.6, 22.5, 22.8, 24.4, 26.1, 27.1, 29, 31.4, 31.9, 33.1, 33.7, 33.5, 32.6, 32.6, 33.1, 33.1, 32.1, 30.5, 28.8, 29.6, 29.3, 28.8, 25.2, 28.5, 26.9, 26.7, 26.7, 26.7, 28.5, 29.6, 31.1, 32.9, 32.4, 31.7, 31.7, 32.1, 32.1, 32.1, 31.2, 29.9, 29.5, 29.5, 29.5, 28.5, 28.5, 28, 27.7, 27.7, 27.7, 28.2, 27.6, 27.1, 26.6, 26.3, 26.4, 26.1, 27.2, 26.6, 27.3, 27.2, 27.3, 25.7, 25.3, 23.9, 23.1, 21.6, 20.2, 19.2, 17.5, 18.1, 16.5, 16.5, 15.9, 15.7, 14.1, 13.3, 15.7, 17.4, 20.4, 23.9, 26.2, 27.9, 29.8, 30.5, 30.8, 31.3, 30.3, 30.3, 30.3, 29.6, 29.1, 27.1, 28.1, 29.1, 29.4, 29.4, 29.4, 29.4, 27.9, 28.5, 28.2, 30.4, 31.9, 32.2, 31.9, 31.9, 31.5, 31.5, 31.8, 32.1, 32.1, 32.1, 31.8, 31.8, 31.1, 31.8, 31.1, 30.2, 29.1, 29.4, 29.7, 30.5, 30.8, 31.1, 32.1, 31, 31, 31.3, 31.8, 32.1, 32.8, 33.1, 34, 34, 34.9, 34.9, 35.8, 36.8, 36.8, 36.2, 36.6, 38.2, 39.6, 40.7, 39.6, 37.3, 39.2, 36.4, 37.5, 38.6, 39.2, 40.3, 40.3, 40.3, 39.2, 39.3, 39, 38.5, 37.6, 37.1, 36.5, 36.5, 36, 36, 35.4, 35.5, 34.8, 34.8, 34.9, 34.3, 34.5, 35.2, 34.6, 35.1, 35.1, 35.1, 35.1, 35.8, 36.2, 37, 37, 36.5, 35.4, 34.9, 34.3, 33.6, 33.9, 32.7, 31.9, 31.9, 33.7, 33.9, 32.4, 33.3, 32.4, 32.8, 34.2, 35.7, 35.7, 36.5, 36.1, 36.1, 35.3, 36.1, 36.1, 38.2, 38.2, 37.9, 38.5, 38.5, 39.9, 39.9, 40.1, 36.8, 36.8, 35.8, 37.3, 37.3, 38.5, 37.5, 35.5, 34.8, 35.1, 34.8, 34.8, 34.8, 35.2, 35, 34.9, 33.1, 31.3, 29.7, 28.4, 28, 27.6, 27.3, 27, 27, 26.9, 26.7, 26.2, 25.9, 25, 25, 27.7, 30, 31.7, 31.9, 32.7, 32.8, 33.1, 32.6, 32.6, 32.9, 33.1, 32.7, 33.1, 33.1, 32.7, 32.7, 32.7, 32.7, 32.7, 32, 32, 32, 32, 33.1, 33.1, 33.1, 33.6, 34.2, 33.5, 33.3, 34.2, 34.8, 34.9, 33.7, 33.4, 32.4, 33.1, 32.1, 31.4, 30.5, 31.1, 31.4, 31.8, 32.4, 33.3, 34, 35, 34.9, 36.9, 40, 41, 42.8, 44.7, 46.1, 46.8, 46.8, 46.8, 45.5, 44.6, 44.1, 42.7, 41.8, 39.8, 38.9, 37.7, 36.9, 35.7, 35.9, 35.9, 35, 35, 35.3, 37.2, 38.4, 38.1, 38, 39.4, 37.9, 38.4, 37.5, 37.2, 37.6, 37.9, 37.2, 37.2, 36.9, 36.9, 35.9, 36.1, 35.8, 34.9, 35.4, 34.9, 35.4, 35.4, 35.1, 35.4, 35.8, 36.3, 36.2, 36.2, 36.2, 36.2, 36.5, 37.1, 36.2, 36.2, 36.2, 36.2, 36.2, 36.2, 35.1, 34, 33.1, 33.1, 32, 32, 32, 31.2, 32, 32, 31.6, 31.6, 32.7, 34, 35.6, 37, 36.5, 36, 35.1, 35.1, 35.1, 35.1, 35.1, 35.1, 35.1, 35.1, 35.1, 35.1, 34.7, 35.1, 34, 34.7, 35.6, 35.6, 37.1, 41.8, 44.5, 43.5, 43, 44.7, 43.9, 43.9, 41.9, 40.7, 39.7, 37.9, 37, 32.9, 30.3, 28.9, 29, 27.2, 26.7, 26.1, 26.1, 25.3, 25.6, 26.9, 27.7, 27.2, 27.2, 26.7, 27.2, 26.7, 26.7, 25.9, 26.7, 27.4, 28.2, 29, 29.6, 30.2, 31.2, 30.9, 32, 32, 33.1, 34, 35.1, 35.1, 35.1, 37.9, 37, 35.5, 35.1, 30.1, 27.9, 27.9, 28.5, 29.5, 30.2, 30.8, 31.1, 32, 30.4, 29.9, 29.8, 27.6, 24.9, 22.6, 21.2, 20, 18.7, 19.7, 20.4, 21.6, 22.1, 23.1, 24.2, 24.8, 25.5, 25, 26, 25.3, 24.8, 23.1, 22.8, 21.6, 18.9, 18.4, 17.8, 17.6, 16.5, 15.2, 15.4, 15.5, 15.7, 14.8, 15.5, 16.5, 18.9, 19.9, 22.9, 24.8, 26.4, 26.2, 27.3, 26.7, 26, 26.1, 26.1, 25.7, 25.2, 24.6, 25.2, 25.2, 24.3, 24.2, 23.4, 23.5, 23.7, 23.9, 23.3, 23.3, 24.8, 26.7, 27.6, 28.7, 30, 30.8, 30.4, 30.9, 31.1, 30.5, 30.2, 30.2, 31.5, 32.2, 32.1, 31.8, 30.8, 30.2, 29, 28, 26.9, 26.1, 26.1, 27.3, 30, 32.1, 32.1, 31.9, 33.7, 33.8, 33.4, 32.9, 32.2, 31.9, 31.9, 32.3, 32.5, 32.1, 32.1, 32.1, 32.1, 32.8, 30.8, 31.6, 31.6, 32, 31.6, 31.6, 32, 32, 32, 32.7, 34, 35.1, 35.1, 35.1, 35.1, 35.6, 35.1, 34, 33.1, 32, 29, 27.9, 27.9, 26.7, 27.6, 26.7, 27.3, 28.6, 29.2, 32.4, 34.6, 37.8, 38.5, 38.6, 40.2, 40.5, 40.6, 39.8, 39.2, 38.7, 37.3, 37.3, 35.8, 35.7, 34.9, 33.9, 33.3, 32.7, 32.2, 31.6, 31.4, 30.8, 30.5, 31.3, 31.8, 32.1, 33.9, 34.9, 34, 35.6, 34.4, 33.3, 31.8, 32.2, 28.2, 25.9, 23.8, 23.1, 22.8, 19.7, 17.3, 16.5, 15.6, 15, 14, 14, 13.1, 13.5, 14.5, 14.5, 16.8, 19.2, 19.9, 21.9, 22.6, 23, 22.1, 19.6, 19, 16.6, 14.6, 13.5, 13.3, 12.6, 12.6, 12.6, 12.5, 12.5, 12.3, 12.6, 13.7, 16, 18, 22.2, 25.2, 26.8, 27.2, 28.5, 31, 28.8, 30, 29.9, 30.1, 27.6, 27.5, 27.3, 26.2, 27, 26.4, 26.7, 27.1, 28, 29, 31.2, 30.2, 30.9, 32, 32, 32, 32.3, 32.3, 33.1, 32.7, 32.7, 32, 32, 32, 30.2, 30.5, 29.5, 28.8, 28.8, 28, 27.7, 26.8, 26.4, 27.2, 26.4, 26.9, 28.8, 30.3, 31.1, 30.9, 32.1, 31.9, 33.2, 31.9, 32, 31.1, 29.4, 27.8, 26, 25.2, 23.8, 22.1, 20.7, 19.4, 18.8, 17.6, 17.7, 16.8, 16.4, 17.6, 19.6, 21.2, 22.9, 24.3, 27.6, 27.1, 28.2, 30.2, 30.2, 29.9, 28.9, 28, 28, 28, 27.3, 27.3, 27.3, 27, 25.6, 25.4, 24.9, 24.8, 23.9, 25.1, 28.2, 33.1, 32.5, 34, 34.2, 32.7, 32.9, 33, 35.5, 33.1, 33.4, 33.1, 33.9, 33.7, 32.6, 32.5, 32.2, 32.1, 31.8, 32.2, 31.1, 29.9, 29, 30.2, 33.5, 36.8, 35.4, 37.6, 37.7, 38.9, 38.9, 39.2, 37.9, 38.3, 38.2, 36.3, 36.3, 36.2, 36.2, 35.7, 35.7, 35.1, 34, 33.1, 33.1, 33.6, 33.6, 34, 34.2, 34.7, 35.1, 35.1, 35.7, 36.8, 36.8, 36.9, 37.7, 37.3, 37.7, 37.7, 36.6, 36.6, 36.6, 36.2, 36.2, 35.7, 35.4, 34.8, 34.8, 34.9, 34.9, 34.9, 36.2, 36.4, 36.9, 37.1, 40.3, 41, 41.9, 41.9, 43.2, 40.6, 38.7, 38.5, 37.4, 35.5, 34.7, 33.9, 33.5, 33.1, 31.9, 31.9, 31.1, 31.1, 30.2, 30.9, 31.6, 34.8, 36.9, 37.3, 38.8, 38.6, 41.1, 40.7, 40.9, 39.9, 37.7, 36.7, 35.2, 34.1, 33.4, 33.2, 32, 31.9, 31.6, 31.3, 30.7, 30.2, 30.7, 32.8, 34.7, 35.8, 37.7, 40, 40.6, 43.1, 43.6, 42.4, 46.4, 46.5, 45.8, 45.4, 44.6, 43.7, 42.6, 41.9, 40.9, 40.6, 40.9, 39.7, 38.7, 37.1, 36.9, 36.9, 37.9, 38.9, 41.4, 42.8, 45.8, 42.5, 42, 43.2, 42.8, 41.9, 41.3, 43.2, 43.8, 44.4, 44.3, 41.8, 40.2, 40.2, 40.2, 40.1, 38.2, 38.5, 39.9, 40.1, 41.2, 43.6, 44.1, 44.8, 44.8, 45, 45.9, 45, 42.3, 39.8, 38.9, 37.7, 38.9, 39.7, 36.9, 36.9, 35.1, 34.8, 34.9, 34, 34.8, 34.1, 34, 33.9, 34, 33.4, 33.1, 33.3, 33.4, 33.8, 34.7, 34.7, 32.8, 31.8, 31.8, 31.8, 31.3, 31.1, 30.7, 30.3, 30.5, 29.6, 29.4, 29.4, 27.4, 26.9, 26.5, 27.4, 27.8, 29.5, 31.3, 33.7, 35.2, 36.5, 38.7, 39.3, 38.6, 38.9, 38.9, 37.4, 35.2, 33.7, 32.5, 31.1, 30.1, 28.2, 27, 25.5, 24.1, 22.8, 22, 22.4, 24, 25, 27, 28.2, 28.5, 29.9, 31, 31, 31, 30.8, 29.6, 28.8, 28.2, 27.7, 27.2, 26.5, 26.7, 26.7, 26, 25.4, 24.3, 24.3, 24.5, 27.3, 28.6, 28.8, 30.2, 30.7, 32.8, 35, 35.8, 36.1, 37.4, 36.8, 35.8, 35.4, 35.3, 36.1, 36.8, 37.7, 38, 38, 38.9, 40.1, 40.5, 41.6, 41.6, 43, 45.4, 47.4, 50, 50.9, 50.9, 54.8, 55.2, 55.2, 53.8, 44, 42.5, 41.2, 40.3, 38.5, 34.9, 33.1, 31.1, 30.2, 30.2, 29.1, 28.6, 27.8, 28.2, 28.6, 29.1, 30.6, 31.4, 30.4, 31.5, 31.6, 32.5, 32.1, 32.2, 31.4, 29.3, 28.8, 28.2, 27.6, 27, 25.9, 24.3, 22.6, 22.4, 22.6, 21.9, 21.3, 21.3, 22.7, 24.3, 26.8, 29.3, 30.5, 33, 33.7, 35.1, 36.5, 36.3, 36.2, 36.1, 33, 35, 34.2, 32.7, 33.2, 32.7, 32.5, 31.4, 31.4, 30.9, 31, 32.1, 33.6, 35.4, 37.6, 38.6, 38.7, 39, 40.2, 39.7, 37.5, 36.4, 35.8, 36.9, 36.8, 37, 37.4, 37.9, 39, 39.9, 43, 43, 44.1, 42.1, 39.9, 39.9, 39.4, 39.4, 39.9, 39.9, 41, 41, 41, 42.1, 41.6, 41, 41, 39.9, 39.9, 41, 39.9, 42.1, 43, 44.1, 44.1, 44.1, 43, 44.1, 44.1, 44.1, 45, 46, 50, 52, 53.3, 54.7, 54.7, 55.8, 56.3, 55.2, 54.3, 54.3, 54.3, 52.5, 47.9, 47.4, 44.4, 43.4, 43, 40.4, 38.9, 37.4, 35.3, 35.1, 34.3, 35.3, 36.8, 37.1, 36.8, 36.5, 36.8, 36.6, 35.9, 35.5, 36, 36, 35.1, 34.9, 34.9, 34.9, 34.9, 35.3, 35.3, 34.9, 33.6, 32.7, 31.9, 32.1, 33.2, 35.7, 36.7, 38.1, 39.1, 40.8, 42.3, 43.8, 45.1, 46, 44.1, 43.1, 42.3, 40.8, 42.5, 42.3, 42.7, 42.4, 41, 40.6, 39.3, 37.7, 36.8, 36.8, 37.5, 39.3, 40.7, 41.4, 43, 43.9, 42.9, 42.9, 42.4, 41.8, 42.2, 42.7, 42.2, 41.3, 40.8, 39.7, 38.3, 39, 38.1, 38.1, 38.1, 37.7, 37.2, 37.3, 39, 40.7, 43.2, 44.7, 46.7, 46, 46.6, 45.6, 48.4, 47.3, 44.3, 43.7, 41, 39.9, 39.4, 38.6, 39.3, 38, 37.7, 38.1, 37.2, 37.2, 37, 38, 40.3, 41.7, 43, 43.6, 43.1, 43.6, 46.9, 48, 49.6, 48.6, 48.8, 48.2, 48, 47.5, 46.8, 46.4, 47, 48.3, 48.9, 48.9, 50, 49.4, 49.4, 49.4, 50, 50, 52.5, 53.3, 53.3, 55.8, 57.2, 57.2, 55, 54, 53.1, 54, 54, 53.1, 53.1, 53.1, 53.1, 53.4, 52, 52, 51.1, 50, 51.1, 52.5, 52, 50.5, 49.4, 48, 46.9, 46.9, 47.4, 46.3, 47.4, 47.9, 47.9, 47.9, 46.3, 47.4, 47.4, 47.4, 47.4, 46.3, 42.7, 40.6, 38.8, 37.1, 35.8, 35.1, 36.1, 37.8, 39.9, 42.1, 43, 44, 42.2, 41.5, 43.1, 42, 40.6, 39.8, 39.1, 37.5, 37.3, 36.2, 35.8, 35.8, 35.8, 35.5, 35.3, 35.5, 35.8, 35.1, 36.8, 39.2, 39.8, 40.3, 44.7, 44.2, 41.9, 40.2, 40.9, 40.6, 42.7, 43.2, 42.9, 40.4, 40.1, 40.6, 40.9, 41.4, 42.1, 42.5, 43, 42.6, 44.1, 46.5, 49.1, 53.5, 57.1, 59, 61, 61.4, 61.1, 60.4, 61, 61.1, 59.6, 59.8, 59.2, 58.5, 56.4, 53.7, 52, 51.4, 50.3, 50.3, 50.9, 51.1, 47, 46.3, 45, 45, 46, 46, 44.5, 43.2, 41.9, 42.7, 42.7, 42.2, 42.2, 42.1, 41.9, 40.8, 41.9, 42.6, 42.2, 42.6, 41.2, 40.2, 39.3, 38.3, 38.3, 39.4, 38.6, 37.1, 36.4, 36.8, 38, 37.2, 37.7, 38.3, 38.1, 38.6, 38.1, 38.1, 38, 38, 38, 38, 37.2, 37.7, 37.7, 37.7, 38, 37.7, 37.2, 37.7, 39.4, 39, 40.2, 40.2, 40, 39.3, 38.3, 38, 39, 38, 38, 37.6, 37.2, 37.6, 37.9, 37.5, 36.4, 36.8, 37.2, 37.7, 37.7, 37.5, 37.3, 35.7, 35.4, 37.2, 38.6, 38.5, 39.6, 39.9, 41.6, 41.2, 42.5, 43.6, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 44.1, 44.1, 44.1, 46, 46.9, 49.4, 49.4, 47.9, 46.3, 46.3, 45.9, 45, 44.5, 44, 43.6, 43.6, 42.5, 43, 42.5, 42.5, 43.2, 43.2, 43.2, 42.6, 42.1, 42.6, 42.6, 42.6, 44, 43.5, 43.5, 42.6, 42.1, 42.2, 41.2, 41.2, 41.2, 38.9, 40.1, 39.6, 39.6, 40.1, 40.1, 40.1, 40.1, 40.1, 40.1, 40.1, 40.7, 40.6, 42.1, 42.1, 42.2, 42.5, 41.7, 41.2, 40.8, 40.1, 40.1, 40, 39, 39.7, 39.7, 38.8, 40.4, 40, 39.3, 40.2, 41, 41, 42.1, 42.6, 43.4, 44.5, 46, 47.4, 47.1, 46.5, 48.8, 48.8, 49.1, 49.6, 49.6, 47, 45, 43.7, 43.1, 42.7, 42.1, 42.1, 41.7, 41.2, 41.2, 41.2, 41.7, 43, 44.6, 47.4, 51, 50.6, 51.9, 52.3, 52.7, 53.1, 53.1, 53.1, 53.1, 51.8, 48.7, 46.2, 45.3, 44.9, 44.3, 44.7, 45.2, 45.2, 45.1, 44.6, 43.4, 44, 44.7, 43.3, 44.3, 44.3, 45.3, 45.2, 45, 45.5, 45, 43.4, 43.4, 42.6, 41.2, 41.2, 41.7, 41.2, 40.6, 40.6, 41.2, 41.2, 41.2, 40.3, 40.3, 40.6, 40.6, 40.6, 41.7, 42.1, 42.1, 41.7, 41.2, 41.2, 41.2, 40.2, 39.8, 39.2, 39.2, 39.2, 39.2, 38.6, 38.1, 38, 38.6, 37.7, 38.1, 38.1, 38.1, 38.1, 38.7, 39.4, 40.2, 41.7, 42.1, 42.1, 42.6, 41.2, 41.7, 41.7, 41.7, 41.2, 39.6, 38.4, 37.8, 37.2, 36.4, 35.4, 34.1, 33.7, 33.1, 32.5, 31.4, 31.2, 33.4, 35.1, 37, 38.4, 40.2, 41.2, 42.4, 41.8, 40.8, 40.8, 38.8, 38.4, 37.5, 36.2, 36.2, 35.3, 35.2, 35.2, 35.4, 34.8, 34.8, 34.1, 34.1, 34.8, 35.9, 37.6, 39.6, 41.6, 43.7, 44.8, 46.1, 47.6, 48.2, 48.1, 47.3, 46.7, 44.6, 43.7, 43.2, 41.9, 40.7, 39.2, 39.2, 39.2, 39.7, 39.7, 39.7, 39.7, 40.3, 41.2, 43.2, 43.7, 45.2, 46.6, 47.6, 48, 47.8, 46.7, 46.1, 46.4, 46.9, 46.5, 45.4, 42.9, 42, 41.7, 39.6, 37.6, 36.5, 37, 36.5, 37, 37.9, 40, 40.9, 43.2, 43.6, 44, 44.7, 45.1, 45.1, 45.8, 45.1, 44.7, 44, 43.4, 43.2, 43.2, 42.6, 42.5, 41.3, 41.7, 42.4, 43.2, 42.2, 43.1, 41.8, 42.7, 43.2, 42.6, 42.6, 42.2, 42.2, 43.2, 43.6, 43.6, 43.2, 42.7, 42.7, 43.2, 42.7, 42.7, 42.7, 42.7, 42.7, 42.3, 42.3, 42.3, 42.3, 42.7, 43.7, 45.6, 47, 47.7, 49, 49, 49.5, 49.7, 49.9, 49.9, 49, 48.3, 48.7, 47.8, 47.5, 46.7, 46.7, 46.2, 46.6, 47, 47, 47, 47, 47.5, 47.5, 49, 49.9, 50.4, 49.7, 49.7, 50.9, 49.8, 49.7, 49.3, 48.2, 48.8, 48.1, 48.2, 47.5, 48.1, 48.4, 48.2, 47.5, 47.8, 47.1, 47.1, 46.5, 47.4, 48.2, 51.1, 51.6, 55.2, 53.5, 53.2, 54.4, 51.3, 53, 50.3, 50.7, 52.4, 51.6, 49.1, 47.8, 47.8, 49.5, 51, 53.5, 53.8, 54.4, 53.5, 53.7, 54.2, 55.8, 56.1, 57.8, 58.3, 57.2, 57.7, 57.7, 58, 57.7, 57.7, 57.1, 56.7, 56.1, 56.1, 55.3, 56.1, 56.7, 56.1, 55.1, 55.1, 53, 52.1, 51.5, 51.5, 52.3, 53.1, 53.5, 53.9, 53.8, 53.1, 53.7, 53.7, 53.7, 53.7, 52.9, 51.8, 51.1, 50.8, 50.3, 49.6, 49.5, 49.5, 48.2, 48.2, 47.8, 47.5, 47.1, 47.8, 48.4, 49.4, 49.9, 51.1, 51.6, 52, 53.3, 54.5, 53.5, 53.6, 54, 54.5, 52.7, 51.6, 50.9, 49.6, 49.7, 48.8, 47.8, 47.8, 47.5, 46.9, 46.9, 48.5, 50.5, 52.4, 54.5, 57.1, 57.1, 55.7, 57.6, 56.9, 54.8, 57.5, 54.7, 53.5, 52.7, 51.1, 49.9, 49.4, 48.4, 47.8, 47.5, 47.5, 48.4, 48.8, 48.8, 48.8, 50.3, 51.2, 53.1, 54.4, 54.4, 55.7, 55.7, 56.5, 58.5, 58.5, 59, 57.7, 56.9, 56.3, 52.5, 52.1, 51.6, 51.2, 51.2, 50.3, 50.3, 50.3, 49.3, 49.8, 50.2, 51, 50.5, 50.5, 50.9, 51.9, 51.5, 51.1, 50.5, 50.2, 50.2, 49.3, 48.8, 49.8, 49.5, 48.9, 48.3, 48.3, 48.3, 48.3, 47.3, 47.3, 47.3, 47.3, 47.9, 47.9, 47.9, 48.3, 48.3, 48.3, 48.3, 48.9, 48.9, 48.9, 48.9, 48.9, 48.3, 48.9, 48.3, 48.3, 48.3, 48.3, 48.3, 48.3, 48.3, 48.3, 48.3, 48.3, 48.3, 49.5, 49.6, 49.6, 49.8, 49.8, 49.8, 49.5, 49.5, 49.5, 49.5, 49.5, 50.4, 50.4, 50.8, 50.8, 50.8, 51.5, 52, 52, 51.5, 51.5, 50.9, 50.9, 50.4, 51.5, 52.4, 53.3, 54.2, 56.1, 56.2, 56.2, 55.2, 55, 54, 51.4, 50.5, 49.6, 48.3, 47.4, 47.4, 48.3, 48.3, 49.4, 48.9, 48.3, 48.3, 48.3, 49.4, 50, 50.9, 52.4, 52.9, 53.3, 52, 52, 52.9, 52.4, 52, 52.9, 52.9, 53.3, 53.8, 53.8, 53.8, 55.6, 54.7, 53.4, 52.9, 52.9, 52.5, 52.5, 53.3, 56.1, 58.1, 60.6, 60.6, 60.5, 59.3, 59.7, 59.9, 61.1, 60.4, 60.6, 61.1, 60.4, 59, 58.5, 58.5, 58.5, 57.4, 57.2, 56.7, 56.1, 56.1, 57.4, 60.4, 62.4, 64.2, 66.4, 67, 66.8, 64.9, 64.9, 64.9, 66.8, 66.4, 65.3, 64.7, 63.2, 62.9, 62.1, 61.8, 61.8, 62.2, 60.6, 60.6, 60.6, 61.2, 63.4, 62.9, 64, 64, 62.9, 63.8, 63.6, 63.2, 58.2, 57.1, 55.5, 53.4, 52.6, 51.1, 50.6, 50.4, 50.4, 49.7, 49.5, 48.6, 48.6, 47.2, 46.8, 47.3, 48.1, 49, 50.4, 51.2, 52.6, 54.1, 55.2, 55.5, 56.2, 56.9, 56.1, 56.9, 56.6, 55.5, 55.4, 53.2, 52.3, 51.1, 50.7, 49.5, 49.5, 49.7, 50.3, 51.1, 52.4, 53.1, 55.3, 56.3, 58.2, 59.1, 60.4, 61.2, 61.9, 61.4, 62, 61.7, 59.6, 57.7, 57.4, 56.9, 57.1, 55.7, 54.4, 54.4, 52.8, 52.4, 52.5, 52.5, 53.2, 54.5, 53.9, 54.1, 56.3, 57.8, 59.3, 59.8, 60.1, 60.5, 59.7, 60.4, 60.3, 59.9, 59.9, 59.7, 57.7, 56.7, 56.1, 56.1, 55.3, 55.3, 55.8, 55.8, 55.8, 55.2, 56.3, 56.3, 55.8, 55.8, 56.3, 56.7, 56.3, 57.2, 57.2, 57.9, 58.5, 58.5, 57.8, 57.2, 57.2, 57.8, 57.8, 57.8, 57.8, 57.8, 57.8, 56.7, 55.8, 56.3, 57.8, 59.2, 60.5, 60.5, 57.7, 58.3, 57.7, 57.7, 56.7, 56.7, 56.7, 55.3, 54.7, 53.8, 53.8, 53.8, 53.8, 53.8, 53.8, 53.8, 53.8, 53.8, 53.8, 54.3, 55.2, 54.7, 54.7, 54.7, 56.7, 57.8, 57.2, 57.2, 57.2, 56.7, 55.6, 54.2, 53.8, 54.3, 54.3, 54.3, 54.3, 55.2, 55.2, 54.7, 54.7, 55.2, 56.3, 59, 61.5, 64.3, 66.6, 68.3, 69.1, 68.9, 68.2, 67.2, 68.2, 68.9, 68.2, 66.6, 67, 65.7, 65.3, 64.3, 64, 64, 63.4, 63.4, 62.9, 62.9, 64, 64.6, 65.3, 66.6, 68.3, 68.5, 68.8, 71.2, 71.6, 71.7, 71.2, 70.5, 69.1, 68.2, 67.9, 66.6, 65.7, 65.3, 63.4, 64, 62.9, 62.3, 62.1, 62.3, 62.9, 64, 64.9, 66.4, 67.9, 68.3, 67.3, 68.9, 68.9, 68.5, 68.2, 68.1, 67.2, 65.9, 65.9, 63.9, 63, 63.4, 63, 61.7, 60.5, 59.6, 58.3, 58.3, 57.8, 57.8, 58.8, 59.7, 59.2, 58.3, 59.2, 59.6, 60.5, 59.6, 60.2, 58.8, 57.2, 56.7, 57.4, 57, 57.7, 57.5, 57.4, 58.1, 58.5, 58.7, 58.9, 59.8, 60.7, 63.9, 65.9, 67.6, 69.3, 69.9, 70.1, 70.4, 69.7, 70.1, 70.4, 64, 69.2, 67, 65.1, 65.1, 64.6, 64.1, 63.4, 62.8, 62.8, 62.3, 62.3, 62.1, 63.6, 65.5, 67.2, 68.9, 70.5, 71.3, 71.6, 71, 71.8, 71.8, 69.6, 68.5, 67.6, 65.9, 64.9, 63.7, 63.4, 62.9, 62.8, 62.8, 61.8, 61.9, 61.9, 62.9, 63.6, 65.4, 66.3, 67.7, 69.3, 69.9, 71.5, 72.6, 72.5, 73.2, 71.5, 68.2, 67.2, 67.7, 67, 67.7, 64.6, 60.8, 60.8, 60.8, 59.2, 59.2, 60.2, 59.2, 57.9, 56, 55.6, 56.6, 57.3, 57.1, 56.9, 57.7, 57.9, 56.9, 56.9, 56.9, 57.3, 56.9, 57.7, 57.9, 57.4, 57.2, 56.7, 56.1, 56.1, 55.6, 54.7, 55.6, 55.6, 57.2, 57.2, 57.2, 57.2, 57.7, 58, 58, 58.6, 58.3, 58.3, 56.7, 56.3, 58.3, 58.8, 58.8, 58.8, 57.8, 57.2, 57.2, 57.2, 57.2, 57, 56.7, 55.8, 55.8, 54.3, 55.2, 55.8, 56.7, 55.8, 54.7, 55.3, 53.8, 52.9, 52.5, 52, 52, 52, 52, 52, 52, 51.5, 52, 50.9, 52, 52, 52, 51.5, 52.1, 52.1, 52.1, 52.1, 52.1, 53.1, 53.1, 54, 54, 53, 53, 53, 53, 53, 53, 53, 54.2, 55.3, 56.1, 56.7, 56.7, 56.1, 56.1, 57.2, 58.5, 60.4, 62.4, 63.3, 64.8, 65, 65, 63.9, 64.2, 63.7, 63.4, 64.4, 63.2, 62, 61.2, 60.2, 60.2, 59.8, 59.7, 59.3, 59.1, 59.3, 59.1, 60.4, 61.1, 64.1, 67.1, 68.2, 69.9, 70, 70.3, 69.9, 68.7, 68, 67.3, 63, 61.4, 59.7, 59, 58.2, 59, 58.7, 57.7, 57.2, 56.4, 56.4, 56.9, 57.2, 59, 60.2, 62.2, 63.8, 65.5, 67, 67.9, 70.6, 69.1, 69.3, 69.1, 68, 67.2, 67.1, 65.8, 64.6, 64, 64, 63, 63, 62.8, 63, 63, 63.9, 65.4, 66.9, 69.1, 70.3, 70.7, 70.1, 70.1, 69.7, 69.7, 69.2, 68.9, 68.8, 68.7, 67.9, 69.7, 67.3, 65.3, 64.7, 63.6, 62.8, 62.1, 63.2, 63.4, 59.9, 58.7, 57.9, 57.9, 57.7, 58.1, 56.9, 56.3, 57.5, 57.5, 57.1, 56.3, 55.6, 55.1, 55.6, 57.9, 57.2, 56.1, 57.2, 58.6, 56.1, 55.1, 52.1, 52.1, 53.1, 52.8, 54.3, 54.8, 54.5, 55.6, 55.6, 55.7, 55.3, 53.8, 52.9, 51.9, 51.9, 48.7, 49.2, 50.5, 50.7, 50.1, 49.6, 48.8, 49.2, 48.8, 47.8, 48, 48.4, 49.7, 50.9, 53.1, 54.1, 55.6, 54.9, 56.4, 57.3, 57.6, 57.6, 57.5, 56.6, 58, 57.3, 56, 55.2, 54.9, 54.4, 54, 54, 53.5, 53.5, 53.5, 55, 56.9, 59.4, 61.2, 62.8, 64.2, 63.6, 63.3, 63.3, 63.3, 63.7, 62.3, 60.7, 58.7, 57.1, 56.3, 55.7, 56.3, 56, 56.3, 56.9, 56.6, 56.1, 56.7, 57.4, 59.8, 60.5, 60.2, 61.2, 62.2, 63.1, 62.8, 64.4, 64.6, 64.6, 63.9, 63.7, 63.4, 62.8, 62.3, 61.9, 62.3, 62.4, 62.2, 61.7, 61.1, 61.5, 62.3, 62.8, 63.4, 64.6, 65.9, 65.9, 66.9, 67.7, 67.7, 67.7, 65.9, 66.4, 65.5, 65.1, 64, 64.3, 64.3, 64.9, 65.3, 64.6, 65.3, 64.9, 64.6, 64.6, 64.6, 65.5, 66, 67.6, 68, 68.4, 69.7, 70.8, 69.1, 69.4, 69, 69.4, 69, 68.4, 68.3, 66.6, 66.9, 66.9, 65.9, 65.3, 64.3, 65.9, 65.3, 64.3, 64.7, 65.5, 66.3, 67.6, 67.4, 67.7, 68.3, 67.5, 67.5, 68.8, 68.8, 67.5, 68.2, 69.8, 68.7, 66.4, 64.4, 63.8, 63.3, 60.1, 56.5, 54.4, 53.5, 51.5, 50.3, 51.5, 51.9, 51.5, 51.5, 53.2, 53.9, 53.9, 54.5, 54.5, 53.7, 52.7, 52.7, 52.3, 51.5, 51.5, 51.5, 51.2, 51.2, 50.1, 50.1, 49.7, 49.2, 49.3, 49.3, 50.1, 51.6, 52.7, 53.5, 55.6, 55.6, 57.5, 57.6, 57.6, 58.8, 58.2, 58.5, 59.7, 59.3, 58.5, 58.5, 58.5, 58, 58, 58.6, 58.3, 57.8, 57.8, 58.3, 58.8, 59.6, 59.6, 59.9, 59.9, 59.9, 60.5, 60.5, 60.5, 62.8, 62.3, 62.3, 62.9, 62.4, 61.1, 60.2, 60.2, 60.2, 60.2, 59.2, 59.7, 58.6, 57.7, 58.6, 59.7, 60.6, 62.2, 62.4, 62, 61.9, 63.3, 63.3, 62.4, 62.1, 61.4, 61.2, 61.4, 61.7, 62.1, 60.6, 60.6, 61.8, 60.4, 59.7, 59.7, 59.7, 58, 58.5, 59.4, 61.2, 63.7, 65.2, 64.4, 64, 63.3, 64, 65.8, 65, 63.9, 61.4, 61.8, 61.2, 60.2, 59, 58.2, 59.8, 60.9, 60.5, 60.3, 59.8, 59.4, 60.4, 61.1, 61.9, 63.2, 64.7, 65.8, 65.1, 65.5, 63.2, 63.2, 64, 63.3, 62.2, 60.9, 57.1, 54.9, 54.1, 54.1, 53.4, 53.8, 54.1, 54.6, 54.4, 54, 54.4, 54.4, 55.3, 54.5, 54.7, 55.3, 55.3, 55.3, 54.7, 54.7, 55.8, 55.8, 56.3, 56.3, 56.7, 56.3, 56.7, 57.2, 57.2, 57.2, 57.2, 55.9, 55.9, 56.3, 56.3, 57.2, 57.8, 58.5, 57.8, 58.3, 59.6, 59.1, 58.3, 56.7, 58.5, 59.1, 59, 59.1, 57.9, 56.1, 55.3, 55.1, 54.7, 53.7, 51.6, 50.7, 50.3, 50.3, 50.3, 51.6, 53.4, 54.9, 55.6, 57.5, 57.5, 60.1, 60.1, 58.7, 59.2, 56.3, 56.5, 55.4, 54.8, 54.4, 54.8, 54.7, 53.5, 53.1, 54.5, 53.1, 53, 52.6, 51.7, 55.4, 56.9, 57.6, 60.1, 60.2, 60.7, 61.1, 61.6, 61.5, 63.2, 63.4, 62.7, 62.2, 60.7, 60, 59.3, 59.3, 59.3, 58.8, 58.8, 58.5, 58.7, 58.3, 58.7, 59.9, 61.8, 62.1, 63.6, 63.4, 63.4, 64, 64, 64.3, 65.3, 67, 65.9, 66.4, 66.9, 65.8, 64.9, 64.7, 64.3, 64.2, 64.2, 64, 64.2, 64.4, 65.1, 64.4, 65.5, 66.4, 67, 68, 64.3, 66.5, 64.6, 61.7, 63, 62.8, 62.3, 62.8, 62.9, 62.9, 64, 64, 62.4, 61.1, 59.7, 61.1, 60.8, 61.7, 62.1, 62.1, 62.7, 62.9, 64.7, 66.5, 65.8, 66.4, 62.7, 63.6, 62.9, 62.8, 63, 64, 64.6, 64.2, 61.7, 62.1, 62.4, 60.9, 60.7, 60.1, 61.1, 59.8, 59.7, 60.7, 61.6, 62.7, 63.3, 64.6, 65.1, 64.3, 64.3, 64.3, 64.6, 65.7, 65, 64.3, 63.7, 63.4, 62.9, 62.4, 62.3, 62.8, 62.8, 62.3, 61.5, 61.1, 60.9, 61.5, 63.3, 64.1, 65.1, 64.8, 64.6, 63, 63.4, 63.4, 62.1, 62.8, 61.7, 60.8, 59.7, 59.6, 59.6, 59, 59, 58.5, 58.5, 57.9, 58.8, 60.2, 61.5, 62.4, 64.1, 65.8, 67.4, 67.6, 68, 68.4, 67.3, 66.4, 66.5, 66.4, 65.2, 65.3, 64.9, 67.6, 66.7, 66.4, 65.9, 66.6, 66.5, 64.7, 65.3, 64.7, 64.7, 66.6, 67.7, 69.2, 69.3, 70.9, 71, 71.1, 70.4, 69.7, 68, 69, 71.3, 70.9, 70, 69.1, 69.7, 68.8, 67.2, 66.9, 66.7, 66.4, 65.9, 65.8, 65.8, 66.4, 66.9, 68, 69.3, 70, 69.6, 66.6, 67.2, 69.1, 71.6, 73.1, 72.3, 71.7, 69.8, 69.4, 69.1, 69, 69, 69, 69, 69, 68.5, 68.5, 68.3, 69, 69.1, 70, 69.9, 69.7, 70.2, 71, 70.3, 70.3, 70, 70.9, 70.9, 71.2, 70.5, 70.2, 69.4, 69.8, 67.9, 68.3, 69, 68.3, 68, 67.3, 67, 65.9, 65.9, 66.1, 66.9, 67.3, 69.4, 68.6, 69.3, 67.4, 67.6, 69.1, 68.9, 67.6, 68.9, 69, 68.4, 66.1, 65.3, 62.8, 62.3, 61.2, 60.4, 59, 59, 60.7, 61.7, 61.7, 63.6, 64.2, 64.2, 64.4, 63.7, 63.9, 63.1, 63.8, 63.3, 64.3, 63.9, 64.7, 65.5, 64.3, 64.1, 64.6, 64.6, 64.6, 64.1, 63, 64, 65.1, 65.9, 68, 68.5, 69.2, 67.2, 70, 70.2, 70.9, 71, 71.5, 71.5, 71.6, 71.2, 70.2, 70.1, 70.1, 70.1, 69.8, 69.2, 69.2, 69, 69.8, 69.8, 70.1, 71.6, 71.7, 71.3, 71.5, 70.1, 70.6, 70.5, 68.3, 69.9, 68.5, 67.1, 66.2, 65.2, 64.5, 64.2, 63.9, 64.6, 63.3, 62.3, 61, 59.4, 59.4, 59.4, 58.3, 58.3, 58.5, 61.1, 61.6, 62.2, 62.7, 63, 63, 63.6, 63.8, 63.6, 64.2, 63.8, 62.1, 61.9, 62.1, 61.2, 61.2, 61.2, 61.1, 61.1, 61.1, 61.7, 61.5, 62.1, 62.3, 63.2, 63.6, 63.6, 63.4, 65.7, 65.5, 65.8, 65.7, 65.9, 64.7, 65.1, 63.9, 62.4, 62.1, 62.1, 61.2, 61.2, 61.2, 61.2, 61.1, 61.5, 61.9, 62.3, 62.9, 64.2, 64.1, 63.4, 62.8, 63.6, 63.7, 64.9, 64.6, 65.3, 65.4, 65.4, 65.8, 65.1, 64.8, 64.6, 63.9, 63.4, 63, 62.3, 61.5, 61.7, 63.4, 65.8, 66.6, 68.7, 68.6, 69.3, 68.5, 69.1, 69.3, 68.6, 67.8, 65.9, 66.1, 65.9, 66.3, 66.3, 63.9, 64.1, 65.5, 65.9, 65.9, 66.6, 66.9, 67.6, 67.2, 67.9, 69, 69, 70.3, 72.1, 71.7, 71.5, 71.4, 72.2, 71.8, 70.2, 68.6, 65.8, 60.9, 59.8, 59.1, 58.7, 58.9, 58.5, 57.7, 56.8, 56.3, 56, 57.6, 59, 60.1, 62.2, 62.4, 62.6, 62.4, 61.9, 61.4, 62.5, 62.2, 62.1, 61.7, 61.8, 61.4, 61.7, 60.9, 60.9, 60.7, 60.5, 60.5, 60.7, 60.7, 60.7, 61.7, 62.8, 64.8, 65.6, 66.6, 67.1, 67.4, 68.1, 69, 68.9, 68.1, 68.1, 68.1, 67.6, 67.8, 68, 68.2, 67.6, 66.9, 67.1, 66.4, 66.4, 66.4, 66.4, 67.7, 68, 69.9, 70.9, 70.9, 70, 69.8, 69.4, 68.5, 69, 70, 69.6, 70.4, 69.9, 68, 65.7, 64.4, 65, 65.3, 65.3, 65.8, 65.8, 65.9, 67.2, 68.3, 68.5, 69.2, 70.9, 70.9, 70.9, 71, 72.1, 72.1, 71.6, 72.1, 72.1, 71.7, 70.5, 67.2, 67.2, 67, 67.6, 65.5, 64, 62.4, 61.5, 60.5, 59.4, 59.3, 59, 60.8, 61.4, 61.2, 61.7, 61.3, 61.7, 60.9, 61.3, 62.5, 60.7, 61.2, 60.5, 59, 59.3, 59.3, 59.9, 59.7, 59.3, 59.3, 59.3, 58.8, 58.8, 59.9, 61.5, 61.9, 62.8, 63.6, 63.2, 63.7, 63.9, 64.6, 63.3, 64.2, 65.1, 64.7, 65.3, 66.4, 68, 68.5, 69, 69.6, 69.6, 70.5, 70.5, 70.5, 70.5, 70.5, 70.5, 70.5, 72.6, 73.8, 73.4, 74, 73.2, 73.2, 72.3, 71.4, 71.1, 70.9, 69.8, 69.1, 68.5, 65.3, 61.7, 59.9, 59, 57.2, 56.6, 57.7, 56.2, 56, 56.8, 56.1, 56, 56.9, 57.3, 58.1, 58.2, 57.9, 57.2, 58.1, 57.8, 57.2, 56.3, 55.2, 54.9, 54.3, 54.4, 54.2, 54.2, 53.8, 53.9, 53.5, 53.5, 54.8, 55.7, 57.5, 58.4, 58.2, 58.7, 59.6, 60.4, 61.2, 60.5, 61.5, 61.1, 61.4, 63.3, 63.2, 62, 62.4, 61.6, 60.9, 60.7, 60.6, 61.3, 61.9, 62.3, 62.9, 62.9, 65.3, 66.8, 69.2, 69.2, 70.3, 70.9, 70.9, 70.3, 71, 70.9, 71.4, 71.3, 71, 70.8, 70.1, 69.8, 69.4, 69.4, 69.2, 68.5, 68.3, 67.6, 68, 67.9, 68.5, 69.3, 68.6, 69.4, 70, 69.2, 68.8, 69.5, 66.9, 66.6, 67.7, 67.1, 66.4, 65.9, 65.5, 65.1, 65.1, 65.1, 62.9, 61.1, 61.1, 60.6, 61.1, 62.8, 63.3, 64.6, 65.1, 64.6, 64.6, 63.6, 64, 65.1, 65.3, 65.5, 66, 66.3, 66.3, 66.3, 66.3, 65.4, 65.4, 65.4, 65.4, 65.4, 65.4, 65.4, 65.4, 65.4, 66, 66, 66, 66, 66.3, 66.3, 66.3, 67.4, 66.3, 66.3, 66, 66.3, 65.4, 64.9, 64, 64, 64, 64, 64, 64, 63, 63, 63, 63, 63, 62.4, 62.4, 63.4, 62.7, 63.4, 62.9, 62.9, 62.7, 62.4, 62.4, 61.7, 61.5, 61.1, 61.1, 61.3, 61.1, 61.1, 61.1, 61.1, 61.1, 61.1, 61.1, 61.5, 62.3, 62.9, 64.1, 65.9, 66.6, 67.7, 69.7, 70.2, 68.2, 67.9, 69.9, 69.9, 69.1, 68.5, 68.5, 67.2, 67.7, 67.1, 65.9, 65.1, 64.1, 63.3, 63.6, 63.9, 64.2, 62.5, 62.2, 58.8, 62.2, 62.9, 62, 61.2, 61.6, 60.7, 60.7, 60.1, 59.8, 60.4, 60.4, 60.5, 60.5, 59.7, 59, 60.3, 60.3, 61.5, 62.1, 62.9, 64.3, 67.6, 69.4, 71.7, 71.2, 71.5, 71.2, 71.2, 70.2, 70.2, 69.9, 68.9, 68.9, 68.9, 69.1, 69, 69.2, 69.8, 70.1, 70.1, 70.1, 70.1, 69, 66.6, 64.1, 63.4, 63.2, 63.7, 61.4, 60.2, 59.6, 59.6, 58.6, 58.3, 57.6, 56.9, 54.8, 53.9, 53.1, 52.4, 51.6, 50.9, 49.7, 50.5, 49.7, 49.3, 50.5, 52.9, 54, 54.4, 54.4, 54.5, 54.8, 55.6, 56.1, 56.4, 56.3, 57.4, 58, 58.1, 58.7, 58.6, 58.1, 57.7, 56.9, 56.6, 56.6, 56.1, 56.1, 56.1, 56.9, 58.6, 60.7, 61.7, 62.8, 63.6, 64, 64.2, 64.3, 64.9, 64.8, 63.9, 61.7, 58.2, 59.7, 58.8, 58.8, 58.1, 58.7, 59.1, 59.9, 59.9, 59.9, 60.5, 61.5, 62.8, 64.6, 65.1, 65.8, 66.5, 66.6, 68.5, 69.4, 70.1, 70.9, 70.3, 70.8, 69.8, 69.2, 69.8, 70.8, 70.8, 71, 71, 71.7, 71, 71, 71, 71, 70.9, 70.2, 68.5, 68.7, 68.7, 67.1, 67, 66.7, 66, 65, 64.8, 63.5, 62.7, 61.6, 61.2, 60.6, 61.2, 60.7, 61.8, 61.1, 61.1, 62.1, 62.1, 62.8, 63.9, 65.1, 65.4, 66.4, 67, 65.9, 69.3, 69.2, 69.3, 69.5, 71.1, 70.4, 69.7, 69.4, 69.4, 63.3, 63.2, 59.9, 56.3, 54.1, 53.2, 52.8, 52.8, 53.2, 53.7, 54.4, 55.1, 56.3, 56.3, 56.7, 57.2, 57.5, 57.5, 57, 56.7, 56.3, 56.1, 55.3, 54.4, 53.5, 52.4, 51.6, 51.6, 51.5, 51.5, 51.5, 51.5, 51.9, 54.2, 55.2, 56.2, 55.6, 56.9, 56.1, 56.3, 54.5, 56.2, 56.2, 56.6, 58.1, 56.8, 56.9, 58.7, 58.7, 57.6, 57.1, 57.7, 57.3, 57.3, 57.9, 57.9, 58.7, 58.8, 60.5, 62.3, 62.8, 63.8, 64.2, 64.4, 64.8, 65, 65.5, 65.3, 64.4, 63.7, 62.4, 62.4, 62.1, 61.3, 61.3, 62.2, 62.8, 62.8, 62.8, 63.4, 64, 64.6, 65.4, 66.1, 66.4, 67.2, 67.7, 67.6, 67.6, 67.6, 68.1, 67.2, 67.6, 67, 67, 66.9, 65.8, 65.3, 63.7, 62, 60.9, 60, 57.7, 56.9, 56.9, 57.3, 57.8, 57.3, 56.8, 57.5, 57.5, 57.5, 57.5, 56.9, 56.9, 56.3, 56.6, 56.1, 56.1, 56.1, 56.1, 55.3, 55.3, 55.3, 55.8, 56.1, 56.1, 56.2, 56.7, 56.1, 58.1, 56.9, 57.1, 57.1, 56.6, 57.1, 56.4, 58.1, 57.3, 57.7, 57.1, 56, 55.5, 54.9, 54.9, 53.9, 53.5, 52.9, 52.5, 52.5, 52.5, 51.6, 52, 53.7, 54.5, 55.2, 56.7, 56.6, 56.7, 56.9, 57.7, 57.6, 57.1, 57.1, 57.8, 57.7, 56.8, 55.2, 56.4, 56.5, 56.8, 57.6, 57.1, 56.9, 56.3, 56.3, 57.3, 57.3, 57.3, 57.1, 58.2, 59.6, 60.7, 59.8, 58.8, 60.1, 60.1, 58.7, 59, 59.5, 58.5, 59.3, 58.8, 58.6, 59, 59.7, 60.3, 60.9, 60.9, 60.5, 60.5, 61.1, 62.1, 63.4, 65.7, 66.5, 67.7, 66.9, 66.1, 67.1, 68, 67.2, 67.9, 67.3, 67.3, 67, 67.2, 67, 67, 67, 66.4, 66.4, 66, 65.3, 64.6, 64.1, 63.9, 64.3, 64.3, 65, 65.9, 65.3, 65.5, 65.3, 62.7, 62.2, 61.9, 61.2, 62, 61.6, 61.2, 60.7, 60, 58.3, 58.3, 58, 57.7, 57.3, 57.7, 57.8, 59, 59.6, 59.5, 59.6, 58.7, 60.7, 60.5, 59.5, 60, 60, 59.5, 59.4, 59.4, 59, 58.7, 59.3, 59.3, 59.3, 59.7, 59.7, 59.7, 59.3, 59.7, 61.1, 62.5, 63.2, 64.4, 65.3, 65.9, 65.6, 66.1, 64.7, 65.1, 66.4, 65.5, 64.6, 63.2, 62, 60.9, 60.1, 59.8, 59.9, 60.3, 60.3, 59.9, 59.9, 59.9, 61.9, 63.4, 65.3, 66.4, 67.7, 68.3, 68.6, 68.1, 68.8, 68.8, 67.6, 68.4, 66.9, 65.9, 64.6, 62.9, 62.4, 61.8, 61.3, 61.1, 61.1, 61.7, 61.7, 61.1, 62.9, 64.2, 65.8, 67.6, 68.4, 68.3, 68.1, 68.9, 68.6, 68.8, 70.9, 69.3, 68.5, 67.6, 67.3, 67.3, 67.3, 67.3, 67.6, 67.6, 67.3, 67, 67, 67.3, 68.4, 69, 70.5, 72.2, 71.4, 70.2, 70.5, 69.1, 68.5, 67.6, 66.6, 66.5, 65.9, 66.5, 66.5, 65.8, 65.1, 65.9, 65.3, 65.7, 65.3, 64.3, 64.3, 63.4, 64.9, 66.4, 66.6, 68, 67.3, 67, 68.4, 68.4, 70.5, 69.8, 70.3, 72.6, 74.4, 73.4, 74.4, 73.9, 73.9, 73.8, 72.8, 72.8, 71.8, 70.8, 70.8, 70.3, 70.7, 69.7, 69.4, 70.9, 70.3, 69.1, 68.8, 68.8, 68.5, 67.7, 67.1, 66.5, 65.7, 65.9, 65.7, 65.7, 65.3, 64.9, 64.9, 64.9, 64.9, 64.9, 64.6, 63.5, 64.6, 64.6, 64.6, 65.5, 66, 64.6, 66.4, 67.2, 67.2, 68, 67.6, 69, 69.8, 69.4, 70.1, 68.5, 69.6, 71.7, 71.5, 71.7, 71.7, 71.5, 71.7, 71, 70.9, 70.2, 70, 71.5, 70.9, 70.3, 71.1, 70.9, 69.3, 69.3, 68.7, 67.9, 67.4, 66.6, 66.6, 65.9, 65.9, 66.3, 65.4, 65.1, 64.8, 63.9, 63.9, 63.4, 63.9, 65.5, 67, 68, 68.4, 69, 68.3, 68.5, 67.2, 65.8, 64, 62.2, 59.9, 59.3, 58.4, 58.8, 57, 56.8, 56.6, 55.6, 55.2, 55.2, 54.9, 56, 57.6, 59.6, 60, 60, 60.4, 60.1, 60.1, 59.9, 60.9, 61.4, 60.9, 61.7, 60.2, 59.7, 59, 60.7, 61.1, 60.5, 61.1, 59.8, 58.6, 58.6, 58.1, 58, 59.5, 59.3, 61.7, 63.1, 61.4, 62.6, 62.1, 63.3, 62.1, 62.1, 61.1, 61.4, 60.5, 60.2, 60.5, 59.4, 58.9, 58.2, 57.1, 56.1, 55.7, 56, 56.6, 58, 59.7, 61.9, 62.9, 62.8, 62.7, 63.3, 64.2, 64.9, 64.8, 65.9, 65.3, 66.6, 65.9, 65.8, 65.5, 65.7, 65.3, 65.3, 65.3, 65.7, 66, 66, 66.3, 64.6, 64.6, 60.2, 61.7, 61.5, 60.5, 60.5, 59, 58.5, 57.9, 58.5, 57.2, 57.9, 56.7, 56.7, 57.2, 57.2, 56.3, 55.9, 55, 55, 55, 54, 53.1, 53.1, 54.2, 54.7, 56.1, 57.7, 59.3, 58.7, 58.4, 58.1, 59.2, 57.3, 57.1, 57.7, 55.7, 56.3, 55.4, 54.9, 53.9, 54, 54, 53.5, 53, 53, 53.7, 54, 56.6, 58.1, 59.3, 60.9, 62.5, 62.5, 63, 62.4, 62.2, 62.4, 62.4, 62.3, 61.7, 61.5, 61.1, 61.1, 62.3, 62.1, 61.5, 61.1, 62.1, 62.3, 62.3, 62.9, 63.4, 64.7, 65.1, 65.5, 65.9, 65.9, 66.4, 66.6, 68.4, 64.6, 64.2, 61.9, 60.2, 58.5, 57.5, 56, 55.3, 54.4, 53.4, 51.9, 50.5, 49.5, 49.3, 49.3, 50.1, 51.6, 52.3, 52.2, 53.4, 54, 54.5, 54, 52.9, 53.5, 52.3, 51.3, 51.6, 51.1, 50.6, 49.6, 49.1, 48.8, 48.4, 47.8, 47.4, 47.8, 47.5, 47.4, 48.4, 50.8, 51.8, 52.6, 52.9, 54.1, 55.6, 56, 56.9, 57.7, 58.3, 58.7, 59, 59, 58.5, 57.7, 57.5, 57.5, 56.9, 56.3, 56, 55.6, 54.5, 55.1, 57.3, 59.7, 60.2, 60.7, 57.9, 57.8, 58.3, 58.8, 58, 57.5, 57.3, 56.9, 56.6, 56.1, 56.1, 56.1, 55.1, 55.6, 54.2, 54, 52.7, 51.7, 51.7, 51.7, 53.5, 57.3, 58.6, 59.8, 58.1, 56.3, 57.7, 60.6, 60.6, 60.6, 60.7, 59, 57.9, 58.1, 57.9, 56.9, 56.7, 56.1, 56.7, 57.7, 57.2, 57.2, 57.8, 57.8, 60.2, 63, 65.5, 64.8, 65.9, 66.3, 65.8, 62.8, 62.8, 64, 64.7, 65.3, 66.4, 67.2, 67.2, 67, 65.9, 62.3, 59.9, 59.1, 58, 57.7, 57.7, 57.2, 57.2, 54.9, 55.3, 55.6, 54.4, 58.2, 57.6, 57.4, 57.7, 56, 55.6, 54.9, 54.4, 54.9, 54.2, 54.6, 54.1, 53.4, 52.9, 51.9, 51.9, 51.5, 51, 50.5, 51.1, 52.4, 53.6, 54.9, 55.5, 56.2, 56.9, 57.6, 57.6, 57.3, 57.6, 56.9, 56.1, 55.7, 55.7, 55.3, 55.4, 56.1, 55.4, 55.4, 56.3, 55.7, 55, 55.6, 57.7, 59.4, 60.8, 61.5, 63.3, 63.3, 64.8, 65.6, 66.6, 67.4, 67.4, 66.5, 66.4, 65.9, 64.1, 63, 63.4, 62.3, 61.5, 60.5, 60.3, 59.9, 59.7, 60.3, 60.5, 63.7, 65.9, 66.6, 67, 67.3, 68.1, 68.2, 68.2, 67.3, 68.7, 67.4, 65.9, 65.4, 64.7, 64.6, 64.6, 63.3, 63.3, 62.9, 61.1, 61.1, 60.5, 61.1, 62.4, 63.3, 64.2, 66.6, 67.6, 68.2, 68.8, 69.2, 66.5, 66.3, 66.5, 66.4, 65.9, 65.8, 65.8, 64.6, 64, 64, 63.6, 63.4, 62.9, 62.3, 62.9, 61.7, 63.6, 64.6, 65.8, 65.9, 65.9, 64.6, 64, 64.1, 63.3, 61.1, 60.5, 60.5, 60.5, 59.7, 59.6, 59.6, 59.7, 60.8, 61.1, 62.1, 61.1, 61.1, 60.8, 61.7, 61.7, 62.7, 63.5, 63.5, 64.3, 65.5, 66, 65.3, 65.3, 64.3, 64.3, 64.3, 64.6, 64.3, 64.3, 64.3, 63.4, 63.4, 63, 63.4, 63.4, 63.4, 62.1, 63, 64, 66.6, 67.2, 69.1, 69.9, 68.5, 67.3, 67.6, 67.6, 66.4, 67.7, 65.9, 65.8, 65.1, 64.8, 64.6, 64, 63, 62.8, 62.8, 62.1, 61.5, 61.5, 60.5, 61.7, 62.9, 63.7, 64.1, 65.3, 65.9, 65.3, 65.3, 65.3, 65.6, 65.3, 64.2, 63.7, 63.6, 63.4, 63.6, 63.6, 62.9, 62.8, 60.5, 59.8, 59.4, 58.3, 57.5, 58.2, 59.9, 62.4, 63.8, 65.6, 65.8, 66.2, 65.1, 66.2, 65.7, 65, 64.8, 64.7, 64.7, 64.2, 63.6, 63.6, 64, 64.3, 64.3, 64, 63.5, 62.9, 62.9, 63.4, 64.1, 64.1, 64.7, 63.8, 63.8, 62.7, 62.1, 60.3, 59.4, 58, 58, 57.5, 56.8, 54.7, 54.8, 53.2, 53.2, 52.4, 50.2, 50.2, 49.3, 48.8, 48.8, 50.5, 52.8, 52.8, 54.8, 56, 55.1, 55.1, 55.6, 54.4, 53.4, 53, 51, 52.2, 51.5, 50.6, 50.1, 48.7, 47.4, 47, 46.6, 46.2, 45.2, 44.3, 44.2, 46.1, 47.6, 49, 49.5, 51.2, 52.7, 54.8, 55.5, 56, 56.1, 56.1, 55.3, 55.6, 55.6, 56.3, 57.3, 58.1, 59.7, 60.3, 59.9, 59.9, 51.9, 47.7, 47.3, 45.7, 46.1, 45.7, 46.8, 48.6, 49.7, 50.6, 51.1, 50.4, 50.4, 51.1, 51.9, 51.1, 51, 49.7, 47.8, 47, 45.6, 44.8, 43.8, 42.9, 42.9, 42.9, 42.2, 44.7, 47.8, 50.5, 51.1, 49.9, 50.8, 51.7, 52.9, 52.4, 52.4, 51.1, 50.4, 49.9, 51.1, 51.6, 51.9, 50.5, 50.7, 50.2, 50.7, 50.2, 49.8, 50.3, 49.8, 52.5, 54, 54, 55.7, 58.2, 58.7, 58.7, 57.7, 56.8, 55.2, 56, 56.9, 57.2, 57.7, 58.3, 59.2, 60.8, 61.7, 64, 63.4, 63.5, 62.3, 62.9, 64, 64.9, 65.7, 67.3, 67.1, 67.1, 67.2, 67.1, 67.1, 67.3, 66.6, 67, 67, 66.6, 62.1, 61.1, 58.8, 56.7, 55.8, 55.3, 55.2, 55.3, 54.7, 54.2, 53.7, 53.7, 53.5, 55.7, 54.9, 54.5, 53.6, 53.5, 53.4, 52.3, 50.8, 51, 49.6, 48.7, 48.4, 47.9, 45.6, 45.2, 45.3, 44.2, 44.2, 44.6, 43.6, 44.1, 43.2, 44.5, 44.4, 45.8, 47.1, 49.4, 50.8, 51.8, 51.8, 52.6, 52.3, 52.8, 51.5, 51, 50.5, 50.5, 49.6, 49.6, 50.1, 49.6, 49.6, 49.6, 48.8, 48.5, 48.8, 50.1, 52.8, 54.1, 55.6, 55.6, 55.6, 56.8, 56.6, 56.6, 56.2, 55.6, 56.6, 56.4, 56.3, 56.1, 56.4, 56.4, 57, 57.3, 57.3, 57.3, 56.7, 56.3, 56.1, 56.6, 57.2, 57.7, 59.4, 59.3, 57.6, 58.2, 56, 54.4, 51.9, 51.5, 50.1, 47.8, 47.4, 47.4, 47.4, 47.4, 47.4, 46.9, 46.4, 45.5, 44.4, 44, 44.9, 47, 48.7, 52.4, 54.7, 55.9, 57.1, 58, 57.5, 58, 57, 57.3, 56, 57.7, 58.7, 59.1, 59.9, 60.5, 60.2, 60.8, 60.5, 60.5, 60.1, 60.5, 59.6, 61.5, 62.9, 64.7, 64, 65.4, 64, 63, 61.7, 61.1, 61.1, 62.1, 61.7, 61.7, 62.1, 61.5, 58.5, 57.4, 58.5, 58.5, 58.5, 56.5, 56.5, 56.7, 56.7, 51.5, 48.5, 48.5, 49.5, 48.5, 47.4, 46.3, 44.6, 42.8, 42.2, 42.2, 41.4, 40.9, 40.2, 40.2, 39.7, 40.3, 40.2, 40.5, 41.4, 40.9, 40.7, 41.1, 41.1, 42.2, 44.9, 48.4, 50.5, 51.9, 53, 53.9, 55.1, 56, 56.5, 56.1, 55.2, 55.1, 54.8, 53.8, 52.8, 52.4, 51, 50.2, 49.8, 50.3, 49.8, 50.4, 50.9, 52.1, 54.2, 55, 57.1, 57.7, 56.8, 58.3, 57.6, 58.4, 58.5, 54.7, 54.8, 54.6, 55.1, 55.3, 55.3, 55.4, 55.4, 55.4, 55.4, 55.8, 56.5, 56.5, 55.8, 57.8, 57.4, 57.9, 59.3, 59.6, 62.9, 64.7, 65.9, 64.6, 62.8, 61.2, 61.5, 60.9, 62.1, 62.1, 60.5, 59.6, 58.6, 57.7, 57.2, 56.1, 53.7, 51.1, 50.2, 49.3, 49.7, 50.6, 50.7, 51.5, 51.5, 52.2, 51.7, 51, 49.9, 49, 47.9, 47.4, 46.6, 46.2, 44.8, 43.8, 42.9, 42.4, 41.1, 41.1, 40.7, 40.2, 40.2, 41.1, 41.8, 41.7, 43.1, 43.1, 44.6, 45.5, 46.9, 47.1, 46.9, 46.7, 45.9, 46.3, 46.6, 47.5, 48.8, 49.3, 50.8, 50.8, 50.2, 48.8, 48.4, 47.4, 47.4, 48, 48.8, 50.5, 52.4, 54, 54.7, 55.6, 55.6, 54.8, 54.8, 54.4, 51.9, 50.4, 49.1, 48.6, 48.4, 48.8, 48, 47.5, 48, 48.5, 48, 47.5, 46.9, 48, 47.5, 48, 48.8, 48.9, 48.9, 47, 45, 45, 45, 45, 44, 44, 43.6, 43.2, 42.6, 42.1, 41.6, 42.2, 42.2, 42.2, 42.2, 42.2, 42.2, 42.2, 42.2, 42.6, 43.2, 44.1, 44.1, 43.7, 42.5, 42, 41.4, 41, 41.1, 41.1, 41.1, 41.4, 41.1, 41.1, 40.1, 39.7, 39.1, 38.6, 38.3, 36.9, 36.5, 36.5, 38.5, 41.1, 42.7, 43, 42.2, 42.9, 42.8, 43.8, 45.1, 43.8, 43.5, 42.9, 42.1, 41.8, 40.7, 39.6, 39, 38.3, 37.3, 37, 36.5, 36.5, 36.5, 38.3, 41.2, 44.5, 47, 46.7, 46.3, 46.7, 46, 46.3, 45.9, 45.8, 45.6, 45.3, 45.2, 44.5, 43.6, 43.6, 42.7, 41.9, 41.9, 40.4, 40.3, 40.7, 40.3, 42.2, 44.2, 45.2, 47.1, 47.5, 49.4, 50.2, 50.6, 50.8, 50.8, 50.7, 49.8, 47.5, 46.2, 45.9, 46.1, 47, 45.7, 46, 45.4, 45, 44.6, 45.5, 46, 47, 49.3, 51.5, 52.5, 53.5, 52.9, 53.5, 53.4, 53.1, 52.5, 51.7, 51.5, 51.5, 51.5, 51.5, 50.9, 50.9, 50.9, 50.4, 50.9, 50.9, 50.9, 50.9, 50.5, 49.4, 52.4, 53, 53, 53, 54.5, 55.1, 55.6, 56.1, 55.6, 54.7, 54.7, 54.7, 54.7, 54.7, 54.7, 54.7, 55.3, 55.4, 54.7, 55.4, 54.7, 55.4, 54.5, 54.5, 56.5, 57.9, 58.3, 59.5, 58.7, 58.8, 57.7, 57.4, 56.3, 56.6, 55.6, 54.7, 53.7, 52.4, 50.9, 50.5, 50.1, 49.7, 48.8, 47.8, 47.5, 47.5, 47.5, 47.5, 49.3, 51.1, 51.9, 53.6, 52.8, 53.3, 53.4, 54.4, 54.8, 53.7, 53.8, 53.3, 52.5, 53.1, 52.5, 52.5, 51.4, 51.1, 50, 48.9, 48.9, 50, 48.9, 48.9, 51.1, 51.1, 51.1, 53, 53.7, 55.6, 55.6, 55.1, 55.2, 52.8, 53.1, 52.8, 52.4, 53.7, 54.2, 54.2, 54.7, 55.3, 55.8, 55.8, 56.7, 57.2, 57.2, 57.4, 57.8, 59.2, 59.6, 59.9, 60.5, 60.1, 59.7, 58.2, 52, 51.6, 50.2, 48.8, 47.8, 47, 46.4, 45.5, 45, 43.6, 42.7, 41.8, 40.5, 40.1, 39.1, 38.7, 39.5, 39.7, 40.4, 41.8, 42.4, 42.9, 44, 43.2, 43.4, 42.1, 41.8, 41.8, 40.8, 41.3, 41.1, 40.7, 39.9, 37.6, 38.3, 40.6, 40.1, 40.5, 40.2, 41.5, 42.9, 45.3, 47.9, 48.8, 48.8, 48.7, 49.9, 51.5, 50.5, 50.5, 50.5, 50.5, 51, 50.8, 49.8, 49.3, 48.5, 48.9, 48.9, 48.5, 47.4, 47.4, 48.5, 49.6, 50.4, 51.2, 53.4, 55.7, 55, 56, 56.1, 52, 51.1, 49.8, 48.6, 48.7, 49.4, 51, 53.7, 54.8, 55.6, 56, 56.9, 56.3, 55.7, 57.4, 58, 58.5, 46.2, 44.5, 44.7, 46.5, 46.8, 47, 47, 46.3, 46, 43.5, 43, 42.4, 40.8, 39.6, 39.1, 38.6, 38.1, 37.6, 36.6, 36.1, 35.5, 34.9, 34.9, 35.5, 36.1, 38, 38.8, 39.5, 41.5, 41.6, 42.7, 43.4, 43.5, 42.9, 41.7, 40.7, 40.3, 40.3, 40.7, 40.3, 39.8, 38.7, 37.5, 37.9, 37.9, 36.1, 35.4, 36.5, 40.3, 42.3, 43.5, 45, 45.7, 45.3, 45.7, 45.7, 45.3, 43.9, 43.7, 43.4, 42.8, 42.8, 42.8, 42.1, 42.3, 52.8, 52.1, 53.3, 53.3, 55.4, 55.4, 57.2, 61.1, 64.3, 64, 62.1, 61.7, 59.6, 59.6, 57.3, 54.4, 52.4, 51, 49.8, 47.4, 47, 47, 45.9, 44.6, 42.3, 41.8, 41.4, 40.5, 39.5, 38.5, 39.1, 38.9, 40.3, 41, 42.5, 42.9, 42.9, 42.9, 44.1, 43, 42.3, 42, 41.3, 40.6, 40.3, 39, 40.2, 39.1, 38.6, 39.5, 39, 37.7, 37.3, 37.7, 38.6, 39.1, 40.7, 41.8, 43.3, 43.2, 43, 43, 42.3, 42.1, 42, 42.3, 42, 43.4, 43.4, 44.6, 45, 45.9, 46.4, 47.9, 48.4, 48.3, 47.5, 45.5, 44.7, 45.8, 45.9, 47, 46.6, 45.6, 46, 46, 45.6, 44.7, 43.3, 42.6, 40.4, 39, 37.9, 38, 37.7, 37.3, 37.1, 37, 37.1, 37.2, 38, 39.1, 40.4, 42.7, 45.7, 48.1, 49.4, 50.3, 50.8, 51.1, 51.6, 51.5, 51.1, 50.9, 51.1, 51.5, 52.6, 53.4, 53.7, 53.7, 53.7, 54.8, 55.3, 57.2, 56.7, 56.6, 56, 56.3, 57.7, 57.7, 50.8, 50.3, 49.8, 49.6, 46.8, 45.9, 45.5, 43.6, 41.4, 40.1, 38.3, 36.8, 36.5, 35, 34, 33.1, 32.2, 32.2, 32.1, 31.8, 32.6, 34.7, 36.3, 36.6, 36.6, 38, 38, 39.4, 40, 40.3, 40.6, 40.5, 40.5, 40.1, 39, 39.4, 39.8, 40.3, 41, 41.4, 41.4, 42.2, 42.6, 43.1, 44.9, 45.9, 45.9, 46.9, 47, 47.4, 47, 46.3, 45.8, 45.1, 43, 43, 40.7, 38.5, 36.1, 33.4, 30.3, 28.7, 28.7, 27.7, 27.7, 26.7, 26.5, 26.5, 25.9, 27.7, 29.5, 30.9, 33.1, 34.3, 34.7, 34.7, 34.7, 35, 35.9, 36.2, 37.2, 37.9, 38.3, 39, 38.3, 38.3, 38.5, 39.5, 39.5, 39.9, 40.3, 45.9, 46.9, 46.3, 47, 42.1, 39, 38.5, 40.1, 41.2, 42.1, 42.1, 42.1, 42.1, 41.6, 41.6, 41.6, 42.1, 41.6, 41.6, 41.6, 42.2, 42.2, 43.1, 42.6, 42.7, 42.7, 42.2, 42.2, 43.1, 43.7, 44.2, 44.7, 45.2, 44.5, 44.7, 44.2, 44.5, 43.7, 43.6, 43.1, 43.6, 43.6, 45.9, 46.3, 47.4, 47.4, 47.4, 47.4, 48.3, 48.9, 49.4, 50, 50.9, 50.9, 51.4, 51.1, 51.1, 51.4, 51.4, 52, 52, 52, 53.1, 52, 53.1, 52, 53.1, 52, 52, 55, 54, 54, 53.1, 55, 63, 63.5, 65.3, 65.3, 65.1, 65.8, 65.8, 65.5, 58.1, 53.4, 51.9, 50.5, 48.7, 48.8, 48.4, 45.9, 42.6, 41.3, 40.4, 37.7, 35.7, 35.2, 34.3, 33.1, 32.9, 33.2, 34, 34.2, 35.8, 36.8, 36.8, 36.6, 35.8, 34.7, 34.4, 34.1, 33.7, 33.2, 32.7, 32.2, 31.9, 31.5, 31.5, 31.5, 31.8, 31.8, 32.6, 33.2, 33.9, 35, 34.1, 34.1, 34.5, 33.9, 33.1, 33.1, 32, 33.1, 33.1, 34, 34.7, 33.4, 33.2, 34.2, 34.2, 34.2, 34.2, 34.2, 34.2, 34.2, 33.9, 33.9, 34.9, 36.1, 37.9, 39, 39, 39.3, 39.6, 39.8, 38.7, 37.6, 37.9, 38.3, 37.7, 38.9, 38.2, 36.6, 36.6, 37.3, 35.7, 34.7, 32.3, 32.8, 34.9, 34.6, 34.9, 34.7, 35.3, 34.8, 33.5, 31.3, 30.1, 29.4, 27.8, 25.6, 23.6, 22.8, 20.6, 19.3, 18.4, 17.4, 16.8, 16.2, 16.1, 16.1, 16.1, 16.1, 15.2, 16.1, 17.6, 19.3, 21.1, 23.3, 24.2, 25.6, 26.9, 27.1, 27.1, 26.5, 26.7, 26, 26, 26.5, 25.9, 26.1, 26.1, 25.7, 25.8, 25.4, 24.5, 23.9, 23, 24.2, 24.9, 26.3, 28.5, 30.3, 32.1, 31.1, 31.6, 32.3, 32.3, 32.3, 32.4, 35.1, 34.6, 35.8, 36.1, 35.5, 36.5, 36.1, 36.1, 35.8, 35.5, 34.8, 34.4, 34.4, 34.8, 36, 37.7, 38.4, 39, 39, 38.4, 39.3, 39, 38.9, 38.2, 37, 35.8, 36, 36.8, 36.5, 35.3, 35.1, 34.7, 35.5, 35.9, 34.6, 34.7, 35.9, 38, 39.2, 39.2, 41.7, 43.2, 42.8, 42.5, 42.5, 42.3, 42.5, 42, 43.1, 43.5, 43.5, 42.8, 43.3, 42.2, 42.2, 42.2, 42.2, 41.8, 40.9, 40.2, 38.9, 39.4, 39.2, 38.6, 38.9, 39, 38.8, 38.4, 38.8, 37.3, 36.5, 36.5, 37.6, 36.9, 37.6, 37.6, 37.6, 38.5, 38.9, 37.7, 37.1, 35.2, 32, 29.6, 28, 26.7, 26.7, 27.3, 26.7, 27.3, 28.4, 28.5, 27.8, 27.5, 25.4, 24.8, 23.7, 23.3, 21.7, 20.3, 20, 18.6, 18.6, 17.8, 17.6, 17.8, 18, 18, 17.3, 19.2, 22.2, 24.3, 26.1, 29.6, 31.8, 33.9, 34.2, 34.2, 35.1, 36.1, 36.8, 37.7, 38.3, 39.2, 41.2, 42.5, 45, 45.4, 46.3, 48, 48, 50, 48.9, 50, 49.4, 45.4, 39, 36.6, 38.1, 38.5, 38.9, 37.3, 36, 33, 30.8, 29, 27.6, 27.9, 28.8, 29.6, 29.9, 29.9, 29.9, 29.4, 28.7, 28.8, 28, 29.1, 29.4, 30, 31.3, 32.6, 33.7, 34.1, 33.5, 32.8, 32.6, 31.3, 31.7, 31.1, 30.4, 29.4, 29.7, 29.4, 27.8, 27.8, 27.2, 27.8, 27.7, 27.4, 27.7, 29, 32.6, 34.1, 36.8, 37.6, 38.3, 40.9, 41.9, 41.8, 42.2, 42.2, 42.2, 42.7, 42.7, 43.6, 44.5, 46.4, 47.9, 49.4, 52, 51.4, 52, 52, 51.4, 52, 52, 51.5, 51.7, 51.2, 50.7, 49.8, 49.8, 49.3, 43.7, 41.1, 39.4, 38.5, 38, 37.2, 37.2, 37.2, 36.8, 36.5, 35.9, 35.5, 34.9, 34.7, 34.5, 34.5, 36, 36.6, 38, 38.8, 39, 39.5, 39.5, 39, 38.8, 37.7, 37.9, 37.5, 36.9, 37.2, 35.3, 34.9, 34.7, 34.6, 33.1, 33.5, 33.2, 35.2, 35.2, 36.3, 38.2, 40.8, 42.6, 45, 45.4, 46.3, 47.9, 47.9, 49.4, 51.4, 53.1, 56.5, 58.8, 59.6, 61.1, 61.5, 59.6, 58, 56.1, 54.2, 53.7, 46.9, 43.6, 42.2, 41.9, 41.4, 42.1, 42.6, 42.3, 41.4, 40.3, 39.3, 38.2, 37.2, 36.1, 35.8, 34.9, 34.3, 33.9, 33.9, 32, 33.5, 32.3, 32.8, 32.4, 32, 32.4, 34.3, 36.5, 38.3, 39.9, 41.4, 42.1, 42.9, 42.7, 42.1, 41.3, 41.1, 40, 39.5, 38.3, 37.9, 37.9, 36.8, 36.9, 36.9, 36.9, 36.4, 36.8, 37.3, 37.7, 38.8, 40.1, 41.7, 41.6, 42.3, 43.1, 41.9, 42.3, 41.4, 40.4, 40, 39.6, 39, 38.3, 37.9, 36.9, 34.9, 33.1, 32.7, 32.2, 31.9, 30.5, 29.4, 28.5, 28.4, 28.7, 28.9, 29, 29.2, 28.6, 28.6, 27.9, 27, 25.8, 24.5, 25.5, 25.4, 26.9, 28.3, 30.6, 33.1, 38.5, 41, 43.5, 46.3, 49.4, 52.8, 56.9, 57.7, 58.8, 58.5, 47.9, 45.4, 42.3, 39.7, 38.5, 35.7, 33.5, 32.6, 31.3, 30.9, 30.3, 30.1, 30.1, 29.1, 29.6, 28.9, 28.9, 28.9, 28.4, 28.6, 28, 28.9, 30, 30.9, 32.1, 31.8, 32.2, 33.1, 32.5, 32.4, 32.5, 32.2, 31.3, 31.1, 31.3, 32.2, 32.2, 31.7, 31.4, 31.4, 31.8, 31.6, 31.1, 30.9, 30.5, 31.1, 31.7, 32.2, 33.1, 33.4, 32.4, 31.9, 31.3, 30.2, 29.4, 28.9, 28, 26.8, 26.6, 26, 25.2, 24.8, 24.3, 24.5, 23.9, 23.9, 23.9, 23.2, 22.8, 22.8, 24.1, 25.2, 26, 26.7, 27, 26.7, 26.6, 25.5, 24.9, 24.3, 24.3, 24.3, 23.6, 23.2, 21.8, 21.8, 20.9, 21, 21.3, 20.9, 21, 21, 20.4, 23.7, 25.1, 26.2, 28.9, 32.1, 35, 36.3, 36.9, 37.5, 37, 36.5, 36.9, 37.9, 39.1, 39.1, 39.4, 40.8, 41.8, 42.2, 43.6, 43.6, 43.6, 43.6, 44.5, 45, 46.4, 48.5, 49.3, 50.1, 51.6, 50.1, 49.5, 49.3, 49.3, 49.3, 48.8, 48.7, 47.9, 48.5, 42.4, 38.5, 35.8, 33.7, 29.6, 26.3, 24.8, 23.7, 23.3, 23.2, 23.7, 24.5, 25.6, 26.7, 27.5, 28.2, 28.1, 26.6, 25.7, 24.7, 24.4, 23.4, 23.4, 22.6, 22.2, 23, 23.3, 23.9, 24.2, 23.5, 23.5, 23.7, 23.1, 23.3, 23.9, 24.1, 24.1, 25.1, 25.9, 25.9, 26.1, 25.6, 25.6, 26.1, 26.7, 28.8, 32.1, 31.5, 33.5, 34, 34.9, 35.3, 35.8, 36.5, 34.9, 34.9, 34, 34, 39, 34.3, 40.8, 42.2, 43.2, 43.2, 43.6, 43.6, 43.6, 44.1, 44, 44.4, 44.4, 44.9, 45.9, 45.9, 46.8, 46.8, 47.9, 47.3, 47, 47.3, 47.3, 47.3, 47.9, 48.3, 47.9, 45.9, 44.9, 44.4, 44.4, 44.4, 44.4, 45.5, 44.4, 44, 43.5, 43.1, 41.3, 40.9, 39.4, 39.1, 38.3, 37.1, 35.5, 34.3, 33.3, 33.1, 34.2, 35.5, 37.2, 39, 39.6, 39.6, 38.7, 38.3, 36.9, 34.7, 33.9, 32.9, 31.1, 30, 29, 27.6, 26.9, 26.1, 24.8, 24.1, 24.3, 24.1, 24.1, 23.7, 23.7, 25.2, 26.6, 27.4, 28.1, 29.1, 28.2, 28.5, 28.5, 28.5, 29.2, 29.1, 29.4, 29.4, 29.7, 29.2, 30.4, 29.4, 29, 29, 28.7, 29, 29.5, 30, 30, 31, 32.2, 33.1, 34.4, 35.2, 35.9, 36.2, 36.2, 36.6, 36.6, 36.6, 37.2, 37.6, 37.6, 36.9, 37.6, 37.6, 36.9, 37.3, 37.7, 38.2, 38.6, 38.6, 40.7, 44, 48.9, 50.2, 51, 51.5, 50.5, 51, 50.2, 49.8, 49.3, 49.8, 49.3, 48.8, 48.5, 48, 48, 47.5, 47, 46, 45.4, 45.9, 45.9, 46, 46.5, 48.4, 50.1, 53.3, 53.6, 54.7, 54.7, 53.7, 52.8, 52.4, 52.4, 52, 51.5, 51.5, 51.5, 51.5, 50.7, 49.8, 47.4, 43.6, 41.1, 39.7, 39.7, 38.9, 37.3, 37.7, 37.9, 38.2, 34.9, 34.3, 33.3, 30.3, 28.7, 27.5, 26.8, 25.8, 25.1, 23.7, 23.9, 21.7, 21.4, 20.9, 20, 20, 19.2, 19.2, 20.3, 20, 22.4, 25.4, 27, 28.9, 30, 31.1, 31.4, 31.8, 31.9, 32.2, 33.3, 34.7, 35.9, 36.9, 37.5, 38.5, 37.9, 36.8, 36.1, 35.6, 34.7, 34.7, 34.7, 34.8, 33.1, 33.6, 33.8, 31.4, 30, 28.4, 27.7, 26.2, 24.6, 24.4, 22.8, 19.9, 17.7, 15.7, 14.6, 13.9, 13.2, 13.4, 14.3, 13.2, 12.5, 12.8, 13.9, 15, 16.7, 18.8, 19.2, 19.5, 19.6, 19.3, 17, 16.6, 15.2, 11.2, 9.8, 8.5, 6.8, 6.9, 6.9, 6.1, 5.3, 5.3, 5.3, 4.4, 4.2, 5.2, 6, 6.9, 8.4, 10.9, 12.5, 13.3, 14.1, 15.4, 16.8, 19.9, 19.7, 25.1, 26.7, 28, 29.5, 31.6, 32.1, 32.4, 33.5, 33.9, 33.2, 25.8, 20.2, 20.2, 18.2, 18.8, 18.8, 19.7, 21.9, 22.7, 23, 22.7, 21.9, 21.6, 21.6, 21.6, 22.7, 23, 23, 23, 23.8, 23.8, 23.8, 24.9, 25.7, 27.3, 27.6, 28.6, 28.6, 29.5, 30.5, 30.5, 31.5, 31.5, 32, 32.4, 32.8, 33.1, 30.9, 30.5, 29.5, 28.6, 27.6, 26.4, 26.1, 24.9, 23.5, 23, 22.8, 22.3, 20.4, 20.4, 19.4, 19.4, 20.2, 21.2, 23.4, 24.9, 24.6, 24.6, 24.4, 24.4, 22.6, 22.2, 21.6, 19, 16, 15.1, 12.6, 10.9, 9, 7.4, 6.4, 5.7, 4, 2.9, 2.9, 2.9, 2.9, 3.9, 5.5, 7, 8.7, 10.2, 10.2, 9.3, 7.6, 7.6, 6.9, 6.1, 6.1, 5.3, 4.5, 4.5, 4.5, 3.8, 3.9, 4.7, 4, 4.2, 5.1, 5.9, 6.8, 10.6, 13.1, 14.6, 16.6, 17.4, 18.4, 19.6, 23, 24.1, 25.2, 22.8, 21.1, 22.2, 21.4, 22.4, 21.9, 22.7, 23, 25.8, 26.5, 28.6, 30.9, 32, 33.1, 36.1, 41.8, 39, 45, 45.9, 47.9, 49.5, 49.4, 48.9, 45.4, 47.4, 46.3, 45.9, 45, 41.2, 43.6, 43.5, 42.6, 41.1, 39.6, 39, 38.5, 39.2, 39.2, 39.9, 38.7, 37.1, 37.2, 35.8, 34.7, 33.7, 32.9, 32.9, 32.9, 32.5, 31.9, 31.1, 29.7, 29.4, 29.4, 28.4, 28.8, 28.8, 28, 26.9, 24.8, 23.9, 23.9, 24.3, 24.9, 26.2, 27.2, 27.7, 28.4, 28.2, 27.7, 27.2, 26.5, 25.7, 24.9, 24.3, 23.7, 22.8, 21.7, 21.7, 21.5, 21.5, 21.5, 21.3, 20.6, 20.6, 21.5, 24.2, 24.7, 26.7, 26.9, 28, 26.9, 26.9, 25.7, 25, 25, 25.7, 25.4, 25.6, 24.1, 24.4, 23.3, 22.6, 22.8, 23, 24.3, 24.1, 23.6, 22.8, 25.1, 27.5, 30, 31.1, 30.6, 31.7, 32.9, 33.5, 33.9, 33.9, 34.6, 35.3, 36.3, 35.7, 35.7, 36.3, 38.2, 40.7, 40.7, 40.1, 39, 39.6, 39.2, 39.2, 39.4, 39.8, 40.1, 39.7, 39.2, 39.7, 38.7, 37.5, 37.2, 37.2, 36.1, 34.8, 33.6, 32.9, 31.9, 31.4}; + vector> chillerMonthlyLoad = { + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100} + }; + vector> chillerMonthlyLoadVarying = { + {5, 5, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {5, 5, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {5, 5, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {5, 5, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {5, 5, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {5, 5, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {5, 5, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {5, 5, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {5, 5, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {5, 5, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {5, 5, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {5, 5, 10, 10, 10, 10, 10, 10, 10, 10, 10} + }; + + + + INFO("Test #1: Air Cooled Single Chiller System: ") + auto chillers = { + ProcessCooling::ChillerInput(ProcessCooling::Reciprocating, 25, true, 0.1, 1, false, false, chillerMonthlyLoad) + }; + + auto pc = ProcessCooling(systemOperationAnnualHours, dryBulbHourlyTemp, wetBulbHourlyTemp, chillers, + ProcessCooling::AirCooledSystemInput(44, 80, ProcessCooling::Outside, 70, 5)); + + INFO("Chiller Output: ") + auto chillerOutput = pc.calculateChillerEnergy(); + validateArrays(chillerOutput.efficiency[0], {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0628001}); + validateArrays(chillerOutput.hours[0], {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8760}); + validateArrays(chillerOutput.power[0], {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.57}); + validateArrays(chillerOutput.energy[0], {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13753.2}); + + INFO("Pump Output: ") + auto chillerPumpingEnergyOutput = pc.calculatePumpEnergy(ProcessCooling::PumpInput(true, 2.4, 0.75, 1, 0.85)); + validateArrays(chillerPumpingEnergyOutput.chillerPumpingEnergy, {7841.95}); + INFO("Test #1: Air Cooled System Test Passed") + + + + INFO("Test #2: Water Cooled Two Chiller System: ") + auto chillersWC = { + ProcessCooling::ChillerInput(ProcessCooling::Reciprocating, 20, true, 0.1, 1, false, false, chillerMonthlyLoadVarying), + ProcessCooling::ChillerInput(ProcessCooling::Centrifugal, 50, true, 0.2, 1, false, false, chillerMonthlyLoad) + }; + auto pcWC = ProcessCooling(systemOperationAnnualHours, dryBulbHourlyTemp, wetBulbHourlyTemp, chillersWC, + ProcessCooling::TowerInput(1, 2, ProcessCooling::One, ProcessCooling::Tonnage, ProcessCooling::AxialFan, 1, 70), + ProcessCooling::WaterCooledSystemInput(44, false, 0, true, 85, true, 3, 0)); + + INFO("Chiller #1 Output: ") + auto chillerOutputWC = pcWC.calculateChillerEnergy(); + validateArrays(chillerOutputWC.efficiency[0], {0, 0.0681387, 0.0816758, 0.0889593, 0.0946793, 0.099774, 0.102496, 0.104067, 0.104464, 0.103633, 0.101}); + validateArrays(chillerOutputWC.hours[0], {444, 437, 873, 880, 873, 873, 881, 873, 880, 873, 873}); + validateArrays(chillerOutputWC.power[0], {0, 0.136277, 0.326703, 0.533756, 0.757435, 0.99774, 1.22995, 1.45694, 1.67143, 1.86539, 2.02}); + validateArrays(chillerOutputWC.energy[0], {0, 59.5532, 285.212, 469.705, 661.24, 871.027, 1083.59, 1271.91, 1470.86, 1628.49, 1763.46}); + INFO("Chiller #2 Output: ") + chillerOutputWC = pcWC.calculateChillerEnergy(); + validateArrays(chillerOutputWC.efficiency[1], {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.202}); + validateArrays(chillerOutputWC.hours[1], {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8760}); + validateArrays(chillerOutputWC.power[1], {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10.1}); + validateArrays(chillerOutputWC.energy[1], {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88476}); + + INFO("Chiller #1 Pump Output: ") + auto chillerPumpingEnergyOutputWC = pcWC.calculatePumpEnergy(ProcessCooling::PumpInput(true, 2.4, 0.75, 1, 0.85)); + validateArrays(chillerPumpingEnergyOutputWC.chillerPumpingEnergy, {3698.16, 7841.95}); + INFO("Chiller #2 Pump Output: ") + chillerPumpingEnergyOutputWC = pcWC.calculatePumpEnergy(ProcessCooling::PumpInput(true, 3, 0.75, 2, 0.85)); + validateArrays(chillerPumpingEnergyOutputWC.chillerPumpingEnergy, {7396.32, 15683.9}); + + INFO("Tower Output: ") + auto towerOutput = pcWC.calculateTowerEnergy(); + validateArrays(towerOutput.hours, {2489, 1757, 1411, 2046, 1057, 0}); + validateArrays(towerOutput.energy, {0, 0, 0, 110.481, 1489.79, 0}); + INFO("Test #2: Water Cooled Two Chiller System Test Passed") + + + INFO("Test #3: Water Cooled System, Measure Replace Refrigerant Type: ") + auto chillersWCRR = { + ProcessCooling::ChillerInput(ProcessCooling::Centrifugal, 20, true, 0.1, 1, false, false, chillerMonthlyLoad, + ProcessCooling::RefrigerantType::R_11, ProcessCooling::RefrigerantType::R_123) + }; + auto pcWCRR = ProcessCooling(systemOperationAnnualHours, dryBulbHourlyTemp, wetBulbHourlyTemp, chillersWCRR, + ProcessCooling::TowerInput(1, 2, ProcessCooling::One, ProcessCooling::Tonnage, ProcessCooling::AxialFan, 1, 20), + ProcessCooling::WaterCooledSystemInput(44, false, 0, true, 85, true, 3, 0)); + + INFO("Chiller #1 Output: ") + chillerOutputWC = pcWCRR.calculateChillerEnergy(); + validateArrays(chillerOutputWC.efficiency[0], {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.103244}); + validateArrays(chillerOutputWC.hours[0], {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8760}); + validateArrays(chillerOutputWC.power[0], {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.06488}); + validateArrays(chillerOutputWC.energy[0], {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18088.4}); + + INFO("Chiller #1 Pump Output: ") + chillerPumpingEnergyOutputWC = pcWCRR.calculatePumpEnergy(ProcessCooling::PumpInput(true, 2.4, 0.75, 1, 0.85)); + validateArrays(chillerPumpingEnergyOutputWC.chillerPumpingEnergy, {7841.95}); + INFO("Chiller #2 Pump Output: ") + chillerPumpingEnergyOutputWC = pcWCRR.calculatePumpEnergy(ProcessCooling::PumpInput(true, 3, 0.75, 1, 0.85)); + validateArrays(chillerPumpingEnergyOutputWC.chillerPumpingEnergy, {7841.95}); + + INFO("Tower Output: ") + towerOutput = pcWCRR.calculateTowerEnergy(); + validateArrays(towerOutput.hours, {2489, 1757, 1411, 2046, 1057, 0}); + validateArrays(towerOutput.energy, {0, 0, 0, 147.308, 785.52, 0}); + INFO("Test #3: Water Cooled Two Chiller System, Measure Replace Refrigerant Type Test Passed") + + + INFO("Test #4: Water Cooled System, Custom Chiller: ") + auto chillersWCCC = { + ProcessCooling::ChillerInput(ProcessCooling::Centrifugal, 100, true, 1.17, 1, false, false, chillerMonthlyLoad, + {100, 75, 50, 25}, {1.17, 0.9768744, 0.8943772, 1.109825}) + }; + auto pcWCCC = ProcessCooling(systemOperationAnnualHours, dryBulbHourlyTemp, wetBulbHourlyTemp, chillersWCCC, + ProcessCooling::TowerInput(1, 2, ProcessCooling::One, ProcessCooling::Tonnage, ProcessCooling::AxialFan, 1, 100), + ProcessCooling::WaterCooledSystemInput(44, false, 0, true, 85, true, 3, 0)); + + INFO("Chiller #1 Output: ") + chillerOutputWC = pcWCCC.calculateChillerEnergy(); + validateArrays(chillerOutputWC.efficiency[0], {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.1817}); + validateArrays(chillerOutputWC.hours[0], {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8760}); + validateArrays(chillerOutputWC.power[0], {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118.17}); + validateArrays(chillerOutputWC.energy[0], {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1035169.2}); + + INFO("Chiller #1 Pump Output: ") + chillerPumpingEnergyOutputWC = pcWCCC.calculatePumpEnergy(ProcessCooling::PumpInput(true, 2.4, 0.75, 1, 0.85)); + validateArrays(chillerPumpingEnergyOutputWC.chillerPumpingEnergy, {7841.95}); + INFO("Chiller #2 Pump Output: ") + chillerPumpingEnergyOutputWC = pcWCCC.calculatePumpEnergy(ProcessCooling::PumpInput(true, 3, 0.75, 1, 0.85)); + validateArrays(chillerPumpingEnergyOutputWC.chillerPumpingEnergy, {7841.95}); + + INFO("Tower Output: ") + towerOutput = pcWCCC.calculateTowerEnergy(); + validateArrays(towerOutput.hours, {2489, 1757, 1411, 2046, 1057, 0}); + validateArrays(towerOutput.energy, {0, 0, 0, 4963.57, 5051.46, 0}); + INFO("Test #4: Water Cooled System, Custom Chiller Test Passed ") + + + INFO("Test #5: Water Cooled System, Custom Chiller With Measure Replace Refrigerant Type: ") + auto chillersWCCCRR = { + ProcessCooling::ChillerInput(ProcessCooling::Centrifugal, 100, true, 1.17, 1, false, false, chillerMonthlyLoad, + {100, 75, 50, 25}, {1.17, 0.9768744, 0.8943772, 1.109825}, + ProcessCooling::RefrigerantType::R_11, ProcessCooling::RefrigerantType::R_123) + }; + auto pcWCCCRR = ProcessCooling(systemOperationAnnualHours, dryBulbHourlyTemp, wetBulbHourlyTemp, chillersWCCCRR, + ProcessCooling::TowerInput(1, 2, ProcessCooling::One, ProcessCooling::Tonnage, ProcessCooling::AxialFan, 1, 100), + ProcessCooling::WaterCooledSystemInput(44, false, 0, true, 85, true, 3, 0)); + + INFO("Chiller #1 Output: ") + chillerOutputWC = pcWCCCRR.calculateChillerEnergy(); + validateArrays(chillerOutputWC.efficiency[0], {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.2079570023}); + validateArrays(chillerOutputWC.hours[0], {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8760}); + validateArrays(chillerOutputWC.power[0], {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120.7957002283}); + validateArrays(chillerOutputWC.energy[0], {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1058170.33}); + + INFO("Chiller #1 Pump Output: ") + chillerPumpingEnergyOutputWC = pcWCCCRR.calculatePumpEnergy(ProcessCooling::PumpInput(true, 2.4, 0.75, 1, 0.85)); + validateArrays(chillerPumpingEnergyOutputWC.chillerPumpingEnergy, {7841.95}); + INFO("Chiller #2 Pump Output: ") + chillerPumpingEnergyOutputWC = pcWCCCRR.calculatePumpEnergy(ProcessCooling::PumpInput(true, 3, 0.75, 1, 0.85)); + validateArrays(chillerPumpingEnergyOutputWC.chillerPumpingEnergy, {7841.95}); + + INFO("Tower Output: ") + towerOutput = pcWCCCRR.calculateTowerEnergy(); + validateArrays(towerOutput.hours, {2489, 1757, 1411, 2046, 1057, 0}); + validateArrays(towerOutput.energy, {0, 0, 0, 5088.52, 5072.27, 0}); + INFO("Test #5: Water Cooled System, Custom Chiller With Measure Replace Refrigerant Type Test Passed") + + + + INFO("Test #6: Air Cooled Single Chiller System With ARI Schedule: ") + vector> empty; + auto chillersARI = { + ProcessCooling::ChillerInput(ProcessCooling::Reciprocating, 25, true, 0.1, 1, false, true, empty) + }; + + auto pcARI = ProcessCooling(systemOperationAnnualHours, dryBulbHourlyTemp, wetBulbHourlyTemp, chillersARI, + ProcessCooling::AirCooledSystemInput(44, 80, ProcessCooling::Outside, 70, 5)); + + INFO("Chiller Output: ") + auto chillerOutputARI = pcARI.calculateChillerEnergy(); + validateArrays(chillerOutputARI.efficiency[0], {0, 0, 0.0732095, 0.0705646, 0.0674898, 0.0648762, 0.0633242, 0.0625503, 0.061088, 0.0605642, 0.0618695}); + validateArrays(chillerOutputARI.hours[0], {0, 0, 95, 437, 1138, 2016, 2273, 1670, 790, 258, 83}); + validateArrays(chillerOutputARI.power[0], {0, 0, 0.366048, 0.529234, 0.674898, 0.810952, 0.949863, 1.09463, 1.22176, 1.36269, 1.54674}); + validateArrays(chillerOutputARI.energy[0], {0, 0, 34.7745, 231.275, 768.033, 1634.88, 2159.04, 1828.03, 965.191, 351.5749, 128.379}); + + INFO("Pump Output: ") + auto chillerPumpingEnergyOutputARI = pcARI.calculatePumpEnergy(ProcessCooling::PumpInput(true, 2.4, 0.75, 1, 0.85)); + validateArrays(chillerPumpingEnergyOutputARI.chillerPumpingEnergy, {3298.22}); + INFO("Test #6: Air Cooled Single Chiller System With ARI Schedule Test Passed ") +} diff --git a/tests/wasm/test-helpers/test-value.js b/tests/wasm/test-helpers/test-value.js index 8a848211..2a177647 100644 --- a/tests/wasm/test-helpers/test-value.js +++ b/tests/wasm/test-helpers/test-value.js @@ -18,6 +18,10 @@ function logMessage(msg, header){ } function testNumberValue(testVal, expectedValue, testName){ + testNumberValue(testVal, expectedValue, testName, ''); +} + +function testNumberValue(testVal, expectedValue, testName, prefix){ const testElement = document.createElement('div'); let testBool = assertNumber(testVal, expectedValue); if(testBool == true){ @@ -27,10 +31,10 @@ function testNumberValue(testVal, expectedValue, testName){ testElement.className = 'invalid'; invalidTests++; } - testElement.innerHTML = testName + ": " + testBool; + testElement.innerHTML = prefix + testName + ": " + testBool; document.body.appendChild(testElement); const resultsElement = document.createElement('div'); - resultsElement.innerHTML = 'Expected: ' + expectedValue + ', Actual: ' + testVal; + resultsElement.innerHTML = prefix + 'Expected: ' + expectedValue + ', Actual: ' + testVal; resultsElement.className = 'expected-div'; document.body.appendChild(resultsElement); } diff --git a/tests/wasm/wasm-express.html b/tests/wasm/wasm-express.html index 61cb0512..6a235ae6 100644 --- a/tests/wasm/wasm-express.html +++ b/tests/wasm/wasm-express.html @@ -20,22 +20,23 @@ $.getScript('tests/wasm-ssmt-modeler-test.js').then(() => { $.getScript('tests/wasm-ssmt-test.js').then(() => { $.getScript('tests/wasm-processHeat-test.js').then(() => { - $.getScript('tests/wasm-chillers-test.js').then(() => { - $.getScript('tests/wasm-powerFactor-test.js').then(() => { - $.getScript('tests/wasm-compressorsCalc-test.js').then(() => { - $.getScript('tests/wasm-svi-test.js').then(() => { - $.getScript('tests/wasm-wasteWater-test.js').then(() => { - $.getScript('tests/wasm-calculator-test.js').then(() => { - $.getScript('tests/wasm-db-test.js').then(() => { - $.getScript('tests/wasm-compressorCalc-helpers.js').then(() => { - $.getScript('tests/wasm-compressorCalc-reciprocatingScrew-test.js').then(() => { - $.getScript('tests/wasm-ssmt-modeler-bug-696-test.js').then(() => { - $.getScript('tests/wasm-waterAssessment-test.js').then(() => { - $.getScript('tests/finish-testing.js'); + $.getScript('tests/wasm-processCooling-test.js').then(() => { + $.getScript('tests/wasm-chillers-test.js').then(() => { + $.getScript('tests/wasm-powerFactor-test.js').then(() => { + $.getScript('tests/wasm-compressorsCalc-test.js').then(() => { + $.getScript('tests/wasm-svi-test.js').then(() => { + $.getScript('tests/wasm-wasteWater-test.js').then(() => { + $.getScript('tests/wasm-calculator-test.js').then(() => { + $.getScript('tests/wasm-db-test.js').then(() => { + $.getScript('tests/wasm-compressorCalc-helpers.js').then(() => { + $.getScript('tests/wasm-compressorCalc-reciprocatingScrew-test.js').then(() => { + $.getScript('tests/wasm-ssmt-modeler-bug-696-test.js').then(() => { + $.getScript('tests/wasm-waterAssessment-test.js').then(() => { + $.getScript('tests/finish-testing.js'); + }); }); }); }); - }); }); }); diff --git a/tests/wasm/wasm-processCooling-test.js b/tests/wasm/wasm-processCooling-test.js new file mode 100644 index 00000000..c82c58d4 --- /dev/null +++ b/tests/wasm/wasm-processCooling-test.js @@ -0,0 +1,374 @@ +logMessage('Process Cooling Tests', true); + +let validateArrays = function(results, expected, bin) { + for (let i = 0; i < expected.length; i++) { + testNumberValue(rnd(results.get(i)), rnd(expected[i]), bin[i], ' '.repeat(i*10)); + } +}; + +let chillerBins = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100]; +let pumpBins = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; +let towersBins = ['<35°F', '<45°F', '<55°F', '<65°F', '<75°F', '>=75°F']; + +let systemOperationAnnualHours = new Module.IntVector(); +let dryBulbHourlyTemp = new Module.DoubleVector(); +let wetBulbHourlyTemp = new Module.DoubleVector(); +let chillerMonthlyLoad = new Module.DoubleVector2D(); +let chillerMonthlyLoadVarying = new Module.DoubleVector2D(); + +function initTestData() { + let systemOperationAnnualHoursA = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; + let dryBulbHourlyTempA = [28.9, 28.9, 28, 28, 27, 27, 26.1, 28, 30.9, 33.1, 34, 37, 36, 37, 37, 35.1, 33.1, 34, 33.1, 33.1, 32, 32, 33.1, 30.9, 28.9, 28, 28, 28, 27, 26.1, 26.1, 27, 28.9, 33.1, 36, 35.1, 37, 36, 36, 36, 33.1, 34, 34, 34, 34, 32, 32, 30, 28.9, 27, 26.1, 25, 25, 24.1, 23, 25, 26.1, 27, 28, 28.9, 30, 32, 32, 30, 28, 27, 25, 24.1, 21.9, 21, 19.9, 19, 18, 17.1, 16, 16, 16, 16, 16, 15.1, 17.1, 19, 21.9, 25, 26.1, 26.1, 26.1, 26.1, 25, 25, 26.1, 26.1, 27, 26.1, 27, 27, 27, 27, 27, 26.1, 26.1, 26.1, 28, 28, 30.9, 30.9, 28.9, 27, 25, 26.1, 25, 25, 24.1, 24.1, 23, 24.1, 24.1, 23, 21.9, 21.9, 19.9, 19, 18, 18, 17.1, 17.1, 15.1, 15.1, 17.1, 19.9, 21.9, 23, 25, 27, 26.1, 25, 24.1, 21.9, 21.9, 21, 21, 21, 21.9, 21, 23, 23, 24.1, 25, 26.1, 26.1, 28.9, 28.9, 32, 34, 39.9, 46, 45, 45, 44.1, 42.1, 41, 39.9, 39.9, 39, 37.9, 37.9, 37, 37, 35.1, 35.1, 35.1, 34, 33.1, 33.1, 33.1, 33.1, 33.1, 34, 36, 36, 37, 37, 36, 35.1, 34, 33.1, 32, 30.9, 30, 28.9, 28, 28, 27, 26.1, 26.1, 26.1, 26.1, 26.1, 26.1, 27, 28, 28, 28.9, 28.9, 30, 30.9, 30, 28.9, 28, 28.9, 28, 28, 28, 27, 27, 26.1, 25, 25, 24.1, 23, 21, 21, 19.9, 19.9, 21, 25, 25, 28.9, 28, 30.9, 30, 28.9, 28, 28, 27, 26.1, 26.1, 25, 25, 26.1, 26.1, 26.1, 25, 27, 28, 30.9, 28.9, 34, 35.1, 39.9, 39.9, 48.9, 53.1, 54, 54, 53.1, 53.1, 54, 53.1, 53.1, 53.1, 54, 55.9, 55.9, 57, 55, 54, 53.1, 54, 46, 39, 37.9, 36, 36, 35.1, 32, 32, 32, 30.9, 30, 28, 27, 26.1, 25, 25, 24.1, 25, 24.1, 24.1, 24.1, 25, 23, 23, 23, 21.9, 21.9, 24.1, 26.1, 27, 28, 27, 27, 27, 27, 28, 28, 27, 28, 27, 27, 27, 26.1, 28, 28, 28, 28.9, 32, 34, 35.1, 34, 35.1, 37.9, 39.9, 41, 44.1, 42.1, 41, 42.1, 42.1, 41, 39, 39.9, 42.1, 41, 41, 43, 42.1, 41, 41, 42.1, 42.1, 41, 42.1, 41, 43, 42.1, 45, 44.1, 46, 44.1, 43, 44.1, 42.1, 42.1, 41, 39.9, 39, 37.9, 37, 37, 37, 35.1, 34, 33.1, 33.1, 34, 32, 30.9, 32, 32, 30.9, 30.9, 32, 32, 32, 33.1, 32, 32, 33.1, 32, 32, 32, 32, 30.9, 30, 28, 26.1, 26.1, 25, 25, 24.1, 25, 26.1, 27, 27, 27, 28, 28, 28.9, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30.9, 30.9, 32, 33.1, 35.1, 37, 37.9, 37, 37, 37, 37, 37, 35.1, 35.1, 37, 37, 37, 36, 35.1, 36, 36, 37, 37, 37, 37, 37.9, 37.9, 39, 39.9, 39.9, 41, 41, 45, 42.1, 39.9, 39.9, 39.9, 39.9, 37.9, 37.9, 37.9, 37, 36, 35.1, 34, 34, 34, 34, 33.1, 34, 36, 37.9, 39, 35.1, 37, 36, 37, 36, 34, 32, 30.9, 28.9, 28, 27, 27, 27, 26.1, 25, 25, 24.1, 24.1, 25, 24.1, 25, 27, 28.9, 30, 30, 30.9, 33.1, 34, 33.1, 30, 30, 28.9, 28.9, 28, 28, 27, 26.1, 25, 25, 25, 25, 25, 24.1, 24.1, 26.1, 28.9, 32, 34, 35.1, 34, 32, 32, 32, 32, 32, 32, 32, 33.1, 34, 35.1, 34, 33.1, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 33.1, 33.1, 34, 34, 34, 34, 34, 35.1, 34, 32, 30, 28, 25, 21.9, 21, 19, 19, 18, 18, 18, 18, 18, 19, 19.9, 21, 21, 21.9, 21.9, 21, 19.9, 19.9, 19.9, 19.9, 19, 19, 19, 19, 18, 17.1, 18, 17.1, 16, 17.1, 16, 17.1, 19, 21, 21.9, 25, 27, 27, 28, 28, 27, 27, 26.1, 24.1, 23, 24.1, 23, 23, 21.9, 21.9, 21, 21, 21, 21, 21.9, 23, 24.1, 26.1, 28.9, 30, 32, 34, 33.1, 32, 30.9, 30, 28.9, 27, 26.1, 26.1, 25, 25, 24.1, 23, 23, 23, 23, 23, 23, 23, 24.1, 28, 30.9, 33.1, 34, 35.1, 36, 36, 34, 33.1, 32, 30.9, 30, 28.9, 28, 28, 27, 26.1, 26.1, 25, 25, 25, 25, 25, 27, 28, 30.9, 33.1, 34, 35.1, 35.1, 34, 32, 30.9, 30, 30, 28, 28, 27, 27, 26.1, 25, 24.1, 24.1, 23, 24.1, 25, 25, 27, 28.9, 30.9, 32, 32, 33.1, 30.9, 30.9, 30, 28.9, 28, 27, 26.1, 24.1, 23, 23, 21.9, 19.9, 18, 17.1, 17.1, 16, 15.1, 14, 15.1, 16, 18, 19, 21, 23, 24.1, 24.1, 21.9, 21, 19.9, 19, 19, 18, 17.1, 16, 15.1, 15.1, 14, 14, 14, 12.9, 12.9, 12, 12, 12.9, 14, 14, 16, 18, 19, 19.9, 19, 18, 16.7, 15.6, 14.7, 13.8, 13.8, 14, 14.9, 15.4, 15.1, 15.3, 15.6, 16.7, 17.1, 18, 19, 19.9, 24.1, 27, 28.9, 28.9, 28, 28.9, 28, 26.1, 25, 24.1, 21, 19, 17.1, 16, 16, 16, 15.1, 15.1, 14, 12.9, 12.9, 14, 15.1, 16, 18, 19.9, 21.9, 24.1, 26.1, 27, 27, 26.1, 25, 24.1, 23, 21.9, 21.9, 19.9, 19.9, 19, 19.9, 19.9, 21, 21.9, 21.9, 23, 24.1, 26.1, 30, 32, 33.1, 34, 35.1, 34, 35.1, 35.1, 35.1, 34, 34, 33.1, 32, 30.9, 30, 30, 30, 30.9, 30, 30, 28.9, 28.9, 28.9, 30, 30.9, 32, 34, 35.1, 35.1, 35.1, 34, 34, 33.1, 33.1, 33.1, 33.1, 30.9, 30.9, 30.9, 28.9, 28, 26.1, 27, 27, 28, 27, 28.9, 30, 30, 30.9, 30.9, 30.9, 30.9, 30.9, 30.9, 30.9, 30.9, 28.9, 28.9, 28, 27, 27, 27, 27, 24.1, 21.9, 21.9, 19.9, 19.9, 19.9, 19.9, 19, 21, 21.9, 23, 25, 26.1, 24.1, 21.9, 21.9, 19.9, 19, 18, 18, 17.1, 17.1, 17.1, 17.1, 18, 18, 18, 18, 19, 19, 19, 19, 19.9, 21.9, 24.1, 25, 27, 27, 27, 26.1, 25, 24.1, 21.9, 21, 19.9, 19, 19, 18, 18, 19, 18, 18, 18, 19, 19.9, 21.9, 25, 28, 30, 33.1, 33.1, 33.1, 32, 30.9, 30, 28.9, 28, 27, 27, 25, 24.1, 23, 21.9, 23, 23, 23, 23, 21, 24.1, 26.1, 30, 32, 34, 34, 36, 35.1, 35.1, 33.1, 32, 32, 32, 33.1, 33.1, 33.1, 34, 34, 34, 33.1, 33.1, 32, 33.1, 35.1, 30.9, 34, 37, 39, 39.9, 41, 41, 41, 39.9, 39, 37.9, 36, 35.1, 35.1, 32, 28.9, 28.9, 30, 32, 32, 30, 28.9, 28, 30, 30.9, 36, 39, 39.9, 41, 43, 44.1, 43, 43, 39.9, 39, 42.1, 43, 43, 44.1, 46.9, 44.1, 42.1, 41, 41, 39.9, 39.9, 39.9, 41, 41, 42.1, 41, 44.1, 45, 46, 44.1, 44.1, 44.1, 43, 41, 39.9, 39, 37, 37, 36, 36, 36, 35.1, 35.1, 34, 35.1, 35.1, 35.1, 36, 36, 39, 39, 37.9, 39, 41, 39.9, 37.9, 37.9, 39, 39, 39.9, 39, 39.9, 41, 39, 37.9, 37.9, 37, 35.1, 35.1, 35.1, 36, 37.9, 39.9, 41, 42.1, 42.1, 43, 43, 44.1, 43, 43, 41, 37.9, 37, 37.9, 37, 36, 36, 35.1, 35.1, 35.1, 34, 35.1, 35.1, 35.1, 34, 34, 33.1, 34, 34, 36, 35.1, 36, 36, 34, 30.9, 30.9, 28.9, 28, 27, 26.1, 24.1, 23, 21.9, 21, 21, 19.9, 19.9, 21, 21, 23, 23, 25, 26.1, 26.1, 28, 27, 28, 26.1, 25, 23, 21, 19.9, 19, 18, 17.1, 15.1, 12.9, 10.9, 10, 9, 9, 10, 12, 14, 16, 17.1, 19, 21, 23, 23, 23, 23, 21.9, 21.9, 21, 19.9, 18, 18, 18, 17.1, 18, 17.1, 18, 18, 18, 19, 19.9, 24.1, 28, 27, 28, 30, 30.9, 33.1, 28, 27, 28, 27, 28, 28, 25, 24.1, 24.1, 24.1, 23, 23, 25, 25, 27, 28.9, 30, 32, 35.1, 36, 37, 37.9, 37, 36, 36, 37, 37, 35.1, 33.1, 30.9, 32, 32, 30.9, 27, 30.9, 28.9, 28.9, 28.9, 28.9, 30.9, 32, 34, 36, 35.1, 34, 34, 34, 34, 34, 33.1, 32, 32, 32, 32, 30.9, 30.9, 30, 30, 30, 30, 30.9, 30.9, 30.9, 30, 30, 30.9, 30.9, 32, 32, 33.1, 33.1, 33.1, 30.9, 30.9, 28.9, 28, 26.1, 24.1, 23, 21, 21.9, 19.9, 19.9, 19, 19, 17.1, 16, 19, 21, 24.1, 28, 30.9, 33.1, 35.1, 36, 36, 37, 35.1, 35.1, 35.1, 34, 33.1, 30, 32, 33.1, 33.1, 33.1, 33.1, 33.1, 32, 32, 32, 35.1, 37, 37.9, 37, 37, 35.1, 35.1, 35.1, 35.1, 35.1, 35.1, 35.1, 35.1, 34, 35.1, 35.1, 34, 33.1, 33.1, 33.1, 34, 34, 34, 35.1, 33.1, 33.1, 33.1, 34, 34, 35.1, 35.1, 36, 36, 37, 37, 37.9, 39, 39, 37.9, 37.9, 39.9, 41, 42.1, 41, 39, 41, 39, 41, 43, 45, 46, 46, 46, 46, 46.9, 46.9, 46, 45, 44.1, 43, 43, 42.1, 42.1, 42.1, 42.1, 41, 41, 42.1, 41, 41, 42.1, 42.1, 43, 43, 43, 43, 44.1, 45, 46, 46, 45, 43, 42.1, 41, 39.9, 39.9, 37.9, 36, 36, 37.9, 37, 35.1, 36, 35.1, 35.1, 37, 39, 39, 39.9, 39.9, 39.9, 39, 39, 39, 39, 39, 37.9, 39, 39, 39.9, 39.9, 41, 39, 39, 37.9, 39.9, 39.9, 42.1, 41, 39.9, 39.9, 41, 41, 41, 41, 42.1, 43, 43, 41, 37.9, 36.1, 33.8, 33.3, 32.2, 31.5, 30.9, 30.9, 30.9, 30.6, 29.8, 29.5, 28.4, 28, 30.9, 35.1, 37, 37, 37.9, 37, 37, 36, 36, 36, 34, 33.1, 33.1, 33.1, 33.1, 33.1, 33.1, 33.1, 33.1, 32, 32, 32, 32, 33.1, 34, 34, 36, 37, 37, 37.9, 39.9, 41, 42.1, 41, 39.9, 37.9, 35.1, 35.1, 34, 34, 34, 34, 34, 35.1, 36, 36, 37.9, 39, 41, 45, 48.9, 53.1, 55, 57.9, 59, 59, 59, 57.9, 55.9, 55, 52, 52, 50, 50, 46.9, 46, 45, 46.9, 46.9, 45, 44.1, 45, 46.9, 48, 48, 46, 46.9, 48, 46.9, 44.1, 45, 45, 44.1, 44.1, 42.1, 41, 41, 39.9, 39, 37.9, 37, 37, 37, 37, 37, 36, 37, 37.9, 37.9, 37, 37, 37, 37, 37, 37.9, 37, 37, 37, 37, 37, 37, 35.1, 34, 33.1, 33.1, 32, 32, 32, 32, 32, 32, 32, 32, 33.1, 34, 36, 37, 37, 36, 36, 36, 35.1, 35.1, 35.1, 35.1, 35.1, 35.1, 35.1, 35.1, 35.1, 35.1, 34, 35.1, 36, 36, 37.9, 45, 48.9, 50, 50, 53.1, 53.1, 53.1, 52, 48.9, 46.9, 44.1, 43, 39, 36, 33.1, 32, 30.9, 30, 30, 28.9, 28, 28, 30, 30.9, 30.9, 30.9, 30, 30.9, 30, 30, 28.9, 28.9, 30, 28.9, 30, 30, 30.9, 32, 30.9, 32, 32, 33.1, 34, 35.1, 35.1, 35.1, 37.9, 37, 36, 36, 30.9, 28.9, 30, 30.9, 32, 33.1, 34, 34, 34, 34, 33.1, 32, 30.9, 28.9, 26.1, 25, 24.1, 23, 23, 24.1, 25, 27, 28, 28.9, 30, 30.9, 30.9, 32, 30.9, 30, 28, 27, 25, 23, 21.9, 21, 21, 19.9, 19, 19, 19, 19, 18, 19, 19.9, 23, 24.1, 28, 30.9, 33.1, 34, 35.1, 34, 33.1, 33.1, 33.1, 32, 32, 30.9, 32, 32, 30.9, 30.9, 30, 28.9, 28, 28, 28, 28.9, 30, 32, 33.1, 34, 35.1, 36, 35.1, 35.1, 34, 34, 34, 33.1, 34, 36, 35.1, 35.1, 34, 33.1, 32, 30.9, 30, 28.9, 30, 32, 35.1, 39, 39.9, 39, 42.1, 41, 39.9, 39, 37, 36, 36, 36, 35.1, 35.1, 35.1, 35.1, 35.1, 35.1, 34, 32, 32, 32, 32, 32, 32, 32, 32, 33.1, 34, 35.1, 35.1, 35.1, 35.1, 36, 35.1, 34, 33.1, 32, 30, 28.9, 28.9, 28, 28.9, 28, 28.9, 30, 30.9, 35.1, 37.9, 42.1, 44.1, 45, 48, 48, 48.9, 46, 41, 41, 39.9, 39, 37.9, 39, 39, 37.9, 37.9, 37, 36, 36, 35.1, 35.1, 35.1, 36, 37.9, 39, 41, 42.1, 42.1, 43, 39.9, 39.9, 36, 36, 35.1, 32, 28.9, 27, 27, 24.1, 21, 19.9, 19, 18, 17.1, 17.1, 16, 17.1, 18, 18, 21, 24.1, 25, 27, 28, 28.9, 28, 25, 24.1, 21.9, 19, 17.1, 17.1, 16, 16, 16, 16, 16, 16, 16, 17.1, 19.9, 23, 28, 32, 34, 35.1, 36, 39, 36, 35.1, 34, 37, 33.1, 32, 32, 30.9, 30.9, 30, 30, 30, 30.9, 32, 32, 30.9, 30.9, 32, 32, 32, 33.1, 33.1, 33.1, 33.1, 33.1, 32, 32, 32, 30.9, 30.9, 30.9, 30.9, 30.9, 30, 30, 30, 28.9, 30.9, 28.9, 30, 32, 35.1, 37, 37, 39, 39.9, 42.1, 41, 42.1, 39.9, 37.9, 35.1, 33.1, 32, 30, 28, 26.1, 24.1, 23, 21.9, 21.9, 21, 21, 21.9, 25, 27, 28.9, 30.9, 34, 33.1, 36, 37, 37, 36, 33.1, 32, 32, 33.1, 32, 32, 32, 30.9, 28.9, 30, 28.9, 28, 27, 28, 32, 37.9, 37.9, 42.1, 43, 43, 43, 43, 44.1, 39.9, 39, 39.9, 39.9, 37.9, 36, 37, 36, 35.1, 34, 36, 34, 33.1, 32, 33.1, 37, 42.1, 43, 45, 46, 46, 46, 44.1, 41, 41, 39.9, 37.9, 37.9, 37, 37, 37, 37, 36, 34, 33.1, 33.1, 34, 34, 34, 35.1, 35.1, 36, 36, 37, 39, 39, 39.9, 39.9, 39.9, 39.9, 39.9, 37.9, 37.9, 37.9, 37.9, 37.9, 37, 37, 36, 36, 37, 37, 37, 37.9, 39, 39.9, 41, 46.9, 48.9, 51.1, 50, 51.1, 48, 45, 44.1, 42.1, 39.9, 39, 37.9, 37, 37, 36, 36, 35.1, 35.1, 34, 35.1, 37.9, 41, 45, 46, 48, 48.9, 53.1, 53.1, 54, 54, 51.1, 48, 46.9, 45, 43, 42.1, 41, 39.9, 39, 39, 37.9, 37.9, 37.9, 39.9, 44.1, 48, 51.1, 55, 57, 57.9, 60.1, 59, 63, 64, 60.1, 57, 55.9, 54, 53.1, 52, 48, 46, 48, 45, 43, 41, 39.9, 39.9, 41, 42.1, 46.9, 48.9, 53.1, 48.9, 48.9, 48.9, 48, 46.9, 45, 48, 50, 51.1, 50, 45, 43, 43, 43, 41, 39, 39, 39.9, 41, 42.1, 46, 48.9, 52, 52, 53.1, 55, 54, 46, 43, 42.1, 39.9, 42.1, 44.1, 43, 43, 39.9, 39.9, 39, 39, 39.9, 39.9, 39, 39.9, 41, 41, 41, 42.1, 43, 43, 44.1, 44.1, 42.1, 41, 39.9, 39, 39, 37.9, 36, 36, 35.1, 34, 34, 34, 32, 32, 32, 33.1, 34, 37, 39, 43, 46, 48, 52, 52, 48.9, 46, 46, 43.5, 41.9, 39.4, 37.8, 36.3, 35.4, 33.6, 32.4, 30.9, 29.1, 27.7, 26.4, 27, 30, 32, 34, 35.1, 36, 37.9, 39.9, 39.9, 39.9, 39.9, 37.9, 36, 35.1, 34, 33.1, 32, 32, 32, 30.9, 30, 28, 28, 28, 32, 33.1, 34, 37, 39, 43, 45, 46.9, 46.9, 46.9, 43, 42.1, 39.9, 39, 39, 39, 39, 39, 39, 39.9, 41, 41, 42.1, 42.1, 43, 46, 48, 51.1, 52, 52, 60.1, 62.1, 62.1, 59, 45, 43, 42.1, 42.1, 42.1, 39, 37, 35.1, 34, 34, 33.1, 33.1, 32, 32, 33.1, 34, 37, 37.9, 37, 39, 39.9, 41, 41, 41, 39.9, 37, 36, 35.1, 34, 33.1, 32, 30, 28, 28, 28, 27, 26.1, 26.1, 28, 30, 33.1, 37, 39, 43, 44.1, 46.9, 46.9, 46.9, 48.9, 46.9, 43, 39, 39.9, 37.9, 36, 35.1, 36, 34, 34, 33.1, 34, 34, 36, 37.9, 41, 42.1, 43, 42.1, 43, 50, 46.9, 45, 41, 39.9, 39, 37.9, 37.9, 37.9, 39, 39.9, 43, 43, 44.1, 42.1, 39.9, 39.9, 39.9, 39.9, 39.9, 39.9, 41, 41, 41, 42.1, 42.1, 41, 41, 39.9, 39.9, 41, 39.9, 42.1, 43, 44.1, 44.1, 44.1, 43, 44.1, 44.1, 44.1, 45, 46, 50, 52, 54, 55.9, 55.9, 57, 57, 55.9, 55, 55, 55, 53.1, 48.9, 48, 46.9, 46.9, 46, 45, 43, 42.1, 39.9, 39.9, 39, 41, 43, 44.1, 44.1, 44.1, 44.1, 45, 43, 42.1, 42.1, 42.1, 39.9, 39, 39, 39, 39, 39, 39, 39, 37.9, 37.9, 37, 37.9, 39.9, 43, 45, 46.9, 50, 52, 55, 57, 57.9, 60.1, 59, 57, 55, 52, 51.1, 52, 48, 48, 46.9, 46, 44.1, 42.1, 41, 41, 42.1, 45, 46.9, 48.9, 50, 50, 48.9, 48.9, 48, 46.9, 46.9, 46.9, 46, 44.1, 45, 44.1, 41, 42.1, 39.9, 39.9, 39.9, 39.9, 39, 39.9, 43, 46, 48.9, 52, 55, 51.1, 53.1, 52, 57, 60.1, 55.9, 53.1, 50, 46.9, 45, 45, 44.1, 41, 39.9, 39.9, 39, 39, 37.9, 39, 42.1, 45, 46, 46, 45, 46, 50, 53.1, 57, 59, 57, 55, 53.1, 51.1, 48.9, 48, 48, 50, 50, 50, 51.1, 50, 50, 50, 50, 50, 53.1, 55, 55, 57, 59, 60.1, 55, 54, 53.1, 54, 54, 53.1, 53.1, 53.1, 53.1, 54, 52, 52, 51.1, 50, 51.1, 53.1, 53.1, 51.1, 50, 48, 46.9, 46.9, 48, 46.9, 48, 48.9, 48.9, 48.9, 46.9, 48, 48, 48, 48, 48.9, 48, 46, 44.1, 43, 41, 39.9, 41, 43, 46, 48.9, 50, 52, 54, 55.9, 57, 57, 55.9, 55, 53.1, 50, 48.9, 48, 46, 46, 46, 45, 45, 45, 46, 43, 46.9, 52, 54, 55, 57.9, 57.9, 53.1, 51.1, 51.1, 50, 48, 48, 48.9, 48.9, 48, 46.9, 46, 46, 46, 45, 46, 46, 48, 51.1, 55.9, 64, 70, 73.9, 79, 81, 82, 80.1, 79, 77, 73.9, 73, 70, 68, 64, 62.1, 60.1, 60.1, 52, 52, 52, 51.1, 48, 46.9, 46, 46, 48, 50, 48.9, 48.9, 48, 48, 48, 46.9, 46.9, 46, 46, 45, 46, 46, 46.9, 46, 45, 46, 45, 44.1, 43, 43, 42.1, 42.1, 42.1, 42.1, 41, 39, 39.9, 41, 39.9, 39.9, 39.9, 39.9, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39.9, 42.1, 42.1, 43, 43, 44.1, 44.1, 45, 45, 45, 45, 45, 43, 43, 43, 43, 42.1, 42.1, 42.1, 41, 42.1, 42.1, 41, 39.9, 39, 37.9, 39, 39.9, 39.9, 41, 39.9, 42.1, 42.1, 43, 44.1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 44.1, 44.1, 44.1, 46, 46.9, 50, 51.1, 48.9, 46.9, 46.9, 46.9, 46, 45, 45, 44.1, 44.1, 43, 43, 43, 43, 44.1, 44.1, 44.1, 44.1, 43, 44.1, 44.1, 44.1, 46, 45, 45, 44.1, 45, 44.1, 43, 42.1, 42.1, 39.9, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42.1, 43, 45, 45, 44.1, 45, 44.1, 44.1, 45, 45, 45, 44.1, 43, 44.1, 44.1, 44.1, 44.1, 44.1, 45, 46, 46, 46, 46, 46, 46.9, 48.9, 51.1, 53.1, 53.1, 51.1, 54, 55, 55, 57, 57, 54, 50, 48, 46.9, 46.9, 46, 46, 45, 45, 44.1, 44.1, 44.1, 46, 48, 53.1, 60.1, 62.1, 66, 68, 70, 71.1, 72, 71.1, 71.1, 63, 57, 53.1, 53.1, 53.1, 52, 52, 52, 52, 51.1, 48, 46.9, 46.9, 50, 50, 52, 52, 53.1, 52, 50, 50, 48.9, 46.9, 46.9, 46, 44.1, 44.1, 45, 44.1, 43, 43, 43, 43, 43, 42.1, 42.1, 43, 43, 43, 45, 46, 45, 45, 44.1, 44.1, 44.1, 43, 42.1, 41, 41, 41, 41, 39.9, 39.9, 39, 39.9, 39, 39.9, 39.9, 39.9, 39.9, 41, 42.1, 43, 45, 45, 45, 46, 44.1, 44.1, 44.1, 45, 45, 43.7, 43.2, 42.8, 42.3, 41.9, 41.2, 40.8, 40.5, 40.1, 39.2, 38.1, 37.6, 41, 44.1, 46.9, 48.9, 52, 54, 55.9, 55, 53.1, 53.1, 50, 48.9, 46.9, 44.1, 44.1, 43, 42.1, 42.1, 42.1, 41, 41, 39.9, 39.9, 41, 43, 45, 48, 51.1, 54, 55.9, 57.9, 61, 62.1, 63, 61, 60.1, 55.9, 54, 53.1, 51.1, 48.9, 46, 46, 46, 46.9, 46.9, 46.9, 46.9, 48, 50, 53.1, 54, 55.9, 57.9, 60.1, 57.9, 55.9, 53.1, 52, 52, 52, 51.1, 48.9, 48, 48.9, 48.9, 48, 45, 43, 43, 42.1, 43, 45, 48, 50, 53.1, 53.1, 53.1, 54, 54, 54, 54, 53.1, 53.1, 53.1, 52, 51.1, 51.1, 50, 48.9, 48, 48, 48, 48, 46.9, 46.9, 46, 46, 46, 45, 45, 45, 45, 46, 46.9, 46.9, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46.9, 48.9, 52, 57, 57.9, 59, 60.1, 61, 61, 60.1, 60.1, 60.1, 57.9, 57.9, 55.9, 55, 55, 55, 54, 54, 54, 54, 54, 54, 55, 55.9, 59, 62.1, 64, 63, 61, 62.1, 61, 63, 64.9, 63, 60.1, 57.9, 55.9, 55.9, 57.9, 57, 55.9, 55, 55, 53.1, 53.1, 52, 53.1, 55.9, 59, 63, 64.9, 66, 66, 66.9, 66.9, 70, 69.1, 66, 62.1, 60.1, 57.9, 55.9, 55.9, 55.9, 55.9, 57, 59, 60.1, 57, 55.9, 55.9, 57, 57.9, 59, 60.1, 59, 60.1, 60.1, 61, 60.1, 60.1, 60.1, 59, 57.9, 57.9, 57, 57.9, 59, 57.9, 57.9, 57.9, 55.9, 55, 55.9, 57.9, 61, 63, 64.9, 66, 66.9, 66.9, 69.1, 68, 69.1, 69.1, 68, 64.9, 64, 62.1, 60.1, 59, 57.9, 57.9, 55.9, 55.9, 55, 54, 53.1, 55, 57, 59, 60.1, 62.1, 60.1, 60.1, 62.1, 64, 64, 63, 64, 64, 63, 60.1, 57.9, 55.9, 55, 54, 52, 52, 51.1, 50, 50, 53.1, 57, 60.1, 64, 68, 66.9, 64.9, 68, 70, 73, 75.9, 72, 69.1, 66, 62.1, 60.1, 59, 57, 55.9, 55, 55, 55, 53.1, 52, 52, 53.1, 54, 57, 59, 59, 61, 61, 64, 68, 69.1, 69.1, 64.9, 62.1, 61, 55.9, 55, 55, 54, 54, 53.1, 53.1, 53.1, 52, 53.1, 54, 55.9, 57, 57.9, 57.9, 57.9, 57.9, 57, 55.9, 55, 54, 53.1, 52, 52, 51.1, 51.1, 50, 50, 50, 50, 48.9, 48.9, 48.9, 48.9, 48.9, 48.9, 48.9, 50, 50, 50, 50, 51.1, 51.1, 51.1, 51.1, 51.1, 50, 51.1, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 51.1, 51.1, 51.1, 52, 52, 52, 51.1, 51.1, 51.1, 51.1, 51.1, 52, 52, 53.1, 53.1, 53.1, 53.1, 53.1, 53.1, 53.1, 53.1, 52, 52, 52, 53.1, 54, 55, 55.9, 59, 57.9, 57.9, 55.9, 55, 54, 52, 51.1, 51.1, 48.9, 48, 48, 48.9, 48.9, 50, 48.9, 48.9, 48.9, 48.9, 50, 51.1, 52, 54, 54, 55, 53.1, 53.1, 54, 54, 53.1, 54, 54, 55, 55, 55, 55, 57.9, 55.9, 54, 54, 54, 53.1, 53.1, 55, 59, 63, 66.9, 66.9, 64.9, 63, 64, 64.9, 68, 69.1, 66.9, 68, 66, 64, 62.1, 62.1, 62.1, 61, 60.1, 59, 57.9, 57.9, 61, 66, 70, 75, 79, 80.1, 78.1, 73.9, 73.9, 73.9, 78.1, 79, 77, 75, 72, 71.1, 69.1, 68, 68, 71.1, 66.9, 66.9, 66.9, 66.9, 68, 64.9, 66, 68, 70, 73.9, 77, 75.9, 77, 75, 72, 69.1, 66.9, 64.9, 64, 63, 62.1, 61, 61, 59, 59, 57.9, 57.9, 57.9, 57.9, 60.1, 63, 66, 69.1, 72, 75, 75.9, 77, 79, 79, 79, 78.1, 75, 73.9, 70, 69.1, 61, 59, 61, 60.1, 61, 60.1, 59, 61, 64, 68, 70, 73.9, 75.9, 78.1, 80.1, 82, 78.1, 75, 78.1, 75, 71.1, 70, 69.1, 68, 66.9, 64, 64, 60.1, 60.1, 59, 59, 61, 63, 66, 70, 73, 75, 75, 73, 71.1, 69.1, 66.9, 66, 64, 63, 63, 62.1, 60.1, 59, 57.9, 57.9, 57, 57, 57, 57, 57, 55.9, 57, 57, 57, 57, 57, 57.9, 57, 57.9, 57.9, 57.9, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 57.9, 57, 57, 59, 61, 63, 63, 60.1, 60.1, 60.1, 60.1, 59, 59, 59, 57, 55.9, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55.9, 55.9, 55.9, 55.9, 57.9, 59, 59, 59, 59, 59, 57.9, 55.9, 55, 55, 55, 55, 55, 55.9, 55.9, 55.9, 55.9, 55.9, 57, 59, 62.1, 64.9, 68, 71.1, 73.9, 75, 75, 73.9, 75, 77, 75, 72, 71.1, 69.1, 68, 66.9, 66, 66, 66, 66, 64.9, 64.9, 66, 66, 68, 70, 73, 75.9, 79, 82.9, 86, 84.9, 82.9, 81, 78.1, 75, 73.9, 72, 69.1, 68, 66, 66, 64.9, 64.9, 64, 64.9, 64.9, 66, 66.9, 69.1, 70, 71.1, 72, 75, 77, 78.1, 79, 77, 73.9, 72, 72, 71.1, 66.9, 68, 66.9, 64.9, 63, 62.1, 60.1, 60.1, 59, 59, 60.1, 61, 61, 60.1, 61, 62.1, 63, 62.1, 62.1, 60.1, 59, 58.3, 58.8, 59.2, 59.7, 60.1, 60.4, 61.5, 62.1, 62.6, 62.8, 63.9, 66, 71.1, 75, 79, 82, 86, 87.1, 88, 87.1, 87.1, 84.9, 64, 80.1, 77, 73, 71.1, 71.1, 70, 68, 66, 66, 64.9, 64.9, 64, 66.9, 70, 73.9, 77, 81, 82.9, 86, 84.9, 87.1, 87.1, 84, 80.1, 77, 73.9, 73.9, 72, 71.1, 70, 69.1, 69.1, 68, 66.9, 66.9, 68, 70, 72, 73, 75, 79, 81, 84, 86, 88, 87.1, 84, 79, 70, 69.1, 69.1, 69.1, 66, 62.1, 62.1, 62.1, 61, 61, 62.1, 61, 62.1, 60.1, 57.9, 60.1, 62.1, 63, 62.1, 63, 62.1, 61, 61, 61, 62.1, 62.1, 63, 62.1, 61, 60.1, 59, 59, 59, 57.9, 57, 57.9, 57.9, 60.1, 60.1, 60.1, 60.1, 60.1, 61, 61, 61, 60.1, 60.1, 57.9, 57, 60.1, 60.1, 60.1, 60.1, 59, 57.9, 57.9, 57.9, 57.9, 57, 57.9, 57, 57, 55, 55.9, 57, 57.9, 57, 55.9, 57, 55, 54, 53.1, 53.1, 53.1, 53.1, 53.1, 53.1, 53.1, 53.1, 53.1, 52, 53.1, 53.1, 53.1, 53.1, 55, 55, 55, 55, 55, 57, 57, 57.9, 57, 55.9, 55.9, 55.9, 55.9, 55.9, 55.9, 55.9, 55.9, 57, 57.9, 59, 57.9, 57.9, 57.9, 59, 62.1, 66, 70, 73, 75, 75.9, 75.9, 71.1, 72, 72, 71.1, 75.9, 72, 70, 70, 66.9, 66.9, 66, 64, 63, 62.1, 63, 62.1, 66, 68, 73, 77, 79, 81, 82.9, 84, 82, 81, 80.1, 80.1, 73.9, 72, 70, 68, 66, 66.9, 66, 64.9, 64.9, 64, 64, 64, 64.9, 68, 70, 71.1, 73.9, 75.9, 77, 80.1, 82.9, 80.1, 81, 80.1, 78.1, 73.9, 73, 71.1, 69.1, 68, 68, 66.9, 66.9, 66, 66.9, 66.9, 69.1, 72, 75, 80.1, 84.9, 88, 89.1, 89.1, 89.1, 89.1, 90, 89.1, 86, 82.9, 80.1, 80.1, 80.1, 77, 75, 75, 73, 69.1, 72, 71.1, 64.9, 63, 62.1, 62.1, 63, 63, 62.1, 62.1, 64, 64, 63, 62.1, 59, 57.9, 59, 62.1, 60.1, 57.9, 59, 61, 57.9, 57.9, 55.9, 55.9, 57, 57.9, 61, 62.1, 63, 63, 62.1, 61, 61, 61, 60.1, 59, 59, 57.9, 57, 55.9, 55, 55.9, 55.9, 55.9, 55.9, 54, 52, 53.1, 55, 59, 62.1, 64, 64.9, 68, 69.1, 71.1, 73, 72, 72, 69.1, 73, 69.1, 64.9, 63, 62.1, 60.1, 59, 57.9, 57.9, 57, 57, 57, 59, 62.1, 66, 70, 73.9, 77, 77, 77, 75.9, 75.9, 75, 73, 70, 66, 63, 62.1, 61, 61, 60.1, 61, 61, 60.1, 59, 59, 61, 66, 69.1, 70, 71.1, 73.9, 75, 73, 73.9, 73, 73, 71.1, 72, 71.1, 69.1, 68, 66.9, 68, 66.9, 66, 64.9, 63, 64, 64.9, 66, 68, 69.1, 72, 72, 75, 75, 75, 75, 73.9, 73, 72, 71.1, 68, 66.9, 66.9, 66.9, 68, 66, 68, 66.9, 66, 66, 66, 66.9, 68, 71.1, 72, 73.9, 75.9, 77, 73.9, 75, 73, 75, 75.9, 73.9, 73, 70, 71.1, 71.1, 70, 68, 66.9, 70, 68, 66.9, 68, 70, 73, 77, 78.1, 81, 82.9, 84, 84.9, 86, 86, 84, 84.9, 82, 79, 79, 75.9, 73.9, 73, 71.1, 68, 66, 64, 61, 60.1, 61, 61, 62.1, 63, 66, 68, 68, 69.1, 69.1, 68, 66, 66, 64, 62.1, 61, 61, 60.1, 60.1, 57.9, 57.9, 57, 55.9, 55, 55, 57, 60.1, 63, 64.9, 69.1, 69.1, 71.1, 72, 72, 71.1, 70, 69.1, 64, 63, 62.1, 62.1, 62.1, 61, 61, 61, 60.1, 59, 59, 60.1, 60.1, 62.1, 62.1, 64.9, 64.9, 64.9, 64.9, 64.9, 64.9, 69.1, 68, 68, 68, 66.9, 64.9, 62.1, 62.1, 62.1, 62.1, 61, 62.1, 61, 60.1, 61, 64, 66.9, 71.1, 75.9, 78.1, 80.1, 78.1, 78.1, 75.9, 77, 75, 73, 72, 71.1, 69.1, 66.9, 66.9, 68, 66, 64, 64, 64, 61, 62.1, 64.9, 70, 75, 80.1, 84, 82, 82, 84, 84.9, 82, 81, 79, 75.9, 73, 70, 66.9, 66, 64.9, 64, 64.9, 64, 64.9, 64.9, 66, 68, 70, 72, 75, 79, 80.1, 81, 82, 82.9, 82, 82, 81, 72, 66.9, 64, 62.1, 62.1, 60.1, 61, 62.1, 61, 59, 57.9, 59, 60.1, 61, 57.9, 55.9, 57, 57, 57, 55.9, 55.9, 57, 57, 57, 57, 57.9, 57, 57.9, 57.9, 57.9, 57.9, 57.9, 55.9, 55.9, 57, 57, 57.9, 59, 59, 59, 60.1, 62.1, 61, 60.1, 57.9, 59, 61, 62.1, 62.1, 62.1, 59, 57, 57.9, 57, 55.9, 55, 54, 53.1, 53.1, 53.1, 55.9, 60.1, 63, 66.9, 68, 68, 71.1, 72, 70, 73, 73.9, 75, 73.9, 73, 64, 69.1, 61, 57, 57, 60.1, 57, 55.9, 57, 54, 60.1, 64, 66.9, 72, 75, 78.1, 79, 80.1, 81, 80.1, 79, 77, 73.9, 71.1, 68, 66, 66, 66, 64.9, 64.9, 66.9, 66, 64.9, 66, 64.9, 68, 69.1, 70, 68, 66, 66, 66, 66.9, 68, 71.1, 70, 69.1, 70.3, 68.9, 68, 67.1, 66.9, 66.6, 66.4, 66, 65.8, 66.2, 66.7, 66, 66.9, 69.1, 71.1, 72, 66.9, 71.1, 69.1, 64.9, 66.9, 66, 64.9, 66, 64.9, 64.9, 66, 66, 63, 63, 61, 63, 62.1, 63, 62.1, 62.1, 64, 64.9, 68, 71.1, 71.1, 73, 64, 66.9, 64.9, 66, 66.9, 69.1, 69.1, 77, 71.1, 69.1, 70, 69.1, 68, 66.9, 68, 66, 66.9, 70, 73.9, 75.9, 78.1, 81, 84, 82.9, 82.9, 82.9, 82.9, 82.9, 82, 79, 72, 68, 70, 70, 68, 69.1, 69.1, 68, 66, 64.9, 64, 66, 69.1, 70, 71.1, 70, 69.1, 66.9, 68, 68, 66, 66, 64.9, 62.1, 61, 60.1, 60.1, 59, 59, 59, 59, 57.9, 60.1, 62.1, 64, 66.9, 70, 75, 78.1, 79, 80.1, 81, 82, 80.1, 81, 80.1, 80.1, 77, 73.9, 77, 73.9, 73, 72, 72, 71.1, 68, 68, 68, 68, 72, 75, 80.1, 81, 84, 84.9, 87.1, 88, 87.1, 82, 84.9, 89.1, 86, 82.9, 80.1, 80.1, 79, 75.9, 75, 73.9, 73, 72, 71.1, 71.1, 73, 75, 78.1, 81, 82.9, 84, 84, 81, 80.1, 75, 78.1, 80.1, 80.1, 75.9, 75, 73.9, 73, 73, 73, 73, 73, 72, 72, 71.1, 73, 73.9, 77, 78.1, 80.1, 82, 84.9, 84.9, 84.9, 84.9, 86, 86, 82.9, 81, 79, 75, 75.9, 73.9, 73, 73, 73, 72, 72, 71.1, 72, 73, 75.9, 78.1, 80.1, 82.9, 82, 84, 78.1, 79, 80.1, 77, 73, 75, 75.9, 73.9, 75.9, 75, 73.9, 73, 71.1, 69.1, 66.9, 66.9, 70, 73, 73, 78.1, 75, 77, 75.9, 75, 75.9, 75, 73.9, 75.9, 73.9, 71.1, 72, 75.9, 73.9, 73, 73, 73, 71.1, 70, 66.9, 68, 71.1, 72, 78.1, 80.1, 84, 84.9, 87.1, 86, 86, 84.9, 86, 84, 82, 79, 75.9, 75, 75, 73, 72, 72, 72, 71.1, 72, 72, 73, 75, 80.1, 81, 84, 82, 87.1, 82.9, 82.9, 82.9, 82, 81, 78.1, 75, 73, 72, 71.1, 69.1, 68, 66.9, 66, 64.9, 64.9, 64.9, 64.9, 64.9, 66.9, 71.1, 73, 73, 73.9, 75, 75, 75, 75.9, 75, 75, 73.9, 71.1, 70, 69.1, 66.9, 66.9, 66.9, 66, 66, 64.9, 64.9, 64, 66, 66.9, 69.1, 70, 70, 66, 69.1, 70, 71.1, 69.1, 70, 68, 69.1, 71.1, 70, 69.1, 69.1, 66.9, 66.9, 66.9, 66.9, 66, 66, 66.9, 68, 70, 72, 73, 71.1, 69.1, 70, 72, 73.9, 73, 75, 73.9, 72, 73, 71.1, 70, 69.1, 69.1, 68, 66.9, 64.9, 64, 64.9, 68, 73, 75.9, 81, 82, 82.9, 80.1, 80.1, 84.9, 84, 81, 77, 75.9, 73.9, 73, 73, 71.1, 70, 70, 70, 70, 70, 71.1, 71.1, 70, 70, 71.1, 71.1, 73.9, 79, 80.1, 84, 81, 88, 87.1, 86, 84, 80.1, 75.9, 73, 71.1, 70, 69.1, 68, 66, 64.9, 64.9, 64, 66.9, 69.1, 71.1, 73.9, 75.9, 78.1, 79, 80.1, 79, 81, 81, 79, 78.1, 77, 75, 73.9, 72, 72, 70, 69.1, 69.1, 70, 71.1, 70, 73, 73.9, 78.1, 81, 84, 87.1, 88, 88, 89.1, 88, 88, 86, 86, 84.9, 82.9, 80.1, 79, 79, 78.1, 77, 75, 73, 73, 73, 75, 78.1, 82, 86, 89.1, 91, 91.9, 91.9, 91.9, 91.9, 90, 88, 84.9, 82, 80.1, 78.1, 75.9, 75.9, 75, 75, 75, 75, 73.9, 73.9, 73, 72, 72, 75, 75, 75, 73.9, 75, 75, 75, 75, 75, 73.9, 71.1, 70, 70, 71.1, 71.1, 70, 69.1, 66.9, 66, 64.9, 64.9, 66, 66.9, 70, 72, 71.1, 71.1, 70, 71.1, 72, 70, 70, 68, 68, 66, 64, 63, 63, 63, 62.1, 63, 63, 63, 60.1, 60.1, 63, 66, 66.9, 69.1, 70, 72, 72, 71.1, 73, 73, 72, 71.1, 68, 68, 69.1, 72, 72, 71.1, 71.1, 71.1, 71.1, 71.1, 72, 72, 72, 71.1, 71.1, 73.9, 78.1, 82, 84, 86, 88, 89.1, 88, 87.1, 86, 82, 80.1, 78.1, 75, 71.1, 69.1, 66.9, 64.9, 63, 63, 62.1, 63, 66, 66.9, 70, 71.1, 72, 73, 73.9, 73.9, 73, 75.9, 75, 73, 70, 66.9, 66, 64.9, 64, 62.1, 61, 60.1, 60.1, 59, 59, 62.1, 64.9, 69.1, 72, 73.9, 75, 77, 78.1, 80.1, 80.1, 80.1, 79, 78.1, 73, 72, 70, 70, 69.1, 69.1, 68, 66.9, 66.9, 66.9, 68, 70, 70, 75, 78.1, 82, 82, 84, 86, 86, 84.9, 84.9, 84, 81, 79, 78.1, 77, 75, 73.9, 73, 73, 72, 72, 71.1, 71.1, 72, 73.9, 78.1, 81, 82, 82.9, 84.9, 86, 86, 77, 75, 75.9, 75, 73, 73, 72, 70, 69.1, 69.1, 69.1, 68, 68, 68, 66.9, 68, 69.1, 69.1, 71.1, 73, 71.1, 73, 70, 68, 69.1, 68, 66.9, 68, 66.9, 66.9, 66.9, 66.9, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66.9, 66.9, 66.9, 68, 66.9, 66.9, 66, 66.9, 66, 64.9, 64, 64, 64, 64, 64, 64, 63, 63, 63, 63, 63, 63, 63, 64, 64, 66, 64.9, 64.9, 64, 63, 63, 63, 62.8, 62.2, 62.2, 62.4, 62.4, 62.6, 62.6, 62.8, 62.8, 62.8, 63, 64, 64.9, 64.9, 70, 72, 72, 75.9, 80.1, 82, 75, 73.9, 78.1, 81, 80.1, 78.1, 78.1, 73.9, 75, 73, 72, 71.1, 70, 69.1, 70, 71.1, 72, 72, 71.1, 71.1, 71.1, 71.1, 70, 70, 69.1, 68, 68, 66.9, 66, 66, 66, 64.9, 64.9, 64, 64, 64, 64, 64, 64, 64.9, 66.9, 71.1, 75, 80.1, 82.9, 84, 82.9, 82.9, 82, 79, 78.1, 77, 75, 75, 73.9, 73, 72, 72, 73, 73, 73, 73, 73, 72, 70, 71.1, 72, 75, 75, 77, 77, 77, 77, 77, 73.9, 71.1, 69.1, 66, 64, 62.1, 60.1, 57.9, 55, 57, 55, 54, 57, 62.1, 66, 66.9, 66.9, 68, 69.1, 69.1, 70, 71.1, 70, 70, 69.1, 66.9, 66, 64, 63, 63, 61, 60.1, 60.1, 59, 59, 59, 61, 64, 68, 71.1, 73.9, 77, 79, 78.1, 79, 79, 78.1, 75.9, 73, 70, 66.9, 64.9, 64.9, 63, 63, 62.1, 63, 63, 63, 63, 64, 66, 69.1, 71.1, 73, 77, 75.9, 75.9, 75, 75, 75, 73.9, 73, 72, 72, 72, 73, 73, 73.9, 73.9, 73.9, 73.9, 73.9, 73.9, 73.9, 75, 75.9, 78.1, 79, 81, 81, 82, 82.9, 82, 82, 80.1, 78.1, 75.9, 73.9, 73, 71.1, 71.1, 70, 68, 64.9, 64.9, 66, 66, 66, 69.1, 71.1, 73.9, 75, 77, 73.9, 84, 82, 81, 77, 80.1, 78.1, 75.9, 75, 75, 73, 72, 68, 64.9, 62.1, 61, 60.1, 60.1, 61, 62.1, 64, 66.9, 70, 71.1, 72, 73, 75, 75, 73.9, 72, 71.1, 70, 68, 66, 64, 62.1, 60.1, 60.1, 57.9, 57.9, 57, 57, 57.9, 62.1, 64.9, 66.9, 68, 71.1, 71.1, 70, 68, 69.1, 69.1, 68, 68, 64.9, 64, 66, 66, 64, 63, 63, 62.1, 62.1, 62.1, 62.1, 63, 64.9, 69.1, 73, 73, 73.9, 75, 75.9, 77, 75.9, 75.9, 75, 73.9, 72, 70, 70, 69.1, 66.9, 66.9, 66, 66, 66, 66, 66, 68, 69.1, 72, 75.9, 79, 81, 82.9, 84, 84.9, 84.9, 86, 84.9, 84, 82, 80.1, 78.1, 75, 75, 72, 70, 69.1, 68, 64.9, 64, 64, 66, 66, 64.9, 64.9, 64, 64, 64, 64, 62.1, 62.1, 62.1, 60.1, 59, 57.9, 57.9, 57.9, 57, 57, 57, 57, 57.9, 57.9, 57.9, 59, 59, 63, 64, 66.9, 68, 68, 68, 70, 68, 64.9, 64.9, 63, 60.1, 60.1, 60.1, 60.1, 59, 60.1, 59, 57.9, 57.9, 57.9, 55.9, 57, 62.1, 66, 66.9, 69.1, 68, 69.1, 70, 70, 68, 68, 68, 66, 64.9, 64.9, 64.9, 64.9, 64, 64.9, 64, 63, 62.1, 62.1, 61, 62.1, 62.1, 64.9, 66.9, 70, 71.1, 70, 73, 71.1, 72, 72, 70, 69.1, 68, 66.9, 66, 64.9, 64, 64, 64, 64, 64, 64, 63, 63, 63, 64, 66, 69.1, 71.1, 75, 75, 75.9, 75.9, 78.1, 73.9, 73.9, 72, 72, 71.1, 70, 69.1, 69.1, 69.1, 69.1, 69.1, 68, 68, 69.1, 70, 71.1, 73.9, 73.9, 75.9, 77, 75, 75.9, 77, 75.9, 73.9, 72, 70, 70, 69.1, 70, 70, 68, 64.9, 64.9, 64, 63, 62.1, 63, 66, 69.1, 71.1, 69.1, 71.1, 70, 70, 69.1, 69.1, 69.1, 69.1, 68, 64.9, 64.9, 64, 63, 63, 63, 63, 64, 64, 64, 63, 64, 66, 70, 72, 73.9, 75, 75, 81, 82.9, 82.9, 84, 79, 75.9, 73, 72, 70, 69.1, 66.9, 66, 64.9, 64, 64, 63, 63, 63, 66.9, 71.1, 75, 79, 82.9, 84.9, 87.1, 86, 86, 86, 84.9, 81, 75, 73, 71.1, 71.1, 70, 68, 66.9, 66, 64.9, 64.9, 64.9, 64.9, 68, 72, 75, 79, 82.9, 84.9, 86, 87.1, 87.1, 86, 84, 79, 75.9, 73, 72, 72, 72, 72, 73, 73, 72, 71.1, 71.1, 72, 73.9, 75.9, 81, 84, 81, 79, 81, 78.1, 75.9, 73, 72, 71.1, 70, 71.1, 71.1, 71.1, 69.1, 70, 68, 69.1, 68, 66.9, 66.9, 66, 66.9, 69.1, 70, 72, 72, 71.1, 73.9, 73.9, 78.1, 75.9, 80.1, 79, 81, 79, 80.1, 79, 79, 78.1, 77, 77, 78.1, 77, 77, 75.9, 79, 80.1, 82.9, 86, 84, 80.1, 79, 79, 78.1, 75, 73, 71.1, 69.1, 70, 69.1, 69.1, 68, 66.9, 66.9, 66.9, 66.9, 66.9, 66, 64.9, 66, 66, 66, 66.9, 68, 66, 69.1, 70, 70, 72, 71.1, 71.1, 73.9, 73, 73, 72, 71.1, 73.9, 73, 73.9, 73.9, 73, 73.9, 73.9, 75, 75.9, 77, 84, 84, 84.9, 87.1, 86, 82.9, 82.9, 82.9, 80.1, 78.1, 75.9, 75.9, 73.9, 73.9, 73, 72, 71.1, 70, 69.1, 69.1, 68, 71.1, 75.9, 79, 82, 82.9, 84.9, 84.9, 87.1, 84.9, 84.9, 84, 81, 77, 75, 72, 71.1, 68, 66, 66.9, 66, 64.9, 64.9, 64, 64, 66.9, 72, 75.9, 75.9, 78.1, 79, 79, 77, 77, 78.1, 75.9, 73, 70, 66.9, 66.9, 68, 68, 64.9, 66, 66, 64, 64, 63, 64, 69.1, 73, 73.9, 75, 79, 82, 79, 78.1, 77, 77, 75, 72, 70, 68.2, 67.8, 65.8, 64.8, 64.2, 62.8, 61.7, 60.8, 59.7, 59.5, 60.6, 62.1, 66.9, 71.1, 73.9, 75.9, 77, 78.1, 79, 77, 77, 75, 72, 72, 71.1, 70, 69.1, 68, 68, 68, 69.1, 68, 68, 66.9, 66, 66, 62.1, 63, 62.1, 61, 61, 59, 59, 57.9, 59, 57.9, 57.9, 57.9, 57.9, 57.9, 57.9, 57, 55.9, 55, 55, 55, 54, 53.1, 53.1, 55.9, 55.9, 59, 63, 63, 63, 64.9, 66.9, 70, 66, 68, 63, 61, 61, 60.1, 60.1, 59, 57.9, 57.9, 57, 55.9, 55.9, 55.9, 57, 60.1, 63, 66, 69.1, 72, 72, 73.9, 72, 71.1, 70, 70, 68, 64.9, 64, 63, 63, 64.9, 64, 64, 63, 64, 64.9, 64.9, 64.9, 66, 68, 69.1, 70, 70, 70, 69.1, 70, 73.9, 71.1, 72, 72, 70, 66.9, 64, 63, 61, 60.1, 59, 57.9, 57, 55.9, 55, 55, 57, 60.1, 61, 63, 66, 68, 69.1, 69.1, 70, 70, 68, 66.9, 64.9, 63, 61, 59, 57.9, 57, 57, 55.9, 55, 55, 54, 55, 57, 62.1, 64.9, 66.9, 69.1, 72, 72, 70, 70, 70, 71.1, 70, 69.1, 68, 66.9, 64.9, 64, 64, 62.1, 61, 60.1, 59, 57.9, 57.9, 62.1, 66.9, 70, 71.1, 73.9, 75, 77, 64.9, 64, 64, 62.1, 61, 60.1, 59, 59, 59, 57.9, 59, 55.9, 57, 55, 54, 54, 54, 57, 62.1, 64, 66, 68, 70, 71.1, 66.9, 66.9, 66.9, 68, 64, 62.1, 63, 62.1, 61, 59, 57.9, 59, 60.1, 59, 59, 59, 59, 62.1, 66.9, 70, 70, 72, 73, 71.1, 66, 66, 68, 68, 68, 69.1, 70, 70, 69.1, 68, 64.9, 63, 62.1, 61, 60.1, 60.1, 60.1, 60.1, 63, 64, 66, 60.1, 70, 70, 71.1, 71.1, 70, 69.1, 66, 64, 63, 61, 61, 62.1, 60.1, 59, 57.9, 57.9, 57, 55.9, 55.9, 57, 60.1, 63, 66, 68, 69.1, 70, 72, 72, 72, 72, 70, 68, 66, 64.9, 61, 60.1, 59, 60.1, 60.1, 61, 61, 59, 59, 63, 66, 70, 72, 75.9, 75.9, 78.1, 79, 81, 82, 80.1, 77, 75, 73, 70, 68, 71.1, 68, 66, 64.9, 64, 63, 62.1, 64, 64.9, 72, 79, 81, 84, 84.9, 86, 88, 88, 84.9, 84, 78.1, 73.9, 73.9, 72, 71.1, 71.1, 69.1, 69.1, 68, 64.9, 64.9, 63, 64.9, 66.9, 69.1, 72, 75.9, 77, 79, 79, 80.1, 79, 78.1, 77, 75, 73.9, 71.1, 71.1, 69.1, 68, 68, 66.9, 66, 64.9, 64.9, 64.9, 63, 66.9, 69.1, 71.1, 73.9, 73.9, 69.1, 69.1, 70, 69.1, 64.9, 63, 63, 63, 61, 60.1, 60.1, 61, 62.1, 63, 64, 63, 63, 62.1, 63, 63, 64, 64.9, 64.9, 64.9, 66.9, 68, 68, 68, 64.9, 64.9, 64.9, 66, 64.9, 64.9, 64.9, 64, 64, 63, 64, 64, 64, 62.1, 63, 66, 68, 70, 73.9, 78.1, 80.1, 80.1, 79, 79, 79, 75, 72, 71.1, 71.1, 70, 69.1, 68, 66.9, 66, 66, 66, 64, 64, 63, 64.9, 68, 72, 73, 75, 77, 77, 77, 77, 78.1, 77, 75, 72, 70, 71.1, 70, 70, 68, 69.1, 64.9, 64.9, 64.9, 64.9, 64, 66, 68, 72, 73.9, 78.1, 80.1, 81, 80.1, 81, 80.1, 78.1, 73.9, 72, 72, 72, 70, 66.9, 66, 66.9, 66.9, 66, 64.9, 64.9, 64.9, 66, 70, 70, 72, 73.9, 73.9, 73, 73.9, 72, 69.1, 68, 68, 66.9, 66, 64.9, 64, 61, 61, 59, 55, 55, 54, 53.1, 53.1, 57, 60.1, 60.1, 62.1, 63, 64.9, 66.9, 64.9, 66, 66, 64.9, 63, 63, 62.1, 59, 57, 55, 55.9, 55.9, 55.9, 54, 52, 50, 48.9, 52, 57, 59, 61, 64, 66, 69.1, 70, 70, 69.1, 66, 64, 63, 62.1, 62.1, 62.1, 63, 64, 64, 63, 63, 61, 59, 57.9, 57, 57, 57, 57.9, 61, 64, 66, 64, 64, 64, 62.1, 59, 57, 55.9, 55, 55.9, 54, 52, 51.1, 50, 48, 48, 48, 46.9, 50, 55, 57.9, 61, 63, 64.9, 66, 68, 68, 68, 64.9, 63, 62.1, 57, 55.9, 57.9, 55.9, 55, 54, 55, 54, 53.1, 53.1, 52, 55.9, 57.9, 57.9, 61, 66, 66, 70, 70, 66, 64.9, 63, 61, 60.1, 60.1, 60.1, 61, 62.1, 63, 66, 66, 64.9, 64.9, 64.9, 66, 66.9, 69.1, 72, 73, 73, 73.9, 73, 73, 72, 70, 69.1, 69.1, 68, 64, 63, 60.1, 57.9, 57, 57, 55.9, 57, 55.9, 55.9, 55.9, 55.9, 57, 61, 63, 63, 63, 64.9, 66, 64.9, 62.1, 62.1, 59, 57, 55, 54, 52, 52, 51.1, 48.9, 48.9, 48, 46.9, 48, 46, 48.9, 51.1, 54, 57, 60.1, 62.1, 64, 64.9, 66, 64.9, 64, 61, 59, 57.9, 57, 55, 55, 55.9, 55, 55, 55, 53.1, 53.1, 53.1, 55.9, 60.1, 62.1, 64.9, 64.9, 64.9, 66, 66.9, 66.9, 62.1, 62.1, 60.1, 60.1, 59.4, 59.4, 59.5, 59.7, 59.9, 60.1, 60.1, 60.1, 59.4, 59.4, 59.2, 60.1, 62.1, 63, 64.9, 66, 64.9, 66, 64, 63, 60.1, 60.1, 57.9, 55.9, 55, 53.1, 53.1, 53.1, 53.1, 52, 50, 48, 46.9, 46.9, 48.9, 52, 55, 60.1, 64.9, 66, 66.9, 68, 68, 68, 68, 66, 64, 63, 63, 62.1, 63, 63, 62.1, 62.1, 61, 61, 60.1, 61, 60.1, 62.1, 64.9, 68, 68, 72, 68, 66.9, 64.9, 63, 63, 64, 63, 63, 62.1, 62.1, 59, 57.9, 59, 59, 59, 57, 57, 57.9, 57.9, 53.1, 50, 50, 51.1, 50, 48.9, 48.9, 48, 48, 46.9, 46.9, 46, 45, 45, 45, 45, 46, 45, 45, 46, 44.1, 43, 43, 43, 45, 48.9, 54, 57.9, 61, 64, 66, 66.9, 68, 68, 66.9, 64.9, 63, 60.1, 59, 57.9, 57.9, 55.9, 54, 53.1, 53.1, 52, 52, 52, 55, 57, 59, 63, 66, 70, 71.1, 72, 72, 69.1, 64.9, 62.1, 61, 57.9, 57, 57, 55.9, 55.9, 55.9, 55.9, 57, 57, 57, 57, 59, 61, 62.1, 63, 62.1, 68, 68, 70, 71.1, 69.1, 66.9, 66, 64, 64, 64, 63, 62.1, 61, 60.1, 59, 59, 57, 55, 55, 55, 57, 59, 60.1, 62.1, 63, 63, 63, 63, 60.1, 59, 57, 55.9, 54, 53.1, 51.1, 50, 48.9, 48, 46.9, 46, 46, 45, 45, 46, 48, 50, 52, 52, 55, 57, 57.9, 59, 59, 57.9, 55.9, 55, 54, 54, 54, 54, 55, 55, 54, 54, 54, 53.1, 53.1, 53.1, 55, 57.9, 61, 64, 66.9, 68, 69.1, 69.1, 68, 66.9, 64, 63, 61, 59, 57, 57, 55, 54, 53.1, 53.1, 53.1, 51.1, 50, 51.1, 51.1, 51.1, 52, 51.1, 50, 48, 46, 46, 46, 46, 45, 45, 44.1, 44.1, 44.1, 43, 43, 44.1, 44.1, 44.1, 44.1, 44.1, 44.1, 44.1, 44.1, 45, 46, 48, 48, 48.9, 48.9, 48.9, 48.9, 48, 46.9, 46.9, 46.9, 46.9, 46, 46, 44.1, 44.1, 43, 42.1, 42.1, 41, 41, 41, 44.1, 48.9, 52, 54, 54, 55, 54, 54, 53.1, 51.1, 50, 48.9, 48.9, 48, 46.9, 46, 45, 44.1, 43, 43, 42.1, 42.1, 42.1, 44.1, 46.9, 51.1, 54, 55, 55, 55.9, 55, 55, 54, 53.1, 52, 51.1, 50, 48.9, 46.9, 46.9, 46, 46, 46, 43, 42.1, 42.1, 42.1, 44.1, 48.9, 52, 53.1, 55, 59, 61, 61, 62.1, 60.1, 55, 54, 54, 53.1, 54, 52, 52, 51.1, 50, 48.9, 48.9, 48, 50, 50, 51.1, 54, 57, 59, 59, 59, 59, 57.9, 57, 55.9, 54, 53.1, 53.1, 53.1, 53.1, 52, 52, 52, 52, 52, 52, 52, 52, 51.1, 50, 54, 55.9, 55.9, 55.9, 57.9, 57.9, 59, 59, 57.9, 55.9, 55.9, 55.9, 55.9, 55.9, 55.9, 55.9, 57, 55.9, 55.9, 55.9, 55.9, 55.9, 55, 55, 57, 62.1, 64.9, 69.1, 70, 71.1, 71.1, 71.1, 70, 63, 59, 57, 62.1, 60.1, 57.9, 57, 55.9, 55, 53.1, 52, 51.1, 51.1, 52, 52, 55, 59, 61, 63, 61, 62.1, 66, 66.9, 60.1, 55.9, 55, 55, 53.1, 53.1, 53.1, 53.1, 52, 51.1, 50, 48.9, 48.9, 50, 48.9, 48.9, 51.1, 51.1, 51.1, 55.9, 57, 59, 59, 57.9, 62.1, 60.1, 57, 55, 54, 55.9, 55.9, 55.9, 55.9, 57, 57, 57, 57.9, 59, 59, 57.9, 59, 61, 62.1, 63, 64.9, 64.9, 66.9, 66, 57, 55.9, 55, 53.1, 52, 51.1, 50, 48, 48, 46.9, 46, 45, 44.1, 44.1, 43, 43, 45, 46.9, 48.9, 52, 54, 55, 57, 55.9, 55, 53.1, 52, 52, 50, 50, 48.9, 48, 46, 41, 43, 44.1, 44.1, 45, 45, 46.9, 48.9, 52, 55.9, 55.9, 57, 57.9, 60.1, 61, 57.9, 57, 55.9, 55.9, 55.9, 55, 53.1, 52, 50, 51.1, 51.1, 50, 48.9, 48.9, 50, 51.1, 52, 54, 57.9, 62.1, 59, 63, 68, 66, 64.9, 61, 59, 57.9, 57, 55.9, 57, 57, 59, 60.1, 62.1, 62.1, 61, 61, 61, 62.1, 53.1, 52, 53.1, 57, 59, 61, 61, 60.1, 57.9, 55, 53.1, 52, 50, 48, 46.9, 46, 45, 44.1, 43, 42.1, 41, 39.9, 39.9, 41, 42.1, 46, 48, 50, 53.1, 51.1, 52, 54, 52, 51.1, 48.9, 46.9, 46, 46, 46.9, 46, 45, 43, 41, 42.1, 42.1, 39, 37.9, 39, 46, 50, 52, 55, 57, 55.9, 57, 57, 55.9, 54, 54, 54, 54, 54, 54, 55, 55, 55, 55, 55, 54, 55.9, 55.9, 59, 63, 64.9, 64, 64, 64.9, 62.1, 62.1, 62.1, 59, 57, 55.9, 54, 52, 51.1, 51.1, 48.9, 48, 46, 46, 45, 44.1, 43, 42.1, 43, 44.1, 46.9, 48.9, 51.1, 54, 54, 55, 55, 53.1, 52, 51.1, 50, 48, 48, 45, 45, 43, 42.1, 43, 42.1, 39.9, 39, 39.9, 42.1, 43, 46, 48, 51.1, 53.1, 54, 55, 53.1, 53.1, 52, 50, 50, 48.9, 48.9, 48, 48, 48, 48, 50, 51.1, 52, 51.1, 50, 50, 53.1, 54, 57, 57, 57.9, 57.9, 57.9, 57.9, 55.9, 53.1, 51.1, 47.8, 45.3, 43, 43.5, 42.8, 41.9, 41.2, 40.8, 40.5, 40.6, 41.2, 42.1, 43, 46.9, 51.1, 55, 57, 59, 60.1, 62.1, 62.1, 61, 59, 57.9, 57, 57, 57, 57.9, 57, 57, 55.9, 57, 57, 60.1, 59, 60.1, 60.1, 61, 63, 63, 53.1, 53.1, 53.1, 51.1, 48.9, 48, 48, 46, 45, 44.1, 43, 42.1, 41, 39, 37.9, 37, 36, 36, 35.1, 35.1, 36, 39, 44.1, 45, 46, 46.9, 46, 46.9, 46.9, 46, 46, 45, 44.1, 44.1, 42.1, 42.1, 43, 43, 44.1, 44.1, 44.1, 45, 45, 45, 46.9, 48, 48, 50, 52, 55, 55.9, 55, 54, 54, 53.1, 53.1, 46.9, 44.1, 42.1, 39, 36, 34, 34, 32, 32, 30.9, 30.9, 30.9, 30, 32, 34, 36, 37.9, 39, 39, 39, 39, 39, 39.9, 39.9, 41, 42.1, 43, 44.1, 43, 43, 44.1, 45, 45, 46, 46.9, 46.9, 46.9, 46.9, 48, 42.1, 39, 39, 41, 42.1, 43, 43, 43, 43, 43, 43, 43, 43, 42.1, 43, 43, 44.1, 44.1, 45, 44.1, 45, 45, 45, 45, 46.9, 48, 48.9, 50, 50, 48.9, 50, 48.9, 48.9, 48, 46.9, 46.9, 46.9, 46, 46.9, 46.9, 48, 48, 48, 48, 48.9, 50, 50, 51.1, 52, 52, 52, 51.1, 51.1, 52, 52, 52, 52, 52, 53.1, 52, 53.1, 52, 53.1, 52, 52, 55, 54, 54, 53.1, 55, 63, 64.9, 68, 68, 69.1, 71.1, 71.1, 70, 63, 59, 57.9, 57.9, 57, 55.9, 54, 55, 53.1, 51.1, 50, 46, 43, 42.1, 41, 39.9, 39.9, 41, 42.1, 43, 45, 46.9, 46.9, 46.9, 45, 43, 42.1, 41, 39.9, 39, 37.9, 37, 36, 35.1, 35.1, 35.1, 35.1, 35.1, 36, 37, 37, 39, 39, 39, 39.9, 35.1, 33.1, 33.1, 32, 33.1, 33.1, 34, 35.1, 34, 34, 35.1, 35.1, 35.1, 35.1, 35.1, 35.1, 35.1, 35.1, 35.1, 37, 39, 42.1, 44.1, 44.1, 46, 46, 45, 43, 41, 41, 41, 39.9, 41, 39.9, 37.9, 37.9, 39, 37, 35.1, 33.1, 34, 37, 37, 37, 37.9, 39, 39.9, 41, 37.9, 37.9, 37, 35.1, 32, 30.9, 28.9, 26.1, 24.1, 23, 21.9, 21, 19.9, 19.9, 19.9, 19.9, 19.9, 19, 19.9, 21.9, 24.1, 26.1, 28.9, 30, 32, 33.1, 33.1, 33.1, 32, 32, 30.9, 30.9, 30.9, 30, 30, 30, 30, 30.9, 30, 28.9, 28, 27, 28, 28.9, 30.9, 34, 37.9, 41, 39.9, 39.9, 41, 41, 39.9, 39, 41, 41, 42.1, 42.1, 41, 42.1, 41, 41, 41, 41, 39.9, 39.9, 39.9, 41, 43, 46, 48.9, 46.9, 46.9, 48, 48, 45, 44.1, 43, 43, 42.1, 42.1, 42.1, 39.9, 39, 39.9, 39, 39.9, 39.9, 37, 37.9, 39.9, 43, 44.1, 44.1, 48, 51.1, 51.1, 51.1, 51.1, 51.1, 51.1, 48.9, 50, 50, 50, 48.9, 48.9, 46.9, 46.9, 46.9, 46.9, 46, 45, 45, 44.1, 45, 46, 46, 46, 46.9, 48, 48, 48, 46, 43, 42.1, 44.1, 44.1, 44.1, 44.1, 44.1, 44.1, 44.1, 39, 37.9, 36, 32, 30, 28, 27, 27, 28, 28, 28.9, 30, 32, 30.9, 30.9, 28.9, 28, 27, 27, 25, 23, 23, 21, 21, 19.9, 19.9, 19.9, 19.9, 19.9, 19, 21, 24.1, 26.1, 28, 32, 34, 37, 37, 37, 37.9, 39, 39, 39.9, 41, 41, 42.1, 43, 46, 46, 46.9, 48, 48, 50, 48.9, 50, 50, 46, 39.9, 37.9, 39, 39.9, 42.1, 39.9, 39, 37.9, 35.1, 33.1, 32, 32, 33.1, 34, 34, 34, 34, 33.1, 32, 32, 30.9, 33.1, 34, 35.1, 37, 39, 41, 42.1, 41, 39.9, 39, 37, 37, 36, 35.1, 34, 34, 33.1, 30.9, 30.9, 30.9, 30.9, 30, 30, 30, 32, 37, 39, 42.1, 43, 43, 45, 46, 45, 45, 45, 45, 45, 45, 46, 46, 48, 48.9, 50, 53.1, 52, 53.1, 53.1, 52, 53.1, 53.1, 53.1, 54, 54, 54, 53.1, 53.1, 53.1, 48, 46, 45, 44.1, 43, 42.1, 42.1, 42.1, 42.1, 41, 39.9, 39.9, 39, 39, 39.9, 39.9, 43, 44.1, 46, 46.9, 48, 48.9, 48.9, 48, 46.9, 44.1, 42.1, 42.1, 41, 42.1, 39, 37, 37.9, 37, 35.1, 35.1, 34, 36, 36, 37.9, 39.9, 43, 44.1, 46, 46, 46.9, 48.9, 48.9, 50, 52, 53.1, 57, 60.1, 60.1, 63, 64, 62.1, 61, 59, 57, 55.9, 50, 48, 46.9, 46.9, 46.9, 48, 50, 50, 48.9, 48, 46, 44.1, 42.1, 41, 41, 39, 37.9, 37, 37, 33.1, 35.1, 33.1, 34, 34, 33.1, 34, 36, 39, 42.1, 46, 48.9, 53.1, 55, 55, 53.1, 51.1, 46, 46.9, 45, 43, 42.1, 42.1, 39, 39.9, 39.9, 39.9, 39, 39, 39, 39.9, 41, 44.1, 48.9, 50, 54, 55.9, 55.9, 55, 52, 48.9, 46.9, 46, 44.1, 43, 42.1, 41, 39, 37.9, 37.9, 37, 36, 34, 33.1, 32, 33.1, 34, 35.1, 36, 37, 36, 36, 35.1, 34, 32, 30, 31.5, 30.7, 31.6, 32.9, 35.2, 37.8, 43.2, 45.7, 48, 51.1, 54.5, 58.1, 62.1, 63, 64.9, 62.1, 51.1, 48.9, 46, 45, 44.1, 43, 41, 39.9, 37.9, 37, 36, 36, 36, 34, 35.1, 34, 34, 34, 33.1, 33.1, 32, 33.1, 35.1, 37, 39, 39, 39, 39.9, 39, 37.9, 39, 37.9, 37, 36, 36, 37, 37, 36, 35.1, 35.1, 35.1, 36, 35.1, 35.1, 35.1, 36, 37, 37.9, 39.9, 41, 41, 39.9, 39, 37.9, 37, 35.1, 34, 33.1, 33.1, 32, 30.9, 30, 28.9, 28.9, 28, 28, 28, 27, 27, 27, 28.9, 30.9, 32, 33.1, 34, 34, 34, 32, 30.9, 30, 30, 30, 28.9, 28, 26.1, 26.1, 25, 25, 25, 24.1, 24.1, 24.1, 23, 27, 28.9, 30.9, 35.1, 39, 42.1, 44.1, 44.1, 44.1, 43, 41, 41, 42.1, 43, 43, 43, 44.1, 45, 45, 46.9, 46.9, 46, 46, 46.9, 48, 50, 53.1, 55, 57, 60.1, 57, 55.9, 55, 55, 55, 54, 55, 53.1, 53.1, 48, 44.1, 41, 39, 35.1, 32, 30, 28.9, 28, 28, 28.9, 30, 32, 34, 36, 37, 37, 35.1, 33.1, 32, 30.9, 28.9, 28.9, 28, 27, 28, 28, 28, 28, 27, 27, 27, 26.1, 26.1, 27, 27, 27, 28, 28.9, 28.9, 28.9, 28, 28, 28.9, 30, 32, 35.1, 34, 37, 36, 37, 37, 37.9, 39.9, 37, 37, 36, 36, 42.1, 36, 43, 45, 46, 46, 46.9, 46.9, 46.9, 48, 46.9, 46.9, 46.9, 46.9, 48, 48, 48.9, 48.9, 50, 48.9, 48, 48.9, 48.9, 48.9, 48.9, 50, 48.9, 46.9, 46.9, 46.9, 46.9, 46.9, 46.9, 48, 46.9, 46.9, 46.9, 46.9, 45, 45, 43, 43, 42.1, 41, 39.9, 39, 37.9, 37.9, 39.9, 42.1, 44.1, 46.9, 48, 48, 46.9, 46, 45, 44.1, 43, 42.1, 39.9, 39, 37.9, 36, 35.1, 34, 32, 30.9, 30.9, 30.9, 30.9, 30, 30, 32, 34, 35.1, 36, 36, 36, 36, 35.1, 35.1, 35.1, 36, 36, 36, 36, 36, 36, 36, 35.1, 35.1, 35.1, 35.1, 34, 34, 34, 35.1, 37, 37.9, 39, 39.9, 39.9, 39.9, 39.9, 39.9, 39.9, 39.9, 41, 41, 41, 39.9, 41, 41, 39.9, 39.9, 39.9, 39.9, 39.9, 39.9, 42.1, 45, 51.1, 54, 55.9, 57, 55.9, 55.9, 55, 54, 53.1, 54, 53.1, 53.1, 53.1, 53.1, 53.1, 52, 51.1, 50, 48.9, 48.9, 48.9, 50, 51.1, 54, 57, 62.1, 63, 64.9, 64.9, 62.1, 60.1, 59, 59, 57, 55.9, 55.9, 55.9, 55.9, 54, 52, 50, 48, 46, 44.1, 44.1, 42.1, 39, 39.9, 41, 44.1, 43, 44.1, 43, 39.9, 37, 35.1, 33.1, 32, 30.9, 28.9, 28, 25, 25, 24.1, 23, 23, 21.9, 21.9, 23, 23, 26.1, 30, 30.9, 33.1, 35.1, 36, 37.9, 37.9, 37, 37, 37.9, 39, 39.9, 41, 41, 42.1, 41, 39, 37, 36, 35.1, 35.1, 35.1, 36, 35.1, 36, 37, 35.1, 35.1, 34, 33.1, 32, 30, 28.9, 27, 24.1, 21.9, 19.9, 19, 18, 17.1, 17.1, 18, 17.1, 16, 16, 17.1, 18, 19.9, 23, 24.1, 25, 25, 25, 21.9, 21.9, 19.9, 14, 12.9, 12, 10, 10, 10, 9, 8.1, 8.1, 8.1, 7, 7, 8.1, 9, 10, 12, 15.1, 17.1, 18, 19, 19.9, 19.9, 21, 21, 26.1, 28, 30, 30.9, 33.1, 34, 34, 35.1, 35.1, 34, 26.1, 21, 21, 19, 19.9, 19.9, 21, 23, 24.1, 24.1, 24.1, 23, 23, 23, 23, 24.1, 24.1, 24.1, 24.1, 25, 25, 25, 26.1, 27, 28.9, 28.9, 30, 30, 30.9, 32, 32, 33.1, 33.1, 34, 34, 34, 34, 32, 32, 30.9, 30, 28.9, 28, 28, 27, 26.1, 26.1, 26.1, 25, 23, 23, 21.9, 21.9, 23, 24.1, 27, 28.9, 28.9, 28.9, 28.9, 28.9, 27, 26.1, 25, 21.9, 19, 18, 15.1, 14, 12, 10, 9, 8.1, 6.1, 5, 5, 5, 5, 6.1, 8.1, 10, 12, 14, 14, 12.9, 10.9, 10.9, 10, 9, 9, 8.1, 7, 7, 7, 6.1, 6.1, 7, 6.1, 6.1, 7, 8.1, 9, 12.9, 15.1, 17.1, 19, 19.9, 21, 21.9, 25, 26.1, 27, 25, 23, 24.1, 23, 24.1, 23, 24.1, 24.1, 27, 28, 30, 32, 33.1, 34, 37, 44.1, 39.9, 46, 46.9, 48.9, 51.1, 50, 50, 46, 48, 46.9, 46.9, 46, 42.1, 44.1, 45, 45, 43, 41, 39.9, 39.9, 41, 41, 42.1, 43, 41, 42.1, 41, 39, 37.9, 37, 37, 37, 37, 36, 35.1, 33.1, 33.1, 33.1, 32, 32, 32, 30.9, 30, 28, 27, 27, 28, 28.9, 30.9, 32, 33.1, 34, 34, 33.1, 32, 30.9, 30, 28.9, 28, 27, 26.1, 24.1, 24.1, 24.1, 24.1, 24.1, 24.1, 23, 23, 24.1, 28, 28.9, 32, 32, 33.1, 32, 32, 30, 28.9, 28.9, 30, 28.9, 28.9, 27, 27, 26.1, 25, 25, 25, 26.1, 26.1, 26.1, 25, 28, 30.9, 33.1, 35.1, 35.1, 37, 37, 37, 37, 37, 37, 37, 37.9, 37, 37, 37.9, 39.9, 42.1, 42.1, 41, 39.9, 41, 41, 41, 42.1, 43, 44.1, 45, 46, 46.9, 45, 43, 42.1, 42.1, 41, 39.9, 39, 37, 36, 35.1]; + let wetBulbHourlyTempA = [23.7, 23.9, 23.5, 23.7, 23, 23.2, 22.6, 24.1, 26.5, 27.9, 28.9, 30.6, 30.3, 31.1, 31.1, 30.5, 29.1, 29.9, 29.7, 29.7, 29.3, 29, 29.7, 27.7, 26.1, 25.3, 25.3, 25.3, 24.6, 24, 23.3, 25.1, 26.7, 29.7, 31.9, 31.4, 31.9, 31.1, 31.3, 31.1, 29.4, 29.9, 29.9, 29.9, 29.4, 28.1, 27.9, 26.4, 25.4, 23.4, 22.6, 21.6, 21.4, 20.6, 19.8, 21.2, 22.2, 22.6, 23.3, 23.9, 24.4, 25.5, 25.5, 24.1, 22.6, 21.9, 20.5, 19.7, 18.1, 17.5, 16.5, 15.9, 15.1, 14.3, 13.4, 13.3, 13.3, 13.3, 13.2, 12.5, 14, 15.6, 17.7, 20, 21, 21, 21.5, 21.8, 20.5, 20.7, 21.4, 22, 22.5, 21.8, 23.4, 22.6, 21.9, 21.8, 21.8, 21.3, 21.8, 22.6, 23.9, 24.3, 26.7, 27.2, 25.6, 24.1, 22.8, 23.5, 21.2, 20.6, 19.4, 19.4, 18.9, 19.7, 20.2, 19.2, 18.1, 18, 16.5, 15.9, 15, 14.7, 13.9, 13.5, 11.7, 12.5, 13.9, 15.4, 17, 17.9, 19, 20.5, 20.3, 19.6, 19.2, 17.9, 17.9, 17.7, 17.4, 17.4, 18, 17.4, 19.1, 20.3, 21.6, 22.6, 23.8, 24.1, 26.4, 26.7, 29.6, 31.8, 36.5, 40.6, 39.7, 38.7, 38.9, 38.5, 37.5, 36.1, 36.1, 35.3, 34.3, 33.9, 33.1, 33.1, 32.1, 31.8, 30.9, 28.9, 27.4, 27.3, 27, 27.1, 27.1, 27.8, 29.1, 29.1, 29.8, 29.8, 29, 28.1, 27.6, 26.9, 26.2, 25.6, 24.8, 23.9, 23.3, 23.5, 23, 22.6, 22.4, 22.6, 22.6, 22.4, 22.4, 22.8, 23.7, 23.5, 24.1, 24.1, 24.8, 25.4, 24.8, 24.9, 24.1, 24.5, 24.3, 24.2, 23.9, 23.2, 23.2, 22.4, 21.7, 21.7, 21, 20, 18, 17.9, 16.8, 16.8, 17.9, 20.7, 20.7, 23.1, 22.6, 24.6, 24, 23.2, 22.6, 22.8, 22.3, 21.8, 22.7, 21.9, 21.9, 22.7, 22.7, 22.8, 22.3, 24.4, 25.9, 28.3, 27.6, 31.1, 32.8, 38.2, 38.2, 45, 47.4, 48.4, 48.8, 48.5, 48.8, 49.3, 50.3, 50.8, 51.5, 52.9, 54.2, 54.7, 55.3, 53.8, 53.3, 52, 52.9, 41.8, 34.6, 31.8, 30.3, 29.3, 28.4, 26.2, 25.5, 25.5, 24.9, 23.4, 22.1, 21.3, 20.8, 20.2, 20.4, 19.8, 20.7, 20.2, 20.2, 20.5, 21, 19.7, 19.7, 19.7, 18.8, 18.8, 20.1, 21.1, 21.4, 22.2, 22, 22, 22.2, 22.7, 23.5, 23.9, 23.5, 24.4, 23.7, 23.9, 24.4, 23.8, 25.9, 26.5, 26.5, 27.3, 30.3, 32.1, 33.1, 32.4, 33.1, 36.3, 38.6, 39.2, 41.4, 40.3, 39.6, 40.3, 40.3, 39.6, 38.2, 39, 40.7, 39.6, 40.1, 41.6, 41.2, 40.1, 40.1, 41.2, 41.2, 40.1, 40.7, 40.5, 42.1, 41.6, 43.1, 42.6, 43.6, 42.6, 41.6, 41.8, 39.9, 39.4, 37.9, 35.9, 33.7, 32.5, 31.3, 31.1, 31.1, 29.8, 28.9, 28.2, 27.9, 28.5, 27.2, 26.2, 27.3, 28, 27.5, 27.5, 28.2, 28.2, 28.2, 28.6, 27.7, 27.5, 28.4, 26.9, 27.3, 28, 28.2, 27.5, 26.9, 24.3, 23.1, 23.3, 23.3, 23, 22.4, 23.3, 24.3, 25.2, 24.9, 25.2, 25.8, 26.1, 26.7, 27.7, 27.7, 27.7, 28, 28.4, 28.4, 28.6, 29, 29, 29, 29, 29, 29, 29, 29, 29.9, 29.9, 30.9, 32, 33.1, 34.9, 35.8, 35.3, 35.3, 35.3, 35.3, 34.9, 34.2, 33.9, 35.3, 34.9, 34.9, 34, 33.1, 34.3, 35.1, 35.7, 35.7, 35.7, 35.3, 35.8, 35.8, 36.4, 36.9, 36.9, 37.1, 36.5, 38.7, 36.7, 35.1, 35.1, 34.8, 34.8, 33.7, 33.7, 33.7, 32.5, 31.6, 30.9, 30.2, 29.9, 29.9, 29.6, 28.6, 29.1, 30.9, 31.8, 32.9, 30, 30.4, 28.7, 29.4, 28.1, 27.2, 25.7, 24.6, 23, 22.6, 21.5, 21.1, 21.3, 20.6, 20, 20.3, 20, 20, 20.3, 19.9, 20.8, 22.4, 23.7, 24.2, 24.1, 24.6, 25.6, 25.8, 25.3, 23, 22.9, 22.1, 22.1, 21.9, 21.8, 21, 20.5, 19.9, 19.9, 20.1, 20.8, 21.4, 21.2, 21.5, 23.3, 25.1, 27.6, 28.9, 29.3, 28.9, 29.6, 29.9, 29.9, 29.9, 30.2, 30.5, 31.2, 32.3, 33.1, 33.9, 32.8, 31.9, 30.5, 30.2, 30.2, 29.9, 29.9, 29.5, 29.5, 29.2, 29.2, 29.5, 30.5, 30.5, 31.1, 31.4, 31.4, 31.4, 31.4, 32, 31.1, 28.1, 25.8, 23.4, 20.6, 17.8, 16.9, 15.6, 15.5, 14.7, 14.6, 14.3, 14.3, 14.3, 14.8, 15.5, 16.3, 16.3, 17.1, 16.8, 16.2, 15.3, 15.3, 15.5, 15.6, 15.1, 15.2, 15.4, 15.4, 14.6, 13.8, 14.5, 13.8, 13.1, 14, 13.3, 14.1, 15.5, 16.6, 17, 19.2, 20.7, 20.7, 21.7, 21.8, 21, 21, 20.2, 18.8, 17.9, 19.1, 18.6, 18.6, 17.8, 17.8, 17.3, 17.3, 17.5, 17.6, 18.3, 19.1, 19.9, 21.2, 23.1, 23.9, 25.5, 26.8, 26.3, 25.7, 24.8, 24.4, 23.7, 22.2, 21.6, 21.4, 20.8, 20.8, 20.2, 19.4, 19.4, 19.6, 19.6, 19.6, 19.6, 19.8, 20.6, 23.5, 25.4, 27.1, 27.8, 28.4, 29, 29, 27.8, 27.3, 26.5, 25.6, 25.2, 24.4, 23.9, 23.9, 23.2, 22.6, 22.6, 21.6, 21.6, 21.6, 21.4, 21.4, 23, 23.7, 25.8, 27.3, 27.8, 28.2, 28.2, 27.5, 25.9, 25.4, 25, 25.2, 23.9, 23.9, 23, 22.8, 22.2, 21.4, 20.6, 20.4, 19.6, 20.6, 21.2, 21.4, 22.6, 24.1, 25.4, 26, 26, 26.6, 25, 24.8, 24.2, 23.3, 22.7, 22.2, 21.8, 20.2, 19.2, 18.9, 18, 15.9, 14, 13.2, 13.1, 12.3, 11.6, 10.6, 11.5, 12.2, 13.8, 14.7, 16.1, 17.7, 18.6, 18.7, 17, 16.3, 15.3, 14.5, 14.3, 13.6, 12.9, 12, 11.2, 11.3, 10.3, 10.3, 10.5, 9.6, 9.6, 9, 9, 9.7, 10.6, 10.6, 12.3, 13.9, 14.8, 15.5, 14.8, 14, 12.6, 11.7, 11, 10.3, 10.3, 10.5, 11.4, 11.8, 11.7, 11.9, 12.2, 13.4, 14.3, 15.1, 16.2, 16.8, 20.2, 22.6, 23.8, 23.8, 23.4, 23.8, 23.3, 22, 20.8, 19.7, 16.8, 14.8, 13.5, 12.5, 12.4, 12.4, 11.7, 11.7, 10.8, 10, 10, 10.8, 11.7, 12.5, 14, 15.7, 17.2, 18.8, 20.3, 20.9, 20.8, 20.1, 19.3, 18.8, 18.1, 17.6, 17.9, 16.2, 16.5, 15.9, 16.7, 16.7, 17.6, 18.7, 18.8, 20.2, 21.5, 23.3, 26.4, 28.4, 30.2, 31.4, 32.4, 31.7, 32.4, 32.4, 31.7, 30.5, 30.5, 29.7, 28.9, 27.9, 27.1, 26.8, 26.6, 26.1, 25.4, 25.4, 24.6, 24.6, 24.6, 25.4, 25.5, 26.4, 27.7, 28.6, 28.6, 28.8, 28.2, 27.9, 27.3, 27.3, 27.3, 27.3, 26.6, 26.4, 26.6, 25.5, 25, 23.8, 24.6, 24.9, 25.8, 24.9, 26.6, 28, 28, 28.5, 28.5, 29.2, 28.8, 28.8, 28.8, 28.5, 28.2, 26.9, 26.1, 25.3, 24.6, 24.3, 24.3, 24.9, 21.6, 19.4, 19, 17.3, 17, 16.8, 16.8, 16, 17.6, 18.1, 19.1, 20.5, 21.2, 19.7, 18, 18, 16.3, 15.5, 14.6, 14.6, 13.9, 13.9, 13.9, 14, 14.8, 14.8, 14.6, 14.7, 15.5, 15.5, 15.4, 15.7, 16.3, 18.1, 19.9, 20.5, 22.1, 22.1, 22.1, 21.3, 20.5, 19.9, 18.1, 17.4, 16.5, 15.7, 15.7, 15, 15, 15.7, 14.8, 14.8, 14.8, 15.7, 16.5, 18.3, 21.3, 23.3, 25.2, 27.3, 27.1, 26.9, 26, 24.9, 24.2, 23.2, 22.6, 22, 22.1, 20.7, 20.1, 19.4, 18.7, 19.4, 19.4, 19.4, 19.4, 18.2, 20.6, 21.8, 24.8, 26.3, 27.6, 27.8, 29.1, 29.1, 28.9, 27.7, 26.9, 27.4, 27.4, 28.4, 28.4, 28.6, 29.1, 29.1, 29.1, 28.6, 28.6, 27.9, 28.9, 29.8, 28.5, 30.2, 31.9, 32.9, 33.4, 34, 34, 34, 33.1, 32.5, 31.6, 30.3, 29.6, 29.6, 27.7, 26.1, 26.1, 27.1, 28.5, 28.2, 26.9, 25.9, 25.3, 27.1, 28, 31.7, 33.7, 34.4, 35.5, 36.5, 38.2, 38, 38, 35.9, 35.3, 37.2, 37.3, 37.3, 37.9, 39.4, 37.5, 36.5, 35.8, 35.5, 34.8, 34.8, 34.8, 35.5, 35.5, 36.5, 36.1, 37.5, 37.9, 38.3, 37.5, 37.2, 37.2, 36.5, 35.5, 35.1, 34.3, 33.5, 33.5, 32.6, 32.9, 32.9, 32.4, 32.8, 31.7, 32.8, 32.8, 33.1, 34, 34, 36.8, 36.8, 36.2, 37.3, 39.2, 37.6, 36.6, 35.7, 36.4, 36.4, 36.9, 36.4, 36.9, 36.4, 35.3, 33.7, 33.7, 32.5, 31.4, 31.4, 31.1, 31.6, 32.7, 33.6, 34.2, 34.3, 34.3, 34.3, 34.3, 34.8, 34.3, 34.1, 33.1, 31.6, 31.3, 32.2, 31.7, 31.1, 31.1, 30.5, 30.9, 30.9, 30.8, 31.4, 31.4, 31.8, 31.4, 31.7, 31.2, 32.1, 32.1, 33.6, 32.1, 31.9, 30.8, 28.2, 25.8, 25.6, 24.1, 23.3, 22.5, 21.6, 20, 19.1, 18.1, 17.5, 17.5, 16.7, 16.7, 17.5, 17.6, 19.1, 19.2, 20.5, 21.4, 21.2, 22.6, 21.9, 22.4, 21.1, 20.1, 18.6, 17, 16.2, 15.5, 14.7, 13.9, 12.2, 10.3, 8.5, 7.6, 6.8, 6.8, 7.6, 9.3, 11.1, 12.8, 13.9, 15.3, 16.8, 18.6, 18.6, 18.6, 18.6, 17.8, 17.8, 17.1, 16.2, 14.8, 15, 15, 14.3, 15, 14.3, 15, 15, 15, 15.9, 16.7, 20.2, 22.8, 22.6, 23.3, 25, 25.4, 26.6, 24.1, 23.4, 24.3, 23, 23.9, 23.7, 21.2, 20.9, 21, 21.2, 20.6, 20.6, 22.5, 22.8, 24.4, 26.1, 27.1, 29, 31.4, 31.9, 33.1, 33.7, 33.5, 32.6, 32.6, 33.1, 33.1, 32.1, 30.5, 28.8, 29.6, 29.3, 28.8, 25.2, 28.5, 26.9, 26.7, 26.7, 26.7, 28.5, 29.6, 31.1, 32.9, 32.4, 31.7, 31.7, 32.1, 32.1, 32.1, 31.2, 29.9, 29.5, 29.5, 29.5, 28.5, 28.5, 28, 27.7, 27.7, 27.7, 28.2, 27.6, 27.1, 26.6, 26.3, 26.4, 26.1, 27.2, 26.6, 27.3, 27.2, 27.3, 25.7, 25.3, 23.9, 23.1, 21.6, 20.2, 19.2, 17.5, 18.1, 16.5, 16.5, 15.9, 15.7, 14.1, 13.3, 15.7, 17.4, 20.4, 23.9, 26.2, 27.9, 29.8, 30.5, 30.8, 31.3, 30.3, 30.3, 30.3, 29.6, 29.1, 27.1, 28.1, 29.1, 29.4, 29.4, 29.4, 29.4, 27.9, 28.5, 28.2, 30.4, 31.9, 32.2, 31.9, 31.9, 31.5, 31.5, 31.8, 32.1, 32.1, 32.1, 31.8, 31.8, 31.1, 31.8, 31.1, 30.2, 29.1, 29.4, 29.7, 30.5, 30.8, 31.1, 32.1, 31, 31, 31.3, 31.8, 32.1, 32.8, 33.1, 34, 34, 34.9, 34.9, 35.8, 36.8, 36.8, 36.2, 36.6, 38.2, 39.6, 40.7, 39.6, 37.3, 39.2, 36.4, 37.5, 38.6, 39.2, 40.3, 40.3, 40.3, 39.2, 39.3, 39, 38.5, 37.6, 37.1, 36.5, 36.5, 36, 36, 35.4, 35.5, 34.8, 34.8, 34.9, 34.3, 34.5, 35.2, 34.6, 35.1, 35.1, 35.1, 35.1, 35.8, 36.2, 37, 37, 36.5, 35.4, 34.9, 34.3, 33.6, 33.9, 32.7, 31.9, 31.9, 33.7, 33.9, 32.4, 33.3, 32.4, 32.8, 34.2, 35.7, 35.7, 36.5, 36.1, 36.1, 35.3, 36.1, 36.1, 38.2, 38.2, 37.9, 38.5, 38.5, 39.9, 39.9, 40.1, 36.8, 36.8, 35.8, 37.3, 37.3, 38.5, 37.5, 35.5, 34.8, 35.1, 34.8, 34.8, 34.8, 35.2, 35, 34.9, 33.1, 31.3, 29.7, 28.4, 28, 27.6, 27.3, 27, 27, 26.9, 26.7, 26.2, 25.9, 25, 25, 27.7, 30, 31.7, 31.9, 32.7, 32.8, 33.1, 32.6, 32.6, 32.9, 33.1, 32.7, 33.1, 33.1, 32.7, 32.7, 32.7, 32.7, 32.7, 32, 32, 32, 32, 33.1, 33.1, 33.1, 33.6, 34.2, 33.5, 33.3, 34.2, 34.8, 34.9, 33.7, 33.4, 32.4, 33.1, 32.1, 31.4, 30.5, 31.1, 31.4, 31.8, 32.4, 33.3, 34, 35, 34.9, 36.9, 40, 41, 42.8, 44.7, 46.1, 46.8, 46.8, 46.8, 45.5, 44.6, 44.1, 42.7, 41.8, 39.8, 38.9, 37.7, 36.9, 35.7, 35.9, 35.9, 35, 35, 35.3, 37.2, 38.4, 38.1, 38, 39.4, 37.9, 38.4, 37.5, 37.2, 37.6, 37.9, 37.2, 37.2, 36.9, 36.9, 35.9, 36.1, 35.8, 34.9, 35.4, 34.9, 35.4, 35.4, 35.1, 35.4, 35.8, 36.3, 36.2, 36.2, 36.2, 36.2, 36.5, 37.1, 36.2, 36.2, 36.2, 36.2, 36.2, 36.2, 35.1, 34, 33.1, 33.1, 32, 32, 32, 31.2, 32, 32, 31.6, 31.6, 32.7, 34, 35.6, 37, 36.5, 36, 35.1, 35.1, 35.1, 35.1, 35.1, 35.1, 35.1, 35.1, 35.1, 35.1, 34.7, 35.1, 34, 34.7, 35.6, 35.6, 37.1, 41.8, 44.5, 43.5, 43, 44.7, 43.9, 43.9, 41.9, 40.7, 39.7, 37.9, 37, 32.9, 30.3, 28.9, 29, 27.2, 26.7, 26.1, 26.1, 25.3, 25.6, 26.9, 27.7, 27.2, 27.2, 26.7, 27.2, 26.7, 26.7, 25.9, 26.7, 27.4, 28.2, 29, 29.6, 30.2, 31.2, 30.9, 32, 32, 33.1, 34, 35.1, 35.1, 35.1, 37.9, 37, 35.5, 35.1, 30.1, 27.9, 27.9, 28.5, 29.5, 30.2, 30.8, 31.1, 32, 30.4, 29.9, 29.8, 27.6, 24.9, 22.6, 21.2, 20, 18.7, 19.7, 20.4, 21.6, 22.1, 23.1, 24.2, 24.8, 25.5, 25, 26, 25.3, 24.8, 23.1, 22.8, 21.6, 18.9, 18.4, 17.8, 17.6, 16.5, 15.2, 15.4, 15.5, 15.7, 14.8, 15.5, 16.5, 18.9, 19.9, 22.9, 24.8, 26.4, 26.2, 27.3, 26.7, 26, 26.1, 26.1, 25.7, 25.2, 24.6, 25.2, 25.2, 24.3, 24.2, 23.4, 23.5, 23.7, 23.9, 23.3, 23.3, 24.8, 26.7, 27.6, 28.7, 30, 30.8, 30.4, 30.9, 31.1, 30.5, 30.2, 30.2, 31.5, 32.2, 32.1, 31.8, 30.8, 30.2, 29, 28, 26.9, 26.1, 26.1, 27.3, 30, 32.1, 32.1, 31.9, 33.7, 33.8, 33.4, 32.9, 32.2, 31.9, 31.9, 32.3, 32.5, 32.1, 32.1, 32.1, 32.1, 32.8, 30.8, 31.6, 31.6, 32, 31.6, 31.6, 32, 32, 32, 32.7, 34, 35.1, 35.1, 35.1, 35.1, 35.6, 35.1, 34, 33.1, 32, 29, 27.9, 27.9, 26.7, 27.6, 26.7, 27.3, 28.6, 29.2, 32.4, 34.6, 37.8, 38.5, 38.6, 40.2, 40.5, 40.6, 39.8, 39.2, 38.7, 37.3, 37.3, 35.8, 35.7, 34.9, 33.9, 33.3, 32.7, 32.2, 31.6, 31.4, 30.8, 30.5, 31.3, 31.8, 32.1, 33.9, 34.9, 34, 35.6, 34.4, 33.3, 31.8, 32.2, 28.2, 25.9, 23.8, 23.1, 22.8, 19.7, 17.3, 16.5, 15.6, 15, 14, 14, 13.1, 13.5, 14.5, 14.5, 16.8, 19.2, 19.9, 21.9, 22.6, 23, 22.1, 19.6, 19, 16.6, 14.6, 13.5, 13.3, 12.6, 12.6, 12.6, 12.5, 12.5, 12.3, 12.6, 13.7, 16, 18, 22.2, 25.2, 26.8, 27.2, 28.5, 31, 28.8, 30, 29.9, 30.1, 27.6, 27.5, 27.3, 26.2, 27, 26.4, 26.7, 27.1, 28, 29, 31.2, 30.2, 30.9, 32, 32, 32, 32.3, 32.3, 33.1, 32.7, 32.7, 32, 32, 32, 30.2, 30.5, 29.5, 28.8, 28.8, 28, 27.7, 26.8, 26.4, 27.2, 26.4, 26.9, 28.8, 30.3, 31.1, 30.9, 32.1, 31.9, 33.2, 31.9, 32, 31.1, 29.4, 27.8, 26, 25.2, 23.8, 22.1, 20.7, 19.4, 18.8, 17.6, 17.7, 16.8, 16.4, 17.6, 19.6, 21.2, 22.9, 24.3, 27.6, 27.1, 28.2, 30.2, 30.2, 29.9, 28.9, 28, 28, 28, 27.3, 27.3, 27.3, 27, 25.6, 25.4, 24.9, 24.8, 23.9, 25.1, 28.2, 33.1, 32.5, 34, 34.2, 32.7, 32.9, 33, 35.5, 33.1, 33.4, 33.1, 33.9, 33.7, 32.6, 32.5, 32.2, 32.1, 31.8, 32.2, 31.1, 29.9, 29, 30.2, 33.5, 36.8, 35.4, 37.6, 37.7, 38.9, 38.9, 39.2, 37.9, 38.3, 38.2, 36.3, 36.3, 36.2, 36.2, 35.7, 35.7, 35.1, 34, 33.1, 33.1, 33.6, 33.6, 34, 34.2, 34.7, 35.1, 35.1, 35.7, 36.8, 36.8, 36.9, 37.7, 37.3, 37.7, 37.7, 36.6, 36.6, 36.6, 36.2, 36.2, 35.7, 35.4, 34.8, 34.8, 34.9, 34.9, 34.9, 36.2, 36.4, 36.9, 37.1, 40.3, 41, 41.9, 41.9, 43.2, 40.6, 38.7, 38.5, 37.4, 35.5, 34.7, 33.9, 33.5, 33.1, 31.9, 31.9, 31.1, 31.1, 30.2, 30.9, 31.6, 34.8, 36.9, 37.3, 38.8, 38.6, 41.1, 40.7, 40.9, 39.9, 37.7, 36.7, 35.2, 34.1, 33.4, 33.2, 32, 31.9, 31.6, 31.3, 30.7, 30.2, 30.7, 32.8, 34.7, 35.8, 37.7, 40, 40.6, 43.1, 43.6, 42.4, 46.4, 46.5, 45.8, 45.4, 44.6, 43.7, 42.6, 41.9, 40.9, 40.6, 40.9, 39.7, 38.7, 37.1, 36.9, 36.9, 37.9, 38.9, 41.4, 42.8, 45.8, 42.5, 42, 43.2, 42.8, 41.9, 41.3, 43.2, 43.8, 44.4, 44.3, 41.8, 40.2, 40.2, 40.2, 40.1, 38.2, 38.5, 39.9, 40.1, 41.2, 43.6, 44.1, 44.8, 44.8, 45, 45.9, 45, 42.3, 39.8, 38.9, 37.7, 38.9, 39.7, 36.9, 36.9, 35.1, 34.8, 34.9, 34, 34.8, 34.1, 34, 33.9, 34, 33.4, 33.1, 33.3, 33.4, 33.8, 34.7, 34.7, 32.8, 31.8, 31.8, 31.8, 31.3, 31.1, 30.7, 30.3, 30.5, 29.6, 29.4, 29.4, 27.4, 26.9, 26.5, 27.4, 27.8, 29.5, 31.3, 33.7, 35.2, 36.5, 38.7, 39.3, 38.6, 38.9, 38.9, 37.4, 35.2, 33.7, 32.5, 31.1, 30.1, 28.2, 27, 25.5, 24.1, 22.8, 22, 22.4, 24, 25, 27, 28.2, 28.5, 29.9, 31, 31, 31, 30.8, 29.6, 28.8, 28.2, 27.7, 27.2, 26.5, 26.7, 26.7, 26, 25.4, 24.3, 24.3, 24.5, 27.3, 28.6, 28.8, 30.2, 30.7, 32.8, 35, 35.8, 36.1, 37.4, 36.8, 35.8, 35.4, 35.3, 36.1, 36.8, 37.7, 38, 38, 38.9, 40.1, 40.5, 41.6, 41.6, 43, 45.4, 47.4, 50, 50.9, 50.9, 54.8, 55.2, 55.2, 53.8, 44, 42.5, 41.2, 40.3, 38.5, 34.9, 33.1, 31.1, 30.2, 30.2, 29.1, 28.6, 27.8, 28.2, 28.6, 29.1, 30.6, 31.4, 30.4, 31.5, 31.6, 32.5, 32.1, 32.2, 31.4, 29.3, 28.8, 28.2, 27.6, 27, 25.9, 24.3, 22.6, 22.4, 22.6, 21.9, 21.3, 21.3, 22.7, 24.3, 26.8, 29.3, 30.5, 33, 33.7, 35.1, 36.5, 36.3, 36.2, 36.1, 33, 35, 34.2, 32.7, 33.2, 32.7, 32.5, 31.4, 31.4, 30.9, 31, 32.1, 33.6, 35.4, 37.6, 38.6, 38.7, 39, 40.2, 39.7, 37.5, 36.4, 35.8, 36.9, 36.8, 37, 37.4, 37.9, 39, 39.9, 43, 43, 44.1, 42.1, 39.9, 39.9, 39.4, 39.4, 39.9, 39.9, 41, 41, 41, 42.1, 41.6, 41, 41, 39.9, 39.9, 41, 39.9, 42.1, 43, 44.1, 44.1, 44.1, 43, 44.1, 44.1, 44.1, 45, 46, 50, 52, 53.3, 54.7, 54.7, 55.8, 56.3, 55.2, 54.3, 54.3, 54.3, 52.5, 47.9, 47.4, 44.4, 43.4, 43, 40.4, 38.9, 37.4, 35.3, 35.1, 34.3, 35.3, 36.8, 37.1, 36.8, 36.5, 36.8, 36.6, 35.9, 35.5, 36, 36, 35.1, 34.9, 34.9, 34.9, 34.9, 35.3, 35.3, 34.9, 33.6, 32.7, 31.9, 32.1, 33.2, 35.7, 36.7, 38.1, 39.1, 40.8, 42.3, 43.8, 45.1, 46, 44.1, 43.1, 42.3, 40.8, 42.5, 42.3, 42.7, 42.4, 41, 40.6, 39.3, 37.7, 36.8, 36.8, 37.5, 39.3, 40.7, 41.4, 43, 43.9, 42.9, 42.9, 42.4, 41.8, 42.2, 42.7, 42.2, 41.3, 40.8, 39.7, 38.3, 39, 38.1, 38.1, 38.1, 37.7, 37.2, 37.3, 39, 40.7, 43.2, 44.7, 46.7, 46, 46.6, 45.6, 48.4, 47.3, 44.3, 43.7, 41, 39.9, 39.4, 38.6, 39.3, 38, 37.7, 38.1, 37.2, 37.2, 37, 38, 40.3, 41.7, 43, 43.6, 43.1, 43.6, 46.9, 48, 49.6, 48.6, 48.8, 48.2, 48, 47.5, 46.8, 46.4, 47, 48.3, 48.9, 48.9, 50, 49.4, 49.4, 49.4, 50, 50, 52.5, 53.3, 53.3, 55.8, 57.2, 57.2, 55, 54, 53.1, 54, 54, 53.1, 53.1, 53.1, 53.1, 53.4, 52, 52, 51.1, 50, 51.1, 52.5, 52, 50.5, 49.4, 48, 46.9, 46.9, 47.4, 46.3, 47.4, 47.9, 47.9, 47.9, 46.3, 47.4, 47.4, 47.4, 47.4, 46.3, 42.7, 40.6, 38.8, 37.1, 35.8, 35.1, 36.1, 37.8, 39.9, 42.1, 43, 44, 42.2, 41.5, 43.1, 42, 40.6, 39.8, 39.1, 37.5, 37.3, 36.2, 35.8, 35.8, 35.8, 35.5, 35.3, 35.5, 35.8, 35.1, 36.8, 39.2, 39.8, 40.3, 44.7, 44.2, 41.9, 40.2, 40.9, 40.6, 42.7, 43.2, 42.9, 40.4, 40.1, 40.6, 40.9, 41.4, 42.1, 42.5, 43, 42.6, 44.1, 46.5, 49.1, 53.5, 57.1, 59, 61, 61.4, 61.1, 60.4, 61, 61.1, 59.6, 59.8, 59.2, 58.5, 56.4, 53.7, 52, 51.4, 50.3, 50.3, 50.9, 51.1, 47, 46.3, 45, 45, 46, 46, 44.5, 43.2, 41.9, 42.7, 42.7, 42.2, 42.2, 42.1, 41.9, 40.8, 41.9, 42.6, 42.2, 42.6, 41.2, 40.2, 39.3, 38.3, 38.3, 39.4, 38.6, 37.1, 36.4, 36.8, 38, 37.2, 37.7, 38.3, 38.1, 38.6, 38.1, 38.1, 38, 38, 38, 38, 37.2, 37.7, 37.7, 37.7, 38, 37.7, 37.2, 37.7, 39.4, 39, 40.2, 40.2, 40, 39.3, 38.3, 38, 39, 38, 38, 37.6, 37.2, 37.6, 37.9, 37.5, 36.4, 36.8, 37.2, 37.7, 37.7, 37.5, 37.3, 35.7, 35.4, 37.2, 38.6, 38.5, 39.6, 39.9, 41.6, 41.2, 42.5, 43.6, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 44.1, 44.1, 44.1, 46, 46.9, 49.4, 49.4, 47.9, 46.3, 46.3, 45.9, 45, 44.5, 44, 43.6, 43.6, 42.5, 43, 42.5, 42.5, 43.2, 43.2, 43.2, 42.6, 42.1, 42.6, 42.6, 42.6, 44, 43.5, 43.5, 42.6, 42.1, 42.2, 41.2, 41.2, 41.2, 38.9, 40.1, 39.6, 39.6, 40.1, 40.1, 40.1, 40.1, 40.1, 40.1, 40.1, 40.7, 40.6, 42.1, 42.1, 42.2, 42.5, 41.7, 41.2, 40.8, 40.1, 40.1, 40, 39, 39.7, 39.7, 38.8, 40.4, 40, 39.3, 40.2, 41, 41, 42.1, 42.6, 43.4, 44.5, 46, 47.4, 47.1, 46.5, 48.8, 48.8, 49.1, 49.6, 49.6, 47, 45, 43.7, 43.1, 42.7, 42.1, 42.1, 41.7, 41.2, 41.2, 41.2, 41.7, 43, 44.6, 47.4, 51, 50.6, 51.9, 52.3, 52.7, 53.1, 53.1, 53.1, 53.1, 51.8, 48.7, 46.2, 45.3, 44.9, 44.3, 44.7, 45.2, 45.2, 45.1, 44.6, 43.4, 44, 44.7, 43.3, 44.3, 44.3, 45.3, 45.2, 45, 45.5, 45, 43.4, 43.4, 42.6, 41.2, 41.2, 41.7, 41.2, 40.6, 40.6, 41.2, 41.2, 41.2, 40.3, 40.3, 40.6, 40.6, 40.6, 41.7, 42.1, 42.1, 41.7, 41.2, 41.2, 41.2, 40.2, 39.8, 39.2, 39.2, 39.2, 39.2, 38.6, 38.1, 38, 38.6, 37.7, 38.1, 38.1, 38.1, 38.1, 38.7, 39.4, 40.2, 41.7, 42.1, 42.1, 42.6, 41.2, 41.7, 41.7, 41.7, 41.2, 39.6, 38.4, 37.8, 37.2, 36.4, 35.4, 34.1, 33.7, 33.1, 32.5, 31.4, 31.2, 33.4, 35.1, 37, 38.4, 40.2, 41.2, 42.4, 41.8, 40.8, 40.8, 38.8, 38.4, 37.5, 36.2, 36.2, 35.3, 35.2, 35.2, 35.4, 34.8, 34.8, 34.1, 34.1, 34.8, 35.9, 37.6, 39.6, 41.6, 43.7, 44.8, 46.1, 47.6, 48.2, 48.1, 47.3, 46.7, 44.6, 43.7, 43.2, 41.9, 40.7, 39.2, 39.2, 39.2, 39.7, 39.7, 39.7, 39.7, 40.3, 41.2, 43.2, 43.7, 45.2, 46.6, 47.6, 48, 47.8, 46.7, 46.1, 46.4, 46.9, 46.5, 45.4, 42.9, 42, 41.7, 39.6, 37.6, 36.5, 37, 36.5, 37, 37.9, 40, 40.9, 43.2, 43.6, 44, 44.7, 45.1, 45.1, 45.8, 45.1, 44.7, 44, 43.4, 43.2, 43.2, 42.6, 42.5, 41.3, 41.7, 42.4, 43.2, 42.2, 43.1, 41.8, 42.7, 43.2, 42.6, 42.6, 42.2, 42.2, 43.2, 43.6, 43.6, 43.2, 42.7, 42.7, 43.2, 42.7, 42.7, 42.7, 42.7, 42.7, 42.3, 42.3, 42.3, 42.3, 42.7, 43.7, 45.6, 47, 47.7, 49, 49, 49.5, 49.7, 49.9, 49.9, 49, 48.3, 48.7, 47.8, 47.5, 46.7, 46.7, 46.2, 46.6, 47, 47, 47, 47, 47.5, 47.5, 49, 49.9, 50.4, 49.7, 49.7, 50.9, 49.8, 49.7, 49.3, 48.2, 48.8, 48.1, 48.2, 47.5, 48.1, 48.4, 48.2, 47.5, 47.8, 47.1, 47.1, 46.5, 47.4, 48.2, 51.1, 51.6, 55.2, 53.5, 53.2, 54.4, 51.3, 53, 50.3, 50.7, 52.4, 51.6, 49.1, 47.8, 47.8, 49.5, 51, 53.5, 53.8, 54.4, 53.5, 53.7, 54.2, 55.8, 56.1, 57.8, 58.3, 57.2, 57.7, 57.7, 58, 57.7, 57.7, 57.1, 56.7, 56.1, 56.1, 55.3, 56.1, 56.7, 56.1, 55.1, 55.1, 53, 52.1, 51.5, 51.5, 52.3, 53.1, 53.5, 53.9, 53.8, 53.1, 53.7, 53.7, 53.7, 53.7, 52.9, 51.8, 51.1, 50.8, 50.3, 49.6, 49.5, 49.5, 48.2, 48.2, 47.8, 47.5, 47.1, 47.8, 48.4, 49.4, 49.9, 51.1, 51.6, 52, 53.3, 54.5, 53.5, 53.6, 54, 54.5, 52.7, 51.6, 50.9, 49.6, 49.7, 48.8, 47.8, 47.8, 47.5, 46.9, 46.9, 48.5, 50.5, 52.4, 54.5, 57.1, 57.1, 55.7, 57.6, 56.9, 54.8, 57.5, 54.7, 53.5, 52.7, 51.1, 49.9, 49.4, 48.4, 47.8, 47.5, 47.5, 48.4, 48.8, 48.8, 48.8, 50.3, 51.2, 53.1, 54.4, 54.4, 55.7, 55.7, 56.5, 58.5, 58.5, 59, 57.7, 56.9, 56.3, 52.5, 52.1, 51.6, 51.2, 51.2, 50.3, 50.3, 50.3, 49.3, 49.8, 50.2, 51, 50.5, 50.5, 50.9, 51.9, 51.5, 51.1, 50.5, 50.2, 50.2, 49.3, 48.8, 49.8, 49.5, 48.9, 48.3, 48.3, 48.3, 48.3, 47.3, 47.3, 47.3, 47.3, 47.9, 47.9, 47.9, 48.3, 48.3, 48.3, 48.3, 48.9, 48.9, 48.9, 48.9, 48.9, 48.3, 48.9, 48.3, 48.3, 48.3, 48.3, 48.3, 48.3, 48.3, 48.3, 48.3, 48.3, 48.3, 49.5, 49.6, 49.6, 49.8, 49.8, 49.8, 49.5, 49.5, 49.5, 49.5, 49.5, 50.4, 50.4, 50.8, 50.8, 50.8, 51.5, 52, 52, 51.5, 51.5, 50.9, 50.9, 50.4, 51.5, 52.4, 53.3, 54.2, 56.1, 56.2, 56.2, 55.2, 55, 54, 51.4, 50.5, 49.6, 48.3, 47.4, 47.4, 48.3, 48.3, 49.4, 48.9, 48.3, 48.3, 48.3, 49.4, 50, 50.9, 52.4, 52.9, 53.3, 52, 52, 52.9, 52.4, 52, 52.9, 52.9, 53.3, 53.8, 53.8, 53.8, 55.6, 54.7, 53.4, 52.9, 52.9, 52.5, 52.5, 53.3, 56.1, 58.1, 60.6, 60.6, 60.5, 59.3, 59.7, 59.9, 61.1, 60.4, 60.6, 61.1, 60.4, 59, 58.5, 58.5, 58.5, 57.4, 57.2, 56.7, 56.1, 56.1, 57.4, 60.4, 62.4, 64.2, 66.4, 67, 66.8, 64.9, 64.9, 64.9, 66.8, 66.4, 65.3, 64.7, 63.2, 62.9, 62.1, 61.8, 61.8, 62.2, 60.6, 60.6, 60.6, 61.2, 63.4, 62.9, 64, 64, 62.9, 63.8, 63.6, 63.2, 58.2, 57.1, 55.5, 53.4, 52.6, 51.1, 50.6, 50.4, 50.4, 49.7, 49.5, 48.6, 48.6, 47.2, 46.8, 47.3, 48.1, 49, 50.4, 51.2, 52.6, 54.1, 55.2, 55.5, 56.2, 56.9, 56.1, 56.9, 56.6, 55.5, 55.4, 53.2, 52.3, 51.1, 50.7, 49.5, 49.5, 49.7, 50.3, 51.1, 52.4, 53.1, 55.3, 56.3, 58.2, 59.1, 60.4, 61.2, 61.9, 61.4, 62, 61.7, 59.6, 57.7, 57.4, 56.9, 57.1, 55.7, 54.4, 54.4, 52.8, 52.4, 52.5, 52.5, 53.2, 54.5, 53.9, 54.1, 56.3, 57.8, 59.3, 59.8, 60.1, 60.5, 59.7, 60.4, 60.3, 59.9, 59.9, 59.7, 57.7, 56.7, 56.1, 56.1, 55.3, 55.3, 55.8, 55.8, 55.8, 55.2, 56.3, 56.3, 55.8, 55.8, 56.3, 56.7, 56.3, 57.2, 57.2, 57.9, 58.5, 58.5, 57.8, 57.2, 57.2, 57.8, 57.8, 57.8, 57.8, 57.8, 57.8, 56.7, 55.8, 56.3, 57.8, 59.2, 60.5, 60.5, 57.7, 58.3, 57.7, 57.7, 56.7, 56.7, 56.7, 55.3, 54.7, 53.8, 53.8, 53.8, 53.8, 53.8, 53.8, 53.8, 53.8, 53.8, 53.8, 54.3, 55.2, 54.7, 54.7, 54.7, 56.7, 57.8, 57.2, 57.2, 57.2, 56.7, 55.6, 54.2, 53.8, 54.3, 54.3, 54.3, 54.3, 55.2, 55.2, 54.7, 54.7, 55.2, 56.3, 59, 61.5, 64.3, 66.6, 68.3, 69.1, 68.9, 68.2, 67.2, 68.2, 68.9, 68.2, 66.6, 67, 65.7, 65.3, 64.3, 64, 64, 63.4, 63.4, 62.9, 62.9, 64, 64.6, 65.3, 66.6, 68.3, 68.5, 68.8, 71.2, 71.6, 71.7, 71.2, 70.5, 69.1, 68.2, 67.9, 66.6, 65.7, 65.3, 63.4, 64, 62.9, 62.3, 62.1, 62.3, 62.9, 64, 64.9, 66.4, 67.9, 68.3, 67.3, 68.9, 68.9, 68.5, 68.2, 68.1, 67.2, 65.9, 65.9, 63.9, 63, 63.4, 63, 61.7, 60.5, 59.6, 58.3, 58.3, 57.8, 57.8, 58.8, 59.7, 59.2, 58.3, 59.2, 59.6, 60.5, 59.6, 60.2, 58.8, 57.2, 56.7, 57.4, 57, 57.7, 57.5, 57.4, 58.1, 58.5, 58.7, 58.9, 59.8, 60.7, 63.9, 65.9, 67.6, 69.3, 69.9, 70.1, 70.4, 69.7, 70.1, 70.4, 64, 69.2, 67, 65.1, 65.1, 64.6, 64.1, 63.4, 62.8, 62.8, 62.3, 62.3, 62.1, 63.6, 65.5, 67.2, 68.9, 70.5, 71.3, 71.6, 71, 71.8, 71.8, 69.6, 68.5, 67.6, 65.9, 64.9, 63.7, 63.4, 62.9, 62.8, 62.8, 61.8, 61.9, 61.9, 62.9, 63.6, 65.4, 66.3, 67.7, 69.3, 69.9, 71.5, 72.6, 72.5, 73.2, 71.5, 68.2, 67.2, 67.7, 67, 67.7, 64.6, 60.8, 60.8, 60.8, 59.2, 59.2, 60.2, 59.2, 57.9, 56, 55.6, 56.6, 57.3, 57.1, 56.9, 57.7, 57.9, 56.9, 56.9, 56.9, 57.3, 56.9, 57.7, 57.9, 57.4, 57.2, 56.7, 56.1, 56.1, 55.6, 54.7, 55.6, 55.6, 57.2, 57.2, 57.2, 57.2, 57.7, 58, 58, 58.6, 58.3, 58.3, 56.7, 56.3, 58.3, 58.8, 58.8, 58.8, 57.8, 57.2, 57.2, 57.2, 57.2, 57, 56.7, 55.8, 55.8, 54.3, 55.2, 55.8, 56.7, 55.8, 54.7, 55.3, 53.8, 52.9, 52.5, 52, 52, 52, 52, 52, 52, 51.5, 52, 50.9, 52, 52, 52, 51.5, 52.1, 52.1, 52.1, 52.1, 52.1, 53.1, 53.1, 54, 54, 53, 53, 53, 53, 53, 53, 53, 54.2, 55.3, 56.1, 56.7, 56.7, 56.1, 56.1, 57.2, 58.5, 60.4, 62.4, 63.3, 64.8, 65, 65, 63.9, 64.2, 63.7, 63.4, 64.4, 63.2, 62, 61.2, 60.2, 60.2, 59.8, 59.7, 59.3, 59.1, 59.3, 59.1, 60.4, 61.1, 64.1, 67.1, 68.2, 69.9, 70, 70.3, 69.9, 68.7, 68, 67.3, 63, 61.4, 59.7, 59, 58.2, 59, 58.7, 57.7, 57.2, 56.4, 56.4, 56.9, 57.2, 59, 60.2, 62.2, 63.8, 65.5, 67, 67.9, 70.6, 69.1, 69.3, 69.1, 68, 67.2, 67.1, 65.8, 64.6, 64, 64, 63, 63, 62.8, 63, 63, 63.9, 65.4, 66.9, 69.1, 70.3, 70.7, 70.1, 70.1, 69.7, 69.7, 69.2, 68.9, 68.8, 68.7, 67.9, 69.7, 67.3, 65.3, 64.7, 63.6, 62.8, 62.1, 63.2, 63.4, 59.9, 58.7, 57.9, 57.9, 57.7, 58.1, 56.9, 56.3, 57.5, 57.5, 57.1, 56.3, 55.6, 55.1, 55.6, 57.9, 57.2, 56.1, 57.2, 58.6, 56.1, 55.1, 52.1, 52.1, 53.1, 52.8, 54.3, 54.8, 54.5, 55.6, 55.6, 55.7, 55.3, 53.8, 52.9, 51.9, 51.9, 48.7, 49.2, 50.5, 50.7, 50.1, 49.6, 48.8, 49.2, 48.8, 47.8, 48, 48.4, 49.7, 50.9, 53.1, 54.1, 55.6, 54.9, 56.4, 57.3, 57.6, 57.6, 57.5, 56.6, 58, 57.3, 56, 55.2, 54.9, 54.4, 54, 54, 53.5, 53.5, 53.5, 55, 56.9, 59.4, 61.2, 62.8, 64.2, 63.6, 63.3, 63.3, 63.3, 63.7, 62.3, 60.7, 58.7, 57.1, 56.3, 55.7, 56.3, 56, 56.3, 56.9, 56.6, 56.1, 56.7, 57.4, 59.8, 60.5, 60.2, 61.2, 62.2, 63.1, 62.8, 64.4, 64.6, 64.6, 63.9, 63.7, 63.4, 62.8, 62.3, 61.9, 62.3, 62.4, 62.2, 61.7, 61.1, 61.5, 62.3, 62.8, 63.4, 64.6, 65.9, 65.9, 66.9, 67.7, 67.7, 67.7, 65.9, 66.4, 65.5, 65.1, 64, 64.3, 64.3, 64.9, 65.3, 64.6, 65.3, 64.9, 64.6, 64.6, 64.6, 65.5, 66, 67.6, 68, 68.4, 69.7, 70.8, 69.1, 69.4, 69, 69.4, 69, 68.4, 68.3, 66.6, 66.9, 66.9, 65.9, 65.3, 64.3, 65.9, 65.3, 64.3, 64.7, 65.5, 66.3, 67.6, 67.4, 67.7, 68.3, 67.5, 67.5, 68.8, 68.8, 67.5, 68.2, 69.8, 68.7, 66.4, 64.4, 63.8, 63.3, 60.1, 56.5, 54.4, 53.5, 51.5, 50.3, 51.5, 51.9, 51.5, 51.5, 53.2, 53.9, 53.9, 54.5, 54.5, 53.7, 52.7, 52.7, 52.3, 51.5, 51.5, 51.5, 51.2, 51.2, 50.1, 50.1, 49.7, 49.2, 49.3, 49.3, 50.1, 51.6, 52.7, 53.5, 55.6, 55.6, 57.5, 57.6, 57.6, 58.8, 58.2, 58.5, 59.7, 59.3, 58.5, 58.5, 58.5, 58, 58, 58.6, 58.3, 57.8, 57.8, 58.3, 58.8, 59.6, 59.6, 59.9, 59.9, 59.9, 60.5, 60.5, 60.5, 62.8, 62.3, 62.3, 62.9, 62.4, 61.1, 60.2, 60.2, 60.2, 60.2, 59.2, 59.7, 58.6, 57.7, 58.6, 59.7, 60.6, 62.2, 62.4, 62, 61.9, 63.3, 63.3, 62.4, 62.1, 61.4, 61.2, 61.4, 61.7, 62.1, 60.6, 60.6, 61.8, 60.4, 59.7, 59.7, 59.7, 58, 58.5, 59.4, 61.2, 63.7, 65.2, 64.4, 64, 63.3, 64, 65.8, 65, 63.9, 61.4, 61.8, 61.2, 60.2, 59, 58.2, 59.8, 60.9, 60.5, 60.3, 59.8, 59.4, 60.4, 61.1, 61.9, 63.2, 64.7, 65.8, 65.1, 65.5, 63.2, 63.2, 64, 63.3, 62.2, 60.9, 57.1, 54.9, 54.1, 54.1, 53.4, 53.8, 54.1, 54.6, 54.4, 54, 54.4, 54.4, 55.3, 54.5, 54.7, 55.3, 55.3, 55.3, 54.7, 54.7, 55.8, 55.8, 56.3, 56.3, 56.7, 56.3, 56.7, 57.2, 57.2, 57.2, 57.2, 55.9, 55.9, 56.3, 56.3, 57.2, 57.8, 58.5, 57.8, 58.3, 59.6, 59.1, 58.3, 56.7, 58.5, 59.1, 59, 59.1, 57.9, 56.1, 55.3, 55.1, 54.7, 53.7, 51.6, 50.7, 50.3, 50.3, 50.3, 51.6, 53.4, 54.9, 55.6, 57.5, 57.5, 60.1, 60.1, 58.7, 59.2, 56.3, 56.5, 55.4, 54.8, 54.4, 54.8, 54.7, 53.5, 53.1, 54.5, 53.1, 53, 52.6, 51.7, 55.4, 56.9, 57.6, 60.1, 60.2, 60.7, 61.1, 61.6, 61.5, 63.2, 63.4, 62.7, 62.2, 60.7, 60, 59.3, 59.3, 59.3, 58.8, 58.8, 58.5, 58.7, 58.3, 58.7, 59.9, 61.8, 62.1, 63.6, 63.4, 63.4, 64, 64, 64.3, 65.3, 67, 65.9, 66.4, 66.9, 65.8, 64.9, 64.7, 64.3, 64.2, 64.2, 64, 64.2, 64.4, 65.1, 64.4, 65.5, 66.4, 67, 68, 64.3, 66.5, 64.6, 61.7, 63, 62.8, 62.3, 62.8, 62.9, 62.9, 64, 64, 62.4, 61.1, 59.7, 61.1, 60.8, 61.7, 62.1, 62.1, 62.7, 62.9, 64.7, 66.5, 65.8, 66.4, 62.7, 63.6, 62.9, 62.8, 63, 64, 64.6, 64.2, 61.7, 62.1, 62.4, 60.9, 60.7, 60.1, 61.1, 59.8, 59.7, 60.7, 61.6, 62.7, 63.3, 64.6, 65.1, 64.3, 64.3, 64.3, 64.6, 65.7, 65, 64.3, 63.7, 63.4, 62.9, 62.4, 62.3, 62.8, 62.8, 62.3, 61.5, 61.1, 60.9, 61.5, 63.3, 64.1, 65.1, 64.8, 64.6, 63, 63.4, 63.4, 62.1, 62.8, 61.7, 60.8, 59.7, 59.6, 59.6, 59, 59, 58.5, 58.5, 57.9, 58.8, 60.2, 61.5, 62.4, 64.1, 65.8, 67.4, 67.6, 68, 68.4, 67.3, 66.4, 66.5, 66.4, 65.2, 65.3, 64.9, 67.6, 66.7, 66.4, 65.9, 66.6, 66.5, 64.7, 65.3, 64.7, 64.7, 66.6, 67.7, 69.2, 69.3, 70.9, 71, 71.1, 70.4, 69.7, 68, 69, 71.3, 70.9, 70, 69.1, 69.7, 68.8, 67.2, 66.9, 66.7, 66.4, 65.9, 65.8, 65.8, 66.4, 66.9, 68, 69.3, 70, 69.6, 66.6, 67.2, 69.1, 71.6, 73.1, 72.3, 71.7, 69.8, 69.4, 69.1, 69, 69, 69, 69, 69, 68.5, 68.5, 68.3, 69, 69.1, 70, 69.9, 69.7, 70.2, 71, 70.3, 70.3, 70, 70.9, 70.9, 71.2, 70.5, 70.2, 69.4, 69.8, 67.9, 68.3, 69, 68.3, 68, 67.3, 67, 65.9, 65.9, 66.1, 66.9, 67.3, 69.4, 68.6, 69.3, 67.4, 67.6, 69.1, 68.9, 67.6, 68.9, 69, 68.4, 66.1, 65.3, 62.8, 62.3, 61.2, 60.4, 59, 59, 60.7, 61.7, 61.7, 63.6, 64.2, 64.2, 64.4, 63.7, 63.9, 63.1, 63.8, 63.3, 64.3, 63.9, 64.7, 65.5, 64.3, 64.1, 64.6, 64.6, 64.6, 64.1, 63, 64, 65.1, 65.9, 68, 68.5, 69.2, 67.2, 70, 70.2, 70.9, 71, 71.5, 71.5, 71.6, 71.2, 70.2, 70.1, 70.1, 70.1, 69.8, 69.2, 69.2, 69, 69.8, 69.8, 70.1, 71.6, 71.7, 71.3, 71.5, 70.1, 70.6, 70.5, 68.3, 69.9, 68.5, 67.1, 66.2, 65.2, 64.5, 64.2, 63.9, 64.6, 63.3, 62.3, 61, 59.4, 59.4, 59.4, 58.3, 58.3, 58.5, 61.1, 61.6, 62.2, 62.7, 63, 63, 63.6, 63.8, 63.6, 64.2, 63.8, 62.1, 61.9, 62.1, 61.2, 61.2, 61.2, 61.1, 61.1, 61.1, 61.7, 61.5, 62.1, 62.3, 63.2, 63.6, 63.6, 63.4, 65.7, 65.5, 65.8, 65.7, 65.9, 64.7, 65.1, 63.9, 62.4, 62.1, 62.1, 61.2, 61.2, 61.2, 61.2, 61.1, 61.5, 61.9, 62.3, 62.9, 64.2, 64.1, 63.4, 62.8, 63.6, 63.7, 64.9, 64.6, 65.3, 65.4, 65.4, 65.8, 65.1, 64.8, 64.6, 63.9, 63.4, 63, 62.3, 61.5, 61.7, 63.4, 65.8, 66.6, 68.7, 68.6, 69.3, 68.5, 69.1, 69.3, 68.6, 67.8, 65.9, 66.1, 65.9, 66.3, 66.3, 63.9, 64.1, 65.5, 65.9, 65.9, 66.6, 66.9, 67.6, 67.2, 67.9, 69, 69, 70.3, 72.1, 71.7, 71.5, 71.4, 72.2, 71.8, 70.2, 68.6, 65.8, 60.9, 59.8, 59.1, 58.7, 58.9, 58.5, 57.7, 56.8, 56.3, 56, 57.6, 59, 60.1, 62.2, 62.4, 62.6, 62.4, 61.9, 61.4, 62.5, 62.2, 62.1, 61.7, 61.8, 61.4, 61.7, 60.9, 60.9, 60.7, 60.5, 60.5, 60.7, 60.7, 60.7, 61.7, 62.8, 64.8, 65.6, 66.6, 67.1, 67.4, 68.1, 69, 68.9, 68.1, 68.1, 68.1, 67.6, 67.8, 68, 68.2, 67.6, 66.9, 67.1, 66.4, 66.4, 66.4, 66.4, 67.7, 68, 69.9, 70.9, 70.9, 70, 69.8, 69.4, 68.5, 69, 70, 69.6, 70.4, 69.9, 68, 65.7, 64.4, 65, 65.3, 65.3, 65.8, 65.8, 65.9, 67.2, 68.3, 68.5, 69.2, 70.9, 70.9, 70.9, 71, 72.1, 72.1, 71.6, 72.1, 72.1, 71.7, 70.5, 67.2, 67.2, 67, 67.6, 65.5, 64, 62.4, 61.5, 60.5, 59.4, 59.3, 59, 60.8, 61.4, 61.2, 61.7, 61.3, 61.7, 60.9, 61.3, 62.5, 60.7, 61.2, 60.5, 59, 59.3, 59.3, 59.9, 59.7, 59.3, 59.3, 59.3, 58.8, 58.8, 59.9, 61.5, 61.9, 62.8, 63.6, 63.2, 63.7, 63.9, 64.6, 63.3, 64.2, 65.1, 64.7, 65.3, 66.4, 68, 68.5, 69, 69.6, 69.6, 70.5, 70.5, 70.5, 70.5, 70.5, 70.5, 70.5, 72.6, 73.8, 73.4, 74, 73.2, 73.2, 72.3, 71.4, 71.1, 70.9, 69.8, 69.1, 68.5, 65.3, 61.7, 59.9, 59, 57.2, 56.6, 57.7, 56.2, 56, 56.8, 56.1, 56, 56.9, 57.3, 58.1, 58.2, 57.9, 57.2, 58.1, 57.8, 57.2, 56.3, 55.2, 54.9, 54.3, 54.4, 54.2, 54.2, 53.8, 53.9, 53.5, 53.5, 54.8, 55.7, 57.5, 58.4, 58.2, 58.7, 59.6, 60.4, 61.2, 60.5, 61.5, 61.1, 61.4, 63.3, 63.2, 62, 62.4, 61.6, 60.9, 60.7, 60.6, 61.3, 61.9, 62.3, 62.9, 62.9, 65.3, 66.8, 69.2, 69.2, 70.3, 70.9, 70.9, 70.3, 71, 70.9, 71.4, 71.3, 71, 70.8, 70.1, 69.8, 69.4, 69.4, 69.2, 68.5, 68.3, 67.6, 68, 67.9, 68.5, 69.3, 68.6, 69.4, 70, 69.2, 68.8, 69.5, 66.9, 66.6, 67.7, 67.1, 66.4, 65.9, 65.5, 65.1, 65.1, 65.1, 62.9, 61.1, 61.1, 60.6, 61.1, 62.8, 63.3, 64.6, 65.1, 64.6, 64.6, 63.6, 64, 65.1, 65.3, 65.5, 66, 66.3, 66.3, 66.3, 66.3, 65.4, 65.4, 65.4, 65.4, 65.4, 65.4, 65.4, 65.4, 65.4, 66, 66, 66, 66, 66.3, 66.3, 66.3, 67.4, 66.3, 66.3, 66, 66.3, 65.4, 64.9, 64, 64, 64, 64, 64, 64, 63, 63, 63, 63, 63, 62.4, 62.4, 63.4, 62.7, 63.4, 62.9, 62.9, 62.7, 62.4, 62.4, 61.7, 61.5, 61.1, 61.1, 61.3, 61.1, 61.1, 61.1, 61.1, 61.1, 61.1, 61.1, 61.5, 62.3, 62.9, 64.1, 65.9, 66.6, 67.7, 69.7, 70.2, 68.2, 67.9, 69.9, 69.9, 69.1, 68.5, 68.5, 67.2, 67.7, 67.1, 65.9, 65.1, 64.1, 63.3, 63.6, 63.9, 64.2, 62.5, 62.2, 58.8, 62.2, 62.9, 62, 61.2, 61.6, 60.7, 60.7, 60.1, 59.8, 60.4, 60.4, 60.5, 60.5, 59.7, 59, 60.3, 60.3, 61.5, 62.1, 62.9, 64.3, 67.6, 69.4, 71.7, 71.2, 71.5, 71.2, 71.2, 70.2, 70.2, 69.9, 68.9, 68.9, 68.9, 69.1, 69, 69.2, 69.8, 70.1, 70.1, 70.1, 70.1, 69, 66.6, 64.1, 63.4, 63.2, 63.7, 61.4, 60.2, 59.6, 59.6, 58.6, 58.3, 57.6, 56.9, 54.8, 53.9, 53.1, 52.4, 51.6, 50.9, 49.7, 50.5, 49.7, 49.3, 50.5, 52.9, 54, 54.4, 54.4, 54.5, 54.8, 55.6, 56.1, 56.4, 56.3, 57.4, 58, 58.1, 58.7, 58.6, 58.1, 57.7, 56.9, 56.6, 56.6, 56.1, 56.1, 56.1, 56.9, 58.6, 60.7, 61.7, 62.8, 63.6, 64, 64.2, 64.3, 64.9, 64.8, 63.9, 61.7, 58.2, 59.7, 58.8, 58.8, 58.1, 58.7, 59.1, 59.9, 59.9, 59.9, 60.5, 61.5, 62.8, 64.6, 65.1, 65.8, 66.5, 66.6, 68.5, 69.4, 70.1, 70.9, 70.3, 70.8, 69.8, 69.2, 69.8, 70.8, 70.8, 71, 71, 71.7, 71, 71, 71, 71, 70.9, 70.2, 68.5, 68.7, 68.7, 67.1, 67, 66.7, 66, 65, 64.8, 63.5, 62.7, 61.6, 61.2, 60.6, 61.2, 60.7, 61.8, 61.1, 61.1, 62.1, 62.1, 62.8, 63.9, 65.1, 65.4, 66.4, 67, 65.9, 69.3, 69.2, 69.3, 69.5, 71.1, 70.4, 69.7, 69.4, 69.4, 63.3, 63.2, 59.9, 56.3, 54.1, 53.2, 52.8, 52.8, 53.2, 53.7, 54.4, 55.1, 56.3, 56.3, 56.7, 57.2, 57.5, 57.5, 57, 56.7, 56.3, 56.1, 55.3, 54.4, 53.5, 52.4, 51.6, 51.6, 51.5, 51.5, 51.5, 51.5, 51.9, 54.2, 55.2, 56.2, 55.6, 56.9, 56.1, 56.3, 54.5, 56.2, 56.2, 56.6, 58.1, 56.8, 56.9, 58.7, 58.7, 57.6, 57.1, 57.7, 57.3, 57.3, 57.9, 57.9, 58.7, 58.8, 60.5, 62.3, 62.8, 63.8, 64.2, 64.4, 64.8, 65, 65.5, 65.3, 64.4, 63.7, 62.4, 62.4, 62.1, 61.3, 61.3, 62.2, 62.8, 62.8, 62.8, 63.4, 64, 64.6, 65.4, 66.1, 66.4, 67.2, 67.7, 67.6, 67.6, 67.6, 68.1, 67.2, 67.6, 67, 67, 66.9, 65.8, 65.3, 63.7, 62, 60.9, 60, 57.7, 56.9, 56.9, 57.3, 57.8, 57.3, 56.8, 57.5, 57.5, 57.5, 57.5, 56.9, 56.9, 56.3, 56.6, 56.1, 56.1, 56.1, 56.1, 55.3, 55.3, 55.3, 55.8, 56.1, 56.1, 56.2, 56.7, 56.1, 58.1, 56.9, 57.1, 57.1, 56.6, 57.1, 56.4, 58.1, 57.3, 57.7, 57.1, 56, 55.5, 54.9, 54.9, 53.9, 53.5, 52.9, 52.5, 52.5, 52.5, 51.6, 52, 53.7, 54.5, 55.2, 56.7, 56.6, 56.7, 56.9, 57.7, 57.6, 57.1, 57.1, 57.8, 57.7, 56.8, 55.2, 56.4, 56.5, 56.8, 57.6, 57.1, 56.9, 56.3, 56.3, 57.3, 57.3, 57.3, 57.1, 58.2, 59.6, 60.7, 59.8, 58.8, 60.1, 60.1, 58.7, 59, 59.5, 58.5, 59.3, 58.8, 58.6, 59, 59.7, 60.3, 60.9, 60.9, 60.5, 60.5, 61.1, 62.1, 63.4, 65.7, 66.5, 67.7, 66.9, 66.1, 67.1, 68, 67.2, 67.9, 67.3, 67.3, 67, 67.2, 67, 67, 67, 66.4, 66.4, 66, 65.3, 64.6, 64.1, 63.9, 64.3, 64.3, 65, 65.9, 65.3, 65.5, 65.3, 62.7, 62.2, 61.9, 61.2, 62, 61.6, 61.2, 60.7, 60, 58.3, 58.3, 58, 57.7, 57.3, 57.7, 57.8, 59, 59.6, 59.5, 59.6, 58.7, 60.7, 60.5, 59.5, 60, 60, 59.5, 59.4, 59.4, 59, 58.7, 59.3, 59.3, 59.3, 59.7, 59.7, 59.7, 59.3, 59.7, 61.1, 62.5, 63.2, 64.4, 65.3, 65.9, 65.6, 66.1, 64.7, 65.1, 66.4, 65.5, 64.6, 63.2, 62, 60.9, 60.1, 59.8, 59.9, 60.3, 60.3, 59.9, 59.9, 59.9, 61.9, 63.4, 65.3, 66.4, 67.7, 68.3, 68.6, 68.1, 68.8, 68.8, 67.6, 68.4, 66.9, 65.9, 64.6, 62.9, 62.4, 61.8, 61.3, 61.1, 61.1, 61.7, 61.7, 61.1, 62.9, 64.2, 65.8, 67.6, 68.4, 68.3, 68.1, 68.9, 68.6, 68.8, 70.9, 69.3, 68.5, 67.6, 67.3, 67.3, 67.3, 67.3, 67.6, 67.6, 67.3, 67, 67, 67.3, 68.4, 69, 70.5, 72.2, 71.4, 70.2, 70.5, 69.1, 68.5, 67.6, 66.6, 66.5, 65.9, 66.5, 66.5, 65.8, 65.1, 65.9, 65.3, 65.7, 65.3, 64.3, 64.3, 63.4, 64.9, 66.4, 66.6, 68, 67.3, 67, 68.4, 68.4, 70.5, 69.8, 70.3, 72.6, 74.4, 73.4, 74.4, 73.9, 73.9, 73.8, 72.8, 72.8, 71.8, 70.8, 70.8, 70.3, 70.7, 69.7, 69.4, 70.9, 70.3, 69.1, 68.8, 68.8, 68.5, 67.7, 67.1, 66.5, 65.7, 65.9, 65.7, 65.7, 65.3, 64.9, 64.9, 64.9, 64.9, 64.9, 64.6, 63.5, 64.6, 64.6, 64.6, 65.5, 66, 64.6, 66.4, 67.2, 67.2, 68, 67.6, 69, 69.8, 69.4, 70.1, 68.5, 69.6, 71.7, 71.5, 71.7, 71.7, 71.5, 71.7, 71, 70.9, 70.2, 70, 71.5, 70.9, 70.3, 71.1, 70.9, 69.3, 69.3, 68.7, 67.9, 67.4, 66.6, 66.6, 65.9, 65.9, 66.3, 65.4, 65.1, 64.8, 63.9, 63.9, 63.4, 63.9, 65.5, 67, 68, 68.4, 69, 68.3, 68.5, 67.2, 65.8, 64, 62.2, 59.9, 59.3, 58.4, 58.8, 57, 56.8, 56.6, 55.6, 55.2, 55.2, 54.9, 56, 57.6, 59.6, 60, 60, 60.4, 60.1, 60.1, 59.9, 60.9, 61.4, 60.9, 61.7, 60.2, 59.7, 59, 60.7, 61.1, 60.5, 61.1, 59.8, 58.6, 58.6, 58.1, 58, 59.5, 59.3, 61.7, 63.1, 61.4, 62.6, 62.1, 63.3, 62.1, 62.1, 61.1, 61.4, 60.5, 60.2, 60.5, 59.4, 58.9, 58.2, 57.1, 56.1, 55.7, 56, 56.6, 58, 59.7, 61.9, 62.9, 62.8, 62.7, 63.3, 64.2, 64.9, 64.8, 65.9, 65.3, 66.6, 65.9, 65.8, 65.5, 65.7, 65.3, 65.3, 65.3, 65.7, 66, 66, 66.3, 64.6, 64.6, 60.2, 61.7, 61.5, 60.5, 60.5, 59, 58.5, 57.9, 58.5, 57.2, 57.9, 56.7, 56.7, 57.2, 57.2, 56.3, 55.9, 55, 55, 55, 54, 53.1, 53.1, 54.2, 54.7, 56.1, 57.7, 59.3, 58.7, 58.4, 58.1, 59.2, 57.3, 57.1, 57.7, 55.7, 56.3, 55.4, 54.9, 53.9, 54, 54, 53.5, 53, 53, 53.7, 54, 56.6, 58.1, 59.3, 60.9, 62.5, 62.5, 63, 62.4, 62.2, 62.4, 62.4, 62.3, 61.7, 61.5, 61.1, 61.1, 62.3, 62.1, 61.5, 61.1, 62.1, 62.3, 62.3, 62.9, 63.4, 64.7, 65.1, 65.5, 65.9, 65.9, 66.4, 66.6, 68.4, 64.6, 64.2, 61.9, 60.2, 58.5, 57.5, 56, 55.3, 54.4, 53.4, 51.9, 50.5, 49.5, 49.3, 49.3, 50.1, 51.6, 52.3, 52.2, 53.4, 54, 54.5, 54, 52.9, 53.5, 52.3, 51.3, 51.6, 51.1, 50.6, 49.6, 49.1, 48.8, 48.4, 47.8, 47.4, 47.8, 47.5, 47.4, 48.4, 50.8, 51.8, 52.6, 52.9, 54.1, 55.6, 56, 56.9, 57.7, 58.3, 58.7, 59, 59, 58.5, 57.7, 57.5, 57.5, 56.9, 56.3, 56, 55.6, 54.5, 55.1, 57.3, 59.7, 60.2, 60.7, 57.9, 57.8, 58.3, 58.8, 58, 57.5, 57.3, 56.9, 56.6, 56.1, 56.1, 56.1, 55.1, 55.6, 54.2, 54, 52.7, 51.7, 51.7, 51.7, 53.5, 57.3, 58.6, 59.8, 58.1, 56.3, 57.7, 60.6, 60.6, 60.6, 60.7, 59, 57.9, 58.1, 57.9, 56.9, 56.7, 56.1, 56.7, 57.7, 57.2, 57.2, 57.8, 57.8, 60.2, 63, 65.5, 64.8, 65.9, 66.3, 65.8, 62.8, 62.8, 64, 64.7, 65.3, 66.4, 67.2, 67.2, 67, 65.9, 62.3, 59.9, 59.1, 58, 57.7, 57.7, 57.2, 57.2, 54.9, 55.3, 55.6, 54.4, 58.2, 57.6, 57.4, 57.7, 56, 55.6, 54.9, 54.4, 54.9, 54.2, 54.6, 54.1, 53.4, 52.9, 51.9, 51.9, 51.5, 51, 50.5, 51.1, 52.4, 53.6, 54.9, 55.5, 56.2, 56.9, 57.6, 57.6, 57.3, 57.6, 56.9, 56.1, 55.7, 55.7, 55.3, 55.4, 56.1, 55.4, 55.4, 56.3, 55.7, 55, 55.6, 57.7, 59.4, 60.8, 61.5, 63.3, 63.3, 64.8, 65.6, 66.6, 67.4, 67.4, 66.5, 66.4, 65.9, 64.1, 63, 63.4, 62.3, 61.5, 60.5, 60.3, 59.9, 59.7, 60.3, 60.5, 63.7, 65.9, 66.6, 67, 67.3, 68.1, 68.2, 68.2, 67.3, 68.7, 67.4, 65.9, 65.4, 64.7, 64.6, 64.6, 63.3, 63.3, 62.9, 61.1, 61.1, 60.5, 61.1, 62.4, 63.3, 64.2, 66.6, 67.6, 68.2, 68.8, 69.2, 66.5, 66.3, 66.5, 66.4, 65.9, 65.8, 65.8, 64.6, 64, 64, 63.6, 63.4, 62.9, 62.3, 62.9, 61.7, 63.6, 64.6, 65.8, 65.9, 65.9, 64.6, 64, 64.1, 63.3, 61.1, 60.5, 60.5, 60.5, 59.7, 59.6, 59.6, 59.7, 60.8, 61.1, 62.1, 61.1, 61.1, 60.8, 61.7, 61.7, 62.7, 63.5, 63.5, 64.3, 65.5, 66, 65.3, 65.3, 64.3, 64.3, 64.3, 64.6, 64.3, 64.3, 64.3, 63.4, 63.4, 63, 63.4, 63.4, 63.4, 62.1, 63, 64, 66.6, 67.2, 69.1, 69.9, 68.5, 67.3, 67.6, 67.6, 66.4, 67.7, 65.9, 65.8, 65.1, 64.8, 64.6, 64, 63, 62.8, 62.8, 62.1, 61.5, 61.5, 60.5, 61.7, 62.9, 63.7, 64.1, 65.3, 65.9, 65.3, 65.3, 65.3, 65.6, 65.3, 64.2, 63.7, 63.6, 63.4, 63.6, 63.6, 62.9, 62.8, 60.5, 59.8, 59.4, 58.3, 57.5, 58.2, 59.9, 62.4, 63.8, 65.6, 65.8, 66.2, 65.1, 66.2, 65.7, 65, 64.8, 64.7, 64.7, 64.2, 63.6, 63.6, 64, 64.3, 64.3, 64, 63.5, 62.9, 62.9, 63.4, 64.1, 64.1, 64.7, 63.8, 63.8, 62.7, 62.1, 60.3, 59.4, 58, 58, 57.5, 56.8, 54.7, 54.8, 53.2, 53.2, 52.4, 50.2, 50.2, 49.3, 48.8, 48.8, 50.5, 52.8, 52.8, 54.8, 56, 55.1, 55.1, 55.6, 54.4, 53.4, 53, 51, 52.2, 51.5, 50.6, 50.1, 48.7, 47.4, 47, 46.6, 46.2, 45.2, 44.3, 44.2, 46.1, 47.6, 49, 49.5, 51.2, 52.7, 54.8, 55.5, 56, 56.1, 56.1, 55.3, 55.6, 55.6, 56.3, 57.3, 58.1, 59.7, 60.3, 59.9, 59.9, 51.9, 47.7, 47.3, 45.7, 46.1, 45.7, 46.8, 48.6, 49.7, 50.6, 51.1, 50.4, 50.4, 51.1, 51.9, 51.1, 51, 49.7, 47.8, 47, 45.6, 44.8, 43.8, 42.9, 42.9, 42.9, 42.2, 44.7, 47.8, 50.5, 51.1, 49.9, 50.8, 51.7, 52.9, 52.4, 52.4, 51.1, 50.4, 49.9, 51.1, 51.6, 51.9, 50.5, 50.7, 50.2, 50.7, 50.2, 49.8, 50.3, 49.8, 52.5, 54, 54, 55.7, 58.2, 58.7, 58.7, 57.7, 56.8, 55.2, 56, 56.9, 57.2, 57.7, 58.3, 59.2, 60.8, 61.7, 64, 63.4, 63.5, 62.3, 62.9, 64, 64.9, 65.7, 67.3, 67.1, 67.1, 67.2, 67.1, 67.1, 67.3, 66.6, 67, 67, 66.6, 62.1, 61.1, 58.8, 56.7, 55.8, 55.3, 55.2, 55.3, 54.7, 54.2, 53.7, 53.7, 53.5, 55.7, 54.9, 54.5, 53.6, 53.5, 53.4, 52.3, 50.8, 51, 49.6, 48.7, 48.4, 47.9, 45.6, 45.2, 45.3, 44.2, 44.2, 44.6, 43.6, 44.1, 43.2, 44.5, 44.4, 45.8, 47.1, 49.4, 50.8, 51.8, 51.8, 52.6, 52.3, 52.8, 51.5, 51, 50.5, 50.5, 49.6, 49.6, 50.1, 49.6, 49.6, 49.6, 48.8, 48.5, 48.8, 50.1, 52.8, 54.1, 55.6, 55.6, 55.6, 56.8, 56.6, 56.6, 56.2, 55.6, 56.6, 56.4, 56.3, 56.1, 56.4, 56.4, 57, 57.3, 57.3, 57.3, 56.7, 56.3, 56.1, 56.6, 57.2, 57.7, 59.4, 59.3, 57.6, 58.2, 56, 54.4, 51.9, 51.5, 50.1, 47.8, 47.4, 47.4, 47.4, 47.4, 47.4, 46.9, 46.4, 45.5, 44.4, 44, 44.9, 47, 48.7, 52.4, 54.7, 55.9, 57.1, 58, 57.5, 58, 57, 57.3, 56, 57.7, 58.7, 59.1, 59.9, 60.5, 60.2, 60.8, 60.5, 60.5, 60.1, 60.5, 59.6, 61.5, 62.9, 64.7, 64, 65.4, 64, 63, 61.7, 61.1, 61.1, 62.1, 61.7, 61.7, 62.1, 61.5, 58.5, 57.4, 58.5, 58.5, 58.5, 56.5, 56.5, 56.7, 56.7, 51.5, 48.5, 48.5, 49.5, 48.5, 47.4, 46.3, 44.6, 42.8, 42.2, 42.2, 41.4, 40.9, 40.2, 40.2, 39.7, 40.3, 40.2, 40.5, 41.4, 40.9, 40.7, 41.1, 41.1, 42.2, 44.9, 48.4, 50.5, 51.9, 53, 53.9, 55.1, 56, 56.5, 56.1, 55.2, 55.1, 54.8, 53.8, 52.8, 52.4, 51, 50.2, 49.8, 50.3, 49.8, 50.4, 50.9, 52.1, 54.2, 55, 57.1, 57.7, 56.8, 58.3, 57.6, 58.4, 58.5, 54.7, 54.8, 54.6, 55.1, 55.3, 55.3, 55.4, 55.4, 55.4, 55.4, 55.8, 56.5, 56.5, 55.8, 57.8, 57.4, 57.9, 59.3, 59.6, 62.9, 64.7, 65.9, 64.6, 62.8, 61.2, 61.5, 60.9, 62.1, 62.1, 60.5, 59.6, 58.6, 57.7, 57.2, 56.1, 53.7, 51.1, 50.2, 49.3, 49.7, 50.6, 50.7, 51.5, 51.5, 52.2, 51.7, 51, 49.9, 49, 47.9, 47.4, 46.6, 46.2, 44.8, 43.8, 42.9, 42.4, 41.1, 41.1, 40.7, 40.2, 40.2, 41.1, 41.8, 41.7, 43.1, 43.1, 44.6, 45.5, 46.9, 47.1, 46.9, 46.7, 45.9, 46.3, 46.6, 47.5, 48.8, 49.3, 50.8, 50.8, 50.2, 48.8, 48.4, 47.4, 47.4, 48, 48.8, 50.5, 52.4, 54, 54.7, 55.6, 55.6, 54.8, 54.8, 54.4, 51.9, 50.4, 49.1, 48.6, 48.4, 48.8, 48, 47.5, 48, 48.5, 48, 47.5, 46.9, 48, 47.5, 48, 48.8, 48.9, 48.9, 47, 45, 45, 45, 45, 44, 44, 43.6, 43.2, 42.6, 42.1, 41.6, 42.2, 42.2, 42.2, 42.2, 42.2, 42.2, 42.2, 42.2, 42.6, 43.2, 44.1, 44.1, 43.7, 42.5, 42, 41.4, 41, 41.1, 41.1, 41.1, 41.4, 41.1, 41.1, 40.1, 39.7, 39.1, 38.6, 38.3, 36.9, 36.5, 36.5, 38.5, 41.1, 42.7, 43, 42.2, 42.9, 42.8, 43.8, 45.1, 43.8, 43.5, 42.9, 42.1, 41.8, 40.7, 39.6, 39, 38.3, 37.3, 37, 36.5, 36.5, 36.5, 38.3, 41.2, 44.5, 47, 46.7, 46.3, 46.7, 46, 46.3, 45.9, 45.8, 45.6, 45.3, 45.2, 44.5, 43.6, 43.6, 42.7, 41.9, 41.9, 40.4, 40.3, 40.7, 40.3, 42.2, 44.2, 45.2, 47.1, 47.5, 49.4, 50.2, 50.6, 50.8, 50.8, 50.7, 49.8, 47.5, 46.2, 45.9, 46.1, 47, 45.7, 46, 45.4, 45, 44.6, 45.5, 46, 47, 49.3, 51.5, 52.5, 53.5, 52.9, 53.5, 53.4, 53.1, 52.5, 51.7, 51.5, 51.5, 51.5, 51.5, 50.9, 50.9, 50.9, 50.4, 50.9, 50.9, 50.9, 50.9, 50.5, 49.4, 52.4, 53, 53, 53, 54.5, 55.1, 55.6, 56.1, 55.6, 54.7, 54.7, 54.7, 54.7, 54.7, 54.7, 54.7, 55.3, 55.4, 54.7, 55.4, 54.7, 55.4, 54.5, 54.5, 56.5, 57.9, 58.3, 59.5, 58.7, 58.8, 57.7, 57.4, 56.3, 56.6, 55.6, 54.7, 53.7, 52.4, 50.9, 50.5, 50.1, 49.7, 48.8, 47.8, 47.5, 47.5, 47.5, 47.5, 49.3, 51.1, 51.9, 53.6, 52.8, 53.3, 53.4, 54.4, 54.8, 53.7, 53.8, 53.3, 52.5, 53.1, 52.5, 52.5, 51.4, 51.1, 50, 48.9, 48.9, 50, 48.9, 48.9, 51.1, 51.1, 51.1, 53, 53.7, 55.6, 55.6, 55.1, 55.2, 52.8, 53.1, 52.8, 52.4, 53.7, 54.2, 54.2, 54.7, 55.3, 55.8, 55.8, 56.7, 57.2, 57.2, 57.4, 57.8, 59.2, 59.6, 59.9, 60.5, 60.1, 59.7, 58.2, 52, 51.6, 50.2, 48.8, 47.8, 47, 46.4, 45.5, 45, 43.6, 42.7, 41.8, 40.5, 40.1, 39.1, 38.7, 39.5, 39.7, 40.4, 41.8, 42.4, 42.9, 44, 43.2, 43.4, 42.1, 41.8, 41.8, 40.8, 41.3, 41.1, 40.7, 39.9, 37.6, 38.3, 40.6, 40.1, 40.5, 40.2, 41.5, 42.9, 45.3, 47.9, 48.8, 48.8, 48.7, 49.9, 51.5, 50.5, 50.5, 50.5, 50.5, 51, 50.8, 49.8, 49.3, 48.5, 48.9, 48.9, 48.5, 47.4, 47.4, 48.5, 49.6, 50.4, 51.2, 53.4, 55.7, 55, 56, 56.1, 52, 51.1, 49.8, 48.6, 48.7, 49.4, 51, 53.7, 54.8, 55.6, 56, 56.9, 56.3, 55.7, 57.4, 58, 58.5, 46.2, 44.5, 44.7, 46.5, 46.8, 47, 47, 46.3, 46, 43.5, 43, 42.4, 40.8, 39.6, 39.1, 38.6, 38.1, 37.6, 36.6, 36.1, 35.5, 34.9, 34.9, 35.5, 36.1, 38, 38.8, 39.5, 41.5, 41.6, 42.7, 43.4, 43.5, 42.9, 41.7, 40.7, 40.3, 40.3, 40.7, 40.3, 39.8, 38.7, 37.5, 37.9, 37.9, 36.1, 35.4, 36.5, 40.3, 42.3, 43.5, 45, 45.7, 45.3, 45.7, 45.7, 45.3, 43.9, 43.7, 43.4, 42.8, 42.8, 42.8, 42.1, 42.3, 52.8, 52.1, 53.3, 53.3, 55.4, 55.4, 57.2, 61.1, 64.3, 64, 62.1, 61.7, 59.6, 59.6, 57.3, 54.4, 52.4, 51, 49.8, 47.4, 47, 47, 45.9, 44.6, 42.3, 41.8, 41.4, 40.5, 39.5, 38.5, 39.1, 38.9, 40.3, 41, 42.5, 42.9, 42.9, 42.9, 44.1, 43, 42.3, 42, 41.3, 40.6, 40.3, 39, 40.2, 39.1, 38.6, 39.5, 39, 37.7, 37.3, 37.7, 38.6, 39.1, 40.7, 41.8, 43.3, 43.2, 43, 43, 42.3, 42.1, 42, 42.3, 42, 43.4, 43.4, 44.6, 45, 45.9, 46.4, 47.9, 48.4, 48.3, 47.5, 45.5, 44.7, 45.8, 45.9, 47, 46.6, 45.6, 46, 46, 45.6, 44.7, 43.3, 42.6, 40.4, 39, 37.9, 38, 37.7, 37.3, 37.1, 37, 37.1, 37.2, 38, 39.1, 40.4, 42.7, 45.7, 48.1, 49.4, 50.3, 50.8, 51.1, 51.6, 51.5, 51.1, 50.9, 51.1, 51.5, 52.6, 53.4, 53.7, 53.7, 53.7, 54.8, 55.3, 57.2, 56.7, 56.6, 56, 56.3, 57.7, 57.7, 50.8, 50.3, 49.8, 49.6, 46.8, 45.9, 45.5, 43.6, 41.4, 40.1, 38.3, 36.8, 36.5, 35, 34, 33.1, 32.2, 32.2, 32.1, 31.8, 32.6, 34.7, 36.3, 36.6, 36.6, 38, 38, 39.4, 40, 40.3, 40.6, 40.5, 40.5, 40.1, 39, 39.4, 39.8, 40.3, 41, 41.4, 41.4, 42.2, 42.6, 43.1, 44.9, 45.9, 45.9, 46.9, 47, 47.4, 47, 46.3, 45.8, 45.1, 43, 43, 40.7, 38.5, 36.1, 33.4, 30.3, 28.7, 28.7, 27.7, 27.7, 26.7, 26.5, 26.5, 25.9, 27.7, 29.5, 30.9, 33.1, 34.3, 34.7, 34.7, 34.7, 35, 35.9, 36.2, 37.2, 37.9, 38.3, 39, 38.3, 38.3, 38.5, 39.5, 39.5, 39.9, 40.3, 45.9, 46.9, 46.3, 47, 42.1, 39, 38.5, 40.1, 41.2, 42.1, 42.1, 42.1, 42.1, 41.6, 41.6, 41.6, 42.1, 41.6, 41.6, 41.6, 42.2, 42.2, 43.1, 42.6, 42.7, 42.7, 42.2, 42.2, 43.1, 43.7, 44.2, 44.7, 45.2, 44.5, 44.7, 44.2, 44.5, 43.7, 43.6, 43.1, 43.6, 43.6, 45.9, 46.3, 47.4, 47.4, 47.4, 47.4, 48.3, 48.9, 49.4, 50, 50.9, 50.9, 51.4, 51.1, 51.1, 51.4, 51.4, 52, 52, 52, 53.1, 52, 53.1, 52, 53.1, 52, 52, 55, 54, 54, 53.1, 55, 63, 63.5, 65.3, 65.3, 65.1, 65.8, 65.8, 65.5, 58.1, 53.4, 51.9, 50.5, 48.7, 48.8, 48.4, 45.9, 42.6, 41.3, 40.4, 37.7, 35.7, 35.2, 34.3, 33.1, 32.9, 33.2, 34, 34.2, 35.8, 36.8, 36.8, 36.6, 35.8, 34.7, 34.4, 34.1, 33.7, 33.2, 32.7, 32.2, 31.9, 31.5, 31.5, 31.5, 31.8, 31.8, 32.6, 33.2, 33.9, 35, 34.1, 34.1, 34.5, 33.9, 33.1, 33.1, 32, 33.1, 33.1, 34, 34.7, 33.4, 33.2, 34.2, 34.2, 34.2, 34.2, 34.2, 34.2, 34.2, 33.9, 33.9, 34.9, 36.1, 37.9, 39, 39, 39.3, 39.6, 39.8, 38.7, 37.6, 37.9, 38.3, 37.7, 38.9, 38.2, 36.6, 36.6, 37.3, 35.7, 34.7, 32.3, 32.8, 34.9, 34.6, 34.9, 34.7, 35.3, 34.8, 33.5, 31.3, 30.1, 29.4, 27.8, 25.6, 23.6, 22.8, 20.6, 19.3, 18.4, 17.4, 16.8, 16.2, 16.1, 16.1, 16.1, 16.1, 15.2, 16.1, 17.6, 19.3, 21.1, 23.3, 24.2, 25.6, 26.9, 27.1, 27.1, 26.5, 26.7, 26, 26, 26.5, 25.9, 26.1, 26.1, 25.7, 25.8, 25.4, 24.5, 23.9, 23, 24.2, 24.9, 26.3, 28.5, 30.3, 32.1, 31.1, 31.6, 32.3, 32.3, 32.3, 32.4, 35.1, 34.6, 35.8, 36.1, 35.5, 36.5, 36.1, 36.1, 35.8, 35.5, 34.8, 34.4, 34.4, 34.8, 36, 37.7, 38.4, 39, 39, 38.4, 39.3, 39, 38.9, 38.2, 37, 35.8, 36, 36.8, 36.5, 35.3, 35.1, 34.7, 35.5, 35.9, 34.6, 34.7, 35.9, 38, 39.2, 39.2, 41.7, 43.2, 42.8, 42.5, 42.5, 42.3, 42.5, 42, 43.1, 43.5, 43.5, 42.8, 43.3, 42.2, 42.2, 42.2, 42.2, 41.8, 40.9, 40.2, 38.9, 39.4, 39.2, 38.6, 38.9, 39, 38.8, 38.4, 38.8, 37.3, 36.5, 36.5, 37.6, 36.9, 37.6, 37.6, 37.6, 38.5, 38.9, 37.7, 37.1, 35.2, 32, 29.6, 28, 26.7, 26.7, 27.3, 26.7, 27.3, 28.4, 28.5, 27.8, 27.5, 25.4, 24.8, 23.7, 23.3, 21.7, 20.3, 20, 18.6, 18.6, 17.8, 17.6, 17.8, 18, 18, 17.3, 19.2, 22.2, 24.3, 26.1, 29.6, 31.8, 33.9, 34.2, 34.2, 35.1, 36.1, 36.8, 37.7, 38.3, 39.2, 41.2, 42.5, 45, 45.4, 46.3, 48, 48, 50, 48.9, 50, 49.4, 45.4, 39, 36.6, 38.1, 38.5, 38.9, 37.3, 36, 33, 30.8, 29, 27.6, 27.9, 28.8, 29.6, 29.9, 29.9, 29.9, 29.4, 28.7, 28.8, 28, 29.1, 29.4, 30, 31.3, 32.6, 33.7, 34.1, 33.5, 32.8, 32.6, 31.3, 31.7, 31.1, 30.4, 29.4, 29.7, 29.4, 27.8, 27.8, 27.2, 27.8, 27.7, 27.4, 27.7, 29, 32.6, 34.1, 36.8, 37.6, 38.3, 40.9, 41.9, 41.8, 42.2, 42.2, 42.2, 42.7, 42.7, 43.6, 44.5, 46.4, 47.9, 49.4, 52, 51.4, 52, 52, 51.4, 52, 52, 51.5, 51.7, 51.2, 50.7, 49.8, 49.8, 49.3, 43.7, 41.1, 39.4, 38.5, 38, 37.2, 37.2, 37.2, 36.8, 36.5, 35.9, 35.5, 34.9, 34.7, 34.5, 34.5, 36, 36.6, 38, 38.8, 39, 39.5, 39.5, 39, 38.8, 37.7, 37.9, 37.5, 36.9, 37.2, 35.3, 34.9, 34.7, 34.6, 33.1, 33.5, 33.2, 35.2, 35.2, 36.3, 38.2, 40.8, 42.6, 45, 45.4, 46.3, 47.9, 47.9, 49.4, 51.4, 53.1, 56.5, 58.8, 59.6, 61.1, 61.5, 59.6, 58, 56.1, 54.2, 53.7, 46.9, 43.6, 42.2, 41.9, 41.4, 42.1, 42.6, 42.3, 41.4, 40.3, 39.3, 38.2, 37.2, 36.1, 35.8, 34.9, 34.3, 33.9, 33.9, 32, 33.5, 32.3, 32.8, 32.4, 32, 32.4, 34.3, 36.5, 38.3, 39.9, 41.4, 42.1, 42.9, 42.7, 42.1, 41.3, 41.1, 40, 39.5, 38.3, 37.9, 37.9, 36.8, 36.9, 36.9, 36.9, 36.4, 36.8, 37.3, 37.7, 38.8, 40.1, 41.7, 41.6, 42.3, 43.1, 41.9, 42.3, 41.4, 40.4, 40, 39.6, 39, 38.3, 37.9, 36.9, 34.9, 33.1, 32.7, 32.2, 31.9, 30.5, 29.4, 28.5, 28.4, 28.7, 28.9, 29, 29.2, 28.6, 28.6, 27.9, 27, 25.8, 24.5, 25.5, 25.4, 26.9, 28.3, 30.6, 33.1, 38.5, 41, 43.5, 46.3, 49.4, 52.8, 56.9, 57.7, 58.8, 58.5, 47.9, 45.4, 42.3, 39.7, 38.5, 35.7, 33.5, 32.6, 31.3, 30.9, 30.3, 30.1, 30.1, 29.1, 29.6, 28.9, 28.9, 28.9, 28.4, 28.6, 28, 28.9, 30, 30.9, 32.1, 31.8, 32.2, 33.1, 32.5, 32.4, 32.5, 32.2, 31.3, 31.1, 31.3, 32.2, 32.2, 31.7, 31.4, 31.4, 31.8, 31.6, 31.1, 30.9, 30.5, 31.1, 31.7, 32.2, 33.1, 33.4, 32.4, 31.9, 31.3, 30.2, 29.4, 28.9, 28, 26.8, 26.6, 26, 25.2, 24.8, 24.3, 24.5, 23.9, 23.9, 23.9, 23.2, 22.8, 22.8, 24.1, 25.2, 26, 26.7, 27, 26.7, 26.6, 25.5, 24.9, 24.3, 24.3, 24.3, 23.6, 23.2, 21.8, 21.8, 20.9, 21, 21.3, 20.9, 21, 21, 20.4, 23.7, 25.1, 26.2, 28.9, 32.1, 35, 36.3, 36.9, 37.5, 37, 36.5, 36.9, 37.9, 39.1, 39.1, 39.4, 40.8, 41.8, 42.2, 43.6, 43.6, 43.6, 43.6, 44.5, 45, 46.4, 48.5, 49.3, 50.1, 51.6, 50.1, 49.5, 49.3, 49.3, 49.3, 48.8, 48.7, 47.9, 48.5, 42.4, 38.5, 35.8, 33.7, 29.6, 26.3, 24.8, 23.7, 23.3, 23.2, 23.7, 24.5, 25.6, 26.7, 27.5, 28.2, 28.1, 26.6, 25.7, 24.7, 24.4, 23.4, 23.4, 22.6, 22.2, 23, 23.3, 23.9, 24.2, 23.5, 23.5, 23.7, 23.1, 23.3, 23.9, 24.1, 24.1, 25.1, 25.9, 25.9, 26.1, 25.6, 25.6, 26.1, 26.7, 28.8, 32.1, 31.5, 33.5, 34, 34.9, 35.3, 35.8, 36.5, 34.9, 34.9, 34, 34, 39, 34.3, 40.8, 42.2, 43.2, 43.2, 43.6, 43.6, 43.6, 44.1, 44, 44.4, 44.4, 44.9, 45.9, 45.9, 46.8, 46.8, 47.9, 47.3, 47, 47.3, 47.3, 47.3, 47.9, 48.3, 47.9, 45.9, 44.9, 44.4, 44.4, 44.4, 44.4, 45.5, 44.4, 44, 43.5, 43.1, 41.3, 40.9, 39.4, 39.1, 38.3, 37.1, 35.5, 34.3, 33.3, 33.1, 34.2, 35.5, 37.2, 39, 39.6, 39.6, 38.7, 38.3, 36.9, 34.7, 33.9, 32.9, 31.1, 30, 29, 27.6, 26.9, 26.1, 24.8, 24.1, 24.3, 24.1, 24.1, 23.7, 23.7, 25.2, 26.6, 27.4, 28.1, 29.1, 28.2, 28.5, 28.5, 28.5, 29.2, 29.1, 29.4, 29.4, 29.7, 29.2, 30.4, 29.4, 29, 29, 28.7, 29, 29.5, 30, 30, 31, 32.2, 33.1, 34.4, 35.2, 35.9, 36.2, 36.2, 36.6, 36.6, 36.6, 37.2, 37.6, 37.6, 36.9, 37.6, 37.6, 36.9, 37.3, 37.7, 38.2, 38.6, 38.6, 40.7, 44, 48.9, 50.2, 51, 51.5, 50.5, 51, 50.2, 49.8, 49.3, 49.8, 49.3, 48.8, 48.5, 48, 48, 47.5, 47, 46, 45.4, 45.9, 45.9, 46, 46.5, 48.4, 50.1, 53.3, 53.6, 54.7, 54.7, 53.7, 52.8, 52.4, 52.4, 52, 51.5, 51.5, 51.5, 51.5, 50.7, 49.8, 47.4, 43.6, 41.1, 39.7, 39.7, 38.9, 37.3, 37.7, 37.9, 38.2, 34.9, 34.3, 33.3, 30.3, 28.7, 27.5, 26.8, 25.8, 25.1, 23.7, 23.9, 21.7, 21.4, 20.9, 20, 20, 19.2, 19.2, 20.3, 20, 22.4, 25.4, 27, 28.9, 30, 31.1, 31.4, 31.8, 31.9, 32.2, 33.3, 34.7, 35.9, 36.9, 37.5, 38.5, 37.9, 36.8, 36.1, 35.6, 34.7, 34.7, 34.7, 34.8, 33.1, 33.6, 33.8, 31.4, 30, 28.4, 27.7, 26.2, 24.6, 24.4, 22.8, 19.9, 17.7, 15.7, 14.6, 13.9, 13.2, 13.4, 14.3, 13.2, 12.5, 12.8, 13.9, 15, 16.7, 18.8, 19.2, 19.5, 19.6, 19.3, 17, 16.6, 15.2, 11.2, 9.8, 8.5, 6.8, 6.9, 6.9, 6.1, 5.3, 5.3, 5.3, 4.4, 4.2, 5.2, 6, 6.9, 8.4, 10.9, 12.5, 13.3, 14.1, 15.4, 16.8, 19.9, 19.7, 25.1, 26.7, 28, 29.5, 31.6, 32.1, 32.4, 33.5, 33.9, 33.2, 25.8, 20.2, 20.2, 18.2, 18.8, 18.8, 19.7, 21.9, 22.7, 23, 22.7, 21.9, 21.6, 21.6, 21.6, 22.7, 23, 23, 23, 23.8, 23.8, 23.8, 24.9, 25.7, 27.3, 27.6, 28.6, 28.6, 29.5, 30.5, 30.5, 31.5, 31.5, 32, 32.4, 32.8, 33.1, 30.9, 30.5, 29.5, 28.6, 27.6, 26.4, 26.1, 24.9, 23.5, 23, 22.8, 22.3, 20.4, 20.4, 19.4, 19.4, 20.2, 21.2, 23.4, 24.9, 24.6, 24.6, 24.4, 24.4, 22.6, 22.2, 21.6, 19, 16, 15.1, 12.6, 10.9, 9, 7.4, 6.4, 5.7, 4, 2.9, 2.9, 2.9, 2.9, 3.9, 5.5, 7, 8.7, 10.2, 10.2, 9.3, 7.6, 7.6, 6.9, 6.1, 6.1, 5.3, 4.5, 4.5, 4.5, 3.8, 3.9, 4.7, 4, 4.2, 5.1, 5.9, 6.8, 10.6, 13.1, 14.6, 16.6, 17.4, 18.4, 19.6, 23, 24.1, 25.2, 22.8, 21.1, 22.2, 21.4, 22.4, 21.9, 22.7, 23, 25.8, 26.5, 28.6, 30.9, 32, 33.1, 36.1, 41.8, 39, 45, 45.9, 47.9, 49.5, 49.4, 48.9, 45.4, 47.4, 46.3, 45.9, 45, 41.2, 43.6, 43.5, 42.6, 41.1, 39.6, 39, 38.5, 39.2, 39.2, 39.9, 38.7, 37.1, 37.2, 35.8, 34.7, 33.7, 32.9, 32.9, 32.9, 32.5, 31.9, 31.1, 29.7, 29.4, 29.4, 28.4, 28.8, 28.8, 28, 26.9, 24.8, 23.9, 23.9, 24.3, 24.9, 26.2, 27.2, 27.7, 28.4, 28.2, 27.7, 27.2, 26.5, 25.7, 24.9, 24.3, 23.7, 22.8, 21.7, 21.7, 21.5, 21.5, 21.5, 21.3, 20.6, 20.6, 21.5, 24.2, 24.7, 26.7, 26.9, 28, 26.9, 26.9, 25.7, 25, 25, 25.7, 25.4, 25.6, 24.1, 24.4, 23.3, 22.6, 22.8, 23, 24.3, 24.1, 23.6, 22.8, 25.1, 27.5, 30, 31.1, 30.6, 31.7, 32.9, 33.5, 33.9, 33.9, 34.6, 35.3, 36.3, 35.7, 35.7, 36.3, 38.2, 40.7, 40.7, 40.1, 39, 39.6, 39.2, 39.2, 39.4, 39.8, 40.1, 39.7, 39.2, 39.7, 38.7, 37.5, 37.2, 37.2, 36.1, 34.8, 33.6, 32.9, 31.9, 31.4]; + + for (let i = 0; i < systemOperationAnnualHoursA.length; i++) { + systemOperationAnnualHours.push_back(systemOperationAnnualHoursA[i]); + dryBulbHourlyTemp.push_back(dryBulbHourlyTempA[i]); + wetBulbHourlyTemp.push_back(wetBulbHourlyTempA[i]); + } + + + let monthlyLoad = new Module.DoubleVector(); + let monthlyLoadVarying = new Module.DoubleVector(); + for (let i = 0; i < 11; i++) { + monthlyLoad.push_back(0); + monthlyLoadVarying.push_back(10); + } + monthlyLoad.set(10, 100); + monthlyLoadVarying.set(0, 5); + monthlyLoadVarying.set(1, 5); + + for (let i = 0; i < 12; i++) { + chillerMonthlyLoad.push_back(monthlyLoad); + chillerMonthlyLoadVarying.push_back(monthlyLoadVarying); + } + + monthlyLoad.delete(); + monthlyLoadVarying.delete(); +} + +function airCooledSystemTest(testNum) { + logMessage('Test #' + testNum + ': Air Cooled Single Chiller System: ', true); + + let chiller = new Module.ChillerInput(Module.ChillerCompressorType.Reciprocating, 25, true, 0.1, 1, false, false, chillerMonthlyLoad); + let chillersA = new Module.ChillerInputV(); + chillersA.push_back(chiller); + let acs = new Module.AirCooledSystemInput(44, 80, Module.ACSourceLocation.Outside, 70, 5); + let pcA = new Module.ProcessCooling(systemOperationAnnualHours, dryBulbHourlyTemp, wetBulbHourlyTemp, chillersA, acs); + + logMessage('Chiller #1 Output: ', true); + let chillerOutput = pcA.calculateChillerEnergy(); + logMessage('Efficiency @ Load : ', true); + validateArrays(chillerOutput.efficiency.get(0), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0628001], chillerBins); + logMessage('Hour @ Load : ', true); + validateArrays(chillerOutput.hours.get(0), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8760], chillerBins); + logMessage('Power @ Load : ', true); + validateArrays(chillerOutput.power.get(0), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.57], chillerBins); + logMessage('Energy @ Load : ', true); + validateArrays(chillerOutput.energy.get(0), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13753.22], chillerBins); + + logMessage('Pump #1 Output: ', true); + let pumpInputA = new Module.PumpInput(true, 2.4, 0.75, 1, 0.85); + let chillerPumpingEnergyOutput = pcA.calculatePumpEnergy(pumpInputA); + logMessage('Pump Energy For Chiller # : ', true); + validateArrays(chillerPumpingEnergyOutput.chillerPumpingEnergy, [7841.95], pumpBins); + + chiller.delete(); + chillersA.delete(); + pumpInputA.delete(); + acs.delete(); + pcA.delete(); + + logMessage('Test #' + testNum + ': Air Cooled Single Chiller System END', true); +} + +function waterCooledSystemTest(testNum){ + logMessage('Test #' + testNum + ': Water Cooled Two Chiller System: ', true); + + let chiller1 = new Module.ChillerInput(Module.ChillerCompressorType.Reciprocating, 20, true, 0.1, 1, false, false, chillerMonthlyLoadVarying); + let chiller2 = new Module.ChillerInput(Module.ChillerCompressorType.Centrifugal, 50, true, 0.2, 1, false, false, chillerMonthlyLoad); + let chillersW = new Module.ChillerInputV(); + chillersW.push_back(chiller1); + chillersW.push_back(chiller2); + let wcs = new Module.WaterCooledSystemInput(44, false, 0, true, 85, true, 3, 0); + let ti = new Module.TowerInput(1, 2, Module.FanMotorSpeedType.One, Module.TowerSizedBy.Tonnage, Module.CellFanType.AxialFan, 1, 70); + let pcW = new Module.ProcessCooling(systemOperationAnnualHours, dryBulbHourlyTemp, wetBulbHourlyTemp, chillersW, ti, wcs); + + logMessage('Chiller #1 Output: ', true); + let chillerOutput = pcW.calculateChillerEnergy(); + logMessage('Efficiency @ Load : ', true); + validateArrays(chillerOutput.efficiency.get(0), [0, 0.0681387, 0.0816758, 0.0889593, 0.0946793, 0.099774, 0.102496, 0.104067, 0.104464, 0.103633, 0.101], chillerBins); + logMessage('Hour @ Load : ', true); + validateArrays(chillerOutput.hours.get(0), [444, 437, 873, 880, 873, 873, 881, 873, 880, 873, 873], chillerBins); + logMessage('Power @ Load : ', true); + validateArrays(chillerOutput.power.get(0), [0, 0.136277, 0.326703, 0.533756, 0.757435, 0.99774, 1.22995, 1.45694, 1.67143, 1.86539, 2.02], chillerBins); + logMessage('Energy @ Load : ', true); + validateArrays(chillerOutput.energy.get(0), [0, 59.5532, 285.212, 469.70, 661.24, 871.027, 1083.59, 1271.91, 1470.86, 1628.49, 1763.46], chillerBins); + + logMessage('Chiller #2 Output: ', true); + chillerOutput = pcW.calculateChillerEnergy(); + logMessage('Efficiency @ Load : ', true); + validateArrays(chillerOutput.efficiency.get(1), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.202], chillerBins); + logMessage('Hour @ Load : ', true); + validateArrays(chillerOutput.hours.get(1), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8760], chillerBins); + logMessage('Power @ Load : ', true); + validateArrays(chillerOutput.power.get(1), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10.1], chillerBins); + logMessage('Energy @ Load : ', true); + validateArrays(chillerOutput.energy.get(1), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88476], chillerBins); + + logMessage('Pump # 1 Output: ', true); + let pumpInputW = new Module.PumpInput(true, 2.4, 0.75, 1, 0.85); + let chillerPumpingEnergyOutput = pcW.calculatePumpEnergy(pumpInputW); + logMessage('Pump Energy For Chiller # : ', true); + validateArrays(chillerPumpingEnergyOutput.chillerPumpingEnergy, [3698.16, 7841.95], pumpBins); + + logMessage('Pump # 2 Output: ', true); + pumpInputW = new Module.PumpInput(true, 3, 0.75, 2, 0.85); + chillerPumpingEnergyOutput = pcW.calculatePumpEnergy(pumpInputW); + logMessage('Pump Energy For Chiller # : ', true); + validateArrays(chillerPumpingEnergyOutput.chillerPumpingEnergy, [7396.32, 15683.9], pumpBins); + + logMessage('Tower Output: ', true); + let towerOutput = pcW.calculateTowerEnergy(); + logMessage('Hours @ Wetbulb Temp Bin : ', true); + validateArrays(towerOutput.hours, [2489, 1757, 1411, 2046, 1057, 0], towersBins); + logMessage('Energy @ Wetbulb Temp Bin : ', true); + validateArrays(towerOutput.energy, [0, 0, 0, 110.481, 1489.79, 0], towersBins); + + chiller1.delete(); + chiller2.delete(); + chillersW.delete(); + pumpInputW.delete(); + wcs.delete(); + ti.delete(); + pcW.delete(); + + logMessage('Test #' + testNum + ': Water Cooled Two Chiller System END', true); +} + +function waterCooledSystemReplaceRefrigerantTest(testNum){ + logMessage('Test #' + testNum + ': Water Cooled Chiller System, Measure Replace Refrigerant Type: ', true); + + let chiller1 = new Module.ChillerInput(Module.ChillerCompressorType.Centrifugal, 20, true, 0.1, 1, false, false, chillerMonthlyLoad, + true, Module.RefrigerantType.R_11, Module.RefrigerantType.R_123); + let chillersW = new Module.ChillerInputV(); + chillersW.push_back(chiller1); + let wcs = new Module.WaterCooledSystemInput(44, false, 0, true, 85, true, 3, 0); + let ti = new Module.TowerInput(1, 2, Module.FanMotorSpeedType.One, Module.TowerSizedBy.Tonnage, Module.CellFanType.AxialFan, 1, 20); + let pcW = new Module.ProcessCooling(systemOperationAnnualHours, dryBulbHourlyTemp, wetBulbHourlyTemp, chillersW, ti, wcs); + + logMessage('Chiller #1 Output: ', true); + let chillerOutput = pcW.calculateChillerEnergy(); + logMessage('Efficiency @ Load : ', true); + validateArrays(chillerOutput.efficiency.get(0), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.103244], chillerBins); + logMessage('Hour @ Load : ', true); + validateArrays(chillerOutput.hours.get(0), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8760], chillerBins); + logMessage('Power @ Load : ', true); + validateArrays(chillerOutput.power.get(0), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.06488], chillerBins); + logMessage('Energy @ Load : ', true); + validateArrays(chillerOutput.energy.get(0), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18088.38], chillerBins); + + logMessage('Pump # 1 Output: ', true); + let pumpInputW = new Module.PumpInput(true, 2.4, 0.75, 1, 0.85); + let chillerPumpingEnergyOutput = pcW.calculatePumpEnergy(pumpInputW); + logMessage('Pump Energy For Chiller # : ', true); + validateArrays(chillerPumpingEnergyOutput.chillerPumpingEnergy, [7841.95], pumpBins); + + logMessage('Pump # 2 Output: ', true); + pumpInputW = new Module.PumpInput(true, 3, 0.75, 1, 0.85); + chillerPumpingEnergyOutput = pcW.calculatePumpEnergy(pumpInputW); + logMessage('Pump Energy For Chiller # : ', true); + validateArrays(chillerPumpingEnergyOutput.chillerPumpingEnergy, [7841.95], pumpBins); + + logMessage('Tower Output: ', true); + let towerOutput = pcW.calculateTowerEnergy(); + logMessage('Hours @ Wetbulb Temp Bin : ', true); + validateArrays(towerOutput.hours, [2489, 1757, 1411, 2046, 1057, 0], towersBins); + logMessage('Energy @ Wetbulb Temp Bin : ', true); + validateArrays(towerOutput.energy, [0, 0, 0, 147.308, 785.52, 0], towersBins); + + chiller1.delete(); + chillersW.delete(); + pumpInputW.delete(); + wcs.delete(); + ti.delete(); + pcW.delete(); + + logMessage('Test #' + testNum + ': Water Cooled Chiller System, Measure Replace Refrigerant Type END', true); +} + +function waterCooledSystemCustomChillerTest(testNum){ + logMessage('Test #' + testNum + ': Water Cooled Chiller System, Custom Chiller: ', true); + + let loadPercent = new Module.DoubleVector(); + loadPercent.push_back(100); + loadPercent.push_back(75); + loadPercent.push_back(50); + loadPercent.push_back(25); + let loads = new Module.DoubleVector(); + loads.push_back(1.17); + loads.push_back(0.9768744); + loads.push_back(0.8943772); + loads.push_back(1.109825); + + let chiller1 = new Module.ChillerInput(Module.ChillerCompressorType.Centrifugal, 100, true, 1.17, 1, false, false, chillerMonthlyLoad, + loadPercent, loads); + let chillersW = new Module.ChillerInputV(); + chillersW.push_back(chiller1); + let wcs = new Module.WaterCooledSystemInput(44, false, 0, true, 85, true, 3, 0); + let ti = new Module.TowerInput(1, 2, Module.FanMotorSpeedType.One, Module.TowerSizedBy.Tonnage, Module.CellFanType.AxialFan, 1, 100); + let pcW = new Module.ProcessCooling(systemOperationAnnualHours, dryBulbHourlyTemp, wetBulbHourlyTemp, chillersW, ti, wcs); + + logMessage('Chiller #1 Output: ', true); + let chillerOutput = pcW.calculateChillerEnergy(); + logMessage('Efficiency @ Load : ', true); + validateArrays(chillerOutput.efficiency.get(0), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.1817], chillerBins); + logMessage('Hour @ Load : ', true); + validateArrays(chillerOutput.hours.get(0), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8760], chillerBins); + logMessage('Power @ Load : ', true); + validateArrays(chillerOutput.power.get(0), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118.17], chillerBins); + logMessage('Energy @ Load : ', true); + validateArrays(chillerOutput.energy.get(0), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1035169.2], chillerBins); + + logMessage('Pump # 1 Output: ', true); + let pumpInputW = new Module.PumpInput(true, 2.4, 0.75, 1, 0.85); + let chillerPumpingEnergyOutput = pcW.calculatePumpEnergy(pumpInputW); + logMessage('Pump Energy For Chiller # : ', true); + validateArrays(chillerPumpingEnergyOutput.chillerPumpingEnergy, [7841.95], pumpBins); + + logMessage('Pump # 2 Output: ', true); + pumpInputW = new Module.PumpInput(true, 3, 0.75, 1, 0.85); + chillerPumpingEnergyOutput = pcW.calculatePumpEnergy(pumpInputW); + logMessage('Pump Energy For Chiller # : ', true); + validateArrays(chillerPumpingEnergyOutput.chillerPumpingEnergy, [7841.95], pumpBins); + + logMessage('Tower Output: ', true); + let towerOutput = pcW.calculateTowerEnergy(); + logMessage('Hours @ Wetbulb Temp Bin : ', true); + validateArrays(towerOutput.hours, [2489, 1757, 1411, 2046, 1057, 0], towersBins); + logMessage('Energy @ Wetbulb Temp Bin : ', true); + validateArrays(towerOutput.energy, [0, 0, 0, 4963.57, 5051.46, 0], towersBins); + + chiller1.delete(); + chillersW.delete(); + pumpInputW.delete(); + wcs.delete(); + ti.delete(); + pcW.delete(); + + logMessage('Test #' + testNum + ': Water Cooled Chiller System, Custom Chiller END', true); +} + +function waterCooledSystemCustomChillerReplaceRefrigTest(testNum){ + logMessage('Test #' + testNum + ': Water Cooled Chiller System, Custom Chiller With Measure Replace Refrigerant Type : ', true); + + let loadPercent = new Module.DoubleVector(); + loadPercent.push_back(100); + loadPercent.push_back(75); + loadPercent.push_back(50); + loadPercent.push_back(25); + let loads = new Module.DoubleVector(); + loads.push_back(1.17); + loads.push_back(0.9768744); + loads.push_back(0.8943772); + loads.push_back(1.109825); + + let chiller1 = new Module.ChillerInput(Module.ChillerCompressorType.Centrifugal, 100, true, 1.17, 1, false, false, chillerMonthlyLoad, + loadPercent, loads, Module.RefrigerantType.R_11, Module.RefrigerantType.R_123); + let chillersW = new Module.ChillerInputV(); + chillersW.push_back(chiller1); + let wcs = new Module.WaterCooledSystemInput(44, false, 0, true, 85, true, 3, 0); + let ti = new Module.TowerInput(1, 2, Module.FanMotorSpeedType.One, Module.TowerSizedBy.Tonnage, Module.CellFanType.AxialFan, 1, 100); + let pcW = new Module.ProcessCooling(systemOperationAnnualHours, dryBulbHourlyTemp, wetBulbHourlyTemp, chillersW, ti, wcs); + + logMessage('Chiller #1 Output: ', true); + let chillerOutput = pcW.calculateChillerEnergy(); + logMessage('Efficiency @ Load : ', true); + validateArrays(chillerOutput.efficiency.get(0), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.21], chillerBins); + logMessage('Hour @ Load : ', true); + validateArrays(chillerOutput.hours.get(0), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8760], chillerBins); + logMessage('Power @ Load : ', true); + validateArrays(chillerOutput.power.get(0), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120.8], chillerBins); + logMessage('Energy @ Load : ', true); + validateArrays(chillerOutput.energy.get(0), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1058170.33], chillerBins); + + logMessage('Pump # 1 Output: ', true); + let pumpInputW = new Module.PumpInput(true, 2.4, 0.75, 1, 0.85); + let chillerPumpingEnergyOutput = pcW.calculatePumpEnergy(pumpInputW); + logMessage('Pump Energy For Chiller # : ', true); + validateArrays(chillerPumpingEnergyOutput.chillerPumpingEnergy, [7841.95], pumpBins); + + logMessage('Pump # 2 Output: ', true); + pumpInputW = new Module.PumpInput(true, 3, 0.75, 1, 0.85); + chillerPumpingEnergyOutput = pcW.calculatePumpEnergy(pumpInputW); + logMessage('Pump Energy For Chiller # : ', true); + validateArrays(chillerPumpingEnergyOutput.chillerPumpingEnergy, [7841.95], pumpBins); + + logMessage('Tower Output: ', true); + let towerOutput = pcW.calculateTowerEnergy(); + logMessage('Hours @ Wetbulb Temp Bin : ', true); + validateArrays(towerOutput.hours, [2489, 1757, 1411, 2046, 1057, 0], towersBins); + logMessage('Energy @ Wetbulb Temp Bin : ', true); + validateArrays(towerOutput.energy, [0, 0, 0, 5088.52, 5072.27, 0], towersBins); + + chiller1.delete(); + chillersW.delete(); + pumpInputW.delete(); + wcs.delete(); + ti.delete(); + pcW.delete(); + + logMessage('Test #' + testNum + ': Water Cooled Chiller System, Custom Chiller With Measure Replace Refrigerant Type : ', true); +} + +function airCooledSystemWithARIScheduleTest(testNum) { + logMessage('Test #' + testNum + ': Air Cooled Single Chiller System With ARI Schedule: ', true); + + let chiller = new Module.ChillerInput(Module.ChillerCompressorType.Reciprocating, 25, true, 0.1, 1, false, true, chillerMonthlyLoad); + let chillersA = new Module.ChillerInputV(); + chillersA.push_back(chiller); + let acs = new Module.AirCooledSystemInput(44, 80, Module.ACSourceLocation.Outside, 70, 5); + let pcA = new Module.ProcessCooling(systemOperationAnnualHours, dryBulbHourlyTemp, wetBulbHourlyTemp, chillersA, acs); + + logMessage('Chiller #1 Output: ', true); + let chillerOutput = pcA.calculateChillerEnergy(); + logMessage('Efficiency @ Load : ', true); + validateArrays(chillerOutput.efficiency.get(0), [0, 0, 0.0732095, 0.0705646, 0.0674898, 0.0648762, 0.0633242, 0.0625503, 0.061088, 0.0605642, 0.0618695], chillerBins); + logMessage('Hour @ Load : ', true); + validateArrays(chillerOutput.hours.get(0), [0, 0, 95, 437, 1138, 2016, 2273, 1670, 790, 258, 83], chillerBins); + logMessage('Power @ Load : ', true); + validateArrays(chillerOutput.power.get(0), [0, 0, 0.366048, 0.529234, 0.674898, 0.810952, 0.949863, 1.09463, 1.22176, 1.36269, 1.54674], chillerBins); + logMessage('Energy @ Load : ', true); + validateArrays(chillerOutput.energy.get(0), [0, 0, 34.7745, 231.275, 768.033, 1634.88, 2159.04, 1828.03, 965.191, 351.5749, 128.379], chillerBins); + + logMessage('Pump #1 Output: ', true); + let pumpInputA = new Module.PumpInput(true, 2.4, 0.75, 1, 0.85); + let chillerPumpingEnergyOutput = pcA.calculatePumpEnergy(pumpInputA); + logMessage('Pump Energy For Chiller # : ', true); + validateArrays(chillerPumpingEnergyOutput.chillerPumpingEnergy, [3298.22], pumpBins); + + chiller.delete(); + chillersA.delete(); + pumpInputA.delete(); + acs.delete(); + pcA.delete(); + + logMessage('Test #' + testNum + ': Air Cooled Single Chiller System With ARI Schedule END', true); +} + +let testNum = 1; +initTestData(); +airCooledSystemTest(testNum++); +waterCooledSystemTest(testNum++); +waterCooledSystemReplaceRefrigerantTest(testNum++); +waterCooledSystemCustomChillerTest(testNum++); +waterCooledSystemCustomChillerReplaceRefrigTest(testNum++); +airCooledSystemWithARIScheduleTest(testNum++); + +systemOperationAnnualHours.delete(); +dryBulbHourlyTemp.delete(); +wetBulbHourlyTemp.delete(); +chillerMonthlyLoad.delete(); +chillerMonthlyLoadVarying.delete(); + +logMessage('Process Cooling Tests END', true);