Browse Source

Added a workaround for a crash in NVIDIA drivers when rendering YUV with Vulkan

Fixes https://github.com/libsdl-org/SDL/issues/13878
Sam Lantinga 11 hours ago
parent
commit
e0b12bbcea

+ 2 - 0
VisualC/SDL/SDL.vcxproj

@@ -591,8 +591,10 @@
     <ClInclude Include="..\..\src\render\software\SDL_triangle.h" />
     <ClInclude Include="..\..\src\render\software\SDL_triangle.h" />
     <ClInclude Include="..\..\src\render\vulkan\SDL_shaders_vulkan.h" />
     <ClInclude Include="..\..\src\render\vulkan\SDL_shaders_vulkan.h" />
     <ClInclude Include="..\..\src\render\vulkan\VULKAN_PixelShader_Advanced.h" />
     <ClInclude Include="..\..\src\render\vulkan\VULKAN_PixelShader_Advanced.h" />
+    <ClInclude Include="..\..\src\render\vulkan\VULKAN_PixelShader_Advanced_YUV.h" />
     <ClInclude Include="..\..\src\render\vulkan\VULKAN_PixelShader_Colors.h" />
     <ClInclude Include="..\..\src\render\vulkan\VULKAN_PixelShader_Colors.h" />
     <ClInclude Include="..\..\src\render\vulkan\VULKAN_PixelShader_Textures.h" />
     <ClInclude Include="..\..\src\render\vulkan\VULKAN_PixelShader_Textures.h" />
+    <ClInclude Include="..\..\src\render\vulkan\VULKAN_PixelShader_Textures_YUV.h" />
     <ClInclude Include="..\..\src\render\vulkan\VULKAN_VertexShader.h" />
     <ClInclude Include="..\..\src\render\vulkan\VULKAN_VertexShader.h" />
     <ClInclude Include="..\..\src\SDL_assert_c.h" />
     <ClInclude Include="..\..\src\SDL_assert_c.h" />
     <ClInclude Include="..\..\src\SDL_error_c.h" />
     <ClInclude Include="..\..\src\SDL_error_c.h" />

+ 7 - 1
VisualC/SDL/SDL.vcxproj.filters

@@ -1155,12 +1155,18 @@
     <ClInclude Include="..\..\src\render\vulkan\VULKAN_PixelShader_Advanced.h">
     <ClInclude Include="..\..\src\render\vulkan\VULKAN_PixelShader_Advanced.h">
       <Filter>render\vulkan</Filter>
       <Filter>render\vulkan</Filter>
     </ClInclude>
     </ClInclude>
+    <ClInclude Include="..\..\src\render\vulkan\VULKAN_PixelShader_Advanced_YUV.h">
+      <Filter>render\vulkan</Filter>
+    </ClInclude>
     <ClInclude Include="..\..\src\render\vulkan\VULKAN_PixelShader_Colors.h">
     <ClInclude Include="..\..\src\render\vulkan\VULKAN_PixelShader_Colors.h">
       <Filter>render\vulkan</Filter>
       <Filter>render\vulkan</Filter>
     </ClInclude>
     </ClInclude>
     <ClInclude Include="..\..\src\render\vulkan\VULKAN_PixelShader_Textures.h">
     <ClInclude Include="..\..\src\render\vulkan\VULKAN_PixelShader_Textures.h">
       <Filter>render\vulkan</Filter>
       <Filter>render\vulkan</Filter>
     </ClInclude>
     </ClInclude>
+    <ClInclude Include="..\..\src\render\vulkan\VULKAN_PixelShader_Textures_YUV.h">
+      <Filter>render\vulkan</Filter>
+    </ClInclude>
     <ClInclude Include="..\..\src\render\vulkan\VULKAN_VertexShader.h">
     <ClInclude Include="..\..\src\render\vulkan\VULKAN_VertexShader.h">
       <Filter>render\vulkan</Filter>
       <Filter>render\vulkan</Filter>
     </ClInclude>
     </ClInclude>
@@ -2084,4 +2090,4 @@
       <Filter>core\windows</Filter>
       <Filter>core\windows</Filter>
     </ResourceCompile>
     </ResourceCompile>
   </ItemGroup>
   </ItemGroup>
-</Project>
+</Project>

+ 21 - 13
src/render/vulkan/SDL_render_vulkan.c

@@ -3549,7 +3549,7 @@ static void VULKAN_SetupShaderConstants(SDL_Renderer *renderer, const SDL_Render
     }
     }
 }
 }
 
 
-static VULKAN_Shader SelectShader(const VULKAN_PixelShaderConstants *shader_constants)
+static VULKAN_Shader SelectShader(const VULKAN_PixelShaderConstants *shader_constants, bool yuv)
 {
 {
     if (!shader_constants) {
     if (!shader_constants) {
         return SHADER_SOLID;
         return SHADER_SOLID;
@@ -3558,10 +3558,18 @@ static VULKAN_Shader SelectShader(const VULKAN_PixelShaderConstants *shader_cons
     if (shader_constants->texture_type == TEXTURETYPE_RGB &&
     if (shader_constants->texture_type == TEXTURETYPE_RGB &&
         shader_constants->input_type == INPUTTYPE_UNSPECIFIED &&
         shader_constants->input_type == INPUTTYPE_UNSPECIFIED &&
         shader_constants->tonemap_method == TONEMAP_NONE) {
         shader_constants->tonemap_method == TONEMAP_NONE) {
-        return SHADER_RGB;
+        if (yuv) {
+            return SHADER_RGB_YUV;
+        } else {
+            return SHADER_RGB;
+        }
     }
     }
 
 
-    return SHADER_ADVANCED;
+    if (yuv) {
+        return SHADER_ADVANCED_YUV;
+    } else {
+        return SHADER_ADVANCED;
+    }
 }
 }
 
 
 static VkDescriptorPool VULKAN_AllocateDescriptorPool(VULKAN_RenderData *rendererData)
 static VkDescriptorPool VULKAN_AllocateDescriptorPool(VULKAN_RenderData *rendererData)
@@ -3752,8 +3760,7 @@ static VkDescriptorSet VULKAN_AllocateDescriptorSet(SDL_Renderer *renderer, VULK
     return descriptorSet;
     return descriptorSet;
 }
 }
 
 
-static bool VULKAN_SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand *cmd, VkPipelineLayout pipelineLayout, VkDescriptorSetLayout descriptorSetLayout,
-    const VULKAN_PixelShaderConstants *shader_constants, VkPrimitiveTopology topology, int numImages, VkImageView *imageViews, int numSamplers, VkSampler *samplers, const Float4X4 *matrix, VULKAN_DrawStateCache *stateCache)
+static bool VULKAN_SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand *cmd, VkPipelineLayout pipelineLayout, VkDescriptorSetLayout descriptorSetLayout, const VULKAN_PixelShaderConstants *shader_constants, VkPrimitiveTopology topology, int numImages, VkImageView *imageViews, int numSamplers, VkSampler *samplers, const Float4X4 *matrix, VULKAN_DrawStateCache *stateCache, bool yuv)
 
 
 {
 {
     VULKAN_RenderData *rendererData = (VULKAN_RenderData *)renderer->internal;
     VULKAN_RenderData *rendererData = (VULKAN_RenderData *)renderer->internal;
@@ -3761,7 +3768,7 @@ static bool VULKAN_SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand
     VkFormat format = rendererData->surfaceFormat.format;
     VkFormat format = rendererData->surfaceFormat.format;
     const Float4X4 *newmatrix = matrix ? matrix : &rendererData->identity;
     const Float4X4 *newmatrix = matrix ? matrix : &rendererData->identity;
     bool updateConstants = false;
     bool updateConstants = false;
-    VULKAN_Shader shader = SelectShader(shader_constants);
+    VULKAN_Shader shader = SelectShader(shader_constants, yuv);
     VULKAN_PixelShaderConstants solid_constants;
     VULKAN_PixelShaderConstants solid_constants;
     VkDescriptorSet descriptorSet;
     VkDescriptorSet descriptorSet;
     VkBuffer constantBuffer;
     VkBuffer constantBuffer;
@@ -3975,6 +3982,7 @@ static bool VULKAN_SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand
     VULKAN_PixelShaderConstants constants;
     VULKAN_PixelShaderConstants constants;
     VkDescriptorSetLayout descriptorSetLayout = (textureData->descriptorSetLayoutYcbcr != VK_NULL_HANDLE) ? textureData->descriptorSetLayoutYcbcr : rendererData->descriptorSetLayout;
     VkDescriptorSetLayout descriptorSetLayout = (textureData->descriptorSetLayoutYcbcr != VK_NULL_HANDLE) ? textureData->descriptorSetLayoutYcbcr : rendererData->descriptorSetLayout;
     VkPipelineLayout pipelineLayout = (textureData->pipelineLayoutYcbcr != VK_NULL_HANDLE) ? textureData->pipelineLayoutYcbcr : rendererData->pipelineLayout;
     VkPipelineLayout pipelineLayout = (textureData->pipelineLayoutYcbcr != VK_NULL_HANDLE) ? textureData->pipelineLayoutYcbcr : rendererData->pipelineLayout;
+    bool yuv = (textureData->descriptorSetLayoutYcbcr != VK_NULL_HANDLE);
 
 
     VULKAN_SetupShaderConstants(renderer, cmd, texture, &constants);
     VULKAN_SetupShaderConstants(renderer, cmd, texture, &constants);
 
 
@@ -4043,7 +4051,7 @@ static bool VULKAN_SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand
         samplers[numSamplers++] = samplers[0];
         samplers[numSamplers++] = samplers[0];
     }
     }
 
 
-    return VULKAN_SetDrawState(renderer, cmd, pipelineLayout, descriptorSetLayout, &constants, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, numImageViews, imageViews, numSamplers, samplers, matrix, stateCache);
+    return VULKAN_SetDrawState(renderer, cmd, pipelineLayout, descriptorSetLayout, &constants, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, numImageViews, imageViews, numSamplers, samplers, matrix, stateCache, yuv);
 }
 }
 
 
 static void VULKAN_DrawPrimitives(SDL_Renderer *renderer, VkPrimitiveTopology primitiveTopology, const size_t vertexStart, const size_t vertexCount)
 static void VULKAN_DrawPrimitives(SDL_Renderer *renderer, VkPrimitiveTopology primitiveTopology, const size_t vertexStart, const size_t vertexCount)
