diff --git a/CustomCharacteristic.md b/CustomCharacteristic.md index 3943639e..f6493477 100644 --- a/CustomCharacteristic.md +++ b/CustomCharacteristic.md @@ -76,6 +76,8 @@ From BLE_common.h |BLE_targetPosition |0x19 |int36|Position (in steps) the motor is maintaining. | |BLE_externalControl |0x1A |bool |01 disables internal calculation of targetPosition.| |BLE_syncMode |0x1B |bool |01 stops motor movement for external calibration | +|BLE_UDPLogging |0x2E |bool |Enable/disable UDP log streaming | +|BLE_BLELogging |0x30 |bool/str|Write: enable/disable BLE log streaming. Read: returns last log message| *syncMode will disable the movement of the stepper motor by forcing stepperPosition = targetPosition prior to the motor control. While this mode is enabled, it allows the client to set parameters like incline and shifterPosition without moving the motor from it's current position. Once the parameters are set, this mode should be turned back off and SS2K will resume normal operation. diff --git a/Hardware/Common Assets/Inserts/Alibre/Schwinn AC Star Knob.AD_PRT b/Hardware/Common Assets/Inserts/Alibre/Schwinn AC Star Knob.AD_PRT new file mode 100644 index 00000000..c042b840 Binary files /dev/null and b/Hardware/Common Assets/Inserts/Alibre/Schwinn AC Star Knob.AD_PRT differ diff --git a/Hardware/Common Assets/Inserts/Schwinn AC Star Knob.stp b/Hardware/Common Assets/Inserts/Schwinn AC Star Knob.stp new file mode 100644 index 00000000..73f3f8a8 --- /dev/null +++ b/Hardware/Common Assets/Inserts/Schwinn AC Star Knob.stp @@ -0,0 +1,1740 @@ +ISO-10303-21; +HEADER; +/* Generated by software containing ST-Developer + * from STEP Tools, Inc. (www.steptools.com) + */ + +FILE_DESCRIPTION( +/* description */ ('Alibre Inc.'), +/* implementation_level */ '2;1'); + +FILE_NAME( +/* name */ 'export-18C7F01F-83FA-4396-9CBF-488B30F7F6B1', +/* time_stamp */ '2026-01-31T09:36:32-06:00', +/* author */ (''), +/* organization */ (''), +/* preprocessor_version */ 'ST-DEVELOPER v17', +/* originating_system */ 'Alibre', +/* authorisation */ ''); + +FILE_SCHEMA (('CONFIG_CONTROL_DESIGN')); +ENDSEC; + +DATA; +#10=MECHANICAL_CONTEXT('detailed design',#18,'mechanical'); +#11=PRODUCT_RELATED_PRODUCT_CATEGORY('detail','',(#98)); +#12=CC_DESIGN_SECURITY_CLASSIFICATION(#14,(#97)); +#13=SECURITY_CLASSIFICATION_LEVEL('unclassified'); +#14=SECURITY_CLASSIFICATION('name','Security for version',#13); +#15=SHAPE_DEFINITION_REPRESENTATION(#16,#1589); +#16=PRODUCT_DEFINITION_SHAPE('','DefinitionDesc',#96); +#17=APPLICATION_PROTOCOL_DEFINITION('AP definition status', +'config_control_design',1994,#18); +#18=APPLICATION_CONTEXT( +'control the configuration of three dimensional design'); +#19=DESIGN_CONTEXT('detailed design',#18,'design'); +#20=PERSON_AND_ORGANIZATION_ROLE('creator'); +#21=PERSON_AND_ORGANIZATION_ROLE('classification_officer'); +#22=PERSON_AND_ORGANIZATION_ROLE('creator'); +#23=PERSON_AND_ORGANIZATION_ROLE('design_supplier'); +#24=PERSON_AND_ORGANIZATION_ROLE('design_owner'); +#25=CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT(#57,#20,(#96)); +#26=CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT(#60,#21,(#14)); +#27=CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT(#61,#22,(#97)); +#28=CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT(#62,#23,(#97)); +#29=CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT(#63,#24,(#98)); +#30=DATE_TIME_ROLE('creation_date'); +#31=DATE_TIME_ROLE('classification_date'); +#32=CC_DESIGN_DATE_AND_TIME_ASSIGNMENT(#86,#30,(#96)); +#33=CC_DESIGN_DATE_AND_TIME_ASSIGNMENT(#89,#31,(#14)); +#34=CC_DESIGN_APPROVAL(#93,(#96)); +#35=CC_DESIGN_APPROVAL(#94,(#97)); +#36=CC_DESIGN_APPROVAL(#95,(#14)); +#37=APPROVAL_PERSON_ORGANIZATION(#56,#93,#64); +#38=APPROVAL_PERSON_ORGANIZATION(#58,#94,#65); +#39=APPROVAL_PERSON_ORGANIZATION(#59,#95,#66); +#40=ORGANIZATION('DEFINITION_APPROVEDBY_ORG_ID', +'DEFINITION_APPROVEDBY_ORG_NAME','DEFINITION_APPROVEDBY_ORG_DESCR'); +#41=ORGANIZATION('DEF_CREATOR_ORG_ID','DEF_CREATOR_ORG_NAME', +'DEF_CREATOR_ORG_DESCR'); +#42=ORGANIZATION('APPROVEDBY_ORG_ID','APPROVEDBY_ORG_NAME', +'APPROVEDBY_ORG_DESCR'); +#43=ORGANIZATION('SECURITY_APPROVEDBY_ORG_ID', +'SECURITY_APPROVEDBY_ORG_NAME','SECURITY_APPROVEDBY_ORG_DESCR'); +#44=ORGANIZATION('CLASSOFFICER_ORG_ID','CLASSOFFICER_ORG_NAME', +'CLASSOFFICER_ORG_DESCR'); +#45=ORGANIZATION('CREATOR_ORG_ID','CREATOR_ORG_NAME', +'CREATOR_ORG_DESCR'); +#46=ORGANIZATION('SUPPLIER_ORG_ID','SUPPLIER_ORG_NAME', +'SUPPLIER_ORG_DESCR'); +#47=ORGANIZATION('OWNER_ORG_ID','OWNER_ORG_NAME','OWNER_ORG_DESCR'); +#48=PERSON('DEFINITION_approverID','DEFINITION_APPROVEDBY_LASTNAME', +'DEFINITION_APPROVEDBY_FIRSTNAME',$,$,$); +#49=PERSON('DEF_createrID','DEF_CREATOR_LASTNAME', +'DEF_CREATOR_FIRSTNAME',$,$,$); +#50=PERSON('approverID','APPROVEDBY_LASTNAME','APPROVEDBY_FIRSTNAME',$, +$,$); +#51=PERSON('SECURITY_approverID','SECURITY_LASTNAME', +'SECURITY_APPROVEDBY_FIRSTNAME',$,$,$); +#52=PERSON('classifierID','CLASSOFFICER_LASTNAME', +'CLASSOFFICER_FIRSTNAME',$,$,$); +#53=PERSON('createrID','CREATOR_LASTNAME','CREATOR_FIRSTNAME',$,$,$); +#54=PERSON('supplierID','SUPPLIER_LASTNAME','SUPPLIER_FIRSTNAME',$,$,$); +#55=PERSON('ownerID','OWNER_LASTNAME','OWNER_FIRSTNAME',$,$,$); +#56=PERSON_AND_ORGANIZATION(#48,#40); +#57=PERSON_AND_ORGANIZATION(#49,#41); +#58=PERSON_AND_ORGANIZATION(#50,#42); +#59=PERSON_AND_ORGANIZATION(#51,#43); +#60=PERSON_AND_ORGANIZATION(#52,#44); +#61=PERSON_AND_ORGANIZATION(#53,#45); +#62=PERSON_AND_ORGANIZATION(#54,#46); +#63=PERSON_AND_ORGANIZATION(#55,#47); +#64=APPROVAL_ROLE('definition_approval'); +#65=APPROVAL_ROLE('version_approval'); +#66=APPROVAL_ROLE('security_approval'); +#67=APPROVAL_DATE_TIME(#85,#93); +#68=APPROVAL_DATE_TIME(#87,#94); +#69=APPROVAL_DATE_TIME(#88,#95); +#70=COORDINATED_UNIVERSAL_TIME_OFFSET(5,0,.BEHIND.); +#71=COORDINATED_UNIVERSAL_TIME_OFFSET(5,0,.BEHIND.); +#72=COORDINATED_UNIVERSAL_TIME_OFFSET(5,0,.BEHIND.); +#73=COORDINATED_UNIVERSAL_TIME_OFFSET(5,0,.BEHIND.); +#74=COORDINATED_UNIVERSAL_TIME_OFFSET(5,0,.BEHIND.); +#75=LOCAL_TIME(6,25,33.,#70); +#76=LOCAL_TIME(6,25,33.,#71); +#77=LOCAL_TIME(6,25,33.,#72); +#78=LOCAL_TIME(6,25,33.,#73); +#79=LOCAL_TIME(6,25,33.,#74); +#80=CALENDAR_DATE(2025,28,10); +#81=CALENDAR_DATE(2025,28,10); +#82=CALENDAR_DATE(2025,28,10); +#83=CALENDAR_DATE(2025,28,10); +#84=CALENDAR_DATE(2025,28,10); +#85=DATE_AND_TIME(#80,#75); +#86=DATE_AND_TIME(#81,#76); +#87=DATE_AND_TIME(#82,#77); +#88=DATE_AND_TIME(#83,#78); +#89=DATE_AND_TIME(#84,#79); +#90=APPROVAL_STATUS('not_yet_approved'); +#91=APPROVAL_STATUS('not_yet_approved'); +#92=APPROVAL_STATUS('not_yet_approved'); +#93=APPROVAL(#90,'defintion approval'); +#94=APPROVAL(#91,'version approval'); +#95=APPROVAL(#92,'security approval'); +#96=PRODUCT_DEFINITION('DefinitionID','DefinitionDesc',#97,#19); +#97=PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE( +'PRODUCT_VERSION_ID','PRODUCT_VERSION_DESCR',#98,.NOT_KNOWN.); +#98=PRODUCT('Peloton_7_flat','Schwinn AC Star Knob','',(#10)); +#99=( +LENGTH_UNIT() +NAMED_UNIT(*) +SI_UNIT(.MILLI.,.METRE.) +); +#100=( +NAMED_UNIT(*) +PLANE_ANGLE_UNIT() +SI_UNIT($,.RADIAN.) +); +#101=( +NAMED_UNIT(*) +SI_UNIT($,.STERADIAN.) +SOLID_ANGLE_UNIT() +); +#102=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-6),#99, +'DISTANCE_ACCURACY_VALUE', +'Maximum model space distance between geometric entities at asserted c +onnectivities'); +#103=( +GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#102)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#101,#100,#99)) +REPRESENTATION_CONTEXT('ID1','3D') +); +#104=B_SPLINE_SURFACE_WITH_KNOTS('',3,3,((#1363,#1364,#1365,#1366,#1367, +#1368,#1369,#1370,#1371,#1372),(#1373,#1374,#1375,#1376,#1377,#1378,#1379, +#1380,#1381,#1382),(#1383,#1384,#1385,#1386,#1387,#1388,#1389,#1390,#1391, +#1392),(#1393,#1394,#1395,#1396,#1397,#1398,#1399,#1400,#1401,#1402),(#1403, +#1404,#1405,#1406,#1407,#1408,#1409,#1410,#1411,#1412),(#1413,#1414,#1415, +#1416,#1417,#1418,#1419,#1420,#1421,#1422)),.UNSPECIFIED.,.F.,.F.,.U.,(4, +2,4),(4,2,2,2,4),(0.,0.5,1.),(-0.00768670457293826,0.0830419428973217,0.228207778849738, +0.460473116373603,0.699996745695089),.UNSPECIFIED.); +#105=B_SPLINE_SURFACE_WITH_KNOTS('',3,3,((#1448,#1449,#1450,#1451,#1452, +#1453,#1454,#1455,#1456,#1457),(#1458,#1459,#1460,#1461,#1462,#1463,#1464, +#1465,#1466,#1467),(#1468,#1469,#1470,#1471,#1472,#1473,#1474,#1475,#1476, +#1477),(#1478,#1479,#1480,#1481,#1482,#1483,#1484,#1485,#1486,#1487),(#1488, +#1489,#1490,#1491,#1492,#1493,#1494,#1495,#1496,#1497),(#1498,#1499,#1500, +#1501,#1502,#1503,#1504,#1505,#1506,#1507)),.UNSPECIFIED.,.F.,.F.,.U.,(4, +2,4),(4,2,2,2,4),(0.,0.5,1.),(-0.00109414392183381,0.0896288414503057,0.234785618045729, +0.467036460598406,0.706545141980854),.UNSPECIFIED.); +#106=TOROIDAL_SURFACE('',#704,2.39999999999994,0.9); +#107=TOROIDAL_SURFACE('',#720,33.6,0.9); +#108=TOROIDAL_SURFACE('',#723,2.40000000000009,0.9); +#109=TOROIDAL_SURFACE('',#725,33.6,0.9); +#110=B_SPLINE_CURVE_WITH_KNOTS('',3,(#986,#987,#988,#989,#990,#991,#992, +#993,#994,#995,#996,#997,#998,#999,#1000,#1001,#1002,#1003,#1004,#1005, +#1006,#1007,#1008,#1009,#1010,#1011,#1012,#1013,#1014,#1015), + .UNSPECIFIED.,.F.,.U.,(4,2,2,2,2,2,2,2,2,2,2,2,2,2,4),(-0.00252203512824719, +0.,0.0447189008956379,0.143896005216203,0.361125568350868,0.633738945169853, +0.904599443764953,1.17431099060347,1.44402253744201,1.71488303603713,1.98749641285612, +2.20472597599063,2.30390308031113,2.34862198113135,2.35114401627135), + .UNSPECIFIED.); +#111=B_SPLINE_CURVE_WITH_KNOTS('',3,(#1017,#1018,#1019,#1020,#1021,#1022, +#1023,#1024,#1025,#1026,#1027,#1028,#1029,#1030,#1031,#1032,#1033,#1034, +#1035,#1036,#1037,#1038,#1039,#1040,#1041,#1042,#1043,#1044,#1045,#1046, +#1047,#1048,#1049,#1050,#1051,#1052,#1053,#1054,#1055,#1056,#1057,#1058, +#1059,#1060,#1061,#1062,#1063,#1064),.UNSPECIFIED.,.T.,.U.,(4,2,2,2,2,2, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4),(0.,0.213947722798757,0.467839304839151, +0.793884541816517,1.11920207968588,1.37553565753164,1.63187353187578,1.87930404029926, +2.17654083945166,2.51066213647959,2.83995650028654,3.08645562858141,3.30686127042266, +3.55083217642707,3.86521339658362,4.20606905035271,4.47554353292383,4.73313666650459, +4.99121308059326,5.26198401180494,5.60008576131381,5.94644076408142,6.13553435853437, +6.31813380253637),.UNSPECIFIED.); +#112=B_SPLINE_CURVE_WITH_KNOTS('',3,(#1074,#1075,#1076,#1077,#1078,#1079, +#1080,#1081,#1082,#1083,#1084,#1085,#1086,#1087,#1088,#1089,#1090,#1091, +#1092,#1093,#1094,#1095,#1096,#1097,#1098,#1099,#1100,#1101,#1102,#1103), + .UNSPECIFIED.,.F.,.U.,(4,2,2,2,2,2,2,2,2,2,2,2,2,2,4),(-0.00252203514960253, +0.,0.0447189009746549,0.143896005664353,0.36112556960733,0.633738947440745, +0.904599447043731,1.17431099488594,1.44402254272815,1.71488304233114,1.98749642016455, +2.20472598410747,2.3039030887966,2.34862198987013,2.35114402500861), + .UNSPECIFIED.); +#113=B_SPLINE_CURVE_WITH_KNOTS('',3,(#1107,#1108,#1109,#1110,#1111,#1112, +#1113,#1114,#1115,#1116,#1117,#1118,#1119,#1120,#1121,#1122,#1123,#1124, +#1125,#1126,#1127,#1128,#1129,#1130,#1131,#1132,#1133,#1134,#1135,#1136, +#1137,#1138,#1139,#1140,#1141,#1142,#1143,#1144,#1145,#1146,#1147,#1148, +#1149,#1150,#1151,#1152,#1153,#1154),.UNSPECIFIED.,.T.,.U.,(4,2,2,2,2,2, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4),(0.,0.213947722798832,0.467839304839409, +0.793884541816853,1.11920207968617,1.37553565753175,1.6318735318757,1.879304040299, +2.17654083945117,2.51066213647889,2.83995650028586,3.08645562858091,3.30686127042225, +3.55083217642678,3.86521339658351,4.2060690503527,4.47554353292389,4.7331366665047, +4.99121308059345,5.26198401180519,5.60008576131418,5.9464407640819,6.13553435853496, +6.31813380253702),.UNSPECIFIED.); +#114=B_SPLINE_CURVE_WITH_KNOTS('',3,(#1162,#1163,#1164,#1165,#1166,#1167, +#1168,#1169,#1170,#1171,#1172,#1173,#1174,#1175,#1176,#1177,#1178,#1179, +#1180,#1181,#1182,#1183,#1184,#1185,#1186,#1187,#1188,#1189,#1190,#1191, +#1192,#1193,#1194,#1195,#1196,#1197,#1198,#1199,#1200,#1201,#1202,#1203, +#1204,#1205,#1206,#1207,#1208,#1209,#1210,#1211,#1212,#1213,#1214,#1215, +#1216,#1217,#1218,#1219,#1220,#1221,#1222,#1223,#1224,#1225,#1226,#1227, +#1228,#1229,#1230,#1231,#1232,#1233,#1234,#1235,#1236,#1237,#1238,#1239, +#1240,#1241,#1242,#1243,#1244,#1245,#1246,#1247,#1248,#1249,#1250,#1251, +#1252,#1253),.UNSPECIFIED.,.T.,.U.,(4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4),(0.,0.218702250174674, +0.495422367216926,0.875752793139292,1.1562805572845,1.39444778191985,1.6271742859692, +1.89881362960727,2.2641807495031,2.75469802007608,2.89155285721356,2.97484155909938, +3.05672632899331,3.18998433692434,3.46771540256145,3.93907153693785,4.24214607363125, +4.48663571391124,4.70691318661391,4.93700121314213,5.21736612527189,5.53149061805009, +5.77375187744532,6.02271210783922,6.3351039870818,6.76619411831449,7.08680056482381, +7.35781531445567,7.62180478499324,7.92858070959232,8.34013922422266,8.90431704516806, +9.07215583910884,9.17051812036899,9.26593723149064,9.41909511135433,9.73850979106436, +10.3003844882076,10.6600317304035,10.9488541487346,11.2081455705038,11.4774325925353, +11.8046241596386,12.1201896109555,12.2789098075327,12.4337770023136), + .UNSPECIFIED.); +#115=B_SPLINE_CURVE_WITH_KNOTS('',3,(#1267,#1268,#1269,#1270,#1271,#1272, +#1273,#1274,#1275,#1276,#1277,#1278,#1279,#1280,#1281,#1282,#1283,#1284, +#1285,#1286,#1287,#1288,#1289,#1290,#1291,#1292,#1293,#1294,#1295,#1296, +#1297,#1298,#1299,#1300,#1301,#1302,#1303,#1304,#1305,#1306,#1307,#1308, +#1309,#1310,#1311,#1312,#1313,#1314,#1315,#1316,#1317,#1318,#1319,#1320, +#1321,#1322,#1323,#1324,#1325,#1326,#1327,#1328,#1329,#1330,#1331,#1332, +#1333,#1334,#1335,#1336,#1337,#1338,#1339,#1340,#1341,#1342,#1343,#1344, +#1345,#1346,#1347,#1348,#1349,#1350,#1351,#1352,#1353,#1354,#1355,#1356, +#1357,#1358),.UNSPECIFIED.,.T.,.U.,(4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4),(0.,0.218702379820378, +0.495422978822893,0.875754636976766,1.15628369377621,1.39445232700166,1.62718046452513, +1.89882198238722,2.26419237320509,2.75471636328872,2.89157291378881,2.97486345045609, +3.05675099420047,3.19001543686252,3.46775950385961,3.93910662433867,4.24218301201997, +4.48667562235196,4.70695687447773,4.93705043244442,5.21742322600413,5.53155047664258, +5.77381471154828,6.02277860283853,6.33517824559488,6.76627795352401,7.08688906328879, +7.35790935920295,7.62190541257659,7.92869073569092,8.3402633973576,8.90445092364369, +9.07228292260755,9.17064440672783,9.26606608267343,9.41923404162318,9.7386689466058, +10.300551082652,10.6601782121091,10.9489923681807,11.2082820360362,11.4775764538082, +11.804782883934,12.1203177988583,12.2790217797431,12.4338735473351), + .UNSPECIFIED.); +#116=B_SPLINE_CURVE_WITH_KNOTS('',3,(#1426,#1427,#1428,#1429,#1430,#1431, +#1432,#1433,#1434,#1435),.UNSPECIFIED.,.F.,.U.,(4,2,2,2,4),(-0.00768670457293826, +0.0830419428973217,0.228207778849738,0.460473116373603,0.699996745695089), + .UNSPECIFIED.); +#117=B_SPLINE_CURVE_WITH_KNOTS('',3,(#1436,#1437,#1438,#1439,#1440,#1441, +#1442,#1443,#1444,#1445),.UNSPECIFIED.,.F.,.U.,(4,2,2,2,4),(-0.00768670457293826, +0.0830419428973217,0.228207778849738,0.460473116373603,0.699996745695089), + .UNSPECIFIED.); +#118=B_SPLINE_CURVE_WITH_KNOTS('',3,(#1511,#1512,#1513,#1514,#1515,#1516, +#1517,#1518,#1519,#1520),.UNSPECIFIED.,.F.,.U.,(4,2,2,2,4),(-0.00109414392183381, +0.0896288414503057,0.234785618045729,0.467036460598406,0.706545141980854), + .UNSPECIFIED.); +#119=B_SPLINE_CURVE_WITH_KNOTS('',3,(#1521,#1522,#1523,#1524,#1525,#1526, +#1527,#1528,#1529,#1530),.UNSPECIFIED.,.F.,.U.,(4,2,2,2,4),(-0.00109414392183381, +0.0896288414503057,0.234785618045729,0.467036460598406,0.706545141980854), + .UNSPECIFIED.); +#120=DEGENERATE_TOROIDAL_SURFACE('',#701,0.0999999999999738,0.9,.T.); +#121=DEGENERATE_TOROIDAL_SURFACE('',#707,0.0999999999999256,0.9,.T.); +#122=CIRCLE('',#695,33.6); +#123=CIRCLE('',#696,2.40000000000009); +#124=CIRCLE('',#697,33.6); +#125=CIRCLE('',#698,0.0999999999999738); +#126=CIRCLE('',#699,2.39999999999994); +#127=CIRCLE('',#700,0.0999999999999256); +#128=CIRCLE('',#702,0.999999999999974); +#129=CIRCLE('',#703,0.900000000000001); +#130=CIRCLE('',#705,0.899999999999957); +#131=CIRCLE('',#706,1.49999999999994); +#132=CIRCLE('',#708,0.999999999999926); +#133=CIRCLE('',#710,1.00000000000002); +#134=CIRCLE('',#712,0.999999999999926); +#135=CIRCLE('',#714,1.49999999999994); +#136=CIRCLE('',#716,0.999999999999974); +#137=CIRCLE('',#718,1.00000000000003); +#138=CIRCLE('',#719,0.500000000000078); +#139=CIRCLE('',#721,34.5); +#140=CIRCLE('',#722,0.499999999999977); +#141=CIRCLE('',#724,1.50000000000009); +#142=CIRCLE('',#726,34.5); +#143=CIRCLE('',#728,34.5); +#144=CIRCLE('',#730,0.500000000000077); +#145=CIRCLE('',#732,1.50000000000004); +#146=CIRCLE('',#734,0.499999999999977); +#147=CIRCLE('',#736,34.5); +#148=PLANE('',#690); +#149=PLANE('',#691); +#150=PLANE('',#692); +#151=PLANE('',#693); +#152=PLANE('',#694); +#153=PLANE('',#737); +#154=PLANE('',#738); +#155=PLANE('',#739); +#156=PLANE('',#740); +#157=PLANE('',#741); +#158=PLANE('',#742); +#159=ELLIPSE('',#675,3.01554467001461,2.786); +#160=ELLIPSE('',#676,3.01554467001461,2.786); +#161=ELLIPSE('',#678,3.01554467001461,2.786); +#162=ELLIPSE('',#680,3.01554467001461,2.786); +#163=ELLIPSE('',#682,3.01554467001461,2.786); +#164=ELLIPSE('',#684,3.01554467001461,2.786); +#165=ELLIPSE('',#686,3.01554467001461,2.786); +#166=ELLIPSE('',#688,3.01554467001461,2.786); +#167=VERTEX_POINT('',#908); +#168=VERTEX_POINT('',#909); +#169=VERTEX_POINT('',#911); +#170=VERTEX_POINT('',#913); +#171=VERTEX_POINT('',#917); +#172=VERTEX_POINT('',#919); +#173=VERTEX_POINT('',#923); +#174=VERTEX_POINT('',#925); +#175=VERTEX_POINT('',#929); +#176=VERTEX_POINT('',#931); +#177=VERTEX_POINT('',#935); +#178=VERTEX_POINT('',#937); +#179=VERTEX_POINT('',#941); +#180=VERTEX_POINT('',#943); +#181=VERTEX_POINT('',#947); +#182=VERTEX_POINT('',#949); +#183=VERTEX_POINT('',#956); +#184=VERTEX_POINT('',#958); +#185=VERTEX_POINT('',#962); +#186=VERTEX_POINT('',#966); +#187=VERTEX_POINT('',#970); +#188=VERTEX_POINT('',#974); +#189=VERTEX_POINT('',#975); +#190=VERTEX_POINT('',#977); +#191=VERTEX_POINT('',#979); +#192=VERTEX_POINT('',#981); +#193=VERTEX_POINT('',#983); +#194=VERTEX_POINT('',#1016); +#195=VERTEX_POINT('',#1065); +#196=VERTEX_POINT('',#1067); +#197=VERTEX_POINT('',#1071); +#198=VERTEX_POINT('',#1104); +#199=VERTEX_POINT('',#1106); +#200=VERTEX_POINT('',#1157); +#201=VERTEX_POINT('',#1159); +#202=VERTEX_POINT('',#1161); +#203=VERTEX_POINT('',#1256); +#204=VERTEX_POINT('',#1260); +#205=VERTEX_POINT('',#1264); +#206=VERTEX_POINT('',#1359); +#207=VERTEX_POINT('',#1361); +#208=VERTEX_POINT('',#1424); +#209=VERTEX_POINT('',#1425); +#210=VERTEX_POINT('',#1509); +#211=VERTEX_POINT('',#1510); +#212=VERTEX_POINT('',#1537); +#213=VERTEX_POINT('',#1541); +#214=VERTEX_POINT('',#1545); +#215=VERTEX_POINT('',#1549); +#216=VERTEX_POINT('',#1555); +#217=VERTEX_POINT('',#1559); +#218=VERTEX_POINT('',#1563); +#219=VECTOR('',#745,1.); +#220=VECTOR('',#748,1.); +#221=VECTOR('',#753,1.); +#222=VECTOR('',#756,1.); +#223=VECTOR('',#759,1.); +#224=VECTOR('',#762,1.); +#225=VECTOR('',#765,1.); +#226=VECTOR('',#768,1.); +#227=VECTOR('',#771,1.); +#228=VECTOR('',#774,1.); +#229=VECTOR('',#777,1.); +#230=VECTOR('',#780,1.); +#231=VECTOR('',#783,1.); +#232=VECTOR('',#786,1.); +#233=VECTOR('',#789,1.); +#234=VECTOR('',#790,1.); +#235=VECTOR('',#792,1.); +#236=VECTOR('',#793,1.); +#237=VECTOR('',#794,1.); +#238=VECTOR('',#796,1.); +#239=VECTOR('',#797,1.); +#240=VECTOR('',#799,1.); +#241=VECTOR('',#800,1.); +#242=VECTOR('',#802,1.); +#243=VECTOR('',#803,1.); +#244=VECTOR('',#832,1.); +#245=VECTOR('',#835,1.); +#246=VECTOR('',#838,1.); +#247=VECTOR('',#843,1.); +#248=VECTOR('',#848,1.); +#249=VECTOR('',#853,1.); +#250=VECTOR('',#871,1.); +#251=VECTOR('',#876,1.); +#252=VECTOR('',#881,1.); +#253=VECTOR('',#886,1.); +#254=VECTOR('',#894,1.); +#255=VECTOR('',#895,1.); +#256=VECTOR('',#897,1.); +#257=VECTOR('',#898,1.); +#258=VECTOR('',#900,1.); +#259=VECTOR('',#901,1.); +#260=VECTOR('',#903,1.); +#261=LINE('',#907,#219); +#262=LINE('',#912,#220); +#263=LINE('',#916,#221); +#264=LINE('',#920,#222); +#265=LINE('',#922,#223); +#266=LINE('',#926,#224); +#267=LINE('',#928,#225); +#268=LINE('',#932,#226); +#269=LINE('',#934,#227); +#270=LINE('',#938,#228); +#271=LINE('',#940,#229); +#272=LINE('',#944,#230); +#273=LINE('',#946,#231); +#274=LINE('',#950,#232); +#275=LINE('',#952,#233); +#276=LINE('',#953,#234); +#277=LINE('',#955,#235); +#278=LINE('',#957,#236); +#279=LINE('',#959,#237); +#280=LINE('',#961,#238); +#281=LINE('',#963,#239); +#282=LINE('',#965,#240); +#283=LINE('',#967,#241); +#284=LINE('',#969,#242); +#285=LINE('',#971,#243); +#286=LINE('',#1156,#244); +#287=LINE('',#1160,#245); +#288=LINE('',#1255,#246); +#289=LINE('',#1259,#247); +#290=LINE('',#1263,#248); +#291=LINE('',#1360,#249); +#292=LINE('',#1536,#250); +#293=LINE('',#1540,#251); +#294=LINE('',#1544,#252); +#295=LINE('',#1548,#253); +#296=LINE('',#1554,#254); +#297=LINE('',#1556,#255); +#298=LINE('',#1558,#256); +#299=LINE('',#1560,#257); +#300=LINE('',#1562,#258); +#301=LINE('',#1564,#259); +#302=LINE('',#1566,#260); +#303=EDGE_CURVE('',#167,#168,#261,.T.); +#304=EDGE_CURVE('',#168,#169,#159,.T.); +#305=EDGE_CURVE('',#169,#170,#262,.T.); +#306=EDGE_CURVE('',#170,#167,#160,.T.); +#307=EDGE_CURVE('',#168,#171,#263,.T.); +#308=EDGE_CURVE('',#171,#172,#161,.T.); +#309=EDGE_CURVE('',#172,#169,#264,.T.); +#310=EDGE_CURVE('',#171,#173,#265,.T.); +#311=EDGE_CURVE('',#173,#174,#162,.T.); +#312=EDGE_CURVE('',#174,#172,#266,.T.); +#313=EDGE_CURVE('',#173,#175,#267,.T.); +#314=EDGE_CURVE('',#175,#176,#163,.T.); +#315=EDGE_CURVE('',#176,#174,#268,.T.); +#316=EDGE_CURVE('',#175,#177,#269,.T.); +#317=EDGE_CURVE('',#177,#178,#164,.T.); +#318=EDGE_CURVE('',#178,#176,#270,.T.); +#319=EDGE_CURVE('',#177,#179,#271,.T.); +#320=EDGE_CURVE('',#179,#180,#165,.T.); +#321=EDGE_CURVE('',#180,#178,#272,.T.); +#322=EDGE_CURVE('',#179,#181,#273,.T.); +#323=EDGE_CURVE('',#181,#182,#166,.T.); +#324=EDGE_CURVE('',#182,#180,#274,.T.); +#325=EDGE_CURVE('',#181,#167,#275,.T.); +#326=EDGE_CURVE('',#170,#182,#276,.T.); +#327=EDGE_CURVE('',#180,#183,#277,.T.); +#328=EDGE_CURVE('',#184,#183,#278,.T.); +#329=EDGE_CURVE('',#178,#184,#279,.T.); +#330=EDGE_CURVE('',#182,#185,#280,.T.); +#331=EDGE_CURVE('',#183,#185,#281,.T.); +#332=EDGE_CURVE('',#170,#186,#282,.T.); +#333=EDGE_CURVE('',#185,#186,#283,.T.); +#334=EDGE_CURVE('',#169,#187,#284,.T.); +#335=EDGE_CURVE('',#186,#187,#285,.T.); +#336=EDGE_CURVE('',#188,#189,#122,.T.); +#337=EDGE_CURVE('',#190,#189,#123,.T.); +#338=EDGE_CURVE('',#190,#191,#124,.T.); +#339=EDGE_CURVE('',#192,#191,#125,.T.); +#340=EDGE_CURVE('',#193,#192,#126,.T.); +#341=EDGE_CURVE('',#188,#193,#127,.T.); +#342=EDGE_CURVE('',#191,#194,#110,.F.); +#343=EDGE_CURVE('',#194,#195,#111,.T.); +#344=EDGE_CURVE('',#195,#196,#128,.T.); +#345=EDGE_CURVE('',#196,#192,#129,.T.); +#346=EDGE_CURVE('',#197,#193,#130,.T.); +#347=EDGE_CURVE('',#196,#197,#131,.T.); +#348=EDGE_CURVE('',#188,#198,#112,.T.); +#349=EDGE_CURVE('',#197,#199,#132,.T.); +#350=EDGE_CURVE('',#199,#198,#113,.T.); +#351=EDGE_CURVE('',#199,#200,#286,.T.); +#352=EDGE_CURVE('',#200,#201,#133,.T.); +#353=EDGE_CURVE('',#202,#201,#287,.T.); +#354=EDGE_CURVE('',#198,#202,#114,.F.); +#355=EDGE_CURVE('',#197,#203,#288,.T.); +#356=EDGE_CURVE('',#203,#200,#134,.T.); +#357=EDGE_CURVE('',#196,#204,#289,.T.); +#358=EDGE_CURVE('',#204,#203,#135,.T.); +#359=EDGE_CURVE('',#195,#205,#290,.T.); +#360=EDGE_CURVE('',#205,#204,#136,.T.); +#361=EDGE_CURVE('',#206,#194,#115,.F.); +#362=EDGE_CURVE('',#206,#207,#291,.T.); +#363=EDGE_CURVE('',#207,#205,#137,.T.); +#364=EDGE_CURVE('',#208,#209,#138,.T.); +#365=EDGE_CURVE('',#209,#190,#116,.F.); +#366=EDGE_CURVE('',#190,#208,#117,.T.); +#367=EDGE_CURVE('',#209,#206,#139,.T.); +#368=EDGE_CURVE('',#210,#211,#140,.T.); +#369=EDGE_CURVE('',#211,#189,#118,.F.); +#370=EDGE_CURVE('',#189,#210,#119,.T.); +#371=EDGE_CURVE('',#211,#208,#141,.T.); +#372=EDGE_CURVE('',#202,#210,#142,.T.); +#373=EDGE_CURVE('',#209,#212,#292,.T.); +#374=EDGE_CURVE('',#212,#207,#143,.T.); +#375=EDGE_CURVE('',#208,#213,#293,.T.); +#376=EDGE_CURVE('',#213,#212,#144,.T.); +#377=EDGE_CURVE('',#211,#214,#294,.T.); +#378=EDGE_CURVE('',#214,#213,#145,.T.); +#379=EDGE_CURVE('',#210,#215,#295,.T.); +#380=EDGE_CURVE('',#215,#214,#146,.T.); +#381=EDGE_CURVE('',#201,#215,#147,.T.); +#382=EDGE_CURVE('',#172,#216,#296,.T.); +#383=EDGE_CURVE('',#187,#216,#297,.T.); +#384=EDGE_CURVE('',#174,#217,#298,.T.); +#385=EDGE_CURVE('',#216,#217,#299,.T.); +#386=EDGE_CURVE('',#176,#218,#300,.T.); +#387=EDGE_CURVE('',#217,#218,#301,.T.); +#388=EDGE_CURVE('',#218,#184,#302,.T.); +#389=ORIENTED_EDGE('',*,*,#303,.T.); +#390=ORIENTED_EDGE('',*,*,#304,.T.); +#391=ORIENTED_EDGE('',*,*,#305,.T.); +#392=ORIENTED_EDGE('',*,*,#306,.T.); +#393=ORIENTED_EDGE('',*,*,#307,.T.); +#394=ORIENTED_EDGE('',*,*,#308,.T.); +#395=ORIENTED_EDGE('',*,*,#309,.T.); +#396=ORIENTED_EDGE('',*,*,#304,.F.); +#397=ORIENTED_EDGE('',*,*,#310,.T.); +#398=ORIENTED_EDGE('',*,*,#311,.T.); +#399=ORIENTED_EDGE('',*,*,#312,.T.); +#400=ORIENTED_EDGE('',*,*,#308,.F.); +#401=ORIENTED_EDGE('',*,*,#313,.T.); +#402=ORIENTED_EDGE('',*,*,#314,.T.); +#403=ORIENTED_EDGE('',*,*,#315,.T.); +#404=ORIENTED_EDGE('',*,*,#311,.F.); +#405=ORIENTED_EDGE('',*,*,#316,.T.); +#406=ORIENTED_EDGE('',*,*,#317,.T.); +#407=ORIENTED_EDGE('',*,*,#318,.T.); +#408=ORIENTED_EDGE('',*,*,#314,.F.); +#409=ORIENTED_EDGE('',*,*,#319,.T.); +#410=ORIENTED_EDGE('',*,*,#320,.T.); +#411=ORIENTED_EDGE('',*,*,#321,.T.); +#412=ORIENTED_EDGE('',*,*,#317,.F.); +#413=ORIENTED_EDGE('',*,*,#322,.T.); +#414=ORIENTED_EDGE('',*,*,#323,.T.); +#415=ORIENTED_EDGE('',*,*,#324,.T.); +#416=ORIENTED_EDGE('',*,*,#320,.F.); +#417=ORIENTED_EDGE('',*,*,#325,.T.); +#418=ORIENTED_EDGE('',*,*,#306,.F.); +#419=ORIENTED_EDGE('',*,*,#326,.T.); +#420=ORIENTED_EDGE('',*,*,#323,.F.); +#421=ORIENTED_EDGE('',*,*,#321,.F.); +#422=ORIENTED_EDGE('',*,*,#327,.T.); +#423=ORIENTED_EDGE('',*,*,#328,.F.); +#424=ORIENTED_EDGE('',*,*,#329,.F.); +#425=ORIENTED_EDGE('',*,*,#324,.F.); +#426=ORIENTED_EDGE('',*,*,#330,.T.); +#427=ORIENTED_EDGE('',*,*,#331,.F.); +#428=ORIENTED_EDGE('',*,*,#327,.F.); +#429=ORIENTED_EDGE('',*,*,#326,.F.); +#430=ORIENTED_EDGE('',*,*,#332,.T.); +#431=ORIENTED_EDGE('',*,*,#333,.F.); +#432=ORIENTED_EDGE('',*,*,#330,.F.); +#433=ORIENTED_EDGE('',*,*,#305,.F.); +#434=ORIENTED_EDGE('',*,*,#334,.T.); +#435=ORIENTED_EDGE('',*,*,#335,.F.); +#436=ORIENTED_EDGE('',*,*,#332,.F.); +#437=ORIENTED_EDGE('',*,*,#336,.T.); +#438=ORIENTED_EDGE('',*,*,#337,.F.); +#439=ORIENTED_EDGE('',*,*,#338,.T.); +#440=ORIENTED_EDGE('',*,*,#339,.F.); +#441=ORIENTED_EDGE('',*,*,#340,.F.); +#442=ORIENTED_EDGE('',*,*,#341,.F.); +#443=ORIENTED_EDGE('',*,*,#303,.F.); +#444=ORIENTED_EDGE('',*,*,#325,.F.); +#445=ORIENTED_EDGE('',*,*,#322,.F.); +#446=ORIENTED_EDGE('',*,*,#319,.F.); +#447=ORIENTED_EDGE('',*,*,#316,.F.); +#448=ORIENTED_EDGE('',*,*,#313,.F.); +#449=ORIENTED_EDGE('',*,*,#310,.F.); +#450=ORIENTED_EDGE('',*,*,#307,.F.); +#451=ORIENTED_EDGE('',*,*,#342,.T.); +#452=ORIENTED_EDGE('',*,*,#343,.T.); +#453=ORIENTED_EDGE('',*,*,#344,.T.); +#454=ORIENTED_EDGE('',*,*,#345,.T.); +#455=ORIENTED_EDGE('',*,*,#339,.T.); +#456=ORIENTED_EDGE('',*,*,#346,.T.); +#457=ORIENTED_EDGE('',*,*,#340,.T.); +#458=ORIENTED_EDGE('',*,*,#345,.F.); +#459=ORIENTED_EDGE('',*,*,#347,.T.); +#460=ORIENTED_EDGE('',*,*,#348,.F.); +#461=ORIENTED_EDGE('',*,*,#341,.T.); +#462=ORIENTED_EDGE('',*,*,#346,.F.); +#463=ORIENTED_EDGE('',*,*,#349,.T.); +#464=ORIENTED_EDGE('',*,*,#350,.T.); +#465=ORIENTED_EDGE('',*,*,#350,.F.); +#466=ORIENTED_EDGE('',*,*,#351,.T.); +#467=ORIENTED_EDGE('',*,*,#352,.T.); +#468=ORIENTED_EDGE('',*,*,#353,.F.); +#469=ORIENTED_EDGE('',*,*,#354,.F.); +#470=ORIENTED_EDGE('',*,*,#349,.F.); +#471=ORIENTED_EDGE('',*,*,#355,.T.); +#472=ORIENTED_EDGE('',*,*,#356,.T.); +#473=ORIENTED_EDGE('',*,*,#351,.F.); +#474=ORIENTED_EDGE('',*,*,#347,.F.); +#475=ORIENTED_EDGE('',*,*,#357,.T.); +#476=ORIENTED_EDGE('',*,*,#358,.T.); +#477=ORIENTED_EDGE('',*,*,#355,.F.); +#478=ORIENTED_EDGE('',*,*,#344,.F.); +#479=ORIENTED_EDGE('',*,*,#359,.T.); +#480=ORIENTED_EDGE('',*,*,#360,.T.); +#481=ORIENTED_EDGE('',*,*,#357,.F.); +#482=ORIENTED_EDGE('',*,*,#343,.F.); +#483=ORIENTED_EDGE('',*,*,#361,.F.); +#484=ORIENTED_EDGE('',*,*,#362,.T.); +#485=ORIENTED_EDGE('',*,*,#363,.T.); +#486=ORIENTED_EDGE('',*,*,#359,.F.); +#487=ORIENTED_EDGE('',*,*,#364,.T.); +#488=ORIENTED_EDGE('',*,*,#365,.T.); +#489=ORIENTED_EDGE('',*,*,#366,.T.); +#490=ORIENTED_EDGE('',*,*,#365,.F.); +#491=ORIENTED_EDGE('',*,*,#367,.T.); +#492=ORIENTED_EDGE('',*,*,#361,.T.); +#493=ORIENTED_EDGE('',*,*,#342,.F.); +#494=ORIENTED_EDGE('',*,*,#338,.F.); +#495=ORIENTED_EDGE('',*,*,#368,.T.); +#496=ORIENTED_EDGE('',*,*,#369,.T.); +#497=ORIENTED_EDGE('',*,*,#370,.T.); +#498=ORIENTED_EDGE('',*,*,#366,.F.); +#499=ORIENTED_EDGE('',*,*,#337,.T.); +#500=ORIENTED_EDGE('',*,*,#369,.F.); +#501=ORIENTED_EDGE('',*,*,#371,.T.); +#502=ORIENTED_EDGE('',*,*,#370,.F.); +#503=ORIENTED_EDGE('',*,*,#336,.F.); +#504=ORIENTED_EDGE('',*,*,#348,.T.); +#505=ORIENTED_EDGE('',*,*,#354,.T.); +#506=ORIENTED_EDGE('',*,*,#372,.T.); +#507=ORIENTED_EDGE('',*,*,#367,.F.); +#508=ORIENTED_EDGE('',*,*,#373,.T.); +#509=ORIENTED_EDGE('',*,*,#374,.T.); +#510=ORIENTED_EDGE('',*,*,#362,.F.); +#511=ORIENTED_EDGE('',*,*,#364,.F.); +#512=ORIENTED_EDGE('',*,*,#375,.T.); +#513=ORIENTED_EDGE('',*,*,#376,.T.); +#514=ORIENTED_EDGE('',*,*,#373,.F.); +#515=ORIENTED_EDGE('',*,*,#371,.F.); +#516=ORIENTED_EDGE('',*,*,#377,.T.); +#517=ORIENTED_EDGE('',*,*,#378,.T.); +#518=ORIENTED_EDGE('',*,*,#375,.F.); +#519=ORIENTED_EDGE('',*,*,#368,.F.); +#520=ORIENTED_EDGE('',*,*,#379,.T.); +#521=ORIENTED_EDGE('',*,*,#380,.T.); +#522=ORIENTED_EDGE('',*,*,#377,.F.); +#523=ORIENTED_EDGE('',*,*,#372,.F.); +#524=ORIENTED_EDGE('',*,*,#353,.T.); +#525=ORIENTED_EDGE('',*,*,#381,.T.); +#526=ORIENTED_EDGE('',*,*,#379,.F.); +#527=ORIENTED_EDGE('',*,*,#309,.F.); +#528=ORIENTED_EDGE('',*,*,#382,.T.); +#529=ORIENTED_EDGE('',*,*,#383,.F.); +#530=ORIENTED_EDGE('',*,*,#334,.F.); +#531=ORIENTED_EDGE('',*,*,#312,.F.); +#532=ORIENTED_EDGE('',*,*,#384,.T.); +#533=ORIENTED_EDGE('',*,*,#385,.F.); +#534=ORIENTED_EDGE('',*,*,#382,.F.); +#535=ORIENTED_EDGE('',*,*,#315,.F.); +#536=ORIENTED_EDGE('',*,*,#386,.T.); +#537=ORIENTED_EDGE('',*,*,#387,.F.); +#538=ORIENTED_EDGE('',*,*,#384,.F.); +#539=ORIENTED_EDGE('',*,*,#318,.F.); +#540=ORIENTED_EDGE('',*,*,#329,.T.); +#541=ORIENTED_EDGE('',*,*,#388,.F.); +#542=ORIENTED_EDGE('',*,*,#386,.F.); +#543=ORIENTED_EDGE('',*,*,#335,.T.); +#544=ORIENTED_EDGE('',*,*,#383,.T.); +#545=ORIENTED_EDGE('',*,*,#385,.T.); +#546=ORIENTED_EDGE('',*,*,#387,.T.); +#547=ORIENTED_EDGE('',*,*,#388,.T.); +#548=ORIENTED_EDGE('',*,*,#328,.T.); +#549=ORIENTED_EDGE('',*,*,#331,.T.); +#550=ORIENTED_EDGE('',*,*,#333,.T.); +#551=ORIENTED_EDGE('',*,*,#380,.F.); +#552=ORIENTED_EDGE('',*,*,#381,.F.); +#553=ORIENTED_EDGE('',*,*,#352,.F.); +#554=ORIENTED_EDGE('',*,*,#356,.F.); +#555=ORIENTED_EDGE('',*,*,#358,.F.); +#556=ORIENTED_EDGE('',*,*,#360,.F.); +#557=ORIENTED_EDGE('',*,*,#363,.F.); +#558=ORIENTED_EDGE('',*,*,#374,.F.); +#559=ORIENTED_EDGE('',*,*,#376,.F.); +#560=ORIENTED_EDGE('',*,*,#378,.F.); +#561=EDGE_LOOP('',(#389,#390,#391,#392)); +#562=EDGE_LOOP('',(#393,#394,#395,#396)); +#563=EDGE_LOOP('',(#397,#398,#399,#400)); +#564=EDGE_LOOP('',(#401,#402,#403,#404)); +#565=EDGE_LOOP('',(#405,#406,#407,#408)); +#566=EDGE_LOOP('',(#409,#410,#411,#412)); +#567=EDGE_LOOP('',(#413,#414,#415,#416)); +#568=EDGE_LOOP('',(#417,#418,#419,#420)); +#569=EDGE_LOOP('',(#421,#422,#423,#424)); +#570=EDGE_LOOP('',(#425,#426,#427,#428)); +#571=EDGE_LOOP('',(#429,#430,#431,#432)); +#572=EDGE_LOOP('',(#433,#434,#435,#436)); +#573=EDGE_LOOP('',(#437,#438,#439,#440,#441,#442)); +#574=EDGE_LOOP('',(#443,#444,#445,#446,#447,#448,#449,#450)); +#575=EDGE_LOOP('',(#451,#452,#453,#454,#455)); +#576=EDGE_LOOP('',(#456,#457,#458,#459)); +#577=EDGE_LOOP('',(#460,#461,#462,#463,#464)); +#578=EDGE_LOOP('',(#465,#466,#467,#468,#469)); +#579=EDGE_LOOP('',(#470,#471,#472,#473)); +#580=EDGE_LOOP('',(#474,#475,#476,#477)); +#581=EDGE_LOOP('',(#478,#479,#480,#481)); +#582=EDGE_LOOP('',(#482,#483,#484,#485,#486)); +#583=EDGE_LOOP('',(#487,#488,#489)); +#584=EDGE_LOOP('',(#490,#491,#492,#493,#494)); +#585=EDGE_LOOP('',(#495,#496,#497)); +#586=EDGE_LOOP('',(#498,#499,#500,#501)); +#587=EDGE_LOOP('',(#502,#503,#504,#505,#506)); +#588=EDGE_LOOP('',(#507,#508,#509,#510)); +#589=EDGE_LOOP('',(#511,#512,#513,#514)); +#590=EDGE_LOOP('',(#515,#516,#517,#518)); +#591=EDGE_LOOP('',(#519,#520,#521,#522)); +#592=EDGE_LOOP('',(#523,#524,#525,#526)); +#593=EDGE_LOOP('',(#527,#528,#529,#530)); +#594=EDGE_LOOP('',(#531,#532,#533,#534)); +#595=EDGE_LOOP('',(#535,#536,#537,#538)); +#596=EDGE_LOOP('',(#539,#540,#541,#542)); +#597=EDGE_LOOP('',(#543,#544,#545,#546,#547,#548,#549,#550)); +#598=EDGE_LOOP('',(#551,#552,#553,#554,#555,#556,#557,#558,#559,#560)); +#599=FACE_BOUND('',#561,.T.); +#600=FACE_BOUND('',#562,.T.); +#601=FACE_BOUND('',#563,.T.); +#602=FACE_BOUND('',#564,.T.); +#603=FACE_BOUND('',#565,.T.); +#604=FACE_BOUND('',#566,.T.); +#605=FACE_BOUND('',#567,.T.); +#606=FACE_BOUND('',#568,.T.); +#607=FACE_BOUND('',#569,.T.); +#608=FACE_BOUND('',#570,.T.); +#609=FACE_BOUND('',#571,.T.); +#610=FACE_BOUND('',#572,.T.); +#611=FACE_BOUND('',#573,.T.); +#612=FACE_BOUND('',#574,.T.); +#613=FACE_BOUND('',#575,.T.); +#614=FACE_BOUND('',#576,.T.); +#615=FACE_BOUND('',#577,.T.); +#616=FACE_BOUND('',#578,.T.); +#617=FACE_BOUND('',#579,.T.); +#618=FACE_BOUND('',#580,.T.); +#619=FACE_BOUND('',#581,.T.); +#620=FACE_BOUND('',#582,.T.); +#621=FACE_BOUND('',#583,.T.); +#622=FACE_BOUND('',#584,.T.); +#623=FACE_BOUND('',#585,.T.); +#624=FACE_BOUND('',#586,.T.); +#625=FACE_BOUND('',#587,.T.); +#626=FACE_BOUND('',#588,.T.); +#627=FACE_BOUND('',#589,.T.); +#628=FACE_BOUND('',#590,.T.); +#629=FACE_BOUND('',#591,.T.); +#630=FACE_BOUND('',#592,.T.); +#631=FACE_BOUND('',#593,.T.); +#632=FACE_BOUND('',#594,.T.); +#633=FACE_BOUND('',#595,.T.); +#634=FACE_BOUND('',#596,.T.); +#635=FACE_BOUND('',#597,.T.); +#636=FACE_BOUND('',#598,.T.); +#637=ADVANCED_FACE('',(#599),#1569,.T.); +#638=ADVANCED_FACE('',(#600),#1570,.T.); +#639=ADVANCED_FACE('',(#601),#1571,.T.); +#640=ADVANCED_FACE('',(#602),#1572,.T.); +#641=ADVANCED_FACE('',(#603),#1573,.T.); +#642=ADVANCED_FACE('',(#604),#1574,.T.); +#643=ADVANCED_FACE('',(#605),#1575,.T.); +#644=ADVANCED_FACE('',(#606),#1576,.T.); +#645=ADVANCED_FACE('',(#607),#148,.F.); +#646=ADVANCED_FACE('',(#608),#149,.F.); +#647=ADVANCED_FACE('',(#609),#150,.F.); +#648=ADVANCED_FACE('',(#610),#151,.F.); +#649=ADVANCED_FACE('',(#611,#612),#152,.T.); +#650=ADVANCED_FACE('',(#613),#120,.T.); +#651=ADVANCED_FACE('',(#614),#106,.T.); +#652=ADVANCED_FACE('',(#615),#121,.T.); +#653=ADVANCED_FACE('',(#616),#1577,.T.); +#654=ADVANCED_FACE('',(#617),#1578,.T.); +#655=ADVANCED_FACE('',(#618),#1579,.F.); +#656=ADVANCED_FACE('',(#619),#1580,.T.); +#657=ADVANCED_FACE('',(#620),#1581,.T.); +#658=ADVANCED_FACE('',(#621),#104,.F.); +#659=ADVANCED_FACE('',(#622),#107,.T.); +#660=ADVANCED_FACE('',(#623),#105,.F.); +#661=ADVANCED_FACE('',(#624),#108,.T.); +#662=ADVANCED_FACE('',(#625),#109,.T.); +#663=ADVANCED_FACE('',(#626),#1582,.T.); +#664=ADVANCED_FACE('',(#627),#1583,.T.); +#665=ADVANCED_FACE('',(#628),#1584,.F.); +#666=ADVANCED_FACE('',(#629),#1585,.T.); +#667=ADVANCED_FACE('',(#630),#1586,.T.); +#668=ADVANCED_FACE('',(#631),#153,.F.); +#669=ADVANCED_FACE('',(#632),#154,.F.); +#670=ADVANCED_FACE('',(#633),#155,.F.); +#671=ADVANCED_FACE('',(#634),#156,.F.); +#672=ADVANCED_FACE('',(#635),#157,.T.); +#673=ADVANCED_FACE('',(#636),#158,.F.); +#674=AXIS2_PLACEMENT_3D('',#906,#743,#744); +#675=AXIS2_PLACEMENT_3D('',#910,#746,#747); +#676=AXIS2_PLACEMENT_3D('',#914,#749,#750); +#677=AXIS2_PLACEMENT_3D('',#915,#751,#752); +#678=AXIS2_PLACEMENT_3D('',#918,#754,#755); +#679=AXIS2_PLACEMENT_3D('',#921,#757,#758); +#680=AXIS2_PLACEMENT_3D('',#924,#760,#761); +#681=AXIS2_PLACEMENT_3D('',#927,#763,#764); +#682=AXIS2_PLACEMENT_3D('',#930,#766,#767); +#683=AXIS2_PLACEMENT_3D('',#933,#769,#770); +#684=AXIS2_PLACEMENT_3D('',#936,#772,#773); +#685=AXIS2_PLACEMENT_3D('',#939,#775,#776); +#686=AXIS2_PLACEMENT_3D('',#942,#778,#779); +#687=AXIS2_PLACEMENT_3D('',#945,#781,#782); +#688=AXIS2_PLACEMENT_3D('',#948,#784,#785); +#689=AXIS2_PLACEMENT_3D('',#951,#787,#788); +#690=AXIS2_PLACEMENT_3D('',#954,#791,$); +#691=AXIS2_PLACEMENT_3D('',#960,#795,$); +#692=AXIS2_PLACEMENT_3D('',#964,#798,$); +#693=AXIS2_PLACEMENT_3D('',#968,#801,$); +#694=AXIS2_PLACEMENT_3D('',#972,#804,$); +#695=AXIS2_PLACEMENT_3D('',#973,#805,#806); +#696=AXIS2_PLACEMENT_3D('',#976,#807,#808); +#697=AXIS2_PLACEMENT_3D('',#978,#809,#810); +#698=AXIS2_PLACEMENT_3D('',#980,#811,#812); +#699=AXIS2_PLACEMENT_3D('',#982,#813,#814); +#700=AXIS2_PLACEMENT_3D('',#984,#815,#816); +#701=AXIS2_PLACEMENT_3D('',#985,#817,$); +#702=AXIS2_PLACEMENT_3D('',#1066,#818,#819); +#703=AXIS2_PLACEMENT_3D('',#1068,#820,#821); +#704=AXIS2_PLACEMENT_3D('',#1069,#822,$); +#705=AXIS2_PLACEMENT_3D('',#1070,#823,#824); +#706=AXIS2_PLACEMENT_3D('',#1072,#825,#826); +#707=AXIS2_PLACEMENT_3D('',#1073,#827,$); +#708=AXIS2_PLACEMENT_3D('',#1105,#828,#829); +#709=AXIS2_PLACEMENT_3D('',#1155,#830,#831); +#710=AXIS2_PLACEMENT_3D('',#1158,#833,#834); +#711=AXIS2_PLACEMENT_3D('',#1254,#836,#837); +#712=AXIS2_PLACEMENT_3D('',#1257,#839,#840); +#713=AXIS2_PLACEMENT_3D('',#1258,#841,#842); +#714=AXIS2_PLACEMENT_3D('',#1261,#844,#845); +#715=AXIS2_PLACEMENT_3D('',#1262,#846,#847); +#716=AXIS2_PLACEMENT_3D('',#1265,#849,#850); +#717=AXIS2_PLACEMENT_3D('',#1266,#851,#852); +#718=AXIS2_PLACEMENT_3D('',#1362,#854,#855); +#719=AXIS2_PLACEMENT_3D('',#1423,#856,#857); +#720=AXIS2_PLACEMENT_3D('',#1446,#858,$); +#721=AXIS2_PLACEMENT_3D('',#1447,#859,#860); +#722=AXIS2_PLACEMENT_3D('',#1508,#861,#862); +#723=AXIS2_PLACEMENT_3D('',#1531,#863,$); +#724=AXIS2_PLACEMENT_3D('',#1532,#864,#865); +#725=AXIS2_PLACEMENT_3D('',#1533,#866,$); +#726=AXIS2_PLACEMENT_3D('',#1534,#867,#868); +#727=AXIS2_PLACEMENT_3D('',#1535,#869,#870); +#728=AXIS2_PLACEMENT_3D('',#1538,#872,#873); +#729=AXIS2_PLACEMENT_3D('',#1539,#874,#875); +#730=AXIS2_PLACEMENT_3D('',#1542,#877,#878); +#731=AXIS2_PLACEMENT_3D('',#1543,#879,#880); +#732=AXIS2_PLACEMENT_3D('',#1546,#882,#883); +#733=AXIS2_PLACEMENT_3D('',#1547,#884,#885); +#734=AXIS2_PLACEMENT_3D('',#1550,#887,#888); +#735=AXIS2_PLACEMENT_3D('',#1551,#889,#890); +#736=AXIS2_PLACEMENT_3D('',#1552,#891,#892); +#737=AXIS2_PLACEMENT_3D('',#1553,#893,$); +#738=AXIS2_PLACEMENT_3D('',#1557,#896,$); +#739=AXIS2_PLACEMENT_3D('',#1561,#899,$); +#740=AXIS2_PLACEMENT_3D('',#1565,#902,$); +#741=AXIS2_PLACEMENT_3D('',#1567,#904,$); +#742=AXIS2_PLACEMENT_3D('',#1568,#905,$); +#743=DIRECTION('',(0.707106781186548,0.,-0.707106781186548)); +#744=DIRECTION('',(1.393,1.96999949238572,1.393)); +#745=DIRECTION('',(-0.707106781186548,0.,0.707106781186548)); +#746=DIRECTION('',(0.382683432365089,8.83599996244615E-16,-0.923879532511287)); +#747=DIRECTION('',(-2.786,6.43275715994143E-15,-1.15399898477144)); +#748=DIRECTION('',(0.707106781186548,0.,-0.707106781186548)); +#749=DIRECTION('',(-0.923879532511287,5.89066664163076E-16,0.382683432365089)); +#750=DIRECTION('',(1.15399898477144,-4.28850477329429E-15,2.786)); +#751=DIRECTION('',(0.,0.,-1.)); +#752=DIRECTION('',(1.96999949238572,1.96999949238572,0.)); +#753=DIRECTION('',(0.,0.,1.)); +#754=DIRECTION('',(-0.382683432365089,5.89066664163076E-16,-0.923879532511287)); +#755=DIRECTION('',(-2.786,4.28850477329431E-15,1.15399898477144)); +#756=DIRECTION('',(0.,0.,-1.)); +#757=DIRECTION('',(-0.707106781186548,0.,-0.707106781186548)); +#758=DIRECTION('',(1.393,1.96999949238572,-1.393)); +#759=DIRECTION('',(0.707106781186548,0.,0.707106781186548)); +#760=DIRECTION('',(-0.923879532511287,5.89066664163076E-16,-0.382683432365089)); +#761=DIRECTION('',(-1.15399898477144,4.28850477329428E-15,2.786)); +#762=DIRECTION('',(-0.707106781186548,0.,-0.707106781186548)); +#763=DIRECTION('',(-1.,0.,0.)); +#764=DIRECTION('',(0.,1.96999949238572,-1.96999949238572)); +#765=DIRECTION('',(1.,0.,0.)); +#766=DIRECTION('',(-0.923879532511287,-2.94533332081538E-16,0.382683432365089)); +#767=DIRECTION('',(1.15399898477144,-2.14425238664715E-15,2.786)); +#768=DIRECTION('',(-1.,0.,0.)); +#769=DIRECTION('',(-0.707106781186548,0.,0.707106781186548)); +#770=DIRECTION('',(-1.393,1.96999949238572,-1.393)); +#771=DIRECTION('',(0.707106781186548,0.,-0.707106781186548)); +#772=DIRECTION('',(-0.382683432365089,8.83599996244615E-16,0.923879532511287)); +#773=DIRECTION('',(2.786,6.43275715994142E-15,1.15399898477144)); +#774=DIRECTION('',(-0.707106781186548,0.,0.707106781186548)); +#775=DIRECTION('',(0.,0.,1.)); +#776=DIRECTION('',(-1.96999949238572,1.96999949238572,0.)); +#777=DIRECTION('',(0.,0.,-1.)); +#778=DIRECTION('',(0.382683432365089,5.89066664163076E-16,0.923879532511287)); +#779=DIRECTION('',(2.786,4.2885047732943E-15,-1.15399898477144)); +#780=DIRECTION('',(0.,0.,1.)); +#781=DIRECTION('',(0.707106781186548,0.,0.707106781186548)); +#782=DIRECTION('',(-1.393,1.96999949238572,1.393)); +#783=DIRECTION('',(-0.707106781186548,0.,-0.707106781186548)); +#784=DIRECTION('',(0.923879532511287,8.83599996244615E-16,0.382683432365089)); +#785=DIRECTION('',(1.15399898477144,6.43275715994143E-15,-2.786)); +#786=DIRECTION('',(0.707106781186548,0.,0.707106781186548)); +#787=DIRECTION('',(1.,0.,0.)); +#788=DIRECTION('',(0.,1.96999949238572,1.96999949238572)); +#789=DIRECTION('',(-1.,0.,0.)); +#790=DIRECTION('',(1.,0.,0.)); +#791=DIRECTION('',(1.,0.,0.)); +#792=DIRECTION('',(0.,-1.,0.)); +#793=DIRECTION('',(0.,0.,-1.)); +#794=DIRECTION('',(0.,-1.,0.)); +#795=DIRECTION('',(0.707106781186548,0.,-0.707106781186548)); +#796=DIRECTION('',(0.,-1.,0.)); +#797=DIRECTION('',(-0.707106781186548,0.,-0.707106781186548)); +#798=DIRECTION('',(0.,0.,-1.)); +#799=DIRECTION('',(0.,-1.,0.)); +#800=DIRECTION('',(-1.,0.,0.)); +#801=DIRECTION('',(-0.707106781186548,0.,-0.707106781186548)); +#802=DIRECTION('',(0.,-1.,0.)); +#803=DIRECTION('',(-0.707106781186548,0.,0.707106781186548)); +#804=DIRECTION('',(0.,1.,0.)); +#805=DIRECTION('',(0.,1.,0.)); +#806=DIRECTION('',(-33.5995569473485,0.,0.172548375492393)); +#807=DIRECTION('',(0.,1.,0.)); +#808=DIRECTION('',(0.000217983578701583,0.,-2.39999999010075)); +#809=DIRECTION('',(0.,1.,0.)); +#810=DIRECTION('',(33.5995250490658,0.,0.178651832340361)); +#811=DIRECTION('',(0.,-1.,0.)); +#812=DIRECTION('',(-0.053365810173834,0.,-0.0845700319527258)); +#813=DIRECTION('',(0.,1.,0.)); +#814=DIRECTION('',(-0.000217983578706071,0.,2.3999999901006)); +#815=DIRECTION('',(0.,-1.,0.)); +#816=DIRECTION('',(0.0533811716917735,0.,-0.0845603364988487)); +#817=DIRECTION('',(0.,-1.,0.)); +#818=DIRECTION('',(0.,1.,0.)); +#819=DIRECTION('',(-0.533658101738466,0.,-0.845700319527458)); +#820=DIRECTION('',(0.430336076438114,0.,-0.902668743956414)); +#821=DIRECTION('',(-0.812401869560773,0.,-0.387302468794303)); +#822=DIRECTION('',(0.,-1.,0.)); +#823=DIRECTION('',(0.430172096869494,0.,0.902746900894654)); +#824=DIRECTION('',(0.81247221080515,0.,-0.387154887182525)); +#825=DIRECTION('',(0.,-1.,0.)); +#826=DIRECTION('',(-0.000136239736691292,0.,1.49999999381285)); +#827=DIRECTION('',(0.,-1.,0.)); +#828=DIRECTION('',(0.,1.,0.)); +#829=DIRECTION('',(0.533811716918093,0.,-0.845603364989053)); +#830=DIRECTION('',(0.,-1.,0.)); +#831=DIRECTION('',(1.00000000000002,0.,0.)); +#832=DIRECTION('',(0.,-1.,0.)); +#833=DIRECTION('',(0.,1.,0.)); +#834=DIRECTION('',(1.00000000000002,0.,0.)); +#835=DIRECTION('',(0.,-1.,0.)); +#836=DIRECTION('',(0.,-1.,0.)); +#837=DIRECTION('',(0.999999999999926,0.,0.)); +#838=DIRECTION('',(0.,-1.,0.)); +#839=DIRECTION('',(0.,1.,0.)); +#840=DIRECTION('',(0.999999999999926,0.,0.)); +#841=DIRECTION('',(0.,-1.,0.)); +#842=DIRECTION('',(1.49999999999994,0.,0.)); +#843=DIRECTION('',(0.,-1.,0.)); +#844=DIRECTION('',(0.,-1.,0.)); +#845=DIRECTION('',(1.49999999999994,0.,0.)); +#846=DIRECTION('',(0.,-1.,0.)); +#847=DIRECTION('',(0.999999999999974,0.,0.)); +#848=DIRECTION('',(0.,-1.,0.)); +#849=DIRECTION('',(0.,1.,0.)); +#850=DIRECTION('',(0.999999999999974,0.,0.)); +#851=DIRECTION('',(0.,-1.,0.)); +#852=DIRECTION('',(1.00000000000003,0.,0.)); +#853=DIRECTION('',(0.,-1.,0.)); +#854=DIRECTION('',(0.,1.,0.)); +#855=DIRECTION('',(1.00000000000003,0.,0.)); +#856=DIRECTION('',(2.26065966151076E-16,1.,-1.28711685625779E-17)); +#857=DIRECTION('',(-0.483951057394903,1.11022302462516E-16,0.125663734014367)); +#858=DIRECTION('',(0.,-1.,0.)); +#859=DIRECTION('',(0.,1.,0.)); +#860=DIRECTION('',(34.4995123271658,0.,0.183437149278049)); +#861=DIRECTION('',(-2.26063624335135E-16,1.,-1.29122339069828E-17)); +#862=DIRECTION('',(-0.0285123772182312,0.,0.499186382371697)); +#863=DIRECTION('',(0.,-1.,0.)); +#864=DIRECTION('',(0.,-1.,0.)); +#865=DIRECTION('',(0.000136239736688492,0.,-1.499999993813)); +#866=DIRECTION('',(0.,-1.,0.)); +#867=DIRECTION('',(0.,1.,0.)); +#868=DIRECTION('',(-34.4995450798668,0.,0.177170206978796)); +#869=DIRECTION('',(0.,-1.,0.)); +#870=DIRECTION('',(34.5,0.,0.)); +#871=DIRECTION('',(0.,-1.,0.)); +#872=DIRECTION('',(0.,1.,0.)); +#873=DIRECTION('',(34.5,0.,0.)); +#874=DIRECTION('',(0.,-1.,0.)); +#875=DIRECTION('',(0.500000000000077,0.,0.)); +#876=DIRECTION('',(0.,-1.,0.)); +#877=DIRECTION('',(0.,1.,0.)); +#878=DIRECTION('',(0.500000000000077,0.,0.)); +#879=DIRECTION('',(0.,-1.,0.)); +#880=DIRECTION('',(1.50000000000009,0.,0.)); +#881=DIRECTION('',(0.,-1.,0.)); +#882=DIRECTION('',(0.,-1.,0.)); +#883=DIRECTION('',(1.50000000000004,0.,0.)); +#884=DIRECTION('',(0.,-1.,0.)); +#885=DIRECTION('',(0.499999999999977,0.,0.)); +#886=DIRECTION('',(0.,-1.,0.)); +#887=DIRECTION('',(0.,1.,0.)); +#888=DIRECTION('',(0.499999999999977,0.,0.)); +#889=DIRECTION('',(0.,-1.,0.)); +#890=DIRECTION('',(34.5,0.,0.)); +#891=DIRECTION('',(0.,1.,0.)); +#892=DIRECTION('',(34.5,0.,0.)); +#893=DIRECTION('',(-1.,0.,0.)); +#894=DIRECTION('',(0.,-1.,0.)); +#895=DIRECTION('',(0.,0.,1.)); +#896=DIRECTION('',(-0.707106781186548,0.,0.707106781186548)); +#897=DIRECTION('',(0.,-1.,0.)); +#898=DIRECTION('',(0.707106781186548,0.,0.707106781186548)); +#899=DIRECTION('',(0.,0.,1.)); +#900=DIRECTION('',(0.,-1.,0.)); +#901=DIRECTION('',(1.,0.,0.)); +#902=DIRECTION('',(0.707106781186548,0.,0.707106781186548)); +#903=DIRECTION('',(0.707106781186548,0.,-0.707106781186548)); +#904=DIRECTION('',(0.,1.,0.)); +#905=DIRECTION('',(0.,1.,0.)); +#906=CARTESIAN_POINT('',(-14.4893580450158,-2.786,-14.4506409397556)); +#907=CARTESIAN_POINT('',(-14.4893580450158,0.,-14.4506409397556)); +#908=CARTESIAN_POINT('',(-6.65399898477144,0.,-22.286)); +#909=CARTESIAN_POINT('',(-22.286,0.,-6.65399898477144)); +#910=CARTESIAN_POINT('',(-22.286,-2.786,-6.65399898477144)); +#911=CARTESIAN_POINT('',(-19.5,-2.786,-5.5)); +#912=CARTESIAN_POINT('',(-12.5193585526301,-2.786,-12.4806414473699)); +#913=CARTESIAN_POINT('',(-5.5,-2.786,-19.5)); +#914=CARTESIAN_POINT('',(-6.65399898477144,-2.786,-22.286)); +#915=CARTESIAN_POINT('',(-22.286,-2.786,0.0387135890407989)); +#916=CARTESIAN_POINT('',(-22.286,0.,0.0387135890407989)); +#917=CARTESIAN_POINT('',(-22.286,0.,6.65399898477144)); +#918=CARTESIAN_POINT('',(-22.286,-2.786,6.65399898477144)); +#919=CARTESIAN_POINT('',(-19.5,-2.786,5.5)); +#920=CARTESIAN_POINT('',(-19.5,-2.786,0.0387135890407989)); +#921=CARTESIAN_POINT('',(-14.450644455975,-2.786,14.4893545287964)); +#922=CARTESIAN_POINT('',(-14.450644455975,0.,14.4893545287964)); +#923=CARTESIAN_POINT('',(-6.65399898477144,0.,22.286)); +#924=CARTESIAN_POINT('',(-6.65399898477144,-2.786,22.286)); +#925=CARTESIAN_POINT('',(-5.5,-2.786,19.5)); +#926=CARTESIAN_POINT('',(-12.4806449635893,-2.786,12.5193550364107)); +#927=CARTESIAN_POINT('',(-3.51621945593504E-6,-2.786,22.286)); +#928=CARTESIAN_POINT('',(-3.51621945593504E-6,0.,22.286)); +#929=CARTESIAN_POINT('',(6.65399898477144,0.,22.286)); +#930=CARTESIAN_POINT('',(6.65399898477144,-2.786,22.286)); +#931=CARTESIAN_POINT('',(5.5,-2.786,19.5)); +#932=CARTESIAN_POINT('',(-3.51621945593504E-6,-2.786,19.5)); +#933=CARTESIAN_POINT('',(14.4506409397556,-2.786,14.4893580450158)); +#934=CARTESIAN_POINT('',(14.4506409397556,0.,14.4893580450158)); +#935=CARTESIAN_POINT('',(22.286,0.,6.65399898477144)); +#936=CARTESIAN_POINT('',(22.286,-2.786,6.65399898477144)); +#937=CARTESIAN_POINT('',(19.5,-2.786,5.5)); +#938=CARTESIAN_POINT('',(12.4806414473699,-2.786,12.5193585526301)); +#939=CARTESIAN_POINT('',(22.286,-2.786,0.0387135890407998)); +#940=CARTESIAN_POINT('',(22.286,0.,0.0387135890407998)); +#941=CARTESIAN_POINT('',(22.286,0.,-6.65399898477144)); +#942=CARTESIAN_POINT('',(22.286,-2.786,-6.65399898477144)); +#943=CARTESIAN_POINT('',(19.5,-2.786,-5.5)); +#944=CARTESIAN_POINT('',(19.5,-2.786,0.0387135890407998)); +#945=CARTESIAN_POINT('',(14.4893545287964,-2.786,-14.450644455975)); +#946=CARTESIAN_POINT('',(14.4893545287964,0.,-14.450644455975)); +#947=CARTESIAN_POINT('',(6.65399898477144,0.,-22.286)); +#948=CARTESIAN_POINT('',(6.65399898477144,-2.786,-22.286)); +#949=CARTESIAN_POINT('',(5.5,-2.786,-19.5)); +#950=CARTESIAN_POINT('',(12.5193550364107,-2.786,-12.4806449635893)); +#951=CARTESIAN_POINT('',(-3.51621945549095E-6,-2.786,-22.286)); +#952=CARTESIAN_POINT('',(-3.51621945549095E-6,0.,-22.286)); +#953=CARTESIAN_POINT('',(-3.51621945549095E-6,-2.786,-19.5)); +#954=CARTESIAN_POINT('',(19.5,0.,8.88178419700125E-16)); +#955=CARTESIAN_POINT('',(19.5,0.,-5.5)); +#956=CARTESIAN_POINT('',(19.5,-34.6,-5.5)); +#957=CARTESIAN_POINT('',(19.5,-34.6,-5.5)); +#958=CARTESIAN_POINT('',(19.5,-34.6,5.5)); +#959=CARTESIAN_POINT('',(19.5,0.,5.5)); +#960=CARTESIAN_POINT('',(12.5,0.,-12.5)); +#961=CARTESIAN_POINT('',(5.5,0.,-19.5)); +#962=CARTESIAN_POINT('',(5.5,-34.6,-19.5)); +#963=CARTESIAN_POINT('',(5.5,-34.6,-19.5)); +#964=CARTESIAN_POINT('',(0.,0.,-19.5)); +#965=CARTESIAN_POINT('',(-5.5,0.,-19.5)); +#966=CARTESIAN_POINT('',(-5.5,-34.6,-19.5)); +#967=CARTESIAN_POINT('',(-5.5,-34.6,-19.5)); +#968=CARTESIAN_POINT('',(-12.5,0.,-12.5)); +#969=CARTESIAN_POINT('',(-19.5,0.,-5.5)); +#970=CARTESIAN_POINT('',(-19.5,-34.6,-5.5)); +#971=CARTESIAN_POINT('',(-19.5,-34.6,-5.5)); +#972=CARTESIAN_POINT('',(-7.03243891098191E-6,0.,0.0774271780815986)); +#973=CARTESIAN_POINT('',(-4.75197700783427E-6,0.,0.0523192840460539)); +#974=CARTESIAN_POINT('',(-2.34485625041349,0.,-33.4657604856884)); +#975=CARTESIAN_POINT('',(-2.21935856224457,0.,33.5789425656241)); +#976=CARTESIAN_POINT('',(-0.00313351394289877,0.,34.499999857697)); +#977=CARTESIAN_POINT('',(2.21325881059667,0.,33.5793451647081)); +#978=CARTESIAN_POINT('',(-4.75197700783427E-6,0.,0.0523192840460539)); +#979=CARTESIAN_POINT('',(2.3509353668946,0.,-33.4653339834111)); +#980=CARTESIAN_POINT('',(2.25980537383378,0.,-33.4241596666016)); +#981=CARTESIAN_POINT('',(2.16953849943816,0.,-33.4671932742454)); +#982=CARTESIAN_POINT('',(0.00313351394289931,0.,-34.499999857697)); +#983=CARTESIAN_POINT('',(-2.16345904820421,0.,-33.4675868252102)); +#984=CARTESIAN_POINT('',(-2.25373373829365,0.,-33.4245696155233)); +#985=CARTESIAN_POINT('',(2.25980537383378,-0.9,-33.4241596666016)); +#986=CARTESIAN_POINT('',(2.3509353668946,-1.8,-33.4653339834111)); +#987=CARTESIAN_POINT('',(2.351415742384,-1.8,-33.4660238961021)); +#988=CARTESIAN_POINT('',(2.35189393373626,-1.79999913145692,-33.466715412601)); +#989=CARTESIAN_POINT('',(2.36080982820886,-1.79996641236966,-33.4796951311108)); +#990=CARTESIAN_POINT('',(2.36871783108739,-1.7996500467413,-33.4926522334727)); +#991=CARTESIAN_POINT('',(2.39240103537556,-1.79762267523028,-33.5344921049074)); +#992=CARTESIAN_POINT('',(2.40698071315745,-1.79460068448298,-33.5650820734165)); +#993=CARTESIAN_POINT('',(2.44965884967449,-1.77936782069604,-33.6627181695355)); +#994=CARTESIAN_POINT('',(2.47750994338196,-1.75905273822613,-33.7403423422873)); +#995=CARTESIAN_POINT('',(2.53666451452908,-1.67562125602716,-33.9236818722514)); +#996=CARTESIAN_POINT('',(2.56289105878316,-1.60910776980472,-34.017662964936)); +#997=CARTESIAN_POINT('',(2.60534183320541,-1.44285939712785,-34.1757143449592)); +#998=CARTESIAN_POINT('',(2.62106176688306,-1.34502485430118,-34.2384868055195)); +#999=CARTESIAN_POINT('',(2.64223921726729,-1.13035790237736,-34.3239442937866)); +#1000=CARTESIAN_POINT('',(2.64750176224845,-1.01575778163709,-34.3459467951786)); +#1001=CARTESIAN_POINT('',(2.64750176224845,-0.784242218362905,-34.3459467951786)); +#1002=CARTESIAN_POINT('',(2.64223921726731,-0.669642097622631,-34.3239442937866)); +#1003=CARTESIAN_POINT('',(2.62106176688308,-0.45497514569883,-34.2384868055195)); +#1004=CARTESIAN_POINT('',(2.60534183320542,-0.35714060287216,-34.1757143449592)); +#1005=CARTESIAN_POINT('',(2.56289105878316,-0.190892230195281,-34.017662964936)); +#1006=CARTESIAN_POINT('',(2.53666451452908,-0.124378743972839,-33.9236818722514)); +#1007=CARTESIAN_POINT('',(2.47750994338197,-0.0409472617738945,-33.7403423422874)); +#1008=CARTESIAN_POINT('',(2.44965884967452,-0.0206321793039804,-33.6627181695355)); +#1009=CARTESIAN_POINT('',(2.40698071315746,-0.00539931551702404,-33.5650820734166)); +#1010=CARTESIAN_POINT('',(2.39240103537553,-0.00237732476971291,-33.5344921049073)); +#1011=CARTESIAN_POINT('',(2.36871783109968,-0.000349953259757165,-33.4926522334944)); +#1012=CARTESIAN_POINT('',(2.36080982822175,-3.35876303932858E-5,-33.4796951311299)); +#1013=CARTESIAN_POINT('',(2.35189393373259,-8.68543062509251E-7,-33.4667154125955)); +#1014=CARTESIAN_POINT('',(2.35141574238779,9.17475207231491E-19,-33.4660238961075)); +#1015=CARTESIAN_POINT('',(2.3509353668946,0.,-33.4653339834111)); +#1016=CARTESIAN_POINT('',(2.56925699918162,-0.221358501258242,-34.04215098958)); +#1017=CARTESIAN_POINT('',(2.25989620032491,-0.9,-34.4241596624768)); +#1018=CARTESIAN_POINT('',(2.25989620032491,-0.971315907599586,-34.4241596624768)); +#1019=CARTESIAN_POINT('',(2.27140186234564,-1.04076362007836,-34.4158595538631)); +#1020=CARTESIAN_POINT('',(2.31562589211609,-1.18628590751641,-34.3799513401327)); +#1021=CARTESIAN_POINT('',(2.35078905923325,-1.25841156137749,-34.3495321926159)); +#1022=CARTESIAN_POINT('',(2.43789552900005,-1.40640941146009,-34.2571333183174)); +#1023=CARTESIAN_POINT('',(2.49333803450413,-1.48008717743762,-34.1871041702405)); +#1024=CARTESIAN_POINT('',(2.5899122201716,-1.60555809922736,-34.0078220137507)); +#1025=CARTESIAN_POINT('',(2.62782976137653,-1.6536815546375,-33.9041550554561)); +#1026=CARTESIAN_POINT('',(2.66228917036802,-1.71641492780749,-33.7017308110859)); +#1027=CARTESIAN_POINT('',(2.66561376982365,-1.73522965348702,-33.6087897214383)); +#1028=CARTESIAN_POINT('',(2.64525387606297,-1.75757538406764,-33.4214092208626)); +#1029=CARTESIAN_POINT('',(2.62163215043671,-1.76105762202692,-33.3285544203618)); +#1030=CARTESIAN_POINT('',(2.5501992946473,-1.7538724614673,-33.1559477247004)); +#1031=CARTESIAN_POINT('',(2.50369138521332,-1.74362179408812,-33.0767507073686)); +#1032=CARTESIAN_POINT('',(2.38085412455694,-1.70346096991714,-32.9202634747846)); +#1033=CARTESIAN_POINT('',(2.30223172930442,-1.67060223744717,-32.8488767571679)); +#1034=CARTESIAN_POINT('',(2.12347168666047,-1.57404651012362,-32.7290537874643)); +#1035=CARTESIAN_POINT('',(2.02765513290194,-1.5100786280339,-32.6883748929828)); +#1036=CARTESIAN_POINT('',(1.85746525702784,-1.35870741341281,-32.6386099685531)); +#1037=CARTESIAN_POINT('',(1.78501389274154,-1.27342441858306,-32.6295274546272)); +#1038=CARTESIAN_POINT('',(1.69722033243764,-1.10924120167752,-32.6230553649852)); +#1039=CARTESIAN_POINT('',(1.67187510332866,-1.03360061446656,-32.6231440463741)); +#1040=CARTESIAN_POINT('',(1.65675388990155,-0.882628971984678,-32.6231046279275)); +#1041=CARTESIAN_POINT('',(1.66388948457653,-0.812045623540529,-32.6229182555832)); +#1042=CARTESIAN_POINT('',(1.70653955080978,-0.666904215619906,-32.623892945253)); +#1043=CARTESIAN_POINT('',(1.74398374589423,-0.59609157976935,-32.6254387901131)); +#1044=CARTESIAN_POINT('',(1.85058577198254,-0.448409034625729,-32.6393367300583)); +#1045=CARTESIAN_POINT('',(1.92746772863147,-0.373292125401069,-32.6548927662209)); +#1046=CARTESIAN_POINT('',(2.10540775157131,-0.236211260044546,-32.7217144574166)); +#1047=CARTESIAN_POINT('',(2.20195345093772,-0.180098021384384,-32.7740308037919)); +#1048=CARTESIAN_POINT('',(2.36214405819879,-0.104135250280968,-32.9040276622228)); +#1049=CARTESIAN_POINT('',(2.42686209753725,-0.0800081380935368,-32.9726391277673)); +#1050=CARTESIAN_POINT('',(2.53429740642512,-0.049056032227836,-33.1268471674646)); +#1051=CARTESIAN_POINT('',(2.57679085278836,-0.0417444088380246,-33.210143275011)); +#1052=CARTESIAN_POINT('',(2.637431468866,-0.0407616841166946,-33.3867485764279)); +#1053=CARTESIAN_POINT('',(2.65520906205529,-0.0471004336758105,-33.4791716847125)); +#1054=CARTESIAN_POINT('',(2.66496162190899,-0.0762512305001958,-33.6690197262951)); +#1055=CARTESIAN_POINT('',(2.65559995407492,-0.0996451454658011,-33.7645033465681)); +#1056=CARTESIAN_POINT('',(2.60710559874763,-0.174371563493747,-33.9679565191873)); +#1057=CARTESIAN_POINT('',(2.56176957158015,-0.229786783729536,-34.0695003684046)); +#1058=CARTESIAN_POINT('',(2.45346274111005,-0.373859742843581,-34.2420567670344)); +#1059=CARTESIAN_POINT('',(2.39405609695687,-0.458786342460414,-34.3066500287586)); +#1060=CARTESIAN_POINT('',(2.32142735553513,-0.606076222770935,-34.3750867470282)); +#1061=CARTESIAN_POINT('',(2.29902384638945,-0.662134617605428,-34.3936321867377)); +#1062=CARTESIAN_POINT('',(2.26824601315149,-0.779551897795118,-34.4180861497694)); +#1063=CARTESIAN_POINT('',(2.25989620032491,-0.839133518666,-34.4241596624768)); +#1064=CARTESIAN_POINT('',(2.25989620032491,-0.9,-34.4241596624768)); +#1065=CARTESIAN_POINT('',(2.25989620032491,-0.9,-34.4241596624768)); +#1066=CARTESIAN_POINT('',(2.25980537383378,-0.9,-33.4241596666016)); +#1067=CARTESIAN_POINT('',(1.35713662987739,-0.9,-33.8544957430397)); +#1068=CARTESIAN_POINT('',(2.16953849943816,-0.9,-33.4671932742454)); +#1069=CARTESIAN_POINT('',(0.00313351394289931,-0.9,-34.499999857697)); +#1070=CARTESIAN_POINT('',(-2.16345904820421,-0.9,-33.4675868252102)); +#1071=CARTESIAN_POINT('',(-1.35098683739906,-0.9,-33.8547417123928)); +#1072=CARTESIAN_POINT('',(0.00313351394289931,-0.9,-34.499999857697)); +#1073=CARTESIAN_POINT('',(-2.25373373829365,-0.9,-33.4245696155233)); +#1074=CARTESIAN_POINT('',(-2.34485625041349,0.,-33.4657604856884)); +#1075=CARTESIAN_POINT('',(-2.34533650057433,-1.64699074158281E-18,-33.4664504856355)); +#1076=CARTESIAN_POINT('',(-2.34581456629466,-8.68543061504202E-7,-33.4671420889761)); +#1077=CARTESIAN_POINT('',(-2.35472810283427,-3.35876304001249E-5,-33.4801234268983)); +#1078=CARTESIAN_POINT('',(-2.36263375188553,-0.000349953259924227,-33.493081965562)); +#1079=CARTESIAN_POINT('',(-2.38630935543132,-0.00237732476970793,-33.5349261384058)); +#1080=CARTESIAN_POINT('',(-2.40088347621374,-0.00539931551702478,-33.5655187548523)); +#1081=CARTESIAN_POINT('',(-2.44354387613868,-0.020632179303974,-33.6631626019711)); +#1082=CARTESIAN_POINT('',(-2.47138086872422,-0.0409472617738754,-33.7407918326764)); +#1083=CARTESIAN_POINT('',(-2.53050213472313,-0.124378743972839,-33.9241421052198)); +#1084=CARTESIAN_POINT('',(-2.55671160659881,-0.190892230195277,-34.0181279604838)); +#1085=CARTESIAN_POINT('',(-2.59913366981627,-0.35714060287215,-34.1761870492091)); +#1086=CARTESIAN_POINT('',(-2.61484220042995,-0.454975145698821,-34.2389623643065)); +#1087=CARTESIAN_POINT('',(-2.63600412685725,-0.669642097622675,-34.3244236981106)); +#1088=CARTESIAN_POINT('',(-2.64126267493159,-0.78424221836293,-34.3464271550966)); +#1089=CARTESIAN_POINT('',(-2.64126267493159,-1.01575778163707,-34.3464271550966)); +#1090=CARTESIAN_POINT('',(-2.63600412685725,-1.13035790237733,-34.3244236981106)); +#1091=CARTESIAN_POINT('',(-2.61484220042995,-1.34502485430118,-34.2389623643065)); +#1092=CARTESIAN_POINT('',(-2.59913366981627,-1.44285939712785,-34.1761870492091)); +#1093=CARTESIAN_POINT('',(-2.55671160659881,-1.60910776980472,-34.0181279604838)); +#1094=CARTESIAN_POINT('',(-2.53050213472313,-1.67562125602716,-33.9241421052198)); +#1095=CARTESIAN_POINT('',(-2.47138086872421,-1.75905273822612,-33.7407918326765)); +#1096=CARTESIAN_POINT('',(-2.44354387613869,-1.77936782069602,-33.6631626019712)); +#1097=CARTESIAN_POINT('',(-2.40088347621383,-1.79460068448294,-33.5655187548526)); +#1098=CARTESIAN_POINT('',(-2.38630935543147,-1.79762267523026,-33.5349261384061)); +#1099=CARTESIAN_POINT('',(-2.36263375186947,-1.79965004674146,-33.4930819655336)); +#1100=CARTESIAN_POINT('',(-2.35472810281755,-1.79996641236966,-33.4801234268735)); +#1101=CARTESIAN_POINT('',(-2.34581456629868,-1.79999913145692,-33.4671420889821)); +#1102=CARTESIAN_POINT('',(-2.34533650057019,-1.8,-33.4664504856295)); +#1103=CARTESIAN_POINT('',(-2.34485625041349,-1.8,-33.4657604856884)); +#1104=CARTESIAN_POINT('',(-2.56307309887792,-0.221358500712162,-34.0426171403693)); +#1105=CARTESIAN_POINT('',(-2.25373373829365,-0.9,-33.4245696155233)); +#1106=CARTESIAN_POINT('',(-2.25364291180259,-0.9,-34.4245696113985)); +#1107=CARTESIAN_POINT('',(-1.6552682008558,-0.9,-32.623421064692)); +#1108=CARTESIAN_POINT('',(-1.6552682008558,-0.971315907599611,-32.623421064692)); +#1109=CARTESIAN_POINT('',(-1.66945325276765,-1.04076362007841,-32.6231836540954)); +#1110=CARTESIAN_POINT('',(-1.72637330733897,-1.18628590751647,-32.6254797399049)); +#1111=CARTESIAN_POINT('',(-1.77274934111056,-1.25841156137756,-32.6288018399899)); +#1112=CARTESIAN_POINT('',(-1.89783409322842,-1.40640941146014,-32.6506854830705)); +#1113=CARTESIAN_POINT('',(-1.98416388959645,-1.48008717743769,-32.6736009637769)); +#1114=CARTESIAN_POINT('',(-2.16883614598741,-1.60555809922745,-32.7594195089315)); +#1115=CARTESIAN_POINT('',(-2.26126031301742,-1.65368155463757,-32.8197714063489)); +#1116=CARTESIAN_POINT('',(-2.41002420858733,-1.71641492780753,-32.9613070165385)); +#1117=CARTESIAN_POINT('',(-2.46831632774118,-1.73522965348706,-33.0337716834526)); +#1118=CARTESIAN_POINT('',(-2.56416054147794,-1.75757538406767,-33.1960672901803)); +#1119=CARTESIAN_POINT('',(-2.60081446878055,-1.76105762202695,-33.2845912389789)); +#1120=CARTESIAN_POINT('',(-2.64690174123378,-1.75387246146734,-33.4656207603039)); +#1121=CARTESIAN_POINT('',(-2.65704697330753,-1.74362179408816,-33.5569017959046)); +#1122=CARTESIAN_POINT('',(-2.65230635959496,-1.70346096991719,-33.7557856141226)); +#1123=CARTESIAN_POINT('',(-2.63205010011473,-1.67060223744723,-33.8600316137542)); +#1124=CARTESIAN_POINT('',(-2.56056510501453,-1.57404651012374,-34.0630158308504)); +#1125=CARTESIAN_POINT('',(-2.50815489676517,-1.51007862803404,-34.1529533341605)); +#1126=CARTESIAN_POINT('',(-2.40160298912673,-1.35870741341286,-34.2946848851017)); +#1127=CARTESIAN_POINT('',(-2.34899885451616,-1.27342441858307,-34.3453257506949)); +#1128=CARTESIAN_POINT('',(-2.28254173688419,-1.10924120167763,-34.4030583124882)); +#1129=CARTESIAN_POINT('',(-2.26218474186759,-1.03360061446664,-34.4181573606989)); +#1130=CARTESIAN_POINT('',(-2.25009481908027,-0.882628971984708,-34.4272395639734)); +#1131=CARTESIAN_POINT('',(-2.25592265350997,-0.812045623540543,-34.4231179390661)); +#1132=CARTESIAN_POINT('',(-2.28950598471681,-0.666904215619883,-34.3968094226749)); +#1133=CARTESIAN_POINT('',(-2.31857706453034,-0.596091579769301,-34.3731592704486)); +#1134=CARTESIAN_POINT('',(-2.39565687902367,-0.448409034625695,-34.2982203159688)); +#1135=CARTESIAN_POINT('',(-2.44793568444099,-0.37329212540103,-34.2397416700936)); +#1136=CARTESIAN_POINT('',(-2.55048706168133,-0.236211260044489,-34.0797072825258)); +#1137=CARTESIAN_POINT('',(-2.59651592356309,-0.180098021384328,-33.9800106625325)); +#1138=CARTESIAN_POINT('',(-2.64703558977988,-0.104135250280919,-33.779990720572)); +#1139=CARTESIAN_POINT('',(-2.65781424516641,-0.0800081380934921,-33.6862902488121)); +#1140=CARTESIAN_POINT('',(-2.65158062902403,-0.0490560322277987,-33.4984509368114)); +#1141=CARTESIAN_POINT('',(-2.63576597141372,-0.0417444088379922,-33.406288953755)); +#1142=CARTESIAN_POINT('',(-2.57863977972632,-0.0407616841166629,-33.2285157414027)); +#1143=CARTESIAN_POINT('',(-2.53756253620239,-0.0471004336757761,-33.1438355558274)); +#1144=CARTESIAN_POINT('',(-2.4317439310901,-0.0762512305001506,-32.9859121119423)); +#1145=CARTESIAN_POINT('',(-2.36709374956819,-0.0996451454657457,-32.9150240551609)); +#1146=CARTESIAN_POINT('',(-2.20647068705219,-0.174371563493668,-32.7810646294552)); +#1147=CARTESIAN_POINT('',(-2.1093743761104,-0.229786783729443,-32.7268537903667)); +#1148=CARTESIAN_POINT('',(-1.91932878980192,-0.373859742843495,-32.6534456480441)); +#1149=CARTESIAN_POINT('',(-1.83307693116895,-0.458786342460328,-32.6372575131277)); +#1150=CARTESIAN_POINT('',(-1.73393247127259,-0.606076222770839,-32.6259043391273)); +#1151=CARTESIAN_POINT('',(-1.70488499427251,-0.662134617605349,-32.6244570533953)); +#1152=CARTESIAN_POINT('',(-1.66559241738093,-0.779551897795076,-32.6232888376624)); +#1153=CARTESIAN_POINT('',(-1.6552682008558,-0.839133518665979,-32.623421064692)); +#1154=CARTESIAN_POINT('',(-1.6552682008558,-0.9,-32.623421064692)); +#1155=CARTESIAN_POINT('',(-1.65517737436449,0.,-33.6234210605673)); +#1156=CARTESIAN_POINT('',(-2.25364291180259,0.,-34.4245696113985)); +#1157=CARTESIAN_POINT('',(-2.25364291180259,-35.,-34.4245696113985)); +#1158=CARTESIAN_POINT('',(-1.65517737436449,-35.,-33.6234210605673)); +#1159=CARTESIAN_POINT('',(-2.32101416786399,-35.,-34.3695184834434)); +#1160=CARTESIAN_POINT('',(-2.32101416786399,0.,-34.3695184834434)); +#1161=CARTESIAN_POINT('',(-2.32101416786399,-0.9,-34.3695184834434)); +#1162=CARTESIAN_POINT('',(-1.06571489124365,-0.9,-34.4312168150703)); +#1163=CARTESIAN_POINT('',(-1.06571489124365,-0.972900750058225,-34.4312168150703)); +#1164=CARTESIAN_POINT('',(-1.05385207009898,-1.04378810200267,-34.4228477681753)); +#1165=CARTESIAN_POINT('',(-1.00774728658209,-1.19986357603202,-34.3862547303098)); +#1166=CARTESIAN_POINT('',(-0.969324312920586,-1.28198136444454,-34.3535370493442)); +#1167=CARTESIAN_POINT('',(-0.873268491360194,-1.45880600834476,-34.2520399502403)); +#1168=CARTESIAN_POINT('',(-0.809335283039707,-1.55456174699218,-34.1700012872736)); +#1169=CARTESIAN_POINT('',(-0.718327011749093,-1.68903241568763,-33.9840262240278)); +#1170=CARTESIAN_POINT('',(-0.686939272116499,-1.73464051935856,-33.8934326151839)); +#1171=CARTESIAN_POINT('',(-0.654982131921986,-1.78897229641841,-33.7076793298962)); +#1172=CARTESIAN_POINT('',(-0.651032506356861,-1.80128016252279,-33.6183162627321)); +#1173=CARTESIAN_POINT('',(-0.668353390452319,-1.79854149066469,-33.4386643845725)); +#1174=CARTESIAN_POINT('',(-0.688670962925091,-1.78416608500392,-33.352446985594)); +#1175=CARTESIAN_POINT('',(-0.755073768587512,-1.72942127809456,-33.1760787394998)); +#1176=CARTESIAN_POINT('',(-0.803798337789747,-1.68600878906481,-33.0905058941508)); +#1177=CARTESIAN_POINT('',(-0.93780347829862,-1.56428893547739,-32.9153417598677)); +#1178=CARTESIAN_POINT('',(-1.02965431093753,-1.47904075709609,-32.8345487003777)); +#1179=CARTESIAN_POINT('',(-1.26191905753491,-1.26975929590318,-32.6907592166595)); +#1180=CARTESIAN_POINT('',(-1.39100620720807,-1.15589535956076,-32.6537774096119)); +#1181=CARTESIAN_POINT('',(-1.51711075371372,-1.08973926356686,-32.6326054108519)); +#1182=CARTESIAN_POINT('',(-1.54139100278005,-1.08062658243595,-32.6296577459818)); +#1183=CARTESIAN_POINT('',(-1.57766803665439,-1.07265921485878,-32.6263341742043)); +#1184=CARTESIAN_POINT('',(-1.59156457268206,-1.071004824112,-32.6253437376971)); +#1185=CARTESIAN_POINT('',(-1.6199195472801,-1.07097095042962,-32.6239437140993)); +#1186=CARTESIAN_POINT('',(-1.6338092765696,-1.07254021355501,-32.6235522424484)); +#1187=CARTESIAN_POINT('',(-1.67042697962905,-1.08044671202897,-32.6232801230399)); +#1188=CARTESIAN_POINT('',(-1.69520564175235,-1.08956714535247,-32.6238064607266)); +#1189=CARTESIAN_POINT('',(-1.78393486810393,-1.13577760412531,-32.6299253160261)); +#1190=CARTESIAN_POINT('',(-1.85328886815604,-1.18833928905161,-32.6401913183897)); +#1191=CARTESIAN_POINT('',(-2.05411379834473,-1.35151127587577,-32.6970841925136)); +#1192=CARTESIAN_POINT('',(-2.19727196324951,-1.47827137351746,-32.7646585872022)); +#1193=CARTESIAN_POINT('',(-2.41239461088147,-1.65651316013044,-32.9604137333251)); +#1194=CARTESIAN_POINT('',(-2.48243289920082,-1.7114693413011,-33.0502808794762)); +#1195=CARTESIAN_POINT('',(-2.57933741954502,-1.77787091812691,-33.2306299153519)); +#1196=CARTESIAN_POINT('',(-2.61278643961431,-1.79631523918155,-33.319381965122)); +#1197=CARTESIAN_POINT('',(-2.65140925108443,-1.80238267596155,-33.5001449330101)); +#1198=CARTESIAN_POINT('',(-2.65821450268269,-1.79270668765425,-33.5872284017475)); +#1199=CARTESIAN_POINT('',(-2.64947975206952,-1.74668571237666,-33.7628104390491)); +#1200=CARTESIAN_POINT('',(-2.63309868313671,-1.71008723781131,-33.8477210318025)); +#1201=CARTESIAN_POINT('',(-2.57850408873941,-1.6050832388314,-34.0200663553226)); +#1202=CARTESIAN_POINT('',(-2.53648894934166,-1.53222024096366,-34.1028087772628)); +#1203=CARTESIAN_POINT('',(-2.44281507355353,-1.3551836721401,-34.2461689500585)); +#1204=CARTESIAN_POINT('',(-2.39135305237041,-1.24966736514766,-34.3018273087395)); +#1205=CARTESIAN_POINT('',(-2.33239891160004,-1.05295553220426,-34.3600847445208)); +#1206=CARTESIAN_POINT('',(-2.32147877656046,-0.975622113518327,-34.369103838135)); +#1207=CARTESIAN_POINT('',(-2.32056690962062,-0.83181162458405,-34.3699176446669)); +#1208=CARTESIAN_POINT('',(-2.33109864348443,-0.76088033386806,-34.3608364487773)); +#1209=CARTESIAN_POINT('',(-2.37250370269863,-0.605147498251112,-34.3208936100113)); +#1210=CARTESIAN_POINT('',(-2.4069607470472,-0.523446284598657,-34.285365306234)); +#1211=CARTESIAN_POINT('',(-2.49184713521457,-0.346914095071375,-34.1769191492452)); +#1212=CARTESIAN_POINT('',(-2.54745678098332,-0.250882093469806,-34.0901463855521)); +#1213=CARTESIAN_POINT('',(-2.6209310755398,-0.114782632276483,-33.8973928555801)); +#1214=CARTESIAN_POINT('',(-2.6440313735291,-0.0681908911905272,-33.8040732640293)); +#1215=CARTESIAN_POINT('',(-2.6588817813687,-0.0122944576713593,-33.6158626009163)); +#1216=CARTESIAN_POINT('',(-2.65465652538671,0.000708413136401587,-33.5264740225798)); +#1217=CARTESIAN_POINT('',(-2.62095310237635,-0.000748651707175424,-33.3491823281684)); +#1218=CARTESIAN_POINT('',(-2.59287576273667,-0.0144824053198908,-33.2652556230323)); +#1219=CARTESIAN_POINT('',(-2.51083317520069,-0.0678518155156863,-33.0961039384537)); +#1220=CARTESIAN_POINT('',(-2.45478357007933,-0.110430730281619,-33.0156291980572)); +#1221=CARTESIAN_POINT('',(-2.30628443361819,-0.230163624719545,-32.8540943814717)); +#1222=CARTESIAN_POINT('',(-2.20824259250803,-0.314152974495454,-32.7822739270511)); +#1223=CARTESIAN_POINT('',(-1.96301739593512,-0.523531075569535,-32.6588311649251)); +#1224=CARTESIAN_POINT('',(-1.8293110019814,-0.639091827592589,-32.6335607803192)); +#1225=CARTESIAN_POINT('',(-1.69897390677597,-0.708869704309804,-32.6239312932929)); +#1226=CARTESIAN_POINT('',(-1.67316665726598,-0.718749692057102,-32.6233031921635)); +#1227=CARTESIAN_POINT('',(-1.63565570064821,-0.727173231483701,-32.6235155539668)); +#1228=CARTESIAN_POINT('',(-1.62163947070328,-0.728920076838991,-32.6238796663783)); +#1229=CARTESIAN_POINT('',(-1.5932736134775,-0.729094929538344,-32.625240984004)); +#1230=CARTESIAN_POINT('',(-1.57949328722688,-0.727614733191477,-32.6261928240601)); +#1231=CARTESIAN_POINT('',(-1.54351855254027,-0.72002482092088,-32.6294252959147)); +#1232=CARTESIAN_POINT('',(-1.5194979993182,-0.711294652182948,-32.6322754917607)); +#1233=CARTESIAN_POINT('',(-1.43456490618046,-0.667383983054717,-32.6463254349601)); +#1234=CARTESIAN_POINT('',(-1.36930648179167,-0.617585183303709,-32.6623388512153)); +#1235=CARTESIAN_POINT('',(-1.17971008055142,-0.45974314472155,-32.7342394221168)); +#1236=CARTESIAN_POINT('',(-1.04196128956088,-0.331377616066218,-32.8134597098811)); +#1237=CARTESIAN_POINT('',(-0.842709459244968,-0.149042660448179,-33.0292529190467)); +#1238=CARTESIAN_POINT('',(-0.780414843944941,-0.0926974175212006,-33.1256098124868)); +#1239=CARTESIAN_POINT('',(-0.699571169495317,-0.0241928968592079,-33.3148481359403)); +#1240=CARTESIAN_POINT('',(-0.674093868292874,-0.0048263690989829,-33.4065779527514)); +#1241=CARTESIAN_POINT('',(-0.651872812588797,0.0028442789055706,-33.5906568958552)); +#1242=CARTESIAN_POINT('',(-0.652957492897807,-0.00608195235025392,-33.6782043308899)); +#1243=CARTESIAN_POINT('',(-0.677623050459483,-0.0506346031272258,-33.8523721042017)); +#1244=CARTESIAN_POINT('',(-0.701581701819406,-0.0863844140009661,-33.9353454529215)); +#1245=CARTESIAN_POINT('',(-0.771453246704663,-0.189414067510628,-34.1017896770084)); +#1246=CARTESIAN_POINT('',(-0.820628560301154,-0.261024911942022,-34.1802690698988)); +#1247=CARTESIAN_POINT('',(-0.919265062730339,-0.422553372475452,-34.3049833727744)); +#1248=CARTESIAN_POINT('',(-0.96765451675012,-0.510292579020961,-34.3511586561908)); +#1249=CARTESIAN_POINT('',(-1.02223310577033,-0.648291639663097,-34.3979924240602)); +#1250=CARTESIAN_POINT('',(-1.03803619020382,-0.697043989580478,-34.4103956628541)); +#1251=CARTESIAN_POINT('',(-1.05982590525302,-0.797800345949978,-34.4270003489308)); +#1252=CARTESIAN_POINT('',(-1.06571489124365,-0.848377601739693,-34.4312168150703)); +#1253=CARTESIAN_POINT('',(-1.06571489124365,-0.9,-34.4312168150703)); +#1254=CARTESIAN_POINT('',(-2.25373373829365,0.,-33.4245696155233)); +#1255=CARTESIAN_POINT('',(-1.35098683739906,0.,-33.8547417123928)); +#1256=CARTESIAN_POINT('',(-1.35098683739906,-35.,-33.8547417123928)); +#1257=CARTESIAN_POINT('',(-2.25373373829365,-35.,-33.4245696155233)); +#1258=CARTESIAN_POINT('',(0.00313351394289931,0.,-34.499999857697)); +#1259=CARTESIAN_POINT('',(1.35713662987739,0.,-33.8544957430397)); +#1260=CARTESIAN_POINT('',(1.35713662987739,-35.,-33.8544957430397)); +#1261=CARTESIAN_POINT('',(0.00313351394289931,-35.,-34.499999857697)); +#1262=CARTESIAN_POINT('',(2.25980537383378,0.,-33.4241596666016)); +#1263=CARTESIAN_POINT('',(2.25989620032491,0.,-34.4241596624768)); +#1264=CARTESIAN_POINT('',(2.25989620032491,-35.,-34.4241596624768)); +#1265=CARTESIAN_POINT('',(2.25980537383378,-35.,-33.4241596666016)); +#1266=CARTESIAN_POINT('',(1.66128514173813,0.,-33.6231198379128)); +#1267=CARTESIAN_POINT('',(2.32725745507326,-0.9,-34.3690962972405)); +#1268=CARTESIAN_POINT('',(2.32725745507326,-0.972900793273459,-34.3690962972405)); +#1269=CARTESIAN_POINT('',(2.33824068580945,-1.04378813823006,-34.3596022699467)); +#1270=CARTESIAN_POINT('',(2.38052735969062,-1.19986360099024,-34.3186567233377)); +#1271=CARTESIAN_POINT('',(2.41555012074368,-1.28198136395273,-34.2823224726261)); +#1272=CARTESIAN_POINT('',(2.50116972100586,-1.45880601291865,-34.1718794483598)); +#1273=CARTESIAN_POINT('',(2.55673379053715,-1.55456173841917,-34.083956559752)); +#1274=CARTESIAN_POINT('',(2.62903077472489,-1.68903240976236,-33.8899401622385)); +#1275=CARTESIAN_POINT('',(2.65136634137377,-1.73464050480717,-33.7967011352126)); +#1276=CARTESIAN_POINT('',(2.66491966433144,-1.78897229728568,-33.6087068659598)); +#1277=CARTESIAN_POINT('',(2.66007074744734,-1.80128015478876,-33.5193880775193)); +#1278=CARTESIAN_POINT('',(2.62518387013212,-1.79854149915165,-33.3423069938593)); +#1279=CARTESIAN_POINT('',(2.59649420518978,-1.78416609038738,-33.258502795043)); +#1280=CARTESIAN_POINT('',(2.51308547589428,-1.729421322633,-33.0895115100555)); +#1281=CARTESIAN_POINT('',(2.45618959277054,-1.68600885764914,-33.0091395997442)); +#1282=CARTESIAN_POINT('',(2.3056239451675,-1.56428911671389,-32.847988168766)); +#1283=CARTESIAN_POINT('',(2.20628008473729,-1.47904102799208,-32.7766098403178)); +#1284=CARTESIAN_POINT('',(1.96101219757945,-1.26975935198572,-32.6563344056278)); +#1285=CARTESIAN_POINT('',(1.82891597210105,-1.155895130591,-32.6322136137278)); +#1286=CARTESIAN_POINT('',(1.7013413184536,-1.08973910692703,-32.6235331501871)); +#1287=CARTESIAN_POINT('',(1.67688893795706,-1.08062646314168,-32.6229851542334)); +#1288=CARTESIAN_POINT('',(1.64046074117585,-1.07265913047153,-32.623241693132)); +#1289=CARTESIAN_POINT('',(1.62653400726286,-1.07100476748258,-32.6236213172039)); +#1290=CARTESIAN_POINT('',(1.59817826817768,-1.07097100417323,-32.6250138260849)); +#1291=CARTESIAN_POINT('',(1.58431702060005,-1.0725403844096,-32.6259888716118)); +#1292=CARTESIAN_POINT('',(1.54784879039447,-1.08044735702163,-32.629315696332)); +#1293=CARTESIAN_POINT('',(1.52324075546698,-1.08956839301067,-32.6322740152878)); +#1294=CARTESIAN_POINT('',(1.43553751885992,-1.13578244939717,-32.6470815896989)); +#1295=CARTESIAN_POINT('',(1.36752329153319,-1.18834847684135,-32.6641131667481)); +#1296=CARTESIAN_POINT('',(1.17325366663714,-1.35152731115092,-32.7404670483972)); +#1297=CARTESIAN_POINT('',(1.03743148546709,-1.47828322906075,-32.8217808644079)); +#1298=CARTESIAN_POINT('',(0.842588126489682,-1.65651874912619,-33.037721096995)); +#1299=CARTESIAN_POINT('',(0.781719052766329,-1.71147350701245,-33.1340343026645)); +#1300=CARTESIAN_POINT('',(0.703003725694562,-1.77787296987925,-33.3230309041749)); +#1301=CARTESIAN_POINT('',(0.678436828830408,-1.79631635042519,-33.4146396607226)); +#1302=CARTESIAN_POINT('',(0.657761336434493,-1.80238218108076,-33.5983222303523)); +#1303=CARTESIAN_POINT('',(0.659545175760179,-1.79270542181786,-33.6856527842591)); +#1304=CARTESIAN_POINT('',(0.685488889660047,-1.74668296386,-33.8595269794802)); +#1305=CARTESIAN_POINT('',(0.710133393165639,-1.7100836203996,-33.9424173537169)); +#1306=CARTESIAN_POINT('',(0.781397212585312,-1.60507763716755,-34.1085650023179)); +#1307=CARTESIAN_POINT('',(0.831338831752873,-1.53221337297843,-34.1867790938577)); +#1308=CARTESIAN_POINT('',(0.938643497077881,-1.3551760564215,-34.3202401751732)); +#1309=CARTESIAN_POINT('',(0.995323521257628,-1.24966058969362,-34.370571941536)); +#1310=CARTESIAN_POINT('',(1.05971411042252,-1.05295006051278,-34.4227538881586)); +#1311=CARTESIAN_POINT('',(1.07146686631028,-0.975616958841682,-34.4306560690018)); +#1312=CARTESIAN_POINT('',(1.07245321548838,-0.831806539419021,-34.4313755805515)); +#1313=CARTESIAN_POINT('',(1.06107971611144,-0.760875310427129,-34.4233726031836)); +#1314=CARTESIAN_POINT('',(1.01594975919565,-0.605142132099764,-34.3876898621086)); +#1315=CARTESIAN_POINT('',(0.978168259927161,-0.52344050078306,-34.355717861516)); +#1316=CARTESIAN_POINT('',(0.883037277092193,-0.346907979209445,-34.2561339520138)); +#1317=CARTESIAN_POINT('',(0.819171604361643,-0.250876264424945,-34.175243066915)); +#1318=CARTESIAN_POINT('',(0.727116851592756,-0.114778527378086,-33.9906390266984)); +#1319=CARTESIAN_POINT('',(0.694960983826075,-0.0681878503155501,-33.9000403616533)); +#1320=CARTESIAN_POINT('',(0.661693114456232,-0.0122930780895295,-33.7141992875974)); +#1321=CARTESIAN_POINT('',(0.657116656736291,0.000709041057309019,-33.624828041972)); +#1322=CARTESIAN_POINT('',(0.67324033098454,-0.000749375428828992,-33.4450829691159)); +#1323=CARTESIAN_POINT('',(0.69293715270714,-0.014483815739319,-33.3588039129008)); +#1324=CARTESIAN_POINT('',(0.75796601119698,-0.0678546486921051,-33.182410358544)); +#1325=CARTESIAN_POINT('',(0.805839128961365,-0.110434424621527,-33.0968184190609)); +#1326=CARTESIAN_POINT('',(0.937752038297991,-0.230169316201454,-32.9214760576639)); +#1327=CARTESIAN_POINT('',(1.02826493301032,-0.314159912474468,-32.840371339907)); +#1328=CARTESIAN_POINT('',(1.2601768374517,-0.523538174939936,-32.693436714883)); +#1329=CARTESIAN_POINT('',(1.39075245007567,-0.639097422865954,-32.6551540240571)); +#1330=CARTESIAN_POINT('',(1.51951051768219,-0.708871513592313,-32.6327674909815)); +#1331=CARTESIAN_POINT('',(1.54513005225769,-0.718750701785055,-32.6296072193381)); +#1332=CARTESIAN_POINT('',(1.58247962864774,-0.727173615502119,-32.6261334745445)); +#1333=CARTESIAN_POINT('',(1.59646378605142,-0.728920271442231,-32.6251188461028)); +#1334=CARTESIAN_POINT('',(1.62482652414094,-0.729094772147288,-32.6236868376659)); +#1335=CARTESIAN_POINT('',(1.63863408668751,-0.727614309602437,-32.6232802626689)); +#1336=CARTESIAN_POINT('',(1.67475414597058,-0.720023398233929,-32.6229628890604)); +#1337=CARTESIAN_POINT('',(1.69894044212013,-0.711291989621104,-32.6234395517564)); +#1338=CARTESIAN_POINT('',(1.78485187723052,-0.667374150468771,-32.6290787499778)); +#1339=CARTESIAN_POINT('',(1.85137667111217,-0.617566763960268,-32.6386056577329)); +#1340=CARTESIAN_POINT('',(2.04714374982221,-0.459701407343138,-32.6915458460858)); +#1341=CARTESIAN_POINT('',(2.19201291864688,-0.331332295068789,-32.7568628021944)); +#1342=CARTESIAN_POINT('',(2.41148909071739,-0.149010346703246,-32.9520513790298)); +#1343=CARTESIAN_POINT('',(2.48294071489342,-0.0926731693157825,-33.0418225403249)); +#1344=CARTESIAN_POINT('',(2.58197271973807,-0.0241808022350423,-33.2222026325696)); +#1345=CARTESIAN_POINT('',(2.61633350596691,-0.0048196056395285,-33.3109854770099)); +#1346=CARTESIAN_POINT('',(2.65652291669442,0.00284182300157464,-33.4919893505852)); +#1347=CARTESIAN_POINT('',(2.66404049296203,-0.00608872765542372,-33.5792189616225)); +#1348=CARTESIAN_POINT('',(2.65659801598359,-0.0506497704992753,-33.7549664445573)); +#1349=CARTESIAN_POINT('',(2.64090307628681,-0.0864044296553043,-33.8398921094402)); +#1350=CARTESIAN_POINT('',(2.58771387702179,-0.189445317457344,-34.0123947938423)); +#1351=CARTESIAN_POINT('',(2.54648220005108,-0.261063289939881,-34.0953246999066)); +#1352=CARTESIAN_POINT('',(2.46057644435949,-0.422594498003864,-34.2291112926715)); +#1353=CARTESIAN_POINT('',(2.41696326399441,-0.510327203401465,-34.279808126702)); +#1354=CARTESIAN_POINT('',(2.36725740360714,-0.648315507330883,-34.3317679964343)); +#1355=CARTESIAN_POINT('',(2.3527518958884,-0.697063470821758,-34.3456611314479)); +#1356=CARTESIAN_POINT('',(2.33270261251957,-0.797810354011741,-34.3643226144487)); +#1357=CARTESIAN_POINT('',(2.32725745507326,-0.848382744136009,-34.3690962972405)); +#1358=CARTESIAN_POINT('',(2.32725745507326,-0.9,-34.3690962972405)); +#1359=CARTESIAN_POINT('',(2.32725745507327,-0.9,-34.3690962972405)); +#1360=CARTESIAN_POINT('',(2.32725745507327,0.,-34.3690962972405)); +#1361=CARTESIAN_POINT('',(2.32725745507327,-35.,-34.3690962972405)); +#1362=CARTESIAN_POINT('',(1.66128514173813,-35.,-33.6231198379128)); +#1363=CARTESIAN_POINT('',(2.21325881059668,0.,33.5793451647081)); +#1364=CARTESIAN_POINT('',(2.16892428484163,-5.49388879593214E-16,33.6168290852546)); +#1365=CARTESIAN_POINT('',(2.12413225700886,-0.00510800330732623,33.6536680060171)); +#1366=CARTESIAN_POINT('',(2.00823588742089,-0.0315283354012797,33.7462740245286)); +#1367=CARTESIAN_POINT('',(1.93753912109928,-0.0606111604175919,33.8000544600142)); +#1368=CARTESIAN_POINT('',(1.76104834806544,-0.169877428064481,33.9280992514111)); +#1369=CARTESIAN_POINT('',(1.65886860329484,-0.270955565968959,33.9954404076521)); +#1370=CARTESIAN_POINT('',(1.50089949771285,-0.542470747612002,34.0937428223939)); +#1371=CARTESIAN_POINT('',(1.44871965824167,-0.720357278008852,34.1230086556539)); +#1372=CARTESIAN_POINT('',(1.44871965824167,-0.9,34.1230086556539)); +#1373=CARTESIAN_POINT('',(2.21325881059668,2.49592072991392E-30,33.5793451647081)); +#1374=CARTESIAN_POINT('',(2.17399221612696,-4.62066212246853E-16,33.6199753724315)); +#1375=CARTESIAN_POINT('',(2.13430341768402,-0.00445518767122959,33.6600657347345)); +#1376=CARTESIAN_POINT('',(2.03098869308769,-0.0275320387680143,33.7618217627638)); +#1377=CARTESIAN_POINT('',(1.96734153775229,-0.0528870706545175,33.821926934483)); +#1378=CARTESIAN_POINT('',(1.80439481149652,-0.150376048845145,33.969652766841)); +#1379=CARTESIAN_POINT('',(1.70509456509825,-0.241569732012443,34.0530303914594)); +#1380=CARTESIAN_POINT('',(1.53980813892912,-0.51033684862749,34.1862708969944)); +#1381=CARTESIAN_POINT('',(1.47748867112635,-0.701622062119092,34.2338027070559)); +#1382=CARTESIAN_POINT('',(1.47748867112635,-0.9,34.2338027070559)); +#1383=CARTESIAN_POINT('',(2.21325881059668,5.19595897505565E-30,33.5793451647081)); +#1384=CARTESIAN_POINT('',(2.1790601474123,-3.81344964681814E-16,33.6231216596085)); +#1385=CARTESIAN_POINT('',(2.14447365532162,-0.00412974131530784,33.6664623738408)); +#1386=CARTESIAN_POINT('',(2.05417984144133,-0.0255249164455045,33.7772010938694)); +#1387=CARTESIAN_POINT('',(1.99830053609641,-0.0489980796415297,33.8433571026177)); +#1388=CARTESIAN_POINT('',(1.85359567372914,-0.140344304482793,34.0092252025801)); +#1389=CARTESIAN_POINT('',(1.76345617607515,-0.226083062238631,34.10675479345)); +#1390=CARTESIAN_POINT('',(1.60791504270327,-0.492668050206197,34.2705115854764)); +#1391=CARTESIAN_POINT('',(1.5456265981995,-0.691095040899762,34.3339453213509)); +#1392=CARTESIAN_POINT('',(1.5456265981995,-0.9,34.3339453213509)); +#1393=CARTESIAN_POINT('',(2.21325881059668,9.77956540442785E-30,33.5793451647081)); +#1394=CARTESIAN_POINT('',(2.18919600998298,-2.33105309114381E-16,33.6294142339623)); +#1395=CARTESIAN_POINT('',(2.16481244090367,-0.00412974131530783,33.6792559792238)); +#1396=CARTESIAN_POINT('',(2.10097424322134,-0.0255249164455046,33.807317556378)); +#1397=CARTESIAN_POINT('',(2.06129177760907,-0.0489980796415301,33.8845432354816)); +#1398=CARTESIAN_POINT('',(1.9578134538841,-0.140344304482794,34.0797790174426)); +#1399=CARTESIAN_POINT('',(1.89254365430417,-0.226083062238632,34.1963326688639)); +#1400=CARTESIAN_POINT('',(1.77788122522657,-0.492668050206198,34.3926844597619)); +#1401=CARTESIAN_POINT('',(1.73062228588976,-0.691095040899762,34.4688100952901)); +#1402=CARTESIAN_POINT('',(1.73062228588976,-0.9,34.4688100952901)); +#1403=CARTESIAN_POINT('',(2.21325881059668,1.28878386800252E-29,33.5793451647081)); +#1404=CARTESIAN_POINT('',(2.19426394126832,-1.65586901111986E-16,33.6325605211393)); +#1405=CARTESIAN_POINT('',(2.17498103667686,-0.00445518767122961,33.6856529764013)); +#1406=CARTESIAN_POINT('',(2.12457723652117,-0.0275320387680147,33.822054521273)); +#1407=CARTESIAN_POINT('',(2.09332420229675,-0.0528870706545181,33.9042994012529)); +#1408=CARTESIAN_POINT('',(2.01280789274536,-0.150376048845147,34.1107453060248)); +#1409=CARTESIAN_POINT('',(1.96320145345291,-0.241569732012446,34.2321406348082)); +#1410=CARTESIAN_POINT('',(1.87936018116851,-0.510336848627492,34.4303446618841)); +#1411=CARTESIAN_POINT('',(1.84680925676273,-0.701622062119091,34.5030432386316)); +#1412=CARTESIAN_POINT('',(1.84680925676273,-0.9,34.5030432386316)); +#1413=CARTESIAN_POINT('',(2.21325881059668,1.49755243794835E-29,33.5793451647081)); +#1414=CARTESIAN_POINT('',(2.19933187255366,-1.04669912890914E-16,33.6357068083162)); +#1415=CARTESIAN_POINT('',(2.18514954452027,-0.00510800330732625,33.6920504448417)); +#1416=CARTESIAN_POINT('',(2.14815031520424,-0.0315283354012803,33.836322865046)); +#1417=CARTESIAN_POINT('',(2.12527743384537,-0.0606111604175928,33.9228203631422)); +#1418=CARTESIAN_POINT('',(2.06743557230453,-0.169877428064484,34.1355422525892)); +#1419=CARTESIAN_POINT('',(2.03312796362616,-0.270955565968963,34.2552361764864)); +#1420=CARTESIAN_POINT('',(1.97930553388625,-0.542470747612004,34.4376933754149)); +#1421=CARTESIAN_POINT('',(1.96109241368971,-0.720357278008851,34.4965364751337)); +#1422=CARTESIAN_POINT('',(1.96109241368971,-0.9,34.4965364751337)); +#1423=CARTESIAN_POINT('',(1.93267071563657,-0.9,33.9973449216396)); +#1424=CARTESIAN_POINT('',(1.44871965824167,-0.9,34.1230086556539)); +#1425=CARTESIAN_POINT('',(1.96109241368971,-0.9,34.4965364751337)); +#1426=CARTESIAN_POINT('',(2.21325881059668,1.49755243794835E-29,33.5793451647081)); +#1427=CARTESIAN_POINT('',(2.19933187255366,-1.04669912890914E-16,33.6357068083162)); +#1428=CARTESIAN_POINT('',(2.18514954452027,-0.00510800330732625,33.6920504448417)); +#1429=CARTESIAN_POINT('',(2.14815031520424,-0.0315283354012803,33.836322865046)); +#1430=CARTESIAN_POINT('',(2.12527743384537,-0.0606111604175928,33.9228203631422)); +#1431=CARTESIAN_POINT('',(2.06743557230453,-0.169877428064484,34.1355422525892)); +#1432=CARTESIAN_POINT('',(2.03312796362616,-0.270955565968963,34.2552361764864)); +#1433=CARTESIAN_POINT('',(1.97930553388625,-0.542470747612004,34.4376933754149)); +#1434=CARTESIAN_POINT('',(1.96109241368971,-0.720357278008851,34.4965364751337)); +#1435=CARTESIAN_POINT('',(1.96109241368971,-0.9,34.4965364751337)); +#1436=CARTESIAN_POINT('',(2.21325881059668,0.,33.5793451647081)); +#1437=CARTESIAN_POINT('',(2.16892428484163,-5.49388879593214E-16,33.6168290852546)); +#1438=CARTESIAN_POINT('',(2.12413225700886,-0.00510800330732623,33.6536680060171)); +#1439=CARTESIAN_POINT('',(2.00823588742089,-0.0315283354012797,33.7462740245286)); +#1440=CARTESIAN_POINT('',(1.93753912109928,-0.0606111604175919,33.8000544600142)); +#1441=CARTESIAN_POINT('',(1.76104834806544,-0.169877428064481,33.9280992514111)); +#1442=CARTESIAN_POINT('',(1.65886860329484,-0.270955565968959,33.9954404076521)); +#1443=CARTESIAN_POINT('',(1.50089949771285,-0.542470747612002,34.0937428223939)); +#1444=CARTESIAN_POINT('',(1.44871965824167,-0.720357278008852,34.1230086556539)); +#1445=CARTESIAN_POINT('',(1.44871965824167,-0.9,34.1230086556539)); +#1446=CARTESIAN_POINT('',(-4.75197700783427E-6,-0.9,0.0523192840460539)); +#1447=CARTESIAN_POINT('',(-4.75197700783427E-6,-0.9,0.0523192840460539)); +#1448=CARTESIAN_POINT('',(-2.21935856224457,0.,33.5789425656241)); +#1449=CARTESIAN_POINT('',(-2.20544272873216,-2.79535854086328E-17,33.6353032306127)); +#1450=CARTESIAN_POINT('',(-2.19125867337857,-0.00511338600198783,33.6916967762009)); +#1451=CARTESIAN_POINT('',(-2.15428632200014,-0.0315398633775138,33.8359719370573)); +#1452=CARTESIAN_POINT('',(-2.13142731896475,-0.0606289561066954,33.9224797468913)); +#1453=CARTESIAN_POINT('',(-2.07362321547497,-0.169910892781326,34.1352131027243)); +#1454=CARTESIAN_POINT('',(-2.03934257162225,-0.270986028824012,34.2548935584357)); +#1455=CARTESIAN_POINT('',(-1.98555886328666,-0.542492434518452,34.4373408221093)); +#1456=CARTESIAN_POINT('',(-1.96735878003409,-0.72036848896317,34.4961796676948)); +#1457=CARTESIAN_POINT('',(-1.96735878003409,-0.9,34.4961796676948)); +#1458=CARTESIAN_POINT('',(-2.21935856224457,0.,33.5789425656241)); +#1459=CARTESIAN_POINT('',(-2.20037454141246,-8.64724952652724E-17,33.6321580598295)); +#1460=CARTESIAN_POINT('',(-2.1810849998991,-0.00445987998797238,33.685298674415)); +#1461=CARTESIAN_POINT('',(-2.13070683954665,-0.0275421226137993,33.8217058473224)); +#1462=CARTESIAN_POINT('',(-2.09946613699956,-0.0529026858198612,33.903962596631)); +#1463=CARTESIAN_POINT('',(-2.01898551781993,-0.15040632661149,34.1104257142677)); +#1464=CARTESIAN_POINT('',(-1.96940787716892,-0.241598653050438,34.2318121140713)); +#1465=CARTESIAN_POINT('',(-1.8856104217835,-0.510359588323558,34.4300119067517)); +#1466=CARTESIAN_POINT('',(-1.85307680696566,-0.701634442281088,34.5027071909615)); +#1467=CARTESIAN_POINT('',(-1.85307680696566,-0.9,34.5027071909615)); +#1468=CARTESIAN_POINT('',(-2.21935856224457,0.,33.5789425656241)); +#1469=CARTESIAN_POINT('',(-2.19530635409275,-1.44991405121912E-16,33.6290128890464)); +#1470=CARTESIAN_POINT('',(-2.17091123530822,-0.00413408836580869,33.6789009946531)); +#1471=CARTESIAN_POINT('',(-2.10709733977333,-0.0255342707739542,33.8069708630831)); +#1472=CARTESIAN_POINT('',(-2.06742549981864,-0.049012582115767,33.8842096504307)); +#1473=CARTESIAN_POINT('',(-1.96397983698629,-0.14037288060466,34.0794672238179)); +#1474=CARTESIAN_POINT('',(-1.89873948078604,-0.226111068792058,34.19601629629)); +#1475=CARTESIAN_POINT('',(-1.78412282033102,-0.492691306326542,34.3923704872602)); +#1476=CARTESIAN_POINT('',(-1.73688361945712,-0.691108078021043,34.4684951538946)); +#1477=CARTESIAN_POINT('',(-1.73688361945712,-0.9,34.4684951538946)); +#1478=CARTESIAN_POINT('',(-2.21935856224457,0.,33.5789425656241)); +#1479=CARTESIAN_POINT('',(-2.18516997945335,-2.62029224835191E-16,33.6227225474802)); +#1480=CARTESIAN_POINT('',(-2.15056215417402,-0.00413408836580873,33.666105956867)); +#1481=CARTESIAN_POINT('',(-2.06029005602156,-0.0255342707739539,33.7768579049481)); +#1482=CARTESIAN_POINT('',(-2.00441807172834,-0.0490125821157682,33.8430289354158)); +#1483=CARTESIAN_POINT('',(-1.85973980098435,-0.140372880604661,34.0089253402218)); +#1484=CARTESIAN_POINT('',(-1.76962983745894,-0.226111068792058,34.1064572637826)); +#1485=CARTESIAN_POINT('',(-1.61413253113572,-0.492691306326542,34.2702268683986)); +#1486=CARTESIAN_POINT('',(-1.55186343623083,-0.691108078021043,34.3336639871987)); +#1487=CARTESIAN_POINT('',(-1.55186343623083,-0.9,34.3336639871987)); +#1488=CARTESIAN_POINT('',(-2.21935856224457,0.,33.5789425656241)); +#1489=CARTESIAN_POINT('',(-2.18010179213365,-3.20548134691831E-16,33.6195773766971)); +#1490=CARTESIAN_POINT('',(-2.14038678976761,-0.00445987998797252,33.6597085679317)); +#1491=CARTESIAN_POINT('',(-2.03709253248072,-0.0275421226137987,33.7614800976941)); +#1492=CARTESIAN_POINT('',(-1.97345109998158,-0.0529026858198636,33.8216009660206)); +#1493=CARTESIAN_POINT('',(-1.81052793931775,-0.150406326611493,33.9693570415147)); +#1494=CARTESIAN_POINT('',(-1.71125669505357,-0.241598653050436,34.0527395641677)); +#1495=CARTESIAN_POINT('',(-1.54601024762895,-0.510359588323557,34.1859966072794)); +#1496=CARTESIAN_POINT('',(-1.48370731907744,-0.701634442281088,34.2335337520135)); +#1497=CARTESIAN_POINT('',(-1.48370731907744,-0.9,34.2335337520135)); +#1498=CARTESIAN_POINT('',(-2.21935856224457,0.,33.5789425656241)); +#1499=CARTESIAN_POINT('',(-2.17503360481395,-3.7906704454847E-16,33.616432205914)); +#1500=CARTESIAN_POINT('',(-2.13021054776046,-0.00511338600198801,33.653310070686)); +#1501=CARTESIAN_POINT('',(-2.01433358288597,-0.0315398633775129,33.7459337062515)); +#1502=CARTESIAN_POINT('',(-1.94364120185291,-0.0606289561066989,33.7997302752312)); +#1503=CARTESIAN_POINT('',(-1.76717186377069,-0.16991089278133,33.9278060548595)); +#1504=CARTESIAN_POINT('',(-1.66502051167865,-0.27098602882401,33.9951535290136)); +#1505=CARTESIAN_POINT('',(-1.50708598248844,-0.54249243451845,34.0934733573096)); +#1506=CARTESIAN_POINT('',(-1.45491818059766,-0.720368488963169,34.1227449284166)); +#1507=CARTESIAN_POINT('',(-1.45491818059766,-0.9,34.1227449284166)); +#1508=CARTESIAN_POINT('',(-1.93884640281586,-0.9,33.9969932853231)); +#1509=CARTESIAN_POINT('',(-1.96735878003409,-0.9,34.4961796676948)); +#1510=CARTESIAN_POINT('',(-1.45491818059766,-0.9,34.1227449284166)); +#1511=CARTESIAN_POINT('',(-2.21935856224457,0.,33.5789425656241)); +#1512=CARTESIAN_POINT('',(-2.17503360481395,-3.7906704454847E-16,33.616432205914)); +#1513=CARTESIAN_POINT('',(-2.13021054776046,-0.00511338600198801,33.653310070686)); +#1514=CARTESIAN_POINT('',(-2.01433358288597,-0.0315398633775129,33.7459337062515)); +#1515=CARTESIAN_POINT('',(-1.94364120185291,-0.0606289561066989,33.7997302752312)); +#1516=CARTESIAN_POINT('',(-1.76717186377069,-0.16991089278133,33.9278060548595)); +#1517=CARTESIAN_POINT('',(-1.66502051167865,-0.27098602882401,33.9951535290136)); +#1518=CARTESIAN_POINT('',(-1.50708598248844,-0.54249243451845,34.0934733573096)); +#1519=CARTESIAN_POINT('',(-1.45491818059766,-0.720368488963169,34.1227449284166)); +#1520=CARTESIAN_POINT('',(-1.45491818059766,-0.9,34.1227449284166)); +#1521=CARTESIAN_POINT('',(-2.21935856224457,0.,33.5789425656241)); +#1522=CARTESIAN_POINT('',(-2.20544272873216,-2.79535854086328E-17,33.6353032306127)); +#1523=CARTESIAN_POINT('',(-2.19125867337857,-0.00511338600198783,33.6916967762009)); +#1524=CARTESIAN_POINT('',(-2.15428632200014,-0.0315398633775138,33.8359719370573)); +#1525=CARTESIAN_POINT('',(-2.13142731896475,-0.0606289561066954,33.9224797468913)); +#1526=CARTESIAN_POINT('',(-2.07362321547497,-0.169910892781326,34.1352131027243)); +#1527=CARTESIAN_POINT('',(-2.03934257162225,-0.270986028824012,34.2548935584357)); +#1528=CARTESIAN_POINT('',(-1.98555886328666,-0.542492434518452,34.4373408221093)); +#1529=CARTESIAN_POINT('',(-1.96735878003409,-0.72036848896317,34.4961796676948)); +#1530=CARTESIAN_POINT('',(-1.96735878003409,-0.9,34.4961796676948)); +#1531=CARTESIAN_POINT('',(-0.00313351394289877,-0.9,34.499999857697)); +#1532=CARTESIAN_POINT('',(-0.00313351394289877,-0.9,34.499999857697)); +#1533=CARTESIAN_POINT('',(-4.75197700783427E-6,-0.9,0.0523192840460539)); +#1534=CARTESIAN_POINT('',(-4.75197700783427E-6,-0.9,0.0523192840460539)); +#1535=CARTESIAN_POINT('',(-4.75197700783427E-6,0.,0.0523192840460539)); +#1536=CARTESIAN_POINT('',(1.9610924136896,0.,34.4965364751337)); +#1537=CARTESIAN_POINT('',(1.9610924136896,-35.,34.4965364751337)); +#1538=CARTESIAN_POINT('',(-4.75197700783427E-6,-35.,0.0523192840460539)); +#1539=CARTESIAN_POINT('',(1.93267071563645,0.,33.9973449216396)); +#1540=CARTESIAN_POINT('',(1.44871965824156,0.,34.123008655654)); +#1541=CARTESIAN_POINT('',(1.44871965824156,-35.,34.123008655654)); +#1542=CARTESIAN_POINT('',(1.93267071563645,-35.,33.9973449216396)); +#1543=CARTESIAN_POINT('',(-0.00313351394289877,0.,34.499999857697)); +#1544=CARTESIAN_POINT('',(-1.4549181805976,0.,34.1227449284165)); +#1545=CARTESIAN_POINT('',(-1.4549181805976,-35.,34.1227449284165)); +#1546=CARTESIAN_POINT('',(-0.00313351394289877,-35.,34.499999857697)); +#1547=CARTESIAN_POINT('',(-1.93884640281582,0.,33.9969932853231)); +#1548=CARTESIAN_POINT('',(-1.96735878003405,0.,34.4961796676948)); +#1549=CARTESIAN_POINT('',(-1.96735878003405,-35.,34.4961796676948)); +#1550=CARTESIAN_POINT('',(-1.93884640281582,-35.,33.9969932853231)); +#1551=CARTESIAN_POINT('',(-4.75197700783427E-6,0.,0.0523192840460539)); +#1552=CARTESIAN_POINT('',(-4.75197700783427E-6,-35.,0.0523192840460539)); +#1553=CARTESIAN_POINT('',(-19.5,0.,-8.88178419700125E-16)); +#1554=CARTESIAN_POINT('',(-19.5,0.,5.5)); +#1555=CARTESIAN_POINT('',(-19.5,-34.6,5.5)); +#1556=CARTESIAN_POINT('',(-19.5,-34.6,5.5)); +#1557=CARTESIAN_POINT('',(-12.5,0.,12.5)); +#1558=CARTESIAN_POINT('',(-5.5,0.,19.5)); +#1559=CARTESIAN_POINT('',(-5.5,-34.6,19.5)); +#1560=CARTESIAN_POINT('',(-5.5,-34.6,19.5)); +#1561=CARTESIAN_POINT('',(-8.88178419700125E-16,0.,19.5)); +#1562=CARTESIAN_POINT('',(5.5,0.,19.5)); +#1563=CARTESIAN_POINT('',(5.5,-34.6,19.5)); +#1564=CARTESIAN_POINT('',(5.5,-34.6,19.5)); +#1565=CARTESIAN_POINT('',(12.5,0.,12.5)); +#1566=CARTESIAN_POINT('',(19.5,-34.6,5.5)); +#1567=CARTESIAN_POINT('',(4.44089209850063E-16,-34.6,4.44089209850063E-16)); +#1568=CARTESIAN_POINT('',(-7.03243891098191E-6,-35.,0.0774271780815986)); +#1569=CYLINDRICAL_SURFACE('',#674,2.786); +#1570=CYLINDRICAL_SURFACE('',#677,2.786); +#1571=CYLINDRICAL_SURFACE('',#679,2.786); +#1572=CYLINDRICAL_SURFACE('',#681,2.786); +#1573=CYLINDRICAL_SURFACE('',#683,2.786); +#1574=CYLINDRICAL_SURFACE('',#685,2.786); +#1575=CYLINDRICAL_SURFACE('',#687,2.786); +#1576=CYLINDRICAL_SURFACE('',#689,2.786); +#1577=CYLINDRICAL_SURFACE('',#709,1.00000000000002); +#1578=CYLINDRICAL_SURFACE('',#711,0.999999999999926); +#1579=CYLINDRICAL_SURFACE('',#713,1.49999999999994); +#1580=CYLINDRICAL_SURFACE('',#715,0.999999999999974); +#1581=CYLINDRICAL_SURFACE('',#717,1.00000000000003); +#1582=CYLINDRICAL_SURFACE('',#727,34.5); +#1583=CYLINDRICAL_SURFACE('',#729,0.500000000000077); +#1584=CYLINDRICAL_SURFACE('',#731,1.50000000000009); +#1585=CYLINDRICAL_SURFACE('',#733,0.499999999999977); +#1586=CYLINDRICAL_SURFACE('',#735,34.5); +#1587=CLOSED_SHELL('',(#637,#638,#639,#640,#641,#642,#643,#644,#645,#646, +#647,#648,#649,#650,#651,#652,#653,#654,#655,#656,#657,#658,#659,#660,#661, +#662,#663,#664,#665,#666,#667,#668,#669,#670,#671,#672,#673)); +#1588=MANIFOLD_SOLID_BREP('',#1587); +#1589=ADVANCED_BREP_SHAPE_REPRESENTATION('',(#1588),#103); +ENDSEC; +END-ISO-10303-21; diff --git a/include/BLE_Custom_Characteristic.h b/include/BLE_Custom_Characteristic.h index 441fe4ad..4c1eff5e 100644 --- a/include/BLE_Custom_Characteristic.h +++ b/include/BLE_Custom_Characteristic.h @@ -63,6 +63,7 @@ const uint8_t BLE_hMax = 0x2B; // Maximum homing value const uint8_t BLE_homingSensitivity = 0x2C; // Homing sensitivity value const uint8_t BLE_pTab4Pwr = 0x2D; // Use power values for power table const uint8_t BLE_UDPLogging = 0x2E; // Enable or disable UDP logging +const uint8_t BLE_BLELogging = 0x30; // Enable or disable BLE logging class BLE_ss2kCustomCharacteristic { public: diff --git a/include/BleAppender.h b/include/BleAppender.h new file mode 100644 index 00000000..e30e3a17 --- /dev/null +++ b/include/BleAppender.h @@ -0,0 +1,24 @@ +/* + * Copyright (C) 2020 Anthony Doud & Joel Baranick + * All rights reserved + * + * SPDX-License-Identifier: GPL-2.0-only + */ + +#pragma once + +#include "LogAppender.h" +#include +#include + +class BleAppender : public ILogAppender { + public: + void Log(const char *message); + void Initialize(); + std::string getLastMessage(); + + private: + static const size_t MAX_MESSAGE_SIZE = 500; // MTU-safe size + std::queue messageQueue; + void appendMessage(const char *message); +}; diff --git a/include/SmartSpin_parameters.h b/include/SmartSpin_parameters.h index 1fd58f1e..85e6099c 100644 --- a/include/SmartSpin_parameters.h +++ b/include/SmartSpin_parameters.h @@ -76,6 +76,7 @@ class RuntimeParameters { int minResistance = -DEFAULT_RESISTANCE_RANGE; int maxResistance = DEFAULT_RESISTANCE_RANGE; bool simTargetWatts = false; + bool bleLogEnabled = false; public: Measurement watts; @@ -114,6 +115,9 @@ class RuntimeParameters { void setMaxResistance(int max) { maxResistance = max; } int getMaxResistance() { return maxResistance; } + void setBleLogEnabled(bool enabled) { bleLogEnabled = enabled; } + bool getBleLogEnabled() { return bleLogEnabled; } + String returnJSON(); }; diff --git a/src/BLE_Custom_Characteristic.cpp b/src/BLE_Custom_Characteristic.cpp index ecef6582..3b924a4c 100644 --- a/src/BLE_Custom_Characteristic.cpp +++ b/src/BLE_Custom_Characteristic.cpp @@ -87,6 +87,9 @@ This characteristic allows for reading and writing various user configuration pa #include #include #include +#include "BleAppender.h" + +extern BleAppender bleAppender; void BLE_ss2kCustomCharacteristic::setupService(NimBLEServer *pServer) { pSmartSpin2kService = spinBLEServer.pServer->createService(SMARTSPIN2K_SERVICE_UUID); @@ -602,7 +605,7 @@ void BLE_ss2kCustomCharacteristic::process(std::string rxValue) { } if (rxValue[0] == cc_write) { returnValue[0] = cc_success; - userConfig->setERGSensitivity((bytes_to_u16(rxValue[3], rxValue[2])) / 10); + userConfig->setERGSensitivity((bytes_to_u16(rxValue[3], rxValue[2])) / 10.0); LOG_BUF_APPEND("(%f)", userConfig->getERGSensitivity()); } } break; @@ -828,6 +831,19 @@ void BLE_ss2kCustomCharacteristic::process(std::string rxValue) { } break; + case BLE_BLELogging: // 0x30 + LOG_BUF_APPEND("<-BLELogging"); + if (rxValue[0] == cc_read) { + returnValue[0] = cc_success; + returnString = bleAppender.getLastMessage(); + } + if (rxValue[0] == cc_write) { + returnValue[0] = cc_success; + rtConfig->setBleLogEnabled(rxValue[2]); + LOG_BUF_APPEND("(%s)", rtConfig->getBleLogEnabled() ? "true" : "false"); + } + break; + default: LOG_BUF_APPEND("<-Unknown Characteristic"); returnValue[0] = cc_error; diff --git a/src/BLE_Server.cpp b/src/BLE_Server.cpp index cee59e9e..7dba08c7 100644 --- a/src/BLE_Server.cpp +++ b/src/BLE_Server.cpp @@ -157,7 +157,7 @@ void MyServerCallbacks::onDisconnect(NimBLEServer* pServer) { } void MyServerCallbacks::onMTUChange(uint16_t MTU, NimBLEConnInfo& connInfo) { - SS2K_LOG(BLE_SERVER_LOG_TAG, "MTU updated: %u for connection ID: %u", MTU, connInfo.getConnHandle()); + //SS2K_LOG(BLE_SERVER_LOG_TAG, "MTU updated: %u for connection ID: %u", MTU, connInfo.getConnHandle()); } bool MyServerCallbacks::onConnParamsUpdateRequest(uint16_t handle, const ble_gap_upd_params* params) { diff --git a/src/BleAppender.cpp b/src/BleAppender.cpp new file mode 100644 index 00000000..548fe16f --- /dev/null +++ b/src/BleAppender.cpp @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2020 Anthony Doud & Joel Baranick + * All rights reserved + * + * SPDX-License-Identifier: GPL-2.0-only + */ + +#include "BleAppender.h" +#include "Main.h" +#include "BLE_Custom_Characteristic.h" + +void BleAppender::Initialize() {} + +void BleAppender::Log(const char *message) { + if (!rtConfig->getBleLogEnabled()) { + return; + } + + // Cache the message + appendMessage(message); + + // Use the existing custom characteristic notification mechanism + // only notify if there are messages to send + if (!messageQueue.empty()) { + BLE_ss2kCustomCharacteristic::notify(BLE_BLELogging); + } +} + +std::string BleAppender::getLastMessage() { + if (!messageQueue.empty()) { + std::string msg = messageQueue.front(); + messageQueue.pop(); + return msg; + } + return ""; +} + +void BleAppender::appendMessage(const char *message) { + if (message == nullptr) { + return; + } + + // Copy message and remove trailing newlines + std::string msg(message); + while (!msg.empty() && (msg.back() == '\n' || msg.back() == '\r')) { + msg.pop_back(); + } + + if (msg.empty()) { + return; + } + + // Truncate message if it's too long on its own + if (msg.length() > MAX_MESSAGE_SIZE) { + msg = msg.substr(0, MAX_MESSAGE_SIZE); + } + + messageQueue.push(msg); +} diff --git a/src/Main.cpp b/src/Main.cpp index 5dd92226..e55d4cac 100644 --- a/src/Main.cpp +++ b/src/Main.cpp @@ -17,6 +17,7 @@ #include "Power_Table.h" #include "UdpAppender.h" #include "WebsocketAppender.h" +#include "BleAppender.h" #include "BLE_Custom_Characteristic.h" #include "BLE_Definitions.h" #include @@ -52,6 +53,7 @@ RuntimeParameters* rtConfig = new RuntimeParameters; ///////////// Log Appender ///////////// UdpAppender udpAppender; WebSocketAppender webSocketAppender; +BleAppender bleAppender; ///////////// BEGIN SETUP ///////////// #ifndef UNIT_TEST @@ -141,6 +143,7 @@ extern "C" void app_main() { // Configure and Initialize Logger logHandler.addAppender(&webSocketAppender); logHandler.addAppender(&udpAppender); + logHandler.addAppender(&bleAppender); logHandler.initialize(); ss2k->startTasks(); httpServer.start(); diff --git a/src/SmartSpin_parameters.cpp b/src/SmartSpin_parameters.cpp index 25fe1c68..5d46a215 100644 --- a/src/SmartSpin_parameters.cpp +++ b/src/SmartSpin_parameters.cpp @@ -38,6 +38,7 @@ JsonDocument doc; doc["maxStep"] = this->maxStep; doc["minResistance"] = this->minResistance; doc["maxResistance"] = this->maxResistance; + doc["bleLogEnabled"] = this->bleLogEnabled; String output; serializeJson(doc, output);