예제 #1
0
        public void ChangeUnits(Units units)
        {
            Units = units;

            DailyData.ForEach(x => x.ChangeUnits(Units));
            HourlyData.ForEach(x => x.ChangeUnits(Units));
        }
예제 #2
0
        public override CalculationResult CalculateEmission(DateTime effectiveDate, DailyData dailyData,
                                                            PaperData entry)
        {
            var units     = (decimal)dailyData.UnitsPerDay;
            var paperType = (PaperType)entry.PaperType;
            var paperUom  = (PaperUom)entry.PaperUom;

            if (((paperType == PaperType.MondiA3) ||
                 (paperType == PaperType.SappiA3)) &&
                (paperUom == PaperUom.Reams))
            {
                units = units * 2;
            }

            if (paperUom == PaperUom.Reams)
            {
                units = units / ReamsPerTonne;
            }

            if ((paperType == PaperType.MondiA3) ||
                (paperType == PaperType.MondiA4))
            {
                var emissions       = MondiEmissions(units, effectiveDate);
                var calculationDate = Context.CalculationDateForFactorId(PaperFactors.MondiA4Direct);
                return(new CalculationResult
                {
                    CalculationDate = calculationDate,
                    ActivityGroupId = PaperActivityId.MondiId,
                    Emissions = emissions
                });
            }
            if ((paperType == PaperType.SappiA3) ||
                (paperType == PaperType.SappiA4))
            {
                var emissions       = SappiEmissions(units, effectiveDate);
                var calculationDate = Context.CalculationDateForFactorId(PaperFactors.SappiA4Direct);
                return(new CalculationResult
                {
                    CalculationDate = calculationDate,
                    ActivityGroupId = PaperActivityId.SappiId,
                    Emissions = emissions
                });
            }
            if (entry.PaperType == PaperType.PolicyPaper)
            {
                var mondiQuantity   = units * PolicyPaperMondiToSappiRatio;
                var mondiEmissions  = MondiEmissions(mondiQuantity, effectiveDate);
                var sappiQuantity   = units * (1 - PolicyPaperMondiToSappiRatio);
                var sappiEmissions  = SappiEmissions(sappiQuantity, effectiveDate);
                var emissions       = sappiEmissions + mondiEmissions;
                var calculationDate = Context.CalculationDateForFactorId(PaperFactors.MondiA4Direct);
                return(new CalculationResult
                {
                    CalculationDate = calculationDate,
                    ActivityGroupId = PaperActivityId.PolicyId,
                    Emissions = emissions
                });
            }
            throw new InvalidDataException("entry.PaperType");
        }
예제 #3
0
        public void saveWeatherSummary(DailyData dailyData)
        {
            WeatherSummary weatherSummary = new WeatherSummary();
            int            humidityAvg    = 0;
            int            humidityHigh   = 0;
            int            humidityLow    = 0;
            int            cont           = 0;
            DateTime       date           = DateTime.MinValue;

            foreach (Observation item in dailyData.observations)
            {
                humidityAvg  = humidityAvg + item.humidityHigh;
                humidityHigh = humidityHigh + item.humidityHigh;
                humidityLow  = humidityLow + item.humidityLow;
                date         = item.obsTimeUtc;
                cont++;
            }
            weatherSummary.humidityAvg  = humidityAvg / cont;
            weatherSummary.humidityHigh = humidityHigh / cont;
            weatherSummary.humidityLow  = humidityLow / cont;
            weatherSummary.obsTimeUtc   = date;
            dbase.WeatherSummaries.Add(weatherSummary);
            Response res = new Response();

            res = DbHelper.Save(dbase);
        }
예제 #4
0
        public void ChangeLanguage(Language language)
        {
            Language = language;

            DailyData.ForEach(x => x.ChangeLanguage(Language));
            HourlyData.ForEach(x => x.ChangeLanguage(Language));
        }
예제 #5
0
        public void ProcesarDescarga()
        {
            string res = consume.DownloadData();

            DailyData = serialization.DesSerializar(res);
            db.saveWeatherSummary(DailyData);
        }
예제 #6
0
        public DailyData DesSerializar(string json)
        {
            DailyData data = new DailyData();

            data = JsonConvert.DeserializeObject <DailyData>(json);
            return(data);
        }