@@ -4151,14 +4159,14 @@ static bool VULKAN_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cm
             size_t line_start = 0;
             size_t line_start = 0;
             size_t line_end = line_start + count - 1;
             size_t line_end = line_start + count - 1;
             if (verts[line_start].pos[0] != verts[line_end].pos[0] || verts[line_start].pos[1] != verts[line_end].pos[1]) {
             if (verts[line_start].pos[0] != verts[line_end].pos[0] || verts[line_start].pos[1] != verts[line_end].pos[1]) {
-                VULKAN_SetDrawState(renderer, cmd, rendererData->pipelineLayout, rendererData->descriptorSetLayout, NULL, VK_PRIMITIVE_TOPOLOGY_POINT_LIST, 0, NULL, 0, NULL, NULL, &stateCache);
+                VULKAN_SetDrawState(renderer, cmd, rendererData->pipelineLayout, rendererData->descriptorSetLayout, NULL, VK_PRIMITIVE_TOPOLOGY_POINT_LIST, 0, NULL, 0, NULL, NULL, &stateCache, false);
                 VULKAN_DrawPrimitives(renderer, VK_PRIMITIVE_TOPOLOGY_POINT_LIST, start + line_end, 1);
                 VULKAN_DrawPrimitives(renderer, VK_PRIMITIVE_TOPOLOGY_POINT_LIST, start + line_end, 1);
                 have_point_draw_state = true;
                 have_point_draw_state = true;
             }
             }
 
 
             if (count > 2) {
             if (count > 2) {
                 // joined lines cannot be grouped
                 // joined lines cannot be grouped
-                VULKAN_SetDrawState(renderer, cmd, rendererData->pipelineLayout, rendererData->descriptorSetLayout, NULL, VK_PRIMITIVE_TOPOLOGY_LINE_STRIP, 0, NULL, 0, NULL, NULL, &stateCache);
+                VULKAN_SetDrawState(renderer, cmd, rendererData->pipelineLayout, rendererData->descriptorSetLayout, NULL, VK_PRIMITIVE_TOPOLOGY_LINE_STRIP, 0, NULL, 0, NULL, NULL, &stateCache, false);
                 VULKAN_DrawPrimitives(renderer, VK_PRIMITIVE_TOPOLOGY_LINE_STRIP, start, count);
                 VULKAN_DrawPrimitives(renderer, VK_PRIMITIVE_TOPOLOGY_LINE_STRIP, start, count);
             } else {
             } else {
                 // let's group non joined lines
                 // let's group non joined lines
@@ -4188,7 +4196,7 @@ static bool VULKAN_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cm
                         line_end = line_start + nextcmd->data.draw.count - 1;
                         line_end = line_start + nextcmd->data.draw.count - 1;
                         if (verts[line_start].pos[0] != verts[line_end].pos[0] || verts[line_start].pos[1] != verts[line_end].pos[1]) {
                         if (verts[line_start].pos[0] != verts[line_end].pos[0] || verts[line_start].pos[1] != verts[line_end].pos[1]) {
                             if (!have_point_draw_state) {
                             if (!have_point_draw_state) {
-                                VULKAN_SetDrawState(renderer, cmd, rendererData->pipelineLayout, rendererData->descriptorSetLayout, NULL, VK_PRIMITIVE_TOPOLOGY_POINT_LIST, 0, NULL, 0, NULL, NULL, &stateCache);
+                                VULKAN_SetDrawState(renderer, cmd, rendererData->pipelineLayout, rendererData->descriptorSetLayout, NULL, VK_PRIMITIVE_TOPOLOGY_POINT_LIST, 0, NULL, 0, NULL, NULL, &stateCache, false);
                                 have_point_draw_state = true;
                                 have_point_draw_state = true;
                             }
                             }
                             VULKAN_DrawPrimitives(renderer, VK_PRIMITIVE_TOPOLOGY_POINT_LIST, start + line_end, 1);
                             VULKAN_DrawPrimitives(renderer, VK_PRIMITIVE_TOPOLOGY_POINT_LIST, start + line_end, 1);
@@ -4197,7 +4205,7 @@ static bool VULKAN_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cm
                     }
                     }
                 }
                 }
 
 
-                VULKAN_SetDrawState(renderer, cmd, rendererData->pipelineLayout, rendererData->descriptorSetLayout, NULL, VK_PRIMITIVE_TOPOLOGY_LINE_LIST, 0, NULL, 0, NULL, NULL, &stateCache);
+                VULKAN_SetDrawState(renderer, cmd, rendererData->pipelineLayout, rendererData->descriptorSetLayout, NULL, VK_PRIMITIVE_TOPOLOGY_LINE_LIST, 0, NULL, 0, NULL, NULL, &stateCache, false);
                 VULKAN_DrawPrimitives(renderer, VK_PRIMITIVE_TOPOLOGY_LINE_LIST, start, count);
                 VULKAN_DrawPrimitives(renderer, VK_PRIMITIVE_TOPOLOGY_LINE_LIST, start, count);
 
 
                 cmd = finalcmd; // skip any copy commands we just combined in here.
                 cmd = finalcmd; // skip any copy commands we just combined in here.
@@ -4256,12 +4264,12 @@ static bool VULKAN_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cm
                 if (thistexture) {
                 if (thistexture) {
                     VULKAN_SetCopyState(renderer, cmd, NULL, &stateCache);
                     VULKAN_SetCopyState(renderer, cmd, NULL, &stateCache);
                 } else {
                 } else {
-                    VULKAN_SetDrawState(renderer, cmd, rendererData->pipelineLayout, rendererData->descriptorSetLayout, NULL, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, 0, NULL, 0, NULL, NULL, &stateCache);
+                    VULKAN_SetDrawState(renderer, cmd, rendererData->pipelineLayout, rendererData->descriptorSetLayout, NULL, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, 0, NULL, 0, NULL, NULL, &stateCache, false);
                 }
                 }
 
 
                 VULKAN_DrawPrimitives(renderer, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, start, count);
                 VULKAN_DrawPrimitives(renderer, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, start, count);
             } else {
             } else {
-                VULKAN_SetDrawState(renderer, cmd, rendererData->pipelineLayout, rendererData->descriptorSetLayout, NULL, VK_PRIMITIVE_TOPOLOGY_POINT_LIST, 0, NULL, 0, NULL, NULL, &stateCache);
+                VULKAN_SetDrawState(renderer, cmd, rendererData->pipelineLayout, rendererData->descriptorSetLayout, NULL, VK_PRIMITIVE_TOPOLOGY_POINT_LIST, 0, NULL, 0, NULL, NULL, &stateCache, false);
                 VULKAN_DrawPrimitives(renderer, VK_PRIMITIVE_TOPOLOGY_POINT_LIST, start, count);
                 VULKAN_DrawPrimitives(renderer, VK_PRIMITIVE_TOPOLOGY_POINT_LIST, start, count);
             }
             }
             cmd = finalcmd; // skip any copy commands we just combined in here.
             cmd = finalcmd; // skip any copy commands we just combined in here.

+ 6 - 0
src/render/vulkan/SDL_shaders_vulkan.c

@@ -27,7 +27,9 @@
 // The shaders here were compiled with compile_shaders.bat
 // The shaders here were compiled with compile_shaders.bat
 #include "VULKAN_PixelShader_Colors.h"
 #include "VULKAN_PixelShader_Colors.h"
 #include "VULKAN_PixelShader_Textures.h"
 #include "VULKAN_PixelShader_Textures.h"
+#include "VULKAN_PixelShader_Textures_YUV.h"
 #include "VULKAN_PixelShader_Advanced.h"
 #include "VULKAN_PixelShader_Advanced.h"
+#include "VULKAN_PixelShader_Advanced_YUV.h"
 #include "VULKAN_VertexShader.h"
 #include "VULKAN_VertexShader.h"
 
 
 static struct
 static struct
@@ -41,8 +43,12 @@ static struct
       VULKAN_VertexShader, sizeof(VULKAN_VertexShader) },
       VULKAN_VertexShader, sizeof(VULKAN_VertexShader) },
     { VULKAN_PixelShader_Textures, sizeof(VULKAN_PixelShader_Textures),
     { VULKAN_PixelShader_Textures, sizeof(VULKAN_PixelShader_Textures),
       VULKAN_VertexShader, sizeof(VULKAN_VertexShader) },
       VULKAN_VertexShader, sizeof(VULKAN_VertexShader) },
+    { VULKAN_PixelShader_Textures_YUV, sizeof(VULKAN_PixelShader_Textures_YUV),
+      VULKAN_VertexShader, sizeof(VULKAN_VertexShader) },
     { VULKAN_PixelShader_Advanced, sizeof(VULKAN_PixelShader_Advanced),
     { VULKAN_PixelShader_Advanced, sizeof(VULKAN_PixelShader_Advanced),
       VULKAN_VertexShader, sizeof(VULKAN_VertexShader) },
       VULKAN_VertexShader, sizeof(VULKAN_VertexShader) },
+    { VULKAN_PixelShader_Advanced_YUV, sizeof(VULKAN_PixelShader_Advanced_YUV),
+      VULKAN_VertexShader, sizeof(VULKAN_VertexShader) },
 };
 };
 
 
 void VULKAN_GetVertexShader(VULKAN_Shader shader, const uint32_t **outBytecode, size_t *outSize)
 void VULKAN_GetVertexShader(VULKAN_Shader shader, const uint32_t **outBytecode, size_t *outSize)

+ 2 - 0
src/render/vulkan/SDL_shaders_vulkan.h

@@ -31,7 +31,9 @@ typedef enum
 {
 {
     SHADER_SOLID,
     SHADER_SOLID,
     SHADER_RGB,
     SHADER_RGB,
+    SHADER_RGB_YUV,
     SHADER_ADVANCED,
     SHADER_ADVANCED,
+    SHADER_ADVANCED_YUV,
     NUM_SHADERS
     NUM_SHADERS
 } VULKAN_Shader;
 } VULKAN_Shader;
 
 

+ 1 - 1
src/render/vulkan/VULKAN_PixelShader_Advanced.h

