diff --git a/src/render/vulkan/SDL_render_vulkan.c b/src/render/vulkan/SDL_render_vulkan.c index ae845419f2..2f68f4792e 100644 --- a/src/render/vulkan/SDL_render_vulkan.c +++ b/src/render/vulkan/SDL_render_vulkan.c @@ -181,6 +181,12 @@ static const float TONEMAP_NONE = 0; //static const float TONEMAP_LINEAR = 1; static const float TONEMAP_CHROME = 2; +//static const float TEXTURETYPE_NONE = 0; +static const float TEXTURETYPE_RGB = 1; +static const float TEXTURETYPE_RGB_PIXELART = 2; +static const float TEXTURETYPE_PALETTE = 3; +static const float TEXTURETYPE_PALETTE_PIXELART = 4; + static const float INPUTTYPE_UNSPECIFIED = 0; static const float INPUTTYPE_SRGB = 1; static const float INPUTTYPE_SCRGB = 2; @@ -190,9 +196,9 @@ static const float INPUTTYPE_HDR10 = 3; typedef struct { float scRGB_output; + float texture_type; float input_type; float color_scale; - float pixel_art; float texel_width; float texel_height; @@ -238,6 +244,7 @@ typedef struct typedef struct { VULKAN_Image mainImage; + VULKAN_Image paletteImage; VkRenderPass mainRenderpasses[VULKAN_RENDERPASS_COUNT]; VkFramebuffer mainFramebuffer; VULKAN_Buffer stagingBuffer; @@ -447,6 +454,8 @@ static VkFormat SDLPixelFormatToVkTextureFormat(Uint32 format, Uint32 output_col return VK_FORMAT_R8G8B8A8_SRGB; } return VK_FORMAT_R8G8B8A8_UNORM; + case SDL_PIXELFORMAT_INDEX8: + return VK_FORMAT_R8_UNORM; case SDL_PIXELFORMAT_YUY2: return VK_FORMAT_G8B8G8R8_422_UNORM; case SDL_PIXELFORMAT_UYVY: @@ -2685,6 +2694,21 @@ static bool VULKAN_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, S return false; } + if (texture->format == SDL_PIXELFORMAT_INDEX8) { + VkFormat paletteFormat; + + if (renderer->output_colorspace == SDL_COLORSPACE_SRGB_LINEAR) { + paletteFormat = VK_FORMAT_R8G8B8A8_SRGB; + } else { + paletteFormat = VK_FORMAT_R8G8B8A8_UNORM; + } + result = VULKAN_AllocateImage(rendererData, 0, 256, 1, paletteFormat, usage, imageViewSwizzle, textureData->samplerYcbcrConversion, &textureData->paletteImage); + if (result != VK_SUCCESS) { + SET_ERROR_CODE("VULKAN_AllocateImage()", result); + return false; + } + } + SDL_PropertiesID props = SDL_GetTextureProperties(texture); SDL_SetNumberProperty(props, SDL_PROP_TEXTURE_VULKAN_TEXTURE_NUMBER, (Sint64)textureData->mainImage.image); @@ -2722,6 +2746,10 @@ static void VULKAN_DestroyTexture(SDL_Renderer *renderer, VULKAN_DestroyImage(rendererData, &textureData->mainImage); + if (texture->format == SDL_PIXELFORMAT_INDEX8) { + VULKAN_DestroyImage(rendererData, &textureData->paletteImage); + } + #ifdef SDL_HAVE_YUV if (textureData->samplerYcbcrConversion != VK_NULL_HANDLE) { vkDestroySamplerYcbcrConversionKHR(rendererData->device, textureData->samplerYcbcrConversion, NULL); @@ -2849,6 +2877,19 @@ static bool VULKAN_UpdateTextureInternal(VULKAN_RenderData *rendererData, VkImag } +static bool VULKAN_UpdateTexturePalette(SDL_Renderer *renderer, SDL_Texture *texture) +{ + VULKAN_RenderData *rendererData = (VULKAN_RenderData *)renderer->internal; + VULKAN_TextureData *textureData = (VULKAN_TextureData *)texture->internal; + SDL_Palette *palette = texture->palette; + + if (!textureData) { + return SDL_SetError("Texture is not currently available"); + } + + return VULKAN_UpdateTextureInternal(rendererData, textureData->paletteImage.image, textureData->paletteImage.format, 0, 0, 0, palette->ncolors, 1, palette->colors, palette->ncolors * sizeof(*palette->colors), &textureData->paletteImage.imageLayout); +} + static bool VULKAN_UpdateTexture(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect *rect, const void *srcPixels, int srcPitch) @@ -3369,8 +3410,21 @@ static void VULKAN_SetupShaderConstants(SDL_Renderer *renderer, const SDL_Render break; } + if (texture->format == SDL_PIXELFORMAT_INDEX8) { + if (cmd->data.draw.texture_scale_mode == SDL_SCALEMODE_PIXELART) { + constants->texture_type = TEXTURETYPE_PALETTE_PIXELART; + } else { + constants->texture_type = TEXTURETYPE_PALETTE; + } + } else { + if (cmd->data.draw.texture_scale_mode == SDL_SCALEMODE_PIXELART) { + constants->texture_type = TEXTURETYPE_RGB_PIXELART; + } else { + constants->texture_type = TEXTURETYPE_RGB; + } + } + if (cmd->data.draw.texture_scale_mode == SDL_SCALEMODE_PIXELART) { - constants->pixel_art = 1.0f; constants->texture_width = texture->w; constants->texture_height = texture->h; constants->texel_width = 1.0f / constants->texture_width; @@ -3399,7 +3453,7 @@ static VULKAN_Shader SelectShader(const VULKAN_PixelShaderConstants *shader_cons return SHADER_SOLID; } - if (shader_constants->pixel_art == 0.0f && + if (shader_constants->texture_type == TEXTURETYPE_RGB && shader_constants->input_type == INPUTTYPE_UNSPECIFIED && shader_constants->tonemap_method == TONEMAP_NONE) { return SHADER_RGB; @@ -3445,22 +3499,29 @@ static VkResult VULKAN_CreateDescriptorSetAndPipelineLayout(VULKAN_RenderData *r VkDescriptorSetLayoutCreateInfo descriptorSetLayoutCreateInfo = { 0 }; descriptorSetLayoutCreateInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO; descriptorSetLayoutCreateInfo.flags = 0; - VkDescriptorSetLayoutBinding layoutBindings[2]; + VkDescriptorSetLayoutBinding layoutBindings[3]; // PixelShaderConstants - layoutBindings[0].binding = 1; + layoutBindings[0].binding = 0; layoutBindings[0].descriptorCount = 1; layoutBindings[0].descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER; layoutBindings[0].stageFlags = VK_SHADER_STAGE_FRAGMENT_BIT; layoutBindings[0].pImmutableSamplers = NULL; // Combined image/sampler - layoutBindings[1].binding = 0; + layoutBindings[1].binding = 1; layoutBindings[1].descriptorCount = 1; layoutBindings[1].descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER; layoutBindings[1].stageFlags = VK_SHADER_STAGE_FRAGMENT_BIT; layoutBindings[1].pImmutableSamplers = (samplerYcbcr != VK_NULL_HANDLE) ? &samplerYcbcr : NULL; - descriptorSetLayoutCreateInfo.bindingCount = 2; + // Combined image/sampler + layoutBindings[2].binding = 2; + layoutBindings[2].descriptorCount = 1; + layoutBindings[2].descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER; + layoutBindings[2].stageFlags = VK_SHADER_STAGE_FRAGMENT_BIT; + layoutBindings[2].pImmutableSamplers = (samplerYcbcr != VK_NULL_HANDLE) ? &samplerYcbcr : NULL; + + descriptorSetLayoutCreateInfo.bindingCount = 3; descriptorSetLayoutCreateInfo.pBindings = layoutBindings; result = vkCreateDescriptorSetLayout(rendererData->device, &descriptorSetLayoutCreateInfo, NULL, descriptorSetLayoutOut); if (result != VK_SUCCESS) { @@ -3489,7 +3550,7 @@ static VkResult VULKAN_CreateDescriptorSetAndPipelineLayout(VULKAN_RenderData *r } static VkDescriptorSet VULKAN_AllocateDescriptorSet(SDL_Renderer *renderer, VULKAN_Shader shader, VkDescriptorSetLayout descriptorSetLayout, - VkSampler sampler, VkBuffer constantBuffer, VkDeviceSize constantBufferOffset, VkImageView imageView) + VkBuffer constantBuffer, VkDeviceSize constantBufferOffset, int numImages, VkImageView *imageViews, int numSamplers, VkSampler *samplers) { VULKAN_RenderData *rendererData = (VULKAN_RenderData *)renderer->internal; uint32_t currentDescriptorPoolIndex = rendererData->currentDescriptorPoolIndex; @@ -3538,44 +3599,50 @@ static VkDescriptorSet VULKAN_AllocateDescriptorSet(SDL_Renderer *renderer, VULK rendererData->currentDescriptorSetIndex = 0; // Call recursively to allocate from the new pool - return VULKAN_AllocateDescriptorSet(renderer, shader, descriptorSetLayout, sampler, constantBuffer, constantBufferOffset, imageView); + return VULKAN_AllocateDescriptorSet(renderer, shader, descriptorSetLayout, constantBuffer, constantBufferOffset, numImages, imageViews, numSamplers, samplers); } } rendererData->currentDescriptorSetIndex++; - VkDescriptorImageInfo combinedImageSamplerDescriptor = { 0 }; + VkDescriptorImageInfo combinedImageSamplerDescriptor[2]; VkDescriptorBufferInfo bufferDescriptor = { 0 }; bufferDescriptor.buffer = constantBuffer; bufferDescriptor.offset = constantBufferOffset; bufferDescriptor.range = sizeof(VULKAN_PixelShaderConstants); - VkWriteDescriptorSet descriptorWrites[2]; - SDL_memset(descriptorWrites, 0, sizeof(descriptorWrites)); + VkWriteDescriptorSet descriptorWrites[3]; + SDL_zero(descriptorWrites); uint32_t descriptorCount = 1; // Always have the uniform buffer descriptorWrites[0].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; descriptorWrites[0].dstSet = descriptorSet; - descriptorWrites[0].dstBinding = 1; + descriptorWrites[0].dstBinding = 0; descriptorWrites[0].dstArrayElement = 0; descriptorWrites[0].descriptorCount = 1; descriptorWrites[0].descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER; descriptorWrites[0].pBufferInfo = &bufferDescriptor; - if (sampler != VK_NULL_HANDLE && imageView != VK_NULL_HANDLE) { - descriptorCount++; - descriptorWrites[1].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; - descriptorWrites[1].dstSet = descriptorSet; - descriptorWrites[1].dstBinding = 0; - descriptorWrites[1].dstArrayElement = 0; - descriptorWrites[1].descriptorCount = 1; - descriptorWrites[1].descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER; - descriptorWrites[1].pImageInfo = &combinedImageSamplerDescriptor; - - // Ignore the sampler if we're using YcBcCr data since it will be baked in the descriptor set layout + SDL_assert(numSamplers == numImages); + for (int i = 0; i < numImages; ++i) { + SDL_assert(i < SDL_arraysize(combinedImageSamplerDescriptor)); + VkDescriptorImageInfo *pImageInfo = &combinedImageSamplerDescriptor[i]; + SDL_zerop(pImageInfo); if (descriptorSetLayout == rendererData->descriptorSetLayout) { - combinedImageSamplerDescriptor.sampler = sampler; + pImageInfo->sampler = samplers[i]; + } else { + // Ignore the sampler if we're using YcBcCr data since it will be baked in the descriptor set layout } - combinedImageSamplerDescriptor.imageView = imageView; - combinedImageSamplerDescriptor.imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; + pImageInfo->imageView = imageViews[i]; + pImageInfo->imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; + + SDL_assert(descriptorCount < SDL_arraysize(descriptorWrites)); + VkWriteDescriptorSet *pDescriptorSet = &descriptorWrites[descriptorCount++]; + pDescriptorSet->sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; + pDescriptorSet->dstSet = descriptorSet; + pDescriptorSet->dstBinding = 1 + i; + pDescriptorSet->dstArrayElement = 0; + pDescriptorSet->descriptorCount = 1; + pDescriptorSet->descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER; + pDescriptorSet->pImageInfo = pImageInfo; } vkUpdateDescriptorSets(rendererData->device, descriptorCount, descriptorWrites, 0, NULL); @@ -3584,7 +3651,7 @@ static VkDescriptorSet VULKAN_AllocateDescriptorSet(SDL_Renderer *renderer, VULK } static bool VULKAN_SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand *cmd, VkPipelineLayout pipelineLayout, VkDescriptorSetLayout descriptorSetLayout, - const VULKAN_PixelShaderConstants *shader_constants, VkPrimitiveTopology topology, VkImageView imageView, VkSampler sampler, const Float4X4 *matrix, VULKAN_DrawStateCache *stateCache) + const VULKAN_PixelShaderConstants *shader_constants, VkPrimitiveTopology topology, int numImages, VkImageView *imageViews, int numSamplers, VkSampler *samplers, const Float4X4 *matrix, VULKAN_DrawStateCache *stateCache) { VULKAN_RenderData *rendererData = (VULKAN_RenderData *)renderer->internal; @@ -3718,7 +3785,7 @@ static bool VULKAN_SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand } // Allocate/update descriptor set with the bindings - descriptorSet = VULKAN_AllocateDescriptorSet(renderer, shader, descriptorSetLayout, sampler, constantBuffer, constantBufferOffset, imageView); + descriptorSet = VULKAN_AllocateDescriptorSet(renderer, shader, descriptorSetLayout, constantBuffer, constantBufferOffset, numImages, imageViews, numSamplers, samplers); if (descriptorSet == VK_NULL_HANDLE) { return false; } @@ -3794,18 +3861,16 @@ static bool VULKAN_SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand SDL_Texture *texture = cmd->data.draw.texture; VULKAN_RenderData *rendererData = (VULKAN_RenderData *)renderer->internal; VULKAN_TextureData *textureData = (VULKAN_TextureData *)texture->internal; - VkSampler textureSampler = VK_NULL_HANDLE; + int numImageViews = 0; + VkImageView imageViews[2]; + int numSamplers = 0; + VkSampler samplers[2]; VULKAN_PixelShaderConstants constants; VkDescriptorSetLayout descriptorSetLayout = (textureData->descriptorSetLayoutYcbcr != VK_NULL_HANDLE) ? textureData->descriptorSetLayoutYcbcr : rendererData->descriptorSetLayout; VkPipelineLayout pipelineLayout = (textureData->pipelineLayoutYcbcr != VK_NULL_HANDLE) ? textureData->pipelineLayoutYcbcr : rendererData->pipelineLayout; VULKAN_SetupShaderConstants(renderer, cmd, texture, &constants); - textureSampler = VULKAN_GetSampler(rendererData, cmd->data.draw.texture_scale_mode, cmd->data.draw.texture_address_mode_u, cmd->data.draw.texture_address_mode_v); - if (textureSampler == VK_NULL_HANDLE) { - return false; - } - if (textureData->mainImage.imageLayout != VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL) { bool stoppedRenderPass = false; if (rendererData->currentRenderPass != VK_NULL_HANDLE) { @@ -3827,8 +3892,50 @@ static bool VULKAN_SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand VULKAN_BeginRenderPass(rendererData, VK_ATTACHMENT_LOAD_OP_LOAD, NULL); } } + imageViews[numImageViews++] = textureData->mainImage.imageView; - return VULKAN_SetDrawState(renderer, cmd, pipelineLayout, descriptorSetLayout, &constants, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, textureData->mainImage.imageView, textureSampler, matrix, stateCache); + samplers[numSamplers] = VULKAN_GetSampler(rendererData, cmd->data.draw.texture_scale_mode, cmd->data.draw.texture_address_mode_u, cmd->data.draw.texture_address_mode_v); + if (samplers[numSamplers] == VK_NULL_HANDLE) { + return false; + } + ++numSamplers; + + if (texture->format == SDL_PIXELFORMAT_INDEX8) { + if (textureData->paletteImage.imageLayout != VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL) { + bool stoppedRenderPass = false; + if (rendererData->currentRenderPass != VK_NULL_HANDLE) { + vkCmdEndRenderPass(rendererData->currentCommandBuffer); + rendererData->currentRenderPass = VK_NULL_HANDLE; + stoppedRenderPass = true; + } + + VULKAN_RecordPipelineImageBarrier(rendererData, + VK_ACCESS_TRANSFER_WRITE_BIT | VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, + VK_ACCESS_SHADER_READ_BIT, + VK_PIPELINE_STAGE_TRANSFER_BIT | VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT | VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, + VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, + textureData->paletteImage.image, + &textureData->paletteImage.imageLayout); + + if (stoppedRenderPass) { + VULKAN_BeginRenderPass(rendererData, VK_ATTACHMENT_LOAD_OP_LOAD, NULL); + } + } + imageViews[numImageViews++] = textureData->paletteImage.imageView; + + samplers[numSamplers] = VULKAN_GetSampler(rendererData, SDL_SCALEMODE_NEAREST, SDL_TEXTURE_ADDRESS_CLAMP, SDL_TEXTURE_ADDRESS_CLAMP); + if (samplers[numSamplers] == VK_NULL_HANDLE) { + return false; + } + ++numSamplers; + } else { + // We need a valid image view and sampler, but we know we're not going to reference them in the shader + imageViews[numImageViews++] = imageViews[0]; + samplers[numSamplers++] = samplers[0]; + } + + return VULKAN_SetDrawState(renderer, cmd, pipelineLayout, descriptorSetLayout, &constants, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, numImageViews, imageViews, numSamplers, samplers, matrix, stateCache); } static void VULKAN_DrawPrimitives(SDL_Renderer *renderer, VkPrimitiveTopology primitiveTopology, const size_t vertexStart, const size_t vertexCount) @@ -3929,7 +4036,7 @@ static bool VULKAN_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cm const size_t count = cmd->data.draw.count; const size_t first = cmd->data.draw.first; const size_t start = first / sizeof(VULKAN_VertexPositionColor); - VULKAN_SetDrawState(renderer, cmd, rendererData->pipelineLayout, rendererData->descriptorSetLayout, NULL, VK_PRIMITIVE_TOPOLOGY_POINT_LIST, VK_NULL_HANDLE, VK_NULL_HANDLE, NULL, &stateCache); + VULKAN_SetDrawState(renderer, cmd, rendererData->pipelineLayout, rendererData->descriptorSetLayout, NULL, VK_PRIMITIVE_TOPOLOGY_POINT_LIST, 0, NULL, 0, NULL, NULL, &stateCache); VULKAN_DrawPrimitives(renderer, VK_PRIMITIVE_TOPOLOGY_POINT_LIST, start, count); break; } @@ -3940,10 +4047,10 @@ static bool VULKAN_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cm const size_t first = cmd->data.draw.first; const size_t start = first / sizeof(VULKAN_VertexPositionColor); const VULKAN_VertexPositionColor *verts = (VULKAN_VertexPositionColor *)(((Uint8 *)vertices) + first); - VULKAN_SetDrawState(renderer, cmd, rendererData->pipelineLayout, rendererData->descriptorSetLayout, NULL, VK_PRIMITIVE_TOPOLOGY_LINE_STRIP, VK_NULL_HANDLE, VK_NULL_HANDLE, NULL, &stateCache); + VULKAN_SetDrawState(renderer, cmd, rendererData->pipelineLayout, rendererData->descriptorSetLayout, NULL, VK_PRIMITIVE_TOPOLOGY_LINE_STRIP, 0, NULL, 0, NULL, NULL, &stateCache); VULKAN_DrawPrimitives(renderer, VK_PRIMITIVE_TOPOLOGY_LINE_STRIP, start, count); if (verts[0].pos[0] != verts[count - 1].pos[0] || verts[0].pos[1] != verts[count - 1].pos[1]) { - VULKAN_SetDrawState(renderer, cmd, rendererData->pipelineLayout, rendererData->descriptorSetLayout, NULL, VK_PRIMITIVE_TOPOLOGY_POINT_LIST, VK_NULL_HANDLE, VK_NULL_HANDLE, NULL, &stateCache); + VULKAN_SetDrawState(renderer, cmd, rendererData->pipelineLayout, rendererData->descriptorSetLayout, NULL, VK_PRIMITIVE_TOPOLOGY_POINT_LIST, 0, NULL, 0, NULL, NULL, &stateCache); VULKAN_DrawPrimitives(renderer, VK_PRIMITIVE_TOPOLOGY_POINT_LIST, start + (count - 1), 1); } break; @@ -3968,7 +4075,7 @@ static bool VULKAN_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cm if (texture) { VULKAN_SetCopyState(renderer, cmd, NULL, &stateCache); } else { - VULKAN_SetDrawState(renderer, cmd, rendererData->pipelineLayout, rendererData->descriptorSetLayout, NULL, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, VK_NULL_HANDLE, VK_NULL_HANDLE, NULL, &stateCache); + VULKAN_SetDrawState(renderer, cmd, rendererData->pipelineLayout, rendererData->descriptorSetLayout, NULL, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, 0, NULL, 0, NULL, NULL, &stateCache); } VULKAN_DrawPrimitives(renderer, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, start, count); @@ -4285,6 +4392,7 @@ static bool VULKAN_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, SD renderer->WindowEvent = VULKAN_WindowEvent; renderer->SupportsBlendMode = VULKAN_SupportsBlendMode; renderer->CreateTexture = VULKAN_CreateTexture; + renderer->UpdateTexturePalette = VULKAN_UpdateTexturePalette; renderer->UpdateTexture = VULKAN_UpdateTexture; #ifdef SDL_HAVE_YUV renderer->UpdateTextureYUV = VULKAN_UpdateTextureYUV; @@ -4314,6 +4422,7 @@ static bool VULKAN_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, SD SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_ABGR8888); SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_ABGR2101010); SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_RGBA64_FLOAT); + SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_INDEX8); SDL_SetNumberProperty(SDL_GetRendererProperties(renderer), SDL_PROP_RENDERER_MAX_TEXTURE_SIZE_NUMBER, 16384); /* HACK: make sure the SDL_Renderer references the SDL_Window data now, in diff --git a/src/render/vulkan/VULKAN_PixelShader_Advanced.h b/src/render/vulkan/VULKAN_PixelShader_Advanced.h index 171e10cd8e..3c0dc1b071 100644 --- a/src/render/vulkan/VULKAN_PixelShader_Advanced.h +++ b/src/render/vulkan/VULKAN_PixelShader_Advanced.h @@ -1,301 +1,345 @@ // 1115.0.0 #pragma once static const uint32_t VULKAN_PixelShader_Advanced[] = { - 0x07230203,0x00010000,0x0008000b,0x000004a8,0x00000000,0x00020011,0x00000001,0x0006000b, + 0x07230203,0x00010000,0x0008000b,0x00000562,0x00000000,0x00020011,0x00000001,0x0006000b, 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001, - 0x0008000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x000001f6,0x000001f9,0x000001fd, + 0x0008000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x00000238,0x0000023b,0x0000023f, 0x00030010,0x00000004,0x00000007,0x00030003,0x00000005,0x000001f4,0x00040005,0x00000004, - 0x6e69616d,0x00000000,0x00050005,0x00000075,0x736e6f43,0x746e6174,0x00000073,0x00070006, - 0x00000075,0x00000000,0x47526373,0x756f5f42,0x74757074,0x00000000,0x00060006,0x00000075, - 0x00000001,0x75706e69,0x79745f74,0x00006570,0x00060006,0x00000075,0x00000002,0x6f6c6f63, - 0x63735f72,0x00656c61,0x00060006,0x00000075,0x00000003,0x65786970,0x72615f6c,0x00000074, - 0x00060006,0x00000075,0x00000004,0x65786574,0x69735f6c,0x0000657a,0x00070006,0x00000075, - 0x00000005,0x656e6f74,0x5f70616d,0x6874656d,0x0000646f,0x00070006,0x00000075,0x00000006, - 0x656e6f74,0x5f70616d,0x74636166,0x0031726f,0x00070006,0x00000075,0x00000007,0x656e6f74, - 0x5f70616d,0x74636166,0x0032726f,0x00070006,0x00000075,0x00000008,0x5f726473,0x74696877, - 0x6f705f65,0x00746e69,0x00030005,0x00000077,0x00000000,0x00050005,0x00000118,0x74786574, - 0x30657275,0x00000000,0x00050005,0x000001f6,0x75706e69,0x65742e74,0x00000078,0x00050005, - 0x000001f9,0x75706e69,0x6f632e74,0x00726f6c,0x00070005,0x000001fd,0x746e6540,0x6f507972, - 0x4f746e69,0x75707475,0x00000074,0x00030047,0x00000075,0x00000002,0x00050048,0x00000075, - 0x00000000,0x00000023,0x00000000,0x00050048,0x00000075,0x00000001,0x00000023,0x00000004, - 0x00050048,0x00000075,0x00000002,0x00000023,0x00000008,0x00050048,0x00000075,0x00000003, - 0x00000023,0x0000000c,0x00050048,0x00000075,0x00000004,0x00000023,0x00000010,0x00050048, - 0x00000075,0x00000005,0x00000023,0x00000020,0x00050048,0x00000075,0x00000006,0x00000023, - 0x00000024,0x00050048,0x00000075,0x00000007,0x00000023,0x00000028,0x00050048,0x00000075, - 0x00000008,0x00000023,0x0000002c,0x00040047,0x00000077,0x00000021,0x00000001,0x00040047, - 0x00000077,0x00000022,0x00000000,0x00040047,0x00000118,0x00000021,0x00000000,0x00040047, - 0x00000118,0x00000022,0x00000000,0x00040047,0x000001f6,0x0000001e,0x00000000,0x00040047, - 0x000001f9,0x0000001e,0x00000001,0x00040047,0x000001fd,0x0000001e,0x00000000,0x00020013, - 0x00000002,0x00030021,0x00000003,0x00000002,0x00030016,0x00000006,0x00000020,0x00040017, - 0x0000000f,0x00000006,0x00000003,0x00040017,0x00000018,0x00000006,0x00000004,0x00040017, - 0x00000019,0x00000006,0x00000002,0x0004002b,0x00000006,0x00000032,0x3d25aee6,0x00020014, - 0x00000033,0x0004002b,0x00000006,0x00000038,0x414eb852,0x0004002b,0x00000006,0x0000003c, - 0x3d6147ae,0x0004002b,0x00000006,0x0000003f,0x3f870a3d,0x0004002b,0x00000006,0x00000041, - 0x4019999a,0x0004002b,0x00000006,0x00000047,0x3b4d2e1c,0x0004002b,0x00000006,0x00000050, - 0x3ed55555,0x0004002b,0x00000006,0x0000005a,0x3c4fcdac,0x0006002c,0x0000000f,0x0000005b, - 0x0000005a,0x0000005a,0x0000005a,0x0004002b,0x00000006,0x0000005d,0x3f560000,0x0004002b, - 0x00000006,0x00000060,0x00000000,0x0006002c,0x0000000f,0x00000061,0x00000060,0x00000060, - 0x00000060,0x0004002b,0x00000006,0x00000064,0x4196d000,0x0004002b,0x00000006,0x00000065, - 0x41958000,0x0004002b,0x00000006,0x0000006c,0x461c4000,0x0004002b,0x00000006,0x00000071, - 0x40c8e06b,0x0006002c,0x0000000f,0x00000072,0x00000071,0x00000071,0x00000071,0x000b001e, - 0x00000075,0x00000006,0x00000006,0x00000006,0x00000006,0x00000018,0x00000006,0x00000006, - 0x00000006,0x00000006,0x00040020,0x00000076,0x00000002,0x00000075,0x0004003b,0x00000076, - 0x00000077,0x00000002,0x00040015,0x00000078,0x00000020,0x00000001,0x0004002b,0x00000078, - 0x00000079,0x00000008,0x00040020,0x0000007a,0x00000002,0x00000006,0x0004002b,0x00000078, - 0x00000081,0x00000005,0x0004002b,0x00000006,0x00000084,0x3f800000,0x0004002b,0x00000078, - 0x00000088,0x00000006,0x0004002b,0x00000006,0x00000090,0x40000000,0x0004002b,0x00000078, - 0x00000094,0x00000001,0x00040018,0x0000009b,0x0000000f,0x00000003,0x0004002b,0x00000006, - 0x0000009c,0x3f209d8c,0x0004002b,0x00000006,0x0000009d,0x3ea897c8,0x0004002b,0x00000006, - 0x0000009e,0x3d3168f9,0x0006002c,0x0000000f,0x0000009f,0x0000009c,0x0000009d,0x0000009e, - 0x0004002b,0x00000006,0x000000a0,0x3d8d82ba,0x0004002b,0x00000006,0x000000a1,0x3f6b670a, - 0x0004002b,0x00000006,0x000000a2,0x3c3a27af,0x0006002c,0x0000000f,0x000000a3,0x000000a0, - 0x000000a1,0x000000a2,0x0004002b,0x00000006,0x000000a4,0x3c86466b,0x0004002b,0x00000006, - 0x000000a5,0x3db44029,0x0004002b,0x00000006,0x000000a6,0x3f6545b7,0x0006002c,0x0000000f, - 0x000000a7,0x000000a4,0x000000a5,0x000000a6,0x0006002c,0x0000009b,0x000000a8,0x0000009f, - 0x000000a3,0x000000a7,0x0004002b,0x00000078,0x000000c1,0x00000007,0x0004002b,0x00000006, - 0x000000d1,0x3fd48b22,0x0004002b,0x00000006,0x000000d2,0xbf1670a0,0x0004002b,0x00000006, - 0x000000d3,0xbd952d23,0x0006002c,0x0000000f,0x000000d4,0x000000d1,0x000000d2,0x000000d3, - 0x0004002b,0x00000006,0x000000d5,0xbdff127f,0x0004002b,0x00000006,0x000000d6,0x3f9102b4, - 0x0004002b,0x00000006,0x000000d7,0xbc08c60d,0x0006002c,0x0000000f,0x000000d8,0x000000d5, - 0x000000d6,0x000000d7,0x0004002b,0x00000006,0x000000d9,0xbc94b7b3,0x0004002b,0x00000006, - 0x000000da,0xbdce05cd,0x0004002b,0x00000006,0x000000db,0x3f8f333c,0x0006002c,0x0000000f, - 0x000000dc,0x000000d9,0x000000da,0x000000db,0x0006002c,0x0000009b,0x000000dd,0x000000d4, - 0x000000d8,0x000000dc,0x0004002b,0x00000078,0x000000e2,0x00000003,0x0004002b,0x00000078, - 0x000000ed,0x00000004,0x00040020,0x000000ee,0x00000002,0x00000018,0x0004002b,0x00000006, - 0x000000f3,0x3727c5ac,0x0005002c,0x00000019,0x000000f4,0x000000f3,0x000000f3,0x0005002c, - 0x00000019,0x000000f5,0x00000084,0x00000084,0x0004002b,0x00000006,0x000000fe,0x3f000000, - 0x00090019,0x00000115,0x00000006,0x00000001,0x00000000,0x00000000,0x00000000,0x00000001, - 0x00000000,0x0003001b,0x00000116,0x00000115,0x00040020,0x00000117,0x00000000,0x00000116, - 0x0004003b,0x00000117,0x00000118,0x00000000,0x0004002b,0x00000078,0x0000012d,0x00000002, - 0x0004002b,0x00000078,0x0000013e,0x00000000,0x0004002b,0x00000006,0x00000182,0x40400000, - 0x00040020,0x000001f1,0x00000001,0x00000018,0x00040020,0x000001f5,0x00000001,0x00000019, - 0x0004003b,0x000001f5,0x000001f6,0x00000001,0x0004003b,0x000001f1,0x000001f9,0x00000001, - 0x00040020,0x000001fc,0x00000003,0x00000018,0x0004003b,0x000001fc,0x000001fd,0x00000003, - 0x0005002c,0x00000019,0x00000469,0x000000fe,0x000000fe,0x0006002c,0x0000000f,0x0000046a, - 0x0000005d,0x0000005d,0x0000005d,0x0006002c,0x0000000f,0x0000046b,0x00000064,0x00000064, - 0x00000064,0x0006002c,0x0000000f,0x0000046d,0x00000084,0x00000084,0x00000084,0x0004002b, - 0x00000006,0x00000470,0x3f72a76f,0x0004002b,0x00000006,0x00000471,0x3d9e8391,0x00030001, - 0x00000018,0x000004a7,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8, - 0x00000005,0x0004003d,0x00000019,0x000001f7,0x000001f6,0x0004003d,0x00000018,0x000001fa, - 0x000001f9,0x00050041,0x0000007a,0x0000027b,0x00000077,0x000000e2,0x0004003d,0x00000006, - 0x0000027c,0x0000027b,0x000500b7,0x00000033,0x0000027d,0x0000027c,0x00000060,0x000300f7, - 0x000002ae,0x00000000,0x000400fa,0x0000027d,0x0000027e,0x000002a9,0x000200f8,0x0000027e, - 0x000400d1,0x00000019,0x00000281,0x000001f7,0x00050041,0x000000ee,0x00000282,0x00000077, - 0x000000ed,0x0004003d,0x00000018,0x00000283,0x00000282,0x0007004f,0x00000019,0x00000284, - 0x00000283,0x00000283,0x00000002,0x00000003,0x00050085,0x00000019,0x00000285,0x00000281, - 0x00000284,0x0008000c,0x00000019,0x00000286,0x00000001,0x0000002b,0x00000285,0x000000f4, - 0x000000f5,0x00050041,0x000000ee,0x00000289,0x00000077,0x000000ed,0x0004003d,0x00000018, - 0x0000028a,0x00000289,0x0007004f,0x00000019,0x0000028b,0x0000028a,0x0000028a,0x00000002, - 0x00000003,0x00050085,0x00000019,0x0000028c,0x000001f7,0x0000028b,0x0005008e,0x00000019, - 0x0000028e,0x00000286,0x000000fe,0x00050083,0x00000019,0x0000028f,0x0000028c,0x0000028e, - 0x00050083,0x00000019,0x00000292,0x000000f5,0x00000286,0x0006000c,0x00000019,0x00000294, - 0x00000001,0x0000000a,0x0000028f,0x0008000c,0x00000019,0x00000295,0x00000001,0x00000031, - 0x00000292,0x000000f5,0x00000294,0x0006000c,0x00000019,0x00000297,0x00000001,0x00000008, - 0x0000028f,0x00050081,0x00000019,0x00000299,0x00000297,0x00000469,0x00050081,0x00000019, - 0x0000029b,0x00000299,0x00000295,0x00050041,0x000000ee,0x0000029c,0x00000077,0x000000ed, - 0x0004003d,0x00000018,0x0000029d,0x0000029c,0x0007004f,0x00000019,0x0000029e,0x0000029d, - 0x0000029d,0x00000000,0x00000001,0x00050085,0x00000019,0x0000029f,0x0000029b,0x0000029e, - 0x0004003d,0x00000116,0x000002a0,0x00000118,0x000400cf,0x00000019,0x000002a4,0x000001f7, - 0x000400d0,0x00000019,0x000002a7,0x000001f7,0x00080058,0x00000018,0x000002a8,0x000002a0, - 0x0000029f,0x00000004,0x000002a4,0x000002a7,0x000200f9,0x000002ae,0x000200f8,0x000002a9, - 0x0004003d,0x00000116,0x000002aa,0x00000118,0x00050057,0x00000018,0x000002ad,0x000002aa, - 0x000001f7,0x000200f9,0x000002ae,0x000200f8,0x000002ae,0x000700f5,0x00000018,0x00000473, - 0x000002a8,0x0000027e,0x000002ad,0x000002a9,0x00050041,0x0000007a,0x00000213,0x00000077, - 0x00000094,0x0004003d,0x00000006,0x00000214,0x00000213,0x000500b4,0x00000033,0x00000215, - 0x00000214,0x00000182,0x000300f7,0x00000220,0x00000000,0x000400fa,0x00000215,0x00000216, - 0x00000220,0x000200f8,0x00000216,0x0008004f,0x0000000f,0x00000218,0x00000473,0x00000473, - 0x00000000,0x00000001,0x00000002,0x0006000c,0x0000000f,0x000002b5,0x00000001,0x00000004, - 0x00000218,0x0007000c,0x0000000f,0x000002b6,0x00000001,0x0000001a,0x000002b5,0x0000005b, - 0x00050083,0x0000000f,0x000002b8,0x000002b6,0x0000046a,0x0007000c,0x0000000f,0x000002b9, - 0x00000001,0x00000028,0x000002b8,0x00000061,0x0006000c,0x0000000f,0x000002bb,0x00000001, - 0x00000004,0x00000218,0x0007000c,0x0000000f,0x000002bc,0x00000001,0x0000001a,0x000002bb, - 0x0000005b,0x0005008e,0x0000000f,0x000002bd,0x000002bc,0x00000065,0x00050083,0x0000000f, - 0x000002bf,0x0000046b,0x000002bd,0x00050088,0x0000000f,0x000002c2,0x000002b9,0x000002bf, - 0x0006000c,0x0000000f,0x000002c3,0x00000001,0x00000004,0x000002c2,0x0007000c,0x0000000f, - 0x000002c4,0x00000001,0x0000001a,0x000002c3,0x00000072,0x0005008e,0x0000000f,0x000002c5, - 0x000002c4,0x0000006c,0x00050041,0x0000007a,0x000002c6,0x00000077,0x00000079,0x0004003d, - 0x00000006,0x000002c7,0x000002c6,0x00060050,0x0000000f,0x000002c8,0x000002c7,0x000002c7, - 0x000002c7,0x00050088,0x0000000f,0x000002c9,0x000002c5,0x000002c8,0x00050051,0x00000006, - 0x0000021b,0x000002c9,0x00000000,0x00060052,0x00000018,0x00000416,0x0000021b,0x00000473, - 0x00000000,0x00050051,0x00000006,0x0000021d,0x000002c9,0x00000001,0x00060052,0x00000018, - 0x00000418,0x0000021d,0x00000416,0x00000001,0x00050051,0x00000006,0x0000021f,0x000002c9, - 0x00000002,0x00060052,0x00000018,0x0000041a,0x0000021f,0x00000418,0x00000002,0x000200f9, - 0x00000220,0x000200f8,0x00000220,0x000700f5,0x00000018,0x00000474,0x00000473,0x000002ae, - 0x0000041a,0x00000216,0x00050041,0x0000007a,0x00000221,0x00000077,0x00000081,0x0004003d, - 0x00000006,0x00000222,0x00000221,0x000500b7,0x00000033,0x00000223,0x00000222,0x00000060, - 0x000300f7,0x0000022e,0x00000000,0x000400fa,0x00000223,0x00000224,0x0000022e,0x000200f8, - 0x00000224,0x0008004f,0x0000000f,0x00000226,0x00000474,0x00000474,0x00000000,0x00000001, - 0x00000002,0x00050041,0x0000007a,0x000002ce,0x00000077,0x00000081,0x0004003d,0x00000006, - 0x000002cf,0x000002ce,0x000500b4,0x00000033,0x000002d0,0x000002cf,0x00000084,0x000300f7, - 0x00000304,0x00000000,0x000400fa,0x000002d0,0x000002d1,0x000002d6,0x000200f8,0x000002d1, - 0x00050041,0x0000007a,0x000002d2,0x00000077,0x00000088,0x0004003d,0x00000006,0x000002d3, - 0x000002d2,0x0005008e,0x0000000f,0x000002d5,0x00000226,0x000002d3,0x000200f9,0x00000304, - 0x000200f8,0x000002d6,0x00050041,0x0000007a,0x000002d7,0x00000077,0x00000081,0x0004003d, - 0x00000006,0x000002d8,0x000002d7,0x000500b4,0x00000033,0x000002d9,0x000002d8,0x00000090, - 0x000300f7,0x00000303,0x00000000,0x000400fa,0x000002d9,0x000002da,0x00000303,0x000200f8, - 0x000002da,0x00050041,0x0000007a,0x000002db,0x00000077,0x00000094,0x0004003d,0x00000006, - 0x000002dc,0x000002db,0x000500b4,0x00000033,0x000002dd,0x000002dc,0x00000090,0x000300f7, - 0x000002e1,0x00000000,0x000400fa,0x000002dd,0x000002de,0x000002e1,0x000200f8,0x000002de, - 0x00050090,0x0000000f,0x000002e0,0x00000226,0x000000a8,0x000200f9,0x000002e1,0x000200f8, - 0x000002e1,0x000700f5,0x0000000f,0x00000475,0x00000226,0x000002da,0x000002e0,0x000002de, - 0x00050051,0x00000006,0x000002e3,0x00000475,0x00000000,0x00050051,0x00000006,0x000002e5, - 0x00000475,0x00000001,0x00050051,0x00000006,0x000002e7,0x00000475,0x00000002,0x0007000c, - 0x00000006,0x000002e8,0x00000001,0x00000028,0x000002e5,0x000002e7,0x0007000c,0x00000006, - 0x000002e9,0x00000001,0x00000028,0x000002e3,0x000002e8,0x000500ba,0x00000033,0x000002eb, - 0x000002e9,0x00000060,0x000300f7,0x000002fb,0x00000000,0x000400fa,0x000002eb,0x000002ec, - 0x000002fb,0x000200f8,0x000002ec,0x00050041,0x0000007a,0x000002ed,0x00000077,0x00000088, - 0x0004003d,0x00000006,0x000002ee,0x000002ed,0x00050085,0x00000006,0x000002f0,0x000002ee, - 0x000002e9,0x00050081,0x00000006,0x000002f1,0x00000084,0x000002f0,0x00050041,0x0000007a, - 0x000002f2,0x00000077,0x000000c1,0x0004003d,0x00000006,0x000002f3,0x000002f2,0x00050085, - 0x00000006,0x000002f5,0x000002f3,0x000002e9,0x00050081,0x00000006,0x000002f6,0x00000084, - 0x000002f5,0x00050088,0x00000006,0x000002f7,0x000002f1,0x000002f6,0x0005008e,0x0000000f, - 0x000002fa,0x00000475,0x000002f7,0x000200f9,0x000002fb,0x000200f8,0x000002fb,0x000700f5, - 0x0000000f,0x00000476,0x00000475,0x000002e1,0x000002fa,0x000002ec,0x00050041,0x0000007a, - 0x000002fc,0x00000077,0x00000094,0x0004003d,0x00000006,0x000002fd,0x000002fc,0x000500b4, - 0x00000033,0x000002fe,0x000002fd,0x00000090,0x000300f7,0x00000302,0x00000000,0x000400fa, - 0x000002fe,0x000002ff,0x00000302,0x000200f8,0x000002ff,0x00050090,0x0000000f,0x00000301, - 0x00000476,0x000000dd,0x000200f9,0x00000302,0x000200f8,0x00000302,0x000700f5,0x0000000f, - 0x00000479,0x00000476,0x000002fb,0x00000301,0x000002ff,0x000200f9,0x00000303,0x000200f8, - 0x00000303,0x000700f5,0x0000000f,0x00000478,0x00000226,0x000002d6,0x00000479,0x00000302, - 0x000200f9,0x00000304,0x000200f8,0x00000304,0x000700f5,0x0000000f,0x00000477,0x000002d5, - 0x000002d1,0x00000478,0x00000303,0x00050051,0x00000006,0x00000229,0x00000477,0x00000000, - 0x00060052,0x00000018,0x0000041f,0x00000229,0x00000474,0x00000000,0x00050051,0x00000006, - 0x0000022b,0x00000477,0x00000001,0x00060052,0x00000018,0x00000421,0x0000022b,0x0000041f, - 0x00000001,0x00050051,0x00000006,0x0000022d,0x00000477,0x00000002,0x00060052,0x00000018, - 0x00000423,0x0000022d,0x00000421,0x00000002,0x000200f9,0x0000022e,0x000200f8,0x0000022e, - 0x000700f5,0x00000018,0x0000047f,0x00000474,0x00000220,0x00000423,0x00000304,0x00050041, - 0x0000007a,0x0000022f,0x00000077,0x00000094,0x0004003d,0x00000006,0x00000230,0x0000022f, - 0x000500b4,0x00000033,0x00000231,0x00000230,0x00000084,0x000300f7,0x0000026f,0x00000000, - 0x000400fa,0x00000231,0x00000232,0x0000023f,0x000200f8,0x00000232,0x0008004f,0x0000000f, - 0x00000234,0x0000047f,0x0000047f,0x00000000,0x00000001,0x00000002,0x00050041,0x0000007a, - 0x0000030c,0x00000077,0x0000013e,0x0004003d,0x00000006,0x0000030d,0x0000030c,0x000500b7, - 0x00000033,0x0000030e,0x0000030d,0x00000060,0x000300f7,0x0000031c,0x00000000,0x000400fa, - 0x0000030e,0x0000030f,0x0000031c,0x000200f8,0x0000030f,0x00050051,0x00000006,0x00000311, - 0x0000047f,0x00000000,0x000500bc,0x00000033,0x00000325,0x00000311,0x00000032,0x000300f7, - 0x0000032f,0x00000000,0x000400fa,0x00000325,0x00000326,0x00000329,0x000200f8,0x00000326, - 0x00050085,0x00000006,0x00000328,0x00000311,0x00000471,0x000200f9,0x0000032f,0x000200f8, - 0x00000329,0x00050081,0x00000006,0x0000032b,0x00000311,0x0000003c,0x0006000c,0x00000006, - 0x0000032c,0x00000001,0x00000004,0x0000032b,0x00050085,0x00000006,0x0000032d,0x0000032c, - 0x00000470,0x0007000c,0x00000006,0x0000032e,0x00000001,0x0000001a,0x0000032d,0x00000041, - 0x000200f9,0x0000032f,0x000200f8,0x0000032f,0x000700f5,0x00000006,0x00000496,0x00000328, - 0x00000326,0x0000032e,0x00000329,0x00050051,0x00000006,0x00000315,0x0000047f,0x00000001, - 0x000500bc,0x00000033,0x00000334,0x00000315,0x00000032,0x000300f7,0x0000033e,0x00000000, - 0x000400fa,0x00000334,0x00000335,0x00000338,0x000200f8,0x00000335,0x00050085,0x00000006, - 0x00000337,0x00000315,0x00000471,0x000200f9,0x0000033e,0x000200f8,0x00000338,0x00050081, - 0x00000006,0x0000033a,0x00000315,0x0000003c,0x0006000c,0x00000006,0x0000033b,0x00000001, - 0x00000004,0x0000033a,0x00050085,0x00000006,0x0000033c,0x0000033b,0x00000470,0x0007000c, - 0x00000006,0x0000033d,0x00000001,0x0000001a,0x0000033c,0x00000041,0x000200f9,0x0000033e, - 0x000200f8,0x0000033e,0x000700f5,0x00000006,0x00000498,0x00000337,0x00000335,0x0000033d, - 0x00000338,0x00050051,0x00000006,0x00000319,0x0000047f,0x00000002,0x000500bc,0x00000033, - 0x00000343,0x00000319,0x00000032,0x000300f7,0x0000034d,0x00000000,0x000400fa,0x00000343, - 0x00000344,0x00000347,0x000200f8,0x00000344,0x00050085,0x00000006,0x00000346,0x00000319, - 0x00000471,0x000200f9,0x0000034d,0x000200f8,0x00000347,0x00050081,0x00000006,0x00000349, - 0x00000319,0x0000003c,0x0006000c,0x00000006,0x0000034a,0x00000001,0x00000004,0x00000349, - 0x00050085,0x00000006,0x0000034b,0x0000034a,0x00000470,0x0007000c,0x00000006,0x0000034c, - 0x00000001,0x0000001a,0x0000034b,0x00000041,0x000200f9,0x0000034d,0x000200f8,0x0000034d, - 0x000700f5,0x00000006,0x0000049a,0x00000346,0x00000344,0x0000034c,0x00000347,0x00060050, - 0x0000000f,0x000004a6,0x00000496,0x00000498,0x0000049a,0x000200f9,0x0000031c,0x000200f8, - 0x0000031c,0x000700f5,0x0000000f,0x0000049c,0x00000234,0x00000232,0x000004a6,0x0000034d, - 0x00050041,0x0000007a,0x0000031e,0x00000077,0x0000012d,0x0004003d,0x00000006,0x0000031f, - 0x0000031e,0x0005008e,0x0000000f,0x00000320,0x0000049c,0x0000031f,0x00050051,0x00000006, - 0x00000237,0x00000320,0x00000000,0x00050051,0x00000006,0x00000239,0x00000320,0x00000001, - 0x00050051,0x00000006,0x0000023b,0x00000320,0x00000002,0x00050051,0x00000006,0x0000023d, - 0x0000047f,0x00000003,0x00070050,0x00000018,0x00000472,0x00000237,0x00000239,0x0000023b, - 0x0000023d,0x000200f9,0x0000026f,0x000200f8,0x0000023f,0x00050041,0x0000007a,0x00000240, - 0x00000077,0x00000094,0x0004003d,0x00000006,0x00000241,0x00000240,0x000500b4,0x00000033, - 0x00000242,0x00000241,0x00000090,0x000300f7,0x0000026e,0x00000000,0x000400fa,0x00000242, - 0x00000243,0x00000250,0x000200f8,0x00000243,0x0008004f,0x0000000f,0x00000245,0x0000047f, - 0x0000047f,0x00000000,0x00000001,0x00000002,0x00050041,0x0000007a,0x00000356,0x00000077, - 0x0000012d,0x0004003d,0x00000006,0x00000357,0x00000356,0x0005008e,0x0000000f,0x00000358, - 0x00000245,0x00000357,0x00050041,0x0000007a,0x00000359,0x00000077,0x0000013e,0x0004003d, - 0x00000006,0x0000035a,0x00000359,0x000500b7,0x00000033,0x0000035b,0x0000035a,0x00000060, - 0x000400a8,0x00000033,0x0000035c,0x0000035b,0x000300f7,0x0000036e,0x00000000,0x000400fa, - 0x0000035c,0x0000035d,0x0000036e,0x000200f8,0x0000035d,0x00050051,0x00000006,0x0000035f, - 0x00000358,0x00000000,0x000500bc,0x00000033,0x00000373,0x0000035f,0x00000047,0x000300f7, - 0x0000037d,0x00000000,0x000400fa,0x00000373,0x00000374,0x00000377,0x000200f8,0x00000374, - 0x00050085,0x00000006,0x00000376,0x0000035f,0x00000038,0x000200f9,0x0000037d,0x000200f8, - 0x00000377,0x0006000c,0x00000006,0x00000379,0x00000001,0x00000004,0x0000035f,0x0007000c, - 0x00000006,0x0000037a,0x00000001,0x0000001a,0x00000379,0x00000050,0x00050085,0x00000006, - 0x0000037b,0x0000037a,0x0000003f,0x00050083,0x00000006,0x0000037c,0x0000037b,0x0000003c, - 0x000200f9,0x0000037d,0x000200f8,0x0000037d,0x000700f5,0x00000006,0x0000048b,0x00000376, - 0x00000374,0x0000037c,0x00000377,0x00050051,0x00000006,0x00000363,0x00000358,0x00000001, - 0x000500bc,0x00000033,0x00000382,0x00000363,0x00000047,0x000300f7,0x0000038c,0x00000000, - 0x000400fa,0x00000382,0x00000383,0x00000386,0x000200f8,0x00000383,0x00050085,0x00000006, - 0x00000385,0x00000363,0x00000038,0x000200f9,0x0000038c,0x000200f8,0x00000386,0x0006000c, - 0x00000006,0x00000388,0x00000001,0x00000004,0x00000363,0x0007000c,0x00000006,0x00000389, - 0x00000001,0x0000001a,0x00000388,0x00000050,0x00050085,0x00000006,0x0000038a,0x00000389, - 0x0000003f,0x00050083,0x00000006,0x0000038b,0x0000038a,0x0000003c,0x000200f9,0x0000038c, - 0x000200f8,0x0000038c,0x000700f5,0x00000006,0x0000048d,0x00000385,0x00000383,0x0000038b, - 0x00000386,0x00050051,0x00000006,0x00000367,0x00000358,0x00000002,0x000500bc,0x00000033, - 0x00000391,0x00000367,0x00000047,0x000300f7,0x0000039b,0x00000000,0x000400fa,0x00000391, - 0x00000392,0x00000395,0x000200f8,0x00000392,0x00050085,0x00000006,0x00000394,0x00000367, - 0x00000038,0x000200f9,0x0000039b,0x000200f8,0x00000395,0x0006000c,0x00000006,0x00000397, - 0x00000001,0x00000004,0x00000367,0x0007000c,0x00000006,0x00000398,0x00000001,0x0000001a, - 0x00000397,0x00000050,0x00050085,0x00000006,0x00000399,0x00000398,0x0000003f,0x00050083, - 0x00000006,0x0000039a,0x00000399,0x0000003c,0x000200f9,0x0000039b,0x000200f8,0x0000039b, - 0x000700f5,0x00000006,0x0000048f,0x00000394,0x00000392,0x0000039a,0x00000395,0x00060050, - 0x0000000f,0x000004a5,0x0000048b,0x0000048d,0x0000048f,0x0008000c,0x0000000f,0x0000036d, - 0x00000001,0x0000002b,0x000004a5,0x00000061,0x0000046d,0x000200f9,0x0000036e,0x000200f8, - 0x0000036e,0x000700f5,0x0000000f,0x00000491,0x00000358,0x00000243,0x0000036d,0x0000039b, - 0x00050051,0x00000006,0x00000248,0x00000491,0x00000000,0x00050051,0x00000006,0x0000024a, - 0x00000491,0x00000001,0x00050051,0x00000006,0x0000024c,0x00000491,0x00000002,0x00050051, - 0x00000006,0x0000024e,0x0000047f,0x00000003,0x00070050,0x00000018,0x0000046f,0x00000248, - 0x0000024a,0x0000024c,0x0000024e,0x000200f9,0x0000026e,0x000200f8,0x00000250,0x00050041, - 0x0000007a,0x00000251,0x00000077,0x00000094,0x0004003d,0x00000006,0x00000252,0x00000251, - 0x000500b4,0x00000033,0x00000253,0x00000252,0x00000182,0x000300f7,0x0000026d,0x00000000, - 0x000400fa,0x00000253,0x00000254,0x0000026a,0x000200f8,0x00000254,0x0008004f,0x0000000f, - 0x00000256,0x0000047f,0x0000047f,0x00000000,0x00000001,0x00000002,0x00050090,0x0000000f, - 0x00000257,0x00000256,0x000000dd,0x00050051,0x00000006,0x00000259,0x00000257,0x00000000, - 0x00060052,0x00000018,0x00000449,0x00000259,0x000004a7,0x00000000,0x00050051,0x00000006, - 0x0000025b,0x00000257,0x00000001,0x00060052,0x00000018,0x0000044b,0x0000025b,0x00000449, - 0x00000001,0x00050051,0x00000006,0x0000025d,0x00000257,0x00000002,0x00060052,0x00000018, - 0x0000044d,0x0000025d,0x0000044b,0x00000002,0x0008004f,0x0000000f,0x0000025f,0x0000044d, - 0x0000044d,0x00000000,0x00000001,0x00000002,0x00050041,0x0000007a,0x000003a4,0x00000077, - 0x0000012d,0x0004003d,0x00000006,0x000003a5,0x000003a4,0x0005008e,0x0000000f,0x000003a6, - 0x0000025f,0x000003a5,0x00050041,0x0000007a,0x000003a7,0x00000077,0x0000013e,0x0004003d, - 0x00000006,0x000003a8,0x000003a7,0x000500b7,0x00000033,0x000003a9,0x000003a8,0x00000060, - 0x000400a8,0x00000033,0x000003aa,0x000003a9,0x000300f7,0x000003bc,0x00000000,0x000400fa, - 0x000003aa,0x000003ab,0x000003bc,0x000200f8,0x000003ab,0x00050051,0x00000006,0x000003ad, - 0x000003a6,0x00000000,0x000500bc,0x00000033,0x000003c1,0x000003ad,0x00000047,0x000300f7, - 0x000003cb,0x00000000,0x000400fa,0x000003c1,0x000003c2,0x000003c5,0x000200f8,0x000003c2, - 0x00050085,0x00000006,0x000003c4,0x000003ad,0x00000038,0x000200f9,0x000003cb,0x000200f8, - 0x000003c5,0x0006000c,0x00000006,0x000003c7,0x00000001,0x00000004,0x000003ad,0x0007000c, - 0x00000006,0x000003c8,0x00000001,0x0000001a,0x000003c7,0x00000050,0x00050085,0x00000006, - 0x000003c9,0x000003c8,0x0000003f,0x00050083,0x00000006,0x000003ca,0x000003c9,0x0000003c, - 0x000200f9,0x000003cb,0x000200f8,0x000003cb,0x000700f5,0x00000006,0x00000480,0x000003c4, - 0x000003c2,0x000003ca,0x000003c5,0x00050051,0x00000006,0x000003b1,0x000003a6,0x00000001, - 0x000500bc,0x00000033,0x000003d0,0x000003b1,0x00000047,0x000300f7,0x000003da,0x00000000, - 0x000400fa,0x000003d0,0x000003d1,0x000003d4,0x000200f8,0x000003d1,0x00050085,0x00000006, - 0x000003d3,0x000003b1,0x00000038,0x000200f9,0x000003da,0x000200f8,0x000003d4,0x0006000c, - 0x00000006,0x000003d6,0x00000001,0x00000004,0x000003b1,0x0007000c,0x00000006,0x000003d7, - 0x00000001,0x0000001a,0x000003d6,0x00000050,0x00050085,0x00000006,0x000003d8,0x000003d7, - 0x0000003f,0x00050083,0x00000006,0x000003d9,0x000003d8,0x0000003c,0x000200f9,0x000003da, - 0x000200f8,0x000003da,0x000700f5,0x00000006,0x00000482,0x000003d3,0x000003d1,0x000003d9, - 0x000003d4,0x00050051,0x00000006,0x000003b5,0x000003a6,0x00000002,0x000500bc,0x00000033, - 0x000003df,0x000003b5,0x00000047,0x000300f7,0x000003e9,0x00000000,0x000400fa,0x000003df, - 0x000003e0,0x000003e3,0x000200f8,0x000003e0,0x00050085,0x00000006,0x000003e2,0x000003b5, - 0x00000038,0x000200f9,0x000003e9,0x000200f8,0x000003e3,0x0006000c,0x00000006,0x000003e5, - 0x00000001,0x00000004,0x000003b5,0x0007000c,0x00000006,0x000003e6,0x00000001,0x0000001a, - 0x000003e5,0x00000050,0x00050085,0x00000006,0x000003e7,0x000003e6,0x0000003f,0x00050083, - 0x00000006,0x000003e8,0x000003e7,0x0000003c,0x000200f9,0x000003e9,0x000200f8,0x000003e9, - 0x000700f5,0x00000006,0x00000484,0x000003e2,0x000003e0,0x000003e8,0x000003e3,0x00060050, - 0x0000000f,0x000004a4,0x00000480,0x00000482,0x00000484,0x0008000c,0x0000000f,0x000003bb, - 0x00000001,0x0000002b,0x000004a4,0x00000061,0x0000046d,0x000200f9,0x000003bc,0x000200f8, - 0x000003bc,0x000700f5,0x0000000f,0x00000486,0x000003a6,0x00000254,0x000003bb,0x000003e9, - 0x00050051,0x00000006,0x00000262,0x00000486,0x00000000,0x00050051,0x00000006,0x00000264, - 0x00000486,0x00000001,0x00050051,0x00000006,0x00000266,0x00000486,0x00000002,0x00050051, - 0x00000006,0x00000268,0x0000047f,0x00000003,0x00070050,0x00000018,0x0000046e,0x00000262, - 0x00000264,0x00000266,0x00000268,0x000200f9,0x0000026d,0x000200f8,0x0000026a,0x0008004f, - 0x0000000f,0x000003ef,0x0000047f,0x0000047f,0x00000000,0x00000001,0x00000002,0x00050041, - 0x0000007a,0x000003f0,0x00000077,0x0000012d,0x0004003d,0x00000006,0x000003f1,0x000003f0, - 0x0005008e,0x0000000f,0x000003f2,0x000003ef,0x000003f1,0x00050051,0x00000006,0x000003f4, - 0x000003f2,0x00000000,0x00050051,0x00000006,0x000003f6,0x000003f2,0x00000001,0x00050051, - 0x00000006,0x000003f8,0x000003f2,0x00000002,0x00050051,0x00000006,0x000003fa,0x0000047f, - 0x00000003,0x00070050,0x00000018,0x0000046c,0x000003f4,0x000003f6,0x000003f8,0x000003fa, - 0x000200f9,0x0000026d,0x000200f8,0x0000026d,0x000700f5,0x00000018,0x000004a3,0x0000046e, - 0x000003bc,0x0000046c,0x0000026a,0x000200f9,0x0000026e,0x000200f8,0x0000026e,0x000700f5, - 0x00000018,0x000004a2,0x0000046f,0x0000036e,0x000004a3,0x0000026d,0x000200f9,0x0000026f, - 0x000200f8,0x0000026f,0x000700f5,0x00000018,0x000004a1,0x00000472,0x0000031c,0x000004a2, - 0x0000026e,0x00050085,0x00000018,0x00000273,0x000004a1,0x000001fa,0x0003003e,0x000001fd, - 0x00000273,0x000100fd,0x00010038 + 0x6e69616d,0x00000000,0x00050005,0x00000079,0x736e6f43,0x746e6174,0x00000073,0x00070006, + 0x00000079,0x00000000,0x47526373,0x756f5f42,0x74757074,0x00000000,0x00070006,0x00000079, + 0x00000001,0x74786574,0x5f657275,0x65707974,0x00000000,0x00060006,0x00000079,0x00000002, + 0x75706e69,0x79745f74,0x00006570,0x00060006,0x00000079,0x00000003,0x6f6c6f63,0x63735f72, + 0x00656c61,0x00060006,0x00000079,0x00000004,0x65786574,0x69735f6c,0x0000657a,0x00070006, + 0x00000079,0x00000005,0x656e6f74,0x5f70616d,0x6874656d,0x0000646f,0x00070006,0x00000079, + 0x00000006,0x656e6f74,0x5f70616d,0x74636166,0x0031726f,0x00070006,0x00000079,0x00000007, + 0x656e6f74,0x5f70616d,0x74636166,0x0032726f,0x00070006,0x00000079,0x00000008,0x5f726473, + 0x74696877,0x6f705f65,0x00746e69,0x00030005,0x0000007b,0x00000000,0x00050005,0x0000011f, + 0x74786574,0x30657275,0x00000000,0x00050005,0x00000146,0x74786574,0x31657275,0x00000000, + 0x00050005,0x00000238,0x75706e69,0x65742e74,0x00000078,0x00050005,0x0000023b,0x75706e69, + 0x6f632e74,0x00726f6c,0x00070005,0x0000023f,0x746e6540,0x6f507972,0x4f746e69,0x75707475, + 0x00000074,0x00030047,0x00000079,0x00000002,0x00050048,0x00000079,0x00000000,0x00000023, + 0x00000000,0x00050048,0x00000079,0x00000001,0x00000023,0x00000004,0x00050048,0x00000079, + 0x00000002,0x00000023,0x00000008,0x00050048,0x00000079,0x00000003,0x00000023,0x0000000c, + 0x00050048,0x00000079,0x00000004,0x00000023,0x00000010,0x00050048,0x00000079,0x00000005, + 0x00000023,0x00000020,0x00050048,0x00000079,0x00000006,0x00000023,0x00000024,0x00050048, + 0x00000079,0x00000007,0x00000023,0x00000028,0x00050048,0x00000079,0x00000008,0x00000023, + 0x0000002c,0x00040047,0x0000007b,0x00000021,0x00000000,0x00040047,0x0000007b,0x00000022, + 0x00000000,0x00040047,0x0000011f,0x00000021,0x00000001,0x00040047,0x0000011f,0x00000022, + 0x00000000,0x00040047,0x00000146,0x00000021,0x00000002,0x00040047,0x00000146,0x00000022, + 0x00000000,0x00040047,0x00000238,0x0000001e,0x00000000,0x00040047,0x0000023b,0x0000001e, + 0x00000001,0x00040047,0x0000023f,0x0000001e,0x00000000,0x00020013,0x00000002,0x00030021, + 0x00000003,0x00000002,0x00030016,0x00000006,0x00000020,0x00040017,0x0000000f,0x00000006, + 0x00000003,0x00040017,0x00000018,0x00000006,0x00000004,0x00040017,0x00000019,0x00000006, + 0x00000002,0x0004002b,0x00000006,0x00000036,0x3d25aee6,0x00020014,0x00000037,0x0004002b, + 0x00000006,0x0000003c,0x414eb852,0x0004002b,0x00000006,0x00000040,0x3d6147ae,0x0004002b, + 0x00000006,0x00000043,0x3f870a3d,0x0004002b,0x00000006,0x00000045,0x4019999a,0x0004002b, + 0x00000006,0x0000004b,0x3b4d2e1c,0x0004002b,0x00000006,0x00000054,0x3ed55555,0x0004002b, + 0x00000006,0x0000005e,0x3c4fcdac,0x0006002c,0x0000000f,0x0000005f,0x0000005e,0x0000005e, + 0x0000005e,0x0004002b,0x00000006,0x00000061,0x3f560000,0x0004002b,0x00000006,0x00000064, + 0x00000000,0x0006002c,0x0000000f,0x00000065,0x00000064,0x00000064,0x00000064,0x0004002b, + 0x00000006,0x00000068,0x4196d000,0x0004002b,0x00000006,0x00000069,0x41958000,0x0004002b, + 0x00000006,0x00000070,0x461c4000,0x0004002b,0x00000006,0x00000075,0x40c8e06b,0x0006002c, + 0x0000000f,0x00000076,0x00000075,0x00000075,0x00000075,0x000b001e,0x00000079,0x00000006, + 0x00000006,0x00000006,0x00000006,0x00000018,0x00000006,0x00000006,0x00000006,0x00000006, + 0x00040020,0x0000007a,0x00000002,0x00000079,0x0004003b,0x0000007a,0x0000007b,0x00000002, + 0x00040015,0x0000007c,0x00000020,0x00000001,0x0004002b,0x0000007c,0x0000007d,0x00000008, + 0x00040020,0x0000007e,0x00000002,0x00000006,0x0004002b,0x0000007c,0x00000085,0x00000005, + 0x0004002b,0x00000006,0x00000088,0x3f800000,0x0004002b,0x0000007c,0x0000008c,0x00000006, + 0x0004002b,0x00000006,0x00000094,0x40000000,0x0004002b,0x0000007c,0x00000098,0x00000002, + 0x00040018,0x0000009f,0x0000000f,0x00000003,0x0004002b,0x00000006,0x000000a0,0x3f209d8c, + 0x0004002b,0x00000006,0x000000a1,0x3ea897c8,0x0004002b,0x00000006,0x000000a2,0x3d3168f9, + 0x0006002c,0x0000000f,0x000000a3,0x000000a0,0x000000a1,0x000000a2,0x0004002b,0x00000006, + 0x000000a4,0x3d8d82ba,0x0004002b,0x00000006,0x000000a5,0x3f6b670a,0x0004002b,0x00000006, + 0x000000a6,0x3c3a27af,0x0006002c,0x0000000f,0x000000a7,0x000000a4,0x000000a5,0x000000a6, + 0x0004002b,0x00000006,0x000000a8,0x3c86466b,0x0004002b,0x00000006,0x000000a9,0x3db44029, + 0x0004002b,0x00000006,0x000000aa,0x3f6545b7,0x0006002c,0x0000000f,0x000000ab,0x000000a8, + 0x000000a9,0x000000aa,0x0006002c,0x0000009f,0x000000ac,0x000000a3,0x000000a7,0x000000ab, + 0x0004002b,0x0000007c,0x000000c5,0x00000007,0x0004002b,0x00000006,0x000000d5,0x3fd48b22, + 0x0004002b,0x00000006,0x000000d6,0xbf1670a0,0x0004002b,0x00000006,0x000000d7,0xbd952d23, + 0x0006002c,0x0000000f,0x000000d8,0x000000d5,0x000000d6,0x000000d7,0x0004002b,0x00000006, + 0x000000d9,0xbdff127f,0x0004002b,0x00000006,0x000000da,0x3f9102b4,0x0004002b,0x00000006, + 0x000000db,0xbc08c60d,0x0006002c,0x0000000f,0x000000dc,0x000000d9,0x000000da,0x000000db, + 0x0004002b,0x00000006,0x000000dd,0xbc94b7b3,0x0004002b,0x00000006,0x000000de,0xbdce05cd, + 0x0004002b,0x00000006,0x000000df,0x3f8f333c,0x0006002c,0x0000000f,0x000000e0,0x000000dd, + 0x000000de,0x000000df,0x0006002c,0x0000009f,0x000000e1,0x000000d8,0x000000dc,0x000000e0, + 0x0004002b,0x0000007c,0x000000e8,0x00000001,0x0004002b,0x0000007c,0x000000ec,0x00000004, + 0x00040020,0x000000ed,0x00000002,0x00000018,0x0004002b,0x00000006,0x000000f2,0x3727c5ac, + 0x0005002c,0x00000019,0x000000f3,0x000000f2,0x000000f2,0x0005002c,0x00000019,0x000000f4, + 0x00000088,0x00000088,0x0004002b,0x00000006,0x000000fd,0x3f000000,0x00090019,0x0000011c, + 0x00000006,0x00000001,0x00000000,0x00000000,0x00000000,0x00000001,0x00000000,0x0003001b, + 0x0000011d,0x0000011c,0x00040020,0x0000011e,0x00000000,0x0000011d,0x0004003b,0x0000011e, + 0x0000011f,0x00000000,0x0004002b,0x00000006,0x0000013a,0x40400000,0x0004002b,0x00000006, + 0x00000144,0x437f0000,0x0004003b,0x0000011e,0x00000146,0x00000000,0x0004002b,0x00000006, + 0x00000151,0x40800000,0x0004002b,0x0000007c,0x00000171,0x00000003,0x0004002b,0x0000007c, + 0x00000181,0x00000000,0x00040020,0x00000233,0x00000001,0x00000018,0x00040020,0x00000237, + 0x00000001,0x00000019,0x0004003b,0x00000237,0x00000238,0x00000001,0x0004003b,0x00000233, + 0x0000023b,0x00000001,0x00040020,0x0000023e,0x00000003,0x00000018,0x0004003b,0x0000023e, + 0x0000023f,0x00000003,0x0005002c,0x00000019,0x0000051e,0x000000fd,0x000000fd,0x0004002b, + 0x00000006,0x0000051f,0x3b800000,0x0006002c,0x0000000f,0x00000520,0x00000061,0x00000061, + 0x00000061,0x0006002c,0x0000000f,0x00000521,0x00000068,0x00000068,0x00000068,0x0006002c, + 0x0000000f,0x00000523,0x00000088,0x00000088,0x00000088,0x0004002b,0x00000006,0x00000526, + 0x3f72a76f,0x0004002b,0x00000006,0x00000527,0x3d9e8391,0x0007002c,0x00000018,0x00000529, + 0x00000088,0x00000064,0x00000064,0x00000088,0x00030001,0x00000018,0x00000561,0x00050036, + 0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003d,0x00000019, + 0x00000239,0x00000238,0x0004003d,0x00000018,0x0000023c,0x0000023b,0x00050041,0x0000007e, + 0x000002bf,0x0000007b,0x000000e8,0x0004003d,0x00000006,0x000002c0,0x000002bf,0x000500b4, + 0x00000037,0x000002c1,0x000002c0,0x00000088,0x000300f7,0x00000302,0x00000000,0x000400fa, + 0x000002c1,0x000002c2,0x000002c7,0x000200f8,0x000002c2,0x0004003d,0x0000011d,0x000002c3, + 0x0000011f,0x00050057,0x00000018,0x000002c6,0x000002c3,0x00000239,0x000200f9,0x00000302, + 0x000200f8,0x000002c7,0x00050041,0x0000007e,0x000002c8,0x0000007b,0x000000e8,0x0004003d, + 0x00000006,0x000002c9,0x000002c8,0x000500b4,0x00000037,0x000002ca,0x000002c9,0x00000094, + 0x000300f7,0x00000301,0x00000000,0x000400fa,0x000002ca,0x000002cb,0x000002d7,0x000200f8, + 0x000002cb,0x000400d1,0x00000019,0x0000030c,0x00000239,0x00050041,0x000000ed,0x0000030d, + 0x0000007b,0x000000ec,0x0004003d,0x00000018,0x0000030e,0x0000030d,0x0007004f,0x00000019, + 0x0000030f,0x0000030e,0x0000030e,0x00000002,0x00000003,0x00050085,0x00000019,0x00000310, + 0x0000030c,0x0000030f,0x0008000c,0x00000019,0x00000311,0x00000001,0x0000002b,0x00000310, + 0x000000f3,0x000000f4,0x00050041,0x000000ed,0x00000314,0x0000007b,0x000000ec,0x0004003d, + 0x00000018,0x00000315,0x00000314,0x0007004f,0x00000019,0x00000316,0x00000315,0x00000315, + 0x00000002,0x00000003,0x00050085,0x00000019,0x00000317,0x00000239,0x00000316,0x0005008e, + 0x00000019,0x00000319,0x00000311,0x000000fd,0x00050083,0x00000019,0x0000031a,0x00000317, + 0x00000319,0x00050083,0x00000019,0x0000031d,0x000000f4,0x00000311,0x0006000c,0x00000019, + 0x0000031f,0x00000001,0x0000000a,0x0000031a,0x0008000c,0x00000019,0x00000320,0x00000001, + 0x00000031,0x0000031d,0x000000f4,0x0000031f,0x0006000c,0x00000019,0x00000322,0x00000001, + 0x00000008,0x0000031a,0x00050081,0x00000019,0x00000324,0x00000322,0x0000051e,0x00050081, + 0x00000019,0x00000326,0x00000324,0x00000320,0x00050041,0x000000ed,0x00000327,0x0000007b, + 0x000000ec,0x0004003d,0x00000018,0x00000328,0x00000327,0x0007004f,0x00000019,0x00000329, + 0x00000328,0x00000328,0x00000000,0x00000001,0x00050085,0x00000019,0x0000032a,0x00000326, + 0x00000329,0x0004003d,0x0000011d,0x000002ce,0x0000011f,0x000400cf,0x00000019,0x000002d2, + 0x00000239,0x000400d0,0x00000019,0x000002d5,0x00000239,0x00080058,0x00000018,0x000002d6, + 0x000002ce,0x0000032a,0x00000004,0x000002d2,0x000002d5,0x000200f9,0x00000301,0x000200f8, + 0x000002d7,0x00050041,0x0000007e,0x000002d8,0x0000007b,0x000000e8,0x0004003d,0x00000006, + 0x000002d9,0x000002d8,0x000500b4,0x00000037,0x000002da,0x000002d9,0x0000013a,0x000300f7, + 0x00000300,0x00000000,0x000400fa,0x000002da,0x000002db,0x000002e8,0x000200f8,0x000002db, + 0x0004003d,0x0000011d,0x000002dc,0x0000011f,0x00050057,0x00000018,0x000002df,0x000002dc, + 0x00000239,0x00050051,0x00000006,0x000002e0,0x000002df,0x00000000,0x00050085,0x00000006, + 0x000002e1,0x000002e0,0x00000144,0x0004003d,0x0000011d,0x000002e2,0x00000146,0x00050081, + 0x00000006,0x000002e4,0x000002e1,0x000000fd,0x00050085,0x00000006,0x000002e5,0x000002e4, + 0x0000051f,0x00050050,0x00000019,0x000002e6,0x000002e5,0x000000fd,0x00050057,0x00000018, + 0x000002e7,0x000002e2,0x000002e6,0x000200f9,0x00000300,0x000200f8,0x000002e8,0x00050041, + 0x0000007e,0x000002e9,0x0000007b,0x000000e8,0x0004003d,0x00000006,0x000002ea,0x000002e9, + 0x000500b4,0x00000037,0x000002eb,0x000002ea,0x00000151,0x000300f7,0x000002ff,0x00000000, + 0x000400fa,0x000002eb,0x000002ec,0x000002fa,0x000200f8,0x000002ec,0x000400d1,0x00000019, + 0x00000334,0x00000239,0x00050041,0x000000ed,0x00000335,0x0000007b,0x000000ec,0x0004003d, + 0x00000018,0x00000336,0x00000335,0x0007004f,0x00000019,0x00000337,0x00000336,0x00000336, + 0x00000002,0x00000003,0x00050085,0x00000019,0x00000338,0x00000334,0x00000337,0x0008000c, + 0x00000019,0x00000339,0x00000001,0x0000002b,0x00000338,0x000000f3,0x000000f4,0x00050041, + 0x000000ed,0x0000033c,0x0000007b,0x000000ec,0x0004003d,0x00000018,0x0000033d,0x0000033c, + 0x0007004f,0x00000019,0x0000033e,0x0000033d,0x0000033d,0x00000002,0x00000003,0x00050085, + 0x00000019,0x0000033f,0x00000239,0x0000033e,0x0005008e,0x00000019,0x00000341,0x00000339, + 0x000000fd,0x00050083,0x00000019,0x00000342,0x0000033f,0x00000341,0x00050083,0x00000019, + 0x00000345,0x000000f4,0x00000339,0x0006000c,0x00000019,0x00000347,0x00000001,0x0000000a, + 0x00000342,0x0008000c,0x00000019,0x00000348,0x00000001,0x00000031,0x00000345,0x000000f4, + 0x00000347,0x0006000c,0x00000019,0x0000034a,0x00000001,0x00000008,0x00000342,0x00050081, + 0x00000019,0x0000034c,0x0000034a,0x0000051e,0x00050081,0x00000019,0x0000034e,0x0000034c, + 0x00000348,0x00050041,0x000000ed,0x0000034f,0x0000007b,0x000000ec,0x0004003d,0x00000018, + 0x00000350,0x0000034f,0x0007004f,0x00000019,0x00000351,0x00000350,0x00000350,0x00000000, + 0x00000001,0x00050085,0x00000019,0x00000352,0x0000034e,0x00000351,0x0004003d,0x0000011d, + 0x000002ef,0x0000011f,0x00050057,0x00000018,0x000002f1,0x000002ef,0x00000352,0x00050051, + 0x00000006,0x000002f2,0x000002f1,0x00000000,0x00050085,0x00000006,0x000002f3,0x000002f2, + 0x00000144,0x0004003d,0x0000011d,0x000002f4,0x00000146,0x00050081,0x00000006,0x000002f6, + 0x000002f3,0x000000fd,0x00050085,0x00000006,0x000002f7,0x000002f6,0x0000051f,0x00050050, + 0x00000019,0x000002f8,0x000002f7,0x000000fd,0x00050057,0x00000018,0x000002f9,0x000002f4, + 0x000002f8,0x000200f9,0x000002ff,0x000200f8,0x000002fa,0x000200f9,0x000002ff,0x000200f8, + 0x000002ff,0x000700f5,0x00000018,0x0000052d,0x000002f9,0x000002ec,0x00000529,0x000002fa, + 0x000200f9,0x00000300,0x000200f8,0x00000300,0x000700f5,0x00000018,0x0000052c,0x000002e7, + 0x000002db,0x0000052d,0x000002ff,0x000200f9,0x00000301,0x000200f8,0x00000301,0x000700f5, + 0x00000018,0x0000052b,0x000002d6,0x000002cb,0x0000052c,0x00000300,0x000200f9,0x00000302, + 0x000200f8,0x00000302,0x000700f5,0x00000018,0x0000052a,0x000002c6,0x000002c2,0x0000052b, + 0x00000301,0x00050041,0x0000007e,0x00000255,0x0000007b,0x00000098,0x0004003d,0x00000006, + 0x00000256,0x00000255,0x000500b4,0x00000037,0x00000257,0x00000256,0x0000013a,0x000300f7, + 0x00000262,0x00000000,0x000400fa,0x00000257,0x00000258,0x00000262,0x000200f8,0x00000258, + 0x0008004f,0x0000000f,0x0000025a,0x0000052a,0x0000052a,0x00000000,0x00000001,0x00000002, + 0x0006000c,0x0000000f,0x00000359,0x00000001,0x00000004,0x0000025a,0x0007000c,0x0000000f, + 0x0000035a,0x00000001,0x0000001a,0x00000359,0x0000005f,0x00050083,0x0000000f,0x0000035c, + 0x0000035a,0x00000520,0x0007000c,0x0000000f,0x0000035d,0x00000001,0x00000028,0x0000035c, + 0x00000065,0x0006000c,0x0000000f,0x0000035f,0x00000001,0x00000004,0x0000025a,0x0007000c, + 0x0000000f,0x00000360,0x00000001,0x0000001a,0x0000035f,0x0000005f,0x0005008e,0x0000000f, + 0x00000361,0x00000360,0x00000069,0x00050083,0x0000000f,0x00000363,0x00000521,0x00000361, + 0x00050088,0x0000000f,0x00000366,0x0000035d,0x00000363,0x0006000c,0x0000000f,0x00000367, + 0x00000001,0x00000004,0x00000366,0x0007000c,0x0000000f,0x00000368,0x00000001,0x0000001a, + 0x00000367,0x00000076,0x0005008e,0x0000000f,0x00000369,0x00000368,0x00000070,0x00050041, + 0x0000007e,0x0000036a,0x0000007b,0x0000007d,0x0004003d,0x00000006,0x0000036b,0x0000036a, + 0x00060050,0x0000000f,0x0000036c,0x0000036b,0x0000036b,0x0000036b,0x00050088,0x0000000f, + 0x0000036d,0x00000369,0x0000036c,0x00050051,0x00000006,0x0000025d,0x0000036d,0x00000000, + 0x00060052,0x00000018,0x000004ca,0x0000025d,0x0000052a,0x00000000,0x00050051,0x00000006, + 0x0000025f,0x0000036d,0x00000001,0x00060052,0x00000018,0x000004cc,0x0000025f,0x000004ca, + 0x00000001,0x00050051,0x00000006,0x00000261,0x0000036d,0x00000002,0x00060052,0x00000018, + 0x000004ce,0x00000261,0x000004cc,0x00000002,0x000200f9,0x00000262,0x000200f8,0x00000262, + 0x000700f5,0x00000018,0x0000052e,0x0000052a,0x00000302,0x000004ce,0x00000258,0x00050041, + 0x0000007e,0x00000263,0x0000007b,0x00000085,0x0004003d,0x00000006,0x00000264,0x00000263, + 0x000500b7,0x00000037,0x00000265,0x00000264,0x00000064,0x000300f7,0x00000270,0x00000000, + 0x000400fa,0x00000265,0x00000266,0x00000270,0x000200f8,0x00000266,0x0008004f,0x0000000f, + 0x00000268,0x0000052e,0x0000052e,0x00000000,0x00000001,0x00000002,0x00050041,0x0000007e, + 0x00000372,0x0000007b,0x00000085,0x0004003d,0x00000006,0x00000373,0x00000372,0x000500b4, + 0x00000037,0x00000374,0x00000373,0x00000088,0x000300f7,0x000003a8,0x00000000,0x000400fa, + 0x00000374,0x00000375,0x0000037a,0x000200f8,0x00000375,0x00050041,0x0000007e,0x00000376, + 0x0000007b,0x0000008c,0x0004003d,0x00000006,0x00000377,0x00000376,0x0005008e,0x0000000f, + 0x00000379,0x00000268,0x00000377,0x000200f9,0x000003a8,0x000200f8,0x0000037a,0x00050041, + 0x0000007e,0x0000037b,0x0000007b,0x00000085,0x0004003d,0x00000006,0x0000037c,0x0000037b, + 0x000500b4,0x00000037,0x0000037d,0x0000037c,0x00000094,0x000300f7,0x000003a7,0x00000000, + 0x000400fa,0x0000037d,0x0000037e,0x000003a7,0x000200f8,0x0000037e,0x00050041,0x0000007e, + 0x0000037f,0x0000007b,0x00000098,0x0004003d,0x00000006,0x00000380,0x0000037f,0x000500b4, + 0x00000037,0x00000381,0x00000380,0x00000094,0x000300f7,0x00000385,0x00000000,0x000400fa, + 0x00000381,0x00000382,0x00000385,0x000200f8,0x00000382,0x00050090,0x0000000f,0x00000384, + 0x00000268,0x000000ac,0x000200f9,0x00000385,0x000200f8,0x00000385,0x000700f5,0x0000000f, + 0x0000052f,0x00000268,0x0000037e,0x00000384,0x00000382,0x00050051,0x00000006,0x00000387, + 0x0000052f,0x00000000,0x00050051,0x00000006,0x00000389,0x0000052f,0x00000001,0x00050051, + 0x00000006,0x0000038b,0x0000052f,0x00000002,0x0007000c,0x00000006,0x0000038c,0x00000001, + 0x00000028,0x00000389,0x0000038b,0x0007000c,0x00000006,0x0000038d,0x00000001,0x00000028, + 0x00000387,0x0000038c,0x000500ba,0x00000037,0x0000038f,0x0000038d,0x00000064,0x000300f7, + 0x0000039f,0x00000000,0x000400fa,0x0000038f,0x00000390,0x0000039f,0x000200f8,0x00000390, + 0x00050041,0x0000007e,0x00000391,0x0000007b,0x0000008c,0x0004003d,0x00000006,0x00000392, + 0x00000391,0x00050085,0x00000006,0x00000394,0x00000392,0x0000038d,0x00050081,0x00000006, + 0x00000395,0x00000088,0x00000394,0x00050041,0x0000007e,0x00000396,0x0000007b,0x000000c5, + 0x0004003d,0x00000006,0x00000397,0x00000396,0x00050085,0x00000006,0x00000399,0x00000397, + 0x0000038d,0x00050081,0x00000006,0x0000039a,0x00000088,0x00000399,0x00050088,0x00000006, + 0x0000039b,0x00000395,0x0000039a,0x0005008e,0x0000000f,0x0000039e,0x0000052f,0x0000039b, + 0x000200f9,0x0000039f,0x000200f8,0x0000039f,0x000700f5,0x0000000f,0x00000530,0x0000052f, + 0x00000385,0x0000039e,0x00000390,0x00050041,0x0000007e,0x000003a0,0x0000007b,0x00000098, + 0x0004003d,0x00000006,0x000003a1,0x000003a0,0x000500b4,0x00000037,0x000003a2,0x000003a1, + 0x00000094,0x000300f7,0x000003a6,0x00000000,0x000400fa,0x000003a2,0x000003a3,0x000003a6, + 0x000200f8,0x000003a3,0x00050090,0x0000000f,0x000003a5,0x00000530,0x000000e1,0x000200f9, + 0x000003a6,0x000200f8,0x000003a6,0x000700f5,0x0000000f,0x00000533,0x00000530,0x0000039f, + 0x000003a5,0x000003a3,0x000200f9,0x000003a7,0x000200f8,0x000003a7,0x000700f5,0x0000000f, + 0x00000532,0x00000268,0x0000037a,0x00000533,0x000003a6,0x000200f9,0x000003a8,0x000200f8, + 0x000003a8,0x000700f5,0x0000000f,0x00000531,0x00000379,0x00000375,0x00000532,0x000003a7, + 0x00050051,0x00000006,0x0000026b,0x00000531,0x00000000,0x00060052,0x00000018,0x000004d3, + 0x0000026b,0x0000052e,0x00000000,0x00050051,0x00000006,0x0000026d,0x00000531,0x00000001, + 0x00060052,0x00000018,0x000004d5,0x0000026d,0x000004d3,0x00000001,0x00050051,0x00000006, + 0x0000026f,0x00000531,0x00000002,0x00060052,0x00000018,0x000004d7,0x0000026f,0x000004d5, + 0x00000002,0x000200f9,0x00000270,0x000200f8,0x00000270,0x000700f5,0x00000018,0x00000539, + 0x0000052e,0x00000262,0x000004d7,0x000003a8,0x00050041,0x0000007e,0x00000271,0x0000007b, + 0x00000098,0x0004003d,0x00000006,0x00000272,0x00000271,0x000500b4,0x00000037,0x00000273, + 0x00000272,0x00000088,0x000300f7,0x000002b1,0x00000000,0x000400fa,0x00000273,0x00000274, + 0x00000281,0x000200f8,0x00000274,0x0008004f,0x0000000f,0x00000276,0x00000539,0x00000539, + 0x00000000,0x00000001,0x00000002,0x00050041,0x0000007e,0x000003b0,0x0000007b,0x00000181, + 0x0004003d,0x00000006,0x000003b1,0x000003b0,0x000500b7,0x00000037,0x000003b2,0x000003b1, + 0x00000064,0x000300f7,0x000003c0,0x00000000,0x000400fa,0x000003b2,0x000003b3,0x000003c0, + 0x000200f8,0x000003b3,0x00050051,0x00000006,0x000003b5,0x00000539,0x00000000,0x000500bc, + 0x00000037,0x000003c9,0x000003b5,0x00000036,0x000300f7,0x000003d3,0x00000000,0x000400fa, + 0x000003c9,0x000003ca,0x000003cd,0x000200f8,0x000003ca,0x00050085,0x00000006,0x000003cc, + 0x000003b5,0x00000527,0x000200f9,0x000003d3,0x000200f8,0x000003cd,0x00050081,0x00000006, + 0x000003cf,0x000003b5,0x00000040,0x0006000c,0x00000006,0x000003d0,0x00000001,0x00000004, + 0x000003cf,0x00050085,0x00000006,0x000003d1,0x000003d0,0x00000526,0x0007000c,0x00000006, + 0x000003d2,0x00000001,0x0000001a,0x000003d1,0x00000045,0x000200f9,0x000003d3,0x000200f8, + 0x000003d3,0x000700f5,0x00000006,0x00000550,0x000003cc,0x000003ca,0x000003d2,0x000003cd, + 0x00050051,0x00000006,0x000003b9,0x00000539,0x00000001,0x000500bc,0x00000037,0x000003d8, + 0x000003b9,0x00000036,0x000300f7,0x000003e2,0x00000000,0x000400fa,0x000003d8,0x000003d9, + 0x000003dc,0x000200f8,0x000003d9,0x00050085,0x00000006,0x000003db,0x000003b9,0x00000527, + 0x000200f9,0x000003e2,0x000200f8,0x000003dc,0x00050081,0x00000006,0x000003de,0x000003b9, + 0x00000040,0x0006000c,0x00000006,0x000003df,0x00000001,0x00000004,0x000003de,0x00050085, + 0x00000006,0x000003e0,0x000003df,0x00000526,0x0007000c,0x00000006,0x000003e1,0x00000001, + 0x0000001a,0x000003e0,0x00000045,0x000200f9,0x000003e2,0x000200f8,0x000003e2,0x000700f5, + 0x00000006,0x00000552,0x000003db,0x000003d9,0x000003e1,0x000003dc,0x00050051,0x00000006, + 0x000003bd,0x00000539,0x00000002,0x000500bc,0x00000037,0x000003e7,0x000003bd,0x00000036, + 0x000300f7,0x000003f1,0x00000000,0x000400fa,0x000003e7,0x000003e8,0x000003eb,0x000200f8, + 0x000003e8,0x00050085,0x00000006,0x000003ea,0x000003bd,0x00000527,0x000200f9,0x000003f1, + 0x000200f8,0x000003eb,0x00050081,0x00000006,0x000003ed,0x000003bd,0x00000040,0x0006000c, + 0x00000006,0x000003ee,0x00000001,0x00000004,0x000003ed,0x00050085,0x00000006,0x000003ef, + 0x000003ee,0x00000526,0x0007000c,0x00000006,0x000003f0,0x00000001,0x0000001a,0x000003ef, + 0x00000045,0x000200f9,0x000003f1,0x000200f8,0x000003f1,0x000700f5,0x00000006,0x00000554, + 0x000003ea,0x000003e8,0x000003f0,0x000003eb,0x00060050,0x0000000f,0x00000560,0x00000550, + 0x00000552,0x00000554,0x000200f9,0x000003c0,0x000200f8,0x000003c0,0x000700f5,0x0000000f, + 0x00000556,0x00000276,0x00000274,0x00000560,0x000003f1,0x00050041,0x0000007e,0x000003c2, + 0x0000007b,0x00000171,0x0004003d,0x00000006,0x000003c3,0x000003c2,0x0005008e,0x0000000f, + 0x000003c4,0x00000556,0x000003c3,0x00050051,0x00000006,0x00000279,0x000003c4,0x00000000, + 0x00050051,0x00000006,0x0000027b,0x000003c4,0x00000001,0x00050051,0x00000006,0x0000027d, + 0x000003c4,0x00000002,0x00050051,0x00000006,0x0000027f,0x00000539,0x00000003,0x00070050, + 0x00000018,0x00000528,0x00000279,0x0000027b,0x0000027d,0x0000027f,0x000200f9,0x000002b1, + 0x000200f8,0x00000281,0x00050041,0x0000007e,0x00000282,0x0000007b,0x00000098,0x0004003d, + 0x00000006,0x00000283,0x00000282,0x000500b4,0x00000037,0x00000284,0x00000283,0x00000094, + 0x000300f7,0x000002b0,0x00000000,0x000400fa,0x00000284,0x00000285,0x00000292,0x000200f8, + 0x00000285,0x0008004f,0x0000000f,0x00000287,0x00000539,0x00000539,0x00000000,0x00000001, + 0x00000002,0x00050041,0x0000007e,0x000003fa,0x0000007b,0x00000171,0x0004003d,0x00000006, + 0x000003fb,0x000003fa,0x0005008e,0x0000000f,0x000003fc,0x00000287,0x000003fb,0x00050041, + 0x0000007e,0x000003fd,0x0000007b,0x00000181,0x0004003d,0x00000006,0x000003fe,0x000003fd, + 0x000500b7,0x00000037,0x000003ff,0x000003fe,0x00000064,0x000400a8,0x00000037,0x00000400, + 0x000003ff,0x000300f7,0x00000412,0x00000000,0x000400fa,0x00000400,0x00000401,0x00000412, + 0x000200f8,0x00000401,0x00050051,0x00000006,0x00000403,0x000003fc,0x00000000,0x000500bc, + 0x00000037,0x00000417,0x00000403,0x0000004b,0x000300f7,0x00000421,0x00000000,0x000400fa, + 0x00000417,0x00000418,0x0000041b,0x000200f8,0x00000418,0x00050085,0x00000006,0x0000041a, + 0x00000403,0x0000003c,0x000200f9,0x00000421,0x000200f8,0x0000041b,0x0006000c,0x00000006, + 0x0000041d,0x00000001,0x00000004,0x00000403,0x0007000c,0x00000006,0x0000041e,0x00000001, + 0x0000001a,0x0000041d,0x00000054,0x00050085,0x00000006,0x0000041f,0x0000041e,0x00000043, + 0x00050083,0x00000006,0x00000420,0x0000041f,0x00000040,0x000200f9,0x00000421,0x000200f8, + 0x00000421,0x000700f5,0x00000006,0x00000545,0x0000041a,0x00000418,0x00000420,0x0000041b, + 0x00050051,0x00000006,0x00000407,0x000003fc,0x00000001,0x000500bc,0x00000037,0x00000426, + 0x00000407,0x0000004b,0x000300f7,0x00000430,0x00000000,0x000400fa,0x00000426,0x00000427, + 0x0000042a,0x000200f8,0x00000427,0x00050085,0x00000006,0x00000429,0x00000407,0x0000003c, + 0x000200f9,0x00000430,0x000200f8,0x0000042a,0x0006000c,0x00000006,0x0000042c,0x00000001, + 0x00000004,0x00000407,0x0007000c,0x00000006,0x0000042d,0x00000001,0x0000001a,0x0000042c, + 0x00000054,0x00050085,0x00000006,0x0000042e,0x0000042d,0x00000043,0x00050083,0x00000006, + 0x0000042f,0x0000042e,0x00000040,0x000200f9,0x00000430,0x000200f8,0x00000430,0x000700f5, + 0x00000006,0x00000547,0x00000429,0x00000427,0x0000042f,0x0000042a,0x00050051,0x00000006, + 0x0000040b,0x000003fc,0x00000002,0x000500bc,0x00000037,0x00000435,0x0000040b,0x0000004b, + 0x000300f7,0x0000043f,0x00000000,0x000400fa,0x00000435,0x00000436,0x00000439,0x000200f8, + 0x00000436,0x00050085,0x00000006,0x00000438,0x0000040b,0x0000003c,0x000200f9,0x0000043f, + 0x000200f8,0x00000439,0x0006000c,0x00000006,0x0000043b,0x00000001,0x00000004,0x0000040b, + 0x0007000c,0x00000006,0x0000043c,0x00000001,0x0000001a,0x0000043b,0x00000054,0x00050085, + 0x00000006,0x0000043d,0x0000043c,0x00000043,0x00050083,0x00000006,0x0000043e,0x0000043d, + 0x00000040,0x000200f9,0x0000043f,0x000200f8,0x0000043f,0x000700f5,0x00000006,0x00000549, + 0x00000438,0x00000436,0x0000043e,0x00000439,0x00060050,0x0000000f,0x0000055f,0x00000545, + 0x00000547,0x00000549,0x0008000c,0x0000000f,0x00000411,0x00000001,0x0000002b,0x0000055f, + 0x00000065,0x00000523,0x000200f9,0x00000412,0x000200f8,0x00000412,0x000700f5,0x0000000f, + 0x0000054b,0x000003fc,0x00000285,0x00000411,0x0000043f,0x00050051,0x00000006,0x0000028a, + 0x0000054b,0x00000000,0x00050051,0x00000006,0x0000028c,0x0000054b,0x00000001,0x00050051, + 0x00000006,0x0000028e,0x0000054b,0x00000002,0x00050051,0x00000006,0x00000290,0x00000539, + 0x00000003,0x00070050,0x00000018,0x00000525,0x0000028a,0x0000028c,0x0000028e,0x00000290, + 0x000200f9,0x000002b0,0x000200f8,0x00000292,0x00050041,0x0000007e,0x00000293,0x0000007b, + 0x00000098,0x0004003d,0x00000006,0x00000294,0x00000293,0x000500b4,0x00000037,0x00000295, + 0x00000294,0x0000013a,0x000300f7,0x000002af,0x00000000,0x000400fa,0x00000295,0x00000296, + 0x000002ac,0x000200f8,0x00000296,0x0008004f,0x0000000f,0x00000298,0x00000539,0x00000539, + 0x00000000,0x00000001,0x00000002,0x00050090,0x0000000f,0x00000299,0x00000298,0x000000e1, + 0x00050051,0x00000006,0x0000029b,0x00000299,0x00000000,0x00060052,0x00000018,0x000004fd, + 0x0000029b,0x00000561,0x00000000,0x00050051,0x00000006,0x0000029d,0x00000299,0x00000001, + 0x00060052,0x00000018,0x000004ff,0x0000029d,0x000004fd,0x00000001,0x00050051,0x00000006, + 0x0000029f,0x00000299,0x00000002,0x00060052,0x00000018,0x00000501,0x0000029f,0x000004ff, + 0x00000002,0x0008004f,0x0000000f,0x000002a1,0x00000501,0x00000501,0x00000000,0x00000001, + 0x00000002,0x00050041,0x0000007e,0x00000448,0x0000007b,0x00000171,0x0004003d,0x00000006, + 0x00000449,0x00000448,0x0005008e,0x0000000f,0x0000044a,0x000002a1,0x00000449,0x00050041, + 0x0000007e,0x0000044b,0x0000007b,0x00000181,0x0004003d,0x00000006,0x0000044c,0x0000044b, + 0x000500b7,0x00000037,0x0000044d,0x0000044c,0x00000064,0x000400a8,0x00000037,0x0000044e, + 0x0000044d,0x000300f7,0x00000460,0x00000000,0x000400fa,0x0000044e,0x0000044f,0x00000460, + 0x000200f8,0x0000044f,0x00050051,0x00000006,0x00000451,0x0000044a,0x00000000,0x000500bc, + 0x00000037,0x00000465,0x00000451,0x0000004b,0x000300f7,0x0000046f,0x00000000,0x000400fa, + 0x00000465,0x00000466,0x00000469,0x000200f8,0x00000466,0x00050085,0x00000006,0x00000468, + 0x00000451,0x0000003c,0x000200f9,0x0000046f,0x000200f8,0x00000469,0x0006000c,0x00000006, + 0x0000046b,0x00000001,0x00000004,0x00000451,0x0007000c,0x00000006,0x0000046c,0x00000001, + 0x0000001a,0x0000046b,0x00000054,0x00050085,0x00000006,0x0000046d,0x0000046c,0x00000043, + 0x00050083,0x00000006,0x0000046e,0x0000046d,0x00000040,0x000200f9,0x0000046f,0x000200f8, + 0x0000046f,0x000700f5,0x00000006,0x0000053a,0x00000468,0x00000466,0x0000046e,0x00000469, + 0x00050051,0x00000006,0x00000455,0x0000044a,0x00000001,0x000500bc,0x00000037,0x00000474, + 0x00000455,0x0000004b,0x000300f7,0x0000047e,0x00000000,0x000400fa,0x00000474,0x00000475, + 0x00000478,0x000200f8,0x00000475,0x00050085,0x00000006,0x00000477,0x00000455,0x0000003c, + 0x000200f9,0x0000047e,0x000200f8,0x00000478,0x0006000c,0x00000006,0x0000047a,0x00000001, + 0x00000004,0x00000455,0x0007000c,0x00000006,0x0000047b,0x00000001,0x0000001a,0x0000047a, + 0x00000054,0x00050085,0x00000006,0x0000047c,0x0000047b,0x00000043,0x00050083,0x00000006, + 0x0000047d,0x0000047c,0x00000040,0x000200f9,0x0000047e,0x000200f8,0x0000047e,0x000700f5, + 0x00000006,0x0000053c,0x00000477,0x00000475,0x0000047d,0x00000478,0x00050051,0x00000006, + 0x00000459,0x0000044a,0x00000002,0x000500bc,0x00000037,0x00000483,0x00000459,0x0000004b, + 0x000300f7,0x0000048d,0x00000000,0x000400fa,0x00000483,0x00000484,0x00000487,0x000200f8, + 0x00000484,0x00050085,0x00000006,0x00000486,0x00000459,0x0000003c,0x000200f9,0x0000048d, + 0x000200f8,0x00000487,0x0006000c,0x00000006,0x00000489,0x00000001,0x00000004,0x00000459, + 0x0007000c,0x00000006,0x0000048a,0x00000001,0x0000001a,0x00000489,0x00000054,0x00050085, + 0x00000006,0x0000048b,0x0000048a,0x00000043,0x00050083,0x00000006,0x0000048c,0x0000048b, + 0x00000040,0x000200f9,0x0000048d,0x000200f8,0x0000048d,0x000700f5,0x00000006,0x0000053e, + 0x00000486,0x00000484,0x0000048c,0x00000487,0x00060050,0x0000000f,0x0000055e,0x0000053a, + 0x0000053c,0x0000053e,0x0008000c,0x0000000f,0x0000045f,0x00000001,0x0000002b,0x0000055e, + 0x00000065,0x00000523,0x000200f9,0x00000460,0x000200f8,0x00000460,0x000700f5,0x0000000f, + 0x00000540,0x0000044a,0x00000296,0x0000045f,0x0000048d,0x00050051,0x00000006,0x000002a4, + 0x00000540,0x00000000,0x00050051,0x00000006,0x000002a6,0x00000540,0x00000001,0x00050051, + 0x00000006,0x000002a8,0x00000540,0x00000002,0x00050051,0x00000006,0x000002aa,0x00000539, + 0x00000003,0x00070050,0x00000018,0x00000524,0x000002a4,0x000002a6,0x000002a8,0x000002aa, + 0x000200f9,0x000002af,0x000200f8,0x000002ac,0x0008004f,0x0000000f,0x00000493,0x00000539, + 0x00000539,0x00000000,0x00000001,0x00000002,0x00050041,0x0000007e,0x00000494,0x0000007b, + 0x00000171,0x0004003d,0x00000006,0x00000495,0x00000494,0x0005008e,0x0000000f,0x00000496, + 0x00000493,0x00000495,0x00050051,0x00000006,0x00000498,0x00000496,0x00000000,0x00050051, + 0x00000006,0x0000049a,0x00000496,0x00000001,0x00050051,0x00000006,0x0000049c,0x00000496, + 0x00000002,0x00050051,0x00000006,0x0000049e,0x00000539,0x00000003,0x00070050,0x00000018, + 0x00000522,0x00000498,0x0000049a,0x0000049c,0x0000049e,0x000200f9,0x000002af,0x000200f8, + 0x000002af,0x000700f5,0x00000018,0x0000055d,0x00000524,0x00000460,0x00000522,0x000002ac, + 0x000200f9,0x000002b0,0x000200f8,0x000002b0,0x000700f5,0x00000018,0x0000055c,0x00000525, + 0x00000412,0x0000055d,0x000002af,0x000200f9,0x000002b1,0x000200f8,0x000002b1,0x000700f5, + 0x00000018,0x0000055b,0x00000528,0x000003c0,0x0000055c,0x000002b0,0x00050085,0x00000018, + 0x000002b5,0x0000055b,0x0000023c,0x0003003e,0x0000023f,0x000002b5,0x000100fd,0x00010038 }; diff --git a/src/render/vulkan/VULKAN_PixelShader_Colors.h b/src/render/vulkan/VULKAN_PixelShader_Colors.h index a7cc6d9318..a67efeecc0 100644 --- a/src/render/vulkan/VULKAN_PixelShader_Colors.h +++ b/src/render/vulkan/VULKAN_PixelShader_Colors.h @@ -1,43 +1,43 @@ // 1115.0.0 #pragma once static const uint32_t VULKAN_PixelShader_Colors[] = { - 0x07230203,0x00010000,0x0008000b,0x000000a1,0x00000000,0x00020011,0x00000001,0x0006000b, + 0x07230203,0x00010000,0x0008000b,0x000000a4,0x00000000,0x00020011,0x00000001,0x0006000b, 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001, - 0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x00000048,0x0000004c,0x00030010, + 0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x00000049,0x0000004d,0x00030010, 0x00000004,0x00000007,0x00030003,0x00000005,0x000001f4,0x00040005,0x00000004,0x6e69616d, 0x00000000,0x00050005,0x00000018,0x736e6f43,0x746e6174,0x00000073,0x00070006,0x00000018, - 0x00000000,0x47526373,0x756f5f42,0x74757074,0x00000000,0x00060006,0x00000018,0x00000001, - 0x75706e69,0x79745f74,0x00006570,0x00060006,0x00000018,0x00000002,0x6f6c6f63,0x63735f72, - 0x00656c61,0x00060006,0x00000018,0x00000003,0x65786970,0x72615f6c,0x00000074,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,0x00000048,0x75706e69,0x6f632e74, - 0x00726f6c,0x00070005,0x0000004c,0x746e6540,0x6f507972,0x4f746e69,0x75707475,0x00000074, - 0x00030047,0x00000018,0x00000002,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, - 0x00040047,0x0000001a,0x00000021,0x00000001,0x00040047,0x0000001a,0x00000022,0x00000000, - 0x00040047,0x00000048,0x0000001e,0x00000001,0x00040047,0x0000004c,0x0000001e,0x00000000, - 0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00030016,0x00000006,0x00000020, - 0x00040017,0x00000007,0x00000006,0x00000004,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,0x00000002,0x00040020,0x0000001d,0x00000002,0x00000006,0x0004002b, - 0x00000006,0x00000033,0x3f800000,0x00040020,0x0000003e,0x00000001,0x00000007,0x0004003b, - 0x0000003e,0x00000048,0x00000001,0x00040020,0x0000004b,0x00000003,0x00000007,0x0004003b, - 0x0000004b,0x0000004c,0x00000003,0x0006002c,0x00000015,0x0000009f,0x00000033,0x00000033, - 0x00000033,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005, - 0x0004003d,0x00000007,0x00000049,0x00000048,0x00050041,0x0000001d,0x0000007e,0x0000001a, - 0x0000001c,0x0004003d,0x00000006,0x0000007f,0x0000007e,0x0005008e,0x00000015,0x00000080, - 0x0000009f,0x0000007f,0x00050051,0x00000006,0x00000082,0x00000080,0x00000000,0x00050051, - 0x00000006,0x00000084,0x00000080,0x00000001,0x00050051,0x00000006,0x00000086,0x00000080, - 0x00000002,0x00070050,0x00000007,0x000000a0,0x00000082,0x00000084,0x00000086,0x00000033, - 0x00050085,0x00000007,0x00000078,0x000000a0,0x00000049,0x0003003e,0x0000004c,0x00000078, - 0x000100fd,0x00010038 + 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,0x00000049,0x75706e69, + 0x6f632e74,0x00726f6c,0x00070005,0x0000004d,0x746e6540,0x6f507972,0x4f746e69,0x75707475, + 0x00000074,0x00030047,0x00000018,0x00000002,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,0x00040047,0x0000001a,0x00000021,0x00000000,0x00040047,0x0000001a,0x00000022, + 0x00000000,0x00040047,0x00000049,0x0000001e,0x00000001,0x00040047,0x0000004d,0x0000001e, + 0x00000000,0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00030016,0x00000006, + 0x00000020,0x00040017,0x00000007,0x00000006,0x00000004,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, + 0x0004002b,0x00000006,0x00000033,0x3f800000,0x00040020,0x0000003f,0x00000001,0x00000007, + 0x0004003b,0x0000003f,0x00000049,0x00000001,0x00040020,0x0000004c,0x00000003,0x00000007, + 0x0004003b,0x0000004c,0x0000004d,0x00000003,0x0006002c,0x00000015,0x000000a2,0x00000033, + 0x00000033,0x00000033,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8, + 0x00000005,0x0004003d,0x00000007,0x0000004a,0x00000049,0x00050041,0x0000001d,0x00000081, + 0x0000001a,0x0000001c,0x0004003d,0x00000006,0x00000082,0x00000081,0x0005008e,0x00000015, + 0x00000083,0x000000a2,0x00000082,0x00050051,0x00000006,0x00000085,0x00000083,0x00000000, + 0x00050051,0x00000006,0x00000087,0x00000083,0x00000001,0x00050051,0x00000006,0x00000089, + 0x00000083,0x00000002,0x00070050,0x00000007,0x000000a3,0x00000085,0x00000087,0x00000089, + 0x00000033,0x00050085,0x00000007,0x0000007b,0x000000a3,0x0000004a,0x0003003e,0x0000004d, + 0x0000007b,0x000100fd,0x00010038 }; diff --git a/src/render/vulkan/VULKAN_PixelShader_Common.hlsli b/src/render/vulkan/VULKAN_PixelShader_Common.hlsli index 5b284edec9..a2311650cf 100644 --- a/src/render/vulkan/VULKAN_PixelShader_Common.hlsli +++ b/src/render/vulkan/VULKAN_PixelShader_Common.hlsli @@ -1,5 +1,8 @@ + +layout (set = 0, binding = 1) Texture2D texture0 : register(t0); +layout (set = 0, binding = 2) Texture2D texture1 : register(t1); SamplerState sampler0 : register(s0); -Texture2D texture0 : register(t0); +SamplerState sampler1 : register(s1); struct PixelShaderInput { @@ -13,17 +16,23 @@ static const float TONEMAP_NONE = 0; static const float TONEMAP_LINEAR = 1; static const float TONEMAP_CHROME = 2; +static const float TEXTURETYPE_NONE = 0; +static const float TEXTURETYPE_RGB = 1; +static const float TEXTURETYPE_RGB_PIXELART = 2; +static const float TEXTURETYPE_PALETTE = 3; +static const float TEXTURETYPE_PALETTE_PIXELART = 4; + static const float INPUTTYPE_UNSPECIFIED = 0; static const float INPUTTYPE_SRGB = 1; static const float INPUTTYPE_SCRGB = 2; static const float INPUTTYPE_HDR10 = 3; -cbuffer Constants : register(b1) +layout (set = 0, binding = 0) cbuffer Constants : register(b1) { float scRGB_output; + float texture_type; float input_type; float color_scale; - float pixel_art; float4 texel_size; float tonemap_method; @@ -101,29 +110,46 @@ float3 ApplyTonemap(float3 v) return v; } +float2 GetPixelArtUV(PixelShaderInput input) +{ + // box filter size in texel units + float2 boxSize = clamp(fwidth(input.tex) * texel_size.zw, 1e-5, 1); + + // scale uv by texture size to get texel coordinate + float2 tx = input.tex * texel_size.zw - 0.5 * boxSize; + + // compute offset for pixel-sized box filter + float2 txOffset = smoothstep(1 - boxSize, 1, frac(tx)); + + // compute bilinear sample uv coordinates + float2 uv = (floor(tx) + 0.5 + txOffset) * texel_size.xy; + + return uv; +} + float4 GetInputColor(PixelShaderInput input) { float4 rgba; - if (pixel_art) { - // box filter size in texel units - float2 boxSize = clamp(fwidth(input.tex) * texel_size.zw, 1e-5, 1); - - // scale uv by texture size to get texel coordinate - float2 tx = input.tex * texel_size.zw - 0.5 * boxSize; - - // compute offset for pixel-sized box filter - float2 txOffset = smoothstep(1 - boxSize, 1, frac(tx)); - - // compute bilinear sample uv coordinates - float2 uv = (floor(tx) + 0.5 + txOffset) * texel_size.xy; - - // sample the texture + if (texture_type == TEXTURETYPE_RGB) { + rgba = texture0.Sample(sampler0, input.tex); + } else if (texture_type == TEXTURETYPE_RGB_PIXELART) { + float2 uv = GetPixelArtUV(input); rgba = texture0.SampleGrad(sampler0, uv, ddx(input.tex), ddy(input.tex)); + } else if (texture_type == TEXTURETYPE_PALETTE) { + float index = texture0.Sample(sampler0, input.tex).r * 255; + rgba = texture1.Sample(sampler1, float2((index + 0.5) / 256, 0.5)); + } else if (texture_type == TEXTURETYPE_PALETTE_PIXELART) { + float2 uv = GetPixelArtUV(input); + float index = texture0.Sample(sampler0, uv).r * 255; + rgba = texture1.Sample(sampler1, float2((index + 0.5) / 256, 0.5)); } else { - rgba = texture0.Sample(sampler0, input.tex).rgba; + // Error! + rgba.r = 1.0; + rgba.g = 0.0; + rgba.b = 0.0; + rgba.a = 1.0; } - return rgba; } diff --git a/src/render/vulkan/VULKAN_PixelShader_Textures.h b/src/render/vulkan/VULKAN_PixelShader_Textures.h index 31cfef05a2..f9536423c9 100644 --- a/src/render/vulkan/VULKAN_PixelShader_Textures.h +++ b/src/render/vulkan/VULKAN_PixelShader_Textures.h @@ -1,52 +1,52 @@ // 1115.0.0 #pragma once static const uint32_t VULKAN_PixelShader_Textures[] = { - 0x07230203,0x00010000,0x0008000b,0x000000a8,0x00000000,0x00020011,0x00000001,0x0006000b, + 0x07230203,0x00010000,0x0008000b,0x000000ab,0x00000000,0x00020011,0x00000001,0x0006000b, 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001, - 0x0008000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000004b,0x0000004e,0x00000052, + 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,0x00060006,0x00000018, - 0x00000001,0x75706e69,0x79745f74,0x00006570,0x00060006,0x00000018,0x00000002,0x6f6c6f63, - 0x63735f72,0x00656c61,0x00060006,0x00000018,0x00000003,0x65786970,0x72615f6c,0x00000074, - 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,0x0000004b,0x75706e69,0x65742e74,0x00000078,0x00050005, - 0x0000004e,0x75706e69,0x6f632e74,0x00726f6c,0x00070005,0x00000052,0x746e6540,0x6f507972, - 0x4f746e69,0x75707475,0x00000074,0x00030047,0x00000018,0x00000002,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,0x00040047,0x0000001a,0x00000021,0x00000001,0x00040047, - 0x0000001a,0x00000022,0x00000000,0x00040047,0x00000036,0x00000021,0x00000000,0x00040047, - 0x00000036,0x00000022,0x00000000,0x00040047,0x0000004b,0x0000001e,0x00000000,0x00040047, - 0x0000004e,0x0000001e,0x00000001,0x00040047,0x00000052,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,0x00000002,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,0x00000046, - 0x00000001,0x00000007,0x00040020,0x0000004a,0x00000001,0x0000000d,0x0004003b,0x0000004a, - 0x0000004b,0x00000001,0x0004003b,0x00000046,0x0000004e,0x00000001,0x00040020,0x00000051, - 0x00000003,0x00000007,0x0004003b,0x00000051,0x00000052,0x00000003,0x00050036,0x00000002, - 0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003d,0x0000000d,0x0000004c, - 0x0000004b,0x0004003d,0x00000007,0x0000004f,0x0000004e,0x0004003d,0x00000034,0x00000078, - 0x00000036,0x00050057,0x00000007,0x0000007b,0x00000078,0x0000004c,0x0008004f,0x00000015, - 0x00000084,0x0000007b,0x0000007b,0x00000000,0x00000001,0x00000002,0x00050041,0x0000001d, - 0x00000085,0x0000001a,0x0000001c,0x0004003d,0x00000006,0x00000086,0x00000085,0x0005008e, - 0x00000015,0x00000087,0x00000084,0x00000086,0x00050051,0x00000006,0x00000089,0x00000087, - 0x00000000,0x00050051,0x00000006,0x0000008b,0x00000087,0x00000001,0x00050051,0x00000006, - 0x0000008d,0x00000087,0x00000002,0x00050051,0x00000006,0x0000008f,0x0000007b,0x00000003, - 0x00070050,0x00000007,0x000000a7,0x00000089,0x0000008b,0x0000008d,0x0000008f,0x00050085, - 0x00000007,0x0000007f,0x000000a7,0x0000004f,0x0003003e,0x00000052,0x0000007f,0x000100fd, - 0x00010038 + 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,0x00030047,0x00000018,0x00000002,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,0x00040047,0x0000001a,0x00000021,0x00000000, + 0x00040047,0x0000001a,0x00000022,0x00000000,0x00040047,0x00000036,0x00000021,0x00000001, + 0x00040047,0x00000036,0x00000022,0x00000000,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, + 0x0000007b,0x00000036,0x00050057,0x00000007,0x0000007e,0x0000007b,0x0000004d,0x0008004f, + 0x00000015,0x00000087,0x0000007e,0x0000007e,0x00000000,0x00000001,0x00000002,0x00050041, + 0x0000001d,0x00000088,0x0000001a,0x0000001c,0x0004003d,0x00000006,0x00000089,0x00000088, + 0x0005008e,0x00000015,0x0000008a,0x00000087,0x00000089,0x00050051,0x00000006,0x0000008c, + 0x0000008a,0x00000000,0x00050051,0x00000006,0x0000008e,0x0000008a,0x00000001,0x00050051, + 0x00000006,0x00000090,0x0000008a,0x00000002,0x00050051,0x00000006,0x00000092,0x0000007e, + 0x00000003,0x00070050,0x00000007,0x000000aa,0x0000008c,0x0000008e,0x00000090,0x00000092, + 0x00050085,0x00000007,0x00000082,0x000000aa,0x00000050,0x0003003e,0x00000053,0x00000082, + 0x000100fd,0x00010038 };