예제 #7
0
    public void GoldListCallback(C2sSprotoType.c_gold.response resp)
    {
        if (pop != null)
        {
            Debug.Log("resp.exercise_level" + resp.c_gold_level + "resp.lefttime" + resp.lefttime);
            goldLevel = (int)resp.c_gold_level;
            List <DailyData> list = new List <DailyData>();
            DailyData        d1   = GameShared.Instance.GetDailyData(4);
            d1.daily_type = DailyData.DailyType.Glod;
            d1.dialy_sub  = DailyData.DailySub.Easy;
            List <GameShared.StrData> strs1 = GameShared.Instance.GetStrData(d1.rewared);
            d1.getNum = strs1[0].num + (d1.level_up * d1.level_rewared);
            list.Add(d1);

            DailyData d2 = GameShared.Instance.GetDailyData(5);
            d2.daily_type = DailyData.DailyType.Glod;
            d2.dialy_sub  = DailyData.DailySub.Normal;
            List <GameShared.StrData> strs2 = GameShared.Instance.GetStrData(d2.rewared);
            d2.getNum = strs2[0].num + (d2.level_up * d2.level_rewared);
            list.Add(d2);

            DailyData d3 = GameShared.Instance.GetDailyData(6);
            d3.daily_type = DailyData.DailyType.Glod;
            d3.dialy_sub  = DailyData.DailySub.Hard;
            List <GameShared.StrData> strs3 = GameShared.Instance.GetStrData(d3.rewared);
            d3.getNum = strs3[0].num + (d3.level_up * d3.level_rewared);
            list.Add(d3);

            pop.SetGold(list);
            pop.goldBtn.isEnabled = resp.ifc_gold;
            DateTime d = DateTime.Now.AddSeconds(resp.lefttime);
            pop.SetGoldTime(d);
            pop.goldlevel.text = goldLevel.ToString();
        }
    }
예제 #8
0
        public async Task CallHelperGetChartData(DailyData data,
                                                 int dataIdx, int predDayPos, string realStopDate, string endDate, bool bManual, bool bAnimation)
        {
            objRef = DotNetObjectReference.Create(data);

            await jsRuntime.InvokeAsync <string>(
                "renderChart0", objRef, dataIdx, predDayPos, realStopDate, endDate, bManual, bAnimation);
        }
