diff --git a/graphics/gpu/shadow_mapping/Makefile b/graphics/gpu/shadow_mapping/Makefile new file mode 100644 index 0000000..b8b46aa --- /dev/null +++ b/graphics/gpu/shadow_mapping/Makefile @@ -0,0 +1,229 @@ +#--------------------------------------------------------------------------------- +.SUFFIXES: +#--------------------------------------------------------------------------------- + +ifeq ($(strip $(DEVKITARM)),) +$(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM") +endif + +TOPDIR ?= $(CURDIR) +include $(DEVKITARM)/3ds_rules + +#--------------------------------------------------------------------------------- +# TARGET is the name of the output +# BUILD is the directory where object files & intermediate files will be placed +# SOURCES is a list of directories containing source code +# DATA is a list of directories containing data files +# INCLUDES is a list of directories containing header files +# GRAPHICS is a list of directories containing graphics files +# GFXBUILD is the directory where converted graphics files will be placed +# If set to $(BUILD), it will statically link in the converted +# files as if they were data files. +# +# NO_SMDH: if set to anything, no SMDH file is generated. +# ROMFS is the directory which contains the RomFS, relative to the Makefile (Optional) +# APP_TITLE is the name of the app stored in the SMDH file (Optional) +# APP_DESCRIPTION is the description of the app stored in the SMDH file (Optional) +# APP_AUTHOR is the author of the app stored in the SMDH file (Optional) +# ICON is the filename of the icon (.png), relative to the project folder. +# If not set, it attempts to use one of the following (in this order): +# - .png +# - icon.png +# - /default_icon.png +#--------------------------------------------------------------------------------- +TARGET := $(notdir $(CURDIR)) +BUILD := build +SOURCES := source +DATA := data +INCLUDES := include +GRAPHICS := gfx +GFXBUILD := $(BUILD) +#ROMFS := romfs +#GFXBUILD := $(ROMFS)/gfx + +#--------------------------------------------------------------------------------- +# options for code generation +#--------------------------------------------------------------------------------- +ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft + +CFLAGS := -g -Wall -O2 -mword-relocations \ + -ffunction-sections \ + $(ARCH) + +CFLAGS += $(INCLUDE) -D__3DS__ + +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11 + +ASFLAGS := -g $(ARCH) +LDFLAGS = -specs=3dsx.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) + +LIBS := -lcitro3d -lctru -lm + +#--------------------------------------------------------------------------------- +# list of directories containing libraries, this must be the top level containing +# include and lib +#--------------------------------------------------------------------------------- +LIBDIRS := $(CTRULIB) + + +#--------------------------------------------------------------------------------- +# no real need to edit anything past this point unless you need to add additional +# rules for different file extensions +#--------------------------------------------------------------------------------- +ifneq ($(BUILD),$(notdir $(CURDIR))) +#--------------------------------------------------------------------------------- + +export OUTPUT := $(CURDIR)/$(TARGET) +export TOPDIR := $(CURDIR) + +export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ + $(foreach dir,$(GRAPHICS),$(CURDIR)/$(dir)) \ + $(foreach dir,$(DATA),$(CURDIR)/$(dir)) + +export DEPSDIR := $(CURDIR)/$(BUILD) + +CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) +CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) +SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) +PICAFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.v.pica))) +SHLISTFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.shlist))) +GFXFILES := $(foreach dir,$(GRAPHICS),$(notdir $(wildcard $(dir)/*.t3s))) +BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) + +#--------------------------------------------------------------------------------- +# use CXX for linking C++ projects, CC for standard C +#--------------------------------------------------------------------------------- +ifeq ($(strip $(CPPFILES)),) +#--------------------------------------------------------------------------------- + export LD := $(CC) +#--------------------------------------------------------------------------------- +else +#--------------------------------------------------------------------------------- + export LD := $(CXX) +#--------------------------------------------------------------------------------- +endif +#--------------------------------------------------------------------------------- + +#--------------------------------------------------------------------------------- +ifeq ($(GFXBUILD),$(BUILD)) +#--------------------------------------------------------------------------------- +export T3XFILES := $(GFXFILES:.t3s=.t3x) +#--------------------------------------------------------------------------------- +else +#--------------------------------------------------------------------------------- +export ROMFS_T3XFILES := $(patsubst %.t3s, $(GFXBUILD)/%.t3x, $(GFXFILES)) +export T3XHFILES := $(patsubst %.t3s, $(BUILD)/%.h, $(GFXFILES)) +#--------------------------------------------------------------------------------- +endif +#--------------------------------------------------------------------------------- + +export OFILES_SOURCES := $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) + +export OFILES_BIN := $(addsuffix .o,$(BINFILES)) \ + $(PICAFILES:.v.pica=.shbin.o) $(SHLISTFILES:.shlist=.shbin.o) \ + $(addsuffix .o,$(T3XFILES)) + +export OFILES := $(OFILES_BIN) $(OFILES_SOURCES) + +export HFILES := $(PICAFILES:.v.pica=_shbin.h) $(SHLISTFILES:.shlist=_shbin.h) \ + $(addsuffix .h,$(subst .,_,$(BINFILES))) \ + $(GFXFILES:.t3s=.h) + +export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ + $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ + -I$(CURDIR)/$(BUILD) + +export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) + +export _3DSXDEPS := $(if $(NO_SMDH),,$(OUTPUT).smdh) + +ifeq ($(strip $(ICON)),) + icons := $(wildcard *.png) + ifneq (,$(findstring $(TARGET).png,$(icons))) + export APP_ICON := $(TOPDIR)/$(TARGET).png + else + ifneq (,$(findstring icon.png,$(icons))) + export APP_ICON := $(TOPDIR)/icon.png + endif + endif +else + export APP_ICON := $(TOPDIR)/$(ICON) +endif + +ifeq ($(strip $(NO_SMDH)),) + export _3DSXFLAGS += --smdh=$(CURDIR)/$(TARGET).smdh +endif + +ifneq ($(ROMFS),) + export _3DSXFLAGS += --romfs=$(CURDIR)/$(ROMFS) +endif + +.PHONY: all clean + +#--------------------------------------------------------------------------------- +all: $(BUILD) $(GFXBUILD) $(DEPSDIR) $(ROMFS_T3XFILES) $(T3XHFILES) + @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile + +$(BUILD): + @mkdir -p $@ + +ifneq ($(GFXBUILD),$(BUILD)) +$(GFXBUILD): + @mkdir -p $@ +endif + +ifneq ($(DEPSDIR),$(BUILD)) +$(DEPSDIR): + @mkdir -p $@ +endif + +#--------------------------------------------------------------------------------- +clean: + @echo clean ... + @rm -fr $(BUILD) $(TARGET).3dsx $(OUTPUT).smdh $(TARGET).elf $(GFXBUILD) + +#--------------------------------------------------------------------------------- +$(GFXBUILD)/%.t3x $(BUILD)/%.h : %.t3s +#--------------------------------------------------------------------------------- + @echo $(notdir $<) + @tex3ds -i $< -H $(BUILD)/$*.h -d $(DEPSDIR)/$*.d -o $(GFXBUILD)/$*.t3x + +#--------------------------------------------------------------------------------- +else + +#--------------------------------------------------------------------------------- +# main targets +#--------------------------------------------------------------------------------- +$(OUTPUT).3dsx : $(OUTPUT).elf $(_3DSXDEPS) + +$(OFILES_SOURCES) : $(HFILES) + +$(OUTPUT).elf : $(OFILES) + +#--------------------------------------------------------------------------------- +# you need a rule like this for each extension you use as binary data +#--------------------------------------------------------------------------------- +%.bin.o %_bin.h : %.bin +#--------------------------------------------------------------------------------- + @echo $(notdir $<) + @$(bin2o) + +#--------------------------------------------------------------------------------- +.PRECIOUS : %.t3x %.shbin +#--------------------------------------------------------------------------------- +%.t3x.o %_t3x.h : %.t3x +#--------------------------------------------------------------------------------- + $(SILENTMSG) $(notdir $<) + $(bin2o) + +#--------------------------------------------------------------------------------- +%.shbin.o %_shbin.h : %.shbin +#--------------------------------------------------------------------------------- + $(SILENTMSG) $(notdir $<) + $(bin2o) + +-include $(DEPSDIR)/*.d + +#--------------------------------------------------------------------------------------- +endif +#--------------------------------------------------------------------------------------- diff --git a/graphics/gpu/shadow_mapping/source/main.c b/graphics/gpu/shadow_mapping/source/main.c new file mode 100644 index 0000000..06d0527 --- /dev/null +++ b/graphics/gpu/shadow_mapping/source/main.c @@ -0,0 +1,349 @@ +// Shadow mapping example +// based on the following guide: +// https://learnopengl.com/Advanced-Lighting/Shadows/Shadow-Mapping + +#include <3ds.h> +#include +#include +#include "shadow_caster_shbin.h" +#include "shadow_receiver_shbin.h" +#include "teapot.h" + +#define CLEAR_COLOR 0x68B0D8FF + +#define DISPLAY_TRANSFER_FLAGS \ + (GX_TRANSFER_FLIP_VERT(0) | GX_TRANSFER_OUT_TILED(0) | GX_TRANSFER_RAW_COPY(0) | \ + GX_TRANSFER_IN_FORMAT(GX_TRANSFER_FMT_RGBA8) | GX_TRANSFER_OUT_FORMAT(GX_TRANSFER_FMT_RGB8) | \ + GX_TRANSFER_SCALING(GX_TRANSFER_SCALE_NO)) + +const float plane_vertices[] = +{ + -2, 0, -2, 0, 1, 0, + 2, 0, -2, 0, 1, 0, + -2, 0, 2, 0, 1, 0, + 2, 0, 2, 0, 1, 0 +}; + +#define plane_index_count 6 +const u16 plane_indices[] = +{ + 2, 1, 0, + 1, 2, 3 +}; + +// Shadow map +static C3D_RenderTarget *shadow_map_rt; +static C3D_Tex shadow_map_tex; +static int cull_back_faces, filter; +// Adjust until shadow acne is gone +static float bias; + +// Shaders +static DVLB_s* shadow_caster_dvlb; +static shaderProgram_s shadow_caster_program; +static int shadow_caster_uLoc_model, shadow_caster_uLoc_viewproj; + +static DVLB_s* shadow_receiver_dvlb; +static shaderProgram_s shadow_receiver_program; +static int shadow_receiver_uLoc_model, shadow_receiver_uLoc_view, shadow_receiver_uLoc_proj, shadow_receiver_uLoc_light_viewproj; + +static C3D_LightEnv lightEnv; +static C3D_Light light; +static C3D_LightLut lut_diffuse; +static C3D_Mtx light_view; +static C3D_Mtx light_proj; + +static C3D_BufInfo plane_vbo_buf_info; +static void* plane_vbo_data; +static void* plane_ibo_data; + +static C3D_BufInfo teapot_vbo_buf_info; +static void* teapot_vbo_data; +static void* teapot_ibo_data; + +static float elapsed; + +static float diffuse(float x, float arg) +{ + return x; +} + +static void drawShadowMap() +{ + C3D_BindProgram(&shadow_caster_program); + + if(cull_back_faces) + C3D_CullFace(GPU_CULL_BACK_CCW); + else + C3D_CullFace(GPU_CULL_FRONT_CCW); + + // Disable alpha blending + C3D_ColorLogicOp(GPU_LOGICOP_COPY); + + // Only the alpha value is compared against the fragment depth + C3D_TexEnv* env = C3D_GetTexEnv(0); + C3D_TexEnvColor(env, 0xFFFFFFFF); + C3D_TexEnvSrc(env, C3D_RGB, GPU_CONSTANT, 0, 0); + C3D_TexEnvFunc(env, C3D_RGB, GPU_REPLACE); + C3D_TexEnvSrc(env, C3D_Alpha, GPU_PRIMARY_COLOR, 0, 0); + C3D_TexEnvFunc(env, C3D_Alpha, GPU_REPLACE); + + // Keep it tight + Mtx_Ortho(&light_proj, -2.0f, 2.0f, -2.0f, 2.0f, 5.0f, 10.0f, false); + + C3D_FVec light_pos = FVec3_New(5, 5, 5); + C3D_FVec light_tar = FVec3_New(0, 0, 0); + C3D_FVec light_upv = FVec3_New(0, 1, 0); + Mtx_LookAt(&light_view, light_pos, light_tar, light_upv, false); + + C3D_Mtx viewproj; + Mtx_Multiply(&viewproj, &light_proj, &light_view); + C3D_FVUnifMtx4x4(GPU_VERTEX_SHADER, shadow_caster_uLoc_viewproj, &viewproj); + + C3D_Mtx model; + Mtx_Identity(&model); + Mtx_RotateY(&model, elapsed, true); + C3D_FVUnifMtx4x4(GPU_VERTEX_SHADER, shadow_caster_uLoc_model, &model); + + // Draw the teapot + C3D_SetBufInfo(&teapot_vbo_buf_info); + C3D_DrawElements(GPU_TRIANGLES, vertex_element_count, C3D_UNSIGNED_SHORT, teapot_ibo_data); +} + +static void sceneInit(void) +{ + cull_back_faces = true; + filter = GPU_NEAREST; + bias = 0.004f; + elapsed = 0.0f; + + // Create the render target and texture + C3D_TexInitShadow(&shadow_map_tex, 512, 512); + shadow_map_rt = C3D_RenderTargetCreateFromTex(&shadow_map_tex, GPU_TEXFACE_2D, 0, GPU_RB_DEPTH16); + // Anything outside the shadow map will be lit + shadow_map_tex.border = 0xFFFFFFFF; + C3D_TexSetWrap(&shadow_map_tex, GPU_CLAMP_TO_BORDER, GPU_CLAMP_TO_BORDER); + + + // Load the shadow_caster shader + shadow_caster_dvlb = DVLB_ParseFile((u32*)shadow_caster_shbin, shadow_caster_shbin_size); + shaderProgramInit(&shadow_caster_program); + shaderProgramSetVsh(&shadow_caster_program, &shadow_caster_dvlb->DVLE[0]); + + // Get the location of the shadow_caster uniforms + shadow_caster_uLoc_viewproj = shaderInstanceGetUniformLocation(shadow_caster_program.vertexShader, "viewproj"); + shadow_caster_uLoc_model = shaderInstanceGetUniformLocation(shadow_caster_program.vertexShader, "model"); + + + // Load the shadow_receiver shader + shadow_receiver_dvlb = DVLB_ParseFile((u32*)shadow_receiver_shbin, shadow_receiver_shbin_size); + shaderProgramInit(&shadow_receiver_program); + shaderProgramSetVsh(&shadow_receiver_program, &shadow_receiver_dvlb->DVLE[0]); + + // Get the location of the shadow_receiver uniforms + shadow_receiver_uLoc_proj = shaderInstanceGetUniformLocation(shadow_receiver_program.vertexShader, "proj"); + shadow_receiver_uLoc_view = shaderInstanceGetUniformLocation(shadow_receiver_program.vertexShader, "view"); + shadow_receiver_uLoc_model = shaderInstanceGetUniformLocation(shadow_receiver_program.vertexShader, "model"); + shadow_receiver_uLoc_light_viewproj = shaderInstanceGetUniformLocation(shadow_receiver_program.vertexShader, "light_viewproj"); + + + // Configure attributes for use with the vertex shaders + C3D_AttrInfo* attrInfo = C3D_GetAttrInfo(); + AttrInfo_Init(attrInfo); + AttrInfo_AddLoader(attrInfo, 0, GPU_FLOAT, 3); // v0=position + AttrInfo_AddLoader(attrInfo, 1, GPU_FLOAT, 3); // v1=normal + + + // Create the teapot VBO (vertex buffer object) + teapot_vbo_data = linearAlloc(sizeof(vertex_array)); + memcpy(teapot_vbo_data, vertex_array, sizeof(vertex_array)); + teapot_ibo_data = linearAlloc(sizeof(vertex_elements)); + memcpy(teapot_ibo_data, vertex_elements, sizeof(vertex_elements)); + + // Configure teapot buffer + BufInfo_Init(&teapot_vbo_buf_info); + BufInfo_Add(&teapot_vbo_buf_info, teapot_vbo_data, sizeof(float[6]), 2, 0x10); + + + // Create the plane VBO + plane_vbo_data = linearAlloc(sizeof(plane_vertices)); + memcpy(plane_vbo_data, plane_vertices, sizeof(plane_vertices)); + plane_ibo_data = linearAlloc(sizeof(plane_indices)); + memcpy(plane_ibo_data, plane_indices, sizeof(plane_indices)); + + // Configure plane buffer + BufInfo_Init(&plane_vbo_buf_info); + BufInfo_Add(&plane_vbo_buf_info, plane_vbo_data, sizeof(float[6]), 2, 0x10); + + + C3D_Material shadow_material = + { + { 0.5f, 0.5f, 0.5f }, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + { 0.5f, 0.5f, 0.5f }, + { 0.0f, 0.0f, 0.0f }, + }; + C3D_LightEnvInit(&lightEnv); + C3D_LightEnvMaterial(&lightEnv, &shadow_material); + + LightLut_FromFunc(&lut_diffuse, diffuse, 0.0f, false); + C3D_LightEnvLut(&lightEnv, GPU_LUT_D1, GPU_LUTINPUT_LN, false, &lut_diffuse); + + C3D_LightInit(&light, &lightEnv); + C3D_FVec lightPos = FVec4_New(1.0f, 1.0f, 1.0f, 0.0f); + C3D_LightPosition(&light, &lightPos); + + C3D_LightShadowEnable(&light, true); + C3D_LightEnvShadowMode(&lightEnv, GPU_SHADOW_SECONDARY); + // Shadow map must be on unit 0 + C3D_LightEnvShadowSel(&lightEnv, 0); +} + +static void sceneRender(float iod) +{ + C3D_BindProgram(&shadow_receiver_program); + + C3D_CullFace(GPU_CULL_BACK_CCW); + + C3D_TexEnv *env = C3D_GetTexEnv(0); + C3D_TexEnvInit(env); + C3D_TexEnvSrc(env, C3D_RGB, GPU_FRAGMENT_PRIMARY_COLOR, GPU_FRAGMENT_SECONDARY_COLOR, 0); + C3D_TexEnvFunc(env, C3D_RGB, GPU_ADD); + C3D_TexEnvSrc(env, C3D_Alpha, GPU_PRIMARY_COLOR, 0, 0); + C3D_TexEnvFunc(env, C3D_Alpha, GPU_REPLACE); + + C3D_Mtx proj; + Mtx_PerspStereoTilt(&proj, C3D_AngleFromDegrees(20.0f), C3D_AspectRatioTop, 1.0f, 100.0f, iod, 8.0f, false); + C3D_FVUnifMtx4x4(GPU_VERTEX_SHADER, shadow_receiver_uLoc_proj, &proj); + + C3D_Mtx view; + C3D_FVec cam_pos = FVec3_New(0, 5, 5); + C3D_FVec cam_tar = FVec3_New(0, 0, 0); + C3D_FVec cam_upv = FVec3_New(0, 1, 0); + Mtx_LookAt(&view, cam_pos, cam_tar, cam_upv, false); + C3D_FVUnifMtx4x4(GPU_VERTEX_SHADER, shadow_receiver_uLoc_view, &view); + + C3D_Mtx light_viewproj; + Mtx_Multiply(&light_viewproj, &light_proj, &light_view); + C3D_FVUnifMtx4x4(GPU_VERTEX_SHADER, shadow_receiver_uLoc_light_viewproj, &light_viewproj); + + + // false if light uses orthographic projection + C3D_TexShadowParams(false, bias); + C3D_TexBind(0, &shadow_map_tex); + C3D_TexSetFilter(&shadow_map_tex, filter, filter); + C3D_LightEnvBind(&lightEnv); + + + C3D_Mtx model; + Mtx_Identity(&model); + Mtx_RotateY(&model, elapsed, true); + C3D_FVUnifMtx4x4(GPU_VERTEX_SHADER, shadow_receiver_uLoc_model, &model); + + // Draw the teapot + C3D_SetBufInfo(&teapot_vbo_buf_info); + C3D_DrawElements(GPU_TRIANGLES, vertex_element_count, C3D_UNSIGNED_SHORT, teapot_ibo_data); + + + Mtx_Identity(&model); + C3D_FVUnifMtx4x4(GPU_VERTEX_SHADER, shadow_receiver_uLoc_model, &model); + + // Draw the plane + C3D_SetBufInfo(&plane_vbo_buf_info); + C3D_DrawElements(GPU_TRIANGLES, plane_index_count, C3D_UNSIGNED_SHORT, plane_ibo_data); +} + +static void sceneExit(void) +{ + // Free the render target and texture + C3D_RenderTargetDelete(shadow_map_rt); + C3D_TexDelete(&shadow_map_tex); + + // Free the VBOs + linearFree(teapot_vbo_data); + linearFree(teapot_ibo_data); + + linearFree(plane_vbo_data); + linearFree(plane_ibo_data); + + // Free the shader programs + shaderProgramFree(&shadow_caster_program); + DVLB_Free(shadow_caster_dvlb); + shaderProgramFree(&shadow_receiver_program); + DVLB_Free(shadow_receiver_dvlb); +} + +int main() +{ + // Initialize graphics + gfxInitDefault(); + gfxSet3D(true); // Enable stereoscopic 3D + consoleInit(GFX_BOTTOM, NULL); + C3D_Init(C3D_DEFAULT_CMDBUF_SIZE); + + // Initialize the render targets + C3D_RenderTarget* targetLeft = C3D_RenderTargetCreate(240, 400, GPU_RB_RGBA8, GPU_RB_DEPTH24_STENCIL8); + C3D_RenderTarget* targetRight = C3D_RenderTargetCreate(240, 400, GPU_RB_RGBA8, GPU_RB_DEPTH24_STENCIL8); + C3D_RenderTargetSetOutput(targetLeft, GFX_TOP, GFX_LEFT, DISPLAY_TRANSFER_FLAGS); + C3D_RenderTargetSetOutput(targetRight, GFX_TOP, GFX_RIGHT, DISPLAY_TRANSFER_FLAGS); + + // Initialize the scene + sceneInit(); + + // Main loop + while (aptMainLoop()) + { + hidScanInput(); + + // Respond to user input + u32 kDown = hidKeysDown(); + u32 kHeld = hidKeysHeld(); + if (kDown & KEY_START) + break; // break in order to return to hbmenu + + float slider = osGet3DSliderState(); + float iod = slider/2; + + // Rotate the model + if (!(kHeld & KEY_A)) + elapsed += 1 / 60.0f; + if (kDown & KEY_B) + cull_back_faces = !cull_back_faces; + if (kDown & KEY_Y) + filter = !filter; + if (kDown & KEY_UP) + bias += 0.001; + if (kDown & KEY_DOWN) + bias -= 0.001; + + + // Render the scene + C3D_FrameBegin(C3D_FRAME_SYNCDRAW); + { + C3D_RenderTargetClear(shadow_map_rt, C3D_CLEAR_ALL, 0xFFFFFFFF, 0); + C3D_FrameDrawOn(shadow_map_rt); + drawShadowMap(); + + C3D_RenderTargetClear(targetLeft, C3D_CLEAR_ALL, CLEAR_COLOR, 0); + C3D_FrameDrawOn(targetLeft); + sceneRender(-iod); + + if (iod > 0.0f) + { + C3D_RenderTargetClear(targetRight, C3D_CLEAR_ALL, CLEAR_COLOR, 0); + C3D_FrameDrawOn(targetRight); + sceneRender(iod); + } + } + C3D_FrameEnd(0); + } + + // Deinitialize the scene + sceneExit(); + + // Deinitialize graphics + C3D_Fini(); + gfxExit(); + return 0; +} diff --git a/graphics/gpu/shadow_mapping/source/shadow_caster.v.pica b/graphics/gpu/shadow_mapping/source/shadow_caster.v.pica new file mode 100644 index 0000000..ff7c856 --- /dev/null +++ b/graphics/gpu/shadow_mapping/source/shadow_caster.v.pica @@ -0,0 +1,44 @@ +; Uniforms +.fvec viewproj[4] +.fvec model[4] + +; Constants +.constf myconst(0.0, 1.0, -1.0, 0.5) +.alias ones myconst.yyyy +.alias half myconst.wwww + +; Outputs +.out outpos position +.out outclr color + +; Inputs (defined as aliases for convenience) +.alias inpos v0 + +.proc main + ; Force the w component of inpos to be 1.0 + mov r0.xyz, inpos + mov r0.w, ones + + ; r1 = model * inpos + dp4 r1.x, model[0], r0 + dp4 r1.y, model[1], r0 + dp4 r1.z, model[2], r0 + dp4 r1.w, model[3], r0 + + ; r0 = viewproj * r1 + dp4 r0.x, viewproj[0], r1 + dp4 r0.y, viewproj[1], r1 + dp4 r0.z, viewproj[2], r1 + dp4 r0.w, viewproj[3], r1 + + mov outpos, r0 + + ; outclr = (z / w) * 0.5 + 0.5 + rcp r0.w, r0.w + mul r0.z, r0.z, r0.w + mov r1, half + mad outclr, r0.z, r1, r1 + + ; We're finished + end +.end diff --git a/graphics/gpu/shadow_mapping/source/shadow_receiver.v.pica b/graphics/gpu/shadow_mapping/source/shadow_receiver.v.pica new file mode 100644 index 0000000..d03f2cb --- /dev/null +++ b/graphics/gpu/shadow_mapping/source/shadow_receiver.v.pica @@ -0,0 +1,89 @@ +; Uniforms +.fvec proj[4] +.fvec view[4] +.fvec model[4] +.fvec light_viewproj[4] + +; Constants +.constf myconst(0.0, 1.0, -1.0, 0.5) +.alias zeros myconst.xxxx +.alias ones myconst.yyyy +.alias half myconst.wwww + +; Outputs +.out outpos position +.out outview view +.out outtc0 texcoord0.st +.out - texcoord0w outtc0.p +.out outnq normalquat +.out outclr color + +; Inputs (defined as aliases for convenience) +.alias inpos v0 +.alias innrm v1 + +.proc main + ; Force the w component of inpos to be 1.0 + mov r0.xyz, inpos + mov r0.w, ones + + ; r2 = model * inpos + dp4 r2.x, model[0], r0 + dp4 r2.y, model[1], r0 + dp4 r2.z, model[2], r0 + dp4 r2.w, model[3], r0 + + ; r0 = view * model + dp4 r0.x, view[0], r2 + dp4 r0.y, view[1], r2 + dp4 r0.z, view[2], r2 + dp4 r0.w, view[3], r2 + + ; outview = -r0 + mov outview, -r0 + + ; outpos = proj * r0 + dp4 outpos.x, proj[0], r0 + dp4 outpos.y, proj[1], r0 + dp4 outpos.z, proj[2], r0 + dp4 outpos.w, proj[3], r0 + + ; Calculate shadow map coords + dp4 r0.x, light_viewproj[0], r2 + dp4 r0.y, light_viewproj[1], r2 + dp4 r0.z, light_viewproj[2], r2 + dp4 r0.w, light_viewproj[3], r2 + + ; outtc0 = (r0 / w) * 0.5 + 0.5 + rcp r0.w, r0.w + mul r0, r0.w, r0 + mov r1, half + mad outtc0, r0, r1, r1 + + ; Transform the normal vector with the model matrix + ; TODO: use a separate normal matrix that is the transpose of the inverse of model + dp3 r14.x, model[0], innrm + dp3 r14.y, model[1], innrm + dp3 r14.z, model[2], innrm + dp3 r6.x, r14, r14 + rsq r6.x, r6.x + mul r14.xyz, r14.xyz, r6.x + + mov r0, myconst.yxxx + add r4, ones, r14.z + mul r4, half, r4 + cmp zeros, ge, ge, r4.x + rsq r4, r4.x + mul r5, half, r14 + jmpc cmp.x, degenerate + + rcp r0.z, r4.x + mul r0.xy, r5, r4 + +degenerate: + mov outnq, r0 + mov outclr, ones + + ; We're finished + end +.end diff --git a/graphics/gpu/shadow_mapping/source/teapot.c b/graphics/gpu/shadow_mapping/source/teapot.c new file mode 100644 index 0000000..522022e --- /dev/null +++ b/graphics/gpu/shadow_mapping/source/teapot.c @@ -0,0 +1,3765 @@ +#include <3ds.h> + +const float vertex_array[7752] = +{ + -0.508714, 0.682112, 0.071712, -0.901883, 0.415418, 0.118168, + -0.517593, 0.664661, 0.063813, -0.905637, 0.407056, 0.118656, + -0.499882, 0.682112, 0.139122, -0.877041, 0.418744, 0.235298, + -0.700762, 0.643448, 0.000000, 0.058443, -0.998260, 0.000732, + -0.614053, 0.645774, 0.000000, 0.015107, -0.999878, 0.000183, + -0.614850, 0.651067, 0.039883, 0.014557, -0.949278, 0.314035, + -0.704000, 0.648569, 0.039883, 0.056703, -0.947539, 0.314524, + -0.769743, 0.637131, 0.000000, 0.162053, -0.986755, 0.002014, + -0.774766, 0.641786, 0.039883, 0.157933, -0.933592, 0.321604, + -0.820114, 0.624834, 0.000000, 0.392376, -0.919767, 0.004334, + -0.826329, 0.628576, 0.039883, 0.378307, -0.856655, 0.350688, + -0.850987, 0.604560, 0.000000, 0.783776, -0.620991, 0.005249, + -0.857869, 0.606800, 0.039883, 0.726829, -0.553880, 0.406079, + -0.861474, 0.574316, 0.000000, 0.994812, -0.101627, 0.001984, + -0.868564, 0.574316, 0.039883, 0.908139, -0.082766, 0.410321, + -0.526706, 0.651362, 0.039883, 0.003082, -0.939787, 0.341685, + -0.517593, 0.664661, 0.063813, 0.002167, -0.619495, 0.784967, + -0.616848, 0.664299, 0.063813, 0.011536, -0.679403, 0.733634, + -0.712095, 0.661370, 0.063813, 0.044679, -0.675588, 0.735923, + -0.787321, 0.653419, 0.063813, 0.123325, -0.652272, 0.747856, + -0.841868, 0.637931, 0.063813, 0.275399, -0.556871, 0.783593, + -0.875076, 0.612403, 0.063813, 0.460067, -0.316263, 0.829615, + -0.886292, 0.574316, 0.063813, 0.563036, -0.041200, 0.825373, + -0.508714, 0.682112, 0.071712, -0.000427, 0.122166, 0.992492, + -0.619445, 0.681503, 0.071790, 0.000397, 0.003632, 0.999969, + -0.722621, 0.678012, 0.071790, 0.002869, 0.011841, 0.999908, + -0.803644, 0.668539, 0.071790, 0.004852, 0.029298, 0.999542, + -0.862065, 0.650094, 0.071790, -0.008179, 0.053499, 0.998505, + -0.897443, 0.619684, 0.071790, -0.046510, 0.041536, 0.998047, + -0.909334, 0.574316, 0.071790, -0.039155, 0.003113, 0.999207, + -0.461757, 0.765755, -0.128512, -0.850551, 0.473769, -0.228217, + -0.498530, 0.712498, -0.039883, -0.897885, 0.424177, -0.117649, + -0.478597, 0.765755, 0.000000, -0.880886, 0.473281, 0.000000, + -0.622039, 0.698704, 0.063813, -0.013611, 0.682394, 0.730827, + -0.733150, 0.694655, 0.063813, -0.053896, 0.680441, 0.730796, + -0.819967, 0.683663, 0.063813, -0.147557, 0.656789, 0.739464, + -0.882265, 0.662257, 0.063813, -0.325968, 0.560564, 0.761223, + -0.919812, 0.626965, 0.063813, -0.537645, 0.315806, 0.781762, + -0.932377, 0.574316, 0.063813, -0.611530, 0.029939, 0.790613, + -0.501255, 0.717792, 0.000000, -0.904172, 0.427137, 0.000000, + -0.498530, 0.712498, 0.039883, -0.897885, 0.424146, 0.117618, + -0.624036, 0.711938, 0.039883, -0.020112, 0.949461, 0.313150, + -0.741245, 0.707456, 0.039883, -0.081820, 0.945433, 0.315287, + -0.832523, 0.695296, 0.039883, -0.227699, 0.916379, 0.329173, + -0.897800, 0.671612, 0.039883, -0.504196, 0.785302, 0.359203, + -0.937016, 0.632565, 0.039883, -0.810633, 0.443220, 0.382611, + -0.950104, 0.574316, 0.039883, -0.921232, 0.039705, 0.386944, + -0.624036, 0.711938, -0.039883, -0.020569, 0.949400, -0.313334, + -0.624834, 0.717232, 0.000000, -0.021729, 0.999756, -0.000092, + -0.498530, 0.712498, -0.039883, -0.004242, 0.950468, -0.310770, + -0.744483, 0.712577, 0.000000, -0.088260, 0.996094, -0.000488, + -0.837545, 0.699948, 0.000000, -0.246895, 0.969024, -0.001343, + -0.904015, 0.675354, 0.000000, -0.549730, 0.835322, -0.002350, + -0.943899, 0.634805, 0.000000, -0.880673, 0.473647, -0.001984, + -0.957194, 0.574316, 0.000000, -0.999084, 0.042146, -0.000610, + -0.499882, 0.682112, -0.139122, -0.877041, 0.418744, -0.235298, + -0.555408, 0.599133, 0.000000, -0.920286, 0.391156, 0.000000, + -0.526706, 0.651362, -0.039883, -0.905637, 0.407056, -0.118656, + -0.741245, 0.707456, -0.039883, -0.083132, 0.945006, -0.316202, + -0.832523, 0.695296, -0.039883, -0.230201, 0.914823, -0.331797, + -0.897800, 0.671612, -0.039883, -0.505570, 0.782800, -0.362743, + -0.937016, 0.632565, -0.039883, -0.808710, 0.444960, -0.384625, + -0.950104, 0.574316, -0.039883, -0.920835, 0.042055, -0.387646, + -0.501666, 0.699221, -0.063813, -0.897885, 0.424146, -0.117618, + -0.508714, 0.682112, -0.071712, -0.901883, 0.415448, -0.118168, + -0.622039, 0.698704, -0.063813, -0.014161, 0.682394, -0.730796, + -0.733150, 0.694655, -0.063813, -0.055361, 0.680074, -0.731010, + -0.819967, 0.683663, -0.063813, -0.150029, 0.655660, -0.739982, + -0.882265, 0.662257, -0.063813, -0.327616, 0.560594, -0.760491, + -0.919812, 0.626965, -0.063813, -0.537431, 0.320933, -0.779809, + -0.932377, 0.574316, -0.063813, -0.611988, 0.033387, -0.790155, + -0.517593, 0.664661, -0.063813, -0.905637, 0.407056, -0.118656, + -0.614850, 0.651067, -0.039883, 0.015168, -0.949339, -0.313852, + -0.616848, 0.664299, -0.063813, 0.011902, -0.679403, -0.733634, + -0.526706, 0.651362, -0.039883, 0.003265, -0.939817, -0.341594, + -0.619445, 0.681503, -0.071790, 0.000183, 0.004212, -0.999969, + -0.722621, 0.678012, -0.071790, 0.003510, 0.014008, -0.999878, + -0.803644, 0.668539, -0.071790, 0.005921, 0.035951, -0.999329, + -0.862065, 0.650094, -0.071790, -0.010132, 0.064333, -0.997864, + -0.897443, 0.619684, -0.071790, -0.051576, 0.048463, -0.997467, + -0.909334, 0.574316, -0.071790, -0.041597, 0.003998, -0.999115, + -0.517593, 0.664661, -0.063813, 0.003082, -0.620106, -0.784478, + -0.508714, 0.682112, -0.071712, -0.000031, 0.122440, -0.992462, + -0.501667, 0.699221, 0.063813, -0.897885, 0.424177, 0.117649, + -0.712095, 0.661370, -0.063813, 0.046449, -0.674398, -0.736869, + -0.787321, 0.653419, -0.063813, 0.125980, -0.648946, -0.750298, + -0.841868, 0.637931, -0.063813, 0.275430, -0.552477, -0.786676, + -0.875076, 0.612403, -0.063813, 0.455519, -0.320536, -0.830500, + -0.886292, 0.574316, -0.063813, 0.561693, -0.046480, -0.826014, + -0.535866, 0.599133, 0.149137, -0.888668, 0.391644, 0.238441, + -0.526706, 0.651362, 0.039883, -0.905637, 0.407056, 0.118656, + -0.704000, 0.648569, -0.039883, 0.058046, -0.947630, -0.314005, + -0.774766, 0.641786, -0.039883, 0.159948, -0.933836, -0.319865, + -0.826329, 0.628576, -0.039883, 0.380169, -0.857753, -0.345927, + -0.857869, 0.606800, -0.039883, 0.725547, -0.560930, -0.398602, + -0.868564, 0.574316, -0.039883, 0.908597, -0.089236, -0.407971, + -0.534329, 0.646030, 0.000000, 0.003235, -0.999969, 0.000031, + -0.856009, 0.533103, 0.000000, 0.973144, 0.230110, 0.000824, + -0.862808, 0.530917, 0.039883, 0.890896, 0.211737, 0.401776, + -0.839022, 0.483916, 0.000000, 0.912900, 0.408094, 0.002533, + -0.844976, 0.480304, 0.039883, 0.836970, 0.380932, 0.392834, + -0.809626, 0.430737, 0.000000, 0.829035, 0.559160, 0.003784, + -0.814205, 0.426194, 0.039883, 0.764519, 0.528550, 0.368969, + -0.766936, 0.377559, 0.000000, 0.718650, 0.695334, 0.003937, + -0.769651, 0.372307, 0.039883, 0.668294, 0.663717, 0.335917, + -0.710066, 0.328372, 0.000000, 0.579577, 0.814905, 0.002838, + -0.710455, 0.322361, 0.039883, 0.542650, 0.779687, 0.312357, + -0.638129, 0.287158, 0.000000, 0.495163, 0.868770, 0.002258, + -0.631184, 0.277569, 0.039883, 0.458052, 0.820643, 0.341624, + -0.879811, 0.525448, 0.063813, 0.561205, 0.137028, 0.816218, + -0.859854, 0.471278, 0.063813, 0.532029, 0.253456, 0.807886, + -0.825653, 0.414838, 0.063813, 0.497543, 0.363445, 0.787591, + -0.776434, 0.359177, 0.063813, 0.449538, 0.472060, 0.758293, + -0.711425, 0.307332, 0.063813, 0.373669, 0.563555, 0.736686, + -0.624828, 0.259599, 0.063813, 0.289041, 0.531114, 0.796442, + -0.901913, 0.518343, 0.071790, -0.023225, -0.005249, 0.999695, + -0.879202, 0.459542, 0.071790, -0.016785, -0.010254, 0.999786, + -0.840534, 0.400078, 0.071790, -0.011444, -0.012940, 0.999847, + -0.785253, 0.342107, 0.071790, -0.009796, -0.013276, 0.999847, + -0.712688, 0.287795, 0.071790, -0.014801, -0.013916, 0.999786, + -0.619922, 0.238069, 0.071790, -0.089755, -0.176122, 0.980255, + -0.924011, 0.511234, 0.063813, -0.585772, -0.152379, 0.795984, + -0.898547, 0.447807, 0.063813, -0.538896, -0.288766, 0.791314, + -0.855419, 0.385315, 0.063813, -0.484146, -0.407910, 0.774071, + -0.794072, 0.325038, 0.063813, -0.424635, -0.509781, 0.748161, + -0.713952, 0.268259, 0.063813, -0.355907, -0.584765, 0.728935, + -0.941014, 0.505765, 0.039883, -0.889828, -0.237159, 0.389782, + -0.913428, 0.438781, 0.039883, -0.808740, -0.446852, 0.382366, + -0.866867, 0.373960, 0.039883, -0.702475, -0.613269, 0.361095, + -0.800855, 0.311909, 0.039883, -0.590625, -0.734855, 0.333293, + -0.714922, 0.253231, 0.039883, -0.483291, -0.816767, 0.315104, + -0.534329, 0.646030, 0.000000, -0.912076, 0.409955, 0.000000, + -0.947813, 0.503580, 0.000000, -0.965606, -0.259987, -0.000458, + -0.919378, 0.435169, 0.000000, -0.872433, -0.488693, -0.001465, + -0.871445, 0.369416, 0.000000, -0.748436, -0.663167, -0.002197, + -0.803571, 0.306656, 0.000000, -0.621601, -0.783288, -0.002136, + -0.715311, 0.247220, 0.000000, -0.507065, -0.861873, -0.001251, + -0.608883, 0.198681, 0.039883, -0.438215, -0.854366, 0.279183, + -0.611709, 0.194244, 0.000000, -0.456130, -0.889889, -0.000732, + -0.941014, 0.505765, -0.039883, -0.889126, -0.238868, -0.390332, + -0.913428, 0.438781, -0.039883, -0.807001, -0.448531, -0.384075, + -0.866867, 0.373960, -0.039883, -0.700980, -0.613392, -0.363750, + -0.800855, 0.311909, -0.039883, -0.590442, -0.733757, -0.336039, + -0.714922, 0.253231, -0.039883, -0.484787, -0.815332, -0.316477, + -0.608884, 0.198682, -0.039883, -0.440962, -0.852931, -0.279305, + -0.713952, 0.268259, -0.063813, -0.359691, -0.584185, -0.727531, + -0.615553, 0.216807, -0.063813, -0.358074, -0.682241, -0.637410, + -0.924011, 0.511234, -0.063813, -0.585467, -0.154668, -0.795770, + -0.898547, 0.447807, -0.063813, -0.538499, -0.291696, -0.790490, + -0.855419, 0.385315, -0.063813, -0.484512, -0.409772, -0.772851, + -0.794072, 0.325038, -0.063813, -0.426496, -0.510056, -0.746910, + -0.615553, 0.216807, -0.063813, -0.909543, -0.399274, -0.115207, + -0.619922, 0.238069, -0.071790, -0.971191, -0.204688, -0.121891, + -0.604277, 0.221240, -0.168176, -0.912931, -0.326609, -0.244606, + -0.712688, 0.287795, -0.071790, -0.020478, -0.017853, -0.999603, + -0.901913, 0.518343, -0.071790, -0.024537, -0.005737, -0.999664, + -0.879202, 0.459542, -0.071790, -0.020844, -0.012207, -0.999695, + -0.840534, 0.400078, -0.071790, -0.017548, -0.016846, -0.999695, + -0.785253, 0.342107, -0.071790, -0.016724, -0.018097, -0.999695, + -0.615480, 0.216617, 0.063578, -0.909116, -0.400311, 0.115055, + -0.608883, 0.198681, 0.039883, -0.873775, -0.472610, 0.114475, + -0.575771, 0.166623, 0.160243, -0.795892, -0.566485, 0.213538, + -0.615480, 0.216617, 0.063578, -0.353069, -0.684103, 0.638203, + -0.879811, 0.525448, -0.063813, 0.559679, 0.139714, -0.816828, + -0.859854, 0.471278, -0.063813, 0.528581, 0.255501, -0.809473, + -0.825653, 0.414838, -0.063813, 0.494217, 0.362987, -0.789911, + -0.776434, 0.359177, -0.063813, 0.449049, 0.469283, -0.760308, + -0.711425, 0.307332, -0.063813, 0.378246, 0.560869, -0.736412, + -0.619922, 0.238069, -0.071790, -0.091983, -0.174383, -0.980346, + -0.624826, 0.259599, -0.063813, 0.295267, 0.530625, -0.794488, + -0.862808, 0.530917, -0.039883, 0.890500, 0.214759, -0.401044, + -0.844976, 0.480304, -0.039883, 0.836634, 0.384075, -0.390515, + -0.814205, 0.426194, -0.039883, 0.765191, 0.530198, -0.365123, + -0.769651, 0.372307, -0.039883, 0.671041, 0.663228, -0.331339, + -0.710455, 0.322361, -0.039883, 0.547929, 0.777642, -0.308206, + -0.631184, 0.277569, -0.039883, 0.464522, 0.818842, -0.337199, + 0.592873, 0.437827, -0.165003, 0.931486, 0.265572, -0.248543, + 0.588275, 0.517481, 0.000000, 0.939543, 0.342357, 0.000000, + 0.600959, 0.444810, -0.085753, 0.947539, 0.295114, -0.122684, + 0.656890, 0.471064, 0.000000, -0.351421, 0.936186, 0.001953, + 0.605956, 0.463769, 0.000000, -0.144444, 0.989502, 0.003174, + 0.600960, 0.444810, 0.085753, -0.126743, 0.878811, 0.459975, + 0.724395, 0.514048, 0.000000, -0.716758, 0.697287, -0.000946, + 0.661223, 0.454734, 0.083705, -0.299997, 0.838313, 0.455214, + 0.730696, 0.501576, 0.073611, -0.621876, 0.660207, 0.421155, + 0.761767, 0.574316, 0.000000, -0.901822, 0.432081, -0.004517, + 0.768856, 0.565896, 0.060489, -0.807031, 0.443434, 0.389904, + 0.785843, 0.642561, 0.000000, -0.930204, 0.366863, -0.008484, + 0.793721, 0.637899, 0.047367, -0.824549, 0.383312, 0.416059, + 0.813468, 0.709475, 0.000000, -0.850673, 0.525529, -0.011628, + 0.823314, 0.707784, 0.037273, -0.722465, 0.508988, 0.467910, + 0.861474, 0.765755, 0.000000, -0.668447, 0.743645, -0.011139, + 0.875654, 0.765755, 0.033236, -0.531449, 0.686514, 0.496170, + 0.672055, 0.413907, 0.133928, -0.116459, 0.505448, 0.854946, + 0.746455, 0.470391, 0.117778, -0.258400, 0.470656, 0.843593, + 0.786583, 0.544847, 0.096783, -0.407605, 0.396985, 0.822321, + 0.813417, 0.626247, 0.075788, -0.450270, 0.352367, 0.820399, + 0.847933, 0.703560, 0.059638, -0.385876, 0.395734, 0.833338, + 0.911107, 0.765755, 0.053178, -0.270669, 0.487838, 0.829890, + 0.686135, 0.360830, 0.150669, 0.141606, -0.001190, 0.989898, + 0.605100, 0.399712, 0.137265, -0.067690, 0.525346, 0.848170, + 0.613258, 0.341675, 0.154354, 0.989593, 0.100253, 0.103122, + 0.605100, 0.399712, 0.137265, 0.970244, 0.213324, 0.114475, + 0.609621, 0.360830, 0.169664, 0.960418, 0.152654, 0.232917, + 0.766935, 0.429850, 0.132501, 0.241829, 0.092502, 0.965880, + 0.809626, 0.517481, 0.108881, 0.209296, 0.170660, 0.962828, + 0.839021, 0.611098, 0.085261, 0.096194, 0.178625, 0.979186, + 0.879938, 0.698065, 0.067092, 0.009552, 0.154332, 0.987945, + 0.957193, 0.765755, 0.059825, -0.000122, 0.151952, 0.988372, + 0.700219, 0.307756, 0.133928, 0.361248, -0.477279, 0.801019, + 0.787419, 0.389310, 0.117778, 0.607929, -0.282540, 0.741997, + 0.832669, 0.490118, 0.096783, 0.679220, -0.106754, 0.726096, + 0.864627, 0.595949, 0.075788, 0.583911, -0.078524, 0.807978, + 0.911944, 0.692571, 0.059638, 0.402722, -0.205237, 0.891995, + 1.003279, 0.765755, 0.053178, 0.279519, -0.338694, 0.898404, + 0.711051, 0.266929, 0.083705, 0.488601, -0.768700, 0.412671, + 0.803175, 0.358128, 0.073611, 0.784570, -0.501511, 0.364544, + 0.850396, 0.469070, 0.060489, 0.893918, -0.279611, 0.350291, + 0.884319, 0.584297, 0.047367, 0.861415, -0.285287, 0.420179, + 0.936563, 0.688344, 0.037273, 0.679373, -0.540452, 0.496323, + 1.038733, 0.765755, 0.033236, 0.458327, -0.754540, 0.469588, + 0.715384, 0.250599, 0.000000, 0.524155, -0.851588, -0.000153, + 0.809479, 0.345652, 0.000000, 0.827143, -0.561968, 0.001679, + 0.857486, 0.460650, 0.000000, 0.943205, -0.332133, 0.003479, + 0.892200, 0.579635, 0.000000, 0.933256, -0.359081, 0.005737, + 0.946409, 0.686653, 0.000000, 0.756859, -0.653493, 0.006470, + 1.052913, 0.765755, 0.000000, 0.492843, -0.870083, 0.004120, + 0.625577, 0.219883, 0.000000, 0.322489, -0.946562, -0.001129, + 0.604276, 0.221240, 0.168176, 0.912839, -0.326609, 0.244942, + 0.596768, 0.166623, 0.000000, 0.824396, -0.565996, 0.000000, + 0.625577, 0.219883, 0.000000, 0.894162, -0.447676, 0.000000, + 0.711051, 0.266929, -0.083705, 0.486557, -0.770501, -0.411756, + 0.803175, 0.358128, -0.073611, 0.783990, -0.504074, -0.362285, + 0.850396, 0.469070, -0.060489, 0.895199, -0.281899, -0.345134, + 0.884319, 0.584297, -0.047367, 0.863735, -0.289010, -0.412824, + 0.936563, 0.688344, -0.037273, 0.682119, -0.544267, -0.488296, + 1.038733, 0.765755, -0.033236, 0.461928, -0.758202, -0.460128, + 0.700219, 0.307756, -0.133928, 0.357463, -0.479141, -0.801599, + 0.787419, 0.389310, -0.117778, 0.605884, -0.285867, -0.742393, + 0.832669, 0.490118, -0.096783, 0.679739, -0.108646, -0.725333, + 0.864627, 0.595949, -0.075788, 0.583636, -0.077883, -0.808222, + 0.911944, 0.692571, -0.059638, 0.401440, -0.199225, -0.893918, + 1.003279, 0.765755, -0.053178, 0.281961, -0.330638, -0.900632, + 0.686135, 0.360830, -0.150669, 0.135228, -0.002380, -0.990783, + 0.766935, 0.429850, -0.132501, 0.235755, 0.091128, -0.967498, + 0.809626, 0.517481, -0.108881, 0.200720, 0.170629, -0.964660, + 0.839021, 0.611098, -0.085261, 0.086123, 0.184576, -0.979003, + 0.879938, 0.698065, -0.067092, 0.000671, 0.174322, -0.984680, + 0.957193, 0.765755, -0.059825, -0.007141, 0.169012, -0.985565, + 0.615677, 0.287158, -0.171349, 0.966613, -0.042848, -0.252602, + 0.609621, 0.360830, -0.169664, 0.960418, 0.152654, -0.232917, + 0.613258, 0.341675, -0.154354, 0.989593, 0.100223, -0.103092, + 0.672055, 0.413907, -0.133928, -0.119297, 0.503342, -0.855770, + 0.746455, 0.470391, -0.117778, -0.261269, 0.472793, -0.841517, + 0.786583, 0.544847, -0.096783, -0.414075, 0.399792, -0.817713, + 0.813417, 0.626247, -0.075788, -0.459700, 0.357036, -0.813105, + 0.847933, 0.703560, -0.059638, -0.394024, 0.408490, -0.823298, + 0.911107, 0.765755, -0.053178, -0.277871, 0.487381, -0.827754, + 0.605101, 0.399712, -0.137265, -0.072207, 0.520127, -0.851009, + 0.661223, 0.454734, -0.083705, -0.298654, 0.840297, -0.452376, + 0.730696, 0.501576, -0.073611, -0.617512, 0.663961, -0.421613, + 0.768856, 0.565896, -0.060489, -0.801324, 0.450209, -0.393872, + 0.793721, 0.637899, -0.047367, -0.819422, 0.389691, -0.420270, + 0.823314, 0.707784, -0.037273, -0.721274, 0.506912, -0.471969, + 0.875654, 0.765755, -0.033236, -0.538347, 0.670644, -0.510239, + 0.877131, 0.775726, 0.000000, -0.482009, 0.876125, -0.005127, + 0.892235, 0.775943, 0.032236, -0.394635, 0.815363, 0.423536, + 0.891016, 0.781708, 0.000000, -0.321909, 0.946745, -0.002594, + 0.906073, 0.782101, 0.029666, -0.255287, 0.921995, 0.291086, + 0.901357, 0.783702, 0.000000, 0.004242, 0.999969, 0.000397, + 0.915613, 0.784200, 0.026173, -0.002960, 0.999939, -0.010102, + 0.906379, 0.781708, 0.000000, 0.853450, 0.521073, -0.007050, + 0.919292, 0.782200, 0.022403, 0.392041, 0.688986, -0.609546, + 0.904312, 0.775726, 0.000000, 0.805170, -0.592517, -0.023621, + 0.915553, 0.776064, 0.019003, 0.588763, -0.206122, -0.781579, + 0.893380, 0.765755, 0.000000, 0.681478, -0.731040, -0.033296, + 0.902834, 0.765755, 0.016618, 0.485031, -0.441237, -0.754967, + 0.929990, 0.776479, 0.051553, -0.206824, 0.638203, 0.741539, + 0.943713, 0.783087, 0.047269, -0.129490, 0.862056, 0.489944, + 0.951249, 0.785448, 0.041213, -0.033418, 0.999176, 0.022340, + 0.951569, 0.783431, 0.034270, 0.047700, 0.864040, -0.501114, + 0.943653, 0.776909, 0.027327, 0.099307, 0.538743, -0.836573, + 0.926468, 0.765755, 0.021271, 0.053560, 0.251839, -0.966277, + 0.979075, 0.777181, 0.057969, 0.020112, 0.322611, 0.946287, + 0.992645, 0.784366, 0.052956, 0.021943, 0.748894, 0.662282, + 0.997575, 0.787068, 0.045616, -0.025941, 0.995605, 0.089908, + 0.993532, 0.785033, 0.036781, -0.059175, 0.930876, -0.360424, + 0.980182, 0.778010, 0.027281, -0.080172, 0.784448, -0.614948, + 0.957193, 0.765755, 0.017947, -0.142582, 0.557604, -0.817743, + 1.028157, 0.777879, 0.051503, 0.281747, -0.174993, 0.943388, + 1.041577, 0.785649, 0.046875, 0.303903, 0.444136, 0.842830, + 1.043903, 0.788686, 0.039883, 0.034333, 0.983764, 0.175970, + 1.035492, 0.786631, 0.031119, -0.113865, 0.956420, -0.268777, + 1.016712, 0.779111, 0.021172, -0.155339, 0.858852, -0.488021, + 0.987920, 0.765755, 0.010635, -0.207404, 0.641865, -0.738182, + 1.065915, 0.778419, 0.032174, 0.467238, -0.683187, 0.561144, + 1.079216, 0.786631, 0.029174, 0.699515, 0.004364, 0.714560, + 1.079539, 0.789934, 0.024511, 0.355296, 0.891934, 0.279641, + 1.067772, 0.787863, 0.018464, -0.170354, 0.971465, -0.164861, + 1.044812, 0.779957, 0.011310, -0.245552, 0.901181, -0.357097, + 1.011552, 0.765755, 0.003324, -0.248726, 0.651082, -0.717063, + 1.081016, 0.778632, 0.000000, 0.494430, -0.869167, 0.006317, + 1.094273, 0.787027, 0.000000, 0.933134, -0.358898, 0.019868, + 1.093795, 0.790431, 0.000000, 0.703146, 0.710685, 0.021790, + 1.080684, 0.788354, 0.000000, -0.203650, 0.978942, -0.012574, + 1.056052, 0.780295, 0.000000, -0.326456, 0.942869, -0.066073, + 1.021006, 0.765755, 0.000000, -0.397595, 0.857082, -0.327525, + 1.065915, 0.778419, -0.032251, 0.460616, -0.712546, -0.529221, + 1.079216, 0.786631, -0.029789, 0.695486, -0.098544, -0.711722, + 1.079539, 0.789934, -0.026589, 0.397534, 0.853816, -0.336070, + 1.067772, 0.787863, -0.023388, -0.198248, 0.963439, 0.180151, + 1.044812, 0.779957, -0.020926, -0.306833, 0.888516, 0.341075, + 1.011552, 0.765755, -0.019942, -0.393689, 0.807672, 0.438887, + 1.028157, 0.777879, -0.051602, 0.276559, -0.211951, -0.937315, + 1.041577, 0.785649, -0.047663, 0.294626, 0.366161, -0.882656, + 1.043903, 0.788686, -0.042542, 0.046632, 0.973235, -0.224982, + 1.035492, 0.786631, -0.037421, -0.146733, 0.912168, 0.382611, + 1.016712, 0.779111, -0.033482, -0.202643, 0.700797, 0.683950, + 0.987920, 0.765755, -0.031906, -0.232673, 0.506485, 0.830226, + 0.979075, 0.777181, -0.058052, 0.011689, 0.309397, -0.950835, + 0.992645, 0.784366, -0.053621, 0.013245, 0.708640, -0.705435, + 0.997575, 0.787068, -0.047860, -0.027589, 0.995758, -0.087680, + 0.993532, 0.785033, -0.042099, -0.047395, 0.829371, 0.556658, + 0.980182, 0.778010, -0.037667, -0.015259, 0.386608, 0.922086, + 0.957193, 0.765755, -0.035895, 0.004639, 0.119510, 0.992798, + 0.929990, 0.776479, -0.051602, -0.211035, 0.631001, -0.746513, + 0.943713, 0.783087, -0.047663, -0.138768, 0.848781, -0.510147, + 0.951249, 0.785448, -0.042542, -0.024995, 0.999664, -0.001190, + 0.951569, 0.783431, -0.037421, 0.120426, 0.724570, 0.678579, + 0.943653, 0.776909, -0.033482, 0.260750, 0.006531, 0.965361, + 0.926468, 0.765755, -0.031906, 0.272500, -0.255898, 0.927488, + 0.892235, 0.775943, -0.032251, -0.395581, 0.809961, -0.432905, + 0.906073, 0.782101, -0.029789, -0.258827, 0.918851, -0.297800, + 0.915613, 0.784200, -0.026589, 0.004730, 0.999878, 0.013031, + 0.919292, 0.782200, -0.023388, 0.466628, 0.599780, 0.649983, + 0.915553, 0.776064, -0.020926, 0.621937, -0.400861, 0.672628, + 0.902834, 0.765755, -0.019942, 0.551042, -0.592181, 0.587878, + 0.886428, 0.750924, 0.014860, 0.649068, 0.384991, -0.656087, + 0.936793, 0.750924, -0.033795, 0.055971, 0.691214, 0.720450, + 0.965261, 0.750924, -0.030099, -0.115940, 0.804590, 0.582354, + 0.987158, 0.750924, -0.019014, -0.262185, 0.897946, 0.353435, + 0.995918, 0.750924, -0.000537, -0.341655, 0.885006, -0.316263, + 0.936793, 0.750924, 0.016092, -0.081423, 0.793085, -0.603626, + 0.987158, 0.750924, 0.002542, -0.155675, 0.857753, -0.489883, + 0.886428, 0.750924, -0.019014, 0.728690, 0.365978, 0.578784, + 0.908324, 0.750924, -0.030099, 0.318674, 0.539384, 0.779382, + 0.877668, 0.750924, -0.000537, 0.953551, 0.300150, -0.024415, + 0.965261, 0.750924, 0.009317, -0.133976, 0.836818, -0.530808, + 0.908324, 0.750924, 0.019171, 0.095401, 0.667959, -0.738029, + 0.936793, 0.750924, -0.007312, 0.000000, 0.999969, 0.000000, + 0.440746, 0.783205, 0.000000, -0.992523, -0.122013, 0.000000, + 0.446690, 0.765755, 0.000000, -0.937346, -0.348338, 0.000000, + 0.430973, 0.765755, 0.119945, -0.905148, -0.348827, -0.242836, + 0.425236, 0.783205, 0.118348, -0.958617, -0.122227, -0.257057, + 0.441668, 0.793673, 0.000000, -0.832057, 0.554674, 0.000000, + 0.426127, 0.793673, 0.118596, -0.803217, 0.555376, -0.215339, + 0.447686, 0.797164, 0.000000, -0.048616, 0.998810, 0.000000, + 0.431936, 0.797164, 0.120212, -0.046236, 0.998840, -0.012726, + 0.457031, 0.793673, 0.000000, 0.544267, 0.838893, 0.000000, + 0.440950, 0.793673, 0.122721, 0.525376, 0.839106, 0.140843, + 0.467924, 0.783205, 0.000000, 0.783471, 0.621387, 0.000000, + 0.451460, 0.783205, 0.125646, 0.756371, 0.621845, 0.202918, + 0.478596, 0.765755, 0.000000, 0.880886, 0.473281, 0.000000, + 0.461756, 0.765755, 0.128512, 0.850551, 0.473769, 0.228217, + 0.386470, 0.765755, 0.226985, -0.810907, -0.349376, -0.469375, + 0.381327, 0.783205, 0.223964, -0.859004, -0.122410, -0.497085, + 0.382124, 0.793673, 0.224433, -0.719657, 0.555559, -0.416425, + 0.387332, 0.797164, 0.227491, -0.041749, 0.998810, -0.024415, + 0.395416, 0.793673, 0.232239, 0.470077, 0.839625, 0.272011, + 0.404842, 0.783205, 0.237775, 0.677236, 0.622608, 0.391980, + 0.414076, 0.765755, 0.243198, 0.761803, 0.474471, 0.440962, + 0.317150, 0.765755, 0.317150, -0.662465, -0.349620, -0.662465, + 0.312929, 0.783205, 0.312929, -0.701773, -0.122440, -0.701773, + 0.313584, 0.793673, 0.313584, -0.587878, 0.555650, -0.587878, + 0.317858, 0.797164, 0.317858, -0.034272, 0.998810, -0.034272, + 0.324491, 0.793673, 0.324492, 0.383831, 0.839808, 0.383831, + 0.332226, 0.783205, 0.332226, 0.553148, 0.622913, 0.553148, + 0.339803, 0.765755, 0.339804, 0.622303, 0.474776, 0.622303, + 0.226984, 0.765755, 0.386470, -0.469375, -0.349376, -0.810907, + 0.223963, 0.783205, 0.381327, -0.497085, -0.122379, -0.859004, + 0.224433, 0.793673, 0.382125, -0.416425, 0.555559, -0.719657, + 0.227491, 0.797164, 0.387332, -0.024415, 0.998810, -0.041749, + 0.232239, 0.793673, 0.395417, 0.272011, 0.839625, 0.470077, + 0.237775, 0.783205, 0.404842, 0.391980, 0.622608, 0.677236, + 0.243198, 0.765755, 0.414076, 0.440962, 0.474471, 0.761834, + 0.119944, 0.765755, 0.430973, -0.242836, -0.348827, -0.905148, + 0.118348, 0.783205, 0.425237, -0.257057, -0.122227, -0.958617, + 0.118596, 0.793673, 0.426127, -0.215339, 0.555376, -0.803217, + 0.120212, 0.797164, 0.431937, -0.012726, 0.998840, -0.046205, + 0.122721, 0.793673, 0.440950, 0.140843, 0.839106, 0.525376, + 0.125646, 0.783205, 0.451460, 0.202918, 0.621845, 0.756371, + 0.128512, 0.765755, 0.461757, 0.228217, 0.473769, 0.850551, + -0.000000, 0.765755, 0.446690, 0.000000, -0.348338, -0.937346, + -0.000000, 0.783205, 0.440746, 0.000000, -0.122013, -0.992523, + -0.000000, 0.793673, 0.441668, 0.000000, 0.554674, -0.832057, + -0.000000, 0.797164, 0.447686, 0.000000, 0.998810, -0.048616, + -0.000000, 0.793673, 0.457031, 0.000000, 0.838893, 0.544267, + -0.000000, 0.783205, 0.467924, 0.000000, 0.621387, 0.783471, + -0.000000, 0.765755, 0.478597, 0.000000, 0.473281, 0.880886, + -0.119945, 0.765755, 0.430973, 0.242836, -0.348827, -0.905148, + -0.118348, 0.783205, 0.425237, 0.257057, -0.122227, -0.958617, + -0.118596, 0.793673, 0.426127, 0.215308, 0.555376, -0.803217, + -0.120212, 0.797164, 0.431937, 0.012726, 0.998840, -0.046205, + -0.122721, 0.793673, 0.440950, -0.140843, 0.839106, 0.525376, + -0.125646, 0.783205, 0.451460, -0.202918, 0.621845, 0.756340, + -0.128513, 0.765755, 0.461757, -0.228217, 0.473769, 0.850551, + -0.226985, 0.765755, 0.386470, 0.469375, -0.349376, -0.810907, + -0.223964, 0.783205, 0.381327, 0.497085, -0.122379, -0.859004, + -0.224433, 0.793673, 0.382125, 0.416425, 0.555559, -0.719657, + -0.227491, 0.797164, 0.387332, 0.024415, 0.998810, -0.041749, + -0.232240, 0.793673, 0.395417, -0.272011, 0.839625, 0.470077, + -0.237775, 0.783205, 0.404842, -0.391980, 0.622608, 0.677236, + -0.243198, 0.765755, 0.414076, -0.440962, 0.474502, 0.761803, + -0.317150, 0.765755, 0.317150, 0.662465, -0.349620, -0.662465, + -0.312929, 0.783205, 0.312929, 0.701773, -0.122471, -0.701773, + -0.313584, 0.793673, 0.313584, 0.587878, 0.555650, -0.587878, + -0.317859, 0.797164, 0.317858, 0.034272, 0.998810, -0.034272, + -0.324492, 0.793673, 0.324492, -0.383831, 0.839808, 0.383831, + -0.332226, 0.783205, 0.332226, -0.553148, 0.622913, 0.553148, + -0.339804, 0.765755, 0.339804, -0.622303, 0.474776, 0.622303, + -0.386470, 0.765755, 0.226985, 0.810907, -0.349406, -0.469375, + -0.381327, 0.783205, 0.223964, 0.859004, -0.122379, -0.497085, + -0.382125, 0.793673, 0.224433, 0.719657, 0.555559, -0.416425, + -0.387332, 0.797164, 0.227491, 0.041749, 0.998810, -0.024415, + -0.395417, 0.793673, 0.232239, -0.470077, 0.839625, 0.272011, + -0.404842, 0.783205, 0.237775, -0.677236, 0.622608, 0.391980, + -0.414076, 0.765755, 0.243198, -0.761803, 0.474471, 0.440962, + -0.430974, 0.765755, 0.119945, 0.905148, -0.348827, -0.242836, + -0.425237, 0.783205, 0.118348, 0.958617, -0.122227, -0.257057, + -0.426127, 0.793673, 0.118596, 0.803217, 0.555376, -0.215339, + -0.431937, 0.797164, 0.120212, 0.046205, 0.998840, -0.012726, + -0.440950, 0.793673, 0.122721, -0.525376, 0.839106, 0.140843, + -0.451461, 0.783205, 0.125646, -0.756340, 0.621876, 0.202918, + -0.461757, 0.765755, 0.128512, -0.850551, 0.473769, 0.228217, + -0.446690, 0.765755, 0.000000, 0.937346, -0.348338, 0.000000, + -0.440746, 0.783205, 0.000000, 0.992523, -0.122013, 0.000000, + -0.441668, 0.793673, 0.000000, 0.832026, 0.554674, 0.000000, + -0.447686, 0.797164, 0.000000, 0.048616, 0.998810, 0.000000, + -0.457031, 0.793673, 0.000000, -0.544267, 0.838893, 0.000000, + -0.467924, 0.783205, 0.000000, -0.783471, 0.621387, 0.000000, + -0.430974, 0.765755, -0.119945, 0.905148, -0.348827, 0.242836, + -0.425237, 0.783205, -0.118348, 0.958617, -0.122227, 0.257057, + -0.426127, 0.793673, -0.118596, 0.803217, 0.555376, 0.215308, + -0.431937, 0.797164, -0.120212, 0.046205, 0.998840, 0.012726, + -0.440950, 0.793673, -0.122721, -0.525376, 0.839106, -0.140843, + -0.451461, 0.783205, -0.125646, -0.756340, 0.621876, -0.202918, + -0.386470, 0.765755, -0.226985, 0.810907, -0.349406, 0.469375, + -0.381327, 0.783205, -0.223964, 0.859004, -0.122379, 0.497085, + -0.382125, 0.793673, -0.224433, 0.719657, 0.555559, 0.416425, + -0.387332, 0.797164, -0.227491, 0.041749, 0.998810, 0.024415, + -0.395417, 0.793673, -0.232239, -0.470077, 0.839625, -0.272011, + -0.404842, 0.783205, -0.237775, -0.677236, 0.622608, -0.391980, + -0.414076, 0.765755, -0.243198, -0.761803, 0.474471, -0.440962, + -0.317150, 0.765755, -0.317150, 0.662465, -0.349620, 0.662465, + -0.312929, 0.783205, -0.312929, 0.701773, -0.122471, 0.701773, + -0.313584, 0.793673, -0.313584, 0.587878, 0.555650, 0.587878, + -0.317859, 0.797164, -0.317858, 0.034272, 0.998810, 0.034272, + -0.324492, 0.793673, -0.324492, -0.383831, 0.839808, -0.383831, + -0.332226, 0.783205, -0.332226, -0.553148, 0.622913, -0.553148, + -0.339804, 0.765755, -0.339804, -0.622303, 0.474776, -0.622303, + -0.226985, 0.765755, -0.386470, 0.469375, -0.349376, 0.810907, + -0.223964, 0.783205, -0.381327, 0.497085, -0.122379, 0.859004, + -0.224433, 0.793673, -0.382125, 0.416425, 0.555559, 0.719657, + -0.227491, 0.797164, -0.387332, 0.024415, 0.998810, 0.041749, + -0.232240, 0.793673, -0.395417, -0.272011, 0.839625, -0.470077, + -0.237775, 0.783205, -0.404842, -0.391980, 0.622608, -0.677236, + -0.243198, 0.765755, -0.414076, -0.440962, 0.474471, -0.761803, + -0.119945, 0.765755, -0.430973, 0.242836, -0.348827, 0.905148, + -0.118348, 0.783205, -0.425237, 0.257057, -0.122227, 0.958617, + -0.118596, 0.793673, -0.426127, 0.215339, 0.555376, 0.803217, + -0.120212, 0.797164, -0.431937, 0.012726, 0.998840, 0.046205, + -0.122721, 0.793673, -0.440950, -0.140843, 0.839106, -0.525376, + -0.125646, 0.783205, -0.451460, -0.202918, 0.621845, -0.756371, + -0.128513, 0.765755, -0.461757, -0.228217, 0.473769, -0.850551, + -0.000000, 0.765755, -0.446690, 0.000000, -0.348338, 0.937346, + -0.000000, 0.783205, -0.440746, 0.000000, -0.122013, 0.992523, + -0.000000, 0.793673, -0.441668, 0.000000, 0.554674, 0.832057, + -0.000000, 0.797164, -0.447686, 0.000000, 0.998810, 0.048616, + -0.000000, 0.793673, -0.457031, 0.000000, 0.838893, -0.544267, + -0.000000, 0.783205, -0.467924, 0.000000, 0.621387, -0.783471, + -0.000000, 0.765755, -0.478597, 0.000000, 0.473281, -0.880886, + 0.119944, 0.765755, -0.430973, -0.242836, -0.348827, 0.905148, + 0.118348, 0.783205, -0.425237, -0.257057, -0.122227, 0.958617, + 0.118596, 0.793673, -0.426127, -0.215308, 0.555376, 0.803217, + 0.120212, 0.797164, -0.431937, -0.012726, 0.998840, 0.046205, + 0.122721, 0.793673, -0.440950, 0.140843, 0.839106, -0.525376, + 0.125646, 0.783205, -0.451460, 0.202918, 0.621845, -0.756371, + 0.128512, 0.765755, -0.461757, 0.228217, 0.473769, -0.850551, + 0.226984, 0.765755, -0.386470, -0.469375, -0.349376, 0.810907, + 0.223963, 0.783205, -0.381327, -0.497085, -0.122379, 0.859004, + 0.224433, 0.793673, -0.382125, -0.416425, 0.555559, 0.719657, + 0.227491, 0.797164, -0.387332, -0.024415, 0.998810, 0.041749, + 0.232239, 0.793673, -0.395417, 0.272011, 0.839625, -0.470077, + 0.237775, 0.783205, -0.404842, 0.391980, 0.622608, -0.677236, + 0.243198, 0.765755, -0.414076, 0.440962, 0.474471, -0.761803, + 0.317150, 0.765755, -0.317150, -0.662465, -0.349620, 0.662465, + 0.312929, 0.783205, -0.312929, -0.701773, -0.122440, 0.701773, + 0.313584, 0.793673, -0.313584, -0.587878, 0.555650, 0.587878, + 0.317858, 0.797164, -0.317858, -0.034272, 0.998810, 0.034272, + 0.324491, 0.793673, -0.324492, 0.383831, 0.839808, -0.383831, + 0.332226, 0.783205, -0.332226, 0.553148, 0.622913, -0.553148, + 0.339803, 0.765755, -0.339804, 0.622303, 0.474776, -0.622303, + 0.386470, 0.765755, -0.226985, -0.810907, -0.349376, 0.469375, + 0.381327, 0.783205, -0.223964, -0.859004, -0.122410, 0.497085, + 0.382124, 0.793673, -0.224433, -0.719657, 0.555528, 0.416425, + 0.387332, 0.797164, -0.227491, -0.041749, 0.998810, 0.024415, + 0.395416, 0.793673, -0.232239, 0.470077, 0.839625, -0.272011, + 0.404842, 0.783205, -0.237775, 0.677236, 0.622639, -0.391980, + 0.414076, 0.765755, -0.243198, 0.761803, 0.474471, -0.440962, + 0.430973, 0.765755, -0.119945, -0.905148, -0.348827, 0.242836, + 0.425236, 0.783205, -0.118348, -0.958617, -0.122227, 0.257057, + 0.426127, 0.793673, -0.118596, -0.803217, 0.555376, 0.215339, + 0.431936, 0.797164, -0.120212, -0.046236, 0.998840, 0.012726, + 0.440950, 0.793673, -0.122721, 0.525376, 0.839106, -0.140843, + 0.451460, 0.783205, -0.125646, 0.756371, 0.621845, -0.202918, + 0.461756, 0.765755, -0.128512, 0.850551, 0.473769, -0.228217, + 0.518110, 0.682112, 0.000000, 0.908292, 0.418256, 0.000000, + 0.499881, 0.682112, 0.139122, 0.877041, 0.418744, 0.235298, + 0.555408, 0.599133, 0.000000, 0.920286, 0.391156, 0.000000, + 0.535865, 0.599133, 0.149137, 0.888668, 0.391644, 0.238441, + 0.567578, 0.517485, 0.157963, 0.907315, 0.342753, 0.243446, + 0.448260, 0.682112, 0.263277, 0.785638, 0.419416, 0.454756, + 0.480530, 0.599133, 0.282230, 0.796075, 0.392285, 0.460799, + 0.508969, 0.517485, 0.298931, 0.812830, 0.343333, 0.470504, + 0.592873, 0.437827, 0.165003, 0.931486, 0.265542, 0.248543, + 0.531651, 0.437827, 0.312254, 0.834162, 0.266366, 0.482864, + 0.546669, 0.360830, 0.321075, 0.855312, 0.152379, 0.495132, + 0.615677, 0.287158, 0.171349, 0.966613, -0.042848, 0.252602, + 0.552100, 0.287158, 0.324265, 0.864498, -0.045808, 0.500504, + 0.367859, 0.682112, 0.367859, 0.641804, 0.419691, 0.641804, + 0.394341, 0.599133, 0.394341, 0.650349, 0.392499, 0.650349, + 0.417675, 0.517481, 0.417675, 0.664052, 0.343577, 0.664052, + 0.436292, 0.437827, 0.436292, 0.681509, 0.266579, 0.681509, + 0.448614, 0.360830, 0.448614, 0.698813, 0.152501, 0.698813, + 0.453072, 0.287158, 0.453072, 0.706351, -0.045869, 0.706351, + 0.263277, 0.682112, 0.448260, 0.454756, 0.419416, 0.785638, + 0.282230, 0.599133, 0.480530, 0.460799, 0.392285, 0.796075, + 0.298931, 0.517485, 0.508969, 0.470504, 0.343333, 0.812830, + 0.312254, 0.437827, 0.531651, 0.482864, 0.266366, 0.834162, + 0.321074, 0.360830, 0.546669, 0.495132, 0.152409, 0.855312, + 0.324265, 0.287158, 0.552100, 0.500504, -0.045808, 0.864498, + 0.139122, 0.682112, 0.499882, 0.235298, 0.418744, 0.877041, + 0.149137, 0.599133, 0.535866, 0.238441, 0.391644, 0.888668, + 0.157963, 0.517481, 0.567578, 0.243446, 0.342753, 0.907315, + 0.165003, 0.437827, 0.592873, 0.249855, 0.265908, 0.931028, + 0.169664, 0.360830, 0.609621, 0.256172, 0.152104, 0.954558, + 0.171349, 0.287158, 0.615677, 0.258980, -0.045717, 0.964782, + -0.000000, 0.682112, 0.518110, 0.000000, 0.418256, 0.908292, + -0.000000, 0.599133, 0.555408, 0.000000, 0.391156, 0.920286, + -0.000000, 0.517481, 0.588275, 0.000000, 0.342357, 0.939543, + -0.000000, 0.437827, 0.614496, 0.000000, 0.265542, 0.964080, + -0.000000, 0.360830, 0.631850, 0.000000, 0.151891, 0.988372, + -0.000000, 0.287158, 0.638129, 0.000000, -0.045656, 0.998932, + -0.139123, 0.682112, 0.499882, -0.235298, 0.418744, 0.877041, + -0.149138, 0.599133, 0.535866, -0.238441, 0.391644, 0.888668, + -0.157963, 0.517485, 0.567578, -0.243446, 0.342753, 0.907315, + -0.165004, 0.437827, 0.592873, -0.249855, 0.265877, 0.931028, + -0.169664, 0.360830, 0.609621, -0.256172, 0.152104, 0.954558, + -0.171350, 0.287158, 0.615677, -0.258980, -0.045717, 0.964782, + -0.263278, 0.682112, 0.448260, -0.454756, 0.419416, 0.785638, + -0.282230, 0.599133, 0.480530, -0.460799, 0.392285, 0.796075, + -0.298931, 0.517485, 0.508969, -0.470504, 0.343333, 0.812830, + -0.312255, 0.437827, 0.531651, -0.482864, 0.266366, 0.834162, + -0.321075, 0.360830, 0.546669, -0.495132, 0.152379, 0.855312, + -0.324265, 0.287158, 0.552100, -0.500504, -0.045808, 0.864498, + -0.367859, 0.682112, 0.367859, -0.641804, 0.419691, 0.641804, + -0.394341, 0.599133, 0.394341, -0.650349, 0.392499, 0.650349, + -0.417675, 0.517481, 0.417675, -0.664052, 0.343577, 0.664052, + -0.436292, 0.437827, 0.436292, -0.681509, 0.266579, 0.681509, + -0.448615, 0.360830, 0.448614, -0.698813, 0.152501, 0.698813, + -0.453072, 0.287158, 0.453072, -0.706351, -0.045869, 0.706351, + -0.448260, 0.682112, 0.263277, -0.785638, 0.419416, 0.454756, + -0.480530, 0.599133, 0.282230, -0.796075, 0.392285, 0.460799, + -0.508969, 0.517485, 0.298931, -0.812830, 0.343364, 0.470504, + -0.531651, 0.437827, 0.312254, -0.834162, 0.266366, 0.482864, + -0.546669, 0.360830, 0.321075, -0.855312, 0.152379, 0.495132, + -0.552100, 0.287158, 0.324265, -0.864498, -0.045808, 0.500504, + -0.567578, 0.517481, 0.157963, -0.907315, 0.342753, 0.243446, + -0.592873, 0.437827, 0.165003, -0.931028, 0.265908, 0.249855, + -0.609621, 0.360830, 0.169664, -0.954558, 0.152104, 0.256172, + -0.615677, 0.287158, 0.171349, -0.964782, -0.045717, 0.258980, + -0.588275, 0.517481, 0.000000, -0.939543, 0.342357, 0.000000, + -0.614496, 0.437827, 0.000000, -0.964080, 0.265542, 0.000000, + -0.631850, 0.360830, 0.000000, -0.988372, 0.151891, 0.000000, + -0.535866, 0.599133, -0.149137, -0.888668, 0.391644, -0.238441, + -0.567578, 0.517485, -0.157963, -0.907315, 0.342753, -0.243446, + -0.592873, 0.437827, -0.165003, -0.931028, 0.265877, -0.249855, + -0.609621, 0.360830, -0.169664, -0.954558, 0.152104, -0.256172, + -0.448260, 0.682112, -0.263277, -0.785638, 0.419416, -0.454756, + -0.480530, 0.599133, -0.282230, -0.796075, 0.392285, -0.460799, + -0.508969, 0.517485, -0.298931, -0.812830, 0.343333, -0.470504, + -0.531651, 0.437827, -0.312254, -0.834162, 0.266366, -0.482864, + -0.546669, 0.360830, -0.321075, -0.855312, 0.152379, -0.495132, + -0.615677, 0.287158, -0.171349, -0.964782, -0.045717, -0.258980, + -0.552100, 0.287158, -0.324265, -0.864498, -0.045808, -0.500504, + -0.367859, 0.682112, -0.367859, -0.641804, 0.419691, -0.641804, + -0.394341, 0.599133, -0.394341, -0.650349, 0.392499, -0.650349, + -0.417675, 0.517481, -0.417675, -0.664052, 0.343577, -0.664052, + -0.436292, 0.437827, -0.436292, -0.681509, 0.266579, -0.681509, + -0.448615, 0.360830, -0.448614, -0.698813, 0.152501, -0.698813, + -0.453072, 0.287158, -0.453072, -0.706351, -0.045869, -0.706351, + -0.263278, 0.682112, -0.448260, -0.454756, 0.419416, -0.785638, + -0.282230, 0.599133, -0.480530, -0.460799, 0.392285, -0.796075, + -0.298931, 0.517485, -0.508969, -0.470504, 0.343333, -0.812830, + -0.312255, 0.437827, -0.531651, -0.482864, 0.266366, -0.834162, + -0.321075, 0.360830, -0.546669, -0.495132, 0.152379, -0.855312, + -0.324265, 0.287158, -0.552100, -0.500504, -0.045808, -0.864498, + -0.139123, 0.682112, -0.499882, -0.235298, 0.418744, -0.877041, + -0.149138, 0.599133, -0.535866, -0.238441, 0.391644, -0.888668, + -0.157963, 0.517481, -0.567578, -0.243446, 0.342753, -0.907315, + -0.165004, 0.437827, -0.592873, -0.249855, 0.265908, -0.931028, + -0.169664, 0.360830, -0.609621, -0.256172, 0.152104, -0.954558, + -0.171350, 0.287158, -0.615677, -0.258980, -0.045717, -0.964782, + -0.000000, 0.682112, -0.518110, 0.000000, 0.418256, -0.908292, + -0.000000, 0.599133, -0.555408, 0.000000, 0.391156, -0.920286, + -0.000000, 0.517481, -0.588275, 0.000000, 0.342357, -0.939543, + -0.000000, 0.437827, -0.614496, 0.000000, 0.265542, -0.964080, + -0.000000, 0.360830, -0.631850, 0.000000, 0.151891, -0.988372, + -0.000000, 0.287158, -0.638129, 0.000000, -0.045656, -0.998932, + 0.139122, 0.682112, -0.499882, 0.235298, 0.418744, -0.877041, + 0.149137, 0.599133, -0.535866, 0.238441, 0.391644, -0.888668, + 0.157963, 0.517485, -0.567578, 0.243446, 0.342753, -0.907315, + 0.165003, 0.437827, -0.592873, 0.249855, 0.265877, -0.931028, + 0.169664, 0.360830, -0.609621, 0.256172, 0.152104, -0.954558, + 0.171349, 0.287158, -0.615677, 0.258980, -0.045717, -0.964782, + 0.263277, 0.682112, -0.448260, 0.454756, 0.419416, -0.785638, + 0.282230, 0.599133, -0.480530, 0.460799, 0.392285, -0.796075, + 0.298931, 0.517485, -0.508969, 0.470504, 0.343333, -0.812830, + 0.312254, 0.437827, -0.531651, 0.482864, 0.266366, -0.834162, + 0.321074, 0.360830, -0.546669, 0.495132, 0.152379, -0.855312, + 0.324265, 0.287158, -0.552100, 0.500504, -0.045808, -0.864498, + 0.367859, 0.682112, -0.367859, 0.641804, 0.419691, -0.641804, + 0.394341, 0.599133, -0.394341, 0.650349, 0.392499, -0.650349, + 0.417675, 0.517481, -0.417675, 0.664052, 0.343577, -0.664052, + 0.436292, 0.437827, -0.436292, 0.681509, 0.266579, -0.681509, + 0.448614, 0.360830, -0.448614, 0.698813, 0.152501, -0.698813, + 0.453072, 0.287158, -0.453072, 0.706351, -0.045869, -0.706351, + 0.448260, 0.682112, -0.263277, 0.785638, 0.419416, -0.454756, + 0.480530, 0.599133, -0.282230, 0.796075, 0.392285, -0.460799, + 0.508969, 0.517485, -0.298931, 0.812830, 0.343364, -0.470504, + 0.531651, 0.437827, -0.312254, 0.834162, 0.266366, -0.482864, + 0.546669, 0.360830, -0.321075, 0.855312, 0.152379, -0.495132, + 0.552100, 0.287158, -0.324265, 0.864498, -0.045808, -0.500504, + 0.499881, 0.682112, -0.139122, 0.877041, 0.418744, -0.235298, + 0.535865, 0.599133, -0.149137, 0.888668, 0.391644, -0.238441, + 0.567578, 0.517481, -0.157963, 0.907315, 0.342753, -0.243446, + 0.575771, 0.166623, 0.160243, 0.795892, -0.566485, 0.213538, + 0.558363, 0.122640, 0.000000, 0.712180, -0.701987, 0.000000, + 0.538718, 0.122640, 0.149931, 0.687399, -0.702445, 0.184393, + 0.519957, 0.088629, 0.000000, 0.652974, -0.757347, 0.000000, + 0.501662, 0.088629, 0.139618, 0.630146, -0.757805, 0.169012, + 0.490415, 0.063924, 0.000000, 0.724021, -0.689749, 0.000000, + 0.473160, 0.063924, 0.131685, 0.698752, -0.690329, 0.187414, + 0.478596, 0.047860, 0.000000, 0.886410, -0.462874, 0.000000, + 0.461756, 0.047860, 0.128512, 0.855861, -0.463454, 0.229530, + 0.541877, 0.221240, 0.318259, 0.817774, -0.327158, 0.473434, + 0.516317, 0.166623, 0.303247, 0.712729, -0.567248, 0.412549, + 0.483086, 0.122640, 0.283731, 0.615345, -0.703146, 0.356151, + 0.449858, 0.088629, 0.264215, 0.564043, -0.758446, 0.326456, + 0.424299, 0.063924, 0.249203, 0.625660, -0.690939, 0.362102, + 0.414076, 0.047860, 0.243198, 0.766625, -0.464125, 0.443678, + 0.444680, 0.221240, 0.444680, 0.668111, -0.327403, 0.668111, + 0.423705, 0.166623, 0.423705, 0.582171, -0.567522, 0.582171, + 0.396438, 0.122640, 0.396438, 0.502579, -0.703421, 0.502579, + 0.369171, 0.088629, 0.369171, 0.460646, -0.758660, 0.460646, + 0.348195, 0.063924, 0.348195, 0.510971, -0.691183, 0.510971, + 0.339803, 0.047860, 0.339804, 0.626209, -0.464370, 0.626240, + 0.318259, 0.221240, 0.541877, 0.473434, -0.327158, 0.817774, + 0.303247, 0.166623, 0.516317, 0.412549, -0.567248, 0.712729, + 0.283731, 0.122640, 0.483086, 0.356151, -0.703146, 0.615375, + 0.264215, 0.088629, 0.449859, 0.326456, -0.758446, 0.564043, + 0.249203, 0.063924, 0.424298, 0.362102, -0.690939, 0.625660, + 0.243198, 0.047860, 0.414076, 0.443678, -0.464125, 0.766625, + 0.168176, 0.221240, 0.604276, 0.245003, -0.326609, 0.912839, + 0.160243, 0.166623, 0.575771, 0.213538, -0.566485, 0.795892, + 0.149931, 0.122640, 0.538718, 0.184393, -0.702445, 0.687399, + 0.139618, 0.088629, 0.501662, 0.169012, -0.757805, 0.630146, + 0.131685, 0.063924, 0.473160, 0.187414, -0.690329, 0.698752, + 0.128512, 0.047860, 0.461757, 0.229530, -0.463454, 0.855831, + -0.000000, 0.221240, 0.626311, 0.000000, -0.326243, 0.945250, + -0.000000, 0.166623, 0.596769, 0.000000, -0.565996, 0.824396, + -0.000000, 0.122640, 0.558363, 0.000000, -0.701987, 0.712180, + -0.000000, 0.088629, 0.519957, 0.000000, -0.757347, 0.652974, + -0.000000, 0.063924, 0.490415, 0.000000, -0.689749, 0.724021, + -0.000000, 0.047860, 0.478597, 0.000000, -0.462905, 0.886380, + -0.168177, 0.221240, 0.604276, -0.245003, -0.326609, 0.912839, + -0.160244, 0.166623, 0.575771, -0.213538, -0.566485, 0.795892, + -0.149931, 0.122640, 0.538718, -0.184393, -0.702445, 0.687399, + -0.139618, 0.088629, 0.501662, -0.169012, -0.757805, 0.630146, + -0.131686, 0.063924, 0.473160, -0.187414, -0.690329, 0.698752, + -0.128513, 0.047860, 0.461757, -0.229530, -0.463454, 0.855861, + -0.318259, 0.221240, 0.541877, -0.473434, -0.327158, 0.817774, + -0.303247, 0.166623, 0.516317, -0.412549, -0.567248, 0.712729, + -0.283731, 0.122640, 0.483086, -0.356151, -0.703146, 0.615375, + -0.264215, 0.088629, 0.449859, -0.326456, -0.758446, 0.564043, + -0.249203, 0.063924, 0.424298, -0.362102, -0.690939, 0.625660, + -0.243198, 0.047860, 0.414076, -0.443678, -0.464125, 0.766625, + -0.444680, 0.221240, 0.444680, -0.668111, -0.327403, 0.668111, + -0.423705, 0.166623, 0.423705, -0.582171, -0.567522, 0.582171, + -0.396438, 0.122640, 0.396438, -0.502579, -0.703421, 0.502579, + -0.369171, 0.088629, 0.369171, -0.460646, -0.758660, 0.460646, + -0.348196, 0.063924, 0.348195, -0.510971, -0.691183, 0.510971, + -0.339804, 0.047860, 0.339804, -0.626209, -0.464370, 0.626209, + -0.541877, 0.221240, 0.318259, -0.817774, -0.327158, 0.473434, + -0.516317, 0.166623, 0.303247, -0.712729, -0.567248, 0.412549, + -0.483087, 0.122640, 0.283731, -0.615375, -0.703146, 0.356151, + -0.449859, 0.088629, 0.264215, -0.564043, -0.758446, 0.326456, + -0.424299, 0.063924, 0.249203, -0.625660, -0.690939, 0.362102, + -0.414076, 0.047860, 0.243198, -0.766625, -0.464125, 0.443678, + -0.604277, 0.221240, 0.168176, -0.912931, -0.326609, 0.244575, + -0.538718, 0.122640, 0.149931, -0.687399, -0.702445, 0.184393, + -0.501662, 0.088629, 0.139618, -0.630146, -0.757805, 0.169012, + -0.473160, 0.063924, 0.131685, -0.698752, -0.690329, 0.187414, + -0.461757, 0.047860, 0.128512, -0.855831, -0.463485, 0.229530, + -0.596769, 0.166623, 0.000000, -0.824396, -0.565996, 0.000000, + -0.558363, 0.122640, 0.000000, -0.712180, -0.701987, 0.000000, + -0.519957, 0.088629, 0.000000, -0.652974, -0.757347, 0.000000, + -0.490415, 0.063924, 0.000000, -0.724021, -0.689749, 0.000000, + -0.478597, 0.047860, 0.000000, -0.886410, -0.462874, 0.000000, + -0.575771, 0.166623, -0.160243, -0.795892, -0.566485, -0.213538, + -0.538718, 0.122640, -0.149931, -0.687399, -0.702445, -0.184393, + -0.501662, 0.088629, -0.139618, -0.630146, -0.757805, -0.169012, + -0.473160, 0.063924, -0.131685, -0.698752, -0.690329, -0.187414, + -0.461757, 0.047860, -0.128512, -0.855831, -0.463454, -0.229530, + -0.541877, 0.221240, -0.318259, -0.817774, -0.327158, -0.473434, + -0.516317, 0.166623, -0.303247, -0.712729, -0.567217, -0.412549, + -0.483087, 0.122640, -0.283731, -0.615375, -0.703146, -0.356151, + -0.449859, 0.088629, -0.264215, -0.564043, -0.758446, -0.326456, + -0.424299, 0.063924, -0.249203, -0.625660, -0.690939, -0.362102, + -0.414076, 0.047860, -0.243198, -0.766625, -0.464125, -0.443678, + -0.444680, 0.221240, -0.444680, -0.668111, -0.327403, -0.668111, + -0.423705, 0.166623, -0.423705, -0.582171, -0.567522, -0.582171, + -0.396438, 0.122640, -0.396438, -0.502579, -0.703421, -0.502579, + -0.369171, 0.088629, -0.369171, -0.460646, -0.758660, -0.460646, + -0.348196, 0.063924, -0.348195, -0.510971, -0.691183, -0.510971, + -0.339804, 0.047860, -0.339804, -0.626209, -0.464370, -0.626209, + -0.318259, 0.221240, -0.541877, -0.473434, -0.327158, -0.817774, + -0.303247, 0.166623, -0.516317, -0.412549, -0.567248, -0.712729, + -0.283731, 0.122640, -0.483086, -0.356151, -0.703146, -0.615375, + -0.264215, 0.088629, -0.449859, -0.326456, -0.758446, -0.564043, + -0.249203, 0.063924, -0.424298, -0.362102, -0.690939, -0.625660, + -0.243198, 0.047860, -0.414076, -0.443678, -0.464125, -0.766625, + -0.168177, 0.221240, -0.604276, -0.245003, -0.326609, -0.912839, + -0.160244, 0.166623, -0.575771, -0.213538, -0.566485, -0.795892, + -0.149931, 0.122640, -0.538718, -0.184393, -0.702445, -0.687399, + -0.139618, 0.088629, -0.501662, -0.169012, -0.757805, -0.630146, + -0.131686, 0.063924, -0.473160, -0.187414, -0.690329, -0.698752, + -0.128513, 0.047860, -0.461757, -0.229530, -0.463454, -0.855831, + -0.000000, 0.221240, -0.626311, 0.000000, -0.326243, -0.945250, + -0.000000, 0.166623, -0.596769, 0.000000, -0.565996, -0.824396, + -0.000000, 0.122640, -0.558363, 0.000000, -0.701987, -0.712180, + -0.000000, 0.088629, -0.519957, 0.000000, -0.757347, -0.652974, + -0.000000, 0.063924, -0.490415, 0.000000, -0.689749, -0.724021, + -0.000000, 0.047860, -0.478597, 0.000000, -0.462905, -0.886380, + 0.168176, 0.221240, -0.604276, 0.245003, -0.326609, -0.912839, + 0.160243, 0.166623, -0.575771, 0.213538, -0.566485, -0.795892, + 0.149931, 0.122640, -0.538718, 0.184393, -0.702445, -0.687399, + 0.139618, 0.088629, -0.501662, 0.169012, -0.757805, -0.630146, + 0.131685, 0.063924, -0.473160, 0.187445, -0.690329, -0.698752, + 0.128512, 0.047860, -0.461757, 0.229530, -0.463454, -0.855861, + 0.318259, 0.221240, -0.541877, 0.473434, -0.327158, -0.817774, + 0.303247, 0.166623, -0.516317, 0.412549, -0.567248, -0.712729, + 0.283731, 0.122640, -0.483086, 0.356151, -0.703146, -0.615375, + 0.264215, 0.088629, -0.449859, 0.326456, -0.758446, -0.564043, + 0.249203, 0.063924, -0.424298, 0.362102, -0.690939, -0.625660, + 0.243198, 0.047860, -0.414076, 0.443678, -0.464125, -0.766625, + 0.444680, 0.221240, -0.444680, 0.668111, -0.327403, -0.668111, + 0.423705, 0.166623, -0.423705, 0.582171, -0.567522, -0.582171, + 0.396438, 0.122640, -0.396438, 0.502579, -0.703421, -0.502579, + 0.369171, 0.088629, -0.369171, 0.460646, -0.758660, -0.460646, + 0.348195, 0.063924, -0.348195, 0.510971, -0.691183, -0.510971, + 0.339803, 0.047860, -0.339804, 0.626209, -0.464370, -0.626209, + 0.541877, 0.221240, -0.318259, 0.817774, -0.327158, -0.473434, + 0.516317, 0.166623, -0.303247, 0.712729, -0.567248, -0.412549, + 0.483086, 0.122640, -0.283731, 0.615375, -0.703146, -0.356151, + 0.449858, 0.088629, -0.264215, 0.564043, -0.758446, -0.326456, + 0.424299, 0.063924, -0.249203, 0.625660, -0.690939, -0.362102, + 0.414076, 0.047860, -0.243198, 0.766625, -0.464125, -0.443678, + 0.604276, 0.221240, -0.168176, 0.912839, -0.326609, -0.244942, + 0.575771, 0.166623, -0.160243, 0.795892, -0.566485, -0.213538, + 0.538718, 0.122640, -0.149931, 0.687399, -0.702445, -0.184393, + 0.501662, 0.088629, -0.139618, 0.630146, -0.757805, -0.169012, + 0.473160, 0.063924, -0.131685, 0.698752, -0.690329, -0.187414, + 0.461756, 0.047860, -0.128512, 0.855861, -0.463454, -0.229530, + 0.193322, 0.001883, 0.000000, 0.025666, -0.999664, 0.000000, + -0.000000, 0.000000, 0.000000, 0.000000, -1.000000, 0.000000, + 0.186520, 0.001883, -0.051911, 0.024781, -0.999664, -0.006623, + 0.326154, 0.007090, 0.000000, 0.068667, -0.997620, 0.000000, + 0.314679, 0.007090, -0.087579, 0.066256, -0.997620, -0.017731, + 0.409797, 0.014956, 0.000000, 0.157170, -0.987548, 0.000000, + 0.395378, 0.014956, -0.110038, 0.151677, -0.987579, -0.040620, + 0.455554, 0.024816, 0.000000, 0.373150, -0.927763, 0.000000, + 0.439524, 0.024816, -0.122325, 0.360118, -0.927885, -0.096469, + 0.474720, 0.036005, 0.000000, 0.789148, -0.614154, 0.000000, + 0.458017, 0.036005, -0.127471, 0.762017, -0.614399, -0.204505, + 0.167259, 0.001883, -0.098236, 0.022156, -0.999664, -0.012787, + 0.282184, 0.007090, -0.165735, 0.059236, -0.997650, -0.034272, + 0.354551, 0.014956, -0.208238, 0.135624, -0.987640, -0.078463, + 0.394137, 0.024816, -0.231489, 0.322153, -0.928129, -0.186377, + 0.410719, 0.036005, -0.241228, 0.682333, -0.615131, -0.394971, + 0.137258, 0.001883, -0.137259, 0.018067, -0.999664, -0.018067, + 0.231570, 0.007090, -0.231570, 0.048341, -0.997650, -0.048341, + 0.290957, 0.014956, -0.290957, 0.110691, -0.987640, -0.110691, + 0.323442, 0.024816, -0.323442, 0.262947, -0.928251, -0.262947, + 0.337050, 0.036005, -0.337050, 0.557329, -0.615375, -0.557329, + 0.098236, 0.001883, -0.167259, 0.012787, -0.999664, -0.022156, + 0.165735, 0.007090, -0.282185, 0.034272, -0.997650, -0.059236, + 0.208238, 0.014956, -0.354551, 0.078463, -0.987640, -0.135624, + 0.231489, 0.024816, -0.394137, 0.186377, -0.928129, -0.322153, + 0.241227, 0.036005, -0.410719, 0.394971, -0.615131, -0.682302, + 0.051910, 0.001883, -0.186520, 0.006623, -0.999664, -0.024781, + 0.087579, 0.007090, -0.314679, 0.017731, -0.997620, -0.066256, + 0.110038, 0.014956, -0.395378, 0.040620, -0.987579, -0.151677, + 0.122324, 0.024816, -0.439524, 0.096469, -0.927885, -0.360118, + 0.127471, 0.036005, -0.458017, 0.204474, -0.614399, -0.762017, + -0.000000, 0.001883, -0.193322, 0.000000, -0.999664, -0.025666, + -0.000000, 0.007090, -0.326154, 0.000000, -0.997620, -0.068667, + -0.000000, 0.014956, -0.409797, 0.000000, -0.987548, -0.157170, + -0.000000, 0.024816, -0.455554, 0.000000, -0.927763, -0.373150, + -0.000000, 0.036005, -0.474720, 0.000000, -0.614154, -0.789148, + -0.051911, 0.001883, -0.186520, -0.006623, -0.999664, -0.024781, + -0.087579, 0.007090, -0.314679, -0.017731, -0.997620, -0.066256, + -0.110038, 0.014956, -0.395378, -0.040620, -0.987579, -0.151677, + -0.122325, 0.024816, -0.439524, -0.096469, -0.927885, -0.360118, + -0.127471, 0.036005, -0.458017, -0.204474, -0.614399, -0.762017, + -0.098237, 0.001883, -0.167259, -0.012787, -0.999664, -0.022156, + -0.165735, 0.007090, -0.282185, -0.034272, -0.997650, -0.059236, + -0.208239, 0.014956, -0.354551, -0.078463, -0.987640, -0.135624, + -0.231489, 0.024816, -0.394137, -0.186377, -0.928129, -0.322153, + -0.241228, 0.036005, -0.410719, -0.394971, -0.615131, -0.682333, + -0.137259, 0.001883, -0.137259, -0.018067, -0.999664, -0.018067, + -0.231570, 0.007090, -0.231570, -0.048341, -0.997650, -0.048341, + -0.290957, 0.014956, -0.290957, -0.110691, -0.987640, -0.110691, + -0.323442, 0.024816, -0.323442, -0.262947, -0.928251, -0.262947, + -0.337051, 0.036005, -0.337050, -0.557329, -0.615375, -0.557329, + -0.167259, 0.001883, -0.098236, -0.022156, -0.999664, -0.012787, + -0.282184, 0.007090, -0.165735, -0.059236, -0.997650, -0.034272, + -0.354551, 0.014956, -0.208238, -0.135624, -0.987640, -0.078463, + -0.394137, 0.024816, -0.231489, -0.322153, -0.928129, -0.186377, + -0.410719, 0.036005, -0.241228, -0.682302, -0.615131, -0.394971, + -0.186520, 0.001883, -0.051911, -0.024781, -0.999664, -0.006623, + -0.314679, 0.007090, -0.087579, -0.066256, -0.997620, -0.017731, + -0.395378, 0.014956, -0.110038, -0.151677, -0.987579, -0.040620, + -0.439524, 0.024816, -0.122325, -0.360118, -0.927885, -0.096469, + -0.458017, 0.036005, -0.127471, -0.762017, -0.614399, -0.204474, + -0.193323, 0.001883, 0.000000, -0.025666, -0.999664, 0.000000, + -0.326155, 0.007090, 0.000000, -0.068667, -0.997620, 0.000000, + -0.409797, 0.014956, 0.000000, -0.157170, -0.987548, 0.000000, + -0.455554, 0.024816, 0.000000, -0.373150, -0.927763, 0.000000, + -0.474721, 0.036005, 0.000000, -0.789148, -0.614154, 0.000000, + -0.186520, 0.001883, 0.051911, -0.024781, -0.999664, 0.006623, + -0.314679, 0.007090, 0.087579, -0.066256, -0.997620, 0.017731, + -0.395378, 0.014956, 0.110038, -0.151677, -0.987579, 0.040620, + -0.439524, 0.024816, 0.122325, -0.360149, -0.927885, 0.096469, + -0.458017, 0.036005, 0.127471, -0.762017, -0.614399, 0.204474, + -0.167259, 0.001883, 0.098236, -0.022156, -0.999664, 0.012787, + -0.282184, 0.007090, 0.165735, -0.059236, -0.997650, 0.034272, + -0.354551, 0.014956, 0.208238, -0.135624, -0.987640, 0.078463, + -0.394137, 0.024816, 0.231489, -0.322153, -0.928129, 0.186377, + -0.410719, 0.036005, 0.241228, -0.682333, -0.615131, 0.394971, + -0.137259, 0.001883, 0.137259, -0.018067, -0.999664, 0.018067, + -0.231570, 0.007090, 0.231570, -0.048341, -0.997650, 0.048341, + -0.290957, 0.014956, 0.290957, -0.110691, -0.987640, 0.110691, + -0.323442, 0.024816, 0.323442, -0.262947, -0.928251, 0.262947, + -0.337051, 0.036005, 0.337050, -0.557329, -0.615375, 0.557329, + -0.098237, 0.001883, 0.167259, -0.012787, -0.999664, 0.022156, + -0.165735, 0.007090, 0.282185, -0.034272, -0.997650, 0.059236, + -0.208239, 0.014956, 0.354551, -0.078463, -0.987640, 0.135624, + -0.231489, 0.024816, 0.394137, -0.186377, -0.928129, 0.322153, + -0.241228, 0.036005, 0.410719, -0.394971, -0.615131, 0.682302, + -0.051911, 0.001883, 0.186520, -0.006623, -0.999664, 0.024781, + -0.087579, 0.007090, 0.314679, -0.017731, -0.997620, 0.066256, + -0.110038, 0.014956, 0.395378, -0.040620, -0.987579, 0.151677, + -0.122325, 0.024816, 0.439524, -0.096469, -0.927885, 0.360118, + -0.127471, 0.036005, 0.458017, -0.204474, -0.614399, 0.762017, + -0.000000, 0.001883, 0.193322, 0.000000, -0.999664, 0.025666, + -0.000000, 0.007090, 0.326154, 0.000000, -0.997620, 0.068667, + -0.000000, 0.014956, 0.409797, 0.000000, -0.987548, 0.157170, + -0.000000, 0.024816, 0.455554, 0.000000, -0.927763, 0.373150, + -0.000000, 0.036005, 0.474720, 0.000000, -0.614154, 0.789148, + 0.051910, 0.001883, 0.186520, 0.006623, -0.999664, 0.024781, + 0.087579, 0.007090, 0.314679, 0.017731, -0.997620, 0.066256, + 0.110038, 0.014956, 0.395378, 0.040620, -0.987579, 0.151677, + 0.122324, 0.024816, 0.439524, 0.096469, -0.927885, 0.360149, + 0.127471, 0.036005, 0.458017, 0.204474, -0.614399, 0.762017, + 0.098236, 0.001883, 0.167259, 0.012787, -0.999664, 0.022156, + 0.165735, 0.007090, 0.282185, 0.034272, -0.997650, 0.059236, + 0.208238, 0.014956, 0.354551, 0.078463, -0.987640, 0.135624, + 0.231489, 0.024816, 0.394137, 0.186377, -0.928129, 0.322153, + 0.241227, 0.036005, 0.410719, 0.394971, -0.615131, 0.682333, + 0.137258, 0.001883, 0.137259, 0.018067, -0.999664, 0.018067, + 0.231570, 0.007090, 0.231570, 0.048341, -0.997650, 0.048341, + 0.290957, 0.014956, 0.290957, 0.110691, -0.987640, 0.110691, + 0.323442, 0.024816, 0.323442, 0.262947, -0.928251, 0.262947, + 0.337050, 0.036005, 0.337050, 0.557329, -0.615375, 0.557329, + 0.167259, 0.001883, 0.098236, 0.022156, -0.999664, 0.012787, + 0.282184, 0.007090, 0.165735, 0.059236, -0.997650, 0.034272, + 0.354551, 0.014956, 0.208238, 0.135624, -0.987640, 0.078463, + 0.394137, 0.024816, 0.231489, 0.322153, -0.928129, 0.186346, + 0.410719, 0.036005, 0.241228, 0.682302, -0.615131, 0.394971, + 0.186520, 0.001883, 0.051911, 0.024781, -0.999664, 0.006623, + 0.314679, 0.007090, 0.087579, 0.066256, -0.997620, 0.017731, + 0.395378, 0.014956, 0.110038, 0.151677, -0.987579, 0.040620, + 0.439524, 0.024816, 0.122325, 0.360118, -0.927885, 0.096469, + 0.458017, 0.036005, 0.127471, 0.762017, -0.614399, 0.204474, + -0.230198, 0.750009, 0.391939, 0.464827, -0.373638, -0.802667, + -0.321639, 0.750009, 0.321639, 0.655812, -0.373882, -0.655812, + -0.000000, 0.750009, -0.453012, 0.000000, -0.372539, 0.927976, + 0.121642, 0.750009, -0.437072, -0.240699, -0.373028, 0.896023, + 0.391939, 0.750009, -0.230197, -0.802667, -0.373608, 0.464827, + -0.437073, 0.750009, 0.121642, 0.896023, -0.372997, -0.240699, + 0.453011, 0.750009, 0.000000, -0.927976, -0.372539, 0.000000, + -0.453012, 0.750009, 0.000000, 0.927976, -0.372539, 0.000000, + 0.063813, 0.861474, 0.000000, 0.717063, 0.696982, 0.000000, + 0.054654, 0.888729, 0.000000, 0.990387, -0.138310, -0.000061, + 0.052734, 0.888729, 0.014691, 0.956694, -0.138737, 0.255806, + 0.061568, 0.861474, 0.017135, 0.692129, 0.697470, 0.185583, + 0.047296, 0.888729, 0.027792, 0.857326, -0.139317, 0.495529, + 0.055210, 0.861474, 0.032427, 0.620045, 0.697653, 0.358837, + 0.038821, 0.888729, 0.038821, 0.700125, -0.139531, 0.700217, + 0.045307, 0.861474, 0.045307, 0.506516, 0.697714, 0.506546, + 0.027792, 0.888729, 0.047296, 0.495468, -0.139286, 0.857356, + 0.032426, 0.861474, 0.055210, 0.358776, 0.697714, 0.620014, + 0.014691, 0.888729, 0.052735, 0.255867, -0.138737, 0.956694, + 0.017135, 0.861474, 0.061568, 0.185583, 0.697531, 0.692068, + -0.000000, 0.888729, 0.054654, 0.000061, -0.138310, 0.990387, + -0.000000, 0.861474, 0.063813, 0.000000, 0.696982, 0.717063, + -0.014691, 0.888729, 0.052735, -0.255806, -0.138737, 0.956694, + -0.017135, 0.861474, 0.061568, -0.185583, 0.697470, 0.692129, + -0.027793, 0.888729, 0.047296, -0.495529, -0.139317, 0.857326, + -0.032427, 0.861474, 0.055210, -0.358837, 0.697653, 0.620045, + -0.038821, 0.888729, 0.038821, -0.700217, -0.139531, 0.700156, + -0.045307, 0.861474, 0.045307, -0.506546, 0.697714, 0.506516, + -0.047296, 0.888729, 0.027792, -0.857356, -0.139286, 0.495468, + -0.055210, 0.861474, 0.032427, -0.620014, 0.697714, 0.358776, + -0.052735, 0.888729, 0.014691, -0.956694, -0.138737, 0.255867, + -0.061568, 0.861474, 0.017135, -0.692068, 0.697531, 0.185583, + -0.054655, 0.888729, 0.000000, -0.990387, -0.138310, 0.000061, + -0.063813, 0.861474, 0.000000, -0.717063, 0.696982, 0.000000, + -0.052735, 0.888729, -0.014691, -0.956694, -0.138737, -0.255806, + -0.061568, 0.861474, -0.017135, -0.692129, 0.697470, -0.185583, + -0.047296, 0.888729, -0.027792, -0.857326, -0.139317, -0.495529, + -0.055210, 0.861474, -0.032427, -0.620045, 0.697653, -0.358837, + -0.038821, 0.888729, -0.038821, -0.700125, -0.139531, -0.700217, + -0.045307, 0.861474, -0.045307, -0.506516, 0.697714, -0.506546, + -0.027793, 0.888729, -0.047296, -0.495468, -0.139286, -0.857356, + -0.032427, 0.861474, -0.055210, -0.358776, 0.697714, -0.620014, + -0.014691, 0.888729, -0.052735, -0.255867, -0.138737, -0.956694, + -0.017135, 0.861474, -0.061568, -0.185583, 0.697531, -0.692068, + -0.000000, 0.888729, -0.054654, -0.000061, -0.138310, -0.990387, + -0.000000, 0.861474, -0.063813, 0.000000, 0.696982, -0.717063, + 0.014691, 0.888729, -0.052735, 0.255806, -0.138737, -0.956694, + 0.017135, 0.861474, -0.061568, 0.185583, 0.697470, -0.692129, + 0.027792, 0.888729, -0.047296, 0.495529, -0.139317, -0.857326, + 0.032426, 0.861474, -0.055210, 0.358837, 0.697653, -0.620045, + 0.038821, 0.888729, -0.038821, 0.700217, -0.139531, -0.700156, + 0.045307, 0.861474, -0.045307, 0.506546, 0.697714, -0.506516, + 0.047296, 0.888729, -0.027792, 0.857356, -0.139286, -0.495468, + 0.055210, 0.861474, -0.032427, 0.620014, 0.697714, -0.358776, + 0.052734, 0.888729, -0.014691, 0.956694, -0.138737, -0.255867, + 0.061568, 0.861474, -0.017135, 0.692068, 0.697531, -0.185583, + 0.111968, 0.841089, 0.000000, 0.292520, 0.956236, 0.000000, + 0.108028, 0.841089, 0.030065, 0.282083, 0.956389, 0.075686, + 0.183167, 0.826023, 0.000000, 0.177953, 0.984008, 0.000000, + 0.176722, 0.826023, 0.049184, 0.171606, 0.984069, 0.046022, + 0.263228, 0.813615, 0.000000, 0.158879, 0.987274, 0.000000, + 0.253966, 0.813615, 0.070682, 0.153264, 0.987304, 0.041078, + 0.337972, 0.801206, 0.000000, 0.217719, 0.975982, 0.000000, + 0.326081, 0.801206, 0.090752, 0.210059, 0.976043, 0.056276, + 0.393218, 0.786140, 0.000000, 0.504715, 0.863277, 0.000000, + 0.379380, 0.786140, 0.105586, 0.487197, 0.863460, 0.130558, + 0.414784, 0.765755, 0.000000, 0.693258, 0.720664, 0.000000, + 0.400190, 0.765755, 0.111377, 0.669057, 0.721183, 0.179449, + 0.096873, 0.841089, 0.056896, 0.252388, 0.956511, 0.146092, + 0.158473, 0.826023, 0.093076, 0.153508, 0.984130, 0.088839, + 0.227741, 0.813615, 0.133759, 0.137059, 0.987365, 0.079318, + 0.292408, 0.801206, 0.171740, 0.187872, 0.976135, 0.108676, + 0.340206, 0.786140, 0.199813, 0.435926, 0.863887, 0.252205, + 0.358865, 0.765755, 0.210772, 0.598956, 0.721824, 0.346660, + 0.079497, 0.841089, 0.079497, 0.206091, 0.956572, 0.206091, + 0.130048, 0.826023, 0.130048, 0.125340, 0.984161, 0.125340, + 0.186892, 0.813615, 0.186892, 0.111911, 0.987396, 0.111911, + 0.239960, 0.801206, 0.239960, 0.153356, 0.976196, 0.153356, + 0.279184, 0.786140, 0.279184, 0.355907, 0.864071, 0.355907, + 0.294497, 0.765755, 0.294497, 0.489151, 0.722098, 0.489151, + 0.056896, 0.841089, 0.096873, 0.146092, 0.956511, 0.252388, + 0.093076, 0.826023, 0.158473, 0.088839, 0.984130, 0.153508, + 0.133759, 0.813615, 0.227741, 0.079318, 0.987365, 0.137059, + 0.171740, 0.801206, 0.292408, 0.108676, 0.976135, 0.187872, + 0.199813, 0.786140, 0.340206, 0.252205, 0.863887, 0.435926, + 0.210772, 0.765755, 0.358865, 0.346660, 0.721824, 0.598956, + 0.030065, 0.841089, 0.108029, 0.075686, 0.956389, 0.282083, + 0.049184, 0.826023, 0.176722, 0.046022, 0.984069, 0.171606, + 0.070682, 0.813615, 0.253966, 0.041078, 0.987304, 0.153264, + 0.090752, 0.801206, 0.326081, 0.056276, 0.976043, 0.210059, + 0.105586, 0.786140, 0.379381, 0.130558, 0.863460, 0.487197, + 0.111377, 0.765755, 0.400190, 0.179449, 0.721183, 0.669057, + -0.000000, 0.841089, 0.111968, 0.000000, 0.956236, 0.292520, + -0.000000, 0.826023, 0.183167, 0.000000, 0.984008, 0.177953, + -0.000000, 0.813615, 0.263228, 0.000000, 0.987274, 0.158879, + -0.000000, 0.801206, 0.337972, 0.000000, 0.975982, 0.217719, + -0.000000, 0.786140, 0.393218, 0.000000, 0.863277, 0.504715, + -0.000000, 0.765755, 0.414784, 0.000000, 0.720664, 0.693258, + -0.030066, 0.841089, 0.108029, -0.075686, 0.956389, 0.282083, + -0.049184, 0.826023, 0.176722, -0.046022, 0.984069, 0.171606, + -0.070682, 0.813615, 0.253966, -0.041078, 0.987304, 0.153264, + -0.090752, 0.801206, 0.326081, -0.056276, 0.976043, 0.210059, + -0.105586, 0.786140, 0.379381, -0.130558, 0.863460, 0.487197, + -0.111377, 0.765755, 0.400190, -0.179449, 0.721183, 0.669057, + -0.056896, 0.841089, 0.096873, -0.146092, 0.956511, 0.252388, + -0.093076, 0.826023, 0.158473, -0.088839, 0.984130, 0.153508, + -0.133759, 0.813615, 0.227741, -0.079318, 0.987365, 0.137059, + -0.171740, 0.801206, 0.292408, -0.108676, 0.976135, 0.187872, + -0.199813, 0.786140, 0.340206, -0.252205, 0.863887, 0.435926, + -0.210772, 0.765755, 0.358865, -0.346660, 0.721824, 0.598956, + -0.079497, 0.841089, 0.079497, -0.206091, 0.956572, 0.206091, + -0.130049, 0.826023, 0.130048, -0.125340, 0.984161, 0.125340, + -0.186892, 0.813615, 0.186892, -0.111911, 0.987396, 0.111911, + -0.239960, 0.801206, 0.239960, -0.153356, 0.976196, 0.153356, + -0.279185, 0.786140, 0.279184, -0.355907, 0.864071, 0.355907, + -0.294497, 0.765755, 0.294497, -0.489151, 0.722098, 0.489151, + -0.096873, 0.841089, 0.056896, -0.252388, 0.956511, 0.146092, + -0.158473, 0.826023, 0.093076, -0.153508, 0.984130, 0.088839, + -0.227741, 0.813615, 0.133759, -0.137059, 0.987365, 0.079318, + -0.292408, 0.801206, 0.171740, -0.187872, 0.976135, 0.108676, + -0.340206, 0.786140, 0.199813, -0.435926, 0.863887, 0.252205, + -0.358865, 0.765755, 0.210772, -0.598956, 0.721824, 0.346660, + -0.108029, 0.841089, 0.030065, -0.282083, 0.956389, 0.075686, + -0.176722, 0.826023, 0.049184, -0.171606, 0.984069, 0.046022, + -0.253966, 0.813615, 0.070682, -0.153264, 0.987304, 0.041078, + -0.326081, 0.801206, 0.090752, -0.210059, 0.976043, 0.056276, + -0.379381, 0.786140, 0.105586, -0.487197, 0.863460, 0.130558, + -0.400190, 0.765755, 0.111377, -0.669057, 0.721183, 0.179449, + -0.111968, 0.841089, 0.000000, -0.292520, 0.956236, 0.000000, + -0.183167, 0.826023, 0.000000, -0.177953, 0.984008, 0.000000, + -0.263228, 0.813615, 0.000000, -0.158879, 0.987274, 0.000000, + -0.337972, 0.801206, 0.000000, -0.217719, 0.975982, 0.000000, + -0.393219, 0.786140, 0.000000, -0.504715, 0.863277, 0.000000, + -0.414784, 0.765755, 0.000000, -0.693258, 0.720664, 0.000000, + -0.108029, 0.841089, -0.030065, -0.282083, 0.956389, -0.075686, + -0.176722, 0.826023, -0.049184, -0.171606, 0.984069, -0.046022, + -0.253966, 0.813615, -0.070682, -0.153264, 0.987304, -0.041078, + -0.326081, 0.801206, -0.090752, -0.210059, 0.976043, -0.056276, + -0.379381, 0.786140, -0.105586, -0.487197, 0.863460, -0.130558, + -0.400190, 0.765755, -0.111377, -0.669057, 0.721183, -0.179449, + -0.096873, 0.841089, -0.056896, -0.252388, 0.956511, -0.146092, + -0.158473, 0.826023, -0.093076, -0.153508, 0.984130, -0.088839, + -0.227741, 0.813615, -0.133759, -0.137059, 0.987365, -0.079318, + -0.292408, 0.801206, -0.171740, -0.187872, 0.976135, -0.108676, + -0.340206, 0.786140, -0.199813, -0.435926, 0.863887, -0.252205, + -0.358865, 0.765755, -0.210772, -0.598956, 0.721824, -0.346660, + -0.079497, 0.841089, -0.079497, -0.206091, 0.956572, -0.206091, + -0.130049, 0.826023, -0.130048, -0.125340, 0.984161, -0.125340, + -0.186892, 0.813615, -0.186892, -0.111911, 0.987396, -0.111911, + -0.239960, 0.801206, -0.239960, -0.153356, 0.976196, -0.153356, + -0.279185, 0.786140, -0.279184, -0.355907, 0.864071, -0.355907, + -0.294497, 0.765755, -0.294497, -0.489151, 0.722098, -0.489151, + -0.056896, 0.841089, -0.096873, -0.146092, 0.956511, -0.252388, + -0.093076, 0.826023, -0.158473, -0.088839, 0.984130, -0.153508, + -0.133759, 0.813615, -0.227741, -0.079318, 0.987365, -0.137059, + -0.171740, 0.801206, -0.292408, -0.108676, 0.976135, -0.187872, + -0.199813, 0.786140, -0.340206, -0.252205, 0.863887, -0.435926, + -0.210772, 0.765755, -0.358865, -0.346660, 0.721824, -0.598956, + -0.030066, 0.841089, -0.108029, -0.075686, 0.956389, -0.282083, + -0.049184, 0.826023, -0.176722, -0.046022, 0.984069, -0.171606, + -0.070682, 0.813615, -0.253966, -0.041078, 0.987304, -0.153264, + -0.090752, 0.801206, -0.326081, -0.056276, 0.976043, -0.210059, + -0.105586, 0.786140, -0.379381, -0.130558, 0.863460, -0.487197, + -0.111377, 0.765755, -0.400190, -0.179449, 0.721183, -0.669057, + -0.000000, 0.841089, -0.111968, 0.000000, 0.956236, -0.292520, + -0.000000, 0.826023, -0.183167, 0.000000, 0.984008, -0.177953, + -0.000000, 0.813615, -0.263228, 0.000000, 0.987274, -0.158879, + -0.000000, 0.801206, -0.337972, 0.000000, 0.975982, -0.217719, + -0.000000, 0.786140, -0.393218, 0.000000, 0.863277, -0.504715, + -0.000000, 0.765755, -0.414784, 0.000000, 0.720664, -0.693258, + 0.030065, 0.841089, -0.108029, 0.075686, 0.956389, -0.282083, + 0.049184, 0.826023, -0.176722, 0.046022, 0.984069, -0.171606, + 0.070682, 0.813615, -0.253966, 0.041078, 0.987304, -0.153264, + 0.090752, 0.801206, -0.326081, 0.056276, 0.976043, -0.210059, + 0.105586, 0.786140, -0.379381, 0.130558, 0.863460, -0.487197, + 0.111377, 0.765755, -0.400190, 0.179449, 0.721183, -0.669057, + 0.056896, 0.841089, -0.096873, 0.146092, 0.956511, -0.252388, + 0.093076, 0.826023, -0.158473, 0.088839, 0.984130, -0.153508, + 0.133759, 0.813615, -0.227741, 0.079318, 0.987365, -0.137059, + 0.171740, 0.801206, -0.292408, 0.108676, 0.976135, -0.187872, + 0.199813, 0.786140, -0.340206, 0.252205, 0.863887, -0.435926, + 0.210772, 0.765755, -0.358865, 0.346660, 0.721824, -0.598956, + 0.079497, 0.841089, -0.079497, 0.206091, 0.956572, -0.206091, + 0.130048, 0.826023, -0.130048, 0.125340, 0.984161, -0.125340, + 0.186892, 0.813615, -0.186892, 0.111911, 0.987396, -0.111911, + 0.239960, 0.801206, -0.239960, 0.153356, 0.976196, -0.153356, + 0.279184, 0.786140, -0.279184, 0.355907, 0.864071, -0.355907, + 0.294497, 0.765755, -0.294497, 0.489151, 0.722098, -0.489151, + 0.096873, 0.841089, -0.056896, 0.252388, 0.956511, -0.146092, + 0.158473, 0.826023, -0.093076, 0.153508, 0.984130, -0.088839, + 0.227741, 0.813615, -0.133759, 0.137059, 0.987365, -0.079318, + 0.292408, 0.801206, -0.171740, 0.187872, 0.976135, -0.108676, + 0.340206, 0.786140, -0.199813, 0.435926, 0.863887, -0.252205, + 0.358865, 0.765755, -0.210772, 0.598956, 0.721824, -0.346660, + 0.108028, 0.841089, -0.030065, 0.282083, 0.956389, -0.075686, + 0.176722, 0.826023, -0.049184, 0.171606, 0.984069, -0.046022, + 0.253966, 0.813615, -0.070682, 0.153264, 0.987304, -0.041078, + 0.326081, 0.801206, -0.090752, 0.210059, 0.976043, -0.056276, + 0.379380, 0.786140, -0.105586, 0.487197, 0.863460, -0.130558, + 0.400190, 0.765755, -0.111377, 0.669057, 0.721183, -0.179449, + 0.088924, 0.997741, 0.000000, 0.363842, 0.931455, 0.000000, + -0.000000, 1.005054, 0.000000, 0.000000, 1.000000, 0.000000, + 0.085811, 0.997741, 0.023955, 0.351451, 0.931516, 0.093509, + 0.115809, 0.978466, 0.000000, 0.968261, 0.249916, 0.000000, + 0.111754, 0.978466, 0.031195, 0.935423, 0.249763, 0.250130, + 0.103696, 0.951211, 0.000000, 0.842860, -0.538102, 0.000000, + 0.100064, 0.951211, 0.027927, 0.813959, -0.538713, 0.217292, + 0.075630, 0.919969, 0.000000, 0.786767, -0.617206, -0.000031, + 0.072979, 0.919969, 0.020357, 0.759514, -0.618000, 0.202857, + 0.076985, 0.997741, 0.045285, 0.314432, 0.931791, 0.181280, + 0.100259, 0.978466, 0.058974, 0.838404, 0.249855, 0.484359, + 0.089769, 0.951211, 0.052799, 0.729026, -0.539720, 0.420911, + 0.065466, 0.919969, 0.038494, 0.680013, -0.619068, 0.392743, + 0.063219, 0.997741, 0.063219, 0.256386, 0.931913, 0.256417, + 0.082330, 0.978466, 0.082330, 0.684652, 0.249886, 0.684652, + 0.073714, 0.951211, 0.073714, 0.595050, -0.540147, 0.595050, + 0.053751, 0.919969, 0.053751, 0.555010, -0.619526, 0.555040, + 0.045285, 0.997741, 0.076986, 0.181280, 0.931791, 0.314432, + 0.058974, 0.978466, 0.100259, 0.484359, 0.249825, 0.838404, + 0.052799, 0.951211, 0.089769, 0.420881, -0.539720, 0.729026, + 0.038494, 0.919969, 0.065466, 0.392712, -0.619098, 0.680013, + 0.023955, 0.997741, 0.085811, 0.093509, 0.931516, 0.351451, + 0.031195, 0.978466, 0.111754, 0.250160, 0.249763, 0.935423, + 0.027927, 0.951211, 0.100064, 0.217322, -0.538713, 0.813959, + 0.020357, 0.919969, 0.072979, 0.202887, -0.618030, 0.759484, + -0.000000, 0.997741, 0.088925, 0.000000, 0.931455, 0.363842, + -0.000000, 0.978466, 0.115809, 0.000000, 0.249916, 0.968261, + -0.000000, 0.951211, 0.103696, 0.000000, -0.538102, 0.842860, + -0.000000, 0.919969, 0.075630, 0.000031, -0.617206, 0.786767, + -0.023955, 0.997741, 0.085811, -0.093509, 0.931516, 0.351451, + -0.031195, 0.978466, 0.111754, -0.250130, 0.249763, 0.935423, + -0.027927, 0.951211, 0.100064, -0.217292, -0.538682, 0.813959, + -0.020357, 0.919969, 0.072979, -0.202857, -0.618000, 0.759514, + -0.045285, 0.997741, 0.076986, -0.181280, 0.931791, 0.314432, + -0.058974, 0.978466, 0.100259, -0.484359, 0.249855, 0.838404, + -0.052799, 0.951211, 0.089769, -0.420911, -0.539720, 0.729026, + -0.038494, 0.919969, 0.065466, -0.392743, -0.619068, 0.680013, + -0.063220, 0.997741, 0.063219, -0.256417, 0.931913, 0.256386, + -0.082331, 0.978466, 0.082330, -0.684652, 0.249886, 0.684652, + -0.073714, 0.951211, 0.073714, -0.595050, -0.540147, 0.595050, + -0.053751, 0.919969, 0.053751, -0.555040, -0.619526, 0.555010, + -0.076986, 0.997741, 0.045285, -0.314432, 0.931791, 0.181280, + -0.100259, 0.978466, 0.058974, -0.838404, 0.249825, 0.484359, + -0.089770, 0.951211, 0.052799, -0.729026, -0.539720, 0.420881, + -0.065466, 0.919969, 0.038494, -0.680013, -0.619098, 0.392712, + -0.085811, 0.997741, 0.023955, -0.351451, 0.931516, 0.093509, + -0.111754, 0.978466, 0.031195, -0.935423, 0.249763, 0.250160, + -0.100064, 0.951211, 0.027927, -0.813959, -0.538713, 0.217292, + -0.072979, 0.919969, 0.020357, -0.759484, -0.618030, 0.202887, + -0.088925, 0.997741, 0.000000, -0.363842, 0.931455, 0.000000, + -0.115809, 0.978466, 0.000000, -0.968261, 0.249916, 0.000000, + -0.103696, 0.951211, 0.000000, -0.842860, -0.538102, 0.000000, + -0.075630, 0.919969, 0.000000, -0.786767, -0.617206, 0.000031, + -0.085811, 0.997741, -0.023955, -0.351451, 0.931516, -0.093509, + -0.111754, 0.978466, -0.031195, -0.935423, 0.249763, -0.250130, + -0.100064, 0.951211, -0.027927, -0.813959, -0.538713, -0.217292, + -0.072979, 0.919969, -0.020357, -0.759514, -0.618000, -0.202857, + -0.076986, 0.997741, -0.045285, -0.314432, 0.931791, -0.181280, + -0.100259, 0.978466, -0.058974, -0.838404, 0.249855, -0.484359, + -0.089770, 0.951211, -0.052799, -0.729026, -0.539720, -0.420911, + -0.065466, 0.919969, -0.038494, -0.680013, -0.619068, -0.392743, + -0.063220, 0.997741, -0.063219, -0.256386, 0.931913, -0.256417, + -0.082331, 0.978466, -0.082330, -0.684652, 0.249886, -0.684652, + -0.073714, 0.951211, -0.073714, -0.595050, -0.540147, -0.595050, + -0.053751, 0.919969, -0.053751, -0.555010, -0.619526, -0.555040, + -0.045285, 0.997741, -0.076986, -0.181280, 0.931791, -0.314432, + -0.058974, 0.978466, -0.100259, -0.484359, 0.249825, -0.838404, + -0.052799, 0.951211, -0.089769, -0.420881, -0.539720, -0.729026, + -0.038494, 0.919969, -0.065466, -0.392712, -0.619098, -0.680013, + -0.023955, 0.997741, -0.085811, -0.093509, 0.931516, -0.351451, + -0.031195, 0.978466, -0.111754, -0.250160, 0.249763, -0.935423, + -0.027927, 0.951211, -0.100064, -0.217322, -0.538713, -0.813959, + -0.020357, 0.919969, -0.072979, -0.202887, -0.618030, -0.759484, + -0.000000, 0.997741, -0.088925, 0.000000, 0.931455, -0.363842, + -0.000000, 0.978466, -0.115809, 0.000000, 0.249916, -0.968261, + -0.000000, 0.951211, -0.103696, 0.000000, -0.538102, -0.842860, + -0.000000, 0.919969, -0.075630, -0.000031, -0.617206, -0.786767, + 0.023955, 0.997741, -0.085811, 0.093509, 0.931516, -0.351451, + 0.031195, 0.978466, -0.111754, 0.250130, 0.249763, -0.935423, + 0.027927, 0.951211, -0.100064, 0.217292, -0.538682, -0.813959, + 0.020357, 0.919969, -0.072979, 0.202857, -0.618000, -0.759514, + 0.045285, 0.997741, -0.076986, 0.181280, 0.931791, -0.314432, + 0.058974, 0.978466, -0.100259, 0.484359, 0.249855, -0.838404, + 0.052799, 0.951211, -0.089769, 0.420911, -0.539720, -0.729026, + 0.038494, 0.919969, -0.065466, 0.392743, -0.619068, -0.680013, + 0.063219, 0.997741, -0.063219, 0.256417, 0.931913, -0.256386, + 0.082330, 0.978466, -0.082330, 0.684652, 0.249886, -0.684652, + 0.073714, 0.951211, -0.073714, 0.595050, -0.540147, -0.595050, + 0.053751, 0.919969, -0.053751, 0.555040, -0.619526, -0.555010, + 0.076985, 0.997741, -0.045285, 0.314432, 0.931791, -0.181280, + 0.100259, 0.978466, -0.058974, 0.838404, 0.249825, -0.484359, + 0.089769, 0.951211, -0.052799, 0.729026, -0.539720, -0.420881, + 0.065466, 0.919969, -0.038494, 0.680013, -0.619098, -0.392712, + 0.085811, 0.997741, -0.023955, 0.351451, 0.931516, -0.093509, + 0.111754, 0.978466, -0.031195, 0.935423, 0.249763, -0.250160, + 0.100064, 0.951211, -0.027927, 0.813959, -0.538713, -0.217292, + 0.072979, 0.919969, -0.020357, 0.759484, -0.618030, -0.202887, + -0.414952, 0.750806, -0.115486, -0.354198, 0.930296, -0.095187, + 0.115486, 0.750806, 0.414952, 0.095187, 0.930296, 0.354198, + 0.414952, 0.750806, 0.115486, 0.354198, 0.930296, 0.095187, + 0.218547, 0.750806, 0.372103, 0.183721, 0.930387, 0.317179, + -0.218547, 0.750806, -0.372103, -0.183721, 0.930387, -0.317179, + -0.430085, 0.750806, 0.000000, -0.367443, 0.930021, 0.000000, + -0.218547, 0.750806, 0.372103, -0.183721, 0.930387, 0.317179, + 0.430085, 0.750806, 0.000000, 0.367412, 0.930021, 0.000000, + -0.372103, 0.750806, 0.218547, -0.317179, 0.930387, 0.183721, + -0.115486, 0.750806, -0.414952, -0.095187, 0.930296, -0.354198, + -0.000000, 0.750806, -0.430085, 0.000000, 0.930021, -0.367443, + -0.414952, 0.750806, 0.115486, -0.354198, 0.930296, 0.095187, + 0.115486, 0.750806, -0.414952, 0.095187, 0.930296, -0.354198, + -0.000000, 0.750806, 0.430085, 0.000000, 0.930021, 0.367443, + -0.372103, 0.750806, -0.218547, -0.317179, 0.930387, -0.183721, + 0.372103, 0.750806, -0.218547, 0.317179, 0.930387, -0.183721, + -0.115486, 0.750806, 0.414952, -0.095187, 0.930296, 0.354198, + 0.372103, 0.750806, 0.218547, 0.317179, 0.930387, 0.183721, + 0.414952, 0.750806, -0.115486, 0.354198, 0.930296, -0.095187, + 0.218547, 0.750806, -0.372103, 0.183721, 0.930387, -0.317179, + -0.453012, 0.750009, 0.000000, -0.034730, 0.999390, 0.000000, + 0.437073, 0.750009, -0.121642, 0.033479, 0.999390, -0.009003, + 0.453011, 0.750009, 0.000000, 0.034730, 0.999390, 0.000000, + 0.121642, 0.750009, -0.437072, 0.009003, 0.999390, -0.033479, + -0.000000, 0.750009, -0.453012, 0.000000, 0.999390, -0.034730, + -0.305360, 0.750806, 0.305360, -0.259163, 0.930387, 0.259163, + -0.230198, 0.750009, 0.391939, -0.017335, 0.999390, 0.029939, + 0.600960, 0.444810, 0.085753, 0.947539, 0.295083, 0.122654, + -0.501255, 0.717792, 0.000000, -0.004486, 0.999969, 0.000000, + -0.498530, 0.712498, 0.039883, -0.004151, 0.950468, 0.310739, + -0.501667, 0.699221, 0.063813, -0.003021, 0.719291, 0.694662, + -0.638129, 0.287158, 0.000000, -0.998688, 0.050722, 0.000000, + -0.501666, 0.699221, -0.063813, -0.003143, 0.719321, -0.694632, + 0.605101, 0.399712, -0.137265, 0.970214, 0.213324, -0.114505, + 0.600959, 0.444810, -0.085753, -0.136235, 0.879482, -0.455947, + 0.605956, 0.463769, 0.000000, 0.949858, 0.312662, 0.000000, + 0.613258, 0.341675, -0.154354, 0.055757, -0.017579, -0.998260, + 0.619427, 0.283145, -0.137236, 0.201300, -0.540880, -0.816645, + 0.617684, 0.235930, -0.085941, 0.974456, -0.186071, -0.125645, + 0.619427, 0.283145, 0.137236, 0.988098, -0.096286, 0.119938, + 0.617684, 0.235930, 0.085941, 0.974456, -0.186041, 0.125614, + -0.611709, 0.194244, 0.000000, -0.879574, -0.475723, 0.000000, + -0.608884, 0.198682, -0.039883, -0.873775, -0.472610, -0.114475, + 0.619427, 0.283145, -0.137236, 0.988067, -0.096286, -0.119938, + 0.617684, 0.235930, -0.085941, 0.295480, -0.855464, -0.425214, + -0.624826, 0.259599, -0.063813, -0.976196, -0.174993, -0.127903, + -0.631184, 0.277569, -0.039883, -0.976196, -0.174993, -0.127903, + -0.619922, 0.238069, 0.071790, -0.971007, -0.205725, 0.121677, + -0.631184, 0.277569, 0.039883, -0.976196, -0.174963, 0.127903, + -0.624828, 0.259599, 0.063813, -0.976196, -0.174993, 0.127903, + -0.437073, 0.750009, -0.121642, 0.896054, -0.372997, 0.240699, + 0.391939, 0.750009, 0.230197, -0.802667, -0.373638, -0.464827, + 0.321638, 0.750009, 0.321639, -0.655812, -0.373852, -0.655812, + 0.121642, 0.750009, 0.437072, -0.240699, -0.373028, -0.896023, + 0.230197, 0.750009, 0.391940, -0.464827, -0.373638, -0.802667, + 0.437073, 0.750009, -0.121642, -0.896023, -0.373028, 0.240699, + -0.000000, 0.750009, 0.453012, 0.000000, -0.372539, -0.927976, + 0.321638, 0.750009, -0.321639, -0.655812, -0.373852, 0.655812, + -0.121642, 0.750009, -0.437072, 0.240699, -0.373028, 0.896023, + 0.437073, 0.750009, 0.121642, -0.896023, -0.373028, -0.240699, + -0.391940, 0.750009, 0.230197, 0.802667, -0.373638, -0.464827, + -0.321639, 0.750009, -0.321639, 0.655812, -0.373882, 0.655812, + -0.230198, 0.750009, -0.391939, 0.464827, -0.373638, 0.802667, + 0.230197, 0.750009, -0.391940, -0.464827, -0.373638, 0.802667, + -0.121642, 0.750009, 0.437072, 0.240699, -0.373028, -0.896023, + -0.391940, 0.750009, -0.230197, 0.802667, -0.373638, 0.464827, + -0.437073, 0.750009, 0.121642, -0.033479, 0.999390, 0.009003, + -0.305360, 0.750806, -0.305360, -0.259163, 0.930387, -0.259163, + -0.321639, 0.750009, -0.321639, -0.024445, 0.999390, -0.024445, + -0.391940, 0.750009, -0.230197, -0.029939, 0.999390, -0.017335, + 0.305360, 0.750806, -0.305360, 0.259163, 0.930387, -0.259163, + 0.321638, 0.750009, -0.321639, 0.024445, 0.999390, -0.024445, + 0.230197, 0.750009, -0.391940, 0.017335, 0.999390, -0.029939, + 0.391939, 0.750009, -0.230197, 0.029939, 0.999390, -0.017335, + 0.437073, 0.750009, 0.121642, 0.033479, 0.999390, 0.009003, + -0.121642, 0.750009, 0.437072, -0.009003, 0.999390, 0.033479, + -0.000000, 0.750009, 0.453012, 0.000000, 0.999390, 0.034730, + -0.230198, 0.750009, -0.391939, -0.017335, 0.999390, -0.029939, + 0.305360, 0.750806, 0.305360, 0.259163, 0.930387, 0.259163, + 0.391939, 0.750009, 0.230197, 0.029939, 0.999390, 0.017335, + -0.121642, 0.750009, -0.437072, -0.009003, 0.999390, -0.033479, + 0.321638, 0.750009, 0.321639, 0.024445, 0.999390, 0.024445, + 0.230197, 0.750009, 0.391940, 0.017335, 0.999390, 0.029939, + 0.121642, 0.750009, 0.437072, 0.009003, 0.999390, 0.033479, + -0.437073, 0.750009, -0.121642, -0.033479, 0.999390, -0.009003, + -0.321639, 0.750009, 0.321639, -0.024445, 0.999390, 0.024445, + -0.391940, 0.750009, 0.230197, -0.029939, 0.999390, 0.017335, + 0.613258, 0.341675, 0.154354, 0.055757, -0.017579, 0.998260, + 0.617684, 0.235930, 0.085941, 0.294198, -0.855403, 0.426252, + 0.619427, 0.283145, 0.137236, 0.201300, -0.540880, 0.816614, +}; + +const u16 vertex_elements[7392] = +{ + 0, 1, 2, + 3, 4, 5, + 3, 5, 6, + 7, 3, 6, + 7, 6, 8, + 9, 7, 8, + 9, 8, 10, + 11, 9, 10, + 11, 10, 12, + 13, 11, 12, + 13, 12, 14, + 15, 16, 5, + 6, 5, 17, + 6, 17, 18, + 8, 6, 18, + 8, 18, 19, + 10, 8, 19, + 10, 19, 20, + 12, 10, 20, + 12, 20, 21, + 14, 12, 21, + 14, 21, 22, + 23, 24, 17, + 18, 17, 24, + 18, 24, 25, + 19, 18, 25, + 19, 25, 26, + 20, 19, 26, + 20, 26, 27, + 21, 20, 27, + 21, 27, 28, + 22, 21, 28, + 22, 28, 29, + 30, 31, 32, + 25, 24, 33, + 25, 33, 34, + 26, 25, 34, + 26, 34, 35, + 27, 26, 35, + 27, 35, 36, + 28, 27, 36, + 28, 36, 37, + 29, 28, 37, + 29, 37, 38, + 32, 39, 40, + 34, 33, 41, + 34, 41, 42, + 35, 34, 42, + 35, 42, 43, + 36, 35, 43, + 36, 43, 44, + 37, 36, 44, + 37, 44, 45, + 38, 37, 45, + 38, 45, 46, + 47, 48, 49, + 42, 41, 48, + 42, 48, 50, + 43, 42, 50, + 43, 50, 51, + 44, 43, 51, + 44, 51, 52, + 45, 44, 52, + 45, 52, 53, + 46, 45, 53, + 46, 53, 54, + 55, 56, 57, + 50, 48, 47, + 50, 47, 58, + 51, 50, 58, + 51, 58, 59, + 52, 51, 59, + 52, 59, 60, + 53, 52, 60, + 53, 60, 61, + 54, 53, 61, + 54, 61, 62, + 31, 55, 63, + 64, 63, 55, + 58, 47, 65, + 58, 65, 66, + 59, 58, 66, + 59, 66, 67, + 60, 59, 67, + 60, 67, 68, + 61, 60, 68, + 61, 68, 69, + 62, 61, 69, + 62, 69, 70, + 55, 57, 71, + 72, 73, 74, + 66, 65, 75, + 66, 75, 76, + 67, 66, 76, + 67, 76, 77, + 68, 67, 77, + 68, 77, 78, + 69, 68, 78, + 69, 78, 79, + 70, 69, 79, + 70, 79, 80, + 81, 75, 82, + 83, 0, 2, + 76, 75, 73, + 76, 73, 84, + 77, 76, 84, + 77, 84, 85, + 78, 77, 85, + 78, 85, 86, + 79, 78, 86, + 79, 86, 87, + 80, 79, 87, + 80, 87, 88, + 89, 1, 90, + 89, 90, 56, + 84, 73, 72, + 84, 72, 91, + 85, 84, 91, + 85, 91, 92, + 86, 85, 92, + 86, 92, 93, + 87, 86, 93, + 87, 93, 94, + 88, 87, 94, + 88, 94, 95, + 96, 72, 74, + 91, 72, 4, + 91, 4, 3, + 92, 91, 3, + 92, 3, 7, + 93, 92, 7, + 93, 7, 9, + 94, 93, 9, + 94, 9, 11, + 95, 94, 11, + 95, 11, 13, + 97, 13, 14, + 97, 14, 98, + 99, 97, 98, + 99, 98, 100, + 101, 99, 100, + 101, 100, 102, + 103, 101, 102, + 103, 102, 104, + 105, 103, 104, + 105, 104, 106, + 107, 105, 106, + 107, 106, 108, + 98, 14, 22, + 98, 22, 109, + 100, 98, 109, + 100, 109, 110, + 102, 100, 110, + 102, 110, 111, + 104, 102, 111, + 104, 111, 112, + 106, 104, 112, + 106, 112, 113, + 108, 106, 113, + 108, 113, 114, + 109, 22, 29, + 109, 29, 115, + 110, 109, 115, + 110, 115, 116, + 111, 110, 116, + 111, 116, 117, + 112, 111, 117, + 112, 117, 118, + 113, 112, 118, + 113, 118, 119, + 114, 113, 119, + 114, 119, 120, + 115, 29, 38, + 115, 38, 121, + 116, 115, 121, + 116, 121, 122, + 117, 116, 122, + 117, 122, 123, + 118, 117, 123, + 118, 123, 124, + 119, 118, 124, + 119, 124, 125, + 120, 119, 125, + 121, 38, 46, + 121, 46, 126, + 122, 121, 126, + 122, 126, 127, + 123, 122, 127, + 123, 127, 128, + 124, 123, 128, + 124, 128, 129, + 125, 124, 129, + 125, 129, 130, + 90, 131, 56, + 126, 46, 54, + 126, 54, 132, + 127, 126, 132, + 127, 132, 133, + 128, 127, 133, + 128, 133, 134, + 129, 128, 134, + 129, 134, 135, + 130, 129, 135, + 130, 135, 136, + 4, 72, 96, + 137, 136, 138, + 132, 54, 62, + 132, 62, 139, + 133, 132, 139, + 133, 139, 140, + 134, 133, 140, + 134, 140, 141, + 135, 134, 141, + 135, 141, 142, + 136, 135, 142, + 136, 142, 143, + 144, 145, 146, + 139, 62, 70, + 139, 70, 147, + 140, 139, 147, + 140, 147, 148, + 141, 140, 148, + 141, 148, 149, + 142, 141, 149, + 142, 149, 150, + 143, 142, 150, + 143, 150, 145, + 151, 152, 153, + 145, 154, 146, + 147, 70, 80, + 147, 80, 155, + 148, 147, 155, + 148, 155, 156, + 149, 148, 156, + 149, 156, 157, + 150, 149, 157, + 150, 157, 158, + 145, 150, 158, + 145, 158, 154, + 159, 160, 161, + 162, 130, 137, + 155, 80, 88, + 155, 88, 163, + 156, 155, 163, + 156, 163, 164, + 157, 156, 164, + 157, 164, 165, + 158, 157, 165, + 158, 165, 166, + 154, 158, 166, + 154, 166, 167, + 168, 154, 167, + 168, 167, 169, + 163, 88, 95, + 163, 95, 170, + 164, 163, 170, + 164, 170, 171, + 165, 164, 171, + 165, 171, 172, + 166, 165, 172, + 166, 172, 173, + 167, 166, 173, + 167, 173, 174, + 169, 167, 174, + 169, 174, 175, + 170, 95, 13, + 170, 13, 97, + 171, 170, 97, + 171, 97, 99, + 172, 171, 99, + 172, 99, 101, + 173, 172, 101, + 173, 101, 103, + 174, 173, 103, + 174, 103, 105, + 175, 174, 105, + 105, 107, 175, + 176, 177, 178, + 179, 180, 181, + 182, 179, 183, + 182, 183, 184, + 185, 182, 184, + 185, 184, 186, + 187, 185, 186, + 187, 186, 188, + 189, 187, 188, + 189, 188, 190, + 191, 189, 190, + 191, 190, 192, + 184, 183, 193, + 184, 193, 194, + 186, 184, 194, + 186, 194, 195, + 188, 186, 195, + 188, 195, 196, + 190, 188, 196, + 190, 196, 197, + 192, 190, 197, + 192, 197, 198, + 199, 193, 200, + 201, 202, 203, + 194, 193, 199, + 194, 199, 204, + 195, 194, 204, + 195, 204, 205, + 196, 195, 205, + 196, 205, 206, + 197, 196, 206, + 197, 206, 207, + 198, 197, 207, + 198, 207, 208, + 204, 199, 209, + 204, 209, 210, + 205, 204, 210, + 205, 210, 211, + 206, 205, 211, + 206, 211, 212, + 207, 206, 212, + 207, 212, 213, + 208, 207, 213, + 208, 213, 214, + 210, 209, 215, + 210, 215, 216, + 211, 210, 216, + 211, 216, 217, + 212, 211, 217, + 212, 217, 218, + 213, 212, 218, + 213, 218, 219, + 214, 213, 219, + 214, 219, 220, + 216, 215, 221, + 216, 221, 222, + 217, 216, 222, + 217, 222, 223, + 218, 217, 223, + 218, 223, 224, + 219, 218, 224, + 219, 224, 225, + 220, 219, 225, + 220, 225, 226, + 221, 215, 227, + 228, 229, 230, + 222, 221, 231, + 222, 231, 232, + 223, 222, 232, + 223, 232, 233, + 224, 223, 233, + 224, 233, 234, + 225, 224, 234, + 225, 234, 235, + 226, 225, 235, + 226, 235, 236, + 232, 231, 237, + 232, 237, 238, + 233, 232, 238, + 233, 238, 239, + 234, 233, 239, + 234, 239, 240, + 235, 234, 240, + 235, 240, 241, + 236, 235, 241, + 236, 241, 242, + 238, 237, 243, + 238, 243, 244, + 239, 238, 244, + 239, 244, 245, + 240, 239, 245, + 240, 245, 246, + 241, 240, 246, + 241, 246, 247, + 242, 241, 247, + 242, 247, 248, + 249, 250, 251, + 244, 243, 252, + 244, 252, 253, + 245, 244, 253, + 245, 253, 254, + 246, 245, 254, + 246, 254, 255, + 247, 246, 255, + 247, 255, 256, + 248, 247, 256, + 248, 256, 257, + 252, 243, 258, + 253, 252, 259, + 253, 259, 260, + 254, 253, 260, + 254, 260, 261, + 255, 254, 261, + 255, 261, 262, + 256, 255, 262, + 256, 262, 263, + 257, 256, 263, + 257, 263, 264, + 179, 259, 180, + 259, 179, 260, + 260, 179, 182, + 261, 260, 182, + 261, 182, 185, + 262, 261, 185, + 262, 185, 187, + 263, 262, 187, + 263, 187, 189, + 264, 263, 189, + 264, 189, 191, + 265, 191, 192, + 265, 192, 266, + 267, 265, 266, + 267, 266, 268, + 269, 267, 268, + 269, 268, 270, + 271, 269, 270, + 271, 270, 272, + 273, 271, 272, + 273, 272, 274, + 275, 273, 274, + 275, 274, 276, + 266, 192, 198, + 266, 198, 277, + 268, 266, 277, + 268, 277, 278, + 270, 268, 278, + 270, 278, 279, + 272, 270, 279, + 272, 279, 280, + 274, 272, 280, + 274, 280, 281, + 276, 274, 281, + 276, 281, 282, + 277, 198, 208, + 277, 208, 283, + 278, 277, 283, + 278, 283, 284, + 279, 278, 284, + 279, 284, 285, + 280, 279, 285, + 280, 285, 286, + 281, 280, 286, + 281, 286, 287, + 282, 281, 287, + 282, 287, 288, + 283, 208, 214, + 283, 214, 289, + 284, 283, 289, + 284, 289, 290, + 285, 284, 290, + 285, 290, 291, + 286, 285, 291, + 286, 291, 292, + 287, 286, 292, + 287, 292, 293, + 288, 287, 293, + 288, 293, 294, + 289, 214, 220, + 289, 220, 295, + 290, 289, 295, + 290, 295, 296, + 291, 290, 296, + 291, 296, 297, + 292, 291, 297, + 292, 297, 298, + 293, 292, 298, + 293, 298, 299, + 294, 293, 299, + 294, 299, 300, + 295, 220, 226, + 295, 226, 301, + 296, 295, 301, + 296, 301, 302, + 297, 296, 302, + 297, 302, 303, + 298, 297, 303, + 298, 303, 304, + 299, 298, 304, + 299, 304, 305, + 300, 299, 305, + 300, 305, 306, + 301, 226, 236, + 301, 236, 307, + 302, 301, 307, + 302, 307, 308, + 303, 302, 308, + 303, 308, 309, + 304, 303, 309, + 304, 309, 310, + 305, 304, 310, + 305, 310, 311, + 306, 305, 311, + 306, 311, 312, + 307, 236, 242, + 307, 242, 313, + 308, 307, 313, + 308, 313, 314, + 309, 308, 314, + 309, 314, 315, + 310, 309, 315, + 310, 315, 316, + 311, 310, 316, + 311, 316, 317, + 312, 311, 317, + 312, 317, 318, + 313, 242, 248, + 313, 248, 319, + 314, 313, 319, + 314, 319, 320, + 315, 314, 320, + 315, 320, 321, + 316, 315, 321, + 316, 321, 322, + 317, 316, 322, + 317, 322, 323, + 318, 317, 323, + 318, 323, 324, + 319, 248, 257, + 319, 257, 325, + 320, 319, 325, + 320, 325, 326, + 321, 320, 326, + 321, 326, 327, + 322, 321, 327, + 322, 327, 328, + 323, 322, 328, + 323, 328, 329, + 324, 323, 329, + 324, 329, 330, + 325, 257, 264, + 325, 264, 331, + 326, 325, 331, + 326, 331, 332, + 327, 326, 332, + 327, 332, 333, + 328, 327, 333, + 328, 333, 334, + 329, 328, 334, + 329, 334, 335, + 330, 329, 335, + 330, 335, 336, + 331, 264, 191, + 331, 191, 265, + 332, 331, 265, + 332, 265, 267, + 333, 332, 267, + 333, 267, 269, + 334, 333, 269, + 334, 269, 271, + 335, 334, 271, + 335, 271, 273, + 336, 335, 273, + 336, 273, 275, + 275, 276, 337, + 324, 338, 339, + 312, 340, 341, + 318, 339, 340, + 282, 288, 342, + 294, 300, 343, + 336, 344, 345, + 330, 345, 338, + 275, 346, 344, + 300, 306, 341, + 288, 294, 347, + 276, 282, 348, + 348, 342, 349, + 345, 344, 349, + 337, 348, 349, + 343, 341, 349, + 338, 345, 349, + 342, 347, 349, + 346, 337, 349, + 347, 343, 349, + 340, 339, 349, + 339, 338, 349, + 344, 346, 349, + 341, 340, 349, + 350, 351, 352, + 350, 352, 353, + 354, 350, 353, + 354, 353, 355, + 356, 354, 355, + 356, 355, 357, + 358, 356, 357, + 358, 357, 359, + 360, 358, 359, + 360, 359, 361, + 362, 360, 361, + 362, 361, 363, + 353, 352, 364, + 353, 364, 365, + 355, 353, 365, + 355, 365, 366, + 357, 355, 366, + 357, 366, 367, + 359, 357, 367, + 359, 367, 368, + 361, 359, 368, + 361, 368, 369, + 363, 361, 369, + 363, 369, 370, + 365, 364, 371, + 365, 371, 372, + 366, 365, 372, + 366, 372, 373, + 367, 366, 373, + 367, 373, 374, + 368, 367, 374, + 368, 374, 375, + 369, 368, 375, + 369, 375, 376, + 370, 369, 376, + 370, 376, 377, + 372, 371, 378, + 372, 378, 379, + 373, 372, 379, + 373, 379, 380, + 374, 373, 380, + 374, 380, 381, + 375, 374, 381, + 375, 381, 382, + 376, 375, 382, + 376, 382, 383, + 377, 376, 383, + 377, 383, 384, + 379, 378, 385, + 379, 385, 386, + 380, 379, 386, + 380, 386, 387, + 381, 380, 387, + 381, 387, 388, + 382, 381, 388, + 382, 388, 389, + 383, 382, 389, + 383, 389, 390, + 384, 383, 390, + 384, 390, 391, + 386, 385, 392, + 386, 392, 393, + 387, 386, 393, + 387, 393, 394, + 388, 387, 394, + 388, 394, 395, + 389, 388, 395, + 389, 395, 396, + 390, 389, 396, + 390, 396, 397, + 391, 390, 397, + 391, 397, 398, + 393, 392, 399, + 393, 399, 400, + 394, 393, 400, + 394, 400, 401, + 395, 394, 401, + 395, 401, 402, + 396, 395, 402, + 396, 402, 403, + 397, 396, 403, + 397, 403, 404, + 398, 397, 404, + 398, 404, 405, + 400, 399, 406, + 400, 406, 407, + 401, 400, 407, + 401, 407, 408, + 402, 401, 408, + 402, 408, 409, + 403, 402, 409, + 403, 409, 410, + 404, 403, 410, + 404, 410, 411, + 405, 404, 411, + 405, 411, 412, + 407, 406, 413, + 407, 413, 414, + 408, 407, 414, + 408, 414, 415, + 409, 408, 415, + 409, 415, 416, + 410, 409, 416, + 410, 416, 417, + 411, 410, 417, + 411, 417, 418, + 412, 411, 418, + 412, 418, 419, + 414, 413, 420, + 414, 420, 421, + 415, 414, 421, + 415, 421, 422, + 416, 415, 422, + 416, 422, 423, + 417, 416, 423, + 417, 423, 424, + 418, 417, 424, + 418, 424, 425, + 419, 418, 425, + 419, 425, 426, + 421, 420, 427, + 421, 427, 428, + 422, 421, 428, + 422, 428, 429, + 423, 422, 429, + 423, 429, 430, + 424, 423, 430, + 424, 430, 431, + 425, 424, 431, + 425, 431, 432, + 426, 425, 432, + 426, 432, 433, + 428, 427, 434, + 428, 434, 435, + 429, 428, 435, + 429, 435, 436, + 430, 429, 436, + 430, 436, 437, + 431, 430, 437, + 431, 437, 438, + 432, 431, 438, + 432, 438, 439, + 433, 432, 439, + 433, 439, 32, + 435, 434, 440, + 435, 440, 441, + 436, 435, 441, + 436, 441, 442, + 437, 436, 442, + 437, 442, 443, + 438, 437, 443, + 438, 443, 444, + 439, 438, 444, + 439, 444, 445, + 32, 439, 445, + 32, 445, 30, + 441, 440, 446, + 441, 446, 447, + 442, 441, 447, + 442, 447, 448, + 443, 442, 448, + 443, 448, 449, + 444, 443, 449, + 444, 449, 450, + 445, 444, 450, + 445, 450, 451, + 30, 445, 451, + 30, 451, 452, + 447, 446, 453, + 447, 453, 454, + 448, 447, 454, + 448, 454, 455, + 449, 448, 455, + 449, 455, 456, + 450, 449, 456, + 450, 456, 457, + 451, 450, 457, + 451, 457, 458, + 452, 451, 458, + 452, 458, 459, + 454, 453, 460, + 454, 460, 461, + 455, 454, 461, + 455, 461, 462, + 456, 455, 462, + 456, 462, 463, + 457, 456, 463, + 457, 463, 464, + 458, 457, 464, + 458, 464, 465, + 459, 458, 465, + 459, 465, 466, + 461, 460, 467, + 461, 467, 468, + 462, 461, 468, + 462, 468, 469, + 463, 462, 469, + 463, 469, 470, + 464, 463, 470, + 464, 470, 471, + 465, 464, 471, + 465, 471, 472, + 466, 465, 472, + 466, 472, 473, + 468, 467, 474, + 468, 474, 475, + 469, 468, 475, + 469, 475, 476, + 470, 469, 476, + 470, 476, 477, + 471, 470, 477, + 471, 477, 478, + 472, 471, 478, + 472, 478, 479, + 473, 472, 479, + 473, 479, 480, + 475, 474, 481, + 475, 481, 482, + 476, 475, 482, + 476, 482, 483, + 477, 476, 483, + 477, 483, 484, + 478, 477, 484, + 478, 484, 485, + 479, 478, 485, + 479, 485, 486, + 480, 479, 486, + 480, 486, 487, + 482, 481, 488, + 482, 488, 489, + 483, 482, 489, + 483, 489, 490, + 484, 483, 490, + 484, 490, 491, + 485, 484, 491, + 485, 491, 492, + 486, 485, 492, + 486, 492, 493, + 487, 486, 493, + 487, 493, 494, + 489, 488, 495, + 489, 495, 496, + 490, 489, 496, + 490, 496, 497, + 491, 490, 497, + 491, 497, 498, + 492, 491, 498, + 492, 498, 499, + 493, 492, 499, + 493, 499, 500, + 494, 493, 500, + 494, 500, 501, + 496, 495, 502, + 496, 502, 503, + 497, 496, 503, + 497, 503, 504, + 498, 497, 504, + 498, 504, 505, + 499, 498, 505, + 499, 505, 506, + 500, 499, 506, + 500, 506, 507, + 501, 500, 507, + 501, 507, 508, + 503, 502, 509, + 503, 509, 510, + 504, 503, 510, + 504, 510, 511, + 505, 504, 511, + 505, 511, 512, + 506, 505, 512, + 506, 512, 513, + 507, 506, 513, + 507, 513, 514, + 508, 507, 514, + 508, 514, 515, + 510, 509, 351, + 351, 350, 510, + 510, 350, 511, + 511, 350, 354, + 512, 511, 354, + 512, 354, 356, + 513, 512, 356, + 513, 356, 358, + 514, 513, 358, + 514, 358, 360, + 515, 514, 360, + 515, 360, 362, + 516, 362, 363, + 516, 363, 517, + 518, 516, 517, + 518, 517, 519, + 177, 518, 519, + 177, 519, 520, + 517, 363, 370, + 517, 370, 521, + 519, 517, 521, + 519, 521, 522, + 520, 519, 522, + 520, 522, 523, + 524, 520, 523, + 524, 523, 525, + 203, 524, 525, + 203, 525, 526, + 527, 203, 526, + 527, 526, 528, + 521, 370, 377, + 521, 377, 529, + 522, 521, 529, + 522, 529, 530, + 523, 522, 530, + 523, 530, 531, + 525, 523, 531, + 525, 531, 532, + 526, 525, 532, + 526, 532, 533, + 528, 526, 533, + 528, 533, 534, + 529, 377, 384, + 529, 384, 535, + 530, 529, 535, + 530, 535, 536, + 531, 530, 536, + 531, 536, 537, + 532, 531, 537, + 532, 537, 538, + 533, 532, 538, + 533, 538, 539, + 534, 533, 539, + 534, 539, 540, + 535, 384, 391, + 535, 391, 541, + 536, 535, 541, + 536, 541, 542, + 537, 536, 542, + 537, 542, 543, + 538, 537, 543, + 538, 543, 544, + 539, 538, 544, + 539, 544, 545, + 540, 539, 545, + 540, 545, 546, + 541, 391, 398, + 541, 398, 547, + 542, 541, 547, + 542, 547, 548, + 543, 542, 548, + 543, 548, 549, + 544, 543, 549, + 544, 549, 550, + 545, 544, 550, + 545, 550, 551, + 546, 545, 551, + 546, 551, 552, + 547, 398, 405, + 547, 405, 553, + 548, 547, 553, + 548, 553, 554, + 549, 548, 554, + 549, 554, 555, + 550, 549, 555, + 550, 555, 556, + 551, 550, 556, + 551, 556, 557, + 552, 551, 557, + 552, 557, 558, + 553, 405, 412, + 553, 412, 559, + 554, 553, 559, + 554, 559, 560, + 555, 554, 560, + 555, 560, 561, + 556, 555, 561, + 556, 561, 562, + 557, 556, 562, + 557, 562, 563, + 558, 557, 563, + 558, 563, 564, + 559, 412, 419, + 559, 419, 565, + 560, 559, 565, + 560, 565, 566, + 561, 560, 566, + 561, 566, 567, + 562, 561, 567, + 562, 567, 568, + 563, 562, 568, + 563, 568, 569, + 564, 563, 569, + 564, 569, 570, + 565, 419, 426, + 565, 426, 571, + 566, 565, 571, + 566, 571, 572, + 567, 566, 572, + 567, 572, 573, + 568, 567, 573, + 568, 573, 574, + 569, 568, 574, + 569, 574, 575, + 570, 569, 575, + 570, 575, 576, + 571, 426, 433, + 571, 433, 2, + 572, 571, 2, + 572, 2, 89, + 573, 572, 89, + 573, 89, 577, + 574, 573, 577, + 574, 577, 578, + 575, 574, 578, + 575, 578, 579, + 576, 575, 579, + 576, 579, 580, + 2, 433, 32, + 577, 89, 56, + 577, 56, 581, + 578, 577, 581, + 578, 581, 582, + 579, 578, 582, + 579, 582, 583, + 580, 579, 583, + 56, 55, 584, + 581, 56, 584, + 581, 584, 585, + 582, 581, 585, + 582, 585, 586, + 583, 582, 586, + 583, 586, 587, + 55, 30, 452, + 55, 452, 588, + 584, 55, 588, + 584, 588, 589, + 585, 584, 589, + 585, 589, 590, + 586, 585, 590, + 586, 590, 591, + 587, 586, 591, + 587, 591, 592, + 593, 587, 592, + 593, 592, 594, + 588, 452, 459, + 588, 459, 595, + 589, 588, 595, + 589, 595, 596, + 590, 589, 596, + 590, 596, 597, + 591, 590, 597, + 591, 597, 598, + 592, 591, 598, + 592, 598, 599, + 594, 592, 599, + 594, 599, 600, + 595, 459, 466, + 595, 466, 601, + 596, 595, 601, + 596, 601, 602, + 597, 596, 602, + 597, 602, 603, + 598, 597, 603, + 598, 603, 604, + 599, 598, 604, + 599, 604, 605, + 600, 599, 605, + 600, 605, 606, + 601, 466, 473, + 601, 473, 607, + 602, 601, 607, + 602, 607, 608, + 603, 602, 608, + 603, 608, 609, + 604, 603, 609, + 604, 609, 610, + 605, 604, 610, + 605, 610, 611, + 606, 605, 611, + 606, 611, 612, + 607, 473, 480, + 607, 480, 613, + 608, 607, 613, + 608, 613, 614, + 609, 608, 614, + 609, 614, 615, + 610, 609, 615, + 610, 615, 616, + 611, 610, 616, + 611, 616, 617, + 612, 611, 617, + 612, 617, 618, + 613, 480, 487, + 613, 487, 619, + 614, 613, 619, + 614, 619, 620, + 615, 614, 620, + 615, 620, 621, + 616, 615, 621, + 616, 621, 622, + 617, 616, 622, + 617, 622, 623, + 618, 617, 623, + 618, 623, 624, + 619, 487, 494, + 619, 494, 625, + 620, 619, 625, + 620, 625, 626, + 621, 620, 626, + 621, 626, 627, + 622, 621, 627, + 622, 627, 628, + 623, 622, 628, + 623, 628, 629, + 624, 623, 629, + 624, 629, 630, + 625, 494, 501, + 625, 501, 631, + 626, 625, 631, + 626, 631, 632, + 627, 626, 632, + 627, 632, 633, + 628, 627, 633, + 628, 633, 634, + 629, 628, 634, + 629, 634, 635, + 630, 629, 635, + 630, 635, 636, + 631, 501, 508, + 631, 508, 637, + 632, 631, 637, + 632, 637, 638, + 633, 632, 638, + 633, 638, 639, + 634, 633, 639, + 634, 639, 640, + 635, 634, 640, + 635, 640, 641, + 636, 635, 641, + 636, 641, 642, + 637, 508, 515, + 637, 515, 643, + 638, 637, 643, + 638, 643, 644, + 639, 638, 644, + 639, 644, 645, + 640, 639, 645, + 640, 645, 176, + 641, 640, 176, + 641, 176, 250, + 642, 641, 250, + 642, 250, 249, + 643, 515, 362, + 643, 362, 516, + 644, 643, 516, + 644, 516, 518, + 645, 644, 518, + 645, 518, 177, + 176, 645, 177, + 229, 228, 646, + 647, 229, 646, + 647, 646, 648, + 649, 647, 648, + 649, 648, 650, + 651, 649, 650, + 651, 650, 652, + 653, 651, 652, + 653, 652, 654, + 228, 527, 528, + 228, 528, 655, + 646, 228, 655, + 646, 655, 656, + 648, 646, 656, + 648, 656, 657, + 650, 648, 657, + 650, 657, 658, + 652, 650, 658, + 652, 658, 659, + 654, 652, 659, + 654, 659, 660, + 655, 528, 534, + 655, 534, 661, + 656, 655, 661, + 656, 661, 662, + 657, 656, 662, + 657, 662, 663, + 658, 657, 663, + 658, 663, 664, + 659, 658, 664, + 659, 664, 665, + 660, 659, 665, + 660, 665, 666, + 661, 534, 540, + 661, 540, 667, + 662, 661, 667, + 662, 667, 668, + 663, 662, 668, + 663, 668, 669, + 664, 663, 669, + 664, 669, 670, + 665, 664, 670, + 665, 670, 671, + 666, 665, 671, + 666, 671, 672, + 667, 540, 546, + 667, 546, 673, + 668, 667, 673, + 668, 673, 674, + 669, 668, 674, + 669, 674, 675, + 670, 669, 675, + 670, 675, 676, + 671, 670, 676, + 671, 676, 677, + 672, 671, 677, + 672, 677, 678, + 673, 546, 552, + 673, 552, 679, + 674, 673, 679, + 674, 679, 680, + 675, 674, 680, + 675, 680, 681, + 676, 675, 681, + 676, 681, 682, + 677, 676, 682, + 677, 682, 683, + 678, 677, 683, + 678, 683, 684, + 679, 552, 558, + 679, 558, 685, + 680, 679, 685, + 680, 685, 686, + 681, 680, 686, + 681, 686, 687, + 682, 681, 687, + 682, 687, 688, + 683, 682, 688, + 683, 688, 689, + 684, 683, 689, + 684, 689, 690, + 685, 558, 564, + 685, 564, 691, + 686, 685, 691, + 686, 691, 692, + 687, 686, 692, + 687, 692, 693, + 688, 687, 693, + 688, 693, 694, + 689, 688, 694, + 689, 694, 695, + 690, 689, 695, + 690, 695, 696, + 691, 564, 570, + 691, 570, 697, + 692, 691, 697, + 692, 697, 698, + 693, 692, 698, + 693, 698, 699, + 694, 693, 699, + 694, 699, 700, + 695, 694, 700, + 695, 700, 701, + 696, 695, 701, + 696, 701, 702, + 697, 570, 576, + 697, 576, 703, + 698, 697, 703, + 698, 703, 704, + 699, 698, 704, + 699, 704, 705, + 700, 699, 705, + 700, 705, 706, + 701, 700, 706, + 701, 706, 707, + 702, 701, 707, + 702, 707, 708, + 703, 576, 580, + 703, 580, 709, + 704, 703, 709, + 704, 709, 161, + 705, 704, 161, + 705, 161, 710, + 706, 705, 710, + 706, 710, 711, + 707, 706, 711, + 707, 711, 712, + 708, 707, 712, + 708, 712, 713, + 710, 161, 714, + 710, 714, 715, + 711, 710, 715, + 711, 715, 716, + 712, 711, 716, + 712, 716, 717, + 713, 712, 717, + 713, 717, 718, + 714, 153, 719, + 715, 714, 719, + 715, 719, 720, + 716, 715, 720, + 716, 720, 721, + 717, 716, 721, + 717, 721, 722, + 718, 717, 722, + 718, 722, 723, + 153, 593, 594, + 153, 594, 724, + 719, 153, 724, + 719, 724, 725, + 720, 719, 725, + 720, 725, 726, + 721, 720, 726, + 721, 726, 727, + 722, 721, 727, + 722, 727, 728, + 723, 722, 728, + 723, 728, 729, + 724, 594, 600, + 724, 600, 730, + 725, 724, 730, + 725, 730, 731, + 726, 725, 731, + 726, 731, 732, + 727, 726, 732, + 727, 732, 733, + 728, 727, 733, + 728, 733, 734, + 729, 728, 734, + 729, 734, 735, + 730, 600, 606, + 730, 606, 736, + 731, 730, 736, + 731, 736, 737, + 732, 731, 737, + 732, 737, 738, + 733, 732, 738, + 733, 738, 739, + 734, 733, 739, + 734, 739, 740, + 735, 734, 740, + 735, 740, 741, + 736, 606, 612, + 736, 612, 742, + 737, 736, 742, + 737, 742, 743, + 738, 737, 743, + 738, 743, 744, + 739, 738, 744, + 739, 744, 745, + 740, 739, 745, + 740, 745, 746, + 741, 740, 746, + 741, 746, 747, + 742, 612, 618, + 742, 618, 748, + 743, 742, 748, + 743, 748, 749, + 744, 743, 749, + 744, 749, 750, + 745, 744, 750, + 745, 750, 751, + 746, 745, 751, + 746, 751, 752, + 747, 746, 752, + 747, 752, 753, + 748, 618, 624, + 748, 624, 754, + 749, 748, 754, + 749, 754, 755, + 750, 749, 755, + 750, 755, 756, + 751, 750, 756, + 751, 756, 757, + 752, 751, 757, + 752, 757, 758, + 753, 752, 758, + 753, 758, 759, + 754, 624, 630, + 754, 630, 760, + 755, 754, 760, + 755, 760, 761, + 756, 755, 761, + 756, 761, 762, + 757, 756, 762, + 757, 762, 763, + 758, 757, 763, + 758, 763, 764, + 759, 758, 764, + 759, 764, 765, + 760, 630, 636, + 760, 636, 766, + 761, 760, 766, + 761, 766, 767, + 762, 761, 767, + 762, 767, 768, + 763, 762, 768, + 763, 768, 769, + 764, 763, 769, + 764, 769, 770, + 765, 764, 770, + 765, 770, 771, + 766, 636, 642, + 766, 642, 772, + 767, 766, 772, + 767, 772, 773, + 768, 767, 773, + 768, 773, 774, + 769, 768, 774, + 769, 774, 775, + 770, 769, 775, + 770, 775, 776, + 771, 770, 776, + 771, 776, 777, + 772, 642, 249, + 772, 249, 778, + 773, 772, 778, + 773, 778, 779, + 774, 773, 779, + 774, 779, 780, + 775, 774, 780, + 775, 780, 781, + 776, 775, 781, + 776, 781, 782, + 777, 776, 782, + 777, 782, 783, + 780, 779, 229, + 780, 229, 647, + 781, 780, 647, + 781, 647, 649, + 782, 781, 649, + 782, 649, 651, + 783, 782, 651, + 783, 651, 653, + 784, 785, 786, + 787, 784, 786, + 787, 786, 788, + 789, 787, 788, + 789, 788, 790, + 791, 789, 790, + 791, 790, 792, + 793, 791, 792, + 793, 792, 794, + 653, 793, 794, + 653, 794, 783, + 786, 785, 795, + 788, 786, 795, + 788, 795, 796, + 790, 788, 796, + 790, 796, 797, + 792, 790, 797, + 792, 797, 798, + 794, 792, 798, + 794, 798, 799, + 783, 794, 799, + 783, 799, 777, + 795, 785, 800, + 796, 795, 800, + 796, 800, 801, + 797, 796, 801, + 797, 801, 802, + 798, 797, 802, + 798, 802, 803, + 799, 798, 803, + 799, 803, 804, + 777, 799, 804, + 777, 804, 771, + 800, 785, 805, + 801, 800, 805, + 801, 805, 806, + 802, 801, 806, + 802, 806, 807, + 803, 802, 807, + 803, 807, 808, + 804, 803, 808, + 804, 808, 809, + 771, 804, 809, + 771, 809, 765, + 805, 785, 810, + 806, 805, 810, + 806, 810, 811, + 807, 806, 811, + 807, 811, 812, + 808, 807, 812, + 808, 812, 813, + 809, 808, 813, + 809, 813, 814, + 765, 809, 814, + 765, 814, 759, + 810, 785, 815, + 811, 810, 815, + 811, 815, 816, + 812, 811, 816, + 812, 816, 817, + 813, 812, 817, + 813, 817, 818, + 814, 813, 818, + 814, 818, 819, + 759, 814, 819, + 759, 819, 753, + 815, 785, 820, + 816, 815, 820, + 816, 820, 821, + 817, 816, 821, + 817, 821, 822, + 818, 817, 822, + 818, 822, 823, + 819, 818, 823, + 819, 823, 824, + 753, 819, 824, + 753, 824, 747, + 820, 785, 825, + 821, 820, 825, + 821, 825, 826, + 822, 821, 826, + 822, 826, 827, + 823, 822, 827, + 823, 827, 828, + 824, 823, 828, + 824, 828, 829, + 747, 824, 829, + 747, 829, 741, + 825, 785, 830, + 826, 825, 830, + 826, 830, 831, + 827, 826, 831, + 827, 831, 832, + 828, 827, 832, + 828, 832, 833, + 829, 828, 833, + 829, 833, 834, + 741, 829, 834, + 741, 834, 735, + 830, 785, 835, + 831, 830, 835, + 831, 835, 836, + 832, 831, 836, + 832, 836, 837, + 833, 832, 837, + 833, 837, 838, + 834, 833, 838, + 834, 838, 839, + 735, 834, 839, + 735, 839, 729, + 835, 785, 840, + 836, 835, 840, + 836, 840, 841, + 837, 836, 841, + 837, 841, 842, + 838, 837, 842, + 838, 842, 843, + 839, 838, 843, + 839, 843, 844, + 729, 839, 844, + 729, 844, 723, + 840, 785, 845, + 841, 840, 845, + 841, 845, 846, + 842, 841, 846, + 842, 846, 847, + 843, 842, 847, + 843, 847, 848, + 844, 843, 848, + 844, 848, 849, + 723, 844, 849, + 723, 849, 718, + 845, 785, 850, + 846, 845, 850, + 846, 850, 851, + 847, 846, 851, + 847, 851, 852, + 848, 847, 852, + 848, 852, 853, + 849, 848, 853, + 849, 853, 854, + 718, 849, 854, + 718, 854, 713, + 850, 785, 855, + 851, 850, 855, + 851, 855, 856, + 852, 851, 856, + 852, 856, 857, + 853, 852, 857, + 853, 857, 858, + 854, 853, 858, + 854, 858, 859, + 713, 854, 859, + 713, 859, 708, + 855, 785, 860, + 856, 855, 860, + 856, 860, 861, + 857, 856, 861, + 857, 861, 862, + 858, 857, 862, + 858, 862, 863, + 859, 858, 863, + 859, 863, 864, + 708, 859, 864, + 708, 864, 702, + 860, 785, 865, + 861, 860, 865, + 861, 865, 866, + 862, 861, 866, + 862, 866, 867, + 863, 862, 867, + 863, 867, 868, + 864, 863, 868, + 864, 868, 869, + 702, 864, 869, + 702, 869, 696, + 865, 785, 870, + 866, 865, 870, + 866, 870, 871, + 867, 866, 871, + 867, 871, 872, + 868, 867, 872, + 868, 872, 873, + 869, 868, 873, + 869, 873, 874, + 696, 869, 874, + 696, 874, 690, + 870, 785, 875, + 871, 870, 875, + 871, 875, 876, + 872, 871, 876, + 872, 876, 877, + 873, 872, 877, + 873, 877, 878, + 874, 873, 878, + 874, 878, 879, + 690, 874, 879, + 690, 879, 684, + 875, 785, 880, + 876, 875, 880, + 876, 880, 881, + 877, 876, 881, + 877, 881, 882, + 878, 877, 882, + 878, 882, 883, + 879, 878, 883, + 879, 883, 884, + 684, 879, 884, + 684, 884, 678, + 880, 785, 885, + 881, 880, 885, + 881, 885, 886, + 882, 881, 886, + 882, 886, 887, + 883, 882, 887, + 883, 887, 888, + 884, 883, 888, + 884, 888, 889, + 678, 884, 889, + 678, 889, 672, + 885, 785, 890, + 886, 885, 890, + 886, 890, 891, + 887, 886, 891, + 887, 891, 892, + 888, 887, 892, + 888, 892, 893, + 889, 888, 893, + 889, 893, 894, + 672, 889, 894, + 672, 894, 666, + 890, 785, 895, + 891, 890, 895, + 891, 895, 896, + 892, 891, 896, + 892, 896, 897, + 893, 892, 897, + 893, 897, 898, + 894, 893, 898, + 894, 898, 899, + 666, 894, 899, + 666, 899, 660, + 895, 785, 900, + 896, 895, 900, + 896, 900, 901, + 897, 896, 901, + 897, 901, 902, + 898, 897, 902, + 898, 902, 903, + 899, 898, 903, + 899, 903, 904, + 660, 899, 904, + 660, 904, 654, + 900, 785, 784, + 901, 900, 784, + 901, 784, 787, + 902, 901, 787, + 902, 787, 789, + 903, 902, 789, + 903, 789, 791, + 904, 903, 791, + 904, 791, 793, + 654, 904, 793, + 654, 793, 653, + 413, 905, 906, + 907, 908, 481, + 909, 502, 495, + 910, 427, 420, + 911, 351, 509, + 440, 434, 912, + 913, 914, 915, + 913, 915, 916, + 916, 915, 917, + 916, 917, 918, + 918, 917, 919, + 918, 919, 920, + 920, 919, 921, + 920, 921, 922, + 922, 921, 923, + 922, 923, 924, + 924, 923, 925, + 924, 925, 926, + 926, 925, 927, + 926, 927, 928, + 928, 927, 929, + 928, 929, 930, + 930, 929, 931, + 930, 931, 932, + 932, 931, 933, + 932, 933, 934, + 934, 933, 935, + 934, 935, 936, + 936, 935, 937, + 936, 937, 938, + 938, 937, 939, + 938, 939, 940, + 940, 939, 941, + 940, 941, 942, + 942, 941, 943, + 942, 943, 944, + 944, 943, 945, + 944, 945, 946, + 946, 945, 947, + 946, 947, 948, + 948, 947, 949, + 948, 949, 950, + 950, 949, 951, + 950, 951, 952, + 952, 951, 953, + 952, 953, 954, + 954, 953, 955, + 954, 955, 956, + 956, 955, 957, + 956, 957, 958, + 958, 957, 959, + 958, 959, 960, + 960, 959, 914, + 914, 913, 960, + 961, 913, 916, + 961, 916, 962, + 963, 961, 962, + 963, 962, 964, + 965, 963, 964, + 965, 964, 966, + 967, 965, 966, + 967, 966, 968, + 969, 967, 968, + 969, 968, 970, + 971, 969, 970, + 971, 970, 972, + 962, 916, 918, + 962, 918, 973, + 964, 962, 973, + 964, 973, 974, + 966, 964, 974, + 966, 974, 975, + 968, 966, 975, + 968, 975, 976, + 970, 968, 976, + 970, 976, 977, + 972, 970, 977, + 972, 977, 978, + 973, 918, 920, + 973, 920, 979, + 974, 973, 979, + 974, 979, 980, + 975, 974, 980, + 975, 980, 981, + 976, 975, 981, + 976, 981, 982, + 977, 976, 982, + 977, 982, 983, + 978, 977, 983, + 978, 983, 984, + 979, 920, 922, + 979, 922, 985, + 980, 979, 985, + 980, 985, 986, + 981, 980, 986, + 981, 986, 987, + 982, 981, 987, + 982, 987, 988, + 983, 982, 988, + 983, 988, 989, + 984, 983, 989, + 984, 989, 990, + 985, 922, 924, + 985, 924, 991, + 986, 985, 991, + 986, 991, 992, + 987, 986, 992, + 987, 992, 993, + 988, 987, 993, + 988, 993, 994, + 989, 988, 994, + 989, 994, 995, + 990, 989, 995, + 990, 995, 996, + 991, 924, 926, + 991, 926, 997, + 992, 991, 997, + 992, 997, 998, + 993, 992, 998, + 993, 998, 999, + 994, 993, 999, + 994, 999, 1000, + 995, 994, 1000, + 995, 1000, 1001, + 996, 995, 1001, + 996, 1001, 1002, + 997, 926, 928, + 997, 928, 1003, + 998, 997, 1003, + 998, 1003, 1004, + 999, 998, 1004, + 999, 1004, 1005, + 1000, 999, 1005, + 1000, 1005, 1006, + 1001, 1000, 1006, + 1001, 1006, 1007, + 1002, 1001, 1007, + 1002, 1007, 1008, + 1003, 928, 930, + 1003, 930, 1009, + 1004, 1003, 1009, + 1004, 1009, 1010, + 1005, 1004, 1010, + 1005, 1010, 1011, + 1006, 1005, 1011, + 1006, 1011, 1012, + 1007, 1006, 1012, + 1007, 1012, 1013, + 1008, 1007, 1013, + 1008, 1013, 1014, + 1009, 930, 932, + 1009, 932, 1015, + 1010, 1009, 1015, + 1010, 1015, 1016, + 1011, 1010, 1016, + 1011, 1016, 1017, + 1012, 1011, 1017, + 1012, 1017, 1018, + 1013, 1012, 1018, + 1013, 1018, 1019, + 1014, 1013, 1019, + 1014, 1019, 1020, + 1015, 932, 934, + 1015, 934, 1021, + 1016, 1015, 1021, + 1016, 1021, 1022, + 1017, 1016, 1022, + 1017, 1022, 1023, + 1018, 1017, 1023, + 1018, 1023, 1024, + 1019, 1018, 1024, + 1019, 1024, 1025, + 1020, 1019, 1025, + 1020, 1025, 1026, + 1021, 934, 936, + 1021, 936, 1027, + 1022, 1021, 1027, + 1022, 1027, 1028, + 1023, 1022, 1028, + 1023, 1028, 1029, + 1024, 1023, 1029, + 1024, 1029, 1030, + 1025, 1024, 1030, + 1025, 1030, 1031, + 1026, 1025, 1031, + 1026, 1031, 1032, + 1027, 936, 938, + 1027, 938, 1033, + 1028, 1027, 1033, + 1028, 1033, 1034, + 1029, 1028, 1034, + 1029, 1034, 1035, + 1030, 1029, 1035, + 1030, 1035, 1036, + 1031, 1030, 1036, + 1031, 1036, 1037, + 1032, 1031, 1037, + 1032, 1037, 1038, + 1033, 938, 940, + 1033, 940, 1039, + 1034, 1033, 1039, + 1034, 1039, 1040, + 1035, 1034, 1040, + 1035, 1040, 1041, + 1036, 1035, 1041, + 1036, 1041, 1042, + 1037, 1036, 1042, + 1037, 1042, 1043, + 1038, 1037, 1043, + 1038, 1043, 1044, + 1039, 940, 942, + 1039, 942, 1045, + 1040, 1039, 1045, + 1040, 1045, 1046, + 1041, 1040, 1046, + 1041, 1046, 1047, + 1042, 1041, 1047, + 1042, 1047, 1048, + 1043, 1042, 1048, + 1043, 1048, 1049, + 1044, 1043, 1049, + 1044, 1049, 1050, + 1045, 942, 944, + 1045, 944, 1051, + 1046, 1045, 1051, + 1046, 1051, 1052, + 1047, 1046, 1052, + 1047, 1052, 1053, + 1048, 1047, 1053, + 1048, 1053, 1054, + 1049, 1048, 1054, + 1049, 1054, 1055, + 1050, 1049, 1055, + 1050, 1055, 1056, + 1051, 944, 946, + 1051, 946, 1057, + 1052, 1051, 1057, + 1052, 1057, 1058, + 1053, 1052, 1058, + 1053, 1058, 1059, + 1054, 1053, 1059, + 1054, 1059, 1060, + 1055, 1054, 1060, + 1055, 1060, 1061, + 1056, 1055, 1061, + 1056, 1061, 1062, + 1057, 946, 948, + 1057, 948, 1063, + 1058, 1057, 1063, + 1058, 1063, 1064, + 1059, 1058, 1064, + 1059, 1064, 1065, + 1060, 1059, 1065, + 1060, 1065, 1066, + 1061, 1060, 1066, + 1061, 1066, 1067, + 1062, 1061, 1067, + 1062, 1067, 1068, + 1063, 948, 950, + 1063, 950, 1069, + 1064, 1063, 1069, + 1064, 1069, 1070, + 1065, 1064, 1070, + 1065, 1070, 1071, + 1066, 1065, 1071, + 1066, 1071, 1072, + 1067, 1066, 1072, + 1067, 1072, 1073, + 1068, 1067, 1073, + 1068, 1073, 1074, + 1069, 950, 952, + 1069, 952, 1075, + 1070, 1069, 1075, + 1070, 1075, 1076, + 1071, 1070, 1076, + 1071, 1076, 1077, + 1072, 1071, 1077, + 1072, 1077, 1078, + 1073, 1072, 1078, + 1073, 1078, 1079, + 1074, 1073, 1079, + 1074, 1079, 1080, + 1075, 952, 954, + 1075, 954, 1081, + 1076, 1075, 1081, + 1076, 1081, 1082, + 1077, 1076, 1082, + 1077, 1082, 1083, + 1078, 1077, 1083, + 1078, 1083, 1084, + 1079, 1078, 1084, + 1079, 1084, 1085, + 1080, 1079, 1085, + 1080, 1085, 1086, + 1081, 954, 956, + 1081, 956, 1087, + 1082, 1081, 1087, + 1082, 1087, 1088, + 1083, 1082, 1088, + 1083, 1088, 1089, + 1084, 1083, 1089, + 1084, 1089, 1090, + 1085, 1084, 1090, + 1085, 1090, 1091, + 1086, 1085, 1091, + 1086, 1091, 1092, + 1087, 956, 958, + 1087, 958, 1093, + 1088, 1087, 1093, + 1088, 1093, 1094, + 1089, 1088, 1094, + 1089, 1094, 1095, + 1090, 1089, 1095, + 1090, 1095, 1096, + 1091, 1090, 1096, + 1091, 1096, 1097, + 1092, 1091, 1097, + 1092, 1097, 1098, + 1093, 958, 960, + 1093, 960, 1099, + 1094, 1093, 1099, + 1094, 1099, 1100, + 1095, 1094, 1100, + 1095, 1100, 1101, + 1096, 1095, 1101, + 1096, 1101, 1102, + 1097, 1096, 1102, + 1097, 1102, 1103, + 1098, 1097, 1103, + 1098, 1103, 1104, + 960, 913, 1099, + 1099, 913, 961, + 1100, 1099, 961, + 1100, 961, 963, + 1101, 1100, 963, + 1101, 963, 965, + 1102, 1101, 965, + 1102, 965, 967, + 1103, 1102, 967, + 1103, 967, 969, + 1104, 1103, 969, + 1104, 969, 971, + 1105, 1106, 1107, + 1108, 1105, 1107, + 1108, 1107, 1109, + 1110, 1108, 1109, + 1110, 1109, 1111, + 1112, 1110, 1111, + 1112, 1111, 1113, + 914, 1112, 1113, + 914, 1113, 915, + 1107, 1106, 1114, + 1109, 1107, 1114, + 1109, 1114, 1115, + 1111, 1109, 1115, + 1111, 1115, 1116, + 1113, 1111, 1116, + 1113, 1116, 1117, + 915, 1113, 1117, + 915, 1117, 917, + 1114, 1106, 1118, + 1115, 1114, 1118, + 1115, 1118, 1119, + 1116, 1115, 1119, + 1116, 1119, 1120, + 1117, 1116, 1120, + 1117, 1120, 1121, + 917, 1117, 1121, + 917, 1121, 919, + 1118, 1106, 1122, + 1119, 1118, 1122, + 1119, 1122, 1123, + 1120, 1119, 1123, + 1120, 1123, 1124, + 1121, 1120, 1124, + 1121, 1124, 1125, + 919, 1121, 1125, + 919, 1125, 921, + 1122, 1106, 1126, + 1123, 1122, 1126, + 1123, 1126, 1127, + 1124, 1123, 1127, + 1124, 1127, 1128, + 1125, 1124, 1128, + 1125, 1128, 1129, + 921, 1125, 1129, + 921, 1129, 923, + 1126, 1106, 1130, + 1127, 1126, 1130, + 1127, 1130, 1131, + 1128, 1127, 1131, + 1128, 1131, 1132, + 1129, 1128, 1132, + 1129, 1132, 1133, + 923, 1129, 1133, + 923, 1133, 925, + 1130, 1106, 1134, + 1131, 1130, 1134, + 1131, 1134, 1135, + 1132, 1131, 1135, + 1132, 1135, 1136, + 1133, 1132, 1136, + 1133, 1136, 1137, + 925, 1133, 1137, + 925, 1137, 927, + 1134, 1106, 1138, + 1135, 1134, 1138, + 1135, 1138, 1139, + 1136, 1135, 1139, + 1136, 1139, 1140, + 1137, 1136, 1140, + 1137, 1140, 1141, + 927, 1137, 1141, + 927, 1141, 929, + 1138, 1106, 1142, + 1139, 1138, 1142, + 1139, 1142, 1143, + 1140, 1139, 1143, + 1140, 1143, 1144, + 1141, 1140, 1144, + 1141, 1144, 1145, + 929, 1141, 1145, + 929, 1145, 931, + 1142, 1106, 1146, + 1143, 1142, 1146, + 1143, 1146, 1147, + 1144, 1143, 1147, + 1144, 1147, 1148, + 1145, 1144, 1148, + 1145, 1148, 1149, + 931, 1145, 1149, + 931, 1149, 933, + 1146, 1106, 1150, + 1147, 1146, 1150, + 1147, 1150, 1151, + 1148, 1147, 1151, + 1148, 1151, 1152, + 1149, 1148, 1152, + 1149, 1152, 1153, + 933, 1149, 1153, + 933, 1153, 935, + 1150, 1106, 1154, + 1151, 1150, 1154, + 1151, 1154, 1155, + 1152, 1151, 1155, + 1152, 1155, 1156, + 1153, 1152, 1156, + 1153, 1156, 1157, + 935, 1153, 1157, + 935, 1157, 937, + 1154, 1106, 1158, + 1155, 1154, 1158, + 1155, 1158, 1159, + 1156, 1155, 1159, + 1156, 1159, 1160, + 1157, 1156, 1160, + 1157, 1160, 1161, + 937, 1157, 1161, + 937, 1161, 939, + 1158, 1106, 1162, + 1159, 1158, 1162, + 1159, 1162, 1163, + 1160, 1159, 1163, + 1160, 1163, 1164, + 1161, 1160, 1164, + 1161, 1164, 1165, + 939, 1161, 1165, + 939, 1165, 941, + 1162, 1106, 1166, + 1163, 1162, 1166, + 1163, 1166, 1167, + 1164, 1163, 1167, + 1164, 1167, 1168, + 1165, 1164, 1168, + 1165, 1168, 1169, + 941, 1165, 1169, + 941, 1169, 943, + 1166, 1106, 1170, + 1167, 1166, 1170, + 1167, 1170, 1171, + 1168, 1167, 1171, + 1168, 1171, 1172, + 1169, 1168, 1172, + 1169, 1172, 1173, + 943, 1169, 1173, + 943, 1173, 945, + 1170, 1106, 1174, + 1171, 1170, 1174, + 1171, 1174, 1175, + 1172, 1171, 1175, + 1172, 1175, 1176, + 1173, 1172, 1176, + 1173, 1176, 1177, + 945, 1173, 1177, + 945, 1177, 947, + 1174, 1106, 1178, + 1175, 1174, 1178, + 1175, 1178, 1179, + 1176, 1175, 1179, + 1176, 1179, 1180, + 1177, 1176, 1180, + 1177, 1180, 1181, + 947, 1177, 1181, + 947, 1181, 949, + 1178, 1106, 1182, + 1179, 1178, 1182, + 1179, 1182, 1183, + 1180, 1179, 1183, + 1180, 1183, 1184, + 1181, 1180, 1184, + 1181, 1184, 1185, + 949, 1181, 1185, + 949, 1185, 951, + 1182, 1106, 1186, + 1183, 1182, 1186, + 1183, 1186, 1187, + 1184, 1183, 1187, + 1184, 1187, 1188, + 1185, 1184, 1188, + 1185, 1188, 1189, + 951, 1185, 1189, + 951, 1189, 953, + 1186, 1106, 1190, + 1187, 1186, 1190, + 1187, 1190, 1191, + 1188, 1187, 1191, + 1188, 1191, 1192, + 1189, 1188, 1192, + 1189, 1192, 1193, + 953, 1189, 1193, + 953, 1193, 955, + 1190, 1106, 1194, + 1191, 1190, 1194, + 1191, 1194, 1195, + 1192, 1191, 1195, + 1192, 1195, 1196, + 1193, 1192, 1196, + 1193, 1196, 1197, + 955, 1193, 1197, + 955, 1197, 957, + 1194, 1106, 1198, + 1195, 1194, 1198, + 1195, 1198, 1199, + 1196, 1195, 1199, + 1196, 1199, 1200, + 1197, 1196, 1200, + 1197, 1200, 1201, + 957, 1197, 1201, + 957, 1201, 959, + 1198, 1106, 1105, + 1199, 1198, 1105, + 1199, 1105, 1108, + 1200, 1199, 1108, + 1200, 1108, 1110, + 1201, 1200, 1110, + 1201, 1110, 1112, + 959, 1201, 1112, + 959, 1112, 914, + 1044, 1050, 1202, + 996, 1203, 990, + 972, 978, 1204, + 990, 1205, 984, + 1062, 1206, 1056, + 1038, 1207, 1032, + 1014, 1020, 1208, + 971, 972, 1209, + 971, 1209, 1104, + 1026, 1210, 1020, + 1068, 1211, 1062, + 1074, 1212, 1068, + 1032, 1213, 1026, + 1080, 1086, 1214, + 1038, 1044, 1207, + 1002, 1215, 996, + 1050, 1056, 1216, + 1098, 1217, 1092, + 1008, 1014, 1218, + 978, 984, 1219, + 1104, 1220, 1098, + 1074, 1080, 1212, + 1002, 1008, 1215, + 1086, 1092, 1221, + 1207, 1202, 1222, + 1223, 1220, 1224, + 1225, 1226, 1212, + 1211, 1212, 1226, + 1208, 1227, 1228, + 177, 520, 1229, + 1229, 520, 524, + 202, 524, 203, + 203, 527, 201, + 193, 183, 200, + 48, 41, 1230, + 1230, 41, 1231, + 75, 65, 82, + 49, 48, 1230, + 31, 39, 32, + 2, 32, 40, + 1232, 33, 24, + 1, 89, 2, + 17, 5, 16, + 23, 17, 16, + 580, 583, 1233, + 49, 1234, 47, + 65, 47, 1234, + 74, 73, 81, + 82, 65, 1234, + 31, 30, 55, + 2, 40, 83, + 41, 33, 1231, + 5, 4, 15, + 71, 64, 55, + 73, 75, 81, + 56, 131, 57, + 1233, 583, 587, + 1233, 587, 593, + 176, 178, 1235, + 258, 1236, 252, + 177, 1237, 178, + 251, 250, 1235, + 1238, 258, 243, + 237, 231, 1239, + 1240, 230, 778, + 527, 1241, 201, + 183, 179, 181, + 1242, 1241, 228, + 15, 4, 96, + 125, 130, 162, + 130, 136, 137, + 160, 714, 161, + 160, 1243, 714, + 1244, 151, 153, + 153, 714, 1244, + 143, 145, 144, + 778, 1245, 1240, + 1245, 778, 249, + 231, 221, 1246, + 779, 778, 230, + 227, 1246, 221, + 228, 230, 1242, + 229, 779, 230, + 593, 1247, 1248, + 152, 593, 153, + 146, 154, 168, + 709, 1249, 159, + 593, 152, 1247, + 580, 1250, 1251, + 580, 1233, 1250, + 413, 406, 905, + 912, 434, 427, + 352, 351, 911, + 446, 440, 1252, + 371, 1253, 1254, + 371, 364, 1253, + 481, 474, 907, + 378, 1255, 385, + 378, 1256, 1255, + 1257, 509, 502, + 907, 474, 467, + 385, 1258, 392, + 385, 1255, 1258, + 495, 1259, 909, + 1260, 467, 460, + 371, 1256, 378, + 371, 1254, 1256, + 399, 392, 1258, + 364, 352, 1261, + 413, 1262, 420, + 413, 906, 1262, + 453, 1263, 1264, + 1264, 460, 453, + 495, 488, 1265, + 1265, 1259, 495, + 406, 399, 1266, + 453, 446, 1267, + 1267, 1263, 453, + 488, 481, 908, + 908, 1265, 488, + 1210, 1213, 1268, + 1269, 1270, 1216, + 1270, 1271, 1216, + 1272, 1273, 1221, + 1273, 1274, 1221, + 1273, 1272, 1275, + 1209, 1204, 1224, + 1276, 1204, 1219, + 1218, 1277, 1278, + 1278, 1215, 1218, + 1270, 1269, 1279, + 1219, 1280, 1281, + 1206, 1211, 1282, + 1280, 1205, 1283, + 1205, 1284, 1283, + 1203, 1215, 1285, + 1215, 1278, 1285, + 1214, 1225, 1212, + 1211, 1226, 1282, + 1205, 1203, 1284, + 1203, 1285, 1284, + 1221, 1274, 1214, + 1274, 1225, 1214, + 1268, 1213, 1222, + 1286, 1202, 1216, + 1277, 1218, 1208, + 1227, 1210, 1287, + 1210, 1288, 1287, + 1217, 1220, 1223, + 1243, 1244, 714, + 138, 143, 144, + 136, 143, 138, + 1248, 1233, 593, + 125, 162, 120, + 709, 1251, 1249, + 527, 228, 1241, + 231, 1246, 1239, + 243, 237, 1238, + 251, 1245, 249, + 23, 1232, 24, + 1231, 33, 1232, + 209, 199, 1289, + 1290, 215, 1291, + 1229, 524, 202, + 181, 200, 183, + 1289, 199, 200, + 215, 1290, 227, + 259, 1236, 180, + 346, 275, 337, + 318, 324, 339, + 306, 312, 341, + 312, 318, 340, + 348, 282, 342, + 347, 294, 343, + 330, 336, 345, + 324, 330, 338, + 336, 275, 344, + 343, 300, 341, + 342, 288, 347, + 337, 276, 348, + 1262, 910, 420, + 1257, 911, 509, + 1252, 440, 912, + 1050, 1216, 1202, + 1203, 1205, 990, + 978, 1219, 1204, + 1205, 1280, 984, + 1206, 1269, 1056, + 1207, 1213, 1032, + 1020, 1227, 1208, + 972, 1204, 1209, + 1209, 1220, 1104, + 1210, 1227, 1020, + 1211, 1206, 1062, + 1212, 1211, 1068, + 1213, 1210, 1026, + 1086, 1221, 1214, + 1044, 1202, 1207, + 1215, 1203, 996, + 1056, 1269, 1216, + 1217, 1272, 1092, + 1014, 1208, 1218, + 984, 1280, 1219, + 1220, 1217, 1098, + 1080, 1214, 1212, + 1008, 1218, 1215, + 1092, 1272, 1221, + 1202, 1286, 1222, + 1220, 1209, 1224, + 1227, 1287, 1228, + 1237, 177, 1229, + 1236, 259, 252, + 250, 176, 1235, + 161, 709, 159, + 709, 580, 1251, + 910, 912, 427, + 1261, 352, 911, + 1267, 446, 1252, + 909, 1257, 502, + 1260, 907, 467, + 1264, 1260, 460, + 1266, 399, 1258, + 1253, 364, 1261, + 905, 406, 1266, + 1288, 1210, 1268, + 1272, 1217, 1275, + 1204, 1276, 1224, + 1281, 1276, 1219, + 1269, 1206, 1279, + 1280, 1283, 1281, + 1279, 1206, 1282, + 1213, 1207, 1222, + 1271, 1286, 1216, + 1228, 1277, 1208, + 1275, 1217, 1223, + 237, 1239, 1238, + 1291, 209, 1289, + 215, 209, 1291, +}; diff --git a/graphics/gpu/shadow_mapping/source/teapot.h b/graphics/gpu/shadow_mapping/source/teapot.h new file mode 100644 index 0000000..93d5e97 --- /dev/null +++ b/graphics/gpu/shadow_mapping/source/teapot.h @@ -0,0 +1,5 @@ +#pragma once + +extern const float vertex_array[7752]; +extern const u16 vertex_elements[7392]; +#define vertex_element_count 7392