Skip to content

Commit 31e2e24

Browse files
author
Rory Barnes
committed
More updates to string formatting.
1 parent e039aa0 commit 31e2e24

31 files changed

+994
-978
lines changed

src/atmesc.c

+71-71
Large diffs are not rendered by default.

src/atmesc.h

+12-12
Original file line numberDiff line numberDiff line change
@@ -177,29 +177,29 @@ void InitializeOutputFunctionAtmEsc(OUTPUT *, int, int);
177177
void FinalizeOutputFunctionAtmEsc(OUTPUT *, int, int);
178178

179179
void WriteSurfaceWaterMass(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UNITS *,
180-
UPDATE *, int, double *, char[]);
180+
UPDATE *, int, double *, char**);
181181
void WriteOxygenMass(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UNITS *, UPDATE *,
182-
int, double *, char[]);
182+
int, double *, char**);
183183
void WriteOxygenMantleMass(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UNITS *,
184-
UPDATE *, int, double *, char[]);
184+
UPDATE *, int, double *, char**);
185185
void WriteEnvelopeMass(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UNITS *, UPDATE *,
186-
int, double *, char[]);
186+
int, double *, char**);
187187
void WriteRGLimit(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UNITS *, UPDATE *, int,
188-
double *, char[]);
188+
double *, char**);
189189
void WriteBondiRadius(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UNITS *, UPDATE *,
190-
int, double *, char[]);
190+
int, double *, char**);
191191
void WriteRocheRadius(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UNITS *, UPDATE *,
192-
int, double *, char[]);
192+
int, double *, char**);
193193
void WriteOxygenMixingRatio(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UNITS *,
194-
UPDATE *, int, double *, char[]);
194+
UPDATE *, int, double *, char**);
195195
void WriteOxygenEta(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UNITS *, UPDATE *,
196-
int, double *, char[]);
196+
int, double *, char**);
197197
void WriteAtmXAbsEffH2O(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UNITS *,
198-
UPDATE *, int, double *, char[]);
198+
UPDATE *, int, double *, char**);
199199
void WriteRRCriticalFlux(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UNITS *,
200-
UPDATE *, int, double *, char[]);
200+
UPDATE *, int, double *, char**);
201201
void WriteHEscapeRegime(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UNITS *,
202-
UPDATE *, int, double *, char[]);
202+
UPDATE *, int, double *, char**);
203203

204204
/* Logging Functions */
205205
void LogOptionsAtmEsc(CONTROL *, FILE *);

src/binary.c