예제 #9
0
        public ActionResult DeleteConfirmed(int id)
        {
            DailyData dailyData = db.DailyData.Find(id);

            db.DailyData.Remove(dailyData);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
예제 #10
0
        public override CalculationResult CalculateEmission(DateTime effectiveDate, DailyData dailyData, AirTravelData entry)
        {
            var distance    = (decimal)dailyData.UnitsPerDay;
            var travelClass = (TravelClass)entry.TravelClass;
            var service     = new AirTravelCalculationService(Context);

            return(service.CalculateEmission(effectiveDate, distance, travelClass, false));
        }
예제 #11
0
    private void LoadData()
    {
        string str  = "";
        string path = "./data.json";

        str       = File.ReadAllText(path);
        dailyData = JsonConvert.DeserializeObject <DailyData>(str);
    }
예제 #12
0
        // importPrice->priceData
        private static void AddImportPrice(databases.importDS.importPriceDataTable importPriceTbl,
                                           DailyData dailyPrice, databases.baseDS.priceDataDataTable priceDataTbl)
        {
            databases.baseDS.priceDataSumRow dailyPriceRow;
            databases.baseDS.priceDataRow    priceDataRow;
            decimal volume = 0;

            for (int idx = 0; idx < importPriceTbl.Count; idx++)
            {
                //Invalid price, ignore
                if (importPriceTbl[idx].closePrice <= 0)
                {
                    continue;
                }

                volume = importPriceTbl[idx].volume;
                // If this is total volume then minus the last volume to get the real volume in the period
                if (importPriceTbl[idx].isTotalVolume)
                {
                    dailyPriceRow = dailyPrice.GetData(importPriceTbl[idx]);
                    if (dailyPriceRow != null)
                    {
                        volume -= dailyPriceRow.volume;
                    }
                    if (volume <= 0)
                    {
                        continue;
                    }
                }

                priceDataRow = priceDataTbl.NewpriceDataRow();
                databases.AppLibs.InitData(priceDataRow);
                priceDataRow.onDate     = importPriceTbl[idx].onDate;
                priceDataRow.stockCode  = importPriceTbl[idx].stockCode;
                priceDataRow.closePrice = importPriceTbl[idx].closePrice;
                priceDataRow.openPrice  = importPriceTbl[idx].closePrice;
                priceDataRow.highPrice  = importPriceTbl[idx].closePrice;
                priceDataRow.lowPrice   = importPriceTbl[idx].closePrice;
                priceDataRow.volume     = volume;
                //Fix other invalid price
                if (priceDataRow.highPrice <= 0)
                {
                    priceDataRow.highPrice = priceDataRow.closePrice;
                }
                if (priceDataRow.lowPrice <= 0)
                {
                    priceDataRow.highPrice = priceDataRow.lowPrice;
                }
                if (priceDataRow.openPrice <= 0)
                {
                    priceDataRow.highPrice = priceDataRow.openPrice;
                }
                priceDataTbl.AddpriceDataRow(priceDataRow);

                //Update the last row
                dailyPrice.UpdateData(importPriceTbl[idx]);
            }
        }
        public ActionResult weeklySalesStats()
        {
            int id = 1;

            // LINQ
            DailyData dailyData = db.DailyData.Find(id);

            return(View());
        }
        public override CalculationResult CalculateEmission(DateTime effectiveDate, DailyData dailyData, CourierRouteData entry)
        {
            var distance    = (decimal)dailyData.UnitsPerDay;
            var serviceType = (ServiceType)entry.ServiceType;
            var chargeMass  = (decimal)entry.ChargeMass;
            var service     = new CourierCalculationService(Context);

            return(service.CalculateEmission(effectiveDate, distance, serviceType, chargeMass, entry.Reversal));
        }
예제 #15
0
 public ActionResult Edit([Bind(Include = "DailyDataId,Date,WorkingSDC,Appointments,Presentations,SuccessfulPresentations,Attendance,Members,NinthKyus,Classes,EquipmentSales,Interviews")] DailyData dailyData)
 {
     if (ModelState.IsValid)
     {
         db.Entry(dailyData).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(dailyData));
 }
예제 #16
0
        public void MustGetTheCorrectFactorIdForEachCarGroupBillType()
        {
            //Arrange
            IDictionary <CarGroupBill, Guid> carGroupBillMapping =
                new SortedDictionary <CarGroupBill, Guid>
            {
                { CarGroupBill.A, CarbonKnown.DAL.Models.Constants.Factors.CarGroupBill.A_Economy_1_4 },
                { CarGroupBill.B, CarbonKnown.DAL.Models.Constants.Factors.CarGroupBill.B_Compact_1_4_2_l_Petrol },
                { CarGroupBill.C, CarbonKnown.DAL.Models.Constants.Factors.CarGroupBill.C_Intermediate_1_6_l_Petrol },
                { CarGroupBill.D, CarbonKnown.DAL.Models.Constants.Factors.CarGroupBill.D_Intermediate_1_6_l_Petrol },
                { CarGroupBill.E, CarbonKnown.DAL.Models.Constants.Factors.CarGroupBill.E_Standard_2_0_2_4_l_Petrol },
                { CarGroupBill.F, CarbonKnown.DAL.Models.Constants.Factors.CarGroupBill.F_Full_Size_1_8_2_l_Petrol },
                { CarGroupBill.G, CarbonKnown.DAL.Models.Constants.Factors.CarGroupBill.G_Premium_1_8_2_l_Petrol },
                { CarGroupBill.H, CarbonKnown.DAL.Models.Constants.Factors.CarGroupBill.H_Hybrid_HYB },
                { CarGroupBill.I, CarbonKnown.DAL.Models.Constants.Factors.CarGroupBill.I_Compact_Petrol },
                { CarGroupBill.J, CarbonKnown.DAL.Models.Constants.Factors.CarGroupBill.J_Luxury_2_3_2_5_l_Petrol },
                { CarGroupBill.K, CarbonKnown.DAL.Models.Constants.Factors.CarGroupBill.K_Speciality_SUV_2_4_2_5_l_Petrol },
                { CarGroupBill.L, CarbonKnown.DAL.Models.Constants.Factors.CarGroupBill.L_Speciality_Leisure_4X4_3_l },
                { CarGroupBill.M, CarbonKnown.DAL.Models.Constants.Factors.CarGroupBill.M_Economy_1_1_1_4_Petrol },
                { CarGroupBill.N, CarbonKnown.DAL.Models.Constants.Factors.CarGroupBill.N_Speciality_People_Carrier },
                { CarGroupBill.O, CarbonKnown.DAL.Models.Constants.Factors.CarGroupBill.O_Full_Size_1_8_2_l_Petrol },
                { CarGroupBill.P, CarbonKnown.DAL.Models.Constants.Factors.CarGroupBill.P_Full_Size_1_4_l_Petrol },
            };
            var      calculations = new Dictionary <CarGroupBill, Mock <ICalculationDataContext> >();
            DateTime?currentDate  = DateTime.Now;
            var      dailyData    = new DailyData {
                UnitsPerDay = 1
            };

            //Act
            foreach (var keyValue in carGroupBillMapping)
            {
                var mockContext = new Mock <ICalculationDataContext>();
                var sut         = new CarHireCalculation(mockContext.Object);
                var entry       = new CarHireData {
                    CarGroupBill = keyValue.Key
                };
                mockContext
                .Setup(context => context.FactorValue(It.IsAny <DateTime>(), It.IsAny <Guid>()))
                .Returns(1);
                sut.CalculateEmission(currentDate.Value, dailyData, entry);
                calculations.Add(keyValue.Key, mockContext);
            }

            //Assert
            foreach (var keyValue in carGroupBillMapping)
            {
                var mockContext = calculations[keyValue.Key];
                mockContext
                .Verify(context => context.FactorValue(
                            It.Is <DateTime>(d => d == currentDate),
                            It.Is <Guid>(g => g == keyValue.Value)), Times.Once);
            }
        }
예제 #17
0
        private DailyData ConvertDataReaderIntoModel(MySqlDataReader dr)
        {
            DailyData obj = new DailyData();

            obj.id   = Convert.ToInt32(dr["Id"]);
            obj.name = Convert.ToString(dr["CustomerName"]);
            obj.primaryContactNumber   = Convert.ToString(dr["CustomerPrimaryNumber"]);
            obj.secondaryContactNumber = Convert.ToString(dr["CustomerSecondaryNumber"]);
            obj.customerReaction       = Convert.ToInt32(dr["CustomerReaction"]);
            obj.assignTo = Convert.ToString(dr["AssignTo"]);
            return(obj);
        }
예제 #18
0
        public override CalculationResult CalculateEmission(DateTime effectiveDate, DailyData dailyData,
                                                            WaterData entry)
        {
            var calculationDate = DateTime.Today;

            return(new CalculationResult
            {
                CalculationDate = calculationDate,
                ActivityGroupId = Activity.WaterId,
                Emissions = 0
            });
        }
예제 #19
0
        public DailyData GetDailyData(string date)
        {
            DailyData dd = new DailyData(date, 0, 0, 0);
            List <ProvinceDailyData> pddlst = pddbll.selectByDate(date);

            foreach (ProvinceDailyData pdd in pddlst)
            {
                dd.confirmed += pdd.confirmed;
                dd.suspect   += pdd.suspect;
                dd.death     += pdd.death;
            }
            return(dd);
        }
예제 #20
0
        // GET: DailyDatas/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            DailyData dailyData = db.DailyData.Find(id);

            if (dailyData == null)
            {
                return(HttpNotFound());
            }
            return(View(dailyData));
        }
