commit 608cf45822bfdc984312c512c748a9c29a8dc8cd Author: a dinosaur Date: Sun May 5 17:01:56 2024 +1000 init dump diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2bfcae0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +.DS_Store +/.build +/Packages +xcuserdata/ +DerivedData/ +.swiftpm/configuration/registries.json +.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata +.netrc + +Package.resolved +*.blend1 diff --git a/Package.swift b/Package.swift new file mode 100644 index 0000000..65bb694 --- /dev/null +++ b/Package.swift @@ -0,0 +1,41 @@ +// swift-tools-version: 5.9 + +import PackageDescription + +let package = Package( + name: "CavesOfJolk-Swift", + platforms: [ + .macOS(.v11) + ], + products: [ + .executable(name: "Test", targets: ["Test"]), + .library(name: "JolkEngine", targets: ["JolkEngine"]) + ], + dependencies: [ + .package( + url: "https://github.com/ctreffs/SwiftSDL2.git", + .upToNextMajor(from: "1.4.1")), + .package( + url: "https://github.com/apple/swift-collections.git", + .upToNextMinor(from: "1.1.0")) + ], + targets: [ + .executableTarget( + name: "Test", + dependencies: [ .target(name: "JolkEngine") ], + resources: [ .process("Resources") ] + ), + .target( + name: "JolkEngine", + dependencies: [ + .product(name: "SDL", package: "SwiftSDL2"), + .product(name: "Collections", package: "swift-collections"), + "HSLuv" + ], + swiftSettings: [ + .unsafeFlags(["-Xcc", "-DGL_SILENCE_DEPRECATION"]) + ] + ), + .target(name: "HSLuv"), + ] +) diff --git a/Sources/HSLuv/LICENSE.txt b/Sources/HSLuv/LICENSE.txt new file mode 100644 index 0000000..96dac0a --- /dev/null +++ b/Sources/HSLuv/LICENSE.txt @@ -0,0 +1,19 @@ +Copyright (c) 2015 Alexei Boronine + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/Sources/HSLuv/README.md b/Sources/HSLuv/README.md new file mode 100644 index 0000000..ed75124 --- /dev/null +++ b/Sources/HSLuv/README.md @@ -0,0 +1,40 @@ +[![Cocoapod compatible](https://img.shields.io/cocoapods/v/hsluv-objc.svg)](https://cocoapods.org/pods/hsluv-objc) +[![Build Status](https://travis-ci.org/hsluv/hsluv-objc.svg?branch=master)](https://travis-ci.org/hsluv/hsluv-objc) + +#hsluv-objc + +Objective-C port of [HSLuv](http://www.hsluv.org). + +##Which files are needed? + +If you're using [CocoaPods](https://cocoapods.org) just add `pod 'hsluv-objc'` to your Podfile. + +Otherwise, include this files in your project: + +- hsluv-objc.h +- hsluv-objc+Tests.h +- hsluv-objc.c + +##How to use + +Import `hsluv-objc.h`, which defines the following functions: + +~~~objective-c +// Accepts red, green and blue values between 0 and 1, returns the color in hex format, as in "#012C4A" +NSString *rgbToHex(CGFloat red, CGFloat green, CGFloat blue); + +// Accepts an hex color, as in "#012C4A", and stores its red, green and blue components with values between 0 and 1. +BOOL hexToRgb(NSString *hex, CGFloat *red, CGFloat *green, CGFloat *blue); + +// Hue is a value between 0 and 360, saturation and lightness between 0 and 100. Stores the RGB in values between 0 and 1. +void hsluvToRgb(CGFloat hue, CGFloat saturation, CGFloat lightness, CGFloat *red, CGFloat *green, CGFloat *blue); + +// Red, green and blue values between 0 and 1, stores the hsluv components with hue between 0 and 360, saturation and lightness between 0 and 100. +void rgbToHsluv(CGFloat red, CGFloat green, CGFloat blue, CGFloat *hue, CGFloat *saturation, CGFloat *lightness); + +// Hue is a value between 0 and 360, saturation and lightness between 0 and 100. Stores the RGB in values between 0 and 1. +void hpluvToRgb(CGFloat hue, CGFloat saturation, CGFloat lightness, CGFloat *red, CGFloat *green, CGFloat *blue); + +// Red, green and blue values between 0 and 1, stores the hpluv components with hue between 0 and 360, saturation and lightness between 0 and 100. +void rgbToHpluv(CGFloat red, CGFloat green, CGFloat blue, CGFloat *hue, CGFloat *saturation, CGFloat *lightness); +~~~ diff --git a/Sources/HSLuv/hsluv-objc+Test.h b/Sources/HSLuv/hsluv-objc+Test.h new file mode 100644 index 0000000..150938c --- /dev/null +++ b/Sources/HSLuv/hsluv-objc+Test.h @@ -0,0 +1,23 @@ +// +// hsluv_objc+Test.h +// hsluv-objc +// +// Created by Roger Tallada on 4/6/15. +// Copyright (c) 2015 Alexei Boronine +// + +#ifndef hsluv_objc_hsluv_objc_Test_h +#define hsluv_objc_hsluv_objc_Test_h + +// Exposed for testing purposes only: +typedef struct tuple { + CGFloat a, b, c; +} Tuple; + +Tuple rgbToXyz(Tuple rgb); +Tuple xyzToLuv(Tuple xyz); +Tuple luvToLch(Tuple luv); +Tuple lchToHsluv(Tuple lch); +Tuple lchToHpluv(Tuple lch); + +#endif diff --git a/Sources/HSLuv/hsluv-objc.m b/Sources/HSLuv/hsluv-objc.m new file mode 100644 index 0000000..143f659 --- /dev/null +++ b/Sources/HSLuv/hsluv-objc.m @@ -0,0 +1,510 @@ +// +// hsluv_objc.m +// hsluv-objc +// +// Created by Roger Tallada on 4/6/15. +// Copyright (c) 2015 Alexei Boronine +// +// Implementation of hsluv translated from hsluv.coffee + + +#import +#import "hsluv-objc.h" +#import "hsluv-objc+Test.h" + +#pragma mark Private funcions + +/* + # The math for most of this module was taken from: + # + # * http://www.easyrgb.com + # * http://www.brucelindbloom.com + # * Wikipedia + # + + + # All numbers taken from math/bounds.wxm wxMaxima file: + # + # fpprintprec: 16; + # CGFloat(M_XYZ_RGB); + # CGFloat(M_RGB_XYZ); + # CGFloat(refX); + # CGFloat(refY); + # CGFloat(refZ); + # CGFloat(refU); + # CGFloat(refV); + # CGFloat(lab_k); + # CGFloat(lab_e); + #*/ + + +typedef struct tuple2 { + CGFloat a, b; +} Tuple2; + +static Tuple m[3] = { + { 3.2409699419045214, -1.5373831775700935, -0.49861076029300328}, // R + {-0.96924363628087983, 1.8759675015077207, 0.041555057407175613}, // G + { 0.055630079696993609, -0.20397695888897657, 1.0569715142428786} // B +}; + +static Tuple m_inv[3] = { + {0.41239079926595948, 0.35758433938387796, 0.18048078840183429}, // X + {0.21263900587151036, 0.71516867876775593, 0.072192315360733715}, // Y + {0.019330818715591851, 0.11919477979462599, 0.95053215224966058} // Z +}; + +//Constants +CGFloat refU = 0.19783000664283681; +CGFloat refV = 0.468319994938791; + +// CIE LUV constants +CGFloat kappa = 903.2962962962963; +CGFloat epsilon = 0.0088564516790356308; + +// For a given lightness, return a list of 6 lines in slope-intercept +// form that represent the bounds in CIELUV, stepping over which will +// push a value out of the RGB gamut +Tuple2 * getBounds(CGFloat l) { + CGFloat sub1 = pow(l + 16, 3) / 1560896; + CGFloat sub2 = sub1 > epsilon ? sub1 : (l / kappa); + + Tuple2 *ret = malloc(6 * sizeof(Tuple2)); + + for (int channel=0; channel<3; channel++) { + Tuple mTuple = m[channel]; + + CGFloat m1 = mTuple.a; + CGFloat m2 = mTuple.b; + CGFloat m3 = mTuple.c; + + for (int t=0; t <= 1; t++) { + CGFloat top1 = (284517 * m1 - 94839 * m3) * sub2; + CGFloat top2 = (838422 * m3 + 769860 * m2 + 731718 * m1) * l * sub2 - 769860 * t * l; + CGFloat bottom = (632260 * m3 - 126452 * m2) * sub2 + 126452 * t; + + Tuple2 tuple = {top1 / bottom, top2 / bottom}; + + NSUInteger lineNumber = channel * 2 + t; + ret[lineNumber] = tuple; + } + } + return ret; +} + +CGFloat intersectLineLine(Tuple2 line1, Tuple2 line2) { + return (line1.b - line2.b) / (line2.a - line1.a); +} + +CGFloat distanceFromPole(CGPoint point) { + return sqrt(pow(point.x, 2) + pow(point.y, 2)); +} + +CGFloat lengthOfRayUntilIntersect(CGFloat theta, Tuple2 line) { + // theta -- angle of ray starting at (0, 0) + // m, b -- slope and intercept of line + // x1, y1 -- coordinates of intersection + // len -- length of ray until it intersects with line + // + // b + m * x1 = y1 + // len >= 0 + // len * cos(theta) = x1 + // len * sin(theta) = y1 + // + // + // b + m * (len * cos(theta)) = len * sin(theta) + // b = len * sin(hrad) - m * len * cos(theta) + // b = len * (sin(hrad) - m * cos(hrad)) + // len = b / (sin(hrad) - m * cos(hrad)) + // + CGFloat m1 = line.a; + CGFloat b1 = line.b; + CGFloat len = b1 / (sin(theta) - m1 * cos(theta)); + // if (len < 0) { + // return 0; + // } + return len; +} + +// For given lightness, returns the maximum chroma. Keeping the chroma value +// below this number will ensure that for any hue, the color is within the RGB +// gamut. +CGFloat maxSafeChromaForL(CGFloat l) { + CGFloat minLength = CGFLOAT_MAX; + Tuple2 *bounds = getBounds(l); + for (NSUInteger i = 0; i < 6; i++) { + Tuple2 boundTuple = bounds[i]; + + CGFloat m1 = boundTuple.a; + CGFloat b1 = boundTuple.b; + + // x where line intersects with perpendicular running though (0, 0) + Tuple2 line2 = {-1 / m1, 0}; + CGFloat x = intersectLineLine(boundTuple, line2); + CGFloat distance = distanceFromPole(CGPointMake(x, b1 + x * m1)); + if (distance >= 0) { + if (distance < minLength) { + minLength = distance; + } + } + } + free(bounds); + return minLength; +} + +// For a given lightness and hue, return the maximum chroma that fits in +// the RGB gamut. +CGFloat maxChromaForLH(CGFloat l, CGFloat h) { + CGFloat hrad = h / 360 * M_PI * 2; + CGFloat minLength = CGFLOAT_MAX; + Tuple2 *bounds = getBounds(l); + for (NSUInteger i = 0; i < 6; i++) { + Tuple2 lineTuple = bounds[i]; + CGFloat l = lengthOfRayUntilIntersect(hrad, lineTuple); + if (l >= 0) { + if (l < minLength) { + minLength = l; + } + } + } + free(bounds); + return minLength; +} + + + +CGFloat tupleDotProduct(Tuple t1, Tuple t2) { + CGFloat ret = 0.0; + for (NSUInteger i = 0; i < 3; i++) { + switch (i) { + case 0: + ret += t1.a * t2.a; + break; + case 1: + ret += t1.b * t2.b; + break; + case 2: + ret += t1.c * t2.c; + break; + default: + break; + } + } + return ret; +} + +// Used for rgb conversions +CGFloat fromLinear(CGFloat c) { + if (c <= 0.0031308) { + return 12.92 * c; + } + else { + return 1.055 * pow(c, 1 / 2.4) - 0.055; + } +} + +CGFloat toLinear(CGFloat c) { + CGFloat a = 0.055; + if (c > 0.04045) { + return pow((c + a) / (1 + a), 2.4); + } + else { + return c / 12.92; + } +} + +#pragma mark Conversion functions + +Tuple xyzToRgb(Tuple xyz) { + CGFloat r = fromLinear(tupleDotProduct(m[0], xyz)); + CGFloat g = fromLinear(tupleDotProduct(m[1], xyz)); + CGFloat b = fromLinear(tupleDotProduct(m[2], xyz)); + + Tuple rgb = {r, g, b}; + return rgb; +} + +Tuple rgbToXyz(Tuple rgb) { + Tuple rgbl = {toLinear(rgb.a), toLinear(rgb.b), toLinear(rgb.c)}; + + CGFloat x = tupleDotProduct(m_inv[0], rgbl); + CGFloat y = tupleDotProduct(m_inv[1], rgbl); + CGFloat z = tupleDotProduct(m_inv[2], rgbl); + + Tuple xyz = {x, y, z}; + return xyz; +} + +// http://en.wikipedia.org/wiki/CIELUV +// In these formulas, Yn refers to the reference white point. We are using +// illuminant D65, so Yn (see refY in Maxima file) equals 1. The formula is +// simplified accordingly. +CGFloat yToL (CGFloat y) { + CGFloat l; + if (y <= epsilon) { + l = y * kappa; + } + else { + l = 116.0 * pow(y, 1.0/3.0) - 16.0; + } + return l; +} + +CGFloat lToY (CGFloat l) { + if (l <= 8) { + return l / kappa; + } + else { + return powl((l + 16) / 116, 3); + } +} + +Tuple xyzToLuv(Tuple xyz) { + CGFloat varU = (4 * xyz.a) / (xyz.a + (15 * xyz.b) + (3 * xyz.c)); + CGFloat varV = (9 * xyz.b) / (xyz.a + (15 * xyz.b) + (3 * xyz.c)); + CGFloat l = yToL(xyz.b); + // Black will create a divide-by-zero error + if (l==0) { + Tuple luv = {0, 0, 0}; + return luv; + } + CGFloat u = 13 * l * (varU - refU); + CGFloat v = 13 * l * (varV - refV); + Tuple luv = {l, u, v}; + return luv; +} + +Tuple luvToXyz(Tuple luv) { + // Black will create a divide-by-zero error + if (luv.a == 0) { + Tuple xyz = {0, 0, 0}; + return xyz; + } + CGFloat varU = luv.b / (13 * luv.a) + refU; + CGFloat varV = luv.c / (13 * luv.a) + refV; + CGFloat y = lToY(luv.a); + CGFloat x = 0 - (9 * y * varU) / ((varU - 4) * varV - varU * varV); + CGFloat z = (9 * y - (15 * varV * y) - (varV * x)) / (3 * varV); + Tuple xyz = {x, y, z}; + return xyz; +} + +Tuple luvToLch(Tuple luv) { + CGFloat l = luv.a, u = luv.b, v = luv.c; + CGFloat h, c = sqrt(pow(u, 2) + pow(v, 2)); + + // Greys: disambiguate hue + if (c < 0.00000001) { + h = 0; + } + else { + CGFloat hrad = atan2(v, u); + h = hrad * 360 / 2 / M_PI; + if (h < 0) { + h = 360 + h; + } + } + + Tuple lch = {l, c, h}; + return lch; +} + +Tuple lchToLuv(Tuple lch) { + CGFloat hRad = lch.c / 360 * 2 * M_PI; + CGFloat u = cos(hRad) * lch.b; + CGFloat v = sin(hRad) * lch.b; + Tuple luv = {lch.a, u, v}; + return luv; +} + +CGFloat checkBorders(CGFloat channel) { + if (channel < 0) { + return 0; + } + if (channel > 1) { + return 1; + } + return channel; +} + +BOOL hexToInt(NSString *hex, unsigned int *result) { + NSScanner *scanner = [NSScanner scannerWithString:hex]; + return [scanner scanHexInt:result]; +} + +#pragma mark hsluv +Tuple hsluvToLch(Tuple hsluv) { + CGFloat h = hsluv.a, s = hsluv.b, l = hsluv.c, c; + + // White and black: disambiguate chroma + if (l > 99.9999999 || l < 0.00000001) { + c = 0; + } + else { + CGFloat max = maxChromaForLH(l, h); + c = max / 100 * s; + } + // Greys: disambiguate hue + if (s < 0.00000001) { + h = 0; + } + Tuple lch = {l, c, h}; + return lch; +} + +Tuple lchToHsluv(Tuple lch) { + CGFloat l = lch.a, c = lch.b, h = lch.c, s; + + // White and black: disambiguate saturation + if (l > 99.9999999 || l < 0.00000001) { + s = 0; + } + else { + CGFloat max = maxChromaForLH(l, h); + s = c / max * 100; + } + // Greys: disambiguate hue + if (c < 0.00000001) { + h = 0; + } + Tuple hsluv = {h, s, l}; + return hsluv; +} + +#pragma mark hsluvP +Tuple hpluvToLch(Tuple hpluv) { + CGFloat h = hpluv.a, s = hpluv.b, l = hpluv.c, c; + + // White and black: disambiguate chroma + if (l > 99.9999999 || l < 0.00000001) { + c = 0; + } + else { + CGFloat max = maxSafeChromaForL(l); + c = max / 100 * s; + } + + // Greys: disambiguate hue + if (s < 0.00000001) { + h = 0; + } + Tuple lch = {l, c, h}; + return lch; +} + +Tuple lchToHpluv(Tuple lch) { + CGFloat l = lch.a, c = lch.b, h = lch.c, s; + + // White and black: disambiguate saturation + if (l > 99.9999999 || l < 0.00000001) { + s = 0; + } + else { + CGFloat max = maxSafeChromaForL(l); + s = c / max * 100; + } + // Greys: disambiguate hue + if (c < 0.00000001) { + h = 0; + } + + Tuple hpluv = {h, s, l}; + return hpluv; +} + +CGFloat roundTo6decimals(CGFloat channel) { + CGFloat ch = round(channel * 1e6) / 1e6; + if (ch < 0 || ch > 1) { + @throw [NSString stringWithFormat:@"Illegal rgb value: %@", @(ch)]; + } + return ch; +} + +#pragma mark Public functions + +NSString *rgbToHex(CGFloat red, CGFloat green, CGFloat blue) { + NSString *hex = @"#"; + + CGFloat r = roundTo6decimals(red); + CGFloat g = roundTo6decimals(green); + CGFloat b = roundTo6decimals(blue); + + NSString *R = [NSString stringWithFormat:@"%02X", (int)round(r * 255)]; + NSString *G = [NSString stringWithFormat:@"%02X", (int)round(g * 255)]; + NSString *B = [NSString stringWithFormat:@"%02X", (int)round(b * 255)]; + + return [[[hex stringByAppendingString:R] stringByAppendingString:G] stringByAppendingString:B]; +} + +BOOL hexToRgb(NSString *hex, CGFloat *red, CGFloat *green, CGFloat *blue) { + if ([hex length] >= 7) { + if ([hex characterAtIndex:0] == '#') { + hex = [hex substringFromIndex:1]; + } + unsigned int r, g, b; + + NSString *redS = [hex substringToIndex:2]; + if (!hexToInt(redS, &r)) { + return NO; + } + + NSRange gRange = {2, 2}; + NSString *greenS = [hex substringWithRange:gRange]; + if (!hexToInt(greenS, &g)) { + return NO; + } + + NSRange bRange = {4, 2}; + NSString *blueS = [hex substringWithRange:bRange]; + if (!hexToInt(blueS, &b)) { + return NO; + } + + *red = (CGFloat)r / 255; + *green = (CGFloat)g / 255; + *blue = (CGFloat)b / 255; + + return YES; + } + return NO; +} + +void hsluvToRgb(CGFloat hue, CGFloat saturation, CGFloat lightness, CGFloat *red, CGFloat *green, CGFloat *blue) { + Tuple hsluv = {hue, saturation, lightness}; + + Tuple rgb = xyzToRgb(luvToXyz(lchToLuv(hsluvToLch(hsluv)))); + + *red = rgb.a; + *green = rgb.b; + *blue = rgb.c; +} + +void rgbToHsluv(CGFloat red, CGFloat green, CGFloat blue, CGFloat *hue, CGFloat *saturation, CGFloat *lightness) { + Tuple rgb = {red, green, blue}; + + Tuple hsluv = lchToHsluv(luvToLch(xyzToLuv(rgbToXyz(rgb)))); + + *hue = hsluv.a; + *saturation = hsluv.b; + *lightness = hsluv.c; +} + +void hpluvToRgb(CGFloat hue, CGFloat saturation, CGFloat lightness, CGFloat *red, CGFloat *green, CGFloat *blue) { + Tuple hpluv = {hue, saturation, lightness}; + + Tuple rgb = xyzToRgb(luvToXyz(lchToLuv(hpluvToLch(hpluv)))); + + *red = rgb.a; + *green = rgb.b; + *blue = rgb.c; +} + +void rgbToHpluv(CGFloat red, CGFloat green, CGFloat blue, CGFloat *hue, CGFloat *saturation, CGFloat *lightness) { + Tuple rgb = {red, green, blue}; + + Tuple hpluv = lchToHpluv(luvToLch(xyzToLuv(rgbToXyz(rgb)))); + + *hue = hpluv.a; + *saturation = hpluv.b; + *lightness = hpluv.c; +} diff --git a/Sources/HSLuv/include/hsluv-objc.h b/Sources/HSLuv/include/hsluv-objc.h new file mode 100644 index 0000000..bbaba62 --- /dev/null +++ b/Sources/HSLuv/include/hsluv-objc.h @@ -0,0 +1,33 @@ +// +// hsluv_objc.h +// hsluv-objc +// +// Created by Roger Tallada on 4/6/15. +// Copyright (c) 2015 Alexei Boronine +// + +#import +#import + +#ifndef hsluv_objc_h +#define hsluv_objc_h + +// Accepts red, green and blue values between 0 and 1, returns the color in hex format, as in "#012C4A" +NSString *rgbToHex(CGFloat red, CGFloat green, CGFloat blue); + +// Accepts an hex color, as in "#012C4A", and stores its red, green and blue components with values between 0 and 1. +BOOL hexToRgb(NSString *hex, CGFloat *red, CGFloat *green, CGFloat *blue); + +// Hue is a value between 0 and 360, saturation and lightness between 0 and 100. Stores the RGB in values between 0 and 1. +void hsluvToRgb(CGFloat hue, CGFloat saturation, CGFloat lightness, CGFloat *red, CGFloat *green, CGFloat *blue); + +// Red, green and blue values between 0 and 1, stores the hsluv components with hue between 0 and 360, saturation and lightness between 0 and 100. +void rgbToHsluv(CGFloat red, CGFloat green, CGFloat blue, CGFloat *hue, CGFloat *saturation, CGFloat *lightness); + +// Hue is a value between 0 and 360, saturation and lightness between 0 and 100. Stores the RGB in values between 0 and 1. +void hpluvToRgb(CGFloat hue, CGFloat saturation, CGFloat lightness, CGFloat *red, CGFloat *green, CGFloat *blue); + +// Red, green and blue values between 0 and 1, stores the hpluv components with hue between 0 and 360, saturation and lightness between 0 and 100. +void rgbToHpluv(CGFloat red, CGFloat green, CGFloat blue, CGFloat *hue, CGFloat *saturation, CGFloat *lightness); + +#endif \ No newline at end of file diff --git a/Sources/JolkEngine/Application.swift b/Sources/JolkEngine/Application.swift new file mode 100644 index 0000000..ededf37 --- /dev/null +++ b/Sources/JolkEngine/Application.swift @@ -0,0 +1,205 @@ +import Foundation +import SDL + + +public protocol ApplicationImplementation +{ + func create(render: inout Renderer) + func quit() + func loadContent(content: inout ContentManager) throws + func resize(width: Int, height: Int) + func update(deltaTime: Float) + func draw(render: inout Renderer, deltaTime: Float) +} + +extension ApplicationImplementation +{ + public func quit() {} +} + +public struct ApplicationConfiguration +{ + let resizable: Bool + let vSync: VSyncMode + let windowWidth: Int32 + let windowHeight: Int32 + let bundle: Bundle + + public init(resizable: Bool, vSync: VSyncMode, windowWidth: Int32, windowHeight: Int32, bundle: Bundle) + { + self.resizable = resizable + self.vSync = vSync + self.windowWidth = windowWidth + self.windowHeight = windowHeight + self.bundle = bundle + } +} + + +//FIXME: Wrap these +public var sdlPad: OpaquePointer? = nil +var joyId: Int32 = -1 + +public class Application +{ + private let implementation: ApplicationImplementation + private let configuration: ApplicationConfiguration + + private var window: OpaquePointer? + private var render: Renderer + private var content: ContentManager + + typealias ResizeEvent = (width: Int32, height: Int32) + private var resize: ResizeEvent? = nil + + func openController(index: Int32) -> (pad: OpaquePointer, joy: Int32)? + { + guard let sdlPad = SDL_GameControllerOpen(index) else { return nil } + let joyId = SDL_JoystickGetDeviceInstanceID(index) + print("Using gamepad #\(joyId), \"\(String(cString: SDL_GameControllerName(sdlPad)))\"") + return (pad: sdlPad, joy: joyId) + } + + public init(application: ApplicationImplementation, config: ApplicationConfiguration) + { + self.implementation = application + self.configuration = config + self.render = OpenGL(version: .init(major: 1, minor: 5)) + self.content = ContentManager(&self.render, bundle: configuration.bundle) + } + + public func run() + { + guard SDL_Init(SDL_INIT_VIDEO | SDL_INIT_GAMECONTROLLER) == 0 + else { fatalError("SDL_Init: \(String(cString: SDL_GetError()))") } + + let winPos = Int32(SDL_WINDOWPOS_UNDEFINED_MASK) + let winWidth: Int32 = configuration.windowWidth, winHeight: Int32 = configuration.windowHeight + var winFlags = SDL_WINDOW_RESIZABLE.rawValue | SDL_WINDOW_ALLOW_HIGHDPI.rawValue + if render is OpenGL { winFlags |= SDL_WINDOW_OPENGL.rawValue } + window = SDL_CreateWindow("Something", winPos, winPos, winWidth, winHeight, winFlags) + guard window != nil else { fatalError("SDL_CreateWindow: \(String(cString: SDL_GetError()))") } + + do + { + try render.create(sdlWindow: window!) + try render.setVsync(mode: configuration.vSync) + } + catch RendererError.sdlError(let message) + { + fatalError("idk error \(message)") + } + catch { fatalError("piss") } + + for i in 0...SDL_NumJoysticks() + { + if SDL_IsGameController(i) != SDL_TRUE { continue } + if let open = openController(index: i) + { + sdlPad = open.pad + joyId = open.joy + break + } + } + + do + { + implementation.create(render: &render) + + content.setLoader(extension: "obj", loader: ObjLoader()) + content.setLoader(extension: "g3db", loader: G3DbLoader()) + content.setLoader(extensions: ["png", "jpg"], loader: NSImageLoader()) + try implementation.loadContent(content: &content) + } + catch + { + fatalError("loadContent()") + } + + let timeMul = 1 / Double(SDL_GetPerformanceFrequency()); + var prevTime = SDL_GetPerformanceCounter(); + + resize = displaySize + + mainLoop: while true + { + Input.instance.newTick() + + var event = SDL_Event() + while SDL_PollEvent(&event) > 0 + { + switch SDL_EventType(event.type) + { + case SDL_QUIT: break mainLoop + case SDL_KEYDOWN: + if event.key.repeat == 0 + { + Input.instance.pressEvent(scan: event.key.keysym.scancode) + } + case SDL_KEYUP: + Input.instance.releaseEvent(scan: event.key.keysym.scancode) + case SDL_WINDOWEVENT: + switch SDL_WindowEventID(UInt32(event.window.event)) + { + case SDL_WINDOWEVENT_RESIZED: + resize = displaySize + default: break + } + case SDL_CONTROLLERDEVICEADDED: + if sdlPad == nil && SDL_IsGameController(event.cdevice.which) == SDL_TRUE + { + if let open = openController(index: event.cdevice.which) + { + sdlPad = open.pad + joyId = open.joy + } + } + case SDL_CONTROLLERDEVICEREMOVED: + if event.cdevice.which == joyId + { + SDL_GameControllerClose(sdlPad) + sdlPad = nil + joyId = -1 + } + default: break + } + } + + let time = SDL_GetPerformanceCounter(); + let deltaTime = Float(Double(time - prevTime) * timeMul) + prevTime = time + + implementation.update(deltaTime: min(deltaTime, 1.0 / 15.0)) + repaint(deltaTime) + } + + implementation.quit() + + content.releaseAll() + render.delete() + SDL_DestroyWindow(window) + SDL_Quit() + } + + private func repaint(_ deltaTime: Float) + { + if resize != nil + { + render.resize(width: resize!.width, height: resize!.height) + implementation.resize(width: Int(resize!.width), height: Int(resize!.height)) + resize = nil + } + + render.newFrame() + implementation.draw(render: &render, deltaTime: deltaTime) + + SDL_GL_SwapWindow(window) + } + + private var displaySize: ResizeEvent + { + var width: Int32 = 0, height: Int32 = 0 + SDL_GL_GetDrawableSize(window, &width, &height) + return (width, height) + } +} diff --git a/Sources/JolkEngine/Colour.swift b/Sources/JolkEngine/Colour.swift new file mode 100644 index 0000000..97f6a30 --- /dev/null +++ b/Sources/JolkEngine/Colour.swift @@ -0,0 +1,95 @@ +import SDL2 +import HSLuv + + +public struct Colour: Equatable { let r, g, b, a: Float } + +public extension Colour +{ + static var zero: Self { .init(r: 0, g: 0, b: 0, a: 0) } + static var black: Self { .init(r: 0, g: 0, b: 0, a: 1) } + static var white: Self { .init(r: 1, g: 1, b: 1, a: 1) } + + init(r: Float, g: Float, b: Float) + { + self.init(r: r, g: g, b: b, a: 1.0) + } + + init(fromSdl: SDL_Color) + { + self.init( + r: Float(fromSdl.r) / 0xFF, + g: Float(fromSdl.g) / 0xFF, + b: Float(fromSdl.b) / 0xFF, + a: Float(fromSdl.a) / 0xFF) + } + + init(fromRgb24: UInt32) + { + self.init( + r: Float((fromRgb24 >> 16) & 0xFF) / 0xFF, + g: Float((fromRgb24 >> 8) & 0xFF) / 0xFF, + b: Float((fromRgb24 >> 0) & 0xFF) / 0xFF, + a: 1) + } + + init(fromRgba32: UInt32) + { + self.init( + r: Float((fromRgba32 >> 24) & 0xFF) / 0xFF, + g: Float((fromRgba32 >> 16) & 0xFF) / 0xFF, + b: Float((fromRgba32 >> 8) & 0xFF) / 0xFF, + a: Float((fromRgba32 >> 0) & 0xFF) / 0xFF) + } + + func mix(with rhs: Colour, _ amount: Float) -> Colour + { + let x = amount.saturate + return Colour( + r: Float.lerp(r, rhs.r, x), + g: Float.lerp(g, rhs.g, x), + b: Float.lerp(b, rhs.b, x), + a: Float.lerp(a, rhs.a, x)) + } + + func lighten(by: Double) -> Colour + { + var hue = CGFloat(), sat = CGFloat(), light = CGFloat() + rgbToHsluv(CGFloat(r), CGFloat(g), CGFloat(b), &hue, &sat, &light) + let gamma: CGFloat = 3.0 + light = pow((pow(light / 100, 1 / gamma) + CGFloat(by) * 0.8).saturate, gamma) * 100 + var newR = CGFloat(), newG = CGFloat(), newB = CGFloat() + hsluvToRgb(hue, sat, light, &newR, &newG, &newB) + return Colour(r: Float(newR), g: Float(newG), b: Float(newB), a: a) + } + + var linear: Colour { get + { + Colour( + r: linearFromSrgb(r), + g: linearFromSrgb(g), + b: linearFromSrgb(b), + a: a) + } } + + func setAlpha(_ newAlpha: Float) -> Colour + { + return Colour(r: r, g: g, b: b, a: newAlpha) + } +} + + +@inline(__always) fileprivate func srgbFromLinear(_ x: Float) -> Float +{ + return (x < 0.0031308) + ? x * 12.92 + : 1.055 * pow(x, 1.0 / 2.4) - 0.055 +} + +@inline(__always) fileprivate func linearFromSrgb(_ x: Float) -> Float +{ + return (x < 0.04045) + ? x / 12.92 + : pow((x + 0.055) / 1.055, 2.4) +} + diff --git a/Sources/JolkEngine/Content/ContentManager.swift b/Sources/JolkEngine/Content/ContentManager.swift new file mode 100644 index 0000000..512150a --- /dev/null +++ b/Sources/JolkEngine/Content/ContentManager.swift @@ -0,0 +1,165 @@ +import Foundation + + +public protocol ContentLoaderParametersProtocol +{ + associatedtype T: Resource +} + +public struct ContentManager +{ + private var loaders = Dictionary() + private var resources = [any RendererResource]() + private let renderer: Renderer + private let bundle: Bundle +} + +extension ContentManager +{ + internal init(_ renderer: inout Renderer, bundle: Bundle) + { + self.renderer = renderer + self.bundle = bundle + } + + public mutating func setLoader(extensions exts: [String], loader: Loader) where Loader.T == T + { + for i in exts + { + setLoader(extension: i, loader: loader) + } + } + + public mutating func setLoader(extension ext: String, loader: Loader) where Loader.T == T + { + loaders[ext] = loader + } + + public mutating func create(mesh: Mesh) throws -> RenderMesh + { + let rendMesh = try renderer.createMesh(mesh: mesh) + resources.append(rendMesh) + return rendMesh + } + + public mutating func create(texture: Image, params: Texture2DParameters = .init()) throws -> Texture2D + { + try texture.pixels.withUnsafeBytes + { + raw in + let data = raw.baseAddress! + let rendTex = try renderer.createTexture( + data: data, width: texture.width, height: texture.height, + filter: params.magFilter, mipMode: params.mipMode) + resources.append(rendTex) + return Texture2D(id: rendTex, width: texture.width, height: texture.height) + } + } + + public func getResource(_ path: String) throws -> URL + { + guard let extIndex = path.lastIndex(of: ".") + else { throw ContentError.badPath } + let name = String(path[..(_ path: String) throws -> T + { + let resourceUrl = try getResource(path) + + let loader = loaders[resourceUrl.pathExtension] + guard let resource = loader?.load(url: resourceUrl) + else { throw ContentError.loadFailure } + + if T.self == Mesh.self + { + guard let mesh = resource as? Mesh else { throw ContentError.loadFailure } + return mesh as! T + } + if T.self == Image.self + { + guard let image = resource as? Image else { throw ContentError.loadFailure } + return image as! T + } + if T.self == Texture2D.self + { + guard let image = resource as? Image else { throw ContentError.loadFailure } + let texture2D = try self.create(texture: image) + return texture2D as! T + } + throw ContentError.loadFailure + } + + public mutating func load(_ path: String, params: Params) throws + -> T where Params.T == T + { + let resourceUrl = try getResource(path) + + let loader = loaders[resourceUrl.pathExtension] + guard let resource = loader?.load(url: resourceUrl) + else { throw ContentError.loadFailure } + + if T.self == Mesh.self + { + guard let mesh = resource as? Mesh else { throw ContentError.loadFailure } + return mesh as! T + } + if T.self == Image.self + { + guard let image = resource as? Image else { throw ContentError.loadFailure } + return image as! T + } + if T.self == Texture2D.self + { + guard let image = resource as? Image else { throw ContentError.loadFailure } + let texture2D = try self.create(texture: image, params: params as! Texture2DParameters) + return texture2D as! T + } + throw ContentError.loadFailure + } + + public mutating func load(_ path: String) throws -> T + { + let resourceUrl = try getResource(path) + + let loader = loaders[resourceUrl.pathExtension] + guard let resource = loader?.load(url: resourceUrl) + else { throw ContentError.loadFailure } + + if T.self == RenderMesh.self + { + guard let mesh = resource as? Mesh else { throw ContentError.loadFailure } + let renderResource = try self.create(mesh: mesh) + return renderResource as! T + } + throw ContentError.loadFailure + } + + internal mutating func releaseAll() + { + for resource in resources.reversed() + { + if resource is RenderMesh + { + renderer.deleteMesh(resource as! RenderMesh) + } + else if resource is RenderTexture2D + { + renderer.deleteTexture(resource as! RenderTexture2D) + } + } + resources.removeAll() + } +} + +public enum ContentError: Error +{ + case badPath //else { fatalError("Malformed resource path \"\(path)\"") } + case resourceNotFound //else { fatalError("Resource \"\(path)\" doesn't exist") } + case loadFailure //else { fatalError("Failed to load resource \"\(path)\"") } +} diff --git a/Sources/JolkEngine/Content/Image.swift b/Sources/JolkEngine/Content/Image.swift new file mode 100644 index 0000000..764fae8 --- /dev/null +++ b/Sources/JolkEngine/Content/Image.swift @@ -0,0 +1,9 @@ +import Foundation + + +public struct Image: Resource +{ + let pixels: Data + let width: Int + let height: Int +} diff --git a/Sources/JolkEngine/Content/LoaderProtocol.swift b/Sources/JolkEngine/Content/LoaderProtocol.swift new file mode 100644 index 0000000..5c82b28 --- /dev/null +++ b/Sources/JolkEngine/Content/LoaderProtocol.swift @@ -0,0 +1,9 @@ +import Foundation + + +public protocol LoaderProtocol +{ + associatedtype T: Resource + + func load(url: URL) -> T? +} diff --git a/Sources/JolkEngine/Content/Mesh.swift b/Sources/JolkEngine/Content/Mesh.swift new file mode 100644 index 0000000..c9d6d5f --- /dev/null +++ b/Sources/JolkEngine/Content/Mesh.swift @@ -0,0 +1,54 @@ +import OrderedCollections + + +public struct Model: Resource +{ + public let meshes: [Mesh] +} + +public struct Mesh: Resource +{ + public typealias Index = UInt16 + + public struct Vertex: Equatable + { + public let position: Vec3f + public let normal: Vec3f + public let texCoord: Vec2f + + public init(position: Vec3f, normal: Vec3f, texCoord: Vec2f) + { + self.position = position + self.normal = normal + self.texCoord = texCoord + } + } + + public struct SubMesh + { + public let start, length: Int + + public init(start: Int, length: Int) + { + self.start = start + self.length = length + } + } + + public let vertices: [Vertex] + public let indices: [Index] + public let subMeshes: OrderedDictionary +} + +public extension Mesh +{ + static let empty = Self(vertices: .init(), indices: .init(), subMeshes: .init()) + + init(vertices: [Vertex], indices: [Index]) + { + self.init( + vertices: vertices, + indices: indices, + subMeshes: .init()) + } +} diff --git a/Sources/JolkEngine/Content/ObjModel.swift b/Sources/JolkEngine/Content/ObjModel.swift new file mode 100644 index 0000000..7f0f01d --- /dev/null +++ b/Sources/JolkEngine/Content/ObjModel.swift @@ -0,0 +1,120 @@ +import Foundation + + +public struct ObjModel +{ + public var positions = [Vec3f]() + public var normals = [Vec3f]() + public var texCoords = [Vec2f]() + public var objects = Dictionary() + + public struct Object { public var faces = [Face]() } + + public struct Index { public let p: Int, n: Int, t: Int } + public enum Face + { + case line(p1: Int, p2: Int) + case triangle(v1: Index, v2: Index, v3: Index) + case quad(v1: Index, v2: Index, v3: Index, v4: Index) + case ngon(_ v: [Index]) + } +} + +public struct ObjMaterial +{ + var model: IlluminationModel = .lambert + var ambient: Colour = .black + var diffuse: Colour = .white + var specular: Colour = .zero + var specularExp: Float = 30 + var refraction: Float = 1.0 + var alpha: Float = 1.0 + + var ambientMap: TextureMap? = nil + var diffuseMap: TextureMap? = nil + var specularMap: TextureMap? = nil + var specularExpMap: TextureMap? = nil + var dissolveMap: TextureMap? = nil + var bumpMap: TextureMap? = nil + var displacementMap: TextureMap? = nil + var decalMap: TextureMap? = nil + + // PBR extensions + var roughness: Float = 0.5 + var metallic: Float = 0.0 + var sheen: Float = 0.0 + var clearcoatThickness: Float = 0.0 + var clearcoatRoughness: Float = 0.03 // dunno what the default should be so here's the blender one + var emmision: Vec3f = .zero + var anisotropy: Float = 0.0 + var anisotropyRotation: Float = 0.0 + + var roughnessMap: TextureMap? = nil + var metallicMap: TextureMap? = nil + var sheenMap: TextureMap? = nil + var emmisionMap: TextureMap? = nil + var normalMap: TextureMap? = nil + + // Ft Fresnel reflectance + // Ft Fresnel transmittance + // Ns Specular exponent/shininess + // Ia Ambient light + // I Light intensity + // Ir Intensity from reflected direction (reflection map and/or raytracing) + // It Intensity from transmitted direction + // Ka Ambient reflectance + // Kd Diffuse reflectance + // Ks Specular reflectance + // Tf Transmission filter + // H Unit vector bisector between L and V + // L Unit light vector + // N Unit surface normal + // V Unit view vector + // + // j = piss + // Fr = Fresnel + // lambert = KaIa + Kd(N * Lj)Ij + // blinnPhong = lambert + Ks((H * Hj) ^ Ns)Ij + // + // Notes: Clara.io only usees 0 and 1, maya always exports 4, blender can export 1, 3, 6 + public enum IlluminationModel + { + case colour // Kd only + case lambert + case blinnPhong + case reflectionRaytrace // + Ir = (intensity of reflection map) + (ray trace) + case transparentGlassReflectionRaytrace // + Ir = (glass) + (intensity of reflection map) + (raytrace) + case reflectionRaytraceFresnel // Fr(Lj * Hj, Ks, Ns)Ij + Fr(N * V, Ks, Ns)Ir + case transparentRefractionReflectionRaytrace // + Ir + (1 - Ks)TfIt + case transparentRefractionReflectionRaytraceFresnel // Fr(Lj * Hj, Ks, Ns)Ij + Fr(N * V, Ks, Ns)Ir + case reflection // + Ir = (intensity of reflection map) + case transparentGlassReflection // + Ir = (glass) + (intensity of reflection map) + (raytrace) + case shadowOnly + } + + public struct TextureMap + { + var path: String = .init() + var flags: Flags = [ .blendHoriz, .blendVert ] + var blendMul: Float = 1.0 + var boost: Float = 0.0 // non-negative + var imfChan: ImfChan = .l // decal ? .m : .l + var mmBaseGain: (Float, Float) = (0.0, 1.0) + var offset: Vec3f = .zero + var scale: Vec3f = .one + var turbulence: Vec3f = .zero + var textureResolution: Int = 0 + + struct Flags: OptionSet + { + let rawValue: UInt8 + + static let blendHoriz: Self = Self(rawValue: 1 << 0) + static let blendVert: Self = Self(rawValue: 1 << 1) + static let colourCorrection: Self = Self(rawValue: 1 << 2) + static let clamp: Self = Self(rawValue: 1 << 3) + } + + enum ImfChan { case r, g, b, m, l, z } + } +} diff --git a/Sources/JolkEngine/Content/Resource.swift b/Sources/JolkEngine/Content/Resource.swift new file mode 100644 index 0000000..39e3227 --- /dev/null +++ b/Sources/JolkEngine/Content/Resource.swift @@ -0,0 +1,4 @@ +public protocol Resource +{ + +} diff --git a/Sources/JolkEngine/Input.swift b/Sources/JolkEngine/Input.swift new file mode 100644 index 0000000..4e6c399 --- /dev/null +++ b/Sources/JolkEngine/Input.swift @@ -0,0 +1,155 @@ +import SDL2 + + +public class Input +{ + private static let _instance = Input() + + public static var instance: Input { _instance } + + //private let _UP: UInt8 = 0 + //private let _PRESS: UInt8 = 1 + //private let _DOWN: UInt8 = 2 + //private let _RELEASE: UInt8 = 3 + + private static let _UP: UInt8 = 0b000 + private static let _DOWN: UInt8 = 0b010 + private static let _IMPULSE: UInt8 = 0b001 + private static let _REPEAT: UInt8 = 0b100 + private static let _PRESS: UInt8 = _DOWN | _IMPULSE + private static let _RELEASE: UInt8 = _UP | _IMPULSE + + private var _keys = [UInt8](repeating: _UP, count: Int(SDL_NUM_SCANCODES.rawValue)) + + private init() {} + + internal func newTick() + { + //_keys = _keys.map({ i in (i & 0x1) == 0x1 ? ((i &+ 1) & 0x3) : i }) + _keys = _keys.map({ $0 & ~Input._IMPULSE }) + //for i in 0.. Bool + { + //SDL_GetKeyboardState(nil).withMemoryRebound(to: UInt8.self, capacity: Int(SDL_NUM_SCANCODES.rawValue)) + //{ state in + // state[Int(key.sdlScancode.rawValue)] != 0 + //} + _keys[Int(key.sdlScancode.rawValue)] & Input._DOWN == Input._DOWN + } + + public func keyPressed(_ key: Key) -> Bool + { + _keys[Int(key.sdlScancode.rawValue)] == Input._PRESS + } + + public func keyReleased(_ key: Key) -> Bool + { + _keys[Int(key.sdlKeycode.rawValue)] == Input._RELEASE + } +} + +public enum Key +{ + case a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z + case right, left, down, up +} + +extension Key +{ + internal var sdlKeycode: SDL_KeyCode + { + switch self + { + case .a: SDLK_a + case .b: SDLK_a + case .c: SDLK_a + case .d: SDLK_a + case .e: SDLK_a + case .f: SDLK_a + case .g: SDLK_a + case .h: SDLK_a + case .i: SDLK_a + case .j: SDLK_a + case .k: SDLK_a + case .l: SDLK_a + case .m: SDLK_a + case .n: SDLK_a + case .o: SDLK_a + case .p: SDLK_a + case .q: SDLK_a + case .r: SDLK_a + case .s: SDLK_a + case .t: SDLK_a + case .u: SDLK_a + case .v: SDLK_a + case .w: SDLK_a + case .x: SDLK_a + case .y: SDLK_a + case .z: SDLK_a + case .left: SDLK_LEFT + case .right: SDLK_RIGHT + case .up: SDLK_UP + case .down: SDLK_DOWN + } + } + + internal var sdlScancode: SDL_Scancode + { + switch self + { + case .a: SDL_SCANCODE_A + case .b: SDL_SCANCODE_B + case .c: SDL_SCANCODE_C + case .d: SDL_SCANCODE_D + case .e: SDL_SCANCODE_E + case .f: SDL_SCANCODE_F + case .g: SDL_SCANCODE_G + case .h: SDL_SCANCODE_H + case .i: SDL_SCANCODE_I + case .j: SDL_SCANCODE_J + case .k: SDL_SCANCODE_K + case .l: SDL_SCANCODE_L + case .m: SDL_SCANCODE_M + case .n: SDL_SCANCODE_N + case .o: SDL_SCANCODE_O + case .p: SDL_SCANCODE_P + case .q: SDL_SCANCODE_Q + case .r: SDL_SCANCODE_R + case .s: SDL_SCANCODE_S + case .t: SDL_SCANCODE_T + case .u: SDL_SCANCODE_U + case .v: SDL_SCANCODE_V + case .w: SDL_SCANCODE_W + case .x: SDL_SCANCODE_X + case .y: SDL_SCANCODE_Y + case .z: SDL_SCANCODE_Z + case .left: SDL_SCANCODE_LEFT + case .right: SDL_SCANCODE_RIGHT + case .up: SDL_SCANCODE_UP + case .down: SDL_SCANCODE_DOWN + } + } +} + +extension SDL_KeyCode +{ + internal init(scancode: SDL_Scancode) + { + self.init(scancode.rawValue | UInt32(SDLK_SCANCODE_MASK)) + } +} diff --git a/Sources/JolkEngine/Loaders/G3DbLoader.swift b/Sources/JolkEngine/Loaders/G3DbLoader.swift new file mode 100644 index 0000000..47140ee --- /dev/null +++ b/Sources/JolkEngine/Loaders/G3DbLoader.swift @@ -0,0 +1,249 @@ +import Foundation +import OrderedCollections + + +class G3DbLoader: LoaderProtocol +{ + typealias T = Mesh + + func load(url: URL) -> T? + { + guard var reader = try? G3DbReader(url) + else { return Optional.none } + return try? reader.read() + } +} + + +fileprivate struct G3DbReader +{ + private let version: [Int16] = [0, 1] + private var reader: UBJsonReader + + init(_ url: URL) throws + { + guard let file = try? FileHandle(forReadingFrom: url) + else { throw G3DbReaderError.fileNotFound } + self.reader = UBJsonReader(file: file) + } + + mutating func read() throws -> Mesh + { + let model = try readModel() + + let mesh = model.meshes[0] + + var vertices = [Mesh.Vertex]() + var indices = [UInt16]() + var subMeshes = OrderedDictionary() + + let attributeSize = + { (attrib: G3DAttribute) in + switch attrib + { + case .position, .normal, .colour, .tangent, .bitangent: + return 3 + case .texCoord(_), .blendWeight(_): + return 2 + case .colourPacked: + return 1 + } + } + + var stride = 0 + for a in mesh.attributes + { + stride += attributeSize(a) + } + let numVerts = mesh.vertices.count / stride + vertices.reserveCapacity(numVerts) + for i in 0.. G3DModel + { + let root = try reader.read() + let version = try root.getArray(key: "version") + guard try version.count == 2 && (try version.map({ try $0.int16 }) == self.version) + else { throw G3DbReaderError.versionMismatch } + + var model = G3DModel() + model.id = try root.getString(key: "id", default: "") + try readMeshes(root, &model) + try readMaterials(root, &model) + return model + } + + mutating func readMeshes(_ root: UBJsonToken, _ model: inout G3DModel) throws + { + let meshes = try root.getArray(key: "meshes") + for obj in meshes + { + var mesh = G3DModelMesh() + + mesh.id = try obj.getString(key: "id", default: "") + for attrib in try obj.getArray(key: "attributes") + { + mesh.attributes.append(try .resolve(try attrib.string)) + } + mesh.vertices = try obj.getFloatArray(key: "vertices") + for partObj in try obj.getArray(key: "parts") + { + let id = try partObj.getString(key: "id") + if mesh.parts.keys.contains(id) { throw G3DbReaderError.duplicateIDs } + + var part = G3dModelMeshPart() + part.mode = try .resolve(try partObj.getString(key: "type")) + part.indices = try partObj.getInt16Array(key: "indices") + + mesh.parts[id] = part + } + model.meshes.append(mesh) + } + } + + mutating func readMaterials(_ root: UBJsonToken, _ model: inout G3DModel) throws + { + + } +} + +fileprivate struct G3DModel +{ + var id: String = .init() + var meshes: [G3DModelMesh] = .init() +} + +fileprivate struct G3DModelMesh +{ + var id: String = .init() + var attributes: [G3DAttribute] = .init() + var vertices: [Float] = .init() + var parts: Dictionary = .init() +} + +fileprivate struct G3dModelMeshPart +{ + var mode: G3DPrimativeType = .invalid + var indices: [Int16] = .init() +} + +fileprivate enum G3DAttribute: Equatable +{ + case position + case normal + case tangent + case bitangent + case colour + case colourPacked + case texCoord(id: UInt8) + case blendWeight(id: UInt8) + + static let order = [ .position, .colour, .colourPacked, .normal, + texCoord(id: 0), .blendWeight(id: 0), .tangent, .bitangent ] +} + +extension G3DAttribute +{ + static func resolve(_ attrib: String) throws -> Self + { + let getAttributeId = + { (attrib: String, offset: Int) throws -> UInt8 in + let idIdx = attrib.index(attrib.startIndex, offsetBy: offset) + let idStr = attrib.suffix(from: idIdx) + guard let id = UInt8(idStr) + else { throw G3DbReaderError.badAttribute } + return id + } + + return switch attrib + { + case "POSITION": .position + case "NORMAL": .normal + case "COLOR": .colour + case "COLORPACKED": .colourPacked + case "TANGENT": .tangent + case "BINORMAL": .bitangent + default: + if attrib.starts(with: "TEXCOORD") + { + .texCoord(id: try getAttributeId(attrib, 8)) + } + else if attrib.starts(with: "BLENDWEIGHT") + { + .blendWeight(id: try getAttributeId(attrib, 11)) + } + else { throw G3DbReaderError.badAttribute } + } + } +} + +fileprivate enum G3DPrimativeType +{ + case invalid + case triangles + case lines + case points + case triangleStrip + case lineStrip +} + +extension G3DPrimativeType +{ + static func resolve(_ key: String) throws -> Self + { + switch key + { + case "TRIANGLES": .triangles + case "LINES": .lines + case "POINTS": .points + case "TRIANGLE_STRIP": .triangleStrip + case "LINE_STRIP": .lineStrip + default: throw G3DbReaderError.invalidFormat + } + } +} + +fileprivate enum G3DbReaderError: Error +{ + case fileNotFound + case versionMismatch + case unsupportedFormat + case invalidFormat + case badAttribute + case duplicateIDs +} diff --git a/Sources/JolkEngine/Loaders/NSImageLoader.swift b/Sources/JolkEngine/Loaders/NSImageLoader.swift new file mode 100644 index 0000000..d55ac69 --- /dev/null +++ b/Sources/JolkEngine/Loaders/NSImageLoader.swift @@ -0,0 +1,50 @@ +import AppKit + + +enum ImageLoaderError: Error +{ + case loadFailed(_ message: String) +} + +struct NSImageLoader: LoaderProtocol +{ + typealias T = Image + + func load(url: URL) -> T? + { + guard let image = try? NSImageLoader.loadImage(url: url) else { return nil } + return image + } + + static func loadImage(url: URL) throws -> Image + { + try autoreleasepool + { + // Open as a Core Graphics image + guard let nsImg = NSImage(contentsOf: url), + let image = nsImg.cgImage(forProposedRect: nil, context: nil, hints: nil) + else { throw ImageLoaderError.loadFailed("Failed to open image \"\(url.absoluteString)\"") } + + // Convert to 8-bit ARGB (SRGB) w/ premultiplied alpha + let alphaInfo = image.alphaInfo == .none ? CGImageAlphaInfo.noneSkipLast : CGImageAlphaInfo.premultipliedLast + guard let colourspace = CGColorSpace(name: CGColorSpace.sRGB), + let context = CGContext(data: nil, + width: image.width, + height: image.height, + bitsPerComponent: 8, + bytesPerRow: image.width * 4, + space: colourspace, + bitmapInfo: alphaInfo.rawValue | CGBitmapInfo.byteOrder32Big.rawValue) + else { throw ImageLoaderError.loadFailed("Coudn't create graphics context") } + let flipVertical = CGAffineTransform(a: 1, b: 0, c: 0, d: -1, tx: 0, ty: CGFloat(image.height)) + context.concatenate(flipVertical) + context.draw(image, in: CGRect(x: 0, y: 0, width: image.width, height: image.height)) + + guard let data = context.data else { throw ImageLoaderError.loadFailed("what") } + return Image( + pixels: Data(bytes: data, count: 4 * image.width * image.height), + width: image.width, + height: image.height) + } + } +} diff --git a/Sources/JolkEngine/Loaders/ObjLoader.swift b/Sources/JolkEngine/Loaders/ObjLoader.swift new file mode 100644 index 0000000..05ff943 --- /dev/null +++ b/Sources/JolkEngine/Loaders/ObjLoader.swift @@ -0,0 +1,92 @@ +import Foundation +import OrderedCollections + + +/* +extension ObjMaterial +{ + func convert() -> Material + { + var m = Material() + m.diffuse = self.diffuse.setAlpha(self.alpha) + if ![ .colour, .lambert, .shadowOnly ].contains(self.model) + { + m.specular = self.specular + m.specularExp = self.specularExp + } + return m + } +} +*/ + +public struct ObjLoader: LoaderProtocol +{ + public typealias T = Mesh + + public init() {} + + public func load(url: URL) -> T? + { + try? Self.read(url: url) + } + + private static func read(url: URL) throws -> Mesh + { + return try read(model: try ObjReader.read(url: url)) + } + + public static func read(model: ObjModel) throws -> Mesh + { + var subMeshes: OrderedDictionary = .init() + var vertices = [Mesh.Vertex]() + var indices = [UInt16]() + + let readIndex = + { (v: ObjModel.Index) -> UInt16 in + let vertex = Mesh.Vertex( + position: model.positions[v.p], + normal: model.normals[v.n], + texCoord: model.texCoords[v.t]) + if let index = vertices.firstIndex(of: vertex) + { + indices.append(UInt16(index)) + return UInt16(index) + } + else + { + let index = UInt16(vertices.count) + indices.append(index) + vertices.append(vertex) + return index + } + } + + for mesh in model.objects + { + let start = indices.count + for face: ObjModel.Face in mesh.value.faces + { + switch face + { + case .triangle(let v1, let v2, let v3): + for v in [ v1, v2, v3 ] { _ = readIndex(v) } + case .quad(let v1, let v2, let v3, let v4): + let n1 = readIndex(v1) + _ = readIndex(v2) + indices.append(readIndex(v3)) + _ = readIndex(v4) + indices.append(n1) + case .ngon(_): fallthrough + default: break + } + } + let length = indices.count - start + if length > 0 + { + subMeshes[mesh.key] = .init(start: start, length: length) + } + } + + return Mesh(vertices: vertices, indices: indices, subMeshes: subMeshes) + } +} diff --git a/Sources/JolkEngine/Loaders/ObjReader.swift b/Sources/JolkEngine/Loaders/ObjReader.swift new file mode 100644 index 0000000..5f208d2 --- /dev/null +++ b/Sources/JolkEngine/Loaders/ObjReader.swift @@ -0,0 +1,372 @@ +import Foundation + + +public struct ObjReader +{ + public static func read(url: URL) throws -> ObjModel + { + var file = try ObjDocumentReader(filePath: url) + + var model = ObjModel() + var materials = Dictionary() + var name: String? = nil + var object = ObjModel.Object() + + file.string(tag: "mtllib") { s in + let mats = try ObjMtlLoader.read(url: url.deletingLastPathComponent().appendingPathComponent(s[0])) + materials.merge(mats, uniquingKeysWith: { (_, new) in new } ) + } + file.string(tag: "o", count: 1) { s in + if !object.faces.isEmpty + { + model.objects[name!] = object + object = .init() + } + name = String(s[0]) + } + file.float(tag: "v", count: 3) { v in model.positions.append(Vec3f(v[0], v[1], v[2])) } + file.float(tag: "vn", count: 3) { v in model.normals.append(Vec3f(v[0], v[1], v[2])) } + file.float(tag: "vt", count: 2) { v in model.texCoords.append(Vec2f(v[0], v[1])) } + file.raw(tag: "f") { raw in + let readIndex = + { (raw: Substring) in + let face = raw.split(separator: "/") + guard face.count == 3, + let posIdx = Int(face[0]), let coordIdx = Int(face[1]), let normIdx = Int(face[2]) + else { throw ObjLoaderError.badTagParameters } + return ObjModel.Index(p: posIdx - 1, n: normIdx - 1, t: coordIdx - 1) + } + + if raw.count == 3 + { + for raw in raw { _ = try readIndex(raw) } + object.faces.append(.triangle( + v1: try readIndex(raw[raw.startIndex]), + v2: try readIndex(raw[raw.startIndex + 1]), + v3: try readIndex(raw[raw.startIndex + 2]))) + } + else if raw.count == 4 + { + object.faces.append(.quad( + v1: try readIndex(raw[raw.startIndex]), + v2: try readIndex(raw[raw.startIndex + 1]), + v3: try readIndex(raw[raw.startIndex + 2]), + v4: try readIndex(raw[raw.startIndex + 3]))) + } + else if raw.count >= 5 + { + object.faces.append(.ngon(try raw.map { try readIndex($0) })) + } + else { throw ObjLoaderError.badTagParameters } + } + file.int(tag: "l") { i in object.faces.append(.line(p1: i[0], p2: i[1])) } + try file.read() + + if !object.faces.isEmpty + { + model.objects[name!] = object + } + return model + } +} + +fileprivate struct ObjMtlLoader +{ + static func read(url: URL) throws -> Dictionary + { + var file = try ObjDocumentReader(filePath: url) + + var materials = Dictionary() + var name: String = "" + var mat: ObjMaterial? = nil + + file.string(tag: "newmtl", count: 1) + { s in + if mat != nil + { + materials[name] = mat! + } + mat = .init() + name = String(s[0]) + } + + file.preHandle { s in if s != "newmtl" && mat == nil { throw ObjLoaderError.unexpectedTag } } + file.float(tag: "Ka", count: 3) { f in mat!.ambient = Colour(r: f[0], g: f[1], b: f[2]) } // "Ambient colour" + file.float(tag: "Kd", count: 3) { f in mat!.diffuse = Colour(r: f[0], g: f[1], b: f[2]) } // "Diffuse colour" + file.float(tag: "Ks", count: 3) { f in mat!.specular = Colour(r: f[0], g: f[1], b: f[2]) } // "Specular colour" + file.float(tag: "Ns", count: 1) { f in mat!.specularExp = f[0] } // "Specular exponent/shininess" + file.float(tag: "Ni", count: 1) { f in mat!.refraction = f[0] } // "Optical density/refraction index" + file.float(tag: "d", count: 1) { f in mat!.alpha = f[0] } // "Dissolve" 0.0 = transparent, 1.0 = opaque + file.float(tag: "Tr", count: 1) { f in mat!.alpha = 1.0 - f[0] } // "Transparent" 0.0 = opaque, 1.0 = transparent + file.int(tag: "illum", count: 1) { i in mat!.model = try .resolve(i[0]) } // "Illumination model" + file.textureMap(tag: "map_Ka") { s in } // "Ambient colourmap" + file.textureMap(tag: "map_Kd") { t in mat!.diffuseMap = t } // "Albedo map" + file.textureMap(tag: "map_Ks") { t in mat!.specularMap = t } // "Specular colourmap" + file.textureMap(tag: "map_Ns") { t in mat!.specularExpMap = t } // "Specular exponent map" + file.textureMap(tag: "map_d") { t in mat!.dissolveMap = t } // "Dissolve map" + //file.string(tag: "map_Tr") { t in } // "Translucency map" + for t in ["map_Bump", "bump"] { file.textureMap(tag: t) { t in mat!.bumpMap = t } } // "Bump map" + file.textureMap(tag: "disp") { t in mat!.displacementMap = t } // "Displacement map" + file.textureMap(tag: "decal") { t in mat!.decalMap = t } // ? + // PBR extensions + file.float(tag: "Pr", count: 1) { f in mat!.roughness = f[0] } // "Roughness" + file.float(tag: "Pm", count: 1) { f in mat!.metallic = f[0] } // "Metallic" + file.float(tag: "Ps", count: 1) { f in mat!.sheen = f[0] } // "Sheen" + file.float(tag: "Pc", count: 1) { f in } // "Clearcoat thickness" + file.float(tag: "Pcr", count: 1) { f in } // "Clearcoat roughness" + file.float(tag: "Ke", count: 3) { f in } // "Emmission colour" + file.float(tag: "aniso", count: 1) { f in } // "Anisotropy" + file.float(tag: "anisor", count: 1) { f in } // "Anisotropy rotation" + file.textureMap(tag: "map_Pr") { t in mat!.roughnessMap = t } // "Roughness texturemap" + file.textureMap(tag: "map_Pm") { t in mat!.metallicMap = t } // "Metallic texturemap" + file.textureMap(tag: "map_Ps") { t in mat!.sheenMap = t } // "Sheen texturemap" + file.textureMap(tag: "map_Ke") { t in mat!.emmisionMap = t } // "Emmision texturemap" + file.textureMap(tag: "norm") { t in mat!.normalMap = t } // "Normal map" + + try file.read() + + if let material = mat + { + materials[name] = material + } + return materials + } +} + +fileprivate extension ObjMaterial.IlluminationModel +{ + static func resolve(_ id: Int) throws -> Self + { + switch id + { + case 0: .colour + case 1: .lambert + case 2: .blinnPhong + case 3: .reflectionRaytrace + case 4: .transparentGlassReflectionRaytrace + case 5: .reflectionRaytraceFresnel + case 6: .transparentRefractionReflectionRaytrace + case 7: .transparentRefractionReflectionRaytraceFresnel + case 8: .reflection + case 9: .transparentGlassReflection + case 10: .shadowOnly + default: throw ObjLoaderError.badTagParameters + } + } +} + +fileprivate extension ObjMaterial.TextureMap +{ + static func parse(_ argstr: Substring) throws -> Self + { + var map = Self() + var args = [Substring]() + + let parseFlag = + { (flag: Flags) in + let arg = args[0].lowercased() + if arg == "on" { map.flags.insert(flag) } + else if arg == "off" { map.flags.remove(flag) } + else { throw ObjLoaderError.badTagParameters } + } + let parseInt = + { (arg: Int) in + guard let result = Int(args[arg]) else { throw ObjLoaderError.badTagParameters } + return result + } + let parseFloat = + { (arg: Int) in + guard let result = Float(args[arg]) else { throw ObjLoaderError.badTagParameters } + return result + } + let parseVector = { Vec3f(try parseFloat(0), try parseFloat(1), try parseFloat(2)) } + + typealias Option = () throws -> Void + let options: Dictionary = + [ + "blendu": (1, { try parseFlag(.blendHoriz) }), + "blendv": (1, { try parseFlag(.blendVert) }), + "bm": (1, { map.blendMul = try parseFloat(0) }), + "cc": (1, { try parseFlag(.colourCorrection) }), + "clamp": (1, { try parseFlag(.clamp) }), + "imfchan": (1, { map.imfChan = try .resolve(args[0]) }), + "mm": (2, { map.mmBaseGain = (try parseFloat(0), try parseFloat(1)) }), + "o": (3, { map.offset = try parseVector() }), + "s": (3, { map.scale = try parseVector() }), + "t": (3, { map.turbulence = try parseVector() }), + "texres": (1, { map.textureResolution = try parseInt(0) }) + ] + + var expectArgs = 0, option: Option? = nil + var index = argstr.startIndex + repeat + { + if expectArgs > 0, let callback = option + { + let start = index + index = argstr[start...].firstIndex(where: \.isWhitespace) ?? argstr.endIndex + args.append(argstr[start..= argstr.endIndex || expectArgs > 0 { throw ObjLoaderError.badTagParameters } + + map.path = String(argstr[index...]) + return map + } +} + +fileprivate extension ObjMaterial.TextureMap.ImfChan +{ + static func resolve(_ token: Substring) throws -> Self + { + switch token + { + case "r": .r + case "g": .g + case "b": .b + case "m": .m + case "l": .l + case "z": .z + default: throw ObjLoaderError.badTagParameters + } + } +} + +fileprivate struct ObjDocumentReader +{ + private enum Handler + { + case string(closure: ([String]) throws -> Void, count: Int? = nil) + case float(closure: ([Float]) throws -> Void, count: Int? = nil) + case int(closure: ([Int]) throws -> Void, count: Int? = nil) + case textureMap(closure: (ObjMaterial.TextureMap) throws -> Void) + case raw(closure: ([Substring]) throws -> Void) + } + + private var file: TextFile + typealias Callback = (Substring) throws -> Void + private var _prehandler: Callback? = nil + private var handlers = Dictionary() + + init(filePath: URL) throws + { + file = try TextFile(fileURL: filePath) + } + + mutating func string(tag: String, count: Int? = nil, closure: @escaping ([String]) throws -> Void) + { + handlers[tag] = .string(closure: closure, count: count) + } + + mutating func float(tag: String, count: Int? = nil, closure: @escaping ([Float]) throws -> Void) + { + handlers[tag] = .float(closure: closure, count: count) + } + + mutating func int(tag: String, count: Int? = nil, closure: @escaping ([Int]) throws -> Void) + { + handlers[tag] = .int(closure: closure, count: count) + } + + mutating func textureMap(tag: String, closure: @escaping (ObjMaterial.TextureMap) throws -> Void) + { + handlers[tag] = .textureMap(closure: closure) + } + + mutating func raw(tag: String, closure: @escaping ([Substring]) throws -> Void) + { + handlers[tag] = .raw(closure: closure) + } + + mutating func preHandle(closure: @escaping Callback) { _prehandler = closure } + + private func handle(_ handler: Handler, command: Substring, arg: Substring) throws + { + switch handler + { + case .string(let closure, let count): + let args = arg.split(separator: " ") + if count != nil && args.count != count! { throw ObjLoaderError.badTagParameters } + try closure(args.map({ String($0) })) + case .float(let closure, let count): + let args = arg.split(separator: " ") + if count != nil && args.count != count! { throw ObjLoaderError.badTagParameters } + try closure(args.map( + { + if let value = Float($0) { return value } + else { throw ObjLoaderError.badTagParameters } + })) + case .int(let closure, let count): + let args = arg.split(separator: " ") + if count != nil && args.count != count! { throw ObjLoaderError.badTagParameters } + try closure(args.map( + { + if let value = Int($0) { return value } + else { throw ObjLoaderError.badTagParameters } + })) + case .textureMap(let closure): + try closure(ObjMaterial.TextureMap.parse(arg)) + case .raw(let closure): + try closure(arg.split(separator: " ")) + } + } + + private func parseLine(_ line: String) throws -> (Substring, Substring)? + { + // Trim comment if present + var trimmed = if let index = line.firstIndex(of: "#") { line[.. Self { a * (1 - x) + b * x } + + @inline(__always) static func deg(fromRad: Self) -> Self { fromRad * (180 / Self.pi) } + @inline(__always) static func rad(fromDeg: Self) -> Self { fromDeg * (Self.pi / 180) } + + fileprivate func axisDeadzone(_ min: Self, _ max: Self) -> Self + { + let xabs = abs(self) + return if xabs <= min { 0 } + else if xabs >= max { Self(signOf: self, magnitudeOf: 1) } + else { Self(signOf: self, magnitudeOf: xabs - min) / (max - min) } + } +} + +public extension SIMD2 where Scalar: FloatingPoint +{ + @inline(__always) var len2: Scalar { x * x + y * y } + //@inline(__always) var len2: Scalar { simd_dot(self, self) } + @inline(__always) var len: Scalar { len2.squareRoot() } + @inline(__always) var normalised: Self { self / len } + + @inline(__always) func dot(_ b: Self) -> Scalar { x * b.x + y * b.y } + @inline(__always) func reflect(_ n: Self) -> Self { self - (n * 2 * self.dot(n)) } + @inline(__always) func project(_ n: Self) -> Self { n * self.dot(n) } + + @inline(__always) func cross(_ b: Self) -> Scalar { x * b.y - y * b.x } + + @inline(__always) func lerp(_ b: Self, _ x: Scalar) -> Self + { + let invX = 1 - x + return Self(self.x * invX + b.x * x, self.y * invX + b.y * x) + } + + func cardinalDeadzone(min: Scalar, max: Scalar) -> Self + { + Self(self.x.axisDeadzone(min, max), self.y.axisDeadzone(min, max)) + } + + func radialDeadzone(min: Scalar, max: Scalar) -> Self + { + let magnitude = self.len + if magnitude == .zero || magnitude < min { return Self.zero } + if magnitude > max { return self / magnitude } + let rescale = (magnitude - min) / (max - min) + return self / magnitude * rescale + } +} + +public extension SIMD3 where Scalar: FloatingPoint +{ + @inline(__always) static var X: Self { Self(1, 0, 0) } + @inline(__always) static var Y: Self { Self(0, 1, 0) } + @inline(__always) static var Z: Self { Self(0, 0, 1) } + + @inline(__always) static var up: Self { Y } + @inline(__always) static var down: Self { -Y } + @inline(__always) static var left: Self { -X } + @inline(__always) static var right: Self { X } + @inline(__always) static var forward: Self { Z } + @inline(__always) static var back: Self { -Z } + + @inline(__always) var len2: Scalar { x * x + y * y + z * z } + @inline(__always) var len: Scalar { len2.squareRoot() } + @inline(__always) var normalised: Self { self / len } + + @inline(__always) mutating func normalise() { self /= len } + + @inline(__always) func lerp(_ b: Self, _ x: Scalar) -> Self + { + let invX = 1 - x + return Self(self.x * invX + b.x * x, self.y * invX + b.y * x, self.z * invX + b.z * x) + } + + @inline(__always) func dot(_ b: Self) -> Scalar { x * b.x + y * b.y + z * b.z } + @inline(__always) func cross(_ b: Self) -> Self { Self(y * b.z - z * b.y, z * b.x - x * b.z, x * b.y - y * b.x) } + + @inline(__always) func project(_ n: Self) -> Self { n * self.dot(n) } +} + +public extension SIMD4 where Scalar: FloatingPoint +{ + @inline(__always) static var X: Self { Self(1, 0, 0, 0) } + @inline(__always) static var Y: Self { Self(0, 1, 0, 0) } + @inline(__always) static var Z: Self { Self(0, 0, 1, 0) } + @inline(__always) static var W: Self { Self(0, 0, 0, 1) } +} + +public extension simd_float4x4 +{ + @inline(__always) static var identity: Self { Self(diagonal: .one) } + + @inline(__always) static func translate(_ v: Vec3f) -> Self + { + Self( + .init( 1, 0, 0, 0), + .init( 0, 1, 0 ,0), + .init( 0, 0, 1, 0), + .init(v.x, v.y, v.z, 1)) + } + + @inline(__always) static func scale(_ v: Vec3f) -> Self + { + Self( + .init(v.x, 0, 0, 0), + .init( 0, v.y, 0, 0), + .init( 0, 0, v.z, 0), + .init( 0, 0, 0, 1)) + } + + @inline(__always) static func scale(scalar v: Float) -> Self + { + Self( + .init(v, 0, 0, 0), + .init(0, v, 0, 0), + .init(0, 0, v, 0), + .init(0, 0, 0, 1)) + } + + static func rotate(axis v: Vec3f, angle theta: Float) -> Self + { + //FIXME: THIS IS FUCKED UP FOR EVERYTHING OTHER THAN X AXIS ROTATION LOL + /* + let vv = v * v + let xy = v.x * v.y, xz = v.x * v.z, yz = v.y * v.z + let ts = sin(angle), tc = cos(angle) + return Self( + .init( + vv.x + (tc * (1 - vv.x)), + (xz - (tc * xy)) + (ts * v.z), + (xz - (tc * xz)) - (ts * v.y), 0), + .init( + (xy - (tc * xy)) - (ts * v.z), + vv.y + (tc * (1 - vv.y)), + (xz - (tc * xz)) + (ts * v.x), 0), + .init( + (xz - (tc * xz)) + (ts * v.y), + (xz - (tc * xz)) - (ts * v.y), + vv.z + (tc * (1 - vv.z)), 1), + .init(0, 0, 0, 1)) + */ + let vxx = v.x * v.x, vxy = v.x * v.y, vxz = v.x * v.z + let vyy = v.y * v.y, vyz = v.y * v.z + let vzz = v.z * v.z + let ts = sin(theta), tc = cos(theta) + let ic = 1 - tc + return Self( + .init( + ic * vxx + tc, + ic * vxy - v.z * ts, + ic * vxz + v.z * ts, + 0), + .init( + ic * vxy + v.z * ts, + ic * vyy + tc, + ic * vyz - v.x * ts, + 0), + .init( + ic * vxz - v.y * ts, + ic * vyz + v.x * ts, + ic * vzz + tc, + 0), + .init(0, 0, 0, 1)) + } + + @inline(__always) static func rotate(yawPitch: Vec2f) -> Self { return rotate(yaw: yawPitch.x, pitch: yawPitch.y) } + + static func rotate(yaw ytheta: Float, pitch xtheta: Float) -> Self + { + let xc = cos(xtheta), xs = sin(xtheta) + let yc = cos(ytheta), ys = sin(ytheta) + + return Self( + .init(yc, ys * xs, -ys * xc, 0), + .init( 0, xc, xs, 0), + .init(ys, yc * -xs, yc * xc, 0), + .init( 0, 0, 0, 1)) + } + + static func rotate(yaw ytheta: Float, pitch xtheta: Float, roll ztheta: Float) -> Self + { + //FIXME: this doesn't null against control + let xc = cos(xtheta), xs = sin(xtheta) + let yc = cos(ytheta), ys = sin(ytheta) + let zc = cos(ztheta), zs = sin(ztheta) + + let ysxs = ys * xs, ycxs = yc * xs + + let result = Mat4f( + .init(yc * zc + ysxs * zs, yc * -zs + ysxs * zc, -ys * xc, 0), + .init( xc * zs, xc * zc, xs, 0), + .init(ys * zc - ycxs * zs, ys * -zs - ycxs * zc, yc * xc, 0), + .init( 0, 0, 0, 1)) + let shouldBe = .rotate(z: ztheta) * .rotate(x: xtheta) * .rotate(y: ytheta) + + let epsilon: Float = .ulpOfOne + if (result != shouldBe) + { + assert(abs(result[0][0] - shouldBe[0][0]) <= epsilon) // epsilon + assert(result[1][0] == shouldBe[1][0]) + assert(abs(result[2][0] - shouldBe[2][0]) <= epsilon) // epsilon + assert(result[3][0] == shouldBe[3][0]) + assert(abs(result[0][1] - shouldBe[0][1]) <= epsilon) // epsilon + assert(result[1][1] == shouldBe[1][1]) + assert(abs(result[2][1] - shouldBe[2][1]) <= epsilon) // epsilon + assert(result[3][1] == shouldBe[3][1]) + assert(result[0][2] == shouldBe[0][2]) + assert(result[1][2] == shouldBe[1][2]) + assert(result[2][2] == shouldBe[2][2]) + assert(result[3][2] == shouldBe[3][2]) + assert(result[0][3] == shouldBe[0][3]) + assert(result[1][3] == shouldBe[1][3]) + assert(result[2][3] == shouldBe[2][3]) + assert(result[3][3] == shouldBe[3][3]) + } + return result + } + + @inline(__always) static func rotate(x theta: Float) -> Self + { + let c = cos(theta), s = sin(theta) + return Self( + .init(1, 0, 0, 0), + .init(0, c, s, 0), + .init(0, -s, c, 0), + .init(0, 0, 0, 1)) + } + + @inline(__always) static func rotate(y theta: Float) -> Self + { + let c = cos(theta), s = sin(theta) + return Self( + .init(c, 0, -s, 0), + .init(0, 1, 0, 0), + .init(s, 0, c, 0), + .init(0, 0, 0, 1)) + } + + @inline(__always) static func rotate(z theta: Float) -> Self + { + let c = cos(theta), s = sin(theta) + return Self( + .init(c, -s, 0, 0), + .init(s, c, 0, 0), + .init(0, 0, 1, 0), + .init(0, 0, 0, 1)) + } + + static func perspective(fovY: Float, aspect: Float, zNear: Float, zFar: Float) -> Self + { + let h = 1 / tanf(fovY * 0.5) + let w = h / aspect + let invClipRange = 1 / (zFar - zNear) + let z = -(zFar + zNear) * invClipRange + let z2 = -(2 * zFar * zNear) * invClipRange + return simd_matrix( + .init(w, 0, 0, 0), + .init(0, h, 0, 0), + .init(0, 0, z, -1), + .init(0, 0, z2, 0)) + } + + static func lookAt(from: Vec3f = .zero, to: Vec3f, up: Vec3f = .up) -> Self + { + let forward = (to - from).normalised + let bitangent = forward.cross(up).normalised + let tangent = bitangent.cross(forward).normalised + let normal = -forward + return simd_matrix( + .init(bitangent.x, tangent.x, normal.x, 0.0), + .init(bitangent.y, tangent.y, normal.y, 0.0), + .init(bitangent.z, tangent.z, normal.z, 0.0), + .init( 0.0, 0.0, 0.0, 1.0)) + } +} + + +public typealias Vec2f = SIMD2 +public typealias Vec2d = SIMD2 +public typealias Vec3f = SIMD3 +public typealias Vec3d = SIMD3 +public typealias Vec4f = SIMD4 +public typealias Vec4d = SIMD4 +public typealias Mat4f = simd_float4x4 diff --git a/Sources/JolkEngine/Renderer/Environment.swift b/Sources/JolkEngine/Renderer/Environment.swift new file mode 100644 index 0000000..2d30a23 --- /dev/null +++ b/Sources/JolkEngine/Renderer/Environment.swift @@ -0,0 +1,81 @@ +public enum Fog +{ + public enum Mode + { + case distance + case depth + } + + public enum RangeType + { + case linear + case smooth + } + + public enum FactorType + { + case exp + case exp2 + } + + case none + case range(colour: Colour, mode: Mode, type: RangeType, start: Float, end: Float) + case factor(colour: Colour, mode: Mode, type: FactorType, density: Float) +} + +public enum Light +{ + case directional(colour: Colour, direction: Vec3f) + case point(colour: Colour, position: Vec3f, intensity: Float) +} + +public struct Environment +{ + public var fog: Fog = .none + public var ambient: Colour = .black + public var lights: [Light] = .init() + + public init() {} + + public init(fog: Fog, ambient: Colour, lights: [Light]) + { + self.fog = fog + self.ambient = ambient + self.lights = lights + } +} + +public extension Environment +{ + enum FogFalloff + { + case range(type: Fog.RangeType, start: Float, end: Float) + case factor(type: Fog.FactorType, density: Float) + } + + mutating func setFog(colour: Colour, mode: Fog.Mode, falloff: FogFalloff) + { + fog = switch falloff + { + case .range(let type, let start, let end): + .range(colour: colour, mode: mode, type: type, start: start, end: end) + case .factor(let type, let density): + .factor(colour: colour, mode: mode, type: type, density: density) + } + } + + mutating func addAmbientLight(colour: Colour) + { + ambient = colour + } + + mutating func addDirectionalLight(direction: Vec3f, colour: Colour) + { + lights.append(.directional(colour: colour, direction: direction)) + } + + mutating func addPointLight(position: Vec3f, colour: Colour, intensity: Float) + { + lights.append(.point(colour: colour, position: position, intensity: intensity)) + } +} diff --git a/Sources/JolkEngine/Renderer/Material.swift b/Sources/JolkEngine/Renderer/Material.swift new file mode 100644 index 0000000..b2aff31 --- /dev/null +++ b/Sources/JolkEngine/Renderer/Material.swift @@ -0,0 +1,20 @@ +public struct Material +{ + public var id: String + public var diffuse: Colour, specular: Colour + public var specularExp: Float + public var texture: RenderTexture2D + + public init(id: String = "", + diffuse: Colour = .white, + specular: Colour = .zero, + gloss: Float = 0, + texture: RenderTexture2D = .empty) + { + self.id = id + self.diffuse = diffuse + self.specular = specular + self.specularExp = gloss + self.texture = texture + } +} diff --git a/Sources/JolkEngine/Renderer/OpenGL.swift b/Sources/JolkEngine/Renderer/OpenGL.swift new file mode 100644 index 0000000..6e2eef9 --- /dev/null +++ b/Sources/JolkEngine/Renderer/OpenGL.swift @@ -0,0 +1,440 @@ +//#set OPENGL3 + +import Foundation +import SDL2 +#if OPENGL3 +import OpenGL +#else +import OpenGL.GL3 +#endif + + + +class OpenGL: Renderer +{ + private let srgb = true + + private var glCtx: SDL_GLContext? = nil + private var state = OpenGLState() + + struct Version { let major, minor: Int32 } + let glVersion: Version + + init(version: Version) + { + self.glVersion = version + } + + func create(sdlWindow: OpaquePointer) throws + { + SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, Int32(SDL_GL_CONTEXT_PROFILE_COMPATIBILITY.rawValue)) + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, glVersion.major) + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, glVersion.minor) + + SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1) + SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 0) + SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 0) + + if let context = SDL_GL_CreateContext(sdlWindow) { glCtx = context } + else { throw RendererError.sdlError(message: "SDL_GL_CreateContext: \(String(cString: SDL_GetError()))") } + + guard SDL_GL_MakeCurrent(sdlWindow, glCtx) == 0 + else { throw RendererError.sdlError(message: "SDL_GL_MakeCurrent: \(String(cString: SDL_GetError()))") } + + state.enable([.texture2D, .cullFace, .depthTest, .rescaleNormal, .colourMaterial]) + if srgb { state.enable(.frameBufferSrgb) } + state.cullFace = .back + state.clearDepth = 1 + state.depthFunc = .less + state.setHint(target: .fog, hint: .dontCare) + } + + func delete() + { + SDL_GL_DeleteContext(glCtx) + } + + func resize(width: Int32, height: Int32) + { + glViewport(0, 0, width, height) + } + + func newFrame() + { + glClear(GLbitfield(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)) + } + + private var _clearColour = Colour.black + var clearColour: Colour + { + get { _clearColour } + set(newColour) + { + + state.clearColour(srgb ? newColour.linear : newColour) + _clearColour = newColour + } + } + + func setVsync(mode: VSyncMode) throws + { + guard SDL_GL_SetSwapInterval(mode.sdlInterval) == 0 + else { throw RendererError.sdlError(message: "SDL_GL_SetSwapInterval: \(String(cString: SDL_GetError()))") } + } + + func createMesh(mesh: Mesh) throws -> RenderMesh + { + var buffers = [GLuint](repeating: 0, count: 2) + buffers.withUnsafeMutableBufferPointer + { + glGenBuffers(2, $0.baseAddress!) + } + + state.arrayBuffer = buffers[0] + state.elementArrayBuffer = buffers[1] + + glBufferData(GLenum(GL_ARRAY_BUFFER), + MemoryLayout.stride * mesh.vertices.count, + mesh.vertices, GLenum(GL_STATIC_DRAW)) + glBufferData(GLenum(GL_ELEMENT_ARRAY_BUFFER), + MemoryLayout.stride * mesh.indices.count, + mesh.indices, GLenum(GL_STATIC_DRAW)) + + state.elementArrayBuffer = OpenGLState.defaultBuffer + state.arrayBuffer = OpenGLState.defaultBuffer + + var subMeshes = [Mesh.SubMesh]() + if mesh.subMeshes.isEmpty + { + subMeshes.append(Mesh.SubMesh(start: 0, length: mesh.indices.count)) + } + else + { + for subMesh in mesh.subMeshes + { + if ["Collision", "Collision3D"].contains(subMesh.key) { continue } + subMeshes.append(Mesh.SubMesh( + start: subMesh.value.start, + length: subMesh.value.length)) + } + } + + return RenderMesh( + vbo: Int(buffers[0]), + ibo: Int(buffers[1]), + subMeshes: subMeshes) + } + + func createTexture(data: UnsafeRawPointer, width: Int, height: Int) throws -> RenderTexture2D + { + try createTexture(data: data, width: width, height: height, filter: .linear, mipMode: .off) + } + + func createTexture(data: UnsafeRawPointer, width: Int, height: Int, + filter: FilterMode, mipMode: MipMode) throws -> RenderTexture2D + { + let min: Int32 = switch mipMode + { + case .off: filter.gl + case .nearest: filter.glMip + case .linear: filter.glLinearMip + } + return RenderTexture2D(try loadTexture(data: data, + width: GLsizei(width), height: GLsizei(height), + minFilter: min, magFilter: filter.gl)) + } + + private func loadTexture( + data: UnsafeRawPointer, + width: GLsizei, height: GLsizei, + minFilter: Int32 = GL_LINEAR, magFilter: Int32 = GL_LINEAR, + wrap: Int32 = GL_REPEAT) throws -> GLuint + { + // Create & upload raw bytes as texture + var texId: GLuint = 0 + glGenTextures(1, &texId) + state.bindTexture2D(active: 0, texture: texId) + state.texture2DParameter(active: 0, param: .minFilter, int: minFilter) + state.texture2DParameter(active: 0, param: .magFilter, int: magFilter) + state.texture2DParameter(active: 0, param: .wrapS, int: wrap) + state.texture2DParameter(active: 0, param: .wrapT, int: wrap) + let format: GLint = srgb ? GL_SRGB8 : GL_RGBA + glTexImage2D(GLenum(GL_TEXTURE_2D), + 0, format, width, height, 0, GLenum(GL_RGBA), GLenum(GL_UNSIGNED_BYTE), data) + + // Generate mipmaps if needed + if [GL_NEAREST_MIPMAP_LINEAR, GL_NEAREST_MIPMAP_NEAREST, GL_LINEAR_MIPMAP_LINEAR, GL_LINEAR_MIPMAP_NEAREST] + .contains(minFilter) { glGenerateMipmap(GLenum(GL_TEXTURE_2D)) } + + state.bindTexture2D(active: 0, texture: OpenGLState.defaultTexture) + + return texId + } + + + func deleteMesh(_ mesh: RenderMesh) + { + var buffers = [GLuint](repeating: 0, count: 2) + buffers[0] = GLuint(mesh.iboHnd) + buffers[1] = GLuint(mesh.vboHnd) + + glDeleteBuffers(1, buffers) + } + + func deleteTexture(_ texture: RenderTexture2D) + { + var texId = GLuint(texture.id) + glDeleteTextures(1, &texId) + } + + + func setProjection(matrix: Mat4f) + { + state.matrixMode = .projection + loadMatrix(matrix) + } + + func setView(matrix: Mat4f) + { + state.matrixMode = .modelView + loadMatrix(matrix) + } + + + func setMaterial(_ mat: Material) + { + glColor4f(mat.diffuse.r, mat.diffuse.g, mat.diffuse.b, mat.diffuse.a) + state.bindTexture2D(active: 0, texture: mat.texture.isValid ? mat.texture.id : 0) + } + + + private func draw(subMesh: Mesh.SubMesh) + { + glDrawElements( + GLenum(GL_TRIANGLES), + GLsizei(subMesh.length), + GLenum(GL_UNSIGNED_SHORT), + .init(bitPattern: MemoryLayout.stride * subMesh.start)); + } + + private func draw(mesh: RenderMesh) + { + state.enableClient([ .vertex, .normal, .textureCoord ]) + + state.arrayBuffer = UInt32(mesh.vboHnd) + state.elementArrayBuffer = UInt32(mesh.iboHnd) + + let stride = GLsizei(MemoryLayout.stride) + glVertexPointer(3, GLenum(GL_FLOAT), stride, + UnsafeRawPointer.init(bitPattern: MemoryLayout.offset(of: \Mesh.Vertex.position)!)) + glNormalPointer(GLenum(GL_FLOAT), stride, + UnsafeRawPointer.init(bitPattern: MemoryLayout.offset(of: \Mesh.Vertex.normal)!)) + glTexCoordPointer(2, GLenum(GL_FLOAT), stride, + UnsafeRawPointer.init(bitPattern: MemoryLayout.offset(of: \Mesh.Vertex.texCoord)!)) + + for subMesh in mesh.subMeshes + { + draw(subMesh: subMesh) + } + + state.elementArrayBuffer = OpenGLState.defaultBuffer + state.arrayBuffer = OpenGLState.defaultBuffer + + state.disableClient([ .vertex, .normal, .textureCoord ]) + } + + func draw(mesh: RenderMesh, model: Mat4f, environment env: Environment) + { + if (mesh.subMeshes.isEmpty) { return } + + applyEnvironment(env) + state.matrixMode = .modelView + glPushMatrix() + mulMatrix(model) + draw(mesh: mesh) + glPopMatrix() + } + + func draw(mesh: RenderMesh, environment env: Environment) + { + if (mesh.subMeshes.isEmpty) { return } + + applyEnvironment(env) + draw(mesh: mesh) + } + + private func loadMatrix(_ matrix: Mat4f) + { + withUnsafePointer(to: matrix.columns) + { + $0.withMemoryRebound(to: GLfloat.self, capacity: 16) + { (values: UnsafePointer) in + glLoadMatrixf(values) + } + } + } + + private func mulMatrix(_ matrix: Mat4f) + { + withUnsafePointer(to: matrix.columns) + { + $0.withMemoryRebound(to: GLfloat.self, capacity: 16) + { (values: UnsafePointer) in + glMultMatrixf(values) + } + } + } + + + private func applyEnvironment(_ env: Environment) + { + let coordSource = + { (mode: Fog.Mode) -> OpenGLState.FogCoordinateSource in + switch mode + { + case .depth: .fragmentDepth + case .distance: .coordinate + } + } + + switch env.fog + { + case .none: + state.disable(.fog) + case .range(let colour, let mode, _, let start, let end): + state.fogMode = .linear + state.fogColour = srgb ? colour.linear : colour + state.fogCoodinateSource = coordSource(mode) + state.fogStart = start + state.fogEnd = end + state.enable(.fog) + break + case .factor(let colour, let mode, let type, let density): + state.fogMode = switch type + { + case .exp: .exp + case .exp2: .exp2 + } + state.fogColour = srgb ? colour.linear : colour + state.fogCoodinateSource = coordSource(mode) + state.fogDensity = density + state.enable(.fog) + break + } + + state.lightModelAmbient = env.ambient + + let lightCaps: [OpenGLState.Capability] = [ + .light0, .light1, .light2, .light3, + .light4, .light5, .light6, .light7 ] + if !env.lights.isEmpty + { + state.enable(.lighting) + for i in 0..<8 + { + if i < env.lights.count + { + switch env.lights[i] + { + case .directional(let colour, let direction): + state.lightPosition[i] = Vec4f(direction, 0) + state.lightDiffuse[i] = srgb ? colour.linear : colour + case .point(let colour, let position, let intensity): + state.lightPosition[i] = Vec4f(position, 1) + state.lightDiffuse[i] = srgb ? colour.linear : colour + state.lightConstantAttenuation[i] = 0 + state.lightLinearAttenuation[i] = intensity + state.lightQuadraticAttenuation[i] = 0 + } + state.enable(lightCaps[i]) + } + else + { + state.disable(lightCaps[i]) + } + } + } + else + { + state.disable(.lighting) + for cap in lightCaps { state.disable(cap) } + } + } + + func drawGizmos(lines: [Line]) + { + state.disable([ .texture2D, .depthTest ]) + var gizmoEnv = Environment() + gizmoEnv.fog = .none + applyEnvironment(gizmoEnv) + + glBegin(GLenum(GL_LINES)) + for line in lines + { + let colour = srgb ? line.colour.linear : line.colour + glColor4f(colour.r, colour.g, colour.b, colour.a) + glVertex3f(line.from.x, line.from.y, line.from.z) + glVertex3f(line.to.x, line.to.y, line.to.z) + } + glEnd() + state.enable([ .texture2D, .depthTest ]) + } +} + +extension VSyncMode +{ + fileprivate var sdlInterval: Int32 + { + switch self + { + case .off: 0 + case .on: 1 + case .adaptive: -1 + } + } +} + +extension FilterMode +{ + fileprivate var gl: Int32 + { + switch self + { + case .point: GL_NEAREST + case .linear: GL_LINEAR + } + } + + fileprivate var glMip: Int32 + { + switch self + { + case .point: GL_NEAREST_MIPMAP_NEAREST + case .linear: GL_LINEAR_MIPMAP_NEAREST + } + } + + fileprivate var glLinearMip: Int32 + { + switch self + { + case .point: GL_NEAREST_MIPMAP_LINEAR + case .linear: GL_LINEAR_MIPMAP_LINEAR + } + } +} + +extension WrapMode +{ + fileprivate var gl: Int32 + { + switch self + { + case .clamping: GL_CLAMP + case .clampBorder: GL_CLAMP_TO_BORDER + case .clampEdge: GL_CLAMP_TO_EDGE + case .mirrored: GL_MIRRORED_REPEAT + case .repeating: GL_REPEAT + } + } +} diff --git a/Sources/JolkEngine/Renderer/OpenGLState.swift b/Sources/JolkEngine/Renderer/OpenGLState.swift new file mode 100644 index 0000000..79106be --- /dev/null +++ b/Sources/JolkEngine/Renderer/OpenGLState.swift @@ -0,0 +1,796 @@ +import OpenGL + + +struct OpenGLState +{ + struct Capability: OptionSet + { + let rawValue: UInt32 + + static let alphaTest = Self(rawValue: 1 << 0) + static let blend = Self(rawValue: 1 << 1) + static let colourMaterial = Self(rawValue: 1 << 2) + static let colourSum = Self(rawValue: 1 << 3) + static let cullFace = Self(rawValue: 1 << 4) + static let depthTest = Self(rawValue: 1 << 5) + static let dither = Self(rawValue: 1 << 6) + static let fog = Self(rawValue: 1 << 7) + static let light0 = Self(rawValue: 1 << 8) + static let light1 = Self(rawValue: 1 << 9) + static let light2 = Self(rawValue: 1 << 10) + static let light3 = Self(rawValue: 1 << 11) + static let light4 = Self(rawValue: 1 << 12) + static let light5 = Self(rawValue: 1 << 13) + static let light6 = Self(rawValue: 1 << 14) + static let light7 = Self(rawValue: 1 << 15) + static let lighting = Self(rawValue: 1 << 16) + //static let lineSmooth = Self(rawValue: 1 << 17) + static let lineStipple = Self(rawValue: 1 << 18) + static let multiSample = Self(rawValue: 1 << 19) + //static let pointSmooth = Self(rawValue: 1 << 20) + static let scissorTest = Self(rawValue: 1 << 21) + static let stencilTest = Self(rawValue: 1 << 22) + //static let texture1D = Self(rawValue: 1 << 23) + static let texture2D = Self(rawValue: 1 << 24) + static let clipPlane0 = Self(rawValue: 1 << 25) + static let clipPlane1 = Self(rawValue: 1 << 26) + static let clipPlane2 = Self(rawValue: 1 << 27) + static let clipPlane3 = Self(rawValue: 1 << 28) + static let clipPlane4 = Self(rawValue: 1 << 29) + static let clipPlane5 = Self(rawValue: 1 << 30) + //static let colourLogicOp = Self(rawValue: 1 << 31) + + static let sampleCoverage = Self(rawValue: 1 << 17) + static let alphaToOne = Self(rawValue: 1 << 20) + static let rescaleNormal = Self(rawValue: 1 << 23) + static let frameBufferSrgb = Self(rawValue: 1 << 31) + + static let all: [Self] = [ .alphaTest, .blend, .colourMaterial, .colourSum, .cullFace, .depthTest, .dither, + .fog, .light0, .light1, .light2, .light3, .light4, .light5, .light6, .light7, .lighting, /*.lineSmooth,*/ + .lineStipple, /*.pointSmooth,*/ .multiSample, .scissorTest, .stencilTest, /*.texture1D,*/ .texture2D, + .clipPlane0, .clipPlane1, .clipPlane2, .clipPlane3, .clipPlane4, .clipPlane5, /*.colourLogicOp,*/ + + .sampleCoverage, .alphaToOne, .rescaleNormal, .frameBufferSrgb ] + static let initial: Self = [ .dither, .multiSample ] + + var glCap: GLenum + { + let capEnum = switch self + { + case .alphaTest: GL_ALPHA_TEST + case .blend: GL_BLEND + case .colourMaterial: GL_COLOR_MATERIAL + case .colourSum: GL_COLOR_SUM + case .cullFace: GL_CULL_FACE + case .depthTest: GL_DEPTH_TEST + case .dither: GL_DITHER + case .fog: GL_FOG + case .light0: GL_LIGHT0 + case .light1: GL_LIGHT1 + case .light2: GL_LIGHT2 + case .light3: GL_LIGHT3 + case .light4: GL_LIGHT4 + case .light5: GL_LIGHT5 + case .light6: GL_LIGHT6 + case .light7: GL_LIGHT7 + case .lighting: GL_LIGHTING + //case .lineSmooth: GL_LINE_SMOOTH + case .lineStipple: GL_LINE_STIPPLE + case .multiSample: GL_MULTISAMPLE + //case .pointSmooth: GL_POINT_SMOOTH + case .scissorTest: GL_SCISSOR_TEST + case .stencilTest: GL_STENCIL_TEST + //case .texture1D: GL_TEXTURE_1D + case .texture2D: GL_TEXTURE_2D + case .clipPlane0: GL_CLIP_PLANE0 + case .clipPlane1: GL_CLIP_PLANE1 + case .clipPlane2: GL_CLIP_PLANE2 + case .clipPlane3: GL_CLIP_PLANE3 + case .clipPlane4: GL_CLIP_PLANE4 + case .clipPlane5: GL_CLIP_PLANE5 + //case .colourLogicOp: GL_COLOR_LOGIC_OP + case .sampleCoverage: GL_SAMPLE_COVERAGE + case .alphaToOne: GL_SAMPLE_ALPHA_TO_ONE + case .rescaleNormal: GL_RESCALE_NORMAL + case .frameBufferSrgb: GL_FRAMEBUFFER_SRGB + default: fatalError() + } + return GLenum(capEnum) + } + } + + private var _capabilities: Capability = .initial + + private mutating func toggle(_ cap: Capability, _ en: Bool) + { + if en + { + if !_capabilities.contains(cap) + { + glEnable(cap.glCap) + _capabilities.insert(cap) + } + } + else + { + if _capabilities.contains(cap) + { + glDisable(cap.glCap) + _capabilities.remove(cap) + } + } + } + + mutating func enable(_ caps: Capability) + { + if Capability.all.contains(caps) + { + toggle(caps, true) + } + else + { + for i in Capability.all + { + if i.intersection(caps) == i { toggle(i, true) } + } + } + } + + mutating func disable(_ caps: Capability) + { + if Capability.all.contains(caps) + { + toggle(caps, false) + } + else + { + for i in Capability.all + { + if i.intersection(caps) == i { toggle(i, false) } + } + } + } + + + struct ClientState: OptionSet + { + let rawValue: UInt32 + static let colour = Self(rawValue: 1 << 0) + static let edgeFlag = Self(rawValue: 1 << 1) + static let fogCoord = Self(rawValue: 1 << 2) + static let index = Self(rawValue: 1 << 3) + static let normal = Self(rawValue: 1 << 4) + static let secondaryColour = Self(rawValue: 1 << 5) + static let textureCoord = Self(rawValue: 1 << 6) + static let vertex = Self(rawValue: 1 << 7) + + static let all: [Self] = [ .colour, .edgeFlag, .fogCoord, .index, .normal, .secondaryColour, .textureCoord, .vertex ] + static let initial: Self = [] + + var glCap: GLenum + { + let capEnum = switch self + { + case .colour: GL_COLOR_ARRAY + case .edgeFlag: GL_EDGE_FLAG_ARRAY + case .fogCoord: GL_FOG_COORD_ARRAY + case .index: GL_INDEX_ARRAY + case .normal: GL_NORMAL_ARRAY + case .secondaryColour: GL_SECONDARY_COLOR_ARRAY + case .textureCoord: GL_TEXTURE_COORD_ARRAY + case .vertex: GL_VERTEX_ARRAY + default: fatalError() + } + return GLenum(capEnum) + } + } + + private var _clientState: ClientState = .initial + + private mutating func toggleClientState(_ cap: ClientState, _ en: Bool) + { + if en + { + if !_clientState.contains(cap) + { + glEnableClientState(cap.glCap) + _clientState.insert(cap) + } + } + else + { + if _clientState.contains(cap) + { + glDisableClientState(cap.glCap) + _clientState.remove(cap) + } + } + } + + mutating func enableClient(_ caps: ClientState) + { + if ClientState.all.contains(caps) + { + toggleClientState(caps, true) + } + else + { + for i in ClientState.all + { + if i.intersection(caps) == i { toggleClientState(i, true) } + } + } + } + + mutating func disableClient(_ caps: ClientState) + { + if ClientState.all.contains(caps) + { + toggleClientState(caps, false) + } + else + { + for i in ClientState.all + { + if i.intersection(caps) == i { toggleClientState(i, false) } + } + } + } + + private var _activeTexture2D = 0 + + private mutating func setActiveTexture2D(_ active: Int) + { + if active != _activeTexture2D + { + let slots = [ GL_TEXTURE0, GL_TEXTURE1, GL_TEXTURE2, GL_TEXTURE3, GL_TEXTURE4, GL_TEXTURE5, GL_TEXTURE6, + GL_TEXTURE7, GL_TEXTURE8, GL_TEXTURE9, GL_TEXTURE10, GL_TEXTURE11, GL_TEXTURE12, GL_TEXTURE13, + GL_TEXTURE14, GL_TEXTURE15, GL_TEXTURE16, GL_TEXTURE17, GL_TEXTURE18, GL_TEXTURE19, GL_TEXTURE20, + GL_TEXTURE21, GL_TEXTURE22, GL_TEXTURE23, GL_TEXTURE24, GL_TEXTURE25, GL_TEXTURE26, GL_TEXTURE27, + GL_TEXTURE28, GL_TEXTURE29, GL_TEXTURE30, GL_TEXTURE31 ] + + glActiveTexture(GLenum(slots[active])) + _activeTexture2D = active + } + } + + static let defaultTexture: UInt32 = 0 + private var _texture2D: GLuint = GLuint(defaultTexture) + + mutating func bindTexture2D(active: Int, texture: UInt32) + { + if GLuint(texture) != _texture2D + { + setActiveTexture2D(active) + glBindTexture(GLenum(GL_TEXTURE_2D), GLuint(texture)) + _texture2D = GLuint(texture) + } + } + + enum TexureParameter { case magFilter, minFilter, wrapS, wrapT } + + mutating func texture2DParameter(active: Int, param: TexureParameter, int value: Int32) + { + setActiveTexture2D(active) + let pname = switch param + { + case .magFilter: GL_TEXTURE_MAG_FILTER + case .minFilter: GL_TEXTURE_MIN_FILTER + case .wrapS: GL_TEXTURE_WRAP_S + case .wrapT: GL_TEXTURE_WRAP_T + } + glTexParameteri(GLenum(GL_TEXTURE_2D), GLenum(pname), GLint(value)) + } + + private var _clearDepth: GLclampd = 1 + + var clearDepth: Double + { + get { Double(_clearDepth) } + set(newDepth) + { + if GLclampd(newDepth) != _clearDepth + { + glClearDepth(newDepth) + _clearDepth = GLclampd(newDepth) + } + } + } + + private var _clearColour: Colour = .zero + + mutating func clearColour(_ newColour: Colour) + { + if newColour != _clearColour + { + glClearColor(newColour.r, newColour.g, newColour.b, newColour.a) + _clearColour = newColour + } + } + + enum CullFace { case front, back, frontAndBack } + private var _cullFace: CullFace = .back + + var cullFace: CullFace + { + get { _cullFace } + set(newMode) + { + if newMode != _cullFace + { + let modeEnum = switch newMode + { + case .front: GL_FRONT + case .back: GL_BACK + case .frontAndBack: GL_FRONT_AND_BACK + } + glCullFace(GLenum(modeEnum)) + _cullFace = newMode + } + } + } + + enum DepthFunc { case never, less, equal, lessOrEqual, greater, notEqual, greaterOrEqual, always } + private var _depthFunc: DepthFunc = .less + + var depthFunc: DepthFunc + { + get { _depthFunc } + set(newFunc) + { + if newFunc != _depthFunc + { + let funcEnum = switch newFunc + { + case .never: GL_NEVER + case .less: GL_LESS + case .equal: GL_EQUAL + case .lessOrEqual: GL_LEQUAL + case .greater: GL_GREATER + case .notEqual: GL_NOTEQUAL + case .greaterOrEqual: GL_GEQUAL + case .always: GL_ALWAYS + } + glDepthFunc(GLenum(funcEnum)) + _depthFunc = newFunc + } + } + } + + enum FogMode { case linear, exp, exp2 } + private var _fogMode: FogMode = .exp + + var fogMode: FogMode + { + get { _fogMode } + set(newMode) + { + if newMode != _fogMode + { + let modeEnum = switch newMode + { + case .linear: GL_LINEAR + case .exp: GL_EXP + case .exp2: GL_EXP2 + } + glFogi(GLenum(GL_FOG_MODE), modeEnum) + _fogMode = newMode + } + } + } + + private var _fogDensity: Float = 1 + + var fogDensity: Float + { + get { _fogDensity } + set(newDensity) + { + if newDensity != _fogDensity + { + glFogf(GLenum(GL_FOG_DENSITY), newDensity) + _fogDensity = newDensity + } + } + } + + private var _fogStart: Float = 0 + + var fogStart: Float + { + get { _fogStart } + set(newStart) + { + if newStart != _fogStart + { + glFogf(GLenum(GL_FOG_START), newStart) + _fogStart = newStart + } + } + } + + private var _fogEnd: Float = 1 + + var fogEnd: Float + { + get { _fogEnd } + set(newEnd) + { + if newEnd != _fogEnd + { + glFogf(GLenum(GL_FOG_END), newEnd) + _fogEnd = newEnd + } + } + } + + private var _fogColour: Colour = .zero + + var fogColour: Colour + { + get { _fogColour } + set(newColour) + { + if newColour != _fogColour + { + withUnsafePointer(to: newColour) + { + $0.withMemoryRebound(to: GLfloat.self, capacity: 4) + { + glFogfv(GLenum(GL_FOG_COLOR), $0) + } + } + } + } + } + + enum FogCoordinateSource { case coordinate, fragmentDepth } + private var _fogCoordinateSource: FogCoordinateSource = .fragmentDepth + + var fogCoodinateSource: FogCoordinateSource + { + get { _fogCoordinateSource } + set(newCoordinateSource) + { + if newCoordinateSource != _fogCoordinateSource + { + let coordinateSourceEnum = switch newCoordinateSource + { + case .coordinate: GL_FOG_COORD + case .fragmentDepth: GL_FRAGMENT_DEPTH + } + glFogi(GLenum(GL_FOG_COORD_SRC), coordinateSourceEnum) + _fogCoordinateSource = newCoordinateSource + } + } + } + + enum Hint + { + case fog + case generateMipmap + case lineSmooth + case perspectiveCorrection + case pointSmooth + case polygonSmooth + case textureCompression + } + enum HintBehaviour { case fastest, nicest, dontCare } + + func setHint(target: Hint, hint: HintBehaviour) + { + let target = switch target + { + case .fog: GL_FOG_HINT + case .generateMipmap: GL_GENERATE_MIPMAP_HINT + case .lineSmooth: GL_LINE_SMOOTH_HINT + case .perspectiveCorrection: GL_PERSPECTIVE_CORRECTION_HINT + case .pointSmooth: GL_POINT_SMOOTH_HINT + case .polygonSmooth: GL_POLYGON_SMOOTH_HINT + case .textureCompression: GL_TEXTURE_COMPRESSION_HINT + } + let mode = switch hint + { + case .fastest: GL_FASTEST + case .nicest: GL_NICEST + case .dontCare: GL_DONT_CARE + } + glHint(GLenum(target), GLenum(mode)) + } + + struct LightAmbientProperty + { + private var _lightAmbient = [Colour](repeating: .black, count: 8) + + subscript(index: Int) -> Colour + { + get { _lightAmbient[index] } + set(newAmbient) + { + if newAmbient != _lightAmbient[index] + { + withUnsafePointer(to: newAmbient) + { + $0.withMemoryRebound(to: GLfloat.self, capacity: 4) + { + // glLightModelfv(GLenum(GL_LIGHT_MODEL_AMBIENT), ambientColour) + glLightfv(GLenum(GL_LIGHT0 + Int32(index)), GLenum(GL_AMBIENT), $0) + } + } + _lightAmbient[index] = newAmbient + } + } + } + } + + var lightAmbient = LightAmbientProperty() + + struct LightDiffuseProperty + { + private var _lightDiffuse: [Colour] = [ .white, .black, .black, .black, .black, .black, .black, .black ] + + subscript(index: Int) -> Colour + { + get { _lightDiffuse[index] } + set(newDiffuse) + { + if newDiffuse != _lightDiffuse[index] + { + withUnsafePointer(to: newDiffuse) + { + $0.withMemoryRebound(to: GLfloat.self, capacity: 4) + { + glLightfv(GLenum(GL_LIGHT0 + Int32(index)), GLenum(GL_DIFFUSE), $0) + } + } + _lightDiffuse[index] = newDiffuse + } + } + } + } + + var lightDiffuse = LightDiffuseProperty() + + struct LightSpecularProperty + { + private var _lightSpecular: [Colour] = [ .white, .black, .black, .black, .black, .black, .black, .black ] + + subscript(index: Int) -> Colour + { + get { _lightSpecular[index] } + set(newSpecular) + { + if newSpecular != _lightSpecular[index] + { + withUnsafePointer(to: newSpecular) + { + $0.withMemoryRebound(to: GLfloat.self, capacity: 4) + { + glLightfv(GLenum(GL_LIGHT0 + Int32(index)), GLenum(GL_SPECULAR), $0) + } + } + _lightSpecular[index] = newSpecular + } + } + } + } + + var lightSpecular = LightSpecularProperty() + + struct LightPositionProperty + { + private var _lightPosition = [Vec4f](repeating: .Z, count: 8) + + subscript(index: Int) -> Vec4f + { + get { _lightPosition[index] } + set(newPosition) + { + withUnsafePointer(to: newPosition) + { + $0.withMemoryRebound(to: GLfloat.self, capacity: 4) + { + glLightfv(GLenum(GL_LIGHT0 + Int32(index)), GLenum(GL_POSITION), $0) + } + } + _lightPosition[index] = newPosition + } + } + } + + var lightPosition = LightPositionProperty() + + //private var _lightSpotDirection = [Vec4f](repeating: .zero, count: 8) + //private var _lightSpotExponent = [Vec4f](repeating: .zero, count: 8) + //private var _lightSpotCutoff = [Vec4f](repeating: .zero, count: 8) + + struct LightConstantAttenuationProperty + { + private var _lightConstantAttenuation = [Float](repeating: 1, count: 8) + + subscript(index: Int) -> Float + { + get { _lightConstantAttenuation[index] } + set(newConstantAttenuation) + { + if newConstantAttenuation != _lightConstantAttenuation[index] + { + glLightf(GLenum(GL_LIGHT0 + Int32(index)), GLenum(GL_CONSTANT_ATTENUATION), newConstantAttenuation) + _lightConstantAttenuation[index] = newConstantAttenuation + } + } + } + } + + var lightConstantAttenuation = LightConstantAttenuationProperty() + + struct LightLinearAttenuationProperty + { + private var _lightLinearAttenuation = [Float](repeating: 0, count: 8) + + subscript(index: Int) -> Float + { + get { _lightLinearAttenuation[index] } + set(newLinearAttenuation) + { + if newLinearAttenuation != _lightLinearAttenuation[index] + { + glLightf(GLenum(GL_LIGHT0 + Int32(index)), GLenum(GL_LINEAR_ATTENUATION), newLinearAttenuation) + _lightLinearAttenuation[index] = newLinearAttenuation + } + } + } + } + + var lightLinearAttenuation = LightLinearAttenuationProperty() + + struct LightQuadraticAttenuation + { + private var _lightQuadraticAttenuation = [Float](repeating: 0, count: 8) + + subscript(index: Int) -> Float + { + get { _lightQuadraticAttenuation[index] } + set(newQuadraticAttenuation) + { + if newQuadraticAttenuation != _lightQuadraticAttenuation[index] + { + glLightf(GLenum(GL_LIGHT0 + Int32(index)), GLenum(GL_QUADRATIC_ATTENUATION), newQuadraticAttenuation) + _lightQuadraticAttenuation[index] = newQuadraticAttenuation + } + } + } + } + + var lightQuadraticAttenuation = LightQuadraticAttenuation() + + var _lightModelAmbient = Colour(r: 0.2, g: 0.2, b: 0.2, a: 1) + + var lightModelAmbient: Colour + { + get { _lightModelAmbient } + set(newAmbient) + { + if newAmbient != _lightModelAmbient + { + + withUnsafePointer(to: newAmbient) + { + $0.withMemoryRebound(to: GLfloat.self, capacity: 4) + { + glLightModelfv(GLenum(GL_LIGHT_MODEL_AMBIENT), $0) + } + } + _lightModelAmbient = newAmbient + } + } + } + + + enum LightModelColourControl { case single, separateSpecular } + var _lightModelColourControl: LightModelColourControl = .single + + var lightModelColourControl: LightModelColourControl + { + get { _lightModelColourControl } + set(newControl) + { + if newControl != _lightModelColourControl + { + let param = switch newControl + { + case .single: GL_SINGLE_COLOR + case .separateSpecular: GL_SEPARATE_SPECULAR_COLOR + } + glLightModelf(GLenum(GL_LIGHT_MODEL_COLOR_CONTROL), GLfloat(param)) + _lightModelColourControl = newControl + } + } + } + + var _lightModelLocalViewer = false + + var lightModelLocalViewer: Bool + { + get { _lightModelLocalViewer } + set(newMode) + { + if newMode != _lightModelLocalViewer + { + glLightModeli(GLenum(GL_LIGHT_MODEL_LOCAL_VIEWER), newMode ? 1 : 0) + _lightModelLocalViewer = newMode + } + } + } + + var _lightModeTwoSide = false + + var lightModeTwoSide: Bool + { + get { _lightModeTwoSide } + set(newMode) + { + if newMode != _lightModeTwoSide + { + glLightModeli(GLenum(GL_LIGHT_MODEL_TWO_SIDE), newMode ? 1 : 0) + _lightModeTwoSide = newMode + } + } + } + + enum MatrixMode { case modelView, projection, texture, colour } + private var _matrixMode: MatrixMode = .modelView + + var matrixMode: MatrixMode + { + get { _matrixMode } + set(newMode) + { + if newMode != _matrixMode + { + let modeEnum = switch newMode + { + case .modelView: GL_MODELVIEW + case .projection: GL_PROJECTION + case .texture: GL_TEXTURE + case .colour: GL_COLOR + } + glMatrixMode(GLenum(modeEnum)) + _matrixMode = newMode + } + } + } + + + static let defaultBuffer: UInt32 = 0 + + private var _arrayBuffer = GLuint(defaultBuffer) + + var arrayBuffer: UInt32 + { + get { UInt32(_arrayBuffer) } + set(newBuf) + { + if newBuf != _arrayBuffer + { + _arrayBuffer = GLuint(newBuf) + glBindBuffer(GLenum(GL_ARRAY_BUFFER), _arrayBuffer) + } + } + } + + private var _elementArrayBuffer = GLuint(defaultBuffer) + + var elementArrayBuffer: UInt32 + { + get { UInt32(_elementArrayBuffer) } + set(newBuf) + { + if newBuf != _elementArrayBuffer + { + _elementArrayBuffer = GLuint(newBuf) + glBindBuffer(GLenum(GL_ELEMENT_ARRAY_BUFFER), _elementArrayBuffer) + } + } + } +} diff --git a/Sources/JolkEngine/Renderer/Renderer.swift b/Sources/JolkEngine/Renderer/Renderer.swift new file mode 100644 index 0000000..a5ad72d --- /dev/null +++ b/Sources/JolkEngine/Renderer/Renderer.swift @@ -0,0 +1,134 @@ +import Foundation +import OpenGL.GL + + +public protocol Renderer +{ + func create(sdlWindow: OpaquePointer) throws + func delete() + + func newFrame() + func resize(width: Int32, height: Int32) + + var clearColour: Colour { get set } + + func setVsync(mode: VSyncMode) throws + + func createMesh(mesh: Mesh) throws -> RenderMesh + func createTexture(data: UnsafeRawPointer, width: Int, height: Int) throws -> RenderTexture2D + func createTexture(data: UnsafeRawPointer, width: Int, height: Int, + filter: FilterMode, mipMode: MipMode) throws -> RenderTexture2D + + func deleteMesh(_ mesh: RenderMesh) + func deleteTexture(_ texture: RenderTexture2D) + + func setProjection(matrix: Mat4f) + func setView(matrix: Mat4f) + + func setMaterial(_ mat: Material) + + func draw(mesh: RenderMesh, model: Mat4f, environment: Environment) + func draw(mesh: RenderMesh, environment: Environment) + + func drawGizmos(lines: [Line]) +} + +public enum RendererError: Error +{ + case sdlError(message: String) +} + +public enum VSyncMode +{ + case off + case on + case adaptive +} + +public enum FilterMode +{ + case point + case linear +} + +public enum MipMode +{ + case off + case nearest + case linear +} + +public enum WrapMode +{ + case clamping + case clampBorder + case clampEdge + case mirrored + case repeating +} + +public protocol RendererResource +{ + associatedtype T: Resource + + static var empty: Self { get } + + var isValid: Bool { get } +} + +public struct RenderMesh: RendererResource +{ + public typealias T = Mesh + + public static var empty: RenderMesh { .init() } + + public var isValid: Bool { _valid } + + private let _valid: Bool; + let vboHnd: Int, iboHnd: Int + let subMeshes: [Mesh.SubMesh] + + private init() + { + self._valid = false + self.vboHnd = 0 + self.iboHnd = 0 + self.subMeshes = [] + } + + init(vbo: Int, ibo: Int, subMeshes: [Mesh.SubMesh]) + { + self._valid = true + self.vboHnd = vbo + self.iboHnd = ibo + self.subMeshes = subMeshes + } +} + +public struct RenderTexture2D: RendererResource +{ + public typealias T = Texture2D + + public static var empty: Self { .init(0) } + + public var isValid: Bool { id != 0 } + + let id: UInt32 + + init(_ id: UInt32) + { + self.id = id + } +} + +public struct Line +{ + let from: Vec3f, to: Vec3f, colour: Colour + + public init(from: Vec3f, to: Vec3f, colour: Colour) + { + self.from = from + self.to = to + self.colour = colour + } +} diff --git a/Sources/JolkEngine/Renderer/Texture2D.swift b/Sources/JolkEngine/Renderer/Texture2D.swift new file mode 100644 index 0000000..44f37f0 --- /dev/null +++ b/Sources/JolkEngine/Renderer/Texture2D.swift @@ -0,0 +1,31 @@ +import Foundation + + +public struct Texture2D: Resource +{ + public let id: RenderTexture2D + public let width: Int, height: Int +} + +extension Texture2D +{ + public static let empty = Self(id: .empty, width: 0, height: 0) +} + + +public struct Texture2DParameters: ContentLoaderParametersProtocol +{ + public typealias T = Texture2D + + var minFilter: FilterMode, magFilter: FilterMode + var wrapMode: WrapMode + var mipMode: MipMode + + public init(minFilter: FilterMode = .linear, magFilter: FilterMode = .linear, wrapMode: WrapMode = .repeating, mipMode: MipMode = .off) + { + self.minFilter = minFilter + self.magFilter = magFilter + self.wrapMode = wrapMode + self.mipMode = mipMode + } +} diff --git a/Sources/JolkEngine/Util/FileHandle.swift b/Sources/JolkEngine/Util/FileHandle.swift new file mode 100644 index 0000000..4d82362 --- /dev/null +++ b/Sources/JolkEngine/Util/FileHandle.swift @@ -0,0 +1,20 @@ +import Foundation + + +extension FileHandle +{ + // FixedWidthInteger or BinaryFloatingPoint + func read(as: T.Type) throws -> T + { + let size = MemoryLayout.size + guard let data = try self.read(upToCount: size) + else { throw NSError(domain: "FileHandle.read", code: NSFileReadUnknownError, userInfo: [ + NSLocalizedFailureReasonErrorKey: "Read error", + NSLocalizedDescriptionKey: "Read error"]) } + guard data.count == size + else { throw NSError(domain: "FileHandle.read", code: NSFileReadUnknownError, userInfo: [ + NSLocalizedFailureReasonErrorKey: "Value underread", + NSLocalizedDescriptionKey: "Value underread"]) } + return data.withUnsafeBytes { p -> T in p.load(as: T.self) } + } +} diff --git a/Sources/JolkEngine/Util/TextFile.swift b/Sources/JolkEngine/Util/TextFile.swift new file mode 100644 index 0000000..47da722 --- /dev/null +++ b/Sources/JolkEngine/Util/TextFile.swift @@ -0,0 +1,52 @@ +import Foundation + + +class TextFile +{ + private var _hnd: UnsafeMutablePointer + private let _maxLength: Int + + init(fileURL: URL, maxLineLength: Int = 1024) throws + { + guard let f = fopen(fileURL.path, "r") + else { throw NSError(domain: NSPOSIXErrorDomain, code: Int(errno)) } + + _hnd = f + _maxLength = maxLineLength + } + + deinit + { + fclose(_hnd) + } + + struct LinesSequence: Sequence, IteratorProtocol + { + typealias Element = String + + private var _hnd: UnsafeMutablePointer + private var _buffer: [CChar] + + fileprivate init(_ handle: UnsafeMutablePointer, _ maxLength: Int) + { + _hnd = handle + _buffer = [CChar](repeating: 0, count: maxLength) + } + + mutating func next() -> String? + { + guard fgets(&_buffer, Int32(_buffer.count), _hnd) != nil + else + { + if feof(_hnd) != 0 { return nil } + else { return nil } + } + let length = strcspn(_buffer, "\r\n") + _buffer[length] = "\0".utf8CString[0] + //if let pos = strchr(_buffer, Int32("\n".utf8CString[0])) { pos[0] = "\0".utf8CString[0] } + return String(cString: _buffer) + } + } + + public var lines: LinesSequence { LinesSequence(_hnd, _maxLength) } +} diff --git a/Sources/JolkEngine/Util/UBJsonReader.swift b/Sources/JolkEngine/Util/UBJsonReader.swift new file mode 100644 index 0000000..bf2557a --- /dev/null +++ b/Sources/JolkEngine/Util/UBJsonReader.swift @@ -0,0 +1,248 @@ +import Foundation + + +struct UBJsonReader +{ + private var file: FileHandle + + init(file: FileHandle) + { + self.file = file + } + + func read() throws -> UBJsonToken + { + guard try readCharacter() == "{" + else { throw UBReaderError.badFormat("Stream does not start with an object") } + return try readObject() + } + + private func parse(type: Character) throws -> UBJsonToken + { + let oldFormat = true + return switch type + { + case "{": try readObject() + case "[": try readArray() + case "Z": .null + case "N": .noop + case "T": .bool(true) + case "F": .bool(false) + case "i": oldFormat + ? .int16(try file.read(as: Int16.self).bigEndian) + : .int8(try file.read(as: Int8.self)) + case "U": .uint8(try file.read(as: UInt8.self)) + case "I": oldFormat + ? .int32(try file.read(as: Int32.self).bigEndian) + : .int16(try file.read(as: Int16.self).bigEndian) + case "l": .int32(try file.read(as: Int32.self).bigEndian) + case "L": .int64(try file.read(as: Int64.self).bigEndian) + case "d": .float32(try readBeFloatPiss()) + case "D": .float64(try readBeFloat()) + case "H": throw UBReaderError.badFormat("High-precision numbers are unsupported") + case "C": .char(try readCharacter()) + case "S": .string(try readString()) + default: throw UBReaderError.badToken("Unexpected token \"\(type)\"") + } + } + + private func readObject() throws -> UBJsonToken + { + var items = Dictionary() + while true + { + let type = try readCharacter() + var name: String + switch type + { + case "S", "i": + name = try readString(type) + case "}": + return .object(items) + default: + throw UBReaderError.badToken("Unexpected token while reading object field key") + } + if items.keys.contains(name) { throw UBReaderError.badFormat("Object contains overlapping keys") } + items[name] = try parse(type: try readCharacter()) + } + } + + private func readArray() throws -> UBJsonToken + { + var array = [UBJsonToken]() + while true + { + let type = try readCharacter() + switch type + { + case "]": + return .array(array) + default: + array.append(try parse(type: type)) + } + } + } + + private func readBeFloatPiss() throws -> Float + { + guard var bytes = try? file.read(upToCount: 4) + else { throw UBReaderError.readError("Read failure while reading float data") } + return Float(bitPattern: bytes.withUnsafeBytes { $0.load(as: UInt32.self) }.bigEndian) + } + + private func readBeFloat() throws -> T where T.RawSignificand == U + { + guard var bytes = try? file.read(upToCount: MemoryLayout.size) + else { throw UBReaderError.readError("Read failure while reading float data") } + bytes.reverse() + return T(bytes.withUnsafeBytes { $0.load(as: U.self) }) + } + + private func readCharacter() throws -> Character + { + guard let raw = try? file.read(as: UInt8.self), + let uni = UnicodeScalar(Int(raw)) + else { throw UBReaderError.readError("Read failure while reading character") } + return Character(uni) + } + + private func readString(_ optType: Character? = nil) throws -> String + { + let type = optType == nil ? try readCharacter() : optType! + var length: Int + switch type + { + case "S": + guard try readCharacter() == "i" + else { throw UBReaderError.badToken("Malformed string") } + fallthrough + case "i": + length = Int(try file.read(as: Int8.self)) + case "s": + length = Int(try file.read(as: UInt8.self)) + default: throw UBReaderError.badToken("Unexpected token while reading string") + } + if length < 0 { throw UBReaderError.badToken("Negative string length") } + if length == 0 { return "" } + guard let data = try file.read(upToCount: length) + else { throw UBReaderError.readError("Error reading string") } + return String(decoding: data, as: UTF8.self) + } +} + +enum UBReaderError: Error +{ + case badFormat(_ message: String) + case badToken(_ message: String) + case readError(_ message: String) + case valueError(_ message: String) +} + +enum UBJsonToken +{ + case object(_ fields: Dictionary) + case array(_ items: [UBJsonToken]) + case null + case noop + case bool(_ value: Bool) + case int8(_ value: Int8) + case uint8(_ value: UInt8) + case int16(_ value: Int16) + case int32(_ value: Int32) + case int64(_ value: Int64) + case highPrecision + case float32(_ value: Float32) + case float64(_ value: Float64) + case char(_ value: Character) + case string(_ value: String) +} + +extension UBJsonToken +{ + var array: [UBJsonToken] + { + get throws + { + if case .array(let items) = self { return items } + throw UBReaderError.valueError("Not an array") + } + } + + func getArray(key: String) throws -> [UBJsonToken] + { + if case .object(let fields) = self + { + guard let child = fields[key] + else { throw UBReaderError.valueError("Field \"\(key)\" not found") } + return try child.array + } + throw UBReaderError.valueError("Not an object") + } + + var int16: Int16 + { + get throws + { + if case .int16(let value) = self { return value } + throw UBReaderError.valueError("Not an int16") + } + } + + func getInt16Array(key: String) throws -> [Int16] + { + try getArray(key: key).map( + { i in + if case .int8(let value) = i { return Int16(value) } + else if case .uint8(let value) = i { return Int16(value) } + else if case .int16(let value) = i { return value } + else if case .int32(let value) = i + { + if value < Int16.min || value > Int16.max { throw UBReaderError.valueError("Value out of range") } + return Int16(truncatingIfNeeded: value) + } + else if case .int64(let value) = i + { + if value < Int16.min || value > Int16.max { throw UBReaderError.valueError("Value out of range") } + return Int16(truncatingIfNeeded: value) + } + else { throw UBReaderError.valueError("Can't read array as int16s") } + }) + } + + var float: Float + { + get throws + { + if case .float32(let value) = self { return value } + throw UBReaderError.valueError("Not a float32") + } + } + + func getFloatArray(key: String) throws -> [Float] + { + try getArray(key: key).map({ try $0.float }) + } + + var string: String + { + get throws + { + if case .string(let value) = self { return value } + throw UBReaderError.valueError("Not a string") + } + } + + func getString(key: String, default defStr: String? = nil) throws -> String + { + if case .object(let fields) = self + { + guard let child = fields[key] else + { + if defStr == nil { throw UBReaderError.valueError("Field \"\(key)\" not found") } + return defStr! + } + return try child.string + } + throw UBReaderError.valueError("Not an object") + } +} diff --git a/Sources/Test/CavesOfJolk.swift b/Sources/Test/CavesOfJolk.swift new file mode 100644 index 0000000..e236123 --- /dev/null +++ b/Sources/Test/CavesOfJolk.swift @@ -0,0 +1,276 @@ +import Foundation +import simd +import JolkEngine + + +@main struct Program +{ + static func main() + { + Application( + application: CavesOfJolk(), + config: ApplicationConfiguration( + resizable: true, + vSync: .on, + windowWidth: 1280, + windowHeight: 720, + bundle: Bundle.module) + ).run() + } +} + +class CavesOfJolk: ApplicationImplementation +{ + private var aspect: Float = 0 + private var drawEdges = false + + var env = Environment() + var worldMesh = RenderMesh.empty, cube = RenderMesh.empty, suzanne = RenderMesh.empty, toybox = RenderMesh.empty + var texture = Texture2D.empty, jolkTex = Texture2D.empty, suzanneDiffuse = Texture2D.empty + + private lazy var world = Collision() + private lazy var colin = Colin() + private lazy var jolkCube = JolkCube(position: .init(0, 1, -4)) + private var lightTheta: Float = 0 + + private var frameCount = 0 + private var frameTimer: Float = 1 + + func create(render: inout Renderer) + { + render.clearColour = XnaColour.CornflowerBlue + + env.setFog( + colour: XnaColour.CornflowerBlue, + //mode: .depth, falloff: .range(type: .linear, start: 4, end: 38)) + //mode: .depth, falloff: .range(type: .linear, start: 1.25, end: 24.5)) + //mode: .distance, falloff: .factor(type: .exp2, density: 0.1)) + mode: .depth, falloff: .factor(type: .exp2, density: 0.0222)) + + env.addAmbientLight(colour: XnaColour.DarkSlateGray.lighten(by: -0.666)) + env.addDirectionalLight( + direction: -Vec3f(1, -1, -1).normalised, + colour: XnaColour.BlanchedAlmond + .lighten(by: -0.02) + .mix(with: XnaColour.LightSlateGray, 0.5) + .mix(with: XnaColour.White, 0.125)) + env.addPointLight( + position: Vec3f(3, 0.33, -5), + colour: XnaColour.Green.mix(with: XnaColour.Gray, 0.5), + intensity: 2) + env.addPointLight( + position: Vec3f(5.5, 0.33, -6), + colour: XnaColour.Red.mix(with: XnaColour.Gray, 0.5), + intensity: 2) + env.addPointLight( + position: Vec3f(4, 0.33, -7), + colour: XnaColour.Blue.mix(with: XnaColour.Gray, 0.5), + intensity: 2) + } + + func loadContent(content: inout ContentManager) throws + { + try loadWorld(&content) + cube = try content.create(mesh: .init( + vertices: [ + .init(position: Vec3f(-1, -1, 1), normal: .forward, texCoord: Vec2f(0, 0)), + .init(position: Vec3f( 1, -1, 1), normal: .forward, texCoord: Vec2f(1, 0)), + .init(position: Vec3f(-1, 1, 1), normal: .forward, texCoord: Vec2f(0, 1)), + .init(position: Vec3f( 1, 1, 1), normal: .forward, texCoord: Vec2f(1, 1)), + .init(position: Vec3f( 1, -1, 1), normal: .right, texCoord: Vec2f(0, 0)), + .init(position: Vec3f( 1, -1, -1), normal: .right, texCoord: Vec2f(1, 0)), + .init(position: Vec3f( 1, 1, 1), normal: .right, texCoord: Vec2f(0, 1)), + .init(position: Vec3f( 1, 1, -1), normal: .right, texCoord: Vec2f(1, 1)), + .init(position: Vec3f( 1, -1, -1), normal: .back, texCoord: Vec2f(0, 0)), + .init(position: Vec3f(-1, -1, -1), normal: .back, texCoord: Vec2f(1, 0)), + .init(position: Vec3f( 1, 1, -1), normal: .back, texCoord: Vec2f(0, 1)), + .init(position: Vec3f(-1, 1, -1), normal: .back, texCoord: Vec2f(1, 1)), + .init(position: Vec3f(-1, -1, -1), normal: .left, texCoord: Vec2f(0, 0)), + .init(position: Vec3f(-1, -1, 1), normal: .left, texCoord: Vec2f(1, 0)), + .init(position: Vec3f(-1, 1, -1), normal: .left, texCoord: Vec2f(0, 1)), + .init(position: Vec3f(-1, 1, 1), normal: .left, texCoord: Vec2f(1, 1)), + .init(position: Vec3f(-1, -1, -1), normal: .down, texCoord: Vec2f(0, 0)), + .init(position: Vec3f( 1, -1, -1), normal: .down, texCoord: Vec2f(1, 0)), + .init(position: Vec3f(-1, -1, 1), normal: .down, texCoord: Vec2f(0, 1)), + .init(position: Vec3f( 1, -1, 1), normal: .down, texCoord: Vec2f(1, 1)), + .init(position: Vec3f(-1, 1, 1), normal: .up, texCoord: Vec2f(0, 0)), + .init(position: Vec3f( 1, 1, 1), normal: .up, texCoord: Vec2f(1, 0)), + .init(position: Vec3f(-1, 1, -1), normal: .up, texCoord: Vec2f(0, 1)), + .init(position: Vec3f( 1, 1, -1), normal: .up, texCoord: Vec2f(1, 1)) + ], + indices: [ + 0, 1, 2, 2, 1, 3, + 4, 5, 6, 6, 5, 7, + 8, 9, 10, 10, 9, 11, + 12, 13, 14, 14, 13, 15, + 16, 17, 18, 18, 17, 19, + 20, 21, 22, 22, 21, 23 ])) + suzanne = try content.load("suzanne.g3db") + toybox = try content.load("toybox.g3db") + + + let linearMipped = Texture2DParameters( + minFilter: .linear, magFilter: .linear, + wrapMode: .repeating, + mipMode: .linear) + let linearClamp = Texture2DParameters( + minFilter: .linear, magFilter: .linear, + wrapMode: .clampEdge) + + texture = try content.load("cobblestone.png", params: linearMipped) + jolkTex = try content.load("jolkmeup.jpg", params: linearClamp) + suzanneDiffuse = try content.load("suzanne_diffuse.png", params: linearMipped) + } + + func resize(width: Int, height: Int) + { + aspect = Float(width) / Float(height) + print(aspect) + } + + func update(deltaTime: Float) + { + colin.update(deltaTime: deltaTime, world: world) + jolkCube.update(deltaTime: deltaTime, world: world) + + lightTheta += deltaTime + + frameCount += 1 + frameTimer -= deltaTime + if frameTimer <= 0 + { + print("FPS: \(frameCount)") + frameCount = 0 + frameTimer += 1.0 + } + } + + private func loadWorld(_ content: inout ContentManager) throws + { + //let world: Mesh = try content.load("World.obj") + let obj = try ObjReader.read(url: try content.getResource("World.obj")) + let mesh: Mesh = try ObjLoader.read(model: obj) + worldMesh = try content.create(mesh: mesh) + + if let collision = obj.objects["Collision3D"] + { + world.build(obj: obj, collision: collision) + } + } + + /* + if let collision = world.subMeshes["Collision"] + { + edges.reserveCapacity(collision.length / 6) + let get2dVertex = + { i in + let vertex = world.vertices[Int(world.indices[i])] + let position = Vec2f(vertex.position.x, vertex.position.z) + let normal = Vec2f(vertex.normal.x, vertex.normal.z) + return (position, normal) + } + for i in stride(from: collision.start, to: collision.start + collision.length, by: 3) + { + let (v0p, v0n) = get2dVertex(i) + let (v1p, v1n) = get2dVertex(i + 1) + let (v2p, v2n) = get2dVertex(i + 2) + + let (p0, p1) = if v0p == v2p || v1p == v2p { (v0p, v1p) } + else if v0p == v1p { (v0p, v2p) } + else { throw NSError() } + + let edge = Edge(p: p0.lerp(p1, 0.5), n: (v0n + v1n + v2n).normalised, w: (p0 - p1).len) + if !edges.contains(where: { edge.p == $0.p && edge.w == $0.w }) + { + edges.append(edge) + } + } + } + */ + + func draw(render: inout Renderer, deltaTime: Float) + { + // Setup camera + render.setProjection(matrix: + .perspective(fovY: Float.rad(fromDeg: colin.fov), aspect: aspect, zNear: 0.1, zFar: 100)) + render.setView(matrix: colin.transform) + + // Update point lights + var theta = Vec3f(repeating: lightTheta) * Vec3f(0.12, 0.011, 0.056) * 6 + var i = env.lights.startIndex + while i != env.lights.endIndex + { + if case .point(let colour, _, _) = env.lights[i] + { + env.lights[i] = .point( + colour: colour, + position: Vec3f( + 4 + 6 * cos(theta[0]), + 0.33 + 0.33 * sin(theta[1]), + -6 + 3 * sin(theta[0] * 2)), + intensity: 3.1 + 1.53 * cos(theta[2])) + + let spacing = 0.5 * Float.pi * (2 / 3.0) + theta += spacing * Vec3f(1, 0.98, 0.5566) + } + i = env.lights.index(after: i) + } + + // Draw world + render.setMaterial(Material( + specular: XnaColour.BlanchedAlmond.mix(with: .black, 0.12), + texture: texture.id)) + render.draw(mesh: worldMesh, environment: env) + + // Draw jolked up shit + render.setMaterial(Material( + specular: XnaColour.Gray, + gloss: 20.0, + texture: jolkTex.id)) + render.draw(mesh: cube, model: jolkCube.transform, environment: env) + + render.setMaterial(Material(texture: suzanneDiffuse.id)) + render.draw(mesh: suzanne, model: .translate(.up + Vec3f(3.0, 0.0, -3.5) * 2.5), environment: env) + + render.draw(mesh: toybox, + model: .translate(Vec3f(6.0, 0.667, -3.5) * Vec3f(2.5, 1, 2.5)) + * .rotate(y: lightTheta * 0.5) * .scale(scalar: 0.25), environment: env) + + if Input.instance.keyPressed(.c) { drawEdges = !drawEdges } + if drawEdges + { + /* + var lines = [Line]( + repeating: .init(from: .init(), to: .init(), colour: .zero), + count: edges.count * 3) + var i: Int = 0 + for edge in edges + { + let tangent = Vec2f(edge.n.y, -edge.n.x) + let a = edge.p - tangent * edge.w * 0.5 + let b = edge.p + tangent * edge.w * 0.5 + + lines[i] = Line( + from: Vec3f(a.x, 0, a.y), + to: Vec3f(b.x, 0, b.y), + colour: Colour(r: 0.1, g: 0.9, b: 0.1)) + lines[i + 1] = Line( + from: Vec3f(edge.p.x, 0, edge.p.y), + to: Vec3f(edge.p.x + edge.n.x * 0.25, 0, edge.p.y + edge.n.y * 0.25), + colour: Colour(r: 0.9, g: 0.1, b: 0.1)) + + let deltaPos = Vec2f(colin.position.x, colin.position.z) - edge.p + let something = tangent * deltaPos.cross(edge.n) + lines[i + 2] = Line( + from: Vec3f(edge.p.x + something.x, 0.0, edge.p.y + something.y), + to: Vec3f(edge.p.x + something.x + edge.n.x * 0.5, 0.0, edge.p.y + something.y + edge.n.y * 0.5), + colour: XnaColour.Azure) + i += 3 + } + render.drawGizmos(lines: lines) + */ + + world.draw(render, position: colin.position) + } + } +} diff --git a/Sources/Test/Collision.swift b/Sources/Test/Collision.swift new file mode 100644 index 0000000..8343e6f --- /dev/null +++ b/Sources/Test/Collision.swift @@ -0,0 +1,497 @@ +import Foundation +import JolkEngine + + +class Collision +{ + struct Edge { let p: Vec2f, n: Vec2f, w: Float } + + enum Edge3D + { + case triangle(n: Vec3f, p: Vec3f, v: (Vec3f, Vec3f, Vec3f)) + case aabbFloor(n: Vec3f, p: Vec3f, w: Float, d: Float) + case quad(p: (Vec3f, Vec3f, Vec3f, Vec3f), w: Winding) + } + var edge3d = [Edge3D]() + +/* +0,-2 1,-2 + *--* + | | +0,-1 * * 1,-1 + | | + *--* +0, 0 1, 0 + */ + + + init() + { + assert(Self.isRectangle([ + Vec3f(0.0, 0.0, 0.0), + Vec3f(0.0, 0.0, -1.0), + Vec3f(1.0, 0.0, -1.0), + Vec3f(1.0, 0.0, 0.0), + ])) + + + // CW + assert(Self.isRectangle([ + Vec3f(0.0, 0.0, 0.0), + Vec3f(0.0, 0.0, -1.0), + Vec3f(0.0, 0.0, -2.0), + Vec3f(1.0, 0.0, -2.0), + Vec3f(1.0, 0.0, -1.0), + Vec3f(1.0, 0.0, 0.0), + ])) + assert(Self.isRectangle([ + Vec3f(0.0, 0.0, -1.0), + Vec3f(0.0, 0.0, -2.0), + Vec3f(1.0, 0.0, -2.0), + Vec3f(1.0, 0.0, -1.0), + Vec3f(1.0, 0.0, 0.0), + Vec3f(0.0, 0.0, 0.0), + ])) + assert(Self.isRectangle([ + Vec3f(0.0, 0.0, -2.0), + Vec3f(1.0, 0.0, -2.0), + Vec3f(1.0, 0.0, -1.0), + Vec3f(1.0, 0.0, 0.0), + Vec3f(0.0, 0.0, 0.0), + Vec3f(0.0, 0.0, -1.0), + ])) + assert(Self.isRectangle([ + Vec3f(1.0, 0.0, -2.0), + Vec3f(1.0, 0.0, -1.0), + Vec3f(1.0, 0.0, 0.0), + Vec3f(0.0, 0.0, 0.0), + Vec3f(0.0, 0.0, -1.0), + Vec3f(0.0, 0.0, -2.0), + ])) + assert(Self.isRectangle([ + Vec3f(1.0, 0.0, -1.0), + Vec3f(1.0, 0.0, 0.0), + Vec3f(0.0, 0.0, 0.0), + Vec3f(0.0, 0.0, -1.0), + Vec3f(0.0, 0.0, -2.0), + Vec3f(1.0, 0.0, -2.0), + ])) + assert(Self.isRectangle([ + Vec3f(1.0, 0.0, 0.0), + Vec3f(0.0, 0.0, 0.0), + Vec3f(0.0, 0.0, -1.0), + Vec3f(0.0, 0.0, -2.0), + Vec3f(1.0, 0.0, -2.0), + Vec3f(1.0, 0.0, -1.0), + ])) + + // CCW + assert(Self.isRectangle([ + Vec3f( 0.0, 0.0, 0.0), + Vec3f( 0.0, 0.0, -1.0), + Vec3f( 0.0, 0.0, -2.0), + Vec3f(-1.0, 0.0, -2.0), + Vec3f(-1.0, 0.0, -1.0), + Vec3f(-1.0, 0.0, 0.0), + ])) + assert(Self.isRectangle([ + Vec3f( 0.0, 0.0, -1.0), + Vec3f( 0.0, 0.0, -2.0), + Vec3f(-1.0, 0.0, -2.0), + Vec3f(-1.0, 0.0, -1.0), + Vec3f(-1.0, 0.0, 0.0), + Vec3f( 0.0, 0.0, 0.0), + ])) + assert(Self.isRectangle([ + Vec3f( 0.0, 0.0, -2.0), + Vec3f(-1.0, 0.0, -2.0), + Vec3f(-1.0, 0.0, -1.0), + Vec3f(-1.0, 0.0, 0.0), + Vec3f( 0.0, 0.0, 0.0), + Vec3f( 0.0, 0.0, -1.0), + ])) + assert(Self.isRectangle([ + Vec3f(-1.0, 0.0, -2.0), + Vec3f(-1.0, 0.0, -1.0), + Vec3f(-1.0, 0.0, 0.0), + Vec3f( 0.0, 0.0, 0.0), + Vec3f( 0.0, 0.0, -1.0), + Vec3f( 0.0, 0.0, -2.0), + ])) + assert(Self.isRectangle([ + Vec3f(-1.0, 0.0, -1.0), + Vec3f(-1.0, 0.0, 0.0), + Vec3f( 0.0, 0.0, 0.0), + Vec3f( 0.0, 0.0, -1.0), + Vec3f( 0.0, 0.0, -2.0), + Vec3f(-1.0, 0.0, -2.0), + ])) + assert(Self.isRectangle([ + Vec3f(-1.0, 0.0, 0.0), + Vec3f( 0.0, 0.0, 0.0), + Vec3f( 0.0, 0.0, -1.0), + Vec3f( 0.0, 0.0, -2.0), + Vec3f(-1.0, 0.0, -2.0), + Vec3f(-1.0, 0.0, -1.0), + ])) + } + + private static let epsilon: Float = 0.00001 //.ulpOfOne + + private static func isSimpleQuad(_ p: (Vec3f, Vec3f, Vec3f, Vec3f)) -> Bool + { + if abs(p.0.y - p.1.y) <= epsilon { return abs(p.2.y - p.3.y) <= epsilon } + if abs(p.1.y - p.2.y) <= epsilon { return abs(p.3.y - p.0.y) <= epsilon } + return false + } + + private static func isRectangle(_ p: (Vec3f, Vec3f, Vec3f, Vec3f)) -> Bool + { + if abs(p.0.x - p.1.x) <= epsilon && + abs(p.1.z - p.2.z) <= epsilon && + abs(p.2.x - p.3.x) <= epsilon && + abs(p.3.z - p.0.z) <= epsilon { return true } + if abs(p.0.z - p.1.z) <= epsilon && + abs(p.1.x - p.2.x) <= epsilon && + abs(p.2.z - p.3.z) <= epsilon && + abs(p.3.x - p.0.x) <= epsilon { return true } + return false + } + + private static func isRectangle(_ positions: [Vec3f]) -> Bool + { + var winding: Winding = .none + var xdir: Float = 0.0, zdir: Float = 0.0 + let first = positions[0] + var previous = first + for p in positions[1...] + { + let (xdelta, zdelta) = (p.x - previous.x, p.z - previous.z) + let (xzero, zzero) = (abs(xdelta) <= epsilon, abs(zdelta) <= epsilon) + if !xzero && zzero + { + if xdir != 0.0 && xdelta.sign != xdir.sign { return false } + if zdir != 0.0 + { + switch winding + { + case .none: winding = xdelta.sign == zdir.sign ? .ccw : .cw + case .cw: if xdelta.sign == zdir.sign { return false } + case .ccw: if xdelta.sign != zdir.sign { return false } + } + } + (xdir, zdir) = (xdelta, 0.0) + } + else if xzero && !zzero + { + if zdir != 0.0 && zdelta.sign != zdir.sign { return false } + if xdir != 0.0 + { + switch winding + { + case .none: winding = zdelta.sign == xdir.sign ? .cw : .ccw + case .cw: if zdelta.sign != xdir.sign { return false } + case .ccw: if zdelta.sign == xdir.sign { return false } + } + } + (xdir, zdir) = (0.0, zdelta) + } + else if !xzero && !zzero { return false } + previous = p + } + return abs(first.x - previous.x) <= epsilon || abs(first.z - previous.z) <= epsilon + } + + private static func getQuadWinding(_ p: (Vec3f, Vec3f, Vec3f, Vec3f)) -> Winding + { + var area: Float = 0.0 + area += (p.1.x - p.0.x) * ((p.0.z + p.1.z) * 0.5) + area += (p.2.x - p.1.x) * ((p.1.z + p.2.z) * 0.5) + area += (p.3.x - p.2.x) * ((p.2.z + p.3.z) * 0.5) + area += (p.0.x - p.3.x) * ((p.3.z + p.0.z) * 0.5) + return area.sign == .plus ? .ccw : .cw // z is towards us + } + + static func quadSpaceFromCartesian(quad: (Vec3f, Vec3f, Vec3f, Vec3f), position: Vec3f) -> Vec2f + { + let p = ( + Vec2d(Double(quad.0.x), Double(quad.0.z)), + Vec2d(Double(quad.1.x), Double(quad.1.z)), + Vec2d(Double(quad.2.x), Double(quad.2.z)), + Vec2d(Double(quad.3.x), Double(quad.3.z))) + + let xz = Vec2d(Double(position.x), Double(position.z)) + + /* + let old = { + let a = xz.x - p.0.x + let b = p.1.x - p.0.x + let c = p.3.x - p.0.x + let d = p.0.x - p.1.x + p.2.x - p.3.x + let f = xz.y - p.0.y + let g = p.1.y - p.0.y + let h = p.3.y - p.0.y + let j = p.0.y - p.1.y + p.2.y - p.3.y + let v2 = -c * j - (-d * h) + let v1 = a * j - c * g - (d * f - b * h) + let v0 = a * g - b * f + let vq = (-v1 + sqrt(v1 * v1 - 4.0 * v2 * v0)) / (2.0 * v2) + let uq = (a - c * vq) / (b + d * vq) + return Vec2f(Float(uq), Float(vq)) + } + */ + + let a = xz - p.0 + let b = p.1 - p.0 + let c = p.3 - p.0 + let d = p.0 - p.1 + p.2 - p.3 + let v0 = a.cross(b), v2 = c.cross(-d) + let v1 = a.x * d.y - b.y * c.x - (a.y * d.x - b.x * c.y) + let vq = (-v1 + sqrt(v1 * v1 - 4.0 * v2 * v0)) / (2.0 * v2) + let uq = (a.x - c.x * vq) / (b.x + d.x * vq) + return Vec2f(Float(uq), Float(vq)) + //let oldUv = old() + //if !oldUv.x.isNaN || !uv.x.isNaN { assert (oldUv.x == uv.x) } + //if !oldUv.y.isNaN || !uv.y.isNaN { assert (oldUv.y == uv.y) } + //return uv + } + + enum Winding { case none, cw, ccw } + + func build(obj: ObjModel, collision: ObjModel.Object) + { + for face in collision.faces + { + switch face + { + case .triangle(let v1, let v2, let v3): + let p = (obj.positions[v1.p], obj.positions[v2.p], obj.positions[v3.p]) + let n = (obj.normals[v1.n] + obj.normals[v2.n] + obj.normals[v3.n]).normalised + if abs(n.y) < 0.25 { continue } + edge3d.append(.triangle(n: n, p: (p.0 + p.1 + p.2) / 3.0, v: p)) + case .quad(let v1, let v2, let v3, let v4): + let p = (obj.positions[v1.p], obj.positions[v2.p], obj.positions[v3.p], obj.positions[v4.p]) + let n = (obj.normals[v1.n] + obj.normals[v2.n] + obj.normals[v3.n] + obj.normals[v4.n]).normalised + if Self.isSimpleQuad(p) && Self.isRectangle(p) + { + if abs(n.y) < 0.25 { continue } + let left = min(p.0.x, p.1.x, p.2.x, p.3.x) + let right = max(p.0.x, p.1.x, p.2.x, p.3.x) + let back = min(p.0.z, p.1.z, p.2.z, p.3.z) + let forward = max(p.0.z, p.1.z, p.2.z, p.3.z) + edge3d.append(.aabbFloor(n: n, + p: (p.0 + p.1 + p.2 + p.3) / 4.0, + w: (right - left) / 2.0, + d: (forward - back) / 2.0)) + } + else + { + if abs(n.y) < 0.25 { continue } + edge3d.append(.quad(p: p, w: Self.getQuadWinding(p))) + /* + edge3d.append(.triangle(n: n, p: (p.0 + p.1 + p.2) / 3.0, v: (p.0, p.1, p.2))) + edge3d.append(.triangle(n: n, p: (p.2 + p.3 + p.0) / 3.0, v: (p.2, p.3, p.0))) + */ + } + case .ngon(let v): + let p = v.map { obj.positions[$0.p] } + let n = v.reduce(.zero) { $0 + obj.normals[$1.n] }.normalised + if abs(n.y) < 0.25 { continue } + if Self.isRectangle(p) + { + let left = p.map { $0.x }.min()!, right = p.map { $0.x }.max()! + let bottom = p.map { $0.y }.min()!, top = p.map { $0.y }.max()! + let back = p.map { $0.z }.min()!, forward = p.map { $0.z }.max()! + let position = Vec3f(left + right, bottom + top, back + forward) / 2.0 + edge3d.append(.aabbFloor(n: n, p: position, + w: (right - left) / 2.0, + d: (forward - back) / 2.0)) + } + else + { + let p0 = p[0] + for i in 1..<(v.count-1) + { + let p1 = p[i], p2 = p[i + 1] + edge3d.append(.triangle(n: n, p: (p0 + p1 + p2) / 3.0, v: (p0, p1, p2))) + } + } + default: + continue + } + } + } + + func draw(_ render: Renderer, position: Vec3f) + { + var lines = [Line]( + repeating: .init(from: .init(), to: .init(), colour: .zero), + count: edge3d.count * 6) + var i: Int = 0 + for edge in edge3d + { + var o: Vec3f = .zero, n: Vec3f = .zero + switch edge + { + case .triangle(let trin, let trip, let triv): + o = trip + n = trin + + let v0 = triv.1 - triv.0; + let v1 = triv.2 - triv.0; + let v2 = position - triv.0; + let iden = 1.0 / (v0.x * v1.z - v1.x * v0.z); + let v = (v2.x * v1.z - v1.x * v2.z) * iden; + let w = (v0.x * v2.z - v2.x * v0.z) * iden; + let colour = if v >= 0.0 && w >= 0.0 && v + w <= 1.0 + { XnaColour.Red } else { XnaColour.GreenYellow } + //let p = triv + //let det = (p.1.x - p.0.x) * (p.2.z - p.0.z) - (p.1.z - p.0.z) * (p.2.x - p.0.x) + //let colour: Colour = if + // det * (p.1.x - p.0.x) * (position.z - p.0.z) - (p.1.z - p.0.z) * (position.x - p.0.x) >= 0, + // det * (p.2.x - p.1.x) * (position.z - p.1.z) - (p.2.z - p.1.z) * (position.x - p.1.x) >= 0, + // det * (p.0.x - p.2.x) * (position.z - p.2.z) - (p.0.z - p.2.z) * (position.x - p.2.x) >= 0 + /* + let side = { (v1: Vec3f, v2: Vec3f, p: Vec3f) in + (v2.z - v1.z) * (p.x - v1.x) + (v2.x + v1.x) * (position.z - v1.z) } + let colour = if + side(triv.0, triv.1, position) >= 0, + side(triv.1, triv.2, position) >= 0, + side(triv.2, triv.0, position) >= 0 + */ + + lines[i + 0] = Line(from: triv.0, to: triv.1, colour: colour) + lines[i + 1] = Line(from: triv.1, to: triv.2, colour: colour) + lines[i + 2] = Line(from: triv.2, to: triv.0, colour: colour) + i += 3 + case .aabbFloor(let floorn, let floorp, let floorw, let floord): + o = floorp + n = floorn + + let n2 = Vec2f(n.x, n.z) / n.y + let z0 = Vec2f(-floorw, floord).dot(n2) + let z1 = Vec2f(-floorw, -floord).dot(n2) + let z2 = Vec2f( floorw, -floord).dot(n2) + let z3 = Vec2f( floorw, floord).dot(n2) + + let c0 = floorp + Vec3f( floorw, z0, -floord) + let c1 = floorp + Vec3f( floorw, z1, floord) + let c2 = floorp + Vec3f(-floorw, z2, floord) + let c3 = floorp + Vec3f(-floorw, z3, -floord) + + lines[i + 0] = Line(from: c0, to: c1, colour: XnaColour.GreenYellow) + lines[i + 1] = Line(from: c1, to: c2, colour: XnaColour.GreenYellow) + lines[i + 2] = Line(from: c2, to: c3, colour: XnaColour.GreenYellow) + lines[i + 3] = Line(from: c3, to: c0, colour: XnaColour.GreenYellow) + i += 4 + case .quad(let verts, let winding): + /* + let p = ( + verts.0 + (verts.1 - verts.0) * position.x, + verts.3 + (verts.2 - verts.3) * position.x, + verts.0 + (verts.3 - verts.0) * position.z, + verts.1 + (verts.2 - verts.1) * position.z) + + let xdiff = Vec2f(p.0.x - p.1.x, p.2.x - p.3.x) + let ydiff = Vec2f(p.0.z - p.1.z, p.2.z - p.3.z) + let div = xdiff.cross(ydiff) + guard div != 0.0 else { break } + + let d = Vec2f( + Vec2f(p.0.x, p.0.z).cross(Vec2f(p.1.x, p.1.z)), + Vec2f(p.2.x, p.2.z).cross(Vec2f(p.3.x, p.3.z))) + let pos = Vec2f(d.cross(xdiff), d.cross(ydiff)) / div + + o = Vec3f(pos.x, 0.0, pos.y) + n = .up + */ + + //n = winding == .ccw ? .up : .down + o = verts.0.lerp(verts.3, 0.5).lerp( + verts.2.lerp(verts.1, 0.5), 0.5) + + /* + let xy = Vec2d(Double(position.x), Double(position.z)) + let a = xy.x - p.0.x + let b = p.1.x - p.0.x + let c = p.3.x - p.0.x + let d = p.0.x - p.1.x + p.2.x - p.3.x + let f = xy.y - p.0.y + let g = p.1.y - p.0.y + let h = p.3.y - p.0.y + let j = p.0.y - p.1.y + p.2.y - p.3.y + let v2 = -c * j - (-d * h) + let v1 = a * j - c * g - (d * f - b * h) + let v0 = a * g - b * f + let vq = (-v1 + sqrt(v1 * v1 - 4.0 * v2 * v0)) / (2.0 * v2) + let uq = (a - c * vq) / (b + d * vq) + let uv = Vec2d(uq, vq) + */ + + var colour = XnaColour.GreenYellow + +/* +p1 p2 + *------* + | | + | | + *------* +p0 p3 + */ + + let p = winding == .ccw ? (verts.3, verts.2, verts.1, verts.0) : (verts.0, verts.1, verts.2, verts.3) + let vn = ( + (verts.1 - verts.0).cross(verts.3 - verts.0), + (verts.2 - verts.1).cross(verts.0 - verts.1), + (verts.3 - verts.2).cross(verts.1 - verts.2), + (verts.0 - verts.3).cross(verts.2 - verts.3) + ) + n = (vn.0 + vn.1 + vn.2 + vn.3).normalised + + let uv = Self.quadSpaceFromCartesian(quad: p, position: position) + if uv.x >= 0.0 && uv.x <= 1.0 && uv.y >= 0.0 && uv.y <= 1.0 + //if uv.x >= -1.0 && uv.x <= 1.0 && uv.y >= -1.0 && uv.y <= 1.0 + { + var pp = p.0 + pp += (p.1 - p.0) * uv.x + pp += (p.3 - p.0) * uv.y + pp += (p.0 - p.1 + p.2 - p.3) * uv.x * uv.y + lines[i] = Line(from: o, to: pp, colour: XnaColour.Aquamarine) + i += 1 + colour = XnaColour.BurlyWood + o = pp + n = vn.0.lerp(vn.3, uv.x).lerp( + vn.2.lerp(vn.1, uv.x), winding == .cw ? uv.y : 1.0 - uv.y).normalised + } + + lines[i + 0] = Line(from: verts.0, to: verts.1, colour: colour) + lines[i + 1] = Line(from: verts.1, to: verts.2, colour: colour) + lines[i + 2] = Line(from: verts.2, to: verts.3, colour: colour) + lines[i + 3] = Line(from: verts.3, to: verts.0, colour: colour) + i += 4 + } + let p = position + let a = p.dot(n) - o.dot(n) + let pissy = p - n * a + + //let d = colin.position - edge.p + //let pissy = edge.p + d.cross(edge.n) + + /* + if a > -1.0 && a <= 0.0 + { + lines[i + 0] = Line(from: o, to: o + n * max(0, a), colour: XnaColour.Magenta) + lines[i + 1] = Line(from: pissy + .up, to: o, colour: XnaColour.Red) + i += 2 + } + */ + lines[i + 0] = Line(from: o, to: o + n * 0.2, colour: XnaColour.Magenta) + i += 1 + //lines[i + 4] = Line(from: pissy + Vec3f(-1, 0, 0) * 0.1, to: pissy + Vec3f(1, 0, 0) * 0.1, colour: XnaColour.Red) + //lines[i + 5] = Line(from: pissy + Vec3f( 0,-1, 0) * 0.1, to: pissy + Vec3f(0, 1, 0) * 0.1, colour: XnaColour.Red) + //lines[i + 6] = Line(from: pissy + Vec3f( 0, 0,-1) * 0.1, to: pissy + Vec3f(0, 0, 1) * 0.1, colour: XnaColour.Red) + + } + render.drawGizmos(lines: lines) + } +} diff --git a/Sources/Test/Objects/Actor.swift b/Sources/Test/Objects/Actor.swift new file mode 100644 index 0000000..8c7908c --- /dev/null +++ b/Sources/Test/Objects/Actor.swift @@ -0,0 +1,9 @@ +import JolkEngine + +protocol Actor +{ + func update(deltaTime: Float, world: Collision) + + var position: Vec3f { get } + var transform: Mat4f { get } +} diff --git a/Sources/Test/Objects/Colin.swift b/Sources/Test/Objects/Colin.swift new file mode 100644 index 0000000..e72c814 --- /dev/null +++ b/Sources/Test/Objects/Colin.swift @@ -0,0 +1,276 @@ +import SDL2 +import simd +import OpenGL.GL +import JolkEngine + + +class Colin: Actor +{ + var position: Vec3f { _pos } + + var transform: Mat4f + { + //.rotate(yaw: angle.x, pitch: angle.y, roll: sin(time)) * + //.scale(Vec3f(1.0 + 0.25 * cos(time), 1.0 + 0.25 * sin(time), 1.0)) * + .rotate(yawPitch: angle) * .translate(-position - Vec3f(0, 1, 0)) + } + + var angle: Vec2f { return Vec2f(ofsAngle.x + _angle, ofsAngle.y) } + var fov: Float { return _fov } + + private var time: Float = 0.0 + //private var jumpVel: Float = 0.0 + private var velocity: Vec3f = .zero + private var _pos: Vec3f = .zero + private var _pos2D: Vec2f { get { Vec2f(_pos.x, _pos.z) } set(new) { _pos.x = new.x; _pos.z = new.y } } + private var _angle: Float = 0.0 + private var ofsAngle: Vec2f = .zero + private var _fov: Float = 60.0 + + private var nutted = false + private var colinMode = false + private var backPressed = false + + private let colinWidth: Float = 0.2 + + private func move2D(new: Vec2f, edges: [Collision.Edge]) + { + let velocity = new - _pos2D + var lastPos = _pos2D + _pos2D = new + + var collided = -1 + jolk: while (collided != 0) + { + let scabidabadoo = 10 + for edge in edges + { + let diff = _pos2D - lastPos + if simd_dot(edge.n, diff) > 0 && simd_dot(edge.n, velocity) > 0 { continue } + + let deltaPos = _pos2D - edge.p + let something = deltaPos.cross(edge.n) + if abs(something) * 2.0 < edge.w + { + let dot = simd_dot(edge.n, deltaPos) + if dot > 0 && dot < colinWidth + { + lastPos = _pos2D + _pos2D += edge.n * (colinWidth - dot) + if collided < 0 { collided = scabidabadoo }; + } + } + else + { + let vec = (deltaPos - Vec2f(edge.n.y, -edge.n.x) * Float(signOf: something, magnitudeOf: edge.w * 0.5)) + let distance2 = vec.len2 + let epsilon: Float = 0.001 + if distance2 < (colinWidth - epsilon) * (colinWidth - epsilon) + { + let distance = distance2.squareRoot() + lastPos = _pos2D + _pos2D += (vec / distance) * (colinWidth - epsilon - distance) + if collided < 0 { collided = scabidabadoo }; + } + } + } + collided -= 1; + if collided <= 0 { break jolk } + } + } + + private func response3D(plainPos o: Vec3f, plainNorm n: Vec3f) + { + let height: Float = 1.12 + //let diff = _pos - lastPos + + //let p = n.y > 1.0 ? _pos : (_pos + 2.0) + let ofs: Vec3f = n.y.sign == .plus ? .zero : .up * height + //let p = if n.y.sign == .plus { _pos } else { _pos + 1.0 } + let p = _pos + ofs + let a = p.dot(n) - o.dot(n) + + if a > height * -0.5 && a < 0.0 + { + _pos -= n * a + velocity -= velocity.project(n) + } + } + + private func move3D(_ deltaTime: Float, world: Collision) + { + var lastPos = _pos + _pos += velocity * deltaTime + + for edge in world.edge3d + { + switch edge + { + case .aabbFloor(let normal, let origin, let width, let depth): + //let left = min(edge.v0.x, edge.v1.x, edge.v2.x) + //let right = max(edge.v0.x, edge.v1.x, edge.v2.x) + //let back = min(edge.v0.z, edge.v1.z, edge.v2.z) + //let forward = max(edge.v0.z, edge.v1.z, edge.v2.z) + + let left = origin.x - width, right = origin.x + width + let back = origin.z - depth, forward = origin.z + depth + + if _pos.x < left || _pos.x > right { continue } + if _pos.z < back || _pos.z > forward { continue } + + response3D(plainPos: origin, plainNorm: normal) + + case .triangle(let normal, let origin, let verts): + let p = (verts.1 - verts.0, verts.2 - verts.0, _pos - verts.0) + let invDenom = 1.0 / (p.0.x * p.1.z - p.1.x * p.0.z); + let v = invDenom * (p.2.x * p.1.z - p.1.x * p.2.z); + let w = invDenom * (p.0.x * p.2.z - p.2.x * p.0.z); + let x = 1.0 - v - w + //guard v >= 0.0 && w >= 0.0 && v + w <= 1.0 else { break } + guard v >= 0.0 && w >= 0.0 && 0 <= x && x <= 1.0 else { break } + response3D(plainPos: origin, plainNorm: normal) + + case .quad(let verts, let winding): + let vn = ( + (verts.1 - verts.0).cross(verts.3 - verts.0), + (verts.2 - verts.1).cross(verts.0 - verts.1), + (verts.3 - verts.2).cross(verts.1 - verts.2), + (verts.0 - verts.3).cross(verts.2 - verts.3) + ) + + let uv = Collision.quadSpaceFromCartesian(quad: + winding == .ccw ? (verts.3, verts.2, verts.1, verts.0) : (verts.0, verts.1, verts.2, verts.3) + , position: _pos) + if uv.x >= 0.0 && uv.x <= 1.0 && uv.y >= 0.0 && uv.y <= 1.0 + { + //var pp = p.0 + //pp += (p.1 - p.0) * uv.x + //pp += (p.3 - p.0) * uv.y + //pp += (p.0 - p.1 + p.2 - p.3) * uv.x * uv.y + let p = verts.0.lerp(verts.1, uv.x).lerp( + verts.3.lerp(verts.2, uv.x), winding == .cw ? uv.y : 1.0 - uv.y) + let n = vn.0.lerp(vn.3, uv.x).lerp( + vn.2.lerp(vn.1, uv.x), winding == .cw ? uv.y : 1.0 - uv.y).normalised + + response3D(plainPos: Vec3f(_pos.x, p.y, _pos.z), plainNorm: n) + } + /* + let p = ( + verts.0 + (verts.1 - verts.0) * _pos.x, + verts.3 + (verts.2 - verts.3) * _pos.x, + verts.0 + (verts.3 - verts.0) * _pos.z, + verts.1 + (verts.2 - verts.1) * _pos.z) + + let xdiff = Vec2f(p.0.x - p.1.x, p.2.x - p.3.x) + let ydiff = Vec2f(p.0.z - p.1.z, p.2.z - p.3.z) + let div = xdiff.cross(ydiff) + guard div != 0.0 else { break } + + let d = Vec2f( + Vec2f(p.0.x, p.0.z).cross(Vec2f(p.1.x, p.1.z)), + Vec2f(p.2.x, p.2.z).cross(Vec2f(p.3.x, p.3.z))) + let pos = Vec2f(d.cross(xdiff), d.cross(ydiff)) / div + */ + default: break + } + } + } + + func update(deltaTime: Float, world: Collision) + { + time += deltaTime + + let axisRescale = 1.0 / Float(INT16_MAX) + let getAxis = { (axis: SDL_GameControllerAxis) in + Float(SDL_GameControllerGetAxis(sdlPad, axis)) * axisRescale } + let getButton = { (btn: SDL_GameControllerButton) in + SDL_GameControllerGetButton(sdlPad, btn) == SDL_PRESSED } + + let stick = Vec2f( + getAxis(SDL_CONTROLLER_AXIS_LEFTX), + getAxis(SDL_CONTROLLER_AXIS_LEFTY)) + .cardinalDeadzone(min: 0.1, max: 1) + + let turnSpeed = Float.pi * 2 * 0.1 + if Input.instance.keyDown(.left) + { + _angle -= turnSpeed * deltaTime + } + if Input.instance.keyDown(.right) + { + _angle += turnSpeed * deltaTime + } + if stick != .zero + { + _angle += stick.x * 2.0 * turnSpeed * deltaTime + } + + var moveVec: Vec2f = .zero + + let speed: Float = 2 + let forward = Vec2f(sin(self._angle), -cos(self._angle)) + if Input.instance.keyDown(.up) + { + moveVec += forward * speed + } + if Input.instance.keyDown(.down) + { + moveVec -= forward * speed + } + if stick != .zero + { + moveVec -= forward * stick.y * speed + } + + if Input.instance.keyDown(.c) + { + colinMode = !colinMode + } + + let lookCone = Float.pi / 2.0 + let dst = Vec2f( + getAxis(SDL_CONTROLLER_AXIS_RIGHTX), + getAxis(SDL_CONTROLLER_AXIS_RIGHTY)) + .radialDeadzone(min: 0.1, max: 1) * lookCone + ofsAngle = ofsAngle.lerp(dst, 16 * deltaTime) + + let targetFov = Float.lerp(60, 20, getAxis(SDL_CONTROLLER_AXIS_TRIGGERRIGHT)) + _fov = Float.lerp(_fov, targetFov, 20 * deltaTime) + + let right = Vec2f(cos(self._angle), sin(self._angle)) + if getButton(SDL_CONTROLLER_BUTTON_LEFTSHOULDER) + { + moveVec -= right * speed + } + if getButton(SDL_CONTROLLER_BUTTON_RIGHTSHOULDER) + { + moveVec += right * speed + } + + let back = getButton(SDL_CONTROLLER_BUTTON_BACK) + if !backPressed && back { colinMode = !colinMode } + backPressed = back + + if getButton(SDL_CONTROLLER_BUTTON_A) || Input.instance.keyDown(.n) + { + // play nut.wav + nutted = true + } + else { nutted = false } + + //move2D(new: _pos2D + velocity, edges: edges) + + if Input.instance.keyDown(.z) || getButton(SDL_CONTROLLER_BUTTON_B) { velocity.y = 2.0 } + //_pos.y += jumpVel * deltaTime + //if _pos.y > 0.0 { jumpVel -= 5.4 * deltaTime } + velocity.y -= 5.4 * deltaTime + velocity.x = moveVec.x + velocity.z = moveVec.y + move3D(deltaTime, world: world) + //else if _pos.y < 0.0 + //{ + // jumpVel = max(jumpVel, 0.0) + // _pos.y = 0.0 + //} + } +} diff --git a/Sources/Test/Objects/JolkCube.swift b/Sources/Test/Objects/JolkCube.swift new file mode 100644 index 0000000..28827bc --- /dev/null +++ b/Sources/Test/Objects/JolkCube.swift @@ -0,0 +1,33 @@ +import Foundation +import simd +import JolkEngine + + +class JolkCube: Actor +{ + private var _pos: Vec3f + private var theta: Float = 0.0 + + init(position: Vec3f) + { + _pos = position + } + + var position: Vec3f { _pos } + + func update(deltaTime: Float, world: Collision) + { + theta += 15 * deltaTime + _pos.y = 1 + sin(theta * 0.25) * 0.25 + } + + var transform: Mat4f + { + .translate(_pos) * + .rotate(x: theta * 0.25) * + .rotate(y: Float.rad(fromDeg: theta)) * + // .rotate(axis: .X, angle: theta * 0.25) * + // .rotate(axis: .Y, angle: Float.rad(fromDeg: theta)) * + .scale(scalar: 0.25) + } +} diff --git a/Sources/Test/Resources/Models/World.mtl b/Sources/Test/Resources/Models/World.mtl new file mode 100644 index 0000000..244a06f --- /dev/null +++ b/Sources/Test/Resources/Models/World.mtl @@ -0,0 +1,33 @@ +# Blender 3.6.2 MTL File: 'World.blend' +# www.blender.org + +newmtl Cobblestone +Ns 437.449280 +Ka 1.000000 1.000000 1.000000 +Ke 0.000000 0.000000 0.000000 +Ni 1.450000 +d 1.000000 +illum 1 +map_Kd cobblestone.png +map_Ks cobblestone_specular.png +map_Bump -bm 1.000000 cobblestone_normal.png + +newmtl Material +Ns 167.965591 +Ka 1.000000 1.000000 1.000000 +Kd 0.089179 0.800000 0.000000 +Ks 0.483607 0.483607 0.483607 +Ke 0.000000 0.000000 0.000000 +Ni 1.450000 +d 1.000000 +illum 2 + +newmtl MetalWall +Ns 55.588612 +Ka 0.390244 0.390244 0.390244 +Ks 0.573171 0.573171 0.573171 +Ke 0.000000 0.000000 0.000000 +Ni 9.650000 +d 1.000000 +illum 3 +map_Kd metalwall1.jpg diff --git a/Sources/Test/Resources/Models/World.obj b/Sources/Test/Resources/Models/World.obj new file mode 100644 index 0000000..9252aa9 --- /dev/null +++ b/Sources/Test/Resources/Models/World.obj @@ -0,0 +1,13583 @@ +# Blender 3.6.2 +# www.blender.org +mtllib World.mtl +o Courtyard +v 24.000000 0.000000 -22.000000 +v 22.000000 0.000000 -24.000000 +v 22.000000 0.000000 -22.000000 +v 11.999763 0.000000 -12.000000 +v -6.000000 0.000000 5.500000 +v -24.000000 0.000000 -5.999996 +v -5.500000 0.000000 -6.000000 +v -6.000000 0.000000 -5.500000 +v -22.000000 0.000000 -22.000000 +v -22.000000 0.000000 -5.999999 +v -24.000000 0.000000 -22.000000 +v -22.000000 0.000000 -24.000000 +v -7.000000 0.000000 -12.000000 +v -22.000000 0.000000 -12.000000 +v -7.000000 0.000000 -22.000000 +v -24.000000 0.000000 -11.993101 +v 5.500000 0.000000 6.000000 +v 5.500000 0.000000 24.000000 +v 6.000000 0.000000 5.500000 +v 22.000000 0.000000 22.000000 +v 24.000000 0.000000 22.000000 +v 22.000000 0.000000 24.000000 +v 5.500000 0.000000 22.000000 +v 11.999512 0.000000 22.000000 +v 22.000000 0.000000 5.999999 +v 24.000000 0.000000 5.999996 +v 12.000000 0.000000 24.000000 +v 12.000000 0.000000 5.999999 +v -5.500000 0.000000 6.000000 +v -22.000000 0.000000 22.000000 +v -24.000000 0.000000 22.000000 +v -22.000000 0.000000 24.000000 +v -5.500000 0.000000 22.000000 +v -22.000000 0.000000 5.999999 +v -24.000000 0.000000 5.999996 +v -6.999448 0.000000 -24.000000 +v -5.500000 0.000000 24.000000 +vn -0.0000 1.0000 -0.0000 +vt 11.500001 11.500001 +vt 12.500001 11.500001 +vt 11.500001 12.500001 +vt -2.999724 12.500000 +vt -3.001188 11.500000 +vt -10.500000 11.500000 +vt -10.500000 12.500000 +vt -11.500000 11.500000 +vt -3.000000 6.500000 +vt 6.499882 6.499098 +vt -2.500000 -2.250000 +vt -2.500000 3.250000 +vt -10.500000 3.500000 +vt -10.500000 -2.499999 +vt -11.500000 6.496551 +vt -10.500000 6.497290 +vt -11.500000 3.499998 +vt 11.500000 -10.500000 +vt 11.500000 -11.500000 +vt 12.500000 -10.500000 +vt 3.250000 -2.500000 +vt 3.249529 -10.500000 +vt 6.499756 -10.500000 +vt 6.500000 -2.499999 +vt 11.500000 -2.499999 +vt 12.500000 -2.499998 +vt -10.500000 -10.500000 +vt -11.500000 -10.500000 +vt -10.500000 -11.500000 +vt -2.250000 3.500000 +vt -11.500000 -2.499998 +vt -2.249835 -11.500000 +vt -2.249717 -10.500000 +vt -2.250000 -2.500000 +vt 3.500000 -2.250000 +vt 6.499723 -11.500000 +vt 3.249410 -11.500000 +s 0 +usemtl Cobblestone +f 3/1/1 1/2/1 2/3/1 +f 2/3/1 36/4/1 15/5/1 3/1/1 +f 9/6/1 12/7/1 11/8/1 +f 13/9/1 4/10/1 3/1/1 15/5/1 +f 5/11/1 8/12/1 10/13/1 34/14/1 +f 11/8/1 16/15/1 14/16/1 9/6/1 +f 16/15/1 6/17/1 10/13/1 14/16/1 +f 20/18/1 22/19/1 21/20/1 +f 17/21/1 23/22/1 24/23/1 28/24/1 +f 28/24/1 24/23/1 20/18/1 25/25/1 +f 26/26/1 1/2/1 3/1/1 25/25/1 +f 21/20/1 26/26/1 25/25/1 20/18/1 +f 30/27/1 31/28/1 32/29/1 +f 7/30/1 13/9/1 8/12/1 +f 35/31/1 34/14/1 10/13/1 6/17/1 +f 31/28/1 30/27/1 34/14/1 35/31/1 +f 37/32/1 33/33/1 30/27/1 32/29/1 +f 17/21/1 29/34/1 33/33/1 23/22/1 +f 29/34/1 5/11/1 34/14/1 +f 17/21/1 28/24/1 19/35/1 +f 3/1/1 4/10/1 28/24/1 25/25/1 +f 15/5/1 36/4/1 12/7/1 9/6/1 +f 24/23/1 27/36/1 22/19/1 20/18/1 +f 23/22/1 18/37/1 27/36/1 24/23/1 +f 13/9/1 14/16/1 10/13/1 8/12/1 +f 18/37/1 23/22/1 33/33/1 37/32/1 +f 34/14/1 30/27/1 33/33/1 29/34/1 +o BuildingInterior +v 6.000000 0.000000 -1.000000 +v 1.000000 0.000000 -1.000000 +v 1.000000 0.000000 -6.000000 +v 1.000000 1.750000 -1.000000 +v 0.750000 2.000000 -0.750000 +v 6.000000 2.000000 -0.750000 +v 6.000000 1.750000 -1.000000 +v 1.000000 1.750000 -6.000000 +v 0.750000 2.000000 -6.000000 +v 1.000000 0.000000 1.000000 +v -1.000000 0.000000 -1.000000 +v -1.000000 0.000000 -6.000000 +v -1.000000 1.750000 -1.000000 +v -0.750000 2.000000 -6.000000 +v -1.000000 1.750000 -6.000000 +v -6.000000 1.750000 -1.000000 +v -6.000000 0.000000 1.000000 +v -1.000000 0.000000 1.000000 +v -1.000000 0.000000 6.000000 +v -1.000000 1.749999 1.000000 +v -6.000000 2.000000 0.750000 +v -6.000000 1.750000 1.000000 +v -1.000000 1.750000 6.000000 +v -0.750000 2.000000 6.000000 +v -6.000000 0.000000 -0.999999 +v -6.000000 2.000000 -0.749999 +v 1.000000 0.000000 6.000000 +v 6.000000 0.000000 1.000000 +v 1.000000 1.749999 1.000000 +v 0.750000 1.999999 0.750000 +v 0.750000 2.000000 6.000000 +v 1.000000 1.750000 6.000000 +v 6.000000 1.750000 1.000000 +v 6.000000 2.000000 0.750000 +v -0.750000 1.999999 0.750000 +v -0.750000 1.999999 -0.750000 +vn -0.0000 -1.0000 -0.0000 +vn -0.0000 1.0000 -0.0000 +vn -0.0000 -0.0000 1.0000 +vn -1.0000 -0.0000 -0.0000 +vn -0.7071 -0.7071 -0.0000 +vn -0.0000 -0.7071 0.7071 +vn 1.0000 -0.0000 -0.0000 +vn 0.7071 -0.7071 -0.0000 +vn -0.0000 -0.0000 -1.0000 +vn -0.0000 -0.7071 -0.7071 +vn -0.9877 -0.1563 -0.0000 +vt 0.125000 0.875000 +vt 0.125000 3.500000 +vt 0.875000 3.500000 +vt 0.875000 0.875000 +vt 3.500000 0.000000 +vt 3.500000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 3.500000 +vt 0.000000 1.000000 +vt 1.000000 3.500000 +vt 0.000000 0.000000 +vt 2.500000 0.000000 +vt 2.500000 0.875000 +vt 0.000000 0.875000 +vt -0.500000 0.000000 +vt 2.000000 0.000000 +vt 2.000000 0.875000 +vt -0.500000 0.875000 +vt 3.500000 1.375000 +vt 1.000000 1.375000 +vt 0.875000 1.500000 +vt 3.500000 1.500000 +vt 3.500000 0.875000 +vt -2.500000 1.000000 +vt 0.000000 1.000000 +vt -2.500000 0.875000 +vt -2.500000 1.000000 +vt -2.500000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 -2.500000 +vt 0.000000 -2.500000 +vt 0.125000 0.125000 +vt 0.125000 -2.500000 +vt -2.500000 0.125000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 3.500000 0.125000 +vt 0.875000 0.125000 +vt 1.000000 0.000000 +vt -2.500000 1.500000 +vt 0.125000 1.500000 +vt 0.000000 1.375000 +vt -2.500000 1.375000 +vt 0.875000 -2.500000 +vt 0.500000 -1.500000 +vt 0.500000 0.500000 +vt -0.125000 0.500000 +vt 2.500000 0.500000 +s 0 +usemtl Cobblestone +f 73/38/2 51/39/2 46/40/2 42/41/2 +f 65/42/3 38/43/3 39/44/3 47/45/3 +f 49/46/3 48/47/3 39/44/3 40/48/3 +f 39/49/4 38/50/4 44/51/4 41/52/4 +f 40/53/5 39/54/5 41/55/5 45/56/5 +f 45/57/6 41/58/6 42/59/6 46/60/6 +f 43/61/7 42/41/7 41/44/7 44/43/7 +f 48/49/8 49/50/8 52/51/8 50/52/8 +f 62/53/4 48/54/4 50/55/4 53/56/4 +f 53/62/7 50/63/7 73/38/7 63/64/7 +f 51/39/9 73/38/9 50/63/9 52/46/9 +f 62/65/3 54/66/3 55/67/3 48/47/3 +f 64/68/3 47/45/3 55/67/3 56/69/3 +f 55/49/10 54/50/10 59/51/10 57/52/10 +f 56/53/8 55/54/8 57/55/8 60/56/8 +f 60/69/9 57/67/9 72/70/9 61/71/9 +f 58/72/11 72/70/11 57/67/11 59/66/11 +f 55/49/3 47/73/3 39/74/3 48/47/3 +f 58/72/2 63/64/2 73/38/2 72/70/2 +f 42/41/2 43/61/2 71/75/2 67/76/2 +f 47/49/5 64/50/5 69/51/5 66/52/5 +f 65/53/10 47/54/10 66/55/10 70/56/10 +f 70/42/11 66/77/11 67/76/11 71/75/11 +f 68/78/6 67/79/6 66/80/6 69/81/6 +f 68/82/2 61/71/2 72/70/2 67/76/2 +f 72/70/2 73/38/2 42/41/2 67/76/2 +f 51/83/12 73/84/12 72/85/12 61/86/12 +o Convex +v 0.000000 0.000000 -16.000000 +v -1.000000 0.000000 -15.732050 +v -1.732051 0.000000 -15.000000 +v -2.000000 0.000000 -14.000000 +v -1.732051 0.000000 -13.000000 +v -1.000000 0.000000 -12.267950 +v 0.000000 0.000000 -12.000000 +v 1.000000 0.000000 -12.267950 +v 1.732051 0.000000 -13.000000 +v 2.000000 0.000000 -14.000000 +v 1.732051 0.000000 -15.000000 +v 1.000000 0.000000 -15.732050 +v 0.000000 0.375000 -16.000000 +v -1.000000 0.375000 -15.732050 +v -1.732051 0.375000 -15.000000 +v -2.000000 0.375000 -14.000000 +v -1.732051 0.375000 -13.000000 +v -1.000000 0.375000 -12.267950 +v 0.000000 0.375000 -12.000000 +v 1.000000 0.375000 -12.267950 +v 1.732051 0.375000 -13.000000 +v 2.000000 0.375000 -14.000000 +v 1.732051 0.375000 -15.000000 +v 1.000000 0.375000 -15.732050 +v 0.000000 0.500000 -15.898438 +v -0.949219 0.500000 -15.644094 +v -1.644095 0.500000 -14.949219 +v -1.898438 0.500000 -14.000000 +v -1.644095 0.500000 -13.050781 +v -0.949219 0.500000 -12.355906 +v 0.000000 0.500000 -12.101562 +v 0.949219 0.500000 -12.355906 +v 1.644095 0.500000 -13.050781 +v 1.898438 0.500000 -14.000000 +v 1.644095 0.500000 -14.949219 +v 0.949219 0.500000 -15.644094 +vn -0.8660 -0.0000 -0.5000 +vn -1.0000 -0.0000 -0.0000 +vn -0.9480 0.3184 -0.0000 +vn -0.8210 0.3184 -0.4740 +vn 1.0000 -0.0000 -0.0000 +vn 0.8660 -0.0000 -0.5000 +vn 0.8210 0.3184 -0.4740 +vn 0.9480 0.3184 -0.0000 +vn -0.0000 -0.0000 1.0000 +vn 0.5000 -0.0000 0.8660 +vn 0.4740 0.3184 0.8210 +vn -0.0000 0.3184 0.9480 +vn -0.8660 -0.0000 0.5000 +vn -0.8210 0.3184 0.4740 +vn 0.5000 -0.0000 -0.8660 +vn 0.4740 0.3184 -0.8210 +vn -0.0000 -0.0000 -1.0000 +vn -0.5000 -0.0000 -0.8660 +vn -0.4740 0.3184 -0.8210 +vn -0.0000 0.3184 -0.9480 +vn 0.8660 -0.0000 0.5000 +vn 0.8210 0.3184 0.4740 +vn -0.5000 -0.0000 0.8660 +vn -0.4740 0.3184 0.8210 +vn 0.2423 0.8748 -0.4196 +vn 0.4196 0.8748 -0.2423 +vn -0.2423 0.8748 -0.4196 +vn -0.0000 0.8748 -0.4845 +vn 0.4196 0.8748 0.2423 +vn 0.2423 0.8748 0.4196 +vn -0.2423 0.8748 0.4196 +vn -0.4196 0.8748 0.2423 +vn -0.4196 0.8748 -0.2423 +vn 0.4845 0.8748 -0.0000 +vn -0.0000 0.8748 0.4845 +vn -0.4845 0.8748 -0.0000 +vn -0.0000 1.0000 -0.0000 +vt 0.333333 0.000000 +vt 0.500000 0.000000 +vt 0.500000 0.187500 +vt 0.333333 0.187500 +vt 1.500000 0.000000 +vt 1.666667 0.000000 +vt 1.666667 0.187500 +vt 1.500000 0.187500 +vt 1.000000 0.000000 +vt 1.166667 0.000000 +vt 1.166667 0.187500 +vt 1.000000 0.187500 +vt 0.666667 0.000000 +vt 0.666667 0.187500 +vt 1.833333 0.000000 +vt 1.833333 0.187500 +vt 0.000000 0.000000 +vt 0.166667 0.000000 +vt 0.166667 0.187500 +vt 0.000000 0.187500 +vt 1.333333 0.000000 +vt 1.333333 0.187500 +vt 0.833333 0.000000 +vt 0.833333 0.187500 +vt 2.000000 0.000000 +vt 2.000000 0.187500 +vt 1.833333 0.250000 +vt 1.666667 0.250000 +vt 0.166667 0.250000 +vt 0.000000 0.250000 +vt 1.333333 0.250000 +vt 1.166667 0.250000 +vt 0.833333 0.250000 +vt 0.666667 0.250000 +vt 2.000000 0.250000 +vt 0.333333 0.250000 +vt 1.500000 0.250000 +vt 1.000000 0.250000 +vt 0.500000 0.250000 +vt 1.041266 0.812500 +vt 0.812500 1.041266 +vt 0.500000 1.125000 +vt 0.187500 1.041266 +vt -0.041266 0.812500 +vt -0.125000 0.500000 +vt -0.041266 0.187500 +vt 0.187500 -0.041266 +vt 0.500000 -0.125000 +vt 0.812500 -0.041266 +vt 1.041266 0.187500 +vt 1.125000 0.500000 +s 1 +usemtl Cobblestone +f 76/87/13 77/88/14 89/89/15 88/90/16 +f 83/91/17 84/92/18 96/93/19 95/94/20 +f 80/95/21 81/96/22 93/97/23 92/98/24 +f 77/88/14 78/99/25 90/100/26 89/89/15 +f 84/92/18 85/101/27 97/102/28 96/93/19 +f 74/103/29 75/104/30 87/105/31 86/106/32 +f 81/96/22 82/107/33 94/108/34 93/97/23 +f 78/99/25 79/109/35 91/110/36 90/100/26 +f 85/101/27 74/111/29 86/112/32 97/102/28 +f 75/104/30 76/87/13 88/90/16 87/105/31 +f 82/107/33 83/91/17 95/94/20 94/108/34 +f 79/109/35 80/95/21 92/98/24 91/110/36 +f 96/93/19 97/102/28 109/113/37 108/114/38 +f 86/106/32 87/105/31 99/115/39 98/116/40 +f 93/97/23 94/108/34 106/117/41 105/118/42 +f 90/100/26 91/110/36 103/119/43 102/120/44 +f 97/102/28 86/112/32 98/121/40 109/113/37 +f 87/105/31 88/90/16 100/122/45 99/115/39 +f 94/108/34 95/94/20 107/123/46 106/117/41 +f 91/110/36 92/98/24 104/124/47 103/119/43 +f 88/90/16 89/89/15 101/125/48 100/122/45 +f 95/94/20 96/93/19 108/114/38 107/123/46 +f 92/98/24 93/97/23 105/118/42 104/124/47 +f 89/89/15 90/100/26 102/120/44 101/125/48 +s 0 +f 99/126/49 100/127/49 101/128/49 102/129/49 103/130/49 104/131/49 105/132/49 106/133/49 107/134/49 108/135/49 109/136/49 98/137/49 +o WedgeConvex +v 15.000000 0.000000 19.000000 +v 15.000000 0.000000 15.000000 +v 11.000000 0.000000 15.000000 +v 15.000000 2.000000 19.000000 +v 15.000000 4.000000 15.000000 +v 11.000000 2.000000 15.000000 +vn -0.0000 -0.0000 -1.0000 +vn 1.0000 -0.0000 -0.0000 +vn -0.7071 -0.0000 0.7071 +vn -0.4082 0.8165 0.4082 +vt 6.000000 0.000000 +vt 6.000000 1.000000 +vt 4.000000 2.000000 +vt 4.000000 0.000000 +vt 2.000000 1.000000 +vt 2.000000 0.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 2.000000 2.000000 +vt 0.000000 -0.000000 +vt 2.000000 -0.000000 +s 0 +usemtl Cobblestone +f 112/138/50 115/139/50 114/140/50 111/141/50 +f 111/141/51 114/140/51 113/142/51 110/143/51 +f 110/143/52 113/142/52 115/144/52 112/145/52 +f 115/146/53 113/147/53 114/148/53 +o Concave +v -20.000000 0.000000 7.000000 +v -19.884712 0.000000 8.170542 +v -19.543278 0.000000 9.296101 +v -18.988817 0.000000 10.333422 +v -18.242641 0.000000 11.242640 +v -17.333422 0.000000 11.988817 +v -16.296101 0.000000 12.543277 +v -15.170542 0.000000 12.884711 +v -14.000000 0.000000 13.000000 +v -20.000000 3.000000 13.000000 +v -14.000000 3.000000 13.000000 +v -15.170542 3.000000 12.884711 +v -16.296101 3.000000 12.543277 +v -17.333422 3.000000 11.988817 +v -18.242641 3.000000 11.242640 +v -18.988817 3.000000 10.333422 +v -19.543278 3.000000 9.296101 +v -19.884712 3.000000 8.170542 +v -20.000000 3.000000 7.000000 +v -20.000000 0.000000 13.000000 +v -20.000000 3.000000 13.000000 +v -20.000000 3.000000 13.000000 +v -20.000000 0.000000 13.000000 +v -14.000000 0.000000 13.000000 +v -14.000000 3.000000 13.000000 +v -14.000000 3.000000 13.000000 +v -20.000000 3.000000 7.000000 +v -20.000000 3.000000 7.000000 +v -20.000000 0.000000 7.000000 +v -15.170542 3.000000 12.884711 +v -16.296101 3.000000 12.543277 +v -17.333422 3.000000 11.988817 +v -18.242641 3.000000 11.242640 +v -18.988817 3.000000 10.333422 +v -19.543278 3.000000 9.296101 +v -19.884712 3.000000 8.170542 +vn 0.9952 -0.0000 -0.0980 +vn 0.9808 -0.0000 -0.1951 +vn 0.1951 -0.0000 -0.9808 +vn 0.0980 -0.0000 -0.9952 +vn 0.7071 -0.0000 -0.7071 +vn 0.5556 -0.0000 -0.8315 +vn -0.0000 -0.0000 1.0000 +vn 0.9239 -0.0000 -0.3827 +vn -1.0000 -0.0000 -0.0000 +vn 0.3827 -0.0000 -0.9239 +vn 0.8315 -0.0000 -0.5556 +vn -0.0000 1.0000 -0.0000 +vt 4.682168 1.500000 +vt 4.682168 0.000000 +vt 4.096897 0.000000 +vt 4.096898 1.500000 +vt 0.585271 1.500000 +vt 0.585271 0.000000 +vt 0.000000 0.000000 +vt 0.000000 1.500000 +vt 2.341084 1.500000 +vt 2.341084 0.000000 +vt 1.755813 0.000000 +vt 1.755813 1.500000 +vt 0.000000 0.000000 +vt 3.000000 0.000000 +vt 3.000000 1.500000 +vt 0.000000 1.500000 +vt 3.511626 0.000000 +vt 3.511626 1.500000 +vt 1.170542 0.000000 +vt 1.170542 1.500000 +vt 2.926355 0.000000 +vt 2.926355 1.500000 +vt 0.000000 3.000000 +vt 2.414729 0.057644 +vt 1.851950 0.228362 +vt 1.333289 0.505591 +vt 0.878680 0.878680 +vt 0.505591 1.333289 +vt 0.228362 1.851950 +vt 0.057644 2.414729 +s 1 +usemtl Cobblestone +f 144/149/54 142/150/54 151/151/55 117/152/55 +f 123/153/56 145/154/56 140/155/57 139/156/57 +f 120/157/58 148/158/58 147/159/59 121/160/59 +f 138/161/60 124/162/60 141/163/60 136/164/60 +f 117/152/55 151/151/55 150/165/61 118/166/61 +f 135/161/62 137/164/62 143/163/62 116/162/62 +f 121/160/59 147/159/59 146/167/63 122/168/63 +f 118/166/61 150/165/61 149/169/64 119/170/64 +f 122/168/63 146/167/63 145/154/56 123/153/56 +f 119/170/64 149/169/64 148/158/58 120/157/58 +f 134/171/65 125/161/65 126/162/65 127/172/65 128/173/65 129/174/65 130/175/65 131/176/65 132/177/65 133/178/65 +o WedgeConcave +v 14.500000 0.000000 -10.500000 +v 17.500000 0.000000 -10.500000 +v 14.500000 0.000000 -11.500000 +v 17.500000 0.000000 -11.500000 +v 14.500000 2.000000 -10.500000 +v 17.500000 2.000000 -10.500000 +v 14.500000 2.000000 -11.500000 +v 17.500000 2.000000 -11.500000 +v 17.125000 0.000000 -11.000000 +v 14.500000 1.000000 -10.500000 +v 14.500000 1.000000 -11.500000 +v 17.125000 1.000000 -11.000000 +vn 1.0000 -0.0000 -0.0000 +vn -0.1871 -0.0000 0.9823 +vn -0.0000 -0.0000 -1.0000 +vn -0.0000 -0.0000 1.0000 +vn -0.3560 -0.9345 -0.0000 +vn -0.1871 -0.0000 -0.9823 +vn -0.0000 1.0000 -0.0000 +vt 1.000000 0.000000 +vt 1.000000 2.000000 +vt 0.000000 2.000000 +vt 0.000000 0.000000 +vt 2.625000 1.000000 +vt 0.000000 2.000000 +vt 0.000000 1.000000 +vt 3.000000 2.000000 +vt 3.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 0.500000 -1.625000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt -1.625000 1.000000 +vt -1.625000 0.000000 +vt 0.000000 0.000000 +vt 2.625000 0.000000 +vt 1.000000 2.000000 +vt 3.000000 1.000000 +s 0 +usemtl Cobblestone +f 155/179/66 159/180/66 157/181/66 153/182/66 +f 163/183/67 158/184/67 162/185/67 +f 162/185/68 158/184/68 159/186/68 155/187/68 +f 153/187/69 157/186/69 156/184/69 161/185/69 +f 156/188/70 158/189/70 163/190/70 +f 152/191/71 161/192/71 163/193/71 160/194/71 +f 153/187/69 161/185/69 152/195/69 +f 154/195/68 162/185/68 155/187/68 +f 160/196/67 163/183/67 162/185/67 154/195/67 +f 161/192/71 156/197/71 163/193/71 +f 156/195/72 157/187/72 159/198/72 158/185/72 +o Collision3D +v 5.500000 0.000000 -6.000000 +v 1.000000 0.000000 -6.000000 +v 6.000000 0.000000 -1.000000 +v 1.000000 0.000000 -1.000000 +v 6.000000 0.000000 -5.500000 +v 24.000000 0.000000 -22.000000 +v 22.000000 0.000000 -24.000000 +v 0.000000 0.000000 -16.000000 +v 0.000000 0.000000 -12.000000 +v 1.000000 0.000000 -12.267949 +v 1.732051 0.000000 -13.000000 +v 2.000000 0.000000 -14.000000 +v 1.732051 0.000000 -15.000000 +v 1.000000 0.000000 -15.732051 +v -5.500000 0.000000 -6.000000 +v -1.000000 0.000000 -6.000000 +v -6.000000 0.000000 -1.000000 +v -1.000000 0.000000 -1.000000 +v -6.000000 0.000000 -5.500000 +v -24.000000 0.000000 22.000000 +v -24.000000 0.000000 -22.000000 +v -1.000000 0.000000 -12.267949 +v -1.732051 0.000000 -13.000000 +v -2.000000 0.000000 -14.000000 +v -1.732051 0.000000 -15.000000 +v -1.000000 0.000000 -15.732051 +v 5.500000 0.000000 6.000000 +v 1.000000 0.000000 6.000000 +v 6.000000 0.000000 1.000000 +v 1.000000 0.000000 1.000000 +v 6.000000 0.000000 5.500000 +v 24.000000 0.000000 22.000000 +v 22.000000 0.000000 24.000000 +v -5.500000 0.000000 6.000000 +v -1.000000 0.000000 6.000000 +v -6.000000 0.000000 1.000000 +v -1.000000 0.000000 1.000000 +v -6.000000 0.000000 5.500000 +v -22.000000 0.000000 24.000000 +v 5.500000 1.500000 -6.000000 +v 15.000000 0.000000 19.000000 +v 11.000000 0.000000 15.000000 +v 15.000000 0.000000 15.000000 +v 1.000000 1.750000 -6.000000 +v 6.000000 1.750000 -1.000000 +v 1.000000 1.750000 -1.000000 +v 6.000000 1.500000 -5.500000 +v 24.000000 2.000000 -22.000000 +v -22.000000 2.000000 -24.000000 +v 0.000000 0.500000 -15.900000 +v 0.000000 0.500000 -12.100000 +v 0.950000 0.500000 -12.354551 +v 1.645448 0.500000 -13.050000 +v 1.900000 0.500000 -14.000000 +v 1.645448 0.500000 -14.950000 +v 0.950000 0.500000 -15.645449 +v -5.500000 4.000000 -6.000000 +v -1.000000 1.750000 -6.000000 +v -6.000000 1.750000 -1.000000 +v -1.000000 1.750000 -1.000000 +v -6.000000 4.000000 -5.500000 +v -24.000000 2.000000 22.000000 +v -24.000000 2.000000 -22.000000 +v -0.950000 0.500000 -12.354551 +v -1.645448 0.500000 -13.050000 +v -1.900000 0.500000 -14.000000 +v -1.645448 0.500000 -14.950000 +v -0.950000 0.500000 -15.645449 +v 5.500000 1.500000 6.000000 +v 1.000000 1.750000 6.000000 +v 6.000000 1.750000 1.000000 +v 1.000000 1.750000 1.000000 +v 6.000000 1.500000 5.500000 +v 24.000000 2.000000 22.000000 +v 22.000000 2.000000 24.000000 +v -5.500000 1.500000 6.000000 +v -1.000000 1.750000 6.000000 +v -6.000000 1.750000 1.000000 +v -1.000000 1.750000 1.000000 +v -6.000000 1.500000 5.500000 +v -22.000000 2.000000 24.000000 +v 15.000000 2.000000 19.000000 +v 11.000000 2.000000 15.000000 +v 15.000000 4.000000 15.000000 +v -20.000000 0.000000 7.000000 +v -19.884712 0.000000 8.170542 +v -19.543278 0.000000 9.296101 +v -18.988817 0.000000 10.333422 +v -18.242641 0.000000 11.242640 +v -17.333422 0.000000 11.988817 +v -16.296101 0.000000 12.543277 +v -15.170542 0.000000 12.884711 +v -14.000000 0.000000 13.000000 +v -14.000000 3.000000 13.000000 +v -15.170542 3.000000 12.884711 +v -16.296101 3.000000 12.543277 +v -17.333422 3.000000 11.988817 +v -18.242641 3.000000 11.242640 +v -18.988817 3.000000 10.333422 +v -19.543278 3.000000 9.296101 +v -19.884712 3.000000 8.170542 +v -20.000000 3.000000 7.000000 +v 14.500000 0.000000 -10.500000 +v 17.500000 0.000000 -10.500000 +v 14.500000 0.000000 -11.500000 +v 17.500000 0.000000 -11.500000 +v 14.500000 2.000000 -10.500000 +v 17.500000 2.000000 -10.500000 +v 14.500000 2.000000 -11.500000 +v 17.500000 2.000000 -11.500000 +v 17.125000 0.000000 -11.000000 +v 17.125000 1.000000 -11.000000 +v 23.875000 2.500000 -22.000000 +v -22.000000 2.500000 -23.875000 +v 22.000000 2.500000 -23.875000 +v -23.875000 2.500000 22.000000 +v -23.875000 2.500000 -22.000000 +v 23.875000 2.500000 22.000000 +v 22.000000 2.500000 23.875000 +v -22.000000 2.500000 23.875000 +v 23.875000 2.187500 -22.000000 +v 23.875000 2.187500 22.000000 +v -0.500000 1.250000 24.500000 +v -23.875000 2.187500 22.000000 +v -22.000000 2.187500 -23.875000 +v 22.000000 2.187500 -23.875000 +v 22.000000 2.187500 23.875000 +v -23.875000 2.187500 -22.000000 +v -2.000000 0.375000 -14.000000 +v -1.732051 0.375000 -15.000000 +v 1.732051 0.375000 -13.000000 +v 2.000000 0.375000 -14.000000 +v -1.000000 0.375000 -15.732051 +v 1.732051 0.375000 -15.000000 +v 0.000000 0.375000 -16.000000 +v 1.000000 0.375000 -15.732051 +v 0.000000 0.375000 -12.000000 +v -1.000000 0.375000 -12.267949 +v -1.732051 0.375000 -13.000000 +v 1.000000 0.375000 -12.267949 +v -24.000000 0.000000 24.000000 +v 24.000000 0.000000 24.000000 +v -24.000000 0.000000 -12.000000 +v 24.000000 0.000000 -12.000000 +v 0.750000 1.999999 -6.000000 +v 6.000000 1.999999 -0.750000 +v 0.750000 1.999999 -0.750000 +v -0.750000 1.999999 -6.000000 +v -6.000000 1.999999 -0.750000 +v -0.750000 1.999999 -0.750000 +v 0.750000 1.999999 6.000000 +v 6.000000 1.999999 0.750000 +v 0.750000 1.999999 0.750000 +v -0.750000 1.999999 6.000000 +v -6.000000 1.999999 0.750000 +v -0.750000 1.999999 0.750000 +v 1.000000 2.500000 -6.000000 +v -1.000000 2.500000 -6.000000 +v 1.000000 2.500000 6.000000 +v -1.000000 2.500000 6.000000 +v 6.000000 2.500000 -1.000000 +v 6.000000 2.500000 1.000000 +v -6.000000 2.500000 -1.000000 +v -6.000000 2.500000 1.000000 +v -2.500000 2.500000 0.999998 +v -1.000000 2.500000 2.500000 +v -1.000000 2.500000 -1.000000 +v 2.500000 2.500000 -1.000000 +v 1.000000 2.500000 -2.500000 +v 2.500000 2.500000 1.000002 +v 1.000000 2.500000 2.500000 +v 2.000000 2.000000 -2.500000 +v 2.500000 2.000000 -2.000000 +v -2.000000 2.000000 2.500000 +v -2.500000 2.000000 2.000000 +v 2.500000 2.000000 2.000000 +v 2.000000 2.000000 2.500000 +v 2.000000 1.500000 -2.500000 +v 2.500000 1.500000 -2.000000 +v -2.000000 1.500000 2.500000 +v -2.500000 1.500000 2.000000 +v 2.500000 1.500000 2.000000 +v 2.000000 1.500000 2.500000 +v -2.000000 2.000000 6.000000 +v 2.000000 2.000000 6.000000 +v -2.000000 1.500000 6.000000 +v 2.000000 1.500000 6.000000 +v 2.000000 2.000000 -6.000000 +v -1.000000 4.000000 -6.000000 +v 2.000000 1.500000 -6.000000 +v 6.000000 2.000000 -2.000000 +v 6.000000 2.000000 2.000000 +v 6.000000 1.500000 -2.000000 +v 6.000000 1.500000 2.000000 +v -6.000000 3.500000 -1.000000 +v -6.000000 2.000000 2.000000 +v -6.000000 4.000000 -1.700000 +v -6.000000 1.500000 2.000000 +v -1.000000 3.500000 -1.000000 +v -1.000000 4.000000 -1.700000 +v -6.000000 0.000000 -3.700000 +v -6.000000 0.000000 -5.300000 +v -6.000000 1.500000 -5.300000 +v -6.000000 1.500000 -3.700000 +v -6.000000 2.000000 -3.300000 +v -6.000000 3.500000 -1.702752 +v -6.000000 3.500000 -3.300000 +v -6.000000 2.000000 -1.700000 +v -3.000000 1.000000 -3.700000 +v -3.000000 1.000000 -5.300000 +v -3.000000 2.500000 -5.300000 +v -3.000000 2.500000 -3.700000 +v -3.000000 1.000000 -3.300000 +v -3.000000 2.500000 -1.702752 +v -3.000000 2.500000 -3.300000 +v -3.000000 1.000000 -1.700000 +v -1.500000 1.000000 -5.300000 +v -1.500000 2.500000 -5.300000 +v -1.500000 2.500000 -1.702752 +v -1.500000 1.000000 -1.700000 +v 0.500000 0.000000 24.000000 +v 0.500000 1.250000 24.500000 +v -0.500000 0.000000 24.500000 +v 0.500000 0.000000 24.500000 +v -22.000000 2.187500 23.875000 +v -0.500000 0.000000 24.000000 +v 0.500000 1.250000 24.000000 +v -0.500000 1.250000 24.000000 +v -0.500000 1.250000 25.500000 +v 0.500000 1.250000 25.500000 +v -0.500000 0.000000 25.500000 +v 0.500000 0.000000 25.500000 +v -4.500000 -0.750000 24.500000 +v -4.500000 -2.000000 24.500000 +v -4.500000 -0.750000 25.500000 +v -4.500000 -2.000000 25.500000 +v -4.500000 -0.750000 26.000000 +v -4.500000 -2.000000 26.000000 +v -5.400000 -0.750000 24.500000 +v 4.500000 -2.000000 26.000000 +v 4.500000 -2.000000 27.000000 +v -0.500000 -2.750000 26.000000 +v -0.500000 -4.000000 26.000000 +v -0.500000 -2.750000 27.000000 +v -0.500000 -4.000000 27.000000 +v 0.500000 -2.750000 26.000000 +v 0.500000 -4.000000 26.000000 +v 0.500000 -2.750000 27.000000 +v 0.500000 -4.000000 27.000000 +v -0.500000 -4.750000 22.000000 +v -0.500000 -6.000000 22.000000 +v 0.500000 -4.750000 22.000000 +v 0.500000 -6.000000 22.000000 +v -5.600000 -2.000000 24.700001 +v -4.500000 -2.000000 27.000000 +v -5.400000 -2.000000 24.500000 +v -5.600000 -2.000000 26.799999 +v -5.476536 -2.000000 26.984779 +v -5.476536 -2.000000 24.515226 +v -5.541420 -2.000000 24.558582 +v -5.584775 -2.000000 24.623466 +v -4.600000 -2.000000 25.600000 +v -4.550000 -2.000000 25.986603 +v -4.600000 -2.000000 25.900000 +v -5.476536 -0.750000 26.984779 +v -5.584775 -0.750000 26.876539 +v -5.476536 -0.750000 24.515226 +v -4.550000 -0.750000 25.513397 +v -4.586602 -0.750000 25.549999 +v -4.600000 -0.750000 25.600000 +v -4.586602 -0.750000 25.950001 +v -4.600000 -0.750000 25.900000 +v 4.500000 -2.000000 24.500000 +v 5.600000 -2.000000 26.799999 +v 5.476536 -2.000000 26.984779 +v 5.584775 -2.000000 24.623466 +v 5.600000 -0.750000 24.700001 +v 4.550000 -2.000000 25.513397 +v 4.600000 -2.000000 25.600000 +v 4.600000 -2.000000 25.900000 +v 5.400000 -0.750000 27.000000 +v 5.476536 -0.750000 26.984779 +v 5.584775 -0.750000 26.876539 +v 5.476536 -0.750000 24.515226 +v 4.550000 -0.750000 25.513397 +v 4.586602 -0.750000 25.549999 +v 4.550000 -0.750000 25.986603 +v 4.600000 -0.750000 25.900000 +v -0.500000 -4.750000 -22.000000 +v -0.500000 -6.000000 -22.000000 +v 0.500000 -6.000000 -22.000000 +v 0.500000 1.250000 -24.500000 +v -0.500000 0.000000 -24.000000 +v -0.500000 1.250000 -24.500000 +v 0.500000 0.000000 -24.500000 +v -0.500000 0.000000 -24.500000 +v 0.500000 0.000000 -24.000000 +v 0.500000 1.250000 -25.500000 +v -0.500000 1.250000 -25.500000 +v 0.500000 0.000000 -25.500000 +v -0.500000 0.000000 -25.500000 +v 4.500000 -0.750000 -24.500000 +v 4.500000 -2.000000 -24.500000 +v 4.500000 -0.750000 -25.500000 +v 4.500000 -2.000000 -25.500000 +v 4.500000 -0.750000 -26.000000 +v 4.500000 -2.000000 -26.000000 +v 5.400000 -0.750000 -24.500000 +v -4.500000 -0.750000 -26.000000 +v -4.500000 -0.750000 -27.000000 +v -4.500000 -2.000000 -27.000000 +v 0.500000 -2.750000 -26.000000 +v 0.500000 -4.000000 -26.000000 +v 0.500000 -2.750000 -27.000000 +v 0.500000 -4.000000 -27.000000 +v -0.500000 -2.750000 -26.000000 +v -0.500000 -4.000000 -26.000000 +v -0.500000 -2.750000 -27.000000 +v -0.500000 -4.000000 -27.000000 +v 0.500000 -4.750000 -22.000000 +v 4.500000 -0.750000 -27.000000 +v 5.600000 -2.000000 -24.700001 +v 4.500000 -2.000000 -27.000000 +v 5.400000 -2.000000 -24.500000 +v 5.400000 -2.000000 -27.000000 +v 5.600000 -2.000000 -26.799999 +v 5.476536 -2.000000 -26.984779 +v 5.541420 -2.000000 -26.941425 +v 5.584775 -2.000000 -26.876539 +v 5.476536 -2.000000 -24.515226 +v 5.541420 -2.000000 -24.558582 +v 5.584775 -2.000000 -24.623466 +v 5.600000 -0.750000 -24.700001 +v 4.550000 -2.000000 -25.513397 +v 4.586602 -2.000000 -25.549999 +v 4.600000 -2.000000 -25.600000 +v 4.550000 -2.000000 -25.986603 +v 4.586602 -2.000000 -25.950001 +v 4.600000 -2.000000 -25.900000 +v 5.400000 -0.750000 -27.000000 +v 5.600000 -0.750000 -26.799999 +v 5.476536 -0.750000 -26.984779 +v 5.541420 -0.750000 -26.941425 +v 5.584775 -0.750000 -26.876539 +v 5.476536 -0.750000 -24.515226 +v 5.541420 -0.750000 -24.558582 +v 5.584775 -0.750000 -24.623466 +v 4.550000 -0.750000 -25.513397 +v 4.586602 -0.750000 -25.549999 +v 4.600000 -0.750000 -25.600000 +v 4.550000 -0.750000 -25.986603 +v 4.586602 -0.750000 -25.950001 +v 4.600000 -0.750000 -25.900000 +v -4.500000 -2.000000 -24.500000 +v -5.600000 -2.000000 -24.700001 +v -5.400000 -2.000000 -27.000000 +v -5.600000 -2.000000 -26.799999 +v -5.476536 -2.000000 -26.984779 +v -5.476536 -2.000000 -24.515226 +v -5.541420 -2.000000 -24.558582 +v -4.586602 -2.000000 -25.950001 +v -4.600000 -2.000000 -25.900000 +v -4.550000 -0.750000 -25.513397 +v -4.586602 -0.750000 -25.549999 +v -4.600000 -0.750000 -25.600000 +v -4.600000 -0.750000 -25.900000 +v -22.000000 0.000000 -24.000000 +v 22.000000 2.000000 -24.000000 +v -0.500000 1.250000 -24.000000 +v 0.500000 1.250000 -24.000000 +v -20.000000 3.000000 13.000000 +v -19.942356 2.414729 13.000000 +v -19.771639 1.851950 13.000000 +v -19.494410 1.333289 13.000000 +v -19.121321 0.878680 13.000000 +v -18.666710 0.505591 13.000000 +v -18.148050 0.228362 13.000000 +v -17.585272 0.057644 13.000000 +v -17.000000 0.000000 13.000000 +v -20.000000 -0.000000 15.000000 +v -17.000000 -0.000000 15.000000 +v -17.585272 0.057644 15.000000 +v -18.148050 0.228362 15.000000 +v -18.666710 0.505591 15.000000 +v -19.121321 0.878680 15.000000 +v -19.494410 1.333289 15.000000 +v -19.771639 1.851950 15.000000 +v -19.942356 2.414729 15.000000 +v -20.000000 3.000000 15.000000 +v -20.000000 0.000000 13.000000 +v -24.000000 0.000000 -24.000000 +v -22.000000 0.000000 -22.000000 +v -22.000000 0.000000 -24.000000 +v -7.000000 0.000000 -22.000000 +v -7.000000 0.000000 -24.000000 +v -7.000000 0.000000 -12.000000 +v 24.000000 0.000000 -24.000000 +v -22.000000 -2.000000 -22.000000 +v -22.000000 -2.000000 -12.000000 +v -7.000000 -2.000000 -22.000000 +v -7.000000 -2.000000 -12.000000 +v -22.000000 0.000000 -12.000000 +v 1.000000 2.500000 1.000001 +v -1.000000 2.500000 0.999999 +v 1.000000 2.500000 -1.000000 +v -22.000002 -0.533112 -22.000002 +v -7.000001 -0.211025 -12.000002 +v -7.000001 -0.534657 -22.000002 +v -22.000002 -0.502405 -12.000002 +v -7.000001 -0.337120 -13.000002 +v -7.000001 -0.600811 -14.000002 +v -7.000001 -0.549606 -15.000002 +v -7.000001 -0.357876 -16.000002 +v -7.000001 -0.498184 -17.000002 +v -7.000001 -0.296180 -18.000002 +v -7.000001 -0.187997 -19.000002 +v -7.000001 -0.436451 -20.000002 +v -7.000001 -0.323097 -21.000002 +v -22.000002 -0.338748 -13.000002 +v -22.000002 -0.207832 -14.000002 +v -22.000002 -0.220001 -15.000002 +v -22.000002 -0.358393 -16.000002 +v -22.000002 -0.703098 -17.000002 +v -22.000002 -0.712385 -18.000002 +v -22.000002 -0.533642 -19.000002 +v -22.000002 -0.553265 -20.000002 +v -22.000002 -0.551648 -21.000002 +v -8.000001 -0.401734 -12.000002 +v -9.000001 -0.628346 -12.000002 +v -10.000001 -0.339083 -12.000002 +v -11.000001 -0.303425 -12.000002 +v -12.000002 -0.424683 -12.000002 +v -13.000002 -0.333648 -12.000002 +v -14.000002 -0.405994 -12.000002 +v -15.000002 -0.607098 -12.000002 +v -16.000002 -0.628003 -12.000002 +v -17.000002 -0.469468 -12.000002 +v -18.000002 -0.274116 -12.000002 +v -19.000002 -0.298645 -12.000002 +v -20.000002 -0.466931 -12.000002 +v -21.000002 -0.502174 -12.000002 +v -21.000002 -0.374246 -22.000002 +v -20.000002 -0.582496 -22.000002 +v -19.000002 -0.946930 -22.000002 +v -18.000002 -0.696955 -22.000002 +v -17.000002 -0.375092 -22.000002 +v -16.000002 -0.276501 -22.000002 +v -15.000002 -0.335563 -22.000002 +v -14.000002 -0.382163 -22.000002 +v -13.000002 -0.485409 -22.000002 +v -12.000002 -0.507178 -22.000002 +v -11.000001 -0.404995 -22.000002 +v -10.000001 -0.304068 -22.000002 +v -9.000001 -0.237850 -22.000002 +v -8.000001 -0.343008 -22.000002 +v -21.000002 -0.118149 -21.000002 +v -20.000002 -0.260623 -21.000002 +v -19.000002 -0.630013 -21.000002 +v -18.000002 -0.682664 -21.000002 +v -17.000002 -0.347588 -21.000002 +v -16.000002 -0.235919 -21.000002 +v -15.000002 -0.607215 -21.000002 +v -14.000002 -0.776618 -21.000002 +v -13.000002 -0.714713 -21.000002 +v -12.000002 -0.502461 -21.000002 +v -11.000001 -0.297631 -21.000002 +v -10.000001 -0.344700 -21.000002 +v -9.000001 -0.450798 -21.000002 +v -8.000001 -0.289757 -21.000002 +v -21.000002 -0.445131 -20.000002 +v -20.000002 -0.274820 -20.000002 +v -19.000002 -0.417461 -20.000002 +v -18.000002 -0.667692 -20.000002 +v -17.000002 -0.549290 -20.000002 +v -16.000002 -0.541209 -20.000002 +v -15.000002 -0.911628 -20.000002 +v -14.000002 -1.000000 -20.000002 +v -13.000002 -0.923237 -20.000002 +v -12.000002 -0.543248 -20.000002 +v -11.000001 -0.356269 -20.000002 +v -10.000001 -0.438711 -20.000002 +v -9.000001 -0.384983 -20.000002 +v -8.000001 -0.378742 -20.000002 +v -21.000002 -0.626167 -19.000002 +v -20.000002 -0.470086 -19.000002 +v -19.000002 -0.604758 -19.000002 +v -18.000002 -0.639268 -19.000002 +v -17.000002 -0.324235 -19.000002 +v -16.000002 -0.401596 -19.000002 +v -15.000002 -0.752991 -19.000002 +v -14.000002 -1.000000 -19.000002 +v -13.000002 -0.933433 -19.000002 +v -12.000002 -0.657676 -19.000002 +v -11.000001 -0.760520 -19.000002 +v -10.000001 -0.683975 -19.000002 +v -9.000001 -0.276062 -19.000002 +v -8.000001 -0.265271 -19.000002 +v -21.000002 -0.669010 -18.000002 +v -20.000002 -0.557882 -18.000002 +v -19.000002 -0.758399 -18.000002 +v -18.000002 -0.511859 -18.000002 +v -17.000002 -0.096313 -18.000002 +v -16.000002 -0.111700 -18.000002 +v -15.000002 -0.205601 -18.000002 +v -14.000002 -0.589785 -18.000002 +v -13.000002 -0.924439 -18.000002 +v -12.000002 -0.755259 -18.000002 +v -11.000001 -0.595147 -18.000002 +v -10.000001 -0.687985 -18.000002 +v -9.000001 -0.634628 -18.000002 +v -8.000001 -0.384974 -18.000002 +v -21.000002 -0.632615 -17.000002 +v -20.000002 -0.389367 -17.000002 +v -19.000002 -0.478654 -17.000002 +v -18.000002 -0.383973 -17.000002 +v -17.000002 -0.300827 -17.000002 +v -16.000002 -0.279953 -17.000002 +v -15.000002 -0.142074 -17.000002 +v -14.000002 -0.302562 -17.000002 +v -13.000002 -0.758880 -17.000002 +v -12.000002 -0.824356 -17.000002 +v -11.000001 -0.529365 -17.000002 +v -10.000001 -0.591465 -17.000002 +v -9.000001 -0.692544 -17.000002 +v -8.000001 -0.401261 -17.000002 +v -21.000002 -0.355728 -16.000002 +v -20.000002 -0.160983 -16.000002 +v -19.000002 -0.027005 -16.000002 +v -18.000002 -0.387698 -16.000002 +v -17.000002 -0.674960 -16.000002 +v -16.000002 -0.470534 -16.000002 +v -15.000002 -0.178188 -16.000002 +v -14.000002 -0.239357 -16.000002 +v -13.000002 -0.491967 -16.000002 +v -12.000002 -0.553623 -16.000002 +v -11.000001 -0.446049 -16.000002 +v -10.000001 -0.505844 -16.000002 +v -9.000001 -0.462067 -16.000002 +v -8.000001 -0.201712 -16.000002 +v -21.000002 -0.408256 -15.000002 +v -20.000002 -0.337803 -15.000002 +v -19.000002 -0.056350 -15.000002 +v -18.000002 -0.365120 -15.000002 +v -17.000002 -0.515489 -15.000002 +v -16.000002 -0.517315 -15.000002 +v -15.000002 -0.460311 -15.000002 +v -14.000002 -0.243908 -15.000002 +v -13.000002 -0.114556 -15.000002 +v -12.000002 -0.197982 -15.000002 +v -11.000001 -0.303420 -15.000002 +v -10.000001 -0.580932 -15.000002 +v -9.000001 -0.612320 -15.000002 +v -8.000001 -0.358547 -15.000002 +v -21.000002 -0.276924 -14.000002 +v -20.000002 -0.338091 -14.000002 +v -19.000002 -0.256442 -14.000002 +v -18.000002 -0.154980 -14.000002 +v -17.000002 -0.216113 -14.000002 +v -16.000002 -0.686244 -14.000002 +v -15.000002 -0.737275 -14.000002 +v -14.000002 -0.321931 -14.000002 +v -13.000002 -0.128494 -14.000002 +v -12.000002 -0.356427 -14.000002 +v -11.000001 -0.479054 -14.000002 +v -10.000001 -0.537222 -14.000002 +v -9.000001 -0.642727 -14.000002 +v -8.000001 -0.543134 -14.000002 +v -21.000002 -0.399429 -13.000002 +v -20.000002 -0.475562 -13.000002 +v -19.000002 -0.477066 -13.000002 +v -18.000002 -0.286850 -13.000002 +v -17.000002 -0.580230 -13.000002 +v -16.000002 -0.949367 -13.000002 +v -15.000002 -0.539132 -13.000002 +v -14.000002 -0.244648 -13.000002 +v -13.000002 -0.306931 -13.000002 +v -12.000002 -0.395691 -13.000002 +v -11.000001 -0.251824 -13.000002 +v -10.000001 -0.346393 -13.000002 +v -9.000001 -0.781761 -13.000002 +v -8.000001 -0.624588 -13.000002 +v -21.500002 -0.505064 -12.000002 +v -7.500001 -0.448988 -22.000002 +v -7.000001 -0.356218 -21.500002 +v -22.000002 -0.526081 -21.500002 +v -7.000001 -0.259101 -12.500002 +v -7.000001 -0.471880 -13.500002 +v -7.000001 -0.621497 -14.500002 +v -7.000001 -0.432461 -15.500002 +v -7.000001 -0.397428 -16.500002 +v -7.000001 -0.458697 -17.500002 +v -7.000001 -0.165914 -18.500002 +v -7.000001 -0.342465 -19.500002 +v -7.000001 -0.406065 -20.500002 +v -22.000002 -0.432514 -12.500002 +v -22.000002 -0.256258 -13.500002 +v -22.000002 -0.208592 -14.500002 +v -22.000002 -0.243559 -15.500002 +v -22.000002 -0.544148 -16.500002 +v -22.000002 -0.755802 -17.500002 +v -22.000002 -0.604332 -18.500002 +v -22.000002 -0.541290 -19.500002 +v -22.000002 -0.557939 -20.500002 +v -7.500001 -0.253678 -21.000002 +v -7.500001 -0.400733 -20.000002 +v -7.500001 -0.235777 -19.000002 +v -7.500001 -0.284414 -18.000002 +v -7.500001 -0.365236 -17.000002 +v -7.500001 -0.219251 -16.000002 +v -7.500001 -0.412913 -15.000002 +v -7.500001 -0.550604 -14.000002 +v -7.500001 -0.439575 -13.000002 +v -7.500001 -0.245564 -12.000002 +v -8.500001 -0.570247 -12.000002 +v -9.500001 -0.502617 -12.000002 +v -10.500001 -0.262726 -12.000002 +v -11.500002 -0.389933 -12.000002 +v -12.500002 -0.386457 -12.000002 +v -13.500002 -0.338422 -12.000002 +v -14.500002 -0.517827 -12.000002 +v -15.500002 -0.644016 -12.000002 +v -16.500002 -0.550307 -12.000002 +v -17.500002 -0.373963 -12.000002 +v -18.500002 -0.249853 -12.000002 +v -19.500002 -0.385577 -12.000002 +v -20.500002 -0.502551 -12.000002 +v -21.500002 -0.469674 -22.000002 +v -20.500002 -0.390674 -22.000002 +v -19.500002 -0.828006 -22.000002 +v -18.500002 -0.867265 -22.000002 +v -17.500002 -0.501933 -22.000002 +v -16.500002 -0.311322 -22.000002 +v -15.500002 -0.295872 -22.000002 +v -14.500002 -0.354617 -22.000002 +v -13.500002 -0.429181 -22.000002 +v -12.500002 -0.521433 -22.000002 +v -11.500002 -0.450314 -22.000002 +v -10.500001 -0.367041 -22.000002 +v -9.500001 -0.253026 -22.000002 +v -8.500001 -0.266760 -22.000002 +v -21.500002 -0.298784 -21.000002 +v -20.500002 -0.122819 -21.000002 +v -19.500002 -0.476430 -21.000002 +v -18.500002 -0.697178 -21.000002 +v -17.500002 -0.534868 -21.000002 +v -16.500002 -0.222682 -21.000002 +v -15.500002 -0.415175 -21.000002 +v -14.500002 -0.716502 -21.000002 +v -13.500002 -0.757222 -21.000002 +v -12.500002 -0.642712 -21.000002 +v -11.500002 -0.364761 -21.000002 +v -10.500001 -0.304027 -21.000002 +v -9.500001 -0.405663 -21.000002 +v -8.500001 -0.392654 -21.000002 +v -21.500002 -0.439203 -20.000002 +v -20.500002 -0.332846 -20.000002 +v -19.500002 -0.305768 -20.000002 +v -18.500002 -0.571353 -20.000002 +v -17.500002 -0.637313 -20.000002 +v -16.500002 -0.494971 -20.000002 +v -15.500002 -0.717556 -20.000002 +v -14.500002 -1.000000 -20.000002 +v -13.500002 -1.000000 -20.000002 +v -12.500002 -0.779451 -20.000002 +v -11.500002 -0.373392 -20.000002 +v -10.500001 -0.418900 -20.000002 +v -9.500001 -0.411714 -20.000002 +v -8.500001 -0.378734 -20.000002 +v -21.500002 -0.547057 -19.000002 +v -20.500002 -0.573531 -19.000002 +v -19.500002 -0.466587 -19.000002 +v -18.500002 -0.716221 -19.000002 +v -17.500002 -0.442159 -19.000002 +v -16.500002 -0.334833 -19.000002 +v -15.500002 -0.562558 -19.000002 +v -14.500002 -0.932950 -19.000002 +v -13.500002 -1.000000 -19.000002 +v -12.500002 -0.802853 -19.000002 +v -11.500002 -0.642644 -19.000002 +v -10.500001 -0.818647 -19.000002 +v -9.500001 -0.435396 -19.000002 +v -8.500001 -0.271911 -19.000002 +v -21.500002 -0.686925 -18.000002 +v -20.500002 -0.600252 -18.000002 +v -19.500002 -0.622641 -18.000002 +v -18.500002 -0.743309 -18.000002 +v -17.500002 -0.222314 -18.000002 +v -16.500002 -0.112049 -18.000002 +v -15.500002 -0.138340 -18.000002 +v -14.500002 -0.361311 -18.000002 +v -13.500002 -0.801233 -18.000002 +v -12.500002 -0.893358 -18.000002 +v -11.500002 -0.620277 -18.000002 +v -10.500001 -0.659777 -18.000002 +v -9.500001 -0.665938 -18.000002 +v -8.500001 -0.540829 -18.000002 +v -21.500002 -0.713558 -17.000002 +v -20.500002 -0.492399 -17.000002 +v -19.500002 -0.400644 -17.000002 +v -18.500002 -0.472293 -17.000002 +v -17.500002 -0.299618 -17.000002 +v -16.500002 -0.329736 -17.000002 +v -15.500002 -0.189950 -17.000002 +v -14.500002 -0.173468 -17.000002 +v -13.500002 -0.533347 -17.000002 +v -12.500002 -0.867324 -17.000002 +v -11.500002 -0.657478 -17.000002 +v -10.500001 -0.537960 -17.000002 +v -9.500001 -0.658369 -17.000002 +v -8.500001 -0.570732 -17.000002 +v -21.500002 -0.338507 -16.000002 +v -20.500002 -0.303422 -16.000002 +v -19.500002 -0.039432 -16.000002 +v -18.500002 -0.170152 -16.000002 +v -17.500002 -0.580003 -16.000002 +v -16.500002 -0.628871 -16.000002 +v -15.500002 -0.281975 -16.000002 +v -14.500002 -0.176788 -16.000002 +v -13.500002 -0.367734 -16.000002 +v -12.500002 -0.554791 -16.000002 +v -11.500002 -0.494282 -16.000002 +v -10.500001 -0.471432 -16.000002 +v -9.500001 -0.504653 -16.000002 +v -8.500001 -0.327351 -16.000002 +v -21.500002 -0.254400 -15.000002 +v -20.500002 -0.467545 -15.000002 +v -19.500002 -0.135531 -15.000002 +v -18.500002 -0.190474 -15.000002 +v -17.500002 -0.485315 -15.000002 +v -16.500002 -0.516214 -15.000002 +v -15.500002 -0.498193 -15.000002 +v -14.500002 -0.370412 -15.000002 +v -13.500002 -0.147328 -15.000002 +v -12.500002 -0.139757 -15.000002 +v -11.500002 -0.263775 -15.000002 +v -10.500001 -0.414348 -15.000002 +v -9.500001 -0.662911 -15.000002 +v -8.500001 -0.457092 -15.000002 +v -21.500002 -0.207650 -14.000002 +v -20.500002 -0.341739 -14.000002 +v -19.500002 -0.285350 -14.000002 +v -18.500002 -0.219798 -14.000002 +v -17.500002 -0.146055 -14.000002 +v -16.500002 -0.434022 -14.000002 +v -15.500002 -0.794399 -14.000002 +v -14.500002 -0.549814 -14.000002 +v -13.500002 -0.170329 -14.000002 +v -12.500002 -0.209228 -14.000002 +v -11.500002 -0.467427 -14.000002 +v -10.500001 -0.475066 -14.000002 +v -9.500001 -0.615650 -14.000002 +v -8.500001 -0.589726 -14.000002 +v -21.500002 -0.380127 -13.000002 +v -20.500002 -0.433315 -13.000002 +v -19.500002 -0.492156 -13.000002 +v -18.500002 -0.370114 -13.000002 +v -17.500002 -0.369822 -13.000002 +v -16.500002 -0.837419 -13.000002 +v -15.500002 -0.793406 -13.000002 +v -14.500002 -0.354047 -13.000002 +v -13.500002 -0.257888 -13.000002 +v -12.500002 -0.354549 -13.000002 +v -11.500002 -0.356868 -13.000002 +v -10.500001 -0.212841 -13.000002 +v -9.500001 -0.597095 -13.000002 +v -8.500001 -0.764812 -13.000002 +v -8.000001 -0.599944 -13.500002 +v -9.000001 -0.687576 -13.500002 +v -10.000001 -0.404154 -13.500002 +v -11.000001 -0.369823 -13.500002 +v -12.000002 -0.389881 -13.500002 +v -13.000002 -0.217100 -13.500002 +v -14.000002 -0.269167 -13.500002 +v -15.000002 -0.635857 -13.500002 +v -16.000002 -0.841502 -13.500002 +v -17.000002 -0.380361 -13.500002 +v -18.000002 -0.192964 -13.500002 +v -19.000002 -0.388849 -13.500002 +v -20.000002 -0.380004 -13.500002 +v -21.000002 -0.275221 -13.500002 +v -8.000001 -0.450873 -14.500002 +v -9.000001 -0.635218 -14.500002 +v -10.000001 -0.619718 -14.500002 +v -11.000001 -0.449801 -14.500002 +v -12.000002 -0.282005 -14.500002 +v -13.000002 -0.096434 -14.500002 +v -14.000002 -0.321308 -14.500002 +v -15.000002 -0.675375 -14.500002 +v -16.000002 -0.563364 -14.500002 +v -17.000002 -0.279941 -14.500002 +v -18.000002 -0.234562 -14.500002 +v -19.000002 -0.131094 -14.500002 +v -20.000002 -0.343335 -14.500002 +v -21.000002 -0.365883 -14.500002 +v -8.000001 -0.255108 -15.500002 +v -9.000001 -0.513738 -15.500002 +v -10.000001 -0.503960 -15.500002 +v -11.000001 -0.292605 -15.500002 +v -12.000002 -0.290556 -15.500002 +v -13.000002 -0.250756 -15.500002 +v -14.000002 -0.196308 -15.500002 +v -15.000002 -0.261533 -15.500002 +v -16.000002 -0.513312 -15.500002 +v -17.000002 -0.697169 -15.500002 +v -18.000002 -0.412400 -15.500002 +v -19.000002 -0.000000 -15.500002 +v -20.000002 -0.234731 -15.500002 +v -21.000002 -0.347606 -15.500002 +v -8.000001 -0.270823 -16.500002 +v -9.000001 -0.541271 -16.500002 +v -10.000001 -0.562972 -16.500002 +v -11.000001 -0.579105 -16.500002 +v -12.000002 -0.787503 -16.500002 +v -13.000002 -0.695195 -16.500002 +v -14.000002 -0.305697 -16.500002 +v -15.000002 -0.179409 -16.500002 +v -16.000002 -0.378325 -16.500002 +v -17.000002 -0.469324 -16.500002 +v -18.000002 -0.353955 -16.500002 +v -19.000002 -0.223568 -16.500002 +v -20.000002 -0.226524 -16.500002 +v -21.000002 -0.477087 -16.500002 +v -8.000001 -0.444487 -17.500002 +v -9.000001 -0.747437 -17.500002 +v -10.000001 -0.618662 -17.500002 +v -11.000001 -0.470999 -17.500002 +v -12.000002 -0.763872 -17.500002 +v -13.000002 -0.811757 -17.500002 +v -14.000002 -0.351354 -17.500002 +v -15.000002 -0.078856 -17.500002 +v -16.000002 -0.164000 -17.500002 +v -17.000002 -0.193239 -17.500002 +v -18.000002 -0.457212 -17.500002 +v -19.000002 -0.676300 -17.500002 +v -20.000002 -0.521869 -17.500002 +v -21.000002 -0.693445 -17.500002 +v -8.000001 -0.289911 -18.500002 +v -9.000001 -0.418469 -18.500002 +v -10.000001 -0.722750 -18.500002 +v -11.000001 -0.753529 -18.500002 +v -12.000002 -0.736855 -18.500002 +v -13.000002 -0.983302 -18.500002 +v -14.000002 -0.884470 -18.500002 +v -15.000002 -0.498674 -18.500002 +v -16.000002 -0.216889 -18.500002 +v -17.000002 -0.148037 -18.500002 +v -18.000002 -0.566342 -18.500002 +v -19.000002 -0.691521 -18.500002 +v -20.000002 -0.505788 -18.500002 +v -21.000002 -0.617337 -18.500002 +v -8.000001 -0.337394 -19.500002 +v -9.000001 -0.306600 -19.500002 +v -10.000001 -0.565845 -19.500002 +v -11.000001 -0.554722 -19.500002 +v -12.000002 -0.569706 -19.500002 +v -13.000002 -0.905294 -19.500002 +v -14.000002 -1.000000 -19.500002 +v -15.000002 -0.884197 -19.500002 +v -16.000002 -0.538305 -19.500002 +v -17.000002 -0.499093 -19.500002 +v -18.000002 -0.682349 -19.500002 +v -19.000002 -0.510097 -19.500002 +v -20.000002 -0.406677 -19.500002 +v -21.000002 -0.584036 -19.500002 +v -8.000001 -0.350496 -20.500002 +v -9.000001 -0.448549 -20.500002 +v -10.000001 -0.363570 -20.500002 +v -11.000001 -0.276621 -20.500002 +v -12.000002 -0.542104 -20.500002 +v -13.000002 -0.873005 -20.500002 +v -14.000002 -0.954879 -20.500002 +v -15.000002 -0.779886 -20.500002 +v -16.000002 -0.391177 -20.500002 +v -17.000002 -0.452789 -20.500002 +v -18.000002 -0.648411 -20.500002 +v -19.000002 -0.462273 -20.500002 +v -20.000002 -0.205205 -20.500002 +v -21.000002 -0.108809 -20.500002 +v -8.000001 -0.260873 -21.500002 +v -9.000001 -0.326193 -21.500002 +v -10.000001 -0.309170 -21.500002 +v -11.000001 -0.343576 -21.500002 +v -12.000002 -0.450577 -21.500002 +v -13.000002 -0.523946 -21.500002 +v -14.000002 -0.567831 -21.500002 +v -15.000002 -0.470393 -21.500002 +v -16.000002 -0.228368 -21.500002 +v -17.000002 -0.367647 -21.500002 +v -18.000002 -0.750519 -21.500002 +v -19.000002 -0.844364 -21.500002 +v -20.000002 -0.427552 -21.500002 +v -21.000002 -0.215551 -21.500002 +v -8.000001 -0.561727 -12.500002 +v -9.000001 -0.785995 -12.500002 +v -10.000001 -0.368685 -12.500002 +v -11.000001 -0.264927 -12.500002 +v -12.000002 -0.401120 -12.500002 +v -13.000002 -0.311040 -12.500002 +v -14.000002 -0.297284 -12.500002 +v -15.000002 -0.569041 -12.500002 +v -16.000002 -0.875591 -12.500002 +v -17.000002 -0.590246 -12.500002 +v -18.000002 -0.301181 -12.500002 +v -19.000002 -0.413302 -12.500002 +v -20.000002 -0.511045 -12.500002 +v -21.000002 -0.515905 -12.500002 +v -21.500000 -0.490493 -12.500002 +v -21.500000 -0.357949 -21.500000 +v -21.500000 -0.385945 -20.500002 +v -21.500000 -0.535383 -19.500002 +v -21.500000 -0.580127 -18.500002 +v -21.500000 -0.754799 -17.500002 +v -21.500000 -0.532907 -16.500002 +v -21.500000 -0.244119 -15.500002 +v -21.500000 -0.236499 -14.500002 +v -21.500000 -0.254161 -13.500002 +v -7.500001 -0.510520 -13.500002 +v -8.500001 -0.675469 -13.500002 +v -9.500001 -0.567427 -13.500002 +v -10.500001 -0.326506 -13.500002 +v -11.500002 -0.425741 -13.500002 +v -12.500002 -0.287732 -13.500002 +v -13.500002 -0.207218 -13.500002 +v -14.500002 -0.439267 -13.500002 +v -15.500002 -0.809633 -13.500002 +v -16.500002 -0.644164 -13.500002 +v -17.500002 -0.224252 -13.500002 +v -18.500002 -0.293429 -13.500002 +v -19.500002 -0.397842 -13.500002 +v -20.500002 -0.329187 -13.500002 +v -7.500001 -0.505191 -14.500002 +v -8.500001 -0.518576 -14.500002 +v -9.500001 -0.673741 -14.500002 +v -10.500001 -0.512614 -14.500002 +v -11.500002 -0.401103 -14.500002 +v -12.500002 -0.156797 -14.500002 +v -13.500002 -0.155630 -14.500002 +v -14.500002 -0.531396 -14.500002 +v -15.500002 -0.677004 -14.500002 +v -16.500002 -0.390802 -14.500002 +v -17.500002 -0.261398 -14.500002 +v -18.500002 -0.187758 -14.500002 +v -19.500002 -0.192447 -14.500002 +v -20.500002 -0.429016 -14.500002 +v -7.500001 -0.296040 -15.500002 +v -8.500001 -0.364045 -15.500002 +v -9.500001 -0.561240 -15.500002 +v -10.500001 -0.377387 -15.500002 +v -11.500002 -0.291928 -15.500002 +v -12.500002 -0.276207 -15.500002 +v -13.500002 -0.214327 -15.500002 +v -14.500002 -0.219426 -15.500002 +v -15.500002 -0.357895 -15.500002 +v -16.500002 -0.645381 -15.500002 +v -17.500002 -0.618119 -15.500002 +v -18.500002 -0.161358 -15.500002 +v -19.500002 -0.055222 -15.500002 +v -20.500002 -0.370902 -15.500002 +v -7.500001 -0.259216 -16.500002 +v -8.500001 -0.418917 -16.500002 +v -9.500001 -0.555307 -16.500002 +v -10.500001 -0.568723 -16.500002 +v -11.500002 -0.673497 -16.500002 +v -12.500002 -0.798141 -16.500002 +v -13.500002 -0.502307 -16.500002 +v -14.500002 -0.199567 -16.500002 +v -15.500002 -0.248746 -16.500002 +v -16.500002 -0.470807 -16.500002 +v -17.500002 -0.412955 -16.500002 +v -18.500002 -0.289792 -16.500002 +v -19.500002 -0.180842 -16.500002 +v -20.500002 -0.357320 -16.500002 +v -7.500001 -0.371330 -17.500002 +v -8.500001 -0.626668 -17.500002 +v -9.500001 -0.709990 -17.500002 +v -10.500001 -0.520842 -17.500002 +v -11.500002 -0.579440 -17.500002 +v -12.500002 -0.864089 -17.500002 +v -13.500002 -0.605043 -17.500002 +v -14.500002 -0.162257 -17.500002 +v -15.500002 -0.096906 -17.500002 +v -16.500002 -0.211876 -17.500002 +v -17.500002 -0.255830 -17.500002 +v -18.500002 -0.643165 -17.500002 +v -19.500002 -0.570749 -17.500002 +v -20.500002 -0.585055 -17.500002 +v -7.500001 -0.208562 -18.500002 +v -8.500001 -0.372828 -18.500002 +v -9.500001 -0.540035 -18.500002 +v -10.500001 -0.811449 -18.500002 +v -11.500002 -0.681591 -18.500002 +v -12.500002 -0.882566 -18.500002 +v -13.500002 -0.978001 -18.500002 +v -14.500002 -0.692296 -18.500002 +v -15.500002 -0.343340 -18.500002 +v -16.500002 -0.163635 -18.500002 +v -17.500002 -0.290942 -18.500002 +v -18.500002 -0.740980 -18.500002 +v -19.500002 -0.544578 -18.500002 +v -20.500002 -0.569189 -18.500002 +v -7.500001 -0.351601 -19.500002 +v -8.500001 -0.314344 -19.500002 +v -9.500001 -0.412625 -19.500002 +v -10.500001 -0.626127 -19.500002 +v -11.500002 -0.487552 -19.500002 +v -12.500002 -0.762069 -19.500002 +v -13.500002 -1.000000 -19.500002 +v -14.500002 -1.000000 -19.500002 +v -15.500002 -0.696204 -19.500002 +v -16.500002 -0.485827 -19.500002 +v -17.500002 -0.585695 -19.500002 +v -18.500002 -0.656797 -19.500002 +v -19.500002 -0.390745 -19.500002 +v -20.500002 -0.519127 -19.500002 +v -7.500001 -0.342611 -20.500002 +v -8.500001 -0.411189 -20.500002 +v -9.500001 -0.416864 -20.500002 +v -10.500001 -0.309598 -20.500002 +v -11.500002 -0.348821 -20.500002 +v -12.500002 -0.757874 -20.500002 +v -13.500002 -0.925273 -20.500002 +v -14.500002 -0.896188 -20.500002 +v -15.500002 -0.581684 -20.500002 +v -16.500002 -0.355468 -20.500002 +v -17.500002 -0.586632 -20.500002 +v -18.500002 -0.578960 -20.500002 +v -19.500002 -0.334738 -20.500002 +v -20.500002 -0.157104 -20.500002 +v -7.500001 -0.277804 -21.500000 +v -8.500001 -0.299171 -21.500000 +v -9.500001 -0.310914 -21.500000 +v -10.500001 -0.325105 -21.500000 +v -11.500002 -0.383343 -21.500000 +v -12.500002 -0.506250 -21.500000 +v -13.500002 -0.546097 -21.500000 +v -14.500002 -0.540986 -21.500000 +v -15.500002 -0.335868 -21.500000 +v -16.500002 -0.251941 -21.500000 +v -17.500002 -0.552267 -21.500000 +v -18.500002 -0.849418 -21.500000 +v -19.500002 -0.686308 -21.500000 +v -20.500002 -0.239198 -21.500000 +v -7.500001 -0.354518 -12.500002 +v -8.500001 -0.742001 -12.500002 +v -9.500001 -0.611122 -12.500002 +v -10.500001 -0.234032 -12.500002 +v -11.500002 -0.363988 -12.500002 +v -12.500002 -0.360471 -12.500002 +v -13.500002 -0.280832 -12.500002 +v -14.500002 -0.411880 -12.500002 +v -15.500002 -0.761010 -12.500002 +v -16.500002 -0.786707 -12.500002 +v -17.500002 -0.407521 -12.500002 +v -18.500002 -0.332749 -12.500002 +v -19.500002 -0.465276 -12.500002 +v -20.500002 -0.524886 -12.500002 +v -19.000000 0.000000 1.414214 +v -17.585787 0.000000 0.000000 +v -20.414213 0.000000 0.000000 +v -19.000000 0.000000 -1.414214 +v -18.292894 0.500000 0.000000 +v -19.000000 0.500000 0.707107 +v -19.000000 0.500000 -0.707107 +v -19.707108 0.500000 0.000000 +v -16.000000 0.142925 -4.585786 +v -14.585787 0.000000 -6.000000 +v -17.414213 1.189960 -6.000000 +v -16.000000 0.142925 -7.414214 +v 4.600012 -0.750000 -24.500000 +v 4.600049 -0.750000 -27.000000 +v 4.600001 -0.750000 -25.500010 +v 4.600000 -2.000000 -24.500000 +v 4.600000 -2.000000 -27.000000 +v -4.500000 -0.750000 -24.500000 +v -4.500000 -0.750000 -25.500000 +v -4.500000 -2.000000 -25.500000 +v -4.500000 -2.000000 -26.000000 +v -5.400000 -0.750000 -24.500000 +v -5.400000 -2.000000 -24.500000 +v -5.541420 -2.000000 -26.941425 +v -5.584775 -2.000000 -26.876539 +v -5.584775 -2.000000 -24.623466 +v -5.600000 -0.750000 -24.700001 +v -4.550000 -2.000000 -25.513397 +v -4.586602 -2.000000 -25.549999 +v -4.600000 -2.000000 -25.600000 +v -4.550000 -2.000000 -25.986603 +v -5.400000 -0.750000 -27.000000 +v -5.600000 -0.750000 -26.799999 +v -5.476536 -0.750000 -26.984779 +v -5.541420 -0.750000 -26.941425 +v -5.584775 -0.750000 -26.876539 +v -5.476536 -0.750000 -24.515226 +v -5.541420 -0.750000 -24.558582 +v -5.584775 -0.750000 -24.623466 +v -4.550000 -0.750000 -25.986603 +v -4.586602 -0.750000 -25.950001 +v -4.600012 -0.750000 -24.500000 +v -4.600049 -0.750000 -27.000000 +v -4.600001 -0.750000 -25.500010 +v -4.600000 -2.000000 -24.500000 +v -4.600000 -2.000000 -27.000000 +v 4.500000 -0.750000 24.500000 +v 4.500000 -0.750000 25.500000 +v 4.500000 -2.000000 25.500000 +v 4.500000 -0.750000 26.000000 +v 5.400000 -0.750000 24.500000 +v 4.500000 -0.750000 27.000000 +v 5.600000 -2.000000 24.700001 +v 5.400000 -2.000000 24.500000 +v 5.400000 -2.000000 27.000000 +v 5.541420 -2.000000 26.941425 +v 5.584775 -2.000000 26.876539 +v 5.476536 -2.000000 24.515226 +v 5.541420 -2.000000 24.558582 +v 4.586602 -2.000000 25.549999 +v 4.550000 -2.000000 25.986603 +v 4.586602 -2.000000 25.950001 +v 5.600000 -0.750000 26.799999 +v 5.541420 -0.750000 26.941425 +v 5.541420 -0.750000 24.558582 +v 5.584775 -0.750000 24.623466 +v 4.600000 -0.750000 25.600000 +v 4.586602 -0.750000 25.950001 +v 4.600012 -0.750000 24.500000 +v 4.600049 -0.750000 27.000000 +v 4.600001 -0.750000 25.500010 +v 4.600000 -2.000000 24.500000 +v 4.600000 -2.000000 27.000000 +v -4.500000 -0.750000 27.000000 +v -5.400000 -2.000000 27.000000 +v -5.541420 -2.000000 26.941425 +v -5.584775 -2.000000 26.876539 +v -5.600000 -0.750000 24.700001 +v -4.550000 -2.000000 25.513397 +v -4.586602 -2.000000 25.549999 +v -4.586602 -2.000000 25.950001 +v -5.400000 -0.750000 27.000000 +v -5.600000 -0.750000 26.799999 +v -5.541420 -0.750000 26.941425 +v -5.541420 -0.750000 24.558582 +v -5.584775 -0.750000 24.623466 +v -4.550000 -0.750000 25.986603 +v -4.600012 -0.750000 24.500000 +v -4.600049 -0.750000 27.000000 +v -4.600001 -0.750000 25.500010 +v -4.600000 -2.000000 24.500000 +v -4.600000 -2.000000 27.000000 +vn -0.7643 0.6115 -0.2048 +vn 0.7643 0.6115 0.2048 +vn -0.5595 0.6115 -0.5595 +vn 0.7643 0.6115 -0.2048 +vn -0.7071 -0.0000 -0.7071 +vn -0.2048 0.6115 -0.7643 +vn 0.5595 0.6115 -0.5595 +vn -1.0000 -0.0000 -0.0000 +vn 0.2048 0.6115 -0.7643 +vn 0.7071 -0.0000 -0.7071 +vn 0.7071 -0.0000 0.7071 +vn -0.0000 -0.0000 -1.0000 +vn -0.7071 -0.0000 0.7071 +vn -0.0000 -0.0000 1.0000 +vn 1.0000 -0.0000 -0.0000 +vn -0.2048 0.6115 0.7643 +vn -0.5595 0.6115 0.5595 +vn 0.2048 0.6115 0.7643 +vn -0.7643 0.6115 0.2048 +vn 0.5595 0.6115 0.5595 +vn 0.9952 -0.0000 -0.0980 +vn 0.0980 -0.0000 -0.9952 +vn 0.6344 -0.0000 -0.7730 +vn 0.9569 -0.0000 -0.2903 +vn 0.4714 -0.0000 -0.8819 +vn 0.8819 -0.0000 -0.4714 +vn 0.2903 -0.0000 -0.9569 +vn 0.7730 -0.0000 -0.6344 +vn -0.1871 -0.0000 0.9823 +vn -0.1871 -0.0000 -0.9823 +vn 0.6396 -0.4264 0.6396 +vn -0.0000 -0.5547 -0.8321 +vn 0.8321 -0.5547 -0.0000 +vn -0.6396 -0.4264 0.6396 +vn -0.6396 -0.4264 -0.6396 +vn -0.0000 -0.5547 0.8321 +vn 0.6396 -0.4264 -0.6396 +vn -0.8321 -0.5547 -0.0000 +vn -0.3560 -0.9345 -0.0000 +vn -0.0000 1.0000 -0.0000 +vn -0.9659 -0.0000 0.2588 +vn 0.2588 -0.0000 0.9659 +vn -0.2588 -0.0000 0.9659 +vn 0.2588 -0.0000 -0.9659 +vn -0.2588 -0.0000 -0.9659 +vn 0.9659 -0.0000 -0.2588 +vn 0.9659 -0.0000 0.2588 +vn -0.9659 -0.0000 -0.2588 +vn -0.0000 -0.7071 -0.7071 +vn 0.7071 -0.7071 -0.0000 +vn -0.7071 -0.7071 -0.0000 +vn -0.0000 -0.7071 0.7071 +vn -0.0000 -1.0000 -0.0000 +vn 0.4082 0.8165 -0.4082 +vn 0.4082 0.8165 0.4082 +vn -0.4082 0.8165 0.4082 +vn -0.4472 0.8944 -0.0000 +vn 0.4472 0.8944 -0.0000 +vn -0.0000 0.8944 0.4472 +vn -0.0000 0.8944 -0.4472 +vn -0.0000 0.8137 0.5812 +vn 0.3162 -0.9487 -0.0000 +vn 0.3162 0.9487 -0.0000 +vn -0.0006 -0.0018 -1.0000 +vn -0.3162 -0.9487 -0.0000 +vn -0.0000 -0.0018 -1.0000 +vn -0.3162 0.9487 -0.0000 +vn 0.4472 -0.8944 -0.0000 +vn -0.4472 -0.8944 -0.0000 +vn -0.0000 -0.8944 0.4472 +vn 0.1951 -0.0000 0.9808 +vn 0.8315 -0.0000 0.5556 +vn 0.5556 -0.0000 -0.8315 +vn 0.9808 -0.0000 0.1951 +vn 0.1950 -0.0000 -0.9808 +vn 0.8315 -0.0000 -0.5556 +vn 0.9808 -0.0000 -0.1951 +vn 0.5556 -0.0000 0.8315 +vn -0.8315 -0.0000 0.5556 +vn -0.1951 -0.0000 0.9808 +vn -0.5556 -0.0000 -0.8315 +vn -0.9808 -0.0000 0.1951 +vn -0.1950 -0.0000 -0.9808 +vn -0.8315 -0.0000 -0.5556 +vn -0.9808 -0.0000 -0.1951 +vn -0.5556 -0.0000 0.8315 +vn -0.0000 -0.8944 -0.4472 +vn -0.1951 -0.0000 -0.9808 +vn -0.1950 -0.0000 0.9808 +vn 0.1951 -0.0000 -0.9808 +vn 0.1950 -0.0000 0.9808 +vn 0.9952 0.0980 -0.0000 +vn 0.0980 0.9952 -0.0000 +vn 0.6344 0.7730 -0.0000 +vn 0.9569 0.2903 -0.0000 +vn 0.4714 0.8819 -0.0000 +vn 0.8819 0.4714 -0.0000 +vn 0.2903 0.9569 -0.0000 +vn 0.7730 0.6344 -0.0000 +vn 0.0526 0.9736 0.2223 +vn 0.0547 0.9747 0.2167 +vn 0.0559 0.9904 0.1267 +vn 0.0295 0.9948 0.0979 +vn 0.0674 0.9771 0.2016 +vn 0.0790 0.9866 0.1425 +vn 0.0603 0.9946 0.0840 +vn 0.0415 0.9982 0.0425 +vn 0.0159 0.9997 -0.0176 +vn -0.0955 0.9560 -0.2774 +vn -0.2245 0.9570 -0.1836 +vn -0.2872 0.9478 -0.1384 +vn -0.1173 0.9664 -0.2285 +vn -0.2241 0.9678 -0.1149 +vn -0.3077 0.9487 -0.0731 +vn -0.3894 0.9207 0.0280 +vn -0.3758 0.9267 -0.0067 +vn -0.1632 0.9844 -0.0661 +vn -0.3337 0.9318 0.1429 +vn -0.1690 0.9594 0.2260 +vn -0.3328 0.9407 0.0663 +vn -0.1976 0.9781 0.0652 +vn -0.1496 0.9721 0.1807 +vn -0.1061 0.9359 0.3358 +vn 0.0173 0.9955 0.0934 +vn -0.0255 0.9849 0.1714 +vn -0.0558 0.9975 0.0438 +vn -0.0016 0.9986 0.0536 +vn 0.0598 0.9971 0.0463 +vn 0.0063 0.9992 0.0401 +vn 0.0191 0.9921 0.1236 +vn -0.0206 0.9978 0.0629 +vn -0.0298 0.9871 0.1571 +vn -0.0374 0.9864 0.1602 +vn -0.0338 0.9892 0.1425 +vn -0.0878 0.9925 0.0851 +vn -0.0591 0.9982 0.0020 +vn -0.1585 0.9867 -0.0367 +vn -0.0085 0.9999 0.0086 +vn 0.0044 0.9778 -0.2093 +vn -0.0653 0.9759 -0.2084 +vn -0.1877 0.9596 -0.2098 +vn -0.0494 0.9448 -0.3240 +vn -0.1448 0.9529 -0.2664 +vn -0.0149 0.9409 -0.3384 +vn -0.0241 0.9593 -0.2814 +vn 0.0089 0.9703 -0.2416 +vn -0.0294 0.9910 -0.1305 +vn 0.0967 0.9933 -0.0632 +vn 0.1066 0.9932 0.0457 +vn 0.0081 0.9939 -0.1095 +vn 0.0486 0.9986 -0.0213 +vn 0.1559 0.9877 -0.0080 +vn 0.1812 0.9832 0.0217 +vn 0.1396 0.9885 -0.0583 +vn 0.1786 0.9781 -0.1066 +vn 0.0449 0.9986 -0.0294 +vn 0.0127 0.9994 0.0325 +vn 0.0775 0.9970 -0.0013 +vn 0.1324 0.9891 -0.0642 +vn 0.0415 0.9883 0.1467 +vn 0.0835 0.9887 0.1243 +vn 0.0181 0.9886 0.1495 +vn 0.0892 0.9935 -0.0708 +vn 0.0393 0.9992 0.0024 +vn -0.1195 0.9879 -0.0994 +vn -0.0639 0.9809 -0.1839 +vn -0.0634 0.9915 0.1139 +vn -0.1701 0.9838 0.0562 +vn -0.2861 0.9575 -0.0373 +vn -0.2407 0.9610 -0.1363 +vn -0.1651 0.9700 -0.1783 +vn -0.1162 0.9851 0.1267 +vn -0.1063 0.9844 0.1403 +vn -0.0243 0.9990 0.0386 +vn 0.0878 0.9903 0.1078 +vn 0.1360 0.9879 0.0751 +vn -0.1517 0.9872 0.0483 +vn 0.1246 0.9879 -0.0918 +vn 0.2653 0.9639 -0.0226 +vn 0.1663 0.9705 -0.1744 +vn 0.2400 0.9576 -0.1594 +vn 0.3229 0.9459 -0.0302 +vn 0.3641 0.9307 0.0360 +vn 0.0789 0.9834 -0.1631 +vn 0.0535 0.9721 -0.2282 +vn 0.0074 0.9969 -0.0787 +vn -0.0819 0.9760 -0.2018 +vn -0.1271 0.9879 -0.0886 +vn 0.0788 0.9937 -0.0791 +vn 0.0962 0.9952 0.0181 +vn -0.0141 0.9948 -0.1011 +vn 0.2178 0.9719 0.0898 +vn 0.1317 0.9909 0.0272 +vn 0.0362 0.9993 0.0082 +vn -0.1098 0.9925 -0.0539 +vn 0.1974 0.9730 0.1196 +vn 0.1621 0.9789 0.1244 +vn 0.0387 0.9938 0.1046 +vn 0.0729 0.9867 0.1454 +vn 0.0878 0.9927 0.0826 +vn 0.1092 0.9921 0.0616 +vn -0.1619 0.9859 0.0430 +vn -0.0584 0.9959 0.0689 +vn -0.3221 0.9461 -0.0345 +vn -0.2243 0.9726 -0.0613 +vn -0.1351 0.9905 0.0260 +vn 0.0214 0.9975 0.0672 +vn -0.3602 0.9307 -0.0634 +vn -0.3355 0.9293 -0.1544 +vn -0.2386 0.9711 -0.0048 +vn -0.3325 0.9329 -0.1382 +vn -0.3694 0.9280 -0.0481 +vn -0.2911 0.9565 -0.0201 +vn -0.0005 0.9923 0.1235 +vn -0.1845 0.9827 0.0184 +vn 0.2705 0.9367 0.2222 +vn 0.1421 0.9656 0.2177 +vn 0.0102 0.9993 0.0367 +vn -0.3129 0.9493 -0.0304 +vn 0.3799 0.9043 0.1946 +vn 0.3838 0.8690 0.3122 +vn 0.2591 0.9619 0.0875 +vn 0.3498 0.8877 0.2992 +vn 0.3939 0.9042 0.1650 +vn 0.3360 0.9353 0.1112 +vn 0.0867 0.9962 -0.0054 +vn 0.1685 0.9602 0.2226 +vn -0.0353 0.9994 -0.0036 +vn -0.0521 0.9863 0.1565 +vn 0.0006 0.9940 0.1091 +vn 0.2521 0.9538 0.1633 +vn -0.0729 0.9918 0.1052 +vn -0.1660 0.9732 0.1592 +vn -0.0589 0.9776 0.2019 +vn -0.0967 0.9761 0.1946 +vn -0.1179 0.9923 0.0379 +vn -0.1693 0.9842 0.0510 +vn -0.0903 0.9808 0.1726 +vn -0.0152 0.9818 0.1892 +vn -0.0692 0.9966 0.0444 +vn 0.0346 0.9893 0.1415 +vn 0.0309 0.9911 0.1294 +vn -0.0216 0.9972 0.0715 +vn 0.0509 0.9967 -0.0630 +vn 0.0858 0.9904 0.1087 +vn 0.0617 0.9804 0.1869 +vn 0.2495 0.9500 0.1878 +vn 0.1755 0.9652 0.1941 +vn 0.1446 0.9815 0.1255 +vn 0.2035 0.9749 0.0906 +vn -0.0414 0.9817 0.1857 +vn -0.0269 0.9871 0.1579 +vn -0.2282 0.9618 0.1509 +vn -0.1763 0.9773 0.1175 +vn -0.1834 0.9753 0.1231 +vn -0.1327 0.9905 0.0356 +vn 0.0215 0.9933 0.1135 +vn 0.0413 0.9988 -0.0265 +vn 0.2032 0.9722 0.1166 +vn 0.1740 0.9846 -0.0191 +vn 0.2252 0.9654 0.1315 +vn 0.1659 0.9843 0.0600 +vn 0.1215 0.9834 0.1347 +vn 0.0936 0.9843 0.1494 +vn 0.0942 0.9916 0.0881 +vn 0.1367 0.9742 0.1797 +vn 0.1257 0.9920 -0.0085 +vn 0.2106 0.9670 0.1431 +vn 0.0973 0.9904 -0.0980 +vn 0.1664 0.9831 0.0758 +vn 0.0115 0.9929 -0.1186 +vn 0.0082 0.9995 0.0299 +vn -0.1057 0.9937 -0.0371 +vn -0.1876 0.9817 0.0337 +vn -0.1984 0.9727 0.1201 +vn -0.3190 0.9439 0.0855 +vn -0.2007 0.9410 0.2726 +vn -0.3122 0.9352 0.1674 +vn -0.1268 0.9319 0.3398 +vn -0.1576 0.9576 0.2413 +vn -0.0611 0.9627 0.2635 +vn 0.0533 0.9669 0.2497 +vn -0.0093 0.9991 0.0405 +vn 0.2200 0.9665 0.1326 +vn 0.0247 0.9770 -0.2117 +vn 0.2483 0.9657 -0.0757 +vn 0.0513 0.9397 -0.3381 +vn 0.1405 0.9606 -0.2398 +vn 0.1504 0.9403 -0.3053 +vn 0.0724 0.9571 -0.2805 +vn 0.2652 0.9501 -0.1645 +vn 0.0892 0.9803 -0.1763 +vn 0.2711 0.9626 0.0013 +vn 0.1019 0.9947 0.0128 +vn 0.0512 0.9930 0.1060 +vn -0.0044 0.9898 0.1426 +vn -0.2406 0.9626 0.1244 +vn -0.1909 0.9739 0.1225 +vn -0.2874 0.9529 0.0967 +vn -0.2088 0.9779 0.0050 +vn -0.0654 0.9962 0.0584 +vn -0.0137 0.9954 -0.0948 +vn 0.2658 0.9634 0.0349 +vn 0.1488 0.9886 0.0220 +vn 0.1681 0.9697 0.1775 +vn 0.2598 0.9480 0.1836 +vn -0.1069 0.9942 -0.0112 +vn -0.0699 0.9853 0.1560 +vn -0.2536 0.9666 -0.0362 +vn -0.2466 0.9596 0.1355 +vn -0.1692 0.9852 -0.0257 +vn -0.1878 0.9717 0.1431 +vn -0.0248 0.9995 -0.0186 +vn 0.0019 0.9909 0.1343 +vn 0.0587 0.9954 -0.0753 +vn 0.1595 0.9853 0.0612 +vn 0.0773 0.9810 -0.1780 +vn 0.1856 0.9815 -0.0458 +vn -0.0142 0.9614 -0.2750 +vn 0.0743 0.9877 -0.1376 +vn -0.0976 0.9285 -0.3582 +vn 0.0024 0.9739 -0.2268 +vn -0.0534 0.9026 -0.4272 +vn 0.0243 0.9490 -0.3144 +vn 0.0579 0.8946 -0.4430 +vn 0.0529 0.9321 -0.3583 +vn 0.1681 0.9076 -0.3847 +vn 0.0706 0.9436 -0.3234 +vn 0.2219 0.9385 -0.2644 +vn 0.0543 0.9793 -0.1951 +vn 0.1634 0.9795 -0.1175 +vn -0.0106 0.9999 -0.0046 +vn 0.0454 0.9990 0.0033 +vn -0.0688 0.9843 0.1623 +vn -0.0973 0.9927 0.0717 +vn -0.1229 0.9649 0.2321 +vn -0.2475 0.9632 0.1048 +vn -0.2053 0.9613 0.1837 +vn -0.2852 0.9493 0.1324 +vn -0.2269 0.9728 0.0468 +vn -0.1643 0.9716 0.1701 +vn -0.1399 0.9867 -0.0828 +vn 0.0433 0.9794 0.1970 +vn 0.0327 0.9916 -0.1248 +vn 0.2324 0.9583 0.1665 +vn 0.2389 0.9669 -0.0895 +vn 0.3284 0.9434 0.0467 +vn 0.3737 0.9271 -0.0291 +vn 0.2981 0.9490 -0.1028 +vn 0.3479 0.9374 0.0116 +vn 0.1135 0.9796 -0.1660 +vn 0.0946 0.9946 0.0434 +vn -0.1236 0.9859 -0.1132 +vn -0.2103 0.9730 0.0947 +vn -0.2464 0.9689 -0.0246 +vn -0.2906 0.9458 0.1452 +vn -0.1845 0.9826 -0.0224 +vn -0.1180 0.9835 0.1368 +vn 0.2373 0.9681 -0.0810 +vn 0.0819 0.9901 -0.1137 +vn 0.1214 0.9806 -0.1538 +vn 0.2617 0.9553 -0.1377 +vn -0.1976 0.9670 -0.1611 +vn -0.1490 0.9706 -0.1888 +vn -0.2721 0.9441 -0.1863 +vn -0.2578 0.9420 -0.2151 +vn -0.0933 0.9781 -0.1862 +vn -0.1291 0.9696 -0.2079 +vn 0.0766 0.9871 -0.1406 +vn 0.0033 0.9881 -0.1536 +vn 0.1032 0.9932 -0.0541 +vn 0.0315 0.9948 -0.0971 +vn 0.0636 0.9973 0.0370 +vn 0.0224 0.9970 -0.0742 +vn -0.0981 0.9912 0.0888 +vn -0.0872 0.9915 -0.0967 +vn -0.2624 0.9619 0.0767 +vn -0.1990 0.9666 -0.1614 +vn -0.1991 0.9798 0.0164 +vn -0.1255 0.9636 -0.2359 +vn 0.0422 0.9976 -0.0554 +vn 0.0736 0.9603 -0.2690 +vn 0.2875 0.9530 -0.0958 +vn 0.2593 0.9369 -0.2343 +vn 0.4019 0.9118 -0.0838 +vn 0.3444 0.9260 -0.1543 +vn 0.3404 0.9396 -0.0349 +vn 0.2755 0.9588 -0.0694 +vn 0.1752 0.9840 0.0326 +vn 0.1171 0.9931 -0.0051 +vn -0.0038 0.9953 0.0971 +vn -0.0544 0.9976 0.0418 +vn -0.1365 0.9790 0.1512 +vn -0.2005 0.9746 0.0997 +vn -0.1493 0.9678 0.2028 +vn -0.2224 0.9573 0.1846 +vn -0.0395 0.9689 0.2442 +vn -0.0981 0.9557 0.2776 +vn 0.0176 0.9720 0.2343 +vn 0.0464 0.9480 0.3147 +vn -0.0781 0.9897 0.1202 +vn 0.1044 0.9688 0.2248 +vn -0.1476 0.9843 -0.0968 +vn 0.1178 0.9930 -0.0048 +vn -0.0686 0.9518 -0.2991 +vn 0.1269 0.9598 -0.2504 +vn 0.0747 0.9226 -0.3786 +vn 0.0988 0.9270 -0.3617 +vn 0.0759 0.9316 -0.3555 +vn -0.0153 0.9447 -0.3275 +vn -0.0898 0.9534 -0.2881 +vn -0.1692 0.9562 -0.2389 +vn -0.2151 0.9493 -0.2295 +vn -0.2225 0.9521 -0.2096 +vn 0.0331 0.9745 0.2219 +vn -0.0706 0.9794 0.1893 +vn 0.0081 0.9955 0.0944 +vn 0.1578 0.9781 0.1355 +vn -0.2222 0.9592 0.1745 +vn -0.2352 0.9713 0.0346 +vn -0.2205 0.9468 0.2344 +vn -0.2735 0.9613 0.0323 +vn -0.1197 0.9592 0.2560 +vn -0.0914 0.9953 0.0330 +vn -0.0680 0.9883 0.1363 +vn 0.0757 0.9970 -0.0132 +vn -0.0175 0.9965 -0.0815 +vn 0.1249 0.9889 -0.0799 +vn 0.0731 0.9694 -0.2343 +vn 0.1110 0.9890 -0.0983 +vn 0.0351 0.9721 -0.2318 +vn -0.0482 0.9975 -0.0524 +vn -0.1457 0.9828 -0.1136 +vn -0.2492 0.9683 0.0168 +vn -0.2494 0.9683 -0.0161 +vn -0.2536 0.9666 0.0362 +vn -0.1544 0.9869 -0.0456 +vn -0.0494 0.9981 -0.0372 +vn 0.0783 0.9812 -0.1765 +vn 0.2224 0.9633 -0.1502 +vn 0.2723 0.9054 -0.3258 +vn 0.3849 0.8959 -0.2219 +vn 0.3420 0.8421 -0.4170 +vn 0.3765 0.8991 -0.2236 +vn 0.3027 0.8537 -0.4238 +vn 0.2519 0.9544 -0.1601 +vn 0.1889 0.9153 -0.3556 +vn 0.0807 0.9949 -0.0602 +vn 0.0880 0.9706 -0.2241 +vn -0.0525 0.9973 0.0505 +vn 0.0275 0.9970 -0.0726 +vn -0.0844 0.9853 0.1485 +vn 0.0176 0.9996 0.0218 +vn -0.0157 0.9801 0.1981 +vn -0.0948 0.9952 0.0257 +vn -0.0418 0.9840 0.1730 +vn -0.3446 0.9383 -0.0281 +vn -0.2436 0.9681 0.0583 +vn -0.4232 0.9024 -0.0804 +vn -0.3412 0.9340 -0.1061 +vn -0.1944 0.9780 -0.0759 +vn -0.1840 0.9565 -0.2265 +vn 0.1230 0.9921 -0.0259 +vn 0.0805 0.9651 -0.2494 +vn 0.1822 0.9832 0.0128 +vn 0.1446 0.9660 -0.2141 +vn 0.0014 0.9998 0.0185 +vn -0.0244 0.9862 -0.1638 +vn -0.1252 0.9916 0.0307 +vn -0.1708 0.9800 -0.1019 +vn -0.0730 0.9853 -0.1546 +vn -0.0680 0.9898 -0.1253 +vn -0.1020 0.9916 0.0795 +vn -0.0608 0.9952 0.0763 +vn -0.0498 0.9978 -0.0448 +vn -0.1506 0.9794 0.1343 +vn -0.0296 0.9986 0.0439 +vn -0.1242 0.9622 0.2425 +vn -0.1415 0.9852 0.0970 +vn -0.1481 0.9465 0.2867 +vn -0.3210 0.9391 0.1230 +vn -0.2531 0.9474 0.1961 +vn -0.2919 0.9448 0.1490 +vn -0.2197 0.9754 0.0160 +vn -0.0415 0.9845 0.1705 +vn -0.0120 0.9932 -0.1156 +vn 0.1500 0.9718 0.1819 +vn 0.1177 0.9852 -0.1244 +vn 0.0501 0.9815 0.1846 +vn -0.0062 0.9996 -0.0277 +vn -0.1911 0.9690 0.1568 +vn -0.2034 0.9770 0.0643 +vn -0.2706 0.9557 0.1160 +vn -0.2267 0.9719 0.0642 +vn -0.1777 0.9821 0.0623 +vn -0.0734 0.9968 -0.0315 +vn -0.0322 0.9993 -0.0202 +vn 0.1059 0.9764 -0.1883 +vn 0.0996 0.9861 -0.1327 +vn 0.2347 0.9085 -0.3457 +vn 0.2271 0.9411 -0.2504 +vn 0.2986 0.8457 -0.4424 +vn 0.3128 0.8954 -0.3169 +vn 0.2760 0.8513 -0.4463 +vn 0.2995 0.8997 -0.3176 +vn 0.2245 0.8982 -0.3780 +vn 0.1953 0.9313 -0.3075 +vn 0.1412 0.9474 -0.2873 +vn 0.0622 0.9479 -0.3123 +vn 0.0551 0.9715 -0.2306 +vn -0.1037 0.9445 -0.3116 +vn -0.1113 0.9706 -0.2133 +vn -0.2855 0.9264 -0.2453 +vn -0.3541 0.9171 -0.1832 +vn -0.2502 0.9628 -0.1023 +vn -0.3849 0.9173 -0.1019 +vn 0.0273 0.9980 0.0576 +vn -0.1096 0.9937 0.0215 +vn 0.2315 0.9621 0.1444 +vn 0.1842 0.9757 0.1188 +vn 0.1341 0.9805 0.1438 +vn 0.1705 0.9761 0.1349 +vn -0.0904 0.9909 0.0998 +vn -0.0334 0.9955 0.0891 +vn -0.1477 0.9874 0.0569 +vn -0.1215 0.9915 0.0456 +vn 0.0629 0.9977 -0.0268 +vn 0.0440 0.9989 -0.0146 +vn -0.0018 0.9855 -0.1696 +vn -0.0144 0.9793 -0.2018 +vn 0.0031 0.9996 -0.0284 +vn 0.0150 0.9922 -0.1236 +vn -0.0199 0.9960 -0.0867 +vn 0.0111 0.9941 -0.1083 +vn -0.0423 0.9945 -0.0957 +vn -0.0965 0.9925 -0.0749 +vn -0.0695 0.9975 0.0125 +vn -0.2350 0.9710 0.0428 +vn -0.0297 0.9841 0.1749 +vn -0.1954 0.9561 0.2185 +vn 0.0636 0.9618 0.2664 +vn 0.0043 0.9404 0.3400 +vn 0.0438 0.9696 0.2406 +vn 0.1167 0.9317 0.3441 +vn -0.1579 0.9771 0.1424 +vn -0.0313 0.9668 0.2537 +vn -0.3481 0.9362 0.0476 +vn -0.2636 0.9563 0.1263 +vn -0.3334 0.9426 0.0162 +vn -0.3141 0.9485 0.0409 +vn -0.2057 0.9780 0.0354 +vn -0.2177 0.9760 0.0107 +vn -0.0815 0.9951 0.0561 +vn -0.0823 0.9966 0.0025 +vn 0.0072 0.9977 0.0667 +vn 0.0167 0.9997 -0.0167 +vn 0.1139 0.9897 0.0863 +vn 0.1369 0.9881 -0.0702 +vn 0.2780 0.9555 0.0988 +vn 0.2961 0.9470 -0.1246 +vn 0.3441 0.9326 0.1091 +vn 0.3303 0.9333 -0.1405 +vn 0.2129 0.9685 0.1290 +vn 0.2100 0.9673 -0.1424 +vn -0.0096 0.9937 0.1113 +vn 0.0363 0.9854 -0.1666 +vn -0.1519 0.9870 0.0529 +vn -0.1098 0.9747 -0.1945 +vn -0.1513 0.9883 0.0189 +vn -0.1936 0.9691 -0.1529 +vn 0.0167 0.9992 0.0362 +vn -0.0844 0.9961 -0.0245 +vn 0.2095 0.9761 0.0579 +vn 0.1513 0.9825 0.1087 +vn 0.2508 0.9665 0.0543 +vn 0.2503 0.9545 0.1624 +vn 0.1575 0.9835 0.0886 +vn 0.1167 0.9781 0.1722 +vn 0.0017 0.9800 0.1990 +vn -0.0945 0.9765 0.1935 +vn -0.0985 0.9394 0.3284 +vn -0.1644 0.9650 0.2041 +vn 0.1388 0.9887 0.0566 +vn 0.0536 0.9964 0.0662 +vn 0.0500 0.9911 0.1230 +vn 0.1140 0.9852 0.1276 +vn -0.0907 0.9920 0.0883 +vn -0.0632 0.9950 0.0773 +vn -0.1196 0.9870 0.1073 +vn -0.0902 0.9959 -0.0015 +vn -0.0106 0.9935 0.1130 +vn -0.0142 0.9993 -0.0347 +vn 0.0781 0.9923 0.0960 +vn 0.0554 0.9984 0.0100 +vn 0.0737 0.9960 0.0496 +vn 0.0769 0.9941 0.0767 +vn 0.0366 0.9993 -0.0109 +vn 0.0752 0.9927 0.0940 +vn -0.0543 0.9975 -0.0458 +vn -0.0235 0.9980 0.0593 +vn -0.1906 0.9816 -0.0115 +vn -0.2214 0.9748 0.0286 +vn -0.2600 0.9608 0.0960 +vn -0.3506 0.9350 0.0536 +vn -0.1979 0.9540 0.2253 +vn -0.2942 0.9475 0.1251 +vn -0.1037 0.9440 0.3132 +vn -0.1620 0.9681 0.1910 +vn -0.0586 0.9353 0.3489 +vn -0.0735 0.9726 0.2205 +vn 0.0272 0.9355 0.3523 +vn 0.0232 0.9723 0.2325 +vn 0.1428 0.9335 0.3288 +vn 0.1436 0.9551 0.2591 +vn 0.2587 0.9237 0.2827 +vn 0.2770 0.9209 0.2744 +vn 0.3157 0.9229 0.2203 +vn 0.3415 0.8992 0.2734 +vn 0.1612 0.9742 0.1578 +vn 0.1996 0.9394 0.2787 +vn -0.1027 0.9887 0.1093 +vn -0.0590 0.9654 0.2538 +vn -0.2752 0.9585 0.0738 +vn -0.2194 0.9577 0.1864 +vn -0.2975 0.9546 0.0133 +vn -0.2041 0.9744 0.0945 +vn -0.1496 0.9828 -0.1085 +vn -0.0200 0.9997 -0.0133 +vn 0.0461 0.9679 -0.2471 +vn 0.1652 0.9793 -0.1172 +vn 0.1966 0.9264 -0.3212 +vn 0.2343 0.9570 -0.1710 +vn 0.3190 0.9010 -0.2939 +vn 0.2458 0.9612 -0.1254 +vn 0.3039 0.9320 -0.1977 +vn 0.1652 0.9861 0.0202 +vn 0.1409 0.9831 -0.1167 +vn 0.0432 0.9828 0.1796 +vn 0.1531 0.9328 -0.3261 +vn 0.1365 0.9482 -0.2869 +vn 0.1004 0.9826 -0.1560 +vn 0.1510 0.9689 -0.1958 +vn 0.0793 0.9856 -0.1494 +vn -0.0005 0.9991 -0.0426 +vn 0.0199 0.9992 0.0356 +vn -0.0460 0.9938 0.1014 +vn 0.0010 0.9912 0.1323 +vn -0.0056 0.9849 0.1733 +vn -0.0244 0.9943 0.1041 +vn 0.0180 0.9903 0.1379 +vn -0.0640 0.9979 0.0131 +vn -0.0103 0.9990 0.0425 +vn -0.0673 0.9953 -0.0699 +vn -0.0306 0.9984 -0.0480 +vn -0.0702 0.9909 -0.1149 +vn -0.0647 0.9938 -0.0901 +vn -0.1033 0.9868 -0.1243 +vn -0.1287 0.9892 -0.0701 +vn -0.0958 0.9907 -0.0965 +vn -0.1467 0.9892 0.0049 +vn -0.0257 0.9994 -0.0241 +vn -0.0830 0.9902 0.1124 +vn 0.0261 0.9957 0.0889 +vn -0.0235 0.9759 0.2170 +vn 0.0289 0.9744 0.2231 +vn -0.0101 0.9531 0.3024 +vn 0.0378 0.9468 0.3196 +vn 0.0295 0.9376 0.3464 +vn 0.0682 0.9428 0.3264 +vn 0.0972 0.9402 0.3264 +vn 0.1279 0.9630 0.2373 +vn 0.1838 0.9522 0.2440 +vn 0.1481 0.9857 0.0809 +vn 0.2196 0.9691 0.1120 +vn 0.0340 0.9977 -0.0578 +vn 0.0839 0.9964 -0.0135 +vn -0.1178 0.9893 -0.0862 +vn -0.1201 0.9909 -0.0608 +vn -0.2376 0.9713 -0.0123 +vn -0.2648 0.9639 -0.0271 +vn -0.3304 0.9414 0.0681 +vn -0.3352 0.9421 0.0057 +vn -0.3139 0.9471 0.0662 +vn -0.2665 0.9629 -0.0423 +vn -0.1676 0.9849 -0.0431 +vn -0.0957 0.9821 -0.1624 +vn 0.0937 0.9798 -0.1767 +vn 0.1330 0.9540 -0.2688 +vn 0.3439 0.9070 -0.2429 +vn 0.3459 0.8897 -0.2981 +vn 0.3924 0.8807 -0.2653 +vn 0.3715 0.8850 -0.2808 +vn 0.1976 0.9368 -0.2888 +vn 0.1776 0.9483 -0.2630 +vn -0.2549 0.9509 -0.1757 +vn -0.1591 0.9749 -0.1560 +vn -0.3293 0.9244 -0.1923 +vn -0.3233 0.9068 -0.2705 +vn -0.2282 0.9529 -0.1997 +vn -0.1273 0.9799 -0.1539 +vn -0.1948 0.9644 -0.1787 +vn 0.1167 0.9830 -0.1418 +vn 0.0952 0.9541 -0.2840 +vn -0.2115 0.9280 -0.3068 +vn 0.3599 0.9293 -0.0830 +vn 0.3234 0.9462 -0.0139 +vn 0.2908 0.9547 -0.0637 +vn 0.3288 0.9261 -0.1853 +vn 0.0821 0.9960 0.0361 +vn -0.1309 0.9903 0.0461 +vn -0.1272 0.9897 0.0651 +vn 0.0685 0.9971 0.0333 +vn -0.1327 0.9905 0.0363 +vn 0.0032 0.9995 0.0307 +vn 0.0035 0.9988 0.0495 +vn -0.1268 0.9903 0.0563 +vn 0.0896 0.9955 0.0297 +vn 0.0756 0.9963 0.0413 +vn 0.0636 0.9959 0.0641 +vn 0.0900 0.9947 0.0488 +vn 0.0047 0.9962 0.0866 +vn -0.1302 0.9818 0.1379 +vn -0.1513 0.9710 0.1852 +vn -0.0290 0.9921 0.1222 +vn -0.2492 0.9591 0.1339 +vn -0.2997 0.9533 0.0364 +vn -0.2310 0.9725 0.0304 +vn -0.2270 0.9588 0.1709 +vn -0.2489 0.9591 -0.1345 +vn -0.0031 0.9680 -0.2507 +vn 0.0314 0.9201 -0.3904 +vn -0.1593 0.9645 -0.2108 +vn 0.2569 0.9382 -0.2321 +vn 0.3279 0.9370 -0.1203 +vn 0.2602 0.9365 -0.2349 +vn 0.2033 0.9037 -0.3770 +vn 0.2568 0.9660 -0.0282 +vn 0.0675 0.9971 -0.0355 +vn 0.0973 0.9916 -0.0849 +vn 0.2335 0.9669 -0.1030 +vn -0.1082 0.9884 -0.1066 +vn -0.1284 0.9814 -0.1427 +vn -0.1304 0.9730 -0.1907 +vn -0.0666 0.9863 -0.1511 +vn -0.0893 0.9911 -0.0983 +vn -0.0440 0.9989 -0.0133 +vn -0.0876 0.9917 -0.0944 +vn -0.1303 0.9791 -0.1561 +vn 0.0076 0.9983 0.0571 +vn -0.0200 0.9985 -0.0512 +vn 0.5000 0.7071 -0.5000 +vn -0.5000 0.7071 0.5000 +vn 0.5000 0.7071 0.5000 +vn -0.5000 0.7071 -0.5000 +vn 0.3878 0.9217 -0.0000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 0.292635 1.000000 +vt 0.585271 1.000000 +vt 0.877906 1.000000 +vt 1.170542 1.000000 +vt 1.463177 1.000000 +vt 1.755813 1.000000 +vt 2.048448 1.000000 +vt 2.341084 1.000000 +vt 0.000000 0.000000 +vt 0.292635 0.000000 +vt 2.048448 0.000000 +vt 2.341084 0.000000 +vt 1.170542 0.000000 +vt 1.463177 0.000000 +vt 0.585271 0.000000 +vt 1.755813 0.000000 +vt 0.877906 0.000000 +vt 1.000000 0.000000 +vt 0.000000 1.500000 +vt 0.666645 0.252796 +vt 0.439340 0.439340 +vt 0.252796 0.666645 +vt 0.114181 0.925975 +vt 0.028822 1.207365 +vt -0.000000 1.500000 +vt -0.000000 0.000000 +vt 1.500000 0.000000 +vt 1.207364 0.028822 +vt 0.925975 0.114181 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.500000 1.000000 +vt 1.000000 0.500000 +vt 0.500000 0.000000 +vt 0.000000 0.500000 +vt -9.522805 6.497724 +vt -9.761403 6.497643 +vt -9.761403 6.247511 +vt -9.522805 6.247598 +vt -10.000001 6.497561 +vt -10.000001 6.247426 +vt -10.000001 5.997290 +vt -9.761403 5.997380 +vt -9.522805 5.997471 +vt -9.522805 11.000001 +vt -9.761403 11.000001 +vt -9.761403 10.749869 +vt -9.522805 10.749874 +vt -10.000001 11.000001 +vt -10.000001 10.749866 +vt -10.000001 10.499730 +vt -9.761403 10.499739 +vt -9.522805 10.499748 +vt -9.761403 10.249607 +vt -9.522805 10.249621 +vt -10.000001 10.249594 +vt -10.000001 9.999458 +vt -9.761403 9.999476 +vt -9.522805 9.999495 +vt -9.761403 9.749346 +vt -9.522805 9.749369 +vt -10.000001 9.749323 +vt -10.000001 9.499187 +vt -9.761403 9.499214 +vt -9.522805 9.499242 +vt -9.761403 9.249084 +vt -9.522805 9.249115 +vt -10.000001 9.249052 +vt -10.000001 8.998917 +vt -9.761403 8.998953 +vt -9.522805 8.998989 +vt -9.761403 8.748821 +vt -9.522805 8.748863 +vt -10.000001 8.748781 +vt -10.000001 8.498646 +vt -9.761403 8.498692 +vt -9.522805 8.498736 +vt -9.761403 8.248560 +vt -9.522805 8.248610 +vt -10.000001 8.248510 +vt -10.000001 7.998375 +vt -9.761403 7.998429 +vt -9.522805 7.998483 +vt -9.761403 7.748298 +vt -9.522805 7.748357 +vt -10.000001 7.748240 +vt -10.000001 7.498104 +vt -9.761403 7.498167 +vt -9.522805 7.498230 +vt -9.761403 7.248036 +vt -9.522805 7.248104 +vt -10.000001 7.247968 +vt -10.000001 6.997833 +vt -9.761403 6.997905 +vt -9.522805 6.997977 +vt -9.761403 6.747773 +vt -9.522805 6.747850 +vt -10.000001 6.747697 +vt -2.842070 7.000000 +vt -3.080668 6.999928 +vt -3.080668 6.749924 +vt -2.842070 6.750000 +vt -3.319266 6.999856 +vt -3.319266 6.749847 +vt -3.319266 6.499838 +vt -3.080668 6.499919 +vt -2.842070 6.500000 +vt -3.557864 6.999784 +vt -3.557863 6.749770 +vt -3.796461 6.999711 +vt -3.796461 6.749693 +vt -3.796461 6.499675 +vt -3.557864 6.499757 +vt -4.035059 6.999639 +vt -4.035059 6.749617 +vt -4.273657 6.999567 +vt -4.273657 6.749540 +vt -4.273657 6.499513 +vt -4.035059 6.499594 +vt -4.512255 6.999495 +vt -4.512255 6.749463 +vt -4.750852 6.999423 +vt -4.750852 6.749387 +vt -4.750852 6.499351 +vt -4.512255 6.499432 +vt -4.989450 6.999350 +vt -4.989450 6.749310 +vt -5.228047 6.999278 +vt -5.228047 6.749232 +vt -5.228047 6.499187 +vt -4.989450 6.499269 +vt -5.466644 6.999206 +vt -5.466644 6.749156 +vt -5.705242 6.999133 +vt -5.705242 6.749079 +vt -5.705242 6.499025 +vt -5.466644 6.499106 +vt -5.943840 6.999061 +vt -5.943840 6.749002 +vt -6.182438 6.998989 +vt -6.182438 6.748925 +vt -6.182438 6.498862 +vt -5.943840 6.498943 +vt -6.421036 6.998917 +vt -6.421036 6.748848 +vt -6.659633 6.998844 +vt -6.659633 6.748772 +vt -6.659633 6.498700 +vt -6.421036 6.498781 +vt -6.898231 6.998772 +vt -6.898231 6.748695 +vt -7.136828 6.998700 +vt -7.136828 6.748618 +vt -7.136828 6.498537 +vt -6.898231 6.498618 +vt -7.375426 6.998628 +vt -7.375426 6.748541 +vt -7.614024 6.998556 +vt -7.614024 6.748465 +vt -7.614024 6.498374 +vt -7.375426 6.498455 +vt -7.852622 6.998484 +vt -7.852622 6.748388 +vt -8.091220 6.998412 +vt -8.091220 6.748312 +vt -8.091220 6.498212 +vt -7.852622 6.498293 +vt -8.329817 6.998339 +vt -8.329817 6.748234 +vt -8.568415 6.998267 +vt -8.568415 6.748158 +vt -8.568415 6.498049 +vt -8.329817 6.498131 +vt -8.807013 6.998194 +vt -8.807012 6.748081 +vt -9.045609 6.998122 +vt -9.045609 6.748004 +vt -9.045609 6.497887 +vt -8.807013 6.497968 +vt -9.284207 6.998050 +vt -9.284207 6.747927 +vt -9.284207 6.497806 +vt -2.842070 7.500000 +vt -3.080668 7.499937 +vt -3.080668 7.249932 +vt -2.842070 7.250000 +vt -3.319266 7.499874 +vt -3.319266 7.249865 +vt -3.557864 7.499811 +vt -3.557863 7.249797 +vt -3.796461 7.499748 +vt -3.796461 7.249729 +vt -4.035059 7.499684 +vt -4.035059 7.249661 +vt -4.273657 7.499621 +vt -4.273657 7.249594 +vt -4.512255 7.499558 +vt -4.512255 7.249527 +vt -4.750852 7.499495 +vt -4.750852 7.249459 +vt -4.989450 7.499432 +vt -4.989450 7.249391 +vt -5.228047 7.499368 +vt -5.228047 7.249323 +vt -5.466644 7.499305 +vt -5.466644 7.249255 +vt -5.705242 7.499242 +vt -5.705242 7.249187 +vt -5.943840 7.499178 +vt -5.943840 7.249120 +vt -6.182438 7.499115 +vt -6.182438 7.249052 +vt -6.421036 7.499052 +vt -6.421036 7.248984 +vt -6.659633 7.498989 +vt -6.659633 7.248917 +vt -6.898231 7.498925 +vt -6.898231 7.248848 +vt -7.136828 7.498862 +vt -7.136828 7.248781 +vt -7.375426 7.498798 +vt -7.375426 7.248713 +vt -7.614024 7.498735 +vt -7.614024 7.248646 +vt -7.852622 7.498672 +vt -7.852622 7.248578 +vt -8.091220 7.498610 +vt -8.091220 7.248510 +vt -8.329817 7.498546 +vt -8.329817 7.248442 +vt -8.568415 7.498483 +vt -8.568415 7.248375 +vt -8.807013 7.498420 +vt -8.807012 7.248307 +vt -9.045609 7.498356 +vt -9.045609 7.248239 +vt -9.284207 7.498293 +vt -9.284207 7.248171 +vt -2.842070 8.000001 +vt -3.080668 7.999947 +vt -3.080668 7.749942 +vt -2.842070 7.750001 +vt -3.319266 7.999892 +vt -3.319266 7.749883 +vt -3.557864 7.999838 +vt -3.557863 7.749825 +vt -3.796461 7.999784 +vt -3.796461 7.749765 +vt -4.035059 7.999730 +vt -4.035059 7.749707 +vt -4.273657 7.999676 +vt -4.273657 7.749649 +vt -4.512255 7.999621 +vt -4.512255 7.749589 +vt -4.750852 7.999567 +vt -4.750852 7.749531 +vt -4.989450 7.999513 +vt -4.989450 7.749472 +vt -5.228047 7.999459 +vt -5.228047 7.749413 +vt -5.466644 7.999404 +vt -5.466644 7.749354 +vt -5.705242 7.999350 +vt -5.705242 7.749296 +vt -5.943840 7.999296 +vt -5.943840 7.749237 +vt -6.182438 7.999242 +vt -6.182438 7.749178 +vt -6.421036 7.999187 +vt -6.421036 7.749120 +vt -6.659633 7.999133 +vt -6.659633 7.749061 +vt -6.898231 7.999079 +vt -6.898231 7.749002 +vt -7.136828 7.999024 +vt -7.136828 7.748943 +vt -7.375426 7.998970 +vt -7.375426 7.748884 +vt -7.614024 7.998916 +vt -7.614024 7.748826 +vt -7.852622 7.998862 +vt -7.852622 7.748767 +vt -8.091220 7.998808 +vt -8.091220 7.748709 +vt -8.329817 7.998754 +vt -8.329817 7.748650 +vt -8.568415 7.998700 +vt -8.568415 7.748591 +vt -8.807013 7.998646 +vt -8.807012 7.748532 +vt -9.045609 7.998591 +vt -9.045609 7.748474 +vt -9.284207 7.998537 +vt -9.284207 7.748415 +vt -2.842070 8.500001 +vt -3.080668 8.499956 +vt -3.080668 8.249951 +vt -2.842070 8.250001 +vt -3.319266 8.499910 +vt -3.319266 8.249901 +vt -3.557864 8.499865 +vt -3.557863 8.249851 +vt -3.796461 8.499820 +vt -3.796461 8.249802 +vt -4.035059 8.499775 +vt -4.035059 8.249752 +vt -4.273657 8.499730 +vt -4.273657 8.249702 +vt -4.512255 8.499685 +vt -4.512255 8.249653 +vt -4.750852 8.499640 +vt -4.750852 8.249603 +vt -4.989450 8.499596 +vt -4.989450 8.249554 +vt -5.228047 8.499550 +vt -5.228047 8.249504 +vt -5.466644 8.499504 +vt -5.466644 8.249454 +vt -5.705242 8.499459 +vt -5.705242 8.249405 +vt -5.943840 8.499414 +vt -5.943840 8.249355 +vt -6.182438 8.499369 +vt -6.182438 8.249306 +vt -6.421036 8.499323 +vt -6.421036 8.249255 +vt -6.659633 8.499278 +vt -6.659633 8.249206 +vt -6.898231 8.499233 +vt -6.898231 8.249156 +vt -7.136828 8.499187 +vt -7.136828 8.249105 +vt -7.375426 8.499142 +vt -7.375426 8.249056 +vt -7.614024 8.499097 +vt -7.614024 8.249006 +vt -7.852622 8.499052 +vt -7.852622 8.248957 +vt -8.091220 8.499007 +vt -8.091220 8.248907 +vt -8.329817 8.498962 +vt -8.329817 8.248857 +vt -8.568415 8.498917 +vt -8.568415 8.248808 +vt -8.807013 8.498871 +vt -8.807012 8.248758 +vt -9.045609 8.498826 +vt -9.045609 8.248709 +vt -9.284207 8.498781 +vt -9.284207 8.248659 +vt -2.842070 9.000001 +vt -3.080668 8.999965 +vt -3.080668 8.749960 +vt -2.842070 8.750001 +vt -3.319266 8.999928 +vt -3.319266 8.749920 +vt -3.557864 8.999893 +vt -3.557863 8.749879 +vt -3.796461 8.999857 +vt -3.796461 8.749838 +vt -4.035059 8.999821 +vt -4.035059 8.749798 +vt -4.273657 8.999785 +vt -4.273657 8.749758 +vt -4.512255 8.999749 +vt -4.512255 8.749717 +vt -4.750852 8.999713 +vt -4.750852 8.749677 +vt -4.989450 8.999677 +vt -4.989450 8.749636 +vt -5.228047 8.999640 +vt -5.228047 8.749596 +vt -5.466644 8.999604 +vt -5.466644 8.749554 +vt -5.705242 8.999568 +vt -5.705242 8.749514 +vt -5.943840 8.999532 +vt -5.943840 8.749473 +vt -6.182438 8.999496 +vt -6.182438 8.749432 +vt -6.421036 8.999459 +vt -6.421036 8.749392 +vt -6.659633 8.999423 +vt -6.659633 8.749351 +vt -6.898231 8.999387 +vt -6.898231 8.749310 +vt -7.136828 8.999351 +vt -7.136828 8.749269 +vt -7.375426 8.999315 +vt -7.375426 8.749228 +vt -7.614024 8.999279 +vt -7.614024 8.749187 +vt -7.852622 8.999243 +vt -7.852622 8.749147 +vt -8.091220 8.999207 +vt -8.091220 8.749107 +vt -8.329817 8.999170 +vt -8.329817 8.749065 +vt -8.568415 8.999134 +vt -8.568415 8.749025 +vt -8.807013 8.999098 +vt -8.807012 8.748984 +vt -9.045609 8.999062 +vt -9.045609 8.748943 +vt -9.284207 8.999025 +vt -9.284207 8.748903 +vt -2.842070 9.500001 +vt -3.080668 9.499973 +vt -3.080668 9.249969 +vt -2.842070 9.250001 +vt -3.319266 9.499947 +vt -3.319266 9.249937 +vt -3.557864 9.499920 +vt -3.557863 9.249907 +vt -3.796461 9.499892 +vt -3.796461 9.249874 +vt -4.035059 9.499865 +vt -4.035059 9.249843 +vt -4.273657 9.499838 +vt -4.273657 9.249811 +vt -4.512255 9.499811 +vt -4.512255 9.249780 +vt -4.750852 9.499784 +vt -4.750852 9.249748 +vt -4.989450 9.499756 +vt -4.989450 9.249716 +vt -5.228047 9.499729 +vt -5.228047 9.249685 +vt -5.466644 9.499702 +vt -5.466644 9.249653 +vt -5.705242 9.499675 +vt -5.705242 9.249621 +vt -5.943840 9.499647 +vt -5.943840 9.249589 +vt -6.182438 9.499620 +vt -6.182438 9.249557 +vt -6.421036 9.499594 +vt -6.421036 9.249526 +vt -6.659633 9.499566 +vt -6.659633 9.249495 +vt -6.898231 9.499538 +vt -6.898231 9.249462 +vt -7.136828 9.499512 +vt -7.136828 9.249432 +vt -7.375426 9.499485 +vt -7.375426 9.249399 +vt -7.614024 9.499458 +vt -7.614024 9.249369 +vt -7.852622 9.499432 +vt -7.852622 9.249337 +vt -8.091220 9.499405 +vt -8.091220 9.249306 +vt -8.329817 9.499378 +vt -8.329817 9.249274 +vt -8.568415 9.499351 +vt -8.568415 9.249243 +vt -8.807013 9.499323 +vt -8.807012 9.249210 +vt -9.045609 9.499296 +vt -9.045609 9.249179 +vt -9.284207 9.499269 +vt -9.284207 9.249147 +vt -2.842070 10.000001 +vt -3.080668 9.999983 +vt -3.080668 9.749978 +vt -2.842070 9.750001 +vt -3.319266 9.999965 +vt -3.319266 9.749956 +vt -3.557864 9.999947 +vt -3.557863 9.749933 +vt -3.796461 9.999929 +vt -3.796461 9.749910 +vt -4.035059 9.999912 +vt -4.035059 9.749888 +vt -4.273657 9.999894 +vt -4.273657 9.749866 +vt -4.512255 9.999876 +vt -4.512255 9.749843 +vt -4.750852 9.999858 +vt -4.750852 9.749821 +vt -4.989450 9.999840 +vt -4.989450 9.749798 +vt -5.228047 9.999822 +vt -5.228047 9.749775 +vt -5.466644 9.999804 +vt -5.466644 9.749753 +vt -5.705242 9.999785 +vt -5.705242 9.749730 +vt -5.943840 9.999767 +vt -5.943840 9.749707 +vt -6.182438 9.999749 +vt -6.182438 9.749685 +vt -6.421036 9.999731 +vt -6.421036 9.749661 +vt -6.659633 9.999713 +vt -6.659633 9.749640 +vt -6.898231 9.999695 +vt -6.898231 9.749617 +vt -7.136828 9.999676 +vt -7.136828 9.749594 +vt -7.375426 9.999658 +vt -7.375426 9.749571 +vt -7.614024 9.999640 +vt -7.614024 9.749549 +vt -7.852622 9.999621 +vt -7.852622 9.749526 +vt -8.091220 9.999603 +vt -8.091220 9.749504 +vt -8.329817 9.999585 +vt -8.329817 9.749481 +vt -8.568415 9.999567 +vt -8.568415 9.749458 +vt -8.807013 9.999549 +vt -8.807012 9.749435 +vt -9.045609 9.999531 +vt -9.045609 9.749413 +vt -9.284207 9.999513 +vt -9.284207 9.749391 +vt -2.842070 10.500001 +vt -3.080668 10.499992 +vt -3.080668 10.249988 +vt -2.842070 10.250001 +vt -3.319266 10.499983 +vt -3.319266 10.249973 +vt -3.557864 10.499973 +vt -3.557863 10.249960 +vt -3.796461 10.499965 +vt -3.796461 10.249947 +vt -4.035059 10.499956 +vt -4.035059 10.249933 +vt -4.273657 10.499948 +vt -4.273657 10.249921 +vt -4.512255 10.499939 +vt -4.512255 10.249907 +vt -4.750852 10.499929 +vt -4.750852 10.249893 +vt -4.989450 10.499920 +vt -4.989450 10.249880 +vt -5.228047 10.499910 +vt -5.228047 10.249866 +vt -5.466644 10.499901 +vt -5.466644 10.249852 +vt -5.705242 10.499892 +vt -5.705242 10.249839 +vt -5.943840 10.499884 +vt -5.943840 10.249825 +vt -6.182438 10.499874 +vt -6.182438 10.249811 +vt -6.421036 10.499865 +vt -6.421036 10.249798 +vt -6.659633 10.499856 +vt -6.659633 10.249784 +vt -6.898231 10.499847 +vt -6.898231 10.249771 +vt -7.136828 10.499838 +vt -7.136828 10.249757 +vt -7.375426 10.499828 +vt -7.375426 10.249743 +vt -7.614024 10.499820 +vt -7.614024 10.249729 +vt -7.852622 10.499811 +vt -7.852622 10.249716 +vt -8.091220 10.499803 +vt -8.091220 10.249702 +vt -8.329817 10.499794 +vt -8.329817 10.249689 +vt -8.568415 10.499784 +vt -8.568415 10.249676 +vt -8.807013 10.499775 +vt -8.807012 10.249661 +vt -9.045609 10.499766 +vt -9.045609 10.249649 +vt -9.284207 10.499758 +vt -9.284207 10.249636 +vt -2.842070 11.000001 +vt -3.080668 11.000001 +vt -3.080668 10.749996 +vt -2.842070 10.750001 +vt -3.319266 11.000001 +vt -3.319266 10.749992 +vt -3.557864 11.000001 +vt -3.557863 10.749988 +vt -3.796461 11.000001 +vt -3.796461 10.749983 +vt -4.035059 11.000001 +vt -4.035059 10.749978 +vt -4.273657 11.000001 +vt -4.273657 10.749974 +vt -4.512255 11.000001 +vt -4.512255 10.749969 +vt -4.750852 11.000001 +vt -4.750852 10.749966 +vt -4.989450 11.000001 +vt -4.989450 10.749960 +vt -5.228047 11.000001 +vt -5.228047 10.749956 +vt -5.466644 11.000002 +vt -5.466644 10.749951 +vt -5.705242 11.000002 +vt -5.705242 10.749947 +vt -5.943840 11.000002 +vt -5.943840 10.749942 +vt -6.182438 11.000002 +vt -6.182438 10.749938 +vt -6.421036 11.000002 +vt -6.421036 10.749933 +vt -6.659633 11.000002 +vt -6.659633 10.749929 +vt -6.898231 11.000002 +vt -6.898231 10.749924 +vt -7.136828 11.000002 +vt -7.136828 10.749920 +vt -7.375426 11.000002 +vt -7.375426 10.749915 +vt -7.614024 11.000002 +vt -7.614024 10.749910 +vt -7.852622 11.000002 +vt -7.852622 10.749907 +vt -8.091220 11.000002 +vt -8.091220 10.749903 +vt -8.329817 11.000002 +vt -8.329817 10.749897 +vt -8.568415 11.000001 +vt -8.568415 10.749893 +vt -8.807013 11.000001 +vt -8.807012 10.749888 +vt -9.045609 11.000001 +vt -9.045609 10.749884 +vt -9.284207 11.000001 +vt -9.284207 10.749879 +vt -3.080668 6.249914 +vt -2.842070 6.250001 +vt -3.319266 6.249829 +vt -3.319266 5.999820 +vt -3.080668 5.999910 +vt -2.842070 6.000001 +vt -3.557863 6.249743 +vt -3.796461 6.249657 +vt -3.796461 5.999639 +vt -3.557864 5.999729 +vt -4.035059 6.249571 +vt -4.273657 6.249485 +vt -4.273656 5.999458 +vt -4.035059 5.999548 +vt -4.512254 6.249400 +vt -4.750852 6.249314 +vt -4.750852 5.999277 +vt -4.512254 5.999368 +vt -4.989449 6.249228 +vt -5.228047 6.249142 +vt -5.228047 5.999096 +vt -4.989450 5.999187 +vt -5.466644 6.249056 +vt -5.705242 6.248970 +vt -5.705242 5.998915 +vt -5.466644 5.999005 +vt -5.943840 6.248884 +vt -6.182438 6.248798 +vt -6.182438 5.998735 +vt -5.943840 5.998825 +vt -6.421036 6.248713 +vt -6.659633 6.248627 +vt -6.659633 5.998555 +vt -6.421036 5.998645 +vt -6.898231 6.248541 +vt -7.136828 6.248455 +vt -7.136828 5.998374 +vt -6.898231 5.998465 +vt -7.375426 6.248369 +vt -7.614024 6.248283 +vt -7.614024 5.998193 +vt -7.375426 5.998283 +vt -7.852622 6.248198 +vt -8.091220 6.248113 +vt -8.091220 5.998013 +vt -7.852622 5.998103 +vt -8.329817 6.248027 +vt -8.568415 6.247941 +vt -8.568416 5.997832 +vt -8.329818 5.997923 +vt -8.807013 6.247855 +vt -9.045610 6.247769 +vt -9.045610 5.997652 +vt -8.807013 5.997742 +vt -9.284207 6.247684 +vt -9.284208 5.997561 +vt 0.000000 1.000000 +vt 0.750000 0.250000 +vt 1.000000 0.250000 +vt 0.750000 0.500000 +vt 0.000000 0.250000 +vt 0.250000 0.250000 +vt 0.250000 0.500000 +vt 0.000000 0.500000 +vt 0.500000 0.250000 +vt 0.500000 0.500000 +vt 0.250000 0.000000 +vt 0.250000 0.750000 +vt 0.500000 0.750000 +vt 0.500000 1.000000 +vt 0.250000 1.000000 +s 0 +f 293/199/73 292/199/73 229/199/73 230/199/73 +f 295/199/74 217/199/74 216/199/74 294/199/74 +f 296/199/75 293/199/75 230/199/75 231/199/75 +f 297/199/76 218/199/76 217/199/76 295/199/76 +f 195/199/77 196/199/77 238/199/77 237/199/77 +f 298/199/78 296/199/78 231/199/78 213/199/78 +f 299/199/79 219/199/79 218/199/79 297/199/79 +f 390/199/80 384/199/80 387/199/80 385/199/80 +f 298/199/81 213/199/81 219/199/81 299/199/81 +f 183/199/82 225/199/82 244/199/82 202/199/82 +f 194/199/83 236/199/83 232/199/83 190/199/83 +f 193/199/84 235/199/84 234/199/84 192/199/84 +f 182/199/77 224/199/77 220/199/77 178/199/77 +f 204/199/85 245/199/85 246/199/85 205/199/85 +f 168/199/82 164/199/82 203/199/82 210/199/82 +f 191/199/80 233/199/80 235/199/80 193/199/80 +f 181/199/86 223/199/86 222/199/86 180/199/86 +f 204/199/87 206/199/87 247/199/87 245/199/87 +f 167/199/86 166/199/86 208/199/86 209/199/86 +f 179/199/87 221/199/87 223/199/87 181/199/87 +f 206/199/84 205/199/84 246/199/84 247/199/84 +f 165/199/80 167/199/80 209/199/80 207/199/80 +f 169/199/80 195/199/80 237/199/80 211/199/80 +f 169/199/85 211/199/85 531/199/85 170/199/85 +f 183/199/87 184/199/87 226/199/87 225/199/87 +f 184/199/83 530/199/83 212/199/83 226/199/83 +f 301/199/88 300/199/88 214/199/88 227/199/88 +f 456/199/86 532/199/86 533/199/86 460/199/86 170/199/86 531/199/86 212/199/86 530/199/86 +f 201/199/85 197/199/85 239/199/85 243/199/85 +f 302/199/89 301/199/89 227/199/89 228/199/89 +f 303/199/90 215/199/90 214/199/90 300/199/90 +f 200/199/84 199/199/84 241/199/84 242/199/84 +f 292/199/91 302/199/91 228/199/91 229/199/91 +f 294/199/92 216/199/92 215/199/92 303/199/92 +f 198/199/87 200/199/87 242/199/87 240/199/87 +f 248/199/93 265/199/93 264/199/93 249/199/93 +f 255/199/94 258/199/94 257/199/94 256/199/94 +f 252/199/95 261/199/95 260/199/95 253/199/95 +f 256/199/86 257/199/86 534/200/86 535/201/86 536/202/86 537/203/86 538/204/86 539/205/86 540/206/86 541/207/86 542/208/86 +f 249/199/96 264/199/96 263/199/96 250/199/96 +f 253/199/97 260/199/97 259/199/97 254/199/97 +f 250/199/98 263/199/98 262/199/98 251/199/98 +f 254/199/99 259/199/99 258/199/99 255/199/99 +f 251/199/100 262/199/100 261/199/100 252/199/100 +f 269/199/87 273/199/87 271/199/87 267/199/87 +f 274/199/101 275/199/101 272/199/101 268/199/101 +f 268/199/84 272/199/84 273/199/84 269/199/84 +f 267/199/86 271/199/86 270/199/86 266/199/86 +f 266/199/102 270/199/102 275/199/102 274/199/102 +f 284/199/80 285/199/80 281/199/80 276/199/80 +f 388/199/82 287/199/82 279/199/82 283/199/82 +f 288/199/86 289/199/86 278/199/86 277/199/86 +f 285/199/77 290/199/77 282/199/77 281/199/77 +f 289/199/85 284/199/85 276/199/85 278/199/85 +f 287/199/87 291/199/87 280/199/87 279/199/87 +f 282/199/84 290/199/84 388/199/84 283/199/84 +f 291/199/83 288/199/83 277/199/83 280/199/83 +f 226/199/103 212/199/103 288/199/103 291/199/103 +f 244/199/104 388/199/104 290/199/104 238/199/104 +f 225/199/105 226/199/105 291/199/105 287/199/105 +f 531/199/106 211/199/106 284/199/106 289/199/106 +f 237/199/107 238/199/107 290/199/107 285/199/107 +f 212/199/108 531/199/108 289/199/108 288/199/108 +f 244/199/109 225/199/109 287/199/109 388/199/109 +f 211/199/110 237/199/110 285/199/110 284/199/110 +f 275/199/111 270/199/111 272/199/111 +f 270/199/112 271/199/112 273/199/112 272/199/112 +f 214/199/112 215/199/112 216/199/112 217/199/112 218/199/112 219/199/112 213/199/112 231/199/112 230/199/112 229/199/112 228/199/112 227/199/112 +f 174/199/83 294/199/83 303/199/83 173/199/83 +f 187/199/113 186/199/113 302/199/113 292/199/113 +f 173/199/114 303/199/114 300/199/114 172/199/114 +f 186/199/85 185/199/85 301/199/85 302/199/85 +f 185/199/115 172/199/115 300/199/115 301/199/115 +f 171/199/116 298/199/116 299/199/116 177/199/116 +f 177/199/82 299/199/82 297/199/82 176/199/82 +f 171/199/117 189/199/117 296/199/117 298/199/117 +f 176/199/118 297/199/118 295/199/118 175/199/118 +f 189/199/77 188/199/77 293/199/77 296/199/77 +f 175/199/119 295/199/119 294/199/119 174/199/119 +f 188/199/120 187/199/120 292/199/120 293/199/120 +f 234/199/121 235/199/121 316/199/121 315/199/121 +f 223/199/122 221/199/122 311/199/122 313/199/122 +f 207/199/123 209/199/123 310/199/123 308/199/123 +f 242/199/121 241/199/121 318/199/121 319/199/121 +f 235/199/123 233/199/123 314/199/123 316/199/123 +f 222/199/124 223/199/124 313/199/124 312/199/124 +f 240/199/122 242/199/122 319/199/122 317/199/122 +f 209/199/124 208/199/124 309/199/124 310/199/124 +f 313/199/125 319/199/125 318/199/125 312/199/125 +f 337/199/85 338/199/85 344/199/85 343/199/85 +f 339/199/83 340/199/83 346/199/83 345/199/83 +f 335/199/82 336/199/82 342/199/82 341/199/82 +f 332/199/126 331/199/126 336/199/126 335/199/126 +f 333/199/127 334/199/127 340/199/127 339/199/127 +f 329/199/128 328/199/128 338/199/128 337/199/128 +f 243/199/112 239/199/112 349/199/112 343/199/112 344/199/112 361/199/112 +f 232/199/112 236/199/112 357/199/112 345/199/112 346/199/112 350/199/112 +f 210/199/112 203/199/112 353/199/112 341/199/112 342/199/112 356/199/112 +f 337/199/80 343/199/80 349/199/80 347/199/80 +f 346/199/87 340/199/87 348/199/87 350/199/87 +f 335/199/87 341/199/87 353/199/87 351/199/87 +f 339/199/86 345/199/86 357/199/86 355/199/86 +f 342/199/84 336/199/84 354/199/84 356/199/84 +f 344/199/86 338/199/86 359/199/86 361/199/86 +f 192/199/87 357/199/87 236/199/87 194/199/87 +f 198/199/86 349/199/86 239/199/86 197/199/86 +f 321/199/84 221/199/84 179/199/84 178/199/84 220/199/84 352/199/84 +f 329/199/129 337/199/129 347/199/129 323/199/129 +f 332/199/130 335/199/130 351/199/130 320/199/130 +f 322/199/130 348/199/130 340/199/130 334/199/130 +f 327/199/131 359/199/131 338/199/131 328/199/131 +f 324/199/132 354/199/132 336/199/132 331/199/132 +f 333/199/131 339/199/131 355/199/131 325/199/131 +f 246/199/128 245/199/128 247/199/128 +f 265/199/112 534/199/112 257/199/112 258/199/112 259/199/112 260/199/112 261/199/112 262/199/112 263/199/112 264/199/112 +f 360/199/133 358/199/133 362/199/133 363/199/133 +f 330/199/86 362/199/86 358/199/86 326/199/86 +f 330/199/87 321/199/87 352/199/87 363/199/87 362/199/87 +f 224/199/112 360/199/112 363/199/112 352/199/112 220/199/112 +f 224/199/80 370/199/80 369/199/80 360/199/80 +f 371/199/80 368/199/80 367/199/80 364/199/80 180/199/80 222/199/80 +f 369/199/80 371/199/80 326/199/80 358/199/80 360/199/80 +f 224/199/80 366/199/80 367/199/80 368/199/80 370/199/80 +f 182/199/80 365/199/80 366/199/80 224/199/80 +f 326/199/80 371/199/80 222/199/80 312/199/80 +f 327/199/80 326/199/80 312/199/80 318/199/80 +f 359/199/80 327/199/80 318/199/80 241/199/80 +f 361/199/80 359/199/80 241/199/80 199/199/80 +f 243/199/80 361/199/80 199/199/80 201/199/80 +f 321/199/84 311/199/84 221/199/84 +f 320/199/84 308/199/84 311/199/84 321/199/84 +f 351/199/84 207/199/84 308/199/84 320/199/84 +f 165/199/84 207/199/84 351/199/84 353/199/84 +f 164/199/84 165/199/84 353/199/84 203/199/84 +f 168/199/87 210/199/87 356/199/87 166/199/87 +f 166/199/87 356/199/87 354/199/87 208/199/87 +f 208/199/87 354/199/87 324/199/87 309/199/87 +f 309/199/87 324/199/87 325/199/87 315/199/87 +f 315/199/87 325/199/87 355/199/87 234/199/87 +f 234/199/87 355/199/87 357/199/87 192/199/87 +f 190/199/86 232/199/86 350/199/86 191/199/86 +f 191/199/86 350/199/86 348/199/86 233/199/86 +f 233/199/86 348/199/86 322/199/86 314/199/86 +f 314/199/86 322/199/86 323/199/86 317/199/86 +f 317/199/86 323/199/86 347/199/86 240/199/86 +f 240/199/86 347/199/86 349/199/86 198/199/86 +f 566/199/112 334/199/112 333/199/112 +f 567/199/112 329/199/112 323/199/112 322/199/112 334/199/112 566/199/112 568/199/112 332/199/112 320/199/112 321/199/112 330/199/112 +f 367/199/134 366/199/134 374/199/134 375/199/134 +f 368/199/135 371/199/135 379/199/135 376/199/135 +f 370/199/86 368/199/86 376/199/86 378/199/86 +f 364/199/84 367/199/84 375/199/84 372/199/84 +f 366/199/86 365/199/86 373/199/86 374/199/86 +f 371/199/136 369/199/136 377/199/136 379/199/136 +f 369/199/137 370/199/137 378/199/137 377/199/137 +f 379/199/138 377/199/138 382/199/138 383/199/138 +f 374/199/86 373/199/86 380/199/86 381/199/86 +f 380/199/80 383/199/80 382/199/80 381/199/80 +f 372/199/139 373/199/139 365/199/139 364/199/139 +f 374/199/125 381/199/125 382/199/125 377/199/125 378/199/125 375/199/125 +f 375/199/87 378/199/87 376/199/87 372/199/87 +f 384/199/112 389/199/112 386/199/112 394/199/112 395/199/112 387/199/112 +f 384/199/84 390/199/84 391/199/84 389/199/84 202/199/84 244/199/84 238/199/84 196/199/84 +f 389/199/87 391/199/87 286/199/87 386/199/87 +f 456/199/112 460/199/112 458/199/112 463/199/112 464/199/112 459/199/112 +f 286/199/140 392/199/140 398/199/140 396/199/140 +f 394/199/129 386/199/129 397/199/129 399/199/129 +f 393/199/141 385/199/141 1266/199/141 1267/199/141 +f 387/199/130 395/199/130 1268/199/130 436/199/130 +f 1293/199/141 400/199/141 405/199/141 407/199/141 +f 401/199/130 418/199/130 408/199/130 406/199/130 +f 1269/199/140 1271/199/140 411/199/140 409/199/140 +f 404/199/129 403/199/129 410/199/129 412/199/129 +f 405/199/125 409/199/125 411/199/125 407/199/125 +f 408/199/112 412/199/112 410/199/112 406/199/112 +f 406/199/132 410/199/132 416/199/132 414/199/132 +f 409/199/142 405/199/142 413/199/142 415/199/142 +f 414/199/87 413/199/87 405/199/87 406/199/87 +f 410/199/80 409/199/80 415/199/80 416/199/80 +f 411/199/84 412/199/84 408/199/84 407/199/84 +f 1271/199/84 404/199/84 412/199/84 411/199/84 +f 407/199/84 408/199/84 418/199/84 1293/199/84 +f 436/199/86 1273/199/86 1270/199/86 1266/199/86 +f 419/199/143 402/199/143 430/199/143 422/199/143 +f 397/199/86 396/199/86 402/199/86 419/199/86 +f 423/199/144 1304/199/144 1305/199/144 424/199/144 +f 1295/199/145 1303/199/145 428/199/145 421/199/145 +f 424/199/146 1305/199/146 1297/199/146 417/199/146 +f 421/199/147 428/199/147 1301/199/147 1294/199/147 +f 1296/199/148 429/199/148 1303/199/148 1295/199/148 +f 1294/199/84 1301/199/84 1293/199/84 418/199/84 +f 420/199/149 1302/199/149 429/199/149 1296/199/149 +f 422/199/150 430/199/150 1304/199/150 423/199/150 +f 417/199/87 1297/199/87 1302/199/87 420/199/87 +f 1299/199/77 432/199/77 431/199/77 1298/199/77 +f 1300/199/113 434/199/113 435/199/113 427/199/113 +f 1298/199/117 431/199/117 398/199/117 399/199/117 +f 425/199/120 433/199/120 432/199/120 1299/199/120 +f 427/199/80 435/199/80 433/199/80 425/199/80 +f 401/199/115 400/199/115 1306/199/115 426/199/115 +f 426/199/85 1306/199/85 434/199/85 1300/199/85 +f 1270/199/125 447/199/125 1284/199/125 1285/199/125 440/199/125 1282/199/125 446/199/125 1283/199/125 445/199/125 444/199/125 +f 419/199/112 1294/199/112 1311/199/112 427/199/112 425/199/112 1310/199/112 +f 1278/199/151 439/199/151 1285/199/151 1284/199/151 +f 1273/199/152 1277/199/152 447/199/152 1270/199/152 +f 1275/199/153 438/199/153 445/199/153 1283/199/153 +f 439/199/154 1272/199/154 440/199/154 1285/199/154 +f 438/199/155 1274/199/155 444/199/155 445/199/155 +f 1276/199/156 1275/199/156 1283/199/156 446/199/156 +f 1274/199/84 404/199/84 1271/199/84 444/199/84 +f 437/199/157 1276/199/157 446/199/157 1282/199/157 +f 1277/199/158 1278/199/158 1284/199/158 447/199/158 +f 1272/199/80 437/199/80 1282/199/80 440/199/80 +f 1279/199/82 441/199/82 448/199/82 449/199/82 +f 1281/199/119 443/199/119 451/199/119 1287/199/119 +f 441/199/116 1268/199/116 1267/199/116 448/199/116 +f 442/199/118 1279/199/118 449/199/118 1286/199/118 +f 443/199/87 442/199/87 1286/199/87 451/199/87 +f 403/199/114 1280/199/114 450/199/114 1269/199/114 +f 1280/199/83 1281/199/83 1287/199/83 450/199/83 +f 402/199/125 1301/199/125 428/199/125 1303/199/125 429/199/125 1302/199/125 1297/199/125 1305/199/125 1304/199/125 430/199/125 +f 1273/199/112 1291/199/112 442/199/112 443/199/112 1292/199/112 1274/199/112 +f 392/199/84 394/199/84 399/199/84 398/199/84 +f 392/199/84 393/199/84 395/199/84 394/199/84 +f 1268/199/84 395/199/84 393/199/84 1267/199/84 +f 400/199/86 401/199/86 406/199/86 405/199/86 +f 409/199/86 410/199/86 403/199/86 1269/199/86 +f 387/199/86 436/199/86 1266/199/86 385/199/86 +f 386/199/86 286/199/86 396/199/86 397/199/86 +f 415/199/125 413/199/125 452/199/125 483/199/125 +f 416/199/80 415/199/80 483/199/80 454/199/80 +f 414/199/112 416/199/112 454/199/112 453/199/112 +f 413/199/87 414/199/87 453/199/87 452/199/87 +f 532/199/87 456/199/87 459/199/87 457/199/87 +f 460/199/80 533/199/80 455/199/80 458/199/80 +f 533/199/125 532/199/125 457/199/125 462/199/125 461/199/125 455/199/125 +f 455/199/141 461/199/141 467/199/141 465/199/141 +f 463/199/130 458/199/130 466/199/130 468/199/130 +f 462/199/140 457/199/140 1237/199/140 1238/199/140 +f 459/199/129 464/199/129 1239/199/129 517/199/129 +f 484/199/140 469/199/140 475/199/140 477/199/140 +f 470/199/129 486/199/129 478/199/129 476/199/129 +f 472/199/141 473/199/141 481/199/141 479/199/141 +f 474/199/130 1240/199/130 480/199/130 482/199/130 +f 475/199/125 479/199/125 481/199/125 477/199/125 +f 478/199/112 482/199/112 480/199/112 476/199/112 +f 476/199/131 480/199/131 453/199/131 454/199/131 +f 479/199/159 475/199/159 483/199/159 452/199/159 +f 454/199/80 483/199/80 475/199/80 476/199/80 +f 480/199/87 479/199/87 452/199/87 453/199/87 +f 481/199/86 482/199/86 478/199/86 477/199/86 +f 473/199/86 474/199/86 482/199/86 481/199/86 +f 477/199/86 478/199/86 486/199/86 484/199/86 +f 517/199/84 1242/199/84 1241/199/84 1237/199/84 +f 487/199/160 471/199/160 508/199/160 493/199/160 +f 466/199/84 465/199/84 1232/199/84 471/199/84 487/199/84 1235/199/84 +f 494/199/156 509/199/156 510/199/156 495/199/156 +f 491/199/158 506/199/158 505/199/158 490/199/158 +f 495/199/157 510/199/157 496/199/157 485/199/157 +f 490/199/161 505/199/161 503/199/161 488/199/161 +f 492/199/151 507/199/151 506/199/151 491/199/151 +f 488/199/86 503/199/86 1233/199/86 484/199/86 486/199/86 1236/199/86 +f 489/199/154 504/199/154 507/199/154 492/199/154 +f 493/199/153 508/199/153 509/199/153 494/199/153 +f 485/199/80 496/199/80 504/199/80 489/199/80 +f 498/199/83 512/199/83 511/199/83 497/199/83 +f 501/199/118 515/199/118 516/199/118 502/199/118 +f 497/199/114 511/199/114 467/199/114 468/199/114 +f 499/199/119 513/199/119 512/199/119 498/199/119 +f 502/199/87 516/199/87 513/199/87 499/199/87 +f 470/199/116 469/199/116 514/199/116 500/199/116 +f 500/199/82 514/199/82 515/199/82 501/199/82 +f 467/199/125 511/199/125 512/199/125 513/199/125 1234/199/125 +f 487/199/112 488/199/112 1236/199/112 502/199/112 499/199/112 1235/199/112 +f 523/199/148 1245/199/148 1258/199/148 1257/199/148 +f 1242/199/162 522/199/162 1256/199/162 1241/199/162 +f 1243/199/150 521/199/150 1253/199/150 1254/199/150 +f 1245/199/149 518/199/149 1246/199/149 1258/199/149 +f 521/199/163 519/199/163 1251/199/163 1253/199/163 +f 1244/199/144 1243/199/144 1254/199/144 1255/199/144 +f 519/199/86 474/199/86 473/199/86 1251/199/86 +f 520/199/146 1244/199/146 1255/199/146 1252/199/146 +f 522/199/145 523/199/145 1257/199/145 1256/199/145 +f 518/199/87 520/199/87 1252/199/87 1246/199/87 +f 1248/199/85 1247/199/85 526/199/85 527/199/85 +f 524/199/120 525/199/120 529/199/120 1260/199/120 +f 1247/199/115 1239/199/115 1238/199/115 526/199/115 +f 1249/199/113 1248/199/113 527/199/113 528/199/113 +f 525/199/80 1249/199/80 528/199/80 529/199/80 +f 1240/199/117 1250/199/117 1259/199/117 472/199/117 +f 1250/199/77 524/199/77 1260/199/77 1259/199/77 +f 1241/199/125 1256/199/125 1257/199/125 1258/199/125 1246/199/125 1252/199/125 1255/199/125 1254/199/125 1253/199/125 1251/199/125 +f 1242/199/112 1264/199/112 1249/199/112 525/199/112 1265/199/112 519/199/112 +f 461/199/86 463/199/86 468/199/86 467/199/86 +f 461/199/86 462/199/86 464/199/86 463/199/86 +f 1239/199/86 464/199/86 462/199/86 1238/199/86 +f 469/199/84 470/199/84 476/199/84 475/199/84 +f 479/199/84 480/199/84 1240/199/84 472/199/84 +f 459/199/84 517/199/84 1237/199/84 457/199/84 +f 458/199/84 455/199/84 465/199/84 466/199/84 +f 534/200/164 552/209/164 551/210/164 535/201/164 +f 541/207/165 545/211/165 544/212/165 542/208/165 +f 538/204/166 548/213/166 547/214/166 539/205/166 +f 535/201/167 551/210/167 550/215/167 536/202/167 +f 539/205/168 547/214/168 546/216/168 540/206/168 +f 536/202/169 550/215/169 549/217/169 537/203/169 +f 540/206/170 546/216/170 545/211/170 541/207/170 +f 537/203/171 549/217/171 548/213/171 538/204/171 +f 534/199/80 265/199/80 248/199/80 553/218/80 543/199/80 552/219/80 +f 547/220/86 548/221/86 549/222/86 550/223/86 551/224/86 552/225/86 543/226/86 544/227/86 545/228/86 546/229/86 +f 556/230/112 555/231/112 557/231/112 558/232/112 +f 304/199/112 305/231/112 307/233/112 559/234/112 565/231/112 306/235/112 +f 557/231/86 555/231/86 561/231/86 563/231/86 +f 555/231/87 565/231/87 562/231/87 561/231/87 +f 561/231/112 562/231/112 564/231/112 563/231/112 +f 563/231/80 564/231/80 559/234/80 557/231/80 +f 564/231/84 562/231/84 565/231/84 559/234/84 +f 567/199/112 328/199/112 329/199/112 +f 330/199/112 326/199/112 327/199/112 328/199/112 567/199/112 +f 332/199/112 568/199/112 331/199/112 +f 373/199/112 372/199/112 376/199/112 379/199/112 383/199/112 380/199/112 +f 325/199/112 324/199/112 331/199/112 568/199/112 566/199/112 333/199/112 +s 1 +f 731/236/172 916/237/173 1070/238/174 1069/239/175 +f 916/237/173 582/240/176 758/241/177 1070/238/174 +f 1070/238/174 758/241/177 572/242/178 745/243/179 +f 1069/239/175 1070/238/174 745/243/179 604/244/180 +f 605/245/181 790/246/182 1071/247/183 1055/248/184 +f 790/246/182 569/249/185 748/250/186 1071/247/183 +f 1071/247/183 748/250/186 590/251/187 804/252/188 +f 1055/248/184 1071/247/183 804/252/188 619/253/189 +f 619/253/189 804/252/188 1072/254/190 1041/255/191 +f 804/252/188 590/251/187 766/256/192 1072/254/190 +f 1072/254/190 766/256/192 589/257/193 818/258/194 +f 1041/255/191 1072/254/190 818/258/194 633/259/195 +f 633/259/195 818/258/194 1073/260/196 1027/261/197 +f 818/258/194 589/257/193 765/262/198 1073/260/196 +f 1073/260/196 765/262/198 588/263/199 832/264/200 +f 1027/261/197 1073/260/196 832/264/200 647/265/201 +f 647/265/201 832/264/200 1074/266/202 1013/267/203 +f 832/264/200 588/263/199 764/268/204 1074/266/202 +f 1074/266/202 764/268/204 587/269/205 846/270/206 +f 1013/267/203 1074/266/202 846/270/206 661/271/207 +f 661/271/207 846/270/206 1075/272/208 999/273/209 +f 846/270/206 587/269/205 763/274/210 1075/272/208 +f 1075/272/208 763/274/210 586/275/211 860/276/212 +f 999/273/209 1075/272/208 860/276/212 675/277/213 +f 675/277/213 860/276/212 1076/278/214 985/279/215 +f 860/276/212 586/275/211 762/280/216 1076/278/214 +f 1076/278/214 762/280/216 585/281/217 874/282/218 +f 985/279/215 1076/278/214 874/282/218 689/283/219 +f 689/283/219 874/282/218 1077/284/220 971/285/221 +f 874/282/218 585/281/217 761/286/222 1077/284/220 +f 1077/284/220 761/286/222 584/287/223 888/288/224 +f 971/285/221 1077/284/220 888/288/224 703/289/225 +f 703/289/225 888/288/224 1078/290/226 957/291/227 +f 888/288/224 584/287/223 760/292/228 1078/290/226 +f 1078/290/226 760/292/228 583/293/229 902/294/230 +f 957/291/227 1078/290/226 902/294/230 717/295/231 +f 717/295/231 902/294/230 1079/296/232 943/297/233 +f 902/294/230 583/293/229 759/298/234 1079/296/232 +f 1079/296/232 759/298/234 582/240/176 916/237/173 +f 943/297/233 1079/296/232 916/237/173 731/236/172 +f 574/299/235 774/300/236 1080/301/237 750/302/238 +f 774/300/236 730/303/239 930/304/240 1080/301/237 +f 1080/301/237 930/304/240 744/305/241 775/306/242 +f 750/302/238 1080/301/237 775/306/242 573/307/243 +f 730/303/239 915/308/244 1081/309/245 930/304/240 +f 915/308/244 729/310/246 931/311/247 1081/309/245 +f 1081/309/245 931/311/247 743/312/248 929/313/249 +f 930/304/240 1081/309/245 929/313/249 744/305/241 +f 729/310/246 914/314/250 1082/315/251 931/311/247 +f 914/314/250 728/316/252 932/317/253 1082/315/251 +f 1082/315/251 932/317/253 742/318/254 928/319/255 +f 931/311/247 1082/315/251 928/319/255 743/312/248 +f 728/316/252 913/320/256 1083/321/257 932/317/253 +f 913/320/256 727/322/258 933/323/259 1083/321/257 +f 1083/321/257 933/323/259 741/324/260 927/325/261 +f 932/317/253 1083/321/257 927/325/261 742/318/254 +f 727/322/258 912/326/262 1084/327/263 933/323/259 +f 912/326/262 726/328/264 934/329/265 1084/327/263 +f 1084/327/263 934/329/265 740/330/266 926/331/267 +f 933/323/259 1084/327/263 926/331/267 741/324/260 +f 726/328/264 911/332/268 1085/333/269 934/329/265 +f 911/332/268 725/334/270 935/335/271 1085/333/269 +f 1085/333/269 935/335/271 739/336/272 925/337/273 +f 934/329/265 1085/333/269 925/337/273 740/330/266 +f 725/334/270 910/338/274 1086/339/275 935/335/271 +f 910/338/274 724/340/276 936/341/277 1086/339/275 +f 1086/339/275 936/341/277 738/342/278 924/343/279 +f 935/335/271 1086/339/275 924/343/279 739/336/272 +f 724/340/276 909/344/280 1087/345/281 936/341/277 +f 909/344/280 723/346/282 937/347/283 1087/345/281 +f 1087/345/281 937/347/283 737/348/284 923/349/285 +f 936/341/277 1087/345/281 923/349/285 738/342/278 +f 723/346/282 908/350/286 1088/351/287 937/347/283 +f 908/350/286 722/352/288 938/353/289 1088/351/287 +f 1088/351/287 938/353/289 736/354/290 922/355/291 +f 937/347/283 1088/351/287 922/355/291 737/348/284 +f 722/352/288 907/356/292 1089/357/293 938/353/289 +f 907/356/292 721/358/294 939/359/295 1089/357/293 +f 1089/357/293 939/359/295 735/360/296 921/361/297 +f 938/353/289 1089/357/293 921/361/297 736/354/290 +f 721/358/294 906/362/298 1090/363/299 939/359/295 +f 906/362/298 720/364/300 940/365/301 1090/363/299 +f 1090/363/299 940/365/301 734/366/302 920/367/303 +f 939/359/295 1090/363/299 920/367/303 735/360/296 +f 720/364/300 905/368/304 1091/369/305 940/365/301 +f 905/368/304 719/370/306 941/371/307 1091/369/305 +f 1091/369/305 941/371/307 733/372/308 919/373/309 +f 940/365/301 1091/369/305 919/373/309 734/366/302 +f 719/370/306 904/374/310 1092/375/311 941/371/307 +f 904/374/310 718/376/312 942/377/313 1092/375/311 +f 1092/375/311 942/377/313 732/378/314 918/379/315 +f 941/371/307 1092/375/311 918/379/315 733/372/308 +f 718/376/312 903/380/316 1093/381/317 942/377/313 +f 903/380/316 717/295/231 943/297/233 1093/381/317 +f 1093/381/317 943/297/233 731/236/172 917/382/318 +f 942/377/313 1093/381/317 917/382/318 732/378/314 +f 575/383/319 773/384/320 1094/385/321 751/386/322 +f 773/384/320 716/387/323 944/388/324 1094/385/321 +f 1094/385/321 944/388/324 730/303/239 774/300/236 +f 751/386/322 1094/385/321 774/300/236 574/299/235 +f 716/387/323 901/389/325 1095/390/326 944/388/324 +f 901/389/325 715/391/327 945/392/328 1095/390/326 +f 1095/390/326 945/392/328 729/310/246 915/308/244 +f 944/388/324 1095/390/326 915/308/244 730/303/239 +f 715/391/327 900/393/329 1096/394/330 945/392/328 +f 900/393/329 714/395/331 946/396/332 1096/394/330 +f 1096/394/330 946/396/332 728/316/252 914/314/250 +f 945/392/328 1096/394/330 914/314/250 729/310/246 +f 714/395/331 899/397/333 1097/398/334 946/396/332 +f 899/397/333 713/399/335 947/400/336 1097/398/334 +f 1097/398/334 947/400/336 727/322/258 913/320/256 +f 946/396/332 1097/398/334 913/320/256 728/316/252 +f 713/399/335 898/401/337 1098/402/338 947/400/336 +f 898/401/337 712/403/339 948/404/340 1098/402/338 +f 1098/402/338 948/404/340 726/328/264 912/326/262 +f 947/400/336 1098/402/338 912/326/262 727/322/258 +f 712/403/339 897/405/341 1099/406/342 948/404/340 +f 897/405/341 711/407/343 949/408/344 1099/406/342 +f 1099/406/342 949/408/344 725/334/270 911/332/268 +f 948/404/340 1099/406/342 911/332/268 726/328/264 +f 711/407/343 896/409/345 1100/410/346 949/408/344 +f 896/409/345 710/411/347 950/412/348 1100/410/346 +f 1100/410/346 950/412/348 724/340/276 910/338/274 +f 949/408/344 1100/410/346 910/338/274 725/334/270 +f 710/411/347 895/413/349 1101/414/350 950/412/348 +f 895/413/349 709/415/351 951/416/352 1101/414/350 +f 1101/414/350 951/416/352 723/346/282 909/344/280 +f 950/412/348 1101/414/350 909/344/280 724/340/276 +f 709/415/351 894/417/353 1102/418/354 951/416/352 +f 894/417/353 708/419/355 952/420/356 1102/418/354 +f 1102/418/354 952/420/356 722/352/288 908/350/286 +f 951/416/352 1102/418/354 908/350/286 723/346/282 +f 708/419/355 893/421/357 1103/422/358 952/420/356 +f 893/421/357 707/423/359 953/424/360 1103/422/358 +f 1103/422/358 953/424/360 721/358/294 907/356/292 +f 952/420/356 1103/422/358 907/356/292 722/352/288 +f 707/423/359 892/425/361 1104/426/362 953/424/360 +f 892/425/361 706/427/363 954/428/364 1104/426/362 +f 1104/426/362 954/428/364 720/364/300 906/362/298 +f 953/424/360 1104/426/362 906/362/298 721/358/294 +f 706/427/363 891/429/365 1105/430/366 954/428/364 +f 891/429/365 705/431/367 955/432/368 1105/430/366 +f 1105/430/366 955/432/368 719/370/306 905/368/304 +f 954/428/364 1105/430/366 905/368/304 720/364/300 +f 705/431/367 890/433/369 1106/434/370 955/432/368 +f 890/433/369 704/435/371 956/436/372 1106/434/370 +f 1106/434/370 956/436/372 718/376/312 904/374/310 +f 955/432/368 1106/434/370 904/374/310 719/370/306 +f 704/435/371 889/437/373 1107/438/374 956/436/372 +f 889/437/373 703/289/225 957/291/227 1107/438/374 +f 1107/438/374 957/291/227 717/295/231 903/380/316 +f 956/436/372 1107/438/374 903/380/316 718/376/312 +f 576/439/375 772/440/376 1108/441/377 752/442/378 +f 772/440/376 702/443/379 958/444/380 1108/441/377 +f 1108/441/377 958/444/380 716/387/323 773/384/320 +f 752/442/378 1108/441/377 773/384/320 575/383/319 +f 702/443/379 887/445/381 1109/446/382 958/444/380 +f 887/445/381 701/447/383 959/448/384 1109/446/382 +f 1109/446/382 959/448/384 715/391/327 901/389/325 +f 958/444/380 1109/446/382 901/389/325 716/387/323 +f 701/447/383 886/449/385 1110/450/386 959/448/384 +f 886/449/385 700/451/387 960/452/388 1110/450/386 +f 1110/450/386 960/452/388 714/395/331 900/393/329 +f 959/448/384 1110/450/386 900/393/329 715/391/327 +f 700/451/387 885/453/389 1111/454/390 960/452/388 +f 885/453/389 699/455/391 961/456/392 1111/454/390 +f 1111/454/390 961/456/392 713/399/335 899/397/333 +f 960/452/388 1111/454/390 899/397/333 714/395/331 +f 699/455/391 884/457/393 1112/458/394 961/456/392 +f 884/457/393 698/459/395 962/460/396 1112/458/394 +f 1112/458/394 962/460/396 712/403/339 898/401/337 +f 961/456/392 1112/458/394 898/401/337 713/399/335 +f 698/459/395 883/461/397 1113/462/398 962/460/396 +f 883/461/397 697/463/399 963/464/400 1113/462/398 +f 1113/462/398 963/464/400 711/407/343 897/405/341 +f 962/460/396 1113/462/398 897/405/341 712/403/339 +f 697/463/399 882/465/401 1114/466/402 963/464/400 +f 882/465/401 696/467/403 964/468/404 1114/466/402 +f 1114/466/402 964/468/404 710/411/347 896/409/345 +f 963/464/400 1114/466/402 896/409/345 711/407/343 +f 696/467/403 881/469/405 1115/470/406 964/468/404 +f 881/469/405 695/471/407 965/472/408 1115/470/406 +f 1115/470/406 965/472/408 709/415/351 895/413/349 +f 964/468/404 1115/470/406 895/413/349 710/411/347 +f 695/471/407 880/473/409 1116/474/410 965/472/408 +f 880/473/409 694/475/411 966/476/412 1116/474/410 +f 1116/474/410 966/476/412 708/419/355 894/417/353 +f 965/472/408 1116/474/410 894/417/353 709/415/351 +f 694/475/411 879/477/413 1117/478/414 966/476/412 +f 879/477/413 693/479/415 967/480/416 1117/478/414 +f 1117/478/414 967/480/416 707/423/359 893/421/357 +f 966/476/412 1117/478/414 893/421/357 708/419/355 +f 693/479/415 878/481/417 1118/482/418 967/480/416 +f 878/481/417 692/483/419 968/484/420 1118/482/418 +f 1118/482/418 968/484/420 706/427/363 892/425/361 +f 967/480/416 1118/482/418 892/425/361 707/423/359 +f 692/483/419 877/485/421 1119/486/422 968/484/420 +f 877/485/421 691/487/423 969/488/424 1119/486/422 +f 1119/486/422 969/488/424 705/431/367 891/429/365 +f 968/484/420 1119/486/422 891/429/365 706/427/363 +f 691/487/423 876/489/425 1120/490/426 969/488/424 +f 876/489/425 690/491/427 970/492/428 1120/490/426 +f 1120/490/426 970/492/428 704/435/371 890/433/369 +f 969/488/424 1120/490/426 890/433/369 705/431/367 +f 690/491/427 875/493/429 1121/494/430 970/492/428 +f 875/493/429 689/283/219 971/285/221 1121/494/430 +f 1121/494/430 971/285/221 703/289/225 889/437/373 +f 970/492/428 1121/494/430 889/437/373 704/435/371 +f 577/495/431 771/496/432 1122/497/433 753/498/434 +f 771/496/432 688/499/435 972/500/436 1122/497/433 +f 1122/497/433 972/500/436 702/443/379 772/440/376 +f 753/498/434 1122/497/433 772/440/376 576/439/375 +f 688/499/435 873/501/437 1123/502/438 972/500/436 +f 873/501/437 687/503/439 973/504/440 1123/502/438 +f 1123/502/438 973/504/440 701/447/383 887/445/381 +f 972/500/436 1123/502/438 887/445/381 702/443/379 +f 687/503/439 872/505/441 1124/506/442 973/504/440 +f 872/505/441 686/507/443 974/508/444 1124/506/442 +f 1124/506/442 974/508/444 700/451/387 886/449/385 +f 973/504/440 1124/506/442 886/449/385 701/447/383 +f 686/507/443 871/509/445 1125/510/446 974/508/444 +f 871/509/445 685/511/447 975/512/448 1125/510/446 +f 1125/510/446 975/512/448 699/455/391 885/453/389 +f 974/508/444 1125/510/446 885/453/389 700/451/387 +f 685/511/447 870/513/449 1126/514/450 975/512/448 +f 870/513/449 684/515/451 976/516/452 1126/514/450 +f 1126/514/450 976/516/452 698/459/395 884/457/393 +f 975/512/448 1126/514/450 884/457/393 699/455/391 +f 684/515/451 869/517/453 1127/518/454 976/516/452 +f 869/517/453 683/519/455 977/520/456 1127/518/454 +f 1127/518/454 977/520/456 697/463/399 883/461/397 +f 976/516/452 1127/518/454 883/461/397 698/459/395 +f 683/519/455 868/521/457 1128/522/458 977/520/456 +f 868/521/457 682/523/459 978/524/460 1128/522/458 +f 1128/522/458 978/524/460 696/467/403 882/465/401 +f 977/520/456 1128/522/458 882/465/401 697/463/399 +f 682/523/459 867/525/461 1129/526/462 978/524/460 +f 867/525/461 681/527/463 979/528/464 1129/526/462 +f 1129/526/462 979/528/464 695/471/407 881/469/405 +f 978/524/460 1129/526/462 881/469/405 696/467/403 +f 681/527/463 866/529/465 1130/530/466 979/528/464 +f 866/529/465 680/531/467 980/532/468 1130/530/466 +f 1130/530/466 980/532/468 694/475/411 880/473/409 +f 979/528/464 1130/530/466 880/473/409 695/471/407 +f 680/531/467 865/533/469 1131/534/470 980/532/468 +f 865/533/469 679/535/471 981/536/472 1131/534/470 +f 1131/534/470 981/536/472 693/479/415 879/477/413 +f 980/532/468 1131/534/470 879/477/413 694/475/411 +f 679/535/471 864/537/473 1132/538/474 981/536/472 +f 864/537/473 678/539/475 982/540/476 1132/538/474 +f 1132/538/474 982/540/476 692/483/419 878/481/417 +f 981/536/472 1132/538/474 878/481/417 693/479/415 +f 678/539/475 863/541/477 1133/542/478 982/540/476 +f 863/541/477 677/543/479 983/544/480 1133/542/478 +f 1133/542/478 983/544/480 691/487/423 877/485/421 +f 982/540/476 1133/542/478 877/485/421 692/483/419 +f 677/543/479 862/545/481 1134/546/482 983/544/480 +f 862/545/481 676/547/483 984/548/484 1134/546/482 +f 1134/546/482 984/548/484 690/491/427 876/489/425 +f 983/544/480 1134/546/482 876/489/425 691/487/423 +f 676/547/483 861/549/485 1135/550/486 984/548/484 +f 861/549/485 675/277/213 985/279/215 1135/550/486 +f 1135/550/486 985/279/215 689/283/219 875/493/429 +f 984/548/484 1135/550/486 875/493/429 690/491/427 +f 578/551/487 770/552/488 1136/553/489 754/554/490 +f 770/552/488 674/555/491 986/556/492 1136/553/489 +f 1136/553/489 986/556/492 688/499/435 771/496/432 +f 754/554/490 1136/553/489 771/496/432 577/495/431 +f 674/555/491 859/557/493 1137/558/494 986/556/492 +f 859/557/493 673/559/495 987/560/496 1137/558/494 +f 1137/558/494 987/560/496 687/503/439 873/501/437 +f 986/556/492 1137/558/494 873/501/437 688/499/435 +f 673/559/495 858/561/497 1138/562/498 987/560/496 +f 858/561/497 672/563/499 988/564/500 1138/562/498 +f 1138/562/498 988/564/500 686/507/443 872/505/441 +f 987/560/496 1138/562/498 872/505/441 687/503/439 +f 672/563/499 857/565/501 1139/566/502 988/564/500 +f 857/565/501 671/567/503 989/568/504 1139/566/502 +f 1139/566/502 989/568/504 685/511/447 871/509/445 +f 988/564/500 1139/566/502 871/509/445 686/507/443 +f 671/567/503 856/569/505 1140/570/506 989/568/504 +f 856/569/505 670/571/507 990/572/508 1140/570/506 +f 1140/570/506 990/572/508 684/515/451 870/513/449 +f 989/568/504 1140/570/506 870/513/449 685/511/447 +f 670/571/507 855/573/509 1141/574/510 990/572/508 +f 855/573/509 669/575/511 991/576/512 1141/574/510 +f 1141/574/510 991/576/512 683/519/455 869/517/453 +f 990/572/508 1141/574/510 869/517/453 684/515/451 +f 669/575/511 854/577/513 1142/578/514 991/576/512 +f 854/577/513 668/579/515 992/580/516 1142/578/514 +f 1142/578/514 992/580/516 682/523/459 868/521/457 +f 991/576/512 1142/578/514 868/521/457 683/519/455 +f 668/579/515 853/581/517 1143/582/518 992/580/516 +f 853/581/517 667/583/519 993/584/520 1143/582/518 +f 1143/582/518 993/584/520 681/527/463 867/525/461 +f 992/580/516 1143/582/518 867/525/461 682/523/459 +f 667/583/519 852/585/521 1144/586/522 993/584/520 +f 852/585/521 666/587/523 994/588/524 1144/586/522 +f 1144/586/522 994/588/524 680/531/467 866/529/465 +f 993/584/520 1144/586/522 866/529/465 681/527/463 +f 666/587/523 851/589/525 1145/590/526 994/588/524 +f 851/589/525 665/591/527 995/592/528 1145/590/526 +f 1145/590/526 995/592/528 679/535/471 865/533/469 +f 994/588/524 1145/590/526 865/533/469 680/531/467 +f 665/591/527 850/593/529 1146/594/530 995/592/528 +f 850/593/529 664/595/531 996/596/532 1146/594/530 +f 1146/594/530 996/596/532 678/539/475 864/537/473 +f 995/592/528 1146/594/530 864/537/473 679/535/471 +f 664/595/531 849/597/533 1147/598/534 996/596/532 +f 849/597/533 663/599/535 997/600/536 1147/598/534 +f 1147/598/534 997/600/536 677/543/479 863/541/477 +f 996/596/532 1147/598/534 863/541/477 678/539/475 +f 663/599/535 848/601/537 1148/602/538 997/600/536 +f 848/601/537 662/603/539 998/604/540 1148/602/538 +f 1148/602/538 998/604/540 676/547/483 862/545/481 +f 997/600/536 1148/602/538 862/545/481 677/543/479 +f 662/603/539 847/605/541 1149/606/542 998/604/540 +f 847/605/541 661/271/207 999/273/209 1149/606/542 +f 1149/606/542 999/273/209 675/277/213 861/549/485 +f 998/604/540 1149/606/542 861/549/485 676/547/483 +f 579/607/543 769/608/544 1150/609/545 755/610/546 +f 769/608/544 660/611/547 1000/612/548 1150/609/545 +f 1150/609/545 1000/612/548 674/555/491 770/552/488 +f 755/610/546 1150/609/545 770/552/488 578/551/487 +f 660/611/547 845/613/549 1151/614/550 1000/612/548 +f 845/613/549 659/615/551 1001/616/552 1151/614/550 +f 1151/614/550 1001/616/552 673/559/495 859/557/493 +f 1000/612/548 1151/614/550 859/557/493 674/555/491 +f 659/615/551 844/617/553 1152/618/554 1001/616/552 +f 844/617/553 658/619/555 1002/620/556 1152/618/554 +f 1152/618/554 1002/620/556 672/563/499 858/561/497 +f 1001/616/552 1152/618/554 858/561/497 673/559/495 +f 658/619/555 843/621/557 1153/622/558 1002/620/556 +f 843/621/557 657/623/559 1003/624/560 1153/622/558 +f 1153/622/558 1003/624/560 671/567/503 857/565/501 +f 1002/620/556 1153/622/558 857/565/501 672/563/499 +f 657/623/559 842/625/561 1154/626/562 1003/624/560 +f 842/625/561 656/627/563 1004/628/564 1154/626/562 +f 1154/626/562 1004/628/564 670/571/507 856/569/505 +f 1003/624/560 1154/626/562 856/569/505 671/567/503 +f 656/627/563 841/629/565 1155/630/566 1004/628/564 +f 841/629/565 655/631/567 1005/632/568 1155/630/566 +f 1155/630/566 1005/632/568 669/575/511 855/573/509 +f 1004/628/564 1155/630/566 855/573/509 670/571/507 +f 655/631/567 840/633/569 1156/634/570 1005/632/568 +f 840/633/569 654/635/571 1006/636/572 1156/634/570 +f 1156/634/570 1006/636/572 668/579/515 854/577/513 +f 1005/632/568 1156/634/570 854/577/513 669/575/511 +f 654/635/571 839/637/573 1157/638/574 1006/636/572 +f 839/637/573 653/639/575 1007/640/576 1157/638/574 +f 1157/638/574 1007/640/576 667/583/519 853/581/517 +f 1006/636/572 1157/638/574 853/581/517 668/579/515 +f 653/639/575 838/641/577 1158/642/578 1007/640/576 +f 838/641/577 652/643/579 1008/644/580 1158/642/578 +f 1158/642/578 1008/644/580 666/587/523 852/585/521 +f 1007/640/576 1158/642/578 852/585/521 667/583/519 +f 652/643/579 837/645/581 1159/646/582 1008/644/580 +f 837/645/581 651/647/583 1009/648/584 1159/646/582 +f 1159/646/582 1009/648/584 665/591/527 851/589/525 +f 1008/644/580 1159/646/582 851/589/525 666/587/523 +f 651/647/583 836/649/585 1160/650/586 1009/648/584 +f 836/649/585 650/651/587 1010/652/588 1160/650/586 +f 1160/650/586 1010/652/588 664/595/531 850/593/529 +f 1009/648/584 1160/650/586 850/593/529 665/591/527 +f 650/651/587 835/653/589 1161/654/590 1010/652/588 +f 835/653/589 649/655/591 1011/656/592 1161/654/590 +f 1161/654/590 1011/656/592 663/599/535 849/597/533 +f 1010/652/588 1161/654/590 849/597/533 664/595/531 +f 649/655/591 834/657/593 1162/658/594 1011/656/592 +f 834/657/593 648/659/595 1012/660/596 1162/658/594 +f 1162/658/594 1012/660/596 662/603/539 848/601/537 +f 1011/656/592 1162/658/594 848/601/537 663/599/535 +f 648/659/595 833/661/597 1163/662/598 1012/660/596 +f 833/661/597 647/265/201 1013/267/203 1163/662/598 +f 1163/662/598 1013/267/203 661/271/207 847/605/541 +f 1012/660/596 1163/662/598 847/605/541 662/603/539 +f 580/663/599 768/664/600 1164/665/601 756/666/602 +f 768/664/600 646/667/603 1014/668/604 1164/665/601 +f 1164/665/601 1014/668/604 660/611/547 769/608/544 +f 756/666/602 1164/665/601 769/608/544 579/607/543 +f 646/667/603 831/669/605 1165/670/606 1014/668/604 +f 831/669/605 645/671/607 1015/672/608 1165/670/606 +f 1165/670/606 1015/672/608 659/615/551 845/613/549 +f 1014/668/604 1165/670/606 845/613/549 660/611/547 +f 645/671/607 830/673/609 1166/674/610 1015/672/608 +f 830/673/609 644/675/611 1016/676/612 1166/674/610 +f 1166/674/610 1016/676/612 658/619/555 844/617/553 +f 1015/672/608 1166/674/610 844/617/553 659/615/551 +f 644/675/611 829/677/613 1167/678/614 1016/676/612 +f 829/677/613 643/679/615 1017/680/616 1167/678/614 +f 1167/678/614 1017/680/616 657/623/559 843/621/557 +f 1016/676/612 1167/678/614 843/621/557 658/619/555 +f 643/679/615 828/681/617 1168/682/618 1017/680/616 +f 828/681/617 642/683/619 1018/684/620 1168/682/618 +f 1168/682/618 1018/684/620 656/627/563 842/625/561 +f 1017/680/616 1168/682/618 842/625/561 657/623/559 +f 642/683/619 827/685/621 1169/686/622 1018/684/620 +f 827/685/621 641/687/623 1019/688/624 1169/686/622 +f 1169/686/622 1019/688/624 655/631/567 841/629/565 +f 1018/684/620 1169/686/622 841/629/565 656/627/563 +f 641/687/623 826/689/625 1170/690/626 1019/688/624 +f 826/689/625 640/691/627 1020/692/628 1170/690/626 +f 1170/690/626 1020/692/628 654/635/571 840/633/569 +f 1019/688/624 1170/690/626 840/633/569 655/631/567 +f 640/691/627 825/693/629 1171/694/630 1020/692/628 +f 825/693/629 639/695/631 1021/696/632 1171/694/630 +f 1171/694/630 1021/696/632 653/639/575 839/637/573 +f 1020/692/628 1171/694/630 839/637/573 654/635/571 +f 639/695/631 824/697/633 1172/698/634 1021/696/632 +f 824/697/633 638/699/635 1022/700/636 1172/698/634 +f 1172/698/634 1022/700/636 652/643/579 838/641/577 +f 1021/696/632 1172/698/634 838/641/577 653/639/575 +f 638/699/635 823/701/637 1173/702/638 1022/700/636 +f 823/701/637 637/703/639 1023/704/640 1173/702/638 +f 1173/702/638 1023/704/640 651/647/583 837/645/581 +f 1022/700/636 1173/702/638 837/645/581 652/643/579 +f 637/703/639 822/705/641 1174/706/642 1023/704/640 +f 822/705/641 636/707/643 1024/708/644 1174/706/642 +f 1174/706/642 1024/708/644 650/651/587 836/649/585 +f 1023/704/640 1174/706/642 836/649/585 651/647/583 +f 636/707/643 821/709/645 1175/710/646 1024/708/644 +f 821/709/645 635/711/647 1025/712/648 1175/710/646 +f 1175/710/646 1025/712/648 649/655/591 835/653/589 +f 1024/708/644 1175/710/646 835/653/589 650/651/587 +f 635/711/647 820/713/649 1176/714/650 1025/712/648 +f 820/713/649 634/715/651 1026/716/652 1176/714/650 +f 1176/714/650 1026/716/652 648/659/595 834/657/593 +f 1025/712/648 1176/714/650 834/657/593 649/655/591 +f 634/715/651 819/717/653 1177/718/654 1026/716/652 +f 819/717/653 633/259/195 1027/261/197 1177/718/654 +f 1177/718/654 1027/261/197 647/265/201 833/661/597 +f 1026/716/652 1177/718/654 833/661/597 648/659/595 +f 581/719/655 767/720/656 1178/721/657 757/722/658 +f 767/720/656 632/723/659 1028/724/660 1178/721/657 +f 1178/721/657 1028/724/660 646/667/603 768/664/600 +f 757/722/658 1178/721/657 768/664/600 580/663/599 +f 632/723/659 817/725/661 1179/726/662 1028/724/660 +f 817/725/661 631/727/663 1029/728/664 1179/726/662 +f 1179/726/662 1029/728/664 645/671/607 831/669/605 +f 1028/724/660 1179/726/662 831/669/605 646/667/603 +f 631/727/663 816/729/665 1180/730/666 1029/728/664 +f 816/729/665 630/731/667 1030/732/668 1180/730/666 +f 1180/730/666 1030/732/668 644/675/611 830/673/609 +f 1029/728/664 1180/730/666 830/673/609 645/671/607 +f 630/731/667 815/733/669 1181/734/670 1030/732/668 +f 815/733/669 629/735/671 1031/736/672 1181/734/670 +f 1181/734/670 1031/736/672 643/679/615 829/677/613 +f 1030/732/668 1181/734/670 829/677/613 644/675/611 +f 629/735/671 814/737/673 1182/738/674 1031/736/672 +f 814/737/673 628/739/675 1032/740/676 1182/738/674 +f 1182/738/674 1032/740/676 642/683/619 828/681/617 +f 1031/736/672 1182/738/674 828/681/617 643/679/615 +f 628/739/675 813/741/677 1183/742/678 1032/740/676 +f 813/741/677 627/743/679 1033/744/680 1183/742/678 +f 1183/742/678 1033/744/680 641/687/623 827/685/621 +f 1032/740/676 1183/742/678 827/685/621 642/683/619 +f 627/743/679 812/745/681 1184/746/682 1033/744/680 +f 812/745/681 626/747/683 1034/748/684 1184/746/682 +f 1184/746/682 1034/748/684 640/691/627 826/689/625 +f 1033/744/680 1184/746/682 826/689/625 641/687/623 +f 626/747/683 811/749/685 1185/750/686 1034/748/684 +f 811/749/685 625/751/687 1035/752/688 1185/750/686 +f 1185/750/686 1035/752/688 639/695/631 825/693/629 +f 1034/748/684 1185/750/686 825/693/629 640/691/627 +f 625/751/687 810/753/689 1186/754/690 1035/752/688 +f 810/753/689 624/755/691 1036/756/692 1186/754/690 +f 1186/754/690 1036/756/692 638/699/635 824/697/633 +f 1035/752/688 1186/754/690 824/697/633 639/695/631 +f 624/755/691 809/757/693 1187/758/694 1036/756/692 +f 809/757/693 623/759/695 1037/760/696 1187/758/694 +f 1187/758/694 1037/760/696 637/703/639 823/701/637 +f 1036/756/692 1187/758/694 823/701/637 638/699/635 +f 623/759/695 808/761/697 1188/762/698 1037/760/696 +f 808/761/697 622/763/699 1038/764/700 1188/762/698 +f 1188/762/698 1038/764/700 636/707/643 822/705/641 +f 1037/760/696 1188/762/698 822/705/641 637/703/639 +f 622/763/699 807/765/701 1189/766/702 1038/764/700 +f 807/765/701 621/767/703 1039/768/704 1189/766/702 +f 1189/766/702 1039/768/704 635/711/647 821/709/645 +f 1038/764/700 1189/766/702 821/709/645 636/707/643 +f 621/767/703 806/769/705 1190/770/706 1039/768/704 +f 806/769/705 620/771/707 1040/772/708 1190/770/706 +f 1190/770/706 1040/772/708 634/715/651 820/713/649 +f 1039/768/704 1190/770/706 820/713/649 635/711/647 +f 620/771/707 805/773/709 1191/774/710 1040/772/708 +f 805/773/709 619/253/189 1041/255/191 1191/774/710 +f 1191/774/710 1041/255/191 633/259/195 819/717/653 +f 1040/772/708 1191/774/710 819/717/653 634/715/651 +f 571/775/711 746/776/712 1192/777/713 747/778/714 +f 746/776/712 618/779/715 1042/780/716 1192/777/713 +f 1192/777/713 1042/780/716 632/723/659 767/720/656 +f 747/778/714 1192/777/713 767/720/656 581/719/655 +f 618/779/715 803/781/717 1193/782/718 1042/780/716 +f 803/781/717 617/783/719 1043/784/720 1193/782/718 +f 1193/782/718 1043/784/720 631/727/663 817/725/661 +f 1042/780/716 1193/782/718 817/725/661 632/723/659 +f 617/783/719 802/785/721 1194/786/722 1043/784/720 +f 802/785/721 616/787/723 1044/788/724 1194/786/722 +f 1194/786/722 1044/788/724 630/731/667 816/729/665 +f 1043/784/720 1194/786/722 816/729/665 631/727/663 +f 616/787/723 801/789/725 1195/790/726 1044/788/724 +f 801/789/725 615/791/727 1045/792/728 1195/790/726 +f 1195/790/726 1045/792/728 629/735/671 815/733/669 +f 1044/788/724 1195/790/726 815/733/669 630/731/667 +f 615/791/727 800/793/729 1196/794/730 1045/792/728 +f 800/793/729 614/795/731 1046/796/732 1196/794/730 +f 1196/794/730 1046/796/732 628/739/675 814/737/673 +f 1045/792/728 1196/794/730 814/737/673 629/735/671 +f 614/795/731 799/797/733 1197/798/734 1046/796/732 +f 799/797/733 613/799/735 1047/800/736 1197/798/734 +f 1197/798/734 1047/800/736 627/743/679 813/741/677 +f 1046/796/732 1197/798/734 813/741/677 628/739/675 +f 613/799/735 798/801/737 1198/802/738 1047/800/736 +f 798/801/737 612/803/739 1048/804/740 1198/802/738 +f 1198/802/738 1048/804/740 626/747/683 812/745/681 +f 1047/800/736 1198/802/738 812/745/681 627/743/679 +f 612/803/739 797/805/741 1199/806/742 1048/804/740 +f 797/805/741 611/807/743 1049/808/744 1199/806/742 +f 1199/806/742 1049/808/744 625/751/687 811/749/685 +f 1048/804/740 1199/806/742 811/749/685 626/747/683 +f 611/807/743 796/809/745 1200/810/746 1049/808/744 +f 796/809/745 610/811/747 1050/812/748 1200/810/746 +f 1200/810/746 1050/812/748 624/755/691 810/753/689 +f 1049/808/744 1200/810/746 810/753/689 625/751/687 +f 610/811/747 795/813/749 1201/814/750 1050/812/748 +f 795/813/749 609/815/751 1051/816/752 1201/814/750 +f 1201/814/750 1051/816/752 623/759/695 809/757/693 +f 1050/812/748 1201/814/750 809/757/693 624/755/691 +f 609/815/751 794/817/753 1202/818/754 1051/816/752 +f 794/817/753 608/819/755 1052/820/756 1202/818/754 +f 1202/818/754 1052/820/756 622/763/699 808/761/697 +f 1051/816/752 1202/818/754 808/761/697 623/759/695 +f 608/819/755 793/821/757 1203/822/758 1052/820/756 +f 793/821/757 607/823/759 1053/824/760 1203/822/758 +f 1203/822/758 1053/824/760 621/767/703 807/765/701 +f 1052/820/756 1203/822/758 807/765/701 622/763/699 +f 607/823/759 792/825/761 1204/826/762 1053/824/760 +f 792/825/761 606/827/763 1054/828/764 1204/826/762 +f 1204/826/762 1054/828/764 620/771/707 806/769/705 +f 1053/824/760 1204/826/762 806/769/705 621/767/703 +f 606/827/763 791/829/765 1205/830/766 1054/828/764 +f 791/829/765 605/245/181 1055/248/184 1205/830/766 +f 1205/830/766 1055/248/184 619/253/189 805/773/709 +f 1054/828/764 1205/830/766 805/773/709 620/771/707 +f 573/307/243 775/306/242 1206/831/767 749/832/768 +f 775/306/242 744/305/241 1056/833/769 1206/831/767 +f 1206/831/767 1056/833/769 591/834/770 776/835/771 +f 749/832/768 1206/831/767 776/835/771 570/836/772 +f 744/305/241 929/313/249 1207/837/773 1056/833/769 +f 929/313/249 743/312/248 1057/838/774 1207/837/773 +f 1207/837/773 1057/838/774 592/839/775 777/840/776 +f 1056/833/769 1207/837/773 777/840/776 591/834/770 +f 743/312/248 928/319/255 1208/841/777 1057/838/774 +f 928/319/255 742/318/254 1058/842/778 1208/841/777 +f 1208/841/777 1058/842/778 593/843/779 778/844/780 +f 1057/838/774 1208/841/777 778/844/780 592/839/775 +f 742/318/254 927/325/261 1209/845/781 1058/842/778 +f 927/325/261 741/324/260 1059/846/782 1209/845/781 +f 1209/845/781 1059/846/782 594/847/783 779/848/784 +f 1058/842/778 1209/845/781 779/848/784 593/843/779 +f 741/324/260 926/331/267 1210/849/785 1059/846/782 +f 926/331/267 740/330/266 1060/850/786 1210/849/785 +f 1210/849/785 1060/850/786 595/851/787 780/852/788 +f 1059/846/782 1210/849/785 780/852/788 594/847/783 +f 740/330/266 925/337/273 1211/853/789 1060/850/786 +f 925/337/273 739/336/272 1061/854/790 1211/853/789 +f 1211/853/789 1061/854/790 596/855/791 781/856/792 +f 1060/850/786 1211/853/789 781/856/792 595/851/787 +f 739/336/272 924/343/279 1212/857/793 1061/854/790 +f 924/343/279 738/342/278 1062/858/794 1212/857/793 +f 1212/857/793 1062/858/794 597/859/795 782/860/796 +f 1061/854/790 1212/857/793 782/860/796 596/855/791 +f 738/342/278 923/349/285 1213/861/797 1062/858/794 +f 923/349/285 737/348/284 1063/862/798 1213/861/797 +f 1213/861/797 1063/862/798 598/863/799 783/864/800 +f 1062/858/794 1213/861/797 783/864/800 597/859/795 +f 737/348/284 922/355/291 1214/865/801 1063/862/798 +f 922/355/291 736/354/290 1064/866/802 1214/865/801 +f 1214/865/801 1064/866/802 599/867/803 784/868/804 +f 1063/862/798 1214/865/801 784/868/804 598/863/799 +f 736/354/290 921/361/297 1215/869/805 1064/866/802 +f 921/361/297 735/360/296 1065/870/806 1215/869/805 +f 1215/869/805 1065/870/806 600/871/807 785/872/808 +f 1064/866/802 1215/869/805 785/872/808 599/867/803 +f 735/360/296 920/367/303 1216/873/809 1065/870/806 +f 920/367/303 734/366/302 1066/874/810 1216/873/809 +f 1216/873/809 1066/874/810 601/875/811 786/876/812 +f 1065/870/806 1216/873/809 786/876/812 600/871/807 +f 734/366/302 919/373/309 1217/877/813 1066/874/810 +f 919/373/309 733/372/308 1067/878/814 1217/877/813 +f 1217/877/813 1067/878/814 602/879/815 787/880/816 +f 1066/874/810 1217/877/813 787/880/816 601/875/811 +f 733/372/308 918/379/315 1218/881/817 1067/878/814 +f 918/379/315 732/378/314 1068/882/818 1218/881/817 +f 1218/881/817 1068/882/818 603/883/819 788/884/820 +f 1067/878/814 1218/881/817 788/884/820 602/879/815 +f 732/378/314 917/382/318 1219/885/821 1068/882/818 +f 917/382/318 731/236/172 1069/239/175 1219/885/821 +f 1219/885/821 1069/239/175 604/244/180 789/886/822 +f 1068/882/818 1219/885/821 789/886/822 603/883/819 +s 0 +f 315/199/125 316/199/125 310/199/125 309/199/125 +f 316/199/125 314/199/125 317/199/125 319/199/125 313/199/125 311/199/125 308/199/125 310/199/125 +f 391/199/125 390/199/125 385/199/125 393/199/125 392/199/125 286/199/125 +f 555/231/112 556/230/112 554/887/112 306/235/112 565/231/112 +f 560/230/112 558/232/112 557/231/112 559/234/112 307/233/112 +f 1224/888/823 1221/889/823 1223/233/823 1226/890/823 +f 1220/891/824 1225/892/824 1227/893/824 1222/894/824 +f 1225/892/112 1224/895/112 1226/896/112 1227/893/112 +f 1220/897/825 1221/234/825 1224/895/825 1225/892/825 +f 1227/898/826 1226/899/826 1223/900/826 1222/901/826 +f 1228/199/827 1229/231/827 1231/230/827 1230/887/827 +f 471/199/125 503/199/125 505/199/125 506/199/125 507/199/125 504/199/125 496/199/125 510/199/125 509/199/125 508/199/125 +f 1233/199/125 516/199/125 515/199/125 514/199/125 469/199/125 484/199/125 +f 1232/199/125 1234/199/125 513/199/125 516/199/125 1233/199/125 503/199/125 471/199/125 +f 1234/199/125 1232/199/125 465/199/125 467/199/125 +f 489/199/112 492/199/112 491/199/112 490/199/112 488/199/112 487/199/112 493/199/112 494/199/112 495/199/112 485/199/112 +f 1262/199/125 473/199/125 472/199/125 1259/199/125 1260/199/125 529/199/125 +f 1235/199/112 499/199/112 498/199/112 497/199/112 468/199/112 466/199/112 +f 502/199/112 1236/199/112 486/199/112 470/199/112 500/199/112 501/199/112 +f 1261/199/125 1241/199/125 1251/199/125 1262/199/125 529/199/125 528/199/125 1263/199/125 +f 1263/199/125 1238/199/125 1237/199/125 1261/199/125 +f 520/199/112 518/199/112 1245/199/112 523/199/112 522/199/112 1242/199/112 519/199/112 521/199/112 1243/199/112 1244/199/112 +f 1264/199/112 517/199/112 1239/199/112 1247/199/112 1248/199/112 1249/199/112 +f 525/199/112 524/199/112 1250/199/112 1240/199/112 474/199/112 1265/199/112 +f 1289/199/125 1271/199/125 1269/199/125 450/199/125 1287/199/125 451/199/125 +f 1288/199/125 1270/199/125 444/199/125 1289/199/125 451/199/125 1286/199/125 1290/199/125 +f 1290/199/125 1267/199/125 1266/199/125 1288/199/125 +f 437/199/112 1272/199/112 439/199/112 1278/199/112 1277/199/112 1273/199/112 1274/199/112 438/199/112 1275/199/112 1276/199/112 +f 1308/199/125 435/199/125 434/199/125 1306/199/125 400/199/125 1293/199/125 +f 1291/199/112 436/199/112 1268/199/112 441/199/112 1279/199/112 442/199/112 +f 443/199/112 1281/199/112 1280/199/112 403/199/112 404/199/112 1292/199/112 +f 1307/199/125 1309/199/125 433/199/125 435/199/125 1308/199/125 1301/199/125 402/199/125 +f 1309/199/125 1307/199/125 396/199/125 398/199/125 +f 420/199/112 1296/199/112 1295/199/112 421/199/112 1294/199/112 419/199/112 422/199/112 423/199/112 424/199/112 417/199/112 +f 1310/199/112 425/199/112 1299/199/112 1298/199/112 399/199/112 397/199/112 +f 427/199/112 1311/199/112 418/199/112 401/199/112 426/199/112 1300/199/112 +o BuildingExterior +v 6.000000 0.000000 -1.000000 +v 1.000000 0.000000 -6.000000 +v 6.000000 2.000000 -0.750000 +v 6.000000 1.750000 -1.000000 +v 1.000000 1.750000 -6.000000 +v 0.750000 2.000000 -6.000000 +v 2.000000 1.500000 -2.500000 +v 2.500000 1.500000 -2.000000 +v 2.500000 2.500000 -1.000000 +v 1.000000 2.500000 -2.500000 +v 5.500000 0.000000 -6.000000 +v 6.000000 0.000000 -5.500000 +v 6.000000 1.500000 -5.500000 +v 5.500000 1.500000 -6.000000 +v 6.000000 2.500000 -0.875000 +v 5.875000 2.500000 -1.000000 +v 1.000000 2.500000 -5.875000 +v 0.875000 2.500000 -6.000000 +v 1.875000 1.500000 -6.000000 +v 2.000000 1.500000 -5.875000 +v 5.875000 1.500000 -2.000000 +v 6.000000 1.500000 -1.875000 +v 6.000000 2.000000 0.000000 +v 0.000000 2.000000 -6.000000 +v 0.000000 2.500000 -6.000000 +v 6.000000 2.500000 0.000000 +v 2.000000 2.000000 -2.500000 +v 2.500000 2.000000 -2.000000 +v 5.875000 2.000000 -2.000000 +v 6.000000 2.000000 -1.875000 +v 1.875000 2.000000 -6.000000 +v 2.000000 2.000000 -5.875000 +v -6.000000 2.000000 0.000000 +v -6.000000 2.500000 0.000000 +v 6.000000 0.000000 1.000000 +v 1.000000 0.000000 6.000000 +v 6.000000 2.000000 0.750000 +v 6.000000 1.750000 1.000000 +v 1.000000 1.750000 6.000000 +v 0.750000 2.000000 6.000000 +v 2.000000 1.500000 2.500000 +v 2.500000 1.500000 2.000000 +v 2.500000 2.500000 1.000000 +v 1.000000 2.500000 2.500000 +v 5.500000 0.000000 6.000000 +v 6.000000 0.000000 5.500000 +v 6.000000 1.500000 5.500000 +v 5.500000 1.500000 6.000000 +v 6.000000 2.500000 0.875000 +v 5.875000 2.500000 1.000000 +v 1.000000 2.500000 5.875000 +v 0.875000 2.500000 6.000000 +v 1.875000 1.500000 6.000000 +v 2.000000 1.500000 5.875000 +v 5.875000 1.500000 2.000000 +v 6.000000 1.500000 1.875000 +v 0.000000 2.000000 6.000000 +v 0.000000 2.500000 6.000000 +v 2.000000 2.000000 2.500000 +v 2.500000 2.000000 2.000000 +v 5.875000 2.000000 2.000000 +v 6.000000 2.000000 1.875000 +v 1.875000 2.000000 6.000000 +v 2.000000 2.000000 5.875000 +v -6.000000 0.000000 1.000000 +v -1.000000 0.000000 6.000000 +v -6.000000 2.000000 0.750000 +v -6.000000 1.750000 1.000000 +v -1.000000 1.750000 6.000000 +v -0.750000 2.000000 6.000000 +v -2.000000 1.500000 2.500000 +v -2.500000 1.500000 2.000000 +v -2.500000 2.500000 1.000000 +v -1.000000 2.500000 2.500000 +v -5.500000 0.000000 6.000000 +v -6.000000 0.000000 5.500000 +v -6.000000 1.500000 5.500000 +v -5.500000 1.500000 6.000000 +v -6.000000 2.500000 0.875000 +v -5.875000 2.500000 1.000000 +v -1.000000 2.500000 5.875000 +v -0.875000 2.500000 6.000000 +v -1.875000 1.500000 6.000000 +v -2.000000 1.500000 5.875000 +v -5.875000 1.500000 2.000000 +v -6.000000 1.500000 1.875000 +v -2.000000 2.000000 2.500000 +v -2.500000 2.000000 2.000000 +v -5.875000 2.000000 2.000000 +v -6.000000 2.000000 1.875000 +v -1.875000 2.000000 6.000000 +v -2.000000 2.000000 5.875000 +vn 1.0000 -0.0000 -0.0000 +vn 0.4472 0.8944 -0.0000 +vn -0.0000 -0.0000 -1.0000 +vn 0.4082 0.8165 -0.4082 +vn 0.7071 -0.0000 -0.7071 +vn -0.0000 0.8944 -0.4472 +vn -0.0000 -0.0000 1.0000 +vn 0.4082 0.8165 0.4082 +vn 0.7071 -0.0000 0.7071 +vn -0.0000 0.8944 0.4472 +vn -1.0000 -0.0000 -0.0000 +vn -0.4472 0.8944 -0.0000 +vn -0.4082 0.8165 0.4082 +vn -0.7071 -0.0000 0.7071 +vt 0.000000 0.000000 +vt 2.249961 0.000000 +vt 2.249961 0.750000 +vt 0.437461 0.750000 +vt 0.500000 2.437500 +vt 0.000000 2.437500 +vt 0.000000 0.750000 +vt 0.500000 0.750000 +vt 1.000000 1.000000 +vt 1.000000 0.750000 +vt -0.687500 0.750000 +vt -0.687500 1.000000 +vt 0.750000 0.000000 +vt 0.750000 0.500000 +vt 2.603515 0.000000 +vt 2.603515 0.750000 +vt 2.249961 0.000000 +vt 2.437500 0.500000 +vt 2.437500 0.000000 +vt 2.500000 -0.062500 +vt 2.500000 0.437500 +vt 0.437500 2.500000 +vt -0.062500 2.500000 +vt 0.000000 1.000000 +vt 0.000000 1.250000 +vt 0.437500 1.250000 +vt 0.375000 1.000000 +vt -0.125039 1.000000 +vt -0.000039 0.875000 +vt 0.437461 1.000000 +vt -0.062539 1.250000 +vt 0.937500 1.000000 +vt 0.500000 0.875000 +vt -0.500039 1.000000 +vt -0.500039 1.250000 +vt 0.937500 0.750000 +vt 0.437461 0.750000 +vt 0.499961 1.000000 +vt 0.499961 0.750000 +vt -0.937500 0.750000 +vt -0.937500 1.000000 +vt 0.500000 0.000000 +vt 0.106771 0.750000 +vt 0.106771 1.000000 +vt -1.580729 1.000000 +vt -1.580729 0.750000 +vt 2.750000 0.000000 +vt 2.750000 0.750000 +vt 1.000000 0.000000 +vt 0.562539 0.750000 +vt -1.249961 0.750000 +vt -1.249961 0.000000 +vt 1.000000 2.437500 +vt 0.000000 1.000000 +vt 1.687500 1.000000 +vt 1.687500 0.750000 +vt 0.250000 0.500000 +vt 0.250000 0.000000 +vt -1.603515 0.000000 +vt -1.249961 0.000000 +vt -1.603515 0.750000 +vt -1.437500 0.500000 +vt -1.500000 0.437500 +vt -1.500000 -0.062500 +vt -1.437500 0.000000 +vt 0.562500 2.500000 +vt 1.062500 2.500000 +vt 1.000000 1.000000 +vt 0.625000 1.000000 +vt 0.562500 1.250000 +vt 1.000000 1.250000 +vt 1.125039 1.000000 +vt 1.062539 1.250000 +vt 0.562539 1.000000 +vt 1.000039 0.875000 +vt 0.062500 1.000000 +vt 1.500039 1.000000 +vt 1.500039 1.250000 +vt 0.062500 0.750000 +vt 0.562539 0.750000 +vt 0.500039 0.750000 +vt 0.500039 1.000000 +vt 1.937500 0.750000 +vt 1.937500 1.000000 +vt 0.893229 0.750000 +vt 2.580729 0.750000 +vt 2.580729 1.000000 +vt 0.893229 1.000000 +vt -1.750000 0.000000 +vt -1.750000 0.750000 +s 0 +usemtl Cobblestone +f 1312/902/828 1323/903/828 1324/904/828 1333/905/828 +f 1343/906/829 1328/907/829 1321/908/829 1338/909/829 +f 1340/910/830 1332/911/830 1319/912/830 1339/913/830 +f 1338/909/831 1321/908/831 1320/914/831 1339/915/831 +f 1322/916/832 1325/917/832 1324/904/832 1323/918/832 +f 1340/919/831 1327/920/831 1326/921/831 1341/922/831 +f 1342/923/831 1329/924/831 1328/907/831 1343/906/831 +f 1335/925/830 1336/926/830 1329/927/830 1317/928/830 +f 1314/929/828 1315/930/828 1341/931/828 1326/932/828 +f 1315/930/828 1312/902/828 1333/905/828 1341/931/828 +f 1317/928/830 1329/927/830 1342/933/830 1316/934/830 +f 1334/935/828 1314/929/828 1326/932/828 1337/936/828 +f 1330/937/832 1342/933/832 1343/910/832 1331/911/832 +f 1332/938/832 1340/931/832 1341/939/832 1333/940/832 +f 1318/941/832 1338/942/832 1339/913/832 1319/912/832 +f 1330/937/830 1313/943/830 1316/934/830 1342/933/830 +f 1327/920/833 1340/919/833 1339/915/833 1320/914/833 +f 1331/944/828 1343/945/828 1338/946/828 1318/947/828 +f 1322/948/830 1313/943/830 1330/937/830 1325/949/830 +f 1346/950/828 1367/951/828 1358/952/828 1357/953/828 +f 1375/906/829 1370/909/829 1355/911/829 1362/954/829 +f 1372/955/834 1371/956/834 1353/957/834 1366/908/834 +f 1370/909/835 1371/958/835 1354/959/835 1355/911/835 +f 1356/960/836 1357/961/836 1358/952/836 1359/962/836 +f 1372/963/835 1373/964/835 1360/965/835 1361/966/835 +f 1374/967/835 1375/906/835 1362/954/835 1363/968/835 +f 1368/969/834 1351/970/834 1363/971/834 1369/972/834 +f 1348/973/828 1360/974/828 1373/975/828 1349/976/828 +f 1349/976/828 1373/975/828 1367/951/828 1346/950/828 +f 1351/970/834 1350/934/834 1374/977/834 1363/971/834 +f 1334/978/828 1337/979/828 1360/974/828 1348/973/828 +f 1364/980/836 1365/908/836 1375/955/836 1374/977/836 +f 1366/981/836 1367/982/836 1373/983/836 1372/975/836 +f 1352/984/836 1353/957/836 1371/956/836 1370/985/836 +f 1364/980/834 1374/977/834 1350/934/834 1347/943/834 +f 1361/966/837 1354/959/837 1371/958/837 1372/963/837 +f 1365/986/828 1352/987/828 1370/988/828 1375/989/828 +f 1356/990/834 1359/991/834 1364/980/834 1347/943/834 +f 1376/902/838 1387/903/838 1388/904/838 1397/905/838 +f 1403/906/839 1392/907/839 1385/908/839 1398/909/839 +f 1400/910/834 1396/911/834 1383/912/834 1399/913/834 +f 1398/909/840 1385/908/840 1384/914/840 1399/915/840 +f 1386/916/841 1389/917/841 1388/904/841 1387/918/841 +f 1400/919/840 1391/920/840 1390/921/840 1401/922/840 +f 1402/923/840 1393/924/840 1392/907/840 1403/906/840 +f 1368/925/834 1369/926/834 1393/927/834 1381/928/834 +f 1378/929/838 1379/930/838 1401/931/838 1390/932/838 +f 1379/930/838 1376/902/838 1397/905/838 1401/931/838 +f 1381/928/834 1393/927/834 1402/933/834 1380/934/834 +f 1344/935/838 1378/929/838 1390/932/838 1345/936/838 +f 1394/937/841 1402/933/841 1403/910/841 1395/911/841 +f 1396/938/841 1400/931/841 1401/939/841 1397/940/841 +f 1382/941/841 1398/942/841 1399/913/841 1383/912/841 +f 1394/937/834 1377/943/834 1380/934/834 1402/933/834 +f 1391/920/837 1400/919/837 1399/915/837 1384/914/837 +f 1395/944/838 1403/945/838 1398/946/838 1382/947/838 +f 1386/948/834 1377/943/834 1394/937/834 1389/949/834 +o BuildingExteriorRamp +v -6.000000 2.500000 -1.000000 +v 0.000000 2.000000 -6.000000 +v 0.000000 2.500000 -6.000000 +v -6.000000 0.000000 -1.000000 +v -1.000000 0.000000 -6.000000 +v -6.000000 2.000000 -0.750000 +v -6.000000 1.750000 -1.000000 +v -1.000000 1.750000 -6.000000 +v -0.750000 2.000000 -6.000000 +v -5.500000 0.000000 -6.000000 +v -6.000000 0.000000 -5.500000 +v -6.000000 1.750000 -5.500000 +v -5.500000 1.750000 -6.000000 +v -1.000000 2.500000 -6.000000 +v -6.000000 2.000000 0.000000 +v -6.000000 2.500000 0.000000 +v -5.500000 4.000000 -6.000000 +v -6.000000 4.000000 -5.500000 +v -6.000000 2.000000 -1.700000 +v -6.000000 0.000000 -3.300000 +v -6.000000 4.000000 -3.700001 +v -1.000000 2.500000 -1.000000 +v -6.000000 3.500000 -3.300000 +v -6.000000 1.500000 -5.299999 +v -6.000000 1.500000 -3.700001 +v -6.000000 3.500000 -1.000000 +v -6.000000 3.500000 -1.700000 +v -6.000000 0.000000 -5.299999 +v -6.000000 0.000000 -3.700001 +v -6.000000 2.000000 -3.300000 +v -1.000000 4.000000 -6.000000 +v -1.000000 4.000000 -1.700000 +v -1.000000 3.500000 -1.000000 +v -6.000000 4.000000 -1.700000 +v -6.000000 1.750000 -3.700001 +v -6.000000 1.750000 -3.300000 +vn -1.0000 -0.0000 -0.0000 +vn -0.7071 -0.0000 -0.7071 +vn -0.0000 -0.0000 -1.0000 +vn -0.0000 0.8137 0.5812 +vn 1.0000 -0.0000 -0.0000 +vn -0.0000 -0.0000 1.0000 +vn -0.0000 1.0000 -0.0000 +vt 2.650000 0.000000 +vt 2.650000 0.750000 +vt 2.750000 0.875000 +vt 2.750000 0.000000 +vt 1.652627 0.000000 +vt 1.402627 0.000000 +vt 1.402627 0.875000 +vt 1.652627 0.875000 +vt 4.402627 1.000000 +vt 4.027627 1.000000 +vt 3.902627 1.250000 +vt 4.402627 1.250000 +vt 0.000000 -1.150000 +vt 0.000000 -1.580117 +vt 2.500000 -1.580117 +vt 2.500000 -1.150000 +vt 3.902627 0.875000 +vt 0.000000 1.000000 +vt 0.000000 1.250000 +vt 0.500000 1.250000 +vt 0.375000 1.000000 +vt 1.402627 2.000000 +vt 1.652627 2.000000 +vt 3.902627 0.000000 +vt 0.500000 0.000000 +vt 0.500000 0.875000 +vt 1.650000 0.875000 +vt 1.650000 0.000000 +vt 1.850000 0.750000 +vt 1.850000 0.875000 +vt 1.650000 0.875000 +vt 1.850000 0.000000 +vt 0.850000 1.000000 +vt 0.500000 1.750000 +vt 0.850000 1.750000 +vt 1.650000 1.000000 +vt 3.902627 2.000000 +vt -1.500000 0.750000 +vt -1.500000 0.250000 +vt -1.150000 1.000000 +vt 0.850000 2.000000 +vt 1.650000 1.750000 +vt 1.850000 2.000000 +vt 1.000000 1.000000 +vt 1.000000 0.250000 +vt 2.500000 -2.080117 +vt 0.000000 -2.080117 +vt 1.850000 2.000000 +vt 2.750000 2.000000 +vt 0.000000 0.750000 +vt 0.000000 -0.150000 +vt 2.500000 1.000000 +vt 0.250000 1.000000 +s 0 +usemtl Cobblestone +f 1431/992/842 1427/993/842 1415/994/842 1414/995/842 +f 1413/996/843 1414/997/843 1415/998/843 1416/999/843 +f 1405/1000/844 1412/1001/844 1417/1002/844 1406/1003/844 +f 1437/1004/845 1429/1005/845 1436/1006/845 1435/1007/845 +f 1412/1001/844 1411/1008/844 1417/1002/844 +f 1418/1009/842 1419/1010/842 1404/1011/842 1409/1012/842 +f 1416/999/843 1415/998/843 1421/1013/843 1420/1014/843 +f 1411/1008/844 1416/999/844 1420/1014/844 1417/1002/844 +f 1413/996/844 1416/999/844 1411/1008/844 1408/1015/844 +f 1407/1016/842 1410/1017/842 1439/1018/842 1423/1019/842 +f 1427/993/842 1428/1020/842 1438/1021/842 1415/994/842 +f 1423/1019/842 1439/1022/842 1428/1020/842 1432/1023/842 +f 1422/1024/842 1404/1011/842 1429/1025/842 1430/1026/842 +f 1422/1024/842 1433/1027/842 1439/1018/842 1410/1017/842 +f 1417/1002/844 1420/1014/844 1434/1028/844 +f 1409/1012/842 1404/1011/842 1422/1024/842 1410/1017/842 +f 1436/1029/846 1425/1030/846 1435/1031/846 +f 1430/1026/842 1429/1025/842 1437/1032/842 +f 1426/1033/842 1430/1026/842 1437/1032/842 1424/1034/842 +f 1434/1035/846 1435/1031/846 1425/1030/846 1417/1036/846 +f 1425/1037/847 1436/1006/847 1429/1005/847 1404/1038/847 +f 1438/1021/842 1428/1020/842 1439/1022/842 1433/1027/842 +f 1415/994/842 1438/1021/842 1424/1039/842 1421/1040/842 +f 1438/1021/842 1433/1027/842 1426/1033/842 1424/1039/842 +f 1421/1041/848 1424/1042/848 1437/1004/848 1435/1007/848 1434/1043/848 1420/1044/848 +o BuildingInteriorRamp +v -6.000000 2.000000 -1.700000 +v -6.000000 3.500000 -3.300000 +v -6.000000 1.500000 -5.299999 +v -6.000000 1.500000 -3.700001 +v -6.000000 3.500000 -1.700000 +v -6.000000 0.000000 -5.299999 +v -6.000000 0.000000 -3.700001 +v -6.000000 2.000000 -3.300000 +v -3.000000 2.500000 -5.299999 +v -3.000000 2.500000 -3.700001 +v -3.000000 1.000000 -5.299999 +v -3.000000 1.000000 -3.700001 +v -1.500000 2.500000 -5.299999 +v -1.500000 1.000000 -5.299999 +v -3.000000 2.500000 -3.300000 +v -3.000000 1.000000 -3.300000 +v -1.500000 2.500000 -1.700000 +v -1.500000 1.000000 -1.700000 +v -3.000000 2.500000 -1.700000 +v -3.000000 1.000000 -1.700000 +vn 0.3162 0.9487 -0.0000 +vn -0.0000 -0.0000 1.0000 +vn -0.0000 1.0000 -0.0000 +vn -0.3162 0.9487 -0.0000 +vn -0.0000 -0.0000 -1.0000 +vn 0.3162 -0.9487 -0.0000 +vn -0.0000 -1.0000 -0.0000 +vn -1.0000 -0.0000 -0.0000 +vn 1.0000 -0.0000 -0.0000 +vn -0.3162 -0.9487 -0.0000 +vt 1.000000 -0.649999 +vt 1.000000 0.150000 +vt -0.500000 0.150000 +vt -0.500000 -0.649999 +vt 0.500000 0.884889 +vt 0.500000 0.122866 +vt 1.500000 0.122866 +vt 1.500000 0.884889 +vt 1.000000 1.150000 +vt 1.000000 0.350001 +vt 1.750000 1.150000 +vt -0.500000 1.150000 +vt -0.500000 0.350001 +vt 0.500000 0.122866 +vt 0.500000 0.884889 +vt 0.000000 0.200001 +vt 0.000000 1.000000 +vt 1.500000 1.000000 +vt 1.500000 0.200001 +vt 1.750000 -0.649999 +vt 2.250000 1.000000 +vt 2.250000 0.122866 +vt 2.250000 0.884889 +vt 1.500000 0.000000 +vt 2.250000 -0.799999 +vt 1.500000 -0.799999 +vt 1.511559 0.884889 +vt 1.511559 0.122866 +vt 0.494790 0.122866 +vt 0.494790 0.884889 +vt 0.500000 -0.136065 +vt 1.500000 -0.136065 +vt 1.500000 0.130367 +vt 0.500000 0.130367 +vt 0.000000 -0.799999 +vt 0.000000 0.000000 +s 0 +usemtl Cobblestone +f 1459/1045/849 1455/1046/849 1447/1047/849 1440/1048/849 +f 1450/1053/851 1451/1054/851 1453/1055/851 +f 1445/1056/852 1446/1057/852 1451/1054/852 1450/1053/852 +f 1443/1060/854 1442/1061/854 1448/1062/854 1449/1063/854 +f 1453/1055/851 1451/1054/851 1455/1046/851 1457/1064/851 +f 1449/1063/855 1448/1062/855 1452/1065/855 +f 1454/1068/855 1456/1069/855 1458/1070/855 +f 1449/1063/855 1452/1065/855 1456/1069/855 1454/1068/855 +f 1457/1064/851 1455/1046/851 1459/1045/851 +f 1454/1068/858 1458/1070/858 1444/1079/858 1441/1080/858 +usemtl MetalWall +f 1442/1049/850 1445/1050/850 1450/1051/850 1448/1052/850 +f 1446/1058/853 1443/1059/853 1449/1052/853 1451/1051/853 +f 1448/1052/850 1450/1051/850 1453/1066/850 1452/1067/850 +f 1452/1071/856 1453/1072/856 1457/1073/856 1456/1074/856 +f 1451/1075/857 1449/1076/857 1454/1077/857 1455/1078/857 +f 1459/1051/853 1458/1052/853 1456/1067/853 1457/1066/853 +f 1458/1052/853 1459/1051/853 1440/1050/853 1444/1049/853 +f 1455/1051/850 1454/1052/850 1441/1059/850 1447/1058/850 +o UndergroundStairs +v -0.500000 0.000000 -24.500000 +v -0.500000 0.000000 -25.500000 +v -4.500000 -2.000000 -24.500000 +v -4.500000 -2.000000 -25.500000 +v -5.600000 -2.000000 -24.700001 +v -4.500000 -2.000000 -26.000000 +v -4.500000 -2.000000 -27.000000 +v -0.500000 -4.000000 -26.000000 +v -0.500000 -4.000000 -27.000000 +v -5.400000 -2.000000 -24.500000 +v -5.400000 -2.000000 -27.000000 +v -5.600000 -2.000000 -26.799999 +v -0.500000 1.250000 -24.500000 +v -0.500000 1.250000 -25.500000 +v -4.500000 -0.750000 -24.500000 +v -4.500000 -0.750000 -27.000000 +v -0.500000 -2.750000 -26.000000 +v -0.500000 -2.750000 -27.000000 +v -5.400000 -0.750000 -27.000000 +v -5.476536 -2.000000 -26.984779 +v -5.541420 -2.000000 -26.941425 +v -5.584775 -2.000000 -26.876539 +v -4.550000 -2.000000 -25.513397 +v -4.586602 -2.000000 -25.549999 +v -4.600000 -2.000000 -25.600000 +v -5.476536 -2.000000 -24.515226 +v -5.541420 -2.000000 -24.558582 +v -5.584775 -2.000000 -24.623466 +v -4.550000 -2.000000 -25.986603 +v -4.586602 -2.000000 -25.950001 +v -4.600000 -2.000000 -25.900000 +v -5.541420 -0.750000 -26.941425 +v -4.500000 -0.750000 -25.500000 +v -4.550000 -0.750000 -25.513397 +v -4.586602 -0.750000 -25.549999 +v -4.586602 -0.750000 -25.950001 +v -4.600000 -0.750000 -25.900000 +v -5.600000 -0.750000 -24.700001 +v -4.500000 -0.750000 -26.000000 +v -5.400000 -0.750000 -24.500000 +v -5.600000 -0.750000 -26.799999 +v -5.476536 -0.750000 -26.984779 +v -5.584775 -0.750000 -26.876539 +v -4.600000 -0.750000 -25.600000 +v -5.476536 -0.750000 -24.515226 +v -5.541420 -0.750000 -24.558582 +v -5.584775 -0.750000 -24.623466 +v -4.550000 -0.750000 -25.986603 +v 0.500000 0.000000 -24.500000 +v 0.500000 0.000000 -25.500000 +v 4.500000 -2.000000 -24.500000 +v 4.500000 -2.000000 -25.500000 +v 5.600000 -2.000000 -24.700001 +v 4.500000 -2.000000 -26.000000 +v 4.500000 -2.000000 -27.000000 +v 0.500000 -4.000000 -26.000000 +v 0.500000 -4.000000 -27.000000 +v 5.400000 -2.000000 -24.500000 +v 5.400000 -2.000000 -27.000000 +v 5.600000 -2.000000 -26.799999 +v 0.500000 1.250000 -24.500000 +v 0.500000 1.250000 -25.500000 +v 4.500000 -0.750000 -24.500000 +v 4.500000 -0.750000 -27.000000 +v 0.500000 -2.750000 -26.000000 +v 0.500000 -2.750000 -27.000000 +v 5.400000 -0.750000 -27.000000 +v 5.476536 -2.000000 -26.984779 +v 5.541420 -2.000000 -26.941425 +v 5.584775 -2.000000 -26.876539 +v 4.550000 -2.000000 -25.513397 +v 4.586602 -2.000000 -25.549999 +v 4.600000 -2.000000 -25.600000 +v 5.476536 -2.000000 -24.515226 +v 5.541420 -2.000000 -24.558582 +v 5.584775 -2.000000 -24.623466 +v 4.550000 -2.000000 -25.986603 +v 4.586602 -2.000000 -25.950001 +v 4.600000 -2.000000 -25.900000 +v 5.541420 -0.750000 -26.941425 +v 4.500000 -0.750000 -25.500000 +v 4.550000 -0.750000 -25.513397 +v 4.586602 -0.750000 -25.549999 +v 4.586602 -0.750000 -25.950001 +v 4.600000 -0.750000 -25.900000 +v 5.600000 -0.750000 -24.700001 +v 4.500000 -0.750000 -26.000000 +v 5.400000 -0.750000 -24.500000 +v 5.600000 -0.750000 -26.799999 +v 5.476536 -0.750000 -26.984779 +v 5.584775 -0.750000 -26.876539 +v 4.600000 -0.750000 -25.600000 +v 5.476536 -0.750000 -24.515226 +v 5.541420 -0.750000 -24.558582 +v 5.584775 -0.750000 -24.623466 +v 4.550000 -0.750000 -25.986603 +v -0.500000 0.000000 24.500000 +v -0.500000 0.000000 25.500000 +v -4.500000 -2.000000 24.500000 +v -4.500000 -2.000000 25.500000 +v -5.600000 -2.000000 24.700001 +v -4.500000 -2.000000 26.000000 +v -4.500000 -2.000000 27.000000 +v -0.500000 -4.000000 26.000000 +v -0.500000 -4.000000 27.000000 +v -5.400000 -2.000000 24.500000 +v -5.400000 -2.000000 27.000000 +v -5.600000 -2.000000 26.799999 +v -0.500000 1.250000 24.500000 +v -0.500000 1.250000 25.500000 +v -4.500000 -0.750000 24.500000 +v -4.500000 -0.750000 27.000000 +v -0.500000 -2.750000 26.000000 +v -0.500000 -2.750000 27.000000 +v -5.400000 -0.750000 27.000000 +v -5.476536 -2.000000 26.984779 +v -5.541420 -2.000000 26.941425 +v -5.584775 -2.000000 26.876539 +v -4.550000 -2.000000 25.513397 +v -4.586602 -2.000000 25.549999 +v -4.600000 -2.000000 25.600000 +v -5.476536 -2.000000 24.515226 +v -5.541420 -2.000000 24.558582 +v -5.584775 -2.000000 24.623466 +v -4.550000 -2.000000 25.986603 +v -4.586602 -2.000000 25.950001 +v -4.600000 -2.000000 25.900000 +v -5.541420 -0.750000 26.941425 +v -4.500000 -0.750000 25.500000 +v -4.550000 -0.750000 25.513397 +v -4.586602 -0.750000 25.549999 +v -4.586602 -0.750000 25.950001 +v -4.600000 -0.750000 25.900000 +v -5.600000 -0.750000 24.700001 +v -4.500000 -0.750000 26.000000 +v -5.400000 -0.750000 24.500000 +v -5.600000 -0.750000 26.799999 +v -5.476536 -0.750000 26.984779 +v -5.584775 -0.750000 26.876539 +v -4.600000 -0.750000 25.600000 +v -5.476536 -0.750000 24.515226 +v -5.541420 -0.750000 24.558582 +v -5.584775 -0.750000 24.623466 +v -4.550000 -0.750000 25.986603 +v 0.500000 0.000000 24.500000 +v 0.500000 0.000000 25.500000 +v 4.500000 -2.000000 24.500000 +v 4.500000 -2.000000 25.500000 +v 5.600000 -2.000000 24.700001 +v 4.500000 -2.000000 26.000000 +v 4.500000 -2.000000 27.000000 +v 0.500000 -4.000000 26.000000 +v 0.500000 -4.000000 27.000000 +v 5.400000 -2.000000 24.500000 +v 5.400000 -2.000000 27.000000 +v 5.600000 -2.000000 26.799999 +v 0.500000 1.250000 24.500000 +v 0.500000 1.250000 25.500000 +v 4.500000 -0.750000 24.500000 +v 4.500000 -0.750000 27.000000 +v 0.500000 -2.750000 26.000000 +v 0.500000 -2.750000 27.000000 +v 5.400000 -0.750000 27.000000 +v 5.476536 -2.000000 26.984779 +v 5.541420 -2.000000 26.941425 +v 5.584775 -2.000000 26.876539 +v 4.550000 -2.000000 25.513397 +v 4.586602 -2.000000 25.549999 +v 4.600000 -2.000000 25.600000 +v 5.476536 -2.000000 24.515226 +v 5.541420 -2.000000 24.558582 +v 5.584775 -2.000000 24.623466 +v 4.550000 -2.000000 25.986603 +v 4.586602 -2.000000 25.950001 +v 4.600000 -2.000000 25.900000 +v 5.541420 -0.750000 26.941425 +v 4.500000 -0.750000 25.500000 +v 4.550000 -0.750000 25.513397 +v 4.586602 -0.750000 25.549999 +v 4.586602 -0.750000 25.950001 +v 4.600000 -0.750000 25.900000 +v 5.600000 -0.750000 24.700001 +v 4.500000 -0.750000 26.000000 +v 5.400000 -0.750000 24.500000 +v 5.600000 -0.750000 26.799999 +v 5.476536 -0.750000 26.984779 +v 5.584775 -0.750000 26.876539 +v 4.600000 -0.750000 25.600000 +v 5.476536 -0.750000 24.515226 +v 5.541420 -0.750000 24.558582 +v 5.584775 -0.750000 24.623466 +v 4.550000 -0.750000 25.986603 +v -4.500000 -2.000000 -25.500000 +v -4.500000 -2.000000 -25.500000 +v -4.500000 -2.000000 -24.500000 +v -4.500000 -2.000000 -24.500000 +v -0.500000 0.000000 -24.500000 +v -0.500000 0.000000 -25.500000 +v -5.400000 -2.000000 -24.500000 +v -4.500000 -2.000000 -26.000000 +v -4.500000 -2.000000 -26.000000 +v -4.500000 -2.000000 -27.000000 +v -4.500000 -2.000000 -27.000000 +v -0.500000 -4.000000 -27.000000 +v -0.500000 -4.000000 -26.000000 +v -5.400000 -2.000000 -27.000000 +v -4.500000 -0.750000 -24.500000 +v -4.500000 -0.750000 -24.500000 +v -4.500000 -0.750000 -25.500000 +v -4.500000 -0.750000 -25.500000 +v -5.600000 -2.000000 -26.799999 +v -5.600000 -2.000000 -24.700001 +v -0.500000 1.250000 -24.500000 +v -0.500000 1.250000 -25.500000 +v -0.500000 -2.750000 -27.000000 +v -4.500000 -0.750000 -27.000000 +v -4.500000 -0.750000 -27.000000 +v -5.400000 -0.750000 -27.000000 +v -4.600000 -2.000000 -25.600000 +v -4.600000 -2.000000 -25.900000 +v -5.541420 -2.000000 -26.941425 +v -5.476536 -2.000000 -26.984779 +v -5.584775 -2.000000 -26.876539 +v -4.550000 -2.000000 -25.513397 +v -4.586602 -2.000000 -25.549999 +v -5.476536 -2.000000 -24.515226 +v -5.541420 -2.000000 -24.558582 +v -5.584775 -2.000000 -24.623466 +v -4.586602 -2.000000 -25.950001 +v -4.550000 -2.000000 -25.986603 +v -4.550000 -0.750000 -25.513397 +v -4.586602 -0.750000 -25.549999 +v -4.600000 -0.750000 -25.900000 +v -4.586602 -0.750000 -25.950001 +v -5.476536 -0.750000 -24.515226 +v -5.541420 -0.750000 -24.558582 +v -5.584775 -0.750000 -24.623466 +v -5.600000 -0.750000 -26.799999 +v -5.584775 -0.750000 -26.876539 +v -5.400000 -0.750000 -24.500000 +v -5.600000 -0.750000 -24.700001 +v -4.550000 -0.750000 -25.986603 +v -4.500000 -0.750000 -26.000000 +v -4.500000 -0.750000 -26.000000 +v -4.600000 -0.750000 -25.600000 +v -0.500000 -2.750000 -26.000000 +v -5.541420 -0.750000 -26.941425 +v -5.476536 -0.750000 -26.984779 +v 4.500000 -2.000000 -25.500000 +v 4.500000 -2.000000 -25.500000 +v 4.500000 -2.000000 -24.500000 +v 4.500000 -2.000000 -24.500000 +v 0.500000 0.000000 -24.500000 +v 0.500000 0.000000 -25.500000 +v 5.400000 -2.000000 -24.500000 +v 4.500000 -2.000000 -26.000000 +v 4.500000 -2.000000 -26.000000 +v 4.500000 -2.000000 -27.000000 +v 4.500000 -2.000000 -27.000000 +v 0.500000 -4.000000 -27.000000 +v 0.500000 -4.000000 -26.000000 +v 5.400000 -2.000000 -27.000000 +v 4.500000 -0.750000 -24.500000 +v 4.500000 -0.750000 -24.500000 +v 4.500000 -0.750000 -25.500000 +v 4.500000 -0.750000 -25.500000 +v 5.600000 -2.000000 -26.799999 +v 5.600000 -2.000000 -24.700001 +v 0.500000 1.250000 -24.500000 +v 0.500000 1.250000 -25.500000 +v 0.500000 -2.750000 -27.000000 +v 4.500000 -0.750000 -27.000000 +v 4.500000 -0.750000 -27.000000 +v 5.400000 -0.750000 -27.000000 +v 4.600000 -2.000000 -25.600000 +v 4.600000 -2.000000 -25.900000 +v 5.541420 -2.000000 -26.941425 +v 5.476536 -2.000000 -26.984779 +v 5.584775 -2.000000 -26.876539 +v 4.550000 -2.000000 -25.513397 +v 4.586602 -2.000000 -25.549999 +v 5.476536 -2.000000 -24.515226 +v 5.541420 -2.000000 -24.558582 +v 5.584775 -2.000000 -24.623466 +v 4.586602 -2.000000 -25.950001 +v 4.550000 -2.000000 -25.986603 +v 4.550000 -0.750000 -25.513397 +v 4.586602 -0.750000 -25.549999 +v 4.600000 -0.750000 -25.900000 +v 4.586602 -0.750000 -25.950001 +v 5.476536 -0.750000 -24.515226 +v 5.541420 -0.750000 -24.558582 +v 5.584775 -0.750000 -24.623466 +v 5.600000 -0.750000 -26.799999 +v 5.584775 -0.750000 -26.876539 +v 5.400000 -0.750000 -24.500000 +v 5.600000 -0.750000 -24.700001 +v 4.550000 -0.750000 -25.986603 +v 4.500000 -0.750000 -26.000000 +v 4.500000 -0.750000 -26.000000 +v 4.600000 -0.750000 -25.600000 +v 0.500000 -2.750000 -26.000000 +v 5.541420 -0.750000 -26.941425 +v 5.476536 -0.750000 -26.984779 +v -4.500000 -2.000000 25.500000 +v -4.500000 -2.000000 25.500000 +v -4.500000 -2.000000 24.500000 +v -4.500000 -2.000000 24.500000 +v -0.500000 0.000000 24.500000 +v -0.500000 0.000000 25.500000 +v -5.400000 -2.000000 24.500000 +v -4.500000 -2.000000 26.000000 +v -4.500000 -2.000000 26.000000 +v -4.500000 -2.000000 27.000000 +v -4.500000 -2.000000 27.000000 +v -0.500000 -4.000000 27.000000 +v -0.500000 -4.000000 26.000000 +v -5.400000 -2.000000 27.000000 +v -4.500000 -0.750000 24.500000 +v -4.500000 -0.750000 24.500000 +v -4.500000 -0.750000 25.500000 +v -4.500000 -0.750000 25.500000 +v -5.600000 -2.000000 26.799999 +v -5.600000 -2.000000 24.700001 +v -0.500000 1.250000 24.500000 +v -0.500000 1.250000 25.500000 +v -0.500000 -2.750000 27.000000 +v -4.500000 -0.750000 27.000000 +v -4.500000 -0.750000 27.000000 +v -5.400000 -0.750000 27.000000 +v -4.600000 -2.000000 25.600000 +v -4.600000 -2.000000 25.900000 +v -5.541420 -2.000000 26.941425 +v -5.476536 -2.000000 26.984779 +v -5.584775 -2.000000 26.876539 +v -4.550000 -2.000000 25.513397 +v -4.586602 -2.000000 25.549999 +v -5.476536 -2.000000 24.515226 +v -5.541420 -2.000000 24.558582 +v -5.584775 -2.000000 24.623466 +v -4.586602 -2.000000 25.950001 +v -4.550000 -2.000000 25.986603 +v -4.550000 -0.750000 25.513397 +v -4.586602 -0.750000 25.549999 +v -4.600000 -0.750000 25.900000 +v -4.586602 -0.750000 25.950001 +v -5.476536 -0.750000 24.515226 +v -5.541420 -0.750000 24.558582 +v -5.584775 -0.750000 24.623466 +v -5.600000 -0.750000 26.799999 +v -5.584775 -0.750000 26.876539 +v -5.400000 -0.750000 24.500000 +v -5.600000 -0.750000 24.700001 +v -4.550000 -0.750000 25.986603 +v -4.500000 -0.750000 26.000000 +v -4.500000 -0.750000 26.000000 +v -4.600000 -0.750000 25.600000 +v -0.500000 -2.750000 26.000000 +v -5.541420 -0.750000 26.941425 +v -5.476536 -0.750000 26.984779 +v 4.500000 -2.000000 25.500000 +v 4.500000 -2.000000 25.500000 +v 4.500000 -2.000000 24.500000 +v 4.500000 -2.000000 24.500000 +v 0.500000 0.000000 24.500000 +v 0.500000 0.000000 25.500000 +v 5.400000 -2.000000 24.500000 +v 4.500000 -2.000000 26.000000 +v 4.500000 -2.000000 26.000000 +v 4.500000 -2.000000 27.000000 +v 4.500000 -2.000000 27.000000 +v 0.500000 -4.000000 27.000000 +v 0.500000 -4.000000 26.000000 +v 5.400000 -2.000000 27.000000 +v 4.500000 -0.750000 24.500000 +v 4.500000 -0.750000 24.500000 +v 4.500000 -0.750000 25.500000 +v 4.500000 -0.750000 25.500000 +v 5.600000 -2.000000 26.799999 +v 5.600000 -2.000000 24.700001 +v 0.500000 1.250000 24.500000 +v 0.500000 1.250000 25.500000 +v 0.500000 -2.750000 27.000000 +v 4.500000 -0.750000 27.000000 +v 4.500000 -0.750000 27.000000 +v 5.400000 -0.750000 27.000000 +v 4.600000 -2.000000 25.600000 +v 4.600000 -2.000000 25.900000 +v 5.541420 -2.000000 26.941425 +v 5.476536 -2.000000 26.984779 +v 5.584775 -2.000000 26.876539 +v 4.550000 -2.000000 25.513397 +v 4.586602 -2.000000 25.549999 +v 5.476536 -2.000000 24.515226 +v 5.541420 -2.000000 24.558582 +v 5.584775 -2.000000 24.623466 +v 4.586602 -2.000000 25.950001 +v 4.550000 -2.000000 25.986603 +v 4.550000 -0.750000 25.513397 +v 4.586602 -0.750000 25.549999 +v 4.600000 -0.750000 25.900000 +v 4.586602 -0.750000 25.950001 +v 5.476536 -0.750000 24.515226 +v 5.541420 -0.750000 24.558582 +v 5.584775 -0.750000 24.623466 +v 5.600000 -0.750000 26.799999 +v 5.584775 -0.750000 26.876539 +v 5.400000 -0.750000 24.500000 +v 5.600000 -0.750000 24.700001 +v 4.550000 -0.750000 25.986603 +v 4.500000 -0.750000 26.000000 +v 4.500000 -0.750000 26.000000 +v 4.600000 -0.750000 25.600000 +v 0.500000 -2.750000 26.000000 +v 5.541420 -0.750000 26.941425 +v 5.476536 -0.750000 26.984779 +vn -0.4472 0.8944 -0.0000 +vn -0.0000 1.0000 -0.0000 +vn 0.4472 0.8944 -0.0000 +vn -0.0000 -0.0000 -1.0000 +vn -0.1137 -0.0000 -0.9935 +vn -0.1531 -0.0000 -0.9882 +vn -0.1531 -0.0000 0.9882 +vn -0.0000 -0.0000 1.0000 +vn -0.1137 -0.0000 0.9935 +vn 0.9952 -0.0000 -0.0980 +vn 0.9952 -0.0000 0.0980 +vn 0.0980 -0.0000 -0.9952 +vn 0.9239 -0.0000 -0.3827 +vn 0.7071 -0.0000 -0.7071 +vn 0.0980 -0.0000 0.9952 +vn -0.9914 -0.0000 -0.1305 +vn -0.9914 -0.0000 0.1305 +vn 0.7071 -0.0000 0.7071 +vn 0.9239 -0.0000 0.3827 +vn 0.3827 -0.0000 0.9239 +vn 0.3827 -0.0000 -0.9239 +vn 0.4472 -0.8944 -0.0000 +vn -0.4472 -0.8944 -0.0000 +vn -0.0000 -1.0000 -0.0000 +vn -0.8660 -0.0000 -0.5000 +vn -0.8660 -0.0000 0.5000 +vn -0.5000 -0.0000 0.8660 +vn -0.5000 -0.0000 -0.8660 +vn 0.1531 -0.0000 -0.9882 +vn 0.1137 -0.0000 -0.9935 +vn 0.1531 -0.0000 0.9882 +vn 0.1137 -0.0000 0.9935 +vn -0.9952 -0.0000 -0.0980 +vn -0.9952 -0.0000 0.0980 +vn -0.0980 -0.0000 -0.9952 +vn -0.9239 -0.0000 -0.3827 +vn -0.7071 -0.0000 -0.7071 +vn -0.0980 -0.0000 0.9952 +vn 0.9914 -0.0000 -0.1305 +vn 0.9914 -0.0000 0.1305 +vn -0.7071 -0.0000 0.7071 +vn -0.9239 -0.0000 0.3827 +vn -0.3827 -0.0000 0.9239 +vn -0.3827 -0.0000 -0.9239 +vn 0.8660 -0.0000 -0.5000 +vn 0.8660 -0.0000 0.5000 +vn 0.5000 -0.0000 0.8660 +vn 0.5000 -0.0000 -0.8660 +vt 1.000000 0.000000 +vt 1.000000 0.500000 +vt -1.000000 0.500000 +vt -1.000000 0.000000 +vt -1.000000 0.750000 +vt -1.000000 1.250000 +vt -1.450000 1.250000 +vt -1.050000 0.550000 +vt -1.050000 0.700000 +vt -1.550000 1.150000 +vt -1.550000 0.100000 +vt 1.000000 0.750000 +vt 1.000000 1.250000 +vt -1.043301 0.725000 +vt -1.542388 1.188270 +vt -1.542388 0.061733 +vt -1.043301 0.525000 +vt -1.450000 0.000000 +vt 1.000000 0.000000 +vt -1.000000 1.000000 +vt -1.000000 1.625000 +vt 1.000000 0.625000 +vt 1.000000 2.000000 +vt 1.000000 2.625000 +vt -1.763674 -0.625000 +vt -0.713675 -0.625000 +vt -0.713675 0.000000 +vt -1.763674 0.000000 +vt -1.000000 -0.625000 +vt -1.450000 -0.625000 +vt -1.450000 0.000000 +vt -1.000000 0.000000 +vt -1.801941 -0.625000 +vt -1.801941 0.000000 +vt -1.834383 0.000000 +vt -1.834383 -0.625000 +vt -1.450000 -0.625000 +vt -0.729067 1.000000 +vt -0.879067 1.000000 +vt -0.879067 1.625000 +vt -0.729067 1.625000 +vt -0.642962 -0.625000 +vt -0.642962 0.000000 +vt -0.675405 0.000000 +vt -0.675405 -0.625000 +vt -1.488268 0.000000 +vt -1.488268 -0.625000 +vt 1.000000 -1.625000 +vt 1.000000 -1.000000 +vt 1.000000 0.375000 +vt 1.000000 1.000000 +vt -1.520710 -0.625000 +vt -1.520710 0.000000 +vt -1.025000 0.506699 +vt -1.520710 0.029291 +vt -1.488268 0.007613 +vt -0.704067 1.000000 +vt -0.704067 1.625000 +vt -0.904067 1.000000 +vt -0.904067 1.625000 +vt -1.025000 1.000000 +vt -1.025000 1.625000 +vt -1.043301 1.000000 +vt -1.043301 1.625000 +vt -1.520710 1.220713 +vt -1.488268 1.242390 +vt -1.025000 0.743301 +vt 0.000000 0.000000 +vt 2.000000 0.000000 +vt 2.000000 0.500000 +vt 0.000000 0.500000 +vt 2.000000 0.750000 +vt 2.450000 1.250000 +vt 2.000000 1.250000 +vt 2.050000 0.550000 +vt 2.550000 0.100000 +vt 2.550000 1.150000 +vt 2.050000 0.700000 +vt 0.000000 1.250000 +vt 0.000000 0.750000 +vt 2.542388 1.188270 +vt 2.043301 0.725000 +vt 2.043301 0.525000 +vt 2.542388 0.061733 +vt 2.450000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.625000 +vt 2.000000 1.625000 +vt 2.000000 1.000000 +vt 0.000000 2.625000 +vt 0.000000 2.000000 +vt 2.763674 -0.625000 +vt 2.763674 0.000000 +vt 1.713675 0.000000 +vt 1.713675 -0.625000 +vt 2.000000 -0.625000 +vt 2.000000 0.000000 +vt 2.450000 0.000000 +vt 2.450000 -0.625000 +vt 2.801941 -0.625000 +vt 2.834383 -0.625000 +vt 2.834383 0.000000 +vt 2.801941 0.000000 +vt 2.450000 -0.625000 +vt 1.729067 1.000000 +vt 1.729067 1.625000 +vt 1.879067 1.625000 +vt 1.879067 1.000000 +vt 1.642962 -0.625000 +vt 1.675405 -0.625000 +vt 1.675405 0.000000 +vt 1.642962 0.000000 +vt 2.488268 -0.625000 +vt 2.488268 0.000000 +vt 0.000000 -1.000000 +vt 0.000000 -1.625000 +vt 0.000000 0.375000 +vt 0.000000 1.000000 +vt 2.520710 -0.625000 +vt 2.520710 0.000000 +vt 2.025000 0.506699 +vt 2.488268 0.007613 +vt 2.520710 0.029291 +vt 1.704067 1.000000 +vt 1.704067 1.625000 +vt 1.904067 1.625000 +vt 1.904067 1.000000 +vt 2.025000 1.000000 +vt 2.025000 1.625000 +vt 2.043301 1.625000 +vt 2.043301 1.000000 +vt 2.520710 1.220713 +vt 2.025000 0.743301 +vt 2.488268 1.242390 +vt -1.000000 1.000000 +vt -1.000000 1.625000 +vt -1.025000 1.000000 +vt -1.025000 1.625000 +vt -1.043301 1.000000 +vt -1.043301 1.625000 +s 1 +usemtl Cobblestone +f 1656/1081/859 1657/1082/859 1652/1083/859 1654/1084/859 +f 1659/1085/860 1661/1086/860 1665/1087/860 +f 1678/1088/860 1679/1089/860 1670/1090/860 1671/1091/860 +f 1662/1086/861 1660/1085/861 1664/1092/861 1663/1093/861 +f 1670/1090/860 1679/1089/860 1489/1094/860 1481/1095/860 +f 1671/1091/860 1487/1096/860 1483/1097/860 1678/1088/860 +f 1655/1084/860 1653/1083/860 1658/1098/860 +f 1467/1099/862 1465/1100/863 1702/1101/864 1705/1102/862 +f 1463/1100/865 1461/1103/866 1673/1104/866 1669/1101/867 +f 1464/1105/868 1471/1106/869 1697/1107/869 1497/1108/868 +f 1462/1109/862 1469/1110/870 1699/1111/870 1667/1112/862 +f 1687/1113/871 1696/1114/871 1695/1115/872 1686/1116/872 +f 1470/1117/873 1466/1109/866 1675/1112/866 1677/1098/873 +f 1490/1118/874 1484/1119/875 1503/1120/875 1692/1121/874 +f 1680/1122/876 1706/1123/876 1698/1124/877 1682/1125/877 +f 1470/1117/873 1677/1098/873 1501/1126/878 1681/1127/878 +f 1466/1109/866 1468/1128/866 1674/1129/866 1675/1112/866 +f 1460/1130/862 1462/1109/862 1667/1112/862 1672/1131/862 +f 1686/1132/872 1695/1133/872 1694/1126/879 1685/1127/879 +f 1666/1084/880 1668/1083/880 1473/1082/880 1472/1081/880 +f 1477/1093/881 1476/1092/881 1703/1085/881 1676/1086/881 +f 1474/1084/882 1499/1098/882 1492/1083/882 +f 1478/1087/882 1475/1086/882 1498/1085/882 +f 1482/1134/860 1486/1135/860 1485/1136/860 +f 1500/1090/882 1496/1089/882 1704/1088/882 1700/1091/882 +f 1658/1098/860 1653/1083/860 1482/1134/860 1485/1136/860 +f 1682/1125/877 1698/1124/877 1697/1107/869 1471/1106/869 +f 1685/1127/879 1694/1126/879 1699/1111/870 1469/1110/870 +f 1681/1127/878 1501/1126/878 1706/1133/876 1680/1132/876 +f 1464/1105/868 1497/1108/868 1696/1114/871 1687/1113/871 +f 1688/1137/883 1490/1118/874 1692/1121/874 1693/1138/883 +f 1484/1119/875 1684/1139/884 1691/1140/884 1503/1120/875 +f 1683/1141/885 1463/1100/865 1669/1101/867 1690/1142/885 +f 1465/1100/863 1689/1141/886 1507/1142/886 1702/1101/864 +f 1689/1141/886 1688/1143/883 1693/1144/883 1507/1142/886 +f 1684/1143/884 1683/1141/885 1690/1142/885 1691/1144/884 +f 1480/1145/860 1481/1095/860 1489/1094/860 +f 1659/1085/860 1665/1087/860 1479/1146/860 1488/1147/860 +f 1483/1097/860 1487/1096/860 1486/1135/860 +f 1482/1134/860 1483/1097/860 1486/1135/860 +f 1480/1145/860 1489/1094/860 1488/1147/860 +f 1479/1146/860 1480/1145/860 1488/1147/860 +f 1500/1090/882 1502/1095/882 1495/1094/882 1496/1089/882 +f 1700/1091/882 1704/1088/882 1494/1097/882 1506/1096/882 +f 1493/1134/882 1504/1136/882 1505/1135/882 +f 1499/1098/882 1504/1136/882 1493/1134/882 1492/1083/882 +f 1491/1145/882 1495/1094/882 1502/1095/882 +f 1498/1085/882 1701/1147/882 1707/1146/882 1478/1087/882 +f 1494/1097/882 1505/1135/882 1506/1096/882 +f 1493/1134/882 1505/1135/882 1494/1097/882 +f 1491/1145/882 1701/1147/882 1495/1094/882 +f 1707/1146/882 1701/1147/882 1491/1145/882 +f 1712/1148/861 1710/1149/861 1708/1150/861 1713/1151/861 +f 1715/1152/860 1721/1153/860 1717/1154/860 +f 1734/1155/860 1727/1156/860 1726/1157/860 1735/1158/860 +f 1718/1154/859 1719/1159/859 1720/1160/859 1716/1152/859 +f 1726/1157/860 1529/1161/860 1537/1162/860 1735/1158/860 +f 1727/1156/860 1734/1155/860 1531/1163/860 1535/1164/860 +f 1711/1149/860 1714/1165/860 1709/1150/860 +f 1515/1166/862 1761/1167/862 1758/1168/887 1513/1169/888 +f 1511/1169/889 1725/1168/890 1729/1170/866 1509/1171/866 +f 1512/1172/891 1545/1173/891 1753/1174/892 1519/1175/892 +f 1510/1176/862 1723/1177/862 1755/1178/893 1517/1179/893 +f 1743/1180/894 1742/1181/895 1751/1182/895 1752/1183/894 +f 1518/1184/896 1733/1165/896 1731/1177/866 1514/1176/866 +f 1538/1185/897 1748/1186/897 1551/1187/898 1532/1188/898 +f 1736/1189/899 1738/1190/900 1754/1191/900 1762/1192/899 +f 1518/1184/896 1737/1193/901 1549/1194/901 1733/1165/896 +f 1514/1176/866 1731/1177/866 1730/1195/866 1516/1196/866 +f 1508/1197/862 1728/1198/862 1723/1177/862 1510/1176/862 +f 1742/1199/895 1741/1193/902 1750/1194/902 1751/1200/895 +f 1722/1149/881 1520/1148/881 1521/1151/881 1724/1150/881 +f 1525/1159/880 1732/1154/880 1759/1152/880 1524/1160/880 +f 1522/1149/882 1540/1150/882 1547/1165/882 +f 1526/1153/882 1546/1152/882 1523/1154/882 +f 1530/1201/860 1533/1202/860 1534/1203/860 +f 1548/1157/882 1756/1156/882 1760/1155/882 1544/1158/882 +f 1714/1165/860 1533/1202/860 1530/1201/860 1709/1150/860 +f 1738/1190/900 1519/1175/892 1753/1174/892 1754/1191/900 +f 1741/1193/902 1517/1179/893 1755/1178/893 1750/1194/902 +f 1737/1193/901 1736/1199/899 1762/1200/899 1549/1194/901 +f 1512/1172/891 1743/1180/894 1752/1183/894 1545/1173/891 +f 1744/1204/903 1749/1205/903 1748/1186/897 1538/1185/897 +f 1532/1188/898 1551/1187/898 1747/1206/904 1740/1207/904 +f 1739/1208/905 1746/1209/905 1725/1168/890 1511/1169/889 +f 1513/1169/888 1758/1168/887 1555/1209/906 1745/1208/906 +f 1745/1208/906 1555/1209/906 1749/1210/903 1744/1211/903 +f 1740/1211/904 1747/1210/904 1746/1209/905 1739/1208/905 +f 1528/1212/860 1537/1162/860 1529/1161/860 +f 1715/1152/860 1536/1213/860 1527/1214/860 1721/1153/860 +f 1531/1163/860 1534/1203/860 1535/1164/860 +f 1530/1201/860 1534/1203/860 1531/1163/860 +f 1528/1212/860 1536/1213/860 1537/1162/860 +f 1527/1214/860 1536/1213/860 1528/1212/860 +f 1548/1157/882 1544/1158/882 1543/1162/882 1550/1161/882 +f 1756/1156/882 1554/1164/882 1542/1163/882 1760/1155/882 +f 1541/1201/882 1553/1203/882 1552/1202/882 +f 1547/1165/882 1540/1150/882 1541/1201/882 1552/1202/882 +f 1539/1212/882 1550/1161/882 1543/1162/882 +f 1546/1152/882 1526/1153/882 1763/1214/882 1757/1213/882 +f 1542/1163/882 1554/1164/882 1553/1203/882 +f 1541/1201/882 1542/1163/882 1553/1203/882 +f 1539/1212/882 1543/1162/882 1757/1213/882 +f 1763/1214/882 1539/1212/882 1757/1213/882 +f 1768/1148/859 1766/1149/859 1764/1150/859 1769/1151/859 +f 1771/1152/860 1777/1153/860 1773/1154/860 +f 1790/1155/860 1783/1156/860 1782/1157/860 1791/1158/860 +f 1774/1154/861 1775/1159/861 1776/1160/861 1772/1152/861 +f 1782/1157/860 1577/1161/860 1585/1162/860 1791/1158/860 +f 1783/1156/860 1790/1155/860 1579/1163/860 1583/1164/860 +f 1767/1149/860 1770/1165/860 1765/1150/860 +f 1563/1166/866 1817/1167/866 1814/1168/865 1561/1169/867 +f 1559/1169/864 1781/1168/863 1785/1170/862 1557/1171/862 +f 1560/1172/869 1593/1173/869 1809/1174/868 1567/1175/868 +f 1558/1176/866 1779/1177/866 1811/1178/873 1565/1179/873 +f 1799/1180/877 1798/1181/876 1807/1182/876 1808/1183/877 +f 1566/1184/870 1789/1165/870 1787/1177/862 1562/1176/862 +f 1586/1185/875 1804/1186/875 1599/1187/874 1580/1188/874 +f 1792/1189/872 1794/1190/871 1810/1191/871 1818/1192/872 +f 1566/1184/870 1793/1193/879 1597/1194/879 1789/1165/870 +f 1562/1176/862 1787/1177/862 1786/1195/862 1564/1196/862 +f 1556/1197/866 1784/1198/866 1779/1177/866 1558/1176/866 +f 1798/1199/876 1797/1193/878 1806/1194/878 1807/1200/876 +f 1778/1149/880 1568/1148/880 1569/1151/880 1780/1150/880 +f 1573/1159/881 1788/1154/881 1815/1152/881 1572/1160/881 +f 1570/1149/882 1588/1150/882 1595/1165/882 +f 1574/1153/882 1594/1152/882 1571/1154/882 +f 1578/1201/860 1581/1202/860 1582/1203/860 +f 1596/1157/882 1812/1156/882 1816/1155/882 1592/1158/882 +f 1770/1165/860 1581/1202/860 1578/1201/860 1765/1150/860 +f 1794/1190/871 1567/1175/868 1809/1174/868 1810/1191/871 +f 1797/1193/878 1565/1179/873 1811/1178/873 1806/1194/878 +f 1793/1193/879 1792/1199/872 1818/1200/872 1597/1194/879 +f 1560/1172/869 1799/1180/877 1808/1183/877 1593/1173/869 +f 1800/1204/884 1805/1205/884 1804/1186/875 1586/1185/875 +f 1580/1188/874 1599/1187/874 1803/1206/883 1796/1207/883 +f 1795/1208/886 1802/1209/886 1781/1168/863 1559/1169/864 +f 1561/1169/867 1814/1168/865 1603/1209/885 1801/1208/885 +f 1801/1208/885 1603/1209/885 1805/1210/884 1800/1211/884 +f 1796/1211/883 1803/1210/883 1802/1209/886 1795/1208/886 +f 1576/1212/860 1585/1162/860 1577/1161/860 +f 1771/1152/860 1584/1213/860 1575/1214/860 1777/1153/860 +f 1579/1163/860 1582/1203/860 1583/1164/860 +f 1578/1201/860 1582/1203/860 1579/1163/860 +f 1576/1212/860 1584/1213/860 1585/1162/860 +f 1575/1214/860 1584/1213/860 1576/1212/860 +f 1596/1157/882 1592/1158/882 1591/1162/882 1598/1161/882 +f 1812/1156/882 1602/1164/882 1590/1163/882 1816/1155/882 +f 1589/1201/882 1601/1203/882 1600/1202/882 +f 1595/1165/882 1588/1150/882 1589/1201/882 1600/1202/882 +f 1587/1212/882 1598/1161/882 1591/1162/882 +f 1594/1152/882 1574/1153/882 1819/1214/882 1813/1213/882 +f 1590/1163/882 1602/1164/882 1601/1203/882 +f 1589/1201/882 1590/1163/882 1601/1203/882 +f 1587/1212/882 1591/1162/882 1813/1213/882 +f 1819/1214/882 1587/1212/882 1813/1213/882 +f 1824/1081/861 1825/1082/861 1820/1083/861 1822/1084/861 +f 1827/1085/860 1829/1086/860 1833/1087/860 +f 1846/1088/860 1847/1089/860 1838/1090/860 1839/1091/860 +f 1830/1086/859 1828/1085/859 1832/1092/859 1831/1093/859 +f 1838/1090/860 1847/1089/860 1633/1094/860 1625/1095/860 +f 1839/1091/860 1631/1096/860 1627/1097/860 1846/1088/860 +f 1823/1084/860 1821/1083/860 1826/1098/860 +f 1611/1099/866 1609/1215/890 1870/1216/889 1873/1102/866 +f 1607/1215/887 1605/1103/862 1841/1104/862 1837/1216/888 +f 1608/1105/892 1615/1106/891 1865/1107/891 1641/1108/892 +f 1606/1109/866 1613/1110/896 1867/1111/896 1835/1112/866 +f 1855/1113/900 1864/1114/900 1863/1115/899 1854/1116/899 +f 1614/1117/893 1610/1109/862 1843/1112/862 1845/1098/893 +f 1634/1118/898 1628/1119/897 1647/1120/897 1860/1121/898 +f 1848/1122/895 1874/1123/895 1866/1124/894 1850/1125/894 +f 1614/1117/893 1845/1098/893 1645/1126/902 1849/1127/902 +f 1610/1109/862 1612/1128/862 1842/1129/862 1843/1112/862 +f 1604/1130/866 1606/1109/866 1835/1112/866 1840/1131/866 +f 1854/1132/899 1863/1133/899 1862/1126/901 1853/1127/901 +f 1834/1084/881 1836/1083/881 1617/1082/881 1616/1081/881 +f 1621/1093/880 1620/1092/880 1871/1085/880 1844/1086/880 +f 1618/1084/882 1643/1098/882 1636/1083/882 +f 1622/1087/882 1619/1086/882 1642/1085/882 +f 1626/1134/860 1630/1135/860 1629/1136/860 +f 1644/1090/882 1640/1089/882 1872/1088/882 1868/1091/882 +f 1826/1098/860 1821/1083/860 1626/1134/860 1629/1136/860 +f 1850/1125/894 1866/1124/894 1865/1107/891 1615/1106/891 +f 1853/1127/901 1862/1126/901 1867/1111/896 1613/1110/896 +f 1849/1127/902 1645/1126/902 1874/1133/895 1848/1132/895 +f 1608/1105/892 1641/1108/892 1864/1114/900 1855/1113/900 +f 1856/1137/904 1634/1118/898 1860/1121/898 1861/1138/904 +f 1628/1119/897 1852/1139/903 1859/1140/903 1647/1120/897 +f 1851/1217/906 1607/1215/887 1837/1216/888 1858/1218/906 +f 1609/1215/890 1857/1217/905 1651/1218/905 1870/1216/889 +f 1857/1217/905 1856/1219/904 1861/1220/904 1651/1218/905 +f 1852/1219/903 1851/1217/906 1858/1218/906 1859/1220/903 +f 1624/1145/860 1625/1095/860 1633/1094/860 +f 1827/1085/860 1833/1087/860 1623/1146/860 1632/1147/860 +f 1627/1097/860 1631/1096/860 1630/1135/860 +f 1626/1134/860 1627/1097/860 1630/1135/860 +f 1624/1145/860 1633/1094/860 1632/1147/860 +f 1623/1146/860 1624/1145/860 1632/1147/860 +f 1644/1090/882 1646/1095/882 1639/1094/882 1640/1089/882 +f 1868/1091/882 1872/1088/882 1638/1097/882 1650/1096/882 +f 1637/1134/882 1648/1136/882 1649/1135/882 +f 1643/1098/882 1648/1136/882 1637/1134/882 1636/1083/882 +f 1635/1145/882 1639/1094/882 1646/1095/882 +f 1642/1085/882 1869/1147/882 1875/1146/882 1622/1087/882 +f 1638/1097/882 1649/1135/882 1650/1096/882 +f 1637/1134/882 1649/1135/882 1638/1097/882 +f 1635/1145/882 1869/1147/882 1639/1094/882 +f 1875/1146/882 1869/1147/882 1635/1145/882 +o UndergroundCoridoor +v -0.500000 0.000000 -24.000000 +v 0.500000 0.000000 -24.000000 +v -0.500000 0.000000 -24.500000 +v 0.500000 0.000000 -24.500000 +v -0.500000 0.000000 -25.500000 +v 0.500000 0.000000 -25.500000 +v 0.500000 -4.000000 -26.000000 +v 0.500000 -4.000000 -27.000000 +v -0.500000 -4.000000 -26.000000 +v -0.500000 -4.000000 -27.000000 +v -0.500000 1.250000 -24.000000 +v 0.500000 1.250000 -24.000000 +v -0.500000 1.250000 -24.500000 +v 0.500000 1.250000 -24.500000 +v -0.500000 1.250000 -25.500000 +v 0.500000 1.250000 -25.500000 +v 0.500000 -2.750000 -26.000000 +v 0.500000 -2.750000 -27.000000 +v -0.500000 -2.750000 -26.000000 +v -0.500000 -2.750000 -27.000000 +v 0.500000 -6.000000 -22.000000 +v -0.500000 -6.000000 -22.000000 +v 0.500000 -4.750000 -22.000000 +v -0.500000 -4.750000 -22.000000 +v 0.500000 -6.000000 0.000000 +v -0.500000 -6.000000 0.000000 +v 0.500000 -4.750000 0.000000 +v -0.500000 -4.750000 0.000000 +v -0.500000 0.000000 24.000000 +v 0.500000 0.000000 24.000000 +v -0.500000 0.000000 24.500000 +v 0.500000 0.000000 24.500000 +v -0.500000 0.000000 25.500000 +v 0.500000 0.000000 25.500000 +v 0.500000 -4.000000 26.000000 +v 0.500000 -4.000000 27.000000 +v -0.500000 -4.000000 26.000000 +v -0.500000 -4.000000 27.000000 +v -0.500000 1.250000 24.000000 +v 0.500000 1.250000 24.000000 +v -0.500000 1.250000 24.500000 +v 0.500000 1.250000 24.500000 +v -0.500000 1.250000 25.500000 +v 0.500000 1.250000 25.500000 +v 0.500000 -2.750000 26.000000 +v 0.500000 -2.750000 27.000000 +v -0.500000 -2.750000 26.000000 +v -0.500000 -2.750000 27.000000 +v 0.500000 -6.000000 22.000000 +v -0.500000 -6.000000 22.000000 +v 0.500000 -4.750000 22.000000 +v -0.500000 -4.750000 22.000000 +vn -0.0000 1.0000 -0.0000 +vn -0.0000 -0.0000 1.0000 +vn 1.0000 -0.0000 -0.0000 +vn -1.0000 -0.0000 -0.0000 +vn -0.0000 -1.0000 -0.0000 +vn -0.0000 -0.8944 -0.4472 +vn -0.0000 0.8944 0.4472 +vn -0.0000 -0.0000 -1.0000 +vn -0.0000 -0.8944 0.4472 +vn -0.0000 0.8944 -0.4472 +vt -1.347222 -0.500001 +vt -0.847222 -0.500001 +vt -0.847222 -0.250001 +vt -1.347222 -0.250001 +vt 0.000000 0.000000 +vt 0.500000 0.000000 +vt 0.500000 0.500000 +vt 0.000000 0.500000 +vt 0.500000 13.500000 +vt 0.000000 13.500000 +vt 0.000000 13.000000 +vt 0.500000 13.000000 +vt -1.347222 -2.354168 +vt -0.847222 -2.354168 +vt -0.847222 -1.729168 +vt -1.347222 -1.729168 +vt 0.000000 -0.354168 +vt 0.250000 -0.354168 +vt 0.250000 0.270832 +vt 0.000000 0.270832 +vt 1.000000 0.000000 +vt 1.000000 0.625000 +vt 0.500000 0.625000 +vt 0.500000 11.000000 +vt 0.000000 11.000000 +vt 13.000000 1.625000 +vt 13.000000 1.000000 +vt 11.000000 0.000000 +vt 11.000000 0.625000 +vt 0.000000 0.625000 +vt 2.347222 -0.500001 +vt 2.347222 -0.250001 +vt 1.847222 -0.250001 +vt 1.847222 -0.500001 +vt 1.000000 0.500000 +vt 1.000000 13.000000 +vt 1.000000 13.500000 +vt 2.347222 -2.354168 +vt 2.347222 -1.729168 +vt 1.847222 -1.729168 +vt 1.847222 -2.354168 +vt 1.000000 -0.354168 +vt 1.000000 0.270832 +vt 0.750000 0.270832 +vt 0.750000 -0.354168 +vt 1.000000 11.000000 +vt -12.000000 1.625000 +vt -10.000000 0.625000 +vt -10.000000 0.000000 +vt -12.000000 1.000000 +s 0 +usemtl Cobblestone +f 1876/1221/907 1877/1222/907 1879/1223/907 1878/1224/907 +f 1878/1225/907 1879/1226/907 1881/1227/907 1880/1228/907 +f 1883/1229/907 1885/1230/907 1884/1231/907 1882/1232/907 +f 1885/1233/908 1883/1234/908 1893/1235/908 1895/1236/908 +f 1876/1237/909 1878/1238/909 1888/1239/909 1886/1240/909 +f 1879/1238/910 1877/1237/910 1887/1240/910 1889/1239/910 +f 1880/1226/908 1881/1241/908 1891/1242/908 1890/1243/908 +f 1888/1224/911 1889/1223/911 1887/1222/911 1886/1221/911 +f 1891/1225/911 1889/1226/911 1888/1227/911 1890/1228/911 +f 1895/1230/911 1893/1229/911 1892/1232/911 1894/1231/911 +f 1894/1231/912 1892/1232/912 1898/1244/912 1899/1245/912 +f 1882/1232/913 1884/1231/913 1897/1245/913 1896/1244/913 +f 1892/1246/910 1882/1247/910 1896/1248/910 1898/1249/910 +f 1899/1249/909 1897/1248/909 1884/1247/909 1894/1246/909 +f 1896/1244/907 1897/1245/907 1901/1225/907 1900/1226/907 +f 1898/1249/910 1896/1248/910 1900/1225/910 1902/1250/910 +f 1899/1245/911 1898/1244/911 1902/1226/911 1903/1225/911 +f 1897/1248/909 1899/1249/909 1903/1250/909 1901/1225/909 +f 1904/1251/907 1906/1252/907 1907/1253/907 1905/1254/907 +f 1906/1241/907 1908/1255/907 1909/1227/907 1907/1226/907 +f 1911/1229/907 1910/1232/907 1912/1256/907 1913/1257/907 +f 1913/1258/914 1923/1259/914 1921/1260/914 1911/1261/914 +f 1904/1262/909 1914/1263/909 1916/1264/909 1906/1265/909 +f 1907/1265/910 1917/1264/910 1915/1263/910 1905/1262/910 +f 1908/1226/914 1918/1243/914 1919/1250/914 1909/1225/914 +f 1916/1252/911 1914/1251/911 1915/1254/911 1917/1253/911 +f 1919/1241/911 1918/1255/911 1916/1227/911 1917/1226/911 +f 1923/1257/911 1922/1256/911 1920/1232/911 1921/1229/911 +f 1922/1256/915 1927/1266/915 1926/1244/915 1920/1232/915 +f 1910/1232/916 1924/1244/916 1925/1266/916 1912/1256/916 +f 1920/1267/910 1926/1268/910 1924/1269/910 1910/1270/910 +f 1927/1268/909 1922/1267/909 1912/1270/909 1925/1269/909 +f 1924/1244/907 1900/1226/907 1901/1241/907 1925/1266/907 +f 1926/1268/910 1902/1242/910 1900/1241/910 1924/1269/910 +f 1927/1266/911 1903/1241/911 1902/1226/911 1926/1244/911 +f 1925/1269/909 1901/1241/909 1903/1242/909 1927/1268/909 +o Ramp +v -20.000000 3.000000 13.000000 +v -19.942356 2.414729 13.000000 +v -19.771639 1.851950 13.000000 +v -19.494410 1.333289 13.000000 +v -19.121321 0.878680 13.000000 +v -18.666710 0.505591 13.000000 +v -18.148050 0.228362 13.000000 +v -17.585272 0.057644 13.000000 +v -17.000000 0.000000 13.000000 +v -20.000000 -0.000000 15.000000 +v -17.000000 -0.000000 15.000000 +v -17.585272 0.057644 15.000000 +v -18.148050 0.228362 15.000000 +v -18.666710 0.505591 15.000000 +v -19.121321 0.878680 15.000000 +v -19.494410 1.333289 15.000000 +v -19.771639 1.851950 15.000000 +v -19.942356 2.414729 15.000000 +v -20.000000 3.000000 15.000000 +v -20.000000 0.000000 13.000000 +v -20.000000 3.000000 15.000000 +v -20.000000 3.000000 15.000000 +v -20.000000 3.000000 13.000000 +v -20.000000 -0.000000 15.000000 +v -17.000000 -0.000000 15.000000 +v -17.585272 0.057644 15.000000 +v -18.148050 0.228362 15.000000 +v -18.666710 0.505591 15.000000 +v -19.121321 0.878680 15.000000 +v -19.494410 1.333289 15.000000 +v -19.771639 1.851950 15.000000 +v -19.942356 2.414729 15.000000 +vn 0.9952 0.0980 -0.0000 +vn 0.9808 0.1951 -0.0000 +vn 0.1951 0.9808 -0.0000 +vn 0.0980 0.9952 -0.0000 +vn 0.7071 0.7071 -0.0000 +vn 0.5556 0.8315 -0.0000 +vn -0.0000 -0.0000 1.0000 +vn 0.9239 0.3827 -0.0000 +vn -1.0000 -0.0000 -0.0000 +vn 0.3827 0.9239 -0.0000 +vn 0.8315 0.5556 -0.0000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.292635 0.000000 +vt 0.292635 1.000000 +vt 2.048448 1.000000 +vt 2.048448 0.000000 +vt 2.341084 0.000000 +vt 2.341084 1.000000 +vt 1.170542 1.000000 +vt 1.170542 0.000000 +vt 1.463177 0.000000 +vt 1.463177 1.000000 +vt -0.000000 0.000000 +vt 0.666645 0.252796 +vt 0.439340 0.439340 +vt 0.585271 0.000000 +vt 0.585271 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 1.500000 +vt 1.000000 1.500000 +vt 1.755813 0.000000 +vt 1.755813 1.000000 +vt 0.877906 0.000000 +vt 0.877906 1.000000 +vt 0.028822 1.207365 +vt -0.000000 1.500000 +vt 1.500000 0.000000 +vt 1.207364 0.028822 +vt 0.925975 0.114181 +vt 0.114181 0.925975 +vt 0.252796 0.666645 +s 1 +usemtl Cobblestone +f 1950/1271/917 1948/1272/917 1959/1273/918 1929/1274/918 +f 1935/1275/919 1953/1276/919 1952/1277/920 1936/1278/920 +f 1932/1279/921 1956/1280/921 1955/1281/922 1933/1282/922 +f 1937/1283/923 1941/1284/923 1942/1285/923 +f 1929/1274/918 1959/1273/918 1958/1286/924 1930/1287/924 +f 1947/1288/925 1951/1289/925 1949/1290/925 1928/1291/925 +f 1933/1282/922 1955/1281/922 1954/1292/926 1934/1293/926 +f 1930/1287/924 1958/1286/924 1957/1294/927 1931/1295/927 +f 1934/1293/926 1954/1292/926 1953/1276/919 1935/1275/919 +f 1931/1295/927 1957/1294/927 1956/1280/921 1932/1279/921 +f 1945/1296/923 1946/1297/923 1937/1283/923 +f 1937/1283/923 1938/1298/923 1939/1299/923 +f 1937/1283/923 1939/1299/923 1940/1300/923 +f 1944/1301/923 1945/1296/923 1937/1283/923 +f 1943/1302/923 1944/1301/923 1937/1283/923 +f 1937/1283/923 1940/1300/923 1941/1284/923 +f 1942/1285/923 1943/1302/923 1937/1283/923 +o BuildingRampRoof +v -6.000000 2.500000 -1.000000 +v 0.875000 2.500000 6.000000 +v -2.500000 2.500000 1.000000 +v -1.000000 2.500000 2.500000 +v -6.000000 2.500000 0.875000 +v -5.875000 2.500000 1.000000 +v -1.000000 2.500000 5.875000 +v -0.875000 2.500000 6.000000 +v -1.000000 2.500000 -6.000000 +v 1.000000 2.500000 5.875000 +v 1.000000 2.500000 2.500000 +v 2.500000 2.500000 1.000000 +v 2.500000 2.500000 -1.000000 +v 1.000000 2.500000 -2.500000 +v -1.000000 2.500000 -1.000000 +v 1.000000 2.500000 -5.900000 +v 1.000000 2.500000 -5.875000 +v 5.875000 2.500000 1.000000 +v 5.875000 2.500000 -1.000000 +v 0.875000 2.500000 -6.000000 +v 6.000000 2.500000 0.875000 +v 6.000000 2.500000 -0.875000 +v -2.000000 1.500000 2.500000 +v -6.000000 1.500000 5.500000 +v -5.500000 1.500000 6.000000 +v -1.875000 1.500000 6.000000 +v -2.000000 1.500000 5.875000 +v -5.875000 1.500000 2.000000 +v -6.000000 1.500000 1.875000 +v -2.500000 1.500000 2.000000 +v 2.500000 1.500000 2.000000 +v 5.500000 1.500000 6.000000 +v 6.000000 1.500000 5.500000 +v 6.000000 1.500000 1.875000 +v 5.875000 1.500000 2.000000 +v 2.000000 1.500000 5.875000 +v 1.875000 1.500000 6.000000 +v 2.000000 1.500000 2.500000 +v 2.000000 1.500000 -2.500000 +v 5.999999 1.500000 -5.500000 +v 5.499999 1.500000 -6.000000 +v 1.875000 1.500000 -6.000000 +v 2.000000 1.500000 -5.875000 +v 5.875000 1.500000 -2.000000 +v 6.000000 1.500000 -1.875000 +v 2.500000 1.500000 -2.000000 +vn -0.0000 1.0000 -0.0000 +vt 3.437500 -2.500000 +vt 3.500000 -2.437500 +vt 2.500000 -2.437500 +vt 2.562500 -2.500000 +vt 3.500000 -0.750000 +vt 2.500000 -0.750000 +vt 2.500000 3.500000 +vt 2.500000 1.000000 +vt 3.500000 1.750000 +vt 3.500000 3.437500 +vt 4.250000 1.000000 +vt 4.250000 0.000000 +vt 5.937500 0.000000 +vt 5.937500 1.000000 +vt -0.000000 1.000000 +vt 1.750000 0.000000 +vt 3.437500 3.500000 +vt 5.937500 0.000000 +vt 6.000000 0.062500 +vt 6.000000 0.937500 +vt -0.000000 0.062500 +vt 0.062500 0.000000 +vt 0.000000 2.062500 +vt 0.000000 0.250000 +vt 0.062500 2.000000 +vt 2.000000 0.062500 +vt 0.250000 0.000000 +vt 2.062500 0.000000 +vt 2.000000 1.750000 +vt 1.750000 2.000000 +vt -1.062500 0.000000 +vt 0.750000 0.000000 +vt -1.000000 0.062500 +vt 0.937500 2.000000 +vt 1.000000 0.250000 +vt 1.000000 2.062500 +vt -0.750000 2.000000 +vt -1.000000 1.750000 +vt 1.000000 -1.062500 +vt 1.000000 0.750000 +vt 0.937500 -1.000000 +vt -1.000000 0.937500 +vt 0.750000 1.000000 +vt -1.062500 1.000000 +vt -1.000000 -0.750000 +vt -0.750000 -1.000000 +s 0 +usemtl Cobblestone +f 1961/1303/928 1969/1304/928 1966/1305/928 1967/1306/928 +f 1969/1304/928 1970/1307/928 1963/1308/928 1966/1305/928 +f 1968/1309/928 1974/1310/928 1973/1311/928 1976/1312/928 +f 1972/1313/928 1971/1314/928 1977/1315/928 1978/1316/928 +f 1974/1310/928 1960/1317/928 1962/1318/928 +f 1962/1318/928 1963/1308/928 1970/1307/928 1974/1310/928 +f 1974/1310/928 1970/1307/928 1971/1314/928 +f 1968/1309/928 1976/1312/928 1979/1319/928 +f 1978/1316/928 1977/1320/928 1980/1321/928 1981/1322/928 +f 1973/1311/928 1974/1310/928 1971/1314/928 1972/1313/928 +f 1960/1317/928 1964/1323/928 1965/1324/928 1962/1318/928 +f 1988/1325/928 1983/1326/928 1987/1327/928 +f 1986/1328/928 1984/1329/928 1985/1330/928 +f 1984/1329/928 1986/1328/928 1987/1327/928 1983/1326/928 +f 1986/1328/928 1982/1331/928 1989/1332/928 1987/1327/928 +f 1996/1333/928 1991/1334/928 1995/1335/928 +f 1994/1336/928 1992/1337/928 1993/1338/928 +f 1992/1337/928 1994/1336/928 1995/1335/928 1991/1334/928 +f 1994/1336/928 1990/1339/928 1997/1340/928 1995/1335/928 +f 2004/1341/928 1999/1342/928 2003/1343/928 +f 2002/1344/928 2000/1345/928 2001/1346/928 +f 2000/1345/928 2002/1344/928 2003/1343/928 1999/1342/928 +f 2002/1344/928 1998/1347/928 2005/1348/928 2003/1343/928 +l 1973 1975 +o Terrain +v -22.000002 -0.533112 -22.000002 +v -7.000001 -0.211025 -12.000002 +v -7.000001 -0.534657 -22.000002 +v -22.000002 -0.502405 -12.000002 +v -7.000001 -0.337120 -13.000002 +v -7.000001 -0.600811 -14.000002 +v -7.000001 -0.549606 -15.000002 +v -7.000001 -0.357876 -16.000002 +v -7.000001 -0.498184 -17.000002 +v -7.000001 -0.296180 -18.000002 +v -7.000001 -0.187997 -19.000002 +v -7.000001 -0.436451 -20.000002 +v -7.000001 -0.323097 -21.000002 +v -22.000002 -0.338748 -13.000002 +v -22.000002 -0.207832 -14.000002 +v -22.000002 -0.220001 -15.000002 +v -22.000002 -0.358393 -16.000002 +v -22.000002 -0.703098 -17.000002 +v -22.000002 -0.712385 -18.000002 +v -22.000002 -0.533642 -19.000002 +v -22.000002 -0.553265 -20.000002 +v -22.000002 -0.551648 -21.000002 +v -8.000001 -0.401734 -12.000002 +v -9.000001 -0.628346 -12.000002 +v -10.000001 -0.339083 -12.000002 +v -11.000001 -0.303425 -12.000002 +v -12.000002 -0.424683 -12.000002 +v -13.000002 -0.333648 -12.000002 +v -14.000002 -0.405994 -12.000002 +v -15.000002 -0.607098 -12.000002 +v -16.000002 -0.628003 -12.000002 +v -17.000002 -0.469468 -12.000002 +v -18.000002 -0.274116 -12.000002 +v -19.000002 -0.298645 -12.000002 +v -20.000002 -0.466931 -12.000002 +v -21.000002 -0.502174 -12.000002 +v -21.000002 -0.374246 -22.000002 +v -20.000002 -0.582496 -22.000002 +v -19.000002 -0.946930 -22.000002 +v -18.000002 -0.696955 -22.000002 +v -17.000002 -0.375092 -22.000002 +v -16.000002 -0.276501 -22.000002 +v -15.000002 -0.335563 -22.000002 +v -14.000002 -0.382163 -22.000002 +v -13.000002 -0.485409 -22.000002 +v -12.000002 -0.507178 -22.000002 +v -11.000001 -0.404995 -22.000002 +v -10.000001 -0.304068 -22.000002 +v -9.000001 -0.237850 -22.000002 +v -8.000001 -0.343008 -22.000002 +v -21.000002 -0.118149 -21.000002 +v -20.000002 -0.260623 -21.000002 +v -19.000002 -0.630013 -21.000002 +v -18.000002 -0.682664 -21.000002 +v -17.000002 -0.347588 -21.000002 +v -16.000002 -0.235919 -21.000002 +v -15.000002 -0.607215 -21.000002 +v -14.000002 -0.776618 -21.000002 +v -13.000002 -0.714713 -21.000002 +v -12.000002 -0.502461 -21.000002 +v -11.000001 -0.297631 -21.000002 +v -10.000001 -0.344700 -21.000002 +v -9.000001 -0.450798 -21.000002 +v -8.000001 -0.289757 -21.000002 +v -21.000002 -0.391013 -20.000002 +v -20.000002 -0.274820 -20.000002 +v -19.000002 -0.417461 -20.000002 +v -18.000002 -0.667692 -20.000002 +v -17.000002 -0.549290 -20.000002 +v -16.000002 -0.541209 -20.000002 +v -15.000002 -0.911628 -20.000002 +v -14.000002 -1.000000 -20.000002 +v -13.000002 -0.923237 -20.000002 +v -12.000002 -0.543248 -20.000002 +v -11.000001 -0.356269 -20.000002 +v -10.000001 -0.438711 -20.000002 +v -9.000001 -0.384983 -20.000002 +v -8.000001 -0.378742 -20.000002 +v -21.000002 -0.626167 -19.000002 +v -20.000002 -0.470086 -19.000002 +v -19.000002 -0.604758 -19.000002 +v -18.000002 -0.639268 -19.000002 +v -17.000002 -0.324235 -19.000002 +v -16.000002 -0.401596 -19.000002 +v -15.000002 -0.752991 -19.000002 +v -14.000002 -1.000000 -19.000002 +v -13.000002 -0.933433 -19.000002 +v -12.000002 -0.657676 -19.000002 +v -11.000001 -0.760520 -19.000002 +v -10.000001 -0.683975 -19.000002 +v -9.000001 -0.276062 -19.000002 +v -8.000001 -0.265271 -19.000002 +v -21.000002 -0.669010 -18.000002 +v -20.000002 -0.557882 -18.000002 +v -19.000002 -0.758399 -18.000002 +v -18.000002 -0.511859 -18.000002 +v -17.000002 -0.096313 -18.000002 +v -16.000002 -0.111700 -18.000002 +v -15.000002 -0.205601 -18.000002 +v -14.000002 -0.589785 -18.000002 +v -13.000002 -0.924439 -18.000002 +v -12.000002 -0.755259 -18.000002 +v -11.000001 -0.595147 -18.000002 +v -10.000001 -0.687985 -18.000002 +v -9.000001 -0.634628 -18.000002 +v -8.000001 -0.384974 -18.000002 +v -21.000002 -0.632615 -17.000002 +v -20.000002 -0.389367 -17.000002 +v -19.000002 -0.478654 -17.000002 +v -18.000002 -0.383973 -17.000002 +v -17.000002 -0.300827 -17.000002 +v -16.000002 -0.279953 -17.000002 +v -15.000002 -0.142074 -17.000002 +v -14.000002 -0.302562 -17.000002 +v -13.000002 -0.758880 -17.000002 +v -12.000002 -0.824356 -17.000002 +v -11.000001 -0.529365 -17.000002 +v -10.000001 -0.591465 -17.000002 +v -9.000001 -0.692544 -17.000002 +v -8.000001 -0.401261 -17.000002 +v -21.000002 -0.355728 -16.000002 +v -20.000002 -0.160983 -16.000002 +v -19.000002 -0.027005 -16.000002 +v -18.000002 -0.387698 -16.000002 +v -17.000002 -0.674960 -16.000002 +v -16.000002 -0.470534 -16.000002 +v -15.000002 -0.178188 -16.000002 +v -14.000002 -0.239357 -16.000002 +v -13.000002 -0.491967 -16.000002 +v -12.000002 -0.553623 -16.000002 +v -11.000001 -0.446049 -16.000002 +v -10.000001 -0.505844 -16.000002 +v -9.000001 -0.462067 -16.000002 +v -8.000001 -0.201712 -16.000002 +v -21.000002 -0.408256 -15.000002 +v -20.000002 -0.337803 -15.000002 +v -19.000002 -0.056350 -15.000002 +v -18.000002 -0.365120 -15.000002 +v -17.000002 -0.515489 -15.000002 +v -16.000002 -0.517315 -15.000002 +v -15.000002 -0.460311 -15.000002 +v -14.000002 -0.243908 -15.000002 +v -13.000002 -0.114556 -15.000002 +v -12.000002 -0.197982 -15.000002 +v -11.000001 -0.303420 -15.000002 +v -10.000001 -0.580932 -15.000002 +v -9.000001 -0.612320 -15.000002 +v -8.000001 -0.358547 -15.000002 +v -21.000002 -0.276924 -14.000002 +v -20.000002 -0.338091 -14.000002 +v -19.000002 -0.256442 -14.000002 +v -18.000002 -0.154980 -14.000002 +v -17.000002 -0.216113 -14.000002 +v -16.000002 -0.686244 -14.000002 +v -15.000002 -0.737275 -14.000002 +v -14.000002 -0.321931 -14.000002 +v -13.000002 -0.128494 -14.000002 +v -12.000002 -0.356427 -14.000002 +v -11.000001 -0.479054 -14.000002 +v -10.000001 -0.537222 -14.000002 +v -9.000001 -0.642727 -14.000002 +v -8.000001 -0.543134 -14.000002 +v -21.000002 -0.399429 -13.000002 +v -20.000002 -0.475562 -13.000002 +v -19.000002 -0.477066 -13.000002 +v -18.000002 -0.286850 -13.000002 +v -17.000002 -0.580230 -13.000002 +v -16.000002 -0.949367 -13.000002 +v -15.000002 -0.539132 -13.000002 +v -14.000002 -0.244648 -13.000002 +v -13.000002 -0.306931 -13.000002 +v -12.000002 -0.395691 -13.000002 +v -11.000001 -0.251824 -13.000002 +v -10.000001 -0.346393 -13.000002 +v -9.000001 -0.781761 -13.000002 +v -8.000001 -0.624588 -13.000002 +v -21.500002 -0.505064 -12.000002 +v -7.500001 -0.448988 -22.000002 +v -7.000001 -0.356218 -21.500002 +v -22.000002 -0.526081 -21.500002 +v -7.000001 -0.259101 -12.500002 +v -7.000001 -0.471880 -13.500002 +v -7.000001 -0.621497 -14.500002 +v -7.000001 -0.432461 -15.500002 +v -7.000001 -0.397428 -16.500002 +v -7.000001 -0.458697 -17.500002 +v -7.000001 -0.165914 -18.500002 +v -7.000001 -0.342465 -19.500002 +v -7.000001 -0.406065 -20.500002 +v -22.000002 -0.432514 -12.500002 +v -22.000002 -0.256258 -13.500002 +v -22.000002 -0.208592 -14.500002 +v -22.000002 -0.243559 -15.500002 +v -22.000002 -0.544148 -16.500002 +v -22.000002 -0.755802 -17.500002 +v -22.000002 -0.604332 -18.500002 +v -22.000002 -0.541290 -19.500002 +v -22.000002 -0.557939 -20.500002 +v -7.500001 -0.253678 -21.000002 +v -7.500001 -0.400733 -20.000002 +v -7.500001 -0.235777 -19.000002 +v -7.500001 -0.284414 -18.000002 +v -7.500001 -0.365236 -17.000002 +v -7.500001 -0.219251 -16.000002 +v -7.500001 -0.412913 -15.000002 +v -7.500001 -0.550604 -14.000002 +v -7.500001 -0.439575 -13.000002 +v -7.500001 -0.245564 -12.000002 +v -8.500001 -0.570247 -12.000002 +v -9.500001 -0.502617 -12.000002 +v -10.500001 -0.262726 -12.000002 +v -11.500002 -0.389933 -12.000002 +v -12.500002 -0.386457 -12.000002 +v -13.500002 -0.338422 -12.000002 +v -14.500002 -0.517827 -12.000002 +v -15.500002 -0.644016 -12.000002 +v -16.500002 -0.550307 -12.000002 +v -17.500002 -0.373963 -12.000002 +v -18.500002 -0.249853 -12.000002 +v -19.500002 -0.385577 -12.000002 +v -20.500002 -0.502551 -12.000002 +v -21.500002 -0.469674 -22.000002 +v -20.500002 -0.390674 -22.000002 +v -19.500002 -0.828006 -22.000002 +v -18.500002 -0.867265 -22.000002 +v -17.500002 -0.501933 -22.000002 +v -16.500002 -0.311322 -22.000002 +v -15.500002 -0.295872 -22.000002 +v -14.500002 -0.354617 -22.000002 +v -13.500002 -0.429181 -22.000002 +v -12.500002 -0.521433 -22.000002 +v -11.500002 -0.450314 -22.000002 +v -10.500001 -0.367041 -22.000002 +v -9.500001 -0.253026 -22.000002 +v -8.500001 -0.266760 -22.000002 +v -21.500002 -0.298784 -21.000002 +v -20.500002 -0.122819 -21.000002 +v -19.500002 -0.476430 -21.000002 +v -18.500002 -0.697178 -21.000002 +v -17.500002 -0.534868 -21.000002 +v -16.500002 -0.222682 -21.000002 +v -15.500002 -0.415175 -21.000002 +v -14.500002 -0.716502 -21.000002 +v -13.500002 -0.757222 -21.000002 +v -12.500002 -0.642712 -21.000002 +v -11.500002 -0.364761 -21.000002 +v -10.500001 -0.304027 -21.000002 +v -9.500001 -0.405663 -21.000002 +v -8.500001 -0.392654 -21.000002 +v -21.500002 -0.439203 -20.000002 +v -20.500002 -0.332846 -20.000002 +v -19.500002 -0.305768 -20.000002 +v -18.500002 -0.571353 -20.000002 +v -17.500002 -0.637313 -20.000002 +v -16.500002 -0.494971 -20.000002 +v -15.500002 -0.717556 -20.000002 +v -14.500002 -1.000000 -20.000002 +v -13.500002 -1.000000 -20.000002 +v -12.500002 -0.779451 -20.000002 +v -11.500002 -0.373392 -20.000002 +v -10.500001 -0.418900 -20.000002 +v -9.500001 -0.411714 -20.000002 +v -8.500001 -0.378734 -20.000002 +v -21.500002 -0.547057 -19.000002 +v -20.500002 -0.573531 -19.000002 +v -19.500002 -0.466587 -19.000002 +v -18.500002 -0.716221 -19.000002 +v -17.500002 -0.442159 -19.000002 +v -16.500002 -0.334833 -19.000002 +v -15.500002 -0.562558 -19.000002 +v -14.500002 -0.932950 -19.000002 +v -13.500002 -1.000000 -19.000002 +v -12.500002 -0.802853 -19.000002 +v -11.500002 -0.642644 -19.000002 +v -10.500001 -0.818647 -19.000002 +v -9.500001 -0.435396 -19.000002 +v -8.500001 -0.271911 -19.000002 +v -21.500002 -0.686925 -18.000002 +v -20.500002 -0.600252 -18.000002 +v -19.500002 -0.622641 -18.000002 +v -18.500002 -0.743309 -18.000002 +v -17.500002 -0.222314 -18.000002 +v -16.500002 -0.112049 -18.000002 +v -15.500002 -0.138340 -18.000002 +v -14.500002 -0.361311 -18.000002 +v -13.500002 -0.801233 -18.000002 +v -12.500002 -0.893358 -18.000002 +v -11.500002 -0.620277 -18.000002 +v -10.500001 -0.659777 -18.000002 +v -9.500001 -0.665938 -18.000002 +v -8.500001 -0.540829 -18.000002 +v -21.500002 -0.713558 -17.000002 +v -20.500002 -0.492399 -17.000002 +v -19.500002 -0.400644 -17.000002 +v -18.500002 -0.472293 -17.000002 +v -17.500002 -0.299618 -17.000002 +v -16.500002 -0.329736 -17.000002 +v -15.500002 -0.189950 -17.000002 +v -14.500002 -0.173468 -17.000002 +v -13.500002 -0.533347 -17.000002 +v -12.500002 -0.867324 -17.000002 +v -11.500002 -0.657478 -17.000002 +v -10.500001 -0.537960 -17.000002 +v -9.500001 -0.658369 -17.000002 +v -8.500001 -0.570732 -17.000002 +v -21.500002 -0.338507 -16.000002 +v -20.500002 -0.303422 -16.000002 +v -19.500002 -0.039432 -16.000002 +v -18.500002 -0.170152 -16.000002 +v -17.500002 -0.580003 -16.000002 +v -16.500002 -0.628871 -16.000002 +v -15.500002 -0.281975 -16.000002 +v -14.500002 -0.176788 -16.000002 +v -13.500002 -0.367734 -16.000002 +v -12.500002 -0.554791 -16.000002 +v -11.500002 -0.494282 -16.000002 +v -10.500001 -0.471432 -16.000002 +v -9.500001 -0.504653 -16.000002 +v -8.500001 -0.327351 -16.000002 +v -21.500002 -0.254400 -15.000002 +v -20.500002 -0.467545 -15.000002 +v -19.500002 -0.135531 -15.000002 +v -18.500002 -0.190474 -15.000002 +v -17.500002 -0.485315 -15.000002 +v -16.500002 -0.516214 -15.000002 +v -15.500002 -0.498193 -15.000002 +v -14.500002 -0.370412 -15.000002 +v -13.500002 -0.147328 -15.000002 +v -12.500002 -0.139757 -15.000002 +v -11.500002 -0.263775 -15.000002 +v -10.500001 -0.414348 -15.000002 +v -9.500001 -0.662911 -15.000002 +v -8.500001 -0.457092 -15.000002 +v -21.500002 -0.207650 -14.000002 +v -20.500002 -0.341739 -14.000002 +v -19.500002 -0.285350 -14.000002 +v -18.500002 -0.219798 -14.000002 +v -17.500002 -0.146055 -14.000002 +v -16.500002 -0.434022 -14.000002 +v -15.500002 -0.794399 -14.000002 +v -14.500002 -0.549814 -14.000002 +v -13.500002 -0.170329 -14.000002 +v -12.500002 -0.209228 -14.000002 +v -11.500002 -0.467427 -14.000002 +v -10.500001 -0.475066 -14.000002 +v -9.500001 -0.615650 -14.000002 +v -8.500001 -0.589726 -14.000002 +v -21.500002 -0.380127 -13.000002 +v -20.500002 -0.433315 -13.000002 +v -19.500002 -0.492156 -13.000002 +v -18.500002 -0.370114 -13.000002 +v -17.500002 -0.369822 -13.000002 +v -16.500002 -0.837419 -13.000002 +v -15.500002 -0.793406 -13.000002 +v -14.500002 -0.354047 -13.000002 +v -13.500002 -0.257888 -13.000002 +v -12.500002 -0.354549 -13.000002 +v -11.500002 -0.356868 -13.000002 +v -10.500001 -0.212841 -13.000002 +v -9.500001 -0.597095 -13.000002 +v -8.500001 -0.764812 -13.000002 +v -8.000001 -0.599944 -13.500002 +v -9.000001 -0.687576 -13.500002 +v -10.000001 -0.404154 -13.500002 +v -11.000001 -0.369823 -13.500002 +v -12.000002 -0.389881 -13.500002 +v -13.000002 -0.217100 -13.500002 +v -14.000002 -0.269167 -13.500002 +v -15.000002 -0.635857 -13.500002 +v -16.000002 -0.841502 -13.500002 +v -17.000002 -0.380361 -13.500002 +v -18.000002 -0.192964 -13.500002 +v -19.000002 -0.388849 -13.500002 +v -20.000002 -0.380004 -13.500002 +v -21.000002 -0.275221 -13.500002 +v -8.000001 -0.450873 -14.500002 +v -9.000001 -0.635218 -14.500002 +v -10.000001 -0.619718 -14.500002 +v -11.000001 -0.449801 -14.500002 +v -12.000002 -0.282005 -14.500002 +v -13.000002 -0.096434 -14.500002 +v -14.000002 -0.321308 -14.500002 +v -15.000002 -0.675375 -14.500002 +v -16.000002 -0.563364 -14.500002 +v -17.000002 -0.279941 -14.500002 +v -18.000002 -0.234562 -14.500002 +v -19.000002 -0.131094 -14.500002 +v -20.000002 -0.343335 -14.500002 +v -21.000002 -0.365883 -14.500002 +v -8.000001 -0.255108 -15.500002 +v -9.000001 -0.513738 -15.500002 +v -10.000001 -0.503960 -15.500002 +v -11.000001 -0.292605 -15.500002 +v -12.000002 -0.290556 -15.500002 +v -13.000002 -0.250756 -15.500002 +v -14.000002 -0.196308 -15.500002 +v -15.000002 -0.261533 -15.500002 +v -16.000002 -0.513312 -15.500002 +v -17.000002 -0.697169 -15.500002 +v -18.000002 -0.412400 -15.500002 +v -19.000002 -0.000000 -15.500002 +v -20.000002 -0.234731 -15.500002 +v -21.000002 -0.347606 -15.500002 +v -8.000001 -0.270823 -16.500002 +v -9.000001 -0.541271 -16.500002 +v -10.000001 -0.562972 -16.500002 +v -11.000001 -0.579105 -16.500002 +v -12.000002 -0.787503 -16.500002 +v -13.000002 -0.695195 -16.500002 +v -14.000002 -0.305697 -16.500002 +v -15.000002 -0.179409 -16.500002 +v -16.000002 -0.378325 -16.500002 +v -17.000002 -0.469324 -16.500002 +v -18.000002 -0.353955 -16.500002 +v -19.000002 -0.223568 -16.500002 +v -20.000002 -0.226524 -16.500002 +v -21.000002 -0.477087 -16.500002 +v -8.000001 -0.444487 -17.500002 +v -9.000001 -0.747437 -17.500002 +v -10.000001 -0.618662 -17.500002 +v -11.000001 -0.470999 -17.500002 +v -12.000002 -0.763872 -17.500002 +v -13.000002 -0.811757 -17.500002 +v -14.000002 -0.351354 -17.500002 +v -15.000002 -0.078856 -17.500002 +v -16.000002 -0.164000 -17.500002 +v -17.000002 -0.193239 -17.500002 +v -18.000002 -0.457212 -17.500002 +v -19.000002 -0.676300 -17.500002 +v -20.000002 -0.521869 -17.500002 +v -21.000002 -0.693445 -17.500002 +v -8.000001 -0.289911 -18.500002 +v -9.000001 -0.418469 -18.500002 +v -10.000001 -0.722750 -18.500002 +v -11.000001 -0.753529 -18.500002 +v -12.000002 -0.736855 -18.500002 +v -13.000002 -0.983302 -18.500002 +v -14.000002 -0.884470 -18.500002 +v -15.000002 -0.498674 -18.500002 +v -16.000002 -0.216889 -18.500002 +v -17.000002 -0.148037 -18.500002 +v -18.000002 -0.566342 -18.500002 +v -19.000002 -0.691521 -18.500002 +v -20.000002 -0.505788 -18.500002 +v -21.000002 -0.617337 -18.500002 +v -8.000001 -0.337394 -19.500002 +v -9.000001 -0.306600 -19.500002 +v -10.000001 -0.565845 -19.500002 +v -11.000001 -0.554722 -19.500002 +v -12.000002 -0.569706 -19.500002 +v -13.000002 -0.905294 -19.500002 +v -14.000002 -1.000000 -19.500002 +v -15.000002 -0.884197 -19.500002 +v -16.000002 -0.538305 -19.500002 +v -17.000002 -0.499093 -19.500002 +v -18.000002 -0.682349 -19.500002 +v -19.000002 -0.510097 -19.500002 +v -20.000002 -0.406677 -19.500002 +v -21.000002 -0.584036 -19.500002 +v -8.000001 -0.350496 -20.500002 +v -9.000001 -0.448549 -20.500002 +v -10.000001 -0.363570 -20.500002 +v -11.000001 -0.276621 -20.500002 +v -12.000002 -0.542104 -20.500002 +v -13.000002 -0.873005 -20.500002 +v -14.000002 -0.954879 -20.500002 +v -15.000002 -0.779886 -20.500002 +v -16.000002 -0.391177 -20.500002 +v -17.000002 -0.452789 -20.500002 +v -18.000002 -0.648411 -20.500002 +v -19.000002 -0.462273 -20.500002 +v -20.000002 -0.205205 -20.500002 +v -21.000002 -0.185028 -20.500002 +v -8.000001 -0.260873 -21.500002 +v -9.000001 -0.326193 -21.500002 +v -10.000001 -0.309170 -21.500002 +v -11.000001 -0.343576 -21.500002 +v -12.000002 -0.450577 -21.500002 +v -13.000002 -0.523946 -21.500002 +v -14.000002 -0.567831 -21.500002 +v -15.000002 -0.470393 -21.500002 +v -16.000002 -0.228368 -21.500002 +v -17.000002 -0.367647 -21.500002 +v -18.000002 -0.750519 -21.500002 +v -19.000002 -0.844364 -21.500002 +v -20.000002 -0.427552 -21.500002 +v -21.000002 -0.215551 -21.500002 +v -8.000001 -0.561727 -12.500002 +v -9.000001 -0.785995 -12.500002 +v -10.000001 -0.368685 -12.500002 +v -11.000001 -0.264927 -12.500002 +v -12.000002 -0.401120 -12.500002 +v -13.000002 -0.311040 -12.500002 +v -14.000002 -0.297284 -12.500002 +v -15.000002 -0.569041 -12.500002 +v -16.000002 -0.875591 -12.500002 +v -17.000002 -0.590246 -12.500002 +v -18.000002 -0.301181 -12.500002 +v -19.000002 -0.413302 -12.500002 +v -20.000002 -0.511045 -12.500002 +v -21.000002 -0.515905 -12.500002 +v -21.500000 -0.490493 -12.500002 +v -21.500000 -0.357949 -21.500000 +v -21.500000 -0.331828 -20.500002 +v -21.500000 -0.535383 -19.500002 +v -21.500000 -0.580127 -18.500002 +v -21.500000 -0.754799 -17.500002 +v -21.500000 -0.532907 -16.500002 +v -21.500000 -0.244119 -15.500002 +v -21.500000 -0.236499 -14.500002 +v -21.500000 -0.254161 -13.500002 +v -7.500001 -0.510520 -13.500002 +v -8.500001 -0.675469 -13.500002 +v -9.500001 -0.567427 -13.500002 +v -10.500001 -0.326506 -13.500002 +v -11.500002 -0.425741 -13.500002 +v -12.500002 -0.287732 -13.500002 +v -13.500002 -0.207218 -13.500002 +v -14.500002 -0.439267 -13.500002 +v -15.500002 -0.809633 -13.500002 +v -16.500002 -0.644164 -13.500002 +v -17.500002 -0.224252 -13.500002 +v -18.500002 -0.293429 -13.500002 +v -19.500002 -0.397842 -13.500002 +v -20.500002 -0.329187 -13.500002 +v -7.500001 -0.505191 -14.500002 +v -8.500001 -0.518576 -14.500002 +v -9.500001 -0.673741 -14.500002 +v -10.500001 -0.512614 -14.500002 +v -11.500002 -0.401103 -14.500002 +v -12.500002 -0.156797 -14.500002 +v -13.500002 -0.155630 -14.500002 +v -14.500002 -0.531396 -14.500002 +v -15.500002 -0.677004 -14.500002 +v -16.500002 -0.390802 -14.500002 +v -17.500002 -0.261398 -14.500002 +v -18.500002 -0.187758 -14.500002 +v -19.500002 -0.192447 -14.500002 +v -20.500002 -0.429016 -14.500002 +v -7.500001 -0.296040 -15.500002 +v -8.500001 -0.364045 -15.500002 +v -9.500001 -0.561240 -15.500002 +v -10.500001 -0.377387 -15.500002 +v -11.500002 -0.291928 -15.500002 +v -12.500002 -0.276207 -15.500002 +v -13.500002 -0.214327 -15.500002 +v -14.500002 -0.219426 -15.500002 +v -15.500002 -0.357895 -15.500002 +v -16.500002 -0.645381 -15.500002 +v -17.500002 -0.618119 -15.500002 +v -18.500002 -0.161358 -15.500002 +v -19.500002 -0.055222 -15.500002 +v -20.500002 -0.370902 -15.500002 +v -7.500001 -0.259216 -16.500002 +v -8.500001 -0.418917 -16.500002 +v -9.500001 -0.555307 -16.500002 +v -10.500001 -0.568723 -16.500002 +v -11.500002 -0.673497 -16.500002 +v -12.500002 -0.798141 -16.500002 +v -13.500002 -0.502307 -16.500002 +v -14.500002 -0.199567 -16.500002 +v -15.500002 -0.248746 -16.500002 +v -16.500002 -0.470807 -16.500002 +v -17.500002 -0.412955 -16.500002 +v -18.500002 -0.289792 -16.500002 +v -19.500002 -0.180842 -16.500002 +v -20.500002 -0.357320 -16.500002 +v -7.500001 -0.371330 -17.500002 +v -8.500001 -0.626668 -17.500002 +v -9.500001 -0.709990 -17.500002 +v -10.500001 -0.520842 -17.500002 +v -11.500002 -0.579440 -17.500002 +v -12.500002 -0.864089 -17.500002 +v -13.500002 -0.605043 -17.500002 +v -14.500002 -0.162257 -17.500002 +v -15.500002 -0.096906 -17.500002 +v -16.500002 -0.211876 -17.500002 +v -17.500002 -0.255830 -17.500002 +v -18.500002 -0.643165 -17.500002 +v -19.500002 -0.570749 -17.500002 +v -20.500002 -0.585055 -17.500002 +v -7.500001 -0.208562 -18.500002 +v -8.500001 -0.372828 -18.500002 +v -9.500001 -0.540035 -18.500002 +v -10.500001 -0.811449 -18.500002 +v -11.500002 -0.681591 -18.500002 +v -12.500002 -0.882566 -18.500002 +v -13.500002 -0.978001 -18.500002 +v -14.500002 -0.692296 -18.500002 +v -15.500002 -0.343340 -18.500002 +v -16.500002 -0.163635 -18.500002 +v -17.500002 -0.290942 -18.500002 +v -18.500002 -0.740980 -18.500002 +v -19.500002 -0.544578 -18.500002 +v -20.500002 -0.569189 -18.500002 +v -7.500001 -0.351601 -19.500002 +v -8.500001 -0.314344 -19.500002 +v -9.500001 -0.412625 -19.500002 +v -10.500001 -0.626127 -19.500002 +v -11.500002 -0.487552 -19.500002 +v -12.500002 -0.762069 -19.500002 +v -13.500002 -1.000000 -19.500002 +v -14.500002 -1.000000 -19.500002 +v -15.500002 -0.696204 -19.500002 +v -16.500002 -0.485827 -19.500002 +v -17.500002 -0.585695 -19.500002 +v -18.500002 -0.656797 -19.500002 +v -19.500002 -0.390745 -19.500002 +v -20.500002 -0.519127 -19.500002 +v -7.500001 -0.342611 -20.500002 +v -8.500001 -0.411189 -20.500002 +v -9.500001 -0.416864 -20.500002 +v -10.500001 -0.309598 -20.500002 +v -11.500002 -0.348821 -20.500002 +v -12.500002 -0.757874 -20.500002 +v -13.500002 -0.925273 -20.500002 +v -14.500002 -0.896188 -20.500002 +v -15.500002 -0.581684 -20.500002 +v -16.500002 -0.355468 -20.500002 +v -17.500002 -0.586632 -20.500002 +v -18.500002 -0.578960 -20.500002 +v -19.500002 -0.334738 -20.500002 +v -20.500002 -0.157104 -20.500002 +v -7.500001 -0.277804 -21.500000 +v -8.500001 -0.299171 -21.500000 +v -9.500001 -0.310914 -21.500000 +v -10.500001 -0.325105 -21.500000 +v -11.500002 -0.383343 -21.500000 +v -12.500002 -0.506250 -21.500000 +v -13.500002 -0.546097 -21.500000 +v -14.500002 -0.540986 -21.500000 +v -15.500002 -0.335868 -21.500000 +v -16.500002 -0.251941 -21.500000 +v -17.500002 -0.552267 -21.500000 +v -18.500002 -0.849418 -21.500000 +v -19.500002 -0.686308 -21.500000 +v -20.500002 -0.239198 -21.500000 +v -7.500001 -0.354518 -12.500002 +v -8.500001 -0.742001 -12.500002 +v -9.500001 -0.611122 -12.500002 +v -10.500001 -0.234032 -12.500002 +v -11.500002 -0.363988 -12.500002 +v -12.500002 -0.360471 -12.500002 +v -13.500002 -0.280832 -12.500002 +v -14.500002 -0.411880 -12.500002 +v -15.500002 -0.761010 -12.500002 +v -16.500002 -0.786707 -12.500002 +v -17.500002 -0.407521 -12.500002 +v -18.500002 -0.332749 -12.500002 +v -19.500002 -0.465276 -12.500002 +v -20.500002 -0.524886 -12.500002 +vn 0.0526 0.9736 0.2223 +vn 0.0547 0.9747 0.2167 +vn 0.0559 0.9904 0.1267 +vn 0.0295 0.9948 0.0979 +vn 0.0674 0.9771 0.2016 +vn 0.0790 0.9866 0.1425 +vn 0.0603 0.9946 0.0840 +vn 0.0415 0.9982 0.0425 +vn 0.0159 0.9997 -0.0176 +vn -0.0955 0.9560 -0.2774 +vn -0.2245 0.9570 -0.1836 +vn -0.2872 0.9478 -0.1384 +vn -0.1173 0.9664 -0.2285 +vn -0.2241 0.9678 -0.1149 +vn -0.3077 0.9487 -0.0731 +vn -0.4103 0.9119 0.0026 +vn -0.3593 0.9331 -0.0127 +vn -0.1531 0.9874 -0.0411 +vn -0.3133 0.9403 0.1331 +vn -0.1513 0.9654 0.2125 +vn -0.3769 0.9239 0.0663 +vn -0.2211 0.9710 0.0905 +vn -0.1583 0.9689 0.1902 +vn -0.0958 0.9423 0.3209 +vn 0.0039 0.9943 0.1061 +vn -0.0257 0.9804 0.1953 +vn -0.0558 0.9975 0.0438 +vn -0.0016 0.9986 0.0536 +vn 0.0598 0.9971 0.0463 +vn 0.0063 0.9992 0.0401 +vn 0.0191 0.9921 0.1236 +vn -0.0206 0.9978 0.0629 +vn -0.0298 0.9871 0.1571 +vn -0.0374 0.9864 0.1602 +vn -0.0338 0.9892 0.1425 +vn -0.0878 0.9925 0.0851 +vn -0.0591 0.9982 0.0020 +vn -0.1585 0.9867 -0.0367 +vn -0.0085 0.9999 0.0086 +vn 0.0044 0.9778 -0.2093 +vn -0.0653 0.9759 -0.2084 +vn -0.1877 0.9596 -0.2098 +vn -0.0494 0.9448 -0.3240 +vn -0.1448 0.9529 -0.2664 +vn -0.0149 0.9409 -0.3384 +vn -0.0241 0.9593 -0.2814 +vn 0.0089 0.9703 -0.2416 +vn -0.0294 0.9910 -0.1305 +vn 0.0967 0.9933 -0.0632 +vn 0.1066 0.9932 0.0457 +vn 0.0081 0.9939 -0.1095 +vn 0.0486 0.9986 -0.0213 +vn 0.1559 0.9877 -0.0080 +vn 0.1812 0.9832 0.0217 +vn 0.1396 0.9885 -0.0583 +vn 0.1786 0.9781 -0.1066 +vn 0.0449 0.9986 -0.0294 +vn 0.0127 0.9994 0.0325 +vn 0.0775 0.9970 -0.0013 +vn 0.1324 0.9891 -0.0642 +vn 0.0415 0.9883 0.1467 +vn 0.0835 0.9887 0.1243 +vn 0.0181 0.9886 0.1495 +vn 0.0892 0.9935 -0.0708 +vn 0.0393 0.9992 0.0024 +vn -0.1195 0.9879 -0.0994 +vn -0.0639 0.9809 -0.1839 +vn -0.0634 0.9915 0.1139 +vn -0.1701 0.9838 0.0562 +vn -0.2861 0.9575 -0.0373 +vn -0.2407 0.9610 -0.1363 +vn -0.1651 0.9700 -0.1783 +vn -0.1162 0.9851 0.1267 +vn -0.1063 0.9844 0.1403 +vn -0.0243 0.9990 0.0386 +vn 0.0878 0.9903 0.1078 +vn 0.1360 0.9879 0.0751 +vn -0.1517 0.9872 0.0483 +vn 0.1246 0.9879 -0.0918 +vn 0.2653 0.9639 -0.0226 +vn 0.1663 0.9705 -0.1744 +vn 0.2400 0.9576 -0.1594 +vn 0.3229 0.9459 -0.0302 +vn 0.3641 0.9307 0.0360 +vn 0.0789 0.9834 -0.1631 +vn 0.0535 0.9721 -0.2282 +vn 0.0074 0.9969 -0.0787 +vn -0.0819 0.9760 -0.2018 +vn -0.1271 0.9879 -0.0886 +vn 0.0788 0.9937 -0.0791 +vn 0.0962 0.9952 0.0181 +vn -0.0141 0.9948 -0.1011 +vn 0.2178 0.9719 0.0898 +vn 0.1317 0.9909 0.0272 +vn 0.0362 0.9993 0.0082 +vn -0.1098 0.9925 -0.0539 +vn 0.1974 0.9730 0.1196 +vn 0.1621 0.9789 0.1244 +vn 0.0387 0.9938 0.1046 +vn 0.0729 0.9867 0.1454 +vn 0.0878 0.9927 0.0826 +vn 0.1092 0.9921 0.0616 +vn -0.1619 0.9859 0.0430 +vn -0.0584 0.9959 0.0689 +vn -0.3221 0.9461 -0.0345 +vn -0.2243 0.9726 -0.0613 +vn -0.1351 0.9905 0.0260 +vn 0.0214 0.9975 0.0672 +vn -0.3602 0.9307 -0.0634 +vn -0.3355 0.9293 -0.1544 +vn -0.2386 0.9711 -0.0048 +vn -0.3325 0.9329 -0.1382 +vn -0.3694 0.9280 -0.0481 +vn -0.2911 0.9565 -0.0201 +vn -0.0005 0.9923 0.1235 +vn -0.1845 0.9827 0.0184 +vn 0.2705 0.9367 0.2222 +vn 0.1421 0.9656 0.2177 +vn 0.0102 0.9993 0.0367 +vn -0.3129 0.9493 -0.0304 +vn 0.3799 0.9043 0.1946 +vn 0.3838 0.8690 0.3122 +vn 0.2591 0.9619 0.0875 +vn 0.3498 0.8877 0.2992 +vn 0.3939 0.9042 0.1650 +vn 0.3360 0.9353 0.1112 +vn 0.0867 0.9962 -0.0054 +vn 0.1685 0.9602 0.2226 +vn -0.0353 0.9994 -0.0036 +vn -0.0521 0.9863 0.1565 +vn 0.0006 0.9940 0.1091 +vn 0.2521 0.9538 0.1633 +vn -0.0729 0.9918 0.1052 +vn -0.1660 0.9732 0.1592 +vn -0.0589 0.9776 0.2019 +vn -0.0967 0.9761 0.1946 +vn -0.1179 0.9923 0.0379 +vn -0.1693 0.9842 0.0510 +vn -0.0903 0.9808 0.1726 +vn -0.0152 0.9818 0.1892 +vn -0.0692 0.9966 0.0444 +vn 0.0346 0.9893 0.1415 +vn 0.0309 0.9911 0.1294 +vn -0.0216 0.9972 0.0715 +vn 0.0509 0.9967 -0.0630 +vn 0.0858 0.9904 0.1087 +vn 0.0617 0.9804 0.1869 +vn 0.2495 0.9500 0.1878 +vn 0.1755 0.9652 0.1941 +vn 0.1446 0.9815 0.1255 +vn 0.2035 0.9749 0.0906 +vn -0.0414 0.9817 0.1857 +vn -0.0269 0.9871 0.1579 +vn -0.2282 0.9618 0.1509 +vn -0.1763 0.9773 0.1175 +vn -0.1834 0.9753 0.1231 +vn -0.1327 0.9905 0.0356 +vn 0.0215 0.9933 0.1135 +vn 0.0413 0.9988 -0.0265 +vn 0.2032 0.9722 0.1166 +vn 0.1740 0.9846 -0.0191 +vn 0.2252 0.9654 0.1315 +vn 0.1659 0.9843 0.0600 +vn 0.1215 0.9834 0.1347 +vn 0.0936 0.9843 0.1494 +vn 0.0942 0.9916 0.0881 +vn 0.1367 0.9742 0.1797 +vn 0.1257 0.9920 -0.0085 +vn 0.2106 0.9670 0.1431 +vn 0.0973 0.9904 -0.0980 +vn 0.1664 0.9831 0.0758 +vn 0.0115 0.9929 -0.1186 +vn 0.0082 0.9995 0.0299 +vn -0.1057 0.9937 -0.0371 +vn -0.1876 0.9817 0.0337 +vn -0.1984 0.9727 0.1201 +vn -0.3190 0.9439 0.0855 +vn -0.2007 0.9410 0.2726 +vn -0.3122 0.9352 0.1674 +vn -0.1268 0.9319 0.3398 +vn -0.1576 0.9576 0.2413 +vn -0.0611 0.9627 0.2635 +vn 0.0533 0.9669 0.2497 +vn -0.0093 0.9991 0.0405 +vn 0.2200 0.9665 0.1326 +vn 0.0247 0.9770 -0.2117 +vn 0.2483 0.9657 -0.0757 +vn 0.0513 0.9397 -0.3381 +vn 0.1405 0.9606 -0.2398 +vn 0.1504 0.9403 -0.3053 +vn 0.0724 0.9571 -0.2805 +vn 0.2652 0.9501 -0.1645 +vn 0.0892 0.9803 -0.1763 +vn 0.2711 0.9626 0.0013 +vn 0.1019 0.9947 0.0128 +vn 0.0512 0.9930 0.1060 +vn -0.0044 0.9898 0.1426 +vn -0.2406 0.9626 0.1244 +vn -0.1909 0.9739 0.1225 +vn -0.2874 0.9529 0.0967 +vn -0.2088 0.9779 0.0050 +vn -0.0654 0.9962 0.0584 +vn -0.0137 0.9954 -0.0948 +vn 0.2658 0.9634 0.0349 +vn 0.1488 0.9886 0.0220 +vn 0.1681 0.9697 0.1775 +vn 0.2598 0.9480 0.1836 +vn -0.1069 0.9942 -0.0112 +vn -0.0699 0.9853 0.1560 +vn -0.2536 0.9666 -0.0362 +vn -0.2466 0.9596 0.1355 +vn -0.1692 0.9852 -0.0257 +vn -0.1878 0.9717 0.1431 +vn -0.0248 0.9995 -0.0186 +vn 0.0019 0.9909 0.1343 +vn 0.0587 0.9954 -0.0753 +vn 0.1595 0.9853 0.0612 +vn 0.0773 0.9810 -0.1780 +vn 0.1856 0.9815 -0.0458 +vn -0.0142 0.9614 -0.2750 +vn 0.0743 0.9877 -0.1376 +vn -0.0976 0.9285 -0.3582 +vn 0.0024 0.9739 -0.2268 +vn -0.0534 0.9026 -0.4272 +vn 0.0243 0.9490 -0.3144 +vn 0.0579 0.8946 -0.4430 +vn 0.0529 0.9321 -0.3583 +vn 0.1681 0.9076 -0.3847 +vn 0.0706 0.9436 -0.3234 +vn 0.2219 0.9385 -0.2644 +vn 0.0543 0.9793 -0.1951 +vn 0.1634 0.9795 -0.1175 +vn -0.0106 0.9999 -0.0046 +vn 0.0454 0.9990 0.0033 +vn -0.0688 0.9843 0.1623 +vn -0.0973 0.9927 0.0717 +vn -0.1229 0.9649 0.2321 +vn -0.2475 0.9632 0.1048 +vn -0.2053 0.9613 0.1837 +vn -0.2852 0.9493 0.1324 +vn -0.2269 0.9728 0.0468 +vn -0.1643 0.9716 0.1701 +vn -0.1399 0.9867 -0.0828 +vn 0.0433 0.9794 0.1970 +vn 0.0327 0.9916 -0.1248 +vn 0.2324 0.9583 0.1665 +vn 0.2389 0.9669 -0.0895 +vn 0.3284 0.9434 0.0467 +vn 0.3737 0.9271 -0.0291 +vn 0.2981 0.9490 -0.1028 +vn 0.3479 0.9374 0.0116 +vn 0.1135 0.9796 -0.1660 +vn 0.0946 0.9946 0.0434 +vn -0.1236 0.9859 -0.1132 +vn -0.2103 0.9730 0.0947 +vn -0.2464 0.9689 -0.0246 +vn -0.2906 0.9458 0.1452 +vn -0.1845 0.9826 -0.0224 +vn -0.1180 0.9835 0.1368 +vn 0.2373 0.9681 -0.0810 +vn 0.0819 0.9901 -0.1137 +vn 0.1214 0.9806 -0.1538 +vn 0.2617 0.9553 -0.1377 +vn -0.1976 0.9670 -0.1611 +vn -0.1490 0.9706 -0.1888 +vn -0.2721 0.9441 -0.1863 +vn -0.2578 0.9420 -0.2151 +vn -0.0933 0.9781 -0.1862 +vn -0.1291 0.9696 -0.2079 +vn 0.0766 0.9871 -0.1406 +vn 0.0033 0.9881 -0.1536 +vn 0.1032 0.9932 -0.0541 +vn 0.0315 0.9948 -0.0971 +vn 0.0636 0.9973 0.0370 +vn 0.0224 0.9970 -0.0742 +vn -0.0981 0.9912 0.0888 +vn -0.0872 0.9915 -0.0967 +vn -0.2624 0.9619 0.0767 +vn -0.1990 0.9666 -0.1614 +vn -0.1991 0.9798 0.0164 +vn -0.1255 0.9636 -0.2359 +vn 0.0422 0.9976 -0.0554 +vn 0.0736 0.9603 -0.2690 +vn 0.2875 0.9530 -0.0958 +vn 0.2593 0.9369 -0.2343 +vn 0.4019 0.9118 -0.0838 +vn 0.3444 0.9260 -0.1543 +vn 0.3404 0.9396 -0.0349 +vn 0.2755 0.9588 -0.0694 +vn 0.1752 0.9840 0.0326 +vn 0.1171 0.9931 -0.0051 +vn -0.0038 0.9953 0.0971 +vn -0.0544 0.9976 0.0418 +vn -0.1365 0.9790 0.1512 +vn -0.2005 0.9746 0.0997 +vn -0.1493 0.9678 0.2028 +vn -0.2224 0.9573 0.1846 +vn -0.0395 0.9689 0.2442 +vn -0.0981 0.9557 0.2776 +vn 0.0176 0.9720 0.2343 +vn 0.0464 0.9480 0.3147 +vn -0.0781 0.9897 0.1202 +vn 0.1044 0.9688 0.2248 +vn -0.1476 0.9843 -0.0968 +vn 0.1178 0.9930 -0.0048 +vn -0.0686 0.9518 -0.2991 +vn 0.1269 0.9598 -0.2504 +vn 0.0747 0.9226 -0.3786 +vn 0.0988 0.9270 -0.3617 +vn 0.0759 0.9316 -0.3555 +vn -0.0153 0.9447 -0.3275 +vn -0.0898 0.9534 -0.2881 +vn -0.1692 0.9562 -0.2389 +vn -0.2151 0.9493 -0.2295 +vn -0.2225 0.9521 -0.2096 +vn 0.0331 0.9745 0.2219 +vn -0.0706 0.9794 0.1893 +vn 0.0081 0.9955 0.0944 +vn 0.1578 0.9781 0.1355 +vn -0.2222 0.9592 0.1745 +vn -0.2352 0.9713 0.0346 +vn -0.2205 0.9468 0.2344 +vn -0.2735 0.9613 0.0323 +vn -0.1197 0.9592 0.2560 +vn -0.0914 0.9953 0.0330 +vn -0.0680 0.9883 0.1363 +vn 0.0757 0.9970 -0.0132 +vn -0.0175 0.9965 -0.0815 +vn 0.1249 0.9889 -0.0799 +vn 0.0731 0.9694 -0.2343 +vn 0.1110 0.9890 -0.0983 +vn 0.0351 0.9721 -0.2318 +vn -0.0482 0.9975 -0.0524 +vn -0.1457 0.9828 -0.1136 +vn -0.2492 0.9683 0.0168 +vn -0.2494 0.9683 -0.0161 +vn -0.2536 0.9666 0.0362 +vn -0.1544 0.9869 -0.0456 +vn -0.0494 0.9981 -0.0372 +vn 0.0783 0.9812 -0.1765 +vn 0.2224 0.9633 -0.1502 +vn 0.2723 0.9054 -0.3258 +vn 0.3849 0.8959 -0.2219 +vn 0.3420 0.8421 -0.4170 +vn 0.3765 0.8991 -0.2236 +vn 0.3027 0.8537 -0.4238 +vn 0.2519 0.9544 -0.1601 +vn 0.1889 0.9153 -0.3557 +vn 0.0807 0.9949 -0.0602 +vn 0.0880 0.9706 -0.2241 +vn -0.0525 0.9973 0.0505 +vn 0.0275 0.9970 -0.0726 +vn -0.0844 0.9853 0.1485 +vn 0.0176 0.9996 0.0218 +vn -0.0157 0.9801 0.1981 +vn -0.0948 0.9952 0.0257 +vn -0.0418 0.9840 0.1730 +vn -0.3446 0.9383 -0.0281 +vn -0.2436 0.9681 0.0583 +vn -0.4232 0.9024 -0.0804 +vn -0.3412 0.9340 -0.1061 +vn -0.1944 0.9780 -0.0759 +vn -0.1840 0.9565 -0.2265 +vn 0.1230 0.9921 -0.0259 +vn 0.0805 0.9651 -0.2494 +vn 0.1822 0.9832 0.0128 +vn 0.1446 0.9660 -0.2141 +vn 0.0014 0.9998 0.0185 +vn -0.0244 0.9862 -0.1638 +vn -0.1252 0.9916 0.0307 +vn -0.1708 0.9800 -0.1019 +vn -0.0730 0.9853 -0.1546 +vn -0.0680 0.9898 -0.1253 +vn -0.1020 0.9916 0.0795 +vn -0.0608 0.9952 0.0763 +vn -0.0498 0.9978 -0.0448 +vn -0.1506 0.9794 0.1343 +vn -0.0296 0.9986 0.0439 +vn -0.1242 0.9622 0.2425 +vn -0.1415 0.9852 0.0970 +vn -0.1481 0.9465 0.2867 +vn -0.3210 0.9391 0.1230 +vn -0.2531 0.9474 0.1961 +vn -0.2919 0.9448 0.1490 +vn -0.2197 0.9754 0.0160 +vn -0.0415 0.9845 0.1705 +vn -0.0120 0.9932 -0.1156 +vn 0.1500 0.9718 0.1819 +vn 0.1177 0.9852 -0.1244 +vn 0.0501 0.9815 0.1846 +vn -0.0062 0.9996 -0.0277 +vn -0.1911 0.9690 0.1568 +vn -0.2034 0.9770 0.0643 +vn -0.2706 0.9557 0.1160 +vn -0.2267 0.9719 0.0642 +vn -0.1777 0.9821 0.0623 +vn -0.0734 0.9968 -0.0315 +vn -0.0322 0.9993 -0.0202 +vn 0.1059 0.9764 -0.1883 +vn 0.0996 0.9861 -0.1327 +vn 0.2347 0.9085 -0.3457 +vn 0.2271 0.9411 -0.2504 +vn 0.2986 0.8457 -0.4424 +vn 0.3128 0.8954 -0.3169 +vn 0.2760 0.8513 -0.4463 +vn 0.2995 0.8997 -0.3176 +vn 0.2245 0.8982 -0.3780 +vn 0.1953 0.9313 -0.3075 +vn 0.1412 0.9474 -0.2873 +vn 0.0622 0.9479 -0.3123 +vn 0.0551 0.9715 -0.2306 +vn -0.1037 0.9445 -0.3116 +vn -0.1113 0.9706 -0.2133 +vn -0.2855 0.9264 -0.2453 +vn -0.3541 0.9171 -0.1832 +vn -0.2502 0.9628 -0.1023 +vn -0.3849 0.9173 -0.1019 +vn 0.0273 0.9980 0.0576 +vn -0.1096 0.9937 0.0215 +vn 0.2315 0.9621 0.1444 +vn 0.1842 0.9757 0.1188 +vn 0.1341 0.9805 0.1438 +vn 0.1705 0.9761 0.1349 +vn -0.0904 0.9909 0.0998 +vn -0.0334 0.9955 0.0891 +vn -0.1477 0.9874 0.0569 +vn -0.1215 0.9915 0.0456 +vn 0.0629 0.9977 -0.0268 +vn 0.0440 0.9989 -0.0146 +vn -0.0018 0.9855 -0.1696 +vn -0.0144 0.9793 -0.2018 +vn 0.0031 0.9996 -0.0284 +vn 0.0150 0.9922 -0.1236 +vn -0.0199 0.9960 -0.0867 +vn 0.0111 0.9941 -0.1083 +vn -0.0423 0.9945 -0.0957 +vn -0.0965 0.9925 -0.0749 +vn -0.0695 0.9975 0.0125 +vn -0.2350 0.9710 0.0428 +vn -0.0297 0.9841 0.1749 +vn -0.1954 0.9561 0.2185 +vn 0.0636 0.9618 0.2664 +vn 0.0043 0.9404 0.3400 +vn 0.0438 0.9696 0.2406 +vn 0.1167 0.9317 0.3441 +vn -0.1579 0.9771 0.1424 +vn -0.0313 0.9668 0.2537 +vn -0.3481 0.9362 0.0476 +vn -0.2636 0.9563 0.1263 +vn -0.3334 0.9426 0.0162 +vn -0.3141 0.9485 0.0409 +vn -0.2057 0.9780 0.0354 +vn -0.2177 0.9760 0.0107 +vn -0.0815 0.9951 0.0561 +vn -0.0823 0.9966 0.0025 +vn 0.0072 0.9977 0.0667 +vn 0.0167 0.9997 -0.0167 +vn 0.1139 0.9897 0.0863 +vn 0.1369 0.9881 -0.0702 +vn 0.2780 0.9555 0.0988 +vn 0.2961 0.9470 -0.1246 +vn 0.3441 0.9326 0.1091 +vn 0.3303 0.9333 -0.1405 +vn 0.2129 0.9685 0.1290 +vn 0.2100 0.9673 -0.1424 +vn -0.0096 0.9937 0.1113 +vn 0.0363 0.9854 -0.1666 +vn -0.1519 0.9870 0.0529 +vn -0.1098 0.9747 -0.1945 +vn -0.1513 0.9883 0.0189 +vn -0.1936 0.9691 -0.1529 +vn 0.0167 0.9992 0.0362 +vn -0.0844 0.9961 -0.0245 +vn 0.2095 0.9761 0.0579 +vn 0.1513 0.9825 0.1087 +vn 0.2508 0.9665 0.0543 +vn 0.2503 0.9545 0.1624 +vn 0.1575 0.9835 0.0886 +vn 0.1167 0.9781 0.1722 +vn 0.0017 0.9800 0.1990 +vn -0.0945 0.9765 0.1935 +vn -0.0921 0.9454 0.3126 +vn -0.1512 0.9644 0.2168 +vn 0.1388 0.9887 0.0566 +vn 0.0536 0.9964 0.0662 +vn 0.0500 0.9911 0.1230 +vn 0.1140 0.9852 0.1276 +vn -0.0907 0.9920 0.0883 +vn -0.0632 0.9950 0.0773 +vn -0.1196 0.9870 0.1073 +vn -0.0902 0.9959 -0.0015 +vn -0.0106 0.9935 0.1130 +vn -0.0142 0.9993 -0.0347 +vn 0.0781 0.9923 0.0960 +vn 0.0554 0.9984 0.0100 +vn 0.0737 0.9960 0.0496 +vn 0.0769 0.9941 0.0767 +vn 0.0366 0.9993 -0.0109 +vn 0.0752 0.9927 0.0940 +vn -0.0543 0.9975 -0.0458 +vn -0.0235 0.9980 0.0593 +vn -0.1906 0.9816 -0.0115 +vn -0.2214 0.9748 0.0286 +vn -0.2600 0.9608 0.0960 +vn -0.3506 0.9350 0.0536 +vn -0.1979 0.9540 0.2253 +vn -0.2942 0.9475 0.1251 +vn -0.1037 0.9440 0.3132 +vn -0.1620 0.9681 0.1910 +vn -0.0586 0.9353 0.3489 +vn -0.0735 0.9726 0.2205 +vn 0.0272 0.9355 0.3523 +vn 0.0232 0.9723 0.2325 +vn 0.1428 0.9335 0.3288 +vn 0.1436 0.9551 0.2591 +vn 0.2587 0.9237 0.2827 +vn 0.2770 0.9209 0.2744 +vn 0.3157 0.9229 0.2203 +vn 0.3415 0.8992 0.2734 +vn 0.1612 0.9742 0.1578 +vn 0.1996 0.9394 0.2787 +vn -0.1027 0.9887 0.1093 +vn -0.0590 0.9654 0.2538 +vn -0.2752 0.9585 0.0738 +vn -0.2194 0.9577 0.1864 +vn -0.2975 0.9546 0.0133 +vn -0.2041 0.9744 0.0945 +vn -0.1496 0.9828 -0.1085 +vn -0.0200 0.9997 -0.0133 +vn 0.0461 0.9679 -0.2471 +vn 0.1652 0.9793 -0.1172 +vn 0.1966 0.9264 -0.3212 +vn 0.2343 0.9570 -0.1710 +vn 0.3190 0.9010 -0.2939 +vn 0.2458 0.9612 -0.1254 +vn 0.3039 0.9320 -0.1977 +vn 0.1652 0.9861 0.0202 +vn 0.1221 0.9877 -0.0978 +vn 0.0183 0.9853 0.1699 +vn 0.1531 0.9328 -0.3261 +vn 0.1365 0.9482 -0.2869 +vn 0.1004 0.9826 -0.1560 +vn 0.1510 0.9689 -0.1958 +vn 0.0793 0.9856 -0.1494 +vn -0.0005 0.9991 -0.0426 +vn 0.0199 0.9992 0.0356 +vn -0.0460 0.9938 0.1014 +vn 0.0010 0.9912 0.1323 +vn -0.0056 0.9849 0.1733 +vn -0.0244 0.9943 0.1041 +vn 0.0180 0.9903 0.1379 +vn -0.0640 0.9979 0.0131 +vn -0.0103 0.9990 0.0425 +vn -0.0673 0.9953 -0.0699 +vn -0.0306 0.9984 -0.0480 +vn -0.0702 0.9909 -0.1149 +vn -0.0647 0.9938 -0.0901 +vn -0.1033 0.9868 -0.1243 +vn -0.1287 0.9892 -0.0701 +vn -0.0958 0.9907 -0.0965 +vn -0.1467 0.9892 0.0049 +vn -0.0257 0.9994 -0.0241 +vn -0.0830 0.9902 0.1124 +vn 0.0261 0.9957 0.0889 +vn -0.0235 0.9759 0.2170 +vn 0.0289 0.9744 0.2231 +vn -0.0101 0.9531 0.3024 +vn 0.0378 0.9468 0.3196 +vn 0.0295 0.9376 0.3464 +vn 0.0682 0.9428 0.3264 +vn 0.0972 0.9402 0.3264 +vn 0.1279 0.9630 0.2373 +vn 0.1838 0.9522 0.2440 +vn 0.1481 0.9857 0.0809 +vn 0.2196 0.9691 0.1120 +vn 0.0340 0.9977 -0.0578 +vn 0.0839 0.9964 -0.0135 +vn -0.1178 0.9893 -0.0862 +vn -0.1201 0.9909 -0.0608 +vn -0.2376 0.9713 -0.0123 +vn -0.2648 0.9639 -0.0271 +vn -0.3304 0.9414 0.0681 +vn -0.3352 0.9421 0.0057 +vn -0.3139 0.9471 0.0662 +vn -0.2665 0.9629 -0.0423 +vn -0.1676 0.9849 -0.0431 +vn -0.0957 0.9821 -0.1624 +vn 0.0937 0.9798 -0.1767 +vn 0.1330 0.9540 -0.2688 +vn 0.3439 0.9070 -0.2429 +vn 0.3459 0.8897 -0.2981 +vn 0.3924 0.8807 -0.2653 +vn 0.3715 0.8850 -0.2808 +vn 0.1976 0.9368 -0.2888 +vn 0.1776 0.9483 -0.2630 +vn -0.2549 0.9509 -0.1757 +vn -0.1591 0.9749 -0.1560 +vn -0.3293 0.9244 -0.1923 +vn -0.3233 0.9068 -0.2705 +vn -0.2282 0.9529 -0.1997 +vn -0.1273 0.9799 -0.1539 +vn -0.1948 0.9644 -0.1787 +vn 0.1167 0.9830 -0.1418 +vn 0.0952 0.9541 -0.2840 +vn -0.2115 0.9280 -0.3068 +vn 0.3599 0.9293 -0.0830 +vn 0.3234 0.9462 -0.0139 +vn 0.2908 0.9547 -0.0637 +vn 0.3288 0.9261 -0.1853 +vn 0.0821 0.9960 0.0361 +vn -0.1309 0.9903 0.0461 +vn -0.1272 0.9897 0.0651 +vn 0.0685 0.9971 0.0333 +vn -0.1327 0.9905 0.0363 +vn 0.0032 0.9995 0.0307 +vn 0.0035 0.9988 0.0495 +vn -0.1268 0.9903 0.0563 +vn 0.0896 0.9955 0.0297 +vn 0.0756 0.9963 0.0413 +vn 0.0636 0.9959 0.0641 +vn 0.0900 0.9947 0.0488 +vn 0.0047 0.9962 0.0866 +vn -0.1302 0.9818 0.1379 +vn -0.1513 0.9710 0.1852 +vn -0.0290 0.9921 0.1222 +vn -0.2492 0.9591 0.1339 +vn -0.2997 0.9533 0.0364 +vn -0.2310 0.9725 0.0304 +vn -0.2270 0.9588 0.1709 +vn -0.2489 0.9591 -0.1345 +vn -0.0031 0.9680 -0.2507 +vn 0.0314 0.9201 -0.3904 +vn -0.1593 0.9645 -0.2108 +vn 0.2569 0.9382 -0.2321 +vn 0.3279 0.9370 -0.1203 +vn 0.2602 0.9365 -0.2349 +vn 0.2033 0.9037 -0.3770 +vn 0.2568 0.9660 -0.0282 +vn 0.0675 0.9971 -0.0355 +vn 0.0973 0.9916 -0.0849 +vn 0.2335 0.9669 -0.1030 +vn -0.1082 0.9884 -0.1066 +vn -0.1284 0.9814 -0.1427 +vn -0.1304 0.9730 -0.1907 +vn -0.0666 0.9863 -0.1511 +vn -0.0893 0.9911 -0.0983 +vn -0.0440 0.9989 -0.0133 +vn -0.0876 0.9917 -0.0944 +vn -0.1303 0.9791 -0.1561 +vn 0.0076 0.9983 0.0571 +vn -0.0200 0.9985 -0.0512 +vt -9.522805 6.497724 +vt -9.761403 6.497643 +vt -9.761403 6.247511 +vt -9.522805 6.247598 +vt -10.000001 6.497561 +vt -10.000001 6.247426 +vt -10.000001 5.997290 +vt -9.761403 5.997380 +vt -9.522805 5.997471 +vt -9.522805 11.000001 +vt -9.761403 11.000001 +vt -9.761403 10.749869 +vt -9.522805 10.749874 +vt -10.000001 11.000001 +vt -10.000001 10.749866 +vt -10.000001 10.499730 +vt -9.761403 10.499739 +vt -9.522805 10.499748 +vt -9.761403 10.249607 +vt -9.522805 10.249621 +vt -10.000001 10.249594 +vt -10.000001 9.999458 +vt -9.761403 9.999476 +vt -9.522805 9.999495 +vt -9.761403 9.749346 +vt -9.522805 9.749369 +vt -10.000001 9.749323 +vt -10.000001 9.499187 +vt -9.761403 9.499214 +vt -9.522805 9.499242 +vt -9.761403 9.249084 +vt -9.522805 9.249115 +vt -10.000001 9.249052 +vt -10.000001 8.998917 +vt -9.761403 8.998953 +vt -9.522805 8.998989 +vt -9.761403 8.748821 +vt -9.522805 8.748863 +vt -10.000001 8.748781 +vt -10.000001 8.498646 +vt -9.761403 8.498692 +vt -9.522805 8.498736 +vt -9.761403 8.248560 +vt -9.522805 8.248610 +vt -10.000001 8.248510 +vt -10.000001 7.998375 +vt -9.761403 7.998429 +vt -9.522805 7.998483 +vt -9.761403 7.748298 +vt -9.522805 7.748357 +vt -10.000001 7.748240 +vt -10.000001 7.498104 +vt -9.761403 7.498167 +vt -9.522805 7.498230 +vt -9.761403 7.248036 +vt -9.522805 7.248104 +vt -10.000001 7.247968 +vt -10.000001 6.997833 +vt -9.761403 6.997905 +vt -9.522805 6.997977 +vt -9.761403 6.747773 +vt -9.522805 6.747850 +vt -10.000001 6.747697 +vt -2.842070 7.000000 +vt -3.080668 6.999928 +vt -3.080668 6.749924 +vt -2.842070 6.750000 +vt -3.319266 6.999856 +vt -3.319266 6.749847 +vt -3.319266 6.499838 +vt -3.080668 6.499919 +vt -2.842070 6.500000 +vt -3.557864 6.999784 +vt -3.557863 6.749770 +vt -3.796461 6.999711 +vt -3.796461 6.749693 +vt -3.796461 6.499675 +vt -3.557864 6.499757 +vt -4.035059 6.999639 +vt -4.035059 6.749617 +vt -4.273657 6.999567 +vt -4.273657 6.749540 +vt -4.273657 6.499513 +vt -4.035059 6.499594 +vt -4.512255 6.999495 +vt -4.512255 6.749463 +vt -4.750852 6.999423 +vt -4.750852 6.749387 +vt -4.750852 6.499351 +vt -4.512255 6.499432 +vt -4.989450 6.999350 +vt -4.989450 6.749310 +vt -5.228047 6.999278 +vt -5.228047 6.749232 +vt -5.228047 6.499187 +vt -4.989450 6.499269 +vt -5.466644 6.999206 +vt -5.466644 6.749156 +vt -5.705242 6.999133 +vt -5.705242 6.749079 +vt -5.705242 6.499025 +vt -5.466644 6.499106 +vt -5.943840 6.999061 +vt -5.943840 6.749002 +vt -6.182438 6.998989 +vt -6.182438 6.748925 +vt -6.182438 6.498862 +vt -5.943840 6.498943 +vt -6.421036 6.998917 +vt -6.421036 6.748848 +vt -6.659633 6.998844 +vt -6.659633 6.748772 +vt -6.659633 6.498700 +vt -6.421036 6.498781 +vt -6.898231 6.998772 +vt -6.898231 6.748695 +vt -7.136828 6.998700 +vt -7.136828 6.748618 +vt -7.136828 6.498537 +vt -6.898231 6.498618 +vt -7.375426 6.998628 +vt -7.375426 6.748541 +vt -7.614024 6.998556 +vt -7.614024 6.748465 +vt -7.614024 6.498374 +vt -7.375426 6.498455 +vt -7.852622 6.998484 +vt -7.852622 6.748388 +vt -8.091220 6.998412 +vt -8.091220 6.748312 +vt -8.091220 6.498212 +vt -7.852622 6.498293 +vt -8.329817 6.998339 +vt -8.329817 6.748234 +vt -8.568415 6.998267 +vt -8.568415 6.748158 +vt -8.568415 6.498049 +vt -8.329817 6.498131 +vt -8.807013 6.998194 +vt -8.807012 6.748081 +vt -9.045609 6.998122 +vt -9.045609 6.748004 +vt -9.045609 6.497887 +vt -8.807013 6.497968 +vt -9.284207 6.998050 +vt -9.284207 6.747927 +vt -9.284207 6.497806 +vt -2.842070 7.500000 +vt -3.080668 7.499937 +vt -3.080668 7.249932 +vt -2.842070 7.250000 +vt -3.319266 7.499874 +vt -3.319266 7.249865 +vt -3.557864 7.499811 +vt -3.557863 7.249797 +vt -3.796461 7.499748 +vt -3.796461 7.249729 +vt -4.035059 7.499684 +vt -4.035059 7.249661 +vt -4.273657 7.499621 +vt -4.273657 7.249594 +vt -4.512255 7.499558 +vt -4.512255 7.249527 +vt -4.750852 7.499495 +vt -4.750852 7.249459 +vt -4.989450 7.499432 +vt -4.989450 7.249391 +vt -5.228047 7.499368 +vt -5.228047 7.249323 +vt -5.466644 7.499305 +vt -5.466644 7.249255 +vt -5.705242 7.499242 +vt -5.705242 7.249187 +vt -5.943840 7.499178 +vt -5.943840 7.249120 +vt -6.182438 7.499115 +vt -6.182438 7.249052 +vt -6.421036 7.499052 +vt -6.421036 7.248984 +vt -6.659633 7.498989 +vt -6.659633 7.248917 +vt -6.898231 7.498925 +vt -6.898231 7.248848 +vt -7.136828 7.498862 +vt -7.136828 7.248781 +vt -7.375426 7.498798 +vt -7.375426 7.248713 +vt -7.614024 7.498735 +vt -7.614024 7.248646 +vt -7.852622 7.498672 +vt -7.852622 7.248578 +vt -8.091220 7.498610 +vt -8.091220 7.248510 +vt -8.329817 7.498546 +vt -8.329817 7.248442 +vt -8.568415 7.498483 +vt -8.568415 7.248375 +vt -8.807013 7.498420 +vt -8.807012 7.248307 +vt -9.045609 7.498356 +vt -9.045609 7.248239 +vt -9.284207 7.498293 +vt -9.284207 7.248171 +vt -2.842070 8.000001 +vt -3.080668 7.999947 +vt -3.080668 7.749942 +vt -2.842070 7.750001 +vt -3.319266 7.999892 +vt -3.319266 7.749883 +vt -3.557864 7.999838 +vt -3.557863 7.749825 +vt -3.796461 7.999784 +vt -3.796461 7.749765 +vt -4.035059 7.999730 +vt -4.035059 7.749707 +vt -4.273657 7.999676 +vt -4.273657 7.749649 +vt -4.512255 7.999621 +vt -4.512255 7.749589 +vt -4.750852 7.999567 +vt -4.750852 7.749531 +vt -4.989450 7.999513 +vt -4.989450 7.749472 +vt -5.228047 7.999459 +vt -5.228047 7.749413 +vt -5.466644 7.999404 +vt -5.466644 7.749354 +vt -5.705242 7.999350 +vt -5.705242 7.749296 +vt -5.943840 7.999296 +vt -5.943840 7.749237 +vt -6.182438 7.999242 +vt -6.182438 7.749178 +vt -6.421036 7.999187 +vt -6.421036 7.749120 +vt -6.659633 7.999133 +vt -6.659633 7.749061 +vt -6.898231 7.999079 +vt -6.898231 7.749002 +vt -7.136828 7.999024 +vt -7.136828 7.748943 +vt -7.375426 7.998970 +vt -7.375426 7.748884 +vt -7.614024 7.998916 +vt -7.614024 7.748826 +vt -7.852622 7.998862 +vt -7.852622 7.748767 +vt -8.091220 7.998808 +vt -8.091220 7.748709 +vt -8.329817 7.998754 +vt -8.329817 7.748650 +vt -8.568415 7.998700 +vt -8.568415 7.748591 +vt -8.807013 7.998646 +vt -8.807012 7.748532 +vt -9.045609 7.998591 +vt -9.045609 7.748474 +vt -9.284207 7.998537 +vt -9.284207 7.748415 +vt -2.842070 8.500001 +vt -3.080668 8.499956 +vt -3.080668 8.249951 +vt -2.842070 8.250001 +vt -3.319266 8.499910 +vt -3.319266 8.249901 +vt -3.557864 8.499865 +vt -3.557863 8.249851 +vt -3.796461 8.499820 +vt -3.796461 8.249802 +vt -4.035059 8.499775 +vt -4.035059 8.249752 +vt -4.273657 8.499730 +vt -4.273657 8.249702 +vt -4.512255 8.499685 +vt -4.512255 8.249653 +vt -4.750852 8.499640 +vt -4.750852 8.249603 +vt -4.989450 8.499596 +vt -4.989450 8.249554 +vt -5.228047 8.499550 +vt -5.228047 8.249504 +vt -5.466644 8.499504 +vt -5.466644 8.249454 +vt -5.705242 8.499459 +vt -5.705242 8.249405 +vt -5.943840 8.499414 +vt -5.943840 8.249355 +vt -6.182438 8.499369 +vt -6.182438 8.249306 +vt -6.421036 8.499323 +vt -6.421036 8.249255 +vt -6.659633 8.499278 +vt -6.659633 8.249206 +vt -6.898231 8.499233 +vt -6.898231 8.249156 +vt -7.136828 8.499187 +vt -7.136828 8.249105 +vt -7.375426 8.499142 +vt -7.375426 8.249056 +vt -7.614024 8.499097 +vt -7.614024 8.249006 +vt -7.852622 8.499052 +vt -7.852622 8.248957 +vt -8.091220 8.499007 +vt -8.091220 8.248907 +vt -8.329817 8.498962 +vt -8.329817 8.248857 +vt -8.568415 8.498917 +vt -8.568415 8.248808 +vt -8.807013 8.498871 +vt -8.807012 8.248758 +vt -9.045609 8.498826 +vt -9.045609 8.248709 +vt -9.284207 8.498781 +vt -9.284207 8.248659 +vt -2.842070 9.000001 +vt -3.080668 8.999965 +vt -3.080668 8.749960 +vt -2.842070 8.750001 +vt -3.319266 8.999928 +vt -3.319266 8.749920 +vt -3.557864 8.999893 +vt -3.557863 8.749879 +vt -3.796461 8.999857 +vt -3.796461 8.749838 +vt -4.035059 8.999821 +vt -4.035059 8.749798 +vt -4.273657 8.999785 +vt -4.273657 8.749758 +vt -4.512255 8.999749 +vt -4.512255 8.749717 +vt -4.750852 8.999713 +vt -4.750852 8.749677 +vt -4.989450 8.999677 +vt -4.989450 8.749636 +vt -5.228047 8.999640 +vt -5.228047 8.749596 +vt -5.466644 8.999604 +vt -5.466644 8.749554 +vt -5.705242 8.999568 +vt -5.705242 8.749514 +vt -5.943840 8.999532 +vt -5.943840 8.749473 +vt -6.182438 8.999496 +vt -6.182438 8.749432 +vt -6.421036 8.999459 +vt -6.421036 8.749392 +vt -6.659633 8.999423 +vt -6.659633 8.749351 +vt -6.898231 8.999387 +vt -6.898231 8.749310 +vt -7.136828 8.999351 +vt -7.136828 8.749269 +vt -7.375426 8.999315 +vt -7.375426 8.749228 +vt -7.614024 8.999279 +vt -7.614024 8.749187 +vt -7.852622 8.999243 +vt -7.852622 8.749147 +vt -8.091220 8.999207 +vt -8.091220 8.749107 +vt -8.329817 8.999170 +vt -8.329817 8.749065 +vt -8.568415 8.999134 +vt -8.568415 8.749025 +vt -8.807013 8.999098 +vt -8.807012 8.748984 +vt -9.045609 8.999062 +vt -9.045609 8.748943 +vt -9.284207 8.999025 +vt -9.284207 8.748903 +vt -2.842070 9.500001 +vt -3.080668 9.499973 +vt -3.080668 9.249969 +vt -2.842070 9.250001 +vt -3.319266 9.499947 +vt -3.319266 9.249937 +vt -3.557864 9.499920 +vt -3.557863 9.249907 +vt -3.796461 9.499892 +vt -3.796461 9.249874 +vt -4.035059 9.499865 +vt -4.035059 9.249843 +vt -4.273657 9.499838 +vt -4.273657 9.249811 +vt -4.512255 9.499811 +vt -4.512255 9.249780 +vt -4.750852 9.499784 +vt -4.750852 9.249748 +vt -4.989450 9.499756 +vt -4.989450 9.249716 +vt -5.228047 9.499729 +vt -5.228047 9.249685 +vt -5.466644 9.499702 +vt -5.466644 9.249653 +vt -5.705242 9.499675 +vt -5.705242 9.249621 +vt -5.943840 9.499647 +vt -5.943840 9.249589 +vt -6.182438 9.499620 +vt -6.182438 9.249557 +vt -6.421036 9.499594 +vt -6.421036 9.249526 +vt -6.659633 9.499566 +vt -6.659633 9.249495 +vt -6.898231 9.499538 +vt -6.898231 9.249462 +vt -7.136828 9.499512 +vt -7.136828 9.249432 +vt -7.375426 9.499485 +vt -7.375426 9.249399 +vt -7.614024 9.499458 +vt -7.614024 9.249369 +vt -7.852622 9.499432 +vt -7.852622 9.249337 +vt -8.091220 9.499405 +vt -8.091220 9.249306 +vt -8.329817 9.499378 +vt -8.329817 9.249274 +vt -8.568415 9.499351 +vt -8.568415 9.249243 +vt -8.807013 9.499323 +vt -8.807012 9.249210 +vt -9.045609 9.499296 +vt -9.045609 9.249179 +vt -9.284207 9.499269 +vt -9.284207 9.249147 +vt -2.842070 10.000001 +vt -3.080668 9.999983 +vt -3.080668 9.749978 +vt -2.842070 9.750001 +vt -3.319266 9.999965 +vt -3.319266 9.749956 +vt -3.557864 9.999947 +vt -3.557863 9.749933 +vt -3.796461 9.999929 +vt -3.796461 9.749910 +vt -4.035059 9.999912 +vt -4.035059 9.749888 +vt -4.273657 9.999894 +vt -4.273657 9.749866 +vt -4.512255 9.999876 +vt -4.512255 9.749843 +vt -4.750852 9.999858 +vt -4.750852 9.749821 +vt -4.989450 9.999840 +vt -4.989450 9.749798 +vt -5.228047 9.999822 +vt -5.228047 9.749775 +vt -5.466644 9.999804 +vt -5.466644 9.749753 +vt -5.705242 9.999785 +vt -5.705242 9.749730 +vt -5.943840 9.999767 +vt -5.943840 9.749707 +vt -6.182438 9.999749 +vt -6.182438 9.749685 +vt -6.421036 9.999731 +vt -6.421036 9.749661 +vt -6.659633 9.999713 +vt -6.659633 9.749640 +vt -6.898231 9.999695 +vt -6.898231 9.749617 +vt -7.136828 9.999676 +vt -7.136828 9.749594 +vt -7.375426 9.999658 +vt -7.375426 9.749571 +vt -7.614024 9.999640 +vt -7.614024 9.749549 +vt -7.852622 9.999621 +vt -7.852622 9.749526 +vt -8.091220 9.999603 +vt -8.091220 9.749504 +vt -8.329817 9.999585 +vt -8.329817 9.749481 +vt -8.568415 9.999567 +vt -8.568415 9.749458 +vt -8.807013 9.999549 +vt -8.807012 9.749435 +vt -9.045609 9.999531 +vt -9.045609 9.749413 +vt -9.284207 9.999513 +vt -9.284207 9.749391 +vt -2.842070 10.500001 +vt -3.080668 10.499992 +vt -3.080668 10.249988 +vt -2.842070 10.250001 +vt -3.319266 10.499983 +vt -3.319266 10.249973 +vt -3.557864 10.499973 +vt -3.557863 10.249960 +vt -3.796461 10.499965 +vt -3.796461 10.249947 +vt -4.035059 10.499956 +vt -4.035059 10.249933 +vt -4.273657 10.499948 +vt -4.273657 10.249921 +vt -4.512255 10.499939 +vt -4.512255 10.249907 +vt -4.750852 10.499929 +vt -4.750852 10.249893 +vt -4.989450 10.499920 +vt -4.989450 10.249880 +vt -5.228047 10.499910 +vt -5.228047 10.249866 +vt -5.466644 10.499901 +vt -5.466644 10.249852 +vt -5.705242 10.499892 +vt -5.705242 10.249839 +vt -5.943840 10.499884 +vt -5.943840 10.249825 +vt -6.182438 10.499874 +vt -6.182438 10.249811 +vt -6.421036 10.499865 +vt -6.421036 10.249798 +vt -6.659633 10.499856 +vt -6.659633 10.249784 +vt -6.898231 10.499847 +vt -6.898231 10.249771 +vt -7.136828 10.499838 +vt -7.136828 10.249757 +vt -7.375426 10.499828 +vt -7.375426 10.249743 +vt -7.614024 10.499820 +vt -7.614024 10.249729 +vt -7.852622 10.499811 +vt -7.852622 10.249716 +vt -8.091220 10.499803 +vt -8.091220 10.249702 +vt -8.329817 10.499794 +vt -8.329817 10.249689 +vt -8.568415 10.499784 +vt -8.568415 10.249676 +vt -8.807013 10.499775 +vt -8.807012 10.249661 +vt -9.045609 10.499766 +vt -9.045609 10.249649 +vt -9.284207 10.499758 +vt -9.284207 10.249636 +vt -2.842070 11.000001 +vt -3.080668 11.000001 +vt -3.080668 10.749996 +vt -2.842070 10.750001 +vt -3.319266 11.000001 +vt -3.319266 10.749992 +vt -3.557864 11.000001 +vt -3.557863 10.749988 +vt -3.796461 11.000001 +vt -3.796461 10.749983 +vt -4.035059 11.000001 +vt -4.035059 10.749978 +vt -4.273657 11.000001 +vt -4.273657 10.749974 +vt -4.512255 11.000001 +vt -4.512255 10.749969 +vt -4.750852 11.000001 +vt -4.750852 10.749966 +vt -4.989450 11.000001 +vt -4.989450 10.749960 +vt -5.228047 11.000001 +vt -5.228047 10.749956 +vt -5.466644 11.000002 +vt -5.466644 10.749951 +vt -5.705242 11.000002 +vt -5.705242 10.749947 +vt -5.943840 11.000002 +vt -5.943840 10.749942 +vt -6.182438 11.000002 +vt -6.182438 10.749938 +vt -6.421036 11.000002 +vt -6.421036 10.749933 +vt -6.659633 11.000002 +vt -6.659633 10.749929 +vt -6.898231 11.000002 +vt -6.898231 10.749924 +vt -7.136828 11.000002 +vt -7.136828 10.749920 +vt -7.375426 11.000002 +vt -7.375426 10.749915 +vt -7.614024 11.000002 +vt -7.614024 10.749910 +vt -7.852622 11.000002 +vt -7.852622 10.749907 +vt -8.091220 11.000002 +vt -8.091220 10.749903 +vt -8.329817 11.000002 +vt -8.329817 10.749897 +vt -8.568415 11.000001 +vt -8.568415 10.749893 +vt -8.807013 11.000001 +vt -8.807012 10.749888 +vt -9.045609 11.000001 +vt -9.045609 10.749884 +vt -9.284207 11.000001 +vt -9.284207 10.749879 +vt -3.080668 6.249914 +vt -2.842070 6.250001 +vt -3.319266 6.249829 +vt -3.319266 5.999820 +vt -3.080668 5.999910 +vt -2.842070 6.000001 +vt -3.557863 6.249743 +vt -3.796461 6.249657 +vt -3.796461 5.999639 +vt -3.557864 5.999729 +vt -4.035059 6.249571 +vt -4.273657 6.249485 +vt -4.273656 5.999458 +vt -4.035059 5.999548 +vt -4.512254 6.249400 +vt -4.750852 6.249314 +vt -4.750852 5.999277 +vt -4.512254 5.999368 +vt -4.989449 6.249228 +vt -5.228047 6.249142 +vt -5.228047 5.999096 +vt -4.989450 5.999187 +vt -5.466644 6.249056 +vt -5.705242 6.248970 +vt -5.705242 5.998915 +vt -5.466644 5.999005 +vt -5.943840 6.248884 +vt -6.182438 6.248798 +vt -6.182438 5.998735 +vt -5.943840 5.998825 +vt -6.421036 6.248713 +vt -6.659633 6.248627 +vt -6.659633 5.998555 +vt -6.421036 5.998645 +vt -6.898231 6.248541 +vt -7.136828 6.248455 +vt -7.136828 5.998374 +vt -6.898231 5.998465 +vt -7.375426 6.248369 +vt -7.614024 6.248283 +vt -7.614024 5.998193 +vt -7.375426 5.998283 +vt -7.852622 6.248198 +vt -8.091220 6.248113 +vt -8.091220 5.998013 +vt -7.852622 5.998103 +vt -8.329817 6.248027 +vt -8.568415 6.247941 +vt -8.568416 5.997832 +vt -8.329818 5.997923 +vt -8.807013 6.247855 +vt -9.045610 6.247769 +vt -9.045610 5.997652 +vt -8.807013 5.997742 +vt -9.284207 6.247684 +vt -9.284208 5.997561 +s 1 +usemtl Material +f 2168/1349/929 2353/1350/930 2507/1351/931 2506/1352/932 +f 2353/1350/930 2019/1353/933 2195/1354/934 2507/1351/931 +f 2507/1351/931 2195/1354/934 2009/1355/935 2182/1356/936 +f 2506/1352/932 2507/1351/931 2182/1356/936 2041/1357/937 +f 2042/1358/938 2227/1359/939 2508/1360/940 2492/1361/941 +f 2227/1359/939 2006/1362/942 2185/1363/943 2508/1360/940 +f 2508/1360/940 2185/1363/943 2027/1364/944 2241/1365/945 +f 2492/1361/941 2508/1360/940 2241/1365/945 2056/1366/946 +f 2056/1366/946 2241/1365/945 2509/1367/947 2478/1368/948 +f 2241/1365/945 2027/1364/944 2203/1369/949 2509/1367/947 +f 2509/1367/947 2203/1369/949 2026/1370/950 2255/1371/951 +f 2478/1368/948 2509/1367/947 2255/1371/951 2070/1372/952 +f 2070/1372/952 2255/1371/951 2510/1373/953 2464/1374/954 +f 2255/1371/951 2026/1370/950 2202/1375/955 2510/1373/953 +f 2510/1373/953 2202/1375/955 2025/1376/956 2269/1377/957 +f 2464/1374/954 2510/1373/953 2269/1377/957 2084/1378/958 +f 2084/1378/958 2269/1377/957 2511/1379/959 2450/1380/960 +f 2269/1377/957 2025/1376/956 2201/1381/961 2511/1379/959 +f 2511/1379/959 2201/1381/961 2024/1382/962 2283/1383/963 +f 2450/1380/960 2511/1379/959 2283/1383/963 2098/1384/964 +f 2098/1384/964 2283/1383/963 2512/1385/965 2436/1386/966 +f 2283/1383/963 2024/1382/962 2200/1387/967 2512/1385/965 +f 2512/1385/965 2200/1387/967 2023/1388/968 2297/1389/969 +f 2436/1386/966 2512/1385/965 2297/1389/969 2112/1390/970 +f 2112/1390/970 2297/1389/969 2513/1391/971 2422/1392/972 +f 2297/1389/969 2023/1388/968 2199/1393/973 2513/1391/971 +f 2513/1391/971 2199/1393/973 2022/1394/974 2311/1395/975 +f 2422/1392/972 2513/1391/971 2311/1395/975 2126/1396/976 +f 2126/1396/976 2311/1395/975 2514/1397/977 2408/1398/978 +f 2311/1395/975 2022/1394/974 2198/1399/979 2514/1397/977 +f 2514/1397/977 2198/1399/979 2021/1400/980 2325/1401/981 +f 2408/1398/978 2514/1397/977 2325/1401/981 2140/1402/982 +f 2140/1402/982 2325/1401/981 2515/1403/983 2394/1404/984 +f 2325/1401/981 2021/1400/980 2197/1405/985 2515/1403/983 +f 2515/1403/983 2197/1405/985 2020/1406/986 2339/1407/987 +f 2394/1404/984 2515/1403/983 2339/1407/987 2154/1408/988 +f 2154/1408/988 2339/1407/987 2516/1409/989 2380/1410/990 +f 2339/1407/987 2020/1406/986 2196/1411/991 2516/1409/989 +f 2516/1409/989 2196/1411/991 2019/1353/933 2353/1350/930 +f 2380/1410/990 2516/1409/989 2353/1350/930 2168/1349/929 +f 2011/1412/992 2211/1413/993 2517/1414/994 2187/1415/995 +f 2211/1413/993 2167/1416/996 2367/1417/997 2517/1414/994 +f 2517/1414/994 2367/1417/997 2181/1418/998 2212/1419/999 +f 2187/1415/995 2517/1414/994 2212/1419/999 2010/1420/1000 +f 2167/1416/996 2352/1421/1001 2518/1422/1002 2367/1417/997 +f 2352/1421/1001 2166/1423/1003 2368/1424/1004 2518/1422/1002 +f 2518/1422/1002 2368/1424/1004 2180/1425/1005 2366/1426/1006 +f 2367/1417/997 2518/1422/1002 2366/1426/1006 2181/1418/998 +f 2166/1423/1003 2351/1427/1007 2519/1428/1008 2368/1424/1004 +f 2351/1427/1007 2165/1429/1009 2369/1430/1010 2519/1428/1008 +f 2519/1428/1008 2369/1430/1010 2179/1431/1011 2365/1432/1012 +f 2368/1424/1004 2519/1428/1008 2365/1432/1012 2180/1425/1005 +f 2165/1429/1009 2350/1433/1013 2520/1434/1014 2369/1430/1010 +f 2350/1433/1013 2164/1435/1015 2370/1436/1016 2520/1434/1014 +f 2520/1434/1014 2370/1436/1016 2178/1437/1017 2364/1438/1018 +f 2369/1430/1010 2520/1434/1014 2364/1438/1018 2179/1431/1011 +f 2164/1435/1015 2349/1439/1019 2521/1440/1020 2370/1436/1016 +f 2349/1439/1019 2163/1441/1021 2371/1442/1022 2521/1440/1020 +f 2521/1440/1020 2371/1442/1022 2177/1443/1023 2363/1444/1024 +f 2370/1436/1016 2521/1440/1020 2363/1444/1024 2178/1437/1017 +f 2163/1441/1021 2348/1445/1025 2522/1446/1026 2371/1442/1022 +f 2348/1445/1025 2162/1447/1027 2372/1448/1028 2522/1446/1026 +f 2522/1446/1026 2372/1448/1028 2176/1449/1029 2362/1450/1030 +f 2371/1442/1022 2522/1446/1026 2362/1450/1030 2177/1443/1023 +f 2162/1447/1027 2347/1451/1031 2523/1452/1032 2372/1448/1028 +f 2347/1451/1031 2161/1453/1033 2373/1454/1034 2523/1452/1032 +f 2523/1452/1032 2373/1454/1034 2175/1455/1035 2361/1456/1036 +f 2372/1448/1028 2523/1452/1032 2361/1456/1036 2176/1449/1029 +f 2161/1453/1033 2346/1457/1037 2524/1458/1038 2373/1454/1034 +f 2346/1457/1037 2160/1459/1039 2374/1460/1040 2524/1458/1038 +f 2524/1458/1038 2374/1460/1040 2174/1461/1041 2360/1462/1042 +f 2373/1454/1034 2524/1458/1038 2360/1462/1042 2175/1455/1035 +f 2160/1459/1039 2345/1463/1043 2525/1464/1044 2374/1460/1040 +f 2345/1463/1043 2159/1465/1045 2375/1466/1046 2525/1464/1044 +f 2525/1464/1044 2375/1466/1046 2173/1467/1047 2359/1468/1048 +f 2374/1460/1040 2525/1464/1044 2359/1468/1048 2174/1461/1041 +f 2159/1465/1045 2344/1469/1049 2526/1470/1050 2375/1466/1046 +f 2344/1469/1049 2158/1471/1051 2376/1472/1052 2526/1470/1050 +f 2526/1470/1050 2376/1472/1052 2172/1473/1053 2358/1474/1054 +f 2375/1466/1046 2526/1470/1050 2358/1474/1054 2173/1467/1047 +f 2158/1471/1051 2343/1475/1055 2527/1476/1056 2376/1472/1052 +f 2343/1475/1055 2157/1477/1057 2377/1478/1058 2527/1476/1056 +f 2527/1476/1056 2377/1478/1058 2171/1479/1059 2357/1480/1060 +f 2376/1472/1052 2527/1476/1056 2357/1480/1060 2172/1473/1053 +f 2157/1477/1057 2342/1481/1061 2528/1482/1062 2377/1478/1058 +f 2342/1481/1061 2156/1483/1063 2378/1484/1064 2528/1482/1062 +f 2528/1482/1062 2378/1484/1064 2170/1485/1065 2356/1486/1066 +f 2377/1478/1058 2528/1482/1062 2356/1486/1066 2171/1479/1059 +f 2156/1483/1063 2341/1487/1067 2529/1488/1068 2378/1484/1064 +f 2341/1487/1067 2155/1489/1069 2379/1490/1070 2529/1488/1068 +f 2529/1488/1068 2379/1490/1070 2169/1491/1071 2355/1492/1072 +f 2378/1484/1064 2529/1488/1068 2355/1492/1072 2170/1485/1065 +f 2155/1489/1069 2340/1493/1073 2530/1494/1074 2379/1490/1070 +f 2340/1493/1073 2154/1408/988 2380/1410/990 2530/1494/1074 +f 2530/1494/1074 2380/1410/990 2168/1349/929 2354/1495/1075 +f 2379/1490/1070 2530/1494/1074 2354/1495/1075 2169/1491/1071 +f 2012/1496/1076 2210/1497/1077 2531/1498/1078 2188/1499/1079 +f 2210/1497/1077 2153/1500/1080 2381/1501/1081 2531/1498/1078 +f 2531/1498/1078 2381/1501/1081 2167/1416/996 2211/1413/993 +f 2188/1499/1079 2531/1498/1078 2211/1413/993 2011/1412/992 +f 2153/1500/1080 2338/1502/1082 2532/1503/1083 2381/1501/1081 +f 2338/1502/1082 2152/1504/1084 2382/1505/1085 2532/1503/1083 +f 2532/1503/1083 2382/1505/1085 2166/1423/1003 2352/1421/1001 +f 2381/1501/1081 2532/1503/1083 2352/1421/1001 2167/1416/996 +f 2152/1504/1084 2337/1506/1086 2533/1507/1087 2382/1505/1085 +f 2337/1506/1086 2151/1508/1088 2383/1509/1089 2533/1507/1087 +f 2533/1507/1087 2383/1509/1089 2165/1429/1009 2351/1427/1007 +f 2382/1505/1085 2533/1507/1087 2351/1427/1007 2166/1423/1003 +f 2151/1508/1088 2336/1510/1090 2534/1511/1091 2383/1509/1089 +f 2336/1510/1090 2150/1512/1092 2384/1513/1093 2534/1511/1091 +f 2534/1511/1091 2384/1513/1093 2164/1435/1015 2350/1433/1013 +f 2383/1509/1089 2534/1511/1091 2350/1433/1013 2165/1429/1009 +f 2150/1512/1092 2335/1514/1094 2535/1515/1095 2384/1513/1093 +f 2335/1514/1094 2149/1516/1096 2385/1517/1097 2535/1515/1095 +f 2535/1515/1095 2385/1517/1097 2163/1441/1021 2349/1439/1019 +f 2384/1513/1093 2535/1515/1095 2349/1439/1019 2164/1435/1015 +f 2149/1516/1096 2334/1518/1098 2536/1519/1099 2385/1517/1097 +f 2334/1518/1098 2148/1520/1100 2386/1521/1101 2536/1519/1099 +f 2536/1519/1099 2386/1521/1101 2162/1447/1027 2348/1445/1025 +f 2385/1517/1097 2536/1519/1099 2348/1445/1025 2163/1441/1021 +f 2148/1520/1100 2333/1522/1102 2537/1523/1103 2386/1521/1101 +f 2333/1522/1102 2147/1524/1104 2387/1525/1105 2537/1523/1103 +f 2537/1523/1103 2387/1525/1105 2161/1453/1033 2347/1451/1031 +f 2386/1521/1101 2537/1523/1103 2347/1451/1031 2162/1447/1027 +f 2147/1524/1104 2332/1526/1106 2538/1527/1107 2387/1525/1105 +f 2332/1526/1106 2146/1528/1108 2388/1529/1109 2538/1527/1107 +f 2538/1527/1107 2388/1529/1109 2160/1459/1039 2346/1457/1037 +f 2387/1525/1105 2538/1527/1107 2346/1457/1037 2161/1453/1033 +f 2146/1528/1108 2331/1530/1110 2539/1531/1111 2388/1529/1109 +f 2331/1530/1110 2145/1532/1112 2389/1533/1113 2539/1531/1111 +f 2539/1531/1111 2389/1533/1113 2159/1465/1045 2345/1463/1043 +f 2388/1529/1109 2539/1531/1111 2345/1463/1043 2160/1459/1039 +f 2145/1532/1112 2330/1534/1114 2540/1535/1115 2389/1533/1113 +f 2330/1534/1114 2144/1536/1116 2390/1537/1117 2540/1535/1115 +f 2540/1535/1115 2390/1537/1117 2158/1471/1051 2344/1469/1049 +f 2389/1533/1113 2540/1535/1115 2344/1469/1049 2159/1465/1045 +f 2144/1536/1116 2329/1538/1118 2541/1539/1119 2390/1537/1117 +f 2329/1538/1118 2143/1540/1120 2391/1541/1121 2541/1539/1119 +f 2541/1539/1119 2391/1541/1121 2157/1477/1057 2343/1475/1055 +f 2390/1537/1117 2541/1539/1119 2343/1475/1055 2158/1471/1051 +f 2143/1540/1120 2328/1542/1122 2542/1543/1123 2391/1541/1121 +f 2328/1542/1122 2142/1544/1124 2392/1545/1125 2542/1543/1123 +f 2542/1543/1123 2392/1545/1125 2156/1483/1063 2342/1481/1061 +f 2391/1541/1121 2542/1543/1123 2342/1481/1061 2157/1477/1057 +f 2142/1544/1124 2327/1546/1126 2543/1547/1127 2392/1545/1125 +f 2327/1546/1126 2141/1548/1128 2393/1549/1129 2543/1547/1127 +f 2543/1547/1127 2393/1549/1129 2155/1489/1069 2341/1487/1067 +f 2392/1545/1125 2543/1547/1127 2341/1487/1067 2156/1483/1063 +f 2141/1548/1128 2326/1550/1130 2544/1551/1131 2393/1549/1129 +f 2326/1550/1130 2140/1402/982 2394/1404/984 2544/1551/1131 +f 2544/1551/1131 2394/1404/984 2154/1408/988 2340/1493/1073 +f 2393/1549/1129 2544/1551/1131 2340/1493/1073 2155/1489/1069 +f 2013/1552/1132 2209/1553/1133 2545/1554/1134 2189/1555/1135 +f 2209/1553/1133 2139/1556/1136 2395/1557/1137 2545/1554/1134 +f 2545/1554/1134 2395/1557/1137 2153/1500/1080 2210/1497/1077 +f 2189/1555/1135 2545/1554/1134 2210/1497/1077 2012/1496/1076 +f 2139/1556/1136 2324/1558/1138 2546/1559/1139 2395/1557/1137 +f 2324/1558/1138 2138/1560/1140 2396/1561/1141 2546/1559/1139 +f 2546/1559/1139 2396/1561/1141 2152/1504/1084 2338/1502/1082 +f 2395/1557/1137 2546/1559/1139 2338/1502/1082 2153/1500/1080 +f 2138/1560/1140 2323/1562/1142 2547/1563/1143 2396/1561/1141 +f 2323/1562/1142 2137/1564/1144 2397/1565/1145 2547/1563/1143 +f 2547/1563/1143 2397/1565/1145 2151/1508/1088 2337/1506/1086 +f 2396/1561/1141 2547/1563/1143 2337/1506/1086 2152/1504/1084 +f 2137/1564/1144 2322/1566/1146 2548/1567/1147 2397/1565/1145 +f 2322/1566/1146 2136/1568/1148 2398/1569/1149 2548/1567/1147 +f 2548/1567/1147 2398/1569/1149 2150/1512/1092 2336/1510/1090 +f 2397/1565/1145 2548/1567/1147 2336/1510/1090 2151/1508/1088 +f 2136/1568/1148 2321/1570/1150 2549/1571/1151 2398/1569/1149 +f 2321/1570/1150 2135/1572/1152 2399/1573/1153 2549/1571/1151 +f 2549/1571/1151 2399/1573/1153 2149/1516/1096 2335/1514/1094 +f 2398/1569/1149 2549/1571/1151 2335/1514/1094 2150/1512/1092 +f 2135/1572/1152 2320/1574/1154 2550/1575/1155 2399/1573/1153 +f 2320/1574/1154 2134/1576/1156 2400/1577/1157 2550/1575/1155 +f 2550/1575/1155 2400/1577/1157 2148/1520/1100 2334/1518/1098 +f 2399/1573/1153 2550/1575/1155 2334/1518/1098 2149/1516/1096 +f 2134/1576/1156 2319/1578/1158 2551/1579/1159 2400/1577/1157 +f 2319/1578/1158 2133/1580/1160 2401/1581/1161 2551/1579/1159 +f 2551/1579/1159 2401/1581/1161 2147/1524/1104 2333/1522/1102 +f 2400/1577/1157 2551/1579/1159 2333/1522/1102 2148/1520/1100 +f 2133/1580/1160 2318/1582/1162 2552/1583/1163 2401/1581/1161 +f 2318/1582/1162 2132/1584/1164 2402/1585/1165 2552/1583/1163 +f 2552/1583/1163 2402/1585/1165 2146/1528/1108 2332/1526/1106 +f 2401/1581/1161 2552/1583/1163 2332/1526/1106 2147/1524/1104 +f 2132/1584/1164 2317/1586/1166 2553/1587/1167 2402/1585/1165 +f 2317/1586/1166 2131/1588/1168 2403/1589/1169 2553/1587/1167 +f 2553/1587/1167 2403/1589/1169 2145/1532/1112 2331/1530/1110 +f 2402/1585/1165 2553/1587/1167 2331/1530/1110 2146/1528/1108 +f 2131/1588/1168 2316/1590/1170 2554/1591/1171 2403/1589/1169 +f 2316/1590/1170 2130/1592/1172 2404/1593/1173 2554/1591/1171 +f 2554/1591/1171 2404/1593/1173 2144/1536/1116 2330/1534/1114 +f 2403/1589/1169 2554/1591/1171 2330/1534/1114 2145/1532/1112 +f 2130/1592/1172 2315/1594/1174 2555/1595/1175 2404/1593/1173 +f 2315/1594/1174 2129/1596/1176 2405/1597/1177 2555/1595/1175 +f 2555/1595/1175 2405/1597/1177 2143/1540/1120 2329/1538/1118 +f 2404/1593/1173 2555/1595/1175 2329/1538/1118 2144/1536/1116 +f 2129/1596/1176 2314/1598/1178 2556/1599/1179 2405/1597/1177 +f 2314/1598/1178 2128/1600/1180 2406/1601/1181 2556/1599/1179 +f 2556/1599/1179 2406/1601/1181 2142/1544/1124 2328/1542/1122 +f 2405/1597/1177 2556/1599/1179 2328/1542/1122 2143/1540/1120 +f 2128/1600/1180 2313/1602/1182 2557/1603/1183 2406/1601/1181 +f 2313/1602/1182 2127/1604/1184 2407/1605/1185 2557/1603/1183 +f 2557/1603/1183 2407/1605/1185 2141/1548/1128 2327/1546/1126 +f 2406/1601/1181 2557/1603/1183 2327/1546/1126 2142/1544/1124 +f 2127/1604/1184 2312/1606/1186 2558/1607/1187 2407/1605/1185 +f 2312/1606/1186 2126/1396/976 2408/1398/978 2558/1607/1187 +f 2558/1607/1187 2408/1398/978 2140/1402/982 2326/1550/1130 +f 2407/1605/1185 2558/1607/1187 2326/1550/1130 2141/1548/1128 +f 2014/1608/1188 2208/1609/1189 2559/1610/1190 2190/1611/1191 +f 2208/1609/1189 2125/1612/1192 2409/1613/1193 2559/1610/1190 +f 2559/1610/1190 2409/1613/1193 2139/1556/1136 2209/1553/1133 +f 2190/1611/1191 2559/1610/1190 2209/1553/1133 2013/1552/1132 +f 2125/1612/1192 2310/1614/1194 2560/1615/1195 2409/1613/1193 +f 2310/1614/1194 2124/1616/1196 2410/1617/1197 2560/1615/1195 +f 2560/1615/1195 2410/1617/1197 2138/1560/1140 2324/1558/1138 +f 2409/1613/1193 2560/1615/1195 2324/1558/1138 2139/1556/1136 +f 2124/1616/1196 2309/1618/1198 2561/1619/1199 2410/1617/1197 +f 2309/1618/1198 2123/1620/1200 2411/1621/1201 2561/1619/1199 +f 2561/1619/1199 2411/1621/1201 2137/1564/1144 2323/1562/1142 +f 2410/1617/1197 2561/1619/1199 2323/1562/1142 2138/1560/1140 +f 2123/1620/1200 2308/1622/1202 2562/1623/1203 2411/1621/1201 +f 2308/1622/1202 2122/1624/1204 2412/1625/1205 2562/1623/1203 +f 2562/1623/1203 2412/1625/1205 2136/1568/1148 2322/1566/1146 +f 2411/1621/1201 2562/1623/1203 2322/1566/1146 2137/1564/1144 +f 2122/1624/1204 2307/1626/1206 2563/1627/1207 2412/1625/1205 +f 2307/1626/1206 2121/1628/1208 2413/1629/1209 2563/1627/1207 +f 2563/1627/1207 2413/1629/1209 2135/1572/1152 2321/1570/1150 +f 2412/1625/1205 2563/1627/1207 2321/1570/1150 2136/1568/1148 +f 2121/1628/1208 2306/1630/1210 2564/1631/1211 2413/1629/1209 +f 2306/1630/1210 2120/1632/1212 2414/1633/1213 2564/1631/1211 +f 2564/1631/1211 2414/1633/1213 2134/1576/1156 2320/1574/1154 +f 2413/1629/1209 2564/1631/1211 2320/1574/1154 2135/1572/1152 +f 2120/1632/1212 2305/1634/1214 2565/1635/1215 2414/1633/1213 +f 2305/1634/1214 2119/1636/1216 2415/1637/1217 2565/1635/1215 +f 2565/1635/1215 2415/1637/1217 2133/1580/1160 2319/1578/1158 +f 2414/1633/1213 2565/1635/1215 2319/1578/1158 2134/1576/1156 +f 2119/1636/1216 2304/1638/1218 2566/1639/1219 2415/1637/1217 +f 2304/1638/1218 2118/1640/1220 2416/1641/1221 2566/1639/1219 +f 2566/1639/1219 2416/1641/1221 2132/1584/1164 2318/1582/1162 +f 2415/1637/1217 2566/1639/1219 2318/1582/1162 2133/1580/1160 +f 2118/1640/1220 2303/1642/1222 2567/1643/1223 2416/1641/1221 +f 2303/1642/1222 2117/1644/1224 2417/1645/1225 2567/1643/1223 +f 2567/1643/1223 2417/1645/1225 2131/1588/1168 2317/1586/1166 +f 2416/1641/1221 2567/1643/1223 2317/1586/1166 2132/1584/1164 +f 2117/1644/1224 2302/1646/1226 2568/1647/1227 2417/1645/1225 +f 2302/1646/1226 2116/1648/1228 2418/1649/1229 2568/1647/1227 +f 2568/1647/1227 2418/1649/1229 2130/1592/1172 2316/1590/1170 +f 2417/1645/1225 2568/1647/1227 2316/1590/1170 2131/1588/1168 +f 2116/1648/1228 2301/1650/1230 2569/1651/1231 2418/1649/1229 +f 2301/1650/1230 2115/1652/1232 2419/1653/1233 2569/1651/1231 +f 2569/1651/1231 2419/1653/1233 2129/1596/1176 2315/1594/1174 +f 2418/1649/1229 2569/1651/1231 2315/1594/1174 2130/1592/1172 +f 2115/1652/1232 2300/1654/1234 2570/1655/1235 2419/1653/1233 +f 2300/1654/1234 2114/1656/1236 2420/1657/1237 2570/1655/1235 +f 2570/1655/1235 2420/1657/1237 2128/1600/1180 2314/1598/1178 +f 2419/1653/1233 2570/1655/1235 2314/1598/1178 2129/1596/1176 +f 2114/1656/1236 2299/1658/1238 2571/1659/1239 2420/1657/1237 +f 2299/1658/1238 2113/1660/1240 2421/1661/1241 2571/1659/1239 +f 2571/1659/1239 2421/1661/1241 2127/1604/1184 2313/1602/1182 +f 2420/1657/1237 2571/1659/1239 2313/1602/1182 2128/1600/1180 +f 2113/1660/1240 2298/1662/1242 2572/1663/1243 2421/1661/1241 +f 2298/1662/1242 2112/1390/970 2422/1392/972 2572/1663/1243 +f 2572/1663/1243 2422/1392/972 2126/1396/976 2312/1606/1186 +f 2421/1661/1241 2572/1663/1243 2312/1606/1186 2127/1604/1184 +f 2015/1664/1244 2207/1665/1245 2573/1666/1246 2191/1667/1247 +f 2207/1665/1245 2111/1668/1248 2423/1669/1249 2573/1666/1246 +f 2573/1666/1246 2423/1669/1249 2125/1612/1192 2208/1609/1189 +f 2191/1667/1247 2573/1666/1246 2208/1609/1189 2014/1608/1188 +f 2111/1668/1248 2296/1670/1250 2574/1671/1251 2423/1669/1249 +f 2296/1670/1250 2110/1672/1252 2424/1673/1253 2574/1671/1251 +f 2574/1671/1251 2424/1673/1253 2124/1616/1196 2310/1614/1194 +f 2423/1669/1249 2574/1671/1251 2310/1614/1194 2125/1612/1192 +f 2110/1672/1252 2295/1674/1254 2575/1675/1255 2424/1673/1253 +f 2295/1674/1254 2109/1676/1256 2425/1677/1257 2575/1675/1255 +f 2575/1675/1255 2425/1677/1257 2123/1620/1200 2309/1618/1198 +f 2424/1673/1253 2575/1675/1255 2309/1618/1198 2124/1616/1196 +f 2109/1676/1256 2294/1678/1258 2576/1679/1259 2425/1677/1257 +f 2294/1678/1258 2108/1680/1260 2426/1681/1261 2576/1679/1259 +f 2576/1679/1259 2426/1681/1261 2122/1624/1204 2308/1622/1202 +f 2425/1677/1257 2576/1679/1259 2308/1622/1202 2123/1620/1200 +f 2108/1680/1260 2293/1682/1262 2577/1683/1263 2426/1681/1261 +f 2293/1682/1262 2107/1684/1264 2427/1685/1265 2577/1683/1263 +f 2577/1683/1263 2427/1685/1265 2121/1628/1208 2307/1626/1206 +f 2426/1681/1261 2577/1683/1263 2307/1626/1206 2122/1624/1204 +f 2107/1684/1264 2292/1686/1266 2578/1687/1267 2427/1685/1265 +f 2292/1686/1266 2106/1688/1268 2428/1689/1269 2578/1687/1267 +f 2578/1687/1267 2428/1689/1269 2120/1632/1212 2306/1630/1210 +f 2427/1685/1265 2578/1687/1267 2306/1630/1210 2121/1628/1208 +f 2106/1688/1268 2291/1690/1270 2579/1691/1271 2428/1689/1269 +f 2291/1690/1270 2105/1692/1272 2429/1693/1273 2579/1691/1271 +f 2579/1691/1271 2429/1693/1273 2119/1636/1216 2305/1634/1214 +f 2428/1689/1269 2579/1691/1271 2305/1634/1214 2120/1632/1212 +f 2105/1692/1272 2290/1694/1274 2580/1695/1275 2429/1693/1273 +f 2290/1694/1274 2104/1696/1276 2430/1697/1277 2580/1695/1275 +f 2580/1695/1275 2430/1697/1277 2118/1640/1220 2304/1638/1218 +f 2429/1693/1273 2580/1695/1275 2304/1638/1218 2119/1636/1216 +f 2104/1696/1276 2289/1698/1278 2581/1699/1279 2430/1697/1277 +f 2289/1698/1278 2103/1700/1280 2431/1701/1281 2581/1699/1279 +f 2581/1699/1279 2431/1701/1281 2117/1644/1224 2303/1642/1222 +f 2430/1697/1277 2581/1699/1279 2303/1642/1222 2118/1640/1220 +f 2103/1700/1280 2288/1702/1282 2582/1703/1283 2431/1701/1281 +f 2288/1702/1282 2102/1704/1284 2432/1705/1285 2582/1703/1283 +f 2582/1703/1283 2432/1705/1285 2116/1648/1228 2302/1646/1226 +f 2431/1701/1281 2582/1703/1283 2302/1646/1226 2117/1644/1224 +f 2102/1704/1284 2287/1706/1286 2583/1707/1287 2432/1705/1285 +f 2287/1706/1286 2101/1708/1288 2433/1709/1289 2583/1707/1287 +f 2583/1707/1287 2433/1709/1289 2115/1652/1232 2301/1650/1230 +f 2432/1705/1285 2583/1707/1287 2301/1650/1230 2116/1648/1228 +f 2101/1708/1288 2286/1710/1290 2584/1711/1291 2433/1709/1289 +f 2286/1710/1290 2100/1712/1292 2434/1713/1293 2584/1711/1291 +f 2584/1711/1291 2434/1713/1293 2114/1656/1236 2300/1654/1234 +f 2433/1709/1289 2584/1711/1291 2300/1654/1234 2115/1652/1232 +f 2100/1712/1292 2285/1714/1294 2585/1715/1295 2434/1713/1293 +f 2285/1714/1294 2099/1716/1296 2435/1717/1297 2585/1715/1295 +f 2585/1715/1295 2435/1717/1297 2113/1660/1240 2299/1658/1238 +f 2434/1713/1293 2585/1715/1295 2299/1658/1238 2114/1656/1236 +f 2099/1716/1296 2284/1718/1298 2586/1719/1299 2435/1717/1297 +f 2284/1718/1298 2098/1384/964 2436/1386/966 2586/1719/1299 +f 2586/1719/1299 2436/1386/966 2112/1390/970 2298/1662/1242 +f 2435/1717/1297 2586/1719/1299 2298/1662/1242 2113/1660/1240 +f 2016/1720/1300 2206/1721/1301 2587/1722/1302 2192/1723/1303 +f 2206/1721/1301 2097/1724/1304 2437/1725/1305 2587/1722/1302 +f 2587/1722/1302 2437/1725/1305 2111/1668/1248 2207/1665/1245 +f 2192/1723/1303 2587/1722/1302 2207/1665/1245 2015/1664/1244 +f 2097/1724/1304 2282/1726/1306 2588/1727/1307 2437/1725/1305 +f 2282/1726/1306 2096/1728/1308 2438/1729/1309 2588/1727/1307 +f 2588/1727/1307 2438/1729/1309 2110/1672/1252 2296/1670/1250 +f 2437/1725/1305 2588/1727/1307 2296/1670/1250 2111/1668/1248 +f 2096/1728/1308 2281/1730/1310 2589/1731/1311 2438/1729/1309 +f 2281/1730/1310 2095/1732/1312 2439/1733/1313 2589/1731/1311 +f 2589/1731/1311 2439/1733/1313 2109/1676/1256 2295/1674/1254 +f 2438/1729/1309 2589/1731/1311 2295/1674/1254 2110/1672/1252 +f 2095/1732/1312 2280/1734/1314 2590/1735/1315 2439/1733/1313 +f 2280/1734/1314 2094/1736/1316 2440/1737/1317 2590/1735/1315 +f 2590/1735/1315 2440/1737/1317 2108/1680/1260 2294/1678/1258 +f 2439/1733/1313 2590/1735/1315 2294/1678/1258 2109/1676/1256 +f 2094/1736/1316 2279/1738/1318 2591/1739/1319 2440/1737/1317 +f 2279/1738/1318 2093/1740/1320 2441/1741/1321 2591/1739/1319 +f 2591/1739/1319 2441/1741/1321 2107/1684/1264 2293/1682/1262 +f 2440/1737/1317 2591/1739/1319 2293/1682/1262 2108/1680/1260 +f 2093/1740/1320 2278/1742/1322 2592/1743/1323 2441/1741/1321 +f 2278/1742/1322 2092/1744/1324 2442/1745/1325 2592/1743/1323 +f 2592/1743/1323 2442/1745/1325 2106/1688/1268 2292/1686/1266 +f 2441/1741/1321 2592/1743/1323 2292/1686/1266 2107/1684/1264 +f 2092/1744/1324 2277/1746/1326 2593/1747/1327 2442/1745/1325 +f 2277/1746/1326 2091/1748/1328 2443/1749/1329 2593/1747/1327 +f 2593/1747/1327 2443/1749/1329 2105/1692/1272 2291/1690/1270 +f 2442/1745/1325 2593/1747/1327 2291/1690/1270 2106/1688/1268 +f 2091/1748/1328 2276/1750/1330 2594/1751/1331 2443/1749/1329 +f 2276/1750/1330 2090/1752/1332 2444/1753/1333 2594/1751/1331 +f 2594/1751/1331 2444/1753/1333 2104/1696/1276 2290/1694/1274 +f 2443/1749/1329 2594/1751/1331 2290/1694/1274 2105/1692/1272 +f 2090/1752/1332 2275/1754/1334 2595/1755/1335 2444/1753/1333 +f 2275/1754/1334 2089/1756/1336 2445/1757/1337 2595/1755/1335 +f 2595/1755/1335 2445/1757/1337 2103/1700/1280 2289/1698/1278 +f 2444/1753/1333 2595/1755/1335 2289/1698/1278 2104/1696/1276 +f 2089/1756/1336 2274/1758/1338 2596/1759/1339 2445/1757/1337 +f 2274/1758/1338 2088/1760/1340 2446/1761/1341 2596/1759/1339 +f 2596/1759/1339 2446/1761/1341 2102/1704/1284 2288/1702/1282 +f 2445/1757/1337 2596/1759/1339 2288/1702/1282 2103/1700/1280 +f 2088/1760/1340 2273/1762/1342 2597/1763/1343 2446/1761/1341 +f 2273/1762/1342 2087/1764/1344 2447/1765/1345 2597/1763/1343 +f 2597/1763/1343 2447/1765/1345 2101/1708/1288 2287/1706/1286 +f 2446/1761/1341 2597/1763/1343 2287/1706/1286 2102/1704/1284 +f 2087/1764/1344 2272/1766/1346 2598/1767/1347 2447/1765/1345 +f 2272/1766/1346 2086/1768/1348 2448/1769/1349 2598/1767/1347 +f 2598/1767/1347 2448/1769/1349 2100/1712/1292 2286/1710/1290 +f 2447/1765/1345 2598/1767/1347 2286/1710/1290 2101/1708/1288 +f 2086/1768/1348 2271/1770/1350 2599/1771/1351 2448/1769/1349 +f 2271/1770/1350 2085/1772/1352 2449/1773/1353 2599/1771/1351 +f 2599/1771/1351 2449/1773/1353 2099/1716/1296 2285/1714/1294 +f 2448/1769/1349 2599/1771/1351 2285/1714/1294 2100/1712/1292 +f 2085/1772/1352 2270/1774/1354 2600/1775/1355 2449/1773/1353 +f 2270/1774/1354 2084/1378/958 2450/1380/960 2600/1775/1355 +f 2600/1775/1355 2450/1380/960 2098/1384/964 2284/1718/1298 +f 2449/1773/1353 2600/1775/1355 2284/1718/1298 2099/1716/1296 +f 2017/1776/1356 2205/1777/1357 2601/1778/1358 2193/1779/1359 +f 2205/1777/1357 2083/1780/1360 2451/1781/1361 2601/1778/1358 +f 2601/1778/1358 2451/1781/1361 2097/1724/1304 2206/1721/1301 +f 2193/1779/1359 2601/1778/1358 2206/1721/1301 2016/1720/1300 +f 2083/1780/1360 2268/1782/1362 2602/1783/1363 2451/1781/1361 +f 2268/1782/1362 2082/1784/1364 2452/1785/1365 2602/1783/1363 +f 2602/1783/1363 2452/1785/1365 2096/1728/1308 2282/1726/1306 +f 2451/1781/1361 2602/1783/1363 2282/1726/1306 2097/1724/1304 +f 2082/1784/1364 2267/1786/1366 2603/1787/1367 2452/1785/1365 +f 2267/1786/1366 2081/1788/1368 2453/1789/1369 2603/1787/1367 +f 2603/1787/1367 2453/1789/1369 2095/1732/1312 2281/1730/1310 +f 2452/1785/1365 2603/1787/1367 2281/1730/1310 2096/1728/1308 +f 2081/1788/1368 2266/1790/1370 2604/1791/1371 2453/1789/1369 +f 2266/1790/1370 2080/1792/1372 2454/1793/1373 2604/1791/1371 +f 2604/1791/1371 2454/1793/1373 2094/1736/1316 2280/1734/1314 +f 2453/1789/1369 2604/1791/1371 2280/1734/1314 2095/1732/1312 +f 2080/1792/1372 2265/1794/1374 2605/1795/1375 2454/1793/1373 +f 2265/1794/1374 2079/1796/1376 2455/1797/1377 2605/1795/1375 +f 2605/1795/1375 2455/1797/1377 2093/1740/1320 2279/1738/1318 +f 2454/1793/1373 2605/1795/1375 2279/1738/1318 2094/1736/1316 +f 2079/1796/1376 2264/1798/1378 2606/1799/1379 2455/1797/1377 +f 2264/1798/1378 2078/1800/1380 2456/1801/1381 2606/1799/1379 +f 2606/1799/1379 2456/1801/1381 2092/1744/1324 2278/1742/1322 +f 2455/1797/1377 2606/1799/1379 2278/1742/1322 2093/1740/1320 +f 2078/1800/1380 2263/1802/1382 2607/1803/1383 2456/1801/1381 +f 2263/1802/1382 2077/1804/1384 2457/1805/1385 2607/1803/1383 +f 2607/1803/1383 2457/1805/1385 2091/1748/1328 2277/1746/1326 +f 2456/1801/1381 2607/1803/1383 2277/1746/1326 2092/1744/1324 +f 2077/1804/1384 2262/1806/1386 2608/1807/1387 2457/1805/1385 +f 2262/1806/1386 2076/1808/1388 2458/1809/1389 2608/1807/1387 +f 2608/1807/1387 2458/1809/1389 2090/1752/1332 2276/1750/1330 +f 2457/1805/1385 2608/1807/1387 2276/1750/1330 2091/1748/1328 +f 2076/1808/1388 2261/1810/1390 2609/1811/1391 2458/1809/1389 +f 2261/1810/1390 2075/1812/1392 2459/1813/1393 2609/1811/1391 +f 2609/1811/1391 2459/1813/1393 2089/1756/1336 2275/1754/1334 +f 2458/1809/1389 2609/1811/1391 2275/1754/1334 2090/1752/1332 +f 2075/1812/1392 2260/1814/1394 2610/1815/1395 2459/1813/1393 +f 2260/1814/1394 2074/1816/1396 2460/1817/1397 2610/1815/1395 +f 2610/1815/1395 2460/1817/1397 2088/1760/1340 2274/1758/1338 +f 2459/1813/1393 2610/1815/1395 2274/1758/1338 2089/1756/1336 +f 2074/1816/1396 2259/1818/1398 2611/1819/1399 2460/1817/1397 +f 2259/1818/1398 2073/1820/1400 2461/1821/1401 2611/1819/1399 +f 2611/1819/1399 2461/1821/1401 2087/1764/1344 2273/1762/1342 +f 2460/1817/1397 2611/1819/1399 2273/1762/1342 2088/1760/1340 +f 2073/1820/1400 2258/1822/1402 2612/1823/1403 2461/1821/1401 +f 2258/1822/1402 2072/1824/1404 2462/1825/1405 2612/1823/1403 +f 2612/1823/1403 2462/1825/1405 2086/1768/1348 2272/1766/1346 +f 2461/1821/1401 2612/1823/1403 2272/1766/1346 2087/1764/1344 +f 2072/1824/1404 2257/1826/1406 2613/1827/1407 2462/1825/1405 +f 2257/1826/1406 2071/1828/1408 2463/1829/1409 2613/1827/1407 +f 2613/1827/1407 2463/1829/1409 2085/1772/1352 2271/1770/1350 +f 2462/1825/1405 2613/1827/1407 2271/1770/1350 2086/1768/1348 +f 2071/1828/1408 2256/1830/1410 2614/1831/1411 2463/1829/1409 +f 2256/1830/1410 2070/1372/952 2464/1374/954 2614/1831/1411 +f 2614/1831/1411 2464/1374/954 2084/1378/958 2270/1774/1354 +f 2463/1829/1409 2614/1831/1411 2270/1774/1354 2085/1772/1352 +f 2018/1832/1412 2204/1833/1413 2615/1834/1414 2194/1835/1415 +f 2204/1833/1413 2069/1836/1416 2465/1837/1417 2615/1834/1414 +f 2615/1834/1414 2465/1837/1417 2083/1780/1360 2205/1777/1357 +f 2194/1835/1415 2615/1834/1414 2205/1777/1357 2017/1776/1356 +f 2069/1836/1416 2254/1838/1418 2616/1839/1419 2465/1837/1417 +f 2254/1838/1418 2068/1840/1420 2466/1841/1421 2616/1839/1419 +f 2616/1839/1419 2466/1841/1421 2082/1784/1364 2268/1782/1362 +f 2465/1837/1417 2616/1839/1419 2268/1782/1362 2083/1780/1360 +f 2068/1840/1420 2253/1842/1422 2617/1843/1423 2466/1841/1421 +f 2253/1842/1422 2067/1844/1424 2467/1845/1425 2617/1843/1423 +f 2617/1843/1423 2467/1845/1425 2081/1788/1368 2267/1786/1366 +f 2466/1841/1421 2617/1843/1423 2267/1786/1366 2082/1784/1364 +f 2067/1844/1424 2252/1846/1426 2618/1847/1427 2467/1845/1425 +f 2252/1846/1426 2066/1848/1428 2468/1849/1429 2618/1847/1427 +f 2618/1847/1427 2468/1849/1429 2080/1792/1372 2266/1790/1370 +f 2467/1845/1425 2618/1847/1427 2266/1790/1370 2081/1788/1368 +f 2066/1848/1428 2251/1850/1430 2619/1851/1431 2468/1849/1429 +f 2251/1850/1430 2065/1852/1432 2469/1853/1433 2619/1851/1431 +f 2619/1851/1431 2469/1853/1433 2079/1796/1376 2265/1794/1374 +f 2468/1849/1429 2619/1851/1431 2265/1794/1374 2080/1792/1372 +f 2065/1852/1432 2250/1854/1434 2620/1855/1435 2469/1853/1433 +f 2250/1854/1434 2064/1856/1436 2470/1857/1437 2620/1855/1435 +f 2620/1855/1435 2470/1857/1437 2078/1800/1380 2264/1798/1378 +f 2469/1853/1433 2620/1855/1435 2264/1798/1378 2079/1796/1376 +f 2064/1856/1436 2249/1858/1438 2621/1859/1439 2470/1857/1437 +f 2249/1858/1438 2063/1860/1440 2471/1861/1441 2621/1859/1439 +f 2621/1859/1439 2471/1861/1441 2077/1804/1384 2263/1802/1382 +f 2470/1857/1437 2621/1859/1439 2263/1802/1382 2078/1800/1380 +f 2063/1860/1440 2248/1862/1442 2622/1863/1443 2471/1861/1441 +f 2248/1862/1442 2062/1864/1444 2472/1865/1445 2622/1863/1443 +f 2622/1863/1443 2472/1865/1445 2076/1808/1388 2262/1806/1386 +f 2471/1861/1441 2622/1863/1443 2262/1806/1386 2077/1804/1384 +f 2062/1864/1444 2247/1866/1446 2623/1867/1447 2472/1865/1445 +f 2247/1866/1446 2061/1868/1448 2473/1869/1449 2623/1867/1447 +f 2623/1867/1447 2473/1869/1449 2075/1812/1392 2261/1810/1390 +f 2472/1865/1445 2623/1867/1447 2261/1810/1390 2076/1808/1388 +f 2061/1868/1448 2246/1870/1450 2624/1871/1451 2473/1869/1449 +f 2246/1870/1450 2060/1872/1452 2474/1873/1453 2624/1871/1451 +f 2624/1871/1451 2474/1873/1453 2074/1816/1396 2260/1814/1394 +f 2473/1869/1449 2624/1871/1451 2260/1814/1394 2075/1812/1392 +f 2060/1872/1452 2245/1874/1454 2625/1875/1455 2474/1873/1453 +f 2245/1874/1454 2059/1876/1456 2475/1877/1457 2625/1875/1455 +f 2625/1875/1455 2475/1877/1457 2073/1820/1400 2259/1818/1398 +f 2474/1873/1453 2625/1875/1455 2259/1818/1398 2074/1816/1396 +f 2059/1876/1456 2244/1878/1458 2626/1879/1459 2475/1877/1457 +f 2244/1878/1458 2058/1880/1460 2476/1881/1461 2626/1879/1459 +f 2626/1879/1459 2476/1881/1461 2072/1824/1404 2258/1822/1402 +f 2475/1877/1457 2626/1879/1459 2258/1822/1402 2073/1820/1400 +f 2058/1880/1460 2243/1882/1462 2627/1883/1463 2476/1881/1461 +f 2243/1882/1462 2057/1884/1464 2477/1885/1465 2627/1883/1463 +f 2627/1883/1463 2477/1885/1465 2071/1828/1408 2257/1826/1406 +f 2476/1881/1461 2627/1883/1463 2257/1826/1406 2072/1824/1404 +f 2057/1884/1464 2242/1886/1466 2628/1887/1467 2477/1885/1465 +f 2242/1886/1466 2056/1366/946 2478/1368/948 2628/1887/1467 +f 2628/1887/1467 2478/1368/948 2070/1372/952 2256/1830/1410 +f 2477/1885/1465 2628/1887/1467 2256/1830/1410 2071/1828/1408 +f 2008/1888/1468 2183/1889/1469 2629/1890/1470 2184/1891/1471 +f 2183/1889/1469 2055/1892/1472 2479/1893/1473 2629/1890/1470 +f 2629/1890/1470 2479/1893/1473 2069/1836/1416 2204/1833/1413 +f 2184/1891/1471 2629/1890/1470 2204/1833/1413 2018/1832/1412 +f 2055/1892/1472 2240/1894/1474 2630/1895/1475 2479/1893/1473 +f 2240/1894/1474 2054/1896/1476 2480/1897/1477 2630/1895/1475 +f 2630/1895/1475 2480/1897/1477 2068/1840/1420 2254/1838/1418 +f 2479/1893/1473 2630/1895/1475 2254/1838/1418 2069/1836/1416 +f 2054/1896/1476 2239/1898/1478 2631/1899/1479 2480/1897/1477 +f 2239/1898/1478 2053/1900/1480 2481/1901/1481 2631/1899/1479 +f 2631/1899/1479 2481/1901/1481 2067/1844/1424 2253/1842/1422 +f 2480/1897/1477 2631/1899/1479 2253/1842/1422 2068/1840/1420 +f 2053/1900/1480 2238/1902/1482 2632/1903/1483 2481/1901/1481 +f 2238/1902/1482 2052/1904/1484 2482/1905/1485 2632/1903/1483 +f 2632/1903/1483 2482/1905/1485 2066/1848/1428 2252/1846/1426 +f 2481/1901/1481 2632/1903/1483 2252/1846/1426 2067/1844/1424 +f 2052/1904/1484 2237/1906/1486 2633/1907/1487 2482/1905/1485 +f 2237/1906/1486 2051/1908/1488 2483/1909/1489 2633/1907/1487 +f 2633/1907/1487 2483/1909/1489 2065/1852/1432 2251/1850/1430 +f 2482/1905/1485 2633/1907/1487 2251/1850/1430 2066/1848/1428 +f 2051/1908/1488 2236/1910/1490 2634/1911/1491 2483/1909/1489 +f 2236/1910/1490 2050/1912/1492 2484/1913/1493 2634/1911/1491 +f 2634/1911/1491 2484/1913/1493 2064/1856/1436 2250/1854/1434 +f 2483/1909/1489 2634/1911/1491 2250/1854/1434 2065/1852/1432 +f 2050/1912/1492 2235/1914/1494 2635/1915/1495 2484/1913/1493 +f 2235/1914/1494 2049/1916/1496 2485/1917/1497 2635/1915/1495 +f 2635/1915/1495 2485/1917/1497 2063/1860/1440 2249/1858/1438 +f 2484/1913/1493 2635/1915/1495 2249/1858/1438 2064/1856/1436 +f 2049/1916/1496 2234/1918/1498 2636/1919/1499 2485/1917/1497 +f 2234/1918/1498 2048/1920/1500 2486/1921/1501 2636/1919/1499 +f 2636/1919/1499 2486/1921/1501 2062/1864/1444 2248/1862/1442 +f 2485/1917/1497 2636/1919/1499 2248/1862/1442 2063/1860/1440 +f 2048/1920/1500 2233/1922/1502 2637/1923/1503 2486/1921/1501 +f 2233/1922/1502 2047/1924/1504 2487/1925/1505 2637/1923/1503 +f 2637/1923/1503 2487/1925/1505 2061/1868/1448 2247/1866/1446 +f 2486/1921/1501 2637/1923/1503 2247/1866/1446 2062/1864/1444 +f 2047/1924/1504 2232/1926/1506 2638/1927/1507 2487/1925/1505 +f 2232/1926/1506 2046/1928/1508 2488/1929/1509 2638/1927/1507 +f 2638/1927/1507 2488/1929/1509 2060/1872/1452 2246/1870/1450 +f 2487/1925/1505 2638/1927/1507 2246/1870/1450 2061/1868/1448 +f 2046/1928/1508 2231/1930/1510 2639/1931/1511 2488/1929/1509 +f 2231/1930/1510 2045/1932/1512 2489/1933/1513 2639/1931/1511 +f 2639/1931/1511 2489/1933/1513 2059/1876/1456 2245/1874/1454 +f 2488/1929/1509 2639/1931/1511 2245/1874/1454 2060/1872/1452 +f 2045/1932/1512 2230/1934/1514 2640/1935/1515 2489/1933/1513 +f 2230/1934/1514 2044/1936/1516 2490/1937/1517 2640/1935/1515 +f 2640/1935/1515 2490/1937/1517 2058/1880/1460 2244/1878/1458 +f 2489/1933/1513 2640/1935/1515 2244/1878/1458 2059/1876/1456 +f 2044/1936/1516 2229/1938/1518 2641/1939/1519 2490/1937/1517 +f 2229/1938/1518 2043/1940/1520 2491/1941/1521 2641/1939/1519 +f 2641/1939/1519 2491/1941/1521 2057/1884/1464 2243/1882/1462 +f 2490/1937/1517 2641/1939/1519 2243/1882/1462 2058/1880/1460 +f 2043/1940/1520 2228/1942/1522 2642/1943/1523 2491/1941/1521 +f 2228/1942/1522 2042/1358/938 2492/1361/941 2642/1943/1523 +f 2642/1943/1523 2492/1361/941 2056/1366/946 2242/1886/1466 +f 2491/1941/1521 2642/1943/1523 2242/1886/1466 2057/1884/1464 +f 2010/1420/1000 2212/1419/999 2643/1944/1524 2186/1945/1525 +f 2212/1419/999 2181/1418/998 2493/1946/1526 2643/1944/1524 +f 2643/1944/1524 2493/1946/1526 2028/1947/1527 2213/1948/1528 +f 2186/1945/1525 2643/1944/1524 2213/1948/1528 2007/1949/1529 +f 2181/1418/998 2366/1426/1006 2644/1950/1530 2493/1946/1526 +f 2366/1426/1006 2180/1425/1005 2494/1951/1531 2644/1950/1530 +f 2644/1950/1530 2494/1951/1531 2029/1952/1532 2214/1953/1533 +f 2493/1946/1526 2644/1950/1530 2214/1953/1533 2028/1947/1527 +f 2180/1425/1005 2365/1432/1012 2645/1954/1534 2494/1951/1531 +f 2365/1432/1012 2179/1431/1011 2495/1955/1535 2645/1954/1534 +f 2645/1954/1534 2495/1955/1535 2030/1956/1536 2215/1957/1537 +f 2494/1951/1531 2645/1954/1534 2215/1957/1537 2029/1952/1532 +f 2179/1431/1011 2364/1438/1018 2646/1958/1538 2495/1955/1535 +f 2364/1438/1018 2178/1437/1017 2496/1959/1539 2646/1958/1538 +f 2646/1958/1538 2496/1959/1539 2031/1960/1540 2216/1961/1541 +f 2495/1955/1535 2646/1958/1538 2216/1961/1541 2030/1956/1536 +f 2178/1437/1017 2363/1444/1024 2647/1962/1542 2496/1959/1539 +f 2363/1444/1024 2177/1443/1023 2497/1963/1543 2647/1962/1542 +f 2647/1962/1542 2497/1963/1543 2032/1964/1544 2217/1965/1545 +f 2496/1959/1539 2647/1962/1542 2217/1965/1545 2031/1960/1540 +f 2177/1443/1023 2362/1450/1030 2648/1966/1546 2497/1963/1543 +f 2362/1450/1030 2176/1449/1029 2498/1967/1547 2648/1966/1546 +f 2648/1966/1546 2498/1967/1547 2033/1968/1548 2218/1969/1549 +f 2497/1963/1543 2648/1966/1546 2218/1969/1549 2032/1964/1544 +f 2176/1449/1029 2361/1456/1036 2649/1970/1550 2498/1967/1547 +f 2361/1456/1036 2175/1455/1035 2499/1971/1551 2649/1970/1550 +f 2649/1970/1550 2499/1971/1551 2034/1972/1552 2219/1973/1553 +f 2498/1967/1547 2649/1970/1550 2219/1973/1553 2033/1968/1548 +f 2175/1455/1035 2360/1462/1042 2650/1974/1554 2499/1971/1551 +f 2360/1462/1042 2174/1461/1041 2500/1975/1555 2650/1974/1554 +f 2650/1974/1554 2500/1975/1555 2035/1976/1556 2220/1977/1557 +f 2499/1971/1551 2650/1974/1554 2220/1977/1557 2034/1972/1552 +f 2174/1461/1041 2359/1468/1048 2651/1978/1558 2500/1975/1555 +f 2359/1468/1048 2173/1467/1047 2501/1979/1559 2651/1978/1558 +f 2651/1978/1558 2501/1979/1559 2036/1980/1560 2221/1981/1561 +f 2500/1975/1555 2651/1978/1558 2221/1981/1561 2035/1976/1556 +f 2173/1467/1047 2358/1474/1054 2652/1982/1562 2501/1979/1559 +f 2358/1474/1054 2172/1473/1053 2502/1983/1563 2652/1982/1562 +f 2652/1982/1562 2502/1983/1563 2037/1984/1564 2222/1985/1565 +f 2501/1979/1559 2652/1982/1562 2222/1985/1565 2036/1980/1560 +f 2172/1473/1053 2357/1480/1060 2653/1986/1566 2502/1983/1563 +f 2357/1480/1060 2171/1479/1059 2503/1987/1567 2653/1986/1566 +f 2653/1986/1566 2503/1987/1567 2038/1988/1568 2223/1989/1569 +f 2502/1983/1563 2653/1986/1566 2223/1989/1569 2037/1984/1564 +f 2171/1479/1059 2356/1486/1066 2654/1990/1570 2503/1987/1567 +f 2356/1486/1066 2170/1485/1065 2504/1991/1571 2654/1990/1570 +f 2654/1990/1570 2504/1991/1571 2039/1992/1572 2224/1993/1573 +f 2503/1987/1567 2654/1990/1570 2224/1993/1573 2038/1988/1568 +f 2170/1485/1065 2355/1492/1072 2655/1994/1574 2504/1991/1571 +f 2355/1492/1072 2169/1491/1071 2505/1995/1575 2655/1994/1574 +f 2655/1994/1574 2505/1995/1575 2040/1996/1576 2225/1997/1577 +f 2504/1991/1571 2655/1994/1574 2225/1997/1577 2039/1992/1572 +f 2169/1491/1071 2354/1495/1075 2656/1998/1578 2505/1995/1575 +f 2354/1495/1075 2168/1349/929 2506/1352/932 2656/1998/1578 +f 2656/1998/1578 2506/1352/932 2041/1357/937 2226/1999/1579 +f 2505/1995/1575 2656/1998/1578 2226/1999/1579 2040/1996/1576 +o Courtyard.003 +v 24.000000 0.000000 0.000000 +v 0.500000 0.000000 -24.000000 +v 24.000000 2.000000 0.000000 +v 0.000000 2.000000 -24.000000 +v 24.000000 0.000000 -22.000000 +v 22.000000 0.000000 -24.000000 +v 22.000000 2.000000 -24.000000 +v 24.000000 2.000000 -22.000000 +v 23.875000 2.500000 -21.948200 +v 21.948208 2.500000 -23.874998 +v 0.000000 2.500000 -23.875000 +v 23.875000 2.500000 0.000000 +v 23.875000 2.187500 0.000000 +v 23.875000 2.187500 -21.948200 +v 21.948208 2.187500 -23.874998 +v 0.000000 2.187500 -23.875000 +v 0.500000 1.250000 -24.000000 +v 0.000000 1.250000 -24.000000 +v 1.000000 2.000000 -24.000000 +v 1.000000 2.500000 -23.875000 +v 1.000000 2.187500 -23.875000 +v 0.999889 0.000000 -24.000000 +v -24.000000 0.000000 0.000000 +v -0.500000 0.000000 -24.000000 +v -24.000000 2.000000 0.000000 +v -24.000000 0.000000 -22.000000 +v -22.000000 0.000000 -24.000000 +v -22.000000 2.000000 -24.000000 +v -24.000000 2.000000 -22.000000 +v -23.875000 2.500000 -21.948200 +v -21.948208 2.500000 -23.874998 +v -23.875000 2.500000 0.000000 +v -23.875000 2.187500 0.000000 +v -23.875000 2.187500 -21.948200 +v -21.948208 2.187500 -23.874998 +v -0.500000 1.250000 -24.000000 +v -1.000000 2.000000 -24.000000 +v -1.000000 2.500000 -23.875000 +v -1.000000 2.187500 -23.875000 +v -0.999889 0.000000 -24.000000 +v 0.500000 0.000000 24.000000 +v 0.000000 2.000000 24.000000 +v 24.000000 0.000000 22.000000 +v 22.000000 0.000000 24.000000 +v 22.000000 2.000000 24.000000 +v 24.000000 2.000000 22.000000 +v 23.875000 2.500000 21.948200 +v 21.948208 2.500000 23.874998 +v 0.000000 2.500000 23.875000 +v 23.875000 2.187500 21.948200 +v 21.948208 2.187500 23.874998 +v 0.000000 2.187500 23.875000 +v 0.500000 1.250000 24.000000 +v 0.000000 1.250000 24.000000 +v 1.000000 2.000000 24.000000 +v 1.000000 2.500000 23.875000 +v 1.000000 2.187500 23.875000 +v 0.999889 0.000000 24.000000 +v -0.500000 0.000000 24.000000 +v -24.000000 0.000000 22.000000 +v -22.000000 0.000000 24.000000 +v -22.000000 2.000000 24.000000 +v -24.000000 2.000000 22.000000 +v -23.875000 2.500000 21.948200 +v -21.948208 2.500000 23.874998 +v -23.875000 2.187500 21.948200 +v -21.948208 2.187500 23.874998 +v -0.500000 1.250000 24.000000 +v -1.000000 2.000000 24.000000 +v -1.000000 2.500000 23.875000 +v -1.000000 2.187500 23.875000 +v -0.999889 0.000000 24.000000 +vn -0.0000 -0.0000 1.0000 +vn -0.7071 -0.0000 0.7071 +vn -1.0000 -0.0000 -0.0000 +vn -0.0000 -0.5547 0.8320 +vn -0.8321 -0.5547 -0.0000 +vn -0.0000 -0.5547 0.8321 +vn -0.5883 -0.5547 0.5883 +vn 0.7071 -0.0000 0.7071 +vn 1.0000 -0.0000 -0.0000 +vn 0.8321 -0.5547 -0.0000 +vn 0.5883 -0.5547 0.5883 +vn -0.0000 -0.0000 -1.0000 +vn -0.7071 -0.0000 -0.7071 +vn -0.0000 -0.5547 -0.8321 +vn -0.5883 -0.5547 -0.5883 +vn 0.7071 -0.0000 -0.7071 +vn 0.5883 -0.5547 -0.5883 +vt 0.170474 0.546991 +vt 0.340948 0.802702 +vt -0.000000 0.802702 +vt 8.465202 0.120806 +vt 8.465199 0.802702 +vt 7.500854 0.802702 +vt 7.500854 0.120806 +vt 15.966076 0.120806 +vt 15.966034 0.802702 +vt 7.500854 0.866629 +vt 8.465199 0.866629 +vt 8.465199 0.973176 +vt 7.500854 0.973176 +vt 15.966054 0.866629 +vt 15.966054 0.973176 +vt 8.465199 0.973176 +vt 0.340948 0.866629 +vt 0.340948 0.973176 +vt -0.000000 0.546991 +vt -0.000000 0.866629 +vt -0.000000 0.973176 +vt 0.340910 0.120806 +vt 0.170474 0.120806 +vt 0.829526 0.546991 +vt 1.000000 0.802702 +vt 0.659052 0.802702 +vt -7.465202 0.120806 +vt -6.500854 0.120806 +vt -6.500854 0.802702 +vt -7.465199 0.802702 +vt -14.966034 0.802702 +vt -14.966076 0.120806 +vt -6.500854 0.866629 +vt -6.500854 0.973176 +vt -7.465199 0.973176 +vt -7.465199 0.866629 +vt -7.465199 0.973176 +vt -14.966054 0.973176 +vt -14.966054 0.866629 +vt 0.659052 0.866629 +vt 0.659052 0.973176 +vt 1.000000 0.546991 +vt 1.000000 0.866629 +vt 1.000000 0.973176 +vt 0.659090 0.120806 +vt 0.829526 0.120806 +vt -0.000000 0.802702 +vt -0.000000 0.546991 +vt -0.000000 0.866629 +vt -0.000000 0.973176 +s 0 +usemtl MetalWall +f 2673/2000/1580 2675/2001/1580 2660/2002/1580 +f 2661/2003/1581 2664/2004/1581 2663/2005/1581 2662/2006/1581 +f 2661/2003/1582 2657/2007/1582 2659/2008/1582 2664/2004/1582 +f 2671/2009/1581 2670/2010/1581 2665/2011/1581 2666/2012/1581 +f 2670/2010/1582 2669/2013/1582 2668/2014/1582 2665/2015/1582 +f 2677/2016/1580 2671/2009/1580 2666/2012/1580 2676/2017/1580 +f 2675/2001/1583 2663/2005/1583 2671/2009/1583 2677/2016/1583 +f 2664/2004/1584 2659/2008/1584 2669/2013/1584 2670/2010/1584 +f 2673/2000/1580 2660/2002/1580 2674/2018/1580 +f 2660/2002/1585 2675/2001/1585 2677/2016/1585 2672/2019/1585 +f 2672/2019/1580 2677/2016/1580 2676/2017/1580 2667/2020/1580 +f 2675/2001/1580 2678/2021/1580 2662/2006/1580 2663/2005/1580 +f 2658/2022/1580 2678/2021/1580 2675/2001/1580 2673/2000/1580 +f 2663/2005/1586 2664/2004/1586 2670/2010/1586 2671/2009/1586 +f 2692/2023/1580 2660/2024/1580 2693/2025/1580 +f 2682/2026/1587 2683/2027/1587 2684/2028/1587 2685/2029/1587 +f 2682/2026/1588 2685/2029/1588 2681/2030/1588 2679/2031/1588 +f 2691/2032/1587 2687/2033/1587 2686/2034/1587 2690/2035/1587 +f 2690/2035/1588 2686/2036/1588 2688/2037/1588 2689/2038/1588 +f 2695/2039/1580 2694/2040/1580 2687/2033/1580 2691/2032/1580 +f 2693/2025/1583 2695/2039/1583 2691/2032/1583 2684/2028/1583 +f 2685/2029/1589 2690/2035/1589 2689/2038/1589 2681/2030/1589 +f 2692/2023/1580 2674/2041/1580 2660/2024/1580 +f 2660/2024/1585 2672/2042/1585 2695/2039/1585 2693/2025/1585 +f 2672/2042/1580 2667/2043/1580 2694/2040/1580 2695/2039/1580 +f 2693/2025/1580 2684/2028/1580 2683/2027/1580 2696/2044/1580 +f 2680/2045/1580 2692/2023/1580 2693/2025/1580 2696/2044/1580 +f 2684/2028/1590 2691/2032/1590 2690/2035/1590 2685/2029/1590 +f 2709/2023/1591 2698/2024/1591 2711/2025/1591 +f 2699/2026/1592 2700/2027/1592 2701/2028/1592 2702/2029/1592 +f 2699/2026/1582 2702/2029/1582 2659/2030/1582 2657/2031/1582 +f 2707/2032/1592 2704/2033/1592 2703/2034/1592 2706/2035/1592 +f 2706/2035/1582 2703/2036/1582 2668/2037/1582 2669/2038/1582 +f 2713/2039/1591 2712/2040/1591 2704/2033/1591 2707/2032/1591 +f 2711/2025/1593 2713/2039/1593 2707/2032/1593 2701/2028/1593 +f 2702/2029/1584 2706/2035/1584 2669/2038/1584 2659/2030/1584 +f 2709/2023/1591 2710/2041/1591 2698/2024/1591 +f 2698/2024/1593 2708/2042/1593 2713/2039/1593 2711/2025/1593 +f 2708/2042/1591 2705/2043/1591 2712/2040/1591 2713/2039/1591 +f 2711/2025/1591 2701/2028/1591 2700/2027/1591 2714/2044/1591 +f 2697/2045/1591 2709/2023/1591 2711/2025/1591 2714/2044/1591 +f 2701/2028/1594 2707/2032/1594 2706/2035/1594 2702/2029/1594 +f 2724/2000/1591 2725/2001/1591 2698/2046/1591 +f 2716/2003/1595 2719/2004/1595 2718/2005/1595 2717/2006/1595 +f 2716/2003/1588 2679/2007/1588 2681/2008/1588 2719/2004/1588 +f 2723/2009/1595 2722/2010/1595 2720/2011/1595 2721/2012/1595 +f 2722/2010/1588 2689/2013/1588 2688/2014/1588 2720/2015/1588 +f 2727/2016/1591 2723/2009/1591 2721/2012/1591 2726/2017/1591 +f 2725/2001/1593 2718/2005/1593 2723/2009/1593 2727/2016/1593 +f 2719/2004/1589 2681/2008/1589 2689/2013/1589 2722/2010/1589 +f 2724/2000/1591 2698/2046/1591 2710/2047/1591 +f 2698/2046/1593 2725/2001/1593 2727/2016/1593 2708/2048/1593 +f 2708/2048/1591 2727/2016/1591 2726/2017/1591 2705/2049/1591 +f 2725/2001/1591 2728/2021/1591 2717/2006/1591 2718/2005/1591 +f 2715/2022/1591 2728/2021/1591 2725/2001/1591 2724/2000/1591 +f 2718/2005/1596 2719/2004/1596 2722/2010/1596 2723/2009/1596 +o Courtyard.001 +v 6.000001 0.000000 0.000000 +v 0.000000 0.000000 -6.000001 +v 5.500000 0.000000 -6.000001 +v 6.000001 0.000000 -5.500000 +v 7.000001 0.000000 -12.000002 +v 0.000000 0.000000 -12.000002 +v 12.000002 0.000000 0.000000 +v 12.000002 0.000000 -5.999999 +v -5.500000 0.000000 -6.000001 +v -7.000001 0.000000 -12.000002 +v 6.000001 0.000000 5.500000 +v 12.000002 0.000000 5.999999 +v 12.000000 0.000000 -12.000000 +v 5.531250 0.000000 -5.968750 +v 5.562500 0.000000 -5.937500 +v 5.593750 0.000000 -5.906251 +v 5.625000 0.000000 -5.875000 +v 5.656250 0.000000 -5.843750 +v 5.687500 0.000000 -5.812500 +v 5.718750 0.000000 -5.781250 +v 5.750000 0.000000 -5.750001 +v 5.781250 0.000000 -5.718751 +v 5.812500 0.000000 -5.687500 +v 5.843750 0.000000 -5.656250 +v 5.875000 0.000000 -5.625000 +v 5.906251 0.000000 -5.593750 +v 5.937500 0.000000 -5.562500 +v 5.968750 0.000000 -5.531250 +v 0.343750 0.000000 -6.000000 +v 0.687500 0.000000 -6.000000 +v 1.031250 0.000000 -6.000001 +v 1.375000 0.000000 -6.000000 +v 1.718750 0.000000 -6.000000 +v 2.062500 0.000000 -6.000000 +v 2.406250 0.000000 -6.000000 +v 2.750000 0.000000 -6.000000 +v 3.093750 0.000000 -6.000000 +v 3.437500 0.000000 -6.000000 +v 3.781250 0.000000 -6.000000 +v 4.125000 0.000000 -6.000000 +v 4.468750 0.000000 -6.000001 +v 4.812500 0.000000 -6.000000 +v 5.156250 0.000000 -6.000000 +v 6.000000 0.000000 -5.156250 +v 6.000000 0.000000 -4.812500 +v 6.000000 0.000000 -4.468750 +v 6.000000 0.000000 -4.125000 +v 6.000000 0.000000 -3.781250 +v 6.000001 0.000000 -3.437500 +v 6.000000 0.000000 -3.093750 +v 6.000000 0.000000 -2.750000 +v 6.000000 0.000000 -2.406250 +v 6.000000 0.000000 -2.062500 +v 6.000000 0.000000 -1.718750 +v 6.000000 0.000000 -1.375000 +v 6.000001 0.000000 -1.031250 +v 6.000000 0.000000 -0.687500 +v 6.000000 0.000000 -0.343750 +v 7.312500 0.000000 -11.625001 +v 7.625000 0.000000 -11.250000 +v 7.937501 0.000000 -10.875001 +v 8.250000 0.000000 -10.500000 +v 8.562501 0.000000 -10.125000 +v 8.875000 0.000000 -9.750000 +v 9.187501 0.000000 -9.375000 +v 9.500001 0.000000 -9.000000 +v 9.812500 0.000000 -8.624999 +v 10.125001 0.000000 -8.250000 +v 10.437500 0.000000 -7.875000 +v 10.750001 0.000000 -7.500000 +v 11.062500 0.000000 -7.124999 +v 11.375001 0.000000 -6.750000 +v 11.687500 0.000000 -6.374999 +v 12.000001 0.000000 -5.625000 +v 12.000000 0.000000 -5.249999 +v 12.000002 0.000000 -4.875000 +v 12.000001 0.000000 -4.499999 +v 12.000001 0.000000 -4.125000 +v 12.000000 0.000000 -3.749999 +v 12.000001 0.000000 -3.375000 +v 12.000001 0.000000 -3.000000 +v 12.000001 0.000000 -2.625000 +v 12.000000 0.000000 -2.250000 +v 12.000001 0.000000 -1.875000 +v 12.000001 0.000000 -1.500000 +v 12.000002 0.000000 -1.125000 +v 12.000000 0.000000 -0.750000 +v 12.000001 0.000000 -0.375000 +v 11.625000 0.000000 -5.968749 +v 11.250001 0.000000 -5.937500 +v 10.875000 0.000000 -5.906249 +v 10.500001 0.000000 -5.875000 +v 10.125001 0.000000 -5.843750 +v 9.750001 0.000000 -5.812500 +v 9.375000 0.000000 -5.781250 +v 9.000001 0.000000 -5.750000 +v 8.625001 0.000000 -5.718750 +v 8.250000 0.000000 -5.687500 +v 7.875001 0.000000 -5.656250 +v 7.500001 0.000000 -5.625000 +v 7.125001 0.000000 -5.593750 +v 6.750000 0.000000 -5.562500 +v 6.375000 0.000000 -5.531250 +v 6.562500 0.000000 -12.000000 +v 6.125000 0.000000 -12.000001 +v 5.687500 0.000000 -12.000001 +v 5.250000 0.000000 -12.000001 +v 4.812500 0.000000 -12.000001 +v 4.375000 0.000000 -12.000002 +v 3.937500 0.000000 -12.000001 +v 3.500000 0.000000 -12.000001 +v 3.062500 0.000000 -12.000001 +v 2.625000 0.000000 -12.000000 +v 2.187500 0.000000 -12.000001 +v 1.750000 0.000000 -12.000001 +v 1.312500 0.000000 -12.000002 +v 0.875000 0.000000 -12.000000 +v 0.437500 0.000000 -12.000001 +v 11.625000 0.000000 0.000000 +v 11.250001 0.000000 0.000000 +v 10.875000 0.000000 0.000000 +v 10.500001 0.000000 0.000000 +v 10.125001 0.000000 0.000000 +v 9.750001 0.000000 0.000000 +v 9.375000 0.000000 0.000000 +v 9.000001 0.000000 0.000000 +v 8.625000 0.000000 0.000000 +v 8.250001 0.000000 0.000000 +v 7.875001 0.000000 0.000000 +v 7.500001 0.000000 0.000000 +v 7.125000 0.000000 0.000000 +v 6.750001 0.000000 0.000000 +v 6.375000 0.000000 0.000000 +v 0.000000 0.000000 -6.375000 +v 0.000000 0.000000 -6.750001 +v 0.000000 0.000000 -7.125000 +v 0.000000 0.000000 -7.500001 +v 0.000000 0.000000 -7.875001 +v 0.000000 0.000000 -8.250001 +v 0.000000 0.000000 -8.625001 +v 0.000000 0.000000 -9.000001 +v 0.000000 0.000000 -9.375000 +v 0.000000 0.000000 -9.750001 +v 0.000000 0.000000 -10.125001 +v 0.000000 0.000000 -10.500001 +v 0.000000 0.000000 -10.875000 +v 0.000000 0.000000 -11.250001 +v 0.000000 0.000000 -11.625000 +v 5.593750 0.000000 -6.375000 +v 5.687500 0.000000 -6.750001 +v 5.781250 0.000000 -7.125000 +v 5.875000 0.000000 -7.500001 +v 5.968750 0.000000 -7.875001 +v 6.062500 0.000000 -8.250001 +v 6.156250 0.000000 -8.625001 +v 6.250001 0.000000 -9.000001 +v 6.343751 0.000000 -9.375001 +v 6.437500 0.000000 -9.750000 +v 6.531251 0.000000 -10.125001 +v 6.625000 0.000000 -10.500001 +v 6.718751 0.000000 -10.875001 +v 6.812500 0.000000 -11.250000 +v 6.906250 0.000000 -11.625001 +v -0.343750 0.000000 -6.000001 +v -0.687500 0.000000 -6.000000 +v -1.031250 0.000000 -6.000000 +v -1.375000 0.000000 -6.000001 +v -1.718750 0.000000 -6.000000 +v -2.062500 0.000000 -6.000000 +v -2.406250 0.000000 -6.000001 +v -2.750000 0.000000 -6.000001 +v -3.093750 0.000000 -6.000001 +v -3.437500 0.000000 -6.000000 +v -3.781250 0.000000 -6.000000 +v -4.125000 0.000000 -6.000000 +v -4.468750 0.000000 -6.000000 +v -4.812500 0.000000 -6.000000 +v -5.156250 0.000000 -6.000000 +v -6.562500 0.000000 -12.000001 +v -6.125000 0.000000 -12.000001 +v -5.687501 0.000000 -12.000002 +v -5.250000 0.000000 -12.000002 +v -4.812500 0.000000 -12.000002 +v -4.375000 0.000000 -12.000002 +v -3.937500 0.000000 -12.000002 +v -3.500000 0.000000 -12.000002 +v -3.062500 0.000000 -12.000001 +v -2.625000 0.000000 -12.000001 +v -2.187500 0.000000 -12.000001 +v -1.750000 0.000000 -12.000002 +v -1.312500 0.000000 -12.000000 +v -0.875000 0.000000 -12.000001 +v -0.437500 0.000000 -12.000001 +v -5.593750 0.000000 -6.375000 +v -5.687500 0.000000 -6.750000 +v -5.781250 0.000000 -7.125001 +v -5.875001 0.000000 -7.500001 +v -5.968750 0.000000 -7.875001 +v -6.062500 0.000000 -8.250001 +v -6.156250 0.000000 -8.625001 +v -6.250001 0.000000 -9.000002 +v -6.343750 0.000000 -9.375000 +v -6.437500 0.000000 -9.750000 +v -6.531250 0.000000 -10.125001 +v -6.625000 0.000000 -10.500001 +v -6.718750 0.000000 -10.875000 +v -6.812500 0.000000 -11.250001 +v -6.906250 0.000000 -11.625001 +v 6.000000 0.000000 5.156250 +v 6.000000 0.000000 4.812500 +v 6.000001 0.000000 4.468750 +v 6.000001 0.000000 4.125000 +v 6.000001 0.000000 3.781250 +v 6.000001 0.000000 3.437500 +v 6.000001 0.000000 3.093750 +v 6.000001 0.000000 2.750000 +v 6.000000 0.000000 2.406250 +v 6.000000 0.000000 2.062500 +v 6.000000 0.000000 1.718750 +v 6.000001 0.000000 1.375000 +v 6.000000 0.000000 1.031250 +v 6.000000 0.000000 0.687500 +v 6.000000 0.000000 0.343750 +v 12.000000 0.000000 5.624999 +v 12.000001 0.000000 5.249999 +v 12.000000 0.000000 4.874999 +v 12.000000 0.000000 4.499999 +v 12.000001 0.000000 4.125000 +v 12.000001 0.000000 3.749999 +v 12.000002 0.000000 3.375000 +v 12.000002 0.000000 3.000000 +v 12.000002 0.000000 2.625000 +v 12.000001 0.000000 2.250000 +v 12.000001 0.000000 1.875000 +v 12.000002 0.000000 1.500000 +v 12.000000 0.000000 1.125000 +v 12.000001 0.000000 0.750000 +v 12.000002 0.000000 0.375000 +v 11.625001 0.000000 5.968749 +v 11.250001 0.000000 5.937499 +v 10.875002 0.000000 5.906250 +v 10.500001 0.000000 5.874999 +v 10.125001 0.000000 5.843750 +v 9.750001 0.000000 5.812500 +v 9.375001 0.000000 5.781250 +v 9.000002 0.000000 5.750000 +v 8.625001 0.000000 5.718750 +v 8.250001 0.000000 5.687500 +v 7.875000 0.000000 5.656250 +v 7.500001 0.000000 5.625000 +v 7.125000 0.000000 5.593750 +v 6.750000 0.000000 5.562500 +v 6.375000 0.000000 5.531250 +v 7.312500 0.000000 -12.000000 +v 7.625000 0.000000 -12.000000 +v 7.937500 0.000000 -12.000000 +v 8.250000 0.000000 -12.000000 +v 8.562500 0.000000 -12.000000 +v 8.875000 0.000000 -12.000000 +v 9.187500 0.000000 -12.000000 +v 9.500000 0.000000 -12.000000 +v 9.812500 0.000000 -12.000000 +v 10.125000 0.000000 -12.000000 +v 10.437500 0.000000 -12.000000 +v 10.750000 0.000000 -12.000000 +v 11.062500 0.000000 -12.000000 +v 11.375000 0.000000 -12.000000 +v 11.687500 0.000000 -12.000000 +v 12.000000 0.000000 -6.374999 +v 12.000000 0.000000 -6.749999 +v 12.000000 0.000000 -7.124999 +v 12.000000 0.000000 -7.499999 +v 12.000000 0.000000 -7.874999 +v 12.000000 0.000000 -8.249999 +v 12.000000 0.000000 -8.624999 +v 12.000000 0.000000 -8.999999 +v 12.000000 0.000000 -9.375000 +v 12.000000 0.000000 -9.750000 +v 12.000000 0.000000 -10.125000 +v 12.000000 0.000000 -10.500000 +v 12.000000 0.000000 -10.875000 +v 12.000000 0.000000 -11.250000 +v 12.000000 0.000000 -11.625000 +v 11.625001 0.000000 -0.373047 +v 11.625000 0.000000 -0.746094 +v 11.625001 0.000000 -1.119141 +v 11.625002 0.000000 -1.492187 +v 11.625000 0.000000 -1.865234 +v 11.625000 0.000000 -2.238281 +v 11.625002 0.000000 -2.611328 +v 11.625000 0.000000 -2.984375 +v 11.625001 0.000000 -3.357421 +v 11.625000 0.000000 -3.730468 +v 11.624999 0.000000 -4.103515 +v 11.625003 0.000000 -4.476562 +v 11.625001 0.000000 -4.849609 +v 11.625000 0.000000 -5.222656 +v 11.625002 0.000000 -5.595702 +v 11.250000 0.000000 -0.371094 +v 11.250001 0.000000 -0.742188 +v 11.250000 0.000000 -1.113281 +v 11.250000 0.000000 -1.484375 +v 11.250001 0.000000 -1.855469 +v 11.250000 0.000000 -2.226562 +v 11.250000 0.000000 -2.597656 +v 11.250002 0.000000 -2.968750 +v 11.250000 0.000000 -3.339843 +v 11.250000 0.000000 -3.710937 +v 11.250001 0.000000 -4.082030 +v 11.249999 0.000000 -4.453125 +v 11.250000 0.000000 -4.824218 +v 11.250001 0.000000 -5.195312 +v 11.249999 0.000000 -5.566405 +v 10.875001 0.000000 -0.369141 +v 10.875000 0.000000 -0.738281 +v 10.875001 0.000000 -1.107422 +v 10.875000 0.000000 -1.476562 +v 10.875000 0.000000 -1.845703 +v 10.875001 0.000000 -2.214844 +v 10.875000 0.000000 -2.583984 +v 10.875000 0.000000 -2.953125 +v 10.875000 0.000000 -3.322265 +v 10.875001 0.000000 -3.691406 +v 10.875000 0.000000 -4.060546 +v 10.875000 0.000000 -4.429687 +v 10.875001 0.000000 -4.798828 +v 10.875000 0.000000 -5.167968 +v 10.875001 0.000000 -5.537109 +v 10.500002 0.000000 -0.367187 +v 10.500000 0.000000 -0.734375 +v 10.500002 0.000000 -1.101562 +v 10.500001 0.000000 -1.468750 +v 10.500000 0.000000 -1.835937 +v 10.500001 0.000000 -2.203125 +v 10.500002 0.000000 -2.570312 +v 10.500000 0.000000 -2.937500 +v 10.500002 0.000000 -3.304687 +v 10.500001 0.000000 -3.671874 +v 10.500000 0.000000 -4.039062 +v 10.500001 0.000000 -4.406249 +v 10.500002 0.000000 -4.773438 +v 10.500000 0.000000 -5.140625 +v 10.500001 0.000000 -5.507812 +v 10.125000 0.000000 -0.365234 +v 10.125002 0.000000 -0.730469 +v 10.125001 0.000000 -1.095703 +v 10.125000 0.000000 -1.460937 +v 10.125002 0.000000 -1.826172 +v 10.125000 0.000000 -2.191406 +v 10.125000 0.000000 -2.556640 +v 10.125002 0.000000 -2.921875 +v 10.125000 0.000000 -3.287109 +v 10.125000 0.000000 -3.652343 +v 10.125001 0.000000 -4.017578 +v 10.125001 0.000000 -4.382812 +v 10.125001 0.000000 -4.748046 +v 10.125002 0.000000 -5.113280 +v 10.125000 0.000000 -5.478515 +v 9.750000 0.000000 -0.363281 +v 9.750001 0.000000 -0.726562 +v 9.750001 0.000000 -1.089844 +v 9.750001 0.000000 -1.453125 +v 9.750000 0.000000 -1.816406 +v 9.750001 0.000000 -2.179687 +v 9.750001 0.000000 -2.542969 +v 9.750001 0.000000 -2.906250 +v 9.750000 0.000000 -3.269531 +v 9.750001 0.000000 -3.632812 +v 9.750001 0.000000 -3.996093 +v 9.750001 0.000000 -4.359375 +v 9.750001 0.000000 -4.722656 +v 9.750001 0.000000 -5.085937 +v 9.750000 0.000000 -5.449218 +v 9.375001 0.000000 -0.361328 +v 9.375000 0.000000 -0.722656 +v 9.375001 0.000000 -1.083984 +v 9.375001 0.000000 -1.445312 +v 9.375000 0.000000 -1.806640 +v 9.375001 0.000000 -2.167969 +v 9.375001 0.000000 -2.529297 +v 9.375000 0.000000 -2.890625 +v 9.375001 0.000000 -3.251953 +v 9.375001 0.000000 -3.613281 +v 9.374999 0.000000 -3.974609 +v 9.375001 0.000000 -4.335937 +v 9.375002 0.000000 -4.697265 +v 9.374999 0.000000 -5.058594 +v 9.375001 0.000000 -5.419921 +v 9.000000 0.000000 -0.359375 +v 9.000002 0.000000 -0.718750 +v 9.000000 0.000000 -1.078125 +v 9.000000 0.000000 -1.437500 +v 9.000002 0.000000 -1.796875 +v 9.000001 0.000000 -2.156250 +v 9.000000 0.000000 -2.515625 +v 9.000002 0.000000 -2.875000 +v 8.999999 0.000000 -3.234375 +v 9.000001 0.000000 -3.593750 +v 9.000002 0.000000 -3.953125 +v 9.000000 0.000000 -4.312500 +v 9.000000 0.000000 -4.671875 +v 9.000002 0.000000 -5.031249 +v 8.999999 0.000000 -5.390625 +v 8.625001 0.000000 -0.357422 +v 8.625000 0.000000 -0.714844 +v 8.625001 0.000000 -1.072266 +v 8.625001 0.000000 -1.429687 +v 8.625000 0.000000 -1.787109 +v 8.625000 0.000000 -2.144531 +v 8.625000 0.000000 -2.501953 +v 8.625000 0.000000 -2.859375 +v 8.625001 0.000000 -3.216797 +v 8.625000 0.000000 -3.574219 +v 8.625000 0.000000 -3.931640 +v 8.625001 0.000000 -4.289062 +v 8.625000 0.000000 -4.646484 +v 8.625001 0.000000 -5.003906 +v 8.625000 0.000000 -5.361328 +v 8.250000 0.000000 -0.355469 +v 8.250000 0.000000 -0.710938 +v 8.250000 0.000000 -1.066406 +v 8.250001 0.000000 -1.421875 +v 8.250000 0.000000 -1.777344 +v 8.250000 0.000000 -2.132812 +v 8.250000 0.000000 -2.488281 +v 8.250000 0.000000 -2.843750 +v 8.250000 0.000000 -3.199219 +v 8.250000 0.000000 -3.554687 +v 8.250000 0.000000 -3.910156 +v 8.250000 0.000000 -4.265625 +v 8.250000 0.000000 -4.621093 +v 8.250000 0.000000 -4.976562 +v 8.250000 0.000000 -5.332031 +v 7.875001 0.000000 -0.353516 +v 7.875000 0.000000 -0.707031 +v 7.875000 0.000000 -1.060547 +v 7.875001 0.000000 -1.414062 +v 7.875000 0.000000 -1.767578 +v 7.875000 0.000000 -2.121094 +v 7.875000 0.000000 -2.474609 +v 7.875000 0.000000 -2.828125 +v 7.875000 0.000000 -3.181640 +v 7.875000 0.000000 -3.535156 +v 7.875001 0.000000 -3.888672 +v 7.875001 0.000000 -4.242188 +v 7.875000 0.000000 -4.595703 +v 7.875001 0.000000 -4.949219 +v 7.875001 0.000000 -5.302734 +v 7.500000 0.000000 -0.351563 +v 7.500001 0.000000 -0.703125 +v 7.500001 0.000000 -1.054688 +v 7.500000 0.000000 -1.406250 +v 7.500001 0.000000 -1.757813 +v 7.500001 0.000000 -2.109375 +v 7.500000 0.000000 -2.460938 +v 7.500001 0.000000 -2.812500 +v 7.500001 0.000000 -3.164062 +v 7.500001 0.000000 -3.515625 +v 7.500001 0.000000 -3.867188 +v 7.500000 0.000000 -4.218750 +v 7.500000 0.000000 -4.570312 +v 7.500000 0.000000 -4.921875 +v 7.500000 0.000000 -5.273438 +v 7.125000 0.000000 -0.349609 +v 7.125000 0.000000 -0.699219 +v 7.125001 0.000000 -1.048828 +v 7.125000 0.000000 -1.398438 +v 7.125000 0.000000 -1.748047 +v 7.125001 0.000000 -2.097656 +v 7.125000 0.000000 -2.447266 +v 7.125000 0.000000 -2.796875 +v 7.125001 0.000000 -3.146484 +v 7.125000 0.000000 -3.496094 +v 7.125000 0.000000 -3.845703 +v 7.125001 0.000000 -4.195312 +v 7.125001 0.000000 -4.544922 +v 7.125000 0.000000 -4.894531 +v 7.125000 0.000000 -5.244141 +v 6.750000 0.000000 -0.347656 +v 6.750000 0.000000 -0.695313 +v 6.750000 0.000000 -1.042969 +v 6.750001 0.000000 -1.390625 +v 6.750000 0.000000 -1.738281 +v 6.750000 0.000000 -2.085938 +v 6.750000 0.000000 -2.433594 +v 6.750001 0.000000 -2.781250 +v 6.750000 0.000000 -3.128906 +v 6.750000 0.000000 -3.476563 +v 6.750001 0.000000 -3.824219 +v 6.750000 0.000000 -4.171875 +v 6.750000 0.000000 -4.519531 +v 6.750001 0.000000 -4.867188 +v 6.750000 0.000000 -5.214844 +v 6.375000 0.000000 -0.345703 +v 6.375000 0.000000 -0.691406 +v 6.375000 0.000000 -1.037109 +v 6.375000 0.000000 -1.382812 +v 6.375000 0.000000 -1.728516 +v 6.375000 0.000000 -2.074219 +v 6.375000 0.000000 -2.419922 +v 6.375000 0.000000 -2.765625 +v 6.375000 0.000000 -3.111328 +v 6.375000 0.000000 -3.457031 +v 6.375000 0.000000 -3.802735 +v 6.375000 0.000000 -4.148438 +v 6.375000 0.000000 -4.494141 +v 6.375000 0.000000 -4.839844 +v 6.375000 0.000000 -5.185547 +v 0.349609 0.000000 -6.375000 +v 0.699219 0.000000 -6.375000 +v 1.048828 0.000000 -6.375000 +v 1.398438 0.000000 -6.375001 +v 1.748047 0.000000 -6.375000 +v 2.097656 0.000000 -6.375000 +v 2.447266 0.000000 -6.375001 +v 2.796875 0.000000 -6.375000 +v 3.146485 0.000000 -6.375000 +v 3.496094 0.000000 -6.375000 +v 3.845704 0.000000 -6.375000 +v 4.195313 0.000000 -6.375001 +v 4.544922 0.000000 -6.375000 +v 4.894532 0.000000 -6.375000 +v 5.244141 0.000000 -6.375001 +v 0.355469 0.000000 -6.750000 +v 0.710938 0.000000 -6.750000 +v 1.066406 0.000000 -6.750000 +v 1.421875 0.000000 -6.750000 +v 1.777344 0.000000 -6.750000 +v 2.132812 0.000000 -6.750000 +v 2.488281 0.000000 -6.750000 +v 2.843750 0.000000 -6.750001 +v 3.199219 0.000000 -6.750000 +v 3.554688 0.000000 -6.750000 +v 3.910156 0.000000 -6.750000 +v 4.265625 0.000000 -6.750000 +v 4.621094 0.000000 -6.750000 +v 4.976563 0.000000 -6.750000 +v 5.332032 0.000000 -6.750000 +v 0.361328 0.000000 -7.125000 +v 0.722656 0.000000 -7.125000 +v 1.083984 0.000000 -7.125001 +v 1.445313 0.000000 -7.125000 +v 1.806641 0.000000 -7.125000 +v 2.167969 0.000000 -7.125000 +v 2.529297 0.000000 -7.125000 +v 2.890625 0.000000 -7.125000 +v 3.251953 0.000000 -7.125000 +v 3.613281 0.000000 -7.125000 +v 3.974609 0.000000 -7.125000 +v 4.335938 0.000000 -7.125000 +v 4.697266 0.000000 -7.125001 +v 5.058594 0.000000 -7.125000 +v 5.419922 0.000000 -7.125001 +v 0.367188 0.000000 -7.500001 +v 0.734375 0.000000 -7.500000 +v 1.101563 0.000000 -7.500001 +v 1.468750 0.000000 -7.500000 +v 1.835938 0.000000 -7.500000 +v 2.203125 0.000000 -7.500001 +v 2.570313 0.000000 -7.500001 +v 2.937500 0.000000 -7.500000 +v 3.304688 0.000000 -7.500001 +v 3.671875 0.000000 -7.500000 +v 4.039063 0.000000 -7.500000 +v 4.406250 0.000000 -7.500000 +v 4.773438 0.000000 -7.500001 +v 5.140625 0.000000 -7.500000 +v 5.507812 0.000000 -7.500001 +v 0.373047 0.000000 -7.875000 +v 0.746094 0.000000 -7.875001 +v 1.119141 0.000000 -7.875001 +v 1.492188 0.000000 -7.875000 +v 1.865235 0.000000 -7.875001 +v 2.238281 0.000000 -7.875000 +v 2.611328 0.000000 -7.875000 +v 2.984375 0.000000 -7.875001 +v 3.357422 0.000000 -7.875000 +v 3.730469 0.000000 -7.875000 +v 4.103516 0.000000 -7.875000 +v 4.476563 0.000000 -7.875001 +v 4.849610 0.000000 -7.875001 +v 5.222657 0.000000 -7.875001 +v 5.595704 0.000000 -7.875000 +v 0.378906 0.000000 -8.250000 +v 0.757813 0.000000 -8.250000 +v 1.136719 0.000000 -8.250001 +v 1.515625 0.000000 -8.250001 +v 1.894531 0.000000 -8.250000 +v 2.273438 0.000000 -8.250000 +v 2.652344 0.000000 -8.250000 +v 3.031250 0.000000 -8.250000 +v 3.410157 0.000000 -8.250000 +v 3.789063 0.000000 -8.250000 +v 4.167969 0.000000 -8.250001 +v 4.546876 0.000000 -8.250001 +v 4.925782 0.000000 -8.250001 +v 5.304688 0.000000 -8.250000 +v 5.683594 0.000000 -8.250000 +v 0.384766 0.000000 -8.624999 +v 0.769531 0.000000 -8.625001 +v 1.154297 0.000000 -8.625001 +v 1.539062 0.000000 -8.625000 +v 1.923828 0.000000 -8.625001 +v 2.308594 0.000000 -8.625000 +v 2.693359 0.000000 -8.625000 +v 3.078125 0.000000 -8.625001 +v 3.462891 0.000000 -8.625000 +v 3.847656 0.000000 -8.625000 +v 4.232422 0.000000 -8.625000 +v 4.617188 0.000000 -8.625001 +v 5.001954 0.000000 -8.625001 +v 5.386720 0.000000 -8.625000 +v 5.771484 0.000000 -8.625000 +v 0.390625 0.000000 -9.000001 +v 0.781250 0.000000 -9.000000 +v 1.171875 0.000000 -9.000000 +v 1.562500 0.000000 -9.000002 +v 1.953125 0.000000 -9.000001 +v 2.343750 0.000000 -9.000001 +v 2.734375 0.000000 -9.000000 +v 3.125000 0.000000 -9.000001 +v 3.515625 0.000000 -9.000001 +v 3.906250 0.000000 -9.000001 +v 4.296875 0.000000 -9.000001 +v 4.687500 0.000000 -9.000001 +v 5.078125 0.000000 -9.000000 +v 5.468750 0.000000 -9.000002 +v 5.859375 0.000000 -9.000000 +v 0.396484 0.000000 -9.375000 +v 0.792969 0.000000 -9.375001 +v 1.189453 0.000000 -9.375001 +v 1.585938 0.000000 -9.375000 +v 1.982422 0.000000 -9.375001 +v 2.378906 0.000000 -9.375000 +v 2.775391 0.000000 -9.375000 +v 3.171875 0.000000 -9.375001 +v 3.568359 0.000000 -9.375000 +v 3.964844 0.000000 -9.375000 +v 4.361329 0.000000 -9.375000 +v 4.757813 0.000000 -9.375002 +v 5.154297 0.000000 -9.375000 +v 5.550781 0.000000 -9.375001 +v 5.947266 0.000000 -9.375001 +v 0.402344 0.000000 -9.750000 +v 0.804688 0.000000 -9.750000 +v 1.207031 0.000000 -9.750001 +v 1.609375 0.000000 -9.750001 +v 2.011719 0.000000 -9.750000 +v 2.414062 0.000000 -9.750000 +v 2.816406 0.000000 -9.750001 +v 3.218750 0.000000 -9.750000 +v 3.621094 0.000000 -9.750000 +v 4.023438 0.000000 -9.750000 +v 4.425781 0.000000 -9.750000 +v 4.828125 0.000000 -9.750000 +v 5.230469 0.000000 -9.750000 +v 5.632812 0.000000 -9.750000 +v 6.035156 0.000000 -9.750000 +v 0.408203 0.000000 -10.125002 +v 0.816406 0.000000 -10.125001 +v 1.224610 0.000000 -10.125001 +v 1.632813 0.000000 -10.125002 +v 2.041016 0.000000 -10.125001 +v 2.449219 0.000000 -10.125000 +v 2.857422 0.000000 -10.125001 +v 3.265625 0.000000 -10.125001 +v 3.673828 0.000000 -10.125001 +v 4.082031 0.000000 -10.125000 +v 4.490235 0.000000 -10.125002 +v 4.898438 0.000000 -10.125002 +v 5.306641 0.000000 -10.125001 +v 5.714844 0.000000 -10.125001 +v 6.123047 0.000000 -10.125001 +v 0.414063 0.000000 -10.500000 +v 0.828125 0.000000 -10.500002 +v 1.242188 0.000000 -10.500002 +v 1.656250 0.000000 -10.500000 +v 2.070313 0.000000 -10.500002 +v 2.484375 0.000000 -10.500001 +v 2.898438 0.000000 -10.500001 +v 3.312500 0.000000 -10.500001 +v 3.726563 0.000000 -10.500002 +v 4.140625 0.000000 -10.500001 +v 4.554688 0.000000 -10.500001 +v 4.968750 0.000000 -10.500000 +v 5.382813 0.000000 -10.500000 +v 5.796875 0.000000 -10.500000 +v 6.210938 0.000000 -10.500002 +v 0.419922 0.000000 -10.875001 +v 0.839844 0.000000 -10.875000 +v 1.259766 0.000000 -10.875001 +v 1.679688 0.000000 -10.875000 +v 2.099610 0.000000 -10.875001 +v 2.519531 0.000000 -10.875001 +v 2.939453 0.000000 -10.875000 +v 3.359375 0.000000 -10.875000 +v 3.779297 0.000000 -10.875001 +v 4.199219 0.000000 -10.875000 +v 4.619141 0.000000 -10.875001 +v 5.039063 0.000000 -10.875002 +v 5.458985 0.000000 -10.875002 +v 5.878906 0.000000 -10.875000 +v 6.298829 0.000000 -10.875000 +v 0.425781 0.000000 -11.250001 +v 0.851563 0.000000 -11.250001 +v 1.277344 0.000000 -11.250000 +v 1.703125 0.000000 -11.250001 +v 2.128906 0.000000 -11.250001 +v 2.554688 0.000000 -11.250001 +v 2.980469 0.000000 -11.250001 +v 3.406250 0.000000 -11.250002 +v 3.832032 0.000000 -11.250001 +v 4.257812 0.000000 -11.250000 +v 4.683594 0.000000 -11.250000 +v 5.109375 0.000000 -11.250001 +v 5.535156 0.000000 -11.250001 +v 5.960938 0.000000 -11.250000 +v 6.386719 0.000000 -11.250000 +v 0.431641 0.000000 -11.625000 +v 0.863281 0.000000 -11.625001 +v 1.294922 0.000000 -11.625001 +v 1.726563 0.000000 -11.625001 +v 2.158203 0.000000 -11.625001 +v 2.589844 0.000000 -11.625000 +v 3.021485 0.000000 -11.625001 +v 3.453125 0.000000 -11.625001 +v 3.884766 0.000000 -11.625000 +v 4.316407 0.000000 -11.625000 +v 4.748047 0.000000 -11.625001 +v 5.179688 0.000000 -11.625001 +v 5.611328 0.000000 -11.625001 +v 6.042969 0.000000 -11.625000 +v 6.474610 0.000000 -11.625000 +v 5.642578 0.000000 -6.322266 +v 5.691407 0.000000 -6.269532 +v 5.740235 0.000000 -6.216797 +v 5.789063 0.000000 -6.164063 +v 5.837891 0.000000 -6.111329 +v 5.886719 0.000000 -6.058594 +v 5.935547 0.000000 -6.005860 +v 5.984375 0.000000 -5.953126 +v 6.033204 0.000000 -5.900391 +v 6.082031 0.000000 -5.847656 +v 6.130859 0.000000 -5.794922 +v 6.179688 0.000000 -5.742188 +v 6.228516 0.000000 -5.689453 +v 6.277344 0.000000 -5.636719 +v 6.326172 0.000000 -5.583984 +v 5.753907 0.000000 -6.675782 +v 5.820313 0.000000 -6.601563 +v 5.886719 0.000000 -6.527344 +v 5.953125 0.000000 -6.453125 +v 6.019532 0.000000 -6.378906 +v 6.085938 0.000000 -6.304688 +v 6.152344 0.000000 -6.230469 +v 6.218751 0.000000 -6.156250 +v 6.285156 0.000000 -6.082032 +v 6.351562 0.000000 -6.007813 +v 6.417970 0.000000 -5.933594 +v 6.484375 0.000000 -5.859375 +v 6.550781 0.000000 -5.785157 +v 6.617188 0.000000 -5.710938 +v 6.683594 0.000000 -5.636719 +v 5.865235 0.000000 -7.029297 +v 5.949219 0.000000 -6.933594 +v 6.033204 0.000000 -6.837892 +v 6.117188 0.000000 -6.742188 +v 6.201173 0.000000 -6.646485 +v 6.285157 0.000000 -6.550782 +v 6.369141 0.000000 -6.455078 +v 6.453126 0.000000 -6.359375 +v 6.537109 0.000000 -6.263672 +v 6.621094 0.000000 -6.167969 +v 6.705079 0.000000 -6.072266 +v 6.789062 0.000000 -5.976562 +v 6.873048 0.000000 -5.880860 +v 6.957031 0.000000 -5.785156 +v 7.041017 0.000000 -5.689453 +v 5.976563 0.000000 -7.382813 +v 6.078125 0.000000 -7.265625 +v 6.179688 0.000000 -7.148438 +v 6.281250 0.000000 -7.031250 +v 6.382813 0.000000 -6.914063 +v 6.484375 0.000000 -6.796875 +v 6.585938 0.000000 -6.679688 +v 6.687500 0.000000 -6.562500 +v 6.789063 0.000000 -6.445313 +v 6.890625 0.000000 -6.328125 +v 6.992188 0.000000 -6.210938 +v 7.093750 0.000000 -6.093750 +v 7.195313 0.000000 -5.976562 +v 7.296875 0.000000 -5.859375 +v 7.398438 0.000000 -5.742188 +v 6.087891 0.000000 -7.736329 +v 6.207033 0.000000 -7.597657 +v 6.326172 0.000000 -7.458985 +v 6.445313 0.000000 -7.320313 +v 6.564454 0.000000 -7.181642 +v 6.683594 0.000000 -7.042969 +v 6.802735 0.000000 -6.904297 +v 6.921875 0.000000 -6.765625 +v 7.041016 0.000000 -6.626954 +v 7.160156 0.000000 -6.488281 +v 7.279297 0.000000 -6.349609 +v 7.398438 0.000000 -6.210938 +v 7.517579 0.000000 -6.072266 +v 7.636719 0.000000 -5.933594 +v 7.755860 0.000000 -5.794922 +v 6.199219 0.000000 -8.089844 +v 6.335938 0.000000 -7.929688 +v 6.472657 0.000000 -7.769532 +v 6.609376 0.000000 -7.609375 +v 6.746094 0.000000 -7.449219 +v 6.882813 0.000000 -7.289062 +v 7.019532 0.000000 -7.128907 +v 7.156250 0.000000 -6.968750 +v 7.292969 0.000000 -6.808594 +v 7.429688 0.000000 -6.648438 +v 7.566407 0.000000 -6.488281 +v 7.703126 0.000000 -6.328125 +v 7.839845 0.000000 -6.167969 +v 7.976563 0.000000 -6.007812 +v 8.113281 0.000000 -5.847656 +v 6.310547 0.000000 -8.443359 +v 6.464844 0.000000 -8.261719 +v 6.619141 0.000000 -8.080078 +v 6.773438 0.000000 -7.898438 +v 6.927735 0.000000 -7.716797 +v 7.082032 0.000000 -7.535156 +v 7.236329 0.000000 -7.353516 +v 7.390625 0.000000 -7.171875 +v 7.544923 0.000000 -6.990234 +v 7.699219 0.000000 -6.808594 +v 7.853516 0.000000 -6.626953 +v 8.007812 0.000000 -6.445312 +v 8.162110 0.000000 -6.263672 +v 8.316407 0.000000 -6.082031 +v 8.470703 0.000000 -5.900390 +v 6.421875 0.000000 -8.796875 +v 6.593751 0.000000 -8.593751 +v 6.765625 0.000000 -8.390625 +v 6.937500 0.000000 -8.187500 +v 7.109376 0.000000 -7.984375 +v 7.281250 0.000000 -7.781250 +v 7.453125 0.000000 -7.578125 +v 7.625000 0.000000 -7.375000 +v 7.796875 0.000000 -7.171875 +v 7.968751 0.000000 -6.968750 +v 8.140626 0.000000 -6.765625 +v 8.312501 0.000000 -6.562500 +v 8.484375 0.000000 -6.359375 +v 8.656252 0.000000 -6.156250 +v 8.828126 0.000000 -5.953124 +v 6.533203 0.000000 -9.150392 +v 6.722657 0.000000 -8.925781 +v 6.912110 0.000000 -8.701173 +v 7.101562 0.000000 -8.476563 +v 7.291016 0.000000 -8.251953 +v 7.480469 0.000000 -8.027344 +v 7.669922 0.000000 -7.802734 +v 7.859375 0.000000 -7.578125 +v 8.048828 0.000000 -7.353516 +v 8.238281 0.000000 -7.128906 +v 8.427735 0.000000 -6.904297 +v 8.617189 0.000000 -6.679688 +v 8.806641 0.000000 -6.455078 +v 8.996095 0.000000 -6.230468 +v 9.185547 0.000000 -6.005859 +v 6.644531 0.000000 -9.503906 +v 6.851563 0.000000 -9.257812 +v 7.058595 0.000000 -9.011719 +v 7.265626 0.000000 -8.765625 +v 7.472656 0.000000 -8.519531 +v 7.679688 0.000000 -8.273438 +v 7.886720 0.000000 -8.027344 +v 8.093750 0.000000 -7.781250 +v 8.300782 0.000000 -7.535156 +v 8.507812 0.000000 -7.289062 +v 8.714844 0.000000 -7.042969 +v 8.921876 0.000000 -6.796875 +v 9.128906 0.000000 -6.550781 +v 9.335938 0.000000 -6.304687 +v 9.542969 0.000000 -6.058593 +v 6.755860 0.000000 -9.857423 +v 6.980470 0.000000 -9.589845 +v 7.205079 0.000000 -9.322267 +v 7.429688 0.000000 -9.054688 +v 7.654298 0.000000 -8.787110 +v 7.878907 0.000000 -8.519531 +v 8.103517 0.000000 -8.251953 +v 8.328126 0.000000 -7.984375 +v 8.552735 0.000000 -7.716797 +v 8.777344 0.000000 -7.449219 +v 9.001954 0.000000 -7.181641 +v 9.226563 0.000000 -6.914062 +v 9.451173 0.000000 -6.646484 +v 9.675782 0.000000 -6.378905 +v 9.900392 0.000000 -6.111328 +v 6.867188 0.000000 -10.210938 +v 7.109375 0.000000 -9.921876 +v 7.351563 0.000000 -9.632813 +v 7.593750 0.000000 -9.343750 +v 7.835938 0.000000 -9.054688 +v 8.078126 0.000000 -8.765625 +v 8.320313 0.000000 -8.476563 +v 8.562501 0.000000 -8.187500 +v 8.804688 0.000000 -7.898437 +v 9.046876 0.000000 -7.609375 +v 9.289064 0.000000 -7.320312 +v 9.531250 0.000000 -7.031250 +v 9.773438 0.000000 -6.742187 +v 10.015625 0.000000 -6.453125 +v 10.257813 0.000000 -6.164062 +v 6.978516 0.000000 -10.564454 +v 7.238282 0.000000 -10.253906 +v 7.498048 0.000000 -9.943360 +v 7.757813 0.000000 -9.632812 +v 8.017578 0.000000 -9.322266 +v 8.277345 0.000000 -9.011719 +v 8.537109 0.000000 -8.701172 +v 8.796875 0.000000 -8.390625 +v 9.056642 0.000000 -8.080078 +v 9.316406 0.000000 -7.769531 +v 9.576173 0.000000 -7.458984 +v 9.835939 0.000000 -7.148438 +v 10.095705 0.000000 -6.837890 +v 10.355469 0.000000 -6.527343 +v 10.615234 0.000000 -6.216796 +v 7.089844 0.000000 -10.917969 +v 7.367188 0.000000 -10.585938 +v 7.644531 0.000000 -10.253906 +v 7.921875 0.000000 -9.921875 +v 8.199220 0.000000 -9.589844 +v 8.476562 0.000000 -9.257812 +v 8.753906 0.000000 -8.925781 +v 9.031252 0.000000 -8.593750 +v 9.308594 0.000000 -8.261719 +v 9.585938 0.000000 -7.929687 +v 9.863281 0.000000 -7.597655 +v 10.140626 0.000000 -7.265625 +v 10.417969 0.000000 -6.933593 +v 10.695313 0.000000 -6.601562 +v 10.972656 0.000000 -6.269530 +v 7.201172 0.000000 -11.271485 +v 7.496094 0.000000 -10.917969 +v 7.791016 0.000000 -10.564453 +v 8.085938 0.000000 -10.210938 +v 8.380860 0.000000 -9.857422 +v 8.675781 0.000000 -9.503906 +v 8.970704 0.000000 -9.150392 +v 9.265626 0.000000 -8.796875 +v 9.560547 0.000000 -8.443358 +v 9.855469 0.000000 -8.089843 +v 10.150392 0.000000 -7.736328 +v 10.445313 0.000000 -7.382812 +v 10.740234 0.000000 -7.029296 +v 11.035156 0.000000 -6.675780 +v 11.330078 0.000000 -6.322265 +v -0.349609 0.000000 -6.375000 +v -0.355469 0.000000 -6.750001 +v -0.361328 0.000000 -7.125000 +v -0.367188 0.000000 -7.500000 +v -0.373047 0.000000 -7.875001 +v -0.378906 0.000000 -8.250001 +v -0.384766 0.000000 -8.625000 +v -0.390625 0.000000 -9.000000 +v -0.396484 0.000000 -9.375000 +v -0.402344 0.000000 -9.750001 +v -0.408203 0.000000 -10.125001 +v -0.414063 0.000000 -10.500000 +v -0.419922 0.000000 -10.875001 +v -0.425781 0.000000 -11.250000 +v -0.431641 0.000000 -11.625000 +v -0.699219 0.000000 -6.375000 +v -0.710938 0.000000 -6.750001 +v -0.722656 0.000000 -7.125001 +v -0.734375 0.000000 -7.500000 +v -0.746094 0.000000 -7.875001 +v -0.757813 0.000000 -8.250001 +v -0.769531 0.000000 -8.625001 +v -0.781250 0.000000 -9.000002 +v -0.792969 0.000000 -9.375001 +v -0.804688 0.000000 -9.750001 +v -0.816406 0.000000 -10.125001 +v -0.828125 0.000000 -10.500001 +v -0.839844 0.000000 -10.875001 +v -0.851562 0.000000 -11.250001 +v -0.863281 0.000000 -11.625001 +v -1.048828 0.000000 -6.375001 +v -1.066406 0.000000 -6.750000 +v -1.083985 0.000000 -7.125001 +v -1.101563 0.000000 -7.500000 +v -1.119141 0.000000 -7.875000 +v -1.136719 0.000000 -8.250001 +v -1.154297 0.000000 -8.625001 +v -1.171875 0.000000 -9.000001 +v -1.189453 0.000000 -9.375001 +v -1.207031 0.000000 -9.750001 +v -1.224610 0.000000 -10.125001 +v -1.242188 0.000000 -10.500000 +v -1.259766 0.000000 -10.875001 +v -1.277344 0.000000 -11.250001 +v -1.294922 0.000000 -11.625000 +v -1.398438 0.000000 -6.375000 +v -1.421875 0.000000 -6.750000 +v -1.445313 0.000000 -7.125001 +v -1.468750 0.000000 -7.500000 +v -1.492188 0.000000 -7.875000 +v -1.515625 0.000000 -8.250000 +v -1.539063 0.000000 -8.625001 +v -1.562500 0.000000 -9.000001 +v -1.585938 0.000000 -9.375000 +v -1.609375 0.000000 -9.750001 +v -1.632813 0.000000 -10.125000 +v -1.656250 0.000000 -10.500000 +v -1.679688 0.000000 -10.875000 +v -1.703125 0.000000 -11.250000 +v -1.726563 0.000000 -11.625000 +v -1.748047 0.000000 -6.375000 +v -1.777344 0.000000 -6.750001 +v -1.806641 0.000000 -7.125001 +v -1.835938 0.000000 -7.500000 +v -1.865235 0.000000 -7.875001 +v -1.894531 0.000000 -8.250001 +v -1.923828 0.000000 -8.625001 +v -1.953125 0.000000 -9.000002 +v -1.982422 0.000000 -9.375000 +v -2.011719 0.000000 -9.750001 +v -2.041016 0.000000 -10.125001 +v -2.070313 0.000000 -10.500002 +v -2.099610 0.000000 -10.875002 +v -2.128906 0.000000 -11.250002 +v -2.158203 0.000000 -11.625002 +v -2.097656 0.000000 -6.375000 +v -2.132813 0.000000 -6.750000 +v -2.167969 0.000000 -7.125000 +v -2.203125 0.000000 -7.500001 +v -2.238281 0.000000 -7.875001 +v -2.273438 0.000000 -8.250001 +v -2.308594 0.000000 -8.625001 +v -2.343750 0.000000 -9.000000 +v -2.378906 0.000000 -9.375001 +v -2.414063 0.000000 -9.750001 +v -2.449219 0.000000 -10.125001 +v -2.484375 0.000000 -10.500001 +v -2.519531 0.000000 -10.875000 +v -2.554688 0.000000 -11.250002 +v -2.589844 0.000000 -11.625000 +v -2.447266 0.000000 -6.375000 +v -2.488281 0.000000 -6.750001 +v -2.529297 0.000000 -7.125001 +v -2.570313 0.000000 -7.500000 +v -2.611328 0.000000 -7.875000 +v -2.652344 0.000000 -8.250001 +v -2.693360 0.000000 -8.625001 +v -2.734375 0.000000 -9.000001 +v -2.775391 0.000000 -9.375001 +v -2.816407 0.000000 -9.750001 +v -2.857422 0.000000 -10.125000 +v -2.898438 0.000000 -10.500000 +v -2.939453 0.000000 -10.875000 +v -2.980469 0.000000 -11.250001 +v -3.021485 0.000000 -11.625000 +v -2.796875 0.000000 -6.375000 +v -2.843750 0.000000 -6.750001 +v -2.890625 0.000000 -7.125001 +v -2.937500 0.000000 -7.500001 +v -2.984375 0.000000 -7.875001 +v -3.031250 0.000000 -8.250002 +v -3.078125 0.000000 -8.625001 +v -3.125000 0.000000 -9.000002 +v -3.171875 0.000000 -9.375001 +v -3.218750 0.000000 -9.750002 +v -3.265625 0.000000 -10.125002 +v -3.312500 0.000000 -10.500001 +v -3.359375 0.000000 -10.875001 +v -3.406250 0.000000 -11.250002 +v -3.453125 0.000000 -11.625001 +v -3.146484 0.000000 -6.375000 +v -3.199219 0.000000 -6.750000 +v -3.251953 0.000000 -7.125000 +v -3.304688 0.000000 -7.500001 +v -3.357422 0.000000 -7.875001 +v -3.410156 0.000000 -8.250001 +v -3.462891 0.000000 -8.625002 +v -3.515625 0.000000 -9.000002 +v -3.568360 0.000000 -9.375002 +v -3.621094 0.000000 -9.750001 +v -3.673828 0.000000 -10.125001 +v -3.726563 0.000000 -10.500000 +v -3.779297 0.000000 -10.875000 +v -3.832031 0.000000 -11.250001 +v -3.884766 0.000000 -11.625000 +v -3.496094 0.000000 -6.375000 +v -3.554688 0.000000 -6.750001 +v -3.613281 0.000000 -7.125001 +v -3.671875 0.000000 -7.500000 +v -3.730469 0.000000 -7.875001 +v -3.789063 0.000000 -8.250001 +v -3.847657 0.000000 -8.625002 +v -3.906250 0.000000 -9.000002 +v -3.964844 0.000000 -9.375002 +v -4.023438 0.000000 -9.750002 +v -4.082032 0.000000 -10.125001 +v -4.140625 0.000000 -10.500000 +v -4.199219 0.000000 -10.875002 +v -4.257813 0.000000 -11.250002 +v -4.316407 0.000000 -11.625001 +v -3.845703 0.000000 -6.375000 +v -3.910156 0.000000 -6.750000 +v -3.974610 0.000000 -7.125001 +v -4.039062 0.000000 -7.500001 +v -4.103516 0.000000 -7.875001 +v -4.167969 0.000000 -8.250002 +v -4.232422 0.000000 -8.625001 +v -4.296875 0.000000 -9.000002 +v -4.361328 0.000000 -9.375001 +v -4.425782 0.000000 -9.750001 +v -4.490235 0.000000 -10.125001 +v -4.554688 0.000000 -10.500002 +v -4.619141 0.000000 -10.875002 +v -4.683594 0.000000 -11.250000 +v -4.748047 0.000000 -11.625002 +v -4.195312 0.000000 -6.375000 +v -4.265625 0.000000 -6.750000 +v -4.335938 0.000000 -7.125001 +v -4.406250 0.000000 -7.500000 +v -4.476562 0.000000 -7.875001 +v -4.546875 0.000000 -8.250000 +v -4.617188 0.000000 -8.625001 +v -4.687500 0.000000 -9.000002 +v -4.757812 0.000000 -9.375001 +v -4.828125 0.000000 -9.750002 +v -4.898438 0.000000 -10.125001 +v -4.968750 0.000000 -10.500000 +v -5.039063 0.000000 -10.875002 +v -5.109375 0.000000 -11.250000 +v -5.179688 0.000000 -11.625000 +v -4.544922 0.000000 -6.375000 +v -4.621094 0.000000 -6.750001 +v -4.697266 0.000000 -7.125000 +v -4.773438 0.000000 -7.500001 +v -4.849609 0.000000 -7.875000 +v -4.925782 0.000000 -8.250002 +v -5.001953 0.000000 -8.625001 +v -5.078125 0.000000 -9.000001 +v -5.154297 0.000000 -9.375001 +v -5.230469 0.000000 -9.750000 +v -5.306641 0.000000 -10.125002 +v -5.382812 0.000000 -10.500000 +v -5.458984 0.000000 -10.875001 +v -5.535157 0.000000 -11.250002 +v -5.611328 0.000000 -11.625000 +v -4.894531 0.000000 -6.375000 +v -4.976563 0.000000 -6.750001 +v -5.058594 0.000000 -7.125001 +v -5.140625 0.000000 -7.500000 +v -5.222657 0.000000 -7.875000 +v -5.304688 0.000000 -8.250001 +v -5.386720 0.000000 -8.625002 +v -5.468750 0.000000 -9.000001 +v -5.550782 0.000000 -9.375001 +v -5.632813 0.000000 -9.750002 +v -5.714844 0.000000 -10.125002 +v -5.796875 0.000000 -10.500001 +v -5.878907 0.000000 -10.875001 +v -5.960938 0.000000 -11.250000 +v -6.042969 0.000000 -11.625001 +v -5.244141 0.000000 -6.375000 +v -5.332031 0.000000 -6.750000 +v -5.419922 0.000000 -7.125000 +v -5.507812 0.000000 -7.500000 +v -5.595703 0.000000 -7.875000 +v -5.683594 0.000000 -8.250000 +v -5.771484 0.000000 -8.625000 +v -5.859375 0.000000 -9.000001 +v -5.947266 0.000000 -9.375000 +v -6.035156 0.000000 -9.750000 +v -6.123047 0.000000 -10.125000 +v -6.210938 0.000000 -10.500000 +v -6.298828 0.000000 -10.875000 +v -6.386719 0.000000 -11.250000 +v -6.474609 0.000000 -11.625000 +v 11.625000 0.000000 0.373047 +v 11.250001 0.000000 0.371094 +v 10.875000 0.000000 0.369141 +v 10.500000 0.000000 0.367187 +v 10.125002 0.000000 0.365234 +v 9.750001 0.000000 0.363281 +v 9.375000 0.000000 0.361328 +v 9.000000 0.000000 0.359375 +v 8.625000 0.000000 0.357422 +v 8.250001 0.000000 0.355469 +v 7.875001 0.000000 0.353516 +v 7.500000 0.000000 0.351562 +v 7.125001 0.000000 0.349609 +v 6.750000 0.000000 0.347656 +v 6.375000 0.000000 0.345703 +v 11.625000 0.000000 0.746094 +v 11.250002 0.000000 0.742187 +v 10.875001 0.000000 0.738281 +v 10.500000 0.000000 0.734375 +v 10.125002 0.000000 0.730469 +v 9.750001 0.000000 0.726562 +v 9.375001 0.000000 0.722656 +v 9.000002 0.000000 0.718750 +v 8.625001 0.000000 0.714844 +v 8.250001 0.000000 0.710937 +v 7.875001 0.000000 0.707031 +v 7.500001 0.000000 0.703125 +v 7.125001 0.000000 0.699219 +v 6.750000 0.000000 0.695312 +v 6.375000 0.000000 0.691406 +v 11.625002 0.000000 1.119141 +v 11.250001 0.000000 1.113281 +v 10.875002 0.000000 1.107422 +v 10.500000 0.000000 1.101562 +v 10.125001 0.000000 1.095703 +v 9.750001 0.000000 1.089844 +v 9.375001 0.000000 1.083984 +v 9.000001 0.000000 1.078125 +v 8.625001 0.000000 1.072266 +v 8.250001 0.000000 1.066406 +v 7.875001 0.000000 1.060547 +v 7.500000 0.000000 1.054688 +v 7.125001 0.000000 1.048828 +v 6.750000 0.000000 1.042969 +v 6.375000 0.000000 1.037109 +v 11.625000 0.000000 1.492187 +v 11.250000 0.000000 1.484375 +v 10.875002 0.000000 1.476562 +v 10.500000 0.000000 1.468750 +v 10.125000 0.000000 1.460937 +v 9.750001 0.000000 1.453125 +v 9.375000 0.000000 1.445313 +v 9.000000 0.000000 1.437500 +v 8.625001 0.000000 1.429688 +v 8.250000 0.000000 1.421875 +v 7.875000 0.000000 1.414062 +v 7.500000 0.000000 1.406250 +v 7.125000 0.000000 1.398438 +v 6.750000 0.000000 1.390625 +v 6.375000 0.000000 1.382813 +v 11.625000 0.000000 1.865234 +v 11.250002 0.000000 1.855469 +v 10.875000 0.000000 1.845703 +v 10.500000 0.000000 1.835937 +v 10.125002 0.000000 1.826172 +v 9.750001 0.000000 1.816406 +v 9.375000 0.000000 1.806641 +v 9.000002 0.000000 1.796875 +v 8.625000 0.000000 1.787109 +v 8.250001 0.000000 1.777344 +v 7.875001 0.000000 1.767578 +v 7.500001 0.000000 1.757812 +v 7.125001 0.000000 1.748047 +v 6.750001 0.000000 1.738281 +v 6.375001 0.000000 1.728516 +v 11.625000 0.000000 2.238281 +v 11.250000 0.000000 2.226562 +v 10.875000 0.000000 2.214844 +v 10.500001 0.000000 2.203125 +v 10.125000 0.000000 2.191406 +v 9.750001 0.000000 2.179688 +v 9.375001 0.000000 2.167969 +v 9.000001 0.000000 2.156250 +v 8.625002 0.000000 2.144531 +v 8.250001 0.000000 2.132812 +v 7.875001 0.000000 2.121094 +v 7.500001 0.000000 2.109375 +v 7.125000 0.000000 2.097656 +v 6.750001 0.000000 2.085938 +v 6.375000 0.000000 2.074219 +v 11.625000 0.000000 2.611328 +v 11.250002 0.000000 2.597656 +v 10.875002 0.000000 2.583984 +v 10.500000 0.000000 2.570312 +v 10.125000 0.000000 2.556640 +v 9.750001 0.000000 2.542969 +v 9.375002 0.000000 2.529297 +v 9.000001 0.000000 2.515625 +v 8.625001 0.000000 2.501953 +v 8.250001 0.000000 2.488281 +v 7.875000 0.000000 2.474609 +v 7.500001 0.000000 2.460938 +v 7.125000 0.000000 2.447266 +v 6.750001 0.000000 2.433594 +v 6.375000 0.000000 2.419922 +v 11.625001 0.000000 2.984375 +v 11.250002 0.000000 2.968750 +v 10.875002 0.000000 2.953125 +v 10.500001 0.000000 2.937500 +v 10.125002 0.000000 2.921875 +v 9.750002 0.000000 2.906250 +v 9.375001 0.000000 2.890625 +v 9.000001 0.000000 2.875000 +v 8.625001 0.000000 2.859375 +v 8.250001 0.000000 2.843750 +v 7.875001 0.000000 2.828125 +v 7.500001 0.000000 2.812500 +v 7.125001 0.000000 2.796875 +v 6.750001 0.000000 2.781250 +v 6.375000 0.000000 2.765625 +v 11.625000 0.000000 3.357421 +v 11.250000 0.000000 3.339843 +v 10.875000 0.000000 3.322265 +v 10.500000 0.000000 3.304687 +v 10.125001 0.000000 3.287109 +v 9.750001 0.000000 3.269531 +v 9.375001 0.000000 3.251953 +v 9.000001 0.000000 3.234375 +v 8.625001 0.000000 3.216797 +v 8.250001 0.000000 3.199219 +v 7.875001 0.000000 3.181641 +v 7.500001 0.000000 3.164062 +v 7.125001 0.000000 3.146484 +v 6.750001 0.000000 3.128906 +v 6.375000 0.000000 3.111328 +v 11.625000 0.000000 3.730468 +v 11.250002 0.000000 3.710937 +v 10.875000 0.000000 3.691406 +v 10.500000 0.000000 3.671875 +v 10.125002 0.000000 3.652344 +v 9.750001 0.000000 3.632812 +v 9.375001 0.000000 3.613281 +v 9.000001 0.000000 3.593750 +v 8.625001 0.000000 3.574219 +v 8.250001 0.000000 3.554688 +v 7.875001 0.000000 3.535156 +v 7.500000 0.000000 3.515625 +v 7.125001 0.000000 3.496094 +v 6.750001 0.000000 3.476562 +v 6.375000 0.000000 3.457031 +v 11.625000 0.000000 4.103515 +v 11.250001 0.000000 4.082031 +v 10.875002 0.000000 4.060546 +v 10.500000 0.000000 4.039062 +v 10.125001 0.000000 4.017578 +v 9.750001 0.000000 3.996094 +v 9.375001 0.000000 3.974609 +v 9.000001 0.000000 3.953125 +v 8.625001 0.000000 3.931640 +v 8.250000 0.000000 3.910156 +v 7.875000 0.000000 3.888672 +v 7.500001 0.000000 3.867188 +v 7.125001 0.000000 3.845703 +v 6.750000 0.000000 3.824219 +v 6.375001 0.000000 3.802735 +v 11.625000 0.000000 4.476562 +v 11.250000 0.000000 4.453124 +v 10.875002 0.000000 4.429687 +v 10.500000 0.000000 4.406250 +v 10.125000 0.000000 4.382812 +v 9.750001 0.000000 4.359375 +v 9.375001 0.000000 4.335937 +v 9.000001 0.000000 4.312500 +v 8.625001 0.000000 4.289062 +v 8.250001 0.000000 4.265625 +v 7.875001 0.000000 4.242188 +v 7.500001 0.000000 4.218750 +v 7.125001 0.000000 4.195312 +v 6.750000 0.000000 4.171875 +v 6.375000 0.000000 4.148438 +v 11.625001 0.000000 4.849608 +v 11.250002 0.000000 4.824218 +v 10.875000 0.000000 4.798827 +v 10.500001 0.000000 4.773437 +v 10.125000 0.000000 4.748046 +v 9.750002 0.000000 4.722656 +v 9.375001 0.000000 4.697266 +v 9.000001 0.000000 4.671875 +v 8.625001 0.000000 4.646484 +v 8.250001 0.000000 4.621094 +v 7.875001 0.000000 4.595703 +v 7.500000 0.000000 4.570312 +v 7.125000 0.000000 4.544922 +v 6.750000 0.000000 4.519531 +v 6.375000 0.000000 4.494141 +v 11.625000 0.000000 5.222655 +v 11.250002 0.000000 5.195312 +v 10.875001 0.000000 5.167968 +v 10.500000 0.000000 5.140624 +v 10.125001 0.000000 5.113281 +v 9.750001 0.000000 5.085937 +v 9.375002 0.000000 5.058594 +v 9.000001 0.000000 5.031250 +v 8.625001 0.000000 5.003906 +v 8.250002 0.000000 4.976562 +v 7.875001 0.000000 4.949219 +v 7.500001 0.000000 4.921875 +v 7.125001 0.000000 4.894531 +v 6.750000 0.000000 4.867188 +v 6.375000 0.000000 4.839844 +v 11.625000 0.000000 5.595702 +v 11.250000 0.000000 5.566405 +v 10.875000 0.000000 5.537108 +v 10.500000 0.000000 5.507812 +v 10.125000 0.000000 5.478515 +v 9.750000 0.000000 5.449218 +v 9.375000 0.000000 5.419921 +v 9.000001 0.000000 5.390625 +v 8.625000 0.000000 5.361328 +v 8.250000 0.000000 5.332031 +v 7.875000 0.000000 5.302734 +v 7.500000 0.000000 5.273438 +v 7.125000 0.000000 5.244141 +v 6.750000 0.000000 5.214844 +v 6.375000 0.000000 5.185547 +v 10.333334 0.000000 -10.000000 +v 11.699845 0.000000 -6.720375 +v 11.709657 0.000000 -7.066671 +v 11.717774 0.000000 -7.413500 +v 11.725040 0.000000 -7.760476 +v 11.732314 0.000000 -8.107212 +v 11.740472 0.000000 -8.453323 +v 11.750422 0.000000 -8.798421 +v 11.763133 0.000000 -9.142120 +v 11.401450 0.000000 -7.066671 +v 11.423361 0.000000 -7.383934 +v 11.442065 0.000000 -7.701385 +v 11.458931 0.000000 -8.018624 +v 11.475363 0.000000 -8.335251 +v 11.492844 0.000000 -8.650866 +v 11.512976 0.000000 -8.965064 +v 11.537584 0.000000 -9.277449 +v 11.104310 0.000000 -7.413500 +v 11.140113 0.000000 -7.701385 +v 11.171461 0.000000 -7.988494 +v 11.199948 0.000000 -8.274674 +v 11.227259 0.000000 -8.559763 +v 11.255201 0.000000 -8.843609 +v 11.285847 0.000000 -9.126052 +v 11.321774 0.000000 -9.406936 +v 10.807896 0.000000 -7.760476 +v 10.858882 0.000000 -8.018624 +v 10.904490 0.000000 -8.274673 +v 10.946311 0.000000 -8.528855 +v 10.986042 0.000000 -8.781402 +v 11.025580 0.000000 -9.032542 +v 11.067217 0.000000 -9.282508 +v 11.114116 0.000000 -9.531530 +v 10.511674 0.000000 -8.107213 +v 10.578592 0.000000 -8.335252 +v 10.639606 0.000000 -8.559765 +v 10.696123 0.000000 -8.781402 +v 10.749661 0.000000 -9.000813 +v 10.801959 0.000000 -9.218648 +v 10.855237 0.000000 -9.435555 +v 10.913027 0.000000 -9.652185 +v 10.215093 0.000000 -8.453323 +v 10.298101 0.000000 -8.650865 +v 10.375125 0.000000 -8.843610 +v 10.447299 0.000000 -9.032542 +v 10.515837 0.000000 -9.218647 +v 10.582122 0.000000 -9.402910 +v 10.648000 0.000000 -9.586315 +v 10.716922 0.000000 -9.769848 +v 9.917561 0.000000 -8.798420 +v 10.016138 0.000000 -8.965064 +v 10.109107 0.000000 -9.126053 +v 10.197359 0.000000 -9.282508 +v 10.281801 0.000000 -9.435555 +v 10.363407 0.000000 -9.586315 +v 10.443371 0.000000 -9.735914 +v 10.524220 0.000000 -9.885469 +v 11.699845 0.000000 -11.639812 +v 11.401450 0.000000 -11.651587 +v 11.104309 0.000000 -11.661327 +v 10.807894 0.000000 -11.670049 +v 10.511675 0.000000 -11.678778 +v 10.215092 0.000000 -11.688566 +v 9.917562 0.000000 -11.700507 +v 9.618434 0.000000 -11.715758 +v 11.709657 0.000000 -11.281740 +v 11.423361 0.000000 -11.308033 +v 11.140113 0.000000 -11.330479 +v 10.858881 0.000000 -11.350716 +v 10.578593 0.000000 -11.370437 +v 10.298101 0.000000 -11.391414 +v 10.016137 0.000000 -11.415569 +v 9.731207 0.000000 -11.445102 +v 11.717774 0.000000 -10.925169 +v 11.442066 0.000000 -10.968136 +v 11.171460 0.000000 -11.005752 +v 10.904490 0.000000 -11.039938 +v 10.639606 0.000000 -11.072707 +v 10.375125 0.000000 -11.106239 +v 10.109109 0.000000 -11.143017 +v 9.839113 0.000000 -11.186129 +v 11.725041 0.000000 -10.569474 +v 11.458931 0.000000 -10.630658 +v 11.199950 0.000000 -10.685386 +v 10.946310 0.000000 -10.735572 +v 10.696123 0.000000 -10.783251 +v 10.447298 0.000000 -10.830699 +v 10.197359 0.000000 -10.880661 +v 9.942943 0.000000 -10.936938 +v 11.732315 0.000000 -10.214009 +v 11.475364 0.000000 -10.294312 +v 11.227257 0.000000 -10.367525 +v 10.986044 0.000000 -10.435346 +v 10.749661 0.000000 -10.499593 +v 10.515836 0.000000 -10.562349 +v 10.281801 0.000000 -10.626284 +v 10.043488 0.000000 -10.695631 +v 11.740471 0.000000 -9.858110 +v 11.492844 0.000000 -9.957722 +v 11.255199 0.000000 -10.050149 +v 11.025583 0.000000 -10.136758 +v 10.801958 0.000000 -10.219003 +v 10.582121 0.000000 -10.298545 +v 10.363406 0.000000 -10.377598 +v 10.141541 0.000000 -10.460305 +v 11.750422 0.000000 -9.501071 +v 11.512976 0.000000 -9.619365 +v 11.285849 0.000000 -9.730930 +v 11.067219 0.000000 -9.836831 +v 10.855237 0.000000 -9.938160 +v 10.648000 0.000000 -10.036086 +v 10.443371 0.000000 -10.132044 +v 10.237891 0.000000 -10.229062 +v 7.600313 0.000000 -11.639812 +v 7.888894 0.000000 -11.281740 +v 8.177918 0.000000 -10.925170 +v 8.467063 0.000000 -10.569473 +v 8.756011 0.000000 -10.214010 +v 9.044436 0.000000 -9.858111 +v 9.332019 0.000000 -9.501072 +v 9.618434 0.000000 -9.142120 +v 7.888894 0.000000 -11.651587 +v 8.153278 0.000000 -11.308033 +v 8.417821 0.000000 -10.968136 +v 8.682186 0.000000 -10.630657 +v 8.946044 0.000000 -10.294312 +v 9.209055 0.000000 -9.957723 +v 9.470887 0.000000 -9.619364 +v 9.731208 0.000000 -9.277449 +v 8.177917 0.000000 -11.661328 +v 8.417821 0.000000 -11.330480 +v 8.657080 0.000000 -11.005752 +v 8.895562 0.000000 -10.685387 +v 9.133138 0.000000 -10.367526 +v 9.369676 0.000000 -10.050150 +v 9.605044 0.000000 -9.730930 +v 9.839113 0.000000 -9.406936 +v 8.467064 0.000000 -11.670050 +v 8.682187 0.000000 -11.350718 +v 8.895561 0.000000 -11.039938 +v 9.107382 0.000000 -10.735572 +v 9.317835 0.000000 -10.435347 +v 9.527118 0.000000 -10.136759 +v 9.735424 0.000000 -9.836831 +v 9.942944 0.000000 -9.531530 +v 8.756011 0.000000 -11.678778 +v 8.946043 0.000000 -11.370436 +v 9.133138 0.000000 -11.072708 +v 9.317836 0.000000 -10.783250 +v 9.500679 0.000000 -10.499593 +v 9.682207 0.000000 -10.219003 +v 9.862963 0.000000 -9.938161 +v 10.043488 0.000000 -9.652185 +v 9.044436 0.000000 -11.688565 +v 9.209054 0.000000 -11.391413 +v 9.369675 0.000000 -11.106240 +v 9.527119 0.000000 -10.830699 +v 9.682206 0.000000 -10.562349 +v 9.835758 0.000000 -10.298545 +v 9.988597 0.000000 -10.036087 +v 10.141541 0.000000 -9.769848 +v 9.332018 0.000000 -11.700507 +v 9.470887 0.000000 -11.415570 +v 9.605043 0.000000 -11.143017 +v 9.735423 0.000000 -10.880661 +v 9.862963 0.000000 -10.626284 +v 9.988597 0.000000 -10.377598 +v 10.113261 0.000000 -10.132045 +v 10.237892 0.000000 -9.885469 +vn -0.0000 1.0000 -0.0000 +vt 6.312500 0.686523 +vt 6.312501 0.873047 +vt 6.125000 0.871094 +vt 6.125001 0.685547 +vt 6.312500 1.059570 +vt 6.125001 1.056641 +vt 6.312500 1.246094 +vt 6.125001 1.242188 +vt 6.312500 1.432617 +vt 6.125000 1.427734 +vt 6.312500 1.619141 +vt 6.125000 1.613281 +vt 6.312500 1.805664 +vt 6.125001 1.798828 +vt 6.312500 1.992188 +vt 6.125001 1.984375 +vt 6.312500 2.178711 +vt 6.125000 2.169922 +vt 6.312500 2.365234 +vt 6.125000 2.355469 +vt 6.312500 2.551758 +vt 6.125000 2.541016 +vt 6.312500 2.738281 +vt 6.125000 2.726563 +vt 6.312500 2.924805 +vt 6.125000 2.912110 +vt 6.312500 3.111329 +vt 6.125000 3.097656 +vt 6.312500 3.297852 +vt 6.125000 3.283203 +vt 5.937501 0.869141 +vt 5.937501 0.684570 +vt 5.937501 1.053711 +vt 5.937501 1.238281 +vt 5.937500 1.422852 +vt 5.937500 1.607422 +vt 5.937500 1.791992 +vt 5.937500 1.976562 +vt 5.937500 2.161133 +vt 5.937500 2.345703 +vt 5.937500 2.530273 +vt 5.937500 2.714844 +vt 5.937500 2.899415 +vt 5.937500 3.083985 +vt 5.937500 3.268555 +vt 5.750000 0.867188 +vt 5.750000 0.683594 +vt 5.750000 1.050781 +vt 5.750000 1.234375 +vt 5.750001 1.417969 +vt 5.750000 1.601563 +vt 5.750000 1.785156 +vt 5.750000 1.968750 +vt 5.750000 2.152344 +vt 5.750000 2.335938 +vt 5.750000 2.519532 +vt 5.750000 2.703125 +vt 5.750000 2.886719 +vt 5.750000 3.070313 +vt 5.750000 3.253906 +vt 5.562500 0.865234 +vt 5.562501 0.682617 +vt 5.562501 1.047852 +vt 5.562501 1.230469 +vt 5.562500 1.413086 +vt 5.562500 1.595703 +vt 5.562501 1.778320 +vt 5.562500 1.960938 +vt 5.562501 2.143555 +vt 5.562500 2.326172 +vt 5.562501 2.508789 +vt 5.562500 2.691407 +vt 5.562500 2.874024 +vt 5.562500 3.056641 +vt 5.562500 3.239258 +vt 5.375000 0.863281 +vt 5.375001 0.681641 +vt 5.375000 1.044922 +vt 5.375001 1.226563 +vt 5.375000 1.408203 +vt 5.375000 1.589844 +vt 5.375000 1.771484 +vt 5.375000 1.953125 +vt 5.375000 2.134766 +vt 5.375000 2.316406 +vt 5.375000 2.498047 +vt 5.375000 2.679688 +vt 5.375000 2.861328 +vt 5.375000 3.042969 +vt 5.375000 3.224609 +vt 5.187500 0.861328 +vt 5.187501 0.680664 +vt 5.187500 1.041992 +vt 5.187500 1.222656 +vt 5.187500 1.403320 +vt 5.187500 1.583984 +vt 5.187500 1.764649 +vt 5.187500 1.945313 +vt 5.187500 2.125977 +vt 5.187500 2.306641 +vt 5.187500 2.487305 +vt 5.187500 2.667969 +vt 5.187500 2.848633 +vt 5.187500 3.029297 +vt 5.187500 3.209961 +vt 5.000000 0.859375 +vt 5.000001 0.679688 +vt 5.000001 1.039063 +vt 5.000001 1.218750 +vt 5.000000 1.398438 +vt 5.000000 1.578125 +vt 5.000000 1.757813 +vt 5.000000 1.937500 +vt 5.000000 2.117188 +vt 5.000000 2.296875 +vt 5.000000 2.476562 +vt 5.000000 2.656250 +vt 5.000000 2.835938 +vt 5.000000 3.015625 +vt 5.000000 3.195313 +vt 4.812501 0.857422 +vt 4.812500 0.678711 +vt 4.812500 1.036133 +vt 4.812500 1.214844 +vt 4.812500 1.393555 +vt 4.812500 1.572266 +vt 4.812500 1.750977 +vt 4.812500 1.929688 +vt 4.812500 2.108398 +vt 4.812500 2.287109 +vt 4.812500 2.465821 +vt 4.812500 2.644531 +vt 4.812500 2.823242 +vt 4.812500 3.001953 +vt 4.812500 3.180664 +vt 4.625001 0.855469 +vt 4.625000 0.677734 +vt 4.625000 1.033203 +vt 4.625001 1.210938 +vt 4.625000 1.388672 +vt 4.625000 1.566406 +vt 4.625000 1.744141 +vt 4.625000 1.921875 +vt 4.625000 2.099609 +vt 4.625000 2.277344 +vt 4.625000 2.455078 +vt 4.625001 2.632813 +vt 4.625000 2.810547 +vt 4.625000 2.988281 +vt 4.625000 3.166016 +vt 4.437500 0.853516 +vt 4.437501 0.676758 +vt 4.437500 1.030274 +vt 4.437501 1.207031 +vt 4.437501 1.383789 +vt 4.437500 1.560547 +vt 4.437500 1.737305 +vt 4.437500 1.914063 +vt 4.437501 2.090821 +vt 4.437500 2.267578 +vt 4.437501 2.444336 +vt 4.437500 2.621094 +vt 4.437500 2.797852 +vt 4.437500 2.974609 +vt 4.437500 3.151367 +vt 4.250001 0.851563 +vt 4.250001 0.675781 +vt 4.250001 1.027344 +vt 4.250000 1.203125 +vt 4.250001 1.378906 +vt 4.250000 1.554688 +vt 4.250001 1.730469 +vt 4.250001 1.906250 +vt 4.250000 2.082031 +vt 4.250000 2.257813 +vt 4.250001 2.433594 +vt 4.250000 2.609375 +vt 4.250000 2.785156 +vt 4.250000 2.960938 +vt 4.250001 3.136719 +vt 4.062501 0.849609 +vt 4.062500 0.674805 +vt 4.062500 1.024414 +vt 4.062500 1.199219 +vt 4.062501 1.374024 +vt 4.062501 1.548828 +vt 4.062500 1.723633 +vt 4.062501 1.898438 +vt 4.062501 2.073242 +vt 4.062500 2.248047 +vt 4.062501 2.422852 +vt 4.062501 2.597657 +vt 4.062501 2.772461 +vt 4.062500 2.947266 +vt 4.062500 3.122071 +vt 3.875001 0.847656 +vt 3.875000 0.673828 +vt 3.875000 1.021484 +vt 3.875000 1.195313 +vt 3.875001 1.369141 +vt 3.875001 1.542969 +vt 3.875001 1.716797 +vt 3.875001 1.890625 +vt 3.875001 2.064453 +vt 3.875000 2.238281 +vt 3.875000 2.412109 +vt 3.875000 2.585938 +vt 3.875000 2.759766 +vt 3.875001 2.933594 +vt 3.875000 3.107422 +vt 3.687500 0.845703 +vt 3.687501 0.672852 +vt 3.687501 1.018555 +vt 3.687501 1.191406 +vt 3.687501 1.364258 +vt 3.687500 1.537109 +vt 3.687501 1.709961 +vt 3.687500 1.882813 +vt 3.687500 2.055664 +vt 3.687501 2.228516 +vt 3.687501 2.401367 +vt 3.687501 2.574219 +vt 3.687501 2.747071 +vt 3.687500 2.919922 +vt 3.687501 3.092774 +vt 6.500001 0.500000 +vt 6.500001 0.687500 +vt 6.312500 0.500000 +vt 6.500001 0.875000 +vt 6.500001 1.062500 +vt 6.500000 1.250000 +vt 6.500001 1.437500 +vt 6.500000 1.625000 +vt 6.500001 1.812500 +vt 6.500001 2.000000 +vt 6.500001 2.187500 +vt 6.500000 2.375000 +vt 6.500001 2.562500 +vt 6.500000 2.750000 +vt 6.500000 2.937500 +vt 6.500000 3.125000 +vt 6.500000 3.312500 +vt 6.500000 3.500000 +vt 6.312500 3.484375 +vt 6.125000 3.468750 +vt 5.937500 3.453125 +vt 5.750000 3.437500 +vt 5.562500 3.421875 +vt 5.375000 3.406250 +vt 5.187500 3.390625 +vt 5.000000 3.375000 +vt 4.812501 3.359375 +vt 4.625000 3.343750 +vt 4.437500 3.328125 +vt 4.250001 3.312500 +vt 4.062500 3.296875 +vt 3.875000 3.281250 +vt 3.687501 3.265625 +vt 3.500001 3.250000 +vt 3.500000 3.078125 +vt 3.500001 2.906250 +vt 3.500000 2.734375 +vt 3.500001 2.562500 +vt 3.500001 2.390625 +vt 3.500001 2.218750 +vt 3.500001 2.046875 +vt 3.500001 1.875000 +vt 3.500001 1.703125 +vt 3.500000 1.531250 +vt 3.500001 1.359375 +vt 3.500001 1.187500 +vt 3.500001 1.015625 +vt 3.500000 0.843750 +vt 3.500001 0.671875 +vt 3.687500 0.500000 +vt 3.500001 0.500000 +vt 3.875001 0.500000 +vt 4.062501 0.500000 +vt 4.250001 0.500000 +vt 4.437501 0.500000 +vt 4.625001 0.500000 +vt 4.812501 0.500000 +vt 5.000001 0.500000 +vt 5.187501 0.500000 +vt 5.375001 0.500000 +vt 5.562501 0.500000 +vt 5.750000 0.500000 +vt 5.937501 0.500000 +vt 6.125001 0.500000 +vt 0.674805 3.687500 +vt 0.849609 3.687500 +vt 0.855469 3.875001 +vt 0.677734 3.875000 +vt 1.024414 3.687500 +vt 1.033203 3.875000 +vt 1.199219 3.687500 +vt 1.210938 3.875000 +vt 1.374024 3.687500 +vt 1.388672 3.875000 +vt 1.548828 3.687500 +vt 1.566406 3.875000 +vt 1.723633 3.687500 +vt 1.744141 3.875000 +vt 1.898438 3.687500 +vt 1.921875 3.875001 +vt 2.073242 3.687500 +vt 2.099610 3.875000 +vt 2.248047 3.687500 +vt 2.277344 3.875000 +vt 2.422852 3.687500 +vt 2.455078 3.875000 +vt 2.597656 3.687500 +vt 2.632813 3.875000 +vt 2.772461 3.687500 +vt 2.810547 3.875000 +vt 2.947266 3.687500 +vt 2.988281 3.875000 +vt 3.122071 3.687500 +vt 3.166016 3.875000 +vt 0.861328 4.062500 +vt 0.680664 4.062500 +vt 1.041992 4.062500 +vt 1.222656 4.062500 +vt 1.403320 4.062500 +vt 1.583984 4.062500 +vt 1.764648 4.062500 +vt 1.945312 4.062500 +vt 2.125977 4.062500 +vt 2.306641 4.062500 +vt 2.487305 4.062500 +vt 2.667969 4.062500 +vt 2.848633 4.062500 +vt 3.029297 4.062500 +vt 3.209961 4.062500 +vt 0.867188 4.250001 +vt 0.683594 4.250000 +vt 1.050781 4.250000 +vt 1.234375 4.250000 +vt 1.417969 4.250001 +vt 1.601563 4.250000 +vt 1.785156 4.250000 +vt 1.968750 4.250000 +vt 2.152344 4.250000 +vt 2.335938 4.250000 +vt 2.519532 4.250001 +vt 2.703125 4.250000 +vt 2.886719 4.250000 +vt 3.070312 4.250001 +vt 3.253906 4.250000 +vt 0.873047 4.437500 +vt 0.686523 4.437501 +vt 1.059570 4.437500 +vt 1.246094 4.437501 +vt 1.432617 4.437500 +vt 1.619141 4.437500 +vt 1.805664 4.437500 +vt 1.992188 4.437500 +vt 2.178711 4.437500 +vt 2.365235 4.437500 +vt 2.551758 4.437500 +vt 2.738282 4.437500 +vt 2.924805 4.437500 +vt 3.111328 4.437500 +vt 3.297852 4.437500 +vt 0.878906 4.625000 +vt 0.689453 4.625000 +vt 1.068359 4.625000 +vt 1.257813 4.625000 +vt 1.447266 4.625000 +vt 1.636719 4.625000 +vt 1.826172 4.625000 +vt 2.015625 4.625000 +vt 2.205078 4.625000 +vt 2.394531 4.625000 +vt 2.583984 4.625000 +vt 2.773438 4.625000 +vt 2.962891 4.625000 +vt 3.152344 4.625000 +vt 3.341797 4.625000 +vt 0.884766 4.812501 +vt 0.692383 4.812500 +vt 1.077149 4.812500 +vt 1.269531 4.812500 +vt 1.461914 4.812501 +vt 1.654297 4.812500 +vt 1.846680 4.812500 +vt 2.039062 4.812500 +vt 2.231445 4.812500 +vt 2.423828 4.812500 +vt 2.616211 4.812501 +vt 2.808594 4.812500 +vt 3.000977 4.812500 +vt 3.193359 4.812501 +vt 3.385742 4.812500 +vt 0.890625 5.000000 +vt 0.695312 5.000000 +vt 1.085938 5.000000 +vt 1.281250 5.000000 +vt 1.476563 5.000000 +vt 1.671875 5.000000 +vt 1.867188 5.000000 +vt 2.062500 5.000000 +vt 2.257813 5.000000 +vt 2.453125 5.000000 +vt 2.648438 5.000000 +vt 2.843750 5.000000 +vt 3.039063 5.000000 +vt 3.234375 5.000000 +vt 3.429688 5.000000 +vt 0.896484 5.187500 +vt 0.698242 5.187500 +vt 1.094727 5.187500 +vt 1.292969 5.187500 +vt 1.491211 5.187501 +vt 1.689453 5.187500 +vt 1.887695 5.187500 +vt 2.085938 5.187500 +vt 2.284180 5.187500 +vt 2.482422 5.187500 +vt 2.680664 5.187500 +vt 2.878906 5.187500 +vt 3.077148 5.187500 +vt 3.275391 5.187500 +vt 3.473633 5.187500 +vt 0.902344 5.375000 +vt 0.701172 5.375000 +vt 1.103516 5.375000 +vt 1.304688 5.375000 +vt 1.505859 5.375000 +vt 1.707031 5.375000 +vt 1.908203 5.375000 +vt 2.109375 5.375000 +vt 2.310547 5.375000 +vt 2.511719 5.375000 +vt 2.712891 5.375000 +vt 2.914063 5.375001 +vt 3.115234 5.375000 +vt 3.316406 5.375000 +vt 3.517578 5.375000 +vt 0.908203 5.562500 +vt 0.704102 5.562500 +vt 1.112305 5.562500 +vt 1.316406 5.562501 +vt 1.520508 5.562500 +vt 1.724609 5.562500 +vt 1.928711 5.562500 +vt 2.132813 5.562500 +vt 2.336914 5.562500 +vt 2.541016 5.562500 +vt 2.745117 5.562501 +vt 2.949219 5.562500 +vt 3.153321 5.562500 +vt 3.357422 5.562500 +vt 3.561524 5.562500 +vt 0.914062 5.750000 +vt 0.707031 5.750000 +vt 1.121094 5.750001 +vt 1.328125 5.750000 +vt 1.535156 5.750000 +vt 1.742188 5.750000 +vt 1.949219 5.750000 +vt 2.156250 5.750000 +vt 2.363281 5.750000 +vt 2.570313 5.750001 +vt 2.777344 5.750000 +vt 2.984375 5.750000 +vt 3.191406 5.750000 +vt 3.398438 5.750000 +vt 3.605469 5.750000 +vt 0.919922 5.937500 +vt 0.709961 5.937500 +vt 1.129883 5.937500 +vt 1.339844 5.937500 +vt 1.549805 5.937501 +vt 1.759766 5.937501 +vt 1.969727 5.937500 +vt 2.179688 5.937500 +vt 2.389649 5.937501 +vt 2.599609 5.937500 +vt 2.809571 5.937500 +vt 3.019532 5.937501 +vt 3.229493 5.937501 +vt 3.439453 5.937500 +vt 3.649414 5.937500 +vt 0.925781 6.125000 +vt 0.712891 6.125000 +vt 1.138672 6.125000 +vt 1.351562 6.125000 +vt 1.564453 6.125000 +vt 1.777344 6.125000 +vt 1.990235 6.125000 +vt 2.203125 6.125001 +vt 2.416016 6.125000 +vt 2.628906 6.125000 +vt 2.841797 6.125000 +vt 3.054688 6.125000 +vt 3.267578 6.125000 +vt 3.480469 6.125000 +vt 3.693360 6.125000 +vt 0.931641 6.312500 +vt 0.715820 6.312500 +vt 1.147461 6.312500 +vt 1.363281 6.312500 +vt 1.579102 6.312500 +vt 1.794922 6.312500 +vt 2.010742 6.312500 +vt 2.226563 6.312500 +vt 2.442383 6.312500 +vt 2.658203 6.312500 +vt 2.874024 6.312500 +vt 3.089844 6.312500 +vt 3.305664 6.312500 +vt 3.521485 6.312500 +vt 3.737305 6.312500 +vt 0.500000 3.500000 +vt 0.671875 3.500000 +vt 0.500000 3.687500 +vt 0.843750 3.500000 +vt 1.015625 3.500000 +vt 1.187500 3.500000 +vt 1.359375 3.500000 +vt 1.531250 3.500000 +vt 1.703125 3.500000 +vt 1.875000 3.500000 +vt 2.046875 3.500000 +vt 2.218750 3.500000 +vt 2.390625 3.500000 +vt 2.562500 3.500000 +vt 2.734375 3.500000 +vt 2.906250 3.500000 +vt 3.078125 3.500000 +vt 3.250000 3.500000 +vt 3.296875 3.687500 +vt 3.343750 3.875000 +vt 3.390625 4.062500 +vt 3.437500 4.250000 +vt 3.484375 4.437500 +vt 3.531250 4.625000 +vt 3.578125 4.812500 +vt 3.625000 5.000000 +vt 3.671875 5.187501 +vt 3.718750 5.375000 +vt 3.765625 5.562500 +vt 3.812500 5.750001 +vt 3.859375 5.937500 +vt 3.906250 6.125000 +vt 3.953125 6.312501 +vt 4.000000 6.500001 +vt 3.781250 6.500000 +vt 3.562500 6.500001 +vt 3.343750 6.500000 +vt 3.125000 6.500001 +vt 2.906250 6.500001 +vt 2.687500 6.500001 +vt 2.468750 6.500001 +vt 2.250000 6.500001 +vt 2.031250 6.500001 +vt 1.812500 6.500000 +vt 1.593750 6.500001 +vt 1.375000 6.500000 +vt 1.156250 6.500001 +vt 0.937500 6.500000 +vt 0.718750 6.500000 +vt 0.500000 6.312500 +vt 0.500000 6.500001 +vt 0.500000 6.125001 +vt 0.500000 5.937500 +vt 0.500000 5.750001 +vt 0.500000 5.562500 +vt 0.500000 5.375000 +vt 0.500000 5.187500 +vt 0.500000 5.000000 +vt 0.500000 4.812500 +vt 0.500000 4.625000 +vt 0.500000 4.437500 +vt 0.500000 4.250000 +vt 0.500000 4.062500 +vt 0.500000 3.875000 +vt 3.321289 3.661133 +vt 3.345703 3.634766 +vt 3.410157 3.800782 +vt 3.376953 3.837891 +vt 3.370117 3.608399 +vt 3.443360 3.763672 +vt 3.394532 3.582032 +vt 3.476563 3.726563 +vt 3.418946 3.555664 +vt 3.509766 3.689453 +vt 3.443359 3.529297 +vt 3.542969 3.652344 +vt 3.467774 3.502930 +vt 3.576173 3.615235 +vt 3.492188 3.476562 +vt 3.609375 3.578126 +vt 3.516602 3.450196 +vt 3.642579 3.541016 +vt 3.541016 3.423828 +vt 3.675781 3.503906 +vt 3.565430 3.397461 +vt 3.708985 3.466797 +vt 3.589844 3.371094 +vt 3.742188 3.429688 +vt 3.614259 3.344727 +vt 3.775391 3.392578 +vt 3.638672 3.318359 +vt 3.808594 3.355469 +vt 3.663086 3.291993 +vt 3.841798 3.318359 +vt 3.474610 3.966797 +vt 3.432617 4.014648 +vt 3.516602 3.918946 +vt 3.558594 3.871094 +vt 3.600586 3.823242 +vt 3.642578 3.775391 +vt 3.684571 3.727539 +vt 3.726563 3.679688 +vt 3.768555 3.631836 +vt 3.810547 3.583985 +vt 3.852540 3.536133 +vt 3.894532 3.488281 +vt 3.936524 3.440430 +vt 3.978516 3.392578 +vt 4.020508 3.344727 +vt 3.539063 4.132813 +vt 3.488281 4.191406 +vt 3.589844 4.074219 +vt 3.640625 4.015625 +vt 3.691407 3.957031 +vt 3.742188 3.898438 +vt 3.792969 3.839844 +vt 3.843750 3.781250 +vt 3.894531 3.722656 +vt 3.945313 3.664063 +vt 3.996095 3.605469 +vt 4.046875 3.546875 +vt 4.097657 3.488282 +vt 4.148438 3.429688 +vt 4.199219 3.371094 +vt 3.603516 4.298828 +vt 3.543946 4.368165 +vt 3.663086 4.229493 +vt 3.722657 4.160157 +vt 3.782227 4.090821 +vt 3.841797 4.021485 +vt 3.901368 3.952148 +vt 3.960938 3.882813 +vt 4.020508 3.813477 +vt 4.080079 3.744141 +vt 4.139649 3.674805 +vt 4.199220 3.605469 +vt 4.258790 3.536133 +vt 4.318359 3.466797 +vt 4.377930 3.397461 +vt 3.667969 4.464844 +vt 3.599609 4.544922 +vt 3.736328 4.384766 +vt 3.804688 4.304688 +vt 3.873047 4.224609 +vt 3.941407 4.144531 +vt 4.009766 4.064454 +vt 4.078125 3.984375 +vt 4.146485 3.904297 +vt 4.214844 3.824219 +vt 4.283204 3.744141 +vt 4.351563 3.664063 +vt 4.419922 3.583985 +vt 4.488282 3.503906 +vt 4.556641 3.423828 +vt 3.732422 4.630860 +vt 3.655273 4.721680 +vt 3.809571 4.540040 +vt 3.886719 4.449219 +vt 3.963867 4.358399 +vt 4.041016 4.267578 +vt 4.118164 4.176758 +vt 4.195313 4.085938 +vt 4.272461 3.995118 +vt 4.349610 3.904297 +vt 4.426758 3.813477 +vt 4.503907 3.722656 +vt 4.581055 3.631836 +vt 4.658203 3.541016 +vt 4.735352 3.450196 +vt 3.796875 4.796876 +vt 3.710938 4.898438 +vt 3.882813 4.695313 +vt 3.968750 4.593750 +vt 4.054688 4.492188 +vt 4.140625 4.390625 +vt 4.226563 4.289062 +vt 4.312500 4.187500 +vt 4.398438 4.085938 +vt 4.484375 3.984375 +vt 4.570313 3.882813 +vt 4.656250 3.781250 +vt 4.742188 3.679688 +vt 4.828126 3.578125 +vt 4.914063 3.476562 +vt 3.861329 4.962891 +vt 3.766601 5.075195 +vt 3.956055 4.850586 +vt 4.050782 4.738281 +vt 4.145508 4.625977 +vt 4.240235 4.513672 +vt 4.334961 4.401368 +vt 4.429688 4.289063 +vt 4.524415 4.176758 +vt 4.619141 4.064453 +vt 4.713868 3.952149 +vt 4.808594 3.839844 +vt 4.903320 3.727539 +vt 4.998047 3.615235 +vt 5.092774 3.502930 +vt 3.925781 5.128907 +vt 3.822266 5.251953 +vt 4.029297 5.005859 +vt 4.132813 4.882813 +vt 4.236329 4.759766 +vt 4.339844 4.636719 +vt 4.443359 4.513672 +vt 4.546875 4.390625 +vt 4.650391 4.267578 +vt 4.753906 4.144531 +vt 4.857422 4.021484 +vt 4.960938 3.898438 +vt 5.064453 3.775391 +vt 5.167969 3.652344 +vt 5.271484 3.529297 +vt 3.990235 5.294922 +vt 3.877930 5.428711 +vt 4.102540 5.161133 +vt 4.214845 5.027344 +vt 4.327149 4.893555 +vt 4.439453 4.759766 +vt 4.551758 4.625977 +vt 4.664062 4.492188 +vt 4.776368 4.358399 +vt 4.888672 4.224609 +vt 5.000978 4.090821 +vt 5.113282 3.957032 +vt 5.225586 3.823243 +vt 5.337891 3.689454 +vt 5.450195 3.555664 +vt 4.054688 5.460938 +vt 3.933594 5.605469 +vt 4.175782 5.316407 +vt 4.296875 5.171875 +vt 4.417969 5.027345 +vt 4.539063 4.882813 +vt 4.660157 4.738281 +vt 4.781250 4.593751 +vt 4.902344 4.449219 +vt 5.023438 4.304688 +vt 5.144532 4.160157 +vt 5.265625 4.015625 +vt 5.386719 3.871094 +vt 5.507812 3.726563 +vt 5.628907 3.582032 +vt 4.119141 5.626954 +vt 3.989258 5.782227 +vt 4.249024 5.471680 +vt 4.378906 5.316407 +vt 4.508790 5.161134 +vt 4.638672 5.005860 +vt 4.768555 4.850586 +vt 4.898438 4.695313 +vt 5.028321 4.540040 +vt 5.158204 4.384766 +vt 5.288086 4.229493 +vt 5.417970 4.074219 +vt 5.547852 3.918946 +vt 5.677734 3.763672 +vt 5.807617 3.608398 +vt 4.183594 5.792969 +vt 4.044922 5.958984 +vt 4.322266 5.626953 +vt 4.460938 5.460938 +vt 4.599609 5.294922 +vt 4.738281 5.128907 +vt 4.876953 4.962891 +vt 5.015625 4.796875 +vt 5.154297 4.630860 +vt 5.292969 4.464844 +vt 5.431641 4.298828 +vt 5.570313 4.132813 +vt 5.708984 3.966797 +vt 5.847656 3.800782 +vt 5.986328 3.634766 +vt 4.248047 5.958985 +vt 4.100586 6.135743 +vt 4.395508 5.782227 +vt 4.542969 5.605469 +vt 4.690430 5.428711 +vt 4.837891 5.251953 +vt 4.985352 5.075196 +vt 5.132813 4.898438 +vt 5.280273 4.721680 +vt 5.427734 4.544922 +vt 5.575196 4.368165 +vt 5.722657 4.191406 +vt 5.870117 4.014648 +vt 6.017578 3.837891 +vt 6.165039 3.661133 +vt 3.265625 3.484375 +vt 3.281250 3.468750 +vt 3.296875 3.453125 +vt 3.312500 3.437500 +vt 3.328125 3.421875 +vt 3.343750 3.406250 +vt 3.359376 3.390625 +vt 3.375001 3.375000 +vt 3.390626 3.359375 +vt 3.406250 3.343750 +vt 3.421875 3.328125 +vt 3.437501 3.312500 +vt 3.453126 3.296875 +vt 3.468750 3.281250 +vt 3.484376 3.265625 +vt 3.687501 3.265625 +vt 3.875001 3.281250 +vt 4.062500 3.296875 +vt 4.250000 3.312500 +vt 4.437501 3.328125 +vt 4.625000 3.343750 +vt 4.812500 3.359375 +vt 5.000000 3.375000 +vt 5.187500 3.390625 +vt 5.375000 3.406250 +vt 5.562500 3.421875 +vt 5.937500 3.453125 +vt 6.125000 3.468750 +vt 6.312500 3.484375 +vt 6.343750 3.687500 +vt 6.187500 3.875000 +vt 6.031250 4.062500 +vt 5.875000 4.250000 +vt 5.718750 4.437500 +vt 5.562500 4.625000 +vt 5.406250 4.812500 +vt 5.250000 5.000000 +vt 5.093750 5.187500 +vt 4.937500 5.375000 +vt 4.781250 5.562500 +vt 4.625000 5.750000 +vt 4.468750 5.937500 +vt 4.312500 6.125000 +vt 4.156250 6.312500 +vt 3.953125 6.312500 +vt 3.906250 6.125001 +vt 3.859375 5.937500 +vt 3.718750 5.375000 +vt 3.671875 5.187500 +vt 0.325195 3.687500 +vt 0.322266 3.875000 +vt 0.144531 3.875000 +vt 0.150391 3.687500 +vt 0.319336 4.062500 +vt 0.138672 4.062500 +vt 0.316406 4.250000 +vt 0.132812 4.250000 +vt 0.313477 4.437501 +vt 0.126953 4.437500 +vt 0.310547 4.625000 +vt 0.121094 4.625000 +vt 0.307617 4.812500 +vt 0.115234 4.812500 +vt 0.304687 5.000000 +vt 0.109375 5.000001 +vt 0.301758 5.187500 +vt 0.103516 5.187500 +vt 0.298828 5.375000 +vt 0.097656 5.375000 +vt 0.295898 5.562500 +vt 0.091797 5.562500 +vt 0.292969 5.750000 +vt 0.085937 5.750000 +vt 0.290039 5.937500 +vt 0.080078 5.937500 +vt 0.287109 6.125000 +vt 0.074219 6.125000 +vt 0.284180 6.312500 +vt 0.068359 6.312500 +vt -0.033203 3.875000 +vt -0.024414 3.687500 +vt -0.041992 4.062501 +vt -0.050781 4.250000 +vt -0.059570 4.437500 +vt -0.068359 4.625000 +vt -0.077148 4.812500 +vt -0.085938 5.000000 +vt -0.094727 5.187500 +vt -0.103516 5.375000 +vt -0.112305 5.562500 +vt -0.121094 5.750000 +vt -0.129883 5.937500 +vt -0.138672 6.125001 +vt -0.147461 6.312500 +vt -0.210938 3.875000 +vt -0.199219 3.687500 +vt -0.222656 4.062500 +vt -0.234375 4.250000 +vt -0.246094 4.437500 +vt -0.257813 4.625000 +vt -0.269531 4.812500 +vt -0.281250 5.000000 +vt -0.292969 5.187500 +vt -0.304688 5.375000 +vt -0.316406 5.562500 +vt -0.328125 5.750000 +vt -0.339844 5.937500 +vt -0.351563 6.125000 +vt -0.363281 6.312500 +vt -0.388672 3.875000 +vt -0.374023 3.687500 +vt -0.403320 4.062500 +vt -0.417969 4.250000 +vt -0.432617 4.437500 +vt -0.447266 4.625000 +vt -0.461914 4.812500 +vt -0.476563 5.000001 +vt -0.491211 5.187500 +vt -0.505859 5.375000 +vt -0.520508 5.562500 +vt -0.535156 5.750001 +vt -0.549805 5.937501 +vt -0.564453 6.125001 +vt -0.579102 6.312501 +vt -0.566406 3.875000 +vt -0.548828 3.687500 +vt -0.583984 4.062500 +vt -0.601563 4.250000 +vt -0.619141 4.437500 +vt -0.636719 4.625000 +vt -0.654297 4.812501 +vt -0.671875 5.000000 +vt -0.689453 5.187500 +vt -0.707031 5.375000 +vt -0.724609 5.562500 +vt -0.742188 5.750000 +vt -0.759766 5.937500 +vt -0.777344 6.125001 +vt -0.794922 6.312500 +vt -0.744141 3.875000 +vt -0.723633 3.687500 +vt -0.764648 4.062500 +vt -0.785156 4.250000 +vt -0.805664 4.437500 +vt -0.826172 4.625000 +vt -0.846680 4.812500 +vt -0.867188 5.000000 +vt -0.887695 5.187500 +vt -0.908203 5.375001 +vt -0.928711 5.562500 +vt -0.949219 5.750000 +vt -0.969727 5.937500 +vt -0.990235 6.125000 +vt -1.010742 6.312500 +vt -0.921875 3.875000 +vt -0.898438 3.687500 +vt -0.945313 4.062500 +vt -0.968750 4.250000 +vt -0.992188 4.437500 +vt -1.015625 4.625001 +vt -1.039063 4.812500 +vt -1.062500 5.000001 +vt -1.085938 5.187500 +vt -1.109375 5.375001 +vt -1.132813 5.562501 +vt -1.156250 5.750000 +vt -1.179688 5.937500 +vt -1.203125 6.125001 +vt -1.226563 6.312500 +vt -1.099609 3.875000 +vt -1.073242 3.687500 +vt -1.125977 4.062500 +vt -1.152344 4.250000 +vt -1.178711 4.437501 +vt -1.205078 4.625000 +vt -1.231446 4.812501 +vt -1.257813 5.000001 +vt -1.284180 5.187501 +vt -1.310547 5.375000 +vt -1.336914 5.562500 +vt -1.363281 5.750000 +vt -1.389649 5.937500 +vt -1.416016 6.125000 +vt -1.442383 6.312500 +vt -1.277344 3.875000 +vt -1.248047 3.687500 +vt -1.306641 4.062500 +vt -1.335938 4.250000 +vt -1.365235 4.437500 +vt -1.394531 4.625000 +vt -1.423828 4.812501 +vt -1.453125 5.000001 +vt -1.482422 5.187501 +vt -1.511719 5.375001 +vt -1.541016 5.562500 +vt -1.570313 5.750000 +vt -1.599610 5.937501 +vt -1.628907 6.125001 +vt -1.658203 6.312500 +vt -1.455078 3.875000 +vt -1.422852 3.687500 +vt -1.487305 4.062500 +vt -1.519531 4.250000 +vt -1.551758 4.437500 +vt -1.583985 4.625001 +vt -1.616211 4.812500 +vt -1.648438 5.000001 +vt -1.680664 5.187500 +vt -1.712891 5.375000 +vt -1.745117 5.562500 +vt -1.777344 5.750001 +vt -1.809571 5.937501 +vt -1.841797 6.125000 +vt -1.874024 6.312501 +vt -1.632812 3.875000 +vt -1.597656 3.687500 +vt -1.667969 4.062500 +vt -1.703125 4.250000 +vt -1.738281 4.437500 +vt -1.773438 4.625000 +vt -1.808594 4.812500 +vt -1.843750 5.000001 +vt -1.878906 5.187500 +vt -1.914063 5.375001 +vt -1.949219 5.562500 +vt -1.984375 5.750000 +vt -2.019532 5.937501 +vt -2.054688 6.125000 +vt -2.089844 6.312500 +vt -1.810547 3.875000 +vt -1.772461 3.687500 +vt -1.848633 4.062500 +vt -1.886719 4.250000 +vt -1.924805 4.437500 +vt -1.962891 4.625001 +vt -2.000977 4.812500 +vt -2.039063 5.000000 +vt -2.077149 5.187500 +vt -2.115235 5.375000 +vt -2.153321 5.562501 +vt -2.191406 5.750000 +vt -2.229492 5.937500 +vt -2.267578 6.125001 +vt -2.305664 6.312500 +vt -1.988281 3.875000 +vt -1.947266 3.687500 +vt -2.029297 4.062500 +vt -2.070312 4.250000 +vt -2.111328 4.437500 +vt -2.152344 4.625000 +vt -2.193360 4.812501 +vt -2.234375 5.000000 +vt -2.275391 5.187500 +vt -2.316407 5.375001 +vt -2.357422 5.562501 +vt -2.398438 5.750000 +vt -2.439453 5.937500 +vt -2.480469 6.125000 +vt -2.521485 6.312500 +vt -2.166016 3.875000 +vt -2.122070 3.687500 +vt -2.209961 4.062500 +vt -2.253906 4.250000 +vt -2.297852 4.437500 +vt -2.341797 4.625000 +vt -2.385742 4.812500 +vt -2.429688 5.000000 +vt -2.473633 5.187500 +vt -2.517578 5.375000 +vt -2.561524 5.562500 +vt -2.605469 5.750000 +vt -2.649414 5.937500 +vt -2.693360 6.125000 +vt -2.737305 6.312500 +vt 0.500000 3.687500 +vt 0.328125 3.500000 +vt 0.500000 3.875000 +vt 0.500000 4.062500 +vt 0.500000 4.250000 +vt 0.500000 4.812500 +vt 0.500000 5.000001 +vt 0.500000 5.187500 +vt 0.500000 5.562501 +vt 0.500000 5.750000 +vt 0.500000 5.937501 +vt 0.500000 6.312500 +vt 0.281250 6.500000 +vt 0.062500 6.500000 +vt -0.156250 6.500000 +vt -0.375000 6.500001 +vt -0.593750 6.500000 +vt -0.812500 6.500000 +vt -1.031250 6.500000 +vt -1.250000 6.500001 +vt -1.468750 6.500001 +vt -1.687500 6.500001 +vt -1.906250 6.500001 +vt -2.125000 6.500001 +vt -2.343750 6.500001 +vt -2.562500 6.500000 +vt -2.781250 6.500000 +vt -3.000001 6.500001 +vt -2.953125 6.312500 +vt -2.906250 6.125000 +vt -2.859375 5.937500 +vt -2.812500 5.750000 +vt -2.765625 5.562500 +vt -2.718750 5.375000 +vt -2.671875 5.187500 +vt -2.625000 5.000001 +vt -2.578125 4.812500 +vt -2.531250 4.625000 +vt -2.484375 4.437500 +vt -2.437500 4.250000 +vt -2.390625 4.062500 +vt -2.343750 3.875000 +vt -2.296875 3.687500 +vt -2.078125 3.500000 +vt -2.250000 3.500000 +vt -1.906250 3.500000 +vt -1.734375 3.500000 +vt -1.562500 3.500000 +vt -1.390625 3.500000 +vt -1.218750 3.500000 +vt -1.046875 3.500000 +vt -0.875000 3.500000 +vt -0.703125 3.500000 +vt -0.531250 3.500000 +vt -0.359375 3.500000 +vt -0.187500 3.500000 +vt -0.015625 3.500000 +vt 0.156250 3.500000 +vt 6.312500 0.313477 +vt 6.125001 0.314453 +vt 6.125001 0.128906 +vt 6.312500 0.126953 +vt 5.937500 0.315430 +vt 5.937501 0.130860 +vt 5.750001 0.316406 +vt 5.750000 0.132813 +vt 5.562501 0.317383 +vt 5.562501 0.134766 +vt 5.375001 0.318359 +vt 5.375001 0.136719 +vt 5.187500 0.319336 +vt 5.187501 0.138672 +vt 5.000000 0.320313 +vt 5.000001 0.140625 +vt 4.812501 0.321289 +vt 4.812501 0.142578 +vt 4.625001 0.322266 +vt 4.625001 0.144531 +vt 4.437501 0.323242 +vt 4.437501 0.146484 +vt 4.250000 0.324219 +vt 4.250001 0.148438 +vt 4.062501 0.325195 +vt 4.062501 0.150391 +vt 3.875000 0.326172 +vt 3.875000 0.152344 +vt 3.687500 0.327148 +vt 3.687501 0.154297 +vt 6.125001 -0.056641 +vt 6.312501 -0.059570 +vt 5.937501 -0.053711 +vt 5.750000 -0.050781 +vt 5.562501 -0.047851 +vt 5.375001 -0.044922 +vt 5.187501 -0.041992 +vt 5.000001 -0.039062 +vt 4.812501 -0.036133 +vt 4.625001 -0.033203 +vt 4.437501 -0.030273 +vt 4.250000 -0.027344 +vt 4.062501 -0.024414 +vt 3.875001 -0.021484 +vt 3.687500 -0.018555 +vt 6.125001 -0.242187 +vt 6.312501 -0.246094 +vt 5.937501 -0.238281 +vt 5.750001 -0.234375 +vt 5.562501 -0.230469 +vt 5.375001 -0.226562 +vt 5.187501 -0.222656 +vt 5.000000 -0.218750 +vt 4.812500 -0.214844 +vt 4.625000 -0.210937 +vt 4.437500 -0.207031 +vt 4.250000 -0.203125 +vt 4.062500 -0.199219 +vt 3.875001 -0.195312 +vt 3.687500 -0.191406 +vt 6.125001 -0.427734 +vt 6.312501 -0.432617 +vt 5.937501 -0.422851 +vt 5.750001 -0.417969 +vt 5.562501 -0.413086 +vt 5.375001 -0.408203 +vt 5.187501 -0.403320 +vt 5.000001 -0.398437 +vt 4.812500 -0.393555 +vt 4.625001 -0.388672 +vt 4.437501 -0.383789 +vt 4.250001 -0.378906 +vt 4.062501 -0.374023 +vt 3.875001 -0.369141 +vt 3.687501 -0.364258 +vt 6.125000 -0.613281 +vt 6.312501 -0.619140 +vt 5.937501 -0.607422 +vt 5.750001 -0.601562 +vt 5.562501 -0.595703 +vt 5.375001 -0.589844 +vt 5.187501 -0.583984 +vt 5.000001 -0.578125 +vt 4.812501 -0.572266 +vt 4.625001 -0.566406 +vt 4.437501 -0.560547 +vt 4.250001 -0.554687 +vt 4.062501 -0.548828 +vt 3.875001 -0.542969 +vt 3.687500 -0.537109 +vt 6.125001 -0.798828 +vt 6.312501 -0.805664 +vt 5.937501 -0.791992 +vt 5.750001 -0.785156 +vt 5.562500 -0.778320 +vt 5.375001 -0.771484 +vt 5.187501 -0.764648 +vt 5.000001 -0.757812 +vt 4.812501 -0.750976 +vt 4.625001 -0.744141 +vt 4.437501 -0.737305 +vt 4.250001 -0.730469 +vt 4.062501 -0.723633 +vt 3.875001 -0.716797 +vt 3.687500 -0.709961 +vt 6.125001 -0.984375 +vt 6.312501 -0.992187 +vt 5.937501 -0.976562 +vt 5.750001 -0.968750 +vt 5.562501 -0.960937 +vt 5.375001 -0.953125 +vt 5.187501 -0.945312 +vt 5.000001 -0.937500 +vt 4.812501 -0.929687 +vt 4.625001 -0.921875 +vt 4.437501 -0.914062 +vt 4.250001 -0.906250 +vt 4.062501 -0.898437 +vt 3.875001 -0.890625 +vt 3.687501 -0.882813 +vt 6.125001 -1.169922 +vt 6.312500 -1.178710 +vt 5.937500 -1.161132 +vt 5.750001 -1.152344 +vt 5.562501 -1.143554 +vt 5.375001 -1.134765 +vt 5.187501 -1.125976 +vt 5.000001 -1.117187 +vt 4.812501 -1.108398 +vt 4.625001 -1.099609 +vt 4.437501 -1.090820 +vt 4.250001 -1.082031 +vt 4.062501 -1.073242 +vt 3.875000 -1.064453 +vt 3.687501 -1.055664 +vt 6.125001 -1.355468 +vt 6.312500 -1.365234 +vt 5.937501 -1.345703 +vt 5.750001 -1.335937 +vt 5.562501 -1.326172 +vt 5.375001 -1.316406 +vt 5.187501 -1.306640 +vt 5.000001 -1.296875 +vt 4.812501 -1.287109 +vt 4.625001 -1.277344 +vt 4.437501 -1.267578 +vt 4.250001 -1.257812 +vt 4.062501 -1.248047 +vt 3.875001 -1.238281 +vt 3.687500 -1.228516 +vt 6.125001 -1.541015 +vt 6.312501 -1.551757 +vt 5.937501 -1.530273 +vt 5.750001 -1.519531 +vt 5.562501 -1.508789 +vt 5.375001 -1.498047 +vt 5.187501 -1.487304 +vt 5.000001 -1.476562 +vt 4.812501 -1.465820 +vt 4.625001 -1.455078 +vt 4.437501 -1.444336 +vt 4.250001 -1.433594 +vt 4.062501 -1.422852 +vt 3.875000 -1.412109 +vt 3.687501 -1.401367 +vt 6.125001 -1.726562 +vt 6.312501 -1.738281 +vt 5.937501 -1.714843 +vt 5.750000 -1.703125 +vt 5.562501 -1.691406 +vt 5.375001 -1.679687 +vt 5.187501 -1.667969 +vt 5.000001 -1.656250 +vt 4.812501 -1.644531 +vt 4.625001 -1.632812 +vt 4.437501 -1.621094 +vt 4.250001 -1.609375 +vt 4.062501 -1.597656 +vt 3.875001 -1.585937 +vt 3.687500 -1.574219 +vt 6.125001 -1.912109 +vt 6.312501 -1.924804 +vt 5.937501 -1.899414 +vt 5.750001 -1.886718 +vt 5.562501 -1.874023 +vt 5.375001 -1.861328 +vt 5.187501 -1.848633 +vt 5.000001 -1.835937 +vt 4.812501 -1.823242 +vt 4.625001 -1.810547 +vt 4.437501 -1.797852 +vt 4.250001 -1.785156 +vt 4.062501 -1.772461 +vt 3.875001 -1.759766 +vt 3.687501 -1.747070 +vt 6.125001 -2.097656 +vt 6.312500 -2.111327 +vt 5.937501 -2.083984 +vt 5.750000 -2.070312 +vt 5.562501 -2.056640 +vt 5.375001 -2.042969 +vt 5.187501 -2.029297 +vt 5.000001 -2.015625 +vt 4.812501 -2.001953 +vt 4.625001 -1.988281 +vt 4.437501 -1.974609 +vt 4.250001 -1.960938 +vt 4.062501 -1.947266 +vt 3.875000 -1.933594 +vt 3.687501 -1.919922 +vt 6.125000 -2.283202 +vt 6.312500 -2.297851 +vt 5.937500 -2.268554 +vt 5.750001 -2.253906 +vt 5.562501 -2.239257 +vt 5.375000 -2.224609 +vt 5.187500 -2.209960 +vt 5.000001 -2.195312 +vt 4.812500 -2.180664 +vt 4.625000 -2.166015 +vt 4.437501 -2.151367 +vt 4.250001 -2.136719 +vt 4.062501 -2.122070 +vt 3.875001 -2.107422 +vt 3.687501 -2.092773 +vt 6.500001 0.312500 +vt 5.937501 0.500000 +vt 5.750001 0.500000 +vt 5.562501 0.500000 +vt 5.187501 0.500000 +vt 4.812501 0.500000 +vt 4.250001 0.500000 +vt 4.062501 0.500000 +vt 3.500001 0.328125 +vt 3.500001 0.156250 +vt 3.500001 -0.015625 +vt 3.500001 -0.187500 +vt 3.500000 -0.359375 +vt 3.500000 -0.531250 +vt 3.500001 -0.703125 +vt 3.500001 -0.875000 +vt 3.500001 -1.046875 +vt 3.500001 -1.218750 +vt 3.500001 -1.390625 +vt 3.500001 -1.562500 +vt 3.500001 -1.734375 +vt 3.500001 -1.906250 +vt 3.500001 -2.078125 +vt 3.500001 -2.250000 +vt 3.687501 -2.265625 +vt 3.875001 -2.281250 +vt 4.062501 -2.296875 +vt 4.250001 -2.312500 +vt 4.437501 -2.328125 +vt 4.625001 -2.343750 +vt 4.812501 -2.359375 +vt 5.000001 -2.375000 +vt 5.187501 -2.390625 +vt 5.375001 -2.406250 +vt 5.562501 -2.421875 +vt 5.750001 -2.437500 +vt 5.937501 -2.453125 +vt 6.125001 -2.468749 +vt 6.312501 -2.484374 +vt 6.500000 -2.312499 +vt 6.500001 -2.499999 +vt 6.500001 -2.124999 +vt 6.500001 -1.937499 +vt 6.500001 -1.749999 +vt 6.500001 -1.562500 +vt 6.500001 -1.374999 +vt 6.500001 -1.187500 +vt 6.500001 -1.000000 +vt 6.500001 -0.812500 +vt 6.500001 -0.625000 +vt 6.500001 -0.437500 +vt 6.500001 -0.250000 +vt 6.500001 -0.062500 +vt 6.500001 0.125000 +vt 6.349922 3.860188 +vt 6.354828 4.033336 +vt 6.211680 4.191967 +vt 6.200725 4.033336 +vt 6.358887 4.206750 +vt 6.221033 4.350693 +vt 6.362520 4.380238 +vt 6.229466 4.509313 +vt 6.366157 4.553607 +vt 6.237681 4.667626 +vt 6.370235 4.726662 +vt 6.246422 4.825433 +vt 6.375211 4.899211 +vt 6.256487 4.982532 +vt 6.381567 5.071061 +vt 6.268792 5.138724 +vt 6.070056 4.350693 +vt 6.052155 4.206750 +vt 6.085730 4.494248 +vt 6.099975 4.637338 +vt 6.113629 4.779882 +vt 6.127600 4.921805 +vt 6.142924 5.063026 +vt 6.160887 5.203468 +vt 5.929440 4.509313 +vt 5.903947 4.380239 +vt 5.952245 4.637337 +vt 5.973155 4.764429 +vt 5.993021 4.890701 +vt 6.012791 5.016272 +vt 6.033609 5.141254 +vt 6.057057 5.265766 +vt 5.789296 4.667626 +vt 5.755837 4.553607 +vt 5.819802 4.779882 +vt 5.848061 4.890701 +vt 5.874830 5.000407 +vt 5.900980 5.109324 +vt 5.927619 5.217777 +vt 5.956513 5.326093 +vt 5.649051 4.825433 +vt 5.607546 4.726662 +vt 5.687562 4.921805 +vt 5.723649 5.016272 +vt 5.757917 5.109324 +vt 5.791061 5.201455 +vt 5.824000 5.293158 +vt 5.858460 5.384924 +vt 5.508069 4.982533 +vt 5.458780 4.899210 +vt 5.554554 5.063026 +vt 5.598680 5.141254 +vt 5.640901 5.217777 +vt 5.681703 5.293158 +vt 5.721685 5.367957 +vt 5.762109 5.442735 +vt 6.349922 6.319906 +vt 6.200725 6.325793 +vt 6.211680 6.154016 +vt 6.354828 6.140871 +vt 6.052155 6.330665 +vt 6.070056 6.165239 +vt 5.903947 6.335024 +vt 5.929441 6.175358 +vt 5.755837 6.339389 +vt 5.789297 6.185218 +vt 5.607545 6.344283 +vt 5.649051 6.195707 +vt 5.458780 6.350254 +vt 5.508068 6.207785 +vt 5.309217 6.357880 +vt 5.365603 6.222551 +vt 6.221033 5.984068 +vt 6.358887 5.962585 +vt 6.085731 6.002876 +vt 5.952245 6.019969 +vt 5.819803 6.036354 +vt 5.687562 6.053120 +vt 5.554554 6.071509 +vt 5.419557 6.093064 +vt 6.229465 5.815330 +vt 6.362521 5.784737 +vt 6.099975 5.842693 +vt 5.973155 5.867786 +vt 5.848062 5.891625 +vt 5.723650 5.915349 +vt 5.598680 5.940330 +vt 5.471471 5.968470 +vt 6.237681 5.647156 +vt 6.366157 5.607005 +vt 6.113628 5.683763 +vt 5.993021 5.717673 +vt 5.874831 5.749797 +vt 5.757917 5.781175 +vt 5.640901 5.813143 +vt 5.521744 5.847816 +vt 6.246422 5.478861 +vt 6.370235 5.429055 +vt 6.127600 5.525075 +vt 6.012792 5.568379 +vt 5.900979 5.609501 +vt 5.791060 5.649272 +vt 5.681703 5.688799 +vt 5.570770 5.730153 +vt 6.256488 5.309683 +vt 6.375211 5.250536 +vt 6.142924 5.365465 +vt 6.033608 5.418416 +vt 5.927619 5.469081 +vt 5.823999 5.518044 +vt 5.721685 5.566022 +vt 5.618945 5.614531 +vt 4.300156 6.319906 +vt 4.444447 6.140871 +vt 4.576639 6.154016 +vt 4.444447 6.325793 +vt 4.588960 5.962586 +vt 4.708910 5.984068 +vt 4.733531 5.784737 +vt 4.841094 5.815329 +vt 4.878006 5.607006 +vt 4.973022 5.647156 +vt 5.022218 5.429056 +vt 5.104527 5.478861 +vt 5.166009 5.250536 +vt 5.235443 5.309682 +vt 5.309217 5.071061 +vt 5.365603 5.138725 +vt 4.708911 6.165239 +vt 4.588959 6.330665 +vt 4.828539 6.002876 +vt 4.947781 5.842693 +vt 5.066569 5.683764 +vt 5.184837 5.525075 +vt 5.302523 5.365465 +vt 5.419557 5.203468 +vt 4.841094 6.175359 +vt 4.733532 6.335025 +vt 4.947781 6.019969 +vt 5.053691 5.867786 +vt 5.158917 5.717673 +vt 5.263559 5.568379 +vt 5.367712 5.418416 +vt 5.471471 5.265766 +vt 4.973022 6.185218 +vt 4.878006 6.339388 +vt 5.066569 6.036354 +vt 5.158917 5.891625 +vt 5.250339 5.749797 +vt 5.341104 5.609502 +vt 5.431481 5.469080 +vt 5.521744 5.326093 +vt 5.104527 6.195706 +vt 5.022218 6.344283 +vt 5.184838 6.053120 +vt 5.263560 5.915349 +vt 5.341103 5.781175 +vt 5.417880 5.649272 +vt 5.494298 5.518044 +vt 5.570770 5.384924 +vt 5.235444 6.207785 +vt 5.166009 6.350254 +vt 5.302522 6.071508 +vt 5.367712 5.940330 +vt 5.431482 5.813142 +vt 5.494298 5.688799 +vt 5.556630 5.566022 +vt 5.618945 5.442735 +vt 6.381566 5.071060 +vt 6.160887 5.203468 +vt 5.858461 5.384924 +vt 5.762109 5.442734 +vt 5.365604 6.222551 +vt 5.309217 6.357880 +vt 5.570770 5.730153 +vt 5.618946 5.614531 +vt 5.365604 5.138725 +vt 5.309217 5.071060 +vt 5.570770 5.384924 +vt 5.618946 5.442735 +vt 5.666667 5.500000 +vt 6.500000 3.500000 +vt 6.500000 3.687500 +vt 6.343750 3.687500 +vt 6.500000 3.875000 +vt 6.500000 4.062500 +vt 6.500000 4.250000 +vt 6.500000 4.437500 +vt 6.500000 4.625000 +vt 6.500000 4.812500 +vt 6.500000 5.000000 +vt 6.187500 3.875000 +vt 6.031250 4.062500 +vt 5.875000 4.250000 +vt 5.718750 4.437500 +vt 5.562500 4.625000 +vt 5.406250 4.812500 +vt 5.250000 5.000000 +vt 6.500000 6.500000 +vt 6.343750 6.500000 +vt 6.500000 6.312500 +vt 6.187500 6.500000 +vt 6.031250 6.500000 +vt 5.875000 6.500000 +vt 5.718750 6.500000 +vt 5.562500 6.500000 +vt 5.406250 6.500000 +vt 5.250000 6.500000 +vt 6.500000 6.125000 +vt 6.500000 5.937500 +vt 6.500000 5.750000 +vt 6.500000 5.562500 +vt 6.500000 5.375000 +vt 6.500000 5.187500 +vt 4.000000 6.500000 +vt 4.156250 6.312500 +vt 4.156250 6.500000 +vt 4.312500 6.125000 +vt 4.468750 5.937500 +vt 4.625000 5.750000 +vt 4.781250 5.562500 +vt 5.093750 5.187500 +vt 4.312500 6.500000 +vt 4.468750 6.500000 +vt 4.625000 6.500000 +vt 4.781250 6.500000 +vt 4.937500 6.500000 +vt 5.093750 6.500000 +s 0 +usemtl Cobblestone +f 3012/2050/1597 3013/2051/1597 3028/2052/1597 3027/2053/1597 +f 3013/2051/1597 3014/2054/1597 3029/2055/1597 3028/2052/1597 +f 3014/2054/1597 3015/2056/1597 3030/2057/1597 3029/2055/1597 +f 3015/2056/1597 3016/2058/1597 3031/2059/1597 3030/2057/1597 +f 3016/2058/1597 3017/2060/1597 3032/2061/1597 3031/2059/1597 +f 3017/2060/1597 3018/2062/1597 3033/2063/1597 3032/2061/1597 +f 3018/2062/1597 3019/2064/1597 3034/2065/1597 3033/2063/1597 +f 3019/2064/1597 3020/2066/1597 3035/2067/1597 3034/2065/1597 +f 3020/2066/1597 3021/2068/1597 3036/2069/1597 3035/2067/1597 +f 3021/2068/1597 3022/2070/1597 3037/2071/1597 3036/2069/1597 +f 3022/2070/1597 3023/2072/1597 3038/2073/1597 3037/2071/1597 +f 3023/2072/1597 3024/2074/1597 3039/2075/1597 3038/2073/1597 +f 3024/2074/1597 3025/2076/1597 3040/2077/1597 3039/2075/1597 +f 3025/2076/1597 3026/2078/1597 3041/2079/1597 3040/2077/1597 +f 3027/2053/1597 3028/2052/1597 3043/2080/1597 3042/2081/1597 +f 3028/2052/1597 3029/2055/1597 3044/2082/1597 3043/2080/1597 +f 3029/2055/1597 3030/2057/1597 3045/2083/1597 3044/2082/1597 +f 3030/2057/1597 3031/2059/1597 3046/2084/1597 3045/2083/1597 +f 3031/2059/1597 3032/2061/1597 3047/2085/1597 3046/2084/1597 +f 3032/2061/1597 3033/2063/1597 3048/2086/1597 3047/2085/1597 +f 3033/2063/1597 3034/2065/1597 3049/2087/1597 3048/2086/1597 +f 3034/2065/1597 3035/2067/1597 3050/2088/1597 3049/2087/1597 +f 3035/2067/1597 3036/2069/1597 3051/2089/1597 3050/2088/1597 +f 3036/2069/1597 3037/2071/1597 3052/2090/1597 3051/2089/1597 +f 3037/2071/1597 3038/2073/1597 3053/2091/1597 3052/2090/1597 +f 3038/2073/1597 3039/2075/1597 3054/2092/1597 3053/2091/1597 +f 3039/2075/1597 3040/2077/1597 3055/2093/1597 3054/2092/1597 +f 3040/2077/1597 3041/2079/1597 3056/2094/1597 3055/2093/1597 +f 3042/2081/1597 3043/2080/1597 3058/2095/1597 3057/2096/1597 +f 3043/2080/1597 3044/2082/1597 3059/2097/1597 3058/2095/1597 +f 3044/2082/1597 3045/2083/1597 3060/2098/1597 3059/2097/1597 +f 3045/2083/1597 3046/2084/1597 3061/2099/1597 3060/2098/1597 +f 3046/2084/1597 3047/2085/1597 3062/2100/1597 3061/2099/1597 +f 3047/2085/1597 3048/2086/1597 3063/2101/1597 3062/2100/1597 +f 3048/2086/1597 3049/2087/1597 3064/2102/1597 3063/2101/1597 +f 3049/2087/1597 3050/2088/1597 3065/2103/1597 3064/2102/1597 +f 3050/2088/1597 3051/2089/1597 3066/2104/1597 3065/2103/1597 +f 3051/2089/1597 3052/2090/1597 3067/2105/1597 3066/2104/1597 +f 3052/2090/1597 3053/2091/1597 3068/2106/1597 3067/2105/1597 +f 3053/2091/1597 3054/2092/1597 3069/2107/1597 3068/2106/1597 +f 3054/2092/1597 3055/2093/1597 3070/2108/1597 3069/2107/1597 +f 3055/2093/1597 3056/2094/1597 3071/2109/1597 3070/2108/1597 +f 3057/2096/1597 3058/2095/1597 3073/2110/1597 3072/2111/1597 +f 3058/2095/1597 3059/2097/1597 3074/2112/1597 3073/2110/1597 +f 3059/2097/1597 3060/2098/1597 3075/2113/1597 3074/2112/1597 +f 3060/2098/1597 3061/2099/1597 3076/2114/1597 3075/2113/1597 +f 3061/2099/1597 3062/2100/1597 3077/2115/1597 3076/2114/1597 +f 3062/2100/1597 3063/2101/1597 3078/2116/1597 3077/2115/1597 +f 3063/2101/1597 3064/2102/1597 3079/2117/1597 3078/2116/1597 +f 3064/2102/1597 3065/2103/1597 3080/2118/1597 3079/2117/1597 +f 3065/2103/1597 3066/2104/1597 3081/2119/1597 3080/2118/1597 +f 3066/2104/1597 3067/2105/1597 3082/2120/1597 3081/2119/1597 +f 3067/2105/1597 3068/2106/1597 3083/2121/1597 3082/2120/1597 +f 3068/2106/1597 3069/2107/1597 3084/2122/1597 3083/2121/1597 +f 3069/2107/1597 3070/2108/1597 3085/2123/1597 3084/2122/1597 +f 3070/2108/1597 3071/2109/1597 3086/2124/1597 3085/2123/1597 +f 3072/2111/1597 3073/2110/1597 3088/2125/1597 3087/2126/1597 +f 3073/2110/1597 3074/2112/1597 3089/2127/1597 3088/2125/1597 +f 3074/2112/1597 3075/2113/1597 3090/2128/1597 3089/2127/1597 +f 3075/2113/1597 3076/2114/1597 3091/2129/1597 3090/2128/1597 +f 3076/2114/1597 3077/2115/1597 3092/2130/1597 3091/2129/1597 +f 3077/2115/1597 3078/2116/1597 3093/2131/1597 3092/2130/1597 +f 3078/2116/1597 3079/2117/1597 3094/2132/1597 3093/2131/1597 +f 3079/2117/1597 3080/2118/1597 3095/2133/1597 3094/2132/1597 +f 3080/2118/1597 3081/2119/1597 3096/2134/1597 3095/2133/1597 +f 3081/2119/1597 3082/2120/1597 3097/2135/1597 3096/2134/1597 +f 3082/2120/1597 3083/2121/1597 3098/2136/1597 3097/2135/1597 +f 3083/2121/1597 3084/2122/1597 3099/2137/1597 3098/2136/1597 +f 3084/2122/1597 3085/2123/1597 3100/2138/1597 3099/2137/1597 +f 3085/2123/1597 3086/2124/1597 3101/2139/1597 3100/2138/1597 +f 3087/2126/1597 3088/2125/1597 3103/2140/1597 3102/2141/1597 +f 3088/2125/1597 3089/2127/1597 3104/2142/1597 3103/2140/1597 +f 3089/2127/1597 3090/2128/1597 3105/2143/1597 3104/2142/1597 +f 3090/2128/1597 3091/2129/1597 3106/2144/1597 3105/2143/1597 +f 3091/2129/1597 3092/2130/1597 3107/2145/1597 3106/2144/1597 +f 3092/2130/1597 3093/2131/1597 3108/2146/1597 3107/2145/1597 +f 3093/2131/1597 3094/2132/1597 3109/2147/1597 3108/2146/1597 +f 3094/2132/1597 3095/2133/1597 3110/2148/1597 3109/2147/1597 +f 3095/2133/1597 3096/2134/1597 3111/2149/1597 3110/2148/1597 +f 3096/2134/1597 3097/2135/1597 3112/2150/1597 3111/2149/1597 +f 3097/2135/1597 3098/2136/1597 3113/2151/1597 3112/2150/1597 +f 3098/2136/1597 3099/2137/1597 3114/2152/1597 3113/2151/1597 +f 3099/2137/1597 3100/2138/1597 3115/2153/1597 3114/2152/1597 +f 3100/2138/1597 3101/2139/1597 3116/2154/1597 3115/2153/1597 +f 3102/2141/1597 3103/2140/1597 3118/2155/1597 3117/2156/1597 +f 3103/2140/1597 3104/2142/1597 3119/2157/1597 3118/2155/1597 +f 3104/2142/1597 3105/2143/1597 3120/2158/1597 3119/2157/1597 +f 3105/2143/1597 3106/2144/1597 3121/2159/1597 3120/2158/1597 +f 3106/2144/1597 3107/2145/1597 3122/2160/1597 3121/2159/1597 +f 3107/2145/1597 3108/2146/1597 3123/2161/1597 3122/2160/1597 +f 3108/2146/1597 3109/2147/1597 3124/2162/1597 3123/2161/1597 +f 3109/2147/1597 3110/2148/1597 3125/2163/1597 3124/2162/1597 +f 3110/2148/1597 3111/2149/1597 3126/2164/1597 3125/2163/1597 +f 3111/2149/1597 3112/2150/1597 3127/2165/1597 3126/2164/1597 +f 3112/2150/1597 3113/2151/1597 3128/2166/1597 3127/2165/1597 +f 3113/2151/1597 3114/2152/1597 3129/2167/1597 3128/2166/1597 +f 3114/2152/1597 3115/2153/1597 3130/2168/1597 3129/2167/1597 +f 3115/2153/1597 3116/2154/1597 3131/2169/1597 3130/2168/1597 +f 3117/2156/1597 3118/2155/1597 3133/2170/1597 3132/2171/1597 +f 3118/2155/1597 3119/2157/1597 3134/2172/1597 3133/2170/1597 +f 3119/2157/1597 3120/2158/1597 3135/2173/1597 3134/2172/1597 +f 3120/2158/1597 3121/2159/1597 3136/2174/1597 3135/2173/1597 +f 3121/2159/1597 3122/2160/1597 3137/2175/1597 3136/2174/1597 +f 3122/2160/1597 3123/2161/1597 3138/2176/1597 3137/2175/1597 +f 3123/2161/1597 3124/2162/1597 3139/2177/1597 3138/2176/1597 +f 3124/2162/1597 3125/2163/1597 3140/2178/1597 3139/2177/1597 +f 3125/2163/1597 3126/2164/1597 3141/2179/1597 3140/2178/1597 +f 3126/2164/1597 3127/2165/1597 3142/2180/1597 3141/2179/1597 +f 3127/2165/1597 3128/2166/1597 3143/2181/1597 3142/2180/1597 +f 3128/2166/1597 3129/2167/1597 3144/2182/1597 3143/2181/1597 +f 3129/2167/1597 3130/2168/1597 3145/2183/1597 3144/2182/1597 +f 3130/2168/1597 3131/2169/1597 3146/2184/1597 3145/2183/1597 +f 3132/2171/1597 3133/2170/1597 3148/2185/1597 3147/2186/1597 +f 3133/2170/1597 3134/2172/1597 3149/2187/1597 3148/2185/1597 +f 3134/2172/1597 3135/2173/1597 3150/2188/1597 3149/2187/1597 +f 3135/2173/1597 3136/2174/1597 3151/2189/1597 3150/2188/1597 +f 3136/2174/1597 3137/2175/1597 3152/2190/1597 3151/2189/1597 +f 3137/2175/1597 3138/2176/1597 3153/2191/1597 3152/2190/1597 +f 3138/2176/1597 3139/2177/1597 3154/2192/1597 3153/2191/1597 +f 3139/2177/1597 3140/2178/1597 3155/2193/1597 3154/2192/1597 +f 3140/2178/1597 3141/2179/1597 3156/2194/1597 3155/2193/1597 +f 3141/2179/1597 3142/2180/1597 3157/2195/1597 3156/2194/1597 +f 3142/2180/1597 3143/2181/1597 3158/2196/1597 3157/2195/1597 +f 3143/2181/1597 3144/2182/1597 3159/2197/1597 3158/2196/1597 +f 3144/2182/1597 3145/2183/1597 3160/2198/1597 3159/2197/1597 +f 3145/2183/1597 3146/2184/1597 3161/2199/1597 3160/2198/1597 +f 3147/2186/1597 3148/2185/1597 3163/2200/1597 3162/2201/1597 +f 3148/2185/1597 3149/2187/1597 3164/2202/1597 3163/2200/1597 +f 3149/2187/1597 3150/2188/1597 3165/2203/1597 3164/2202/1597 +f 3150/2188/1597 3151/2189/1597 3166/2204/1597 3165/2203/1597 +f 3151/2189/1597 3152/2190/1597 3167/2205/1597 3166/2204/1597 +f 3152/2190/1597 3153/2191/1597 3168/2206/1597 3167/2205/1597 +f 3153/2191/1597 3154/2192/1597 3169/2207/1597 3168/2206/1597 +f 3154/2192/1597 3155/2193/1597 3170/2208/1597 3169/2207/1597 +f 3155/2193/1597 3156/2194/1597 3171/2209/1597 3170/2208/1597 +f 3156/2194/1597 3157/2195/1597 3172/2210/1597 3171/2209/1597 +f 3157/2195/1597 3158/2196/1597 3173/2211/1597 3172/2210/1597 +f 3158/2196/1597 3159/2197/1597 3174/2212/1597 3173/2211/1597 +f 3159/2197/1597 3160/2198/1597 3175/2213/1597 3174/2212/1597 +f 3160/2198/1597 3161/2199/1597 3176/2214/1597 3175/2213/1597 +f 3162/2201/1597 3163/2200/1597 3178/2215/1597 3177/2216/1597 +f 3163/2200/1597 3164/2202/1597 3179/2217/1597 3178/2215/1597 +f 3164/2202/1597 3165/2203/1597 3180/2218/1597 3179/2217/1597 +f 3165/2203/1597 3166/2204/1597 3181/2219/1597 3180/2218/1597 +f 3166/2204/1597 3167/2205/1597 3182/2220/1597 3181/2219/1597 +f 3167/2205/1597 3168/2206/1597 3183/2221/1597 3182/2220/1597 +f 3168/2206/1597 3169/2207/1597 3184/2222/1597 3183/2221/1597 +f 3169/2207/1597 3170/2208/1597 3185/2223/1597 3184/2222/1597 +f 3170/2208/1597 3171/2209/1597 3186/2224/1597 3185/2223/1597 +f 3171/2209/1597 3172/2210/1597 3187/2225/1597 3186/2224/1597 +f 3172/2210/1597 3173/2211/1597 3188/2226/1597 3187/2225/1597 +f 3173/2211/1597 3174/2212/1597 3189/2227/1597 3188/2226/1597 +f 3174/2212/1597 3175/2213/1597 3190/2228/1597 3189/2227/1597 +f 3175/2213/1597 3176/2214/1597 3191/2229/1597 3190/2228/1597 +f 3177/2216/1597 3178/2215/1597 3193/2230/1597 3192/2231/1597 +f 3178/2215/1597 3179/2217/1597 3194/2232/1597 3193/2230/1597 +f 3179/2217/1597 3180/2218/1597 3195/2233/1597 3194/2232/1597 +f 3180/2218/1597 3181/2219/1597 3196/2234/1597 3195/2233/1597 +f 3181/2219/1597 3182/2220/1597 3197/2235/1597 3196/2234/1597 +f 3182/2220/1597 3183/2221/1597 3198/2236/1597 3197/2235/1597 +f 3183/2221/1597 3184/2222/1597 3199/2237/1597 3198/2236/1597 +f 3184/2222/1597 3185/2223/1597 3200/2238/1597 3199/2237/1597 +f 3185/2223/1597 3186/2224/1597 3201/2239/1597 3200/2238/1597 +f 3186/2224/1597 3187/2225/1597 3202/2240/1597 3201/2239/1597 +f 3187/2225/1597 3188/2226/1597 3203/2241/1597 3202/2240/1597 +f 3188/2226/1597 3189/2227/1597 3204/2242/1597 3203/2241/1597 +f 3189/2227/1597 3190/2228/1597 3205/2243/1597 3204/2242/1597 +f 3190/2228/1597 3191/2229/1597 3206/2244/1597 3205/2243/1597 +f 3192/2231/1597 3193/2230/1597 3208/2245/1597 3207/2246/1597 +f 3193/2230/1597 3194/2232/1597 3209/2247/1597 3208/2245/1597 +f 3194/2232/1597 3195/2233/1597 3210/2248/1597 3209/2247/1597 +f 3195/2233/1597 3196/2234/1597 3211/2249/1597 3210/2248/1597 +f 3196/2234/1597 3197/2235/1597 3212/2250/1597 3211/2249/1597 +f 3197/2235/1597 3198/2236/1597 3213/2251/1597 3212/2250/1597 +f 3198/2236/1597 3199/2237/1597 3214/2252/1597 3213/2251/1597 +f 3199/2237/1597 3200/2238/1597 3215/2253/1597 3214/2252/1597 +f 3200/2238/1597 3201/2239/1597 3216/2254/1597 3215/2253/1597 +f 3201/2239/1597 3202/2240/1597 3217/2255/1597 3216/2254/1597 +f 3202/2240/1597 3203/2241/1597 3218/2256/1597 3217/2255/1597 +f 3203/2241/1597 3204/2242/1597 3219/2257/1597 3218/2256/1597 +f 3204/2242/1597 3205/2243/1597 3220/2258/1597 3219/2257/1597 +f 3205/2243/1597 3206/2244/1597 3221/2259/1597 3220/2258/1597 +f 3207/2246/1597 3208/2245/1597 3223/2260/1597 3222/2261/1597 +f 3208/2245/1597 3209/2247/1597 3224/2262/1597 3223/2260/1597 +f 3209/2247/1597 3210/2248/1597 3225/2263/1597 3224/2262/1597 +f 3210/2248/1597 3211/2249/1597 3226/2264/1597 3225/2263/1597 +f 3211/2249/1597 3212/2250/1597 3227/2265/1597 3226/2264/1597 +f 3212/2250/1597 3213/2251/1597 3228/2266/1597 3227/2265/1597 +f 3213/2251/1597 3214/2252/1597 3229/2267/1597 3228/2266/1597 +f 3214/2252/1597 3215/2253/1597 3230/2268/1597 3229/2267/1597 +f 3215/2253/1597 3216/2254/1597 3231/2269/1597 3230/2268/1597 +f 3216/2254/1597 3217/2255/1597 3232/2270/1597 3231/2269/1597 +f 3217/2255/1597 3218/2256/1597 3233/2271/1597 3232/2270/1597 +f 3218/2256/1597 3219/2257/1597 3234/2272/1597 3233/2271/1597 +f 3219/2257/1597 3220/2258/1597 3235/2273/1597 3234/2272/1597 +f 3220/2258/1597 3221/2259/1597 3236/2274/1597 3235/2273/1597 +f 2735/2275/1597 2816/2276/1597 3012/2050/1597 2847/2277/1597 +f 2816/2276/1597 2815/2278/1597 3013/2051/1597 3012/2050/1597 +f 2815/2278/1597 2814/2279/1597 3014/2054/1597 3013/2051/1597 +f 2814/2279/1597 2813/2280/1597 3015/2056/1597 3014/2054/1597 +f 2813/2280/1597 2812/2281/1597 3016/2058/1597 3015/2056/1597 +f 2812/2281/1597 2811/2282/1597 3017/2060/1597 3016/2058/1597 +f 2811/2282/1597 2810/2283/1597 3018/2062/1597 3017/2060/1597 +f 2810/2283/1597 2809/2284/1597 3019/2064/1597 3018/2062/1597 +f 2809/2284/1597 2808/2285/1597 3020/2066/1597 3019/2064/1597 +f 2808/2285/1597 2807/2286/1597 3021/2068/1597 3020/2066/1597 +f 2807/2286/1597 2806/2287/1597 3022/2070/1597 3021/2068/1597 +f 2806/2287/1597 2805/2288/1597 3023/2072/1597 3022/2070/1597 +f 2805/2288/1597 2804/2289/1597 3024/2074/1597 3023/2072/1597 +f 2804/2289/1597 2803/2290/1597 3025/2076/1597 3024/2074/1597 +f 2803/2290/1597 2802/2291/1597 3026/2078/1597 3025/2076/1597 +f 2802/2291/1597 2736/2292/1597 2817/2293/1597 3026/2078/1597 +f 3026/2078/1597 2817/2293/1597 2818/2294/1597 3041/2079/1597 +f 3041/2079/1597 2818/2294/1597 2819/2295/1597 3056/2094/1597 +f 3056/2094/1597 2819/2295/1597 2820/2296/1597 3071/2109/1597 +f 3071/2109/1597 2820/2296/1597 2821/2297/1597 3086/2124/1597 +f 3086/2124/1597 2821/2297/1597 2822/2298/1597 3101/2139/1597 +f 3101/2139/1597 2822/2298/1597 2823/2299/1597 3116/2154/1597 +f 3116/2154/1597 2823/2299/1597 2824/2300/1597 3131/2169/1597 +f 3131/2169/1597 2824/2300/1597 2825/2301/1597 3146/2184/1597 +f 3146/2184/1597 2825/2301/1597 2826/2302/1597 3161/2199/1597 +f 3161/2199/1597 2826/2302/1597 2827/2303/1597 3176/2214/1597 +f 3176/2214/1597 2827/2303/1597 2828/2304/1597 3191/2229/1597 +f 3191/2229/1597 2828/2304/1597 2829/2305/1597 3206/2244/1597 +f 3206/2244/1597 2829/2305/1597 2830/2306/1597 3221/2259/1597 +f 3221/2259/1597 2830/2306/1597 2831/2307/1597 3236/2274/1597 +f 3236/2274/1597 2831/2307/1597 2732/2308/1597 2772/2309/1597 +f 3235/2273/1597 3236/2274/1597 2772/2309/1597 2773/2310/1597 +f 3234/2272/1597 3235/2273/1597 2773/2310/1597 2774/2311/1597 +f 3233/2271/1597 3234/2272/1597 2774/2311/1597 2775/2312/1597 +f 3232/2270/1597 3233/2271/1597 2775/2312/1597 2776/2313/1597 +f 3231/2269/1597 3232/2270/1597 2776/2313/1597 2777/2314/1597 +f 3230/2268/1597 3231/2269/1597 2777/2314/1597 2778/2315/1597 +f 3229/2267/1597 3230/2268/1597 2778/2315/1597 2779/2316/1597 +f 3228/2266/1597 3229/2267/1597 2779/2316/1597 2780/2317/1597 +f 3227/2265/1597 3228/2266/1597 2780/2317/1597 2781/2318/1597 +f 3226/2264/1597 3227/2265/1597 2781/2318/1597 2782/2319/1597 +f 3225/2263/1597 3226/2264/1597 2782/2319/1597 2783/2320/1597 +f 3224/2262/1597 3225/2263/1597 2783/2320/1597 2784/2321/1597 +f 3223/2260/1597 3224/2262/1597 2784/2321/1597 2785/2322/1597 +f 3222/2261/1597 3223/2260/1597 2785/2322/1597 2786/2323/1597 +f 2861/2324/1597 3222/2261/1597 2786/2323/1597 2729/2325/1597 +f 2860/2326/1597 3207/2246/1597 3222/2261/1597 2861/2324/1597 +f 2859/2327/1597 3192/2231/1597 3207/2246/1597 2860/2326/1597 +f 2858/2328/1597 3177/2216/1597 3192/2231/1597 2859/2327/1597 +f 2857/2329/1597 3162/2201/1597 3177/2216/1597 2858/2328/1597 +f 2856/2330/1597 3147/2186/1597 3162/2201/1597 2857/2329/1597 +f 2855/2331/1597 3132/2171/1597 3147/2186/1597 2856/2330/1597 +f 2854/2332/1597 3117/2156/1597 3132/2171/1597 2855/2331/1597 +f 2853/2333/1597 3102/2141/1597 3117/2156/1597 2854/2332/1597 +f 2852/2334/1597 3087/2126/1597 3102/2141/1597 2853/2333/1597 +f 2851/2335/1597 3072/2111/1597 3087/2126/1597 2852/2334/1597 +f 2850/2336/1597 3057/2096/1597 3072/2111/1597 2851/2335/1597 +f 2849/2337/1597 3042/2081/1597 3057/2096/1597 2850/2336/1597 +f 2848/2338/1597 3027/2053/1597 3042/2081/1597 2849/2337/1597 +f 2847/2277/1597 3012/2050/1597 3027/2053/1597 2848/2338/1597 +f 3237/2339/1597 3238/2340/1597 3253/2341/1597 3252/2342/1597 +f 3238/2340/1597 3239/2343/1597 3254/2344/1597 3253/2341/1597 +f 3239/2343/1597 3240/2345/1597 3255/2346/1597 3254/2344/1597 +f 3240/2345/1597 3241/2347/1597 3256/2348/1597 3255/2346/1597 +f 3241/2347/1597 3242/2349/1597 3257/2350/1597 3256/2348/1597 +f 3242/2349/1597 3243/2351/1597 3258/2352/1597 3257/2350/1597 +f 3243/2351/1597 3244/2353/1597 3259/2354/1597 3258/2352/1597 +f 3244/2353/1597 3245/2355/1597 3260/2356/1597 3259/2354/1597 +f 3245/2355/1597 3246/2357/1597 3261/2358/1597 3260/2356/1597 +f 3246/2357/1597 3247/2359/1597 3262/2360/1597 3261/2358/1597 +f 3247/2359/1597 3248/2361/1597 3263/2362/1597 3262/2360/1597 +f 3248/2361/1597 3249/2363/1597 3264/2364/1597 3263/2362/1597 +f 3249/2363/1597 3250/2365/1597 3265/2366/1597 3264/2364/1597 +f 3250/2365/1597 3251/2367/1597 3266/2368/1597 3265/2366/1597 +f 3252/2342/1597 3253/2341/1597 3268/2369/1597 3267/2370/1597 +f 3253/2341/1597 3254/2344/1597 3269/2371/1597 3268/2369/1597 +f 3254/2344/1597 3255/2346/1597 3270/2372/1597 3269/2371/1597 +f 3255/2346/1597 3256/2348/1597 3271/2373/1597 3270/2372/1597 +f 3256/2348/1597 3257/2350/1597 3272/2374/1597 3271/2373/1597 +f 3257/2350/1597 3258/2352/1597 3273/2375/1597 3272/2374/1597 +f 3258/2352/1597 3259/2354/1597 3274/2376/1597 3273/2375/1597 +f 3259/2354/1597 3260/2356/1597 3275/2377/1597 3274/2376/1597 +f 3260/2356/1597 3261/2358/1597 3276/2378/1597 3275/2377/1597 +f 3261/2358/1597 3262/2360/1597 3277/2379/1597 3276/2378/1597 +f 3262/2360/1597 3263/2362/1597 3278/2380/1597 3277/2379/1597 +f 3263/2362/1597 3264/2364/1597 3279/2381/1597 3278/2380/1597 +f 3264/2364/1597 3265/2366/1597 3280/2382/1597 3279/2381/1597 +f 3265/2366/1597 3266/2368/1597 3281/2383/1597 3280/2382/1597 +f 3267/2370/1597 3268/2369/1597 3283/2384/1597 3282/2385/1597 +f 3268/2369/1597 3269/2371/1597 3284/2386/1597 3283/2384/1597 +f 3269/2371/1597 3270/2372/1597 3285/2387/1597 3284/2386/1597 +f 3270/2372/1597 3271/2373/1597 3286/2388/1597 3285/2387/1597 +f 3271/2373/1597 3272/2374/1597 3287/2389/1597 3286/2388/1597 +f 3272/2374/1597 3273/2375/1597 3288/2390/1597 3287/2389/1597 +f 3273/2375/1597 3274/2376/1597 3289/2391/1597 3288/2390/1597 +f 3274/2376/1597 3275/2377/1597 3290/2392/1597 3289/2391/1597 +f 3275/2377/1597 3276/2378/1597 3291/2393/1597 3290/2392/1597 +f 3276/2378/1597 3277/2379/1597 3292/2394/1597 3291/2393/1597 +f 3277/2379/1597 3278/2380/1597 3293/2395/1597 3292/2394/1597 +f 3278/2380/1597 3279/2381/1597 3294/2396/1597 3293/2395/1597 +f 3279/2381/1597 3280/2382/1597 3295/2397/1597 3294/2396/1597 +f 3280/2382/1597 3281/2383/1597 3296/2398/1597 3295/2397/1597 +f 3282/2385/1597 3283/2384/1597 3298/2399/1597 3297/2400/1597 +f 3283/2384/1597 3284/2386/1597 3299/2401/1597 3298/2399/1597 +f 3284/2386/1597 3285/2387/1597 3300/2402/1597 3299/2401/1597 +f 3285/2387/1597 3286/2388/1597 3301/2403/1597 3300/2402/1597 +f 3286/2388/1597 3287/2389/1597 3302/2404/1597 3301/2403/1597 +f 3287/2389/1597 3288/2390/1597 3303/2405/1597 3302/2404/1597 +f 3288/2390/1597 3289/2391/1597 3304/2406/1597 3303/2405/1597 +f 3289/2391/1597 3290/2392/1597 3305/2407/1597 3304/2406/1597 +f 3290/2392/1597 3291/2393/1597 3306/2408/1597 3305/2407/1597 +f 3291/2393/1597 3292/2394/1597 3307/2409/1597 3306/2408/1597 +f 3292/2394/1597 3293/2395/1597 3308/2410/1597 3307/2409/1597 +f 3293/2395/1597 3294/2396/1597 3309/2411/1597 3308/2410/1597 +f 3294/2396/1597 3295/2397/1597 3310/2412/1597 3309/2411/1597 +f 3295/2397/1597 3296/2398/1597 3311/2413/1597 3310/2412/1597 +f 3297/2400/1597 3298/2399/1597 3313/2414/1597 3312/2415/1597 +f 3298/2399/1597 3299/2401/1597 3314/2416/1597 3313/2414/1597 +f 3299/2401/1597 3300/2402/1597 3315/2417/1597 3314/2416/1597 +f 3300/2402/1597 3301/2403/1597 3316/2418/1597 3315/2417/1597 +f 3301/2403/1597 3302/2404/1597 3317/2419/1597 3316/2418/1597 +f 3302/2404/1597 3303/2405/1597 3318/2420/1597 3317/2419/1597 +f 3303/2405/1597 3304/2406/1597 3319/2421/1597 3318/2420/1597 +f 3304/2406/1597 3305/2407/1597 3320/2422/1597 3319/2421/1597 +f 3305/2407/1597 3306/2408/1597 3321/2423/1597 3320/2422/1597 +f 3306/2408/1597 3307/2409/1597 3322/2424/1597 3321/2423/1597 +f 3307/2409/1597 3308/2410/1597 3323/2425/1597 3322/2424/1597 +f 3308/2410/1597 3309/2411/1597 3324/2426/1597 3323/2425/1597 +f 3309/2411/1597 3310/2412/1597 3325/2427/1597 3324/2426/1597 +f 3310/2412/1597 3311/2413/1597 3326/2428/1597 3325/2427/1597 +f 3312/2415/1597 3313/2414/1597 3328/2429/1597 3327/2430/1597 +f 3313/2414/1597 3314/2416/1597 3329/2431/1597 3328/2429/1597 +f 3314/2416/1597 3315/2417/1597 3330/2432/1597 3329/2431/1597 +f 3315/2417/1597 3316/2418/1597 3331/2433/1597 3330/2432/1597 +f 3316/2418/1597 3317/2419/1597 3332/2434/1597 3331/2433/1597 +f 3317/2419/1597 3318/2420/1597 3333/2435/1597 3332/2434/1597 +f 3318/2420/1597 3319/2421/1597 3334/2436/1597 3333/2435/1597 +f 3319/2421/1597 3320/2422/1597 3335/2437/1597 3334/2436/1597 +f 3320/2422/1597 3321/2423/1597 3336/2438/1597 3335/2437/1597 +f 3321/2423/1597 3322/2424/1597 3337/2439/1597 3336/2438/1597 +f 3322/2424/1597 3323/2425/1597 3338/2440/1597 3337/2439/1597 +f 3323/2425/1597 3324/2426/1597 3339/2441/1597 3338/2440/1597 +f 3324/2426/1597 3325/2427/1597 3340/2442/1597 3339/2441/1597 +f 3325/2427/1597 3326/2428/1597 3341/2443/1597 3340/2442/1597 +f 3327/2430/1597 3328/2429/1597 3343/2444/1597 3342/2445/1597 +f 3328/2429/1597 3329/2431/1597 3344/2446/1597 3343/2444/1597 +f 3329/2431/1597 3330/2432/1597 3345/2447/1597 3344/2446/1597 +f 3330/2432/1597 3331/2433/1597 3346/2448/1597 3345/2447/1597 +f 3331/2433/1597 3332/2434/1597 3347/2449/1597 3346/2448/1597 +f 3332/2434/1597 3333/2435/1597 3348/2450/1597 3347/2449/1597 +f 3333/2435/1597 3334/2436/1597 3349/2451/1597 3348/2450/1597 +f 3334/2436/1597 3335/2437/1597 3350/2452/1597 3349/2451/1597 +f 3335/2437/1597 3336/2438/1597 3351/2453/1597 3350/2452/1597 +f 3336/2438/1597 3337/2439/1597 3352/2454/1597 3351/2453/1597 +f 3337/2439/1597 3338/2440/1597 3353/2455/1597 3352/2454/1597 +f 3338/2440/1597 3339/2441/1597 3354/2456/1597 3353/2455/1597 +f 3339/2441/1597 3340/2442/1597 3355/2457/1597 3354/2456/1597 +f 3340/2442/1597 3341/2443/1597 3356/2458/1597 3355/2457/1597 +f 3342/2445/1597 3343/2444/1597 3358/2459/1597 3357/2460/1597 +f 3343/2444/1597 3344/2446/1597 3359/2461/1597 3358/2459/1597 +f 3344/2446/1597 3345/2447/1597 3360/2462/1597 3359/2461/1597 +f 3345/2447/1597 3346/2448/1597 3361/2463/1597 3360/2462/1597 +f 3346/2448/1597 3347/2449/1597 3362/2464/1597 3361/2463/1597 +f 3347/2449/1597 3348/2450/1597 3363/2465/1597 3362/2464/1597 +f 3348/2450/1597 3349/2451/1597 3364/2466/1597 3363/2465/1597 +f 3349/2451/1597 3350/2452/1597 3365/2467/1597 3364/2466/1597 +f 3350/2452/1597 3351/2453/1597 3366/2468/1597 3365/2467/1597 +f 3351/2453/1597 3352/2454/1597 3367/2469/1597 3366/2468/1597 +f 3352/2454/1597 3353/2455/1597 3368/2470/1597 3367/2469/1597 +f 3353/2455/1597 3354/2456/1597 3369/2471/1597 3368/2470/1597 +f 3354/2456/1597 3355/2457/1597 3370/2472/1597 3369/2471/1597 +f 3355/2457/1597 3356/2458/1597 3371/2473/1597 3370/2472/1597 +f 3357/2460/1597 3358/2459/1597 3373/2474/1597 3372/2475/1597 +f 3358/2459/1597 3359/2461/1597 3374/2476/1597 3373/2474/1597 +f 3359/2461/1597 3360/2462/1597 3375/2477/1597 3374/2476/1597 +f 3360/2462/1597 3361/2463/1597 3376/2478/1597 3375/2477/1597 +f 3361/2463/1597 3362/2464/1597 3377/2479/1597 3376/2478/1597 +f 3362/2464/1597 3363/2465/1597 3378/2480/1597 3377/2479/1597 +f 3363/2465/1597 3364/2466/1597 3379/2481/1597 3378/2480/1597 +f 3364/2466/1597 3365/2467/1597 3380/2482/1597 3379/2481/1597 +f 3365/2467/1597 3366/2468/1597 3381/2483/1597 3380/2482/1597 +f 3366/2468/1597 3367/2469/1597 3382/2484/1597 3381/2483/1597 +f 3367/2469/1597 3368/2470/1597 3383/2485/1597 3382/2484/1597 +f 3368/2470/1597 3369/2471/1597 3384/2486/1597 3383/2485/1597 +f 3369/2471/1597 3370/2472/1597 3385/2487/1597 3384/2486/1597 +f 3370/2472/1597 3371/2473/1597 3386/2488/1597 3385/2487/1597 +f 3372/2475/1597 3373/2474/1597 3388/2489/1597 3387/2490/1597 +f 3373/2474/1597 3374/2476/1597 3389/2491/1597 3388/2489/1597 +f 3374/2476/1597 3375/2477/1597 3390/2492/1597 3389/2491/1597 +f 3375/2477/1597 3376/2478/1597 3391/2493/1597 3390/2492/1597 +f 3376/2478/1597 3377/2479/1597 3392/2494/1597 3391/2493/1597 +f 3377/2479/1597 3378/2480/1597 3393/2495/1597 3392/2494/1597 +f 3378/2480/1597 3379/2481/1597 3394/2496/1597 3393/2495/1597 +f 3379/2481/1597 3380/2482/1597 3395/2497/1597 3394/2496/1597 +f 3380/2482/1597 3381/2483/1597 3396/2498/1597 3395/2497/1597 +f 3381/2483/1597 3382/2484/1597 3397/2499/1597 3396/2498/1597 +f 3382/2484/1597 3383/2485/1597 3398/2500/1597 3397/2499/1597 +f 3383/2485/1597 3384/2486/1597 3399/2501/1597 3398/2500/1597 +f 3384/2486/1597 3385/2487/1597 3400/2502/1597 3399/2501/1597 +f 3385/2487/1597 3386/2488/1597 3401/2503/1597 3400/2502/1597 +f 3387/2490/1597 3388/2489/1597 3403/2504/1597 3402/2505/1597 +f 3388/2489/1597 3389/2491/1597 3404/2506/1597 3403/2504/1597 +f 3389/2491/1597 3390/2492/1597 3405/2507/1597 3404/2506/1597 +f 3390/2492/1597 3391/2493/1597 3406/2508/1597 3405/2507/1597 +f 3391/2493/1597 3392/2494/1597 3407/2509/1597 3406/2508/1597 +f 3392/2494/1597 3393/2495/1597 3408/2510/1597 3407/2509/1597 +f 3393/2495/1597 3394/2496/1597 3409/2511/1597 3408/2510/1597 +f 3394/2496/1597 3395/2497/1597 3410/2512/1597 3409/2511/1597 +f 3395/2497/1597 3396/2498/1597 3411/2513/1597 3410/2512/1597 +f 3396/2498/1597 3397/2499/1597 3412/2514/1597 3411/2513/1597 +f 3397/2499/1597 3398/2500/1597 3413/2515/1597 3412/2514/1597 +f 3398/2500/1597 3399/2501/1597 3414/2516/1597 3413/2515/1597 +f 3399/2501/1597 3400/2502/1597 3415/2517/1597 3414/2516/1597 +f 3400/2502/1597 3401/2503/1597 3416/2518/1597 3415/2517/1597 +f 3402/2505/1597 3403/2504/1597 3418/2519/1597 3417/2520/1597 +f 3403/2504/1597 3404/2506/1597 3419/2521/1597 3418/2519/1597 +f 3404/2506/1597 3405/2507/1597 3420/2522/1597 3419/2521/1597 +f 3405/2507/1597 3406/2508/1597 3421/2523/1597 3420/2522/1597 +f 3406/2508/1597 3407/2509/1597 3422/2524/1597 3421/2523/1597 +f 3407/2509/1597 3408/2510/1597 3423/2525/1597 3422/2524/1597 +f 3408/2510/1597 3409/2511/1597 3424/2526/1597 3423/2525/1597 +f 3409/2511/1597 3410/2512/1597 3425/2527/1597 3424/2526/1597 +f 3410/2512/1597 3411/2513/1597 3426/2528/1597 3425/2527/1597 +f 3411/2513/1597 3412/2514/1597 3427/2529/1597 3426/2528/1597 +f 3412/2514/1597 3413/2515/1597 3428/2530/1597 3427/2529/1597 +f 3413/2515/1597 3414/2516/1597 3429/2531/1597 3428/2530/1597 +f 3414/2516/1597 3415/2517/1597 3430/2532/1597 3429/2531/1597 +f 3415/2517/1597 3416/2518/1597 3431/2533/1597 3430/2532/1597 +f 3417/2520/1597 3418/2519/1597 3433/2534/1597 3432/2535/1597 +f 3418/2519/1597 3419/2521/1597 3434/2536/1597 3433/2534/1597 +f 3419/2521/1597 3420/2522/1597 3435/2537/1597 3434/2536/1597 +f 3420/2522/1597 3421/2523/1597 3436/2538/1597 3435/2537/1597 +f 3421/2523/1597 3422/2524/1597 3437/2539/1597 3436/2538/1597 +f 3422/2524/1597 3423/2525/1597 3438/2540/1597 3437/2539/1597 +f 3423/2525/1597 3424/2526/1597 3439/2541/1597 3438/2540/1597 +f 3424/2526/1597 3425/2527/1597 3440/2542/1597 3439/2541/1597 +f 3425/2527/1597 3426/2528/1597 3441/2543/1597 3440/2542/1597 +f 3426/2528/1597 3427/2529/1597 3442/2544/1597 3441/2543/1597 +f 3427/2529/1597 3428/2530/1597 3443/2545/1597 3442/2544/1597 +f 3428/2530/1597 3429/2531/1597 3444/2546/1597 3443/2545/1597 +f 3429/2531/1597 3430/2532/1597 3445/2547/1597 3444/2546/1597 +f 3430/2532/1597 3431/2533/1597 3446/2548/1597 3445/2547/1597 +f 3432/2535/1597 3433/2534/1597 3448/2549/1597 3447/2550/1597 +f 3433/2534/1597 3434/2536/1597 3449/2551/1597 3448/2549/1597 +f 3434/2536/1597 3435/2537/1597 3450/2552/1597 3449/2551/1597 +f 3435/2537/1597 3436/2538/1597 3451/2553/1597 3450/2552/1597 +f 3436/2538/1597 3437/2539/1597 3452/2554/1597 3451/2553/1597 +f 3437/2539/1597 3438/2540/1597 3453/2555/1597 3452/2554/1597 +f 3438/2540/1597 3439/2541/1597 3454/2556/1597 3453/2555/1597 +f 3439/2541/1597 3440/2542/1597 3455/2557/1597 3454/2556/1597 +f 3440/2542/1597 3441/2543/1597 3456/2558/1597 3455/2557/1597 +f 3441/2543/1597 3442/2544/1597 3457/2559/1597 3456/2558/1597 +f 3442/2544/1597 3443/2545/1597 3458/2560/1597 3457/2559/1597 +f 3443/2545/1597 3444/2546/1597 3459/2561/1597 3458/2560/1597 +f 3444/2546/1597 3445/2547/1597 3460/2562/1597 3459/2561/1597 +f 3445/2547/1597 3446/2548/1597 3461/2563/1597 3460/2562/1597 +f 2730/2564/1597 2757/2565/1597 3237/2339/1597 2862/2566/1597 +f 2757/2565/1597 2758/2567/1597 3238/2340/1597 3237/2339/1597 +f 2758/2567/1597 2759/2568/1597 3239/2343/1597 3238/2340/1597 +f 2759/2568/1597 2760/2569/1597 3240/2345/1597 3239/2343/1597 +f 2760/2569/1597 2761/2570/1597 3241/2347/1597 3240/2345/1597 +f 2761/2570/1597 2762/2571/1597 3242/2349/1597 3241/2347/1597 +f 2762/2571/1597 2763/2572/1597 3243/2351/1597 3242/2349/1597 +f 2763/2572/1597 2764/2573/1597 3244/2353/1597 3243/2351/1597 +f 2764/2573/1597 2765/2574/1597 3245/2355/1597 3244/2353/1597 +f 2765/2574/1597 2766/2575/1597 3246/2357/1597 3245/2355/1597 +f 2766/2575/1597 2767/2576/1597 3247/2359/1597 3246/2357/1597 +f 2767/2576/1597 2768/2577/1597 3248/2361/1597 3247/2359/1597 +f 2768/2577/1597 2769/2578/1597 3249/2363/1597 3248/2361/1597 +f 2769/2578/1597 2770/2579/1597 3250/2365/1597 3249/2363/1597 +f 2770/2579/1597 2771/2580/1597 3251/2367/1597 3250/2365/1597 +f 2771/2580/1597 2731/2581/1597 2877/2582/1597 3251/2367/1597 +f 3251/2367/1597 2877/2582/1597 2878/2583/1597 3266/2368/1597 +f 3266/2368/1597 2878/2583/1597 2879/2584/1597 3281/2383/1597 +f 3281/2383/1597 2879/2584/1597 2880/2585/1597 3296/2398/1597 +f 3296/2398/1597 2880/2585/1597 2881/2586/1597 3311/2413/1597 +f 3311/2413/1597 2881/2586/1597 2882/2587/1597 3326/2428/1597 +f 3326/2428/1597 2882/2587/1597 2883/2588/1597 3341/2443/1597 +f 3341/2443/1597 2883/2588/1597 2884/2589/1597 3356/2458/1597 +f 3356/2458/1597 2884/2589/1597 2885/2590/1597 3371/2473/1597 +f 3371/2473/1597 2885/2590/1597 2886/2591/1597 3386/2488/1597 +f 3386/2488/1597 2886/2591/1597 2887/2592/1597 3401/2503/1597 +f 3401/2503/1597 2887/2592/1597 2888/2593/1597 3416/2518/1597 +f 3416/2518/1597 2888/2593/1597 2889/2594/1597 3431/2533/1597 +f 3431/2533/1597 2889/2594/1597 2890/2595/1597 3446/2548/1597 +f 3446/2548/1597 2890/2595/1597 2891/2596/1597 3461/2563/1597 +f 3461/2563/1597 2891/2596/1597 2733/2597/1597 2832/2598/1597 +f 3460/2562/1597 3461/2563/1597 2832/2598/1597 2833/2599/1597 +f 3459/2561/1597 3460/2562/1597 2833/2599/1597 2834/2600/1597 +f 3458/2560/1597 3459/2561/1597 2834/2600/1597 2835/2601/1597 +f 3457/2559/1597 3458/2560/1597 2835/2601/1597 2836/2602/1597 +f 3456/2558/1597 3457/2559/1597 2836/2602/1597 2837/2603/1597 +f 3455/2557/1597 3456/2558/1597 2837/2603/1597 2838/2604/1597 +f 3454/2556/1597 3455/2557/1597 2838/2604/1597 2839/2605/1597 +f 3453/2555/1597 3454/2556/1597 2839/2605/1597 2840/2606/1597 +f 3452/2554/1597 3453/2555/1597 2840/2606/1597 2841/2607/1597 +f 3451/2553/1597 3452/2554/1597 2841/2607/1597 2842/2608/1597 +f 3450/2552/1597 3451/2553/1597 2842/2608/1597 2843/2609/1597 +f 3449/2551/1597 3450/2552/1597 2843/2609/1597 2844/2610/1597 +f 3448/2549/1597 3449/2551/1597 2844/2610/1597 2845/2611/1597 +f 3447/2550/1597 3448/2549/1597 2845/2611/1597 2846/2612/1597 +f 2876/2613/1597 3447/2550/1597 2846/2612/1597 2734/2614/1597 +f 2875/2615/1597 3432/2535/1597 3447/2550/1597 2876/2613/1597 +f 2874/2616/1597 3417/2520/1597 3432/2535/1597 2875/2615/1597 +f 2873/2617/1597 3402/2505/1597 3417/2520/1597 2874/2616/1597 +f 2872/2618/1597 3387/2490/1597 3402/2505/1597 2873/2617/1597 +f 2871/2619/1597 3372/2475/1597 3387/2490/1597 2872/2618/1597 +f 2870/2620/1597 3357/2460/1597 3372/2475/1597 2871/2619/1597 +f 2869/2621/1597 3342/2445/1597 3357/2460/1597 2870/2620/1597 +f 2868/2622/1597 3327/2430/1597 3342/2445/1597 2869/2621/1597 +f 2867/2623/1597 3312/2415/1597 3327/2430/1597 2868/2622/1597 +f 2866/2624/1597 3297/2400/1597 3312/2415/1597 2867/2623/1597 +f 2865/2625/1597 3282/2385/1597 3297/2400/1597 2866/2624/1597 +f 2864/2626/1597 3267/2370/1597 3282/2385/1597 2865/2625/1597 +f 2863/2627/1597 3252/2342/1597 3267/2370/1597 2864/2626/1597 +f 2862/2566/1597 3237/2339/1597 3252/2342/1597 2863/2627/1597 +f 3462/2628/1597 3463/2629/1597 3478/2630/1597 3477/2631/1597 +f 3463/2629/1597 3464/2632/1597 3479/2633/1597 3478/2630/1597 +f 3464/2632/1597 3465/2634/1597 3480/2635/1597 3479/2633/1597 +f 3465/2634/1597 3466/2636/1597 3481/2637/1597 3480/2635/1597 +f 3466/2636/1597 3467/2638/1597 3482/2639/1597 3481/2637/1597 +f 3467/2638/1597 3468/2640/1597 3483/2641/1597 3482/2639/1597 +f 3468/2640/1597 3469/2642/1597 3484/2643/1597 3483/2641/1597 +f 3469/2642/1597 3470/2644/1597 3485/2645/1597 3484/2643/1597 +f 3470/2644/1597 3471/2646/1597 3486/2647/1597 3485/2645/1597 +f 3471/2646/1597 3472/2648/1597 3487/2649/1597 3486/2647/1597 +f 3472/2648/1597 3473/2650/1597 3488/2651/1597 3487/2649/1597 +f 3473/2650/1597 3474/2652/1597 3489/2653/1597 3488/2651/1597 +f 3474/2652/1597 3475/2654/1597 3490/2655/1597 3489/2653/1597 +f 3475/2654/1597 3476/2656/1597 3491/2657/1597 3490/2655/1597 +f 3477/2631/1597 3478/2630/1597 3493/2658/1597 3492/2659/1597 +f 3478/2630/1597 3479/2633/1597 3494/2660/1597 3493/2658/1597 +f 3479/2633/1597 3480/2635/1597 3495/2661/1597 3494/2660/1597 +f 3480/2635/1597 3481/2637/1597 3496/2662/1597 3495/2661/1597 +f 3481/2637/1597 3482/2639/1597 3497/2663/1597 3496/2662/1597 +f 3482/2639/1597 3483/2641/1597 3498/2664/1597 3497/2663/1597 +f 3483/2641/1597 3484/2643/1597 3499/2665/1597 3498/2664/1597 +f 3484/2643/1597 3485/2645/1597 3500/2666/1597 3499/2665/1597 +f 3485/2645/1597 3486/2647/1597 3501/2667/1597 3500/2666/1597 +f 3486/2647/1597 3487/2649/1597 3502/2668/1597 3501/2667/1597 +f 3487/2649/1597 3488/2651/1597 3503/2669/1597 3502/2668/1597 +f 3488/2651/1597 3489/2653/1597 3504/2670/1597 3503/2669/1597 +f 3489/2653/1597 3490/2655/1597 3505/2671/1597 3504/2670/1597 +f 3490/2655/1597 3491/2657/1597 3506/2672/1597 3505/2671/1597 +f 3492/2659/1597 3493/2658/1597 3508/2673/1597 3507/2674/1597 +f 3493/2658/1597 3494/2660/1597 3509/2675/1597 3508/2673/1597 +f 3494/2660/1597 3495/2661/1597 3510/2676/1597 3509/2675/1597 +f 3495/2661/1597 3496/2662/1597 3511/2677/1597 3510/2676/1597 +f 3496/2662/1597 3497/2663/1597 3512/2678/1597 3511/2677/1597 +f 3497/2663/1597 3498/2664/1597 3513/2679/1597 3512/2678/1597 +f 3498/2664/1597 3499/2665/1597 3514/2680/1597 3513/2679/1597 +f 3499/2665/1597 3500/2666/1597 3515/2681/1597 3514/2680/1597 +f 3500/2666/1597 3501/2667/1597 3516/2682/1597 3515/2681/1597 +f 3501/2667/1597 3502/2668/1597 3517/2683/1597 3516/2682/1597 +f 3502/2668/1597 3503/2669/1597 3518/2684/1597 3517/2683/1597 +f 3503/2669/1597 3504/2670/1597 3519/2685/1597 3518/2684/1597 +f 3504/2670/1597 3505/2671/1597 3520/2686/1597 3519/2685/1597 +f 3505/2671/1597 3506/2672/1597 3521/2687/1597 3520/2686/1597 +f 3507/2674/1597 3508/2673/1597 3523/2688/1597 3522/2689/1597 +f 3508/2673/1597 3509/2675/1597 3524/2690/1597 3523/2688/1597 +f 3509/2675/1597 3510/2676/1597 3525/2691/1597 3524/2690/1597 +f 3510/2676/1597 3511/2677/1597 3526/2692/1597 3525/2691/1597 +f 3511/2677/1597 3512/2678/1597 3527/2693/1597 3526/2692/1597 +f 3512/2678/1597 3513/2679/1597 3528/2694/1597 3527/2693/1597 +f 3513/2679/1597 3514/2680/1597 3529/2695/1597 3528/2694/1597 +f 3514/2680/1597 3515/2681/1597 3530/2696/1597 3529/2695/1597 +f 3515/2681/1597 3516/2682/1597 3531/2697/1597 3530/2696/1597 +f 3516/2682/1597 3517/2683/1597 3532/2698/1597 3531/2697/1597 +f 3517/2683/1597 3518/2684/1597 3533/2699/1597 3532/2698/1597 +f 3518/2684/1597 3519/2685/1597 3534/2700/1597 3533/2699/1597 +f 3519/2685/1597 3520/2686/1597 3535/2701/1597 3534/2700/1597 +f 3520/2686/1597 3521/2687/1597 3536/2702/1597 3535/2701/1597 +f 3522/2689/1597 3523/2688/1597 3538/2703/1597 3537/2704/1597 +f 3523/2688/1597 3524/2690/1597 3539/2705/1597 3538/2703/1597 +f 3524/2690/1597 3525/2691/1597 3540/2706/1597 3539/2705/1597 +f 3525/2691/1597 3526/2692/1597 3541/2707/1597 3540/2706/1597 +f 3526/2692/1597 3527/2693/1597 3542/2708/1597 3541/2707/1597 +f 3527/2693/1597 3528/2694/1597 3543/2709/1597 3542/2708/1597 +f 3528/2694/1597 3529/2695/1597 3544/2710/1597 3543/2709/1597 +f 3529/2695/1597 3530/2696/1597 3545/2711/1597 3544/2710/1597 +f 3530/2696/1597 3531/2697/1597 3546/2712/1597 3545/2711/1597 +f 3531/2697/1597 3532/2698/1597 3547/2713/1597 3546/2712/1597 +f 3532/2698/1597 3533/2699/1597 3548/2714/1597 3547/2713/1597 +f 3533/2699/1597 3534/2700/1597 3549/2715/1597 3548/2714/1597 +f 3534/2700/1597 3535/2701/1597 3550/2716/1597 3549/2715/1597 +f 3535/2701/1597 3536/2702/1597 3551/2717/1597 3550/2716/1597 +f 3537/2704/1597 3538/2703/1597 3553/2718/1597 3552/2719/1597 +f 3538/2703/1597 3539/2705/1597 3554/2720/1597 3553/2718/1597 +f 3539/2705/1597 3540/2706/1597 3555/2721/1597 3554/2720/1597 +f 3540/2706/1597 3541/2707/1597 3556/2722/1597 3555/2721/1597 +f 3541/2707/1597 3542/2708/1597 3557/2723/1597 3556/2722/1597 +f 3542/2708/1597 3543/2709/1597 3558/2724/1597 3557/2723/1597 +f 3543/2709/1597 3544/2710/1597 3559/2725/1597 3558/2724/1597 +f 3544/2710/1597 3545/2711/1597 3560/2726/1597 3559/2725/1597 +f 3545/2711/1597 3546/2712/1597 3561/2727/1597 3560/2726/1597 +f 3546/2712/1597 3547/2713/1597 3562/2728/1597 3561/2727/1597 +f 3547/2713/1597 3548/2714/1597 3563/2729/1597 3562/2728/1597 +f 3548/2714/1597 3549/2715/1597 3564/2730/1597 3563/2729/1597 +f 3549/2715/1597 3550/2716/1597 3565/2731/1597 3564/2730/1597 +f 3550/2716/1597 3551/2717/1597 3566/2732/1597 3565/2731/1597 +f 3552/2719/1597 3553/2718/1597 3568/2733/1597 3567/2734/1597 +f 3553/2718/1597 3554/2720/1597 3569/2735/1597 3568/2733/1597 +f 3554/2720/1597 3555/2721/1597 3570/2736/1597 3569/2735/1597 +f 3555/2721/1597 3556/2722/1597 3571/2737/1597 3570/2736/1597 +f 3556/2722/1597 3557/2723/1597 3572/2738/1597 3571/2737/1597 +f 3557/2723/1597 3558/2724/1597 3573/2739/1597 3572/2738/1597 +f 3558/2724/1597 3559/2725/1597 3574/2740/1597 3573/2739/1597 +f 3559/2725/1597 3560/2726/1597 3575/2741/1597 3574/2740/1597 +f 3560/2726/1597 3561/2727/1597 3576/2742/1597 3575/2741/1597 +f 3561/2727/1597 3562/2728/1597 3577/2743/1597 3576/2742/1597 +f 3562/2728/1597 3563/2729/1597 3578/2744/1597 3577/2743/1597 +f 3563/2729/1597 3564/2730/1597 3579/2745/1597 3578/2744/1597 +f 3564/2730/1597 3565/2731/1597 3580/2746/1597 3579/2745/1597 +f 3565/2731/1597 3566/2732/1597 3581/2747/1597 3580/2746/1597 +f 3567/2734/1597 3568/2733/1597 3583/2748/1597 3582/2749/1597 +f 3568/2733/1597 3569/2735/1597 3584/2750/1597 3583/2748/1597 +f 3569/2735/1597 3570/2736/1597 3585/2751/1597 3584/2750/1597 +f 3570/2736/1597 3571/2737/1597 3586/2752/1597 3585/2751/1597 +f 3571/2737/1597 3572/2738/1597 3587/2753/1597 3586/2752/1597 +f 3572/2738/1597 3573/2739/1597 3588/2754/1597 3587/2753/1597 +f 3573/2739/1597 3574/2740/1597 3589/2755/1597 3588/2754/1597 +f 3574/2740/1597 3575/2741/1597 3590/2756/1597 3589/2755/1597 +f 3575/2741/1597 3576/2742/1597 3591/2757/1597 3590/2756/1597 +f 3576/2742/1597 3577/2743/1597 3592/2758/1597 3591/2757/1597 +f 3577/2743/1597 3578/2744/1597 3593/2759/1597 3592/2758/1597 +f 3578/2744/1597 3579/2745/1597 3594/2760/1597 3593/2759/1597 +f 3579/2745/1597 3580/2746/1597 3595/2761/1597 3594/2760/1597 +f 3580/2746/1597 3581/2747/1597 3596/2762/1597 3595/2761/1597 +f 3582/2749/1597 3583/2748/1597 3598/2763/1597 3597/2764/1597 +f 3583/2748/1597 3584/2750/1597 3599/2765/1597 3598/2763/1597 +f 3584/2750/1597 3585/2751/1597 3600/2766/1597 3599/2765/1597 +f 3585/2751/1597 3586/2752/1597 3601/2767/1597 3600/2766/1597 +f 3586/2752/1597 3587/2753/1597 3602/2768/1597 3601/2767/1597 +f 3587/2753/1597 3588/2754/1597 3603/2769/1597 3602/2768/1597 +f 3588/2754/1597 3589/2755/1597 3604/2770/1597 3603/2769/1597 +f 3589/2755/1597 3590/2756/1597 3605/2771/1597 3604/2770/1597 +f 3590/2756/1597 3591/2757/1597 3606/2772/1597 3605/2771/1597 +f 3591/2757/1597 3592/2758/1597 3607/2773/1597 3606/2772/1597 +f 3592/2758/1597 3593/2759/1597 3608/2774/1597 3607/2773/1597 +f 3593/2759/1597 3594/2760/1597 3609/2775/1597 3608/2774/1597 +f 3594/2760/1597 3595/2761/1597 3610/2776/1597 3609/2775/1597 +f 3595/2761/1597 3596/2762/1597 3611/2777/1597 3610/2776/1597 +f 3597/2764/1597 3598/2763/1597 3613/2778/1597 3612/2779/1597 +f 3598/2763/1597 3599/2765/1597 3614/2780/1597 3613/2778/1597 +f 3599/2765/1597 3600/2766/1597 3615/2781/1597 3614/2780/1597 +f 3600/2766/1597 3601/2767/1597 3616/2782/1597 3615/2781/1597 +f 3601/2767/1597 3602/2768/1597 3617/2783/1597 3616/2782/1597 +f 3602/2768/1597 3603/2769/1597 3618/2784/1597 3617/2783/1597 +f 3603/2769/1597 3604/2770/1597 3619/2785/1597 3618/2784/1597 +f 3604/2770/1597 3605/2771/1597 3620/2786/1597 3619/2785/1597 +f 3605/2771/1597 3606/2772/1597 3621/2787/1597 3620/2786/1597 +f 3606/2772/1597 3607/2773/1597 3622/2788/1597 3621/2787/1597 +f 3607/2773/1597 3608/2774/1597 3623/2789/1597 3622/2788/1597 +f 3608/2774/1597 3609/2775/1597 3624/2790/1597 3623/2789/1597 +f 3609/2775/1597 3610/2776/1597 3625/2791/1597 3624/2790/1597 +f 3610/2776/1597 3611/2777/1597 3626/2792/1597 3625/2791/1597 +f 3612/2779/1597 3613/2778/1597 3628/2793/1597 3627/2794/1597 +f 3613/2778/1597 3614/2780/1597 3629/2795/1597 3628/2793/1597 +f 3614/2780/1597 3615/2781/1597 3630/2796/1597 3629/2795/1597 +f 3615/2781/1597 3616/2782/1597 3631/2797/1597 3630/2796/1597 +f 3616/2782/1597 3617/2783/1597 3632/2798/1597 3631/2797/1597 +f 3617/2783/1597 3618/2784/1597 3633/2799/1597 3632/2798/1597 +f 3618/2784/1597 3619/2785/1597 3634/2800/1597 3633/2799/1597 +f 3619/2785/1597 3620/2786/1597 3635/2801/1597 3634/2800/1597 +f 3620/2786/1597 3621/2787/1597 3636/2802/1597 3635/2801/1597 +f 3621/2787/1597 3622/2788/1597 3637/2803/1597 3636/2802/1597 +f 3622/2788/1597 3623/2789/1597 3638/2804/1597 3637/2803/1597 +f 3623/2789/1597 3624/2790/1597 3639/2805/1597 3638/2804/1597 +f 3624/2790/1597 3625/2791/1597 3640/2806/1597 3639/2805/1597 +f 3625/2791/1597 3626/2792/1597 3641/2807/1597 3640/2806/1597 +f 3627/2794/1597 3628/2793/1597 3643/2808/1597 3642/2809/1597 +f 3628/2793/1597 3629/2795/1597 3644/2810/1597 3643/2808/1597 +f 3629/2795/1597 3630/2796/1597 3645/2811/1597 3644/2810/1597 +f 3630/2796/1597 3631/2797/1597 3646/2812/1597 3645/2811/1597 +f 3631/2797/1597 3632/2798/1597 3647/2813/1597 3646/2812/1597 +f 3632/2798/1597 3633/2799/1597 3648/2814/1597 3647/2813/1597 +f 3633/2799/1597 3634/2800/1597 3649/2815/1597 3648/2814/1597 +f 3634/2800/1597 3635/2801/1597 3650/2816/1597 3649/2815/1597 +f 3635/2801/1597 3636/2802/1597 3651/2817/1597 3650/2816/1597 +f 3636/2802/1597 3637/2803/1597 3652/2818/1597 3651/2817/1597 +f 3637/2803/1597 3638/2804/1597 3653/2819/1597 3652/2818/1597 +f 3638/2804/1597 3639/2805/1597 3654/2820/1597 3653/2819/1597 +f 3639/2805/1597 3640/2806/1597 3655/2821/1597 3654/2820/1597 +f 3640/2806/1597 3641/2807/1597 3656/2822/1597 3655/2821/1597 +f 3642/2809/1597 3643/2808/1597 3658/2823/1597 3657/2824/1597 +f 3643/2808/1597 3644/2810/1597 3659/2825/1597 3658/2823/1597 +f 3644/2810/1597 3645/2811/1597 3660/2826/1597 3659/2825/1597 +f 3645/2811/1597 3646/2812/1597 3661/2827/1597 3660/2826/1597 +f 3646/2812/1597 3647/2813/1597 3662/2828/1597 3661/2827/1597 +f 3647/2813/1597 3648/2814/1597 3663/2829/1597 3662/2828/1597 +f 3648/2814/1597 3649/2815/1597 3664/2830/1597 3663/2829/1597 +f 3649/2815/1597 3650/2816/1597 3665/2831/1597 3664/2830/1597 +f 3650/2816/1597 3651/2817/1597 3666/2832/1597 3665/2831/1597 +f 3651/2817/1597 3652/2818/1597 3667/2833/1597 3666/2832/1597 +f 3652/2818/1597 3653/2819/1597 3668/2834/1597 3667/2833/1597 +f 3653/2819/1597 3654/2820/1597 3669/2835/1597 3668/2834/1597 +f 3654/2820/1597 3655/2821/1597 3670/2836/1597 3669/2835/1597 +f 3655/2821/1597 3656/2822/1597 3671/2837/1597 3670/2836/1597 +f 3657/2824/1597 3658/2823/1597 3673/2838/1597 3672/2839/1597 +f 3658/2823/1597 3659/2825/1597 3674/2840/1597 3673/2838/1597 +f 3659/2825/1597 3660/2826/1597 3675/2841/1597 3674/2840/1597 +f 3660/2826/1597 3661/2827/1597 3676/2842/1597 3675/2841/1597 +f 3661/2827/1597 3662/2828/1597 3677/2843/1597 3676/2842/1597 +f 3662/2828/1597 3663/2829/1597 3678/2844/1597 3677/2843/1597 +f 3663/2829/1597 3664/2830/1597 3679/2845/1597 3678/2844/1597 +f 3664/2830/1597 3665/2831/1597 3680/2846/1597 3679/2845/1597 +f 3665/2831/1597 3666/2832/1597 3681/2847/1597 3680/2846/1597 +f 3666/2832/1597 3667/2833/1597 3682/2848/1597 3681/2847/1597 +f 3667/2833/1597 3668/2834/1597 3683/2849/1597 3682/2848/1597 +f 3668/2834/1597 3669/2835/1597 3684/2850/1597 3683/2849/1597 +f 3669/2835/1597 3670/2836/1597 3685/2851/1597 3684/2850/1597 +f 3670/2836/1597 3671/2837/1597 3686/2852/1597 3685/2851/1597 +f 2731/2581/1597 2742/2853/1597 3462/2628/1597 2877/2582/1597 +f 2742/2853/1597 2743/2854/1597 3463/2629/1597 3462/2628/1597 +f 2743/2854/1597 2744/2855/1597 3464/2632/1597 3463/2629/1597 +f 2744/2855/1597 2745/2856/1597 3465/2634/1597 3464/2632/1597 +f 2745/2856/1597 2746/2857/1597 3466/2636/1597 3465/2634/1597 +f 2746/2857/1597 2747/2858/1597 3467/2638/1597 3466/2636/1597 +f 2747/2858/1597 2748/2859/1597 3468/2640/1597 3467/2638/1597 +f 2748/2859/1597 2749/2860/1597 3469/2642/1597 3468/2640/1597 +f 2749/2860/1597 2750/2861/1597 3470/2644/1597 3469/2642/1597 +f 2750/2861/1597 2751/2862/1597 3471/2646/1597 3470/2644/1597 +f 2751/2862/1597 2752/2863/1597 3472/2648/1597 3471/2646/1597 +f 2752/2863/1597 2753/2864/1597 3473/2650/1597 3472/2648/1597 +f 2753/2864/1597 2754/2865/1597 3474/2652/1597 3473/2650/1597 +f 2754/2865/1597 2755/2866/1597 3475/2654/1597 3474/2652/1597 +f 2755/2866/1597 2756/2867/1597 3476/2656/1597 3475/2654/1597 +f 2756/2867/1597 2732/2308/1597 2831/2868/1597 3476/2656/1597 +f 3476/2656/1597 2831/2868/1597 2830/2869/1597 3491/2657/1597 +f 3491/2657/1597 2830/2869/1597 2829/2870/1597 3506/2672/1597 +f 3506/2672/1597 2829/2870/1597 2828/2871/1597 3521/2687/1597 +f 3521/2687/1597 2828/2871/1597 2827/2872/1597 3536/2702/1597 +f 3536/2702/1597 2827/2872/1597 2826/2873/1597 3551/2717/1597 +f 3551/2717/1597 2826/2873/1597 2825/2874/1597 3566/2732/1597 +f 3566/2732/1597 2825/2874/1597 2824/2875/1597 3581/2747/1597 +f 3581/2747/1597 2824/2875/1597 2823/2876/1597 3596/2762/1597 +f 3596/2762/1597 2823/2876/1597 2822/2877/1597 3611/2777/1597 +f 3611/2777/1597 2822/2877/1597 2821/2878/1597 3626/2792/1597 +f 3626/2792/1597 2821/2878/1597 2820/2296/1597 3641/2807/1597 +f 3641/2807/1597 2820/2296/1597 2819/2879/1597 3656/2822/1597 +f 3656/2822/1597 2819/2879/1597 2818/2880/1597 3671/2837/1597 +f 3671/2837/1597 2818/2880/1597 2817/2881/1597 3686/2852/1597 +f 3686/2852/1597 2817/2881/1597 2736/2292/1597 2801/2882/1597 +f 3685/2851/1597 3686/2852/1597 2801/2882/1597 2800/2883/1597 +f 3684/2850/1597 3685/2851/1597 2800/2883/1597 2799/2884/1597 +f 3683/2849/1597 3684/2850/1597 2799/2884/1597 2798/2885/1597 +f 3682/2848/1597 3683/2849/1597 2798/2885/1597 2797/2886/1597 +f 3681/2847/1597 3682/2848/1597 2797/2886/1597 2796/2887/1597 +f 3680/2846/1597 3681/2847/1597 2796/2887/1597 2795/2888/1597 +f 3679/2845/1597 3680/2846/1597 2795/2888/1597 2794/2889/1597 +f 3678/2844/1597 3679/2845/1597 2794/2889/1597 2793/2890/1597 +f 3677/2843/1597 3678/2844/1597 2793/2890/1597 2792/2891/1597 +f 3676/2842/1597 3677/2843/1597 2792/2891/1597 2791/2892/1597 +f 3675/2841/1597 3676/2842/1597 2791/2892/1597 2790/2893/1597 +f 3674/2840/1597 3675/2841/1597 2790/2893/1597 2789/2894/1597 +f 3673/2838/1597 3674/2840/1597 2789/2894/1597 2788/2895/1597 +f 3672/2839/1597 3673/2838/1597 2788/2895/1597 2787/2896/1597 +f 2891/2897/1597 3672/2839/1597 2787/2896/1597 2733/2597/1597 +f 2890/2898/1597 3657/2824/1597 3672/2839/1597 2891/2897/1597 +f 2889/2899/1597 3642/2809/1597 3657/2824/1597 2890/2898/1597 +f 2888/2593/1597 3627/2794/1597 3642/2809/1597 2889/2899/1597 +f 2887/2592/1597 3612/2779/1597 3627/2794/1597 2888/2593/1597 +f 2886/2900/1597 3597/2764/1597 3612/2779/1597 2887/2592/1597 +f 2885/2901/1597 3582/2749/1597 3597/2764/1597 2886/2900/1597 +f 2884/2589/1597 3567/2734/1597 3582/2749/1597 2885/2901/1597 +f 2883/2588/1597 3552/2719/1597 3567/2734/1597 2884/2589/1597 +f 2882/2587/1597 3537/2704/1597 3552/2719/1597 2883/2588/1597 +f 2881/2586/1597 3522/2689/1597 3537/2704/1597 2882/2587/1597 +f 2880/2585/1597 3507/2674/1597 3522/2689/1597 2881/2586/1597 +f 2879/2584/1597 3492/2659/1597 3507/2674/1597 2880/2585/1597 +f 2878/2583/1597 3477/2631/1597 3492/2659/1597 2879/2584/1597 +f 2877/2582/1597 3462/2628/1597 3477/2631/1597 2878/2583/1597 +f 3687/2902/1597 3688/2903/1597 3703/2904/1597 3702/2905/1597 +f 3688/2903/1597 3689/2906/1597 3704/2907/1597 3703/2904/1597 +f 3689/2906/1597 3690/2908/1597 3705/2909/1597 3704/2907/1597 +f 3690/2908/1597 3691/2910/1597 3706/2911/1597 3705/2909/1597 +f 3691/2910/1597 3692/2912/1597 3707/2913/1597 3706/2911/1597 +f 3692/2912/1597 3693/2914/1597 3708/2915/1597 3707/2913/1597 +f 3693/2914/1597 3694/2916/1597 3709/2917/1597 3708/2915/1597 +f 3694/2916/1597 3695/2918/1597 3710/2919/1597 3709/2917/1597 +f 3695/2918/1597 3696/2920/1597 3711/2921/1597 3710/2919/1597 +f 3696/2920/1597 3697/2922/1597 3712/2923/1597 3711/2921/1597 +f 3697/2922/1597 3698/2924/1597 3713/2925/1597 3712/2923/1597 +f 3698/2924/1597 3699/2926/1597 3714/2927/1597 3713/2925/1597 +f 3699/2926/1597 3700/2928/1597 3715/2929/1597 3714/2927/1597 +f 3700/2928/1597 3701/2930/1597 3716/2931/1597 3715/2929/1597 +f 3702/2905/1597 3703/2904/1597 3718/2932/1597 3717/2933/1597 +f 3703/2904/1597 3704/2907/1597 3719/2934/1597 3718/2932/1597 +f 3704/2907/1597 3705/2909/1597 3720/2935/1597 3719/2934/1597 +f 3705/2909/1597 3706/2911/1597 3721/2936/1597 3720/2935/1597 +f 3706/2911/1597 3707/2913/1597 3722/2937/1597 3721/2936/1597 +f 3707/2913/1597 3708/2915/1597 3723/2938/1597 3722/2937/1597 +f 3708/2915/1597 3709/2917/1597 3724/2939/1597 3723/2938/1597 +f 3709/2917/1597 3710/2919/1597 3725/2940/1597 3724/2939/1597 +f 3710/2919/1597 3711/2921/1597 3726/2941/1597 3725/2940/1597 +f 3711/2921/1597 3712/2923/1597 3727/2942/1597 3726/2941/1597 +f 3712/2923/1597 3713/2925/1597 3728/2943/1597 3727/2942/1597 +f 3713/2925/1597 3714/2927/1597 3729/2944/1597 3728/2943/1597 +f 3714/2927/1597 3715/2929/1597 3730/2945/1597 3729/2944/1597 +f 3715/2929/1597 3716/2931/1597 3731/2946/1597 3730/2945/1597 +f 3717/2933/1597 3718/2932/1597 3733/2947/1597 3732/2948/1597 +f 3718/2932/1597 3719/2934/1597 3734/2949/1597 3733/2947/1597 +f 3719/2934/1597 3720/2935/1597 3735/2950/1597 3734/2949/1597 +f 3720/2935/1597 3721/2936/1597 3736/2951/1597 3735/2950/1597 +f 3721/2936/1597 3722/2937/1597 3737/2952/1597 3736/2951/1597 +f 3722/2937/1597 3723/2938/1597 3738/2953/1597 3737/2952/1597 +f 3723/2938/1597 3724/2939/1597 3739/2954/1597 3738/2953/1597 +f 3724/2939/1597 3725/2940/1597 3740/2955/1597 3739/2954/1597 +f 3725/2940/1597 3726/2941/1597 3741/2956/1597 3740/2955/1597 +f 3726/2941/1597 3727/2942/1597 3742/2957/1597 3741/2956/1597 +f 3727/2942/1597 3728/2943/1597 3743/2958/1597 3742/2957/1597 +f 3728/2943/1597 3729/2944/1597 3744/2959/1597 3743/2958/1597 +f 3729/2944/1597 3730/2945/1597 3745/2960/1597 3744/2959/1597 +f 3730/2945/1597 3731/2946/1597 3746/2961/1597 3745/2960/1597 +f 3732/2948/1597 3733/2947/1597 3748/2962/1597 3747/2963/1597 +f 3733/2947/1597 3734/2949/1597 3749/2964/1597 3748/2962/1597 +f 3734/2949/1597 3735/2950/1597 3750/2965/1597 3749/2964/1597 +f 3735/2950/1597 3736/2951/1597 3751/2966/1597 3750/2965/1597 +f 3736/2951/1597 3737/2952/1597 3752/2967/1597 3751/2966/1597 +f 3737/2952/1597 3738/2953/1597 3753/2968/1597 3752/2967/1597 +f 3738/2953/1597 3739/2954/1597 3754/2969/1597 3753/2968/1597 +f 3739/2954/1597 3740/2955/1597 3755/2970/1597 3754/2969/1597 +f 3740/2955/1597 3741/2956/1597 3756/2971/1597 3755/2970/1597 +f 3741/2956/1597 3742/2957/1597 3757/2972/1597 3756/2971/1597 +f 3742/2957/1597 3743/2958/1597 3758/2973/1597 3757/2972/1597 +f 3743/2958/1597 3744/2959/1597 3759/2974/1597 3758/2973/1597 +f 3744/2959/1597 3745/2960/1597 3760/2975/1597 3759/2974/1597 +f 3745/2960/1597 3746/2961/1597 3761/2976/1597 3760/2975/1597 +f 3747/2963/1597 3748/2962/1597 3763/2977/1597 3762/2978/1597 +f 3748/2962/1597 3749/2964/1597 3764/2979/1597 3763/2977/1597 +f 3749/2964/1597 3750/2965/1597 3765/2980/1597 3764/2979/1597 +f 3750/2965/1597 3751/2966/1597 3766/2981/1597 3765/2980/1597 +f 3751/2966/1597 3752/2967/1597 3767/2982/1597 3766/2981/1597 +f 3752/2967/1597 3753/2968/1597 3768/2983/1597 3767/2982/1597 +f 3753/2968/1597 3754/2969/1597 3769/2984/1597 3768/2983/1597 +f 3754/2969/1597 3755/2970/1597 3770/2985/1597 3769/2984/1597 +f 3755/2970/1597 3756/2971/1597 3771/2986/1597 3770/2985/1597 +f 3756/2971/1597 3757/2972/1597 3772/2987/1597 3771/2986/1597 +f 3757/2972/1597 3758/2973/1597 3773/2988/1597 3772/2987/1597 +f 3758/2973/1597 3759/2974/1597 3774/2989/1597 3773/2988/1597 +f 3759/2974/1597 3760/2975/1597 3775/2990/1597 3774/2989/1597 +f 3760/2975/1597 3761/2976/1597 3776/2991/1597 3775/2990/1597 +f 3762/2978/1597 3763/2977/1597 3778/2992/1597 3777/2993/1597 +f 3763/2977/1597 3764/2979/1597 3779/2994/1597 3778/2992/1597 +f 3764/2979/1597 3765/2980/1597 3780/2995/1597 3779/2994/1597 +f 3765/2980/1597 3766/2981/1597 3781/2996/1597 3780/2995/1597 +f 3766/2981/1597 3767/2982/1597 3782/2997/1597 3781/2996/1597 +f 3767/2982/1597 3768/2983/1597 3783/2998/1597 3782/2997/1597 +f 3768/2983/1597 3769/2984/1597 3784/2999/1597 3783/2998/1597 +f 3769/2984/1597 3770/2985/1597 3785/3000/1597 3784/2999/1597 +f 3770/2985/1597 3771/2986/1597 3786/3001/1597 3785/3000/1597 +f 3771/2986/1597 3772/2987/1597 3787/3002/1597 3786/3001/1597 +f 3772/2987/1597 3773/2988/1597 3788/3003/1597 3787/3002/1597 +f 3773/2988/1597 3774/2989/1597 3789/3004/1597 3788/3003/1597 +f 3774/2989/1597 3775/2990/1597 3790/3005/1597 3789/3004/1597 +f 3775/2990/1597 3776/2991/1597 3791/3006/1597 3790/3005/1597 +f 3777/2993/1597 3778/2992/1597 3793/3007/1597 3792/3008/1597 +f 3778/2992/1597 3779/2994/1597 3794/3009/1597 3793/3007/1597 +f 3779/2994/1597 3780/2995/1597 3795/3010/1597 3794/3009/1597 +f 3780/2995/1597 3781/2996/1597 3796/3011/1597 3795/3010/1597 +f 3781/2996/1597 3782/2997/1597 3797/3012/1597 3796/3011/1597 +f 3782/2997/1597 3783/2998/1597 3798/3013/1597 3797/3012/1597 +f 3783/2998/1597 3784/2999/1597 3799/3014/1597 3798/3013/1597 +f 3784/2999/1597 3785/3000/1597 3800/3015/1597 3799/3014/1597 +f 3785/3000/1597 3786/3001/1597 3801/3016/1597 3800/3015/1597 +f 3786/3001/1597 3787/3002/1597 3802/3017/1597 3801/3016/1597 +f 3787/3002/1597 3788/3003/1597 3803/3018/1597 3802/3017/1597 +f 3788/3003/1597 3789/3004/1597 3804/3019/1597 3803/3018/1597 +f 3789/3004/1597 3790/3005/1597 3805/3020/1597 3804/3019/1597 +f 3790/3005/1597 3791/3006/1597 3806/3021/1597 3805/3020/1597 +f 3792/3008/1597 3793/3007/1597 3808/3022/1597 3807/3023/1597 +f 3793/3007/1597 3794/3009/1597 3809/3024/1597 3808/3022/1597 +f 3794/3009/1597 3795/3010/1597 3810/3025/1597 3809/3024/1597 +f 3795/3010/1597 3796/3011/1597 3811/3026/1597 3810/3025/1597 +f 3796/3011/1597 3797/3012/1597 3812/3027/1597 3811/3026/1597 +f 3797/3012/1597 3798/3013/1597 3813/3028/1597 3812/3027/1597 +f 3798/3013/1597 3799/3014/1597 3814/3029/1597 3813/3028/1597 +f 3799/3014/1597 3800/3015/1597 3815/3030/1597 3814/3029/1597 +f 3800/3015/1597 3801/3016/1597 3816/3031/1597 3815/3030/1597 +f 3801/3016/1597 3802/3017/1597 3817/3032/1597 3816/3031/1597 +f 3802/3017/1597 3803/3018/1597 3818/3033/1597 3817/3032/1597 +f 3803/3018/1597 3804/3019/1597 3819/3034/1597 3818/3033/1597 +f 3804/3019/1597 3805/3020/1597 3820/3035/1597 3819/3034/1597 +f 3805/3020/1597 3806/3021/1597 3821/3036/1597 3820/3035/1597 +f 3807/3023/1597 3808/3022/1597 3823/3037/1597 3822/3038/1597 +f 3808/3022/1597 3809/3024/1597 3824/3039/1597 3823/3037/1597 +f 3809/3024/1597 3810/3025/1597 3825/3040/1597 3824/3039/1597 +f 3810/3025/1597 3811/3026/1597 3826/3041/1597 3825/3040/1597 +f 3811/3026/1597 3812/3027/1597 3827/3042/1597 3826/3041/1597 +f 3812/3027/1597 3813/3028/1597 3828/3043/1597 3827/3042/1597 +f 3813/3028/1597 3814/3029/1597 3829/3044/1597 3828/3043/1597 +f 3814/3029/1597 3815/3030/1597 3830/3045/1597 3829/3044/1597 +f 3815/3030/1597 3816/3031/1597 3831/3046/1597 3830/3045/1597 +f 3816/3031/1597 3817/3032/1597 3832/3047/1597 3831/3046/1597 +f 3817/3032/1597 3818/3033/1597 3833/3048/1597 3832/3047/1597 +f 3818/3033/1597 3819/3034/1597 3834/3049/1597 3833/3048/1597 +f 3819/3034/1597 3820/3035/1597 3835/3050/1597 3834/3049/1597 +f 3820/3035/1597 3821/3036/1597 3836/3051/1597 3835/3050/1597 +f 3822/3038/1597 3823/3037/1597 3838/3052/1597 3837/3053/1597 +f 3823/3037/1597 3824/3039/1597 3839/3054/1597 3838/3052/1597 +f 3824/3039/1597 3825/3040/1597 3840/3055/1597 3839/3054/1597 +f 3825/3040/1597 3826/3041/1597 3841/3056/1597 3840/3055/1597 +f 3826/3041/1597 3827/3042/1597 3842/3057/1597 3841/3056/1597 +f 3827/3042/1597 3828/3043/1597 3843/3058/1597 3842/3057/1597 +f 3828/3043/1597 3829/3044/1597 3844/3059/1597 3843/3058/1597 +f 3829/3044/1597 3830/3045/1597 3845/3060/1597 3844/3059/1597 +f 3830/3045/1597 3831/3046/1597 3846/3061/1597 3845/3060/1597 +f 3831/3046/1597 3832/3047/1597 3847/3062/1597 3846/3061/1597 +f 3832/3047/1597 3833/3048/1597 3848/3063/1597 3847/3062/1597 +f 3833/3048/1597 3834/3049/1597 3849/3064/1597 3848/3063/1597 +f 3834/3049/1597 3835/3050/1597 3850/3065/1597 3849/3064/1597 +f 3835/3050/1597 3836/3051/1597 3851/3066/1597 3850/3065/1597 +f 3837/3053/1597 3838/3052/1597 3853/3067/1597 3852/3068/1597 +f 3838/3052/1597 3839/3054/1597 3854/3069/1597 3853/3067/1597 +f 3839/3054/1597 3840/3055/1597 3855/3070/1597 3854/3069/1597 +f 3840/3055/1597 3841/3056/1597 3856/3071/1597 3855/3070/1597 +f 3841/3056/1597 3842/3057/1597 3857/3072/1597 3856/3071/1597 +f 3842/3057/1597 3843/3058/1597 3858/3073/1597 3857/3072/1597 +f 3843/3058/1597 3844/3059/1597 3859/3074/1597 3858/3073/1597 +f 3844/3059/1597 3845/3060/1597 3860/3075/1597 3859/3074/1597 +f 3845/3060/1597 3846/3061/1597 3861/3076/1597 3860/3075/1597 +f 3846/3061/1597 3847/3062/1597 3862/3077/1597 3861/3076/1597 +f 3847/3062/1597 3848/3063/1597 3863/3078/1597 3862/3077/1597 +f 3848/3063/1597 3849/3064/1597 3864/3079/1597 3863/3078/1597 +f 3849/3064/1597 3850/3065/1597 3865/3080/1597 3864/3079/1597 +f 3850/3065/1597 3851/3066/1597 3866/3081/1597 3865/3080/1597 +f 3852/3068/1597 3853/3067/1597 3868/3082/1597 3867/3083/1597 +f 3853/3067/1597 3854/3069/1597 3869/3084/1597 3868/3082/1597 +f 3854/3069/1597 3855/3070/1597 3870/3085/1597 3869/3084/1597 +f 3855/3070/1597 3856/3071/1597 3871/3086/1597 3870/3085/1597 +f 3856/3071/1597 3857/3072/1597 3872/3087/1597 3871/3086/1597 +f 3857/3072/1597 3858/3073/1597 3873/3088/1597 3872/3087/1597 +f 3858/3073/1597 3859/3074/1597 3874/3089/1597 3873/3088/1597 +f 3859/3074/1597 3860/3075/1597 3875/3090/1597 3874/3089/1597 +f 3860/3075/1597 3861/3076/1597 3876/3091/1597 3875/3090/1597 +f 3861/3076/1597 3862/3077/1597 3877/3092/1597 3876/3091/1597 +f 3862/3077/1597 3863/3078/1597 3878/3093/1597 3877/3092/1597 +f 3863/3078/1597 3864/3079/1597 3879/3094/1597 3878/3093/1597 +f 3864/3079/1597 3865/3080/1597 3880/3095/1597 3879/3094/1597 +f 3865/3080/1597 3866/3081/1597 3881/3096/1597 3880/3095/1597 +f 3867/3083/1597 3868/3082/1597 3883/3097/1597 3882/3098/1597 +f 3868/3082/1597 3869/3084/1597 3884/3099/1597 3883/3097/1597 +f 3869/3084/1597 3870/3085/1597 3885/3100/1597 3884/3099/1597 +f 3870/3085/1597 3871/3086/1597 3886/3101/1597 3885/3100/1597 +f 3871/3086/1597 3872/3087/1597 3887/3102/1597 3886/3101/1597 +f 3872/3087/1597 3873/3088/1597 3888/3103/1597 3887/3102/1597 +f 3873/3088/1597 3874/3089/1597 3889/3104/1597 3888/3103/1597 +f 3874/3089/1597 3875/3090/1597 3890/3105/1597 3889/3104/1597 +f 3875/3090/1597 3876/3091/1597 3891/3106/1597 3890/3105/1597 +f 3876/3091/1597 3877/3092/1597 3892/3107/1597 3891/3106/1597 +f 3877/3092/1597 3878/3093/1597 3893/3108/1597 3892/3107/1597 +f 3878/3093/1597 3879/3094/1597 3894/3109/1597 3893/3108/1597 +f 3879/3094/1597 3880/3095/1597 3895/3110/1597 3894/3109/1597 +f 3880/3095/1597 3881/3096/1597 3896/3111/1597 3895/3110/1597 +f 3882/3098/1597 3883/3097/1597 3898/3112/1597 3897/3113/1597 +f 3883/3097/1597 3884/3099/1597 3899/3114/1597 3898/3112/1597 +f 3884/3099/1597 3885/3100/1597 3900/3115/1597 3899/3114/1597 +f 3885/3100/1597 3886/3101/1597 3901/3116/1597 3900/3115/1597 +f 3886/3101/1597 3887/3102/1597 3902/3117/1597 3901/3116/1597 +f 3887/3102/1597 3888/3103/1597 3903/3118/1597 3902/3117/1597 +f 3888/3103/1597 3889/3104/1597 3904/3119/1597 3903/3118/1597 +f 3889/3104/1597 3890/3105/1597 3905/3120/1597 3904/3119/1597 +f 3890/3105/1597 3891/3106/1597 3906/3121/1597 3905/3120/1597 +f 3891/3106/1597 3892/3107/1597 3907/3122/1597 3906/3121/1597 +f 3892/3107/1597 3893/3108/1597 3908/3123/1597 3907/3122/1597 +f 3893/3108/1597 3894/3109/1597 3909/3124/1597 3908/3123/1597 +f 3894/3109/1597 3895/3110/1597 3910/3125/1597 3909/3124/1597 +f 3895/3110/1597 3896/3111/1597 3911/3126/1597 3910/3125/1597 +f 2730/2564/1597 2862/3127/1597 3687/2902/1597 2892/3128/1597 +f 2862/3127/1597 2863/3129/1597 3688/2903/1597 3687/2902/1597 +f 2863/3129/1597 2864/3130/1597 3689/2906/1597 3688/2903/1597 +f 2864/3130/1597 2865/3131/1597 3690/2908/1597 3689/2906/1597 +f 2865/3131/1597 2866/2624/1597 3691/2910/1597 3690/2908/1597 +f 2866/2624/1597 2867/2623/1597 3692/2912/1597 3691/2910/1597 +f 2867/2623/1597 2868/3132/1597 3693/2914/1597 3692/2912/1597 +f 2868/3132/1597 2869/3133/1597 3694/2916/1597 3693/2914/1597 +f 2869/3133/1597 2870/3134/1597 3695/2918/1597 3694/2916/1597 +f 2870/3134/1597 2871/2619/1597 3696/2920/1597 3695/2918/1597 +f 2871/2619/1597 2872/3135/1597 3697/2922/1597 3696/2920/1597 +f 2872/3135/1597 2873/3136/1597 3698/2924/1597 3697/2922/1597 +f 2873/3136/1597 2874/3137/1597 3699/2926/1597 3698/2924/1597 +f 2874/3137/1597 2875/2615/1597 3700/2928/1597 3699/2926/1597 +f 2875/2615/1597 2876/3138/1597 3701/2930/1597 3700/2928/1597 +f 2876/3138/1597 2734/2614/1597 2921/3139/1597 3701/2930/1597 +f 3701/2930/1597 2921/3139/1597 2920/3140/1597 3716/2931/1597 +f 3716/2931/1597 2920/3140/1597 2919/3141/1597 3731/2946/1597 +f 3731/2946/1597 2919/3141/1597 2918/3142/1597 3746/2961/1597 +f 3746/2961/1597 2918/3142/1597 2917/3143/1597 3761/2976/1597 +f 3761/2976/1597 2917/3143/1597 2916/3144/1597 3776/2991/1597 +f 3776/2991/1597 2916/3144/1597 2915/3145/1597 3791/3006/1597 +f 3791/3006/1597 2915/3145/1597 2914/3146/1597 3806/3021/1597 +f 3806/3021/1597 2914/3146/1597 2913/3147/1597 3821/3036/1597 +f 3821/3036/1597 2913/3147/1597 2912/3148/1597 3836/3051/1597 +f 3836/3051/1597 2912/3148/1597 2911/3149/1597 3851/3066/1597 +f 3851/3066/1597 2911/3149/1597 2910/3150/1597 3866/3081/1597 +f 3866/3081/1597 2910/3150/1597 2909/3151/1597 3881/3096/1597 +f 3881/3096/1597 2909/3151/1597 2908/3152/1597 3896/3111/1597 +f 3896/3111/1597 2908/3152/1597 2907/3153/1597 3911/3126/1597 +f 3911/3126/1597 2907/3153/1597 2738/3154/1597 2936/3155/1597 +f 3910/3125/1597 3911/3126/1597 2936/3155/1597 2935/3156/1597 +f 3909/3124/1597 3910/3125/1597 2935/3156/1597 2934/3157/1597 +f 3908/3123/1597 3909/3124/1597 2934/3157/1597 2933/3158/1597 +f 3907/3122/1597 3908/3123/1597 2933/3158/1597 2932/3159/1597 +f 3906/3121/1597 3907/3122/1597 2932/3159/1597 2931/3160/1597 +f 3905/3120/1597 3906/3121/1597 2931/3160/1597 2930/3161/1597 +f 3904/3119/1597 3905/3120/1597 2930/3161/1597 2929/3162/1597 +f 3903/3118/1597 3904/3119/1597 2929/3162/1597 2928/3163/1597 +f 3902/3117/1597 3903/3118/1597 2928/3163/1597 2927/3164/1597 +f 3901/3116/1597 3902/3117/1597 2927/3164/1597 2926/3165/1597 +f 3900/3115/1597 3901/3116/1597 2926/3165/1597 2925/3166/1597 +f 3899/3114/1597 3900/3115/1597 2925/3166/1597 2924/3167/1597 +f 3898/3112/1597 3899/3114/1597 2924/3167/1597 2923/3168/1597 +f 3897/3113/1597 3898/3112/1597 2923/3168/1597 2922/3169/1597 +f 2906/3170/1597 3897/3113/1597 2922/3169/1597 2737/3171/1597 +f 2905/3172/1597 3882/3098/1597 3897/3113/1597 2906/3170/1597 +f 2904/3173/1597 3867/3083/1597 3882/3098/1597 2905/3172/1597 +f 2903/3174/1597 3852/3068/1597 3867/3083/1597 2904/3173/1597 +f 2902/3175/1597 3837/3053/1597 3852/3068/1597 2903/3174/1597 +f 2901/3176/1597 3822/3038/1597 3837/3053/1597 2902/3175/1597 +f 2900/3177/1597 3807/3023/1597 3822/3038/1597 2901/3176/1597 +f 2899/3178/1597 3792/3008/1597 3807/3023/1597 2900/3177/1597 +f 2898/3179/1597 3777/2993/1597 3792/3008/1597 2899/3178/1597 +f 2897/3180/1597 3762/2978/1597 3777/2993/1597 2898/3179/1597 +f 2896/3181/1597 3747/2963/1597 3762/2978/1597 2897/3180/1597 +f 2895/3182/1597 3732/2948/1597 3747/2963/1597 2896/3181/1597 +f 2894/3183/1597 3717/2933/1597 3732/2948/1597 2895/3182/1597 +f 2893/3184/1597 3702/2905/1597 3717/2933/1597 2894/3183/1597 +f 2892/3128/1597 3687/2902/1597 3702/2905/1597 2893/3184/1597 +f 3912/3185/1597 3913/3186/1597 3928/3187/1597 3927/3188/1597 +f 3913/3186/1597 3914/3189/1597 3929/3190/1597 3928/3187/1597 +f 3914/3189/1597 3915/3191/1597 3930/3192/1597 3929/3190/1597 +f 3915/3191/1597 3916/3193/1597 3931/3194/1597 3930/3192/1597 +f 3916/3193/1597 3917/3195/1597 3932/3196/1597 3931/3194/1597 +f 3917/3195/1597 3918/3197/1597 3933/3198/1597 3932/3196/1597 +f 3918/3197/1597 3919/3199/1597 3934/3200/1597 3933/3198/1597 +f 3919/3199/1597 3920/3201/1597 3935/3202/1597 3934/3200/1597 +f 3920/3201/1597 3921/3203/1597 3936/3204/1597 3935/3202/1597 +f 3921/3203/1597 3922/3205/1597 3937/3206/1597 3936/3204/1597 +f 3922/3205/1597 3923/3207/1597 3938/3208/1597 3937/3206/1597 +f 3923/3207/1597 3924/3209/1597 3939/3210/1597 3938/3208/1597 +f 3924/3209/1597 3925/3211/1597 3940/3212/1597 3939/3210/1597 +f 3925/3211/1597 3926/3213/1597 3941/3214/1597 3940/3212/1597 +f 3927/3188/1597 3928/3187/1597 3943/3215/1597 3942/3216/1597 +f 3928/3187/1597 3929/3190/1597 3944/3217/1597 3943/3215/1597 +f 3929/3190/1597 3930/3192/1597 3945/3218/1597 3944/3217/1597 +f 3930/3192/1597 3931/3194/1597 3946/3219/1597 3945/3218/1597 +f 3931/3194/1597 3932/3196/1597 3947/3220/1597 3946/3219/1597 +f 3932/3196/1597 3933/3198/1597 3948/3221/1597 3947/3220/1597 +f 3933/3198/1597 3934/3200/1597 3949/3222/1597 3948/3221/1597 +f 3934/3200/1597 3935/3202/1597 3950/3223/1597 3949/3222/1597 +f 3935/3202/1597 3936/3204/1597 3951/3224/1597 3950/3223/1597 +f 3936/3204/1597 3937/3206/1597 3952/3225/1597 3951/3224/1597 +f 3937/3206/1597 3938/3208/1597 3953/3226/1597 3952/3225/1597 +f 3938/3208/1597 3939/3210/1597 3954/3227/1597 3953/3226/1597 +f 3939/3210/1597 3940/3212/1597 3955/3228/1597 3954/3227/1597 +f 3940/3212/1597 3941/3214/1597 3956/3229/1597 3955/3228/1597 +f 3942/3216/1597 3943/3215/1597 3958/3230/1597 3957/3231/1597 +f 3943/3215/1597 3944/3217/1597 3959/3232/1597 3958/3230/1597 +f 3944/3217/1597 3945/3218/1597 3960/3233/1597 3959/3232/1597 +f 3945/3218/1597 3946/3219/1597 3961/3234/1597 3960/3233/1597 +f 3946/3219/1597 3947/3220/1597 3962/3235/1597 3961/3234/1597 +f 3947/3220/1597 3948/3221/1597 3963/3236/1597 3962/3235/1597 +f 3948/3221/1597 3949/3222/1597 3964/3237/1597 3963/3236/1597 +f 3949/3222/1597 3950/3223/1597 3965/3238/1597 3964/3237/1597 +f 3950/3223/1597 3951/3224/1597 3966/3239/1597 3965/3238/1597 +f 3951/3224/1597 3952/3225/1597 3967/3240/1597 3966/3239/1597 +f 3952/3225/1597 3953/3226/1597 3968/3241/1597 3967/3240/1597 +f 3953/3226/1597 3954/3227/1597 3969/3242/1597 3968/3241/1597 +f 3954/3227/1597 3955/3228/1597 3970/3243/1597 3969/3242/1597 +f 3955/3228/1597 3956/3229/1597 3971/3244/1597 3970/3243/1597 +f 3957/3231/1597 3958/3230/1597 3973/3245/1597 3972/3246/1597 +f 3958/3230/1597 3959/3232/1597 3974/3247/1597 3973/3245/1597 +f 3959/3232/1597 3960/3233/1597 3975/3248/1597 3974/3247/1597 +f 3960/3233/1597 3961/3234/1597 3976/3249/1597 3975/3248/1597 +f 3961/3234/1597 3962/3235/1597 3977/3250/1597 3976/3249/1597 +f 3962/3235/1597 3963/3236/1597 3978/3251/1597 3977/3250/1597 +f 3963/3236/1597 3964/3237/1597 3979/3252/1597 3978/3251/1597 +f 3964/3237/1597 3965/3238/1597 3980/3253/1597 3979/3252/1597 +f 3965/3238/1597 3966/3239/1597 3981/3254/1597 3980/3253/1597 +f 3966/3239/1597 3967/3240/1597 3982/3255/1597 3981/3254/1597 +f 3967/3240/1597 3968/3241/1597 3983/3256/1597 3982/3255/1597 +f 3968/3241/1597 3969/3242/1597 3984/3257/1597 3983/3256/1597 +f 3969/3242/1597 3970/3243/1597 3985/3258/1597 3984/3257/1597 +f 3970/3243/1597 3971/3244/1597 3986/3259/1597 3985/3258/1597 +f 3972/3246/1597 3973/3245/1597 3988/3260/1597 3987/3261/1597 +f 3973/3245/1597 3974/3247/1597 3989/3262/1597 3988/3260/1597 +f 3974/3247/1597 3975/3248/1597 3990/3263/1597 3989/3262/1597 +f 3975/3248/1597 3976/3249/1597 3991/3264/1597 3990/3263/1597 +f 3976/3249/1597 3977/3250/1597 3992/3265/1597 3991/3264/1597 +f 3977/3250/1597 3978/3251/1597 3993/3266/1597 3992/3265/1597 +f 3978/3251/1597 3979/3252/1597 3994/3267/1597 3993/3266/1597 +f 3979/3252/1597 3980/3253/1597 3995/3268/1597 3994/3267/1597 +f 3980/3253/1597 3981/3254/1597 3996/3269/1597 3995/3268/1597 +f 3981/3254/1597 3982/3255/1597 3997/3270/1597 3996/3269/1597 +f 3982/3255/1597 3983/3256/1597 3998/3271/1597 3997/3270/1597 +f 3983/3256/1597 3984/3257/1597 3999/3272/1597 3998/3271/1597 +f 3984/3257/1597 3985/3258/1597 4000/3273/1597 3999/3272/1597 +f 3985/3258/1597 3986/3259/1597 4001/3274/1597 4000/3273/1597 +f 3987/3261/1597 3988/3260/1597 4003/3275/1597 4002/3276/1597 +f 3988/3260/1597 3989/3262/1597 4004/3277/1597 4003/3275/1597 +f 3989/3262/1597 3990/3263/1597 4005/3278/1597 4004/3277/1597 +f 3990/3263/1597 3991/3264/1597 4006/3279/1597 4005/3278/1597 +f 3991/3264/1597 3992/3265/1597 4007/3280/1597 4006/3279/1597 +f 3992/3265/1597 3993/3266/1597 4008/3281/1597 4007/3280/1597 +f 3993/3266/1597 3994/3267/1597 4009/3282/1597 4008/3281/1597 +f 3994/3267/1597 3995/3268/1597 4010/3283/1597 4009/3282/1597 +f 3995/3268/1597 3996/3269/1597 4011/3284/1597 4010/3283/1597 +f 3996/3269/1597 3997/3270/1597 4012/3285/1597 4011/3284/1597 +f 3997/3270/1597 3998/3271/1597 4013/3286/1597 4012/3285/1597 +f 3998/3271/1597 3999/3272/1597 4014/3287/1597 4013/3286/1597 +f 3999/3272/1597 4000/3273/1597 4015/3288/1597 4014/3287/1597 +f 4000/3273/1597 4001/3274/1597 4016/3289/1597 4015/3288/1597 +f 4002/3276/1597 4003/3275/1597 4018/3290/1597 4017/3291/1597 +f 4003/3275/1597 4004/3277/1597 4019/3292/1597 4018/3290/1597 +f 4004/3277/1597 4005/3278/1597 4020/3293/1597 4019/3292/1597 +f 4005/3278/1597 4006/3279/1597 4021/3294/1597 4020/3293/1597 +f 4006/3279/1597 4007/3280/1597 4022/3295/1597 4021/3294/1597 +f 4007/3280/1597 4008/3281/1597 4023/3296/1597 4022/3295/1597 +f 4008/3281/1597 4009/3282/1597 4024/3297/1597 4023/3296/1597 +f 4009/3282/1597 4010/3283/1597 4025/3298/1597 4024/3297/1597 +f 4010/3283/1597 4011/3284/1597 4026/3299/1597 4025/3298/1597 +f 4011/3284/1597 4012/3285/1597 4027/3300/1597 4026/3299/1597 +f 4012/3285/1597 4013/3286/1597 4028/3301/1597 4027/3300/1597 +f 4013/3286/1597 4014/3287/1597 4029/3302/1597 4028/3301/1597 +f 4014/3287/1597 4015/3288/1597 4030/3303/1597 4029/3302/1597 +f 4015/3288/1597 4016/3289/1597 4031/3304/1597 4030/3303/1597 +f 4017/3291/1597 4018/3290/1597 4033/3305/1597 4032/3306/1597 +f 4018/3290/1597 4019/3292/1597 4034/3307/1597 4033/3305/1597 +f 4019/3292/1597 4020/3293/1597 4035/3308/1597 4034/3307/1597 +f 4020/3293/1597 4021/3294/1597 4036/3309/1597 4035/3308/1597 +f 4021/3294/1597 4022/3295/1597 4037/3310/1597 4036/3309/1597 +f 4022/3295/1597 4023/3296/1597 4038/3311/1597 4037/3310/1597 +f 4023/3296/1597 4024/3297/1597 4039/3312/1597 4038/3311/1597 +f 4024/3297/1597 4025/3298/1597 4040/3313/1597 4039/3312/1597 +f 4025/3298/1597 4026/3299/1597 4041/3314/1597 4040/3313/1597 +f 4026/3299/1597 4027/3300/1597 4042/3315/1597 4041/3314/1597 +f 4027/3300/1597 4028/3301/1597 4043/3316/1597 4042/3315/1597 +f 4028/3301/1597 4029/3302/1597 4044/3317/1597 4043/3316/1597 +f 4029/3302/1597 4030/3303/1597 4045/3318/1597 4044/3317/1597 +f 4030/3303/1597 4031/3304/1597 4046/3319/1597 4045/3318/1597 +f 4032/3306/1597 4033/3305/1597 4048/3320/1597 4047/3321/1597 +f 4033/3305/1597 4034/3307/1597 4049/3322/1597 4048/3320/1597 +f 4034/3307/1597 4035/3308/1597 4050/3323/1597 4049/3322/1597 +f 4035/3308/1597 4036/3309/1597 4051/3324/1597 4050/3323/1597 +f 4036/3309/1597 4037/3310/1597 4052/3325/1597 4051/3324/1597 +f 4037/3310/1597 4038/3311/1597 4053/3326/1597 4052/3325/1597 +f 4038/3311/1597 4039/3312/1597 4054/3327/1597 4053/3326/1597 +f 4039/3312/1597 4040/3313/1597 4055/3328/1597 4054/3327/1597 +f 4040/3313/1597 4041/3314/1597 4056/3329/1597 4055/3328/1597 +f 4041/3314/1597 4042/3315/1597 4057/3330/1597 4056/3329/1597 +f 4042/3315/1597 4043/3316/1597 4058/3331/1597 4057/3330/1597 +f 4043/3316/1597 4044/3317/1597 4059/3332/1597 4058/3331/1597 +f 4044/3317/1597 4045/3318/1597 4060/3333/1597 4059/3332/1597 +f 4045/3318/1597 4046/3319/1597 4061/3334/1597 4060/3333/1597 +f 4047/3321/1597 4048/3320/1597 4063/3335/1597 4062/3336/1597 +f 4048/3320/1597 4049/3322/1597 4064/3337/1597 4063/3335/1597 +f 4049/3322/1597 4050/3323/1597 4065/3338/1597 4064/3337/1597 +f 4050/3323/1597 4051/3324/1597 4066/3339/1597 4065/3338/1597 +f 4051/3324/1597 4052/3325/1597 4067/3340/1597 4066/3339/1597 +f 4052/3325/1597 4053/3326/1597 4068/3341/1597 4067/3340/1597 +f 4053/3326/1597 4054/3327/1597 4069/3342/1597 4068/3341/1597 +f 4054/3327/1597 4055/3328/1597 4070/3343/1597 4069/3342/1597 +f 4055/3328/1597 4056/3329/1597 4071/3344/1597 4070/3343/1597 +f 4056/3329/1597 4057/3330/1597 4072/3345/1597 4071/3344/1597 +f 4057/3330/1597 4058/3331/1597 4073/3346/1597 4072/3345/1597 +f 4058/3331/1597 4059/3332/1597 4074/3347/1597 4073/3346/1597 +f 4059/3332/1597 4060/3333/1597 4075/3348/1597 4074/3347/1597 +f 4060/3333/1597 4061/3334/1597 4076/3349/1597 4075/3348/1597 +f 4062/3336/1597 4063/3335/1597 4078/3350/1597 4077/3351/1597 +f 4063/3335/1597 4064/3337/1597 4079/3352/1597 4078/3350/1597 +f 4064/3337/1597 4065/3338/1597 4080/3353/1597 4079/3352/1597 +f 4065/3338/1597 4066/3339/1597 4081/3354/1597 4080/3353/1597 +f 4066/3339/1597 4067/3340/1597 4082/3355/1597 4081/3354/1597 +f 4067/3340/1597 4068/3341/1597 4083/3356/1597 4082/3355/1597 +f 4068/3341/1597 4069/3342/1597 4084/3357/1597 4083/3356/1597 +f 4069/3342/1597 4070/3343/1597 4085/3358/1597 4084/3357/1597 +f 4070/3343/1597 4071/3344/1597 4086/3359/1597 4085/3358/1597 +f 4071/3344/1597 4072/3345/1597 4087/3360/1597 4086/3359/1597 +f 4072/3345/1597 4073/3346/1597 4088/3361/1597 4087/3360/1597 +f 4073/3346/1597 4074/3347/1597 4089/3362/1597 4088/3361/1597 +f 4074/3347/1597 4075/3348/1597 4090/3363/1597 4089/3362/1597 +f 4075/3348/1597 4076/3349/1597 4091/3364/1597 4090/3363/1597 +f 4077/3351/1597 4078/3350/1597 4093/3365/1597 4092/3366/1597 +f 4078/3350/1597 4079/3352/1597 4094/3367/1597 4093/3365/1597 +f 4079/3352/1597 4080/3353/1597 4095/3368/1597 4094/3367/1597 +f 4080/3353/1597 4081/3354/1597 4096/3369/1597 4095/3368/1597 +f 4081/3354/1597 4082/3355/1597 4097/3370/1597 4096/3369/1597 +f 4082/3355/1597 4083/3356/1597 4098/3371/1597 4097/3370/1597 +f 4083/3356/1597 4084/3357/1597 4099/3372/1597 4098/3371/1597 +f 4084/3357/1597 4085/3358/1597 4100/3373/1597 4099/3372/1597 +f 4085/3358/1597 4086/3359/1597 4101/3374/1597 4100/3373/1597 +f 4086/3359/1597 4087/3360/1597 4102/3375/1597 4101/3374/1597 +f 4087/3360/1597 4088/3361/1597 4103/3376/1597 4102/3375/1597 +f 4088/3361/1597 4089/3362/1597 4104/3377/1597 4103/3376/1597 +f 4089/3362/1597 4090/3363/1597 4105/3378/1597 4104/3377/1597 +f 4090/3363/1597 4091/3364/1597 4106/3379/1597 4105/3378/1597 +f 4092/3366/1597 4093/3365/1597 4108/3380/1597 4107/3381/1597 +f 4093/3365/1597 4094/3367/1597 4109/3382/1597 4108/3380/1597 +f 4094/3367/1597 4095/3368/1597 4110/3383/1597 4109/3382/1597 +f 4095/3368/1597 4096/3369/1597 4111/3384/1597 4110/3383/1597 +f 4096/3369/1597 4097/3370/1597 4112/3385/1597 4111/3384/1597 +f 4097/3370/1597 4098/3371/1597 4113/3386/1597 4112/3385/1597 +f 4098/3371/1597 4099/3372/1597 4114/3387/1597 4113/3386/1597 +f 4099/3372/1597 4100/3373/1597 4115/3388/1597 4114/3387/1597 +f 4100/3373/1597 4101/3374/1597 4116/3389/1597 4115/3388/1597 +f 4101/3374/1597 4102/3375/1597 4117/3390/1597 4116/3389/1597 +f 4102/3375/1597 4103/3376/1597 4118/3391/1597 4117/3390/1597 +f 4103/3376/1597 4104/3377/1597 4119/3392/1597 4118/3391/1597 +f 4104/3377/1597 4105/3378/1597 4120/3393/1597 4119/3392/1597 +f 4105/3378/1597 4106/3379/1597 4121/3394/1597 4120/3393/1597 +f 4107/3381/1597 4108/3380/1597 4123/3395/1597 4122/3396/1597 +f 4108/3380/1597 4109/3382/1597 4124/3397/1597 4123/3395/1597 +f 4109/3382/1597 4110/3383/1597 4125/3398/1597 4124/3397/1597 +f 4110/3383/1597 4111/3384/1597 4126/3399/1597 4125/3398/1597 +f 4111/3384/1597 4112/3385/1597 4127/3400/1597 4126/3399/1597 +f 4112/3385/1597 4113/3386/1597 4128/3401/1597 4127/3400/1597 +f 4113/3386/1597 4114/3387/1597 4129/3402/1597 4128/3401/1597 +f 4114/3387/1597 4115/3388/1597 4130/3403/1597 4129/3402/1597 +f 4115/3388/1597 4116/3389/1597 4131/3404/1597 4130/3403/1597 +f 4116/3389/1597 4117/3390/1597 4132/3405/1597 4131/3404/1597 +f 4117/3390/1597 4118/3391/1597 4133/3406/1597 4132/3405/1597 +f 4118/3391/1597 4119/3392/1597 4134/3407/1597 4133/3406/1597 +f 4119/3392/1597 4120/3393/1597 4135/3408/1597 4134/3407/1597 +f 4120/3393/1597 4121/3394/1597 4136/3409/1597 4135/3408/1597 +f 2735/2275/1597 2847/2277/1597 3912/3185/1597 2966/3410/1597 +f 2847/2277/1597 2848/2338/1597 3913/3186/1597 3912/3185/1597 +f 2848/2338/1597 2849/3411/1597 3914/3189/1597 3913/3186/1597 +f 2849/3411/1597 2850/3412/1597 3915/3191/1597 3914/3189/1597 +f 2850/3412/1597 2851/3413/1597 3916/3193/1597 3915/3191/1597 +f 2851/3413/1597 2852/2334/1597 3917/3195/1597 3916/3193/1597 +f 2852/2334/1597 2853/3414/1597 3918/3197/1597 3917/3195/1597 +f 2853/3414/1597 2854/2332/1597 3919/3199/1597 3918/3197/1597 +f 2854/2332/1597 2855/3415/1597 3920/3201/1597 3919/3199/1597 +f 2855/3415/1597 2856/2330/1597 3921/3203/1597 3920/3201/1597 +f 2856/2330/1597 2857/2329/1597 3922/3205/1597 3921/3203/1597 +f 2857/2329/1597 2858/3416/1597 3923/3207/1597 3922/3205/1597 +f 2858/3416/1597 2859/3417/1597 3924/3209/1597 3923/3207/1597 +f 2859/3417/1597 2860/2326/1597 3925/3211/1597 3924/3209/1597 +f 2860/2326/1597 2861/2324/1597 3926/3213/1597 3925/3211/1597 +f 2861/2324/1597 2729/2325/1597 2951/3418/1597 3926/3213/1597 +f 3926/3213/1597 2951/3418/1597 2950/3419/1597 3941/3214/1597 +f 3941/3214/1597 2950/3419/1597 2949/3420/1597 3956/3229/1597 +f 3956/3229/1597 2949/3420/1597 2948/3421/1597 3971/3244/1597 +f 3971/3244/1597 2948/3421/1597 2947/3422/1597 3986/3259/1597 +f 3986/3259/1597 2947/3422/1597 2946/3423/1597 4001/3274/1597 +f 4001/3274/1597 2946/3423/1597 2945/3424/1597 4016/3289/1597 +f 4016/3289/1597 2945/3424/1597 2944/3425/1597 4031/3304/1597 +f 4031/3304/1597 2944/3425/1597 2943/3426/1597 4046/3319/1597 +f 4046/3319/1597 2943/3426/1597 2942/3427/1597 4061/3334/1597 +f 4061/3334/1597 2942/3427/1597 2941/3428/1597 4076/3349/1597 +f 4076/3349/1597 2941/3428/1597 2940/3429/1597 4091/3364/1597 +f 4091/3364/1597 2940/3429/1597 2939/3430/1597 4106/3379/1597 +f 4106/3379/1597 2939/3430/1597 2938/3431/1597 4121/3394/1597 +f 4121/3394/1597 2938/3431/1597 2937/3432/1597 4136/3409/1597 +f 4136/3409/1597 2937/3432/1597 2739/3433/1597 2981/3434/1597 +f 4135/3408/1597 4136/3409/1597 2981/3434/1597 2980/3435/1597 +f 4134/3407/1597 4135/3408/1597 2980/3435/1597 2979/3436/1597 +f 4133/3406/1597 4134/3407/1597 2979/3436/1597 2978/3437/1597 +f 4132/3405/1597 4133/3406/1597 2978/3437/1597 2977/3438/1597 +f 4131/3404/1597 4132/3405/1597 2977/3438/1597 2976/3439/1597 +f 4130/3403/1597 4131/3404/1597 2976/3439/1597 2975/3440/1597 +f 4129/3402/1597 4130/3403/1597 2975/3440/1597 2974/3441/1597 +f 4128/3401/1597 4129/3402/1597 2974/3441/1597 2973/3442/1597 +f 4127/3400/1597 4128/3401/1597 2973/3442/1597 2972/3443/1597 +f 4126/3399/1597 4127/3400/1597 2972/3443/1597 2971/3444/1597 +f 4125/3398/1597 4126/3399/1597 2971/3444/1597 2970/3445/1597 +f 4124/3397/1597 4125/3398/1597 2970/3445/1597 2969/3446/1597 +f 4123/3395/1597 4124/3397/1597 2969/3446/1597 2968/3447/1597 +f 4122/3396/1597 4123/3395/1597 2968/3447/1597 2967/3448/1597 +f 2952/3449/1597 4122/3396/1597 2967/3448/1597 2740/3450/1597 +f 2953/3451/1597 4107/3381/1597 4122/3396/1597 2952/3449/1597 +f 2954/3452/1597 4092/3366/1597 4107/3381/1597 2953/3451/1597 +f 2955/3453/1597 4077/3351/1597 4092/3366/1597 2954/3452/1597 +f 2956/3454/1597 4062/3336/1597 4077/3351/1597 2955/3453/1597 +f 2957/3455/1597 4047/3321/1597 4062/3336/1597 2956/3454/1597 +f 2958/3456/1597 4032/3306/1597 4047/3321/1597 2957/3455/1597 +f 2959/3457/1597 4017/3291/1597 4032/3306/1597 2958/3456/1597 +f 2960/3458/1597 4002/3276/1597 4017/3291/1597 2959/3457/1597 +f 2961/3459/1597 3987/3261/1597 4002/3276/1597 2960/3458/1597 +f 2962/3460/1597 3972/3246/1597 3987/3261/1597 2961/3459/1597 +f 2963/3461/1597 3957/3231/1597 3972/3246/1597 2962/3460/1597 +f 2964/3462/1597 3942/3216/1597 3957/3231/1597 2963/3461/1597 +f 2965/3463/1597 3927/3188/1597 3942/3216/1597 2964/3462/1597 +f 2966/3410/1597 3912/3185/1597 3927/3188/1597 2965/3463/1597 +f 4138/3464/1597 4139/3465/1597 4147/3466/1597 4146/3467/1597 +f 4139/3465/1597 4140/3468/1597 4148/3469/1597 4147/3466/1597 +f 4140/3468/1597 4141/3470/1597 4149/3471/1597 4148/3469/1597 +f 4141/3470/1597 4142/3472/1597 4150/3473/1597 4149/3471/1597 +f 4142/3472/1597 4143/3474/1597 4151/3475/1597 4150/3473/1597 +f 4143/3474/1597 4144/3476/1597 4152/3477/1597 4151/3475/1597 +f 4144/3476/1597 4145/3478/1597 4153/3479/1597 4152/3477/1597 +f 4146/3467/1597 4147/3466/1597 4155/3480/1597 4154/3481/1597 +f 4147/3466/1597 4148/3469/1597 4156/3482/1597 4155/3480/1597 +f 4148/3469/1597 4149/3471/1597 4157/3483/1597 4156/3482/1597 +f 4149/3471/1597 4150/3473/1597 4158/3484/1597 4157/3483/1597 +f 4150/3473/1597 4151/3475/1597 4159/3485/1597 4158/3484/1597 +f 4151/3475/1597 4152/3477/1597 4160/3486/1597 4159/3485/1597 +f 4152/3477/1597 4153/3479/1597 4161/3487/1597 4160/3486/1597 +f 4154/3481/1597 4155/3480/1597 4163/3488/1597 4162/3489/1597 +f 4155/3480/1597 4156/3482/1597 4164/3490/1597 4163/3488/1597 +f 4156/3482/1597 4157/3483/1597 4165/3491/1597 4164/3490/1597 +f 4157/3483/1597 4158/3484/1597 4166/3492/1597 4165/3491/1597 +f 4158/3484/1597 4159/3485/1597 4167/3493/1597 4166/3492/1597 +f 4159/3485/1597 4160/3486/1597 4168/3494/1597 4167/3493/1597 +f 4160/3486/1597 4161/3487/1597 4169/3495/1597 4168/3494/1597 +f 4162/3489/1597 4163/3488/1597 4171/3496/1597 4170/3497/1597 +f 4163/3488/1597 4164/3490/1597 4172/3498/1597 4171/3496/1597 +f 4164/3490/1597 4165/3491/1597 4173/3499/1597 4172/3498/1597 +f 4165/3491/1597 4166/3492/1597 4174/3500/1597 4173/3499/1597 +f 4166/3492/1597 4167/3493/1597 4175/3501/1597 4174/3500/1597 +f 4167/3493/1597 4168/3494/1597 4176/3502/1597 4175/3501/1597 +f 4168/3494/1597 4169/3495/1597 4177/3503/1597 4176/3502/1597 +f 4170/3497/1597 4171/3496/1597 4179/3504/1597 4178/3505/1597 +f 4171/3496/1597 4172/3498/1597 4180/3506/1597 4179/3504/1597 +f 4172/3498/1597 4173/3499/1597 4181/3507/1597 4180/3506/1597 +f 4173/3499/1597 4174/3500/1597 4182/3508/1597 4181/3507/1597 +f 4174/3500/1597 4175/3501/1597 4183/3509/1597 4182/3508/1597 +f 4175/3501/1597 4176/3502/1597 4184/3510/1597 4183/3509/1597 +f 4176/3502/1597 4177/3503/1597 4185/3511/1597 4184/3510/1597 +f 4178/3505/1597 4179/3504/1597 4187/3512/1597 4186/3513/1597 +f 4179/3504/1597 4180/3506/1597 4188/3514/1597 4187/3512/1597 +f 4180/3506/1597 4181/3507/1597 4189/3515/1597 4188/3514/1597 +f 4181/3507/1597 4182/3508/1597 4190/3516/1597 4189/3515/1597 +f 4182/3508/1597 4183/3509/1597 4191/3517/1597 4190/3516/1597 +f 4183/3509/1597 4184/3510/1597 4192/3518/1597 4191/3517/1597 +f 4184/3510/1597 4185/3511/1597 4193/3519/1597 4192/3518/1597 +f 4194/3520/1597 4195/3521/1597 4203/3522/1597 4202/3523/1597 +f 4195/3521/1597 4196/3524/1597 4204/3525/1597 4203/3522/1597 +f 4196/3524/1597 4197/3526/1597 4205/3527/1597 4204/3525/1597 +f 4197/3526/1597 4198/3528/1597 4206/3529/1597 4205/3527/1597 +f 4198/3528/1597 4199/3530/1597 4207/3531/1597 4206/3529/1597 +f 4199/3530/1597 4200/3532/1597 4208/3533/1597 4207/3531/1597 +f 4200/3532/1597 4201/3534/1597 4209/3535/1597 4208/3533/1597 +f 4202/3523/1597 4203/3522/1597 4211/3536/1597 4210/3537/1597 +f 4203/3522/1597 4204/3525/1597 4212/3538/1597 4211/3536/1597 +f 4204/3525/1597 4205/3527/1597 4213/3539/1597 4212/3538/1597 +f 4205/3527/1597 4206/3529/1597 4214/3540/1597 4213/3539/1597 +f 4206/3529/1597 4207/3531/1597 4215/3541/1597 4214/3540/1597 +f 4207/3531/1597 4208/3533/1597 4216/3542/1597 4215/3541/1597 +f 4208/3533/1597 4209/3535/1597 4217/3543/1597 4216/3542/1597 +f 4210/3537/1597 4211/3536/1597 4219/3544/1597 4218/3545/1597 +f 4211/3536/1597 4212/3538/1597 4220/3546/1597 4219/3544/1597 +f 4212/3538/1597 4213/3539/1597 4221/3547/1597 4220/3546/1597 +f 4213/3539/1597 4214/3540/1597 4222/3548/1597 4221/3547/1597 +f 4214/3540/1597 4215/3541/1597 4223/3549/1597 4222/3548/1597 +f 4215/3541/1597 4216/3542/1597 4224/3550/1597 4223/3549/1597 +f 4216/3542/1597 4217/3543/1597 4225/3551/1597 4224/3550/1597 +f 4218/3545/1597 4219/3544/1597 4227/3552/1597 4226/3553/1597 +f 4219/3544/1597 4220/3546/1597 4228/3554/1597 4227/3552/1597 +f 4220/3546/1597 4221/3547/1597 4229/3555/1597 4228/3554/1597 +f 4221/3547/1597 4222/3548/1597 4230/3556/1597 4229/3555/1597 +f 4222/3548/1597 4223/3549/1597 4231/3557/1597 4230/3556/1597 +f 4223/3549/1597 4224/3550/1597 4232/3558/1597 4231/3557/1597 +f 4224/3550/1597 4225/3551/1597 4233/3559/1597 4232/3558/1597 +f 4226/3553/1597 4227/3552/1597 4235/3560/1597 4234/3561/1597 +f 4227/3552/1597 4228/3554/1597 4236/3562/1597 4235/3560/1597 +f 4228/3554/1597 4229/3555/1597 4237/3563/1597 4236/3562/1597 +f 4229/3555/1597 4230/3556/1597 4238/3564/1597 4237/3563/1597 +f 4230/3556/1597 4231/3557/1597 4239/3565/1597 4238/3564/1597 +f 4231/3557/1597 4232/3558/1597 4240/3566/1597 4239/3565/1597 +f 4232/3558/1597 4233/3559/1597 4241/3567/1597 4240/3566/1597 +f 4234/3561/1597 4235/3560/1597 4243/3568/1597 4242/3569/1597 +f 4235/3560/1597 4236/3562/1597 4244/3570/1597 4243/3568/1597 +f 4236/3562/1597 4237/3563/1597 4245/3571/1597 4244/3570/1597 +f 4237/3563/1597 4238/3564/1597 4246/3572/1597 4245/3571/1597 +f 4238/3564/1597 4239/3565/1597 4247/3573/1597 4246/3572/1597 +f 4239/3565/1597 4240/3566/1597 4248/3574/1597 4247/3573/1597 +f 4240/3566/1597 4241/3567/1597 4249/3575/1597 4248/3574/1597 +f 4250/3576/1597 4251/3577/1597 4259/3578/1597 4258/3579/1597 +f 4251/3577/1597 4252/3580/1597 4260/3581/1597 4259/3578/1597 +f 4252/3580/1597 4253/3582/1597 4261/3583/1597 4260/3581/1597 +f 4253/3582/1597 4254/3584/1597 4262/3585/1597 4261/3583/1597 +f 4254/3584/1597 4255/3586/1597 4263/3587/1597 4262/3585/1597 +f 4255/3586/1597 4256/3588/1597 4264/3589/1597 4263/3587/1597 +f 4256/3588/1597 4257/3590/1597 4265/3591/1597 4264/3589/1597 +f 4258/3579/1597 4259/3578/1597 4267/3592/1597 4266/3593/1597 +f 4259/3578/1597 4260/3581/1597 4268/3594/1597 4267/3592/1597 +f 4260/3581/1597 4261/3583/1597 4269/3595/1597 4268/3594/1597 +f 4261/3583/1597 4262/3585/1597 4270/3596/1597 4269/3595/1597 +f 4262/3585/1597 4263/3587/1597 4271/3597/1597 4270/3596/1597 +f 4263/3587/1597 4264/3589/1597 4272/3598/1597 4271/3597/1597 +f 4264/3589/1597 4265/3591/1597 4273/3599/1597 4272/3598/1597 +f 4266/3593/1597 4267/3592/1597 4275/3600/1597 4274/3601/1597 +f 4267/3592/1597 4268/3594/1597 4276/3602/1597 4275/3600/1597 +f 4268/3594/1597 4269/3595/1597 4277/3603/1597 4276/3602/1597 +f 4269/3595/1597 4270/3596/1597 4278/3604/1597 4277/3603/1597 +f 4270/3596/1597 4271/3597/1597 4279/3605/1597 4278/3604/1597 +f 4271/3597/1597 4272/3598/1597 4280/3606/1597 4279/3605/1597 +f 4272/3598/1597 4273/3599/1597 4281/3607/1597 4280/3606/1597 +f 4274/3601/1597 4275/3600/1597 4283/3608/1597 4282/3609/1597 +f 4275/3600/1597 4276/3602/1597 4284/3610/1597 4283/3608/1597 +f 4276/3602/1597 4277/3603/1597 4285/3611/1597 4284/3610/1597 +f 4277/3603/1597 4278/3604/1597 4286/3612/1597 4285/3611/1597 +f 4278/3604/1597 4279/3605/1597 4287/3613/1597 4286/3612/1597 +f 4279/3605/1597 4280/3606/1597 4288/3614/1597 4287/3613/1597 +f 4280/3606/1597 4281/3607/1597 4289/3615/1597 4288/3614/1597 +f 4282/3609/1597 4283/3608/1597 4291/3616/1597 4290/3617/1597 +f 4283/3608/1597 4284/3610/1597 4292/3618/1597 4291/3616/1597 +f 4284/3610/1597 4285/3611/1597 4293/3619/1597 4292/3618/1597 +f 4285/3611/1597 4286/3612/1597 4294/3620/1597 4293/3619/1597 +f 4286/3612/1597 4287/3613/1597 4295/3621/1597 4294/3620/1597 +f 4287/3613/1597 4288/3614/1597 4296/3622/1597 4295/3621/1597 +f 4288/3614/1597 4289/3615/1597 4297/3623/1597 4296/3622/1597 +f 4290/3617/1597 4291/3616/1597 4299/3624/1597 4298/3625/1597 +f 4291/3616/1597 4292/3618/1597 4300/3626/1597 4299/3624/1597 +f 4292/3618/1597 4293/3619/1597 4301/3627/1597 4300/3626/1597 +f 4293/3619/1597 4294/3620/1597 4302/3628/1597 4301/3627/1597 +f 4294/3620/1597 4295/3621/1597 4303/3629/1597 4302/3628/1597 +f 4295/3621/1597 4296/3622/1597 4304/3630/1597 4303/3629/1597 +f 4296/3622/1597 4297/3623/1597 4305/3631/1597 4304/3630/1597 +f 4242/3569/1597 4243/3568/1597 4153/3479/1597 4145/3632/1597 +f 4243/3568/1597 4244/3570/1597 4161/3633/1597 4153/3479/1597 +f 4244/3570/1597 4245/3571/1597 4169/3495/1597 4161/3633/1597 +f 4245/3571/1597 4246/3572/1597 4177/3503/1597 4169/3495/1597 +f 4246/3572/1597 4247/3573/1597 4185/3634/1597 4177/3503/1597 +f 4247/3573/1597 4248/3574/1597 4193/3635/1597 4185/3634/1597 +f 4298/3625/1597 4299/3624/1597 4209/3636/1597 4201/3637/1597 +f 4299/3624/1597 4300/3626/1597 4217/3543/1597 4209/3636/1597 +f 4300/3626/1597 4301/3627/1597 4225/3551/1597 4217/3543/1597 +f 4301/3627/1597 4302/3628/1597 4233/3559/1597 4225/3551/1597 +f 4302/3628/1597 4303/3629/1597 4241/3638/1597 4233/3559/1597 +f 4303/3629/1597 4304/3630/1597 4249/3639/1597 4241/3638/1597 +f 4186/3513/1597 4187/3512/1597 4265/3640/1597 4257/3641/1597 +f 4187/3512/1597 4188/3514/1597 4273/3599/1597 4265/3640/1597 +f 4188/3514/1597 4189/3515/1597 4281/3607/1597 4273/3599/1597 +f 4189/3515/1597 4190/3516/1597 4289/3615/1597 4281/3607/1597 +f 4190/3516/1597 4191/3517/1597 4297/3642/1597 4289/3615/1597 +f 4191/3517/1597 4192/3518/1597 4305/3643/1597 4297/3642/1597 +f 4192/3518/1597 4193/3519/1597 4137/3644/1597 4305/3643/1597 +f 4248/3574/1597 4249/3575/1597 4137/3644/1597 4193/3635/1597 +f 4304/3630/1597 4305/3631/1597 4137/3644/1597 4249/3639/1597 +f 2736/3645/1597 2997/3646/1597 4138/3464/1597 2801/3647/1597 +f 2997/3646/1597 2998/3648/1597 4139/3465/1597 4138/3464/1597 +f 2998/3648/1597 2999/3649/1597 4140/3468/1597 4139/3465/1597 +f 2999/3649/1597 3000/3650/1597 4141/3470/1597 4140/3468/1597 +f 3000/3650/1597 3001/3651/1597 4142/3472/1597 4141/3470/1597 +f 3001/3651/1597 3002/3652/1597 4143/3474/1597 4142/3472/1597 +f 3002/3652/1597 3003/3653/1597 4144/3476/1597 4143/3474/1597 +f 3003/3653/1597 3004/3654/1597 4145/3478/1597 4144/3476/1597 +f 2801/3647/1597 4138/3464/1597 4146/3467/1597 2800/3655/1597 +f 2800/3655/1597 4146/3467/1597 4154/3481/1597 2799/3656/1597 +f 2799/3656/1597 4154/3481/1597 4162/3489/1597 2798/3657/1597 +f 2798/3657/1597 4162/3489/1597 4170/3497/1597 2797/3658/1597 +f 2797/3658/1597 4170/3497/1597 4178/3505/1597 2796/3659/1597 +f 2796/3659/1597 4178/3505/1597 4186/3513/1597 2795/3660/1597 +f 2795/3660/1597 4186/3513/1597 4257/3641/1597 2794/3661/1597 +f 2741/3662/1597 2996/3663/1597 4194/3520/1597 3011/3664/1597 +f 2996/3663/1597 2995/3665/1597 4195/3521/1597 4194/3520/1597 +f 2995/3665/1597 2994/3666/1597 4196/3524/1597 4195/3521/1597 +f 2994/3666/1597 2993/3667/1597 4197/3526/1597 4196/3524/1597 +f 2993/3667/1597 2992/3668/1597 4198/3528/1597 4197/3526/1597 +f 2992/3668/1597 2991/3669/1597 4199/3530/1597 4198/3528/1597 +f 2991/3669/1597 2990/3670/1597 4200/3532/1597 4199/3530/1597 +f 2990/3670/1597 2989/3671/1597 4201/3534/1597 4200/3532/1597 +f 3011/3664/1597 4194/3520/1597 4202/3523/1597 3010/3672/1597 +f 3010/3672/1597 4202/3523/1597 4210/3537/1597 3009/3673/1597 +f 3009/3673/1597 4210/3537/1597 4218/3545/1597 3008/3674/1597 +f 3008/3674/1597 4218/3545/1597 4226/3553/1597 3007/3675/1597 +f 3007/3675/1597 4226/3553/1597 4234/3561/1597 3006/3676/1597 +f 3006/3676/1597 4234/3561/1597 4242/3569/1597 3005/3677/1597 +f 3005/3677/1597 4242/3569/1597 4145/3632/1597 3004/3654/1597 +f 2733/3678/1597 2787/3679/1597 4250/3576/1597 2982/3680/1597 +f 2787/3679/1597 2788/3681/1597 4251/3577/1597 4250/3576/1597 +f 2788/3681/1597 2789/3682/1597 4252/3580/1597 4251/3577/1597 +f 2789/3682/1597 2790/3683/1597 4253/3582/1597 4252/3580/1597 +f 2790/3683/1597 2791/3684/1597 4254/3584/1597 4253/3582/1597 +f 2791/3684/1597 2792/2891/1597 4255/3586/1597 4254/3584/1597 +f 2792/2891/1597 2793/3685/1597 4256/3588/1597 4255/3586/1597 +f 2793/3685/1597 2794/3661/1597 4257/3590/1597 4256/3588/1597 +f 2982/3680/1597 4250/3576/1597 4258/3579/1597 2983/3686/1597 +f 2983/3686/1597 4258/3579/1597 4266/3593/1597 2984/3687/1597 +f 2984/3687/1597 4266/3593/1597 4274/3601/1597 2985/3688/1597 +f 2985/3688/1597 4274/3601/1597 4282/3609/1597 2986/3689/1597 +f 2986/3689/1597 4282/3609/1597 4290/3617/1597 2987/3690/1597 +f 2987/3690/1597 4290/3617/1597 4298/3625/1597 2988/3691/1597 +f 2988/3691/1597 4298/3625/1597 4201/3637/1597 2989/3671/1597 +o Plane +v -22.000000 0.000000 -12.000000 +v -7.000000 0.000000 -12.000000 +v -22.000000 0.000000 -22.000000 +v -7.000000 0.000000 -22.000000 +v -22.000000 -2.000000 -22.000000 +v -22.000000 -2.000000 -12.000000 +v -7.000000 -2.000000 -12.000000 +v -7.000000 -2.000000 -22.000000 +vn -0.0000 1.0000 -0.0000 +vn -0.0000 -0.0000 1.0000 +vn -0.0000 -0.0000 -1.0000 +vn -1.0000 -0.0000 -0.0000 +vn 1.0000 -0.0000 -0.0000 +vt -3.250000 -4.500000 +vt 4.250000 -4.500000 +vt 4.250000 0.500000 +vt -3.250000 0.500000 +vt 4.250000 1.000000 +vt -3.250000 1.000000 +vt -3.250000 0.000000 +vt 4.250000 0.000000 +vt -4.500000 1.000000 +vt 0.500000 1.000000 +vt 0.500000 0.000000 +vt -4.500000 0.000000 +s 0 +usemtl Cobblestone +f 4311/3692/1598 4312/3693/1598 4313/3694/1598 4310/3695/1598 +f 4309/3696/1599 4308/3697/1599 4310/3698/1599 4313/3699/1599 +f 4306/3697/1600 4307/3696/1600 4312/3699/1600 4311/3698/1600 +f 4307/3700/1601 4309/3701/1601 4313/3702/1601 4312/3703/1601 +f 4308/3701/1602 4306/3700/1602 4311/3703/1602 4310/3702/1602 +o Cube +v -19.000000 0.000000 1.414214 +v -19.000000 0.500000 0.707107 +v -20.414213 0.000000 0.000000 +v -19.707108 0.500000 0.000000 +v -17.585787 0.000000 0.000000 +v -18.292892 0.500000 0.000000 +v -19.000000 0.000000 -1.414214 +v -19.000000 0.500000 -0.707107 +vn -0.5000 0.7071 0.5000 +vn -0.5000 0.7071 -0.5000 +vn 0.5000 0.7071 -0.5000 +vn 0.5000 0.7071 0.5000 +vn -0.0000 1.0000 -0.0000 +vt 1.106009 1.000000 +vt 0.750000 0.750000 +vt 0.750000 0.250000 +vt 1.106009 0.000000 +vt 1.000000 -0.106010 +vt 0.250000 0.250000 +vt 0.000000 -0.106010 +vt -0.106010 0.000000 +vt 0.250000 0.750000 +vt -0.106010 1.000000 +vt 0.000000 1.106009 +vt 1.000000 1.106009 +s 0 +usemtl Cobblestone +f 4314/3704/1603 4315/3705/1603 4317/3706/1603 4316/3707/1603 +f 4316/3708/1604 4317/3706/1604 4321/3709/1604 4320/3710/1604 +f 4320/3711/1605 4321/3709/1605 4319/3712/1605 4318/3713/1605 +f 4318/3714/1606 4319/3712/1606 4315/3705/1606 4314/3715/1606 +f 4321/3709/1607 4317/3706/1607 4315/3705/1607 4319/3712/1607 +o Plane.001 +v -16.000000 0.142925 -4.585786 +v -14.585787 0.000000 -6.000000 +v -17.414213 1.189960 -6.000000 +v -16.000000 0.142925 -7.414214 +v -16.000000 0.000000 -4.585786 +v -16.000000 0.000000 -7.414214 +v -17.414213 0.000000 -6.000000 +v -17.060659 0.928201 -5.646447 +v -16.707108 0.666442 -5.292893 +v -16.353554 0.404684 -4.939340 +v -15.646446 0.107194 -4.939340 +v -15.292893 0.071462 -5.292893 +v -14.939340 0.035731 -5.646447 +v -14.939340 0.035731 -6.353553 +v -15.292893 0.071463 -6.707107 +v -15.646446 0.107194 -7.060660 +v -16.353554 0.404684 -7.060660 +v -16.707108 0.666443 -6.707107 +v -17.060659 0.928201 -6.353553 +v -16.000000 0.107193 -4.585786 +v -16.000000 0.071462 -4.585786 +v -16.000000 0.035731 -4.585786 +v -16.000000 0.107194 -7.414214 +v -16.000000 0.071463 -7.414214 +v -16.000000 0.035731 -7.414214 +v -17.414213 0.892470 -6.000000 +v -17.414213 0.594980 -6.000000 +v -17.414213 0.297490 -6.000000 +v -16.353554 0.000000 -7.060660 +v -16.707108 0.000000 -6.707107 +v -17.060659 0.000000 -6.353553 +v -14.939340 0.000000 -6.353553 +v -15.292893 0.000000 -6.707107 +v -15.646446 0.000000 -7.060660 +v -14.939340 0.000000 -5.646447 +v -15.292893 0.000000 -5.292893 +v -15.646446 0.000000 -4.939340 +v -16.353554 0.000000 -4.939340 +v -16.707108 0.000000 -5.292893 +v -17.060659 0.000000 -5.646447 +v -16.000000 0.312445 -5.292893 +v -15.646446 0.220207 -5.646447 +v -15.292893 0.127969 -6.000000 +v -16.353554 0.517697 -5.646447 +v -16.000000 0.368952 -6.000000 +v -15.646446 0.220207 -6.353553 +v -16.707108 0.722949 -6.000000 +v -16.353554 0.517698 -6.353553 +v -16.000000 0.312446 -6.707107 +v -17.060659 0.696151 -6.353553 +v -16.707108 0.499832 -6.707107 +v -16.353554 0.303513 -7.060660 +v -17.060659 0.464101 -6.353553 +v -16.707108 0.333221 -6.707107 +v -16.353554 0.202342 -7.060660 +v -17.060659 0.232050 -6.353553 +v -16.707108 0.166611 -6.707107 +v -16.353554 0.101171 -7.060660 +v -15.528596 0.047642 -6.942809 +v -15.701971 0.082686 -7.116185 +v -15.418177 0.058801 -6.832390 +v -15.181844 0.030120 -6.596057 +v -15.418177 0.025323 -6.832390 +v -15.701972 0.030120 -7.116185 +v -15.749434 0.058801 -7.163648 +v -15.528595 0.047642 -5.057191 +v -15.181844 0.030120 -5.403943 +v -15.418177 0.058801 -5.167610 +v -15.701971 0.082685 -4.883815 +v -15.749434 0.058801 -4.836352 +v -15.701971 0.030120 -4.883815 +v -15.418177 0.025323 -5.167610 +v -17.060659 0.696151 -5.646447 +v -17.060659 0.464101 -5.646447 +v -17.060659 0.232050 -5.646447 +v -16.707108 0.499832 -5.292893 +v -16.707108 0.333221 -5.292893 +v -16.707108 0.166611 -5.292893 +v -16.353554 0.303513 -4.939340 +v -16.353554 0.202342 -4.939340 +v -16.353554 0.101171 -4.939340 +vn 0.3867 0.9193 0.0735 +vn 0.3226 0.9465 -0.0000 +vn 0.4477 0.8942 -0.0000 +vn 0.3867 0.9193 -0.0735 +vn 0.3787 0.9000 0.2158 +vn 0.3190 0.9359 0.1496 +vn 0.2517 0.9647 0.0771 +vn 0.1781 0.9840 -0.0000 +vn 0.2517 0.9647 -0.0771 +vn 0.3190 0.9359 -0.1496 +vn 0.3787 0.9000 -0.2158 +vn 0.4432 0.8852 -0.1415 +vn 0.5009 0.8628 -0.0689 +vn 0.5511 0.8344 -0.0000 +vn 0.5009 0.8628 0.0689 +vn 0.4432 0.8852 0.1415 +vn -0.7071 -0.0000 -0.7071 +vn 0.7071 -0.0000 -0.7071 +vn 0.7071 -0.0000 0.7071 +vn -0.7071 -0.0000 0.7071 +vt 0.250000 0.250000 +vt 0.500000 0.250000 +vt 0.500000 0.500000 +vt 0.250000 0.500000 +vt 0.750000 0.250000 +vt 0.750000 0.500000 +vt 0.500000 0.750000 +vt 0.250000 0.750000 +vt 0.750000 0.750000 +vt 0.000000 0.000000 +vt 0.250000 0.000000 +vt 0.000000 0.250000 +vt 0.500000 0.000000 +vt 0.750000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 0.250000 +vt 1.000000 0.500000 +vt 1.000000 0.750000 +vt 1.000000 1.000000 +vt 0.750000 1.000000 +vt 0.500000 1.000000 +vt 0.250000 1.000000 +vt 0.000000 0.750000 +vt 0.000000 1.000000 +vt 0.000000 0.500000 +vt 0.291667 0.752860 +vt 0.541667 0.654700 +vt 0.541667 0.571395 +vt 0.291667 0.636835 +vt 0.791667 0.556541 +vt 0.791667 0.505955 +vt 0.541667 0.488090 +vt 0.291667 0.520809 +vt 0.791667 0.455370 +vt 0.041667 0.999764 +vt 0.291667 0.868885 +vt 0.041667 0.851019 +vt 0.541667 0.738006 +vt 0.791667 0.607126 +vt 1.041667 0.476247 +vt 1.041667 0.458381 +vt 1.041667 0.440516 +vt 1.041667 0.422650 +vt 1.041667 0.404784 +vt 0.791667 0.404784 +vt 0.541667 0.404784 +vt 0.291667 0.404784 +vt 0.041667 0.553529 +vt 0.041667 0.404784 +vt 0.041667 0.702274 +vt 0.747595 0.446127 +vt 0.546922 0.434185 +vt 0.625000 0.428605 +vt 0.781156 0.434185 +vt 0.379809 0.419844 +vt 0.546922 0.417446 +vt 0.747595 0.419844 +vt 0.546922 0.417446 +vt 0.958333 0.476247 +vt 0.708333 0.458381 +vt 0.958333 0.458381 +vt 0.458333 0.440516 +vt 0.958333 0.440516 +vt -0.041667 0.404784 +vt 0.208333 0.404784 +vt 0.208333 0.422650 +vt 0.458333 0.404784 +vt 0.958333 0.404784 +vt 0.958333 0.422650 +vt 0.708333 0.404784 +vt 0.620191 0.419844 +vt 0.453078 0.434185 +vt 0.375000 0.428605 +vt 0.453078 0.417446 +vt 0.252405 0.446127 +vt 0.218844 0.434185 +vt 0.252405 0.419844 +vt 0.218844 0.434185 +vt 1.041667 0.404784 +vt 0.791667 0.422650 +vt 0.791667 0.404784 +vt 0.541667 0.440515 +vt 0.541667 0.404784 +vt 0.041667 0.476247 +vt 0.041667 0.458381 +vt 0.291667 0.458381 +vt 0.041667 0.440515 +vt 0.041667 0.404784 +vt 0.291667 0.404784 +vt 0.041667 0.422650 +vt 0.708333 0.752860 +vt 0.708333 0.636835 +vt 0.458333 0.571395 +vt 0.458333 0.654700 +vt 0.708333 0.520809 +vt 0.458333 0.488090 +vt 0.208333 0.505955 +vt 0.208333 0.556541 +vt 0.208333 0.455370 +vt 0.958333 0.999764 +vt 0.958333 0.851019 +vt 0.708333 0.868885 +vt 0.958333 0.702274 +vt 0.958333 0.553529 +vt 0.958333 0.404784 +vt 0.708333 0.404784 +vt 0.458333 0.404784 +vt 0.208333 0.404784 +vt -0.041667 0.404784 +vt -0.041667 0.422650 +vt -0.041667 0.440516 +vt -0.041667 0.458381 +vt 0.208333 0.607126 +vt -0.041667 0.476247 +vt 0.458333 0.738006 +s 0 +usemtl Cobblestone +f 4362/3716/1608 4363/3717/1608 4366/3718/1608 4365/3719/1608 +f 4363/3717/1609 4364/3720/1609 4367/3721/1609 4366/3718/1609 +f 4365/3719/1610 4366/3718/1610 4369/3722/1610 4368/3723/1610 +f 4366/3718/1611 4367/3721/1611 4370/3724/1611 4369/3722/1611 +f 4322/3725/1612 4332/3726/1612 4362/3716/1612 4331/3727/1612 +f 4332/3726/1613 4333/3728/1613 4363/3717/1613 4362/3716/1613 +f 4333/3728/1614 4334/3729/1614 4364/3720/1614 4363/3717/1614 +f 4334/3729/1615 4323/3730/1615 4335/3731/1615 4364/3720/1615 +f 4364/3720/1616 4335/3731/1616 4336/3732/1616 4367/3721/1616 +f 4367/3721/1617 4336/3732/1617 4337/3733/1617 4370/3724/1617 +f 4370/3724/1618 4337/3733/1618 4325/3734/1618 4338/3735/1618 +f 4369/3722/1619 4370/3724/1619 4338/3735/1619 4339/3736/1619 +f 4368/3723/1620 4369/3722/1620 4339/3736/1620 4340/3737/1620 +f 4329/3738/1621 4368/3723/1621 4340/3737/1621 4324/3739/1621 +f 4330/3740/1622 4365/3719/1622 4368/3723/1622 4329/3738/1622 +f 4331/3727/1623 4362/3716/1623 4365/3719/1623 4330/3740/1623 +f 4371/3741/1624 4372/3742/1624 4375/3743/1624 4374/3744/1624 +f 4372/3742/1624 4373/3745/1624 4376/3746/1624 4375/3743/1624 +f 4374/3744/1624 4375/3743/1624 4378/3747/1624 4377/3748/1624 +f 4375/3743/1624 4376/3746/1624 4379/3749/1624 4378/3747/1624 +f 4324/3750/1624 4340/3751/1624 4371/3741/1624 4347/3752/1624 +f 4340/3751/1624 4339/3753/1624 4372/3742/1624 4371/3741/1624 +f 4339/3753/1624 4338/3754/1624 4373/3745/1624 4372/3742/1624 +f 4338/3754/1624 4325/3755/1624 4344/3756/1624 4373/3745/1624 +f 4373/3745/1624 4344/3756/1624 4345/3757/1624 4376/3746/1624 +f 4376/3746/1624 4345/3757/1624 4346/3758/1624 4379/3749/1624 +f 4379/3749/1624 4346/3758/1624 4327/3759/1624 4350/3760/1624 +f 4378/3747/1624 4379/3749/1624 4350/3760/1624 4351/3761/1624 +f 4377/3748/1624 4378/3747/1624 4351/3761/1624 4352/3762/1624 +f 4349/3763/1624 4377/3748/1624 4352/3762/1624 4328/3764/1624 +f 4348/3765/1624 4374/3744/1624 4377/3748/1624 4349/3763/1624 +f 4347/3752/1624 4371/3741/1624 4374/3744/1624 4348/3765/1624 +f 4381/3766/1625 4382/3767/1625 4380/3768/1625 4386/3769/1625 +f 4383/3770/1625 4384/3771/1625 4380/3768/1625 4382/3767/1625 +f 4385/3772/1625 4386/3769/1625 4380/3768/1625 4384/3773/1625 +f 4325/3774/1625 4337/3775/1625 4381/3766/1625 4344/3776/1625 +f 4337/3775/1625 4336/3777/1625 4382/3767/1625 4381/3766/1625 +f 4344/3776/1625 4381/3766/1625 4386/3769/1625 4345/3778/1625 +f 4323/3779/1625 4353/3780/1625 4383/3770/1625 4335/3781/1625 +f 4353/3780/1625 4354/3782/1625 4384/3771/1625 4383/3770/1625 +f 4335/3781/1625 4383/3770/1625 4382/3767/1625 4336/3777/1625 +f 4327/3783/1625 4346/3784/1625 4385/3772/1625 4355/3785/1625 +f 4346/3784/1625 4345/3778/1625 4386/3769/1625 4385/3772/1625 +f 4355/3785/1625 4385/3772/1625 4384/3773/1625 4354/3782/1625 +f 4388/3786/1626 4389/3787/1626 4387/3788/1626 4393/3789/1626 +f 4390/3790/1626 4391/3791/1626 4387/3788/1626 4389/3787/1626 +f 4392/3792/1626 4393/3789/1626 4387/3788/1626 4391/3793/1626 +f 4323/3794/1626 4334/3795/1626 4388/3786/1626 4356/3796/1626 +f 4334/3795/1626 4333/3797/1626 4389/3787/1626 4388/3786/1626 +f 4356/3796/1626 4388/3786/1626 4393/3789/1626 4357/3798/1626 +f 4322/3799/1626 4341/3800/1626 4390/3790/1626 4332/3801/1626 +f 4341/3800/1626 4342/3802/1626 4391/3791/1626 4390/3790/1626 +f 4332/3801/1626 4390/3790/1626 4389/3787/1626 4333/3797/1626 +f 4326/3803/1626 4358/3804/1626 4392/3792/1626 4343/3805/1626 +f 4358/3804/1626 4357/3798/1626 4393/3789/1626 4392/3792/1626 +f 4343/3805/1626 4392/3792/1626 4391/3793/1626 4342/3802/1626 +f 4394/3806/1627 4395/3807/1627 4398/3808/1627 4397/3809/1627 +f 4395/3807/1627 4396/3810/1627 4399/3811/1627 4398/3808/1627 +f 4397/3809/1627 4398/3808/1627 4401/3812/1627 4400/3813/1627 +f 4398/3808/1627 4399/3811/1627 4402/3814/1627 4401/3812/1627 +f 4324/3815/1627 4347/3816/1627 4394/3806/1627 4329/3817/1627 +f 4347/3816/1627 4348/3818/1627 4395/3807/1627 4394/3806/1627 +f 4348/3818/1627 4349/3819/1627 4396/3810/1627 4395/3807/1627 +f 4349/3819/1627 4328/3820/1627 4361/3821/1627 4396/3810/1627 +f 4396/3810/1627 4361/3821/1627 4360/3822/1627 4399/3811/1627 +f 4399/3811/1627 4360/3822/1627 4359/3823/1627 4402/3814/1627 +f 4402/3814/1627 4359/3823/1627 4326/3824/1627 4343/3825/1627 +f 4401/3812/1627 4402/3814/1627 4343/3825/1627 4342/3826/1627 +f 4400/3813/1627 4401/3812/1627 4342/3826/1627 4341/3827/1627 +f 4331/3828/1627 4400/3813/1627 4341/3827/1627 4322/3829/1627 +f 4330/3830/1627 4397/3809/1627 4400/3813/1627 4331/3828/1627 +f 4329/3817/1627 4394/3806/1627 4397/3809/1627 4330/3830/1627 diff --git a/Sources/Test/Resources/Models/suzanne.g3db b/Sources/Test/Resources/Models/suzanne.g3db new file mode 100644 index 0000000..1e39e51 Binary files /dev/null and b/Sources/Test/Resources/Models/suzanne.g3db differ diff --git a/Sources/Test/Resources/Models/toybox.g3db b/Sources/Test/Resources/Models/toybox.g3db new file mode 100644 index 0000000..f6f63de Binary files /dev/null and b/Sources/Test/Resources/Models/toybox.g3db differ diff --git a/Sources/Test/Resources/Textures/cobblestone.png b/Sources/Test/Resources/Textures/cobblestone.png new file mode 100644 index 0000000..9c018a5 Binary files /dev/null and b/Sources/Test/Resources/Textures/cobblestone.png differ diff --git a/Sources/Test/Resources/Textures/cobblestone_bump.png b/Sources/Test/Resources/Textures/cobblestone_bump.png new file mode 100644 index 0000000..17346ff Binary files /dev/null and b/Sources/Test/Resources/Textures/cobblestone_bump.png differ diff --git a/Sources/Test/Resources/Textures/cobblestone_normal.png b/Sources/Test/Resources/Textures/cobblestone_normal.png new file mode 100644 index 0000000..84d5bb6 Binary files /dev/null and b/Sources/Test/Resources/Textures/cobblestone_normal.png differ diff --git a/Sources/Test/Resources/Textures/cobblestone_specular.png b/Sources/Test/Resources/Textures/cobblestone_specular.png new file mode 100644 index 0000000..d708aad Binary files /dev/null and b/Sources/Test/Resources/Textures/cobblestone_specular.png differ diff --git a/Sources/Test/Resources/Textures/colin.png b/Sources/Test/Resources/Textures/colin.png new file mode 100644 index 0000000..ac31500 Binary files /dev/null and b/Sources/Test/Resources/Textures/colin.png differ diff --git a/Sources/Test/Resources/Textures/jolkmeup.jpg b/Sources/Test/Resources/Textures/jolkmeup.jpg new file mode 100644 index 0000000..d50b38c Binary files /dev/null and b/Sources/Test/Resources/Textures/jolkmeup.jpg differ diff --git a/Sources/Test/Resources/Textures/metalwall1.jpg b/Sources/Test/Resources/Textures/metalwall1.jpg new file mode 100644 index 0000000..39994e1 Binary files /dev/null and b/Sources/Test/Resources/Textures/metalwall1.jpg differ diff --git a/Sources/Test/Resources/Textures/suzanne_diffuse.png b/Sources/Test/Resources/Textures/suzanne_diffuse.png new file mode 100644 index 0000000..86372ba Binary files /dev/null and b/Sources/Test/Resources/Textures/suzanne_diffuse.png differ diff --git a/Sources/Test/Resources/Textures/suzanne_normal.png b/Sources/Test/Resources/Textures/suzanne_normal.png new file mode 100644 index 0000000..7c8150f Binary files /dev/null and b/Sources/Test/Resources/Textures/suzanne_normal.png differ diff --git a/Sources/Test/Resources/Textures/toybox_albedo.png b/Sources/Test/Resources/Textures/toybox_albedo.png new file mode 100644 index 0000000..c785f41 Binary files /dev/null and b/Sources/Test/Resources/Textures/toybox_albedo.png differ diff --git a/Sources/Test/Resources/Textures/toybox_displace.png b/Sources/Test/Resources/Textures/toybox_displace.png new file mode 100644 index 0000000..e252cab Binary files /dev/null and b/Sources/Test/Resources/Textures/toybox_displace.png differ diff --git a/Sources/Test/Resources/Textures/toybox_normal.png b/Sources/Test/Resources/Textures/toybox_normal.png new file mode 100644 index 0000000..1a55f16 Binary files /dev/null and b/Sources/Test/Resources/Textures/toybox_normal.png differ diff --git a/Sources/Test/World.blend b/Sources/Test/World.blend new file mode 100644 index 0000000..1e37cfa Binary files /dev/null and b/Sources/Test/World.blend differ diff --git a/Sources/Test/XnaColour.swift b/Sources/Test/XnaColour.swift new file mode 100644 index 0000000..7933ab2 --- /dev/null +++ b/Sources/Test/XnaColour.swift @@ -0,0 +1,148 @@ +import JolkEngine + + +public struct XnaColour +{ + public static let Transparent = Colour.zero + public static let AliceBlue = Colour(fromRgb24: 0xF0F8FF) + public static let AntiqueWhite = Colour(fromRgb24: 0xFAEBD7) + public static let Aqua = Colour(fromRgb24: 0x00FFFF) + public static let Aquamarine = Colour(fromRgb24: 0x7FFFD4) + public static let Azure = Colour(fromRgb24: 0xF0FFFF) + public static let Beige = Colour(fromRgb24: 0xF5F5DC) + public static let Bisque = Colour(fromRgb24: 0xFFE4C4) + public static let Black = Colour.black + public static let BlanchedAlmond = Colour(fromRgb24: 0xFFEBCD) + public static let Blue = Colour(fromRgb24: 0x0000FF) + public static let BlueViolet = Colour(fromRgb24: 0x8A2BE2) + public static let Brown = Colour(fromRgb24: 0xA52A2A) + public static let BurlyWood = Colour(fromRgb24: 0xDEB887) + public static let CadetBlue = Colour(fromRgb24: 0x5F9EA0) + public static let Chartreuse = Colour(fromRgb24: 0x7FFF00) + public static let Chocolate = Colour(fromRgb24: 0xD2691E) + public static let Coral = Colour(fromRgb24: 0xFF7F50) + public static let CornflowerBlue = Colour(fromRgb24: 0x6495ED) + public static let Cornsilk = Colour(fromRgb24: 0xFFF8DC) + public static let Crimson = Colour(fromRgb24: 0xDC143C) + public static let Cyan = Colour(fromRgb24: 0x00FFFF) + public static let DarkBlue = Colour(fromRgb24: 0x00008B) + public static let DarkCyan = Colour(fromRgb24: 0x008B8B) + public static let DarkGoldenrod = Colour(fromRgb24: 0xB8860B) + public static let DarkGray = Colour(fromRgb24: 0xA9A9A9) + public static let DarkGreen = Colour(fromRgb24: 0x006400) + public static let DarkKhaki = Colour(fromRgb24: 0xBDB76B) + public static let DarkMagenta = Colour(fromRgb24: 0x8B008B) + public static let DarkOliveGreen = Colour(fromRgb24: 0x556B2F) + public static let DarkOrange = Colour(fromRgb24: 0xFF8C00) + public static let DarkOrchid = Colour(fromRgb24: 0x9932CC) + public static let DarkRed = Colour(fromRgb24: 0x8B0000) + public static let DarkSalmon = Colour(fromRgb24: 0xE9967A) + public static let DarkSeaGreen = Colour(fromRgb24: 0x8FBC8B) + public static let DarkSlateBlue = Colour(fromRgb24: 0x483D8B) + public static let DarkSlateGray = Colour(fromRgb24: 0x2F4F4F) + public static let DarkTurquoise = Colour(fromRgb24: 0x00CED1) + public static let DarkViolet = Colour(fromRgb24: 0x9400D3) + public static let DeepPink = Colour(fromRgb24: 0xFF1493) + public static let DeepSkyBlue = Colour(fromRgb24: 0x00BFFF) + public static let DimGray = Colour(fromRgb24: 0x696969) + public static let DodgerBlue = Colour(fromRgb24: 0x1E90FF) + public static let Firebrick = Colour(fromRgb24: 0xB22222) + public static let FloralWhite = Colour(fromRgb24: 0xFFFAF0) + public static let ForestGreen = Colour(fromRgb24: 0x228B22) + public static let Fuchsia = Colour(fromRgb24: 0xFF00FF) + public static let Gainsboro = Colour(fromRgb24: 0xDCDCDC) + public static let GhostWhite = Colour(fromRgb24: 0xF8F8FF) + public static let Gold = Colour(fromRgb24: 0xFFD700) + public static let Goldenrod = Colour(fromRgb24: 0xDAA520) + public static let Gray = Colour(fromRgb24: 0x808080) + public static let Green = Colour(fromRgb24: 0x008000) + public static let GreenYellow = Colour(fromRgb24: 0xADFF2F) + public static let Honeydew = Colour(fromRgb24: 0xF0FFF0) + public static let HotPink = Colour(fromRgb24: 0xFF69B4) + public static let IndianRed = Colour(fromRgb24: 0xCD5C5C) + public static let Indigo = Colour(fromRgb24: 0x4B0082) + public static let Ivory = Colour(fromRgb24: 0xFFFFF0) + public static let Khaki = Colour(fromRgb24: 0xF0E68C) + public static let Lavender = Colour(fromRgb24: 0xE6E6FA) + public static let LavenderBlush = Colour(fromRgb24: 0xFFF0F5) + public static let LawnGreen = Colour(fromRgb24: 0x7CFC00) + public static let LemonChiffon = Colour(fromRgb24: 0xFFFACD) + public static let LightBlue = Colour(fromRgb24: 0xADD8E6) + public static let LightCoral = Colour(fromRgb24: 0xF08080) + public static let LightCyan = Colour(fromRgb24: 0xE0FFFF) + public static let LightGoldenrodYellow = Colour(fromRgb24: 0xFAFAD2) + public static let LightGray = Colour(fromRgb24: 0xD3D3D3) + public static let LightGreen = Colour(fromRgb24: 0x90EE90) + public static let LightPink = Colour(fromRgb24: 0xFFB6C1) + public static let LightSalmon = Colour(fromRgb24: 0xFFA07A) + public static let LightSeaGreen = Colour(fromRgb24: 0x20B2AA) + public static let LightSkyBlue = Colour(fromRgb24: 0x87CEFA) + public static let LightSlateGray = Colour(fromRgb24: 0x778899) + public static let LightSteelBlue = Colour(fromRgb24: 0xB0C4DE) + public static let LightYellow = Colour(fromRgb24: 0xFFFFE0) + public static let Lime = Colour(fromRgb24: 0x00FF00) + public static let LimeGreen = Colour(fromRgb24: 0x32CD32) + public static let Linen = Colour(fromRgb24: 0xFAF0E6) + public static let Magenta = Colour(fromRgb24: 0xFF00FF) + public static let Maroon = Colour(fromRgb24: 0x800000) + public static let MediumAquamarine = Colour(fromRgb24: 0x66CDAA) + public static let MediumBlue = Colour(fromRgb24: 0x0000CD) + public static let MediumOrchid = Colour(fromRgb24: 0xBA55D3) + public static let MediumPurple = Colour(fromRgb24: 0x9370DB) + public static let MediumSeaGreen = Colour(fromRgb24: 0x3CB371) + public static let MediumSlateBlue = Colour(fromRgb24: 0x7B68EE) + public static let MediumSpringGreen = Colour(fromRgb24: 0x00FA9A) + public static let MediumTurquoise = Colour(fromRgb24: 0x48D1CC) + public static let MediumVioletRed = Colour(fromRgb24: 0xC71585) + public static let MidnightBlue = Colour(fromRgb24: 0x191970) + public static let MintCream = Colour(fromRgb24: 0xF5FFFA) + public static let MistyRose = Colour(fromRgb24: 0xFFE4E1) + public static let Moccasin = Colour(fromRgb24: 0xFFE4B5) + public static let MonoGameOrange = Colour(fromRgb24: 0xE73C00) + public static let NavajoWhite = Colour(fromRgb24: 0xFFDEAD) + public static let Navy = Colour(fromRgb24: 0x000080) + public static let OldLace = Colour(fromRgb24: 0xFDF5E6) + public static let Olive = Colour(fromRgb24: 0x808000) + public static let OliveDrab = Colour(fromRgb24: 0x6B8E23) + public static let Orange = Colour(fromRgb24: 0xFFA500) + public static let OrangeRed = Colour(fromRgb24: 0xFF4500) + public static let Orchid = Colour(fromRgb24: 0xDA70D6) + public static let PaleGoldenrod = Colour(fromRgb24: 0xEEE8AA) + public static let PaleGreen = Colour(fromRgb24: 0x98FB98) + public static let PaleTurquoise = Colour(fromRgb24: 0xAFEEEE) + public static let PaleVioletRed = Colour(fromRgb24: 0xDB7093) + public static let PapayaWhip = Colour(fromRgb24: 0xFFEFD5) + public static let PeachPuff = Colour(fromRgb24: 0xFFDAB9) + public static let Peru = Colour(fromRgb24: 0xCD853F) + public static let Pink = Colour(fromRgb24: 0xFFC0CB) + public static let Plum = Colour(fromRgb24: 0xDDA0DD) + public static let PowderBlue = Colour(fromRgb24: 0xB0E0E6) + public static let Purple = Colour(fromRgb24: 0x800080) + public static let Red = Colour(fromRgb24: 0xFF0000) + public static let RosyBrown = Colour(fromRgb24: 0xBC8F8F) + public static let RoyalBlue = Colour(fromRgb24: 0x4169E1) + public static let SaddleBrown = Colour(fromRgb24: 0x8B4513) + public static let Salmon = Colour(fromRgb24: 0xFA8072) + public static let SandyBrown = Colour(fromRgb24: 0xF4A460) + public static let SeaGreen = Colour(fromRgb24: 0x2E8B57) + public static let SeaShell = Colour(fromRgb24: 0xFFF5EE) + public static let Sienna = Colour(fromRgb24: 0xA0522D) + public static let Silver = Colour(fromRgb24: 0xC0C0C0) + public static let SkyBlue = Colour(fromRgb24: 0x87CEEB) + public static let SlateBlue = Colour(fromRgb24: 0x6A5ACD) + public static let SlateGray = Colour(fromRgb24: 0x708090) + public static let Snow = Colour(fromRgb24: 0xFFFAFA) + public static let SpringGreen = Colour(fromRgb24: 0x00FF7F) + public static let SteelBlue = Colour(fromRgb24: 0x4682B4) + public static let Tan = Colour(fromRgb24: 0xD2B48C) + public static let Teal = Colour(fromRgb24: 0x008080) + public static let Thistle = Colour(fromRgb24: 0xD8BFD8) + public static let Tomato = Colour(fromRgb24: 0xFF6347) + public static let Turquoise = Colour(fromRgb24: 0x40E0D0) + public static let Violet = Colour(fromRgb24: 0xEE82EE) + public static let Wheat = Colour(fromRgb24: 0xF5DEB3) + public static let White = Colour.white + public static let WhiteSmoke = Colour(fromRgb24: 0xF5F5F5) + public static let Yellow = Colour(fromRgb24: 0xFFFF00) + public static let YellowGreen = Colour(fromRgb24: 0x9ACD32) +}