@@ -1,4 +1,4 @@
-	// 1113.1.1
+	// 1114.0.0
 	 #pragma once
 	 #pragma once
 static const uint32_t VULKAN_PixelShader_Advanced[] = {
 static const uint32_t VULKAN_PixelShader_Advanced[] = {
 	0x07230203,0x00010000,0x0008000b,0x000006bb,0x00000000,0x00020011,0x00000001,0x0006000b,
 	0x07230203,0x00010000,0x0008000b,0x000006bb,0x00000000,0x00020011,0x00000001,0x0006000b,

+ 415 - 0
src/render/vulkan/VULKAN_PixelShader_Advanced_YUV.h

@@ -0,0 +1,415 @@
+	// 1114.0.0
+	 #pragma once
+static const uint32_t VULKAN_PixelShader_Advanced_YUV[] = {
+	0x07230203,0x00010000,0x0008000b,0x0000066d,0x00000000,0x00020011,0x00000001,0x0006000b,
+	0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
+	0x0008000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x00000277,0x0000027a,0x0000027e,
+	0x00030010,0x00000004,0x00000007,0x00030003,0x00000005,0x000001f4,0x00040005,0x00000004,
+	0x6e69616d,0x00000000,0x00050005,0x00000081,0x736e6f43,0x746e6174,0x00000073,0x00070006,
+	0x00000081,0x00000000,0x47526373,0x756f5f42,0x74757074,0x00000000,0x00070006,0x00000081,
+	0x00000001,0x74786574,0x5f657275,0x65707974,0x00000000,0x00060006,0x00000081,0x00000002,
+	0x75706e69,0x79745f74,0x00006570,0x00060006,0x00000081,0x00000003,0x6f6c6f63,0x63735f72,
+	0x00656c61,0x00060006,0x00000081,0x00000004,0x65786574,0x69735f6c,0x0000657a,0x00070006,
+	0x00000081,0x00000005,0x656e6f74,0x5f70616d,0x6874656d,0x0000646f,0x00070006,0x00000081,
+	0x00000006,0x656e6f74,0x5f70616d,0x74636166,0x0031726f,0x00070006,0x00000081,0x00000007,
+	0x656e6f74,0x5f70616d,0x74636166,0x0032726f,0x00070006,0x00000081,0x00000008,0x5f726473,
+	0x74696877,0x6f705f65,0x00746e69,0x00030005,0x00000083,0x00000000,0x00050005,0x000000f2,
+	0x74786574,0x30657275,0x00000000,0x00050005,0x000000f9,0x74786574,0x31657275,0x00000000,
+	0x00050005,0x00000277,0x75706e69,0x65742e74,0x00000078,0x00050005,0x0000027a,0x75706e69,
+	0x6f632e74,0x00726f6c,0x00070005,0x0000027e,0x746e6540,0x6f507972,0x4f746e69,0x75707475,
+	0x00000074,0x00050048,0x00000081,0x00000000,0x00000023,0x00000000,0x00050048,0x00000081,
+	0x00000001,0x00000023,0x00000004,0x00050048,0x00000081,0x00000002,0x00000023,0x00000008,
+	0x00050048,0x00000081,0x00000003,0x00000023,0x0000000c,0x00050048,0x00000081,0x00000004,
+	0x00000023,0x00000010,0x00050048,0x00000081,0x00000005,0x00000023,0x00000020,0x00050048,
+	0x00000081,0x00000006,0x00000023,0x00000024,0x00050048,0x00000081,0x00000007,0x00000023,
+	0x00000028,0x00050048,0x00000081,0x00000008,0x00000023,0x0000002c,0x00030047,0x00000081,
+	0x00000002,0x00040047,0x00000083,0x00000022,0x00000000,0x00040047,0x00000083,0x00000021,
+	0x00000000,0x00040047,0x000000f2,0x00000022,0x00000000,0x00040047,0x000000f2,0x00000021,
+	0x00000001,0x00040047,0x000000f9,0x00000022,0x00000000,0x00040047,0x000000f9,0x00000021,
+	0x00000002,0x00040047,0x00000277,0x0000001e,0x00000000,0x00040047,0x0000027a,0x0000001e,
+	0x00000001,0x00040047,0x0000027e,0x0000001e,0x00000000,0x00020013,0x00000002,0x00030021,
+	0x00000003,0x00000002,0x00030016,0x00000006,0x00000020,0x00040017,0x0000000f,0x00000006,
+	0x00000003,0x00040017,0x00000018,0x00000006,0x00000002,0x00040017,0x0000001a,0x00000006,
+	0x00000004,0x0004002b,0x00000006,0x0000003e,0x3d25aee6,0x00020014,0x0000003f,0x0004002b,
+	0x00000006,0x00000044,0x414eb852,0x0004002b,0x00000006,0x00000048,0x3d6147ae,0x0004002b,
+	0x00000006,0x0000004b,0x3f870a3d,0x0004002b,0x00000006,0x0000004d,0x4019999a,0x0004002b,
+	0x00000006,0x00000053,0x3b4d2e1c,0x0004002b,0x00000006,0x0000005c,0x3ed55555,0x0004002b,
+	0x00000006,0x00000066,0x3c4fcdac,0x0006002c,0x0000000f,0x00000067,0x00000066,0x00000066,
+	0x00000066,0x0004002b,0x00000006,0x00000069,0x3f560000,0x0004002b,0x00000006,0x0000006c,
+	0x00000000,0x0006002c,0x0000000f,0x0000006d,0x0000006c,0x0000006c,0x0000006c,0x0004002b,
+	0x00000006,0x00000070,0x4196d000,0x0004002b,0x00000006,0x00000071,0x41958000,0x0004002b,
+	0x00000006,0x00000078,0x461c4000,0x0004002b,0x00000006,0x0000007d,0x40c8e06b,0x0006002c,
+	0x0000000f,0x0000007e,0x0000007d,0x0000007d,0x0000007d,0x000b001e,0x00000081,0x00000006,
+	0x00000006,0x00000006,0x00000006,0x0000001a,0x00000006,0x00000006,0x00000006,0x00000006,
+	0x00040020,0x00000082,0x00000002,0x00000081,0x0004003b,0x00000082,0x00000083,0x00000002,
+	0x00040015,0x00000084,0x00000020,0x00000001,0x0004002b,0x00000084,0x00000085,0x00000008,
+	0x00040020,0x00000086,0x00000002,0x00000006,0x0004002b,0x00000084,0x0000008d,0x00000005,
+	0x0004002b,0x00000006,0x00000090,0x3f800000,0x0004002b,0x00000084,0x00000094,0x00000006,
+	0x0004002b,0x00000006,0x0000009c,0x40000000,0x0004002b,0x00000084,0x000000a0,0x00000002,
+	0x00040018,0x000000a7,0x0000000f,0x00000003,0x0004002b,0x00000006,0x000000a8,0x3f209d8c,
+	0x0004002b,0x00000006,0x000000a9,0x3ea897c8,0x0004002b,0x00000006,0x000000aa,0x3d3168f9,
+	0x0006002c,0x0000000f,0x000000ab,0x000000a8,0x000000a9,0x000000aa,0x0004002b,0x00000006,
+	0x000000ac,0x3d8d82ba,0x0004002b,0x00000006,0x000000ad,0x3f6b670a,0x0004002b,0x00000006,
+	0x000000ae,0x3c3a27af,0x0006002c,0x0000000f,0x000000af,0x000000ac,0x000000ad,0x000000ae,
+	0x0004002b,0x00000006,0x000000b0,0x3c86466b,0x0004002b,0x00000006,0x000000b1,0x3db44029,
+	0x0004002b,0x00000006,0x000000b2,0x3f6545b7,0x0006002c,0x0000000f,0x000000b3,0x000000b0,
+	0x000000b1,0x000000b2,0x0006002c,0x000000a7,0x000000b4,0x000000ab,0x000000af,0x000000b3,
+	0x0004002b,0x00000084,0x000000cd,0x00000007,0x0004002b,0x00000006,0x000000dd,0x3fd48b22,
+	0x0004002b,0x00000006,0x000000de,0xbf1670a0,0x0004002b,0x00000006,0x000000df,0xbd952d23,
+	0x0006002c,0x0000000f,0x000000e0,0x000000dd,0x000000de,0x000000df,0x0004002b,0x00000006,
+	0x000000e1,0xbdff127f,0x0004002b,0x00000006,0x000000e2,0x3f9102b4,0x0004002b,0x00000006,
+	0x000000e3,0xbc08c60d,0x0006002c,0x0000000f,0x000000e4,0x000000e1,0x000000e2,0x000000e3,
+	0x0004002b,0x00000006,0x000000e5,0xbc94b7b3,0x0004002b,0x00000006,0x000000e6,0xbdce05cd,
+	0x0004002b,0x00000006,0x000000e7,0x3f8f333c,0x0006002c,0x0000000f,0x000000e8,0x000000e5,
+	0x000000e6,0x000000e7,0x0006002c,0x000000a7,0x000000e9,0x000000e0,0x000000e4,0x000000e8,
+	0x00090019,0x000000ef,0x00000006,0x00000001,0x00000000,0x00000000,0x00000000,0x00000001,
+	0x00000000,0x0003001b,0x000000f0,0x000000ef,0x00040020,0x000000f1,0x00000000,0x000000f0,
+	0x0004003b,0x000000f1,0x000000f2,0x00000000,0x0004002b,0x00000006,0x000000f7,0x437f0000,
+	0x0004003b,0x000000f1,0x000000f9,0x00000000,0x0004002b,0x00000006,0x000000fc,0x3f000000,
+	0x0004002b,0x00000084,0x00000106,0x00000004,0x00040020,0x00000107,0x00000002,0x0000001a,
+	0x0004002b,0x00000006,0x00000154,0x3727c5ac,0x0005002c,0x00000018,0x00000155,0x00000154,
+	0x00000154,0x0005002c,0x00000018,0x00000156,0x00000090,0x00000090,0x0004002b,0x00000084,
+	0x00000174,0x00000001,0x0004002b,0x00000006,0x00000182,0x40400000,0x0004002b,0x00000006,
+	0x0000018d,0x40800000,0x0004002b,0x00000006,0x00000198,0x40a00000,0x0004002b,0x00000084,
+	0x000001b0,0x00000003,0x0004002b,0x00000084,0x000001c0,0x00000000,0x00040020,0x00000272,
+	0x00000001,0x0000001a,0x00040020,0x00000276,0x00000001,0x00000018,0x0004003b,0x00000276,
+	0x00000277,0x00000001,0x0004003b,0x00000272,0x0000027a,0x00000001,0x00040020,0x0000027d,
+	0x00000003,0x0000001a,0x0004003b,0x0000027d,0x0000027e,0x00000003,0x0005002c,0x00000018,
+	0x00000622,0x000000fc,0x000000fc,0x0004002b,0x00000006,0x00000623,0x3b800000,0x0006002c,
+	0x0000000f,0x00000624,0x00000069,0x00000069,0x00000069,0x0006002c,0x0000000f,0x00000625,
+	0x00000070,0x00000070,0x00000070,0x0006002c,0x0000000f,0x0000062a,0x00000090,0x00000090,
+	0x00000090,0x0004002b,0x00000006,0x00000630,0x3f72a76f,0x0004002b,0x00000006,0x00000631,
+	0x3d9e8391,0x0007002c,0x0000001a,0x00000633,0x00000090,0x0000006c,0x00000090,0x00000090,
+	0x0004002b,0x00000006,0x00000634,0xbd6147ae,0x00030001,0x0000001a,0x0000066c,0x00050036,
+	0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003d,0x00000018,
+	0x00000278,0x00000277,0x0004003d,0x0000001a,0x0000027b,0x0000027a,0x00050041,0x00000086,
+	0x000002fd,0x00000083,0x00000174,0x0004003d,0x00000006,0x000002fe,0x000002fd,0x000500b4,
+	0x0000003f,0x000002ff,0x000002fe,0x00000090,0x000300f7,0x00000327,0x00000000,0x000400fa,
+	0x000002ff,0x00000300,0x00000305,0x000200f8,0x00000300,0x0004003d,0x000000f0,0x00000301,
+	0x000000f2,0x00050057,0x0000001a,0x00000304,0x00000301,0x00000278,0x000200f9,0x00000327,
+	0x000200f8,0x00000305,0x00050041,0x00000086,0x00000306,0x00000083,0x00000174,0x0004003d,
+	0x00000006,0x00000307,0x00000306,0x000500b4,0x0000003f,0x00000308,0x00000307,0x00000182,
+	0x000300f7,0x00000326,0x00000000,0x000400fa,0x00000308,0x00000309,0x0000030d,0x000200f8,
+	0x00000309,0x0004003d,0x000000f0,0x0000032c,0x000000f2,0x00050057,0x0000001a,0x0000032e,
+	0x0000032c,0x00000278,0x00050051,0x00000006,0x0000032f,0x0000032e,0x00000000,0x0004003d,
+	0x000000f0,0x00000331,0x000000f9,0x0008000c,0x00000006,0x00000333,0x00000001,0x00000032,
+	0x0000032f,0x000000f7,0x000000fc,0x00050085,0x00000006,0x00000334,0x00000333,0x00000623,
+	0x00050050,0x00000018,0x00000335,0x00000334,0x000000fc,0x00050057,0x0000001a,0x00000336,
+	0x00000331,0x00000335,0x000200f9,0x00000326,0x000200f8,0x0000030d,0x00050041,0x00000086,
+	0x0000030e,0x00000083,0x00000174,0x0004003d,0x00000006,0x0000030f,0x0000030e,0x000500b4,
+	0x0000003f,0x00000310,0x0000030f,0x0000018d,0x000300f7,0x00000325,0x00000000,0x000400fa,
+	0x00000310,0x00000311,0x00000315,0x000200f8,0x00000311,0x00050041,0x00000107,0x00000345,
+	0x00000083,0x00000106,0x0004003d,0x0000001a,0x00000346,0x00000345,0x0007004f,0x00000018,
+	0x00000347,0x00000346,0x00000346,0x00000002,0x00000003,0x0008000c,0x00000018,0x0000034a,
+	0x00000001,0x00000032,0x00000278,0x00000347,0x00000622,0x0006000c,0x00000018,0x0000034c,
+	0x00000001,0x00000008,0x0000034a,0x00050083,0x00000018,0x0000034e,0x0000034c,0x00000622,
+	0x00050041,0x00000107,0x0000034f,0x00000083,0x00000106,0x0004003d,0x0000001a,0x00000350,
+	0x0000034f,0x0007004f,0x00000018,0x00000351,0x00000350,0x00000350,0x00000000,0x00000001,
+	0x00050085,0x00000018,0x00000352,0x0000034e,0x00000351,0x0006000c,0x00000018,0x00000354,
+	0x00000001,0x00000008,0x0000034a,0x00050081,0x00000018,0x00000356,0x00000354,0x00000622,
+	0x00050041,0x00000107,0x00000357,0x00000083,0x00000106,0x0004003d,0x0000001a,0x00000358,
+	0x00000357,0x0007004f,0x00000018,0x00000359,0x00000358,0x00000358,0x00000000,0x00000001,
+	0x00050085,0x00000018,0x0000035a,0x00000356,0x00000359,0x00050051,0x00000006,0x0000035b,
+	0x00000352,0x00000000,0x00050051,0x00000006,0x0000035c,0x00000352,0x00000001,0x00050051,
+	0x00000006,0x0000035d,0x0000035a,0x00000000,0x00050051,0x00000006,0x0000035e,0x0000035a,
+	0x00000001,0x00070050,0x0000001a,0x0000035f,0x0000035b,0x0000035c,0x0000035d,0x0000035e,
+	0x0006000c,0x00000018,0x00000361,0x00000001,0x0000000a,0x0000034a,0x0007004f,0x00000018,
+	0x00000363,0x0000035f,0x0000035f,0x00000000,0x00000001,0x0004003d,0x000000f0,0x00000381,
+	0x000000f2,0x00050057,0x0000001a,0x00000383,0x00000381,0x00000363,0x00050051,0x00000006,
+	0x00000384,0x00000383,0x00000000,0x0004003d,0x000000f0,0x00000386,0x000000f9,0x0008000c,
+	0x00000006,0x00000388,0x00000001,0x00000032,0x00000384,0x000000f7,0x000000fc,0x00050085,
+	0x00000006,0x00000389,0x00000388,0x00000623,0x00050050,0x00000018,0x0000038a,0x00000389,
+	0x000000fc,0x00050057,0x0000001a,0x0000038b,0x00000386,0x0000038a,0x0007004f,0x00000018,
+	0x00000366,0x0000035f,0x0000035f,0x00000000,0x00000003,0x0004003d,0x000000f0,0x0000038f,
+	0x000000f2,0x00050057,0x0000001a,0x00000391,0x0000038f,0x00000366,0x00050051,0x00000006,
+	0x00000392,0x00000391,0x00000000,0x0004003d,0x000000f0,0x00000394,0x000000f9,0x0008000c,
+	0x00000006,0x00000396,0x00000001,0x00000032,0x00000392,0x000000f7,0x000000fc,0x00050085,
+	0x00000006,0x00000397,0x00000396,0x00000623,0x00050050,0x00000018,0x00000398,0x00000397,
+	0x000000fc,0x00050057,0x0000001a,0x00000399,0x00000394,0x00000398,0x0007004f,0x00000018,
+	0x00000369,0x0000035f,0x0000035f,0x00000002,0x00000001,0x0004003d,0x000000f0,0x0000039d,
+	0x000000f2,0x00050057,0x0000001a,0x0000039f,0x0000039d,0x00000369,0x00050051,0x00000006,
+	0x000003a0,0x0000039f,0x00000000,0x0004003d,0x000000f0,0x000003a2,0x000000f9,0x0008000c,
+	0x00000006,0x000003a4,0x00000001,0x00000032,0x000003a0,0x000000f7,0x000000fc,0x00050085,
+	0x00000006,0x000003a5,0x000003a4,0x00000623,0x00050050,0x00000018,0x000003a6,0x000003a5,
+	0x000000fc,0x00050057,0x0000001a,0x000003a7,0x000003a2,0x000003a6,0x0007004f,0x00000018,
+	0x0000036c,0x0000035f,0x0000035f,0x00000002,0x00000003,0x0004003d,0x000000f0,0x000003ab,
+	0x000000f2,0x00050057,0x0000001a,0x000003ad,0x000003ab,0x0000036c,0x00050051,0x00000006,
+	0x000003ae,0x000003ad,0x00000000,0x0004003d,0x000000f0,0x000003b0,0x000000f9,0x0008000c,
+	0x00000006,0x000003b2,0x00000001,0x00000032,0x000003ae,0x000000f7,0x000000fc,0x00050085,
+	0x00000006,0x000003b3,0x000003b2,0x00000623,0x00050050,0x00000018,0x000003b4,0x000003b3,
+	0x000000fc,0x00050057,0x0000001a,0x000003b5,0x000003b0,0x000003b4,0x00050051,0x00000006,
+	0x00000371,0x00000361,0x00000001,0x00070050,0x0000001a,0x00000372,0x00000371,0x00000371,
+	0x00000371,0x00000371,0x0008000c,0x0000001a,0x00000373,0x00000001,0x0000002e,0x0000038b,
+	0x00000399,0x00000372,0x00050051,0x00000006,0x00000377,0x00000361,0x00000001,0x00070050,
+	0x0000001a,0x00000378,0x00000377,0x00000377,0x00000377,0x00000377,0x0008000c,0x0000001a,
+	0x00000379,0x00000001,0x0000002e,0x000003a7,0x000003b5,0x00000378,0x00050051,0x00000006,
+	0x0000037b,0x00000361,0x00000000,0x00070050,0x0000001a,0x0000037c,0x0000037b,0x0000037b,
+	0x0000037b,0x0000037b,0x0008000c,0x0000001a,0x0000037d,0x00000001,0x0000002e,0x00000373,
+	0x00000379,0x0000037c,0x000200f9,0x00000325,0x000200f8,0x00000315,0x00050041,0x00000086,
+	0x00000316,0x00000083,0x00000174,0x0004003d,0x00000006,0x00000317,0x00000316,0x000500b4,
+	0x0000003f,0x00000318,0x00000317,0x00000198,0x000300f7,0x00000324,0x00000000,0x000400fa,
+	0x00000318,0x00000319,0x0000031f,0x000200f8,0x00000319,0x000400d1,0x00000018,0x000003bc,
+	0x00000278,0x00050041,0x00000107,0x000003bd,0x00000083,0x00000106,0x0004003d,0x0000001a,
+	0x000003be,0x000003bd,0x0007004f,0x00000018,0x000003bf,0x000003be,0x000003be,0x00000002,
+	0x00000003,0x00050085,0x00000018,0x000003c0,0x000003bc,0x000003bf,0x0008000c,0x00000018,
+	0x000003c1,0x00000001,0x0000002b,0x000003c0,0x00000155,0x00000156,0x00050041,0x00000107,
+	0x000003c3,0x00000083,0x00000106,0x0004003d,0x0000001a,0x000003c4,0x000003c3,0x0007004f,
+	0x00000018,0x000003c5,0x000003c4,0x000003c4,0x00000002,0x00000003,0x0005008e,0x00000018,
+	0x000003c8,0x000003c1,0x000000fc,0x0004007f,0x00000018,0x00000621,0x000003c8,0x0008000c,
+	0x00000018,0x000003c9,0x00000001,0x00000032,0x00000278,0x000003c5,0x00000621,0x00050083,
+	0x00000018,0x000003cc,0x00000156,0x000003c1,0x0006000c,0x00000018,0x000003ce,0x00000001,
+	0x0000000a,0x000003c9,0x0008000c,0x00000018,0x000003cf,0x00000001,0x00000031,0x000003cc,
+	0x00000156,0x000003ce,0x0006000c,0x00000018,0x000003d1,0x00000001,0x00000008,0x000003c9,
+	0x00050081,0x00000018,0x000003d3,0x000003d1,0x00000622,0x00050081,0x00000018,0x000003d5,
+	0x000003d3,0x000003cf,0x00050041,0x00000107,0x000003d6,0x00000083,0x00000106,0x0004003d,
+	0x0000001a,0x000003d7,0x000003d6,0x0007004f,0x00000018,0x000003d8,0x000003d7,0x000003d7,
+	0x00000000,0x00000001,0x00050085,0x00000018,0x000003d9,0x000003d5,0x000003d8,0x00050041,
+	0x00000107,0x000003e8,0x00000083,0x00000106,0x0004003d,0x0000001a,0x000003e9,0x000003e8,
+	0x0007004f,0x00000018,0x000003ea,0x000003e9,0x000003e9,0x00000002,0x00000003,0x0008000c,
+	0x00000018,0x000003ed,0x00000001,0x00000032,0x000003d9,0x000003ea,0x00000622,0x0006000c,
+	0x00000018,0x000003ef,0x00000001,0x00000008,0x000003ed,0x00050083,0x00000018,0x000003f1,
+	0x000003ef,0x00000622,0x00050041,0x00000107,0x000003f2,0x00000083,0x00000106,0x0004003d,
+	0x0000001a,0x000003f3,0x000003f2,0x0007004f,0x00000018,0x000003f4,0x000003f3,0x000003f3,
+	0x00000000,0x00000001,0x00050085,0x00000018,0x000003f5,0x000003f1,0x000003f4,0x0006000c,
+	0x00000018,0x000003f7,0x00000001,0x00000008,0x000003ed,0x00050081,0x00000018,0x000003f9,
+	0x000003f7,0x00000622,0x00050041,0x00000107,0x000003fa,0x00000083,0x00000106,0x0004003d,
+	0x0000001a,0x000003fb,0x000003fa,0x0007004f,0x00000018,0x000003fc,0x000003fb,0x000003fb,
+	0x00000000,0x00000001,0x00050085,0x00000018,0x000003fd,0x000003f9,0x000003fc,0x00050051,
+	0x00000006,0x000003fe,0x000003f5,0x00000000,0x00050051,0x00000006,0x000003ff,0x000003f5,
+	0x00000001,0x00050051,0x00000006,0x00000400,0x000003fd,0x00000000,0x00050051,0x00000006,
+	0x00000401,0x000003fd,0x00000001,0x00070050,0x0000001a,0x00000402,0x000003fe,0x000003ff,
+	0x00000400,0x00000401,0x0006000c,0x00000018,0x00000404,0x00000001,0x0000000a,0x000003ed,
+	0x0007004f,0x00000018,0x00000406,0x00000402,0x00000402,0x00000000,0x00000001,0x0004003d,
+	0x000000f0,0x00000424,0x000000f2,0x00050057,0x0000001a,0x00000426,0x00000424,0x00000406,
+	0x00050051,0x00000006,0x00000427,0x00000426,0x00000000,0x0004003d,0x000000f0,0x00000429,
+	0x000000f9,0x0008000c,0x00000006,0x0000042b,0x00000001,0x00000032,0x00000427,0x000000f7,
+	0x000000fc,0x00050085,0x00000006,0x0000042c,0x0000042b,0x00000623,0x00050050,0x00000018,
+	0x0000042d,0x0000042c,0x000000fc,0x00050057,0x0000001a,0x0000042e,0x00000429,0x0000042d,
+	0x0007004f,0x00000018,0x00000409,0x00000402,0x00000402,0x00000000,0x00000003,0x0004003d,
+	0x000000f0,0x00000432,0x000000f2,0x00050057,0x0000001a,0x00000434,0x00000432,0x00000409,
+	0x00050051,0x00000006,0x00000435,0x00000434,0x00000000,0x0004003d,0x000000f0,0x00000437,
+	0x000000f9,0x0008000c,0x00000006,0x00000439,0x00000001,0x00000032,0x00000435,0x000000f7,
+	0x000000fc,0x00050085,0x00000006,0x0000043a,0x00000439,0x00000623,0x00050050,0x00000018,
+	0x0000043b,0x0000043a,0x000000fc,0x00050057,0x0000001a,0x0000043c,0x00000437,0x0000043b,
+	0x0007004f,0x00000018,0x0000040c,0x00000402,0x00000402,0x00000002,0x00000001,0x0004003d,
+	0x000000f0,0x00000440,0x000000f2,0x00050057,0x0000001a,0x00000442,0x00000440,0x0000040c,
+	0x00050051,0x00000006,0x00000443,0x00000442,0x00000000,0x0004003d,0x000000f0,0x00000445,
+	0x000000f9,0x0008000c,0x00000006,0x00000447,0x00000001,0x00000032,0x00000443,0x000000f7,
+	0x000000fc,0x00050085,0x00000006,0x00000448,0x00000447,0x00000623,0x00050050,0x00000018,
+	0x00000449,0x00000448,0x000000fc,0x00050057,0x0000001a,0x0000044a,0x00000445,0x00000449,
+	0x0007004f,0x00000018,0x0000040f,0x00000402,0x00000402,0x00000002,0x00000003,0x0004003d,
+	0x000000f0,0x0000044e,0x000000f2,0x00050057,0x0000001a,0x00000450,0x0000044e,0x0000040f,
+	0x00050051,0x00000006,0x00000451,0x00000450,0x00000000,0x0004003d,0x000000f0,0x00000453,
+	0x000000f9,0x0008000c,0x00000006,0x00000455,0x00000001,0x00000032,0x00000451,0x000000f7,
+	0x000000fc,0x00050085,0x00000006,0x00000456,0x00000455,0x00000623,0x00050050,0x00000018,
+	0x00000457,0x00000456,0x000000fc,0x00050057,0x0000001a,0x00000458,0x00000453,0x00000457,
+	0x00050051,0x00000006,0x00000414,0x00000404,0x00000001,0x00070050,0x0000001a,0x00000415,
+	0x00000414,0x00000414,0x00000414,0x00000414,0x0008000c,0x0000001a,0x00000416,0x00000001,
+	0x0000002e,0x0000042e,0x0000043c,0x00000415,0x00050051,0x00000006,0x0000041a,0x00000404,
+	0x00000001,0x00070050,0x0000001a,0x0000041b,0x0000041a,0x0000041a,0x0000041a,0x0000041a,
+	0x0008000c,0x0000001a,0x0000041c,0x00000001,0x0000002e,0x0000044a,0x00000458,0x0000041b,
+	0x00050051,0x00000006,0x0000041e,0x00000404,0x00000000,0x00070050,0x0000001a,0x0000041f,
+	0x0000041e,0x0000041e,0x0000041e,0x0000041e,0x0008000c,0x0000001a,0x00000420,0x00000001,
+	0x0000002e,0x00000416,0x0000041c,0x0000041f,0x000200f9,0x00000324,0x000200f8,0x0000031f,
+	0x000200f9,0x00000324,0x000200f8,0x00000324,0x000700f5,0x0000001a,0x00000638,0x00000420,
+	0x00000319,0x00000633,0x0000031f,0x000200f9,0x00000325,0x000200f8,0x00000325,0x000700f5,
+	0x0000001a,0x00000637,0x0000037d,0x00000311,0x00000638,0x00000324,0x000200f9,0x00000326,
+	0x000200f8,0x00000326,0x000700f5,0x0000001a,0x00000636,0x00000336,0x00000309,0x00000637,
+	0x00000325,0x000200f9,0x00000327,0x000200f8,0x00000327,0x000700f5,0x0000001a,0x00000635,
+	0x00000304,0x00000300,0x00000636,0x00000326,0x00050041,0x00000086,0x00000294,0x00000083,
+	0x000000a0,0x0004003d,0x00000006,0x00000295,0x00000294,0x000500b4,0x0000003f,0x00000296,
+	0x00000295,0x00000182,0x000300f7,0x000002a1,0x00000000,0x000400fa,0x00000296,0x00000297,
+	0x000002a1,0x000200f8,0x00000297,0x0008004f,0x0000000f,0x00000299,0x00000635,0x00000635,
+	0x00000000,0x00000001,0x00000002,0x0006000c,0x0000000f,0x0000045e,0x00000001,0x00000004,
+	0x00000299,0x0007000c,0x0000000f,0x0000045f,0x00000001,0x0000001a,0x0000045e,0x00000067,
+	0x00050083,0x0000000f,0x00000461,0x0000045f,0x00000624,0x0007000c,0x0000000f,0x00000462,
+	0x00000001,0x00000028,0x00000461,0x0000006d,0x0006000c,0x0000000f,0x00000464,0x00000001,
+	0x00000004,0x00000299,0x0007000c,0x0000000f,0x00000465,0x00000001,0x0000001a,0x00000464,
+	0x00000067,0x0005008e,0x0000000f,0x00000466,0x00000465,0x00000071,0x00050083,0x0000000f,
+	0x00000468,0x00000625,0x00000466,0x00050088,0x0000000f,0x0000046b,0x00000462,0x00000468,
+	0x0006000c,0x0000000f,0x0000046c,0x00000001,0x00000004,0x0000046b,0x0007000c,0x0000000f,
+	0x0000046d,0x00000001,0x0000001a,0x0000046c,0x0000007e,0x0005008e,0x0000000f,0x0000046e,
+	0x0000046d,0x00000078,0x00050041,0x00000086,0x0000046f,0x00000083,0x00000085,0x0004003d,
+	0x00000006,0x00000470,0x0000046f,0x00060050,0x0000000f,0x00000471,0x00000470,0x00000470,
+	0x00000470,0x00050088,0x0000000f,0x00000472,0x0000046e,0x00000471,0x00050051,0x00000006,
+	0x0000029c,0x00000472,0x00000000,0x00060052,0x0000001a,0x000005cd,0x0000029c,0x00000635,
+	0x00000000,0x00050051,0x00000006,0x0000029e,0x00000472,0x00000001,0x00060052,0x0000001a,
+	0x000005cf,0x0000029e,0x000005cd,0x00000001,0x00050051,0x00000006,0x000002a0,0x00000472,
+	0x00000002,0x00060052,0x0000001a,0x000005d1,0x000002a0,0x000005cf,0x00000002,0x000200f9,
+	0x000002a1,0x000200f8,0x000002a1,0x000700f5,0x0000001a,0x00000639,0x00000635,0x00000327,
+	0x000005d1,0x00000297,0x00050041,0x00000086,0x000002a2,0x00000083,0x0000008d,0x0004003d,
+	0x00000006,0x000002a3,0x000002a2,0x000500b7,0x0000003f,0x000002a4,0x000002a3,0x0000006c,
+	0x000300f7,0x000002af,0x00000000,0x000400fa,0x000002a4,0x000002a5,0x000002af,0x000200f8,
+	0x000002a5,0x0008004f,0x0000000f,0x000002a7,0x00000639,0x00000639,0x00000000,0x00000001,
+	0x00000002,0x00050041,0x00000086,0x00000477,0x00000083,0x0000008d,0x0004003d,0x00000006,
+	0x00000478,0x00000477,0x000500b4,0x0000003f,0x00000479,0x00000478,0x00000090,0x000300f7,
+	0x000004ad,0x00000000,0x000400fa,0x00000479,0x0000047a,0x0000047f,0x000200f8,0x0000047a,
+	0x00050041,0x00000086,0x0000047b,0x00000083,0x00000094,0x0004003d,0x00000006,0x0000047c,
+	0x0000047b,0x0005008e,0x0000000f,0x0000047e,0x000002a7,0x0000047c,0x000200f9,0x000004ad,
+	0x000200f8,0x0000047f,0x00050041,0x00000086,0x00000480,0x00000083,0x0000008d,0x0004003d,
+	0x00000006,0x00000481,0x00000480,0x000500b4,0x0000003f,0x00000482,0x00000481,0x0000009c,
+	0x000300f7,0x000004ac,0x00000000,0x000400fa,0x00000482,0x00000483,0x000004ac,0x000200f8,
+	0x00000483,0x00050041,0x00000086,0x00000484,0x00000083,0x000000a0,0x0004003d,0x00000006,
+	0x00000485,0x00000484,0x000500b4,0x0000003f,0x00000486,0x00000485,0x0000009c,0x000300f7,
+	0x0000048a,0x00000000,0x000400fa,0x00000486,0x00000487,0x0000048a,0x000200f8,0x00000487,
+	0x00050090,0x0000000f,0x00000489,0x000002a7,0x000000b4,0x000200f9,0x0000048a,0x000200f8,
+	0x0000048a,0x000700f5,0x0000000f,0x0000063a,0x000002a7,0x00000483,0x00000489,0x00000487,
+	0x00050051,0x00000006,0x0000048c,0x0000063a,0x00000000,0x00050051,0x00000006,0x0000048e,
+	0x0000063a,0x00000001,0x00050051,0x00000006,0x00000490,0x0000063a,0x00000002,0x0007000c,
+	0x00000006,0x00000491,0x00000001,0x00000028,0x0000048e,0x00000490,0x0007000c,0x00000006,
+	0x00000492,0x00000001,0x00000028,0x0000048c,0x00000491,0x000500ba,0x0000003f,0x00000494,
+	0x00000492,0x0000006c,0x000300f7,0x000004a4,0x00000000,0x000400fa,0x00000494,0x00000495,
+	0x000004a4,0x000200f8,0x00000495,0x00050041,0x00000086,0x00000496,0x00000083,0x00000094,
+	0x0004003d,0x00000006,0x00000497,0x00000496,0x0008000c,0x00000006,0x0000049a,0x00000001,
+	0x00000032,0x00000497,0x00000492,0x00000090,0x00050041,0x00000086,0x0000049b,0x00000083,
+	0x000000cd,0x0004003d,0x00000006,0x0000049c,0x0000049b,0x0008000c,0x00000006,0x0000049f,
+	0x00000001,0x00000032,0x0000049c,0x00000492,0x00000090,0x00050088,0x00000006,0x000004a0,
+	0x0000049a,0x0000049f,0x0005008e,0x0000000f,0x000004a3,0x0000063a,0x000004a0,0x000200f9,
+	0x000004a4,0x000200f8,0x000004a4,0x000700f5,0x0000000f,0x0000063b,0x0000063a,0x0000048a,
+	0x000004a3,0x00000495,0x00050041,0x00000086,0x000004a5,0x00000083,0x000000a0,0x0004003d,
+	0x00000006,0x000004a6,0x000004a5,0x000500b4,0x0000003f,0x000004a7,0x000004a6,0x0000009c,
+	0x000300f7,0x000004ab,0x00000000,0x000400fa,0x000004a7,0x000004a8,0x000004ab,0x000200f8,
+	0x000004a8,0x00050090,0x0000000f,0x000004aa,0x0000063b,0x000000e9,0x000200f9,0x000004ab,
+	0x000200f8,0x000004ab,0x000700f5,0x0000000f,0x0000063e,0x0000063b,0x000004a4,0x000004aa,
+	0x000004a8,0x000200f9,0x000004ac,0x000200f8,0x000004ac,0x000700f5,0x0000000f,0x0000063d,
+	0x000002a7,0x0000047f,0x0000063e,0x000004ab,0x000200f9,0x000004ad,0x000200f8,0x000004ad,
+	0x000700f5,0x0000000f,0x0000063c,0x0000047e,0x0000047a,0x0000063d,0x000004ac,0x00050051,
+	0x00000006,0x000002aa,0x0000063c,0x00000000,0x00060052,0x0000001a,0x000005d6,0x000002aa,
+	0x00000639,0x00000000,0x00050051,0x00000006,0x000002ac,0x0000063c,0x00000001,0x00060052,
+	0x0000001a,0x000005d8,0x000002ac,0x000005d6,0x00000001,0x00050051,0x00000006,0x000002ae,
+	0x0000063c,0x00000002,0x00060052,0x0000001a,0x000005da,0x000002ae,0x000005d8,0x00000002,
+	0x000200f9,0x000002af,0x000200f8,0x000002af,0x000700f5,0x0000001a,0x00000644,0x00000639,
+	0x000002a1,0x000005da,0x000004ad,0x00050041,0x00000086,0x000002b0,0x00000083,0x000000a0,
+	0x0004003d,0x00000006,0x000002b1,0x000002b0,0x000500b4,0x0000003f,0x000002b2,0x000002b1,
+	0x00000090,0x000300f7,0x000002f0,0x00000000,0x000400fa,0x000002b2,0x000002b3,0x000002c0,
+	0x000200f8,0x000002b3,0x0008004f,0x0000000f,0x000002b5,0x00000644,0x00000644,0x00000000,
+	0x00000001,0x00000002,0x00050041,0x00000086,0x000004b5,0x00000083,0x000001c0,0x0004003d,
+	0x00000006,0x000004b6,0x000004b5,0x000500b7,0x0000003f,0x000004b7,0x000004b6,0x0000006c,
+	0x000300f7,0x000004c5,0x00000000,0x000400fa,0x000004b7,0x000004b8,0x000004c5,0x000200f8,
+	0x000004b8,0x00050051,0x00000006,0x000004ba,0x00000644,0x00000000,0x000500bc,0x0000003f,
+	0x000004ce,0x000004ba,0x0000003e,0x000300f7,0x000004d8,0x00000000,0x000400fa,0x000004ce,
+	0x000004cf,0x000004d2,0x000200f8,0x000004cf,0x00050085,0x00000006,0x000004d1,0x000004ba,
+	0x00000631,0x000200f9,0x000004d8,0x000200f8,0x000004d2,0x00050081,0x00000006,0x000004d4,
+	0x000004ba,0x00000048,0x0006000c,0x00000006,0x000004d5,0x00000001,0x00000004,0x000004d4,
+	0x00050085,0x00000006,0x000004d6,0x000004d5,0x00000630,0x0007000c,0x00000006,0x000004d7,
+	0x00000001,0x0000001a,0x000004d6,0x0000004d,0x000200f9,0x000004d8,0x000200f8,0x000004d8,
+	0x000700f5,0x00000006,0x0000065b,0x000004d1,0x000004cf,0x000004d7,0x000004d2,0x00050051,
+	0x00000006,0x000004be,0x00000644,0x00000001,0x000500bc,0x0000003f,0x000004dd,0x000004be,
+	0x0000003e,0x000300f7,0x000004e7,0x00000000,0x000400fa,0x000004dd,0x000004de,0x000004e1,
+	0x000200f8,0x000004de,0x00050085,0x00000006,0x000004e0,0x000004be,0x00000631,0x000200f9,
+	0x000004e7,0x000200f8,0x000004e1,0x00050081,0x00000006,0x000004e3,0x000004be,0x00000048,
+	0x0006000c,0x00000006,0x000004e4,0x00000001,0x00000004,0x000004e3,0x00050085,0x00000006,
+	0x000004e5,0x000004e4,0x00000630,0x0007000c,0x00000006,0x000004e6,0x00000001,0x0000001a,
+	0x000004e5,0x0000004d,0x000200f9,0x000004e7,0x000200f8,0x000004e7,0x000700f5,0x00000006,
+	0x0000065d,0x000004e0,0x000004de,0x000004e6,0x000004e1,0x00050051,0x00000006,0x000004c2,
+	0x00000644,0x00000002,0x000500bc,0x0000003f,0x000004ec,0x000004c2,0x0000003e,0x000300f7,
+	0x000004f6,0x00000000,0x000400fa,0x000004ec,0x000004ed,0x000004f0,0x000200f8,0x000004ed,
+	0x00050085,0x00000006,0x000004ef,0x000004c2,0x00000631,0x000200f9,0x000004f6,0x000200f8,
+	0x000004f0,0x00050081,0x00000006,0x000004f2,0x000004c2,0x00000048,0x0006000c,0x00000006,
+	0x000004f3,0x00000001,0x00000004,0x000004f2,0x00050085,0x00000006,0x000004f4,0x000004f3,
+	0x00000630,0x0007000c,0x00000006,0x000004f5,0x00000001,0x0000001a,0x000004f4,0x0000004d,
+	0x000200f9,0x000004f6,0x000200f8,0x000004f6,0x000700f5,0x00000006,0x0000065f,0x000004ef,
+	0x000004ed,0x000004f5,0x000004f0,0x00060050,0x0000000f,0x0000066b,0x0000065b,0x0000065d,
+	0x0000065f,0x000200f9,0x000004c5,0x000200f8,0x000004c5,0x000700f5,0x0000000f,0x00000661,
+	0x000002b5,0x000002b3,0x0000066b,0x000004f6,0x00050041,0x00000086,0x000004c7,0x00000083,
+	0x000001b0,0x0004003d,0x00000006,0x000004c8,0x000004c7,0x0005008e,0x0000000f,0x000004c9,
+	0x00000661,0x000004c8,0x00050051,0x00000006,0x000002b8,0x000004c9,0x00000000,0x00050051,
+	0x00000006,0x000002ba,0x000004c9,0x00000001,0x00050051,0x00000006,0x000002bc,0x000004c9,
+	0x00000002,0x00050051,0x00000006,0x000002be,0x00000644,0x00000003,0x00070050,0x0000001a,
+	0x00000632,0x000002b8,0x000002ba,0x000002bc,0x000002be,0x000200f9,0x000002f0,0x000200f8,
+	0x000002c0,0x00050041,0x00000086,0x000002c1,0x00000083,0x000000a0,0x0004003d,0x00000006,
+	0x000002c2,0x000002c1,0x000500b4,0x0000003f,0x000002c3,0x000002c2,0x0000009c,0x000300f7,
+	0x000002ef,0x00000000,0x000400fa,0x000002c3,0x000002c4,0x000002d1,0x000200f8,0x000002c4,
+	0x0008004f,0x0000000f,0x000002c6,0x00000644,0x00000644,0x00000000,0x00000001,0x00000002,
+	0x00050041,0x00000086,0x000004ff,0x00000083,0x000001b0,0x0004003d,0x00000006,0x00000500,
+	0x000004ff,0x0005008e,0x0000000f,0x00000501,0x000002c6,0x00000500,0x00050041,0x00000086,
+	0x00000502,0x00000083,0x000001c0,0x0004003d,0x00000006,0x00000503,0x00000502,0x000500b7,
+	0x0000003f,0x00000504,0x00000503,0x0000006c,0x000400a8,0x0000003f,0x00000505,0x00000504,
+	0x000300f7,0x00000517,0x00000000,0x000400fa,0x00000505,0x00000506,0x00000517,0x000200f8,
+	0x00000506,0x00050051,0x00000006,0x00000508,0x00000501,0x00000000,0x000500bc,0x0000003f,
+	0x0000051c,0x00000508,0x00000053,0x000300f7,0x00000526,0x00000000,0x000400fa,0x0000051c,
+	0x0000051d,0x00000520,0x000200f8,0x0000051d,0x00050085,0x00000006,0x0000051f,0x00000508,
+	0x00000044,0x000200f9,0x00000526,0x000200f8,0x00000520,0x0006000c,0x00000006,0x00000522,
+	0x00000001,0x00000004,0x00000508,0x0007000c,0x00000006,0x00000523,0x00000001,0x0000001a,
+	0x00000522,0x0000005c,0x0008000c,0x00000006,0x00000525,0x00000001,0x00000032,0x00000523,
+	0x0000004b,0x00000634,0x000200f9,0x00000526,0x000200f8,0x00000526,0x000700f5,0x00000006,
+	0x00000650,0x0000051f,0x0000051d,0x00000525,0x00000520,0x00050051,0x00000006,0x0000050c,
+	0x00000501,0x00000001,0x000500bc,0x0000003f,0x0000052b,0x0000050c,0x00000053,0x000300f7,
+	0x00000535,0x00000000,0x000400fa,0x0000052b,0x0000052c,0x0000052f,0x000200f8,0x0000052c,
+	0x00050085,0x00000006,0x0000052e,0x0000050c,0x00000044,0x000200f9,0x00000535,0x000200f8,
+	0x0000052f,0x0006000c,0x00000006,0x00000531,0x00000001,0x00000004,0x0000050c,0x0007000c,
+	0x00000006,0x00000532,0x00000001,0x0000001a,0x00000531,0x0000005c,0x0008000c,0x00000006,
+	0x00000534,0x00000001,0x00000032,0x00000532,0x0000004b,0x00000634,0x000200f9,0x00000535,
+	0x000200f8,0x00000535,0x000700f5,0x00000006,0x00000652,0x0000052e,0x0000052c,0x00000534,
+	0x0000052f,0x00050051,0x00000006,0x00000510,0x00000501,0x00000002,0x000500bc,0x0000003f,
+	0x0000053a,0x00000510,0x00000053,0x000300f7,0x00000544,0x00000000,0x000400fa,0x0000053a,
+	0x0000053b,0x0000053e,0x000200f8,0x0000053b,0x00050085,0x00000006,0x0000053d,0x00000510,
+	0x00000044,0x000200f9,0x00000544,0x000200f8,0x0000053e,0x0006000c,0x00000006,0x00000540,
+	0x00000001,0x00000004,0x00000510,0x0007000c,0x00000006,0x00000541,0x00000001,0x0000001a,
+	0x00000540,0x0000005c,0x0008000c,0x00000006,0x00000543,0x00000001,0x00000032,0x00000541,
+	0x0000004b,0x00000634,0x000200f9,0x00000544,0x000200f8,0x00000544,0x000700f5,0x00000006,
+	0x00000654,0x0000053d,0x0000053b,0x00000543,0x0000053e,0x00060050,0x0000000f,0x0000066a,
+	0x00000650,0x00000652,0x00000654,0x0008000c,0x0000000f,0x00000516,0x00000001,0x0000002b,
+	0x0000066a,0x0000006d,0x0000062a,0x000200f9,0x00000517,0x000200f8,0x00000517,0x000700f5,
+	0x0000000f,0x00000656,0x00000501,0x000002c4,0x00000516,0x00000544,0x00050051,0x00000006,
+	0x000002c9,0x00000656,0x00000000,0x00050051,0x00000006,0x000002cb,0x00000656,0x00000001,
+	0x00050051,0x00000006,0x000002cd,0x00000656,0x00000002,0x00050051,0x00000006,0x000002cf,
+	0x00000644,0x00000003,0x00070050,0x0000001a,0x0000062f,0x000002c9,0x000002cb,0x000002cd,
+	0x000002cf,0x000200f9,0x000002ef,0x000200f8,0x000002d1,0x00050041,0x00000086,0x000002d2,
+	0x00000083,0x000000a0,0x0004003d,0x00000006,0x000002d3,0x000002d2,0x000500b4,0x0000003f,
+	0x000002d4,0x000002d3,0x00000182,0x000300f7,0x000002ee,0x00000000,0x000400fa,0x000002d4,
+	0x000002d5,0x000002eb,0x000200f8,0x000002d5,0x0008004f,0x0000000f,0x000002d7,0x00000644,
+	0x00000644,0x00000000,0x00000001,0x00000002,0x00050090,0x0000000f,0x000002d8,0x000002d7,
+	0x000000e9,0x00050051,0x00000006,0x000002da,0x000002d8,0x00000000,0x00060052,0x0000001a,
+	0x00000600,0x000002da,0x0000066c,0x00000000,0x00050051,0x00000006,0x000002dc,0x000002d8,
+	0x00000001,0x00060052,0x0000001a,0x00000602,0x000002dc,0x00000600,0x00000001,0x00050051,
+	0x00000006,0x000002de,0x000002d8,0x00000002,0x00060052,0x0000001a,0x00000604,0x000002de,
+	0x00000602,0x00000002,0x0008004f,0x0000000f,0x000002e0,0x00000604,0x00000604,0x00000000,
+	0x00000001,0x00000002,0x00050041,0x00000086,0x0000054d,0x00000083,0x000001b0,0x0004003d,
+	0x00000006,0x0000054e,0x0000054d,0x0005008e,0x0000000f,0x0000054f,0x000002e0,0x0000054e,
+	0x00050041,0x00000086,0x00000550,0x00000083,0x000001c0,0x0004003d,0x00000006,0x00000551,
+	0x00000550,0x000500b7,0x0000003f,0x00000552,0x00000551,0x0000006c,0x000400a8,0x0000003f,
+	0x00000553,0x00000552,0x000300f7,0x00000565,0x00000000,0x000400fa,0x00000553,0x00000554,
+	0x00000565,0x000200f8,0x00000554,0x00050051,0x00000006,0x00000556,0x0000054f,0x00000000,
+	0x000500bc,0x0000003f,0x0000056a,0x00000556,0x00000053,0x000300f7,0x00000574,0x00000000,
+	0x000400fa,0x0000056a,0x0000056b,0x0000056e,0x000200f8,0x0000056b,0x00050085,0x00000006,
+	0x0000056d,0x00000556,0x00000044,0x000200f9,0x00000574,0x000200f8,0x0000056e,0x0006000c,
+	0x00000006,0x00000570,0x00000001,0x00000004,0x00000556,0x0007000c,0x00000006,0x00000571,
+	0x00000001,0x0000001a,0x00000570,0x0000005c,0x0008000c,0x00000006,0x00000573,0x00000001,
+	0x00000032,0x00000571,0x0000004b,0x00000634,0x000200f9,0x00000574,0x000200f8,0x00000574,
+	0x000700f5,0x00000006,0x00000645,0x0000056d,0x0000056b,0x00000573,0x0000056e,0x00050051,
+	0x00000006,0x0000055a,0x0000054f,0x00000001,0x000500bc,0x0000003f,0x00000579,0x0000055a,
+	0x00000053,0x000300f7,0x00000583,0x00000000,0x000400fa,0x00000579,0x0000057a,0x0000057d,
+	0x000200f8,0x0000057a,0x00050085,0x00000006,0x0000057c,0x0000055a,0x00000044,0x000200f9,
+	0x00000583,0x000200f8,0x0000057d,0x0006000c,0x00000006,0x0000057f,0x00000001,0x00000004,
+	0x0000055a,0x0007000c,0x00000006,0x00000580,0x00000001,0x0000001a,0x0000057f,0x0000005c,
+	0x0008000c,0x00000006,0x00000582,0x00000001,0x00000032,0x00000580,0x0000004b,0x00000634,
+	0x000200f9,0x00000583,0x000200f8,0x00000583,0x000700f5,0x00000006,0x00000647,0x0000057c,
+	0x0000057a,0x00000582,0x0000057d,0x00050051,0x00000006,0x0000055e,0x0000054f,0x00000002,
+	0x000500bc,0x0000003f,0x00000588,0x0000055e,0x00000053,0x000300f7,0x00000592,0x00000000,
+	0x000400fa,0x00000588,0x00000589,0x0000058c,0x000200f8,0x00000589,0x00050085,0x00000006,
+	0x0000058b,0x0000055e,0x00000044,0x000200f9,0x00000592,0x000200f8,0x0000058c,0x0006000c,
+	0x00000006,0x0000058e,0x00000001,0x00000004,0x0000055e,0x0007000c,0x00000006,0x0000058f,
+	0x00000001,0x0000001a,0x0000058e,0x0000005c,0x0008000c,0x00000006,0x00000591,0x00000001,
+	0x00000032,0x0000058f,0x0000004b,0x00000634,0x000200f9,0x00000592,0x000200f8,0x00000592,
+	0x000700f5,0x00000006,0x00000649,0x0000058b,0x00000589,0x00000591,0x0000058c,0x00060050,
+	0x0000000f,0x00000669,0x00000645,0x00000647,0x00000649,0x0008000c,0x0000000f,0x00000564,
+	0x00000001,0x0000002b,0x00000669,0x0000006d,0x0000062a,0x000200f9,0x00000565,0x000200f8,
+	0x00000565,0x000700f5,0x0000000f,0x0000064b,0x0000054f,0x000002d5,0x00000564,0x00000592,
+	0x00050051,0x00000006,0x000002e3,0x0000064b,0x00000000,0x00050051,0x00000006,0x000002e5,
+	0x0000064b,0x00000001,0x00050051,0x00000006,0x000002e7,0x0000064b,0x00000002,0x00050051,
+	0x00000006,0x000002e9,0x00000644,0x00000003,0x00070050,0x0000001a,0x0000062b,0x000002e3,
+	0x000002e5,0x000002e7,0x000002e9,0x000200f9,0x000002ee,0x000200f8,0x000002eb,0x0008004f,
+	0x0000000f,0x00000598,0x00000644,0x00000644,0x00000000,0x00000001,0x00000002,0x00050041,
+	0x00000086,0x00000599,0x00000083,0x000001b0,0x0004003d,0x00000006,0x0000059a,0x00000599,
+	0x0005008e,0x0000000f,0x0000059b,0x00000598,0x0000059a,0x00050051,0x00000006,0x0000059d,
+	0x0000059b,0x00000000,0x00050051,0x00000006,0x0000059f,0x0000059b,0x00000001,0x00050051,
+	0x00000006,0x000005a1,0x0000059b,0x00000002,0x00050051,0x00000006,0x000005a3,0x00000644,
+	0x00000003,0x00070050,0x0000001a,0x00000626,0x0000059d,0x0000059f,0x000005a1,0x000005a3,
+	0x000200f9,0x000002ee,0x000200f8,0x000002ee,0x000700f5,0x0000001a,0x00000668,0x0000062b,
+	0x00000565,0x00000626,0x000002eb,0x000200f9,0x000002ef,0x000200f8,0x000002ef,0x000700f5,
+	0x0000001a,0x00000667,0x0000062f,0x00000517,0x00000668,0x000002ee,0x000200f9,0x000002f0,
+	0x000200f8,0x000002f0,0x000700f5,0x0000001a,0x00000666,0x00000632,0x000004c5,0x00000667,
+	0x000002ef,0x00050085,0x0000001a,0x000002f4,0x00000666,0x0000027b,0x0003003e,0x0000027e,
+	0x000002f4,0x000100fd,0x00010038
+};

+ 1 - 1
src/render/vulkan/VULKAN_PixelShader_Colors.h

@@ -1,4 +1,4 @@
-	// 1113.1.1
+	// 1114.0.0
 	 #pragma once
 	 #pragma once
 static const uint32_t VULKAN_PixelShader_Colors[] = {
 static const uint32_t VULKAN_PixelShader_Colors[] = {
 	0x07230203,0x00010000,0x0008000b,0x000000a5,0x00000000,0x00020011,0x00000001,0x0006000b,
 	0x07230203,0x00010000,0x0008000b,0x000000a5,0x00000000,0x00020011,0x00000001,0x0006000b,

+ 3 - 0
src/render/vulkan/VULKAN_PixelShader_Common.hlsli

@@ -161,9 +161,12 @@ float4 GetInputColor(PixelShaderInput input)
 
 
     if (texture_type == TEXTURETYPE_RGB) {
     if (texture_type == TEXTURETYPE_RGB) {
         rgba = texture0.Sample(sampler0, input.tex);
         rgba = texture0.Sample(sampler0, input.tex);
+// NVIDIA drivers crash when trying to use SampleGrad() on a texture with YCbCr conversion
+#ifndef BROKEN_YCbCr_NVIDIA
     } else if (texture_type == TEXTURETYPE_RGB_PIXELART) {
     } else if (texture_type == TEXTURETYPE_RGB_PIXELART) {
         float2 uv = GetPixelArtUV(input.tex);
         float2 uv = GetPixelArtUV(input.tex);
         rgba = texture0.SampleGrad(sampler0, uv, ddx(input.tex), ddy(input.tex));
         rgba = texture0.SampleGrad(sampler0, uv, ddx(input.tex), ddy(input.tex));
+#endif
     } else if (texture_type == TEXTURETYPE_PALETTE_NEAREST) {
     } else if (texture_type == TEXTURETYPE_PALETTE_NEAREST) {
         rgba = SamplePaletteNearest(input.tex);
         rgba = SamplePaletteNearest(input.tex);
     } else if (texture_type == TEXTURETYPE_PALETTE_LINEAR) {
     } else if (texture_type == TEXTURETYPE_PALETTE_LINEAR) {

+ 1 - 1
src/render/vulkan/VULKAN_PixelShader_Textures.h

@@ -1,4 +1,4 @@
-	// 1113.1.1
+	// 1114.0.0
 	 #pragma once
 	 #pragma once
 static const uint32_t VULKAN_PixelShader_Textures[] = {
 static const uint32_t VULKAN_PixelShader_Textures[] = {
 	0x07230203,0x00010000,0x0008000b,0x000000ac,0x00000000,0x00020011,0x00000001,0x0006000b,
 	0x07230203,0x00010000,0x0008000b,0x000000ac,0x00000000,0x00020011,0x00000001,0x0006000b,

+ 52 - 0
src/render/vulkan/VULKAN_PixelShader_Textures_YUV.h

@@ -0,0 +1,52 @@
+	// 1114.0.0
+	 #pragma once
+static const uint32_t VULKAN_PixelShader_Textures_YUV[] = {
+	0x07230203,0x00010000,0x0008000b,0x000000ac,0x00000000,0x00020011,0x00000001,0x0006000b,
+	0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
+	0x0008000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000004c,0x0000004f,0x00000053,
+	0x00030010,0x00000004,0x00000007,0x00030003,0x00000005,0x000001f4,0x00040005,0x00000004,
+	0x6e69616d,0x00000000,0x00050005,0x00000018,0x736e6f43,0x746e6174,0x00000073,0x00070006,
+	0x00000018,0x00000000,0x47526373,0x756f5f42,0x74757074,0x00000000,0x00070006,0x00000018,
+	0x00000001,0x74786574,0x5f657275,0x65707974,0x00000000,0x00060006,0x00000018,0x00000002,
+	0x75706e69,0x79745f74,0x00006570,0x00060006,0x00000018,0x00000003,0x6f6c6f63,0x63735f72,
+	0x00656c61,0x00060006,0x00000018,0x00000004,0x65786574,0x69735f6c,0x0000657a,0x00070006,
+	0x00000018,0x00000005,0x656e6f74,0x5f70616d,0x6874656d,0x0000646f,0x00070006,0x00000018,
+	0x00000006,0x656e6f74,0x5f70616d,0x74636166,0x0031726f,0x00070006,0x00000018,0x00000007,
+	0x656e6f74,0x5f70616d,0x74636166,0x0032726f,0x00070006,0x00000018,0x00000008,0x5f726473,
+	0x74696877,0x6f705f65,0x00746e69,0x00030005,0x0000001a,0x00000000,0x00050005,0x00000036,
+	0x74786574,0x30657275,0x00000000,0x00050005,0x0000004c,0x75706e69,0x65742e74,0x00000078,
+	0x00050005,0x0000004f,0x75706e69,0x6f632e74,0x00726f6c,0x00070005,0x00000053,0x746e6540,
+	0x6f507972,0x4f746e69,0x75707475,0x00000074,0x00050048,0x00000018,0x00000000,0x00000023,
+	0x00000000,0x00050048,0x00000018,0x00000001,0x00000023,0x00000004,0x00050048,0x00000018,
+	0x00000002,0x00000023,0x00000008,0x00050048,0x00000018,0x00000003,0x00000023,0x0000000c,
+	0x00050048,0x00000018,0x00000004,0x00000023,0x00000010,0x00050048,0x00000018,0x00000005,
+	0x00000023,0x00000020,0x00050048,0x00000018,0x00000006,0x00000023,0x00000024,0x00050048,
+	0x00000018,0x00000007,0x00000023,0x00000028,0x00050048,0x00000018,0x00000008,0x00000023,
+	0x0000002c,0x00030047,0x00000018,0x00000002,0x00040047,0x0000001a,0x00000022,0x00000000,
+	0x00040047,0x0000001a,0x00000021,0x00000000,0x00040047,0x00000036,0x00000022,0x00000000,
+	0x00040047,0x00000036,0x00000021,0x00000001,0x00040047,0x0000004c,0x0000001e,0x00000000,
+	0x00040047,0x0000004f,0x0000001e,0x00000001,0x00040047,0x00000053,0x0000001e,0x00000000,
+	0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00030016,0x00000006,0x00000020,
+	0x00040017,0x00000007,0x00000006,0x00000004,0x00040017,0x0000000d,0x00000006,0x00000002,
+	0x00040017,0x00000015,0x00000006,0x00000003,0x000b001e,0x00000018,0x00000006,0x00000006,
+	0x00000006,0x00000006,0x00000007,0x00000006,0x00000006,0x00000006,0x00000006,0x00040020,
+	0x00000019,0x00000002,0x00000018,0x0004003b,0x00000019,0x0000001a,0x00000002,0x00040015,
+	0x0000001b,0x00000020,0x00000001,0x0004002b,0x0000001b,0x0000001c,0x00000003,0x00040020,
+	0x0000001d,0x00000002,0x00000006,0x00090019,0x00000033,0x00000006,0x00000001,0x00000000,
+	0x00000000,0x00000000,0x00000001,0x00000000,0x0003001b,0x00000034,0x00000033,0x00040020,
+	0x00000035,0x00000000,0x00000034,0x0004003b,0x00000035,0x00000036,0x00000000,0x00040020,
+	0x00000047,0x00000001,0x00000007,0x00040020,0x0000004b,0x00000001,0x0000000d,0x0004003b,
+	0x0000004b,0x0000004c,0x00000001,0x0004003b,0x00000047,0x0000004f,0x00000001,0x00040020,
+	0x00000052,0x00000003,0x00000007,0x0004003b,0x00000052,0x00000053,0x00000003,0x00050036,
+	0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003d,0x0000000d,
+	0x0000004d,0x0000004c,0x0004003d,0x00000007,0x00000050,0x0000004f,0x0004003d,0x00000034,
+	0x0000007c,0x00000036,0x00050057,0x00000007,0x0000007f,0x0000007c,0x0000004d,0x0008004f,
+	0x00000015,0x00000088,0x0000007f,0x0000007f,0x00000000,0x00000001,0x00000002,0x00050041,
+	0x0000001d,0x00000089,0x0000001a,0x0000001c,0x0004003d,0x00000006,0x0000008a,0x00000089,
+	0x0005008e,0x00000015,0x0000008b,0x00000088,0x0000008a,0x00050051,0x00000006,0x0000008d,
+	0x0000008b,0x00000000,0x00050051,0x00000006,0x0000008f,0x0000008b,0x00000001,0x00050051,
+	0x00000006,0x00000091,0x0000008b,0x00000002,0x00050051,0x00000006,0x00000093,0x0000007f,
+	0x00000003,0x00070050,0x00000007,0x000000ab,0x0000008d,0x0000008f,0x00000091,0x00000093,
+	0x00050085,0x00000007,0x00000083,0x000000ab,0x00000050,0x0003003e,0x00000053,0x00000083,
+	0x000100fd,0x00010038
+};

+ 1 - 1
src/render/vulkan/VULKAN_VertexShader.h

@@ -1,4 +1,4 @@
-	// 1113.1.1
+	// 1114.0.0
 	 #pragma once
 	 #pragma once
 static const uint32_t VULKAN_VertexShader[] = {
 static const uint32_t VULKAN_VertexShader[] = {
 	0x07230203,0x00010000,0x0008000b,0x000000af,0x00000000,0x00020011,0x00000001,0x0006000b,
 	0x07230203,0x00010000,0x0008000b,0x000000af,0x00000000,0x00020011,0x00000001,0x0006000b,

+ 2 - 0
src/render/vulkan/compile_shaders.bat

@@ -1,5 +1,7 @@
 glslangValidator -D --sep main -e main -S frag --target-env vulkan1.0 --auto-sampled-textures --vn VULKAN_PixelShader_Colors -o VULKAN_PixelShader_Colors.h VULKAN_PixelShader_Colors.hlsl
 glslangValidator -D --sep main -e main -S frag --target-env vulkan1.0 --auto-sampled-textures --vn VULKAN_PixelShader_Colors -o VULKAN_PixelShader_Colors.h VULKAN_PixelShader_Colors.hlsl
 glslangValidator -D --sep main -e main -S frag --target-env vulkan1.0 --auto-sampled-textures --vn VULKAN_PixelShader_Textures -o VULKAN_PixelShader_Textures.h VULKAN_PixelShader_Textures.hlsl
 glslangValidator -D --sep main -e main -S frag --target-env vulkan1.0 --auto-sampled-textures --vn VULKAN_PixelShader_Textures -o VULKAN_PixelShader_Textures.h VULKAN_PixelShader_Textures.hlsl
+glslangValidator -DBROKEN_YCbCr_NVIDIA=1 -D --sep main -e main -S frag --target-env vulkan1.0 --auto-sampled-textures --vn VULKAN_PixelShader_Textures_YUV -o VULKAN_PixelShader_Textures_YUV.h VULKAN_PixelShader_Textures.hlsl
 glslangValidator -D --sep main -e main -S frag --target-env vulkan1.0 --auto-sampled-textures --vn VULKAN_PixelShader_Advanced -o VULKAN_PixelShader_Advanced.h VULKAN_PixelShader_Advanced.hlsl
 glslangValidator -D --sep main -e main -S frag --target-env vulkan1.0 --auto-sampled-textures --vn VULKAN_PixelShader_Advanced -o VULKAN_PixelShader_Advanced.h VULKAN_PixelShader_Advanced.hlsl
+glslangValidator -DBROKEN_YCbCr_NVIDIA=1 -D --sep main -e main -S frag --target-env vulkan1.0 --auto-sampled-textures --vn VULKAN_PixelShader_Advanced_YUV -o VULKAN_PixelShader_Advanced_YUV.h VULKAN_PixelShader_Advanced.hlsl
 
 
 glslangValidator -D --sep mainColor -e main -S vert --iy --target-env vulkan1.0 --vn VULKAN_VertexShader -o VULKAN_VertexShader.h VULKAN_VertexShader.hlsl
 glslangValidator -D --sep mainColor -e main -S vert --iy --target-env vulkan1.0 --vn VULKAN_VertexShader -o VULKAN_VertexShader.h VULKAN_VertexShader.hlsl