예제 #21
0
        public override CalculationResult CalculateEmission(DateTime effectiveDate, DailyData dailyData, CommutingData entry)
        {
            var commutingType   = (CommutingType)entry.CommutingType;
            var factorId        = ComutingFactors[commutingType];
            var factorValue     = GetFactorValue(factorId, effectiveDate);
            var emissions       = dailyData.UnitsPerDay * factorValue;
            var calculationDate = Context.CalculationDateForFactorId(factorId);

            return(new CalculationResult
            {
                CalculationDate = calculationDate,
                ActivityGroupId = ComutingActivities[commutingType],
                Emissions = emissions
            });
        }
예제 #22
0
        public override CalculationResult CalculateEmission(DateTime effectiveDate, DailyData dailyData,
                                                            CarHireData entry)
        {
            var factorId        = FactorMapping[(CarGroupBill)entry.CarGroupBill];
            var factor          = GetFactorValue(factorId, effectiveDate);
            var emissions       = factor * dailyData.UnitsPerDay;
            var calculationDate = Context.CalculationDateForFactorId(factorId);

            return(new CalculationResult
            {
                CalculationDate = calculationDate,
                Emissions = emissions,
                ActivityGroupId = ActivityMapping[entry.CarGroupBill.Value]
            });
        }
예제 #23
0
        public App()
        {
            InitializeComponent();

            Data = new DailyData();

            Online_Db = new FirebaseDb();

            Device_AppDb_ = new Device_AppDb_Push("Reflections");

            MainPage = new NavigationPage(new HomeTabPage())
            {
                BarBackgroundColor = Constants.navBarColor
            };
        }
