- Implemented DualTexture.fx shader for Dx11 and Metro (Metro untested atm)

- Fixed that multiple techniques can be used in the Dx11 rendersystem
This commit is contained in:
SND\AstrorEnales_cp 2012-09-05 20:17:34 +00:00
parent e3be0183e0
commit e1a2a05e88
14 changed files with 2026 additions and 424 deletions

View File

@ -164,6 +164,7 @@ EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Metro", "Metro", "{32B91ACB-CC8A-4E43-A6F1-FC8F8CAA4D22}"
ProjectSection(SolutionItems) = preProject
shader\Metro\build.xml = shader\Metro\build.xml
shader\Metro\DualTexture.fx = shader\Metro\DualTexture.fx
shader\Metro\SpriteBatch.fx = shader\Metro\SpriteBatch.fx
EndProjectSection
EndProject

View File

@ -1,9 +1,6 @@
#region Using Statements
using System;
using ANX.Framework.NonXNA;
#endregion // Using Statements
// This file is part of the ANX.Framework created by the
// "ANX.Framework developer group" and released under the Ms-PL license.
// For details see: http://anxframework.codeplex.com/license
@ -13,7 +10,8 @@ namespace ANX.Framework.Graphics
public class AlphaTestEffect : Effect, IEffectMatrices, IEffectFog, IGraphicsResource
{
public AlphaTestEffect(GraphicsDevice device)
: base(device, AddInSystemFactory.Instance.GetDefaultCreator<IRenderSystemCreator>().GetShaderByteCode(NonXNA.PreDefinedShader.AlphaTestEffect))
: base(device, AddInSystemFactory.Instance.GetDefaultCreator<IRenderSystemCreator>().GetShaderByteCode(
NonXNA.PreDefinedShader.AlphaTestEffect))
{
throw new NotImplementedException();
}

View File

@ -164,6 +164,7 @@ EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Metro", "Metro", "{32B91ACB-CC8A-4E43-A6F1-FC8F8CAA4D22}"
ProjectSection(SolutionItems) = preProject
shader\Metro\build.xml = shader\Metro\build.xml
shader\Metro\DualTexture.fx = shader\Metro\DualTexture.fx
shader\Metro\SpriteBatch.fx = shader\Metro\SpriteBatch.fx
EndProjectSection
EndProject

View File

@ -164,6 +164,7 @@ EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Metro", "Metro", "{32B91ACB-CC8A-4E43-A6F1-FC8F8CAA4D22}"
ProjectSection(SolutionItems) = preProject
shader\Metro\build.xml = shader\Metro\build.xml
shader\Metro\DualTexture.fx = shader\Metro\DualTexture.fx
shader\Metro\SpriteBatch.fx = shader\Metro\SpriteBatch.fx
EndProjectSection
EndProject

View File

@ -164,6 +164,7 @@ EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Metro", "Metro", "{32B91ACB-CC8A-4E43-A6F1-FC8F8CAA4D22}"
ProjectSection(SolutionItems) = preProject
shader\Metro\build.xml = shader\Metro\build.xml
shader\Metro\DualTexture.fx = shader\Metro\DualTexture.fx
shader\Metro\SpriteBatch.fx = shader\Metro\SpriteBatch.fx
EndProjectSection
EndProject

View File

@ -1,213 +1,158 @@
#region Using Statements
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SharpDX.Direct3D11;
using SharpDX.D3DCompiler;
using System.IO;
using ANX.Framework.NonXNA;
using ANX.Framework.Graphics;
#endregion // Using Statements
using Dx11 = SharpDX.Direct3D11;
// This file is part of the ANX.Framework created by the
// "ANX.Framework developer group" and released under the Ms-PL license.
// For details see: http://anxframework.codeplex.com/license
using EffectTechnique = ANX.Framework.Graphics.EffectTechnique;
namespace ANX.RenderSystem.Windows.DX11
{
public class Effect_DX11 : INativeEffect
{
private ShaderBytecode pixelShaderByteCode;
private ShaderBytecode vertexShaderByteCode;
private VertexShader vertexShader;
private PixelShader pixelShader;
private ANX.Framework.Graphics.Effect managedEffect;
private ShaderBytecode effectByteCode;
private SharpDX.Direct3D11.Effect nativeEffect;
public class Effect_DX11 : INativeEffect
{
#region Private
private Dx11.VertexShader vertexShader;
private Dx11.PixelShader pixelShader;
private Effect managedEffect;
#endregion
public Effect_DX11(GraphicsDevice device, ANX.Framework.Graphics.Effect managedEffect, Stream vertexShaderByteCode, Stream pixelShaderByteCode)
{
if (this.managedEffect == null)
{
throw new ArgumentNullException("managedEffect");
}
this.managedEffect = managedEffect;
#region Public
internal Dx11.Effect NativeEffect
{
get;
private set;
}
if (vertexShaderByteCode.CanSeek)
{
vertexShaderByteCode.Seek(0, SeekOrigin.Begin);
}
this.vertexShaderByteCode = ShaderBytecode.FromStream(vertexShaderByteCode);
this.vertexShader = new VertexShader((SharpDX.Direct3D11.Device)device.NativeDevice, this.vertexShaderByteCode);
public IEnumerable<EffectTechnique> Techniques
{
get
{
for (int i = 0; i < NativeEffect.Description.TechniqueCount; i++)
{
EffectTechnique_DX11 teqDx11 = new EffectTechnique_DX11(this.managedEffect);
teqDx11.NativeTechnique = NativeEffect.GetTechniqueByIndex(i);
yield return new EffectTechnique(this.managedEffect, teqDx11);
}
}
}
if (pixelShaderByteCode.CanSeek)
{
pixelShaderByteCode.Seek(0, SeekOrigin.Begin);
}
this.pixelShaderByteCode = ShaderBytecode.FromStream(pixelShaderByteCode);
this.pixelShader = new PixelShader((SharpDX.Direct3D11.Device)device.NativeDevice, this.pixelShaderByteCode);
}
public IEnumerable<EffectParameter> Parameters
{
get
{
for (int i = 0; i < NativeEffect.Description.GlobalVariableCount; i++)
{
EffectParameter_DX11 parDx11 = new EffectParameter_DX11();
parDx11.NativeParameter = NativeEffect.GetVariableByIndex(i);
public Effect_DX11(GraphicsDevice device, ANX.Framework.Graphics.Effect managedEffect, Stream effectByteCode)
{
if (managedEffect == null)
{
throw new ArgumentNullException("managedEffect");
}
this.managedEffect = managedEffect;
EffectParameter par = new EffectParameter();
par.NativeParameter = parDx11;
yield return par;
}
}
}
#endregion
if (effectByteCode.CanSeek)
{
effectByteCode.Seek(0, SeekOrigin.Begin);
}
this.effectByteCode = ShaderBytecode.FromStream(effectByteCode);
this.nativeEffect = new SharpDX.Direct3D11.Effect(((GraphicsDeviceWindowsDX11)device.NativeDevice).NativeDevice.Device, this.effectByteCode);
}
#region Constructor
public Effect_DX11(GraphicsDevice device, Effect setManagedEffect, Stream vertexShaderStream, Stream pixelShaderStream)
{
if (setManagedEffect == null)
throw new ArgumentNullException("managedEffect");
managedEffect = setManagedEffect;
public void Apply(GraphicsDevice graphicsDevice)
{
((GraphicsDeviceWindowsDX11)graphicsDevice.NativeDevice).currentEffect = this;
}
if (vertexShaderStream.CanSeek)
vertexShaderStream.Seek(0, SeekOrigin.Begin);
internal SharpDX.Direct3D11.Effect NativeEffect
{
get
{
return this.nativeEffect;
}
}
var vertexShaderByteCode = ShaderBytecode.FromStream(vertexShaderStream);
vertexShader = new Dx11.VertexShader((Dx11.Device)device.NativeDevice, vertexShaderByteCode);
internal ShaderBytecode PixelShaderByteCode
{
get
{
return this.pixelShaderByteCode;
}
}
if (pixelShaderStream.CanSeek)
pixelShaderStream.Seek(0, SeekOrigin.Begin);
internal ShaderBytecode VertexShaderByteCode
{
get
{
return this.vertexShaderByteCode;
}
}
var pixelShaderByteCode = ShaderBytecode.FromStream(pixelShaderStream);
pixelShader = new Dx11.PixelShader((Dx11.Device)device.NativeDevice, pixelShaderByteCode);
}
internal VertexShader VertexShader
{
get
{
return this.vertexShader;
}
}
public Effect_DX11(GraphicsDevice device, Effect setManagedEffect, Stream effectStream)
{
if (setManagedEffect == null)
throw new ArgumentNullException("managedEffect");
managedEffect = setManagedEffect;
internal PixelShader PixelShader
{
get
{
return this.pixelShader;
}
}
if (effectStream.CanSeek)
effectStream.Seek(0, SeekOrigin.Begin);
public static byte[] CompileVertexShader(string effectCode, string directory = "")
{
ShaderBytecode vertexShaderByteCode = ShaderBytecode.Compile(effectCode, "VS", "vs_4_0", ShaderFlags.None, EffectFlags.None, null, new IncludeHandler(directory), "unknown");
byte[] bytecode = new byte[vertexShaderByteCode.BufferSize];
vertexShaderByteCode.Data.Read(bytecode, 0, bytecode.Length);
return bytecode;
}
var effectByteCode = ShaderBytecode.FromStream(effectStream);
NativeEffect = new Dx11.Effect(((GraphicsDeviceWindowsDX11)device.NativeDevice).NativeDevice.Device, effectByteCode);
}
#endregion
public static byte[] CompilePixelShader(string effectCode, string directory = "")
{
ShaderBytecode pixelShaderByteCode = ShaderBytecode.Compile(effectCode, "PS", "ps_4_0", ShaderFlags.None, EffectFlags.None, null, new IncludeHandler(directory), "unknown");
byte[] bytecode = new byte[pixelShaderByteCode.BufferSize];
pixelShaderByteCode.Data.Read(bytecode, 0, bytecode.Length);
return bytecode;
}
#region Apply
public void Apply(GraphicsDevice graphicsDevice)
{
((GraphicsDeviceWindowsDX11)graphicsDevice.NativeDevice).currentEffect = this;
}
#endregion
public static byte[] CompileFXShader(string effectCode, string directory = "")
{
ShaderBytecode effectByteCode = ShaderBytecode.Compile(effectCode, "fx_5_0", ShaderFlags.None, EffectFlags.None, null, new IncludeHandler(directory), "unknown");
byte[] bytecode = new byte[effectByteCode.BufferSize];
effectByteCode.Data.Read(bytecode, 0, bytecode.Length);
return bytecode;
}
#region GetCurrentTechnique
public EffectTechnique_DX11 GetCurrentTechnique()
{
return managedEffect.CurrentTechnique.NativeTechnique as EffectTechnique_DX11;
}
#endregion
public void Dispose()
{
if (this.pixelShaderByteCode != null)
{
this.pixelShaderByteCode.Dispose();
this.pixelShaderByteCode = null;
}
public static byte[] CompileVertexShader(string effectCode, string directory = "")
{
ShaderBytecode vertexShaderByteCode = ShaderBytecode.Compile(effectCode, "VS", "vs_4_0", ShaderFlags.None,
EffectFlags.None, null, new IncludeHandler(directory), "unknown");
byte[] bytecode = new byte[vertexShaderByteCode.BufferSize];
vertexShaderByteCode.Data.Read(bytecode, 0, bytecode.Length);
return bytecode;
}
if (this.pixelShader != null)
{
this.pixelShader.Dispose();
this.pixelShader = null;
}
public static byte[] CompilePixelShader(string effectCode, string directory = "")
{
ShaderBytecode pixelShaderByteCode = ShaderBytecode.Compile(effectCode, "PS", "ps_4_0", ShaderFlags.None,
EffectFlags.None, null, new IncludeHandler(directory), "unknown");
byte[] bytecode = new byte[pixelShaderByteCode.BufferSize];
pixelShaderByteCode.Data.Read(bytecode, 0, bytecode.Length);
return bytecode;
}
if (this.vertexShaderByteCode != null)
{
this.vertexShaderByteCode.Dispose();
this.vertexShaderByteCode = null;
}
public static byte[] CompileFXShader(string effectCode, string directory = "")
{
ShaderBytecode effectByteCode = ShaderBytecode.Compile(effectCode, "fx_5_0", ShaderFlags.None, EffectFlags.None,
null, new IncludeHandler(directory), "unknown");
byte[] bytecode = new byte[effectByteCode.BufferSize];
effectByteCode.Data.Read(bytecode, 0, bytecode.Length);
return bytecode;
}
if (this.vertexShader != null)
{
this.vertexShader.Dispose();
this.vertexShader = null;
}
#region Dispose
public void Dispose()
{
if (pixelShader != null)
{
pixelShader.Dispose();
pixelShader = null;
}
if (this.effectByteCode != null)
{
this.effectByteCode.Dispose();
this.effectByteCode = null;
}
if (vertexShader != null)
{
vertexShader.Dispose();
vertexShader = null;
}
if (this.nativeEffect != null)
{
this.nativeEffect.Dispose();
this.nativeEffect = null;
}
}
public IEnumerable<ANX.Framework.Graphics.EffectTechnique> Techniques
{
get
{
for (int i = 0; i < nativeEffect.Description.TechniqueCount; i++)
{
EffectTechnique_DX11 teqDx11 = new EffectTechnique_DX11(this.managedEffect);
teqDx11.NativeTechnique = nativeEffect.GetTechniqueByIndex(i);
EffectTechnique teq = new EffectTechnique(this.managedEffect, teqDx11);
yield return teq;
}
}
}
public IEnumerable<EffectParameter> Parameters
{
get
{
for (int i = 0; i < nativeEffect.Description.GlobalVariableCount; i++)
{
EffectParameter_DX11 parDx11 = new EffectParameter_DX11();
parDx11.NativeParameter = nativeEffect.GetVariableByIndex(i);
EffectParameter par = new EffectParameter();
par.NativeParameter = parDx11;
yield return par;
}
}
}
}
if (NativeEffect != null)
{
NativeEffect.Dispose();
NativeEffect = null;
}
}
#endregion
}
}

View File

@ -1,9 +1,5 @@
#region Using Statements
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SharpDX;
using SharpDX.DXGI;
using SharpDX.Direct3D;
using SharpDX.D3DCompiler;
@ -20,11 +16,6 @@ using System.Runtime.InteropServices;
// For details see: http://anxframework.codeplex.com/license
using Device = SharpDX.Direct3D11.Device;
using Buffer = SharpDX.Direct3D11.Buffer;
using Rectangle = ANX.Framework.Rectangle;
using Vector4 = ANX.Framework.Vector4;
using VertexBufferBinding = ANX.Framework.Graphics.VertexBufferBinding;
using Viewport = ANX.Framework.Graphics.Viewport;
namespace ANX.RenderSystem.Windows.DX11
{
@ -396,8 +387,9 @@ namespace ANX.RenderSystem.Windows.DX11
Effect_DX11 effect = this.currentEffect;
// get the input semantic of the current effect / technique that is used
//TODO: check for null's and throw exceptions
technique = effect.NativeEffect.GetTechniqueByIndex(0);
//TODO: check for null's and throw exceptions
// TODO: get the correct pass index!
technique = effect.GetCurrentTechnique().NativeTechnique;
pass = technique.GetPassByIndex(0);
passSignature = pass.Description.Signature;
}

View File

@ -448,144 +448,695 @@ namespace ANX.RenderSystem.Windows.DX11
#region DualTextureEffectShader
internal static byte[] DualTextureEffectByteCode = new byte[]
{
001, 032, 255, 254, 001, 000, 000, 000, 001, 000, 000, 000, 002, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 001, 000,
000, 000, 004, 007, 000, 000, 000, 000, 000, 000, 001, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 001, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 002, 000, 000, 000, 002, 000, 000,
001, 032, 255, 254, 001, 000, 000, 000, 004, 000, 000, 000, 004, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 004, 000,
000, 000, 245, 037, 000, 000, 000, 000, 000, 000, 002, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 002, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 008, 000, 000, 000, 008, 000, 000,
000, 001, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 036, 071, 108, 111, 098,
097, 108, 115, 000, 102, 108, 111, 097, 116, 052, 120, 052, 000, 013, 000,
000, 000, 001, 000, 000, 000, 000, 000, 000, 000, 064, 000, 000, 000, 064,
000, 000, 000, 064, 000, 000, 000, 011, 100, 000, 000, 077, 097, 116, 114,
105, 120, 084, 114, 097, 110, 115, 102, 111, 114, 109, 000, 084, 101, 120,
116, 117, 114, 101, 050, 068, 000, 066, 000, 000, 000, 002, 000, 000, 000,
097, 108, 115, 000, 102, 108, 111, 097, 116, 052, 000, 013, 000, 000, 000,
001, 000, 000, 000, 000, 000, 000, 000, 016, 000, 000, 000, 016, 000, 000,
000, 016, 000, 000, 000, 010, 033, 000, 000, 068, 105, 102, 102, 117, 115,
101, 067, 111, 108, 111, 114, 000, 102, 108, 111, 097, 116, 051, 000, 061,
000, 000, 000, 001, 000, 000, 000, 000, 000, 000, 000, 012, 000, 000, 000,
016, 000, 000, 000, 012, 000, 000, 000, 010, 025, 000, 000, 070, 111, 103,
067, 111, 108, 111, 114, 000, 070, 111, 103, 086, 101, 099, 116, 111, 114,
000, 102, 108, 111, 097, 116, 052, 120, 052, 000, 115, 000, 000, 000, 001,
000, 000, 000, 000, 000, 000, 000, 064, 000, 000, 000, 064, 000, 000, 000,
064, 000, 000, 000, 011, 100, 000, 000, 087, 111, 114, 108, 100, 086, 105,
101, 119, 080, 114, 111, 106, 000, 084, 101, 120, 116, 117, 114, 101, 050,
068, 000, 166, 000, 000, 000, 002, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 012, 000, 000, 000,
084, 101, 120, 116, 117, 114, 101, 000, 083, 097, 109, 112, 108, 101, 114,
083, 116, 097, 116, 101, 000, 212, 000, 000, 000, 002, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 012, 000, 000, 000, 084, 101, 120, 116, 117, 114, 101, 000, 083, 097,
109, 112, 108, 101, 114, 083, 116, 097, 116, 101, 000, 112, 000, 000, 000,
002, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 021, 000, 000, 000, 084, 101, 120, 116, 117, 114,
101, 083, 097, 109, 112, 108, 101, 114, 000, 065, 108, 112, 104, 097, 084,
101, 115, 116, 000, 065, 108, 112, 104, 097, 084, 101, 115, 116, 080, 097,
021, 000, 000, 000, 084, 101, 120, 116, 117, 114, 101, 083, 097, 109, 112,
108, 101, 114, 000, 084, 101, 120, 116, 117, 114, 101, 050, 000, 084, 101,
120, 116, 117, 114, 101, 050, 083, 097, 109, 112, 108, 101, 114, 000, 068,
117, 097, 108, 084, 101, 120, 116, 117, 114, 101, 069, 102, 102, 101, 099,
116, 000, 068, 117, 097, 108, 084, 101, 120, 116, 117, 114, 101, 080, 097,
115, 115, 000, 001, 000, 000, 000, 002, 000, 000, 000, 000, 000, 000, 000,
128, 003, 000, 000, 068, 088, 066, 067, 093, 023, 212, 206, 149, 008, 160,
173, 236, 209, 184, 180, 025, 147, 008, 113, 001, 000, 000, 000, 128, 003,
000, 000, 005, 000, 000, 000, 052, 000, 000, 000, 008, 001, 000, 000, 120,
001, 000, 000, 236, 001, 000, 000, 004, 003, 000, 000, 082, 068, 069, 070,
204, 000, 000, 000, 001, 000, 000, 000, 072, 000, 000, 000, 001, 000, 000,
000, 028, 000, 000, 000, 000, 004, 254, 255, 000, 001, 000, 000, 152, 000,
168, 004, 000, 000, 068, 088, 066, 067, 023, 178, 160, 010, 024, 223, 121,
225, 109, 155, 124, 096, 096, 095, 251, 159, 001, 000, 000, 000, 168, 004,
000, 000, 005, 000, 000, 000, 052, 000, 000, 000, 148, 001, 000, 000, 000,
002, 000, 000, 164, 002, 000, 000, 044, 004, 000, 000, 082, 068, 069, 070,
088, 001, 000, 000, 001, 000, 000, 000, 072, 000, 000, 000, 001, 000, 000,
000, 028, 000, 000, 000, 000, 004, 254, 255, 000, 001, 000, 000, 036, 001,
000, 000, 060, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 001, 000, 000, 000,
000, 000, 000, 000, 036, 071, 108, 111, 098, 097, 108, 115, 000, 171, 171,
171, 060, 000, 000, 000, 001, 000, 000, 000, 096, 000, 000, 000, 064, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 120, 000, 000, 000, 000,
000, 000, 000, 064, 000, 000, 000, 002, 000, 000, 000, 136, 000, 000, 000,
000, 000, 000, 000, 077, 097, 116, 114, 105, 120, 084, 114, 097, 110, 115,
102, 111, 114, 109, 000, 003, 000, 003, 000, 004, 000, 004, 000, 000, 000,
000, 000, 000, 000, 000, 000, 077, 105, 099, 114, 111, 115, 111, 102, 116,
032, 040, 082, 041, 032, 072, 076, 083, 076, 032, 083, 104, 097, 100, 101,
114, 032, 067, 111, 109, 112, 105, 108, 101, 114, 032, 057, 046, 050, 057,
046, 057, 053, 050, 046, 051, 049, 049, 049, 000, 171, 171, 171, 073, 083,
071, 078, 104, 000, 000, 000, 003, 000, 000, 000, 008, 000, 000, 000, 080,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 003, 000, 000, 000,
000, 000, 000, 000, 015, 015, 000, 000, 089, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 003, 000, 000, 000, 001, 000, 000, 000, 015, 015,
000, 000, 095, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 003,
000, 000, 000, 002, 000, 000, 000, 003, 003, 000, 000, 080, 079, 083, 073,
084, 073, 079, 078, 000, 067, 079, 076, 079, 082, 000, 084, 069, 088, 067,
079, 079, 082, 068, 000, 079, 083, 071, 078, 108, 000, 000, 000, 003, 000,
000, 000, 008, 000, 000, 000, 080, 000, 000, 000, 000, 000, 000, 000, 001,
000, 000, 000, 003, 000, 000, 000, 000, 000, 000, 000, 015, 000, 000, 000,
092, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 003, 000, 000,
000, 001, 000, 000, 000, 015, 000, 000, 000, 098, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 003, 000, 000, 000, 002, 000, 000, 000, 003,
012, 000, 000, 083, 086, 095, 080, 079, 083, 073, 084, 073, 079, 078, 000,
067, 079, 076, 079, 082, 000, 084, 069, 088, 067, 079, 079, 082, 068, 000,
171, 083, 072, 068, 082, 016, 001, 000, 000, 064, 000, 001, 000, 068, 000,
000, 000, 089, 000, 000, 004, 070, 142, 032, 000, 000, 000, 000, 000, 004,
000, 000, 000, 095, 000, 000, 003, 242, 016, 016, 000, 000, 000, 000, 000,
095, 000, 000, 003, 242, 016, 016, 000, 001, 000, 000, 000, 095, 000, 000,
003, 050, 016, 016, 000, 002, 000, 000, 000, 103, 000, 000, 004, 242, 032,
016, 000, 000, 000, 000, 000, 001, 000, 000, 000, 101, 000, 000, 003, 242,
171, 060, 000, 000, 000, 004, 000, 000, 000, 096, 000, 000, 000, 112, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 192, 000, 000, 000, 000,
000, 000, 000, 016, 000, 000, 000, 002, 000, 000, 000, 208, 000, 000, 000,
000, 000, 000, 000, 224, 000, 000, 000, 016, 000, 000, 000, 012, 000, 000,
000, 000, 000, 000, 000, 236, 000, 000, 000, 000, 000, 000, 000, 252, 000,
000, 000, 032, 000, 000, 000, 016, 000, 000, 000, 002, 000, 000, 000, 208,
000, 000, 000, 000, 000, 000, 000, 006, 001, 000, 000, 048, 000, 000, 000,
064, 000, 000, 000, 002, 000, 000, 000, 020, 001, 000, 000, 000, 000, 000,
000, 068, 105, 102, 102, 117, 115, 101, 067, 111, 108, 111, 114, 000, 171,
171, 171, 001, 000, 003, 000, 001, 000, 004, 000, 000, 000, 000, 000, 000,
000, 000, 000, 070, 111, 103, 067, 111, 108, 111, 114, 000, 171, 171, 171,
001, 000, 003, 000, 001, 000, 003, 000, 000, 000, 000, 000, 000, 000, 000,
000, 070, 111, 103, 086, 101, 099, 116, 111, 114, 000, 087, 111, 114, 108,
100, 086, 105, 101, 119, 080, 114, 111, 106, 000, 003, 000, 003, 000, 004,
000, 004, 000, 000, 000, 000, 000, 000, 000, 000, 000, 077, 105, 099, 114,
111, 115, 111, 102, 116, 032, 040, 082, 041, 032, 072, 076, 083, 076, 032,
083, 104, 097, 100, 101, 114, 032, 067, 111, 109, 112, 105, 108, 101, 114,
032, 057, 046, 050, 057, 046, 057, 053, 050, 046, 051, 049, 049, 049, 000,
171, 171, 171, 073, 083, 071, 078, 100, 000, 000, 000, 003, 000, 000, 000,
008, 000, 000, 000, 080, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 003, 000, 000, 000, 000, 000, 000, 000, 015, 015, 000, 000, 089, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 003, 000, 000, 000, 001,
000, 000, 000, 003, 003, 000, 000, 089, 000, 000, 000, 001, 000, 000, 000,
000, 000, 000, 000, 003, 000, 000, 000, 002, 000, 000, 000, 003, 003, 000,
000, 080, 079, 083, 073, 084, 073, 079, 078, 000, 084, 069, 088, 067, 079,
079, 082, 068, 000, 171, 171, 079, 083, 071, 078, 156, 000, 000, 000, 005,
000, 000, 000, 008, 000, 000, 000, 128, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 003, 000, 000, 000, 000, 000, 000, 000, 015, 000, 000,
000, 128, 000, 000, 000, 001, 000, 000, 000, 000, 000, 000, 000, 003, 000,
000, 000, 001, 000, 000, 000, 015, 000, 000, 000, 134, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 003, 000, 000, 000, 002, 000, 000, 000,
003, 012, 000, 000, 134, 000, 000, 000, 001, 000, 000, 000, 000, 000, 000,
000, 003, 000, 000, 000, 002, 000, 000, 000, 012, 003, 000, 000, 143, 000,
000, 000, 000, 000, 000, 000, 001, 000, 000, 000, 003, 000, 000, 000, 003,
000, 000, 000, 015, 000, 000, 000, 067, 079, 076, 079, 082, 000, 084, 069,
088, 067, 079, 079, 082, 068, 000, 083, 086, 095, 080, 079, 083, 073, 084,
073, 079, 078, 000, 171, 083, 072, 068, 082, 128, 001, 000, 000, 064, 000,
001, 000, 096, 000, 000, 000, 089, 000, 000, 004, 070, 142, 032, 000, 000,
000, 000, 000, 007, 000, 000, 000, 095, 000, 000, 003, 242, 016, 016, 000,
000, 000, 000, 000, 095, 000, 000, 003, 050, 016, 016, 000, 001, 000, 000,
000, 095, 000, 000, 003, 050, 016, 016, 000, 002, 000, 000, 000, 101, 000,
000, 003, 242, 032, 016, 000, 000, 000, 000, 000, 101, 000, 000, 003, 242,
032, 016, 000, 001, 000, 000, 000, 101, 000, 000, 003, 050, 032, 016, 000,
002, 000, 000, 000, 017, 000, 000, 008, 018, 032, 016, 000, 000, 000, 000,
000, 070, 030, 016, 000, 000, 000, 000, 000, 070, 142, 032, 000, 000, 000,
000, 000, 000, 000, 000, 000, 017, 000, 000, 008, 034, 032, 016, 000, 000,
000, 000, 000, 070, 030, 016, 000, 000, 000, 000, 000, 070, 142, 032, 000,
000, 000, 000, 000, 001, 000, 000, 000, 017, 000, 000, 008, 066, 032, 016,
000, 000, 000, 000, 000, 070, 030, 016, 000, 000, 000, 000, 000, 070, 142,
032, 000, 000, 000, 000, 000, 002, 000, 000, 000, 017, 000, 000, 008, 130,
032, 016, 000, 000, 000, 000, 000, 070, 030, 016, 000, 000, 000, 000, 000,
070, 142, 032, 000, 000, 000, 000, 000, 003, 000, 000, 000, 054, 000, 000,
005, 242, 032, 016, 000, 001, 000, 000, 000, 070, 030, 016, 000, 001, 000,
000, 000, 054, 000, 000, 005, 050, 032, 016, 000, 002, 000, 000, 000, 070,
016, 016, 000, 002, 000, 000, 000, 062, 000, 000, 001, 083, 084, 065, 084,
116, 000, 000, 000, 007, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 006, 000, 000, 000, 004, 000, 000, 000, 000, 000, 000, 000, 000, 000,
002, 000, 000, 000, 101, 000, 000, 003, 194, 032, 016, 000, 002, 000, 000,
000, 103, 000, 000, 004, 242, 032, 016, 000, 003, 000, 000, 000, 001, 000,
000, 000, 054, 000, 000, 006, 242, 032, 016, 000, 000, 000, 000, 000, 070,
142, 032, 000, 000, 000, 000, 000, 000, 000, 000, 000, 017, 032, 000, 008,
130, 032, 016, 000, 001, 000, 000, 000, 070, 030, 016, 000, 000, 000, 000,
000, 070, 142, 032, 000, 000, 000, 000, 000, 002, 000, 000, 000, 054, 000,
000, 008, 114, 032, 016, 000, 001, 000, 000, 000, 002, 064, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
054, 000, 000, 005, 050, 032, 016, 000, 002, 000, 000, 000, 070, 016, 016,
000, 001, 000, 000, 000, 054, 000, 000, 005, 194, 032, 016, 000, 002, 000,
000, 000, 006, 020, 016, 000, 002, 000, 000, 000, 017, 000, 000, 008, 018,
032, 016, 000, 003, 000, 000, 000, 070, 030, 016, 000, 000, 000, 000, 000,
070, 142, 032, 000, 000, 000, 000, 000, 003, 000, 000, 000, 017, 000, 000,
008, 034, 032, 016, 000, 003, 000, 000, 000, 070, 030, 016, 000, 000, 000,
000, 000, 070, 142, 032, 000, 000, 000, 000, 000, 004, 000, 000, 000, 017,
000, 000, 008, 066, 032, 016, 000, 003, 000, 000, 000, 070, 030, 016, 000,
000, 000, 000, 000, 070, 142, 032, 000, 000, 000, 000, 000, 005, 000, 000,
000, 017, 000, 000, 008, 130, 032, 016, 000, 003, 000, 000, 000, 070, 030,
016, 000, 000, 000, 000, 000, 070, 142, 032, 000, 000, 000, 000, 000, 006,
000, 000, 000, 062, 000, 000, 001, 083, 084, 065, 084, 116, 000, 000, 000,
010, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 008, 000, 000,
000, 005, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 001, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 004, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 083, 001, 000, 000,
000, 000, 000, 000, 032, 005, 000, 000, 068, 088, 066, 067, 202, 191, 040,
066, 221, 130, 036, 107, 250, 175, 109, 048, 201, 077, 253, 112, 001, 000,
000, 000, 032, 005, 000, 000, 005, 000, 000, 000, 052, 000, 000, 000, 068,
002, 000, 000, 196, 002, 000, 000, 248, 002, 000, 000, 164, 004, 000, 000,
082, 068, 069, 070, 008, 002, 000, 000, 001, 000, 000, 000, 248, 000, 000,
000, 005, 000, 000, 000, 028, 000, 000, 000, 000, 004, 255, 255, 000, 001,
000, 000, 212, 001, 000, 000, 188, 000, 000, 000, 003, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
001, 000, 000, 000, 001, 000, 000, 000, 203, 000, 000, 000, 003, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 001, 000,
000, 000, 001, 000, 000, 000, 001, 000, 000, 000, 219, 000, 000, 000, 002,
000, 000, 000, 005, 000, 000, 000, 004, 000, 000, 000, 255, 255, 255, 255,
000, 000, 000, 000, 001, 000, 000, 000, 013, 000, 000, 000, 227, 000, 000,
000, 002, 000, 000, 000, 005, 000, 000, 000, 004, 000, 000, 000, 255, 255,
255, 255, 001, 000, 000, 000, 001, 000, 000, 000, 013, 000, 000, 000, 236,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 001, 000, 000, 000, 000, 000, 000,
000, 084, 101, 120, 116, 117, 114, 101, 083, 097, 109, 112, 108, 101, 114,
000, 084, 101, 120, 116, 117, 114, 101, 050, 083, 097, 109, 112, 108, 101,
114, 000, 084, 101, 120, 116, 117, 114, 101, 000, 084, 101, 120, 116, 117,
114, 101, 050, 000, 036, 071, 108, 111, 098, 097, 108, 115, 000, 171, 171,
171, 236, 000, 000, 000, 004, 000, 000, 000, 016, 001, 000, 000, 112, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 112, 001, 000, 000, 000,
000, 000, 000, 016, 000, 000, 000, 000, 000, 000, 000, 128, 001, 000, 000,
000, 000, 000, 000, 144, 001, 000, 000, 016, 000, 000, 000, 012, 000, 000,
000, 002, 000, 000, 000, 156, 001, 000, 000, 000, 000, 000, 000, 172, 001,
000, 000, 032, 000, 000, 000, 016, 000, 000, 000, 000, 000, 000, 000, 128,
001, 000, 000, 000, 000, 000, 000, 182, 001, 000, 000, 048, 000, 000, 000,
064, 000, 000, 000, 000, 000, 000, 000, 196, 001, 000, 000, 000, 000, 000,
000, 068, 105, 102, 102, 117, 115, 101, 067, 111, 108, 111, 114, 000, 171,
171, 171, 001, 000, 003, 000, 001, 000, 004, 000, 000, 000, 000, 000, 000,
000, 000, 000, 070, 111, 103, 067, 111, 108, 111, 114, 000, 171, 171, 171,
001, 000, 003, 000, 001, 000, 003, 000, 000, 000, 000, 000, 000, 000, 000,
000, 070, 111, 103, 086, 101, 099, 116, 111, 114, 000, 087, 111, 114, 108,
100, 086, 105, 101, 119, 080, 114, 111, 106, 000, 003, 000, 003, 000, 004,
000, 004, 000, 000, 000, 000, 000, 000, 000, 000, 000, 077, 105, 099, 114,
111, 115, 111, 102, 116, 032, 040, 082, 041, 032, 072, 076, 083, 076, 032,
083, 104, 097, 100, 101, 114, 032, 067, 111, 109, 112, 105, 108, 101, 114,
032, 057, 046, 050, 057, 046, 057, 053, 050, 046, 051, 049, 049, 049, 000,
171, 171, 171, 073, 083, 071, 078, 120, 000, 000, 000, 004, 000, 000, 000,
008, 000, 000, 000, 104, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 003, 000, 000, 000, 000, 000, 000, 000, 015, 015, 000, 000, 104, 000,
000, 000, 001, 000, 000, 000, 000, 000, 000, 000, 003, 000, 000, 000, 001,
000, 000, 000, 015, 008, 000, 000, 110, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 003, 000, 000, 000, 002, 000, 000, 000, 003, 003, 000,
000, 110, 000, 000, 000, 001, 000, 000, 000, 000, 000, 000, 000, 003, 000,
000, 000, 002, 000, 000, 000, 012, 012, 000, 000, 067, 079, 076, 079, 082,
000, 084, 069, 088, 067, 079, 079, 082, 068, 000, 171, 079, 083, 071, 078,
044, 000, 000, 000, 001, 000, 000, 000, 008, 000, 000, 000, 032, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 003, 000, 000, 000, 000, 000,
000, 000, 015, 000, 000, 000, 083, 086, 095, 084, 097, 114, 103, 101, 116,
000, 171, 171, 083, 072, 068, 082, 164, 001, 000, 000, 064, 000, 000, 000,
105, 000, 000, 000, 089, 000, 000, 004, 070, 142, 032, 000, 000, 000, 000,
000, 002, 000, 000, 000, 090, 000, 000, 003, 000, 096, 016, 000, 000, 000,
000, 000, 090, 000, 000, 003, 000, 096, 016, 000, 001, 000, 000, 000, 088,
024, 000, 004, 000, 112, 016, 000, 000, 000, 000, 000, 085, 085, 000, 000,
088, 024, 000, 004, 000, 112, 016, 000, 001, 000, 000, 000, 085, 085, 000,
000, 098, 016, 000, 003, 242, 016, 016, 000, 000, 000, 000, 000, 098, 016,
000, 003, 130, 016, 016, 000, 001, 000, 000, 000, 098, 016, 000, 003, 050,
016, 016, 000, 002, 000, 000, 000, 098, 016, 000, 003, 194, 016, 016, 000,
002, 000, 000, 000, 101, 000, 000, 003, 242, 032, 016, 000, 000, 000, 000,
000, 104, 000, 000, 002, 002, 000, 000, 000, 069, 000, 000, 009, 242, 000,
016, 000, 000, 000, 000, 000, 230, 026, 016, 000, 002, 000, 000, 000, 070,
126, 016, 000, 001, 000, 000, 000, 000, 096, 016, 000, 001, 000, 000, 000,
056, 000, 000, 007, 242, 000, 016, 000, 000, 000, 000, 000, 070, 014, 016,
000, 000, 000, 000, 000, 070, 030, 016, 000, 000, 000, 000, 000, 069, 000,
000, 009, 242, 000, 016, 000, 001, 000, 000, 000, 070, 016, 016, 000, 002,
000, 000, 000, 070, 126, 016, 000, 000, 000, 000, 000, 000, 096, 016, 000,
000, 000, 000, 000, 056, 000, 000, 010, 242, 000, 016, 000, 001, 000, 000,
000, 070, 014, 016, 000, 001, 000, 000, 000, 002, 064, 000, 000, 000, 000,
000, 064, 000, 000, 000, 064, 000, 000, 000, 064, 000, 000, 128, 063, 056,
000, 000, 007, 242, 000, 016, 000, 000, 000, 000, 000, 070, 014, 016, 000,
000, 000, 000, 000, 070, 014, 016, 000, 001, 000, 000, 000, 050, 000, 000,
011, 114, 000, 016, 000, 001, 000, 000, 000, 070, 130, 032, 000, 000, 000,
000, 000, 001, 000, 000, 000, 246, 015, 016, 000, 000, 000, 000, 000, 070,
002, 016, 128, 065, 000, 000, 000, 000, 000, 000, 000, 050, 000, 000, 009,
114, 032, 016, 000, 000, 000, 000, 000, 246, 031, 016, 000, 001, 000, 000,
000, 070, 002, 016, 000, 001, 000, 000, 000, 070, 002, 016, 000, 000, 000,
000, 000, 054, 000, 000, 005, 130, 032, 016, 000, 000, 000, 000, 000, 058,
000, 016, 000, 000, 000, 000, 000, 062, 000, 000, 001, 083, 084, 065, 084,
116, 000, 000, 000, 009, 000, 000, 000, 002, 000, 000, 000, 000, 000, 000,
000, 005, 000, 000, 000, 003, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 001, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
002, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 001, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
007, 006, 000, 000, 000, 000, 000, 000, 068, 117, 097, 108, 084, 101, 120,
116, 117, 114, 101, 069, 102, 102, 101, 099, 116, 086, 101, 114, 116, 101,
120, 067, 111, 108, 111, 114, 000, 068, 117, 097, 108, 084, 101, 120, 116,
117, 114, 101, 080, 097, 115, 115, 086, 101, 114, 116, 101, 120, 067, 111,
108, 111, 114, 000, 001, 000, 000, 000, 002, 000, 000, 000, 000, 000, 000,
000, 216, 004, 000, 000, 068, 088, 066, 067, 221, 218, 181, 027, 102, 153,
040, 023, 032, 085, 170, 088, 038, 159, 029, 065, 001, 000, 000, 000, 216,
004, 000, 000, 005, 000, 000, 000, 052, 000, 000, 000, 148, 001, 000, 000,
028, 002, 000, 000, 192, 002, 000, 000, 092, 004, 000, 000, 082, 068, 069,
070, 088, 001, 000, 000, 001, 000, 000, 000, 072, 000, 000, 000, 001, 000,
000, 000, 028, 000, 000, 000, 000, 004, 254, 255, 000, 001, 000, 000, 036,
001, 000, 000, 060, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 001, 000, 000,
000, 000, 000, 000, 000, 036, 071, 108, 111, 098, 097, 108, 115, 000, 171,
171, 171, 060, 000, 000, 000, 004, 000, 000, 000, 096, 000, 000, 000, 112,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 192, 000, 000, 000,
000, 000, 000, 000, 016, 000, 000, 000, 002, 000, 000, 000, 208, 000, 000,
000, 000, 000, 000, 000, 224, 000, 000, 000, 016, 000, 000, 000, 012, 000,
000, 000, 000, 000, 000, 000, 236, 000, 000, 000, 000, 000, 000, 000, 252,
000, 000, 000, 032, 000, 000, 000, 016, 000, 000, 000, 002, 000, 000, 000,
208, 000, 000, 000, 000, 000, 000, 000, 006, 001, 000, 000, 048, 000, 000,
000, 064, 000, 000, 000, 002, 000, 000, 000, 020, 001, 000, 000, 000, 000,
000, 000, 068, 105, 102, 102, 117, 115, 101, 067, 111, 108, 111, 114, 000,
171, 171, 171, 001, 000, 003, 000, 001, 000, 004, 000, 000, 000, 000, 000,
000, 000, 000, 000, 070, 111, 103, 067, 111, 108, 111, 114, 000, 171, 171,
171, 001, 000, 003, 000, 001, 000, 003, 000, 000, 000, 000, 000, 000, 000,
000, 000, 070, 111, 103, 086, 101, 099, 116, 111, 114, 000, 087, 111, 114,
108, 100, 086, 105, 101, 119, 080, 114, 111, 106, 000, 003, 000, 003, 000,
004, 000, 004, 000, 000, 000, 000, 000, 000, 000, 000, 000, 077, 105, 099,
114, 111, 115, 111, 102, 116, 032, 040, 082, 041, 032, 072, 076, 083, 076,
032, 083, 104, 097, 100, 101, 114, 032, 067, 111, 109, 112, 105, 108, 101,
114, 032, 057, 046, 050, 057, 046, 057, 053, 050, 046, 051, 049, 049, 049,
000, 171, 171, 171, 073, 083, 071, 078, 128, 000, 000, 000, 004, 000, 000,
000, 008, 000, 000, 000, 104, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 003, 000, 000, 000, 000, 000, 000, 000, 015, 015, 000, 000, 113,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 003, 000, 000, 000,
001, 000, 000, 000, 003, 003, 000, 000, 113, 000, 000, 000, 001, 000, 000,
000, 000, 000, 000, 000, 003, 000, 000, 000, 002, 000, 000, 000, 003, 003,
000, 000, 122, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 003,
000, 000, 000, 003, 000, 000, 000, 015, 015, 000, 000, 080, 079, 083, 073,
084, 073, 079, 078, 000, 084, 069, 088, 067, 079, 079, 082, 068, 000, 067,
079, 076, 079, 082, 000, 079, 083, 071, 078, 156, 000, 000, 000, 005, 000,
000, 000, 008, 000, 000, 000, 128, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 003, 000, 000, 000, 000, 000, 000, 000, 015, 000, 000, 000,
128, 000, 000, 000, 001, 000, 000, 000, 000, 000, 000, 000, 003, 000, 000,
000, 001, 000, 000, 000, 015, 000, 000, 000, 134, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 003, 000, 000, 000, 002, 000, 000, 000, 003,
012, 000, 000, 134, 000, 000, 000, 001, 000, 000, 000, 000, 000, 000, 000,
003, 000, 000, 000, 002, 000, 000, 000, 012, 003, 000, 000, 143, 000, 000,
000, 000, 000, 000, 000, 001, 000, 000, 000, 003, 000, 000, 000, 003, 000,
000, 000, 015, 000, 000, 000, 067, 079, 076, 079, 082, 000, 084, 069, 088,
067, 079, 079, 082, 068, 000, 083, 086, 095, 080, 079, 083, 073, 084, 073,
079, 078, 000, 171, 083, 072, 068, 082, 148, 001, 000, 000, 064, 000, 001,
000, 101, 000, 000, 000, 089, 000, 000, 004, 070, 142, 032, 000, 000, 000,
000, 000, 007, 000, 000, 000, 095, 000, 000, 003, 242, 016, 016, 000, 000,
000, 000, 000, 095, 000, 000, 003, 050, 016, 016, 000, 001, 000, 000, 000,
095, 000, 000, 003, 050, 016, 016, 000, 002, 000, 000, 000, 095, 000, 000,
003, 242, 016, 016, 000, 003, 000, 000, 000, 101, 000, 000, 003, 242, 032,
016, 000, 000, 000, 000, 000, 101, 000, 000, 003, 242, 032, 016, 000, 001,
000, 000, 000, 101, 000, 000, 003, 050, 032, 016, 000, 002, 000, 000, 000,
101, 000, 000, 003, 194, 032, 016, 000, 002, 000, 000, 000, 103, 000, 000,
004, 242, 032, 016, 000, 003, 000, 000, 000, 001, 000, 000, 000, 056, 000,
000, 008, 242, 032, 016, 000, 000, 000, 000, 000, 070, 030, 016, 000, 003,
000, 000, 000, 070, 142, 032, 000, 000, 000, 000, 000, 000, 000, 000, 000,
017, 032, 000, 008, 130, 032, 016, 000, 001, 000, 000, 000, 070, 030, 016,
000, 000, 000, 000, 000, 070, 142, 032, 000, 000, 000, 000, 000, 002, 000,
000, 000, 054, 000, 000, 008, 114, 032, 016, 000, 001, 000, 000, 000, 002,
064, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 054, 000, 000, 005, 050, 032, 016, 000, 002, 000, 000,
000, 070, 016, 016, 000, 001, 000, 000, 000, 054, 000, 000, 005, 194, 032,
016, 000, 002, 000, 000, 000, 006, 020, 016, 000, 002, 000, 000, 000, 017,
000, 000, 008, 018, 032, 016, 000, 003, 000, 000, 000, 070, 030, 016, 000,
000, 000, 000, 000, 070, 142, 032, 000, 000, 000, 000, 000, 003, 000, 000,
000, 017, 000, 000, 008, 034, 032, 016, 000, 003, 000, 000, 000, 070, 030,
016, 000, 000, 000, 000, 000, 070, 142, 032, 000, 000, 000, 000, 000, 004,
000, 000, 000, 017, 000, 000, 008, 066, 032, 016, 000, 003, 000, 000, 000,
070, 030, 016, 000, 000, 000, 000, 000, 070, 142, 032, 000, 000, 000, 000,
000, 005, 000, 000, 000, 017, 000, 000, 008, 130, 032, 016, 000, 003, 000,
000, 000, 070, 030, 016, 000, 000, 000, 000, 000, 070, 142, 032, 000, 000,
000, 000, 000, 006, 000, 000, 000, 062, 000, 000, 001, 083, 084, 065, 084,
116, 000, 000, 000, 010, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 009, 000, 000, 000, 006, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 001, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 002, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 003, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
204, 000, 000, 000, 000, 000, 000, 000, 160, 002, 000, 000, 068, 088, 066,
067, 029, 076, 118, 093, 197, 015, 041, 178, 119, 144, 245, 077, 096, 029,
105, 032, 001, 000, 000, 000, 160, 002, 000, 000, 005, 000, 000, 000, 052,
000, 000, 000, 224, 000, 000, 000, 084, 001, 000, 000, 136, 001, 000, 000,
036, 002, 000, 000, 082, 068, 069, 070, 164, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 002, 000, 000, 000, 028, 000, 000, 000, 000, 004,
255, 255, 000, 001, 000, 000, 115, 000, 000, 000, 092, 000, 000, 000, 003,
119, 011, 000, 000, 000, 000, 000, 000, 032, 005, 000, 000, 068, 088, 066,
067, 202, 191, 040, 066, 221, 130, 036, 107, 250, 175, 109, 048, 201, 077,
253, 112, 001, 000, 000, 000, 032, 005, 000, 000, 005, 000, 000, 000, 052,
000, 000, 000, 068, 002, 000, 000, 196, 002, 000, 000, 248, 002, 000, 000,
164, 004, 000, 000, 082, 068, 069, 070, 008, 002, 000, 000, 001, 000, 000,
000, 248, 000, 000, 000, 005, 000, 000, 000, 028, 000, 000, 000, 000, 004,
255, 255, 000, 001, 000, 000, 212, 001, 000, 000, 188, 000, 000, 000, 003,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 001, 000, 000, 000, 001, 000, 000, 000, 107, 000, 000,
000, 002, 000, 000, 000, 005, 000, 000, 000, 004, 000, 000, 000, 255, 255,
255, 255, 000, 000, 000, 000, 001, 000, 000, 000, 013, 000, 000, 000, 084,
101, 120, 116, 117, 114, 101, 083, 097, 109, 112, 108, 101, 114, 000, 084,
101, 120, 116, 117, 114, 101, 000, 077, 105, 099, 114, 111, 115, 111, 102,
116, 032, 040, 082, 041, 032, 072, 076, 083, 076, 032, 083, 104, 097, 100,
101, 114, 032, 067, 111, 109, 112, 105, 108, 101, 114, 032, 057, 046, 050,
057, 046, 057, 053, 050, 046, 051, 049, 049, 049, 000, 073, 083, 071, 078,
108, 000, 000, 000, 003, 000, 000, 000, 008, 000, 000, 000, 080, 000, 000,
000, 000, 000, 000, 000, 001, 000, 000, 000, 003, 000, 000, 000, 000, 000,
000, 000, 015, 000, 000, 000, 092, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 003, 000, 000, 000, 001, 000, 000, 000, 015, 015, 000, 000,
098, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 003, 000, 000,
000, 002, 000, 000, 000, 003, 003, 000, 000, 083, 086, 095, 080, 079, 083,
073, 084, 073, 079, 078, 000, 067, 079, 076, 079, 082, 000, 084, 069, 088,
067, 079, 079, 082, 068, 000, 171, 079, 083, 071, 078, 044, 000, 000, 000,
001, 000, 000, 000, 008, 000, 000, 000, 032, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 003, 000, 000, 000, 000, 000, 000, 000, 015, 000,
000, 000, 083, 086, 095, 084, 097, 114, 103, 101, 116, 000, 171, 171, 083,
072, 068, 082, 148, 000, 000, 000, 064, 000, 000, 000, 037, 000, 000, 000,
090, 000, 000, 003, 000, 096, 016, 000, 000, 000, 000, 000, 088, 024, 000,
004, 000, 112, 016, 000, 000, 000, 000, 000, 085, 085, 000, 000, 098, 016,
000, 003, 242, 016, 016, 000, 001, 000, 000, 000, 098, 016, 000, 003, 050,
016, 016, 000, 002, 000, 000, 000, 101, 000, 000, 003, 242, 032, 016, 000,
000, 000, 000, 000, 104, 000, 000, 002, 001, 000, 000, 000, 069, 000, 000,
009, 242, 000, 016, 000, 000, 000, 000, 000, 070, 016, 016, 000, 002, 000,
000, 000, 070, 126, 016, 000, 000, 000, 000, 000, 000, 096, 016, 000, 000,
000, 000, 000, 056, 000, 000, 007, 242, 032, 016, 000, 000, 000, 000, 000,
070, 014, 016, 000, 000, 000, 000, 000, 070, 030, 016, 000, 001, 000, 000,
000, 062, 000, 000, 001, 083, 084, 065, 084, 116, 000, 000, 000, 003, 000,
000, 000, 001, 000, 000, 000, 000, 000, 000, 000, 003, 000, 000, 000, 001,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 001, 000, 000, 000,
000, 000, 000, 000, 001, 000, 000, 000, 001, 000, 000, 000, 203, 000, 000,
000, 003, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 001, 000, 000, 000, 001, 000, 000, 000, 001, 000, 000, 000, 219,
000, 000, 000, 002, 000, 000, 000, 005, 000, 000, 000, 004, 000, 000, 000,
255, 255, 255, 255, 000, 000, 000, 000, 001, 000, 000, 000, 013, 000, 000,
000, 227, 000, 000, 000, 002, 000, 000, 000, 005, 000, 000, 000, 004, 000,
000, 000, 255, 255, 255, 255, 001, 000, 000, 000, 001, 000, 000, 000, 013,
000, 000, 000, 236, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 001, 000, 000,
000, 000, 000, 000, 000, 084, 101, 120, 116, 117, 114, 101, 083, 097, 109,
112, 108, 101, 114, 000, 084, 101, 120, 116, 117, 114, 101, 050, 083, 097,
109, 112, 108, 101, 114, 000, 084, 101, 120, 116, 117, 114, 101, 000, 084,
101, 120, 116, 117, 114, 101, 050, 000, 036, 071, 108, 111, 098, 097, 108,
115, 000, 171, 171, 171, 236, 000, 000, 000, 004, 000, 000, 000, 016, 001,
000, 000, 112, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 112,
001, 000, 000, 000, 000, 000, 000, 016, 000, 000, 000, 000, 000, 000, 000,
128, 001, 000, 000, 000, 000, 000, 000, 144, 001, 000, 000, 016, 000, 000,
000, 012, 000, 000, 000, 002, 000, 000, 000, 156, 001, 000, 000, 000, 000,
000, 000, 172, 001, 000, 000, 032, 000, 000, 000, 016, 000, 000, 000, 000,
000, 000, 000, 128, 001, 000, 000, 000, 000, 000, 000, 182, 001, 000, 000,
048, 000, 000, 000, 064, 000, 000, 000, 000, 000, 000, 000, 196, 001, 000,
000, 000, 000, 000, 000, 068, 105, 102, 102, 117, 115, 101, 067, 111, 108,
111, 114, 000, 171, 171, 171, 001, 000, 003, 000, 001, 000, 004, 000, 000,
000, 000, 000, 000, 000, 000, 000, 070, 111, 103, 067, 111, 108, 111, 114,
000, 171, 171, 171, 001, 000, 003, 000, 001, 000, 003, 000, 000, 000, 000,
000, 000, 000, 000, 000, 070, 111, 103, 086, 101, 099, 116, 111, 114, 000,
087, 111, 114, 108, 100, 086, 105, 101, 119, 080, 114, 111, 106, 000, 003,
000, 003, 000, 004, 000, 004, 000, 000, 000, 000, 000, 000, 000, 000, 000,
077, 105, 099, 114, 111, 115, 111, 102, 116, 032, 040, 082, 041, 032, 072,
076, 083, 076, 032, 083, 104, 097, 100, 101, 114, 032, 067, 111, 109, 112,
105, 108, 101, 114, 032, 057, 046, 050, 057, 046, 057, 053, 050, 046, 051,
049, 049, 049, 000, 171, 171, 171, 073, 083, 071, 078, 120, 000, 000, 000,
004, 000, 000, 000, 008, 000, 000, 000, 104, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 003, 000, 000, 000, 000, 000, 000, 000, 015, 015,
000, 000, 104, 000, 000, 000, 001, 000, 000, 000, 000, 000, 000, 000, 003,
000, 000, 000, 001, 000, 000, 000, 015, 008, 000, 000, 110, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 003, 000, 000, 000, 002, 000, 000,
000, 003, 003, 000, 000, 110, 000, 000, 000, 001, 000, 000, 000, 000, 000,
000, 000, 003, 000, 000, 000, 002, 000, 000, 000, 012, 012, 000, 000, 067,
079, 076, 079, 082, 000, 084, 069, 088, 067, 079, 079, 082, 068, 000, 171,
079, 083, 071, 078, 044, 000, 000, 000, 001, 000, 000, 000, 008, 000, 000,
000, 032, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 003, 000,
000, 000, 000, 000, 000, 000, 015, 000, 000, 000, 083, 086, 095, 084, 097,
114, 103, 101, 116, 000, 171, 171, 083, 072, 068, 082, 164, 001, 000, 000,
064, 000, 000, 000, 105, 000, 000, 000, 089, 000, 000, 004, 070, 142, 032,
000, 000, 000, 000, 000, 002, 000, 000, 000, 090, 000, 000, 003, 000, 096,
016, 000, 000, 000, 000, 000, 090, 000, 000, 003, 000, 096, 016, 000, 001,
000, 000, 000, 088, 024, 000, 004, 000, 112, 016, 000, 000, 000, 000, 000,
085, 085, 000, 000, 088, 024, 000, 004, 000, 112, 016, 000, 001, 000, 000,
000, 085, 085, 000, 000, 098, 016, 000, 003, 242, 016, 016, 000, 000, 000,
000, 000, 098, 016, 000, 003, 130, 016, 016, 000, 001, 000, 000, 000, 098,
016, 000, 003, 050, 016, 016, 000, 002, 000, 000, 000, 098, 016, 000, 003,
194, 016, 016, 000, 002, 000, 000, 000, 101, 000, 000, 003, 242, 032, 016,
000, 000, 000, 000, 000, 104, 000, 000, 002, 002, 000, 000, 000, 069, 000,
000, 009, 242, 000, 016, 000, 000, 000, 000, 000, 230, 026, 016, 000, 002,
000, 000, 000, 070, 126, 016, 000, 001, 000, 000, 000, 000, 096, 016, 000,
001, 000, 000, 000, 056, 000, 000, 007, 242, 000, 016, 000, 000, 000, 000,
000, 070, 014, 016, 000, 000, 000, 000, 000, 070, 030, 016, 000, 000, 000,
000, 000, 069, 000, 000, 009, 242, 000, 016, 000, 001, 000, 000, 000, 070,
016, 016, 000, 002, 000, 000, 000, 070, 126, 016, 000, 000, 000, 000, 000,
000, 096, 016, 000, 000, 000, 000, 000, 056, 000, 000, 010, 242, 000, 016,
000, 001, 000, 000, 000, 070, 014, 016, 000, 001, 000, 000, 000, 002, 064,
000, 000, 000, 000, 000, 064, 000, 000, 000, 064, 000, 000, 000, 064, 000,
000, 128, 063, 056, 000, 000, 007, 242, 000, 016, 000, 000, 000, 000, 000,
070, 014, 016, 000, 000, 000, 000, 000, 070, 014, 016, 000, 001, 000, 000,
000, 050, 000, 000, 011, 114, 000, 016, 000, 001, 000, 000, 000, 070, 130,
032, 000, 000, 000, 000, 000, 001, 000, 000, 000, 246, 015, 016, 000, 000,
000, 000, 000, 070, 002, 016, 128, 065, 000, 000, 000, 000, 000, 000, 000,
050, 000, 000, 009, 114, 032, 016, 000, 000, 000, 000, 000, 246, 031, 016,
000, 001, 000, 000, 000, 070, 002, 016, 000, 001, 000, 000, 000, 070, 002,
016, 000, 000, 000, 000, 000, 054, 000, 000, 005, 130, 032, 016, 000, 000,
000, 000, 000, 058, 000, 016, 000, 000, 000, 000, 000, 062, 000, 000, 001,
083, 084, 065, 084, 116, 000, 000, 000, 009, 000, 000, 000, 002, 000, 000,
000, 000, 000, 000, 000, 005, 000, 000, 000, 003, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 001, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 002, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 001, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 091, 016, 000, 000, 000, 000, 000, 000, 068, 117, 097,
108, 084, 101, 120, 116, 117, 114, 101, 069, 102, 102, 101, 099, 116, 078,
111, 070, 111, 103, 000, 068, 117, 097, 108, 084, 101, 120, 116, 117, 114,
101, 080, 097, 115, 115, 078, 111, 070, 111, 103, 000, 001, 000, 000, 000,
002, 000, 000, 000, 000, 000, 000, 000, 068, 004, 000, 000, 068, 088, 066,
067, 152, 019, 219, 202, 244, 199, 009, 030, 030, 037, 024, 061, 093, 176,
254, 091, 001, 000, 000, 000, 068, 004, 000, 000, 005, 000, 000, 000, 052,
000, 000, 000, 148, 001, 000, 000, 000, 002, 000, 000, 140, 002, 000, 000,
200, 003, 000, 000, 082, 068, 069, 070, 088, 001, 000, 000, 001, 000, 000,
000, 072, 000, 000, 000, 001, 000, 000, 000, 028, 000, 000, 000, 000, 004,
254, 255, 000, 001, 000, 000, 036, 001, 000, 000, 060, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 088, 004, 000, 000, 000, 000,
000, 000, 004, 000, 000, 000, 064, 000, 000, 000, 000, 000, 000, 000, 001,
000, 000, 000, 255, 255, 255, 255, 000, 000, 000, 000, 050, 000, 000, 000,
022, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 104, 000, 000, 000, 076, 000,
000, 000, 000, 000, 000, 000, 255, 255, 255, 255, 000, 000, 000, 000, 153,
000, 000, 000, 125, 000, 000, 000, 000, 000, 000, 000, 255, 255, 255, 255,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 001, 000, 000,
000, 000, 000, 000, 000, 168, 000, 000, 000, 001, 000, 000, 000, 000, 000,
000, 000, 178, 000, 000, 000, 003, 000, 000, 000, 000, 000, 000, 000, 008,
000, 000, 000, 000, 000, 000, 000, 001, 000, 000, 000, 192, 000, 000, 000,
006, 000, 000, 000, 000, 000, 000, 000, 007, 000, 000, 000, 080, 004, 000,
000, 007, 000, 000, 000, 000, 000, 000, 000, 007, 000, 000, 000, 252, 006,
000, 000, 000, 000, 001, 000, 000, 000, 000, 000, 000, 000, 036, 071, 108,
111, 098, 097, 108, 115, 000, 171, 171, 171, 060, 000, 000, 000, 004, 000,
000, 000, 096, 000, 000, 000, 112, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 192, 000, 000, 000, 000, 000, 000, 000, 016, 000, 000, 000,
002, 000, 000, 000, 208, 000, 000, 000, 000, 000, 000, 000, 224, 000, 000,
000, 016, 000, 000, 000, 012, 000, 000, 000, 000, 000, 000, 000, 236, 000,
000, 000, 000, 000, 000, 000, 252, 000, 000, 000, 032, 000, 000, 000, 016,
000, 000, 000, 000, 000, 000, 000, 208, 000, 000, 000, 000, 000, 000, 000,
006, 001, 000, 000, 048, 000, 000, 000, 064, 000, 000, 000, 002, 000, 000,
000, 020, 001, 000, 000, 000, 000, 000, 000, 068, 105, 102, 102, 117, 115,
101, 067, 111, 108, 111, 114, 000, 171, 171, 171, 001, 000, 003, 000, 001,
000, 004, 000, 000, 000, 000, 000, 000, 000, 000, 000, 070, 111, 103, 067,
111, 108, 111, 114, 000, 171, 171, 171, 001, 000, 003, 000, 001, 000, 003,
000, 000, 000, 000, 000, 000, 000, 000, 000, 070, 111, 103, 086, 101, 099,
116, 111, 114, 000, 087, 111, 114, 108, 100, 086, 105, 101, 119, 080, 114,
111, 106, 000, 003, 000, 003, 000, 004, 000, 004, 000, 000, 000, 000, 000,
000, 000, 000, 000, 077, 105, 099, 114, 111, 115, 111, 102, 116, 032, 040,
082, 041, 032, 072, 076, 083, 076, 032, 083, 104, 097, 100, 101, 114, 032,
067, 111, 109, 112, 105, 108, 101, 114, 032, 057, 046, 050, 057, 046, 057,
053, 050, 046, 051, 049, 049, 049, 000, 171, 171, 171, 073, 083, 071, 078,
100, 000, 000, 000, 003, 000, 000, 000, 008, 000, 000, 000, 080, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 003, 000, 000, 000, 000, 000,
000, 000, 015, 015, 000, 000, 089, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 003, 000, 000, 000, 001, 000, 000, 000, 003, 003, 000, 000,
089, 000, 000, 000, 001, 000, 000, 000, 000, 000, 000, 000, 003, 000, 000,
000, 002, 000, 000, 000, 003, 003, 000, 000, 080, 079, 083, 073, 084, 073,
079, 078, 000, 084, 069, 088, 067, 079, 079, 082, 068, 000, 171, 171, 079,
083, 071, 078, 132, 000, 000, 000, 004, 000, 000, 000, 008, 000, 000, 000,
104, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 003, 000, 000,
000, 000, 000, 000, 000, 015, 000, 000, 000, 110, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 003, 000, 000, 000, 001, 000, 000, 000, 003,
012, 000, 000, 110, 000, 000, 000, 001, 000, 000, 000, 000, 000, 000, 000,
003, 000, 000, 000, 001, 000, 000, 000, 012, 003, 000, 000, 119, 000, 000,
000, 000, 000, 000, 000, 001, 000, 000, 000, 003, 000, 000, 000, 002, 000,
000, 000, 015, 000, 000, 000, 067, 079, 076, 079, 082, 000, 084, 069, 088,
067, 079, 079, 082, 068, 000, 083, 086, 095, 080, 111, 115, 105, 116, 105,
111, 110, 000, 171, 083, 072, 068, 082, 052, 001, 000, 000, 064, 000, 001,
000, 077, 000, 000, 000, 089, 000, 000, 004, 070, 142, 032, 000, 000, 000,
000, 000, 007, 000, 000, 000, 095, 000, 000, 003, 242, 016, 016, 000, 000,
000, 000, 000, 095, 000, 000, 003, 050, 016, 016, 000, 001, 000, 000, 000,
095, 000, 000, 003, 050, 016, 016, 000, 002, 000, 000, 000, 101, 000, 000,
003, 242, 032, 016, 000, 000, 000, 000, 000, 101, 000, 000, 003, 050, 032,
016, 000, 001, 000, 000, 000, 101, 000, 000, 003, 194, 032, 016, 000, 001,
000, 000, 000, 103, 000, 000, 004, 242, 032, 016, 000, 002, 000, 000, 000,
001, 000, 000, 000, 054, 000, 000, 006, 242, 032, 016, 000, 000, 000, 000,
000, 070, 142, 032, 000, 000, 000, 000, 000, 000, 000, 000, 000, 054, 000,
000, 005, 050, 032, 016, 000, 001, 000, 000, 000, 070, 016, 016, 000, 001,
000, 000, 000, 054, 000, 000, 005, 194, 032, 016, 000, 001, 000, 000, 000,
006, 020, 016, 000, 002, 000, 000, 000, 017, 000, 000, 008, 018, 032, 016,
000, 002, 000, 000, 000, 070, 030, 016, 000, 000, 000, 000, 000, 070, 142,
032, 000, 000, 000, 000, 000, 003, 000, 000, 000, 017, 000, 000, 008, 034,
032, 016, 000, 002, 000, 000, 000, 070, 030, 016, 000, 000, 000, 000, 000,
070, 142, 032, 000, 000, 000, 000, 000, 004, 000, 000, 000, 017, 000, 000,
008, 066, 032, 016, 000, 002, 000, 000, 000, 070, 030, 016, 000, 000, 000,
000, 000, 070, 142, 032, 000, 000, 000, 000, 000, 005, 000, 000, 000, 017,
000, 000, 008, 130, 032, 016, 000, 002, 000, 000, 000, 070, 030, 016, 000,
000, 000, 000, 000, 070, 142, 032, 000, 000, 000, 000, 000, 006, 000, 000,
000, 062, 000, 000, 001, 083, 084, 065, 084, 116, 000, 000, 000, 008, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 007, 000, 000, 000, 004,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 001, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 003,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 191, 021, 000, 000, 000, 000,
000, 000, 128, 003, 000, 000, 068, 088, 066, 067, 167, 023, 244, 112, 122,
201, 076, 085, 037, 160, 083, 043, 154, 011, 173, 057, 001, 000, 000, 000,
128, 003, 000, 000, 005, 000, 000, 000, 052, 000, 000, 000, 060, 001, 000,
000, 164, 001, 000, 000, 216, 001, 000, 000, 004, 003, 000, 000, 082, 068,
069, 070, 000, 001, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 004,
000, 000, 000, 028, 000, 000, 000, 000, 004, 255, 255, 000, 001, 000, 000,
204, 000, 000, 000, 156, 000, 000, 000, 003, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 001, 000,
000, 000, 001, 000, 000, 000, 171, 000, 000, 000, 003, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 001, 000, 000, 000,
001, 000, 000, 000, 001, 000, 000, 000, 187, 000, 000, 000, 002, 000, 000,
000, 005, 000, 000, 000, 004, 000, 000, 000, 255, 255, 255, 255, 000, 000,
000, 000, 001, 000, 000, 000, 013, 000, 000, 000, 195, 000, 000, 000, 002,
000, 000, 000, 005, 000, 000, 000, 004, 000, 000, 000, 255, 255, 255, 255,
001, 000, 000, 000, 001, 000, 000, 000, 013, 000, 000, 000, 084, 101, 120,
116, 117, 114, 101, 083, 097, 109, 112, 108, 101, 114, 000, 084, 101, 120,
116, 117, 114, 101, 050, 083, 097, 109, 112, 108, 101, 114, 000, 084, 101,
120, 116, 117, 114, 101, 000, 084, 101, 120, 116, 117, 114, 101, 050, 000,
077, 105, 099, 114, 111, 115, 111, 102, 116, 032, 040, 082, 041, 032, 072,
076, 083, 076, 032, 083, 104, 097, 100, 101, 114, 032, 067, 111, 109, 112,
105, 108, 101, 114, 032, 057, 046, 050, 057, 046, 057, 053, 050, 046, 051,
049, 049, 049, 000, 171, 171, 171, 073, 083, 071, 078, 096, 000, 000, 000,
003, 000, 000, 000, 008, 000, 000, 000, 080, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 003, 000, 000, 000, 000, 000, 000, 000, 015, 015,
000, 000, 086, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 003,
000, 000, 000, 001, 000, 000, 000, 003, 003, 000, 000, 086, 000, 000, 000,
001, 000, 000, 000, 000, 000, 000, 000, 003, 000, 000, 000, 001, 000, 000,
000, 012, 012, 000, 000, 067, 079, 076, 079, 082, 000, 084, 069, 088, 067,
079, 079, 082, 068, 000, 171, 079, 083, 071, 078, 044, 000, 000, 000, 001,
000, 000, 000, 008, 000, 000, 000, 032, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 003, 000, 000, 000, 000, 000, 000, 000, 015, 000, 000,
000, 083, 086, 095, 084, 097, 114, 103, 101, 116, 000, 171, 171, 083, 072,
068, 082, 036, 001, 000, 000, 064, 000, 000, 000, 073, 000, 000, 000, 090,
000, 000, 003, 000, 096, 016, 000, 000, 000, 000, 000, 090, 000, 000, 003,
000, 096, 016, 000, 001, 000, 000, 000, 088, 024, 000, 004, 000, 112, 016,
000, 000, 000, 000, 000, 085, 085, 000, 000, 088, 024, 000, 004, 000, 112,
016, 000, 001, 000, 000, 000, 085, 085, 000, 000, 098, 016, 000, 003, 242,
016, 016, 000, 000, 000, 000, 000, 098, 016, 000, 003, 050, 016, 016, 000,
001, 000, 000, 000, 098, 016, 000, 003, 194, 016, 016, 000, 001, 000, 000,
000, 101, 000, 000, 003, 242, 032, 016, 000, 000, 000, 000, 000, 104, 000,
000, 002, 002, 000, 000, 000, 069, 000, 000, 009, 242, 000, 016, 000, 000,
000, 000, 000, 230, 026, 016, 000, 001, 000, 000, 000, 070, 126, 016, 000,
001, 000, 000, 000, 000, 096, 016, 000, 001, 000, 000, 000, 056, 000, 000,
007, 242, 000, 016, 000, 000, 000, 000, 000, 070, 014, 016, 000, 000, 000,
000, 000, 070, 030, 016, 000, 000, 000, 000, 000, 069, 000, 000, 009, 242,
000, 016, 000, 001, 000, 000, 000, 070, 016, 016, 000, 001, 000, 000, 000,
070, 126, 016, 000, 000, 000, 000, 000, 000, 096, 016, 000, 000, 000, 000,
000, 056, 000, 000, 010, 242, 000, 016, 000, 001, 000, 000, 000, 070, 014,
016, 000, 001, 000, 000, 000, 002, 064, 000, 000, 000, 000, 000, 064, 000,
000, 000, 064, 000, 000, 000, 064, 000, 000, 128, 063, 056, 000, 000, 007,
242, 032, 016, 000, 000, 000, 000, 000, 070, 014, 016, 000, 000, 000, 000,
000, 070, 014, 016, 000, 001, 000, 000, 000, 062, 000, 000, 001, 083, 084,
065, 084, 116, 000, 000, 000, 006, 000, 000, 000, 002, 000, 000, 000, 000,
000, 000, 000, 004, 000, 000, 000, 003, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 001, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 002, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 015, 026, 000, 000, 000, 000, 000, 000, 068, 117, 097, 108, 084,
101, 120, 116, 117, 114, 101, 069, 102, 102, 101, 099, 116, 078, 111, 070,
111, 103, 086, 101, 114, 116, 101, 120, 067, 111, 108, 111, 114, 000, 068,
117, 097, 108, 084, 101, 120, 116, 117, 114, 101, 080, 097, 115, 115, 086,
101, 114, 116, 101, 120, 067, 111, 108, 111, 114, 078, 111, 070, 111, 103,
000, 001, 000, 000, 000, 002, 000, 000, 000, 000, 000, 000, 000, 116, 004,
000, 000, 068, 088, 066, 067, 121, 129, 155, 065, 177, 060, 180, 247, 183,
049, 028, 215, 179, 088, 233, 239, 001, 000, 000, 000, 116, 004, 000, 000,
005, 000, 000, 000, 052, 000, 000, 000, 148, 001, 000, 000, 028, 002, 000,
000, 168, 002, 000, 000, 248, 003, 000, 000, 082, 068, 069, 070, 088, 001,
000, 000, 001, 000, 000, 000, 072, 000, 000, 000, 001, 000, 000, 000, 028,
000, 000, 000, 000, 004, 254, 255, 000, 001, 000, 000, 036, 001, 000, 000,
060, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 001, 000, 000, 000, 000, 000,
000, 000, 036, 071, 108, 111, 098, 097, 108, 115, 000, 171, 171, 171, 060,
000, 000, 000, 004, 000, 000, 000, 096, 000, 000, 000, 112, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 192, 000, 000, 000, 000, 000, 000,
000, 016, 000, 000, 000, 002, 000, 000, 000, 208, 000, 000, 000, 000, 000,
000, 000, 224, 000, 000, 000, 016, 000, 000, 000, 012, 000, 000, 000, 000,
000, 000, 000, 236, 000, 000, 000, 000, 000, 000, 000, 252, 000, 000, 000,
032, 000, 000, 000, 016, 000, 000, 000, 000, 000, 000, 000, 208, 000, 000,
000, 000, 000, 000, 000, 006, 001, 000, 000, 048, 000, 000, 000, 064, 000,
000, 000, 002, 000, 000, 000, 020, 001, 000, 000, 000, 000, 000, 000, 068,
105, 102, 102, 117, 115, 101, 067, 111, 108, 111, 114, 000, 171, 171, 171,
001, 000, 003, 000, 001, 000, 004, 000, 000, 000, 000, 000, 000, 000, 000,
000, 070, 111, 103, 067, 111, 108, 111, 114, 000, 171, 171, 171, 001, 000,
003, 000, 001, 000, 003, 000, 000, 000, 000, 000, 000, 000, 000, 000, 070,
111, 103, 086, 101, 099, 116, 111, 114, 000, 087, 111, 114, 108, 100, 086,
105, 101, 119, 080, 114, 111, 106, 000, 003, 000, 003, 000, 004, 000, 004,
000, 000, 000, 000, 000, 000, 000, 000, 000, 077, 105, 099, 114, 111, 115,
111, 102, 116, 032, 040, 082, 041, 032, 072, 076, 083, 076, 032, 083, 104,
097, 100, 101, 114, 032, 067, 111, 109, 112, 105, 108, 101, 114, 032, 057,
046, 050, 057, 046, 057, 053, 050, 046, 051, 049, 049, 049, 000, 171, 171,
171, 073, 083, 071, 078, 128, 000, 000, 000, 004, 000, 000, 000, 008, 000,
000, 000, 104, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 003,
000, 000, 000, 000, 000, 000, 000, 015, 015, 000, 000, 113, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 003, 000, 000, 000, 001, 000, 000,
000, 003, 003, 000, 000, 113, 000, 000, 000, 001, 000, 000, 000, 000, 000,
000, 000, 003, 000, 000, 000, 002, 000, 000, 000, 003, 003, 000, 000, 122,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 003, 000, 000, 000,
003, 000, 000, 000, 015, 015, 000, 000, 080, 079, 083, 073, 084, 073, 079,
078, 000, 084, 069, 088, 067, 079, 079, 082, 068, 000, 067, 079, 076, 079,
082, 000, 079, 083, 071, 078, 132, 000, 000, 000, 004, 000, 000, 000, 008,
000, 000, 000, 104, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
003, 000, 000, 000, 000, 000, 000, 000, 015, 000, 000, 000, 110, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 003, 000, 000, 000, 001, 000,
000, 000, 003, 012, 000, 000, 110, 000, 000, 000, 001, 000, 000, 000, 000,
000, 000, 000, 003, 000, 000, 000, 001, 000, 000, 000, 012, 003, 000, 000,
119, 000, 000, 000, 000, 000, 000, 000, 001, 000, 000, 000, 003, 000, 000,
000, 002, 000, 000, 000, 015, 000, 000, 000, 067, 079, 076, 079, 082, 000,
084, 069, 088, 067, 079, 079, 082, 068, 000, 083, 086, 095, 080, 111, 115,
105, 116, 105, 111, 110, 000, 171, 083, 072, 068, 082, 072, 001, 000, 000,
064, 000, 001, 000, 082, 000, 000, 000, 089, 000, 000, 004, 070, 142, 032,
000, 000, 000, 000, 000, 007, 000, 000, 000, 095, 000, 000, 003, 242, 016,
016, 000, 000, 000, 000, 000, 095, 000, 000, 003, 050, 016, 016, 000, 001,
000, 000, 000, 095, 000, 000, 003, 050, 016, 016, 000, 002, 000, 000, 000,
095, 000, 000, 003, 242, 016, 016, 000, 003, 000, 000, 000, 101, 000, 000,
003, 242, 032, 016, 000, 000, 000, 000, 000, 101, 000, 000, 003, 050, 032,
016, 000, 001, 000, 000, 000, 101, 000, 000, 003, 194, 032, 016, 000, 001,
000, 000, 000, 103, 000, 000, 004, 242, 032, 016, 000, 002, 000, 000, 000,
001, 000, 000, 000, 056, 000, 000, 008, 242, 032, 016, 000, 000, 000, 000,
000, 070, 030, 016, 000, 003, 000, 000, 000, 070, 142, 032, 000, 000, 000,
000, 000, 000, 000, 000, 000, 054, 000, 000, 005, 050, 032, 016, 000, 001,
000, 000, 000, 070, 016, 016, 000, 001, 000, 000, 000, 054, 000, 000, 005,
194, 032, 016, 000, 001, 000, 000, 000, 006, 020, 016, 000, 002, 000, 000,
000, 017, 000, 000, 008, 018, 032, 016, 000, 002, 000, 000, 000, 070, 030,
016, 000, 000, 000, 000, 000, 070, 142, 032, 000, 000, 000, 000, 000, 003,
000, 000, 000, 017, 000, 000, 008, 034, 032, 016, 000, 002, 000, 000, 000,
070, 030, 016, 000, 000, 000, 000, 000, 070, 142, 032, 000, 000, 000, 000,
000, 004, 000, 000, 000, 017, 000, 000, 008, 066, 032, 016, 000, 002, 000,
000, 000, 070, 030, 016, 000, 000, 000, 000, 000, 070, 142, 032, 000, 000,
000, 000, 000, 005, 000, 000, 000, 017, 000, 000, 008, 130, 032, 016, 000,
002, 000, 000, 000, 070, 030, 016, 000, 000, 000, 000, 000, 070, 142, 032,
000, 000, 000, 000, 000, 006, 000, 000, 000, 062, 000, 000, 001, 083, 084,
065, 084, 116, 000, 000, 000, 008, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 008, 000, 000, 000, 005, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 001, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 002, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 233, 029, 000, 000, 000, 000, 000, 000, 128, 003, 000, 000, 068,
088, 066, 067, 167, 023, 244, 112, 122, 201, 076, 085, 037, 160, 083, 043,
154, 011, 173, 057, 001, 000, 000, 000, 128, 003, 000, 000, 005, 000, 000,
000, 052, 000, 000, 000, 060, 001, 000, 000, 164, 001, 000, 000, 216, 001,
000, 000, 004, 003, 000, 000, 082, 068, 069, 070, 000, 001, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 004, 000, 000, 000, 028, 000, 000, 000,
000, 004, 255, 255, 000, 001, 000, 000, 204, 000, 000, 000, 156, 000, 000,
000, 003, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 001, 000, 000, 000, 001, 000, 000, 000, 171,
000, 000, 000, 003, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 001, 000, 000, 000, 001, 000, 000, 000, 001, 000, 000,
000, 187, 000, 000, 000, 002, 000, 000, 000, 005, 000, 000, 000, 004, 000,
000, 000, 255, 255, 255, 255, 000, 000, 000, 000, 001, 000, 000, 000, 013,
000, 000, 000, 195, 000, 000, 000, 002, 000, 000, 000, 005, 000, 000, 000,
004, 000, 000, 000, 255, 255, 255, 255, 001, 000, 000, 000, 001, 000, 000,
000, 013, 000, 000, 000, 084, 101, 120, 116, 117, 114, 101, 083, 097, 109,
112, 108, 101, 114, 000, 084, 101, 120, 116, 117, 114, 101, 050, 083, 097,
109, 112, 108, 101, 114, 000, 084, 101, 120, 116, 117, 114, 101, 000, 084,
101, 120, 116, 117, 114, 101, 050, 000, 077, 105, 099, 114, 111, 115, 111,
102, 116, 032, 040, 082, 041, 032, 072, 076, 083, 076, 032, 083, 104, 097,
100, 101, 114, 032, 067, 111, 109, 112, 105, 108, 101, 114, 032, 057, 046,
050, 057, 046, 057, 053, 050, 046, 051, 049, 049, 049, 000, 171, 171, 171,
073, 083, 071, 078, 096, 000, 000, 000, 003, 000, 000, 000, 008, 000, 000,
000, 080, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 003, 000,
000, 000, 000, 000, 000, 000, 015, 015, 000, 000, 086, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 003, 000, 000, 000, 001, 000, 000, 000,
003, 003, 000, 000, 086, 000, 000, 000, 001, 000, 000, 000, 000, 000, 000,
000, 003, 000, 000, 000, 001, 000, 000, 000, 012, 012, 000, 000, 067, 079,
076, 079, 082, 000, 084, 069, 088, 067, 079, 079, 082, 068, 000, 171, 079,
083, 071, 078, 044, 000, 000, 000, 001, 000, 000, 000, 008, 000, 000, 000,
032, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 003, 000, 000,
000, 000, 000, 000, 000, 015, 000, 000, 000, 083, 086, 095, 084, 097, 114,
103, 101, 116, 000, 171, 171, 083, 072, 068, 082, 036, 001, 000, 000, 064,
000, 000, 000, 073, 000, 000, 000, 090, 000, 000, 003, 000, 096, 016, 000,
000, 000, 000, 000, 090, 000, 000, 003, 000, 096, 016, 000, 001, 000, 000,
000, 088, 024, 000, 004, 000, 112, 016, 000, 000, 000, 000, 000, 085, 085,
000, 000, 088, 024, 000, 004, 000, 112, 016, 000, 001, 000, 000, 000, 085,
085, 000, 000, 098, 016, 000, 003, 242, 016, 016, 000, 000, 000, 000, 000,
098, 016, 000, 003, 050, 016, 016, 000, 001, 000, 000, 000, 098, 016, 000,
003, 194, 016, 016, 000, 001, 000, 000, 000, 101, 000, 000, 003, 242, 032,
016, 000, 000, 000, 000, 000, 104, 000, 000, 002, 002, 000, 000, 000, 069,
000, 000, 009, 242, 000, 016, 000, 000, 000, 000, 000, 230, 026, 016, 000,
001, 000, 000, 000, 070, 126, 016, 000, 001, 000, 000, 000, 000, 096, 016,
000, 001, 000, 000, 000, 056, 000, 000, 007, 242, 000, 016, 000, 000, 000,
000, 000, 070, 014, 016, 000, 000, 000, 000, 000, 070, 030, 016, 000, 000,
000, 000, 000, 069, 000, 000, 009, 242, 000, 016, 000, 001, 000, 000, 000,
070, 016, 016, 000, 001, 000, 000, 000, 070, 126, 016, 000, 000, 000, 000,
000, 000, 096, 016, 000, 000, 000, 000, 000, 056, 000, 000, 010, 242, 000,
016, 000, 001, 000, 000, 000, 070, 014, 016, 000, 001, 000, 000, 000, 002,
064, 000, 000, 000, 000, 000, 064, 000, 000, 000, 064, 000, 000, 000, 064,
000, 000, 128, 063, 056, 000, 000, 007, 242, 032, 016, 000, 000, 000, 000,
000, 070, 014, 016, 000, 000, 000, 000, 000, 070, 014, 016, 000, 001, 000,
000, 000, 062, 000, 000, 001, 083, 084, 065, 084, 116, 000, 000, 000, 006,
000, 000, 000, 002, 000, 000, 000, 000, 000, 000, 000, 004, 000, 000, 000,
003, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 001, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 002, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 105, 034, 000, 000, 000,
000, 000, 000, 004, 000, 000, 000, 112, 000, 000, 000, 000, 000, 000, 000,
004, 000, 000, 000, 255, 255, 255, 255, 000, 000, 000, 000, 048, 000, 000,
000, 020, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 096, 000, 000, 000, 068,
000, 000, 000, 000, 000, 000, 000, 016, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 105, 000, 000, 000, 020, 000, 000,
000, 000, 000, 000, 000, 032, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 152, 000, 000, 000, 124, 000, 000, 000, 000,
000, 000, 000, 048, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 204, 000, 000, 000, 176, 000, 000, 000, 000, 000, 000,
000, 255, 255, 255, 255, 000, 000, 000, 000, 253, 000, 000, 000, 225, 000,
000, 000, 000, 000, 000, 000, 255, 255, 255, 255, 000, 000, 000, 000, 000,
000, 000, 000, 012, 001, 000, 000, 176, 000, 000, 000, 000, 000, 000, 000,
255, 255, 255, 255, 000, 000, 000, 000, 021, 001, 000, 000, 225, 000, 000,
000, 000, 000, 000, 000, 255, 255, 255, 255, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 004, 000, 000, 000, 000, 000, 000, 000, 037,
001, 000, 000, 001, 000, 000, 000, 000, 000, 000, 000, 055, 001, 000, 000,
003, 000, 000, 000, 000, 000, 000, 000, 008, 000, 000, 000, 000, 000, 000,
000, 001, 000, 000, 000, 071, 001, 000, 000, 006, 000, 000, 000, 000, 000,
000, 000, 007, 000, 000, 000, 255, 005, 000, 000, 007, 000, 000, 000, 000,
000, 000, 000, 007, 000, 000, 000, 043, 011, 000, 000, 051, 011, 000, 000,
001, 000, 000, 000, 000, 000, 000, 000, 080, 011, 000, 000, 003, 000, 000,
000, 000, 000, 000, 000, 008, 000, 000, 000, 000, 000, 000, 000, 001, 000,
000, 000, 107, 011, 000, 000, 006, 000, 000, 000, 000, 000, 000, 000, 007,
000, 000, 000, 083, 016, 000, 000, 007, 000, 000, 000, 000, 000, 000, 000,
007, 000, 000, 000, 127, 021, 000, 000, 135, 021, 000, 000, 001, 000, 000,
000, 000, 000, 000, 000, 158, 021, 000, 000, 003, 000, 000, 000, 000, 000,
000, 000, 008, 000, 000, 000, 000, 000, 000, 000, 001, 000, 000, 000, 179,
021, 000, 000, 006, 000, 000, 000, 000, 000, 000, 000, 007, 000, 000, 000,
007, 026, 000, 000, 007, 000, 000, 000, 000, 000, 000, 000, 007, 000, 000,
000, 147, 029, 000, 000, 155, 029, 000, 000, 001, 000, 000, 000, 000, 000,
000, 000, 189, 029, 000, 000, 003, 000, 000, 000, 000, 000, 000, 000, 008,
000, 000, 000, 000, 000, 000, 000, 001, 000, 000, 000, 221, 029, 000, 000,
006, 000, 000, 000, 000, 000, 000, 000, 007, 000, 000, 000, 097, 034, 000,
000, 007, 000, 000, 000, 000, 000, 000, 000, 007, 000, 000, 000, 237, 037,
000, 000
};
#endregion //DualTextureEffectShader

View File

@ -149,6 +149,10 @@ namespace ANX.RenderSystem.Windows.Metro
{
return ShaderByteCode.SpriteBatchByteCode;
}
else if (type == PreDefinedShader.DualTextureEffect)
{
return ShaderByteCode.DualTextureEffectByteCode;
}
/* TODO
else if (type == PreDefinedShader.AlphaTestEffect)
{
@ -158,10 +162,6 @@ namespace ANX.RenderSystem.Windows.Metro
{
return ShaderByteCode.BasicEffectByteCode;
}
else if (type == PreDefinedShader.DualTextureEffect)
{
return ShaderByteCode.DualTextureEffectByteCode;
}
else if (type == PreDefinedShader.EnvironmentMapEffect)
{
return ShaderByteCode.EnvironmentMapEffectByteCode;
@ -171,8 +171,7 @@ namespace ANX.RenderSystem.Windows.Metro
return ShaderByteCode.SkinnedEffectByteCode;
}
*/
throw new NotImplementedException("ByteCode for '" + type.ToString() +
"' is not yet available");
throw new NotImplementedException("ByteCode for '" + type + "' is not yet available");
}
#endregion

