Fixed shadow mapping rendering incorrectly & Fixed crashed if open scene was cancelled

This commit is contained in:
Antoine Pilote
2024-08-11 00:57:41 -04:00
parent 3c857992ad
commit 24cd93c342
5 changed files with 286 additions and 275 deletions

View File

@@ -355,7 +355,7 @@ void GizmoDrawer::DrawGizmos(Ref<Scene> scene, bool occluded)
Matrix4 gizmoPosition = Matrix4(1.0f);
gizmoPosition = glm::translate(scene->m_EditorCamera->GetTransform(), Vector3(transform.GetGlobalTransform()[3]));
gizmoPosition = gizmoPosition * rotationMatrix;
gizmoPosition = glm::translate(gizmoPosition, { 0, cylinderLength / 2.0, 0 });
gizmoPosition = glm::translate(gizmoPosition, { 0, -cylinderLength / 2.0, 0 });
m_LineShader->Bind();
m_LineShader->SetUniform1f("u_Opacity", 1.0f);

View File

@@ -2244,6 +2244,10 @@ namespace Nuake {
{
// Parse the project and load it.
std::string projectPath = FileDialog::OpenFile(".scene");
if (projectPath.empty() || !FileSystem::FileExists(projectPath, true))
{
return;
}
Ref<Scene> scene = Scene::New();
const std::string& fileContent = FileSystem::ReadFile(projectPath, true);

View File

@@ -269238,283 +269238,287 @@ const std::string Resources_Shaders_deferred_shader_path = R"(Resources/Shaders/
0x75, 0x65, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0d, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33,
0x20, 0x4c, 0x20, 0x3d, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69,
0x7a, 0x65, 0x28, 0x2d, 0x75, 0x5f, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74,
0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x2e, 0x44,
0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x3b, 0x0d, 0x0a,
0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c,
0x6f, 0x61, 0x74, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x75, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x66, 0x3b, 0x0d,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x28,
0x7a, 0x65, 0x28, 0x75, 0x5f, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69,
0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x2e, 0x44, 0x69,
0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x3b, 0x0d, 0x0a, 0x0d,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f,
0x61, 0x74, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x75, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x66, 0x3b, 0x0d, 0x0a,
0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4c, 0x20,
0x3d, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28,
0x75, 0x5f, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61,
0x6c, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x64, 0x6f,
0x77, 0x20, 0x3e, 0x20, 0x30, 0x2e, 0x31, 0x66, 0x29, 0x0d, 0x0a, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x68,
0x61, 0x64, 0x6f, 0x77, 0x20, 0x2b, 0x3d, 0x20, 0x53, 0x68, 0x61, 0x64,
0x6f, 0x77, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x28, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x2c, 0x20,
0x4e, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x72, 0x61, 0x64, 0x69, 0x61,
0x6e, 0x63, 0x65, 0x20, 0x3d, 0x20, 0x75, 0x5f, 0x44, 0x69, 0x72, 0x65,
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x67, 0x68, 0x74,
0x2e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x2a, 0x20, 0x61, 0x74, 0x74,
0x65, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x2a, 0x20, 0x73,
0x68, 0x61, 0x64, 0x6f, 0x77, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x48,
0x20, 0x3d, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65,
0x28, 0x56, 0x20, 0x2b, 0x20, 0x4c, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20,
0x4e, 0x44, 0x46, 0x20, 0x3d, 0x20, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69,
0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x47, 0x58, 0x28, 0x4e, 0x2c,
0x20, 0x48, 0x2c, 0x20, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x6e, 0x65, 0x73,
0x73, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x47, 0x20, 0x3d, 0x20, 0x47,
0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x53, 0x6d, 0x69, 0x74, 0x68,
0x28, 0x4e, 0x2c, 0x20, 0x56, 0x2c, 0x20, 0x4c, 0x2c, 0x20, 0x72, 0x6f,
0x75, 0x67, 0x68, 0x6e, 0x65, 0x73, 0x73, 0x29, 0x3b, 0x0d, 0x0a, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20,
0x46, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x65, 0x73, 0x6e, 0x65, 0x6c, 0x53,
0x63, 0x68, 0x6c, 0x69, 0x63, 0x6b, 0x28, 0x6d, 0x61, 0x78, 0x28, 0x64,
0x6f, 0x74, 0x28, 0x48, 0x2c, 0x20, 0x56, 0x29, 0x2c, 0x20, 0x30, 0x2e,
0x30, 0x29, 0x2c, 0x20, 0x46, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a,
0x6c, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63,
0x74, 0x69, 0x6f, 0x6e, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x28, 0x75, 0x5f, 0x44,
0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69,
0x67, 0x68, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x20, 0x3e,
0x20, 0x30, 0x2e, 0x31, 0x66, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x68, 0x61, 0x64, 0x6f,
0x77, 0x20, 0x2b, 0x3d, 0x20, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x43,
0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x77,
0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x2c, 0x20, 0x4e, 0x29, 0x3b,
0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d,
0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76,
0x65, 0x63, 0x33, 0x20, 0x72, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x63, 0x65,
0x20, 0x3d, 0x20, 0x75, 0x5f, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69,
0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x2e, 0x43, 0x6f,
0x6c, 0x6f, 0x72, 0x20, 0x2a, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x75,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x2a, 0x20, 0x73, 0x68, 0x61, 0x64,
0x6f, 0x77, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x48, 0x20, 0x3d, 0x20,
0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x56, 0x20,
0x2b, 0x20, 0x4c, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x4e, 0x44, 0x46,
0x20, 0x3d, 0x20, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74,
0x69, 0x6f, 0x6e, 0x47, 0x47, 0x58, 0x28, 0x4e, 0x2c, 0x20, 0x48, 0x2c,
0x20, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x6e, 0x65, 0x73, 0x73, 0x29, 0x3b,
0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c,
0x6f, 0x61, 0x74, 0x20, 0x47, 0x20, 0x3d, 0x20, 0x47, 0x65, 0x6f, 0x6d,
0x65, 0x74, 0x72, 0x79, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x28, 0x4e, 0x2c,
0x20, 0x56, 0x2c, 0x20, 0x4c, 0x2c, 0x20, 0x72, 0x6f, 0x75, 0x67, 0x68,
0x6e, 0x65, 0x73, 0x73, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x46, 0x20, 0x3d,
0x20, 0x66, 0x72, 0x65, 0x73, 0x6e, 0x65, 0x6c, 0x53, 0x63, 0x68, 0x6c,
0x69, 0x63, 0x6b, 0x28, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28,
0x48, 0x2c, 0x20, 0x56, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x2c,
0x20, 0x46, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x6e, 0x6f,
0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x4e, 0x44,
0x46, 0x20, 0x2a, 0x20, 0x47, 0x20, 0x2a, 0x20, 0x46, 0x3b, 0x0d, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61,
0x74, 0x20, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f,
0x72, 0x20, 0x3d, 0x20, 0x34, 0x20, 0x2a, 0x20, 0x6d, 0x61, 0x78, 0x28,
0x64, 0x6f, 0x74, 0x28, 0x4e, 0x2c, 0x20, 0x56, 0x29, 0x2c, 0x20, 0x30,
0x2e, 0x30, 0x29, 0x20, 0x2a, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f,
0x74, 0x28, 0x4e, 0x2c, 0x20, 0x4c, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30,
0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x31, 0x3b, 0x20, 0x2f,
0x2f, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x31, 0x20, 0x74, 0x6f, 0x20, 0x70,
0x72, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x20, 0x64, 0x69, 0x76, 0x69, 0x64,
0x65, 0x20, 0x62, 0x79, 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x2e, 0x0d, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33,
0x20, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x3d,
0x20, 0x4e, 0x44, 0x46, 0x20, 0x2a, 0x20, 0x47, 0x20, 0x2a, 0x20, 0x46,
0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66,
0x6c, 0x6f, 0x61, 0x74, 0x20, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x69, 0x6e,
0x61, 0x74, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x34, 0x20, 0x2a, 0x20, 0x6d,
0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x4e, 0x2c, 0x20, 0x56, 0x29,
0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x20, 0x2a, 0x20, 0x6d, 0x61, 0x78,
0x28, 0x64, 0x6f, 0x74, 0x28, 0x4e, 0x2c, 0x20, 0x4c, 0x29, 0x2c, 0x20,
0x30, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x31,
0x3b, 0x20, 0x2f, 0x2f, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x31, 0x20, 0x74,
0x6f, 0x20, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x20, 0x64, 0x69,
0x76, 0x69, 0x64, 0x65, 0x20, 0x62, 0x79, 0x20, 0x7a, 0x65, 0x72, 0x6f,
0x2e, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76,
0x65, 0x63, 0x33, 0x20, 0x73, 0x70, 0x65, 0x63, 0x75, 0x6c, 0x61, 0x72,
0x20, 0x3d, 0x20, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72,
0x20, 0x2f, 0x20, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x74,
0x6f, 0x72, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x6b, 0x53, 0x20, 0x69, 0x73, 0x20,
0x65, 0x71, 0x75, 0x61, 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x46, 0x72, 0x65,
0x73, 0x6e, 0x65, 0x6c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x6b, 0x53, 0x20, 0x3d, 0x20,
0x46, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x76, 0x65, 0x63, 0x33, 0x20, 0x6b, 0x44, 0x20, 0x3d, 0x20, 0x76, 0x65,
0x63, 0x33, 0x28, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2d, 0x20, 0x6b, 0x53,
0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6b,
0x44, 0x20, 0x2a, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x6d,
0x65, 0x74, 0x61, 0x6c, 0x6c, 0x69, 0x63, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x73,
0x63, 0x61, 0x6c, 0x65, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x20, 0x62,
0x79, 0x20, 0x4e, 0x64, 0x6f, 0x74, 0x4c, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x4e,
0x64, 0x6f, 0x74, 0x4c, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x64,
0x6f, 0x74, 0x28, 0x4e, 0x2c, 0x20, 0x4c, 0x29, 0x2c, 0x20, 0x30, 0x2e,
0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x4c, 0x6f, 0x20, 0x2b, 0x3d, 0x20, 0x28, 0x6b, 0x44, 0x20, 0x2a,
0x20, 0x61, 0x6c, 0x62, 0x65, 0x64, 0x6f, 0x20, 0x2f, 0x20, 0x50, 0x49,
0x20, 0x2b, 0x20, 0x73, 0x70, 0x65, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x29,
0x20, 0x2a, 0x20, 0x72, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x20,
0x2a, 0x20, 0x4e, 0x64, 0x6f, 0x74, 0x4c, 0x3b, 0x0d, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66,
0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20,
0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x4c, 0x69, 0x67, 0x68, 0x74,
0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x20, 0x69, 0x2b, 0x2b, 0x29, 0x0d,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x20, 0x6c, 0x69,
0x67, 0x68, 0x74, 0x20, 0x3d, 0x20, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x73,
0x5b, 0x69, 0x5d, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x4c, 0x20, 0x3d, 0x20, 0x6e,
0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x4c, 0x69, 0x67,
0x68, 0x74, 0x73, 0x5b, 0x69, 0x5d, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74,
0x69, 0x6f, 0x6e, 0x20, 0x2d, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50,
0x6f, 0x73, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x64, 0x69,
0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x3d, 0x20, 0x6c, 0x65, 0x6e,
0x67, 0x74, 0x68, 0x28, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x2e, 0x50, 0x6f,
0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x2d, 0x20, 0x77, 0x6f, 0x72,
0x6c, 0x64, 0x50, 0x6f, 0x73, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61,
0x74, 0x74, 0x65, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d,
0x20, 0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x28, 0x64, 0x69, 0x73, 0x74,
0x61, 0x6e, 0x63, 0x65, 0x20, 0x2a, 0x20, 0x64, 0x69, 0x73, 0x74, 0x61,
0x6e, 0x63, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x72, 0x61,
0x64, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x28, 0x4c, 0x69, 0x67, 0x68,
0x74, 0x73, 0x5b, 0x69, 0x5d, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x20, 0x3d,
0x3d, 0x20, 0x31, 0x29, 0x20, 0x2f, 0x2f, 0x20, 0x50, 0x6f, 0x69, 0x6e,
0x74, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b,
0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x72, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x3d,
0x20, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x5b, 0x69, 0x5d, 0x2e, 0x43,
0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x2a, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6e,
0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x69, 0x66, 0x28,
0x4c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x5b, 0x69, 0x5d, 0x2e, 0x54, 0x79,
0x70, 0x65, 0x20, 0x3d, 0x3d, 0x20, 0x32, 0x29, 0x20, 0x2f, 0x2f, 0x20,
0x53, 0x70, 0x6f, 0x74, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74,
0x68, 0x65, 0x74, 0x61, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x74, 0x28, 0x4c,
0x2c, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28,
0x2d, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x5b, 0x69, 0x5d, 0x2e, 0x44,
0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x29, 0x3b, 0x0d,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x70, 0x73, 0x69, 0x6c,
0x6f, 0x6e, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x4c, 0x69, 0x67, 0x68, 0x74,
0x73, 0x5b, 0x69, 0x5d, 0x2e, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x41, 0x6e,
0x67, 0x6c, 0x65, 0x20, 0x2d, 0x20, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x73,
0x5b, 0x69, 0x5d, 0x2e, 0x4f, 0x75, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x67,
0x6c, 0x65, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x69,
0x6e, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x20, 0x3d, 0x20, 0x63,
0x6c, 0x61, 0x6d, 0x70, 0x28, 0x28, 0x74, 0x68, 0x65, 0x74, 0x61, 0x20,
0x2d, 0x20, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x5b, 0x69, 0x5d, 0x2e,
0x4f, 0x75, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x67, 0x6c, 0x65, 0x29, 0x20,
0x2f, 0x20, 0x65, 0x70, 0x73, 0x69, 0x6c, 0x6f, 0x6e, 0x2c, 0x20, 0x30,
0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x20, 0x20, 0x20,
0x20, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x72, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x20,
0x3d, 0x20, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x5b, 0x69, 0x5d, 0x2e,
0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x74, 0x65,
0x6e, 0x73, 0x69, 0x74, 0x79, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x6f, 0x6b,
0x2d, 0x54, 0x6f, 0x72, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x42, 0x52,
0x44, 0x46, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x76, 0x65, 0x63, 0x33, 0x20, 0x48, 0x20, 0x3d, 0x20, 0x6e, 0x6f, 0x72,
0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x56, 0x20, 0x2b, 0x20, 0x4c,
0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x4e, 0x44, 0x46, 0x20, 0x3d, 0x20,
0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e,
0x47, 0x47, 0x58, 0x28, 0x4e, 0x2c, 0x20, 0x48, 0x2c, 0x20, 0x72, 0x6f,
0x75, 0x67, 0x68, 0x6e, 0x65, 0x73, 0x73, 0x29, 0x3b, 0x0d, 0x0a, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
0x20, 0x47, 0x20, 0x3d, 0x20, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72,
0x79, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x28, 0x4e, 0x2c, 0x20, 0x56, 0x2c,
0x20, 0x4c, 0x2c, 0x20, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x6e, 0x65, 0x73,
0x73, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x46, 0x20, 0x3d, 0x20, 0x66, 0x72,
0x65, 0x73, 0x6e, 0x65, 0x6c, 0x53, 0x63, 0x68, 0x6c, 0x69, 0x63, 0x6b,
0x28, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x48, 0x2c, 0x20,
0x56, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x46, 0x30,
0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x6e, 0x6f, 0x6d, 0x69, 0x6e,
0x61, 0x74, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x4e, 0x44, 0x46, 0x20, 0x2a,
0x20, 0x47, 0x20, 0x2a, 0x20, 0x46, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x64,
0x65, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x3d,
0x20, 0x34, 0x20, 0x2a, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74,
0x28, 0x4e, 0x2c, 0x20, 0x56, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29,
0x20, 0x2a, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x4e,
0x2c, 0x20, 0x4c, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x20, 0x2b,
0x20, 0x30, 0x2e, 0x30, 0x30, 0x31, 0x3b, 0x20, 0x2f, 0x2f, 0x20, 0x30,
0x2e, 0x30, 0x30, 0x31, 0x20, 0x74, 0x6f, 0x20, 0x70, 0x72, 0x65, 0x76,
0x65, 0x6e, 0x74, 0x20, 0x64, 0x69, 0x76, 0x69, 0x64, 0x65, 0x20, 0x62,
0x79, 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x2e, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x73, 0x70,
0x65, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x20, 0x3d, 0x20, 0x6e, 0x6f, 0x6d,
0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x2f, 0x20, 0x64, 0x65, 0x6e,
0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x3b, 0x0d, 0x0a, 0x0d,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20,
0x6b, 0x53, 0x20, 0x69, 0x73, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x20,
0x74, 0x6f, 0x20, 0x46, 0x72, 0x65, 0x73, 0x6e, 0x65, 0x6c, 0x0d, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33,
0x20, 0x6b, 0x53, 0x20, 0x3d, 0x20, 0x46, 0x3b, 0x0d, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x6b,
0x44, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x31, 0x2e, 0x30,
0x29, 0x20, 0x2d, 0x20, 0x6b, 0x53, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x6b, 0x44, 0x20, 0x2a, 0x3d, 0x20, 0x31,
0x2e, 0x30, 0x20, 0x2d, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x6c, 0x69,
0x63, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x2f, 0x2f, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x20, 0x6c,
0x69, 0x67, 0x68, 0x74, 0x20, 0x62, 0x79, 0x20, 0x4e, 0x64, 0x6f, 0x74,
0x4c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66,
0x6c, 0x6f, 0x61, 0x74, 0x20, 0x4e, 0x64, 0x6f, 0x74, 0x4c, 0x20, 0x3d,
0x20, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x4e, 0x2c, 0x20,
0x4c, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4c, 0x6f, 0x20, 0x2b, 0x3d,
0x20, 0x28, 0x6b, 0x44, 0x20, 0x2a, 0x20, 0x61, 0x6c, 0x62, 0x65, 0x64,
0x6f, 0x20, 0x2f, 0x20, 0x50, 0x49, 0x20, 0x2b, 0x20, 0x73, 0x70, 0x65,
0x63, 0x75, 0x6c, 0x61, 0x72, 0x29, 0x20, 0x2a, 0x20, 0x72, 0x61, 0x64,
0x69, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x2a, 0x20, 0x4e, 0x64, 0x6f, 0x74,
0x4c, 0x3b, 0x2f, 0x2f, 0x20, 0x6e, 0x6f, 0x74, 0x65, 0x20, 0x74, 0x68,
0x61, 0x74, 0x20, 0x77, 0x65, 0x20, 0x61, 0x6c, 0x72, 0x65, 0x61, 0x64,
0x79, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x64,
0x20, 0x74, 0x68, 0x65, 0x20, 0x42, 0x52, 0x44, 0x46, 0x20, 0x62, 0x79,
0x20, 0x74, 0x68, 0x65, 0x20, 0x46, 0x72, 0x65, 0x73, 0x6e, 0x65, 0x6c,
0x20, 0x28, 0x6b, 0x53, 0x29, 0x20, 0x73, 0x6f, 0x20, 0x77, 0x65, 0x20,
0x77, 0x6f, 0x6e, 0x27, 0x74, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70,
0x6c, 0x79, 0x20, 0x62, 0x79, 0x20, 0x6b, 0x53, 0x20, 0x61, 0x67, 0x61,
0x69, 0x6e, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x0d,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x2f, 0x20, 0x61, 0x6d, 0x62,
0x69, 0x65, 0x6e, 0x74, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x69, 0x6e,
0x67, 0x20, 0x28, 0x77, 0x65, 0x20, 0x6e, 0x6f, 0x77, 0x20, 0x75, 0x73,
0x65, 0x20, 0x49, 0x42, 0x4c, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65,
0x20, 0x61, 0x6d, 0x62, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x65, 0x72,
0x6d, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33,
0x20, 0x46, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x65, 0x73, 0x6e, 0x65, 0x6c,
0x53, 0x63, 0x68, 0x6c, 0x69, 0x63, 0x6b, 0x52, 0x6f, 0x75, 0x67, 0x68,
0x6e, 0x65, 0x73, 0x73, 0x28, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74,
0x28, 0x4e, 0x2c, 0x20, 0x56, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29,
0x2c, 0x20, 0x46, 0x30, 0x2c, 0x20, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x6e,
0x65, 0x73, 0x73, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x6b, 0x53, 0x20, 0x3d, 0x20, 0x46,
0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20,
0x6b, 0x44, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x6b,
0x53, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6b, 0x44, 0x20, 0x2a,
0x20, 0x73, 0x70, 0x65, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x20, 0x3d, 0x20,
0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x2f, 0x20,
0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x3b,
0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x2f, 0x2f, 0x20, 0x6b, 0x53, 0x20, 0x69, 0x73, 0x20, 0x65, 0x71, 0x75,
0x61, 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x46, 0x72, 0x65, 0x73, 0x6e, 0x65,
0x6c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76,
0x65, 0x63, 0x33, 0x20, 0x6b, 0x53, 0x20, 0x3d, 0x20, 0x46, 0x3b, 0x0d,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63,
0x33, 0x20, 0x6b, 0x44, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28,
0x31, 0x2e, 0x30, 0x29, 0x20, 0x2d, 0x20, 0x6b, 0x53, 0x3b, 0x0d, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6b, 0x44, 0x20, 0x2a,
0x3d, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x6d, 0x65, 0x74, 0x61,
0x6c, 0x6c, 0x69, 0x63, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, 0x6d, 0x62, 0x69, 0x65, 0x6e,
0x74, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x6c, 0x62, 0x65, 0x64, 0x6f, 0x29,
0x20, 0x2a, 0x20, 0x61, 0x6f, 0x20, 0x2a, 0x20, 0x73, 0x73, 0x61, 0x6f,
0x20, 0x2a, 0x20, 0x75, 0x5f, 0x41, 0x6d, 0x62, 0x69, 0x65, 0x6e, 0x74,
0x54, 0x65, 0x72, 0x6d, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76,
0x65, 0x63, 0x33, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20,
0x28, 0x61, 0x6d, 0x62, 0x69, 0x65, 0x6e, 0x74, 0x29, 0x20, 0x2b, 0x20,
0x4c, 0x6f, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f,
0x2f, 0x20, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x43, 0x53,
0x4d, 0x20, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x73, 0x2e, 0x2e, 0x0d, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x2f, 0x2a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20,
0x64, 0x65, 0x70, 0x74, 0x68, 0x20, 0x3d, 0x20, 0x6c, 0x65, 0x6e, 0x67,
0x74, 0x68, 0x28, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x20,
0x2d, 0x20, 0x75, 0x5f, 0x45, 0x79, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74,
0x69, 0x6f, 0x6e, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69,
0x6e, 0x74, 0x20, 0x63, 0x61, 0x73, 0x63, 0x61, 0x64, 0x65, 0x20, 0x3d,
0x20, 0x47, 0x65, 0x74, 0x43, 0x53, 0x4d, 0x44, 0x65, 0x70, 0x74, 0x68,
0x28, 0x64, 0x65, 0x70, 0x74, 0x68, 0x2c, 0x20, 0x4c, 0x69, 0x67, 0x68,
0x74, 0x73, 0x5b, 0x30, 0x5d, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x69, 0x66, 0x20, 0x28, 0x63, 0x61, 0x73, 0x63, 0x61, 0x64, 0x65,
0x20, 0x3d, 0x3d, 0x20, 0x30, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x2a, 0x3d,
0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x30,
0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20,
0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x63, 0x61, 0x73, 0x63, 0x61,
0x64, 0x65, 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x29, 0x0d, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20,
0x2a, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x2c,
0x20, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x0d,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x63, 0x61, 0x73,
0x63, 0x61, 0x64, 0x65, 0x20, 0x3d, 0x3d, 0x20, 0x32, 0x29, 0x0d, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f,
0x72, 0x20, 0x2a, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e,
0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29,
0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x63,
0x61, 0x73, 0x63, 0x61, 0x64, 0x65, 0x20, 0x3d, 0x3d, 0x20, 0x33, 0x29,
0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f,
0x6c, 0x6f, 0x72, 0x20, 0x2a, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28,
0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e,
0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2a, 0x2f, 0x0d,
0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x46, 0x72, 0x61, 0x67, 0x43,
0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28,
0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b,
0x0d, 0x0a, 0x7d
0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x73, 0x63, 0x61, 0x6c,
0x65, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x20, 0x62, 0x79, 0x20, 0x4e,
0x64, 0x6f, 0x74, 0x4c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x4e, 0x64, 0x6f, 0x74,
0x4c, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28,
0x4e, 0x2c, 0x20, 0x4c, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x3b,
0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4c, 0x6f,
0x20, 0x2b, 0x3d, 0x20, 0x28, 0x6b, 0x44, 0x20, 0x2a, 0x20, 0x61, 0x6c,
0x62, 0x65, 0x64, 0x6f, 0x20, 0x2f, 0x20, 0x50, 0x49, 0x20, 0x2b, 0x20,
0x73, 0x70, 0x65, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x29, 0x20, 0x2a, 0x20,
0x72, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x2a, 0x20, 0x4e,
0x64, 0x6f, 0x74, 0x4c, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d,
0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20,
0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20,
0x69, 0x20, 0x3c, 0x20, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x75,
0x6e, 0x74, 0x3b, 0x20, 0x69, 0x2b, 0x2b, 0x29, 0x0d, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74,
0x20, 0x3d, 0x20, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x5b, 0x69, 0x5d,
0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76,
0x65, 0x63, 0x33, 0x20, 0x4c, 0x20, 0x3d, 0x20, 0x6e, 0x6f, 0x72, 0x6d,
0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x73,
0x5b, 0x69, 0x5d, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e,
0x20, 0x2d, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x29,
0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x64, 0x69, 0x73, 0x74, 0x61,
0x6e, 0x63, 0x65, 0x20, 0x3d, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68,
0x28, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74,
0x69, 0x6f, 0x6e, 0x20, 0x2d, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50,
0x6f, 0x73, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x74, 0x74, 0x65,
0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x31, 0x2e,
0x30, 0x20, 0x2f, 0x20, 0x28, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63,
0x65, 0x20, 0x2a, 0x20, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x72, 0x61, 0x64, 0x69, 0x61,
0x6e, 0x63, 0x65, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x69, 0x66, 0x28, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x5b,
0x69, 0x5d, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x20, 0x3d, 0x3d, 0x20, 0x31,
0x29, 0x20, 0x2f, 0x2f, 0x20, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x0d, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0d, 0x0a, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72,
0x61, 0x64, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x3d, 0x20, 0x4c, 0x69,
0x67, 0x68, 0x74, 0x73, 0x5b, 0x69, 0x5d, 0x2e, 0x43, 0x6f, 0x6c, 0x6f,
0x72, 0x20, 0x2a, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x75, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x69, 0x66, 0x28, 0x4c, 0x69, 0x67,
0x68, 0x74, 0x73, 0x5b, 0x69, 0x5d, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x20,
0x3d, 0x3d, 0x20, 0x32, 0x29, 0x20, 0x2f, 0x2f, 0x20, 0x53, 0x70, 0x6f,
0x74, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b,
0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x74,
0x61, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x74, 0x28, 0x4c, 0x2c, 0x20, 0x6e,
0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x2d, 0x4c, 0x69,
0x67, 0x68, 0x74, 0x73, 0x5b, 0x69, 0x5d, 0x2e, 0x44, 0x69, 0x72, 0x65,
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c,
0x6f, 0x61, 0x74, 0x20, 0x65, 0x70, 0x73, 0x69, 0x6c, 0x6f, 0x6e, 0x20,
0x20, 0x20, 0x3d, 0x20, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x5b, 0x69,
0x5d, 0x2e, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x41, 0x6e, 0x67, 0x6c, 0x65,
0x20, 0x2d, 0x20, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x5b, 0x69, 0x5d,
0x2e, 0x4f, 0x75, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x67, 0x6c, 0x65, 0x3b,
0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x65,
0x6e, 0x73, 0x69, 0x74, 0x79, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d,
0x70, 0x28, 0x28, 0x74, 0x68, 0x65, 0x74, 0x61, 0x20, 0x2d, 0x20, 0x4c,
0x69, 0x67, 0x68, 0x74, 0x73, 0x5b, 0x69, 0x5d, 0x2e, 0x4f, 0x75, 0x74,
0x65, 0x72, 0x41, 0x6e, 0x67, 0x6c, 0x65, 0x29, 0x20, 0x2f, 0x20, 0x65,
0x70, 0x73, 0x69, 0x6c, 0x6f, 0x6e, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c,
0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x20, 0x20, 0x20, 0x20, 0x0d, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x72, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x3d, 0x20, 0x4c,
0x69, 0x67, 0x68, 0x74, 0x73, 0x5b, 0x69, 0x5d, 0x2e, 0x43, 0x6f, 0x6c,
0x6f, 0x72, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x73, 0x69,
0x74, 0x79, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x6f, 0x6b, 0x2d, 0x54, 0x6f,
0x72, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x42, 0x52, 0x44, 0x46, 0x0d,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63,
0x33, 0x20, 0x48, 0x20, 0x3d, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c,
0x69, 0x7a, 0x65, 0x28, 0x56, 0x20, 0x2b, 0x20, 0x4c, 0x29, 0x3b, 0x0d,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f,
0x61, 0x74, 0x20, 0x4e, 0x44, 0x46, 0x20, 0x3d, 0x20, 0x44, 0x69, 0x73,
0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x47, 0x58,
0x28, 0x4e, 0x2c, 0x20, 0x48, 0x2c, 0x20, 0x72, 0x6f, 0x75, 0x67, 0x68,
0x6e, 0x65, 0x73, 0x73, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x47, 0x20,
0x3d, 0x20, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x53, 0x6d,
0x69, 0x74, 0x68, 0x28, 0x4e, 0x2c, 0x20, 0x56, 0x2c, 0x20, 0x4c, 0x2c,
0x20, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x6e, 0x65, 0x73, 0x73, 0x29, 0x3b,
0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65,
0x63, 0x33, 0x20, 0x46, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x65, 0x73, 0x6e,
0x65, 0x6c, 0x53, 0x63, 0x68, 0x6c, 0x69, 0x63, 0x6b, 0x28, 0x6d, 0x61,
0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x48, 0x2c, 0x20, 0x56, 0x29, 0x2c,
0x20, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x46, 0x30, 0x29, 0x3b, 0x0d,
0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76,
0x65, 0x63, 0x33, 0x20, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f,
0x72, 0x20, 0x3d, 0x20, 0x4e, 0x44, 0x46, 0x20, 0x2a, 0x20, 0x47, 0x20,
0x2a, 0x20, 0x46, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x64, 0x65, 0x6e, 0x6f,
0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x34, 0x20,
0x2a, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x4e, 0x2c,
0x20, 0x56, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x20, 0x2a, 0x20,
0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x4e, 0x2c, 0x20, 0x4c,
0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e,
0x30, 0x30, 0x31, 0x3b, 0x20, 0x2f, 0x2f, 0x20, 0x30, 0x2e, 0x30, 0x30,
0x31, 0x20, 0x74, 0x6f, 0x20, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6e, 0x74,
0x20, 0x64, 0x69, 0x76, 0x69, 0x64, 0x65, 0x20, 0x62, 0x79, 0x20, 0x7a,
0x65, 0x72, 0x6f, 0x2e, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x73, 0x70, 0x65, 0x63, 0x75,
0x6c, 0x61, 0x72, 0x20, 0x3d, 0x20, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x61,
0x74, 0x6f, 0x72, 0x20, 0x2f, 0x20, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x69,
0x6e, 0x61, 0x74, 0x6f, 0x72, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x6b, 0x53, 0x20,
0x69, 0x73, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x20, 0x74, 0x6f, 0x20,
0x46, 0x72, 0x65, 0x73, 0x6e, 0x65, 0x6c, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x6b, 0x53,
0x20, 0x3d, 0x20, 0x46, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x6b, 0x44, 0x20, 0x3d,
0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2d,
0x20, 0x6b, 0x53, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x6b, 0x44, 0x20, 0x2a, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x20,
0x2d, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x6c, 0x69, 0x63, 0x3b, 0x0d,
0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f,
0x2f, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x20, 0x6c, 0x69, 0x67, 0x68,
0x74, 0x20, 0x62, 0x79, 0x20, 0x4e, 0x64, 0x6f, 0x74, 0x4c, 0x0d, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61,
0x74, 0x20, 0x4e, 0x64, 0x6f, 0x74, 0x4c, 0x20, 0x3d, 0x20, 0x6d, 0x61,
0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x4e, 0x2c, 0x20, 0x4c, 0x29, 0x2c,
0x20, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x4c, 0x6f, 0x20, 0x2b, 0x3d, 0x20, 0x28, 0x6b,
0x44, 0x20, 0x2a, 0x20, 0x61, 0x6c, 0x62, 0x65, 0x64, 0x6f, 0x20, 0x2f,
0x20, 0x50, 0x49, 0x20, 0x2b, 0x20, 0x73, 0x70, 0x65, 0x63, 0x75, 0x6c,
0x61, 0x72, 0x29, 0x20, 0x2a, 0x20, 0x72, 0x61, 0x64, 0x69, 0x61, 0x6e,
0x63, 0x65, 0x20, 0x2a, 0x20, 0x4e, 0x64, 0x6f, 0x74, 0x4c, 0x3b, 0x2f,
0x2f, 0x20, 0x6e, 0x6f, 0x74, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20,
0x77, 0x65, 0x20, 0x61, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x20, 0x6d,
0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x20, 0x74, 0x68,
0x65, 0x20, 0x42, 0x52, 0x44, 0x46, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68,
0x65, 0x20, 0x46, 0x72, 0x65, 0x73, 0x6e, 0x65, 0x6c, 0x20, 0x28, 0x6b,
0x53, 0x29, 0x20, 0x73, 0x6f, 0x20, 0x77, 0x65, 0x20, 0x77, 0x6f, 0x6e,
0x27, 0x74, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x79, 0x20,
0x62, 0x79, 0x20, 0x6b, 0x53, 0x20, 0x61, 0x67, 0x61, 0x69, 0x6e, 0x0d,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x2f, 0x2f, 0x2f, 0x20, 0x61, 0x6d, 0x62, 0x69, 0x65, 0x6e,
0x74, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x28,
0x77, 0x65, 0x20, 0x6e, 0x6f, 0x77, 0x20, 0x75, 0x73, 0x65, 0x20, 0x49,
0x42, 0x4c, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x6d,
0x62, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x65, 0x72, 0x6d, 0x29, 0x0d,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x46, 0x20,
0x3d, 0x20, 0x66, 0x72, 0x65, 0x73, 0x6e, 0x65, 0x6c, 0x53, 0x63, 0x68,
0x6c, 0x69, 0x63, 0x6b, 0x52, 0x6f, 0x75, 0x67, 0x68, 0x6e, 0x65, 0x73,
0x73, 0x28, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x4e, 0x2c,
0x20, 0x56, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x46,
0x30, 0x2c, 0x20, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x6e, 0x65, 0x73, 0x73,
0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65,
0x63, 0x33, 0x20, 0x6b, 0x53, 0x20, 0x3d, 0x20, 0x46, 0x3b, 0x0d, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x6b, 0x44, 0x20,
0x3d, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x6b, 0x53, 0x3b, 0x0d,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x6b, 0x44, 0x20, 0x2a, 0x3d, 0x20, 0x31,
0x2e, 0x30, 0x20, 0x2d, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x6c, 0x69,
0x63, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65,
0x63, 0x33, 0x20, 0x61, 0x6d, 0x62, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x3d,
0x20, 0x28, 0x61, 0x6c, 0x62, 0x65, 0x64, 0x6f, 0x29, 0x20, 0x2a, 0x20,
0x61, 0x6f, 0x20, 0x2a, 0x20, 0x73, 0x73, 0x61, 0x6f, 0x20, 0x2a, 0x20,
0x75, 0x5f, 0x41, 0x6d, 0x62, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x65, 0x72,
0x6d, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33,
0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x6d,
0x62, 0x69, 0x65, 0x6e, 0x74, 0x29, 0x20, 0x2b, 0x20, 0x4c, 0x6f, 0x3b,
0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x44,
0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x43, 0x53, 0x4d, 0x20, 0x73,
0x70, 0x6c, 0x69, 0x74, 0x73, 0x2e, 0x2e, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x2f, 0x2a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x64, 0x65, 0x70,
0x74, 0x68, 0x20, 0x3d, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28,
0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x20, 0x2d, 0x20, 0x75,
0x5f, 0x45, 0x79, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e,
0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20,
0x63, 0x61, 0x73, 0x63, 0x61, 0x64, 0x65, 0x20, 0x3d, 0x20, 0x47, 0x65,
0x74, 0x43, 0x53, 0x4d, 0x44, 0x65, 0x70, 0x74, 0x68, 0x28, 0x64, 0x65,
0x70, 0x74, 0x68, 0x2c, 0x20, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x5b,
0x30, 0x5d, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66,
0x20, 0x28, 0x63, 0x61, 0x73, 0x63, 0x61, 0x64, 0x65, 0x20, 0x3d, 0x3d,
0x20, 0x30, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x2a, 0x3d, 0x20, 0x76, 0x65,
0x63, 0x33, 0x28, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c,
0x20, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
0x69, 0x66, 0x20, 0x28, 0x63, 0x61, 0x73, 0x63, 0x61, 0x64, 0x65, 0x20,
0x3d, 0x3d, 0x20, 0x31, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x2a, 0x3d, 0x20,
0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e,
0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x63, 0x61, 0x73, 0x63, 0x61, 0x64,
0x65, 0x20, 0x3d, 0x3d, 0x20, 0x32, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x2a,
0x3d, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20,
0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0d, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x63, 0x61, 0x73, 0x63,
0x61, 0x64, 0x65, 0x20, 0x3d, 0x3d, 0x20, 0x33, 0x29, 0x0d, 0x0a, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72,
0x20, 0x2a, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x30,
0x2c, 0x20, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b,
0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2a, 0x2f, 0x0d, 0x0a, 0x0d, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f,
0x72, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x63, 0x6f, 0x6c,
0x6f, 0x72, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x7d
};
unsigned int Resources_Shaders_deferred_shader_len = 10599;
unsigned int Resources_Shaders_deferred_shader_len = 10656;
// Data for file: Resources_Shaders_depth_aware_blur_shader_path
const std::string Resources_Shaders_depth_aware_blur_shader_path = R"(Resources/Shaders/depth_aware_blur.shader)";

View File

@@ -128,7 +128,7 @@ namespace Nuake
glm::vec3 minExtents = -maxExtents;
// Calculate the view and projection matrix
glm::vec3 lightDir = this->Direction;
glm::vec3 lightDir = -this->Direction;
glm::mat4 lightViewMatrix = glm::lookAt(frustumCenter - lightDir * -minExtents.z, frustumCenter, glm::vec3(0.0f, 0.0f, 1.0f));
glm::mat4 lightProjectionMatrix = glm::ortho(minExtents.x, maxExtents.x, minExtents.y, maxExtents.y, 0.0f + mCascadeNearPlaneOffset, maxExtents.z - minExtents.z + mCascadeFarPlaneOffset);

View File

@@ -276,9 +276,12 @@ void main()
if (true)
{
vec3 L = normalize(-u_DirectionalLight.Direction);
vec3 L = normalize(u_DirectionalLight.Direction);
float attenuation = 1.0f;
L = normalize(u_DirectionalLight.Direction);
if(u_DirectionalLight.Shadow > 0.1f)
{
shadow += ShadowCalculation(worldPos, N);