예제 #24
0
        public override CalculationResult CalculateEmission(DateTime effectiveDate, DailyData dailyData, ElectricityData entry)
        {
            var electricityType = (ElectricityType)entry.ElectricityType;
            var factorId        = FactorMapping[electricityType];
            var factorValue     = GetFactorValue(factorId, effectiveDate);
            var emissions       = dailyData.UnitsPerDay * factorValue;
            var calculationDate = Context.CalculationDateForFactorId(factorId);

            return(new CalculationResult
            {
                CalculationDate = calculationDate,
                ActivityGroupId = ActivityMapping[electricityType],
                Emissions = emissions
            });
        }
        public override CalculationResult CalculateEmission(DateTime effectiveDate, DailyData dailyData,
                                                            AccommodationData entry)
        {
            var factorValue     = GetFactorValue(CarbonKnown.DAL.Models.Constants.Factors.AccommodationId, effectiveDate);
            var emissions       = dailyData.UnitsPerDay * factorValue;
            var calculationDate =
                Context.CalculationDateForFactorId(CarbonKnown.DAL.Models.Constants.Factors.AccommodationId);

            return(new CalculationResult
            {
                CalculationDate = calculationDate,
                ActivityGroupId = Activity.HotelNightsId,
                Emissions = emissions
            });
        }
예제 #26
0
        public List <DailyData> getAllCustomerData()
        {
            string response = JsonConvert.SerializeObject(null);

            MySqlDataReader dr = CallDailyDataDetail_USP(response, OperationType.GET_All);

            List <DailyData> dailyData = new List <DailyData>();

            while (dr.Read())
            {
                DailyData singleData = ConvertDataReaderIntoModel(dr);
                dailyData.Add(singleData);
            }
            dr.Close();
            return(dailyData);
        }
        public override CalculationResult CalculateEmission(DateTime effectiveDate, DailyData dailyData, RefrigerantData entry)
        {
            var units           = (decimal)dailyData.UnitsPerDay;
            var refrigerantType = (RefrigerantType)entry.RefrigerantType;

            var factorId        = FactorMapping[refrigerantType];
            var factorValue     = GetFactorValue(factorId, effectiveDate);
            var emissions       = units * factorValue;
            var calculationDate = Context.CalculationDateForFactorId(factorId);

            return(new CalculationResult
            {
                CalculationDate = calculationDate,
                ActivityGroupId = ActivityMapping[refrigerantType],
                Emissions = emissions
            });
        }
예제 #28
0
        public override CalculationResult CalculateEmission(DateTime effectiveDate, DailyData dailyData, FuelData entry)
        {
            var units         = (decimal)dailyData.UnitsPerDay;
            var fuelType      = (FuelType)entry.FuelType;
            var unitOfMeasure = (UnitOfMeasure)entry.UOM;

            var factorId        = FactorMapping[fuelType][unitOfMeasure];
            var factorValue     = GetFactorValue(factorId, effectiveDate);
            var emissions       = units * factorValue;
            var calculationDate = Context.CalculationDateForFactorId(factorId);

            return(new CalculationResult
            {
                CalculationDate = calculationDate,
                ActivityGroupId = ActivityMapping[fuelType][unitOfMeasure],
                Emissions = emissions
            });
        }