View File

@ -195,7 +195,7 @@ namespace DX11MetroShaderGenerator
Process process = new Process();
process.StartInfo.FileName = GetCompilerFilepath();
process.StartInfo.Arguments = "/E" + entryPoint + " /T" + profile +
process.StartInfo.Arguments = "/E" + entryPoint + " /T" + profile +
"_level_9_1 \"" + tempSourcePath + "\" /Fo" + tempDestPath;
process.StartInfo.UseShellExecute = false;
@ -245,7 +245,7 @@ namespace DX11MetroShaderGenerator
string sdkPath = Environment.GetEnvironmentVariable("DXSDK_DIR");
if (String.IsNullOrEmpty(sdkPath) == false)
{
fxcToolPath = Path.Combine(sdkPath, subDir);
fxcToolPath = Path.Combine(sdkPath, @"Utilities\bin\", subDir);
}
else
{

View File

@ -2,49 +2,161 @@
// "ANX.Framework developer group" and released under the Ms-PL license.
// For details see: http://anxframework.codeplex.com/license
//TODO: dummy implementation / placeholder
uniform extern float4x4 MatrixTransform;
uniform extern float4 DiffuseColor;
uniform extern float3 FogColor;
uniform extern float4 FogVector;
uniform extern float4x4 WorldViewProj;
Texture2D<float4> Texture : register(t0);
sampler TextureSampler : register(s0);
struct VertexShaderInput
Texture2D<float4> Texture2 : register(t1);
sampler Texture2Sampler : register(s1);
struct VSInput
{
float4 pos : POSITION;
float4 col : COLOR;
float2 tex : TEXCOORD0;
float4 pos : POSITION;
float2 tex : TEXCOORD0;
float2 tex2 : TEXCOORD1;
};
struct PixelShaderInput
struct VSInputVertexColor
{
float4 pos : SV_POSITION;
float4 col : COLOR;
float2 tex : TEXCOORD0;
float4 pos : POSITION;
float2 tex : TEXCOORD0;
float2 tex2 : TEXCOORD1;
float4 col : COLOR;
};
PixelShaderInput AlphaTestVertexShader( VertexShaderInput input )
struct VSOutput
{
PixelShaderInput output = (PixelShaderInput)0;
output.pos = mul(input.pos, MatrixTransform);
output.col = input.col;
output.tex = input.tex;
float4 Diffuse : COLOR0;
float4 Specular : COLOR1;
float2 TexCoord : TEXCOORD0;
float2 TexCoord2 : TEXCOORD1;
float4 PositionPS : SV_POSITION;
};
return output;
struct VSOutputNoFog
{
float4 Diffuse : COLOR0;
float2 TexCoord : TEXCOORD0;
float2 TexCoord2 : TEXCOORD1;
float4 PositionPS : SV_Position;
};
struct PSInput
{
float4 Diffuse : COLOR0;
float4 Specular : COLOR1;
float2 TexCoord : TEXCOORD0;
float2 TexCoord2 : TEXCOORD1;
};
struct PSInputNoFog
{
float4 Diffuse : COLOR0;
float2 TexCoord : TEXCOORD0;
float2 TexCoord2 : TEXCOORD1;
};
VSOutput VSDualTexture(VSInput input)
{
VSOutput output;
output.PositionPS = mul(input.pos, WorldViewProj);
output.Diffuse = DiffuseColor;
output.Specular = float4(0, 0, 0, saturate(dot(input.pos, FogVector)));
output.TexCoord = input.tex;
output.TexCoord2 = input.tex2;
return output;
}
float4 AlphaTestPixelShader( PixelShaderInput input ) : SV_Target
VSOutputNoFog VSDualTextureNoFog(VSInput input)
{
return Texture.Sample(TextureSampler, input.tex) * input.col;
VSOutputNoFog output;
output.PositionPS = mul(input.pos, WorldViewProj);
output.Diffuse = DiffuseColor;
output.TexCoord = input.tex;
output.TexCoord2 = input.tex2;
return output;
}
technique10 AlphaTest
VSOutput VSDualTextureVertexColor(VSInputVertexColor input)
{
pass AlphaTestPass
VSOutput output;
output.PositionPS = mul(input.pos, WorldViewProj);
output.Diffuse = DiffuseColor * input.col;
output.Specular = float4(0, 0, 0, saturate(dot(input.pos, FogVector)));
output.TexCoord = input.tex;
output.TexCoord2 = input.tex2;
return output;
}
VSOutputNoFog VSDualTextureVertexColorNoFog(VSInputVertexColor input)
{
VSOutputNoFog output;
output.PositionPS = mul(input.pos, WorldViewProj);
output.Diffuse = DiffuseColor * input.col;
output.TexCoord = input.tex;
output.TexCoord2 = input.tex2;
return output;
}
float4 PSDualTexture(PSInput input) : SV_Target0
{
float4 color = Texture.Sample(TextureSampler, input.TexCoord);
float4 overlay = Texture2.Sample(Texture2Sampler, input.TexCoord2);
color.rgb *= 2;
color *= overlay * input.Diffuse;
color.rgb = lerp(color.rgb, FogColor * color.a, input.Specular.w);
return color;
}
float4 PSDualTextureNoFog(PSInputNoFog input) : SV_Target0
{
float4 color = Texture.Sample(TextureSampler, input.TexCoord);
float4 overlay = Texture2.Sample(Texture2Sampler, input.TexCoord2);
color.rgb *= 2;
color *= overlay * input.Diffuse;
return color;
}
technique10 DualTextureEffect
{
pass DualTexturePass
{
SetGeometryShader( 0 );
SetVertexShader( CompileShader( vs_4_0, AlphaTestVertexShader() ) );
SetPixelShader( CompileShader( ps_4_0, AlphaTestPixelShader() ) );
SetGeometryShader(0);
SetVertexShader(CompileShader(vs_4_0, VSDualTexture()));
SetPixelShader(CompileShader(ps_4_0, PSDualTexture()));
}
}
technique10 DualTextureEffectVertexColor
{
pass DualTexturePassVertexColor
{
SetGeometryShader(0);
SetVertexShader(CompileShader(vs_4_0, VSDualTextureVertexColor()));
SetPixelShader(CompileShader(ps_4_0, PSDualTexture()));
}
}
technique10 DualTextureEffectNoFog
{
pass DualTexturePassNoFog
{
SetGeometryShader(0);
SetVertexShader(CompileShader(vs_4_0, VSDualTextureNoFog()));
SetPixelShader(CompileShader(ps_4_0, PSDualTextureNoFog()));
}
}
technique10 DualTextureEffectNoFogVertexColor
{
pass DualTexturePassVertexColorNoFog
{
SetGeometryShader(0);
SetVertexShader(CompileShader(vs_4_0, VSDualTextureVertexColorNoFog()));
SetPixelShader(CompileShader(ps_4_0, PSDualTextureNoFog()));
}
}

162
shader/Metro/DualTexture.fx Normal file
View File

@ -0,0 +1,162 @@
// This file is part of the ANX.Framework created by the
// "ANX.Framework developer group" and released under the Ms-PL license.
// For details see: http://anxframework.codeplex.com/license
uniform extern float4 DiffuseColor;
uniform extern float3 FogColor;
uniform extern float4 FogVector;
uniform extern float4x4 WorldViewProj;
Texture2D<float4> Texture : register(t0);
sampler TextureSampler : register(s0);
Texture2D<float4> Texture2 : register(t1);
sampler Texture2Sampler : register(s1);
struct VSInput
{
float4 pos : POSITION;
float2 tex : TEXCOORD0;
float2 tex2 : TEXCOORD1;
};
struct VSInputVertexColor
{
float4 pos : POSITION;
float2 tex : TEXCOORD0;
float2 tex2 : TEXCOORD1;
float4 col : COLOR;
};
struct VSOutput
{
float4 Diffuse : COLOR0;
float4 Specular : COLOR1;
float2 TexCoord : TEXCOORD0;
float2 TexCoord2 : TEXCOORD1;
float4 PositionPS : SV_POSITION;
};
struct VSOutputNoFog
{
float4 Diffuse : COLOR0;
float2 TexCoord : TEXCOORD0;
float2 TexCoord2 : TEXCOORD1;
float4 PositionPS : SV_Position;
};
struct PSInput
{
float4 Diffuse : COLOR0;
float4 Specular : COLOR1;
float2 TexCoord : TEXCOORD0;
float2 TexCoord2 : TEXCOORD1;
};
struct PSInputNoFog
{
float4 Diffuse : COLOR0;
float2 TexCoord : TEXCOORD0;
float2 TexCoord2 : TEXCOORD1;
};
VSOutput VSDualTexture(VSInput input)
{
VSOutput output;
output.PositionPS = mul(input.pos, WorldViewProj);
output.Diffuse = DiffuseColor;
output.Specular = float4(0, 0, 0, saturate(dot(input.pos, FogVector)));
output.TexCoord = input.tex;
output.TexCoord2 = input.tex2;
return output;
}
VSOutputNoFog VSDualTextureNoFog(VSInput input)
{
VSOutputNoFog output;
output.PositionPS = mul(input.pos, WorldViewProj);
output.Diffuse = DiffuseColor;
output.TexCoord = input.tex;
output.TexCoord2 = input.tex2;
return output;
}
VSOutput VSDualTextureVertexColor(VSInputVertexColor input)
{
VSOutput output;
output.PositionPS = mul(input.pos, WorldViewProj);
output.Diffuse = DiffuseColor * input.col;
output.Specular = float4(0, 0, 0, saturate(dot(input.pos, FogVector)));
output.TexCoord = input.tex;
output.TexCoord2 = input.tex2;
return output;
}
VSOutputNoFog VSDualTextureVertexColorNoFog(VSInputVertexColor input)
{
VSOutputNoFog output;
output.PositionPS = mul(input.pos, WorldViewProj);
output.Diffuse = DiffuseColor * input.col;
output.TexCoord = input.tex;
output.TexCoord2 = input.tex2;
return output;
}
float4 PSDualTexture(PSInput input) : SV_Target0
{
float4 color = Texture.Sample(TextureSampler, input.TexCoord);
float4 overlay = Texture2.Sample(Texture2Sampler, input.TexCoord2);
color.rgb *= 2;
color *= overlay * input.Diffuse;
color.rgb = lerp(color.rgb, FogColor * color.a, input.Specular.w);
return color;
}
float4 PSDualTextureNoFog(PSInputNoFog input) : SV_Target0
{
float4 color = Texture.Sample(TextureSampler, input.TexCoord);
float4 overlay = Texture2.Sample(Texture2Sampler, input.TexCoord2);
color.rgb *= 2;
color *= overlay * input.Diffuse;
return color;
}
technique10 DualTextureEffect
{
pass DualTexturePass
{
SetGeometryShader(0);
SetVertexShader(CompileShader(vs_4_0, VSDualTexture()));
SetPixelShader(CompileShader(ps_4_0, PSDualTexture()));
}
}
technique10 DualTextureEffectVertexColor
{
pass DualTexturePassVertexColor
{
SetGeometryShader(0);
SetVertexShader(CompileShader(vs_4_0, VSDualTextureVertexColor()));
SetPixelShader(CompileShader(ps_4_0, PSDualTexture()));
}
}
technique10 DualTextureEffectNoFog
{
pass DualTexturePassNoFog
{
SetGeometryShader(0);
SetVertexShader(CompileShader(vs_4_0, VSDualTextureNoFog()));
SetPixelShader(CompileShader(ps_4_0, PSDualTextureNoFog()));
}
}
technique10 DualTextureEffectNoFogVertexColor
{
pass DualTexturePassVertexColorNoFog
{
SetGeometryShader(0);
SetVertexShader(CompileShader(vs_4_0, VSDualTextureVertexColorNoFog()));
SetPixelShader(CompileShader(ps_4_0, PSDualTextureNoFog()));
}
}

View File

@ -1,9 +1,13 @@
<?xml version="1.0" encoding="utf-8" ?>
<Build License="../doc/license.txt"
Target="../RenderSystems/ANX.RenderSystem.Windows.Metro/ShaderByteCode.cs"
Namespace="ANX.RenderSystem.Windows.Metro">
Target="../RenderSystems/ANX.RenderSystem.Windows.Metro/ShaderByteCode.cs"
Namespace="ANX.RenderSystem.Windows.Metro">
<Shader Type="SpriteBatch"
Source="../Shader/Metro/SpriteBatch.fx"
RenderSystem="ANX.RenderSystem.Windows.Metro"
/>
Source="../Shader/Metro/SpriteBatch.fx"
RenderSystem="ANX.RenderSystem.Windows.Metro"
/>
<Shader Type="DualTextureEffect"
Source="../Shader/Metro/DualTexture.fx"
RenderSystem="ANX.RenderSystem.Windows.Metro"
/>
</Build>