diff --git a/README.md b/README.md
index e94a80e..cf0ff63 100644
--- a/README.md
+++ b/README.md
@@ -21,7 +21,18 @@ on the Wiki.
The current release has no known bugs, however testing has identified a number of limitations in the drafting procedures
which are recorded on the issue tracker where appropriate. Please add more issues to the tracker if you find any problems.
-# Release Notes #
+# Release Notes #
+**Version 1.6**
+Issue #7: Fixed armhole issue with new relational rule
+Issue #78: Reduced text size on plots
+Issue #82: Extended Bexier functions to take angle arguments
+Issue #83: Rationalised methods in the block base class
+Issue #89: Fixed missing measurements in sample input file
+Issue #91: Made it possible to see measurements required for patterns
+Issue #92: Added new trouser projection pattern
+Issue #93: Reworked UI to make it more modular
+Issue #97: Added popup to warn of a broken input file
+
**Version 1.5**
Issue #76: Add timestamp to pattern outputs.
Issue #74: Added Gill sweatshirt pattern.
diff --git a/build.properties b/build.properties
index f1a2551..41c25d6 100644
--- a/build.properties
+++ b/build.properties
@@ -1,3 +1,2 @@
-# Set your JDK path below
-jdk.home.1.8=C\:/Program Files/Java/jdk1.8.0_221
+jdk.home.14=C\:/Program Files/Java/jdk-14.0.1
javac2.instrumentation.includeJavaRuntime=false
\ No newline at end of file
diff --git a/build.xml b/build.xml
index cfb5a3d..c15ab2a 100644
--- a/build.xml
+++ b/build.xml
@@ -3,10 +3,8 @@
-
-
@@ -15,7 +13,6 @@
-
@@ -32,14 +29,14 @@
+
+
-
-
-
-
-
+
+
+
@@ -55,49 +52,111 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -108,7 +167,7 @@
-
+
@@ -128,19 +187,9 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
+
@@ -164,8 +213,7 @@
-
-
+
@@ -179,7 +227,7 @@
-
+
@@ -200,6 +248,7 @@
+
@@ -212,7 +261,7 @@
-
+
@@ -220,9 +269,13 @@
+
+
+
+
@@ -230,7 +283,10 @@
-
+
+
+
+
diff --git a/input/SampleInputFile.csv b/input/SampleInputFile.csv
new file mode 100644
index 0000000..1acb14c
--- /dev/null
+++ b/input/SampleInputFile.csv
@@ -0,0 +1,7 @@
+,[A01] Chest/Bust Circum Tape Measure,[A02] Opt Small of back Waist Tape Measure,[A03] Hip Circum Tape Measure,[A04] Half Back Centre Tape Measure,[A05] Neck Circumference,[A06] Scye Depth,[A07] Side Neck to Bust Length Right,[A08] Side Neck to Bust to Waist R,[A09] Across Back Tape Measurement,[A10] Across Chest Arm to Arm Length,[A11] Shoulder Length Right,[A12] Bust Width,[A13] Upper Hip SOB -10cm,[A14] Waist to Knee Length,[A15] Waist to Hip Length,[A16] Skirt Length,[A17] Thigh Circ R,[A18] Knee Circ R,[A19] Ankle Circ R,[A20] Waist to Crotch Length (Body Rise),[A21] Waist to Ankle (Outside Leg),[A22] Crotch to Ankle (Inside Leg),[A23] Sleeve Lenght R,[A24] Bicep Circ,[A25] Shoulder to Elbow,[A26] Fr Waist Arc,[A27] Bk Waist Arc,[A28] Fr Abdomen Arc,[A29] Bk Abdomen Arc,[A30] Bk Seat Arc,[A31] Fr Hip Arc,[A32] Bk Hip Arc,[A33] Waist to Abdomen,[A34] Waist to Seat,[A35] Depth of Sleevehead 1,[A36] Depth of Sleevehead 2,[A37] R Hip to Waist Vert Arc,[A38] Body Rise,[A39] Seat Depth,[A40] Hip Depth,[A41] Ankle C R Height,[A42] Knee C R Height,[A43] Crotch Height,[A44] Hip C Height,[A45] Seat C Height,[A46] Fr Seat Arc,[A47] Crotch Z,[A48] Hip Fr Z,[A49] Hip Bk Z,[A50] Seat Fr Z,[A51] Seat Bk Z,[A52] Waist Fr Z,[A53] Waist Bk Z,[A54] Fr Crotch Length,[A55] Bk Crotch Length,[A56] Fr Bust Arc,[A57] Bk Bust Arc,[A58] Mid Thigh Width,[A59] Waist Width,[A60] Hip Width,[A61] Abdomen Fr Z,[A62] Crotch Length Full,[A63] Mid Neck Base Width,[A64] Bk Shldr Width Horz,[A65] L Shldr Drop [Mid Nck],[A66] R Shldr Drop [Mid Nck],[A67] Arm Length L,[A68] Arm Length R,[A69] Wrist Circ L,[A70] Wrist Circ R,[A71] Fr Nk Arc,[A72] Bk Nk Arc,[A73] Fr Nk Diagonal Length,[A74] Bk Nk Diagonal Length,[A77] Seat C + 5,[A78] Seat C + 10,[A79] Seat C + 15,[A80] Seat C + 20,[A81] Seat C + 25,[A82] Seat Width,[A83] Waist Depth,[A84] Abdomen Depth,[A85] Seat Depth,[A86] Hip Depth,[A87] Mid Thigh Circ R,[A88] Mid Thigh Circ R Height,[A89] Min Lower Leg Circ R,[A90] Min Lower Leg Circ R Height,[A91] Crotch Circ - 1cm down,[A92] Thigh Circ R Height
+Person 1,89.99,72.25,98.61,39.37,36.77,22.2,25.75,39.06,33.31,30.47,14.61,22.4,87.68,64.92,24.18,71.72,56.47,34.24,23.5,30.99,102.45,71.46,52.95,29.9,33.26,36.67,35.53,42.14,45.68,53.32,45.24,53.32,10.42,20.46,17.24,13.6,0.79,30.99,23.94,22.48,5.63,43.16,77.1,83.9,87.63,44.22,-5.3,5,-17.48,5.9,-18.05,6.39,-12.32,37.71,38.09,51.36,38.57,18.36,25.95,35.94,7.1,75.8,12.17,44.09,5.67,4.9,54.73,52.95,18.14,17.73,17.82,18.95,9.1,1.78,94.37,88.38,79.05,72.25,74.22,35.24,18.71,22.33,23.94,22.48,44.92,57.59,21,8,58.62,72.38
+Person 2,98.99,79.48,108.47,43.31,40.45,24.42,28.33,42.97,36.64,33.52,16.07,24.64,96.45,71.41,26.6,78.89,62.12,37.66,25.85,34.09,112.7,78.61,58.25,32.89,36.59,40.34,39.08,46.35,50.25,58.65,49.76,58.65,11.46,22.51,18.96,14.96,0.87,34.09,26.33,24.73,6.19,47.48,84.81,92.29,96.39,48.64,-5.83,5.5,-19.23,6.49,-19.86,7.03,-13.55,41.48,41.9,56.5,42.43,20.2,28.55,39.53,7.81,83.38,13.39,48.5,6.24,5.39,60.2,58.25,19.95,19.5,19.6,20.85,10.01,1.96,103.81,97.22,86.96,79.48,81.64,38.76,20.58,24.56,26.33,24.73,49.41,63.35,23.09,8.79,64.48,79.61
+Person 3,85.41,67.51,94.29,39.5,35.65,21.23,26.11,40.75,32.12,29.78,13.4,21.4,83.27,63.9,26.63,70.7,54.26,32.61,23.39,29.92,101.47,71.56,53.09,28.25,33.05,33.83,33.61,39.71,43.14,49.51,46,48.24,10.06,20.91,17.02,13.19,0.68,29.93,22.04,20.05,5.58,43.16,77.15,80.43,86.16,43.6,-2.09,7.39,-12.66,7.62,-14.41,8.49,-8.57,35.87,37.43,47.34,38.01,17.86,24.73,34.94,9.09,73.29,12.16,42.82,5.47,5.27,54.24,53.09,16.55,15.93,18.7,16.96,7.91,2.6,90.38,84.64,76.09,67.66,69.11,34.12,17.07,20.53,22.04,20.05,43.18,57.61,20.18,7.68,56.8,70.13
+Person 4,95.37,77.29,103.79,38.71,38.23,21.78,27.07,40.21,35.04,32.49,14.63,23.8,92.34,65.22,24.22,72.02,58.17,34.58,23.81,31.03,103.03,72,53.83,30.41,33.83,39.79,37.44,44.69,49.48,56.49,47.25,56.49,11.58,19.74,17.79,14.04,0.74,31.05,25.28,23.71,5.63,43.44,77.65,84.44,88.93,45.9,-4.83,5.86,-17.85,6.73,-18.55,7.59,-12.46,38.12,39.23,55.32,39.98,18.83,27.75,37.57,8.05,77.35,13.09,45.93,5.66,5.01,54.97,53.83,18.39,16.27,18.83,19.4,9.03,2.17,98.69,91.92,81.89,77.28,79.34,36.77,20.05,23.97,25.28,23.71,45.71,57.99,21.36,8.13,60.48,74.67
+Person 5,123.43,106.11,130.57,40.88,42.09,25.92,32.19,44.63,46.58,39.89,12.32,29.1,125.63,62.22,15.92,69.02,70.89,44.72,28.99,33.17,102.21,69.04,61.79,37.29,35.52,58.46,47.59,65.56,64.09,66.02,63.87,66.66,14.47,19.31,19.21,16.37,0.96,33.19,35.36,36.49,5.85,45.85,74.91,92.14,88.78,64.07,-1.52,17.35,-19.15,15.92,-19.44,18.12,-11.68,43.58,45.35,70.07,53.31,22.87,35.56,45.17,17.78,88.93,14.4,42.9,2.97,4.67,63.92,61.79,18.8,18.5,21.84,20.26,8.33,4.16,130.14,124.35,111.62,105.98,109.32,45.81,29.8,35.89,35.36,36.49,57.34,57.83,26.8,10.2,76.04,93.88
+Person 6,86.37,73.94,96.63,37.95,35.22,18.64,24.98,40.27,34.3,30.29,14.16,19.8,81.92,63.4,24.5,70.2,51.62,32.54,22.91,30.82,99.44,68.62,54.9,26.77,34.05,38.98,34.9,41.54,40.03,50.14,46.43,50.14,10.12,19.66,16.23,12.34,0.5,30.82,22.84,22.41,5.47,41.51,74.1,80.41,85.25,44.04,-4.57,5.98,-16.43,5.85,-16.98,7.46,-11.72,36.91,37.07,48.87,37.44,18.27,27.05,34.86,7.22,73.98,11.64,43.55,5.6,4.79,55.44,54.9,18.09,17.06,18.67,16.54,8.7,2.45,87.65,81.59,76.62,73.84,74,33.96,19.18,20.96,22.84,22.41,42.78,55.26,19.99,7.61,55.04,67.95
diff --git a/input/current/Batch5.TXT b/input/current/Batch5.TXT
deleted file mode 100644
index 5de04a4..0000000
--- a/input/current/Batch5.TXT
+++ /dev/null
@@ -1,7 +0,0 @@
-Custom Measurements: Custom Pattern Measurements V5.txt
- [84] Abdomen Circ [Tape] [84h] Abdomen Circ Height [33] Abdomen Rise [88] X Bk Pit-to-Pit [Tape] [178] Across Chest Arm to Arm Length [172] Actual Ankle Circ L [173] Actual Ankle Circ R [174] Actual Knee Circ L [175] Actual Knee Circ R [176] Actual Mid Thigh Circ L [177] Actual Mid Thigh Circ R [91] Ankle Circ L [92] Ankle Circ R [14] Armhole Circ L [Vert] [15] Armhole Circ R [Vert] [16] Arm Length L [17] Arm Length R [18] Arm Under Length L [19] Arm Under Length R [133] Axilla Chest Circ [Tape] [97] CB Neck to CB Chest [Tape] [100] CB Neck to Shldr Blades [Tape] [2] Bk Shoulder Width Horz [162] Bk Vert Rise [89] Bicep Circ L [90] Bicep Circ R [74] Bust Circ with Drop [Tape] [11] Bust Width 1 [54] Calf Circ L [55] Calf Circ R [102] CFNck-Crotch-CBNck [72] Chest/Bust Circ [Tape] [128] Chin Height [0] Collar/Mid Neck Circ [36] Crotch Height [37] Crotch Length Full [122] Elbow Circ L [Tape] [123] Elbow Circ R [Tape] [122h] Elbow Circ L [Tape] Height [123h] Elbow Circ R [Tape] Height [81] Elbow Height Waist Circ [Tape] [115] Forearm Circ L [116] Forearm Circ R [38] Fr Vertical Rise [95] CB Length [CB Nk - Waist] [Tape] [149] High Hip Circ [Tape] [150] High Hip to SoB Waist Length [145] Hinged Upper Bust Circ [85] Hip Circ [Tape] [153] Hips 8 inches Down from SOB OPT Waist [154] Hips 2 inches Above the Crotch [40] Inseam Length L [41] Inseam Length R [48] Knee Circ L [49] Knee Circ R [151] Low Hip Circ [152] Low Hip to SoB Length [46] Mid Thigh Circ L [47] Mid Thigh Circ R [56] Min Low Leg Circ L [57] Min Low Leg Circ R [56h] Min Low Leg Circ L Height [57h] Min Low Leg Circ R [1] Neck Base Circ [105] Opt SoB Waist [Tape] [105h] Opt SoB Waist [Tape] CB Height [170] Armhole Circ Outer L [Pitch] [171] Armhole Circ Outer R [Pitch] [42] Outside Leg Length L [43] Outside Leg Length R [73] Over Arm Circ [Tape] [86] Seat Circ [Tape] [39] Seat Fold Height [168] Shoulder Circ [168h] Shoulder Circ Height [3] Shoulder Length L [4] Shoulder Length R [12] SideNeck to Bust L [Tape] [13] SideNeck to Bust R [Tape] [20] Sleeve Length L [21] Sleeve Length R [83] Stomach Girth [Tape] [99] Subject Height [44] Thigh Circ L [2in down] [45] Thigh Circ R [2in down] [44h] Thigh Circ L [2in down] Height [45h] Thigh Circ R [2in down] Height [75] Underbust Circ [Tape] [50] Under Knee Circ L [51] Under Knee Circ R [50h] Under Knee Circ L Height [51h] Under Knee Circ R Height [163] Upper Bust X Fr [76] Low Waist Circ Pitched [Tape] [76h] Low Waist Circ Pitched [Tape] Height [93] Wrist Circ L [94] Wrist Circ R [234] Up Arm Circ L [235] Up Arm Circ R [179] Fr Crotch Length [180] Bk Crotch Length [A01] Chest/Bust Circum Tape Measure [A02] Opt Small of back Waist Tape Measure [A03] Hip Circum Tape Measure [A04] Half Back Centre Tape Measure [A05] Neck Circumference [A06] Scye Depth (Vertical) [A07] Side Neck to Bust Length Right [A08] Side Neck to Bust to Waist R [A09] Across Back Tape Measurement [A10] Across Chest Arm to Arm Length [A11] Shoulder Length Right [A12] Bust Width [A13] Upper Hip SOB -10cm [A14] Waist to Knee Length [A15] Waist to Hip Length [A16] Skirt Length [A17] Thigh Circ R [A18] Knee Circ R [A19] Ankle Circ R [A20] Waist to Crotch Length (Body Rise) [A21] Waist to Ankle (Outside Leg) [A22] Crotch to Ankle (Inside Leg) [A23] Sleeve Lenght R [A24] Bicep Circ [A25] Shoulder to Elbow [A26] Fr Waist Arc [A27] Bk Waist Arc [A28] Fr Abdomen Arc [A29] Bk Abdomen Arc [A30] Bk Seat Arc [A31] Fr Hip Arc [A32] Bk Hip Arc [A33] Waist to Abdomen [A34] Waist to Seat [A35] Depth of Sleevehead 1 [A36] Depth of Sleevehead 2 [A37] R Sideseam Uplift [A38] Body Rise [A39] Seat Depth [A40] Hip Depth [A41] Ankle C R Height [A42] Knee C R Height [A43] Crotch Height [A44] Hip C Height [A45] Seat C Height [A46] Fr Seat Arc [A47] Crotch Z [A48] Hip Fr Z [A49] Hip Bk Z [A50] Seat Fr Z [A51] Seat Bk Z [A52] Waist Fr Z [A53] Waist Bk Z [A54] Fr Crotch Length [A55] Bk Crotch Length [A56] Fr Bust Arc [A57] Bk Bust Arc
-ALVA10 November 16 2017 01_46.obj 80.83 97.50 20.35 32.56 29.07 25.78 26.01 35.76 35.59 46.11 46.32 25.84 26.01 48.50 45.67 54.36 56.59 42.15 43.38 84.49 24.43 18.43 44.49 30.37 27.34 26.24 80.82 15.67 34.90 35.39 142.05 83.04 146.15 32.25 77.15 74.59 24.84 23.25 103.11 101.66 72.09 23.85 22.17 30.37 38.16 85.67 13.28 82.32 93.78 91.71 93.64 77.44 77.23 33.40 33.50 93.78 26.50 44.63 45.10 25.42 25.69 8.22 8.22 37.26 66.59 107.53 47.64 40.91 108.37 108.13 105.20 92.53 78.36 98.26 132.97 14.80 13.70 25.60 26.13 75.60 77.04 75.02 167.02 54.42 54.81 72.07 72.07 71.31 32.56 32.78 40.64 40.64 39.51 77.97 107.53 17.22 15.12 29.40 29.70 36.92 37.68 83.04 66.59 93.78 38.16 37.26 21.68 26.13 38.21 32.56 29.07 13.70 24.30 81.16 64.37 26.56 71.17 54.81 33.50 26.01 30.37 101.96 71.59 56.59 26.24 35.99 37.94 39.98 39.19 41.51 49.47 43.59 50.15 10.03 22.07 16.20 13.33 0.60 30.38 21.44 20.33 5.56 43.15 77.15 80.96 80.96 43.01 0.82 10.38 9.95 10.85 10.59 12.18 4.77 36.92 37.68 46.17 36.79
-ALVA12 November 16 2017 01_34.obj 86.64 97.45 20.19 32.01 30.90 25.45 25.73 35.99 35.99 46.99 47.34 25.24 25.73 47.39 45.88 54.68 56.60 40.82 42.13 89.02 24.43 18.78 44.41 30.91 27.97 27.33 86.03 15.77 35.92 36.83 145.05 88.52 147.07 33.33 77.26 76.09 25.78 24.20 103.86 101.55 77.03 24.85 23.43 30.91 38.10 89.72 12.80 86.27 97.84 96.46 97.83 77.49 77.38 34.09 34.39 97.84 25.50 45.55 46.24 25.50 25.71 8.28 8.33 38.83 71.37 108.16 40.92 42.54 108.91 108.84 108.31 96.58 78.93 100.33 133.72 15.21 13.67 27.33 26.86 75.85 76.11 79.73 167.49 56.10 56.55 72.18 72.18 75.62 33.42 33.87 40.77 40.84 41.04 83.05 108.16 16.22 15.36 29.88 30.66 37.73 38.36 88.52 71.37 97.84 38.10 38.83 21.57 26.86 39.91 32.01 30.90 13.67 20.50 85.89 64.95 25.60 71.75 56.55 34.39 25.73 30.91 102.58 71.67 56.60 27.33 37.28 38.57 44.42 41.43 45.04 52.68 46.38 51.42 10.71 20.59 16.70 13.76 0.68 30.92 23.80 23.32 5.57 43.21 77.26 82.55 82.55 43.85 2.45 13.46 9.86 13.45 10.35 14.31 4.00 37.73 38.36 49.74 38.71
-ALVA-14 November 17 2017 02_38.obj 92.58 97.36 19.59 33.25 31.45 28.28 29.62 38.01 37.35 48.86 48.82 28.27 29.62 53.10 51.97 54.90 68.41 41.06 54.27 94.23 26.40 18.95 46.56 30.11 29.11 28.81 91.30 15.65 38.93 39.45 147.76 93.65 147.34 33.23 77.76 76.02 26.86 24.92 102.80 101.04 85.18 25.53 22.76 30.11 40.61 94.90 11.99 90.85 103.08 102.32 103.01 78.01 77.91 36.52 36.44 103.08 24.00 47.62 48.24 28.03 28.10 8.34 8.30 37.80 76.47 107.88 50.84 52.48 108.68 108.60 112.63 102.70 79.70 103.66 134.39 16.14 13.80 27.53 27.37 77.25 89.66 86.26 168.61 58.50 58.62 72.68 72.68 80.97 35.98 36.03 41.32 41.53 44.51 89.37 107.88 16.73 21.37 31.16 31.83 37.57 38.45 93.65 76.47 103.08 40.61 37.80 23.46 27.37 41.40 33.25 31.45 13.80 21.70 92.21 64.38 23.98 71.18 58.62 36.44 29.62 30.11 102.26 72.14 68.41 28.81 38.69 41.08 48.23 44.51 47.93 57.01 47.15 55.86 10.52 21.39 17.37 14.37 0.73 30.12 24.65 23.13 5.62 43.50 77.76 83.89 83.89 45.65 0.74 10.99 12.14 12.18 12.47 13.98 5.91 37.57 38.45 52.98 40.60
-Alva24 November 23 2017 04_15-Nk-Shldr.obj 128.57 91.88 16.22 42.92 39.93 33.26 32.98 48.58 50.08 61.26 62.16 33.22 32.98 52.65 55.44 60.99 59.32 42.95 41.94 121.83 23.28 18.22 51.49 31.69 38.81 36.10 118.25 18.58 45.82 45.43 149.00 121.16 146.39 38.91 75.66 87.44 32.49 31.03 105.91 103.41 107.66 32.10 30.50 31.69 35.65 123.90 9.87 115.53 129.15 129.09 126.84 76.07 75.84 46.03 45.90 129.14 19.50 59.46 59.85 30.76 30.44 12.51 12.33 51.36 105.06 107.35 51.40 56.28 108.42 108.09 138.06 128.97 79.44 124.69 130.81 14.20 11.86 33.05 33.08 81.81 81.29 123.03 179.26 71.12 72.72 70.58 70.58 106.38 44.56 43.84 42.10 42.02 52.44 124.77 107.35 18.69 19.09 40.32 37.55 43.07 44.37 121.16 105.06 129.15 35.65 51.36 23.14 33.08 44.44 42.92 39.93 11.86 26.20 124.13 61.00 19.73 67.80 72.72 45.90 32.98 31.69 101.38 69.69 59.32 36.10 35.48 60.61 64.11 63.09 65.36 66.66 63.09 66.02 15.47 20.93 18.57 18.12 0.74 31.70 34.17 34.37 5.96 46.34 75.66 87.61 87.61 62.28 6.66 24.21 10.15 23.55 10.62 26.79 3.13 43.07 44.37 69.06 52.01
-ALVA-M November 17 2017 02_12.obj 81.32 94.32 19.76 33.79 30.08 26.88 26.31 35.13 35.01 45.74 45.99 26.33 26.31 43.03 42.49 58.13 58.21 44.71 44.50 85.57 23.62 18.58 41.85 29.72 26.42 25.62 83.38 15.79 33.79 34.44 144.71 84.81 143.46 32.50 74.56 72.62 26.64 24.22 102.50 100.30 74.77 25.94 23.35 29.72 39.30 84.19 12.29 83.67 96.18 94.47 96.18 74.83 74.60 33.73 33.68 96.19 24.50 44.91 45.31 26.58 26.47 7.37 7.37 35.55 73.38 104.28 38.68 39.29 104.74 104.62 105.41 94.91 76.19 97.75 131.45 13.48 12.56 24.94 24.85 77.16 77.30 78.04 165.73 52.21 52.56 69.48 69.48 76.66 33.24 33.06 39.69 39.74 38.85 79.59 104.28 16.44 15.78 28.56 27.62 36.34 36.28 84.81 73.38 96.18 39.30 35.55 20.57 24.85 40.38 33.79 30.08 12.56 19.90 81.71 61.50 24.57 68.30 52.56 33.68 26.31 29.72 96.92 67.20 58.21 25.62 36.68 38.93 40.61 40.59 40.59 50.78 45.35 50.78 9.96 20.86 16.67 13.59 0.33 29.73 22.13 22.28 7.35 42.77 74.56 79.70 79.70 44.08 1.56 12.36 9.91 11.79 10.34 14.21 4.84 36.34 36.28 46.83 37.93
diff --git a/input/current/BatchSingle.TXT b/input/current/BatchSingle.TXT
deleted file mode 100644
index 234ec94..0000000
--- a/input/current/BatchSingle.TXT
+++ /dev/null
@@ -1,3 +0,0 @@
-Custom Measurements: Custom Pattern Measurements V5.txt
- [84] Abdomen Circ [Tape] [84h] Abdomen Circ Height [33] Abdomen Rise [88] X Bk Pit-to-Pit [Tape] [178] Across Chest Arm to Arm Length [172] Actual Ankle Circ L [173] Actual Ankle Circ R [174] Actual Knee Circ L [175] Actual Knee Circ R [176] Actual Mid Thigh Circ L [177] Actual Mid Thigh Circ R [91] Ankle Circ L [92] Ankle Circ R [14] Armhole Circ L [Vert] [15] Armhole Circ R [Vert] [16] Arm Length L [17] Arm Length R [18] Arm Under Length L [19] Arm Under Length R [133] Axilla Chest Circ [Tape] [97] CB Neck to CB Chest [Tape] [100] CB Neck to Shldr Blades [Tape] [2] Bk Shoulder Width Horz [162] Bk Vert Rise [89] Bicep Circ L [90] Bicep Circ R [74] Bust Circ with Drop [Tape] [11] Bust Width 1 [54] Calf Circ L [55] Calf Circ R [102] CFNck-Crotch-CBNck [72] Chest/Bust Circ [Tape] [128] Chin Height [0] Collar/Mid Neck Circ [36] Crotch Height [37] Crotch Length Full [122] Elbow Circ L [Tape] [123] Elbow Circ R [Tape] [122h] Elbow Circ L [Tape] Height [123h] Elbow Circ R [Tape] Height [81] Elbow Height Waist Circ [Tape] [115] Forearm Circ L [116] Forearm Circ R [38] Fr Vertical Rise [95] CB Length [CB Nk - Waist] [Tape] [149] High Hip Circ [Tape] [150] High Hip to SoB Waist Length [145] Hinged Upper Bust Circ [85] Hip Circ [Tape] [153] Hips 8 inches Down from SOB OPT Waist [154] Hips 2 inches Above the Crotch [40] Inseam Length L [41] Inseam Length R [48] Knee Circ L [49] Knee Circ R [151] Low Hip Circ [152] Low Hip to SoB Length [46] Mid Thigh Circ L [47] Mid Thigh Circ R [56] Min Low Leg Circ L [57] Min Low Leg Circ R [56h] Min Low Leg Circ L Height [57h] Min Low Leg Circ R [1] Neck Base Circ [105] Opt SoB Waist [Tape] [105h] Opt SoB Waist [Tape] CB Height [170] Armhole Circ Outer L [Pitch] [171] Armhole Circ Outer R [Pitch] [42] Outside Leg Length L [43] Outside Leg Length R [73] Over Arm Circ [Tape] [86] Seat Circ [Tape] [39] Seat Fold Height [168] Shoulder Circ [168h] Shoulder Circ Height [3] Shoulder Length L [4] Shoulder Length R [12] SideNeck to Bust L [Tape] [13] SideNeck to Bust R [Tape] [20] Sleeve Length L [21] Sleeve Length R [83] Stomach Girth [Tape] [99] Subject Height [44] Thigh Circ L [2in down] [45] Thigh Circ R [2in down] [44h] Thigh Circ L [2in down] Height [45h] Thigh Circ R [2in down] Height [75] Underbust Circ [Tape] [50] Under Knee Circ L [51] Under Knee Circ R [50h] Under Knee Circ L Height [51h] Under Knee Circ R Height [163] Upper Bust X Fr [76] Low Waist Circ Pitched [Tape] [76h] Low Waist Circ Pitched [Tape] Height [93] Wrist Circ L [94] Wrist Circ R [234] Up Arm Circ L [235] Up Arm Circ R [179] Fr Crotch Length [180] Bk Crotch Length [A01] Chest/Bust Circum Tape Measure [A02] Opt Small of back Waist Tape Measure [A03] Hip Circum Tape Measure [A04] Half Back Centre Tape Measure [A05] Neck Circumference [A06] Scye Depth (Vertical) [A07] Side Neck to Bust Length Right [A08] Side Neck to Bust to Waist R [A09] Across Back Tape Measurement [A10] Across Chest Arm to Arm Length [A11] Shoulder Length Right [A12] Bust Width [A13] Upper Hip SOB -10cm [A14] Waist to Knee Length [A15] Waist to Hip Length [A16] Skirt Length [A17] Thigh Circ R [A18] Knee Circ R [A19] Ankle Circ R [A20] Waist to Crotch Length (Body Rise) [A21] Waist to Ankle (Outside Leg) [A22] Crotch to Ankle (Inside Leg) [A23] Sleeve Lenght R [A24] Bicep Circ [A25] Shoulder to Elbow [A26] Fr Waist Arc [A27] Bk Waist Arc [A28] Fr Abdomen Arc [A29] Bk Abdomen Arc [A30] Bk Seat Arc [A31] Fr Hip Arc [A32] Bk Hip Arc [A33] Waist to Abdomen [A34] Waist to Seat [A35] Depth of Sleevehead 1 [A36] Depth of Sleevehead 2 [A37] R Sideseam Uplift [A38] Body Rise [A39] Seat Depth [A40] Hip Depth [A41] Ankle C R Height [A42] Knee C R Height [A43] Crotch Height [A44] Hip C Height [A45] Seat C Height [A46] Fr Seat Arc [A47] Crotch Z [A48] Hip Fr Z [A49] Hip Bk Z [A50] Seat Fr Z [A51] Seat Bk Z [A52] Waist Fr Z [A53] Waist Bk Z [A54] Fr Crotch Length [A55] Bk Crotch Length [A56] Fr Bust Arc [A57] Bk Bust Arc [A59] Waist Width [A60] Hip Width [A61] Abdomen Fr Z [A62] Crotch Length Full
-ALVA10 November 16 2017 01_46.obj 80.83 97.50 20.35 32.56 29.07 25.78 26.01 35.76 35.59 46.11 46.32 25.84 26.01 48.50 45.67 54.36 56.59 42.15 43.38 84.49 24.43 18.43 44.49 30.37 27.34 26.24 80.82 15.67 34.90 35.39 142.05 83.04 146.15 32.25 77.15 74.59 24.84 23.25 103.11 101.66 72.09 23.85 22.17 30.37 38.16 85.67 13.28 82.32 93.78 91.71 93.64 77.44 77.23 33.40 33.50 93.78 26.50 44.63 45.10 25.42 25.69 8.22 8.22 37.26 66.59 107.53 47.64 40.91 108.37 108.13 105.20 92.53 78.36 98.26 132.97 14.80 13.70 25.60 26.13 75.60 77.04 75.02 167.02 54.42 54.81 72.07 72.07 71.31 32.56 32.78 40.64 40.64 39.51 77.97 107.53 17.22 15.12 29.40 29.70 36.92 37.68 83.04 66.59 93.78 38.16 37.26 21.68 26.13 38.21 32.56 29.07 13.70 24.30 81.16 64.37 26.56 71.17 54.81 33.50 26.01 30.37 101.96 71.59 56.59 26.24 35.99 37.94 39.98 39.19 41.51 49.47 43.59 50.15 10.03 22.07 16.20 13.33 0.60 30.38 21.44 20.33 5.56 43.15 77.15 80.96 80.96 43.01 0.82 10.38 9.95 10.85 10.59 12.18 4.77 36.92 37.68 46.17 36.79 24.43 34.52 6.25 75.67
diff --git a/input/legacy/batched/Spreadsheet150.txt b/input/legacy/batched/Spreadsheet150.txt
deleted file mode 100644
index aa233b4..0000000
--- a/input/legacy/batched/Spreadsheet150.txt
+++ /dev/null
@@ -1,206 +0,0 @@
-Custom Measurements: Custom Pattern Measurements V3.txt
- [84] Abdomen Circ [Tape] [84h] Abdomen Circ Height [33] Abdomen Rise [88] X Bk Pit-to-Pit [Tape] [178] Across Chest Arm to Arm Length [172] Actual Ankle Circ L [173] Actual Ankle Circ R [174] Actual Knee Circ L [175] Actual Knee Circ R [176] Actual Mid Thigh Circ L [177] Actual Mid Thigh Circ R [91] Ankle Circ L [92] Ankle Circ R [14] Armhole Circ L [Vert] [15] Armhole Circ R [Vert] [16] Arm Length L [17] Arm Length R [18] Arm Under Length L [19] Arm Under Length R [133] Axilla Chest Circ [Tape] [97] CB Neck to CB Chest [Tape] [100] CB Neck to Shldr Blades [Tape] [2] Bk Shoulder Width Horz [162] Bk Vert Rise [89] Bicep Circ L [90] Bicep Circ R [74] Bust Circ with Drop [Tape] [11] Bust Width 1 [54] Calf Circ L [55] Calf Circ R [102] CFNck-Crotch-CBNck [72] Chest/Bust Circ [Tape] [128] Chin Height [0] Collar/Mid Neck Circ [36] Crotch Height [37] Crotch Length Full [122] Elbow Circ L [Tape] [123] Elbow Circ R [Tape] [122h] Elbow Circ L [Tape] Height [123h] Elbow Circ R [Tape] Height [81] Elbow Height Waist Circ [Tape] [115] Forearm Circ L [116] Forearm Circ R [38] Fr Vertical Rise [95] CB Length [CB Nk - Waist] [Tape] [149] High Hip Circ [Tape] [150] High Hip to SoB Waist Length [145] Hinged Upper Bust Circ [85] Hip Circ [Tape] [153] Hips 8 inches Down from SOB OPT Waist [154] Hips 2 inches Above the Crotch [40] Inseam Length L [41] Inseam Length R [48] Knee Circ L [49] Knee Circ R [151] Low Hip Circ [152] Low Hip to SoB Length [46] Mid Thigh Circ L [47] Mid Thigh Circ R [56] Min Low Leg Circ L [57] Min Low Leg Circ R [56h] Min Low Leg Circ L Height [57h] Min Low Leg Circ R [1] Neck Base Circ [105] Opt SoB Waist [Tape] [105h] Opt SoB Waist [Tape] CB Height [170] Armhole Circ Outer L [Pitch] [171] Armhole Circ Outer R [Pitch] [42] Outside Leg Length L [43] Outside Leg Length R [73] Over Arm Circ [Tape] [86] Seat Circ [Tape] [39] Seat Fold Height [168] Shoulder Circ [168h] Shoulder Circ Height [3] Shoulder Length L [4] Shoulder Length R [12] SideNeck to Bust L [Tape] [13] SideNeck to Bust R [Tape] [20] Sleeve Length L [21] Sleeve Length R [83] Stomach Girth [Tape] [99] Subject Height [44] Thigh Circ L [2in down] [45] Thigh Circ R [2in down] [44h] Thigh Circ L [2in down] Height [45h] Thigh Circ R [2in down] Height [75] Underbust Circ [Tape] [50] Under Knee Circ L [51] Under Knee Circ R [50h] Under Knee Circ L Height [51h] Under Knee Circ R Height [163] Upper Bust X Fr [76] Low Waist Circ Pitched [Tape] [76h] Low Waist Circ Pitched [Tape] Height [93] Wrist Circ L [94] Wrist Circ R [234] Up Arm Circ L [235] Up Arm Circ R [179] Fr Crotch Length [180] Bk Crotch Length [001] Chest/Bust Circum Tape Measure [002] Opt Small of back Waist Tape Measure [003] Hip Circum Tape Measure [004] Half Back Centre Tape Measure [005] Neck Circumference [006] Scye Depth (Vertical) [007] Side Neck to Bust Length Right [008] Side Neck to Bust to Waist R [009] Across Back Tape Measurement [010] Across Chest Arm to Arm Length [011] Shoulder Length Right [012] Bust Width [013] Upper Hip SOB -10cm [014] Waist to Knee Length [015] Waist to Hip Length [016] Skirt Length [017] Thigh Circ R [018] Knee Circ R [019] Ankle Circ R [020] Waist to Crotch Length (Body Rise) [021] Waist to Ankle (Outside Leg) [022] Crotch to Ankle (Inside Leg) [023] Sleeve Lenght R [024] Bicep Circ [025] Shoulder to Elbow [026] Fr Waist Arc [027] Bk Waist Arc [028] Fr Abdomen Arc [029] Bk Abdomen Arc [030] Bk Seat Arc [031] Fr Hip Arc [032] Bk Hip Arc [033] Waist to Abdomen [034] Waist to Seat [035] Depth of Sleevehead 1 [036] Depth of Sleevehead 2 [037] R Sideseam Uplift
-A100FA25 November 14 2014 01_56.obj 79.64 102.96 19.01 32.61 28.78 21.93 22.23 37.43 36.58 45.52 44.82 22.02 22.23 40.99 41.72 55.53 53.73 45.22 44.61 82.20 25.35 19.85 41.70 28.45 26.06 25.08 79.72 12.33 35.59 36.03 144.25 81.34 155.99 33.55 83.96 71.84 23.30 22.72 118.01 117.66 65.41 22.95 22.58 28.45 44.02 85.60 13.97 82.78 97.01 92.36 94.62 85.38 84.98 37.87 37.82 97.02 28.00 46.21 45.63 22.22 22.44 11.94 11.94 38.15 65.99 112.41 37.52 38.63 113.13 113.82 104.46 93.03 84.11 97.09 142.74 12.63 12.64 25.43 23.55 73.07 72.42 75.07 179.19 52.63 52.60 78.88 78.88 69.45 33.68 33.05 42.24 42.69 38.10 77.61 112.41 17.63 15.58 27.72 25.15 34.89 36.96 81.34 65.99 97.01 44.02 38.15 19.67 23.55 41.91 32.61 28.78 12.64 19.10 80.73 62.27 27.95 69.07 52.60 37.82 22.23 28.45 100.46 72.01 53.73 25.08 31.73 36.93 40.61 40.02 39.54 48.24 45.03 51.93 9.44 21.10 17.47 11.19 1.41
-A101FA23 November 14 2014 02_00.obj 93.03 98.09 14.83 27.54 30.19 24.34 26.51 37.94 37.49 44.43 44.76 24.34 24.73 40.80 44.13 59.93 58.63 46.58 47.53 92.14 21.41 18.42 40.03 29.50 26.83 26.17 85.94 13.85 35.49 35.61 146.41 89.52 155.24 36.29 83.26 72.15 23.16 22.36 116.81 114.01 65.37 21.96 21.87 29.50 40.10 93.42 14.50 88.06 101.72 98.10 100.50 84.59 83.93 37.61 37.03 101.76 29.50 44.30 44.38 22.99 23.84 13.03 12.72 40.68 66.83 112.76 38.67 41.55 113.86 113.94 109.10 98.48 83.41 99.96 142.98 12.21 12.06 26.38 26.55 77.35 76.19 81.52 181.42 55.28 55.89 78.18 78.18 72.45 34.90 34.56 42.84 43.00 39.27 84.99 112.76 16.30 16.44 28.07 28.73 35.67 36.48 89.52 66.83 101.72 40.10 40.68 16.11 26.55 45.83 27.54 30.19 12.06 19.60 87.11 63.99 29.00 70.79 55.89 37.03 24.73 29.50 102.68 73.18 58.63 26.17 36.17 43.04 41.88 43.39 49.49 50.78 47.48 54.17 14.67 20.89 17.64 12.18 1.18
-A103FS24 November 14 2014 02_10-BkNk-RShldr.obj 86.02 96.19 19.96 25.93 31.40 24.37 26.48 41.11 41.02 47.83 48.83 24.37 24.85 39.30 39.33 55.86 56.72 43.33 44.04 90.19 23.20 18.65 36.22 30.89 25.89 25.89 84.99 11.64 38.50 38.07 146.57 88.60 149.20 32.64 76.23 78.23 23.09 23.51 112.27 109.88 70.47 22.98 22.59 30.89 39.50 89.76 13.99 87.48 103.02 97.61 102.38 77.49 76.81 38.96 38.79 103.02 28.00 46.53 47.92 23.11 24.22 12.66 12.50 38.89 71.51 107.12 38.07 39.11 108.41 108.19 107.21 98.72 77.15 96.64 134.75 11.70 10.68 26.19 26.52 71.99 72.49 82.54 175.12 56.70 58.74 71.15 71.15 76.70 37.35 36.56 41.49 40.51 38.61 84.71 107.12 17.04 16.59 27.73 27.05 38.31 39.92 88.60 71.51 103.02 39.50 38.89 18.27 26.52 43.81 25.93 31.40 10.68 16.20 85.91 62.20 27.98 69.00 58.74 38.79 24.85 30.89 97.39 66.50 56.72 25.89 32.41 44.05 40.60 41.94 43.94 52.69 45.71 57.26 10.93 21.26 17.59 12.63 1.07
-A104FL25 November 14 2014 02_18.obj 77.86 87.08 16.56 25.15 28.40 20.96 22.31 34.79 26.89 40.54 35.64 20.96 21.04 36.06 39.59 52.93 51.06 39.79 40.38 78.25 20.43 18.86 31.96 25.54 25.67 23.92 75.76 11.45 33.46 34.59 128.00 79.82 132.87 29.21 70.51 66.55 22.25 21.39 103.18 100.38 63.02 22.01 21.29 25.54 36.46 80.26 11.74 78.33 90.46 89.42 89.50 71.50 71.70 34.75 35.38 90.46 23.50 40.69 41.66 20.75 21.24 12.70 10.48 33.98 65.17 96.06 36.19 37.72 96.89 96.73 99.40 87.99 71.17 90.59 122.56 9.40 9.69 22.39 21.37 63.82 65.73 74.35 157.30 49.71 51.32 65.43 65.43 68.24 32.40 32.53 37.73 35.85 32.36 76.06 96.06 16.27 15.60 27.93 26.73 32.37 34.18 79.82 65.17 90.46 36.46 33.98 16.14 21.37 37.45 25.15 28.40 9.69 15.00 78.60 53.70 23.47 60.50 51.32 35.38 21.04 25.54 85.57 60.03 51.06 23.92 29.33 39.84 36.15 37.77 39.94 47.61 42.18 48.24 8.98 18.12 16.22 11.86 0.67
-A106FG24 November 14 2014 02_35.obj 90.30 93.83 17.83 32.82 31.80 22.13 23.94 39.71 39.12 50.20 50.83 22.13 22.57 59.41 49.43 56.37 56.14 40.43 43.35 101.79 21.36 19.48 42.15 29.59 27.47 26.90 95.68 13.55 38.79 39.35 138.33 101.72 144.18 34.24 76.00 76.76 24.71 24.29 104.70 102.63 76.36 24.52 24.29 29.59 37.14 93.04 13.85 96.43 105.29 98.28 103.67 77.38 77.07 39.14 37.96 105.29 28.00 49.96 50.14 20.82 22.41 13.72 13.53 37.93 76.07 105.60 61.93 45.06 106.82 106.55 113.71 99.88 76.60 100.85 130.72 13.17 12.25 24.27 24.68 73.34 75.03 82.60 164.56 59.34 60.83 70.92 70.92 85.77 36.82 36.24 41.30 41.72 54.05 84.68 105.60 16.75 16.21 30.73 30.34 37.56 39.20 101.72 76.07 105.29 37.14 37.93 21.54 24.68 39.41 32.82 31.80 12.25 21.70 88.59 60.12 27.71 66.92 60.83 37.96 22.57 29.59 94.63 65.04 56.14 26.90 33.45 42.75 41.88 40.36 49.82 55.23 45.69 59.54 11.77 21.47 13.65 13.54 0.95
-A108FA26c November 14 2014 02_50.obj 119.86 87.86 17.80 35.77 36.77 25.17 25.45 47.98 48.77 61.02 62.11 25.20 25.45 49.19 48.30 51.78 50.06 36.72 36.46 107.77 24.43 19.51 41.04 31.17 36.38 33.78 106.23 12.32 46.09 45.30 148.13 108.67 136.26 33.68 70.06 85.25 29.82 28.23 103.96 102.73 95.35 29.02 27.64 31.17 37.41 118.95 12.19 103.37 123.24 122.90 123.15 72.17 71.62 50.53 50.14 123.24 24.50 62.46 62.66 25.06 25.66 11.97 11.76 36.22 99.12 101.23 47.93 47.06 102.55 102.38 124.27 121.89 72.20 110.40 124.80 12.51 13.72 28.06 27.79 68.84 69.07 113.34 159.50 71.45 73.15 64.98 64.98 95.59 45.71 44.25 38.43 38.95 43.54 114.41 101.23 18.42 17.21 37.32 35.72 41.73 43.52 108.67 99.12 123.24 37.41 36.22 21.49 27.79 39.48 35.77 36.77 13.72 22.30 115.77 56.51 24.39 63.31 73.15 50.14 25.45 31.17 92.37 61.20 50.06 33.78 30.14 61.68 52.67 58.95 60.80 62.66 62.88 60.31 13.36 17.52 17.12 14.01 1.15
-A109FR23a November 14 2014 03_08.obj 80.15 80.63 16.36 27.31 31.40 24.46 24.21 39.86 37.92 48.51 47.08 24.48 24.21 36.34 35.96 46.99 46.43 35.71 35.22 89.08 19.44 18.30 36.76 26.86 26.90 25.51 85.20 13.82 37.90 37.84 130.48 88.53 126.80 32.06 64.27 72.30 23.47 22.51 98.69 96.23 74.11 22.34 22.23 26.86 34.76 83.75 13.18 85.19 90.72 87.50 88.33 65.83 65.29 40.05 38.93 90.75 26.50 48.70 47.46 23.33 23.87 8.88 8.95 36.77 68.69 91.13 35.88 36.23 92.15 91.70 108.80 87.46 64.42 97.39 115.41 12.10 9.19 24.45 23.65 61.50 63.70 72.90 152.47 54.10 54.19 59.19 59.19 76.73 36.10 35.53 31.77 32.28 39.49 75.02 91.13 15.87 15.48 28.03 28.22 35.39 36.92 88.53 68.69 90.72 34.76 36.77 16.75 23.65 38.55 27.31 31.40 9.19 17.00 79.66 54.03 26.36 60.83 54.19 38.93 24.21 26.86 84.35 57.49 46.43 25.51 25.53 39.43 35.53 37.88 42.16 46.97 41.72 48.95 10.50 20.27 13.97 11.14 0.57
-A110FR23 November 14 2014 03_15.obj 85.77 89.45 21.92 32.08 32.48 22.39 24.41 40.72 40.49 47.35 47.03 22.39 23.47 42.78 43.04 52.00 50.49 39.50 39.81 95.24 24.26 18.45 41.36 32.68 29.59 27.29 89.71 12.51 40.25 40.18 151.31 92.43 137.90 33.83 67.52 80.36 25.97 25.24 104.25 101.89 75.88 25.35 24.80 32.68 38.78 89.93 14.56 91.47 100.12 94.35 99.97 69.00 68.42 39.96 39.93 100.13 29.00 46.82 46.69 22.73 23.65 10.78 10.78 37.39 75.03 100.20 40.84 41.10 101.04 101.01 114.55 97.00 68.65 104.11 125.30 12.51 12.66 25.43 26.42 69.16 71.19 82.89 161.67 56.51 56.41 62.44 62.44 77.17 38.26 38.56 37.47 37.15 41.54 83.44 100.20 18.41 18.16 32.03 29.89 39.59 40.77 92.43 75.03 100.12 38.78 37.39 20.94 26.42 40.15 32.08 32.48 12.66 17.50 85.34 59.24 29.12 66.04 56.41 39.93 23.47 32.68 89.42 56.75 50.49 27.29 30.32 42.15 41.25 39.58 46.05 52.05 45.65 54.43 10.75 22.85 15.94 12.60 0.82
-A112FR22a November 14 2014 03_30.obj 91.45 83.53 19.65 36.25 33.08 27.66 29.76 46.33 44.32 54.78 55.38 27.66 27.98 44.78 46.81 51.24 50.19 37.89 37.92 100.07 23.09 18.16 42.35 30.34 30.03 28.70 98.92 14.97 42.28 43.66 145.32 100.97 129.51 34.54 63.88 80.36 26.16 25.24 96.03 92.97 81.39 25.44 24.70 30.34 35.74 94.75 13.26 96.56 101.92 100.97 101.87 65.44 64.92 43.75 43.48 101.92 26.50 53.88 55.13 26.97 27.42 10.76 10.80 38.81 81.26 94.21 43.93 44.36 94.62 94.82 116.04 100.37 65.08 106.06 117.34 11.12 10.61 27.13 26.12 67.47 69.58 85.22 153.74 59.80 61.65 58.80 58.80 87.99 39.27 39.02 35.92 36.30 37.99 87.70 94.21 17.13 17.01 33.48 32.35 39.62 40.74 100.97 81.26 101.92 35.74 38.81 19.86 26.12 38.54 36.25 33.08 10.61 18.30 90.81 53.19 26.52 59.99 61.65 43.48 27.98 30.34 85.67 55.34 50.19 28.70 31.30 43.85 43.79 42.05 49.30 54.73 47.29 54.59 10.68 19.08 16.15 12.83 0.61
-A115FA25 November 28 2014 12_36.obj 121.63 85.25 12.23 36.74 37.38 25.30 25.61 49.62 49.22 61.61 62.95 25.39 25.61 52.37 52.92 52.76 53.09 36.46 38.08 120.11 24.52 20.26 44.64 29.13 39.41 37.73 112.46 18.62 45.31 44.35 144.89 118.66 138.29 37.10 73.02 85.47 29.96 30.48 102.92 101.86 100.88 29.36 30.00 29.13 37.93 115.10 9.82 114.23 122.78 122.66 122.55 74.14 74.19 46.16 46.58 122.77 19.50 60.52 62.30 24.68 25.78 11.90 11.71 39.94 101.16 102.15 51.57 52.92 103.47 103.83 133.53 122.42 76.02 117.63 125.37 13.74 12.44 28.74 29.85 70.28 73.02 111.38 159.93 72.13 74.50 67.94 67.94 99.12 45.09 43.67 39.06 38.45 49.97 110.56 102.15 18.47 17.87 40.52 40.95 41.75 43.71 118.66 101.16 122.78 37.93 39.94 23.14 29.85 43.81 36.74 37.38 12.44 25.60 115.36 59.35 19.63 66.15 74.50 46.58 25.61 29.13 93.27 64.13 53.09 37.73 32.24 58.47 52.03 61.71 59.81 61.58 61.79 60.94 16.90 21.06 17.35 15.39 1.68
-A116FA21 December 4 2014 02_08.obj 89.42 94.51 17.52 33.19 34.28 24.56 25.06 38.66 40.57 48.54 49.56 24.70 25.06 41.50 41.08 54.47 55.93 41.91 42.82 92.05 21.96 18.87 41.20 27.16 25.88 27.16 88.09 11.56 39.09 38.94 146.21 91.43 150.34 33.52 76.99 70.00 23.32 23.60 113.25 111.77 75.46 23.09 23.25 27.16 43.28 93.13 12.28 90.13 102.84 101.10 102.41 78.50 78.32 38.67 38.57 102.84 24.50 48.58 49.18 23.95 24.79 14.03 13.95 40.12 76.73 104.15 38.74 40.25 105.31 104.87 112.53 99.33 77.81 102.38 136.71 13.16 12.09 26.22 26.81 72.81 73.38 86.86 173.01 56.59 56.98 71.91 71.91 81.70 36.57 35.67 42.53 42.04 40.58 88.44 104.15 16.74 17.27 27.67 27.76 33.88 36.12 91.43 76.73 102.84 43.28 40.12 17.06 26.81 47.58 33.19 34.28 12.09 17.70 90.09 57.86 24.56 64.66 56.98 38.57 25.06 27.16 92.62 65.46 55.93 27.16 32.65 45.25 43.14 45.78 43.54 50.78 48.24 54.57 9.64 18.21 18.09 12.83 0.72
-A118FR24 December 4 2014 03_14.obj 81.90 79.19 16.61 29.04 30.47 22.63 21.99 36.51 35.28 41.23 40.64 22.72 21.99 35.41 36.22 50.98 51.26 39.51 39.84 84.07 19.27 18.36 37.66 25.91 24.18 23.32 78.16 12.57 35.85 35.95 137.42 81.63 127.85 31.53 62.58 66.67 22.39 22.36 95.06 94.21 66.83 22.33 22.43 25.91 38.20 84.62 11.31 83.17 93.09 92.62 92.80 64.56 63.59 36.05 34.51 93.09 22.50 40.61 40.07 21.67 21.46 10.62 10.52 36.82 66.98 88.49 34.65 35.78 89.50 89.43 101.45 91.13 63.62 94.16 116.95 11.35 10.67 22.17 23.32 65.70 67.69 75.90 151.78 48.32 48.12 57.50 57.50 74.21 34.11 32.99 33.46 34.30 37.18 77.78 88.49 14.90 15.26 26.56 26.60 32.58 34.10 81.63 66.98 93.09 38.20 36.82 15.30 23.32 44.13 29.04 30.47 10.67 18.00 83.19 51.37 22.62 58.17 48.12 34.51 21.99 25.91 80.06 54.15 51.26 23.32 29.81 41.57 36.16 37.29 44.48 48.24 43.58 49.45 9.30 17.84 15.31 11.28 0.94
-A120FA20 December 10 2014 02_31.obj 97.61 97.78 19.61 33.46 34.39 23.80 26.02 40.47 40.86 50.87 50.99 23.80 24.96 41.95 43.64 57.77 59.25 43.26 44.92 98.61 24.15 19.47 35.23 30.12 28.96 29.91 96.58 15.15 39.63 40.79 158.04 99.86 146.46 33.87 78.18 79.81 24.16 25.21 112.98 110.23 79.26 24.44 25.77 30.12 41.17 103.11 14.34 94.13 111.93 105.53 110.49 79.99 79.57 41.10 40.75 111.93 28.50 51.53 51.11 24.24 25.18 11.68 11.68 37.25 77.81 108.30 42.48 44.58 110.38 109.59 115.85 103.77 78.63 102.87 135.83 11.72 11.03 24.85 24.67 72.12 76.30 88.67 175.27 62.82 62.90 73.10 73.10 84.40 37.89 37.89 41.30 41.48 41.24 91.96 108.30 17.25 16.71 30.64 31.82 38.24 41.56 99.86 77.81 111.93 41.17 37.25 20.40 24.67 42.79 33.46 34.39 11.03 19.70 97.04 61.31 28.68 68.11 62.90 40.75 24.96 30.12 96.61 66.49 59.25 29.91 34.04 46.85 45.05 47.21 50.29 55.56 50.22 61.66 10.52 17.52 17.99 14.04 1.29
-A121FL32 February 19 2015 02_09.obj 92.45 98.34 19.65 31.28 29.50 22.47 24.03 39.23 40.02 48.96 49.67 22.47 22.86 38.48 41.18 54.10 53.87 42.20 42.19 87.17 22.76 19.01 40.32 30.27 28.30 28.39 81.21 13.38 37.58 37.51 143.14 85.78 149.46 30.50 78.69 78.42 23.80 24.60 113.48 108.39 70.65 22.82 23.51 30.27 39.21 92.27 13.95 84.42 107.51 101.27 106.62 80.40 79.50 37.88 38.55 107.51 28.00 48.34 49.15 22.66 23.02 11.54 11.54 36.40 72.63 108.95 36.98 38.97 110.87 110.22 106.34 104.67 79.43 96.87 134.97 13.05 9.82 22.91 21.46 70.48 72.26 88.93 173.08 59.83 60.82 73.61 73.61 76.73 36.27 36.04 43.56 42.83 38.89 91.00 108.95 16.28 16.94 29.40 29.98 37.69 40.73 85.78 72.63 107.51 39.21 36.40 21.15 21.46 37.43 31.28 29.50 9.82 15.40 92.76 61.78 27.90 68.58 60.82 38.55 22.86 30.27 97.42 67.15 53.87 28.39 32.09 48.44 42.51 45.80 46.56 53.96 50.19 57.28 10.61 22.93 13.95 12.10 1.27
-A123FR44 February 10 2015 03_47.obj 78.58 81.07 14.86 21.23 28.08 21.26 20.88 32.01 32.26 38.52 38.55 21.15 20.88 37.88 42.07 50.41 50.25 35.76 36.80 81.81 21.57 18.75 35.15 23.02 25.60 24.60 80.73 10.52 31.78 32.18 132.91 84.54 128.43 29.88 66.21 59.04 21.02 21.61 99.18 97.29 65.83 21.79 21.80 23.02 39.27 82.25 10.55 78.96 88.61 88.52 87.47 67.83 66.91 31.00 31.50 88.61 21.00 37.61 37.81 19.46 19.85 12.70 10.51 34.73 63.27 89.23 40.93 41.77 90.14 90.19 100.93 86.79 66.82 90.14 118.09 8.17 10.60 24.62 25.69 63.10 64.02 73.22 153.51 46.20 46.54 61.13 61.13 69.70 29.48 29.73 35.23 35.44 39.69 75.81 89.23 15.01 14.81 26.75 27.40 28.61 30.43 84.54 63.27 88.61 39.27 34.73 16.23 25.69 43.26 21.23 28.08 10.60 18.70 81.70 50.17 21.11 56.97 46.54 31.50 20.88 23.02 80.71 57.68 50.25 24.60 28.50 38.32 37.44 38.46 39.97 45.70 40.39 48.16 8.16 16.72 17.46 11.89 0.96
-A124FA35 February 19 2015 02_16.obj 122.88 93.94 20.67 39.94 39.97 24.67 24.98 42.24 42.84 54.43 55.55 24.80 24.98 58.57 53.98 52.07 54.31 36.97 39.38 125.20 24.75 19.12 53.86 33.45 35.07 36.41 119.54 17.73 41.29 41.84 157.42 124.72 144.11 39.52 73.27 91.22 28.49 28.68 105.34 105.57 107.80 27.71 27.99 33.45 38.53 119.55 9.43 120.57 126.01 125.62 118.58 74.63 74.16 43.88 43.37 126.01 19.00 55.24 55.84 23.69 25.17 12.17 11.91 42.12 106.81 106.72 51.29 53.66 108.10 107.37 137.69 124.01 77.88 124.30 130.27 15.82 13.84 28.93 29.75 74.04 75.73 117.32 165.90 66.45 68.05 68.19 68.19 104.94 39.49 38.18 41.14 41.05 54.46 117.49 106.72 18.02 17.70 37.57 40.49 45.43 45.80 124.72 106.81 126.01 38.53 42.12 23.47 29.75 44.74 39.94 39.97 13.84 26.80 120.24 59.98 18.85 66.78 68.05 43.37 24.98 33.45 97.51 64.05 54.31 36.41 32.79 64.75 52.68 63.76 59.00 59.04 65.12 60.85 12.79 22.63 16.83 15.27 0.65
-A127FA39 February 24 2015 10_57.obj 85.37 100.26 19.06 33.64 31.52 23.27 25.30 37.05 37.21 45.48 44.94 23.27 24.05 40.27 41.02 56.44 56.11 43.99 45.25 89.17 21.49 18.68 38.44 28.95 24.73 23.66 86.62 13.03 36.71 37.08 143.96 89.83 152.86 31.76 81.20 73.83 23.74 23.35 114.29 111.70 71.36 24.17 23.40 28.95 37.77 87.38 12.43 86.94 95.95 95.19 95.89 83.03 82.22 36.62 36.44 95.95 25.00 45.32 44.67 22.86 23.35 14.03 13.99 37.97 70.21 110.15 38.97 39.68 111.04 110.90 107.64 94.56 82.49 97.77 137.43 12.27 10.49 28.11 27.53 72.69 74.60 79.88 173.87 54.47 53.97 76.12 76.12 79.52 33.89 33.76 42.71 42.25 37.13 82.61 110.15 18.22 16.94 27.87 25.81 36.84 36.99 89.83 70.21 95.95 37.77 37.97 16.69 27.53 46.11 33.64 31.52 10.49 16.90 85.80 61.64 24.85 68.44 53.97 36.44 24.05 28.95 98.56 69.61 56.11 23.66 32.84 43.22 39.34 40.65 44.54 48.87 45.55 50.35 9.89 19.40 17.31 12.12 0.75
-A128FR25a February 25 2015 09_47.obj 92.12 99.82 17.40 34.24 32.10 22.47 24.21 40.05 39.44 46.68 47.76 22.47 23.38 49.38 47.25 57.26 58.78 45.78 45.90 98.25 21.63 18.58 47.79 27.69 28.90 27.94 95.29 11.96 37.66 38.17 146.30 97.54 149.73 32.68 82.43 73.26 24.65 24.91 109.59 109.22 78.20 23.95 23.79 27.69 40.01 95.46 13.60 94.98 100.48 98.52 99.34 83.71 83.59 40.09 39.95 100.49 27.50 47.20 48.37 22.75 23.74 11.50 11.50 37.57 77.04 110.12 41.18 42.86 111.25 111.02 112.42 98.40 82.58 102.77 138.64 14.86 13.95 25.30 26.24 78.58 78.66 87.61 172.48 55.21 55.61 77.35 77.35 82.30 36.16 36.45 41.63 41.72 45.49 89.27 110.12 17.39 16.91 30.23 30.96 35.82 37.44 97.54 77.04 100.48 40.01 37.57 20.49 26.24 42.54 34.24 32.10 13.95 19.20 92.10 61.02 27.19 67.82 55.61 39.95 23.38 27.69 98.62 70.93 58.78 27.94 34.52 46.06 43.14 46.01 46.00 52.04 48.28 52.15 10.30 20.01 14.01 12.98 0.90
-A129FA29 February 26 2015 01_10.obj 118.10 98.79 19.24 33.36 37.75 24.20 25.88 42.48 43.31 54.61 55.92 24.20 24.93 50.99 53.57 59.17 56.03 43.69 42.75 116.27 27.07 19.67 43.23 31.43 34.52 33.85 112.93 15.65 42.02 41.67 154.29 116.08 152.32 37.27 79.55 87.62 29.26 31.03 112.81 109.33 100.93 27.84 29.87 31.43 42.16 114.75 8.58 108.76 120.90 120.15 117.50 80.78 80.43 41.68 41.82 120.90 17.00 54.23 55.05 23.89 24.10 14.51 14.26 40.83 101.16 110.98 48.07 52.29 111.98 111.64 126.43 120.12 84.06 111.58 137.36 14.07 12.21 29.68 32.47 77.90 77.42 110.68 174.56 67.57 67.21 74.47 74.47 99.25 40.29 40.22 44.77 44.14 43.50 113.09 110.98 19.55 19.63 38.11 39.52 42.36 45.26 116.08 101.16 120.90 42.16 40.83 24.27 32.47 47.51 33.36 37.75 12.21 22.60 116.90 63.30 17.15 70.10 67.21 41.82 24.93 31.43 99.34 67.91 56.03 33.85 36.36 63.54 49.49 60.46 57.53 59.68 61.01 59.85 12.19 20.41 19.05 15.53 0.66
-A131FL22a February 26 2015 01_23.obj 88.10 89.85 14.10 27.11 30.58 21.10 20.34 35.94 34.96 43.71 43.58 21.12 20.34 39.52 39.70 56.22 54.06 43.59 43.51 91.81 23.87 18.55 38.90 23.08 25.59 24.24 88.14 15.85 33.36 32.49 125.42 90.75 134.06 39.03 75.74 66.79 22.90 21.85 100.63 98.24 73.67 22.69 21.69 23.08 35.91 89.75 11.11 88.96 94.55 94.24 92.83 76.71 76.26 35.75 35.19 94.55 22.50 44.04 44.24 19.94 19.79 11.80 11.51 42.96 75.09 98.82 39.09 38.36 99.39 99.45 109.47 91.48 76.01 97.76 122.57 10.48 11.67 28.18 28.08 71.49 71.79 84.87 159.40 54.97 55.94 70.66 70.66 76.85 33.21 32.35 37.49 38.14 39.70 86.38 98.82 15.43 15.02 28.05 28.03 33.45 33.33 90.75 75.09 94.55 35.91 42.96 17.67 28.08 39.97 27.11 30.58 11.67 21.30 89.12 54.62 22.23 61.42 55.94 35.19 20.34 23.08 89.97 66.89 54.06 24.24 31.42 43.80 42.52 44.93 43.04 46.98 43.65 50.85 8.97 15.99 17.66 11.37 0.63
-A132FA46 February 26 2015 01_35.obj 96.72 84.56 15.66 28.77 34.38 24.97 24.92 41.67 40.40 52.17 52.08 25.09 24.92 43.43 44.65 54.31 53.43 38.74 40.50 96.19 25.31 19.26 37.49 29.02 30.59 29.15 95.65 16.15 41.21 41.58 140.24 98.06 137.67 34.97 68.90 76.00 26.87 25.57 101.15 99.31 77.67 26.22 25.00 29.02 37.19 96.82 13.17 94.46 104.80 101.63 104.12 70.47 70.34 40.81 40.08 104.81 26.50 51.90 52.04 23.69 24.47 11.30 11.23 38.96 79.67 97.92 43.86 44.65 99.41 98.79 118.09 102.12 69.75 106.79 122.29 12.73 11.63 27.97 27.26 69.46 71.38 92.16 161.16 60.47 61.04 63.82 63.82 81.25 38.32 37.79 37.67 37.71 40.28 94.05 97.92 17.10 16.90 33.20 32.67 37.35 38.65 98.06 79.67 104.80 37.19 38.96 18.54 27.26 39.76 28.77 34.38 11.63 19.60 95.38 57.23 26.34 64.03 61.04 40.08 24.92 29.02 88.97 59.95 53.43 29.15 32.09 49.57 44.42 46.02 50.54 53.24 50.80 53.95 13.36 20.97 20.40 13.44 0.87
-A133FR28 February 26 2015 01_44.obj 87.81 90.86 17.07 28.35 31.57 22.35 26.06 36.71 36.12 46.88 48.08 22.35 23.56 39.49 44.38 55.48 54.57 43.94 43.51 88.71 26.58 19.99 39.10 30.01 27.79 26.89 88.81 14.49 39.67 39.59 140.87 90.41 143.28 33.37 73.79 72.38 23.70 24.34 105.49 103.63 72.47 23.98 24.93 30.01 38.04 89.55 14.75 87.51 96.59 91.72 94.94 75.77 74.93 36.32 36.91 96.59 30.00 46.77 48.82 22.31 23.75 13.02 10.96 38.42 72.27 103.80 37.34 42.32 105.08 104.53 110.76 93.62 73.95 100.68 128.26 12.31 12.03 28.55 29.26 72.72 72.55 82.67 164.50 52.88 54.65 68.71 68.71 75.77 34.50 34.35 39.77 39.35 38.48 85.35 103.80 16.25 15.73 29.01 30.40 35.84 36.54 90.41 72.27 96.59 38.04 38.42 19.72 29.26 40.69 28.35 31.57 12.03 19.00 84.03 59.48 29.51 66.28 54.65 36.91 23.56 30.01 92.83 62.83 54.57 26.89 32.78 41.51 43.78 43.85 43.78 46.34 43.79 52.73 12.93 23.15 19.95 12.99 0.73
-A134FR20 February 26 2015 01_55.obj 76.20 98.73 19.91 25.61 29.27 20.41 22.93 34.36 34.65 40.45 40.78 20.41 21.96 35.60 36.14 58.57 56.82 46.56 45.05 88.93 19.79 18.62 38.05 29.78 22.54 23.03 82.37 12.63 32.61 32.68 145.46 86.27 151.36 30.75 78.82 75.42 21.86 21.93 112.06 113.12 62.04 22.07 21.59 29.78 40.32 80.13 11.65 82.24 92.45 91.28 92.20 80.40 79.78 34.37 33.95 92.45 23.50 40.56 40.62 20.68 21.60 11.57 14.01 37.13 62.76 108.60 35.29 35.16 110.16 110.10 102.26 92.40 80.86 91.01 137.36 10.21 11.00 23.32 24.68 75.15 72.07 70.36 173.60 47.13 47.44 73.74 73.74 75.28 30.70 30.02 41.76 42.22 38.58 71.58 108.60 16.55 15.98 26.89 25.28 35.78 39.64 86.27 62.76 92.45 40.32 37.13 17.67 24.68 45.72 25.61 29.27 11.00 16.00 76.74 61.34 23.30 68.14 47.44 33.95 21.96 29.78 97.03 67.25 56.82 23.03 30.77 37.26 34.25 36.98 39.08 49.51 42.88 49.51 9.87 22.96 14.00 11.39 1.50
-A135FA29 February 26 2015 01_50.obj 97.77 89.00 18.26 31.77 31.62 27.00 26.29 40.91 41.05 51.56 52.26 27.09 26.29 46.54 45.27 52.98 52.11 39.19 39.86 94.79 25.69 19.41 39.09 28.99 30.86 28.42 94.40 13.90 41.92 41.67 140.68 94.95 136.16 35.57 70.74 76.76 28.77 27.38 101.13 98.91 81.24 27.35 26.83 28.99 38.11 100.59 12.67 91.72 107.99 105.89 107.79 72.29 71.84 40.16 39.24 107.99 25.50 51.05 51.41 25.86 26.19 14.39 11.41 39.14 81.83 99.73 44.92 43.26 100.88 100.52 113.27 106.15 71.89 101.66 123.35 12.05 11.54 26.62 24.82 68.44 70.12 93.85 159.65 62.02 62.51 65.66 65.66 83.95 39.91 38.57 39.83 38.77 39.31 96.17 99.73 19.16 18.22 32.08 32.78 38.04 38.72 94.95 81.83 107.99 38.11 39.14 21.27 24.82 36.40 31.77 31.62 11.54 20.80 97.37 58.13 25.35 64.93 62.51 39.24 26.29 28.99 90.86 61.87 52.11 28.42 32.53 50.42 45.68 50.70 46.95 53.32 49.51 58.43 10.73 20.70 17.84 13.27 0.79
-A136FA21 February 26 2015 02_06.obj 92.90 93.20 18.31 28.13 31.08 25.35 25.44 39.58 39.66 50.95 50.27 25.52 25.44 50.21 46.93 52.87 52.48 39.85 38.88 96.93 22.74 18.93 40.45 28.68 33.60 31.85 93.88 13.47 39.16 39.09 135.34 98.63 140.57 32.67 74.88 74.40 28.37 27.88 103.71 104.29 74.25 27.25 26.94 28.68 37.12 96.01 12.98 92.15 106.60 102.96 105.87 76.57 75.99 38.01 37.73 106.60 26.00 49.71 49.18 24.09 25.25 11.74 11.55 36.74 74.61 103.56 45.76 44.75 105.24 104.93 114.78 105.26 75.74 101.20 128.54 12.97 12.22 25.55 24.12 70.55 69.59 88.37 162.89 61.50 61.12 69.80 69.80 80.28 37.35 36.26 40.84 40.59 43.67 90.86 103.56 17.27 16.68 35.55 34.06 36.30 38.10 98.63 74.61 106.60 37.12 36.74 20.03 24.12 38.39 28.13 31.08 12.22 21.90 92.86 59.71 25.96 66.51 61.12 37.73 25.44 28.68 94.51 65.83 52.48 31.85 31.87 46.38 44.42 45.83 46.95 54.59 51.41 55.15 10.36 22.73 16.68 13.86 1.37
-A137FL20a February 26 2015 02_17-BkNk-RShldr.obj 79.17 91.70 19.80 26.34 30.00 21.02 20.53 35.09 35.64 42.51 42.80 21.04 20.53 37.92 41.31 54.28 52.18 41.37 41.87 91.89 20.51 18.35 35.83 29.44 26.60 24.21 85.63 12.98 32.53 32.15 132.60 90.21 137.93 31.40 71.90 75.40 23.51 22.52 101.85 98.48 70.68 23.23 22.17 29.44 34.46 85.50 14.24 86.95 94.54 90.11 92.91 73.55 73.16 35.27 35.83 94.55 28.50 42.70 43.11 19.50 19.99 11.54 11.50 37.67 71.09 101.34 37.82 38.07 102.58 102.33 107.49 91.68 72.20 94.25 123.73 10.48 10.43 26.39 24.31 67.72 69.82 75.31 161.34 50.10 50.35 66.82 66.82 77.06 31.82 31.44 36.50 36.73 44.81 76.35 101.34 15.75 15.77 28.99 28.13 36.15 39.25 90.21 71.09 94.54 34.46 37.67 19.65 24.31 39.60 26.34 30.00 10.43 18.90 79.89 59.09 28.48 65.89 50.35 35.83 20.53 29.44 92.38 62.93 52.18 24.21 30.31 38.86 37.43 37.93 41.09 51.15 43.70 50.77 9.64 22.45 12.27 11.17 0.99
-A138FA20 February 26 2015 02_24.obj 86.77 92.42 19.38 31.92 31.99 22.01 23.08 38.94 38.82 45.93 46.36 22.01 22.48 44.10 44.13 55.41 55.68 43.25 43.82 91.25 26.01 20.03 38.67 29.82 27.24 26.10 91.02 13.82 37.25 36.15 144.81 93.12 141.60 32.93 73.03 74.66 25.13 25.26 105.08 102.71 72.48 24.80 24.69 29.82 40.23 89.03 12.35 88.92 101.25 98.74 101.25 74.50 74.12 37.25 37.22 101.25 25.00 45.05 45.59 21.49 22.44 13.68 13.49 37.30 72.89 102.85 39.97 41.06 103.88 103.73 110.02 100.18 74.65 100.05 129.03 14.02 11.77 24.39 25.28 73.02 73.28 83.28 163.53 53.69 55.08 67.95 67.95 81.64 36.60 35.87 40.81 39.96 39.30 84.93 102.85 16.68 16.37 28.85 27.45 36.71 37.95 93.12 72.89 101.25 40.23 37.30 21.11 25.28 38.56 31.92 31.99 11.77 21.60 86.75 58.96 24.70 65.76 55.08 37.22 22.48 29.82 91.95 62.13 55.68 26.10 33.39 45.53 39.33 42.88 43.76 51.33 51.05 50.15 10.43 21.87 17.85 12.81 0.88
-A139FA27 February 26 2015 02_44.obj 87.27 94.94 19.60 33.99 31.97 21.78 22.41 39.77 39.89 46.15 47.10 21.84 22.41 39.63 38.52 57.79 54.07 44.64 43.62 91.65 21.93 18.88 40.61 29.96 26.74 25.59 87.56 13.12 36.64 37.42 143.91 90.64 147.39 34.11 75.34 75.03 24.40 24.09 111.39 109.22 71.14 25.38 24.50 29.96 40.98 90.23 14.04 88.25 104.47 97.87 103.11 77.02 76.77 38.48 37.90 104.47 28.50 45.47 45.83 20.55 21.96 12.55 12.28 40.65 72.08 105.30 41.20 37.53 106.67 106.29 114.88 102.96 75.94 102.62 134.72 10.38 11.72 24.21 23.00 74.90 73.06 84.28 173.92 58.14 59.48 70.26 70.26 79.74 36.06 36.02 39.97 40.30 36.92 85.93 105.30 16.60 10.90 30.32 28.13 36.37 38.65 90.64 72.08 104.47 40.98 40.65 17.92 23.00 42.32 33.99 31.97 11.72 17.70 87.70 60.88 28.07 67.68 59.48 37.90 22.41 29.96 95.64 65.68 54.07 25.59 32.17 43.36 42.51 44.66 42.50 50.79 50.79 53.63 10.36 24.71 16.12 11.82 0.99
-A140FA26a February 27 2015 01_44.obj 78.32 88.57 18.74 29.99 29.09 20.73 22.28 36.79 37.42 44.13 44.21 20.73 21.58 36.05 38.13 53.17 53.71 41.75 43.28 85.63 21.80 18.99 38.82 28.29 23.35 24.96 80.62 9.99 36.18 36.56 133.75 84.72 132.12 30.31 69.82 71.52 23.44 22.76 99.14 97.10 64.17 22.87 22.44 28.29 37.20 83.13 13.45 80.86 94.95 89.92 93.04 71.11 71.32 35.90 37.33 94.94 27.00 43.85 44.29 21.01 21.84 10.46 10.46 34.70 64.28 98.11 34.33 35.76 99.86 98.90 100.98 89.84 70.26 92.40 121.94 11.17 9.98 22.27 22.98 68.37 70.90 73.68 156.86 51.87 52.67 64.74 64.74 70.84 34.37 34.24 38.86 38.34 37.21 75.32 98.11 14.83 14.36 25.75 27.24 34.53 36.99 84.72 64.28 94.95 37.20 34.70 20.20 22.98 38.10 29.99 29.09 9.98 18.70 79.13 56.13 26.91 62.93 52.67 37.33 21.58 28.29 87.65 59.37 53.71 24.96 30.81 38.46 36.80 39.52 38.70 46.97 45.60 49.30 9.54 20.24 13.47 11.20 0.79
-A141FA23 February 28 2015 11_50.obj 84.29 94.29 17.96 28.51 30.47 22.97 25.21 37.87 37.87 44.43 45.02 22.97 23.72 43.62 40.81 54.46 53.46 41.44 42.45 92.63 22.37 19.09 39.00 27.62 27.59 25.10 88.88 12.58 36.25 36.65 135.73 91.73 141.74 29.11 76.33 68.94 23.52 23.31 104.16 99.99 73.46 23.07 23.39 27.62 35.52 87.62 13.13 88.02 96.99 93.67 95.56 78.17 77.56 37.04 37.11 96.99 26.00 43.92 44.71 21.73 23.69 11.93 11.89 35.75 70.68 103.95 41.32 39.19 104.92 104.77 106.40 93.73 76.76 96.41 127.02 11.48 10.19 25.81 23.43 69.51 71.85 80.79 164.49 54.09 53.93 71.25 71.25 72.92 35.62 34.59 41.27 40.27 41.03 82.97 103.95 16.38 16.36 29.23 28.95 34.04 34.91 91.73 70.68 96.99 35.52 35.75 20.53 23.43 35.50 28.51 30.47 10.19 20.10 84.78 59.30 26.27 66.10 53.93 37.11 23.72 27.62 94.82 67.20 53.46 25.10 32.77 42.29 40.60 43.56 40.57 47.61 47.52 49.43 9.66 20.41 14.48 12.42 0.82
-A142FA23a February 28 2015 11_59.obj 78.60 89.16 17.36 25.00 28.79 23.52 23.84 37.46 37.39 42.94 43.15 23.61 23.84 37.42 34.36 54.87 54.60 43.38 44.84 79.96 23.64 19.11 37.14 26.61 25.43 23.84 78.97 12.85 34.79 34.18 130.51 81.82 136.04 37.92 71.80 67.42 24.00 22.94 96.94 97.14 63.58 23.54 22.52 26.61 35.72 84.57 12.65 79.19 96.01 92.54 93.84 73.67 72.86 36.68 36.77 96.00 25.00 42.42 42.97 21.76 22.29 11.45 11.22 36.27 62.04 98.41 35.22 34.62 100.08 99.62 100.42 90.27 72.22 92.61 121.72 11.53 10.46 24.91 24.52 70.78 71.55 72.37 156.80 50.81 50.63 66.72 66.72 63.17 34.45 33.58 37.62 37.23 34.54 75.31 98.41 16.11 16.35 25.46 25.40 32.84 34.58 81.82 62.04 96.01 35.72 36.27 16.93 24.52 36.32 25.00 28.79 10.46 17.70 80.39 56.34 25.29 63.14 50.63 36.77 23.84 26.61 89.70 63.09 54.60 23.84 32.64 37.83 37.42 39.42 39.02 47.60 46.26 49.68 9.25 18.38 17.97 11.14 1.21
-A143FA33 March 5 2015 12_24.obj 79.42 89.80 18.47 27.66 28.70 25.37 24.58 36.97 37.23 43.63 43.41 25.25 24.58 41.06 41.33 54.16 53.42 42.44 42.46 85.74 22.65 19.25 39.99 28.14 27.39 25.35 81.98 13.17 35.56 35.66 138.48 85.54 139.49 33.01 71.33 71.49 23.62 22.89 102.97 99.72 65.26 23.55 23.01 28.14 38.16 83.93 13.17 82.77 93.59 90.04 92.36 72.46 71.95 36.47 36.69 93.59 26.50 43.18 43.12 23.57 23.95 11.60 13.80 37.45 65.84 99.47 36.88 38.22 100.66 100.47 104.47 89.32 71.90 95.30 125.54 11.55 9.96 24.81 23.32 69.94 71.57 74.97 160.33 51.76 52.04 66.25 66.25 71.97 34.97 34.22 37.79 37.57 35.09 76.44 99.47 18.15 16.92 28.18 27.78 34.51 36.99 85.54 65.84 93.59 38.16 37.45 18.56 23.32 38.56 27.66 28.70 9.96 16.80 80.12 56.49 26.34 63.29 52.04 36.69 24.58 28.14 90.57 62.42 53.42 25.35 32.36 39.58 36.80 38.03 41.22 48.22 44.03 49.51 9.68 19.37 16.22 11.70 0.99
-A144FG28a March 10 2015 10_29-Cr.obj 113.43 95.54 14.75 33.85 34.49 26.93 28.60 48.29 45.01 63.80 63.01 26.93 26.86 59.11 56.68 55.14 57.95 43.42 44.21 102.45 26.38 19.73 53.65 25.30 36.00 36.26 101.78 12.60 44.37 44.46 151.88 103.04 148.76 34.59 80.79 70.23 26.31 27.25 106.14 104.44 102.58 25.30 25.92 25.30 47.08 113.35 9.88 103.09 120.21 120.19 120.19 82.29 82.14 47.95 47.78 120.21 20.00 63.56 64.51 26.41 26.15 12.95 12.71 40.70 101.28 106.09 50.66 49.98 106.94 106.50 123.00 116.22 82.54 111.73 137.51 17.11 15.47 25.62 25.51 78.99 82.06 110.19 170.69 71.87 73.86 75.71 75.71 92.33 43.52 42.46 44.97 44.99 45.70 112.47 106.09 16.58 16.77 40.56 40.33 34.06 36.17 103.04 101.28 120.21 47.08 40.70 27.26 25.51 43.33 33.85 34.49 15.47 20.50 113.50 54.92 19.76 61.72 73.86 47.78 26.86 25.30 96.60 71.30 57.95 36.26 36.62 54.66 57.75 54.44 58.85 60.15 59.22 60.94 10.55 12.85 13.54 14.12 0.42
-A145FA23 March 10 2015 11_24.obj 81.83 93.87 19.48 29.93 31.99 22.20 23.67 39.37 38.51 46.63 46.88 22.20 22.81 44.61 43.22 55.60 54.33 42.04 40.56 91.44 23.91 20.39 40.09 29.45 28.22 28.80 89.20 12.34 38.18 38.38 143.16 91.21 144.13 33.65 74.39 72.56 25.35 26.19 109.92 107.04 72.05 25.75 25.29 29.45 42.10 87.28 13.79 88.49 97.42 93.31 96.43 76.43 75.62 39.05 38.47 97.42 27.50 46.47 46.94 22.45 22.99 11.16 11.16 37.61 69.76 103.84 43.32 42.18 104.67 104.43 109.97 95.17 74.98 99.27 132.64 12.06 13.16 24.03 22.85 72.30 70.44 78.38 167.49 54.53 54.21 69.31 69.31 76.77 36.80 36.36 39.41 39.89 40.10 80.13 103.84 17.86 17.02 30.11 29.55 35.95 36.61 91.21 69.76 97.42 42.10 37.61 20.85 22.85 41.03 29.93 31.99 13.16 20.20 82.24 59.10 27.57 65.90 54.21 38.47 22.81 29.45 92.67 63.22 54.33 28.80 33.01 42.65 37.43 39.85 41.86 50.78 45.57 51.80 9.96 22.60 16.69 13.36 0.59
-A146FZ23 March 10 2015 11_36.obj 86.60 93.26 16.34 31.14 31.56 25.33 25.88 41.09 39.82 48.34 48.00 25.39 25.88 38.74 42.79 57.62 56.05 42.25 43.63 88.06 23.66 20.10 32.30 26.05 26.60 26.10 87.40 12.99 38.55 37.21 135.43 90.15 141.81 32.36 76.92 66.73 24.35 25.04 110.01 106.18 72.46 24.39 24.91 26.05 40.08 89.46 12.78 86.70 98.24 95.74 96.33 78.65 78.10 40.86 39.72 98.24 25.50 48.24 48.10 24.17 24.15 12.23 14.76 36.99 73.67 102.97 40.92 42.20 103.75 103.56 107.14 91.39 77.07 95.86 131.29 10.42 9.28 26.48 25.41 69.81 71.28 83.06 167.39 54.00 55.28 71.84 71.84 79.69 38.21 36.57 40.27 39.11 35.17 85.22 102.97 16.74 16.53 28.46 27.44 33.24 33.48 90.15 73.67 98.24 40.08 36.99 18.15 25.41 40.99 31.14 31.56 9.28 17.90 87.19 57.92 25.55 64.72 55.28 39.72 25.88 26.05 93.67 67.62 56.05 26.10 33.74 42.64 42.51 45.21 41.24 45.07 43.16 55.04 9.71 15.71 19.63 13.66 0.60
-A147FA21a March 10 2015 11_57.obj 79.38 92.06 16.20 29.75 27.68 22.46 23.92 34.98 35.03 41.18 42.09 22.46 22.43 38.77 39.76 53.19 51.96 41.32 41.94 81.51 23.76 19.51 37.75 25.07 24.14 23.66 75.47 11.93 33.86 34.19 127.07 79.44 139.56 34.02 75.87 65.90 22.47 22.34 103.93 102.47 63.02 22.28 22.23 25.07 39.08 83.93 12.28 81.35 90.45 88.37 88.18 76.99 77.21 34.73 34.85 90.57 25.00 41.52 42.63 20.73 21.78 13.21 13.01 39.26 64.50 100.93 36.94 38.50 101.89 101.72 99.03 87.38 76.02 92.55 126.91 11.17 10.47 21.59 21.40 68.53 68.37 74.05 160.89 48.27 48.97 70.78 70.78 67.75 32.16 32.08 39.53 38.42 33.93 76.39 100.93 15.93 15.70 25.97 25.46 31.48 34.43 79.44 64.50 90.45 39.08 39.26 19.08 21.40 36.78 29.75 27.68 10.47 17.90 81.17 55.66 24.57 62.46 48.97 34.85 22.43 25.07 90.21 65.14 51.96 23.66 31.51 38.25 38.07 39.88 39.36 46.34 41.79 48.61 8.87 18.29 16.87 11.61 0.79
-A148FA18 March 10 2015 12_30.obj 83.57 93.69 17.30 35.23 26.60 20.03 20.29 36.77 34.77 44.26 42.31 20.15 20.29 43.27 41.99 55.88 55.35 44.52 45.73 86.30 22.65 18.32 42.15 26.89 24.47 22.33 82.46 14.01 33.54 33.37 137.14 85.89 140.72 30.78 76.39 67.18 21.63 21.40 102.85 100.23 70.12 20.68 20.32 26.89 38.30 87.30 12.57 82.19 92.96 90.84 91.75 77.84 77.85 35.06 34.55 92.96 25.00 41.24 42.61 19.34 20.42 13.65 13.57 39.09 67.26 103.27 36.74 46.75 104.07 103.88 101.69 90.90 76.94 96.41 128.66 11.32 10.29 22.98 22.83 72.93 74.16 78.18 165.10 49.51 50.47 71.31 71.31 70.29 32.76 32.38 40.86 40.51 32.21 80.90 103.27 15.62 15.36 26.65 27.03 33.20 33.98 85.89 67.26 92.96 38.30 39.09 19.89 22.83 38.09 35.23 26.60 10.29 17.00 84.61 56.58 25.14 63.38 50.47 34.55 20.29 26.89 92.27 65.38 55.35 22.33 34.07 40.23 40.60 40.14 43.27 47.61 43.09 49.83 9.58 20.43 14.29 11.30 0.61
-A149FA20 March 10 2015 02_18.obj 84.63 90.92 15.65 24.55 30.20 25.06 25.08 36.73 36.48 42.79 43.51 25.09 25.08 39.03 35.53 58.69 57.91 45.36 45.85 81.81 28.49 20.64 29.48 28.08 26.32 28.36 79.77 13.11 35.78 36.41 136.92 82.95 141.05 32.53 75.27 71.03 23.22 23.80 104.03 105.30 64.69 23.14 22.99 28.08 40.83 85.72 13.04 81.47 93.53 91.36 92.69 76.47 76.56 36.34 36.01 93.53 26.00 42.46 43.31 23.94 25.16 11.85 11.85 47.70 65.96 103.34 38.82 45.71 104.15 104.00 105.13 91.64 75.90 97.31 128.05 11.83 7.48 24.66 34.70 71.73 73.88 81.08 164.56 52.37 52.60 70.19 70.19 66.87 34.43 34.41 40.22 39.57 34.33 82.58 103.34 16.81 16.11 28.37 28.84 34.75 36.28 82.95 65.96 93.53 40.83 47.70 20.67 34.70 47.47 24.55 30.20 7.48 18.50 82.38 59.24 26.07 66.04 52.60 36.01 25.08 28.08 94.20 66.12 57.91 28.36 33.93 43.18 39.33 39.95 44.53 49.51 42.06 51.41 12.42 20.88 22.31 14.15 0.66
-A151FA19b March 10 2015 02_34.obj 85.60 90.68 17.55 32.07 27.90 24.19 24.83 38.45 38.10 43.24 43.64 24.16 24.83 42.81 43.86 54.26 55.35 40.97 43.17 85.71 23.47 19.59 36.19 27.31 26.28 26.21 82.16 11.18 36.60 35.82 133.46 85.42 140.60 34.02 73.13 70.27 24.04 24.21 105.44 101.26 71.10 23.74 23.29 27.31 40.10 88.53 12.56 85.25 100.21 97.41 99.09 74.58 74.84 38.28 38.50 100.20 25.00 43.70 44.12 22.64 23.38 11.77 14.23 37.85 73.35 100.43 39.80 41.30 101.38 101.29 103.47 97.56 73.82 92.84 127.14 11.39 9.51 22.07 23.36 68.31 71.20 81.53 166.05 53.42 53.96 68.05 68.05 75.05 35.75 35.14 36.57 36.82 33.97 83.34 100.43 16.16 15.87 27.77 28.38 33.59 36.68 85.42 73.35 100.21 40.10 37.85 20.51 23.36 39.97 32.07 27.90 9.51 15.30 86.09 57.40 25.11 64.20 53.96 38.50 24.83 27.31 91.21 63.90 55.35 26.21 33.11 44.58 38.70 43.53 41.93 50.15 43.80 56.37 9.75 20.51 16.41 12.85 0.85
-A152FA20 March 10 2015 02_25.obj 88.83 96.85 20.14 33.77 31.07 25.99 27.00 40.18 39.77 49.14 48.31 25.99 26.33 46.59 46.93 58.41 56.02 44.30 43.45 91.48 24.03 18.90 38.76 30.40 29.10 30.60 84.95 9.70 39.29 39.44 146.75 88.32 148.01 33.92 76.71 76.82 25.77 24.93 106.57 105.85 73.13 25.53 24.87 30.40 39.45 93.20 13.76 90.54 104.71 99.91 104.16 78.19 77.96 38.74 38.96 104.71 27.50 48.64 47.99 24.88 26.14 12.06 11.98 38.56 72.00 107.11 43.76 43.67 108.10 107.93 110.18 101.03 77.62 100.27 132.39 12.97 11.32 24.18 24.81 74.61 74.59 83.29 170.49 57.57 58.00 71.63 71.63 77.21 36.41 35.62 41.54 41.07 41.11 85.29 107.11 17.03 16.65 31.17 31.77 36.83 39.99 88.32 72.00 104.71 39.45 38.56 22.67 24.81 39.31 33.77 31.07 11.32 19.90 88.93 62.08 27.52 68.88 58.00 38.96 26.33 30.40 97.64 67.24 56.02 30.60 33.34 45.89 39.35 40.92 47.78 55.35 47.53 57.13 10.27 21.43 15.71 13.85 0.81
-A154FA21 March 10 2015 02_53.obj 86.02 101.09 18.32 28.71 29.48 25.36 27.22 38.10 36.60 45.39 45.39 25.36 25.44 45.82 42.96 57.73 61.07 46.63 48.75 83.91 26.15 18.98 44.29 28.13 27.37 27.05 81.98 14.54 37.18 37.03 156.35 83.92 154.78 32.57 82.77 73.05 23.99 24.59 112.40 110.72 67.26 23.93 24.03 28.13 44.51 91.33 13.60 82.29 101.78 98.13 100.47 84.08 83.80 37.74 36.20 101.77 27.50 45.39 44.98 24.76 24.31 12.50 12.50 36.62 68.20 110.90 40.27 42.08 112.57 112.44 105.47 98.82 83.07 99.68 140.58 15.55 12.64 26.14 25.66 77.79 81.69 79.54 175.94 54.78 56.29 77.69 77.69 72.27 35.65 34.46 42.90 43.19 41.14 81.00 110.90 17.18 18.29 27.87 29.16 35.24 37.81 83.92 68.20 101.78 44.51 36.62 23.42 25.66 44.88 28.71 29.48 12.64 18.60 87.16 62.55 27.20 69.35 56.29 36.20 25.44 28.13 101.13 73.00 61.07 27.05 35.63 39.05 41.85 38.74 47.05 53.32 47.60 54.12 9.81 21.03 15.92 13.19 1.53
-A156FR21b March 10 2015 03_10.obj 86.55 85.03 17.69 32.10 29.10 24.68 25.16 38.61 37.99 44.86 44.51 24.84 25.16 41.05 40.70 54.62 52.52 40.07 41.68 89.12 21.35 18.67 36.55 27.11 29.19 26.18 85.23 12.61 36.11 36.67 142.10 87.85 132.96 31.56 67.33 69.27 24.23 23.50 97.49 95.01 71.90 23.97 23.07 27.11 39.06 89.21 11.40 84.89 98.47 97.50 98.32 68.70 68.64 37.60 37.00 98.46 23.00 44.19 43.84 23.49 23.65 11.27 11.06 35.75 74.06 94.45 41.05 38.81 95.08 95.13 103.05 96.99 68.69 95.79 121.16 10.57 10.20 23.35 23.39 68.76 70.12 80.52 159.73 53.03 53.76 62.25 62.25 74.76 35.09 34.20 36.01 35.69 34.01 81.96 94.45 16.80 15.91 29.91 27.60 33.68 35.58 87.85 74.06 98.47 39.06 35.75 19.35 23.39 41.55 32.10 29.10 10.20 15.90 87.61 54.62 22.81 61.42 53.76 37.00 25.16 27.11 85.57 58.46 52.52 26.18 32.45 43.20 38.70 43.91 42.51 48.88 46.72 51.70 9.42 19.48 14.09 11.82 0.69
-A157FA23a March 10 2015 03_23.obj 98.08 96.52 19.63 35.25 31.99 24.46 26.65 41.22 41.41 53.66 54.57 24.46 25.06 47.96 48.83 58.29 58.58 44.90 46.11 100.60 23.32 18.74 44.98 30.85 29.01 29.70 95.06 15.82 39.76 39.26 148.70 99.58 150.40 33.58 76.88 81.16 25.16 24.90 108.25 105.65 80.41 25.15 24.63 30.85 40.28 102.55 14.22 95.03 115.95 109.73 115.34 78.28 78.23 38.83 39.07 115.95 28.00 52.58 53.79 23.55 23.68 12.44 12.39 39.23 78.95 107.74 43.30 44.98 109.42 109.23 115.90 109.22 77.65 104.50 135.26 14.00 11.91 25.03 25.69 76.81 79.31 92.72 171.26 66.73 66.59 71.80 71.80 85.22 37.36 36.87 42.48 42.18 38.69 94.83 107.74 17.01 16.07 32.85 33.60 39.59 41.57 99.58 78.95 115.95 40.28 39.23 21.70 25.69 43.10 35.25 31.99 11.91 18.40 97.00 62.59 28.44 69.39 66.59 39.07 25.06 30.85 98.22 67.37 58.58 29.70 35.56 50.99 43.78 49.77 48.21 55.86 57.37 58.53 11.22 19.99 15.74 13.76 1.49
-A158FA20 March 10 2015 03_31.obj 92.16 102.41 21.11 27.84 30.18 21.54 22.98 38.71 38.79 47.20 48.02 21.54 21.76 46.79 47.92 59.30 58.82 44.87 46.52 93.00 25.31 18.96 42.26 32.14 28.74 29.67 87.49 15.24 36.93 37.91 152.40 91.63 155.75 38.67 81.30 80.81 25.35 26.34 115.41 113.39 74.85 24.68 25.91 32.14 42.17 95.12 15.32 90.70 101.81 97.42 100.93 82.67 82.35 37.39 37.87 101.81 30.50 46.57 47.75 21.75 21.94 12.23 12.23 43.96 75.82 113.44 44.13 45.42 114.58 114.08 113.07 99.13 81.77 103.20 142.28 11.03 11.59 28.22 26.27 76.60 79.26 86.62 183.41 55.66 56.45 76.22 76.22 78.73 35.31 34.90 45.28 44.59 37.74 89.01 113.44 17.84 16.43 32.65 32.52 39.73 41.08 91.63 75.82 101.81 42.17 43.96 21.56 26.27 43.95 27.84 30.18 11.59 18.50 91.39 64.53 30.64 71.33 56.45 37.87 21.76 32.14 101.21 69.07 58.82 29.67 36.16 47.71 41.24 45.90 46.13 52.18 49.70 52.06 11.02 23.61 17.95 14.06 0.64
-A159FL22b March 10 2015 03_41.obj 83.96 97.00 17.65 31.96 27.90 20.11 20.82 36.36 36.79 44.21 44.66 20.23 20.82 41.94 41.43 59.96 59.53 46.79 48.17 87.42 25.82 19.87 39.48 27.28 26.73 25.61 82.80 13.20 33.76 33.74 134.35 85.31 144.64 32.30 79.35 71.15 24.62 22.76 105.59 102.89 75.39 23.44 22.52 27.28 39.70 86.16 12.97 86.13 97.61 94.94 96.48 80.81 80.36 36.70 37.08 97.60 26.00 44.42 44.84 20.34 20.33 11.14 13.65 37.10 71.33 106.63 39.23 39.74 107.26 107.24 104.98 95.14 79.77 97.07 131.76 12.08 12.39 24.79 24.44 75.61 78.75 80.74 167.05 53.72 53.79 74.27 74.27 74.15 32.63 32.66 42.23 42.33 35.16 82.27 106.63 15.73 14.28 27.80 28.59 34.48 36.67 85.31 71.33 97.61 39.70 37.10 21.76 24.44 37.83 31.96 27.90 12.39 17.80 84.50 59.32 25.94 66.12 53.79 37.08 20.82 27.28 95.49 68.22 59.53 25.61 35.45 44.13 38.07 41.18 42.64 49.51 44.38 53.19 9.63 20.51 17.11 12.65 0.61
-A164FA26b March 19 2015 02_35.obj 89.28 94.68 18.50 32.87 31.00 22.25 22.46 38.11 38.84 46.25 48.12 22.34 22.46 43.79 44.46 56.96 55.80 43.74 43.73 93.69 22.71 19.18 41.90 28.60 30.19 28.43 88.14 14.09 37.68 38.64 144.25 91.68 146.89 32.86 76.18 71.25 26.10 25.05 107.58 105.65 74.50 25.20 24.68 28.60 41.18 91.09 12.49 91.71 99.09 97.55 98.91 77.38 77.30 37.12 37.49 99.09 25.00 45.26 47.42 22.32 22.66 13.91 11.24 38.58 76.66 104.77 42.03 41.99 105.66 105.36 108.90 96.28 77.32 99.47 132.96 11.95 11.40 23.94 22.80 74.10 75.15 86.65 168.55 56.40 57.39 71.10 71.10 79.36 35.62 35.92 41.88 41.23 39.54 87.86 104.77 15.91 15.76 30.24 31.23 35.03 36.22 91.68 76.66 99.09 41.18 38.58 21.48 22.80 41.44 32.87 31.00 11.40 17.70 89.54 59.06 24.98 65.86 57.39 37.49 22.46 28.60 93.54 64.94 55.80 28.43 33.07 45.91 41.88 44.11 45.04 50.77 47.54 51.51 10.09 18.62 14.53 12.98 0.59
-A165FR23 March 19 2015 02_40.obj 89.33 84.58 16.44 26.58 32.79 22.81 21.99 36.53 38.29 44.35 46.06 22.82 21.99 40.09 38.05 48.73 47.58 36.88 37.11 89.52 23.42 19.04 36.48 28.37 27.38 27.15 87.99 15.17 35.89 35.64 137.62 90.55 133.66 32.98 68.14 71.72 22.68 22.72 102.94 104.54 77.70 22.27 23.05 28.37 37.62 89.98 13.12 87.54 96.85 94.33 96.09 69.18 69.19 36.69 36.99 96.85 26.00 44.61 45.30 22.52 21.92 11.17 10.96 37.53 78.82 96.51 38.95 37.92 97.16 96.97 114.16 94.76 68.81 99.94 122.24 12.00 11.04 26.78 24.56 64.67 63.94 87.74 155.97 54.22 55.80 63.06 63.06 77.48 35.31 34.56 36.69 36.16 38.47 87.79 96.51 15.94 15.53 29.62 29.36 35.68 36.04 90.55 78.82 96.85 37.62 37.53 16.15 24.56 39.78 26.58 32.79 11.04 18.70 88.93 56.37 26.25 63.17 55.80 36.99 21.99 28.37 87.85 59.48 47.58 27.15 26.98 46.49 41.24 45.48 43.78 50.14 46.65 50.15 11.93 21.01 19.47 12.06 0.46
-A166FA22 March 19 2015 02_46.obj 90.69 97.23 17.74 34.14 31.27 25.81 25.37 38.90 38.60 48.68 48.77 25.76 25.37 46.44 47.13 55.40 56.69 43.99 45.13 93.36 22.38 19.11 41.72 27.69 30.37 29.54 89.09 13.11 38.06 38.06 139.09 92.89 144.63 32.73 79.49 71.07 27.25 26.56 109.19 106.00 72.91 26.74 26.62 27.69 39.28 93.46 13.17 91.56 100.71 98.17 99.57 80.47 80.07 37.02 37.96 100.71 26.00 47.96 48.61 24.17 24.42 12.08 11.78 36.31 73.84 107.17 40.68 43.32 108.47 107.89 107.81 96.87 79.91 98.18 134.20 13.83 11.61 23.92 22.91 73.05 75.83 87.55 167.95 57.97 58.41 74.41 74.41 80.52 35.09 34.69 42.62 41.80 38.64 88.65 107.17 17.78 16.46 30.99 31.78 35.04 36.03 92.89 73.84 100.71 39.28 36.31 20.94 22.91 38.75 34.14 31.27 11.61 17.70 91.01 60.77 26.33 67.57 58.41 37.96 25.37 27.69 97.84 70.16 56.69 29.54 34.46 44.81 43.78 43.93 46.63 50.15 46.92 53.74 9.94 18.19 15.14 13.47 0.71
-A168FA21 March 19 2015 02_56.obj 92.09 101.08 19.83 25.40 30.38 22.90 23.98 39.37 39.41 50.94 51.46 22.90 23.53 47.73 47.89 61.11 58.59 48.04 47.00 91.39 21.38 17.92 43.31 31.86 30.94 28.88 86.33 15.93 38.67 38.75 141.79 90.64 156.29 35.17 81.25 79.48 28.17 24.65 111.00 110.15 74.00 27.42 25.10 31.86 35.64 95.89 15.43 88.82 107.63 98.28 105.18 82.43 82.13 38.45 39.12 107.63 31.00 50.35 51.80 23.12 23.68 13.93 16.14 44.81 71.37 113.11 44.03 43.90 114.63 114.36 111.03 103.71 81.56 103.82 139.07 13.94 12.81 29.47 26.92 78.18 78.23 83.06 179.16 60.53 60.41 76.17 76.17 75.10 35.96 35.94 44.05 42.95 40.32 86.34 113.11 18.38 16.79 31.22 31.66 38.10 41.38 90.64 71.37 107.63 35.64 44.81 17.86 26.92 41.04 25.40 30.38 12.81 21.50 89.43 63.30 30.86 70.10 60.41 39.12 23.53 31.86 99.17 67.32 58.59 28.88 35.13 46.30 39.97 46.67 45.22 52.69 49.51 58.08 12.03 25.48 17.04 13.09 1.26
-A169FA20 March 19 2015 03_00.obj 84.74 92.47 17.49 26.08 29.59 23.05 22.83 39.27 37.90 45.42 46.52 23.09 22.83 42.83 40.50 53.61 54.99 42.92 43.90 85.31 23.37 19.79 38.23 27.17 27.39 25.33 78.38 11.73 37.17 36.73 132.60 80.09 140.63 32.45 74.98 70.08 24.38 22.73 103.31 102.01 70.60 23.26 22.66 27.17 38.14 87.65 12.50 85.17 99.65 96.69 98.47 76.27 75.89 37.47 37.30 99.65 25.00 44.86 45.33 21.98 22.35 11.54 11.41 36.44 71.73 102.16 37.63 38.37 103.33 102.96 101.08 95.15 75.67 91.18 128.00 11.67 10.88 21.99 21.83 70.10 70.76 83.03 161.86 55.12 56.53 69.90 69.90 70.67 35.47 34.55 40.07 40.14 37.28 83.88 102.16 15.84 15.21 29.62 28.75 34.18 35.91 80.09 71.73 99.65 38.14 36.44 18.44 21.83 36.41 26.08 29.59 10.88 17.60 85.20 58.29 25.00 65.09 56.53 37.30 22.83 27.17 93.17 65.99 54.99 25.33 33.28 42.58 41.24 42.73 41.86 48.24 50.10 49.50 9.69 18.99 17.15 12.15 0.80
-A170FA22 March 19 2015 03_07.obj 85.30 87.58 16.94 29.91 29.87 24.32 23.39 36.07 36.83 44.74 44.97 22.85 23.39 37.53 41.61 53.72 51.25 40.59 40.46 87.69 21.64 19.01 38.97 26.61 26.34 27.20 82.54 14.55 36.25 35.91 135.82 86.32 135.64 32.07 70.64 70.25 24.23 24.23 100.55 100.25 66.05 23.28 23.46 26.61 36.55 88.63 12.24 83.40 92.91 92.46 92.75 71.46 71.73 34.54 35.80 92.91 24.50 44.12 44.57 23.10 23.26 11.32 13.41 37.04 67.38 97.25 36.65 38.14 98.32 98.19 106.47 91.64 71.31 95.00 121.91 9.13 11.86 24.14 24.57 69.37 68.36 78.28 156.71 53.42 53.92 65.56 65.56 70.97 33.36 33.23 38.82 37.44 38.85 79.87 97.25 15.76 15.49 27.19 27.50 34.29 35.97 86.32 67.38 92.91 36.55 37.04 18.20 24.57 40.76 29.91 29.87 11.86 19.40 86.19 55.79 24.48 62.59 53.92 35.80 23.39 26.61 88.54 61.93 51.25 27.20 28.37 43.01 36.80 39.42 45.74 49.50 44.28 48.58 9.67 18.11 15.33 11.74 0.94
-A171FR29 March 19 2015 03_12.obj 82.01 90.12 16.75 27.95 29.16 25.66 23.52 37.46 36.44 42.96 42.46 24.17 23.52 36.57 40.22 61.72 52.57 48.92 41.88 84.29 21.03 19.23 35.39 26.51 24.31 23.01 82.20 12.50 37.48 37.82 137.14 84.66 139.15 32.18 73.37 69.68 23.12 22.38 103.16 100.92 67.26 22.77 22.60 26.51 37.34 85.45 12.19 82.01 91.63 91.21 91.37 74.83 74.22 36.84 36.13 91.63 24.00 42.83 42.41 22.78 22.28 11.52 11.28 37.52 69.37 99.88 36.09 39.41 100.71 100.71 100.92 90.71 74.04 91.89 126.23 9.84 9.58 24.48 23.79 74.86 69.47 78.77 161.93 50.99 51.23 68.29 68.29 73.10 35.00 34.28 38.87 38.37 35.20 80.29 99.88 18.41 14.81 26.52 26.97 34.86 34.83 84.66 69.37 91.63 37.34 37.52 17.74 23.79 39.32 27.95 29.16 9.58 18.70 82.54 56.84 24.37 63.64 51.23 36.13 23.52 26.51 90.89 64.37 52.57 23.01 31.99 43.44 36.80 41.93 39.97 46.34 39.98 51.60 9.76 19.07 15.57 12.08 0.83
-A172FL22a March 19 2015 03_31.obj 88.89 89.87 18.97 26.29 28.38 22.59 22.73 36.94 35.03 43.97 43.49 22.54 22.73 41.87 45.68 52.84 53.56 41.62 42.65 89.66 19.77 18.29 36.75 29.54 26.46 25.24 85.54 10.77 34.71 35.07 131.97 88.76 136.58 36.27 70.90 75.91 23.72 23.13 100.05 98.45 73.03 22.82 22.73 29.54 32.67 89.83 12.24 83.89 95.78 92.96 95.77 71.76 71.39 34.77 33.89 95.78 24.50 42.70 42.80 22.30 22.16 11.22 11.15 40.54 71.11 100.44 38.74 44.51 101.40 101.36 106.98 93.33 74.33 91.65 124.13 11.52 11.92 25.61 26.11 68.70 69.58 84.36 156.81 52.21 53.20 65.82 65.82 71.03 32.97 32.67 38.66 38.02 39.29 86.85 100.44 15.52 15.37 31.90 28.98 37.52 38.39 88.76 71.11 95.78 32.67 40.54 17.15 26.11 37.20 26.29 28.38 11.92 19.90 88.80 58.84 24.48 65.64 53.20 33.89 22.73 29.54 91.73 62.19 53.56 25.24 32.41 46.82 39.98 43.07 45.68 49.63 44.95 50.78 10.57 20.65 16.56 13.56 0.93
-A173FA20b March 19 2015 03_36.obj 92.13 88.35 16.35 27.67 30.70 21.53 22.35 37.19 36.76 44.07 44.62 21.53 21.16 39.66 43.51 55.23 54.93 43.63 42.96 87.12 27.24 19.98 38.59 25.97 27.24 25.70 81.33 13.04 36.09 35.71 140.44 84.39 136.67 34.06 72.01 67.82 24.78 24.02 100.30 98.34 76.23 24.38 23.59 25.97 40.81 92.68 11.34 86.77 102.37 101.72 102.02 73.33 72.59 36.07 35.20 102.37 22.50 43.50 43.78 21.73 21.35 10.69 10.69 38.22 79.09 97.98 38.58 41.82 98.62 98.68 109.33 97.97 74.44 99.98 123.51 11.89 9.49 25.46 27.09 71.62 71.66 88.91 160.38 53.72 55.93 66.93 66.93 75.13 35.16 34.09 39.40 39.17 38.49 90.52 97.98 16.82 16.00 29.47 28.74 33.83 33.99 84.39 79.09 102.37 40.81 38.22 20.48 27.09 42.23 27.67 30.70 9.49 18.20 92.56 54.74 22.67 61.54 55.93 35.20 21.16 25.97 87.29 61.32 54.93 25.70 33.74 44.78 45.69 47.59 44.42 49.50 47.58 54.74 9.63 16.71 19.75 12.51 0.70
-A174FA22 March 23 2015 11_39.obj 80.80 99.31 20.66 30.09 29.50 21.50 23.15 36.29 35.28 42.64 42.19 21.50 21.99 36.10 39.71 56.67 55.49 44.97 44.89 87.49 18.34 18.53 39.36 31.77 23.63 24.68 78.97 14.53 33.17 34.13 140.33 84.06 150.02 32.63 78.65 76.61 21.63 22.63 111.44 109.29 64.91 21.67 21.75 31.77 34.93 85.87 14.40 83.34 92.73 89.62 92.45 79.61 79.27 34.90 34.69 92.73 28.50 41.20 41.92 21.61 22.01 14.15 14.11 42.07 64.99 110.42 34.87 37.35 112.23 110.94 104.07 91.61 79.59 93.95 135.95 11.54 9.33 24.38 22.88 72.68 73.70 73.74 174.00 49.13 49.86 73.57 73.57 78.13 32.57 33.05 40.77 41.37 37.62 75.17 110.42 15.69 15.58 26.60 28.56 36.76 39.84 84.06 64.99 92.73 34.93 42.07 16.64 22.88 39.98 30.09 29.50 9.33 19.10 79.23 63.23 28.80 70.03 49.86 34.69 21.99 31.77 98.82 67.05 55.49 24.68 32.53 38.95 36.17 38.24 42.47 49.15 42.53 50.14 11.11 24.48 14.45 11.87 0.52
-A175FA21 March 23 2015 11_44.obj 91.14 95.96 18.78 33.87 28.60 23.83 23.52 37.33 35.13 46.75 44.04 23.98 23.52 43.82 47.21 54.90 54.91 42.83 44.27 90.23 23.56 18.78 40.15 29.07 28.59 25.90 89.76 13.90 36.25 36.22 144.70 91.39 148.82 36.73 77.18 74.05 25.90 25.04 108.41 107.71 72.38 25.26 24.42 29.07 39.83 92.46 11.14 86.57 98.23 97.64 97.77 78.07 77.65 35.33 33.89 98.24 22.50 42.70 42.82 23.27 23.03 12.12 11.92 41.70 75.29 106.25 40.67 44.95 106.88 106.86 108.02 96.34 79.32 98.73 133.91 10.59 11.09 23.61 24.23 72.19 72.34 88.17 169.77 55.13 54.52 72.10 72.10 72.32 33.98 33.04 42.42 41.69 34.25 89.04 106.25 15.61 15.90 31.02 29.57 36.41 37.65 91.39 75.29 98.23 39.83 41.70 18.53 24.23 40.33 33.87 28.60 11.09 17.60 91.19 61.00 22.29 67.80 54.52 33.89 23.52 29.07 96.82 67.75 54.91 25.90 33.95 45.83 43.14 43.54 47.47 51.40 46.76 51.42 10.29 18.51 17.68 12.67 0.61
-A176FA24 March 23 2015 11_50.obj 82.86 85.87 14.89 32.29 30.70 22.54 23.00 37.16 34.33 43.81 42.13 22.47 23.00 38.75 41.44 53.29 54.47 41.48 43.35 90.15 19.45 18.81 38.87 23.76 24.75 24.81 84.05 12.80 35.08 34.63 140.24 88.31 139.77 31.08 70.98 61.85 22.93 22.65 102.72 100.02 71.14 22.60 22.20 23.76 41.13 84.89 11.08 87.11 96.82 96.22 95.15 71.70 71.70 35.16 34.87 96.82 22.00 42.92 42.67 22.26 22.03 11.31 11.16 36.10 79.73 94.74 37.02 38.67 95.37 95.21 105.68 91.45 71.48 96.27 125.23 12.26 10.01 22.55 22.16 69.32 71.27 82.65 161.17 51.49 52.08 65.90 65.90 74.76 32.61 32.34 37.98 38.33 38.55 83.55 94.74 15.23 15.40 27.29 27.78 30.22 31.63 88.31 79.73 96.82 41.13 36.10 17.82 22.16 44.33 32.29 30.70 10.01 19.50 83.61 52.96 22.16 59.76 52.08 34.87 23.00 23.76 85.78 62.03 54.47 24.81 31.05 40.98 42.51 42.70 39.97 45.07 43.15 53.61 8.86 15.17 13.44 11.74 0.48
-A177FA28 March 23 2015 12_00.obj 72.06 95.83 19.41 32.96 27.74 22.51 24.09 35.74 35.32 39.78 39.60 22.51 23.03 34.57 34.39 52.75 54.13 44.38 45.55 78.23 22.20 19.07 39.03 28.44 21.92 21.14 77.90 12.49 34.97 34.83 135.81 80.12 145.25 29.58 76.42 69.93 22.85 22.40 107.64 105.01 59.55 22.34 21.99 28.44 37.72 79.72 13.97 78.46 88.36 85.56 86.91 78.14 77.36 35.83 35.23 88.37 28.00 40.16 39.80 22.67 23.30 11.06 11.06 34.04 59.08 104.86 31.29 31.84 106.05 105.80 101.04 85.80 76.58 90.87 131.01 12.83 10.85 21.77 21.03 70.56 71.21 67.40 165.87 45.80 45.80 71.34 71.34 72.37 32.91 32.31 40.39 40.29 33.47 69.94 104.86 15.91 15.88 24.21 22.84 34.79 35.14 80.12 59.08 88.36 37.72 34.04 16.40 21.03 36.78 32.96 27.74 10.85 15.20 73.86 59.12 27.94 65.92 45.80 35.23 23.03 28.44 93.81 65.36 54.13 21.14 32.41 32.41 37.44 34.49 37.43 45.06 40.44 47.85 9.03 20.73 16.13 9.93 0.93
-A178FA35a March 23 2015 12_35.obj 95.21 83.43 15.87 32.79 32.76 21.23 20.81 34.37 38.95 42.68 44.52 19.98 20.81 38.82 39.67 52.94 52.29 39.86 41.95 97.76 23.62 19.90 37.61 25.76 24.83 24.18 95.34 16.44 32.09 33.42 136.89 97.13 134.03 38.08 67.56 70.38 23.42 22.87 98.65 94.54 84.16 23.06 22.66 25.76 41.88 93.09 6.60 93.93 96.40 94.40 94.36 71.54 70.06 33.84 33.94 96.40 13.50 38.29 39.74 19.05 20.40 12.43 12.36 53.17 86.44 93.32 39.98 40.92 93.67 93.62 110.29 94.22 71.53 100.08 120.17 12.47 10.49 24.01 25.39 67.31 70.71 91.87 154.80 48.44 49.51 62.48 62.48 89.64 30.92 31.66 35.62 35.34 39.86 93.60 93.32 16.14 16.18 26.47 28.49 33.56 36.82 97.13 86.44 96.40 41.88 53.17 21.28 25.39 43.69 32.79 32.76 10.49 20.80 95.63 52.59 13.20 59.39 49.51 33.94 20.81 25.76 83.00 57.24 52.29 24.18 32.29 45.95 47.60 46.32 48.76 49.88 51.28 45.07 9.89 21.43 14.71 11.69 0.30
-A179FG36 March 23 2015 12_18.obj 91.94 87.67 18.47 26.23 32.27 24.39 24.49 38.83 39.18 48.47 49.38 24.45 24.49 40.88 41.40 50.94 50.40 39.20 39.50 90.99 23.56 18.64 36.05 28.48 28.36 28.34 89.14 14.15 39.08 39.00 137.64 92.04 135.60 30.87 69.20 75.24 26.09 25.16 100.24 101.15 72.92 25.78 25.98 28.48 37.03 95.43 12.45 86.07 105.53 103.13 105.24 69.90 69.88 37.87 38.11 105.53 25.00 47.90 48.56 24.60 24.37 8.76 11.09 34.26 71.81 97.68 39.33 40.27 99.64 99.03 109.14 103.17 70.33 97.51 121.76 11.19 10.13 26.22 25.18 65.28 67.12 84.01 157.61 58.27 59.84 64.12 64.12 76.41 36.72 36.37 37.38 37.38 40.13 86.86 97.68 16.67 16.76 33.57 30.39 36.59 38.64 92.04 71.81 105.53 37.03 34.26 19.05 25.18 38.90 26.23 32.27 10.13 19.90 92.23 56.94 24.90 63.74 59.84 38.11 24.49 28.48 88.93 60.45 50.40 28.34 28.35 44.92 41.88 42.81 49.00 53.65 51.53 53.96 10.01 20.37 16.70 12.18 1.35
-A181FA38a March 23 2015 12_43.obj 86.93 82.29 17.13 33.06 28.59 21.67 22.35 35.37 34.57 41.86 42.15 21.67 21.48 41.24 42.41 51.22 49.54 39.62 39.52 80.88 23.73 19.35 35.76 26.72 26.28 25.52 77.94 11.73 34.75 34.09 143.52 79.86 130.45 32.84 65.17 70.56 23.61 22.93 97.06 93.24 67.13 23.80 23.08 26.72 38.55 91.34 12.29 81.98 99.92 98.29 98.85 67.06 66.38 34.50 33.60 99.93 24.50 41.15 41.61 20.69 21.38 10.93 10.70 37.27 71.01 91.88 39.04 40.22 93.32 92.58 102.08 96.88 65.84 96.37 116.84 11.02 9.51 23.67 23.87 65.29 67.04 83.15 155.21 51.83 53.17 60.09 60.09 72.12 33.48 32.59 36.35 35.14 31.75 84.41 91.88 16.34 15.45 29.24 28.27 33.35 37.21 79.86 71.01 99.92 38.55 37.27 19.39 23.87 38.69 33.06 28.59 9.51 14.50 87.91 53.31 24.58 60.11 53.17 33.60 21.48 26.72 83.26 56.54 49.54 25.52 31.10 43.75 40.60 43.02 43.75 50.78 47.82 52.05 9.59 18.17 16.38 12.03 0.70
-A182FP32 March 23 2015 12_48.obj 99.40 102.49 22.12 29.49 31.16 24.46 22.73 44.26 42.98 55.68 54.86 23.11 22.73 51.90 56.31 62.83 62.35 48.13 48.65 104.61 23.19 18.59 45.50 33.60 36.52 35.01 96.44 13.34 41.11 40.96 152.08 106.02 150.25 36.96 80.37 87.84 28.38 28.38 108.18 105.96 87.81 27.87 27.62 33.60 37.57 104.58 14.18 101.23 118.70 111.16 118.68 81.81 81.28 44.04 42.79 118.71 28.00 55.65 54.87 22.82 22.84 14.67 11.63 40.89 78.29 113.98 52.88 55.26 116.02 115.46 121.12 112.97 82.03 108.18 138.22 12.95 12.12 25.48 24.61 81.88 82.46 88.33 174.54 67.56 66.39 75.29 75.29 88.78 39.50 38.80 43.81 43.86 41.21 91.68 113.98 17.99 17.56 37.79 40.24 43.20 44.65 106.02 78.29 118.70 37.57 40.89 23.49 24.61 37.64 29.49 31.16 12.12 21.70 96.12 65.87 28.35 72.67 66.39 42.79 22.73 33.60 102.34 68.74 62.35 35.01 38.10 49.74 41.89 46.87 52.41 59.57 58.35 60.31 11.48 21.71 14.81 14.62 1.49
-A183FA24 March 23 2015 01_11.obj 84.68 84.31 17.08 33.58 30.29 23.05 23.04 34.67 36.41 45.51 47.86 23.54 23.04 43.54 44.03 51.44 49.06 38.02 38.63 90.09 24.08 19.81 37.58 26.71 29.87 28.11 87.07 11.86 37.26 37.78 133.90 90.65 130.40 31.92 67.22 68.94 24.48 23.80 97.00 96.43 72.07 24.33 24.20 26.71 38.76 87.31 12.49 89.34 96.52 94.00 95.22 69.31 68.72 34.60 35.34 96.52 25.00 45.68 47.32 21.98 22.81 10.90 10.66 34.55 72.58 93.93 42.89 41.48 94.69 94.41 106.72 90.64 67.77 99.05 118.26 11.34 11.61 24.27 24.49 65.65 66.61 81.31 154.23 56.14 55.94 62.14 62.14 77.39 33.86 33.64 37.15 35.86 35.98 82.95 93.93 16.35 17.20 31.61 30.26 34.08 34.86 90.65 72.58 96.52 38.76 34.55 21.15 24.49 38.47 33.58 30.29 11.61 18.10 85.32 54.32 24.97 61.12 55.94 35.34 23.04 26.71 85.36 58.65 49.06 28.11 28.90 43.55 39.34 42.70 41.88 46.97 46.86 49.61 9.63 17.15 15.54 12.30 0.48
-A184FA24 March 23 2015 01_02.obj 88.72 83.82 17.71 34.45 30.98 23.33 24.31 39.35 37.93 48.23 49.34 23.46 24.31 45.30 45.00 51.00 50.58 37.34 37.82 96.95 23.45 19.37 38.89 27.57 31.34 30.49 95.66 12.69 37.93 38.79 135.71 97.74 131.14 33.14 66.10 70.18 26.00 25.56 96.79 95.35 76.40 25.76 25.51 27.57 38.22 90.54 12.25 93.81 97.09 95.88 96.93 67.84 67.46 37.09 36.69 97.09 24.50 47.34 49.00 22.60 23.80 10.86 10.72 36.18 75.32 93.68 45.30 43.64 94.74 94.34 110.96 95.05 67.07 102.63 117.75 11.20 11.01 24.69 25.73 65.77 67.44 83.97 153.03 56.72 58.46 61.02 61.02 82.91 34.57 33.89 35.98 36.00 37.97 86.23 93.68 15.61 16.48 32.75 31.85 34.83 35.35 97.74 75.32 97.09 38.22 36.18 21.07 25.73 39.27 34.45 30.98 11.01 21.00 89.15 54.69 24.50 61.49 58.46 36.69 24.31 27.57 85.18 57.60 50.58 30.49 30.34 44.93 41.24 44.92 43.69 48.24 46.26 50.80 9.86 19.33 15.98 13.24 0.66
-A185FL40 March 23 2015 01_07.obj 101.10 93.13 18.06 33.11 33.39 25.83 27.41 44.67 45.42 59.00 59.55 25.83 25.54 49.29 47.63 54.43 55.12 41.14 41.91 98.73 25.12 18.59 41.56 28.90 35.58 33.55 95.57 17.97 44.01 45.32 143.76 98.92 143.13 34.67 75.06 83.51 27.30 26.74 104.85 104.54 83.95 26.98 26.55 28.90 39.59 104.69 13.07 97.53 119.53 115.95 118.98 75.60 75.70 43.92 43.82 119.52 26.00 58.22 59.04 25.92 25.81 11.80 9.26 38.70 85.18 103.96 45.88 47.63 105.44 105.32 118.43 118.06 75.93 106.75 128.84 12.80 11.00 25.83 25.84 73.06 73.35 97.50 166.65 69.68 72.90 69.98 69.98 86.30 40.48 40.96 40.89 40.95 40.42 99.64 103.96 16.70 16.08 37.02 37.15 40.18 43.33 98.92 85.18 119.53 39.59 38.70 21.72 25.84 39.90 33.11 33.39 11.00 21.00 100.80 59.90 26.15 66.70 72.90 43.82 25.54 28.90 94.70 65.81 55.12 33.55 32.90 51.98 47.59 50.25 50.71 62.84 56.64 62.84 10.83 22.34 17.74 14.16 1.36
-A186FR23b March 23 2015 01_34.obj 81.60 101.01 20.56 31.49 27.09 24.06 22.27 36.28 35.71 43.30 43.11 22.56 22.27 48.88 42.13 57.63 57.09 43.99 45.52 84.59 22.85 18.72 37.24 30.85 23.08 23.43 82.18 12.91 35.17 35.05 141.15 85.96 147.25 32.69 80.46 74.07 22.22 21.41 108.23 108.23 70.87 21.50 20.90 30.85 36.84 83.71 11.34 83.84 93.17 92.48 92.73 81.17 80.96 35.53 35.66 93.17 22.50 42.99 43.19 21.97 22.25 13.76 13.71 38.41 67.40 111.30 45.29 38.27 111.91 112.47 99.47 92.22 83.03 92.71 136.05 10.94 11.04 25.87 26.81 72.37 73.99 76.45 171.29 50.57 50.64 75.38 75.38 70.86 32.23 32.37 43.58 42.17 30.94 79.11 111.30 14.97 14.68 25.74 24.67 37.11 36.97 85.96 67.40 93.17 36.84 38.41 18.94 26.81 41.62 31.49 27.09 11.04 16.00 81.63 63.27 22.68 70.07 50.64 35.66 22.27 30.85 99.89 69.04 57.09 23.43 34.52 41.61 37.44 38.83 42.60 48.88 42.35 50.78 10.29 19.96 16.93 12.24 1.17
-A187FL25 March 23 2015 01_24.obj 76.86 90.27 17.70 25.04 28.49 21.73 21.85 34.90 34.88 42.50 42.56 21.80 21.85 37.20 35.56 54.85 53.14 42.72 43.66 84.03 20.76 18.70 35.20 26.68 24.93 23.23 80.63 15.26 33.36 33.56 134.49 83.00 137.42 30.66 72.57 67.79 22.15 21.58 101.73 99.34 61.52 21.74 21.64 26.68 35.60 83.59 13.09 81.94 91.38 89.42 90.24 73.79 73.54 34.55 34.45 91.37 26.50 42.41 42.46 20.70 21.67 11.41 11.38 35.64 62.68 99.25 36.34 34.25 100.66 100.34 101.11 89.79 72.73 91.56 124.60 11.29 10.93 24.71 25.36 68.44 69.81 73.33 160.57 50.12 50.45 67.49 67.49 71.73 32.07 31.52 38.23 37.86 35.65 75.09 99.25 15.15 15.19 26.62 26.48 33.27 34.52 83.00 62.68 91.38 35.60 35.64 16.16 25.36 39.92 25.04 28.49 10.93 17.50 78.59 56.66 26.18 63.46 50.45 34.45 21.85 26.68 90.33 63.65 53.14 23.23 31.38 40.77 34.26 38.87 37.85 46.73 45.62 45.70 8.97 20.79 15.53 10.66 1.10
-A188FA28a March 23 2015 03_02.obj 120.20 88.54 10.32 33.85 33.88 27.32 27.45 48.45 47.68 63.94 64.79 27.56 27.45 67.58 65.33 59.39 70.09 40.65 51.95 113.20 33.55 20.51 42.49 29.14 39.66 38.99 114.57 16.80 48.53 47.23 154.70 114.64 144.81 40.02 78.21 89.59 30.80 30.68 104.96 102.81 103.83 29.76 30.36 30.01 44.09 117.50 14.50 106.06 124.42 120.87 122.87 80.15 79.74 47.44 47.93 124.42 28.96 63.54 65.01 27.85 27.96 9.54 9.54 42.77 96.09 107.36 66.95 65.33 109.41 108.84 129.29 122.28 78.37 115.87 130.74 12.59 11.15 32.51 30.96 76.47 89.24 117.27 171.74 75.01 78.27 73.13 73.13 95.78 45.51 44.13 42.71 41.41 41.79 116.02 107.69 19.60 21.06 41.23 40.36 45.53 44.06 114.64 96.09 124.42 44.09 42.77 28.81 30.96 39.96 33.85 33.88 11.15 28.20 115.45 61.51 28.64 68.31 78.27 47.93 27.45 29.14 97.82 68.67 70.09 38.99 38.43 60.12 55.86 59.70 60.30 61.78 60.90 63.48 18.82 23.15 22.11 17.15 1.16
-A189FA31a March 24 2015 03_45.obj 123.17 81.97 10.58 38.50 39.57 23.82 25.08 45.69 45.59 63.00 64.67 23.82 24.23 48.19 52.44 50.05 50.88 35.98 37.28 119.33 22.84 19.77 46.04 25.18 36.49 37.87 113.56 16.19 44.52 44.91 140.94 118.83 135.39 34.47 71.39 81.74 28.61 28.90 100.83 98.49 104.94 28.05 28.96 25.18 39.39 122.18 9.03 114.86 125.11 122.88 122.68 72.89 72.36 46.48 48.36 125.10 18.00 63.66 65.64 24.10 24.39 8.64 8.64 37.94 111.03 96.57 47.85 50.37 96.97 96.97 130.02 122.34 73.64 117.85 121.15 14.67 13.13 27.24 27.80 67.80 71.60 120.07 155.56 73.79 76.71 66.31 66.31 106.86 43.41 42.97 37.42 36.73 49.59 120.40 96.57 15.29 16.47 37.99 39.36 39.27 42.47 118.83 111.03 125.11 39.39 37.94 24.83 27.80 45.55 38.50 39.57 13.13 22.20 122.16 54.76 18.05 61.56 76.71 48.36 24.23 25.18 87.93 62.75 50.88 37.87 29.16 63.85 56.48 64.06 59.02 62.85 62.85 62.21 14.60 19.57 13.18 14.78 0.40
-A190FA32a March 25 2015 10_45.obj 96.97 97.36 17.61 30.88 32.89 23.04 23.56 39.72 39.51 51.05 51.48 23.04 23.56 44.58 48.34 58.14 58.28 44.12 43.92 101.33 26.19 18.81 40.40 30.66 28.13 29.60 94.90 12.23 39.78 40.38 144.03 99.37 149.32 34.69 79.75 79.86 25.65 26.93 108.39 106.13 80.72 25.89 26.02 30.66 39.27 97.43 15.08 96.68 106.72 99.92 104.84 81.02 80.63 38.33 38.48 106.75 30.50 49.40 50.92 22.60 23.43 13.85 13.69 39.66 79.11 110.41 42.88 45.26 111.70 111.19 114.76 104.23 79.90 103.00 133.57 12.59 10.78 28.80 25.54 75.56 76.49 89.09 170.64 62.50 62.65 74.67 74.67 81.51 37.29 36.04 42.23 41.97 41.55 92.55 110.41 17.95 17.91 31.18 31.63 39.19 40.67 99.37 79.11 106.72 39.27 39.66 23.54 25.54 38.51 30.88 32.89 10.78 22.90 93.81 62.77 30.16 69.57 62.65 38.48 23.56 30.66 99.03 68.38 58.28 29.60 35.13 47.45 45.06 47.40 49.47 52.69 50.82 55.86 13.05 24.94 17.32 13.91 0.78
-A191FA43 March 25 2015 12_15.obj 101.52 82.60 12.61 33.04 31.37 19.09 20.59 36.88 37.23 42.71 43.41 19.09 19.88 46.85 48.40 53.96 52.93 39.99 40.43 102.82 24.06 19.43 39.92 31.14 29.71 27.57 96.81 14.92 33.49 34.02 146.63 99.94 139.20 32.34 70.00 80.63 27.36 25.43 101.59 99.29 91.15 26.25 24.05 31.14 38.19 101.22 7.15 97.62 103.11 102.68 101.60 71.96 71.27 36.33 36.38 103.23 10.50 42.46 42.82 19.19 20.01 12.77 12.77 37.25 89.83 101.13 44.34 47.30 101.73 101.66 112.80 101.96 75.31 101.25 125.00 11.02 10.74 26.90 26.44 69.95 70.72 102.85 164.29 52.43 53.93 64.92 64.92 88.64 33.50 34.04 38.23 38.58 39.02 100.10 101.13 16.93 15.98 32.43 30.84 40.33 40.29 99.94 89.83 103.11 38.19 37.25 21.54 26.44 40.17 33.04 31.37 10.74 20.90 103.19 57.82 14.30 64.62 53.93 36.38 19.88 31.14 88.36 57.22 52.93 27.57 33.18 48.00 52.05 48.68 52.67 52.69 51.91 51.16 18.53 18.85 15.98 13.18 0.52
-A192FA28 April 15 2015 10_12.obj 100.03 94.40 20.10 32.20 32.24 25.32 25.48 41.99 42.20 54.13 54.85 25.33 25.48 48.32 49.12 57.29 56.26 42.21 42.46 98.19 23.92 19.39 39.45 31.43 34.57 33.42 95.74 15.65 41.74 41.11 150.13 98.25 145.68 33.76 74.30 84.28 28.05 27.22 107.11 105.97 79.86 27.41 26.53 31.43 39.69 102.72 13.26 95.79 117.98 113.20 117.98 75.10 74.80 39.96 40.38 117.98 26.50 53.00 53.97 25.59 25.62 9.31 9.31 37.63 80.39 105.73 46.26 47.17 107.37 107.42 115.25 115.28 75.85 105.09 131.76 12.44 13.25 25.31 24.59 73.48 75.07 93.52 167.53 63.82 66.83 69.22 69.22 84.65 39.05 39.13 40.82 40.76 44.05 95.78 105.73 17.94 17.29 34.06 35.02 41.78 42.50 98.25 80.39 117.98 39.69 37.63 22.63 24.59 41.17 32.20 32.24 13.25 20.90 98.71 62.04 26.51 68.84 66.83 40.38 25.48 31.43 96.43 64.99 56.26 33.42 32.90 51.31 44.42 48.70 51.20 59.84 58.27 59.67 11.33 21.80 16.22 14.59 1.69
-A194FA34b April 16 2015 01_58.obj 88.90 100.93 16.44 35.30 28.95 24.74 24.90 41.51 41.29 50.59 49.86 24.62 24.90 49.20 51.45 56.28 56.74 45.59 45.13 86.38 25.62 19.79 47.30 27.81 25.12 25.88 87.97 15.09 39.80 39.14 147.00 89.06 149.66 34.64 84.50 70.76 23.25 25.35 112.93 109.81 75.74 23.46 24.57 27.81 38.24 92.04 13.66 86.89 95.45 93.91 94.46 85.38 85.47 38.94 38.86 95.47 27.50 49.91 49.18 23.88 24.62 12.67 12.45 41.70 75.20 112.31 48.27 52.63 113.02 112.81 110.87 93.30 84.65 101.22 138.37 14.37 14.39 23.90 27.48 76.31 76.70 84.62 172.94 57.56 56.66 79.42 79.42 80.24 37.69 36.59 45.25 44.59 44.14 86.21 112.31 15.41 16.72 25.73 27.15 34.57 36.19 89.06 75.20 95.45 38.24 41.70 20.50 27.48 40.19 35.30 28.95 14.39 19.20 88.15 63.15 27.31 69.95 56.66 38.86 24.90 27.81 102.70 74.89 56.74 25.88 34.19 44.90 41.23 40.69 48.09 50.33 47.17 48.23 11.37 16.83 17.88 12.75 0.50
-A195FR23 April 16 2015 02_05.obj 87.17 90.27 17.82 32.25 29.46 24.48 24.70 37.73 51.18 45.99 52.87 24.49 24.70 39.14 41.40 52.78 53.56 40.77 41.76 88.16 18.50 18.53 37.70 27.35 27.03 25.78 82.18 11.98 37.62 37.88 140.44 86.46 139.15 31.21 72.45 70.14 22.36 22.77 104.81 102.99 69.10 22.10 22.63 27.35 37.63 91.19 12.57 86.50 100.53 97.74 99.18 73.25 73.57 35.63 35.65 100.53 25.00 44.79 45.40 22.88 24.29 11.56 11.48 37.19 73.83 99.81 39.07 40.22 100.73 100.41 104.63 96.38 73.15 95.83 127.88 12.23 10.93 22.04 21.58 68.40 69.29 82.75 164.73 53.39 54.85 67.37 67.37 73.71 34.68 35.01 39.50 40.60 36.21 84.09 99.81 15.09 15.74 28.84 28.87 34.35 35.79 86.46 73.83 100.53 37.63 37.19 16.62 21.58 40.50 32.25 29.46 10.93 16.20 88.06 57.16 25.14 63.96 54.85 35.65 24.70 27.35 90.65 63.30 53.56 25.78 31.71 44.06 39.96 43.93 43.14 50.15 46.98 53.50 9.54 18.49 14.63 12.44 0.61
-A196FA50 April 16 2015 02_12.obj 95.90 97.41 19.41 25.93 30.40 25.47 25.28 37.76 38.66 44.50 47.25 25.48 25.28 48.02 44.47 57.24 56.64 41.89 44.23 93.67 23.84 19.08 37.80 32.09 31.56 29.21 89.56 13.33 37.86 37.94 144.18 93.12 148.65 34.01 78.00 84.74 25.07 26.21 109.38 108.74 78.21 24.86 25.73 32.09 37.06 96.70 13.05 89.07 101.29 99.28 101.23 79.10 78.84 37.61 36.71 101.29 26.00 44.70 45.32 24.05 25.21 12.38 12.18 37.58 77.63 110.09 45.27 42.73 111.97 111.06 113.51 101.29 79.89 102.14 134.64 11.57 12.54 26.00 27.31 73.08 74.71 86.71 172.41 57.59 57.65 72.92 72.92 75.54 36.20 35.51 42.63 41.58 41.42 90.09 110.09 15.93 16.16 33.57 32.25 41.27 43.47 93.12 77.63 101.29 37.06 37.58 19.40 27.31 41.33 25.93 30.40 12.54 21.40 92.73 64.33 26.11 71.13 57.65 36.71 25.28 32.09 100.51 68.42 56.64 29.21 33.84 48.78 41.25 48.25 47.54 50.77 50.47 50.78 12.68 25.99 17.89 13.39 0.97
-A197FA34 April 16 2015 02_26.obj 111.57 88.13 16.84 35.89 35.00 28.24 28.08 43.56 42.33 51.72 51.65 28.28 28.08 46.66 48.29 53.27 52.47 38.60 38.92 108.24 26.09 18.44 40.63 28.98 31.19 32.41 106.49 13.78 41.90 41.44 153.72 110.96 143.94 34.53 71.28 78.04 27.72 28.13 106.61 105.55 89.64 26.62 27.69 28.98 42.32 108.04 7.66 101.61 112.74 111.86 110.80 72.64 72.52 41.92 40.67 112.73 15.50 50.71 50.67 25.40 26.05 14.60 14.05 39.96 93.86 100.27 44.02 46.18 101.43 101.11 121.28 111.96 75.60 108.29 127.78 11.93 10.86 32.32 31.44 70.92 69.95 105.58 165.80 61.97 62.48 66.20 66.20 88.05 40.54 38.87 39.61 39.39 40.86 107.47 100.27 16.51 18.20 33.47 34.16 37.73 40.31 110.96 93.86 112.74 42.32 39.96 21.90 31.44 47.70 35.89 35.00 10.86 22.00 110.71 57.85 15.33 64.65 62.48 40.67 28.08 28.98 91.06 62.08 52.47 32.41 30.85 57.28 50.13 56.86 54.55 56.70 58.11 54.59 12.14 19.62 18.20 13.87 0.84
-A198FA19b April 16 2015 03_41.obj 81.26 90.65 16.13 37.31 26.84 26.95 27.31 37.21 37.53 41.91 43.27 27.00 27.31 43.86 45.56 55.30 65.01 43.18 52.69 82.56 23.42 19.19 40.45 25.74 24.02 24.71 81.69 14.41 34.65 36.89 133.17 83.68 142.18 31.98 74.52 65.12 23.35 25.73 102.33 101.86 67.58 22.82 23.76 25.74 39.93 85.25 12.62 85.87 93.49 91.36 91.59 75.81 76.23 35.32 35.91 93.50 25.50 40.98 42.84 24.88 26.40 14.04 11.55 37.70 68.76 100.26 35.35 38.25 101.02 101.09 101.90 90.84 74.68 98.68 127.19 10.72 11.16 24.08 25.99 72.12 80.94 75.94 164.73 49.19 49.69 69.44 69.44 70.52 33.31 34.10 39.22 38.44 31.61 78.28 100.26 16.31 16.67 26.12 26.81 31.81 33.32 83.68 68.76 93.49 39.93 37.70 18.28 25.99 42.35 37.31 26.84 11.16 16.70 82.25 56.54 25.24 63.34 49.69 35.91 27.31 25.74 91.11 65.37 65.01 24.71 33.85 37.61 40.61 41.83 39.33 46.34 44.34 49.09 9.61 19.69 18.00 12.20 0.83
-A200FA21 April 16 2015 03_10.obj 81.34 96.08 20.56 30.31 30.55 23.99 26.09 38.60 39.05 49.35 50.10 23.99 25.22 41.24 40.93 51.91 51.91 40.36 41.73 90.74 22.65 19.44 40.33 30.45 27.18 25.65 87.24 13.87 38.23 37.82 143.97 89.62 144.29 32.10 75.52 76.01 23.26 23.42 109.55 106.74 68.83 22.87 23.10 30.45 38.40 89.70 14.97 86.64 106.41 96.67 104.08 76.64 76.27 38.29 37.78 106.41 29.50 49.27 49.73 24.22 25.52 11.12 11.12 36.63 67.13 105.97 37.93 39.33 107.43 107.14 108.35 105.35 75.68 96.47 131.95 12.40 10.81 25.21 22.85 68.77 70.02 75.54 166.77 59.55 59.42 70.44 70.44 75.27 37.20 36.07 41.02 40.57 40.19 77.88 105.97 16.15 16.53 28.55 28.54 36.64 39.37 89.62 67.13 106.41 38.40 36.63 19.18 22.85 39.31 30.31 30.55 10.81 20.30 81.88 60.66 29.95 67.46 59.42 37.78 25.22 30.45 94.85 64.40 51.91 25.65 31.94 39.75 38.07 39.52 41.68 54.60 52.39 53.96 9.89 26.77 16.02 12.02 1.17
-A201FA19 April 16 2015 03_50.obj 89.38 98.63 20.00 32.58 29.50 29.21 31.44 40.09 40.71 48.18 48.42 29.21 29.89 38.86 43.73 57.91 56.55 44.99 45.16 88.37 23.34 18.93 36.72 30.17 25.11 25.52 83.57 10.91 39.38 39.25 143.34 87.84 147.51 32.16 78.64 77.05 22.75 22.98 111.82 109.53 69.34 22.68 22.38 30.17 39.94 93.23 13.66 84.97 106.15 101.28 105.76 79.82 79.62 37.27 37.64 106.15 27.50 46.41 46.78 27.48 27.74 14.84 14.42 36.53 69.80 108.81 37.65 40.95 109.75 110.02 105.25 103.24 79.54 95.25 135.53 10.61 10.52 23.85 23.71 72.80 73.65 83.01 174.32 58.29 58.68 73.56 73.56 74.55 36.06 35.56 43.71 42.13 36.20 86.02 108.81 16.79 17.02 29.79 30.08 37.15 39.89 87.84 69.80 106.15 39.94 36.53 19.96 23.71 42.64 32.58 29.50 10.52 16.90 89.50 62.66 27.32 69.46 58.68 37.64 29.89 30.17 99.13 68.95 56.55 25.52 33.11 44.73 41.25 42.27 46.98 55.23 47.62 58.48 10.18 21.99 15.91 12.44 1.21
-A202FA21 April 20 2015 12_37.obj 94.73 91.06 16.81 29.91 35.10 26.41 27.26 41.13 40.21 49.24 48.69 26.41 26.30 44.79 42.90 55.61 54.23 42.09 41.36 98.44 21.31 19.22 36.32 26.68 31.16 28.81 97.21 10.76 39.80 39.12 144.37 101.04 142.96 33.58 74.25 68.01 26.26 26.23 109.04 109.08 81.75 26.86 25.78 26.68 42.63 96.01 11.01 92.98 106.47 106.04 106.44 75.15 74.90 39.31 38.78 106.47 22.00 47.90 47.60 25.86 26.62 12.15 9.45 36.47 84.74 100.92 43.90 44.06 101.76 101.79 115.76 104.81 75.72 100.71 132.16 11.48 11.08 24.75 22.55 70.73 69.55 90.91 170.21 59.03 58.09 69.17 69.17 83.14 38.35 37.65 40.06 40.08 42.00 91.51 100.92 17.02 16.99 34.32 33.12 33.50 34.51 101.04 84.74 106.47 42.63 36.47 17.95 22.55 43.67 29.91 35.10 11.08 19.90 95.22 57.18 22.02 63.98 58.09 38.78 26.30 26.68 91.47 64.79 54.23 28.81 31.17 45.13 46.33 47.05 47.58 54.59 49.52 56.91 9.87 18.23 16.66 13.12 0.87
-A204FA20a April 20 2015 12_29.obj 81.56 85.28 19.44 30.15 27.22 26.38 27.90 37.02 36.77 43.31 44.53 26.50 27.90 44.05 40.78 53.22 53.21 41.07 41.86 82.38 24.91 19.34 38.69 29.04 29.10 26.93 78.22 12.43 36.29 37.86 140.60 80.44 135.35 31.51 65.84 71.89 24.62 23.90 97.68 95.78 64.60 23.85 24.39 29.04 39.44 85.32 13.36 83.90 98.49 94.15 97.40 67.40 66.87 35.75 37.26 98.49 26.50 42.36 43.14 25.17 26.50 11.93 9.24 35.95 65.81 94.89 38.52 38.83 96.13 96.03 102.33 96.63 66.58 96.11 120.24 11.17 9.72 23.24 23.13 68.69 69.85 76.30 157.04 53.19 53.54 60.76 60.76 71.79 35.26 35.02 35.89 36.29 33.66 78.59 94.89 16.73 16.14 28.91 29.32 35.34 36.55 80.44 65.81 98.49 39.44 35.95 20.48 23.13 36.86 30.15 27.22 9.72 17.00 82.42 56.85 26.73 63.65 53.54 37.26 27.90 29.04 87.91 58.86 53.21 26.93 31.82 39.83 38.70 40.22 41.23 48.24 49.39 49.05 9.60 22.93 16.64 12.17 1.14
-A205FA20 April 20 2015 12_46.obj 85.88 95.05 19.88 32.15 30.80 25.20 26.07 38.99 29.10 47.37 36.47 25.25 26.07 43.78 43.91 61.36 55.00 41.70 43.03 91.43 20.73 19.07 29.70 29.94 28.45 27.60 91.24 12.74 37.05 35.92 149.75 93.34 143.01 32.77 75.17 76.40 23.74 24.37 108.60 108.38 73.33 23.40 24.04 29.94 37.90 90.40 14.02 86.00 102.59 96.22 101.33 76.06 75.83 37.91 35.90 102.58 28.00 45.94 45.55 24.28 25.88 12.63 12.56 36.33 69.36 105.11 47.86 43.54 106.49 106.30 109.13 98.58 75.77 95.87 132.53 7.74 9.76 27.35 24.56 70.73 68.56 79.50 175.59 56.68 58.00 70.09 70.09 79.68 36.63 34.54 40.30 40.74 39.64 82.41 105.11 16.32 16.71 30.25 29.72 37.09 39.31 93.34 69.36 102.59 37.90 36.33 17.71 24.56 42.17 32.15 30.80 9.76 19.80 86.14 60.72 28.05 67.52 58.00 35.90 26.07 29.94 95.36 65.42 55.00 27.60 31.78 44.28 38.07 41.28 44.47 52.68 48.89 53.64 10.06 22.22 16.45 13.16 1.19
-A206FA21 April 20 2015 12_52.obj 82.56 94.41 16.19 29.11 30.39 26.20 26.35 36.61 37.12 43.03 43.33 26.17 26.35 36.37 35.85 56.32 57.15 45.60 46.02 80.14 23.80 19.16 35.64 23.76 21.53 22.90 79.61 13.77 36.22 36.46 131.61 81.74 144.96 31.83 78.22 63.45 22.12 22.37 107.48 106.98 64.79 21.92 22.06 23.76 40.79 88.09 11.63 79.60 95.93 95.30 94.34 79.45 78.97 35.89 35.75 95.93 23.00 42.33 42.35 24.67 25.88 12.20 12.16 38.25 69.96 101.98 34.49 35.59 103.32 102.83 103.51 93.19 78.38 94.19 130.80 12.42 11.33 25.33 25.96 72.68 73.05 78.42 168.14 51.73 52.55 73.14 73.14 70.76 34.47 34.30 42.06 41.93 35.87 80.47 101.98 16.14 15.79 26.86 25.19 30.61 32.84 81.74 69.96 95.93 40.79 38.25 16.21 25.96 43.39 29.11 30.39 11.33 17.70 86.28 56.23 23.26 63.03 52.55 35.75 26.35 23.76 92.64 68.88 57.15 22.90 32.04 39.16 41.24 41.82 40.62 46.34 43.78 52.10 7.57 17.35 19.03 11.17 0.85
-A207FA19 April 20 2015 12_33.obj 93.01 95.31 18.29 36.27 30.98 26.94 27.32 41.52 41.84 52.38 53.35 26.98 27.32 47.75 46.89 56.96 54.01 43.50 43.71 95.70 24.80 19.77 45.16 28.48 29.94 28.46 90.77 12.96 41.09 40.81 140.52 94.09 145.10 34.39 77.01 75.56 24.78 24.48 107.30 105.29 78.57 24.76 24.09 28.48 41.40 97.23 12.67 93.53 111.40 107.42 110.69 78.29 77.92 40.88 39.72 111.40 25.50 52.05 52.54 25.87 26.79 12.30 12.26 38.93 79.84 105.49 42.96 41.80 106.60 106.63 114.05 106.02 78.01 103.59 132.01 12.19 12.72 22.68 23.82 74.69 74.70 89.24 168.60 62.79 64.57 71.93 71.93 79.94 39.92 39.55 41.12 41.76 41.51 90.28 105.49 16.04 16.37 31.74 30.52 36.73 38.82 94.09 79.84 111.40 41.40 38.93 22.96 23.82 41.35 36.27 30.98 12.72 19.50 93.16 60.36 25.33 67.16 64.57 39.72 27.32 28.48 96.12 67.65 54.01 28.46 33.06 47.71 42.50 45.94 46.94 55.83 52.96 58.40 10.18 19.52 15.41 13.01 1.14
-A209FA25 April 20 2015 01_08.obj 90.82 94.37 16.82 27.74 30.89 24.62 27.11 38.13 37.95 45.60 45.46 24.62 25.73 42.53 41.05 54.42 55.03 41.36 42.59 88.74 22.98 19.01 36.56 28.25 28.38 25.79 85.74 13.40 37.73 38.83 130.94 88.99 141.82 33.16 77.56 73.60 25.08 23.65 105.19 104.08 74.13 24.45 23.83 28.25 35.56 91.89 12.85 85.69 99.34 96.93 98.76 78.39 78.67 37.02 36.81 99.34 25.50 45.11 45.04 23.79 24.28 11.87 11.75 38.92 72.97 105.81 40.75 41.99 107.16 106.94 103.95 98.29 78.36 93.89 129.02 9.89 7.57 24.81 25.36 69.39 70.43 86.56 165.53 55.67 55.56 72.48 72.48 78.94 35.73 35.82 41.88 41.57 38.04 87.88 105.81 15.88 15.20 28.25 27.96 35.17 38.43 88.99 72.97 99.34 35.56 38.92 19.03 25.36 36.77 27.74 30.89 7.57 19.50 89.82 60.49 25.71 67.29 55.56 36.81 25.73 28.25 96.62 68.36 55.03 25.79 32.43 45.31 42.51 43.58 47.12 50.14 47.49 51.79 11.44 22.28 17.10 12.76 1.13
-A210FL29b April 20 2015 01_03.obj 86.98 82.29 16.38 23.53 29.20 24.14 22.08 37.98 38.30 45.25 44.45 22.82 22.08 39.10 43.32 51.73 49.90 39.18 38.73 86.22 20.39 18.79 35.46 27.24 26.48 25.82 83.03 12.63 37.00 37.58 135.82 85.00 131.21 32.90 65.91 70.23 25.07 24.08 99.54 96.57 69.43 23.58 24.03 27.24 37.49 88.48 11.90 83.18 93.91 92.49 93.53 67.88 68.10 38.04 38.73 93.91 24.00 45.50 44.99 23.04 22.54 10.50 10.50 36.24 73.91 93.15 38.73 40.11 93.84 93.92 103.67 92.49 78.20 93.12 120.06 8.35 11.43 22.29 20.54 64.61 65.81 80.37 157.57 53.85 53.57 60.83 60.83 72.37 35.24 35.58 35.31 34.88 37.70 81.82 93.15 15.60 16.15 30.07 29.88 34.04 36.19 85.00 73.91 93.91 37.49 36.24 18.13 20.54 38.01 23.53 29.20 11.43 18.00 86.18 53.18 23.80 59.98 53.57 38.73 22.08 27.24 82.65 55.41 49.90 25.82 29.76 41.79 39.97 42.49 44.40 48.88 44.93 48.93 10.85 20.30 14.69 12.39 0.78
-A212FA34a April 20 2015 02_04.obj 88.50 92.18 20.08 28.75 31.46 25.87 26.36 40.68 35.71 49.21 44.98 26.05 26.36 40.21 39.55 55.46 53.04 42.19 41.79 86.21 25.28 19.44 37.36 30.73 27.51 24.52 85.56 13.67 38.87 39.48 143.29 88.65 140.28 33.93 72.10 78.73 26.07 23.81 104.81 102.25 74.50 24.06 23.44 30.73 37.29 93.58 14.40 85.10 105.35 99.60 104.44 73.68 73.91 35.89 35.61 105.35 28.50 45.14 45.40 24.78 25.15 11.58 11.54 38.75 74.56 102.83 39.79 38.81 103.93 103.69 104.39 101.36 77.10 98.34 127.04 10.74 11.05 27.50 25.67 69.52 70.10 80.98 164.68 58.74 58.03 67.02 67.02 78.85 35.90 35.02 42.46 40.06 37.89 83.07 102.83 16.78 17.33 27.42 27.21 38.64 40.10 88.65 74.56 105.35 37.29 38.75 19.63 25.67 38.35 28.75 31.46 11.05 18.40 87.84 60.37 28.80 67.17 58.03 35.61 26.36 30.73 93.68 62.96 53.04 24.52 31.84 41.12 41.88 41.68 46.69 53.32 50.79 54.51 10.65 21.95 17.68 12.21 0.86
-A213FA20a April 20 2015 01_51.obj 100.61 88.54 17.33 29.99 34.95 26.75 26.60 42.19 41.18 52.58 53.17 26.63 26.60 46.08 45.77 53.82 54.22 39.48 41.74 103.50 27.66 20.44 41.22 28.72 33.79 30.14 103.58 17.09 41.21 41.27 141.17 105.74 135.79 34.28 71.21 76.14 26.14 26.81 100.63 100.54 89.85 26.04 26.43 28.72 39.92 101.42 12.32 97.65 109.72 107.79 109.62 72.30 72.22 40.65 40.59 109.73 24.50 51.50 53.04 25.90 26.92 11.57 8.82 38.60 90.61 99.93 46.08 44.98 100.69 100.50 121.03 105.83 72.49 107.48 123.41 11.70 11.82 26.82 29.08 71.04 71.29 98.21 158.77 62.81 63.66 66.13 66.13 87.55 40.04 39.69 38.94 39.46 40.17 99.50 99.93 16.42 17.45 35.95 33.57 38.06 38.08 105.74 90.61 109.72 39.92 38.60 22.20 29.08 41.46 29.99 34.95 11.82 24.40 100.66 58.11 24.65 64.91 63.66 40.59 26.60 28.72 91.11 62.39 54.22 30.14 31.93 51.21 48.23 51.65 48.86 53.96 52.09 57.58 11.39 18.65 19.12 13.44 0.57
-A214FA22 April 20 2015 01_57.obj 87.10 94.81 18.18 35.65 29.39 25.54 26.66 38.07 37.68 45.68 45.68 25.55 26.66 44.60 48.54 56.98 56.39 43.03 41.12 90.86 24.65 19.90 39.95 28.10 28.33 29.12 86.90 12.61 36.59 37.98 140.67 90.68 144.23 32.53 76.63 72.74 25.82 25.55 107.21 102.08 68.94 25.23 24.57 28.10 41.53 89.77 13.14 87.82 101.81 97.10 100.30 77.41 77.81 36.11 36.44 101.80 26.50 44.89 44.94 24.33 25.14 12.11 11.98 38.89 68.93 104.73 40.07 54.15 106.22 105.98 105.59 97.25 77.20 97.07 130.74 10.25 8.44 23.70 23.50 72.20 73.50 82.12 167.57 55.25 56.78 71.55 71.55 75.17 35.00 35.22 41.93 41.61 38.42 84.45 104.73 16.12 15.09 28.89 30.19 35.36 37.38 90.68 68.93 101.81 41.53 38.89 24.59 23.50 38.71 35.65 29.39 8.44 18.30 87.58 59.83 26.29 66.63 56.78 36.44 26.66 28.10 95.42 67.32 56.39 29.12 36.03 44.42 39.97 41.96 45.04 49.52 48.27 53.50 9.92 20.45 15.81 14.96 1.25
-A215FA21 April 20 2015 02_10.obj 89.98 85.58 16.77 30.13 31.39 25.18 27.28 40.26 40.73 48.25 49.45 25.18 25.71 43.37 43.02 53.74 50.42 39.13 38.55 90.72 23.89 20.15 33.85 26.77 31.62 29.51 90.97 13.89 37.33 37.78 135.74 92.87 130.82 36.21 68.81 73.48 25.42 26.14 99.00 99.79 73.41 25.17 25.45 26.77 37.96 91.34 11.27 86.62 101.07 100.48 100.98 69.70 69.79 39.26 39.43 101.07 22.50 47.51 48.72 25.44 25.71 11.38 10.95 38.16 73.42 95.58 42.27 43.02 96.90 96.33 112.22 99.45 70.14 99.47 121.50 11.43 9.71 25.86 27.97 68.56 65.41 86.45 158.63 57.83 58.84 63.73 63.73 75.96 36.86 37.24 35.63 35.45 38.70 88.14 95.58 16.94 16.00 32.78 30.88 36.39 37.09 92.87 73.42 101.07 37.96 38.16 16.95 27.97 41.11 30.13 31.39 9.71 21.60 90.26 55.01 22.55 61.81 58.84 39.43 25.71 26.77 86.76 60.00 50.42 29.51 31.83 45.56 42.52 44.12 45.74 50.15 50.67 50.35 10.00 18.84 20.34 13.36 0.75
-A216FA21 April 20 2015 02_16.obj 100.60 92.05 17.78 33.05 34.15 26.47 26.69 36.83 36.81 47.22 48.03 26.49 26.69 45.02 57.23 61.74 55.74 46.24 41.84 106.16 24.75 19.41 37.93 28.20 30.53 29.56 104.08 15.38 37.00 37.78 143.73 106.69 142.13 38.47 74.27 74.98 25.82 25.58 106.27 104.42 83.79 25.55 25.59 28.20 41.37 102.43 12.52 101.22 106.27 105.08 105.98 75.10 75.22 36.59 39.49 106.27 25.00 47.20 48.29 25.14 25.88 14.66 11.55 38.41 86.45 102.46 43.68 55.75 103.14 103.02 117.98 105.17 75.26 102.43 129.12 11.49 11.51 26.88 27.59 77.05 74.08 95.44 163.39 60.61 61.40 69.19 69.19 87.81 35.61 35.46 40.68 39.82 47.40 97.48 102.46 16.82 17.32 32.31 31.51 36.53 38.44 106.69 86.45 106.27 41.37 38.41 22.74 27.59 44.33 33.05 34.15 11.51 23.50 100.63 58.91 25.05 65.71 61.40 39.49 26.69 28.20 93.39 65.19 55.74 29.56 31.99 51.10 46.32 50.73 49.74 52.69 50.13 56.10 10.41 20.61 16.19 13.98 0.56
-A217FA27 April 20 2015 02_22.obj 96.96 85.98 12.68 36.49 33.38 26.12 25.85 42.03 38.60 47.21 44.10 25.97 25.85 42.44 42.73 54.28 52.81 41.46 40.26 100.55 25.94 18.81 41.34 31.24 27.44 26.02 100.70 16.88 36.67 36.23 147.39 103.90 144.01 33.41 73.30 78.25 23.51 24.02 106.04 105.56 80.19 22.91 23.72 31.24 39.14 95.85 12.00 96.32 99.41 98.27 98.97 74.78 74.55 37.07 36.28 99.41 24.00 43.01 42.91 23.88 24.77 14.24 13.70 37.46 81.30 104.54 40.62 42.73 105.52 105.15 114.37 98.70 76.35 104.35 128.85 11.49 11.68 29.23 28.97 72.16 70.24 96.79 165.95 53.28 53.13 68.22 68.22 84.40 35.63 34.38 39.90 40.04 37.66 95.95 104.54 16.17 16.02 29.78 29.79 38.87 39.38 103.90 81.30 99.41 39.14 37.46 20.24 28.97 41.95 36.49 33.38 11.68 20.60 96.14 61.42 24.01 68.22 53.13 36.28 25.85 31.24 95.32 64.09 52.81 26.02 32.12 45.76 50.13 47.94 48.85 50.78 47.95 51.42 18.56 21.07 18.78 12.87 0.61
-A218FS31 April 29 2015 12_15.obj 97.91 100.49 19.32 35.56 33.50 23.26 23.47 38.26 39.01 48.96 49.69 23.28 23.47 46.00 46.01 58.95 59.97 45.06 46.67 99.53 26.04 19.61 41.09 29.85 29.67 28.58 94.53 14.63 38.89 39.75 145.07 98.65 151.49 34.62 81.17 77.81 24.17 24.92 112.72 111.50 81.24 24.10 25.00 29.85 40.63 99.24 13.28 95.72 107.58 103.49 107.23 82.12 81.81 37.70 38.64 107.57 26.50 48.81 49.61 23.20 23.78 14.26 11.70 39.02 83.00 111.02 43.25 44.07 111.89 111.78 116.51 105.14 82.21 105.15 137.10 11.41 11.53 26.29 27.73 75.66 78.46 95.33 175.48 62.46 62.97 76.09 76.09 82.18 35.40 36.03 43.77 43.50 39.41 96.95 111.02 15.54 16.91 30.56 30.24 38.11 39.70 98.65 83.00 107.58 40.63 39.02 21.18 27.73 42.83 35.56 33.50 11.53 19.80 98.01 62.46 26.56 69.26 62.97 38.64 23.47 29.85 99.32 69.48 59.97 28.58 33.74 49.95 46.95 48.96 48.85 55.23 51.04 56.50 10.53 21.72 18.71 13.53 0.76
-A219FA34 April 29 2015 12_23.obj 89.87 87.93 16.85 30.68 32.47 24.69 27.26 40.55 39.16 51.45 51.94 24.69 25.77 42.55 42.64 52.97 54.16 40.46 40.85 94.73 22.96 19.73 35.74 26.17 31.30 29.52 90.36 13.92 38.81 39.77 135.46 94.11 134.55 33.90 71.07 70.52 25.77 25.24 101.66 98.86 77.00 25.24 24.94 26.17 39.55 93.13 12.43 90.25 105.77 102.88 103.76 73.00 72.58 40.76 39.53 105.77 25.00 51.75 52.47 24.09 25.06 11.31 11.31 36.28 78.79 97.25 41.18 43.34 98.09 98.05 108.98 102.10 71.49 98.74 123.40 12.65 9.66 23.53 25.18 68.13 69.48 88.13 158.32 61.13 60.86 65.99 65.99 83.29 38.12 37.86 36.69 36.90 39.89 89.16 97.25 16.32 15.47 31.84 31.34 33.74 36.78 94.11 78.79 105.77 39.55 36.28 21.02 25.18 41.24 30.68 32.47 9.66 20.90 90.27 55.51 24.86 62.31 60.86 39.53 25.77 26.17 88.45 62.28 54.16 29.52 31.76 46.59 42.51 42.83 46.91 52.05 48.89 56.84 9.32 19.69 15.63 13.38 0.80
-A220FA46a April 29 2015 12_36.obj 92.01 89.75 19.53 29.57 31.99 25.85 25.78 39.84 39.68 48.03 48.90 25.94 25.78 46.02 45.42 54.45 53.71 39.66 41.11 97.92 26.50 20.09 37.38 30.43 31.51 30.52 96.30 16.41 39.58 40.08 145.20 99.35 139.47 34.71 70.22 78.39 26.48 26.35 103.04 102.90 78.45 26.45 26.61 30.43 40.69 94.54 13.32 93.09 103.26 99.66 102.96 70.79 70.80 37.96 37.85 103.26 27.00 46.95 48.13 25.19 25.44 11.60 11.42 38.68 79.43 100.65 45.60 46.85 101.56 101.30 115.64 101.05 71.42 103.17 125.76 10.47 10.00 25.36 24.40 69.23 70.41 86.73 165.15 58.37 59.16 65.14 65.14 81.87 36.62 36.58 38.30 39.52 39.05 87.81 100.65 17.37 17.16 33.59 33.83 39.04 39.34 99.35 79.43 103.26 40.69 38.68 21.89 24.40 37.49 29.57 31.99 10.00 21.10 91.15 59.16 26.63 65.96 59.16 37.85 25.78 30.43 91.48 61.05 53.71 30.52 31.98 47.14 40.61 46.08 45.81 51.41 51.16 52.05 10.90 21.80 19.08 14.00 0.65
-A221FA26 April 29 2015 01_18.obj 86.02 88.05 16.02 33.72 30.67 25.78 26.01 39.26 39.10 48.05 48.04 25.80 26.01 48.81 44.57 54.77 54.10 37.35 42.02 93.44 23.12 19.41 34.69 25.89 29.24 27.66 90.08 15.34 37.62 37.70 137.81 93.08 136.11 33.55 72.03 68.01 27.12 26.32 99.37 96.49 74.68 26.08 26.08 25.89 39.49 89.13 11.51 88.12 101.15 99.89 100.29 73.04 73.19 38.04 38.32 101.15 23.00 47.40 47.44 25.29 25.04 11.30 11.38 36.91 74.78 97.93 56.09 41.70 99.09 98.66 106.61 98.53 72.94 96.71 123.45 9.87 10.71 23.11 22.31 68.64 70.82 82.25 158.90 57.52 57.82 66.95 66.95 80.71 36.02 36.30 38.84 38.41 42.81 82.72 97.93 17.46 16.11 30.20 28.66 33.45 34.56 93.08 74.78 101.15 39.49 36.91 21.47 22.31 37.71 33.72 30.67 10.71 21.10 86.65 55.68 23.02 62.48 57.82 38.32 26.01 25.89 89.10 63.20 54.10 27.66 33.86 43.32 39.34 42.75 43.16 50.36 49.06 52.05 9.88 18.95 15.14 13.11 0.73
-A222FA20 April 29 2015 01_35.obj 93.56 92.40 17.86 26.06 31.19 24.37 24.57 37.21 37.29 46.36 46.10 24.29 24.57 42.93 41.23 53.81 53.53 40.21 41.77 91.53 23.57 18.86 42.55 28.30 31.11 27.20 90.91 13.97 36.37 36.65 135.49 93.31 138.94 33.40 74.53 74.59 23.76 24.08 105.17 103.16 73.52 23.78 24.25 28.30 36.70 93.26 12.59 87.50 103.94 101.68 103.51 75.47 75.31 35.77 36.61 103.94 25.50 45.46 45.86 23.47 24.15 14.23 11.87 38.22 75.15 102.84 42.03 40.18 103.84 104.50 113.01 99.54 75.52 99.43 127.38 11.13 10.90 24.89 25.96 69.95 71.43 89.04 163.93 57.56 58.51 69.45 69.45 75.71 34.47 34.88 40.88 39.92 38.90 91.75 102.84 16.18 16.11 32.12 30.35 36.39 38.19 93.31 75.15 103.94 36.70 38.22 18.50 25.96 39.43 26.06 31.19 10.90 17.70 94.01 59.13 25.19 65.93 58.51 36.61 24.57 28.30 93.73 65.43 53.53 27.20 31.98 48.55 43.14 46.16 47.29 53.32 49.49 54.40 10.44 18.45 17.97 12.64 1.66
-A223FA32 April 29 2015 01_43.obj 97.08 95.20 18.76 29.15 32.00 24.93 27.70 41.04 41.81 52.14 52.70 24.93 26.12 49.27 54.02 58.00 58.69 44.20 44.65 103.02 24.42 19.30 41.22 29.19 29.98 32.08 98.01 14.70 41.40 41.91 150.48 100.28 150.25 34.14 76.43 76.68 26.31 26.64 108.91 106.96 77.44 25.89 26.67 29.19 43.17 99.47 12.76 96.39 111.48 108.25 111.24 77.90 77.64 39.31 39.54 111.48 25.50 51.05 51.72 24.53 25.70 12.23 12.19 37.96 81.16 105.63 49.34 51.37 106.94 106.34 116.77 106.84 77.59 103.15 134.72 13.23 11.81 25.91 27.01 75.61 78.29 94.79 171.59 62.46 63.73 71.35 71.35 81.93 38.59 37.93 42.21 42.12 42.69 96.56 105.63 15.62 16.36 33.48 32.37 37.65 39.02 100.28 81.16 111.48 43.17 37.96 23.06 27.01 44.91 29.15 32.00 11.81 21.20 97.69 60.70 25.52 67.50 63.73 39.54 26.12 29.19 96.09 66.90 58.69 32.08 34.83 50.18 46.32 47.51 49.47 54.59 54.00 57.43 10.43 18.96 16.13 14.55 0.72
-A225FR24 May 26 2015 01_22.obj 89.48 86.55 15.82 30.93 30.99 22.87 22.71 36.43 36.11 45.15 44.95 22.94 22.71 42.93 41.11 52.05 49.37 39.67 38.39 91.30 24.83 19.70 38.94 25.58 28.54 26.47 88.10 12.41 35.31 36.23 137.00 91.33 136.89 30.83 70.72 67.80 22.83 23.00 101.51 102.01 74.18 22.63 22.92 25.58 40.97 90.87 11.36 88.38 92.95 92.58 92.60 71.59 71.29 34.18 34.86 92.96 22.50 43.32 44.18 21.51 22.15 13.53 11.15 35.43 76.56 96.30 39.57 38.72 96.92 96.86 107.45 92.22 71.63 99.06 122.76 11.35 10.78 24.96 24.60 67.36 66.87 85.80 159.01 52.49 54.72 65.64 65.64 74.07 32.81 32.72 38.03 37.92 36.34 87.77 96.30 15.35 14.60 30.10 28.64 33.71 34.09 91.33 76.56 92.95 40.97 35.43 20.68 24.60 41.32 30.93 30.99 10.78 19.20 90.08 54.73 22.71 61.53 54.72 34.86 22.71 25.58 87.47 61.89 49.37 26.47 27.98 45.83 41.87 45.07 44.26 48.24 43.03 49.87 9.76 17.19 16.18 11.94 0.56
-A226FA53a May 26 2015 01_34.obj 91.37 88.26 15.37 36.92 31.90 24.16 24.65 35.64 35.86 43.55 41.77 24.20 24.65 42.26 44.33 54.49 50.35 41.34 39.24 94.45 22.67 17.97 39.23 27.15 26.07 27.03 86.42 12.01 33.69 33.52 136.10 93.06 141.69 33.85 72.89 72.78 24.42 24.94 103.76 101.29 76.29 24.16 24.10 27.15 37.61 91.58 11.60 93.27 95.07 94.48 95.05 73.46 73.59 34.54 34.07 95.07 23.00 39.61 40.66 23.10 23.33 11.64 14.30 36.22 79.25 100.04 39.79 42.04 100.93 100.73 110.37 94.85 74.14 102.54 124.63 11.24 10.33 26.53 26.74 71.37 69.11 88.66 161.75 51.04 51.86 67.81 67.81 76.96 32.74 32.19 39.16 39.36 35.44 87.78 100.04 17.23 15.69 28.80 29.62 35.26 37.53 93.06 79.25 95.07 37.61 36.22 18.83 26.74 42.82 36.92 31.90 10.33 16.30 90.06 57.25 23.20 64.05 51.86 34.07 24.65 27.15 91.05 63.91 50.35 27.03 31.67 47.75 39.97 45.65 45.62 49.51 44.33 50.68 11.78 20.98 16.88 12.70 0.69
-A228FA27 May 18 2015 08_33.obj 104.08 90.08 13.13 40.61 32.89 23.26 23.89 37.47 37.96 49.29 50.14 23.36 23.89 58.15 56.22 52.12 55.58 40.19 42.92 108.51 26.32 19.79 51.17 25.23 30.55 32.11 107.09 15.15 38.28 39.57 145.26 107.70 143.09 37.41 76.96 70.92 25.82 25.78 107.19 103.29 88.59 25.36 25.52 25.23 45.69 103.69 10.24 106.45 105.58 105.57 105.55 78.43 78.48 37.82 37.66 105.58 20.50 49.69 50.03 23.49 23.45 9.26 11.75 40.96 91.11 102.18 51.44 48.93 102.75 102.87 123.24 104.72 78.46 110.78 132.00 15.34 12.73 26.54 24.81 73.13 77.00 102.07 166.65 60.87 60.84 71.88 71.88 97.93 35.02 35.03 40.19 40.67 39.29 101.97 102.18 16.04 15.88 35.38 37.48 36.23 34.69 107.70 91.11 105.58 45.69 40.96 24.96 24.81 42.74 40.61 32.89 12.73 20.20 103.56 57.14 20.47 63.94 60.84 37.66 23.89 25.23 92.93 67.70 55.58 32.11 35.00 51.15 50.77 51.94 52.03 53.96 48.83 56.70 12.10 18.26 16.20 14.21 0.69
-A229FA26 May 18 2015 08_39.obj 88.60 96.04 17.96 29.60 28.39 25.96 25.66 40.06 38.68 46.88 46.59 26.01 25.66 43.06 46.84 56.43 56.56 44.71 45.66 84.89 25.85 20.35 38.03 28.03 28.47 27.26 84.15 12.28 39.13 37.51 143.82 85.60 144.84 33.38 78.07 73.01 25.94 23.55 109.14 106.97 68.21 23.97 22.94 28.03 41.45 89.02 11.39 83.90 97.09 96.18 97.09 79.01 78.94 36.18 35.95 97.09 23.00 45.08 44.93 24.85 24.56 10.52 10.39 37.10 69.42 106.10 40.74 45.10 106.94 107.09 103.95 95.23 79.73 94.13 133.69 10.98 11.05 24.41 25.07 71.60 73.91 83.86 169.11 56.57 56.99 72.99 72.99 76.25 35.44 34.92 42.42 41.70 36.20 86.51 106.10 15.48 15.49 29.52 28.70 36.20 36.82 85.60 69.42 97.09 41.45 37.10 20.50 25.07 41.71 29.60 28.39 11.05 19.40 88.95 61.41 22.79 68.21 56.99 35.95 25.66 28.03 98.58 70.56 56.56 27.26 34.16 43.30 43.14 40.77 47.70 51.42 44.36 52.69 10.06 19.02 18.23 12.76 0.99
-A232FA23 May 18 2015 09_38.obj 95.61 97.44 19.14 34.54 32.97 26.28 24.71 28.73 39.15 37.05 49.85 24.75 24.71 47.23 49.66 56.24 57.94 42.19 43.97 103.65 24.22 19.27 44.57 31.50 31.16 30.79 98.55 17.11 37.03 37.54 145.53 102.98 147.44 34.34 78.30 79.40 26.96 27.16 111.83 109.23 80.72 26.29 27.09 31.50 39.81 96.08 14.51 97.68 103.36 98.00 102.85 78.74 78.78 36.59 36.63 103.36 29.00 47.34 48.23 24.44 24.85 12.24 12.19 38.63 81.08 109.80 44.67 46.72 110.40 110.40 117.69 101.03 79.08 104.76 135.50 12.10 12.66 25.16 25.80 74.09 76.66 91.07 171.02 58.08 59.78 73.22 73.22 84.23 34.45 34.39 41.80 41.92 44.84 92.81 109.80 16.54 17.51 33.82 34.45 39.15 40.25 102.98 81.08 103.36 39.81 38.63 23.10 25.80 41.93 34.54 32.97 12.66 22.60 94.80 63.92 29.02 70.72 59.78 36.63 24.71 31.50 100.30 68.80 57.94 30.79 32.81 49.61 43.14 44.63 50.87 53.96 48.09 55.22 12.36 23.61 15.34 13.88 0.60
-A233FA25 May 18 2015 09_43.obj 89.59 93.90 19.28 37.87 30.96 22.04 23.27 34.60 34.13 41.73 41.58 22.04 22.12 45.23 46.97 63.58 55.44 50.88 43.72 94.82 24.09 19.31 44.93 29.40 26.91 26.98 89.33 14.11 33.43 33.97 145.18 93.59 146.25 33.86 74.63 73.60 23.16 23.19 105.22 103.50 73.49 22.58 22.30 29.40 41.26 91.33 12.86 92.49 102.11 99.21 101.88 75.57 75.21 32.77 32.78 102.11 26.00 40.33 40.57 22.27 22.33 11.21 11.21 37.69 73.89 104.03 40.32 40.75 105.03 104.81 109.38 99.40 75.80 101.87 130.62 12.31 12.08 22.73 24.42 81.47 74.74 85.30 168.19 52.21 52.30 69.55 69.55 78.89 31.69 31.54 41.56 41.45 36.72 87.55 104.03 18.11 15.31 28.35 28.82 36.09 37.52 93.59 73.89 102.11 41.26 37.69 21.97 24.42 41.80 37.87 30.96 12.08 18.00 90.00 59.14 25.71 65.94 52.30 32.78 22.12 29.40 92.82 63.42 55.44 26.98 33.79 44.97 42.52 43.35 46.11 50.15 48.86 53.20 10.13 20.51 15.18 12.58 0.78
-A234FA37 May 18 2015 09_57.obj 93.86 100.12 21.07 31.70 30.79 28.10 27.75 39.28 32.59 46.77 39.18 28.34 27.75 48.54 50.87 56.98 58.04 45.19 46.72 98.53 26.72 18.28 48.09 32.92 28.38 28.16 92.75 15.38 40.31 41.23 153.51 96.74 152.70 34.66 79.05 82.47 26.53 26.89 110.09 108.64 78.22 25.51 26.23 32.92 41.25 96.89 13.88 92.90 105.02 101.91 105.02 80.22 79.65 37.97 37.84 105.01 28.00 46.40 46.72 26.92 26.19 10.66 10.44 41.74 76.43 111.97 51.89 44.39 112.57 113.35 115.03 103.27 80.68 106.62 138.74 13.85 13.77 28.14 29.11 78.34 79.50 86.24 174.23 56.72 57.20 73.97 73.97 79.40 37.31 37.46 43.23 43.42 38.98 89.47 111.97 17.82 17.41 30.04 32.53 40.57 41.90 96.74 76.43 105.02 41.25 41.74 22.26 29.11 43.74 31.70 30.79 13.77 19.60 91.77 66.65 27.75 73.45 57.20 37.84 27.75 32.92 104.23 71.31 58.04 28.16 36.95 46.27 43.15 46.95 46.78 53.78 48.88 56.09 11.85 22.92 18.37 13.40 1.38
-A235FA29 May 18 2015 09_48.obj 86.88 98.73 18.55 25.74 30.78 21.25 21.74 34.19 34.64 42.34 42.66 21.27 21.74 41.64 40.44 56.73 56.99 45.04 45.75 93.78 21.70 18.51 40.46 29.26 26.88 25.05 89.43 12.89 33.91 33.78 135.02 93.86 147.20 34.49 80.18 74.70 22.77 22.25 107.37 106.72 72.70 22.60 21.75 29.26 35.95 88.63 12.79 88.05 91.96 91.42 91.89 80.95 80.95 33.54 34.23 91.96 25.50 41.84 42.62 21.30 20.34 12.20 14.59 39.79 70.67 109.43 39.77 38.22 110.38 109.90 110.13 91.64 81.34 96.92 134.19 10.74 11.94 25.40 28.23 74.07 74.38 81.06 170.58 50.61 52.08 75.10 75.10 75.62 31.22 30.63 41.86 41.56 40.52 83.27 109.43 14.74 14.13 29.02 27.07 36.40 38.30 93.86 70.67 91.96 35.95 39.79 17.29 28.23 42.81 25.74 30.78 11.94 21.80 86.81 62.59 25.58 69.39 52.08 34.23 21.74 29.26 99.95 70.70 56.99 25.05 34.81 43.87 39.35 41.06 45.70 49.27 42.35 49.57 10.70 21.26 17.07 12.22 0.47
-A236FA28 May 18 2015 09_52.obj 100.03 92.57 20.18 33.80 31.95 25.81 25.85 38.22 37.97 47.48 47.51 25.84 25.85 46.69 46.84 57.00 55.25 42.20 42.78 101.08 21.51 18.76 41.18 31.03 30.98 30.37 94.86 11.14 39.27 39.11 147.62 100.13 141.80 33.52 72.40 78.82 25.00 24.35 105.48 102.87 80.04 23.98 23.47 31.03 38.37 103.07 13.32 95.61 114.35 109.97 114.31 76.02 74.90 37.89 37.37 114.35 26.50 47.34 47.15 26.04 25.92 9.21 11.57 38.03 81.26 103.43 45.47 43.99 104.37 104.77 113.22 107.90 73.79 102.42 129.18 11.53 12.08 24.84 24.64 72.87 74.27 92.82 165.80 60.37 59.86 67.32 67.32 82.49 36.67 36.59 37.80 40.16 39.49 94.92 103.43 15.88 16.09 33.21 33.84 38.38 40.44 100.13 81.26 114.35 38.37 38.03 21.20 24.64 41.75 33.80 31.95 12.08 18.70 99.18 60.78 26.63 67.58 59.86 37.37 25.85 31.03 94.22 63.19 55.25 30.37 32.50 51.08 43.78 48.85 51.07 55.85 57.81 56.49 10.85 18.72 14.25 13.33 1.34
-A237FD29 May 18 2015 10_02.obj 82.53 94.27 17.81 28.85 29.58 22.89 22.79 33.79 34.49 44.18 44.39 22.88 22.79 43.71 42.86 57.18 54.50 43.54 43.63 89.40 22.08 19.14 39.51 26.91 27.59 25.51 83.95 13.12 35.10 35.45 144.94 87.47 148.43 34.46 76.46 68.30 23.42 23.11 106.87 105.79 68.16 23.33 22.67 26.91 40.52 84.93 12.37 85.37 97.40 94.59 96.07 77.15 76.96 33.00 34.03 97.40 24.50 43.73 44.23 22.67 22.35 11.92 11.76 40.36 70.50 103.37 41.05 39.93 104.32 104.21 105.45 92.50 77.15 96.94 132.06 10.86 10.91 24.75 25.77 72.94 72.56 79.11 168.84 54.95 54.50 71.38 71.38 72.69 30.88 31.26 41.52 40.85 42.27 80.80 103.37 15.41 13.96 28.64 27.93 33.74 34.56 87.47 70.50 97.40 40.52 40.36 18.99 25.77 44.35 28.85 29.58 10.91 19.10 83.45 58.52 24.73 65.32 54.50 34.03 22.79 26.91 94.00 67.09 54.50 25.51 32.86 42.03 38.71 39.92 42.46 46.98 44.99 52.38 9.10 18.58 15.55 12.32 0.83
-A238FA23 May 18 2015 10_09.obj 89.67 90.78 19.84 32.71 31.81 23.02 24.69 36.79 37.42 47.83 48.21 23.02 23.38 45.20 47.49 55.10 52.23 41.61 40.06 98.21 20.57 18.70 39.22 30.19 31.06 28.42 92.91 13.49 35.75 36.42 141.57 97.34 138.36 33.94 70.94 78.41 24.13 24.53 103.38 103.09 77.71 24.08 23.93 30.19 37.32 92.07 14.14 93.90 107.28 99.27 106.41 73.08 72.75 37.09 37.25 107.28 28.50 48.31 48.53 23.40 23.74 9.12 9.12 38.50 75.76 101.13 45.20 45.20 102.82 102.28 113.50 104.43 71.54 100.49 126.97 8.52 11.41 23.94 25.31 70.21 69.57 83.81 164.19 59.68 61.13 65.86 65.86 84.43 35.34 35.96 38.37 38.00 40.72 86.00 101.13 15.82 15.40 33.37 32.98 38.32 40.09 97.34 75.76 107.28 37.32 38.50 18.78 25.31 43.49 32.71 31.81 11.41 19.40 89.66 59.29 28.28 66.09 61.13 37.25 23.38 30.19 92.01 61.82 52.23 28.42 31.36 45.33 40.61 42.13 47.40 53.33 52.72 54.52 10.35 23.00 15.29 13.32 1.15
-A239FA39 May 18 2015 10_13.obj 94.06 94.81 20.12 24.01 31.13 25.98 26.07 42.90 43.23 51.02 50.91 26.02 26.07 48.13 45.53 51.42 51.93 40.22 40.48 88.00 25.41 19.40 39.05 30.97 36.24 30.95 91.10 13.67 38.11 39.16 143.11 91.89 144.81 36.30 74.70 80.83 27.28 25.22 108.91 109.72 78.48 26.57 24.49 30.97 38.37 97.61 14.03 84.68 101.15 99.11 100.93 75.98 76.05 39.29 40.30 101.15 28.00 49.29 49.14 25.33 24.73 10.00 10.21 42.66 78.92 105.67 43.32 43.16 106.40 106.41 109.65 99.44 82.24 96.92 131.14 12.97 9.62 25.90 27.60 67.76 69.23 88.49 165.98 58.80 58.82 69.62 69.62 78.90 37.70 38.38 38.75 38.36 40.22 89.47 105.67 16.06 15.89 43.94 30.78 39.51 41.33 91.89 78.92 101.15 38.37 42.66 19.67 27.60 40.24 24.01 31.13 9.62 20.80 93.32 62.81 28.05 69.61 58.82 40.30 26.07 30.97 98.29 67.32 51.93 30.95 29.46 46.90 42.52 46.68 47.26 52.05 47.52 53.58 10.86 21.17 19.21 13.36 0.74
-A240FA24 May 18 2015 10_19.obj 121.80 88.37 16.26 40.30 38.60 27.67 30.72 42.86 43.10 54.84 55.67 27.67 29.40 58.08 53.24 53.58 55.23 38.64 39.55 124.20 24.71 19.71 48.99 31.54 36.40 37.42 119.57 19.01 43.75 45.11 156.23 125.38 144.81 39.32 72.11 87.71 28.64 29.81 106.83 105.30 103.49 27.85 28.53 31.54 41.77 118.27 7.28 116.36 122.31 118.54 111.60 73.41 73.42 41.42 41.54 122.30 14.50 54.11 54.89 27.15 27.88 13.81 11.50 41.57 106.94 103.65 51.58 53.60 104.53 104.30 133.16 119.48 77.47 117.91 130.78 16.09 12.03 29.85 29.46 74.33 75.30 116.96 166.73 65.11 67.04 67.03 67.03 105.70 39.93 40.53 39.91 39.58 47.07 119.93 103.65 17.75 17.46 39.92 41.51 43.22 44.49 125.38 106.94 122.31 41.77 41.57 23.66 29.46 46.03 40.30 38.60 12.03 25.50 120.00 61.12 14.57 67.92 67.04 41.54 29.40 31.54 94.38 62.85 55.23 37.42 32.46 64.65 55.22 62.06 59.63 58.40 63.24 59.03 15.27 19.27 16.09 14.75 0.65
-A241FA26 May 19 2015 06_57.obj 110.42 89.04 10.52 36.61 39.20 27.95 28.73 40.97 40.53 53.44 53.67 27.93 28.73 55.30 55.96 55.08 57.98 40.60 42.49 119.53 25.97 20.45 45.40 31.98 33.74 33.67 112.37 17.65 42.07 42.90 153.26 119.17 149.37 39.92 78.52 86.04 27.93 28.57 111.40 109.47 96.01 27.89 28.86 31.98 41.33 111.61 13.28 114.21 113.05 110.49 113.04 79.98 79.94 41.55 42.37 113.05 26.50 54.05 55.22 25.90 27.24 13.12 10.40 43.41 96.10 110.49 49.03 51.35 112.04 111.36 129.27 110.92 80.23 115.40 137.05 15.05 15.25 28.11 27.86 75.73 78.39 111.74 172.64 65.99 66.55 73.44 73.44 105.46 37.77 37.85 43.44 42.76 49.94 109.11 110.49 18.75 18.74 37.81 37.44 42.96 43.08 119.17 96.10 113.05 41.33 43.41 23.96 27.86 44.08 36.61 39.20 15.25 22.60 111.78 61.60 26.56 68.40 66.55 42.37 28.73 31.98 102.82 70.85 57.98 33.67 34.69 53.84 55.23 54.16 56.12 56.31 57.16 55.87 21.46 21.66 17.43 15.20 0.86
-A243FA24B May 19 2015 07_06.obj 95.88 94.16 14.69 37.93 30.45 22.66 24.66 37.29 37.56 45.64 47.21 22.66 23.53 45.54 49.56 58.24 55.79 43.70 43.90 102.08 24.01 19.52 41.02 28.98 27.89 27.71 96.04 12.12 34.76 35.18 143.01 102.03 145.45 33.81 79.47 74.21 24.42 24.45 106.66 103.66 89.22 23.29 23.48 28.98 40.55 96.17 13.12 96.62 100.72 98.95 100.42 80.67 80.57 38.09 37.61 100.72 26.00 46.38 47.44 22.58 23.69 14.58 14.38 37.68 82.67 108.45 42.50 55.89 109.19 109.33 113.48 99.04 80.33 102.69 132.86 11.64 10.73 24.13 24.03 74.78 76.16 95.59 170.60 56.11 57.94 74.39 74.39 83.26 34.88 34.97 40.27 40.08 41.66 93.42 108.45 17.22 16.31 32.20 32.15 37.09 37.12 102.03 82.67 100.72 40.55 37.68 24.97 24.03 39.21 37.93 30.45 10.73 19.30 95.95 60.96 26.25 67.76 57.94 37.61 23.53 28.98 97.08 68.10 55.79 27.71 35.01 46.40 46.96 48.17 47.58 50.15 49.52 51.17 14.30 20.50 13.60 13.60 0.88
-A245FA36 May 19 2015 07_14.obj 83.42 84.59 16.88 28.60 30.38 24.40 22.96 36.18 36.71 44.13 44.17 23.31 22.96 43.27 44.43 54.83 53.68 42.51 41.83 91.62 21.85 18.94 39.65 26.13 27.98 27.47 87.19 13.86 33.46 34.17 140.77 90.24 134.99 33.71 67.71 66.65 24.37 24.06 97.41 97.92 73.08 23.10 24.68 26.13 39.82 87.92 12.82 89.43 95.68 94.67 95.05 69.24 69.98 34.84 36.00 95.75 26.00 42.91 43.79 22.56 23.34 11.17 8.76 37.86 78.02 93.84 41.06 42.89 94.62 94.51 107.19 92.52 67.87 98.61 122.10 10.91 11.70 24.61 24.06 71.13 70.30 82.58 157.63 52.93 52.89 62.63 62.63 76.43 32.87 33.70 36.30 35.47 39.93 82.74 93.84 16.14 15.53 29.47 29.86 32.69 33.96 90.24 78.02 95.68 39.82 37.86 18.74 24.06 42.83 28.60 30.38 11.70 18.20 84.42 53.88 25.63 60.68 52.89 36.00 22.96 26.13 85.08 58.95 53.68 27.47 31.65 42.07 40.60 41.81 41.47 46.93 46.76 48.86 9.25 17.32 16.56 13.22 0.67
-A246FA28B May 19 2015 07_27.obj 95.76 83.54 17.10 31.21 31.84 23.71 24.10 38.44 38.68 46.10 46.23 23.73 24.10 47.02 47.47 51.29 52.28 37.35 39.60 100.70 20.55 18.55 39.40 28.07 31.79 29.53 93.60 15.27 36.84 37.20 143.07 99.84 133.51 33.29 66.44 72.37 24.78 25.38 99.30 97.61 79.15 24.47 25.12 28.07 38.84 96.41 11.18 95.94 98.41 97.89 98.32 67.68 67.33 36.96 37.24 98.40 22.50 45.28 45.39 22.77 23.90 11.16 11.06 36.72 79.83 94.51 45.09 45.28 95.90 95.59 112.52 96.95 68.24 100.52 121.94 10.75 11.36 25.00 25.54 66.92 70.07 91.62 158.36 56.49 56.53 61.36 61.36 86.01 34.15 34.80 35.74 35.79 43.75 92.65 94.51 16.68 17.29 34.57 32.47 35.78 36.59 99.84 79.83 98.41 38.84 36.72 19.57 25.54 44.64 31.21 31.84 11.36 21.10 95.55 55.18 22.36 61.98 56.53 37.24 24.10 28.07 85.71 57.64 52.28 29.53 30.82 46.27 46.32 48.03 47.59 48.25 46.97 51.40 10.97 17.23 14.38 13.19 1.08
-A247FA23 May 19 2015 08_24.obj 90.50 87.39 18.53 31.06 31.43 23.37 26.08 36.34 37.31 45.34 46.66 23.37 24.42 42.10 42.84 51.46 52.83 39.48 41.39 94.61 22.13 18.96 35.31 29.12 28.76 27.51 89.09 14.34 35.83 36.45 140.05 93.65 133.50 32.44 68.86 73.94 23.94 23.67 100.41 98.53 72.89 23.77 24.02 29.12 38.04 93.78 13.19 89.88 96.99 95.22 96.71 70.36 70.68 35.64 36.68 96.99 26.50 44.40 46.29 22.47 23.14 11.33 11.15 36.49 72.61 97.98 40.81 43.17 99.20 98.76 105.81 94.53 69.73 95.67 122.37 12.07 9.88 23.03 22.24 67.20 68.82 84.08 157.04 54.18 55.13 63.78 63.78 78.05 34.49 35.33 37.66 36.07 40.17 87.17 97.98 16.62 16.28 31.48 30.39 36.40 37.55 93.65 72.61 96.99 38.04 36.49 20.89 22.24 37.37 31.06 31.43 9.88 19.80 90.15 57.44 26.38 64.24 55.13 36.68 24.42 29.12 89.26 60.13 52.83 27.51 30.20 45.87 41.25 44.71 45.68 49.59 46.80 50.14 10.60 18.43 13.83 12.17 0.78
-A248FA29 May 19 2015 07_31.obj 89.06 95.19 19.92 34.55 31.05 25.58 27.27 41.40 41.48 46.93 47.98 25.58 26.07 42.95 47.45 56.73 55.45 43.00 42.34 94.36 23.96 19.29 37.34 30.55 29.95 28.51 91.07 12.79 38.68 38.73 141.20 93.80 144.16 35.14 75.27 77.70 25.46 26.21 105.92 103.90 77.63 25.42 25.80 30.55 38.88 91.24 12.64 91.83 105.18 101.68 105.18 76.23 75.99 39.75 40.19 105.18 25.50 45.96 47.29 25.94 25.93 12.18 12.38 39.46 77.07 105.83 42.60 44.99 106.63 106.69 107.91 102.32 76.94 99.05 130.76 11.29 11.08 24.91 25.74 72.17 73.14 85.39 167.72 57.33 59.03 70.19 70.19 85.32 38.05 38.47 40.85 39.86 39.34 87.07 105.83 16.30 16.27 31.45 29.31 37.88 39.82 93.80 77.07 105.18 38.88 39.46 21.86 25.74 39.82 34.55 31.05 11.08 19.70 88.93 61.62 25.28 68.42 59.03 40.19 26.07 30.55 96.51 65.96 55.45 28.51 34.79 46.40 40.61 43.27 45.68 54.11 50.55 54.59 10.64 20.83 16.87 14.49 0.87
-A249FA23 May 19 2015 08_29.obj 83.35 94.68 17.17 30.05 30.25 22.72 24.86 36.06 36.57 43.25 43.24 22.72 23.59 40.18 43.77 55.35 55.48 42.71 42.63 89.11 22.21 19.59 35.32 26.96 27.86 29.56 86.12 11.92 34.88 34.33 143.42 89.90 144.33 31.09 77.51 69.38 25.02 26.35 109.14 108.62 69.93 24.25 25.38 26.94 41.17 85.70 11.36 85.33 97.28 96.48 97.16 78.56 78.20 33.90 33.90 97.26 22.50 42.47 42.27 22.65 23.31 12.06 14.48 36.30 71.64 104.47 39.87 41.92 105.44 105.18 104.67 95.06 78.85 93.78 133.10 9.86 9.56 22.41 24.61 70.17 70.17 81.25 169.04 52.92 52.31 72.43 72.43 73.76 32.27 31.80 42.22 41.93 39.30 82.12 104.46 14.62 15.82 29.16 29.81 34.24 35.14 89.90 71.64 97.28 41.17 36.30 19.94 24.61 43.46 30.05 30.25 9.56 17.90 83.87 59.06 22.73 65.86 52.31 33.90 23.59 26.96 95.08 68.12 55.48 29.56 32.14 43.36 38.70 40.79 42.47 50.15 45.60 51.62 9.79 18.46 16.06 13.56 0.72
-A250FA23 May 19 2015 08_33-BkNk-L-RShldr.obj 88.05 88.30 16.71 34.04 30.59 25.47 25.52 37.55 36.80 45.56 45.59 25.67 25.52 41.59 45.54 54.37 54.56 41.19 43.56 93.19 25.05 19.73 38.82 26.55 27.47 25.52 88.62 12.88 35.69 36.06 142.74 91.57 140.37 34.59 71.58 68.36 24.05 24.16 102.24 100.29 73.42 24.11 24.13 26.55 42.93 90.15 11.39 90.21 100.02 99.48 99.81 72.55 72.36 37.61 37.45 100.02 23.00 45.73 46.00 24.14 24.27 12.61 10.09 39.27 78.31 98.13 40.65 45.46 98.88 98.87 110.08 97.78 72.78 102.17 126.19 12.24 11.39 26.41 25.77 71.11 71.70 86.11 166.73 55.30 55.64 66.50 66.50 74.30 34.11 34.23 38.80 39.40 37.58 86.82 98.13 15.59 15.89 29.33 28.07 33.99 34.37 91.57 78.31 100.02 42.93 39.27 21.02 25.77 43.96 34.04 30.59 11.39 18.00 88.60 53.33 22.78 60.13 55.64 37.45 25.52 26.55 90.72 64.18 54.56 25.52 33.56 44.88 41.88 46.07 41.87 49.51 46.87 53.10 9.84 17.92 17.00 12.33 0.74
-A252FA27 May 19 2015 08_41.obj 89.83 100.39 20.61 28.92 34.59 21.43 23.04 35.98 36.54 45.05 46.00 21.43 22.48 47.23 48.01 55.73 55.22 41.62 43.11 108.98 23.80 19.01 41.14 31.36 30.47 29.33 102.77 14.54 35.88 35.39 149.21 105.83 149.56 36.26 79.77 77.87 25.84 26.60 111.98 110.44 80.03 25.76 26.12 31.36 38.66 90.70 13.73 103.52 101.36 97.37 101.20 80.89 81.78 35.35 36.79 101.36 27.50 44.81 46.24 21.59 22.67 11.60 11.60 40.35 80.08 111.14 44.39 45.42 111.89 111.74 121.42 100.39 81.01 108.96 136.66 13.11 12.06 28.40 28.99 73.38 75.14 87.31 174.02 55.98 57.56 74.69 74.69 89.80 33.41 33.22 43.21 42.40 47.41 88.62 111.14 16.66 16.12 32.06 32.76 39.00 38.87 105.83 80.08 101.36 38.66 40.35 21.11 28.99 42.97 28.92 34.59 12.06 21.90 90.10 63.36 27.46 70.16 57.56 36.79 22.48 31.36 99.54 68.17 55.22 29.33 33.32 47.33 41.25 44.57 45.13 52.05 46.90 54.41 10.75 23.97 16.68 13.54 0.61
-A253FA27 May 19 2015 09_28.obj 106.59 98.46 18.24 36.29 35.29 26.55 27.78 41.84 41.09 53.94 54.58 26.61 27.78 50.28 50.96 58.70 59.31 45.94 46.64 107.63 25.61 19.10 48.14 29.17 30.32 30.96 107.15 16.59 40.92 42.40 153.54 108.11 150.15 36.52 80.22 77.00 24.45 25.25 112.26 108.58 91.16 24.15 25.08 29.17 43.95 107.96 12.07 101.27 114.77 113.08 114.77 81.62 81.35 41.74 41.58 114.77 24.50 54.05 55.03 25.10 26.41 10.53 10.33 59.66 93.49 109.39 46.04 46.88 110.06 109.98 122.76 112.00 81.81 110.81 139.46 15.46 13.02 28.35 28.90 78.63 81.54 104.62 175.24 63.86 65.52 75.14 75.14 94.35 37.43 37.53 43.14 43.65 44.01 105.17 109.39 15.77 17.21 33.71 33.01 38.21 38.79 108.11 93.49 114.77 43.95 59.66 23.28 28.90 46.63 36.29 35.29 13.02 21.30 106.44 59.46 24.13 66.26 65.52 41.58 27.78 29.17 101.60 72.43 59.31 30.96 37.02 56.25 48.87 50.43 56.05 59.04 55.96 58.76 10.93 18.95 16.76 14.32 0.59
-A256FA28 May 19 2015 09_37.obj 89.55 100.95 21.09 31.25 32.26 24.99 24.58 41.47 41.77 51.40 50.13 25.07 24.58 44.44 49.61 56.99 59.28 44.69 44.85 96.79 22.95 19.25 44.83 32.21 31.75 30.66 91.77 14.88 39.27 38.97 146.05 96.26 149.33 32.53 79.86 79.90 26.45 26.75 109.63 109.94 74.17 25.63 26.18 32.21 38.62 94.83 14.85 91.11 112.07 102.44 111.23 81.26 81.01 40.24 39.92 112.06 29.50 51.05 49.47 23.39 23.69 12.35 12.35 39.69 73.01 112.07 40.98 47.17 114.17 113.94 113.72 107.04 80.65 101.75 137.50 13.52 11.37 24.36 24.57 76.42 77.24 82.57 172.86 59.96 59.27 74.78 74.78 85.78 37.32 37.43 41.94 42.19 47.14 85.94 112.07 16.44 16.88 32.18 32.51 38.77 41.13 96.26 73.01 112.07 38.62 39.69 21.92 24.57 40.82 31.25 32.26 11.37 21.80 88.22 65.32 29.69 72.12 59.27 39.92 24.58 32.21 102.46 70.26 59.28 30.66 34.51 44.00 41.88 42.58 46.83 56.22 54.25 57.76 11.12 23.56 15.72 14.22 1.87
-A257FA33 May 19 2015 09_47.obj 92.86 97.87 17.71 28.14 31.27 24.37 24.78 38.83 39.00 51.28 51.78 24.47 24.78 44.86 42.52 57.68 56.66 45.01 44.97 94.54 22.81 18.08 41.87 27.68 30.25 30.68 90.14 14.21 38.97 40.04 148.63 93.12 151.17 34.60 80.16 75.18 25.33 26.29 110.96 111.59 73.13 24.68 25.84 27.68 42.21 96.76 12.74 89.52 110.86 107.69 109.73 82.22 82.24 38.14 38.12 110.86 25.50 50.81 51.40 23.42 24.01 12.41 12.50 38.41 79.04 107.84 41.14 40.82 108.98 109.25 110.82 106.75 80.86 100.52 138.41 12.20 13.15 27.22 28.60 75.57 75.99 90.64 174.50 63.27 63.01 75.08 75.08 75.80 36.82 37.13 43.55 43.51 43.90 90.88 107.84 15.91 16.52 31.24 33.36 36.38 38.80 93.12 79.04 110.86 42.21 38.41 19.21 28.60 48.67 28.14 31.27 13.15 20.70 93.29 60.89 25.47 67.69 63.01 38.12 24.78 27.68 98.15 70.47 56.66 30.68 34.08 47.04 43.79 46.41 46.29 54.59 54.00 56.81 9.97 19.45 16.96 13.28 1.41
-A258FA30 May 19 2015 10_00.obj 100.45 88.68 18.07 29.22 34.25 24.58 26.50 36.15 40.86 47.85 52.98 24.58 25.38 54.21 47.65 47.89 49.62 36.27 36.50 102.85 22.51 19.61 42.54 30.95 28.79 29.71 99.12 15.17 37.90 37.52 144.65 103.09 139.19 32.03 70.62 80.92 24.60 24.65 105.38 103.09 82.35 24.44 24.59 30.95 37.10 101.29 13.86 97.41 108.20 102.33 107.45 71.50 71.37 36.44 37.88 108.18 28.00 48.80 50.99 24.54 25.03 11.15 11.30 35.44 83.23 101.57 38.99 42.43 102.88 103.07 118.15 104.31 71.64 101.36 126.51 14.39 12.95 27.19 26.99 65.07 67.93 96.30 159.12 61.70 61.89 65.54 65.54 86.83 34.87 35.19 38.36 37.64 51.79 96.21 101.57 16.03 16.68 30.77 33.42 39.56 41.36 103.09 83.23 108.20 37.10 35.44 20.95 26.99 41.55 29.22 34.25 12.95 24.50 97.70 60.05 27.73 66.85 61.89 37.88 25.38 30.95 92.73 61.78 49.62 29.71 29.51 51.09 45.05 48.81 51.53 55.42 51.66 56.49 12.88 22.41 15.09 13.41 1.50
-A259FA24A May 19 2015 09_54.obj 89.90 97.97 20.21 28.53 29.20 24.64 23.51 38.89 38.45 47.16 48.31 23.30 23.51 42.93 53.03 56.26 57.12 44.33 45.68 96.99 22.72 19.55 37.97 31.15 25.71 25.33 89.92 11.70 36.12 36.59 146.65 94.11 145.82 30.09 77.76 78.16 22.99 24.19 106.25 104.91 78.50 22.22 23.76 31.15 39.07 91.99 13.87 90.92 100.43 96.15 100.09 78.62 78.53 37.76 38.11 100.43 27.50 46.89 48.27 21.61 22.74 11.98 11.82 34.71 74.21 108.90 39.69 51.17 110.25 109.79 106.18 97.77 78.83 93.29 133.03 12.28 11.20 23.82 23.76 71.96 74.95 84.94 167.49 56.45 56.99 72.68 72.68 81.55 33.67 34.01 41.55 41.07 42.98 86.87 108.90 14.46 15.28 28.35 26.54 38.19 39.97 94.11 74.21 100.43 39.07 34.71 23.11 23.76 39.57 28.53 29.20 11.20 21.10 89.50 63.41 27.75 70.21 56.99 38.11 23.51 31.15 99.60 68.45 57.12 25.33 33.48 47.48 39.34 45.41 44.40 49.51 46.29 54.10 10.93 22.79 12.91 12.07 0.89
-A260FA28 May 19 2015 10_06.obj 84.58 87.74 15.96 33.52 29.59 20.85 21.12 33.04 33.35 41.31 42.76 20.83 21.12 39.70 40.40 55.43 55.17 42.11 42.51 86.88 23.84 19.82 37.84 25.45 25.67 26.12 82.83 11.31 33.06 34.10 130.67 86.74 134.63 33.04 71.77 63.45 22.63 24.21 99.04 96.71 69.68 22.65 24.08 25.45 39.90 86.62 11.50 85.20 94.85 93.89 93.92 72.99 73.64 30.89 31.54 94.85 23.00 39.64 41.70 19.92 20.65 11.33 11.21 37.27 70.56 97.22 39.53 39.96 98.18 98.08 102.48 90.22 72.55 95.49 122.50 10.66 10.25 21.70 21.52 69.66 70.73 79.95 158.83 49.51 50.35 66.69 66.69 73.47 29.93 30.45 39.48 38.75 32.36 80.80 97.22 15.40 14.95 27.52 28.82 30.99 32.46 86.74 70.56 94.85 39.90 37.27 21.24 21.52 37.01 33.52 29.59 10.25 15.50 85.41 55.10 22.99 61.90 50.35 31.54 21.12 25.45 88.39 62.95 55.17 26.12 32.69 42.04 38.71 42.55 41.87 46.34 41.25 53.55 9.48 16.19 14.92 11.89 0.87
-A261FA38b June 2 2015 05_49.obj 81.80 90.31 20.31 22.96 32.59 22.18 25.57 33.43 33.25 41.76 40.58 22.18 22.85 35.48 37.51 51.76 50.43 40.27 40.81 83.20 23.04 19.18 35.38 31.08 25.92 24.00 79.82 12.40 33.92 34.07 141.41 83.04 136.90 30.85 70.00 76.23 21.24 21.69 104.20 100.30 66.71 20.88 21.48 31.08 35.70 84.25 13.35 81.63 96.32 91.37 96.27 71.66 71.06 32.70 32.50 96.33 26.50 41.33 40.12 22.06 22.97 12.76 12.58 35.04 66.58 101.08 36.47 36.27 102.24 101.97 103.65 94.39 71.38 94.27 124.00 10.05 12.08 24.30 23.87 66.11 68.40 76.04 159.00 49.50 50.20 64.92 64.92 70.39 30.73 30.35 37.94 37.94 37.55 78.33 101.08 14.73 16.09 28.18 27.33 37.39 38.84 83.04 66.58 96.32 35.70 35.04 19.15 23.87 36.22 22.96 32.59 12.08 18.10 81.25 58.93 26.69 65.73 50.20 32.50 22.85 31.08 90.48 59.40 50.43 24.00 30.03 38.93 39.33 37.68 43.99 48.88 45.50 50.78 10.77 23.26 15.27 11.28 0.89
-A264FA34 June 2 2015 05_04.obj 97.70 98.42 15.75 26.43 34.39 28.30 28.14 38.87 39.22 47.76 49.21 28.37 28.14 44.94 47.16 55.95 59.01 43.12 47.10 99.81 29.25 19.14 44.78 28.81 31.02 29.53 97.72 15.74 38.40 40.80 144.58 100.95 153.16 35.38 82.67 73.76 25.69 26.07 114.27 110.37 80.12 25.68 26.26 28.68 40.75 98.34 12.33 95.50 104.27 102.09 104.13 83.24 83.18 36.92 37.12 104.28 24.50 46.05 47.94 26.23 26.72 15.43 15.25 40.60 82.11 111.48 43.91 43.93 112.50 112.39 122.00 103.16 83.96 109.05 135.96 12.64 12.87 32.76 30.31 73.60 79.66 97.53 174.92 57.52 57.87 77.59 77.59 81.57 35.90 36.66 45.38 45.21 44.74 96.68 111.44 17.59 12.99 34.79 34.39 36.51 37.24 100.95 82.11 104.27 40.75 40.60 23.60 30.31 41.14 26.43 34.39 12.87 23.70 98.60 63.21 24.72 70.01 57.87 37.12 28.14 28.81 101.76 72.95 59.01 29.53 32.80 49.66 46.95 46.84 50.75 53.95 49.00 55.23 13.06 21.84 19.00 13.21 0.95
-A265FA26 June 2 2015 05_32.obj 87.95 91.40 16.69 32.62 30.20 24.71 25.07 37.09 37.68 48.61 48.87 24.88 25.07 41.46 43.55 54.35 54.58 41.65 42.90 88.96 21.87 18.63 39.99 25.92 25.81 27.08 84.76 14.48 36.94 38.30 135.41 88.79 141.43 34.74 74.71 68.50 23.25 24.69 106.94 104.32 71.34 24.14 25.18 25.92 40.60 92.09 11.70 87.39 101.58 100.50 100.81 75.40 75.39 35.52 36.28 101.57 23.50 47.27 48.07 23.55 23.88 14.24 11.75 40.24 74.53 100.63 39.47 41.75 101.82 101.45 108.51 98.33 75.50 99.74 130.17 11.72 11.93 23.62 25.16 71.17 72.09 81.96 165.28 59.42 59.31 69.63 69.63 73.83 34.56 35.55 40.43 40.30 38.41 83.32 100.63 16.60 16.47 29.86 28.69 33.08 35.42 88.79 74.53 101.58 40.60 40.24 17.73 25.16 44.85 32.62 30.20 11.93 18.90 89.69 56.79 23.40 63.59 59.31 36.28 25.07 25.92 91.44 65.53 54.58 27.08 33.06 44.57 38.71 42.74 45.03 50.15 49.43 52.10 9.23 17.56 17.15 12.52 0.82
-A267FA54a June 2 2015 06_43.obj 84.66 83.39 14.43 29.96 28.68 25.22 24.69 50.15 35.36 50.03 40.21 25.22 24.69 49.57 44.30 49.37 48.86 37.29 39.20 90.58 20.07 19.01 41.12 27.53 27.71 27.42 85.52 10.52 34.27 34.72 128.72 90.48 131.13 32.78 68.95 68.42 24.77 25.08 94.93 95.68 78.21 24.56 25.36 27.53 33.83 84.84 12.62 86.14 92.47 89.25 91.33 69.61 69.76 33.75 34.08 92.47 25.00 38.82 39.08 23.48 23.42 10.73 13.29 35.91 77.29 96.48 40.87 36.82 97.42 97.27 105.96 88.24 69.68 92.38 119.46 13.39 13.01 23.59 23.71 67.59 65.85 82.99 149.79 50.06 50.11 63.87 63.87 78.00 32.46 32.72 37.42 37.01 47.97 81.18 96.48 16.78 17.05 29.29 28.17 33.80 34.62 90.48 77.29 92.47 33.83 35.91 18.78 23.71 36.65 29.96 28.68 13.01 22.00 82.09 56.11 25.24 62.91 50.11 34.08 24.69 27.53 88.16 60.63 48.86 27.42 29.18 39.23 41.88 41.97 42.51 44.44 39.98 52.44 13.09 18.96 13.34 11.56 0.79
-A268FA35 June 2 2015 07_06.obj 97.67 93.33 17.59 34.50 35.76 24.83 25.39 38.71 30.00 45.88 38.17 24.78 25.39 50.89 68.85 55.65 53.60 40.50 37.26 114.33 22.42 18.77 39.02 31.55 31.47 30.90 108.53 17.34 38.99 38.97 145.61 113.22 143.72 32.48 75.74 82.06 24.85 25.88 109.75 106.14 88.81 24.81 26.19 31.55 37.02 97.57 10.33 107.95 101.63 101.62 101.01 77.43 77.17 37.93 37.97 101.64 20.50 45.38 45.13 23.80 24.77 12.01 11.88 35.59 89.11 107.29 48.27 68.86 107.77 107.78 124.89 101.58 79.18 109.92 130.91 12.32 12.66 30.66 29.75 71.45 72.25 96.41 168.30 54.56 54.13 70.66 70.66 94.26 36.05 35.68 42.15 41.21 56.55 96.19 107.29 15.97 17.41 33.67 47.67 39.83 42.23 113.22 89.11 101.63 37.02 35.59 23.67 29.75 43.37 34.50 35.76 12.66 25.30 97.63 62.08 20.66 68.88 54.13 37.97 25.39 31.55 97.94 66.39 53.60 30.90 31.85 50.45 45.69 46.60 50.95 55.22 47.62 53.96 13.96 21.76 15.26 15.82 0.49
-A269FA43 June 18 2015 04_00.obj 118.80 82.60 9.41 35.06 34.59 26.25 26.46 46.30 45.53 59.69 60.08 26.30 26.46 56.11 55.33 55.42 55.39 36.11 37.64 109.24 29.15 20.82 39.46 28.78 44.32 42.48 104.29 16.78 45.66 46.66 146.10 109.87 140.72 34.63 73.18 84.11 37.57 35.33 106.05 105.15 90.76 32.91 31.27 28.78 41.04 118.90 11.47 105.80 120.28 119.72 120.23 74.26 73.92 48.63 50.65 120.28 23.00 60.51 61.48 25.32 26.49 12.06 11.71 49.78 98.56 101.97 54.75 54.32 103.38 103.12 133.59 120.20 75.03 117.10 126.03 12.43 12.90 28.39 30.18 71.22 73.48 119.55 162.31 69.21 71.49 68.10 68.10 90.35 44.51 44.32 40.12 40.61 41.95 117.14 101.97 18.71 18.73 45.15 43.70 41.00 43.10 109.87 98.56 120.28 41.04 49.78 24.89 30.18 43.92 35.06 34.59 12.90 20.40 117.37 55.39 22.94 62.19 71.49 50.65 26.46 28.78 92.95 64.17 55.39 42.48 31.14 59.33 57.77 59.00 59.65 60.94 59.29 60.94 19.37 21.57 20.30 15.92 1.15
-A271FL21a July 30 2015 02_16.obj 80.79 98.80 19.86 27.83 28.59 24.47 24.27 38.00 37.42 42.43 42.35 24.46 24.27 38.22 40.73 56.88 56.68 45.78 45.45 88.23 21.57 18.59 37.25 29.65 25.24 23.59 82.34 13.09 34.10 34.49 141.69 86.53 147.96 30.24 78.95 75.58 24.25 22.36 106.94 104.42 67.51 23.32 22.08 29.65 36.63 84.54 12.96 83.27 94.59 91.71 94.30 79.57 79.32 35.76 35.88 94.59 26.00 40.87 41.53 23.01 23.13 15.08 12.28 36.47 65.53 108.60 36.56 39.37 110.65 109.78 101.10 92.92 80.13 91.90 132.66 10.34 10.68 23.47 23.51 73.27 73.40 74.64 170.51 50.87 52.32 73.87 73.87 74.07 33.71 33.34 40.80 41.51 38.92 77.34 108.60 15.68 15.52 29.47 27.16 36.81 38.77 86.53 65.53 94.59 36.63 36.47 19.97 23.51 38.85 27.83 28.59 10.68 19.30 81.35 62.40 25.91 69.20 52.32 35.88 24.27 29.65 99.12 69.47 56.68 23.59 34.16 39.84 37.43 39.43 41.23 49.22 45.04 49.51 9.79 21.96 14.11 12.17 1.18
-A272FL45b July 30 2015 02_23-BkNeck.obj 117.17 86.21 16.77 35.22 36.42 28.16 27.26 46.54 41.93 55.88 52.97 28.14 27.26 57.80 69.05 50.64 51.33 37.32 33.73 116.50 26.28 20.07 48.27 31.29 37.83 35.26 111.34 17.09 41.44 41.68 150.12 113.86 138.72 43.36 69.44 91.27 31.08 32.32 102.03 98.54 105.57 30.83 31.06 31.85 38.22 114.25 7.39 110.79 117.54 115.33 110.23 70.10 69.95 45.91 44.51 117.54 14.46 55.72 54.33 26.32 26.44 14.00 11.29 45.95 104.27 100.72 53.99 55.46 101.69 101.34 131.09 111.98 74.71 116.90 124.15 13.84 14.44 31.12 32.08 69.84 71.52 113.93 158.70 64.55 65.65 64.36 64.36 101.21 40.11 39.11 39.11 38.64 48.91 112.97 100.91 18.98 19.57 39.63 39.28 46.02 45.25 113.86 104.27 117.54 38.22 45.95 24.82 32.08 43.86 35.22 36.42 14.44 23.20 114.90 56.38 14.59 63.18 65.65 44.51 27.26 31.29 91.90 60.62 51.33 35.26 33.41 65.95 46.96 62.91 54.19 55.23 60.86 56.63 14.52 21.97 18.78 16.35 0.44
-A273FA20a July 30 2015 02_31.obj 108.71 93.76 15.08 36.62 38.77 27.11 28.97 46.04 47.10 58.33 59.65 27.11 27.53 50.40 51.43 51.76 50.71 38.28 37.43 112.60 26.73 19.79 48.71 29.44 32.90 34.04 110.57 17.73 45.20 45.69 142.25 112.99 146.52 36.46 78.67 82.46 27.04 27.88 109.62 109.43 90.92 27.08 27.81 29.44 38.49 107.31 13.09 108.82 116.10 113.82 115.88 79.23 79.18 45.23 46.17 116.10 26.00 58.09 59.40 27.40 27.51 9.32 12.20 39.47 92.78 108.11 46.37 47.44 109.06 108.96 133.79 114.04 79.70 118.77 132.42 15.46 14.78 29.02 29.00 72.70 71.52 103.36 167.79 68.74 71.17 73.59 73.59 89.64 43.00 44.01 41.67 41.38 50.71 103.16 108.11 16.53 18.37 35.62 37.72 40.26 42.20 112.99 92.78 116.10 38.49 39.47 21.84 29.00 40.80 36.62 38.77 14.78 25.50 103.46 62.14 26.18 68.94 71.17 46.17 27.53 29.44 98.79 69.35 50.71 34.04 30.86 52.97 50.13 52.03 56.57 59.84 56.40 59.68 14.36 20.65 19.30 14.20 0.84
-A283FR24 July 30 2015 04_01.obj 80.94 93.60 19.82 25.31 31.99 23.07 25.14 36.33 35.35 42.64 42.59 23.07 23.80 35.82 38.96 52.64 51.07 42.08 40.81 87.90 24.07 18.72 39.86 29.64 24.57 23.44 84.97 13.40 35.40 35.11 139.60 87.87 142.99 30.77 73.78 72.99 23.26 17.79 106.53 106.10 70.40 22.43 17.65 29.64 38.59 86.74 13.88 85.76 94.68 90.84 93.56 74.46 74.81 34.15 33.50 94.67 27.50 41.44 41.66 23.46 23.47 11.01 13.17 34.59 69.84 103.42 34.37 38.41 104.14 104.14 104.86 91.05 90.24 97.42 128.47 12.64 11.62 25.83 26.78 69.67 68.64 77.06 165.16 51.55 51.92 68.70 68.70 73.86 33.26 32.22 41.03 40.66 40.92 77.15 103.42 16.05 8.66 26.19 26.70 35.45 37.54 87.87 69.84 94.68 38.59 34.59 19.50 26.78 41.10 25.31 31.99 11.62 17.50 81.51 59.08 27.77 65.88 51.92 33.50 23.80 29.64 92.41 62.77 51.07 23.44 29.40 39.03 38.06 38.06 42.72 48.24 43.70 50.92 9.82 20.54 16.93 11.90 0.73
-A287FA31 September 23 2015 02_24.obj 83.67 91.45 17.57 30.70 30.57 23.76 23.29 34.40 34.63 42.64 42.40 23.74 23.29 39.57 41.10 54.77 54.67 42.83 42.56 90.63 19.83 18.63 37.03 26.94 27.75 25.83 86.78 11.81 34.11 34.25 140.65 89.60 141.64 30.09 73.87 67.89 23.12 22.69 106.56 103.32 70.67 22.37 22.48 26.94 39.28 86.64 11.97 86.00 93.54 92.14 92.90 74.34 74.05 31.96 32.20 93.54 24.00 40.98 40.89 22.32 22.11 11.70 11.66 34.87 70.89 100.82 37.59 38.71 101.39 101.49 105.48 89.91 74.82 93.29 129.28 11.39 11.14 24.26 21.49 69.86 71.37 79.68 163.48 50.80 51.26 68.79 68.79 79.85 31.53 31.26 40.94 41.54 40.55 81.38 100.82 14.84 14.56 30.15 29.46 33.58 34.31 89.60 70.89 93.54 39.28 34.87 18.32 21.49 41.00 30.70 30.57 11.14 18.80 84.89 57.47 23.95 64.27 51.26 32.20 23.29 26.94 91.74 64.79 54.67 25.83 32.06 41.35 39.97 40.91 42.64 46.96 45.25 48.24 9.37 16.31 14.40 12.31 0.68
-A289FR23 September 23 2015 03_52.obj 96.63 94.61 19.33 31.98 32.59 26.50 27.62 41.02 40.60 49.17 49.57 26.50 25.88 43.79 44.88 54.34 53.75 42.50 42.37 93.25 25.32 18.91 42.74 30.23 29.19 27.19 89.99 14.93 40.11 40.14 149.34 91.28 146.88 32.02 75.29 79.39 26.56 25.53 109.38 107.31 77.55 25.10 25.48 30.23 41.64 98.40 12.99 91.20 108.09 104.56 107.98 75.54 75.47 39.15 37.62 108.09 26.00 47.75 47.89 26.01 25.94 12.20 12.00 36.51 79.29 105.51 40.91 41.48 106.51 106.54 110.60 105.48 76.63 102.53 133.54 13.79 13.25 25.74 26.46 72.16 73.85 92.42 169.58 59.04 59.78 70.21 70.21 80.39 38.28 37.39 41.26 41.42 40.10 94.24 105.51 16.28 16.59 30.68 29.97 38.78 40.60 91.28 79.29 108.09 41.64 36.51 21.71 26.46 43.76 31.98 32.59 13.25 19.10 96.49 61.25 25.98 68.05 59.78 37.62 25.88 30.23 96.09 65.87 53.75 27.19 32.48 50.40 43.77 47.68 48.81 53.32 52.70 55.35 10.90 21.24 16.69 12.98 1.03
-A290FA26a October 6 2015 01_20.obj 95.84 91.92 18.07 24.62 34.88 22.98 22.96 37.69 38.12 47.62 48.23 23.14 22.96 41.05 45.65 50.75 51.38 35.79 37.29 100.78 25.61 19.13 43.05 28.49 29.84 28.87 100.62 16.29 34.57 35.05 141.48 101.47 138.82 33.26 73.85 76.45 19.06 22.17 111.29 106.74 86.52 21.68 23.27 28.49 38.21 97.33 11.79 95.63 105.58 104.21 105.56 74.61 74.60 35.70 36.73 105.57 24.00 46.49 47.12 21.18 21.65 11.92 11.92 61.40 85.36 102.34 62.70 43.12 103.21 102.95 134.22 103.76 75.40 113.14 126.34 13.69 13.26 29.16 26.00 69.35 71.58 93.89 161.08 59.44 60.20 68.77 68.77 91.61 34.12 34.54 40.63 39.86 49.54 94.48 102.34 14.39 15.24 26.44 28.75 37.87 38.58 101.47 85.36 105.58 38.21 61.40 20.29 26.00 38.78 24.62 34.88 13.26 24.60 96.13 59.08 23.58 65.88 60.20 36.73 22.96 28.49 93.39 64.90 51.38 28.87 26.70 49.38 45.05 47.72 47.99 53.96 50.94 54.59 10.42 19.65 17.79 12.34 0.61
-A291FA22 October 6 2015 01_25.obj 102.86 94.71 19.76 32.58 31.49 26.98 26.93 42.76 42.99 55.03 56.46 27.09 26.93 44.33 47.80 57.06 56.58 42.67 42.20 99.50 23.55 18.79 42.74 30.83 30.49 30.17 95.12 14.15 40.38 40.88 147.60 98.45 147.42 33.60 74.95 82.74 24.70 24.48 108.15 106.59 81.95 23.78 24.00 30.83 39.13 104.31 13.00 94.07 113.67 109.96 113.67 75.75 75.52 40.31 40.32 113.67 26.00 53.98 55.28 26.30 26.34 12.31 12.11 37.53 84.49 105.78 43.21 46.51 106.95 106.78 114.36 111.10 76.48 103.08 132.34 11.63 12.77 27.10 28.50 74.23 74.40 97.64 168.12 63.88 66.78 69.87 69.87 85.27 38.84 39.16 41.59 41.25 39.94 98.94 105.78 16.78 15.78 32.03 31.90 40.02 42.72 98.45 84.49 113.67 39.13 37.53 20.77 28.50 44.44 32.58 31.49 12.77 18.60 102.37 61.74 25.99 68.54 66.78 40.32 26.93 30.83 96.44 65.61 56.58 30.17 32.89 53.82 45.06 51.08 51.67 57.13 56.02 57.60 11.07 21.61 17.12 14.13 1.00
-A294FR21 October 6 2015 01_39.obj 86.42 91.86 18.36 21.48 24.27 23.58 23.52 37.10 36.46 46.18 46.21 23.62 23.52 51.86 53.41 52.88 49.18 37.95 37.94 87.63 21.98 18.24 41.32 28.78 29.28 25.70 84.24 13.55 35.65 36.05 147.85 86.83 143.53 34.88 73.51 74.52 23.40 23.87 109.10 106.64 69.85 23.01 23.51 28.78 39.02 89.16 12.36 82.03 96.14 94.61 96.02 73.88 74.39 36.38 35.62 96.14 24.50 45.92 45.87 23.24 22.88 11.70 11.85 39.91 70.64 102.29 94.70 95.71 103.44 103.32 106.24 95.16 74.79 97.76 128.70 9.01 10.28 23.43 24.63 67.19 67.15 80.42 165.93 53.90 54.39 68.43 68.43 73.65 34.07 34.09 38.46 39.24 63.92 82.86 102.29 15.29 15.72 29.46 25.91 36.77 37.75 86.83 70.64 96.14 39.02 39.91 19.79 24.63 41.95 21.48 24.27 10.28 22.80 86.23 59.06 24.72 65.86 54.39 35.62 23.52 28.78 93.07 64.29 49.18 25.70 28.44 40.93 41.87 43.76 42.55 48.95 45.94 50.14 10.42 21.65 14.16 12.00 1.03
-A296FR24 October 6 2015 02_00.obj 80.57 94.86 19.43 28.12 32.36 27.56 25.89 35.32 35.46 44.62 46.21 25.71 25.89 35.83 40.36 56.92 55.25 43.93 45.18 88.06 21.40 18.55 39.64 29.17 25.65 24.20 84.03 14.29 40.20 39.32 144.29 87.34 145.24 32.49 75.43 74.59 22.15 22.31 108.75 107.23 70.13 23.09 23.63 29.17 38.86 87.71 13.66 86.04 96.29 93.38 95.60 75.80 76.47 34.59 34.96 96.29 27.00 44.23 46.08 24.55 24.56 11.63 11.67 37.26 64.66 104.60 36.28 39.52 106.76 105.57 111.97 94.91 76.02 101.40 133.07 11.75 12.16 25.57 25.56 72.77 73.73 74.22 169.16 50.62 52.58 70.35 70.35 78.71 34.12 33.34 42.51 39.59 41.97 76.97 104.60 15.99 15.55 27.51 27.31 36.72 37.87 87.34 64.66 96.29 38.86 37.26 15.97 25.56 43.68 28.12 32.36 12.16 19.20 81.36 60.27 27.31 67.07 52.58 34.96 25.89 29.17 95.21 66.04 55.25 24.20 32.71 36.29 40.61 37.90 42.53 51.41 45.00 51.23 9.74 22.79 16.81 11.29 0.97
-A300FR22 October 6 2015 02_45.obj 86.08 87.86 16.44 29.62 31.80 23.65 25.24 36.78 36.89 47.66 47.63 23.65 23.71 37.93 40.25 49.20 49.48 37.49 38.71 90.32 20.05 18.93 36.02 27.46 27.78 25.13 85.49 11.06 36.99 37.90 135.88 88.60 136.75 31.49 71.42 73.35 25.92 23.71 103.11 102.45 73.10 25.36 24.43 27.46 36.92 87.30 11.99 87.08 92.72 92.13 92.66 71.86 71.70 34.97 35.48 92.72 24.00 46.98 47.07 23.93 23.97 10.53 10.53 35.72 73.35 98.89 38.17 39.41 99.84 99.50 105.23 91.96 73.23 96.22 124.22 11.52 11.83 22.32 23.47 63.79 66.62 79.32 157.96 54.96 54.68 66.34 66.34 77.79 33.25 33.42 38.90 38.95 40.27 80.80 98.89 16.36 16.46 29.33 28.01 36.25 37.10 88.60 73.35 92.72 36.92 35.72 18.33 23.47 40.19 29.62 31.80 11.83 15.90 85.16 56.03 23.98 62.83 54.68 35.48 23.71 27.46 88.36 60.89 49.48 25.13 28.37 40.13 40.61 40.37 45.59 48.88 44.24 48.43 11.02 19.74 13.94 11.89 0.61
-A301FL22 October 6 2015 02_56.obj 86.17 95.95 17.61 29.56 31.80 24.12 25.51 40.35 51.15 47.83 52.32 24.12 23.88 40.61 39.37 55.83 55.74 45.44 45.56 87.91 24.16 19.18 43.85 27.38 24.03 22.73 86.87 13.18 37.21 38.41 147.87 88.57 150.86 32.80 78.34 70.21 25.59 22.57 108.85 108.85 72.35 24.90 22.75 27.38 41.83 88.86 11.75 87.06 96.21 95.48 96.07 79.26 78.89 36.59 36.21 96.21 23.50 45.98 46.09 23.85 24.01 14.01 14.01 38.11 75.38 105.72 38.53 37.83 106.15 106.40 103.86 94.94 75.45 100.32 134.34 12.74 11.84 25.50 25.75 74.00 74.87 81.77 172.57 53.85 53.59 73.26 73.26 77.06 35.06 35.20 42.50 43.29 39.55 82.92 105.72 17.00 15.42 25.96 26.31 34.89 35.32 88.57 75.38 96.21 41.83 38.11 19.03 25.75 42.75 29.56 31.80 11.84 17.80 86.95 58.74 23.50 65.54 53.59 36.21 23.88 27.38 94.21 66.84 55.74 22.73 32.30 41.61 41.24 42.89 43.14 49.51 44.12 52.05 9.77 19.10 16.75 11.57 0.68
-A302FR23 October 6 2015 02_40.obj 92.02 89.58 16.77 32.89 34.90 25.58 26.14 38.02 39.36 49.60 51.15 25.71 26.14 41.00 40.43 49.60 51.46 38.94 39.49 95.22 24.89 18.95 42.66 28.61 26.85 25.30 94.14 14.56 39.22 38.83 142.24 97.14 140.46 35.68 72.81 76.52 24.08 23.73 107.33 104.81 79.71 23.79 23.47 28.61 39.64 92.60 13.39 93.95 99.25 96.82 98.85 73.42 73.38 38.12 38.91 99.25 26.50 49.79 51.07 24.53 25.24 11.48 11.44 40.21 78.82 101.42 39.39 39.74 102.02 102.15 115.31 98.55 73.39 105.06 127.23 12.46 12.07 27.40 26.60 69.19 69.38 86.46 164.48 57.80 57.89 67.73 67.73 80.78 35.70 35.65 38.45 38.59 40.64 88.44 101.42 16.81 16.42 29.03 28.43 37.90 38.62 97.14 78.82 99.25 39.64 40.21 19.38 26.60 40.49 32.89 34.90 12.07 18.10 90.76 58.59 26.77 65.39 57.89 38.91 26.14 28.61 92.28 63.67 51.46 25.30 30.24 45.87 42.51 46.23 45.68 50.79 44.32 54.88 11.84 22.67 17.81 12.18 0.73
-A304FR22 October 6 2015 02_59.obj 90.97 86.18 16.17 33.72 29.88 25.49 25.78 37.99 37.81 46.74 46.36 25.70 25.78 39.78 43.26 51.78 51.66 39.29 40.16 91.46 25.84 19.11 41.41 28.64 27.33 25.85 90.80 13.61 37.27 37.18 136.44 92.34 133.97 31.92 70.01 71.04 24.50 24.15 97.67 96.21 71.54 23.79 23.37 28.64 36.11 91.81 13.08 88.87 96.42 95.57 96.10 70.93 70.80 36.04 36.38 96.41 26.00 45.14 45.63 23.93 24.40 13.63 11.04 40.03 70.92 98.64 39.78 39.23 99.54 99.79 105.61 95.09 70.79 97.31 119.27 10.14 9.80 27.97 24.83 67.24 69.63 85.65 157.60 55.25 55.47 64.93 64.93 76.00 34.78 34.70 38.81 37.79 36.68 88.43 98.64 16.46 15.77 28.88 27.97 34.95 36.09 92.34 70.92 96.42 36.11 40.03 20.93 24.83 34.51 33.72 29.88 9.80 17.70 88.24 57.49 26.16 64.29 55.47 36.38 25.78 28.64 89.89 61.25 51.66 25.85 31.10 44.58 43.78 43.73 47.12 48.88 41.88 54.48 12.47 19.00 17.10 12.09 1.15
-A306FA22c October 13 2015 01_28.obj 98.94 99.81 21.41 27.84 37.58 26.97 27.13 41.06 41.27 51.25 51.72 27.10 27.13 54.41 52.98 50.82 52.91 31.52 33.14 108.58 26.71 19.73 48.84 33.59 36.61 39.49 99.47 17.08 40.78 40.86 150.97 105.13 149.45 35.70 78.40 86.66 29.05 30.55 118.26 117.95 83.64 28.05 29.67 33.59 39.77 99.62 14.96 102.59 108.13 103.40 108.01 78.80 78.90 40.62 40.85 108.13 29.50 51.04 51.47 27.08 26.93 12.34 12.29 39.40 80.19 111.99 51.77 49.43 113.04 113.04 140.73 106.38 79.56 121.86 136.13 16.02 14.86 28.76 29.07 72.44 73.09 91.15 172.57 60.71 62.43 73.32 73.32 80.31 37.57 37.05 43.85 43.69 57.86 94.67 111.99 17.24 18.63 33.17 34.95 42.76 43.89 105.13 80.19 108.13 39.77 39.40 24.52 29.07 42.61 27.84 37.58 14.86 30.50 97.07 62.13 29.92 68.93 62.43 40.85 27.13 33.59 102.40 68.81 52.91 39.49 26.02 49.55 45.05 48.55 50.29 55.23 52.22 55.86 12.18 25.17 17.54 15.21 1.05
-A308FA37 October 19 2015 11_47.obj 91.35 89.98 13.97 36.01 32.29 24.08 23.73 36.94 36.72 45.13 45.48 24.08 23.73 44.20 46.81 58.60 54.85 44.84 43.99 91.95 24.76 18.72 43.15 27.69 27.58 27.52 89.55 14.39 34.53 35.05 146.92 91.12 144.89 32.78 76.02 71.28 24.22 25.44 106.39 103.78 77.98 23.95 24.72 27.69 41.67 86.85 11.45 92.20 100.65 99.93 100.65 76.29 76.37 34.55 34.57 100.64 23.00 44.04 44.60 21.93 22.40 14.56 14.72 36.13 80.43 103.71 41.25 43.27 104.73 104.50 110.93 97.50 77.53 104.00 131.26 12.14 13.18 24.69 23.60 75.67 75.98 87.50 169.52 53.50 54.45 70.94 70.94 80.74 33.46 32.83 41.43 41.16 39.95 85.29 103.71 15.94 16.72 28.88 29.78 36.64 34.64 91.12 80.43 100.65 41.67 36.13 21.59 23.60 40.61 36.01 32.29 13.18 21.20 84.08 59.07 22.90 65.87 54.45 34.57 23.73 27.69 94.29 66.60 54.85 27.52 34.67 40.82 44.41 43.07 48.17 51.41 48.55 52.04 13.73 18.05 16.80 13.37 0.79
-A310FR23a October 22 2015 02_45.obj 86.81 96.25 19.47 30.90 30.32 25.65 26.16 37.08 36.34 45.75 45.63 25.65 26.16 47.70 44.05 54.93 56.54 41.94 43.66 92.42 22.74 19.15 38.81 32.66 29.01 27.99 87.64 10.10 36.18 36.04 147.42 91.22 146.69 33.60 76.78 80.61 24.42 23.63 109.91 107.53 72.72 23.58 22.77 32.66 38.78 88.66 14.81 91.33 100.36 94.19 99.80 77.52 77.34 36.52 34.87 100.36 30.00 45.43 45.02 24.71 25.89 12.03 14.38 37.97 72.90 109.44 43.84 43.18 110.67 110.37 109.14 97.64 77.74 100.74 134.40 14.72 11.31 22.15 22.07 71.77 75.30 79.66 171.38 54.33 53.87 71.70 71.70 81.83 34.76 33.46 41.13 42.02 41.66 81.53 109.44 15.55 14.79 31.95 31.01 39.34 41.27 91.22 72.90 100.36 38.78 37.97 22.14 22.07 37.65 30.90 30.32 11.31 16.70 83.73 64.34 29.62 71.14 53.87 34.87 26.16 32.66 99.92 67.26 56.54 27.99 32.51 42.76 38.70 39.15 47.53 53.27 45.72 54.59 13.19 24.33 13.57 12.69 0.94
-A311FR22 October 22 2015 02_50.obj 90.15 101.37 18.05 32.99 32.37 24.72 24.83 35.63 26.58 43.51 37.31 24.60 24.83 42.96 45.69 60.14 59.36 47.34 48.08 95.14 21.57 18.54 41.51 29.69 27.22 25.94 91.42 12.79 35.23 35.46 148.60 95.11 155.61 31.62 83.32 75.04 23.42 23.67 116.39 112.28 70.98 23.41 23.18 29.69 40.92 91.99 12.73 92.26 99.00 97.16 98.91 83.95 84.13 36.65 36.61 99.00 25.50 44.50 45.37 22.75 22.99 16.23 15.78 37.18 71.77 113.02 41.25 42.25 113.98 113.90 111.64 98.67 84.66 101.74 142.23 11.97 11.33 25.70 25.13 76.94 78.30 80.81 179.11 54.71 55.37 78.24 78.24 82.85 33.97 33.93 44.22 44.13 40.32 83.71 113.02 16.08 16.11 30.67 31.10 36.92 38.12 95.11 71.77 99.00 40.92 37.18 19.20 25.13 44.42 32.99 32.37 11.33 18.60 87.96 64.28 25.47 71.08 55.37 36.61 24.83 29.69 103.07 73.37 59.36 25.94 36.21 42.41 41.24 43.42 46.56 53.96 44.37 54.59 11.65 23.43 15.28 12.56 0.88
-A313FA34 October 22 2015 03_12.obj 85.72 93.33 22.01 28.68 33.37 27.12 26.89 39.37 38.89 48.59 48.59 27.12 26.89 43.65 44.89 56.20 56.19 43.70 43.42 97.17 20.66 18.77 36.38 32.26 32.03 30.68 92.96 13.47 39.27 39.25 148.07 96.51 139.79 33.13 71.32 79.87 25.29 25.44 104.27 102.22 73.76 24.67 25.33 32.26 36.82 87.98 12.81 93.17 106.03 101.09 105.45 72.14 71.74 36.13 36.56 106.04 26.00 46.80 46.72 26.14 27.03 11.54 11.36 38.38 73.90 103.58 41.73 43.84 104.42 104.67 112.55 103.82 76.21 99.03 128.71 11.55 9.68 25.22 23.15 72.42 72.66 81.81 163.93 57.04 57.50 66.24 66.24 82.32 35.87 35.63 40.91 39.96 45.27 82.74 103.58 17.35 16.82 34.28 33.05 39.92 39.95 96.51 73.90 106.03 36.82 38.38 19.79 23.15 38.81 28.68 33.37 9.68 20.60 85.84 61.55 25.63 68.35 57.50 36.56 26.89 32.26 94.47 62.22 56.19 30.68 33.11 42.71 39.97 38.56 47.04 56.50 51.37 54.61 10.25 22.20 14.52 13.46 1.09
-A315FL22b November 4 2015 01_17.obj 86.22 89.34 17.38 29.22 29.20 25.80 26.54 39.83 40.38 47.46 47.81 25.85 26.54 40.02 38.92 53.41 52.23 41.02 42.12 84.84 21.12 18.55 37.87 26.58 26.18 24.14 80.10 12.04 38.08 38.98 147.44 82.55 143.05 32.09 71.96 70.00 25.76 23.49 106.49 106.08 67.16 23.87 23.79 26.58 43.63 90.60 11.80 82.56 98.11 96.92 97.46 72.57 72.79 37.74 38.51 98.09 23.50 46.36 47.07 25.25 26.75 11.91 11.87 36.14 70.31 98.54 38.84 36.90 100.18 99.79 103.04 96.53 72.90 94.48 130.53 11.35 11.72 21.66 22.95 68.64 69.65 79.05 166.67 55.93 56.51 66.88 66.88 73.83 36.91 37.08 39.58 39.48 38.00 80.82 98.54 16.27 15.47 28.64 27.04 34.03 35.97 82.55 70.31 98.11 43.63 36.14 18.45 22.95 46.22 29.22 29.20 11.72 17.90 88.09 56.09 23.60 62.89 56.51 38.51 26.54 26.58 89.28 62.70 52.23 24.14 30.61 39.51 41.24 43.53 42.52 48.50 49.18 48.86 9.20 19.69 14.29 11.47 1.25
-A316FR21a November 4 2015 01_31.obj 85.41 88.71 17.81 25.83 31.27 23.98 26.54 37.67 33.49 45.09 45.32 23.98 25.16 41.32 41.26 53.94 54.83 41.34 43.31 89.40 24.44 19.55 33.03 27.62 26.76 25.94 85.56 14.52 37.26 36.91 140.05 88.31 136.26 31.94 70.90 73.55 22.35 22.93 101.97 99.51 72.16 22.58 23.35 27.62 39.95 87.67 11.41 86.00 95.10 93.91 95.06 71.40 71.72 35.67 34.95 95.10 23.00 44.63 46.33 23.00 24.32 11.30 11.04 37.45 73.18 98.51 40.27 40.30 99.38 99.22 106.85 93.18 72.42 95.91 124.11 11.93 9.38 23.59 24.72 68.03 71.12 81.13 160.36 55.04 55.90 65.82 65.82 76.63 33.50 32.91 38.72 38.37 37.14 82.34 98.51 15.63 15.74 29.47 29.68 36.62 36.93 88.31 73.18 95.10 39.95 37.45 20.73 24.72 40.02 25.83 31.27 9.38 18.30 85.84 56.81 22.81 63.61 55.90 34.95 25.16 27.62 89.61 61.99 54.83 25.94 31.90 41.03 41.25 42.28 43.01 48.24 47.44 47.60 9.81 19.09 16.42 12.43 0.71
-A317FR24a November 4 2015 01_40.obj 85.32 92.53 15.30 32.00 30.60 25.05 24.80 36.64 36.98 45.84 44.80 25.15 24.80 43.00 42.13 53.32 53.55 41.38 42.57 92.01 21.24 18.98 39.56 25.34 26.78 25.73 87.11 11.84 37.60 36.62 135.23 91.80 142.57 32.62 77.22 69.36 23.43 23.28 103.95 104.86 72.44 22.87 23.21 25.34 40.09 87.29 11.44 88.75 91.55 90.44 90.43 77.42 77.39 36.43 37.11 91.54 23.00 46.03 45.11 24.13 23.96 11.78 11.61 37.60 73.81 102.56 40.04 40.68 103.32 103.15 103.74 90.12 78.00 94.28 129.92 11.52 10.58 22.63 23.19 70.96 70.70 80.03 169.30 55.05 55.00 72.14 72.14 79.45 35.11 33.92 40.52 40.37 37.75 81.07 102.56 15.98 15.83 29.16 30.14 33.73 35.63 91.80 73.81 91.55 40.09 37.60 20.06 23.19 41.84 32.00 30.60 10.58 16.90 85.62 57.30 22.89 64.10 55.00 37.11 24.80 25.34 93.16 67.82 53.55 25.73 31.45 41.67 39.34 41.85 43.33 47.60 43.89 47.60 10.03 18.47 13.86 12.29 0.59
-A318FL22a November 4 2015 01_49.obj 79.86 84.40 14.82 29.07 31.07 23.11 22.69 36.16 36.24 43.39 43.18 22.98 22.69 37.21 39.38 50.42 51.60 40.35 40.56 84.36 18.69 17.99 39.76 23.49 25.26 23.79 79.30 13.80 35.45 35.63 132.03 80.62 135.17 36.84 69.58 61.20 23.02 23.33 101.06 97.98 66.46 22.72 22.91 23.49 37.01 84.04 11.49 85.15 90.39 89.37 88.49 70.28 70.26 35.15 34.89 90.39 23.00 42.93 42.54 21.99 22.12 11.09 11.12 40.40 70.09 93.07 35.85 38.57 93.58 93.46 101.24 85.89 79.42 98.06 121.83 13.21 10.45 24.52 23.59 66.83 69.00 76.33 157.99 51.80 51.85 64.50 64.50 71.91 34.12 33.72 37.46 37.34 37.86 78.01 93.07 14.09 15.07 27.80 25.38 30.46 30.74 80.62 70.09 90.39 37.01 40.40 14.69 23.59 42.83 29.07 31.07 10.45 16.10 82.34 52.12 22.99 58.92 51.85 34.89 22.69 23.49 84.30 60.81 51.60 23.79 30.55 37.33 40.62 39.09 40.63 44.44 41.72 48.61 8.67 13.52 15.88 11.94 0.39
-A321FR23e November 4 2015 02_17.obj 86.48 91.51 17.47 26.83 33.39 26.05 25.68 39.91 39.67 46.85 46.76 26.11 25.68 40.21 41.08 52.76 51.63 41.74 40.63 93.46 22.47 18.66 38.32 27.30 28.91 25.61 90.01 13.41 37.92 37.87 138.06 92.74 141.74 38.13 74.04 72.92 24.40 24.06 106.33 104.74 75.81 24.37 23.97 27.30 38.37 88.83 11.93 89.97 94.20 93.03 93.96 74.27 74.29 39.73 39.72 94.20 23.50 47.09 47.05 24.99 24.74 11.80 11.44 42.49 75.26 101.34 38.34 38.93 102.41 101.97 107.75 92.99 75.31 97.56 127.92 11.80 9.92 27.13 26.59 68.34 69.32 83.62 164.45 53.12 54.32 68.96 68.96 81.07 37.12 36.65 37.95 38.48 40.08 85.15 101.34 16.49 15.86 28.42 27.62 35.44 37.48 92.74 75.26 94.20 38.37 42.49 18.41 26.59 43.26 26.83 33.39 9.92 19.00 86.99 57.88 23.86 64.68 54.32 39.72 25.68 27.30 92.21 64.90 51.63 25.61 30.36 41.94 43.14 42.38 43.96 47.61 44.33 49.82 9.83 20.27 16.60 12.48 0.62
-A322FL20b November 4 2015 02_30.obj 92.49 87.80 13.73 27.46 31.70 26.16 26.46 39.66 39.96 50.40 50.16 26.24 26.46 42.39 43.86 54.49 55.63 41.83 41.63 93.98 24.90 18.61 41.87 26.59 29.71 28.65 89.51 12.92 40.68 41.38 143.99 91.39 138.01 32.84 74.07 75.56 25.18 23.09 99.88 100.13 74.35 24.73 23.12 26.59 36.63 93.09 13.04 92.50 97.04 95.56 95.73 74.53 74.91 40.16 41.28 97.09 26.50 50.72 50.97 25.45 26.55 11.37 11.17 36.40 74.24 100.66 42.06 44.51 102.17 101.73 109.06 96.44 74.23 101.33 123.00 12.09 10.86 24.44 23.93 71.52 72.01 84.41 160.85 56.86 57.11 68.99 68.99 77.70 37.47 38.44 38.25 38.41 39.69 87.73 100.66 15.94 15.78 32.71 30.47 36.00 39.56 91.39 74.24 97.04 36.63 36.40 20.71 23.93 35.47 27.46 31.70 10.86 16.70 89.01 57.29 26.09 64.09 57.11 41.28 26.46 26.59 91.72 65.13 55.63 28.65 31.26 44.51 43.14 44.96 47.41 50.78 45.57 51.41 12.86 23.65 17.81 13.60 1.07
-A324FR21a November 4 2015 02_47.obj 81.33 96.68 17.47 23.85 29.80 24.08 24.03 34.44 33.67 40.54 42.50 24.01 24.03 44.83 35.12 56.89 57.41 45.50 46.37 84.13 21.99 18.71 36.02 27.87 23.35 21.81 76.71 11.65 33.59 33.64 132.98 82.46 142.49 30.35 79.21 71.20 22.43 21.38 104.19 104.50 69.19 21.86 21.22 27.87 34.70 85.63 13.27 81.16 89.78 88.57 89.26 79.71 80.10 34.35 33.13 89.78 26.50 40.95 41.90 22.67 22.76 11.89 11.68 34.91 67.83 107.08 43.93 36.20 108.53 108.06 103.30 89.01 72.40 93.58 130.06 11.37 11.18 25.62 25.55 72.04 72.17 75.86 166.25 47.66 49.88 74.13 74.13 72.12 31.39 30.50 40.60 40.40 42.22 77.34 107.08 15.06 14.38 26.63 26.14 34.82 36.38 82.46 67.83 89.78 34.70 34.91 16.59 25.55 40.19 23.85 29.80 11.18 19.40 81.08 60.87 26.54 67.67 49.88 33.13 24.03 27.87 97.85 69.98 57.41 21.81 33.40 38.57 38.71 37.39 43.79 49.06 41.48 48.24 10.40 21.94 17.20 11.52 0.98
-A332FR20a November 4 2015 03_53.obj 96.43 89.36 17.99 32.23 33.38 26.32 26.87 38.35 38.57 44.80 45.16 26.26 26.87 41.56 40.14 54.00 53.37 42.00 41.52 97.59 23.09 18.60 37.59 28.68 27.82 26.11 96.19 13.85 37.93 38.62 144.60 98.56 139.80 31.59 71.37 75.95 24.47 23.88 101.96 103.13 80.90 23.35 23.24 28.41 38.42 98.47 12.29 93.43 107.36 105.05 107.13 72.26 72.04 37.41 37.50 107.35 24.51 43.56 44.27 24.47 25.35 10.02 10.02 34.90 83.63 100.06 40.21 39.92 101.12 100.93 112.72 105.43 76.30 103.11 125.36 11.94 10.98 28.45 27.94 71.07 70.38 90.10 164.89 55.18 56.70 66.29 66.29 81.00 36.59 36.57 37.99 37.79 44.15 90.92 99.98 16.15 15.67 30.10 29.87 36.31 39.64 98.56 83.63 107.36 38.42 34.90 19.18 27.94 42.90 32.23 33.38 10.98 21.00 96.36 58.96 24.68 65.76 56.70 37.50 26.87 28.68 92.73 64.05 53.37 26.11 29.76 46.45 44.42 47.44 48.84 54.59 50.13 57.18 10.70 20.81 16.55 12.27 0.95
-A333FR21a November 4 2015 03_58.obj 78.01 89.26 16.01 30.64 28.90 24.48 24.52 35.40 35.63 42.90 42.55 24.49 24.52 36.25 35.84 54.09 51.77 41.89 42.13 85.20 19.78 18.06 35.22 23.75 23.50 23.60 80.90 13.38 34.81 35.52 138.25 82.72 140.58 30.18 73.25 62.76 22.50 21.91 104.98 103.13 62.69 22.82 22.55 23.75 41.99 83.98 11.43 82.01 91.16 90.04 89.10 73.77 73.94 35.01 35.17 91.15 23.00 42.79 42.49 23.83 24.32 11.61 11.41 34.64 65.56 97.00 36.25 35.88 97.67 97.80 100.75 87.41 73.53 93.96 127.49 11.13 9.03 23.48 21.94 68.23 69.37 72.68 166.56 49.01 49.09 68.17 68.17 74.10 32.37 32.52 38.72 38.41 38.94 75.23 97.00 15.81 15.51 26.46 26.12 30.90 31.86 82.72 65.56 91.16 41.99 34.64 17.86 21.94 44.26 30.64 28.90 9.03 15.00 82.41 53.88 22.87 60.68 49.09 35.17 24.52 23.75 87.74 64.00 51.77 23.60 30.25 36.45 38.70 38.37 39.51 45.70 41.15 49.95 7.74 16.13 12.86 10.91 0.81
-A334FR21 November 4 2015 04_02.obj 80.10 92.73 19.01 24.70 27.60 27.43 26.18 38.84 37.78 44.61 45.39 25.73 26.18 45.19 44.70 52.09 52.20 37.50 34.94 81.45 21.64 19.08 34.80 28.77 26.97 28.09 80.85 13.32 35.06 35.54 156.70 83.53 144.46 34.07 73.72 73.05 23.50 26.23 110.75 110.77 69.38 23.50 24.96 28.77 41.07 85.74 12.58 79.31 92.10 90.70 92.03 73.83 73.91 37.47 36.91 92.09 25.00 44.26 45.13 25.09 25.77 12.08 11.92 53.12 66.25 102.48 96.49 42.19 103.45 103.27 100.95 90.98 74.86 93.41 131.43 8.68 8.32 23.30 22.16 66.64 65.73 74.32 167.80 50.97 52.45 68.64 68.64 72.23 34.68 34.40 39.80 39.04 49.33 76.39 102.48 16.23 15.96 28.23 28.69 36.00 37.06 83.53 66.25 92.10 41.07 53.12 19.13 22.16 41.21 24.70 27.60 8.32 18.20 81.02 59.09 25.16 65.89 52.45 36.91 26.18 28.77 93.16 64.39 52.20 28.09 28.35 38.90 37.43 37.56 42.39 48.24 42.52 49.51 9.76 20.82 15.64 13.09 0.79
-A339FA22 November 13 2015 10_55.obj 91.43 88.56 16.58 25.33 30.48 24.67 25.37 38.96 38.56 45.10 45.34 24.64 25.37 43.90 43.40 49.17 50.65 39.19 39.68 88.32 19.01 18.42 40.92 28.99 28.58 27.77 84.35 12.98 35.53 35.67 135.80 86.93 139.92 46.19 71.98 76.71 25.98 24.58 106.68 104.16 72.54 24.61 24.21 28.99 35.13 92.05 12.67 85.47 98.50 96.21 98.14 72.81 72.47 38.51 38.04 98.49 25.50 44.98 45.16 23.69 24.60 13.82 11.32 43.83 73.41 100.97 39.20 40.62 102.18 101.67 108.33 96.60 73.13 96.98 127.27 12.59 11.20 23.60 23.98 65.19 69.17 83.47 161.33 54.90 56.05 66.90 66.90 77.58 35.49 35.21 35.05 35.11 37.68 86.03 100.97 16.90 16.32 30.70 31.12 36.74 39.98 86.93 73.41 98.50 35.13 43.83 16.01 23.98 39.75 25.33 30.48 11.20 17.90 89.50 58.67 25.35 65.47 56.05 38.04 25.37 28.99 92.01 63.02 50.65 27.77 29.65 45.36 40.61 45.60 45.69 50.78 44.33 54.13 12.41 21.97 16.00 12.43 0.70
-A344FA21 November 13 2015 12_08.obj 102.69 97.47 17.50 31.43 34.90 28.20 28.27 41.06 41.39 51.93 52.39 28.37 28.27 48.95 49.63 58.93 58.55 44.07 44.77 100.43 28.78 19.11 43.05 30.25 31.96 32.77 96.32 14.78 39.72 39.75 147.25 100.36 149.44 35.22 79.97 80.62 26.57 26.86 111.94 108.38 83.09 26.49 26.63 30.25 41.18 103.07 13.13 99.81 110.12 106.86 109.93 80.53 80.40 39.43 39.88 110.11 26.50 51.02 51.45 26.34 26.55 10.76 10.72 40.22 83.11 110.22 47.61 48.37 111.15 111.02 123.74 109.35 81.24 114.36 135.42 13.08 13.41 28.31 28.30 77.18 79.18 98.86 174.93 64.16 65.54 74.89 74.89 83.89 38.03 37.86 42.41 41.82 41.50 101.47 110.22 17.01 17.14 34.65 36.00 39.73 40.88 100.36 83.11 110.12 41.18 40.22 23.63 28.30 40.50 31.43 34.90 13.41 20.60 101.48 64.41 26.25 71.21 65.54 39.88 28.27 30.25 102.45 72.20 58.55 32.77 35.02 53.82 47.59 48.31 54.27 59.06 51.67 58.40 12.75 23.76 19.46 14.29 0.80
-A345FR21 November 13 2015 11_12.obj 76.97 83.45 17.96 28.21 31.16 24.88 24.95 37.17 38.88 44.97 46.19 24.89 24.95 41.55 40.51 49.23 47.90 37.36 36.52 88.21 19.65 18.20 35.49 28.62 27.97 26.47 81.97 11.42 36.07 36.50 145.18 85.66 131.79 31.05 65.49 73.21 23.24 23.18 100.58 99.02 70.85 23.01 22.80 28.62 37.44 81.94 13.39 85.40 91.43 87.95 90.17 65.77 65.81 35.76 36.11 91.43 27.00 44.15 45.44 24.35 24.87 10.78 10.67 34.14 64.40 94.11 40.06 39.52 95.21 94.70 102.52 89.49 66.07 93.51 120.82 10.99 9.19 23.50 23.63 63.59 64.40 69.24 155.08 51.61 52.86 60.41 60.41 78.73 34.10 34.43 35.47 34.71 39.33 71.69 94.11 15.96 15.61 31.58 28.83 36.84 36.37 85.66 64.40 91.43 37.44 34.14 18.17 23.63 42.03 28.21 31.16 9.19 16.60 76.04 55.37 26.78 62.17 52.86 36.11 24.95 28.62 85.49 56.87 47.90 26.47 28.03 35.48 36.16 35.89 40.96 49.01 42.51 48.87 10.66 22.48 13.77 12.18 0.59
-A348FA20 November 13 2015 12_17.obj 89.94 90.38 16.59 34.62 31.79 24.96 24.84 38.77 39.13 47.67 48.81 25.16 24.84 45.29 45.36 56.32 56.20 44.45 44.59 96.65 26.24 19.60 45.96 26.18 28.25 26.10 93.62 14.11 37.33 37.35 139.15 96.42 137.56 34.60 73.80 69.87 25.27 24.47 100.26 98.41 78.68 24.48 24.25 26.18 41.68 91.39 11.02 94.96 105.21 104.52 104.96 74.05 74.17 37.25 37.28 105.21 22.00 46.51 47.79 23.80 24.14 11.48 11.59 39.79 78.12 99.98 39.99 42.27 100.71 100.65 113.85 102.95 75.11 103.42 126.87 13.47 11.92 25.21 26.88 75.29 76.56 85.94 161.61 58.25 59.79 68.72 68.72 81.88 35.64 35.20 39.17 39.75 39.86 87.46 99.98 17.66 16.08 30.43 30.64 34.87 35.00 96.42 78.12 105.21 41.68 39.79 21.95 26.88 43.31 34.62 31.79 11.92 19.40 90.64 56.73 22.04 63.53 59.79 37.28 24.84 26.18 91.00 64.82 56.20 26.10 35.26 44.89 42.52 45.40 44.42 52.05 50.12 55.04 9.59 18.64 17.33 12.77 0.67
-A349FA21 November 13 2015 12_20.obj 94.76 106.53 18.93 33.95 31.39 24.66 24.73 41.04 40.27 50.38 50.37 24.68 24.73 42.98 47.14 61.09 59.50 48.70 47.23 92.76 26.97 19.48 46.96 31.01 28.74 28.12 85.37 14.08 37.04 37.42 144.36 90.60 157.44 34.31 87.60 79.33 24.42 25.09 116.18 111.58 81.30 24.80 25.15 31.01 40.40 96.93 13.89 90.63 106.82 102.64 106.47 88.04 88.00 38.82 38.83 106.81 28.00 49.67 49.85 23.63 23.85 13.63 13.21 61.48 73.38 118.61 40.64 42.73 119.99 119.39 111.81 106.16 88.62 105.20 142.17 13.71 11.57 25.40 23.01 79.93 81.18 88.70 179.86 61.54 60.81 82.52 82.52 79.62 36.58 35.96 46.80 46.09 41.06 92.33 118.61 17.04 17.52 30.75 29.47 38.55 40.78 90.60 73.38 106.82 40.40 61.48 25.74 23.01 37.01 33.95 31.39 11.57 19.30 92.40 67.63 27.78 74.43 60.81 38.83 24.73 31.01 108.62 77.61 59.50 28.12 35.94 46.57 45.69 46.06 48.55 53.96 49.53 57.26 12.08 25.00 15.12 13.02 0.78
-A350FL21 November 13 2015 12_26.obj 84.79 88.13 16.07 24.59 29.66 24.99 24.43 35.79 36.55 46.01 46.06 25.07 24.43 35.20 37.82 52.85 51.75 40.54 40.43 83.36 22.12 18.82 32.91 25.02 25.96 23.49 81.45 11.13 36.26 36.33 145.22 84.07 143.52 34.69 72.06 65.32 21.69 22.06 110.99 108.58 68.40 20.90 21.71 25.02 45.86 86.91 10.31 82.03 93.60 93.60 93.60 72.26 72.32 36.89 37.94 93.60 20.50 46.38 46.51 22.78 22.77 12.38 10.02 38.40 74.41 97.08 36.91 37.47 97.41 97.77 103.46 91.93 75.99 95.02 131.10 10.81 9.87 23.88 22.42 66.08 67.26 81.43 166.48 53.57 54.21 66.98 66.98 71.89 33.56 33.37 39.46 38.74 37.84 83.19 97.08 14.03 16.15 28.64 26.29 32.48 32.83 84.07 74.41 93.60 45.86 38.40 17.53 22.42 47.15 24.59 29.66 9.87 16.20 86.54 52.01 20.62 58.81 54.21 37.94 24.43 25.02 89.68 64.66 51.75 23.49 29.97 42.50 40.62 42.40 42.28 48.24 41.75 51.81 8.95 16.14 16.34 11.69 0.69
-A352FL21 November 13 2015 12_31.obj 75.39 90.68 18.65 25.50 29.84 25.76 25.74 36.89 37.27 45.58 45.85 25.80 25.74 37.15 40.37 53.60 51.77 42.02 42.49 84.24 23.58 18.49 37.68 27.64 24.73 23.22 80.43 13.72 35.29 36.41 143.68 83.09 142.96 30.52 72.03 70.95 22.50 22.70 104.75 101.76 63.44 22.29 22.21 27.64 39.56 83.23 12.28 82.83 93.76 91.98 93.34 72.31 72.27 35.46 36.66 93.76 24.50 44.81 45.68 22.74 23.03 14.09 13.86 36.59 62.75 99.67 36.10 37.92 101.11 100.57 103.34 92.56 73.00 95.90 126.64 11.00 10.83 25.94 26.15 69.18 70.59 69.66 164.85 53.31 53.60 66.95 66.95 69.26 34.12 34.36 38.12 38.72 38.29 71.45 99.67 16.31 17.16 26.49 26.81 34.64 36.31 83.09 62.75 93.76 39.56 36.59 19.11 26.15 42.91 25.50 29.84 10.83 16.80 78.29 57.24 24.56 64.04 53.60 36.66 25.74 27.64 90.51 62.87 51.77 23.22 31.47 37.13 34.26 35.10 40.14 50.15 43.66 50.03 8.99 21.06 16.28 11.73 0.90
-A353FL21 November 13 2015 12_34.obj 91.04 89.74 15.67 34.00 31.69 22.76 24.39 38.19 37.74 48.13 48.45 22.76 22.91 43.54 45.54 52.43 52.45 41.00 41.06 92.38 24.64 19.11 44.32 29.17 30.00 27.73 90.75 13.04 35.71 36.00 143.28 92.91 141.52 31.56 74.07 75.12 23.71 23.42 106.72 104.34 71.99 23.39 23.17 29.17 38.97 91.27 13.43 90.02 97.32 93.74 96.44 74.40 74.33 36.86 36.42 97.31 27.00 47.62 48.00 22.66 22.60 11.72 11.53 35.14 73.19 103.24 39.85 43.03 103.96 104.27 113.44 94.13 74.80 100.97 129.63 14.17 12.91 25.72 24.39 71.71 72.30 85.19 163.79 56.33 56.42 68.99 68.99 77.11 33.70 33.33 38.63 38.61 37.97 88.01 103.24 16.38 15.36 32.05 30.50 36.67 38.45 92.91 73.19 97.32 38.97 35.14 20.75 24.39 38.16 34.00 31.69 12.91 18.30 89.46 59.78 26.85 66.58 56.42 36.42 22.91 29.17 94.14 64.97 52.45 27.73 32.22 44.80 43.15 45.26 45.69 50.78 44.34 52.93 13.50 20.99 17.85 13.80 1.03
-A354FR21 November 17 2015 02_24.obj 83.49 95.54 17.92 33.40 32.20 23.66 23.45 37.42 36.66 45.79 46.21 23.69 23.45 39.88 38.48 57.04 57.67 44.54 46.00 93.25 23.09 18.45 40.57 27.55 26.39 24.28 86.82 12.56 34.02 33.75 144.96 90.72 148.04 35.27 77.62 72.20 23.10 22.24 108.63 107.72 69.70 23.49 23.16 27.55 41.65 88.89 12.67 90.23 97.42 96.50 97.03 78.44 78.32 37.53 36.79 97.42 25.50 45.98 46.41 22.50 22.74 12.14 12.14 39.03 70.91 105.17 39.97 38.48 105.87 106.17 108.39 96.24 78.32 100.56 133.16 11.33 12.42 25.44 25.81 73.77 76.33 78.40 171.21 54.23 54.59 72.54 72.54 81.81 33.70 33.33 39.21 37.70 39.67 80.60 105.17 17.04 16.32 28.55 27.69 35.95 36.24 90.72 70.91 97.42 41.65 39.03 20.03 25.81 45.08 33.40 32.20 12.42 15.60 84.48 59.64 25.35 66.44 54.59 36.79 23.45 27.55 95.66 68.11 57.67 24.28 32.27 42.49 38.07 42.78 40.60 49.52 44.29 53.08 9.63 19.70 15.42 12.08 1.00
-A357FR22 November 17 2015 02_29.obj 86.02 90.97 16.01 21.50 30.59 25.81 25.71 36.55 37.18 45.25 45.63 25.86 25.71 40.78 49.78 55.64 54.86 42.94 42.45 83.83 24.43 18.86 36.36 31.95 30.74 26.46 82.84 11.13 36.58 36.52 139.59 85.01 144.69 35.94 74.96 77.07 24.56 23.49 108.30 105.56 69.74 23.65 23.23 31.95 35.69 86.18 15.73 81.87 98.61 90.93 96.46 75.59 75.62 35.15 37.80 98.61 31.50 44.25 44.55 24.35 24.39 10.19 10.19 40.92 69.83 106.91 40.74 42.45 107.73 108.12 108.57 93.58 75.12 97.08 130.30 11.06 11.14 26.57 26.35 70.02 71.63 82.05 167.21 55.18 55.60 69.88 69.88 75.36 34.57 34.07 40.16 39.94 43.68 83.58 106.91 17.84 16.70 29.96 28.52 38.16 38.91 85.01 69.83 98.61 35.69 40.92 20.27 26.35 38.36 21.50 30.59 11.14 21.00 81.14 63.89 31.45 70.69 55.60 37.80 25.71 31.95 99.48 67.53 54.86 26.46 32.07 42.26 41.23 40.36 45.56 48.88 46.25 52.30 15.94 23.70 17.99 13.85 1.21
-A358FR22 November 13 2015 12_45.obj 94.23 94.33 17.84 32.36 34.80 26.58 24.18 36.63 37.48 47.09 48.91 24.93 24.18 45.36 45.66 53.15 53.39 41.66 41.98 99.20 24.51 18.58 42.09 28.45 30.11 28.57 94.65 14.65 37.54 37.89 140.93 99.91 144.67 33.94 76.49 74.72 25.00 25.64 107.66 104.03 81.65 24.43 25.48 28.45 38.23 95.53 11.55 96.49 102.43 101.35 102.41 76.60 76.64 38.99 40.74 102.43 23.00 48.70 51.88 23.86 24.02 11.74 11.74 37.68 82.26 104.94 42.33 44.55 105.64 105.26 118.46 101.58 78.18 106.68 129.43 13.99 12.38 29.27 29.36 71.11 73.32 90.07 166.20 57.53 61.13 71.41 71.41 84.64 35.32 35.23 42.43 40.38 40.76 91.78 104.94 16.86 17.42 32.75 32.93 37.35 37.37 99.91 82.26 102.43 38.23 37.68 20.62 29.36 42.63 32.36 34.80 12.38 19.40 93.93 56.36 23.09 63.16 61.13 40.74 24.18 28.45 95.71 67.26 53.39 28.57 32.95 46.67 45.06 46.54 47.57 53.31 50.33 52.05 10.61 20.70 17.79 13.24 0.32
-A359FR22 November 13 2015 12_51.obj 89.03 79.53 10.14 29.06 29.89 26.65 25.96 36.68 35.33 45.71 44.10 26.56 25.96 39.32 40.91 50.35 53.27 39.18 41.46 85.75 20.76 17.72 36.26 27.34 26.53 25.49 85.06 12.61 36.26 37.53 131.34 87.49 134.97 38.44 69.39 70.39 24.17 22.40 101.58 98.71 68.48 24.18 23.17 27.34 35.39 83.38 11.09 83.83 91.34 91.17 91.34 69.66 69.58 36.54 37.18 91.34 22.00 45.69 45.39 25.11 24.74 9.53 9.53 46.45 67.65 96.72 37.99 40.36 97.44 97.20 102.76 90.84 71.02 92.95 121.96 10.55 9.10 25.36 25.32 65.13 67.99 75.15 158.65 52.26 51.56 64.31 64.31 76.23 34.29 34.27 37.66 37.66 35.81 76.94 96.72 16.24 16.59 27.49 27.19 34.50 35.89 87.49 67.65 91.34 35.39 46.45 16.41 25.32 39.51 29.06 29.89 9.10 17.20 81.56 53.37 22.18 60.17 51.56 37.18 25.96 27.34 89.67 62.34 53.27 25.49 30.67 39.45 37.42 40.08 48.86 49.50 40.41 50.88 17.19 19.48 17.17 12.48 0.48
-A360FR21 November 13 2015 12_57.obj 91.50 88.77 13.62 31.18 32.20 23.22 23.08 38.42 34.94 46.49 44.36 23.30 23.08 43.57 44.21 51.06 52.01 40.83 41.33 90.44 23.26 17.65 45.15 27.40 26.19 25.15 88.98 13.43 37.78 37.31 137.22 89.98 144.83 62.18 75.15 73.77 23.68 24.21 108.51 108.38 75.48 23.36 23.76 27.40 38.15 89.74 11.76 89.36 97.17 95.56 96.74 75.49 75.71 38.98 36.66 97.17 23.50 47.07 45.91 23.52 23.33 13.00 13.00 62.70 78.39 102.55 37.88 39.17 103.15 103.59 110.27 96.10 76.38 99.44 132.14 15.43 14.47 28.23 26.01 72.67 71.81 84.44 167.18 52.61 53.95 70.07 70.07 77.14 35.52 34.07 39.03 40.66 37.28 85.49 102.55 15.90 16.77 28.79 28.86 36.46 37.31 89.98 78.39 97.17 38.15 62.70 14.82 26.01 42.27 31.18 32.20 14.47 19.00 86.96 56.42 23.52 63.22 53.95 36.66 23.08 27.40 89.55 62.15 52.01 25.15 31.33 43.55 41.88 45.15 46.22 50.78 45.07 52.04 13.78 21.18 19.99 12.37 1.04
-A361FR21 November 13 2015 01_02.obj 107.12 86.72 14.21 32.93 32.69 27.91 27.50 52.60 42.35 57.87 54.38 28.06 27.50 54.97 48.88 53.70 51.88 39.03 38.96 102.05 26.94 18.77 40.06 29.48 36.48 36.39 99.89 17.56 39.11 39.92 145.51 101.20 141.96 48.26 72.51 81.30 30.18 28.78 104.14 104.72 83.25 27.94 27.91 29.48 39.87 104.06 12.67 97.91 111.28 108.58 111.19 72.62 73.30 40.93 40.96 111.28 25.00 52.57 53.88 26.52 25.63 10.14 10.14 51.26 84.57 101.99 50.43 48.88 103.21 103.34 120.51 108.80 73.81 108.81 126.48 10.91 7.22 28.75 29.01 70.62 69.77 92.45 165.68 63.69 65.80 67.43 67.43 87.29 38.29 39.13 37.14 38.28 36.92 95.42 101.99 19.57 19.03 37.84 38.07 40.39 40.91 101.20 84.57 111.28 39.87 51.26 22.27 29.01 42.43 32.93 32.69 7.22 20.20 98.78 60.28 25.34 67.08 65.80 40.96 27.50 29.48 94.63 65.14 51.88 36.39 31.47 49.04 46.33 54.82 52.16 54.18 56.02 55.22 15.27 21.13 19.67 14.77 1.35
-A363FA22 November 13 2015 01_09.obj 89.04 105.16 20.37 33.23 29.38 25.57 25.53 37.00 36.64 43.88 44.91 25.70 25.53 43.50 47.41 57.81 60.56 47.66 49.66 84.40 27.12 19.89 46.53 30.72 26.44 25.78 77.56 15.52 35.45 35.75 147.64 81.13 157.06 36.91 84.79 78.63 23.14 23.92 117.73 114.90 70.79 23.00 23.58 30.72 42.29 91.91 12.73 88.19 101.63 99.28 101.64 85.15 84.99 35.16 35.51 101.64 25.50 43.36 44.20 23.91 24.13 16.08 15.99 41.47 72.15 115.51 39.13 42.20 116.17 116.63 109.42 100.06 86.45 103.24 143.66 13.74 12.28 22.50 24.47 78.11 80.51 85.85 180.87 53.90 55.69 79.71 79.71 72.11 33.78 33.16 45.26 44.60 35.79 87.74 115.51 16.45 17.20 30.84 30.60 38.06 40.57 81.13 72.15 101.63 42.29 41.47 20.75 24.47 39.69 33.23 29.38 12.28 16.90 89.23 65.96 25.46 72.76 55.69 35.51 25.53 30.72 105.47 74.75 60.56 25.78 36.12 43.90 43.78 41.97 46.94 53.96 47.00 54.60 10.35 21.74 19.36 12.73 1.12
-A364FA21 November 13 2015 01_13.obj 85.89 99.50 19.57 22.84 32.29 25.82 25.45 37.64 37.24 48.50 48.72 25.95 25.45 37.83 46.84 56.67 54.64 42.29 40.63 93.21 22.35 19.42 31.56 29.60 28.23 28.08 91.18 14.43 37.53 37.74 139.71 96.22 145.85 32.21 79.93 80.06 23.63 24.76 112.73 111.28 75.33 23.77 24.63 29.60 37.42 94.20 14.55 87.43 99.71 98.78 98.94 80.20 80.21 38.65 37.20 99.72 29.50 49.48 48.81 24.93 24.77 12.36 12.27 36.45 73.21 109.53 42.76 44.83 111.85 112.04 113.62 99.07 80.09 96.13 135.17 9.70 9.70 28.23 26.60 68.70 69.50 79.04 173.68 58.63 58.87 74.85 74.85 79.20 35.89 35.27 41.59 42.39 44.45 81.33 109.53 16.06 15.71 34.52 32.56 37.62 42.44 96.22 73.21 99.71 37.42 36.45 18.60 26.60 41.10 22.84 32.29 9.70 21.60 86.12 62.73 29.10 69.53 58.87 37.20 25.45 29.60 99.89 70.28 54.64 28.08 31.25 42.58 38.71 41.43 44.31 52.89 47.57 52.09 10.03 22.15 17.09 12.95 2.51
-A368FA31 11 December 2015 10_33.obj 87.83 92.42 15.97 27.85 31.69 25.22 25.35 36.57 35.73 47.98 48.11 25.12 25.35 47.11 50.32 52.98 50.72 41.30 40.48 95.96 22.86 19.21 40.91 25.53 28.04 26.82 91.83 17.27 37.32 38.24 130.66 95.28 141.97 33.02 76.45 70.59 24.29 24.92 104.14 103.12 71.99 23.68 24.58 25.53 37.39 91.05 12.51 90.95 91.76 90.40 90.44 76.84 76.79 34.92 35.26 91.78 25.50 47.05 47.99 23.93 24.10 11.47 11.35 38.46 73.62 101.98 46.01 46.82 102.87 102.36 113.70 90.33 76.61 100.85 127.93 12.67 13.16 27.44 25.27 70.13 69.01 82.64 162.73 55.22 56.93 71.37 71.37 75.80 33.79 34.02 40.75 40.44 44.48 83.88 101.98 16.42 16.53 30.20 29.19 34.21 36.37 95.28 73.62 91.76 37.39 38.46 18.43 25.27 40.52 27.85 31.69 13.16 22.20 88.90 57.31 25.03 64.11 56.93 35.26 25.35 25.53 92.94 67.41 50.72 26.82 31.74 45.76 38.07 42.10 45.60 48.87 40.46 51.26 9.56 19.98 17.16 12.61 0.38
-A369FA44 11 December 2015 10_44.obj 92.84 103.52 19.59 32.71 31.31 23.99 24.21 39.58 39.40 47.23 47.21 24.04 24.21 51.91 49.96 61.07 58.45 47.34 45.36 95.89 25.77 19.55 45.14 30.10 28.82 28.57 92.13 12.74 38.27 38.35 150.76 95.28 157.74 34.54 83.92 77.67 27.10 26.51 113.90 113.40 79.85 26.49 25.53 30.10 42.17 94.03 12.92 93.22 100.41 97.93 100.30 84.23 84.46 38.38 38.68 100.41 26.00 46.65 46.66 23.56 23.53 14.64 14.55 38.47 79.54 114.03 46.82 46.55 114.83 114.49 110.41 97.74 85.94 104.47 141.89 13.41 13.64 25.16 26.40 80.08 77.23 89.85 179.17 56.63 57.13 78.84 78.84 81.43 36.92 35.98 43.60 43.53 39.84 91.38 114.03 12.81 16.64 30.26 30.25 38.03 39.64 95.28 79.54 100.41 42.17 38.47 22.39 26.40 42.38 32.71 31.31 13.64 19.00 92.99 63.90 25.85 70.70 57.13 38.68 24.21 30.10 102.09 71.98 58.45 28.57 36.13 48.81 42.51 44.82 47.84 50.20 47.67 52.68 10.51 19.99 18.05 14.38 0.47
-A371FR-- 5 December 2015 11_18.obj 80.34 99.13 17.32 29.41 32.89 22.33 22.74 37.84 38.26 44.01 44.18 22.44 22.74 38.23 38.38 57.72 56.98 46.04 45.38 86.12 23.09 18.62 41.80 25.93 22.70 23.96 82.04 13.60 35.26 35.55 145.75 85.25 154.46 31.57 81.81 67.21 22.82 23.94 117.89 117.85 69.59 22.69 22.71 25.93 44.45 86.57 12.31 85.65 94.97 93.36 93.65 82.03 81.89 37.84 37.97 94.97 24.50 44.14 44.18 22.21 22.18 12.62 12.57 37.24 68.61 107.74 35.32 36.89 108.74 108.71 108.52 93.12 82.22 100.02 141.06 11.61 12.67 24.48 25.71 75.71 75.72 77.25 178.79 51.20 51.27 76.73 76.73 74.93 33.68 33.53 42.00 41.55 36.14 79.10 107.74 15.65 14.91 24.95 26.32 32.28 34.93 85.25 68.61 94.97 44.45 37.24 15.88 25.71 47.39 29.41 32.89 12.67 14.40 83.13 59.80 24.62 66.60 51.27 37.97 22.74 25.93 97.81 71.87 56.98 23.96 31.72 40.98 38.06 40.91 39.32 47.60 44.89 50.02 8.61 19.94 19.64 11.87 0.97
-A372F--- 5 December 2015 11_52.obj 86.83 92.81 19.80 35.70 32.59 20.36 21.14 36.68 37.07 43.01 42.77 20.36 20.55 46.52 41.67 54.88 52.87 40.91 41.25 93.94 24.30 19.03 41.73 30.21 27.80 28.43 90.55 12.47 33.76 34.50 141.47 93.78 143.45 32.88 73.01 77.25 24.54 24.37 106.79 105.06 77.46 24.03 23.41 30.21 38.91 88.84 12.75 93.25 94.88 93.27 94.86 73.61 73.53 35.05 35.61 94.88 25.50 41.82 42.16 20.50 20.74 11.02 11.02 37.03 78.18 103.21 42.38 40.49 103.80 103.68 112.08 94.56 74.49 104.13 128.27 11.63 11.85 25.10 25.58 71.94 72.27 84.38 165.37 51.84 52.43 67.93 67.93 84.28 32.15 32.18 39.05 39.06 38.34 84.91 103.21 16.58 15.79 29.81 28.80 37.30 39.95 93.78 78.18 94.88 38.91 37.03 20.93 25.58 38.81 35.70 32.59 11.85 18.40 86.87 58.67 25.49 65.47 52.43 35.61 20.55 30.21 92.19 61.98 52.87 28.43 30.30 44.25 40.61 42.52 44.21 47.61 45.97 48.87 10.41 23.56 16.40 12.67 0.47
-A373F--- 5 December 2015 12_40.obj 95.44 84.15 18.10 31.96 29.99 22.40 21.10 35.11 35.29 42.99 43.86 21.23 21.10 42.54 40.60 50.51 49.30 36.80 37.85 87.55 22.16 19.06 34.38 30.29 26.80 25.94 85.20 15.12 32.66 32.96 136.53 88.97 129.52 31.16 66.05 82.94 22.79 22.80 97.07 96.35 76.20 22.09 22.11 30.29 34.58 89.39 7.57 85.71 97.00 95.53 94.99 66.28 66.41 34.09 33.91 97.00 15.00 42.69 43.01 21.39 21.20 8.49 10.54 34.03 76.16 96.35 40.79 39.22 97.26 97.59 104.85 95.55 70.84 94.90 118.66 10.30 10.65 23.93 22.97 64.36 66.08 86.92 152.89 51.84 55.10 60.97 60.97 76.86 30.86 30.45 35.18 35.28 33.66 89.00 96.35 15.99 14.76 30.18 28.06 40.50 42.44 88.97 76.16 97.00 34.58 34.03 18.46 22.97 36.63 31.96 29.99 10.65 16.30 93.36 57.39 15.14 64.19 55.10 33.91 21.10 30.29 87.85 57.56 49.30 25.94 29.71 48.97 39.98 48.40 46.94 49.51 50.05 46.90 12.20 22.15 16.28 12.17 1.24
-A374F--- 5 December 2015 12_52.obj 89.62 87.14 16.81 35.30 30.68 24.14 24.97 42.05 40.26 54.75 53.49 24.27 24.97 48.79 48.96 56.02 53.75 42.19 41.09 95.38 25.52 19.18 41.90 26.59 29.53 30.11 92.57 13.97 41.61 40.26 139.04 97.16 135.25 32.67 70.34 70.70 24.45 25.85 99.26 98.77 74.01 24.42 25.38 26.59 41.29 93.08 12.22 92.54 103.85 102.30 102.99 70.71 70.81 44.03 41.62 103.85 24.50 55.37 54.01 24.48 25.32 8.81 8.81 35.57 76.97 96.92 43.65 45.48 97.81 97.91 112.01 99.31 71.01 103.27 123.80 11.41 12.29 27.71 27.38 73.09 71.58 85.06 158.55 62.27 62.82 65.26 65.26 78.22 38.84 37.25 39.38 39.94 36.13 86.09 96.92 17.40 16.31 32.42 32.32 33.83 36.87 97.16 76.97 103.85 41.29 35.57 22.02 27.38 42.89 35.30 30.68 12.29 19.00 90.17 52.08 24.45 58.88 62.82 41.62 24.97 26.59 88.11 61.53 53.75 30.11 33.29 44.78 41.24 45.09 44.41 51.41 46.29 57.51 9.78 17.53 18.17 14.31 0.99
-A375F--- 5 December 2015 01_38.obj 102.65 103.55 17.19 32.26 32.89 21.50 21.15 35.50 40.47 44.36 47.06 21.55 21.15 54.36 53.96 63.75 62.42 45.15 48.24 104.29 30.80 20.21 42.19 31.45 30.75 32.23 98.36 16.50 37.03 37.16 154.94 103.38 162.55 34.99 86.36 82.17 27.36 27.33 119.22 114.99 86.28 25.93 25.90 31.29 46.08 100.49 10.71 99.22 103.84 103.65 102.91 86.85 86.64 38.00 38.20 103.84 21.51 45.68 45.99 20.98 21.25 15.34 15.30 39.54 85.24 117.81 54.36 49.13 118.35 118.37 117.07 103.84 89.51 105.08 144.89 12.30 11.46 29.19 29.37 80.59 82.63 97.18 185.19 59.22 59.33 81.28 81.28 83.76 35.15 35.74 47.09 47.21 36.41 99.44 117.74 16.61 17.57 33.00 33.65 40.18 42.00 103.38 85.24 103.84 46.08 39.54 26.82 29.37 43.47 32.26 32.89 11.46 21.70 99.91 66.21 21.48 73.01 59.33 38.20 21.15 31.45 105.47 74.01 62.42 32.23 38.68 51.79 47.60 46.80 55.72 57.13 46.65 57.13 14.26 21.57 20.50 15.32 0.64
-A376F--- 5 December 2015 01_45.obj 100.98 97.79 16.83 34.54 30.88 23.27 21.69 40.17 41.36 48.33 49.88 21.76 21.69 47.50 47.16 61.82 62.68 46.84 50.39 94.65 28.84 18.85 43.19 31.07 30.83 29.82 89.45 16.32 36.79 37.68 146.54 93.83 150.99 35.50 80.95 81.63 25.81 25.14 109.24 107.72 82.26 24.78 24.84 31.07 41.47 100.49 13.37 91.36 111.22 106.34 111.16 81.50 81.87 39.55 40.67 111.22 26.50 48.07 49.78 21.68 21.69 14.55 14.47 41.67 75.18 112.03 44.26 42.67 113.64 113.44 110.83 110.50 82.32 101.99 136.10 11.03 10.13 27.21 27.16 78.58 81.87 95.90 175.61 62.41 63.62 75.87 75.87 74.35 35.94 36.18 43.68 42.63 33.46 97.18 112.03 16.86 16.12 32.14 30.91 39.66 41.96 93.83 75.18 111.22 41.47 41.67 23.90 27.16 40.55 34.54 30.88 10.13 20.80 96.43 63.58 26.75 70.38 63.62 40.67 21.69 31.07 100.32 69.25 62.68 29.82 36.58 48.89 48.23 50.68 50.12 57.13 54.05 57.12 14.24 24.36 19.23 13.37 1.42
-A377F--- 5 December 2015 01_56.obj 85.13 92.54 18.35 33.48 32.09 23.44 23.47 37.00 36.26 47.34 47.37 23.45 23.47 45.20 44.62 53.70 55.64 41.38 43.83 92.55 24.82 19.64 41.38 28.48 28.84 28.57 90.65 13.06 34.71 35.38 137.02 94.46 138.77 32.83 74.18 73.84 24.52 24.70 102.97 101.34 73.37 24.50 24.47 28.48 38.12 87.35 12.22 91.31 95.91 94.30 95.72 74.62 74.66 36.06 36.23 95.91 24.50 46.76 47.61 22.19 22.58 11.44 11.33 39.36 73.62 102.66 42.31 42.96 103.47 103.16 114.24 95.31 75.46 104.86 126.59 12.55 10.32 24.29 25.40 72.14 73.48 80.66 162.20 55.59 56.65 69.10 69.10 81.09 33.81 33.72 37.83 38.19 40.22 82.72 102.66 16.29 15.30 31.41 31.60 36.06 37.78 94.46 73.62 95.91 38.12 39.36 20.22 25.40 37.37 33.48 32.09 10.32 22.40 85.39 59.20 24.44 66.00 56.65 36.23 23.47 28.48 93.65 65.17 55.64 28.57 33.46 42.06 40.60 42.52 42.51 50.15 43.64 52.22 10.13 22.35 17.94 12.99 0.50
-A378F--- 5 December 2015 02_03.obj 94.30 96.72 16.78 28.39 32.04 23.77 24.63 38.33 39.13 48.72 49.48 23.88 24.63 49.99 53.02 57.52 57.18 43.69 43.82 95.90 25.27 19.33 39.32 27.66 29.16 29.88 93.47 13.79 36.78 37.43 145.25 95.57 148.31 35.18 79.94 72.48 25.69 26.13 110.38 108.84 80.92 25.18 25.84 26.96 42.40 95.37 11.80 93.16 104.09 103.06 103.93 80.09 80.10 36.53 36.70 104.09 23.51 47.70 48.00 23.73 23.69 12.42 12.29 38.67 84.35 107.59 47.45 48.26 108.02 107.83 111.12 101.62 81.13 100.42 136.47 12.04 12.38 26.88 26.84 73.71 75.63 93.88 172.43 59.46 59.65 74.86 74.86 83.63 34.70 35.50 43.44 43.38 43.12 93.47 107.37 16.00 16.56 31.04 31.58 35.21 37.27 95.57 84.35 104.09 42.40 38.67 21.74 26.84 43.58 28.39 32.04 12.38 22.10 94.65 60.83 23.89 67.63 59.65 36.70 24.63 27.66 98.02 70.36 57.18 29.88 35.15 47.09 46.33 45.96 48.23 52.69 48.18 55.86 10.87 18.90 17.97 14.34 0.46
-A379FA22 11 December 2015 11_36.obj 89.69 95.04 19.57 24.53 33.39 25.80 25.81 38.47 38.73 47.62 46.97 25.82 25.81 43.75 42.15 61.09 58.17 43.83 44.28 89.71 22.42 19.53 29.33 31.31 34.62 27.93 86.49 13.34 38.09 38.65 159.32 88.49 146.49 35.62 75.47 78.96 25.43 24.29 110.82 111.54 75.96 23.88 24.22 31.31 38.84 92.18 13.20 88.09 99.43 98.00 99.42 75.64 75.57 36.80 37.65 99.43 26.50 46.33 46.61 24.12 24.60 14.59 11.92 39.78 74.48 106.78 44.96 42.94 108.11 108.27 108.70 98.86 77.02 98.47 134.61 8.17 8.04 25.28 24.66 71.03 71.22 78.96 172.46 53.96 53.95 70.39 70.39 78.58 35.35 35.19 40.67 40.51 40.08 81.94 106.78 15.09 17.09 29.24 28.52 38.25 40.72 88.49 74.48 99.43 38.84 39.78 16.94 24.66 41.31 24.53 33.39 8.04 17.00 87.18 62.34 26.40 69.14 53.95 37.65 25.81 31.31 97.20 65.89 58.17 27.93 31.69 43.18 38.67 40.72 48.84 53.32 44.37 55.00 11.74 22.96 18.69 13.17 1.49
-A380FL23 11 December 2015 11_42.obj 90.31 100.33 20.67 31.28 31.60 24.58 27.15 41.43 39.57 48.58 48.75 24.58 25.37 44.53 44.79 60.03 57.02 44.29 44.95 92.98 32.77 20.31 43.70 33.22 32.13 29.55 91.36 15.55 36.79 37.63 157.71 93.54 151.37 46.58 79.66 82.69 25.84 25.06 113.24 111.89 73.89 25.47 24.98 33.22 46.07 91.63 15.06 90.10 100.30 94.99 99.98 80.18 80.55 36.87 37.51 100.30 30.00 47.28 48.21 24.79 25.60 11.62 14.01 52.98 73.99 112.88 45.41 42.73 114.17 113.96 110.39 97.21 80.64 100.85 138.65 7.61 12.34 24.36 24.80 78.09 78.10 83.20 174.31 55.94 57.42 74.58 74.58 80.75 33.93 33.49 43.36 42.95 41.20 85.05 112.88 16.64 17.94 33.65 31.69 40.43 42.25 93.54 73.99 100.30 46.07 52.98 28.42 24.80 41.24 31.28 31.60 12.34 19.50 87.85 65.15 30.12 71.95 57.42 37.51 25.37 33.22 101.26 68.04 57.02 29.55 33.39 43.74 41.24 42.04 48.16 54.09 45.02 55.23 12.55 23.54 14.91 13.48 1.08
-A381FR22a 11 December 2015 11_50.obj 81.54 90.41 18.35 25.12 29.20 24.41 23.95 36.84 36.39 43.29 43.29 24.38 23.95 35.05 34.99 52.09 51.96 40.19 39.97 80.08 22.19 18.65 30.24 27.86 23.76 24.12 80.23 11.24 34.97 35.34 137.54 81.67 139.90 32.24 72.06 69.90 22.27 23.17 108.14 106.11 68.96 21.37 22.69 27.86 37.56 83.64 10.65 79.22 90.46 90.25 90.25 72.13 72.24 35.51 35.77 90.45 21.50 42.66 43.11 24.39 24.22 11.86 9.32 37.19 66.09 99.92 34.78 37.28 100.91 100.56 101.42 89.56 74.13 90.66 127.26 10.44 8.37 23.52 25.07 64.66 65.38 75.01 167.85 49.70 50.26 66.98 66.98 71.64 34.07 33.85 38.72 37.11 34.62 77.64 99.92 15.15 16.05 25.70 27.19 35.02 34.87 81.67 66.09 90.46 37.56 37.19 14.62 25.07 42.06 25.12 29.20 8.37 15.00 82.62 57.39 21.30 64.19 50.26 35.77 23.95 27.86 90.60 62.74 51.96 24.12 29.72 38.88 38.71 38.74 42.65 48.24 40.90 49.51 9.51 18.44 19.15 11.53 0.64
-A384F--- 5 December 2015 02_33.obj 96.55 79.76 11.66 28.33 30.68 21.38 21.68 33.39 39.20 47.18 51.08 21.44 21.68 41.60 43.90 50.54 50.20 36.50 37.49 92.56 25.11 19.00 35.67 25.38 30.00 28.48 95.69 13.42 36.22 36.70 133.85 97.87 134.02 34.32 68.10 73.58 24.51 24.30 99.99 99.65 82.04 23.08 23.57 25.38 39.16 92.78 9.70 88.32 98.29 98.14 98.15 68.47 68.41 33.88 34.04 98.28 19.50 47.74 48.06 21.59 20.93 10.29 12.42 37.88 85.32 93.47 44.42 41.32 94.11 94.16 111.93 98.22 69.98 97.39 119.05 10.13 10.95 26.47 29.65 65.02 64.49 87.29 154.36 57.54 58.10 63.02 63.02 82.02 31.48 31.39 37.14 37.00 36.93 88.56 93.47 14.90 14.37 29.69 30.14 35.20 38.38 97.87 85.32 98.29 39.16 37.88 18.23 29.65 44.70 28.33 30.68 10.95 19.80 93.30 52.48 19.41 59.28 58.10 34.04 21.68 25.38 83.18 57.81 50.20 28.48 28.96 45.36 43.15 45.53 50.91 53.95 45.55 52.68 13.71 19.96 20.00 12.77 0.69
-A385FA65 6 December 2015 12_22.obj 121.57 80.76 10.04 35.21 33.90 28.99 29.27 42.93 44.57 53.72 53.83 29.01 29.27 55.85 59.88 55.25 53.82 39.26 37.68 109.96 27.56 18.93 46.01 29.94 36.94 34.35 107.45 15.06 40.28 41.39 150.50 110.41 138.62 40.43 70.73 90.63 29.72 31.68 102.10 99.90 102.14 28.07 29.51 29.94 37.51 116.66 9.14 106.03 122.36 121.80 118.01 70.76 70.89 39.91 42.03 122.71 16.00 51.96 51.89 27.64 26.70 9.83 15.75 42.08 102.33 100.66 51.25 56.42 101.77 101.86 124.53 121.96 74.41 111.80 122.79 12.28 11.28 30.52 30.57 73.30 72.92 122.32 160.99 66.33 67.55 65.65 65.65 102.05 39.25 40.18 37.39 36.41 37.83 119.67 100.66 23.96 17.80 41.66 39.16 44.69 45.94 110.41 102.33 122.36 37.51 42.08 23.29 30.57 41.72 35.21 33.90 11.28 22.00 118.05 59.99 18.28 66.79 67.55 42.03 29.27 29.94 93.51 63.57 53.82 34.35 32.62 59.33 60.31 61.84 59.65 59.69 62.65 59.68 19.90 19.92 20.27 15.75 1.20
-A387FA48 6 December 2015 01_02.obj 116.80 81.55 14.13 36.89 34.20 23.48 23.75 41.51 41.98 55.59 56.09 24.79 23.75 50.83 50.26 52.02 50.75 37.45 37.37 111.00 22.38 19.01 42.67 28.54 35.12 32.82 106.54 13.22 40.88 41.90 139.39 110.81 132.66 36.29 67.42 82.65 27.91 25.27 96.85 94.48 93.53 25.49 24.55 28.54 36.73 110.08 7.84 102.28 117.38 114.66 112.41 68.08 68.09 39.82 41.41 117.37 15.50 55.02 56.07 24.98 23.98 10.40 10.40 39.80 93.23 95.96 48.36 54.06 98.21 97.11 118.43 117.33 71.48 106.71 119.09 11.69 12.26 27.71 28.98 69.26 69.75 106.29 155.98 66.45 66.50 62.34 62.34 110.44 38.31 38.73 37.20 36.70 40.67 108.71 95.96 16.31 15.97 37.09 35.10 40.01 42.64 110.81 93.23 117.38 36.73 39.80 22.51 28.98 44.03 36.89 34.20 12.26 20.20 114.17 55.26 15.69 62.06 66.50 41.41 23.75 28.54 85.57 57.02 50.75 32.82 31.39 57.24 51.41 59.56 57.17 57.13 60.21 57.13 14.41 15.01 14.56 14.27 1.14
-A389FA19 6 December 2015 01_51.obj 89.70 92.54 17.75 33.33 30.93 25.95 25.59 40.62 40.68 49.41 49.84 26.13 25.59 41.73 48.48 57.03 56.46 43.36 43.48 94.03 24.61 20.25 37.09 27.39 28.31 29.08 89.81 14.78 38.00 39.40 140.02 92.64 142.43 32.28 74.80 71.76 25.60 25.79 105.45 102.76 71.82 25.14 25.30 27.39 42.25 92.55 11.95 90.22 102.68 101.00 102.29 75.16 74.99 40.68 40.29 102.68 24.00 49.64 49.73 26.40 26.13 11.06 11.06 37.37 73.47 102.18 41.70 46.13 103.48 103.32 107.63 101.32 75.90 98.88 129.60 10.88 10.53 23.79 23.78 72.82 72.67 85.74 165.91 60.06 60.07 69.71 69.71 77.44 37.33 37.55 39.05 39.32 36.15 87.62 102.18 16.62 16.53 29.08 30.35 34.32 37.44 92.64 73.47 102.68 42.25 37.37 22.41 23.78 40.91 33.33 30.93 10.53 19.70 90.43 57.29 23.90 64.09 60.07 40.29 25.59 27.39 91.12 63.74 56.46 29.08 34.12 43.78 43.78 44.41 45.19 53.32 48.04 54.59 9.64 20.73 16.12 13.39 1.13
-A390FA55 6 December 2015 02_06.obj 104.72 92.14 18.16 36.28 35.69 23.14 22.15 35.32 34.13 40.38 40.87 23.06 22.15 49.41 55.82 59.83 57.45 42.88 38.52 109.56 26.26 19.47 40.28 29.44 29.86 28.79 105.06 14.55 35.83 36.61 151.39 108.30 144.59 33.48 73.98 78.39 25.30 25.66 105.68 103.94 89.87 24.61 24.95 29.44 44.50 98.78 6.19 102.63 105.41 102.40 99.67 75.28 74.96 34.78 35.21 105.42 12.50 39.85 41.92 23.27 22.13 16.46 13.73 38.01 91.63 103.41 48.94 56.22 103.88 103.96 117.97 103.15 79.36 106.06 130.27 10.78 12.72 28.59 27.36 76.06 76.23 98.57 169.54 52.71 53.77 68.90 68.90 93.63 33.83 33.77 41.72 41.56 42.84 100.57 103.41 17.28 17.31 31.57 30.32 38.79 39.60 108.30 91.63 105.41 44.50 38.01 28.00 27.36 44.89 36.28 35.69 12.72 22.00 104.39 58.82 12.38 65.62 53.77 35.21 22.15 29.44 92.11 62.68 57.45 28.79 34.31 52.92 47.59 55.11 49.52 48.25 55.10 50.27 11.28 19.14 16.39 16.93 0.55
-A391FA40 6 December 2015 02_24.obj 107.78 90.42 14.51 29.58 35.78 28.80 27.60 39.63 38.06 51.74 48.64 28.79 27.60 57.70 48.19 53.78 53.99 35.77 40.32 105.14 28.26 19.15 38.90 28.19 30.72 30.54 106.07 16.35 41.20 40.17 144.14 108.94 143.70 35.58 75.91 79.01 24.26 26.77 106.48 104.61 89.76 23.92 25.74 28.19 40.53 105.99 8.64 101.20 108.92 107.91 107.04 76.13 75.99 37.00 36.08 108.92 17.00 48.48 46.57 25.38 24.62 12.60 12.76 39.53 92.64 104.10 54.62 46.34 104.89 104.54 123.42 107.93 79.35 108.60 129.36 10.90 13.33 31.43 31.24 70.47 71.06 105.61 166.89 61.17 60.77 70.83 70.83 88.06 36.82 34.89 43.50 41.54 43.04 105.73 104.10 16.82 18.47 32.55 31.74 38.94 40.07 108.94 92.64 108.92 40.53 39.53 19.84 31.24 44.18 29.58 35.78 13.33 24.20 106.80 60.59 17.28 67.39 60.77 36.08 27.60 28.19 96.68 68.49 53.99 30.54 34.18 55.54 50.14 56.19 51.48 53.95 55.56 53.32 13.68 20.29 21.56 12.87 0.44
-A392FA48 6 December 2015 02_32.obj 104.82 89.64 18.09 36.99 33.87 25.45 24.99 37.93 37.34 46.69 46.37 25.57 24.99 43.66 48.67 52.12 53.15 38.40 40.19 98.83 27.33 19.34 42.40 31.96 30.43 29.82 94.75 11.45 37.25 37.59 153.63 98.80 143.18 37.07 71.55 83.13 25.64 26.84 108.25 105.72 85.51 25.03 25.97 31.96 41.32 96.78 8.25 96.96 105.93 104.59 98.78 72.21 71.88 36.26 35.07 105.93 16.50 45.13 44.75 24.26 24.00 11.90 11.75 40.66 84.93 103.51 41.69 44.86 104.43 104.24 118.08 104.28 76.43 106.99 129.79 10.36 13.38 27.30 28.10 69.54 72.01 92.89 167.59 55.00 55.65 66.47 66.47 89.96 35.46 34.53 39.31 40.02 36.31 97.63 103.51 16.38 17.37 31.29 32.38 40.93 42.20 98.80 84.93 105.93 41.32 40.66 21.15 28.10 43.30 36.99 33.87 13.38 15.10 100.50 61.24 16.51 68.04 55.65 35.07 24.99 31.96 94.20 62.24 53.15 29.82 32.87 50.61 46.96 51.31 53.41 53.32 54.46 51.44 13.86 20.89 20.11 13.59 0.73
-A393FP56 6 December 2015 03_20.obj 114.58 85.44 10.68 30.37 39.60 22.16 27.68 36.28 37.10 50.06 49.31 22.16 27.96 45.69 50.75 56.02 51.29 41.11 38.83 118.21 27.76 19.84 45.64 27.14 30.94 28.44 118.39 19.97 34.37 35.27 134.41 120.64 134.74 38.74 74.76 82.68 24.81 24.95 99.13 95.99 108.24 24.48 23.73 27.14 35.31 114.72 8.18 111.46 115.23 111.60 110.23 74.96 74.87 35.24 36.48 117.36 13.50 49.81 50.24 20.64 27.61 14.32 8.67 41.29 107.62 101.90 45.64 45.86 102.66 102.46 131.77 115.08 78.17 115.42 121.26 12.95 15.42 30.76 32.89 75.25 72.32 116.87 156.10 63.11 63.90 69.68 69.68 104.42 33.36 34.13 40.10 39.63 48.42 112.47 101.90 17.06 16.22 33.95 32.71 41.03 41.65 120.64 107.62 115.23 35.31 41.29 22.57 32.89 41.91 30.37 39.60 15.42 27.70 116.51 58.31 16.35 65.11 63.90 36.48 27.96 27.14 93.23 66.09 51.29 28.44 32.77 57.19 55.22 59.28 55.21 55.23 59.96 55.23 16.46 16.48 18.51 13.13 0.57
-A394FA19 6 December 2015 03_34.obj 91.61 92.88 17.52 33.53 28.70 25.93 26.35 38.90 39.04 47.64 48.17 25.95 26.35 47.62 48.65 55.03 55.03 41.50 41.91 93.58 23.19 19.67 41.54 26.83 27.08 29.48 88.02 11.95 37.82 37.99 143.21 91.82 143.23 33.64 75.36 71.87 24.91 26.42 107.51 105.74 69.26 24.70 25.56 26.83 43.90 93.09 11.06 91.31 100.26 99.88 100.23 75.57 75.53 38.32 38.19 100.26 22.50 47.41 47.99 25.86 25.17 12.00 11.69 40.70 74.44 102.19 43.26 45.88 103.48 102.97 108.10 99.83 76.84 97.46 132.81 9.80 10.13 22.08 23.98 72.03 72.29 87.16 168.84 56.01 56.35 70.28 70.28 78.92 36.07 35.80 39.45 39.37 38.32 89.05 102.19 16.12 16.91 30.62 31.63 34.47 37.40 91.82 74.44 100.26 43.90 40.70 21.34 23.98 44.31 33.53 28.70 10.13 17.50 92.62 57.91 22.13 64.71 56.35 38.19 26.35 26.83 92.81 65.98 55.03 29.48 34.05 45.20 43.79 45.63 45.85 53.32 45.61 54.59 9.31 20.20 15.77 13.59 0.78
-A395FP21 6 December 2015 03_43.obj 100.78 100.71 15.01 32.32 31.69 22.36 23.53 45.02 45.81 56.34 57.70 22.36 22.19 49.51 45.88 60.47 58.91 46.65 45.97 94.99 22.87 18.78 42.69 31.32 32.21 32.96 88.32 13.91 41.08 40.71 132.57 93.19 146.72 32.09 85.70 85.70 26.70 26.75 109.21 107.05 94.56 26.31 26.66 31.32 30.31 100.60 14.44 91.87 110.62 103.95 109.71 85.91 85.85 45.74 46.40 110.62 29.00 56.51 57.70 22.59 22.31 11.40 14.45 37.14 77.71 117.01 46.21 42.44 118.97 118.84 114.14 109.62 86.47 102.49 135.44 13.18 12.24 26.73 25.93 77.48 78.82 98.29 171.07 65.57 66.78 80.62 80.62 79.68 41.13 40.57 42.28 43.46 42.55 99.54 117.01 15.99 16.24 34.69 35.41 41.78 43.92 93.19 77.71 110.62 30.31 37.14 21.22 25.93 34.03 32.32 31.69 12.24 21.50 96.68 66.26 28.87 73.06 66.78 46.40 22.19 31.32 105.61 74.29 58.91 32.96 34.58 50.62 48.87 49.27 51.39 56.86 55.99 54.59 16.30 26.08 16.14 14.19 1.83
-A396FA25 6 December 2015 03_56.obj 75.53 85.90 16.74 29.21 27.92 19.42 20.62 32.45 32.59 36.69 38.41 19.47 20.62 33.54 35.81 49.73 48.90 38.83 38.90 78.60 20.23 19.10 34.83 25.83 20.21 20.02 74.77 14.39 31.52 31.96 132.85 77.42 135.11 31.95 69.16 66.28 19.95 21.19 104.45 100.60 65.09 19.76 20.58 25.83 37.01 74.87 8.28 80.49 79.57 78.94 78.81 69.58 69.22 32.22 32.66 79.57 17.00 36.46 38.68 19.61 19.79 12.63 12.53 36.92 63.29 94.99 32.60 34.68 95.61 95.27 97.07 79.57 72.09 89.16 122.64 11.26 8.69 23.74 22.98 64.61 63.71 71.19 157.58 41.76 42.63 64.08 64.08 73.44 30.00 30.00 35.06 36.11 32.51 72.68 94.99 14.59 14.65 21.40 22.70 32.10 34.18 77.42 63.29 79.57 37.01 36.92 14.25 22.98 39.22 29.21 27.92 8.69 16.80 76.54 53.33 16.56 60.13 42.63 32.66 20.62 25.83 84.49 58.66 48.90 20.02 28.99 35.82 36.80 36.72 38.67 42.53 37.00 42.53 9.09 16.71 16.75 10.59 0.28
-A397FA60 6 December 2015 04_08.obj 107.82 94.37 14.29 34.18 32.50 26.14 26.33 41.96 44.43 49.63 51.02 26.21 26.33 52.88 56.64 57.49 57.87 41.13 42.86 107.09 29.09 19.98 47.33 28.58 33.54 32.94 105.74 17.36 38.75 39.76 140.82 106.47 145.55 40.61 80.08 79.27 29.68 29.58 107.07 102.58 98.93 28.20 27.79 28.58 39.42 103.87 7.32 103.58 108.22 107.05 106.06 80.47 80.17 41.78 42.93 108.22 14.50 49.86 50.69 24.52 23.79 12.26 15.29 47.90 94.58 108.66 50.72 49.08 109.54 109.55 120.15 107.37 84.48 107.58 131.81 13.72 13.60 30.75 29.59 76.22 77.07 105.20 167.78 61.22 63.33 75.00 75.00 92.03 38.30 39.14 40.69 41.76 39.83 105.92 108.66 17.91 17.75 33.87 34.41 39.23 40.03 106.47 94.58 108.22 39.42 47.90 24.43 29.59 39.64 34.18 32.50 13.60 20.70 106.07 61.96 14.64 68.76 63.33 42.93 26.33 28.58 99.34 70.76 57.87 32.94 37.08 54.46 51.41 54.51 53.18 53.96 53.58 54.59 14.29 18.73 19.63 14.74 0.88
-A398FA52 6 December 2015 04_23.obj 107.44 96.21 15.13 34.65 33.50 23.62 23.67 37.98 38.20 50.84 49.81 23.55 23.67 52.74 56.43 57.33 52.88 40.68 38.80 109.50 23.76 19.17 44.27 27.85 30.57 29.91 102.05 15.28 36.61 37.20 143.80 106.55 153.09 37.73 81.08 79.53 25.98 25.85 110.05 108.39 90.16 24.10 24.34 27.85 40.64 100.49 7.65 102.01 108.31 106.55 105.65 81.49 81.21 36.84 37.61 108.31 15.00 49.58 48.62 23.04 23.65 12.42 12.20 38.48 90.73 108.92 50.79 49.68 109.50 109.55 117.29 107.36 85.04 104.03 135.55 12.37 15.17 30.24 30.84 75.84 71.96 98.36 169.92 64.59 62.38 76.00 76.00 93.92 34.42 34.43 43.45 42.25 39.51 102.79 108.92 17.57 16.63 34.23 32.32 39.46 40.07 106.55 90.73 108.31 40.64 38.48 22.68 30.84 48.04 34.65 33.50 15.17 21.30 104.67 61.63 15.30 68.43 62.38 37.61 23.67 27.85 99.48 71.64 52.88 29.91 33.30 53.23 49.51 54.69 52.62 52.69 53.95 54.32 12.71 18.79 15.98 13.55 0.63
-A399FA29 6 December 2015 04_35.obj 98.80 95.46 15.05 27.80 32.40 24.10 23.55 39.36 39.63 45.74 46.08 24.05 23.55 44.24 43.53 56.63 56.16 42.61 42.06 93.07 25.02 20.42 36.49 30.43 28.40 29.89 93.08 9.99 36.57 35.95 147.38 95.45 141.93 33.31 80.41 80.76 24.61 26.03 109.93 111.42 79.64 24.61 25.69 30.43 36.09 98.52 13.22 90.47 103.05 100.53 102.94 80.52 80.63 38.78 39.08 103.05 26.50 45.38 46.01 23.05 22.79 11.76 11.76 36.49 79.75 110.85 42.20 44.33 111.83 112.35 114.14 103.02 81.67 100.12 133.72 12.97 10.51 25.09 25.37 72.79 71.94 95.98 168.57 55.73 58.90 75.33 75.33 80.59 35.43 35.47 40.05 39.73 36.20 96.95 110.85 15.59 16.22 30.28 32.38 40.59 40.17 95.45 79.75 103.05 36.09 36.49 19.23 25.37 36.75 27.80 32.40 10.51 17.20 95.40 63.94 26.45 70.74 58.90 39.08 23.55 30.43 101.48 71.05 56.16 29.89 31.31 49.93 46.96 49.13 49.54 53.32 49.68 53.32 15.38 26.78 19.59 13.64 1.50
diff --git a/input/legacy/batched/Spreadsheet35.txt b/input/legacy/batched/Spreadsheet35.txt
deleted file mode 100644
index 320b861..0000000
--- a/input/legacy/batched/Spreadsheet35.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-Custom Measurements: Custom Pattern Measurements V3.txt
- [84] Abdomen Circ [Tape] [84h] Abdomen Circ Height [33] Abdomen Rise [88] X Bk Pit-to-Pit [Tape] [178] Across Chest Arm to Arm Length [172] Actual Ankle Circ L [173] Actual Ankle Circ R [174] Actual Knee Circ L [175] Actual Knee Circ R [176] Actual Mid Thigh Circ L [177] Actual Mid Thigh Circ R [91] Ankle Circ L [92] Ankle Circ R [14] Armhole Circ L [Vert] [15] Armhole Circ R [Vert] [16] Arm Length L [17] Arm Length R [18] Arm Under Length L [19] Arm Under Length R [133] Axilla Chest Circ [Tape] [97] CB Neck to CB Chest [Tape] [100] CB Neck to Shldr Blades [Tape] [2] Bk Shoulder Width Horz [162] Bk Vert Rise [89] Bicep Circ L [90] Bicep Circ R [74] Bust Circ with Drop [Tape] [11] Bust Width 1 [54] Calf Circ L [55] Calf Circ R [102] CFNck-Crotch-CBNck [72] Chest/Bust Circ [Tape] [128] Chin Height [0] Collar/Mid Neck Circ [36] Crotch Height [37] Crotch Length Full [122] Elbow Circ L [Tape] [123] Elbow Circ R [Tape] [122h] Elbow Circ L [Tape] Height [123h] Elbow Circ R [Tape] Height [81] Elbow Height Waist Circ [Tape] [115] Forearm Circ L [116] Forearm Circ R [38] Fr Vertical Rise [95] CB Length [CB Nk - Waist] [Tape] [149] High Hip Circ [Tape] [150] High Hip to SoB Waist Length [145] Hinged Upper Bust Circ [85] Hip Circ [Tape] [153] Hips 8 inches Down from SOB OPT Waist [154] Hips 2 inches Above the Crotch [40] Inseam Length L [41] Inseam Length R [48] Knee Circ L [49] Knee Circ R [151] Low Hip Circ [152] Low Hip to SoB Length [46] Mid Thigh Circ L [47] Mid Thigh Circ R [56] Min Low Leg Circ L [57] Min Low Leg Circ R [56h] Min Low Leg Circ L Height [57h] Min Low Leg Circ R [1] Neck Base Circ [105] Opt SoB Waist [Tape] [105h] Opt SoB Waist [Tape] CB Height [170] Armhole Circ Outer L [Pitch] [171] Armhole Circ Outer R [Pitch] [42] Outside Leg Length L [43] Outside Leg Length R [73] Over Arm Circ [Tape] [86] Seat Circ [Tape] [39] Seat Fold Height [168] Shoulder Circ [168h] Shoulder Circ Height [3] Shoulder Length L [4] Shoulder Length R [12] SideNeck to Bust L [Tape] [13] SideNeck to Bust R [Tape] [20] Sleeve Length L [21] Sleeve Length R [83] Stomach Girth [Tape] [99] Subject Height [44] Thigh Circ L [2in down] [45] Thigh Circ R [2in down] [44h] Thigh Circ L [2in down] Height [45h] Thigh Circ R [2in down] Height [75] Underbust Circ [Tape] [50] Under Knee Circ L [51] Under Knee Circ R [50h] Under Knee Circ L Height [51h] Under Knee Circ R Height [163] Upper Bust X Fr [76] Low Waist Circ Pitched [Tape] [76h] Low Waist Circ Pitched [Tape] Height [93] Wrist Circ L [94] Wrist Circ R [234] Up Arm Circ L [235] Up Arm Circ R [179] Fr Crotch Length [180] Bk Crotch Length [001] Chest/Bust Circum Tape Measure [002] Opt Small of back Waist Tape Measure [003] Hip Circum Tape Measure [004] Half Back Centre Tape Measure [005] Neck Circumference [006] Scye Depth (Vertical) [007] Side Neck to Bust Length Right [008] Side Neck to Bust to Waist R [009] Across Back Tape Measurement [010] Across Chest Arm to Arm Length [011] Shoulder Length Right [012] Bust Width [013] Upper Hip SOB -10cm [014] Waist to Knee Length [015] Waist to Hip Length [016] Skirt Length [017] Thigh Circ R [018] Knee Circ R [019] Ankle Circ R [020] Waist to Crotch Length (Body Rise) [021] Waist to Ankle (Outside Leg) [022] Crotch to Ankle (Inside Leg) [023] Sleeve Lenght R [024] Bicep Circ [025] Shoulder to Elbow [026] Fr Waist Arc [027] Bk Waist Arc [028] Fr Abdomen Arc [029] Bk Abdomen Arc [030] Bk Seat Arc [031] Fr Hip Arc [032] Bk Hip Arc [033] Waist to Abdomen [034] Waist to Seat [035] Depth of Sleevehead
-A400FA24 6 December 2015 04_42.obj 121.39 85.80 14.76 38.04 37.70 26.45 25.81 46.11 47.31 55.75 59.29 26.45 25.92 52.84 56.00 51.70 50.85 35.23 35.48 121.87 25.70 19.10 42.53 29.08 36.56 36.60 118.22 17.13 45.90 46.62 153.42 122.51 137.10 40.70 71.04 89.19 31.24 31.65 103.89 101.08 104.10 30.16 30.42 29.08 40.65 117.47 6.83 115.48 121.92 120.85 117.87 73.85 73.64 47.55 47.76 121.92 13.50 56.16 59.91 27.06 26.29 10.86 10.86 42.68 105.86 100.12 52.84 54.74 100.80 100.57 134.64 120.89 75.91 119.67 125.52 13.30 11.26 33.33 31.62 69.39 71.67 116.37 162.96 70.59 73.20 65.96 65.96 100.22 44.97 45.31 39.25 37.60 46.74 117.73 100.12 19.27 18.89 39.85 39.47 43.80 45.39 122.51 105.86 121.92 40.65 42.68 23.84 31.62 47.06 38.04 37.70 11.26 24.70 120.74 57.29 13.66 64.09 73.20 47.76 25.92 29.08 89.26 60.18 50.85 36.60 32.65 62.46 55.22 62.93 58.37 59.86 64.74 57.13 14.32 19.93 17.53
-A402FA41 December 2015 11_42.obj 88.49 95.59 20.12 35.18 33.75 22.25 22.31 35.66 36.48 45.79 46.19 22.44 22.31 44.06 45.51 52.71 52.29 40.74 39.89 101.87 19.45 18.20 43.25 30.26 26.48 26.29 96.95 15.09 34.50 35.56 148.47 100.61 147.35 33.32 75.47 76.64 24.76 24.39 109.29 107.95 74.96 24.24 23.83 30.26 39.35 90.96 13.47 99.54 102.39 97.64 101.93 75.82 75.69 34.71 35.36 102.39 27.00 45.15 45.80 21.40 22.03 11.97 11.89 39.02 75.00 105.73 40.89 42.69 106.75 106.33 113.31 101.50 76.52 103.11 134.02 12.14 12.79 24.59 24.94 71.60 72.23 84.04 172.60 56.95 58.78 70.39 70.39 81.94 32.61 32.85 39.53 38.97 45.29 86.05 105.73 15.26 15.06 30.66 29.45 37.83 38.81 100.61 75.00 102.39 39.35 39.02 19.51 24.94 43.22 35.18 33.75 12.79 21.60 88.75 61.28 26.93 68.08 58.78 35.36 22.31 30.26 96.14 65.88 52.29 26.29 31.06 46.01 39.97 41.97 46.42 53.95 48.37 53.96 10.14 24.29 12.56
-A403FR29 17 December 2015 12_32.obj 87.45 85.52 16.75 30.70 30.60 27.49 25.89 38.37 37.94 45.79 46.01 25.94 25.89 38.90 40.92 53.25 51.62 40.65 39.85 83.79 24.46 19.55 37.14 26.41 27.86 26.17 82.94 11.83 37.42 38.15 135.12 84.20 135.65 34.00 68.78 70.78 22.86 23.70 102.65 99.75 70.53 23.10 24.42 26.41 41.84 89.57 11.32 84.93 97.71 97.16 97.49 68.90 68.91 37.31 36.39 97.71 22.50 45.47 45.44 24.82 25.19 11.11 10.93 37.94 72.58 95.18 39.42 39.73 95.81 96.02 106.17 97.09 69.96 98.09 123.15 11.53 11.55 22.00 22.82 67.73 68.44 81.68 158.98 53.65 55.42 63.70 63.70 73.59 34.39 34.38 36.66 37.15 35.56 83.85 95.18 15.82 16.39 30.01 29.26 33.88 36.90 84.20 72.58 97.71 41.84 37.94 20.48 22.82 39.86 30.70 30.60 11.55 16.70 88.26 54.62 22.64 61.42 55.42 36.39 25.89 26.41 86.35 59.94 51.62 26.17 30.44 45.08 38.71 42.94 44.40 50.15 44.37 53.30 9.66 20.18 16.39
-A408FA29 12 January 2016 11_24.obj 87.86 99.26 19.42 26.69 32.00 24.74 23.03 57.15 36.49 57.82 46.92 23.19 23.03 43.04 45.51 54.61 55.94 42.31 43.23 84.38 21.21 19.51 36.84 29.10 25.42 27.01 82.23 11.87 36.41 36.27 148.30 84.52 153.55 31.22 79.85 73.82 22.84 24.65 116.86 114.32 69.44 22.87 23.31 29.10 40.78 92.10 13.16 83.27 105.23 100.40 104.49 80.44 80.39 35.59 35.55 105.23 26.50 46.43 46.49 22.83 22.84 14.23 14.10 36.77 70.16 108.95 41.26 41.53 110.34 110.04 105.69 102.64 80.73 95.77 139.49 11.45 11.29 23.70 24.29 68.59 72.52 82.86 178.24 58.66 57.71 74.77 74.77 76.28 33.47 32.48 43.99 43.37 42.23 85.44 108.95 14.70 8.48 28.54 28.94 35.55 38.27 84.52 70.16 105.23 40.78 36.77 17.69 24.29 44.47 26.69 32.00 11.29 19.70 88.75 60.98 26.32 67.78 57.71 35.55 23.03 29.10 97.07 67.97 55.94 27.01 31.87 42.85 42.52 43.92 43.78 52.69 50.13 55.06 9.69 21.95 16.49
-A409FL23 12 January 2016 11_34.obj 83.08 95.67 17.84 24.79 30.50 22.37 23.27 36.44 36.24 42.33 41.81 22.37 23.27 37.82 38.20 56.68 56.41 45.09 44.96 84.00 23.66 18.84 38.94 27.40 25.51 23.47 81.67 12.27 34.12 34.69 144.25 83.98 146.53 31.68 77.83 70.68 22.87 22.07 111.84 108.55 68.27 22.68 22.15 27.40 40.35 86.44 12.82 82.67 92.77 90.59 91.87 78.17 78.27 36.02 35.66 92.77 25.00 42.08 41.59 21.68 22.39 15.21 12.33 37.44 68.05 105.23 36.50 37.29 106.49 106.16 104.38 90.67 78.39 96.79 134.18 11.99 9.59 26.48 25.33 72.34 74.18 78.16 173.06 50.80 50.02 72.75 72.75 75.67 33.52 32.89 40.79 40.46 37.07 80.24 105.23 15.51 14.83 28.15 27.34 33.90 36.78 83.98 68.05 92.77 40.35 37.44 17.36 25.33 43.12 24.79 30.50 9.59 16.50 83.85 59.54 25.63 66.34 50.02 35.66 23.27 27.40 95.62 68.22 56.41 23.47 32.68 40.20 39.98 40.15 42.77 48.35 43.85 48.87 9.56 20.46 18.08
-A411FA36 12 January 2016 01_42.obj 104.50 89.78 13.27 32.67 32.88 25.08 25.11 56.65 46.27 56.47 51.49 25.14 25.11 44.14 46.10 51.48 50.69 38.51 39.69 102.38 24.49 19.50 38.25 27.36 29.27 28.65 101.60 14.67 38.15 38.89 138.85 103.93 142.58 36.05 76.50 76.99 25.01 25.31 106.88 104.63 90.99 24.15 25.30 27.36 38.54 103.04 8.18 95.57 105.10 103.72 101.59 76.92 76.89 36.08 35.75 105.10 16.00 44.85 45.60 23.90 23.68 11.83 11.83 38.53 93.39 103.86 42.13 43.95 104.62 104.44 113.62 105.07 79.98 100.61 128.05 12.34 11.12 26.18 26.86 67.23 70.13 102.28 162.57 56.35 56.20 71.42 71.42 89.40 35.00 34.86 41.50 41.71 41.55 101.25 103.86 16.36 17.45 31.79 31.02 36.91 40.08 103.93 93.39 105.10 38.54 38.53 21.81 26.86 39.43 32.67 32.88 11.12 21.10 103.09 59.18 16.35 65.98 56.20 35.75 25.11 27.36 94.83 67.47 50.69 28.65 30.67 50.42 50.77 51.20 53.22 52.69 52.38 52.69 14.09 16.93 16.27
-A412FR30 12 January 2016 12_23.obj 90.13 88.54 17.39 30.84 32.28 25.07 25.68 40.30 41.58 48.92 49.59 24.92 25.68 44.11 40.77 51.22 51.27 39.42 40.17 97.07 23.93 18.77 43.84 28.68 25.69 25.17 93.35 14.09 38.32 39.66 144.61 97.17 139.47 33.08 71.15 73.67 23.04 22.75 105.00 104.07 79.29 23.50 24.21 28.68 40.24 91.33 12.52 91.93 96.28 94.17 95.97 71.45 71.55 37.08 36.64 96.28 25.00 45.83 46.41 24.41 24.79 11.34 11.37 37.03 77.42 99.83 41.25 39.28 100.37 100.55 111.28 93.95 72.30 102.16 126.45 13.39 11.19 26.78 25.16 69.51 70.04 84.73 162.30 55.40 56.48 66.07 66.07 80.67 35.67 35.54 38.47 39.28 39.08 86.37 99.83 15.51 15.86 28.94 30.10 36.79 36.88 97.17 77.42 96.28 40.24 37.03 20.07 25.16 41.67 30.84 32.28 11.19 19.60 89.12 57.94 25.04 64.74 56.48 36.64 25.68 28.68 90.81 62.13 51.27 25.17 29.17 43.80 42.51 43.80 46.20 49.52 42.42 53.81 11.29 19.98 15.99
-A415FA22 27 January 2016 04_24.obj 87.18 106.44 19.90 31.94 29.19 26.65 26.94 41.38 27.72 47.75 38.30 26.76 26.94 46.37 45.26 59.08 60.67 48.61 49.83 87.54 23.65 20.12 44.85 29.81 28.75 25.90 85.15 11.66 38.17 36.81 143.56 88.50 159.43 33.00 86.54 75.96 25.78 24.69 118.20 114.20 70.57 25.59 24.39 29.81 41.80 92.65 14.65 84.17 104.38 98.43 102.59 87.64 87.13 39.32 37.96 104.37 29.50 46.33 44.67 25.22 25.13 13.28 13.09 39.30 70.49 116.34 44.86 43.48 117.71 117.36 108.60 103.91 86.69 98.40 145.66 14.01 12.39 23.80 24.19 78.72 79.92 82.05 180.99 58.67 55.07 81.46 81.46 71.56 37.59 35.55 45.11 43.80 43.87 84.97 116.34 17.48 16.93 31.36 29.68 36.25 39.70 88.50 70.49 104.38 41.80 39.30 20.21 24.19 42.19 31.94 29.19 12.39 18.20 87.76 65.88 29.31 72.68 55.07 37.96 26.94 29.81 106.29 76.48 60.67 25.90 37.29 39.85 45.06 44.51 42.50 52.69 49.45 54.88 9.90 26.54 16.10
-A416FA57 12 January 2016 12_45.obj 98.27 90.26 16.49 37.30 29.63 26.67 27.09 30.68 41.47 41.27 49.44 26.65 27.09 53.20 47.57 50.72 54.89 38.30 41.28 95.56 28.35 20.88 41.49 27.30 32.87 33.64 96.82 14.69 41.63 42.21 139.57 97.52 137.40 39.64 73.77 76.99 25.97 27.41 105.78 101.80 86.89 26.32 27.60 27.30 41.55 98.61 10.67 93.30 100.53 100.31 100.44 74.25 74.12 43.28 42.48 100.52 21.50 50.67 50.63 26.32 27.11 11.62 11.62 42.16 90.17 101.07 44.24 47.57 101.67 101.71 116.53 100.30 75.65 105.46 126.29 12.80 11.03 25.44 27.36 68.05 73.81 95.24 162.52 58.66 59.97 68.69 68.69 88.80 38.71 38.79 40.38 39.78 36.43 96.08 101.07 18.34 18.89 33.39 34.84 38.31 38.67 97.52 90.17 100.53 41.55 42.16 24.28 27.36 39.90 37.30 29.63 11.03 20.60 97.81 54.15 21.34 60.95 59.97 42.48 27.09 27.30 92.04 64.74 54.89 33.64 32.76 47.78 48.23 45.71 52.42 57.76 42.69 57.77 10.81 22.97 19.27
-A417FA64 12 January 2016 12_48-L-RShldr.obj 101.85 84.57 14.55 24.62 30.26 26.71 26.51 42.29 40.70 49.68 47.53 26.65 26.51 42.36 43.63 51.30 52.65 35.50 38.95 84.49 27.41 20.16 33.78 27.70 30.04 28.03 88.89 13.87 38.90 38.99 132.86 91.85 135.69 33.22 70.02 77.02 24.36 23.18 99.35 96.49 76.81 22.79 23.25 27.70 37.24 90.68 6.84 82.37 102.29 99.61 100.26 70.39 70.74 39.18 40.38 102.28 13.50 47.42 47.58 26.60 25.77 11.31 11.11 37.68 77.14 97.72 44.66 42.99 99.08 99.31 106.64 100.74 74.45 94.05 119.92 9.92 10.33 29.21 26.72 63.55 67.88 95.11 157.24 56.24 58.26 64.94 64.94 79.00 36.98 36.72 37.89 38.39 38.84 98.92 97.72 16.17 17.20 31.39 31.24 36.89 40.13 91.85 77.14 102.29 37.24 37.68 21.53 26.72 36.43 24.62 30.26 10.33 21.40 98.51 53.09 13.67 59.89 58.26 40.38 26.51 27.70 88.99 61.29 52.65 28.03 31.89 50.63 48.23 50.35 51.39 49.51 50.16 52.08 13.15 16.95 19.73
-A418FA30 8 February 2016 11_12.obj 95.81 90.94 13.61 34.07 33.28 23.55 23.69 37.79 38.14 47.32 46.99 23.55 23.69 46.00 46.61 53.74 53.11 40.95 41.64 97.11 25.53 19.43 43.34 28.16 29.71 26.96 93.85 13.70 34.99 36.52 137.89 94.98 143.30 35.50 77.33 75.58 24.82 24.82 106.37 106.30 81.72 24.09 24.32 28.16 39.75 95.39 11.67 95.53 99.06 98.26 99.03 77.48 77.53 37.28 36.79 99.07 23.50 47.24 46.66 22.60 22.58 11.61 11.53 39.96 82.17 105.49 43.83 43.20 105.86 106.13 113.38 98.78 78.85 103.55 130.75 13.00 13.73 24.45 25.13 71.65 72.72 95.01 165.44 54.77 56.71 72.25 72.25 84.39 33.29 33.67 40.27 40.62 39.13 93.78 105.49 15.85 16.14 31.65 30.69 37.86 37.73 94.98 82.17 99.06 39.75 39.96 21.85 25.13 41.15 34.07 33.28 13.73 19.00 95.43 60.29 23.34 67.09 56.71 36.79 23.69 28.16 96.30 68.14 53.11 26.96 31.56 49.93 43.79 46.16 49.53 52.68 45.01 54.00 14.55 21.77 16.78
-A419FL21 28 January 2016 11_42.obj 89.30 97.35 19.79 34.67 29.58 23.94 23.98 36.63 35.95 48.27 47.99 23.93 23.98 42.19 43.71 59.39 57.86 46.44 47.03 85.47 17.19 18.00 43.87 30.85 26.31 25.76 85.41 15.54 36.39 36.49 139.54 87.10 145.20 36.03 77.57 78.12 22.89 22.71 107.87 108.18 70.88 23.16 22.68 30.65 33.21 92.81 13.01 87.31 101.69 99.34 101.66 77.96 78.14 35.31 35.14 101.69 25.98 47.92 47.73 22.86 23.11 10.32 10.28 47.81 70.62 108.41 40.13 39.68 109.12 109.36 107.75 100.00 79.05 99.97 135.30 10.87 11.52 22.75 23.22 76.75 76.48 82.65 172.77 56.12 57.12 72.49 72.49 73.35 33.64 32.88 41.05 41.23 34.39 85.88 108.37 15.78 15.65 29.37 29.22 38.80 39.31 87.10 70.62 101.69 33.21 47.81 12.46 23.22 38.82 34.67 29.58 11.52 19.10 88.17 63.90 26.14 70.70 57.12 35.14 23.98 30.85 100.73 69.89 57.86 25.76 34.69 44.58 41.25 45.39 43.77 50.78 46.27 55.38 11.06 21.63 17.58
-A420FA50 8 February 2016 11_16.obj 109.03 90.37 16.74 34.90 36.67 30.46 30.07 45.94 45.62 57.20 56.17 30.46 30.07 53.62 53.70 52.04 53.12 39.08 39.64 111.78 23.19 19.70 46.72 27.87 34.75 35.87 107.78 13.71 46.02 45.33 149.00 113.08 141.67 37.64 73.63 80.61 28.96 29.58 104.29 104.08 95.20 28.37 29.10 27.87 42.84 108.30 10.24 108.71 113.54 113.52 113.15 73.76 73.83 46.71 47.27 113.54 20.50 57.48 56.72 28.71 28.34 10.08 9.86 38.86 99.36 101.50 47.19 50.66 102.25 102.25 125.60 113.17 75.96 110.34 129.59 15.39 13.42 25.67 25.48 71.68 73.92 105.93 162.52 67.90 67.99 68.55 68.55 97.98 44.09 43.17 41.66 39.80 50.76 103.92 101.50 18.03 18.75 38.87 39.97 38.95 41.65 113.08 99.36 113.54 42.84 38.86 25.46 25.48 43.89 34.90 36.67 13.42 20.60 107.97 55.63 20.48 62.43 67.99 47.27 30.07 27.87 94.27 66.40 53.12 35.87 31.27 55.64 48.23 54.63 54.26 58.40 54.44 59.04 11.13 18.18 13.50
-A422FS40 8 February 2016 11_25.obj 102.61 92.38 15.54 25.18 31.69 23.67 26.09 36.07 37.67 46.94 47.48 23.67 24.50 43.42 41.95 56.10 55.45 41.59 42.65 86.24 28.15 20.14 34.53 30.93 31.52 28.43 86.44 12.82 36.57 36.79 142.67 89.20 144.76 33.73 76.84 82.75 25.52 24.89 110.76 107.77 77.77 24.48 24.60 30.93 38.36 98.95 12.39 83.95 106.97 105.73 106.95 76.93 77.05 35.62 36.44 106.97 25.00 46.83 47.19 23.53 24.16 12.12 11.88 36.74 78.22 107.76 42.63 41.38 109.28 109.09 112.70 106.72 78.78 98.91 131.28 11.14 10.17 27.46 27.59 69.31 71.26 95.69 168.48 59.43 59.25 71.76 71.76 76.96 33.85 33.94 41.95 41.06 35.26 97.83 107.76 15.09 16.33 30.42 30.15 40.63 42.12 89.20 78.22 106.97 38.36 36.74 20.21 27.59 39.25 25.18 31.69 10.17 21.10 94.90 62.73 24.78 69.53 59.25 36.44 24.50 30.93 98.41 67.48 55.45 28.43 32.99 52.71 45.06 49.88 52.59 54.63 52.34 54.59 15.39 23.78 21.35
-A423FA36 8 February 2016 11_29.obj 111.02 93.11 18.53 35.90 33.94 25.26 25.99 38.52 39.20 49.69 49.38 25.35 25.99 48.89 49.22 53.80 54.24 39.83 40.73 109.03 26.42 20.44 45.40 31.34 32.52 30.61 104.94 13.52 39.82 39.61 146.11 109.59 142.74 34.35 74.57 88.15 25.87 26.08 105.06 102.37 98.48 24.92 25.35 31.34 39.28 111.32 12.47 102.80 111.46 109.02 111.28 75.29 74.98 39.68 40.09 111.46 25.00 50.50 50.05 24.67 25.44 11.72 11.76 39.39 94.16 105.92 47.60 49.22 106.82 107.17 120.16 109.63 76.60 106.12 128.20 11.65 10.78 26.05 27.69 70.66 73.01 106.41 164.64 62.16 62.85 69.49 69.49 95.67 36.10 35.99 41.89 41.73 42.42 108.15 105.92 16.65 17.05 36.92 34.92 43.12 45.03 109.59 94.16 111.46 39.28 39.39 24.71 27.69 39.79 35.90 33.94 10.78 21.90 110.16 58.47 24.94 65.27 62.85 40.09 25.99 31.34 96.77 65.43 54.24 30.61 33.62 57.96 50.14 55.37 55.58 57.77 53.01 58.40 12.81 21.36 16.43
-A424FA51 8 February 2016 11_33.obj 105.89 90.51 15.18 32.07 32.10 24.88 25.12 43.48 44.11 54.85 55.77 24.88 25.12 47.84 49.40 56.14 56.72 43.06 43.12 95.79 29.19 20.50 42.59 28.76 31.51 31.76 92.96 13.36 42.07 41.89 156.12 96.16 144.53 36.63 75.33 77.86 28.22 27.39 106.75 107.53 80.16 28.16 27.98 28.76 41.95 104.66 12.18 95.79 112.62 111.65 112.60 75.68 76.20 43.87 44.47 112.62 24.00 55.22 56.17 25.15 25.07 9.34 12.24 40.51 82.54 104.09 45.28 47.89 105.40 105.51 116.27 111.39 76.72 103.60 131.21 13.27 10.92 28.72 29.92 73.26 74.08 98.57 168.11 65.01 66.26 70.25 70.25 83.62 39.13 39.58 41.93 41.60 38.65 100.96 104.09 16.27 17.60 33.23 34.05 37.58 40.28 96.16 82.54 112.62 41.95 40.51 21.47 29.92 42.39 32.07 32.10 10.92 19.40 100.80 56.12 24.35 62.92 66.26 44.47 25.12 28.76 94.75 65.99 56.72 31.76 33.34 52.03 48.86 50.57 55.20 57.99 56.71 55.86 13.58 20.05 22.63
-A425FA24 8 February 2016 11_37.obj 107.43 98.58 19.88 31.22 35.48 26.29 26.20 42.77 39.71 53.32 52.26 26.21 26.20 48.74 59.53 55.36 54.57 43.36 44.23 105.15 25.60 20.77 47.36 31.23 30.30 27.24 103.24 16.10 40.47 40.24 162.35 104.37 150.27 34.49 78.70 83.14 26.99 25.49 111.21 110.34 83.36 24.38 24.54 31.23 42.73 109.39 13.42 99.83 117.50 112.81 117.45 79.39 79.19 38.42 38.74 117.50 27.00 50.65 51.65 25.60 25.74 15.38 12.46 39.60 84.39 109.93 42.13 43.84 111.17 110.99 118.42 114.76 80.09 104.55 138.20 15.47 14.61 24.62 27.19 75.79 75.73 100.32 171.82 65.42 66.06 73.62 73.62 86.69 37.92 37.48 43.16 42.11 51.57 103.87 109.93 15.91 16.77 31.90 32.28 40.72 42.42 104.37 84.39 117.50 42.73 39.60 23.59 27.19 42.28 31.22 35.48 14.61 23.50 105.96 63.82 26.84 70.62 66.06 38.74 26.20 31.23 100.39 69.16 54.57 27.24 33.24 54.95 48.86 53.23 54.08 59.04 53.95 63.50 11.35 21.90 15.47
-A426FA25 8 February 2016 11_44.obj 86.72 95.30 16.13 31.37 30.65 22.92 23.30 37.96 37.44 45.51 45.33 22.93 23.30 40.56 42.04 59.25 59.50 47.32 48.67 88.93 26.85 20.37 42.07 25.69 27.08 25.10 84.72 11.53 34.40 34.01 135.52 87.65 145.10 32.13 79.16 66.59 23.51 23.94 106.21 102.37 74.06 23.98 23.80 25.69 42.82 90.01 12.01 88.10 96.77 95.64 95.80 79.84 79.78 35.15 34.80 96.77 24.00 42.42 42.10 22.31 22.80 15.15 12.08 39.40 73.48 104.86 38.04 39.47 105.53 105.56 108.05 94.95 Unavailable 98.85 132.06 12.08 10.76 23.76 24.85 76.32 78.44 81.93 168.27 52.62 53.47 74.08 74.08 75.09 33.42 32.64 41.62 41.22 36.76 84.39 104.86 16.20 16.09 27.83 28.71 32.42 34.18 87.65 73.48 96.77 42.82 39.40 22.24 24.85 40.71 31.37 30.65 10.76 15.60 87.64 58.61 24.01 65.41 53.47 34.80 23.30 25.69 95.51 69.82 59.50 25.10 36.66 43.71 40.62 43.43 43.14 49.36 45.95 50.77 9.56 19.19 17.63
-A427FA24 8 February 2016 11_49.obj 92.10 96.52 19.35 29.65 30.09 23.02 23.79 37.43 36.99 47.57 48.07 23.04 23.79 42.57 43.30 54.52 54.94 42.69 43.32 91.16 23.39 18.59 41.51 29.59 29.20 25.99 88.45 13.14 36.42 36.59 141.52 92.18 145.21 32.31 77.17 77.21 25.36 23.63 107.34 106.17 72.77 23.11 23.03 29.59 38.75 96.57 13.15 86.82 103.51 100.85 103.13 78.18 78.21 36.41 35.68 103.50 26.50 46.13 46.67 22.87 22.95 12.06 12.14 36.79 72.87 106.76 39.60 40.23 107.95 108.05 107.78 101.49 78.20 97.04 132.92 12.21 12.83 25.60 27.89 71.84 72.79 85.93 167.72 60.11 60.44 72.09 72.09 75.18 35.27 34.63 41.75 42.19 39.87 88.81 106.76 15.64 15.57 30.20 28.96 37.21 40.00 92.18 72.87 103.51 38.75 36.79 19.65 27.89 43.55 29.65 30.09 12.83 20.10 92.17 61.57 26.31 68.37 60.44 35.68 23.79 29.59 97.44 67.85 54.94 25.99 33.64 44.97 43.77 43.91 48.07 55.16 48.86 54.60 10.24 21.35 16.64
-A429FA47 8 February 2016 11_56.obj 101.38 86.89 16.17 22.64 32.03 23.60 24.08 39.39 38.99 45.77 45.54 23.57 24.08 44.19 52.62 52.09 47.70 36.70 35.04 94.34 26.83 20.93 37.48 31.16 31.51 32.81 95.67 17.84 38.43 37.75 148.26 97.18 133.11 35.33 70.72 83.06 26.37 27.95 102.34 102.60 81.60 26.47 27.65 31.16 35.31 95.81 8.24 89.67 102.15 100.72 95.72 71.45 71.61 37.87 37.09 102.15 16.50 44.15 43.37 23.09 23.74 11.54 11.43 38.00 82.32 101.88 49.73 49.71 103.73 102.77 118.28 99.40 75.36 104.10 122.19 10.98 12.29 26.88 27.29 65.47 65.40 97.17 156.67 53.77 54.52 65.64 65.64 81.44 37.58 36.23 39.44 39.32 43.16 98.63 101.88 15.82 16.45 34.32 33.21 40.22 42.84 97.18 82.32 102.15 35.31 38.00 23.10 27.29 36.42 22.64 32.03 12.29 20.60 97.43 60.37 16.48 67.17 54.52 37.09 24.08 31.16 93.17 62.02 47.70 32.81 28.16 54.79 43.79 52.44 48.86 49.51 52.51 49.60 14.99 21.77 18.61
-A430FA37 8 February 2016 12_00.obj 85.87 95.10 20.09 27.79 30.59 26.19 26.15 41.08 38.28 48.68 46.80 26.39 26.15 41.22 40.29 54.24 57.43 43.34 45.58 90.22 21.70 18.92 41.44 30.31 26.79 24.66 84.31 12.15 38.01 39.04 147.01 88.48 144.93 33.54 75.01 78.51 23.63 23.34 109.01 106.25 73.50 24.27 23.99 30.31 38.47 89.59 12.56 88.29 101.20 98.75 101.20 75.59 75.55 35.88 36.41 101.21 25.00 44.08 45.11 26.10 25.95 12.08 11.88 38.26 72.06 105.32 38.20 39.41 106.57 106.06 108.07 100.89 76.93 98.76 131.90 13.84 10.16 22.81 24.28 71.76 75.89 80.86 167.60 54.35 55.18 69.93 69.93 80.64 35.04 35.83 41.66 42.41 39.82 82.05 105.32 16.06 16.00 26.80 27.86 37.76 40.75 88.48 72.06 101.20 38.47 38.26 18.84 24.28 41.57 27.79 30.59 10.16 16.70 86.02 61.26 25.11 68.06 55.18 36.41 26.15 30.31 96.01 65.70 57.43 24.66 31.77 42.02 39.95 41.01 44.73 52.08 49.10 52.05 10.22 23.39 15.13
-A431FD39 8 February 2016 12_06.obj 123.72 92.23 10.66 36.93 36.49 26.08 26.35 43.81 45.34 66.57 66.70 26.04 26.35 60.11 60.24 55.68 51.93 42.70 41.26 115.29 27.71 20.30 51.65 26.02 41.33 40.67 109.17 16.13 41.99 42.01 140.99 113.06 146.00 37.53 81.57 82.13 30.60 31.01 107.19 106.48 95.20 30.17 30.57 26.02 41.19 122.66 12.76 111.98 127.60 125.15 125.48 81.87 82.03 51.01 49.37 127.60 25.50 68.00 68.71 23.26 22.82 14.98 15.15 40.40 94.60 107.59 52.12 52.59 109.26 108.85 138.07 124.81 81.73 123.24 133.25 16.57 17.28 28.68 30.24 77.21 77.53 108.34 167.91 80.39 82.77 76.49 76.49 97.95 41.23 40.61 41.00 41.15 48.25 113.82 107.59 18.24 17.72 44.03 44.10 38.30 43.82 113.06 94.60 127.60 41.19 40.40 25.80 30.24 42.56 36.93 36.49 17.28 21.40 118.11 60.11 25.52 66.91 82.77 49.37 26.35 26.02 98.27 72.24 51.93 40.67 32.67 57.91 55.85 58.89 64.74 65.54 60.91 66.65 15.37 18.25 17.07
-A432FA45 8 February 2016 12_13.obj 90.58 91.71 18.98 31.98 29.19 26.31 27.54 54.16 39.36 54.11 47.14 26.19 27.54 47.41 45.24 56.28 54.61 42.42 43.27 93.09 26.12 19.96 41.96 29.59 30.59 28.91 86.33 11.66 38.67 39.29 141.57 92.26 136.94 35.13 72.73 77.73 27.39 26.05 100.32 96.30 80.54 25.48 26.29 29.59 39.34 92.26 12.03 89.14 103.73 101.88 103.70 72.92 72.90 36.88 36.16 103.73 24.00 45.11 45.03 26.32 26.98 11.30 11.23 56.52 74.24 102.32 45.37 42.68 103.13 103.50 104.07 103.03 74.48 98.37 124.65 12.15 12.60 25.98 25.65 71.95 74.60 85.43 159.87 54.14 56.59 67.65 67.65 78.00 35.62 35.22 39.72 40.32 40.39 88.88 102.32 17.84 18.15 30.11 29.28 39.14 38.59 92.26 74.24 103.73 39.34 56.52 26.06 25.65 38.14 31.98 29.19 12.60 19.10 90.71 59.68 24.06 66.48 56.59 36.16 27.54 29.59 93.44 63.85 54.61 28.91 33.99 46.94 41.88 44.19 46.29 53.96 47.61 56.07 10.61 21.86 13.57
-A436FA57 26 February 2016 10_54.obj 95.36 89.03 15.87 27.39 31.28 26.45 26.67 38.02 38.25 43.06 43.55 26.55 26.67 43.87 45.55 53.67 53.19 40.93 39.56 88.00 25.60 19.12 40.53 30.56 28.77 27.78 86.07 12.01 35.67 35.75 141.09 89.06 141.64 32.13 73.16 78.61 25.55 25.82 105.79 105.08 75.18 24.07 25.31 30.56 36.51 94.80 12.82 87.67 97.55 94.92 97.55 73.41 73.33 35.73 35.45 97.55 25.50 42.10 42.31 25.85 25.57 17.20 14.34 37.90 75.31 103.72 41.38 44.07 104.70 104.72 110.84 96.00 74.71 102.44 127.01 11.04 12.03 25.92 26.24 70.61 70.40 92.62 163.68 53.37 53.76 68.08 68.08 77.76 33.80 33.54 39.47 39.84 38.69 93.10 103.72 16.73 17.34 30.25 30.70 37.68 40.93 89.06 75.31 97.55 36.51 37.90 19.33 26.24 38.45 27.39 31.28 12.03 19.10 92.30 60.74 25.65 67.54 53.76 35.45 26.67 30.56 94.63 64.07 53.19 27.78 30.50 47.99 45.06 45.77 49.47 50.78 44.33 53.17 14.69 21.69 19.55
-A437FA54 26 February 2016 11_05.obj 151.85 92.71 16.00 40.45 43.40 31.03 30.87 49.36 49.95 67.04 67.40 31.08 30.87 59.06 53.88 55.30 53.80 37.00 39.33 133.46 24.82 19.71 46.77 29.75 40.62 37.97 130.72 20.70 51.69 51.90 158.74 133.58 147.23 38.64 76.72 94.20 31.39 31.76 108.52 105.73 114.88 31.43 31.35 29.75 42.15 139.25 7.73 126.67 153.21 148.60 143.44 76.92 77.45 46.30 48.04 153.21 15.50 64.78 65.98 29.25 29.25 10.77 10.52 41.49 114.92 106.46 56.22 53.96 110.06 110.48 141.74 150.59 81.23 125.52 132.14 14.30 15.57 29.96 31.45 74.33 76.24 135.75 169.44 81.22 85.12 71.64 71.64 114.23 47.20 47.63 43.39 43.60 55.57 144.62 106.46 19.16 19.96 42.48 41.45 47.01 47.18 133.58 114.92 153.21 42.15 41.49 25.43 31.45 48.09 40.45 43.40 15.57 28.70 146.15 62.47 15.46 69.27 85.12 48.04 30.87 29.75 98.93 69.19 53.80 37.97 33.35 77.93 66.64 80.87 70.88 71.10 82.07 71.11 13.75 18.94 14.58
-A438FA57 26 February 2016 11_15.obj 101.40 96.44 14.03 25.93 30.70 27.39 27.69 54.35 44.59 57.55 55.31 27.41 27.69 66.29 51.77 154.17 87.41 122.22 128.74 105.02 30.25 20.27 41.78 29.67 51.05 Unavailable 101.30 16.38 41.59 43.33 146.90 102.85 148.43 35.78 82.41 83.76 54.49 Unavailable 119.21 0.03 83.61 66.81 Unavailable 29.67 39.93 99.02 8.08 97.36 107.35 105.62 102.01 82.59 82.66 41.25 43.42 107.28 16.00 51.82 54.93 26.12 25.23 15.32 16.12 41.61 91.71 112.08 61.95 52.06 95.92 114.83 118.58 103.51 86.68 105.95 135.03 13.18 11.75 32.23 33.12 165.50 163.38 99.43 173.45 58.86 62.05 77.33 77.33 92.47 39.23 40.47 42.61 44.03 49.25 101.61 112.08 0.00 Unavailable 55.06 40.84 41.02 42.74 102.85 91.71 107.35 39.93 41.61 25.27 33.12 42.66 25.93 30.70 11.75 23.70 100.48 63.46 16.16 70.26 62.05 43.42 27.69 29.67 102.45 72.77 87.41 Unavailable 142.44 50.74 50.60 45.88 55.32 57.07 55.13 52.05 15.64 21.19 20.86
-A439FA57 26 February 2016 11_20.obj 99.65 86.77 14.44 26.50 33.07 25.17 24.84 40.20 39.78 45.88 46.65 25.39 24.84 45.51 52.91 56.40 50.89 40.07 35.56 97.30 25.19 20.83 35.67 31.09 31.67 31.19 94.23 12.51 36.61 35.46 133.23 96.92 134.77 36.96 72.33 80.35 26.96 28.87 102.79 102.47 82.56 26.05 27.44 31.09 34.17 96.59 11.35 92.26 101.14 101.13 100.50 72.92 72.78 38.44 38.07 101.15 22.50 45.12 45.45 23.98 24.72 14.52 11.34 41.05 83.01 103.42 48.56 50.31 104.54 104.24 113.65 101.12 74.98 98.21 124.28 8.53 9.43 25.82 24.99 68.22 65.59 97.14 159.43 54.96 55.50 67.25 67.25 83.87 35.54 34.50 38.02 36.03 41.78 97.79 103.42 15.95 15.99 33.06 34.90 38.88 41.46 96.92 83.01 101.14 34.17 41.05 21.94 24.99 33.60 26.50 33.07 9.43 19.60 94.78 60.99 22.70 67.79 55.50 38.07 24.84 31.09 94.56 63.47 50.89 31.19 29.71 50.13 47.59 45.96 53.54 55.22 45.85 55.22 16.64 20.48 18.55
-A440FA60 26 February 2016 11_29.obj 83.91 92.95 19.05 29.57 29.29 24.41 24.65 35.33 34.27 38.56 39.11 24.37 24.65 41.98 43.79 50.98 50.98 41.91 40.91 82.63 23.93 19.08 41.14 28.68 24.19 23.57 78.88 9.98 32.90 33.91 137.60 83.28 137.20 29.32 73.90 71.19 22.61 21.49 100.68 100.70 66.46 21.74 20.82 28.68 36.83 86.72 11.86 80.22 91.26 90.47 91.24 74.03 74.12 34.43 33.08 91.27 24.00 38.19 37.96 23.11 23.66 11.36 11.31 37.61 63.85 102.58 38.34 44.78 103.99 103.96 102.42 90.33 75.47 93.47 126.34 13.38 11.78 24.68 24.16 69.80 69.08 77.65 159.07 46.59 47.99 68.82 68.82 71.04 31.08 30.87 37.89 39.50 42.19 80.88 102.58 14.98 14.72 27.98 26.16 34.47 36.72 83.28 63.85 91.26 36.83 37.61 20.22 24.16 36.09 29.57 29.29 11.78 20.40 84.78 59.35 23.72 66.15 47.99 33.08 24.65 28.68 93.74 65.07 50.98 23.57 31.59 39.57 41.24 38.40 45.34 49.51 41.69 49.50 9.63 19.94 15.70
-A441FA61 26 February 2016 11_36.obj 110.55 95.37 20.09 35.61 37.34 29.18 28.44 46.65 40.73 54.40 48.53 29.15 28.44 47.17 49.21 57.08 57.45 39.79 41.37 111.50 25.39 21.21 41.38 32.50 34.23 34.70 107.54 13.63 39.82 39.62 154.29 110.19 146.42 37.60 75.29 88.98 28.06 29.78 112.23 110.41 93.62 27.95 29.88 32.50 43.10 108.78 8.44 105.83 111.16 109.80 108.45 75.55 75.75 41.96 40.54 111.15 17.00 48.55 48.55 27.94 28.25 15.09 12.07 40.94 95.77 107.79 47.17 49.39 108.48 108.67 126.45 109.31 80.22 111.71 135.04 13.39 14.37 26.33 23.98 74.69 74.83 107.07 170.47 62.75 62.39 70.21 70.21 94.58 39.51 37.87 40.16 40.52 46.16 107.63 107.79 18.28 19.52 36.34 36.11 43.55 45.43 110.19 95.77 111.16 43.10 40.94 23.35 23.98 40.82 35.61 37.34 14.37 22.60 110.20 62.02 16.88 68.82 62.39 40.54 28.44 32.50 98.32 65.82 57.45 34.70 33.32 59.97 47.59 55.37 55.07 55.23 52.05 59.07 12.41 22.18 17.13
-A442FA51 26 February 2016 11_42.obj 85.21 84.57 17.82 32.99 33.18 25.81 26.06 37.65 39.32 44.22 44.93 25.87 26.06 45.55 43.39 51.20 51.55 37.53 38.66 96.32 23.06 19.44 38.14 27.66 32.47 30.36 91.17 12.44 38.61 43.43 152.22 94.16 133.83 33.63 66.75 71.35 25.22 24.81 99.40 98.81 74.72 25.00 25.32 27.66 39.60 88.14 11.87 95.01 97.08 95.79 96.80 66.92 67.13 37.25 38.50 97.08 24.00 43.88 45.40 26.12 26.28 8.74 8.74 47.63 76.28 94.41 45.29 45.39 95.04 94.73 113.45 94.32 67.99 103.52 121.15 12.41 10.73 22.50 24.20 66.39 69.19 83.21 157.42 54.30 56.69 61.67 61.67 81.51 36.44 36.28 41.03 37.68 39.76 83.85 94.41 17.48 17.30 33.12 31.50 36.59 34.76 94.16 76.28 97.08 39.60 47.63 20.65 24.20 40.01 32.99 33.18 10.73 19.80 85.93 51.64 23.74 58.44 56.69 38.50 26.06 27.66 85.67 58.00 51.55 30.36 29.91 43.18 40.60 42.67 42.44 48.25 46.21 50.82 9.84 18.14 16.31
-A443FA64 26 February 2016 11_48.obj 110.71 94.32 17.73 35.26 35.55 32.44 29.17 44.86 45.40 55.99 55.31 31.10 29.17 48.77 49.69 56.18 56.84 38.15 40.66 101.04 30.88 21.58 37.09 29.45 35.58 30.82 98.93 14.84 43.41 42.61 149.69 100.01 145.30 36.17 76.59 80.52 29.55 27.94 109.44 106.18 85.57 27.26 26.94 29.45 44.09 101.96 8.08 97.22 114.14 114.03 113.87 77.01 77.28 43.97 42.72 114.14 16.50 55.85 53.65 29.17 28.08 15.82 15.26 43.30 86.24 106.04 50.69 51.51 107.34 107.72 119.35 114.11 80.79 108.82 131.78 8.50 10.48 28.63 27.73 69.38 73.33 98.56 171.32 63.73 63.82 71.51 71.51 90.46 42.81 41.85 42.53 42.24 39.37 104.79 106.04 17.39 17.98 35.98 34.14 40.26 40.26 100.01 86.24 114.14 44.09 43.30 26.75 27.73 41.21 35.26 35.55 10.48 19.50 107.77 61.05 16.16 67.85 63.82 42.72 29.17 29.45 96.53 67.07 56.84 30.82 35.79 52.69 52.04 54.69 55.86 57.77 57.61 56.50 11.73 16.81 21.33
-A444FA41 26 February 2016 03_41.obj 95.10 94.42 19.40 29.18 30.00 23.64 25.43 38.62 38.56 45.12 47.43 23.64 24.03 42.78 43.65 56.42 54.44 41.73 41.90 92.79 24.52 20.19 32.39 30.21 31.50 27.94 88.01 10.99 35.94 35.93 144.72 91.58 143.80 33.49 75.02 79.63 25.04 24.45 108.20 108.88 76.94 23.85 23.60 30.21 41.69 96.25 11.35 87.99 109.36 108.28 108.40 76.08 75.45 37.50 36.61 109.36 23.00 44.06 46.34 22.90 23.61 12.31 12.19 36.86 80.97 105.23 44.53 43.65 106.57 106.58 108.60 106.50 77.39 94.87 131.66 10.55 11.51 22.07 23.52 70.78 68.58 90.62 168.18 55.45 57.54 69.94 69.94 79.97 35.42 35.50 40.65 39.63 36.45 92.53 105.23 14.98 15.81 33.02 31.36 39.71 39.92 91.58 80.97 109.36 41.69 36.86 21.27 23.52 41.81 29.18 30.00 11.51 19.10 94.19 61.15 22.70 67.95 57.54 36.61 24.03 30.21 95.89 65.68 54.44 27.94 31.23 46.15 46.33 46.34 48.62 56.50 50.27 59.03 10.81 18.16 17.19
-A447FA19 9 March 2016 12_54.obj 87.40 98.13 18.43 25.94 29.40 23.04 24.61 35.99 38.60 44.85 46.20 23.04 23.50 39.95 44.80 57.78 56.30 44.58 46.02 89.04 24.82 19.90 39.30 28.18 28.03 26.03 83.69 11.44 34.99 35.14 138.56 85.47 145.00 33.55 79.70 72.65 23.31 24.12 108.70 105.97 73.49 24.02 23.85 28.18 38.81 88.92 12.09 85.83 96.78 95.48 96.69 80.01 79.83 34.77 34.73 96.78 24.00 44.50 44.25 23.38 23.78 11.29 11.29 38.72 73.25 107.88 39.95 40.29 108.41 108.39 107.38 96.40 80.96 97.65 133.03 9.02 11.34 24.41 24.30 72.77 73.58 82.17 169.39 53.72 54.56 74.62 74.62 77.56 32.32 32.22 42.22 41.88 36.60 84.59 107.88 16.05 17.44 30.31 29.17 36.30 36.35 85.47 73.25 96.78 38.81 38.72 20.18 24.30 39.84 25.94 29.40 11.34 18.70 87.94 60.30 24.19 67.10 54.56 34.73 23.50 28.18 96.59 68.41 56.30 26.03 34.13 43.92 40.60 42.54 44.74 52.07 44.05 52.68 9.75 22.08 16.82
-A448FA21 11 March 2016 03_58.obj 93.85 90.02 16.20 35.97 31.10 28.82 27.06 41.33 40.74 49.66 48.57 27.32 27.06 44.59 46.33 58.63 58.28 44.62 44.86 95.10 24.35 19.77 44.98 25.72 30.56 29.20 93.12 14.30 38.84 38.98 140.61 94.56 140.59 34.71 73.82 69.24 25.68 25.37 102.28 102.89 76.33 25.17 25.33 25.72 42.68 95.59 10.63 93.31 107.75 107.54 107.65 74.37 74.33 39.71 39.08 107.73 21.00 48.70 47.69 27.47 27.63 12.09 9.21 38.57 80.87 99.54 43.40 43.44 100.46 100.26 114.19 105.91 75.23 105.74 127.96 10.76 11.90 23.78 25.60 75.34 74.73 89.46 165.77 60.87 59.72 68.74 68.74 79.72 37.70 37.41 40.03 39.92 37.31 90.86 99.54 18.00 18.00 32.09 31.74 34.93 34.31 94.56 80.87 107.75 42.68 38.57 20.42 25.60 44.87 35.97 31.10 11.90 16.40 94.85 56.15 21.27 62.95 59.72 39.08 27.06 25.72 90.33 64.61 58.28 29.20 33.30 45.75 45.05 46.09 47.60 53.96 52.69 55.00 9.52 18.02 17.31
-A450FA35 23 March 2016 01_05-X.obj 119.68 90.77 12.53 37.74 36.28 25.23 25.51 44.12 44.58 56.28 58.55 25.34 25.51 56.75 53.24 58.68 58.78 43.85 44.51 111.23 28.77 20.13 44.59 29.45 35.84 35.10 111.83 14.42 40.80 42.27 148.87 112.38 145.64 38.36 78.24 87.36 29.63 30.09 107.23 104.23 104.31 29.59 29.90 29.45 40.27 110.42 8.49 109.39 120.07 119.57 116.98 78.40 78.61 42.77 43.40 120.07 17.00 55.80 58.33 24.79 24.78 12.26 12.34 41.83 101.32 107.69 53.62 51.95 108.55 108.50 130.83 119.12 82.18 118.09 131.50 12.84 13.08 31.85 31.75 77.02 78.51 113.42 169.13 68.48 71.48 73.16 73.16 104.11 39.70 40.94 41.01 41.55 43.94 116.90 107.69 18.40 19.03 39.36 39.09 42.48 44.88 112.38 101.32 120.07 40.27 41.83 24.38 31.75 41.67 37.74 36.28 13.08 24.40 113.88 61.90 16.98 68.70 71.48 43.40 25.51 29.45 98.29 68.84 58.78 35.10 35.99 59.73 57.12 62.47 57.11 57.77 62.27 57.77 16.92 21.70 20.08
diff --git a/input/legacy/batched/Spreadsheet8.txt b/input/legacy/batched/Spreadsheet8.txt
deleted file mode 100644
index 8061d3a..0000000
--- a/input/legacy/batched/Spreadsheet8.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-Custom Measurements: Custom Pattern Measurements V2.txt
- [84] Abdomen Circ [Tape] [84h] Abdomen Circ Height [33] Abdomen Rise [88] X Bk Pit-to-Pit [Tape] [178] Across Chest Arm to Arm Length [172] Actual Ankle Circ L [173] Actual Ankle Circ R [174] Actual Knee Circ L [175] Actual Knee Circ R [176] Actual Mid Thigh Circ L [177] Actual Mid Thigh Circ R [91] Ankle Circ L [92] Ankle Circ R [14] Armhole Circ L [Vert] [15] Armhole Circ R [Vert] [16] Arm Length L [17] Arm Length R [18] Arm Under Length L [19] Arm Under Length R [133] Axilla Chest Circ [Tape] [97] CB Neck to CB Chest [Tape] [100] CB Neck to Shldr Blades [Tape] [2] Bk Shoulder Width Horz [162] Bk Vert Rise [89] Bicep Circ L [90] Bicep Circ R [74] Bust Circ with Drop [Tape] [11] Bust Width 1 [54] Calf Circ L [55] Calf Circ R [102] CFNck-Crotch-CBNck [72] Chest/Bust Circ [Tape] [128] Chin Height [0] Collar/Mid Neck Circ [36] Crotch Height [37] Crotch Length Full [122] Elbow Circ L [Tape] [123] Elbow Circ R [Tape] [122h] Elbow Circ L [Tape] Height [123h] Elbow Circ R [Tape] Height [81] Elbow Height Waist Circ [Tape] [115] Forearm Circ L [116] Forearm Circ R [38] Fr Vertical Rise [95] CB Length [CB Nk - Waist] [Tape] [149] High Hip Circ [Tape] [150] High Hip to SoB Waist Length [145] Hinged Upper Bust Circ [85] Hip Circ [Tape] [153] Hips 8 inches Down from SOB OPT Waist [154] Hips 2 inches Above the Crotch [40] Inseam Length L [41] Inseam Length R [48] Knee Circ L [49] Knee Circ R [151] Low Hip Circ [152] Low Hip to SoB Length [46] Mid Thigh Circ L [47] Mid Thigh Circ R [56] Min Low Leg Circ L [57] Min Low Leg Circ R [56h] Min Low Leg Circ L Height [57h] Min Low Leg Circ R [1] Neck Base Circ [105] Opt SoB Waist [Tape] [105h] Opt SoB Waist [Tape] CB Height [170] Armhole Circ Outer L [Pitch] [171] Armhole Circ Outer R [Pitch] [42] Outside Leg Length L [43] Outside Leg Length R [73] Over Arm Circ [Tape] [86] Seat Circ [Tape] [39] Seat Fold Height [168] Shoulder Circ [168h] Shoulder Circ Height [3] Shoulder Length L [4] Shoulder Length R [12] SideNeck to Bust L [Tape] [13] SideNeck to Bust R [Tape] [20] Sleeve Length L [21] Sleeve Length R [83] Stomach Girth [Tape] [99] Subject Height [44] Thigh Circ L [2in down] [45] Thigh Circ R [2in down] [44h] Thigh Circ L [2in down] Height [45h] Thigh Circ R [2in down] Height [75] Underbust Circ [Tape] [50] Under Knee Circ L [51] Under Knee Circ R [50h] Under Knee Circ L Height [51h] Under Knee Circ R Height [163] Upper Bust X Fr [76] Low Waist Circ Pitched [Tape] [76h] Low Waist Circ Pitched [Tape] Height [93] Wrist Circ L [94] Wrist Circ R [234] Up Arm Circ L [235] Up Arm Circ R [179] Fr Crotch Length [180] Bk Crotch Length [001] Chest/Bust Circum Tape Measure [002] Opt Small of back Waist Tape Measure [003] Hip Circum Tape Measure [004] Half Back Centre Tape Measure [005] Neck Circumference [006] Scye Depth (Vertical) [007] Side Neck to Bust Length Right [008] Side Neck to Bust to Waist R [009] Across Back Tape Measurement [010] Across Chest Arm to Arm Length [011] Shoulder Length Right [012] Bust Width [013] Upper Hip SOB -10cm [014] Waist to Knee Length [015] Waist to Hip Length [016] Skirt Length [017] Thigh Circ R [018] Knee Circ R [019] Ankle Circ R [020] Waist to Crotch Length (Body Rise) [021] Waist to Ankle (Outside Leg) [022] Crotch to Ankle (Inside Leg) [023] Sleeve Lenght R [024] Bicep Circ [026] Fr Waist Arc [027] Bk Waist Arc [028] Fr Abdomen Arc [029] Bk Abdomen Arc [030] Bk Seat Arc [031] Fr Hip Arc [032] Bk Hip Arc [033] Waist to Abdomen [034] Waist to Seat
-A101FA23 November 14 2014 02_00.obj 93.03 98.09 14.83 27.54 30.19 24.34 26.51 37.94 37.49 44.43 44.76 24.34 24.73 40.80 44.13 59.93 58.63 46.58 47.53 92.14 21.41 18.42 40.03 29.50 26.83 26.17 85.94 13.85 35.49 35.61 146.41 89.52 155.24 36.29 83.26 72.15 23.16 22.36 116.81 114.01 65.37 21.96 21.87 29.50 40.10 93.42 14.50 88.06 101.72 98.10 100.50 84.59 83.93 37.61 37.03 101.76 29.50 44.30 44.38 22.99 23.84 13.03 12.72 40.68 66.83 112.76 38.67 41.55 113.86 113.94 109.10 98.48 83.41 99.96 142.98 12.21 12.06 26.38 26.55 77.35 76.19 81.52 181.42 55.28 55.89 78.18 78.18 72.45 34.90 34.56 42.84 43.00 39.27 84.99 112.76 16.30 16.44 28.07 28.73 35.67 36.48 89.52 66.83 101.72 40.10 40.68 16.11 26.55 45.83 27.54 30.19 12.06 19.60 87.11 63.99 29.00 70.79 55.89 37.03 24.73 29.50 102.68 73.18 58.63 26.17 43.04 41.88 43.39 49.49 50.78 47.48 54.17 14.67 20.89
-A103FS24 November 14 2014 02_10-BkNk-RShldr.obj 86.02 96.19 19.96 25.93 31.40 24.37 26.48 41.11 41.02 47.83 48.83 24.37 24.85 39.30 39.33 55.86 56.72 43.33 44.04 90.19 23.20 18.65 36.22 30.89 25.89 25.89 84.99 11.64 38.50 38.07 146.57 88.60 149.20 32.64 76.23 78.23 23.09 23.51 112.27 109.88 70.47 22.98 22.59 30.89 39.50 89.76 13.99 87.48 103.02 97.61 102.38 77.49 76.81 38.96 38.79 103.02 28.00 46.53 47.92 23.11 24.22 12.66 12.50 38.89 71.51 107.12 38.07 39.11 108.41 108.19 107.21 98.72 77.15 96.64 134.75 11.70 10.68 26.19 26.52 71.99 72.49 82.54 175.12 56.70 58.74 71.15 71.15 76.70 37.35 36.56 41.49 40.51 38.61 84.71 107.12 17.04 16.59 27.73 27.05 38.31 39.92 88.60 71.51 103.02 39.50 38.89 18.27 26.52 43.81 25.93 31.40 10.68 16.20 85.91 62.20 27.98 69.00 58.74 38.79 24.85 30.89 97.39 66.50 56.72 25.89 44.05 40.60 41.94 43.94 52.69 45.71 57.26 10.93 21.26
-A104FL25 November 14 2014 02_18.obj 77.86 87.08 16.56 25.15 28.40 20.96 22.31 34.79 26.89 40.54 35.64 20.96 21.04 36.06 39.59 52.93 51.06 39.79 40.38 78.25 20.43 18.86 31.96 25.54 25.67 23.92 75.76 11.45 33.46 34.59 128.00 79.82 132.87 29.21 70.51 66.55 22.25 21.39 103.18 100.38 63.02 22.01 21.29 25.54 36.46 80.26 11.74 78.33 90.46 89.42 89.50 71.50 71.70 34.75 35.38 90.46 23.50 40.69 41.66 20.75 21.24 12.70 10.48 33.98 65.17 96.06 36.19 37.72 96.89 96.73 99.40 87.99 71.17 90.59 122.56 9.40 9.69 22.39 21.37 63.82 65.73 74.35 157.30 49.71 51.32 65.43 65.43 68.24 32.40 32.53 37.73 35.85 32.36 76.06 96.06 16.27 15.60 27.93 26.73 32.37 34.18 79.82 65.17 90.46 36.46 33.98 16.14 21.37 37.45 25.15 28.40 9.69 15.00 78.60 53.70 23.47 60.50 51.32 35.38 21.04 25.54 85.57 60.03 51.06 23.92 39.84 36.15 37.77 39.94 47.61 42.18 48.24 8.98 18.12
-A106FG24 November 14 2014 02_35.obj 90.30 93.83 17.83 32.82 31.80 22.13 23.94 39.71 39.12 50.20 50.83 22.13 22.57 59.41 49.43 56.37 56.14 40.43 43.35 101.79 21.36 19.48 42.15 29.59 27.47 26.90 95.68 13.55 38.79 39.35 138.33 101.72 144.18 34.24 76.00 76.76 24.71 24.29 104.70 102.63 76.36 24.52 24.29 29.59 37.14 93.04 13.85 96.43 105.29 98.28 103.67 77.38 77.07 39.14 37.96 105.29 28.00 49.96 50.14 20.82 22.41 13.72 13.53 37.93 76.07 105.60 61.93 45.06 106.82 106.55 113.71 99.88 76.60 100.85 130.72 13.17 12.25 24.27 24.68 73.34 75.03 82.60 164.56 59.34 60.83 70.92 70.92 85.77 36.82 36.24 41.30 41.72 54.05 84.68 105.60 16.75 16.21 30.73 30.34 37.56 39.20 101.72 76.07 105.29 37.14 37.93 21.54 24.68 39.41 32.82 31.80 12.25 21.70 88.59 60.12 27.71 66.92 60.83 37.96 22.57 29.59 94.63 65.04 56.14 26.90 42.75 41.88 40.36 49.82 55.23 45.69 59.54 11.77 21.47
-A108FA26c November 14 2014 02_50.obj 119.86 87.86 17.80 35.77 36.77 25.17 25.45 47.98 48.77 61.02 62.11 25.20 25.45 49.19 48.30 51.78 50.06 36.72 36.46 107.77 24.43 19.51 41.04 31.17 36.38 33.78 106.23 12.32 46.09 45.30 148.13 108.67 136.26 33.68 70.06 85.25 29.82 28.23 103.96 102.73 95.35 29.02 27.64 31.17 37.41 118.95 12.19 103.37 123.24 122.90 123.15 72.17 71.62 50.53 50.14 123.24 24.50 62.46 62.66 25.06 25.66 11.97 11.76 36.22 99.12 101.23 47.93 47.06 102.55 102.38 124.27 121.89 72.20 110.40 124.80 12.51 13.72 28.06 27.79 68.84 69.07 113.34 159.50 71.45 73.15 64.98 64.98 95.59 45.71 44.25 38.43 38.95 43.54 114.41 101.23 18.42 17.21 37.32 35.72 41.73 43.52 108.67 99.12 123.24 37.41 36.22 21.49 27.79 39.48 35.77 36.77 13.72 22.30 115.77 56.51 24.39 63.31 73.15 50.14 25.45 31.17 92.37 61.20 50.06 33.78 61.68 52.67 58.95 60.80 62.66 62.88 60.31 13.36 17.52
-A109FR23a November 14 2014 03_08.obj 80.15 80.63 16.36 27.31 31.40 24.46 24.21 39.86 37.92 48.51 47.08 24.48 24.21 36.34 35.96 46.99 46.43 35.71 35.22 89.08 19.44 18.30 36.76 26.86 26.90 25.51 85.20 13.82 37.90 37.84 130.48 88.53 126.80 32.06 64.27 72.30 23.47 22.51 98.69 96.23 74.11 22.34 22.23 26.86 34.76 83.75 13.18 85.19 90.72 87.50 88.33 65.83 65.29 40.05 38.93 90.75 26.50 48.70 47.46 23.33 23.87 8.88 8.95 36.77 68.69 91.13 35.88 36.23 92.15 91.70 108.80 87.46 64.42 97.39 115.41 12.10 9.19 24.45 23.65 61.50 63.70 72.90 152.47 54.10 54.19 59.19 59.19 76.73 36.10 35.53 31.77 32.28 39.49 75.02 91.13 15.87 15.48 28.03 28.22 35.39 36.92 88.53 68.69 90.72 34.76 36.77 16.75 23.65 38.55 27.31 31.40 9.19 17.00 79.66 54.03 26.36 60.83 54.19 38.93 24.21 26.86 84.35 57.49 46.43 25.51 39.43 35.53 37.88 42.16 46.97 41.72 48.95 10.50 20.27
-A110FR23 November 14 2014 03_15.obj 85.77 89.45 21.92 32.08 32.48 22.39 24.41 40.72 40.49 47.35 47.03 22.39 23.47 42.78 43.04 52.00 50.49 39.50 39.81 95.24 24.26 18.45 41.36 32.68 29.59 27.29 89.71 12.51 40.25 40.18 151.31 92.43 137.90 33.83 67.52 80.36 25.97 25.24 104.25 101.89 75.88 25.35 24.80 32.68 38.78 89.93 14.56 91.47 100.12 94.35 99.97 69.00 68.42 39.96 39.93 100.13 29.00 46.82 46.69 22.73 23.65 10.78 10.78 37.39 75.03 100.20 40.84 41.10 101.04 101.01 114.55 97.00 68.65 104.11 125.30 12.51 12.66 25.43 26.42 69.16 71.19 82.89 161.67 56.51 56.41 62.44 62.44 77.17 38.26 38.56 37.47 37.15 41.54 83.44 100.20 18.41 18.16 32.03 29.89 39.59 40.77 92.43 75.03 100.12 38.78 37.39 20.94 26.42 40.15 32.08 32.48 12.66 17.50 85.34 59.24 29.12 66.04 56.41 39.93 23.47 32.68 89.42 56.75 50.49 27.29 42.15 41.25 39.58 46.05 52.05 45.65 54.43 10.75 22.85
-A112FR22a November 14 2014 03_30.obj 91.45 83.53 19.65 36.25 33.08 27.66 29.76 46.33 44.32 54.78 55.38 27.66 27.98 44.78 46.81 51.24 50.19 37.89 37.92 100.07 23.09 18.16 42.35 30.34 30.03 28.70 98.92 14.97 42.28 43.66 145.32 100.97 129.51 34.54 63.88 80.36 26.16 25.24 96.03 92.97 81.39 25.44 24.70 30.34 35.74 94.75 13.26 96.56 101.92 100.97 101.87 65.44 64.92 43.75 43.48 101.92 26.50 53.88 55.13 26.97 27.42 10.76 10.80 38.81 81.26 94.21 43.93 44.36 94.62 94.82 116.04 100.37 65.08 106.06 117.34 11.12 10.61 27.13 26.12 67.47 69.58 85.22 153.74 59.80 61.65 58.80 58.80 87.99 39.27 39.02 35.92 36.30 37.99 87.70 94.21 17.13 17.01 33.48 32.35 39.62 40.74 100.97 81.26 101.92 35.74 38.81 19.86 26.12 38.54 36.25 33.08 10.61 18.30 90.81 53.19 26.52 59.99 61.65 43.48 27.98 30.34 85.67 55.34 50.19 28.70 43.85 43.79 42.05 49.30 54.73 47.29 54.59 10.68 19.08
diff --git a/input/legacy/non-batched/A003FA52.txt b/input/legacy/non-batched/A003FA52.txt
deleted file mode 100644
index 57e4020..0000000
--- a/input/legacy/non-batched/A003FA52.txt
+++ /dev/null
@@ -1,508 +0,0 @@
-#SizeStream Measurements
-#Stored on Monday, April 23, 2018 12:04:44
-#
-
-#format - Measurement Valid (1 = valid), Measurement Name, Measurement
-#
-1 [001] Chest/Bust Circum Tape Measure: 93.45
-1 [002] Opt Small of back Waist Tape Measure: 81.164
-1 [003] Hip Circum Tape Measure: 103.35
-1 [004] Half Back Centre Tape Measure: 44.788
-1 [005] Neck Circumference: 37.978
-1 [006] Scye Depth (Vertical): 23.647
-1 [007] Side Neck to Bust Length Right: 28.445
-1 [008] Side Neck to Bust to Waist R: 45.259
-1 [009] Across Back Tape Measurement: 24.944
-1 [010] Across Chest Arm to Arm Length: 31.893
-1 [011] Shoulder Length Right: 13.903
-1 [012] Bust Width: 22.
-1 [013] Upper Hip SOB -10cm: 93.728
-1 [014] Waist to Knee Length: 57.914
-1 [015] Waist to Hip Length: 22.694
-1 [016] Skirt Length: 64.714
-1 [017] Thigh Circ R: 61.007
-1 [018] Knee Circ R: 37.478
-1 [019] Ankle Circ R: 23.44
-1 [020] Waist to Crotch Length (Body Rise): 26.138
-1 [021] Waist to Ankle (Outside Leg): 93.578
-1 [022] Crotch to Ankle (Inside Leg): 67.44
-1 [023] Sleeve Lenght R: 54.736
-1 [024] Bicep Circ: 29.443
-1 [026] Fr Waist Arc: 46.141
-1 [027] Bk Waist Arc: 43.146
-1 [028] Fr Abdomen Arc: 45.809
-1 [029] Bk Abdomen Arc: 45.677
-1 [030] Bk Seat Arc: 52.688
-1 [031] Fr Hip Arc: 49.978
-1 [032] Bk Hip Arc: 53.32
-1 [033] Waist to Abdomen: 8.8187
-1 [034] Waist to Seat: 19.765
-#SizeStream Core Measurements
-#format - Measurement Valid (1 = valid), Measurement Name, Measurement
-#
-1 Collar Circumference: 34.523
-1 Neck Circumference: 37.978
-1 Chest / Bust Circum Tape Measure: 93.45
-1 Bust Girth With Drop Tape Measure: 90.115
-1 Underbust Circum Tape Measure: 81.479
-1 Waist Circum Tape Measure: 89.344
-1 Waist Height: 102.97
-1 Pants Waist Tape Measure: 92.783
-1 Opt Small of Back Waist Tape Measure: 81.164
-1 Opt Small Waist Back Height: 102.99
-1 Seat Circum Tape Measure: 102.36
-1 Hip Circum Tape Measure: 103.35
-1 Crotch Length Full: 70.332
-1 Crotch Height: 76.854
-1 Inseam Left: 77.369
-1 Stomach FP Circum Tape Measure: 89.342
-1 Stomach Max Circum Tape Measure: 88.455
-1 Wrist Circumference Left: 16.866
-1 Wrist Circumference Right: 17.668
-1 Abdomen Circum Tape Measure: 91.629
-1 Inseam Right: 77.416
-1 Shoulder Length Left: 12.347
-1 Shoulder Length Right: 13.903
-1 High Hip: 94.232
-1 Arm Hole Circumference Left: 50.962
-1 Arm Hole Circumference Right: 51.879
-1 Arm Length Left: 56.823
-1 Arm Length Right: 54.736
-1 Side Neck to Bust length Left: 29.119
-1 Side Neck to Bust length Right: 28.445
-1 Horizontal Waist Tape Measure: 88.716
-1 Horizontal Waist Height: 97.961
-1 Abdomen Height: 94.173
-1 Front Vertical Rise: 25.796
-1 Thigh Circumference Left: 59.214
-1 Thigh Circumference Right: 61.007
-1 Back Shoulder Width Horizontal: 42.924
-1 MidThigh Circumference Left: 47.593
-1 MidThigh Circumference Right: 49.114
-1 Knee Circumference Left: 36.252
-1 Knee Circumference Right: 37.478
-1 Calf Circumference Left: 38.118
-1 Calf Circumference Right: 38.08
-1 Min lower leg Height Left: 11.893
-1 Min lower leg Height Right: 11.811
-1 Min Lower Leg Girth Left: 23.271
-1 Min Lower Leg Girth Right: 22.304
-1 Surface Area Total: 17529
-1 Surface Area Torso: 5985.
-1 Across Back Tape Measurement: 24.944
-1 Across Chest Tape Measurement: 51.98
-1 Bicep Circumference Left: 31.253
-1 Bicep Circumference Right: 29.443
-1 Back Vertical Rise: 26.138
-1 Ankle Circumference Left: 23.495
-1 Ankle Circumference Right: 23.44
-1 Half Back Center Tape Measure: 44.788
-1 Back Neck to Back Chest Contour Length: 27.777
-1 Back Neck to Back Chest Vertical Length: 26.527
-1 Forearm Circumference Left: 26.329
-1 Forearm Circumference Right: 25.797
-1 Elbow Circumference Tape Measure Left: 27.282
-1 Elbow Circumference Tape Measure Right: 26.233
-1 Chin Height: 146.58
-1 Front Waist Tape Measure: 42.276
-1 Hip Circumference: 103.35
-1 Horizontal Waist: 88.735
-1 Leg Volume Left: 9345.2
-1 Leg Volume Right: 9689.3
-1 Mid Shoulder Height Left: 141.68
-1 Mid Shoulder Height Right: 140.93
-1 Mid Shoulder to Waist Length Left: 47.714
-1 Mid Shoulder to Waist Length Right: 46.457
-1 Narrow Waist: 78.61
-1 Narrow Waist Tape Measure: 78.314
-1 Opt Formula Waist Back Height: 102.78
-1 Opt Formula Waist Front Height: 103.08
-1 Opt Formula Waist Left Height: 103.08
-1 Opt Formula Waist Right Height: 103.08
-1 Opt Formula Waist Tape Measure: 81.53
-1 Opt Small Waist Front Height: 102.65
-1 Opt Small Waist Left Height: 104.06
-1 Opt Small Waist Right Height: 102.97
-1 Outer Arm Hole Circumference Left: 46.788
-1 Outer Arm Hole Circumference Right: 48.735
-1 Outside Leg Length Left: 104.9
-1 Outside Leg Length Right: 103.37
-1 Over Arm Circum Tape Measure: 113.74
-1 OverArm Circumference: 115.58
-1 Pants Waist: 92.804
-1 Seat Circumference: 102.93
-1 Seat Fold Height: 77.941
-1 Shoulder Arc Right: 60.272
-1 Shoulder Circumference: 104.91
-1 Shoulder Circumference Height: 132.16
-1 Shoulder Slope Left: 30.424
-1 Shoulder Slope Right: 31.045
-1 Side Back Waist to Floor Left: 98.689
-1 Side Back Waist to Floor Right: 98.642
-1 Side Neck Trunk Length: 165.86
-1 Side Neck Trunk Length Tape Measure: 164.13
-1 Sleeve Length Left: 73.58
-1 Sleeve Length Right: 74.802
-1 Stomach FP Circumference: 89.346
-1 Stomach Max Circumference: 88.455
-1 Subject Height: 169.45
-1 Thigh Height Left: 71.774
-1 Thigh Height Right: 71.774
-1 Underbust Circumference: 81.723
-1 UnderKnee Circumference Left: 33.794
-1 UnderKnee Circumference Right: 34.775
-1 UnderKnee Height Left: 41.536
-1 UnderKnee Height Right: 40.767
-1 Upper Bust Front Length: 45.691
-1 Vertical Trunk Circumference Left: 161.35
-1 Vertical Trunk Circumference Right: 161.38
-1 Waist at 50%: 83.428
-1 Waist Circumference: 89.355
-1 Bust To Bust Length: 12.414
-#
-#Horizontal Circumferences, Right Arm
-#
-Height 85.27 cm: 17.76
-Height 86.21 cm: 17.32
-Height 87.14 cm: 17.11
-Height 88.08 cm: 17.18
-Height 89.02 cm: 17.6
-Height 89.95 cm: 18.08
-Height 90.89 cm: 18.61
-Height 91.82 cm: 19.24
-Height 92.76 cm: 19.84
-Height 93.69 cm: 20.55
-Height 94.63 cm: 21.3
-Height 95.57 cm: 22.12
-Height 96.5 cm: 22.89
-Height 97.44 cm: 23.81
-Height 98.37 cm: 24.74
-Height 99.31 cm: 25.16
-Height 100.2 cm: 25.67
-Height 101.2 cm: 25.81
-Height 102.1 cm: 25.91
-Height 103.1 cm: 26.07
-Height 104. cm: 26.13
-Height 104.9 cm: 26.42
-Height 105.9 cm: 26.35
-Height 106.8 cm: 26.29
-Height 107.8 cm: 26.33
-Height 108.7 cm: 26.32
-Height 109.7 cm: 26.47
-Height 110.6 cm: 26.65
-Height 111.5 cm: 26.92
-Height 112.5 cm: 27.37
-Height 113.4 cm: 27.86
-Height 114.4 cm: 28.32
-Height 115.3 cm: 28.75
-Height 116.3 cm: 29.18
-Height 117.2 cm: 29.7
-Height 118.2 cm: 30.28
-Height 119.1 cm: 30.98
-Height 120.1 cm: 31.04
-Height 121. cm: 31.6
-Height 121.9 cm: 31.87
-Height 122.9 cm: 31.57
-Height 123.8 cm: 31.37
-#
-#Horizontal Circumferences, Right Leg
-#
-Height 0. cm: 53.17
-Height 0.9992 cm: 53.13
-Height 1.998 cm: 51.94
-Height 2.998 cm: 48.02
-Height 3.997 cm: 42.04
-Height 4.996 cm: 35.82
-Height 5.995 cm: 30.76
-Height 6.994 cm: 27.47
-Height 7.993 cm: 25.27
-Height 8.993 cm: 24.11
-Height 9.992 cm: 23.35
-Height 10.99 cm: 22.75
-Height 11.99 cm: 22.31
-Height 12.99 cm: 22.61
-Height 13.99 cm: 22.95
-Height 14.99 cm: 23.7
-Height 15.99 cm: 24.3
-Height 16.99 cm: 25.3
-Height 17.99 cm: 26.48
-Height 18.98 cm: 27.21
-Height 19.98 cm: 28.01
-Height 20.98 cm: 29.18
-Height 21.98 cm: 30.51
-Height 22.98 cm: 31.68
-Height 23.98 cm: 32.83
-Height 24.98 cm: 33.97
-Height 25.98 cm: 35.2
-Height 26.98 cm: 36.39
-Height 27.98 cm: 37.25
-Height 28.98 cm: 37.87
-Height 29.98 cm: 38.25
-Height 30.97 cm: 38.36
-Height 31.97 cm: 38.3
-Height 32.97 cm: 38.04
-Height 33.97 cm: 37.64
-Height 34.97 cm: 37.16
-Height 35.97 cm: 36.6
-Height 36.97 cm: 36.09
-Height 37.97 cm: 35.62
-Height 38.97 cm: 35.25
-Height 39.97 cm: 35.04
-Height 40.97 cm: 34.95
-Height 41.97 cm: 35.21
-Height 42.96 cm: 35.97
-Height 43.96 cm: 36.69
-Height 44.96 cm: 37.56
-Height 45.96 cm: 38.65
-Height 46.96 cm: 39.34
-Height 47.96 cm: 39.53
-Height 48.96 cm: 39.79
-Height 49.96 cm: 40.09
-Height 50.96 cm: 40.41
-Height 51.96 cm: 40.98
-Height 52.96 cm: 41.87
-Height 53.96 cm: 43.17
-Height 54.96 cm: 44.63
-Height 55.96 cm: 45.96
-Height 56.96 cm: 47.25
-Height 57.96 cm: 48.56
-Height 58.95 cm: 49.91
-Height 59.95 cm: 51.23
-Height 60.95 cm: 52.25
-Height 61.95 cm: 53.21
-Height 62.95 cm: 54.17
-Height 63.95 cm: 55.
-Height 64.95 cm: 55.68
-Height 65.95 cm: 56.3
-Height 66.95 cm: 57.09
-Height 67.95 cm: 57.97
-Height 68.95 cm: 58.96
-Height 69.95 cm: 59.89
-Height 70.95 cm: 60.51
-Height 71.95 cm: 61.37
-Height 72.95 cm: 62.21
-Height 73.95 cm: 62.96
-Height 74.95 cm: 62.65
-Height 75.95 cm: 64.17
-#
-#Horizontal Circumferences, Torso, Crotch point to Head
-#
-Height 77. cm: 108.1
-Height 78. cm: 106.4
-Height 79. cm: 105.5
-Height 80. cm: 105.
-Height 81. cm: 104.5
-Height 82. cm: 103.8
-Height 83. cm: 103.1
-Height 84. cm: 102.2
-Height 85. cm: 101.3
-Height 86. cm: 100.2
-Height 87. cm: 99.2
-Height 88. cm: 98.23
-Height 89. cm: 97.34
-Height 90. cm: 96.41
-Height 91. cm: 95.39
-Height 92. cm: 94.46
-Height 93. cm: 93.31
-Height 94. cm: 92.17
-Height 95. cm: 91.09
-Height 96. cm: 90.38
-Height 97. cm: 89.68
-Height 98. cm: 88.68
-Height 99. cm: 87.31
-Height 100. cm: 85.9
-Height 101. cm: 84.32
-Height 102. cm: 82.92
-Height 103. cm: 81.7
-Height 104. cm: 80.59
-Height 105. cm: 79.7
-Height 106. cm: 79.05
-Height 107. cm: 78.74
-Height 108. cm: 78.75
-Height 109. cm: 79.03
-Height 110. cm: 79.52
-Height 111. cm: 79.9
-Height 112. cm: 80.22
-Height 113. cm: 80.54
-Height 114. cm: 81.4
-Height 115. cm: 83.96
-Height 116. cm: 86.86
-Height 117. cm: 89.59
-Height 118. cm: 92.
-Height 119. cm: 93.84
-Height 120. cm: 94.88
-Height 121. cm: 95.46
-Height 122. cm: 95.26
-Height 123. cm: 94.48
-Height 124. cm: 97.39
-Height 125. cm: 122.8
-Height 126. cm: 117.8
-Height 127. cm: 114.7
-Height 128. cm: 112.7
-Height 129. cm: 111.1
-Height 130. cm: 109.5
-Height 131. cm: 107.6
-Height 132. cm: 105.6
-Height 133. cm: 103.3
-Height 134. cm: 100.8
-Height 135. cm: 97.92
-Height 136. cm: 94.52
-Height 137. cm: 90.54
-Height 138. cm: 84.78
-Height 139. cm: 76.65
-Height 140. cm: 68.04
-Height 141. cm: 54.61
-Height 141.9 cm: 47.8
-Height 142.9 cm: 41.56
-Height 143.8 cm: 37.34
-Height 144.8 cm: 35.09
-Height 145.7 cm: 34.71
-Height 146.6 cm: 35.22
-Height 147.6 cm: 36.87
-Height 148.5 cm: 40.26
-Height 149.5 cm: 45.95
-Height 150.4 cm: 50.44
-Height 151.3 cm: 52.75
-Height 152.3 cm: 66.38
-Height 153.2 cm: 73.91
-Height 154.2 cm: 75.36
-Height 155.1 cm: 76.06
-Height 156. cm: 77.64
-Height 157. cm: 78.46
-Height 157.9 cm: 75.89
-Height 158.9 cm: 73.54
-Height 159.8 cm: 70.66
-Height 160.7 cm: 68.17
-Height 161.7 cm: 65.65
-Height 162.6 cm: 61.95
-Height 163.6 cm: 57.04
-Height 164.5 cm: 51.08
-Height 165.4 cm: 42.8
-Height 166.4 cm: 32.47
-Height 167.3 cm: 18.63
-Height 169.3 cm: 18.52
-#
-#Horizontal Circumferences, Left Arm
-#
-Height 88.4 cm: 16.97
-Height 89.24 cm: 16.75
-Height 90.08 cm: 16.67
-Height 90.93 cm: 16.65
-Height 91.77 cm: 16.9
-Height 92.61 cm: 17.5
-Height 93.46 cm: 17.9
-Height 94.3 cm: 18.49
-Height 95.14 cm: 19.14
-Height 95.99 cm: 20.02
-Height 96.83 cm: 21.1
-Height 97.67 cm: 22.17
-Height 98.51 cm: 23.25
-Height 99.36 cm: 24.32
-Height 100.2 cm: 25.07
-Height 101. cm: 25.7
-Height 101.9 cm: 26.21
-Height 102.7 cm: 26.5
-Height 103.6 cm: 26.59
-Height 104.4 cm: 26.44
-Height 105.3 cm: 26.42
-Height 106.1 cm: 26.5
-Height 106.9 cm: 26.68
-Height 107.8 cm: 28.
-Height 108.7 cm: 28.14
-Height 109.6 cm: 28.57
-Height 110.5 cm: 29.13
-Height 111.5 cm: 29.16
-Height 112.4 cm: 29.25
-Height 113.3 cm: 29.6
-Height 114.2 cm: 30.02
-Height 115.1 cm: 30.51
-Height 116.1 cm: 30.84
-Height 117. cm: 30.98
-Height 117.9 cm: 31.14
-Height 118.8 cm: 31.43
-Height 119.7 cm: 31.8
-Height 120.7 cm: 32.29
-Height 121.6 cm: 33.02
-Height 122.5 cm: 32.55
-Height 123.4 cm: 32.83
-Height 124.3 cm: 32.54
-#
-#Horizontal Circumferences, Left Leg
-#
-Height 0. cm: 48.01
-Height 0.9995 cm: 55.19
-Height 1.999 cm: 52.06
-Height 2.998 cm: 47.84
-Height 3.998 cm: 42.14
-Height 4.997 cm: 36.52
-Height 5.997 cm: 31.73
-Height 6.996 cm: 28.67
-Height 7.996 cm: 26.38
-Height 8.995 cm: 24.57
-Height 9.995 cm: 23.77
-Height 10.99 cm: 23.56
-Height 11.99 cm: 23.38
-Height 12.99 cm: 23.4
-Height 13.99 cm: 23.71
-Height 14.99 cm: 23.96
-Height 15.99 cm: 24.18
-Height 16.99 cm: 24.88
-Height 17.99 cm: 25.63
-Height 18.99 cm: 26.77
-Height 19.99 cm: 27.72
-Height 20.99 cm: 28.68
-Height 21.99 cm: 29.88
-Height 22.99 cm: 31.23
-Height 23.99 cm: 32.65
-Height 24.99 cm: 34.08
-Height 25.99 cm: 35.39
-Height 26.99 cm: 36.4
-Height 27.99 cm: 37.2
-Height 28.99 cm: 37.83
-Height 29.98 cm: 38.19
-Height 30.98 cm: 38.38
-Height 31.98 cm: 38.35
-Height 32.98 cm: 38.16
-Height 33.98 cm: 37.79
-Height 34.98 cm: 37.35
-Height 35.98 cm: 36.75
-Height 36.98 cm: 36.17
-Height 37.98 cm: 35.62
-Height 38.98 cm: 35.1
-Height 39.98 cm: 34.58
-Height 40.98 cm: 34.05
-Height 41.98 cm: 34.12
-Height 42.98 cm: 34.78
-Height 43.98 cm: 35.58
-Height 44.98 cm: 36.34
-Height 45.98 cm: 36.82
-Height 46.97 cm: 37.72
-Height 47.97 cm: 38.39
-Height 48.97 cm: 38.84
-Height 49.96 cm: 39.39
-Height 50.96 cm: 39.85
-Height 51.96 cm: 40.32
-Height 52.95 cm: 41.15
-Height 53.95 cm: 42.27
-Height 54.94 cm: 43.37
-Height 55.94 cm: 44.48
-Height 56.94 cm: 45.64
-Height 57.93 cm: 46.87
-Height 58.93 cm: 48.12
-Height 59.93 cm: 49.33
-Height 60.92 cm: 50.38
-Height 61.92 cm: 51.37
-Height 62.92 cm: 52.3
-Height 63.91 cm: 53.11
-Height 64.91 cm: 54.02
-Height 65.9 cm: 54.87
-Height 66.9 cm: 55.76
-Height 67.9 cm: 56.73
-Height 68.89 cm: 57.58
-Height 69.89 cm: 58.33
-Height 70.89 cm: 59.07
-Height 71.88 cm: 59.71
-Height 72.88 cm: 60.2
-Height 73.88 cm: 60.74
-Height 74.87 cm: 61.03
-Height 75.87 cm: 61.62
\ No newline at end of file
diff --git a/input/legacy/non-batched/A674FA46.txt b/input/legacy/non-batched/A674FA46.txt
deleted file mode 100644
index 75fc3b8..0000000
--- a/input/legacy/non-batched/A674FA46.txt
+++ /dev/null
@@ -1,508 +0,0 @@
-#SizeStream Measurements
-#Stored on Thursday, April 26, 2018 11:31:23
-#
-#
-#format - Measurement Valid (1 = valid), Measurement Name, Measurement
-#
-1 [001] Chest/Bust Circum Tape Measure: 107.8
-1 [002] Opt Small of back Waist Tape Measure: 93.94
-1 [003] Hip Circum Tape Measure: 122.38
-1 [004] Half Back Centre Tape Measure: 41.382
-1 [005] Neck Circumference: 35.163
-1 [006] Scye Depth (Vertical): 21.922
-1 [007] Side Neck to Bust Length Right: 28.506
-1 [008] Side Neck to Bust to Waist R: 42.778
-1 [009] Across Back Tape Measurement: 34.563
-1 [010] Across Chest Arm to Arm Length: 35.382
-1 [011] Shoulder Length Right: 13.193
-1 [012] Bust Width: 22.8
-1 [013] Upper Hip SOB -10cm: 114.69
-1 [014] Waist to Knee Length: 61.318
-1 [015] Waist to Hip Length: 21.965
-1 [016] Skirt Length: 68.118
-1 [017] Thigh Circ R: 64.755
-1 [018] Knee Circ R: 44.062
-1 [019] Ankle Circ R: 30.636
-1 [020] Waist to Crotch Length (Body Rise): 28.429
-1 [021] Waist to Ankle (Outside Leg): 97.947
-1 [022] Crotch to Ankle (Inside Leg): 69.517
-1 [023] Sleeve Lenght R: 55.67
-1 [024] Bicep Circ: 33.448
-1 [026] Fr Waist Arc: 56.482
-1 [027] Bk Waist Arc: 54.576
-1 [028] Fr Abdomen Arc: 57.255
-1 [029] Bk Abdomen Arc: 59.661
-1 [030] Bk Seat Arc: 61.581
-1 [031] Fr Hip Arc: 58.697
-1 [032] Bk Hip Arc: 63.646
-1 [033] Waist to Abdomen: 10.479
-1 [034] Waist to Seat: 14.567
-#SizeStream Core Measurements
-#format - Measurement Valid (1 = valid), Measurement Name, Measurement
-#
-1 Collar Circumference: 32.084
-1 Neck Circumference: 35.163
-1 Chest / Bust Circum Tape Measure: 107.8
-1 Bust Girth With Drop Tape Measure: 105.26
-1 Underbust Circum Tape Measure: 91.539
-1 Waist Circum Tape Measure: 111.12
-1 Waist Height: 106.67
-1 Pants Waist Tape Measure: 113.55
-1 Opt Small of Back Waist Tape Measure: 93.94
-1 Opt Small Waist Back Height: 105.44
-1 Seat Circum Tape Measure: 119.57
-1 Hip Circum Tape Measure: 122.38
-1 Crotch Length Full: 81.089
-1 Crotch Height: 77.008
-1 Inseam Left: 77.588
-1 Stomach FP Circum Tape Measure: 96.378
-1 Stomach Max Circum Tape Measure: 106.93
-1 Wrist Circumference Left: 17.916
-1 Wrist Circumference Right: 18.737
-1 Abdomen Circum Tape Measure: 117.
-1 Inseam Right: 77.504
-1 Shoulder Length Left: 13.497
-1 Shoulder Length Right: 13.193
-1 High Hip: 117.37
-1 Arm Hole Circumference Left: 48.064
-1 Arm Hole Circumference Right: 48.546
-1 Arm Length Left: 55.744
-1 Arm Length Right: 55.67
-1 Side Neck to Bust length Left: 28.589
-1 Side Neck to Bust length Right: 28.506
-1 Horizontal Waist Tape Measure: 107.34
-1 Horizontal Waist Height: 99.99
-1 Abdomen Height: 94.958
-1 Front Vertical Rise: 29.724
-1 Thigh Circumference Left: 63.284
-1 Thigh Circumference Right: 64.755
-1 Back Shoulder Width Horizontal: 43.073
-1 MidThigh Circumference Left: 50.181
-1 MidThigh Circumference Right: 50.848
-1 Knee Circumference Left: 42.124
-1 Knee Circumference Right: 44.062
-1 Calf Circumference Left: 43.085
-1 Calf Circumference Right: 41.658
-1 Min lower leg Height Left: 10.371
-1 Min lower leg Height Right: 10.622
-1 Min Lower Leg Girth Left: 30.182
-1 Min Lower Leg Girth Right: 29.997
-1 Surface Area Total: 19173
-1 Surface Area Torso: 6283.2
-1 Across Back Tape Measurement: 34.563
-1 Across Chest Tape Measurement: 54.945
-1 Bicep Circumference Left: 34.003
-1 Bicep Circumference Right: 33.448
-1 Back Vertical Rise: 28.429
-1 Ankle Circumference Left: 31.623
-1 Ankle Circumference Right: 30.636
-1 Half Back Center Tape Measure: 41.382
-1 Back Neck to Back Chest Contour Length: 26.235
-1 Back Neck to Back Chest Vertical Length: 24.608
-1 Forearm Circumference Left: 25.684
-1 Forearm Circumference Right: 27.92
-1 Elbow Circumference Tape Measure Left: 26.385
-1 Elbow Circumference Tape Measure Right: 28.472
-1 Chin Height: 145.54
-1 Front Waist Tape Measure: 49.842
-1 Hip Circumference: 122.38
-1 Horizontal Waist: 107.36
-1 Leg Volume Left: 11791
-1 Leg Volume Right: 11839
-1 Mid Shoulder Height Left: 141.52
-1 Mid Shoulder Height Right: 140.92
-1 Mid Shoulder to Waist Length Left: 46.248
-1 Mid Shoulder to Waist Length Right: 45.246
-1 Narrow Waist: 90.393
-1 Narrow Waist Tape Measure: 90.287
-1 Opt Formula Waist Back Height: 103.34
-1 Opt Formula Waist Front Height: 103.62
-1 Opt Formula Waist Left Height: 103.62
-1 Opt Formula Waist Right Height: 103.62
-1 Opt Formula Waist Tape Measure: 99.26
-1 Opt Small Waist Front Height: 106.73
-1 Opt Small Waist Left Height: 106.65
-1 Opt Small Waist Right Height: 106.67
-1 Outer Arm Hole Circumference Left: 44.984
-1 Outer Arm Hole Circumference Right: 45.914
-1 Outside Leg Length Left: 108.74
-1 Outside Leg Length Right: 108.35
-1 Over Arm Circum Tape Measure: 128.95
-1 OverArm Circumference: 133.31
-1 Pants Waist: 113.55
-1 Seat Circumference: 119.57
-1 Seat Fold Height: 79.05
-1 Shoulder Arc Right: 57.755
-1 Shoulder Circumference: 108.61
-1 Shoulder Circumference Height: 132.42
-1 Shoulder Slope Left: 22.9
-1 Shoulder Slope Right: 21.244
-1 Side Back Waist to Floor Left: 100.8
-1 Side Back Waist to Floor Right: 100.71
-1 Side Neck Trunk Length: 168.51
-1 Side Neck Trunk Length Tape Measure: 166.33
-1 Sleeve Length Left: 73.066
-1 Sleeve Length Right: 75.554
-1 Stomach FP Circumference: 96.406
-1 Stomach Max Circumference: 106.93
-1 Subject Height: 168.56
-1 Thigh Height Left: 71.928
-1 Thigh Height Right: 71.928
-1 Underbust Circumference: 91.56
-1 UnderKnee Circumference Left: 41.916
-1 UnderKnee Circumference Right: 40.424
-1 UnderKnee Height Left: 41.935
-1 UnderKnee Height Right: 41.36
-1 Upper Bust Front Length: 45.832
-1 Vertical Trunk Circumference Left: 167.46
-1 Vertical Trunk Circumference Right: 167.7
-1 Waist at 50%: 94.654
-1 Waist Circumference: 111.12
-1 Bust To Bust Length: 16.74
-#
-#Horizontal Circumferences, Right Arm
-#
-Height 86.93 cm: 18.91
-Height 87.86 cm: 18.78
-Height 88.8 cm: 19.32
-Height 89.73 cm: 19.4
-Height 90.67 cm: 19.25
-Height 91.6 cm: 19.72
-Height 92.54 cm: 20.23
-Height 93.47 cm: 20.72
-Height 94.41 cm: 21.36
-Height 95.34 cm: 21.98
-Height 96.28 cm: 22.76
-Height 97.21 cm: 23.5
-Height 98.15 cm: 24.26
-Height 99.08 cm: 25.33
-Height 100. cm: 26.08
-Height 100.9 cm: 26.71
-Height 101.9 cm: 27.14
-Height 102.8 cm: 27.45
-Height 103.8 cm: 27.84
-Height 104.7 cm: 28.19
-Height 105.6 cm: 28.24
-Height 106.6 cm: 28.07
-Height 107.5 cm: 29.22
-Height 108.4 cm: 29.77
-Height 109.3 cm: 29.84
-Height 110.2 cm: 29.47
-Height 111.1 cm: 29.16
-Height 112. cm: 29.09
-Height 112.9 cm: 29.09
-Height 113.8 cm: 29.1
-Height 114.7 cm: 29.43
-Height 115.6 cm: 30.04
-Height 116.5 cm: 30.79
-Height 117.3 cm: 31.65
-Height 118.2 cm: 32.68
-Height 119.1 cm: 33.45
-Height 120. cm: 34.22
-Height 120.9 cm: 34.66
-Height 121.8 cm: 34.98
-Height 122.7 cm: 34.49
-Height 123.6 cm: 34.49
-Height 124.5 cm: 32.89
-#
-#Horizontal Circumferences, Right Leg
-#
-Height 0. cm: 60.94
-Height 0.9993 cm: 61.62
-Height 1.999 cm: 59.77
-Height 2.998 cm: 54.87
-Height 3.997 cm: 47.88
-Height 4.997 cm: 41.41
-Height 5.996 cm: 35.58
-Height 6.995 cm: 31.84
-Height 7.994 cm: 30.52
-Height 8.994 cm: 29.76
-Height 9.993 cm: 29.94
-Height 10.99 cm: 30.19
-Height 11.99 cm: 30.39
-Height 12.99 cm: 30.45
-Height 13.99 cm: 30.78
-Height 14.99 cm: 30.73
-Height 15.99 cm: 30.86
-Height 16.99 cm: 31.46
-Height 17.99 cm: 32.19
-Height 18.99 cm: 33.04
-Height 19.99 cm: 33.24
-Height 20.99 cm: 33.72
-Height 21.98 cm: 34.44
-Height 22.98 cm: 35.26
-Height 23.98 cm: 36.08
-Height 24.98 cm: 36.94
-Height 25.98 cm: 37.86
-Height 26.98 cm: 38.64
-Height 27.98 cm: 39.42
-Height 28.98 cm: 40.2
-Height 29.98 cm: 40.77
-Height 30.98 cm: 41.18
-Height 31.98 cm: 41.51
-Height 32.98 cm: 41.73
-Height 33.98 cm: 41.91
-Height 34.98 cm: 41.99
-Height 35.98 cm: 41.91
-Height 36.97 cm: 41.64
-Height 37.97 cm: 41.26
-Height 38.97 cm: 40.98
-Height 39.97 cm: 40.74
-Height 40.97 cm: 40.62
-Height 41.97 cm: 40.8
-Height 42.97 cm: 41.48
-Height 43.97 cm: 42.14
-Height 44.97 cm: 42.7
-Height 45.96 cm: 43.57
-Height 46.96 cm: 44.4
-Height 47.95 cm: 45.04
-Height 48.95 cm: 45.52
-Height 49.94 cm: 45.84
-Height 50.94 cm: 46.08
-Height 51.93 cm: 46.21
-Height 52.93 cm: 46.38
-Height 53.92 cm: 46.76
-Height 54.92 cm: 47.32
-Height 55.91 cm: 48.25
-Height 56.91 cm: 49.24
-Height 57.9 cm: 50.35
-Height 58.9 cm: 51.44
-Height 59.89 cm: 52.41
-Height 60.89 cm: 53.41
-Height 61.88 cm: 54.42
-Height 62.87 cm: 55.47
-Height 63.87 cm: 56.54
-Height 64.86 cm: 57.73
-Height 65.86 cm: 58.91
-Height 66.85 cm: 59.8
-Height 67.85 cm: 60.63
-Height 68.84 cm: 61.59
-Height 69.84 cm: 62.39
-Height 70.83 cm: 63.3
-Height 71.83 cm: 64.5
-Height 72.82 cm: 65.83
-Height 73.82 cm: 69.63
-Height 74.81 cm: 72.4
-Height 75.81 cm: 75.41
-Height 76.8 cm: 77.19
-#
-#Horizontal Circumferences, Torso, Crotch point to Head
-#
-Height 77. cm: 120.6
-Height 78. cm: 122.4
-Height 79. cm: 122.5
-Height 80. cm: 122.8
-Height 81. cm: 123.1
-Height 82. cm: 123.2
-Height 83. cm: 123.2
-Height 84. cm: 122.9
-Height 85. cm: 122.2
-Height 86. cm: 121.6
-Height 87. cm: 121.
-Height 88. cm: 120.4
-Height 89. cm: 120.
-Height 90. cm: 119.7
-Height 91. cm: 119.6
-Height 92. cm: 119.4
-Height 93. cm: 119.1
-Height 94. cm: 118.5
-Height 95. cm: 117.4
-Height 96. cm: 115.9
-Height 97. cm: 114.1
-Height 98. cm: 111.9
-Height 99. cm: 109.7
-Height 100. cm: 107.3
-Height 101. cm: 105.
-Height 102. cm: 102.7
-Height 103. cm: 100.4
-Height 104. cm: 98.09
-Height 105. cm: 96.18
-Height 106. cm: 94.45
-Height 107. cm: 93.
-Height 108. cm: 92.44
-Height 109. cm: 92.37
-Height 110. cm: 92.28
-Height 111. cm: 91.79
-Height 112. cm: 90.77
-Height 113. cm: 90.43
-Height 114. cm: 91.5
-Height 115. cm: 95.7
-Height 116. cm: 99.91
-Height 117. cm: 103.2
-Height 118. cm: 105.5
-Height 119. cm: 107.8
-Height 120. cm: 110.
-Height 121. cm: 110.3
-Height 122. cm: 110.3
-Height 123. cm: 110.
-Height 124. cm: 108.1
-Height 125. cm: 107.4
-Height 126. cm: 136.3
-Height 127. cm: 132.5
-Height 128. cm: 128.4
-Height 129. cm: 123.
-Height 130. cm: 118.1
-Height 131. cm: 114.
-Height 132. cm: 110.4
-Height 133. cm: 107.1
-Height 134. cm: 103.7
-Height 135. cm: 100.4
-Height 136. cm: 96.97
-Height 137. cm: 93.62
-Height 138. cm: 89.71
-Height 139. cm: 84.12
-Height 140. cm: 79.93
-Height 140.9 cm: 58.93
-Height 141.9 cm: 45.97
-Height 142.8 cm: 38.56
-Height 143.8 cm: 34.1
-Height 144.7 cm: 32.38
-Height 145.6 cm: 32.4
-Height 146.6 cm: 33.72
-Height 147.5 cm: 36.62
-Height 148.5 cm: 44.37
-Height 149.4 cm: 48.41
-Height 150.3 cm: 50.14
-Height 151.3 cm: 51.17
-Height 152.2 cm: 52.18
-Height 153.2 cm: 53.58
-Height 154.1 cm: 54.65
-Height 155. cm: 56.15
-Height 156. cm: 58.04
-Height 156.9 cm: 58.32
-Height 157.9 cm: 56.7
-Height 158.8 cm: 55.49
-Height 159.7 cm: 54.69
-Height 160.7 cm: 52.9
-Height 161.6 cm: 50.86
-Height 162.6 cm: 48.93
-Height 163.5 cm: 46.96
-Height 164.4 cm: 43.15
-Height 165.4 cm: 42.6
-Height 166.3 cm: 24.86
-Height 168.3 cm: 3.583
-#
-#Horizontal Circumferences, Left Arm
-#
-Height 90.93 cm: 18.05
-Height 91.82 cm: 17.87
-Height 92.7 cm: 17.87
-Height 93.59 cm: 17.87
-Height 94.48 cm: 17.81
-Height 95.37 cm: 18.21
-Height 96.26 cm: 18.85
-Height 97.15 cm: 19.46
-Height 98.04 cm: 20.16
-Height 98.93 cm: 20.87
-Height 99.82 cm: 21.56
-Height 100.7 cm: 22.32
-Height 101.6 cm: 23.49
-Height 102.5 cm: 23.79
-Height 103.4 cm: 24.38
-Height 104.3 cm: 24.7
-Height 105.2 cm: 24.92
-Height 106. cm: 25.4
-Height 106.9 cm: 25.77
-Height 107.8 cm: 25.91
-Height 108.7 cm: 26.08
-Height 109.6 cm: 26.16
-Height 110.5 cm: 26.
-Height 111.4 cm: 26.91
-Height 112.2 cm: 27.21
-Height 113. cm: 27.44
-Height 113.8 cm: 27.54
-Height 114.6 cm: 27.68
-Height 115.5 cm: 27.83
-Height 116.3 cm: 27.98
-Height 117.1 cm: 28.34
-Height 117.9 cm: 28.97
-Height 118.7 cm: 29.76
-Height 119.6 cm: 30.76
-Height 120.4 cm: 32.17
-Height 121.2 cm: 33.24
-Height 122. cm: 34.19
-Height 122.8 cm: 35.13
-Height 123.7 cm: 35.2
-Height 124.5 cm: 35.22
-Height 125.3 cm: 35.31
-#
-#Horizontal Circumferences, Left Leg
-#
-Height 0. cm: 61.1
-Height 0.9982 cm: 60.3
-Height 1.996 cm: 58.09
-Height 2.995 cm: 53.11
-Height 3.993 cm: 46.72
-Height 4.991 cm: 41.14
-Height 5.989 cm: 36.24
-Height 6.987 cm: 32.43
-Height 7.985 cm: 31.13
-Height 8.984 cm: 30.52
-Height 9.982 cm: 30.44
-Height 10.98 cm: 30.15
-Height 11.98 cm: 30.42
-Height 12.98 cm: 30.75
-Height 13.97 cm: 31.05
-Height 14.97 cm: 31.12
-Height 15.97 cm: 31.26
-Height 16.97 cm: 31.71
-Height 17.97 cm: 32.39
-Height 18.97 cm: 32.99
-Height 19.96 cm: 33.52
-Height 20.96 cm: 34.25
-Height 21.96 cm: 35.19
-Height 22.96 cm: 36.25
-Height 23.96 cm: 37.3
-Height 24.95 cm: 38.23
-Height 25.95 cm: 39.27
-Height 26.95 cm: 40.22
-Height 27.95 cm: 40.98
-Height 28.95 cm: 41.76
-Height 29.95 cm: 42.43
-Height 30.94 cm: 42.89
-Height 31.94 cm: 43.19
-Height 32.94 cm: 43.36
-Height 33.94 cm: 43.36
-Height 34.94 cm: 43.21
-Height 35.93 cm: 42.98
-Height 36.93 cm: 42.71
-Height 37.93 cm: 42.52
-Height 38.93 cm: 42.34
-Height 39.93 cm: 42.12
-Height 40.93 cm: 42.02
-Height 41.92 cm: 41.94
-Height 42.92 cm: 41.99
-Height 43.92 cm: 42.2
-Height 44.92 cm: 42.17
-Height 45.92 cm: 42.51
-Height 46.91 cm: 43.1
-Height 47.91 cm: 43.88
-Height 48.91 cm: 44.51
-Height 49.91 cm: 44.97
-Height 50.91 cm: 45.39
-Height 51.9 cm: 45.87
-Height 52.9 cm: 46.4
-Height 53.9 cm: 46.89
-Height 54.9 cm: 47.43
-Height 55.89 cm: 48.17
-Height 56.89 cm: 48.98
-Height 57.89 cm: 49.92
-Height 58.89 cm: 50.86
-Height 59.89 cm: 51.78
-Height 60.88 cm: 52.74
-Height 61.88 cm: 53.67
-Height 62.88 cm: 54.58
-Height 63.88 cm: 55.5
-Height 64.88 cm: 56.52
-Height 65.87 cm: 57.53
-Height 66.87 cm: 58.62
-Height 67.87 cm: 59.36
-Height 68.87 cm: 60.21
-Height 69.87 cm: 61.16
-Height 70.86 cm: 61.92
-Height 71.86 cm: 62.87
-Height 72.86 cm: 64.1
-Height 73.86 cm: 65.38
-Height 74.85 cm: 67.32
-Height 75.85 cm: 71.27
-Height 76.85 cm: 74.62
diff --git a/input/legacy/non-batched/A676FR39.txt b/input/legacy/non-batched/A676FR39.txt
deleted file mode 100644
index 86c0cea..0000000
--- a/input/legacy/non-batched/A676FR39.txt
+++ /dev/null
@@ -1,492 +0,0 @@
-#SizeStream Measurements
-#Stored on Monday, April 23, 2018 12:16:21
-#
-#
-#format - Measurement Valid (1 = valid), Measurement Name, Measurement
-#
-1 [001] Chest/Bust Circum Tape Measure: 93.837
-1 [002] Opt Small of back Waist Tape Measure: 76.917
-1 [003] Hip Circum Tape Measure: 99.886
-1 [004] Half Back Centre Tape Measure: 41.307
-1 [005] Neck Circumference: 34.437
-1 [006] Scye Depth (Vertical): 19.817
-1 [007] Side Neck to Bust Length Right: 25.626
-1 [008] Side Neck to Bust to Waist R: 44.459
-1 [009] Across Back Tape Measurement: 26.946
-1 [010] Across Chest Arm to Arm Length: 32.683
-1 [011] Shoulder Length Right: 11.835
-1 [012] Bust Width: 18.
-1 [013] Upper Hip SOB -10cm: 88.669
-1 [014] Waist to Knee Length: 56.656
-1 [015] Waist to Hip Length: 24.842
-1 [016] Skirt Length: 63.456
-1 [017] Thigh Circ R: 52.941
-1 [018] Knee Circ R: 34.386
-1 [019] Ankle Circ R: 21.873
-1 [020] Waist to Crotch Length (Body Rise): 27.558
-1 [021] Waist to Ankle (Outside Leg): 89.364
-1 [022] Crotch to Ankle (Inside Leg): 61.807
-1 [023] Sleeve Lenght R: 52.391
-1 [024] Bicep Circ: 26.324
-1 [026] Fr Waist Arc: 45.739
-1 [027] Bk Waist Arc: 40.605
-1 [028] Fr Abdomen Arc: 45.132
-1 [029] Bk Abdomen Arc: 43.149
-1 [030] Bk Seat Arc: 52.051
-1 [031] Fr Hip Arc: 47.145
-1 [032] Bk Hip Arc: 52.697
-1 [033] Waist to Abdomen: 8.9398
-1 [034] Waist to Seat: 19.284
-#SizeStream Core Measurements
-#format - Measurement Valid (1 = valid), Measurement Name, Measurement
-#
-1 Collar Circumference: 32.083
-1 Neck Circumference: 34.437
-1 Chest / Bust Circum Tape Measure: 93.837
-1 Bust Girth With Drop Tape Measure: 90.046
-1 Underbust Circum Tape Measure: 79.591
-1 Waist Circum Tape Measure: 86.407
-1 Waist Height: 99.695
-1 Pants Waist Tape Measure: 89.138
-1 Opt Small of Back Waist Tape Measure: 76.917
-1 Opt Small Waist Back Height: 98.402
-1 Seat Circum Tape Measure: 97.666
-1 Hip Circum Tape Measure: 99.886
-1 Crotch Length Full: 71.152
-1 Crotch Height: 70.844
-1 Inseam Left: 71.939
-1 Stomach FP Circum Tape Measure: 74.466
-1 Stomach Max Circum Tape Measure: 84.978
-1 Wrist Circumference Left: 14.681
-1 Wrist Circumference Right: 15.695
-1 Abdomen Circum Tape Measure: 88.449
-1 Inseam Right: 71.419
-1 Shoulder Length Left: 12.903
-1 Shoulder Length Right: 11.835
-1 High Hip: 90.887
-1 Arm Hole Circumference Left: 38.445
-1 Arm Hole Circumference Right: 44.887
-1 Arm Length Left: 52.511
-1 Arm Length Right: 52.391
-1 Side Neck to Bust length Left: 26.863
-1 Side Neck to Bust length Right: 25.626
-1 Horizontal Waist Tape Measure: 85.328
-1 Horizontal Waist Height: 93.063
-1 Abdomen Height: 89.462
-1 Front Vertical Rise: 28.851
-1 Thigh Circumference Left: 52.479
-1 Thigh Circumference Right: 52.941
-1 Back Shoulder Width Horizontal: 40.642
-1 MidThigh Circumference Left: 41.751
-1 MidThigh Circumference Right: 42.82
-1 Knee Circumference Left: 32.987
-1 Knee Circumference Right: 34.386
-1 Calf Circumference Left: 35.676
-1 Calf Circumference Right: 35.954
-1 Min lower leg Height Left: 11.2
-1 Min lower leg Height Right: 11.274
-1 Min Lower Leg Girth Left: 20.837
-1 Min Lower Leg Girth Right: 21.122
-1 Surface Area Total: 15917
-1 Surface Area Torso: 5720.
-1 Across Back Tape Measurement: 26.946
-1 Across Chest Tape Measurement: 47.02
-1 Bicep Circumference Left: 27.421
-1 Bicep Circumference Right: 26.324
-1 Back Vertical Rise: 27.558
-1 Ankle Circumference Left: 21.492
-1 Ankle Circumference Right: 21.873
-1 Half Back Center Tape Measure: 41.307
-1 Back Neck to Back Chest Contour Length: 22.895
-1 Back Neck to Back Chest Vertical Length: 22.14
-1 Forearm Circumference Left: 23.207
-1 Forearm Circumference Right: 23.18
-1 Elbow Circumference Tape Measure Left: 23.561
-1 Elbow Circumference Tape Measure Right: 23.808
-1 Chin Height: 139.81
-1 Front Waist Tape Measure: 37.597
-1 Hip Circumference: 99.886
-1 Horizontal Waist: 85.355
-1 Leg Volume Left: 7350.4
-1 Leg Volume Right: 7587.7
-1 Mid Shoulder Height Left: 135.54
-1 Mid Shoulder Height Right: 134.78
-1 Mid Shoulder to Waist Length Left: 44.768
-1 Mid Shoulder to Waist Length Right: 43.885
-1 Narrow Waist: 74.204
-1 Narrow Waist Tape Measure: 74.032
-1 Opt Formula Waist Back Height: 96.714
-1 Opt Formula Waist Front Height: 97.002
-1 Opt Formula Waist Left Height: 97.002
-1 Opt Formula Waist Right Height: 97.002
-1 Opt Formula Waist Tape Measure: 79.895
-1 Opt Small Waist Front Height: 99.695
-1 Opt Small Waist Left Height: 99.695
-1 Opt Small Waist Right Height: 99.695
-1 Outer Arm Hole Circumference Left: 37.482
-1 Outer Arm Hole Circumference Right: 42.468
-1 Outside Leg Length Left: 100.85
-1 Outside Leg Length Right: 100.32
-1 Over Arm Circum Tape Measure: 111.45
-1 OverArm Circumference: 113.6
-1 Pants Waist: 89.159
-1 Seat Circumference: 97.776
-1 Seat Fold Height: 71.702
-1 Shoulder Arc Right: 51.059
-1 Shoulder Circumference: 100.79
-1 Shoulder Circumference Height: 127.45
-1 Shoulder Slope Left: 17.219
-1 Shoulder Slope Right: 21.324
-1 Side Back Waist to Floor Left: 93.527
-1 Side Back Waist to Floor Right: 93.522
-1 Side Neck Trunk Length: 158.09
-1 Side Neck Trunk Length Tape Measure: 156.2
-1 Sleeve Length Left: 69.628
-1 Sleeve Length Right: 71.538
-1 Stomach FP Circumference: 74.588
-1 Stomach Max Circumference: 84.978
-1 Subject Height: 162.72
-1 Thigh Height Left: 65.764
-1 Thigh Height Right: 65.764
-1 Underbust Circumference: 79.638
-1 UnderKnee Circumference Left: 32.023
-1 UnderKnee Circumference Right: 32.236
-1 UnderKnee Height Left: 38.771
-1 UnderKnee Height Right: 38.408
-1 Upper Bust Front Length: 40.154
-1 Vertical Trunk Circumference Left: 155.95
-1 Vertical Trunk Circumference Right: 155.33
-1 Waist at 50%: 78.301
-1 Waist Circumference: 86.411
-1 Bust To Bust Length: 13.902
-#
-#Horizontal Circumferences, Right Arm
-#
-Height 83.18 cm: 15.78
-Height 84.1 cm: 15.35
-Height 85.02 cm: 15.26
-Height 85.94 cm: 15.44
-Height 86.85 cm: 15.65
-Height 87.77 cm: 16.21
-Height 88.69 cm: 16.64
-Height 89.61 cm: 17.08
-Height 90.52 cm: 17.73
-Height 91.44 cm: 18.48
-Height 92.36 cm: 19.08
-Height 93.28 cm: 19.74
-Height 94.19 cm: 20.47
-Height 95.11 cm: 21.25
-Height 96.03 cm: 21.96
-Height 96.95 cm: 22.65
-Height 97.86 cm: 23.08
-Height 98.78 cm: 23.33
-Height 99.7 cm: 23.36
-Height 100.6 cm: 23.52
-Height 101.5 cm: 23.82
-Height 102.5 cm: 23.73
-Height 103.4 cm: 23.76
-Height 104.4 cm: 23.68
-Height 105.3 cm: 23.48
-Height 106.3 cm: 23.13
-Height 107.2 cm: 22.9
-Height 108.2 cm: 22.91
-Height 109.1 cm: 23.46
-Height 110. cm: 23.95
-Height 111. cm: 24.56
-Height 111.9 cm: 25.23
-Height 112.9 cm: 26.21
-Height 113.8 cm: 26.54
-Height 114.8 cm: 26.32
-Height 115.7 cm: 26.67
-Height 116.7 cm: 27.31
-Height 117.6 cm: 27.69
-Height 118.6 cm: 27.94
-Height 119.5 cm: 27.82
-#
-#Horizontal Circumferences, Right Leg
-#
-Height 0. cm: 61.47
-Height 0.9994 cm: 54.02
-Height 1.999 cm: 53.15
-Height 2.998 cm: 48.73
-Height 3.997 cm: 41.01
-Height 4.997 cm: 34.75
-Height 5.996 cm: 29.41
-Height 6.995 cm: 26.21
-Height 7.995 cm: 23.69
-Height 8.994 cm: 22.4
-Height 9.994 cm: 21.84
-Height 10.99 cm: 21.27
-Height 11.99 cm: 21.17
-Height 12.99 cm: 21.63
-Height 13.99 cm: 22.04
-Height 14.99 cm: 22.62
-Height 15.99 cm: 23.99
-Height 16.99 cm: 25.61
-Height 17.99 cm: 27.1
-Height 18.99 cm: 28.13
-Height 19.99 cm: 29.21
-Height 20.99 cm: 30.51
-Height 21.99 cm: 31.8
-Height 22.99 cm: 32.93
-Height 23.98 cm: 33.98
-Height 24.98 cm: 34.89
-Height 25.98 cm: 35.55
-Height 26.98 cm: 36.01
-Height 27.98 cm: 36.19
-Height 28.98 cm: 36.21
-Height 29.98 cm: 36.12
-Height 30.98 cm: 35.87
-Height 31.98 cm: 35.53
-Height 32.98 cm: 35.06
-Height 33.98 cm: 34.48
-Height 34.98 cm: 33.89
-Height 35.98 cm: 33.37
-Height 36.98 cm: 32.96
-Height 37.98 cm: 32.54
-Height 38.97 cm: 32.59
-Height 39.97 cm: 33.27
-Height 40.97 cm: 34.13
-Height 41.97 cm: 34.81
-Height 42.97 cm: 35.44
-Height 43.97 cm: 36.04
-Height 44.97 cm: 36.44
-Height 45.97 cm: 36.83
-Height 46.97 cm: 37.24
-Height 47.97 cm: 37.69
-Height 48.97 cm: 38.42
-Height 49.97 cm: 39.19
-Height 50.97 cm: 40.06
-Height 51.97 cm: 40.97
-Height 52.97 cm: 42.02
-Height 53.97 cm: 43.17
-Height 54.96 cm: 44.21
-Height 55.96 cm: 45.06
-Height 56.96 cm: 46.
-Height 57.96 cm: 46.93
-Height 58.96 cm: 47.83
-Height 59.96 cm: 48.58
-Height 60.96 cm: 49.41
-Height 61.96 cm: 50.26
-Height 62.96 cm: 51.03
-Height 63.96 cm: 51.82
-Height 64.96 cm: 52.62
-Height 65.96 cm: 53.13
-Height 66.96 cm: 53.57
-Height 67.96 cm: 54.15
-Height 68.96 cm: 55.91
-Height 69.95 cm: 57.74
-#
-#Horizontal Circumferences, Torso, Crotch point to Head
-#
-Height 71. cm: 109.
-Height 72. cm: 103.8
-Height 73. cm: 102.4
-Height 74. cm: 101.8
-Height 75. cm: 101.1
-Height 76. cm: 100.3
-Height 77. cm: 99.52
-Height 78. cm: 98.71
-Height 79. cm: 97.87
-Height 80. cm: 97.01
-Height 81. cm: 96.1
-Height 82. cm: 95.18
-Height 83. cm: 94.27
-Height 84. cm: 93.32
-Height 85. cm: 92.37
-Height 86. cm: 91.44
-Height 87. cm: 90.57
-Height 88. cm: 89.81
-Height 89. cm: 89.1
-Height 90. cm: 88.39
-Height 91. cm: 87.64
-Height 92. cm: 86.6
-Height 93. cm: 85.39
-Height 94. cm: 84.1
-Height 95. cm: 82.7
-Height 96. cm: 81.17
-Height 97. cm: 79.65
-Height 98. cm: 78.18
-Height 99. cm: 76.85
-Height 100. cm: 75.67
-Height 101. cm: 74.84
-Height 102. cm: 74.34
-Height 103. cm: 74.67
-Height 104. cm: 75.53
-Height 105. cm: 76.71
-Height 106. cm: 77.83
-Height 107. cm: 78.63
-Height 108. cm: 78.97
-Height 109. cm: 79.02
-Height 110. cm: 79.42
-Height 111. cm: 81.4
-Height 112. cm: 84.64
-Height 113. cm: 87.47
-Height 114. cm: 90.63
-Height 115. cm: 92.6
-Height 116. cm: 94.74
-Height 117. cm: 96.53
-Height 118. cm: 97.03
-Height 119. cm: 96.78
-Height 120. cm: 97.06
-Height 121. cm: 96.1
-Height 122. cm: 95.16
-Height 123. cm: 112.5
-Height 124. cm: 110.1
-Height 125. cm: 107.6
-Height 126. cm: 105.
-Height 127. cm: 102.6
-Height 128. cm: 100.
-Height 129. cm: 97.42
-Height 130. cm: 94.8
-Height 131. cm: 91.85
-Height 132. cm: 87.79
-Height 133. cm: 82.05
-Height 134. cm: 72.3
-Height 135. cm: 47.85
-Height 135.9 cm: 36.97
-Height 136.9 cm: 33.48
-Height 137.8 cm: 32.49
-Height 138.8 cm: 32.83
-Height 139.7 cm: 34.75
-Height 140.6 cm: 41.54
-Height 141.6 cm: 48.64
-Height 142.5 cm: 57.38
-Height 143.5 cm: 59.8
-Height 144.4 cm: 60.55
-Height 145.3 cm: 61.8
-Height 146.3 cm: 63.15
-Height 147.2 cm: 64.34
-Height 148.2 cm: 65.1
-Height 149.1 cm: 64.86
-Height 150. cm: 62.35
-Height 151. cm: 62.1
-Height 151.9 cm: 61.77
-Height 152.9 cm: 61.03
-Height 153.8 cm: 59.1
-Height 154.7 cm: 56.72
-Height 155.7 cm: 52.43
-Height 156.6 cm: 48.82
-Height 157.6 cm: 43.08
-Height 158.5 cm: 34.23
-Height 159.4 cm: 18.11
-Height 161.4 cm: 29.32
-Height 162.4 cm: 5.087
-#
-#Horizontal Circumferences, Left Arm
-#
-Height 87.13 cm: 14.8
-Height 88.01 cm: 14.78
-Height 88.9 cm: 14.94
-Height 89.78 cm: 15.24
-Height 90.67 cm: 15.51
-Height 91.55 cm: 15.89
-Height 92.44 cm: 16.42
-Height 93.32 cm: 16.79
-Height 94.21 cm: 17.21
-Height 95.1 cm: 17.98
-Height 95.98 cm: 18.84
-Height 96.87 cm: 19.75
-Height 97.75 cm: 20.62
-Height 98.64 cm: 21.45
-Height 99.52 cm: 21.94
-Height 100.4 cm: 22.45
-Height 101.3 cm: 22.61
-Height 102.2 cm: 22.9
-Height 103.1 cm: 23.32
-Height 103.9 cm: 23.57
-Height 104.8 cm: 23.45
-Height 105.7 cm: 23.37
-Height 106.6 cm: 23.97
-Height 107.5 cm: 23.95
-Height 108.4 cm: 23.39
-Height 109.3 cm: 23.54
-Height 110.2 cm: 24.7
-Height 111.1 cm: 25.16
-Height 112.1 cm: 25.32
-Height 113. cm: 25.57
-Height 113.9 cm: 26.01
-Height 114.8 cm: 26.38
-Height 115.7 cm: 26.84
-Height 116.6 cm: 27.52
-Height 117.5 cm: 28.36
-Height 118.4 cm: 29.26
-Height 119.3 cm: 28.91
-Height 120.2 cm: 29.36
-Height 121.1 cm: 29.62
-Height 122.1 cm: 30.21
-#
-#Horizontal Circumferences, Left Leg
-#
-Height 0. cm: 49.11
-Height 0.9979 cm: 53.87
-Height 1.996 cm: 52.53
-Height 2.994 cm: 47.62
-Height 3.991 cm: 40.34
-Height 4.989 cm: 34.23
-Height 5.987 cm: 29.2
-Height 6.985 cm: 25.9
-Height 7.983 cm: 23.47
-Height 8.981 cm: 22.05
-Height 9.979 cm: 21.33
-Height 10.98 cm: 21.06
-Height 11.97 cm: 20.93
-Height 12.97 cm: 20.9
-Height 13.97 cm: 21.57
-Height 14.97 cm: 22.13
-Height 15.97 cm: 23.24
-Height 16.96 cm: 24.86
-Height 17.96 cm: 26.17
-Height 18.96 cm: 27.38
-Height 19.96 cm: 28.73
-Height 20.96 cm: 30.21
-Height 21.95 cm: 31.45
-Height 22.95 cm: 32.43
-Height 23.95 cm: 33.44
-Height 24.95 cm: 34.38
-Height 25.94 cm: 35.08
-Height 26.94 cm: 35.62
-Height 27.94 cm: 35.9
-Height 28.94 cm: 35.91
-Height 29.94 cm: 35.86
-Height 30.93 cm: 35.61
-Height 31.93 cm: 35.07
-Height 32.93 cm: 34.45
-Height 33.93 cm: 33.97
-Height 34.93 cm: 33.4
-Height 35.92 cm: 32.85
-Height 36.92 cm: 32.37
-Height 37.92 cm: 31.95
-Height 38.92 cm: 31.8
-Height 39.91 cm: 31.98
-Height 40.91 cm: 32.45
-Height 41.91 cm: 33.07
-Height 42.91 cm: 33.72
-Height 43.9 cm: 34.31
-Height 44.9 cm: 34.81
-Height 45.89 cm: 35.31
-Height 46.89 cm: 35.8
-Height 47.89 cm: 36.37
-Height 48.88 cm: 37.1
-Height 49.88 cm: 37.89
-Height 50.88 cm: 38.84
-Height 51.87 cm: 39.88
-Height 52.87 cm: 40.98
-Height 53.86 cm: 42.03
-Height 54.86 cm: 42.97
-Height 55.86 cm: 43.88
-Height 56.85 cm: 44.79
-Height 57.85 cm: 45.72
-Height 58.84 cm: 46.64
-Height 59.84 cm: 47.49
-Height 60.84 cm: 48.34
-Height 61.83 cm: 49.31
-Height 62.83 cm: 50.25
-Height 63.82 cm: 51.09
-Height 64.82 cm: 51.91
-Height 65.82 cm: 52.67
-Height 66.81 cm: 53.33
-Height 67.81 cm: 53.99
-Height 68.8 cm: 54.83
-Height 69.8 cm: 55.89
-Height 70.8 cm: 57.01
diff --git a/input/legacy/non-batched/A793FR28.txt b/input/legacy/non-batched/A793FR28.txt
deleted file mode 100644
index 9ffce6e..0000000
--- a/input/legacy/non-batched/A793FR28.txt
+++ /dev/null
@@ -1,275 +0,0 @@
-#SizeStream Measurements
-#Stored on Wednesday, March 14, 2018 13:48:13
-#SizeStream Core Measurements
-#format - Measurement Valid (1 = valid), Measurement Name, Measurement
-#
-1 Abdomen Circum Tape Measure: 68.849
-1 Abdomen Circum Tape Measure Back Left: 15.861
-1 Abdomen Circum Tape Measure Back Right: 15.86
-1 Abdomen Circum Tape Measure Front Left: 18.365
-1 Abdomen Circum Tape Measure Front Right: 18.655
-1 Abdomen Circumference: 68.849
-1 Abdomen Height: 87.165
-1 Abdomen Rise: 16.556
-1 Across Axilla Chest Back Length: 31.227
-1 Across Axilla Chest Front Length: 41.224
-1 Across Back Tape Measurement: 18.516
-1 Across Chest Arm to Arm Length: 29.487
-1 Across Chest Tape Measurement: 43.47
-1 Actual Ankle Circumference Left: 23.894
-1 Actual Ankle Circumference Right: 25.296
-1 Actual Knee Circumference Left: 31.924
-1 Actual Knee Circumference Right: 31.121
-1 Actual Mid-Thigh Circumference Left: 35.953
-1 Actual Mid-Thigh Circumference Right: 35.475
-1 Ankle Circumference Left: 23.894
-1 Ankle Circumference Right: 24.117
-1 Arm Hole Circumference Left: 30.018
-1 Arm Hole Circumference Right: 30.4
-1 Arm Length Left: 51.135
-1 Arm Length Right: 50.307
-1 Arm Under Length Left: 40.098
-1 Arm Under Length Right: 41.484
-1 Arm Volume Left: 1562.
-1 Arm Volume Right: 1281.4
-1 Axilla Chest Circumference Tape Measure: 72.866
-1 Back Crotch Length: 34.318
-1 Back Neck to Back Chest Contour Length: 20.315
-1 Back Neck to Back Chest Vertical Length: 19.182
-1 Back Neck to Shoulder Blade Tape Measure: 19.474
-1 Back Shoulder Width at 45 Degree Angle: 25.963
-1 Back Shoulder Width Horizontal: 26.996
-1 Back Shoulder Width Through Back Of Neck: 6.8516
-1 Back Vertical Rise: 26.479
-1 Bicep Circumference Left: 19.322
-1 Bicep Circumference Right: 17.068
-1 Bust Girth With Drop: 71.49
-1 Bust Girth With Drop Back Left: 13.325
-1 Bust Girth With Drop Back Right: 14.592
-1 Bust Girth With Drop Front Left: 21.575
-1 Bust Girth With Drop Front Right: 21.764
-1 Bust Girth With Drop Tape Measure: 71.308
-1 Bust Prominence Left: 19.077
-1 Bust Prominence Right: 17.564
-1 Bust Surface Area Left: 272.31
-1 Bust Surface Area Right: 267.99
-1 Bust To Bust Length: 9.097
-1 Bust Volume Left: 416.96
-1 Bust Volume Right: 360.12
-1 Calf Circumference Left: 30.601
-1 Calf Circumference Right: 31.538
-1 Center Trunk Length: 131.13
-1 Center Trunk Length Tape Measure: 126.09
-1 Cervicale to Bust Length Left: 31.122
-1 Cervicale to Bust Length Right: 31.401
-1 Chest / Bust Circum Tape Measure: 74.277
-1 Chest / Bust Circumference: 74.599
-1 Chest/Bust Circum Back Left: 13.955
-1 Chest/Bust Circum Back Right: 14.586
-1 Chest/Bust Circum Front Left: 22.849
-1 Chest/Bust Circum Front Right: 22.793
-1 Chin Height: 135.47
-1 Collar Circumference: 28.347
-1 Crotch Height: 70.609
-1 Crotch Length Full: 65.406
-1 Elbow Circumference Tape Measure Left: 17.551
-1 Elbow Circumference Tape Measure Right: 16.251
-1 Elbow Height Left: 101.97
-1 Elbow Height Right: 100.89
-1 Elbow Height Waist: 59.63
-1 Elbow Height Waist Tape Measure: 59.596
-1 Foot Length Left: 19.714
-1 Foot Length Right: 19.367
-1 Forearm Circumference Left: 16.644
-1 Forearm Circumference Right: 16.274
-1 Front Crotch Length: 31.089
-1 Front Hip Tape Measure: 39.093
-1 Front Jacket Tape Measure: 66.038
-1 Front Shoulder Width: 31.817
-1 Front Vertical Rise: 26.479
-1 Front Waist Tape Measure: 29.253
-1 Half Back Center Tape Measure: 34.453
-1 Halter: 73.19
-1 Head Circumference: 61.644
-1 High Hip: 68.795
-1 High Hip to Small Of Back Optimized Waist: 9.7235
-1 Hinged Bust Circumference: 84.476
-1 Hinged Upper Bust Circumference: 71.297
-1 Hip Circum Tape Measure: 79.074
-1 Hip Circum Tape Measure Back Left: 19.044
-1 Hip Circum Tape Measure Back Right: 19.677
-1 Hip Circum Tape Measure Front Left: 20.303
-1 Hip Circum Tape Measure Front Right: 19.994
-1 Hip Circumference: 79.074
-1 Hip Widest Circum Tape Measure Back Right: 19.03
-1 Hip Widest Circum Tape Measure Back Left: 19.034
-1 Hip Widest Circum Tape Measure Front Left: 20.307
-1 Hip Widest Circum Tape Measure Front Right: 20.036
-1 Hip Widest Tape Circumference: 78.475
-1 Hips Eight Inches Down from Small of Back: 78.959
-1 Hips Two Inches Above Crotch: 78.926
-1 Horizontal Waist: 61.819
-1 Horizontal Waist Height: 91.114
-1 Horizontal Waist Tape Measure: 61.783
-1 Inseam Left: 71.331
-1 Inseam Right: 71.691
-1 Knee Circumference Left: 31.833
-1 Knee Circumference Right: 30.856
-1 Leg Volume Left: 5490.3
-1 Leg Volume Right: 5341.2
-1 Low Hip: 79.072
-1 Low Hip to Small Of Back Optimized Waist: 19.5
-1 Mid Shoulder Height Left: 127.91
-1 Mid Shoulder Height Right: 129.25
-1 Mid Shoulder To Bust Length Left: 24.488
-1 Mid Shoulder To Bust Length Right: 25.352
-1 Mid Shoulder to Waist Length Left: 38.959
-1 Mid Shoulder to Waist Length Right: 39.687
-1 MidThigh Circumference Left: 36.522
-1 MidThigh Circumference Right: 35.584
-1 Min Lower Leg Girth Left: 23.646
-1 Min Lower Leg Girth Right: 24.303
-1 Min lower leg Height Left: 14.103
-1 Min lower leg Height Right: 12.15
-1 Narrow Waist: 56.388
-1 Narrow Waist Tape Measure: 56.373
-1 Neck Circum Back Left: 6.3507
-1 Neck Circum Back Right: 5.9661
-1 Neck Circum Front Left: 11.038
-1 Neck Circum Front Right: 10.7
-1 Neck Circumference: 34.054
-1 Opt Formula Waist Back Height: 96.237
-1 Opt Formula Waist Front Height: 95.831
-1 Opt Formula Waist Left Height: 96.349
-1 Opt Formula Waist Right Height: 96.328
-1 Opt Formula Waist Tape Measure: 56.681
-1 Opt Formula Waist Tape Measure Back Left: 13.314
-1 Opt Formula Waist Tape Measure Back Right: 13.96
-1 Opt Formula Waist Tape Measure Front Left: 14.102
-1 Opt Formula Waist Tape Measure Front Right: 15.211
-1 Opt Small of Back Waist Tape Measure: 56.686
-1 Opt Small of Back Waist Tape Measure Back Left: 13.293
-1 Opt Small of Back Waist Tape Measure Back Right: 13.943
-1 Opt Small of Back Waist Tape Measure Front Left: 14.122
-1 Opt Small of Back Waist Tape Measure Front Right: 15.215
-1 Opt Small Waist Back Height: 97.088
-1 Opt Small Waist Front Height: 97.088
-1 Opt Small Waist Left Height: 97.088
-1 Opt Small Waist Right Height: 97.088
-1 Outer Arm Hole Circumference Left: 29.819
-1 Outer Arm Hole Circumference Right: 31.301
-1 Outside Leg Length Left: 98.509
-1 Outside Leg Length Right: 98.281
-1 Over Arm Circum Tape Measure: 95.684
-1 OverArm Circumference: 100.91
-1 Pants Waist: 68.967
-1 Pants Waist Tape Measure: 68.952
-1 Seat Circum Tape Measure: 79.071
-1 Seat Circum Tape Measure Back Left: 19.044
-1 Seat Circum Tape Measure Back Right: 19.676
-1 Seat Circum Tape Measure Front Left: 20.302
-1 Seat Circum Tape Measure Front Right: 19.991
-1 Seat Circumference: 79.526
-0 Seat Fold Height: 0.
-1 Shoulder Arc Left: 47.9
-1 Shoulder Arc Right: 48.908
-1 Shoulder Circumference: 82.497
-1 Shoulder Circumference Height: 121.37
-1 Shoulder Length Left: 8.6942
-1 Shoulder Length Right: 8.5007
-1 Shoulder Slope Left: 22.584
-1 Shoulder Slope Right: 20.901
-0 Side Back Waist to Floor Left: 0.
-0 Side Back Waist to Floor Right: 0.
-1 Side Neck to Bust length Left: 24.314
-1 Side Neck to Bust length Right: 24.94
-1 Side Neck Trunk Length: 143.88
-1 Side Neck Trunk Length Tape Measure: 140.74
-1 Sleeve Length Left: 61.895
-1 Sleeve Length Right: 62.33
-1 Stomach FP Circum Tape Measure: 56.096
-1 Stomach FP Circum Tape Measure Back Left: 13.937
-1 Stomach FP Circum Tape Measure Back Right: 12.735
-1 Stomach FP Circum Tape Measure Front Left: 13.953
-1 Stomach FP Circum Tape Measure Front Right: 15.365
-1 Stomach FP Circumference: 56.1
-1 Stomach Max Circum Tape Measure: 61.494
-1 Stomach Max Circum Tape Measure Back Left: 14.595
-1 Stomach Max Circum Tape Measure Back Right: 13.318
-1 Stomach Max Circum Tape Measure Front Left: 16.452
-1 Stomach Max Circum Tape Measure Front Right: 17.035
-1 Stomach Max Circumference: 61.494
-1 Subject Height: 156.23
-1 Surface Area Arm Left: 1061.9
-1 Surface Area Arm Right: 962.27
-1 Surface Area Leg Left: 3122.8
-1 Surface Area Leg Right: 3233.5
-1 Surface Area Torso: 4356.4
-1 Surface Area Total: 12737
-1 Thigh Circumference Left: 40.229
-1 Thigh Circumference Right: 40.438
-1 Thigh Height Left: 65.529
-1 Thigh Height Right: 65.529
-1 Torso Volume: 23705
-1 Underbust Circum Tape Measure: 64.574
-1 Underbust Circum Tape Measure Back Left: 13.957
-1 Underbust Circum Tape Measure Back Right: 13.957
-1 Underbust Circum Tape Measure Front Left: 17.767
-1 Underbust Circum Tape Measure Front Right: 18.841
-1 Underbust Circumference: 64.585
-1 UnderKnee Circumference Left: 29.338
-1 UnderKnee Circumference Right: 29.199
-1 UnderKnee Height Left: 35.268
-1 UnderKnee Height Right: 37.049
-1 Upper Bust Front Length: 33.283
-1 Vertical Trunk Circumference Left: 136.52
-1 Vertical Trunk Circumference Right: 139.2
-1 Volume: 37380
-1 Waist at 50%: 58.056
-1 Waist Circum Tape Measure: 63.596
-1 Waist Circum Tape Measure Back Left: 16.491
-1 Waist Circum Tape Measure Back Right: 16.491
-1 Waist Circum Tape Measure Front Left: 14.589
-1 Waist Circum Tape Measure Front Right: 15.957
-1 Waist Circumference: 63.612
-1 Waist Height: 97.088
-1 Wrist Circumference Left: 13.269
-1 Wrist Circumference Right: 12.291
-1 Upper Arm Circumference Left: 23.997
-1 Upper Arm Circumference Right: 22.678
-#SizeStream Custom Measurements
-#format - Measurement Valid (1 = valid), Measurement Name, Measurement
-#
-1 [001] Chect/Bust Circum Tape Measure: 74.277
-1 [002] Opt Small of back Waist Tape Measure: 56.686
-1 [003] Hip Circum Tape Measure: 79.074
-1 [004] Half Back Centre Tape Measure: 34.453
-1 [005] Neck Circumference: 34.054
-1 [006] Scye Depth (Vertical): 12.995
-1 [007] Side Neck to Bust Length Right: 24.94
-1 [008] Side Neck to Bust to Waist R: 39.962
-1 [009] Across Back Tape Measurement: 18.516
-1 [010] Across Chest Arm to Arm Length: 29.487
-1 [011] Shoulder Length Right: 8.5007
-1 [012] Bust Width: 14.7
-1 [013] Upper Hip SOB -10cm: 69.379
-1 [014] Waist to Knee Length: 53.782
-1 [015] Waist to Hip Length: 19.447
-1 [016] Skirt Length: 60.582
-1 [017] Thigh Circ R: 40.438
-1 [018] Knee Circ R: 30.856
-1 [019] Ankle Circ R: 24.117
-1 [020] Waist to Crotch Length (Body Rise): 26.479
-1 [021] Waist to Ankle (Outside Leg): 84.938
-1 [022] Crotch to Ankle (Inside Leg): 58.459
-1 [023] Sleeve Lenght R: 50.307
-1 [024] Bicep Circ: 17.068
-1 [026] Fr Waist Arc: 30.546
-1 [027] Bk Waist Arc: 32.982
-1 [028] Fr Abdomen Arc: 37.02
-1 [029] Bk Abdomen Arc: 31.722
-1 [030] Bk Seat Arc: 38.72
-1 [031] Fr Hip Arc: 40.297
-1 [032] Bk Hip Arc: 38.721
-1 [033] Waist to Abdomen: 9.9234
-1 [034] Waist to Seat: 19.548
diff --git a/input/legacy/non-batched/A808FZ31.txt b/input/legacy/non-batched/A808FZ31.txt
deleted file mode 100644
index 7c21252..0000000
--- a/input/legacy/non-batched/A808FZ31.txt
+++ /dev/null
@@ -1,496 +0,0 @@
-#SizeStream Measurements
-#Stored on Thursday, April 26, 2018 11:31:00
-#
-#
-#format - Measurement Valid (1 = valid), Measurement Name, Measurement
-#
-1 [001] Chest/Bust Circum Tape Measure: 96.94
-1 [002] Opt Small of back Waist Tape Measure: 78.914
-1 [003] Hip Circum Tape Measure: 112.99
-1 [004] Half Back Centre Tape Measure: 39.836
-1 [005] Neck Circumference: 40.245
-1 [006] Scye Depth (Vertical): 21.827
-1 [007] Side Neck to Bust Length Right: 26.488
-1 [008] Side Neck to Bust to Waist R: 40.285
-1 [009] Across Back Tape Measurement: 32.746
-1 [010] Across Chest Arm to Arm Length: 31.245
-1 [011] Shoulder Length Right: 9.1645
-1 [012] Bust Width: 18.1
-1 [013] Upper Hip SOB -10cm: 96.652
-1 [014] Waist to Knee Length: 61.021
-1 [015] Waist to Hip Length: 26.996
-1 [016] Skirt Length: 67.821
-1 [017] Thigh Circ R: 65.157
-1 [018] Knee Circ R: 41.547
-1 [019] Ankle Circ R: 30.237
-1 [020] Waist to Crotch Length (Body Rise): 29.892
-1 [021] Waist to Ankle (Outside Leg): 95.727
-1 [022] Crotch to Ankle (Inside Leg): 65.835
-1 [023] Sleeve Lenght R: 54.589
-1 [024] Bicep Circ: 32.679
-1 [026] Fr Waist Arc: 47.838
-1 [027] Bk Waist Arc: 45.049
-1 [028] Fr Abdomen Arc: 50.21
-1 [029] Bk Abdomen Arc: 47.583
-1 [030] Bk Seat Arc: 55.227
-1 [031] Fr Hip Arc: 55.816
-1 [032] Bk Hip Arc: 57.13
-1 [033] Waist to Abdomen: 10.897
-1 [034] Waist to Seat: 21.003
-#SizeStream Core Measurements
-#format - Measurement Valid (1 = valid), Measurement Name, Measurement
-#
-1 Collar Circumference: 37.89
-1 Neck Circumference: 40.245
-1 Chest / Bust Circum Tape Measure: 96.94
-1 Bust Girth With Drop Tape Measure: 93.037
-1 Underbust Circum Tape Measure: 85.902
-1 Waist Circum Tape Measure: 92.946
-1 Waist Height: 103.54
-1 Pants Waist Tape Measure: 96.581
-1 Opt Small of Back Waist Tape Measure: 78.914
-1 Opt Small Waist Back Height: 103.12
-1 Seat Circum Tape Measure: 109.16
-1 Hip Circum Tape Measure: 112.99
-1 Crotch Length Full: 78.986
-1 Crotch Height: 73.232
-1 Inseam Left: 73.89
-1 Stomach FP Circum Tape Measure: 96.88
-1 Stomach Max Circum Tape Measure: 89.82
-1 Wrist Circumference Left: 18.125
-1 Wrist Circumference Right: 17.289
-1 Abdomen Circum Tape Measure: 97.922
-1 Inseam Right: 73.922
-1 Shoulder Length Left: 10.972
-1 Shoulder Length Right: 9.1645
-1 High Hip: 101.18
-1 Arm Hole Circumference Left: 52.073
-1 Arm Hole Circumference Right: 49.045
-1 Arm Length Left: 54.462
-1 Arm Length Right: 54.589
-1 Side Neck to Bust length Left: 25.747
-1 Side Neck to Bust length Right: 26.488
-1 Horizontal Waist Tape Measure: 90.08
-1 Horizontal Waist Height: 97.216
-1 Abdomen Height: 92.227
-1 Front Vertical Rise: 29.996
-1 Thigh Circumference Left: 66.406
-1 Thigh Circumference Right: 65.157
-1 Back Shoulder Width Horizontal: 36.411
-1 MidThigh Circumference Left: 54.334
-1 MidThigh Circumference Right: 52.216
-1 Knee Circumference Left: 42.827
-1 Knee Circumference Right: 41.547
-1 Calf Circumference Left: 44.115
-1 Calf Circumference Right: 43.295
-1 Min lower leg Height Left: 10.404
-1 Min lower leg Height Right: 10.285
-1 Min Lower Leg Girth Left: 28.507
-1 Min Lower Leg Girth Right: 28.993
-1 Surface Area Total: 18572
-1 Surface Area Torso: 6171.8
-1 Across Back Tape Measurement: 32.746
-1 Across Chest Tape Measurement: 44.404
-1 Bicep Circumference Left: 35.266
-1 Bicep Circumference Right: 32.679
-1 Back Vertical Rise: 29.892
-1 Ankle Circumference Left: 29.991
-1 Ankle Circumference Right: 30.237
-1 Half Back Center Tape Measure: 39.836
-1 Back Neck to Back Chest Contour Length: 25.192
-1 Back Neck to Back Chest Vertical Length: 23.381
-1 Forearm Circumference Left: 29.439
-1 Forearm Circumference Right: 28.395
-1 Elbow Circumference Tape Measure Left: 30.489
-1 Elbow Circumference Tape Measure Right: 28.587
-1 Chin Height: 142.67
-1 Front Waist Tape Measure: 39.143
-1 Hip Circumference: 112.99
-1 Horizontal Waist: 90.134
-1 Leg Volume Left: 11884
-1 Leg Volume Right: 11539
-1 Mid Shoulder Height Left: 138.03
-1 Mid Shoulder Height Right: 138.03
-1 Mid Shoulder to Waist Length Left: 42.432
-1 Mid Shoulder to Waist Length Right: 43.394
-1 Narrow Waist: 78.585
-1 Narrow Waist Tape Measure: 78.539
-1 Opt Formula Waist Back Height: 99.365
-1 Opt Formula Waist Front Height: 99.652
-1 Opt Formula Waist Left Height: 99.652
-1 Opt Formula Waist Right Height: 99.652
-1 Opt Formula Waist Tape Measure: 85.677
-1 Opt Small Waist Front Height: 103.23
-1 Opt Small Waist Left Height: 104.41
-1 Opt Small Waist Right Height: 103.54
-1 Outer Arm Hole Circumference Left: 49.519
-1 Outer Arm Hole Circumference Right: 50.098
-1 Outside Leg Length Left: 105.94
-1 Outside Leg Length Right: 104.86
-1 Over Arm Circum Tape Measure: 113.27
-1 OverArm Circumference: 114.82
-1 Pants Waist: 96.583
-1 Seat Circumference: 109.23
-1 Seat Fold Height: 74.147
-1 Shoulder Arc Right: 55.992
-1 Shoulder Circumference: 102.61
-1 Shoulder Circumference Height: 128.74
-1 Shoulder Slope Left: 22.846
-1 Shoulder Slope Right: 23.804
-1 Side Back Waist to Floor Left: 98.214
-1 Side Back Waist to Floor Right: 98.187
-1 Side Neck Trunk Length: 164.37
-1 Side Neck Trunk Length Tape Measure: 162.3
-1 Sleeve Length Left: 69.633
-1 Sleeve Length Right: 69.513
-1 Stomach FP Circumference: 96.88
-1 Stomach Max Circumference: 89.82
-1 Subject Height: 166.47
-1 Thigh Height Left: 68.152
-1 Thigh Height Right: 68.152
-1 Underbust Circumference: 86.124
-1 UnderKnee Circumference Left: 42.54
-1 UnderKnee Circumference Right: 41.335
-1 UnderKnee Height Left: 39.449
-1 UnderKnee Height Right: 39.79
-1 Upper Bust Front Length: 39.338
-1 Vertical Trunk Circumference Left: 162.39
-1 Vertical Trunk Circumference Right: 161.41
-1 Waist at 50%: 85.002
-1 Waist Circumference: 92.95
-1 Bust To Bust Length: 11.655
-#
-#Horizontal Circumferences, Right Arm
-#
-Height 85.66 cm: 17.42
-Height 86.55 cm: 17.14
-Height 87.44 cm: 17.3
-Height 88.33 cm: 17.71
-Height 89.21 cm: 18.6
-Height 90.1 cm: 19.53
-Height 90.99 cm: 20.19
-Height 91.88 cm: 20.87
-Height 92.77 cm: 21.41
-Height 93.66 cm: 22.01
-Height 94.55 cm: 22.85
-Height 95.44 cm: 23.59
-Height 96.32 cm: 24.43
-Height 97.21 cm: 25.39
-Height 98.1 cm: 26.2
-Height 98.99 cm: 26.75
-Height 99.88 cm: 27.28
-Height 100.8 cm: 27.83
-Height 101.7 cm: 28.28
-Height 102.5 cm: 28.5
-Height 103.4 cm: 28.59
-Height 104.3 cm: 28.54
-Height 105.2 cm: 28.3
-Height 106.1 cm: 29.1
-Height 107. cm: 29.59
-Height 108. cm: 30.03
-Height 108.9 cm: 30.24
-Height 109.8 cm: 30.47
-Height 110.7 cm: 30.88
-Height 111.7 cm: 31.38
-Height 112.6 cm: 31.84
-Height 113.5 cm: 32.31
-Height 114.4 cm: 32.75
-Height 115.4 cm: 32.94
-Height 116.3 cm: 33.05
-Height 117.2 cm: 32.97
-Height 118.2 cm: 33.06
-Height 119.1 cm: 33.2
-Height 120. cm: 33.05
-Height 120.9 cm: 33.74
-#
-#Horizontal Circumferences, Right Leg
-#
-Height 0. cm: 55.97
-Height 0.9971 cm: 58.51
-Height 1.994 cm: 57.81
-Height 2.991 cm: 54.63
-Height 3.989 cm: 49.07
-Height 4.986 cm: 42.41
-Height 5.983 cm: 36.04
-Height 6.98 cm: 31.76
-Height 7.977 cm: 29.87
-Height 8.974 cm: 28.82
-Height 9.971 cm: 29.1
-Height 10.97 cm: 29.31
-Height 11.97 cm: 29.59
-Height 12.96 cm: 29.83
-Height 13.96 cm: 30.2
-Height 14.96 cm: 30.99
-Height 15.95 cm: 31.88
-Height 16.95 cm: 32.71
-Height 17.95 cm: 33.52
-Height 18.95 cm: 34.19
-Height 19.94 cm: 34.83
-Height 20.94 cm: 35.53
-Height 21.94 cm: 36.29
-Height 22.93 cm: 37.14
-Height 23.93 cm: 38.08
-Height 24.93 cm: 38.87
-Height 25.93 cm: 39.55
-Height 26.92 cm: 40.2
-Height 27.92 cm: 41.
-Height 28.92 cm: 41.85
-Height 29.91 cm: 42.44
-Height 30.91 cm: 42.98
-Height 31.91 cm: 43.34
-Height 32.91 cm: 43.49
-Height 33.9 cm: 43.49
-Height 34.9 cm: 43.33
-Height 35.9 cm: 43.07
-Height 36.89 cm: 42.54
-Height 37.89 cm: 41.96
-Height 38.89 cm: 41.4
-Height 39.89 cm: 41.18
-Height 40.88 cm: 41.25
-Height 41.88 cm: 41.22
-Height 42.88 cm: 41.49
-Height 43.87 cm: 42.08
-Height 44.87 cm: 43.3
-Height 45.87 cm: 44.27
-Height 46.86 cm: 44.98
-Height 47.86 cm: 45.72
-Height 48.86 cm: 46.35
-Height 49.85 cm: 46.97
-Height 50.85 cm: 47.64
-Height 51.85 cm: 48.47
-Height 52.84 cm: 49.42
-Height 53.84 cm: 50.55
-Height 54.84 cm: 51.6
-Height 55.83 cm: 52.74
-Height 56.83 cm: 53.96
-Height 57.83 cm: 55.04
-Height 58.82 cm: 56.24
-Height 59.82 cm: 57.32
-Height 60.82 cm: 58.42
-Height 61.81 cm: 59.63
-Height 62.81 cm: 60.68
-Height 63.81 cm: 61.61
-Height 64.8 cm: 62.64
-Height 65.8 cm: 63.57
-Height 66.8 cm: 64.26
-Height 67.79 cm: 65.07
-Height 68.79 cm: 65.62
-Height 69.79 cm: 66.21
-Height 70.78 cm: 67.04
-Height 71.78 cm: 69.39
-Height 72.78 cm: 72.39
-#
-#Horizontal Circumferences, Torso, Crotch point to Head
-#
-Height 74. cm: 119.6
-Height 75. cm: 117.
-Height 76. cm: 115.6
-Height 77. cm: 114.4
-Height 78. cm: 113.6
-Height 79. cm: 112.7
-Height 80. cm: 111.5
-Height 81. cm: 110.5
-Height 82. cm: 109.4
-Height 83. cm: 108.4
-Height 84. cm: 107.4
-Height 85. cm: 106.4
-Height 86. cm: 105.5
-Height 87. cm: 104.6
-Height 88. cm: 103.6
-Height 89. cm: 102.6
-Height 90. cm: 101.5
-Height 91. cm: 100.1
-Height 92. cm: 98.63
-Height 93. cm: 97.
-Height 94. cm: 95.26
-Height 95. cm: 93.67
-Height 96. cm: 92.07
-Height 97. cm: 90.46
-Height 98. cm: 88.66
-Height 99. cm: 86.7
-Height 100. cm: 84.67
-Height 101. cm: 82.61
-Height 102. cm: 80.76
-Height 103. cm: 79.24
-Height 104. cm: 78.53
-Height 105. cm: 78.74
-Height 106. cm: 79.47
-Height 107. cm: 80.54
-Height 108. cm: 81.69
-Height 109. cm: 82.47
-Height 110. cm: 82.96
-Height 111. cm: 83.16
-Height 112. cm: 84.49
-Height 113. cm: 86.72
-Height 114. cm: 90.38
-Height 115. cm: 93.4
-Height 116. cm: 95.78
-Height 117. cm: 98.15
-Height 118. cm: 99.3
-Height 119. cm: 100.1
-Height 120. cm: 99.49
-Height 121. cm: 98.8
-Height 122. cm: 119.1
-Height 123. cm: 115.7
-Height 124. cm: 113.1
-Height 125. cm: 111.1
-Height 126. cm: 108.9
-Height 127. cm: 106.8
-Height 128. cm: 104.6
-Height 129. cm: 102.3
-Height 130. cm: 99.84
-Height 131. cm: 97.24
-Height 132. cm: 94.54
-Height 133. cm: 91.42
-Height 134. cm: 87.56
-Height 135. cm: 86.93
-Height 135.9 cm: 80.81
-Height 136.9 cm: 70.79
-Height 137.8 cm: 58.86
-Height 138.8 cm: 46.71
-Height 139.7 cm: 40.92
-Height 140.6 cm: 38.53
-Height 141.6 cm: 37.57
-Height 142.5 cm: 37.29
-Height 143.5 cm: 37.45
-Height 144.4 cm: 38.86
-Height 145.3 cm: 63.63
-Height 146.3 cm: 71.71
-Height 147.2 cm: 76.07
-Height 148.2 cm: 79.22
-Height 149.1 cm: 80.48
-Height 150. cm: 80.95
-Height 151. cm: 81.36
-Height 151.9 cm: 81.2
-Height 152.9 cm: 79.73
-Height 153.8 cm: 77.34
-Height 154.7 cm: 75.45
-Height 155.7 cm: 71.57
-Height 156.6 cm: 67.11
-Height 157.6 cm: 65.75
-Height 158.5 cm: 64.32
-Height 159.4 cm: 62.09
-Height 160.4 cm: 59.29
-Height 161.3 cm: 55.27
-Height 162.3 cm: 49.37
-Height 163.2 cm: 41.67
-Height 164.1 cm: 31.88
-Height 165.1 cm: 18.98
-#
-#Horizontal Circumferences, Left Arm
-#
-Height 87.18 cm: 18.29
-Height 88.07 cm: 17.95
-Height 88.95 cm: 18.02
-Height 89.83 cm: 18.71
-Height 90.71 cm: 19.54
-Height 91.59 cm: 20.08
-Height 92.47 cm: 20.64
-Height 93.36 cm: 21.32
-Height 94.24 cm: 22.03
-Height 95.12 cm: 22.75
-Height 96. cm: 23.61
-Height 96.88 cm: 24.56
-Height 97.77 cm: 25.42
-Height 98.65 cm: 26.27
-Height 99.53 cm: 27.17
-Height 100.4 cm: 27.9
-Height 101.3 cm: 28.72
-Height 102.2 cm: 29.17
-Height 103.1 cm: 29.49
-Height 103.9 cm: 29.85
-Height 104.8 cm: 30.22
-Height 105.7 cm: 30.58
-Height 106.6 cm: 30.62
-Height 107.5 cm: 30.98
-Height 108.4 cm: 31.55
-Height 109.4 cm: 32.29
-Height 110.3 cm: 32.89
-Height 111.2 cm: 33.29
-Height 112.1 cm: 33.67
-Height 113. cm: 34.03
-Height 113.9 cm: 34.53
-Height 114.8 cm: 35.32
-Height 115.8 cm: 35.77
-Height 116.7 cm: 35.78
-Height 117.6 cm: 35.86
-Height 118.5 cm: 35.72
-Height 119.4 cm: 35.66
-Height 120.3 cm: 35.73
-#
-#Horizontal Circumferences, Left Leg
-#
-Height 0. cm: 47.68
-Height 0.9965 cm: 63.42
-Height 1.993 cm: 60.07
-Height 2.99 cm: 55.99
-Height 3.986 cm: 49.33
-Height 4.983 cm: 42.04
-Height 5.979 cm: 35.65
-Height 6.976 cm: 31.74
-Height 7.972 cm: 30.14
-Height 8.969 cm: 29.17
-Height 9.965 cm: 28.76
-Height 10.96 cm: 28.96
-Height 11.96 cm: 29.14
-Height 12.96 cm: 29.32
-Height 13.95 cm: 30.17
-Height 14.95 cm: 31.07
-Height 15.94 cm: 31.81
-Height 16.94 cm: 32.62
-Height 17.94 cm: 33.21
-Height 18.93 cm: 34.19
-Height 19.93 cm: 35.
-Height 20.93 cm: 35.68
-Height 21.92 cm: 36.45
-Height 22.92 cm: 37.23
-Height 23.92 cm: 37.9
-Height 24.91 cm: 38.59
-Height 25.91 cm: 39.38
-Height 26.91 cm: 40.29
-Height 27.9 cm: 41.25
-Height 28.9 cm: 42.13
-Height 29.9 cm: 42.84
-Height 30.89 cm: 43.31
-Height 31.89 cm: 43.68
-Height 32.89 cm: 43.93
-Height 33.88 cm: 44.08
-Height 34.88 cm: 44.04
-Height 35.88 cm: 43.77
-Height 36.87 cm: 43.21
-Height 37.87 cm: 42.68
-Height 38.87 cm: 42.24
-Height 39.86 cm: 42.14
-Height 40.86 cm: 42.23
-Height 41.85 cm: 42.21
-Height 42.85 cm: 42.44
-Height 43.85 cm: 43.04
-Height 44.85 cm: 44.12
-Height 45.84 cm: 45.13
-Height 46.84 cm: 46.08
-Height 47.84 cm: 46.87
-Height 48.84 cm: 47.41
-Height 49.83 cm: 48.04
-Height 50.83 cm: 48.89
-Height 51.83 cm: 49.96
-Height 52.82 cm: 51.15
-Height 53.82 cm: 52.52
-Height 54.82 cm: 53.74
-Height 55.82 cm: 54.74
-Height 56.81 cm: 55.87
-Height 57.81 cm: 57.03
-Height 58.81 cm: 58.05
-Height 59.81 cm: 59.05
-Height 60.8 cm: 60.03
-Height 61.8 cm: 60.95
-Height 62.8 cm: 61.91
-Height 63.79 cm: 62.88
-Height 64.79 cm: 63.76
-Height 65.79 cm: 64.6
-Height 66.79 cm: 65.48
-Height 67.78 cm: 66.35
-Height 68.78 cm: 66.95
-Height 69.78 cm: 67.2
-Height 70.78 cm: 67.48
-Height 71.77 cm: 68.55
-Height 72.77 cm: 70.49
diff --git a/input/legacy/non-batched/A809FA52.txt b/input/legacy/non-batched/A809FA52.txt
deleted file mode 100644
index 5ce3d74..0000000
--- a/input/legacy/non-batched/A809FA52.txt
+++ /dev/null
@@ -1,478 +0,0 @@
-#SizeStream Measurements
-#Stored on Thursday, April 26, 2018 11:30:38
-#
-#
-#format - Measurement Valid (1 = valid), Measurement Name, Measurement
-#
-1 [001] Chest/Bust Circum Tape Measure: 109.35
-1 [002] Opt Small of back Waist Tape Measure: 97.647
-1 [003] Hip Circum Tape Measure: 125.48
-1 [004] Half Back Centre Tape Measure: 43.153
-1 [005] Neck Circumference: 38.102
-1 [006] Scye Depth (Vertical): 23.757
-1 [007] Side Neck to Bust Length Right: 30.514
-1 [008] Side Neck to Bust to Waist R: 46.128
-1 [009] Across Back Tape Measurement: 36.755
-1 [010] Across Chest Arm to Arm Length: 36.295
-1 [011] Shoulder Length Right: 8.365
-1 [012] Bust Width: 21.
-1 [013] Upper Hip SOB -10cm: 118.11
-1 [014] Waist to Knee Length: 55.384
-1 [015] Waist to Hip Length: 14.122
-1 [016] Skirt Length: 62.184
-1 [017] Thigh Circ R: 67.579
-1 [018] Knee Circ R: 38.88
-1 [019] Ankle Circ R: 26.982
-1 [020] Waist to Crotch Length (Body Rise): 29.393
-1 [021] Waist to Ankle (Outside Leg): 84.704
-1 [022] Crotch to Ankle (Inside Leg): 55.311
-1 [023] Sleeve Lenght R: 51.127
-1 [024] Bicep Circ: 40.528
-1 [026] Fr Waist Arc: 59.683
-1 [027] Bk Waist Arc: 54.587
-1 [028] Fr Abdomen Arc: 63.382
-1 [029] Bk Abdomen Arc: 59.642
-1 [030] Bk Seat Arc: 59.041
-1 [031] Fr Hip Arc: 65.769
-1 [032] Bk Hip Arc: 59.672
-1 [033] Waist to Abdomen: 11.586
-1 [034] Waist to Seat: 17.513
-#SizeStream Core Measurements
-#format - Measurement Valid (1 = valid), Measurement Name, Measurement
-#
-1 Collar Circumference: 36.051
-1 Neck Circumference: 38.102
-1 Chest / Bust Circum Tape Measure: 109.35
-1 Bust Girth With Drop Tape Measure: 106.3
-1 Underbust Circum Tape Measure: 94.558
-1 Waist Circum Tape Measure: 114.32
-1 Waist Height: 94.872
-1 Pants Waist Tape Measure: 118.54
-1 Opt Small of Back Waist Tape Measure: 97.647
-1 Opt Small Waist Back Height: 93.618
-1 Seat Circum Tape Measure: 124.01
-1 Hip Circum Tape Measure: 125.48
-1 Crotch Length Full: 86.345
-1 Crotch Height: 64.225
-1 Inseam Left: 65.252
-1 Stomach FP Circum Tape Measure: 116.48
-1 Stomach Max Circum Tape Measure: 108.53
-1 Wrist Circumference Left: 22.505
-1 Wrist Circumference Right: 19.613
-1 Abdomen Circum Tape Measure: 123.14
-1 Inseam Right: 65.361
-1 Shoulder Length Left: 10.445
-1 Shoulder Length Right: 8.365
-1 High Hip: 111.8
-1 Arm Hole Circumference Left: 43.037
-1 Arm Hole Circumference Right: 47.912
-1 Arm Length Left: 59.072
-1 Arm Length Right: 51.127
-1 Side Neck to Bust length Left: 30.86
-1 Side Neck to Bust length Right: 30.514
-1 Horizontal Waist Tape Measure: 109.
-1 Horizontal Waist Height: 88.072
-1 Abdomen Height: 82.032
-1 Front Vertical Rise: 30.718
-1 Thigh Circumference Left: 63.804
-1 Thigh Circumference Right: 67.579
-1 Back Shoulder Width Horizontal: 34.233
-1 MidThigh Circumference Left: 51.406
-1 MidThigh Circumference Right: 53.575
-1 Knee Circumference Left: 38.937
-1 Knee Circumference Right: 38.88
-1 Calf Circumference Left: 38.463
-1 Calf Circumference Right: 37.485
-1 Min lower leg Height Left: 11.386
-1 Min lower leg Height Right: 11.286
-1 Min Lower Leg Girth Left: 26.509
-1 Min Lower Leg Girth Right: 25.918
-1 Surface Area Total: 17987
-1 Surface Area Torso: 6671.8
-1 Across Back Tape Measurement: 36.755
-1 Across Chest Tape Measurement: 51.166
-1 Bicep Circumference Left: 39.879
-1 Bicep Circumference Right: 40.528
-1 Back Vertical Rise: 29.393
-1 Ankle Circumference Left: 27.198
-1 Ankle Circumference Right: 26.982
-1 Half Back Center Tape Measure: 43.153
-1 Back Neck to Back Chest Contour Length: 29.412
-1 Back Neck to Back Chest Vertical Length: 26.57
-1 Forearm Circumference Left: 28.933
-1 Forearm Circumference Right: 28.625
-1 Elbow Circumference Tape Measure Left: 28.938
-1 Elbow Circumference Tape Measure Right: 28.913
-1 Chin Height: 130.74
-1 Front Waist Tape Measure: 52.557
-1 Hip Circumference: 125.48
-1 Horizontal Waist: 109.
-1 Leg Volume Left: 9143.8
-1 Leg Volume Right: 9542.7
-1 Mid Shoulder Height Left: 129.77
-1 Mid Shoulder Height Right: 130.14
-1 Mid Shoulder to Waist Length Left: 45.458
-1 Mid Shoulder to Waist Length Right: 44.687
-1 Narrow Waist: 94.602
-1 Narrow Waist Tape Measure: 94.426
-1 Opt Formula Waist Back Height: 90.611
-1 Opt Formula Waist Front Height: 90.895
-1 Opt Formula Waist Left Height: 90.895
-1 Opt Formula Waist Right Height: 90.858
-1 Opt Formula Waist Tape Measure: 101.64
-1 Opt Small Waist Front Height: 94.943
-1 Opt Small Waist Left Height: 94.943
-1 Opt Small Waist Right Height: 94.872
-1 Outer Arm Hole Circumference Left: 47.518
-1 Outer Arm Hole Circumference Right: 51.381
-1 Outside Leg Length Left: 96.7
-1 Outside Leg Length Right: 96.006
-1 Over Arm Circum Tape Measure: 136.36
-1 OverArm Circumference: 140.58
-1 Pants Waist: 118.55
-1 Seat Circumference: 124.04
-1 Seat Fold Height: 69.047
-1 Shoulder Arc Right: 62.177
-1 Shoulder Circumference: 117.25
-1 Shoulder Circumference Height: 118.67
-1 Shoulder Slope Left: 26.817
-1 Shoulder Slope Right: 27.217
-1 Side Back Waist to Floor Left: 89.005
-1 Side Back Waist to Floor Right: 89.135
-1 Side Neck Trunk Length: 175.24
-1 Side Neck Trunk Length Tape Measure: 173.02
-1 Sleeve Length Left: 72.773
-1 Sleeve Length Right: 66.279
-1 Stomach FP Circumference: 116.48
-1 Stomach Max Circumference: 108.53
-1 Subject Height: 160.48
-1 Thigh Height Left: 59.145
-1 Thigh Height Right: 59.145
-1 Underbust Circumference: 94.756
-1 UnderKnee Circumference Left: 37.724
-1 UnderKnee Circumference Right: 37.066
-1 UnderKnee Height Left: 36.071
-1 UnderKnee Height Right: 35.307
-1 Upper Bust Front Length: 39.812
-1 Vertical Trunk Circumference Left: 171.12
-1 Vertical Trunk Circumference Right: 172.89
-1 Waist at 50%: 100.16
-1 Waist Circumference: 114.32
-1 Bust To Bust Length: 16.582
-#
-#Horizontal Circumferences, Right Arm
-#
-Height 82.94 cm: 20.16
-Height 83.84 cm: 20.02
-Height 84.74 cm: 20.42
-Height 85.64 cm: 21.23
-Height 86.54 cm: 21.98
-Height 87.44 cm: 22.73
-Height 88.34 cm: 23.52
-Height 89.24 cm: 24.4
-Height 90.14 cm: 25.54
-Height 91.04 cm: 26.09
-Height 91.94 cm: 26.55
-Height 92.84 cm: 26.96
-Height 93.74 cm: 27.41
-Height 94.64 cm: 27.99
-Height 95.54 cm: 28.43
-Height 96.44 cm: 28.9
-Height 97.34 cm: 29.19
-Height 98.24 cm: 29.04
-Height 99.14 cm: 28.76
-Height 100. cm: 28.35
-Height 100.9 cm: 28.92
-Height 101.8 cm: 29.79
-Height 102.6 cm: 31.19
-Height 103.5 cm: 32.41
-Height 104.3 cm: 33.79
-Height 105.1 cm: 35.11
-Height 106. cm: 36.31
-Height 106.8 cm: 37.48
-Height 107.7 cm: 38.57
-Height 108.5 cm: 39.3
-Height 109.4 cm: 39.96
-Height 110.2 cm: 40.47
-Height 111. cm: 40.72
-Height 111.9 cm: 40.67
-Height 112.7 cm: 40.48
-#
-#Horizontal Circumferences, Right Leg
-#
-Height 0. cm: 67.
-Height 0.9995 cm: 56.27
-Height 1.999 cm: 54.65
-Height 2.998 cm: 49.72
-Height 3.998 cm: 43.73
-Height 4.997 cm: 38.39
-Height 5.997 cm: 33.79
-Height 6.996 cm: 30.29
-Height 7.996 cm: 28.45
-Height 8.995 cm: 27.12
-Height 9.995 cm: 26.34
-Height 10.99 cm: 26.06
-Height 11.99 cm: 25.73
-Height 12.99 cm: 25.98
-Height 13.99 cm: 26.7
-Height 14.99 cm: 26.91
-Height 15.99 cm: 28.22
-Height 16.99 cm: 29.3
-Height 17.99 cm: 30.52
-Height 18.99 cm: 31.47
-Height 19.99 cm: 32.
-Height 20.99 cm: 32.85
-Height 21.99 cm: 33.96
-Height 22.99 cm: 34.94
-Height 23.99 cm: 35.82
-Height 24.99 cm: 36.44
-Height 25.99 cm: 36.68
-Height 26.99 cm: 36.99
-Height 27.99 cm: 37.29
-Height 28.98 cm: 37.49
-Height 29.98 cm: 37.75
-Height 30.98 cm: 37.76
-Height 31.98 cm: 37.69
-Height 32.98 cm: 37.55
-Height 33.98 cm: 37.36
-Height 34.98 cm: 37.26
-Height 35.98 cm: 37.45
-Height 36.98 cm: 38.06
-Height 37.98 cm: 38.98
-Height 38.98 cm: 39.47
-Height 39.96 cm: 40.22
-Height 40.95 cm: 41.03
-Height 41.93 cm: 42.2
-Height 42.92 cm: 43.47
-Height 43.9 cm: 44.75
-Height 44.89 cm: 46.04
-Height 45.87 cm: 47.41
-Height 46.85 cm: 48.99
-Height 47.84 cm: 50.8
-Height 48.82 cm: 52.64
-Height 49.81 cm: 54.4
-Height 50.79 cm: 55.91
-Height 51.78 cm: 57.43
-Height 52.76 cm: 59.12
-Height 53.74 cm: 60.83
-Height 54.73 cm: 62.42
-Height 55.71 cm: 63.91
-Height 56.7 cm: 65.29
-Height 57.68 cm: 66.23
-Height 58.67 cm: 67.27
-Height 59.65 cm: 67.71
-Height 60.63 cm: 68.39
-Height 61.62 cm: 69.11
-Height 62.6 cm: 69.7
-Height 63.59 cm: 72.44
-#
-#Horizontal Circumferences, Torso, Crotch point to Head
-#
-Height 65. cm: 108.7
-Height 66. cm: 109.5
-Height 67. cm: 111.3
-Height 68. cm: 113.5
-Height 69. cm: 115.9
-Height 70. cm: 117.4
-Height 71. cm: 118.6
-Height 72. cm: 120.
-Height 73. cm: 121.1
-Height 74. cm: 122.1
-Height 75. cm: 123.1
-Height 76. cm: 123.9
-Height 77. cm: 124.7
-Height 78. cm: 125.2
-Height 79. cm: 125.5
-Height 80. cm: 125.4
-Height 81. cm: 124.6
-Height 82. cm: 123.6
-Height 83. cm: 122.
-Height 84. cm: 120.1
-Height 85. cm: 117.9
-Height 86. cm: 115.4
-Height 87. cm: 112.4
-Height 88. cm: 109.1
-Height 89. cm: 106.
-Height 90. cm: 103.1
-Height 91. cm: 101.
-Height 92. cm: 99.64
-Height 93. cm: 98.7
-Height 94. cm: 98.1
-Height 95. cm: 97.75
-Height 96. cm: 97.42
-Height 97. cm: 96.98
-Height 98. cm: 96.33
-Height 99. cm: 95.18
-Height 100. cm: 95.06
-Height 101. cm: 97.37
-Height 102. cm: 99.77
-Height 103. cm: 102.7
-Height 104. cm: 105.6
-Height 105. cm: 108.2
-Height 106. cm: 110.2
-Height 107. cm: 112.
-Height 108. cm: 113.7
-Height 109. cm: 113.9
-Height 110. cm: 112.7
-Height 111. cm: 111.3
-Height 112. cm: 109.1
-Height 113. cm: 107.
-Height 114. cm: 137.8
-Height 115. cm: 133.1
-Height 116. cm: 128.7
-Height 117. cm: 124.6
-Height 118. cm: 120.5
-Height 119. cm: 116.5
-Height 120. cm: 112.4
-Height 121. cm: 107.8
-Height 122. cm: 103.3
-Height 123. cm: 98.84
-Height 124. cm: 94.5
-Height 125. cm: 89.89
-Height 126. cm: 79.01
-Height 126.9 cm: 67.51
-Height 127.9 cm: 54.27
-Height 128.8 cm: 45.05
-Height 129.8 cm: 39.61
-Height 130.7 cm: 37.71
-Height 131.6 cm: 38.39
-Height 132.6 cm: 40.8
-Height 133.5 cm: 46.72
-Height 134.5 cm: 51.84
-Height 135.4 cm: 54.73
-Height 136.3 cm: 57.68
-Height 137.3 cm: 60.13
-Height 138.2 cm: 62.08
-Height 139.2 cm: 63.87
-Height 140.1 cm: 65.89
-Height 141. cm: 65.84
-Height 142. cm: 64.67
-Height 142.9 cm: 63.68
-Height 143.9 cm: 62.79
-Height 144.8 cm: 62.05
-Height 145.7 cm: 61.11
-Height 146.7 cm: 59.33
-Height 147.6 cm: 57.42
-Height 148.6 cm: 57.13
-Height 149.5 cm: 57.11
-Height 150.4 cm: 56.02
-Height 151.4 cm: 54.94
-Height 152.3 cm: 53.85
-Height 153.3 cm: 52.57
-Height 154.2 cm: 52.76
-Height 155.1 cm: 1.831
-Height 157.1 cm: 13.08
-Height 158.1 cm: 13.21
-Height 159.1 cm: 9.982
-Height 160.1 cm: 2.427
-#
-#Horizontal Circumferences, Left Arm
-#
-Height 79.15 cm: 22.67
-Height 80.07 cm: 23.58
-Height 81. cm: 23.86
-Height 81.92 cm: 23.64
-Height 82.84 cm: 23.1
-Height 83.77 cm: 22.06
-Height 84.69 cm: 20.79
-Height 85.62 cm: 20.91
-Height 86.54 cm: 21.55
-Height 87.46 cm: 22.53
-Height 88.39 cm: 23.4
-Height 89.31 cm: 24.09
-Height 90.23 cm: 24.81
-Height 91.16 cm: 25.54
-Height 92.08 cm: 26.05
-Height 93.01 cm: 26.52
-Height 93.93 cm: 27.07
-Height 94.85 cm: 27.88
-Height 95.78 cm: 28.78
-Height 96.7 cm: 29.19
-Height 97.63 cm: 29.3
-Height 98.55 cm: 29.6
-Height 99.47 cm: 29.71
-Height 100.4 cm: 29.48
-Height 101.3 cm: 29.27
-Height 102.2 cm: 30.
-Height 103. cm: 30.29
-Height 103.8 cm: 30.92
-Height 104.5 cm: 31.26
-Height 105.3 cm: 32.2
-Height 106.1 cm: 33.08
-Height 106.8 cm: 33.86
-Height 107.6 cm: 34.97
-Height 108.4 cm: 36.11
-Height 109.1 cm: 36.94
-Height 109.9 cm: 37.75
-Height 110.6 cm: 38.54
-Height 111.4 cm: 39.14
-Height 112.2 cm: 39.79
-Height 112.9 cm: 39.38
-#
-#Horizontal Circumferences, Left Leg
-#
-Height 0. cm: 63.23
-Height 0.9997 cm: 56.8
-Height 1.999 cm: 54.97
-Height 2.999 cm: 49.66
-Height 3.999 cm: 43.8
-Height 4.998 cm: 38.68
-Height 5.998 cm: 34.32
-Height 6.998 cm: 30.39
-Height 7.997 cm: 28.22
-Height 8.997 cm: 27.43
-Height 9.997 cm: 26.89
-Height 11. cm: 26.6
-Height 12. cm: 26.67
-Height 13. cm: 26.79
-Height 14. cm: 26.98
-Height 15. cm: 27.62
-Height 15.99 cm: 27.99
-Height 16.99 cm: 28.7
-Height 17.99 cm: 29.96
-Height 18.99 cm: 30.69
-Height 19.99 cm: 31.49
-Height 20.99 cm: 32.41
-Height 21.99 cm: 33.55
-Height 22.99 cm: 34.78
-Height 23.99 cm: 35.86
-Height 24.99 cm: 36.69
-Height 25.99 cm: 37.28
-Height 26.99 cm: 37.73
-Height 27.99 cm: 38.06
-Height 28.99 cm: 38.36
-Height 29.99 cm: 38.61
-Height 30.99 cm: 38.75
-Height 31.99 cm: 38.66
-Height 32.99 cm: 38.49
-Height 33.99 cm: 38.34
-Height 34.99 cm: 38.14
-Height 35.99 cm: 37.91
-Height 36.99 cm: 38.32
-Height 37.99 cm: 38.99
-Height 38.99 cm: 39.01
-Height 39.97 cm: 39.91
-Height 40.96 cm: 40.77
-Height 41.94 cm: 41.66
-Height 42.93 cm: 42.73
-Height 43.91 cm: 43.86
-Height 44.9 cm: 44.88
-Height 45.88 cm: 45.91
-Height 46.87 cm: 47.17
-Height 47.85 cm: 48.64
-Height 48.84 cm: 50.13
-Height 49.82 cm: 51.59
-Height 50.81 cm: 52.92
-Height 51.79 cm: 54.26
-Height 52.78 cm: 55.68
-Height 53.76 cm: 57.3
-Height 54.75 cm: 58.53
-Height 55.73 cm: 59.92
-Height 56.72 cm: 60.99
-Height 57.7 cm: 62.1
-Height 58.69 cm: 63.26
-Height 59.67 cm: 64.02
-Height 60.66 cm: 64.8
-Height 61.64 cm: 65.44
-Height 62.63 cm: 65.66
-Height 63.61 cm: 67.6
diff --git a/input/legacy/non-batched/Alva12.txt b/input/legacy/non-batched/Alva12.txt
deleted file mode 100644
index 00f5d0f..0000000
--- a/input/legacy/non-batched/Alva12.txt
+++ /dev/null
@@ -1,275 +0,0 @@
-#SizeStream Measurements
-#Stored on Monday, March 12, 2018 16:09:44
-#SizeStream Core Measurements
-#format - Measurement Valid (1 = valid), Measurement Name, Measurement
-#
-1 Abdomen Circum Tape Measure: 86.638
-1 Abdomen Circum Tape Measure Back Left: 22.839
-1 Abdomen Circum Tape Measure Back Right: 22.202
-1 Abdomen Circum Tape Measure Front Left: 20.275
-1 Abdomen Circum Tape Measure Front Right: 21.155
-1 Abdomen Circumference: 86.64
-1 Abdomen Height: 97.45
-1 Abdomen Rise: 20.194
-1 Across Axilla Chest Back Length: 39.23
-1 Across Axilla Chest Front Length: 49.522
-1 Across Back Tape Measurement: 32.013
-1 Across Chest Arm to Arm Length: 30.897
-1 Across Chest Tape Measurement: 45.016
-1 Actual Ankle Circumference Left: 25.446
-1 Actual Ankle Circumference Right: 25.734
-1 Actual Knee Circumference Left: 35.986
-1 Actual Knee Circumference Right: 35.986
-1 Actual Mid-Thigh Circumference Left: 46.986
-1 Actual Mid-Thigh Circumference Right: 47.342
-1 Ankle Circumference Left: 25.244
-1 Ankle Circumference Right: 25.734
-1 Arm Hole Circumference Left: 47.387
-1 Arm Hole Circumference Right: 45.882
-1 Arm Length Left: 54.682
-1 Arm Length Right: 56.605
-1 Arm Under Length Left: 40.821
-1 Arm Under Length Right: 42.129
-1 Arm Volume Left: 2768.1
-1 Arm Volume Right: 2633.
-1 Axilla Chest Circumference Tape Measure: 89.02
-1 Back Crotch Length: 38.357
-1 Back Neck to Back Chest Contour Length: 24.428
-1 Back Neck to Back Chest Vertical Length: 23.751
-1 Back Neck to Shoulder Blade Tape Measure: 18.78
-1 Back Shoulder Width at 45 Degree Angle: 42.351
-1 Back Shoulder Width Horizontal: 44.41
-1 Back Shoulder Width Through Back Of Neck: 42.621
-1 Back Vertical Rise: 30.909
-1 Bicep Circumference Left: 27.972
-1 Bicep Circumference Right: 27.325
-1 Bust Girth With Drop: 86.589
-1 Bust Girth With Drop Back Left: 19.037
-1 Bust Girth With Drop Back Right: 17.76
-1 Bust Girth With Drop Front Left: 23.475
-1 Bust Girth With Drop Front Right: 25.676
-1 Bust Girth With Drop Tape Measure: 86.027
-1 Bust Prominence Left: 21.191
-1 Bust Prominence Right: 20.961
-1 Bust Surface Area Left: 297.08
-1 Bust Surface Area Right: 295.54
-1 Bust To Bust Length: 15.766
-1 Bust Volume Left: 485.13
-1 Bust Volume Right: 475.62
-1 Calf Circumference Left: 35.916
-1 Calf Circumference Right: 36.829
-1 Center Trunk Length: 147.72
-1 Center Trunk Length Tape Measure: 145.05
-1 Cervicale to Bust Length Left: 36.352
-1 Cervicale to Bust Length Right: 35.728
-1 Chest / Bust Circum Tape Measure: 88.52
-1 Chest / Bust Circumference: 89.695
-1 Chest/Bust Circum Back Left: 20.308
-1 Chest/Bust Circum Back Right: 18.407
-1 Chest/Bust Circum Front Left: 23.471
-1 Chest/Bust Circum Front Right: 26.272
-1 Chin Height: 147.07
-1 Collar Circumference: 33.332
-1 Crotch Height: 77.255
-1 Crotch Length Full: 76.085
-1 Elbow Circumference Tape Measure Left: 25.784
-1 Elbow Circumference Tape Measure Right: 24.2
-1 Elbow Height Left: 103.86
-1 Elbow Height Right: 101.55
-1 Elbow Height Waist: 77.04
-1 Elbow Height Waist Tape Measure: 77.032
-1 Foot Length Left: 19.994
-1 Foot Length Right: 21.139
-1 Forearm Circumference Left: 24.849
-1 Forearm Circumference Right: 23.43
-1 Front Crotch Length: 37.728
-1 Front Hip Tape Measure: 44.942
-1 Front Jacket Tape Measure: 72.096
-1 Front Shoulder Width: 45.1
-1 Front Vertical Rise: 30.909
-1 Front Waist Tape Measure: 35.863
-1 Half Back Center Tape Measure: 38.098
-1 Halter: 86.458
-1 Head Circumference: 53.514
-1 High Hip: 89.724
-1 High Hip to Small Of Back Optimized Waist: 12.802
-1 Hinged Bust Circumference: 92.387
-1 Hinged Upper Bust Circumference: 86.269
-1 Hip Circum Tape Measure: 97.842
-1 Hip Circum Tape Measure Back Left: 26.027
-1 Hip Circum Tape Measure Back Right: 25.392
-1 Hip Circum Tape Measure Front Left: 23.48
-1 Hip Circum Tape Measure Front Right: 22.898
-1 Hip Circumference: 97.842
-1 Hip Widest Circum Tape Measure Back Right: 25.391
-1 Hip Widest Circum Tape Measure Back Left: 27.295
-1 Hip Widest Circum Tape Measure Front Left: 22.212
-1 Hip Widest Circum Tape Measure Front Right: 22.79
-1 Hip Widest Tape Circumference: 97.741
-1 Hips Eight Inches Down from Small of Back: 96.458
-1 Hips Two Inches Above Crotch: 97.833
-1 Horizontal Waist: 80.042
-1 Horizontal Waist Height: 101.3
-1 Horizontal Waist Tape Measure: 80.04
-1 Inseam Left: 77.488
-1 Inseam Right: 77.382
-1 Knee Circumference Left: 34.095
-1 Knee Circumference Right: 34.391
-1 Leg Volume Left: 9033.7
-1 Leg Volume Right: 9280.
-1 Low Hip: 97.842
-1 Low Hip to Small Of Back Optimized Waist: 25.5
-1 Mid Shoulder Height Left: 142.09
-1 Mid Shoulder Height Right: 142.02
-1 Mid Shoulder To Bust Length Left: 26.464
-1 Mid Shoulder To Bust Length Right: 26.148
-1 Mid Shoulder to Waist Length Left: 41.018
-1 Mid Shoulder to Waist Length Right: 40.698
-1 MidThigh Circumference Left: 45.555
-1 MidThigh Circumference Right: 46.235
-1 Min Lower Leg Girth Left: 25.5
-1 Min Lower Leg Girth Right: 25.708
-1 Min lower leg Height Left: 8.2846
-1 Min lower leg Height Right: 8.3275
-1 Narrow Waist: 71.196
-1 Narrow Waist Tape Measure: 71.194
-1 Neck Circum Back Left: 8.8933
-1 Neck Circum Back Right: 8.9235
-1 Neck Circum Front Left: 10.169
-1 Neck Circum Front Right: 10.842
-1 Neck Circumference: 38.828
-1 Opt Formula Waist Back Height: 103.08
-1 Opt Formula Waist Front Height: 103.37
-1 Opt Formula Waist Left Height: 103.37
-1 Opt Formula Waist Right Height: 103.33
-1 Opt Formula Waist Tape Measure: 75.887
-1 Opt Formula Waist Tape Measure Back Left: 19.668
-1 Opt Formula Waist Tape Measure Back Right: 19.039
-1 Opt Formula Waist Tape Measure Front Left: 15.861
-1 Opt Formula Waist Tape Measure Front Right: 21.264
-1 Opt Small of Back Waist Tape Measure: 71.375
-1 Opt Small of Back Waist Tape Measure Back Left: 16.498
-1 Opt Small of Back Waist Tape Measure Back Right: 19.029
-1 Opt Small of Back Waist Tape Measure Front Left: 16.709
-1 Opt Small of Back Waist Tape Measure Front Right: 19.08
-1 Opt Small Waist Back Height: 108.16
-1 Opt Small Waist Front Height: 108.16
-1 Opt Small Waist Left Height: 108.16
-1 Opt Small Waist Right Height: 108.16
-1 Outer Arm Hole Circumference Left: 40.916
-1 Outer Arm Hole Circumference Right: 42.542
-1 Outside Leg Length Left: 108.91
-1 Outside Leg Length Right: 108.84
-1 Over Arm Circum Tape Measure: 108.31
-1 OverArm Circumference: 111.35
-1 Pants Waist: 87.845
-1 Pants Waist Tape Measure: 87.819
-1 Seat Circum Tape Measure: 96.581
-1 Seat Circum Tape Measure Back Left: 27.294
-1 Seat Circum Tape Measure Back Right: 25.391
-1 Seat Circum Tape Measure Front Left: 21.58
-1 Seat Circum Tape Measure Front Right: 22.269
-1 Seat Circumference: 96.936
-1 Seat Fold Height: 78.931
-1 Shoulder Arc Left: 55.605
-1 Shoulder Arc Right: 54.849
-1 Shoulder Circumference: 100.33
-1 Shoulder Circumference Height: 133.72
-1 Shoulder Length Left: 15.211
-1 Shoulder Length Right: 13.672
-1 Shoulder Slope Left: 27.899
-1 Shoulder Slope Right: 28.179
-1 Side Back Waist to Floor Left: 102.13
-1 Side Back Waist to Floor Right: 102.05
-1 Side Neck to Bust length Left: 27.333
-1 Side Neck to Bust length Right: 26.864
-1 Side Neck Trunk Length: 159.11
-1 Side Neck Trunk Length Tape Measure: 158.18
-1 Sleeve Length Left: 75.848
-1 Sleeve Length Right: 76.114
-1 Stomach FP Circum Tape Measure: 86.331
-1 Stomach FP Circum Tape Measure Back Left: 22.839
-1 Stomach FP Circum Tape Measure Back Right: 22.202
-1 Stomach FP Circum Tape Measure Front Left: 20.274
-1 Stomach FP Circum Tape Measure Front Right: 20.872
-1 Stomach FP Circumference: 86.333
-1 Stomach Max Circum Tape Measure: 79.727
-1 Stomach Max Circum Tape Measure Back Left: 20.938
-1 Stomach Max Circum Tape Measure Back Right: 19.659
-1 Stomach Max Circum Tape Measure Front Left: 19.018
-1 Stomach Max Circum Tape Measure Front Right: 19.97
-1 Stomach Max Circumference: 79.727
-1 Subject Height: 167.49
-1 Surface Area Arm Left: 1499.1
-1 Surface Area Arm Right: 1437.7
-1 Surface Area Leg Left: 4034.9
-1 Surface Area Leg Right: 4223.2
-1 Surface Area Torso: 5438.2
-1 Surface Area Total: 16633
-1 Thigh Circumference Left: 56.098
-1 Thigh Circumference Right: 56.55
-1 Thigh Height Left: 72.175
-1 Thigh Height Right: 72.175
-1 Torso Volume: 38200
-1 Underbust Circum Tape Measure: 75.622
-1 Underbust Circum Tape Measure Back Left: 18.404
-1 Underbust Circum Tape Measure Back Right: 17.77
-1 Underbust Circum Tape Measure Front Left: 19.038
-1 Underbust Circum Tape Measure Front Right: 20.367
-1 Underbust Circumference: 75.627
-1 UnderKnee Circumference Left: 33.423
-1 UnderKnee Circumference Right: 33.868
-1 UnderKnee Height Left: 40.772
-1 UnderKnee Height Right: 40.843
-1 Upper Bust Front Length: 41.042
-1 Vertical Trunk Circumference Left: 155.09
-1 Vertical Trunk Circumference Right: 156.42
-1 Volume: 61915
-1 Waist at 50%: 73.153
-1 Waist Circum Tape Measure: 83.051
-1 Waist Circum Tape Measure Back Left: 22.213
-1 Waist Circum Tape Measure Back Right: 22.21
-1 Waist Circum Tape Measure Front Left: 19.671
-1 Waist Circum Tape Measure Front Right: 18.895
-1 Waist Circumference: 83.052
-1 Waist Height: 108.16
-1 Wrist Circumference Left: 16.222
-1 Wrist Circumference Right: 15.363
-1 Upper Arm Circumference Left: 29.882
-1 Upper Arm Circumference Right: 30.659
-#SizeStream Custom Measurements
-#format - Measurement Valid (1 = valid), Measurement Name, Measurement
-#
-1 [001] Chect/Bust Circum Tape Measure: 88.52
-1 [002] Opt Small of back Waist Tape Measure: 71.375
-1 [003] Hip Circum Tape Measure: 97.842
-1 [004] Half Back Centre Tape Measure: 38.098
-1 [005] Neck Circumference: 38.828
-1 [006] Scye Depth (Vertical): 21.565
-1 [007] Side Neck to Bust Length Right: 26.864
-1 [008] Side Neck to Bust to Waist R: 39.912
-1 [009] Across Back Tape Measurement: 32.013
-1 [010] Across Chest Arm to Arm Length: 30.897
-1 [011] Shoulder Length Right: 13.672
-1 [012] Bust Width: 20.5
-1 [013] Upper Hip SOB -10cm: 85.887
-1 [014] Waist to Knee Length: 64.946
-1 [015] Waist to Hip Length: 25.604
-1 [016] Skirt Length: 71.746
-1 [017] Thigh Circ R: 56.55
-1 [018] Knee Circ R: 34.391
-1 [019] Ankle Circ R: 25.734
-1 [020] Waist to Crotch Length (Body Rise): 30.909
-1 [021] Waist to Ankle (Outside Leg): 102.58
-1 [022] Crotch to Ankle (Inside Leg): 71.673
-1 [023] Sleeve Lenght R: 56.605
-1 [024] Bicep Circ: 27.325
-1 [026] Fr Waist Arc: 38.566
-1 [027] Bk Waist Arc: 44.423
-1 [028] Fr Abdomen Arc: 41.43
-1 [029] Bk Abdomen Arc: 45.042
-1 [030] Bk Seat Arc: 52.685
-1 [031] Fr Hip Arc: 46.378
-1 [032] Bk Hip Arc: 51.418
-1 [033] Waist to Abdomen: 10.715
-1 [034] Waist to Seat: 20.59
diff --git a/intellij/lib/bootstrapfx-core-0.4.0.jar b/intellij/lib/bootstrapfx-core-0.4.0.jar
new file mode 100644
index 0000000..56db4dc
Binary files /dev/null and b/intellij/lib/bootstrapfx-core-0.4.0.jar differ
diff --git a/intellij/lib/controlsfx-11.1.0.jar b/intellij/lib/controlsfx-11.1.0.jar
new file mode 100644
index 0000000..44bc0c5
Binary files /dev/null and b/intellij/lib/controlsfx-11.1.0.jar differ
diff --git a/intellij/lib/formsfx-core-11.3.2.jar b/intellij/lib/formsfx-core-11.3.2.jar
new file mode 100644
index 0000000..fc8c4f2
Binary files /dev/null and b/intellij/lib/formsfx-core-11.3.2.jar differ
diff --git a/intellij/lib/ikonli-core-12.2.0.jar b/intellij/lib/ikonli-core-12.2.0.jar
new file mode 100644
index 0000000..ec29512
Binary files /dev/null and b/intellij/lib/ikonli-core-12.2.0.jar differ
diff --git a/intellij/lib/ikonli-javafx-12.2.0.jar b/intellij/lib/ikonli-javafx-12.2.0.jar
new file mode 100644
index 0000000..af099b4
Binary files /dev/null and b/intellij/lib/ikonli-javafx-12.2.0.jar differ
diff --git a/intellij/lib/javafx-base-14.0.2.1-win.jar b/intellij/lib/javafx-base-14.0.2.1-win.jar
new file mode 100644
index 0000000..e90fedb
Binary files /dev/null and b/intellij/lib/javafx-base-14.0.2.1-win.jar differ
diff --git a/intellij/lib/javafx-base-14.0.2.1.jar b/intellij/lib/javafx-base-14.0.2.1.jar
new file mode 100644
index 0000000..4dc12c6
Binary files /dev/null and b/intellij/lib/javafx-base-14.0.2.1.jar differ
diff --git a/intellij/lib/javafx-controls-14.0.2.1-win.jar b/intellij/lib/javafx-controls-14.0.2.1-win.jar
new file mode 100644
index 0000000..c254239
Binary files /dev/null and b/intellij/lib/javafx-controls-14.0.2.1-win.jar differ
diff --git a/intellij/lib/javafx-controls-14.0.2.1.jar b/intellij/lib/javafx-controls-14.0.2.1.jar
new file mode 100644
index 0000000..9751a6d
Binary files /dev/null and b/intellij/lib/javafx-controls-14.0.2.1.jar differ
diff --git a/intellij/lib/javafx-fxml-14.0.2.1-win.jar b/intellij/lib/javafx-fxml-14.0.2.1-win.jar
new file mode 100644
index 0000000..44daed6
Binary files /dev/null and b/intellij/lib/javafx-fxml-14.0.2.1-win.jar differ
diff --git a/intellij/lib/javafx-fxml-14.0.2.1.jar b/intellij/lib/javafx-fxml-14.0.2.1.jar
new file mode 100644
index 0000000..ff68aaa
Binary files /dev/null and b/intellij/lib/javafx-fxml-14.0.2.1.jar differ
diff --git a/intellij/lib/javafx-graphics-14.0.2.1-win.jar b/intellij/lib/javafx-graphics-14.0.2.1-win.jar
new file mode 100644
index 0000000..0f6c259
Binary files /dev/null and b/intellij/lib/javafx-graphics-14.0.2.1-win.jar differ
diff --git a/intellij/lib/javafx-graphics-14.0.2.1.jar b/intellij/lib/javafx-graphics-14.0.2.1.jar
new file mode 100644
index 0000000..c3189b0
Binary files /dev/null and b/intellij/lib/javafx-graphics-14.0.2.1.jar differ
diff --git a/intellij/lib/javafx-media-11-win.jar b/intellij/lib/javafx-media-11-win.jar
new file mode 100644
index 0000000..2592a38
Binary files /dev/null and b/intellij/lib/javafx-media-11-win.jar differ
diff --git a/intellij/lib/javafx-media-11.jar b/intellij/lib/javafx-media-11.jar
new file mode 100644
index 0000000..b951ce3
Binary files /dev/null and b/intellij/lib/javafx-media-11.jar differ
diff --git a/intellij/lib/javafx-web-11-win.jar b/intellij/lib/javafx-web-11-win.jar
new file mode 100644
index 0000000..226bd21
Binary files /dev/null and b/intellij/lib/javafx-web-11-win.jar differ
diff --git a/intellij/lib/javafx-web-11.jar b/intellij/lib/javafx-web-11.jar
new file mode 100644
index 0000000..115ed2f
Binary files /dev/null and b/intellij/lib/javafx-web-11.jar differ
diff --git a/intellij/lib/jmetro-11.6.15.jar b/intellij/lib/jmetro-11.6.15.jar
new file mode 100644
index 0000000..3167954
Binary files /dev/null and b/intellij/lib/jmetro-11.6.15.jar differ
diff --git a/ant_build.bat b/run_jbc.bat
similarity index 74%
rename from ant_build.bat
rename to run_jbc.bat
index b81c768..2621e17 100644
--- a/ant_build.bat
+++ b/run_jbc.bat
@@ -2,10 +2,10 @@ REM Set the local variables
setlocal
REM <---- Set your Ant path here ---->
-set ANT=C:\Temp\apache-ant-1.10.5
+set ANT=C:\Temp\apache-ant-1.10.12
REM <---- Set your JDK path here ---->
-set "JAVA_HOME=C:\Program Files\Java\jdk1.8.0_221"
+set "JAVA_HOME=C:\Program Files\Java\jdk-14.0.1"
REM <---- Don't change these bits unless you know what you are doing ---->
set ANT_BIN=%ANT%\bin
diff --git a/src/META-INF/MANIFEST.MF b/src/META-INF/MANIFEST.MF
index 0b53e33..bed5af0 100644
--- a/src/META-INF/MANIFEST.MF
+++ b/src/META-INF/MANIFEST.MF
@@ -1,3 +1,3 @@
Manifest-Version: 1.0
-Main-Class: jblockmain.JBlockCreator
+Main-Class: jblockmain.JBlockCreatorApp
diff --git a/src/ahmed/BodicePattern.java b/src/ahmed/BodicePattern.java
index 820f790..86f1dd3 100644
--- a/src/ahmed/BodicePattern.java
+++ b/src/ahmed/BodicePattern.java
@@ -1,12 +1,7 @@
package ahmed;
-import jblockenums.EGarment;
-import jblockenums.EMethod;
-import jblockexceptions.MeasurementNotFoundException;
-import jblockmain.Block;
-import jblockmain.Measurements;
-import jblockmain.Pattern;
-import jblockmain.easeMeasurement;
+import jblockenums.EPattern;
+import jblockmain.*;
import mathcontainers.Vector2D;
import java.util.ArrayList;
@@ -14,132 +9,82 @@
public class BodicePattern
extends Pattern
{
- protected static ArrayList easeMeasurements = new ArrayList<>();
- private double halfBackCentreTapeMeasure;
- private double sideNeckToBustLengthR;
- private double sideNeckToBustToWaistR;
- private double acrossBackTapeMeasurement;
- private double acrossChestArmToArmLength;
- private double shoulderLengthRight;
- private double bustWidth;
- private double frontWaistArc;
- private double backWaistArc;
- private double frontBustArc;
- private double backBustArc;
- private double scyeDepth;
- private double shoulderSlope;
- private double sideSeamDepth;
- private double acrossShoulderBackandFront;
- private double waistToArmpitDepth;
- private double midShoulderToShoulderBlades;
- private double neckWidthFrontandBack;
- private double frontNeckDepth;
- private double backNeckDepth;
- private double shoulderToWaistDepth;
- private double armholeDepthEase;
- private double acrossBackEase;
- private double shoulderSlopeEase;
- private double frontBustArcEase;
- private double backBustArcEase;
- private double waistEase;
- private double shoulderRightX;
-
- public BodicePattern(Measurements dataStore)
+ public BodicePattern(String username, InputFileData dataStore, MeasurementSet template)
{
- if (!readMeasurements(dataStore)) return;
- addEasement();
-
- createBlocks();
- }
-
- public static void populateEaseMeasurements()
- {
- // Check to see it hasn't already been populated / it is empty
- if (easeMeasurements.size() > 0)
- {
- return;
- }
- easeMeasurements.add(new easeMeasurement("Armhole Depth", 1.7));
- easeMeasurements.add(new easeMeasurement("Across Back Ease", 0.5));
- easeMeasurements.add(new easeMeasurement("Shoulder Slop Ease", 0.3));
- easeMeasurements.add(new easeMeasurement("Front Bust Arc Ease", 1.0));
- easeMeasurements.add(new easeMeasurement("Back Bust Arc Ease", 3.0));
- easeMeasurements.add(new easeMeasurement("Waist Ease", 1.5));
- }
-
- public static ArrayList getEaseMeasurement()
- {
- return easeMeasurements;
+ super(username, dataStore, template);
}
@Override
- protected EMethod assignMethod()
+ protected EPattern assignPattern()
{
- return EMethod.AHMED;
+ return EPattern.AHMED_BODICE;
}
@Override
- protected EGarment assignGarment()
+ protected void defineRequiredMeasurements() throws Exception
{
- return EGarment.BODICE;
+ measurements.addMeasurement(new Measurement("halfBackCentreTapeMeasure", "A04"));
+ measurements.addMeasurement(new Measurement("sideNeckToBustLengthR", "A07"));
+ measurements.addMeasurement(new Measurement("sideNeckToBustToWaistR", "A08"));
+ measurements.addMeasurement(new Measurement("acrossBackTapeMeasurement", "A09"));
+ measurements.addMeasurement(new Measurement("acrossChestArmToArmLength", "A10"));
+ measurements.addMeasurement(new Measurement("shoulderLengthRight", "A11"));
+ measurements.addMeasurement(new Measurement("bustWidth", "A12"));
+ measurements.addMeasurement(new Measurement("frontWaistArc", "A26"));
+ measurements.addMeasurement(new Measurement("backWaistArc", "A27"));
+ measurements.addMeasurement(new Measurement("frontBustArc", "A56"));
+ measurements.addMeasurement(new Measurement("backBustArc", "A57"));
+ measurements.addMeasurement(new Measurement("scyeDepth", "B01"));
+ measurements.addMeasurement(new Measurement("shoulderSlope", "B04"));
+ measurements.addMeasurement(new Measurement("sideSeamDepth", "B05"));
+ measurements.addMeasurement(new Measurement("acrossShoulderBackandFront", "B06"));
+ measurements.addMeasurement(new Measurement("waistToArmpitDepth", "B07"));
+ measurements.addMeasurement(new Measurement("midShoulderToShoulderBlades", "B08"));
+ measurements.addMeasurement(new Measurement("neckWidthFrontandBack", "B09"));
+ measurements.addMeasurement(new Measurement("frontNeckDepth", "B10"));
+ measurements.addMeasurement(new Measurement("backNeckDepth", "B11"));
+ measurements.addMeasurement(new Measurement("shoulderToWaistDepth", "B16"));
+ measurements.addMeasurement(new Measurement("shoulderRightX", "B19"));
+
+ // Add ease as measurements with default values
+ measurements.addMeasurement(new Measurement("armholeDepthEase", 1.7));
+ measurements.addMeasurement(new Measurement("acrossBackEase", 0.5));
+ measurements.addMeasurement(new Measurement("shoulderSlopeEase", 0.3));
+ measurements.addMeasurement(new Measurement("frontBustArcEase", 1.0));
+ measurements.addMeasurement(new Measurement("backBustArcEase", 3.0));
+ measurements.addMeasurement(new Measurement("waistEase", 1.5));
}
@Override
- protected void addEasement() throws IndexOutOfBoundsException
+ public void createBlocks()
{
- // Refer to the populateEaseMeasurements static method for the order
- armholeDepthEase = easeMeasurements.get(0).getValue();
- acrossBackEase = easeMeasurements.get(1).getValue();
- shoulderSlopeEase = easeMeasurements.get(2).getValue();
- frontBustArcEase = easeMeasurements.get(3).getValue();
- backBustArcEase = easeMeasurements.get(4).getValue();
- waistEase = easeMeasurements.get(5).getValue();
- }
+ // Pull from store
+ var halfBackCentreTapeMeasure = get("halfBackCentreTapeMeasure");
+ var sideNeckToBustLengthR= get("sideNeckToBustLengthR");
+ var sideNeckToBustToWaistR= get("sideNeckToBustToWaistR");
+ var acrossBackTapeMeasurement= get("acrossBackTapeMeasurement");
+ var acrossChestArmToArmLength= get("acrossChestArmToArmLength");
+ var shoulderLengthRight= get("shoulderLengthRight");
+ var bustWidth= get("bustWidth");
+ var frontWaistArc= get("frontWaistArc");
+ var backWaistArc= get("backWaistArc");
+ var frontBustArc= get("frontBustArc");
+ var backBustArc= get("backBustArc");
+ var scyeDepth= get("scyeDepth");
+ var shoulderSlope= get("shoulderSlope");
+ var sideSeamDepth= get("sideSeamDepth");
+ var acrossShoulderBackandFront= get("acrossShoulderBackandFront");
+ var waistToArmpitDepth= get("waistToArmpitDepth");
+ var midShoulderToShoulderBlades= get("midShoulderToShoulderBlades");
+ var neckWidthFrontandBack= get("neckWidthFrontandBack");
+ var frontNeckDepth= get("frontNeckDepth");
+ var backNeckDepth= get("backNeckDepth");
+ var shoulderToWaistDepth= get("shoulderToWaistDepth");
+ var armholeDepthEase= get("armholeDepthEase");
+ var acrossBackEase= get("acrossBackEase");
+ var shoulderSlopeEase= get("shoulderSlopeEase");
+ var shoulderRightX= get("shoulderRightX");
- @Override
- protected boolean readMeasurements(Measurements dataStore)
- {
-
- try
- {
- halfBackCentreTapeMeasure = dataStore.getMeasurement("A04").value;
- sideNeckToBustLengthR = dataStore.getMeasurement("A07").value;
- sideNeckToBustToWaistR = dataStore.getMeasurement("A08").value;
- acrossBackTapeMeasurement = dataStore.getMeasurement("A09").value;
- acrossChestArmToArmLength = dataStore.getMeasurement("A10").value;
- shoulderLengthRight = dataStore.getMeasurement("A11").value;
- bustWidth = dataStore.getMeasurement("A12").value;
- frontWaistArc = dataStore.getMeasurement("A26").value;
- backWaistArc = dataStore.getMeasurement("A27").value;
- frontBustArc = dataStore.getMeasurement("A56").value;
- backBustArc = dataStore.getMeasurement("A57").value;
- scyeDepth = dataStore.getMeasurement("B01").value;
- shoulderSlope = dataStore.getMeasurement("B04").value;
- sideSeamDepth = dataStore.getMeasurement("B05").value;
- acrossShoulderBackandFront = dataStore.getMeasurement("B06").value;
- waistToArmpitDepth = dataStore.getMeasurement("B07").value;
- midShoulderToShoulderBlades = dataStore.getMeasurement("B08").value;
- neckWidthFrontandBack = dataStore.getMeasurement("B09").value;
- frontNeckDepth = dataStore.getMeasurement("B10").value;
- backNeckDepth = dataStore.getMeasurement("B11").value;
- shoulderToWaistDepth = dataStore.getMeasurement("B16").value;
- // The body scanner outputs a negative number, need to make it negative
- shoulderRightX = -dataStore.getMeasurement("B19").value;
-
- userName = dataStore.getName();
-
- return true;
- }
- catch (MeasurementNotFoundException e)
- {
- addMissingMeasurement(dataStore.getName(), e.getMeasurementId());
- return false;
- }
- }
-
- @Override
- protected void createBlocks()
- {
Block fullBlock = new Block(userName + "_Ahmed_Bodice_Block");
blocks.add(fullBlock);
@@ -149,7 +94,7 @@ protected void createBlocks()
double backWaistDartWidth = overallDiffTotalPatternWidthToWaistWithEase * 0.30;
double frontWaistDartWidth = overallDiffTotalPatternWidthToWaistWithEase * 0.37;
- // Initialization of the double the will store the solution for cirlce intersections to calculate certain points
+ // Initialization of the double that will store the solution for circle intersections to calculate certain points
double[][] circleP;
// Initialization of temporary variables used in calculation further down
double lamda, dx, dy;
@@ -263,7 +208,7 @@ protected void createBlocks()
// Calculation of point15 -> need to add the length of the dart at this y position to push point 15
// So that when the dart closes, the distance between point 11 and 15 is exactly a10/2
- // First calcuation direction vector from point 13 to bust
+ // First calculation direction vector from point 13 to bust
Vector2D D = new Vector2D(bustPoint.subtract(point13));
// Solve Vector line equation for Y = point11 Y as point15 has this Y value
@@ -332,9 +277,9 @@ protected void createBlocks()
// Alternative method of making the armhole curve using bezier curves, less strict but more appealing to the eye
fullBlock.addQuadraticBezierCurve(point15, controlPoint1, point6);
- fullBlock.addDirectedCurve(point14, point15, new double[]{90.0, 0.0});
+ fullBlock.addDirectedCubicSpline(point14, point15, new double[]{90.0, 0.0});
fullBlock.addQuadraticBezierCurve(point6_2, controlPoint2, point16);
- fullBlock.addDirectedCurve(point16, point17, new double[]{0.0, 90.0});
+ fullBlock.addDirectedCubicSpline(point16, point17, new double[]{0.0, 90.0});
fullBlock.addQuadraticBezierCurve(point18, new Vector2D(point18.getX(), point1.getY()), point1);
diff --git a/src/aldrich/SkirtPattern.java b/src/aldrich/SkirtPattern.java
index 7d028d1..5481fbb 100644
--- a/src/aldrich/SkirtPattern.java
+++ b/src/aldrich/SkirtPattern.java
@@ -1,11 +1,8 @@
package aldrich;
-import jblockenums.EGarment;
-import jblockenums.EMethod;
-import jblockexceptions.MeasurementNotFoundException;
-import jblockmain.Block;
-import jblockmain.Measurements;
-import jblockmain.Pattern;
+import jblockenums.EPattern;
+import jblockenums.EUnitType;
+import jblockmain.*;
import mathcontainers.Vector2D;
import java.util.ArrayList;
@@ -13,136 +10,72 @@
public class SkirtPattern
extends Pattern
{
- /* Skirt pattern block is constructed to fit on the 'natural waistline' */
-
- /* Measurement file name */
- String inputFileName;
-
- /* Pattern-specific Measurements */
- private double a_Waist = 68.0;
- private double b_Hips = 94.0;
- private double c_WaistToHip = 20.6;
- private double d_SkirtLength = 71.5;
- // d_SkirtLength is affected by fashion so could realistically be anything
- // Set the same as the default for the Gill pattern
-
- /* Arbitrary Measurements */
-
- // Apparent adjustment for setting waistline
- private double Arb_HipAdjustment;
-
- // Waist curve adjustment
- private double Arb_WaistCurve;
-
- /* Back Arbs */
-
- // Back hip adjustment
- private double Arb_BackHipAdjustment;
-
- // 'Natural waist' adjustment
- private double Arb_BackNaturalWaist;
-
- // Back dart depths
- private double Arb_BackDartOneDepth;
- private double Arb_BackDartTwoDepth;
-
- // Back dart width
- private double Arb_BackDartWidth;
-
- /* Front Arbs */
-
- // 'Natural waist' adjustment
- private double Arb_FrontNaturalWaist;
-
- // Front dart depth
- private double Arb_FrontDartDepth;
-
- // Front dart width
- private double Arb_FrontDartWidth;
-
- // Dart placement
- private double Arb_FrontDartPlacement;
- private double Arb_BackDartPlacement;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- /* Methods */
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- public SkirtPattern(Measurements dataStore)
+ public SkirtPattern(String userName, InputFileData dataStore, MeasurementSet template)
{
- if (!readMeasurements(dataStore)) return;
- addEasement();
-
- // Populate arbitrary measurements
- Arb_HipAdjustment = 1.5;
- Arb_WaistCurve = -1.25;
- Arb_BackHipAdjustment = 1.5;
- Arb_BackNaturalWaist = 4.0;
- Arb_BackDartOneDepth = 14.0;
- Arb_BackDartTwoDepth = 13.0;
- Arb_BackDartWidth = 2.0;
- Arb_FrontNaturalWaist = 2.5;
- Arb_FrontDartDepth = 12.0;
- Arb_FrontDartWidth = 2.5;
- Arb_FrontDartPlacement = 2.0 / 3.0;
- Arb_BackDartPlacement = 1.0 / 3.0;
-
- // Create the blocks
- createBlocks();
+ super(userName, dataStore, template);
}
/* Implement abstract methods from super class */
@Override
- protected EMethod assignMethod()
- {
- return EMethod.ALDRICH;
- }
-
- @Override
- protected EGarment assignGarment()
- {
- return EGarment.SKIRT;
- }
-
- @Override
- protected void addEasement()
+ protected EPattern assignPattern()
{
- //no easement needed
+ return EPattern.ALDRICH_SKIRT;
}
@Override
- protected boolean readMeasurements(Measurements dataStore)
+ protected void defineRequiredMeasurements() throws Exception
{
- try
- {
- // Based on measurements for this pattern we can read the following from the scan:
- a_Waist = dataStore.getMeasurement("A26").value + dataStore.getMeasurement("A27").value;
- b_Hips = dataStore.getMeasurement("A31").value + dataStore.getMeasurement("A32").value;
- c_WaistToHip = dataStore.getMeasurement("A15").value;
- d_SkirtLength = dataStore.getMeasurement("A14").value;
-
- // Get name
- inputFileName = dataStore.getName();
-
- return true;
- }
- catch (MeasurementNotFoundException e)
- {
- addMissingMeasurement(dataStore.getName(), e.getMeasurementId());
- return false;
- }
+ measurements.addMeasurement(new Measurement("a_WaistFrontArc", "A26"));
+ measurements.addMeasurement(new Measurement("a_WaistBackArc", "A27"));
+ measurements.addMeasurement(new Measurement("b_HipsFrontArc", "A31"));
+ measurements.addMeasurement(new Measurement("b_HipsBackArc", "A32"));
+ measurements.addMeasurement(new Measurement("c_WaistToHip", "A15"));
+ measurements.addMeasurement(new Measurement("d_SkirtLength", "A14"));
+
+ // Arbitrary
+ measurements.addMeasurement(new Measurement("Arb_HipAdjustment", 1.5));
+ measurements.addMeasurement(new Measurement("Arb_WaistCurve", -1.25));
+ measurements.addMeasurement(new Measurement("Arb_BackHipAdjustment", 1.5));
+ measurements.addMeasurement(new Measurement("Arb_BackNaturalWaist", 4.0));
+ measurements.addMeasurement(new Measurement("Arb_BackDartOneDepth", 14.0));
+ measurements.addMeasurement(new Measurement("Arb_BackDartTwoDepth", 13.0));
+ measurements.addMeasurement(new Measurement("Arb_BackDartWidth", 2.0));
+ measurements.addMeasurement(new Measurement("Arb_FrontNaturalWaist", 2.5));
+ measurements.addMeasurement(new Measurement("Arb_FrontDartDepth", 12.0));
+ measurements.addMeasurement(new Measurement("Arb_FrontDartWidth", 2.5));
+ measurements.addMeasurement(new Measurement("Arb_FrontDartPlacement", 66, EUnitType.PERCENTAGE));
+ measurements.addMeasurement(new Measurement("Arb_BackDartPlacement", 33, EUnitType.PERCENTAGE));
}
/**
* The actual block creation process following the drafting method of Gill.
*/
@Override
- protected void createBlocks()
+ public void createBlocks()
{
+ // Pull from store
+ var a_Waist = get("a_WaistFrontArc") + get("a_WaistBackArc");
+ var b_Hips = get("b_HipsFrontArc") + get("b_HipsBackArc");
+ var c_WaistToHip = get("c_WaistToHip");
+ var d_SkirtLength = get("d_SkirtLength");
+ var Arb_HipAdjustment = get("Arb_HipAdjustment");
+ var Arb_WaistCurve = get("Arb_WaistCurve");
+ var Arb_BackHipAdjustment = get("Arb_BackHipAdjustment");
+ var Arb_BackNaturalWaist = get("Arb_BackNaturalWaist");
+ var Arb_BackDartOneDepth = get("Arb_BackDartOneDepth");
+ var Arb_BackDartTwoDepth = get("Arb_BackDartTwoDepth");
+ var Arb_BackDartWidth = get("Arb_BackDartWidth");
+ var Arb_FrontNaturalWaist = get("Arb_FrontNaturalWaist");
+ var Arb_FrontDartDepth = get("Arb_FrontDartDepth");
+ var Arb_FrontDartWidth = get("Arb_FrontDartWidth");
+ var Arb_FrontDartPlacement = get("Arb_FrontDartPlacement") / 100.0;
+ var Arb_BackDartPlacement = get("Arb_BackDartPlacement") / 100.0;
+
// Points that make up the shape are listed in a strict anti-clockwise order to maintain correct connectivity for
// plotting. The bottom left corner of the space to be the origin.
// Create component representing half back of skirt folded in half.
- blocks.add(new Block(inputFileName + "_Aldrich_Skirt_Block"));
+ blocks.add(new Block(userName + "_Aldrich_Skirt_Block"));
Block fullBlock = blocks.get(0);
// Add all the fixed points to the block that coincide with the basic rectangle. These points do not move
@@ -168,13 +101,13 @@ protected void createBlocks()
fullBlock.addKeypoint(new Vector2D(Arb_WaistCurve, a_Waist / 4.0 + Arb_BackNaturalWaist));
// Adding the two side seam curves
- fullBlock.addCircularCurve(new Vector2D(Arb_WaistCurve,
+ fullBlock.addCircularArc(new Vector2D(Arb_WaistCurve,
(b_Hips / 2.0 + Arb_BackHipAdjustment) - (a_Waist / 4.0 + Arb_FrontNaturalWaist)),
new Vector2D(c_WaistToHip, b_Hips / 4.0 + Arb_HipAdjustment),
1.0,
true);
- fullBlock.addCircularCurve(new Vector2D(c_WaistToHip, b_Hips / 4.0 + Arb_HipAdjustment),
+ fullBlock.addCircularArc(new Vector2D(c_WaistToHip, b_Hips / 4.0 + Arb_HipAdjustment),
new Vector2D(Arb_WaistCurve, a_Waist / 4.0 + Arb_BackNaturalWaist),
1.0,
true);
diff --git a/src/aldrich/TrouserPattern.java b/src/aldrich/TrouserPattern.java
index 53a7e8a..a9a026b 100644
--- a/src/aldrich/TrouserPattern.java
+++ b/src/aldrich/TrouserPattern.java
@@ -1,11 +1,7 @@
package aldrich;
-import jblockenums.EGarment;
-import jblockenums.EMethod;
-import jblockexceptions.MeasurementNotFoundException;
-import jblockmain.Block;
-import jblockmain.Measurements;
-import jblockmain.Pattern;
+import jblockenums.EPattern;
+import jblockmain.*;
import mathcontainers.Vector2D;
import java.util.ArrayList;
@@ -13,85 +9,30 @@
public class TrouserPattern
extends Pattern
{
- /* Pattern-specific Measurements */
-
- // Measurements listed in the Aldrich book
- private double a_Waist;
- private double b_Hips; // Actually used
- private double c_WaistToHip; // Actually used
- private double d_BodyRise; // Actually used
- private double e_WaistToFloor;
- private double f_TrouserBottomWidth;
-
- // Custom measurement used for block creation
- private double g_HipCHeight; // Actually used
- private double h_CrotchHeight; // Actually used
-
- /* Arbitrary Measurements */
-
- // Arb measurement for hem width
- private double Arb_HemWidth;
-
- // Arb measurements for front dart
- private double Arb_FrontDartWidth;
- private double Arb_FrontDartLength;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- /* Methods */
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- public TrouserPattern(Measurements dataStore)
+ public TrouserPattern(String userName, InputFileData dataStore, MeasurementSet template)
{
- if (!readMeasurements(dataStore)) return;
- addEasement();
-
- // Populate arbitrary measurements
- Arb_HemWidth = 22.0;
-
- // Create the blocks
- createBlocks();
+ super(userName, dataStore, template);
}
/* Implement abstract methods from super class */
@Override
- protected EMethod assignMethod()
+ protected EPattern assignPattern()
{
- return EMethod.ALDRICH;
+ return EPattern.ALDRICH_TROUSER;
}
@Override
- protected EGarment assignGarment()
+ protected void defineRequiredMeasurements() throws Exception
{
- return EGarment.TROUSER;
- }
-
- @Override
- protected void addEasement()
- {
- // No easement needed
- }
-
- @Override
- protected boolean readMeasurements(Measurements dataStore)
- {
- try
- {
- // Based on measurements for this pattern we can read the following from the scan
- b_Hips = dataStore.getMeasurement("A31").value + dataStore.getMeasurement("A32").value;
- c_WaistToHip = dataStore.getMeasurement("A15").value;
- d_BodyRise = dataStore.getMeasurement("A38").value;
- g_HipCHeight = dataStore.getMeasurement("A44").value;
- h_CrotchHeight = dataStore.getMeasurement("A43").value;
-
- // Get name
- userName = dataStore.getName();
-
- return true;
- }
- catch (MeasurementNotFoundException e)
- {
- addMissingMeasurement(dataStore.getName(), e.getMeasurementId());
- return false;
- }
+ measurements.addMeasurement(new Measurement("b_HipsFrontArc", "A31"));
+ measurements.addMeasurement(new Measurement("b_HipsBackArc", "A32"));
+ measurements.addMeasurement(new Measurement("c_WaistToHip", "A15"));
+ measurements.addMeasurement(new Measurement("d_BodyRise", "A38"));
+ measurements.addMeasurement(new Measurement("g_HipCHeight", "A44"));
+ measurements.addMeasurement(new Measurement("h_CrotchHeight", "A43"));
+
+ // Arbitrary measurement
+ measurements.addMeasurement(new Measurement("Arb_HemWidth", 22.0));
}
/**
@@ -99,11 +40,21 @@ protected boolean readMeasurements(Measurements dataStore)
* NOTE: This is using a step-by-step guide created for easier coding
*/
@Override
- protected void createBlocks()
+ public void createBlocks()
{
// Points that make up the shape are listed in a strict anti-clockwise order to maintain correct connectivity for
// plotting. The bottom left corner of the space to be the origin.
+ // Pull from store
+ var b_Hips = get("b_HipsFrontArc") + get("b_HipsBackArc");
+ var c_WaistToHip = get("c_WaistToHip");
+ var d_BodyRise = get("d_BodyRise");
+ var g_HipCHeight = get("g_HipCHeight");
+ var h_CrotchHeight = get("h_CrotchHeight");
+ var Arb_HemWidth = get("Arb_HemWidth");
+ var Arb_FrontDartWidth = get("Arb_FrontDartWidth");
+ var Arb_FrontDartLength = get("Arb_FrontDartLength");
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/* Front Half Block */
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -160,7 +111,7 @@ protected void createBlocks()
);
// Adding curve from Step 9 --> 15
- frontblock.addCircularCurve(new Vector2D(d_BodyRise, -(((b_Hips / 12.0) + 2.0) + ((b_Hips / 16.0) + 1.0))),
+ frontblock.addCircularArc(new Vector2D(d_BodyRise, -(((b_Hips / 12.0) + 2.0) + ((b_Hips / 16.0) + 1.0))),
new Vector2D((d_BodyRise + ((h_CrotchHeight / 2.0) - 5.0)),
-((Arb_HemWidth / 2.0) - 0.5 + 1.3)),
1.5,
@@ -168,7 +119,7 @@ protected void createBlocks()
);
// Adding curve from Step 13 --> 8
- frontblock.addCircularCurve(
+ frontblock.addCircularArc(
new Vector2D((d_BodyRise + ((h_CrotchHeight / 2.0) - 5.0)), ((Arb_HemWidth / 2.0) - 0.5 + 1.3)),
new Vector2D(c_WaistToHip, ((b_Hips / 4.0) + 0.5) - ((b_Hips / 12) + 2)),
0.5,
@@ -176,14 +127,14 @@ protected void createBlocks()
);
// Adding curve from Step 8 --> 11
- frontblock.addCircularCurve(new Vector2D(c_WaistToHip, ((b_Hips / 4.0) + 0.5) - ((b_Hips / 12) + 2)),
+ frontblock.addCircularArc(new Vector2D(c_WaistToHip, ((b_Hips / 4.0) + 0.5) - ((b_Hips / 12) + 2)),
new Vector2D(0.0, ((b_Hips / 4.0) + 1.0) - ((b_Hips / 12.0) + 2)),
0.5,
true
);
// Adding curve from Step 6 --> 9
- frontblock.addCircularCurve(new Vector2D(c_WaistToHip, -((b_Hips / 12.0) + 2.0)),
+ frontblock.addCircularArc(new Vector2D(c_WaistToHip, -((b_Hips / 12.0) + 2.0)),
new Vector2D(d_BodyRise, -(((b_Hips / 12.0) + 2.0) + ((b_Hips / 16.0) + 1.0))),
1.5,
false
@@ -287,7 +238,7 @@ protected void createBlocks()
);
// Adding curve from Step 24 --> 29
- backblock.addCircularCurve(new Vector2D((d_BodyRise + 0.5),
+ backblock.addCircularArc(new Vector2D((d_BodyRise + 0.5),
-((b_Hips / 12) + 2 + (b_Hips / 16) + 1 + 0.8 + (((b_Hips / 16) + 1) / 2))),
new Vector2D((d_BodyRise + ((h_CrotchHeight / 2.0) - 5.0)),
-((Arb_HemWidth / 2.0) - 0.5 + 1.3) - 1.0),
@@ -296,21 +247,21 @@ protected void createBlocks()
);
// Adding curve from Step 28 --> 28.1
- backblock.addCircularCurve(new Vector2D((c_WaistToHip + g_HipCHeight), -((Arb_HemWidth / 2.0) - 0.5) - 1.0),
+ backblock.addCircularArc(new Vector2D((c_WaistToHip + g_HipCHeight), -((Arb_HemWidth / 2.0) - 0.5) - 1.0),
new Vector2D(((c_WaistToHip + g_HipCHeight) + 1.0), 0.0),
0.25,
true
);
// Adding curve from Step 28.1 --> 26
- backblock.addCircularCurve(new Vector2D(((c_WaistToHip + g_HipCHeight) + 1.0), 0.0),
+ backblock.addCircularArc(new Vector2D(((c_WaistToHip + g_HipCHeight) + 1.0), 0.0),
new Vector2D((c_WaistToHip + g_HipCHeight), ((Arb_HemWidth / 2.0) - 0.5) + 1.0),
0.25,
true
);
// Adding curve from Step 27 --> 25
- backblock.addCircularCurve(
+ backblock.addCircularArc(
new Vector2D((d_BodyRise + ((h_CrotchHeight / 2.0) - 5.0)), ((Arb_HemWidth / 2.0) - 0.5 + 1.3) + 1.0),
new Vector2D(c_WaistToHip,
(((b_Hips / 4.0) + 4.0) - ((b_Hips / 12.0) + 2.0) - (((b_Hips / 12.0) + 2.0) / 4.0))),
@@ -319,7 +270,7 @@ protected void createBlocks()
);
// Adding curve from Step 25 --> 22
- backblock.addCircularCurve(new Vector2D(c_WaistToHip,
+ backblock.addCircularArc(new Vector2D(c_WaistToHip,
(((b_Hips / 4.0) + 4.0) - ((b_Hips / 12.0) + 2.0) - (((b_Hips / 12.0) + 2.0) / 4.0))),
new Vector2D(0.0,
((b_Hips / 4.0) - ((b_Hips / 12.0) + 2.0) - (((b_Hips / 12.0) + 2.0) / 4.0))),
@@ -328,7 +279,7 @@ protected void createBlocks()
);
// Adding curve from Step 19 --> 24
- backblock.addCircularCurve(
+ backblock.addCircularArc(
new Vector2D((d_BodyRise / 2.0), (-(((b_Hips / 12.0) + 2) - ((((b_Hips / 12.0)) + 2.0) / 4.0)))),
new Vector2D((d_BodyRise + 0.5),
-((b_Hips / 12) + 2 + (b_Hips / 16) + 1 + 0.8 + (((b_Hips / 16) + 1) / 2))),
diff --git a/src/analysis/RectanglePlot.java b/src/analysis/RectanglePlot.java
index 9600967..eb1cf0b 100644
--- a/src/analysis/RectanglePlot.java
+++ b/src/analysis/RectanglePlot.java
@@ -1,9 +1,11 @@
package analysis;
import dxfwriter.DxfFile;
+import dxfwriter.DxfFileConfiguration;
import jblockenums.EAnalysis;
+import jblockenums.EPlotType;
import jblockmain.IPlottable;
-import jblockmain.Measurements;
+import jblockmain.InputFileData;
import java.io.File;
import java.nio.file.Files;
@@ -17,86 +19,64 @@ public class RectanglePlot
/* Technique Specific Variables */
// Enum for analysis type
- private final EAnalysis analysis = EAnalysis.RECTANGLEPLOT;
+ private final EAnalysis analysis = EAnalysis.RECTANGLE_PLOT;
// Variables for x,y axis measurement ID
private final String xAxisID;
private final String yAxisID;
- private final String measurementFileName;
- private final boolean isLayered;
- private final boolean isRect;
- private final int numUsers;
- private final Measurements measurements;
+ private final EPlotType plotType;
+ private final InputFileData fileData;
// List of Rectangles in this plot
- private ArrayList rectangles;
+ private final ArrayList rectangles = new ArrayList<>();
// Constructor
- public RectanglePlot(Measurements _measurements, String measurementIdX, String measurementIdY,
- boolean isLayeredPlot, boolean isRectangle)
+ public RectanglePlot(InputFileData inputFileData,
+ String measurementIdX,
+ String measurementIdY,
+ EPlotType plotType)
{
- measurements = _measurements;
- rectangles = new ArrayList<>();
+ fileData = inputFileData;
xAxisID = measurementIdX;
yAxisID = measurementIdY;
- measurementFileName = measurements.getScanDataFileName();
- isLayered = isLayeredPlot;
- isRect = isRectangle;
- numUsers = measurements.getNames().size();
-
+ this.plotType = plotType;
}
// Method to add a new Rectangle to the plot
- public void addNewRectangle()
+ public void addNewRectangle(String userName)
{
// Add new rectangle
rectangles.add(
new Rectangle(
0.0,
0.0,
- measurements.getMeasurement(xAxisID).value,
- measurements.getMeasurement(yAxisID).value
+ fileData.getInputValue(userName, xAxisID).value,
+ fileData.getInputValue(userName, yAxisID).value
)
);
}
/* Interface implementation */
- private void rangeCheck(int blockNumber)
- {
- if (blockNumber > rectangles.size())
- throw new IndexOutOfBoundsException("Accessing out of range of number of blocks!");
- }
-
@Override
public ArrayList getXPoints(int blockNumber) throws Exception
{
- rangeCheck(blockNumber);
return rectangles.get(blockNumber).getX();
}
@Override
public ArrayList getYPoints(int blockNumber) throws Exception
{
- rangeCheck(blockNumber);
return rectangles.get(blockNumber).getY();
}
@Override
public ArrayList getXCtPoints(int blockNumber) throws Exception
{
- rangeCheck(blockNumber);
return null;
}
@Override
public ArrayList getYCtPoints(int blockNumber) throws Exception
{
- rangeCheck(blockNumber);
- return null;
- }
-
- private ArrayList getNames(int blockNumber) throws IndexOutOfBoundsException
- {
- rangeCheck(blockNumber);
return null;
}
@@ -107,7 +87,7 @@ public int getNumberOfBlocksToPlot()
}
@Override
- public void writeToDXF(File fileOutput, boolean[] dxfLayerChooser, String timeStamp)
+ public void writeToDXF(File fileOutput, DxfFileConfiguration config)
{
// Construct output path
Path path = Paths.get(fileOutput.toString() + "/" + analysis + "/");
@@ -122,14 +102,14 @@ public void writeToDXF(File fileOutput, boolean[] dxfLayerChooser, String timeSt
System.err.println("Cannot create directories - " + e);
}
- if (isRect)
+ if (plotType == EPlotType.RECTANGLE)
{
- ArrayList names = measurements.getNames();
+ ArrayList names = fileData.getUserNames();
for (int i = 0; i < rectangles.size(); i++)
{
-
- // Create new DXF file
- String filename = names.get(i) + "_" + xAxisID + "_" + yAxisID + "_Rectangle_Plot" + timeStamp;
+ // Create new DXF file for each rectangle
+ String filename = names.get(i) + "_" + xAxisID + "_" + yAxisID;
+ if (config.getTimeStamp() != null) filename += "_" + config.getTimeStamp();;
DxfFile file = new DxfFile(path.toString() + "/" + filename);
try
@@ -140,18 +120,15 @@ public void writeToDXF(File fileOutput, boolean[] dxfLayerChooser, String timeSt
{
e.printStackTrace();
}
- file.writeFile(filename, dxfLayerChooser);
+ file.writeFile(filename, config);
}
}
- if (isLayered)
+ else
{
- // Create new DXF file
- String filename;
- if (timeStamp == null)
- filename = "Layered_" + xAxisID + "_" + yAxisID + "_Rectangle_Plot";
- else
- filename = "Layered_" + xAxisID + "_" + yAxisID + "_Rectangle_Plot" + "_" + timeStamp;
+ // Create new DXF file with all rectangles on one plot
+ String filename = "Layered_" + xAxisID + "_" + yAxisID;
+ if (config.getTimeStamp() != null) filename += "_" + config.getTimeStamp();
DxfFile file = new DxfFile(path.toString() + "/" + filename);
try
@@ -165,7 +142,7 @@ public void writeToDXF(File fileOutput, boolean[] dxfLayerChooser, String timeSt
{
e.printStackTrace();
}
- file.writeFile(filename, dxfLayerChooser);
+ file.writeFile(filename, config);
}
}
}
diff --git a/src/beazleybond/BodicePattern.java b/src/beazleybond/BodicePattern.java
index 487914d..590c7d9 100644
--- a/src/beazleybond/BodicePattern.java
+++ b/src/beazleybond/BodicePattern.java
@@ -1,9 +1,8 @@
package beazleybond;
-import jblockenums.EGarment;
-import jblockenums.EMethod;
+import jblockenums.EPattern;
import jblockenums.EPosition;
-import jblockexceptions.MeasurementNotFoundException;
+import jblockenums.EUnitType;
import jblockmain.*;
import mathcontainers.Vector2D;
@@ -15,182 +14,105 @@
public class BodicePattern
extends Pattern
{
-
- protected static ArrayList easeMeasurements = new ArrayList<>();
- /* Pattern-specific Measurements */
- // In future will be simply extracted from the Measurements object.
- private double a_Bust = 88.0;
- private double b_Waist = 70.0;
- private double c_Neck = 38.0;
- private double d_BackNeckRise = 2.0;
- private double e_NapeToWaist = 41.0;
- private double f_ArmholeDepth = 21.0;
- private double g_FrNeckToBust = 27.0;
- private double h_FrNeckToWaist = 44.0;
- private double i_AcrossBack = 35.0;
- private double j_AcrossFront = 32.0;
- private double k_Shoulder = 13.0;
- private double l_WidthBustProm = 19.0;
-
- /* Arbitrary Measurements */
- private double m_WidthArmhole = 10.0;
- // Use default (size 12) values of m_WidthArmhole and a_Bust to compute a ratio
- private final double Arb_ArmholeRatio = (m_WidthArmhole + easeMeasurements.get(
- 6).getValue()) / (a_Bust + easeMeasurements.get(0).getValue());
- // This relates to the height of the basic rectangle which includes this amount for suppression of back waist dart
- // and the side seam.
- private double Arb_BackWaistDartSuppression;
- // Level corresponding to the across back measurement is chosen as halfway between the armhole level and the neck
- private double Arb_AcrossBackLevel;
- private double Arb_BackArmholeTouchX;
- // Setting of side seam position from the centre back (CB) at base of rectangle plus arbitrary 1.5cm
- private double Arb_SideSeamFromCentreBack;
- // Neck width and depth derived from the neck measurement
- private double Arb_HalfFrontNeckWidth;
- private double Arb_FrontNeckDepth;
- private double Arb_HalfBackNeckWidth;
- private double Arb_BackNeckRise;
- // Shoulder Level parameters. Shoulder slant measured in degrees.
- private double Arb_ShoulderSlant;
- private double Arb_FrontShoulderDartWidth;
- private double Arb_FrontShoulderLine;
- private double Arb_BackShoulderDartWidth;
- private double Arb_BackShoulderLine;
- private double Arb_BackShoulderLevel;
- private double Arb_BackShoulderDartPositionOnArmholeLevel;
- private double Arb_BackShoulderDartLength;
- // Waist suppression
- private double Arb_CBtoCF;
- private double Arb_BackFrontWaistDartWidth;
- private double Arb_SideSeamWaistDartWidth;
- private double Arb_FrontWaistDartApexFromBP;
- private double Arb_SideWaistLevel;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- /* Methods */
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- public BodicePattern(Measurements dataStore)
- {
- if (!readMeasurements(dataStore)) return;
- addEasement();
-
- // Rule for armhole width (applied after ease)
- if (a_Bust * Arb_ArmholeRatio > m_WidthArmhole) m_WidthArmhole = a_Bust * Arb_ArmholeRatio;
-
- // Populate arbitrary measurements
- /* Arbitrary Measurements */
-
- Arb_BackWaistDartSuppression = 1.5;
- Arb_AcrossBackLevel = f_ArmholeDepth / 2.0;
- Arb_BackArmholeTouchX = Arb_AcrossBackLevel + 2.0;
- Arb_SideSeamFromCentreBack = ((a_Bust - easeMeasurements.get(
- 0).getValue()) / 4.0) + 1.5; // Deducted ease from bust measurement in this case
- Arb_HalfFrontNeckWidth = (c_Neck / 5.0) - 1.5;
- Arb_FrontNeckDepth = c_Neck / 5.0;
- Arb_HalfBackNeckWidth = (c_Neck / 5.0) - 0.5;
- Arb_BackNeckRise = 2.0;
- Arb_ShoulderSlant = 22.0;
- Arb_FrontShoulderDartWidth = 4.5;
- Arb_FrontShoulderLine = k_Shoulder + Arb_FrontShoulderDartWidth;
- Arb_BackShoulderDartWidth = 1.5;
- Arb_BackShoulderLine = k_Shoulder + Arb_BackShoulderDartWidth;
- Arb_BackShoulderLevel = 4.0;
- Arb_BackShoulderDartPositionOnArmholeLevel = 9.25;
- Arb_BackShoulderDartLength = 8.0;
- Arb_CBtoCF = (a_Bust / 2.0) + Arb_BackWaistDartSuppression;
- Arb_BackFrontWaistDartWidth = 4.0;
- Arb_SideSeamWaistDartWidth = 3.5;
- Arb_FrontWaistDartApexFromBP = 3.0;
- Arb_SideWaistLevel = 0.5;
-
- // Create blocks
- createBlocks();
- }
-
- public static void populateEaseMeasurements()
- {
- // Check to see it hasn't already been populated / it is empty
- if (easeMeasurements.size() > 0)
- {
- return;
- }
- easeMeasurements.add(new easeMeasurement("Bust Ease", 6.0));
- easeMeasurements.add(new easeMeasurement("Waist Ease", 4.0));
- easeMeasurements.add(new easeMeasurement("Neck Ease", 2.0));
- easeMeasurements.add(new easeMeasurement("Armhole Depth Ease", 3.0));
- easeMeasurements.add(new easeMeasurement("Across Back Ease", 2.0));
- easeMeasurements.add(new easeMeasurement("Across Front Ease", 1.0));
- easeMeasurements.add(new easeMeasurement("Armhole Width Ease", 1.5));
- }
-
- public static ArrayList getEaseMeasurement()
+ public BodicePattern(String userName, InputFileData dataStore, MeasurementSet template)
{
- return easeMeasurements;
+ super(userName, dataStore, template);
}
/* Implement abstract methods from super class */
@Override
- protected EMethod assignMethod()
+ protected EPattern assignPattern()
{
- return EMethod.BEAZLEYBOND;
+ return EPattern.BEAZLEYBOND_BODICE;
}
@Override
- protected EGarment assignGarment()
+ protected void defineRequiredMeasurements() throws Exception
{
- return EGarment.BODICE;
- }
-
- @Override
- protected void addEasement()
- {
- // Size 12 for now
- a_Bust += easeMeasurements.get(0).getValue();
- b_Waist += easeMeasurements.get(1).getValue();
- c_Neck += easeMeasurements.get(2).getValue();
- f_ArmholeDepth += easeMeasurements.get(3).getValue();
- i_AcrossBack += easeMeasurements.get(4).getValue();
- j_AcrossFront += easeMeasurements.get(5).getValue();
- m_WidthArmhole += easeMeasurements.get(6).getValue();
- }
-
- @Override
- protected boolean readMeasurements(Measurements dataStore)
- {
- try
- {
- // Get measurements from the scan data store
- a_Bust = dataStore.getMeasurement("A01").value;
- b_Waist = dataStore.getMeasurement("A02").value;
- c_Neck = dataStore.getMeasurement("A05").value;
- e_NapeToWaist = dataStore.getMeasurement("A04").value;
- f_ArmholeDepth = dataStore.getMeasurement("A06").value;
- g_FrNeckToBust = dataStore.getMeasurement("A07").value;
- h_FrNeckToWaist = dataStore.getMeasurement("A08").value;
- i_AcrossBack = dataStore.getMeasurement("A09").value;
- j_AcrossFront = dataStore.getMeasurement("A10").value;
- k_Shoulder = dataStore.getMeasurement("A11").value;
- l_WidthBustProm = dataStore.getMeasurement("A12").value;
-
- // Get name
- userName = dataStore.getName();
-
- return true;
- }
- catch (MeasurementNotFoundException e)
- {
- addMissingMeasurement(dataStore.getName(), e.getMeasurementId());
- return false;
- }
-
+ measurements.addMeasurement(new Measurement("a_Bust", "A01"));
+ measurements.addMeasurement(new Measurement("b_Waist", "A02"));
+ measurements.addMeasurement(new Measurement("c_Neck", "A05"));
+ measurements.addMeasurement(new Measurement("e_NapeToWaist", "A04"));
+ measurements.addMeasurement(new Measurement("f_ArmholeDepth", "A06"));
+ measurements.addMeasurement(new Measurement("g_FrNeckToBust", "A07"));
+ measurements.addMeasurement(new Measurement("h_FrNeckToWaist", "A08"));
+ measurements.addMeasurement(new Measurement("i_AcrossBack", "A09"));
+ measurements.addMeasurement(new Measurement("j_AcrossFront", "A10"));
+ measurements.addMeasurement(new Measurement("k_Shoulder", "A11"));
+ measurements.addMeasurement(new Measurement("l_WidthBustProm", "A12"));
+
+ // Arbitrary
+ measurements.addMeasurement(new Measurement("Arb_WidthArmhole", 10.0));
+ measurements.addMeasurement(new Measurement("Arb_BackWaistDartSuppression", 1.5));
+ measurements.addMeasurement(new Measurement("Arb_BackNeckRise", 2.0));
+ measurements.addMeasurement(new Measurement("Arb_ShoulderSlant", 22.0));
+ measurements.addMeasurement(new Measurement("Arb_FrontShoulderDartWidth", 4.5));
+ measurements.addMeasurement(new Measurement("Arb_BackShoulderDartWidth", 1.5));
+ measurements.addMeasurement(new Measurement("Arb_BackShoulderLevel", 4.0));
+ measurements.addMeasurement(new Measurement("Arb_BackShoulderDartPositionOnArmholeLevel", 9.25));
+ measurements.addMeasurement(new Measurement("Arb_BackShoulderDartLength", 8.0));
+ measurements.addMeasurement(new Measurement("Arb_BackFrontWaistDartWidth", 4.0));
+ measurements.addMeasurement(new Measurement("Arb_SideSeamWaistDartWidth", 3.5));
+ measurements.addMeasurement(new Measurement("Arb_FrontWaistDartApexFromBP", 3.0));
+ measurements.addMeasurement(new Measurement("Arb_SideWaistLevel", 0.5));
+ measurements.addMeasurement(new Measurement("Arb_ScyeWidthPercent", 24.5, EUnitType.PERCENTAGE));
+
+ // Ease
+ measurements.addMeasurement(new Measurement("bustEase", 6.0));
+ measurements.addMeasurement(new Measurement("waistEase", 4.0));
+ measurements.addMeasurement(new Measurement("neckEase", 2.0));
+ measurements.addMeasurement(new Measurement("armholeDepthEase", 3.0));
+ measurements.addMeasurement(new Measurement("acrossBackEase", 2.0));
+ measurements.addMeasurement(new Measurement("acrossFrontEase", 1.0));
+ measurements.addMeasurement(new Measurement("armholeWidthEase", 1.5));
}
/**
* The actual block creation process following the drafting method of Beazley and Bond.
*/
@Override
- protected void createBlocks()
+ public void createBlocks()
{
+ // Pull from store
+ var a_Bust = get("a_Bust") + get("bustEase");
+ var b_Waist = get("b_Waist") + get("waistEase");
+ var c_Neck = get("c_Neck") + get("neckEase");
+ var e_NapeToWaist = get("e_NapeToWaist");
+ var f_ArmholeDepth = get("f_ArmholeDepth") + get("armholeDepthEase");
+ var g_FrNeckToBust = get("g_FrNeckToBust");
+ var h_FrNeckToWaist = get("h_FrNeckToWaist");
+ var i_AcrossBack = get("i_AcrossBack") + get("acrossBackEase");
+ var j_AcrossFront = get("j_AcrossFront") + get("acrossFrontEase");
+ var k_Shoulder = get("k_Shoulder");
+ var l_WidthBustProm = get("l_WidthBustProm");
+
+ var Arb_FrontShoulderDartWidth = get("Arb_FrontShoulderDartWidth");
+ var Arb_BackShoulderDartWidth = get("Arb_BackShoulderDartWidth");
+ var Arb_BackWaistDartSuppression = get("Arb_BackWaistDartSuppression");
+ var Arb_ShoulderSlant = get("Arb_ShoulderSlant");
+ var Arb_BackShoulderLevel = get("Arb_BackShoulderLevel");
+ var Arb_BackNeckRise = get("Arb_BackNeckRise");
+ var Arb_BackShoulderDartPositionOnArmholeLevel = get("Arb_BackShoulderDartPositionOnArmholeLevel");
+ var Arb_BackShoulderDartLength = get("Arb_BackShoulderDartLength");
+ var Arb_FrontWaistDartApexFromBP = get("Arb_FrontWaistDartApexFromBP");
+ var Arb_BackFrontWaistDartWidth = get("Arb_BackFrontWaistDartWidth");
+ var Arb_SideWaistLevel = get("Arb_SideWaistLevel");
+ var Arb_SideSeamWaistDartWidth = get("Arb_SideSeamWaistDartWidth");
+ var Arb_ScyeWidthPercent = get("Arb_ScyeWidthPercent");
+ var Arb_WidthArmhole = Math.max(
+ get("Arb_WidthArmhole") + get("armholeWidthEase"),
+ 0.5 * a_Bust * Arb_ScyeWidthPercent / 100.0
+ );
+
+ var Arb_AcrossBackLevel = f_ArmholeDepth / 2.0;
+ var Arb_BackArmholeTouchX = Arb_AcrossBackLevel + 2.0;
+ var Arb_SideSeamFromCentreBack = ((a_Bust - get("bustEase")) / 4.0) + 1.5; // Deducted ease from bust measurement in this case
+ var Arb_HalfFrontNeckWidth = (c_Neck / 5.0) - 1.5;
+ var Arb_HalfBackNeckWidth = (c_Neck / 5.0) - 0.5;
+ var Arb_FrontShoulderLine = k_Shoulder + Arb_FrontShoulderDartWidth;
+ var Arb_BackShoulderLine = k_Shoulder + Arb_BackShoulderDartWidth;
+ var Arb_CBtoCF = (a_Bust / 2.0) + Arb_BackWaistDartSuppression;
+
// Points that make up the shape are listed in a strict anti-clockwise order to maintain correct connectivity
// for plotting. The bottom left corner of the space to be the origin.
@@ -238,7 +160,7 @@ protected void createBlocks()
new Vector2D(refBustPoint.getX() + (h_FrNeckToWaist - g_FrNeckToBust), refTopRight.getY()));
// 7. Add front neck curve
- mainBlock.addDirectedCurveWithApexTangent(new Vector2D(Arb_HalfFrontNeckWidth, refTopLeft.getY()),
+ mainBlock.addDirectedCubicSplineWithApexTangent(new Vector2D(Arb_HalfFrontNeckWidth, refTopLeft.getY()),
new Vector2D(0.0, refTopLeft.getY() - Arb_HalfFrontNeckWidth),
new Vector2D(Arb_HalfFrontNeckWidth,
refTopLeft.getY() - Arb_HalfFrontNeckWidth),
@@ -247,7 +169,7 @@ protected void createBlocks()
new int[]{-1, 1});
// 8. Add back neck curve
- mainBlock.addDirectedCurveWithApexTangent(new Vector2D(-Arb_BackNeckRise, Arb_HalfBackNeckWidth),
+ mainBlock.addDirectedCubicSplineWithApexTangent(new Vector2D(-Arb_BackNeckRise, Arb_HalfBackNeckWidth),
refBottomLeft,
new Vector2D(0.0, Arb_HalfBackNeckWidth),
1.75,
@@ -289,8 +211,8 @@ protected void createBlocks()
mainBlock.addConstructionPoint(new Vector2D(0.0 - 3.0 * Arb_Con, i_AcrossBack / 2.0),
new Vector2D(f_ArmholeDepth + Arb_Con, i_AcrossBack / 2.0),
"Bk_Arm");
- mainBlock.addConstructionPoint(new Vector2D(0.0 - 3.0 * Arb_Con, i_AcrossBack / 2.0 + m_WidthArmhole),
- new Vector2D(f_ArmholeDepth + Arb_Con, i_AcrossBack / 2.0 + m_WidthArmhole),
+ mainBlock.addConstructionPoint(new Vector2D(0.0 - 3.0 * Arb_Con, i_AcrossBack / 2.0 + Arb_WidthArmhole),
+ new Vector2D(f_ArmholeDepth + Arb_Con, i_AcrossBack / 2.0 + Arb_WidthArmhole),
"Ft_Arm");
mainBlock.addConstructionPoint(new Vector2D(f_ArmholeDepth, 0.0 - Arb_Con),
new Vector2D(f_ArmholeDepth, Arb_CBtoCF + Arb_Con),
@@ -305,7 +227,7 @@ protected void createBlocks()
// Get touching point at front
Vector2D touchFront = new Vector2D(
frontShoulderLineX + (2.0 / 3.0) * (f_ArmholeDepth - frontShoulderLineX),
- touchBack.getY() + m_WidthArmhole);
+ touchBack.getY() + Arb_WidthArmhole);
// Get start point for first curve
Vector2D startPt = new Vector2D(frontShoulderLineX,
@@ -316,7 +238,7 @@ protected void createBlocks()
Vector2D endPt = new Vector2D(touchFront);
// a. Add first curve plus its end point as a keypoint
- Vector2D adjPoint = mainBlock.addDirectedCurve(startPt,
+ Vector2D adjPoint = mainBlock.addDirectedCubicSpline(startPt,
endPt,
new Vector2D(startPt.subtract(preStartPt)),
new Vector2D(1.0, 0.0),
@@ -333,7 +255,7 @@ protected void createBlocks()
Vector2D dirEnd = new Vector2D(0.0, -1.0);
// b. Add second part of curve and point after
- adjPoint = mainBlock.addDirectedCurveWithApexTangent(startPt, endPt,
+ adjPoint = mainBlock.addDirectedCubicSplineWithApexTangent(startPt, endPt,
dirStart, dirEnd,
new Vector2D(f_ArmholeDepth, touchFront.getY()),
2.5,
@@ -351,7 +273,7 @@ protected void createBlocks()
dirEnd = new Vector2D(-1.0, 0.0);
// c. Add third part of curve
- adjPoint = mainBlock.addDirectedCurveWithApexTangent(startPt, endPt,
+ adjPoint = mainBlock.addDirectedCubicSplineWithApexTangent(startPt, endPt,
dirStart, dirEnd,
new Vector2D(f_ArmholeDepth, touchBack.getY()),
3.0,
@@ -366,7 +288,7 @@ protected void createBlocks()
endPt = new Vector2D(Arb_BackShoulderLevel, Arb_HalfBackNeckWidth + backShoulderLineY);
// d. Add final part of armhole
- mainBlock.addDirectedCurve(startPt, endPt,
+ mainBlock.addDirectedCubicSpline(startPt, endPt,
new Vector2D(-1.0, 0.0),
new Vector2D(-Arb_BackNeckRise - endPt.getX(), Arb_HalfBackNeckWidth - endPt.getY()),
new double[]{0.0, 90.0});
@@ -392,7 +314,7 @@ protected void createBlocks()
Arb_SideSeamFromCentreBack + (Arb_SideSeamWaistDartWidth / 2.0));
// Need to shift so point doesn't coincide with an existing keypoint
- apex = new Vector2D(f_ArmholeDepth + JBlockCreator.tol, Arb_SideSeamFromCentreBack);
+ apex = new Vector2D(f_ArmholeDepth + Block.tolerance, Arb_SideSeamFromCentreBack);
// 13. Add side seam dart
ArrayList dartPts2 = mainBlock.addDart(startPt, endPt, apex, dartPts1.get(0), EPosition.BEFORE);
@@ -414,11 +336,11 @@ protected void createBlocks()
mainBlock.addKeypointNextTo(waistTouch, dartPts3.get(2), EPosition.AFTER);
// 15. Add waist line curve back to side seam
- mainBlock.addDirectedCurve(dartPts3.get(2), waistTouch, new double[]{90.0, 0.0});
- mainBlock.addDirectedCurve(waistTouch, dartPts2.get(0), new double[]{0.0, 90.0});
+ mainBlock.addDirectedCubicSpline(dartPts3.get(2), waistTouch, new double[]{90.0, 0.0});
+ mainBlock.addDirectedCubicSpline(waistTouch, dartPts2.get(0), new double[]{0.0, 90.0});
// 16. Add waist line curve side seam to front
- mainBlock.addDirectedCurve(dartPts2.get(2), dartPts1.get(0), new double[]{90.0, 90.0});
+ mainBlock.addDirectedCubicSpline(dartPts2.get(2), dartPts1.get(0), new double[]{90.0, 90.0});
}
diff --git a/src/beazleybond/SkirtPattern.java b/src/beazleybond/SkirtPattern.java
index ed7a6d8..84a438c 100644
--- a/src/beazleybond/SkirtPattern.java
+++ b/src/beazleybond/SkirtPattern.java
@@ -1,13 +1,9 @@
package beazleybond;
-import jblockenums.EGarment;
-import jblockenums.EMethod;
+import jblockenums.EPattern;
import jblockenums.EPosition;
-import jblockexceptions.MeasurementNotFoundException;
-import jblockmain.Block;
-import jblockmain.Measurements;
-import jblockmain.Pattern;
-import jblockmain.easeMeasurement;
+import jblockenums.EUnitType;
+import jblockmain.*;
import mathcontainers.Vector2D;
import java.util.ArrayList;
@@ -18,144 +14,66 @@
public class SkirtPattern
extends Pattern
{
- protected static ArrayList easeMeasurements = new ArrayList<>();
- /* Pattern-specific Measurements */
- private double a_Waist = 70.0;
- private double b_UpperHip = 90.0;
- private double c_Hip = 96.0;
- private double d_CentreBack = 60.0;
- private double e_SideSeam = 61.0;
-
- /* Arbitrary Measurements */
- // Some of the following can be inferred from body scan information but for now assume that these follow the
- // empirically driven values.
- private double f_CentreFront = 60.0;
- // Ensures the waistline drops by 1cm to allow it to curve round the body. This can be informed from the body scan.
- private double Arb_WaistLevel;
- // Generic assumption that can in future be informed from the body scan.
- private double Arb_UpperHipLevel;
- // Generic assumption that can in future be informed from the body scan.
- private double Arb_HipLevel;
- // Waist suppression process required calculation of a front and back dart by dividing up the circumference of the
- // waist. For now we assume a fixed percentage is assigned to each although this could be adjusted in future.
- private double Arb_BackDartPercent;
- private double Arb_FrontDartPercent;
- private double Arb_SideSeamPercent;
- // Dart length is arbitrary but can be inferred from body scan data.
- private double Arb_BackDartLength;
- private double Arb_FrontDartLength;
- // Dart placement is also arbitrary and is specified as a percentage of quarter waist as measured from the start
- // point of the waist (using strict connectivity order)
- private double Arb_BackDartPlacement;
- private double Arb_FrontDartPlacement;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- /* Methods */
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- public SkirtPattern(Measurements dataStore)
+ public SkirtPattern(String userName, InputFileData dataStore, MeasurementSet template)
{
- if (!readMeasurements(dataStore)) return;
- addEasement();
-
- // Populate arbitrary measurements
- Arb_WaistLevel = 1.0;
- Arb_UpperHipLevel = 10.0;
- Arb_HipLevel = 20.0;
- Arb_BackDartPercent = 0.35;
- Arb_FrontDartPercent = 0.20;
- Arb_SideSeamPercent = 0.45;
- Arb_BackDartLength = 14.0;
- Arb_FrontDartLength = 8.0;
- Arb_BackDartPlacement = 0.5;
- Arb_FrontDartPlacement = 1.0 / 3.0;
-
- // Create the blocks
- createBlocks();
- }
-
- public static void populateEaseMeasurements()
- {
- // Check to see it hasn't already been populated / it is empty
- if (easeMeasurements.size() > 0)
- {
- return;
- }
- easeMeasurements.add(new easeMeasurement("Waist Ease", 2.0));
- easeMeasurements.add(new easeMeasurement("Upper Hip Ease", 4.0));
- easeMeasurements.add(new easeMeasurement("Hip Ease", 4.0));
- easeMeasurements.add(new easeMeasurement("SideSeam Ease", 6.8));
- }
-
- public static ArrayList getEaseMeasurement()
- {
- return easeMeasurements;
+ super(userName, dataStore, template);
}
/* Implement abstract methods from super class */
@Override
- protected EMethod assignMethod()
- {
- return EMethod.BEAZLEYBOND;
- }
-
- @Override
- protected EGarment assignGarment()
- {
- return EGarment.SKIRT;
- }
-
- @Override
- protected void addEasement() throws IndexOutOfBoundsException
+ protected EPattern assignPattern()
{
- try
- {
- a_Waist += easeMeasurements.get(0).getValue();
- b_UpperHip += easeMeasurements.get(1).getValue();
- c_Hip += easeMeasurements.get(2).getValue();
- e_SideSeam += easeMeasurements.get(3).getValue();
- }
- catch (Exception e)
- {
- e.printStackTrace();
- System.out.println("Ease array out of bounds");
- }
+ return EPattern.BEAZLEYBOND_SKIRT;
}
@Override
- protected boolean readMeasurements(Measurements dataStore)
+ protected void defineRequiredMeasurements() throws Exception
{
- try
- {
- // Based on measurements for this pattern we can read the following from the scan:
- a_Waist = dataStore.getMeasurement("A02").value;
- b_UpperHip = dataStore.getMeasurement("A13").value;
- c_Hip = dataStore.getMeasurement("A03").value;
- d_CentreBack = dataStore.getMeasurement("A16").value;
- e_SideSeam = dataStore.getMeasurement("A16").value;
- f_CentreFront = dataStore.getMeasurement("A16").value;
-
- // Others
- Arb_HipLevel = dataStore.getMeasurement("A15").value;
-
- // Get name of user
- userName = dataStore.getName();
-
- return true;
- }
- catch (MeasurementNotFoundException e)
- {
- addMissingMeasurement(dataStore.getName(), e.getMeasurementId());
- return false;
- }
-
+ measurements.addMeasurement(new Measurement("a_Waist", "A02"));
+ measurements.addMeasurement(new Measurement("b_UpperHip", "A13"));
+ measurements.addMeasurement(new Measurement("c_Hip", "A03"));
+ measurements.addMeasurement(new Measurement("d_CentreBack", "A16"));
+ measurements.addMeasurement(new Measurement("g_HipLevel", "A15"));
+
+ // Arbitrary
+ measurements.addMeasurement(new Measurement("Arb_WaistLevel", 1.0));
+ measurements.addMeasurement(new Measurement("Arb_UpperHipLevel", 10.0));
+ measurements.addMeasurement(new Measurement("Arb_BackDartPercent", 35, EUnitType.PERCENTAGE));
+ measurements.addMeasurement(new Measurement("Arb_FrontDartPercent", 20, EUnitType.PERCENTAGE));
+ measurements.addMeasurement(new Measurement("Arb_SideSeamPercent", 45, EUnitType.PERCENTAGE));
+ measurements.addMeasurement(new Measurement("Arb_BackDartLength", 14.0));
+ measurements.addMeasurement(new Measurement("Arb_FrontDartLength", 8.0));
+ measurements.addMeasurement(new Measurement("Arb_BackDartPlacement", 50, EUnitType.PERCENTAGE));
+ measurements.addMeasurement(new Measurement("Arb_FrontDartPlacement", 33, EUnitType.PERCENTAGE));
+
+ // Ease
+ measurements.addMeasurement(new Measurement("WaistEase", 2.0));
+ measurements.addMeasurement(new Measurement("UpperHipEase", 4.0));
+ measurements.addMeasurement(new Measurement("HipEase", 4.0));
}
/**
* The actual block creation process following the drafting method of Beazley and Bond.
*/
@Override
- protected void createBlocks()
+ public void createBlocks()
{
+ // Pull from store
+ var a_Waist = get("a_Waist") + get("WaistEase");
+ var b_UpperHip = get("b_UpperHip") + get("UpperHipEase");
+ var c_Hip = get("c_Hip") + get("HipEase");
+ var d_CentreBack = get("d_CentreBack");
+ var g_HipLevel = get("g_HipLevel");
+ var Arb_WaistLevel = get("Arb_WaistLevel");
+ var Arb_UpperHipLevel = get("Arb_UpperHipLevel");
+ var Arb_BackDartPercent = get("Arb_BackDartPercent") / 100.0;
+ var Arb_FrontDartPercent = get("Arb_FrontDartPercent") / 100.0;
+ var Arb_SideSeamPercent = get("Arb_SideSeamPercent") / 100.0;
+ var Arb_BackDartLength = get("Arb_BackDartLength");
+ var Arb_FrontDartLength = get("Arb_FrontDartLength");
+ var Arb_BackDartPlacement = get("Arb_BackDartPlacement") / 100.0;
+ var Arb_FrontDartPlacement = get("Arb_FrontDartPlacement") / 100.0;
+
// Points that make up the shape are listed in a strict anti-clockwise order to maintain correct connectivity for
// plotting. The bottom left corner of the space to be the origin.
@@ -167,7 +85,7 @@ protected void createBlocks()
// throughout the drafting process.
backBlock.addKeypoint(new Vector2D(d_CentreBack, 0.0));
backBlock.addKeypoint(new Vector2D(d_CentreBack, c_Hip / 4.0));
- backBlock.addKeypoint(new Vector2D(Arb_HipLevel, c_Hip / 4.0));
+ backBlock.addKeypoint(new Vector2D(g_HipLevel, c_Hip / 4.0));
// Compute the waistline suppression by finding the difference between the waist measurement and half the hip
// measurement and then divide by 4 for a quarter distance.
@@ -189,7 +107,7 @@ protected void createBlocks()
// Add curve between waist point and hip point (rather than upper-hip as stipulated in BB).
// Assume for now, in the absence of vary form curve that this is a curve defined by a circle.
- backBlock.addCircularCurve(new Vector2D(Arb_HipLevel, c_Hip / 4.0),
+ backBlock.addCircularArc(new Vector2D(g_HipLevel, c_Hip / 4.0),
new Vector2D(0.0, Int_SuppressedSS), 0.5, true);
@@ -199,8 +117,8 @@ protected void createBlocks()
"Upper Hip");
// Add construction keypoints for Hip Level
- backBlock.addConstructionPoint(new Vector2D((Arb_HipLevel), 0.0 - Arb_Con),
- new Vector2D((Arb_HipLevel), c_Hip / 4 + Arb_Con),
+ backBlock.addConstructionPoint(new Vector2D((g_HipLevel), 0.0 - Arb_Con),
+ new Vector2D((g_HipLevel), c_Hip / 4 + Arb_Con),
"Hip");
// Trace off block
diff --git a/src/beazleybond/StraightSleevePattern.java b/src/beazleybond/StraightSleevePattern.java
index d336271..d530b2b 100644
--- a/src/beazleybond/StraightSleevePattern.java
+++ b/src/beazleybond/StraightSleevePattern.java
@@ -1,116 +1,54 @@
package beazleybond;
-import jblockenums.EGarment;
-import jblockenums.EMethod;
-import jblockexceptions.MeasurementNotFoundException;
-import jblockmain.Block;
-import jblockmain.Measurements;
-import jblockmain.Pattern;
-import jblockmain.easeMeasurement;
+import jblockenums.EPattern;
+import jblockmain.*;
import mathcontainers.Vector2D;
-import java.util.ArrayList;
-
public class StraightSleevePattern
extends Pattern
{
- /* Straight sleeve pattern */
-
- protected static ArrayList easeMeasurements = new ArrayList<>();
- /* Pattern-specific Measurements */
- private double a_UpperArmGirth = 28.0;
- private double b_FullLength = 59.0;
- private double c_DepthOfSleeveHead = 15.0;
-
- /* Arbitrary Measurements */
- private double d_SleeveHeadToElbow = 35.0;
- // Sleeve head height shaping
- private double Arb_SleeveShaping;
- // Wrist shortening
- private double Arb_ForeArmShortening;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- /* Methods */
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // Underarm seam shortening
- private double Arb_UnderarmShortening;
-
- public StraightSleevePattern(Measurements dataStore)
- {
- if (!readMeasurements(dataStore)) return;
- addEasement();
-
- // Populate arbitrary measurements
- Arb_SleeveShaping = 1.5;
- Arb_ForeArmShortening = 1.0;
- Arb_UnderarmShortening = 0.5;
- // Create the blocks
- createBlocks();
- }
-
- public static void populateEaseMeasurements()
- {
- // Check to see it hasn't already been populated / it is empty
- if (easeMeasurements.size() > 0)
- {
- return;
- }
- easeMeasurements.add(new easeMeasurement("Upper Arm Girth Ease", 6.0));
- }
-
- public static ArrayList getEaseMeasurement()
+ public StraightSleevePattern(String userName, InputFileData dataStore, MeasurementSet template)
{
- return easeMeasurements;
+ super(userName, dataStore, template);
}
/* Implement abstract methods from super class */
@Override
- protected EMethod assignMethod()
+ protected EPattern assignPattern()
{
- return EMethod.BEAZLEYBOND;
+ return EPattern.BEAZLEYBOND_STRAIGHTSLEEVE;
}
@Override
- protected EGarment assignGarment()
+ protected void defineRequiredMeasurements() throws Exception
{
- return EGarment.STRAIGHTSLEEVE;
- }
+ measurements.addMeasurement(new Measurement("a_UpperArmGirth", "A24"));
+ measurements.addMeasurement(new Measurement("b_FullLength", "A23"));
+ measurements.addMeasurement(new Measurement("c_DepthOfSleeveHead", "A35"));
+ measurements.addMeasurement(new Measurement("d_SleeveHeadToElbow", "A25"));
- @Override
- protected void addEasement() throws IndexOutOfBoundsException
- {
- a_UpperArmGirth += easeMeasurements.get(0).getValue();
- }
+ // Arbitrary
+ measurements.addMeasurement(new Measurement("Arb_ForeArmShortening", 1.0));
+ measurements.addMeasurement(new Measurement("Arb_UnderarmShortening", 0.5));
- @Override
- protected boolean readMeasurements(Measurements dataStore)
- {
- try
- {
- // Based on measurements for this pattern we can read the following from the scan:
- a_UpperArmGirth = dataStore.getMeasurement("A24").value;
- b_FullLength = dataStore.getMeasurement("A23").value;
- c_DepthOfSleeveHead = dataStore.getMeasurement("A35").value;
- d_SleeveHeadToElbow = dataStore.getMeasurement("A25").value;
-
- // Get name
- userName = dataStore.getName();
-
- return true;
- }
- catch (MeasurementNotFoundException e)
- {
- addMissingMeasurement(dataStore.getName(), e.getMeasurementId());
- return false;
- }
+ // Ease
+ measurements.addMeasurement(new Measurement("upperArmGirthEase", 6.0));
}
/**
* The actual block creation process following the drafting method of Beazley Bond.
*/
@Override
- protected void createBlocks()
+ public void createBlocks()
{
+ // Pull from store
+ var a_UpperArmGirth = get("a_UpperArmGirth") + get("upperArmGirthEase");
+ var b_FullLength = get("b_FullLength");
+ var c_DepthOfSleeveHead = get("c_DepthOfSleeveHead");
+ var d_SleeveHeadToElbow = get("d_SleeveHeadToElbow");
+ var Arb_ForeArmShortening = get("Arb_ForeArmShortening");
+ var Arb_UnderarmShortening = get("Arb_UnderarmShortening");
+
// Points that make up the shape are listed in a strict anti-clockwise order to maintain correct connectivity for
// plotting. The bottom left corner of the space to be the origin.
@@ -176,25 +114,25 @@ protected void createBlocks()
"");
// Underarm to forearm arm hole curve
- fullBlock.addCircularCurve(new Vector2D(c_DepthOfSleeveHead, a_UpperArmGirth),
+ fullBlock.addCircularArc(new Vector2D(c_DepthOfSleeveHead, a_UpperArmGirth),
new Vector2D(c_DepthOfSleeveHead / 2.0, 3.0 * (a_UpperArmGirth / 4.0)),
1.75,
false);
// Forearm to centre arm hole curve
- fullBlock.addCircularCurve(new Vector2D(c_DepthOfSleeveHead / 2.0, 3.0 * (a_UpperArmGirth / 4.0)),
+ fullBlock.addCircularArc(new Vector2D(c_DepthOfSleeveHead / 2.0, 3.0 * (a_UpperArmGirth / 4.0)),
new Vector2D(0.0, a_UpperArmGirth / 2.0),
1.75,
true);
// Centre to back arm arm hole curve
- fullBlock.addCircularCurve(new Vector2D(0.0, a_UpperArmGirth / 2.0),
+ fullBlock.addCircularArc(new Vector2D(0.0, a_UpperArmGirth / 2.0),
new Vector2D(c_DepthOfSleeveHead / 2.0, a_UpperArmGirth / 4.0),
1.25,
true);
// Back arm to underarm arm hole curve
- fullBlock.addCircularCurve(new Vector2D(c_DepthOfSleeveHead / 2.0, a_UpperArmGirth / 4.0),
+ fullBlock.addCircularArc(new Vector2D(c_DepthOfSleeveHead / 2.0, a_UpperArmGirth / 4.0),
new Vector2D(c_DepthOfSleeveHead, 0.0),
1.25,
false);
diff --git a/src/beazleybond/TrouserPattern.java b/src/beazleybond/TrouserPattern.java
index 3ec0fc1..8ef8e92 100644
--- a/src/beazleybond/TrouserPattern.java
+++ b/src/beazleybond/TrouserPattern.java
@@ -1,12 +1,7 @@
package beazleybond;
-import jblockenums.EGarment;
-import jblockenums.EMethod;
-import jblockexceptions.MeasurementNotFoundException;
-import jblockmain.Block;
-import jblockmain.Measurements;
-import jblockmain.Pattern;
-import jblockmain.easeMeasurement;
+import jblockenums.EPattern;
+import jblockmain.*;
import mathcontainers.Vector2D;
import java.util.ArrayList;
@@ -18,177 +13,95 @@
public class TrouserPattern
extends Pattern
{
- protected static ArrayList easeMeasurements = new ArrayList<>();
- /* Pattern-specific Measurements */
- // In future will be simply extracted from the Measurements object.
- private double a_Waist = 70.0;
- private double a_WaistBand = 70.0;
- private double b_UpperHip = 90.0;
- private double c_Hip = 96.0;
- private double d_Thigh = 57.0;
- private double e_KneeStraight = 37.0;
- private double e_KneeSlim = 37.0;
- private double f_Ankle = 25.0;
- private double g_UpperHip = 10.0;
- private double h_Hip = 20.0;
- private double i_Crutch = 28.0;
- private double j_Knee = 60.0;
- private double k_OutsideLegToAnkle = 100.0;
-
- /* Arbitrary Measurements */
- // Some initialised after ease has been applied
- private double l_InsideLegToAnkle = 72.0;
- // Crutch shaping
- private double Arb_CrutchCentreFrontOffset = 0.5;
- private double Arb_FrontCrutchCurveBisect = 2.5;
- private double Arb_BackCrutchCurveBisect = 3.0;
- // Waist Shaping
- private double Arb_FrontDartSuppression = 4.0;
- private double Arb_FrontDartLength = 10.0;
- private double Arb_FrontDartWidth = Arb_FrontDartSuppression / 2.0;
- private double Arb_BackDartSuppression = 5.0;
- private double Arb_BackDartWidth = Arb_BackDartSuppression / 2.0;
- private double Arb_BackDartLengthShort = 13.0;
- private double Arb_BackDartLengthLong = 15.0;
- // Width of starting rectangle
- private double Arb_FrontCrutchFork;
- private double Arb_BackCrutchFork;
- private double Arb_FrontWidthOfBlock;
- private double Arb_BackWidthOfBlock;
- // Centre front and back lines
- private double Arb_CentreFrontFromInsideLeg;
- private double Arb_CentreBackFromInsideLeg;
- // Trouser crease line
- private double Arb_FrontCreaseLineFromInsideLeg;
- private double Arb_BackCreaseLineFromInsideLeg;
- // Knee
- private double Arb_FrontHalfKneeWidth;
- private double Arb_BackHalfKneeWidth;
- // Arb Measurement for construction lines
- private double Arb_UpperHipLevel;
- private double Arb_HipLevel;
- private double Arb_CrutchLevel;
- private double Arb_Knee;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- /* Methods */
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- public TrouserPattern(Measurements dataStore)
+ public TrouserPattern(String userName, InputFileData dataStore, MeasurementSet template)
{
- if (!readMeasurements(dataStore)) return;
- addEasement();
-
- // Initialise dependent quantities (arbitrary measurements)
- Arb_FrontCrutchFork = (c_Hip / 20.0) + 0.5;
- Arb_BackCrutchFork = (c_Hip / 10.0) + 1.5;
- Arb_FrontWidthOfBlock = (c_Hip / 4.0) - 1.0 + Arb_FrontCrutchFork;
- Arb_BackWidthOfBlock = (c_Hip / 4.0) + 1.0 + Arb_BackCrutchFork;
- Arb_CentreFrontFromInsideLeg = Arb_FrontWidthOfBlock - ((c_Hip / 4.0) - 1.0);
- Arb_CentreBackFromInsideLeg = Arb_BackWidthOfBlock - ((c_Hip / 4.0) + 1.0);
- Arb_FrontCreaseLineFromInsideLeg = Arb_CentreFrontFromInsideLeg + (c_Hip / 10.0);
- Arb_BackCreaseLineFromInsideLeg = Arb_CentreBackFromInsideLeg + (c_Hip / 10.0) - 1.0;
- Arb_FrontHalfKneeWidth = (e_KneeStraight / 4.0) - 1.0;
- Arb_BackHalfKneeWidth = (e_KneeStraight / 4.0) + 1.0;
-
- // Arb Measurement for construction lines
- Arb_UpperHipLevel = 10.0;
- Arb_HipLevel = 20.0;
- Arb_CrutchLevel = 29.0;
- Arb_Knee = 60.0;
-
- // Create the blocks
- createBlocks();
- }
-
- public static void populateEaseMeasurements()
- {
- // Check to see it hasn't already been populated / it is empty
- if (easeMeasurements.size() > 0)
- {
- return;
- }
- easeMeasurements.add(new easeMeasurement("Waist Ease", 4.0));
- easeMeasurements.add(new easeMeasurement("Waist Band Ease", 2.0));
- easeMeasurements.add(new easeMeasurement("Upper Hip Ease", 4.0));
- easeMeasurements.add(new easeMeasurement("Hip Ease", 4.0));
- easeMeasurements.add(new easeMeasurement("Thigh Ease", 10.0));
- easeMeasurements.add(new easeMeasurement("Straight Knee Ease", 15.0));
- easeMeasurements.add(new easeMeasurement("Slim Knee Ease", 9.0));
- easeMeasurements.add(new easeMeasurement("Ankle Ease", 9.0));
- easeMeasurements.add(new easeMeasurement("Crutch Ease", 1.0));
- easeMeasurements.add(new easeMeasurement("Inside Leg To Ankle Ease", 1.0));
- }
-
- public static ArrayList getEaseMeasurement()
- {
- return easeMeasurements;
+ super(userName, dataStore, template);
}
/* Implement abstract methods from super class */
@Override
- protected EMethod assignMethod()
+ protected EPattern assignPattern()
{
- return EMethod.BEAZLEYBOND;
+ return EPattern.BEAZLEYBOND_TROUSER;
}
@Override
- protected EGarment assignGarment()
+ protected void defineRequiredMeasurements() throws Exception
{
- return EGarment.TROUSER;
- }
-
- @Override
- protected void addEasement() throws IndexOutOfBoundsException
- {
- // Size 12 for now
- a_Waist += easeMeasurements.get(0).getValue();
- a_WaistBand += easeMeasurements.get(1).getValue();
- b_UpperHip += easeMeasurements.get(2).getValue();
- c_Hip += easeMeasurements.get(3).getValue();
- d_Thigh += easeMeasurements.get(4).getValue();
- e_KneeStraight += easeMeasurements.get(5).getValue();
- e_KneeSlim += easeMeasurements.get(6).getValue();
- f_Ankle += easeMeasurements.get(7).getValue();
- i_Crutch += easeMeasurements.get(8).getValue();
- l_InsideLegToAnkle -= easeMeasurements.get(8).getValue();
- }
-
- @Override
- protected boolean readMeasurements(Measurements dataStore)
- {
- try
- {
- // Get measurements from the scan data store
- a_Waist = dataStore.getMeasurement("A02").value;
- b_UpperHip = dataStore.getMeasurement("A13").value;
- c_Hip = dataStore.getMeasurement("A03").value;
- d_Thigh = dataStore.getMeasurement("A17").value;
- e_KneeStraight = dataStore.getMeasurement("A18").value;
- f_Ankle = dataStore.getMeasurement("A19").value;
- h_Hip = dataStore.getMeasurement("A15").value;
- i_Crutch = dataStore.getMeasurement("A20").value;
- j_Knee = dataStore.getMeasurement("A14").value;
- k_OutsideLegToAnkle = dataStore.getMeasurement("A21").value;
- l_InsideLegToAnkle = dataStore.getMeasurement("A22").value;
-
- // Get name
- userName = dataStore.getName();
-
- return true;
- }
- catch (MeasurementNotFoundException e)
- {
- addMissingMeasurement(dataStore.getName(), e.getMeasurementId());
- return false;
- }
+ measurements.addMeasurement(new Measurement("a_Waist", "A02"));
+ measurements.addMeasurement(new Measurement("b_UpperHip", "A13"));
+ measurements.addMeasurement(new Measurement("c_Hip", "A03"));
+ measurements.addMeasurement(new Measurement("d_Thigh", "A17"));
+ measurements.addMeasurement(new Measurement("e_KneeStraight", "A18"));
+ measurements.addMeasurement(new Measurement("f_Ankle", "A19"));
+ measurements.addMeasurement(new Measurement("h_Hip", "A15"));
+ measurements.addMeasurement(new Measurement("i_Crutch", "A20"));
+ measurements.addMeasurement(new Measurement("j_Knee", "A14"));
+ measurements.addMeasurement(new Measurement("k_OutsideLegToAnkle", "A21"));
+ measurements.addMeasurement(new Measurement("l_InsideLegToAnkle", "A22"));
+
+ // Arbitrary
+ measurements.addMeasurement(new Measurement("Arb_UpperHipLevel", 10.0));
+ measurements.addMeasurement(new Measurement("Arb_UpperHip", 10.0));
+ measurements.addMeasurement(new Measurement("Arb_CrutchCentreFrontOffset", 0.5));
+ measurements.addMeasurement(new Measurement("Arb_FrontCrutchCurveBisect", 2.5));
+ measurements.addMeasurement(new Measurement("Arb_BackCrutchCurveBisect", 3.0));
+ measurements.addMeasurement(new Measurement("Arb_FrontDartSuppression", 4.0));
+ measurements.addMeasurement(new Measurement("Arb_FrontDartLength", 10.0));
+ measurements.addMeasurement(new Measurement("Arb_BackDartSuppression", 5.0));
+ measurements.addMeasurement(new Measurement("Arb_BackDartLengthShort", 13.0));
+ measurements.addMeasurement(new Measurement("Arb_BackDartLengthLong", 15.0));
+
+ // Ease
+ measurements.addMeasurement(new Measurement("WaistEase", 4.0));
+ measurements.addMeasurement(new Measurement("HipEase", 4.0));
+ measurements.addMeasurement(new Measurement("StraightKneeEase", 15.0));
+ measurements.addMeasurement(new Measurement("CrutchEase", 1.0));
}
/**
* The actual block creation process following the drafting method of Beazley and Bond.
*/
@Override
- protected void createBlocks()
+ public void createBlocks()
{
+ // Pull from store
+ var a_Waist = get("a_Waist") + get("WaistEase");
+ var b_UpperHip = get("b_UpperHip");
+ var c_Hip = get("c_Hip") + get("HipEase");
+ var d_Thigh = get("d_Thigh");
+ var e_KneeStraight = get("e_KneeStraight") + get("StraightKneeEase");
+ var f_Ankle = get("f_Ankle");
+ var h_Hip = get("h_Hip");
+ var i_Crutch = get("i_Crutch") + get("CrutchEase");
+ var j_Knee = get("j_Knee");
+ var k_OutsideLegToAnkle = get("k_OutsideLegToAnkle");
+ var l_InsideLegToAnkle = get("l_InsideLegToAnkle");
+
+ // Initialise driven arbitrary values
+ var Arb_FrontCrutchFork = (c_Hip / 20.0) + 0.5;
+ var Arb_BackCrutchFork = (c_Hip / 10.0) + 1.5;
+ var Arb_FrontWidthOfBlock = (c_Hip / 4.0) - 1.0 + Arb_FrontCrutchFork;
+ var Arb_BackWidthOfBlock = (c_Hip / 4.0) + 1.0 + Arb_BackCrutchFork;
+ var Arb_CentreFrontFromInsideLeg = Arb_FrontWidthOfBlock - ((c_Hip / 4.0) - 1.0);
+ var Arb_CentreBackFromInsideLeg = Arb_BackWidthOfBlock - ((c_Hip / 4.0) + 1.0);
+ var Arb_FrontCreaseLineFromInsideLeg = Arb_CentreFrontFromInsideLeg + (c_Hip / 10.0);
+ var Arb_BackCreaseLineFromInsideLeg = Arb_CentreBackFromInsideLeg + (c_Hip / 10.0) - 1.0;
+ var Arb_FrontHalfKneeWidth = (e_KneeStraight / 4.0) - 1.0;
+ var Arb_BackHalfKneeWidth = (e_KneeStraight / 4.0) + 1.0;
+ var Arb_UpperHipLevel = get("Arb_UpperHipLevel");
+ var Arb_UpperHip = get("Arb_UpperHip");
+ var Arb_CrutchCentreFrontOffset = get("Arb_CrutchCentreFrontOffset");
+ var Arb_FrontCrutchCurveBisect = get("Arb_FrontCrutchCurveBisect");
+ var Arb_BackCrutchCurveBisect = get("Arb_BackCrutchCurveBisect");
+ var Arb_FrontDartSuppression = get("Arb_FrontDartSuppression");
+ var Arb_FrontDartLength = get("Arb_FrontDartLength");
+ var Arb_BackDartSuppression = get("Arb_BackDartSuppression");
+ var Arb_BackDartLengthShort = get("Arb_BackDartLengthShort");
+ var Arb_BackDartLengthLong = get("Arb_BackDartLengthLong");
+ var Arb_FrontDartWidth = Arb_FrontDartSuppression / 2.0;
+ var Arb_BackDartWidth = Arb_BackDartSuppression / 2.0;
+
// Points that make up the shape are listed in a strict anti-clockwise order to maintain correct connectivity
// for plotting. The bottom left corner of the space to be the origin.
@@ -233,13 +146,13 @@ protected void createBlocks()
new Vector2D(0.0, Arb_CentreFrontFromInsideLeg + (a_Waist / 4.0) + Arb_FrontDartSuppression));
// Insert the inside leg curve -- circular curve will do the job rather than something more complicated
- frontBlock.addCircularCurve(new Vector2D(i_Crutch, 0.0),
+ frontBlock.addCircularArc(new Vector2D(i_Crutch, 0.0),
new Vector2D(j_Knee, Arb_FrontCreaseLineFromInsideLeg - Arb_FrontHalfKneeWidth),
0.5,
false);
// Insert crutch curve
- frontBlock.addDirectedCurveWithApexTangent(
+ frontBlock.addDirectedCubicSplineWithApexTangent(
new Vector2D(h_Hip, Arb_CentreFrontFromInsideLeg),
new Vector2D(i_Crutch, 0.0),
new Vector2D(i_Crutch, Arb_CentreFrontFromInsideLeg),
@@ -279,12 +192,12 @@ protected void createBlocks()
Arb_CentreFrontFromInsideLeg + (a_Waist / 4.0) + Arb_FrontDartSuppression);
double frontHipWaistY = (frontHipWaistStart.getY() - frontHipWaistEnd.getY()) / 2.0;
Vector2D frontHipWaistInt = new Vector2D(Arb_UpperHipLevel, frontHipWaistEnd.getY() + frontHipWaistY);
- frontBlock.addDirectedCurve(frontHipWaistStart, frontHipWaistEnd, frontHipWaistInt, 0.0);
+ frontBlock.addDirectedCubicSpline(frontHipWaistStart, frontHipWaistEnd, frontHipWaistInt, 0.0);
// Add construction keypoints for Upper Hip Level
- frontBlock.addConstructionPoint(new Vector2D((g_UpperHip), 0.0 - Arb_Con),
- new Vector2D((g_UpperHip), c_Hip / 4 - 1.0 + Arb_FrontCrutchFork + Arb_Con),
+ frontBlock.addConstructionPoint(new Vector2D((Arb_UpperHip), 0.0 - Arb_Con),
+ new Vector2D((Arb_UpperHip), c_Hip / 4 - 1.0 + Arb_FrontCrutchFork + Arb_Con),
"Upper Hip");
// Add construction keypoints for Hip Level
@@ -378,14 +291,14 @@ protected void createBlocks()
true, false);
// Add inside leg curve -- again as we don't really have much information try a circular curve for now
- backBlock.addCircularCurve(new Vector2D(i_Crutch + 1.0, 0.0),
+ backBlock.addCircularArc(new Vector2D(i_Crutch + 1.0, 0.0),
new Vector2D(j_Knee, Arb_BackCreaseLineFromInsideLeg - Arb_BackHalfKneeWidth),
1.5,
false);
// Add crutch curve -- approximate angle between inside leg curve as it looks less than 90 degrees.
- backBlock.addDirectedCurveWithApexTangent(
+ backBlock.addDirectedCubicSplineWithApexTangent(
new Vector2D(h_Hip, Arb_CentreBackFromInsideLeg),
new Vector2D(i_Crutch + 1.0, 0.0),
new Vector2D(i_Crutch, Arb_CentreBackFromInsideLeg),
@@ -399,11 +312,11 @@ protected void createBlocks()
Vector2D backHipWaistEnd = new Vector2D(0.0, Arb_CentreBackFromInsideLeg + 2.0 + yOffset);
double backHipWaistY = (backHipWaistStart.getY() - backHipWaistEnd.getY()) / 2.0;
Vector2D backHipWaistInt = new Vector2D(Arb_UpperHipLevel, backHipWaistEnd.getY() + backHipWaistY);
- backBlock.addDirectedCurve(backHipWaistStart, backHipWaistEnd, backHipWaistInt, 0.0);
+ backBlock.addDirectedCubicSpline(backHipWaistStart, backHipWaistEnd, backHipWaistInt, 0.0);
// Add construction keypoints for Upper Hip Level
- backBlock.addConstructionPoint(new Vector2D((g_UpperHip), 0.0 - Arb_Con),
- new Vector2D((g_UpperHip), c_Hip / 4 + 1.0 + Arb_BackCrutchFork + Arb_Con),
+ backBlock.addConstructionPoint(new Vector2D((Arb_UpperHip), 0.0 - Arb_Con),
+ new Vector2D((Arb_UpperHip), c_Hip / 4 + 1.0 + Arb_BackCrutchFork + Arb_Con),
"Upper Hip");
// Add construction keypoints for Hip Level
diff --git a/src/dxfwriter/DxfFile.java b/src/dxfwriter/DxfFile.java
index 5342742..13b5400 100644
--- a/src/dxfwriter/DxfFile.java
+++ b/src/dxfwriter/DxfFile.java
@@ -1,7 +1,5 @@
package dxfwriter;
-import jblockmain.JBlockCreator;
-
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
@@ -9,6 +7,7 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
+import java.util.ResourceBundle;
/**
* A class that encapsulates a DXF file and the methods required to write it from arrays of points which represent line
@@ -19,8 +18,9 @@ public class DxfFile
/**
* Some parameters for the annotation text writing
*/
- double baselineSkip = 10.0;
+ double baselineSkip = 8.0;
double textHeight = baselineSkip * 0.8;
+ double textHeightSmall = 2.5;
/**
* Flag indicating whether file is ready
*/
@@ -132,9 +132,9 @@ public void addConstructionPoints(ArrayList xPts, ArrayList yPts
* Writes the contents of the DXF file.
*
* @param blockName name of the block to be overlaid on the DXF drawing
- * @param dxfLayerChooser array of flags indicating which features should be written
+ * @param config configuration of the file
*/
- public void writeFile(String blockName, boolean[] dxfLayerChooser)
+ public void writeFile(String blockName, DxfFileConfiguration config)
{
if (bIsOpen)
{
@@ -277,7 +277,7 @@ public void writeFile(String blockName, boolean[] dxfLayerChooser)
writeDxfLine("70", "0"); // Block flag (see DXF references)
// Add the pattern outline to the block definition
- if (dxfLayerChooser.length > 1 && dxfLayerChooser[1])
+ if (config.getLayers().contains("checkOutline"))
{
// Start of polyline
writeDxfLine("0", "POLYLINE");
@@ -337,8 +337,8 @@ public void writeFile(String blockName, boolean[] dxfLayerChooser)
/* Add specific annotation text on layer 15 as per the ASTM spec */
writeAnnotationText("ASTM/D13 Proposal 1 VERSION:10");
- writeAnnotationText("AUTHOR:JBLOCKCREATOR_" + JBlockCreator.bundle.getString("maj_ver") + "_"
- + JBlockCreator.bundle.getString("min_ver"));
+ writeAnnotationText("AUTHOR:JBLOCKCREATOR_" + ResourceBundle.getBundle("settings").getString("maj_ver") + "_"
+ + ResourceBundle.getBundle("settings").getString("min_ver"));
writeAnnotationText("CREATION DATE:" + new SimpleDateFormat("dd-MM-yyyy").format(dDate));
writeAnnotationText("CREATION TIME:" + new SimpleDateFormat("hh:mm").format(dDate));
writeAnnotationText("UNITS:METRIC");
@@ -346,7 +346,7 @@ public void writeFile(String blockName, boolean[] dxfLayerChooser)
writeAnnotationText("SAMPLE SIZE:0");
// Write the rest of the information on custom layers
- if (dxfLayerChooser.length > 4 && dxfLayerChooser[4])
+ if (config.getLayers().contains("checkCon"))
{
// Add construction line entities one at a time
for (int i = 0; i < ConX.size() - 1; i++)
@@ -379,7 +379,7 @@ public void writeFile(String blockName, boolean[] dxfLayerChooser)
}
}
- if (dxfLayerChooser.length > 2 && dxfLayerChooser[2])
+ if (config.getLayers().contains("checkCircles"))
{
// Marks the keypoints used as individual circles on a separate layer
for (int i = 0; i < linesX.size(); i++)
@@ -393,7 +393,7 @@ public void writeFile(String blockName, boolean[] dxfLayerChooser)
}
}
- if (dxfLayerChooser.length > 3 && dxfLayerChooser[3])
+ if (config.getLayers().contains("checkCoord"))
{
// Add point coordinates one at a time
for (int i = 0; i < linesX.size() - 1; i++)
@@ -403,7 +403,7 @@ public void writeFile(String blockName, boolean[] dxfLayerChooser)
writeDxfLine("62", "256"); // Colour of line using index colour
writeDxfLine("1", "(" + String.format("%.2f", linesX.get(i) * 10.0) + ", " +
String.format("%.2f", linesY.get(i) * 10.0) + ")");
- writeDxfLine("40", "5.0"); // Text height (i.e size)
+ writeDxfLine("40", Double.toString(textHeightSmall)); // Text height (i.e size)
writeDxfLine("50", "45"); // Text rotation angle
writeDxfLine("10", Double.toString(linesX.get(i) * 10.0)); // X coordinate start
writeDxfLine("20", Double.toString(linesY.get(i) * 10.0)); // Y coordinate start
@@ -412,7 +412,7 @@ public void writeFile(String blockName, boolean[] dxfLayerChooser)
}
}
- if (dxfLayerChooser.length > 0 && dxfLayerChooser[0])
+ if (config.getLayers().contains("checkScale"))
{
// Write lines to create a 100 x 100 mm square off to bottom left of pattern
float[] scaleSqX = {-50.0f, -50.0f, 50.0f, 50.0f};
@@ -501,6 +501,4 @@ private void writeAnnotationText(String text)
writeDxfLine("1", text);
currentBaseline -= baselineSkip; // Decrement the text vertical position by the baseline skip
}
-
-
}
diff --git a/src/dxfwriter/DxfFileConfiguration.java b/src/dxfwriter/DxfFileConfiguration.java
new file mode 100644
index 0000000..16828ad
--- /dev/null
+++ b/src/dxfwriter/DxfFileConfiguration.java
@@ -0,0 +1,25 @@
+package dxfwriter;
+
+import java.util.List;
+
+public class DxfFileConfiguration
+{
+ private String timestamp;
+ private List layers;
+
+ public DxfFileConfiguration(String timeStamp, List outputChecks)
+ {
+ this.timestamp = timeStamp;
+ this.layers = outputChecks;
+ }
+
+ public String getTimeStamp()
+ {
+ return timestamp;
+ }
+
+ public List getLayers()
+ {
+ return layers;
+ }
+}
diff --git a/src/gill/SkirtPattern.java b/src/gill/SkirtPattern.java
index 0e800d6..50c5120 100644
--- a/src/gill/SkirtPattern.java
+++ b/src/gill/SkirtPattern.java
@@ -1,11 +1,8 @@
package gill;
-import jblockenums.EGarment;
-import jblockenums.EMethod;
-import jblockexceptions.MeasurementNotFoundException;
-import jblockmain.Block;
-import jblockmain.Measurements;
-import jblockmain.Pattern;
+import jblockenums.EPattern;
+import jblockenums.EUnitType;
+import jblockmain.*;
import mathcontainers.Vector2D;
import java.util.ArrayList;
@@ -13,122 +10,61 @@
public class SkirtPattern
extends Pattern
{
- /* Pattern-specific Measurements */
- private double a_FrWaistArc = 38.6;
- private double b_BkWaistArc = 44.4;
- private double c_FrAbdomenArc = 41.8;
- private double d_BkAbdomenArc = 44.4;
- private double e_BkSeatArc = 52.7;
- private double f_FrHipArc = 44.5;
- private double g_BkHipArc = 53.3;
- private double h_WaistToAbdomen = 10.6;
- private double i_WaistToSeat = 20.6;
- private double j_WaistToHip = 25.6;
- private double k_WaistToKnee = 65.3;
- private double l_SideseamUplift = 0.7;
-
- // Difference between waist and hip
- private double waisthipsuppression;
-
- /* Arbitrary Measurements */
-
- //adjustment for setting the hem level x coordinate - same for everyone
- private double Arb_HemLevelX;
-
- //adjustment for setting the hem level y coordinate - average of many methods
- //will change when more concrete theory is established
- private double Arb_HemLevelY;
-
- // Arb for darts
- private double Arb_FrontDartPlacement;
- private double Arb_BackDartPlacement;
- private double Arb_FrontDartLength;
- private double Arb_BackDartLength;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- /* Methods */
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- public SkirtPattern(Measurements dataStore)
- {
- if (!readMeasurements(dataStore)) return;
- addEasement();
-
- // Populate arbitrary measurements
- Arb_HemLevelX = 6.5;
- Arb_HemLevelY = 5.0;
- Arb_FrontDartPlacement = 2.0 / 3.0;
- Arb_BackDartPlacement = 1.0 / 2.0;
- Arb_FrontDartLength = h_WaistToAbdomen - 1.5;
- Arb_BackDartLength = i_WaistToSeat - 1.5;
-
- // Create the blocks
- createBlocks();
- }
- /* Implement abstract methods from super class */
- @Override
- protected EMethod assignMethod()
+ public SkirtPattern(String userName, InputFileData dataStore, MeasurementSet template)
{
- return EMethod.GILL;
+ super(userName, dataStore, template);
}
+ /* Implement abstract methods from super class */
@Override
- protected EGarment assignGarment()
+ protected EPattern assignPattern()
{
- return EGarment.SKIRT;
+ return EPattern.GILL_SKIRT;
}
@Override
- protected void addEasement()
+ protected void defineRequiredMeasurements() throws Exception
{
- //no easement needed
- }
-
-
- @Override
- protected boolean readMeasurements(Measurements dataStore)
- {
- try
- {
- // Based on measurements for this pattern we can read the following from the scan:
- a_FrWaistArc = dataStore.getMeasurement("A26").value;
- b_BkWaistArc = dataStore.getMeasurement("A27").value;
- c_FrAbdomenArc = dataStore.getMeasurement("A28").value;
- d_BkAbdomenArc = dataStore.getMeasurement("A29").value;
- e_BkSeatArc = dataStore.getMeasurement("A30").value;
- f_FrHipArc = dataStore.getMeasurement("A31").value;
- g_BkHipArc = dataStore.getMeasurement("A32").value;
- h_WaistToAbdomen = dataStore.getMeasurement("A33").value;
- i_WaistToSeat = dataStore.getMeasurement("A34").value;
- j_WaistToHip = dataStore.getMeasurement("A15").value;
- k_WaistToKnee = dataStore.getMeasurement("A14").value;
- l_SideseamUplift = dataStore.getMeasurement("A37").value;
-
- // Get name
- userName = dataStore.getName();
-
- return true;
- }
- catch (MeasurementNotFoundException e)
- {
- addMissingMeasurement(dataStore.getName(), e.getMeasurementId());
- return false;
- }
+ measurements.addMeasurement(new Measurement("a_FrWaistArc", "A26"));
+ measurements.addMeasurement(new Measurement("b_BkWaistArc", "A27"));
+ measurements.addMeasurement(new Measurement("f_FrHipArc", "A31"));
+ measurements.addMeasurement(new Measurement("g_BkHipArc", "A32"));
+ measurements.addMeasurement(new Measurement("h_WaistToAbdomen", "A33"));
+ measurements.addMeasurement(new Measurement("i_WaistToSeat", "A34"));
+ measurements.addMeasurement(new Measurement("j_WaistToHip", "A15"));
+ measurements.addMeasurement(new Measurement("k_WaistToKnee", "A14"));
+ measurements.addMeasurement(new Measurement("l_SideseamUplift", "A37"));
+
+ // Arbitrary
+ measurements.addMeasurement(new Measurement("Arb_HemLevelX", 6.5));
+ measurements.addMeasurement(new Measurement("Arb_HemLevelY", 5.0));
+ measurements.addMeasurement(new Measurement("Arb_FrontDartPlacement", 66, EUnitType.PERCENTAGE));
+ measurements.addMeasurement(new Measurement("Arb_BackDartPlacement", 33, EUnitType.PERCENTAGE));
}
/**
* The actual block creation process following the drafting method of Gill.
*/
@Override
- protected void createBlocks()
+ public void createBlocks()
{
- // Setting waist hip suppression variable
- waisthipsuppression = ((f_FrHipArc + g_BkHipArc) - (a_FrWaistArc + b_BkWaistArc));
-
- if (waisthipsuppression < 0)
- {
- waisthipsuppression = -waisthipsuppression;
- }
+ // Pull from store
+ var a_FrWaistArc = get("a_FrWaistArc");
+ var b_BkWaistArc = get("b_BkWaistArc");
+ var f_FrHipArc = get("f_FrHipArc");
+ var g_BkHipArc = get("g_BkHipArc");
+ var h_WaistToAbdomen = get("h_WaistToAbdomen");
+ var i_WaistToSeat = get("i_WaistToSeat");
+ var j_WaistToHip = get("j_WaistToHip");
+ var k_WaistToKnee = get("k_WaistToKnee");
+ var l_SideseamUplift = get("l_SideseamUplift");
+ var Arb_HemLevelX = get("Arb_HemLevelX");
+ var Arb_HemLevelY = get("Arb_HemLevelY");
+ var Arb_FrontDartPlacement = get("Arb_FrontDartPlacement") / 100.0;
+ var Arb_BackDartPlacement = get("Arb_BackDartPlacement") / 100.0;
+ var Arb_FrontDartLength = get("h_WaistToAbdomen") - 1.5;
+ var Arb_BackDartLength = get("i_WaistToSeat") - 1.5;
// Points that make up the shape are listed in a strict anti-clockwise order to maintain correct connectivity for
// plotting. The bottom left corner of the space to be the origin.
@@ -196,13 +132,13 @@ protected void createBlocks()
}
// Curve between point 10 and point 11
- fullBlock.addCircularCurve(new Vector2D(pointtenif, (maxY - (a_FrWaistArc / 2.0) - 0.35 - frontdartwidth)),
+ fullBlock.addCircularArc(new Vector2D(pointtenif, (maxY - (a_FrWaistArc / 2.0) - 0.35 - frontdartwidth)),
new Vector2D(j_WaistToHip, g_BkHipArc / 2 + Arb_HemLevelY / 4.0),
0.5,
true);
// Curve between point 11 and point 12
- fullBlock.addCircularCurve(new Vector2D(j_WaistToHip, g_BkHipArc / 2 + Arb_HemLevelY / 4.0),
+ fullBlock.addCircularArc(new Vector2D(j_WaistToHip, g_BkHipArc / 2 + Arb_HemLevelY / 4.0),
new Vector2D(pointtwelveif, ((b_BkWaistArc / 2.0) + 0.35 + backdartwidth)),
0.5,
true);
@@ -237,8 +173,8 @@ protected void createBlocks()
fullBlock.addRightAngleCurve(dartEdges.get(2), new Vector2D(0.0, 0.0));
// Add construction keypoints for Abdomen Level
- fullBlock.addConstructionPoint(new Vector2D(h_WaistToAbdomen, 0.0 - Arb_Con), new Vector2D(h_WaistToAbdomen,
- (g_BkHipArc / 2 + Arb_HemLevelY / 4) + (f_FrHipArc / 2 + Arb_HemLevelY / 4) + Arb_Con),
+ fullBlock.addConstructionPoint(new Vector2D(h_WaistToAbdomen, 0.0 - Arb_Con),
+ new Vector2D(h_WaistToAbdomen, (g_BkHipArc / 2 + Arb_HemLevelY / 4) + (f_FrHipArc / 2 + Arb_HemLevelY / 4) + Arb_Con),
"Abdomen");
// Add construction keypoints for Hip Level
@@ -247,8 +183,8 @@ protected void createBlocks()
"Seat");
// Add construction keypoints for Abdomen Level
- fullBlock.addConstructionPoint(new Vector2D(j_WaistToHip, 0.0 - Arb_Con), new Vector2D(j_WaistToHip,
- (g_BkHipArc / 2 + Arb_HemLevelY / 4) + (f_FrHipArc / 2 + Arb_HemLevelY / 4) + Arb_Con),
+ fullBlock.addConstructionPoint(new Vector2D(j_WaistToHip, 0.0 - Arb_Con),
+ new Vector2D(j_WaistToHip, (g_BkHipArc / 2 + Arb_HemLevelY / 4) + (f_FrHipArc / 2 + Arb_HemLevelY / 4) + Arb_Con),
"Hip");
}
}
\ No newline at end of file
diff --git a/src/gill/SweatShirtPattern.java b/src/gill/SweatShirtPattern.java
index aab2970..636837f 100644
--- a/src/gill/SweatShirtPattern.java
+++ b/src/gill/SweatShirtPattern.java
@@ -1,165 +1,93 @@
package gill;
-import jblockenums.EGarment;
-import jblockenums.EMethod;
-import jblockexceptions.MeasurementNotFoundException;
-import jblockmain.Block;
-import jblockmain.Measurements;
-import jblockmain.Pattern;
-import jblockmain.easeMeasurement;
+import jblockenums.EPattern;
+import jblockenums.EUnitType;
+import jblockmain.*;
import mathcontainers.Vector2D;
-import java.util.ArrayList;
import java.util.Collections;
public class SweatShirtPattern
extends Pattern
{
- protected static ArrayList easeMeasurements = new ArrayList<>();
- private double BustChestEase;
- private double BackWidthEase;
- private double CBToUnderArmEase;
- private double NeckWidthEase;
- private double HipCircumEase;
- private double OptionalSoBWaistCircEase;
- private double WristEase;
- private double BackShouldWidthEase;
- private double ChestBustCircumTapeMeasure;
- private double HipCircumTapeMeasure;
- private double NeckCircumference;
- private double CBNeckDepthDefault;
- private double HalfBackCentreTapeMeasure;
- private double WaistToHipLength;
- private double ScyeDepth;
- private double MidNeckBaseWidth;
- private double BackShoulderWidthHorizontal;
- private double LeftShoulderDrop;
- private double RightShoulderDrop;
- private double AcrossBackTapeMeasurement;
- private double OptionalSmallBackWaistTapeMeasure;
- private double ArmLengthLeft;
- private double ArmLengthRight;
- private double WristCircumL;
- private double WristCircumR;
- private double CrownWidthMultiplier;
-
- public SweatShirtPattern(Measurements dataStore)
+ public SweatShirtPattern(String userName, InputFileData dataStore, MeasurementSet template)
{
- if (!readMeasurements(dataStore)) return;
- addEasement();
- createBlocks();
- }
-
- public static void populateEaseMeasurements()
- {
- // Check to see it hasn't already been populated / it is empty so as to not re-write
- if (easeMeasurements.size() > 0)
- {
- return;
- }
- // Add all the ease measurements to the array list with initial values
- easeMeasurements.add(new easeMeasurement("Bust/Chest Ease", 16.0));
- easeMeasurements.add(new easeMeasurement("Back Width Ease", 2.5));
- easeMeasurements.add(new easeMeasurement("CB to Under Arm Ease", 3.0));
- easeMeasurements.add(new easeMeasurement("Neck Width Ease", 1.0));
- easeMeasurements.add(new easeMeasurement("Hip Circ Ease", 12.0));
- easeMeasurements.add(new easeMeasurement("Optional SoB Waist Circ Ease", 18.0));
- easeMeasurements.add(new easeMeasurement("Wrist Ease", 8.0));
- easeMeasurements.add(new easeMeasurement("Back Shoulder Width Horizontal Ease", 0.0));
- easeMeasurements.add(new easeMeasurement("CB Neck Depth Default", 2.0));
- easeMeasurements.add(new easeMeasurement("Crown Height Multiplier (Abs)", 1.0));
- }
-
- public static ArrayList getEaseMeasurement()
- {
- return easeMeasurements;
+ super(userName, dataStore, template);
}
/* Implement abstract methods from super class */
@Override
- protected EMethod assignMethod()
- {
- return EMethod.GILL;
- }
-
- @Override
- protected EGarment assignGarment()
- {
- return EGarment.SWEATSHIRT;
- }
-
- @Override
- protected void addEasement() throws IndexOutOfBoundsException
+ protected EPattern assignPattern()
{
- try
- {
- BustChestEase = easeMeasurements.get(0).getValue();
- BackWidthEase = easeMeasurements.get(1).getValue();
- CBToUnderArmEase = easeMeasurements.get(2).getValue();
- NeckWidthEase = easeMeasurements.get(3).getValue();
- HipCircumEase = easeMeasurements.get(4).getValue();
- OptionalSoBWaistCircEase = easeMeasurements.get(5).getValue();
- WristEase = easeMeasurements.get(6).getValue();
- BackShouldWidthEase = easeMeasurements.get(7).getValue();
- CBNeckDepthDefault = easeMeasurements.get(8).getValue();
- CrownWidthMultiplier = easeMeasurements.get(9).getValue();
- }
- catch (Exception e)
- {
- e.printStackTrace();
- System.out.println("Ease array out of bound");
- }
+ return EPattern.GILL_SWEATSHIRT;
}
@Override
- protected boolean readMeasurements(Measurements dataStore)
+ protected void defineRequiredMeasurements() throws Exception
{
- try
- {
- // Based on measurements for this pattern we can read the following from the scan:
- ChestBustCircumTapeMeasure = dataStore.getMeasurement("A01").value;
- OptionalSmallBackWaistTapeMeasure = dataStore.getMeasurement("A02").value;
- HipCircumTapeMeasure = dataStore.getMeasurement("A03").value;
- HalfBackCentreTapeMeasure = dataStore.getMeasurement("A04").value;
- NeckCircumference = dataStore.getMeasurement("A05").value;
- ScyeDepth = dataStore.getMeasurement("A06").value;
- AcrossBackTapeMeasurement = dataStore.getMeasurement("A09").value;
- WaistToHipLength = dataStore.getMeasurement("A15").value;
- MidNeckBaseWidth = dataStore.getMeasurement("A63").value;
- BackShoulderWidthHorizontal = dataStore.getMeasurement("A64").value;
- LeftShoulderDrop = dataStore.getMeasurement("A65").value;
- RightShoulderDrop = dataStore.getMeasurement("A66").value;
- ArmLengthLeft = dataStore.getMeasurement("A67").value;
- ArmLengthRight = dataStore.getMeasurement("A68").value;
- WristCircumL = dataStore.getMeasurement("A69").value;
- WristCircumR = dataStore.getMeasurement("A70").value;
-
-
- // Get name
- userName = dataStore.getName();
-
- return true;
- }
- catch (MeasurementNotFoundException e)
- {
- addMissingMeasurement(dataStore.getName(), e.getMeasurementId());
- return false;
- }
+ measurements.addMeasurement(new Measurement("ChestBustCircumTapeMeasure", "A01"));
+ measurements.addMeasurement(new Measurement("OptionalSmallBackWaistTapeMeasure", "A02"));
+ measurements.addMeasurement(new Measurement("HalfBackCentreTapeMeasure", "A04"));
+ measurements.addMeasurement(new Measurement("NeckCircumference", "A05"));
+ measurements.addMeasurement(new Measurement("ScyeDepth", "A06"));
+ measurements.addMeasurement(new Measurement("WaistToHipLength", "A15"));
+ measurements.addMeasurement(new Measurement("MidNeckBaseWidth", "A63"));
+ measurements.addMeasurement(new Measurement("BackShoulderWidthHorizontal", "A64"));
+ measurements.addMeasurement(new Measurement("LeftShoulderDrop", "A65"));
+ measurements.addMeasurement(new Measurement("RightShoulderDrop", "A66"));
+ measurements.addMeasurement(new Measurement("ArmLengthLeft", "A67"));
+ measurements.addMeasurement(new Measurement("ArmLengthRight", "A68"));
+ measurements.addMeasurement(new Measurement("WristCircumL", "A69"));
+ measurements.addMeasurement(new Measurement("WristCircumR", "A70"));
+
+ // Arbitrary
+ measurements.addMeasurement(new Measurement("CBNeckDepthDefault", 2.0));
+ measurements.addMeasurement(new Measurement("CrownWidthMultiplier", 1.0, EUnitType.NONE));
+
+ // Ease
+ measurements.addMeasurement(new Measurement("BustChestEase", 16.0));
+ measurements.addMeasurement(new Measurement("CBToUnderArmEase", 3.0));
+ measurements.addMeasurement(new Measurement("NeckWidthEase", 1.0));
+ measurements.addMeasurement(new Measurement("OptionalSoBWaistCircEase", 18.0));
+ measurements.addMeasurement(new Measurement("WristEase", 8.0));
}
/**
* The actual block creation process following the drafting method of Gill.
*/
@Override
- protected void createBlocks()
+ public void createBlocks()
{
+ // Pull from store
+ var BustChestEase = get("BustChestEase");
+ var CBToUnderArmEase = get("CBToUnderArmEase");
+ var NeckWidthEase = get("NeckWidthEase");
+ var OptionalSoBWaistCircEase = get("OptionalSoBWaistCircEase");
+ var WristEase = get("WristEase");
+ var ChestBustCircumTapeMeasure = get("ChestBustCircumTapeMeasure");
+ var NeckCircumference = get("NeckCircumference");
+ var CBNeckDepthDefault = get("CBNeckDepthDefault");
+ var HalfBackCentreTapeMeasure = get("HalfBackCentreTapeMeasure");
+ var WaistToHipLength = get("WaistToHipLength");
+ var ScyeDepth = get("ScyeDepth");
+ var MidNeckBaseWidth = get("MidNeckBaseWidth");
+ var BackShoulderWidthHorizontal = get("BackShoulderWidthHorizontal");
+ var LeftShoulderDrop = get("LeftShoulderDrop");
+ var RightShoulderDrop = get("RightShoulderDrop");
+ var OptionalSmallBackWaistTapeMeasure = get("OptionalSmallBackWaistTapeMeasure");
+ var ArmLengthLeft = get("ArmLengthLeft");
+ var ArmLengthRight = get("ArmLengthRight");
+ var WristCircumL = get("WristCircumL");
+ var WristCircumR = get("WristCircumR");
+ var CrownWidthMultiplier = get("CrownWidthMultiplier");
+
Block backBlock = new Block(userName + "_Gill_Back_SweatShirt_Block");
blocks.add(backBlock);
// Conditional to set a position based on large of 2 values
- double largestShoulderDrop = LeftShoulderDrop > RightShoulderDrop ? LeftShoulderDrop : RightShoulderDrop;
- double largestArmLength = ArmLengthLeft > ArmLengthRight ? ArmLengthLeft : ArmLengthRight;
- double largestWristCircum = WristCircumL > WristCircumR ? WristCircumL : WristCircumR;
+ double largestShoulderDrop = Math.max(LeftShoulderDrop, RightShoulderDrop);
+ double largestArmLength = Math.max(ArmLengthLeft, ArmLengthRight);
+ double largestWristCircum = Math.max(WristCircumL, WristCircumR);
// All of the keypoints added in as Vectors
Vector2D point1 = new Vector2D(CBNeckDepthDefault, 0.0);
@@ -183,12 +111,12 @@ protected void createBlocks()
backBlock.addQuadraticBezierCurve(point5, new Vector2D(point5.getX(), point6.getY()), point6);
- backBlock.addDirectedCurve(point6, point7,
+ backBlock.addDirectedCubicSpline(point6, point7,
new Vector2D(-1.0, 0.0),
new Vector2D(point8.subtract(point7)),
new double[]{0.0, 90.0});
- backBlock.addDirectedCurve(point8, point1, new double[]{90.0, 90.0});
+ backBlock.addDirectedCubicSpline(point8, point1, new double[]{90.0, 90.0});
// Get the max and min y with a small additional buffer of 5cm for the construction lines
double maxY = Collections.max(backBlock.getPlottableKeypointsY()) + 5.0;
@@ -219,12 +147,12 @@ protected void createBlocks()
frontBlock.addQuadraticBezierCurve(point13, new Vector2D(point13.getX(), point14.getY()), point14);
- frontBlock.addDirectedCurve(point14, point15,
+ frontBlock.addDirectedCubicSpline(point14, point15,
new Vector2D(-1.0, 0.0),
new Vector2D(point8.subtract(point15)),
new double[]{0.0, 90.0});
- frontBlock.addDirectedCurveWithApexTangent(point16, point9, new Vector2D(point9.getX(), point16.getY()),
+ frontBlock.addDirectedCubicSplineWithApexTangent(point16, point9, new Vector2D(point9.getX(), point16.getY()),
Math.sqrt(point9.getX() - point16.getX()), new double[]{90.0, 90.0},
new int[]{-1, -1});
@@ -321,12 +249,12 @@ protected void createBlocks()
sleeveBlock.addKeypoint(internalPoint9_10);
sleeveBlock.addKeypoint(point10);
- sleeveBlock.addCircularCurve(internalPoint8_9, internalPoint9_10,
+ sleeveBlock.addCircularArc(internalPoint8_9, internalPoint9_10,
(point9.getX() - (internalPoint8_9.getX())),
false, true);
- sleeveBlock.addDirectedCurve(point7, point8, new double[]{90.0, 0.0});
- sleeveBlock.addDirectedCurve(point10, point1, new double[]{0.0, 90.0});
+ sleeveBlock.addDirectedCubicSpline(point7, point8, new double[]{90.0, 0.0});
+ sleeveBlock.addDirectedCubicSpline(point10, point1, new double[]{0.0, 90.0});
maxY = Collections.max(sleeveBlock.getPlottableKeypointsY()) + 5.0;
minY = Collections.min(sleeveBlock.getPlottableKeypointsY()) - 5.0;
@@ -365,6 +293,7 @@ protected void createBlocks()
point15 = point10;
point10 = point7;
point13 = point9;
+
// A lot of similarities as above sleeve pattern, explicitly written down for readability
point1 = point1;
double sleeveWidth = point10.getY() - point1.getY();
@@ -396,12 +325,12 @@ protected void createBlocks()
sleeveBlockTwo.addKeypoint(internalPoint8_9);
sleeveBlockTwo.addKeypoint(point7);
- sleeveBlockTwo.addCircularCurve(internalPoint8_9, internalPoint9_10,
+ sleeveBlockTwo.addCircularArc(internalPoint8_9, internalPoint9_10,
point13.getX() - internalPoint8_9.getX(),
false, true);
- sleeveBlockTwo.addDirectedCurve(point10, point11, new double[]{90.0, 0.0});
- sleeveBlockTwo.addDirectedCurve(point15, point1, new double[]{0.0, 90.0});
+ sleeveBlockTwo.addDirectedCubicSpline(point10, point11, new double[]{90.0, 0.0});
+ sleeveBlockTwo.addDirectedCubicSpline(point15, point1, new double[]{0.0, 90.0});
sleeveBlockTwo.addConstructionPoint(new Vector2D(point13.getX(), minY), new Vector2D(point13.getX(), maxY),
diff --git a/src/gill/TrouserPattern.java b/src/gill/TrouserPattern.java
index 2d2a7f9..0dd015b 100644
--- a/src/gill/TrouserPattern.java
+++ b/src/gill/TrouserPattern.java
@@ -1,12 +1,7 @@
package gill;
-import jblockenums.EGarment;
-import jblockenums.EMethod;
-import jblockexceptions.MeasurementNotFoundException;
-import jblockmain.Block;
-import jblockmain.Measurements;
-import jblockmain.Pattern;
-import jblockmain.easeMeasurement;
+import jblockenums.EPattern;
+import jblockmain.*;
import mathcontainers.Vector2D;
import java.util.ArrayList;
@@ -14,153 +9,75 @@
public class TrouserPattern
extends Pattern
{
- protected static ArrayList easeMeasurements = new ArrayList<>();
- /* Pattern-specific Measurements */
- private double a_WaistToHip; // Measurement [015]
- private double b_ThighCircR; // Measurement [017]
- private double c_KneeCircR; // Measurement [018]
- private double d_AnkleCircleR; // Measurement [019]
- private double e_FrWaistArc; // Measurement [026]
- private double f_BkWaistArc; // Measurement [027]
- private double g_BkSeatArc; // Measurement [030]
- private double h_FrHipArc; // Measurement [031]
- private double i_BkHipArc; // Measurement [032]
- private double j_WaistToSeat; // Measurement [034]
- private double k_BodyRise; // Measurement [038]
- private double l_AnkleCRHeight; // Measurement [041]
- private double m_KneeCRHeight; // Measurement [042]
- private double n_CrotchHeight; // Measurement [043]
- private double o_HipCHeight; // Measurement [044]
- private double p_SeatCHeight; // Measurement [045]
- private double q_FrSeatArc; // Measurement [046]
- private double r_CrotchZ; // Measurement [047]
- private double s_HipFrZ; // Measurement [048]
- private double t_HipBkZ; // Measurement [049]
- private double u_SeatFrZ; // Measurement [050]
- private double v_SeatBkZ; // Measurement [051]
- private double w_WaistFrZ; // Measurement [052]
- private double x_WaistBkZ; // Measurement [053]
- private double y_FrCrotchLength; // Measurement [054]
-
- /* Arbitrary Measurements */
- private double z_BkCrotchLength; // Measurement [055]
- // Arb measurement for 2 inches in centimetres
- private double Arb_TwoInches;
- // Arb measurement for the crotch
- private double Arb_CrotchPointFive;
- // Arb measurement for back hem drop
- private double Arb_BkHemDrop;
- // Arb measurement for the crotch reduction
- private double Arb_CrotchReduction;
- // Arb measurements for the back dart
- private double Arb_BackDartWidth;
- private double Arb_BackDartLength;
- // Arb measurements for the back dart
- private double Arb_FrontDartWidth;
- private double Arb_FrontDartLength;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- /* Methods */
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- public TrouserPattern(Measurements dataStore)
+ public TrouserPattern(String userName, InputFileData dataStore, MeasurementSet template)
{
- if (!readMeasurements(dataStore)) return;
- addEasement();
-
- // Populate arbitrary measurements
- Arb_TwoInches = 5.08;
- Arb_CrotchPointFive = 0.5;
- Arb_BkHemDrop = 1.0;
- Arb_CrotchReduction = 5.0;
-
- // Create the blocks
- createBlocks();
- }
-
- public static void populateEaseMeasurements()
- {
- // Check to see it hasn't already been populated / it is empty
- if (easeMeasurements.size() > 0)
- {
- return;
- }
- }
-
- public static ArrayList getEaseMeasurement()
- {
- return easeMeasurements;
+ super(userName, dataStore, template);
}
/* Implement abstract methods from super class */
@Override
- protected EMethod assignMethod()
+ protected EPattern assignPattern()
{
- return EMethod.GILL;
+ return EPattern.GILL_TROUSER;
}
@Override
- protected EGarment assignGarment()
+ protected void defineRequiredMeasurements() throws Exception
{
- return EGarment.TROUSER;
- }
-
- @Override
- protected void addEasement()
- {
- // No easement needed
- }
-
- @Override
- protected boolean readMeasurements(Measurements dataStore)
- {
- try
- {
- // Based on measurements for this pattern we can read the following from the scan
- a_WaistToHip = dataStore.getMeasurement("A15").value; // Measurement [015]
- b_ThighCircR = dataStore.getMeasurement("A17").value; // Measurement [017]
- c_KneeCircR = dataStore.getMeasurement("A18").value; // Measurement [018]
- d_AnkleCircleR = dataStore.getMeasurement("A19").value; // Measurement [019]
- e_FrWaistArc = dataStore.getMeasurement("A26").value; // Measurement [026]
- f_BkWaistArc = dataStore.getMeasurement("A27").value; // Measurement [027]
- g_BkSeatArc = dataStore.getMeasurement("A30").value; // Measurement [030]
- h_FrHipArc = dataStore.getMeasurement("A31").value; // Measurement [031]
- i_BkHipArc = dataStore.getMeasurement("A32").value; // Measurement [032]
- j_WaistToSeat = dataStore.getMeasurement("A34").value; // Measurement [034]
- k_BodyRise = dataStore.getMeasurement("A38").value; // Measurement [038]
- l_AnkleCRHeight = dataStore.getMeasurement("A41").value; // Measurement [041]
- m_KneeCRHeight = dataStore.getMeasurement("A42").value; // Measurement [042]
- n_CrotchHeight = dataStore.getMeasurement("A43").value; // Measurement [043]
- o_HipCHeight = dataStore.getMeasurement("A44").value; // Measurement [044]
- p_SeatCHeight = dataStore.getMeasurement("A45").value; // Measurement [045]
- q_FrSeatArc = dataStore.getMeasurement("A46").value; // Measurement [046]
- r_CrotchZ = dataStore.getMeasurement("A47").value; // Measurement [047]
- s_HipFrZ = dataStore.getMeasurement("A48").value; // Measurement [048]
- t_HipBkZ = dataStore.getMeasurement("A49").value; // Measurement [049]
- u_SeatFrZ = dataStore.getMeasurement("A50").value; // Measurement [050]
- v_SeatBkZ = dataStore.getMeasurement("A51").value; // Measurement [051]
- w_WaistFrZ = dataStore.getMeasurement("A52").value; // Measurement [052]
- x_WaistBkZ = dataStore.getMeasurement("A53").value; // Measurement [053]
- y_FrCrotchLength = dataStore.getMeasurement("A54").value; // Measurement [054]
- z_BkCrotchLength = dataStore.getMeasurement("A55").value; // Measurement [055]
-
- // Get name
- userName = dataStore.getName();
-
- return true;
- }
- catch (MeasurementNotFoundException e)
- {
- addMissingMeasurement(dataStore.getName(), e.getMeasurementId());
- return false;
- }
+ measurements.addMeasurement(new Measurement("c_KneeCircR", "A18"));
+ measurements.addMeasurement(new Measurement("d_AnkleCircleR", "A19"));
+ measurements.addMeasurement(new Measurement("e_FrWaistArc", "A26"));
+ measurements.addMeasurement(new Measurement("f_BkWaistArc", "A27"));
+ measurements.addMeasurement(new Measurement("g_BkSeatArc", "A30"));
+ measurements.addMeasurement(new Measurement("h_FrHipArc", "A31"));
+ measurements.addMeasurement(new Measurement("i_BkHipArc", "A32"));
+ measurements.addMeasurement(new Measurement("j_WaistToSeat", "A34"));
+ measurements.addMeasurement(new Measurement("k_BodyRise", "A38"));
+ measurements.addMeasurement(new Measurement("l_AnkleCRHeight", "A41"));
+ measurements.addMeasurement(new Measurement("m_KneeCRHeight", "A42"));
+ measurements.addMeasurement(new Measurement("n_CrotchHeight", "A43"));
+ measurements.addMeasurement(new Measurement("o_HipCHeight", "A44"));
+ measurements.addMeasurement(new Measurement("p_SeatCHeight", "A45"));
+ measurements.addMeasurement(new Measurement("q_FrSeatArc", "A46"));
+ measurements.addMeasurement(new Measurement("r_CrotchZ", "A47"));
+ measurements.addMeasurement(new Measurement("s_HipFrZ", "A48"));
+ measurements.addMeasurement(new Measurement("t_HipBkZ", "A49"));
+ measurements.addMeasurement(new Measurement("u_SeatFrZ", "A50"));
+ measurements.addMeasurement(new Measurement("v_SeatBkZ", "A51"));
+ measurements.addMeasurement(new Measurement("w_WaistFrZ", "A52"));
+ measurements.addMeasurement(new Measurement("x_WaistBkZ", "A53"));
}
/**
* The actual block creation process following the drafting method of Gill.
*/
@Override
- protected void createBlocks()
+ public void createBlocks()
{
+ // Pull from store
+ var c_KneeCircR = get("c_KneeCircR");
+ var d_AnkleCircleR = get("d_AnkleCircleR");
+ var e_FrWaistArc = get("e_FrWaistArc");
+ var f_BkWaistArc = get("f_BkWaistArc");
+ var g_BkSeatArc = get("g_BkSeatArc");
+ var h_FrHipArc = get("h_FrHipArc");
+ var i_BkHipArc = get("i_BkHipArc");
+ var j_WaistToSeat = get("j_WaistToSeat");
+ var k_BodyRise = get("k_BodyRise");
+ var l_AnkleCRHeight = get("l_AnkleCRHeight");
+ var m_KneeCRHeight = get("m_KneeCRHeight");
+ var n_CrotchHeight = get("n_CrotchHeight");
+ var o_HipCHeight = get("o_HipCHeight");
+ var p_SeatCHeight = get("p_SeatCHeight");
+ var q_FrSeatArc = get("q_FrSeatArc");
+ var r_CrotchZ = get("r_CrotchZ");
+ var s_HipFrZ = get("s_HipFrZ");
+ var t_HipBkZ = get("t_HipBkZ");
+ var u_SeatFrZ = get("u_SeatFrZ");
+ var v_SeatBkZ = get("v_SeatBkZ");
+ var w_WaistFrZ = get("w_WaistFrZ");
+ var x_WaistBkZ = get("x_WaistBkZ");
+
// Points that make up the shape are listed in a strict anti-clockwise order to maintain correct connectivity for
// plotting. The crotch point is the origin
@@ -308,27 +225,27 @@ protected void createBlocks()
point1.getY() + ((point2.getY() - point1.getY()) * 0.75));
// A bunch of curves
- fullBlock.addDirectedCurve(
+ fullBlock.addDirectedCubicSpline(
point1, point2,
new Vector2D(point1and2.subtract(point1)),
new Vector2D(point3.subtract(point2)),
new double[]{0.0, 0.0});
- fullBlock.addCircularCurve(point3, point5, 1.0, true);
+ fullBlock.addCircularArc(point3, point5, 1.0, true);
- fullBlock.addDirectedCurve(
+ fullBlock.addDirectedCubicSpline(
point6, point7,
new Vector2D(point6.subtract(point5)),
new Vector2D(point8.subtract(point7)),
new double[]{0.0, 0.0});
- fullBlock.addCircularCurve(
+ fullBlock.addCircularArc(
point9, point10,
(point10.getY() - (new Vector2D(point9.add(point10.subtract(point9).divide(2.0)))).getY()) / 2.0,
false);
- Arb_BackDartWidth = (0.32 * (((h_FrHipArc + i_BkHipArc) / 2.0) - ((e_FrWaistArc + f_BkWaistArc) / 2.0)));
- Arb_BackDartLength = j_WaistToSeat - 5.0;
+ var Arb_BackDartWidth = (0.32 * (((h_FrHipArc + i_BkHipArc) / 2.0) - ((e_FrWaistArc + f_BkWaistArc) / 2.0)));
+ var Arb_BackDartLength = j_WaistToSeat - 5.0;
ArrayList dartPoints = fullBlock.addDart(
point10, point11,
0.5,
@@ -340,18 +257,18 @@ protected void createBlocks()
fullBlock.addRightAngleCurve(point10, dartPoints.get(0));
fullBlock.addRightAngleCurve(dartPoints.get(2), point11);
- fullBlock.addDirectedCurve(
+ fullBlock.addDirectedCubicSpline(
point13, point1,
new Vector2D(point12.subtract(point11)),
new Vector2D(point1and2.subtract(point1)),
new double[]{0.0, 90.0});
- fullBlock.addCircularCurve(
+ fullBlock.addCircularArc(
point19, point20,
(point20.getY() - (new Vector2D(point19.add(point20.subtract(point19).divide(2.0)))).getY()) / 2.0,
false);
- fullBlock.addDirectedCurve(
+ fullBlock.addDirectedCubicSpline(
point22, point23,
new Vector2D(1.0, 0.0),
new Vector2D(point24.subtract(point23)), new double[]{0.0, 0.0});
@@ -361,23 +278,23 @@ protected void createBlocks()
Vector2D point26and15 = new Vector2D((point15.getX() + (point26.getX()
- point15.getX())) / 3.0, point15.getY() + ((point26.getY() - point15.getY()) * 0.75));
- fullBlock.addDirectedCurve(
+ fullBlock.addDirectedCubicSpline(
point26, point15,
new Vector2D(point26.subtract(point25)),
new Vector2D(point15.subtract(point26and15)), new double[]{0.0, 0.0});
- fullBlock.addDirectedCurve(
+ fullBlock.addDirectedCubicSpline(
point15, point16,
new Vector2D(point15.subtract(point26and15)),
new Vector2D(point18.subtract(point16)), new double[]{90.0, 0.0});
- Arb_FrontDartWidth = (0.18 * (((h_FrHipArc + i_BkHipArc) / 2.0) - ((e_FrWaistArc + f_BkWaistArc) / 2.0)));
- Arb_FrontDartLength = j_WaistToSeat - 1.5;
+ var Arb_FrontDartWidth = (0.18 * (((h_FrHipArc + i_BkHipArc) / 2.0) - ((e_FrWaistArc + f_BkWaistArc) / 2.0)));
+ var Arb_FrontDartLength = j_WaistToSeat - 1.5;
ArrayList dartPoints2 = fullBlock.addDart(
point18, point19,
0.3,
- Arb_BackDartWidth,
- Arb_BackDartLength,
+ Arb_FrontDartWidth,
+ Arb_FrontDartLength,
true, false);
fullBlock.addRightAngleCurve(point18, dartPoints2.get(0));
diff --git a/src/gill/TrouserPatternThree.java b/src/gill/TrouserPatternThree.java
new file mode 100644
index 0000000..a67d3c4
--- /dev/null
+++ b/src/gill/TrouserPatternThree.java
@@ -0,0 +1,200 @@
+package gill;
+
+import jblockenums.EPattern;
+import jblockenums.EUnitType;
+import jblockmain.*;
+import mathcontainers.Vector2D;
+
+import java.util.ArrayList;
+import java.util.Collections;
+
+public class TrouserPatternThree
+ extends Pattern
+{
+ public TrouserPatternThree(String userName, InputFileData dataStore, MeasurementSet template)
+ {
+ super(userName, dataStore, template);
+ }
+
+ /* Implement abstract methods from super class */
+ @Override
+ protected EPattern assignPattern()
+ {
+ return EPattern.GILL_TROUSER3;
+ }
+
+ @Override
+ protected void defineRequiredMeasurements() throws Exception
+ {
+ measurements.addMeasurement(new Measurement("optSmallBackWaistTapeMeasure", "A02"));
+ measurements.addMeasurement(new Measurement("thighCircumR", "A17"));
+ measurements.addMeasurement(new Measurement("kneeCircumR", "A18"));
+ measurements.addMeasurement(new Measurement("ankleCircumR", "A19"));
+ measurements.addMeasurement(new Measurement("frontAbdomenArc", "A28"));
+ measurements.addMeasurement(new Measurement("backAbdomenArc", "A29"));
+ measurements.addMeasurement(new Measurement("backSeatArc", "A30"));
+ measurements.addMeasurement(new Measurement("waistToAbdomen", "A33"));
+ measurements.addMeasurement(new Measurement("waistToSeat", "A34"));
+ measurements.addMeasurement(new Measurement("bodyRise", "A38"));
+ measurements.addMeasurement(new Measurement("seatDepth", "A39"));
+ measurements.addMeasurement(new Measurement("ankleCircumHeightR", "A41"));
+ measurements.addMeasurement(new Measurement("kneeCircumHeightR", "A42"));
+ measurements.addMeasurement(new Measurement("seatCircumHeight", "A45"));
+ measurements.addMeasurement(new Measurement("frontSeatArc", "A46"));
+ measurements.addMeasurement(new Measurement("calfCircumR", "A85"));
+ measurements.addMeasurement(new Measurement("calfCircumRHeight", "A86"));
+ measurements.addMeasurement(new Measurement("midThighCircumR", "A87"));
+ measurements.addMeasurement(new Measurement("midThighCircumRHeight", "A88"));
+ measurements.addMeasurement(new Measurement("minLowerLegCircumR", "A89"));
+ measurements.addMeasurement(new Measurement("minLowerLegCircumRHeight", "A90"));
+ measurements.addMeasurement(new Measurement("crotchCircumMinus1cm", "A91"));
+ measurements.addMeasurement(new Measurement("thighCircumRHeight", "A92"));
+
+ // Arbitrary
+ measurements.addMeasurement(new Measurement("Arb_FrontLegPercent", 24, EUnitType.PERCENTAGE));
+ measurements.addMeasurement(new Measurement("Arb_BackLegPercent", 26, EUnitType.PERCENTAGE));
+ measurements.addMeasurement(new Measurement("Arb_FrontCrotchExtPercent", 38, EUnitType.PERCENTAGE));
+ measurements.addMeasurement(new Measurement("Arb_CFSeatToCreaseLinePercent", 9.45, EUnitType.PERCENTAGE));
+ measurements.addMeasurement(new Measurement("Arb_CBSeatToCreaseLinePercent", 8.42, EUnitType.PERCENTAGE));
+ }
+
+ @Override
+ public void createBlocks()
+ {
+ // Pull from store
+ var optSmallBackWaistTapeMeasure = get("optSmallBackWaistTapeMeasure");
+ var thighCircumR = get("thighCircumR");
+ var kneeCircumR = get("kneeCircumR");
+ var ankleCircumR = get("ankleCircumR");
+ var frontAbdomenArc = get("frontAbdomenArc");
+ var backAbdomenArc = get("backAbdomenArc");
+ var backSeatArc = get("backSeatArc");
+ var waistToAbdomen = get("waistToAbdomen");
+ var waistToSeat = get("waistToSeat");
+ var bodyRise = get("bodyRise");
+ var seatDepth = get("seatDepth");
+ var ankleCircumHeightR = get("ankleCircumHeightR");
+ var kneeCircumHeightR = get("kneeCircumHeightR");
+ var seatCircumHeight = get("seatCircumHeight");
+ var frontSeatArc = get("frontSeatArc");
+ var calfCircumR = get("calfCircumR");
+ var calfCircumRHeight = get("calfCircumRHeight");
+ var midThighCircumR = get("midThighCircumR");
+ var midThighCircumRHeight = get("midThighCircumRHeight");
+ var minLowerLegCircumR = get("minLowerLegCircumR");
+ var minLowerLegCircumRHeight = get("minLowerLegCircumRHeight");
+ var crotchCircumMinus1cm = get("crotchCircumMinus1cm");
+ var thighCircumRHeight = get("thighCircumRHeight");
+
+ // Arbitrary
+ var arbFrontLegPercent = get("Arb_FrontLegPercent") / 100;
+ var arbBackLegPercent = get("Arb_BackLegPercent") / 100;
+ var arbFrontCrotchExtPercent = get("Arb_FrontCrotchExtPercent") / 100;
+ var arbCFSeatToCreaseLinePercent = get("Arb_CFSeatToCreaseLinePercent") / 100;
+ var arbCBSeatToCreaseLinePercent = get("Arb_CBSeatToCreaseLinePercent") / 100;
+
+ // Define levels
+ var waistLevel = waistToSeat;
+ var abdomenLevel = waistToSeat - waistToAbdomen;
+ var seatLevel = 0;
+ var crotchLevel = waistToSeat - bodyRise;
+ var upperThighLevel = thighCircumRHeight - seatCircumHeight;
+ var midThighLevel = midThighCircumRHeight - seatCircumHeight;
+ var kneeLevel = kneeCircumHeightR - seatCircumHeight;
+ var calfLevel = calfCircumRHeight - seatCircumHeight;
+ var lowerLegLevel = minLowerLegCircumRHeight - seatCircumHeight;
+ var ankleLevel = ankleCircumHeightR - seatCircumHeight;
+
+ // Build block
+ Block frontBlock = new Block(userName + "_Gill_FrontBlock");
+ blocks.add(frontBlock);
+
+ // Add points
+ var point1X = (frontSeatArc + backSeatArc) * arbCFSeatToCreaseLinePercent;
+ frontBlock.addKeypoint(new Vector2D(point1X, seatLevel)); // Point 1
+ frontBlock.addKeypoint(new Vector2D(point1X, abdomenLevel)); // Point 2
+ frontBlock.addKeypoint(new Vector2D(point1X, waistLevel)); // Point 3
+ frontBlock.addKeypoint(new Vector2D(((frontSeatArc + backSeatArc) * arbCFSeatToCreaseLinePercent) - (optSmallBackWaistTapeMeasure * 0.25), waistLevel)); // Point 4
+ frontBlock.addKeypoint(new Vector2D(((frontSeatArc + backSeatArc) * arbCFSeatToCreaseLinePercent) - ((frontAbdomenArc + backAbdomenArc) * 0.25), abdomenLevel)); // Point 5
+ var point6X = ((frontSeatArc + backSeatArc) * arbCFSeatToCreaseLinePercent) - ((frontSeatArc + backSeatArc) * 0.25);
+ frontBlock.addKeypoint(new Vector2D(point6X, seatLevel)); // Point 6
+ frontBlock.addKeypoint(new Vector2D(point6X, crotchLevel)); // Point 7
+ var point22X = point1X + (seatDepth * arbFrontCrotchExtPercent);
+ var temp = (crotchCircumMinus1cm / 2) - (-point6X + point22X);
+ if (temp > 0) frontBlock.addKeypoint(new Vector2D(point6X - temp, crotchLevel)); // Point 8
+ frontBlock.addKeypoint(new Vector2D(-thighCircumR * arbFrontLegPercent, upperThighLevel)); // Point 9
+ frontBlock.addKeypoint(new Vector2D(-midThighCircumR * arbFrontLegPercent, midThighLevel)); // Point 10
+ frontBlock.addKeypoint(new Vector2D(-kneeCircumR * arbFrontLegPercent, kneeLevel)); // Point 11
+ frontBlock.addKeypoint(new Vector2D(-calfCircumR * arbFrontLegPercent, calfLevel)); // Point 12
+ frontBlock.addKeypoint(new Vector2D(-minLowerLegCircumR * arbFrontLegPercent, lowerLegLevel)); // Point 13
+ frontBlock.addKeypoint(new Vector2D(-ankleCircumR * arbFrontLegPercent, ankleLevel)); // Point 14
+ frontBlock.addKeypoint(new Vector2D(ankleCircumR * arbFrontLegPercent, ankleLevel)); // Point 15
+ frontBlock.addKeypoint(new Vector2D(minLowerLegCircumR * arbFrontLegPercent, lowerLegLevel)); // Point 16
+ frontBlock.addKeypoint(new Vector2D(calfCircumR * arbFrontLegPercent, calfLevel)); // Point 17
+ frontBlock.addKeypoint(new Vector2D(kneeCircumR * arbFrontLegPercent, kneeLevel)); // Point 18
+ frontBlock.addKeypoint(new Vector2D(midThighCircumR * arbFrontLegPercent, midThighLevel)); // Point 19
+ frontBlock.addKeypoint(new Vector2D(thighCircumR * arbFrontLegPercent, upperThighLevel)); // Point 20
+ frontBlock.addKeypoint(new Vector2D(point1X, crotchLevel)); // Point 21
+ frontBlock.addKeypoint(new Vector2D(point22X, crotchLevel)); // Point 22
+
+ // Add construction lines
+ var xMin = frontBlock.getMinimumX() - Arb_Con;
+ var xMax = frontBlock.getMaximumX() + Arb_Con;
+ frontBlock.addConstructionPoint(new Vector2D(xMin, waistLevel), new Vector2D(xMax, waistLevel), "Waist Level");
+ frontBlock.addConstructionPoint(new Vector2D(xMin, abdomenLevel), new Vector2D(xMax, abdomenLevel), "Abdomen Level");
+ frontBlock.addConstructionPoint(new Vector2D(xMin, seatLevel), new Vector2D(xMax, seatLevel), "Seat Level");
+ frontBlock.addConstructionPoint(new Vector2D(xMin, crotchLevel), new Vector2D(xMax, crotchLevel), "Crotch Level");
+ frontBlock.addConstructionPoint(new Vector2D(xMin, upperThighLevel), new Vector2D(xMax, upperThighLevel), "Upper Thigh Level");
+ frontBlock.addConstructionPoint(new Vector2D(xMin, midThighLevel), new Vector2D(xMax, midThighLevel), "Mid Thigh Level");
+ frontBlock.addConstructionPoint(new Vector2D(xMin, kneeLevel), new Vector2D(xMax, kneeLevel), "Knee Level");
+ frontBlock.addConstructionPoint(new Vector2D(xMin, calfLevel), new Vector2D(xMax, calfLevel), "Calf Level");
+ frontBlock.addConstructionPoint(new Vector2D(xMin, lowerLegLevel), new Vector2D(xMax, lowerLegLevel), "Lower Leg Level");
+ frontBlock.addConstructionPoint(new Vector2D(xMin, ankleLevel), new Vector2D(xMax, ankleLevel), "Ankle Level");
+
+ // Build block
+ Block backBlock = new Block(userName + "_Gill_backBlock");
+ blocks.add(backBlock);
+
+ // Add points
+ point1X = (frontSeatArc + backSeatArc) * arbCBSeatToCreaseLinePercent;
+ backBlock.addKeypoint(new Vector2D(-point1X, seatLevel)); // Point 1
+ backBlock.addKeypoint(new Vector2D(-point1X, abdomenLevel)); // Point 2
+ backBlock.addKeypoint(new Vector2D(-point1X, waistLevel)); // Point 3
+ backBlock.addKeypoint(new Vector2D(((optSmallBackWaistTapeMeasure * 0.25) - (frontSeatArc + backSeatArc) * arbCBSeatToCreaseLinePercent), waistLevel)); // Point 4
+ backBlock.addKeypoint(new Vector2D((((frontAbdomenArc + backAbdomenArc) * 0.25) - (frontSeatArc + backSeatArc) * arbCBSeatToCreaseLinePercent), abdomenLevel)); // Point 5
+ point6X = (((frontSeatArc + backSeatArc) * 0.25 - (frontSeatArc + backSeatArc) * arbCBSeatToCreaseLinePercent));
+ backBlock.addKeypoint(new Vector2D(point6X, seatLevel)); // Point 6
+ backBlock.addKeypoint(new Vector2D(point6X, crotchLevel)); // Point 7
+ point22X = point1X + (seatDepth * arbFrontCrotchExtPercent);
+ temp = (crotchCircumMinus1cm / 2) - (point6X + point22X);
+ if (temp > 0) backBlock.addKeypoint(new Vector2D(temp - point6X, crotchLevel)); // Point 8
+ backBlock.addKeypoint(new Vector2D(thighCircumR * arbBackLegPercent, upperThighLevel)); // Point 9
+ backBlock.addKeypoint(new Vector2D(midThighCircumR * arbBackLegPercent, midThighLevel)); // Point 10
+ backBlock.addKeypoint(new Vector2D(kneeCircumR * arbBackLegPercent, kneeLevel)); // Point 11
+ backBlock.addKeypoint(new Vector2D(calfCircumR * arbBackLegPercent, calfLevel)); // Point 12
+ backBlock.addKeypoint(new Vector2D(minLowerLegCircumR * arbBackLegPercent, lowerLegLevel)); // Point 13
+ backBlock.addKeypoint(new Vector2D(ankleCircumR * arbBackLegPercent, ankleLevel)); // Point 14
+ backBlock.addKeypoint(new Vector2D(-ankleCircumR * arbBackLegPercent, ankleLevel)); // Point 15
+ backBlock.addKeypoint(new Vector2D(-minLowerLegCircumR * arbBackLegPercent, lowerLegLevel)); // Point 16
+ backBlock.addKeypoint(new Vector2D(-calfCircumR * arbBackLegPercent, calfLevel)); // Point 17
+ backBlock.addKeypoint(new Vector2D(-kneeCircumR * arbBackLegPercent, kneeLevel)); // Point 18
+ backBlock.addKeypoint(new Vector2D(-midThighCircumR * arbBackLegPercent, midThighLevel)); // Point 19
+ backBlock.addKeypoint(new Vector2D(-thighCircumR * arbBackLegPercent, upperThighLevel)); // Point 20
+ backBlock.addKeypoint(new Vector2D(-point1X, crotchLevel)); // Point 21
+ backBlock.addKeypoint(new Vector2D(-point22X, crotchLevel)); // Point 22
+
+ // Add construction lines
+ xMin = backBlock.getMinimumX() - Arb_Con;
+ xMax = backBlock.getMaximumX() + Arb_Con;
+ backBlock.addConstructionPoint(new Vector2D(xMin, waistLevel), new Vector2D(xMax, waistLevel), "Waist Level");
+ backBlock.addConstructionPoint(new Vector2D(xMin, abdomenLevel), new Vector2D(xMax, abdomenLevel), "Abdomen Level");
+ backBlock.addConstructionPoint(new Vector2D(xMin, seatLevel), new Vector2D(xMax, seatLevel), "Seat Level");
+ backBlock.addConstructionPoint(new Vector2D(xMin, crotchLevel), new Vector2D(xMax, crotchLevel), "Crotch Level");
+ backBlock.addConstructionPoint(new Vector2D(xMin, upperThighLevel), new Vector2D(xMax, upperThighLevel), "Upper Thigh Level");
+ backBlock.addConstructionPoint(new Vector2D(xMin, midThighLevel), new Vector2D(xMax, midThighLevel), "Mid Thigh Level");
+ backBlock.addConstructionPoint(new Vector2D(xMin, kneeLevel), new Vector2D(xMax, kneeLevel), "Knee Level");
+ backBlock.addConstructionPoint(new Vector2D(xMin, calfLevel), new Vector2D(xMax, calfLevel), "Calf Level");
+ backBlock.addConstructionPoint(new Vector2D(xMin, lowerLegLevel), new Vector2D(xMax, lowerLegLevel), "Lower Leg Level");
+ backBlock.addConstructionPoint(new Vector2D(xMin, ankleLevel), new Vector2D(xMax, ankleLevel), "Ankle Level");
+ }
+}
\ No newline at end of file
diff --git a/src/gill/TrouserPatternTwo.java b/src/gill/TrouserPatternTwo.java
index 1a54a0f..05c0bba 100644
--- a/src/gill/TrouserPatternTwo.java
+++ b/src/gill/TrouserPatternTwo.java
@@ -1,12 +1,7 @@
package gill;
-import jblockenums.EGarment;
-import jblockenums.EMethod;
-import jblockexceptions.MeasurementNotFoundException;
-import jblockmain.Block;
-import jblockmain.Measurements;
-import jblockmain.Pattern;
-import jblockmain.easeMeasurement;
+import jblockenums.EPattern;
+import jblockmain.*;
import mathcontainers.Vector2D;
import java.util.ArrayList;
@@ -15,145 +10,92 @@
public class TrouserPatternTwo
extends Pattern
{
-
- protected static ArrayList easeMeasurements = new ArrayList<>();
- private double optSmallofBackWaist; // Measurement [A02]
- private double hipCircum; // Measurement [A03]
- private double waistToHipLength; // Measurement [A15]
- private double kneeCircumR; // Measurement [A18]
- private double ankleCircumR; // Measurement [A19]
- private double frontWaistArc; // Measurement [A26]
- private double backWaistArc; // Measurement [A27]
- private double frontAbdomenArc; // Measurement [A28]
- private double backSeatArc; // Measurement [A30]
- private double frontHipArc; // Measurement [A31]
- private double backHipArc; // Measurement [A32]
- private double waistToAbdomen; // Measurement [A33]
- private double waistToSeat; // Measurement [A34]
- private double sideStreamUpliftR; // Measurement [A37]
- private double bodyRise; // Measurement [A38]
- private double seatDepth; // Measurement [A39]
- private double hipDepth; // Measurement [A40]
- private double ankleCircumHeightR; // Measurement [A41]
- private double kneeCircumHeightR; // Measurement [A42]
- private double crotchHeight; // Measurement [A43]
- private double frontSeatArc; // Measurement [A46]
- private double seatBKZ; // Measurement [A51]
- private double frontWaistZ; // Measurement [A52]
- private double backWaistZ; // Measurement [A53]
- private double waistWidth; // Measurement [A59]
- private double hipWidth; // Measurement [A60]
- private double frontAbdomenZ; // Measurement [A61]
- private double fullCrotchLength; // Measurement [A62]
- private double waistEase;
- private double seatEase;
- private double hipEase;
- private double kneeEase;
- private double ankleEase;
-
- public TrouserPatternTwo(Measurements dataStore)
- {
- if (!readMeasurements(dataStore)) return;
- addEasement();
-
- // Create the blocks
- createBlocks();
- }
-
- public static void populateEaseMeasurements()
- {
- // Check to see it hasn't already been populated / it is empty so as to not re-write
- if (easeMeasurements.size() > 0)
- {
- return;
- }
- // Add all the ease measurements to the array list with initial values
- easeMeasurements.add(new easeMeasurement("Waist Ease", 2.0));
- easeMeasurements.add(new easeMeasurement("Seat Ease", 6.0));
- easeMeasurements.add(new easeMeasurement("Hip Ease", 6.0));
- easeMeasurements.add(new easeMeasurement("Knee Ease", 15.0));
- easeMeasurements.add(new easeMeasurement("Ankle Ease", 22.0));
- }
-
- public static ArrayList getEaseMeasurement()
+ public TrouserPatternTwo(String userName, InputFileData dataStore, MeasurementSet template)
{
- return easeMeasurements;
+ super(userName, dataStore, template);
}
/* Implement abstract methods from super class */
@Override
- protected EMethod assignMethod()
+ protected EPattern assignPattern()
{
- return EMethod.GILL;
+ return EPattern.GILL_TROUSER2;
}
@Override
- protected EGarment assignGarment()
+ protected void defineRequiredMeasurements() throws Exception
{
- return EGarment.TROUSER;
+ measurements.addMeasurement(new Measurement("waistToHipLength", "A15"));
+ measurements.addMeasurement(new Measurement("kneeCircumR", "A18"));
+ measurements.addMeasurement(new Measurement("ankleCircumR", "A19"));
+ measurements.addMeasurement(new Measurement("frontWaistArc", "A26"));
+ measurements.addMeasurement(new Measurement("backWaistArc", "A27"));
+ measurements.addMeasurement(new Measurement("frontAbdomenArc", "A28"));
+ measurements.addMeasurement(new Measurement("backSeatArc", "A30"));
+ measurements.addMeasurement(new Measurement("frontHipArc", "A31"));
+ measurements.addMeasurement(new Measurement("backHipArc", "A32"));
+ measurements.addMeasurement(new Measurement("waistToAbdomen", "A33"));
+ measurements.addMeasurement(new Measurement("waistToSeat", "A34"));
+ measurements.addMeasurement(new Measurement("sideStreamUpliftR", "A37"));
+ measurements.addMeasurement(new Measurement("bodyRise", "A38"));
+ measurements.addMeasurement(new Measurement("seatDepth", "A39"));
+ measurements.addMeasurement(new Measurement("hipDepth", "A40"));
+ measurements.addMeasurement(new Measurement("ankleCircumHeightR", "A41"));
+ measurements.addMeasurement(new Measurement("kneeCircumHeightR", "A42"));
+ measurements.addMeasurement(new Measurement("crotchHeight", "A43"));
+ measurements.addMeasurement(new Measurement("frontSeatArc", "A46"));
+ measurements.addMeasurement(new Measurement("seatBKZ", "A51"));
+ measurements.addMeasurement(new Measurement("frontWaistZ", "A52"));
+ measurements.addMeasurement(new Measurement("backWaistZ", "A53"));
+ measurements.addMeasurement(new Measurement("waistWidth", "A59"));
+ measurements.addMeasurement(new Measurement("hipWidth", "A60"));
+ measurements.addMeasurement(new Measurement("frontAbdomenZ", "A61"));
+ measurements.addMeasurement(new Measurement("fullCrotchLength", "A62"));
+
+ // Ease
+ measurements.addMeasurement(new Measurement("waistEase", 2.0));
+ measurements.addMeasurement(new Measurement("seatEase", 6.0));
+ measurements.addMeasurement(new Measurement("hipEase", 6.0));
+ measurements.addMeasurement(new Measurement("kneeEase", 15.0));
+ measurements.addMeasurement(new Measurement("ankleEase", 22.0));
}
@Override
- protected void addEasement() throws IndexOutOfBoundsException
- {
- // Ease values
- waistEase = easeMeasurements.get(0).getValue();
- seatEase = easeMeasurements.get(1).getValue();
- hipEase = easeMeasurements.get(2).getValue();
- kneeEase = easeMeasurements.get(3).getValue();
- ankleEase = easeMeasurements.get(4).getValue();
- }
-
- @Override
- protected boolean readMeasurements(Measurements dataStore)
- {
- try
- {
- // Based on measurements for this pattern we can read the following from the scan
- optSmallofBackWaist = dataStore.getMeasurement("A02").value;
- hipCircum = dataStore.getMeasurement("A03").value;
- waistToHipLength = dataStore.getMeasurement("A15").value;
- kneeCircumR = dataStore.getMeasurement("A18").value;
- ankleCircumR = dataStore.getMeasurement("A19").value;
- frontWaistArc = dataStore.getMeasurement("A26").value;
- backWaistArc = dataStore.getMeasurement("A27").value;
- frontAbdomenArc = dataStore.getMeasurement("A28").value;
- backSeatArc = dataStore.getMeasurement("A30").value;
- frontHipArc = dataStore.getMeasurement("A31").value;
- backHipArc = dataStore.getMeasurement("A32").value;
- waistToAbdomen = dataStore.getMeasurement("A33").value;
- waistToSeat = dataStore.getMeasurement("A34").value;
- sideStreamUpliftR = dataStore.getMeasurement("A37").value;
- bodyRise = dataStore.getMeasurement("A38").value;
- seatDepth = dataStore.getMeasurement("A39").value;
- hipDepth = dataStore.getMeasurement("A40").value;
- ankleCircumHeightR = dataStore.getMeasurement("A41").value;
- kneeCircumHeightR = dataStore.getMeasurement("A42").value;
- crotchHeight = dataStore.getMeasurement("A43").value;
- frontSeatArc = dataStore.getMeasurement("A46").value;
- seatBKZ = dataStore.getMeasurement("A51").value;
- frontWaistZ = dataStore.getMeasurement("A52").value;
- backWaistZ = dataStore.getMeasurement("A53").value;
- waistWidth = dataStore.getMeasurement("A59").value;
- hipWidth = dataStore.getMeasurement("A60").value;
- frontAbdomenZ = dataStore.getMeasurement("A61").value;
- fullCrotchLength = dataStore.getMeasurement("A62").value;
-
- // Get name
- userName = dataStore.getName();
-
- return true;
- }
- catch (MeasurementNotFoundException e)
- {
- addMissingMeasurement(dataStore.getName(), e.getMeasurementId());
- return false;
- }
- }
-
- @Override
- protected void createBlocks()
+ public void createBlocks()
{
+ // Pull from store
+ var waistToHipLength= get("waistToHipLength");
+ var kneeCircumR= get("kneeCircumR");
+ var ankleCircumR= get("ankleCircumR");
+ var frontWaistArc= get("frontWaistArc");
+ var backWaistArc= get("backWaistArc");
+ var frontAbdomenArc= get("frontAbdomenArc");
+ var backSeatArc= get("backSeatArc");
+ var frontHipArc= get("frontHipArc");
+ var backHipArc= get("backHipArc");
+ var waistToAbdomen= get("waistToAbdomen");
+ var waistToSeat= get("waistToSeat");
+ var sideStreamUpliftR= get("sideStreamUpliftR");
+ var bodyRise= get("bodyRise");
+ var seatDepth= get("seatDepth");
+ var hipDepth= get("hipDepth");
+ var ankleCircumHeightR= get("ankleCircumHeightR");
+ var kneeCircumHeightR= get("kneeCircumHeightR");
+ var crotchHeight= get("crotchHeight");
+ var frontSeatArc= get("frontSeatArc");
+ var seatBKZ= get("seatBKZ");
+ var frontWaistZ= get("frontWaistZ");
+ var backWaistZ= get("backWaistZ");
+ var waistWidth= get("waistWidth");
+ var hipWidth= get("hipWidth");
+ var frontAbdomenZ= get("frontAbdomenZ");
+ var fullCrotchLength= get("fullCrotchLength");
+ var waistEase= get("waistEase");
+ var seatEase= get("seatEase");
+ var hipEase= get("hipEase");
+ var kneeEase= get("kneeEase");
+ var ankleEase= get("ankleEase");
+
Block frontBlock = new Block(userName + "_Gill_FrontBlock");
blocks.add(frontBlock);
@@ -230,7 +172,7 @@ protected void createBlocks()
Vector2D point1and2 = new Vector2D((point1.getX() + ((point2.getX() - point1.getX())) / 3.0),
point1.getY() + ((point2.getY() - point1.getY()) * 0.75) + centreYpoint);
- frontBlock.addDirectedCurve(point1, point2, new Vector2D(point1and2.subtract(point1)),
+ frontBlock.addDirectedCubicSpline(point1, point2, new Vector2D(point1and2.subtract(point1)),
new Vector2D(point3.subtract(point2)), new double[]{0.0, 0.0});
// Point 3,4,5,6,7
@@ -241,7 +183,7 @@ protected void createBlocks()
frontBlock.addKeypoint(point7);
// Curve between point 5 and 6 keeping angles at start and end 0 deg with respect to preceding and proceeding curves
- frontBlock.addDirectedCurve(point5, point6, new Vector2D(point5.subtract(point4)),
+ frontBlock.addDirectedCubicSpline(point5, point6, new Vector2D(point5.subtract(point4)),
new Vector2D(point7.subtract(point6)), new double[]{0.0, 0.0});
// Point 8 and 9
@@ -249,11 +191,11 @@ protected void createBlocks()
frontBlock.addKeypoint(point9);
// Circular curve between 8 and 9 making sure apex is lower than height of point 8
- frontBlock.addCircularCurve(point8, point9, (point9.getY()
+ frontBlock.addCircularArc(point8, point9, (point9.getY()
- (new Vector2D(point8.add(point9.subtract(point8).divide(2.0)))).getY()) / 2.0, false);
// Curve that connect point 7 and 8 together as a circular curve
- frontBlock.addCircularCurve(point7, point8, (point8.getY()
+ frontBlock.addCircularArc(point7, point8, (point8.getY()
- (new Vector2D(point7.add(point8.subtract(point7).divide(2.0)))).getY()) / 2.0, true);
// Point 10
@@ -281,7 +223,7 @@ protected void createBlocks()
frontBlock.addKeypoint(point11);
// Final steep curve that connects to crotch point point 12 not added as a keypoint but through curve function
- frontBlock.addDirectedCurve(point11, point1, point12, 0.0);
+ frontBlock.addDirectedCubicSpline(point11, point1, point12, 0.0);
// Get the max and min y with a small additional buffer of 5cm for the construction lines
double maxFrontY = Collections.max(frontBlock.getPlottableKeypointsY()) + 5.0;
@@ -357,21 +299,21 @@ protected void createBlocks()
backBlock.addKeypoint(point18);
// Curve between 17 and 18
- backBlock.addCircularCurve(point17, point18, (point18.getY()
+ backBlock.addCircularArc(point17, point18, (point18.getY()
- (new Vector2D(point17.add(point18.subtract(point17).divide(2.0)))).getY()) / 2.0, false);
backBlock.addKeypoint(point19);
backBlock.addKeypoint(point20);
backBlock.addKeypoint(point21);
- backBlock.addDirectedCurve(point20, point21, new Vector2D(point20.subtract(point19)),
+ backBlock.addDirectedCubicSpline(point20, point21, new Vector2D(point20.subtract(point19)),
new Vector2D(point22.subtract(point21)), new double[]{0.0, 0.0});
backBlock.addKeypoint(point22);
backBlock.addKeypoint(point24);
// Circular curve with height 1 to ensure keypoint 23 is added
- backBlock.addCircularCurve(point22, point24, 1.0, true);
+ backBlock.addCircularArc(point22, point24, 1.0, true);
backBlock.addKeypoint(point25);
backBlock.addKeypoint(point13);
@@ -380,13 +322,13 @@ protected void createBlocks()
Vector2D point25and13 = new Vector2D(point13.getX() + ((point25.getX() - point13.getX()) / 3.0),
point13.getY() + ((point25.getY() - point13.getY()) * 0.75));
- backBlock.addDirectedCurve(point25, point13, new Vector2D(point25.subtract(point24)),
+ backBlock.addDirectedCubicSpline(point25, point13, new Vector2D(point25.subtract(point24)),
new Vector2D(point25and13.subtract(point13)), new double[]{0.0, 0.0});
backBlock.addKeypoint(point14);
backBlock.addKeypoint(point15);
- backBlock.addDirectedCurve(point13, point14, new Vector2D(point13.subtract(point25and13)),
+ backBlock.addDirectedCubicSpline(point13, point14, new Vector2D(point13.subtract(point25and13)),
new Vector2D(point16Temp.subtract(point15)), new double[]{90.0, 0.0});
// Calculate length point 16 needs to be moved in the -x direction by to keep overall crotch length constant
@@ -440,5 +382,4 @@ protected void createBlocks()
centreYpoint), "CentreFold");
}
-}
-
+}
\ No newline at end of file
diff --git a/src/jblockenums/EActivityType.java b/src/jblockenums/EActivityType.java
new file mode 100644
index 0000000..ec8b957
--- /dev/null
+++ b/src/jblockenums/EActivityType.java
@@ -0,0 +1,7 @@
+package jblockenums;
+
+public enum EActivityType
+{
+ DRAFTING,
+ ANALYSIS
+}
diff --git a/src/jblockenums/EAnalysis.java b/src/jblockenums/EAnalysis.java
index 79aa5df..f9c61f8 100644
--- a/src/jblockenums/EAnalysis.java
+++ b/src/jblockenums/EAnalysis.java
@@ -5,5 +5,5 @@
*/
public enum EAnalysis
{
- RECTANGLEPLOT
+ RECTANGLE_PLOT
}
diff --git a/src/jblockenums/EGarment.java b/src/jblockenums/EGarment.java
deleted file mode 100644
index ed8717a..0000000
--- a/src/jblockenums/EGarment.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package jblockenums;
-
-/**
- * Supported garments.
- */
-public enum EGarment
-{
- BODICE, TROUSER, SKIRT, ClOSEFITTINGBODICE, STRAIGHTSLEEVE, SWEATSHIRT
-}
diff --git a/src/jblockenums/EMethod.java b/src/jblockenums/EMethod.java
deleted file mode 100644
index de84388..0000000
--- a/src/jblockenums/EMethod.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package jblockenums;
-
-/**
- * Supported classes of drafting methods supported.
- */
-public enum EMethod
-{
- ALDRICH, BEAZLEYBOND, GILL, AHMED
-}
diff --git a/src/jblockenums/EMsgType.java b/src/jblockenums/EMsgType.java
index a88103e..0095f67 100644
--- a/src/jblockenums/EMsgType.java
+++ b/src/jblockenums/EMsgType.java
@@ -5,9 +5,9 @@
*/
public enum EMsgType
{
- Info,
- Warning,
- Error;
+ INFO,
+ WARNING,
+ ERROR;
/**
* Method to convert the message enum to a string.
@@ -19,13 +19,13 @@ public String getStringType(EMsgType type)
{
switch (type)
{
- case Info:
+ case INFO:
return "Info";
- case Warning:
+ case WARNING:
return "Warning";
- case Error:
+ case ERROR:
return "Error";
default:
diff --git a/src/jblockenums/EPattern.java b/src/jblockenums/EPattern.java
new file mode 100644
index 0000000..2716a6a
--- /dev/null
+++ b/src/jblockenums/EPattern.java
@@ -0,0 +1,33 @@
+package jblockenums;
+
+/**
+ * Enumeration of the known pattern types
+ */
+public enum EPattern
+{
+ AHMED_BODICE("Ahmed Bodice"),
+ ALDRICH_SKIRT("Aldrich Skirt"),
+ ALDRICH_TROUSER("Aldrich Trouser"),
+ BEAZLEYBOND_BODICE("Beazley Bond Bodice"),
+ BEAZLEYBOND_SKIRT("Beazley Bond Skirt"),
+ BEAZLEYBOND_STRAIGHTSLEEVE("Beazley Bond Straight Sleeve"),
+ BEAZLEYBOND_TROUSER("Beazley Bond Trouser"),
+ GILL_SKIRT("Gill Skirt"),
+ GILL_SWEATSHIRT("Gill Sweatshirt"),
+ GILL_TROUSER("Gill Trouser"),
+ GILL_TROUSER2("Gill Trouser 2"),
+ GILL_TROUSER3("Gill Trouser 3");
+
+ EPattern(String s)
+ {
+ stringName = s;
+ }
+
+ private final String stringName;
+
+ @Override
+ public String toString()
+ {
+ return stringName;
+ }
+}
diff --git a/src/jblockenums/EPlotType.java b/src/jblockenums/EPlotType.java
new file mode 100644
index 0000000..dde966f
--- /dev/null
+++ b/src/jblockenums/EPlotType.java
@@ -0,0 +1,7 @@
+package jblockenums;
+
+public enum EPlotType
+{
+ RECTANGLE,
+ LAYERED
+}
diff --git a/src/jblockenums/EUnitType.java b/src/jblockenums/EUnitType.java
new file mode 100644
index 0000000..c344d2c
--- /dev/null
+++ b/src/jblockenums/EUnitType.java
@@ -0,0 +1,21 @@
+package jblockenums;
+
+public enum EUnitType
+{
+ NONE(""),
+ CENTIMETRES("cm"),
+ PERCENTAGE("%");
+
+ EUnitType(String s)
+ {
+ stringName = s;
+ }
+
+ private final String stringName;
+
+ @Override
+ public String toString()
+ {
+ return stringName;
+ }
+}
diff --git a/src/jblockmain/Block.java b/src/jblockmain/Block.java
index 4672567..5523ac9 100644
--- a/src/jblockmain/Block.java
+++ b/src/jblockmain/Block.java
@@ -7,8 +7,7 @@
import mathcontainers.VectorND;
import java.util.ArrayList;
-
-import static jblockmain.JBlockCreator.tol;
+import java.util.ResourceBundle;
/**
* Class that represents a block as a series of connected keypoints.
@@ -17,6 +16,11 @@
*/
public class Block
{
+ /**
+ * Tolerance
+ */
+ public static final double tolerance = Double.parseDouble(ResourceBundle.getBundle("settings").getString("tolerance"));
+
/**
* Global resolution for some curves (points per cm)
*/
@@ -46,6 +50,13 @@ public class Block
*/
private ArrayList constructionNames;
+ /**
+ * Ctor
+ */
+ public Block()
+ {
+ }
+
/**
* Constructor.
*
@@ -78,6 +89,38 @@ public Block(Block otherBlock, String newName)
}
+ // region Helpers
+
+ /**
+ * Get the minimum X coordinate of all the keypoints in the block
+ * @return minimum value
+ */
+ public double getMinimumX()
+ {
+ if (keypointsX.size() == 0) return 0;
+ var min = keypointsX.get(0);
+ for (var keypoint : keypointsX)
+ {
+ if (keypoint < min) min = keypoint;
+ }
+ return min;
+ }
+
+ /**
+ * Get the maximum X coordinate of all the keypoints in the block
+ * @return maximum value
+ */
+ public double getMaximumX()
+ {
+ if (keypointsX.size() == 0) return 0;
+ var max = keypointsX.get(0);
+ for (var keypoint : keypointsX)
+ {
+ if (keypoint > max) max = keypoint;
+ }
+ return max;
+ }
+
/**
* Get the hypotenuse of a right-angled triangle given the other two sides
*
@@ -163,6 +206,139 @@ public static double[][] circleIntersect(double x1, double x2, double y1, double
return xy;
}
+ /**
+ * Computes the point where the two lines intersect or throws an exception if they are parallel (don't intersect).
+ * Lines are assumed to be of the form A + B * c where c is a variable denoting the position along the line, A is a
+ * point on the line and B is the normalised direction vector of the line.
+ * @param a1 a point on line 1
+ * @param b1 normalised direction of line 1
+ * @param a2 a point on line 2
+ * @param b2 normalised direction of line 2
+ * @return the intersection of the lines
+ */
+ public Vector2D vectorIntersect(Vector2D a1, Vector2D b1, Vector2D a2, Vector2D b2) throws Exception
+ {
+ // Split out scalars
+ var a1x = a1.getX();
+ var b1x = b1.getX();
+ var a1y = a1.getY();
+ var b1y = b1.getY();
+ var a2x = a2.getX();
+ var b2x = b2.getX();
+ var a2y = a2.getY();
+ var b2y = b2.getY();
+
+ // Check whether lines are parallel
+ // Dot product of directions will equal magnitude multiplied
+ if (Math.abs(b1.dot(b2) - b1.norm() * b2.norm()) < tolerance)
+ {
+ throw new Exception("Cannot compute intersection. Lines are parallel!");
+ }
+
+ // Compute intermediates
+ var top = a2x * b2y - a1x * b2y + b2x * (a1y - a2y);
+ var bottom = b1x * b2y - b1y * b2x;
+
+ // Compute the variable c1
+ var c1 = top / bottom;
+
+ // Compute the variable c2 using appropriate equation
+ double c2;
+ if (Math.abs(b2x) > tolerance)
+ {
+ c2 = (a1x - a2x + c1 * b1x) / b2x;
+ }
+ else if (Math.abs(b2y) > tolerance)
+ {
+ c2 = (a1y - a2y + c1 * b1y) / b2y;
+ }
+ else
+ {
+ throw new Exception("Cannot solve line intersection!");
+ }
+
+ // Check both equations arrive at the same point
+ var d1 = a1x + c1 * b1x;
+ var d2 = a1y + c1 * b1y;
+ var e1 = a2x + c2 * b2x;
+ var e2 = a2y + c2 * b2y;
+ if (Math.abs(d1 - e1) > tolerance || Math.abs(d2 - e2) > tolerance)
+ throw new Exception("Something went wrong solving line intersection!");
+
+ return new Vector2D(d1, d2);
+ }
+
+ /**
+ * Gets the length between 2 keypoints by summing the length of every line segment between them going around the
+ * block outline in an anti-clockwise manner.
+ * @param startPoint position of the start point
+ * @param endPoint position of the end point
+ * @return the length
+ */
+ public double getLengthBetweenPoints(Vector2D startPoint, Vector2D endPoint)
+ {
+ try
+ {
+ // Gets the start and end vector keypoint numbers
+ var startPointNumber = getKeypointNumber(startPoint);
+ var endPointNumber = getKeypointNumber(endPoint);
+
+ // Length from point X to point X is 0
+ if (startPointNumber == endPointNumber)
+ {
+ return 0;
+ }
+
+ // Keep track of end as then used in the for loop further down
+ int finalPointNumber = endPointNumber;
+
+ // May need to loop round the end of the numbering system
+ // e.g. getting the size from point 10 to point 3 -> need to loop to 10,11,12,13,14,15...1,2,3
+ // which is equal to the arraylist.size - start + end
+ if (endPointNumber < startPointNumber)
+ {
+ finalPointNumber += keypointsX.size() - startPointNumber;
+ }
+ else
+ {
+ finalPointNumber -= startPointNumber;
+ }
+ endPointNumber = startPointNumber + 1;
+
+ // Loop
+ var length = 0;
+ for (int i = 0; i < finalPointNumber; i++)
+ {
+ // Gets the x and y values of the next keypoint and calculated the magnitude/norm between the next
+ // and current value then sums up the magnitudes/norms
+ var diffX = keypointsX.get(endPointNumber) - keypointsX.get(startPointNumber);
+ var diffY = keypointsY.get(endPointNumber) - keypointsY.get(startPointNumber);
+ length += Math.sqrt(diffX * diffX + diffY * diffY);
+
+ // Increment
+ startPointNumber = endPointNumber;
+ endPointNumber++;
+
+ // Special case for looping beyond the end of the numbering system
+ // Reset the end point number
+ if (endPointNumber == keypointsX.size())
+ {
+ endPointNumber = 0;
+ }
+ }
+ return length;
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ return 0;
+ }
+ }
+
+ // endregion Helpers
+
+ // region Keypoints
+
/**
* Method to retrieve the number of a keypoint given its position.
* (Within floating point tolerances)
@@ -175,8 +351,8 @@ public int getKeypointNumber(Vector2D xy) throws Exception
int i = 0;
while (i < keypointsX.size())
{
- if (Math.abs(keypointsX.get(i) - xy.getX()) < tol &&
- Math.abs(keypointsY.get(i) - xy.getY()) < tol)
+ if (Math.abs(keypointsX.get(i) - xy.getX()) < tolerance &&
+ Math.abs(keypointsY.get(i) - xy.getY()) < tolerance)
{
// Point found
break;
@@ -307,6 +483,40 @@ public void deleteKeypoint(Vector2D location)
}
}
+ // endregion Keypoints
+
+ // region Darts
+
+ /**
+ * Computes the rotation angle about the origin in the anti-clockwise sense in the standard X-Y plane between a
+ * position vector drawn between the origin and the point supplied and the positive Y axis.
+ *
+ * @param point point to be rotated.
+ * @return rotation angle required to rotate point onto the positive Y axis.
+ */
+ private double getAngleToPositiveYAxis(Vector2D point)
+ {
+ double angle;
+
+ // Different base expression for Y quadrant
+ if (point.getY() < 0.0)
+ {
+ angle = (Math.PI / 2.0) + Math.atan(Math.abs(point.getY() / point.getX()));
+ }
+ else
+ {
+ angle = Math.atan(Math.abs(point.getX() / point.getY()));
+ }
+
+ // Change rotation direction based on X quadrant
+ if (point.getX() < 0.0)
+ {
+ angle *= -1.0;
+ }
+
+ return angle;
+ }
+
/**
* Method to adjust the end points of the dart if applied to a straight line to ensure the edge is correct when the
* dart closes.
@@ -345,7 +555,7 @@ private ArrayList adjustDartPointsForStraightEdge(ArrayList
// Check the rotation works as expected
Vector2D baseStartRef = new Vector2D(R.postMultiply(baseStartShifted));
- if (Math.abs(baseStartRef.getX() - 0.0) > tol) System.out.println("Dart reference rotation inaccurate!");
+ if (Math.abs(baseStartRef.getX() - 0.0) > tolerance) System.out.println("Dart reference rotation inaccurate!");
// Calculation to find the apex angle (angle we need to close the dart by)
double phi = getAngleToPositiveYAxis(baseEndRef);
@@ -359,7 +569,7 @@ private ArrayList adjustDartPointsForStraightEdge(ArrayList
// Check the rotation works as expected
Vector2D baseEndRefClosed = new Vector2D(RApex.postMultiply(baseEndRef));
- if (Math.abs(baseEndRefClosed.getX() - 0.0) > tol) System.out.println("Dart closure rotation inaccurate!");
+ if (Math.abs(baseEndRefClosed.getX() - 0.0) > tolerance) System.out.println("Dart closure rotation inaccurate!");
// Direction of line from start point to end point
Vector2D directionLineClosed = new Vector2D(lineEndRefClosed.subtract(lineStartRef));
@@ -392,52 +602,6 @@ private ArrayList adjustDartPointsForStraightEdge(ArrayList
}
- /**
- * Method to add a dart given the end points of the line segment on which to add the dart, position along the
- * segment and the dimensions of the dart. Start and end points must be specified in the strict anti-clockwise order
- * for connectivity to be correct for plotting.
- *
- * @param lineStart position of start of segment
- * @param lineEnd position of end of segment
- * @param position position of dart centre in dimensionless units along edge
- * @param width width of dart at base
- * @param length depth of dart assuming it is symmetrical
- * @param dirNorm flag indicating the direction of the dart (left or right)
- * @param straightSide is side to which dart is to be added going to remain straight
- * @return list of points of the dart edges
- */
- public ArrayList addDart(Vector2D lineStart, Vector2D lineEnd, double position,
- double width, double length, boolean dirNorm, boolean straightSide)
- {
- // Find the equation of the line to find normal
- Vector2D direction = new Vector2D(lineEnd.subtract(lineStart));
- Vector2D normal = new Vector2D(direction.getY(), -direction.getX());
- if (dirNorm) normal.multiplyBy(-1.0);
-
- // Normalise the direction vectors
- direction.divideBy(direction.norm());
- normal.divideBy(normal.norm());
-
- // Find dart point
- double side_length = lineEnd.subtract(lineStart).norm();
- Vector2D point = new Vector2D(lineStart.add(direction.multiply(position * side_length)));
-
- // Package points
- ArrayList pointsOfDart = new ArrayList<>();
- pointsOfDart.add(new Vector2D(point.subtract(direction.multiply(width / 2.0))));
- pointsOfDart.add(new Vector2D(point.add(normal.multiply(length))));
- pointsOfDart.add(new Vector2D(point.add(direction.multiply(width / 2.0))));
-
- // Correct points if necessary
- if (straightSide) pointsOfDart = adjustDartPointsForStraightEdge(pointsOfDart, lineStart, lineEnd);
-
- // Add keypoints
- addDartKeypoints(lineStart, pointsOfDart, EPosition.AFTER);
-
- // Return the corrected points
- return pointsOfDart;
- }
-
/**
* Method to add a dart given the two points at the base of the dart, its apex point and a point before or which to
* insert it. Dart points must be in the strict anti-clockwise order.
@@ -461,6 +625,27 @@ public ArrayList addDart(Vector2D baseStart, Vector2D baseEnd, Vector2
return pointsOfDart;
}
+ /**
+ * Method to add a dart given the end points of the line segment on which to add the dart, position along the
+ * segment and the dimensions of the dart. Start and end points must be specified in the strict anti-clockwise order
+ * for connectivity to be correct for plotting.
+ *
+ * @param lineStart position of start of segment
+ * @param lineEnd position of end of segment
+ * @param position position of dart centre in dimensionless units along edge
+ * @param width width of dart at base
+ * @param length depth of dart assuming it is symmetrical
+ * @param dirNorm flag indicating the direction of the dart (left or right)
+ * @param straightSide is side to which dart is to be added going to remain straight
+ * @return list of points of the dart edges
+ */
+ public ArrayList addDart(Vector2D lineStart, Vector2D lineEnd, double position,
+ double width, double length, boolean dirNorm, boolean straightSide)
+ {
+ // Return the corrected points
+ return addDart(lineStart, lineEnd, position, width, null, length, dirNorm, straightSide);
+ }
+
/**
* Method to add a dart given the end points of the line segment on which to add the dart, position along the
* segment and the apex of the dart. Start and end points must be specified in the strict anti-clockwise order
@@ -469,7 +654,7 @@ public ArrayList addDart(Vector2D baseStart, Vector2D baseEnd, Vector2
* @param lineStart position of start of segment
* @param lineEnd position of end of segment
* @param position position of dart centre in dimensionless units along edge
- * @param width width of dart at base.
+ * @param width width of dart at base
* @param apex position of the dart apex
* @param straightSide is side to which dart is to be added going to remain straight
* @return list of points of the dart edges
@@ -477,11 +662,29 @@ public ArrayList addDart(Vector2D baseStart, Vector2D baseEnd, Vector2
public ArrayList addDart(Vector2D lineStart, Vector2D lineEnd, double position,
double width, Vector2D apex, boolean straightSide)
{
- // TODO: Really need to generalise this and the version above as they share a lot of the same code
+ // Return the corrected points
+ return addDart(lineStart, lineEnd, position, width, apex, 0, false, straightSide);
+ }
- // Find the equation of the line
+ /**
+ * Internal method to add a dart called by the public wrappers
+ * @param lineStart position of start of segment
+ * @param lineEnd position of end of segment
+ * @param position position of dart centre in dimensionless units along edge
+ * @param width width of dart at base
+ * @param apex position of the dart apex (can be null if supplying length)
+ * @param length depth of dart assuming it is symmetrical (not used if supplying apex)
+ * @param dirNorm flag indicating the direction of the dart (left or right) (not used if supplying apex)
+ * @param straightSide is side to which dart is to be added going to remain straight
+ * @return list of points of the dart edges
+ */
+ private ArrayList addDart(Vector2D lineStart, Vector2D lineEnd, double position, double width,
+ Vector2D apex, double length, boolean dirNorm, boolean straightSide)
+ {
+ // Find the equation of the line to find normal
Vector2D direction = new Vector2D(lineEnd.subtract(lineStart));
- Vector2D normal = new Vector2D(-direction.getY(), direction.getX());
+ Vector2D normal = new Vector2D(direction.getY(), -direction.getX());
+ if (apex == null) if (dirNorm) normal.multiplyBy(-1.0);
// Normalise the direction vectors
direction.divideBy(direction.norm());
@@ -494,7 +697,14 @@ public ArrayList addDart(Vector2D lineStart, Vector2D lineEnd, double
// Package points
ArrayList pointsOfDart = new ArrayList<>();
pointsOfDart.add(new Vector2D(point.subtract(direction.multiply(width / 2.0))));
- pointsOfDart.add(apex);
+ if (apex == null)
+ {
+ pointsOfDart.add(new Vector2D(point.add(normal.multiply(length)))); //
+ }
+ else
+ {
+ pointsOfDart.add(apex);
+ }
pointsOfDart.add(new Vector2D(point.add(direction.multiply(width / 2.0))));
// Correct points if necessary
@@ -531,6 +741,10 @@ public void addDartKeypoints(Vector2D adjPoint,
addKeypointNextTo(points.get(2), points.get(1), EPosition.AFTER);
}
+ // endregion Darts
+
+ // region Arcs
+
/**
* Add a curve given the height of curve above the centre of a line joining the two points. Assumes the curve is
* cut from a circle and hence given points are on the circle circumference. Direction of normal is indicated by
@@ -542,7 +756,25 @@ public void addDartKeypoints(Vector2D adjPoint,
* @param height height of curve above a straight line joining start and end positions
* @param dirNorm direction of the centre of the circle
*/
- public void addCircularCurve(Vector2D startPoint, Vector2D endPoint, double height, boolean dirNorm)
+ public void addCircularArc(Vector2D startPoint, Vector2D endPoint, double height, boolean dirNorm)
+ {
+ addCircularArc(startPoint, endPoint, height, dirNorm, false);
+ }
+
+ /**
+ * Add a curve given the height of curve above the centre of a line joining the two points. Assumes the curve is
+ * cut from a circle and hence given points are on the circle circumference. Direction of normal is indicated by
+ * boolean value -- true for right hand normal and false for left hand normal -- which tells the method which way
+ * to curve. Start and end points must be specified in the strict anti-clockwise order of the keypoints list.
+ *
+ * @param startPoint start position of curve
+ * @param endPoint end position of curve
+ * @param height height of curve above a straight line joining start and end positions
+ * @param dirNorm direction of the centre of the circle
+ * @param reverseArc whether to draw the arc with theta increasing in the other direction
+ */
+ public void addCircularArc(Vector2D startPoint, Vector2D endPoint, double height, boolean dirNorm,
+ boolean reverseArc)
{
// Get equation of line
Vector2D direction = new Vector2D(endPoint.subtract(startPoint));
@@ -603,6 +835,11 @@ public void addCircularCurve(Vector2D startPoint, Vector2D endPoint, double heig
th2 *= -1.0;
}
+ if (reverseArc)
+ {
+ th2 = (Math.PI * 2.0) + th2;
+ }
+
double dcircum = Math.abs(th2 - th1) * radius;
int numPts = (int) Math.ceil(dcircum * res);
@@ -620,6 +857,53 @@ public void addCircularCurve(Vector2D startPoint, Vector2D endPoint, double heig
}
}
+ // endregion Arcs
+
+ // region Cubic Splines
+
+ /**
+ * Method to get a direction vector at a given point on the curve based on an adjacent keypoint.
+ *
+ * @param keypoint point at which direction vector is required.
+ * @param adjacency connecting point from which to infer direction.
+ * @return normalised direction vector.
+ */
+ private Vector2D getDirectionAtKeypoint(Vector2D keypoint, EPosition adjacency)
+ {
+ try
+ {
+ int i = getKeypointNumber(keypoint);
+
+ // Approximate direction using linear connection to the adjacent point in the list
+ int j = i;
+ int adjMultiplier = 1;
+ if (adjacency == EPosition.BEFORE) j--;
+ else
+ {
+ j++;
+ adjMultiplier = -1;
+ }
+
+ // Periodic connection
+ if (j < 0) j = keypointsX.size() - 1;
+ else if (j == keypointsX.size()) j = 0;
+ Vector2D directionVector = new Vector2D(keypointsX.get(i) - keypointsX.get(j),
+ keypointsY.get(i) - keypointsY.get(j));
+ directionVector.multiplyBy(adjMultiplier);
+
+ // Normalise and return
+ directionVector.divideBy(directionVector.norm());
+ return directionVector;
+
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+
+ return new Vector2D(-1.0, -1.0);
+ }
+
/**
* Method to add a curve which has specified start and end point positions and gradients as well as an apex at which
* the curve must have a stationary point. Fully qualified version requires user to specify the current directions
@@ -635,10 +919,10 @@ public void addCircularCurve(Vector2D startPoint, Vector2D endPoint, double heig
* @param offsetDirection unit vector indicating quadrant of offset
* @return final point on the curve
*/
- public Vector2D addDirectedCurveWithApexTangent(Vector2D startPoint, Vector2D endPoint,
- Vector2D dirStart, Vector2D dirEnd,
- Vector2D tangentCorner, double tangentPointOffset,
- double[] anglesAtEnds, int[] offsetDirection)
+ public Vector2D addDirectedCubicSplineWithApexTangent(Vector2D startPoint, Vector2D endPoint,
+ Vector2D dirStart, Vector2D dirEnd,
+ Vector2D tangentCorner, double tangentPointOffset,
+ double[] anglesAtEnds, int[] offsetDirection)
{
// Specify the tangent point using corner and offset
Vector2D tangentPoint = new Vector2D(
@@ -662,14 +946,14 @@ public Vector2D addDirectedCurveWithApexTangent(Vector2D startPoint, Vector2D en
Vector2D tangentDirection = new Vector2D(apexToCorner.getY(), -apexToCorner.getX());
// Now we can construct the first part of the curve
- addDirectedCurve(startPoint,
+ addDirectedCubicSpline(startPoint,
tangentPoint,
dirStart,
tangentDirection, new double[]{anglesAtEnds[0], 0.0}
);
// Construct the second part of the curve (intersect at end is 90 degrees)
- return addDirectedCurve(tangentPoint,
+ return addDirectedCubicSpline(tangentPoint,
endPoint,
tangentDirection,
dirEnd,
@@ -689,16 +973,16 @@ public Vector2D addDirectedCurveWithApexTangent(Vector2D startPoint, Vector2D en
* @param offsetDirection unit vector indicating quadrant of offset
* @return final point on the curve
*/
- public Vector2D addDirectedCurveWithApexTangent(Vector2D startPoint, Vector2D endPoint,
- Vector2D tangentCorner, double tangentPointOffset,
- double[] anglesAtEnds, int[] offsetDirection)
+ public Vector2D addDirectedCubicSplineWithApexTangent(Vector2D startPoint, Vector2D endPoint,
+ Vector2D tangentCorner, double tangentPointOffset,
+ double[] anglesAtEnds, int[] offsetDirection)
{
// Get directions
Vector2D dirStart = getDirectionAtKeypoint(startPoint, EPosition.BEFORE);
Vector2D dirEnd = getDirectionAtKeypoint(endPoint, EPosition.AFTER);
// Pass to fully qualified version
- return addDirectedCurveWithApexTangent(startPoint, endPoint,
+ return addDirectedCubicSplineWithApexTangent(startPoint, endPoint,
dirStart, dirEnd,
tangentCorner, tangentPointOffset,
anglesAtEnds, offsetDirection);
@@ -713,14 +997,14 @@ public Vector2D addDirectedCurveWithApexTangent(Vector2D startPoint, Vector2D en
* @param angleAtEnds desired angle at each end of the curve
* @return final point on the curve
*/
- public Vector2D addDirectedCurve(Vector2D startPoint, Vector2D endPoint, double[] angleAtEnds)
+ public Vector2D addDirectedCubicSpline(Vector2D startPoint, Vector2D endPoint, double[] angleAtEnds)
{
// Get directions
Vector2D dirStart = getDirectionAtKeypoint(startPoint, EPosition.BEFORE);
Vector2D dirEnd = getDirectionAtKeypoint(endPoint, EPosition.AFTER);
// Pass on arguments
- return addDirectedCurve(startPoint, endPoint, dirStart, dirEnd, angleAtEnds);
+ return addDirectedCubicSpline(startPoint, endPoint, dirStart, dirEnd, angleAtEnds);
}
/**
@@ -735,9 +1019,9 @@ public Vector2D addDirectedCurve(Vector2D startPoint, Vector2D endPoint, double[
* @param angleAtEnds desired angle at each end of the curve
* @return final point on the curve
*/
- public Vector2D addDirectedCurve(Vector2D startPoint, Vector2D endPoint,
- Vector2D dirStart, Vector2D dirEnd,
- double[] angleAtEnds)
+ public Vector2D addDirectedCubicSpline(Vector2D startPoint, Vector2D endPoint,
+ Vector2D dirStart, Vector2D dirEnd,
+ double[] angleAtEnds)
{
// Construct the reference frame
ReferenceFrame f = new ReferenceFrame(startPoint, endPoint, dirStart, angleAtEnds[0]);
@@ -808,14 +1092,14 @@ public Vector2D addDirectedCurve(Vector2D startPoint, Vector2D endPoint,
* @param angleAtStart the angle between the curve and the start edge
* @return final point on the curve
*/
- public Vector2D addDirectedCurve(Vector2D startPoint, Vector2D endPoint,
- Vector2D intermediate, double angleAtStart)
+ public Vector2D addDirectedCubicSpline(Vector2D startPoint, Vector2D endPoint,
+ Vector2D intermediate, double angleAtStart)
{
// Get direction
Vector2D dirStart = getDirectionAtKeypoint(startPoint, EPosition.BEFORE);
// Pass on arguments
- return addDirectedCurve(startPoint, endPoint, intermediate, dirStart, angleAtStart);
+ return addDirectedCubicSpline(startPoint, endPoint, intermediate, dirStart, angleAtStart);
}
/**
@@ -830,9 +1114,9 @@ public Vector2D addDirectedCurve(Vector2D startPoint, Vector2D endPoint,
* @param angleAtStart the angle between the curve and the start edge
* @return final point on the curve
*/
- public Vector2D addDirectedCurve(Vector2D startPoint, Vector2D endPoint,
- Vector2D intermediate, Vector2D dirStart,
- double angleAtStart)
+ public Vector2D addDirectedCubicSpline(Vector2D startPoint, Vector2D endPoint,
+ Vector2D intermediate, Vector2D dirStart,
+ double angleAtStart)
{
// Construct the reference frame
ReferenceFrame f = new ReferenceFrame(startPoint, endPoint, dirStart, angleAtStart);
@@ -904,7 +1188,7 @@ private PolyCoeffs solveForCoefficients(Matrix2D mat, VectorND constants)
test.subtractThis(constants);
for (int i = 0; i < test.size(); i++)
{
- if (Math.abs(test.get(i)) > tol)
+ if (Math.abs(test.get(i)) > tolerance)
{
System.out.println("Cubic spline solver is potentially inaccurate!");
}
@@ -958,7 +1242,7 @@ private Vector2D addDiscretisedPoints(Vector2D refStart, Vector2D refEnd, Matrix
public Vector2D addRightAngleCurve(Vector2D startPoint, Vector2D endPoint)
{
double[] angles = new double[]{90.0, 90.0};
- return addDirectedCurve(startPoint, endPoint, angles);
+ return addDirectedCubicSpline(startPoint, endPoint, angles);
}
/**
@@ -971,9 +1255,13 @@ public Vector2D addRightAngleCurve(Vector2D startPoint, Vector2D endPoint)
public Vector2D addBlendedCurve(Vector2D startPoint, Vector2D endPoint)
{
double[] angles = new double[]{0.0, 0.0};
- return addDirectedCurve(startPoint, endPoint, angles);
+ return addDirectedCubicSpline(startPoint, endPoint, angles);
}
+ // endregion Cubic Splines
+
+ // region Getters
+
/**
* Method to get a plottable list of keypoints -- adds the wrap around necessary to close the shape.
*
@@ -1056,101 +1344,32 @@ public String getName()
return name;
}
- /**
- * Method to get a direction vector at a given point on the curve based on an adjacent keypoint.
- *
- * @param keypoint point at which direction vector is required.
- * @param adjacency connecting point from which to infer direction.
- * @return normalised direction vector.
- */
- private Vector2D getDirectionAtKeypoint(Vector2D keypoint, EPosition adjacency)
- {
- try
- {
- int i = getKeypointNumber(keypoint);
+ // endregion Getters
- // Approximate direction using linear connection to the adjacent point in the list
- int j = i;
- int adjMultiplier = 1;
- if (adjacency == EPosition.BEFORE) j--;
- else
- {
- j++;
- adjMultiplier = -1;
- }
-
- // Periodic connection
- if (j < 0) j = keypointsX.size() - 1;
- else if (j == keypointsX.size()) j = 0;
- Vector2D directionVector = new Vector2D(keypointsX.get(i) - keypointsX.get(j),
- keypointsY.get(i) - keypointsY.get(j));
- directionVector.multiplyBy(adjMultiplier);
+ // region Bezier
- // Normalise and return
- directionVector.divideBy(directionVector.norm());
- return directionVector;
-
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
-
- return new Vector2D(-1.0, -1.0);
- }
-
- /**
- * Computes the rotation angle about the origin in the anti-clockwise sense in the standard X-Y plane between a
- * position vector drawn between the origin and the point supplied and the positive Y axis.
- *
- * @param point point to be rotated.
- * @return rotation angle required to rotate point onto the positive Y axis.
- */
- private double getAngleToPositiveYAxis(Vector2D point)
- {
- double angle;
-
- // Different base expression for Y quadrant
- if (point.getY() < 0.0)
- {
- angle = (Math.PI / 2.0) + Math.atan(Math.abs(point.getY() / point.getX()));
- }
- else
- {
- angle = Math.atan(Math.abs(point.getX() / point.getY()));
- }
-
- // Change rotation direction based on X quadrant
- if (point.getX() < 0.0)
- {
- angle *= -1.0;
- }
-
- return angle;
- }
-
- private double quadraticXBezier(double t, Vector2D start, Vector2D intermediate, Vector2D end)
+ private double quadraticXBezier(double t, Vector2D start, Vector2D controlPoint, Vector2D end)
{
// Helper Function that returns X value for a given t value
// Which varies from 0 to 1 for a given start, control point, and end vector
- return (start.getX() * ((1 - t) * (1 - t)))
- + (2 * intermediate.getX() * (t * (1 - t)))
- + (end.getX() * (t * t));
+ return (start.getX() * (1 - t) * (1 - t))
+ + (2 * controlPoint.getX() * t * (1 - t))
+ + (end.getX() * t * t);
}
- private double quadraticYBezier(double t, Vector2D start, Vector2D intermediate, Vector2D end)
+ private double quadraticYBezier(double t, Vector2D start, Vector2D controlPoint, Vector2D end)
{
// Helper Function that returns Y value for a given t value
// Which varies from 0 to 1 for a given start, control point, and end vector
return (start.getY() * (1 - t) * (1 - t))
- + ((2 * intermediate.getY() * t * (1 - t)))
+ + (2 * controlPoint.getY() * t * (1 - t))
+ (end.getY() * t * t);
}
/**
- * Draws a quadratic bezier curve between 2 points for a given start, end and shaping? point
+ * Draws a quadratic Bezier curve between 2 points for a given start, end and control point
*
* @param start start vector you want the curve to start from
* @param controlPoint the point which shapes the bezier curve
@@ -1178,159 +1397,35 @@ public void addQuadraticBezierCurve(Vector2D start, Vector2D controlPoint, Vecto
}
/**
- * Add a curve given the height of curve above the centre of a line joining the two points. Assumes the curve is
- * cut from a circle and hence given points are on the circle circumference. Direction of normal is indicated by
- * boolean value -- true for right hand normal and false for left hand normal -- which tells the method which way
- * to curve. Start and end points must be specified in the strict anti-clockwise order of the keypoints list.
- *
- * @param startPoint start position of curve
- * @param endPoint end position of curve
- * @param height height of curve above a straight line joining start and end positions
- * @param dirNorm direction of the centre of the circle
- * @param otherSide Whether to draw the otherside of the circle
+ * Add a quadratic Bezier curve between the end points where the angle of the curve at either end blends in with the
+ * direction of the lines leaving each end point. The start and end points must be specified in a strict order as
+ * the keypoints used to infer the direction are the preceding and following points for the start and end
+ * respectively.
+ * @param startPoint start of the curve
+ * @param endPoint end of the curve
*/
- public void addCircularCurve(Vector2D startPoint, Vector2D endPoint, double height, boolean dirNorm,
- boolean otherSide)
+ public void addQuadraticBezierCurve(Vector2D startPoint, Vector2D endPoint)
{
- // Get equation of line
- Vector2D direction = new Vector2D(endPoint.subtract(startPoint));
- Vector2D norm_dir;
- if (dirNorm)
- {
- norm_dir = new Vector2D(direction.getY(), -direction.getX());
- }
- else
- {
- norm_dir = new Vector2D(-direction.getY(), direction.getX());
- }
- norm_dir.divideBy(norm_dir.norm());
-
- // Use normalised direction to find midpoint
- Vector2D midpt = new Vector2D(startPoint.add(direction.multiply(0.5)));
-
- // Find the 3rd point required for the arc
- Vector2D crestpt = new Vector2D(midpt.add(norm_dir.multiply(height)));
-
- // Solve for coefficients
- double lam1 = -Math.pow(startPoint.getX(), 2) - Math.pow(startPoint.getY(), 2);
- double lam2 = -Math.pow(endPoint.getX(), 2) - Math.pow(endPoint.getY(), 2);
- double lam3 = -Math.pow(crestpt.getX(), 2) - Math.pow(crestpt.getY(), 2);
- double lam23 = lam2 - lam3;
- double lam13 = lam1 - lam3;
- double y23 = endPoint.getY() - crestpt.getY();
- double y13 = startPoint.getY() - crestpt.getY();
- double x23 = endPoint.getX() - crestpt.getX();
- double x13 = startPoint.getX() - crestpt.getX();
- double alp = (lam23 - (y23 / y13) * lam13) / ((x23 * y13 - y23 * x13) / y13);
- double bet = (lam13 - x13 * alp) / y13;
- double gam = lam1 - startPoint.getY() * bet - startPoint.getX() * alp;
-
- // Convert to standard form of equation for circle
- double centrex = -alp / 2.0;
- double centrey = -bet / 2.0;
- double radius = Math.sqrt(centrex * centrex + centrey * centrey - gam);
-
- // Discretise equation of circle using specified resolution and correct for quadrant
- double xOffsetStart = startPoint.getX() - centrex;
- double yOffsetStart = startPoint.getY() - centrey;
- double th1 = Math.acos(xOffsetStart / radius);
-
- double xOffsetEnd = endPoint.getX() - centrex;
- double yOffsetEnd = endPoint.getY() - centrey;
- double th2 = Math.acos(xOffsetEnd / radius);
-
- // Quadrant check to get offset correct
- if ((xOffsetStart < 0.0 && yOffsetStart < 0.0) || (xOffsetStart > 0.0 && yOffsetStart < 0.0))
- {
- // Flip theta
- th1 *= -1.0;
- }
- if ((xOffsetEnd < 0.0 && yOffsetEnd < 0.0) || (xOffsetEnd > 0.0 && yOffsetEnd < 0.0))
+ try
{
- // Flip theta
- th2 *= -1.0;
- }
+ // Get direction vectors at start and end using adjacent keypoints
+ Vector2D dirStart = getDirectionAtKeypoint(startPoint, EPosition.BEFORE);
+ Vector2D dirEnd = getDirectionAtKeypoint(endPoint, EPosition.AFTER);
- if (otherSide)
- {
- th2 = (Math.PI * 2.0) + th2;
- }
+ // Calculate intersection of lines which represents the control point
+ var control = vectorIntersect(startPoint, dirStart, endPoint, dirEnd);
- double dcircum = Math.abs(th2 - th1) * radius;
- int numPts = (int) Math.ceil(dcircum * res);
-
- // Specify in polar coordinates then convert to Cartesian
- Vector2D tmp;
- Vector2D tmp2 = new Vector2D(startPoint);
- double spacing = (th2 - th1) / (numPts - 1);
- double th;
- for (int i = 1; i < numPts - 1; i++)
- {
- th = th1 + i * spacing;
- tmp = new Vector2D(radius * Math.cos(th) + centrex, radius * Math.sin(th) + centrey);
- addKeypointNextTo(tmp, tmp2, EPosition.AFTER);
- tmp2 = new Vector2D(tmp);
- }
- }
-
- //gets the length between 2 keypoints going in an anti-clockwise manner
- public double getLengthBetweenPoints(Vector2D startPoint, Vector2D endPoint)
- {
- double length = 0;
- int start = 0;
- int end = 0;
- try
- {
- //gets the start and end vector keypoints
- //if start = vector point10, keypointNumber would be 9
- start = getKeypointNumber(startPoint);
- end = getKeypointNumber(endPoint);
+ // Add the curve
+ addQuadraticBezierCurve(startPoint, control, endPoint);
}
catch (Exception e)
{
e.printStackTrace();
- return 0;
- }
- //Length from point 10 to point 10 is 0
- if (start == end)
- {
- return 0;
- }
- //keep track of end as end is then used in the for loop further down
- int size = end;
- //this is to help with say, getting the size from point 10 to point 3 -> need to loop to 10,11,12,13,14,15...1,2,3
- //which is equal to the arraylist.size - start + end
- if (end < start)
- {
- size += keypointsX.size() - start;
- }
- else
- {
- size -= start;
}
- end = start + 1;
- for (int i = 0; i < size; i++)
- {
-
- //gets the x and y values of the next keypoint and calculated the magnitude/norm between the next
- //and current value then sums up the magnitudes/norms
- //may need to use less sqrts/power functions
- length += Math.sqrt((Math.pow(keypointsX.get(end) - keypointsX.get(start), 2) + Math.pow(
- keypointsY.get(end) - keypointsY.get(start), 2)));
- //special case when you need to calculate length between point 12 and point 3, this is for the loop around
- //to help the for loop
- start = end;
- end++;
- if (end == keypointsX.size()) //need to reset to 0 to deal with null pointer exception
- {
- end = 0; //for the loop around
- }
-
- }
-
- return length;
}
+ // endregion Bezier
+
/**
* Class encapsulating the reference frame mapping
*/
@@ -1363,7 +1458,7 @@ private class ReferenceFrame
// Check we have the correct rotation -- dirStart should map to X axis if correct i.e. Y = 0
double testY = Math.sin(rotang) * dirStart.getX() + Math.cos(rotang) * dirStart.getY();
- if (Math.abs(testY) > tol) rotang = -rotang;
+ if (Math.abs(testY) > tolerance) rotang = -rotang;
// Construct rotation matrix
R = new Matrix2D(2, 2,
@@ -1397,5 +1492,4 @@ VectorND shift(Vector2D vector)
return vector.subtract(shiftVector);
}
}
-
}
diff --git a/src/jblockmain/IPlottable.java b/src/jblockmain/IPlottable.java
index 397d12f..4ef0e47 100644
--- a/src/jblockmain/IPlottable.java
+++ b/src/jblockmain/IPlottable.java
@@ -1,5 +1,7 @@
package jblockmain;
+import dxfwriter.DxfFileConfiguration;
+
import java.io.File;
import java.util.ArrayList;
@@ -55,8 +57,7 @@ public interface IPlottable
* Write all blocks to DXF files showing the information indicated by the dxfLayerChooser array.
*
* @param fileOutput output file path.
- * @param dxfLayerChooser array of flags indicating content to write to drawing.
+ * @param config configuration of the file.
*/
- // TODO: Need to improve this definition as boolean[] should have a defined length if in an interface. Ideally should be its own class.
- void writeToDXF(File fileOutput, boolean[] dxfLayerChooser, String timeStamp);
+ void writeToDXF(File fileOutput, DxfFileConfiguration config);
}
diff --git a/src/jblockmain/InputFileData.java b/src/jblockmain/InputFileData.java
new file mode 100644
index 0000000..2b48310
--- /dev/null
+++ b/src/jblockmain/InputFileData.java
@@ -0,0 +1,204 @@
+package jblockmain;
+
+import javafx.scene.control.Alert;
+import javafx.scene.control.ButtonType;
+import javafx.util.Pair;
+import jblockexceptions.MeasurementNotFoundException;
+
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * Encapsulates the input data files which follow the prescribed format.
+ */
+public class InputFileData
+{
+ /**
+ * Name of the input file
+ */
+ private String scanDataFileName;
+
+ /**
+ * Dictionary of measurements, one for each individual read in from the input files.
+ */
+ private final HashMap> inputValuesByUser = new HashMap<>();
+
+ /**
+ * Local cache of the names and IDs of the measures available in the file
+ */
+ private List valuesAvailable;
+
+ /**
+ * Constructor which takes an input file name.
+ *
+ * @param scanDataFileName name of input file to read from.
+ * @param headersOnly just read the headers and not the values.
+ */
+ public InputFileData(String scanDataFileName, boolean headersOnly)
+ {
+ try
+ {
+ this.scanDataFileName = scanDataFileName;
+
+ // Open file and get an input stream
+ FileReader fileReader = new FileReader(scanDataFileName);
+ BufferedReader fileBuffer = new BufferedReader(fileReader);
+
+ // Process the file one line at a time
+ String line;
+ while ((line = fileBuffer.readLine()) != null)
+ {
+ // Find header line indicating measurements available
+ if (line.contains("[") && line.contains("]"))
+ {
+ valuesAvailable = processHeadings(line);
+ if (headersOnly) break;
+ }
+ else if (line.length() > 0)
+ {
+ processInputValues(line);
+ }
+ }
+
+ // Close file
+ fileBuffer.close();
+ fileReader.close();
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ var a = new Alert(Alert.AlertType.ERROR);
+ a.setHeaderText("There was a problem understanding your input file");
+ a.setContentText("Please go back and check its format or choose a different file");
+ a.show();
+ }
+ }
+
+ /**
+ * Getter for the list of individuals in the measurements object.
+ *
+ * @return list of names
+ */
+ public ArrayList getUserNames()
+ {
+ return new ArrayList<>(inputValuesByUser.keySet());
+ }
+
+ /**
+ * Getter for a specific input value for a user
+ *
+ * @param user user store to look at.
+ * @param id ID of the value type in conforming format.
+ * @return value of the input.
+ * @throws MeasurementNotFoundException when value with specified user or ID does not exist.
+ */
+ public InputValue getInputValue(String user, String id) throws MeasurementNotFoundException
+ {
+ var set = inputValuesByUser.get(user);
+ for (var i : set)
+ {
+ if (i.id.equals(id)) return i;
+ }
+ throw new MeasurementNotFoundException(id);
+ }
+
+ /**
+ * Method to populate list of headings from input file.
+ *
+ * @param line heading line.
+ * @return list of input values with no values
+ */
+ private List processHeadings(String line)
+ {
+ var inputValues = new ArrayList();
+ // Split the line into the id and the name
+ var headings = line.split(",");
+ for (var h : headings)
+ {
+ if (h == null || h.length() < 3) continue;
+ int splitEnd = h.indexOf("]");
+ int splitStart = h.indexOf("[") + 1;
+ if (splitEnd < splitStart)
+ {
+ System.out.println("Could not extract ID from heading: " + h);
+ continue;
+ }
+ String id = h.substring(splitStart, splitEnd).trim();
+ String name = h.substring(splitEnd + 1, h.length()).trim();
+ inputValues.add(new InputValue(id, name, 0));
+ }
+ return inputValues;
+ }
+
+ /**
+ * Method to read in the input values from the file on a given line
+ * @param line input line of text
+ * @throws Exception when value cannot be parsed
+ */
+ private void processInputValues(String line) throws Exception
+ {
+ // If we haven't processed the header row then skip
+ if (valuesAvailable == null)
+ {
+ return;
+ }
+
+ // Split by comma
+ var values = line.split(",");
+
+ // Should be the same number as the headings minus the username
+ assert values.length == valuesAvailable.size() - 1;
+
+ // Process the values
+ String username = null;
+ ArrayList set = new ArrayList<>();
+ for (int i = 0; i < values.length; ++i)
+ {
+ // First entry on a row is the username
+ if (i == 0) username = values[0].trim();
+ else
+ {
+ var val = Double.parseDouble(values[i]);
+ set.add(
+ new InputValue(
+ valuesAvailable.get(i - 1).id,
+ valuesAvailable.get(i - 1).name,
+ val
+ )
+ );
+ }
+ }
+ if (username != null && !username.isBlank()) inputValuesByUser.put(username, set);
+ }
+
+ /**
+ * Gets a list of input value ID and name pairs
+ * @return list of pairs
+ */
+ public List> getAvailableInputValues()
+ {
+ var pairs = new ArrayList>();
+ for (var i : valuesAvailable)
+ {
+ pairs.add(new Pair<>(i.id, i.name));
+ }
+ return pairs;
+ }
+
+ /**
+ * Gets a list of IDs of the input values
+ * @return list of IDs
+ */
+ public List getAvailableInputValueIds()
+ {
+ var ids = new ArrayList();
+ for (var i : valuesAvailable)
+ {
+ ids.add(i.id);
+ }
+ return ids;
+ }
+}
\ No newline at end of file
diff --git a/src/jblockmain/InputValue.java b/src/jblockmain/InputValue.java
new file mode 100644
index 0000000..027eb48
--- /dev/null
+++ b/src/jblockmain/InputValue.java
@@ -0,0 +1,18 @@
+package jblockmain;
+
+/**
+ * A value supplied in an input file
+ */
+public class InputValue
+{
+ public final String name;
+ public final String id;
+ public final double value;
+
+ public InputValue(String id, String name, double value)
+ {
+ this.id = id;
+ this.name = name;
+ this.value = value;
+ }
+}
diff --git a/src/jblockmain/JBlockCreator.form b/src/jblockmain/JBlockCreator.form
deleted file mode 100644
index e716ccc..0000000
--- a/src/jblockmain/JBlockCreator.form
+++ /dev/null
@@ -1,828 +0,0 @@
-
-
diff --git a/src/jblockmain/JBlockCreator.java b/src/jblockmain/JBlockCreator.java
deleted file mode 100644
index 03d490e..0000000
--- a/src/jblockmain/JBlockCreator.java
+++ /dev/null
@@ -1,1177 +0,0 @@
-package jblockmain;
-
-import analysis.RectanglePlot;
-import beazleybond.BodicePattern;
-import beazleybond.SkirtPattern;
-import beazleybond.StraightSleevePattern;
-import beazleybond.TrouserPattern;
-import jblockenums.EMsgType;
-
-import javax.swing.*;
-import javax.swing.border.Border;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
-import java.awt.*;
-import java.awt.event.*;
-import java.io.File;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.ResourceBundle;
-
-/**
- * Class bound the GUI form
- */
-public class JBlockCreator
- extends JFrame
-{
-
- /**
- * Global tolerance for some numerical operations
- */
- public static final double tol = 10e-8;
- public static ResourceBundle bundle = ResourceBundle.getBundle("strings");
- /**
- * Name of failed output file
- */
- static final String failedOutputsFilename = bundle.getString("failed_out_file");
- /**
- * Limit of characters to display in file paths
- */
- private final int charDisplayLimit = 100;
- /**
- * Declaration of backend components.
- */
-
- // Panels
- private JPanel panelMain;
- private JPanel panelPatterns;
- private JPanel panelCommonHeader;
- private JPanel panelPatternOutputOptions;
- private JPanel panelPlotOutputOptions;
- private JPanel panelAnalysis;
- // Labels
- private JLabel labAldrich;
- private JLabel labBeazleyBond;
- private JLabel labGill;
- private JLabel labOpenPath;
- private JLabel labSavePath;
- private JLabel labXID;
- private JLabel labYID;
- // Check boxes
- private JCheckBox checkAldrichSkirt;
- private JCheckBox checkAldrichTrousers;
- private JCheckBox checkBeazleySkirt;
- private JCheckBox checkGillSkirt;
- private JCheckBox checkGillTrouserOne;
- private JCheckBox checkBeazleyStraightSleeve;
- private JCheckBox checkBeazleyTrousers;
- private JCheckBox checkBeazleyBodice;
- private JCheckBox checkScaleBoxAndUser;
- private JCheckBox checkPatternOutline;
- private JCheckBox checkKeypointsAsCircles;
- private JCheckBox checkKeypointCoordinates;
- private JCheckBox checkConstructionLines;
- private JCheckBox checkRectanglePlot;
- private JCheckBox checkLayeredRectPlot;
- private JCheckBox checkScaleBoxAndUserAnalysis;
- private JCheckBox checkConnectingLinesAnalysis;
- private JCheckBox checkKeypointsAsCirclesAnalysis;
- private JCheckBox checkKeypointCoordinatesAnalysis;
- private JCheckBox checkGillSweatshirt;
- // Buttons
- private JButton butRun;
- private JButton butSave;
- private JButton butLoad;
- // Tabbed panes
- private JTabbedPane tabbedPane;
- // Text Input Fields
- private JTextField textFieldPlotXID;
- private JTextField textFieldPlotYID;
- // Images
- private JLabel imageUomLogo;
- private JPanel panelPatternsWrapper;
- private JPanel imagePatternWrapper;
- private JPanel panelAnalysisWrapper;
- private JPanel imageAnalysisWrapper;
- private JLayeredPane stackedPatternSample;
- private JLayeredPane stackedAnalysisSample;
- private JCheckBox timeStampCheckBox;
- // Ease Buttons
- private JButton aldrichSkirtEaseButton;
- private JButton aldrichTrouserEaseButton;
- private JButton gillSweatShirtEaseButton;
- private JButton beazleyBondSkirtEaseButton;
- private JButton beazleyBondTrouserEaseButton;
- private JButton beazleyBondBodiceEaseButton;
- private JButton beazleyBondStraightSleeveEaseButton;
- private JButton gillSkirtEaseButton;
- private JButton gillTrouserOneEaseButton;
- private JLabel labAhmed;
- private JCheckBox checkAhmedBodice;
- private JButton ahmedBodiceEaseButton;
- private JCheckBox checkGillTrouserTwo;
- private JButton gillTrouserTwoEaseButton;
- // Layers
- private ArrayList paneLayers;
- // Internal fields
- private File fileOutput = null;
- private File fileInput = null;
- private boolean[] dxfLayerChoices = new boolean[5];
- private boolean[] dxfLayersAnalysis = new boolean[4];
- private boolean isLayeredRectPlot;
- private boolean isRectanglePlot;
- private boolean isRunning = false;
-
- /**
- * Private constructor for the form-bound class
- */
- private JBlockCreator()
- {
- /* Add listeners */
-
- // Listener for the Run button
- butRun.addActionListener(e -> runClickedEvent());
-
- // Attach listener to open button
- butLoad.addActionListener(e -> openClickedEvent());
-
- // Attach listener to save button
- butSave.addActionListener(e -> saveClickedEvent());
-
- // Attach listener to rectangle plot x-axis text field
- textFieldPlotXID.addActionListener(e -> onXIdEntered());
-
- // Attach listener to rectangle plot y-axis
- textFieldPlotYID.addActionListener(e -> onYIdEntered());
-
- // Attach listener to rectangle plot layered checkbox
- checkLayeredRectPlot.addActionListener(e -> layeredRectanglePlot());
-
- // Attach listener to rectangle plot (plain) checkbox
- checkRectanglePlot.addActionListener(e -> rectanglePlot());
-
- // Attached listener to the ID text boxes
- textFieldPlotXID.addFocusListener(new FocusListener()
- {
- @Override
- public void focusGained(FocusEvent e)
- {
- }
-
- @Override
- public void focusLost(FocusEvent e)
- {
- onXIdEntered();
- }
- });
-
- textFieldPlotYID.addFocusListener(new FocusListener()
- {
- @Override
- public void focusGained(FocusEvent e)
- {
- }
-
- @Override
- public void focusLost(FocusEvent e)
- {
- onYIdEntered();
- }
- });
-
- // Attach listener to DXF layer checkboxes //
-
- // Pattern pane
- checkScaleBoxAndUser.addActionListener(e ->
- {
- if (!checkScaleBoxAndUser.isSelected())
- stackedPatternSample.setLayer(paneLayers.get(5), 0);
- else stackedPatternSample.setLayer(paneLayers.get(5), 1);
- });
- checkPatternOutline.addActionListener(e ->
- {
- if (!checkPatternOutline.isSelected())
- stackedPatternSample.setLayer(paneLayers.get(4), 0);
- else stackedPatternSample.setLayer(paneLayers.get(4), 1);
- });
- checkKeypointsAsCircles.addActionListener(e ->
- {
- if (!checkKeypointsAsCircles.isSelected())
- stackedPatternSample.setLayer(paneLayers.get(3), 0);
- else stackedPatternSample.setLayer(paneLayers.get(3), 1);
- });
- checkKeypointCoordinates.addActionListener(e ->
- {
- if (!checkKeypointCoordinates.isSelected())
- stackedPatternSample.setLayer(paneLayers.get(2), 0);
- else stackedPatternSample.setLayer(paneLayers.get(2), 1);
- });
- checkConstructionLines.addActionListener(e ->
- {
- if (!checkConstructionLines.isSelected())
- stackedPatternSample.setLayer(paneLayers.get(1), 0);
- else stackedPatternSample.setLayer(paneLayers.get(1), 1);
- });
-
- // Analysis pane
- checkScaleBoxAndUserAnalysis.addActionListener(e ->
- {
- if (!checkScaleBoxAndUserAnalysis.isSelected())
- stackedAnalysisSample.setLayer(paneLayers.get(10), 0);
- else stackedAnalysisSample.setLayer(paneLayers.get(10), 1);
- });
- checkConnectingLinesAnalysis.addActionListener(e ->
- {
- if (!checkConnectingLinesAnalysis.isSelected())
- stackedAnalysisSample.setLayer(paneLayers.get(9), 0);
- else stackedAnalysisSample.setLayer(paneLayers.get(9), 1);
- });
- checkKeypointsAsCirclesAnalysis.addActionListener(e ->
- {
- if (!checkKeypointsAsCirclesAnalysis.isSelected())
- stackedAnalysisSample.setLayer(paneLayers.get(8), 0);
- else stackedAnalysisSample.setLayer(paneLayers.get(8), 1);
- });
- checkKeypointCoordinatesAnalysis.addActionListener(e ->
- {
- if (!checkKeypointCoordinatesAnalysis.isSelected())
- stackedAnalysisSample.setLayer(paneLayers.get(7), 0);
- else
- stackedAnalysisSample.setLayer(paneLayers.get(7), 1);
- });
- checkAldrichSkirt.addActionListener(e ->
- {
- aldrich.SkirtPattern.populateEaseMeasurements();
- aldrichSkirtEaseButton.setVisible(!aldrichSkirtEaseButton.isVisible());
- });
-
- checkAldrichTrousers.addActionListener(e ->
- {
- aldrich.TrouserPattern.populateEaseMeasurements();
- aldrichTrouserEaseButton.setVisible(
- !aldrichTrouserEaseButton.isVisible());
- });
-
- checkBeazleySkirt.addActionListener(e ->
- {
- beazleybond.SkirtPattern.populateEaseMeasurements();
- beazleyBondSkirtEaseButton.setVisible(
- !beazleyBondSkirtEaseButton.isVisible());
- });
-
- checkBeazleyTrousers.addActionListener(e ->
- {
- beazleybond.TrouserPattern.populateEaseMeasurements();
- beazleyBondTrouserEaseButton.setVisible(
- !beazleyBondTrouserEaseButton.isVisible());
- });
-
- checkBeazleyBodice.addActionListener(e ->
- {
- beazleybond.BodicePattern.populateEaseMeasurements();
- beazleyBondBodiceEaseButton.setVisible(
- !beazleyBondBodiceEaseButton.isVisible());
- });
-
- checkBeazleyStraightSleeve.addActionListener(e ->
- {
- beazleybond.StraightSleevePattern.populateEaseMeasurements();
- beazleyBondStraightSleeveEaseButton.setVisible(
- !beazleyBondStraightSleeveEaseButton.isVisible());
- });
-
- checkGillSkirt.addActionListener(e ->
- {
- gill.SkirtPattern.populateEaseMeasurements();
- gillSkirtEaseButton.setVisible(!gillSkirtEaseButton.isVisible());
- });
-
- checkGillTrouserOne.addActionListener(e ->
- {
- gill.TrouserPattern.populateEaseMeasurements();
- gillTrouserOneEaseButton.setVisible(
- !gillTrouserOneEaseButton.isVisible());
- });
-
- checkGillTrouserTwo.addActionListener(e ->
- {
- gill.TrouserPatternTwo.populateEaseMeasurements();
- gillTrouserTwoEaseButton.setVisible(
- !gillTrouserTwoEaseButton.isVisible());
- });
-
- checkGillSweatshirt.addActionListener(e ->
- {
- gill.SweatShirtPattern.populateEaseMeasurements();
- gillSweatShirtEaseButton.setVisible(
- !gillSweatShirtEaseButton.isVisible());
- });
-
- checkAhmedBodice.addActionListener(e ->
- {
- ahmed.BodicePattern.populateEaseMeasurements();
- ahmedBodiceEaseButton.setVisible(!ahmedBodiceEaseButton.isVisible());
- });
-
- // Aldrich Ease Button Listeners
- aldrichSkirtEaseButton.addActionListener(e ->
- {
- easeButtonClickedEvent(aldrich.SkirtPattern.getEaseMeasurement());
- });
-
- aldrichTrouserEaseButton.addActionListener(e ->
- {
- easeButtonClickedEvent(
- aldrich.TrouserPattern.getEaseMeasurement());
- });
-
- // Beazley bond Ease button listeners
-
- beazleyBondSkirtEaseButton.addActionListener(e ->
- {
- easeButtonClickedEvent(
- beazleybond.SkirtPattern.getEaseMeasurement());
- });
-
- beazleyBondTrouserEaseButton.addActionListener(e ->
- {
- easeButtonClickedEvent(
- beazleybond.TrouserPattern.getEaseMeasurement());
- });
-
- beazleyBondBodiceEaseButton.addActionListener(e ->
- {
- easeButtonClickedEvent(
- beazleybond.BodicePattern.getEaseMeasurement());
- });
-
- beazleyBondStraightSleeveEaseButton.addActionListener(e ->
- {
- easeButtonClickedEvent(
- beazleybond.StraightSleevePattern.getEaseMeasurement());
- });
-
- // Gill Ease Buttons
- gillSkirtEaseButton.addActionListener(e ->
- {
- easeButtonClickedEvent(gill.SkirtPattern.getEaseMeasurement());
- });
-
- gillTrouserOneEaseButton.addActionListener(e ->
- {
- easeButtonClickedEvent(gill.TrouserPattern.getEaseMeasurement());
- });
-
- gillTrouserTwoEaseButton.addActionListener(e ->
- {
- easeButtonClickedEvent(
- gill.TrouserPatternTwo.getEaseMeasurement());
- });
-
- gillSweatShirtEaseButton.addActionListener(e ->
- {
- easeButtonClickedEvent(
- gill.SweatShirtPattern.getEaseMeasurement());
- });
-
- ahmedBodiceEaseButton.addActionListener(e ->
- {
- easeButtonClickedEvent(ahmed.BodicePattern.getEaseMeasurement());
- });
-
- }
-
- /**
- * Entry point
- *
- * @param args command line arguments
- */
- public static void main(String[] args)
- {
- // Create a JFrame instance
- JFrame frame = new JFrame(bundle.getString("app_name") + " - v"
- + bundle.getString("maj_ver") + "."
- + bundle.getString("min_ver"));
- final JBlockCreator block = new JBlockCreator();
- frame.setContentPane(block.panelMain);
- frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
- frame.pack();
-
- // Centre on screen
- Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
- frame.setLocation(dim.width / 2 - frame.getSize().width / 2,
- dim.height / 2 - frame.getSize().height / 2);
-
- /* MENU BAR SETUP */
-
- // Create a window for the menu
- JFrame frame1 = new JFrame("Menu");
- JPanel panelpattern = new JPanel();
- frame1.getContentPane().add(panelpattern, "Center");
-
- // Create an action listener for the menu items we will create
- ActionListener listener = e ->
- {
- // If statements for if the toolbar menu items are clicked
- JMenuItem item = (JMenuItem) e.getSource();
- String cmd = item.getActionCommand();
- if (cmd.equals("Exit"))
- {
- System.exit(0);
- }
- if (cmd.equals("View help"))
- {
- String url = bundle.getString("guide_url");
- Prompts.infoBox(bundle.getString("help_text") + "See: " + url, "Help", EMsgType.Info);
- }
- if (cmd.equals("Open"))
- {
- block.openClickedEvent();
- }
- if (cmd.equals("Save"))
- {
- block.saveClickedEvent();
- }
- if (cmd.equals("Run"))
- {
- block.runClickedEvent();
- }
- };
-
- // Create some menu panes, and fill them with menu items
- JMenu file = new JMenu("File");
- file.setMnemonic('F');
- file.add(menuItem("Run", listener, "Run", 'R', KeyEvent.VK_R));
- file.addSeparator();
- file.add(menuItem("Exit", listener, "Exit", 'E', KeyEvent.VK_E));
-
- JMenu help = new JMenu("Help");
- help.setMnemonic('H');
- help.add(menuItem("View Help", listener, "View help", 'H', KeyEvent.VK_H));
-
- // Create a menubar and add menus
- JMenuBar menubar = new JMenuBar();
- menubar.add(file);
- menubar.add(help);
-
- // Add menubar to the main window
- frame.setJMenuBar(menubar);
-
- // Finally, make our main window
- frame.pack();
- block.setComponentsInvisible(block.panelPatterns, new JButton());
- frame.setResizable(false);
- frame.setVisible(true);
- }
-
- /**
- * A utility method for creating menu items
- *
- * @param label menu label
- * @param listener click listener
- * @param command name of command
- * @param mnemonic underlined letter
- * @param acceleratorKey key binding
- * @return menu item
- */
- private static JMenuItem menuItem(String label,
- ActionListener listener, String command,
- int mnemonic, int acceleratorKey)
- {
- JMenuItem item = new JMenuItem(label);
- item.addActionListener(listener);
- item.setActionCommand(command);
- if (mnemonic != 0) item.setMnemonic((char) mnemonic);
- if (acceleratorKey != 0)
- item.setAccelerator(KeyStroke.getKeyStroke(acceleratorKey,
- InputEvent.CTRL_MASK));
- return item;
- }
-
- /**
- * A utility method for creating radio button menu items
- *
- * @param label button label
- * @param listener click listener
- * @param command name of command
- * @param mutExGroup group tag
- * @return radio button
- */
- private static JMenuItem radioItem(String label, ActionListener listener,
- String command, ButtonGroup mutExGroup)
- {
- JMenuItem item = new JRadioButtonMenuItem(label);
- item.addActionListener(listener);
- item.setActionCommand(command);
- mutExGroup.add(item);
- return item;
- }
-
- /**
- * To deal with resizing issues whereby components which cause jframe to change size when set to visible cause bits to push out
- *
- * @param whichPanel the Panel in which everything underneath it will be searched for the particular component but not including the panel
- * @param type the type of component you want to set invisibile, i.e JButton will set all buttons to invisible
- */
- private void setComponentsInvisible(Container whichPanel, Component type)
- {
- // Go through all the components in the container
- for (int i = 0; i < whichPanel.getComponentCount(); i++)
- {
- // If the type of component is either a JPanel or JTabbedPane, go through that panel (recursively)
- if (whichPanel.getComponent(i) instanceof JPanel || whichPanel.getComponent(i) instanceof JTabbedPane)
- {
- setComponentsInvisible((JPanel) whichPanel.getComponent(i), type);
- }
- // If the type of component in the containing panel is of type type, set that component invisible
- if (whichPanel.getComponent(i).getClass() == type.getClass())
- {
- ((whichPanel).getComponent(i)).setVisible(false);
- }
- }
- }
-
- /**
- * Event method for updating dynamic text on UI when X ID changed
- */
- private void onXIdEntered()
- {
- onIdEntered(textFieldPlotXID, labXID);
- }
-
- /**
- * Event method for updating dynamic text on UI when Y ID changed
- */
- private void onYIdEntered()
- {
- onIdEntered(textFieldPlotYID, labYID);
- }
-
- /**
- * Event method for updating dynamic text on UI when X or Y ID changed
- */
- private void onIdEntered(JTextField textBox, JLabel outLabel)
- {
- String id = textBox.getText();
- try
- {
- if (id.length() == 0)
- {
- outLabel.setText("None");
- return;
- }
- if (Measurements.checkIdFormat(id)) outLabel.setText(id);
- else throw new Exception();
- }
- catch (Exception e)
- {
- textBox.setText("");
- Prompts.infoBox(bundle.getString("format_msg"), "Invalid ID", EMsgType.Error);
- }
- }
-
- /**
- * Method run when the save button is clicked
- */
- private void saveClickedEvent()
- {
- // Choose a folder location to save the output files
- // Opens a file explorer for users to choose directory
- JFileChooser fileChooser = new JFileChooser();
- fileChooser.setCurrentDirectory(fileOutput);
- fileChooser.setDialogTitle("Select Save Location");
- fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
- fileChooser.setAcceptAllFileFilterUsed(false);
-
- if (fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
- {
- // Update save path
- String filepath = fileChooser.getSelectedFile().toString();
- if (filepath.length() > charDisplayLimit)
- {
- filepath = filepath.substring(0, charDisplayLimit) + "...";
- }
- labSavePath.setText(filepath);
- JBlockCreator.this.fileOutput = fileChooser.getSelectedFile();
- }
- }
-
- /**
- * Method run when the open button is clicked
- */
- private void openClickedEvent()
- {
- // Choose a folder input
- JFileChooser fileChooser = new JFileChooser();
- fileChooser.setCurrentDirectory(fileInput);
- fileChooser.setDialogTitle("Select Input Measurements File");
- if (fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
- {
- // Store input file name and path
- JBlockCreator.this.fileInput = fileChooser.getSelectedFile();
- String filename = fileChooser.getSelectedFile().toString();
- if (filename.length() > charDisplayLimit)
- {
- filename = filename.substring(0, charDisplayLimit) + "...";
- }
- labOpenPath.setText(filename);
- }
- }
-
- /**
- * Method to update text on run buttons
- *
- * @param text Text to set on the button
- */
- private void setRunButtonText(String text)
- {
- butRun.setText(text);
- }
-
- /**
- * Method run when the run button clicked.
- */
- private void runClickedEvent()
- {
- if (!isRunning)
- {
- isRunning = true;
- new RunThread().start();
- }
- }
-
- /**
- * Method run when an ease button is clicked.
- *
- * @param easeMeasurements The ease measurements to display
- */
- private void easeButtonClickedEvent(ArrayList easeMeasurements)
- {
- if (isRunning)
- {
- return;
- }
- try
- {
- isRunning = true;
- createEaseForm(easeMeasurements);
- }
- catch (Exception j)
- {
- isRunning = false;
- j.printStackTrace();
- Prompts.infoBox("No Associated Ease", "Ease", EMsgType.Error);
- }
- }
-
- /**
- * Method to set ifLayeredRectanglePlot boolean
- */
- private void layeredRectanglePlot()
- {
- if (checkLayeredRectPlot.isSelected())
- {
- isLayeredRectPlot = true;
- }
- else if (!checkLayeredRectPlot.isSelected())
- {
- isLayeredRectPlot = false;
- }
- }
-
- /**
- * Method to set isRectanglePlot boolean
- */
- private void rectanglePlot()
- {
- if (checkRectanglePlot.isSelected())
- {
- isRectanglePlot = true;
- }
- else if (!checkRectanglePlot.isSelected())
- {
- isRectanglePlot = false;
- }
- }
-
- /**
- * Method to populate the pattern boolean array of DXF layer configuration
- */
- private void getLayerInformationPatterns()
- {
- dxfLayerChoices[0] = checkScaleBoxAndUser.isSelected();
- dxfLayerChoices[1] = checkPatternOutline.isSelected();
- dxfLayerChoices[2] = checkKeypointsAsCircles.isSelected();
- dxfLayerChoices[3] = checkKeypointCoordinates.isSelected();
- dxfLayerChoices[4] = checkConstructionLines.isSelected();
- }
-
- /**
- * Method to populate the analysis boolean array of DXF layer configuration
- */
- private void getLayerInformationAnalysis()
- {
- dxfLayersAnalysis[0] = checkScaleBoxAndUserAnalysis.isSelected();
- dxfLayersAnalysis[1] = checkConnectingLinesAnalysis.isSelected();
- dxfLayersAnalysis[2] = checkKeypointsAsCirclesAnalysis.isSelected();
- dxfLayersAnalysis[3] = checkKeypointCoordinatesAnalysis.isSelected();
- }
-
- /**
- * Method to create an initialise a layer in the layered pane
- *
- * @param filename name of image file to load
- * @param size size of the layer
- * @return image as a JLabel
- */
- private JLabel createLayer(String filename, Dimension size)
- {
- // Get scaled image icon
- ImageIcon imageIcon = new ImageIcon(filename);
- Image origImg = imageIcon.getImage();
- Image newImg = origImg.getScaledInstance(size.width, size.height, Image.SCALE_SMOOTH);
-
- // Create the JLabel as a layer
- JLabel layer = new JLabel(new ImageIcon(newImg));
-
- // No layout manager so initialise this stuff myself
- layer.setVerticalAlignment(JLabel.TOP);
- layer.setHorizontalAlignment(JLabel.CENTER);
- layer.setOpaque(true);
- layer.setForeground(Color.black);
- layer.setBorder(BorderFactory.createLineBorder(Color.black));
- layer.setPreferredSize(size);
- layer.setBounds(0, 0, size.width, size.height);
- layer.setBackground(new Color(0, 0, 0, 0)); // Important for transparency to work!
-
- // Add to layer list
- if (paneLayers == null) paneLayers = new ArrayList<>();
- paneLayers.add(layer);
-
- return layer;
- }
-
- /**
- * Method to add assets to image components of UI
- */
- private void createUIComponents()
- {
- // Setup the layered images and stash
-
- // Pattern pane
- stackedPatternSample = new JLayeredPane();
- stackedPatternSample.setPreferredSize(new Dimension(435, 435));
- stackedPatternSample.add(
- createLayer("./images/PatternSample_00000.png", stackedPatternSample.getPreferredSize()), 0);
- stackedPatternSample.add(
- createLayer("./images/PatternSample_00001.png", stackedPatternSample.getPreferredSize()), 0);
- stackedPatternSample.add(
- createLayer("./images/PatternSample_00010.png", stackedPatternSample.getPreferredSize()), 0);
- stackedPatternSample.add(
- createLayer("./images/PatternSample_00100.png", stackedPatternSample.getPreferredSize()), 0);
- stackedPatternSample.add(
- createLayer("./images/PatternSample_01000.png", stackedPatternSample.getPreferredSize()), 0);
- stackedPatternSample.add(
- createLayer("./images/PatternSample_10000.png", stackedPatternSample.getPreferredSize()), 0);
-
- // Analysis pane
- stackedAnalysisSample = new JLayeredPane();
- stackedAnalysisSample.setPreferredSize(stackedPatternSample.getPreferredSize());
- stackedAnalysisSample.add(
- createLayer("./images/AnalysisSample_0000.png", stackedPatternSample.getPreferredSize()), 0);
- stackedAnalysisSample.add(
- createLayer("./images/AnalysisSample_0001.png", stackedPatternSample.getPreferredSize()), 0);
- stackedAnalysisSample.add(
- createLayer("./images/AnalysisSample_0010.png", stackedPatternSample.getPreferredSize()), 0);
- stackedAnalysisSample.add(
- createLayer("./images/AnalysisSample_0100.png", stackedPatternSample.getPreferredSize()), 0);
- stackedAnalysisSample.add(
- createLayer("./images/AnalysisSample_1000.png", stackedPatternSample.getPreferredSize()), 0);
-
- // Create logo
- imageUomLogo = new JLabel(new ImageIcon("./images/logo_small.jpg"));
- }
-
- protected void createEaseForm(ArrayList easeMeasurements)
- {
- // If Empty, just pop-up a message box to dev to notify their measurements are empty
- int size = easeMeasurements.size();
- if (size == 0)
- {
- Prompts.infoBox("No Associated Ease", "Ease", EMsgType.Info);
- isRunning = false;
- return;
- }
-
- // Create a new Frame which will contain the ease components
- JFrame easeFrame = new JFrame();
- easeFrame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
-
- GridBagConstraints gbc = new GridBagConstraints();
- gbc.fill = GridBagConstraints.HORIZONTAL;
- gbc.insets = new Insets(5, 5, 5, 5);
-
- // An array of sliders, used to store and then modify the measurements
- JSlider[] newValuesSlider = new JSlider[size];
-
- // Borders for all the main Text areas
- Border nameBorders = BorderFactory.createEtchedBorder();
-
- JPanel main = new JPanel(new GridBagLayout());
-
- JLabel easeNamesLabel = new JLabel("Measurement Name", SwingConstants.LEADING);
- easeNamesLabel.setBorder(nameBorders);
- JLabel currentValuesLabel = new JLabel("Current Value", SwingConstants.CENTER);
- currentValuesLabel.setBorder(nameBorders);
- JLabel newValuesLabel = new JLabel("Adjustment", SwingConstants.CENTER);
- newValuesLabel.setBorder(nameBorders);
-
- // First add the main names at the top
- // Give them all the same weight
- gbc.weightx = 0.2;
- gbc.gridy = 0;
-
- // Add them in horizontal order
- gbc.gridx = 0;
- main.add(easeNamesLabel, gbc);
-
- gbc.gridx = 1;
- main.add(currentValuesLabel, gbc);
-
- gbc.gridx = 2;
- gbc.gridwidth = 2;
- main.add(newValuesLabel, gbc);
-
- gbc.gridy = 1;
- gbc.gridx = 0;
- gbc.gridwidth = 5;
- gbc.weightx = 1;
- gbc.weighty = 1;
- gbc.ipadx = 0;
-
- // Mainly just for visual appeal
- JSeparator menuSeperator = new JSeparator();
- menuSeperator.setPreferredSize(new Dimension(1, 1));
- main.add(menuSeperator, gbc);
-
- gbc.gridwidth = 1;
- gbc.weightx = 0.2;
-
- // Loop through the arraylist of easeMeasurements and add them in consecutive vertical order
- for (int i = 0; i < size; i++)
- {
-
- // Relative positioning so all the measurements are stacked below each other
- gbc.gridy = GridBagConstraints.RELATIVE;
- gbc.anchor = GridBagConstraints.EAST;
- gbc.gridx = 0;
- JLabel nameLabel = new JLabel(easeMeasurements.get(i).getName(), SwingConstants.TRAILING);
- main.add(nameLabel, gbc);
-
- gbc.gridx = 1;
- gbc.anchor = GridBagConstraints.CENTER;
-
- // Multiply then divide by 10 to truncate the value shown to 1 DP since for now, only allows adjustments of 0.1
- JTextArea currentValText = new JTextArea(
- ((int) ((easeMeasurements.get(i)).getValue() * 10.0) / 10.0) + " cm");
- currentValText.setEditable(false);
- main.add(currentValText, gbc);
-
- Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
- gbc.weightx = 0.8;
- gbc.gridx = 3;
- gbc.ipadx = (int) (dim.getWidth() / 2);
-
- //set the max and min of the sliders to +-50% of the current plus an additional border of +- 100 which would be +-10.0 in decimal since
- // Get the current value and increase by 50%, use *5 because all values are multiplied by 10 for the slider
- int limits = (int) (Math.abs(easeMeasurements.get(i).getValue() * 5));
-
- // Set the Min and max values on the slider as the current value +-50% of the current value and a border of +- 100 which is +- 10.0
- int min = ((int) (easeMeasurements.get(i).getValue() * 10.0)) - limits - 100;
- int max = ((int) (easeMeasurements.get(i).getValue() * 10.0)) + limits + 100;
-
- // For creating the hash table, we get the sliders to mark every 10% of the way
- int interval = (max / 10);
- Hashtable labelTable = new Hashtable<>();
- //create the Hashtable for each of the sliders
- for (int j = min; j <= max; j += interval)
- {
- labelTable.put(j, new JLabel(Double.toString(j / 10.0)));
- }
-
- // Create the new slider component with set min, max and current value
- newValuesSlider[i] = new JSlider((min), (max), (int) (easeMeasurements.get(i).getValue() * 10.0));
-
- // This would mean 0.1 in double terms
- newValuesSlider[i].setMinorTickSpacing(1);
- newValuesSlider[i].setMajorTickSpacing(interval);
- newValuesSlider[i].setLabelTable(labelTable);
- newValuesSlider[i].setSnapToTicks(true);
- newValuesSlider[i].setPaintLabels(true);
- newValuesSlider[i].setPaintTicks(true);
- main.add(newValuesSlider[i], gbc);
-
- // Addition of a text box to read from the JSlider
- gbc.gridx = 4;
- gbc.weightx = 0.2;
- gbc.ipadx = 10;
- gbc.anchor = GridBagConstraints.WEST;
- JTextArea newValText = new JTextArea((double) newValuesSlider[i].getValue() / 10.0 + "");
- newValText.setEditable(false);
- main.add(newValText, gbc);
-
- // Add a listener for the slider and textbox to update whenever the JSlider is moved to show the value of the slider
- newValuesSlider[i].addChangeListener(new ChangeListener()
- {
- @Override
- public void stateChanged(ChangeEvent e)
- {
- if (e.getSource() instanceof JSlider)
- {
- newValText.setText("" + (double) ((JSlider) e.getSource()).getValue() / 10.0);
- }
- }
- });
- }
-
- // The confirm button to confirm your changes
- JButton confirmButton = new JButton("Confirm");
-
- // Window listener for closing
- easeFrame.addWindowListener(new WindowListener()
- {
- @Override
- public void windowOpened(WindowEvent e)
- {
- }
-
- @Override
- public void windowClosing(WindowEvent e)
- {
- }
-
- @Override
- public void windowIconified(WindowEvent e)
- {
- }
-
- @Override
- public void windowDeiconified(WindowEvent e)
- {
- }
-
- @Override
- public void windowActivated(WindowEvent e)
- {
- }
-
- @Override
- public void windowDeactivated(WindowEvent e)
- {
- }
-
- @Override
- public void windowClosed(WindowEvent e)
- {
- // If they simply close the window, keep old values.
- isRunning = false;
- }
- });
-
- // When button is pressed, disable the button and alter the values in the static easeMeasurement Array List
- // To the Values changed to
- confirmButton.addActionListener(e ->
- {
- confirmButton.setEnabled(false);
- alterValues(newValuesSlider, easeMeasurements);
- easeFrame.dispose();
- });
-
- gbc.gridy = GridBagConstraints.RELATIVE;
- gbc.gridx = GridBagConstraints.RELATIVE;
- main.add(confirmButton);
-
- // Finally finish up the ease frame and make it visible
- easeFrame.getContentPane().removeAll();
- easeFrame.getContentPane().add(main);
- easeFrame.pack();
- easeFrame.setLocationRelativeTo(null);
- easeFrame.setResizable(false);
- easeFrame.setVisible(true);
- }
-
- private void alterValues(JSlider[] newValues, ArrayList alteringValues)
- {
- for (int i = 0; i < alteringValues.size(); i++)
- {
- // Divide by 10.0 since the slider only deals with integers, hence initially multiplied by 10 to get it to emulate decimals
- alteringValues.get(i).setValue((double) newValues[i].getValue() / 10.0);
- }
- }
-
- /**
- * Background thread to perform operations when run button is pressed.
- */
- private class RunThread
- extends Thread
- {
- @Override
- public void run()
- {
- String timeStamp = null;
- if (timeStampCheckBox.isSelected())
- {
- timeStamp = new java.text.SimpleDateFormat("yyyy-MM-dd_HH-mm-ss").format(new java.util.Date());
- }
- try
- {
- // Handle missing options
- if (fileInput == null)
- {
- Prompts.infoBox("Please choose your input file before running the software.",
- "Input File Needed",
- EMsgType.Error);
- throw new Exception("Tried to run without selecting input file.");
- }
- if (fileOutput == null)
- {
- Prompts.infoBox("Please choose a directory in which to write the output files.",
- "Output Directory Needed",
- EMsgType.Error);
- throw new Exception("Tried to run without selecting output folder.");
- }
-
- if (fileOutput != null && fileInput != null)
- {
- // Update run button text to running
- setRunButtonText("Running...");
-
- // Create a new measurements instance from the input file selected
- Measurements measurements = new Measurements(JBlockCreator.this.fileInput.toString());
-
- // Populate the boolean arrays from the chosen output options
- getLayerInformationPatterns();
- getLayerInformationAnalysis();
-
- // Create the plot if necessary
- RectanglePlot plot = null;
- if (checkRectanglePlot.isSelected() || checkLayeredRectPlot.isSelected())
- plot = new RectanglePlot(measurements,
- labXID.getText(),
- labYID.getText(),
- isLayeredRectPlot, isRectanglePlot);
-
- // Create patterns
- for (int i = 0; i < measurements.getNames().size(); i++)
- {
- measurements.setCurrentUser(i);
-
- // Creates patterns depending on which checkboxes are ticked
- if (checkBeazleySkirt.isSelected())
- {
- SkirtPattern bb_skirt = new SkirtPattern(measurements);
- bb_skirt.writeToDXF(fileOutput, dxfLayerChoices, timeStamp);
- }
-
- if (checkBeazleyTrousers.isSelected())
- {
- TrouserPattern bb_trouser = new TrouserPattern(measurements);
- bb_trouser.writeToDXF(fileOutput, dxfLayerChoices, timeStamp);
- }
-
- if (checkBeazleyBodice.isSelected())
- {
- BodicePattern bb_bodice = new BodicePattern(measurements);
- bb_bodice.writeToDXF(fileOutput, dxfLayerChoices, timeStamp);
- }
-
- if (checkBeazleyStraightSleeve.isSelected())
- {
- StraightSleevePattern bb_sleeve = new StraightSleevePattern(measurements);
- bb_sleeve.writeToDXF(fileOutput, dxfLayerChoices, timeStamp);
- }
-
- if (checkGillSkirt.isSelected())
- {
- gill.SkirtPattern gill_skirt = new gill.SkirtPattern(measurements);
- gill_skirt.writeToDXF(fileOutput, dxfLayerChoices, timeStamp);
- }
-
- if (checkGillTrouserOne.isSelected())
- {
- gill.TrouserPattern gill_trousers = new gill.TrouserPattern(measurements);
- gill_trousers.writeToDXF(fileOutput, dxfLayerChoices, timeStamp);
- }
-
- if (checkGillTrouserTwo.isSelected())
- {
- gill.TrouserPatternTwo gill_trousersTwo = new gill.TrouserPatternTwo(measurements);
- gill_trousersTwo.writeToDXF(fileOutput, dxfLayerChoices, timeStamp);
- }
-
- if (checkAldrichSkirt.isSelected())
- {
- aldrich.SkirtPattern aldrich_skirt = new aldrich.SkirtPattern(measurements);
- aldrich_skirt.writeToDXF(fileOutput, dxfLayerChoices, timeStamp);
- }
-
- if (checkAldrichTrousers.isSelected())
- {
- aldrich.TrouserPattern aldrich_trousers = new aldrich.TrouserPattern(measurements);
- aldrich_trousers.writeToDXF(fileOutput, dxfLayerChoices, timeStamp);
- }
-
- if (checkGillSweatshirt.isSelected())
- {
- gill.SweatShirtPattern gill_sweatshirt = new gill.SweatShirtPattern(measurements);
- gill_sweatshirt.writeToDXF(fileOutput, dxfLayerChoices, timeStamp);
- }
-
- if (checkAhmedBodice.isSelected())
- {
- ahmed.BodicePattern ahmed_bodice = new ahmed.BodicePattern(measurements);
- ahmed_bodice.writeToDXF(fileOutput, dxfLayerChoices, timeStamp);
- }
-
- // Creates analysis outputs depending on which checkboxes are ticked
- if (plot != null) plot.addNewRectangle();
- }
-
- // Write the plot if we created one
- if (plot != null)
- {
- plot.writeToDXF(fileOutput, dxfLayersAnalysis, timeStamp);
- }
-
- // Write out to a text file the patterns that could not be made
- Pattern.printMissingMeasurements(fileOutput);
-
- // Prompt for finishing, two options depending on if some patterns could not be made
- if (Files.exists(Paths.get(fileOutput + "/" + failedOutputsFilename)))
- {
- // Create done prompt
- Prompts.infoBox(
- bundle.getString("failed_output_msg"),
- "Done", EMsgType.Warning);
- }
- else
- {
- // Create done prompt without error indication
- Prompts.infoBox("Done!", "Done", EMsgType.Info);
- }
- }
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- finally
- {
- setRunButtonText("Run");
- isRunning = false;
- }
- }
- }
-}
\ No newline at end of file
diff --git a/src/jblockmain/JBlockCreatorApp.java b/src/jblockmain/JBlockCreatorApp.java
new file mode 100644
index 0000000..b6a113a
--- /dev/null
+++ b/src/jblockmain/JBlockCreatorApp.java
@@ -0,0 +1,38 @@
+package jblockmain;
+
+import javafx.application.Application;
+import javafx.scene.Scene;
+import javafx.stage.Stage;
+import jblockui.UiModel;
+import jfxtras.styles.jmetro.JMetro;
+import jfxtras.styles.jmetro.Style;
+
+import java.io.IOException;
+import java.util.*;
+
+public class JBlockCreatorApp extends Application
+{
+
+ @Override
+ public void start(Stage stage) throws IOException
+ {
+ // Initialise the UIModel
+ var root = UiModel.getInstance().Initialise();
+
+ // Display the scene
+ var bundle = ResourceBundle.getBundle("settings");
+ var title = bundle.getString("app_name") + " - v" + bundle.getString("maj_ver") + "." + bundle.getString("min_ver");
+ Scene scene = new Scene(root,
+ Double.parseDouble(bundle.getString("prefWidth")),
+ Double.parseDouble(bundle.getString("prefHeight")));
+ stage.setTitle(title);
+ JMetro jMetro = new JMetro(Style.LIGHT);
+ jMetro.setScene(scene);
+ stage.setScene(scene);
+ stage.show();
+ }
+
+ public static void main(String[] args) {
+ launch();
+ }
+}
\ No newline at end of file
diff --git a/src/jblockmain/Measurement.java b/src/jblockmain/Measurement.java
new file mode 100644
index 0000000..f97163b
--- /dev/null
+++ b/src/jblockmain/Measurement.java
@@ -0,0 +1,83 @@
+package jblockmain;
+
+import jblockenums.EUnitType;
+
+/**
+ * A measurement associated with a pattern which can be mapped to an input value via an input ID.
+ */
+public class Measurement
+{
+ public final String name;
+ private double value;
+ private String inputId;
+ private EUnitType units = EUnitType.CENTIMETRES;
+
+ public Measurement(String name, double value, String inputId, EUnitType units)
+ {
+ this(name, value, inputId);
+ this.units = units;
+ }
+
+ public Measurement(String name, double value, String inputId)
+ {
+ this(name, value);
+ this.inputId = inputId;
+ }
+
+ public Measurement(String name, double value, EUnitType units)
+ {
+ this(name, value);
+ this.units = units;
+ }
+
+ public Measurement(String name, String inputId, EUnitType units)
+ {
+ this(name, inputId);
+ this.units = units;
+ }
+
+ public Measurement(String name, double value)
+ {
+ this(name);
+ this.value = value;
+ }
+
+ public Measurement(String name, String inputId)
+ {
+ this(name);
+ this.inputId = inputId;
+ }
+
+ public Measurement(String name)
+ {
+ this.name = name;
+ }
+
+ public double getValue()
+ {
+ return value;
+ }
+
+ public Measurement setValue(double value)
+ {
+ this.value = value;
+ return this;
+ }
+
+ public String getInputId()
+ {
+ return inputId;
+ }
+
+ public Measurement setInputId(String id)
+ {
+ this.inputId = id;
+ return this;
+ }
+
+ public String getUnitName()
+ {
+ if (units == null) return null;
+ return units.toString();
+ }
+}
diff --git a/src/jblockmain/MeasurementSet.java b/src/jblockmain/MeasurementSet.java
new file mode 100644
index 0000000..cdc06eb
--- /dev/null
+++ b/src/jblockmain/MeasurementSet.java
@@ -0,0 +1,98 @@
+package jblockmain;
+
+import jblockexceptions.MeasurementNotFoundException;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * A set of measurements
+ */
+public class MeasurementSet
+{
+ private final List measurements = new ArrayList<>();
+
+ public Measurement getMeasurement(String name) throws MeasurementNotFoundException
+ {
+ for (var m : measurements)
+ {
+ if (m.name.equals(name)) return m;
+ }
+ throw new MeasurementNotFoundException(name);
+ }
+
+ public void setValue(String name, double value) throws MeasurementNotFoundException
+ {
+ for (var m : measurements)
+ {
+ if (m.name.equals(name))
+ {
+ m.setValue(value);
+ return;
+ }
+ }
+ throw new MeasurementNotFoundException(name);
+ }
+
+ public void addMeasurement(Measurement newM) throws Exception
+ {
+ for (var m : measurements)
+ {
+ if (m.name.equals(newM.name)) throw new Exception("Measurement already exists in this measurement set!");
+ }
+ measurements.add(newM);
+ }
+
+ /**
+ * Assigns values to the measurements mapped by an ID
+ * @param userName the username to lookup in the input data
+ * @param inputData the input data source
+ * @throws MeasurementNotFoundException measurement not found in the input data
+ */
+ public void mapFromInputData(String userName, InputFileData inputData) throws MeasurementNotFoundException
+ {
+ for (var m : measurements)
+ {
+ if (m.getInputId() != null)
+ m.setValue(inputData.getInputValue(userName, m.getInputId()).value);
+ }
+ }
+
+ /**
+ * Gets measurements for which there is an ID
+ * @return List of IDs
+ */
+ public List getIds()
+ {
+ var ids = new ArrayList();
+ for (var m : measurements)
+ {
+ var id = m.getInputId();
+ if (id != null) ids.add(id);
+ }
+ return ids;
+ }
+
+ /**
+ * Return list of all measurements
+ * @return list of all measurements in the set
+ */
+ public List getAllMeasurements()
+ {
+ return measurements;
+ }
+
+ /**
+ * Assign all values from a template where not mapped by an ID
+ */
+ public void mapFromTemplate(MeasurementSet template) throws MeasurementNotFoundException
+ {
+ // Loop through all measurements
+ for (var m : template.measurements)
+ {
+ // Only assign from template if not mapped to an ID
+ if (m.getInputId() == null)
+ setValue(m.name, m.getValue());
+ }
+ }
+}
diff --git a/src/jblockmain/Measurements.java b/src/jblockmain/Measurements.java
deleted file mode 100644
index 6a8bdc0..0000000
--- a/src/jblockmain/Measurements.java
+++ /dev/null
@@ -1,376 +0,0 @@
-package jblockmain;
-
-import jblockexceptions.MeasurementNotFoundException;
-
-import java.io.BufferedReader;
-import java.io.FileReader;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-
-/**
- * Class to hold the measurements used by the block packages.
- * For now this essentially encapsulates the input data files which follow the prescribed format.
- */
-public class Measurements
-{
- /**
- * Name of the input file
- */
- private String scanDataFileName;
- /**
- * List of hashmaps of measurements, one for each individual read in from the input files.
- */
- private ArrayList> allMeasurements;
- /**
- * Internal ID of current storeMap
- */
- private int currentUser;
- /**
- * List of individuals read in from the input files.
- */
- private ArrayList userNames;
-
- /**
- * Constructor to perform initialisation only.
- */
- private Measurements()
- {
- // Initialise HashMap list
- allMeasurements = new ArrayList<>();
-
- // Initialise names list
- userNames = new ArrayList<>();
- }
-
- /**
- * Constructor which takes an input file name.
- *
- * @param scanDataFileName name of input file to read from.
- */
- public Measurements(String scanDataFileName)
- {
- // Call default constructor to create storage
- this();
-
- // Add a new HashMap for initial individual
- allMeasurements.add(new HashMap<>());
- currentUser = 0;
-
- try
- {
- // Open file and get an input stream
- FileReader fileReader = new FileReader(scanDataFileName);
- BufferedReader fileBuffer = new BufferedReader(fileReader);
-
- // If more than one line with [] in it, assume it is not batched
- int lineCount = 0;
- String line;
- while ((line = fileBuffer.readLine()) != null && lineCount < 2)
- {
- // Check to see if line contains measurement(s)
- if (line.length() > 0 && line.contains("[") && line.contains("]"))
- {
- // Increment counter
- lineCount++;
- }
- }
-
- // If more than 1 line with [] in it then must be a non-batch file
- boolean isBatched = true;
- if (lineCount == 2)
- {
- isBatched = false;
- userNames.add(
- scanDataFileName.substring(
- scanDataFileName.lastIndexOf("\\", scanDataFileName.length() - 4)
- )
- );
- }
-
- // Close file
- fileBuffer.close();
- fileReader.close();
-
- // Re-open the file
- fileReader = new FileReader(scanDataFileName);
- fileBuffer = new BufferedReader(fileReader);
-
- // Call utility method to assign measurements to stores
- assignMeasurements(fileReader, isBatched);
-
- // Close the file
- fileReader.close();
-
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- }
-
- /**
- * Method to check whether user has specified a measurement ID in the correct format. If not an exception is thrown.
- *
- * @param text ID as text.
- * @return Indication whether format is correct.
- */
- public static boolean checkIdFormat(String text) throws Exception
- {
- // If it has leading and trailing brackets remove them first
- if (text.contains("[") && text.contains("]")) text = text.substring(text.indexOf('[') + 1, text.indexOf(']'));
-
- // Check that it is 3 characters long
- if (text.length() != 3) return false;
-
- // Check first character is capital letter
- if ((int) text.charAt(0) < 65 || (int) text.charAt(0) > 90) return false;
-
- // Check remaining characters are all numbers
- for (int ch = 1; ch < 3; ch++)
- {
- if ((int) text.charAt(ch) < 48 || (int) text.charAt(ch) > 57) return false;
- }
-
- // If all tests passed then should be OK
- return true;
- }
-
- /**
- * Getter for the list of individuals in the measurements object.
- *
- * @return list of names
- */
- public ArrayList getNames()
- {
- return userNames;
- }
-
- /**
- * Getter for the input file name.
- *
- * @return input file name.
- */
- public String getScanDataFileName()
- {
- return scanDataFileName;
- }
-
- /**
- * Getter for the current user.
- *
- * @return current user name.
- */
- public String getName()
- {
- return userNames.get(currentUser);
- }
-
- /**
- * Getter for current user id.
- *
- * @return current user id.
- */
- public int getCurrentUser()
- {
- return currentUser;
- }
-
- /**
- * Means of changing the map targeted by the get measurement method.
- *
- * @param num user to target.
- */
- public void setCurrentUser(int num)
- {
- try
- {
- currentUser = num;
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
-
- /**
- * Getter for a specific measurement for current user.
- *
- * @param id measurement ID in conforming format.
- * @return value of the measurement.
- * @throws MeasurementNotFoundException when measurement with specified ID does not exist.
- */
- public Measurement getMeasurement(String id) throws MeasurementNotFoundException
- {
- Measurement measurement = allMeasurements.get(currentUser).get(id);
- if (measurement == null)
- {
- throw new MeasurementNotFoundException(id);
- }
- return measurement;
- }
-
- /**
- * Method to inspect each line of the input file and populate the measurements in the hashmaps.
- *
- * @param fileReader An open file.
- * @param isBatched internal flag indicating whether the file uses the batch format or the serial format.
- */
- private void assignMeasurements(FileReader fileReader, boolean isBatched)
- {
- // Create a buffered reader
- BufferedReader fileStream = new BufferedReader(fileReader);
-
- // Store lines in a string
- String line;
-
- try
- {
- // If not batched
- if (!isBatched)
- {
- while ((line = fileStream.readLine()) != null)
- {
- // Only process lines that contain a []
- if (line.length() > 0 && line.contains("[") && line.contains("]"))
- {
- // Split the line into the id, name and the value
- int splitPoint = line.indexOf(":");
- int splitPointIdEnd = line.indexOf("]");
- int splitPointIdStart = line.indexOf("[");
- String id = line.substring(splitPointIdStart + 1, splitPointIdEnd);
- String name = line.substring(splitPointIdEnd + 2, splitPoint);
- String val = line.substring(splitPoint + 2);
- allMeasurements.get(currentUser).put(id, new Measurement(id, name, Double.valueOf(val)));
- }
- }
- }
- else
- {
- // Read until first (or second if tabbed) character of line is "[" which indicates the header
- String row = fileStream.readLine();
- while (row != null && (row.charAt(0) != '[' && row.charAt(1) != '['))
- {
- row = fileStream.readLine();
- }
- if (row == null) throw new IOException("List of measurements not found in batch input file!");
-
- // Splits the list into a string array dividing on every tab
- String[] dividedChunks = row.split("\t");
-
- // Creates two new arrays, one for the measurement ID numbers and one for the measurement names
- ArrayList idNumber = new ArrayList<>();
- ArrayList idName = new ArrayList<>();
-
- // Loop over chunks and identify valid measurement tags
- ArrayList validMeasurementPositions = new ArrayList<>();
- for (int i = 0; i < dividedChunks.length; i++)
- {
- if (
- dividedChunks[i].length() > 0 &&
- dividedChunks[i].charAt(0) == '[' &&
- Measurements.checkIdFormat(dividedChunks[i]) &&
- dividedChunks[i].charAt(4) == ']'
- )
- {
- // Stash position in the list
- validMeasurementPositions.add(i);
-
- // Takes the ID number part of the array and stores it in the IDNumber array
- idNumber.add(dividedChunks[i].substring(dividedChunks[i].indexOf('[') + 1,
- dividedChunks[i].indexOf(']')));
-
- // Takes the ID name part of the array and stores it in the IDName array
- idName.add(dividedChunks[i].substring(dividedChunks[i].indexOf(']') + 2));
- }
- }
-
- // Start a counter for the number of users
- int numUsers = 0;
-
- // While loop for each row immediately after the header which represent user data
- while ((row = fileStream.readLine()) != null)
- {
- // Increment user counter
- numUsers++;
-
- // Constructor creates first instance
- if (numUsers != 1)
- {
- // Prepare map for next user
- currentUser++;
- this.allMeasurements.add(new HashMap<>());
- }
-
- // Splits the list into a string array dividing on every tab
- String[] userValues = row.split("\t");
-
- // Check to make sure we have the same number of measurements are we did tags in the header
- if (dividedChunks.length != userValues.length) throw new Exception("Header does not match data!");
-
- // Splits first chunk by spaces to extract the user name
- String[] userInfo = userValues[0].split(" ");
- String userID = userInfo[0];
- userNames.add(userID);
-
- // Loop over the valid measurement list
- int count = 0;
- for (int pos : validMeasurementPositions)
- {
- // Get the measurement
- String value = userValues[pos];
-
- // Handle cases where the measurement is unavailable (computer-generated scan input)
- if (value.equals("Unavailable") || value.equals("null"))
- {
- System.out.println(
- "Measurement " + idName.get(count) + " is not available for user " +
- userNames.get(numUsers - 1)
- );
- value = "0.0";
- }
-
- // Add a mew measurement to the store
- this.allMeasurements.get(currentUser).put(
- idNumber.get(count),
- new Measurement(idNumber.get(count), idName.get(count), Double.valueOf(value))
- );
-
- count++;
- }
- }
- }
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
-
- /**
- * Nested class representing a measurement with an ID number, a human-readable name and a numerical value.
- */
- public class Measurement
- {
- public double value;
- private String id;
- private String humanReadableName;
-
- /**
- * Constructor.
- *
- * @param _id ID of measurement using the format [X00].
- * @param _humanReadableName Text description.
- * @param _value Numerical value.
- */
- public Measurement(String _id, String _humanReadableName, double _value)
- {
- this.id = _id;
- this.humanReadableName = _humanReadableName;
- this.value = _value;
-
- // Update the hash map
- allMeasurements.get(currentUser).put(id, this);
- }
- }
-}
\ No newline at end of file
diff --git a/src/jblockmain/Pattern.java b/src/jblockmain/Pattern.java
index a485681..3f0ec42 100644
--- a/src/jblockmain/Pattern.java
+++ b/src/jblockmain/Pattern.java
@@ -1,12 +1,11 @@
package jblockmain;
import dxfwriter.DxfFile;
-import jblockenums.EGarment;
-import jblockenums.EMethod;
+import dxfwriter.DxfFileConfiguration;
+import jblockenums.EPattern;
+import jblockexceptions.MeasurementNotFoundException;
-import java.io.BufferedWriter;
import java.io.File;
-import java.io.FileWriter;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
@@ -19,130 +18,112 @@
public abstract class Pattern
implements IPlottable
{
- protected final static ArrayList easeMeasurements = null;
/**
- * Common store of missing measurements.
+ * Measurement store based on required measurements for the pattern
*/
- protected static ArrayList missingMeasurements = new ArrayList();
- /**
- * Method associated with pattern
- */
- protected final EMethod method;
+ protected MeasurementSet measurements = new MeasurementSet();
/**
- * Type of garment pattern represents
+ * The type of pattern
*/
- protected final EGarment garment;
+ protected final EPattern patternType;
+
/**
* Offset used for drawing of construction lines
*/
protected double Arb_Con = 2.0;
+
/**
- * User associated with the pattern
+ * User associated with this pattern object
*/
- protected String userName;
+ protected final String userName;
+
/**
* Blocks that comprise the pattern
*/
- protected ArrayList blocks;
-
+ protected ArrayList blocks = new ArrayList();;
/**
* Constructor
*/
- public Pattern()
+ public Pattern(String userName, InputFileData dataStore, MeasurementSet template)
{
- blocks = new ArrayList();
- method = assignMethod();
- garment = assignGarment();
- }
+ this.userName = userName;
+ patternType = assignPattern();
- /**
- * Method to print the missing measurements record to a file.
- *
- * @param fileoutput path to file.
- */
- protected static void printMissingMeasurements(File fileoutput)
- {
- if (missingMeasurements.size() > 0)
+ // Initialises the measurement set
+ try
{
- try
- {
- FileWriter writer = new FileWriter(fileoutput + "/" + JBlockCreator.failedOutputsFilename);
- BufferedWriter writer2 = new BufferedWriter(writer);
- for (String str : missingMeasurements)
- {
- writer2.append(str);
- writer2.newLine();
- }
- writer2.close();
- writer.close();
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
+ defineRequiredMeasurements();
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
}
- }
- public static ArrayList getEaseMeasurement()
- {
- return easeMeasurements;
+ // Pass the data store and templates through for mapping
+ readMeasurements(dataStore, template);
}
- public static void populateEaseMeasurements()
+ public Pattern(String userName)
{
+ this(userName, null, null);
}
/**
- * Abstract method to assign final method type.
+ * Abstract method to assign final pattern type.
*
* @return method type to assign to the method field.
*/
- protected abstract EMethod assignMethod();
+ protected abstract EPattern assignPattern();
/**
- * Abstract method to assign final garment type.
- *
- * @return method type to assign to the garment field.
+ * Method which defines the required measurements for this pattern by defining a measurement set.
*/
- protected abstract EGarment assignGarment();
+ protected abstract void defineRequiredMeasurements() throws Exception;
/**
- * Method to add information about a failed pattern creation due to missing measurements.
+ * Read measurements into the measurement set from the input file.
*
- * @param userid name of the user concerned.
- * @param id ID of the measurement which caused the failure.
+ * @param inputData the object holding all acquired input data from the file.
*/
- protected void addMissingMeasurement(String userid, String id)
+ protected final void readMeasurements(InputFileData inputData, MeasurementSet template)
{
- missingMeasurements.add(userid + "/" + method + "/" + garment + " : Measurement ID = " + id);
- }
+ try
+ {
+ // Map template values into the measurement set
+ if (template != null) measurements.mapFromTemplate(template);
- /**
- * Obtain measurements from the measurements hashmap as required by the pattern.
- *
- * @param dataStore the object holding all acquired measurement data.
- * @return indication as to whether reading was successful.
- */
- protected abstract boolean readMeasurements(Measurements dataStore);
+ // Map the values from the input data into the measurement set
+ if (inputData != null) measurements.mapFromInputData(userName, inputData);
+ }
+ catch (MeasurementNotFoundException e)
+ {
+ e.printStackTrace();
+ }
+ };
/**
- * Modify any measurements by adding easement.
+ * Create the blocks for this pattern.
*/
- protected abstract void addEasement();
+ public abstract void createBlocks();
/**
- * Create the blocks for this pattern.
+ * Method to get a measurement from the measurement set
+ * @param name name of the measurement to get
+ * @return the value of the measurement
*/
- protected abstract void createBlocks();
+ protected final double get(String name)
+ {
+ return measurements.getMeasurement(name).getValue();
+ }
/**
* Method to check that a block number index is within the range of blocks stored in the pattern.
*
* @param blockNumber number to check.
*/
- private void rangeCheck(int blockNumber)
+ private final void rangeCheck(int blockNumber)
{
if (blockNumber > blocks.size())
throw new IndexOutOfBoundsException("Accessing out of range of number of blocks!");
@@ -190,12 +171,12 @@ public int getNumberOfBlocksToPlot()
}
@Override
- public void writeToDXF(File fileOutput, boolean[] dxfLayerChooser, String timeStamp)
+ public void writeToDXF(File fileOutput, DxfFileConfiguration config)
{
for (int i = 0; i < getNumberOfBlocksToPlot(); i++)
{
// Construct output path
- Path path = Paths.get(fileOutput.toString() + "/" + method + "/" + garment + "/");
+ Path path = Paths.get(fileOutput.toString() + "/" + patternType + "/");
// Create directory structure if required
try
@@ -209,10 +190,10 @@ public void writeToDXF(File fileOutput, boolean[] dxfLayerChooser, String timeSt
// Create new DXF file
DxfFile file = null;
- if (timeStamp == null)
+ if (config.getTimeStamp() == null)
file = new DxfFile(path.toString() + "/" + blocks.get(i).getName());
else
- file = new DxfFile(path.toString() + "/" + blocks.get(i).getName() + "_" + timeStamp);
+ file = new DxfFile(path.toString() + "/" + blocks.get(i).getName() + "_" + config.getTimeStamp());
try
{
@@ -223,8 +204,12 @@ public void writeToDXF(File fileOutput, boolean[] dxfLayerChooser, String timeSt
{
e.printStackTrace();
}
- file.writeFile(blocks.get(i).getName(), dxfLayerChooser);
+ file.writeFile(blocks.get(i).getName(), config);
}
}
+ public MeasurementSet getMeasurementSet()
+ {
+ return measurements;
+ }
}
diff --git a/src/jblockmain/PatternFactory.java b/src/jblockmain/PatternFactory.java
new file mode 100644
index 0000000..8b6c7f9
--- /dev/null
+++ b/src/jblockmain/PatternFactory.java
@@ -0,0 +1,26 @@
+package jblockmain;
+
+import jblockenums.EPattern;
+
+public class PatternFactory
+{
+ public static Pattern Create(EPattern type, String userName, InputFileData data, MeasurementSet template)
+ {
+ switch (type)
+ {
+ case AHMED_BODICE -> { return new ahmed.BodicePattern(userName, data, template); }
+ case ALDRICH_SKIRT -> { return new aldrich.SkirtPattern(userName, data, template); }
+ case ALDRICH_TROUSER -> { return new aldrich.TrouserPattern(userName, data, template); }
+ case BEAZLEYBOND_SKIRT -> { return new beazleybond.SkirtPattern(userName, data, template); }
+ case BEAZLEYBOND_BODICE -> { return new beazleybond.BodicePattern(userName, data, template); }
+ case BEAZLEYBOND_STRAIGHTSLEEVE -> { return new beazleybond.StraightSleevePattern(userName, data, template); }
+ case BEAZLEYBOND_TROUSER -> { return new beazleybond.TrouserPattern(userName, data, template); }
+ case GILL_SKIRT -> { return new gill.SkirtPattern(userName, data, template); }
+ case GILL_SWEATSHIRT -> { return new gill.SweatShirtPattern(userName, data, template); }
+ case GILL_TROUSER -> { return new gill.TrouserPattern(userName, data, template); }
+ case GILL_TROUSER2 -> { return new gill.TrouserPatternTwo(userName, data, template); }
+ case GILL_TROUSER3 -> { return new gill.TrouserPatternThree(userName, data, template); }
+ }
+ return null;
+ }
+}
diff --git a/src/jblockmain/Prompts.java b/src/jblockmain/Prompts.java
index cc3daf4..de0e549 100644
--- a/src/jblockmain/Prompts.java
+++ b/src/jblockmain/Prompts.java
@@ -2,7 +2,7 @@
import jblockenums.EMsgType;
-import javax.swing.*;
+//import javax.swing.*;
/**
* Class to wrap various message box initialisations.
@@ -18,8 +18,8 @@ class Prompts
*/
public static void infoBox(String infoMessage, String titleBar, EMsgType type)
{
- JOptionPane.showMessageDialog(null,
- infoMessage,
- type + ": " + titleBar, JOptionPane.INFORMATION_MESSAGE);
+// JOptionPane.showMessageDialog(null,
+// infoMessage,
+// type + ": " + titleBar, JOptionPane.INFORMATION_MESSAGE);
}
}
diff --git a/src/jblockmain/easeMeasurement.java b/src/jblockmain/easeMeasurement.java
deleted file mode 100644
index 0671fec..0000000
--- a/src/jblockmain/easeMeasurement.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package jblockmain;
-
-/**
- * Wrapper class for ease measurements
- */
-public class easeMeasurement
-{
- private String name;
- private double value;
-
- public easeMeasurement(String name, double value)
- {
- this.name = name;
- this.value = value;
- }
-
- public easeMeasurement(String name)
- {
- this.name = name;
- this.value = 0;
- }
-
- public String getName()
- {
- return this.name;
- }
-
- public double getValue()
- {
- return this.value;
- }
-
- public void setValue(double newValue)
- {
- this.value = newValue;
- }
-
-}
diff --git a/src/jblockui/Analysis.fxml b/src/jblockui/Analysis.fxml
new file mode 100644
index 0000000..d24bffe
--- /dev/null
+++ b/src/jblockui/Analysis.fxml
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/jblockui/AnalysisController.java b/src/jblockui/AnalysisController.java
new file mode 100644
index 0000000..ee93c39
--- /dev/null
+++ b/src/jblockui/AnalysisController.java
@@ -0,0 +1,108 @@
+package jblockui;
+
+import javafx.collections.FXCollections;
+import javafx.fxml.FXML;
+import javafx.scene.control.ComboBox;
+import javafx.scene.control.RadioButton;
+import javafx.scene.control.ToggleGroup;
+import javafx.util.Pair;
+import javafx.util.StringConverter;
+import jblockenums.EPlotType;
+import jblockmain.InputFileData;
+
+public class AnalysisController extends BaseController
+{
+ @FXML
+ ToggleGroup plotRadioGrp;
+
+ @FXML
+ ComboBox> comboMeasX;
+
+ @FXML
+ ComboBox> comboMeasY;
+
+ @FXML
+ RadioButton radioPlotRectangle;
+
+ private String idX;
+ private String idY;
+ private EPlotType plotType;
+
+ @Override
+ public void initialize()
+ {
+ backButton.setOnAction(e -> UiModel.getInstance().setContent("GettingStarted"));
+
+ nextButton.setOnAction(e ->
+ {
+ UiModel.getInstance().setIds(idX, idY);
+ UiModel.getInstance().setPlotType(plotType);
+ UiModel.getInstance().setContent("Outputs");
+ });
+
+ comboMeasX.valueProperty().addListener((obs, oldVal, newVal) ->
+ {
+ if (newVal != null)
+ {
+ idX = newVal.getKey();
+ }
+ Validate();
+ });
+
+ comboMeasY.valueProperty().addListener((obs, oldVal, newVal) ->
+ {
+ if (newVal != null)
+ {
+ idY = newVal.getKey();
+ }
+ Validate();
+ });
+
+ Validate();
+
+ plotRadioGrp.selectedToggleProperty().addListener((obs, oldVal, newVal) ->
+ {
+ RadioButton rb = (RadioButton)newVal;
+ plotType = rb == radioPlotRectangle ? EPlotType.RECTANGLE : EPlotType.LAYERED;
+ Validate();
+ });
+
+ // Set default selection
+ plotRadioGrp.selectToggle(radioPlotRectangle);
+ }
+
+ private void Validate()
+ {
+ nextButton.setDisable(idX == null || idY == null);
+ }
+
+ @Override
+ public void onDisplayed()
+ {
+ super.onDisplayed();
+
+ // Populate the combo boxes
+ var available = new InputFileData(UiModel.getInstance().getInputFile(), true).getAvailableInputValues();
+ var strConverter = new StringConverter>()
+ {
+ @Override
+ public String toString(Pair stringStringPair)
+ {
+ return "(" + stringStringPair.getKey() + ") " + stringStringPair.getValue();
+ }
+
+ @Override
+ public Pair fromString(String s)
+ {
+ s = s.replace("(", "");
+ s = s.replace(") ", "|");
+ var splits = s.split("|");
+ return new Pair<>(splits[0], splits[1]);
+ }
+ };
+ comboMeasX.setItems(FXCollections.observableList(available));
+ comboMeasX.setConverter(strConverter);
+ comboMeasY.setItems(FXCollections.observableList(available));
+ comboMeasY.setConverter(strConverter);
+ }
+}
diff --git a/src/jblockui/BaseController.java b/src/jblockui/BaseController.java
new file mode 100644
index 0000000..773389e
--- /dev/null
+++ b/src/jblockui/BaseController.java
@@ -0,0 +1,23 @@
+package jblockui;
+
+import javafx.fxml.FXML;
+import javafx.scene.control.Button;
+
+public abstract class BaseController
+{
+ @FXML
+ Button nextButton;
+
+ @FXML
+ Button backButton;
+
+ @FXML
+ public abstract void initialize();
+
+ /**
+ * Do things that must be done when the view is displayed rather than created
+ */
+ public void onDisplayed()
+ {
+ };
+}
diff --git a/src/jblockui/GettingStarted.fxml b/src/jblockui/GettingStarted.fxml
new file mode 100644
index 0000000..ab6e4b4
--- /dev/null
+++ b/src/jblockui/GettingStarted.fxml
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/jblockui/GettingStartedController.java b/src/jblockui/GettingStartedController.java
new file mode 100644
index 0000000..ffb7278
--- /dev/null
+++ b/src/jblockui/GettingStartedController.java
@@ -0,0 +1,139 @@
+package jblockui;
+
+import javafx.fxml.FXML;
+import javafx.scene.control.Label;
+import javafx.scene.control.Button;
+import javafx.scene.control.ToggleGroup;
+import javafx.scene.control.RadioButton;
+import javafx.stage.DirectoryChooser;
+import javafx.stage.FileChooser;
+import jblockenums.EActivityType;
+
+import java.io.File;
+import java.nio.file.InvalidPathException;
+import java.nio.file.Paths;
+import java.util.prefs.*;
+
+public class GettingStartedController extends BaseController
+{
+ @FXML
+ private Label inputFilePathLabel;
+
+ @FXML
+ private Label outputPathLabel;
+
+ @FXML
+ private Button inputButton;
+
+ @FXML
+ private Button outputButton;
+
+ @FXML
+ ToggleGroup activityRadioGrp;
+
+ @FXML
+ RadioButton radioActivityDrafting;
+
+ @FXML
+ RadioButton radioActivityAnalysis;
+
+ // Locals
+ final FileChooser fileChooser = new FileChooser();
+ final DirectoryChooser directoryChooser = new DirectoryChooser();
+
+ // Preference keys for this package
+ private static final String INPUT_PATH = "in_path";
+ private static final String OUTPUT_PATH = "out_path";
+ private final Preferences prefs = Preferences.userNodeForPackage(GettingStartedController.class);
+
+ // Public
+ public EActivityType activityType = EActivityType.DRAFTING;
+
+ @Override
+ public void initialize()
+ {
+ // Initialise paths
+ var path = prefs.get(INPUT_PATH, null);
+ if (path != null)
+ {
+ inputFilePathLabel.setText(path);
+ fileChooser.setInitialDirectory(new File(new File(path).getParent()));
+ }
+ path = prefs.get(OUTPUT_PATH, null);
+ if (path != null)
+ {
+ outputPathLabel.setText(path);
+ directoryChooser.setInitialDirectory(new File(path));
+ }
+
+ activityRadioGrp.selectedToggleProperty().addListener((changed, oldVal, newVal) ->
+ {
+ RadioButton rb = (RadioButton)newVal;
+ activityType = rb == radioActivityDrafting ? EActivityType.DRAFTING : EActivityType.ANALYSIS;
+ Validate();
+ });
+
+ inputButton.setOnAction(e ->
+ {
+ File file = fileChooser.showOpenDialog(null);
+ if (file != null)
+ {
+ inputFilePathLabel.setText(file.getPath());
+ prefs.put(INPUT_PATH, file.getPath());
+ fileChooser.setInitialDirectory(new File(file.getParent()));
+ }
+ Validate();
+ });
+
+ outputButton.setOnAction(e ->
+ {
+ File file = directoryChooser.showDialog(null);
+ if (file != null)
+ {
+ outputPathLabel.setText(file.getPath());
+ prefs.put(OUTPUT_PATH, file.getPath());
+ directoryChooser.setInitialDirectory(file);
+ }
+ Validate();
+ });
+
+ nextButton.setOnAction(e ->
+ {
+ UiModel.getInstance().setActivityType(activityType);
+ UiModel.getInstance().setInputFile(inputFilePathLabel.getText());
+ UiModel.getInstance().setOutputPath(outputPathLabel.getText());
+ UiModel.getInstance().setContent(activityType == EActivityType.ANALYSIS ? "Analysis" : "PatternSelection");
+ if (activityType == EActivityType.ANALYSIS) UiModel.getInstance().onDisplayed("Analysis");
+ });
+
+ // Set default
+ activityRadioGrp.selectToggle(radioActivityDrafting);
+
+ Validate();
+ }
+
+ /**
+ * Method to determine state of the next button
+ */
+ private void Validate()
+ {
+ // Set next button
+ var valid =
+ (isValidPath(inputFilePathLabel.getText())) &&
+ isValidPath(outputPathLabel.getText());
+ nextButton.setDisable(!valid);
+ }
+
+ private boolean isValidPath(String path)
+ {
+ try
+ {
+ Paths.get(path);
+ }
+ catch (InvalidPathException | NullPointerException ex)
+ {
+ return false;
+ }
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/src/jblockui/MeasurementStackItem.fxml b/src/jblockui/MeasurementStackItem.fxml
new file mode 100644
index 0000000..2428057
--- /dev/null
+++ b/src/jblockui/MeasurementStackItem.fxml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/jblockui/MeasurementStackItemController.java b/src/jblockui/MeasurementStackItemController.java
new file mode 100644
index 0000000..52dcd3a
--- /dev/null
+++ b/src/jblockui/MeasurementStackItemController.java
@@ -0,0 +1,108 @@
+package jblockui;
+
+import javafx.fxml.FXML;
+import javafx.scene.control.*;
+import jblockmain.Measurement;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.Enumeration;
+
+public class MeasurementStackItemController extends BaseController
+{
+ @FXML
+ Label measurementNameLabel;
+
+ @FXML
+ TextField valueEntry;
+
+ @FXML
+ Button plusButton;
+
+ @FXML
+ Button minusButton;
+
+ @FXML
+ Label unitLabel;
+
+ private Measurement measurement;
+ private boolean isValid = true;
+
+ @Override
+ public void initialize()
+ {
+ plusButton.setOnAction(e ->
+ {
+ try
+ {
+ setNewValue(true);
+ isValid = true;
+ }
+ catch (NumberFormatException ex)
+ {
+ isValid = false;
+ }
+ });
+
+ minusButton.setOnAction(e ->
+ {
+ try
+ {
+ setNewValue(false);
+ isValid = true;
+ }
+ catch (NumberFormatException ex)
+ {
+ isValid = false;
+ }
+ });
+
+ // Catch typed changed
+ valueEntry.textProperty().addListener((observable, oldValue, newValue) ->
+ {
+ try
+ {
+ // Validate the new value
+ var value = new BigDecimal(newValue);
+ isValid = true;
+ }
+ catch (NumberFormatException ex)
+ {
+ isValid = false;
+ }
+ });
+ }
+
+ public void setNewValue(boolean isPlus)
+ {
+ var oldValue = new BigDecimal(valueEntry.getText());
+ oldValue = oldValue.setScale(1, RoundingMode.HALF_UP);
+ var newValue = isPlus ? oldValue.add(new BigDecimal("0.1")) : oldValue.subtract(new BigDecimal("0.1"));
+ valueEntry.setText(String.valueOf(newValue));
+ }
+
+ public void setMeasurement(Measurement m)
+ {
+ measurement = m;
+ measurementNameLabel.setText(m.name);
+ BigDecimal value = null;
+ try
+ {
+ value = new BigDecimal(m.getValue());
+ value = value.setScale(1, RoundingMode.HALF_UP);
+ }
+ catch (NumberFormatException ignored)
+ {
+ }
+ unitLabel.setText(m.getUnitName());
+ valueEntry.setText(m.getInputId() == null ? String.valueOf(value) : m.getInputId());
+ valueEntry.setDisable(m.getInputId() != null);
+ plusButton.setDisable(m.getInputId() != null);
+ minusButton.setDisable(m.getInputId() != null);
+ }
+
+ public boolean getIsValid()
+ {
+ return isValid;
+ }
+}
diff --git a/src/jblockui/Measurements.fxml b/src/jblockui/Measurements.fxml
new file mode 100644
index 0000000..cf82f54
--- /dev/null
+++ b/src/jblockui/Measurements.fxml
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/jblockui/MeasurementsController.java b/src/jblockui/MeasurementsController.java
new file mode 100644
index 0000000..5845459
--- /dev/null
+++ b/src/jblockui/MeasurementsController.java
@@ -0,0 +1,85 @@
+package jblockui;
+
+import javafx.fxml.FXML;
+import javafx.fxml.FXMLLoader;
+import javafx.scene.control.Alert;
+import javafx.scene.control.ButtonType;
+import javafx.scene.layout.GridPane;
+import javafx.scene.layout.VBox;
+import jblockenums.EPattern;
+import jblockmain.MeasurementSet;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Objects;
+
+public class MeasurementsController extends BaseController
+{
+ private MeasurementSet measurementSet;
+ private EPattern patternType;
+ private final HashMap changedMeasurements = new HashMap<>();
+ private final List controllers = new ArrayList<>();
+
+ @FXML
+ VBox measurementsStack;
+
+ @Override
+ public void initialize()
+ {
+ backButton.setOnAction(e ->
+ {
+ UiModel.getInstance().setContent("PatternSelection");
+ });
+
+ nextButton.setOnAction(e ->
+ {
+ // Pull values from controllers and update
+ for (var c : controllers)
+ {
+ if (!c.valueEntry.isDisabled() && !c.getIsValid())
+ {
+ var a = new Alert(Alert.AlertType.NONE, "Value specified for " + c.measurementNameLabel.getText() + " is invalid!", ButtonType.OK);
+ a.show();
+ return;
+ }
+ }
+ for (var c : controllers)
+ {
+ if (!c.valueEntry.isDisabled())
+ {
+ measurementSet.setValue(c.measurementNameLabel.getText(), Double.parseDouble(c.valueEntry.getText()));
+ }
+ }
+ UiModel.getInstance().storeMeasurementTemplate(patternType, measurementSet);
+ UiModel.getInstance().setContent("PatternSelection");
+ });
+ }
+
+ public void initialiseMeasurementsFromTemplate(EPattern type)
+ {
+ this.patternType = type;
+ this.measurementSet = UiModel.getInstance().getMeasurementTemplate(patternType);
+
+ try
+ {
+ // Initialise the stack
+ measurementsStack.getChildren().clear();
+ controllers.clear();
+ for (var m : measurementSet.getAllMeasurements())
+ {
+ var loader = new FXMLLoader(Objects.requireNonNull(getClass().getResource("/jblockui/MeasurementStackItem.fxml")));
+ var view = (GridPane) loader.load();
+ var ctrl = (MeasurementStackItemController) loader.getController();
+ ctrl.setMeasurement(m);
+ controllers.add(ctrl);
+ measurementsStack.getChildren().add(view);
+ }
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/src/jblockui/Outputs.fxml b/src/jblockui/Outputs.fxml
new file mode 100644
index 0000000..9c1d88a
--- /dev/null
+++ b/src/jblockui/Outputs.fxml
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/jblockui/OutputsController.java b/src/jblockui/OutputsController.java
new file mode 100644
index 0000000..b9c55b1
--- /dev/null
+++ b/src/jblockui/OutputsController.java
@@ -0,0 +1,137 @@
+package jblockui;
+
+import javafx.fxml.FXML;
+import javafx.scene.control.CheckBox;
+import javafx.scene.control.ProgressBar;
+import javafx.scene.image.ImageView;
+import javafx.scene.layout.StackPane;
+import jblockenums.EActivityType;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class OutputsController extends BaseController
+{
+ @FXML
+ private StackPane previewView;
+
+ @FXML
+ private CheckBox checkScaleBoxAndUser;
+
+ @FXML
+ private CheckBox checkPatternOutline;
+
+ @FXML
+ private CheckBox checkKeypointsAsCircles;
+
+ @FXML
+ private CheckBox checkKeypointCoordinates;
+
+ @FXML
+ private CheckBox checkConstructionLines;
+
+ @FXML
+ private CheckBox checkTimeStamp;
+
+ @FXML
+ ProgressBar progressBar;
+
+ @Override
+ public void initialize()
+ {
+ backButton.setOnAction(e ->
+ {
+ UiModel.getInstance().setContent(
+ UiModel.getInstance().getActivity() == EActivityType.DRAFTING ?
+ "PatternSelection" :
+ "Analysis" );
+ });
+
+ nextButton.setOnAction(e ->
+ {
+ UiModel.getInstance().run();
+ });
+
+ var imgFiles = new ArrayList()
+ {{
+ add("file:images/PatternSample_00000.png");
+ add("file:images/PatternSample_00001.png");
+ add("file:images/PatternSample_00010.png");
+ add("file:images/PatternSample_00100.png");
+ add("file:images/PatternSample_01000.png");
+ add("file:images/PatternSample_10000.png");
+ }};
+ initialisePreviewLayers(imgFiles);
+
+ checkScaleBoxAndUser.selectedProperty().addListener((obs, oldVal, newVal) ->
+ {
+ UiModel.getInstance().setCheck("checkScale", newVal);
+ previewView.getChildren().get(5).setVisible(newVal);
+ });
+
+ checkPatternOutline.selectedProperty().addListener((obs, oldVal, newVal) ->
+ {
+ UiModel.getInstance().setCheck("checkOutline", newVal);
+ previewView.getChildren().get(4).setVisible(newVal);
+ });
+
+ checkKeypointsAsCircles.selectedProperty().addListener((obs, oldVal, newVal) ->
+ {
+ UiModel.getInstance().setCheck("checkCircles", newVal);
+ previewView.getChildren().get(3).setVisible(newVal);
+ });
+
+ checkKeypointCoordinates.selectedProperty().addListener((obs, oldVal, newVal) ->
+ {
+ UiModel.getInstance().setCheck("checkCoord", newVal);
+ previewView.getChildren().get(2).setVisible(newVal);
+ });
+
+ checkConstructionLines.selectedProperty().addListener((obs, oldVal, newVal) ->
+ {
+ UiModel.getInstance().setCheck("checkCon", newVal);
+ previewView.getChildren().get(1).setVisible(newVal);
+ });
+
+ checkTimeStamp.selectedProperty().addListener((obs, oldVal, newVal) ->
+ {
+ UiModel.getInstance().setCheck("checkTime", newVal);
+ });
+
+ // Set all the checks to true by default
+ checkScaleBoxAndUser.setSelected(true);
+ checkPatternOutline.setSelected(true);
+ checkKeypointsAsCircles.setSelected(true);
+ checkKeypointCoordinates.setSelected(true);
+ checkConstructionLines.setSelected(true);
+ checkTimeStamp.setSelected(true);
+
+ // Hide the timestamp if analysis
+ checkTimeStamp.setVisible(UiModel.getInstance().getActivity() == EActivityType.DRAFTING);
+
+
+ }
+
+ public void setProgress(double value)
+ {
+ if (value == 0.0) progressBar.setVisible(false);
+ else
+ {
+ progressBar.setVisible(true);
+ progressBar.setProgress(value);
+ }
+ }
+
+ private void initialisePreviewLayers(List files)
+ {
+ var layers = previewView.getChildren();
+ for (var i : files)
+ {
+ var imgView = new ImageView(i);
+ imgView.setPreserveRatio(true);
+ imgView.setFitHeight(400);
+ imgView.setFitWidth(400);
+ layers.add(imgView);
+ }
+ }
+}
diff --git a/src/jblockui/PatternSelection.fxml b/src/jblockui/PatternSelection.fxml
new file mode 100644
index 0000000..dc76562
--- /dev/null
+++ b/src/jblockui/PatternSelection.fxml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/jblockui/PatternSelectionController.java b/src/jblockui/PatternSelectionController.java
new file mode 100644
index 0000000..fe3e72d
--- /dev/null
+++ b/src/jblockui/PatternSelectionController.java
@@ -0,0 +1,75 @@
+package jblockui;
+
+import javafx.fxml.FXML;
+import javafx.fxml.FXMLLoader;
+import javafx.scene.layout.GridPane;
+import javafx.scene.layout.VBox;
+import jblockenums.EPattern;
+import java.util.ArrayList;
+import java.util.Objects;
+
+public class PatternSelectionController extends BaseController
+{
+ @FXML
+ private VBox patternStack;
+
+ private final ArrayList patternsWithErrors = new ArrayList<>();
+ private final ArrayList patternsChecked = new ArrayList<>();
+
+ @Override
+ public void initialize()
+ {
+ try
+ {
+ // Build views in pattern selection stack from known patterns
+ patternStack.getChildren().clear();
+ EPattern[] patternTypes = EPattern.class.getEnumConstants();
+ for (var p : patternTypes)
+ {
+ var loader = new FXMLLoader(Objects.requireNonNull(getClass().getResource("/jblockui/PatternStackItem.fxml")));
+ var view = (GridPane)loader.load();
+ var ctrl = (PatternStackItemController)loader.getController();
+ ctrl.setParent(this);
+ ctrl.setPatternType(p);
+ ctrl.checkInclude.setText(p.toString());
+ patternStack.getChildren().add(view);
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+
+ nextButton.setOnAction(e ->
+ {
+ UiModel.getInstance().setPatterns(patternsChecked);
+ UiModel.getInstance().setContent("Outputs");
+ });
+
+ backButton.setOnAction(e ->
+ {
+ UiModel.getInstance().setContent("GettingStarted");
+ });
+
+ Validate();
+ }
+
+ public void onErrorChanged(EPattern patternWithError, boolean state)
+ {
+ if (state && !patternsWithErrors.contains(patternWithError)) patternsWithErrors.add(patternWithError);
+ else if (!state) patternsWithErrors.remove(patternWithError);
+ Validate();
+ }
+
+ public void onCheckChanged(EPattern pattern, boolean state)
+ {
+ if (state && !patternsChecked.contains(pattern)) patternsChecked.add(pattern);
+ else if (!state) patternsChecked.remove(pattern);
+ Validate();
+ }
+
+ private void Validate()
+ {
+ nextButton.setDisable(patternsWithErrors.size() > 0 || patternsChecked.size() == 0);
+ }
+}
diff --git a/src/jblockui/PatternStackItem.fxml b/src/jblockui/PatternStackItem.fxml
new file mode 100644
index 0000000..b708cf3
--- /dev/null
+++ b/src/jblockui/PatternStackItem.fxml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/jblockui/PatternStackItemController.java b/src/jblockui/PatternStackItemController.java
new file mode 100644
index 0000000..7c40164
--- /dev/null
+++ b/src/jblockui/PatternStackItemController.java
@@ -0,0 +1,114 @@
+package jblockui;
+
+import javafx.fxml.FXML;
+import javafx.scene.control.Button;
+import javafx.scene.control.CheckBox;
+import javafx.scene.control.Label;
+import jblockenums.EPattern;
+import jblockmain.InputFileData;
+import jblockmain.MeasurementSet;
+import jblockmain.PatternFactory;
+
+import java.util.Objects;
+
+public class PatternStackItemController extends BaseController
+{
+ @FXML
+ CheckBox checkInclude;
+
+ @FXML
+ Button measurementButton;
+
+ @FXML
+ Label statusLabel;
+
+ private EPattern patternType;
+ private boolean checked;
+ private boolean hasError;
+ private PatternSelectionController parent;
+ private MeasurementSet requiredMeasurements;
+
+ @Override
+ public void initialize()
+ {
+ checkInclude.selectedProperty().addListener((obs, oldVal, newVal) ->
+ {
+ checked = newVal;
+ if (parent != null) parent.onCheckChanged(patternType, checked);
+ Validate();
+ });
+
+ measurementButton.setOnAction(e ->
+ {
+ var ctrl = (MeasurementsController) UiModel.getInstance().setContent("Measurements");
+ ctrl.initialiseMeasurementsFromTemplate(patternType);
+
+ });
+
+ Validate();
+ }
+
+ private void Validate()
+ {
+ // Reset flags and text
+ String statusText = "";
+ hasError = false;
+
+ // Check we have the measurements we need in the input file
+ if (checked)
+ {
+ var available = new InputFileData(UiModel.getInstance().getInputFile(), true).getAvailableInputValueIds();
+ requiredMeasurements = Objects.requireNonNull(PatternFactory.Create(patternType, null, null, null))
+ .getMeasurementSet();
+
+ // Store measurements in the model
+ UiModel.getInstance().storeMeasurementTemplate(patternType, requiredMeasurements);
+
+ // Check each measurement with an ID in the required set are in the input file
+ for (var id : requiredMeasurements.getIds())
+ {
+ if (!available.contains(id))
+ {
+ statusText = id + " missing from input file!";
+ hasError = true;
+ break;
+ }
+ }
+ }
+ else
+ {
+ // Remove measurements from the model
+ UiModel.getInstance().removeMeasurementTemplate(patternType);
+ }
+ statusLabel.setText(statusText);
+ if (parent != null) parent.onErrorChanged(patternType, hasError);
+
+ // Set state of the measurement button
+ measurementButton.setDisable(!checked);
+ }
+
+ public EPattern getPatternType()
+ {
+ return patternType;
+ }
+
+ public void setPatternType(EPattern patternType)
+ {
+ this.patternType = patternType;
+ }
+
+ public boolean isHasError()
+ {
+ return hasError;
+ }
+
+ public void setParent(PatternSelectionController patternSelectionController)
+ {
+ parent = patternSelectionController;
+ }
+
+ public MeasurementSet getRequiredMeasurements()
+ {
+ return requiredMeasurements;
+ }
+}
diff --git a/src/jblockui/UiContainer.fxml b/src/jblockui/UiContainer.fxml
new file mode 100644
index 0000000..de52f26
--- /dev/null
+++ b/src/jblockui/UiContainer.fxml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/jblockui/UiContainerController.java b/src/jblockui/UiContainerController.java
new file mode 100644
index 0000000..d8758f9
--- /dev/null
+++ b/src/jblockui/UiContainerController.java
@@ -0,0 +1,5 @@
+package jblockui;
+
+public class UiContainerController
+{
+}
diff --git a/src/jblockui/UiModel.java b/src/jblockui/UiModel.java
new file mode 100644
index 0000000..e16e467
--- /dev/null
+++ b/src/jblockui/UiModel.java
@@ -0,0 +1,299 @@
+package jblockui;
+
+import analysis.RectanglePlot;
+import dxfwriter.DxfFileConfiguration;
+import javafx.fxml.FXMLLoader;
+import javafx.scene.layout.AnchorPane;
+import javafx.scene.layout.VBox;
+import jblockenums.EActivityType;
+import jblockenums.EPattern;
+import jblockenums.EPlotType;
+import jblockmain.InputFileData;
+import jblockmain.MeasurementSet;
+import jblockmain.PatternFactory;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Objects;
+
+public class UiModel
+{
+ private static UiModel instance;
+ private boolean isRunning;
+
+ private UiModel(){}
+
+ public static UiModel getInstance(){
+ if(instance == null){
+ synchronized (UiModel.class) {
+ if(instance == null){
+ instance = new UiModel();
+ }
+ }
+ }
+ return instance;
+ }
+
+ // UI Components
+ private AnchorPane root;
+ private final HashMap subViews = new HashMap<>();
+ private final HashMap controllers = new HashMap<>();
+
+ // Processing elements
+ private final HashMap measurements = new HashMap<>();
+ private final List outputChecks = new ArrayList<>();
+ private final ArrayList selectedPatterns = new ArrayList<>();
+ private EActivityType activityType;
+ private EPlotType plotType;
+ private String inputFile;
+ private String outputPath;
+ private String analysisIdX;
+ private String analysisIdY;
+
+ /**
+ * Initialise the scene and pre-load all views
+ * @return Scene root
+ */
+ public AnchorPane Initialise()
+ {
+ try
+ {
+ // Load all the sub views
+ loadSubView("GettingStarted");
+ loadSubView("Analysis");
+ loadSubView("PatternSelection");
+ loadSubView("Measurements");
+ loadSubView("Outputs");
+
+ // Load the container
+ root = (AnchorPane) FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/jblockui/UiContainer.fxml")));
+ setContent("GettingStarted");
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ return root;
+ }
+
+ /**
+ * Loads in the sub views
+ * @param name name of subview file
+ * @throws IOException if resource not found
+ */
+ private void loadSubView(String name) throws IOException
+ {
+ var loader = new FXMLLoader(Objects.requireNonNull(getClass().getResource("/jblockui/" + name + ".fxml")));
+ var view = (VBox)loader.load();
+ subViews.put(name, view);
+ controllers.put(name, loader.getController());
+ }
+
+ /**
+ * Sets the content of the container
+ * @param key sub view key
+ * @return the controller for the view
+ */
+ public BaseController setContent(String key)
+ {
+ var view = subViews.get(key);
+ if (view != null && root != null)
+ {
+ root.getChildren().clear();
+ root.getChildren().add(view);
+ AnchorPane.setTopAnchor(view, 0.0);
+ AnchorPane.setBottomAnchor(view, 0.0);
+ AnchorPane.setLeftAnchor(view, 0.0);
+ AnchorPane.setRightAnchor(view, 0.0);
+ }
+ return controllers.get(key);
+ }
+
+ /**
+ * Calls onDisplayed for the controller matching the key
+ * @param key sub view key
+ */
+ public void onDisplayed(String key)
+ {
+ try
+ {
+ controllers.get(key).onDisplayed();
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Stores the master measurement set generated on pattern enable
+ * @param key the pattern
+ * @param value the measurement set
+ */
+ public void storeMeasurementTemplate(EPattern key, MeasurementSet value)
+ {
+ measurements.put(key, value);
+ }
+
+ /**
+ * Remove a master measurement set when pattern is disabled
+ * @param key the pattern
+ */
+ public void removeMeasurementTemplate(EPattern key)
+ {
+ measurements.remove(key);
+ }
+
+ /**
+ * Gets the stored master measurement set generated on pattern enable
+ * @param key the pattern
+ * @return the measurement set
+ */
+ public MeasurementSet getMeasurementTemplate(EPattern key)
+ {
+ return measurements.get(key);
+ }
+
+ /**
+ * Method to run the software
+ */
+ public void run()
+ {
+ if (!isRunning)
+ {
+ isRunning = true;
+ var ctrl = (OutputsController)controllers.get("Outputs");
+ double i = 0;
+
+ try
+ {
+ setContent("Running");
+
+ String timeStamp = null;
+ if (outputChecks.contains("checkTime"))
+ {
+ timeStamp = new java.text.SimpleDateFormat("yyyy-MM-dd_HH-mm-ss").format(new java.util.Date());
+ }
+
+ // Open output file
+ File outputDirectory = new File(outputPath);
+
+ // Read in the full set of measurements
+ var inputData = new InputFileData(inputFile, false);
+ var names = inputData.getUserNames();
+
+ // Create DXF config
+ var config = new DxfFileConfiguration(timeStamp, outputChecks);
+
+ // Perform drafting
+ if (activityType == EActivityType.DRAFTING)
+ {
+ // Loop over the patterns chosen
+ for (var p : selectedPatterns)
+ {
+ // Loop over the users in the input data
+ for (var user : names)
+ {
+ // Update progress bar
+ ctrl.setProgress(i / (selectedPatterns.size() * names.size()));
+
+ // Construct the pattern
+ var pattern = PatternFactory.Create(p, user, inputData, getMeasurementTemplate(p));
+ assert pattern != null;
+
+ // Construct the blocks
+ pattern.createBlocks();
+
+ // Write out the file
+ pattern.writeToDXF(outputDirectory, config);
+
+ // Count
+ i++;
+ }
+ }
+ }
+
+ // Perform analysis
+ else
+ {
+ var plot = new RectanglePlot(inputData, analysisIdX, analysisIdY, plotType);
+ for (var user : names)
+ {
+ ctrl.setProgress(i / (names.size()));
+ plot.addNewRectangle(user);
+ i++;
+ }
+ plot.writeToDXF(outputDirectory, config);
+ }
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ finally
+ {
+ ctrl.setProgress(0);
+ setContent("GettingStarted");
+ isRunning = false;
+ }
+ }
+ }
+
+ /**
+ * Set the state of the checkboxes
+ * @param key the name of the checkbox
+ * @param newVal its state
+ */
+ public void setCheck(String key, Boolean newVal)
+ {
+ if (newVal) outputChecks.add(key);
+ else outputChecks.remove(key);
+ }
+
+ // Getters and Setters //
+
+ public EActivityType getActivity()
+ {
+ return activityType;
+ }
+
+ public String getInputFile()
+ {
+ return inputFile;
+ }
+
+ public void setActivityType(EActivityType activityType)
+ {
+ this.activityType = activityType;
+ }
+
+ public void setInputFile(String inputFile)
+ {
+ this.inputFile = inputFile;
+ }
+
+ public void setOutputPath(String outputPath)
+ {
+ this.outputPath = outputPath;
+ }
+
+ public void setIds(String idX, String idY)
+ {
+ analysisIdX = idX;
+ analysisIdY = idY;
+ }
+
+ public void setPlotType(EPlotType plotType)
+ {
+ this.plotType = plotType;
+ }
+
+ public void setPatterns(ArrayList patternsChecked)
+ {
+ selectedPatterns.clear();
+ selectedPatterns.addAll(patternsChecked);
+ }
+}
diff --git a/src/module-info.java b/src/module-info.java
new file mode 100644
index 0000000..60d00ee
--- /dev/null
+++ b/src/module-info.java
@@ -0,0 +1,14 @@
+module JBlockCreator {
+ requires javafx.controls;
+ requires javafx.fxml;
+ requires org.controlsfx.controls;
+ requires com.dlsc.formsfx;
+ requires org.kordamp.ikonli.javafx;
+ requires org.kordamp.bootstrapfx.core;
+ requires org.jfxtras.styles.jmetro;
+ requires java.prefs;
+
+ exports jblockmain;
+ opens jblockui to javafx.fxml;
+ exports jblockui;
+}
\ No newline at end of file
diff --git a/src/settings.properties b/src/settings.properties
new file mode 100644
index 0000000..4ab9668
--- /dev/null
+++ b/src/settings.properties
@@ -0,0 +1,6 @@
+app_name=JBlockCreator
+maj_ver=1
+min_ver=6
+prefWidth=1280
+prefHeight=720
+tolerance=10e-8
\ No newline at end of file
diff --git a/src/strings.properties b/src/strings.properties
deleted file mode 100644
index 02327fb..0000000
--- a/src/strings.properties
+++ /dev/null
@@ -1,8 +0,0 @@
-app_name=JBlockCreator
-maj_ver=1
-min_ver=5
-failed_out_file=failed_outputs.txt
-guide_url=/guide/v1.0/User_Guide
-help_text=Locate the user guide that came with the release or go the JBlockCreator github page for help.
-failed_output_msg=Some outputs could not be made, see failed outputs log file in the output folder for details.
-format_msg=Input must follow the tag format [Capital Letter][3-digit Number]
\ No newline at end of file