From 0c2770b5b8257b927d2ecd0ceb4a820de5369a92 Mon Sep 17 00:00:00 2001 From: Chip Barnaby Date: Thu, 9 Oct 2025 17:09:09 -0400 Subject: [PATCH 01/11] Code out ANAME / DTANAME --- src/CNDTYPES.DEF | 5 +- src/CNFIELDS.DEF | 2 - src/CNRECS.DEF | 39 +- src/cgdebug.cpp | 2 +- src/cnausz.cpp | 2 +- src/cse.cpp | 10 +- src/cueval.cpp | 8 +- src/cueval.h | 4 +- src/cul.cpp | 8 +- src/cuprobe.cpp | 5 +- src/cvpak.cpp | 3 +- src/dhwcalc.cpp | 7 +- src/exman.cpp | 22 +- src/wfpak.cpp | 6 +- src/yacam.cpp | 13 +- test/ASHWAT1.cse | 2 +- test/ref-win32-msvc/ashwat1.rep | 347 +- test/ref-win32-msvc/wthr01.rep | 46 +- test/testdata.tdv | 8764 +++++++++++++++++++++++++++++++ test/wthr01.cse | 2 + 20 files changed, 9188 insertions(+), 109 deletions(-) create mode 100644 test/testdata.tdv diff --git a/src/CNDTYPES.DEF b/src/CNDTYPES.DEF index 349e07a97..1e7c75732 100644 --- a/src/CNDTYPES.DEF +++ b/src/CNDTYPES.DEF @@ -11,8 +11,8 @@ ??? UPDATE FOR CSE some done. dtypes.h #included in cnglob.h dttab.cpp data types table C source code - rcdef.exe some values derived from here (incl DTANAME, DTTI - 1-91) are compiled into rcdef: if changed, + rcdef.exe some values derived from here (incl DTTI, ) + are compiled into rcdef: if changed, run rcdef to produce dtypes.h, recompile & link same, run AGAIN for other files. @@ -94,7 +94,6 @@ VOIDP -- "void *" DOW -- "short" // day of week, sun=0 in tdpak (1 less than DOWCH) MONTH -- "short" // month, jan=1 in tdpak -ANAME -- "char[64]" // name string for use in RATs: IDATE -- "struct {SI year;SI month;SI mday;SI wday;}" ITIME -- "struct {SI hour;SI min;SI sec;}" DOY -- "short" diff --git a/src/CNFIELDS.DEF b/src/CNFIELDS.DEF index e5971c72c..161e3b7a9 100644 --- a/src/CNFIELDS.DEF +++ b/src/CNFIELDS.DEF @@ -56,8 +56,6 @@ DBL DBL LMNONE UNNONE IDATE IDATE LMNONE UNNONE //----- Types required re RATs (Record Array Tables): -// string for use in RATs: -ANAME ANAME LMNONE UNNONE // for reference (subscript) to a RAT or table: TI TI LMGEZ UNNONE // diff --git a/src/CNRECS.DEF b/src/CNRECS.DEF index daec9e0e4..9ec67e97b 100644 --- a/src/CNRECS.DEF +++ b/src/CNRECS.DEF @@ -833,7 +833,7 @@ RECORD WFILE "weatherFile" *RAT // weather file info, one static instance "Wfile // TDV file header info *f WFLOC wf_TDVFileTimeStamp // timestamp string - *f ANAME wf_TDVFileTitle // title string (identifies file CZ, fuel, vintage, ) + *f CULSTR wf_TDVFileTitle // title string (identifies file CZ, fuel, vintage, ) //internal *r *hide SI hdrBytes // # header bytes before first record (used in wfread for file positioning) @@ -1940,10 +1940,9 @@ RECORD AUSZ "autoSizing sub" *SUBSTRUCT // AUTOSIZING VARIABLES substructure for // *declare "int az_Active() const { return az_active && az_px; }" idea //---setup time members - *declare "static ANAME az_context;" // context text for verbose screen msgs - // (use ANAME has handy known-size char[]) - *r BOO az_active // TRUE iff autoSizing this member - *declare "char az_what[ sizeof(ANAME) + 24];" // ID of this AUSZ (e.g. "AH[ah1] cc") + *declare "static char az_context[];" // context text for verbose screen msgs + *r BOO az_active // TRUE iff autoSizing this member + *declare "char az_what[ 100];" // ID of this AUSZ (e.g. "AH[ah1] cc") //---runtime // set at initialization @@ -4664,8 +4663,8 @@ RECORD DHWHEATER "DHWHeater" *RAT // input / runtime DHW heater *i WHTYPECH wh_type; // heater type // C_WHTYPECH_STRGSML, _STRGLRG, _INSTSML, _INSTLRG, // _INSTUEF, _BUILTUP - *i ANAME wh_desc; // probe-able description text - *declare "virtual const char* GetDescription( int /*options*/=0) { return wh_desc; }" + *i CULSTR wh_desc; // probe-able description text + *declare "virtual const char* GetDescription( int /*options*/=0) { return wh_desc.CStr(); }" *r INT wh_fcn; // function of this DHWHEATER per whfcnXXX enum *declare "enum { whfcnUNKNOWN=0, whfcnPRIMARY, whfcnLOOPHEATER, whfcnSUPPLIESCHDHW=0x10, whfcnSUPPLIESLOOP=0x20, whfcnSUPPLIESLOAD=0x40 };" *declare "int wh_SetFunction();" @@ -7458,16 +7457,6 @@ o *h FLOAT tnatv /* Cur hr nat vent stpt, F; Huge if nat vnt not poss*/ o *h FLOAT tfanv /* Cur hr fan vent stpt, F; Huge if fn vnt not poss */ #endif -//============================================================================= -#if 0 //ifdef OLDAT // OLD 3-92 -o RECORD AHUX "ahu" *RAT // Air handler: currently dummy source of infinite amount of air at a given temp. 10-11-91. -o #ifndef BCPP -o *hide DBN bn // dummy -o *z ANAME name // for LIKEing etc -o #endif -o *h TEMP ahuxTsu // supply temperature (hourly variability) -o *END // AHUX -#endif //============================================================================= #if 0 //ifdef OLDAT // OLD 3-92 o RECORD TUX "terminal" *RAT // OLD TERMINAL 3-92 @@ -7483,13 +7472,7 @@ o Local heating Local heating (coil, baseboard) o Air heating Air heating (air from air handler) o Air cooling Air cooling (air from air handler) */ o -o #ifndef BCPP -o *hide DBN bn // dummy -o *z ANAME name // for LIKEing etc -o TI ownTi // was zi // ZNI/R rcd subscript of owner zone -o #else -o // ownTi (base class) is ZNI/R rcd subscript of owner zone -o #endif +o // ownTi (base class) is ZNI/R rcd subscript of owner zone o TI tuxNxTu // chain: 0 or ss of next TU in current zone chain o TI tuxZhxx1 // chain head: ss of 1st ZHXX belonging to this TU o @@ -7521,12 +7504,8 @@ o // 2. zone natural vent (if present) o // 3. (future others?) o // No input-only ZHX rat exists. o // mbrs set at "RUN" (out of cncult:topCkf); some can vary during simulation -o #ifndef BCPP -o *r TI ownTi // was owni // ss of owner -- ZNR/ZNI ss (ty=ZHX_NATVENT) or TU ss (other tys) -o #else -o // name is ... unused? -o // ownTi is TU ss (other tys) or (future) ZNR/ZNI ss (ty=ZHX_NATVENT) (or use sep mbr???) -o #endif +o // name is ... unused? +o // ownTi is TU ss (other tys) or (future) ZNR/ZNI ss (ty=ZHX_NATVENT) (or use sep mbr???) o *r TI nxZhxx // chain: 0 or ss of next ZHX for this TU. 0 if ty=ZHX_NATVENT. o *r SI tyZhxx // ZHX type: consts in cndefns.h o // ZHX_NATVENT zone natural ventilation diff --git a/src/cgdebug.cpp b/src/cgdebug.cpp index e3027094a..2721b7528 100644 --- a/src/cgdebug.cpp +++ b/src/cgdebug.cpp @@ -384,7 +384,7 @@ static PBHEAD sgdh = { PBDATOFFL, sgdt, 0, 0, 0 }; static PB_DATOFFL ashwatT[] = { // r c memberOff dt units wid cvfmt label { L, C+1, 16, off( FENAW, fa_SHGC), DTF, UNN, 8, FL+3, "ASHWAT SHGC: " }, -{ L, C, C+6, off( FENAW, fa_refDesc),DTANAME, UNN, 35, FS, " ref: " }, +{ L, C, C+6, off( FENAW, fa_refDesc),DTCH, UNN, 35, FS, " ref: " }, { L, C, C+15, off( FENAW, fa_frmArea),DTF, UNN, 8, FL+2, " frmArea: " }, { L, C, C+10, off( FENAW, fa_mSolar), DTF, UNN, 8, FL+3, " mSolar: " }, { L, C, C+6, off( FENAW, fa_mCond), DTF, UNN, 8, FL+3, " mCond: " }, diff --git a/src/cnausz.cpp b/src/cnausz.cpp index 641430b7e..c75b4f8ee 100644 --- a/src/cnausz.cpp +++ b/src/cnausz.cpp @@ -41,7 +41,7 @@ ausz notes //------------------------- GLOBAL-ISH VARIABLES --------------------------- -/*static*/ ANAME AUSZ::az_context; // context text for verbose screen msgs +/*static*/ char AUSZ::az_context[100]; // context text for verbose screen msgs //----------------------- LOCAL FUNCTION DECLARATIONS ----------------------- diff --git a/src/cse.cpp b/src/cse.cpp index df7732827..cc7620389 100644 --- a/src/cse.cpp +++ b/src/cse.cpp @@ -108,13 +108,17 @@ const char ProgVersion[] = CSEVRSN_TEXT; // program version text "x.xxx" (csevrs const char ProgVariant[] = // text showing platform TODO: Revise to use CSE_OS / CSE_COMPILER / CSE_ARCH #if defined( WIN) - "for Win32"; + "for Win32"; #elif defined( DLL) - "Win32 DLL"; + "Win32 DLL"; #elif defined( CSE_DLL) - "DLL"; + "DLL"; #elif defined( CSE_CONSOLE) + #if CSE_ARCH == 64 + "for Win64 console"; + #else "for Win32 console"; + #endif #endif int TestOptions = 0; // test option bits, set via -t command line argument diff --git a/src/cueval.cpp b/src/cueval.cpp index 00e97b708..61be629ab 100644 --- a/src/cueval.cpp +++ b/src/cueval.cpp @@ -1086,13 +1086,13 @@ w case PSRATLOD1S: POINT; *--SPI = (SI)*(CH*)v; break; // 1 byte, extend sign case PSRATLODA: POINT; * --SPP = strsave( (const char*)v); - break; // char[], eg ANAME: put in dm. NAN not expected. + break; // char[], put in dm. NAN not expected. case PSRATLODS: // CULSTR: 4 byte value - { if ((rc = cuRmGet(vND,&ms,pBadH)) != RCOK) // char *. 1st fetch/check/fix 4 bytes. + { if ((rc = cuRmGet(vND,&ms,pBadH)) != RCOK) // 1st fetch/check/fix 4 bytes. goto breakbreak; // if unset data or uneval'd expr, ms set. - const char* s = AsCULSTR(&vND).CStr(); - *--SPP = (void*)s; // stack pointer + const char* s = AsCULSTR(&vND).CStr(); // point to CULSTR chars + *--SPP = (void*)s; // push pointer } break; diff --git a/src/cueval.h b/src/cueval.h index 8d1da0ac7..4d8425592 100644 --- a/src/cueval.h +++ b/src/cueval.h @@ -198,8 +198,8 @@ PSRATLOD2, // rat load 2 bytes: fetches SI/USI. PSRATLOD4, // rat load 4 bytes: fetches float/INT/UINT PSRATLODD, // rat load double: converts it float. PSRATLODL, // rat load INT: converts it float. -PSRATLODA, // rat load char array (eg ANAME): makes dm copy, leaves ptr in stack -PSRATLODS, // rat load string: loads char * from record, duplicates. +PSRATLODA, // rat load char array: makes dm copy, leaves ptr in stack +PSRATLODS, // rat load string: loads CULSTR from record, duplicates. // expression data access: used when an expr references (probes) an input data location already containing an expression. PSEXPLOD4, // load 4 byte (INT,float) expr value. 2-byte expression number follows inline. diff --git a/src/cul.cpp b/src/cul.cpp index b0911503a..1cab4ffa4 100644 --- a/src/cul.cpp +++ b/src/cul.cpp @@ -17,7 +17,7 @@ redo dref table using field # not offset? redo exman.cpp:extab WHERE using field # not offset? FDNONE in srd.h or cnglob.h? - field constants or way to access fdTy eg for ANAME for ganame()? + field constants or way to access fdTy for ganame()? */ /* hanging 12-25-90 @@ -2677,11 +2677,9 @@ LOCAL RC ganame( // RC_SUM, RC_ALL, RC_ALLBUT, [RC_ELECTRIC]: returned if special word gotten and enabling flags on. // other: error, message issued, perNx done. { - // link to a fir in srfd.cpp to get field type of an ANAME, partly to - // excercise new fields limit code 2-92 -- later just check length here? - RC rc = xpr( TYID, // TYID: string, implied quotes on unreserved undeclared words - sfirSFI[ SFI_NAME].fi_fdTy, // get field type for an ANAME field so exman.cpp will check string length + sfirSFI[ SFI_NAME].fi_fdTy, // get field type for a name field so exman.cpp to support checks + // (no length check as of 10-2025) // (we have no defines for fld types: not invariant: data\fields.def // is rearrangable & product dependent) 2-91. Declared in rccn.h. 0, 0, // 0 evfOk, useCl: require constant value diff --git a/src/cuprobe.cpp b/src/cuprobe.cpp index 91d255a0f..7bd1bdc78 100644 --- a/src/cuprobe.cpp +++ b/src/cuprobe.cpp @@ -659,17 +659,16 @@ LOCAL RC FC lopNty4dt( // for DT- data type, get TY- type and PSOP to load it f sz = 4; break; - case DTANAME: case DTWFLOC: // char arrays used in WFILE, 1-94 case DTWFLID: // .. case DTWFLOC2: // 10-94 - lop = PSRATLODA; // record load char array (eg ANAME): makes dm copy, leaves ptr in stack + lop = PSRATLODA; // record load char array: makes dm copy, leaves ptr in stack ty = TYSTR; sz = 4; break; case DTCULSTR: - lop = PSRATLODS; // record load string: loads char * from record, duplicates. + lop = PSRATLODS; // record load string: loads pointer to CULSTR chars and leaves in stack ty = TYSTR; sz = 4; break; diff --git a/src/cvpak.cpp b/src/cvpak.cpp index 9f19311fa..f18b78ccb 100644 --- a/src/cvpak.cpp +++ b/src/cvpak.cpp @@ -409,8 +409,7 @@ x } data = (*(CULSTR*)data).CStr(); goto strjust; // data is pointer to string - case DTCH: // for char array or string ptr already dereferenced, rob 11-91 - case DTANAME: // char[ ] RAT name + case DTCH: // for char array or string ptr already dereferenced strjust: Cvnchars = snprintf( str, allocLen, sf[ lj], wid, mfw, data); break; diff --git a/src/dhwcalc.cpp b/src/dhwcalc.cpp index 2878a1863..ea2b7377b 100644 --- a/src/dhwcalc.cpp +++ b/src/dhwcalc.cpp @@ -4015,6 +4015,11 @@ DHWHEATER::~DHWHEATER() // d'tor wh_HPWH.hw_pNodePowerExtra_W.vector::~vector(); record::Copy( pSrc, options); // base class calls FixUp() and (if _DEBUG) Validate() + + // dup copied CULSTRs + wh_desc.FixAfterCopy(); + + // dup copied heap table new(&wh_HPWH.hw_pNodePowerExtra_W) std::vector(((const DHWHEATER*)pSrc)->wh_HPWH.hw_pNodePowerExtra_W); } // DHWHEATER::Copy //--------------------------------------------------------------------------- @@ -4296,7 +4301,7 @@ void DHWHEATER::wh_SetDesc() // build probable description hpTy = strtprintf( " %s",getChoiTx( DHWHEATER_ASHPTY, 1)); const char* t = strtprintf( "%s %s%s", whSrcTx, whTyTx, hpTy); - strncpy0( wh_desc, t, sizeof( wh_desc)); + wh_desc.Set(t); } // DHWHEATER::wh_SetDesc //----------------------------------------------------------------------------- int DHWHEATER::wh_ReportBalErrorsIf() const diff --git a/src/exman.cpp b/src/exman.cpp index 7dd47ec88..e20bd2425 100644 --- a/src/exman.cpp +++ b/src/exman.cpp @@ -816,24 +816,26 @@ LOCAL RC FC uniLim( /* divide by units factor: scale to internal unit system if different */ if (units != UNNONE) // for runtime speed + { if (dt==DTFLOAT || ty==TYNC) // only done for FLOATs and doubles and number/choices { if (ISNUM(*(void**)p)) // and not if (number/choice) value is a nan - *(float *)p = float( cvExtoIn( *(float *)p, units )); + *(float*)p = float(cvExtoIn(*(float*)p, units)); } else if (dt==DTDBL) // doubles - *(double *)p = cvExtoIn( *(double *)p, units); // cvpak.cpp + *(double*)p = cvExtoIn(*(double*)p, units); // cvpak.cpp + } - /* check string length for selected string types. Historically, cvpak did this by data type (not limit type) - in cvs2in's dtype switch, which isn't used if here */ - if (dt==DTANAME) - if (strlen( *(char **)p) >= sizeof( ANAME)) - return MH_V0035; // "V0035: name must be 1 to 63 characters" - // return MH code for consisency with cvpak errors + // Possible here to check string length for selected string types. + // Historically, cvpak did this by data type (not limit type) + // in cvs2in's dtype switch, which isn't used if here + { + // no string length limits currently enforced (10-2025) + } - /* check that value is within limits (numerical types) */ + // check that value is within limits (numerical types) + return cvLmCk( dt, sFdtab[fdTy].lmtype, p); - return cvLmCk( dt, sFdtab[fdTy].lmtype, p); // cvpak.cpp. // on error, issues no message, returns mh of no-arg text explaining the limits exceeded. } // uniLim diff --git a/src/wfpak.cpp b/src/wfpak.cpp index 89e9fb2b8..7c6a464b1 100644 --- a/src/wfpak.cpp +++ b/src/wfpak.cpp @@ -1725,6 +1725,8 @@ WFILE::~WFILE() record::Copy( pSrc, options); // verifies class (rt) same, copies whole derived class record. ancrec.cpp. + wf_TDVFileTitle.FixAfterCopy(); + yac = new YACAM(); // overwrite yac pointer, if any yacTDV = new YACAM(); @@ -2511,7 +2513,7 @@ RC WFILE::wf_TDVOpen( // open California Time of Day Valuation (TDV) file //---------------------------------------------------------------------------- void WFILE::wf_TDVInitHdrInfo() { memset( wf_TDVFileTimeStamp, 0, sizeof( wf_TDVFileTimeStamp)); - memset( wf_TDVFileTitle, 0, sizeof( wf_TDVFileTitle)); + wf_TDVFileTitle.Release(); } // WFILE::wf_TDVInitHdrInfo //---------------------------------------------------------------------------- RC WFILE::wf_TDVReadHdr( int erOp) // read / decode TDV file header @@ -2538,7 +2540,7 @@ RC WFILE::wf_TDVReadHdr( int erOp) // read / decode TDV file header rc = yacTDV->getLineCSV( erOp, 0, "C", _C( wf_TDVFileTimeStamp), NULL); if (!rc) { // title - rc = yacTDV->getLineCSV( erOp, 0, "CC", _C( wf_TDVFileTitle), _C( T2), NULL); + rc = yacTDV->getLineCSV( erOp, 0, "SC", &wf_TDVFileTitle, _C( T2), NULL); rc |= yacTDV->checkExpected( T2, "Hour"); } if (!rc) diff --git a/src/yacam.cpp b/src/yacam.cpp index 36a420d99..1a810249b 100644 --- a/src/yacam.cpp +++ b/src/yacam.cpp @@ -759,6 +759,7 @@ int YACAM::scanLine( // scan file for line match // "control string" chars for YACAM::getLineCSV. Each letter uses a pointer from variable arg list // I L F: 16-bit integer, 32-bit integer, float. // C: read quoted string to char[] array. Array size follows pointer in var arg list. +// S: read quoted string to CULSTR // D: date, month and day, no year, leap year flag from caller // X: skip (data discarded, no pointer advance) // 1-99: repeat count for following char, using same pointer: for arrays or adjacent members of same type. @@ -829,15 +830,9 @@ RC YACAM::getLineCSV( // read, decode, and store data per control string { // get token char tok[ 256]; // token buffer -#if 1 - // experiment, 3-16-2017 rc = tokeCSV( tok, sizeof( tok), erOp, &pLn); if (rc != RCOK && rc != RCEOF) return RCBAD; -#else - if (!strxtok( tok, pLn, ",", false)) - return RCBAD; // out of tokens -#endif erOp &= ~YAC_EOFOK; // after first token clear no-message-on-eof option bit strTrim( tok); @@ -850,7 +845,11 @@ RC YACAM::getLineCSV( // read, decode, and store data per control string case 'X': continue; - //case 'S': *(char **)p = strsave(tok); size=sizeof(char **); break; // string to dm + case 'S': // string CULSTR + ((CULSTR*)p)->Set( tok); + size=sizeof(CULSTR); + break; + //case 'T': *(char **)p = strtmp(tok); size=sizeof(char **); break; // string to Tmpstr case 'C': // string to *p diff --git a/test/ASHWAT1.cse b/test/ASHWAT1.cse index ad082e37d..ab2a39b83 100644 --- a/test/ASHWAT1.cse +++ b/test/ASHWAT1.cse @@ -1370,7 +1370,7 @@ Reportcol colVal=@Meter[MtrNatGas].Y.htg/CSEBtuSF colHead="HtgE" colDec=0 colWid Report rpType=MTR rpMeter=MtrElec rpFreq=MONTH rpBtuSf=1000 Report rpType=MTR rpMeter=MtrNatGas rpFreq=MONTH rpBtuSf=1000 -// REPORT rpType=ZDD rpZone="Conditioned-zn" +REPORT rpType=ZDD rpZone="Conditioned-zn" //Coldest Day diff --git a/test/ref-win32-msvc/ashwat1.rep b/test/ref-win32-msvc/ashwat1.rep index af5832473..41e9faca2 100644 --- a/test/ref-win32-msvc/ashwat1.rep +++ b/test/ref-win32-msvc/ashwat1.rep @@ -85,6 +85,333 @@ Yr 29767 0 24516 0 0 0 0 0 0 0 0 + +ZONE DATA for zone Conditioned-zn Model: CZM +CFA: 2100.00 Vol: 18900.0 FloorZ: 0 CeilingHt: 9.00 EaveZ: 9.00 CAir: 4200 +Infil AC: 0 ELA: 0 Stackc: 323.482 Windc: 80.870 +UA: 13.134 UANom: 260.804 +Surface Door 1-Sim Area: 40.0 Az: 0 T: 90 UNom: 0.351 UA: 14.04 InAbs: 0.50 ExAbs: 0.50 ExCnd: Ambient + +Surface Ceiling (below aArea: 127.0 Az: 0 T: 0 UNom: 0.0339 UA: 4.31 InAbs: 0.20 ExAbs: 0.20 ExCnd: AdjZn Attic-atc +Surface Ceiling (below aArea: 1687.7 Az: 0 T: 0 UNom: 0.0299 UA: 50.45 InAbs: 0.20 ExAbs: 0.20 ExCnd: AdjZn Attic-atc +Surface Ceiling (below aArea: 6.8 Az: 0 T: 0 UNom: 0.133 UA: 0.91 InAbs: 0.20 ExAbs: 0.80 ExCnd: Ambient +Surface Ceiling (below aArea: 90.5 Az: 0 T: 0 UNom: 0.0734 UA: 6.65 InAbs: 0.20 ExAbs: 0.80 ExCnd: Ambient +Surface Ceiling (below aArea: 13.2 Az: 0 T: 0 UNom: 0.0479 UA: 0.63 InAbs: 0.20 ExAbs: 0.80 ExCnd: Ambient +Surface Ceiling (below aArea: 174.8 Az: 0 T: 0 UNom: 0.0302 UA: 5.28 InAbs: 0.20 ExAbs: 0.80 ExCnd: Ambient +Surface Front-Frm Area: 74.2 Az: 0 T: 90 UNom: 0.113 UA: 8.36 InAbs: 0.60 ExAbs: 0.50 ExCnd: Ambient +Surface Left-Frm Area: 84.2 Az: 90 T: 90 UNom: 0.113 UA: 9.49 InAbs: 0.60 ExAbs: 0.50 ExCnd: Ambient +Surface Back-Frm Area: 84.2 Az: 180 T: 90 UNom: 0.113 UA: 9.49 InAbs: 0.60 ExAbs: 0.50 ExCnd: Ambient +Surface Right-Frm Area: 84.2 Az: 270 T: 90 UNom: 0.113 UA: 9.49 InAbs: 0.60 ExAbs: 0.50 ExCnd: Ambient +Surface Front-Cav Area: 222.8 Az: 0 T: 90 UNom: 0.0633 UA: 14.09 InAbs: 0.60 ExAbs: 0.50 ExCnd: Ambient +Surface Left-Cav Area: 252.8 Az: 90 T: 90 UNom: 0.0633 UA: 15.99 InAbs: 0.60 ExAbs: 0.50 ExCnd: Ambient +Surface Back-Cav Area: 252.8 Az: 180 T: 90 UNom: 0.0633 UA: 15.99 InAbs: 0.60 ExAbs: 0.50 ExCnd: Ambient +Surface Right-Cav Area: 252.8 Az: 270 T: 90 UNom: 0.0633 UA: 15.99 InAbs: 0.60 ExAbs: 0.50 ExCnd: Ambient +Surface Slab On Grade 1-Area: 307.2 Az: 0 T: 180 UNom: 0.143 UA: 43.78 InAbs: 0.80 ExAbs: 0.50 ExCnd: Ground +Surface Slab On Grade 1-Area: 1372.8 Az: 0 T: 180 UNom: 0.0683 UA: 93.72 InAbs: 0.80 ExAbs: 0.50 ExCnd: Ground +Surface Slab On Grade 1-Area: 76.8 Az: 0 T: 180 UNom: 0.243 UA: 18.65 InAbs: 0.80 ExAbs: 0.50 ExCnd: Ground +Surface Slab On Grade 1-Area: 343.2 Az: 0 T: 180 UNom: 0.0771 UA: 26.44 InAbs: 0.80 ExAbs: 0.50 ExCnd: Ground +Surface Furniture-imass Area: 4200.0 Az: 0 T: 90 UNom: 0.256 UA: 1073.92InAbs: 0.60 ExAbs: 0.60 ExCnd: AdjZn Condition +Surface WallFrm-imass Area: 525.0 Az: 0 T: 90 UNom: 0.171 UA: 89.89 InAbs: 0.60 ExAbs: 0.60 ExCnd: AdjZn Condition +Surface WallCav-imass Area: 1575.0 Az: 0 T: 90 UNom: 0.441 UA: 694.12 InAbs: 0.60 ExAbs: 0.60 ExCnd: AdjZn Condition + +Window Win F1-NoScrn Area: 52.50 Az: 0 T: 90 UNom: 0.320 UA: 16.8 SMSO: 1.0000 SMSC: 1.0000 ExCnd: Ambient + ASHWAT SHGC: 0.250 ref: ELSLE_AIR (SHGC=0.277 U=0.289) frmArea: 7.87 mSolar: 0.956 mCond: 1.107 +Window Win F1-Scrn Area: 52.50 Az: 0 T: 90 UNom: 0.320 UA: 16.8 SMSO: 1.0000 SMSC: 1.0000 ExCnd: Ambient + ASHWAT SHGC: 0.250 ref: ELSLE_AIR (SHGC=0.277 U=0.289) frmArea: 7.87 mSolar: 0.956 mCond: 1.107 +Window Win L1-NoScrn Area: 52.50 Az: 90 T: 90 UNom: 0.320 UA: 16.8 SMSO: 1.0000 SMSC: 1.0000 ExCnd: Ambient + ASHWAT SHGC: 0.250 ref: ELSLE_AIR (SHGC=0.277 U=0.289) frmArea: 7.87 mSolar: 0.956 mCond: 1.107 +Window Win L1-Scrn Area: 52.50 Az: 90 T: 90 UNom: 0.320 UA: 16.8 SMSO: 1.0000 SMSC: 1.0000 ExCnd: Ambient + ASHWAT SHGC: 0.250 ref: ELSLE_AIR (SHGC=0.277 U=0.289) frmArea: 7.87 mSolar: 0.956 mCond: 1.107 +Window Win B1-NoScrn Area: 52.50 Az: 180 T: 90 UNom: 0.320 UA: 16.8 SMSO: 1.0000 SMSC: 1.0000 ExCnd: Ambient + ASHWAT SHGC: 0.250 ref: ELSLE_AIR (SHGC=0.277 U=0.289) frmArea: 7.87 mSolar: 0.956 mCond: 1.107 +Window Win B1-Scrn Area: 52.50 Az: 180 T: 90 UNom: 0.320 UA: 16.8 SMSO: 1.0000 SMSC: 1.0000 ExCnd: Ambient + ASHWAT SHGC: 0.250 ref: ELSLE_AIR (SHGC=0.277 U=0.289) frmArea: 7.87 mSolar: 0.956 mCond: 1.107 +Window Win R1-NoScrn Area: 52.50 Az: 270 T: 90 UNom: 0.320 UA: 16.8 SMSO: 1.0000 SMSC: 1.0000 ExCnd: Ambient + ASHWAT SHGC: 0.250 ref: ELSLE_AIR (SHGC=0.277 U=0.289) frmArea: 7.87 mSolar: 0.956 mCond: 1.107 +Window Win R1-Scrn Area: 52.50 Az: 270 T: 90 UNom: 0.320 UA: 16.8 SMSO: 1.0000 SMSC: 1.0000 ExCnd: Ambient + ASHWAT SHGC: 0.250 ref: ELSLE_AIR (SHGC=0.277 U=0.289) frmArea: 7.87 mSolar: 0.956 mCond: 1.107 + +Mass Ceiling (below a Area: 127.033 UNom: 0.03391 tc: 3.57 subhrly: + Inside: Zone 'Conditioned-zn' RSrfNom: 0.61 + Layer thk: 0.0417 vhc: 10.800 cond: 0.0917 R: 0.455 + Layer thk: 0.0583 vhc: 13.650 cond: 0.0817 R: 0.714 + Layer thk: 0.0583 vhc: 13.650 cond: 0.0817 R: 0.714 + Layer thk: 0.0583 vhc: 13.650 cond: 0.0817 R: 0.714 + Layer thk: 0.0583 vhc: 13.650 cond: 0.0817 R: 0.714 + Layer thk: 0.0583 vhc: 13.650 cond: 0.0817 R: 0.714 + Layer thk: 0.232 vhc: 0.300 cond: 0.0387 R: 5.983 + Layer thk: 0.232 vhc: 0.300 cond: 0.0387 R: 5.983 + Layer thk: 0.232 vhc: 0.300 cond: 0.0387 R: 5.983 + Layer thk: 0.232 vhc: 0.300 cond: 0.0387 R: 5.983 + Outside: Zone 'Attic-atc' RSrfNom: 0.92 +Mass Ceiling (below a Area: 1687.72 UNom: 0.02989 tc: 0.62 subhrly: + Inside: Zone 'Conditioned-zn' RSrfNom: 0.61 + Layer thk: 0.0417 vhc: 10.800 cond: 0.0917 R: 0.455 + Layer thk: 0.244 vhc: 0.300 cond: 0.0387 R: 6.294 + Layer thk: 0.244 vhc: 0.300 cond: 0.0387 R: 6.294 + Layer thk: 0.244 vhc: 0.300 cond: 0.0387 R: 6.294 + Layer thk: 0.244 vhc: 0.300 cond: 0.0387 R: 6.294 + Layer thk: 0.244 vhc: 0.300 cond: 0.0387 R: 6.294 + Outside: Zone 'Attic-atc' RSrfNom: 0.92 +Mass Ceiling (below a Area: 6.811 UNom: 0.1333 tc: 7.09 subhrly: + Inside: Zone 'Conditioned-zn' RSrfNom: 0.61 + Layer thk: 0.0417 vhc: 10.800 cond: 0.0917 R: 0.455 + Layer thk: 0.0562 vhc: 13.650 cond: 0.0817 R: 0.688 + Layer thk: 0.0562 vhc: 13.650 cond: 0.0817 R: 0.688 + Layer thk: 0.0562 vhc: 13.650 cond: 0.0817 R: 0.688 + Layer thk: 0.0562 vhc: 13.650 cond: 0.0817 R: 0.688 + Layer thk: 0.0562 vhc: 13.650 cond: 0.0817 R: 0.688 + Layer thk: 0.0562 vhc: 13.650 cond: 0.0817 R: 0.688 + Layer thk: 0.0562 vhc: 13.650 cond: 0.0817 R: 0.688 + Layer thk: 0.0562 vhc: 13.650 cond: 0.0817 R: 0.688 + Layer thk: 0.0417 vhc: 18.450 cond: 0.0613 R: 0.680 + Layer thk: 0.0833 vhc: 24.000 cond: 1.000 R: 0.0833 + Outside: Ambient RSrfNom: 0.17 +Mass Ceiling (below a Area: 90.492 UNom: 0.07344 tc: 2.54 subhrly: + Inside: Zone 'Conditioned-zn' RSrfNom: 0.61 + Layer thk: 0.0417 vhc: 10.800 cond: 0.0917 R: 0.455 + Layer thk: 0.225 vhc: 0.300 cond: 0.0387 R: 5.809 + Layer thk: 0.225 vhc: 0.300 cond: 0.0387 R: 5.809 + Layer thk: 0.0417 vhc: 18.450 cond: 0.0613 R: 0.680 + Layer thk: 0.0833 vhc: 24.000 cond: 1.000 R: 0.0833 + Outside: Ambient RSrfNom: 0.17 +Mass Ceiling (below a Area: 13.156 UNom: 0.04786 tc: 11.81 subhrly: + Inside: Zone 'Conditioned-zn' RSrfNom: 0.61 + Layer thk: 0.0417 vhc: 10.800 cond: 0.0917 R: 0.455 + Layer thk: 0.0583 vhc: 13.650 cond: 0.0817 R: 0.714 + Layer thk: 0.0583 vhc: 13.650 cond: 0.0817 R: 0.714 + Layer thk: 0.0583 vhc: 13.650 cond: 0.0817 R: 0.714 + Layer thk: 0.0583 vhc: 13.650 cond: 0.0817 R: 0.714 + Layer thk: 0.0583 vhc: 13.650 cond: 0.0817 R: 0.714 + Layer thk: 0.153 vhc: 0.300 cond: 0.0387 R: 3.942 + Layer thk: 0.153 vhc: 0.300 cond: 0.0387 R: 3.942 + Layer thk: 0.0608 vhc: 13.650 cond: 0.0817 R: 0.744 + Layer thk: 0.0608 vhc: 13.650 cond: 0.0817 R: 0.744 + Layer thk: 0.0608 vhc: 13.650 cond: 0.0817 R: 0.744 + Layer thk: 0.0608 vhc: 13.650 cond: 0.0817 R: 0.744 + Layer thk: 0.0608 vhc: 13.650 cond: 0.0817 R: 0.744 + Layer thk: 0.0608 vhc: 13.650 cond: 0.0817 R: 0.744 + Layer thk: 0.0608 vhc: 13.650 cond: 0.0817 R: 0.744 + Layer thk: 0.0608 vhc: 13.650 cond: 0.0817 R: 0.744 + Layer thk: 0.0608 vhc: 13.650 cond: 0.0817 R: 0.744 + Layer thk: 0.0608 vhc: 13.650 cond: 0.0817 R: 0.744 + Layer thk: 0.0417 vhc: 18.450 cond: 0.0613 R: 0.680 + Layer thk: 0.0833 vhc: 24.000 cond: 1.000 R: 0.0833 + Outside: Ambient RSrfNom: 0.17 +Mass Ceiling (below a Area: 174.788 UNom: 0.03019 tc: 2.71 subhrly: + Inside: Zone 'Conditioned-zn' RSrfNom: 0.61 + Layer thk: 0.0417 vhc: 10.800 cond: 0.0917 R: 0.455 + Layer thk: 0.241 vhc: 0.300 cond: 0.0387 R: 6.224 + Layer thk: 0.241 vhc: 0.300 cond: 0.0387 R: 6.224 + Layer thk: 0.241 vhc: 0.300 cond: 0.0387 R: 6.224 + Layer thk: 0.241 vhc: 0.300 cond: 0.0387 R: 6.224 + Layer thk: 0.241 vhc: 0.300 cond: 0.0387 R: 6.224 + Layer thk: 0.0417 vhc: 18.450 cond: 0.0613 R: 0.680 + Layer thk: 0.0833 vhc: 24.000 cond: 1.000 R: 0.0833 + Outside: Ambient RSrfNom: 0.17 +Mass Front-Frm Area: 74.250 UNom: 0.1127 tc: 2.98 subhrly: + Inside: Zone 'Conditioned-zn' RSrfNom: 0.68 + Layer thk: 0.0417 vhc: 10.800 cond: 0.0917 R: 0.455 + Layer thk: 0.0583 vhc: 13.650 cond: 0.0817 R: 0.714 + Layer thk: 0.0583 vhc: 13.650 cond: 0.0817 R: 0.714 + Layer thk: 0.0583 vhc: 13.650 cond: 0.0817 R: 0.714 + Layer thk: 0.0583 vhc: 13.650 cond: 0.0817 R: 0.714 + Layer thk: 0.0583 vhc: 13.650 cond: 0.0817 R: 0.714 + Layer thk: 0.0833 vhc: 0.525 cond: 0.0208 R: 4.001 + Outside: Ambient RSrfNom: 0.17 +Mass Left-Frm Area: 84.250 UNom: 0.1127 tc: 2.98 subhrly: + Inside: Zone 'Conditioned-zn' RSrfNom: 0.68 + Layer thk: 0.0417 vhc: 10.800 cond: 0.0917 R: 0.455 + Layer thk: 0.0583 vhc: 13.650 cond: 0.0817 R: 0.714 + Layer thk: 0.0583 vhc: 13.650 cond: 0.0817 R: 0.714 + Layer thk: 0.0583 vhc: 13.650 cond: 0.0817 R: 0.714 + Layer thk: 0.0583 vhc: 13.650 cond: 0.0817 R: 0.714 + Layer thk: 0.0583 vhc: 13.650 cond: 0.0817 R: 0.714 + Layer thk: 0.0833 vhc: 0.525 cond: 0.0208 R: 4.001 + Outside: Ambient RSrfNom: 0.17 +Mass Back-Frm Area: 84.250 UNom: 0.1127 tc: 2.98 subhrly: + Inside: Zone 'Conditioned-zn' RSrfNom: 0.68 + Layer thk: 0.0417 vhc: 10.800 cond: 0.0917 R: 0.455 + Layer thk: 0.0583 vhc: 13.650 cond: 0.0817 R: 0.714 + Layer thk: 0.0583 vhc: 13.650 cond: 0.0817 R: 0.714 + Layer thk: 0.0583 vhc: 13.650 cond: 0.0817 R: 0.714 + Layer thk: 0.0583 vhc: 13.650 cond: 0.0817 R: 0.714 + Layer thk: 0.0583 vhc: 13.650 cond: 0.0817 R: 0.714 + Layer thk: 0.0833 vhc: 0.525 cond: 0.0208 R: 4.001 + Outside: Ambient RSrfNom: 0.17 +Mass Right-Frm Area: 84.250 UNom: 0.1127 tc: 2.98 subhrly: + Inside: Zone 'Conditioned-zn' RSrfNom: 0.68 + Layer thk: 0.0417 vhc: 10.800 cond: 0.0917 R: 0.455 + Layer thk: 0.0583 vhc: 13.650 cond: 0.0817 R: 0.714 + Layer thk: 0.0583 vhc: 13.650 cond: 0.0817 R: 0.714 + Layer thk: 0.0583 vhc: 13.650 cond: 0.0817 R: 0.714 + Layer thk: 0.0583 vhc: 13.650 cond: 0.0817 R: 0.714 + Layer thk: 0.0583 vhc: 13.650 cond: 0.0817 R: 0.714 + Layer thk: 0.0833 vhc: 0.525 cond: 0.0208 R: 4.001 + Outside: Ambient RSrfNom: 0.17 +Mass Front-Cav Area: 222.750 UNom: 0.06327 tc: 0.39 subhrly: + Inside: Zone 'Conditioned-zn' RSrfNom: 0.68 + Layer thk: 0.0417 vhc: 10.800 cond: 0.0917 R: 0.455 + Layer thk: 0.146 vhc: 0.300 cond: 0.0278 R: 5.250 + Layer thk: 0.146 vhc: 0.300 cond: 0.0278 R: 5.250 + Layer thk: 0.0833 vhc: 0.525 cond: 0.0208 R: 4.001 + Outside: Ambient RSrfNom: 0.17 +Mass Left-Cav Area: 252.750 UNom: 0.06327 tc: 0.39 subhrly: + Inside: Zone 'Conditioned-zn' RSrfNom: 0.68 + Layer thk: 0.0417 vhc: 10.800 cond: 0.0917 R: 0.455 + Layer thk: 0.146 vhc: 0.300 cond: 0.0278 R: 5.250 + Layer thk: 0.146 vhc: 0.300 cond: 0.0278 R: 5.250 + Layer thk: 0.0833 vhc: 0.525 cond: 0.0208 R: 4.001 + Outside: Ambient RSrfNom: 0.17 +Mass Back-Cav Area: 252.750 UNom: 0.06327 tc: 0.39 subhrly: + Inside: Zone 'Conditioned-zn' RSrfNom: 0.68 + Layer thk: 0.0417 vhc: 10.800 cond: 0.0917 R: 0.455 + Layer thk: 0.146 vhc: 0.300 cond: 0.0278 R: 5.250 + Layer thk: 0.146 vhc: 0.300 cond: 0.0278 R: 5.250 + Layer thk: 0.0833 vhc: 0.525 cond: 0.0208 R: 4.001 + Outside: Ambient RSrfNom: 0.17 +Mass Right-Cav Area: 252.750 UNom: 0.06327 tc: 0.39 subhrly: + Inside: Zone 'Conditioned-zn' RSrfNom: 0.68 + Layer thk: 0.0417 vhc: 10.800 cond: 0.0917 R: 0.455 + Layer thk: 0.146 vhc: 0.300 cond: 0.0278 R: 5.250 + Layer thk: 0.146 vhc: 0.300 cond: 0.0278 R: 5.250 + Layer thk: 0.0833 vhc: 0.525 cond: 0.0208 R: 4.001 + Outside: Ambient RSrfNom: 0.17 +Mass Slab On Grade 1- Area: 307.200 UNom: 0.1425 tc: 41.34 subhrly: + Inside: Zone 'Conditioned-zn' RSrfNom: 0.92 + Layer thk: 0.0417 vhc: 4.182 cond: 0.0200 R: 2.083 + Layer thk: 0.146 vhc: 28.800 cond: 1.000 R: 0.146 + Layer thk: 0.146 vhc: 28.800 cond: 1.000 R: 0.146 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Outside: Ground RSrfNom: 1.72 +Mass Slab On Grade 1- Area: 1372.80 UNom: 0.06827 tc: 41.34 subhrly: + Inside: Zone 'Conditioned-zn' RSrfNom: 0.92 + Layer thk: 0.0417 vhc: 4.182 cond: 0.0200 R: 2.083 + Layer thk: 0.146 vhc: 28.800 cond: 1.000 R: 0.146 + Layer thk: 0.146 vhc: 28.800 cond: 1.000 R: 0.146 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Outside: Ground RSrfNom: 9.35 +Mass Slab On Grade 1- Area: 76.800 UNom: 0.2428 tc: 41.21 subhrly: + Inside: Zone 'Conditioned-zn' RSrfNom: 0.92 + Layer thk: 0.146 vhc: 28.800 cond: 1.000 R: 0.146 + Layer thk: 0.146 vhc: 28.800 cond: 1.000 R: 0.146 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Outside: Ground RSrfNom: 0.91 +Mass Slab On Grade 1- Area: 343.200 UNom: 0.07705 tc: 41.21 subhrly: + Inside: Zone 'Conditioned-zn' RSrfNom: 0.92 + Layer thk: 0.146 vhc: 28.800 cond: 1.000 R: 0.146 + Layer thk: 0.146 vhc: 28.800 cond: 1.000 R: 0.146 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Layer thk: 0.154 vhc: 23.000 cond: 1.000 R: 0.154 + Outside: Ground RSrfNom: 9.77 +Mass Furniture-imass Area: 4200.00 UNom: 0.2557 tc: 1.90 subhrly: + Inside: Zone 'Conditioned-zn' RSrfNom: 0.68 + Layer thk: 0.0521 vhc: 13.650 cond: 0.0817 R: 0.638 + Layer thk: 0.0521 vhc: 13.650 cond: 0.0817 R: 0.638 + Layer thk: 0.0521 vhc: 13.650 cond: 0.0817 R: 0.638 + Layer thk: 0.0521 vhc: 13.650 cond: 0.0817 R: 0.638 + Outside: Zone 'Conditioned-zn' RSrfNom: 0.68 +Mass WallFrm-imass Area: 525.000 UNom: 0.1712 tc: 3.25 subhrly: + Inside: Zone 'Conditioned-zn' RSrfNom: 0.68 + Layer thk: 0.0417 vhc: 10.800 cond: 0.0917 R: 0.455 + Layer thk: 0.0583 vhc: 13.650 cond: 0.0817 R: 0.714 + Layer thk: 0.0583 vhc: 13.650 cond: 0.0817 R: 0.714 + Layer thk: 0.0583 vhc: 13.650 cond: 0.0817 R: 0.714 + Layer thk: 0.0583 vhc: 13.650 cond: 0.0817 R: 0.714 + Layer thk: 0.0583 vhc: 13.650 cond: 0.0817 R: 0.714 + Layer thk: 0.0417 vhc: 10.800 cond: 0.0917 R: 0.455 + Outside: Zone 'Conditioned-zn' RSrfNom: 0.68 +Mass WallCav-imass Area: 1575.00 UNom: 0.4407 tc: 0.60 subhrly: + Inside: Zone 'Conditioned-zn' RSrfNom: 0.68 + Layer thk: 0.0417 vhc: 10.800 cond: 0.0917 R: 0.455 + Layer thk: 0.0417 vhc: 10.800 cond: 0.0917 R: 0.455 + Outside: Zone 'Conditioned-zn' RSrfNom: 0.68 + +IzXfer Conditioned-Bypa Zn1: Conditioned-zn Zn2: Attic-atc UAconst: 31.500 NVctrl: None + Vlo: 0 Vhi: 0 Hz: 0 Cd: 0 NVc: 0 Cpr: 0 +IzXfer Conditioned-WlLU Zn1: Conditioned-zn Zn2: (ambient) UAconst: 0 NVctrl: AirNetExt + Vlo: 0.0476 Vhi: 0.0476 Hz: 2.250 Cd: 1.000 NVc: 0 Cpr: 0.600 +IzXfer Conditioned-WlLS Zn1: Conditioned-zn Zn2: (ambient) UAconst: 0 NVctrl: AirNetExt + Vlo: 0.0952 Vhi: 0.0952 Hz: 2.250 Cd: 1.000 NVc: 0 Cpr: -0.650 +IzXfer Conditioned-WlLD Zn1: Conditioned-zn Zn2: (ambient) UAconst: 0 NVctrl: AirNetExt + Vlo: 0.0476 Vhi: 0.0476 Hz: 2.250 Cd: 1.000 NVc: 0 Cpr: -0.300 +IzXfer Conditioned-WlHU Zn1: Conditioned-zn Zn2: (ambient) UAconst: 0 NVctrl: AirNetExt + Vlo: 0.0476 Vhi: 0.0476 Hz: 6.750 Cd: 1.000 NVc: 0 Cpr: 0.600 +IzXfer Conditioned-WlHS Zn1: Conditioned-zn Zn2: (ambient) UAconst: 0 NVctrl: AirNetExt + Vlo: 0.0952 Vhi: 0.0952 Hz: 6.750 Cd: 1.000 NVc: 0 Cpr: -0.650 +IzXfer Conditioned-WlHD Zn1: Conditioned-zn Zn2: (ambient) UAconst: 0 NVctrl: AirNetExt + Vlo: 0.0476 Vhi: 0.0476 Hz: 6.750 Cd: 1.000 NVc: 0 Cpr: -0.300 +IzXfer Conditioned-WnLU Zn1: Conditioned-zn Zn2: (ambient) UAconst: 0 NVctrl: AirNetExt + Vlo: .000010 Vhi: .000026 Hz: 2.670 Cd: 0.500 NVc: 0 Cpr: 0.600 +IzXfer Conditioned-WnLS Zn1: Conditioned-zn Zn2: (ambient) UAconst: 0 NVctrl: AirNetExt + Vlo: .000010 Vhi: .000052 Hz: 2.670 Cd: 0.500 NVc: 0 Cpr: -0.650 +IzXfer Conditioned-WnLD Zn1: Conditioned-zn Zn2: (ambient) UAconst: 0 NVctrl: AirNetExt + Vlo: .000010 Vhi: .000026 Hz: 2.670 Cd: 0.500 NVc: 0 Cpr: -0.300 +IzXfer Conditioned-WnHU Zn1: Conditioned-zn Zn2: (ambient) UAconst: 0 NVctrl: AirNetExt + Vlo: .000010 Vhi: .000026 Hz: 6.670 Cd: 0.500 NVc: 0 Cpr: 0.600 +IzXfer Conditioned-WnHS Zn1: Conditioned-zn Zn2: (ambient) UAconst: 0 NVctrl: AirNetExt + Vlo: .000010 Vhi: .000052 Hz: 6.670 Cd: 0.500 NVc: 0 Cpr: -0.650 +IzXfer Conditioned-WnHD Zn1: Conditioned-zn Zn2: (ambient) UAconst: 0 NVctrl: AirNetExt + Vlo: .000010 Vhi: .000026 Hz: 6.670 Cd: 0.500 NVc: 0 Cpr: -0.300 +IzXfer Conditioned-xAtt Zn1: Conditioned-zn Zn2: Attic-atc UAconst: 0 NVctrl: AirNetIZ + Vlo: 0.540 Vhi: 0.540 Hz: 9.000 Cd: 1.000 NVc: 0 Cpr: 0 +IzXfer Conditioned-IAQF Zn1: Conditioned-zn Zn2: (ambient) UAconst: 0 NVctrl: AirNetExtFan + Vlo: 0 Vhi: 0 Hz: 0 Cd: 0.800 NVc: 0 Cpr: 0 +IzXfer Conditioned-WHF Zn1: Conditioned-zn Zn2: Attic-atc UAconst: 0 NVctrl: AirNetIZFan + Vlo: 0 Vhi: 0 Hz: 0 Cd: 0.800 NVc: 0 Cpr: 0 +IzXfer Conditioned-zn-S Zn1: Conditioned-zn Zn2: -- UAconst: 0 NVctrl: AirNetSysAir + Vlo: 0 Vhi: 0 Hz: 0 Cd: 0 NVc: 0 Cpr: 0 +IzXfer Conditioned-zn-S Zn1: Conditioned-zn Zn2: -- UAconst: 0 NVctrl: AirNetSysAir + Vlo: 0 Vhi: 0 Hz: 0 Cd: 0 NVc: 0 Cpr: 0 + + Energy (kBtu + into the zone, except E = Energy Consumed) for Thu 03-Dec Hr Tout WBo Wo Tatt Tin Trad Win RHin WBin Slr Cond Surf ItgS ItgL AirL sInfVnt ACH Htgs Htgl Htgt capF inpF PLR FfanE HtgE @@ -434,7 +761,7 @@ Subhourly User-defined Report, Fri 10-Jul ! Log for Run 001: ################ -! CSE 0.926.0+transmitted-solar.c31255dc.20.dirty for Win32 console Sun 31-Aug-25 10: am +! CSE 0.927.0-rc2 for Win32 console Thu 09-Oct-25 1:2 pm ================ @@ -4795,7 +5122,7 @@ ASHWAT Win R1-Scrn nL=4 tao=51.26 tro=37.20 teo=45.67 tai=68.00 tri=67.55 te layer temps= 77.89 64.17 70.49 71.22 SHGC=0.120 ucg=0.252 cr=0.093 cc=0.159 FP=0.065 FM=0.051 Cx=0.430 COG tso=77.89 hco=0.659 hro=0.795 qro=0.00 tsi=71.22 hci=0.354 hri=0.854 qri=0.00 qSrf=5.66 -! CSE 0.926.0+transmitted-solar.c31255dc.20.dirty for Win32 console +! CSE 0.927.0-rc2 for Win32 console @@ -6173,7 +6500,7 @@ Input for Run 001: Report rpType=MTR rpMeter=MtrElec rpFreq=MONTH rpBtuSf=1000 Report rpType=MTR rpMeter=MtrNatGas rpFreq=MONTH rpBtuSf=1000 - // REPORT rpType=ZDD rpZone="Conditioned-zn" + REPORT rpType=ZDD rpZone="Conditioned-zn" //Coldest Day @@ -6364,18 +6691,18 @@ Input for Run 001: -! CSE 0.926.0+transmitted-solar.c31255dc.20.dirty for Win32 console run(s) done: Sun 31-Aug-25 10: am +! CSE 0.927.0-rc2 for Win32 console run(s) done: Thu 09-Oct-25 1:2 pm ! Executable: d:\cse\builds\cse.exe -! 31-Aug-25 10: am (VS 14.29 3377664 bytes) (HPWH 1.26.0) -! Command line: -x! -t1 ashwat1 -! Input file: D:\cse\test\ashwat1.cse +! 09-Oct-25 1:1 pm (VS 14.29 3378176 bytes) (HPWH 1.26.0) +! Command line: -x! -t1 ASHWAT1 +! Input file: D:\cse\test\ASHWAT1.cse ! Report file: D:\CSE\TEST\ASHWAT1.REP ! Timing info -- ! Input: Time = 0.09 Calls = 2 T/C = 0.0465 -! AutoSizing: Time = 0.65 Calls = 1 T/C = 0.6520 -! Simulation: Time = 6.59 Calls = 1 T/C = 6.5870 +! AutoSizing: Time = 0.65 Calls = 1 T/C = 0.6510 +! Simulation: Time = 6.54 Calls = 1 T/C = 6.5430 ! Reports: Time = 0.01 Calls = 1 T/C = 0.0050 -! Total: Time = 7.34 Calls = 1 T/C = 7.3410 +! Total: Time = 7.30 Calls = 1 T/C = 7.2990 diff --git a/test/ref-win32-msvc/wthr01.rep b/test/ref-win32-msvc/wthr01.rep index f488003c5..5937058e3 100644 --- a/test/ref-win32-msvc/wthr01.rep +++ b/test/ref-win32-msvc/wthr01.rep @@ -2,9 +2,9 @@ Annual User-defined Report - WF Name WF lat TOP lat WF lon TOP lon WF TZ TOP TZ WF elev TOP elev - -------------------------------------------------- ------ ------- -------- -------- ------ ------ -------- -------- - CA_SACRAMENTO-EXECUTIVE-AP_724830S_STYP20.epw 38.510 38.510 -121.50 -121.50 -8.00 -8.00 23.0 23.0 + WF Name WF lat TOP lat WF lon TOP lon WF TZ TOP TZ WF elev TOP elev TDVDesc + -------------------------------------------------- ------ ------- -------- -------- ------ ------ -------- -------- ------------------------------ + CA_SACRAMENTO-EXECUTIVE-AP_724830S_STYP20.epw 38.510 38.510 -121.50 -121.50 -8.00 -8.00 23.0 23.0 Test TDV data @@ -2485,7 +2485,7 @@ Subhourly User-defined Report, Mon 03-Aug ! Log for Run 001: -! CSE 0.925.0+daily-minDB.166255b8.29.dirty for Win32 console +! CSE 0.927.0-rc2 for Win32 console @@ -2494,6 +2494,7 @@ Input for Run 001: // weather test wfName = "CA_SACRAMENTO-EXECUTIVE-AP_724830S_STYP20.epw" + tdvFName = "Testdata.tdv" nSubSteps = 4 DT = No bldgAzm = 0 @@ -2691,6 +2692,7 @@ Input for Run 001: REPORTCOL colHead="TOP TZ" colVal=@top.timeZone colDec=2 colWid=6 REPORTCOL colHead="WF elev" colVal=@weatherFile.elev colDec=1 colWid=8 REPORTCOL colHead="TOP elev" colVal=@top.elevation colDec=1 colWid=8 + REPORTCOL colHead="TDVDesc" colVal=@weatherfile.tdvFileTitle colWid=30 # #define CSEBtuSF 1000 @@ -2781,9 +2783,9 @@ Input for Run 001: Annual User-defined Report - WF Name WF lat TOP lat WF lon TOP lon WF TZ TOP TZ WF elev TOP elev - -------------------------------------------------- ------ ------- -------- -------- ------ ------ -------- -------- - CA_SACRAMENTO-EXECUTIVE-AP_724830S_STYP20.epw 38.510 38.510 -121.50 -121.50 -8.00 -8.00 23.0 23.0 + WF Name WF lat TOP lat WF lon TOP lon WF TZ TOP TZ WF elev TOP elev TDVDesc + -------------------------------------------------- ------ ------- -------- -------- ------ ------ -------- -------- ------------------------------ + CA_SACRAMENTO-EXECUTIVE-AP_724830S_STYP20.epw 38.510 38.510 -121.50 -121.50 -8.00 -8.00 23.0 23.0 Test TDV data @@ -5256,7 +5258,7 @@ Subhourly User-defined Report, Mon 03-Aug ! Log for Run 002: -! CSE 0.925.0+daily-minDB.166255b8.29.dirty for Win32 console +! CSE 0.927.0-rc2 for Win32 console @@ -5272,9 +5274,9 @@ Input for Run 002: Annual User-defined Report - WF Name WF lat TOP lat WF lon TOP lon WF TZ TOP TZ WF elev TOP elev - -------------------------------------------------- ------ ------- -------- -------- ------ ------ -------- -------- - CA_SACRAMENTO-EXECUTIVE-AP_724830S_STYP20.epw 38.510 38.510 -121.50 -121.50 -8.00 -8.00 23.0 23.0 + WF Name WF lat TOP lat WF lon TOP lon WF TZ TOP TZ WF elev TOP elev TDVDesc + -------------------------------------------------- ------ ------- -------- -------- ------ ------ -------- -------- ------------------------------ + CA_SACRAMENTO-EXECUTIVE-AP_724830S_STYP20.epw 38.510 38.510 -121.50 -121.50 -8.00 -8.00 23.0 23.0 Test TDV data @@ -7747,7 +7749,7 @@ Subhourly User-defined Report, Mon 03-Aug ! Log for Run 003: -! CSE 0.925.0+daily-minDB.166255b8.29.dirty for Win32 console +! CSE 0.927.0-rc2 for Win32 console @@ -7763,9 +7765,9 @@ Input for Run 003: Annual User-defined Report - WF Name WF lat TOP lat WF lon TOP lon WF TZ TOP TZ WF elev TOP elev - -------------------------------------------------- ------ ------- -------- -------- ------ ------ -------- -------- - CA_SACRAMENTO-EXECUTIVE-AP_724830S_STYP20.epw 38.510 38.510 -121.50 -121.50 -8.00 -8.00 23.0 23.0 + WF Name WF lat TOP lat WF lon TOP lon WF TZ TOP TZ WF elev TOP elev TDVDesc + -------------------------------------------------- ------ ------- -------- -------- ------ ------ -------- -------- ------------------------------ + CA_SACRAMENTO-EXECUTIVE-AP_724830S_STYP20.epw 38.510 38.510 -121.50 -121.50 -8.00 -8.00 23.0 23.0 Test TDV data @@ -10238,7 +10240,7 @@ Subhourly User-defined Report, Mon 03-Aug ! Log for Run 004: -! CSE 0.925.0+daily-minDB.166255b8.29.dirty for Win32 console +! CSE 0.927.0-rc2 for Win32 console @@ -10255,18 +10257,18 @@ Input for Run 004: -! CSE 0.925.0+daily-minDB.166255b8.29.dirty for Win32 console run(s) done: Fri 30-May-25 1:3 pm +! CSE 0.927.0-rc2 for Win32 console run(s) done: Thu 09-Oct-25 12: pm ! Executable: d:\cse\builds\cse.exe -! 30-May-25 1:2 pm (VS 14.29 3349504 bytes) (HPWH 1.25.0+main.cc0bb806.445) +! 09-Oct-25 11: am (VS 14.29 3378176 bytes) (HPWH 1.26.0) ! Command line: -x! -t1 wthr01 ! Input file: D:\cse\test\wthr01.cse ! Report file: D:\CSE\TEST\WTHR01.REP ! Timing info -- -! Input: Time = 0.20 Calls = 4 T/C = 0.0510 +! Input: Time = 0.21 Calls = 4 T/C = 0.0520 ! AutoSizing: Time = 0.00 Calls = 0 T/C = 0.0000 -! Simulation: Time = 2.66 Calls = 4 T/C = 0.6638 -! Reports: Time = 0.01 Calls = 4 T/C = 0.0035 -! Total: Time = 2.89 Calls = 1 T/C = 2.8900 +! Simulation: Time = 2.44 Calls = 4 T/C = 0.6088 +! Reports: Time = 0.02 Calls = 4 T/C = 0.0040 +! Total: Time = 2.68 Calls = 1 T/C = 2.6750 diff --git a/test/testdata.tdv b/test/testdata.tdv new file mode 100644 index 000000000..08eb68ad0 --- /dev/null +++ b/test/testdata.tdv @@ -0,0 +1,8764 @@ +"TDV Data (TDV/Btu)","001" +"Mon 30-Jun-25 09:36:47 am" +"Test TDV data","Hour" +"tdvElec","tdvFuel" +12.9951,184.383 +12.9858,184.383 +13.0302,184.383 +13.0798,184.383 +13.2019,184.383 +13.2211,184.383 +13.3152,184.383 +15.4818,184.383 +14.7569,184.383 +8.90079,184.383 +8.28272,184.383 +8.28272,184.383 +8.28271,184.383 +8.28272,184.383 +8.88783,184.383 +8.63546,184.383 +12.4666,184.383 +13.4825,184.383 +14.6898,184.383 +14.4046,184.383 +14.4764,184.383 +14.6944,184.383 +14.4764,184.383 +14.446,184.383 +13.9576,184.383 +13.9879,184.383 +13.523,184.383 +13.523,184.383 +14.0991,184.383 +14.2362,184.383 +15.6853,184.383 +17.1311,184.383 +14.0014,184.383 +4.76743,184.383 +4.76743,184.383 +4.76743,184.383 +4.76743,184.383 +4.76743,184.383 +4.76743,184.383 +4.76743,184.383 +8.71164,184.383 +10.2536,184.383 +10.3181,184.383 +10.3327,184.383 +10.3181,184.383 +10.3181,184.383 +10.3181,184.383 +10.3327,184.383 +9.80183,184.383 +9.80183,184.383 +9.80178,184.383 +9.80178,184.383 +9.80178,184.383 +9.80183,184.383 +9.80183,184.383 +9.73738,184.383 +9.85659,184.383 +4.61672,184.383 +4.61672,184.383 +4.61672,184.383 +4.61672,184.383 +4.61672,184.383 +4.61672,184.383 +4.61672,184.383 +7.79516,184.383 +9.61967,184.383 +9.71765,184.383 +9.71765,184.383 +9.71765,184.383 +9.71765,184.383 +9.71765,184.383 +9.71765,184.383 +10.9124,184.383 +10.4835,184.383 +10.4835,184.383 +10.6589,184.383 +10.4835,184.383 +10.835,184.383 +11.0103,184.383 +10.835,184.383 +9.29257,184.383 +4.6984,184.383 +4.68736,184.383 +4.68736,184.383 +4.67414,184.383 +4.68254,184.383 +4.68736,184.383 +4.68736,184.383 +7.87257,184.383 +9.47978,184.383 +9.47978,184.383 +9.47978,184.383 +9.47978,184.383 +9.80549,184.383 +9.47978,184.383 +9.47978,184.383 +9.20892,184.383 +9.21261,184.383 +9.21261,184.383 +8.97727,184.383 +8.97727,184.383 +9.04371,184.383 +9.04371,184.383 +9.04002,184.383 +9.04371,184.383 +9.02491,184.383 +8.83996,184.383 +9.15578,184.383 +9.15578,184.383 +9.17802,184.383 +8.90649,184.383 +8.97727,184.383 +9.21261,184.383 +8.97727,184.383 +8.97727,184.383 +9.21261,184.383 +8.97358,184.383 +8.97727,184.383 +8.97727,184.383 +8.97727,184.383 +9.1352,184.383 +9.09662,184.383 +9.09662,184.383 +9.09662,184.383 +9.12928,184.383 +9.12818,184.383 +9.10428,184.383 +9.0501,184.383 +6.96624,184.383 +6.5708,184.383 +6.18569,184.383 +5.583,184.383 +6.7487,184.383 +5.64174,184.383 +5.54205,184.383 +7.05311,184.383 +8.18937,184.383 +8.18937,184.383 +8.21543,184.383 +8.20777,184.383 +8.20777,184.383 +8.1689,184.383 +8.1689,184.383 +8.1689,184.383 +7.92079,184.383 +7.92079,184.383 +7.95967,184.383 +7.95967,184.383 +7.92079,184.383 +7.95967,184.383 +7.97707,184.383 +8.13447,184.383 +7.81816,184.383 +5.18171,184.383 +5.09225,184.383 +5.09225,184.383 +5.09225,184.383 +5.09225,184.383 +5.09225,184.383 +5.11411,184.383 +6.43374,184.383 +8.46519,184.383 +8.49181,184.383 +8.49181,184.383 +8.49181,184.383 +8.46519,184.383 +8.46519,184.383 +8.46519,184.383 +8.50199,184.383 +8.53564,184.383 +8.42027,184.383 +8.452,184.383 +8.45583,184.383 +8.44569,184.383 +8.54217,184.383 +8.54217,184.383 +8.39452,184.383 +5.54092,184.383 +6.40132,184.383 +5.54092,184.383 +6.40132,184.383 +6.40132,184.383 +6.40132,184.383 +5.56278,184.383 +6.22774,184.383 +9.34931,184.383 +9.3832,184.383 +9.3832,184.383 +9.3832,184.383 +9.3832,184.383 +9.3832,184.383 +9.33778,184.383 +9.27194,184.383 +9.35749,184.383 +9.22107,184.383 +9.25835,184.383 +9.22868,184.383 +9.27194,184.383 +9.27194,184.383 +9.27194,184.383 +9.23085,184.383 +8.50605,184.383 +7.44368,184.383 +7.65067,184.383 +7.65067,184.383 +7.65067,184.383 +7.65067,184.383 +7.65067,184.383 +8.1449,184.383 +9.67675,184.383 +9.77201,184.383 +9.77201,184.383 +9.77201,184.383 +9.77294,184.383 +9.67675,184.383 +9.67675,184.383 +9.34179,184.383 +9.25413,184.383 +9.25429,184.383 +9.256,184.383 +9.25429,184.383 +9.26651,184.383 +9.50442,184.383 +9.37146,184.383 +8.95029,184.383 +9.34246,184.383 +9.12658,184.383 +8.7807,184.383 +8.53705,184.383 +7.17831,184.383 +8.49725,184.383 +8.88994,184.383 +8.88583,184.383 +9.29372,184.383 +9.31573,184.383 +9.31573,184.383 +9.31573,184.383 +9.31573,184.383 +9.31573,184.383 +9.31573,184.383 +9.45185,184.383 +9.59067,184.383 +9.68686,184.383 +9.67622,184.383 +9.59067,184.383 +9.59067,184.383 +9.59067,184.383 +9.59067,184.383 +9.08778,184.383 +6.79027,184.383 +6.87252,184.383 +6.87252,184.383 +6.87252,184.383 +6.26741,184.383 +6.26741,184.383 +6.79027,184.383 +7.52188,184.383 +9.35786,184.383 +9.84193,184.383 +9.52181,184.383 +9.84193,184.383 +9.84193,184.383 +9.52181,184.383 +9.84193,184.383 +9.34866,184.383 +9.34866,184.383 +9.34866,184.383 +9.34866,184.383 +9.34866,184.383 +9.34866,184.383 +9.34866,184.383 +9.34866,184.383 +9.34866,184.383 +7.67374,184.383 +6.98965,184.383 +6.84981,184.383 +6.68479,184.383 +6.68479,184.383 +6.71804,184.383 +7.00663,184.383 +9.31557,184.383 +9.52582,184.383 +9.5518,184.383 +9.5896,184.383 +9.5518,184.383 +9.80212,184.383 +9.83991,184.383 +9.83991,184.383 +9.86606,184.383 +9.86606,184.383 +9.86606,184.383 +9.73445,184.383 +9.86606,184.383 +9.58976,184.383 +9.86606,184.383 +9.8772,184.383 +8.22889,184.383 +7.37392,184.383 +6.76882,184.383 +6.76882,184.383 +6.76882,184.383 +6.76882,184.383 +6.76882,184.383 +6.76882,184.383 +9.2226,184.383 +9.7137,184.383 +9.67415,184.383 +9.57796,184.383 +9.67415,184.383 +9.67415,184.383 +9.67415,184.383 +9.57796,184.383 +10.1308,184.383 +9.88049,184.383 +9.64314,184.383 +9.40167,184.383 +9.46349,184.383 +9.80589,184.383 +9.88049,184.383 +10.1308,184.383 +10.1308,184.383 +10.1672,184.383 +9.27775,184.383 +9.29203,184.383 +9.29203,184.383 +9.29203,184.383 +9.29203,184.383 +9.34425,184.383 +9.46585,184.383 +10.2571,184.383 +10.2571,184.383 +10.3199,184.383 +10.3199,184.383 +10.3199,184.383 +10.29,184.383 +10.1471,184.383 +9.58399,184.383 +9.81589,184.383 +9.81468,184.383 +9.89174,184.383 +9.81589,184.383 +9.5893,184.383 +9.5893,184.383 +9.75698,184.383 +9.74659,184.383 +9.5893,184.383 +9.24987,184.383 +9.35707,184.383 +9.59207,184.383 +9.68832,184.383 +9.38629,184.383 +9.71872,184.383 +9.83961,184.383 +9.6595,184.383 +9.9358,184.383 +9.56331,184.383 +9.83961,184.383 +9.6595,184.383 +9.6595,184.383 +9.9305,184.383 +10.055,184.383 +10.0156,184.383 +9.88359,184.383 +9.5022,184.383 +9.29844,184.383 +10.0156,184.383 +10.055,184.383 +10.055,184.383 +9.43147,184.383 +8.40348,184.383 +7.27047,184.383 +7.30751,184.383 +7.30751,184.383 +7.30751,184.383 +7.25848,184.383 +7.25848,184.383 +7.23401,184.383 +8.71414,184.383 +9.33826,184.383 +9.19636,184.383 +9.19539,184.383 +9.06293,184.383 +8.9687,184.383 +8.74934,184.383 +8.51799,184.383 +8.57384,184.383 +8.38407,184.383 +8.35421,184.383 +8.49429,184.383 +8.41929,184.383 +8.54521,184.383 +8.54521,184.383 +8.62358,184.383 +6.85529,184.383 +6.5168,184.383 +6.5168,184.383 +6.5168,184.383 +6.5168,184.383 +6.5168,184.383 +7.21171,184.383 +9.07712,184.383 +9.89798,184.383 +9.89798,184.383 +9.89798,184.383 +9.89798,184.383 +9.89798,184.383 +9.71332,184.383 +9.71332,184.383 +11.5832,184.383 +9.23489,184.383 +9.00581,184.383 +9.03234,184.383 +9.19182,184.383 +9.03271,184.383 +9.3361,184.383 +9.41139,184.383 +8.30018,184.383 +5.27607,184.383 +5.33574,184.383 +5.24944,184.383 +5.24944,184.383 +5.24944,184.383 +5.24944,184.383 +5.24944,184.383 +7.29297,184.383 +15.2578,184.383 +15.3994,184.383 +15.4746,184.383 +15.3994,184.383 +15.3994,184.383 +15.3994,184.383 +15.4746,184.383 +15.2912,184.383 +15.2912,184.383 +15.2912,184.383 +15.2912,184.383 +15.2912,184.383 +15.2912,184.383 +15.2912,184.383 +15.3577,184.383 +13.5446,184.383 +10.8543,184.383 +10.8543,184.383 +10.8543,184.383 +10.8543,184.383 +10.8543,184.383 +10.8543,184.383 +10.8803,184.383 +13.4376,184.383 +15.8097,184.383 +15.8052,184.383 +15.9014,184.383 +15.9014,184.383 +15.7675,184.383 +15.7675,184.383 +15.7675,184.383 +16.3499,184.383 +15.1067,184.383 +15.0678,184.383 +15.0678,184.383 +15.0678,184.383 +14.9121,184.383 +15.3032,184.383 +15.5707,184.383 +8.19238,184.383 +5.46106,184.383 +5.85384,184.383 +5.85384,184.383 +5.85384,184.383 +5.85384,184.383 +5.85384,184.383 +5.85384,184.383 +5.24029,184.383 +8.1024,184.383 +8.1024,184.383 +8.1024,184.383 +8.1024,184.383 +8.1024,184.383 +8.1024,184.383 +8.07975,184.383 +8.1473,184.383 +8.33663,184.383 +8.07591,184.383 +8.07591,184.383 +8.07864,184.383 +8.13614,184.383 +8.1673,184.383 +8.1673,184.383 +5.62338,184.383 +4.18711,184.383 +4.18711,184.383 +4.18711,184.383 +4.18711,184.383 +4.18711,184.383 +4.18711,184.383 +4.18711,184.383 +4.25608,184.383 +7.06715,184.383 +9.05847,184.383 +9.05847,184.383 +8.94856,184.383 +9.05847,184.383 +9.05847,184.383 +9.05847,184.383 +13.9938,184.383 +13.8766,184.383 +13.8766,184.383 +13.8766,184.383 +13.943,184.383 +13.8979,184.383 +13.8776,184.383 +13.943,184.383 +12.0917,184.383 +8.30765,184.383 +7.68959,184.383 +7.68959,184.383 +7.68959,184.383 +7.68959,184.383 +7.68959,184.383 +7.98338,184.383 +9.51092,184.383 +18.2957,184.383 +18.6005,184.383 +18.5196,184.383 +18.6005,184.383 +18.6005,184.383 +18.6005,184.383 +18.6005,184.383 +19.2898,184.383 +19.3055,184.383 +19.1944,184.383 +18.9411,184.383 +19.2222,184.383 +19.2898,184.383 +23.3751,184.383 +19.2898,184.383 +16.3609,184.383 +7.76785,184.383 +8.02638,184.383 +8.37906,184.383 +8.02638,184.383 +8.02638,184.383 +8.02638,184.383 +8.02638,184.383 +12.3188,184.383 +22.3755,184.383 +22.4565,184.383 +22.3755,184.383 +22.4565,184.383 +22.4565,184.383 +22.4565,184.383 +22.3755,184.383 +22.04,184.383 +22.3696,184.383 +21.8965,184.383 +22.0101,184.383 +22.3696,184.383 +22.0495,184.383 +22.04,184.383 +22.6365,184.383 +17.7128,184.383 +9.64581,184.383 +9.64581,184.383 +9.02775,184.383 +9.02775,184.383 +9.02775,184.383 +8.16735,184.383 +9.02775,184.383 +11.5327,184.383 +13.9037,184.383 +14.4645,184.383 +14.4645,184.383 +14.4645,184.383 +14.5484,184.383 +14.4645,184.383 +14.4645,184.383 +10.0193,184.383 +10.0193,184.383 +9.81169,184.383 +10.3627,184.383 +10.3627,184.383 +10.0181,184.383 +9.96737,184.383 +10.1118,184.383 +9.0072,184.383 +4.4947,184.383 +5.11496,184.383 +4.55437,184.383 +4.55437,184.383 +4.29584,184.383 +4.55437,184.383 +4.55437,184.383 +8.16867,184.383 +10.1663,184.383 +10.4147,184.383 +10.463,184.383 +10.4147,184.383 +10.463,184.383 +10.4147,184.383 +10.4147,184.383 +9.90344,184.383 +10.2236,184.383 +9.96758,184.383 +9.90205,184.383 +9.90344,184.383 +9.90344,184.383 +10.2236,184.383 +9.87399,184.383 +8.14455,184.383 +4.76856,184.383 +4.26552,184.383 +4.18724,184.383 +4.18724,184.383 +4.84158,184.383 +4.26552,184.383 +4.50139,184.383 +7.99293,184.383 +10.1239,184.383 +10.4685,184.383 +10.4685,184.383 +10.4685,184.383 +10.4685,184.383 +10.4685,184.383 +10.4685,184.383 +10.4808,184.383 +10.3846,184.383 +10.0349,184.383 +10.3846,184.383 +10.4808,184.383 +10.0349,184.383 +10.3846,184.383 +10.0349,184.383 +9.02353,184.383 +4.52622,184.383 +4.50101,184.383 +4.50101,184.383 +4.48748,184.383 +4.50101,184.383 +4.24248,184.383 +4.50101,184.383 +7.78746,184.383 +10.2848,184.383 +10.325,184.383 +10.3345,184.383 +10.532,184.383 +10.2702,184.383 +10.3345,184.383 +10.3345,184.383 +9.47744,184.383 +9.2637,184.383 +9.06695,184.383 +9.2637,184.383 +9.2637,184.383 +9.22228,184.383 +9.08492,184.383 +9.08492,184.383 +9.16711,184.383 +7.46674,184.383 +6.84014,184.383 +6.89471,184.383 +6.89796,184.383 +6.28544,184.383 +6.99714,184.383 +6.84014,184.383 +8.1948,184.383 +8.73343,184.383 +9.76672,184.383 +9.86291,184.383 +9.86291,184.383 +9.76672,184.383 +9.75586,184.383 +9.76672,184.383 +9.58021,184.383 +9.60699,184.383 +9.70318,184.383 +9.70318,184.383 +9.60699,184.383 +9.70318,184.383 +9.6098,184.383 +9.48826,184.383 +9.36318,184.383 +9.23316,184.383 +9.20633,184.383 +8.98004,184.383 +8.77563,184.383 +8.48279,184.383 +8.58824,184.383 +9.10742,184.383 +9.1769,184.383 +9.36733,184.383 +9.66977,184.383 +9.79554,184.383 +9.66977,184.383 +9.66977,184.383 +9.66977,184.383 +9.69936,184.383 +9.63515,184.383 +9.73778,184.383 +9.77875,184.383 +9.72854,184.383 +9.58968,184.383 +9.63305,184.383 +9.62073,184.383 +9.61495,184.383 +9.33317,184.383 +8.82909,184.383 +8.49855,184.383 +8.29544,184.383 +8.27919,184.383 +8.26743,184.383 +8.33235,184.383 +8.52386,184.383 +9.06215,184.383 +9.8947,184.383 +9.55341,184.383 +9.55341,184.383 +9.55341,184.383 +9.68814,184.383 +9.56898,184.383 +9.55341,184.383 +9.92361,184.383 +9.56462,184.383 +9.56462,184.383 +9.56462,184.383 +9.56462,184.383 +9.64129,184.383 +9.96141,184.383 +9.96141,184.383 +9.96141,184.383 +8.9951,184.383 +9.2425,184.383 +9.46168,184.383 +9.76271,184.383 +9.29776,184.383 +9.29776,184.383 +9.71938,184.383 +9.14671,184.383 +9.72297,184.383 +9.95897,184.383 +9.95897,184.383 +9.63885,184.383 +9.92117,184.383 +9.56218,184.383 +9.95897,184.383 +9.74155,184.44 +9.71137,184.44 +9.70855,184.44 +9.76734,184.44 +10.2498,184.44 +10.2606,184.44 +10.2606,184.44 +10.0701,184.44 +7.73259,184.44 +4.18725,184.44 +4.18724,184.44 +4.18711,184.44 +4.18711,184.44 +4.18711,184.44 +4.18711,184.44 +4.18711,184.44 +4.33911,184.44 +9.81531,184.44 +10.3906,184.44 +10.2944,184.44 +10.7107,184.44 +10.3906,184.44 +10.3906,184.44 +10.2944,184.44 +10.0509,184.44 +10.3194,184.44 +10.3194,184.44 +10.4156,184.44 +10.3194,184.44 +10.3194,184.44 +10.3194,184.44 +10.3194,184.44 +10.3675,184.44 +7.68438,184.44 +7.48283,184.44 +7.48283,184.44 +7.16432,184.44 +7.79835,184.44 +7.48076,184.44 +7.36798,184.44 +9.43418,184.44 +18.1499,184.44 +18.5576,184.44 +18.5576,184.44 +18.5576,184.44 +18.5576,184.44 +18.5576,184.44 +18.5576,184.44 +18.5135,184.44 +18.5135,184.44 +18.5064,184.44 +18.5064,184.44 +18.5064,184.44 +18.5135,184.44 +17.7596,184.44 +18.5135,184.44 +12.6811,184.44 +10.9948,184.44 +9.38882,184.44 +8.89546,184.44 +9.38882,184.44 +8.27637,184.44 +9.02172,184.44 +9.69411,184.44 +12.7264,184.44 +13.7621,184.44 +13.7881,184.44 +13.7881,184.44 +13.7881,184.44 +13.7881,184.44 +13.7881,184.44 +13.7881,184.44 +14.5109,184.44 +14.5109,184.44 +14.5109,184.44 +14.3068,184.44 +14.5109,184.44 +14.3068,184.44 +14.3068,184.44 +19.666,184.44 +9.00276,184.44 +5.75178,184.44 +4.56589,184.44 +4.56589,184.44 +4.56589,184.44 +4.54946,184.44 +4.50621,184.44 +4.56589,184.44 +7.86376,184.44 +12.4661,184.44 +13.6653,184.44 +14.1304,184.44 +13.8103,184.44 +14.1304,184.44 +13.8103,184.44 +13.8103,184.44 +10.1093,184.44 +10.1093,184.44 +10.1093,184.44 +10.2055,184.44 +10.0833,184.44 +10.1795,184.44 +12.9941,184.44 +12.8029,184.44 +9.17808,184.44 +5.46655,184.44 +5.46655,184.44 +5.5412,184.44 +5.5412,184.44 +5.5412,184.44 +5.5412,184.44 +4.86467,184.44 +9.01139,184.44 +10.4911,184.44 +10.4911,184.44 +10.5873,184.44 +10.2672,184.44 +10.5873,184.44 +10.5873,184.44 +10.2672,184.44 +9.84479,184.44 +9.84479,184.44 +9.77546,184.44 +10.037,184.44 +10.0767,184.44 +9.84479,184.44 +10.0767,184.44 +10.0389,184.44 +10.0767,184.44 +9.02782,184.44 +8.98959,184.44 +8.98959,184.44 +8.88148,184.44 +8.7456,184.44 +8.9282,184.44 +8.52854,184.44 +9.20637,184.44 +10.0767,184.44 +10.0767,184.44 +9.56848,184.44 +9.56848,184.44 +9.56848,184.44 +9.56848,184.44 +10.0767,184.44 +10.0249,184.44 +10.0249,184.44 +10.0942,184.44 +10.0627,184.44 +10.132,184.44 +10.132,184.44 +10.132,184.44 +10.132,184.44 +9.31787,184.44 +6.0991,184.44 +4.95841,184.44 +5.73227,184.44 +5.81881,184.44 +5.81881,184.44 +5.81881,184.44 +5.81881,184.44 +5.95975,184.44 +5.61748,184.44 +8.03689,184.44 +8.03689,184.44 +7.99756,184.44 +8.03689,184.44 +8.03689,184.44 +8.03689,184.44 +8.04133,184.44 +8.04133,184.44 +8.04133,184.44 +8.04133,184.44 +8.04133,184.44 +8.04133,184.44 +8.07913,184.44 +8.04133,184.44 +8.07913,184.44 +5.09781,184.44 +4.77634,184.44 +4.87001,184.44 +4.53609,184.44 +4.6871,184.44 +4.62742,184.44 +4.77634,184.44 +5.06373,184.44 +5.84628,184.44 +8.23102,184.44 +8.26882,184.44 +8.23102,184.44 +8.23102,184.44 +8.23102,184.44 +8.23102,184.44 +8.20432,184.44 +8.20432,184.44 +8.20432,184.44 +8.20432,184.44 +8.24211,184.44 +8.20432,184.44 +8.24211,184.44 +8.20432,184.44 +7.98466,184.44 +5.74593,184.44 +5.4874,184.44 +5.74593,184.44 +5.52269,184.44 +5.5623,184.44 +5.74593,184.44 +5.74593,184.44 +5.85647,184.44 +9.19986,184.44 +8.49418,184.44 +8.95131,184.44 +8.91767,184.44 +8.98026,184.44 +8.52313,184.44 +9.40375,184.44 +9.22834,184.44 +9.22834,184.44 +9.22834,184.44 +9.22834,184.44 +9.19054,184.44 +9.04018,184.44 +8.77121,184.44 +9.19054,184.44 +7.81737,184.44 +4.20058,184.44 +4.20058,184.44 +4.20058,184.44 +4.20058,184.44 +4.20058,184.44 +4.20058,184.44 +4.20058,184.44 +4.25602,184.44 +5.78199,184.44 +6.40848,184.44 +7.80114,184.44 +7.80114,184.44 +7.80114,184.44 +7.80114,184.44 +7.80114,184.44 +8.54127,184.44 +8.36045,184.44 +8.36045,184.44 +8.26426,184.44 +8.26426,184.44 +8.36045,184.44 +8.36045,184.44 +8.10013,184.44 +7.62974,184.44 +4.37238,184.44 +4.54588,184.44 +4.54588,184.44 +4.54588,184.44 +4.54588,184.44 +4.54588,184.44 +4.54588,184.44 +4.35553,184.44 +6.22419,184.44 +8.17745,184.44 +8.17745,184.44 +8.08126,184.44 +8.17745,184.44 +8.17745,184.44 +8.17745,184.44 +8.1828,184.44 +8.1828,184.44 +8.1828,184.44 +8.1828,184.44 +8.1828,184.44 +8.1828,184.44 +8.1828,184.44 +8.11201,184.44 +6.81326,184.44 +4.35986,184.44 +5.47879,184.44 +5.47879,184.44 +5.41911,184.44 +5.22026,184.44 +5.47879,184.44 +5.47879,184.44 +4.94476,184.44 +6.06356,184.44 +6.88891,184.44 +8.05461,184.44 +8.05461,184.44 +8.05461,184.44 +8.05461,184.44 +8.05461,184.44 +8.50367,184.44 +8.50367,184.44 +8.50367,184.44 +8.50367,184.44 +7.94308,184.44 +8.50367,184.44 +8.50367,184.44 +8.50367,184.44 +6.59104,184.44 +4.19004,184.44 +4.19004,184.44 +4.19004,184.44 +4.19002,184.44 +4.19004,184.44 +4.19004,184.44 +4.19004,184.44 +4.73371,184.44 +7.79701,184.44 +8.36399,184.44 +8.36399,184.44 +8.3576,184.44 +8.3576,184.44 +8.3576,184.44 +8.3576,184.44 +9.29794,184.44 +9.15699,184.44 +9.25317,184.44 +8.98816,184.44 +9.15699,184.44 +9.15699,184.44 +9.29794,184.44 +8.89139,184.44 +8.64506,184.44 +4.25015,184.44 +4.50868,184.44 +4.50868,184.44 +4.50868,184.44 +4.50868,184.44 +5.36908,184.44 +4.50868,184.44 +5.45611,184.44 +9.22805,184.44 +9.12853,184.44 +9.12853,184.44 +9.12853,184.44 +9.15632,184.44 +9.12853,184.44 +9.15632,184.44 +8.95162,184.44 +8.95162,184.44 +8.95162,184.44 +8.95162,184.44 +8.95162,184.44 +8.95162,184.44 +8.95162,184.44 +8.95162,184.44 +8.46183,184.44 +4.9859,184.44 +5.19136,184.44 +5.16532,184.44 +4.92868,184.44 +4.96475,184.44 +4.97953,184.44 +4.97953,184.44 +5.97264,184.44 +6.70306,184.44 +6.70306,184.44 +8.69564,184.44 +8.09573,184.44 +8.09573,184.44 +8.13505,184.44 +8.09573,184.44 +6.9078,184.44 +6.9078,184.44 +6.75409,184.44 +7.81858,184.44 +8.33887,184.44 +7.69536,184.44 +7.932,184.44 +7.77828,184.44 +5.39284,184.44 +4.187,184.44 +4.187,184.44 +4.18699,184.44 +4.187,184.44 +4.187,184.44 +4.187,184.44 +4.187,184.44 +4.2996,184.44 +5.12435,184.44 +5.15405,184.44 +6.17824,184.44 +6.17824,184.44 +6.17824,184.44 +6.78335,184.44 +6.78335,184.44 +8.57908,184.44 +8.57908,184.44 +8.57908,184.44 +8.01849,184.44 +8.01849,184.44 +7.2794,184.44 +8.48289,184.44 +6.72451,184.44 +7.34114,184.44 +4.18711,184.44 +4.18711,184.44 +4.18711,184.44 +4.18711,184.44 +4.18711,184.44 +4.44564,184.44 +4.18711,184.44 +4.56273,184.44 +7.13542,184.44 +7.18318,184.44 +8.66015,184.44 +8.67539,184.44 +8.67539,184.44 +8.67539,184.44 +8.69873,184.44 +6.2624,184.44 +7.65507,184.44 +7.65507,184.44 +7.65507,184.44 +6.2624,184.44 +6.86751,184.44 +7.04996,184.44 +7.04996,184.44 +6.89928,184.44 +5.45346,184.44 +5.433,184.44 +5.45346,184.44 +4.46578,184.44 +5.19493,184.44 +5.49307,184.44 +5.45347,184.44 +5.3444,184.44 +5.5972,184.44 +7.78709,184.44 +7.78709,184.44 +7.18198,184.44 +7.78709,184.44 +7.78709,184.44 +7.18198,184.44 +7.80624,184.44 +7.80624,184.44 +7.80624,184.44 +7.80624,184.44 +7.80624,184.44 +7.80624,184.44 +7.80624,184.44 +6.48399,184.44 +4.23974,184.44 +4.187,184.44 +4.187,184.44 +4.187,184.44 +4.187,184.44 +4.187,184.44 +4.187,184.44 +4.187,184.44 +4.49684,184.44 +5.0131,184.44 +5.64646,184.44 +6.44272,184.44 +6.43402,184.44 +6.43402,184.44 +6.43402,184.44 +6.43402,184.44 +7.40937,184.44 +7.84419,184.44 +7.84485,184.44 +7.06546,184.44 +6.67915,184.44 +7.37005,184.44 +7.40937,184.44 +6.7408,184.44 +4.56584,184.44 +4.20071,184.44 +4.20071,184.44 +4.20071,184.44 +4.20071,184.44 +4.20071,184.44 +4.20071,184.44 +4.20073,184.44 +4.51565,184.44 +8.64138,184.44 +8.70704,184.44 +9.15293,184.44 +8.70704,184.44 +9.15293,184.44 +8.70704,184.44 +9.15293,184.44 +10.5257,184.44 +10.5257,184.44 +10.6219,184.44 +10.6219,184.44 +10.6219,184.44 +10.2703,184.44 +10.6219,184.44 +9.31551,184.44 +7.67267,184.44 +4.18714,184.44 +4.18711,184.44 +4.18711,184.44 +4.18711,184.44 +4.18711,184.44 +4.18711,184.44 +4.18711,184.44 +4.44382,184.44 +8.74285,184.44 +10.1215,184.44 +9.90415,184.44 +10.0003,184.44 +9.90415,184.44 +9.90415,184.44 +10.0003,184.44 +9.97914,184.44 +9.97914,184.44 +9.65709,184.44 +9.97914,184.44 +9.65902,184.44 +9.97914,184.44 +9.97914,184.44 +9.95309,184.44 +7.80271,184.44 +4.18711,184.44 +4.18709,184.44 +4.18711,184.44 +4.18711,184.44 +4.18711,184.44 +4.18711,184.44 +4.18711,184.44 +4.68266,184.44 +10.1765,184.44 +10.073,184.44 +10.073,184.44 +10.073,184.44 +10.073,184.44 +10.073,184.44 +10.073,184.44 +10.1154,184.44 +10.0192,184.44 +10.263,184.44 +9.93195,184.44 +9.9254,184.44 +10.2402,184.44 +10.3473,184.44 +10.2946,184.44 +8.95101,184.44 +4.79432,184.44 +4.18711,184.44 +4.18711,184.44 +4.18711,184.44 +4.18711,184.44 +4.18711,184.44 +4.18711,184.44 +7.74083,184.44 +10.1489,184.44 +9.80646,184.44 +9.90265,184.44 +10.2228,184.44 +9.90265,184.44 +9.90265,184.44 +10.0759,184.44 +9.70648,184.44 +9.93838,184.44 +10.0346,184.44 +9.93838,184.44 +10.0346,184.44 +9.93838,184.44 +9.93838,184.44 +10.3488,184.44 +7.53404,184.44 +4.18719,184.44 +4.18719,184.44 +4.18719,184.44 +4.18718,184.44 +4.7518,184.44 +4.18719,184.44 +4.18719,184.44 +4.5254,184.44 +10.1887,184.44 +10.0346,184.44 +10.0346,184.44 +9.91027,184.44 +9.93838,184.44 +9.80267,184.44 +9.80267,184.44 +9.77414,184.44 +10.0754,184.44 +10.0754,184.44 +10.0754,184.44 +9.82698,184.44 +10.0754,184.44 +8.99867,184.44 +9.89418,184.44 +8.1245,184.44 +5.14489,184.44 +4.54302,184.44 +4.54295,184.44 +4.54295,184.44 +4.54302,184.44 +4.68878,184.44 +4.54302,184.44 +6.75705,184.44 +9.07809,184.44 +9.02357,184.44 +9.25891,184.44 +9.07809,184.44 +8.84275,184.44 +9.25891,184.44 +8.84275,184.44 +8.83323,184.44 +8.83323,184.44 +8.83323,184.44 +8.83323,184.44 +8.83323,184.44 +8.83323,184.44 +8.83323,184.44 +8.83323,184.44 +8.33849,184.44 +5.45312,184.44 +5.28792,184.44 +5.15097,184.44 +5.15097,184.44 +5.15097,184.44 +5.15097,184.44 +5.15097,184.44 +5.99606,184.44 +7.65181,184.44 +8.34765,184.44 +8.34765,184.44 +8.31821,184.44 +8.31821,184.44 +8.31821,184.44 +8.31821,184.44 +8.71975,184.44 +8.71975,184.44 +8.44345,184.44 +8.71975,184.44 +8.44345,184.44 +8.71975,184.44 +8.52437,184.44 +8.79047,184.44 +4.33649,184.44 +4.1932,184.44 +4.1932,184.44 +4.83975,184.44 +4.75874,184.44 +4.76024,184.44 +4.1932,184.44 +4.1932,184.44 +5.40763,184.44 +8.40808,184.44 +9.07383,184.44 +9.07383,184.44 +9.07383,184.44 +9.03604,184.44 +9.03604,184.44 +8.75974,184.44 +8.59769,184.44 +8.59769,184.44 +8.59769,184.44 +8.59769,184.44 +8.56477,184.44 +8.91179,184.44 +8.63548,184.44 +8.84107,184.44 +8.91179,184.44 +6.82435,184.44 +6.08834,184.44 +5.49534,184.44 +5.53674,184.44 +5.50504,184.44 +6.36544,184.44 +5.53674,184.44 +5.54767,184.44 +5.74273,184.44 +6.49024,184.44 +8.44349,184.44 +8.44349,184.44 +8.44349,184.44 +8.44349,184.44 +7.65594,184.44 +8.79039,183.79 +8.79039,183.79 +9.04636,183.79 +8.74362,183.79 +9.04636,183.79 +9.04636,183.79 +8.4388,183.79 +7.70539,183.79 +4.18724,183.79 +4.18711,183.79 +4.18711,183.79 +4.18711,183.79 +4.18709,183.79 +4.18711,183.79 +4.18711,183.79 +4.18711,183.79 +4.18711,183.79 +5.16101,183.79 +5.2688,183.79 +7.22206,183.79 +7.22206,183.79 +7.22206,183.79 +7.22206,183.79 +7.22206,183.79 +7.3482,183.79 +6.78318,183.79 +7.34377,183.79 +7.58041,183.79 +7.58484,183.79 +7.61929,183.79 +7.61929,183.79 +7.51451,183.79 +4.18724,183.79 +4.18718,183.79 +4.18718,183.79 +4.18718,183.79 +4.18718,183.79 +4.18718,183.79 +4.18718,183.79 +4.18718,183.79 +4.47856,183.79 +5.89222,183.79 +8.01685,183.79 +8.01685,183.79 +8.01685,183.79 +8.01685,183.79 +8.01685,183.79 +8.01685,183.79 +8.09033,183.79 +8.11977,183.79 +8.10062,183.79 +8.10062,183.79 +8.10062,183.79 +8.09033,183.79 +8.09033,183.79 +7.73791,183.79 +4.26762,183.79 +4.26762,183.79 +4.24099,183.79 +4.24099,183.79 +4.24099,183.79 +4.26517,183.79 +4.26763,183.79 +5.26816,183.79 +6.08072,183.79 +7.96095,183.79 +8.72546,183.79 +8.72546,183.79 +8.72546,183.79 +8.72546,183.79 +8.72546,183.79 +8.72546,183.79 +7.99615,183.79 +7.99615,183.79 +7.99615,183.79 +7.99615,183.79 +7.96771,183.79 +7.94853,183.79 +7.98691,183.79 +7.99615,183.79 +7.0144,183.79 +6.03538,183.79 +6.03538,183.79 +6.03538,183.79 +5.91863,183.79 +6.02316,183.79 +5.98355,183.79 +6.43343,183.79 +7.22098,183.79 +7.82609,183.79 +7.90259,183.79 +7.90259,183.79 +7.81739,183.79 +7.81739,183.79 +7.82609,183.79 +7.82609,183.79 +8.50389,183.79 +8.25726,183.79 +8.20787,183.79 +8.12101,183.79 +7.85154,183.79 +7.63242,183.79 +7.62773,183.79 +4.82205,183.79 +4.18711,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.30682,183.79 +5.35485,183.79 +5.32839,183.79 +5.57377,183.79 +5.37514,183.79 +5.37514,183.79 +5.35137,183.79 +5.45903,183.79 +5.64552,183.79 +6.12756,183.79 +5.26957,183.79 +5.94755,183.79 +5.98158,183.79 +5.50755,183.79 +4.60754,183.79 +5.1859,183.79 +4.25966,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.18702,183.79 +4.7596,183.79 +7.69445,183.79 +7.69445,183.79 +7.69445,183.79 +7.69445,183.79 +7.69445,183.79 +7.69445,183.79 +7.931,183.79 +7.931,183.79 +7.931,183.79 +7.931,183.79 +7.931,183.79 +7.96988,183.79 +7.99069,183.79 +7.72284,183.79 +4.18724,183.79 +4.1872,183.79 +4.1872,183.79 +4.1872,183.79 +4.18709,183.79 +4.18718,183.79 +4.1872,183.79 +4.1872,183.79 +4.1872,183.79 +6.64858,183.79 +9.17157,183.79 +9.24329,183.79 +9.22268,183.79 +9.24329,183.79 +9.2055,183.79 +9.18489,183.79 +9.88995,183.79 +9.88995,183.79 +9.70042,183.79 +9.88995,183.79 +9.88995,183.79 +9.70042,183.79 +9.88995,183.79 +8.87471,183.79 +5.03307,183.79 +4.18724,183.79 +4.18724,183.79 +4.18724,183.79 +4.18724,183.79 +4.18724,183.79 +4.18724,183.79 +4.18724,183.79 +5.02281,183.79 +9.20822,183.79 +9.35614,183.79 +9.49431,183.79 +9.49431,183.79 +9.49431,183.79 +9.45652,183.79 +9.45652,183.79 +9.66953,183.79 +9.66953,183.79 +9.63173,183.79 +9.66953,183.79 +9.39322,183.79 +9.91354,183.79 +10.0291,183.79 +9.26625,183.79 +4.84042,183.79 +4.58108,183.79 +5.44148,183.79 +5.44148,183.79 +5.44148,183.79 +5.44148,183.79 +5.44148,183.79 +5.44148,183.79 +4.67649,183.79 +7.4396,183.79 +8.22432,183.79 +9.20644,183.79 +9.20644,183.79 +9.20644,183.79 +9.20644,183.79 +8.41888,183.79 +9.28589,183.79 +9.28589,183.79 +8.96012,183.79 +8.89233,183.79 +8.9974,183.79 +8.9974,183.79 +8.9974,183.79 +8.68338,183.79 +7.6779,183.79 +7.14871,183.79 +7.40724,183.79 +7.40724,183.79 +7.40724,183.79 +7.40724,183.79 +6.30896,183.79 +7.40724,183.79 +6.30908,183.79 +9.42849,183.79 +9.42849,183.79 +9.38307,183.79 +9.15219,183.79 +9.38307,183.79 +9.10676,183.79 +9.15219,183.79 +9.15511,183.79 +9.15511,183.79 +9.15511,183.79 +9.15511,183.79 +9.14817,183.79 +9.15511,183.79 +9.15511,183.79 +7.3849,183.79 +4.18718,183.79 +4.18707,183.79 +4.18707,183.79 +4.18707,183.79 +4.18707,183.79 +4.18707,183.79 +4.18707,183.79 +4.18707,183.79 +4.18714,183.79 +5.10115,183.79 +5.7955,183.79 +7.14365,183.79 +6.90701,183.79 +7.14365,183.79 +6.90701,183.79 +7.14365,183.79 +6.0932,183.79 +6.0932,183.79 +6.0932,183.79 +6.11081,183.79 +6.0932,183.79 +6.0932,183.79 +6.0932,183.79 +5.61579,183.79 +4.2558,183.79 +4.23965,183.79 +4.18725,183.79 +4.18725,183.79 +4.23964,183.79 +4.23965,183.79 +4.23965,183.79 +4.23965,183.79 +4.32475,183.79 +4.8914,183.79 +5.17387,183.79 +7.38563,183.79 +7.38563,183.79 +7.38563,183.79 +7.38563,183.79 +7.14899,183.79 +7.25681,183.79 +7.25681,183.79 +7.25681,183.79 +7.25681,183.79 +7.25681,183.79 +7.25681,183.79 +7.25681,183.79 +4.18718,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +5.43574,183.79 +4.7218,183.79 +4.7218,183.79 +4.7218,183.79 +4.72181,183.79 +4.7218,183.79 +4.72181,183.79 +6.1903,183.79 +5.62971,183.79 +6.15841,183.79 +5.33877,183.79 +5.62971,183.79 +5.86635,183.79 +5.63938,183.79 +4.47161,183.79 +4.18703,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.18701,183.79 +5.29706,183.79 +5.3477,183.79 +7.53759,183.79 +6.977,183.79 +6.14493,183.79 +6.93248,183.79 +7.30095,183.79 +8.03363,183.79 +8.03363,183.79 +8.02493,183.79 +8.02493,183.79 +6.85923,183.79 +8.02493,183.79 +8.02493,183.79 +6.06573,183.79 +4.18711,183.79 +4.18711,183.79 +4.187,183.79 +4.18711,183.79 +4.18711,183.79 +4.18711,183.79 +4.187,183.79 +4.18711,183.79 +4.18711,183.79 +4.82904,183.79 +8.34464,183.79 +8.44082,183.79 +8.44082,183.79 +8.44082,183.79 +8.44082,183.79 +8.44082,183.79 +8.96481,183.79 +8.96481,183.79 +8.96481,183.79 +9.22079,183.79 +8.96481,183.79 +8.96481,183.79 +8.96481,183.79 +7.39313,183.79 +4.18713,183.79 +4.18711,183.79 +4.18711,183.79 +4.18711,183.79 +4.18711,183.79 +4.18711,183.79 +4.88698,183.79 +4.18711,183.79 +4.27045,183.79 +4.91835,183.79 +8.51042,183.79 +9.0835,183.79 +8.3704,183.79 +9.0835,183.79 +9.22352,183.79 +9.0835,183.79 +9.16916,183.79 +9.16916,183.79 +9.16916,183.79 +9.16916,183.79 +8.74566,183.79 +8.74566,183.79 +8.74566,183.79 +7.7944,183.79 +4.18724,183.79 +4.18718,183.79 +4.18718,183.79 +4.18711,183.79 +4.18718,183.79 +4.18718,183.79 +4.18718,183.79 +4.73405,183.79 +4.31457,183.79 +6.37048,183.79 +8.23746,183.79 +8.27525,183.79 +8.27525,183.79 +8.27525,183.79 +8.27525,183.79 +8.27525,183.79 +8.38083,183.79 +8.38083,183.79 +8.38083,183.79 +8.38083,183.79 +8.38083,183.79 +8.38083,183.79 +8.38083,183.79 +7.95423,183.79 +4.41988,183.79 +4.18724,183.79 +4.18718,183.79 +4.18718,183.79 +4.18718,183.79 +4.18718,183.79 +4.18718,183.79 +4.18718,183.79 +5.04055,183.79 +5.39423,183.79 +6.42757,183.79 +8.38083,183.79 +8.38083,183.79 +8.38083,183.79 +8.38083,183.79 +8.38083,183.79 +8.0831,183.79 +8.0831,183.79 +8.0831,183.79 +8.0831,183.79 +8.0831,183.79 +8.0831,183.79 +8.04102,183.79 +7.79467,183.79 +5.14606,183.79 +4.18718,183.79 +4.18718,183.79 +4.18718,183.79 +4.18718,183.79 +4.18718,183.79 +4.18718,183.79 +4.18718,183.79 +4.24212,183.79 +4.94188,183.79 +6.85577,183.79 +8.02147,183.79 +8.02147,183.79 +8.02147,183.79 +8.02147,183.79 +8.02147,183.79 +7.95702,183.79 +7.95702,183.79 +7.95702,183.79 +7.95702,183.79 +7.95702,183.79 +7.95702,183.79 +7.95702,183.79 +7.56084,183.79 +5.2229,183.79 +4.18718,183.79 +4.18718,183.79 +4.18711,183.79 +4.18711,183.79 +4.18711,183.79 +4.18718,183.79 +4.18718,183.79 +4.49672,183.79 +4.82052,183.79 +7.10212,183.79 +7.10212,183.79 +7.66271,183.79 +7.10212,183.79 +7.10212,183.79 +7.10212,183.79 +6.94583,183.79 +7.50642,183.79 +6.94583,183.79 +6.94583,183.79 +7.50642,183.79 +7.50642,183.79 +7.50642,183.79 +4.58422,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.29903,183.79 +5.01993,183.79 +6.48053,183.79 +5.6833,183.79 +6.48053,183.79 +5.94972,183.79 +5.91994,183.79 +5.1029,183.79 +5.83018,183.79 +5.90061,183.79 +5.90058,183.79 +6.00579,183.79 +5.84918,183.79 +6.10198,183.79 +4.26012,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.26675,183.79 +5.88896,183.79 +5.19203,183.79 +5.79714,183.79 +5.22147,183.79 +5.22147,183.79 +5.18367,183.79 +5.21665,183.79 +5.77724,183.79 +5.77724,183.79 +6.38235,183.79 +5.21665,183.79 +5.21665,183.79 +5.21665,183.79 +5.49882,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.2524,183.79 +5.53222,183.79 +5.63891,183.79 +7.59216,183.79 +7.59216,183.79 +7.59216,183.79 +7.59216,183.79 +6.99225,183.79 +7.93012,183.79 +7.93882,183.79 +7.93882,183.79 +7.93882,183.79 +7.93882,183.79 +7.93882,183.79 +7.93882,183.79 +4.38308,183.79 +4.18711,183.79 +4.18709,183.79 +4.18709,183.79 +4.18709,183.79 +4.18709,183.79 +4.18709,183.79 +4.18709,183.79 +4.18709,183.79 +4.18711,183.79 +5.26082,183.79 +5.39644,183.79 +7.38156,183.79 +7.38156,183.79 +7.38156,183.79 +6.82097,183.79 +7.38156,183.79 +7.31199,183.79 +7.31199,183.79 +7.31199,183.79 +6.78478,183.79 +6.1463,183.79 +6.75141,183.79 +6.70689,183.79 +4.49986,183.79 +4.18703,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.18703,183.79 +4.36467,183.79 +7.02509,183.79 +7.6302,183.79 +7.6302,183.79 +7.6302,183.79 +7.6302,183.79 +7.58813,183.79 +7.59197,183.79 +6.80442,183.79 +6.80442,183.79 +6.80442,183.79 +7.59197,183.79 +7.59197,183.79 +7.59197,183.79 +4.36584,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +5.34747,183.79 +6.25127,183.79 +7.41697,183.79 +7.41697,183.79 +7.41697,183.79 +7.41697,183.79 +7.41697,183.79 +7.33218,183.79 +6.77159,183.79 +6.53495,183.79 +6.16648,183.79 +6.77159,183.79 +6.77159,183.79 +6.62162,183.79 +4.41358,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.21463,183.79 +4.34243,183.79 +4.97271,183.79 +4.97271,183.79 +4.97271,183.79 +4.97271,183.79 +5.57782,183.79 +4.97271,183.79 +5.92938,183.79 +6.48997,183.79 +5.92938,183.79 +6.48998,183.79 +5.92938,183.79 +6.48997,183.79 +7.09508,183.79 +4.47985,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.75163,183.79 +4.9033,183.79 +4.187,183.79 +4.88698,183.79 +4.187,183.79 +4.27783,183.79 +6.04179,183.79 +5.28879,183.79 +5.28879,183.79 +5.28879,183.79 +5.28879,183.79 +5.28879,183.79 +6.25235,183.79 +6.28179,183.79 +6.28179,183.79 +6.28179,183.79 +6.28179,183.79 +6.28179,183.79 +5.49424,183.79 +4.2656,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.78985,183.79 +5.83032,183.79 +7.92685,183.79 +7.92685,183.79 +7.92685,183.79 +7.9438,183.79 +7.96573,183.79 +8.09873,183.79 +8.09873,183.79 +8.09873,183.79 +8.09873,183.79 +8.09873,183.79 +8.13761,183.79 +8.09873,183.79 +6.74485,183.79 +4.18712,183.79 +5.5091,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.18701,183.79 +5.60077,183.79 +8.25609,183.79 +8.25609,183.79 +8.21829,183.79 +8.21829,183.79 +8.21829,183.79 +8.25609,183.79 +8.26984,183.79 +8.26984,183.79 +8.26984,183.79 +8.26984,183.79 +8.26984,183.79 +8.26984,183.79 +8.26984,183.79 +6.38138,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.187,183.79 +4.23292,183.79 +4.34256,183.79 +5.69255,183.79 +7.64581,183.79 +7.64581,183.79 +7.64581,183.79 +7.64581,183.79 +7.64581,183.79 +7.57108,165.103 +7.57108,165.103 +7.56016,165.103 +6.76196,165.103 +7.57108,165.103 +7.57108,165.103 +7.09823,165.103 +5.36621,165.103 +4.18711,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.18701,165.103 +4.4928,165.103 +4.61764,165.103 +4.61764,165.103 +4.35911,165.103 +4.61764,165.103 +4.9197,165.103 +5.17825,165.103 +4.36024,165.103 +4.61877,165.103 +4.36024,165.103 +4.36024,165.103 +4.36024,165.103 +4.36024,165.103 +4.36024,165.103 +4.48079,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.48082,165.103 +4.45891,165.103 +5.02488,165.103 +5.02488,165.103 +5.34883,165.103 +5.02488,165.103 +5.02488,165.103 +5.12191,165.103 +5.12191,165.103 +5.6825,165.103 +5.12191,165.103 +6.47006,165.103 +5.90947,165.103 +5.90947,165.103 +5.64582,165.103 +4.18714,165.103 +4.18711,165.103 +4.18711,165.103 +4.18711,165.103 +4.18711,165.103 +4.18711,165.103 +4.18711,165.103 +4.18711,165.103 +4.18714,165.103 +4.86446,165.103 +8.10846,165.103 +8.10846,165.103 +8.10846,165.103 +8.10846,165.103 +8.10846,165.103 +8.1379,165.103 +8.14735,165.103 +8.14735,165.103 +8.14735,165.103 +8.14735,165.103 +8.14735,165.103 +8.14735,165.103 +8.14735,165.103 +7.88361,165.103 +4.18721,165.103 +4.18721,165.103 +4.18721,165.103 +4.18719,165.103 +4.18718,165.103 +4.18719,165.103 +4.18718,165.103 +4.18721,165.103 +5.08427,165.103 +7.24331,165.103 +7.24331,165.103 +8.03086,165.103 +8.03086,165.103 +8.03086,165.103 +8.03086,165.103 +8.03086,165.103 +8.04838,165.103 +8.04838,165.103 +8.04838,165.103 +8.04838,165.103 +8.06756,165.103 +8.06756,165.103 +8.06756,165.103 +7.55937,165.103 +5.52397,165.103 +4.30198,165.103 +4.49288,165.103 +4.49288,165.103 +4.49288,165.103 +4.49288,165.103 +4.49288,165.103 +4.23436,165.103 +4.78287,165.103 +5.40523,165.103 +8.09626,165.103 +8.09626,165.103 +8.09626,165.103 +8.09626,165.103 +8.09626,165.103 +8.07708,165.103 +7.91746,165.103 +7.91746,165.103 +7.91746,165.103 +7.87858,165.103 +7.95583,165.103 +7.91746,165.103 +7.95537,165.103 +7.87858,165.103 +4.97772,165.103 +4.27241,165.103 +4.27234,165.103 +4.27234,165.103 +4.27234,165.103 +4.23021,165.103 +4.27234,165.103 +4.27234,165.103 +4.28574,165.103 +5.73107,165.103 +5.33908,165.103 +5.94419,165.103 +5.94419,165.103 +5.94419,165.103 +5.68566,165.103 +5.68566,165.103 +5.8676,165.103 +5.8676,165.103 +5.8676,165.103 +5.8676,165.103 +5.8676,165.103 +5.80538,165.103 +6.45671,165.103 +4.97934,165.103 +4.25943,165.103 +4.21311,165.103 +4.18695,165.103 +4.18694,165.103 +4.18694,165.103 +4.18694,165.103 +4.18694,165.103 +4.18694,165.103 +4.18695,165.103 +4.18702,165.103 +4.56595,165.103 +5.73165,165.103 +5.12654,165.103 +5.12654,165.103 +5.73165,165.103 +5.17106,165.103 +5.33756,165.103 +5.11063,165.103 +5.11063,165.103 +4.55004,165.103 +5.1106,165.103 +5.89815,165.103 +4.21127,165.103 +4.187,165.103 +4.18694,165.103 +4.18694,165.103 +4.18694,165.103 +4.18694,165.103 +4.1869,165.103 +4.18694,165.103 +4.18694,165.103 +4.18695,165.103 +4.187,165.103 +4.4698,165.103 +4.87701,165.103 +6.73383,165.103 +7.33893,165.103 +7.33893,165.103 +7.33893,165.103 +7.33893,165.103 +6.8892,165.103 +7.44979,165.103 +7.44979,165.103 +7.44979,165.103 +7.44979,165.103 +7.44979,165.103 +7.44979,165.103 +4.51172,165.103 +4.18711,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.18711,165.103 +4.18711,165.103 +4.18711,165.103 +4.18711,165.103 +4.48106,165.103 +5.2306,165.103 +5.54085,165.103 +7.53343,165.103 +7.53343,165.103 +6.93351,165.103 +7.53343,165.103 +7.53343,165.103 +6.9156,165.103 +6.12805,165.103 +7.47619,165.103 +7.47619,165.103 +6.9156,165.103 +7.47619,165.103 +7.47619,165.103 +6.37398,165.103 +4.18714,165.103 +4.18711,165.103 +4.18711,165.103 +4.18711,165.103 +4.18711,165.103 +4.18711,165.103 +4.18711,165.103 +4.18711,165.103 +4.18713,165.103 +5.49962,165.103 +5.8,165.103 +7.12949,165.103 +6.34194,165.103 +6.34194,165.103 +5.9638,165.103 +6.34194,165.103 +5.08212,165.103 +5.68723,165.103 +5.08212,165.103 +5.68723,165.103 +5.08212,165.103 +5.68723,165.103 +5.68723,165.103 +4.18711,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.5217,165.103 +5.43357,165.103 +5.17827,165.103 +5.23494,165.103 +5.23494,165.103 +5.23494,165.103 +4.57317,165.103 +4.63104,165.103 +4.57119,165.103 +4.57119,165.103 +4.57119,165.103 +4.57119,165.103 +4.57119,165.103 +4.54384,165.103 +4.187,165.103 +4.187,165.103 +4.18696,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.18696,165.103 +4.187,165.103 +4.187,165.103 +4.48081,165.103 +5.43357,165.103 +5.43357,165.103 +5.43357,165.103 +5.43357,165.103 +5.43357,165.103 +4.57317,165.103 +4.73711,165.103 +5.34542,165.103 +5.34542,165.103 +5.34542,165.103 +5.34542,165.103 +5.34542,165.103 +5.47997,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.33623,165.103 +5.86851,165.103 +5.00811,165.103 +6.17381,165.103 +6.35625,165.103 +5.86851,165.103 +5.5687,165.103 +5.07678,165.103 +5.93718,165.103 +5.93718,165.103 +6.54229,165.103 +5.07678,165.103 +5.07678,165.103 +5.85818,165.103 +4.187,165.103 +4.187,165.103 +4.18699,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.35317,165.103 +5.36705,165.103 +7.55694,165.103 +7.55694,165.103 +7.55694,165.103 +7.55694,165.103 +7.55694,165.103 +7.52612,165.103 +7.52612,165.103 +7.52612,165.103 +7.52612,165.103 +7.52612,165.103 +7.52612,165.103 +7.49971,165.103 +4.86217,165.103 +4.187,165.103 +4.187,165.103 +4.18699,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.18699,165.103 +4.187,165.103 +4.187,165.103 +4.51846,165.103 +4.68133,165.103 +4.68133,165.103 +4.7202,165.103 +4.68133,165.103 +5.54173,165.103 +6.40537,165.103 +4.68133,165.103 +4.68133,165.103 +4.68129,165.103 +4.68129,165.103 +5.24188,165.103 +4.68129,165.103 +5.20141,165.103 +4.4809,165.103 +4.18703,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.48082,165.103 +4.77321,165.103 +4.88563,165.103 +4.88563,165.103 +4.88563,165.103 +4.88563,165.103 +4.88563,165.103 +6.03528,165.103 +6.64038,165.103 +6.03449,165.103 +6.64038,165.103 +6.03528,165.103 +6.97321,165.103 +6.17017,165.103 +4.18711,165.103 +4.18703,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.18699,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +5.25245,165.103 +5.66595,165.103 +8.06167,165.103 +8.07037,165.103 +8.06167,165.103 +8.2017,165.103 +8.2017,165.103 +8.18225,165.103 +8.18225,165.103 +8.18225,165.103 +8.18225,165.103 +8.18225,165.103 +8.18225,165.103 +8.18225,165.103 +6.645,165.103 +4.18711,165.103 +4.18711,165.103 +4.18711,165.103 +4.18711,165.103 +4.18711,165.103 +4.18711,165.103 +4.18711,165.103 +4.18711,165.103 +4.18711,165.103 +5.22327,165.103 +5.28221,165.103 +7.61656,165.103 +7.61656,165.103 +7.61656,165.103 +7.61656,165.103 +7.61656,165.103 +7.61537,165.103 +7.61537,165.103 +7.61537,165.103 +7.61537,165.103 +7.37873,165.103 +7.61537,165.103 +7.61537,165.103 +4.18712,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.48079,165.103 +4.62961,165.103 +6.82334,165.103 +7.38393,165.103 +7.36999,165.103 +6.20429,165.103 +7.14729,165.103 +6.45861,165.103 +7.30035,165.103 +7.30035,165.103 +6.69525,165.103 +7.30035,165.103 +7.30035,165.103 +6.08466,165.103 +4.18703,165.103 +4.18703,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.18703,165.103 +4.32619,165.103 +5.11046,165.103 +6.69525,165.103 +7.30035,165.103 +7.30035,165.103 +7.30035,165.103 +7.30035,165.103 +7.27431,165.103 +7.27431,165.103 +7.27431,165.103 +6.6692,165.103 +6.47708,165.103 +6.10861,165.103 +5.40423,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.18699,165.103 +4.187,165.103 +4.187,165.103 +4.18703,165.103 +5.45898,165.103 +5.45627,165.103 +7.64617,165.103 +7.64617,165.103 +7.64617,165.103 +7.64617,165.103 +7.64617,165.103 +7.6468,165.103 +7.6468,165.103 +7.6468,165.103 +7.6468,165.103 +7.6468,165.103 +7.6468,165.103 +5.50891,165.103 +4.187,165.103 +4.187,165.103 +4.18699,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.83365,165.103 +4.187,165.103 +4.187,165.103 +4.51448,165.103 +5.14361,165.103 +7.40563,165.103 +7.40563,165.103 +6.80052,165.103 +6.80052,165.103 +7.40563,165.103 +7.41171,165.103 +6.8066,165.103 +7.41171,165.103 +7.41171,165.103 +6.8066,165.103 +7.41171,165.103 +6.35036,165.103 +4.18711,165.103 +4.187,165.103 +4.18711,165.103 +4.187,165.103 +4.18711,165.103 +4.18711,165.103 +4.1871,165.103 +4.18711,165.103 +4.18711,165.103 +4.18711,165.103 +5.38013,165.103 +4.71465,165.103 +5.31411,165.103 +4.75352,165.103 +5.27524,165.103 +6.06279,165.103 +6.06279,165.103 +5.51069,165.103 +6.1158,165.103 +5.51069,165.103 +5.51069,165.103 +5.51069,165.103 +5.51069,165.103 +5.65693,165.103 +4.18711,165.103 +4.18709,165.103 +4.18711,165.103 +4.18711,165.103 +4.18711,165.103 +4.18711,165.103 +4.1871,165.103 +4.18711,165.103 +4.18711,165.103 +4.18711,165.103 +4.25601,165.103 +4.96485,165.103 +6.54963,165.103 +5.76208,165.103 +5.7524,165.103 +6.59415,165.103 +6.59415,165.103 +6.66155,165.103 +6.66155,165.103 +6.66155,165.103 +6.66155,165.103 +6.66155,165.103 +6.66155,165.103 +5.7579,165.103 +4.18711,165.103 +4.18711,165.103 +4.18711,165.103 +4.18711,165.103 +4.18711,165.103 +4.18711,165.103 +4.18711,165.103 +4.18711,165.103 +4.18709,165.103 +4.77956,165.103 +4.57307,165.103 +6.66555,165.103 +7.27066,165.103 +7.27066,165.103 +7.27066,165.103 +7.27066,165.103 +7.27066,165.103 +7.80779,165.103 +7.80779,165.103 +7.80779,165.103 +7.78954,165.103 +7.80779,165.103 +7.80779,165.103 +6.72934,165.103 +4.18711,165.103 +4.187,165.103 +4.187,165.103 +4.18699,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +5.56868,165.103 +6.92687,165.103 +7.48746,165.103 +7.48746,165.103 +7.48746,165.103 +7.48746,165.103 +7.48746,165.103 +6.56898,165.103 +6.56185,165.103 +6.56185,165.103 +5.77429,165.103 +6.56185,165.103 +6.56898,165.103 +5.12711,165.103 +4.187,165.103 +4.18694,165.103 +4.18694,165.103 +4.18694,165.103 +4.18694,165.103 +4.18694,165.103 +4.18694,165.103 +4.18694,165.103 +4.18694,165.103 +4.18694,165.103 +4.187,165.103 +5.3971,165.103 +6.59885,165.103 +5.42125,165.103 +6.02636,165.103 +6.02636,165.103 +6.62334,165.103 +6.05228,165.103 +5.42052,165.103 +5.4205,165.103 +5.4205,165.103 +5.4205,165.103 +5.42051,165.103 +4.74759,165.103 +4.18683,165.103 +4.18683,165.103 +4.18681,165.103 +4.18683,165.103 +4.18683,165.103 +4.18683,165.103 +4.1868,165.103 +4.18683,165.103 +4.18683,165.103 +4.18683,165.103 +4.18694,165.103 +4.48079,165.103 +5.06127,165.103 +5.06128,165.103 +5.66637,165.103 +4.50067,165.103 +4.50057,165.103 +4.50052,165.103 +4.50052,165.103 +4.50052,165.103 +4.50052,165.103 +4.50052,165.103 +4.51665,165.103 +4.18695,165.103 +4.18685,165.103 +4.18683,165.103 +4.18683,165.103 +4.18681,165.103 +4.18683,165.103 +4.18683,165.103 +4.1868,165.103 +4.18683,165.103 +4.18683,165.103 +4.18683,165.103 +4.18683,165.103 +4.48081,165.103 +4.56116,165.103 +4.56116,165.103 +4.56116,165.103 +4.56116,165.103 +4.56116,165.103 +4.36097,165.103 +4.96608,165.103 +4.92156,165.103 +4.92156,165.103 +4.96608,165.103 +4.36097,165.103 +4.36104,165.103 +4.18711,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.187,165.103 +4.25601,165.103 +5.77901,165.103 +5.77901,165.103 +5.77901,165.103 +6.56656,165.103 +7.17167,165.103 +7.17167,165.103 +7.20532,165.133 +7.20532,165.133 +7.20532,165.133 +6.64473,165.133 +6.41777,165.133 +6.41777,165.133 +5.85198,165.133 +4.18711,165.133 +4.18711,165.133 +4.18711,165.133 +4.18711,165.133 +4.18709,165.133 +4.18711,165.133 +4.18711,165.133 +4.18711,165.133 +4.18711,165.133 +4.18711,165.133 +4.36036,165.133 +5.45931,165.133 +7.6492,165.133 +7.6492,165.133 +7.6492,165.133 +7.6492,165.133 +7.6492,165.133 +7.65739,165.133 +7.65739,165.133 +7.65739,165.133 +7.65739,165.133 +7.65739,165.133 +7.65739,165.133 +7.46697,165.133 +4.18711,165.133 +4.18711,165.133 +4.18711,165.133 +4.18711,165.133 +4.18711,165.133 +4.18711,165.133 +4.1871,165.133 +4.18711,165.133 +4.18711,165.133 +4.18711,165.133 +4.34007,165.133 +5.59121,165.133 +7.7811,165.133 +7.7811,165.133 +7.7811,165.133 +7.7811,165.133 +7.7811,165.133 +7.79699,165.133 +7.79699,165.133 +7.79699,165.133 +7.79699,165.133 +7.79699,165.133 +7.79699,165.133 +7.51909,165.133 +4.18711,165.133 +4.18711,165.133 +4.18709,165.133 +4.18711,165.133 +4.18711,165.133 +4.18711,165.133 +4.18711,165.133 +4.83376,165.133 +4.18711,165.133 +4.18711,165.133 +4.37489,165.133 +5.48173,165.133 +7.67162,165.133 +7.67162,165.133 +7.67162,165.133 +7.67162,165.133 +7.67162,165.133 +7.67846,165.133 +7.67846,165.133 +7.67846,165.133 +7.67846,165.133 +7.67846,165.133 +7.67846,165.133 +7.59622,165.133 +4.42346,165.133 +4.18711,165.133 +4.76318,165.133 +4.187,165.133 +4.76307,165.133 +4.73387,165.133 +4.58426,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.36801,165.133 +7.13517,165.133 +7.69576,165.133 +7.69576,165.133 +7.69576,165.133 +7.69576,165.133 +7.69576,165.133 +7.62746,165.133 +7.62746,165.133 +7.62746,165.133 +7.62746,165.133 +7.62746,165.133 +7.62746,165.133 +5.33165,165.133 +4.18711,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.42111,165.133 +4.95249,165.133 +5.18913,165.133 +5.97669,165.133 +5.18913,165.133 +5.18913,165.133 +5.97669,165.133 +6.64899,165.133 +7.20958,165.133 +6.97294,165.133 +7.20958,165.133 +7.20958,165.133 +6.64899,165.133 +5.04178,165.133 +4.18707,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.18702,165.133 +4.187,165.133 +5.85214,165.133 +5.33618,165.133 +7.59609,165.133 +7.59609,165.133 +7.59609,165.133 +7.59609,165.133 +7.0355,165.133 +7.57517,165.133 +7.57517,165.133 +7.57517,165.133 +7.57517,165.133 +7.57517,165.133 +7.57517,165.133 +6.93703,165.133 +4.18711,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.24652,165.133 +4.8323,165.133 +6.61374,165.133 +6.61374,165.133 +7.17433,165.133 +6.61374,165.133 +6.38678,165.133 +6.58409,165.133 +6.58409,165.133 +5.97898,165.133 +5.97898,165.133 +5.97898,165.133 +6.58409,165.133 +6.34025,165.133 +4.18711,165.133 +4.18711,165.133 +4.18709,165.133 +4.187,165.133 +4.18708,165.133 +4.18709,165.133 +4.18709,165.133 +4.18709,165.133 +4.187,165.133 +4.18709,165.133 +4.22237,165.133 +5.32425,165.133 +6.95355,165.133 +7.51414,165.133 +7.51414,165.133 +7.51414,165.133 +7.51414,165.133 +7.49496,165.133 +7.49496,165.133 +7.49496,165.133 +7.49496,165.133 +7.49496,165.133 +7.49496,165.133 +5.60186,165.133 +4.18906,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.18699,165.133 +4.187,165.133 +4.187,165.133 +4.18699,165.133 +4.187,165.133 +4.21081,165.133 +5.43265,165.133 +6.32029,165.133 +6.32029,165.133 +5.7597,165.133 +5.45021,165.133 +5.68685,165.133 +5.66098,165.133 +5.63428,165.133 +5.63429,165.133 +5.63428,165.133 +5.63428,165.133 +5.36385,165.133 +4.187,165.133 +4.18694,165.133 +4.73381,165.133 +4.18694,165.133 +4.18694,165.133 +4.763,165.133 +4.18694,165.133 +4.18694,165.133 +4.18694,165.133 +4.18694,165.133 +4.18694,165.133 +4.18703,165.133 +5.34542,165.133 +6.20412,165.133 +5.67732,165.133 +6.012,165.133 +5.64353,165.133 +4.81692,165.133 +5.55607,165.133 +4.56083,165.133 +5.16594,165.133 +5.16594,165.133 +4.56083,165.133 +5.42123,165.133 +4.22239,165.133 +4.18703,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.18703,165.133 +4.20885,165.133 +5.12582,165.133 +6.77137,165.133 +7.33196,165.133 +6.77137,165.133 +6.77137,165.133 +7.33196,165.133 +7.32101,165.133 +7.32101,165.133 +7.32101,165.133 +7.32101,165.133 +7.32101,165.133 +7.32101,165.133 +4.62694,165.133 +4.18711,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.22243,165.133 +6.11159,165.133 +7.74089,165.133 +7.74089,165.133 +7.74089,165.133 +7.74089,165.133 +7.74089,165.133 +7.48591,165.133 +7.48591,165.133 +7.48591,165.133 +7.48591,165.133 +7.48591,165.133 +7.24927,165.133 +4.78534,165.133 +4.18713,165.133 +4.18702,165.133 +4.187,165.133 +4.187,165.133 +4.18702,165.133 +4.18702,165.133 +4.18702,165.133 +4.18702,165.133 +4.18713,165.133 +6.51662,165.133 +4.50503,165.133 +6.07066,165.133 +7.16351,165.133 +6.83956,165.133 +7.40015,165.133 +7.40015,165.133 +7.40015,165.133 +7.375,165.133 +7.375,165.133 +7.375,165.133 +7.375,165.133 +7.375,165.133 +6.76989,165.133 +6.34673,165.133 +4.18712,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.19453,165.133 +4.72269,165.133 +6.91258,165.133 +6.30747,165.133 +6.91258,165.133 +6.67594,165.133 +6.91258,165.133 +4.92445,165.133 +4.68781,165.133 +4.68781,165.133 +4.68781,165.133 +4.92445,165.133 +5.48504,165.133 +5.42596,165.133 +4.18711,165.133 +4.18699,165.133 +4.18694,165.133 +4.18694,165.133 +4.18694,165.133 +4.18694,165.133 +4.18694,165.133 +4.18694,165.133 +4.18694,165.133 +4.18694,165.133 +4.46739,165.133 +5.66057,165.133 +5.50276,165.133 +4.63915,165.133 +6.06335,165.133 +4.63915,165.133 +5.19972,165.133 +4.63913,165.133 +4.63913,165.133 +4.63913,165.133 +5.24424,165.133 +4.63913,165.133 +5.24424,165.133 +4.64147,165.133 +4.187,165.133 +4.18695,165.133 +4.18694,165.133 +4.18694,165.133 +4.18694,165.133 +4.18694,165.133 +4.18694,165.133 +4.18694,165.133 +4.18694,165.133 +4.18695,165.133 +4.187,165.133 +4.33612,165.133 +5.25244,165.133 +5.81303,165.133 +5.81303,165.133 +5.81303,165.133 +5.81303,165.133 +5.49707,165.133 +5.23854,165.133 +6.05766,165.133 +5.49709,165.133 +5.49707,165.133 +5.49707,165.133 +5.02791,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.46732,165.133 +5.25069,165.133 +4.93232,165.133 +5.71988,165.133 +5.71988,165.133 +5.71988,165.133 +5.71988,165.133 +6.28045,165.133 +6.28045,165.133 +6.28045,165.133 +6.28045,165.133 +6.28045,165.133 +6.28045,165.133 +4.80689,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.33629,165.133 +5.13737,165.133 +7.32727,165.133 +6.72216,165.133 +7.32727,165.133 +7.32727,165.133 +7.32727,165.133 +7.32728,165.133 +7.32728,165.133 +7.32728,165.133 +6.72217,165.133 +7.32728,165.133 +7.32728,165.133 +5.16798,165.133 +4.18712,165.133 +4.18711,165.133 +4.18711,165.133 +4.18711,165.133 +4.18711,165.133 +4.18711,165.133 +4.18711,165.133 +4.18711,165.133 +4.18712,165.133 +4.18712,165.133 +5.285,165.133 +5.1759,165.133 +7.36579,165.133 +6.20009,165.133 +7.36579,165.133 +6.8052,165.133 +7.36579,165.133 +7.32457,165.133 +7.32457,165.133 +7.32457,165.133 +7.32457,165.133 +6.76398,165.133 +6.35449,165.133 +5.35281,165.133 +4.18711,165.133 +4.18711,165.133 +4.18711,165.133 +4.1871,165.133 +4.18711,165.133 +4.18711,165.133 +4.18711,165.133 +4.18711,165.133 +4.18709,165.133 +4.18711,165.133 +5.26309,165.133 +12.5306,165.133 +14.7501,165.133 +6.67622,165.133 +7.23681,165.133 +6.07111,165.133 +6.67622,165.133 +7.36842,165.133 +7.40774,165.133 +7.40774,165.133 +6.80783,165.133 +6.84716,165.133 +6.70594,165.133 +4.46745,165.133 +4.18711,165.133 +4.18711,165.133 +4.18711,165.133 +4.18711,165.133 +4.18709,165.133 +4.18709,165.133 +4.18711,165.133 +4.18711,165.133 +4.18712,165.133 +4.46747,165.133 +4.77758,165.133 +5.64371,165.133 +7.06086,165.133 +7.63629,165.133 +7.59697,165.133 +7.03638,165.133 +7.59697,165.133 +10.2512,165.133 +10.2512,165.133 +10.2425,165.133 +10.2425,165.133 +10.2512,165.133 +10.2425,165.133 +5.57745,165.133 +4.18712,165.133 +4.18711,165.133 +4.18712,165.133 +4.18711,165.133 +4.18712,165.133 +4.18712,165.133 +4.18712,165.133 +4.18712,165.133 +6.69564,165.133 +12.4941,165.133 +14.2781,165.133 +14.1109,165.133 +15.6359,165.133 +15.349,165.133 +13.696,165.133 +9.08959,165.133 +7.24391,165.133 +6.68323,165.133 +7.24382,165.133 +6.68323,165.133 +7.24382,165.133 +6.68323,165.133 +7.24382,165.133 +6.26768,165.133 +4.18711,165.133 +4.18711,165.133 +4.18711,165.133 +4.18711,165.133 +4.18711,165.133 +4.18711,165.133 +4.18711,165.133 +4.18711,165.133 +4.38595,165.133 +4.18711,165.133 +5.32989,165.133 +7.7088,165.133 +9.34959,165.133 +6.7151,165.133 +5.83447,165.133 +6.67622,165.133 +6.69811,165.133 +5.81838,165.133 +7.22072,165.133 +6.05502,165.133 +5.81838,165.133 +5.26747,165.133 +5.26747,165.133 +4.96896,165.133 +4.18711,165.133 +4.18711,165.133 +4.18711,165.133 +4.18711,165.133 +4.18699,165.133 +4.18711,165.133 +4.18711,165.133 +4.187,165.133 +4.187,165.133 +4.18711,165.133 +4.18711,165.133 +5.03083,165.133 +6.05502,165.133 +6.05502,165.133 +7.22072,165.133 +6.05502,165.133 +6.05502,165.133 +7.20344,165.133 +6.64285,165.133 +6.64285,165.133 +6.03774,165.133 +6.64285,165.133 +7.20344,165.133 +4.18713,165.133 +4.18695,165.133 +4.18695,165.133 +4.18694,165.133 +4.18695,165.133 +4.18695,165.133 +4.18695,165.133 +4.18695,165.133 +4.18695,165.133 +4.18694,165.133 +4.18695,165.133 +4.18703,165.133 +5.34542,165.133 +5.15312,165.133 +5.94068,165.133 +5.94068,165.133 +5.94068,165.133 +5.70404,165.133 +6.30909,165.133 +6.54573,165.133 +5.94062,165.133 +6.30909,165.133 +6.54573,165.133 +6.54573,165.133 +4.18715,165.133 +4.18695,165.133 +4.18695,165.133 +4.18694,165.133 +4.18695,165.133 +4.18695,165.133 +4.18695,165.133 +4.18695,165.133 +4.18695,165.133 +4.18695,165.133 +4.18697,165.133 +4.18703,165.133 +4.94021,165.133 +6.56951,165.133 +5.9644,165.133 +5.9644,165.133 +5.9644,165.133 +5.72776,165.133 +6.52499,165.133 +7.1301,165.133 +6.52499,165.133 +7.1301,165.133 +5.9644,165.133 +6.52499,165.133 +4.187,165.133 +4.18699,165.133 +4.18699,165.133 +4.18699,165.133 +4.18699,165.133 +4.18699,165.133 +4.18699,165.133 +4.18699,165.133 +4.18699,165.133 +4.187,165.133 +4.187,165.133 +4.18711,165.133 +4.68133,165.133 +4.91797,165.133 +5.70552,165.133 +5.70552,165.133 +5.70552,165.133 +6.87122,165.133 +5.67881,165.133 +6.84451,165.133 +6.2394,165.133 +5.67881,165.133 +5.67881,165.133 +4.89126,165.133 +4.18711,165.133 +4.187,165.133 +4.18699,165.133 +4.18696,165.133 +4.187,165.133 +4.18696,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.4809,165.133 +4.59861,165.133 +5.62279,165.133 +5.62279,165.133 +5.64468,165.133 +5.62279,165.133 +5.38615,165.133 +5.63026,165.133 +5.63026,165.133 +5.44781,165.133 +5.63026,165.133 +5.63026,165.133 +5.63026,165.133 +4.4809,165.133 +4.187,165.133 +4.18697,165.133 +4.187,165.133 +4.187,165.133 +4.18697,165.133 +4.18696,165.133 +4.18694,165.133 +4.18699,165.133 +4.187,165.133 +4.187,165.133 +4.48079,165.133 +5.27467,165.133 +5.6511,165.133 +5.6511,165.133 +5.6511,165.133 +5.6511,165.133 +6.25621,165.133 +5.65111,165.133 +5.65111,165.133 +5.65111,165.133 +5.65111,165.133 +5.65111,165.133 +5.65111,165.133 +4.4809,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.18697,165.133 +4.187,165.133 +4.46739,165.133 +4.629,165.133 +5.4426,165.133 +4.88201,165.133 +4.88201,165.133 +6.23015,165.133 +4.88201,165.133 +5.46167,165.133 +5.46167,165.133 +5.46169,165.133 +4.90108,165.133 +5.46167,165.133 +4.90108,165.133 +4.4809,165.133 +4.18701,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.187,165.133 +4.18701,165.133 +4.53027,165.133 +6.48181,165.133 +7.81089,165.133 +7.81089,165.133 +7.81089,165.133 +7.81089,165.133 +7.81089,165.133 +7.88981,164.605 +7.88981,164.605 +7.88981,164.605 +7.88981,164.605 +7.88981,164.605 +7.88981,164.605 +5.82406,164.605 +4.20289,164.605 +4.20289,164.605 +4.20289,164.605 +4.20289,164.605 +4.20289,164.605 +4.20289,164.605 +4.20289,164.605 +4.20289,164.605 +4.20289,164.605 +4.48096,164.605 +5.90411,164.605 +7.27995,164.605 +7.88506,164.605 +7.88506,164.605 +7.88506,164.605 +7.88506,164.605 +7.88506,164.605 +7.81136,164.605 +7.8408,164.605 +7.81136,164.605 +7.81136,164.605 +7.81136,164.605 +7.81136,164.605 +6.90487,164.605 +4.50459,164.605 +4.20057,164.605 +4.20057,164.605 +4.20055,164.605 +4.20057,164.605 +4.20057,164.605 +4.20057,164.605 +4.20057,164.605 +4.20057,164.605 +4.48247,164.605 +4.86308,164.605 +7.68269,164.605 +7.68269,164.605 +7.68269,164.605 +7.68269,164.605 +7.68269,164.605 +7.68269,164.605 +7.53147,164.605 +7.53147,164.605 +7.53147,164.605 +7.53147,164.605 +7.53147,164.605 +7.53147,164.605 +4.22243,164.605 +4.18711,164.605 +4.18711,164.605 +4.18711,164.605 +4.18711,164.605 +4.18711,164.605 +4.18711,164.605 +4.18711,164.605 +4.18711,164.605 +4.18711,164.605 +4.1945,164.605 +4.50276,164.605 +6.48355,164.605 +7.64925,164.605 +7.64925,164.605 +7.64925,164.605 +7.64925,164.605 +7.64925,164.605 +7.65024,164.605 +7.65024,164.605 +7.65024,164.605 +7.65024,164.605 +7.65024,164.605 +7.65024,164.605 +6.05245,164.605 +4.18712,164.605 +4.18711,164.605 +4.18711,164.605 +4.18711,164.605 +4.18711,164.605 +4.187,164.605 +4.18711,164.605 +4.18711,164.605 +4.18711,164.605 +4.18711,164.605 +4.48674,164.605 +6.38105,164.605 +9.39749,164.605 +7.54675,164.605 +6.98616,164.605 +6.98616,164.605 +6.98616,164.605 +7.65076,164.605 +7.65351,164.605 +7.62212,164.605 +7.62212,164.605 +7.62212,164.605 +7.62212,164.605 +5.76702,164.605 +4.18712,164.605 +4.38596,164.605 +4.18712,164.605 +4.18712,164.605 +4.18712,164.605 +4.18712,164.605 +4.45755,164.605 +4.18712,164.605 +4.18712,164.605 +4.18712,164.605 +5.38424,164.605 +7.99944,164.605 +7.99944,164.605 +7.97,164.605 +7.99944,164.605 +7.99944,164.605 +7.99944,164.605 +7.84671,164.605 +7.84671,164.605 +7.84671,164.605 +7.84671,164.605 +7.84671,164.605 +7.80738,164.605 +7.80738,164.605 +5.80045,164.605 +5.47437,164.605 +5.86176,164.605 +5.52168,164.605 +4.66128,164.605 +5.52168,164.605 +5.32306,164.605 +5.5217,164.605 +4.67435,164.605 +5.3184,164.605 +5.56021,164.605 +7.8535,164.605 +7.88294,164.605 +7.8535,164.605 +7.88294,164.605 +7.88294,164.605 +7.88294,164.605 +7.83091,164.605 +7.83091,164.605 +7.83091,164.605 +7.86871,164.605 +7.83091,164.605 +7.86871,164.605 +7.80182,164.605 +5.49228,164.605 +4.4809,164.605 +4.4809,164.605 +4.4809,164.605 +4.4809,164.605 +4.4809,164.605 +4.4809,164.605 +4.4809,164.605 +4.4809,164.605 +4.4809,164.605 +5.96218,164.605 +7.84266,164.605 +7.80487,164.605 +7.80487,164.605 +7.84266,164.605 +7.80487,164.605 +7.84266,164.605 +7.70673,164.605 +7.70673,164.605 +7.70673,164.605 +7.70673,164.605 +7.70673,164.605 +7.70673,164.605 +6.04198,164.605 +4.18999,164.605 +4.18999,164.605 +4.18999,164.605 +4.18999,164.605 +4.18999,164.605 +4.18999,164.605 +6.5739,164.605 +4.18999,164.605 +4.18999,164.605 +4.19851,164.605 +4.52473,164.605 +7.10248,164.605 +7.66307,164.605 +7.66307,164.605 +7.66307,164.605 +7.66307,164.605 +7.66307,164.605 +7.51652,164.605 +7.51652,164.605 +7.51652,164.605 +7.51652,164.605 +7.51652,164.605 +7.51652,164.605 +5.08621,164.605 +4.18711,164.605 +4.18709,164.605 +4.18709,164.605 +4.18709,164.605 +4.187,164.605 +4.18709,164.605 +4.18709,164.605 +4.187,164.605 +4.187,164.605 +4.18709,164.605 +4.48096,164.605 +5.15036,164.605 +7.41632,164.605 +6.85573,164.605 +7.41632,164.605 +7.41632,164.605 +7.17968,164.605 +7.351,164.605 +7.351,164.605 +7.37289,164.605 +7.38479,164.605 +7.351,164.605 +7.351,164.605 +4.99646,164.605 +4.18711,164.605 +4.75874,164.605 +4.1871,164.605 +4.18711,164.605 +4.18711,164.605 +4.18711,164.605 +4.83376,164.605 +4.1871,164.605 +4.90341,164.605 +4.18711,164.605 +4.22237,164.605 +5.2539,164.605 +7.44379,164.605 +6.8832,164.605 +6.8832,164.605 +6.8832,164.605 +6.8832,164.605 +6.97189,164.605 +6.97189,164.605 +6.97189,164.605 +6.97189,164.605 +6.97189,164.605 +6.97189,164.605 +5.77525,164.605 +4.18712,164.605 +4.18711,164.605 +4.18711,164.605 +4.18709,164.605 +4.18711,164.605 +4.18711,164.605 +4.18711,164.605 +4.88709,164.605 +4.76318,164.605 +4.18712,164.605 +4.49292,164.605 +6.48561,164.605 +7.70837,164.605 +7.14778,164.605 +7.14778,164.605 +7.14778,164.605 +7.14778,164.605 +7.21421,164.605 +7.21421,164.605 +7.7748,164.605 +7.21421,164.605 +7.61207,164.605 +7.7748,164.605 +7.39867,164.605 +4.2207,164.605 +4.18711,164.605 +4.18711,164.605 +4.18711,164.605 +4.18711,164.605 +4.18711,164.605 +4.18711,164.605 +4.18711,164.605 +4.18711,164.605 +4.18711,164.605 +4.53434,164.605 +5.62622,164.605 +7.80084,164.605 +7.80084,164.605 +7.80084,164.605 +7.80084,164.605 +7.80084,164.605 +7.13648,164.605 +7.13648,164.605 +7.12778,164.605 +7.12778,164.605 +7.12778,164.605 +7.12778,164.605 +6.04087,164.605 +4.4809,164.605 +4.18711,164.605 +4.18711,164.605 +4.65656,164.605 +4.18711,164.605 +4.18711,164.605 +4.18709,164.605 +4.18711,164.605 +4.18711,164.605 +4.70647,164.605 +4.48092,164.605 +6.09394,164.605 +6.15844,164.605 +6.14974,164.605 +6.14974,164.605 +6.18649,164.605 +6.71903,164.605 +6.29509,164.605 +6.29509,164.605 +7.46079,164.605 +7.46079,164.605 +6.85568,164.605 +6.85568,164.605 +6.28475,164.605 +4.18711,164.605 +4.18711,164.605 +4.18711,164.605 +4.18711,164.605 +4.187,164.605 +4.18711,164.605 +4.18711,164.605 +4.18711,164.605 +4.18711,164.605 +4.18711,164.605 +4.56605,164.605 +5.18161,164.605 +7.46079,164.605 +6.29509,164.605 +6.29509,164.605 +6.29509,164.605 +6.29509,164.605 +6.36961,164.605 +6.97472,164.605 +6.85445,164.605 +6.89378,164.605 +6.89378,164.605 +6.85445,164.605 +6.04933,164.605 +4.18711,164.605 +4.18709,164.605 +4.18711,164.605 +4.18711,164.605 +4.18711,164.605 +4.18711,164.605 +4.18711,164.605 +4.18709,164.605 +4.18709,164.605 +4.18711,164.605 +4.56603,164.605 +5.14554,164.605 +6.89381,164.605 +6.2887,164.605 +6.2887,164.605 +6.2887,164.605 +11.4341,164.605 +6.37302,164.605 +6.46921,164.605 +6.97813,164.605 +6.37302,164.605 +6.37302,164.605 +7.07432,164.605 +4.28111,164.605 +4.18711,164.605 +4.18711,164.605 +4.18711,164.605 +4.18711,164.605 +4.18711,164.605 +4.18709,164.605 +4.18709,164.605 +4.18711,164.605 +4.20057,164.605 +12.1955,164.605 +14.1521,164.605 +15.4296,164.605 +17.208,164.605 +16.2891,164.605 +15.9227,164.605 +15.2332,164.605 +13.1167,164.605 +7.53842,164.605 +7.53842,164.605 +7.54847,164.605 +7.5878,164.605 +7.5878,164.605 +7.5791,164.605 +4.20051,164.605 +4.187,164.605 +4.187,164.605 +4.187,164.605 +4.187,164.605 +4.187,164.605 +4.187,164.605 +4.187,164.605 +4.187,164.605 +4.187,164.605 +11.7003,164.605 +13.3148,164.605 +14.6083,164.605 +16.6292,164.605 +15.2257,164.605 +14.2324,164.605 +14.1411,164.605 +6.84554,164.605 +6.79891,164.605 +6.79891,164.605 +7.40402,164.605 +6.84343,164.605 +6.61646,164.605 +7.16738,164.605 +4.76099,164.605 +4.70636,164.605 +4.187,164.605 +4.187,164.605 +4.187,164.605 +4.187,164.605 +4.187,164.605 +4.187,164.605 +4.187,164.605 +4.187,164.605 +4.187,164.605 +11.9285,164.605 +13.5677,164.605 +13.8412,164.605 +13.7071,164.605 +13.4038,164.605 +5.68908,164.605 +5.68908,164.605 +5.62537,164.605 +6.18596,164.605 +5.62537,164.605 +6.23048,164.605 +6.18596,164.605 +5.59683,164.605 +4.18712,164.605 +4.187,164.605 +4.187,164.605 +4.187,164.605 +4.187,164.605 +4.18697,164.605 +4.187,164.605 +4.187,164.605 +4.187,164.605 +4.187,164.605 +4.187,164.605 +4.18704,164.605 +5.30584,164.605 +4.86618,164.605 +6.21432,164.605 +5.65373,164.605 +6.21432,164.605 +5.65373,164.605 +5.65373,164.605 +5.65373,164.605 +5.65373,164.605 +5.65375,164.605 +6.21432,164.605 +4.86625,164.605 +5.07513,164.605 +4.187,164.605 +4.187,164.605 +4.187,164.605 +4.187,164.605 +4.187,164.605 +4.187,164.605 +4.187,164.605 +4.187,164.605 +4.18711,164.605 +4.18711,164.605 +12.0958,164.605 +13.6468,164.605 +14.4485,164.605 +13.7107,164.605 +13.3164,164.605 +7.24262,164.605 +6.68203,164.605 +6.86365,164.605 +6.86365,164.605 +6.86365,164.605 +6.86365,164.605 +6.86365,164.605 +6.07609,164.605 +5.51241,164.605 +4.18712,164.605 +4.18712,164.605 +4.18712,164.605 +4.18712,164.605 +4.18712,164.605 +4.18712,164.605 +4.1871,164.605 +4.18712,164.605 +4.18712,164.605 +15.2675,164.605 +23.945,164.605 +26.1053,164.605 +29.0266,164.605 +26.3826,164.605 +25.8601,164.605 +18.5369,164.605 +25.9574,164.605 +21.5574,164.605 +19.0293,164.605 +19.0293,164.605 +19.0293,164.605 +18.9331,164.605 +19.0293,164.605 +5.59252,164.605 +4.4809,164.605 +4.4809,164.605 +4.4809,164.605 +4.22237,164.605 +4.4809,164.605 +4.42122,164.605 +4.22237,164.605 +4.48097,164.605 +11.6469,164.605 +12.2483,164.605 +14.8986,164.605 +15.9798,164.605 +19.3576,164.605 +16.3347,164.605 +16.0922,164.605 +15.5411,164.605 +8.27029,164.605 +8.37577,164.605 +8.27958,164.605 +8.37577,164.605 +8.37577,164.605 +8.37577,164.605 +8.37577,164.605 +5.68777,164.605 +4.24654,164.605 +4.48102,164.605 +4.48102,164.605 +4.48102,164.605 +4.22249,164.605 +4.48102,164.605 +4.48102,164.605 +4.48102,164.605 +5.25473,164.605 +12.579,164.605 +17.3179,164.605 +18.1946,164.605 +18.1965,164.605 +17.5615,164.605 +17.1087,164.605 +16.3062,164.605 +8.3603,164.605 +8.11511,164.605 +8.11511,164.605 +8.11511,164.605 +8.11511,164.605 +8.11511,164.605 +8.06244,164.605 +5.79523,164.605 +4.47699,164.605 +4.47699,164.605 +4.47699,164.605 +4.21847,164.605 +4.41731,164.605 +4.47699,164.605 +4.47699,164.605 +4.47699,164.605 +4.4811,164.605 +6.38568,164.605 +13.7991,164.605 +16.3776,164.605 +16.3279,164.605 +15.8448,164.605 +15.6304,164.605 +13.2774,164.605 +8.04308,164.605 +8.10144,164.605 +8.10144,164.605 +8.10144,164.605 +8.19763,164.605 +8.10144,164.605 +8.16334,164.605 +6.25374,164.605 +5.9649,164.605 +5.40424,164.605 +5.40424,164.605 +5.40424,164.605 +5.37208,164.605 +5.40424,164.605 +5.40424,164.605 +5.40424,164.605 +5.40438,164.605 +5.05149,164.605 +8.26894,164.605 +15.4943,164.605 +15.4432,164.605 +8.29984,164.605 +8.29984,164.605 +8.29984,164.605 +8.39782,164.605 +8.53173,164.605 +8.43554,164.605 +8.53173,164.605 +8.53173,164.605 +8.53173,164.605 +8.53173,164.605 +7.97654,164.605 +7.437,164.605 +6.39166,164.605 +6.42905,164.605 +5.92219,164.605 +5.92216,164.605 +5.06179,164.605 +6.1187,164.605 +5.06179,164.605 +5.10756,164.605 +6.82047,164.605 +7.97841,164.605 +8.73703,164.605 +9.49187,164.605 +8.97219,164.605 +9.51427,164.605 +9.61765,164.605 +9.06838,164.605 +9.64891,164.605 +9.64891,164.605 +9.76451,164.605 +9.76451,164.605 +9.64891,164.605 +9.64891,164.605 +9.3288,164.605 +7.82509,164.605 +5.07693,164.605 +5.07693,164.605 +5.76673,164.605 +5.76672,164.605 +5.93733,164.605 +5.07693,164.605 +5.07693,164.605 +5.07693,164.605 +5.33556,164.605 +7.0569,164.605 +9.22269,164.605 +13.7097,164.605 +9.1265,164.605 +9.22269,164.605 +9.22269,164.605 +9.1265,164.605 +8.90755,164.605 +8.90755,164.605 +8.90755,164.605 +8.90755,164.605 +8.81136,164.605 +8.81136,164.605 +6.75004,164.605 +5.11113,164.605 +5.40436,164.605 +5.4043,164.605 +5.40429,164.605 +5.4043,164.605 +5.20568,164.605 +5.4043,164.605 +5.14577,164.605 +5.4043,164.605 +5.62239,164.605 +6.58647,164.605 +8.8752,164.605 +8.85295,164.605 +8.85295,164.605 +8.85295,164.605 +8.85295,164.605 +8.75676,164.605 +8.6515,164.605 +8.6515,164.605 +8.74769,164.605 +8.74769,164.605 +8.74769,164.605 +8.74769,164.605 +7.38864,164.605 +5.29335,164.605 +5.41612,164.605 +5.40417,164.605 +5.41607,164.605 +5.34449,164.605 +5.40417,164.605 +5.40417,164.605 +5.41607,164.605 +5.46306,164.605 +4.49102,164.605 +8.04377,164.605 +8.40027,164.605 +8.40027,164.605 +8.40027,164.605 +8.40027,164.605 +8.40027,164.605 +8.40027,164.605 +8.41322,164.605 +8.41322,164.605 +8.41322,164.605 +8.41322,164.605 +8.41322,164.605 +8.41322,164.605 +7.18988,164.605 +4.18711,164.605 +4.187,164.605 +4.187,164.605 +4.187,164.605 +4.187,164.605 +4.187,164.605 +4.187,164.605 +4.187,164.605 +4.187,164.605 +4.4077,164.605 +4.91788,164.605 +15.1629,164.605 +12.5894,164.605 +8.06656,164.605 +7.97037,164.605 +8.06656,164.605 +7.97037,164.605 +8.10478,164.305 +8.00859,164.305 +8.10478,164.305 +8.10478,164.305 +8.00859,164.305 +7.99657,164.305 +4.18711,164.305 +4.187,164.305 +4.187,164.305 +4.187,164.305 +4.187,164.305 +4.187,164.305 +4.187,164.305 +4.187,164.305 +4.187,164.305 +4.187,164.305 +4.187,164.305 +4.43957,164.305 +6.81562,164.305 +7.98132,164.305 +7.98132,164.305 +7.98132,164.305 +7.98132,164.305 +7.98132,164.305 +8.11278,164.305 +8.11278,164.305 +8.11278,164.305 +8.11278,164.305 +8.11278,164.305 +8.07498,164.305 +5.95089,164.305 +6.25258,164.305 +5.6218,164.305 +5.69465,164.305 +5.6218,164.305 +5.55075,164.305 +5.55075,164.305 +5.69465,164.305 +5.6218,164.305 +5.6218,164.305 +5.77491,164.305 +6.25121,164.305 +8.21808,164.305 +8.2492,164.305 +8.2492,164.305 +8.18635,164.305 +8.2492,164.305 +8.31212,164.305 +8.21097,164.305 +8.24042,164.305 +8.21097,164.305 +8.24042,164.305 +8.21097,164.305 +8.21097,164.305 +7.01512,164.305 +5.87862,164.305 +5.66203,164.305 +4.87446,164.305 +5.73486,164.305 +5.29959,164.305 +5.49822,164.305 +4.63782,164.305 +5.49822,164.305 +5.49822,164.305 +5.87746,164.305 +7.24011,164.305 +8.2858,164.305 +8.08826,164.305 +8.08826,164.305 +8.36456,164.305 +8.08826,164.305 +8.08826,164.305 +8.36535,164.305 +8.46154,164.305 +8.18524,164.305 +8.18524,164.305 +8.18524,164.305 +8.12079,164.305 +7.94611,164.305 +5.6493,164.305 +4.336,164.305 +4.336,164.305 +4.336,164.305 +4.336,164.305 +4.336,164.305 +4.336,164.305 +4.336,164.305 +5.23602,164.305 +5.45709,164.305 +6.11891,164.305 +8.21844,164.305 +8.21844,164.305 +8.07928,164.305 +8.21844,164.305 +8.21844,164.305 +8.21844,164.305 +8.1194,164.305 +8.1194,164.305 +8.1194,164.305 +8.1194,164.305 +8.1194,164.305 +8.1194,164.305 +6.06619,164.305 +5.73985,164.305 +6.21413,164.305 +5.56095,164.305 +4.7734,164.305 +4.7734,164.305 +4.7734,164.305 +5.56095,164.305 +4.7734,164.305 +4.7734,164.305 +4.91979,164.305 +5.96975,164.305 +7.94506,164.305 +8.10141,164.305 +8.06967,164.305 +8.10141,164.305 +8.06967,164.305 +8.10141,164.305 +8.22596,164.305 +8.22596,164.305 +8.22596,164.305 +8.22596,164.305 +8.22596,164.305 +7.98455,164.305 +5.99376,164.305 +5.77919,164.305 +5.20352,164.305 +5.20352,164.305 +5.20352,164.305 +5.20352,164.305 +5.20352,164.305 +5.20352,164.305 +4.30351,164.305 +5.28724,164.305 +5.53608,164.305 +5.94516,164.305 +8.35382,164.305 +8.45,164.305 +8.45,164.305 +8.45,164.305 +8.45,164.305 +8.35382,164.305 +8.33152,164.305 +8.36111,164.305 +8.31628,164.305 +8.23533,164.305 +8.23533,164.305 +8.23533,164.305 +5.94396,164.305 +6.96132,164.305 +6.9613,164.305 +5.00805,164.305 +5.7956,164.305 +5.00805,164.305 +5.00805,164.305 +5.00805,164.305 +5.81216,164.305 +5.07469,164.305 +5.13967,164.305 +16.7503,164.305 +18.2445,164.305 +18.0931,164.305 +17.2497,164.305 +17.0099,164.305 +12.0692,164.305 +9.80138,164.305 +9.458,164.305 +9.458,164.305 +9.44276,164.305 +9.44276,164.305 +9.458,164.305 +9.458,164.305 +8.41089,164.305 +6.03481,164.305 +4.33266,164.305 +4.33266,164.305 +4.33266,164.305 +4.33266,164.305 +4.33266,164.305 +4.33266,164.305 +4.33268,164.305 +4.33268,164.305 +5.61679,164.305 +14.9974,164.305 +17.2051,164.305 +17.911,164.305 +17.1304,164.305 +16.6772,164.305 +9.46072,164.305 +14.6905,164.305 +9.0645,164.305 +9.0645,164.305 +9.0645,164.305 +9.0645,164.305 +8.7882,164.305 +8.7041,164.305 +6.16419,164.305 +5.49342,164.305 +4.581,164.305 +4.581,164.305 +4.581,164.305 +4.581,164.305 +4.32247,164.305 +4.581,164.305 +4.32247,164.305 +4.32247,164.305 +4.581,164.305 +12.7846,164.305 +16.0434,164.305 +15.791,164.305 +12.595,164.305 +8.4505,164.305 +8.19452,164.305 +8.4505,164.305 +8.14244,164.305 +8.14244,164.305 +8.14244,164.305 +8.14244,164.305 +8.04625,164.305 +8.14244,164.305 +5.9131,164.305 +4.28219,164.305 +4.28219,164.305 +4.28219,164.305 +4.54072,164.305 +4.54072,164.305 +4.54072,164.305 +4.55262,164.305 +4.54072,164.305 +4.54072,164.305 +4.54072,164.305 +13.1546,164.305 +15.6562,164.305 +16.1257,164.305 +15.5797,164.305 +9.92735,164.305 +8.04925,164.305 +8.04925,164.305 +8.11385,164.305 +8.01766,164.305 +8.01766,164.305 +8.01766,164.305 +8.01766,164.305 +8.01766,164.305 +7.02051,164.305 +5.33119,164.305 +4.51448,164.305 +4.51448,164.305 +4.51448,164.305 +4.51448,164.305 +4.51448,164.305 +4.51448,164.305 +4.51448,164.305 +4.51448,164.305 +4.51448,164.305 +5.40932,164.305 +6.06441,164.305 +8.01766,164.305 +8.01766,164.305 +8.01766,164.305 +8.01766,164.305 +8.01766,164.305 +8.3772,164.305 +8.31435,164.305 +8.3772,164.305 +8.3772,164.305 +8.31435,164.305 +8.3772,164.305 +6.20678,164.305 +4.90758,164.305 +4.51448,164.305 +4.25595,164.305 +4.51448,164.305 +4.25595,164.305 +4.51448,164.305 +4.25595,164.305 +4.25595,164.305 +4.25595,164.305 +4.25595,164.305 +5.1729,164.305 +7.26413,164.305 +8.43984,164.305 +8.43984,164.305 +8.42983,164.305 +8.42983,164.305 +8.42983,164.305 +8.48411,164.305 +8.48411,164.305 +8.48411,164.305 +8.48411,164.305 +8.48411,164.305 +8.48411,164.305 +7.78901,164.305 +5.86509,164.305 +5.62845,164.305 +4.84089,164.305 +5.62845,164.305 +5.62845,164.305 +5.62845,164.305 +5.62845,164.305 +5.62845,164.305 +5.62845,164.305 +5.13368,164.305 +15.0869,164.305 +17.8456,164.305 +18.1723,164.305 +17.1123,164.305 +17.1231,164.305 +9.15242,164.305 +9.53192,164.305 +9.36574,164.305 +9.36574,164.305 +9.36574,164.305 +9.36574,164.305 +9.36574,164.305 +9.36574,164.305 +8.28281,164.305 +5.69784,164.305 +4.53512,164.305 +4.53512,164.305 +4.53512,164.305 +4.53512,164.305 +4.53512,164.305 +4.53512,164.305 +5.70289,164.305 +4.89872,164.305 +5.67924,164.305 +11.1884,164.305 +15.951,164.305 +15.753,164.305 +8.49206,164.305 +8.49206,164.305 +8.58825,164.305 +8.58825,164.305 +8.01886,164.305 +8.01886,164.305 +7.98107,164.305 +8.01886,164.305 +7.98107,164.305 +8.01886,164.305 +6.91945,164.305 +4.68874,164.305 +4.4521,164.305 +4.4521,164.305 +4.4521,164.305 +4.4521,164.305 +5.11388,164.305 +4.4521,164.305 +4.4521,164.305 +4.4521,164.305 +4.72116,164.305 +15.4928,164.305 +16.9921,164.305 +16.6534,164.305 +16.006,164.305 +15.5414,164.305 +8.09082,164.305 +13.2947,164.305 +7.75339,164.305 +8.08492,164.305 +7.98873,164.305 +7.98873,164.305 +8.08492,164.305 +7.98873,164.305 +5.82875,164.305 +5.98093,164.305 +5.25655,164.305 +4.39615,164.305 +5.81574,164.305 +5.25655,164.305 +5.25655,164.305 +5.25655,164.305 +5.49319,164.305 +5.49319,164.305 +4.87895,164.305 +15.7051,164.305 +16.2171,164.305 +15.9932,164.305 +15.3077,164.305 +8.35848,164.305 +8.37658,164.305 +10.8823,164.305 +8.32145,164.305 +8.3203,164.305 +8.38853,164.305 +8.29234,164.305 +8.3203,164.305 +8.32145,164.305 +6.31149,164.305 +6.00506,164.305 +6.0015,164.305 +5.98545,164.305 +5.21991,164.305 +6.07435,164.305 +5.21991,164.305 +5.21751,164.305 +5.21751,164.305 +12.9193,164.305 +14.3434,164.305 +17.0978,164.305 +18.5251,164.305 +19.7464,164.305 +18.8696,164.305 +17.9467,164.305 +16.8681,164.305 +8.64305,164.305 +8.58943,164.305 +8.53674,164.305 +8.82826,164.305 +8.50879,164.305 +8.83745,164.305 +8.90954,164.305 +8.48479,164.305 +8.20046,164.305 +7.93136,164.305 +5.43395,164.305 +5.43395,164.305 +5.31604,164.305 +5.31604,164.305 +5.31604,164.305 +5.43395,164.305 +12.885,164.305 +14.736,164.305 +17.0918,164.305 +19.1524,164.305 +18.7723,164.305 +18.0714,164.305 +17.47,164.305 +9.84848,164.305 +9.44742,164.305 +9.79188,164.305 +9.57854,164.305 +9.69769,164.305 +9.76779,164.305 +9.79615,164.305 +9.88818,164.305 +9.16933,164.305 +6.71394,164.305 +5.92748,164.305 +5.13992,164.305 +5.13992,164.305 +5.13992,164.305 +5.13992,164.305 +5.13992,164.305 +5.13992,164.305 +5.17826,164.305 +13.8003,164.305 +18.0752,164.305 +19.1765,164.305 +19.0397,164.305 +18.2958,164.305 +17.8458,164.305 +17.4056,164.305 +10.0106,164.305 +10.0118,164.305 +10.0118,164.305 +10.027,164.305 +10.0118,164.305 +9.99367,164.305 +9.64244,164.305 +8.79503,164.305 +7.72239,164.305 +6.82402,164.305 +5.99917,164.305 +5.99917,164.305 +4.86415,164.305 +4.97498,164.305 +5.21162,164.305 +5.17859,164.305 +5.38079,164.305 +26.8072,164.305 +31.4603,164.305 +35.6607,164.305 +34.8316,164.305 +30.9919,164.305 +30.326,164.305 +29.5601,164.305 +29.9677,164.305 +27.3392,164.305 +21.9751,164.305 +21.8237,164.305 +21.6484,164.305 +21.6484,164.305 +21.6484,164.305 +19.8114,164.305 +10.9313,164.305 +9.86945,164.305 +10.0152,164.305 +10.0731,164.305 +10.0731,164.305 +11.13,164.305 +10.0731,164.305 +10.7348,164.305 +21.0453,164.305 +28.5161,164.305 +33.9416,164.305 +35.1289,164.305 +35.5974,164.305 +34.5255,164.305 +34.1223,164.305 +33.4977,164.305 +34.5361,164.305 +34.0831,164.305 +32.9818,164.305 +25.7811,164.305 +25.7228,164.305 +25.7183,164.305 +25.7063,164.305 +14.31,164.305 +7.64861,164.305 +6.00911,164.305 +5.01439,164.305 +5.0329,164.305 +5.0329,164.305 +7.68396,164.305 +13.9463,164.305 +14.9377,164.305 +17.3727,164.305 +54.8506,164.305 +55.8821,164.305 +55.776,164.305 +56.2837,164.305 +54.5765,164.305 +54.2556,164.305 +53.3417,164.305 +52.5925,164.305 +40.1362,164.305 +38.9923,164.305 +31.7442,164.305 +31.6486,164.305 +31.9179,164.305 +31.9125,164.305 +18.3305,164.305 +17.1811,164.305 +15.5232,164.305 +15.4647,164.305 +15.4649,164.305 +15.4132,164.305 +17.9761,164.305 +23.3766,164.305 +26.8249,164.305 +29.1967,164.305 +47.3115,164.305 +49.0438,164.305 +49.5959,164.305 +49.2014,164.305 +48.5041,164.305 +47.8564,164.305 +47.1412,164.305 +46.017,164.305 +45.5688,164.305 +44.5869,164.305 +37.4707,164.305 +37.4713,164.305 +37.3668,164.305 +37.6413,164.305 +14.7735,164.305 +13.4456,164.305 +11.9903,164.305 +11.3833,164.305 +11.3852,164.305 +11.3852,164.305 +11.3428,164.305 +19.3725,164.305 +21.3595,164.305 +23.186,164.305 +46.6368,164.305 +49.6204,164.305 +54.5764,164.305 +52.1368,164.305 +47.9733,164.305 +47.733,164.305 +41.0483,164.305 +39.323,164.305 +16.8561,164.305 +9.81594,164.305 +9.48138,164.305 +9.48524,164.305 +9.49174,164.305 +9.49742,164.305 +8.62408,164.305 +7.07399,164.305 +6.20178,164.305 +6.15867,164.305 +6.24795,164.305 +6.24795,164.305 +6.20178,164.305 +6.21702,164.305 +15.2199,164.305 +15.7651,164.305 +17.6262,164.305 +31.582,164.305 +32.2713,164.305 +32.5095,164.305 +31.7873,164.305 +31.1587,164.305 +30.3895,164.305 +21.1519,164.305 +21.0003,164.305 +20.9194,164.305 +20.9194,164.305 +20.9194,164.305 +20.9194,164.305 +20.8038,164.305 +9.08844,164.305 +7.77328,164.305 +5.94319,164.305 +5.97622,164.305 +5.94319,164.305 +5.18866,164.305 +5.97622,164.305 +5.97622,164.305 +5.97622,164.305 +13.3359,164.305 +15.7618,164.305 +18.6968,164.305 +19.2038,164.305 +18.897,164.305 +18.1952,164.305 +17.6111,164.305 +9.93404,164.305 +9.61392,164.305 +9.09464,164.305 +9.27544,164.305 +9.42443,164.305 +9.44666,164.305 +8.98225,164.305 +9.21309,164.305 +7.97929,164.305 +5.78581,164.305 +6.3909,164.305 +6.81396,164.305 +5.64827,164.305 +5.36302,164.305 +5.5886,164.305 +5.58324,164.305 +5.7211,164.305 +5.72111,164.305 +12.6668,164.305 +15.7839,164.305 +18.3057,164.305 +18.1579,164.305 +17.1345,164.305 +16.8906,164.305 +16.098,164.305 +8.82671,164.305 +8.85391,164.305 +9.04544,164.305 +8.92337,164.305 +8.76538,164.305 +8.75772,164.305 +8.73739,164.305 +5.89196,164.305 +6.04738,164.305 +4.59176,164.305 +6.54501,164.305 +4.35512,164.305 +4.35512,164.305 +4.90949,164.305 +4.35512,164.305 +4.6727,164.305 +4.35512,164.305 +4.6085,164.305 +14.845,164.305 +16.1033,164.305 +15.951,164.305 +15.216,164.305 +8.08451,164.305 +8.08451,164.305 +8.24429,164.305 +7.98817,164.305 +7.98817,164.305 +7.98817,164.305 +8.02596,164.305 +7.98817,164.305 +7.98817,164.305 +7.89618,164.305 +5.96987,164.305 +4.31661,164.305 +4.3165,164.305 +4.3165,164.305 +4.3165,164.305 +4.55314,164.305 +4.55314,164.305 +4.3165,164.305 +4.3165,164.305 +4.3165,164.305 +6.17402,164.305 +15.0347,164.305 +7.83857,164.305 +7.23347,164.305 +7.83857,164.305 +7.83857,164.305 +7.83857,164.305 +7.8631,164.305 +7.83366,164.305 +7.30251,164.305 +7.8631,164.305 +7.22855,164.305 +7.83366,164.305 +6.52861,164.305 +5.82476,164.305 +4.59569,164.305 +4.59569,164.305 +5.45609,164.305 +4.59569,164.305 +4.74145,164.305 +4.59569,164.305 +4.59569,164.305 +5.45609,164.305 +4.80119,164.305 +5.94213,164.305 +12.3661,164.305 +12.3349,164.305 +7.96562,164.305 +7.40503,164.305 +7.96562,164.305 +7.96562,164.305 +7.92573,164.305 +7.36514,164.305 +7.92573,164.305 +7.92573,164.305 +7.92573,164.305 +7.92573,164.305 +6.88937,164.305 +5.66471,164.305 +5.72868,164.305 +5.72868,164.305 +4.86828,164.305 +4.86828,164.305 +5.47338,164.305 +5.76829,164.305 +5.72868,164.305 +5.05176,164.305 +4.86828,164.305 +5.89918,164.305 +10.2632,164.305 +8.41238,164.305 +8.41238,164.305 +8.3162,164.305 +8.08085,164.305 +8.08085,164.305 +8.07929,164.176 +8.07929,164.176 +8.07929,164.176 +8.07929,164.176 +8.07929,164.176 +8.07929,164.176 +8.19679,164.176 +6.11427,164.176 +5.85798,164.176 +5.85798,164.176 +5.85798,164.176 +5.85798,164.176 +5.85798,164.176 +5.85798,164.176 +5.85798,164.176 +5.85798,164.176 +6.19193,164.176 +8.38206,164.176 +13.9568,164.176 +9.87087,164.176 +9.86685,164.176 +9.86685,164.176 +9.86685,164.176 +9.77066,164.176 +9.75648,164.176 +9.75648,164.176 +9.75648,164.176 +9.43636,164.176 +9.75648,164.176 +9.75648,164.176 +9.07009,164.176 +5.79685,164.176 +4.62936,164.176 +4.6293,164.176 +4.6293,164.176 +4.6293,164.176 +4.6293,164.176 +4.39266,164.176 +4.39266,164.176 +5.48971,164.176 +4.97134,164.176 +6.68915,164.176 +15.3817,164.176 +8.46291,164.176 +8.46291,164.176 +8.46291,164.176 +8.36672,164.176 +8.36672,164.176 +8.58997,164.176 +8.58997,164.176 +8.334,164.176 +8.56934,164.176 +8.58997,164.176 +8.58997,164.176 +8.45263,164.176 +6.37848,164.176 +5.38885,164.176 +5.35084,164.176 +5.35084,164.176 +4.49043,164.176 +5.15221,164.176 +5.35084,164.176 +5.35084,164.176 +4.49042,164.176 +4.51236,164.176 +6.19131,164.176 +10.3177,164.176 +8.86179,164.176 +8.86179,164.176 +8.80722,164.176 +8.80722,164.176 +9.08352,164.176 +8.81685,164.176 +8.81685,164.176 +8.81685,164.176 +8.81685,164.176 +8.81685,164.176 +8.81685,164.176 +7.97676,164.176 +5.35784,164.176 +5.363,164.176 +5.363,164.176 +5.363,164.176 +5.16437,164.176 +5.363,164.176 +5.363,164.176 +5.36299,164.176 +5.36299,164.176 +5.82237,164.176 +5.39042,164.176 +7.83418,164.176 +8.37644,164.176 +8.43929,164.176 +8.43929,164.176 +8.43929,164.176 +8.37644,164.176 +8.87938,164.176 +8.68961,164.176 +8.87938,164.176 +8.87938,164.176 +8.87938,164.176 +8.71186,164.176 +8.39859,164.176 +4.81348,164.176 +4.54785,164.176 +4.54785,164.176 +4.53307,164.176 +4.54785,164.176 +4.54785,164.176 +4.54785,164.176 +4.54785,164.176 +4.75146,164.176 +6.18886,164.176 +8.53581,164.176 +9.52274,164.176 +9.5075,164.176 +9.93197,164.176 +9.93197,164.176 +9.8003,164.176 +9.88124,164.176 +9.4352,164.176 +9.83777,164.176 +9.5986,164.176 +9.53731,164.176 +9.53922,164.176 +9.91872,164.176 +9.76285,164.176 +8.51178,164.176 +8.49018,164.176 +8.34989,164.176 +8.44879,164.176 +8.36583,164.176 +8.51236,164.176 +8.56183,164.176 +8.66576,164.176 +9.48155,164.176 +8.93945,164.176 +16.86,164.176 +16.9768,164.176 +17.3448,164.176 +11.8586,164.176 +9.93396,164.176 +9.83777,164.176 +9.64241,164.176 +9.36911,164.176 +9.27292,164.176 +9.36911,164.176 +9.36911,164.176 +9.36911,164.176 +9.36911,164.176 +9.1837,164.176 +7.68986,164.176 +4.60516,164.176 +4.57611,164.176 +4.57611,164.176 +4.57611,164.176 +4.81275,164.176 +4.5761,164.176 +4.57611,164.176 +4.57611,164.176 +5.80825,164.176 +8.27619,164.176 +11.2492,164.176 +8.60542,164.176 +9.38002,164.176 +9.65632,164.176 +9.20052,164.176 +9.20052,164.176 +9.30582,164.176 +8.84869,164.176 +8.84869,164.176 +8.84491,164.176 +9.30582,164.176 +8.24763,164.176 +7.84112,164.176 +6.21715,164.176 +4.21992,164.176 +4.2199,164.176 +4.2199,164.176 +4.2199,164.176 +4.2199,164.176 +4.2199,164.176 +4.2199,164.176 +4.2199,164.176 +4.35723,164.176 +7.97314,164.176 +12.9353,164.176 +8.95205,164.176 +8.95205,164.176 +8.95205,164.176 +8.85587,164.176 +8.85587,164.176 +9.08445,164.176 +9.08445,164.176 +8.98826,164.176 +8.98826,164.176 +9.08445,164.176 +9.08445,164.176 +8.63637,164.176 +5.79466,164.176 +4.18711,164.176 +4.18711,164.176 +4.18711,164.176 +4.18711,164.176 +4.18711,164.176 +4.18711,164.176 +4.18711,164.176 +4.18711,164.176 +4.41791,164.176 +6.49204,164.176 +16.9393,164.176 +16.6011,164.176 +9.42061,164.176 +9.42061,164.176 +9.061,164.176 +9.51813,164.176 +9.20654,164.176 +9.20654,164.176 +9.20654,164.176 +9.20654,164.176 +9.20654,164.176 +9.20654,164.176 +9.04185,164.176 +6.0233,164.176 +4.89187,164.176 +4.89181,164.176 +5.67936,164.176 +4.89181,164.176 +4.89181,164.176 +4.89181,164.176 +4.89181,164.176 +4.89181,164.176 +4.89396,164.176 +14.5762,164.176 +17.8271,164.176 +17.5888,164.176 +16.8962,164.176 +16.4959,164.176 +9.05901,164.176 +9.05901,164.176 +9.37201,164.176 +9.37201,164.176 +9.37201,164.176 +9.37201,164.176 +9.37201,164.176 +9.37201,164.176 +8.40828,164.176 +5.03511,164.176 +4.66451,164.176 +4.66451,164.176 +4.66451,164.176 +4.90115,164.176 +4.90115,164.176 +4.66451,164.176 +4.90115,164.176 +4.90115,164.176 +6.05528,164.176 +12.7364,164.176 +15.8585,164.176 +8.70068,164.176 +8.67842,164.176 +8.67842,164.176 +8.67842,164.176 +8.67842,164.176 +9.55885,164.176 +9.16411,164.176 +9.2603,164.176 +8.85905,164.176 +9.2603,164.176 +9.2603,164.176 +8.13438,164.176 +5.7544,164.176 +4.72041,164.176 +4.72041,164.176 +4.95705,164.176 +4.95705,164.176 +4.95705,164.176 +4.7204,164.176 +4.72041,164.176 +4.74227,164.176 +5.02219,164.176 +7.96433,164.176 +16.8291,164.176 +16.8982,164.176 +9.47635,164.176 +9.34052,164.176 +9.66064,164.176 +9.34052,164.176 +9.61124,164.176 +9.61124,164.176 +9.28448,164.176 +9.35526,164.176 +9.35526,164.176 +9.42171,164.176 +8.556,164.176 +6.98332,164.176 +5.4776,164.176 +4.69005,164.176 +4.69005,164.176 +4.69005,164.176 +4.69005,164.176 +4.69005,164.176 +4.97929,164.176 +4.98042,164.176 +6.13364,164.176 +15.4388,164.176 +17.3846,164.176 +17.3325,164.176 +11.7595,164.176 +9.87316,164.176 +9.79222,164.176 +9.7205,164.176 +9.55416,164.176 +10.016,164.176 +9.41959,164.176 +9.69229,164.176 +9.62945,164.176 +9.65493,164.176 +8.09662,164.176 +5.60986,164.176 +5.40611,164.176 +5.64275,164.176 +5.40611,164.176 +5.40611,164.176 +5.40611,164.176 +5.40611,164.176 +5.40611,164.176 +5.40617,164.176 +5.6784,164.176 +13.9768,164.176 +16.0634,164.176 +15.9095,164.176 +10.8386,164.176 +8.94849,164.176 +8.94849,164.176 +8.85051,164.176 +21.1986,164.176 +21.1986,164.176 +21.4971,164.176 +21.2032,164.176 +21.2412,164.176 +21.3422,164.176 +8.98002,164.176 +5.82233,164.176 +5.82232,164.176 +5.58568,164.176 +4.79807,164.176 +4.79812,164.176 +4.79812,164.176 +4.79812,164.176 +4.82556,164.176 +5.12175,164.176 +17.0651,164.176 +28.7503,164.176 +29.5484,164.176 +32.7989,164.176 +28.6288,164.176 +28.2768,164.176 +20.7108,164.176 +20.7108,164.176 +20.3538,164.176 +20.7997,164.176 +20.705,164.176 +20.705,164.176 +20.705,164.176 +20.705,164.176 +9.07764,164.176 +5.91546,164.176 +5.83351,164.176 +5.04595,164.176 +5.04595,164.176 +4.80931,164.176 +5.04595,164.176 +5.04595,164.176 +5.04595,164.176 +5.93916,164.176 +6.02784,164.176 +12.2447,164.176 +15.2459,164.176 +16.1095,164.176 +9.97002,164.176 +9.44318,164.176 +16.6849,164.176 +14.7803,164.176 +9.66649,164.176 +9.78348,164.176 +9.50717,164.176 +9.78348,164.176 +9.3814,164.176 +9.78348,164.176 +9.29253,164.176 +6.60097,164.176 +4.95489,164.176 +4.71825,164.176 +4.71825,164.176 +4.71825,164.176 +4.71825,164.176 +4.71825,164.176 +4.71825,164.176 +12.2936,164.176 +13.9558,164.176 +29.6128,164.176 +31.519,164.176 +32.2846,164.176 +29.0578,164.176 +28.4978,164.176 +27.5818,164.176 +19.3724,164.176 +10.5467,164.176 +8.47147,164.176 +8.47147,164.176 +8.42688,164.176 +8.47147,164.176 +8.47147,164.176 +7.88868,164.176 +5.50091,164.176 +4.35035,164.176 +4.35035,164.176 +4.35035,164.176 +4.35035,164.176 +4.35035,164.176 +4.35035,164.176 +4.35035,164.176 +4.35035,164.176 +12.2774,164.176 +17.5474,164.176 +18.5651,164.176 +18.751,164.176 +18.0152,164.176 +17.4746,164.176 +16.6343,164.176 +9.20552,164.176 +9.20538,164.176 +9.30156,164.176 +9.20538,164.176 +9.16669,164.176 +9.1665,164.176 +9.19824,164.176 +8.38329,164.176 +5.56429,164.176 +4.31883,164.176 +4.31883,164.176 +4.31883,164.176 +4.31883,164.176 +4.31883,164.176 +4.31883,164.176 +4.31883,164.176 +4.31884,164.176 +4.31898,164.176 +13.5844,164.176 +15.7338,164.176 +15.3696,164.176 +12.2134,164.176 +7.60486,164.176 +7.64265,164.176 +7.73884,164.176 +7.63074,164.176 +7.60269,164.176 +7.60269,164.176 +7.60269,164.176 +7.60269,164.176 +7.60269,164.176 +6.71127,164.176 +6.85271,164.176 +4.34296,164.176 +4.34296,164.176 +4.34296,164.176 +4.34296,164.176 +4.34296,164.176 +4.34296,164.176 +4.34296,164.176 +4.34296,164.176 +4.58726,164.176 +5.99129,164.176 +6.28376,164.176 +6.28376,164.176 +6.27541,164.176 +6.28376,164.176 +6.28376,164.176 +6.28376,164.176 +6.26973,164.176 +6.26973,164.176 +6.26973,164.176 +6.83032,164.176 +6.83032,164.176 +6.83032,164.176 +5.97579,164.176 +5.45281,164.176 +4.54433,164.176 +4.28576,164.176 +4.28576,164.176 +4.28576,164.176 +4.54429,164.176 +4.54429,164.176 +4.28576,164.176 +4.54431,164.176 +4.31915,164.176 +5.15259,164.176 +7.87294,164.176 +7.87294,164.176 +7.83515,164.176 +7.83515,164.176 +7.83515,164.176 +7.87294,164.176 +7.94006,164.176 +7.94006,164.176 +7.94006,164.176 +7.9358,164.176 +7.9358,164.176 +8.03199,164.176 +7.88091,164.176 +5.6616,164.176 +4.2166,164.176 +4.21658,164.176 +4.21658,164.176 +4.21658,164.176 +4.21658,164.176 +4.21658,164.176 +4.21658,164.176 +4.21658,164.176 +4.40291,164.176 +6.46894,164.176 +9.21616,164.176 +8.79267,164.176 +8.79267,164.176 +8.33554,164.176 +9.21616,164.176 +9.21616,164.176 +9.51159,164.176 +9.41541,164.176 +9.41541,164.176 +9.51159,164.176 +9.41541,164.176 +9.41541,164.176 +8.63319,164.176 +5.73538,164.176 +4.28897,164.176 +4.28884,164.176 +4.4346,164.176 +4.60642,164.176 +5.42549,164.176 +4.60642,164.176 +4.28884,164.176 +4.34543,164.176 +5.69647,164.176 +9.21448,164.176 +9.59774,164.176 +9.62631,164.176 +9.54537,164.176 +9.64156,164.176 +9.64156,164.176 +9.91786,164.176 +9.68163,164.176 +10.1382,164.176 +10.1229,164.176 +9.71628,164.176 +9.60069,164.176 +9.60069,164.176 +9.22265,164.176 +5.9363,164.176 +5.9363,164.176 +5.14875,164.176 +5.14875,164.176 +5.14875,164.176 +5.14875,164.176 +5.14875,164.176 +5.9363,164.176 +5.20369,164.176 +6.13683,164.176 +16.2819,164.176 +17.5674,164.176 +17.1751,164.176 +10.2103,164.176 +10.1713,164.176 +10.1145,164.176 +9.99028,164.176 +9.76074,164.176 +9.62795,164.176 +9.34568,164.176 +9.32984,164.176 +9.32984,164.176 +9.32984,164.176 +9.42959,164.176 +8.92294,164.176 +7.83367,164.176 +8.0101,164.176 +8.06538,164.176 +8.56731,164.176 +8.32135,164.176 +8.03413,164.176 +8.17221,164.176 +8.30079,164.176 +9.5573,164.176 +17.5707,164.176 +29.1634,164.176 +17.8542,164.176 +16.7832,164.176 +9.97721,164.176 +9.96906,164.176 +9.68865,164.176 +9.53093,164.176 +9.53093,164.176 +9.53093,164.176 +9.53093,164.176 +9.53093,164.176 +9.53093,164.176 +9.51542,164.176 +8.5519,164.176 +7.95635,164.176 +8.00686,164.176 +7.1634,164.176 +7.96815,164.176 +7.40756,164.176 +8.02407,164.176 +8.02407,164.176 +7.38311,164.176 +19.3339,164.176 +28.76,164.176 +29.872,164.176 +29.1197,164.176 +28.5041,164.176 +27.8657,164.176 +20.7259,164.176 +26.2467,164.176 +20.8226,164.176 +20.8764,164.176 +20.8216,164.176 +20.6838,164.176 +20.7299,164.176 +20.7325,164.176 +9.15112,164.176 +7.84354,164.176 +6.94672,164.176 +6.94672,164.176 +6.31836,164.176 +6.41469,164.176 +6.39802,164.176 +6.39802,164.176 +6.49083,164.176 +7.23136,164.176 +16.2506,164.176 +30.5178,164.176 +40.9413,164.176 +29.9885,164.176 +17.8959,164.176 +18.2536,164.176 +17.6027,164.176 +10.1229,164.176 +9.30984,164.176 +9.66742,164.176 +9.3273,164.176 +9.32725,164.176 +9.88591,164.176 +9.82306,164.176 +9.19353,164.176 +8.20921,164.176 +7.25165,164.176 +7.16489,164.176 +7.17947,164.176 +7.16489,164.176 +7.17947,164.176 +7.16489,164.176 +7.17947,164.176 +7.94515,164.176 +7.7237,164.176 +9.30191,164.176 +9.70302,164.176 +9.97932,164.176 +9.3288,164.176 +9.77469,164.176 +11.6051,164.176 +9.37363,164.176 +8.87794,164.176 +8.86661,164.176 +8.85529,164.176 +8.81467,164.176 +8.83776,164.176 +8.74157,164.176 +8.06231,164.176 +4.95408,164.176 +4.2854,164.176 +4.54393,164.176 +4.54393,164.176 +4.54393,164.176 +4.54393,164.176 +4.54393,164.176 +4.54393,164.176 +4.54393,164.176 +5.23566,164.176 +6.65529,164.176 +8.04983,164.176 +8.04983,164.176 +8.04983,164.176 +8.04983,164.176 +10.6979,164.176 +8.14602,164.176 +8.07747,164.176 +8.17366,164.176 +8.17366,164.176 +8.17366,164.176 +8.17366,164.176 +8.17366,164.176 +7.96539,164.176 +6.2846,164.176 +4.24494,164.176 +4.50347,164.176 +4.50347,164.176 +4.50347,164.176 +4.50347,164.176 +4.50347,164.176 +5.16524,164.176 +5.40348,164.176 +4.35831,164.176 +6.83166,164.176 +8.21773,164.176 +8.21773,164.176 +8.21773,164.176 +8.12154,164.176 +8.21773,164.176 +8.12154,164.176 +8.15583,164.176 +8.15583,164.176 +8.15583,164.176 +8.15583,164.176 +8.15583,164.176 +8.15583,164.176 +8.24447,164.176 +5.85024,164.176 +5.69745,164.176 +5.69745,164.176 +5.69743,164.176 +4.90989,164.176 +5.69745,164.176 +5.69745,164.176 +5.69745,164.176 +5.72405,164.176 +6.53693,164.176 +15.9719,164.176 +16.5157,164.176 +16.1483,164.176 +15.5377,164.176 +12.654,164.176 +8.15583,164.176 +8.15583,164.176 +8.23179,163.502 +8.23179,163.502 +8.23179,163.502 +8.23179,163.502 +8.23179,163.502 +8.23179,163.502 +7.83496,163.502 +5.19702,163.502 +4.29374,163.502 +4.29374,163.502 +4.55226,163.502 +4.29374,163.502 +4.55225,163.502 +4.29374,163.502 +4.55229,163.502 +4.29381,163.502 +12.5887,163.502 +18.9843,163.502 +19.2874,163.502 +19.1296,163.502 +18.0951,163.502 +17.7228,163.502 +16.8526,163.502 +9.55887,163.502 +9.45893,163.502 +9.45893,163.502 +9.45893,163.502 +9.60594,163.502 +9.45893,163.502 +10.0871,163.502 +9.02443,163.502 +5.3415,163.502 +4.33374,163.502 +4.33374,163.502 +4.33374,163.502 +4.33374,163.502 +4.33374,163.502 +4.33374,163.502 +4.33374,163.502 +4.33374,163.502 +12.4533,163.502 +14.0165,163.502 +14.3703,163.502 +14.6013,163.502 +13.994,163.502 +13.6252,163.502 +6.28428,163.502 +6.28428,163.502 +6.34618,163.502 +6.34618,163.502 +6.34618,163.502 +7.00296,163.502 +6.44237,163.502 +7.00296,163.502 +6.36614,163.502 +5.8479,163.502 +4.31922,163.502 +4.31922,163.502 +4.31922,163.502 +4.31922,163.502 +4.31922,163.502 +4.31922,163.502 +4.981,163.502 +4.98107,163.502 +5.27595,163.502 +6.69836,163.502 +8.44609,163.502 +8.44609,163.502 +8.44609,163.502 +8.44609,163.502 +8.44609,163.502 +8.44609,163.502 +9.39949,163.502 +9.39949,163.502 +9.39949,163.502 +9.39949,163.502 +9.39949,163.502 +9.39949,163.502 +9.39949,163.502 +6.05201,163.502 +4.94413,163.502 +4.94413,163.502 +4.94413,163.502 +4.94413,163.502 +4.94413,163.502 +4.70749,163.502 +4.94413,163.502 +4.70749,163.502 +5.04251,163.502 +16.7742,163.502 +17.2932,163.502 +16.8203,163.502 +11.4811,163.502 +9.55535,163.502 +9.55535,163.502 +9.27904,163.502 +9.42407,163.502 +9.42407,163.502 +9.42407,163.502 +9.29829,163.502 +9.29829,163.502 +9.42407,163.502 +9.29829,163.502 +6.68889,163.502 +4.96724,163.502 +4.7306,163.502 +4.7306,163.502 +4.7306,163.502 +4.7306,163.502 +4.7306,163.502 +4.7306,163.502 +4.95022,163.502 +5.15889,163.502 +13.7245,163.502 +16.5363,163.502 +13.8166,163.502 +9.22736,163.502 +9.22736,163.502 +9.22736,163.502 +9.22736,163.502 +9.87733,163.502 +9.57246,163.502 +9.46545,163.502 +9.57246,163.502 +9.47627,163.502 +9.47627,163.502 +9.14541,163.502 +6.45248,163.502 +5.00396,163.502 +5.00394,163.502 +4.92299,163.502 +4.92299,163.502 +5.00394,163.502 +4.92299,163.502 +4.92299,163.502 +4.95917,163.502 +6.24158,163.502 +9.82622,163.502 +9.84146,163.502 +9.96439,163.502 +9.97963,163.502 +9.97963,163.502 +9.96439,163.502 +9.96439,163.502 +8.90577,163.502 +8.92102,163.502 +8.79524,163.502 +8.92102,163.502 +8.92102,163.502 +8.92102,163.502 +8.78083,163.502 +7.84458,163.502 +5.12135,163.502 +5.72646,163.502 +5.12135,163.502 +5.20229,163.502 +5.12135,163.502 +5.12135,163.502 +5.79818,163.502 +5.41274,163.502 +7.64453,163.502 +9.31038,163.502 +9.26555,163.502 +9.40657,163.502 +9.24745,163.502 +9.18461,163.502 +9.26555,163.502 +9.18461,163.502 +9.02362,163.502 +8.73201,163.502 +8.73201,163.502 +8.8282,163.502 +8.72863,163.502 +8.82482,163.502 +8.72863,163.502 +8.67242,163.502 +8.31841,163.502 +7.6682,163.502 +6.62336,163.502 +6.01825,163.502 +7.18395,163.502 +5.75826,163.502 +5.19767,163.502 +5.46932,163.502 +6.28304,163.502 +8.03625,163.502 +8.59684,163.502 +8.59684,163.502 +8.59684,163.502 +8.59684,163.502 +8.59684,163.502 +8.59684,163.502 +8.26567,163.502 +8.26567,163.502 +8.26567,163.502 +8.26567,163.502 +8.26567,163.502 +8.29511,163.502 +7.96888,163.502 +5.40603,163.502 +4.87833,163.502 +4.64169,163.502 +4.64169,163.502 +4.87833,163.502 +4.87833,163.502 +4.64169,163.502 +4.87833,163.502 +5.83804,163.502 +7.1151,163.502 +9.48551,163.502 +9.02839,163.502 +9.48551,163.502 +9.02839,163.502 +9.48551,163.502 +9.48551,163.502 +9.02839,163.502 +9.4542,163.502 +9.4542,163.502 +9.4542,163.502 +9.4542,163.502 +9.4542,163.502 +9.4542,163.502 +9.30285,163.502 +6.3838,163.502 +4.7211,163.502 +4.7211,163.502 +4.7211,163.502 +4.7211,163.502 +4.7211,163.502 +4.7211,163.502 +4.73888,163.502 +4.76074,163.502 +12.1841,163.502 +17.8333,163.502 +22.5405,163.502 +17.0476,163.502 +15.3692,163.502 +15.3692,163.502 +15.2882,163.502 +15.3692,163.502 +15.5357,163.502 +15.5204,163.502 +15.5204,163.502 +15.5308,163.502 +15.6964,163.502 +15.6002,163.502 +8.45238,163.502 +6.34967,163.502 +4.72036,163.502 +4.72036,163.502 +4.72035,163.502 +4.72035,163.502 +4.72036,163.502 +4.72036,163.502 +4.72036,163.502 +4.98875,163.502 +5.50997,163.502 +12.7546,163.502 +17.2922,163.502 +12.0379,163.502 +10.3056,163.502 +10.0482,163.502 +10.0185,163.502 +9.79454,163.502 +10.0502,163.502 +9.7619,163.502 +9.76715,163.502 +9.76715,163.502 +9.65155,163.502 +9.7619,163.502 +9.12944,163.502 +5.9346,163.502 +4.74793,163.502 +4.74793,163.502 +4.74793,163.502 +4.74793,163.502 +4.74793,163.502 +4.74791,163.502 +4.74793,163.502 +4.78807,163.502 +6.63365,163.502 +14.8696,163.502 +17.1703,163.502 +10.0266,163.502 +10.0266,163.502 +9.62558,163.502 +10.0266,163.502 +9.94569,163.502 +9.95765,163.502 +9.545,163.502 +9.57834,163.502 +9.81803,163.502 +9.88882,163.502 +9.49231,163.502 +9.36366,163.502 +6.74692,163.502 +4.72474,163.502 +4.72472,163.502 +4.72472,163.502 +4.72472,163.502 +4.72472,163.502 +4.72472,163.502 +4.72472,163.502 +4.72474,163.502 +14.8654,163.502 +18.9961,163.502 +19.2726,163.502 +18.6961,163.502 +17.9767,163.502 +17.5104,163.502 +10.0451,163.502 +10.0299,163.502 +10.3687,163.502 +10.0202,163.502 +10.3403,163.502 +10.333,163.502 +10.333,163.502 +10.3376,163.502 +9.38778,163.502 +7.64158,163.502 +4.6139,163.502 +4.6139,163.502 +4.6139,163.502 +4.6139,163.502 +4.6139,163.502 +4.6139,163.502 +4.6139,163.502 +4.82983,163.502 +14.4416,163.502 +18.8937,163.502 +19.3989,163.502 +18.6995,163.502 +18.0379,163.502 +17.5522,163.502 +9.85618,163.502 +10.0633,163.502 +9.60508,163.502 +9.60115,163.502 +9.58642,163.502 +9.90654,163.502 +10.1828,163.502 +10.0144,163.502 +9.78339,163.502 +7.69828,163.502 +5.11968,163.502 +5.08665,163.502 +4.88304,163.502 +4.88304,163.502 +4.88304,163.502 +4.88304,163.502 +4.88304,163.502 +5.86096,163.502 +13.7986,163.502 +29.7966,163.502 +30.3257,163.502 +29.6829,163.502 +28.991,163.502 +28.6679,163.502 +21.0554,163.502 +10.1376,163.502 +20.6946,163.502 +20.5683,163.502 +20.5683,163.502 +20.7008,163.502 +20.797,163.502 +20.7857,163.502 +9.4102,163.502 +8.36738,163.502 +7.83841,163.502 +7.87144,163.502 +7.83706,163.502 +7.83706,163.502 +7.87009,163.502 +7.95238,163.502 +8.13592,163.502 +9.17006,163.502 +9.40022,163.502 +10.5141,163.502 +10.4652,163.502 +10.5294,163.502 +10.5076,163.502 +10.5228,163.502 +10.5035,163.502 +9.71233,163.502 +10.2888,163.502 +10.2888,163.502 +10.2888,163.502 +10.0385,163.502 +10.2888,163.502 +10.1972,163.502 +10.0662,163.502 +8.84043,163.502 +7.74792,163.502 +7.93315,163.502 +7.95089,163.502 +7.9644,163.502 +7.93315,163.502 +8.36886,163.502 +7.74561,163.502 +7.96341,163.502 +9.52368,163.502 +17.7766,163.502 +18.1719,163.502 +17.4916,163.502 +11.683,163.502 +9.9347,163.502 +10.0156,163.502 +9.91357,163.502 +9.83959,163.502 +9.51387,163.502 +9.83959,163.502 +9.65823,163.502 +9.6486,163.502 +9.6486,163.502 +9.11276,163.502 +7.58653,163.502 +4.78111,163.502 +5.64151,163.502 +5.64151,163.502 +5.64151,163.502 +5.64151,163.502 +5.64151,163.502 +5.64151,163.502 +5.64151,163.502 +5.78016,163.502 +15.6898,163.502 +16.1208,163.502 +11.3222,163.502 +9.49407,163.502 +9.46628,163.502 +9.46628,163.502 +9.46628,163.502 +9.64739,163.502 +9.27822,163.502 +9.27822,163.502 +9.27822,163.502 +9.27822,163.502 +9.27822,163.502 +9.31722,163.502 +8.19801,163.502 +7.41024,163.502 +5.4285,163.502 +4.5681,163.502 +5.4285,163.502 +5.4285,163.502 +5.4285,163.502 +5.42849,163.502 +5.65397,163.502 +6.43739,163.502 +9.64626,163.502 +9.46431,163.502 +9.78443,163.502 +9.78443,163.502 +9.78443,163.502 +9.78443,163.502 +9.78443,163.502 +9.44625,163.502 +9.88757,163.502 +9.77197,163.502 +9.88757,163.502 +9.88757,163.502 +9.88757,163.502 +9.33092,163.502 +7.9035,163.502 +5.30248,163.502 +5.30248,163.502 +5.53912,163.502 +5.30248,163.502 +5.30248,163.502 +5.53912,163.502 +4.67871,163.502 +5.68706,163.502 +8.03393,163.502 +8.90525,163.502 +8.48175,163.502 +8.90525,163.502 +8.90525,163.502 +8.90525,163.502 +9.00323,163.502 +8.90525,163.502 +9.05306,163.502 +9.09722,163.502 +9.09722,163.502 +9.00103,163.502 +9.00103,163.502 +9.03277,163.502 +8.34408,163.502 +7.63052,163.502 +7.11025,163.502 +4.29157,163.502 +4.29157,163.502 +4.29157,163.502 +4.29157,163.502 +4.29157,163.502 +4.5501,163.502 +4.29159,163.502 +4.59571,163.502 +8.55589,163.502 +8.55691,163.502 +8.55691,163.502 +8.55691,163.502 +8.55691,163.502 +8.55691,163.502 +8.55691,163.502 +8.53345,163.502 +8.53345,163.502 +8.62963,163.502 +8.53345,163.502 +8.62963,163.502 +8.62963,163.502 +8.5964,163.502 +7.41303,163.502 +6.16568,163.502 +5.37813,163.502 +5.59447,163.502 +5.39671,163.502 +5.63335,163.502 +5.63342,163.502 +4.77302,163.502 +4.55823,163.502 +5.32384,163.502 +9.60131,163.502 +12.2407,163.502 +9.32501,163.502 +9.32501,163.502 +9.58607,163.502 +9.60131,163.502 +9.58607,163.502 +9.30169,163.502 +9.39787,163.502 +9.39787,163.502 +9.30169,163.502 +9.38263,163.502 +9.39787,163.502 +9.36867,163.502 +5.93769,163.502 +5.36908,163.502 +5.40707,163.502 +5.6057,163.502 +5.6057,163.502 +5.6057,163.502 +5.6057,163.502 +5.36904,163.502 +5.59969,163.502 +6.53293,163.502 +9.75132,163.502 +9.75473,163.502 +9.46225,163.502 +9.88949,163.502 +9.34741,163.502 +9.56937,163.502 +9.88949,163.502 +9.83876,163.502 +9.51864,163.502 +9.51864,163.502 +9.76704,163.502 +9.51864,163.502 +9.77231,163.502 +9.84798,163.502 +8.17163,163.502 +5.91228,163.502 +5.93945,163.502 +5.93945,163.502 +5.9453,163.502 +5.9453,163.502 +5.9453,163.502 +5.91228,163.502 +6.06054,163.502 +8.34559,163.502 +9.78153,163.502 +14.2296,163.502 +9.83265,163.502 +9.85326,163.502 +9.85326,163.502 +9.85326,163.502 +9.83265,163.502 +9.07572,163.502 +9.42788,163.502 +9.60799,163.502 +9.04613,163.502 +9.33169,163.502 +9.04613,163.502 +9.04542,163.502 +8.04886,163.502 +6.61807,163.502 +5.60404,163.502 +4.99893,163.502 +4.99893,163.502 +4.99893,163.502 +4.99893,163.502 +4.99893,163.502 +4.99893,163.502 +13.0606,163.502 +15.3422,163.502 +15.3422,163.502 +15.6185,163.502 +15.6185,163.502 +15.6032,163.502 +15.8276,163.502 +15.6032,163.502 +15.8409,163.502 +15.6904,163.502 +15.8409,163.502 +15.9667,163.502 +9.97535,163.502 +9.97535,163.502 +9.83584,163.502 +9.00489,163.502 +8.19835,163.502 +5.75393,163.502 +5.75393,163.502 +4.96637,163.502 +4.96637,163.502 +4.96637,163.502 +5.75393,163.502 +5.75393,163.502 +8.85007,163.502 +9.32987,163.502 +9.32987,163.502 +9.32987,163.502 +9.32987,163.502 +9.32987,163.502 +9.09452,163.502 +9.09452,163.502 +8.93324,163.502 +8.93324,163.502 +8.93324,163.502 +8.93324,163.502 +8.93324,163.502 +8.93324,163.502 +8.71028,163.502 +5.86533,163.502 +4.48197,163.502 +4.18711,163.502 +4.18711,163.502 +4.18711,163.502 +4.18711,163.502 +4.187,163.502 +4.51967,163.502 +4.61076,163.502 +6.25769,163.502 +8.35792,163.502 +8.35792,163.502 +8.35792,163.502 +8.35792,163.502 +8.35792,163.502 +8.45411,163.502 +8.45411,163.502 +8.39198,163.502 +8.39198,163.502 +8.39198,163.502 +8.39198,163.502 +8.39198,163.502 +8.38293,163.502 +8.21193,163.502 +7.63548,163.502 +4.55375,163.502 +4.2831,163.502 +4.54163,163.502 +4.2831,163.502 +4.54163,163.502 +4.2831,163.502 +4.2831,163.502 +4.62281,163.502 +5.38982,163.502 +8.60315,163.502 +8.47737,163.502 +8.47737,163.502 +8.50517,163.502 +8.50517,163.502 +8.47737,163.502 +8.47737,163.502 +8.93862,163.502 +9.03481,163.502 +8.83346,163.502 +8.92964,163.502 +8.93862,163.502 +8.81285,163.502 +8.92964,163.502 +6.67756,163.502 +4.46149,163.502 +4.46149,163.502 +4.46149,163.502 +4.46149,163.502 +4.46149,163.502 +4.46149,163.502 +4.47339,163.502 +4.40181,163.502 +4.65093,163.502 +6.19768,163.502 +8.15093,163.502 +8.15093,163.502 +8.15093,163.502 +8.15093,163.502 +8.24712,163.502 +8.15093,163.502 +8.18531,163.502 +8.42065,163.502 +8.42065,163.502 +8.37908,163.502 +8.33164,163.502 +8.33164,163.502 +8.30753,163.502 +6.49724,163.502 +4.33629,163.502 +4.33629,163.502 +4.33629,163.502 +4.33629,163.502 +4.33629,163.502 +4.33629,163.502 +4.33629,163.502 +4.33629,163.502 +5.21909,163.502 +7.4084,163.502 +8.5741,163.502 +8.5741,163.502 +8.5741,163.502 +8.5741,163.502 +8.5741,163.502 +8.5741,163.502 +30.6851,164.39 +30.7812,164.39 +30.7812,164.39 +30.7812,164.39 +30.6851,164.39 +30.6851,164.39 +8.95348,164.39 +7.56056,164.39 +4.85998,164.39 +4.85998,164.39 +4.85998,164.39 +4.85998,164.39 +4.85998,164.39 +4.85997,164.39 +4.88184,164.39 +5.2422,164.39 +8.42929,164.39 +17.5769,164.39 +19.9411,164.39 +12.4599,164.39 +9.45509,164.39 +9.3589,164.39 +9.3589,164.39 +9.45509,164.39 +9.20469,164.39 +9.20469,164.39 +9.20469,164.39 +9.20469,164.39 +9.20469,164.39 +9.30087,164.39 +9.10231,164.39 +7.62778,164.39 +5.5515,164.39 +4.73739,164.39 +4.73739,164.39 +4.76394,164.39 +4.76394,164.39 +4.76394,164.39 +4.76394,164.39 +4.99476,164.39 +8.47487,164.39 +19.9247,164.39 +18.614,164.39 +9.20861,164.39 +9.20861,164.39 +9.30196,164.39 +9.20861,164.39 +9.20861,164.39 +9.16155,164.39 +8.91863,164.39 +8.91863,164.39 +8.87176,164.39 +8.88084,164.39 +8.88084,164.39 +8.09658,164.39 +6.68087,164.39 +4.32261,164.39 +4.32259,164.39 +4.32259,164.39 +4.32259,164.39 +4.32259,164.39 +4.32259,164.39 +4.32259,164.39 +4.33636,164.39 +13.0761,164.39 +18.2029,164.39 +18.1446,164.39 +17.2724,164.39 +16.5729,164.39 +13.9638,164.39 +8.99201,164.39 +8.99201,164.39 +8.60683,164.39 +8.37149,164.39 +8.45471,164.39 +8.41692,164.39 +8.45471,164.39 +8.41692,164.39 +8.45471,164.39 +8.39183,164.39 +5.47954,164.39 +5.47954,164.39 +4.61914,164.39 +4.61914,164.39 +4.61914,164.39 +4.61914,164.39 +5.47954,164.39 +6.15011,164.39 +6.78254,164.39 +7.25508,164.39 +8.65226,164.39 +8.65226,164.39 +8.65226,164.39 +8.65226,164.39 +8.65226,164.39 +8.65226,164.39 +8.56529,164.39 +8.33268,164.39 +8.33268,164.39 +8.33268,164.39 +8.40938,164.39 +8.40938,164.39 +8.38171,164.39 +7.56313,164.39 +5.2282,164.39 +5.54314,164.39 +4.62368,164.39 +5.85762,164.39 +5.22556,164.39 +5.72379,164.39 +5.72379,164.39 +5.73242,164.39 +5.72747,164.39 +8.47774,164.39 +8.47774,164.39 +8.47774,164.39 +8.47774,164.39 +8.47774,164.39 +8.47774,164.39 +8.47774,164.39 +8.26589,164.39 +8.26589,164.39 +8.50124,164.39 +8.50124,164.39 +8.26589,164.39 +8.26589,164.39 +8.25821,164.39 +4.73197,164.39 +4.74783,164.39 +4.18711,164.39 +4.18711,164.39 +4.1871,164.39 +4.18711,164.39 +4.18709,164.39 +4.18711,164.39 +4.18724,164.39 +4.41236,164.39 +6.15077,164.39 +8.17234,164.39 +8.17234,164.39 +8.17234,164.39 +8.17234,164.39 +8.17234,164.39 +8.1429,164.39 +8.13436,164.39 +8.17215,164.39 +8.17215,164.39 +8.17215,164.39 +8.17215,164.39 +8.17215,164.39 +8.05607,164.39 +4.70127,164.39 +4.18711,164.39 +4.18709,164.39 +4.18711,164.39 +4.18711,164.39 +4.18711,164.39 +4.18711,164.39 +4.18711,164.39 +4.18711,164.39 +4.48231,164.39 +7.74705,164.39 +8.35216,164.39 +8.35216,164.39 +8.35216,164.39 +8.35216,164.39 +8.35216,164.39 +8.35216,164.39 +8.80584,164.39 +8.80584,164.39 +8.80584,164.39 +8.80584,164.39 +8.80584,164.39 +8.80584,164.39 +8.4974,164.39 +5.75507,164.39 +5.3448,164.39 +4.54408,164.39 +4.4844,164.39 +4.54408,164.39 +4.4844,164.39 +5.40448,164.39 +5.41639,164.39 +4.54408,164.39 +4.80466,164.39 +8.14053,164.39 +8.70112,164.39 +8.70112,164.39 +8.70112,164.39 +8.70112,164.39 +8.70112,164.39 +8.70112,164.39 +8.62118,164.39 +8.62118,164.39 +8.72823,164.39 +8.72823,164.39 +8.62118,164.39 +8.65295,164.39 +8.62118,164.39 +7.83358,164.39 +6.02874,164.39 +4.92361,164.39 +4.92361,164.39 +4.92361,164.39 +4.92361,164.39 +4.92361,164.39 +4.92361,164.39 +4.94546,164.39 +6.69598,164.39 +9.33019,164.39 +9.57166,164.39 +9.40548,164.39 +9.50166,164.39 +9.40548,164.39 +9.40548,164.39 +9.40548,164.39 +9.32887,164.39 +9.20309,164.39 +9.20309,164.39 +9.20309,164.39 +9.20309,164.39 +9.20309,164.39 +9.20309,164.39 +9.25231,164.39 +9.48197,164.39 +9.36404,164.39 +8.69603,164.39 +9.08487,164.39 +9.49042,164.39 +8.76486,164.39 +8.77898,164.39 +8.64953,164.39 +9.20309,164.39 +9.20309,164.39 +9.20309,164.39 +9.20309,164.39 +9.20309,164.39 +9.20309,164.39 +9.20309,164.39 +9.20309,164.39 +9.10451,164.39 +9.10451,164.39 +9.06359,164.39 +9.10138,164.39 +9.10138,164.39 +9.06359,164.39 +9.10138,164.39 +9.28889,164.39 +9.3117,164.39 +7.60796,164.39 +8.39246,164.39 +6.95068,164.39 +7.02931,164.39 +7.01866,164.39 +7.03513,164.39 +7.09831,164.39 +7.40133,164.39 +9.29326,164.39 +9.33106,164.39 +9.33106,164.39 +9.33106,164.39 +9.33106,164.39 +9.33106,164.39 +9.33106,164.39 +9.26428,164.39 +9.26428,164.39 +9.26428,164.39 +9.2972,164.39 +9.2972,164.39 +9.26428,164.39 +9.26428,164.39 +5.89449,164.39 +4.20947,164.39 +4.18713,164.39 +4.18713,164.39 +4.18711,164.39 +4.18713,164.39 +4.18711,164.39 +4.18713,164.39 +4.18713,164.39 +4.54338,164.39 +5.94906,164.39 +7.90231,164.39 +7.90231,164.39 +7.90231,164.39 +7.86939,164.39 +7.90231,164.39 +7.90231,164.39 +7.74067,164.39 +7.74067,164.39 +7.74067,164.39 +7.74067,164.39 +7.74067,164.39 +7.74067,164.39 +7.74067,164.39 +5.10056,164.39 +4.18711,164.39 +4.18711,164.39 +4.73398,164.39 +4.76024,164.39 +4.18711,164.39 +4.18711,164.39 +4.18711,164.39 +4.18711,164.39 +4.61889,164.39 +5.81515,164.39 +7.73548,164.39 +7.73548,164.39 +7.73548,164.39 +7.73548,164.39 +7.73548,164.39 +7.73548,164.39 +7.97253,164.39 +7.97253,164.39 +7.97253,164.39 +7.97253,164.39 +7.97253,164.39 +7.97253,164.39 +7.97253,164.39 +5.71987,164.39 +4.18713,164.39 +4.18711,164.39 +4.18711,164.39 +4.38595,164.39 +4.38595,164.39 +4.18711,164.39 +4.18713,164.39 +4.45914,164.39 +4.84342,164.39 +6.02694,164.39 +7.88401,164.39 +7.88401,164.39 +7.88401,164.39 +7.88401,164.39 +7.88401,164.39 +7.88401,164.39 +7.9355,164.39 +7.83931,164.39 +7.9355,164.39 +7.9355,164.39 +7.83931,164.39 +7.83931,164.39 +7.83931,164.39 +5.84956,164.39 +5.25446,164.39 +5.23544,164.39 +5.23544,164.39 +5.23544,164.39 +5.23544,164.39 +5.23544,164.39 +5.23544,164.39 +5.05593,164.39 +5.37774,164.39 +5.91237,164.39 +7.72629,164.39 +7.86562,164.39 +7.85038,164.39 +7.86562,164.39 +7.86562,164.39 +7.86562,164.39 +8.0266,164.39 +8.0266,164.39 +8.0266,164.39 +8.0266,164.39 +8.0266,164.39 +8.0266,164.39 +8.0266,164.39 +4.7821,164.39 +4.33395,164.39 +4.33395,164.39 +4.33395,164.39 +4.33395,164.39 +4.33395,164.39 +4.33395,164.39 +4.33395,164.39 +5.19435,164.39 +5.29353,164.39 +6.15658,164.39 +8.10984,164.39 +8.10984,164.39 +8.10984,164.39 +8.10984,164.39 +8.10984,164.39 +8.10984,164.39 +8.31114,164.39 +8.40733,164.39 +8.40733,164.39 +8.37801,164.39 +8.31114,164.39 +8.31114,164.39 +8.31114,164.39 +6.03241,164.39 +5.78415,164.39 +6.16229,164.39 +6.38926,164.39 +6.94985,164.39 +6.94985,164.39 +6.94985,164.39 +6.97466,164.39 +6.59545,164.39 +8.56325,164.39 +16.0204,164.39 +15.7003,164.39 +15.7003,164.39 +15.6194,164.39 +15.3058,164.39 +15.3058,164.39 +15.6194,164.39 +17.9705,164.39 +16.0874,164.39 +16.3739,164.39 +15.4527,164.39 +16.1381,164.39 +15.8979,164.39 +16.0874,164.39 +8.77849,164.39 +7.80372,164.39 +6.92688,164.39 +6.92688,164.39 +6.32177,164.39 +6.69024,164.39 +6.92688,164.39 +6.40749,164.39 +7.02059,164.39 +9.85005,164.39 +17.1374,164.39 +16.9375,164.39 +9.78858,164.39 +9.97243,164.39 +9.78858,164.39 +9.78858,164.39 +9.78858,164.39 +9.18464,164.39 +8.90369,164.39 +9.12459,164.39 +8.84506,164.39 +9.12459,164.39 +9.17699,164.39 +9.17532,164.39 +7.7751,164.39 +5.10763,164.39 +5.33494,164.39 +5.33494,164.39 +4.47454,164.39 +5.33494,164.39 +5.33494,164.39 +5.33494,164.39 +5.33494,164.39 +5.60198,164.39 +7.04045,164.39 +8.20615,164.39 +8.20615,164.39 +8.20615,164.39 +8.20615,164.39 +8.65205,164.39 +8.20615,164.39 +8.86475,164.39 +8.11602,164.39 +7.81699,164.39 +7.7774,164.39 +7.81699,164.39 +7.81699,164.39 +7.81699,164.39 +7.71095,164.39 +4.18718,164.39 +4.18718,164.39 +4.18718,164.39 +4.18718,164.39 +4.18718,164.39 +4.18718,164.39 +4.18718,164.39 +4.47968,164.39 +5.1493,164.39 +6.67492,164.39 +8.05835,164.39 +8.05835,164.39 +8.05835,164.39 +8.05835,164.39 +8.05835,164.39 +8.05835,164.39 +7.76708,164.39 +7.76708,164.39 +7.65311,164.39 +7.64554,164.39 +7.72017,164.39 +7.74791,164.39 +7.76708,164.39 +7.72777,164.39 +4.85064,164.39 +5.12563,164.39 +4.72731,164.39 +4.85064,164.39 +4.72731,164.39 +4.72731,164.39 +4.94393,164.39 +4.85577,164.39 +4.85913,164.39 +6.83234,164.39 +7.9686,164.39 +7.9686,164.39 +7.9686,164.39 +7.9686,164.39 +7.9686,164.39 +7.9686,164.39 +7.98047,164.39 +7.98047,164.39 +8.01827,164.39 +8.14404,164.39 +8.14404,164.39 +8.14404,164.39 +8.13509,164.39 +6.58684,164.39 +4.35643,164.39 +4.35643,164.39 +4.35643,164.39 +4.35643,164.39 +4.35643,164.39 +4.35643,164.39 +4.35643,164.39 +4.395,164.39 +5.22007,164.39 +8.52967,164.39 +8.40389,164.39 +8.40389,164.39 +8.40389,164.39 +8.37407,164.39 +8.40389,164.39 +8.26991,164.39 +8.34972,164.39 +8.34972,164.39 +8.32192,164.39 +8.34972,164.39 +8.4459,164.39 +8.4459,164.39 +8.4459,164.39 +7.23628,164.39 +4.48754,164.39 +4.51056,164.39 +4.25203,164.39 +4.51056,164.39 +4.25201,164.39 +4.25203,164.39 +4.25203,164.39 +4.51056,164.39 +5.64367,164.39 +8.47082,164.39 +8.56701,164.39 +8.56701,164.39 +8.56701,164.39 +8.53921,164.39 +8.56701,164.39 +8.56701,164.39 +8.83847,164.39 +8.74228,164.39 +8.83847,164.39 +8.74228,164.39 +8.74228,164.39 +8.74228,164.39 +8.74228,164.39 +8.12458,164.39 +4.55605,164.39 +4.95009,164.39 +4.28555,164.39 +4.28557,164.39 +4.28557,164.39 +4.28557,164.39 +4.5441,164.39 +4.5441,164.39 +7.21076,164.39 +9.34288,164.39 +9.2467,164.39 +9.34288,164.39 +9.08691,164.39 +9.08691,164.39 +9.34288,164.39 +9.08691,164.39 +9.0452,164.39 +9.14139,164.39 +9.14139,164.39 +9.39737,164.39 +9.30118,164.39 +9.67367,164.39 +9.67367,164.39 +8.12055,164.39 +5.68626,164.39 +4.662,164.39 +4.89871,164.39 +4.66207,164.39 +4.89871,164.39 +4.66207,164.39 +4.89864,164.39 +4.66207,164.39 +8.56619,164.39 +9.42397,164.39 +9.52015,164.39 +9.42397,164.39 +9.52015,164.39 +9.52015,164.39 +9.52015,164.39 +8.63953,164.39 +8.33348,164.39 +8.33348,164.39 +8.33348,164.39 +8.33348,164.39 +8.33348,164.39 +8.33348,164.39 +8.33348,164.39 +7.63475,164.39 +4.53739,164.39 +4.53733,164.39 +4.53733,164.39 +4.53733,164.39 +4.53731,164.39 +4.53733,164.39 +4.2788,164.39 +4.53739,164.39 +8.40182,164.39 +8.47784,164.39 +8.44889,164.39 +8.47784,164.39 +8.47784,164.39 +8.44889,164.39 +8.44889,164.39 +8.44889,164.39 +8.40908,164.39 +8.40908,164.39 +8.40908,164.39 +8.40908,164.39 +8.38103,164.39 +8.38103,164.39 +8.40908,164.39 +6.31693,164.39 +4.18718,164.39 +4.18711,164.39 +4.18711,164.39 +4.18711,164.39 +4.18711,164.39 +4.18711,164.39 +4.18711,164.39 +4.53371,164.39 +5.60092,164.39 +5.90709,164.39 +7.86034,164.39 +7.86034,164.39 +7.86034,164.39 +7.86034,164.39 +7.86034,164.39 +7.86034,164.39 +7.88863,164.39 +7.88863,164.39 +7.88863,164.39 +7.88863,164.39 +7.88863,164.39 +7.88863,164.39 +7.80505,164.39 +5.27301,164.39 +4.19004,164.39 +4.19004,164.39 +4.19004,164.39 +4.19004,164.39 +4.19002,164.39 +4.19004,164.39 +4.18997,164.39 +4.24138,164.39 +5.93059,164.39 +7.27873,164.39 +7.88384,164.39 +7.88384,164.39 +7.88384,164.39 +7.88384,164.39 +7.88384,164.39 +7.88384,164.39 +8.10478,164.39 +8.10478,164.39 +8.10478,164.39 +8.10478,164.39 +8.10478,164.39 +8.10478,164.39 +8.10478,164.39 +5.73306,164.39 +5.1816,164.39 +5.2415,164.39 +5.47974,164.39 +5.44013,164.39 +5.2415,164.39 +5.2415,164.39 +5.2415,164.39 +5.24271,164.39 +5.83568,164.39 +7.39244,164.39 +8.47719,164.39 +8.47719,164.39 +8.47719,164.39 +8.47719,164.39 +8.47719,164.39 +8.47719,164.39 +8.56233,164.39 +8.56233,164.39 +8.56233,164.39 +8.56233,164.39 +8.56233,164.39 +8.64327,164.39 +8.65851,164.39 +8.11254,164.39 +6.92594,164.39 +5.32256,164.39 +5.32256,164.39 +5.32256,164.39 +5.32256,164.39 +5.32256,164.39 +5.52618,164.39 +6.79655,164.39 +8.34518,164.39 +8.96384,164.39 +9.67888,164.39 +9.40258,164.39 +9.58269,164.39 +9.30639,164.39 +9.30639,164.39 +9.58269,164.39 +8.9917,164.39 +8.65491,164.39 +8.6776,164.39 +8.6776,164.39 +8.6776,164.39 +8.6776,164.39 +8.6776,164.39 +8.72144,164.39 +7.10807,164.39 +5.63489,164.39 +5.39825,164.39 +5.39825,164.39 +5.39825,164.39 +5.39825,164.39 +5.39825,164.39 +6.00301,164.39 +8.6776,164.39 +8.6776,164.39 +8.6776,164.39 +8.93358,164.39 +8.6776,164.39 +8.97137,164.39 +8.71539,164.39 +8.71539,164.39 +9.35041,184.064 +9.24569,184.064 +9.35041,184.064 +9.29552,184.064 +9.35041,184.064 +9.32097,184.064 +9.27513,184.064 +6.43999,184.064 +4.1872,184.064 +4.18718,184.064 +4.1872,184.064 +4.1872,184.064 +4.1872,184.064 +4.1872,184.064 +4.1872,184.064 +4.38604,184.064 +5.03673,184.064 +8.55683,184.064 +8.55683,184.064 +8.55683,184.064 +8.55683,184.064 +8.55683,184.064 +8.55683,184.064 +8.55683,184.064 +8.64244,184.064 +8.64244,184.064 +8.64244,184.064 +8.64244,184.064 +8.64244,184.064 +8.64244,184.064 +8.54625,184.064 +7.73808,184.064 +4.91768,184.064 +4.68104,184.064 +4.68104,184.064 +4.68104,184.064 +4.68104,184.064 +4.68104,184.064 +4.68104,184.064 +4.68104,184.064 +8.4071,184.064 +8.54625,184.064 +8.64244,184.064 +8.54625,184.064 +8.64244,184.064 +8.64244,184.064 +8.64244,184.064 +8.54625,184.064 +8.71109,184.064 +8.71109,184.064 +8.71109,184.064 +8.6149,184.064 +8.6149,184.064 +8.6149,184.064 +8.71109,184.064 +8.06086,184.064 +4.70908,184.064 +4.70908,184.064 +4.70908,184.064 +4.70908,184.064 +4.70908,184.064 +4.70908,184.064 +4.70908,184.064 +4.71941,184.064 +7.06481,184.064 +9.2242,184.064 +9.12801,184.064 +9.2242,184.064 +9.2242,184.064 +9.2242,184.064 +9.2242,184.064 +9.12801,184.064 +12.4803,184.064 +12.4474,184.064 +12.4507,184.064 +12.0328,184.064 +12.4353,184.064 +12.4474,184.064 +12.4106,184.064 +5.55471,184.064 +5.30188,184.064 +4.44148,184.064 +5.30188,184.064 +5.30188,184.064 +5.30188,184.064 +5.30187,184.064 +5.30188,184.064 +5.30896,184.064 +7.95632,184.064 +8.63932,184.064 +8.40398,184.064 +8.63932,184.064 +8.63932,184.064 +8.63932,184.064 +8.54314,184.064 +8.63932,184.064 +8.46502,184.064 +8.46502,184.064 +8.22968,184.064 +8.46502,184.064 +8.42723,184.064 +8.46502,184.064 +8.42723,184.064 +7.35491,184.064 +4.68637,184.064 +5.84491,184.064 +5.8053,184.064 +5.7086,184.064 +5.54677,184.064 +5.8053,184.064 +5.8053,184.064 +4.68637,184.064 +7.17424,184.064 +8.22968,184.064 +8.46502,184.064 +8.22968,184.064 +8.22968,184.064 +8.46502,184.064 +8.46502,184.064 +8.46502,184.064 +8.64839,184.064 +8.74458,184.064 +8.74458,184.064 +8.74458,184.064 +8.74458,184.064 +8.74458,184.064 +8.74458,184.064 +7.81426,184.064 +4.33305,184.064 +5.45198,184.064 +5.19345,184.064 +5.45198,184.064 +5.25336,184.064 +5.45198,184.064 +5.49159,184.064 +5.46312,184.064 +8.317,184.064 +9.29131,184.064 +9.81668,184.064 +9.54729,184.064 +9.54729,184.064 +9.81668,184.064 +9.81668,184.064 +9.54729,184.064 +9.47345,184.064 +9.47345,184.064 +9.47345,184.064 +9.47345,184.064 +9.47345,184.064 +9.47345,184.064 +9.47345,184.064 +8.91222,184.064 +4.52488,184.064 +4.52488,184.064 +5.38528,184.064 +5.42489,184.064 +5.38528,184.064 +5.38528,184.064 +5.38528,184.064 +5.38528,184.064 +8.83706,184.064 +9.47345,184.064 +9.47345,184.064 +9.47345,184.064 +9.47345,184.064 +9.47345,184.064 +9.47345,184.064 +9.47345,184.064 +9.27763,184.064 +9.27763,184.064 +9.27763,184.064 +9.27763,184.064 +9.27763,184.064 +9.27763,184.064 +9.27763,184.064 +8.47066,184.064 +4.62663,184.064 +5.42108,184.064 +5.42108,184.064 +5.42108,184.064 +5.42108,184.064 +5.42108,184.064 +5.42108,184.064 +4.62987,184.064 +9.49162,184.064 +9.27763,184.064 +9.27763,184.064 +9.27763,184.064 +9.27763,184.064 +9.27763,184.064 +9.27763,184.064 +9.27763,184.064 +9.39696,184.064 +9.39696,184.064 +9.32721,184.064 +9.32721,184.064 +9.32721,184.064 +9.32721,184.064 +9.35895,184.064 +8.65105,184.064 +5.16191,184.064 +5.16191,184.064 +5.16191,184.064 +5.16191,184.064 +5.16191,184.064 +5.16191,184.064 +5.16191,184.064 +5.64502,184.064 +9.48684,184.064 +9.57767,184.064 +9.57767,184.064 +9.57767,184.064 +9.38215,184.064 +9.38215,184.064 +9.50793,184.064 +9.45189,184.064 +9.40958,184.064 +9.40958,184.064 +9.40958,184.064 +9.40958,184.064 +9.40958,184.064 +9.40958,184.064 +9.40958,184.064 +9.01164,184.064 +7.47755,184.064 +6.08489,184.064 +6.69,184.064 +6.08489,184.064 +6.08489,184.064 +6.08489,184.064 +6.08489,184.064 +6.1766,184.064 +9.48132,184.064 +9.4096,184.064 +9.47604,184.064 +9.47604,184.064 +9.47604,184.064 +9.47604,184.064 +9.47604,184.064 +9.47604,184.064 +9.61059,184.064 +9.8869,184.064 +9.8869,184.064 +9.7713,184.064 +9.8869,184.064 +10.0764,184.064 +9.70486,184.064 +8.35951,184.064 +6.37272,184.064 +5.20702,184.064 +5.13365,184.064 +5.03794,184.064 +5.13365,184.064 +5.20702,184.064 +5.20702,184.064 +5.2072,184.064 +9.51654,184.064 +9.61452,184.064 +9.35855,184.064 +9.35855,184.064 +9.51654,184.064 +9.26057,184.064 +9.09305,184.064 +8.63592,184.064 +9.02249,184.064 +9.02249,184.064 +9.19165,184.064 +9.26738,184.064 +9.26738,184.064 +9.28963,184.064 +9.31024,184.064 +7.00596,184.064 +4.55554,184.064 +5.41594,184.064 +5.66321,184.064 +5.41594,184.064 +5.41594,184.064 +5.41594,184.064 +5.41594,184.064 +5.41594,184.064 +7.83512,184.064 +9.05984,184.064 +9.75964,184.064 +9.05984,184.064 +9.48333,184.064 +9.48333,184.064 +9.05984,184.064 +9.05984,184.064 +8.81982,184.064 +9.57374,184.064 +9.57374,184.064 +9.57374,184.064 +9.15024,184.064 +9.47755,184.064 +9.57374,184.064 +8.7858,184.064 +6.55468,184.064 +5.53049,184.064 +5.53049,184.064 +4.92538,184.064 +5.53049,184.064 +5.53049,184.064 +5.53049,184.064 +5.27068,184.064 +9.3221,184.064 +9.5033,184.064 +9.57502,184.064 +9.57502,184.064 +9.57502,184.064 +9.57502,184.064 +9.57502,184.064 +9.15153,184.064 +9.04076,184.064 +9.13695,184.064 +9.13695,184.064 +9.261,184.064 +8.96904,184.064 +9.00297,184.064 +9.06523,184.064 +8.3129,184.064 +7.71848,184.064 +6.14196,184.064 +6.3786,184.064 +6.14196,184.064 +6.14196,184.064 +6.74707,184.064 +6.74707,184.064 +7.04546,184.064 +9.4466,184.064 +9.40613,184.064 +9.47785,184.064 +9.48194,184.064 +9.47785,184.064 +9.47785,184.064 +9.47785,184.064 +9.47785,184.064 +8.32945,184.064 +8.3378,184.064 +8.3378,184.064 +8.3378,184.064 +8.32808,184.064 +8.3378,184.064 +8.3378,184.064 +8.26328,184.064 +7.08589,184.064 +5.25599,184.064 +5.25076,184.064 +5.25076,184.064 +5.25076,184.064 +5.25599,184.064 +6.1164,184.064 +7.64761,184.064 +8.3378,184.064 +8.34101,184.064 +8.33265,184.064 +8.34101,184.064 +8.34101,184.064 +8.34101,184.064 +8.34101,184.064 +8.34101,184.064 +13.0746,184.064 +12.9584,184.064 +12.9584,184.064 +12.9584,184.064 +12.9584,184.064 +13.0746,184.064 +13.0746,184.064 +11.4397,184.064 +4.30749,184.064 +4.30742,184.064 +4.30742,184.064 +4.30742,184.064 +4.30742,184.064 +4.30742,184.064 +4.30742,184.064 +4.91253,184.064 +6.88532,184.064 +9.7298,184.064 +9.67388,184.064 +9.67388,184.064 +9.58053,184.064 +9.66335,184.064 +9.66335,184.064 +9.52937,184.064 +9.40432,184.064 +9.44211,184.064 +9.46855,184.064 +9.46855,184.064 +9.33457,184.064 +9.46855,184.064 +9.5383,184.064 +8.85735,184.064 +4.73944,184.064 +4.34152,184.064 +4.57816,184.064 +4.57816,184.064 +4.57816,184.064 +4.57816,184.064 +4.34152,184.064 +4.34153,184.064 +9.2088,184.064 +9.61027,184.064 +9.51408,184.064 +9.51408,184.064 +9.51408,184.064 +9.51408,184.064 +9.51408,184.064 +9.8342,184.064 +9.4943,184.064 +9.40632,184.064 +9.29755,184.064 +9.20547,184.064 +9.40222,184.064 +9.4943,184.064 +9.40222,184.064 +8.72467,184.064 +7.99924,184.064 +5.53919,184.064 +5.53919,184.064 +5.77583,184.064 +5.77583,184.064 +5.77583,184.064 +5.53919,184.064 +5.56882,184.064 +8.66981,184.064 +9.26405,184.064 +9.36204,184.064 +9.36204,184.064 +9.36204,184.064 +9.26405,184.064 +9.26405,184.064 +9.26405,184.064 +9.04075,184.064 +8.78474,184.064 +8.78474,184.064 +8.78474,184.064 +8.78474,184.064 +8.78474,184.064 +8.78474,184.064 +8.75002,184.064 +8.5315,184.064 +8.79534,184.064 +8.39582,184.064 +8.18337,184.064 +8.803,184.064 +8.803,184.064 +8.96986,184.064 +9.07854,184.064 +9.01747,184.064 +9.01747,184.064 +9.01747,184.064 +9.01747,184.064 +9.01747,184.064 +9.01747,184.064 +8.56034,184.064 +8.56034,184.064 +8.68453,184.064 +8.69041,184.064 +8.69041,184.064 +8.66097,184.064 +8.66097,184.064 +8.42563,184.064 +8.42563,184.064 +8.4735,184.064 +7.94908,184.064 +6.58157,184.064 +7.34308,184.064 +7.92972,184.064 +6.48086,184.064 +6.48086,184.064 +6.48086,184.064 +7.34308,184.064 +9.26299,184.064 +9.23359,184.064 +9.23359,184.064 +9.23359,184.064 +9.32977,184.064 +9.50989,184.064 +9.23359,184.064 +9.23359,184.064 +9.85916,184.064 +9.85916,184.064 +9.41987,184.064 +9.41987,184.064 +9.41987,184.064 +9.41987,184.064 +9.81374,184.064 +9.31565,184.064 +9.04064,184.064 +6.8086,184.064 +5.82863,184.064 +5.82863,184.064 +5.82863,184.064 +5.80449,184.064 +5.82863,184.064 +5.82863,184.064 +9.13283,184.064 +10.0443,184.064 +10.37,184.064 +10.37,184.064 +9.72414,184.064 +10.0443,184.064 +10.37,184.064 +10.37,184.064 +9.55299,184.064 +9.52387,184.064 +9.52387,184.064 +9.52387,184.064 +9.52387,184.064 +9.52387,184.064 +9.42768,184.064 +9.01795,184.064 +7.98051,184.064 +5.93304,184.064 +6.7206,184.064 +6.75237,184.064 +6.75237,184.064 +6.75237,184.064 +5.96482,184.064 +5.96482,184.064 +9.45214,184.064 +9.28951,184.064 +9.48368,184.064 +9.48368,184.064 +9.48368,184.064 +9.48368,184.064 +9.38749,184.064 +9.48368,184.064 +9.16572,184.064 +9.16572,184.064 +9.16572,184.064 +9.16572,184.064 +9.06774,184.064 +9.16572,184.064 +9.06774,184.064 +7.50613,184.064 +4.31464,184.064 +4.31464,184.064 +4.31464,184.064 +4.31464,184.064 +4.31464,184.064 +4.31464,184.064 +4.31464,184.064 +4.31946,184.064 +6.17785,184.064 +6.41523,184.064 +8.36849,184.064 +8.36849,184.064 +8.36849,184.064 +8.36849,184.064 +8.36849,184.064 +8.40976,184.064 +9.08504,184.064 +9.08504,184.064 +9.08504,184.064 +9.08504,184.064 +9.08504,184.064 +9.08504,184.064 +9.08504,184.064 +8.77893,184.064 +4.71654,184.064 +5.04765,184.064 +4.18724,184.064 +4.18724,184.064 +4.38609,184.064 +4.44577,184.064 +4.18724,184.064 +5.19911,184.064 +8.24498,184.064 +9.06448,184.064 +9.42913,184.064 +9.42913,184.064 +9.42913,184.064 +9.42913,184.064 +9.55491,184.064 +9.55491,184.064 +9.40805,184.064 +9.40742,184.064 +9.30238,184.064 +9.30238,184.064 +9.40742,184.064 +9.40805,184.064 +9.31007,184.064 +9.25458,184.064 +9.09627,184.064 +9.75036,184.064 +9.5702,184.064 +9.62633,184.064 +9.62633,184.064 +9.29396,184.064 +9.40805,184.064 +9.40805,184.064 +9.40805,184.064 +9.40805,184.064 +9.40805,184.064 +9.40805,184.064 +9.40805,184.064 +9.40805,184.064 +9.40805,184.064 +9.40805,184.064 +10.2834,184.064 +9.52317,184.064 +9.52317,184.064 +9.27142,184.064 +9.2781,184.064 +9.28594,184.064 +9.52317,184.064 +9.27142,184.064 +8.95562,184.064 +5.28081,184.064 +4.92115,184.064 +5.78155,184.064 +5.68119,184.064 +5.70855,184.064 +5.77288,184.064 +5.15779,184.064 +8.2509,184.064 +8.25655,184.064 +8.25655,184.064 +8.25655,184.064 +8.25655,184.064 +8.25655,184.064 +7.69596,184.064 +6.90841,184.064 +6.71917,184.064 +7.43404,184.064 +7.27442,184.064 +7.74539,184.064 +7.17551,184.064 +7.29507,184.064 +7.32013,184.064 +6.21857,184.064 +5.21685,184.064 +5.62356,184.064 +5.62356,184.064 +5.16081,184.064 +5.16081,184.064 +5.41693,184.064 +5.6437,184.064 +5.62356,184.064 +8.343,184.064 +8.343,184.064 +8.343,184.064 +8.343,184.064 +8.343,184.064 +8.343,184.064 +8.343,184.064 +8.343,184.064 +8.60667,184.064 +8.60667,184.064 +8.51048,184.064 +8.50008,184.064 +8.73542,184.064 +8.73542,184.064 +8.84201,184.064 +8.20612,184.064 +4.6366,184.064 +4.19482,184.064 +4.23862,184.064 +4.19471,184.064 +4.19482,184.064 +4.45335,184.064 +4.45335,184.064 +4.45305,184.064 +7.07092,184.064 +9.37571,184.064 +9.21722,184.064 +9.21722,184.064 +9.45256,184.064 +9.35157,184.064 +9.45256,184.064 +9.45256,184.064 +9.80791,184.064 +9.80508,184.064 +9.619,184.064 +9.71173,184.064 +9.71173,184.064 +9.47639,184.064 +9.8524,184.064 +9.79754,184.064 +7.54691,184.064 +6.4395,184.064 +5.83439,184.064 +5.87891,184.064 +5.17325,184.064 +6.33895,184.064 +6.33895,184.064 +6.4395,184.064 +10.0936,184.064 +10.4467,184.064 +10.5272,184.064 +10.5272,184.064 +10.6234,184.064 +10.5272,184.064 +10.5272,184.064 +10.3276,184.064 +11.5513,184.064 +11.6308,184.064 +11.952,184.064 +11.5513,184.064 +11.5503,184.064 +11.8714,184.064 +11.8714,184.064 +11.8714,184.064 +8.84565,184.064 +6.69228,184.064 +5.43951,184.064 +5.43951,184.064 +5.43951,184.064 +5.15211,184.064 +5.43951,184.064 +6.16379,184.064 +8.91923,184.064 +9.42592,184.064 +9.57038,184.064 +9.57038,184.064 +9.49866,184.064 +9.40531,184.064 +9.40531,184.064 +9.40531,184.064 +9.81896,185.071 +9.81896,185.071 +9.81896,185.071 +9.81896,185.071 +9.81896,185.071 +9.54266,185.071 +9.81896,185.071 +9.36129,185.071 +8.64706,185.071 +8.2484,185.071 +7.45032,185.071 +5.46682,185.071 +6.01355,185.071 +6.85439,185.071 +7.5536,185.071 +7.50063,185.071 +9.13641,185.071 +9.85675,185.071 +9.85675,185.071 +9.85675,185.071 +9.58045,185.071 +9.85675,185.071 +9.58045,185.071 +9.58045,185.071 +8.62349,185.071 +8.69091,185.071 +9.31982,185.071 +9.24291,185.071 +9.60036,185.071 +9.31463,185.071 +8.72264,185.071 +12.0949,185.071 +8.80064,185.071 +8.52963,185.071 +8.36566,185.071 +8.53806,185.071 +8.02511,185.071 +7.16588,185.071 +7.64825,185.071 +8.47732,185.071 +9.40538,185.071 +9.88788,185.071 +9.73239,185.071 +9.48207,185.071 +9.48207,185.071 +10.4699,185.071 +10.2005,185.071 +10.4247,185.071 +11.8532,185.071 +11.4538,185.071 +11.5499,185.071 +11.7895,185.071 +11.757,185.071 +11.835,185.071 +11.5317,185.071 +10.9814,185.071 +8.81022,185.071 +8.67458,185.071 +8.42221,185.071 +8.42221,185.071 +8.13654,185.071 +8.34375,185.071 +8.64494,185.071 +8.71684,185.071 +9.3774,185.071 +10.0389,185.071 +10.0067,185.071 +10.0067,185.071 +9.98096,185.071 +9.6644,185.071 +9.6644,185.071 +9.6644,185.071 +10.7038,185.071 +10.6228,185.071 +10.2891,185.071 +10.1369,185.071 +9.44426,185.071 +10.5629,185.071 +10.5629,185.071 +10.6435,185.071 +9.89668,185.071 +9.10846,185.071 +8.95603,185.071 +9.35797,185.071 +9.48205,185.071 +9.37838,185.071 +9.48373,185.071 +9.62829,185.071 +9.43056,185.071 +10.3116,185.071 +10.3765,185.071 +10.7539,185.071 +10.6459,185.071 +10.3999,185.071 +10.3158,185.071 +10.3371,185.071 +10.3743,185.071 +10.3298,185.071 +10.303,185.071 +10.277,185.071 +10.277,185.071 +10.4435,185.071 +10.459,185.071 +10.4771,185.071 +10.4824,185.071 +9.60728,185.071 +9.54486,185.071 +9.40443,185.071 +9.40356,185.071 +9.44552,185.071 +9.27454,185.071 +9.52566,185.071 +14.2474,185.071 +20.4099,185.071 +19.5165,185.071 +19.5165,185.071 +19.5165,185.071 +20.2486,185.071 +20.2728,185.071 +20.2823,185.071 +20.304,185.071 +19.6361,185.071 +20.1994,185.071 +20.5361,185.071 +20.3142,185.071 +20.0178,185.071 +20.0793,185.071 +20.0793,185.071 +15.0539,185.071 +14.3197,185.071 +13.8328,185.071 +13.1639,185.071 +13.2096,185.071 +13.2201,185.071 +13.9537,185.071 +14.5321,185.071 +14.9997,185.071 +14.85,185.071 +14.8566,185.071 +14.8719,185.071 +14.7757,185.071 +14.85,185.071 +14.85,185.071 +14.5043,185.071 +14.6679,185.071 +14.5844,185.071 +14.4137,185.071 +14.4334,185.071 +14.6689,185.071 +14.932,185.071 +14.9168,185.071 +14.9041,185.071 +14.9015,185.071 +9.53534,185.071 +9.17788,185.071 +8.81271,185.071 +8.99098,185.071 +8.99098,185.071 +8.97594,185.071 +9.41164,185.071 +10.405,185.071 +10.6251,185.071 +10.7956,185.071 +10.7685,185.071 +10.7837,185.071 +10.7685,185.071 +10.5349,185.071 +10.5349,185.071 +10.136,185.071 +10.7444,185.071 +10.4956,185.071 +9.68137,185.071 +10.3051,185.071 +10.4577,185.071 +9.67454,185.071 +10.523,185.071 +9.25131,185.071 +7.82304,185.071 +6.72279,185.071 +6.72279,185.071 +6.79592,185.071 +6.79592,185.071 +6.79592,185.071 +6.63834,185.071 +9.21147,185.071 +9.75641,185.071 +9.83102,185.071 +9.83102,185.071 +9.83102,185.071 +9.83102,185.071 +9.75641,185.071 +9.75641,185.071 +9.88947,185.071 +9.88947,185.071 +9.82525,185.071 +9.82525,185.071 +9.81487,185.071 +9.88947,185.071 +9.82525,185.071 +9.85073,185.071 +9.88212,185.071 +7.8925,185.071 +7.6948,185.071 +7.59381,185.071 +7.59381,185.071 +7.59381,185.071 +7.59381,185.071 +8.04558,185.071 +9.52513,185.071 +10.1393,185.071 +10.8979,185.071 +10.817,185.071 +10.8337,185.071 +10.817,185.071 +10.8979,185.071 +10.8078,185.071 +10.0476,185.071 +10.0476,185.071 +10.0476,185.071 +10.0476,185.071 +10.0476,185.071 +10.0407,185.071 +10.0476,185.071 +10.0476,185.071 +10.0407,185.071 +9.63904,185.071 +9.1731,185.071 +9.51784,185.071 +9.45051,185.071 +9.51613,185.071 +9.30517,185.071 +9.34593,185.071 +9.88303,185.071 +10.0303,185.071 +10.1113,185.071 +10.1113,185.071 +10.1217,185.071 +10.0407,185.071 +10.0407,185.071 +10.0407,185.071 +9.89735,185.071 +9.7785,185.071 +9.93056,185.071 +9.74979,185.071 +9.94385,185.071 +9.89735,185.071 +9.89735,185.071 +9.82948,185.071 +8.71473,185.071 +8.27,185.071 +6.52698,185.071 +6.53248,185.071 +6.29584,185.071 +6.29584,185.071 +7.16512,185.071 +7.66597,185.071 +8.87553,185.071 +9.14592,185.071 +9.18371,185.071 +9.14592,185.071 +9.14592,185.071 +9.18371,185.071 +9.18371,185.071 +9.14592,185.071 +9.41927,185.071 +9.41927,185.071 +9.41927,185.071 +9.41927,185.071 +9.11748,185.071 +9.35282,185.071 +9.41927,185.071 +9.11748,185.071 +8.00332,185.071 +4.64924,185.071 +4.64924,185.071 +4.64924,185.071 +4.64554,185.071 +4.64554,185.071 +4.64924,185.071 +4.65988,185.071 +8.22863,185.071 +9.79157,185.071 +10.2303,185.071 +10.2303,185.071 +10.2303,185.071 +10.215,185.071 +10.215,185.071 +10.215,185.071 +14.4296,185.071 +14.6131,185.071 +14.3036,185.071 +14.1201,185.071 +14.3036,185.071 +14.3036,185.071 +14.4296,185.071 +14.6131,185.071 +8.23484,185.071 +4.75235,185.071 +4.75235,185.071 +4.75235,185.071 +4.75235,185.071 +4.75235,185.071 +4.75235,185.071 +4.75235,185.071 +9.27518,185.071 +10.4781,185.071 +10.0502,185.071 +10.429,185.071 +10.3126,185.071 +10.0322,185.071 +10.4781,185.071 +10.4781,185.071 +10.3681,185.071 +9.94078,185.071 +10.1441,185.071 +9.74031,185.071 +9.95252,185.071 +9.7351,185.071 +10.1489,185.071 +10.1489,185.071 +10.499,185.071 +9.66856,185.071 +9.2852,185.071 +9.62758,185.071 +9.70384,185.071 +9.63211,185.071 +9.45814,185.071 +9.52793,185.071 +9.97168,185.071 +10.499,185.071 +10.5563,185.071 +10.4921,185.071 +10.457,185.071 +10.457,185.071 +10.4921,185.071 +10.499,185.071 +9.83868,185.071 +9.65691,185.071 +9.80617,185.071 +9.55948,185.071 +9.65691,185.071 +9.65691,185.071 +9.65691,185.071 +9.55941,185.071 +9.19545,185.071 +8.68887,185.071 +8.19763,185.071 +8.57945,185.071 +8.21943,185.071 +8.21943,185.071 +8.58348,185.071 +8.35128,185.071 +9.53028,185.071 +9.53028,185.071 +9.53028,185.071 +9.53028,185.071 +9.53028,185.071 +9.53028,185.071 +9.53028,185.071 +9.53028,185.071 +9.66628,185.071 +9.58779,185.071 +10.0291,185.071 +9.80372,185.071 +9.58779,185.071 +9.91351,185.071 +9.58779,185.071 +9.26787,185.071 +8.91664,185.071 +7.37268,185.071 +7.31612,185.071 +7.31612,185.071 +7.31612,185.071 +7.31612,185.071 +7.49694,185.071 +8.44478,185.071 +9.75458,185.071 +9.92342,185.071 +10.0196,185.071 +9.92342,185.071 +9.92342,185.071 +9.69389,185.071 +9.5977,185.071 +9.5977,185.071 +9.93668,185.071 +9.48711,185.071 +9.81971,185.071 +9.9177,185.071 +9.81971,185.071 +9.8387,185.071 +9.8387,185.071 +9.8387,185.071 +9.5744,185.071 +9.28453,185.071 +8.62138,185.071 +7.98837,185.071 +7.34266,185.071 +7.44661,185.071 +9.18859,185.071 +9.55392,185.071 +9.49795,185.071 +9.39997,185.071 +9.49795,185.071 +9.39997,185.071 +9.39997,185.071 +9.49795,185.071 +9.49795,185.071 +9.49795,185.071 +9.30013,185.071 +9.30013,185.071 +9.28071,185.071 +9.28071,185.071 +9.28071,185.071 +9.30013,185.071 +9.30013,185.071 +9.30013,185.071 +9.25656,185.071 +7.28841,185.071 +5.57576,185.071 +5.49895,185.071 +5.41698,185.071 +5.49895,185.071 +5.49895,185.071 +6.30003,185.071 +9.27601,185.071 +9.83096,185.071 +9.83096,185.071 +9.83096,185.071 +9.83096,185.071 +9.83096,185.071 +9.83096,185.071 +9.83096,185.071 +9.90602,185.071 +9.59656,185.071 +9.90602,185.071 +9.53134,185.071 +9.53134,185.071 +9.46013,185.071 +9.90602,185.071 +9.42715,185.071 +8.50358,185.071 +5.91857,185.071 +5.91857,185.071 +5.91857,185.071 +5.35798,185.071 +5.91857,185.071 +5.91857,185.071 +6.61982,185.071 +9.30008,185.071 +10.0958,185.071 +10.0261,185.071 +10.3463,185.071 +10.3463,185.071 +10.0241,185.071 +10.0241,185.071 +10.0958,185.071 +10.245,185.071 +9.93242,185.071 +9.85686,185.071 +9.85461,185.071 +9.84123,185.071 +9.93242,185.071 +9.93242,185.071 +9.79909,185.071 +9.17972,185.071 +8.04218,185.071 +7.10598,185.071 +6.69794,185.071 +5.64804,185.071 +6.3023,185.071 +7.10598,185.071 +8.54745,185.071 +9.76913,185.071 +10.6028,185.071 +10.1703,185.071 +10.552,185.071 +10.1703,185.071 +10.3679,185.071 +10.3679,185.071 +10.3545,185.071 +10.1248,185.071 +9.69375,185.071 +9.70697,185.071 +9.65606,185.071 +9.76428,185.071 +9.76428,185.071 +9.80472,185.071 +10.1248,185.071 +9.65861,185.071 +9.58024,185.071 +9.36802,185.071 +9.59007,185.071 +8.22802,185.071 +7.54851,185.071 +8.36386,185.071 +9.70533,185.071 +9.42695,185.071 +9.62177,185.071 +10.0463,185.071 +10.0463,185.071 +9.72614,185.071 +9.92494,185.071 +9.62995,185.071 +9.95007,185.071 +9.90833,185.071 +9.54914,185.071 +9.86926,185.071 +9.86926,185.071 +9.77307,185.071 +9.86926,185.071 +9.86926,185.071 +9.86926,185.071 +9.16561,185.071 +8.80558,185.071 +8.54149,185.071 +7.43959,185.071 +7.97521,185.071 +8.52612,185.071 +7.5837,185.071 +8.71512,185.071 +9.19789,185.071 +9.47742,185.071 +9.42336,185.071 +9.54914,185.071 +9.45295,185.071 +9.77307,185.071 +9.54677,185.071 +9.45295,185.071 +9.47122,185.071 +9.47122,185.071 +9.47122,185.071 +9.47122,185.071 +9.47122,185.071 +9.47122,185.071 +9.47122,185.071 +9.47122,185.071 +9.41803,185.071 +8.6547,185.071 +8.53086,185.071 +8.25637,185.071 +8.2551,185.071 +8.25538,185.071 +8.08657,185.071 +8.28072,185.071 +9.17294,185.071 +9.41838,185.071 +9.43077,185.071 +9.87666,185.071 +9.87666,185.071 +9.87666,185.071 +9.87666,185.071 +9.87666,185.071 +9.50963,185.071 +9.50963,185.071 +9.60473,185.071 +9.50854,185.071 +9.50963,185.071 +9.50963,185.071 +9.59828,185.071 +9.50963,185.071 +9.1709,185.071 +8.36231,185.071 +8.57268,185.071 +8.57268,185.071 +8.33604,185.071 +8.33604,185.071 +8.35948,185.071 +8.61335,185.071 +9.2396,185.071 +9.46062,185.071 +9.59879,185.071 +9.59879,185.071 +9.59879,185.071 +9.51784,185.071 +9.59879,185.071 +9.59879,185.071 +9.37174,185.071 +9.46793,185.071 +9.3668,185.071 +9.3668,185.071 +9.72641,185.071 +9.82754,185.071 +9.82754,185.071 +9.82754,185.071 +9.72641,185.071 +8.65176,185.071 +7.50345,185.071 +7.50345,185.071 +7.43176,185.071 +7.50345,185.071 +7.50345,185.071 +8.31272,185.071 +9.41966,185.071 +9.5574,185.071 +9.5574,185.071 +9.5574,185.071 +9.77603,185.071 +9.5574,185.071 +9.5574,185.071 +9.5574,185.071 +9.6819,185.071 +9.99672,185.071 +9.77809,185.071 +9.77809,185.071 +9.6819,185.071 +9.77809,185.071 +9.6819,185.071 +9.77809,185.071 +9.27215,185.071 +8.71325,185.071 +7.04766,185.071 +6.20591,185.071 +6.20591,185.071 +6.38032,185.071 +6.44255,185.071 +6.91486,185.071 +8.88376,185.071 +9.44807,185.071 +9.78025,185.071 +9.82156,185.071 +9.67324,185.071 +9.78025,185.071 +9.78025,185.071 +9.78025,185.071 +9.97883,185.071 +10.0149,185.071 +9.97883,185.071 +10.0149,185.071 +10.0149,185.071 +9.87421,185.071 +10.0149,185.071 +10.0149,185.071 +9.29966,185.071 +7.38354,185.071 +5.74305,185.071 +5.67964,185.071 +5.58783,185.071 +5.58783,185.071 +5.70532,185.071 +6.08323,185.071 +9.92188,185.071 +9.87273,185.071 +9.87273,185.071 +9.87273,185.071 +9.87273,185.071 +9.87273,185.071 +9.86087,185.071 +9.85395,185.071 +9.76427,185.071 +9.7327,185.071 +9.72897,185.071 +9.72897,185.071 +9.7327,185.071 +9.7327,185.071 +10.0844,185.071 +9.71375,185.071 +8.80774,185.071 +5.45717,185.071 +5.45717,185.071 +5.19864,185.071 +5.45717,185.071 +5.25854,185.071 +5.25854,185.071 +5.25854,185.071 +9.10182,185.071 +10.4436,185.071 +14.6389,185.071 +14.5882,185.071 +14.5504,185.071 +14.6389,185.071 +13.9701,185.071 +14.0209,185.071 +15.5758,185.071 +15.1427,185.071 +15.1427,185.071 +15.4505,185.071 +15.4505,185.071 +15.4505,185.071 +15.4505,185.071 +17.918,185.071 +12.7095,185.071 +8.34499,185.071 +7.72693,185.071 +7.72693,185.071 +7.72693,185.071 +7.72693,185.071 +7.72693,185.071 +7.72693,185.071 +17.7567,185.071 +20.4622,185.071 +20.2647,185.071 +19.8188,185.071 +19.8188,185.071 +19.8188,185.071 +20.2647,185.071 +19.8188,185.071 +20.6203,185.071 +20.0022,185.071 +20.4665,185.071 +20.4665,185.071 +20.1464,185.071 +20.4665,185.071 +20.6203,185.071 +16.4423,185.071 +13.7741,185.071 +9.27992,185.071 +9.2799,185.071 +9.27992,185.071 +9.27992,185.071 +9.27992,185.071 +9.47876,185.071 +9.53845,185.071 +14.0399,185.071 +15.3617,185.071 +16.1239,185.071 +15.7528,185.071 +15.7528,185.071 +15.6356,185.071 +15.7067,185.071 +15.5556,185.071 +15.8483,185.071 +15.6948,185.071 +15.5165,185.071 +15.5329,185.071 +15.5025,185.071 +15.7612,185.071 +16.1192,185.071 +15.551,185.071 +9.62147,185.071 +8.74034,185.071 +8.49279,185.071 +8.74812,185.071 +8.89719,185.071 +8.36272,185.071 +8.61319,185.071 +8.54891,185.071 +10.2831,185.071 +10.6256,185.071 +10.6475,185.071 +10.6475,185.071 +10.2741,185.071 +10.2741,185.071 +10.435,185.071 +10.144,185.071 diff --git a/test/wthr01.cse b/test/wthr01.cse index 435072306..58ada653f 100644 --- a/test/wthr01.cse +++ b/test/wthr01.cse @@ -1,6 +1,7 @@ // weather test wfName = "CA_SACRAMENTO-EXECUTIVE-AP_724830S_STYP20.epw" +tdvFName = "Testdata.tdv" nSubSteps = 4 DT = No bldgAzm = 0 @@ -198,6 +199,7 @@ REPORT rpType = UDT rpFreq = YEAR rpCPL=-1 REPORTCOL colHead="TOP TZ" colVal=@top.timeZone colDec=2 colWid=6 REPORTCOL colHead="WF elev" colVal=@weatherFile.elev colDec=1 colWid=8 REPORTCOL colHead="TOP elev" colVal=@top.elevation colDec=1 colWid=8 + REPORTCOL colHead="TDVDesc" colVal=@weatherfile.tdvFileTitle colWid=30 #define CSEBtuSF 1000 From 7890a579b0924114d9b35a4d52e8053636bd246e Mon Sep 17 00:00:00 2001 From: Chip Barnaby Date: Fri, 10 Oct 2025 13:45:10 -0400 Subject: [PATCH 02/11] Cleanup re clang warnings/errors --- src/cgsolar.cpp | 13 ++++++++----- src/cnah2.cpp | 1 + src/cncoil.cpp | 6 ++---- src/cncult2.cpp | 1 + src/cuparse.cpp | 2 +- src/cuprobe.cpp | 2 +- src/cutok.cpp | 8 ++++---- src/dhwcalc.cpp | 2 +- 8 files changed, 19 insertions(+), 16 deletions(-) diff --git a/src/cgsolar.cpp b/src/cgsolar.cpp index edac85940..716f6037c 100644 --- a/src/cgsolar.cpp +++ b/src/cgsolar.cpp @@ -244,7 +244,7 @@ LOCAL void sgrPut( const char* sgName, SGTARG* pTarg, float* pCtrl, BOO isSubhrl BOO isEndIvl, #endif double bmBm, double dfDf, double bmDf=0.); -LOCAL void toSurfSide( TI xsi, SI si, TI czi, const double sgf[ socCOUNT][ sgcCOUNT]); +LOCAL RC toSurfSide( TI xsi, SI si, TI czi, const double sgf[ socCOUNT][ sgcCOUNT]); LOCAL void toZoneCAir( TI zi, TI czi, float bmo, float dfo, float bmc, float dfc); //--------------------------------------------------------------------------- @@ -1109,7 +1109,7 @@ void ZNR::zn_DbDumpSGDIST( // dump zone solar gain distribution values //============================================================================= // non-member solar gain functions //---------------------------------------------------------------------- -LOCAL void toSurfSide( // add SgR entries for solar gain to surface side +LOCAL RC toSurfSide( // add SgR entries for solar gain to surface side TI xsi, // which surface (XsR subscript) // if <0, no matching zone energy bal entry @@ -1118,9 +1118,9 @@ LOCAL void toSurfSide( // add SgR entries for solar gain to surface side const double sgf[ socCOUNT][ sgcCOUNT]) // gain factors // does not use accumulators -- is used to distribute accumulated gain. { - RC rc; + RC rc = RCOK; // shades open - rc = sgrAdd( // create or add to SGRAT SgR record; zone total also; nop if gains small or zero. + rc |= sgrAdd( // create or add to SGRAT SgR record; zone total also; nop if gains small or zero. si ? SGDTTSURFO : SGDTTSURFI, // add gain to surface outside or inzide xsi, // surface subscript NULL, // no control variable (shades open) @@ -1129,7 +1129,7 @@ LOCAL void toSurfSide( // add SgR entries for solar gain to surface side // shades closed float* ctrl // control variable pointer for shades-closed difference = czi ? &ZrB[ czi].i.znSC : NULL; - rc = sgrAdd( + rc |= sgrAdd( si ? SGDTTSURFO : SGDTTSURFI, // add gain to mass outside or inzide xsi, // surface subscript ctrl, @@ -1144,6 +1144,8 @@ LOCAL void toSurfSide( // add SgR entries for solar gain to surface side printf( "toSurfSide inconsistency\n"); #endif + return rc; + } // toSurfSide //---------------------------------------------------------------------- LOCAL void toZoneCAir( // make SGRAT SgR entries to put gain to zone "air" heat capacity @@ -1231,6 +1233,7 @@ o BOO isEndIvl = FALSE; // non-0 for end-time-interval gain (zone air), 0 for #ifdef SOLAVNEND o isEndIvl = TRUE; #endif + default: break; } diff --git a/src/cnah2.cpp b/src/cnah2.cpp index c9cd1a9f8..3327fdcc5 100644 --- a/src/cnah2.cpp +++ b/src/cnah2.cpp @@ -3049,6 +3049,7 @@ void AH::antRatTs() // anticipated return air conditions for current (changed) break; // .. aCv stored in tu->aCv below. case uMxC: aCv = tu->cMxC; + default: break; // COORDINATE changes here with any changes in cnztu.cpp:ztuMdSets. } cz = tu->znC(aCv); // .. zone flow for vav flow, after duct leak diff --git a/src/cncoil.cpp b/src/cncoil.cpp index 1cf0144a3..845485e64 100644 --- a/src/cncoil.cpp +++ b/src/cncoil.cpp @@ -1950,10 +1950,8 @@ x } #endif DBL te = 0, he; FLOAT we = 0; -#ifdef DEBUG - SI cs1=0, cs2=0; /* removed redundant init when BCC32 4.5 warned, 12-94. - But init appears non-redundant, restored 7-95. */ -#endif + int cs1 = 0; + int cs2 = 0; for (SI j = 1; j++; ) { diff --git a/src/cncult2.cpp b/src/cncult2.cpp index a597f573a..0059cc687 100644 --- a/src/cncult2.cpp +++ b/src/cncult2.cpp @@ -1800,6 +1800,7 @@ void ZNR::addRIgDist( // add radiant internal gain distribution for gain origin break; case massO: p = &MsR.p[targTi].outside.rIg; + default: break; } diff --git a/src/cuparse.cpp b/src/cuparse.cpp index 6857568f2..895eb2104 100644 --- a/src/cuparse.cpp +++ b/src/cuparse.cpp @@ -1257,7 +1257,7 @@ RC FC expTy( gotTy = parSp->ty; // refetch data type: some cases above change it if (!(gotTy & wanTy) || (gotTy & ~wanTy)) // if still not a desired data type { - char *got = ""; + const char* got = ""; if ((gotTy & (TYNC))==TYNC) // TYNC is both TYCH and TYFL bits got = ", number/choice value found,"; // extra explanation: error might be obscure, or bug in new code else if (gotTy==TYCH) diff --git a/src/cuprobe.cpp b/src/cuprobe.cpp index 7bd1bdc78..35e36e98f 100644 --- a/src/cuprobe.cpp +++ b/src/cuprobe.cpp @@ -597,7 +597,7 @@ LOCAL RC FC lopNty4dt( // for DT- data type, get TY- type and PSOP to load it f USI ty = 0, sz = 0; PSOP lop = 0; - char* errorSub = NULL; // say no error + const char* errorSub = nullptr; // say no error switch (dt) // for dt, get load pseudo-op (lop) or error message insert text (errorSub) { case DTSI: // 2-byte types that are or can be treated as integers diff --git a/src/cutok.cpp b/src/cutok.cpp index 0971c964e..7c0914dd7 100644 --- a/src/cutok.cpp +++ b/src/cutok.cpp @@ -37,8 +37,8 @@ LOCAL int uliFline = 0; // input file line # (for error messages) LOCAL void cuppiClean( CLEANCASE cs); LOCAL void cuUnc(); LOCAL int cuC(); -LOCAL int cuScanto( char *set); -LOCAL void svFname( char *name, int len); +LOCAL int cuScanto( const char* set); +LOCAL void svFname( const char* name, int len); LOCAL void cufMark1(); LOCAL void cufMark2(); LOCAL void cufCline( int flag, int* pcol, char *s, size_t sSize ); @@ -698,7 +698,7 @@ x return c; // too long, assume not #line // returns are in switch and above } // cuC //========================================================================== -LOCAL int cuScanto( char *set) // pass characters in input file not in "set" +LOCAL int cuScanto( const char* set) // pass characters in input file not in "set" // intended to be faster than caller cuC() loop. @@ -722,7 +722,7 @@ LOCAL int cuScanto( char *set) // pass characters in input file not in "set" //=========================================================================== LOCAL void svFname( // save #line file name (to last til end session); set uliFileIx - char *name, // ptr to #line command file name in buffer + const char* name, // ptr to #line command file name in buffer int len ) // length. NOT null-terminated. // callers use uliFileIx, set here, for record.fileIx. diff --git a/src/dhwcalc.cpp b/src/dhwcalc.cpp index ea2b7377b..b94381727 100644 --- a/src/dhwcalc.cpp +++ b/src/dhwcalc.cpp @@ -4727,7 +4727,7 @@ RC DHWHEATER::wh_HPWHInit() // initialize HPWH model if (!wh_HPWH.hw_pHPWH->canUseSoCControls()) { rc |= oer("'%s' does not support StateOfCharge controls", - wh_desc); + GetDescription()); } else { From f40be6859e69f0524e9fdbfde669ede7150e0a51 Mon Sep 17 00:00:00 2001 From: Chip Barnaby Date: Fri, 10 Oct 2025 14:55:13 -0400 Subject: [PATCH 03/11] More clang cleanups --- src/cncoil.cpp | 11 +++++---- src/cnztu.cpp | 62 +++++++++++++++++++++++++++----------------------- src/cul.cpp | 10 ++++---- src/cul.h | 2 +- src/cutok.cpp | 2 +- src/cutok.h | 2 +- src/pp.cpp | 13 ++++++----- src/pp.h | 2 +- src/yacam.cpp | 2 +- 9 files changed, 56 insertions(+), 50 deletions(-) diff --git a/src/cncoil.cpp b/src/cncoil.cpp index 845485e64..d2e8ddae1 100644 --- a/src/cncoil.cpp +++ b/src/cncoil.cpp @@ -1948,11 +1948,12 @@ x } #else //11-1-95: move wena init into autoSize loop below DBL wena = 0; // wena: artificial wen: increased if coil dry #endif - DBL te = 0, he; - FLOAT we = 0; - int cs1 = 0; - int cs2 = 0; - for (SI j = 1; j++; ) + DBL te = 0.; + DBL he = 0.; + FLOAT we = 0.f; + [[maybe_unused]] int cs1 = 0; + [[maybe_unused]] int cs2 = 0; + for (int j = 1; j++; ) { //--- coil effectiveness at actual entering air conditions diff --git a/src/cnztu.cpp b/src/cnztu.cpp index a35cbbb4d..faf8cdf62 100644 --- a/src/cnztu.cpp +++ b/src/cnztu.cpp @@ -366,6 +366,7 @@ RC TU::tu_Setup() // check and set up terminal record: call for each terminal cmAr = cmNONE; // say no air heat/cool / init to 0 for bit setting if ((sstat[TU_TUTH] | sstat[TU_TUTC] | sstat[TU_TUVFMN]) & FsSET) // has air heat and/or cool if min flow or either sp given + { if ((sstat[TU_TUTH] | sstat[TU_TUTC]) & FsSET) // if either setpoint given, is tstat controlled, set bits { cmAr = cmNONE; // insurance @@ -373,7 +374,10 @@ RC TU::tu_Setup() // check and set up terminal record: call for each terminal if (sstat[TU_TUTC] & FsSET) cmAr = TCCM(cmAr | cmStC); // .. cooling bit. both form cmStBOTH. } else + { cmAr = cmSo; // no setpoints means constant output + } + } //else cmAr = cmNONE; // else no air heat/cool: value 0, preset above @@ -555,9 +559,9 @@ RC TU::tu_Setup() // check and set up terminal record: call for each terminal || ausz)) // or an autosized value (will be applied to dflt b4 main sim) { // then tuVfDs need not be input - setToMax(tfanVfDs, def); // use default for terminal fan default (max: insurance) - // complete tfanVfDs code like tuVfDs when tfan implemented. 7-95. - if (!(sstat[TU_TUVFDS] & FsSET)) // if design flow not given + setToMax(tfanVfDs, def); // use default for terminal fan default (max: insurance) + // complete tfanVfDs code like tuVfDs when tfan implemented. 7-95. + if (!(sstat[TU_TUVFDS] & FsSET)) // if design flow not given if (ausz) // when constant default and also autosize default, if (Top.tp_autoSizing) // don't apply constant default at start autoSizing: @@ -566,7 +570,7 @@ RC TU::tu_Setup() // check and set up terminal record: call for each terminal // use 'floor' to take max cuz tu_auszFinal() may put max // autoSized tuVfMxH,C back into INPUT RECORD tuVfDs as partial main sim default. 6-95. } - else // no tuVfDs default found or variable exprs also found + else // no tuVfDs default found or variable exprs also found rc |= require(TU_TUVFDS); // design flow must be input when no clear default. explain? @@ -917,7 +921,7 @@ RC TU::tu_p2EndTest() // autoSize pass 2 end test DBL was = tuhc.captRat; // for debugging message, 6-97 setToMin( tuhc.captRat, hcAs.xPkAs * hcAs.plrPkAs / auszLoTol2); // adjust coil size to bring plr to 1 - half tolerance // ... (expect tuhc plr linearly related to capacity). - if ( Top.verbose > 2 && !Top.tp_auszNotDone // at verbose = 3 show the first not done thing, rob 6-97 + if ( (Top.verbose > 2 && !Top.tp_auszNotDone) // at verbose = 3 show the first not done thing, rob 6-97 || Top.verbose > 3) // at verbose = 4 show all not dones, rob 6-97 screen( 0, " TU[%s] p2EndTest hc plr%6.3g capt%8g -->%8g", Name(), hcAs.plrPkAs, was, tuhc.captRat ); } @@ -936,7 +940,7 @@ RC TU::tu_p2EndTest() // autoSize pass 2 end test vcAs.az_NotDone(); // plr too small. say must repeat pass 2. DBL was = tuVfMxH; // for debugging message tuVfMxH= tuVfMxC= hcXPk * hcPlr / auszLoTol2; // adj max flows to bring plr to 1 - tol/2 (linearity expected) - if ( Top.verbose > 2 && !Top.tp_auszNotDone // at verbose = 3 show the first not done thing, rob 6-97 + if ( (Top.verbose > 2 && !Top.tp_auszNotDone) // at verbose = 3 show the first not done thing, rob 6-97 || Top.verbose > 3) // at verbose = 4 show all not dones screen( 0, " TU[%s] p2EndTest vh+c plr%6.3g vfMx%8g -->%8g", Name(), vhAs.plrPkAs, was, tuVfMxH ); } @@ -951,7 +955,7 @@ RC TU::tu_p2EndTest() // autoSize pass 2 end test vhAs.az_NotDone(); // plr too small. say must repeat pass 2. DBL was = tuVfMxH; // for debugging message tuVfMxH = vhAs.xPkAs * vhAs.plrPkAs / auszLoTol2; // adj max flow to bring plr to 1 - half of tol (expect linear). - if ( Top.verbose > 2 && !Top.tp_auszNotDone // at verbose = 3 show the first not done thing, rob 6-97 + if ( (Top.verbose > 2 && !Top.tp_auszNotDone) // at verbose = 3 show the first not done thing, rob 6-97 || Top.verbose > 3) // at verbose = 4 show all not dones screen( 0, " TU[%s] p2EndTest vh plr%6.3g vfMx%8g -->%8g", Name(), vhAs.plrPkAs, was, tuVfMxH ); } @@ -963,7 +967,7 @@ RC TU::tu_p2EndTest() // autoSize pass 2 end test vcAs.az_NotDone(); // plr too small. say must repeat pass 2. DBL was = tuVfMxC; // for debugging message tuVfMxC = vcAs.xPkAs * vcAs.plrPkAs / auszLoTol2; // adj max flow to bring plr to 1 - half of tol (expect linear). - if ( Top.verbose > 2 && !Top.tp_auszNotDone // at verbose = 3 show the first not done thing, rob 6-97 + if ( (Top.verbose > 2 && !Top.tp_auszNotDone) // at verbose = 3 show the first not done thing, rob 6-97 || Top.verbose > 3) // at verbose = 4 show all not dones screen( 0, " TU[%s] p2EndTest vc plr%6.3g vfMx%8g -->%8g", Name(), vcAs.plrPkAs, was, tuVfMxC ); } @@ -1205,7 +1209,7 @@ BOO TU::resizeIf( // conditionally resize terminal to use given flow // do it - if ( !decrOnly && as.az_resizeIf( vf, FALSE) // cond'ly increase tuVfMxH or C to vf. cnausz.cpp. + if ( (!decrOnly && as.az_resizeIf( vf, FALSE)) // cond'ly increase tuVfMxH or C to vf. cnausz.cpp. || as.az_unsizeIf( max( vf, bVfMx)) ) // else cond'ly decrease but not below start subhr value. { // if changed by either function @@ -1576,8 +1580,8 @@ RC TU::tu_EndSubhr() // terminal stuff done at end subhr: record load; checks a in the float mode just above or below the setpoint mode when at setpoint (moot b4 TUSIZE/LOAD rpts added 7-95) (but ignore set output (uSo) here -- a different capability) */ if ( useAr & (uStH|uMxH) // if terminal is air-heating at setpoint or max flow - || useAr & uMn && cmAr==cmStH // or is at min flow and only has heating capability - || useAr & uMn && cmAr==cmStBOTH && ah->ah_tSup >= zp->tz ) // or is at min flow and supply temp >= zone temp + || (useAr & uMn && cmAr==cmStH) // or is at min flow and only has heating capability + || (useAr & uMn && cmAr==cmStBOTH && ah->ah_tSup >= zp->tz) ) // or is at min flow and supply temp >= zone temp { // air heat. cv and cz set in ztuMode and ztuMdSets. resizeIf done. For terminal, capacity===max cfm load. if (ah->airxTs) // believe might be 0 if ah scheduled off @@ -1599,8 +1603,8 @@ RC TU::tu_EndSubhr() // terminal stuff done at end subhr: record load; checks a } // no else: for tSup==tz for tu that can both heat & cool, tentatively count flow re both heat and cool 7-9 if ( useAr & (uStC|uMxC) // if terminal is air-cooling at setpoint or max flow - || useAr & uMn && cmAr==cmStC // or is at min flow and only has cooling capability - || useAr & uMn && cmAr==cmStBOTH && ah->ah_tSup <= zp->tz ) // or is at min flow and suply temp <= zone temp + || (useAr & uMn && cmAr==cmStC) // or is at min flow and only has cooling capability + || (useAr & uMn && cmAr==cmStBOTH && ah->ah_tSup <= zp->tz) ) // or is at min flow and suply temp <= zone temp { // air cool. cv and cz set in ztuMode and ztuMdSets. resizeIf done. For terminal, capacity===max cfm load. if (ah->airxTs) // believe might be 0 if ah scheduled off @@ -1681,7 +1685,7 @@ RC TU::tuEstimate() // terminal "estimate" function to call at start of subho { // turning on 0-flow air handler wastes time (just turns off again) & might find other problems. precaution 10-96. if ( ah->sfan.vfDs > 0 // if fan flow non-0 (0 is illegal input but might come from autoSize) - || Top.tp_sizing && ah->fanAs.az_active ) // or if fan is being autoSized (thus initially 0) + || (Top.tp_sizing && ah->fanAs.az_active) ) // or if fan is being autoSized (thus initially 0) { // estimate whether zone wants heat or cold, using prior tz and current setpoints /* Responds to sp changes. @@ -1693,11 +1697,11 @@ RC TU::tuEstimate() // terminal "estimate" function to call at start of subho DBL tz = ZrB.p[ownTi].tz; if ((sstat[TU_TUTH] & FsSET) && tz < tuTH - ABOUT0) // if zone temp clearly below heat setpoint - { if (max( tuVfMn, tuVfMxH) > 0 || Top.tp_sizing && vhAs.az_active) // if tu has heating flow or autosizing it 10-96 + { if (max( tuVfMn, tuVfMxH) > 0 || (Top.tp_sizing && vhAs.az_active) ) // if tu has heating flow or autosizing it 10-96 wantMd = ahHEATING; // say control zone wants ah to heat } else if ((sstat[TU_TUTC] & FsSET) && tz > tuTC + ABOUT0) // if zone temp clearly above cool setpoint - { if (max( tuVfMn, tuVfMxC) > 0 || Top.tp_sizing && vcAs.az_active) // if tu has cooling flow or autosizing it 10-96 + { if (max( tuVfMn, tuVfMxC) > 0 || (Top.tp_sizing && vcAs.az_active)) // if tu has cooling flow or autosizing it 10-96 wantMd = ahCOOLING; // say zone wants ah to cool } else if ( (!(sstat[TU_TUTH] & FsSET) || tz > tuTH + ABOUT0) // (ABOUT0: .001, cnglob.h) @@ -1941,7 +1945,7 @@ RC ZNR::ztuMode() // ztuCompute inner fcn: determine zone mode, zone temp, term // TESTED 7-->3 no difference in cks11.bat tests. BOO canReEst = // can change ah mode or supply temp (re ZN/ZN2/WZ/CZ) if ... ah->timesReEst < MAXREEST // re-estimate count not used up (0'd in AH::begSubhr) - && ( Top.tp_sizing && ah->fanAs.az_active // and ah supply fan is now being autoSized or has ... + && ( (Top.tp_sizing && ah->fanAs.az_active) // and ah supply fan is now being autoSized or has ... || ah->sfan.vfDs > 0 ); /* non-0 capacity. (ausz could make 0 vfDs; turning on 0-flow ah could cause ah-tu nonconvergence. Precaution 10-96.) */ @@ -2032,7 +2036,7 @@ RC ZNR::ztuMode() // ztuCompute inner fcn: determine zone mode, zone temp, term if (ah->ahMode==ahOFF) { if ( ft > sp // if heat not needed (if a/b > sepoint) - || ft >= sp && mdSeq[md+1]==MDS_FLOAT ) // if exact ==, go only to float mode: ==sp ArStC would loop. + || (ft >= sp && mdSeq[md+1]==MDS_FLOAT) ) // if exact ==, go only to float mode: ==sp ArStC would loop. md++; // go up a zone mode: float at/above sp, or ArStC. else if (isCtu && canReEst) // if zhx's tu controls ah & can reEst now { @@ -2165,14 +2169,14 @@ RC ZNR::ztuMode() // ztuCompute inner fcn: determine zone mode, zone temp, term /* if next mode is setpoint cool, just use normal cool not bkwds heat: yields same temp if sp same. TESTED saves iterations, T136a, 5-6-95. */ - || mdSeq[md+1] != MDS_FLOAT // if there's a float mode, next sp different, stay here - && ZhxB.p[mdSeq[md+1]].zhxTy==ArStC // if there's anything but sp cooling, i dunno, so say here + || (mdSeq[md+1] != MDS_FLOAT // if there's a float mode, next sp different, stay here + && ZhxB.p[mdSeq[md+1]].zhxTy==ArStC) // if there's anything but sp cooling, i dunno, so say here /* let zone drop from setpoint mode out of backwards heating when heat coil no longer needed -- else may stick at hi flow in sp mode due to fan heat. TESTED really needed, T155d 5-95. DOES hold, once here, when coil only countering leak/loss, when ZN cd be off: believe realistic. */ - || ah->coilUsed != cuHEAT // if ah didn't use heat coil (not valid after reEst) - && TZMNFO > sp - tFuzz /* if zone temp not too cold without heat coil: + || (ah->coilUsed != cuHEAT // if ah didn't use heat coil (not valid after reEst) + && TZMNFO > sp - tFuzz) /* if zone temp not too cold without heat coil: to let zone get INTO bkwd heat after reEst even tho coilUsed unset (else md++'s and may run coil in float mode). */ @@ -2262,7 +2266,7 @@ RC ZNR::ztuMode() // ztuCompute inner fcn: determine zone mode, zone temp, term if (ah->ahMode==ahOFF) { if ( ft < sp // if coolth not needed (if a/b < sepoint) - || ft <= sp && mdSeq[md+1]==MDS_FLOAT ) // if exact ==, go only to float mode: ==sp ArStH would loop. + || (ft <= sp && mdSeq[md+1]==MDS_FLOAT) ) // if exact ==, go only to float mode: ==sp ArStH would loop. md--; // go down a zone mode: float at/below sp, or ArStH. else if (isCtu && canReEst) // if zhx's tu controls ah & can reEst now { @@ -2395,14 +2399,14 @@ RC ZNR::ztuMode() // ztuCompute inner fcn: determine zone mode, zone temp, term /* if next mode is setpoint heat, just use normal heat not bkwds cool: yields same temp if sp same. TESTED saves iterations, T136a, 5-6-95. */ - || mdSeq[md-1] != MDS_FLOAT // if there's a float mode, next sp different, stay here - && ZhxB.p[mdSeq[md-1]].zhxTy==ArStH // if there's anything but sp cooling, i dunno, so say here + || (mdSeq[md-1] != MDS_FLOAT // if there's a float mode, next sp different, stay here + && ZhxB.p[mdSeq[md-1]].zhxTy==ArStH) // if there's anything but sp cooling, i dunno, so say here /* let zone drop from setpoint mode out of backwards cooling when no cool coil longer needed -- else may stick at hi flow in sp mode due to leak/loss. TESTED really needed, T155d 5-95. DOES hold, when coil only countering fanHeat/leak/loss, when ZN2 cd be off: believe realistic. */ - || ah->coilUsed != cuCOOL // if ah didn't use cool coil (not valid after reEst) - && TZMNFO < sp + tFuzz /* if zone temp not too warm without cool coil: + || (ah->coilUsed != cuCOOL // if ah didn't use cool coil (not valid after reEst) + && TZMNFO < sp + tFuzz) /* if zone temp not too warm without cool coil: to let zone get INTO bkwd cool after reEst even tho coilUsed unset (else md--'s and may run coil in float mode). */ @@ -2765,7 +2769,7 @@ RC ZNR::ztuAbs( // compute stuff for zn's terminals in given zone mode && md < mda // if ah should be max heating in this zone mode && !(ah->ahMode & ahHEATBIT) // but ah heat coil isn't on (ah may be off, fan only, or cool) && CHN(ah->ahSch) != C_AHSCHVC_OFF // ah sched ON (or future WARMUP) - && tu->ctrlsAi && tu->ctrlsAi==x->ai // if zhx's tu controls zhx's air handler 5-2-95 + && (tu->ctrlsAi && tu->ctrlsAi==x->ai) // if zhx's tu controls zhx's air handler 5-2-95 && ah->isZNorZN2 // if ah supply temp is under ZN or ZN2 control this hour // don't turn on ah if no flow possible: just turns itself off again --> ah-tu nonconvergence, 10-96. && (max( tu->tuVfMn, tu->tuVfMxH) > 0 || Top.tp_sizing && tu->vhAs.az_active) // tuVfMxH==0 is allowed input. @@ -2800,7 +2804,7 @@ RC ZNR::ztuAbs( // compute stuff for zn's terminals in given zone mode && md > mda // if ah should be max cooling in this zone mode && !(ah->ahMode & ahCOOLBIT) // but ah cool coil isn't on (ah may be off, fan only, or cool) && CHN(ah->ahSch) != C_AHSCHVC_OFF // ah sched ON (or future WARMUP) - && tu->ctrlsAi && tu->ctrlsAi==x->ai // if zhx's tu controls zhx's air handler 5-2-95 + && (tu->ctrlsAi && tu->ctrlsAi==x->ai) // if zhx's tu controls zhx's air handler 5-2-95 && ah->isZNorZN2 // if ah supply temp is under ZN or ZN2 control this hour // don't turn on ah if no flow possible: just turns itself off again --> ah-tu nonconvergence, 10-96. && (max( tu->tuVfMn, tu->tuVfMxC) > 0 || Top.tp_sizing && tu->vcAs.az_active) // tuVfMxC==0 is allowed input. diff --git a/src/cul.cpp b/src/cul.cpp index 1cab4ffa4..00cae3098 100644 --- a/src/cul.cpp +++ b/src/cul.cpp @@ -383,7 +383,7 @@ SI FC cul( // public entry to compile user language commands from open input fi // 4: clear input data, free input basAncs and DM alloc'd here: // call for max DM for last run, or re finding unfree'd DM. Uses no other args. Returns 1. const char* fName, // file name (case 1) - char* defex, // default extension (must include leading period) + const char* defex, // default extension (must include leading period) CULT *cult, // top-level table, used if cs==1 record *e, // ptr to basAnc record (entry) to rcv top level data @@ -1531,7 +1531,7 @@ x dmfree( DMPP( *p)); // free any prior string value: free ram, NUL else if (c->ty==TYFL || c->ty==TYNC) // floats: units. #else else if ( c->ty==TYFL // float: sep cult mbr; units. - || c->ty==TYNC && !c->DFPI ) // number/choice is init as a number from .dff if .dfpi is 0. + || (c->ty==TYNC && !c->DFPI) ) // number/choice is init as a number from .dff if .dfpi is 0. #endif { if (!ISNUM(c->DFF)) // keep nonNumeric value out of coprocessor! @@ -1834,7 +1834,7 @@ LOCAL RC FC culRESET() // "unset" a member -- re-default it else if (c->ty==TYFL || c->ty==TYNC) // floats: units. #else else if ( c->ty==TYFL // float: sep cult mbr; units. - || c->ty==TYNC && !c->DFPI ) // number/choice is defaulted as a number from .dff if .dfpi is 0. + || (c->ty==TYNC && !c->DFPI) ) // number/choice is defaulted as a number from .dff if .dfpi is 0. #endif { if (!ISNUM(c->DFF)) // keep nonNumeric value out of coprocessor! @@ -1953,7 +1953,7 @@ LOCAL RC FC culKDAT() // do cul constant-data case per xSp else if (c->ty==TYFL || c->ty==TYNC) // floats: units. #else else if ( c->ty==TYFL // float: sep cult mbr; units. - || c->ty==TYNC && !c->DFPI ) // number/choice: use .dff if .dfpi is 0. + || (c->ty==TYNC && !c->DFPI) ) // number/choice: use .dff if .dfpi is 0. #endif { if (!ISNUM(c->DFF)) // keep nonNumeric value out of coprocessor! @@ -2785,7 +2785,7 @@ LOCAL RC xpr( // our local expression compiler interface / checker or accepted and ungotten: verb, verb-like word, eof here reject those that are passed that we do not like. */ - if ( tokTy==CUTCOM && !(f & ARRAY) // comma ok if 'array' flag, 3-92 + if ( (tokTy==CUTCOM && !(f & ARRAY)) // comma ok if 'array' flag, 3-92 || tokTy==CUTRPR || tokTy==CUTRB || tokTy==CUTDEFA ) perNx( MH_S0249 ); // issue msg, scan to eof, verb, or after ';'. // "expected ';' (or class name, member name, or verb)" diff --git a/src/cul.h b/src/cul.h index 3d813b996..563c47256 100644 --- a/src/cul.h +++ b/src/cul.h @@ -290,7 +290,7 @@ extern SI firstCulCall; // non-0 if first cul call, 0 on reentry (eg after a RUN /*------------------------- FUNCTION DECLARATIONS -------------------------*/ // cul.cpp void FC culClean(CLEANCASE cs); -SI FC cul( SI cs, const char* fName, char *defex, CULT *cult, record *e, BOO *pAuszF=NULL); +SI FC cul( SI cs, const char* fName, const char* defex, CULT *cult, record *e, BOO *pAuszF=NULL); TI FC ratDefO( BP b); // cncult2.cpp diff --git a/src/cutok.cpp b/src/cutok.cpp index 7c0914dd7..3e8c5c3ef 100644 --- a/src/cutok.cpp +++ b/src/cutok.cpp @@ -564,7 +564,7 @@ LOCAL void cuppiClean(CLEANCASE /*cs*/) // called from cuTokClean, above RC cufOpen( // open and init CSE language input file const char* fname, // file name input by user - char *dflExt ) // NULL or "" or default .extension incl leading "." + const char* dflExt ) // NULL or "" or default .extension incl leading "." { // init our char input stuff diff --git a/src/cutok.h b/src/cutok.h index 4eea1fab2..3cc46078f 100644 --- a/src/cutok.h +++ b/src/cutok.h @@ -110,7 +110,7 @@ extern FLOAT cuFlval; // floating value of number void cuTokClean(CLEANCASE cs); // init/clean up 10-93 void cuUntok( void); // unget token int cuTok( void); // get token -RC cufOpen( const char* fname, char *dflExt); // open file +RC cufOpen( const char* fname, const char* dflExt); // open file void cufClose( void); // close file RC CDEC cuEr( int retokPar, MSGORHANDLE message, ...); RC CDEC cuEr( int shoTx, int shoCaret, int shoFnLn, int retokPar, int fileIx, int line, int isWarn, MSGORHANDLE fmt, ... ); diff --git a/src/pp.cpp b/src/pp.cpp index 3f8eca0e9..b1d9ed861 100644 --- a/src/pp.cpp +++ b/src/pp.cpp @@ -168,7 +168,7 @@ static char ppIdtx[512+1] = { 0 }; // text of identifier, set by ppcId() // re getting preprocessed text. // see pp.h for: ppOpen(), ppClose(), ppGet(). -static RC FC ppOpI( const char *fname, char *defex); +static RC FC ppOpI( const char* fname, const char* defex); // executing pp cmds static RC FC ppcDo( const char *p, int ppCase); @@ -521,12 +521,12 @@ bool ppFindFile( // find file using paths specified with ppAddPaths. Issues no return bFound; } // ppFindFile //========================================================================== -RC FC ppOpen( const char* fname, char *defex) // open and init cal non-res user language main input source file +RC FC ppOpen( const char* fname, const char* defex) // open and init cal non-res user language main input source file // searches current directory, and drives/directories per preceding ppAddPath calls. { - RC rc; + RC rc = RCOK; // if file already open, message and continue: insurance if (is && inDepth) @@ -545,11 +545,11 @@ RC FC ppOpen( const char* fname, char *defex) // open and init cal non-res user return rc; // another return above (CSE_E macro) } // ppOpen //========================================================================== -RC FC ppOpI( const char* fname, char *defex) // inner pp file opener: adds an input source stack level +RC FC ppOpI( const char* fname, const char* defex) // inner pp file opener: adds an input source stack level { INSTK * isi; - RC rc; + RC rc = RCOK; // standardize name (upper case) and conditionally use default extension fname = strffix( fname, defex); // to tmpstr @@ -588,7 +588,8 @@ RC FC ppOpI( const char* fname, char *defex) // inner pp file opener: adds an i inDepth++; // input nest level is = isi; // file-global inStk pointer isf = isi; // ditto to file: 'is' changes for macro - return RCOK; // good return + + return rc; // good return // more returns above } // ppOpI //========================================================================== diff --git a/src/pp.h b/src/pp.h index 5cf979d15..fbd6b90ed 100644 --- a/src/pp.h +++ b/src/pp.h @@ -23,7 +23,7 @@ bool ppFindFile( const char *fname, char *fullPath); // search pp paths, return bool ppFindFile( char* &fname); // ditto, update fname to path found #endif bool ppFindFile(CULSTR& fname); // ditto, update fname to path found -RC FC ppOpen( const char* fname, char *defex); // open file +RC FC ppOpen( const char* fname, const char* defex); // open file void FC ppClose(); // close file(s) USI FC ppGet( char *p, USI n); // get preprocessed text diff --git a/src/yacam.cpp b/src/yacam.cpp index 1a810249b..3ddc1de47 100644 --- a/src/yacam.cpp +++ b/src/yacam.cpp @@ -783,7 +783,7 @@ RC YACAM::getLineCSV( // read, decode, and store data per control string RC rc = RCOK; mErOp = erOp; // communicate error action to errFl/errFlLn va_list pp; - void* p; + void* p; va_start( pp, cstr); // set up to get variable args, starting after cstr char lnBuf[ YACAM_MAXLINELEN]; From 6bfeb245ddb7c49f12c2dc63ad54089f73ad467e Mon Sep 17 00:00:00 2001 From: Chip Barnaby Date: Fri, 10 Oct 2025 15:59:42 -0400 Subject: [PATCH 04/11] More clang cleanups --- src/cnah1.cpp | 4 ---- src/cnah2.cpp | 4 ++-- src/cncult3.cpp | 9 ++++++++- src/cnloads.cpp | 8 ++++---- src/cntp.cpp | 10 +++++++--- src/cnztu.cpp | 34 +++++++++++++++++++++++++--------- src/cueval.cpp | 1 + 7 files changed, 47 insertions(+), 23 deletions(-) diff --git a/src/cnah1.cpp b/src/cnah1.cpp index 7543a7d79..ce0d3cae3 100644 --- a/src/cnah1.cpp +++ b/src/cnah1.cpp @@ -985,10 +985,6 @@ RC AH::ahEstimate() // set ahMode and supply temp for terminal computations b4 i return RCOK; } // AH::ahEstimate //----------------------------------------------------------------------------------------------------------------------------- -//--- constants, also hard-coded in cncult2.cpp for Top.absTol; also in cnah2.cpp: -//const float RELoverABS = .01f; use commented out 5-95 // relative to absolute tol ratio: +-1 corrsponds to +- 1%. -//const float ABSoverREL = 1.f/RELoverABS; no uses 5-95 // reciprocal thereof -//--------------------------------------------------------------------------------------------------------------------------- RC AH::ahCompute() // airHandler full computation ("refine"), after terminals have been estimated // (old) preceding call sequence: tuEstimate, ahEstimate, ztuCompute. diff --git a/src/cnah2.cpp b/src/cnah2.cpp index 3327fdcc5..253991b4a 100644 --- a/src/cnah2.cpp +++ b/src/cnah2.cpp @@ -86,8 +86,8 @@ const int UULIM = 250; // 200-->250 to match default ahTsMx, after PSYCHROMAXT // AH::iter4Fs (next function) is called by ahCompute, which is in cnah1.cpp. //----------------------------------------------------------------------------------------------------------------------------- //--- constants, also hard-coded in cncult2.cpp for Top.absTol; also in cnah1.cpp: -const float RELoverABS = .01f; // relative to absolute tolerance ratio: +-1 corrsponds to +- 1%. -//const float ABSoverREL = 1.f/RELoverABS; no uses 5-95 // reciprocal thereof +static constexpr float RELoverABS = .01f; // relative to absolute tolerance ratio: +-1 corrsponds to +- 1%. +// static constexpr float ABSoverREL = 1.f/RELoverABS; no uses 5-95 // reciprocal thereof //----------------------------------------------------------------------------------------------------------------------------- //---- ahCompute callees (iter4Fs - antRatTs - etc) local variables LOCAL DBL tsmLLim, tsmULim; // antRatTs narrows these to next temp up and down from ts where zone mode changes diff --git a/src/cncult3.cpp b/src/cncult3.cpp index 7e145989b..36fc40249 100644 --- a/src/cncult3.cpp +++ b/src/cncult3.cpp @@ -1265,9 +1265,12 @@ void ZNR::zn_SetAirRadXArea() // set mbrs re zone air radiant pseudo surface #endif } // ZNR::zn_SetAirRadXArea //----------------------------------------------------------------------------- +#if 0 // FFactors() convergence failure seen in optimized release builds // Disabling optimization seems to fix, did not fully analyze, 2-8-12 +// Renabled optimization 10-9-2025, passes all tests #pragma optimize( "", off) +#endif static int FFactors( // derive spherical geometry factors int nS, // # of surfaces const double areaS[], // areas of surfaces @@ -1322,7 +1325,9 @@ x printf( "Mismatch\n"); return errTxt[ 0] ? RCBAD : RCOK; } // FFactors +#if 0 #pragma optimize( "", on) +#endif //----------------------------------------------------------------------------- // #undef CZM_COMPARE // #define in cndefns.h to use exact CZM values re result comparison //----------------------------------------------------------------------------- @@ -2275,7 +2280,9 @@ void XSURF::xs_Init( // initialize //----------------------------------------------------------------------------- XSURF& XSURF::Copy( const XSURF* pXS, [[maybe_unused]] int options /*=0*/) { record* pParent = xs_pParent; // save parent ptr (set by c'tor) - memcpy( reinterpret_cast< void *>(this), pXS, sizeof( XSURF)); // bitwise copy + memcpy( reinterpret_cast< void *>(this), + reinterpret_cast< const void *>(pXS), + sizeof( XSURF)); // bitwise copy xs_pParent = pParent; // restore parent ptr xs_Init( xs_pParent); // fix sub-objects // (deletes FENAWs, xs_SetRunConstants remakes) diff --git a/src/cnloads.cpp b/src/cnloads.cpp index 1f38fa906..fa5e6abd3 100644 --- a/src/cnloads.cpp +++ b/src/cnloads.cpp @@ -2660,9 +2660,8 @@ RC RSYS::rs_FazInit( // init before autosize (once) and main sim return rc; } // RSYS::rs_FazInit //----------------------------------------------------------------------------- -RC RSYS::rs_RddInit( int isAusz) // init before each autosize design day and main sim +RC RSYS::rs_RddInit( int /*isAusz*/) // init before each autosize design day and main sim { - isAusz; return RCOK; } // RSYS::rs_RddInit //----------------------------------------------------------------------------- @@ -4554,7 +4553,7 @@ float RSYS::rs_PerfASHP2( // ASHP performance // multiplies final COP result // returns gross (compressor-only) full-speed COP (as adjusted by COPAdjF) { - RC rc = RCOK; + [[maybe_unused]] RC rc = RCOK; capDfHt = 0.f; bool bDoDefrostAux = (ashpModel & 0x100) == 0 && rs_defrostModel == C_RSYSDEFROSTMODELCH_REVCYCLEAUX; @@ -6145,6 +6144,7 @@ double RSYS::rs_FxCapForSpeedF( // call-back fcn for regula method double& speedF) // trial speedF (may be returned modified) // returns required rs_fxCap[ 0] (= rs_amf / amfReq), >1 = excess capacity { + [[maybe_unused]] RC rc = RCOK; #if defined( _DEBUG) double speedFWas = speedF; float rsSpeedFWas = rs_speedF; @@ -6163,7 +6163,7 @@ double RSYS::rs_FxCapForSpeedF( // call-back fcn for regula method // (when far from solution errors are common and not meaningful int arOptions = abs(rs_fxCap[0] - 1.f) < .01f; - RC rc = rs_TotalAirRequestForSpeedF(float(speedF), arOptions); + rc |= rs_TotalAirRequestForSpeedF(float(speedF), arOptions); // if rc != RCOK, rs_fxCap[0] is 0 diff --git a/src/cntp.cpp b/src/cntp.cpp index 197752415..551df5831 100644 --- a/src/cntp.cpp +++ b/src/cntp.cpp @@ -383,8 +383,12 @@ RC TOWERPLANT::varSpeedF( // determine f needed for one tower to output power q // initial trial f: when possible, interpolate from prior f and q for fast repeated calls in same subhr // CAUTION: old q will not corres to old f if weather, setpoint, etc changed, so never save initial point. if (_q > qMax1 || _q < qMin1) // /0 and major change protection - if (_q <= qWant) _f = _f * (qWant - qMin1)/(_q - qMin1); // if prior q too big (negative), linear inter tween qMin1 and q - else _f += (1. - _f)*(qWant - _q)/(qMax1 - _q); // else prior q too small (neg), interp tween q and qMax1 + { + if (_q <= qWant) + _f = _f * (qWant - qMin1)/(_q - qMin1); // if prior q too big (negative), linear inter tween qMin1 and q + else + _f += (1. - _f)*(qWant - _q)/(qMax1 - _q); // else prior q too small (neg), interp tween q and qMax1 + } // else: fall thru with old f as 1st trial. f < 0 and f > 1 fixed below. #if 1 // believe this is faster than next, provided towModel is stable enuf to assure convergence. 9-92. @@ -392,7 +396,7 @@ RC TOWERPLANT::varSpeedF( // determine f needed for one tower to output power q // search loop. secant method: inter/extrapolate from most recent two points DBL f1=0., q1=qMin1; // init prior point to one precomputed end of interval - for (SI niter = 0; ; ) + for (int niter = 0; ; ) { if (_f <= 0.) { diff --git a/src/cnztu.cpp b/src/cnztu.cpp index faf8cdf62..136672123 100644 --- a/src/cnztu.cpp +++ b/src/cnztu.cpp @@ -59,10 +59,6 @@ WHAT if we modify the smart terminal to shut off flow if supply temp is on wrong ****** UNTIL details thought thru, don't bother to try to implement smart terminals. ******* */ //----------------------------------------------------------------------------------------------------------------------------- -//--- constants, also hard-coded in cncult2.cpp for Top.absTol; also in cnah.cpp: -const float RELoverABS = .01f; // relative to absolute tolerance ratio: +-1 corrsponds to +- 1%. -const float ABSoverREL = 1.f/RELoverABS; // reciprocal thereof -//--------------------------------------------------------------------------------------------------------------------------- RC FC hvacIterSubhr() // Iterative (estimate-refine) part of hvac subhour computations for all zones/terminals/airHandlers @@ -531,25 +527,38 @@ RC TU::tu_Setup() // check and set up terminal record: call for each terminal SI vbl = FALSE; // TRUE if any variable exprs given: don't default float def = 0.f; // use only > 0 values if (sstat[TU_TUVFMN] & FsSET) // if minimum flow given + { if (sstat[TU_TUVFMN] & FsAS) // if being autoSized 7-95, its not constant nor variable ausz++; // set flag else if (sstat[TU_TUVFMN] & FsVAL) // else if set now (thus constant) def = tuVfMn; // use it as default (if > 0) - else vbl++; // not set, not autoSized --> must be variable, can't default + else + vbl++; // not set, not autoSized --> must be variable, can't default + } if (cmAr & cmStH) // heat max only pertinent with tstat ctrl'd heat + { if (sstat[TU_TUVFMXH] & FsSET) // if heat max flow given + { if (sstat[TU_TUVFMXH] & FsAS) // if being autoSized 7-95, its not constant nor variable ausz++; // set flag else if (sstat[TU_TUVFMXH] & FsVAL) // if set now (thus constant) setToMax(def, tuVfMxH); // use it as default if larger - else vbl++; // not set --> must be variable, can't default + else + vbl++; // not set --> must be variable, can't default + } + } if (cmAr & cmStC) // cool max only pertinent with tstat ctrl'd cool + { if (sstat[TU_TUVFMXC] & FsSET) // if cool max flow given + { if (sstat[TU_TUVFMXC] & FsAS) // if being autoSized 7-95, its not constant nor variable ausz++; // set flag else if (sstat[TU_TUVFMXC] & FsVAL) // if set now (thus constant) setToMax(def, tuVfMxC); // use it as default if larger - else vbl++; // not set --> must be variable, can't default + else + vbl++; // not set --> must be variable, can't default + } + } /* if any exprs given, don't use the constants or autoSizes -- require input. if only constants or autoSizes given, use max for main sim. if both constants & autoSizes given, don't store the constants b4 ausz phase: leave 0 for dynamic default. @@ -2498,6 +2507,9 @@ RC ZNR::ztuMode() // ztuCompute inner fcn: determine zone mode, zone temp, term Turnoff happens: AH::setTsSp1 (some 0-flow cases), TU::tuEstimate (next subhour), and now in ZNR::ztuAbs at most once per subhour. 4-95. */ + default: + break; + } // end switch zhxTy // sums for humidity, for setpoint modes: add active-terminal contribution if any to sums from ztuAbs @@ -2773,7 +2785,7 @@ RC ZNR::ztuAbs( // compute stuff for zn's terminals in given zone mode && ah->isZNorZN2 // if ah supply temp is under ZN or ZN2 control this hour // don't turn on ah if no flow possible: just turns itself off again --> ah-tu nonconvergence, 10-96. && (max( tu->tuVfMn, tu->tuVfMxH) > 0 || Top.tp_sizing && tu->vhAs.az_active) // tuVfMxH==0 is allowed input. - && (ah->sfan.vfDs > 0 || Top.tp_sizing && ah->fanAs.az_active) ) // vfDs==0 could result from autoSizing. + && (ah->sfan.vfDs > 0 || (Top.tp_sizing && ah->fanAs.az_active)) ) // vfDs==0 could result from autoSizing. { TU *ctu = TuB.p + ah->ahCtu; // point ZN/ZN2 control terminal for this air handler ctu->wantMd = ahHEATING; // have terminal tell ah that it wants heat @@ -2808,7 +2820,7 @@ RC ZNR::ztuAbs( // compute stuff for zn's terminals in given zone mode && ah->isZNorZN2 // if ah supply temp is under ZN or ZN2 control this hour // don't turn on ah if no flow possible: just turns itself off again --> ah-tu nonconvergence, 10-96. && (max( tu->tuVfMn, tu->tuVfMxC) > 0 || Top.tp_sizing && tu->vcAs.az_active) // tuVfMxC==0 is allowed input. - && (ah->sfan.vfDs > 0 || Top.tp_sizing && ah->fanAs.az_active) ) // vfDs==0 could result from autoSizing. + && (ah->sfan.vfDs > 0 || (Top.tp_sizing && ah->fanAs.az_active)) ) // vfDs==0 could result from autoSizing. { TU *ctu = TuB.p + ah->ahCtu; // point ZN/ZN2 control terminal for this air handler ctu->wantMd = ahCOOLING; // have terminal tell ah that it wants coolth @@ -2862,6 +2874,8 @@ haveFlow: ; // other air handler cases join here with flow cz set wc1 += cz * (ah->ah_wSupLs + ah->ah_wSup)/2.; // accumulate average supply hum rat * flow, for wcO1 wc += cz * ah->ah_wSup; // accumulate latest supply hum rat * flow break; + default: + break; } } @@ -3098,6 +3112,8 @@ tzOhum: ; // common exit for air cases. cz contains tu->cz. } break; #undef TOLF + default: + break; } } } // ZNR::ztuMdSets diff --git a/src/cueval.cpp b/src/cueval.cpp index 61be629ab..1704e33b9 100644 --- a/src/cueval.cpp +++ b/src/cueval.cpp @@ -411,6 +411,7 @@ LOCAL RC FC cuEvalI( static_assert( sizeof(SI)==sizeof(PSOP)); // assumed in (SI *) cast used in PSPKONN case static bool bCoverageInited = false; + if (!bCoverageInited) { /* rc = */ CoverageInit(); bCoverageInited = true; } From 0caa886ad2a6ffebaadce49a67faee3bf0700b1b Mon Sep 17 00:00:00 2001 From: Chip Barnaby Date: Sat, 11 Oct 2025 15:52:58 -0400 Subject: [PATCH 05/11] More clang cleanups; fix cvpak bug found by clang --- src/cnloads.cpp | 2 +- src/cnztu.cpp | 4 ++-- src/cuprobe.cpp | 6 +++--- src/cvpak.cpp | 9 ++++----- test/unit/cvpak.unit.cpp | 6 +++++- 5 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/cnloads.cpp b/src/cnloads.cpp index fa5e6abd3..db760281e 100644 --- a/src/cnloads.cpp +++ b/src/cnloads.cpp @@ -1270,7 +1270,7 @@ RC ZNR::zn_AirRequest( // determine air requirement given rs_asSup { RC rc = RCOK; double tSup0 = rs->rs_asSup.as_tdb; -#if 1 && defined( _DEBUG) +#if 0 && defined( _DEBUG) if ((options & 1) && !Top.isWarmup && rs->rs_speedF > 0.99f && ( (zn_hcMode == RSYS::rsmCOOL && tSup0 >= zn_tzsp) || (zn_hcMode == RSYS::rsmHEAT && tSup0 <= zn_tzsp && rs->rs_effHt > 0.f))) diff --git a/src/cnztu.cpp b/src/cnztu.cpp index 136672123..ee5be22e4 100644 --- a/src/cnztu.cpp +++ b/src/cnztu.cpp @@ -2784,7 +2784,7 @@ RC ZNR::ztuAbs( // compute stuff for zn's terminals in given zone mode && (tu->ctrlsAi && tu->ctrlsAi==x->ai) // if zhx's tu controls zhx's air handler 5-2-95 && ah->isZNorZN2 // if ah supply temp is under ZN or ZN2 control this hour // don't turn on ah if no flow possible: just turns itself off again --> ah-tu nonconvergence, 10-96. - && (max( tu->tuVfMn, tu->tuVfMxH) > 0 || Top.tp_sizing && tu->vhAs.az_active) // tuVfMxH==0 is allowed input. + && (max( tu->tuVfMn, tu->tuVfMxH) > 0 || (Top.tp_sizing && tu->vhAs.az_active)) // tuVfMxH==0 is allowed input. && (ah->sfan.vfDs > 0 || (Top.tp_sizing && ah->fanAs.az_active)) ) // vfDs==0 could result from autoSizing. { TU *ctu = TuB.p + ah->ahCtu; // point ZN/ZN2 control terminal for this air handler @@ -2819,7 +2819,7 @@ RC ZNR::ztuAbs( // compute stuff for zn's terminals in given zone mode && (tu->ctrlsAi && tu->ctrlsAi==x->ai) // if zhx's tu controls zhx's air handler 5-2-95 && ah->isZNorZN2 // if ah supply temp is under ZN or ZN2 control this hour // don't turn on ah if no flow possible: just turns itself off again --> ah-tu nonconvergence, 10-96. - && (max( tu->tuVfMn, tu->tuVfMxC) > 0 || Top.tp_sizing && tu->vcAs.az_active) // tuVfMxC==0 is allowed input. + && (max( tu->tuVfMn, tu->tuVfMxC) > 0 || (Top.tp_sizing && tu->vcAs.az_active)) // tuVfMxC==0 is allowed input. && (ah->sfan.vfDs > 0 || (Top.tp_sizing && ah->fanAs.az_active)) ) // vfDs==0 could result from autoSizing. { TU *ctu = TuB.p + ah->ahCtu; // point ZN/ZN2 control terminal for this air handler diff --git a/src/cuprobe.cpp b/src/cuprobe.cpp index 35e36e98f..dddcd6d52 100644 --- a/src/cuprobe.cpp +++ b/src/cuprobe.cpp @@ -306,13 +306,13 @@ RC PROBEOBJECT::po_DoProbe() pF1 = pFi; // fir entry for which preceding tokens (m chars) match while (_strnicmp( mNameSought, pFi->fi_GetMName() + m, l) // while token does not match (continuation of) member name - || isalnumW(pFi->fi_GetMName()[m]) // .. or matching word/number in table - && isalnumW(pFi->fi_GetMName()[m+l]) ) // .. continues w/o delimiter (ie only initial substring given) + || (isalnumW(pFi->fi_GetMName()[m]) // .. or matching word/number in table + && isalnumW(pFi->fi_GetMName()[m+l])) ) // .. continues w/o delimiter (ie only initial substring given) { pFi++; Fn++; // try next fir table entry, incr field number if ( !pFi->fi_fdTy // if end fir table, not found - || m && _strnicmp( pF1->fi_GetMName(), pFi->fi_GetMName(), m) ) /* if preceding m chars of this entry don't match + || (m && _strnicmp( pF1->fi_GetMName(), pFi->fi_GetMName(), m)) ) /* if preceding m chars of this entry don't match (all entries with same beginning are together) */ { pB = nullptr; diff --git a/src/cvpak.cpp b/src/cvpak.cpp index f18b78ccb..d21c54a5d 100644 --- a/src/cvpak.cpp +++ b/src/cvpak.cpp @@ -682,11 +682,10 @@ p dinch ); // floating inches if (fmtv & FMTRTZ) // trim trailing zeros option { // rob 10-88 to support FTMRTZ with FMTSQ - Cvnchars = - - ( str, // trim .0's from decimal inches - '"', // slide final " leftward - lj ? 1 : wid ); /* if lj or FMTSQ (wid=1), do fully (lj padded below). + Cvnchars = + cvttz( str, // trim .0's from decimal inches + '"', // slide final " leftward + lj ? 1 : wid ); /* if lj or FMTSQ (wid=1), do fully (lj padded below). If rj, don't shorten < wid: wd need to pad at front, defer doing that code til need found. */ } diff --git a/test/unit/cvpak.unit.cpp b/test/unit/cvpak.unit.cpp index 4daf8df47..176f4c101 100644 --- a/test/unit/cvpak.unit.cpp +++ b/test/unit/cvpak.unit.cpp @@ -47,7 +47,11 @@ TEST(cvpak, output_convert) { -11.3700f, UNNONE, 10, (FMTSQ | FMTRTZ) + 4, 0, "-11.37" }, { nanf, UNNONE, 10, (FMTSQ | FMTRTZ) + 4, 0, "nan" }, { nanf, UNLENGTH, 10, (FMTSQ | FMTRTZ) + 4, 0, "nan" }, - }; + { 1.5f, UNLENGTH, 10, (FMTSQ | FMTRTZ) + 6, 0, "1'6\"" }, + { 1.55f, UNLENGTH, 10, (FMTSQ | FMTRTZ) + 6, 0, "1'6.6\"" }, + { 1.0f, UNLENGTH, 10, (FMTSQ | FMTRTZ) + 6, 0, "1'0\"" }, + { 1.5f, UNLENGTH, 10, (FMTRTZ) + 6, 0, "1' 6\" " }, + }; for (FVTOS& fv : fvt) { From c7b4b3b091eeb776f6a6d7db31b45e391d317598 Mon Sep 17 00:00:00 2001 From: Chip Barnaby Date: Sun, 12 Oct 2025 17:23:15 -0400 Subject: [PATCH 06/11] Yet more clang fixes --- src/cnguts.cpp | 2 -- src/cnloads.cpp | 4 ++-- src/cpnat.cpp | 4 ++++ src/cul.cpp | 29 +++++++++++++++++------------ src/cuparse.cpp | 30 +++++++++++++++++++----------- src/cuprobe.cpp | 6 +++--- src/curvemap.cpp | 2 -- src/datfcns.cpp | 2 +- src/dhwcalc.cpp | 3 +-- src/exman.cpp | 17 ++++++----------- src/geometry.h | 2 +- src/hvac.cpp | 4 ++-- src/impf.cpp | 2 +- src/pgpak.cpp | 2 +- src/pp.cpp | 40 ++++++++++++++++++++++------------------ 15 files changed, 80 insertions(+), 69 deletions(-) diff --git a/src/cnguts.cpp b/src/cnguts.cpp index a5479dc55..b10b94af2 100644 --- a/src/cnguts.cpp +++ b/src/cnguts.cpp @@ -2154,8 +2154,6 @@ void LOCAL accumulatorsAccum( { ACCUMULATOR_IVL* pDst = &pACM->Y + (ivl - C_IVLCH_Y); // point destination // ASSUMES ACCUMULATOR interval members ordered like DTIVLCH choices - ACCUMULATOR_IVL* pSrc = pDst + 1; // source: next shorter interval - if (ivl == C_IVLCH_H) { // construct temporary subhour ACCUMULATOR_IVL ACCUMULATOR_IVL tempSubhr; diff --git a/src/cnloads.cpp b/src/cnloads.cpp index db760281e..1576cce1e 100644 --- a/src/cnloads.cpp +++ b/src/cnloads.cpp @@ -1270,7 +1270,7 @@ RC ZNR::zn_AirRequest( // determine air requirement given rs_asSup { RC rc = RCOK; double tSup0 = rs->rs_asSup.as_tdb; -#if 0 && defined( _DEBUG) +#if 1 && defined( _DEBUG) if ((options & 1) && !Top.isWarmup && rs->rs_speedF > 0.99f && ( (zn_hcMode == RSYS::rsmCOOL && tSup0 >= zn_tzsp) || (zn_hcMode == RSYS::rsmHEAT && tSup0 <= zn_tzsp && rs->rs_effHt > 0.f))) @@ -3275,7 +3275,7 @@ RC RSYS::rs_SetupCapH( // set heating members that do not vary during simulatio { RC rc = RCOK; - bool bAutosizeFazInit = options & 1; + // bool bAutosizeFazInit = options & 1; not used bool bAssumeNotAutosizing = options & 2; if (rs_IsPMHtg()) diff --git a/src/cpnat.cpp b/src/cpnat.cpp index b8e5397f7..6f5d9755a 100644 --- a/src/cpnat.cpp +++ b/src/cpnat.cpp @@ -335,6 +335,7 @@ RC FC pnPrPg( char **ppp, SI x) } /* prPrPg */ +#if 0 // reactivate optimization, 10-2025 /* 7-4-90, 6.0: found compiled wrong with FC and -Osewzr: fetched BP+6, which I claim would be x, then tested in for > 0 as tho had nrows. Caused hang and/or qemm exceptions. OK if cv-compiled. @@ -345,6 +346,7 @@ Later 7-4-90, 6.0: under -Oswr, without FC, apparently compiled wrong again: Restore FC, try pragma. */ #pragma optimize("",off) /* 6.0 7-4-90 compiled wrong */ /* not reverified with final -O options */ +#endif //=========================================================================== LOCAL RC FC pnPrRows( @@ -431,7 +433,9 @@ LOCAL RC FC pnPrRows( *ppp = pp; /* in case something moved PAGE */ return rc; } /* pnPrRows */ +#if 0 #pragma optimize("",on) /* restore */ +#endif //=========================================================================== LOCAL RC FC pnNewPrPage() /* start new (continuation) printer page */ diff --git a/src/cul.cpp b/src/cul.cpp index 00cae3098..b71cca9d4 100644 --- a/src/cul.cpp +++ b/src/cul.cpp @@ -4107,22 +4107,24 @@ LOCAL void FC ratCultO( void) // eg DHWHEATER and DHWLOOPHEATER from DHWSYS { //if (b->isOwnable()) if an ownable-record basAnc: all are, 7-92. - if (xSp > xStk ) // if nested (not top: no owner) + if (xSp > xStk) // if nested (not top: no owner) + { if ((xSp-1)->c->f & NOTOWNED) // if embedding table entry flagged as "not indicating ownership" 11-91 xSp->cult->IFLAGS &= ~BEEN_HERE; // clear nxRat's flag so this cult will be returned again when - // accessed by another entry -- may indicate its owner 12-10-91 + // accessed by another entry -- may indicate its owner 12-10-91 else { BP ownB = (xSp-1)->b; // owner here is embedding basAnc if (b->ownB != 0 // if owner already set - && b->ownB != ownB ) // to another owner - per( MH_S0202, // error message, cuparse.cpp + && b->ownB != ownB) // to another owner + per(MH_S0202, // error message, cuparse.cpp //"cul.cpp:ratCultO: internal error: bad tables: \n" //" '%s' rat at %p is 'owned' by '%s' rat at %p and also '%s' rat at %p", - b->what, b, b->ownB->what, b->ownB, ownB->what, ownB ); + b->what, b, b->ownB->what, b->ownB, ownB->what, ownB); else b->ownB = ownB; // set owner } + } } } // ratCultO @@ -4691,23 +4693,26 @@ const char* basAnc::culMbrIdTx( // return record field id from cult table } const char* tx = NULL; - for (CULT *c = NULL; xnxC(c); ) // loop CULT entries, using xStk[0], making addl xStk entries + for (CULT* c = NULL; xnxC(c); ) // loop CULT entries, using xStk[0], making addl xStk entries + { if ( #if 1 // another try, 4-9-2013 (xSp->b->rt==rt // match rt not b so run basAncs, types basAncs work - || xSp->b == this) // also match b re ambiguous fn (e.g. among surface, door, window) + || xSp->b == this) // also match b re ambiguous fn (e.g. among surface, door, window) #elif 0 // experiment re ambiguous fn (e.g. among surface, door, window), 3-9-2012 x xSp->b == b // seems to work for types basAncs? #else x xSp->b->rt==b->rt // (match rt not b so run basAncs, types basAncs work) #endif - && c->cs==DAT - && c->fn==fn) // if data entry for desired field of basAnc of desired type + && c->cs==DAT && c->fn==fn) // if data entry for desired field of basAnc of desired type + { if (!tx) // if first match tx = c->id; // remember it - else if (_stricmp( tx, c->id)) // additional match: ignore if same name - return strtprintf( MH_S0276, tx, c->id); - // "[%s or %s: table ambiguity: recode this error message to not use cul.cpp:culMbrId]" + } + else if (_stricmp(tx, c->id)) // additional match: ignore if same name + return strtprintf(MH_S0276, tx, c->id); + // "[%s or %s: table ambiguity: recode this error message to not use cul.cpp:culMbrId]" + } if (tx) // if name found return tx; // return it. Is unique if here. diff --git a/src/cuparse.cpp b/src/cuparse.cpp index 895eb2104..46f78207b 100644 --- a/src/cuparse.cpp +++ b/src/cuparse.cpp @@ -2196,10 +2196,12 @@ LOCAL RC FC fcnChoose( SFST *f, USI wanTy) // do choose-type fcns for fcn() (f- // messages if wrong # values for hourval if (f->f & F1) // if hourval + { if (nAnDef < 24 && defa != 1) // < 24 args w/o user default is error - return perNx( MH_S0041); // "hourval() requires values for 24 hours" + return perNx(MH_S0041); // "hourval() requires values for 24 hours" else if (nAnDef > 24) // > 24 args gets warning - pWarnlc( MH_S0042); // "hourval() arguments in excess of 24 will be ignored" + pWarnlc(MH_S0042); // "hourval() arguments in excess of 24 will be ignored" + } if (isKon) // if constant index (1) or select all cond false (-1) { @@ -2723,12 +2725,14 @@ LOCAL RC FC sysVar( SVST *v, USI wanTy) #endif EE( emiLod( v->ty, v->p) ) // emit op code to load value if (v->f & INC) // on option, emit ++ (1-base for user) + { if (v->ty==TYSI) - EE( emit( PSIINC) ) + EE(emit(PSIINC)) else if (v->ty==TYFL) - EE( emit( PSFINC) ) - //(else bad table entry) - parSp->ty = v->ty; // set type + EE(emit(PSFINC)) + //(else bad table entry) + } + parSp->ty = v->ty; // set type } break; } // switch (v->cs) @@ -3322,15 +3326,17 @@ LOCAL SI FC isKonExp( // test if *parSp is a constant expression if (*parSp->psp1==kop) // if op code already constant-load { if (ppv) // if not NULL, tell caller + { #if defined( USE_PSPKONN) if (kop==PSPKONN) // string inline in code { - p = (const char *)(parSp->psp1 + 2); // is after op code & length + p = (const char*)(parSp->psp1 + 2); // is after op code & length *ppv = &p; // indirect like cuEvalR() } else // other types [or string ptr in code] #endif *ppv = parSp->psp1 + 1; // point to value after op code + } return 1; // constant, but nothing to convert } } @@ -3451,11 +3457,13 @@ LOCAL RC FC cnvPrevSf( // append (conversion) operation to ith previous express if ( *(pspe-3)==PSKON4 // if frame contains 4-byte constant && pspe-3==parSpe->psp1 ) // and nothing more { - if (!ISNUM(*(void **)(pspe-2))) // test the constant value: if any non-number (cnglob.h macro) - if (ISNCHOICE(*(void **)(pspe-2))) // conversion fails NOW - return perNx( MH_S0063); // "Expected numeric value, found choice value". Explain to user. + if (!ISNUM(*(void**)(pspe-2))) // test the constant value: if any non-number (cnglob.h macro) + { + if (ISNCHOICE(*(void**)(pspe-2))) // conversion fails NOW + return perNx(MH_S0063); // "Expected numeric value, found choice value". Explain to user. else - return perNx( MH_S0064); // "Numeric value required". (unexpected) NANDLE or bug. + return perNx(MH_S0064); // "Numeric value required". (unexpected) NANDLE or bug. + } return RCOK; // its already a number, needn't store conversion } // else: LATER 2-92 consider looking for single probe in stack frame, diff --git a/src/cuprobe.cpp b/src/cuprobe.cpp index dddcd6d52..fa3cfe2a6 100644 --- a/src/cuprobe.cpp +++ b/src/cuprobe.cpp @@ -782,9 +782,9 @@ void FC showProbeNames(int showAll) if (_stricmp( b->what, b2->what)) continue; // name different, skip it if (b2->ba_flags & RFINP ? inB : runB) // same; ok if 1st input basAnc or 1st run basAnc with name - printf( msg( NULL, MH_U0025, //"\nInternal error: Ambiguous class name '%s':\n" - b->what, //" there are TWO %s rats with that .what. Change one of them.\n" - b->ba_flags & RFINP ? "input" : "run" ) ); // msg() gets disk text (and formats) -- printf does not. + printf( "%s", msg( NULL, MH_U0025, //"\nInternal error: Ambiguous class name '%s':\n" + b->what, //" there are TWO %s rats with that .what. Change one of them.\n" + b->ba_flags & RFINP ? "input" : "run" ) ); // msg() gets disk text (and formats) -- printf does not. else { b2->ba_flags |= RFLOCAL; // say this one displayed too diff --git a/src/curvemap.cpp b/src/curvemap.cpp index 8e6446cff..d006d8b80 100644 --- a/src/curvemap.cpp +++ b/src/curvemap.cpp @@ -519,7 +519,6 @@ PERFORMANCEMAP* PMGRIDAXIS::pmx_GetPERFMAP() const //----------------------------------------------------------------------------- /*virtual*/ void PMGRIDAXIS::Copy( const record* pSrc, int options/*=0*/) { - options; pmx_type.Release(); record::Copy( pSrc, options); pmx_type.FixAfterCopy(); @@ -599,7 +598,6 @@ PERFORMANCEMAP* PMLOOKUPDATA::pmv_GetPERFMAP() const //----------------------------------------------------------------------------- /*virtual*/ void PMLOOKUPDATA::Copy( const record* pSrc, int options/*=0*/) { - options; pmv_type.Release(); record::Copy( pSrc, options); pmv_type.FixAfterCopy(); diff --git a/src/datfcns.cpp b/src/datfcns.cpp index 4c3342e08..d74530b00 100644 --- a/src/datfcns.cpp +++ b/src/datfcns.cpp @@ -40,7 +40,7 @@ RC FC dStr2MonDay( // convert string to month and day. caller has removed any q { // split into month and day tokens and deblank both ends of both tokens in place (modifies caller's buffer) while (isspaceW(*str)) // deblank beginning: advance ptr - *str++; + str++; char buf[30]; char * s1 = strncpy( buf, str, sizeof(buf)-1); // make a copy to modify. s1 will be start 1st token. buf[sizeof(buf)-1] = '\0'; diff --git a/src/dhwcalc.cpp b/src/dhwcalc.cpp index b94381727..056f8e2d4 100644 --- a/src/dhwcalc.cpp +++ b/src/dhwcalc.cpp @@ -702,7 +702,6 @@ DHWSYS::~DHWSYS() //------------------------------------------------------------------------------- /*virtual*/ void DHWSYS::Copy( const record* pSrc, int options/*=0*/) { - options; ws_dayUseName.Release(); record::Copy( pSrc, options); ws_dayUseName.FixAfterCopy(); @@ -1753,7 +1752,7 @@ RC DHWSYS::ws_DoHourDWHR() // current hour DHWHEATREC modeling (all DHWHEATRECs // ws_qDWHRWH = 0.f; // heat recovered to water heater inlet, Btu // ws_whUseNoHR = 0.; // check value: hour total hot water use w/o HR, gal // init'd by caller - int multiDraw = 0; + [[maybe_unused]] int multiDraw = 0; // int nTk = Top.tp_NHrTicks(); for (int iTk=ws_iTk0DWHR; iTk < ws_iTkNDWHR; iTk++) { DHWTICK& tk = ws_ticks[ iTk]; // DHWSYS tick info diff --git a/src/exman.cpp b/src/exman.cpp index e20bd2425..a65a3789d 100644 --- a/src/exman.cpp +++ b/src/exman.cpp @@ -694,7 +694,7 @@ RC FC exPile( // compile an expression from current input CSE_E(uniLimCt(fdTy, gotTy, _ermTx, &v)); // check limits & apply units, with errMsg suitable for compile time. below. if (gotTy == TYSI // return the constant value in destination. SI has 16 bit storage only - || gotTy == TYCH && choiDt & DTBCHOICB) // choice types with this bit on are 16 bits only + || (gotTy == TYCH && choiDt & DTBCHOICB) ) // choice types with this bit on are 16 bits only { SI iV = static_cast(v); *(SI*)pDest = iV; // return lo 16 bits of value @@ -1120,17 +1120,10 @@ RC addChafIf ( // conditionally register change flag in basAnc record for expr. ex->ext_whChafNal = nuNal; } -#if 1 // store info to allow locating rat member even if rat is moved to new location // (as can happen at reallocation) - WHERE* w = new (&ex->ext_whChaf[ex->ext_whChafN++]) WHERE(ancN, i, o); -#else - WHERE* w = &ex->ext_whChaf[ex->ext_whChafN++]; // point next available change-flag-where for expression - - w->rr_ancN = ancN; // store info to allow locating rat member - w->i = i; // ... even if rat is moved to new location - w->o = o; // ... (as can happen at reallocation) -#endif + // use placement new + /* WHERE* w = */ new (&ex->ext_whChaf[ex->ext_whChafN++]) WHERE(ancN, i, o); #endif return RCOK; } // addChafIf @@ -1437,10 +1430,12 @@ RC FC exInfo( // return info on expression # if (pTy) *pTy = ex->ext_ty; if (pv) + { if (ex->ext_ty==TYSI) - *(SI *)pv = (SI)(INT)ex->ext_v; + *(SI*)pv = (SI)(INT)ex->ext_v; else *pv = ex->ext_v; // caller cueval.cpp cupIncRef's pointer if string, 7-92. + } return RCOK; } // exInfo diff --git a/src/geometry.h b/src/geometry.h index 5766527a5..a28442241 100644 --- a/src/geometry.h +++ b/src/geometry.h @@ -78,7 +78,7 @@ class CPV3D CPV3D& operator =(const CPV3D& p) { x = p.x; y = p.y; z = p.z; return *this; } CPV3D& operator =(double v) - { x = y = z = v; } + { x = y = z = v; return *this; } operator double*() { return &x; } operator const double*() const { return &x; } diff --git a/src/hvac.cpp b/src/hvac.cpp index 4bcedb657..49860f8af 100644 --- a/src/hvac.cpp +++ b/src/hvac.cpp @@ -380,8 +380,8 @@ void ASHPConsistentCaps( // make air source heat pump heating/cooling capaciti // Data + class CHDHW /////////////////////////////////////////////////////////////////////////////// CHDHW::CHDHW( record* pParent) - : hvt_capHtgNetMin( 0.f), hvt_capHtgNetMaxFT( 0.f), hvt_tRiseMax( 0.f), - hvt_pParent( pParent) + : hvt_pParent( pParent), + hvt_capHtgNetMin( 0.f), hvt_capHtgNetMaxFT( 0.f), hvt_tRiseMax( 0.f) {} //----------------------------------------------------------------------------- CHDHW::~CHDHW() diff --git a/src/impf.cpp b/src/impf.cpp index d99a9b1c4..29b722a56 100644 --- a/src/impf.cpp +++ b/src/impf.cpp @@ -1106,7 +1106,7 @@ bool FC IMPF::readRec() // get next import file record in buffer and init to sc do // repeat if encounter end of buffer bufI2 += (USI)strcspn( buf + bufI2, "\r\n\f"); // advance to record terminating character (else end buffer) while ( (!buf[bufI2] // if got to end buffer - || buf[bufI2]=='\r' && !buf[bufI2+1]) // or to \r at end buffer (need \r\n together for correct line count) + || (buf[bufI2]=='\r' && !buf[bufI2+1])) // or to \r at end buffer (need \r\n together for correct line count) && readBuf() ); // read buffer full / if read any chars // (readBuf false if eof or buf full, incl record longer than buf) if (bufI1 >= bufI2) // if no chars read diff --git a/src/pgpak.cpp b/src/pgpak.cpp index fdc7ff67b..0bb560dd2 100644 --- a/src/pgpak.cpp +++ b/src/pgpak.cpp @@ -700,7 +700,7 @@ LOCAL USI pgcByto( const char **ps, USI *pnMax, const char *cods, SI bsF) if (!c) // if null after \ . break; // return nMax if (strchr( cods, c) // if c in chars given by caller - || bsF && c=='\\') // or \\ (non-leading if here) + || (bsF && c=='\\') ) // or \\ (non-leading if here) return n; // return bytes before the \ . ++s; // else point after \c } // and loop to look for next \ . diff --git a/src/pp.cpp b/src/pp.cpp index b1d9ed861..837c8091b 100644 --- a/src/pp.cpp +++ b/src/pp.cpp @@ -298,8 +298,8 @@ LOCAL void FC lisBufAppend( const char *p, int n=-1); LOCAL void FC lisBufOut( int n); LOCAL void FC lisWrite( char *p, int n); LOCAL int FC lisCmp( const char* s, int i, int* pPlace, int* pnl); -LOCAL int FC isFileLisLine( char *p); -LOCAL void FC lisBufInsert( int* pPlace, char *p, int n=-1); +LOCAL int FC isFileLisLine( const char *p); +LOCAL void FC lisBufInsert( int* pPlace, const char* p, int n=-1); /*=================== COMMAND LINE INTERFACE department ===================*/ @@ -2186,7 +2186,7 @@ LOCAL int FC lisCmp( // multi-line compare text to listing text } } // lisCmp //----------------------------------------------------------------------------------------------------------- -LOCAL int FC isFileLisLine( char *p) // 0 if listing line is error message, ----- separator, or #line +LOCAL int FC isFileLisLine( const char *p) // 0 if listing line is error message, ----- separator, or #line { return ( *p != '?' // is file line if not error message, && memcmp( p, "----", 4) // not separator, @@ -2230,13 +2230,13 @@ void FC lisInsertMsg( // insert error message in listing buffer LOCAL void FC lisBufInsert( // listing buffer inserter inner function int* pPlace, // subscript of place to insert, returned updated to end of inserted text - char *p, // text + const char *p, // text int n/*=-1*/) // length, default = use strlen { int place = *pPlace; if (n < 0) - n = static_cast(strlen(p)); + n = strlenInt(p); while (n) // may need repeated insertions for long message { @@ -2249,12 +2249,14 @@ LOCAL void FC lisBufInsert( // listing buffer inserter inner function place -= m; } +#if 0 if (place==0) // write direct if place is (now) at very beginning of buffer { lisWrite( p, n); n = 0; } else // move up tail of buffer and copy text into vacated space +#endif { int hole = min( n, LISBUFSZ - lisBufN); // smaller of req'd space, space avail at end buffer if (hole) // insurance @@ -2283,7 +2285,7 @@ LOCAL void FC lisBufInsert( // listing buffer inserter inner function // char fetch & tokenize for pp cmds //unused: LOCAL void FC ppUntok( void); -LOCAL SI FC ppScanto( char *set); +LOCAL SI FC ppScanto( const char* set); LOCAL void FC ppUncNdc( void); // error messages @@ -2420,7 +2422,7 @@ SI FC ppTok() while (c >= '0' && c < '0' + base); // 0-7, 0-9, or 0-f ppUncDc(); // unget last (non-digit) char ppTokty = CUTSI; // say is integer, value in ppSival - if ( base==10 && tem > 32767L // decimal: +- 32767 (no -32768) + if ( (base==10 && tem > 32767L) // decimal: +- 32767 (no -32768) || tem > 65535L ) // 0x or 0o: user beware of - ppErr( MH_P0070 ); // error message: "Number too large, truncated" @@ -2605,7 +2607,7 @@ void FC ppUncDc() // unget char returned by ppCDc } // ppUncDc //========================================================================== -LOCAL SI FC ppScanto( char *set) +LOCAL SI FC ppScanto( const char *set) // pass characters at ppCNdc level not in "set", for ppCDc @@ -2718,8 +2720,8 @@ LOCAL RC FC ppErv( 3) raw file line, 4) macro being expanded, right? */ - if ( ( (shoTx & 4) && ppcIsClarg // if cmd line arg requested - || (shoTx & 2) && !ppcIsClarg ) // if preproc cmd line req'd + if ( ( ((shoTx & 4) && ppcIsClarg) // if cmd line arg requested + || ((shoTx & 2) && !ppcIsClarg) ) // if preproc cmd line req'd && ppcBp != NULL ) // ... and is present { tex = ppcBp; // current preprocessor cmd line, if doing one @@ -2806,14 +2808,16 @@ x isf->line, isf->Name() ); // make up 'where': "(): Error/Warning: " text - if (shoFnLn) // if requested - if (ppcIsClarg) // if doing cmd line - snprintf( where, sizeof(where), "Command line: %s: ", - isWarn ? "Warning" : "Error" ); - else if (inDepth > 0 && isf) // if a file is open - snprintf( where, sizeof(where), "%s(%d): %s: ", - getFileName(isf->fileIx), isf->line, - isWarn ? "Warning" : "Error" ); + if (shoFnLn) // if requested + { + if (ppcIsClarg) // if doing cmd line + snprintf(where, sizeof(where), "Command line: %s: ", + isWarn ? "Warning" : "Error"); + else if (inDepth > 0 && isf) // if a file is open + snprintf(where, sizeof(where), "%s(%d): %s: ", + getFileName(isf->fileIx), isf->line, + isWarn ? "Warning" : "Error"); + } #endif From 07a936032f7aa5105b4e191d4a721b6df55f4cf7 Mon Sep 17 00:00:00 2001 From: Chip Barnaby Date: Mon, 13 Oct 2025 17:23:24 -0400 Subject: [PATCH 07/11] More clang fixes including use of promoted types in va_arg() --- src/ashwface.cpp | 10 ++++++---- src/ashwface.h | 2 +- src/cnloads.cpp | 2 +- src/cpgbuild.cpp | 48 ++++++++++++++++++++++-------------------------- src/cpgbuild.h | 2 +- src/cpnat.cpp | 8 ++++---- src/cuparse.cpp | 42 ++++++++++++++++++++++-------------------- src/cuparse.h | 2 +- src/cuparsex.h | 6 +++--- src/pgpak.cpp | 25 ++++--------------------- src/pgpak.h | 9 +++------ src/pp.cpp | 23 ++++++++++++++--------- src/shading.cpp | 3 +++ src/solar.cpp | 6 ++++-- src/sytb.cpp | 2 +- src/sytb.h | 2 +- src/vrpak.cpp | 10 +++++++--- src/wfpak.cpp | 29 ++++++++++++++++------------- src/yacam.cpp | 6 +++--- src/yacam.h | 2 +- 20 files changed, 118 insertions(+), 121 deletions(-) diff --git a/src/ashwface.cpp b/src/ashwface.cpp index fa3f1f0e8..cb441b7e2 100644 --- a/src/ashwface.cpp +++ b/src/ashwface.cpp @@ -175,16 +175,18 @@ bool CFSTYX::cfx_CalcRatings( //----------------------------------------------------------------------------- CFSTYX::CFSTYX( // build a CFS const char* id, // unique ID (max len = CFSIDLEN) - float _UcogNFRC, // externally calculated NFRC cog U-factor, Btuh/ft2-F - float _SHGCcogNFRC, // externally calculated NFRC cog SHGC + double _UcogNFRC, // externally calculated NFRC cog U-factor, Btuh/ft2-F + double _SHGCcogNFRC, // externally calculated NFRC cog SHGC ...) // add'l gap / layer info +// NOTE: double not float for _UcogNFRC and _SHGCcogNFRC for consistency +// with other numeric args (which will be promoted to double) // call = id, U, SHGC, layerID, gasID, gapT (inches), layerID, ... // layer order = outside -> inside { Clear(); FCSET( ID, id); - UcogNFRC = _UcogNFRC; - SHGCcogNFRC = _SHGCcogNFRC; + UcogNFRC = float(_UcogNFRC); + SHGCcogNFRC = float(_SHGCcogNFRC); va_list ap; va_start( ap, _SHGCcogNFRC); RC rc = RCBAD; diff --git a/src/ashwface.h b/src/ashwface.h index ce6e4e7e9..e414ba047 100644 --- a/src/ashwface.h +++ b/src/ashwface.h @@ -38,7 +38,7 @@ struct CFSTYX : public CFSTY float SHGCcogAW; // ASHWAT cog SHGC CFSTYX() { Clear(); } - CFSTYX( const char* id, float _UcogNFRC, float _SHGCcogNFRC, ...); + CFSTYX( const char* id, double _UcogNFRC, double _SHGCcogNFRC, ...); void Clear(); // wrappers for CFSTY mbrs that to facilitate C++ <-> DLL comparisons bool cfx_CalcRatings( float& Urat, float& SHGCrat); diff --git a/src/cnloads.cpp b/src/cnloads.cpp index 1576cce1e..ec35c60cf 100644 --- a/src/cnloads.cpp +++ b/src/cnloads.cpp @@ -1278,7 +1278,7 @@ RC ZNR::zn_AirRequest( // determine air requirement given rs_asSup orWarn("Flipped tSup RSYS='%s', tPln=%0.3f, tSup=%0.3f, tSP=%0.1f, tZn=%0.3f\n", rs->Name(), rs->rs_asOut.as_tdb, tSup0, zn_tzsp, tz); } - if (zn_hcMode != RSYS::rsmOFF && zn_tzsp > 0.f) + if (zn_hcMode == RSYS::rsmOFF && zn_tzsp > 0.f) orWarn("Inconsistent hcMode RSYS='%s', hcMode=%d, tSP=%0.1f, tZn=%0.3f\n", rs->Name(), zn_hcMode, zn_tzsp, tz); #endif diff --git a/src/cpgbuild.cpp b/src/cpgbuild.cpp index 97bb8d6f9..4f04094f2 100644 --- a/src/cpgbuild.cpp +++ b/src/cpgbuild.cpp @@ -75,7 +75,6 @@ LOCAL void pbLabel( SI pgfmt, SI row, SI col, SI wid, const char *label); //========================================================================= void CDEC pgbuildr( - /* declared new way for passing FLOATs 2-90. DOES *NOT* WORK: MSC 5.1 passes floats in variable arg list double. */ // Add text to a pgpak page per tables; optionally allocs, outputs (via cpnat.c), frees. @@ -83,12 +82,12 @@ void CDEC pgbuildr( CAUTION: if ptr ptr given but page is alloc here (row nz), ptr must contain NULL or valid, freeable DM ptr. */ RC *prc, /* If *prc is not RCOK, pgbuildr() does *NOTHING*; otherwise outcome of this operation is returned in *prc (non-RCOK if console interrupt, printer error, etc). */ - SI rows, /* Size of page to alloc, or row 0 if *ppp already alloc'd. */ - SI cols, /* .. */ - SI rOff, /* Row offset for *ALL* rows specified in all actions in this call: shifts display down w/o changing + int rows, /* Size of page to alloc, or row 0 if *ppp already alloc'd. */ + int cols, /* .. */ + int rOff, /* Row offset for *ALL* rows specified in all actions in this call: shifts display down w/o changing many table entries. Typical use: make blank space above title (idx'd methods). [ CAUTION: avoid both nz rOff and > 1 PGCUR in table rows. fixing this bug 2-90.] */ - char *title, /* NULL or Title to appear PGLJ at position (1+rOff,1). + const char *title, /* NULL or Title to appear PGLJ at position (1+rOff,1). " continued" is appended if table head repeated on continuation print page. Allow for row used by title in PBHEAD.val2 with PBTABLE, PBFILLREC. */ @@ -119,12 +118,6 @@ void CDEC pgbuildr( // *prc remains RCOK if allocation, addition, and output completed ok; else nz. Errors have been reported (using WRN). { - va_list argp; // Working pointer for variable args - USI meth; - SI keepgoing; - RC rc; - char *rp = nullptr; - char *tp; /* Size table -- !! MUST match PBxxxx method type defns in cpgbuild.c. Used to increment pointer through method driver tables. Currently not used by methods involving PBM_IDX (such as PB_TABCOL and PB_FILLREC), but they are in table anyway */ static char sizetab[] = { @@ -141,7 +134,10 @@ void CDEC pgbuildr( if (*prc != RCOK) return; + char *rp = nullptr; + /* Initialize */ + va_list argp; // Working pointer for variable args va_start( argp, title); /* some arguments to file-globals for use by internal subfunctions */ @@ -166,10 +162,10 @@ void CDEC pgbuildr( /* Loop over arguments */ - keepgoing = TRUE; /* Loop termination flag, tested at end of loop */ + bool keepgoing = true; /* Loop termination flag, tested at end of loop */ do { - rc = RCOK; /* no error yet this arg */ + RC rc = RCOK; /* no error yet this arg */ pbHd = va_arg( argp, PBHEAD *); /* Ptr to PBHEAD, or spec fcn. file-global used by callees. */ if (pbHd==NULL) continue; /* skip NULL args */ @@ -202,8 +198,8 @@ void CDEC pgbuildr( /* Other arguments: output per method */ { - meth = (pbHd->methopt) & PBMTHMASK; /* Formatting method */ - tp = (char *)pbHd->methtab; /* method table pointer, actual type depends on meth. */ + int meth = (pbHd->methopt) & PBMTHMASK; /* Formatting method */ + char* tp = (char *)pbHd->methtab; /* method table pointer, actual type depends on meth. */ if (meth & PBM_RP) /* method bit says rp arg follows */ rp = va_arg(argp, char *); /* Pick up record pointer */ /* pbIdxMth() and its callees also picks up additional arguments */ @@ -222,16 +218,16 @@ void CDEC pgbuildr( while ( ((PB_TEXT *)tp)->pgfmt != PBMETHEND ) { - SI wid = 0; - SI units, cvfmt; - SI off; - USI dt; + int wid = 0; + int units, cvfmt; + int off; + int dt; char *p; /* prefetch .pgfmt,.row,.col for cases where struct matches PBTEXT (all cases except those without .col, 2-90) */ - SI pgfmt = ((PB_TEXT *)tp)->pgfmt | PGGROW; /* pgpak format. PGGROW: say enlarge page if necess */ - SI row = ROWOFF( ((PB_TEXT *)tp)->row); /* ROWOFF: adds pbROff if not PGCUR-relative */ - SI col = ((PB_TEXT *)tp)->col; + int pgfmt = ((PB_TEXT *)tp)->pgfmt | PGGROW; /* pgpak format. PGGROW: say enlarge page if necess */ + int row = ROWOFF( ((PB_TEXT *)tp)->row); /* ROWOFF: adds pbROff if not PGCUR-relative */ + int col = ((PB_TEXT *)tp)->col; /* more common init */ const char* label = nullptr; // default no label: for shared case code @@ -297,17 +293,17 @@ void CDEC pgbuildr( cvfmt = ((PB_DATA *)tp)->cvfmt; /* get cvpak fmt */ offJoin: /* PBDATOFF/L join here */ if (dt==(USI)PBARGSI) /* on special value get dt */ - dt = va_arg( argp, USI); /* ...from pgbuildr arg list*/ + dt = va_arg( argp, int); /* ...from pgbuildr arg list*/ if (p==NULL) /* for NULL data ptr */ dt = DTUNDEF; /* show '?' (historical) */ /* NB if both in arg list, dt precedes data */ if (units==PBARGSI) /* spec value says */ - units = va_arg( argp, SI); /* get from arg list*/ + units = va_arg( argp, int); /* get from arg list*/ if (wid==PBARGSI) /* spec value says */ - wid = va_arg( argp, SI); /* get from arg list*/ + wid = va_arg( argp, int); /* get from arg list*/ if (cvfmt==PBARGSI) /* spec value says */ - cvfmt = va_arg( argp, SI); /* get from arg list*/ + cvfmt = va_arg( argp, int); /* get from arg list*/ if (p==PBOMITP) /* ptr value omits output & label */ { /* s is "" from above (write anyway for PGCUR) */ diff --git a/src/cpgbuild.h b/src/cpgbuild.h index 58a0b56a2..43e48a048 100644 --- a/src/cpgbuild.h +++ b/src/cpgbuild.h @@ -306,7 +306,7 @@ struct PB_DATOFFL /* code assumes same as PB_DATOFF + label at end */ /*------------------------- FUNCTION DECLARATIONS -------------------------*/ -void CDEC pgbuildr( char **ppp, RC *prc, SI rows, SI cols, SI rOffs, char *title, ...); +void CDEC pgbuildr( char **ppp, RC *prc, int rows, int cols, int rOffs, const char* title, ...); // CAUTION: any FLOATs in variable arg list are passed as doubles diff --git a/src/cpnat.cpp b/src/cpnat.cpp index 6f5d9755a..8e96b9555 100644 --- a/src/cpnat.cpp +++ b/src/cpnat.cpp @@ -179,7 +179,7 @@ f } /* pnSetFooter */ #endif /* FOOTERS */ //=========================================================================== -RC FC pnAlloc( char **ppp, SI rows, SI cols, int erOp) +RC FC pnAlloc( char **ppp, int rows, int cols, int erOp) /* allocate a pgpak PAGE for use thru cpnat.c */ /* clears per-table stuff: "continued" posn, # head rows */ @@ -219,10 +219,10 @@ void FC pnTitle( char **ppp, /* (used to put s in page) CAUTION info retained for only 1 page at a time */ - SI row, /* 0 or title row */ - SI col, /* 0 or title text left col if text given, + int row, /* 0 or title row */ + int col, /* 0 or title text left col if text given, or exact left col for "continued" if s is NULL */ - char *s ) /* title text, NULL for none */ + const char *s ) /* title text, NULL for none */ { thConRow = row; thConCol = col; /* strlen(s)+1 conditionally added below */ diff --git a/src/cuparse.cpp b/src/cuparse.cpp index 46f78207b..e0b9c7200 100644 --- a/src/cuparse.cpp +++ b/src/cuparse.cpp @@ -570,7 +570,7 @@ LOCAL SYTBH symtab = { NULL, 0 }; // many tentatively decl in cuparsex.h for [cumain.cpp 10-90 and now] cuprobe.cpp 12-91. /*--- CURRENT TOKEN INFO. Set mainly by toke(). Not changed by unToke(). */ - SI tokTy = 0; // current token type (CUT__ define; cuTok ret val) + int tokTy = 0; // current token type (CUT__ define; cuTok ret val) SI prec = 0; // "prec" (precedence) from opTbl[]. PR__ defines. SI nextPrec = 0; // "prec" of ungotten (ie next) token, ONLY valid after expTy()/expr()/unToke(). LOCAL SI lastPrec = 0; // "prec" of PRIOR token (0 at bof) NOT after unToke. @@ -682,9 +682,9 @@ LOCAL RC FC emitPtr( void** p); LOCAL RC FC emitStr(const char* s, int sLen); #endif LOCAL RC FC emiBufFull( void); -LOCAL SI FC tokeTest( SI tokTyPar); -LOCAL SI FC tokeIf2( SI tokTy1, SI tokTy2); -LOCAL SI CDEC tokeIfn( SI tokTy1, ... ); +LOCAL bool tokeTest( int tokTyPar); +LOCAL bool tokeIf2( int tokTy1, int tokTy2); +LOCAL bool tokeIfn( int tokTy1, ... ); LOCAL void FC cuptokeClean( CLEANCASE cs); LOCAL RC FC addLocalSyms( void); LOCAL const char* FC before( const char* tx, int aN); @@ -4107,52 +4107,54 @@ LOCAL RC FC emiBufFull( void) // pseudo-code buffer full handler //=========================================================================== -LOCAL SI FC tokeTest( SI tokTyPar) // get next token, return nz if it is token of specified type. +LOCAL bool tokeTest( int tokTyPar) // get next token, return nz if it is token of specified type. { return (toke() // get token, cuparse.cpp. sets cutok.cpp:cuToktx. == tokTyPar); // true if is specified token type } // tokeTest //=========================================================================== -SI FC tokeNot( SI tokTyPar) // get next token, return nz if it is NOT token of specified type. +bool tokeNot( int tokTyPar) // get next token, return nz if it is NOT token of specified type. { return (toke() // get token, cuparse.cpp. sets cutok.cpp:cuToktx. != tokTyPar); // false if is specified token type } // tokeNot //=========================================================================== -SI FC tokeIf( SI tokTyPar) // return nz if next token is token of specified type, else unget token. +bool tokeIf( int tokTyPar) // return nz if next token is token of specified type, else unget token. { if (toke() // get token, cuparse.cpp. sets cutok.cpp:cuToktx. == tokTyPar) // if is requested token type - return 1; + return true; unToke(); // wrong type. unget token (cuparse.cpp) - return 0; + return false; } // tokeIf //=========================================================================== -LOCAL SI FC tokeIf2( SI tokTy1, SI tokTy2) // return nz if next token is token of either specified type, else unget. +LOCAL bool tokeIf2( int tokTy1, int tokTy2) // return nz if next token is token of either specified type, else unget. { if ( toke() // get token, cuparse.cpp. sets cutok.cpp:tokTy. - == tokTy1 // if is requested token type + == tokTy1 // if is requested token type || tokTy==tokTy2 ) // or other requested type - return 1; // return TRUE + return true; // return TRUE unToke(); // wrong type. unget token (cuparse.cpp) - return 0; + return false; } // tokeIf2 //=========================================================================== -LOCAL SI CDEC tokeIfn( SI tokTy1, ...) // return nz if next token is of any type in 0-terminated list, else unget token. +LOCAL bool tokeIfn( int tokTy1, ...) // return nz if next token is of any type in 0-terminated list, else unget token. { - va_list list; SI thisArg; toke(); // get token, cuparse.cpp. sets cutok.cpp:tokTy. - thisArg = tokTy1; // 1st arg + + va_list list; va_start( list, tokTy1); // set up to fetch more args + + int thisArg{ tokTy1 }; while (thisArg > 0) // 0 (or -1) arg terminates list { if (tokTy==thisArg) // if token type matches - return 1; // say found - thisArg = va_arg( list, SI); // next arg (stdarg.h) + return true; // say found + thisArg = va_arg( list, int); // next arg (stdarg.h) } unToke(); // unget token (cuparse.cpp) - return 0; // not found + return false; // not found } // tokeIfn /*==================== VARIABLES for toke() - unToke() ====================*/ @@ -4189,7 +4191,7 @@ LOCAL void FC cuptokeClean([[maybe_unused]] CLEANCASE cs) // cleanup for toke - } // cuptokeClean //========================================================================== -SI FC toke() /* local token-getter -- cutok.cpp:cuTok + unary/binary resolution + +int toke() /* local token-getter -- cutok.cpp:cuTok + unary/binary resolution + symbol table lookup + other refinements */ /* sets: tokTy: token type: CUTxxx defines, cutok.h. diff --git a/src/cuparse.h b/src/cuparse.h index 0040f0425..646e2b5c0 100644 --- a/src/cuparse.h +++ b/src/cuparse.h @@ -21,7 +21,7 @@ RC FC exOrk( SI toprec, USI wanTy, USI choiDt, USI evfOkPar, const char* ermTx, RC FC itPile( PSOP *dest, USI sizeofDest); RC FC finPile( USI *pCodeSize); RC FC expTy( SI toprec, USI wanTy, const char* tx, SI aN); -SI FC toke(); +int toke(); void FC unToke(); RC FC cuAddItSyms( SI tokTyPar, SI casi, STBK *tbl, USI entLen, int op); diff --git a/src/cuparsex.h b/src/cuparsex.h index 642d28adb..4a418cdc1 100644 --- a/src/cuparsex.h +++ b/src/cuparsex.h @@ -20,7 +20,7 @@ /*----------------- cuparse.cpp's "mostly LOCAL" VARIABLES ----------------*/ /*--- CURRENT TOKEN INFO. Set mainly by toke(). Not changed by unToke(). */ -extern SI tokTy; // current token type (CUT__ define; cuTok ret val) +extern int tokTy; // current token type (CUT__ define; cuTok ret val) extern SI prec; // "prec" (precedence) from opTbl[]. PR__ defines. extern SI nextPrec; // "prec" of ungotten (ie next) token, only valid after expTy()/expr()/unToke(). //extern SI lastPrec; // "prec" of PRIOR token (0 at bof). @@ -73,8 +73,8 @@ RC FC dropSfs( SI k, SI n); RC CDEC emiKon( USI ty, void *p, SI inDm, char **pp); RC FC emit( PSOP op); RC FC emit2( SI i); -SI FC tokeNot( SI tokTyPar); -SI FC tokeIf( SI tokTyPar); +bool tokeNot( int tokTyPar); +bool tokeIf( int tokTyPar); // cuprobe.cpp RC FC probe(); diff --git a/src/pgpak.cpp b/src/pgpak.cpp index 0bb560dd2..c9133e3de 100644 --- a/src/pgpak.cpp +++ b/src/pgpak.cpp @@ -43,41 +43,24 @@ LOCAL SI FC pgGenrRc( SI, SI); LOCAL USI pgcByto( const char **ps, USI *pnMax, const char* cods, SI bsF); // no FC: has check_stack LOCAL USI FC pgcStrWid( const char *s, USI nMax, SI bsF); -#if 0 // no calls in CSE, 11-91. use pgalloce. -x //======================================================================== -x char * FC pgalloc( rows, cols) -x -x // Initialize a page for output, abort on error -x -x SI rows; // Number of rows in page (max value 255) -x SI cols; // Number of columns in page (max value 255) -x -x // Returns pointer to area allocated for page -x{ -x char *pp; -x -x pgalloce( rows, cols, &pp, ABT); -x return pp; -x} // pgalloc -#endif - //======================================================================== RC FC pgalloce( // Initialize a page for output with error handling, for pgalloc - SI rows, // Number of rows in page (max value 255) - SI cols, // # of columns (max 254) (note PP->cols is 1 larger 11-91) + int rows, // Number of rows in page (max value 255) + int cols, // # of columns (max 254) (note PP->cols is 1 larger 11-91) char **ppp, // POINTER TO where to return pointer int erOp ) // error action: ABT, WRN, etc // returns RCOK or RCBAD; pointer is returned via argument ONLY if ok. { - char *pp; /* Initial allocation includes space for line lengths, enhancement pointer values, and page buffer. [Space for enhancement flag values is not allocated until needed.] See pgwe() */ + char* pp{ nullptr }; if (dmal( DMPP( pp), PGSIZE( rows, cols), erOp | DMZERO) != RCOK) // dmpak.cpp return RCBAD; // if memory full (and not ABT), return error to caller + // appropriate uses of PP->cols changed to cols-1, or <= changed to <, when this added: many if's below. pgsetup( pp, rows, cols+1); // store rows, cols, init offset to segments, etc // cols+1: extra byte per row for \0 at row output, eg in pgprput.cpp, rob 11-91. diff --git a/src/pgpak.h b/src/pgpak.h index 3c518c772..238881a00 100644 --- a/src/pgpak.h +++ b/src/pgpak.h @@ -16,8 +16,6 @@ Caller keeps pointer (type char *, PAGE struct is private). PAGES can hold attribute/enhancement information with text. */ - // CSE variant 9-13-91: includes some txpak.h defns so that file is not needed. - // PAGE structure. NB pgpak:pgralloc() makes assumptions about order of "segments" in buffer; change with care. struct PAGE @@ -85,7 +83,6 @@ struct PAGE Duplicate define here is to cause error if bits not maintained to match in pgbuildr.h and pgpak.h. */ #define PBFILL 0x0100 /* Causes pgfille not pgw in certain pgbuildr methods; - see pgbuildr.h. rob 2-90. */ /*------------- GENERIC row/col values for pgw, pgwe, pgfille -------------*/ @@ -112,7 +109,7 @@ const int PGOPSTAY = EROP7; // restore "cursor" row-col after writing: so caller /*------------------------- FUNCTION DECLARATIONS -------------------------*/ // pgpak.cpp -extern RC FC pgalloce( SI, SI, char * *, int erOp); +extern RC FC pgalloce( int rows, int cols, char * *, int erOp); extern void FC pgfree( char * *); extern void FC pgDelrows( char **ppp, SI row, SI nrows); extern void FC pgw( char **, USI, SI, SI, const char *); @@ -154,9 +151,9 @@ extern RC FC pgVrPut( SI vrh, SI isFmt, char *pp, USI flags, SI row1, SI nro void FC pnSetVrh( SI vrh); void FC pnSetTxRows( SI lpp); void FC pnSetHeader( char **ppp, SI fmt, SI row, SI col); -RC FC pnAlloc( char **ppp, SI rows, SI cols, int erOp); +RC FC pnAlloc( char **ppp, int rows, int cols, int erOp); void FC pnFree( char **ppp); -void FC pnTitle( char **ppp, SI row, SI col, char *s); +void FC pnTitle( char **ppp, int row, int col, const char *s); void FC pnSetTh( SI thRows); RC FC pnPgIf( char **ppp, SI badness, SI x); RC FC pnPrPg( char **ppp, SI x); diff --git a/src/pp.cpp b/src/pp.cpp index 837c8091b..f442f94eb 100644 --- a/src/pp.cpp +++ b/src/pp.cpp @@ -2250,12 +2250,16 @@ LOCAL void FC lisBufInsert( // listing buffer inserter inner function } #if 0 - if (place==0) // write direct if place is (now) at very beginning of buffer - { - lisWrite( p, n); - n = 0; - } - else // move up tail of buffer and copy text into vacated space +x Code removed 10-2025 to allow p to be const char* +x lisWrite() modifies *p in place; if p pointed to a string literal +x that would trigger an exception. No exceptions have been seen. +x Conclusion: this code never executed / not needed. +x if (place==0) // write direct if place is (now) at very beginning of buffer +x { +x lisWrite( p, n); +x n = 0; +x } +x else // move up tail of buffer and copy text into vacated space #endif { int hole = min( n, LISBUFSZ - lisBufN); // smaller of req'd space, space avail at end buffer @@ -3288,12 +3292,13 @@ const int MAXVAL = 16384; // max #define value size. // start or end quoted text (re whether to decomment above) if (c=='"') // a quote ... - if (inQuotes==0) + { if (inQuotes==0) inQuotes++; // always opens "text" else if (afBs==0) - inQuotes = 0; // ends "text" only if not after \ + inQuotes = 0; // ends "text" only if not after backslash + } - // store char, count length. Unstored \ is overwritten next iteration. + // store char, count length. Unstored backslash is overwritten next iteration. if (n <= MAXVAL) // unless too long theVal[n] = (char)c; // store char else if (n==MAXVAL) // msg once per define only diff --git a/src/shading.cpp b/src/shading.cpp index 60e43c411..c20bac9d6 100644 --- a/src/shading.cpp +++ b/src/shading.cpp @@ -267,11 +267,14 @@ float WSHADRAT::SunlitFract( // Calculate sunlit fraction of rectangle shaded } /* subtract any lit rectangle and triangle below fin shadow */ if (NY < FBU) /* if some of bottom of win lit */ + { if (FY >= FBU) /* if less than full width lit */ AREA1 -= TRIA(FBU - NY); /* subtract bot near triangle */ else /* full wid (both bot corners) lit */ AREA1 -= W * (FBU - FY) /* subtact lit bottom rectangle */ + TRIA(FY - NY); /* and lit near triang above it */ + } + /* add in entire area as tho shaded (LAST for best precision: largest #) */ AREA1 += H * W; } diff --git a/src/solar.cpp b/src/solar.cpp index e57296f55..970ba757a 100644 --- a/src/solar.cpp +++ b/src/solar.cpp @@ -65,8 +65,11 @@ // values --> use ASHRAE. 11-15-00 // local functions +#if defined( REFGLSDOE2) static void RefGlsDOE2( double eta, float& trans, float& abso); +#else static void RefGlsASHRAE( double eta, float& trans, float& abso); +#endif static double DCToAzm( double dirCos[ 3]); //------------------------------------------------------------------------- @@ -1847,9 +1850,8 @@ void SLRSURF::Init( float tilt, // surf tilt (deg, 0=horiz up, 90=vert, 180=horiz down) float grRef, // ground reflectivity as seen by surface // (dimless, 0-1) - int options /*=0*/) // options (future) + [[maybe_unused]] int options /*=0*/) // options (future) { - options; ss_key = key; ss_azm = azm; ss_tilt = tilt; diff --git a/src/sytb.cpp b/src/sytb.cpp index 6b8235141..632f251d3 100644 --- a/src/sytb.cpp +++ b/src/sytb.cpp @@ -51,7 +51,7 @@ LOCAL SI FC rSyCmp( const STAE *p, const STAE *q); //=========================================================================== -RC FC syLu( SYTBH *st, char *id, BOO casi, SI *pTokty/*=NULL*/, void **pStb/*=NULL*/) +RC FC syLu( SYTBH *st, char *id, BOO casi, int *pTokty/*=NULL*/, void **pStb/*=NULL*/) // symbol table look up diff --git a/src/sytb.h b/src/sytb.h index 08c3939be..a1aa65eb3 100644 --- a/src/sytb.h +++ b/src/sytb.h @@ -48,7 +48,7 @@ struct SYTBH // symbol table header (base) structure const int DUPOK=EROP2; // no error (and no add) if same id, tokTy, casi. stbk match NOT checked! (size not known) /*------------------------- FUNCTION DECLARATIONS -------------------------*/ -RC FC syLu( SYTBH *sytbh, char *id, BOO casi, SI *pTokty=NULL, void **pStb=NULL); +RC FC syLu( SYTBH *sytbh, char *id, BOO casi, int* pTokty=NULL, void **pStb=NULL); RC FC syAdd( SYTBH *sytbh, SI tokTy, BOO casi, STBK* stbk, int op); RC FC syDel( SYTBH *sytbh, SI tokTy, BOO casi, BOO nearId, char *id, BOO uBad=FALSE, void **pStb=NULL); RC FC sySort( SYTBH *sytbh); diff --git a/src/vrpak.cpp b/src/vrpak.cpp index a5d5bb248..0fc77c790 100644 --- a/src/vrpak.cpp +++ b/src/vrpak.cpp @@ -694,7 +694,7 @@ LOCAL RC unsRun( UNS* onlyU); LOCAL int vrEvent( UNS* onlyU, UINT* pNxEv); LOCAL RC endVrCase( UNS* u); LOCAL int getWholeText( UNS* onlyU); -LOCAL RC vruOut( UNS* u, char* s); +LOCAL RC vruOut( UNS* u, const char* s); LOCAL RC vruHeadIf( UNS* u); LOCAL RC vruFoot( UNS* u); LOCAL RC vruWrite( UNS* u, const char* s, int n=-1); @@ -940,6 +940,7 @@ LOCAL int runRange() // Finally, check if doable runs found if (found1==0) // if found no vr's ready to go + { if (spl.voInfo->fName==NULL) // if there is no more input, must be done { // poss addl check: scan uns for all fStat's == -2 @@ -949,6 +950,7 @@ LOCAL int runRange() // presumably there are some fStat's == -1 (ready to open) // fStat == 0 (open) or > 0 (done) means caller didn't do vruNuHan / vruNuf. return 1; // could not open any files, or something is wrong + } return 0; // normal good return, o1 and o2 set. } // runRange @@ -1484,7 +1486,7 @@ LOCAL int getWholeText( UNS* onlyU ) // read entire text into buffer, return it return txLen; } // getWholeText //--------------------------------------------------------------------------------------------------------------------------- -LOCAL RC vruOut( UNS* u, char* s) // output text to report file with optional page formatting +LOCAL RC vruOut( UNS* u, const char* s) // output text to report file with optional page formatting // if a page-formatted file, supplies header at top each page and footer at bottom each page (form feed / enuf lf's). @@ -1768,10 +1770,12 @@ RC vrBufMore() // append additional data from spool file to unspool buffer n = spl.runO2 - spl.bufO2; // read only enuf to get to it: might save buf data next run needs int nAv = spl.buf2 - spl.p2; // bytes available in buffer if (n > nAv) // if too few bytes in buffer + { if (nAv >= 2048) // ... but at least 2048 bytes n = nAv; // limit read to what will fit buffer -- defer copy-back. else // space is < n and < 2048 - dropFront( UINT( spl.p - spl.p1)); // discard data at start of buf to make room for read. + dropFront(UINT(spl.p - spl.p1)); // discard data at start of buf to make room for read. + } // Discard all text up to p to be at an item boundary. if (n > spl.buf2 - spl.p2) // again check space in buffer n = spl.buf2 - spl.p2; // must be small buffer, reduce read to fit diff --git a/src/wfpak.cpp b/src/wfpak.cpp index 7c6a464b1..fe7873c5a 100644 --- a/src/wfpak.cpp +++ b/src/wfpak.cpp @@ -1082,8 +1082,8 @@ RC WDSLRHR::whs_GenSubhrRad1TRNSYS( // subhr interpolation, TRNSYS algorithm #endif // debug aid: track case being handled for msgs - const char* tag[scCOUNT] = { " ", " "}; #if defined( _DEBUG) +const char* tag[scCOUNT] = { " ", " "}; #define TAG( s) tag[ iC] = s #else // do nothing in release @@ -2121,37 +2121,41 @@ LOCAL RC FC decodeFld( // decode one by-column-number field to internal -- pot else // DTSI or DTFLOAT -- numeric { // initial syntax check - char *pNext = pBeg; // pointer to input text. Note already deblanked above - if (strchr( "+-", *pNext)) pNext++; // if sign present, pass it + const char *pNext = pBeg; // pointer to input text. Note already deblanked above + if (strchr( "+-", *pNext)) + pNext++; // if sign present, pass it if (!isdigitW(*pNext)) // if no digit, it is not a valid number rc |= err( erOp, // conditionally issue message. prefixes "Error:\n ". MH_R1102, // "Missing or invalid number at offset %d in %s %s" - (int)srcOff, what, which ); + srcOff, what, which ); else // has digit, finish decoding { if (dt==DTSI) // 16-bit integer { int tI = atoi(pBeg); // get value. C library function. *(SI *)dest = (SI)tI; // convert if necess (if 32-bit int), store - while (isdigitW(*pNext)) pNext++; // pass digits for final syntax check below + while (isdigitW(*pNext)) + pNext++; // pass digits for final syntax check below } else if (dt==DTFLOAT) // 32-bit floating point value { - double tD = strtod( pBeg, &pNext); // decode to double, return next char ptr. C library function. + char* str_end = nullptr; + double tD = strtod( pBeg, &str_end); // decode to double, return next char ptr. C library function. *(float *)dest = (float)tD; // convert to float and store. + pNext = str_end; // pt after chars converted (strtod return char* str_end) } else { - rc |= err( PWRN, // bad table. unconditional error. - MH_R1103, what ); // "Bad decoding table for %s in wfpak.cpp" - pNext = ""; // suppress error message just below + rc |= err( PWRN, MH_R1103, what ); // bad table. unconditional error. + // "Bad decoding table for %s in wfpak.cpp" + pNext = ""; // suppress error message just below } } - if (*pNext) // if number did not use all of input + if (*pNext) // if number did not use all of input rc |= err( erOp, MH_R1104, // "Unrecognized characters after number at offset %d in %s %s" "Unrecognized characters after number at offset %d in %s %s", - (int)srcOff, what, which ); + srcOff, what, which ); } *pEnd = cSave; // restore char after data srcOff += srcLen; @@ -2368,12 +2372,11 @@ RC WFILE::wf_CSWOpen( // open California CSW weather file rc = err( erOp, "file '%s' is not a valid CSW weather file", wfName); WStr city, state, country; // temporaries - int nHL = 0; // # of header lines read if (!rc) { char ln[ WFMAXLNLEN]; // big enuf RC rc1; int bSeenHourlyData = FALSE; // set 1 when "Hourly Data" encountered - for (nHL=0; ; nHL++) + for (int nHL=0; ; nHL++) { // read header line-by-line int len = yac->line( ln, sizeof( ln), IGN); if (len < 0) diff --git a/src/yacam.cpp b/src/yacam.cpp index 3ddc1de47..56405d506 100644 --- a/src/yacam.cpp +++ b/src/yacam.cpp @@ -491,7 +491,7 @@ state -------- -------- -------- -------- -------- -------- -------- ------- else ct=7; // perform action for char type in state - char savc = NULL; + char savc{ '\0' }; int reDo; do { @@ -627,7 +627,7 @@ static const unsigned char asTab[ 5][9] = // [state][ct] { // get and classify character // Note extra char types inherited from toke() // retained for possible future use, 6-21-05 - char c; + char c{ '\0' }; if (ppBuf) { c= **ppBuf; if (c == '\0') @@ -710,7 +710,7 @@ int YACAM::line( // return current line // returns -1 if clean EOF before 1st char // else >= 0 = line length { - char c = NULL; + char c{ '\0' }; int iC; for (iC=0; iC < lineSz; iC++) { c = getC( erOp); diff --git a/src/yacam.h b/src/yacam.h index 350a6c0e5..ac8399aec 100644 --- a/src/yacam.h +++ b/src/yacam.h @@ -120,7 +120,7 @@ struct CSVItem // one item (column) class CSVGen { CSVItem* cg_pCI; // array of CSVItems - int cg_iUx; // unit system + // int cg_iUx; // TODO unit system public: CSVGen(CSVItem* pCI) : cg_pCI(pCI) {} From d8cc2a166d78f3efabf8a7f38ba8bd430a8b9f87 Mon Sep 17 00:00:00 2001 From: Chip Barnaby Date: Tue, 14 Oct 2025 15:59:41 -0400 Subject: [PATCH 08/11] More clang fixes; rework anc special copy c'tor --- src/ancrec.cpp | 3 +- src/ancrec.h | 59 +++++++------------ src/cnguts.cpp | 3 +- src/cul.cpp | 13 ++--- src/cuprobe.cpp | 10 ++-- src/pgpak.cpp | 151 ++++++++++++++++++++---------------------------- src/pgpak.h | 20 +++---- src/shading.cpp | 2 +- src/wfpak.cpp | 8 +-- 9 files changed, 115 insertions(+), 154 deletions(-) diff --git a/src/ancrec.cpp b/src/ancrec.cpp index 135bda7b6..faf027b88 100644 --- a/src/ancrec.cpp +++ b/src/ancrec.cpp @@ -845,7 +845,7 @@ basAnc::basAnc() // default c'tor (for derived copy c'tor memset( (char *)this+SZVFTP, 0, sizeof(*this)-SZVFTP); // SZVFTP: virtFcnTblPtr: cnglob.h. } // basAnc::basAnc //--------------------------------------------------------------------------------------------------------------------------- -basAnc::basAnc( int flags, SFIR * _fir, USI _nFlds, const char * _what, USI _eSz, RCT _rt, USI _sOff, const CULT* pCULT, int dontRegister/*=0*/ ) +basAnc::basAnc( int flags, SFIR * _fir, USI _nFlds, const char * _what, USI _eSz, RCT _rt, USI _sOff, const CULT* pCULT, bool dontRegister/*=false*/ ) { memset( (char *)this+SZVFTP, 0, sizeof(basAnc)-SZVFTP); // zero all basAnc members but virtFcnTblPtr at front ba_flags = flags; @@ -858,6 +858,7 @@ basAnc::basAnc( int flags, SFIR * _fir, USI _nFlds, const char * _what, USI _eSz mn = 1; // min record subscript 1 (overwritten with 0 if static) // ptr() = 0; // is done in derived class constructor (deriv vf not avail here; ptr is pure!) ba_pCULT = pCULT; // pointer to associated input CULT table, nullptr = unknown + // ba_probeModernizeTable = nullptr; // done by memset if (!dontRegister) regis(); // conditionally include anchor for nextAnc() iteration } // basAnc::basAnc diff --git a/src/ancrec.h b/src/ancrec.h index 4e331b1ad..dc94f2573 100644 --- a/src/ancrec.h +++ b/src/ancrec.h @@ -4,18 +4,6 @@ // ancrec.h: record and record anchor base class definitions for cse - -// before #include, #define NEEDLIKECTOR if including file calls the anc like-another constructor - - -//************************ -// unsuccessful OPTIONS -//************************ - - -//--------------------------------------------------------------------------------------------------------------------------- - - #ifndef ANCREC_H // endif at end file #define ANCREC_H @@ -91,7 +79,7 @@ class basAnc // base class for record anchors: basAnc // nullptr if none; see cuprobe.cpp basAnc(); - basAnc( int flags, SFIR * fir, USI nFlds, const char * what, USI eSz, RCT rt, USI sOff, const CULT* pCult, int dontRegister=0 ); + basAnc( int flags, SFIR * fir, USI nFlds, const char * what, USI eSz, RCT rt, USI sOff, const CULT* pCult, bool dontRegister=false ); void FC regis(); virtual ~basAnc(); // destroyed in deriv classes, to use vf virtual record* ptr() = 0; // access block ptr (in drv class: typed) @@ -101,6 +89,7 @@ class basAnc // base class for record anchors: basAnc virtual const record& rec(TI i) const = 0; // ditto const virtual record* GetAtSafe( int i) const = 0; // typed pointer to ith record or NULL virtual void* recMbr(TI i, USI off) = 0; // point record i member by offset + virtual basAnc* CloneForType(const char* what, int _flags, BP _ownB) const = 0; void * FC recFld(TI i, SI fn); // point record i member by FIELD # 3-92 RC FC al( TI n, int erOp=ABT, BP _ownB=NULL); // allocate records block. destroys old recs. RC FC reAl( TI n, int erOp=ABT); // (re)allocate records block. keeps old recs <= n. @@ -340,12 +329,11 @@ class record // base class for records template class anc : public basAnc { public: - anc( const char *what, SFIR *sFir, USI nFlds, RCT rt, CULT* pCULT=nullptr) // cpp'tor used for static instances - : basAnc( 0, sFir, nFlds, what, sizeof(T), rt, offsetof( T, sstat), pCULT) + anc( const char *what, SFIR *sFir, USI nFlds, RCT rt, const CULT* pCULT=nullptr, bool dontregister=false) // cpp'tor used for static instances + : basAnc( 0, sFir, nFlds, what, sizeof(T), rt, offsetof( T, sstat), pCULT, dontregister) { p = 0; } - anc( const BP src, int flags, char *_what, // like-another constructor, - BP _ownB, int dontRegister=0 ); // code included only ifdef NEEDLIKECTOR. virtual ~anc(); // destroys records, and types anchor & its recs. + virtual anc* CloneForType(const char* _what, int _flags, BP _ownB) const; T* p; // typed pointer to record array storage block virtual T* GetAtSafe( int i) const // typed pointer to ith record or NULL @@ -428,27 +416,24 @@ template class anc : public basAnc rp <= (record *)( (char *)ptr() + eSz*n ); \ IncP( DMPP( rp), eSz) ) \ if (((record *)rp)->r_status > 0) + //============================================================================= -#ifdef NEEDLIKECTOR // define where this constructor is USED: avoids generating for classes where not used. - -template anc::anc( const BP src, int flags, char *_what, BP _ownB, int dontRegister/*=0*/) - - // like-another-with-records-deleted constructor. - - // Generates the same derived class as src, using generic code; assumes size of all anc's is the same. - -{ // for subsidiary types anchor, cul.cpp::ratTyR, 2-92; only used for one (arbitrary) T. - // must copy: virt fcns, fir,nFlds,eSz,sOff,rt. - memcpy( this, src, sizeof(anc) ); // bitwise copy ALL, to incude virt fcn table ptr. - ancN= nAl= n= 0; p= 0; tyB= 0; // clear what don't want: anchor #, records, ul stuff. - mn = 1; // mn = 1 when no records allocated even if will be static - ba_flags = flags; what = _what; ownB = _ownB; // store members given by caller - if (!dontRegister) - regis(); // conditionally include in nextAnc iteration. - // CAUTION: don't regis() tyB's or any dm anc's without - // adding unregister logic to destructor, 10-93. -} // anc::anc -#endif // NEEDLIKECTOR +template anc* anc::CloneForType( // copy c-tor-ish re creating anc for DEFTYPE + const char*_what, // new 'what' -- generally " type" (in DM) + int _flags, // flags + BP _ownB) const // owner +{ + + // make new anc with data from *this + // combined with defaults from anc::anc and basAnc::basAnc + anc* pC = new anc(_what, fir, nFlds, rt, ba_pCULT, true); + + pC->ba_flags = _flags; // caller specific values + pC->ownB = _ownB; + + return pC; + +} // anc::CloneForType //------------------------------------------------------------------------------------------------------------------------- template anc::~anc() // destroy anchor: destroy its records and types. diff --git a/src/cnguts.cpp b/src/cnguts.cpp index b10b94af2..bb2abb5f4 100644 --- a/src/cnguts.cpp +++ b/src/cnguts.cpp @@ -2176,9 +2176,8 @@ void LOCAL accumulatorsAccum( } // accumulatorsAccum //----------------------------------------------------------------------------- RC ACCUMULATOR::acm_CkF( - int options) + [[maybe_unused]] int options) { - options; return RCOK; } // ACCUMULATOR::acm_CkF diff --git a/src/cul.cpp b/src/cul.cpp index b71cca9d4..596f97950 100644 --- a/src/cul.cpp +++ b/src/cul.cpp @@ -50,9 +50,7 @@ /*------------------------------- INCLUDES --------------------------------*/ #include "srd.h" // SFIR; sFdtab; GetDttab -#define NEEDLIKECTOR // say this .cpp file needs anc like-another constructor: prevents generation for classes where not used. #include "ancrec.h" // record: base class for rccn.h classes; anc template definition. -#undef NEEDLIKECTOR #include "rccn.h" // SFI_ [VALNDT_] #include "msghans.h" // MH_S0201 MH_S0202 @@ -3624,7 +3622,7 @@ LOCAL void FC adjOwTi( BP b; for (CULT *cc = c-1; nxOwRat( ownB, c, &cc, &b, 0); ) // loop over basAncs owned by ownB { - for (SI i = 1; i <= b->n; i++) // loop records in basAnc b + for (TI i = 1; i <= b->n; i++) // loop records in basAnc b { record *e = &b->rec(i); // point to record i (ancpak.cpp) if (e->ownTi < minI) // if owner out of range of interest @@ -3645,8 +3643,6 @@ LOCAL RC FC ratTyR( BP b) // if basAnc does not have secondary basAnc for types if (b->tyB==0) // if this anc does not already have secondary anc for types, make one { - RC rc; - // generate constructor arguments: flags, what, ownB int flags = RFTYS | RFNOEX; // say is "types" anchor, disable expression expansion @@ -3657,14 +3653,15 @@ LOCAL RC FC ratTyR( BP b) // if basAnc does not have secondary basAnc for types BP _ownB = 0; if (b->ownB) // if basAnc is owned, then tyB's owner will be owners tyB { + RC rc; CSE_E( ratTyR(b->ownB) ) // CALL SELF now to be sure owner already has tyB: if added later, ptr wd not get here _ownB = b->ownB->tyB; } - // make anc of main anc's (ie same derived class): use special constructor (of an arbitrary T) - // that COPIES given anc INCLUDING VIRTUAL FCNS. Copies rt, eSz, sOff, etc; drops records, tyB. + // make anc of main anc's (ie same derived class): Copies rt, eSz, sOff, etc; drops records, tyB. // CAUTION: must not register w/o adding unregister to d'tor. - b->tyB = (BP)new anc( b, flags, _what, _ownB, 1 ); // construct copy w/ no records; do not register. ancrec.h. + b->tyB = b->CloneForType( _what, flags, _ownB); // construct copy w/ no records; do not register + if (!b->tyB) { // (known inconsistency: out of memory messages from diff --git a/src/cuprobe.cpp b/src/cuprobe.cpp index fa3cfe2a6..3fa619d28 100644 --- a/src/cuprobe.cpp +++ b/src/cuprobe.cpp @@ -359,16 +359,18 @@ RC PROBEOBJECT::po_FindMember() // parse and look up probe member name in po_inB // if not found, issue error message. syntax ok if here. if (!po_inB && !po_runB) // if found in neither input nor run records basAnc + { if (!m) // if first token of name - return perNx( MH_U0011, po_what, cuToktx); // "U0011: %s member '%s' not found" + return perNx(MH_U0011, po_what, cuToktx); // "U0011: %s member '%s' not found" else { // fancier error message for partial match - const char* foundPart = strncpy0( NULL, f1->fi_GetMName(), m+1); // truncate to Tmpstr - return perNx( MH_U0012, + const char* foundPart = strncpy0(NULL, f1->fi_GetMName(), m+1); // truncate to Tmpstr + return perNx(MH_U0012, //"U0012: %s member '%s%s' not found: \n" //" matched \"%s\" but could not match \"%s\"." - po_what, foundPart, cuToktx, foundPart, cuToktx ); + po_what, foundPart, cuToktx, foundPart, cuToktx); } + } // match found for current token. Done if end fir table member text; error if tables continue differently. diff --git a/src/pgpak.cpp b/src/pgpak.cpp index c9133e3de..43e882120 100644 --- a/src/pgpak.cpp +++ b/src/pgpak.cpp @@ -10,45 +10,30 @@ with arbitrary cursor moves and overwrites, then displayed/printed after fully p * PAGES are stored in dynamic memory (heap) (dmpak.cpp). * Caller keeps pointer (type char *, PAGE struct is private). */ -/* pgpak is in multiple files for flexible linking: - lib\pgpak.cpp screen/printer common base portion - [pgpak2.cpp not in CSE version: screen-only functions ] - [pgpak3.cpp not in CSE version: additional scrn-only fcn: pgscroll() ] - [pgpak4.cpp not in CSE version: used only in support programs ] - app\cpgprput.cpp printer only: pgprput() */ - /*------------------------------- INCLUDES --------------------------------*/ #include "cnglob.h" #include "pgpak.h" // public pgpak defs and decls, -/*-------------------------------- DEFINES --------------------------------*/ - -// #define PP ((PAGE *)pp) see pgpak.h -// struct PAGE ... see pgpak.h - -/*--- re \-codes that may be imbedded in text --- - NOTE: mcdef:gnc() discards \ characters (to allow hiding characters - from the preprocessor). Any \-codes embedded in mcdef input - text need to be \\ (eg \\n, \\Z) 6-10-89 */ +//--- re \-codes that may be imbedded in text --- #define HANS "" // 11-91 no \ codes other than \n for newline /*----------------------- LOCAL FUNCTION DECLARATIONS ---------------------*/ -LOCAL RC FC pgralloce( char * *, SI, SI); -LOCAL void FC pgsetup( char *, SI, SI); -LOCAL RC FC pgcleare( char **, int erOp); -LOCAL void FC pgerase( char **, SI); -LOCAL SI FC pgGenrRc( SI, SI); -LOCAL USI pgcByto( const char **ps, USI *pnMax, const char* cods, SI bsF); // no FC: has check_stack -LOCAL USI FC pgcStrWid( const char *s, USI nMax, SI bsF); +LOCAL RC FC pgralloce( char** ppp, int, int); +LOCAL void FC pgsetup( char* pp, int rows, int cols); +LOCAL RC FC pgcleare( char** pp, int erOp); +LOCAL void FC pgerase( char** pp, int rowbeg); +LOCAL int FC pgGenrRc( int rowOrCol, int rowOrColNext); +LOCAL USI pgcByto( const char **ps, USI *pnMax, const char* cods, bool bsF); +LOCAL USI FC pgcStrWid( const char *s, USI nMax, bool bsF); //======================================================================== RC FC pgalloce( // Initialize a page for output with error handling, for pgalloc int rows, // Number of rows in page (max value 255) int cols, // # of columns (max 254) (note PP->cols is 1 larger 11-91) - char **ppp, // POINTER TO where to return pointer + char** ppp, // POINTER TO where to return pointer int erOp ) // error action: ABT, WRN, etc // returns RCOK or RCBAD; pointer is returned via argument ONLY if ok. @@ -79,8 +64,8 @@ RC FC pgalloce( // Initialize a page for output with error handling, for pgall //======================================================================== LOCAL RC FC pgralloce( // Reallocate a page with additional or fewer rows, with error handling - char **ppp, // Pointer to pointer to page. Pointer is updated. - SI rowsnew, // New number of rows in page (max value 255) + char** ppp, // Pointer to pointer to page. Pointer is updated. + int rowsnew, // New number of rows in page (max value 255) int erOp ) // error action: ABT, WRN, etc // Does not eliminate enhancement flag lines which are no longer referenced. See note at beginning of file. @@ -88,21 +73,18 @@ LOCAL RC FC pgralloce( // Reallocate a page with additional or fewer rows, wit /* returns RCOK if ok, or non-0 on error such as memory full (and not ABT). On error, original block not gone -- *ppp must still be free'd. */ { - SI i; - SI rowsold, cols, delta; - char *p, *pp; - RC rc; + RC rc{ RCOK }; // Tables for sizes and offsets of each segment of page. Segments are: line length, line beg, and text. #define PGRTABLESIZE 3 - SI szold[PGRTABLESIZE], sznew[PGRTABLESIZE]; - SI offold[PGRTABLESIZE], offnew[PGRTABLESIZE]; + int szold[PGRTABLESIZE], sznew[PGRTABLESIZE]; + int offold[PGRTABLESIZE], offnew[PGRTABLESIZE]; // Working values - pp = *ppp; - rowsold = PP->rows; - cols = PP->cols; - delta = rowsnew - rowsold; + char* pp = *ppp; + int rowsold = PP->rows; + int cols = PP->cols; + int delta = rowsnew - rowsold; /* Set up tables of offsets to and sizes of various segments of pb. These tables allow convenient up- or down-shift of data as required. @@ -113,7 +95,7 @@ LOCAL RC FC pgralloce( // Reallocate a page with additional or fewer rows, wit sznew[0] = sznew[1] = rowsnew; sznew[2] = rowsnew*cols; offold[0] = offnew[0] = 0; - for (i = 1; i < PGRTABLESIZE; i++) + for (int i = 1; i < PGRTABLESIZE; i++) { offold[i] = offold[i-1] + szold[i-1]; offnew[i] = offnew[i-1] + sznew[i-1]; @@ -124,32 +106,32 @@ LOCAL RC FC pgralloce( // Reallocate a page with additional or fewer rows, wit if (delta < 0) { - for (i = 1; i < PGRTABLESIZE; i++) // shift lower + for (int i = 1; i < PGRTABLESIZE; i++) // shift lower { - p = (char *)PP->pb; + char* p = (char *)PP->pb; memmove( p+offnew[i], p+offold[i], sznew[i]); } } - rc = dmral( DMPP( pp), PGSIZE( rowsnew, cols), erOp); + rc |= dmral( DMPP( pp), PGSIZE( rowsnew, cols), erOp); if (rc) return rc; // memory full: nz fcn value, *ppp unchanged. *ppp = pp; // return good new location to caller pgsetup( pp, rowsnew, cols); // store rows, cols, set offsets to segs of buf, etc. if (delta > 0) { - p = (char *)PP->pb; - for (i = PGRTABLESIZE; --i > 0; ) // shift hier + char* p = (char *)PP->pb; + for (int i = PGRTABLESIZE; --i > 0; ) // shift hier memmove( p+offnew[i], p+offold[i], sznew[i]); pgerase( ppp, rowsold+1); // blank and init rows, local, below } - return RCOK; + return rc; } // pgralloce //========================================================================= LOCAL void FC pgsetup( // Set up various values in page structure - char *pp, // Pointer to already-allocated page - SI rows, // Number of rows in page (max value 255) - SI cols ) // Number of columns in page (max value 254) + char* pp, // Pointer to already-allocated page + int rows, // Number of rows in page (max value 255) + int cols ) // Number of columns in page (max value 254) // [does not alter PP->nenhance: preserved for pgralloc.] { @@ -178,7 +160,7 @@ LOCAL RC FC pgcleare( // Clear a whole page (set to all blanks) - char **ppp, // POINTER TO Pointer to page to clear: [may be updated -- page could move.] + char** ppp, // POINTER TO Pointer to page to clear: [may be updated -- page could move.] [[maybe_unused]] int erOp ) // error action for memory full // Fcn value RCOK if ok, other value if error and not ABT @@ -194,24 +176,21 @@ LOCAL RC FC pgcleare( } // pgcleare /*lint +e715 */ //========================================================================= -void FC pgDelrows( char **ppp, SI row1, SI nrows) // Delete rows from middle of page +void FC pgDelrows( char **ppp, int row1, int nrows) // Delete rows from middle of page // Moves any lower rows up, erases bottom. Adjusts PGCUR row if in/below deleted area. // for deleting printed part & keeping col heads of pgbuildr or crl table. { - char *pp; - SI rows, r, rowcount; - - pp = *ppp; // fetch page pointer - rows = PP->rows; + char* pp = *ppp; // fetch page pointer + int rows = PP->rows; if (row1 > rows) return; // insurance nrows = min( nrows, rows-row1+1); // insurance // move up rows below rows being deleted in all segments of PAGE (pgpaki.h) - r = row1 + nrows; - rowcount = PP->rows - r + 1; // # rows being moved + int r = row1 + nrows; + int rowcount = PP->rows - r + 1; // # rows being moved if (rowcount > 0) { memmove( LINELEN(row1), LINELEN(r), rowcount); @@ -234,18 +213,15 @@ void FC pgDelrows( char **ppp, SI row1, SI nrows) // Delete rows from middle of LOCAL void FC pgerase( // Erase all or lower part of a page char **ppp, // Pointer to pointer to page (dbl ptr so could realloc) - SI rowbeg ) // First row to erase; 1 for whole page. Erases to end. + int rowbeg ) // First row to erase; 1 for whole page. Erases to end. /* Resets rows rowbeg to end of page to [unenhanced] ' '. Page is not reallocated (i.e. it remains same size, same place). [Does not eliminate enhancement flag lines associated with erased lines (ok but may waste space; note at beginning of file).] */ { - char *pp; - SI rowcount; - - pp = *ppp; - rowcount = PP->rows - rowbeg + 1; + char* pp = *ppp; + int rowcount = PP->rows - rowbeg + 1; if (rowcount > 0) // insurance { memset( LINELEN(rowbeg), '\0', rowcount); @@ -291,7 +267,6 @@ RC FC pgwe( // Write to a page in memory, inner routine // returns RCOK or error code e.g. for out of memory { - char *pp; SI clwSave, rlwSave; SI nbyNl; // number of bytes to newline code \n, or end string SI wid; // columns (bytes less codes) of text to \n or end @@ -300,11 +275,10 @@ RC FC pgwe( // Write to a page in memory, inner routine SI nbyW; // # bytes to write: portion of nbyHan not out of page SI r1, c1, c9, over; USI pos; - RC rc; static USI k9999 = 9999; - pp = *ppp; // fetch page pointer (used by PP macro) - rc = RCOK; // no error + char* pp = *ppp; // fetch page pointer (used by PP macro) + RC rc{ RCOK }; // no error rlwSave = PP->rlw; clwSave = PP->clw; // for PGOPSTAY at return @@ -350,8 +324,8 @@ RC FC pgwe( // Write to a page in memory, inner routine col = pgGenrRc( col, PP->clw+1); //... // # bytes and display columns to \n - nbyNl = pgcByto( &s, &k9999, "n", FALSE); // # bytes to \n or end strng - wid = pgcStrWid( s, 9999, TRUE); // subtract \codes, stop at \n + nbyNl = pgcByto( &s, &k9999, "n", false); // # bytes to \n or end strng + wid = pgcStrWid( s, 9999, true); // subtract \codes, stop at \n // adjustment xe to column (or row) for RJ or centering switch (pos) @@ -392,7 +366,7 @@ RC FC pgwe( // Write to a page in memory, inner routine // determine run length, leave loop if 0, set end col if (!nbyNl) // if no input text left, leave this level of loop break; - nbyHan = pgcByto( &s, (USI*)&nbyNl, HANS, TRUE); /* # bytes [to enh change code or] to \\: + nbyHan = pgcByto( &s, (USI*)&nbyNl, HANS, true); /* # bytes [to enh change code or] to \\: breaks at \\ just to display only one \. */ // columns is same as bytes: no codes in this substring. PP->clw += nbyHan; // ending column (last written) @@ -457,34 +431,37 @@ RC FC pgwe( // Write to a page in memory, inner routine // another return above (NULL s) } // pgwe //========================================================================= -LOCAL SI FC pgGenrRc( // Resolve generic row/column values +LOCAL int FC pgGenrRc( // Resolve generic row/column values - SI rc, // Input row or column value - SI rcnext ) // Next row or column position to be written + int rowOrCol, // Input row or column value + int rowOrColNext ) // Next row or column position to be written // Returns actual row or column position implied by generic value { - if (rc > PGCURMIN) - rc = rcnext+rc-PGCUR; - return rc; + if (rowOrCol > PGCURMIN) + rowOrCol = rowOrColNext+rowOrCol-PGCUR; + return rowOrCol; } // pgGenrRc //========================================================================= void FC pgwrep( // Repeat write to a page in memory: used to draw lines, etc. - char **ppp, // Pointer to pointer to page -- may move + char** ppp, // Pointer to pointer to page -- may move USI fmt, // Format. See pgwe() above, and pgpak.h. - SI row, // row position for first char of string - SI col, /* col position for first char of string. Upper left corner is 1,1. - Any portion of string which is outside page area is ignored - except the page can grow at the bottom if PGGROW is included in fmt */ - const char *s, // string write: will be repeated as required to achieve length len. - SI len ) // Length of string to be written (max 132, not checked). + int row, // row position for first char of string + int col, // col position for first char of string. Upper left corner is 1,1. + // Any portion of string which is outside page area is ignored + // except the page can grow at the bottom if PGGROW is included in fmt + const char* s, // string write: will be repeated as required to achieve length len. + int len ) // Length of string to be written { - char stemp[134]; + char stemp[1000]; + + len = min(len, int( sizeof(stemp))-2); *stemp = '\0'; // null string in long buffer - pgw( ppp, fmt, row, col, - strpad( stemp,s,len) ); // appends s's to stemp to length len + strpad(stemp, s, len); + + pgw(ppp, fmt, row, col, stemp); } // pgwrep #if 0 // no calls 11-91 @@ -608,7 +585,7 @@ RC FC pgfille( // Copy text to a page in memory, handling word wrapping, with { while (1) // loop over runs [with same enhancements] { - nbyHan = pgcByto( &s, (USI*)&wl, HANS, TRUE); /* # bytes to [enh \ code or] end word + nbyHan = pgcByto( &s, (USI*)&wl, HANS, true); /* # bytes to [enh \ code or] end word (or \\: breaks up to display only 1 \) */ if (!nbyHan) // if no bytes, done word break; @@ -642,7 +619,7 @@ RC FC pgfille( // Copy text to a page in memory, handling word wrapping, with } // pgfille //========================================================================= -LOCAL USI pgcByto( const char **ps, USI *pnMax, const char *cods, SI bsF) +LOCAL USI pgcByto( const char **ps, USI *pnMax, const char *cods, bool bsF) // bytes to next \ code in given list, plus \\ special treatment if bsF @@ -691,7 +668,7 @@ LOCAL USI pgcByto( const char **ps, USI *pnMax, const char *cods, SI bsF) // two other returns above } // pgcByto //========================================================================= -LOCAL USI FC pgcStrWid( const char *s, USI nMax, SI bsF) +LOCAL USI FC pgcStrWid( const char *s, USI nMax, bool bsF) // string width: strlen less enhancement \ codes, stopping at nMax or at \n diff --git a/src/pgpak.h b/src/pgpak.h index 238881a00..628dfcd74 100644 --- a/src/pgpak.h +++ b/src/pgpak.h @@ -20,15 +20,15 @@ // PAGE structure. NB pgpak:pgralloc() makes assumptions about order of "segments" in buffer; change with care. struct PAGE { - SI rows, cols; // Number of rows and columns in page - SI rlw, clw; // 1-based position of last char put in page, maintained by pgwe(), can be outside page boundaries. - USI flags; // flags (defs just below): PGISUP, PGCON, . + int rows, cols; // Number of rows and columns in page + int rlw, clw; // 1-based position of last char put in page, maintained by pgwe(), can be outside page boundaries. + int flags; // flags (defs just below): PGISUP, PGCON, . // offsets relative to pb[0] ("Virtual Offsets") for 3 (formerly 5) "segments" of buffer // next 2 segments are 1 byte per row, offset is for 1-based subscript - SI llenvo; // bytes: "line lengths" (max used 1-based column (1 more byte avail for \0 in pgVrPut, 11-91)) - SI lbegvo; // bytes: line begs (min used 1-based col in row) + int llenvo; // bytes: "line lengths" (max used 1-based column (1 more byte avail for \0 in pgVrPut, 11-91)) + int lbegvo; // bytes: line begs (min used 1-based col in row) // next segment is full rows, offset for subscript = 1-based row*col - SI pgbvo; // offset to text buffer - rows*(cols+1) bytes. +1 for \0 added by rob, 11-91 + int pgbvo; // offset to text buffer - rows*(cols+1) bytes. +1 for \0 added by rob, 11-91 unsigned char pb[1]; // Beg of page buffer -- where -vo's point. }; @@ -38,7 +38,7 @@ struct PAGE //--- Useful macros #define PP ((PAGE *)pp) // for accessing PAGE pp when pp is declared as char * - #define PGSIZE(r,c) ( sizeof(PAGE) + (r)*((c)+3+1) - 1 ) // allocation size for # rows and cols; +1 for null 11-91 +#define PGSIZE(r,c) ( sizeof(PAGE) + (r)*((c)+3+1) - 1 ) // allocation size for # rows and cols; +1 for null 11-91 // c here is 1 less than stored .cols. #define LINELEN(r) ( PP->pb + PP->llenvo + (r) ) // points to line length for row #define LINEBEG(r) ( PP->pb + PP->lbegvo + (r) ) // .. beginning @@ -82,7 +82,7 @@ struct PAGE /*--- pgw fmt: Bit used by pgbuildr in pgpak format word. Duplicate define here is to cause error if bits not maintained to match in pgbuildr.h and pgpak.h. */ -#define PBFILL 0x0100 /* Causes pgfille not pgw in certain pgbuildr methods; +#define PBFILL 0x0100 // Causes pgfille not pgw in certain pgbuildr methods /*------------- GENERIC row/col values for pgw, pgwe, pgfille -------------*/ @@ -111,10 +111,10 @@ const int PGOPSTAY = EROP7; // restore "cursor" row-col after writing: so caller // pgpak.cpp extern RC FC pgalloce( int rows, int cols, char * *, int erOp); extern void FC pgfree( char * *); -extern void FC pgDelrows( char **ppp, SI row, SI nrows); +extern void FC pgDelrows( char** ppp, int row, int nrows); extern void FC pgw( char **, USI, SI, SI, const char *); extern RC FC pgwe( char **, USI, SI, SI, const char *, int erOp); -extern void FC pgwrep( char **, USI, SI, SI, const char *, SI); +extern void FC pgwrep( char** ppp, USI fmt, int row, int col, const char* s, int len); extern RC FC pgfille( char * *, USI, SI, SI, const char *, int erOp); extern SI FC pgnrows( char *,USI); extern SI FC pgcrow( char *); diff --git a/src/shading.cpp b/src/shading.cpp index c20bac9d6..c096b0b9e 100644 --- a/src/shading.cpp +++ b/src/shading.cpp @@ -515,7 +515,7 @@ RC SURFGEOM::gx_SetupShading( // shading calcs setup const CT3D* MT, // point transformation matrix // (e.g. re bldgAzm rotation) // NULL -> no transformation - int options /*=0*/) // options TBD + [[maybe_unused]] int options /*=0*/) // options TBD // add this surface to the Penumbra model // returns RCOK: success or no geometry specified // else RCBAD: bad geometry or addSurface fail diff --git a/src/wfpak.cpp b/src/wfpak.cpp index fe7873c5a..fb727917e 100644 --- a/src/wfpak.cpp +++ b/src/wfpak.cpp @@ -2374,9 +2374,8 @@ RC WFILE::wf_CSWOpen( // open California CSW weather file WStr city, state, country; // temporaries if (!rc) { char ln[ WFMAXLNLEN]; // big enuf - RC rc1; - int bSeenHourlyData = FALSE; // set 1 when "Hourly Data" encountered - for (int nHL=0; ; nHL++) + bool bSeenHourlyData{ false }; // set true when "Hourly Data" encountered + while (true) { // read header line-by-line int len = yac->line( ln, sizeof( ln), IGN); if (len < 0) @@ -2395,7 +2394,7 @@ RC WFILE::wf_CSWOpen( // open California CSW weather file if (IsBlank( key)) continue; // blank line: skip if (strMatch( key, "Hourly Data")) // beg of next section - { bSeenHourlyData = TRUE; // set to decode one more line + { bSeenHourlyData = true; // set to decode one more line continue; } if (bSeenHourlyData) @@ -2407,6 +2406,7 @@ RC WFILE::wf_CSWOpen( // open California CSW weather file } // decode heading values by name + [[maybe_unused]] RC rc1{ RCOK }; if (strMatch( key, "City")) city = val; else if (strMatch( key, "State")) From 92bd2d87e2de50facfbbddd1f3b4b74234ec6102 Mon Sep 17 00:00:00 2001 From: Chip Barnaby Date: Wed, 15 Oct 2025 16:39:02 -0400 Subject: [PATCH 09/11] Replace several char[] vars with CULSTR --- src/CNDTYPES.DEF | 5 --- src/CNFIELDS.DEF | 4 --- src/CNRECS.DEF | 8 ++--- src/cuprobe.cpp | 8 ----- src/shading.cpp | 1 - src/strpak.cpp | 2 +- src/wfpak.cpp | 57 +++++++++++++++++++++------------- test/ref-win32-msvc/wthr01.rep | 47 ++++++++++++++-------------- test/wthr01.cse | 3 +- 9 files changed, 66 insertions(+), 69 deletions(-) diff --git a/src/CNDTYPES.DEF b/src/CNDTYPES.DEF index 1e7c75732..4f583ed51 100644 --- a/src/CNDTYPES.DEF +++ b/src/CNDTYPES.DEF @@ -152,13 +152,8 @@ TOWLOADCASE -- "enum { tldMIN, tldSP, tldMAX }" // pointer to XFILE structure (xiopak.h), added 1-94 for use in WFILE. XFILEP -- "XFILE *" // -// arrays used in WFILE record, 1-94 -WFLOC -- "char[32]" // weather file location string (+ \0 + fill byte) -WFLID -- "char[18]" // weather file location id string ( + \0 + fill byte) - WFileFormat -- "enum WFileFormat { UNK=-1,BSGS=1,BSGSdemo,ET1,ET2,CSW,T24DLL,EPW }" // open wthr file type (comments: wfpak.h) -WFLOC2 -- "char[22]" // "location 2" field in ET1 weather files YACAMP -- "class YACAM *" WDYEARP -- "class WDYEAR *" diff --git a/src/CNFIELDS.DEF b/src/CNFIELDS.DEF index 161e3b7a9..e19ab1b2e 100644 --- a/src/CNFIELDS.DEF +++ b/src/CNFIELDS.DEF @@ -127,11 +127,7 @@ AHMODE AHMODE LMNONE UNNONE // air handler mode enum 3-92 TOWLOADCASE TOWLOADCASE LMNONE UNNONE // TOWERPLANT load case enum 9-92 COILUSED COILUSED LMNONE UNNONE // AH coil used 12-92 -WFLOC WFLOC LMNONE UNNONE // arrays used in WFILE record 1-94 -WFLID WFLID LMNONE UNNONE // .. - WFileFormat WFileFormat LMNONE UNNONE // open weather file type (see wfpak.h) -WFLOC2 WFLOC2 LMNONE UNNONE // "location 2" field in E10v1+ weather files YACAMP YACAMP LMNONE UNNONE WDYEARP WDYEARP LMNONE UNNONE diff --git a/src/CNRECS.DEF b/src/CNRECS.DEF index 9ec67e97b..9d363885b 100644 --- a/src/CNRECS.DEF +++ b/src/CNRECS.DEF @@ -796,8 +796,8 @@ RECORD WFILE "weatherFile" *RAT // weather file info, one static instance "Wfile *declare "int wf_IsPacked() const { return wFileFormat==BSGS || wFileFormat==BSGSdemo || wFileFormat==ET1 || wFileFormat==ET2; }" // Header info: from file hdr decode or computed from hourly - *r WFLOC loc // char loc[] Location (for ET, is loc 1 only: city etc). - *r WFLID lid // char lid[] Location ID + *r CULSTR loc // Location (for ET, is loc 1 only: city etc). + *r CULSTR lid // Location ID *r SI yr // Year of weather data (00 - 99, -1 if N/A) *r SI jd1 // Julian day of first weather record (-1 if not known) *r SI jdl // Julian day of last weather record (ditto) @@ -811,7 +811,7 @@ RECORD WFILE "weatherFile" *RAT // weather file info, one static instance "Wfile *f float tMainsMinYr // annual minimum cold water temp, F *r SI solartime // TRUE if file is in solar time //additional header items for ET1 file - *r WFLOC2 loc2 // char[] location 2 (state or country, etc) + *r CULSTR loc2 // location 2 (state or country, etc) *r SI isLeap // non-0 if weather file is for a leap year (Feb 29 counted in dates) -- possible future use *r SI firstDdm // month 1-12 of first design day in file *r SI lastDdm // month 1-12 of last design day in file @@ -832,7 +832,7 @@ RECORD WFILE "weatherFile" *RAT // weather file info, one static instance "Wfile // *array 12 *r float atmois // monthly aveage atmospheric moisture, for daylight calcs // TDV file header info - *f WFLOC wf_TDVFileTimeStamp // timestamp string + *f CULSTR wf_TDVFileTimeStamp // timestamp string *f CULSTR wf_TDVFileTitle // title string (identifies file CZ, fuel, vintage, ) //internal diff --git a/src/cuprobe.cpp b/src/cuprobe.cpp index 3fa619d28..491be7a49 100644 --- a/src/cuprobe.cpp +++ b/src/cuprobe.cpp @@ -661,14 +661,6 @@ LOCAL RC FC lopNty4dt( // for DT- data type, get TY- type and PSOP to load it f sz = 4; break; - case DTWFLOC: // char arrays used in WFILE, 1-94 - case DTWFLID: // .. - case DTWFLOC2: // 10-94 - lop = PSRATLODA; // record load char array: makes dm copy, leaves ptr in stack - ty = TYSTR; - sz = 4; - break; - case DTCULSTR: lop = PSRATLODS; // record load string: loads pointer to CULSTR chars and leaves in stack ty = TYSTR; diff --git a/src/shading.cpp b/src/shading.cpp index c096b0b9e..ecd592568 100644 --- a/src/shading.cpp +++ b/src/shading.cpp @@ -520,7 +520,6 @@ RC SURFGEOM::gx_SetupShading( // shading calcs setup // returns RCOK: success or no geometry specified // else RCBAD: bad geometry or addSurface fail { - options; gx_pnIdx = -1; // no associated Penumbra surface RC rc = RCOK; if (gx_sgDet && !gx_IsEmpty()) diff --git a/src/strpak.cpp b/src/strpak.cpp index a6f160705..f32db5ea4 100644 --- a/src/strpak.cpp +++ b/src/strpak.cpp @@ -31,7 +31,7 @@ static char Tmpstr[ TMPSTRSZ+2]; // buffer. // +2 extra bytes at end hold flag re overwrite check (obsolete? 7-10) static int TmpstrNx = 0; // Next available byte in Tmpstr[]. -// == CULTSTR == +// == CULSTR == // Persistent string type that can be manipulated in the CUL realm. // (e.g. user input data and expressions, probes etc.) // Implemented as indicies into a vector of std::string. diff --git a/src/wfpak.cpp b/src/wfpak.cpp index fb727917e..076e98d52 100644 --- a/src/wfpak.cpp +++ b/src/wfpak.cpp @@ -1725,7 +1725,9 @@ WFILE::~WFILE() record::Copy( pSrc, options); // verifies class (rt) same, copies whole derived class record. ancrec.cpp. + loc.FixAfterCopy(); wf_TDVFileTitle.FixAfterCopy(); + wf_TDVFileTimeStamp.FixAfterCopy(); yac = new YACAM(); // overwrite yac pointer, if any yacTDV = new YACAM(); @@ -1739,8 +1741,9 @@ void WFILE::wf_Init() // WFILE initialization function to call before each run // DO NOT memset to 0 here: would destroy record base class header members. { wFileFormat = UNK; - VZero( loc, sizeof( loc)); - VZero( lid, sizeof( lid)); + loc.Release(); + lid.Release(); + loc2.Release(); yr = -1; jd1 = -1; jdl = -1; @@ -1750,7 +1753,6 @@ void WFILE::wf_Init() // WFILE initialization function to call before each run elev = 0.f; taDbAvgYr = -999.f; solartime = FALSE; - VZero( loc2, sizeof( loc2)); isLeap = 0; firstDdm = 0; lastDdm = 0; @@ -1773,6 +1775,8 @@ void WFILE::wf_Init() // WFILE initialization function to call before each run { yac->close(); // insurance yac->init(); // say no file open } + + wf_TDVInitHdrInfo(); if (yacTDV) { yacTDV->close(); yacTDV->init(); @@ -1892,7 +1896,7 @@ struct WFHTAB USI hdrOffset; // offset to data item in header UCH hdrLen; // length of data item in header USI wfileOffset; // offset to data item in WFILE struct - UCH wfileLen; // length of item in WFILE struct -- added 10-94 to facilitate multiple header formats + UCH wfileLen; // length of item in WFILE struct }; #define WFO(m) offsetof(WFILE,m) // WFILE member offset macro for use for WFHTAB.wfileOffeeset #define WFS(m) (sizeof( ((WFILE *)0L)->m )) // WFILE member size macro for use for WFHTAB.wfileLen @@ -1972,8 +1976,8 @@ static WFHTAB wfhTab_BSGS[] = // ---header--- ---WFILE---- // dataType [#] offset & len offset & len { -{ DTCH, 1, 53, 30, WFOS(loc), }, // location -{ DTCH, 1, 83, 11, WFOS(lid), }, // location id +{ DTCULSTR, 1, 53, 30, WFOS(loc), }, // location +{ DTCULSTR, 1, 83, 11, WFOS(lid), }, // location id { DTSI, 1, 94, 2, WFOS(yr), }, // year, 2 digits { DTFLOAT,1, 96, 6, WFOS(lat), }, // latitude { DTFLOAT,1, 102, 7, WFOS(lon), }, // longitude @@ -2012,9 +2016,9 @@ static WFHTAB wfhTab_ET1[] = // -----header------ ---WFILE---- // dataType [#] offset & length offset & len { -{ DTCH, 1, E1OS(location1), WFOS(loc), }, // location 1 -{ DTCH, 1, E1OS(location2), WFOS(loc2), }, // location 2 -{ DTCH, 1, E1OS(locationID), WFOS(lid), }, // location id +{ DTCULSTR, 1,E1OS(location1), WFOS(loc), }, // location 1 +{ DTCULSTR, 1,E1OS(location2), WFOS(loc2), }, // location 2 +{ DTCULSTR, 1,E1OS(locationID), WFOS(lid), }, // location id { DTSI, 1, E1OS(wthrYear), WFOS(yr), }, // year, 4 digits { DTFLOAT,1, E1OS(latitude), WFOS(lat), }, // latitude { DTFLOAT,1, E1OS(longitude), WFOS(lon), }, // longitude @@ -2108,9 +2112,9 @@ LOCAL RC FC decodeFld( // decode one by-column-number field to internal -- pot char* pEnd = pBeg + srcLen; // ptr to 1st char after source data while (pEnd > pBeg && (!pEnd[-1] || isspaceW(pEnd[-1]))) // deblank end pEnd--; - char cSave = *pEnd; // save char after data + char cSave = *pEnd; // save char after data *pEnd = '\0'; // and replace it with terminull -- given fields are not terminated. - while (isspaceW(*pBeg)) // deblank start + while (isspaceW(*pBeg)) // deblank start pBeg++; if (dt==DTCH) // if a character field @@ -2118,6 +2122,12 @@ LOCAL RC FC decodeFld( // decode one by-column-number field to internal -- pot strncpy( (char *)dest, pBeg, destLen-1); // copy to dest with \0 at end ((char *)dest)[destLen-1] = '\0'; // .. } + else if (dt == DTCULSTR) + { + CULSTR* pS = static_cast(dest); + pS->Set(pBeg); + + } else // DTSI or DTFLOAT -- numeric { // initial syntax check @@ -2435,9 +2445,10 @@ RC WFILE::wf_CSWOpen( // open California CSW weather file if (!rc) { wFileFormat = CSW; // accept that the format is CSW // transfer location info (could be refined/improved) - strncpy0( loc, city.c_str(), sizeof( loc)); - strncpy0( loc2, state.c_str(), sizeof( loc2)); - strCatIf( loc2, sizeof( loc2), ", ", country.c_str()); + loc = city.c_str(); + char sTemp[200]; + strncpy0( sTemp, state.c_str(), sizeof( sTemp)); + loc2 = strCatIf( sTemp, sizeof( sTemp), ", ", country.c_str()); } else { yac->close( erOp); // close file if open, nop if not open @@ -2515,7 +2526,8 @@ RC WFILE::wf_TDVOpen( // open California Time of Day Valuation (TDV) file #define _C( s) s,sizeof( s) // helper re getLineCSV calls //---------------------------------------------------------------------------- void WFILE::wf_TDVInitHdrInfo() -{ memset( wf_TDVFileTimeStamp, 0, sizeof( wf_TDVFileTimeStamp)); +{ + wf_TDVFileTimeStamp.Release(); wf_TDVFileTitle.Release(); } // WFILE::wf_TDVInitHdrInfo //---------------------------------------------------------------------------- @@ -2540,7 +2552,7 @@ RC WFILE::wf_TDVReadHdr( int erOp) // read / decode TDV file header rc |= yacTDV->checkExpected( T1, "TDV Data (TDV/Btu)"); if (!rc) // time stamp - rc = yacTDV->getLineCSV( erOp, 0, "C", _C( wf_TDVFileTimeStamp), NULL); + rc = yacTDV->getLineCSV( erOp, 0, "S", &wf_TDVFileTimeStamp, NULL); if (!rc) { // title rc = yacTDV->getLineCSV( erOp, 0, "SC", &wf_TDVFileTitle, _C( T2), NULL); @@ -2679,9 +2691,9 @@ RC WFILE::wf_EPWOpen( // open EnergyPlus weather file RC rc = RCOK; // location (1st line) - char lineTag[ 200], xCity[ 100], xState[ 100], xCountry[ 100], xSource[ 100], xWMO[ 100]; - rc = yac->getLineCSV( erOp, isLeap, "CCCCCCFFFF", - _C( lineTag), _C( xCity), _C( xState), _C( xCountry), + char lineTag[ 200], xState[ 100], xCountry[ 100], xSource[ 100], xWMO[ 100]; + rc = yac->getLineCSV( erOp, isLeap, "CSCCCCFFFF", + _C( lineTag), &loc, _C( xState), _C( xCountry), _C( xSource), _C( xWMO), &lat, &lon, &tz, &elev, NULL); elev = LSItoIP( elev); // m -> ft @@ -2698,9 +2710,10 @@ RC WFILE::wf_EPWOpen( // open EnergyPlus weather file if (!rc) { wFileFormat = EPW; // accept that the format is CSW // transfer location info (could be refined/improved) - strncpy0( loc, xCity, sizeof( loc)); - strncpy0( loc2, xState, sizeof( loc2)); - strCatIf( loc2, sizeof( loc2), ", ", xCountry); + // loc, xCity, sizeof( loc)); + char sTemp[200]; + strncpy0( sTemp, xState, sizeof( sTemp)); + loc2.Set(strCatIf(sTemp, sizeof(sTemp), ", ", xCountry)); } else { yac->close( erOp); // close file if open, nop if not open diff --git a/test/ref-win32-msvc/wthr01.rep b/test/ref-win32-msvc/wthr01.rep index 5937058e3..43aa5f5cb 100644 --- a/test/ref-win32-msvc/wthr01.rep +++ b/test/ref-win32-msvc/wthr01.rep @@ -2,9 +2,9 @@ Annual User-defined Report - WF Name WF lat TOP lat WF lon TOP lon WF TZ TOP TZ WF elev TOP elev TDVDesc - -------------------------------------------------- ------ ------- -------- -------- ------ ------ -------- -------- ------------------------------ - CA_SACRAMENTO-EXECUTIVE-AP_724830S_STYP20.epw 38.510 38.510 -121.50 -121.50 -8.00 -8.00 23.0 23.0 Test TDV data + WF Name WF lat TOP lat WF lon TOP lon WF TZ TOP TZ WF elev TOP elev TDVDesc TDVTimeStamp + -------------------------------------------------- ------ ------- -------- -------- ------ ------ -------- -------- -------------------- ------------------------------ + CA_SACRAMENTO-EXECUTIVE-AP_724830S_STYP20.epw 38.510 38.510 -121.50 -121.50 -8.00 -8.00 23.0 23.0 Test TDV data Mon 30-Jun-25 09:36:47 am @@ -2485,7 +2485,7 @@ Subhourly User-defined Report, Mon 03-Aug ! Log for Run 001: -! CSE 0.927.0-rc2 for Win32 console +! CSE 0.927.0-rc2+64bit-fixes.d8cc2a16.8.dirty for Win32 console @@ -2692,7 +2692,8 @@ Input for Run 001: REPORTCOL colHead="TOP TZ" colVal=@top.timeZone colDec=2 colWid=6 REPORTCOL colHead="WF elev" colVal=@weatherFile.elev colDec=1 colWid=8 REPORTCOL colHead="TOP elev" colVal=@top.elevation colDec=1 colWid=8 - REPORTCOL colHead="TDVDesc" colVal=@weatherfile.tdvFileTitle colWid=30 + REPORTCOL colHead="TDVDesc" colVal=@weatherfile.tdvFileTitle colWid=20 + REPORTCOL colHead="TDVTimeStamp" colVal=@weatherfile.TDVFileTimeStamp colWid=30 # #define CSEBtuSF 1000 @@ -2783,9 +2784,9 @@ Input for Run 001: Annual User-defined Report - WF Name WF lat TOP lat WF lon TOP lon WF TZ TOP TZ WF elev TOP elev TDVDesc - -------------------------------------------------- ------ ------- -------- -------- ------ ------ -------- -------- ------------------------------ - CA_SACRAMENTO-EXECUTIVE-AP_724830S_STYP20.epw 38.510 38.510 -121.50 -121.50 -8.00 -8.00 23.0 23.0 Test TDV data + WF Name WF lat TOP lat WF lon TOP lon WF TZ TOP TZ WF elev TOP elev TDVDesc TDVTimeStamp + -------------------------------------------------- ------ ------- -------- -------- ------ ------ -------- -------- -------------------- ------------------------------ + CA_SACRAMENTO-EXECUTIVE-AP_724830S_STYP20.epw 38.510 38.510 -121.50 -121.50 -8.00 -8.00 23.0 23.0 Test TDV data Mon 30-Jun-25 09:36:47 am @@ -5258,7 +5259,7 @@ Subhourly User-defined Report, Mon 03-Aug ! Log for Run 002: -! CSE 0.927.0-rc2 for Win32 console +! CSE 0.927.0-rc2+64bit-fixes.d8cc2a16.8.dirty for Win32 console @@ -5274,9 +5275,9 @@ Input for Run 002: Annual User-defined Report - WF Name WF lat TOP lat WF lon TOP lon WF TZ TOP TZ WF elev TOP elev TDVDesc - -------------------------------------------------- ------ ------- -------- -------- ------ ------ -------- -------- ------------------------------ - CA_SACRAMENTO-EXECUTIVE-AP_724830S_STYP20.epw 38.510 38.510 -121.50 -121.50 -8.00 -8.00 23.0 23.0 Test TDV data + WF Name WF lat TOP lat WF lon TOP lon WF TZ TOP TZ WF elev TOP elev TDVDesc TDVTimeStamp + -------------------------------------------------- ------ ------- -------- -------- ------ ------ -------- -------- -------------------- ------------------------------ + CA_SACRAMENTO-EXECUTIVE-AP_724830S_STYP20.epw 38.510 38.510 -121.50 -121.50 -8.00 -8.00 23.0 23.0 Test TDV data Mon 30-Jun-25 09:36:47 am @@ -7749,7 +7750,7 @@ Subhourly User-defined Report, Mon 03-Aug ! Log for Run 003: -! CSE 0.927.0-rc2 for Win32 console +! CSE 0.927.0-rc2+64bit-fixes.d8cc2a16.8.dirty for Win32 console @@ -7765,9 +7766,9 @@ Input for Run 003: Annual User-defined Report - WF Name WF lat TOP lat WF lon TOP lon WF TZ TOP TZ WF elev TOP elev TDVDesc - -------------------------------------------------- ------ ------- -------- -------- ------ ------ -------- -------- ------------------------------ - CA_SACRAMENTO-EXECUTIVE-AP_724830S_STYP20.epw 38.510 38.510 -121.50 -121.50 -8.00 -8.00 23.0 23.0 Test TDV data + WF Name WF lat TOP lat WF lon TOP lon WF TZ TOP TZ WF elev TOP elev TDVDesc TDVTimeStamp + -------------------------------------------------- ------ ------- -------- -------- ------ ------ -------- -------- -------------------- ------------------------------ + CA_SACRAMENTO-EXECUTIVE-AP_724830S_STYP20.epw 38.510 38.510 -121.50 -121.50 -8.00 -8.00 23.0 23.0 Test TDV data Mon 30-Jun-25 09:36:47 am @@ -10240,7 +10241,7 @@ Subhourly User-defined Report, Mon 03-Aug ! Log for Run 004: -! CSE 0.927.0-rc2 for Win32 console +! CSE 0.927.0-rc2+64bit-fixes.d8cc2a16.8.dirty for Win32 console @@ -10257,18 +10258,18 @@ Input for Run 004: -! CSE 0.927.0-rc2 for Win32 console run(s) done: Thu 09-Oct-25 12: pm +! CSE 0.927.0-rc2+64bit-fixes.d8cc2a16.8.dirty for Win32 console run(s) done: Tue 14-Oct-25 4:1 pm ! Executable: d:\cse\builds\cse.exe -! 09-Oct-25 11: am (VS 14.29 3378176 bytes) (HPWH 1.26.0) +! 14-Oct-25 4:1 pm (VS 14.29 3392000 bytes) (HPWH 1.26.0) ! Command line: -x! -t1 wthr01 ! Input file: D:\cse\test\wthr01.cse ! Report file: D:\CSE\TEST\WTHR01.REP ! Timing info -- -! Input: Time = 0.21 Calls = 4 T/C = 0.0520 +! Input: Time = 0.19 Calls = 4 T/C = 0.0483 ! AutoSizing: Time = 0.00 Calls = 0 T/C = 0.0000 -! Simulation: Time = 2.44 Calls = 4 T/C = 0.6088 -! Reports: Time = 0.02 Calls = 4 T/C = 0.0040 -! Total: Time = 2.68 Calls = 1 T/C = 2.6750 +! Simulation: Time = 2.00 Calls = 4 T/C = 0.4988 +! Reports: Time = 0.01 Calls = 4 T/C = 0.0033 +! Total: Time = 2.22 Calls = 1 T/C = 2.2180 diff --git a/test/wthr01.cse b/test/wthr01.cse index 58ada653f..a7980f9d6 100644 --- a/test/wthr01.cse +++ b/test/wthr01.cse @@ -199,7 +199,8 @@ REPORT rpType = UDT rpFreq = YEAR rpCPL=-1 REPORTCOL colHead="TOP TZ" colVal=@top.timeZone colDec=2 colWid=6 REPORTCOL colHead="WF elev" colVal=@weatherFile.elev colDec=1 colWid=8 REPORTCOL colHead="TOP elev" colVal=@top.elevation colDec=1 colWid=8 - REPORTCOL colHead="TDVDesc" colVal=@weatherfile.tdvFileTitle colWid=30 + REPORTCOL colHead="TDVDesc" colVal=@weatherfile.tdvFileTitle colWid=20 + REPORTCOL colHead="TDVTimeStamp" colVal=@weatherfile.TDVFileTimeStamp colWid=30 #define CSEBtuSF 1000 From 57ce223bdb189d7e711f40eb274d9dd19015bb5c Mon Sep 17 00:00:00 2001 From: Chip Barnaby Date: Fri, 24 Oct 2025 11:21:46 -0400 Subject: [PATCH 10/11] Update all findRecbyNmXX() calls to basAnc::FindRecByName --- src/ancrec.cpp | 281 +++++++++++++++-- src/ancrec.h | 34 +- src/cgwthr.cpp | 2 +- src/cncult2.cpp | 2 +- src/cncult4.cpp | 77 ++--- src/cueval.cpp | 14 +- src/cul.cpp | 54 ++-- src/cuprobe.cpp | 7 +- src/dhwcalc.cpp | 2 +- src/impf.cpp | 12 +- src/msghans.h | 4 +- src/msgtbl.cpp | 4 +- test/2Zone.cse | 25 +- test/commands.cse | 4 +- test/ref-win32-msvc/2ZONE.REP | 523 ++++++++++++++++--------------- test/ref-win32-msvc/commands.rep | 28 +- 16 files changed, 676 insertions(+), 397 deletions(-) diff --git a/src/ancrec.cpp b/src/ancrec.cpp index faf027b88..c9962d11b 100644 --- a/src/ancrec.cpp +++ b/src/ancrec.cpp @@ -48,7 +48,8 @@ record::record(BP _b, TI i, SI noZ/*=0*/) // construct record i of basAnc b, z b->n++ : additional record in static array. CAUTION can be called from statSetup (til eliminated). */ - _b->validate("record::record"); // abort if base bad -- we depend on it for size + basAnc::ba_ValidateSafe(_b, "record::record"); // abort if base bad -- we depend on it for size + if (!noZ) // can be suppressed for data-init (static) records memset((char *)this + SZVFTP, 0, _b->eSz - SZVFTP); /* zero all members of DERIVED CLASS record except virtFcnTblPtr in 1st 2 or 4 bytes (ancrec.h define) */ @@ -130,7 +131,7 @@ int record::FldValInt(int fn) const //----------------------------------------------------------------------------- int record::IsNameMatch( const char* _name) const { - return !_stricmp( _name, Name()); + return _stricmp(_name, Name()) == 0; } // record::IsNameMatch //----------------------------------------------------------------------------- /*virtual*/ void record::Copy( // copy user and ul data and r_status from another record of same type @@ -141,8 +142,8 @@ int record::IsNameMatch( const char* _name) const if (!b || !pSrc) // (or gud? wd error here if init then destroyed) err( PABT, MH_X0051); // err msg "record::Copy(): unconstructed destination or !pSrc" #if defined( _DEBUG) - b->validate("Copy() dest"); // abort if records not well anchored - pSrc->b->validate("Copy() src"); + basAnc::ba_ValidateSafe(b, "Copy() dest"); // abort if records not well anchored + basAnc::ba_ValidateSafe(pSrc->b, "Copy() src"); #endif // bitwise copy members preceding name (not including internal members) @@ -981,11 +982,9 @@ RC FC basAnc::reAl( TI _n, int erOp/*=ABT*/) // allocate space for n (0=default // called automatically from basAnc::add if needed. // could use explicitly to expand to n spaces at once when n known, for speed & non-fragmentation. -/* #if 1: note: b4 2-95, This was named al() and called externally with intent of clearing! and allocating, - as well as from add() to expand. If any external calls intended to keep records, change to reAl().*/ { #ifdef DEBUG2 - if (validate("basAnc::reAl", erOp)) + if (basAnc::ba_ValidateSafe( this, "basAnc::reAl", erOp) != RCOK) return RCBAD; // check anchor #endif if (_n < 1) @@ -1038,7 +1037,7 @@ RC basAnc::add( // construct record i (0 = next). Allocs if nec. const char* _name /*=NULL*/) // optional name for added record { #ifdef DEBUG2 - if (validate("basAnc::add", erOp)) // check anchor + if (ba_ValidateSafe( this, "basAnc::add", erOp) != RCOK) // check anchor return RCBAD; #endif if (!i) // if we are to choose record number @@ -1053,12 +1052,7 @@ RC basAnc::add( // construct record i (0 = next). Allocs if nec. if ( i >= nAl // if (more) record spaces must be allocated (nAl is +1; i,n are not) || !ptr() ) // insurance { -#if 1 // add bigger chunks for big records, 9-3-2024 TI _n = max(i, nAl + max(5, 1024/eSz)); // new count: add 5 or 1K's worth (at least callers req'd rec #) -#else -0 UINT sz = (UINT)nAl*eSz + 1024; // new size in bytes to add 1 + 1K's worth of record spaces (nAl is +1) -0 TI _n = max( sz/eSz, UINT( i)); // add 1 + 1K's worth of spaces, or to req'd rec # if more. -#endif if (reAl(_n, erOp)) return RCBAD; // (re)alloc rec spaces 1.._n, init nAl, ptr(), space[0], etc. above. } @@ -1073,7 +1067,7 @@ RC basAnc::add( // construct record i (0 = next). Allocs if nec. //--------------------------------------------------------------------------------------------------------------------------- RC FC basAnc::del( TI i, int erOp/*=ABT*/) // delete (squeeze out) ith record { - if (validate("basAnc::del", erOp)) // check anchor ('this') vs its record block + if (ba_ValidateSafe( this, "basAnc::del", erOp) != RCOK) // check anchor ('this') vs its record block return RCBAD; desRec(i); // conditionally destroy the record being deleted for ( ; i < n; i++) // loop over following records except last @@ -1176,20 +1170,29 @@ int FC basAnc::ancNext( size_t &an, BP * _b) // (registered) record anchor iter return 0; } // basAnc::ancNext //--------------------------------------------------------------------------------------------------------------------------- -RC basAnc::validate( // validate an anchor: check self-consistency of anchor and its entry 0 +/*static*/ RC basAnc::ba_ValidateSafe( + const basAnc* _this, + const char* fcnName, // calling fcn name, for err msgs. + int erOp /*=ABT*/, // reporting control. ABT-->PABT, WRN-->PWRN here. + bool noStat /*=false*/) // false: caller's action OK on static-storage anchor. true: not ok. +{ + return _this == nullptr + ? err(erOp, MH_X0054, fcnName) // "%s() called for NULL object pointer 'this'". + : _this->ba_Validate(fcnName, erOp|PROGERR, noStat); + +} // basAnc::ba_ValidateSafe +//--------------------------------------------------------------------------------------------------------------------------- +RC basAnc::ba_Validate( // validate an anchor: check self-consistency of anchor and its entry 0 const char* fcnName, // calling fcn name, for err msgs. int erOp /*=ABT*/, // reporting control. ABT-->PABT, WRN-->PWRN here. - SI noStat /*=0*/ ) // 0: caller's action OK on static-storage anchor. nz: not ok. + bool noStat /*=false*/ ) const // false: caller's action OK on static-storage anchor. true: not ok. // if error, issues message, returns non-RCOK if not ABT { - record *p = ptr(); // fetch NULL or dm block ptr from derived class anchor + const record *p = ptr(); // fetch NULL or dm block ptr from derived class anchor erOp |= PROGERR; // any errors here are internal errors (cnglob.h) - if (this==nullptr) // test for NULL this - return err( erOp, MH_X0054, fcnName); // "%s() called for NULL object pointer 'this'". - if ((p && (p->rt != rt // check self-consistency: if bk alloc'd & rt does not match || p->b != this)) // or bk 0 doesn't point back at base || !(rt & RTBRAT) ) // or base rt not a RAT rt @@ -1199,10 +1202,43 @@ RC basAnc::validate( // validate an anchor: check self-consistency of anchor and return err( erOp, MH_X0056, fcnName); // "%s(): illegal use of static-storage anchor" return RCOK; // if here, all OK -} // basAnc::validate +} // basAnc::ba_Validate + + //--------------------------------------------------------------------------------------------------------------------------- -RC basAnc::findRecByNm1( // find record by 1st match on name, RCOK if found, no msg here. - // can and should all uses be changed to findRecByNmU ?? <<<< +RC basAnc::findRecByNm1( // find record by name and owner subscript (first match). No msg here. + // see also findRecByNmDefO(). + const char* _name, // name to look for + TI* _i, // NULL or receives subscript of entry if found + record** _r) // NULL or receives entry ptr if found +{ + + record* r1Old = nullptr; + + int iRec = 0; + + RC rcOld = findRecByNm1X(_name, &iRec, &r1Old); + + + RC rcNew = FindRecByName(this, _name, 0, _r, _i); + + bool rGood = !_r || (_r && *_r == r1Old); + + if (rcOld != rcNew || !rGood || (_i && iRec != *_i)) + { + record* r1NewX; + RC rcX = FindRecByName(this, _name, 0, &r1NewX); + err(PABT, "findRecByNm1 mismatch"); + } + + return rcNew; + +} + + +//--------------------------------------------------------------------------------------------------------------------------- +RC basAnc::findRecByNm1X( // find record by 1st match on name, RCOK if found, no msg here. + // can and should all uses be changed to findRecByNmU ?? <<<< const char* _name, // record name to look for TI *_i, // NULL or receives subscript of entry if found record **_r ) // NULL or receives entry ptr if found @@ -1211,7 +1247,7 @@ RC basAnc::findRecByNm1( // find record by 1st match on name, RCOK if found, no return RCBAD; // return NOT FOUND if called for NULL anc pointer (occurs re types if .tyB 0) record *r; RLUPTHIS(r) // loop over records, setting r to point to each good one - if (r->IsNameMatch( _name)) // if matches (disregarding unexpected excess chars 11-94) + if (r->IsNameMatch( _name)) // if matches { if (_i) *_i = r->ss; // found. return info if (_r) *_r = r; // .. @@ -1219,8 +1255,32 @@ RC basAnc::findRecByNm1( // find record by 1st match on name, RCOK if found, no } return RCBAD; // not found return } // basAnc::findRecByNm1 + +//--------------------------------------------------------------------------------------------------------------------------- +RC basAnc::findRecByNmU( // find record by name and owner subscript (first match). No msg here. + // see also findRecByNmDefO(). + const char* _name, // name to look for + TI* _i, // NULL or receives subscript of entry if found + record** _r) // NULL or receives entry ptr if found +{ + record* r1Old = nullptr; + + int iRec = 0; + + RC rcOld = findRecByNmUX(_name, &iRec, &r1Old); + + RC rcNew = FindRecByName(this, _name, frnUNIQUE, _r, _i); + + bool rGood = !_r || (_r && *_r == r1Old); + + if (rcOld != rcNew || !rGood || (_i && (*_i != iRec))) + err(PABT, "findRecByNmU mismatch"); + + return rcNew; + +} //--------------------------------------------------------------------------------------------------------------------------- -RC basAnc::findRecByNmU( // find record by unique name match. RCBAD not found, RCBAD2 ambiguous, no msgs here. +RC basAnc::findRecByNmUX( // find record by unique name match. RCBAD not found, RCBAD2 ambiguous, no msgs here. const char* _name, // record name to look for TI *_i, // NULL or receives subscript of entry if found record **_r ) // NULL or receives entry ptr if found @@ -1246,8 +1306,9 @@ RC basAnc::findRecByNmU( // find record by unique name match. RCBAD not found *_r = r1; // .. return RCOK; // good return } // basAnc::findRecByNmU + //--------------------------------------------------------------------------------------------------------------------------- -RC basAnc::findRecByNmO( // find record by name and owner subscript (first match). No msg here. +RC basAnc::findRecByNmOX( // find record by name and owner subscript (first match). No msg here. // see also findRecByNmDefO(). const char* _name, // name to look for TI ownTi, // required owner subscript (should be non-0) @@ -1269,10 +1330,66 @@ RC basAnc::findRecByNmO( // find record by name and owner subscript (first mat } return RCBAD; // not found return } // basAnc::findRecByNmO + //--------------------------------------------------------------------------------------------------------------------------- +RC basAnc::findRecByNmO( // find record by name and owner subscript (first match). No msg here. + // see also findRecByNmDefO(). + const char* _name, // name to look for + TI ownTi, // required owner subscript (should be non-0) + TI* _i, // NULL or receives subscript of entry if found + record** _r) // NULL or receives entry ptr if found +{ + record* r1Old = nullptr; + + int iRec = 0; + + RC rcOld = findRecByNmOX(_name, ownTi, &iRec, &r1Old); + + RC rcNew = FindRecByName(this, _name, ownTi, _r); + + if (rcOld != rcNew || (_r != nullptr && (r1Old != *_r || (*_r != nullptr && iRec != (*_r)->ss)))) + err(PABT, "findRecByNmO mismatch"); + + return rcNew; + +} +//---------------------------------------------------------------------------------------- RC basAnc::findRecByNmDefO( // find record by name, and owner if ambiguous - // Accepts unambiguous match with another owner; returns info for caller to do detailed err msg if ambiguous; no msg here. + // Accepts unambiguous match with another owner; + // returns info for caller to do detailed err msg if ambiguous; no msg here. + // DOUBLE CAUTION: following recoded 3-92 without specific test: + //// CAUTION: currently 1-92 does not check for multiple entries with same owner TI. + + const char* _name, // name to look for + TI ownTi, // default owner subscript + record** _r1, // NULL or rcvs entry ptr if any found; rcvs NULL if no match + record** _r2) // NULL or receives duplicate entry ptr if ambiguous +{ + + record* r1Old = nullptr; + record* r2Old = nullptr; + + RC rcOld = findRecByNmDefOX(_name, ownTi, &r1Old, &r2Old); + + RC rcNew = FindRecByName(this, _name, ownTi|frnACCEPTNONOWNER, _r1, nullptr, _r2); + + if (rcOld != rcNew || (_r1 != nullptr && r1Old != *_r1) || (_r2 != nullptr && r2Old != *_r2)) + { + RC rcNewX = FindRecByName(this, _name, ownTi|frnACCEPTNONOWNER, _r1, nullptr, _r2); + err(PABT, "findRecByNmDefO mismatch"); + } + + return rcNew; +} + + + +//--------------------------------------------------------------------------------------------------------------------------- +RC basAnc::findRecByNmDefOX( // find record by name, and owner if ambiguous + + // Accepts unambiguous match with another owner; + // returns info for caller to do detailed err msg if ambiguous; no msg here. // DOUBLE CAUTION: following recoded 3-92 without specific test: //// CAUTION: currently 1-92 does not check for multiple entries with same owner TI. @@ -1287,7 +1404,8 @@ RC basAnc::findRecByNmDefO( // find record by name, and owner if ambiguous { // add isOwnable check if it is possible for anchor to be non-ownAble, 2-92. if (_r1) *_r1 = NULL; // init to "not found" as opposed to "ambiguous" - if (this==nullptr) return RCBAD; // return NOT FOUND if called for NULL anc pointer (ocurs re types if .tyB 0) + if (this==nullptr) + return RCBAD; // return NOT FOUND if called for NULL anc pointer (ocurs re types if .tyB 0) SI oSeen=0, nHits=0; // no name matches found yet record *r, *r1=NULL, *r2=NULL; RLUPTHIS(r) // loop over records, setting r to point to each good one @@ -1306,7 +1424,112 @@ RC basAnc::findRecByNmDefO( // find record by name, and owner if ambiguous if (nHits==1) return RCOK; // unique match: found if (_r2) *_r2 = r2; // second found record address return RCBAD2; // nHits > 1: ambiguous -} // basAnc::findRecByNmDefO +} // basAnc::findRecByNmDefOX + +#if 0 +/*static*/ RC basAnc::FindRecByName( + const basAnc* _b, // basAnc in which to search + // may be nullptr (returns RCBAD) + const char* _name, // name to look for + TI ownerTIOpt, // options and/or required owner subscript + // + TI* pTi /*=nullptr*/, // NULL or receives subscript of entry if found + record** pRp /*=nullptr*/) // NULL or receives entry ptr if found + +{ + RC rc = FindRecByName(_b, _name, ownerTIOpt, pRp, pTi); + + return RC + + + + } + +} +#endif + +//--------------------------------------------------------------------------------------------------------------------------- +/*static*/ RC basAnc::FindRecByName( // inner find record by unique name match + const basAnc* _b, // basAnc in which to search + const char* _name, // record name to look for + int ownerTIOpt /*=0*/, // low bits = TI of owner (0=don't care) + // hi bits: + // frn1STMATCH: accept 1st match + // frnUNIQUE: check for uniqueness (search all entries) + // frnACCEPTNONOWNER: accept non-owner match when unambiguous name match + record **pr1 /*=nullpr*/, // nullptr or receives entry ptr if found + TI* pTi /*=nullptr*/, // nullptr or receives TI (subscript) of record found + record **pr2 /*=nullptr*/) // nullptr or receives 2nd entry found + + +// returns: found: RCOK, *pr1 set. +// no match: RCBAD, *pr1 nullptr +// ambiguous match: RCBAD2, *pr1 and *pr2 point to 1st 2 matching entries +{ + RC rc = RCBAD; + + record* r1{ nullptr }; // return values + record* r2{ nullptr }; + TI ti1{ 0 }; + + // Treat _b==nullptr as "not found" (RCBAD) + // WHY: occurs re DEFTYPE and _b->tyB==nullptr + // (there may be additional cases) + if (_b) // if no basAnc, return RCBAD + { + // bool b1stMatch = ownerTIOpt & frn1STMATCH implied by !(frnUNIQUE || frnACCEPTNONOWNER) + TI ownerTi = ownerTIOpt & frnTIMASK; + bool bUnique = ownerTIOpt & frnUNIQUE; + bool bAcceptNonOwner = ownerTIOpt & frnACCEPTNONOWNER; + record* r; + int nHits = 0; + bool ownerSeen = false; + RLUPGEN(*_b, r) // loop over records, setting r to point to each good one + { + if (!bAcceptNonOwner + || (!ownerSeen || (ownerTi != 0 && ownerTi == r->ownTi))) // if no owned match yet or correct owner + { + if (!r->IsNameMatch(_name)) + continue; // no name match + if (ownerTi != 0) + { if (r->ownTi == ownerTi) + { // owner matches + if (!ownerSeen && bAcceptNonOwner) + nHits = 0; // forget any name matches with wrong owner + ownerSeen = true; + } + else if (!bAcceptNonOwner) + continue; + } + + if (++nHits == 1) // if 1st match + { + r1 = r; // first found + ti1 = r->ss; + rc = RCOK; + if (!(bUnique || bAcceptNonOwner)) + break; + // else continue + } + else if (nHits == 2) // if 2nd match + { // 2nd found + r2 = r; + rc = RCBAD2; // bad (ambigous) return + break; + } + } + } + } + + // return results + if (pr1) + *pr1 = r1; + if (pTi) + *pTi = ti1; + if (pr2) + *pr2 = r2; + return rc; +} // basAnc::FindRecByName //----------------------------------------------------------------------------- const char* basAnc::getChoiTx( // return text of given value for a choice data type, for error messages int fn, // field number. rccn.h define, eg AHU_TSU. Field must have a "choicb" data type. diff --git a/src/ancrec.h b/src/ancrec.h index dc94f2573..a0170745e 100644 --- a/src/ancrec.h +++ b/src/ancrec.h @@ -82,7 +82,7 @@ class basAnc // base class for record anchors: basAnc basAnc( int flags, SFIR * fir, USI nFlds, const char * what, USI eSz, RCT rt, USI sOff, const CULT* pCult, bool dontRegister=false ); void FC regis(); virtual ~basAnc(); // destroyed in deriv classes, to use vf - virtual record* ptr() = 0; // access block ptr (in drv class: typed) + virtual record* ptr() const = 0; // access block ptr (in drv class: typed) virtual void** pptr() = 0; virtual void setPtr( record* r) = 0; virtual record& rec(TI i) = 0; // { return (record)((char *)ptr() + i*eSz); } // access record i @@ -100,12 +100,27 @@ class basAnc // base class for record anchors: basAnc static BP FC anc4n( USI an, int erOp=ABT); // access anchor by anchor # static RC FC findAnchorByNm( char *what, BP *b); static int FC ancNext( size_t &an, BP *_b); // iterate anchors - RC validate( const char* fcnName, int erOp=ABT, SI noStat=0); // check for valid anchor + static RC ba_ValidateSafe(const basAnc* _this, const char* fcnName, int erOp = ABT, bool noStat = false); + RC ba_Validate( const char* fcnName, int erOp=ABT, bool noStat=false) const; // check for valid anchor record* Get1stForOwner(int ss); RC findRecByNm1( const char* _name, TI *_i, record **_r); // find record by 1st match on name + RC findRecByNm1X( const char* _name, TI *_i, record **_r); // find record by 1st match on name + RC findRecByNmU( const char* _name, TI *_i, record **_r); // find record by unique name match + RC findRecByNmUX( const char* _name, TI *_i, record **_r); // find record by unique name match + RC findRecByNmO( const char* _name, TI ownTi, TI *_i, record **_r); // find record by name and owner subscript + RC findRecByNmOX( const char* _name, TI ownTi, TI *_i, record **_r); // find record by name and owner subscript + RC findRecByNmDefO( const char* _name, TI ownTi, record **_r1, record **_r2 ); // find record by name, and owner if ambiguous + RC findRecByNmDefOX( const char* _name, TI ownTi, record **_r1, record **_r2 ); // find record by name, and owner if ambiguous + + + static constexpr int frn1STMATCH = 0; + static constexpr int frnUNIQUE = 0x40000000; + static constexpr int frnACCEPTNONOWNER = 0x20000000; + static constexpr int frnTIMASK = 0x01ffffff; + static RC FindRecByName(const basAnc* _b, const char* _name, int ownerTIOpt=0, record** pr1=nullptr, TI* pTi=nullptr, record** pr2=nullptr); const char* getChoiTx( int fn, int options=0, SI chan=-1, BOOL* bIsHid=NULL) const; const char* culMbrIdTx(int fn) const; int culMbrArrayDim(int fn) const; @@ -363,7 +378,7 @@ template class anc : public basAnc } } // GetAtGud - virtual record* ptr() { return p; } // access block ptr (in base class / generic code) + virtual record* ptr() const { return p; } // access block ptr (in base class / generic code) virtual void** pptr() { return (void **)&p; } virtual void setPtr( record* r) { p = (T*)r; } virtual record& rec(TI i) { return p[i]; } // access record i in base/generic code @@ -402,13 +417,12 @@ template class anc : public basAnc //----- variant with condition #define RLUPC( B, rp, C) for (rp=(B).p+(B).mn; rp <= (B).p + (B).n; rp++) if (rp->r_status > 0 && (C)) -#if 0 -0 unused -0 //----- macro to loop over records of generic anchor (record type not known) (hook to change re skipping deleted records) -0 #define RLUPGEN( B, rp) for ( rp = (record *)( (char *)(B).ptr() + (B).eSz*(B).mn ); \ -0 rp <= (record *)( (char *)(B).ptr() + (B).eSz*(B).n ); \ -0 (char *)rp += (B).eSz ) \ -0 if (((record *)rp)->r_status > 0) +#if 1 + //----- macro to loop over records of generic anchor (record type not known) (hook to change re skipping deleted records) + #define RLUPGEN( B, rp) for ( rp = (record *)( (char *)(B).ptr() + (B).eSz*(B).mn ); \ + rp <= (record *)( (char *)(B).ptr() + (B).eSz*(B).n ); \ + IncP( DMPP( rp), (B).eSz) ) \ + if (((record *)rp)->r_status > 0) #endif //----- macro to loop over records of generic anchor in member fcn (hook to change re skipping deleted records) diff --git a/src/cgwthr.cpp b/src/cgwthr.cpp index 974c5b621..1cd2d8c92 100644 --- a/src/cgwthr.cpp +++ b/src/cgwthr.cpp @@ -553,7 +553,7 @@ RC DESCOND::dc_CkF() // check after input static void DCTauTest( int doy) { float ebnlist[] = { 150.f, 200.f, 250.f, 300.f, -1.f }; -float edflist[] = { 20.f, 30.f, 40.f }; +float edflist[] = { 20.f, 30.f, 40.f, -1.f }; DESCOND dc( &DcR, 1); dc.dc_doy = doy; diff --git a/src/cncult2.cpp b/src/cncult2.cpp index 0059cc687..2868211a3 100644 --- a/src/cncult2.cpp +++ b/src/cncult2.cpp @@ -1995,7 +1995,7 @@ RC ckRefPt( // check / access ref from one RAT to another record* p = NULL; // check argument - if (toBase->validate( "cncult2.cpp:ckRefPt", WRN)) + if (basAnc::ba_ValidateSafe( toBase, "cncult2.cpp:ckRefPt", WRN) != RCOK) rc = RCBAD; else { diff --git a/src/cncult4.cpp b/src/cncult4.cpp index ba23b96ea..e69eac119 100644 --- a/src/cncult4.cpp +++ b/src/cncult4.cpp @@ -511,35 +511,35 @@ RC RI::ri_oneRxp() // process one report or export for topRxp // topZn and topCol must be called first; buildUnspoolInfo must be called afterwards. { - RC rc=RCOK; + RC rc = RCOK; int isEx = isExport; // 1 for export, 0 for report const char* exrp = isEx ? "ex" : "rp"; // to insert in member names in error messages const char* exrePort = isEx ? "export" : "report"; // to insert in errmsgs -// get field texts for errMsgs. No errmsg (except in returned text) if value out of range. + // get field texts for errMsgs. No errmsg (except in returned text) if value out of range. - const char* tyTx = getChoiTx( RI_RPTY, 1); - const char* whenTy = strtprintf( "when %sType=%s", exrp, tyTx); + const char* tyTx = getChoiTx(RI_RPTY, 1); + const char* whenTy = strtprintf("when %sType=%s", exrp, tyTx); -// check RQD members set -- else can bomb with FPE + // check RQD members set -- else can bomb with FPE - if (CkSet( RI_RPTY)) + if (CkSet(RI_RPTY)) return RCBAD; // if not set, no run, terminate checking this report/export now -// recall entry time check function 1) as it has not been called for pre-stuffed default reports entries; -// 2) to recheck references (DELETE given after entry?)(if it checks any); and 3) general paranoia. + // recall entry time check function 1) as it has not been called for pre-stuffed default reports entries; + // 2) to recheck references (DELETE given after entry?)(if it checks any); and 3) general paranoia. if (!errCount()) // but if already have errors (hence no run), do not recall: - // would issue duplicate messages for any errors it detected. + // would issue duplicate messages for any errors it detected. if (ri_CkF()) // note this is the ckf for exports as well as reports return RCBAD; // bad. done with entry. -// default start and/or end days of report. Don't set nz b4 other checks as not allowed with some rpt types & freq's. -// and, doing here sets dates for monthly default reports. + // default start and/or end days of report. Don't set nz b4 other checks as not allowed with some rpt types & freq's. + // and, doing here sets dates for monthly default reports. - if ( rpFreq==C_IVLCH_M // monthly frequency: default days to start and end of run - || rpFreq==C_IVLCH_Y ) // annual frequency: this sets dates + if (rpFreq==C_IVLCH_M // monthly frequency: default days to start and end of run + || rpFreq==C_IVLCH_Y) // annual frequency: this sets dates { if (!rpDayBeg) rpDayBeg = Topi.tp_begDay; if (!rpDayEnd) rpDayEnd = Topi.tp_endDay; @@ -547,9 +547,9 @@ RC RI::ri_oneRxp() // process one report or export for topRxp else if (!rpDayEnd) // other frequencies; rpDayBeg is 0 if here and dates not used. rpDayEnd = rpDayBeg; // end day defaults to start day -// disallow condition for types without repeated conditional lines + // disallow condition for types without repeated conditional lines - int rpCondGiven = IsSet( RI_RPCOND); // 1 if rpCond entered by user, 0 if rpCond defaulted (to TRUE). + int rpCondGiven = IsSet(RI_RPCOND); // 1 if rpCond entered by user, 0 if rpCond defaulted (to TRUE). switch (rpTy) { case C_RPTYCH_SUM: @@ -562,7 +562,7 @@ RC RI::ri_oneRxp() // process one report or export for topRxp case C_RPTYCH_TUSIZE: case C_RPTYCH_TULOAD: // 6-95 if (rpCondGiven) - rc = oer( MH_S0548, exrp, exrp, tyTx); // "%sCond may not be given with %sType=%s" + rc = oer(MH_S0548, exrp, exrp, tyTx); // "%sCond may not be given with %sType=%s" break; default: ; @@ -574,38 +574,38 @@ RC RI::ri_oneRxp() // process one report or export for topRxp switch (rpTy) { case C_RPTYCH_MTR: // "Meter" report/export requires rp/exMeter - rc |= require( whenTy, RI_MTRI); - rc |= disallowN( whenTy, RI_ZI, RI_AHI, RI_TUI, RI_DHWMTRI, RI_AFMTRI, 0); + rc |= require(whenTy, RI_MTRI); + rc |= disallowN(whenTy, RI_ZI, RI_AHI, RI_TUI, RI_DHWMTRI, RI_AFMTRI, 0); break; case C_RPTYCH_DHWMTR: // "DHWMTR" report/export requires rp/exDHWMeter - rc |= require( whenTy, RI_DHWMTRI); - rc |= disallowN( whenTy, RI_ZI, RI_AHI, RI_TUI, RI_MTRI, RI_AFMTRI, 0); + rc |= require(whenTy, RI_DHWMTRI); + rc |= disallowN(whenTy, RI_ZI, RI_AHI, RI_TUI, RI_MTRI, RI_AFMTRI, 0); break; case C_RPTYCH_AFMTR: // "AFMTR" report/export requires rp/exAFMeter - rc |= require( whenTy, RI_AFMTRI); + rc |= require(whenTy, RI_AFMTRI); rc |= disallowN(whenTy, RI_ZI, RI_AHI, RI_TUI, RI_MTRI, RI_DHWMTRI, 0); break; case C_RPTYCH_AHSIZE: // AH-specific reports case C_RPTYCH_AHLOAD: case C_RPTYCH_AH: - rc |= require( whenTy, RI_AHI); - rc |= disallowN( whenTy, RI_ZI, RI_TUI, RI_MTRI, RI_DHWMTRI, 0); + rc |= require(whenTy, RI_AHI); + rc |= disallowN(whenTy, RI_ZI, RI_TUI, RI_MTRI, RI_DHWMTRI, 0); break; case C_RPTYCH_TUSIZE: // TU-specific reports case C_RPTYCH_TULOAD: - rc |= require( whenTy, RI_TUI); - rc |= disallowN( whenTy, RI_ZI, RI_AHI, RI_MTRI, RI_DHWMTRI, 0); + rc |= require(whenTy, RI_TUI); + rc |= disallowN(whenTy, RI_ZI, RI_AHI, RI_MTRI, RI_DHWMTRI, 0); break; case C_RPTYCH_ZDD: // zone-specific reports case C_RPTYCH_ZEB: case C_RPTYCH_ZST: - rc |= require( whenTy, RI_ZI); - rc |= disallowN( whenTy, RI_TUI, RI_AHI, RI_MTRI, RI_DHWMTRI, 0); + rc |= require(whenTy, RI_ZI); + rc |= disallowN(whenTy, RI_TUI, RI_AHI, RI_MTRI, RI_DHWMTRI, 0); break; case C_RPTYCH_SUM: // non- zone -ah -tu -meter reports/exports @@ -613,31 +613,32 @@ RC RI::ri_oneRxp() // process one report or export for topRxp case C_RPTYCH_ERR: case C_RPTYCH_INP: case C_RPTYCH_UDT: - rc |= disallowN( whenTy, RI_ZI, RI_TUI, RI_AHI, RI_MTRI, RI_DHWMTRI, 0); + rc |= disallowN(whenTy, RI_ZI, RI_TUI, RI_AHI, RI_MTRI, RI_DHWMTRI, 0); break; default: if (!errCount()) // if other error has occurred, suppress msg: may be consequential - rc = oer( (const char *)MH_S0555, exrp, rpTy); // "cncult:topRp: Internal error: Bad %sType %d" + rc = oer((const char*)MH_S0555, exrp, rpTy); // "cncult:topRp: Internal error: Bad %sType %d" } -// default/check file reference. Defaulted to rp/exfile in which nested, else default here to "Primary" (supplied by TopStarPrf) + // default/check file reference. Defaulted to rp/exfile in which nested, else default here to "Primary" (supplied by TopStarPrf) if (!ownTi) // if no file given & not defaulted (note default does not set FsSET bit) - { anc* fb = isEx ? &XfiB : &RfiB; // ptr to reportfile or exportfile input ratbase - if (fb->findRecByNm1("Primary", &ownTi, NULL)) // find first record by name (ancrec.cpp) / if not found + { + anc* fb = isEx ? &XfiB : &RfiB; // ptr to reportfile or exportfile input ratbase + if (basAnc::FindRecByName(fb, "Primary", 0, nullptr, &ownTi) != RCOK) // find first record by name / if not found { if (fb->n) // if not found, if there are ANY r/xport files, ownTi = 1; // use first one: is probably Primary renamed with ALTER else // no r/xport files at all - rc |= ooer(RI_OWNTI, // issue error once (cul.cpp), no run - isEx ? MH_S0556 : MH_S0557); // "No exExportfile given" or "No rpReportfile given" + rc |= ooer(RI_OWNTI, MH_S0556, // issue error once (cul.cpp), no run + isEx ? "exExportFile" : "rpReportFile"); // "exExportFile/rpReportFile 'Primary' not found" } } - RFI* rfp=NULL; - if (ownTi) - if (ckRefPt( isEx ? &XfiB : &RfiB, ownTi, isEx ? "exFile" : "rpFile", NULL, (record **)&rfp ) ) // ck ref - return RCBAD; + RFI* rfp = NULL; + if (!ownTi + || ckRefPt( isEx ? &XfiB : &RfiB, ownTi, isEx ? "exFile" : "rpFile", NULL, (record **)&rfp ) ) // ck ref + return RCBAD; // check zone reference or ALL or SUM int isAll = 0; // set nz iff ALL diff --git a/src/cueval.cpp b/src/cueval.cpp index 1704e33b9..7fdacc238 100644 --- a/src/cueval.cpp +++ b/src/cueval.cpp @@ -1043,12 +1043,14 @@ LOCAL RC FC cuEvalI( defO = *IPI++; // get 0 or default owner subscript for ambiquity resolution p = *SPP; // get ptr to name string from stack. no pop: will overwrite. const char* pName = strTrim( (char *)p); // trim in place - if (defO // if defO given (owning input record subscript) - && b->ownB ) // if owning-basAnc pointer set in probed basAnc (should be set in run rat - // only if subscripts in owning run rat match input subscripts) - trc = b->findRecByNmDefO( pName, defO, SPPR, NULL); // seek rcd by name & defO, repl ptr in stk. - else - trc = b->findRecByNmU( pName, NULL, SPPR); // seek unique record by name, replace ptr in stk. + // if defO given (owning input record subscript) + // and owning-basAnc pointer set in probed basAnc (should be set in run rat + // only if subscripts in owning run rat match input subscripts) + int ownerTIOpt = defO && b->ownB + ? defO | basAnc::frnACCEPTNONOWNER // seek rcd by name & defO, accept alt owner if unique + : basAnc::frnUNIQUE; // seek any rcd iff unique + trc = basAnc::FindRecByName(b, pName, ownerTIOpt, SPPR); + if (trc) { ms = strtprintf( diff --git a/src/cul.cpp b/src/cul.cpp index 596f97950..a94472774 100644 --- a/src/cul.cpp +++ b/src/cul.cpp @@ -436,11 +436,13 @@ x trace = 1; err( PWRN, MH_S0204); // "cul(): NULL RAT entry arg (e)" return 1; } - if (e->b->validate("cul.cpp:cul",WRN)) return 1; + if (basAnc::ba_ValidateSafe( e->b, "cul.cpp:cul", WRN) != RCOK) + return 1; // autosize flag pointer and flag pAuszF = _pAuszF; // store argument pointer or NULL given by caller - if (pAuszF) *pAuszF = FALSE; // say no AUTOSIZE commands yet seen + if (pAuszF) + *pAuszF = FALSE; // say no AUTOSIZE commands yet seen // init top-level context stack frame memset( xSp, 0, sizeof(XSTK) ); // zero it: inits many members @@ -1224,26 +1226,30 @@ LOCAL RC FC culRATE( // do RATE cult entry // "owned" basAnc record names need only be unique for same owner: if ( !defTy // type names must be globally unique && xSp > xStk ) // insurance: if command is nested - { - if (b->findRecByNmO( name, // find basAnc record by name/owner, ancrec.cpp - xSp->i, // owner subscript. always here?? - NULL, NULL)==RCOK ) // if found + { // find basAnc record by name/owner + // old comment: xSp->i: owner subscript, always here? + if (basAnc::FindRecByName(b, name, xSp->i) == RCOK) + { // record found: duplicate name // if owner ti can be set != xSp->i, then check again at END.<<<< perlc( // errMsg, show input line and ^. cuparse.cpp. scWrapIf( // strtcat w conditional \n - strtprintf( MH_S0227, c->id, name.CStr() ), // "duplicate %s name '%s' in " - xSp->b->rec(xSp->i).objIdTx( 1 ), // owner class & obj name, etc + strtprintf(MH_S0227, c->id, name.CStr()), // "duplicate %s name '%s' in " + xSp->b->rec(xSp->i).objIdTx(1), // owner class & obj name, etc "\n "), getCpl()); // \n between if wd be longer + } // and continue here (?) (perlc prevents RUN) } - else // not ownable or not in ownable context - if ( (defTy ? b->tyB->findRecByNm1( name, NULL, NULL) // search basAnc's types basAnc if defining a type - : b ? b->findRecByNm1( name, NULL, NULL) // else the basAnc itself - : RCBAD )==RCOK ) // NULL b ??: unsure while converting code, sometime if possible - // if any record with same name found found - perlc( MH_S0228, c->id, defTy ? " type" : "", name.CStr()); // "duplicate %s%s name '%s'" + else + { // not ownable or not in ownable context + // defining a type (defTy): search b->tyB (basAnc's types basAnc) + // (Future: if necessary to avoid defTy ambiguity, also search b) + // else basAnc itself + if (basAnc::FindRecByName(defTy ? b->tyB : b, name) == RCOK) + { // if any record with same name found found + perlc(MH_S0228, c->id, defTy ? " type" : "", name.CStr()); // "duplicate %s%s name '%s'" + } + } // and continue here (?) (perlc prevents RUN) - // if necessary to avoid (future) ambiguity during defTy, also search regular table (b). } // add record to specified basAnc @@ -1280,7 +1286,7 @@ LOCAL RC FC culRATE( // do RATE cult entry if (typeName.IsSet()) { record *typeE; - if (b->tyB->findRecByNm1( typeName, NULL, /*VV*/ &typeE) != RCOK) + if (basAnc::FindRecByName(b->tyB, typeName, basAnc::frn1STMATCH, &typeE) != RCOK) perlc( MH_S0229, c->id, typeName.CStr()); // "%s type '%s' not found" // and continue here with raw record (perlc prevents RUN) else // found @@ -3452,7 +3458,8 @@ LOCAL RC ratPutTy( record *e, CULT *c) #ifdef DEBUG // check argument - if (b->validate("cul:ratPutTy",WRN)) return RCBAD; + if (basAnc::ba_ValidateSafe( b, "cul:ratPutTy", WRN) != RCOK) + return RCBAD; #endif // require record to be LAST in basAnc -- else have no way to delete ( <<<< believe no longer true 1-92, fix if need found) @@ -3637,7 +3644,7 @@ LOCAL RC FC ratTyR( BP b) // if basAnc does not have secondary basAnc for types // returns RCOK/RCFATAL { #ifdef DEBUG - if (b->validate("ratTyR",WRN)) // check argument + if (basAnc::ba_ValidateSafe( b, "ratTyR", WRN) != RCOK) // check argument return RCFATAL; #endif @@ -4041,16 +4048,19 @@ LOCAL RC ratLuDefO( // look up basAnc record by name, resolving ambiguities usin what = b->what; if (defO==0) // if no default owner given { - rc = b->findRecByNm1( name, NULL, /*VV*/ &e); // find first record with given name, ancrec.cpp + rc = basAnc::FindRecByName(b, name, basAnc::frn1STMATCH, &e); // find first record with given name if (rc) ms = strtprintf( MH_S0278, what, name); // format ms "%s '%s' not found" to Tmpstr. Also used below. } else { - rc = b->findRecByNmDefO( name, defO, /*VV*/ &e, /*VV*/ &e2); // find record by name & dfl owner, ancrec.cpp - if (rc) // (RCBAD not found, RCBAD2 ambiguous 1-92) + // if (defO) err(PABT, "Hit"); + + rc = basAnc::FindRecByName( b, name, defO | basAnc::frnACCEPTNONOWNER, &e, nullptr, &e2); + // rc: RCOK: found, RCBAD=not found, RCBAD2=ambiguous + if (rc) { - if (e) // if bad and entrie(s) returned, is ambiguous match + if (e && e2) // if bad and entrie(s) returned, is ambiguous match ms = strtprintf( MH_S0279, // "ambiguous name: \n" what, name, e->whatIn(), // " %s '%s' exists in %s\n" e2->whatIn() ); // " and also in %s" */ diff --git a/src/cuprobe.cpp b/src/cuprobe.cpp index 491be7a49..f96ba2fbf 100644 --- a/src/cuprobe.cpp +++ b/src/cuprobe.cpp @@ -479,9 +479,10 @@ RC PROBEOBJECT::po_TryImInProbe() TI defO = ratDefO(b); /* get 0 or input record subscript in b->ownB of context in which current expr is being evaluated. Returns 0 if not "owned record" basAnc, if its .ownB is 0, or cur expr not embedded in stmt group for such a record. cul.cpp. */ - RC trc = defO - ? b->findRecByNmDefO(name, defO, &e, NULL) // seek record (ancrec.cpp) by name & defO, ret ptr if found. - : b->findRecByNmU(name, NULL, &e); // seek unique record (ancpak.cpp) by name, ret ptr if found. + int ownerTIOpt = defO + ? defO | basAnc::frnACCEPTNONOWNER // seek by owner, match non-owned iff owned not found + : basAnc::frnUNIQUE; // search all / match iff unique + RC trc = basAnc::FindRecByName(b, name, ownerTIOpt, &e); /*if (!evfOk) as below; add if found ambiguity error occurs here when caller fallthru to runtime probe could work */ if (trc==RCBAD2) // if ambiguity (not resolved by defO) diff --git a/src/dhwcalc.cpp b/src/dhwcalc.cpp index 056f8e2d4..369af83e0 100644 --- a/src/dhwcalc.cpp +++ b/src/dhwcalc.cpp @@ -1306,7 +1306,7 @@ RC DHWSYS::ws_DoHour( // hourly calcs if (IsSet( DHWSYS_DAYUSENAME)) { // beg of day: locate DHWDAYUSE, set ws_dayUsei - if (WduR.findRecByNm1( ws_dayUseName, &ws_dayUsei, NULL)) + if (basAnc::FindRecByName( &WduR, ws_dayUseName, basAnc::frn1STMATCH, nullptr, &ws_dayUsei) != RCOK) return orMsg( ERRRT+SHOFNLN, "DHWDAYUSE '%s' not found.", ws_dayUseName.CStr()); } diff --git a/src/impf.cpp b/src/impf.cpp index 29b722a56..36f201487 100644 --- a/src/impf.cpp +++ b/src/impf.cpp @@ -429,7 +429,8 @@ LOCAL RC impFcnFile( // find or add IFFNM record // find else add Import file field names record for this IMPORTFILE name. IFFNM *iffnm; - if (IffnmB.findRecByNmU( impfName, pIffnmi, (record **)&iffnm) != RCOK) // find record / if not found (ancrec.cpp) + if (basAnc::FindRecByName( &IffnmB, impfName, basAnc::frnUNIQUE, (record **)&iffnm, pIffnmi) != RCOK) // find record / if not found + { // returns RCBAD not found or RCBAD2 not unique, but latter is not expected. @@ -450,7 +451,7 @@ LOCAL RC impFcnFile( // find or add IFFNM record // get frequency or return safe assumption IMPF* iimpf; - if ( ImpfiB.findRecByNmU( iffnm->Name(), NULL, (record**)&iimpf )==RCOK // look for IMPF record / if found + if ( basAnc::FindRecByName( &ImpfiB, iffnm->Name(), basAnc::frnUNIQUE, (record**)&iimpf )==RCOK // look for IMPF record / if found && iimpf->sstat[IMPF_IMFREQ] & FsVAL ) // and frequency has been specified *imFreq = iimpf->imFreq; // return user-specified frequency else @@ -483,10 +484,11 @@ RC topImpf() // check/process ImportFiles at end of input IFFNM* iffnm; IMPF* iimpf; - RLUP (IffnmB, iffnm) // loop over IFFNM records (ancrec.h macro). One anc used for expr compile support and run. + RLUP (IffnmB, iffnm) // loop over IFFNM records. One anc used for expr compile support and run. { // find ImportFile else error - if (ImpfiB.findRecByNmU( iffnm->Name(), &iffnm->impfi, (record**)&iimpf )!= RCOK) // look for IMPF record, lib\ancrec.cpp + if (basAnc::FindRecByName(&ImpfiB, iffnm->Name(), basAnc::frnUNIQUE, (record**)&iimpf, &iffnm->impfi )!= RCOK) // look for IMPF record + { // return is RCBAD not found, RCBAD2 ambiguous, but latter not expected. // note: don't use oer cuz it would show IFFNM object type name "ImpFileFldNames". @@ -497,7 +499,7 @@ RC topImpf() // check/process ImportFiles at end of input // iffnm->impfi remains 0 to indicate no ImportFile for Import()(s) that created this IFFNM. } - // associate importfile with iffnm. Other-way association, iffnm->impfi, was set by findRecByNmU call just above. + // associate importfile with iffnm. Other-way association, iffnm->impfi, was set by FindRecByName call just above. iimpf->iffnmi = iffnm->ss; // store IffnmB record subscript in ImpfiB record member // is iffnmi ever used? } diff --git a/src/msghans.h b/src/msghans.h index 55e36227c..5256b5a67 100644 --- a/src/msghans.h +++ b/src/msghans.h @@ -600,8 +600,8 @@ x #define MH_S0118 6118 // "run start time" #define MH_S0553 6553 // "%sMeter may not be given with %sType=%s" #define MH_S0554 6554 // "%sAh may not be given with %sType=%s" #define MH_S0555 6555 // "cncult:topRp: Internal error: Bad %sType %d" -#define MH_S0556 6556 // "No exExportfile given" -#define MH_S0557 6557 // "No rpReportfile given" +#define MH_S0556 6556 // "%s 'Primary' not found" +// #define MH_S0557 6557 #define MH_S0558 6558 // "rpZone=='%s' cannot be used with %sType '%s'" #define MH_S0559 6559 // "rpMeter=='%s' cannot be used with %sType '%s'" #define MH_S0560 6560 // "rpAh=='%s' cannot be used with %sType '%s'" diff --git a/src/msgtbl.cpp b/src/msgtbl.cpp index 6cb7fffe7..8eceebc22 100644 --- a/src/msgtbl.cpp +++ b/src/msgtbl.cpp @@ -669,8 +669,8 @@ x { MH_T0003, "\nReport file name: %s" }, { MH_S0553, "S0553: %sMeter may not be given with %sType=%s" }, { MH_S0554, "S0554: %sAh may not be given with %sType=%s" }, { MH_S0555, "S0555: cncult:topRp: Internal error: Bad %sType %d" }, - { MH_S0556, "S0556: No exExportfile given" }, - { MH_S0557, "S0557: No rpReportfile given" }, + { MH_S0556, "S0556: %s 'Primary' not found" }, + // MH_S0557 { MH_S0558, "S0558: rpZone=='%s' cannot be used with %sType '%s'" }, { MH_S0559, "S0559: rpMeter=='%s' cannot be used with %sType '%s'" }, { MH_S0560, "S0560: rpAh=='%s' cannot be used with %sType '%s'" }, diff --git a/test/2Zone.cse b/test/2Zone.cse index d52cd11ea..97697ce44 100644 --- a/test/2Zone.cse +++ b/test/2Zone.cse @@ -291,6 +291,8 @@ AIRHANDLER "Infil" //Constant Volume no energy, heating or cooling to model in IZXFER izZn1=Z1 izZn2=Z2 izHConst=5. izNVType=TWOWAY izALo=2 izAHi=2 izHD=5 + GAIN IX gnPower=1000 + //----- ZONE SECTION ----- ZONE Z1 @@ -305,10 +307,14 @@ AIRHANDLER "Infil" //Constant Volume no energy, heating or cooling to model in gnEndUse=Lit gnPower=INTGAIN*.4 - GAIN IX1 + GAIN TestContext gnPower = @GAIN["IX"].gnPower + + GAIN IX1 gnMeter=GAINMETER gnEndUse=DHW gnPower=$DayOfYear + + GAIN IX gnPower=1 // potentially ambiguous name SURFACE Roof sfType=Ceiling @@ -435,7 +441,10 @@ AIRHANDLER "Infil" //Constant Volume no energy, heating or cooling to model in gnMeter=GAINMETER gnEndUse=Htg gnPower=$DayOfYear*.9 - + + // GAIN IX3 gnPower = @GAIN[ "IX"].gnPower ambiguous + + SURFACE Roof sfType=Ceiling sfModel=SURFTYPE @@ -582,6 +591,8 @@ TERMINAL "infil" //Constant vol, no heat or cool to model infil tuVfMn =.0001 + ACH * (4576.8 / 60) //Air Changes per hour times Zone vol/60 //--------- REPORTS ------------ + +// DELETE Reportfile "Primary" error condition test REPORT rpType=AH rpAH="MainAH" rpFreq=Month @@ -609,11 +620,11 @@ TERMINAL "infil" //Constant vol, no heat or cool to model infil reportcol colVal=@Top.qcPeakH ColHead="Pk Hr" reportcol colval=@meter[CoolMETER].y.tot* 0.000000292997 ColHead="Yr mWh" - REPORT rpType=ZEB rpZone=Z1 rpDayBeg=Jan 4 rpDayEnd=Jan 4 rpFreq=Hour - REPORT rpType=AH rpAH="MainAH" rpDayBeg=Jan 4 rpDayEnd=Jan 4 rpFreq=HOUR - REPORT rpType=ZEB rpZone=Z1 rpDayBeg=Jul 26 rpDayEnd=Jul 26 rpFreq=Hour - REPORT rpType=AH rpAH="MainAH" rpDayBeg=Jul 26 rpDayEnd=Jul 26 rpFreq=HOUR - REPORT rpType=ZEB rpZone=Z1 rpDayBeg=Oct 16 rpDayEnd= Oct 16 rpFreq=Hour + REPORT rpType=ZEB rpZone=Z1 rpDayBeg=Jan 4 rpDayEnd=Jan 4 rpFreq=Hour rpBtuSf=1000 + REPORT rpType=AH rpAH="MainAH" rpDayBeg=Jan 4 rpDayEnd=Jan 4 rpFreq=HOUR rpBtuSf=1000 + REPORT rpType=ZEB rpZone=Z1 rpDayBeg=Jul 26 rpDayEnd=Jul 26 rpFreq=Hour rpBtuSf=1000 + REPORT rpType=AH rpAH="MainAH" rpDayBeg=Jul 26 rpDayEnd=Jul 26 rpFreq=HOUR rpBtuSf=1000 + REPORT rpType=ZEB rpZone=Z1 rpDayBeg=Oct 16 rpDayEnd= Oct 16 rpFreq=Hour rpBtuSf=1000 REPORT rpType=AH rpAH="MainAH" rpDayBeg= Oct 16 rpDayEnd= Oct 16 rpFreq=HOUR // REPORT rpType=AH rpAH="Infil" rpDayBeg=Jan 4 rpDayEnd=Jan 4 rpFreq=HOUR // REPORT rpType=AH rpAH="Infil" rpDayBeg=Jul 26 rpDayEnd=Jul 26 rpFreq=HOUR diff --git a/test/commands.cse b/test/commands.cse index 682209b53..6e47e1c45 100644 --- a/test/commands.cse +++ b/test/commands.cse @@ -149,6 +149,8 @@ DEFTYPE SURFACE WALL DEFTYPE SURFACE "IntWall" USETYPE WALL sfExCnd=ADJZN sfAdjZn = "Z2" +DEFTYPE SURFACE WALL2 USETYPE WALL + ZONE Z1 znModel = CZM @@ -172,7 +174,7 @@ ZONE Z1 SURFACE WallN1 USETYPE WALL sfAzm = 0 sfExH = 1.3 SURFACE WallS1 USETYPE WALL sfAzm = 180 sfCon = CFrm2x4 sfExHcLChar = 18 - SURFACE WallW1 USETYPE WALL sfAzm = 270 sfCon = lw_floor + SURFACE WallW1 USETYPE WALL2 sfAzm = 270 sfCon = lw_floor SURFACE WallIZ USETYPE IntWall sfAzm = 270 sfTilt=85 sfCon = CFrm2x4 SURFACE Clg1 diff --git a/test/ref-win32-msvc/2ZONE.REP b/test/ref-win32-msvc/2ZONE.REP index 7bf837802..1521d2d86 100644 --- a/test/ref-win32-msvc/2ZONE.REP +++ b/test/ref-win32-msvc/2ZONE.REP @@ -4,20 +4,20 @@ Monthly Energy Balance, Sum of Zones Mon Tair WBair Cond InfS Slr IgnS Mass Izone MechS BalS InfL IgnL IzoneL AirL MechL BalL ---- ----- ----- ------ ------ ----- ----- ------ ------ ------ ---- ------ ----- ------ ------ ------ ---- - Jan 63.30 47.91 0 0 0 0.429 -3.035 0 2.606 0 0 0 0 -.0001 .00012 0 - Feb 63.62 47.87 0 0 0 0.425 -2.559 0 2.134 0 0 0 0 -.0006 .00058 0 - Mar 65.18 49.09 0 0 0 0.512 -2.128 0 1.616 0 0 0 0 -.0004 .00038 0 - Apr 67.57 50.99 0 0 0 0.537 -1.278 0 0.741 0 0 0 0 -.0005 .00054 0 - May 70.76 54.13 0 0 0 0.598 -0.762 0 0.164 0 0 0 0 -.0028 .00276 0 - Jun 74.77 56.25 0 0 0 0.621 -0.406 0 -0.215 0 0 0 0 -.0015 .00152 0 - Jul 79.14 58.29 0 0 0 0.685 -.0877 0 -0.597 0 0 0 0 -.0023 .00234 0 - Aug 77.79 58.90 0 0 0 0.728 -0.286 0 -0.443 0 0 0 0 .00131 -.0013 0 - Sep 73.48 54.59 0 0 0 0.747 -0.640 0 -0.107 0 0 0 0 .00564 -.0056 0 - Oct 67.92 51.12 0 0 0 0.815 -1.462 0 0.647 0 0 0 0 .00022 -.0002 0 - Nov 65.06 49.73 0 0 0 0.830 -2.252 0 1.422 0 0 0 0 .00048 -.0005 0 - Dec 64.05 48.38 0 0 0 0.901 -2.974 0 2.073 0 0 0 0 .00106 -.0011 0 + Jan 65.37 48.73 0 0 0 1.174 -3.237 0 2.063 0 0 0 0 -.0001 .00012 0 + Feb 65.76 48.72 0 0 0 1.098 -2.752 0 1.654 0 0 0 0 -.0006 .00058 0 + Mar 67.86 50.14 0 0 0 1.257 -2.393 0 1.136 0 0 0 0 -.0004 .00038 0 + Apr 71.06 52.34 0 0 0 1.258 -1.612 0 0.354 0 0 0 0 -.0005 .00051 0 + May 74.81 55.59 0 0 0 1.343 -1.162 0 -0.181 0 0 0 0 -.0028 .00279 0 + Jun 78.85 57.61 0 0 0 1.342 -0.793 0 -0.549 0 0 0 0 -.0016 .00156 0 + Jul 82.67 59.47 0 0 0 1.429 -0.436 0 -0.993 0 0 0 0 -.0023 .00231 0 + Aug 81.79 60.21 0 0 0 1.473 -0.683 0 -0.791 0 0 0 0 .00141 -.0014 0 + Sep 77.60 56.08 0 0 0 1.467 -1.033 0 -0.434 0 0 0 0 .00564 -.0056 0 + Oct 71.60 52.52 0 0 0 1.559 -1.822 0 0.262 0 0 0 0 .00026 -.0003 0 + Nov 67.70 50.77 0 0 0 1.551 -2.505 0 0.954 0 0 0 0 .00049 -.0005 0 + Dec 66.31 49.27 0 0 0 1.646 -3.196 0 1.550 0 0 0 0 .00106 -.0011 0 - Yr 69.39 52.44 0 0 0 7.828 -17.87 0 10.042 0 0 0 0 .00048 -.0005 0 + Yr 72.62 53.61 0 0 0 16.60 -21.62 0 5.025 0 0 0 0 .00062 -.0006 0 @@ -27,18 +27,18 @@ Mon Toa WBoa Tra WBra Foa Thx WBhx Fhx Tmx WBmx Tsa WBsa HrsOn FOn VF Qh --- ---- ---- ---- ---- --- ---- ---- --- ---- ---- ---- ---- ----- --- ----- ----- ----- ----- ----- ----- ---- ----- ------ ---- Jan 29.0 24.3 68.0 44.4 0 29.0 24.3 0 68.0 44.4 68.0 44.4 744.0 1.0 1003 0 0 0 0 0 0 0 0 0 Feb 30.9 25.0 68.0 44.0 0 30.9 25.0 0 68.0 44.0 68.0 44.0 672.0 1.0 1003 0 0 0 0 0 0 0 0 0 -Mar 38.4 30.8 68.4 45.5 0 38.4 30.8 0 68.4 45.5 68.4 45.5 744.0 1.0 1003 0 0 0 0 0 0 0 0 0 -Apr 48.7 38.8 69.2 47.9 0 48.7 38.8 0 69.2 47.9 69.2 47.9 720.0 1.0 1003 0 .0009 0 .0009 0 0 0 .00090 0 -May 57.3 47.3 71.0 52.7 0 57.3 47.3 0 71.0 52.7 71.0 52.7 744.0 1.0 1003 0 .0259 0 .0259 0 0 0 0.0259 0 -Jun 64.7 51.8 74.0 55.2 0 64.7 51.8 0 74.0 55.2 73.8 55.1 720.0 1.0 1003 0 0.163 0 0.163 0 0 -.000 0.163 0 -Jul 72.8 56.0 77.5 57.6 0 72.8 56.0 0 77.5 57.6 76.8 57.3 744.0 1.0 1003 0 0.485 0 0.485 0 0 -.000 0.485 0 -Aug 70.1 57.2 76.5 59.4 0 70.1 57.2 0 76.5 59.4 76.0 59.2 744.0 1.0 1003 0 0.292 0 0.292 0 0 -.000 0.292 0 -Sep 62.3 48.2 73.0 52.4 0 62.3 48.2 0 73.0 52.4 72.9 52.4 720.0 1.0 1003 0 0.110 0 0.110 0 0 0 0.110 0 -Oct 49.1 38.9 69.3 48.0 0 49.1 38.9 0 69.3 48.0 69.3 48.0 744.0 1.0 1003 0 0 0 0 0 0 0 0 0 -Nov 38.3 32.7 68.1 46.9 0 38.3 32.7 0 68.1 46.9 68.1 46.9 720.0 1.0 1003 0 0 0 0 0 0 0 0 0 -Dec 30.7 25.9 68.0 44.7 0 30.7 25.9 0 68.0 44.7 68.0 44.7 744.0 1.0 1003 0 0 0 0 0 0 0 0 0 +Mar 38.4 30.8 68.6 45.6 0 38.4 30.8 0 68.6 45.6 68.6 45.6 744.0 1.0 1003 0 0 0 0 0 0 0 .00002 0 +Apr 48.7 38.8 70.1 48.3 0 48.7 38.8 0 70.1 48.3 70.1 48.3 720.0 1.0 1003 0 .0133 0 .0133 0 0 0 0.0133 0 +May 57.3 47.3 72.6 53.3 0 57.3 47.3 0 72.6 53.3 72.4 53.2 744.0 1.0 1003 0 0.101 0 0.101 0 0 0 0.101 0 +Jun 64.7 51.8 75.9 55.9 0 64.7 51.8 0 75.9 55.9 75.4 55.7 720.0 1.0 1003 0 0.357 0 0.357 0 0 -.000 0.357 0 +Jul 72.8 56.0 79.1 58.1 0 72.8 56.0 0 79.1 58.1 77.8 57.7 744.0 1.0 1003 0 0.835 0 0.835 0 0 -.000 0.835 0 +Aug 70.1 57.2 78.5 60.0 0 70.1 57.2 0 78.5 60.0 77.6 59.7 744.0 1.0 1003 0 0.578 0 0.578 0 0 -.000 0.578 0 +Sep 62.3 48.2 74.9 53.1 0 62.3 48.2 0 74.9 53.1 74.5 52.9 720.0 1.0 1003 0 0.249 0 0.249 0 0 -.000 0.249 0 +Oct 49.1 38.9 70.3 48.4 0 49.1 38.9 0 70.3 48.4 70.3 48.3 744.0 1.0 1003 0 .0060 0 .0060 0 0 0 .00599 0 +Nov 38.3 32.7 68.2 46.9 0 38.3 32.7 0 68.2 46.9 68.2 46.9 720.0 1.0 1003 0 0 0 0 0 0 0 0 0 +Dec 30.7 25.9 68.0 44.8 0 30.7 25.9 0 68.0 44.8 68.0 44.8 744.0 1.0 1003 0 0 0 0 0 0 0 0 0 -Yr 49.5 41.0 70.9 50.2 0 49.5 41.0 0 70.9 50.2 70.8 50.1 8760 1.0 1003 0 1.076 0 1.076 0 0 -.000 1.077 0 +Yr 49.5 41.0 71.9 50.6 0 49.5 41.0 0 71.9 50.6 71.6 50.5 8760 1.0 1003 0 2.139 0 2.139 0 0 -.001 2.140 0 @@ -46,132 +46,132 @@ Monthly Energy Use, All Meters, Jan Meter Tot Clg Htg HPBU Dhw DhwBU DhwMFL FanC FanH FanV Fan Aux Proc Lit Rcp Ext Refr Dish Dry Wash Cook User1 User2 BT PV ----------------- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ -HEATMETER 3.595 0 3.595 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +HEATMETER 3.053 0 3.053 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 COOLMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GAINMETER 0.429 0 0.0107 0 0.0119 0 0 0 0 0 0 0 0 0.406 0 0 0 0 0 0 0 0 0 0 0 -Sum 4.024 0 3.606 0 0.0119 0 0 0 0 0 0 0 0 0.406 0 0 0 0 0 0 0 0 0 0 0 +Sum 3.481 0 3.063 0 0.0119 0 0 0 0 0 0 0 0 0.406 0 0 0 0 0 0 0 0 0 0 0 Monthly Energy Use, All Meters, Feb Meter Tot Clg Htg HPBU Dhw DhwBU DhwMFL FanC FanH FanV Fan Aux Proc Lit Rcp Ext Refr Dish Dry Wash Cook User1 User2 BT PV ----------------- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ -HEATMETER 2.983 0 2.983 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +HEATMETER 2.503 0 2.503 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 COOLMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GAINMETER 0.425 0 0.0275 0 0.0306 0 0 0 0 0 0 0 0 0.367 0 0 0 0 0 0 0 0 0 0 0 -Sum 3.408 0 3.010 0 0.0306 0 0 0 0 0 0 0 0 0.367 0 0 0 0 0 0 0 0 0 0 0 +Sum 2.928 0 2.531 0 0.0306 0 0 0 0 0 0 0 0 0.367 0 0 0 0 0 0 0 0 0 0 0 Monthly Energy Use, All Meters, Mar Meter Tot Clg Htg HPBU Dhw DhwBU DhwMFL FanC FanH FanV Fan Aux Proc Lit Rcp Ext Refr Dish Dry Wash Cook User1 User2 BT PV ----------------- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ -HEATMETER 2.375 0 2.375 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -COOLMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +HEATMETER 1.902 0 1.902 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +COOLMETER .00002 .00002 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GAINMETER 0.512 0 0.0502 0 0.0558 0 0 0 0 0 0 0 0 0.406 0 0 0 0 0 0 0 0 0 0 0 -Sum 2.887 0 2.425 0 0.0558 0 0 0 0 0 0 0 0 0.406 0 0 0 0 0 0 0 0 0 0 0 +Sum 2.414 .00002 1.952 0 0.0558 0 0 0 0 0 0 0 0 0.406 0 0 0 0 0 0 0 0 0 0 0 Monthly Energy Use, All Meters, Apr Meter Tot Clg Htg HPBU Dhw DhwBU DhwMFL FanC FanH FanV Fan Aux Proc Lit Rcp Ext Refr Dish Dry Wash Cook User1 User2 BT PV ----------------- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ -HEATMETER 1.244 0 1.244 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -COOLMETER .00090 .00090 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +HEATMETER 0.891 0 0.891 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +COOLMETER 0.0133 0.0133 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GAINMETER 0.537 0 0.0684 0 0.0760 0 0 0 0 0 0 0 0 0.393 0 0 0 0 0 0 0 0 0 0 0 -Sum 1.782 .00090 1.312 0 0.0760 0 0 0 0 0 0 0 0 0.393 0 0 0 0 0 0 0 0 0 0 0 +Sum 1.442 0.0133 0.959 0 0.0760 0 0 0 0 0 0 0 0 0.393 0 0 0 0 0 0 0 0 0 0 0 Monthly Energy Use, All Meters, May Meter Tot Clg Htg HPBU Dhw DhwBU DhwMFL FanC FanH FanV Fan Aux Proc Lit Rcp Ext Refr Dish Dry Wash Cook User1 User2 BT PV ----------------- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ -HEATMETER 0.540 0 0.540 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -COOLMETER 0.0259 0.0259 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +HEATMETER 0.307 0 0.307 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +COOLMETER 0.101 0.101 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GAINMETER 0.598 0 0.0911 0 0.101 0 0 0 0 0 0 0 0 0.406 0 0 0 0 0 0 0 0 0 0 0 -Sum 1.164 0.0259 0.631 0 0.101 0 0 0 0 0 0 0 0 0.406 0 0 0 0 0 0 0 0 0 0 0 +Sum 1.007 0.101 0.399 0 0.101 0 0 0 0 0 0 0 0 0.406 0 0 0 0 0 0 0 0 0 0 0 Monthly Energy Use, All Meters, Jun Meter Tot Clg Htg HPBU Dhw DhwBU DhwMFL FanC FanH FanV Fan Aux Proc Lit Rcp Ext Refr Dish Dry Wash Cook User1 User2 BT PV ----------------- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ -HEATMETER 0.179 0 0.179 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -COOLMETER 0.163 0.163 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +HEATMETER 0.0846 0 0.0846 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +COOLMETER 0.357 0.357 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GAINMETER 0.621 0 0.108 0 0.120 0 0 0 0 0 0 0 0 0.393 0 0 0 0 0 0 0 0 0 0 0 -Sum 0.963 0.163 0.287 0 0.120 0 0 0 0 0 0 0 0 0.393 0 0 0 0 0 0 0 0 0 0 0 +Sum 1.063 0.357 0.193 0 0.120 0 0 0 0 0 0 0 0 0.393 0 0 0 0 0 0 0 0 0 0 0 Monthly Energy Use, All Meters, Jul Meter Tot Clg Htg HPBU Dhw DhwBU DhwMFL FanC FanH FanV Fan Aux Proc Lit Rcp Ext Refr Dish Dry Wash Cook User1 User2 BT PV ----------------- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ -HEATMETER .00843 0 .00843 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -COOLMETER 0.485 0.485 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +HEATMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +COOLMETER 0.835 0.835 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GAINMETER 0.685 0 0.132 0 0.147 0 0 0 0 0 0 0 0 0.406 0 0 0 0 0 0 0 0 0 0 0 -Sum 1.178 0.485 0.140 0 0.147 0 0 0 0 0 0 0 0 0.406 0 0 0 0 0 0 0 0 0 0 0 +Sum 1.519 0.835 0.132 0 0.147 0 0 0 0 0 0 0 0 0.406 0 0 0 0 0 0 0 0 0 0 0 Monthly Energy Use, All Meters, Aug Meter Tot Clg Htg HPBU Dhw DhwBU DhwMFL FanC FanH FanV Fan Aux Proc Lit Rcp Ext Refr Dish Dry Wash Cook User1 User2 BT PV ----------------- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ -HEATMETER 0.0125 0 0.0125 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -COOLMETER 0.292 0.292 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +HEATMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +COOLMETER 0.578 0.578 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GAINMETER 0.728 0 0.153 0 0.170 0 0 0 0 0 0 0 0 0.406 0 0 0 0 0 0 0 0 0 0 0 -Sum 1.033 0.292 0.165 0 0.170 0 0 0 0 0 0 0 0 0.406 0 0 0 0 0 0 0 0 0 0 0 +Sum 1.307 0.578 0.153 0 0.170 0 0 0 0 0 0 0 0 0.406 0 0 0 0 0 0 0 0 0 0 0 Monthly Energy Use, All Meters, Sep Meter Tot Clg Htg HPBU Dhw DhwBU DhwMFL FanC FanH FanV Fan Aux Proc Lit Rcp Ext Refr Dish Dry Wash Cook User1 User2 BT PV ----------------- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ -HEATMETER 0.269 0 0.269 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -COOLMETER 0.110 0.110 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +HEATMETER 0.124 0 0.124 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +COOLMETER 0.249 0.249 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GAINMETER 0.747 0 0.168 0 0.186 0 0 0 0 0 0 0 0 0.393 0 0 0 0 0 0 0 0 0 0 0 -Sum 1.125 0.110 0.436 0 0.186 0 0 0 0 0 0 0 0 0.393 0 0 0 0 0 0 0 0 0 0 0 +Sum 1.119 0.249 0.291 0 0.186 0 0 0 0 0 0 0 0 0.393 0 0 0 0 0 0 0 0 0 0 0 Monthly Energy Use, All Meters, Oct Meter Tot Clg Htg HPBU Dhw DhwBU DhwMFL FanC FanH FanV Fan Aux Proc Lit Rcp Ext Refr Dish Dry Wash Cook User1 User2 BT PV ----------------- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ -HEATMETER 1.162 0 1.162 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -COOLMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +HEATMETER 0.807 0 0.807 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +COOLMETER .00599 .00599 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GAINMETER 0.815 0 0.194 0 0.215 0 0 0 0 0 0 0 0 0.406 0 0 0 0 0 0 0 0 0 0 0 -Sum 1.977 0 1.355 0 0.215 0 0 0 0 0 0 0 0 0.406 0 0 0 0 0 0 0 0 0 0 0 +Sum 1.628 .00599 1.001 0 0.215 0 0 0 0 0 0 0 0 0.406 0 0 0 0 0 0 0 0 0 0 0 Monthly Energy Use, All Meters, Nov Meter Tot Clg Htg HPBU Dhw DhwBU DhwMFL FanC FanH FanV Fan Aux Proc Lit Rcp Ext Refr Dish Dry Wash Cook User1 User2 BT PV ----------------- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ -HEATMETER 2.153 0 2.153 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +HEATMETER 1.687 0 1.687 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 COOLMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GAINMETER 0.830 0 0.207 0 0.230 0 0 0 0 0 0 0 0 0.393 0 0 0 0 0 0 0 0 0 0 0 -Sum 2.983 0 2.360 0 0.230 0 0 0 0 0 0 0 0 0.393 0 0 0 0 0 0 0 0 0 0 0 +Sum 2.518 0 1.894 0 0.230 0 0 0 0 0 0 0 0 0.393 0 0 0 0 0 0 0 0 0 0 0 Monthly Energy Use, All Meters, Dec Meter Tot Clg Htg HPBU Dhw DhwBU DhwMFL FanC FanH FanV Fan Aux Proc Lit Rcp Ext Refr Dish Dry Wash Cook User1 User2 BT PV ----------------- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ -HEATMETER 3.018 0 3.018 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +HEATMETER 2.496 0 2.496 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 COOLMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GAINMETER 0.901 0 0.234 0 0.260 0 0 0 0 0 0 0 0 0.406 0 0 0 0 0 0 0 0 0 0 0 -Sum 3.919 0 3.252 0 0.260 0 0 0 0 0 0 0 0 0.406 0 0 0 0 0 0 0 0 0 0 0 +Sum 3.397 0 2.730 0 0.260 0 0 0 0 0 0 0 0 0.406 0 0 0 0 0 0 0 0 0 0 0 @@ -179,44 +179,44 @@ Daily Energy Use, All Meters, Tue 14-May Meter Tot Clg Htg HPBU Dhw DhwBU DhwMFL FanC FanH FanV Fan Aux Proc Lit Rcp Ext Refr Dish Dry Wash Cook User1 User2 BT PV ----------------- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ -HEATMETER 0.0186 0 0.0186 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -COOLMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +HEATMETER 0.0133 0 0.0133 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +COOLMETER .00050 .00050 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GAINMETER 0.0192 0 .00289 0 .00322 0 0 0 0 0 0 0 0 0.0131 0 0 0 0 0 0 0 0 0 0 0 -Sum 0.0378 0 0.0215 0 .00322 0 0 0 0 0 0 0 0 0.0131 0 0 0 0 0 0 0 0 0 0 0 +Sum 0.0331 .00050 0.0162 0 .00322 0 0 0 0 0 0 0 0 0.0131 0 0 0 0 0 0 0 0 0 0 0 Daily Energy Use, All Meters, Wed 15-May Meter Tot Clg Htg HPBU Dhw DhwBU DhwMFL FanC FanH FanV Fan Aux Proc Lit Rcp Ext Refr Dish Dry Wash Cook User1 User2 BT PV ----------------- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ -HEATMETER .00646 0 .00646 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -COOLMETER .00205 .00205 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +HEATMETER .00057 0 .00057 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +COOLMETER .00839 .00839 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GAINMETER 0.0193 0 .00292 0 .00324 0 0 0 0 0 0 0 0 0.0131 0 0 0 0 0 0 0 0 0 0 0 -Sum 0.0278 .00205 .00937 0 .00324 0 0 0 0 0 0 0 0 0.0131 0 0 0 0 0 0 0 0 0 0 0 +Sum 0.0282 .00839 .00349 0 .00324 0 0 0 0 0 0 0 0 0.0131 0 0 0 0 0 0 0 0 0 0 0 Daily Energy Use, All Meters, Thu 16-May Meter Tot Clg Htg HPBU Dhw DhwBU DhwMFL FanC FanH FanV Fan Aux Proc Lit Rcp Ext Refr Dish Dry Wash Cook User1 User2 BT PV ----------------- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ -HEATMETER .00174 0 .00174 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -COOLMETER .00315 .00315 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +HEATMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +COOLMETER 0.0111 0.0111 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GAINMETER 0.0193 0 .00294 0 .00326 0 0 0 0 0 0 0 0 0.0131 0 0 0 0 0 0 0 0 0 0 0 -Sum 0.0242 .00315 .00467 0 .00326 0 0 0 0 0 0 0 0 0.0131 0 0 0 0 0 0 0 0 0 0 0 +Sum 0.0304 0.0111 .00294 0 .00326 0 0 0 0 0 0 0 0 0.0131 0 0 0 0 0 0 0 0 0 0 0 Daily Energy Use, All Meters, Fri 17-May Meter Tot Clg Htg HPBU Dhw DhwBU DhwMFL FanC FanH FanV Fan Aux Proc Lit Rcp Ext Refr Dish Dry Wash Cook User1 User2 BT PV ----------------- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ -HEATMETER .00030 0 .00030 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -COOLMETER .00089 .00089 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +HEATMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +COOLMETER .00877 .00877 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GAINMETER 0.0193 0 .00296 0 .00329 0 0 0 0 0 0 0 0 0.0131 0 0 0 0 0 0 0 0 0 0 0 -Sum 0.0205 .00089 .00326 0 .00329 0 0 0 0 0 0 0 0 0.0131 0 0 0 0 0 0 0 0 0 0 0 +Sum 0.0281 .00877 .00296 0 .00329 0 0 0 0 0 0 0 0 0.0131 0 0 0 0 0 0 0 0 0 0 0 Daily Energy Use, All Meters, Sat 18-May @@ -224,10 +224,10 @@ Daily Energy Use, All Meters, Sat 18-May Meter Tot Clg Htg HPBU Dhw DhwBU DhwMFL FanC FanH FanV Fan Aux Proc Lit Rcp Ext Refr Dish Dry Wash Cook User1 User2 BT PV ----------------- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ HEATMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -COOLMETER .00246 .00246 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +COOLMETER 0.0109 0.0109 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GAINMETER 0.0194 0 .00298 0 .00331 0 0 0 0 0 0 0 0 0.0131 0 0 0 0 0 0 0 0 0 0 0 -Sum 0.0219 .00246 .00298 0 .00331 0 0 0 0 0 0 0 0 0.0131 0 0 0 0 0 0 0 0 0 0 0 +Sum 0.0302 0.0109 .00298 0 .00331 0 0 0 0 0 0 0 0 0.0131 0 0 0 0 0 0 0 0 0 0 0 Daily Energy Use, All Meters, Sun 19-May @@ -235,21 +235,21 @@ Daily Energy Use, All Meters, Sun 19-May Meter Tot Clg Htg HPBU Dhw DhwBU DhwMFL FanC FanH FanV Fan Aux Proc Lit Rcp Ext Refr Dish Dry Wash Cook User1 User2 BT PV ----------------- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ HEATMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -COOLMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +COOLMETER .00351 .00351 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GAINMETER 0.0194 0 .00300 0 .00334 0 0 0 0 0 0 0 0 0.0131 0 0 0 0 0 0 0 0 0 0 0 -Sum 0.0194 0 .00300 0 .00334 0 0 0 0 0 0 0 0 0.0131 0 0 0 0 0 0 0 0 0 0 0 +Sum 0.0229 .00351 .00300 0 .00334 0 0 0 0 0 0 0 0 0.0131 0 0 0 0 0 0 0 0 0 0 0 Daily Energy Use, All Meters, Mon 20-May Meter Tot Clg Htg HPBU Dhw DhwBU DhwMFL FanC FanH FanV Fan Aux Proc Lit Rcp Ext Refr Dish Dry Wash Cook User1 User2 BT PV ----------------- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ -HEATMETER .00364 0 .00364 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -COOLMETER .00301 .00301 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +HEATMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +COOLMETER 0.0103 0.0103 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GAINMETER 0.0195 0 .00302 0 .00336 0 0 0 0 0 0 0 0 0.0131 0 0 0 0 0 0 0 0 0 0 0 -Sum 0.0261 .00301 .00666 0 .00336 0 0 0 0 0 0 0 0 0.0131 0 0 0 0 0 0 0 0 0 0 0 +Sum 0.0298 0.0103 .00302 0 .00336 0 0 0 0 0 0 0 0 0.0131 0 0 0 0 0 0 0 0 0 0 0 Daily Energy Use, All Meters, Tue 21-May @@ -257,43 +257,43 @@ Daily Energy Use, All Meters, Tue 21-May Meter Tot Clg Htg HPBU Dhw DhwBU DhwMFL FanC FanH FanV Fan Aux Proc Lit Rcp Ext Refr Dish Dry Wash Cook User1 User2 BT PV ----------------- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ HEATMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -COOLMETER .00481 .00481 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +COOLMETER 0.0141 0.0141 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GAINMETER 0.0195 0 .00305 0 .00338 0 0 0 0 0 0 0 0 0.0131 0 0 0 0 0 0 0 0 0 0 0 -Sum 0.0243 .00481 .00305 0 .00338 0 0 0 0 0 0 0 0 0.0131 0 0 0 0 0 0 0 0 0 0 0 +Sum 0.0337 0.0141 .00305 0 .00338 0 0 0 0 0 0 0 0 0.0131 0 0 0 0 0 0 0 0 0 0 0 Daily Energy Use, All Meters, Wed 22-May Meter Tot Clg Htg HPBU Dhw DhwBU DhwMFL FanC FanH FanV Fan Aux Proc Lit Rcp Ext Refr Dish Dry Wash Cook User1 User2 BT PV ----------------- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ -HEATMETER 0.0138 0 0.0138 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +HEATMETER .00378 0 .00378 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 COOLMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GAINMETER 0.0196 0 .00307 0 .00341 0 0 0 0 0 0 0 0 0.0131 0 0 0 0 0 0 0 0 0 0 0 -Sum 0.0334 0 0.0169 0 .00341 0 0 0 0 0 0 0 0 0.0131 0 0 0 0 0 0 0 0 0 0 0 +Sum 0.0234 0 .00685 0 .00341 0 0 0 0 0 0 0 0 0.0131 0 0 0 0 0 0 0 0 0 0 0 Daily Energy Use, All Meters, Thu 23-May Meter Tot Clg Htg HPBU Dhw DhwBU DhwMFL FanC FanH FanV Fan Aux Proc Lit Rcp Ext Refr Dish Dry Wash Cook User1 User2 BT PV ----------------- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ -HEATMETER 0.0155 0 0.0155 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +HEATMETER 0.0101 0 0.0101 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 COOLMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GAINMETER 0.0196 0 .00309 0 .00343 0 0 0 0 0 0 0 0 0.0131 0 0 0 0 0 0 0 0 0 0 0 -Sum 0.0351 0 0.0186 0 .00343 0 0 0 0 0 0 0 0 0.0131 0 0 0 0 0 0 0 0 0 0 0 +Sum 0.0298 0 0.0132 0 .00343 0 0 0 0 0 0 0 0 0.0131 0 0 0 0 0 0 0 0 0 0 0 Daily Energy Use, All Meters, Fri 24-May Meter Tot Clg Htg HPBU Dhw DhwBU DhwMFL FanC FanH FanV Fan Aux Proc Lit Rcp Ext Refr Dish Dry Wash Cook User1 User2 BT PV ----------------- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ -HEATMETER 0.0110 0 0.0110 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -COOLMETER .00034 .00034 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +HEATMETER .00386 0 .00386 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +COOLMETER .00499 .00499 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GAINMETER 0.0197 0 .00311 0 .00346 0 0 0 0 0 0 0 0 0.0131 0 0 0 0 0 0 0 0 0 0 0 -Sum 0.0310 .00034 0.0141 0 .00346 0 0 0 0 0 0 0 0 0.0131 0 0 0 0 0 0 0 0 0 0 0 +Sum 0.0285 .00499 .00697 0 .00346 0 0 0 0 0 0 0 0 0.0131 0 0 0 0 0 0 0 0 0 0 0 @@ -312,77 +312,77 @@ Hourly Energy Use, All Meters, Wed 15-May hour 2 Meter Tot Clg Htg HPBU Dhw DhwBU DhwMFL FanC FanH FanV Fan Aux Proc Lit Rcp Ext Refr Dish Dry Wash Cook User1 User2 BT PV ----------------- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ -HEATMETER .00024 0 .00024 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +HEATMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 COOLMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GAINMETER .00080 0 .00012 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 -Sum .00104 0 .00036 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 +Sum .00080 0 .00012 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 Hourly Energy Use, All Meters, Wed 15-May hour 3 Meter Tot Clg Htg HPBU Dhw DhwBU DhwMFL FanC FanH FanV Fan Aux Proc Lit Rcp Ext Refr Dish Dry Wash Cook User1 User2 BT PV ----------------- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ -HEATMETER .00097 0 .00097 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +HEATMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 COOLMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GAINMETER .00080 0 .00012 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 -Sum .00177 0 .00109 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 +Sum .00080 0 .00012 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 Hourly Energy Use, All Meters, Wed 15-May hour 4 Meter Tot Clg Htg HPBU Dhw DhwBU DhwMFL FanC FanH FanV Fan Aux Proc Lit Rcp Ext Refr Dish Dry Wash Cook User1 User2 BT PV ----------------- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ -HEATMETER .00133 0 .00133 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +HEATMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 COOLMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GAINMETER .00080 0 .00012 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 -Sum .00213 0 .00145 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 +Sum .00080 0 .00012 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 Hourly Energy Use, All Meters, Wed 15-May hour 5 Meter Tot Clg Htg HPBU Dhw DhwBU DhwMFL FanC FanH FanV Fan Aux Proc Lit Rcp Ext Refr Dish Dry Wash Cook User1 User2 BT PV ----------------- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ -HEATMETER .00153 0 .00153 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +HEATMETER .00008 0 .00008 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 COOLMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GAINMETER .00080 0 .00012 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 -Sum .00233 0 .00165 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 +Sum .00089 0 .00021 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 Hourly Energy Use, All Meters, Wed 15-May hour 6 Meter Tot Clg Htg HPBU Dhw DhwBU DhwMFL FanC FanH FanV Fan Aux Proc Lit Rcp Ext Refr Dish Dry Wash Cook User1 User2 BT PV ----------------- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ -HEATMETER .00145 0 .00145 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +HEATMETER .00040 0 .00040 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 COOLMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GAINMETER .00080 0 .00012 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 -Sum .00225 0 .00157 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 +Sum .00121 0 .00052 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 Hourly Energy Use, All Meters, Wed 15-May hour 7 Meter Tot Clg Htg HPBU Dhw DhwBU DhwMFL FanC FanH FanV Fan Aux Proc Lit Rcp Ext Refr Dish Dry Wash Cook User1 User2 BT PV ----------------- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ -HEATMETER .00083 0 .00083 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +HEATMETER .00008 0 .00008 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 COOLMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GAINMETER .00080 0 .00012 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 -Sum .00163 0 .00095 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 +Sum .00089 0 .00020 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 Hourly Energy Use, All Meters, Wed 15-May hour 8 Meter Tot Clg Htg HPBU Dhw DhwBU DhwMFL FanC FanH FanV Fan Aux Proc Lit Rcp Ext Refr Dish Dry Wash Cook User1 User2 BT PV ----------------- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ -HEATMETER .00010 0 .00010 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +HEATMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 COOLMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GAINMETER .00080 0 .00012 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 -Sum .00091 0 .00023 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 +Sum .00080 0 .00012 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 Hourly Energy Use, All Meters, Wed 15-May hour 9 @@ -445,10 +445,10 @@ Hourly Energy Use, All Meters, Wed 15-May hour 14 Meter Tot Clg Htg HPBU Dhw DhwBU DhwMFL FanC FanH FanV Fan Aux Proc Lit Rcp Ext Refr Dish Dry Wash Cook User1 User2 BT PV ----------------- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ HEATMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -COOLMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +COOLMETER .00048 .00048 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GAINMETER .00080 0 .00012 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 -Sum .00080 0 .00012 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 +Sum .00128 .00048 .00012 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 Hourly Energy Use, All Meters, Wed 15-May hour 15 @@ -456,10 +456,10 @@ Hourly Energy Use, All Meters, Wed 15-May hour 15 Meter Tot Clg Htg HPBU Dhw DhwBU DhwMFL FanC FanH FanV Fan Aux Proc Lit Rcp Ext Refr Dish Dry Wash Cook User1 User2 BT PV ----------------- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ HEATMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -COOLMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +COOLMETER .00151 .00151 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GAINMETER .00080 0 .00012 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 -Sum .00080 0 .00012 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 +Sum .00231 .00151 .00012 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 Hourly Energy Use, All Meters, Wed 15-May hour 16 @@ -467,10 +467,10 @@ Hourly Energy Use, All Meters, Wed 15-May hour 16 Meter Tot Clg Htg HPBU Dhw DhwBU DhwMFL FanC FanH FanV Fan Aux Proc Lit Rcp Ext Refr Dish Dry Wash Cook User1 User2 BT PV ----------------- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ HEATMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -COOLMETER .00050 .00050 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +COOLMETER .00187 .00187 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GAINMETER .00080 0 .00012 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 -Sum .00130 .00050 .00012 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 +Sum .00267 .00187 .00012 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 Hourly Energy Use, All Meters, Wed 15-May hour 17 @@ -478,10 +478,10 @@ Hourly Energy Use, All Meters, Wed 15-May hour 17 Meter Tot Clg Htg HPBU Dhw DhwBU DhwMFL FanC FanH FanV Fan Aux Proc Lit Rcp Ext Refr Dish Dry Wash Cook User1 User2 BT PV ----------------- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ HEATMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -COOLMETER .00078 .00078 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +COOLMETER .00186 .00186 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GAINMETER .00080 0 .00012 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 -Sum .00158 .00078 .00012 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 +Sum .00266 .00186 .00012 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 Hourly Energy Use, All Meters, Wed 15-May hour 18 @@ -489,10 +489,10 @@ Hourly Energy Use, All Meters, Wed 15-May hour 18 Meter Tot Clg Htg HPBU Dhw DhwBU DhwMFL FanC FanH FanV Fan Aux Proc Lit Rcp Ext Refr Dish Dry Wash Cook User1 User2 BT PV ----------------- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ HEATMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -COOLMETER .00064 .00064 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +COOLMETER .00158 .00158 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GAINMETER .00080 0 .00012 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 -Sum .00144 .00064 .00012 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 +Sum .00239 .00158 .00012 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 Hourly Energy Use, All Meters, Wed 15-May hour 19 @@ -500,10 +500,10 @@ Hourly Energy Use, All Meters, Wed 15-May hour 19 Meter Tot Clg Htg HPBU Dhw DhwBU DhwMFL FanC FanH FanV Fan Aux Proc Lit Rcp Ext Refr Dish Dry Wash Cook User1 User2 BT PV ----------------- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ HEATMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -COOLMETER .00012 .00012 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +COOLMETER .00091 .00091 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GAINMETER .00080 0 .00012 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 -Sum .00093 .00012 .00012 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 +Sum .00171 .00091 .00012 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 Hourly Energy Use, All Meters, Wed 15-May hour 20 @@ -511,10 +511,10 @@ Hourly Energy Use, All Meters, Wed 15-May hour 20 Meter Tot Clg Htg HPBU Dhw DhwBU DhwMFL FanC FanH FanV Fan Aux Proc Lit Rcp Ext Refr Dish Dry Wash Cook User1 User2 BT PV ----------------- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ HEATMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -COOLMETER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +COOLMETER .00018 .00018 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GAINMETER .00080 0 .00012 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 -Sum .00080 0 .00012 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 +Sum .00098 .00018 .00012 0 .00013 0 0 0 0 0 0 0 0 .00055 0 0 0 0 0 0 0 0 0 0 0 Hourly Energy Use, All Meters, Wed 15-May hour 21 @@ -566,7 +566,7 @@ Annual Heating Energy Report Pk kW Pk Month Pk Day Pk Hr Yr mWh ---------- ---------- ---------- ---------- ---------- - 3.19 1 4 8 5.139 + 2.951 1 4 8 4.06 @@ -574,7 +574,7 @@ Annual Cooling Energy Report Pk kW Pk Month Pk Day Pk Hr Yr mWh ---------- ---------- ---------- ---------- ---------- - 1.182 7 1 13 0.315 + 1.451 7 1 13 0.627 @@ -582,32 +582,32 @@ Hourly Energy Balance, zone "Z1", Fri 04-Jan Hr Tair WBair Cond InfS Slr IgnS Mass Izone MechS BalS InfL IgnL IzoneL AirL MechL BalL ---- ----- ----- ------ ------ ----- ----- ------ ------ ------ ---- ------ ----- ------ ------ ------ ---- - 1 51.00 48.14 0 0 0 .0003 -.0036 .00330 0 0 0 0 0 0 0 0 - 2 50.77 48.05 0 0 0 .0003 -.0036 .00337 0 0 0 0 0 0 0 0 - 3 50.55 47.96 0 0 0 .0003 -.0037 .00344 0 0 0 0 0 0 0 0 - 4 50.47 47.92 0 0 0 .0003 -.0037 .00347 0 0 0 0 0 0 0 0 - 5 50.43 47.91 0 0 0 .0003 -.0038 .00348 0 0 0 0 0 0 0 0 - 6 50.40 47.89 0 0 0 .0003 -.0038 .00349 0 0 0 0 0 0 0 0 - 7 50.37 47.88 0 0 0 .0003 -.0038 .00350 0 0 0 0 0 0 0 0 - 8 50.37 47.88 0 0 0 .0003 -.0038 .00351 0 0 0 0 0 0 0 0 - 9 50.56 47.96 0 0 0 .0003 -.0037 .00347 0 0 0 0 0 0 0 0 - 10 51.04 48.15 0 0 0 .0003 -.0036 .00335 0 0 0 0 0 0 0 0 - 11 51.74 48.43 0 0 0 .0003 -.0034 .00316 0 0 0 0 0 0 0 0 - 12 52.50 48.73 0 0 0 .0003 -.0032 .00294 0 0 0 0 0 0 0 0 - 13 53.01 48.93 0 0 0 .0003 -.0031 .00278 0 0 0 0 0 0 0 0 - 14 53.46 49.10 0 0 0 .0003 -.0029 .00266 0 0 0 0 0 0 0 0 - 15 53.93 49.29 0 0 0 .0003 -.0028 .00253 0 0 0 0 0 0 0 0 - 16 54.08 49.35 0 0 0 .0003 -.0027 .00247 0 0 0 0 0 0 0 0 - 17 53.85 49.26 0 0 0 .0003 -.0028 .00250 0 0 0 0 0 0 0 0 - 18 53.35 49.06 0 0 0 .0003 -.0029 .00262 0 0 0 0 0 0 0 0 - 19 52.76 48.83 0 0 0 .0003 -.0031 .00279 0 0 0 0 0 0 0 0 - 20 52.35 48.67 0 0 0 .0003 -.0032 .00291 0 0 0 0 0 0 0 0 - 21 52.12 48.58 0 0 0 .0003 -.0033 .00299 0 0 0 0 0 0 0 0 - 22 51.93 48.50 0 0 0 .0003 -.0033 .00304 0 0 0 0 0 0 0 0 - 23 51.84 48.47 0 0 0 .0003 -.0034 .00307 0 0 0 0 0 0 0 0 - 24 51.82 48.46 0 0 0 .0003 -.0034 .00308 0 0 0 0 0 0 0 0 - - Day 51.86 48.48 0 0 0 .0066 -.0806 0.0739 0 0 0 0 0 0 0 0 + 1 53.93 49.29 0 0 0 1.278 -3.770 2.492 0 0 0 0 0 0 0 0 + 2 53.69 49.19 0 0 0 1.278 -3.832 2.554 0 0 0 0 0 0 0 0 + 3 53.46 49.10 0 0 0 1.278 -3.898 2.620 0 0 0 0 0 0 0 0 + 4 53.37 49.07 0 0 0 1.278 -3.930 2.652 0 0 0 0 0 0 0 0 + 5 53.32 49.05 0 0 0 1.278 -3.944 2.666 0 0 0 0 0 0 0 0 + 6 53.28 49.04 0 0 0 1.278 -3.955 2.677 0 0 0 0 0 0 0 0 + 7 53.25 49.02 0 0 0 1.278 -3.964 2.686 0 0 0 0 0 0 0 0 + 8 53.24 49.02 0 0 0 1.278 -3.969 2.691 0 0 0 0 0 0 0 0 + 9 53.44 49.10 0 0 0 1.278 -3.939 2.661 0 0 0 0 0 0 0 0 + 10 53.92 49.29 0 0 0 1.278 -3.823 2.545 0 0 0 0 0 0 0 0 + 11 54.65 49.58 0 0 0 1.278 -3.649 2.371 0 0 0 0 0 0 0 0 + 12 55.45 49.89 0 0 0 1.278 -3.436 2.158 0 0 0 0 0 0 0 0 + 13 56.00 50.11 0 0 0 1.278 -3.285 2.007 0 0 0 0 0 0 0 0 + 14 56.48 50.30 0 0 0 1.278 -3.171 1.893 0 0 0 0 0 0 0 0 + 15 57.00 50.50 0 0 0 1.278 -3.043 1.765 0 0 0 0 0 0 0 0 + 16 57.18 50.57 0 0 0 1.278 -2.976 1.698 0 0 0 0 0 0 0 0 + 17 56.96 50.49 0 0 0 1.278 -3.004 1.726 0 0 0 0 0 0 0 0 + 18 56.46 50.29 0 0 0 1.278 -3.111 1.833 0 0 0 0 0 0 0 0 + 19 55.84 50.04 0 0 0 1.278 -3.260 1.982 0 0 0 0 0 0 0 0 + 20 55.41 49.88 0 0 0 1.278 -3.380 2.102 0 0 0 0 0 0 0 0 + 21 55.16 49.78 0 0 0 1.278 -3.451 2.173 0 0 0 0 0 0 0 0 + 22 54.96 49.70 0 0 0 1.278 -3.505 2.227 0 0 0 0 0 0 0 0 + 23 54.86 49.66 0 0 0 1.278 -3.538 2.260 0 0 0 0 0 0 0 0 + 24 54.82 49.64 0 0 0 1.278 -3.549 2.271 0 0 0 0 0 0 0 0 + + Day 54.84 49.65 0 0 0 30.67 -85.38 54.711 0 0 0 0 0 0 0 0 @@ -648,32 +648,32 @@ Hourly Energy Balance, zone "Z1", Fri 26-Jul Hr Tair WBair Cond InfS Slr IgnS Mass Izone MechS BalS InfL IgnL IzoneL AirL MechL BalL ---- ----- ----- ------ ------ ----- ----- ------ ------ ------ ---- ------ ----- ------ ------ ------ ---- - 1 82.02 59.41 0 0 0 .0005 -.0002 -.0002 0 0 0 0 0 0 0 0 - 2 81.24 59.14 0 0 0 .0005 -.0003 -.0002 0 0 0 0 0 0 0 0 - 3 80.54 58.91 0 0 0 .0005 -.0003 -.0002 0 0 0 0 0 0 0 0 - 4 79.78 58.66 0 0 0 .0005 -.0003 -.0002 0 0 0 0 0 0 0 0 - 5 79.05 58.41 0 0 0 .0005 -.0003 -.0002 0 0 0 0 0 0 0 0 - 6 78.36 58.18 0 0 0 .0005 -.0003 -.0002 0 0 0 0 0 0 0 0 - 7 78.36 58.18 0 0 0 .0005 -.0003 -.0002 0 0 0 0 0 0 0 0 - 8 79.33 58.51 0 0 0 .0005 -.0003 -.0002 0 0 0 0 0 0 0 0 - 9 80.90 59.03 0 0 0 .0005 -.0003 -.0002 0 0 0 0 0 0 0 0 - 10 82.76 59.65 0 0 0 .0005 -.0003 -.0002 0 0 0 0 0 0 0 0 - 11 84.59 60.24 0 0 0 .0005 -.0001 -.0003 0 0 0 0 0 0 0 0 - 12 85.96 60.66 0 0 0 .0005 .00007 -.0006 0 0 0 0 0 0 0 0 - 13 86.92 60.96 0 0 0 .0005 .00025 -.0007 0 0 0 0 0 0 0 0 - 14 87.73 61.20 0 0 0 .0005 .00040 -.0009 0 0 0 0 0 0 0 0 - 15 88.34 61.39 0 0 0 .0005 .00053 -.0010 0 0 0 0 0 0 0 0 - 16 88.75 61.51 0 0 0 .0005 .00062 -.0011 0 0 0 0 0 0 0 0 - 17 88.88 61.56 0 0 0 .0005 .00066 -.0011 0 0 0 0 0 0 0 0 - 18 88.85 61.55 0 0 0 .0005 .00066 -.0011 0 0 0 0 0 0 0 0 - 19 88.52 61.44 0 0 0 .0005 .00061 -.0011 0 0 0 0 0 0 0 0 - 20 87.81 61.23 0 0 0 .0005 .00049 -.0010 0 0 0 0 0 0 0 0 - 21 87.09 61.01 0 0 0 .0005 .00035 -.0008 0 0 0 0 0 0 0 0 - 22 86.46 60.81 0 0 0 .0005 .00023 -.0007 0 0 0 0 0 0 0 0 - 23 85.76 60.60 0 0 0 .0005 .00012 -.0006 0 0 0 0 0 0 0 0 - 24 84.92 60.34 0 0 0 .0005 -0.000 -.0005 0 0 0 0 0 0 0 0 - - Day 84.29 60.15 0 0 0 .0115 .00191 -.0134 0 0 0 0 0 0 0 0 + 1 86.72 60.89 0 0 0 1.481 -0.714 -0.767 0 0 0 0 0 0 0 0 + 2 86.19 60.73 0 0 0 1.481 -0.778 -0.703 0 0 0 0 0 0 0 0 + 3 85.73 60.59 0 0 0 1.481 -0.815 -0.666 0 0 0 0 0 0 0 0 + 4 85.20 60.43 0 0 0 1.481 -0.836 -0.645 0 0 0 0 0 0 0 0 + 5 84.68 60.27 0 0 0 1.481 -0.852 -0.628 0 0 0 0 0 0 0 0 + 6 84.18 60.11 0 0 0 1.481 -0.864 -0.617 0 0 0 0 0 0 0 0 + 7 84.37 60.17 0 0 0 1.481 -0.872 -0.608 0 0 0 0 0 0 0 0 + 8 85.49 60.52 0 0 0 1.481 -0.854 -0.627 0 0 0 0 0 0 0 0 + 9 87.06 61.00 0 0 0 1.481 -0.755 -0.726 0 0 0 0 0 0 0 0 + 10 88.48 61.43 0 0 0 1.481 -0.490 -0.991 0 0 0 0 0 0 0 0 + 11 89.82 61.84 0 0 0 1.481 -0.209 -1.272 0 0 0 0 0 0 0 0 + 12 90.82 62.15 0 0 0 1.481 0.0314 -1.512 0 0 0 0 0 0 0 0 + 13 91.49 62.35 0 0 0 1.481 0.197 -1.678 0 0 0 0 0 0 0 0 + 14 92.06 62.53 0 0 0 1.481 0.336 -1.816 0 0 0 0 0 0 0 0 + 15 92.46 62.65 0 0 0 1.481 0.442 -1.923 0 0 0 0 0 0 0 0 + 16 92.71 62.73 0 0 0 1.481 0.515 -1.996 0 0 0 0 0 0 0 0 + 17 92.73 62.73 0 0 0 1.481 0.533 -2.013 0 0 0 0 0 0 0 0 + 18 92.61 62.70 0 0 0 1.481 0.509 -1.990 0 0 0 0 0 0 0 0 + 19 92.22 62.58 0 0 0 1.481 0.438 -1.919 0 0 0 0 0 0 0 0 + 20 91.50 62.36 0 0 0 1.481 0.279 -1.760 0 0 0 0 0 0 0 0 + 21 90.80 62.14 0 0 0 1.481 0.110 -1.590 0 0 0 0 0 0 0 0 + 22 90.21 61.96 0 0 0 1.481 -.0258 -1.455 0 0 0 0 0 0 0 0 + 23 89.56 61.76 0 0 0 1.481 -0.161 -1.320 0 0 0 0 0 0 0 0 + 24 88.80 61.53 0 0 0 1.481 -0.316 -1.165 0 0 0 0 0 0 0 0 + + Day 88.99 61.59 0 0 0 35.54 -5.153 -30.39 0 0 0 0 0 0 0 0 @@ -681,32 +681,32 @@ Hourly Air Handler Report, air handler "MainAH", Fri 26-Jul Hr Toa WBoa Tra WBra Foa Thx WBhx Fhx Tmx WBmx Tsa WBsa HrsOn FOn VF Qheat -Qsen -Qlat -Qcoo Qout Qfan Qloss Qload Qbal --- ---- ---- ---- ---- --- ---- ---- --- ---- ---- ---- ---- ----- --- ----- ----- ----- ----- ----- ----- ---- ----- ------ ---- - 1 67.6 53.4 79.2 57.7 0 67.6 53.4 0 79.2 57.7 79.2 57.7 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 - 2 68.0 52.4 78.6 57.0 0 68.0 52.4 0 78.6 57.0 78.6 57.0 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 - 3 66.8 51.4 78.0 56.2 0 66.8 51.4 0 78.0 56.2 78.0 56.2 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 - 4 66.0 51.0 77.4 55.6 0 66.0 51.0 0 77.4 55.6 77.4 55.6 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 - 5 64.8 50.4 76.7 55.1 0 64.8 50.4 0 76.7 55.1 76.7 55.1 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 - 6 65.2 50.6 76.1 54.8 0 65.2 50.6 0 76.1 54.8 76.1 54.8 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 - 7 68.5 52.9 76.1 55.0 0 68.5 52.9 0 76.1 55.0 76.1 55.0 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 - 8 74.4 55.9 76.9 55.9 0 74.4 55.9 0 76.9 55.9 76.9 55.9 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 - 9 79.5 56.4 78.6 56.6 0 79.5 56.4 0 78.6 56.6 78.6 56.6 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 - 10 85.4 57.3 80.3 56.5 0 85.4 57.3 0 80.3 56.5 80.0 56.4 1.00 1.0 1003 0 .0003 0 .0003 0 0 0 .00026 0 - 11 89.2 57.4 80.6 55.9 0 89.2 57.4 0 80.6 55.9 78.8 55.2 1.00 1.0 1002 0 .0016 0 .0016 0 0 0 .00160 0 - 12 90.0 55.8 80.6 54.6 0 90.0 55.8 0 80.6 54.6 77.8 53.6 1.00 1.0 1002 0 .0024 0 .0024 0 0 0 .00244 0 - 13 91.9 56.3 80.6 53.3 0 91.9 56.3 0 80.6 53.3 77.2 52.0 1.00 1.0 1002 0 .0030 0 .0030 0 0 0 .00298 0 - 14 93.0 57.6 80.6 53.0 0 93.0 57.6 0 80.6 53.0 76.7 51.5 1.00 1.0 1002 0 .0035 0 .0035 0 0 0 .00346 0 - 15 94.2 58.6 80.6 53.2 0 94.2 58.6 0 80.6 53.2 76.3 51.6 1.00 1.0 1002 0 .0038 0 .0038 0 0 0 .00382 0 - 16 94.4 58.4 80.6 53.4 0 94.4 58.4 0 80.6 53.4 76.0 51.7 1.00 1.0 1002 0 .0040 0 .0040 0 0 0 .00404 0 - 17 94.0 58.0 80.6 53.4 0 94.0 58.0 0 80.6 53.4 76.1 51.8 1.00 1.0 1002 0 .0040 0 .0040 0 0 0 .00401 0 - 18 93.4 58.0 80.6 53.4 0 93.4 58.0 0 80.6 53.4 76.3 51.8 1.00 1.0 1002 0 .0038 0 .0038 0 0 0 .00383 0 - 19 89.9 58.0 80.6 53.7 0 89.9 58.0 0 80.6 53.7 77.0 52.4 1.00 1.0 1003 0 .0032 0 .0032 0 0 0 .00318 0 - 20 86.1 57.4 80.6 54.5 0 86.1 57.4 0 80.6 54.5 78.0 53.6 1.00 1.0 1003 0 .0023 0 .0023 0 0 0 .00230 0 - 21 84.4 57.0 80.6 55.0 0 84.4 57.0 0 80.6 55.0 78.6 54.3 1.00 1.0 1003 0 .0017 0 .0017 0 0 0 .00174 0 - 22 81.5 56.4 80.6 55.4 0 81.5 56.4 0 80.6 55.4 79.1 54.8 1.00 1.0 1003 0 .0013 0 .0013 0 0 0 .00135 0 - 23 76.9 56.6 80.6 56.2 0 76.9 56.6 0 80.6 56.2 79.6 55.8 1.00 1.0 1003 0 .0009 0 .0009 0 0 0 .00086 0 - 24 72.5 55.1 80.6 57.3 0 72.5 55.1 0 80.6 57.3 80.2 57.2 1.00 1.0 1003 0 .0003 0 .0003 0 0 0 .00031 0 - -Day 80.7 55.6 79.4 55.1 0 80.7 55.6 0 79.4 55.1 77.7 54.5 24.00 1.0 1003 0 .0361 0 .0361 0 0 0 0.0362 0 + 1 67.6 53.4 80.5 58.1 0 67.6 53.4 0 80.5 58.1 80.5 58.1 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 + 2 68.0 52.4 80.3 57.5 0 68.0 52.4 0 80.3 57.5 80.3 57.5 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 + 3 66.8 51.4 80.0 56.9 0 66.8 51.4 0 80.0 56.9 80.0 56.9 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 + 4 66.0 51.0 79.6 56.4 0 66.0 51.0 0 79.6 56.4 79.6 56.4 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 + 5 64.8 50.4 79.1 56.0 0 64.8 50.4 0 79.1 56.0 79.1 56.0 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 + 6 65.2 50.6 78.7 55.7 0 65.2 50.6 0 78.7 55.7 78.7 55.7 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 + 7 68.5 52.9 78.9 56.0 0 68.5 52.9 0 78.9 56.0 78.9 56.0 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 + 8 74.4 55.9 79.9 56.9 0 74.4 55.9 0 79.9 56.9 79.9 56.9 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 + 9 79.5 56.4 80.6 57.3 0 79.5 56.4 0 80.6 57.3 79.7 57.0 1.00 1.0 1003 0 0.817 0 0.817 0 0 0 0.817 0 + 10 85.4 57.3 80.6 56.6 0 85.4 57.3 0 80.6 56.6 78.3 55.9 1.00 1.0 1003 0 2.009 0 2.009 0 0 -.001 2.009 0 + 11 89.2 57.4 80.6 55.9 0 89.2 57.4 0 80.6 55.9 77.2 54.7 1.00 1.0 1002 0 3.000 0 3.000 0 0 -.002 3.002 0 + 12 90.0 55.8 80.6 54.6 0 90.0 55.8 0 80.6 54.6 76.5 53.1 1.00 1.0 1002 0 3.610 0 3.610 0 0 -.002 3.613 0 + 13 91.9 56.3 80.6 53.3 0 91.9 56.3 0 80.6 53.3 76.0 51.6 1.00 1.0 1002 0 4.040 0 4.040 0 0 -.003 4.043 0 + 14 93.0 57.6 80.6 53.0 0 93.0 57.6 0 80.6 53.0 75.6 51.1 1.00 1.0 1002 0 4.454 0 4.454 0 0 -.003 4.457 0 + 15 94.2 58.6 80.6 53.2 0 94.2 58.6 0 80.6 53.2 75.2 51.2 1.00 1.0 1002 0 4.773 0 4.773 0 0 -.004 4.778 0 + 16 94.4 58.4 80.6 53.4 0 94.4 58.4 0 80.6 53.4 75.0 51.3 1.00 1.0 1002 0 4.951 0 4.951 0 0 -.005 4.956 0 + 17 94.0 58.0 80.6 53.4 0 94.0 58.0 0 80.6 53.4 75.1 51.4 1.00 1.0 1002 0 4.889 0 4.889 0 0 -.004 4.894 0 + 18 93.4 58.0 80.6 53.4 0 93.4 58.0 0 80.6 53.4 75.3 51.5 1.00 1.0 1002 0 4.683 0 4.683 0 0 -.004 4.687 0 + 19 89.9 58.0 80.6 53.7 0 89.9 58.0 0 80.6 53.7 76.1 52.1 1.00 1.0 1003 0 4.006 0 4.006 0 0 -.001 4.008 0 + 20 86.1 57.4 80.6 54.5 0 86.1 57.4 0 80.6 54.5 77.1 53.3 1.00 1.0 1003 0 3.091 0 3.091 0 0 -.001 3.092 0 + 21 84.4 57.0 80.6 55.0 0 84.4 57.0 0 80.6 55.0 77.8 54.0 1.00 1.0 1003 0 2.504 0 2.504 0 0 -.001 2.505 0 + 22 81.5 56.4 80.6 55.4 0 81.5 56.4 0 80.6 55.4 78.2 54.5 1.00 1.0 1003 0 2.091 0 2.091 0 0 -.000 2.091 0 + 23 76.9 56.6 80.6 56.2 0 76.9 56.6 0 80.6 56.2 78.8 55.5 1.00 1.0 1003 0 1.579 0 1.579 0 0 0 1.579 0 + 24 72.5 55.1 80.6 57.3 0 72.5 55.1 0 80.6 57.3 79.5 56.9 1.00 1.0 1003 0 1.004 0 1.004 0 0 0 1.004 0 + +Day 80.7 55.6 80.3 55.4 0 80.7 55.6 0 80.3 55.4 77.8 54.6 24.00 1.0 1003 0 51.50 0 51.50 0 0 -.031 51.533 0 @@ -714,32 +714,32 @@ Hourly Energy Balance, zone "Z1", Wed 16-Oct Hr Tair WBair Cond InfS Slr IgnS Mass Izone MechS BalS InfL IgnL IzoneL AirL MechL BalL ---- ----- ----- ------ ------ ----- ----- ------ ------ ------ ---- ------ ----- ------ ------ ------ ---- - 1 68.13 54.66 0 0 0 .0006 -.0005 -0.000 0 0 0 0 0 0 0 0 - 2 67.17 54.31 0 0 0 .0006 -.0006 .00003 0 0 0 0 0 0 0 0 - 3 66.35 54.01 0 0 0 .0006 -.0007 .00009 0 0 0 0 0 0 0 0 - 4 65.69 53.77 0 0 0 .0006 -.0007 .00016 0 0 0 0 0 0 0 0 - 5 65.14 53.58 0 0 0 .0006 -.0008 .00022 0 0 0 0 0 0 0 0 - 6 64.70 53.41 0 0 0 .0006 -.0008 .00028 0 0 0 0 0 0 0 0 - 7 64.38 53.30 0 0 0 .0006 -.0009 .00033 0 0 0 0 0 0 0 0 - 8 64.65 53.40 0 0 0 .0006 -.0009 .00032 0 0 0 0 0 0 0 0 - 9 65.86 53.83 0 0 0 .0006 -.0008 .00020 0 0 0 0 0 0 0 0 - 10 67.48 54.43 0 0 0 .0006 -.0006 .00006 0 0 0 0 0 0 0 0 - 11 69.30 55.08 0 0 0 .0006 -.0006 .00003 0 0 0 0 0 0 0 0 - 12 71.12 55.75 0 0 0 .0006 -.0006 .00002 0 0 0 0 0 0 0 0 - 13 73.05 56.41 0 0 0 .0006 -.0006 .00003 0 0 0 0 0 0 0 0 - 14 74.85 57.01 0 0 0 .0006 -.0006 .00005 0 0 0 0 0 0 0 0 - 15 76.43 57.54 0 0 0 .0006 -.0006 .00007 0 0 0 0 0 0 0 0 - 16 77.73 57.97 0 0 0 .0006 -.0007 .00009 0 0 0 0 0 0 0 0 - 17 78.63 58.27 0 0 0 .0006 -.0007 .00009 0 0 0 0 0 0 0 0 - 18 78.74 58.31 0 0 0 .0006 -.0006 .00005 0 0 0 0 0 0 0 0 - 19 77.69 57.96 0 0 0 .0006 -.0006 -0.000 0 0 0 0 0 0 0 0 - 20 76.43 57.54 0 0 0 .0006 -.0005 -0.000 0 0 0 0 0 0 0 0 - 21 75.15 57.11 0 0 0 .0006 -.0005 -.0001 0 0 0 0 0 0 0 0 - 22 73.86 56.68 0 0 0 .0006 -.0004 -.0001 0 0 0 0 0 0 0 0 - 23 72.41 56.20 0 0 0 .0006 -.0004 -.0002 0 0 0 0 0 0 0 0 - 24 71.09 55.74 0 0 0 .0006 -.0004 -.0002 0 0 0 0 0 0 0 0 - - Day 71.08 55.73 0 0 0 .0135 -.0150 .00150 0 0 0 0 0 0 0 0 + 1 75.14 57.11 0 0 0 1.563 -0.881 -0.682 0 0 0 0 0 0 0 0 + 2 73.94 56.71 0 0 0 1.563 -0.874 -0.689 0 0 0 0 0 0 0 0 + 3 73.02 56.40 0 0 0 1.563 -0.986 -0.577 0 0 0 0 0 0 0 0 + 4 72.33 56.17 0 0 0 1.563 -1.101 -0.462 0 0 0 0 0 0 0 0 + 5 71.78 55.98 0 0 0 1.563 -1.187 -0.376 0 0 0 0 0 0 0 0 + 6 71.31 55.82 0 0 0 1.563 -1.254 -0.309 0 0 0 0 0 0 0 0 + 7 70.97 55.69 0 0 0 1.563 -1.303 -0.260 0 0 0 0 0 0 0 0 + 8 71.23 55.78 0 0 0 1.563 -1.301 -0.262 0 0 0 0 0 0 0 0 + 9 72.40 56.19 0 0 0 1.563 -1.164 -0.399 0 0 0 0 0 0 0 0 + 10 74.07 56.75 0 0 0 1.563 -1.080 -0.483 0 0 0 0 0 0 0 0 + 11 75.97 57.39 0 0 0 1.563 -1.072 -0.491 0 0 0 0 0 0 0 0 + 12 77.90 58.03 0 0 0 1.563 -1.097 -0.466 0 0 0 0 0 0 0 0 + 13 79.94 58.71 0 0 0 1.563 -1.138 -0.425 0 0 0 0 0 0 0 0 + 14 81.90 59.37 0 0 0 1.563 -1.187 -0.376 0 0 0 0 0 0 0 0 + 15 83.65 59.95 0 0 0 1.563 -1.230 -0.333 0 0 0 0 0 0 0 0 + 16 84.94 60.35 0 0 0 1.563 -1.162 -0.401 0 0 0 0 0 0 0 0 + 17 85.62 60.56 0 0 0 1.563 -1.038 -0.525 0 0 0 0 0 0 0 0 + 18 85.64 60.56 0 0 0 1.563 -1.002 -0.561 0 0 0 0 0 0 0 0 + 19 84.58 60.24 0 0 0 1.563 -0.977 -0.586 0 0 0 0 0 0 0 0 + 20 83.29 59.83 0 0 0 1.563 -0.943 -0.620 0 0 0 0 0 0 0 0 + 21 82.00 59.40 0 0 0 1.563 -0.916 -0.647 0 0 0 0 0 0 0 0 + 22 80.72 58.97 0 0 0 1.563 -0.892 -0.671 0 0 0 0 0 0 0 0 + 23 79.30 58.50 0 0 0 1.563 -0.871 -0.692 0 0 0 0 0 0 0 0 + 24 78.02 58.07 0 0 0 1.563 -0.865 -0.698 0 0 0 0 0 0 0 0 + + Day 77.90 58.03 0 0 0 37.51 -25.52 -11.99 0 0 0 0 0 0 0 0 @@ -747,32 +747,32 @@ Hourly Air Handler Report, air handler "MainAH", Wed 16-Oct Hr Toa WBoa Tra WBra Foa Thx WBhx Fhx Tmx WBmx Tsa WBsa HrsOn FOn VF Qheat -Qsen -Qlat -Qcoo Qout Qfan Qloss Qload Qbal --- ---- ---- ---- ---- --- ---- ---- --- ---- ---- ---- ---- ----- --- ----- ----- ----- ----- ----- ----- ---- ----- ------ ---- - 1 45.8 37.4 68.0 47.3 0 45.8 37.4 0 68.0 47.3 68.0 47.3 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 - 2 45.0 36.4 68.0 47.3 0 45.0 36.4 0 68.0 47.3 68.0 47.3 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 - 3 45.0 36.0 68.0 47.2 0 45.0 36.0 0 68.0 47.2 68.0 47.2 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 + 1 45.8 37.4 69.3 47.9 0 45.8 37.4 0 69.3 47.9 69.3 47.9 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 + 2 45.0 36.4 68.1 47.4 0 45.0 36.4 0 68.1 47.4 68.1 47.4 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 + 3 45.0 36.0 68.0 47.1 0 45.0 36.0 0 68.0 47.1 68.0 47.1 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 4 45.0 36.0 68.0 47.0 0 45.0 36.0 0 68.0 47.0 68.0 47.0 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 5 45.0 36.0 68.0 46.9 0 45.0 36.0 0 68.0 46.9 68.0 46.9 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 6 45.0 36.0 68.0 46.9 0 45.0 36.0 0 68.0 46.9 68.0 46.9 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 - 7 45.0 36.6 68.0 46.9 0 45.0 36.6 0 68.0 46.9 68.0 46.9 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 + 7 45.0 36.6 68.0 46.8 0 45.0 36.6 0 68.0 46.8 68.0 46.8 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 8 50.6 39.5 68.0 47.0 0 50.6 39.5 0 68.0 47.0 68.0 47.0 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 - 9 59.6 44.2 68.0 47.1 0 59.6 44.2 0 68.0 47.1 68.0 47.1 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 - 10 66.1 47.9 68.4 47.8 0 66.1 47.9 0 68.4 47.8 68.4 47.8 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 - 11 70.5 49.6 69.8 49.0 0 70.5 49.6 0 69.8 49.0 69.8 49.0 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 - 12 75.8 51.3 71.7 49.8 0 75.8 51.3 0 71.7 49.8 71.7 49.8 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 - 13 78.6 52.0 73.8 50.4 0 78.6 52.0 0 73.8 50.4 73.8 50.4 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 - 14 79.6 50.1 75.9 50.5 0 79.6 50.1 0 75.9 50.5 75.9 50.5 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 - 15 80.0 49.0 77.7 49.7 0 80.0 49.0 0 77.7 49.7 77.7 49.7 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 - 16 80.0 49.0 79.2 49.5 0 80.0 49.0 0 79.2 49.5 79.2 49.5 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 - 17 78.1 48.4 80.1 49.4 0 78.1 48.4 0 80.1 49.4 80.1 49.4 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 - 18 65.8 46.1 79.3 49.7 0 65.8 46.1 0 79.3 49.7 79.3 49.7 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 - 19 57.8 43.8 77.3 50.5 0 57.8 43.8 0 77.3 50.5 77.3 50.5 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 - 20 55.1 42.4 75.4 50.3 0 55.1 42.4 0 75.4 50.3 75.4 50.3 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 - 21 53.4 41.4 73.6 49.9 0 53.4 41.4 0 73.6 49.9 73.6 49.9 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 - 22 49.9 39.1 71.9 49.1 0 49.9 39.1 0 71.9 49.1 71.9 49.1 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 - 23 49.2 38.6 70.2 48.2 0 49.2 38.6 0 70.2 48.2 70.2 48.2 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 - 24 46.9 37.1 68.6 47.4 0 46.9 37.1 0 68.6 47.4 68.6 47.4 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 + 9 59.6 44.2 68.1 47.1 0 59.6 44.2 0 68.1 47.1 68.1 47.1 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 + 10 66.1 47.9 69.4 48.3 0 66.1 47.9 0 69.4 48.3 69.4 48.3 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 + 11 70.5 49.6 71.3 49.6 0 70.5 49.6 0 71.3 49.6 71.3 49.6 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 + 12 75.8 51.3 73.4 50.5 0 75.8 51.3 0 73.4 50.5 73.4 50.5 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 + 13 78.6 52.0 75.7 51.2 0 78.6 52.0 0 75.7 51.2 75.7 51.2 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 + 14 79.6 50.1 78.1 51.3 0 79.6 50.1 0 78.1 51.3 78.1 51.3 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 + 15 80.0 49.0 80.1 50.6 0 80.0 49.0 0 80.1 50.6 80.0 50.6 1.00 1.0 1003 0 0 0 0 0 0 0 .00004 0 + 16 80.0 49.0 80.6 50.0 0 80.0 49.0 0 80.6 50.0 79.7 49.6 1.00 1.0 1003 0 .0008 0 .0008 0 0 0 .00082 0 + 17 78.1 48.4 80.6 49.8 0 78.1 48.4 0 80.6 49.8 79.4 49.3 1.00 1.0 1003 0 .0011 0 .0011 0 0 0 .00109 0 + 18 65.8 46.1 80.5 50.3 0 65.8 46.1 0 80.5 50.3 80.1 50.1 1.00 1.0 1003 0 .0003 0 .0003 0 0 0 .00032 0 + 19 57.8 43.8 79.2 51.3 0 57.8 43.8 0 79.2 51.3 79.2 51.3 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 + 20 55.1 42.4 77.7 51.3 0 55.1 42.4 0 77.7 51.3 77.7 51.3 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 + 21 53.4 41.4 76.3 51.0 0 53.4 41.4 0 76.3 51.0 76.3 51.0 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 + 22 49.9 39.1 74.9 50.3 0 49.9 39.1 0 74.9 50.3 74.9 50.3 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 + 23 49.2 38.6 73.4 49.5 0 49.2 38.6 0 73.4 49.5 73.4 49.5 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 + 24 46.9 37.1 72.0 48.8 0 46.9 37.1 0 72.0 48.8 72.0 48.8 1.00 1.0 1003 0 0 0 0 0 0 0 0 0 -Day 58.9 43.0 71.9 48.6 0 58.9 43.0 0 71.9 48.6 71.9 48.6 24.00 1.0 1003 0 0 0 0 0 0 0 0 0 +Day 58.9 43.0 73.2 49.1 0 58.9 43.0 0 73.2 49.1 73.1 49.1 24.00 1.0 1003 0 .0023 0 .0023 0 0 0 .00226 0 @@ -822,7 +822,7 @@ IzXfer Zn1: Z1 Zn2: Z2 UAconst: 5.000 NVctrl: TwoWay ! Log for Run 001: -! CSE 0.920.0+main.99c64c5b.17 for Win32 console +! CSE 0.927.0-rc2+64bit-fixes.92bd2d87.9.dirty for Win32 console @@ -1121,6 +1121,8 @@ Input for Run 001: IZXFER izZn1=Z1 izZn2=Z2 izHConst=5. izNVType=TWOWAY izALo=2 izAHi=2 izHD=5 + GAIN IX gnPower=1000 + //----- ZONE SECTION ----- ZONE Z1 @@ -1135,10 +1137,14 @@ Input for Run 001: gnEndUse=Lit gnPower=INTGAIN*.4 - GAIN IX1 + GAIN TestContext gnPower = @GAIN["IX"].gnPower + + GAIN IX1 gnMeter=GAINMETER gnEndUse=DHW gnPower=$DayOfYear + + GAIN IX gnPower=1 // potentially ambiguous name SURFACE Roof sfType=Ceiling @@ -1265,7 +1271,10 @@ Input for Run 001: gnMeter=GAINMETER gnEndUse=Htg gnPower=$DayOfYear*.9 - + + // GAIN IX3 gnPower = @GAIN[ "IX"].gnPower ambiguous + + SURFACE Roof sfType=Ceiling sfModel=SURFTYPE @@ -1412,6 +1421,8 @@ Input for Run 001: tuVfMn =.0001 + ACH * (4576.8 / 60) //Air Changes per hour times Zone vol/60 //--------- REPORTS ------------ + + // DELETE Reportfile "Primary" error condition test REPORT rpType=AH rpAH="MainAH" rpFreq=Month @@ -1439,11 +1450,11 @@ Input for Run 001: reportcol colVal=@Top.qcPeakH ColHead="Pk Hr" reportcol colval=@meter[CoolMETER].y.tot* 0.000000292997 ColHead="Yr mWh" - REPORT rpType=ZEB rpZone=Z1 rpDayBeg=Jan 4 rpDayEnd=Jan 4 rpFreq=Hour - REPORT rpType=AH rpAH="MainAH" rpDayBeg=Jan 4 rpDayEnd=Jan 4 rpFreq=HOUR - REPORT rpType=ZEB rpZone=Z1 rpDayBeg=Jul 26 rpDayEnd=Jul 26 rpFreq=Hour - REPORT rpType=AH rpAH="MainAH" rpDayBeg=Jul 26 rpDayEnd=Jul 26 rpFreq=HOUR - REPORT rpType=ZEB rpZone=Z1 rpDayBeg=Oct 16 rpDayEnd= Oct 16 rpFreq=Hour + REPORT rpType=ZEB rpZone=Z1 rpDayBeg=Jan 4 rpDayEnd=Jan 4 rpFreq=Hour rpBtuSf=1000 + REPORT rpType=AH rpAH="MainAH" rpDayBeg=Jan 4 rpDayEnd=Jan 4 rpFreq=HOUR rpBtuSf=1000 + REPORT rpType=ZEB rpZone=Z1 rpDayBeg=Jul 26 rpDayEnd=Jul 26 rpFreq=Hour rpBtuSf=1000 + REPORT rpType=AH rpAH="MainAH" rpDayBeg=Jul 26 rpDayEnd=Jul 26 rpFreq=HOUR rpBtuSf=1000 + REPORT rpType=ZEB rpZone=Z1 rpDayBeg=Oct 16 rpDayEnd= Oct 16 rpFreq=Hour rpBtuSf=1000 REPORT rpType=AH rpAH="MainAH" rpDayBeg= Oct 16 rpDayEnd= Oct 16 rpFreq=HOUR // REPORT rpType=AH rpAH="Infil" rpDayBeg=Jan 4 rpDayEnd=Jan 4 rpFreq=HOUR // REPORT rpType=AH rpAH="Infil" rpDayBeg=Jul 26 rpDayEnd=Jul 26 rpFreq=HOUR @@ -1633,18 +1644,18 @@ Input for Run 001: -! CSE 0.920.0+main.99c64c5b.17 for Win32 console run(s) done: Mon 18-Dec-23 4:17:54 pm +! CSE 0.927.0-rc2+64bit-fixes.92bd2d87.9.dirty for Win32 console run(s) done: Fri 24-Oct-25 9:5 am -! Executable: d:\cse\msvc\cse.exe -! 18-Dec-23 4:07 pm (VS 14.29 2796544 bytes) (HPWH 1.22.0+HEAD.f9b8f77.122) -! Command line: -x! -b -t1 2Zone -! Input file: D:\cse\test\2Zone.cse +! Executable: d:\cse\builds\cse.exe +! 24-Oct-25 9:4 am (VS 14.29 3424256 bytes) (HPWH 1.26.0) +! Command line: -x! -t1 2zone +! Input file: D:\cse\test\2zone.cse ! Report file: D:\CSE\TEST\2ZONE.REP ! Timing info -- -! Input: Time = 0.01 Calls = 1 T/C = 0.0130 +! Input: Time = 0.02 Calls = 1 T/C = 0.0170 ! AutoSizing: Time = 0.00 Calls = 0 T/C = 0.0000 -! Simulation: Time = 0.52 Calls = 1 T/C = 0.5200 -! Reports: Time = 0.00 Calls = 1 T/C = 0.0010 -! Total: Time = 0.54 Calls = 1 T/C = 0.5350 +! Simulation: Time = 0.33 Calls = 1 T/C = 0.3310 +! Reports: Time = 0.00 Calls = 1 T/C = 0.0020 +! Total: Time = 0.35 Calls = 1 T/C = 0.3550 diff --git a/test/ref-win32-msvc/commands.rep b/test/ref-win32-msvc/commands.rep index 93efc63f5..daba28b5f 100644 --- a/test/ref-win32-msvc/commands.rep +++ b/test/ref-win32-msvc/commands.rep @@ -131,7 +131,7 @@ Hourly Energy Balance, zone "Z2", Wed 10-Jul ! Log for Run 001: -! CSE 0.922.1+perfmap.7b21cfab.13.dirty for Win32 console +! CSE 0.927.0-rc2+64bit-fixes.92bd2d87.9.dirty for Win32 console @@ -288,6 +288,8 @@ Input for Run 001: DEFTYPE SURFACE "IntWall" USETYPE WALL sfExCnd=ADJZN sfAdjZn = "Z2" + DEFTYPE SURFACE WALL2 USETYPE WALL + ZONE Z1 znModel = CZM @@ -311,7 +313,7 @@ Input for Run 001: SURFACE WallN1 USETYPE WALL sfAzm = 0 sfExH = 1.3 SURFACE WallS1 USETYPE WALL sfAzm = 180 sfCon = CFrm2x4 sfExHcLChar = 18 - SURFACE WallW1 USETYPE WALL sfAzm = 270 sfCon = lw_floor + SURFACE WallW1 USETYPE WALL2 sfAzm = 270 sfCon = lw_floor SURFACE WallIZ USETYPE IntWall sfAzm = 270 sfTilt=85 sfCon = CFrm2x4 SURFACE Clg1 @@ -505,7 +507,7 @@ Hourly Energy Balance, zone "Z2", Wed 10-Jul ! Log for Run 002: -! CSE 0.922.1+perfmap.7b21cfab.13.dirty for Win32 console +! CSE 0.927.0-rc2+64bit-fixes.92bd2d87.9.dirty for Win32 console @@ -814,7 +816,7 @@ Hourly Energy Balance, zone "Z2", Wed 10-Jul ! Log for Run 003: -! CSE 0.922.1+perfmap.7b21cfab.13.dirty for Win32 console +! CSE 0.927.0-rc2+64bit-fixes.92bd2d87.9.dirty for Win32 console @@ -962,7 +964,7 @@ Hourly Energy Balance, zone "Z3", Wed 10-Jul ! Log for Run 004: -! CSE 0.922.1+perfmap.7b21cfab.13.dirty for Win32 console +! CSE 0.927.0-rc2+64bit-fixes.92bd2d87.9.dirty for Win32 console @@ -1432,7 +1434,7 @@ Day Total Unknown Faucet Shower Bath CWashr DWashr ! Log for Run 005: -! CSE 0.922.1+perfmap.7b21cfab.13.dirty for Win32 console +! CSE 0.927.0-rc2+64bit-fixes.92bd2d87.9.dirty for Win32 console @@ -3043,7 +3045,7 @@ Day Total Unknown Faucet Shower Bath CWashr DWashr ! Log for Run 006: -! CSE 0.922.1+perfmap.7b21cfab.13.dirty for Win32 console +! CSE 0.927.0-rc2+64bit-fixes.92bd2d87.9.dirty for Win32 console @@ -3064,18 +3066,18 @@ Input for Run 006: -! CSE 0.922.1+perfmap.7b21cfab.13.dirty for Win32 console run(s) done: Fri 10-May-24 2:13:41 pm +! CSE 0.927.0-rc2+64bit-fixes.92bd2d87.9.dirty for Win32 console run(s) done: Wed 22-Oct-25 1:4 pm ! Executable: d:\cse\builds\cse.exe -! 10-May-24 2:07 pm (VS 14.29 2921984 bytes) (HPWH 1.23.0+HEAD.db504de.130) +! 22-Oct-25 1:2 pm (VS 14.29 3423744 bytes) (HPWH 1.26.0) ! Command line: -x! -t1 commands ! Input file: D:\cse\test\commands.cse ! Report file: D:\CSE\TEST\COMMANDS.REP ! Timing info -- -! Input: Time = 0.28 Calls = 6 T/C = 0.0463 +! Input: Time = 0.29 Calls = 6 T/C = 0.0487 ! AutoSizing: Time = 0.00 Calls = 0 T/C = 0.0000 -! Simulation: Time = 5.92 Calls = 6 T/C = 0.9868 -! Reports: Time = 0.01 Calls = 6 T/C = 0.0010 -! Total: Time = 6.22 Calls = 1 T/C = 6.2220 +! Simulation: Time = 4.29 Calls = 6 T/C = 0.7142 +! Reports: Time = 0.01 Calls = 6 T/C = 0.0012 +! Total: Time = 4.61 Calls = 1 T/C = 4.6070 From ce97f2903ab0de7067af5f3b9a2c2f779272339e Mon Sep 17 00:00:00 2001 From: Chip Barnaby Date: Fri, 24 Oct 2025 11:27:40 -0400 Subject: [PATCH 11/11] Drop now-unused basAnc findRecByNmXX() member functions --- src/ancrec.cpp | 251 +------------------------------------------------ src/ancrec.h | 15 +-- 2 files changed, 6 insertions(+), 260 deletions(-) diff --git a/src/ancrec.cpp b/src/ancrec.cpp index c9962d11b..f00432ea3 100644 --- a/src/ancrec.cpp +++ b/src/ancrec.cpp @@ -1203,254 +1203,9 @@ RC basAnc::ba_Validate( // validate an anchor: check self-consistency of anchor return RCOK; // if here, all OK } // basAnc::ba_Validate - - -//--------------------------------------------------------------------------------------------------------------------------- -RC basAnc::findRecByNm1( // find record by name and owner subscript (first match). No msg here. - // see also findRecByNmDefO(). - const char* _name, // name to look for - TI* _i, // NULL or receives subscript of entry if found - record** _r) // NULL or receives entry ptr if found -{ - - record* r1Old = nullptr; - - int iRec = 0; - - RC rcOld = findRecByNm1X(_name, &iRec, &r1Old); - - - RC rcNew = FindRecByName(this, _name, 0, _r, _i); - - bool rGood = !_r || (_r && *_r == r1Old); - - if (rcOld != rcNew || !rGood || (_i && iRec != *_i)) - { - record* r1NewX; - RC rcX = FindRecByName(this, _name, 0, &r1NewX); - err(PABT, "findRecByNm1 mismatch"); - } - - return rcNew; - -} - - -//--------------------------------------------------------------------------------------------------------------------------- -RC basAnc::findRecByNm1X( // find record by 1st match on name, RCOK if found, no msg here. - // can and should all uses be changed to findRecByNmU ?? <<<< - const char* _name, // record name to look for - TI *_i, // NULL or receives subscript of entry if found - record **_r ) // NULL or receives entry ptr if found -{ - if (this==nullptr) // test for 0 'this' pointer - return RCBAD; // return NOT FOUND if called for NULL anc pointer (occurs re types if .tyB 0) - record *r; - RLUPTHIS(r) // loop over records, setting r to point to each good one - if (r->IsNameMatch( _name)) // if matches - { - if (_i) *_i = r->ss; // found. return info - if (_r) *_r = r; // .. - return RCOK; // good return - } - return RCBAD; // not found return -} // basAnc::findRecByNm1 - -//--------------------------------------------------------------------------------------------------------------------------- -RC basAnc::findRecByNmU( // find record by name and owner subscript (first match). No msg here. - // see also findRecByNmDefO(). - const char* _name, // name to look for - TI* _i, // NULL or receives subscript of entry if found - record** _r) // NULL or receives entry ptr if found -{ - record* r1Old = nullptr; - - int iRec = 0; - - RC rcOld = findRecByNmUX(_name, &iRec, &r1Old); - - RC rcNew = FindRecByName(this, _name, frnUNIQUE, _r, _i); - - bool rGood = !_r || (_r && *_r == r1Old); - - if (rcOld != rcNew || !rGood || (_i && (*_i != iRec))) - err(PABT, "findRecByNmU mismatch"); - - return rcNew; - -} -//--------------------------------------------------------------------------------------------------------------------------- -RC basAnc::findRecByNmUX( // find record by unique name match. RCBAD not found, RCBAD2 ambiguous, no msgs here. - const char* _name, // record name to look for - TI *_i, // NULL or receives subscript of entry if found - record **_r ) // NULL or receives entry ptr if found -{ - if (this==nullptr) - return RCBAD; // return NOT FOUND if called for NULL anc pointer (ocurs re types if .tyB 0) - record *r, *r1 = nullptr; - int nHits = 0; - RLUPTHIS(r) // loop over records, setting r to point to each good one - { if (r->IsNameMatch(_name)) // if matches - { if (nHits++) - return RCBAD2; // if seen before, bad (ambigous) return - else - r1 = r; // else save record addr, continue search to be sure unique - } - } - - if (!nHits) - return RCBAD; // no matches, give bad (not found) return - if (_i) // exactly 1 match if here. return info. - *_i = r1->ss; - if (_r) - *_r = r1; // .. - return RCOK; // good return -} // basAnc::findRecByNmU - -//--------------------------------------------------------------------------------------------------------------------------- -RC basAnc::findRecByNmOX( // find record by name and owner subscript (first match). No msg here. - // see also findRecByNmDefO(). - const char* _name, // name to look for - TI ownTi, // required owner subscript (should be non-0) - TI *_i, // NULL or receives subscript of entry if found - record **_r ) // NULL or receives entry ptr if found -{ - if (this==nullptr) - return RCBAD; // return NOT FOUND if called for NULL anc pointer (occurs re types if .tyB 0) - - // add isOwnable check if it is possible for anchor to be non-ownAble, 2-92. - record *r; - RLUPTHIS(r) // loop over records, setting r to point to each good one - { if (r->ownTi==ownTi // if owning object subscript matches - && r->IsNameMatch(_name)) // if name matches - { if (_i) *_i = r->ss; // found. return info - if (_r) *_r = r; // .. - return RCOK; // good return - } - } - return RCBAD; // not found return -} // basAnc::findRecByNmO - -//--------------------------------------------------------------------------------------------------------------------------- -RC basAnc::findRecByNmO( // find record by name and owner subscript (first match). No msg here. - // see also findRecByNmDefO(). - const char* _name, // name to look for - TI ownTi, // required owner subscript (should be non-0) - TI* _i, // NULL or receives subscript of entry if found - record** _r) // NULL or receives entry ptr if found -{ - record* r1Old = nullptr; - - int iRec = 0; - - RC rcOld = findRecByNmOX(_name, ownTi, &iRec, &r1Old); - - RC rcNew = FindRecByName(this, _name, ownTi, _r); - - if (rcOld != rcNew || (_r != nullptr && (r1Old != *_r || (*_r != nullptr && iRec != (*_r)->ss)))) - err(PABT, "findRecByNmO mismatch"); - - return rcNew; - -} -//---------------------------------------------------------------------------------------- -RC basAnc::findRecByNmDefO( // find record by name, and owner if ambiguous - - // Accepts unambiguous match with another owner; - // returns info for caller to do detailed err msg if ambiguous; no msg here. - // DOUBLE CAUTION: following recoded 3-92 without specific test: - //// CAUTION: currently 1-92 does not check for multiple entries with same owner TI. - - const char* _name, // name to look for - TI ownTi, // default owner subscript - record** _r1, // NULL or rcvs entry ptr if any found; rcvs NULL if no match - record** _r2) // NULL or receives duplicate entry ptr if ambiguous -{ - - record* r1Old = nullptr; - record* r2Old = nullptr; - - RC rcOld = findRecByNmDefOX(_name, ownTi, &r1Old, &r2Old); - - RC rcNew = FindRecByName(this, _name, ownTi|frnACCEPTNONOWNER, _r1, nullptr, _r2); - - if (rcOld != rcNew || (_r1 != nullptr && r1Old != *_r1) || (_r2 != nullptr && r2Old != *_r2)) - { - RC rcNewX = FindRecByName(this, _name, ownTi|frnACCEPTNONOWNER, _r1, nullptr, _r2); - err(PABT, "findRecByNmDefO mismatch"); - } - - return rcNew; -} - - - -//--------------------------------------------------------------------------------------------------------------------------- -RC basAnc::findRecByNmDefOX( // find record by name, and owner if ambiguous - - // Accepts unambiguous match with another owner; - // returns info for caller to do detailed err msg if ambiguous; no msg here. - // DOUBLE CAUTION: following recoded 3-92 without specific test: - //// CAUTION: currently 1-92 does not check for multiple entries with same owner TI. - - const char* _name, // name to look for - TI ownTi, // default owner subscript - record **_r1, // NULL or rcvs entry ptr if any found; rcvs NULL if no match - record **_r2 ) // NULL or receives duplicate entry ptr if ambiguous - -/* returns found: RCOK, *_r1 set. - no match: RCBAD, *_r1 NULL. - ambiguous match: RCBAD2, *_r1 and *_r2 point to 1st 2 matching entries */ -{ - // add isOwnable check if it is possible for anchor to be non-ownAble, 2-92. - if (_r1) *_r1 = NULL; // init to "not found" as opposed to "ambiguous" - if (this==nullptr) - return RCBAD; // return NOT FOUND if called for NULL anc pointer (ocurs re types if .tyB 0) - SI oSeen=0, nHits=0; // no name matches found yet - record *r, *r1=NULL, *r2=NULL; - RLUPTHIS(r) // loop over records, setting r to point to each good one - { if (!oSeen || ownTi==r->ownTi) // if no owned match yet or correct owner: - // do not test any more wrong-owner records after one ownTi+name match. - if (r->IsNameMatch( _name)) // if name matches - { - if (ownTi==r->ownTi && !oSeen++) // if first record with correct owner - nHits = 0; // forget any name matches with wrong owner - if (++nHits==1) r1 = r; // first match. Will be returned as uniquely found record if no more matches. - else if (nHits==2) r2 = r; // second match: save record pointer for "ambiguous" return - } - } - if (nHits==0) return RCBAD; // not found. Another NOT FOUND return above for NULL 'this'. - if (_r1) *_r1 = r1; // first found record address - if (nHits==1) return RCOK; // unique match: found - if (_r2) *_r2 = r2; // second found record address - return RCBAD2; // nHits > 1: ambiguous -} // basAnc::findRecByNmDefOX - -#if 0 -/*static*/ RC basAnc::FindRecByName( - const basAnc* _b, // basAnc in which to search - // may be nullptr (returns RCBAD) - const char* _name, // name to look for - TI ownerTIOpt, // options and/or required owner subscript - // - TI* pTi /*=nullptr*/, // NULL or receives subscript of entry if found - record** pRp /*=nullptr*/) // NULL or receives entry ptr if found - -{ - RC rc = FindRecByName(_b, _name, ownerTIOpt, pRp, pTi); - - return RC - - - - } - -} -#endif - //--------------------------------------------------------------------------------------------------------------------------- -/*static*/ RC basAnc::FindRecByName( // inner find record by unique name match - const basAnc* _b, // basAnc in which to search +/*static*/ RC basAnc::FindRecByName( // find record by name (and owner) match + const basAnc* _b, // basAnc in which to search (nullptr OK, returns RCBAD) const char* _name, // record name to look for int ownerTIOpt /*=0*/, // low bits = TI of owner (0=don't care) // hi bits: @@ -1461,6 +1216,8 @@ RC basAnc::findRecByNmDefOX( // find record by name, and owner if ambiguous TI* pTi /*=nullptr*/, // nullptr or receives TI (subscript) of record found record **pr2 /*=nullptr*/) // nullptr or receives 2nd entry found +// IMPORTANT: FindRecByName() is static to support _b == nullptr (happens when b->tyB == nullptr). +// Cannot be a member function because clang objects to this==nullptr. // returns: found: RCOK, *pr1 set. // no match: RCBAD, *pr1 nullptr diff --git a/src/ancrec.h b/src/ancrec.h index a0170745e..d84dcac0e 100644 --- a/src/ancrec.h +++ b/src/ancrec.h @@ -103,24 +103,13 @@ class basAnc // base class for record anchors: basAnc static RC ba_ValidateSafe(const basAnc* _this, const char* fcnName, int erOp = ABT, bool noStat = false); RC ba_Validate( const char* fcnName, int erOp=ABT, bool noStat=false) const; // check for valid anchor record* Get1stForOwner(int ss); - RC findRecByNm1( const char* _name, TI *_i, record **_r); // find record by 1st match on name - RC findRecByNm1X( const char* _name, TI *_i, record **_r); // find record by 1st match on name - - RC findRecByNmU( const char* _name, TI *_i, record **_r); // find record by unique name match - RC findRecByNmUX( const char* _name, TI *_i, record **_r); // find record by unique name match - - RC findRecByNmO( const char* _name, TI ownTi, TI *_i, record **_r); // find record by name and owner subscript - RC findRecByNmOX( const char* _name, TI ownTi, TI *_i, record **_r); // find record by name and owner subscript - - RC findRecByNmDefO( const char* _name, TI ownTi, record **_r1, record **_r2 ); // find record by name, and owner if ambiguous - RC findRecByNmDefOX( const char* _name, TI ownTi, record **_r1, record **_r2 ); // find record by name, and owner if ambiguous - - + static constexpr int frn1STMATCH = 0; static constexpr int frnUNIQUE = 0x40000000; static constexpr int frnACCEPTNONOWNER = 0x20000000; static constexpr int frnTIMASK = 0x01ffffff; static RC FindRecByName(const basAnc* _b, const char* _name, int ownerTIOpt=0, record** pr1=nullptr, TI* pTi=nullptr, record** pr2=nullptr); + const char* getChoiTx( int fn, int options=0, SI chan=-1, BOOL* bIsHid=NULL) const; const char* culMbrIdTx(int fn) const; int culMbrArrayDim(int fn) const;