#ifndef D3D9SHADER_H #define D3D9SHADER_H #if 0 // fxc.exe /Tps_2_0 shader.hlsl /Fhshader.h /* uniform sampler2D SurfaceTex; uniform sampler2D PaletteTex; float4 main(float2 texCoords : TEXCOORD) : COLOR { float pIndex = tex2D(SurfaceTex, texCoords).r; return tex2D(PaletteTex, float2(pIndex * (255./256) + (0.5/256), 0)); } */ #endif const BYTE D3D9_PALETTE_SHADER[] = { 0, 2, 255, 255, 254, 255, 44, 0, 67, 84, 65, 66, 28, 0, 0, 0, 131, 0, 0, 0, 0, 2, 255, 255, 2, 0, 0, 0, 28, 0, 0, 0, 0, 1, 0, 0, 124, 0, 0, 0, 68, 0, 0, 0, 3, 0, 1, 0, 1, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 80, 97, 108, 101, 116, 116, 101, 84, 101, 120, 0, 171, 4, 0, 12, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 83, 117, 114, 102, 97, 99, 101, 84, 101, 120, 0, 171, 4, 0, 12, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 112, 115, 95, 50, 95, 48, 0, 77, 105, 99, 114, 111, 115, 111, 102, 116, 32, 40, 82, 41, 32, 72, 76, 83, 76, 32, 83, 104, 97, 100, 101, 114, 32, 67, 111, 109, 112, 105, 108, 101, 114, 32, 49, 48, 46, 49, 0, 171, 81, 0, 0, 5, 0, 0, 15, 160, 0, 0, 127, 63, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 2, 0, 0, 0, 128, 0, 0, 3, 176, 31, 0, 0, 2, 0, 0, 0, 144, 0, 8, 15, 160, 31, 0, 0, 2, 0, 0, 0, 144, 1, 8, 15, 160, 66, 0, 0, 3, 0, 0, 15, 128, 0, 0, 228, 176, 0, 8, 228, 160, 4, 0, 0, 4, 0, 0, 1, 128, 0, 0, 0, 128, 0, 0, 0, 160, 0, 0, 85, 160, 1, 0, 0, 2, 0, 0, 2, 128, 0, 0, 170, 160, 66, 0, 0, 3, 0, 0, 15, 128, 0, 0, 228, 128, 1, 8, 228, 160, 1, 0, 0, 2, 0, 8, 15, 128, 0, 0, 228, 128, 255, 255, 0, 0 }; /* bilinear upscaling */ #if 0 // fxc.exe /Tps_2_0 shader.hlsl /Fhshader.h /* uniform sampler2D SurfaceTex; uniform sampler2D PaletteTex; float4 TextureSize : register(c0); #define SourceSize float4(TextureSize.xy, 1.0 / TextureSize.xy) float4 bilinear(float2 coord) { float2 samplePos = coord * SourceSize.xy; float2 texPos1 = floor(samplePos - 0.5f) + 0.5f; float2 texPos2 = texPos1 + 1.0f; float2 f = samplePos - texPos1; texPos1 *= SourceSize.zw; texPos2 *= SourceSize.zw; float tli = tex2D(SurfaceTex, float2(texPos1.x, texPos1.y)).r; float tri = tex2D(SurfaceTex, float2(texPos2.x, texPos1.y)).r; float bli = tex2D(SurfaceTex, float2(texPos1.x, texPos2.y)).r; float bri = tex2D(SurfaceTex, float2(texPos2.x, texPos2.y)).r; float4 tl = tex2D(PaletteTex, float2(tli * (255./256) + (0.5/256), 0)); float4 tr = tex2D(PaletteTex, float2(tri * (255./256) + (0.5/256), 0)); float4 bl = tex2D(PaletteTex, float2(bli * (255./256) + (0.5/256), 0)); float4 br = tex2D(PaletteTex, float2(bri * (255./256) + (0.5/256), 0)); float4 top = lerp(tl, tr, f.x); float4 bot = lerp(bl, br, f.x); return lerp(top, bot, f.y); } float4 main(float2 texCoords : TEXCOORD) : COLOR { return bilinear(texCoords); } */ #endif const BYTE D3D9_PALETTE_SHADER_BILINEAR[] = { 0, 2, 255, 255, 254, 255, 56, 0, 67, 84, 65, 66, 28, 0, 0, 0, 179, 0, 0, 0, 0, 2, 255, 255, 3, 0, 0, 0, 28, 0, 0, 0, 0, 1, 0, 0, 172, 0, 0, 0, 88, 0, 0, 0, 3, 0, 1, 0, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 2, 0, 0, 0, 1, 0, 2, 0, 156, 0, 0, 0, 0, 0, 0, 0, 80, 97, 108, 101, 116, 116, 101, 84, 101, 120, 0, 171, 4, 0, 12, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 83, 117, 114, 102, 97, 99, 101, 84, 101, 120, 0, 171, 4, 0, 12, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 84, 101, 120, 116, 117, 114, 101, 83, 105, 122, 101, 0, 1, 0, 3, 0, 1, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 112, 115, 95, 50, 95, 48, 0, 77, 105, 99, 114, 111, 115, 111, 102, 116, 32, 40, 82, 41, 32, 72, 76, 83, 76, 32, 83, 104, 97, 100, 101, 114, 32, 67, 111, 109, 112, 105, 108, 101, 114, 32, 49, 48, 46, 49, 0, 171, 81, 0, 0, 5, 1, 0, 15, 160, 0, 0, 0, 191, 0, 0, 0, 63, 0, 0, 192, 63, 0, 0, 0, 0, 81, 0, 0, 5, 2, 0, 15, 160, 0, 0, 127, 63, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 2, 0, 0, 0, 128, 0, 0, 3, 176, 31, 0, 0, 2, 0, 0, 0, 144, 0, 8, 15, 160, 31, 0, 0, 2, 0, 0, 0, 144, 1, 8, 15, 160, 1, 0, 0, 2, 0, 0, 8, 128, 1, 0, 0, 160, 4, 0, 0, 4, 0, 0, 3, 128, 0, 0, 228, 176, 0, 0, 228, 160, 0, 0, 255, 128, 19, 0, 0, 2, 0, 0, 12, 128, 0, 0, 27, 128, 2, 0, 0, 3, 0, 0, 3, 128, 0, 0, 27, 129, 0, 0, 228, 128, 2, 0, 0, 3, 0, 0, 12, 128, 0, 0, 27, 128, 1, 0, 170, 160, 2, 0, 0, 3, 0, 0, 3, 128, 0, 0, 228, 128, 1, 0, 85, 160, 6, 0, 0, 2, 1, 0, 1, 128, 0, 0, 0, 160, 6, 0, 0, 2, 1, 0, 2, 128, 0, 0, 85, 160, 5, 0, 0, 3, 2, 0, 3, 128, 0, 0, 27, 128, 1, 0, 228, 128, 5, 0, 0, 3, 1, 0, 3, 128, 0, 0, 228, 128, 1, 0, 228, 128, 4, 0, 0, 4, 0, 0, 3, 128, 0, 0, 228, 176, 0, 0, 228, 160, 0, 0, 228, 129, 1, 0, 0, 2, 3, 0, 1, 128, 2, 0, 0, 128, 1, 0, 0, 2, 3, 0, 2, 128, 1, 0, 85, 128, 1, 0, 0, 2, 4, 0, 1, 128, 1, 0, 0, 128, 1, 0, 0, 2, 4, 0, 2, 128, 2, 0, 85, 128, 66, 0, 0, 3, 3, 0, 15, 128, 3, 0, 228, 128, 0, 8, 228, 160, 66, 0, 0, 3, 1, 0, 15, 128, 1, 0, 228, 128, 0, 8, 228, 160, 66, 0, 0, 3, 2, 0, 15, 128, 2, 0, 228, 128, 0, 8, 228, 160, 66, 0, 0, 3, 4, 0, 15, 128, 4, 0, 228, 128, 0, 8, 228, 160, 4, 0, 0, 4, 3, 0, 1, 128, 3, 0, 0, 128, 2, 0, 0, 160, 2, 0, 85, 160, 1, 0, 0, 2, 3, 0, 2, 128, 1, 0, 255, 160, 4, 0, 0, 4, 1, 0, 1, 128, 1, 0, 0, 128, 2, 0, 0, 160, 2, 0, 85, 160, 1, 0, 0, 2, 1, 0, 2, 128, 1, 0, 255, 160, 4, 0, 0, 4, 2, 0, 1, 128, 2, 0, 0, 128, 2, 0, 0, 160, 2, 0, 85, 160, 4, 0, 0, 4, 4, 0, 1, 128, 4, 0, 0, 128, 2, 0, 0, 160, 2, 0, 85, 160, 1, 0, 0, 2, 4, 0, 2, 128, 1, 0, 255, 160, 1, 0, 0, 2, 2, 0, 2, 128, 1, 0, 255, 160, 66, 0, 0, 3, 3, 0, 15, 128, 3, 0, 228, 128, 1, 8, 228, 160, 66, 0, 0, 3, 1, 0, 15, 128, 1, 0, 228, 128, 1, 8, 228, 160, 66, 0, 0, 3, 4, 0, 15, 128, 4, 0, 228, 128, 1, 8, 228, 160, 66, 0, 0, 3, 2, 0, 15, 128, 2, 0, 228, 128, 1, 8, 228, 160, 18, 0, 0, 4, 5, 0, 15, 128, 0, 0, 0, 128, 3, 0, 228, 128, 1, 0, 228, 128, 18, 0, 0, 4, 1, 0, 15, 128, 0, 0, 0, 128, 2, 0, 228, 128, 4, 0, 228, 128, 18, 0, 0, 4, 2, 0, 15, 128, 0, 0, 85, 128, 1, 0, 228, 128, 5, 0, 228, 128, 1, 0, 0, 2, 0, 8, 15, 128, 2, 0, 228, 128, 255, 255, 0, 0 }; /* catmull rom upscaling */ #if 0 // fxc.exe /Tps_2_0 shader.hlsl /Fhshader.h /* // The following code is licensed under the MIT license: https://gist.github.com/TheRealMJP/bc503b0b87b643d3505d41eab8b332ae // Ported from code: https://gist.github.com/TheRealMJP/c83b8c0f46b63f3a88a5986f4fa982b1 // Samples a texture with Catmull-Rom filtering, using 9 texture fetches instead of 16. // See http://vec3.ca/bicubic-filtering-in-fewer-taps/ for more details // Modified to use 5 texture fetches uniform sampler2D SurfaceTex; float4 TextureSize : register(c0); #define SourceSize float4(TextureSize.xy, 1.0 / TextureSize.xy) float4 catmull_rom(float2 coord) { float2 samplePos = coord * SourceSize.xy; float2 texPos1 = floor(samplePos - 0.5f) + 0.5f; float2 f = samplePos - texPos1; float2 w0 = f * (-0.5f + f * (1.0f - 0.5f * f)); float2 w1 = 1.0f + f * f * (-2.5f + 1.5f * f); float2 w2 = f * (0.5f + f * (2.0f - 1.5f * f)); float2 w3 = f * f * (-0.5f + 0.5f * f); float2 w12 = w1 + w2; float2 offset12 = w2 / (w1 + w2); float2 texPos0 = texPos1 - 1; float2 texPos3 = texPos1 + 2; float2 texPos12 = texPos1 + offset12; texPos0 *= SourceSize.zw; texPos3 *= SourceSize.zw; texPos12 *= SourceSize.zw; float wtm = w12.x * w0.y; float wml = w0.x * w12.y; float wmm = w12.x * w12.y; float wmr = w3.x * w12.y; float wbm = w12.x * w3.y; float3 result = 0.0f; result += tex2D(SurfaceTex, float2(texPos12.x, texPos0.y)).rgb * wtm; result += tex2D(SurfaceTex, float2(texPos0.x, texPos12.y)).rgb * wml; result += tex2D(SurfaceTex, float2(texPos12.x, texPos12.y)).rgb * wmm; result += tex2D(SurfaceTex, float2(texPos3.x, texPos12.y)).rgb * wmr; result += tex2D(SurfaceTex, float2(texPos12.x, texPos3.y)).rgb * wbm; return float4(result * (1./(wtm+wml+wmm+wmr+wbm)), 1.0); } float4 main(float2 texCoords : TEXCOORD) : COLOR { return catmull_rom(texCoords); } */ #endif const BYTE D3D9_CATMULL_ROM_SHADER[] = { 0, 2, 255, 255, 254, 255, 44, 0, 67, 84, 65, 66, 28, 0, 0, 0, 131, 0, 0, 0, 0, 2, 255, 255, 2, 0, 0, 0, 28, 0, 0, 0, 0, 1, 0, 0, 124, 0, 0, 0, 68, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 2, 0, 0, 0, 1, 0, 2, 0, 108, 0, 0, 0, 0, 0, 0, 0, 83, 117, 114, 102, 97, 99, 101, 84, 101, 120, 0, 171, 4, 0, 12, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 84, 101, 120, 116, 117, 114, 101, 83, 105, 122, 101, 0, 1, 0, 3, 0, 1, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 112, 115, 95, 50, 95, 48, 0, 77, 105, 99, 114, 111, 115, 111, 102, 116, 32, 40, 82, 41, 32, 72, 76, 83, 76, 32, 83, 104, 97, 100, 101, 114, 32, 67, 111, 109, 112, 105, 108, 101, 114, 32, 49, 48, 46, 49, 0, 171, 81, 0, 0, 5, 1, 0, 15, 160, 0, 0, 0, 191, 0, 0, 0, 63, 0, 0, 128, 63, 0, 0, 32, 64, 81, 0, 0, 5, 2, 0, 15, 160, 0, 0, 192, 63, 0, 0, 32, 192, 0, 0, 0, 64, 0, 0, 0, 0, 31, 0, 0, 2, 0, 0, 0, 128, 0, 0, 3, 176, 31, 0, 0, 2, 0, 0, 0, 144, 0, 8, 15, 160, 1, 0, 0, 2, 0, 0, 8, 128, 1, 0, 0, 160, 4, 0, 0, 4, 0, 0, 3, 128, 0, 0, 228, 176, 0, 0, 228, 160, 0, 0, 255, 128, 19, 0, 0, 2, 0, 0, 12, 128, 0, 0, 27, 128, 2, 0, 0, 3, 0, 0, 3, 128, 0, 0, 27, 129, 0, 0, 228, 128, 2, 0, 0, 3, 0, 0, 12, 128, 0, 0, 27, 128, 1, 0, 0, 160, 6, 0, 0, 2, 1, 0, 1, 128, 0, 0, 0, 160, 6, 0, 0, 2, 1, 0, 2, 128, 0, 0, 85, 160, 5, 0, 0, 3, 2, 0, 3, 128, 0, 0, 27, 128, 1, 0, 228, 128, 1, 0, 0, 2, 3, 0, 1, 128, 2, 0, 0, 128, 2, 0, 0, 3, 0, 0, 12, 128, 0, 0, 27, 128, 1, 0, 85, 160, 2, 0, 0, 3, 0, 0, 3, 128, 0, 0, 228, 128, 1, 0, 255, 160, 5, 0, 0, 3, 0, 0, 3, 128, 1, 0, 228, 128, 0, 0, 228, 128, 4, 0, 0, 4, 1, 0, 12, 128, 0, 0, 27, 176, 0, 0, 27, 160, 0, 0, 228, 129, 4, 0, 0, 4, 2, 0, 12, 128, 1, 0, 228, 128, 2, 0, 0, 161, 2, 0, 170, 160, 4, 0, 0, 4, 2, 0, 12, 128, 1, 0, 228, 128, 2, 0, 228, 128, 1, 0, 85, 160, 5, 0, 0, 3, 3, 0, 12, 128, 1, 0, 228, 128, 2, 0, 228, 128, 4, 0, 0, 4, 4, 0, 3, 128, 1, 0, 27, 128, 2, 0, 0, 160, 2, 0, 85, 160, 5, 0, 0, 3, 4, 0, 12, 128, 1, 0, 228, 128, 1, 0, 228, 128, 4, 0, 0, 4, 4, 0, 3, 128, 4, 0, 27, 128, 4, 0, 228, 128, 1, 0, 170, 160, 4, 0, 0, 4, 2, 0, 12, 128, 1, 0, 228, 128, 2, 0, 228, 128, 4, 0, 27, 128, 6, 0, 0, 2, 4, 0, 1, 128, 2, 0, 255, 128, 6, 0, 0, 2, 4, 0, 2, 128, 2, 0, 170, 128, 4, 0, 0, 4, 0, 0, 12, 128, 3, 0, 228, 128, 4, 0, 27, 128, 0, 0, 228, 128, 5, 0, 0, 3, 1, 0, 3, 128, 1, 0, 228, 128, 0, 0, 27, 128, 1, 0, 0, 2, 3, 0, 2, 128, 1, 0, 85, 128, 1, 0, 0, 2, 4, 0, 2, 128, 3, 0, 85, 128, 1, 0, 0, 2, 2, 0, 1, 128, 1, 0, 0, 128, 1, 0, 0, 2, 5, 0, 1, 128, 2, 0, 0, 128, 1, 0, 0, 2, 4, 0, 1, 128, 0, 0, 0, 128, 1, 0, 0, 2, 5, 0, 2, 128, 0, 0, 85, 128, 66, 0, 0, 3, 0, 0, 15, 128, 3, 0, 228, 128, 0, 8, 228, 160, 66, 0, 0, 3, 3, 0, 15, 128, 1, 0, 228, 128, 0, 8, 228, 160, 66, 0, 0, 3, 6, 0, 15, 128, 2, 0, 228, 128, 0, 8, 228, 160, 66, 0, 0, 3, 5, 0, 15, 128, 5, 0, 228, 128, 0, 8, 228, 160, 66, 0, 0, 3, 7, 0, 15, 128, 4, 0, 228, 128, 0, 8, 228, 160, 4, 0, 0, 4, 1, 0, 3, 128, 1, 0, 27, 128, 1, 0, 85, 161, 1, 0, 170, 160, 4, 0, 0, 4, 1, 0, 3, 128, 1, 0, 27, 128, 1, 0, 228, 128, 1, 0, 0, 160, 5, 0, 0, 3, 1, 0, 3, 128, 1, 0, 228, 128, 1, 0, 27, 128, 4, 0, 0, 4, 1, 0, 12, 128, 1, 0, 228, 128, 1, 0, 85, 160, 1, 0, 0, 160, 5, 0, 0, 3, 1, 0, 12, 128, 1, 0, 228, 128, 4, 0, 228, 128, 5, 0, 0, 3, 0, 0, 8, 128, 2, 0, 170, 128, 1, 0, 0, 128, 5, 0, 0, 3, 0, 0, 7, 128, 0, 0, 255, 128, 0, 0, 228, 128, 4, 0, 0, 4, 0, 0, 8, 128, 2, 0, 255, 128, 1, 0, 85, 128, 0, 0, 255, 128, 5, 0, 0, 3, 3, 0, 8, 128, 1, 0, 85, 128, 2, 0, 255, 128, 4, 0, 0, 4, 0, 0, 8, 128, 2, 0, 255, 128, 2, 0, 170, 128, 0, 0, 255, 128, 4, 0, 0, 4, 0, 0, 8, 128, 1, 0, 255, 128, 2, 0, 170, 128, 0, 0, 255, 128, 4, 0, 0, 4, 0, 0, 8, 128, 2, 0, 255, 128, 1, 0, 170, 128, 0, 0, 255, 128, 6, 0, 0, 2, 0, 0, 8, 128, 0, 0, 255, 128, 4, 0, 0, 4, 0, 0, 7, 128, 6, 0, 228, 128, 3, 0, 255, 128, 0, 0, 228, 128, 5, 0, 0, 3, 3, 0, 8, 128, 2, 0, 170, 128, 2, 0, 255, 128, 4, 0, 0, 4, 0, 0, 7, 128, 3, 0, 228, 128, 3, 0, 255, 128, 0, 0, 228, 128, 5, 0, 0, 3, 5, 0, 8, 128, 2, 0, 170, 128, 1, 0, 255, 128, 5, 0, 0, 3, 7, 0, 8, 128, 1, 0, 170, 128, 2, 0, 255, 128, 4, 0, 0, 4, 0, 0, 7, 128, 7, 0, 228, 128, 5, 0, 255, 128, 0, 0, 228, 128, 4, 0, 0, 4, 0, 0, 7, 128, 5, 0, 228, 128, 7, 0, 255, 128, 0, 0, 228, 128, 5, 0, 0, 3, 0, 0, 7, 128, 0, 0, 255, 128, 0, 0, 228, 128, 1, 0, 0, 2, 0, 0, 8, 128, 1, 0, 170, 160, 1, 0, 0, 2, 0, 8, 15, 128, 0, 0, 228, 128, 255, 255, 0, 0 }; /* lanczos2 upscaling */ #if 0 // fxc.exe /Tps_3_0 shader.hlsl /Fhshader.h /* // The following code is licensed under the MIT license: // Hyllian's jinc windowed-jinc 2-lobe sharper with anti-ringing Shader // Copyright (C) 2011-2016 Hyllian/Jararaca - sergiogdb@gmail.com // Ported from: https://github.com/libretro/glsl-shaders/blob/09e2942efbab2f51b60ff0b93b7761b0b0570910/windowed/shaders/lanczos2-sharp.glsl uniform sampler2D SurfaceTex; float4 TextureSize : register(c0); #define JINC2_WINDOW_SINC 0.5 #define JINC2_SINC 1.0 #define JINC2_AR_STRENGTH 0.8 static const float pi = 3.1415926535897932384626433832795; static const float wa = JINC2_WINDOW_SINC*pi; static const float wb = JINC2_SINC*pi; // Calculates the distance between two points float d(float2 pt1, float2 pt2) { float2 v = pt2 - pt1; return sqrt(dot(v,v)); } float3 min4(float3 a, float3 b, float3 c, float3 d) { return min(a, min(b, min(c, d))); } float3 max4(float3 a, float3 b, float3 c, float3 d) { return max(a, max(b, max(c, d))); } float4 resampler(float4 x) { float4 res; res.x = (x.x==0.0) ? wa*wb : sin(x.x*wa)*sin(x.x*wb)/(x.x*x.x); res.y = (x.y==0.0) ? wa*wb : sin(x.y*wa)*sin(x.y*wb)/(x.y*x.y); res.z = (x.z==0.0) ? wa*wb : sin(x.z*wa)*sin(x.z*wb)/(x.z*x.z); res.w = (x.w==0.0) ? wa*wb : sin(x.w*wa)*sin(x.w*wb)/(x.w*x.w); return res; } float4 lanczos2(float2 coord) { float3 color; float4 weights[4]; float2 dx = float2(1.0, 0.0); float2 dy = float2(0.0, 1.0); float2 pc = coord*TextureSize.xy; float2 tc = (floor(pc-float2(0.5,0.5))+float2(0.5,0.5)); weights[0] = resampler(float4(d(pc, tc -dx -dy), d(pc, tc -dy), d(pc, tc +dx -dy), d(pc, tc+2.0*dx -dy))); weights[1] = resampler(float4(d(pc, tc -dx ), d(pc, tc ), d(pc, tc +dx ), d(pc, tc+2.0*dx ))); weights[2] = resampler(float4(d(pc, tc -dx +dy), d(pc, tc +dy), d(pc, tc +dx +dy), d(pc, tc+2.0*dx +dy))); weights[3] = resampler(float4(d(pc, tc -dx+2.0*dy), d(pc, tc +2.0*dy), d(pc, tc +dx+2.0*dy), d(pc, tc+2.0*dx+2.0*dy))); dx = dx/TextureSize.xy; dy = dy/TextureSize.xy; tc = tc/TextureSize.xy; float3 c00 = tex2D(SurfaceTex, tc -dx -dy).xyz; float3 c10 = tex2D(SurfaceTex, tc -dy).xyz; float3 c20 = tex2D(SurfaceTex, tc +dx -dy).xyz; float3 c30 = tex2D(SurfaceTex, tc+2.0*dx -dy).xyz; float3 c01 = tex2D(SurfaceTex, tc -dx ).xyz; float3 c11 = tex2D(SurfaceTex, tc ).xyz; float3 c21 = tex2D(SurfaceTex, tc +dx ).xyz; float3 c31 = tex2D(SurfaceTex, tc+2.0*dx ).xyz; float3 c02 = tex2D(SurfaceTex, tc -dx +dy).xyz; float3 c12 = tex2D(SurfaceTex, tc +dy).xyz; float3 c22 = tex2D(SurfaceTex, tc +dx +dy).xyz; float3 c32 = tex2D(SurfaceTex, tc+2.0*dx +dy).xyz; float3 c03 = tex2D(SurfaceTex, tc -dx+2.0*dy).xyz; float3 c13 = tex2D(SurfaceTex, tc +2.0*dy).xyz; float3 c23 = tex2D(SurfaceTex, tc +dx+2.0*dy).xyz; float3 c33 = tex2D(SurfaceTex, tc+2.0*dx+2.0*dy).xyz; color = tex2D(SurfaceTex, coord).xyz; // Get min/max samples float3 min_sample = min4(c11, c21, c12, c22); float3 max_sample = max4(c11, c21, c12, c22); color = float3(dot(weights[0], float4(c00.x, c10.x, c20.x, c30.x)), dot(weights[0], float4(c00.y, c10.y, c20.y, c30.y)), dot(weights[0], float4(c00.z, c10.z, c20.z, c30.z))); color+= float3(dot(weights[1], float4(c01.x, c11.x, c21.x, c31.x)), dot(weights[1], float4(c01.y, c11.y, c21.y, c31.y)), dot(weights[1], float4(c01.z, c11.z, c21.z, c31.z))); color+= float3(dot(weights[2], float4(c02.x, c12.x, c22.x, c32.x)), dot(weights[2], float4(c02.y, c12.y, c22.y, c32.y)), dot(weights[2], float4(c02.z, c12.z, c22.z, c32.z))); color+= float3(dot(weights[3], float4(c03.x, c13.x, c23.x, c33.x)), dot(weights[3], float4(c03.y, c13.y, c23.y, c33.y)), dot(weights[3], float4(c03.z, c13.z, c23.z, c33.z))); color = color/(dot(weights[0], float4(1,1,1,1)) + dot(weights[1], float4(1,1,1,1)) + dot(weights[2], float4(1,1,1,1)) + dot(weights[3], float4(1,1,1,1))); // Anti-ringing float3 aux = color; color = clamp(color, min_sample, max_sample); color = lerp(aux, color, JINC2_AR_STRENGTH); // final sum and weight normalization return float4(color, 1.0); } float4 main(float2 texCoords : TEXCOORD) : COLOR { return lanczos2(texCoords); } */ #endif const BYTE D3D9_LANCZOS2_SHADER[] = { 0, 3, 255, 255, 254, 255, 44, 0, 67, 84, 65, 66, 28, 0, 0, 0, 131, 0, 0, 0, 0, 3, 255, 255, 2, 0, 0, 0, 28, 0, 0, 0, 0, 1, 0, 0, 124, 0, 0, 0, 68, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 2, 0, 0, 0, 1, 0, 2, 0, 108, 0, 0, 0, 0, 0, 0, 0, 83, 117, 114, 102, 97, 99, 101, 84, 101, 120, 0, 171, 4, 0, 12, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 84, 101, 120, 116, 117, 114, 101, 83, 105, 122, 101, 0, 1, 0, 3, 0, 1, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 112, 115, 95, 51, 95, 48, 0, 77, 105, 99, 114, 111, 115, 111, 102, 116, 32, 40, 82, 41, 32, 72, 76, 83, 76, 32, 83, 104, 97, 100, 101, 114, 32, 67, 111, 109, 112, 105, 108, 101, 114, 32, 49, 48, 46, 49, 0, 171, 81, 0, 0, 5, 1, 0, 15, 160, 230, 233, 157, 64, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 64, 81, 0, 0, 5, 2, 0, 15, 160, 0, 0, 128, 62, 0, 0, 0, 63, 219, 15, 201, 64, 219, 15, 73, 192, 81, 0, 0, 5, 3, 0, 15, 160, 0, 0, 0, 191, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 192, 63, 81, 0, 0, 5, 4, 0, 15, 160, 0, 0, 32, 64, 0, 0, 0, 191, 0, 0, 192, 63, 0, 0, 0, 63, 81, 0, 0, 5, 5, 0, 15, 160, 205, 204, 76, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 2, 5, 0, 0, 128, 0, 0, 3, 144, 31, 0, 0, 2, 0, 0, 0, 144, 0, 8, 15, 160, 1, 0, 0, 2, 0, 0, 1, 128, 3, 0, 0, 160, 4, 0, 0, 4, 0, 0, 3, 128, 0, 0, 228, 144, 0, 0, 228, 160, 0, 0, 0, 128, 19, 0, 0, 2, 0, 0, 12, 128, 0, 0, 68, 128, 2, 0, 0, 3, 0, 0, 3, 128, 0, 0, 238, 129, 0, 0, 228, 128, 2, 0, 0, 3, 0, 0, 12, 128, 0, 0, 68, 128, 3, 0, 0, 160, 4, 0, 0, 4, 0, 0, 12, 128, 0, 0, 68, 144, 0, 0, 68, 161, 0, 0, 228, 128, 90, 0, 0, 4, 0, 0, 4, 128, 0, 0, 238, 128, 0, 0, 238, 128, 3, 0, 170, 160, 7, 0, 0, 2, 0, 0, 4, 128, 0, 0, 170, 128, 6, 0, 0, 2, 0, 0, 4, 128, 0, 0, 170, 128, 4, 0, 0, 4, 1, 0, 3, 128, 0, 0, 170, 128, 2, 0, 228, 160, 2, 0, 85, 160, 19, 0, 0, 2, 1, 0, 3, 128, 1, 0, 228, 128, 4, 0, 0, 4, 1, 0, 3, 128, 1, 0, 228, 128, 2, 0, 170, 160, 2, 0, 255, 160, 37, 0, 0, 2, 2, 0, 2, 128, 1, 0, 0, 128, 37, 0, 0, 2, 3, 0, 2, 128, 1, 0, 85, 128, 5, 0, 0, 3, 0, 0, 8, 128, 2, 0, 85, 128, 3, 0, 85, 128, 5, 0, 0, 3, 1, 0, 1, 128, 0, 0, 170, 128, 0, 0, 170, 128, 6, 0, 0, 2, 1, 0, 1, 128, 1, 0, 0, 128, 5, 0, 0, 3, 0, 0, 8, 128, 0, 0, 255, 128, 1, 0, 0, 128, 88, 0, 0, 4, 1, 0, 1, 128, 0, 0, 170, 129, 1, 0, 0, 160, 0, 0, 255, 128, 4, 0, 0, 4, 0, 0, 12, 128, 0, 0, 68, 144, 0, 0, 68, 161, 0, 0, 68, 128, 2, 0, 0, 3, 2, 0, 15, 128, 0, 0, 68, 128, 3, 0, 84, 160, 2, 0, 0, 3, 3, 0, 15, 128, 0, 0, 238, 128, 3, 0, 49, 160, 90, 0, 0, 4, 0, 0, 1, 128, 3, 0, 228, 128, 3, 0, 228, 128, 3, 0, 170, 160, 90, 0, 0, 4, 0, 0, 2, 128, 3, 0, 238, 128, 3, 0, 238, 128, 3, 0, 170, 160, 7, 0, 0, 2, 0, 0, 2, 128, 0, 0, 85, 128, 6, 0, 0, 2, 0, 0, 2, 128, 0, 0, 85, 128, 7, 0, 0, 2, 0, 0, 1, 128, 0, 0, 0, 128, 6, 0, 0, 2, 0, 0, 1, 128, 0, 0, 0, 128, 4, 0, 0, 4, 3, 0, 3, 128, 0, 0, 0, 128, 2, 0, 228, 160, 2, 0, 85, 160, 19, 0, 0, 2, 3, 0, 3, 128, 3, 0, 228, 128, 4, 0, 0, 4, 3, 0, 3, 128, 3, 0, 228, 128, 2, 0, 170, 160, 2, 0, 255, 160, 37, 0, 0, 2, 4, 0, 2, 128, 3, 0, 0, 128, 37, 0, 0, 2, 5, 0, 2, 128, 3, 0, 85, 128, 5, 0, 0, 3, 3, 0, 1, 128, 4, 0, 85, 128, 5, 0, 85, 128, 5, 0, 0, 3, 3, 0, 2, 128, 0, 0, 0, 128, 0, 0, 0, 128, 6, 0, 0, 2, 3, 0, 2, 128, 3, 0, 85, 128, 5, 0, 0, 3, 3, 0, 1, 128, 3, 0, 85, 128, 3, 0, 0, 128, 88, 0, 0, 4, 1, 0, 2, 128, 0, 0, 0, 129, 1, 0, 0, 160, 3, 0, 0, 128, 4, 0, 0, 4, 3, 0, 3, 128, 0, 0, 85, 128, 2, 0, 228, 160, 2, 0, 85, 160, 19, 0, 0, 2, 3, 0, 3, 128, 3, 0, 228, 128, 4, 0, 0, 4, 3, 0, 3, 128, 3, 0, 228, 128, 2, 0, 170, 160, 2, 0, 255, 160, 37, 0, 0, 2, 4, 0, 2, 128, 3, 0, 0, 128, 37, 0, 0, 2, 5, 0, 2, 128, 3, 0, 85, 128, 5, 0, 0, 3, 0, 0, 1, 128, 4, 0, 85, 128, 5, 0, 85, 128, 5, 0, 0, 3, 3, 0, 1, 128, 0, 0, 85, 128, 0, 0, 85, 128, 6, 0, 0, 2, 3, 0, 1, 128, 3, 0, 0, 128, 5, 0, 0, 3, 0, 0, 1, 128, 0, 0, 0, 128, 3, 0, 0, 128, 88, 0, 0, 4, 1, 0, 4, 128, 0, 0, 85, 129, 1, 0, 0, 160, 0, 0, 0, 128, 2, 0, 0, 3, 3, 0, 15, 128, 0, 0, 238, 128, 4, 0, 228, 160, 90, 0, 0, 4, 0, 0, 1, 128, 3, 0, 228, 128, 3, 0, 228, 128, 3, 0, 170, 160, 90, 0, 0, 4, 0, 0, 2, 128, 3, 0, 238, 128, 3, 0, 238, 128, 3, 0, 170, 160, 7, 0, 0, 2, 0, 0, 2, 128, 0, 0, 85, 128, 6, 0, 0, 2, 0, 0, 2, 128, 0, 0, 85, 128, 7, 0, 0, 2, 0, 0, 1, 128, 0, 0, 0, 128, 6, 0, 0, 2, 0, 0, 1, 128, 0, 0, 0, 128, 4, 0, 0, 4, 3, 0, 3, 128, 0, 0, 0, 128, 2, 0, 228, 160, 2, 0, 85, 160, 19, 0, 0, 2, 3, 0, 3, 128, 3, 0, 228, 128, 4, 0, 0, 4, 3, 0, 3, 128, 3, 0, 228, 128, 2, 0, 170, 160, 2, 0, 255, 160, 37, 0, 0, 2, 4, 0, 2, 128, 3, 0, 0, 128, 37, 0, 0, 2, 5, 0, 2, 128, 3, 0, 85, 128, 5, 0, 0, 3, 3, 0, 1, 128, 4, 0, 85, 128, 5, 0, 85, 128, 5, 0, 0, 3, 3, 0, 2, 128, 0, 0, 0, 128, 0, 0, 0, 128, 6, 0, 0, 2, 3, 0, 2, 128, 3, 0, 85, 128, 5, 0, 0, 3, 3, 0, 1, 128, 3, 0, 85, 128, 3, 0, 0, 128, 88, 0, 0, 4, 1, 0, 8, 128, 0, 0, 0, 129, 1, 0, 0, 160, 3, 0, 0, 128, 1, 0, 0, 2, 3, 0, 2, 128, 3, 0, 170, 160, 6, 0, 0, 2, 4, 0, 1, 128, 0, 0, 0, 160, 1, 0, 0, 2, 3, 0, 1, 128, 4, 0, 0, 128, 6, 0, 0, 2, 4, 0, 2, 128, 0, 0, 85, 160, 4, 0, 0, 4, 3, 0, 12, 128, 2, 0, 228, 128, 4, 0, 68, 128, 3, 0, 68, 129, 4, 0, 0, 4, 3, 0, 3, 128, 2, 0, 238, 128, 4, 0, 228, 128, 3, 0, 228, 128, 4, 0, 0, 4, 4, 0, 12, 128, 4, 0, 68, 128, 1, 0, 148, 161, 3, 0, 228, 128, 66, 0, 0, 3, 5, 0, 15, 128, 4, 0, 238, 128, 0, 8, 228, 160, 1, 0, 0, 2, 6, 0, 1, 128, 5, 0, 0, 128, 4, 0, 0, 4, 4, 0, 12, 128, 4, 0, 68, 128, 1, 0, 148, 161, 3, 0, 68, 128, 66, 0, 0, 3, 7, 0, 15, 128, 4, 0, 238, 128, 0, 8, 228, 160, 1, 0, 0, 2, 6, 0, 4, 128, 7, 0, 0, 128, 5, 0, 0, 3, 4, 0, 12, 128, 2, 0, 228, 128, 4, 0, 68, 128, 4, 0, 0, 4, 5, 0, 9, 128, 4, 0, 100, 128, 1, 0, 103, 160, 4, 0, 230, 128, 66, 0, 0, 3, 8, 0, 15, 128, 4, 0, 238, 128, 0, 8, 228, 160, 4, 0, 0, 4, 4, 0, 12, 128, 4, 0, 68, 128, 1, 0, 148, 161, 5, 0, 196, 128, 66, 0, 0, 3, 9, 0, 15, 128, 4, 0, 238, 128, 0, 8, 228, 160, 1, 0, 0, 2, 6, 0, 8, 128, 9, 0, 0, 128, 5, 0, 0, 3, 4, 0, 12, 128, 4, 0, 68, 128, 1, 0, 148, 160, 4, 0, 0, 4, 9, 0, 9, 128, 2, 0, 230, 128, 4, 0, 100, 128, 4, 0, 230, 129, 4, 0, 0, 4, 4, 0, 12, 128, 2, 0, 228, 128, 4, 0, 68, 128, 4, 0, 228, 128, 66, 0, 0, 3, 10, 0, 15, 128, 4, 0, 238, 128, 0, 8, 228, 160, 66, 0, 0, 3, 11, 0, 15, 128, 9, 0, 236, 128, 0, 8, 228, 160, 1, 0, 0, 2, 6, 0, 2, 128, 11, 0, 0, 128, 9, 0, 0, 3, 6, 0, 1, 128, 1, 0, 228, 128, 6, 0, 228, 128, 1, 0, 0, 2, 12, 0, 1, 128, 5, 0, 85, 128, 1, 0, 0, 2, 7, 0, 1, 128, 5, 0, 170, 128, 1, 0, 0, 2, 12, 0, 4, 128, 7, 0, 85, 128, 1, 0, 0, 2, 12, 0, 2, 128, 11, 0, 85, 128, 1, 0, 0, 2, 7, 0, 2, 128, 11, 0, 170, 128, 1, 0, 0, 2, 12, 0, 8, 128, 9, 0, 85, 128, 1, 0, 0, 2, 7, 0, 8, 128, 9, 0, 170, 128, 9, 0, 0, 3, 6, 0, 4, 128, 1, 0, 228, 128, 7, 0, 228, 128, 9, 0, 0, 3, 6, 0, 2, 128, 1, 0, 228, 128, 12, 0, 228, 128, 9, 0, 0, 3, 0, 0, 1, 128, 1, 0, 228, 128, 1, 0, 170, 160, 4, 0, 0, 4, 1, 0, 15, 128, 0, 0, 68, 144, 0, 0, 68, 161, 2, 0, 228, 128, 90, 0, 0, 4, 1, 0, 1, 128, 1, 0, 228, 128, 1, 0, 228, 128, 3, 0, 170, 160, 90, 0, 0, 4, 1, 0, 2, 128, 1, 0, 238, 128, 1, 0, 238, 128, 3, 0, 170, 160, 7, 0, 0, 2, 1, 0, 2, 128, 1, 0, 85, 128, 6, 0, 0, 2, 1, 0, 2, 128, 1, 0, 85, 128, 7, 0, 0, 2, 1, 0, 1, 128, 1, 0, 0, 128, 6, 0, 0, 2, 1, 0, 1, 128, 1, 0, 0, 128, 4, 0, 0, 4, 1, 0, 12, 128, 1, 0, 0, 128, 2, 0, 68, 160, 2, 0, 85, 160, 19, 0, 0, 2, 1, 0, 12, 128, 1, 0, 228, 128, 4, 0, 0, 4, 1, 0, 12, 128, 1, 0, 228, 128, 2, 0, 170, 160, 2, 0, 255, 160, 37, 0, 0, 2, 7, 0, 2, 128, 1, 0, 170, 128, 37, 0, 0, 2, 9, 0, 2, 128, 1, 0, 255, 128, 5, 0, 0, 3, 1, 0, 4, 128, 7, 0, 85, 128, 9, 0, 85, 128, 5, 0, 0, 3, 1, 0, 8, 128, 1, 0, 0, 128, 1, 0, 0, 128, 6, 0, 0, 2, 1, 0, 8, 128, 1, 0, 255, 128, 5, 0, 0, 3, 1, 0, 4, 128, 1, 0, 255, 128, 1, 0, 170, 128, 88, 0, 0, 4, 7, 0, 1, 128, 1, 0, 0, 129, 1, 0, 0, 160, 1, 0, 170, 128, 4, 0, 0, 4, 1, 0, 5, 128, 1, 0, 85, 128, 2, 0, 212, 160, 2, 0, 85, 160, 19, 0, 0, 2, 1, 0, 5, 128, 1, 0, 228, 128, 4, 0, 0, 4, 1, 0, 5, 128, 1, 0, 228, 128, 2, 0, 170, 160, 2, 0, 255, 160, 37, 0, 0, 2, 9, 0, 2, 128, 1, 0, 0, 128, 37, 0, 0, 2, 11, 0, 2, 128, 1, 0, 170, 128, 5, 0, 0, 3, 1, 0, 1, 128, 9, 0, 85, 128, 11, 0, 85, 128, 5, 0, 0, 3, 1, 0, 4, 128, 1, 0, 85, 128, 1, 0, 85, 128, 6, 0, 0, 2, 1, 0, 4, 128, 1, 0, 170, 128, 5, 0, 0, 3, 1, 0, 1, 128, 1, 0, 170, 128, 1, 0, 0, 128, 88, 0, 0, 4, 7, 0, 2, 128, 1, 0, 85, 129, 1, 0, 0, 160, 1, 0, 0, 128, 4, 0, 0, 4, 1, 0, 3, 128, 0, 0, 85, 128, 2, 0, 228, 160, 2, 0, 85, 160, 19, 0, 0, 2, 1, 0, 3, 128, 1, 0, 228, 128, 4, 0, 0, 4, 1, 0, 3, 128, 1, 0, 228, 128, 2, 0, 170, 160, 2, 0, 255, 160, 37, 0, 0, 2, 9, 0, 2, 128, 1, 0, 0, 128, 37, 0, 0, 2, 11, 0, 2, 128, 1, 0, 85, 128, 5, 0, 0, 3, 1, 0, 1, 128, 9, 0, 85, 128, 11, 0, 85, 128, 5, 0, 0, 3, 1, 0, 2, 128, 0, 0, 85, 128, 0, 0, 85, 128, 6, 0, 0, 2, 1, 0, 2, 128, 1, 0, 85, 128, 5, 0, 0, 3, 1, 0, 1, 128, 1, 0, 85, 128, 1, 0, 0, 128, 88, 0, 0, 4, 7, 0, 4, 128, 0, 0, 85, 129, 1, 0, 0, 160, 1, 0, 0, 128, 2, 0, 0, 3, 1, 0, 15, 128, 0, 0, 238, 128, 4, 0, 156, 160, 90, 0, 0, 4, 0, 0, 2, 128, 1, 0, 228, 128, 1, 0, 228, 128, 3, 0, 170, 160, 90, 0, 0, 4, 1, 0, 1, 128, 1, 0, 238, 128, 1, 0, 238, 128, 3, 0, 170, 160, 7, 0, 0, 2, 1, 0, 1, 128, 1, 0, 0, 128, 6, 0, 0, 2, 1, 0, 1, 128, 1, 0, 0, 128, 7, 0, 0, 2, 0, 0, 2, 128, 0, 0, 85, 128, 6, 0, 0, 2, 0, 0, 2, 128, 0, 0, 85, 128, 4, 0, 0, 4, 1, 0, 6, 128, 0, 0, 85, 128, 2, 0, 208, 160, 2, 0, 85, 160, 19, 0, 0, 2, 1, 0, 6, 128, 1, 0, 228, 128, 4, 0, 0, 4, 1, 0, 6, 128, 1, 0, 228, 128, 2, 0, 170, 160, 2, 0, 255, 160, 37, 0, 0, 2, 9, 0, 2, 128, 1, 0, 85, 128, 37, 0, 0, 2, 11, 0, 2, 128, 1, 0, 170, 128, 5, 0, 0, 3, 1, 0, 2, 128, 9, 0, 85, 128, 11, 0, 85, 128, 5, 0, 0, 3, 1, 0, 4, 128, 0, 0, 85, 128, 0, 0, 85, 128, 6, 0, 0, 2, 1, 0, 4, 128, 1, 0, 170, 128, 5, 0, 0, 3, 1, 0, 2, 128, 1, 0, 170, 128, 1, 0, 85, 128, 88, 0, 0, 4, 7, 0, 8, 128, 0, 0, 85, 129, 1, 0, 0, 160, 1, 0, 85, 128, 66, 0, 0, 3, 9, 0, 15, 128, 3, 0, 238, 128, 0, 8, 228, 160, 1, 0, 0, 2, 11, 0, 1, 128, 9, 0, 0, 128, 66, 0, 0, 3, 12, 0, 15, 128, 3, 0, 228, 128, 0, 8, 228, 160, 1, 0, 0, 2, 11, 0, 4, 128, 12, 0, 0, 128, 66, 0, 0, 3, 13, 0, 15, 128, 5, 0, 236, 128, 0, 8, 228, 160, 1, 0, 0, 2, 11, 0, 8, 128, 13, 0, 0, 128, 1, 0, 0, 2, 11, 0, 2, 128, 8, 0, 0, 128, 9, 0, 0, 3, 11, 0, 1, 128, 7, 0, 228, 128, 11, 0, 228, 128, 1, 0, 0, 2, 14, 0, 1, 128, 9, 0, 85, 128, 1, 0, 0, 2, 9, 0, 1, 128, 9, 0, 170, 128, 1, 0, 0, 2, 14, 0, 8, 128, 13, 0, 85, 128, 1, 0, 0, 2, 9, 0, 8, 128, 13, 0, 170, 128, 1, 0, 0, 2, 14, 0, 4, 128, 12, 0, 85, 128, 1, 0, 0, 2, 14, 0, 2, 128, 8, 0, 85, 128, 9, 0, 0, 3, 11, 0, 2, 128, 7, 0, 228, 128, 14, 0, 228, 128, 1, 0, 0, 2, 9, 0, 4, 128, 12, 0, 170, 128, 1, 0, 0, 2, 9, 0, 2, 128, 8, 0, 170, 128, 9, 0, 0, 3, 11, 0, 4, 128, 7, 0, 228, 128, 9, 0, 228, 128, 9, 0, 0, 3, 0, 0, 2, 128, 7, 0, 228, 128, 1, 0, 170, 160, 2, 0, 0, 3, 0, 0, 1, 128, 0, 0, 85, 128, 0, 0, 0, 128, 2, 0, 0, 3, 1, 0, 14, 128, 6, 0, 144, 128, 11, 0, 144, 128, 4, 0, 0, 4, 2, 0, 3, 128, 1, 0, 0, 128, 2, 0, 228, 160, 2, 0, 85, 160, 19, 0, 0, 2, 2, 0, 3, 128, 2, 0, 228, 128, 4, 0, 0, 4, 2, 0, 3, 128, 2, 0, 228, 128, 2, 0, 170, 160, 2, 0, 255, 160, 37, 0, 0, 2, 6, 0, 2, 128, 2, 0, 0, 128, 37, 0, 0, 2, 7, 0, 2, 128, 2, 0, 85, 128, 5, 0, 0, 3, 0, 0, 2, 128, 6, 0, 85, 128, 7, 0, 85, 128, 5, 0, 0, 3, 2, 0, 1, 128, 1, 0, 0, 128, 1, 0, 0, 128, 6, 0, 0, 2, 2, 0, 1, 128, 2, 0, 0, 128, 5, 0, 0, 3, 0, 0, 2, 128, 0, 0, 85, 128, 2, 0, 0, 128, 88, 0, 0, 4, 6, 0, 1, 128, 1, 0, 0, 129, 1, 0, 0, 160, 0, 0, 85, 128, 2, 0, 0, 3, 7, 0, 15, 128, 0, 0, 238, 128, 3, 0, 253, 160, 90, 0, 0, 4, 0, 0, 2, 128, 7, 0, 228, 128, 7, 0, 228, 128, 3, 0, 170, 160, 90, 0, 0, 4, 1, 0, 1, 128, 7, 0, 238, 128, 7, 0, 238, 128, 3, 0, 170, 160, 7, 0, 0, 2, 1, 0, 1, 128, 1, 0, 0, 128, 6, 0, 0, 2, 1, 0, 1, 128, 1, 0, 0, 128, 7, 0, 0, 2, 0, 0, 2, 128, 0, 0, 85, 128, 6, 0, 0, 2, 0, 0, 2, 128, 0, 0, 85, 128, 4, 0, 0, 4, 2, 0, 3, 128, 0, 0, 85, 128, 2, 0, 228, 160, 2, 0, 85, 160, 19, 0, 0, 2, 2, 0, 3, 128, 2, 0, 228, 128, 4, 0, 0, 4, 2, 0, 3, 128, 2, 0, 228, 128, 2, 0, 170, 160, 2, 0, 255, 160, 37, 0, 0, 2, 7, 0, 2, 128, 2, 0, 0, 128, 37, 0, 0, 2, 9, 0, 2, 128, 2, 0, 85, 128, 5, 0, 0, 3, 2, 0, 1, 128, 7, 0, 85, 128, 9, 0, 85, 128, 5, 0, 0, 3, 2, 0, 2, 128, 0, 0, 85, 128, 0, 0, 85, 128, 6, 0, 0, 2, 2, 0, 2, 128, 2, 0, 85, 128, 5, 0, 0, 3, 2, 0, 1, 128, 2, 0, 85, 128, 2, 0, 0, 128, 88, 0, 0, 4, 6, 0, 2, 128, 0, 0, 85, 129, 1, 0, 0, 160, 2, 0, 0, 128, 4, 0, 0, 4, 2, 0, 3, 128, 1, 0, 0, 128, 2, 0, 228, 160, 2, 0, 85, 160, 19, 0, 0, 2, 2, 0, 3, 128, 2, 0, 228, 128, 4, 0, 0, 4, 2, 0, 3, 128, 2, 0, 228, 128, 2, 0, 170, 160, 2, 0, 255, 160, 37, 0, 0, 2, 7, 0, 2, 128, 2, 0, 0, 128, 37, 0, 0, 2, 9, 0, 2, 128, 2, 0, 85, 128, 5, 0, 0, 3, 0, 0, 2, 128, 7, 0, 85, 128, 9, 0, 85, 128, 5, 0, 0, 3, 2, 0, 1, 128, 1, 0, 0, 128, 1, 0, 0, 128, 6, 0, 0, 2, 2, 0, 1, 128, 2, 0, 0, 128, 5, 0, 0, 3, 0, 0, 2, 128, 0, 0, 85, 128, 2, 0, 0, 128, 88, 0, 0, 4, 6, 0, 4, 128, 1, 0, 0, 129, 1, 0, 0, 160, 0, 0, 85, 128, 2, 0, 0, 3, 7, 0, 15, 128, 0, 0, 238, 128, 4, 0, 24, 160, 90, 0, 0, 4, 0, 0, 2, 128, 7, 0, 228, 128, 7, 0, 228, 128, 3, 0, 170, 160, 90, 0, 0, 4, 1, 0, 1, 128, 7, 0, 238, 128, 7, 0, 238, 128, 3, 0, 170, 160, 7, 0, 0, 2, 1, 0, 1, 128, 1, 0, 0, 128, 6, 0, 0, 2, 1, 0, 1, 128, 1, 0, 0, 128, 7, 0, 0, 2, 0, 0, 2, 128, 0, 0, 85, 128, 6, 0, 0, 2, 0, 0, 2, 128, 0, 0, 85, 128, 4, 0, 0, 4, 2, 0, 3, 128, 0, 0, 85, 128, 2, 0, 228, 160, 2, 0, 85, 160, 19, 0, 0, 2, 2, 0, 3, 128, 2, 0, 228, 128, 4, 0, 0, 4, 2, 0, 3, 128, 2, 0, 228, 128, 2, 0, 170, 160, 2, 0, 255, 160, 37, 0, 0, 2, 7, 0, 2, 128, 2, 0, 0, 128, 37, 0, 0, 2, 9, 0, 2, 128, 2, 0, 85, 128, 5, 0, 0, 3, 2, 0, 1, 128, 7, 0, 85, 128, 9, 0, 85, 128, 5, 0, 0, 3, 2, 0, 2, 128, 0, 0, 85, 128, 0, 0, 85, 128, 6, 0, 0, 2, 2, 0, 2, 128, 2, 0, 85, 128, 5, 0, 0, 3, 2, 0, 1, 128, 2, 0, 85, 128, 2, 0, 0, 128, 88, 0, 0, 4, 6, 0, 8, 128, 0, 0, 85, 129, 1, 0, 0, 160, 2, 0, 0, 128, 4, 0, 0, 4, 2, 0, 3, 128, 4, 0, 228, 128, 1, 0, 233, 160, 3, 0, 238, 128, 4, 0, 0, 4, 3, 0, 12, 128, 4, 0, 68, 128, 1, 0, 212, 160, 3, 0, 228, 128, 66, 0, 0, 3, 7, 0, 15, 128, 3, 0, 238, 128, 0, 8, 228, 160, 66, 0, 0, 3, 9, 0, 15, 128, 2, 0, 228, 128, 0, 8, 228, 160, 1, 0, 0, 2, 11, 0, 1, 128, 9, 0, 0, 128, 4, 0, 0, 4, 2, 0, 3, 128, 4, 0, 228, 128, 1, 0, 233, 160, 5, 0, 236, 128, 4, 0, 0, 4, 3, 0, 12, 128, 4, 0, 68, 128, 1, 0, 212, 160, 5, 0, 196, 128, 66, 0, 0, 3, 5, 0, 15, 128, 3, 0, 238, 128, 0, 8, 228, 160, 66, 0, 0, 3, 13, 0, 15, 128, 2, 0, 228, 128, 0, 8, 228, 160, 1, 0, 0, 2, 11, 0, 8, 128, 13, 0, 0, 128, 4, 0, 0, 4, 2, 0, 3, 128, 4, 0, 228, 128, 1, 0, 233, 160, 3, 0, 228, 128, 4, 0, 0, 4, 3, 0, 3, 128, 4, 0, 228, 128, 1, 0, 237, 160, 3, 0, 228, 128, 66, 0, 0, 3, 3, 0, 15, 128, 3, 0, 228, 128, 0, 8, 228, 160, 66, 0, 0, 3, 14, 0, 15, 128, 2, 0, 228, 128, 0, 8, 228, 160, 1, 0, 0, 2, 11, 0, 4, 128, 14, 0, 0, 128, 1, 0, 0, 2, 11, 0, 2, 128, 10, 0, 0, 128, 9, 0, 0, 3, 11, 0, 1, 128, 6, 0, 228, 128, 11, 0, 228, 128, 1, 0, 0, 2, 15, 0, 1, 128, 9, 0, 85, 128, 1, 0, 0, 2, 9, 0, 1, 128, 9, 0, 170, 128, 1, 0, 0, 2, 15, 0, 8, 128, 13, 0, 85, 128, 1, 0, 0, 2, 9, 0, 8, 128, 13, 0, 170, 128, 1, 0, 0, 2, 15, 0, 4, 128, 14, 0, 85, 128, 1, 0, 0, 2, 15, 0, 2, 128, 10, 0, 85, 128, 9, 0, 0, 3, 11, 0, 2, 128, 6, 0, 228, 128, 15, 0, 228, 128, 1, 0, 0, 2, 9, 0, 4, 128, 14, 0, 170, 128, 1, 0, 0, 2, 9, 0, 2, 128, 10, 0, 170, 128, 9, 0, 0, 3, 11, 0, 4, 128, 6, 0, 228, 128, 9, 0, 228, 128, 9, 0, 0, 3, 0, 0, 2, 128, 6, 0, 228, 128, 1, 0, 170, 160, 2, 0, 0, 3, 0, 0, 1, 128, 0, 0, 85, 128, 0, 0, 0, 128, 2, 0, 0, 3, 1, 0, 14, 128, 1, 0, 228, 128, 11, 0, 144, 128, 5, 0, 0, 3, 2, 0, 3, 128, 4, 0, 228, 128, 1, 0, 237, 160, 4, 0, 0, 4, 2, 0, 3, 128, 2, 0, 238, 128, 4, 0, 228, 128, 2, 0, 228, 128, 66, 0, 0, 3, 2, 0, 15, 128, 2, 0, 228, 128, 0, 8, 228, 160, 1, 0, 0, 2, 4, 0, 2, 128, 2, 0, 0, 128, 4, 0, 0, 4, 2, 0, 9, 128, 1, 0, 0, 128, 2, 0, 100, 160, 2, 0, 85, 160, 19, 0, 0, 2, 2, 0, 9, 128, 2, 0, 228, 128, 4, 0, 0, 4, 2, 0, 9, 128, 2, 0, 228, 128, 2, 0, 170, 160, 2, 0, 255, 160, 37, 0, 0, 2, 6, 0, 2, 128, 2, 0, 0, 128, 37, 0, 0, 2, 9, 0, 2, 128, 2, 0, 255, 128, 5, 0, 0, 3, 0, 0, 2, 128, 6, 0, 85, 128, 9, 0, 85, 128, 5, 0, 0, 3, 2, 0, 1, 128, 1, 0, 0, 128, 1, 0, 0, 128, 6, 0, 0, 2, 2, 0, 1, 128, 2, 0, 0, 128, 5, 0, 0, 3, 0, 0, 2, 128, 0, 0, 85, 128, 2, 0, 0, 128, 88, 0, 0, 4, 6, 0, 1, 128, 1, 0, 0, 129, 1, 0, 0, 160, 0, 0, 85, 128, 2, 0, 0, 3, 2, 0, 9, 128, 0, 0, 230, 128, 4, 0, 0, 160, 2, 0, 0, 3, 9, 0, 15, 128, 0, 0, 238, 128, 4, 0, 35, 160, 90, 0, 0, 4, 0, 0, 2, 128, 2, 0, 236, 128, 2, 0, 236, 128, 3, 0, 170, 160, 7, 0, 0, 2, 0, 0, 2, 128, 0, 0, 85, 128, 6, 0, 0, 2, 0, 0, 2, 128, 0, 0, 85, 128, 4, 0, 0, 4, 0, 0, 12, 128, 0, 0, 85, 128, 2, 0, 68, 160, 2, 0, 85, 160, 19, 0, 0, 2, 0, 0, 12, 128, 0, 0, 228, 128, 4, 0, 0, 4, 0, 0, 12, 128, 0, 0, 228, 128, 2, 0, 170, 160, 2, 0, 255, 160, 37, 0, 0, 2, 11, 0, 2, 128, 0, 0, 170, 128, 37, 0, 0, 2, 13, 0, 2, 128, 0, 0, 255, 128, 5, 0, 0, 3, 0, 0, 4, 128, 11, 0, 85, 128, 13, 0, 85, 128, 5, 0, 0, 3, 0, 0, 8, 128, 0, 0, 85, 128, 0, 0, 85, 128, 6, 0, 0, 2, 0, 0, 8, 128, 0, 0, 255, 128, 5, 0, 0, 3, 0, 0, 4, 128, 0, 0, 255, 128, 0, 0, 170, 128, 88, 0, 0, 4, 6, 0, 8, 128, 0, 0, 85, 129, 1, 0, 0, 160, 0, 0, 170, 128, 90, 0, 0, 4, 0, 0, 2, 128, 9, 0, 228, 128, 9, 0, 228, 128, 3, 0, 170, 160, 90, 0, 0, 4, 0, 0, 4, 128, 9, 0, 238, 128, 9, 0, 238, 128, 3, 0, 170, 160, 7, 0, 0, 2, 0, 0, 4, 128, 0, 0, 170, 128, 6, 0, 0, 2, 0, 0, 4, 128, 0, 0, 170, 128, 7, 0, 0, 2, 0, 0, 2, 128, 0, 0, 85, 128, 6, 0, 0, 2, 0, 0, 2, 128, 0, 0, 85, 128, 4, 0, 0, 4, 2, 0, 9, 128, 0, 0, 85, 128, 2, 0, 100, 160, 2, 0, 85, 160, 19, 0, 0, 2, 2, 0, 9, 128, 2, 0, 228, 128, 4, 0, 0, 4, 2, 0, 9, 128, 2, 0, 228, 128, 2, 0, 170, 160, 2, 0, 255, 160, 37, 0, 0, 2, 9, 0, 2, 128, 2, 0, 0, 128, 37, 0, 0, 2, 11, 0, 2, 128, 2, 0, 255, 128, 5, 0, 0, 3, 0, 0, 8, 128, 9, 0, 85, 128, 11, 0, 85, 128, 5, 0, 0, 3, 1, 0, 1, 128, 0, 0, 85, 128, 0, 0, 85, 128, 6, 0, 0, 2, 1, 0, 1, 128, 1, 0, 0, 128, 5, 0, 0, 3, 0, 0, 8, 128, 0, 0, 255, 128, 1, 0, 0, 128, 88, 0, 0, 4, 6, 0, 2, 128, 0, 0, 85, 129, 1, 0, 0, 160, 0, 0, 255, 128, 4, 0, 0, 4, 0, 0, 10, 128, 0, 0, 170, 128, 2, 0, 96, 160, 2, 0, 85, 160, 19, 0, 0, 2, 0, 0, 10, 128, 0, 0, 228, 128, 4, 0, 0, 4, 0, 0, 10, 128, 0, 0, 228, 128, 2, 0, 170, 160, 2, 0, 255, 160, 37, 0, 0, 2, 9, 0, 2, 128, 0, 0, 85, 128, 37, 0, 0, 2, 11, 0, 2, 128, 0, 0, 255, 128, 5, 0, 0, 3, 0, 0, 2, 128, 9, 0, 85, 128, 11, 0, 85, 128, 5, 0, 0, 3, 0, 0, 8, 128, 0, 0, 170, 128, 0, 0, 170, 128, 6, 0, 0, 2, 0, 0, 8, 128, 0, 0, 255, 128, 5, 0, 0, 3, 0, 0, 2, 128, 0, 0, 255, 128, 0, 0, 85, 128, 88, 0, 0, 4, 6, 0, 4, 128, 0, 0, 170, 129, 1, 0, 0, 160, 0, 0, 85, 128, 1, 0, 0, 2, 4, 0, 1, 128, 7, 0, 0, 128, 1, 0, 0, 2, 4, 0, 4, 128, 3, 0, 0, 128, 1, 0, 0, 2, 4, 0, 8, 128, 5, 0, 0, 128, 9, 0, 0, 3, 4, 0, 1, 128, 6, 0, 228, 128, 4, 0, 228, 128, 1, 0, 0, 2, 9, 0, 1, 128, 7, 0, 85, 128, 1, 0, 0, 2, 3, 0, 1, 128, 7, 0, 170, 128, 1, 0, 0, 2, 9, 0, 4, 128, 3, 0, 85, 128, 1, 0, 0, 2, 9, 0, 8, 128, 5, 0, 85, 128, 1, 0, 0, 2, 3, 0, 8, 128, 5, 0, 170, 128, 1, 0, 0, 2, 9, 0, 2, 128, 2, 0, 85, 128, 1, 0, 0, 2, 3, 0, 2, 128, 2, 0, 170, 128, 9, 0, 0, 3, 4, 0, 4, 128, 6, 0, 228, 128, 3, 0, 228, 128, 9, 0, 0, 3, 4, 0, 2, 128, 6, 0, 228, 128, 9, 0, 228, 128, 9, 0, 0, 3, 0, 0, 2, 128, 6, 0, 228, 128, 1, 0, 170, 160, 2, 0, 0, 3, 0, 0, 1, 128, 0, 0, 85, 128, 0, 0, 0, 128, 6, 0, 0, 2, 0, 0, 1, 128, 0, 0, 0, 128, 2, 0, 0, 3, 0, 0, 14, 128, 1, 0, 228, 128, 4, 0, 144, 128, 5, 0, 0, 3, 1, 0, 7, 128, 0, 0, 0, 128, 0, 0, 249, 128, 10, 0, 0, 3, 2, 0, 7, 128, 14, 0, 228, 128, 10, 0, 228, 128, 11, 0, 0, 3, 3, 0, 7, 128, 10, 0, 228, 128, 14, 0, 228, 128, 11, 0, 0, 3, 4, 0, 7, 128, 12, 0, 228, 128, 3, 0, 228, 128, 10, 0, 0, 3, 3, 0, 7, 128, 2, 0, 228, 128, 12, 0, 228, 128, 10, 0, 0, 3, 2, 0, 7, 128, 3, 0, 228, 128, 8, 0, 228, 128, 11, 0, 0, 3, 3, 0, 7, 128, 8, 0, 228, 128, 4, 0, 228, 128, 11, 0, 0, 3, 4, 0, 7, 128, 1, 0, 228, 128, 2, 0, 228, 128, 10, 0, 0, 3, 2, 0, 7, 128, 3, 0, 228, 128, 4, 0, 228, 128, 4, 0, 0, 4, 0, 0, 7, 128, 0, 0, 249, 128, 0, 0, 0, 129, 2, 0, 228, 128, 4, 0, 0, 4, 0, 8, 7, 128, 0, 0, 228, 128, 5, 0, 0, 160, 1, 0, 228, 128, 1, 0, 0, 2, 0, 8, 8, 128, 1, 0, 170, 160, 255, 255, 0, 0 }; #endif