+34-34
Original file line numberDiff line numberDiff line change
@@ -1018,20 +1018,20 @@ void VerifyHaltBinary(BODY *body, CONTROL *control, OPTIONS *options, int iBody,
10181018

10191019
void WriteFreeEccBinary(BODY *body, CONTROL *control, OUTPUT *output,
10201020
SYSTEM *system, UNITS *units, UPDATE *update, int iBody,
1021-
double *dTmp, char cUnit[]) {
1021+
double *dTmp, char **cUnit) {
10221022
// Note: Only makes sense for planets (iBodyType == 0)
10231023
if (body[iBody].iBodyType == 0) {
10241024
*dTmp = body[iBody].dFreeEcc;
10251025
} else {
10261026
*dTmp = -1;
10271027
}
10281028

1029-
fvFormattedString(&cUnit, "");
1029+
fvFormattedString(cUnit, "");
10301030
}
10311031

10321032
void WriteFreeIncBinary(BODY *body, CONTROL *control, OUTPUT *output,
10331033
SYSTEM *system, UNITS *units, UPDATE *update, int iBody,
1034-
double *dTmp, char cUnit[]) {
1034+
double *dTmp, char **cUnit) {
10351035
// Note: Only makes sense for planets (iBodyType == 0)
10361036
if (body[iBody].iBodyType == 0) {
10371037
*dTmp = body[iBody].dFreeInc;
@@ -1041,7 +1041,7 @@ void WriteFreeIncBinary(BODY *body, CONTROL *control, OUTPUT *output,
10411041

10421042
if (output->bDoNeg[iBody]) {
10431043
*dTmp *= output->dNeg;
1044-
fvFormattedString(&cUnit, output->cNeg);
1044+
fvFormattedString(cUnit, output->cNeg);
10451045
} else {
10461046
*dTmp /= fdUnitsAngle(units->iAngle);
10471047
fsUnitsAngle(units->iAngle, cUnit);
@@ -1051,7 +1051,7 @@ void WriteFreeIncBinary(BODY *body, CONTROL *control, OUTPUT *output,
10511051
/** Write the binary primary star radial position */
10521052
void WriteBinPriRBinary(BODY *body, CONTROL *control, OUTPUT *output,
10531053
SYSTEM *system, UNITS *units, UPDATE *update, int iBody,
1054-
double *dTmp, char cUnit[]) {
1054+
double *dTmp, char **cUnit) {
10551055

10561056
// Compute current binary true anomaly
10571057
double meanAnomaly = body[1].dMeanMotion * body[0].dAge + body[1].dLL13PhiAB;
@@ -1069,7 +1069,7 @@ void WriteBinPriRBinary(BODY *body, CONTROL *control, OUTPUT *output,
10691069
*dTmp = body[1].dMass * radius * dInvMass;
10701070
if (output->bDoNeg[iBody]) {
10711071
*dTmp *= output->dNeg;
1072-
fvFormattedString(&cUnit, output->cNeg);
1072+
fvFormattedString(cUnit, output->cNeg);
10731073
} else {
10741074
*dTmp /= fdUnitsLength(units->iLength);
10751075
fsUnitsLength(units->iLength, cUnit);
@@ -1079,7 +1079,7 @@ void WriteBinPriRBinary(BODY *body, CONTROL *control, OUTPUT *output,
10791079
/** Write the binary secondary star radial position */
10801080
void WriteBinSecRBinary(BODY *body, CONTROL *control, OUTPUT *output,
10811081
SYSTEM *system, UNITS *units, UPDATE *update, int iBody,
1082-
double *dTmp, char cUnit[]) {
1082+
double *dTmp, char **cUnit) {
10831083

10841084
// Compute current binary true anomaly
10851085
double meanAnomaly = body[1].dMeanMotion * body[1].dAge + body[1].dLL13PhiAB;
@@ -1097,7 +1097,7 @@ void WriteBinSecRBinary(BODY *body, CONTROL *control, OUTPUT *output,
10971097
*dTmp = body[0].dMass * radius * dInvMass;
10981098
if (output->bDoNeg[iBody]) {
10991099
*dTmp *= output->dNeg;
1100-
fvFormattedString(&cUnit, output->cNeg);
1100+
fvFormattedString(cUnit, output->cNeg);
11011101
} else {
11021102
*dTmp /= fdUnitsLength(units->iLength);
11031103
fsUnitsLength(units->iLength, cUnit);
@@ -1107,7 +1107,7 @@ void WriteBinSecRBinary(BODY *body, CONTROL *control, OUTPUT *output,
11071107

11081108
void WriteBinPriPhiBinary(BODY *body, CONTROL *control, OUTPUT *output,
11091109
SYSTEM *system, UNITS *units, UPDATE *update,
1110-
int iBody, double *dTmp, char cUnit[]) {
1110+
int iBody, double *dTmp, char **cUnit) {
11111111

11121112
// Compute current binary true anomaly
11131113
double meanAnomaly = body[1].dMeanMotion * body[0].dAge + body[1].dLL13PhiAB;
@@ -1117,7 +1117,7 @@ void WriteBinPriPhiBinary(BODY *body, CONTROL *control, OUTPUT *output,
11171117
*dTmp = fndEccToTrue(eccAnomaly, body[1].dEcc);
11181118
if (output->bDoNeg[iBody]) {
11191119
*dTmp *= output->dNeg;
1120-
fvFormattedString(&cUnit, output->cNeg);
1120+
fvFormattedString(cUnit, output->cNeg);
11211121
} else {
11221122
*dTmp /= fdUnitsAngle(units->iAngle);
11231123
fsUnitsAngle(units->iAngle, cUnit);
@@ -1127,7 +1127,7 @@ void WriteBinPriPhiBinary(BODY *body, CONTROL *control, OUTPUT *output,
11271127

11281128
void WriteBinSecPhiBinary(BODY *body, CONTROL *control, OUTPUT *output,
11291129
SYSTEM *system, UNITS *units, UPDATE *update,
1130-
int iBody, double *dTmp, char cUnit[]) {
1130+
int iBody, double *dTmp, char **cUnit) {
11311131

11321132
// Compute current binary true anomaly
11331133
double meanAnomaly = body[1].dMeanMotion * body[1].dAge + body[1].dLL13PhiAB;
@@ -1138,7 +1138,7 @@ void WriteBinSecPhiBinary(BODY *body, CONTROL *control, OUTPUT *output,
11381138
*dTmp = fndEccToTrue(eccAnomaly, body[1].dEcc) + PI;
11391139
if (output->bDoNeg[iBody]) {
11401140
*dTmp *= output->dNeg;
1141-
fvFormattedString(&cUnit, output->cNeg);
1141+
fvFormattedString(cUnit, output->cNeg);
11421142
} else {
11431143
*dTmp /= fdUnitsAngle(units->iAngle);
11441144
fsUnitsAngle(units->iAngle, cUnit);
@@ -1148,7 +1148,7 @@ void WriteBinSecPhiBinary(BODY *body, CONTROL *control, OUTPUT *output,
11481148

11491149
void WriteCBPPhiBinary(BODY *body, CONTROL *control, OUTPUT *output,
11501150
SYSTEM *system, UNITS *units, UPDATE *update, int iBody,
1151-
double *dTmp, char cUnit[]) {
1151+
double *dTmp, char **cUnit) {
11521152
if (body[iBody].iBodyType == 0) {
11531153
*dTmp = body[iBody].dCBPPhi;
11541154
} else {
@@ -1157,7 +1157,7 @@ void WriteCBPPhiBinary(BODY *body, CONTROL *control, OUTPUT *output,
11571157

11581158
if (output->bDoNeg[iBody]) {
11591159
*dTmp *= output->dNeg;
1160-
fvFormattedString(&cUnit, output->cNeg);
1160+
fvFormattedString(cUnit, output->cNeg);
11611161
} else {
11621162
*dTmp /= fdUnitsAngle(units->iAngle);
11631163
fsUnitsAngle(units->iAngle, cUnit);
@@ -1166,12 +1166,12 @@ void WriteCBPPhiBinary(BODY *body, CONTROL *control, OUTPUT *output,
11661166

11671167
void WriteCBPPhiDotBinary(BODY *body, CONTROL *control, OUTPUT *output,
11681168
SYSTEM *system, UNITS *units, UPDATE *update,
1169-
int iBody, double *dTmp, char cUnit[]) {
1169+
int iBody, double *dTmp, char **cUnit) {
11701170

11711171
*dTmp = body[iBody].dCBPPhiDot;
11721172
if (output->bDoNeg[iBody]) {
11731173
*dTmp *= output->dNeg;
1174-
fvFormattedString(&cUnit, output->cNeg);
1174+
fvFormattedString(cUnit, output->cNeg);
11751175
} else {
11761176
*dTmp *= fdUnitsTime(units->iTime);
11771177
fsUnitsRate(units->iTime, cUnit);
@@ -1180,7 +1180,7 @@ void WriteCBPPhiDotBinary(BODY *body, CONTROL *control, OUTPUT *output,
11801180

11811181
void WriteLL13N0Binary(BODY *body, CONTROL *control, OUTPUT *output,
11821182
SYSTEM *system, UNITS *units, UPDATE *update, int iBody,
1183-
double *dTmp, char cUnit[]) {
1183+
double *dTmp, char **cUnit) {
11841184
// Note: Only applies to planets (iBodyType == 0)
11851185
if (body[iBody].iBodyType == 0) {
11861186
*dTmp = body[iBody].dLL13N0;
@@ -1190,7 +1190,7 @@ void WriteLL13N0Binary(BODY *body, CONTROL *control, OUTPUT *output,
11901190

11911191
if (output->bDoNeg[iBody]) {
11921192
*dTmp *= output->dNeg;
1193-
fvFormattedString(&cUnit, output->cNeg);
1193+
fvFormattedString(cUnit, output->cNeg);
11941194
} else {
11951195
*dTmp *= fdUnitsTime(units->iTime);
11961196
fsUnitsTime(units->iTime, cUnit);
@@ -1200,7 +1200,7 @@ void WriteLL13N0Binary(BODY *body, CONTROL *control, OUTPUT *output,
12001200

12011201
void WriteLL13K0Binary(BODY *body, CONTROL *control, OUTPUT *output,
12021202
SYSTEM *system, UNITS *units, UPDATE *update, int iBody,
1203-
double *dTmp, char cUnit[]) {
1203+
double *dTmp, char **cUnit) {
12041204
// Note: Only applies to planets (iBodyType == 0)
12051205
if (body[iBody].iBodyType == 0) {
12061206
*dTmp = body[iBody].dLL13K0;
@@ -1210,7 +1210,7 @@ void WriteLL13K0Binary(BODY *body, CONTROL *control, OUTPUT *output,
12101210

12111211
if (output->bDoNeg[iBody]) {
12121212
*dTmp *= output->dNeg;
1213-
fvFormattedString(&cUnit, output->cNeg);
1213+
fvFormattedString(cUnit, output->cNeg);
12141214
} else {
12151215
*dTmp *= fdUnitsTime(units->iTime);
12161216
fsUnitsTime(units->iTime, cUnit);
@@ -1219,7 +1219,7 @@ void WriteLL13K0Binary(BODY *body, CONTROL *control, OUTPUT *output,
12191219

12201220
void WriteLL13V0Binary(BODY *body, CONTROL *control, OUTPUT *output,
12211221
SYSTEM *system, UNITS *units, UPDATE *update, int iBody,
1222-
double *dTmp, char cUnit[]) {
1222+
double *dTmp, char **cUnit) {
12231223
// Note: Only applies to planets (iBodyType == 0)
12241224
if (body[iBody].iBodyType == 0) {
12251225
*dTmp = body[iBody].dLL13V0;
@@ -1229,7 +1229,7 @@ void WriteLL13V0Binary(BODY *body, CONTROL *control, OUTPUT *output,
12291229

12301230
if (output->bDoNeg[iBody]) {
12311231
*dTmp *= output->dNeg;
1232-
fvFormattedString(&cUnit, output->cNeg);
1232+
fvFormattedString(cUnit, output->cNeg);
12331233
} else {
12341234
*dTmp *= fdUnitsTime(units->iTime);
12351235
fsUnitsTime(units->iTime, cUnit);
@@ -1239,12 +1239,12 @@ void WriteLL13V0Binary(BODY *body, CONTROL *control, OUTPUT *output,
12391239
/** Write the circumbinary planet orbital radius (CBPR) */
12401240
void WriteCBPRBinary(BODY *body, CONTROL *control, OUTPUT *output,
12411241
SYSTEM *system, UNITS *units, UPDATE *update, int iBody,
1242-
double *dTmp, char cUnit[]) {
1242+
double *dTmp, char **cUnit) {
12431243

12441244
*dTmp = body[iBody].dCBPR;
12451245
if (output->bDoNeg[iBody]) {
12461246
*dTmp *= output->dNeg;
1247-
fvFormattedString(&cUnit, output->cNeg);
1247+
fvFormattedString(cUnit, output->cNeg);
12481248
} else {
12491249
*dTmp /= fdUnitsLength(units->iLength);
12501250
fsUnitsLength(units->iLength, cUnit);
@@ -1254,12 +1254,12 @@ void WriteCBPRBinary(BODY *body, CONTROL *control, OUTPUT *output,
12541254
/** Write the circumbinary planet guiding radius (CBPR0) */
12551255
void WriteCBPR0Binary(BODY *body, CONTROL *control, OUTPUT *output,
12561256
SYSTEM *system, UNITS *units, UPDATE *update, int iBody,
1257-
double *dTmp, char cUnit[]) {
1257+
double *dTmp, char **cUnit) {
12581258

12591259
*dTmp = body[iBody].dR0;
12601260
if (output->bDoNeg[iBody]) {
12611261
*dTmp *= output->dNeg;
1262-
fvFormattedString(&cUnit, output->cNeg);
1262+
fvFormattedString(cUnit, output->cNeg);
12631263
} else {
12641264
*dTmp /= fdUnitsLength(units->iLength);
12651265
fsUnitsLength(units->iLength, cUnit);
@@ -1268,12 +1268,12 @@ void WriteCBPR0Binary(BODY *body, CONTROL *control, OUTPUT *output,
12681268

12691269
void WriteCBPZBinary(BODY *body, CONTROL *control, OUTPUT *output,
12701270
SYSTEM *system, UNITS *units, UPDATE *update, int iBody,
1271-
double *dTmp, char cUnit[]) {
1271+
double *dTmp, char **cUnit) {
12721272

12731273
*dTmp = body[iBody].dCBPZ;
12741274
if (output->bDoNeg[iBody]) {
12751275
*dTmp *= output->dNeg;
1276-
fvFormattedString(&cUnit, output->cNeg);
1276+
fvFormattedString(cUnit, output->cNeg);
12771277
} else {
12781278
*dTmp /= fdUnitsLength(units->iLength);
12791279
fsUnitsLength(units->iLength, cUnit);
@@ -1282,12 +1282,12 @@ void WriteCBPZBinary(BODY *body, CONTROL *control, OUTPUT *output,
12821282

12831283
void WriteCBPRDotBinary(BODY *body, CONTROL *control, OUTPUT *output,
12841284
SYSTEM *system, UNITS *units, UPDATE *update, int iBody,
1285-
double *dTmp, char cUnit[]) {
1285+
double *dTmp, char **cUnit) {
12861286

12871287
*dTmp = body[iBody].dCBPRDot;
12881288
if (output->bDoNeg[iBody]) {
12891289
*dTmp *= output->dNeg;
1290-
fvFormattedString(&cUnit, output->cNeg);
1290+
fvFormattedString(cUnit, output->cNeg);
12911291
} else {
12921292
*dTmp *= fdUnitsTime(units->iTime) / fdUnitsLength(units->iLength);
12931293
fsUnitsVel(units, cUnit);
@@ -1296,12 +1296,12 @@ void WriteCBPRDotBinary(BODY *body, CONTROL *control, OUTPUT *output,
12961296

12971297
void WriteCBPZDotBinary(BODY *body, CONTROL *control, OUTPUT *output,
12981298
SYSTEM *system, UNITS *units, UPDATE *update, int iBody,
1299-
double *dTmp, char cUnit[]) {
1299+
double *dTmp, char **cUnit) {
13001300

13011301
*dTmp = body[iBody].dCBPZDot;
13021302
if (output->bDoNeg[iBody]) {
13031303
*dTmp *= output->dNeg;
1304-
fvFormattedString(&cUnit, output->cNeg);
1304+
fvFormattedString(cUnit, output->cNeg);
13051305
} else {
13061306
*dTmp *= fdUnitsTime(units->iTime) / fdUnitsLength(units->iLength);
13071307
fsUnitsVel(units, cUnit);
@@ -1312,7 +1312,7 @@ void WriteCBPZDotBinary(BODY *body, CONTROL *control, OUTPUT *output,
13121312
orbit assuming P_bin << P_cbp */
13131313
void WriteCBPInsol(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system,
13141314
UNITS *units, UPDATE *update, int iBody, double *dTmp,
1315-
char cUnit[]) {
1315+
char **cUnit) {
13161316

13171317
// Make sure that this is a planet, if not, -1
13181318
if (iBody < 2 || body[iBody].iBodyType != 0) {
@@ -1322,7 +1322,7 @@ void WriteCBPInsol(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system,
13221322
}
13231323

13241324
// Always in units of insolation received by Earth
1325-
fvFormattedString(&cUnit, "F/F_Earth");
1325+
fvFormattedString(cUnit, "F/F_Earth");
13261326
}
13271327

13281328
void InitializeOutputBinary(OUTPUT *output, fnWriteOutput fnWrite[]) {

src/binary.h

+17-17
Original file line numberDiff line numberDiff line change
@@ -122,39 +122,39 @@ void InitializeOutputFunctionBinary(OUTPUT *, int, int);
122122
void InitializeOutputBinary(OUTPUT *, fnWriteOutput[]);
123123
void FinalizeOutputFunctionBinary(OUTPUT *, int, int);
124124
void WriteFreeEccBinary(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UNITS *,
125-
UPDATE *, int, double *, char[]);
125+
UPDATE *, int, double *, char**);
126126
void WriteFreeIncBinary(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UNITS *,
127-
UPDATE *, int, double *, char[]);
127+
UPDATE *, int, double *, char**);
128128
void WriteLL13N0Binary(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UNITS *, UPDATE *,
129-
int, double *, char[]);
129+
int, double *, char**);
130130
void WriteLL13K0Binary(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UNITS *, UPDATE *,
131-
int, double *, char[]);
131+
int, double *, char**);
132132
void WriteLL13V0Binary(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UNITS *, UPDATE *,
133-
int, double *, char[]);
133+
int, double *, char**);
134134
void WriteCBPRBinary(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UNITS *, UPDATE *,
135-
int, double *, char[]);
135+
int, double *, char**);
136136
void WriteCBPR0Binary(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UNITS *, UPDATE *,
137-
int, double *, char[]);
137+
int, double *, char**);
138138
void WriteBinPriRBinary(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UNITS *,
139-
UPDATE *, int, double *, char[]);
139+
UPDATE *, int, double *, char**);
140140
void WriteBinPriPhiBinary(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UNITS *,
141-
UPDATE *, int, double *, char[]);
141+
UPDATE *, int, double *, char**);
142142
void WriteBinSecRBinary(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UNITS *,
143-
UPDATE *, int, double *, char[]);
143+
UPDATE *, int, double *, char**);
144144
void WriteBinSecPhiBinary(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UNITS *,
145-
UPDATE *, int, double *, char[]);
145+
UPDATE *, int, double *, char**);
146146
void WriteCBPZBinary(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UNITS *, UPDATE *,
147-
int, double *, char[]);
147+
int, double *, char**);
148148
void WriteCBPZDotBinary(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UNITS *,
149-
UPDATE *, int, double *, char[]);
149+
UPDATE *, int, double *, char**);
150150
void WriteCBPPhiBinary(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UNITS *, UPDATE *,
151-
int, double *, char[]);
151+
int, double *, char**);
152152
void WriteCBPRDotBinary(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UNITS *,
153-
UPDATE *, int, double *, char[]);
153+
UPDATE *, int, double *, char**);
154154
void WriteCBPPhiDotBinary(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UNITS *,
155-
UPDATE *, int, double *, char[]);
155+
UPDATE *, int, double *, char**);
156156
void WriteCBPInsol(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UNITS *, UPDATE *,
157-
int, double *, char[]);
157+
int, double *, char**);
158158

159159
/* Logging Functions */
160160
void LogOptionsBinary(CONTROL *, FILE *);

0 commit comments

Comments
 (0)