예제 #29
0
        public IFourDaysData Clone()
        {
            var newHourlyData = new List <IHourlyData>();

            HourlyData.ForEach(item =>
            {
                newHourlyData.Add(item.Clone());
            });

            var newDailyData = new List <IDailyData>();

            DailyData.ForEach(item =>
            {
                newDailyData.Add(item.Clone());
            });

            return(new FourDaysForecast(newHourlyData, newDailyData));
        }
예제 #30
0
        /// <summary>
        /// This method is used to configure the strategy and is called once before any strategy method is called.
        /// </summary>
        protected override void Initialize()
        {
            CalculateOnBarClose = true;

            //zigzag
            zigZagHighSeries  = new DataSeries(this, MaximumBarsLookBack.Infinite);
            zigZagHighZigZags = new DataSeries(this, MaximumBarsLookBack.Infinite);
            zigZagLowSeries   = new DataSeries(this, MaximumBarsLookBack.Infinite);
            zigZagLowZigZags  = new DataSeries(this, MaximumBarsLookBack.Infinite);

            Add(PeriodType.Tick, 1);
            Add(PeriodType.Day, 1);

            historyData     = new HistoryData(SaveZigZagDaysOnHistory);
            dailyData       = new DailyData(Time[0]);
            zigZagDiapasone = new ZigZagDiapasone(5);
            onBarData       = new OnBarData(0);
            priceVolume     = new PriceVolume();
        }
예제 #31
0
        // importPrice->priceData
        private static void AddImportPrice(databases.importDS.importPriceDataTable importPriceTbl,
            DailyData dailyPrice, databases.baseDS.priceDataDataTable priceDataTbl)
        {
            databases.baseDS.priceDataSumRow dailyPriceRow;
            databases.baseDS.priceDataRow priceDataRow;
            decimal volume = 0;
            for (int idx = 0; idx < importPriceTbl.Count; idx++)
            {
                //Invalid price, ignore
                if (importPriceTbl[idx].closePrice <= 0) continue;

                volume = importPriceTbl[idx].volume;
                // If this is total volume then minus the last volume to get the real volume in the period
                if (importPriceTbl[idx].isTotalVolume)
                {
                    dailyPriceRow = dailyPrice.GetData(importPriceTbl[idx]);
                    if (dailyPriceRow != null)
                    {
                        volume -= dailyPriceRow.volume;
                    }
                    if (volume <= 0) continue;
                }

                priceDataRow = priceDataTbl.NewpriceDataRow();
                databases.AppLibs.InitData(priceDataRow);
                priceDataRow.onDate = importPriceTbl[idx].onDate;
                priceDataRow.stockCode = importPriceTbl[idx].stockCode;
                priceDataRow.closePrice = importPriceTbl[idx].closePrice;
                priceDataRow.openPrice = importPriceTbl[idx].closePrice;
                priceDataRow.highPrice = importPriceTbl[idx].closePrice;
                priceDataRow.lowPrice = importPriceTbl[idx].closePrice;
                priceDataRow.volume = volume;
                //Fix other invalid price
                if (priceDataRow.highPrice <= 0)  priceDataRow.highPrice = priceDataRow.closePrice;
                if (priceDataRow.lowPrice <= 0) priceDataRow.lowPrice = priceDataRow.closePrice;
                if (priceDataRow.openPrice <= 0) priceDataRow.openPrice = priceDataRow.closePrice;

                priceDataRow.lowPrice = Math.Min(priceDataRow.lowPrice, priceDataRow.closePrice);
                priceDataRow.lowPrice = Math.Min(priceDataRow.lowPrice, priceDataRow.openPrice);
                priceDataRow.lowPrice = Math.Min(priceDataRow.lowPrice, priceDataRow.highPrice);

                priceDataRow.highPrice = Math.Max(priceDataRow.highPrice, priceDataRow.closePrice);
                priceDataRow.highPrice = Math.Max(priceDataRow.highPrice, priceDataRow.openPrice);
                priceDataRow.highPrice = Math.Max(priceDataRow.highPrice,priceDataRow.lowPrice);

                priceDataTbl.AddpriceDataRow(priceDataRow);

                //Update the last row
                dailyPrice.UpdateData(importPriceTbl[idx]);
            }
        }