Added the camera class
Added the DDS Texture Loading for future use Added the gamepad class for future use Added first child method to the scenegraph Added RGB to intensity and lerp methods to the shared methods class Added the terrain node class with normals Fixed issue with submeshnode not passing the world transform to the actual meshes
This commit is contained in:
1 parent
65255f1321
commit
7a57c73ac3
47 files changed
+4323
-91
No files matched your search
@@ -0,0 +1,132 @@
|
|||||||
|
#include "Camera.h"
|
||||||
|
|
||||||
|
XMVECTOR defaultForward = XMVectorSet(0.0f, 0.0f, 1.0f, 0.0f);
|
||||||
|
XMVECTOR defaultRight = XMVectorSet(1.0f, 0.0f, 0.0f, 0.0f);
|
||||||
|
XMVECTOR defaultUp = XMVectorSet(0.0f, 1.0f, 0.0f, 0.0f);
|
||||||
|
|
||||||
|
Camera::Camera()
|
||||||
|
{
|
||||||
|
_cameraPosition = XMFLOAT4(0.0f, 0.0f, 0.0f, 0.0f);
|
||||||
|
_moveLeftRight = 0.0f;
|
||||||
|
_moveForwardBack = 0.0f;
|
||||||
|
_cameraYaw = 0.0f;
|
||||||
|
_cameraPitch = 0.0f;
|
||||||
|
_cameraRoll = 0.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
Camera::~Camera()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void Camera::SetPitch(float pitch)
|
||||||
|
{
|
||||||
|
_cameraPitch += XMConvertToRadians(pitch);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Camera::SetTotalPitch(float pitch)
|
||||||
|
{
|
||||||
|
_cameraPitch = XMConvertToRadians(pitch);
|
||||||
|
}
|
||||||
|
|
||||||
|
float Camera::GetPitch() const
|
||||||
|
{
|
||||||
|
return XMConvertToDegrees(_cameraPitch);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Camera::SetYaw(float yaw)
|
||||||
|
{
|
||||||
|
_cameraYaw += XMConvertToRadians(yaw);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Camera::SetTotalYaw(float yaw)
|
||||||
|
{
|
||||||
|
_cameraYaw = XMConvertToRadians(yaw);
|
||||||
|
}
|
||||||
|
|
||||||
|
float Camera::GetYaw() const
|
||||||
|
{
|
||||||
|
return XMConvertToDegrees(_cameraYaw);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Camera::SetRoll(float roll)
|
||||||
|
{
|
||||||
|
_cameraRoll += XMConvertToRadians(roll);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Camera::SetTotalRoll(float roll)
|
||||||
|
{
|
||||||
|
_cameraRoll = XMConvertToRadians(roll);
|
||||||
|
}
|
||||||
|
|
||||||
|
float Camera::GetRoll() const
|
||||||
|
{
|
||||||
|
return XMConvertToDegrees(_cameraRoll);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Camera::SetLeftRight(float leftRight)
|
||||||
|
{
|
||||||
|
_moveLeftRight = leftRight;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Camera::SetForwardBack(float forwardBack)
|
||||||
|
{
|
||||||
|
_moveForwardBack = forwardBack;
|
||||||
|
}
|
||||||
|
|
||||||
|
XMMATRIX Camera::GetViewMatrix(void)
|
||||||
|
{
|
||||||
|
return XMLoadFloat4x4(&_viewMatrix);
|
||||||
|
}
|
||||||
|
|
||||||
|
XMVECTOR Camera::GetCameraPosition(void)
|
||||||
|
{
|
||||||
|
return XMLoadFloat4(&_cameraPosition);
|
||||||
|
}
|
||||||
|
|
||||||
|
XMFLOAT4 Camera::GetRawCameraPosition(void)
|
||||||
|
{
|
||||||
|
return _cameraPosition;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Camera::SetCameraPosition(float x, float y, float z)
|
||||||
|
{
|
||||||
|
_cameraPosition = XMFLOAT4(x, y, z, 0.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Camera::Update(void)
|
||||||
|
{
|
||||||
|
XMVECTOR cameraPosition;
|
||||||
|
XMVECTOR cameraTarget;
|
||||||
|
XMVECTOR cameraRight;
|
||||||
|
XMVECTOR cameraForward;
|
||||||
|
XMVECTOR cameraUp;
|
||||||
|
|
||||||
|
// Yaw (rotation around the Y axis) will have an impact on the forward and right vectors
|
||||||
|
XMMATRIX cameraRotationYaw = XMMatrixRotationAxis(defaultUp, _cameraYaw);
|
||||||
|
cameraRight = XMVector3TransformCoord(defaultRight, cameraRotationYaw);
|
||||||
|
cameraForward = XMVector3TransformCoord(defaultForward, cameraRotationYaw);
|
||||||
|
|
||||||
|
// Pitch (rotation around the X axis) impact the up and forward vectors
|
||||||
|
XMMATRIX cameraRotationPitch = XMMatrixRotationAxis(cameraRight, _cameraPitch);
|
||||||
|
cameraUp = XMVector3TransformCoord(defaultUp, cameraRotationPitch);
|
||||||
|
cameraForward = XMVector3TransformCoord(cameraForward, cameraRotationPitch);
|
||||||
|
|
||||||
|
// Roll (rotation around the Z axis) will impact the Up and Right vectors
|
||||||
|
XMMATRIX cameraRotationRoll = XMMatrixRotationAxis(cameraForward, _cameraRoll);
|
||||||
|
cameraUp = XMVector3TransformCoord(cameraUp, cameraRotationRoll);
|
||||||
|
cameraRight = XMVector3TransformCoord(cameraRight, cameraRotationRoll);
|
||||||
|
|
||||||
|
// Adjust the camera position by the appropriate amount forward/back and left/right
|
||||||
|
cameraPosition = XMLoadFloat4(&_cameraPosition) + _moveLeftRight * cameraRight + _moveForwardBack * cameraForward;
|
||||||
|
XMStoreFloat4(&_cameraPosition, cameraPosition);
|
||||||
|
|
||||||
|
// Reset the amount we are moving
|
||||||
|
_moveLeftRight = 0.0f;
|
||||||
|
_moveForwardBack = 0.0f;
|
||||||
|
|
||||||
|
// Calculate a vector that tells us the direction the camera is looking in
|
||||||
|
cameraTarget = cameraPosition + XMVector3Normalize(cameraForward);
|
||||||
|
|
||||||
|
// and calculate our view matrix
|
||||||
|
XMStoreFloat4x4(&_viewMatrix, XMMatrixLookAtLH(cameraPosition, cameraTarget, cameraUp));
|
||||||
|
}
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "core.h"
|
||||||
|
#include "DirectXCore.h"
|
||||||
|
|
||||||
|
class Camera
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Camera();
|
||||||
|
~Camera();
|
||||||
|
|
||||||
|
void Update();
|
||||||
|
XMMATRIX GetViewMatrix();
|
||||||
|
XMVECTOR GetCameraPosition();
|
||||||
|
XMFLOAT4 GetRawCameraPosition();
|
||||||
|
void SetCameraPosition(float x, float y, float z);
|
||||||
|
void SetPitch(float pitch);
|
||||||
|
void SetTotalPitch(float pitch);
|
||||||
|
float GetPitch() const;
|
||||||
|
void SetYaw(float yaw);
|
||||||
|
void SetTotalYaw(float yaw);
|
||||||
|
float GetYaw() const;
|
||||||
|
void SetRoll(float roll);
|
||||||
|
void SetTotalRoll(float roll);
|
||||||
|
float GetRoll() const;
|
||||||
|
void SetLeftRight(float leftRight);
|
||||||
|
void SetForwardBack(float forwardBack);
|
||||||
|
|
||||||
|
private:
|
||||||
|
XMFLOAT4 _cameraPosition;
|
||||||
|
|
||||||
|
XMFLOAT4X4 _viewMatrix;
|
||||||
|
|
||||||
|
float _moveLeftRight;
|
||||||
|
float _moveForwardBack;
|
||||||
|
|
||||||
|
float _cameraYaw;
|
||||||
|
float _cameraPitch;
|
||||||
|
float _cameraRoll;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,133 @@
|
|||||||
|
//--------------------------------------------------------------------------------------
|
||||||
|
// File: DDSTextureLoader.h
|
||||||
|
//
|
||||||
|
// Functions for loading a DDS texture and creating a Direct3D runtime resource for it
|
||||||
|
//
|
||||||
|
// Note these functions are useful as a light-weight runtime loader for DDS files. For
|
||||||
|
// a full-featured DDS file reader, writer, and texture processing pipeline see
|
||||||
|
// the 'Texconv' sample and the 'DirectXTex' library.
|
||||||
|
//
|
||||||
|
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
|
||||||
|
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
|
||||||
|
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
|
||||||
|
// PARTICULAR PURPOSE.
|
||||||
|
//
|
||||||
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
|
//
|
||||||
|
// http://go.microsoft.com/fwlink/?LinkId=248926
|
||||||
|
// http://go.microsoft.com/fwlink/?LinkId=248929
|
||||||
|
//--------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <d3d11_1.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
|
||||||
|
namespace DirectX
|
||||||
|
{
|
||||||
|
enum DDS_ALPHA_MODE
|
||||||
|
{
|
||||||
|
DDS_ALPHA_MODE_UNKNOWN = 0,
|
||||||
|
DDS_ALPHA_MODE_STRAIGHT = 1,
|
||||||
|
DDS_ALPHA_MODE_PREMULTIPLIED = 2,
|
||||||
|
DDS_ALPHA_MODE_OPAQUE = 3,
|
||||||
|
DDS_ALPHA_MODE_CUSTOM = 4,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Standard version
|
||||||
|
HRESULT CreateDDSTextureFromMemory(
|
||||||
|
_In_ ID3D11Device* d3dDevice,
|
||||||
|
_In_reads_bytes_(ddsDataSize) const uint8_t* ddsData,
|
||||||
|
_In_ size_t ddsDataSize,
|
||||||
|
_Outptr_opt_ ID3D11Resource** texture,
|
||||||
|
_Outptr_opt_ ID3D11ShaderResourceView** textureView,
|
||||||
|
_In_ size_t maxsize = 0,
|
||||||
|
_Out_opt_ DDS_ALPHA_MODE* alphaMode = nullptr);
|
||||||
|
|
||||||
|
HRESULT CreateDDSTextureFromFile(
|
||||||
|
_In_ ID3D11Device* d3dDevice,
|
||||||
|
_In_z_ const wchar_t* szFileName,
|
||||||
|
_Outptr_opt_ ID3D11Resource** texture,
|
||||||
|
_Outptr_opt_ ID3D11ShaderResourceView** textureView,
|
||||||
|
_In_ size_t maxsize = 0,
|
||||||
|
_Out_opt_ DDS_ALPHA_MODE* alphaMode = nullptr);
|
||||||
|
|
||||||
|
// Standard version with optional auto-gen mipmap support
|
||||||
|
HRESULT CreateDDSTextureFromMemory(
|
||||||
|
_In_ ID3D11Device* d3dDevice,
|
||||||
|
_In_opt_ ID3D11DeviceContext* d3dContext,
|
||||||
|
_In_reads_bytes_(ddsDataSize) const uint8_t* ddsData,
|
||||||
|
_In_ size_t ddsDataSize,
|
||||||
|
_Outptr_opt_ ID3D11Resource** texture,
|
||||||
|
_Outptr_opt_ ID3D11ShaderResourceView** textureView,
|
||||||
|
_In_ size_t maxsize = 0,
|
||||||
|
_Out_opt_ DDS_ALPHA_MODE* alphaMode = nullptr);
|
||||||
|
|
||||||
|
HRESULT CreateDDSTextureFromFile(
|
||||||
|
_In_ ID3D11Device* d3dDevice,
|
||||||
|
_In_opt_ ID3D11DeviceContext* d3dContext,
|
||||||
|
_In_z_ const wchar_t* szFileName,
|
||||||
|
_Outptr_opt_ ID3D11Resource** texture,
|
||||||
|
_Outptr_opt_ ID3D11ShaderResourceView** textureView,
|
||||||
|
_In_ size_t maxsize = 0,
|
||||||
|
_Out_opt_ DDS_ALPHA_MODE* alphaMode = nullptr);
|
||||||
|
|
||||||
|
// Extended version
|
||||||
|
HRESULT CreateDDSTextureFromMemoryEx(
|
||||||
|
_In_ ID3D11Device* d3dDevice,
|
||||||
|
_In_reads_bytes_(ddsDataSize) const uint8_t* ddsData,
|
||||||
|
_In_ size_t ddsDataSize,
|
||||||
|
_In_ size_t maxsize,
|
||||||
|
_In_ D3D11_USAGE usage,
|
||||||
|
_In_ unsigned int bindFlags,
|
||||||
|
_In_ unsigned int cpuAccessFlags,
|
||||||
|
_In_ unsigned int miscFlags,
|
||||||
|
_In_ bool forceSRGB,
|
||||||
|
_Outptr_opt_ ID3D11Resource** texture,
|
||||||
|
_Outptr_opt_ ID3D11ShaderResourceView** textureView,
|
||||||
|
_Out_opt_ DDS_ALPHA_MODE* alphaMode = nullptr);
|
||||||
|
|
||||||
|
HRESULT CreateDDSTextureFromFileEx(
|
||||||
|
_In_ ID3D11Device* d3dDevice,
|
||||||
|
_In_z_ const wchar_t* szFileName,
|
||||||
|
_In_ size_t maxsize,
|
||||||
|
_In_ D3D11_USAGE usage,
|
||||||
|
_In_ unsigned int bindFlags,
|
||||||
|
_In_ unsigned int cpuAccessFlags,
|
||||||
|
_In_ unsigned int miscFlags,
|
||||||
|
_In_ bool forceSRGB,
|
||||||
|
_Outptr_opt_ ID3D11Resource** texture,
|
||||||
|
_Outptr_opt_ ID3D11ShaderResourceView** textureView,
|
||||||
|
_Out_opt_ DDS_ALPHA_MODE* alphaMode = nullptr);
|
||||||
|
|
||||||
|
// Extended version with optional auto-gen mipmap support
|
||||||
|
HRESULT CreateDDSTextureFromMemoryEx(
|
||||||
|
_In_ ID3D11Device* d3dDevice,
|
||||||
|
_In_opt_ ID3D11DeviceContext* d3dContext,
|
||||||
|
_In_reads_bytes_(ddsDataSize) const uint8_t* ddsData,
|
||||||
|
_In_ size_t ddsDataSize,
|
||||||
|
_In_ size_t maxsize,
|
||||||
|
_In_ D3D11_USAGE usage,
|
||||||
|
_In_ unsigned int bindFlags,
|
||||||
|
_In_ unsigned int cpuAccessFlags,
|
||||||
|
_In_ unsigned int miscFlags,
|
||||||
|
_In_ bool forceSRGB,
|
||||||
|
_Outptr_opt_ ID3D11Resource** texture,
|
||||||
|
_Outptr_opt_ ID3D11ShaderResourceView** textureView,
|
||||||
|
_Out_opt_ DDS_ALPHA_MODE* alphaMode = nullptr);
|
||||||
|
|
||||||
|
HRESULT CreateDDSTextureFromFileEx(
|
||||||
|
_In_ ID3D11Device* d3dDevice,
|
||||||
|
_In_opt_ ID3D11DeviceContext* d3dContext,
|
||||||
|
_In_z_ const wchar_t* szFileName,
|
||||||
|
_In_ size_t maxsize,
|
||||||
|
_In_ D3D11_USAGE usage,
|
||||||
|
_In_ unsigned int bindFlags,
|
||||||
|
_In_ unsigned int cpuAccessFlags,
|
||||||
|
_In_ unsigned int miscFlags,
|
||||||
|
_In_ bool forceSRGB,
|
||||||
|
_Outptr_opt_ ID3D11Resource** texture,
|
||||||
|
_Outptr_opt_ ID3D11ShaderResourceView** textureView,
|
||||||
|
_Out_opt_ DDS_ALPHA_MODE* alphaMode = nullptr);
|
||||||
|
}
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
DirectXFramework * _dxFramework = nullptr;
|
DirectXFramework * _dxFramework = nullptr;
|
||||||
|
|
||||||
DirectXFramework::DirectXFramework() : DirectXFramework(800, 600)
|
DirectXFramework::DirectXFramework() : DirectXFramework(800, 600)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
DirectXFramework::DirectXFramework(unsigned int width, unsigned int height) : Framework(width, height)
|
DirectXFramework::DirectXFramework(unsigned int width, unsigned int height) : Framework(width, height)
|
||||||
@@ -19,12 +19,6 @@ DirectXFramework::DirectXFramework(unsigned int width, unsigned int height) : Fr
|
|||||||
_backgroundColour[1] = 0.0f;
|
_backgroundColour[1] = 0.0f;
|
||||||
_backgroundColour[2] = 0.0f;
|
_backgroundColour[2] = 0.0f;
|
||||||
_backgroundColour[3] = 0.0f;
|
_backgroundColour[3] = 0.0f;
|
||||||
|
|
||||||
// Initialise vectors used to create camera. We will move these
|
|
||||||
// to a separate Camera class later
|
|
||||||
_eyePosition = XMFLOAT4(0.0f, 20.0f, -90.0f, 0.0f);
|
|
||||||
_focalPointPosition = XMFLOAT4(0.0f, 20.0f, 0.0f, 0.0f);
|
|
||||||
_upVector = XMFLOAT4(0.0f, 1.0f, 0.0f, 0.0f);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DirectXFramework * DirectXFramework::GetDXFramework()
|
DirectXFramework * DirectXFramework::GetDXFramework()
|
||||||
@@ -32,11 +26,6 @@ DirectXFramework * DirectXFramework::GetDXFramework()
|
|||||||
return _dxFramework;
|
return _dxFramework;
|
||||||
}
|
}
|
||||||
|
|
||||||
XMMATRIX DirectXFramework::GetViewTransformation()
|
|
||||||
{
|
|
||||||
return XMLoadFloat4x4(&_viewTransformation);
|
|
||||||
}
|
|
||||||
|
|
||||||
XMMATRIX DirectXFramework::GetProjectionTransformation()
|
XMMATRIX DirectXFramework::GetProjectionTransformation()
|
||||||
{
|
{
|
||||||
return XMLoadFloat4x4(&_projectionTransformation);
|
return XMLoadFloat4x4(&_projectionTransformation);
|
||||||
@@ -73,12 +62,13 @@ bool DirectXFramework::Initialise()
|
|||||||
}
|
}
|
||||||
OnResize(SIZE_RESTORED);
|
OnResize(SIZE_RESTORED);
|
||||||
|
|
||||||
// Create camera and projection matrices (we will look at how the
|
// Create camera and projection matrices
|
||||||
// camera matrix is created from vectors later)
|
XMStoreFloat4x4(&_projectionTransformation, XMMatrixPerspectiveFovLH(XM_PIDIV4, (float)GetWindowWidth() / GetWindowHeight(), 1.0f, 1000.0f));
|
||||||
XMStoreFloat4x4(&_projectionTransformation, XMMatrixPerspectiveFovLH(XM_PIDIV4, (float)GetWindowWidth() / GetWindowHeight(), 1.0f, 10000.0f));
|
|
||||||
_resourceManager = make_shared<ResourceManager>();
|
_resourceManager = make_shared<ResourceManager>();
|
||||||
_sceneGraph = make_shared<SceneGraph>();
|
_sceneGraph = make_shared<SceneGraph>();
|
||||||
|
_camera = make_shared<Camera>();
|
||||||
CreateSceneGraph();
|
CreateSceneGraph();
|
||||||
|
|
||||||
return _sceneGraph->Initialise();
|
return _sceneGraph->Initialise();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -93,6 +83,8 @@ void DirectXFramework::Update()
|
|||||||
{
|
{
|
||||||
// Do any updates to the scene graph nodes
|
// Do any updates to the scene graph nodes
|
||||||
UpdateSceneGraph();
|
UpdateSceneGraph();
|
||||||
|
|
||||||
|
_camera->Update();
|
||||||
// Now apply any updates that have been made to world transformations
|
// Now apply any updates that have been made to world transformations
|
||||||
// to all the nodes
|
// to all the nodes
|
||||||
_sceneGraph->Update(XMMatrixIdentity());
|
_sceneGraph->Update(XMMatrixIdentity());
|
||||||
@@ -112,7 +104,7 @@ void DirectXFramework::Render()
|
|||||||
void DirectXFramework::OnResize(WPARAM wParam)
|
void DirectXFramework::OnResize(WPARAM wParam)
|
||||||
{
|
{
|
||||||
// Update view and projection matrices to allow for the window size change
|
// Update view and projection matrices to allow for the window size change
|
||||||
XMStoreFloat4x4(&_viewTransformation, XMMatrixLookAtLH(XMLoadFloat4(&_eyePosition), XMLoadFloat4(&_focalPointPosition), XMLoadFloat4(&_upVector)));
|
//XMStoreFloat4x4(&_viewTransformation, XMMatrixLookAtLH(XMLoadFloat4(&_eyePosition), XMLoadFloat4(&_focalPointPosition), XMLoadFloat4(&_upVector)));
|
||||||
XMStoreFloat4x4(&_projectionTransformation, XMMatrixPerspectiveFovLH(XM_PIDIV4, (float)GetWindowWidth() / GetWindowHeight(), 1.0f, 10000.0f));
|
XMStoreFloat4x4(&_projectionTransformation, XMMatrixPerspectiveFovLH(XM_PIDIV4, (float)GetWindowWidth() / GetWindowHeight(), 1.0f, 10000.0f));
|
||||||
|
|
||||||
// This will free any existing render and depth views (which
|
// This will free any existing render and depth views (which
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
#include "DirectXCore.h"
|
#include "DirectXCore.h"
|
||||||
#include "ResourceManager.h"
|
#include "ResourceManager.h"
|
||||||
#include "SceneGraph.h"
|
#include "SceneGraph.h"
|
||||||
|
#include "Camera.h"
|
||||||
|
|
||||||
class DirectXFramework : public Framework
|
class DirectXFramework : public Framework
|
||||||
{
|
{
|
||||||
@@ -28,11 +29,12 @@ public:
|
|||||||
|
|
||||||
inline shared_ptr<ResourceManager> GetResourceManager() { return _resourceManager; }
|
inline shared_ptr<ResourceManager> GetResourceManager() { return _resourceManager; }
|
||||||
|
|
||||||
XMMATRIX GetViewTransformation();
|
|
||||||
XMMATRIX GetProjectionTransformation();
|
XMMATRIX GetProjectionTransformation();
|
||||||
|
|
||||||
void SetBackgroundColour(XMFLOAT4 backgroundColour);
|
void SetBackgroundColour(XMFLOAT4 backgroundColour);
|
||||||
|
|
||||||
|
inline shared_ptr<Camera> GetCamera() { return _camera; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ComPtr<ID3D11Device> _device;
|
ComPtr<ID3D11Device> _device;
|
||||||
ComPtr<ID3D11DeviceContext> _deviceContext;
|
ComPtr<ID3D11DeviceContext> _deviceContext;
|
||||||
@@ -48,13 +50,6 @@ private:
|
|||||||
// to be aligned on 16-byte boundaries and the compiler cannot
|
// to be aligned on 16-byte boundaries and the compiler cannot
|
||||||
// guarantee this for class variables
|
// guarantee this for class variables
|
||||||
|
|
||||||
// For now, we are storing our camera vectors and matrix here.
|
|
||||||
// We will move it to a separate Camera class later
|
|
||||||
XMFLOAT4 _eyePosition;
|
|
||||||
XMFLOAT4 _focalPointPosition;
|
|
||||||
XMFLOAT4 _upVector;
|
|
||||||
|
|
||||||
XMFLOAT4X4 _viewTransformation;
|
|
||||||
XMFLOAT4X4 _projectionTransformation;
|
XMFLOAT4X4 _projectionTransformation;
|
||||||
|
|
||||||
SceneGraphPointer _sceneGraph;
|
SceneGraphPointer _sceneGraph;
|
||||||
@@ -64,5 +59,6 @@ private:
|
|||||||
bool GetDeviceAndSwapChain();
|
bool GetDeviceAndSwapChain();
|
||||||
|
|
||||||
shared_ptr<ResourceManager> _resourceManager;
|
shared_ptr<ResourceManager> _resourceManager;
|
||||||
|
shared_ptr<Camera> _camera;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -0,0 +1,107 @@
|
|||||||
|
#include "GamePadController.h"
|
||||||
|
|
||||||
|
GamePadController::GamePadController(void)
|
||||||
|
{
|
||||||
|
_firstTime = true;
|
||||||
|
_leftThumbDeadZoneSquared = XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE * XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE;
|
||||||
|
_rightThumbDeadZoneSquared = XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE * XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
GamePadController::~GamePadController(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void GamePadController::ProcessGameController()
|
||||||
|
{
|
||||||
|
DWORD magnitudeSquared;
|
||||||
|
|
||||||
|
ZeroMemory(&_controllerState, sizeof(XINPUT_STATE));
|
||||||
|
// Get the state of the controller
|
||||||
|
if (XInputGetState(0, &_controllerState) != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
// Controller is not connected or is lost
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Uncomment out this if statement if you only want to test the controller if it has
|
||||||
|
// changed since the last time it was tested
|
||||||
|
//if (!_firstTime && _controllerState.dwPacketNumber != _lastPacketNumber)
|
||||||
|
//{
|
||||||
|
// No change in controller states
|
||||||
|
//}
|
||||||
|
_firstTime = false;
|
||||||
|
|
||||||
|
// Deal with the left thumb stick
|
||||||
|
SHORT thumbLX = _controllerState.Gamepad.sThumbLX;
|
||||||
|
SHORT thumbLY = _controllerState.Gamepad.sThumbLY;
|
||||||
|
|
||||||
|
// Determine how far the controller is pushed
|
||||||
|
magnitudeSquared = thumbLX * thumbLX + thumbLY * thumbLY;
|
||||||
|
|
||||||
|
// check if the controller is inside a circular dead zone. We do it this way to avoid having to
|
||||||
|
// take the square root of the magnitude above.
|
||||||
|
if (magnitudeSquared <= _leftThumbDeadZoneSquared)
|
||||||
|
{
|
||||||
|
thumbLX = 0;
|
||||||
|
thumbLY = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deal with the right thumb stick
|
||||||
|
SHORT thumbRX = _controllerState.Gamepad.sThumbRX;
|
||||||
|
SHORT thumbRY = _controllerState.Gamepad.sThumbRY;
|
||||||
|
|
||||||
|
// Determine how far the controller is pushed
|
||||||
|
magnitudeSquared = thumbRX * thumbRX + thumbRY * thumbRY;
|
||||||
|
|
||||||
|
//check if the controller is inside a circular dead zone
|
||||||
|
if (magnitudeSquared <= _rightThumbDeadZoneSquared)
|
||||||
|
{
|
||||||
|
thumbRX = 0;
|
||||||
|
thumbRY = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check left and right triggers
|
||||||
|
BYTE leftTrigger = _controllerState.Gamepad.bLeftTrigger;
|
||||||
|
if (leftTrigger <= XINPUT_GAMEPAD_TRIGGER_THRESHOLD)
|
||||||
|
{
|
||||||
|
leftTrigger = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BYTE rightTrigger = _controllerState.Gamepad.bRightTrigger;
|
||||||
|
if (rightTrigger <= XINPUT_GAMEPAD_TRIGGER_THRESHOLD)
|
||||||
|
{
|
||||||
|
rightTrigger = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Test the different digital buttons
|
||||||
|
WORD buttons = _controllerState.Gamepad.wButtons;
|
||||||
|
if (buttons & XINPUT_GAMEPAD_DPAD_UP)
|
||||||
|
{
|
||||||
|
// Directional pad up pressed
|
||||||
|
}
|
||||||
|
if (buttons & XINPUT_GAMEPAD_DPAD_DOWN)
|
||||||
|
{
|
||||||
|
// Directional pad down pressed
|
||||||
|
}
|
||||||
|
if (buttons & XINPUT_GAMEPAD_DPAD_LEFT)
|
||||||
|
{
|
||||||
|
// Directional pad left pressed
|
||||||
|
}
|
||||||
|
if (buttons & XINPUT_GAMEPAD_DPAD_RIGHT)
|
||||||
|
{
|
||||||
|
// Directional pad right pressed
|
||||||
|
}
|
||||||
|
|
||||||
|
// Other button mask values that can be used are:
|
||||||
|
//
|
||||||
|
// XINPUT_GAMEPAD_START,
|
||||||
|
// XINPUT_GAMEPAD_BACK,
|
||||||
|
// XINPUT_GAMEPAD_LEFT_THUMB,
|
||||||
|
// XINPUT_GAMEPAD_RIGHT_THUMB,
|
||||||
|
// XINPUT_GAMEPAD_LEFT_SHOULDER,
|
||||||
|
// XINPUT_GAMEPAD_RIGHT_SHOULDER,
|
||||||
|
// XINPUT_GAMEPAD_A,
|
||||||
|
// XINPUT_GAMEPAD_B,
|
||||||
|
// XINPUT_GAMEPAD_X,
|
||||||
|
// XINPUT_GAMEPAD_Y
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "Core.h"
|
||||||
|
#include "DirectXCore.h"
|
||||||
|
#include <XInput.h>
|
||||||
|
#pragma comment(lib, "XInput.lib")
|
||||||
|
|
||||||
|
class GamePadController
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
GamePadController();
|
||||||
|
~GamePadController();
|
||||||
|
void ProcessGameController();
|
||||||
|
|
||||||
|
private:
|
||||||
|
XINPUT_STATE _controllerState;
|
||||||
|
DWORD _lastPacketNumber;
|
||||||
|
bool _firstTime;
|
||||||
|
|
||||||
|
// These two values are used to avoid having to calculate square roots (which are very time consuming)
|
||||||
|
// when we are checking if the movement of the left or right thumb stick is in the dead zone
|
||||||
|
DWORD _leftThumbDeadZoneSquared;
|
||||||
|
DWORD _rightThumbDeadZoneSquared;
|
||||||
|
};
|
||||||
|
|
||||||
+129
-7
@@ -3,19 +3,31 @@
|
|||||||
Graphics2 app;
|
Graphics2 app;
|
||||||
|
|
||||||
void Graphics2::CreateSceneGraph()
|
void Graphics2::CreateSceneGraph()
|
||||||
{
|
{
|
||||||
|
_boostMultiplier = 1;
|
||||||
|
_flySpeed = 1;
|
||||||
|
_turnSpeed = 1;
|
||||||
|
_invertPitch = -1;
|
||||||
|
|
||||||
|
GetCamera()->SetCameraPosition(0.0f, 320.0f, -80.0f);
|
||||||
|
|
||||||
SceneGraphPointer sceneGraph = GetSceneGraph();
|
SceneGraphPointer sceneGraph = GetSceneGraph();
|
||||||
|
|
||||||
// This is where you add nodes to the scene graph
|
// This is where you add nodes to the scene graph
|
||||||
//shared_ptr<TexturedCubeNode> cube = make_shared<TexturedCubeNode>(L"Body", L"Textures\\woodbox.bmp");
|
//shared_ptr<TexturedCubeNode> cube = make_shared<TexturedCubeNode>(L"Body", L"Textures\\woodbox.bmp");
|
||||||
//cube->SetWorldTransform(XMMatrixScaling(5.0f, 8.0f, 2.5f) * XMMatrixTranslation(0, 23.0f, 0));
|
//cube->SetWorldTransform(XMMatrixScaling(5.0f, 8.0f, 2.5f) * XMMatrixTranslation(0, 23.0f, 0));
|
||||||
//sceneGraph->Add(cube);
|
//sceneGraph->Add(cube);
|
||||||
|
|
||||||
|
shared_ptr<TerrainNode> terrainNode = make_shared<TerrainNode>(L"MainTerrain", L"Textures\\Example_HeightMap.raw", 1023, 1023, 10, 10);
|
||||||
|
sceneGraph->Add(terrainNode);
|
||||||
|
|
||||||
shared_ptr<SplitMeshNode> node = make_shared<SplitMeshNode>(L"Plane1", L"Models\\Plane\\Bonanza.3DS");
|
shared_ptr<SplitMeshNode> node = make_shared<SplitMeshNode>(L"Plane1", L"Models\\Plane\\Bonanza.3DS");
|
||||||
node->SetWorldTransform(XMMatrixScaling(0.5f, 0.5f, 0.5f) * XMMatrixRotationAxis(XMVectorSet(1.0f, 0.0f, 0.0f, 0.0f), 90.0f * XM_PI / 180.0f) * XMMatrixTranslation(-30.0f, 20.0f, 0));
|
//shared_ptr<MeshNode> node = make_shared<MeshNode>(L"Plane1", L"Models\\Plane\\Bonanza.3DS");
|
||||||
|
node->SetWorldTransform(XMMatrixScaling(0.5f, 0.5f, 0.5f) * XMMatrixTranslation(-30.0f, 320.0f, 0));
|
||||||
sceneGraph->Add(node);
|
sceneGraph->Add(node);
|
||||||
|
|
||||||
SetBackgroundColour(XMFLOAT4(0.29f, 0.38f, 0.72f, 1.0f));
|
//SetBackgroundColour(XMFLOAT4(0.29f, 0.38f, 0.72f, 1.0f));
|
||||||
|
//SetBackgroundColour(XMFLOAT4(SharedMethods::RGBValueToIntensity(0x89), 0, 1, 1));
|
||||||
|
|
||||||
_currentRotation = 0;
|
_currentRotation = 0;
|
||||||
_currentSideRotation = 0;
|
_currentSideRotation = 0;
|
||||||
@@ -24,22 +36,132 @@ void Graphics2::CreateSceneGraph()
|
|||||||
|
|
||||||
void Graphics2::UpdateSceneGraph()
|
void Graphics2::UpdateSceneGraph()
|
||||||
{
|
{
|
||||||
|
GetCurrentControlInputs();
|
||||||
|
|
||||||
SceneGraphPointer sceneGraph = GetSceneGraph();
|
SceneGraphPointer sceneGraph = GetSceneGraph();
|
||||||
|
|
||||||
|
for (ControlInputs currentControl : _currentInputs)
|
||||||
|
{
|
||||||
|
switch (currentControl)
|
||||||
|
{
|
||||||
|
case ControlInputs::Forward:
|
||||||
|
GetCamera()->SetForwardBack(_flySpeed * _boostMultiplier);
|
||||||
|
break;
|
||||||
|
case ControlInputs::Back:
|
||||||
|
GetCamera()->SetForwardBack(-_flySpeed * _boostMultiplier);
|
||||||
|
break;
|
||||||
|
case ControlInputs::StrafeLeft:
|
||||||
|
GetCamera()->SetLeftRight(-_flySpeed * _boostMultiplier);
|
||||||
|
break;
|
||||||
|
case ControlInputs::StrafeRight:
|
||||||
|
GetCamera()->SetLeftRight(_flySpeed * _boostMultiplier);
|
||||||
|
break;
|
||||||
|
case ControlInputs::TurnLeft:
|
||||||
|
GetCamera()->SetYaw(-_turnSpeed);
|
||||||
|
break;
|
||||||
|
case ControlInputs::TurnRight:
|
||||||
|
GetCamera()->SetYaw(_turnSpeed);
|
||||||
|
break;
|
||||||
|
case ControlInputs::Up:
|
||||||
|
GetCamera()->SetPitch(_turnSpeed * _invertPitch);
|
||||||
|
break;
|
||||||
|
case ControlInputs::Down:
|
||||||
|
GetCamera()->SetPitch(-_turnSpeed * _invertPitch);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
sceneGraph->SetWorldTransform((SharedMethods::RotateFromPoint(30.0f, -20.0f, 0, XMMatrixRotationAxis(XMVectorSet(0.0f, 0.0f, -1.0f, 0.0f), _currentSideRotation * XM_PI / 180.0f))) * XMMatrixRotationAxis(XMVectorSet(0.0f, -1.0f, 0.0f, 0.0f), _currentRotation * XM_PI / 180.0f));
|
SceneNodePointer plane1 = sceneGraph->Find(L"Plane1");
|
||||||
|
|
||||||
sceneGraph->Find(L"airscrew")->SetWorldTransform(SharedMethods::RotateFromPoint(0.0f, 15.471f, 14.5f, XMMatrixRotationAxis(XMVectorSet(0.0f, 1.0f, 0.0f, 0.0f), _currentPropRotation * XM_PI / 180.0f)));
|
plane1->GetFirstChild()->SetWorldTransform(SharedMethods::RotateFromPoint(-60.0f, 0, 0, XMMatrixRotationAxis(XMVectorSet(0.0f, 0.0f, 1.0f, 0.0f), _currentRotation * XM_PI / 180.0f)));
|
||||||
|
plane1 ->GetFirstChild()->AddToWorldTransform(XMMatrixRotationAxis(XMVectorSet(1.0f, 0.0f, 0.0f, 0.0f), 90.0f * XM_PI / 180.0f));
|
||||||
|
//sceneGraph->Find(L"Plane1")->GetFirstChild()->GetFirstChild()->SetWorldTransform(XMMatrixRotationAxis(XMVectorSet(0.0f, -1.0f, -1.0f, 0.0f), _currentSideRotation * XM_PI / 180.0f));
|
||||||
|
|
||||||
|
//sceneGraph->Find(L"Plane1")->Update((SharedMethods::RotateFromPoint(30.0f, -20.0f, 0, XMMatrixRotationAxis(XMVectorSet(0.0f, 0.0f, 1.0f, 0.0f), _currentSideRotation * XM_PI / 180.0f))) * XMMatrixRotationAxis(XMVectorSet(0.0f, -1.0f, 0.0f, 0.0f), _currentRotation * XM_PI / 180.0f));
|
||||||
|
|
||||||
|
plane1->Find(L"airscrew")->SetWorldTransform(SharedMethods::RotateFromPoint(0.0f, 15.471f, 14.5f, XMMatrixRotationAxis(XMVectorSet(0.0f, 1.0f, 0.0f, 0.0f), _currentPropRotation * XM_PI / 180.0f)));
|
||||||
|
|
||||||
if (_currentRotation == 360)
|
if (_currentRotation == 360)
|
||||||
{
|
{
|
||||||
_currentRotation = 0;
|
_currentRotation = 0;
|
||||||
//_currentSideRotation = 0;
|
_currentSideRotation = 0;
|
||||||
_currentPropRotation = 0;
|
_currentPropRotation = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_currentRotation += 1;
|
_currentRotation += 1;
|
||||||
_currentSideRotation += 0.3;
|
_currentSideRotation += 1;
|
||||||
_currentPropRotation += 100;
|
_currentPropRotation += 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ResetCurrentControlInputs();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Graphics2::GetCurrentControlInputs()
|
||||||
|
{
|
||||||
|
// Check if the window has focus before accepting any keypresses
|
||||||
|
if (GetForegroundWindow() == Framework::GetHWnd())
|
||||||
|
{
|
||||||
|
if (GetAsyncKeyState(VK_SHIFT))
|
||||||
|
{
|
||||||
|
_boostMultiplier = 2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_boostMultiplier = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Forward
|
||||||
|
if (GetAsyncKeyState(0x57))
|
||||||
|
{
|
||||||
|
_currentInputs.push_back(ControlInputs::Forward);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Back
|
||||||
|
if (GetAsyncKeyState(0x53))
|
||||||
|
{
|
||||||
|
_currentInputs.push_back(ControlInputs::Back);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Turn Left
|
||||||
|
if (GetAsyncKeyState(0x41))
|
||||||
|
{
|
||||||
|
_currentInputs.push_back(ControlInputs::TurnLeft);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Turn Right
|
||||||
|
if (GetAsyncKeyState(0x44))
|
||||||
|
{
|
||||||
|
_currentInputs.push_back(ControlInputs::TurnRight);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Strafe Left
|
||||||
|
if (GetAsyncKeyState(0x51))
|
||||||
|
{
|
||||||
|
_currentInputs.push_back(ControlInputs::StrafeLeft);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Strafe Right
|
||||||
|
if (GetAsyncKeyState(0x45))
|
||||||
|
{
|
||||||
|
_currentInputs.push_back(ControlInputs::StrafeRight);
|
||||||
|
}
|
||||||
|
|
||||||
|
// "Jump"
|
||||||
|
if (GetAsyncKeyState(VK_SPACE))
|
||||||
|
{
|
||||||
|
_currentInputs.push_back(ControlInputs::Up);
|
||||||
|
}
|
||||||
|
|
||||||
|
// "Crouch"
|
||||||
|
if (GetAsyncKeyState(VK_CONTROL))
|
||||||
|
{
|
||||||
|
_currentInputs.push_back(ControlInputs::Down);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Graphics2::ResetCurrentControlInputs()
|
||||||
|
{
|
||||||
|
_currentInputs.clear();
|
||||||
|
}
|
||||||
@@ -4,8 +4,11 @@
|
|||||||
#include "TexturedCubeNode.h"
|
#include "TexturedCubeNode.h"
|
||||||
#include "MeshNode.h"
|
#include "MeshNode.h"
|
||||||
#include "SplitMeshNode.h"
|
#include "SplitMeshNode.h"
|
||||||
|
#include "TerrainNode.h"
|
||||||
#include <ctime>
|
#include <ctime>
|
||||||
|
|
||||||
|
enum class ControlInputs {Forward, Back, TurnLeft, TurnRight, StrafeLeft, StrafeRight, Up, Down, Fire1, Fire2};
|
||||||
|
|
||||||
class Graphics2 : public DirectXFramework
|
class Graphics2 : public DirectXFramework
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -13,8 +16,21 @@ public:
|
|||||||
void UpdateSceneGraph();
|
void UpdateSceneGraph();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
bool _boosting;
|
||||||
|
float _boostMultiplier;
|
||||||
|
|
||||||
|
float _flySpeed;
|
||||||
|
float _turnSpeed;
|
||||||
|
int _invertPitch;
|
||||||
|
|
||||||
|
|
||||||
float _currentRotation = 0.0f;
|
float _currentRotation = 0.0f;
|
||||||
float _currentSideRotation = 0.0f;
|
float _currentSideRotation = 0.0f;
|
||||||
float _currentPropRotation = 0.0f;
|
float _currentPropRotation = 0.0f;
|
||||||
|
|
||||||
|
vector<ControlInputs> _currentInputs;
|
||||||
|
|
||||||
|
void GetCurrentControlInputs();
|
||||||
|
void ResetCurrentControlInputs();
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -29,13 +29,13 @@
|
|||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
<PlatformToolset>v142</PlatformToolset>
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
<PlatformToolset>v142</PlatformToolset>
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
<PlatformToolset>v142</PlatformToolset>
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
@@ -144,10 +144,13 @@
|
|||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<ClInclude Include="Camera.h" />
|
||||||
<ClInclude Include="Core.h" />
|
<ClInclude Include="Core.h" />
|
||||||
|
<ClInclude Include="DDSTextureLoader.h" />
|
||||||
<ClInclude Include="DirectXCore.h" />
|
<ClInclude Include="DirectXCore.h" />
|
||||||
<ClInclude Include="Framework.h" />
|
<ClInclude Include="Framework.h" />
|
||||||
<ClInclude Include="DirectXFramework.h" />
|
<ClInclude Include="DirectXFramework.h" />
|
||||||
|
<ClInclude Include="GamePadController.h" />
|
||||||
<ClInclude Include="Graphics2.h" />
|
<ClInclude Include="Graphics2.h" />
|
||||||
<ClInclude Include="HelperFunctions.h" />
|
<ClInclude Include="HelperFunctions.h" />
|
||||||
<ClInclude Include="Mesh.h" />
|
<ClInclude Include="Mesh.h" />
|
||||||
@@ -163,7 +166,9 @@
|
|||||||
<ClInclude Include="SubMeshNode.h" />
|
<ClInclude Include="SubMeshNode.h" />
|
||||||
<ClInclude Include="SubMeshRenderer.h" />
|
<ClInclude Include="SubMeshRenderer.h" />
|
||||||
<ClInclude Include="targetver.h" />
|
<ClInclude Include="targetver.h" />
|
||||||
|
<ClInclude Include="TerrainNode.h" />
|
||||||
<ClInclude Include="TexturedCubeNode.h" />
|
<ClInclude Include="TexturedCubeNode.h" />
|
||||||
|
<ClInclude Include="Vector3D.h" />
|
||||||
<ClInclude Include="WICTextureLoader.h" />
|
<ClInclude Include="WICTextureLoader.h" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@@ -179,8 +184,11 @@
|
|||||||
<Image Include="Textures\woodbox.bmp" />
|
<Image Include="Textures\woodbox.bmp" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<ClCompile Include="Camera.cpp" />
|
||||||
|
<ClCompile Include="DDSTextureLoader.cpp" />
|
||||||
<ClCompile Include="Framework.cpp" />
|
<ClCompile Include="Framework.cpp" />
|
||||||
<ClCompile Include="DirectXFramework.cpp" />
|
<ClCompile Include="DirectXFramework.cpp" />
|
||||||
|
<ClCompile Include="GamePadController.cpp" />
|
||||||
<ClCompile Include="Graphics2.cpp" />
|
<ClCompile Include="Graphics2.cpp" />
|
||||||
<ClCompile Include="Mesh.cpp" />
|
<ClCompile Include="Mesh.cpp" />
|
||||||
<ClCompile Include="MeshNode.cpp" />
|
<ClCompile Include="MeshNode.cpp" />
|
||||||
@@ -191,7 +199,9 @@
|
|||||||
<ClCompile Include="SplitMeshNode.cpp" />
|
<ClCompile Include="SplitMeshNode.cpp" />
|
||||||
<ClCompile Include="SubMeshNode.cpp" />
|
<ClCompile Include="SubMeshNode.cpp" />
|
||||||
<ClCompile Include="SubMeshRenderer.cpp" />
|
<ClCompile Include="SubMeshRenderer.cpp" />
|
||||||
|
<ClCompile Include="TerrainNode.cpp" />
|
||||||
<ClCompile Include="TexturedCubeNode.cpp" />
|
<ClCompile Include="TexturedCubeNode.cpp" />
|
||||||
|
<ClCompile Include="Vector3D.cpp" />
|
||||||
<ClCompile Include="WICTextureLoader.cpp" />
|
<ClCompile Include="WICTextureLoader.cpp" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@@ -208,6 +218,16 @@
|
|||||||
<None Include="assimp-vc140-mt.dll" />
|
<None Include="assimp-vc140-mt.dll" />
|
||||||
<None Include="zlib.dll" />
|
<None Include="zlib.dll" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Text Include="TerrainShaders.hlsl">
|
||||||
|
<FileType>Document</FileType>
|
||||||
|
</Text>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Text Include="TerrainShadersNoBlend.hlsl">
|
||||||
|
<FileType>Document</FileType>
|
||||||
|
</Text>
|
||||||
|
</ItemGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
|
|||||||
@@ -81,6 +81,21 @@
|
|||||||
<ClInclude Include="SplitMeshNode.h">
|
<ClInclude Include="SplitMeshNode.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="TerrainNode.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="Camera.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="GamePadController.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="DDSTextureLoader.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="Vector3D.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ResourceCompile Include="Graphics2.rc">
|
<ResourceCompile Include="Graphics2.rc">
|
||||||
@@ -153,6 +168,21 @@
|
|||||||
<ClCompile Include="SplitMeshNode.cpp">
|
<ClCompile Include="SplitMeshNode.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="TerrainNode.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="Camera.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="GamePadController.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="DDSTextureLoader.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="Vector3D.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Text Include="shader.hlsl">
|
<Text Include="shader.hlsl">
|
||||||
@@ -161,6 +191,12 @@
|
|||||||
<Text Include="TexturedShaders.hlsl">
|
<Text Include="TexturedShaders.hlsl">
|
||||||
<Filter>Shaders</Filter>
|
<Filter>Shaders</Filter>
|
||||||
</Text>
|
</Text>
|
||||||
|
<Text Include="TerrainShaders.hlsl">
|
||||||
|
<Filter>Shaders</Filter>
|
||||||
|
</Text>
|
||||||
|
<Text Include="TerrainShadersNoBlend.hlsl">
|
||||||
|
<Filter>Shaders</Filter>
|
||||||
|
</Text>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="assimp-vc140-mt.dll" />
|
<None Include="assimp-vc140-mt.dll" />
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ void MeshNode::Render()
|
|||||||
{
|
{
|
||||||
_renderer->SetMesh(_mesh);
|
_renderer->SetMesh(_mesh);
|
||||||
_renderer->SetWorldTransformation(XMLoadFloat4x4(&_combinedWorldTransformation));
|
_renderer->SetWorldTransformation(XMLoadFloat4x4(&_combinedWorldTransformation));
|
||||||
_renderer->SetCameraPosition(XMFLOAT4(0.0f, 0.0f, -100.0f, 1.0f));
|
_renderer->SetCameraPosition(DirectXFramework::GetDXFramework()->GetCamera()->GetRawCameraPosition());
|
||||||
_renderer->SetAmbientLight(XMFLOAT4(0.5f, 0.5f, 0.5f, 1.0f));
|
_renderer->SetAmbientLight(XMFLOAT4(0.5f, 0.5f, 0.5f, 1.0f));
|
||||||
_renderer->SetDirectionalLight(XMVectorSet(0.0f, -1.0f, 1.0f, 0.0f), XMFLOAT4(1.0f, 1.0f, 1.0f, 1.0f));
|
_renderer->SetDirectionalLight(XMVectorSet(0.0f, -1.0f, 1.0f, 0.0f), XMFLOAT4(1.0f, 1.0f, 1.0f, 1.0f));
|
||||||
_renderer->Render();
|
_renderer->Render();
|
||||||
|
|||||||
+13
-13
@@ -58,10 +58,10 @@ void MeshRenderer::RenderNode(shared_ptr<Node> node, bool renderTransparent)
|
|||||||
_deviceContext->IASetVertexBuffers(0, 1, _vertexBuffer.GetAddressOf(), &stride, &offset);
|
_deviceContext->IASetVertexBuffers(0, 1, _vertexBuffer.GetAddressOf(), &stride, &offset);
|
||||||
_indexBuffer = subMesh->GetIndexBuffer();
|
_indexBuffer = subMesh->GetIndexBuffer();
|
||||||
_deviceContext->IASetIndexBuffer(_indexBuffer.Get(), DXGI_FORMAT_R32_UINT, 0);
|
_deviceContext->IASetIndexBuffer(_indexBuffer.Get(), DXGI_FORMAT_R32_UINT, 0);
|
||||||
_cBuffer.DiffuseCoefficient = material->GetDiffuseColour();
|
_cBuffer.diffuseCoefficient = material->GetDiffuseColour();
|
||||||
_cBuffer.SpecularCoefficient = material->GetSpecularColour();
|
_cBuffer.specularCoefficient = material->GetSpecularColour();
|
||||||
_cBuffer.Shininess = material->GetShininess();
|
_cBuffer.shininess = material->GetShininess();
|
||||||
_cBuffer.Opacity = opacity;
|
_cBuffer.opacity = opacity;
|
||||||
// Update the constant buffer
|
// Update the constant buffer
|
||||||
_deviceContext->VSSetConstantBuffers(0, 1, _constantBuffer.GetAddressOf());
|
_deviceContext->VSSetConstantBuffers(0, 1, _constantBuffer.GetAddressOf());
|
||||||
_deviceContext->UpdateSubresource(_constantBuffer.Get(), 0, 0, &_cBuffer, 0, 0);
|
_deviceContext->UpdateSubresource(_constantBuffer.Get(), 0, 0, &_cBuffer, 0, 0);
|
||||||
@@ -90,18 +90,18 @@ void MeshRenderer::Render()
|
|||||||
_deviceContext->RSSetState(_noCullRasteriserState.Get());
|
_deviceContext->RSSetState(_noCullRasteriserState.Get());
|
||||||
|
|
||||||
XMMATRIX projectionTransformation = DirectXFramework::GetDXFramework()->GetProjectionTransformation();
|
XMMATRIX projectionTransformation = DirectXFramework::GetDXFramework()->GetProjectionTransformation();
|
||||||
XMMATRIX viewTransformation = DirectXFramework::GetDXFramework()->GetViewTransformation();
|
XMMATRIX viewTransformation = DirectXFramework::GetDXFramework()->GetCamera()->GetViewMatrix();
|
||||||
|
|
||||||
XMMATRIX completeTransformation = XMLoadFloat4x4(&_worldTransformation) * viewTransformation * projectionTransformation;
|
XMMATRIX completeTransformation = XMLoadFloat4x4(&_worldTransformation) * viewTransformation * projectionTransformation;
|
||||||
|
|
||||||
// Draw the first cube
|
// Reset the CBUFFER since its now a class member.
|
||||||
|
_cBuffer = CBUFFER();
|
||||||
_cBuffer.CompleteTransformation = completeTransformation;
|
_cBuffer.completeTransformation = completeTransformation;
|
||||||
_cBuffer.WorldTransformation = XMLoadFloat4x4(&_worldTransformation);
|
_cBuffer.worldTransformation = XMLoadFloat4x4(&_worldTransformation);
|
||||||
_cBuffer.AmbientColor = _ambientLight;
|
_cBuffer.ambientColor = _ambientLight;
|
||||||
_cBuffer.LightVector = XMVector4Normalize(XMLoadFloat4(&_directionalLightVector));
|
_cBuffer.lightVector = XMVector4Normalize(XMLoadFloat4(&_directionalLightVector));
|
||||||
_cBuffer.LightColor = _directionalLightColour;
|
_cBuffer.lightColor = _directionalLightColour;
|
||||||
_cBuffer.CameraPosition = _cameraPosition;
|
_cBuffer.cameraPosition = _cameraPosition;
|
||||||
|
|
||||||
_deviceContext->VSSetShader(_vertexShader.Get(), 0, 0);
|
_deviceContext->VSSetShader(_vertexShader.Get(), 0, 0);
|
||||||
_deviceContext->PSSetShader(_pixelShader.Get(), 0, 0);
|
_deviceContext->PSSetShader(_pixelShader.Get(), 0, 0);
|
||||||
|
|||||||
@@ -46,7 +46,6 @@ private:
|
|||||||
|
|
||||||
CBUFFER _cBuffer;
|
CBUFFER _cBuffer;
|
||||||
|
|
||||||
|
|
||||||
void BuildShaders();
|
void BuildShaders();
|
||||||
void BuildVertexLayout();
|
void BuildVertexLayout();
|
||||||
void BuildConstantBuffer();
|
void BuildConstantBuffer();
|
||||||
|
|||||||
@@ -77,4 +77,14 @@ SceneNodePointer SceneGraph::Find(wstring name)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return foundValue;
|
return foundValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
SceneNodePointer SceneGraph::GetFirstChild()
|
||||||
|
{
|
||||||
|
SceneNodePointer firstChild = nullptr;
|
||||||
|
if (_children.size() > 0)
|
||||||
|
{
|
||||||
|
firstChild = _children.front();
|
||||||
|
}
|
||||||
|
return firstChild;
|
||||||
}
|
}
|
||||||
@@ -17,6 +17,9 @@ public:
|
|||||||
void Add(SceneNodePointer node);
|
void Add(SceneNodePointer node);
|
||||||
void Remove(SceneNodePointer node);
|
void Remove(SceneNodePointer node);
|
||||||
SceneNodePointer Find(wstring name);
|
SceneNodePointer Find(wstring name);
|
||||||
|
SceneNodePointer GetRootNode();
|
||||||
|
SceneNodePointer GetParent();
|
||||||
|
SceneNodePointer GetFirstChild();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Here you need to add whatever collection you are going to
|
// Here you need to add whatever collection you are going to
|
||||||
|
|||||||
@@ -26,12 +26,14 @@ public:
|
|||||||
virtual void DoTestUpdate(float inputTest) { _testInt = inputTest; }
|
virtual void DoTestUpdate(float inputTest) { _testInt = inputTest; }
|
||||||
|
|
||||||
void SetWorldTransform(FXMMATRIX& worldTransformation) { XMStoreFloat4x4(&_worldTransformation, worldTransformation); }
|
void SetWorldTransform(FXMMATRIX& worldTransformation) { XMStoreFloat4x4(&_worldTransformation, worldTransformation); }
|
||||||
|
void AddToWorldTransform(FXMMATRIX& transformation) { XMStoreFloat4x4(&_worldTransformation, XMLoadFloat4x4(&_worldTransformation) * transformation); }
|
||||||
|
|
||||||
// Although only required in the composite class, these are provided
|
// Although only required in the composite class, these are provided
|
||||||
// in order to simplify the code base.
|
// in order to simplify the code base.
|
||||||
virtual void Add(SceneNodePointer node) {}
|
virtual void Add(SceneNodePointer node) {}
|
||||||
virtual void Remove(SceneNodePointer node) {};
|
virtual void Remove(SceneNodePointer node) {};
|
||||||
virtual SceneNodePointer Find(wstring name) { return (_name == name) ? shared_from_this() : nullptr; }
|
virtual SceneNodePointer Find(wstring name) { return (_name == name) ? shared_from_this() : nullptr; }
|
||||||
|
virtual SceneNodePointer GetFirstChild() { return shared_from_this(); }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
XMFLOAT4X4 _worldTransformation;
|
XMFLOAT4X4 _worldTransformation;
|
||||||
|
|||||||
@@ -5,3 +5,19 @@ XMMATRIX SharedMethods::RotateFromPoint(float x, float y, float z, XMMATRIX rota
|
|||||||
// Translates a matrix to a point, rotates and then returns back to where it was
|
// Translates a matrix to a point, rotates and then returns back to where it was
|
||||||
return XMMatrixTranslation(x, y, z) * rotationMatrix * XMMatrixTranslation(-x, -y, -z);
|
return XMMatrixTranslation(x, y, z) * rotationMatrix * XMMatrixTranslation(-x, -y, -z);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Method so i can use normal RGB values and hopefully hex values too since im use to those
|
||||||
|
float SharedMethods::RGBValueToIntensity(int value)
|
||||||
|
{
|
||||||
|
return (float)value / 255.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
float SharedMethods::lerp(int a, int b, int p)
|
||||||
|
{
|
||||||
|
return lerp((float)a, (float)b, (float)p);
|
||||||
|
}
|
||||||
|
|
||||||
|
float SharedMethods::lerp(float a, float b, float p)
|
||||||
|
{
|
||||||
|
return a + p * (b - a);
|
||||||
|
}
|
||||||
+16
-11
@@ -3,21 +3,26 @@
|
|||||||
|
|
||||||
struct CBUFFER
|
struct CBUFFER
|
||||||
{
|
{
|
||||||
XMMATRIX CompleteTransformation;
|
XMMATRIX completeTransformation;
|
||||||
XMMATRIX WorldTransformation;
|
XMMATRIX worldTransformation;
|
||||||
XMFLOAT4 CameraPosition;
|
XMFLOAT4 cameraPosition;
|
||||||
XMVECTOR LightVector;
|
XMVECTOR lightVector;
|
||||||
XMFLOAT4 LightColor;
|
XMFLOAT4 lightColor;
|
||||||
XMFLOAT4 AmbientColor;
|
XMFLOAT4 ambientColor;
|
||||||
XMFLOAT4 DiffuseCoefficient;
|
XMFLOAT4 diffuseCoefficient;
|
||||||
XMFLOAT4 SpecularCoefficient;
|
XMFLOAT4 specularCoefficient;
|
||||||
float Shininess;
|
float shininess;
|
||||||
float Opacity;
|
float opacity;
|
||||||
float Padding[2];
|
float padding[2];
|
||||||
};
|
};
|
||||||
|
|
||||||
namespace SharedMethods
|
namespace SharedMethods
|
||||||
{
|
{
|
||||||
XMMATRIX RotateFromPoint(float x, float y, float z, XMMATRIX rotationMatrix);
|
XMMATRIX RotateFromPoint(float x, float y, float z, XMMATRIX rotationMatrix);
|
||||||
|
|
||||||
|
float RGBValueToIntensity(int value);
|
||||||
|
float lerp(int a, int b, int p);
|
||||||
|
float lerp(float a, float b, float p);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1,10 +1,5 @@
|
|||||||
#include "SplitMeshNode.h"
|
#include "SplitMeshNode.h"
|
||||||
|
|
||||||
SplitMeshNode::SplitMeshNode(wstring name, wstring modelName)
|
|
||||||
{
|
|
||||||
_modelName = modelName;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool SplitMeshNode::Initialise()
|
bool SplitMeshNode::Initialise()
|
||||||
{
|
{
|
||||||
bool currentStatus = true;
|
bool currentStatus = true;
|
||||||
@@ -16,8 +11,8 @@ bool SplitMeshNode::Initialise()
|
|||||||
currentStatus = false;
|
currentStatus = false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Add(AddMeshNode(_mesh->GetRootNode()));
|
Add(AddMeshNode(_mesh->GetRootNode()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (currentStatus)
|
if (currentStatus)
|
||||||
@@ -28,10 +23,10 @@ bool SplitMeshNode::Initialise()
|
|||||||
return currentStatus;
|
return currentStatus;
|
||||||
}
|
}
|
||||||
|
|
||||||
SceneGraphPointer SplitMeshNode::AddMeshNode(shared_ptr<Node> node)
|
SceneNodePointer SplitMeshNode::AddMeshNode(shared_ptr<Node> node)
|
||||||
{
|
{
|
||||||
unsigned int subMeshCount = (unsigned int)node->GetMeshCount();
|
unsigned int subMeshCount = (unsigned int)node->GetMeshCount();
|
||||||
SceneGraphPointer currentNodeGraph = make_shared<SceneGraph>(node->GetName());
|
SceneNodePointer currentNodeGraph = make_shared<SceneGraph>(node->GetName());
|
||||||
|
|
||||||
/*string nameString;
|
/*string nameString;
|
||||||
for (char x : node->GetName())
|
for (char x : node->GetName())
|
||||||
@@ -46,8 +41,7 @@ SceneGraphPointer SplitMeshNode::AddMeshNode(shared_ptr<Node> node)
|
|||||||
{
|
{
|
||||||
unsigned int meshIndex = node->GetMesh(i);
|
unsigned int meshIndex = node->GetMesh(i);
|
||||||
shared_ptr<SubMesh> subMesh = _mesh->GetSubMesh(meshIndex);
|
shared_ptr<SubMesh> subMesh = _mesh->GetSubMesh(meshIndex);
|
||||||
shared_ptr<SubMeshNode> subNode = make_shared<SubMeshNode>(node->GetName() + L"_" + to_wstring(i), subMesh);
|
shared_ptr<SubMeshNode> subNode = make_shared<SubMeshNode>(node->GetName() + L"_" + to_wstring(i), subMesh);
|
||||||
subNode->SetWorldTransform(XMMatrixIdentity());
|
|
||||||
currentNodeGraph->Add(subNode);
|
currentNodeGraph->Add(subNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,9 +6,9 @@
|
|||||||
class SplitMeshNode : public SceneGraph
|
class SplitMeshNode : public SceneGraph
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SplitMeshNode(wstring name, wstring modelName);
|
SplitMeshNode(wstring name, wstring modelName) : SceneGraph(name) { _modelName = modelName; }
|
||||||
bool Initialise(void);
|
bool Initialise(void);
|
||||||
SceneGraphPointer AddMeshNode(shared_ptr<Node> node);
|
SceneNodePointer AddMeshNode(shared_ptr<Node> node);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
shared_ptr<SubMeshRenderer> _renderer;
|
shared_ptr<SubMeshRenderer> _renderer;
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ void SubMeshNode::Render()
|
|||||||
{
|
{
|
||||||
_renderer->SetSubMesh(_subMesh);
|
_renderer->SetSubMesh(_subMesh);
|
||||||
_renderer->SetWorldTransformation(XMLoadFloat4x4(&_combinedWorldTransformation));
|
_renderer->SetWorldTransformation(XMLoadFloat4x4(&_combinedWorldTransformation));
|
||||||
_renderer->SetCameraPosition(XMFLOAT4(0.0f, 0.0f, -100.0f, 1.0f));
|
_renderer->SetCameraPosition(DirectXFramework::GetDXFramework()->GetCamera()->GetRawCameraPosition());
|
||||||
_renderer->SetAmbientLight(XMFLOAT4(0.5f, 0.5f, 0.5f, 1.0f));
|
_renderer->SetAmbientLight(XMFLOAT4(0.5f, 0.5f, 0.5f, 1.0f));
|
||||||
_renderer->SetDirectionalLight(XMVectorSet(0.0f, -1.0f, 1.0f, 0.0f), XMFLOAT4(1.0f, 1.0f, 1.0f, 1.0f));
|
_renderer->SetDirectionalLight(XMVectorSet(0.0f, -1.0f, 1.0f, 0.0f), XMFLOAT4(1.0f, 1.0f, 1.0f, 1.0f));
|
||||||
_renderer->Render();
|
_renderer->Render();
|
||||||
|
|||||||
@@ -47,18 +47,19 @@ void SubMeshRenderer::Render()
|
|||||||
_deviceContext->RSSetState(_noCullRasteriserState.Get());
|
_deviceContext->RSSetState(_noCullRasteriserState.Get());
|
||||||
|
|
||||||
XMMATRIX projectionTransformation = DirectXFramework::GetDXFramework()->GetProjectionTransformation();
|
XMMATRIX projectionTransformation = DirectXFramework::GetDXFramework()->GetProjectionTransformation();
|
||||||
XMMATRIX viewTransformation = DirectXFramework::GetDXFramework()->GetViewTransformation();
|
XMMATRIX viewTransformation = DirectXFramework::GetDXFramework()->GetCamera()->GetViewMatrix();
|
||||||
|
|
||||||
XMMATRIX completeTransformation = XMLoadFloat4x4(&_worldTransformation) * viewTransformation * projectionTransformation;
|
XMMATRIX completeTransformation = XMLoadFloat4x4(&_worldTransformation) * viewTransformation * projectionTransformation;
|
||||||
|
|
||||||
// Draw the first cube
|
// Draw the first cube
|
||||||
|
|
||||||
_cBuffer.CompleteTransformation = completeTransformation;
|
CBUFFER cBuffer;
|
||||||
_cBuffer.WorldTransformation = XMLoadFloat4x4(&_worldTransformation);
|
cBuffer.completeTransformation = completeTransformation;
|
||||||
_cBuffer.AmbientColor = _ambientLight;
|
cBuffer.worldTransformation = XMLoadFloat4x4(&_worldTransformation);
|
||||||
_cBuffer.LightVector = XMVector4Normalize(XMLoadFloat4(&_directionalLightVector));
|
cBuffer.ambientColor = _ambientLight;
|
||||||
_cBuffer.LightColor = _directionalLightColour;
|
cBuffer.lightVector = XMVector4Normalize(XMLoadFloat4(&_directionalLightVector));
|
||||||
_cBuffer.CameraPosition = _cameraPosition;
|
cBuffer.lightColor = _directionalLightColour;
|
||||||
|
cBuffer.cameraPosition = _cameraPosition;
|
||||||
|
|
||||||
_deviceContext->VSSetShader(_vertexShader.Get(), 0, 0);
|
_deviceContext->VSSetShader(_vertexShader.Get(), 0, 0);
|
||||||
_deviceContext->PSSetShader(_pixelShader.Get(), 0, 0);
|
_deviceContext->PSSetShader(_pixelShader.Get(), 0, 0);
|
||||||
@@ -77,13 +78,13 @@ void SubMeshRenderer::Render()
|
|||||||
_deviceContext->IASetVertexBuffers(0, 1, _vertexBuffer.GetAddressOf(), &stride, &offset);
|
_deviceContext->IASetVertexBuffers(0, 1, _vertexBuffer.GetAddressOf(), &stride, &offset);
|
||||||
_indexBuffer = _subMesh->GetIndexBuffer();
|
_indexBuffer = _subMesh->GetIndexBuffer();
|
||||||
_deviceContext->IASetIndexBuffer(_indexBuffer.Get(), DXGI_FORMAT_R32_UINT, 0);
|
_deviceContext->IASetIndexBuffer(_indexBuffer.Get(), DXGI_FORMAT_R32_UINT, 0);
|
||||||
_cBuffer.DiffuseCoefficient = material->GetDiffuseColour();
|
cBuffer.diffuseCoefficient = material->GetDiffuseColour();
|
||||||
_cBuffer.SpecularCoefficient = material->GetSpecularColour();
|
cBuffer.specularCoefficient = material->GetSpecularColour();
|
||||||
_cBuffer.Shininess = material->GetShininess();
|
cBuffer.shininess = material->GetShininess();
|
||||||
_cBuffer.Opacity = opacity;
|
cBuffer.opacity = opacity;
|
||||||
// Update the constant buffer
|
// Update the constant buffer
|
||||||
_deviceContext->VSSetConstantBuffers(0, 1, _constantBuffer.GetAddressOf());
|
_deviceContext->VSSetConstantBuffers(0, 1, _constantBuffer.GetAddressOf());
|
||||||
_deviceContext->UpdateSubresource(_constantBuffer.Get(), 0, 0, &_cBuffer, 0, 0);
|
_deviceContext->UpdateSubresource(_constantBuffer.Get(), 0, 0, &cBuffer, 0, 0);
|
||||||
_texture = material->GetTexture();
|
_texture = material->GetTexture();
|
||||||
_deviceContext->PSSetShaderResources(0, 1, _texture.GetAddressOf());
|
_deviceContext->PSSetShaderResources(0, 1, _texture.GetAddressOf());
|
||||||
_deviceContext->PSSetConstantBuffers(0, 1, _constantBuffer.GetAddressOf());
|
_deviceContext->PSSetConstantBuffers(0, 1, _constantBuffer.GetAddressOf());
|
||||||
|
|||||||
@@ -37,16 +37,13 @@ private:
|
|||||||
ComPtr<ID3D11InputLayout> _layout;
|
ComPtr<ID3D11InputLayout> _layout;
|
||||||
ComPtr<ID3D11Buffer> _constantBuffer;
|
ComPtr<ID3D11Buffer> _constantBuffer;
|
||||||
|
|
||||||
ComPtr<ID3D11ShaderResourceView> _texture;;
|
ComPtr<ID3D11ShaderResourceView> _texture;
|
||||||
|
|
||||||
ComPtr<ID3D11BlendState> _transparentBlendState;
|
ComPtr<ID3D11BlendState> _transparentBlendState;
|
||||||
|
|
||||||
ComPtr<ID3D11RasterizerState> _defaultRasteriserState;
|
ComPtr<ID3D11RasterizerState> _defaultRasteriserState;
|
||||||
ComPtr<ID3D11RasterizerState> _noCullRasteriserState;
|
ComPtr<ID3D11RasterizerState> _noCullRasteriserState;
|
||||||
|
|
||||||
CBUFFER _cBuffer;
|
|
||||||
|
|
||||||
|
|
||||||
void BuildShaders();
|
void BuildShaders();
|
||||||
void BuildVertexLayout();
|
void BuildVertexLayout();
|
||||||
void BuildConstantBuffer();
|
void BuildConstantBuffer();
|
||||||
|
|||||||
@@ -0,0 +1,410 @@
|
|||||||
|
#include "TerrainNode.h"
|
||||||
|
|
||||||
|
#define WORLD_HEIGHT 512
|
||||||
|
|
||||||
|
TerrainNode::TerrainNode(wstring name, wstring heightMap, int widthX, int widthZ, int cellSizeX, int cellSizeZ) : SceneNode(name)
|
||||||
|
{
|
||||||
|
_heightMap = heightMap;
|
||||||
|
|
||||||
|
_widthX = widthX;
|
||||||
|
_widthZ = widthZ;
|
||||||
|
|
||||||
|
_gridCols = _widthX + 1;
|
||||||
|
_gridRows = _widthZ + 1;
|
||||||
|
|
||||||
|
_cellSizeX = cellSizeX;
|
||||||
|
_cellSizeZ = cellSizeZ;
|
||||||
|
|
||||||
|
_polygonsCount = (_gridCols * _gridRows) * 2;
|
||||||
|
_vertexCount = _polygonsCount * 2;
|
||||||
|
_indiciesCount = _polygonsCount * 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TerrainNode::Initialise()
|
||||||
|
{
|
||||||
|
_device = DirectXFramework::GetDXFramework()->GetDevice();
|
||||||
|
_deviceContext = DirectXFramework::GetDXFramework()->GetDeviceContext();
|
||||||
|
|
||||||
|
if (_heightMap.length() > 0)
|
||||||
|
{
|
||||||
|
if (LoadHeightMap(_heightMap))
|
||||||
|
{
|
||||||
|
_usedHeightMap = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_usedHeightMap = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_usedHeightMap = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
GenerateTerrainData();
|
||||||
|
GenerateBuffers();
|
||||||
|
BuildShaders();
|
||||||
|
BuildVertexLayout();
|
||||||
|
BuildConstantBuffer();
|
||||||
|
|
||||||
|
BuildBlendState();
|
||||||
|
BuildRendererStates();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TerrainNode::GenerateTerrainData()
|
||||||
|
{
|
||||||
|
float totalWidth = (float)(_gridCols * _cellSizeX);
|
||||||
|
float totalDepth = (float)(_gridRows * _cellSizeZ);
|
||||||
|
|
||||||
|
float centerWidth = totalWidth * -0.5f;
|
||||||
|
float centerDepth = totalDepth * 0.5f;
|
||||||
|
|
||||||
|
int currentVertexCount = 0;
|
||||||
|
for (int z = 0; z < _gridRows; z++)
|
||||||
|
{
|
||||||
|
for (int x = 0; x < _gridCols; x++)
|
||||||
|
{
|
||||||
|
int currentIndex = (z * _gridCols) + x;
|
||||||
|
int offsetIndexX = 1;
|
||||||
|
if (x == _widthX)
|
||||||
|
{
|
||||||
|
offsetIndexX = 0;
|
||||||
|
}
|
||||||
|
int offsetIndexZ = _gridCols;
|
||||||
|
if (z == _widthZ)
|
||||||
|
{
|
||||||
|
offsetIndexZ = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
Vector3D polygonNormal = Vector3D(0.0f, 0.0f, 0.0f);
|
||||||
|
|
||||||
|
VERTEX vertex;
|
||||||
|
vertex.Position = XMFLOAT3(x * _cellSizeX + centerWidth, GetHeightMapValueAt(currentIndex), (-z + 1) * _cellSizeZ + centerDepth);
|
||||||
|
vertex.Normal = XMFLOAT3(0.0f, 0.0f, 0.0f);
|
||||||
|
vertex.TexCoord = XMFLOAT2(0.0f, 1.0f);
|
||||||
|
_terrainVerts.push_back(vertex);
|
||||||
|
_terrainNormals.push_back(polygonNormal);
|
||||||
|
|
||||||
|
vertex = VERTEX();
|
||||||
|
vertex.Position = XMFLOAT3((x + 1) * _cellSizeX + centerWidth, GetHeightMapValueAt(currentIndex + offsetIndexX), (-z + 1) * _cellSizeZ + centerDepth);
|
||||||
|
vertex.Normal = XMFLOAT3(0.0f, 0.0f, 0.0f);
|
||||||
|
vertex.TexCoord = XMFLOAT2(1.0f, 1.0f);
|
||||||
|
_terrainVerts.push_back(vertex);
|
||||||
|
_terrainNormals.push_back(polygonNormal);
|
||||||
|
|
||||||
|
vertex = VERTEX();
|
||||||
|
vertex.Position = XMFLOAT3(x * _cellSizeX + centerWidth, GetHeightMapValueAt(currentIndex + offsetIndexZ), -z * _cellSizeZ + centerDepth);
|
||||||
|
vertex.Normal = XMFLOAT3(0.0f, 0.0f, 0.0f);
|
||||||
|
vertex.TexCoord = XMFLOAT2(0.0f, 0.0f);
|
||||||
|
_terrainVerts.push_back(vertex);
|
||||||
|
_terrainNormals.push_back(polygonNormal);
|
||||||
|
|
||||||
|
vertex = VERTEX();
|
||||||
|
vertex.Position = XMFLOAT3((x + 1) * _cellSizeX + centerWidth, GetHeightMapValueAt(currentIndex + offsetIndexZ + offsetIndexX), -z * _cellSizeZ + centerDepth);
|
||||||
|
vertex.Normal = XMFLOAT3(0.0f, 0.0f, 0.0f);
|
||||||
|
vertex.TexCoord = XMFLOAT2(1.0f, 0.0f);
|
||||||
|
_terrainVerts.push_back(vertex);
|
||||||
|
_terrainNormals.push_back(polygonNormal);
|
||||||
|
|
||||||
|
_indices.push_back(currentVertexCount);
|
||||||
|
_indices.push_back(currentVertexCount + 1);
|
||||||
|
_indices.push_back(currentVertexCount + 2);
|
||||||
|
|
||||||
|
_indices.push_back(currentVertexCount + 2);
|
||||||
|
_indices.push_back(currentVertexCount + 1);
|
||||||
|
_indices.push_back(currentVertexCount + 3);
|
||||||
|
currentVertexCount += 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int currentNormalIndex = 0;
|
||||||
|
for (int z = 0; z < _gridRows; z++)
|
||||||
|
{
|
||||||
|
for (int x = 0; x < _gridCols; x++)
|
||||||
|
{
|
||||||
|
Vector3D vectorA = Vector3D(_terrainVerts[currentNormalIndex + 1].Position, _terrainVerts[currentNormalIndex].Position);
|
||||||
|
Vector3D vectorB = Vector3D(_terrainVerts[currentNormalIndex + 2].Position, _terrainVerts[currentNormalIndex].Position);
|
||||||
|
Vector3D polygonNormal = Vector3D::CrossProduct(vectorA, vectorB);
|
||||||
|
|
||||||
|
_terrainNormals[currentNormalIndex] += polygonNormal;
|
||||||
|
_terrainNormals[currentNormalIndex + 1] += polygonNormal;
|
||||||
|
_terrainNormals[currentNormalIndex + 2] += polygonNormal;
|
||||||
|
_terrainNormals[currentNormalIndex + 3] += polygonNormal;
|
||||||
|
|
||||||
|
AddNormalToVertex(z - 1, x - 1, 3, polygonNormal);
|
||||||
|
AddNormalToVertex(z - 1, x, 2, polygonNormal);
|
||||||
|
AddNormalToVertex(z - 1, x, 3, polygonNormal);
|
||||||
|
AddNormalToVertex(z - 1, x + 1, 2, polygonNormal);
|
||||||
|
AddNormalToVertex(z, x - 1, 1, polygonNormal);
|
||||||
|
AddNormalToVertex(z, x - 1, 3, polygonNormal);
|
||||||
|
AddNormalToVertex(z, x + 1, 0, polygonNormal);
|
||||||
|
AddNormalToVertex(z, x + 1, 2, polygonNormal);
|
||||||
|
AddNormalToVertex(z + 1, x - 1, 1, polygonNormal);
|
||||||
|
AddNormalToVertex(z + 1, x, 0, polygonNormal);
|
||||||
|
AddNormalToVertex(z + 1, x, 1, polygonNormal);
|
||||||
|
AddNormalToVertex(z + 1, x + 1, 0, polygonNormal);
|
||||||
|
|
||||||
|
currentNormalIndex += 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < _terrainNormals.size(); i++)
|
||||||
|
{
|
||||||
|
_terrainNormals[i].Normalize();
|
||||||
|
_terrainVerts[i].Normal = _terrainNormals[i].Get();
|
||||||
|
}
|
||||||
|
|
||||||
|
_terrainNormals.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TerrainNode::AddNormalToVertex(int row, int col, int vertexIndex, Vector3D normal)
|
||||||
|
{
|
||||||
|
int rowIndexOffset = row * _gridCols;
|
||||||
|
int colIndexOffset = col;
|
||||||
|
|
||||||
|
int finalIndex = vertexIndex + ((rowIndexOffset + colIndexOffset) * 4);
|
||||||
|
|
||||||
|
if (row >= 0 && row < _gridRows && col >= 0 && col < _gridCols)
|
||||||
|
{
|
||||||
|
_terrainNormals[finalIndex] += normal;
|
||||||
|
}
|
||||||
|
if (row == _gridRows)
|
||||||
|
{
|
||||||
|
int test = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TerrainNode::GenerateBuffers()
|
||||||
|
{
|
||||||
|
// Setup the structure that specifies how big the vertex
|
||||||
|
// buffer should be
|
||||||
|
D3D11_BUFFER_DESC vertexBufferDescriptor;
|
||||||
|
vertexBufferDescriptor.Usage = D3D11_USAGE_IMMUTABLE;
|
||||||
|
vertexBufferDescriptor.ByteWidth = sizeof(VERTEX) * _vertexCount;
|
||||||
|
vertexBufferDescriptor.BindFlags = D3D11_BIND_VERTEX_BUFFER;
|
||||||
|
vertexBufferDescriptor.CPUAccessFlags = 0;
|
||||||
|
vertexBufferDescriptor.MiscFlags = 0;
|
||||||
|
vertexBufferDescriptor.StructureByteStride = 0;
|
||||||
|
|
||||||
|
// Now set up a structure that tells DirectX where to get the
|
||||||
|
// data for the vertices from
|
||||||
|
D3D11_SUBRESOURCE_DATA vertexInitialisationData;
|
||||||
|
vertexInitialisationData.pSysMem = &_terrainVerts[0];
|
||||||
|
|
||||||
|
// and create the vertex buffer
|
||||||
|
ThrowIfFailed(_device->CreateBuffer(&vertexBufferDescriptor, &vertexInitialisationData, _vertexBuffer.GetAddressOf()));
|
||||||
|
|
||||||
|
// Setup the structure that specifies how big the index
|
||||||
|
// buffer should be
|
||||||
|
D3D11_BUFFER_DESC indexBufferDescriptor;
|
||||||
|
indexBufferDescriptor.Usage = D3D11_USAGE_IMMUTABLE;
|
||||||
|
indexBufferDescriptor.ByteWidth = sizeof(UINT) * _indiciesCount;
|
||||||
|
indexBufferDescriptor.BindFlags = D3D11_BIND_INDEX_BUFFER;
|
||||||
|
indexBufferDescriptor.CPUAccessFlags = 0;
|
||||||
|
indexBufferDescriptor.MiscFlags = 0;
|
||||||
|
indexBufferDescriptor.StructureByteStride = 0;
|
||||||
|
|
||||||
|
// Now set up a structure that tells DirectX where to get the
|
||||||
|
// data for the indices from
|
||||||
|
D3D11_SUBRESOURCE_DATA indexInitialisationData;
|
||||||
|
indexInitialisationData.pSysMem = &_indices[0];
|
||||||
|
|
||||||
|
// and create the index buffer
|
||||||
|
ThrowIfFailed(_device->CreateBuffer(&indexBufferDescriptor, &indexInitialisationData, _indexBuffer.GetAddressOf()));
|
||||||
|
}
|
||||||
|
|
||||||
|
void TerrainNode::Render()
|
||||||
|
{
|
||||||
|
XMMATRIX projectionTransformation = DirectXFramework::GetDXFramework()->GetProjectionTransformation();
|
||||||
|
XMMATRIX viewTransformation = DirectXFramework::GetDXFramework()->GetCamera()->GetViewMatrix();
|
||||||
|
|
||||||
|
XMMATRIX completeTransformation = XMLoadFloat4x4(&_worldTransformation) * viewTransformation * projectionTransformation;
|
||||||
|
|
||||||
|
// Draw the first cube
|
||||||
|
CBUFFER cBuffer;
|
||||||
|
cBuffer.completeTransformation = completeTransformation;
|
||||||
|
cBuffer.worldTransformation = XMLoadFloat4x4(&_worldTransformation);
|
||||||
|
cBuffer.ambientColor = XMFLOAT4(0.5f, 0.5f, 0.5f, 1.0f);
|
||||||
|
//cBuffer.AmbientColor = XMFLOAT4(SharedMethods::RGBValueToIntensity(0xfd), 0.0f, 1.0f, 1.0f); //XMFLOAT4(1, 1, 1, 1); //_ambientLight;
|
||||||
|
cBuffer.lightVector = XMVector4Normalize(XMLoadFloat4(&_directionalLightVector));
|
||||||
|
cBuffer.lightColor = XMFLOAT4(0.5f, 0.5f, 0.5f, 1.0f);
|
||||||
|
//cBuffer.LightColor = XMFLOAT4(SharedMethods::RGBValueToIntensity(0x89), 0.0f, 5.0f, 5.0f);
|
||||||
|
//cBuffer.LightColor = _directionalLightColor;
|
||||||
|
cBuffer.cameraPosition = DirectXFramework::GetDXFramework()->GetCamera()->GetRawCameraPosition();
|
||||||
|
|
||||||
|
_deviceContext->VSSetShader(_vertexShader.Get(), 0, 0);
|
||||||
|
_deviceContext->PSSetShader(_pixelShader.Get(), 0, 0);
|
||||||
|
_deviceContext->IASetInputLayout(_layout.Get());
|
||||||
|
|
||||||
|
// Update the constant buffer
|
||||||
|
_deviceContext->VSSetConstantBuffers(0, 1, _constantBuffer.GetAddressOf());
|
||||||
|
_deviceContext->UpdateSubresource(_constantBuffer.Get(), 0, 0, &cBuffer, 0, 0);
|
||||||
|
|
||||||
|
// Set the texture to be used by the pixel shader
|
||||||
|
_deviceContext->PSSetShaderResources(0, 1, _texture.GetAddressOf());
|
||||||
|
|
||||||
|
UINT stride = sizeof(VERTEX);
|
||||||
|
UINT offset = 0;
|
||||||
|
_deviceContext->IASetVertexBuffers(0, 1, _vertexBuffer.GetAddressOf(), &stride, &offset);
|
||||||
|
_deviceContext->IASetIndexBuffer(_indexBuffer.Get(), DXGI_FORMAT_R32_UINT, 0);
|
||||||
|
cBuffer.diffuseCoefficient = XMFLOAT4(1.0f, 1.0f, 1.0f, 1.0f);
|
||||||
|
cBuffer.specularCoefficient = XMFLOAT4(1.0f, 1.0f, 1.0f, 1.0f);
|
||||||
|
cBuffer.shininess = 1.0f;
|
||||||
|
cBuffer.opacity = 1.0f;
|
||||||
|
// Update the constant buffer
|
||||||
|
_deviceContext->VSSetConstantBuffers(0, 1, _constantBuffer.GetAddressOf());
|
||||||
|
_deviceContext->UpdateSubresource(_constantBuffer.Get(), 0, 0, &cBuffer, 0, 0);
|
||||||
|
_deviceContext->PSSetShaderResources(0, 1, _texture.GetAddressOf());
|
||||||
|
_deviceContext->PSSetConstantBuffers(0, 1, _constantBuffer.GetAddressOf());
|
||||||
|
_deviceContext->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
|
||||||
|
//_deviceContext->RSSetState(_wireframeRasteriserState.Get());
|
||||||
|
_deviceContext->DrawIndexed(_indiciesCount, 0, 0);
|
||||||
|
|
||||||
|
// Turn back face culling back on in case another renderer
|
||||||
|
// relies on it
|
||||||
|
_deviceContext->RSSetState(_defaultRasteriserState.Get());
|
||||||
|
}
|
||||||
|
|
||||||
|
void TerrainNode::Shutdown(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void TerrainNode::BuildShaders()
|
||||||
|
{
|
||||||
|
DWORD shaderCompileFlags = 0;
|
||||||
|
#if defined( _DEBUG )
|
||||||
|
shaderCompileFlags = D3DCOMPILE_DEBUG | D3DCOMPILE_SKIP_OPTIMIZATION;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
ComPtr<ID3DBlob> compilationMessages = nullptr;
|
||||||
|
|
||||||
|
//Compile vertex shader
|
||||||
|
HRESULT hr = D3DCompileFromFile(L"TerrainShadersNoBlend.hlsl",
|
||||||
|
nullptr, D3D_COMPILE_STANDARD_FILE_INCLUDE,
|
||||||
|
"VShader", "vs_5_0",
|
||||||
|
shaderCompileFlags, 0,
|
||||||
|
_vertexShaderByteCode.GetAddressOf(),
|
||||||
|
compilationMessages.GetAddressOf());
|
||||||
|
|
||||||
|
if (compilationMessages.Get() != nullptr)
|
||||||
|
{
|
||||||
|
// If there were any compilation messages, display them
|
||||||
|
MessageBoxA(0, (char*)compilationMessages->GetBufferPointer(), 0, 0);
|
||||||
|
}
|
||||||
|
// Even if there are no compiler messages, check to make sure there were no other errors.
|
||||||
|
ThrowIfFailed(hr);
|
||||||
|
ThrowIfFailed(_device->CreateVertexShader(_vertexShaderByteCode->GetBufferPointer(), _vertexShaderByteCode->GetBufferSize(), NULL, _vertexShader.GetAddressOf()));
|
||||||
|
|
||||||
|
// Compile pixel shader
|
||||||
|
hr = D3DCompileFromFile(L"TerrainShadersNoBlend.hlsl",
|
||||||
|
nullptr, D3D_COMPILE_STANDARD_FILE_INCLUDE,
|
||||||
|
"PShader", "ps_5_0",
|
||||||
|
shaderCompileFlags, 0,
|
||||||
|
_pixelShaderByteCode.GetAddressOf(),
|
||||||
|
compilationMessages.GetAddressOf());
|
||||||
|
|
||||||
|
if (compilationMessages.Get() != nullptr)
|
||||||
|
{
|
||||||
|
// If there were any compilation messages, display them
|
||||||
|
MessageBoxA(0, (char*)compilationMessages->GetBufferPointer(), 0, 0);
|
||||||
|
}
|
||||||
|
ThrowIfFailed(hr);
|
||||||
|
ThrowIfFailed(_device->CreatePixelShader(_pixelShaderByteCode->GetBufferPointer(), _pixelShaderByteCode->GetBufferSize(), NULL, _pixelShader.GetAddressOf()));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void TerrainNode::BuildVertexLayout()
|
||||||
|
{
|
||||||
|
// Create the vertex input layout. This tells DirectX the format
|
||||||
|
// of each of the vertices we are sending to it.
|
||||||
|
|
||||||
|
D3D11_INPUT_ELEMENT_DESC vertexDesc[] =
|
||||||
|
{
|
||||||
|
{ "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },
|
||||||
|
{ "NORMAL", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT , D3D11_INPUT_PER_VERTEX_DATA, 0 },
|
||||||
|
{ "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT , D3D11_INPUT_PER_VERTEX_DATA, 0 },
|
||||||
|
{ "TEXCOORD", 1, DXGI_FORMAT_R32G32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT , D3D11_INPUT_PER_VERTEX_DATA, 0 }
|
||||||
|
};
|
||||||
|
ThrowIfFailed(_device->CreateInputLayout(vertexDesc, ARRAYSIZE(vertexDesc), _vertexShaderByteCode->GetBufferPointer(), _vertexShaderByteCode->GetBufferSize(), _layout.GetAddressOf()));
|
||||||
|
}
|
||||||
|
|
||||||
|
void TerrainNode::BuildConstantBuffer()
|
||||||
|
{
|
||||||
|
D3D11_BUFFER_DESC bufferDesc;
|
||||||
|
ZeroMemory(&bufferDesc, sizeof(bufferDesc));
|
||||||
|
bufferDesc.Usage = D3D11_USAGE_DEFAULT;
|
||||||
|
bufferDesc.ByteWidth = sizeof(CBUFFER);
|
||||||
|
bufferDesc.BindFlags = D3D11_BIND_CONSTANT_BUFFER;
|
||||||
|
ThrowIfFailed(_device->CreateBuffer(&bufferDesc, NULL, _constantBuffer.GetAddressOf()));
|
||||||
|
}
|
||||||
|
|
||||||
|
void TerrainNode::BuildBlendState()
|
||||||
|
{
|
||||||
|
D3D11_BLEND_DESC transparentDesc = { 0 };
|
||||||
|
transparentDesc.AlphaToCoverageEnable = false;
|
||||||
|
transparentDesc.IndependentBlendEnable = false;
|
||||||
|
transparentDesc.RenderTarget[0].BlendEnable = true;
|
||||||
|
transparentDesc.RenderTarget[0].SrcBlend = D3D11_BLEND_SRC_ALPHA;
|
||||||
|
transparentDesc.RenderTarget[0].DestBlend = D3D11_BLEND_INV_SRC_ALPHA;
|
||||||
|
transparentDesc.RenderTarget[0].BlendOp = D3D11_BLEND_OP_ADD;
|
||||||
|
transparentDesc.RenderTarget[0].SrcBlendAlpha = D3D11_BLEND_ZERO;
|
||||||
|
transparentDesc.RenderTarget[0].DestBlendAlpha = D3D11_BLEND_ZERO;
|
||||||
|
transparentDesc.RenderTarget[0].BlendOpAlpha = D3D11_BLEND_OP_ADD;
|
||||||
|
transparentDesc.RenderTarget[0].RenderTargetWriteMask = D3D11_COLOR_WRITE_ENABLE_ALL;
|
||||||
|
ThrowIfFailed(_device->CreateBlendState(&transparentDesc, _transparentBlendState.GetAddressOf()));
|
||||||
|
}
|
||||||
|
|
||||||
|
void TerrainNode::BuildRendererStates()
|
||||||
|
{
|
||||||
|
// Set default and wireframe rasteriser states
|
||||||
|
D3D11_RASTERIZER_DESC rasteriserDesc;
|
||||||
|
rasteriserDesc.FillMode = D3D11_FILL_SOLID;
|
||||||
|
rasteriserDesc.CullMode = D3D11_CULL_BACK;
|
||||||
|
rasteriserDesc.FrontCounterClockwise = false;
|
||||||
|
rasteriserDesc.DepthBias = 0;
|
||||||
|
rasteriserDesc.SlopeScaledDepthBias = 0.0f;
|
||||||
|
rasteriserDesc.DepthBiasClamp = 0.0f;
|
||||||
|
rasteriserDesc.DepthClipEnable = true;
|
||||||
|
rasteriserDesc.ScissorEnable = false;
|
||||||
|
rasteriserDesc.MultisampleEnable = false;
|
||||||
|
rasteriserDesc.AntialiasedLineEnable = false;
|
||||||
|
ThrowIfFailed(_device->CreateRasterizerState(&rasteriserDesc, _defaultRasteriserState.GetAddressOf()));
|
||||||
|
rasteriserDesc.FillMode = D3D11_FILL_WIREFRAME;
|
||||||
|
ThrowIfFailed(_device->CreateRasterizerState(&rasteriserDesc, _wireframeRasteriserState.GetAddressOf()));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TerrainNode::LoadHeightMap(wstring heightMapFilename)
|
||||||
|
{
|
||||||
|
unsigned int mapSize = _gridCols * _gridRows;
|
||||||
|
USHORT* rawFileValues = new USHORT[mapSize];
|
||||||
|
|
||||||
|
std::ifstream inputHeightMap;
|
||||||
|
inputHeightMap.open(heightMapFilename.c_str(), std::ios_base::binary);
|
||||||
|
if (!inputHeightMap)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
inputHeightMap.read((char*)rawFileValues, mapSize * 2);
|
||||||
|
inputHeightMap.close();
|
||||||
|
|
||||||
|
// Normalise BYTE values to the range 0.0f - 1.0f;
|
||||||
|
for (unsigned int i = 0; i < mapSize; i++)
|
||||||
|
{
|
||||||
|
_heightValues.push_back((float)rawFileValues[i] / 65536);
|
||||||
|
}
|
||||||
|
delete[] rawFileValues;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
float TerrainNode::GetHeightMapValueAt(int index)
|
||||||
|
{
|
||||||
|
float result = 0;
|
||||||
|
if (_usedHeightMap)
|
||||||
|
{
|
||||||
|
result = _heightValues[index] * WORLD_HEIGHT; // +(rand() % 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
@@ -0,0 +1,85 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <fstream>
|
||||||
|
#include <vector>
|
||||||
|
#include "WICTextureLoader.h"
|
||||||
|
#include "SharedMethods.h"
|
||||||
|
#include "SceneNode.h"
|
||||||
|
#include "Vector3D.h"
|
||||||
|
|
||||||
|
class TerrainNode : public SceneNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
TerrainNode(wstring name, wstring heightMap, int widthX = 1023, int widthZ = 1023, int rows = 10, int cols = 10);
|
||||||
|
|
||||||
|
bool Initialise(void);
|
||||||
|
void Render(void);
|
||||||
|
void Shutdown(void);
|
||||||
|
|
||||||
|
private:
|
||||||
|
int _widthX;
|
||||||
|
int _widthZ;
|
||||||
|
|
||||||
|
UINT _gridRows;
|
||||||
|
UINT _gridCols;
|
||||||
|
|
||||||
|
int _cellSizeX;
|
||||||
|
int _cellSizeZ;
|
||||||
|
|
||||||
|
bool _usedHeightMap;
|
||||||
|
|
||||||
|
UINT _polygonsCount;
|
||||||
|
UINT _indiciesCount;
|
||||||
|
UINT _vertexCount;
|
||||||
|
|
||||||
|
float _terrainStartX;
|
||||||
|
float _terrainStartZ;
|
||||||
|
float _terrainEndX;
|
||||||
|
float _terrainEndZ;
|
||||||
|
|
||||||
|
wstring _heightMap;
|
||||||
|
wstring _textureName;
|
||||||
|
|
||||||
|
vector<VERTEX> _terrainVerts;
|
||||||
|
vector<int> _indices;
|
||||||
|
vector<float> _heightValues;
|
||||||
|
vector<Vector3D> _terrainNormals;
|
||||||
|
|
||||||
|
XMFLOAT4 _ambientLight;
|
||||||
|
XMFLOAT4 _directionalLightVector;
|
||||||
|
XMFLOAT4 _directionalLightColor;
|
||||||
|
XMFLOAT4 _cameraPosition;
|
||||||
|
|
||||||
|
ComPtr<ID3D11Device> _device;
|
||||||
|
ComPtr<ID3D11DeviceContext> _deviceContext;
|
||||||
|
|
||||||
|
ComPtr<ID3D11Buffer> _vertexBuffer;
|
||||||
|
ComPtr<ID3D11Buffer> _indexBuffer;
|
||||||
|
|
||||||
|
ComPtr<ID3DBlob> _vertexShaderByteCode = nullptr;
|
||||||
|
ComPtr<ID3DBlob> _pixelShaderByteCode = nullptr;
|
||||||
|
ComPtr<ID3D11VertexShader> _vertexShader;
|
||||||
|
ComPtr<ID3D11PixelShader> _pixelShader;
|
||||||
|
ComPtr<ID3D11InputLayout> _layout;
|
||||||
|
ComPtr<ID3D11Buffer> _constantBuffer;
|
||||||
|
|
||||||
|
ComPtr<ID3D11ShaderResourceView> _texture;
|
||||||
|
|
||||||
|
ComPtr<ID3D11BlendState> _transparentBlendState;
|
||||||
|
|
||||||
|
ComPtr<ID3D11RasterizerState> _defaultRasteriserState;
|
||||||
|
ComPtr<ID3D11RasterizerState> _wireframeRasteriserState;
|
||||||
|
|
||||||
|
void GenerateTerrainData();
|
||||||
|
void GenerateBuffers();
|
||||||
|
void BuildShaders();
|
||||||
|
void BuildVertexLayout();
|
||||||
|
void BuildConstantBuffer();
|
||||||
|
void BuildBlendState();
|
||||||
|
void BuildRendererStates();
|
||||||
|
void BuildTexture();
|
||||||
|
|
||||||
|
bool LoadHeightMap(wstring heightMapFilename);
|
||||||
|
float GetHeightMapValueAt(int index);
|
||||||
|
|
||||||
|
void AddNormalToVertex(int row, int col, int vertexIndex, Vector3D normal);
|
||||||
|
};
|
||||||
@@ -0,0 +1,99 @@
|
|||||||
|
cbuffer ConstantBuffer
|
||||||
|
{
|
||||||
|
float4x4 completeTransformation;
|
||||||
|
float4x4 worldTransformation;
|
||||||
|
float4 cameraPosition;
|
||||||
|
float4 lightVector; // the light's vector
|
||||||
|
float4 lightColor; // the light's color
|
||||||
|
float4 ambientColor; // the ambient light's color
|
||||||
|
float4 diffuseCoefficient; // The diffuse reflection cooefficient
|
||||||
|
float4 specularCoefficient; // The specular reflection cooefficient
|
||||||
|
float shininess; // The shininess factor
|
||||||
|
float opacity; // The opacity (transparency) of the material. 0 = fully transparent, 1 = fully opaque
|
||||||
|
float2 padding;
|
||||||
|
}
|
||||||
|
|
||||||
|
Texture2D BlendMap : register(t0);
|
||||||
|
Texture2DArray TexturesArray : register(t1);
|
||||||
|
|
||||||
|
SamplerState ss
|
||||||
|
{
|
||||||
|
Filter = MIN_MAG_MIP_LINEAR;
|
||||||
|
|
||||||
|
AddressU = WRAP;
|
||||||
|
AddressV = WRAP;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct VertexShaderInput
|
||||||
|
{
|
||||||
|
float3 Position : POSITION;
|
||||||
|
float3 Normal : NORMAL;
|
||||||
|
float2 TexCoord : TEXCOORD0;
|
||||||
|
float2 BlendMapTexCoord : TEXCOORD1;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct PixelShaderInput
|
||||||
|
{
|
||||||
|
float4 Position : SV_POSITION;
|
||||||
|
float4 PositionWS: TEXCOORD2;
|
||||||
|
float4 NormalWS : TEXCOORD3;
|
||||||
|
float2 TexCoord : TEXCOORD0;
|
||||||
|
float2 BlendMapTexCoord : TEXCOORD1;
|
||||||
|
};
|
||||||
|
|
||||||
|
PixelShaderInput VShader(VertexShaderInput vin)
|
||||||
|
{
|
||||||
|
PixelShaderInput output;
|
||||||
|
float3 position = vin.Position;
|
||||||
|
output.Position = mul(completeTransformation, float4(position, 1.0f));
|
||||||
|
output.PositionWS = mul(worldTransformation, float4(position, 1.0f));
|
||||||
|
output.NormalWS = float4(mul((float3x3)worldTransformation, vin.Normal), 1.0f);
|
||||||
|
output.TexCoord = vin.TexCoord;
|
||||||
|
output.BlendMapTexCoord = vin.BlendMapTexCoord;
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
float4 PShader(PixelShaderInput input) : SV_TARGET
|
||||||
|
{
|
||||||
|
float4 directionToCamera = normalize(input.PositionWS - cameraPosition);
|
||||||
|
float4 directionToLight = normalize(-lightVector);
|
||||||
|
float surfaceShininess = shininess;
|
||||||
|
float4 adjustedNormal = normalize(input.NormalWS);
|
||||||
|
|
||||||
|
// Calculate diffuse lighting
|
||||||
|
float NdotL = max(0, dot(adjustedNormal, directionToLight));
|
||||||
|
float4 diffuse = saturate(lightColor * NdotL * diffuseCoefficient);
|
||||||
|
diffuse.a = 1.0f;
|
||||||
|
|
||||||
|
// Calculate specular component
|
||||||
|
float4 R = 2 * NdotL * adjustedNormal - directionToLight;
|
||||||
|
float RdotV = max(0, dot(R, directionToCamera));
|
||||||
|
float4 specular = saturate(lightColor * pow(RdotV, surfaceShininess) * specularCoefficient);
|
||||||
|
specular.a = 1.0f;
|
||||||
|
|
||||||
|
// Calculate ambient lighting
|
||||||
|
float4 ambientLight = ambientColor * diffuseCoefficient;
|
||||||
|
float4 color;
|
||||||
|
|
||||||
|
// Sample layers in texture array.
|
||||||
|
float4 c0 = TexturesArray.Sample(ss, float3(input.TexCoord, 0.0f));
|
||||||
|
float4 c1 = TexturesArray.Sample(ss, float3(input.TexCoord, 1.0f));
|
||||||
|
float4 c2 = TexturesArray.Sample(ss, float3(input.TexCoord, 2.0f));
|
||||||
|
float4 c3 = TexturesArray.Sample(ss, float3(input.TexCoord, 3.0f));
|
||||||
|
float4 c4 = TexturesArray.Sample(ss, float3(input.TexCoord, 4.0f));
|
||||||
|
|
||||||
|
// Sample the blend map.
|
||||||
|
float4 t = BlendMap.Sample(ss, input.BlendMapTexCoord);
|
||||||
|
|
||||||
|
// Blend the layers on top of each other.
|
||||||
|
color = c0;
|
||||||
|
color = lerp(color, c1, t.r);
|
||||||
|
color = lerp(color, c2, t.g);
|
||||||
|
color = lerp(color, c3, t.b);
|
||||||
|
color = lerp(color, c4, t.a);
|
||||||
|
|
||||||
|
// Combine all components
|
||||||
|
color = (ambientLight + diffuse) * color;
|
||||||
|
color = saturate(color + specular);
|
||||||
|
return color;
|
||||||
|
}
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
cbuffer ConstantBuffer
|
||||||
|
{
|
||||||
|
float4x4 completeTransformation;
|
||||||
|
float4x4 worldTransformation;
|
||||||
|
float4 cameraPosition;
|
||||||
|
float4 lightVector; // the light's vector
|
||||||
|
float4 lightColor; // the light's color
|
||||||
|
float4 ambientColor; // the ambient light's color
|
||||||
|
float4 diffuseCoefficient; // The diffuse reflection cooefficient
|
||||||
|
float4 specularCoefficient; // The specular reflection cooefficient
|
||||||
|
float shininess; // The shininess factor
|
||||||
|
float opacity; // The opacity (transparency) of the material. 0 = fully transparent, 1 = fully opaque
|
||||||
|
float2 padding;
|
||||||
|
}
|
||||||
|
|
||||||
|
Texture2D Texture;
|
||||||
|
SamplerState ss;
|
||||||
|
|
||||||
|
struct VertexShaderInput
|
||||||
|
{
|
||||||
|
float3 Position : POSITION;
|
||||||
|
float3 Normal : NORMAL;
|
||||||
|
float2 TexCoord : TEXCOORD;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct PixelShaderInput
|
||||||
|
{
|
||||||
|
float4 Position : SV_POSITION;
|
||||||
|
float4 PositionWS: TEXCOORD1;
|
||||||
|
float4 NormalWS : TEXCOORD2;
|
||||||
|
float2 TexCoord : TEXCOORD0;
|
||||||
|
};
|
||||||
|
|
||||||
|
PixelShaderInput VShader(VertexShaderInput vin)
|
||||||
|
{
|
||||||
|
PixelShaderInput output;
|
||||||
|
|
||||||
|
output.Position = mul(completeTransformation, float4(vin.Position, 1.0f));
|
||||||
|
output.PositionWS = mul(worldTransformation, float4(vin.Position, 1.0f));
|
||||||
|
output.NormalWS = float4(mul((float3x3)worldTransformation, vin.Normal), 1.0f);
|
||||||
|
output.TexCoord = vin.TexCoord;
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
float4 PShader(PixelShaderInput input) : SV_TARGET
|
||||||
|
{
|
||||||
|
float4 viewDirection = normalize(cameraPosition - input.PositionWS);
|
||||||
|
float4 directionToLight = normalize(-lightVector);
|
||||||
|
|
||||||
|
// Calculate diffuse lighting
|
||||||
|
float4 adjustedNormal = normalize(input.NormalWS);
|
||||||
|
float NdotL = max(0, dot(adjustedNormal, directionToLight));
|
||||||
|
float4 diffuse = saturate(lightColor * NdotL * diffuseCoefficient);
|
||||||
|
|
||||||
|
// Calculate specular component
|
||||||
|
float4 R = 2 * NdotL * adjustedNormal - directionToLight;
|
||||||
|
float RdotV = max(0, dot(R, viewDirection));
|
||||||
|
float4 specular = saturate(lightColor * pow(RdotV, shininess) * specularCoefficient);
|
||||||
|
|
||||||
|
// Calculate ambient lighting
|
||||||
|
float4 ambientLight = ambientColor * diffuseCoefficient;
|
||||||
|
|
||||||
|
// Combine all components
|
||||||
|
float4 color = saturate((ambientLight + diffuse + specular));// *Texture.Sample(ss, input.TexCoord)); // ambientColor;
|
||||||
|
if (opacity < 1.0f)
|
||||||
|
{
|
||||||
|
color.a = opacity;
|
||||||
|
}
|
||||||
|
return color;
|
||||||
|
}
|
||||||
@@ -38,7 +38,7 @@ bool TexturedCubeNode::Initialise()
|
|||||||
void TexturedCubeNode::Render()
|
void TexturedCubeNode::Render()
|
||||||
{
|
{
|
||||||
XMMATRIX projectionTransformation = DirectXFramework::GetDXFramework()->GetProjectionTransformation();
|
XMMATRIX projectionTransformation = DirectXFramework::GetDXFramework()->GetProjectionTransformation();
|
||||||
XMMATRIX viewTransformation = DirectXFramework::GetDXFramework()->GetViewTransformation();
|
XMMATRIX viewTransformation = DirectXFramework::GetDXFramework()->GetCamera()->GetViewMatrix();
|
||||||
|
|
||||||
// Calculate the world x view x projection transformation
|
// Calculate the world x view x projection transformation
|
||||||
XMMATRIX completeTransformation = XMLoadFloat4x4(&_combinedWorldTransformation) * viewTransformation * projectionTransformation;
|
XMMATRIX completeTransformation = XMLoadFloat4x4(&_combinedWorldTransformation) * viewTransformation * projectionTransformation;
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 450 KiB |
Binary file not shown.
@@ -0,0 +1,955 @@
|
|||||||
|
€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€亖亖亖亖亖亖倐倐倐們儍儍儍剟剟剟剠厖厖厗唵唵唶噰噰噲垐垐垐墘墘墘妸妸妸媼媼媼寣寣寣崓崓崓帋帋帋弿弿弿悙悙悙憫憫憫拻拻拻挀摀摀摀敂敂敂敃晻晻晻枛枛枛枛棗棗棗棗槝槝槝槝櫃櫃櫃櫃櫃殮殮殮殮殮殯洓洓洓洓洓洓洔湝湝湝湝湝湝湝湝湝湝湝湝湝湝湝湝湝湝湝湝湝湝湝湝湝湝湝洓洓洓洓洓洓洓洓殮殮殮殮殮殭櫃櫃櫃櫃櫂槝槝槝槝棗棗棗棗枛枛枛枙晻晻晻敂敂敂敁摀摀搾拻拻拺憫憫憫悙悙悙弿弿弿帋帋帋崓崓崓崒寣寣寢媼媼媻妸妸妸墘墘墘増垐垐垐噰噰噰噯唵唵唵厖厖厖厖剟剟剟剟剝儍儍儍儍儌倐倐倐倐倐倐倎亖亖亖亖亖亖亖亖亖€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€亖亖亖亖亖亖亖亖亖亖倐倐倐倐倐倐倐倐倐倐們儍儍儍儍儍儍儍儍儍儍儎剟剟剟剟剟剟剟剟剟剟厖厖厖厖厖厖厖厖厖厖厖唵唵唵唵唵唵唵唵唵唶噰噰噰噰噰噰噰噰噰噲垐垐垐垐垐垐垐垐垐垐垑墘墘墘墘墘墘墘墘墘墘墘墘墘妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妺媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸妸媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼寣寣寣寣寣寣寣寣寣寣寣寣寣寣寣寣寣寣寣崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崕帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帍弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿彁悙悙悙悙悙悙悙悙悙悙悙悙悜憫憫憫憫憫憫憫憫憫憫憫憭拻拻拻拻拻拻拻拻拻拻拻拻拻拻挀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀拻拻拻拻拻拻拻拻拻拻拻拻拻拻憫憫憫憫憫憫憫憫憫悙悙悙悙悙悙悙悘弿弿弿弿弿弿弾帋帋帋帋帋帋帊崓崓崓崓崓崓寣寣寣寣€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€Line truncated
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
!"#%&')*,-.012456789:;<=>?@ABBCCCCCBBBBAAAAA@@@@?????>>>>>>>>>>>>>>>>???????????????????>>>>=====<<<<<<;;;:::999888877766665554332110/..-,++*))(('&&&%%$$##"""!!!!!!!!!!!! !!!!"""""####$$$$%%%&&&'''(((()))))***++++,,,--../011234567789:;<=>?@AABCDEFGHIIJJKKLLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]^__```aabbbccddeeefffggghhhiiijjjkkkllllllmmmmmnnnnooopppqqrrrssstttuuuvvvvwwwwxxxxyyyyyyyzzzzzzzz{{{{{{{{{{||||||||||||||}}}}}}}}}}}}~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€亖亖亖亖亖亗倐倐倐倐儍儍儍儍儎剟剟剟剠厖厖厖唵唵唵唶噰噰噰垐垐垐垑墘墘墛妸妸妺媼媼媽寣寣實崓崓崕帋帋弿弿弿悙悙悙憫憫憭拻拻挀摀摀敂敂敂晻晻晼枛枛枟棗棗槝槝槝櫃櫃櫄殮殮殯洓洓洔湝湝湝潩潩潩潪灋灋灋煙煙煙煙煚牋牋牋牎 ⅱⅱⅱⅱⅱ#######いいいいいいいいいいいいいいいいいいいいいいいいいいいいいゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥウΖΖΖΖΖΖΖΖΖΖΖΕゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥイいいいいいいいいぃ######ⅱⅱⅱⅱⅱⅱⅱⅱⅱ �牋牋牋牋煙煙煙煙煙灋灋灋灊潩潩潩潨湝湝湝洓洓洓洑殮殮殮櫃櫃櫃櫂槝槝槜棗棗棗棖枛枛枛枛晻晻晻晻敂敂敂敁摀摀摀摀拻拻拻拻拺憫憫憫憫憫憫憫悙悙悙悙悙悙悙弿弿弿弿弾帋帋帋帋帋帋崓崓崓崓崓崓崓崓崒寣寣寣寣寣寣寢媼媼媼媼媼媼媼媼妸妸妸妸妸妸妸妸墘墘墘墘墘墘増垐垐垐垐垐垏噰噰噰噰噯唵唵唵唵唵唴厖厖厖厖厖厔剟剟剟剟剟剟剟剟剟剟剝儍儍儍儍儍儍儍儍儍儍儍儍儍儍儍儌倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐亖亖亖亖亖亖亖亖亖亖亖亖亖亖亖亖亖亖亖亖亖亖亐€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}}}}}}}}}}}}}}}}~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€亖亖亖亖亖亖亖€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~}}}}}}}}}}}}}}}|||||||||||||||||||||{{{{{{{{{{{{{{{{zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{{{{{{{{zzzzzzzzzzzzzzzzzzzzzzzzzzzzzyzzzyyyyyyyyyyxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxwwwwwwwwwwwwwwwxxxxxxxxwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyzzzzz{{{|||||||||||||||}}}}}}}~~~~~~~€€€€€亖亖倐倐倐倐儍儍儍儍儍儍儍儍儍儍儎剟剟厖厖厖唵唵唵噰噰噰噲垐垐垐墘墘墘墘墘妸妸妸妺媼媼媼媽寣寣寣寣寣寣寣寣寣寣寣崓崓崓崓崓帋帋帋帋帋帋帋帋帋帍弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿彁悙悙悙悙悙悙悙悜憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻摀摀摀摀摀摀摀摀摀摀摀摀拻拻拻拻拻拻拻拻拺憫憫憫憫憫憫憪悙悙悙悙悙悙悘弿弿弿弾帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋弿帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋崓崒寢媼媻妸妸妷墘増垐垐垏噰噰噲垐墘墘妸妸妺媼媽寣實崓帋帋帍弿悙悙悜憫憫憭拻拻拻摀摂敂敃晻枛枛枛枙晹敁搾拺憪悘弿帋帊崓崒寣媼媼媼媼媽寣寣寣寣寣實崓帋帋帋弿弿弿弿弿彁悙悙悘弿弾帊崒媼妸墘増垐垐垏噰噰噰噰噰噰噰噰噰噲噰垐垐垐墘墘墛妸妺媼媼媽寣崓崓帋帍弿悙悙憫憭拻摀摂敂晻晻枛枟棙槝櫃櫄殯洔湝湝湝湝湝湝湝湝湝湝洓洑殮櫃櫂槜棗棗棙槝槝槞櫃櫃櫃殮殮殮殯洓洓洓洓湝湝潩潩潪灋灋灋灋灋煙煙煚牋牋 、ⅲ¥ぅウΗè┅���������������������������鞍鞍氨北北北北膊膊膊膊膊膊膊膊吵巢膊膊膊膊脖北北鞍鞍鞍�����������������������┅┄èЁЕΖΖゥゥイいいぃ##"ⅱⅱⅰ 牋牋牊煙煙煙煙牋牋 ⅱⅲ¥ぅウΗè┅�����氨膊炒档斗父构夯患浇揪靠览览览览烤窘郊换汗阜兜荡巢卑隘����┅èЁΖゥイいぃ#"ⅱⅰ 牋牋牎 ⅱ#いゥΖЁè┆���氨渤炒档斗犯腹汉患浇究览谅妹呐破侨壬适扇瞧琶铝揽郊缓阜兜创巢卑���┃Ζイ"�煗湜殭棖晹搾憪弾崑妷噯剝�~|zxvtrpnljhfdb`^][YXVTRQOMLJHFCA?<:8530.,)'%#!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
!#$%'()+,./02345678:;<=>??@ABBCCCBBBBAAAAA@@@@@?????>>>>>>>>>>>>>????????????????????????>>>>=======<<<;;;;:::9998888777666555432210//.-,,+*))((''&&&%%$$##"""""!!!!!!!!!!! !!!!"""""####$$$$%%%%&&''''(((())))))***++++,,,--./001233456789:;<=>??@ABCDEFGHIIJJJKKLLMMNNNOOPPQQRRSTTUUVVWWXXYYZZ[[\\]]^^__``aabbbccdddeefffggghhhiiijjjjkkkllllllmmmmmnnnooopppqqqrrssstttuuuvvvvwwwwxxxxxyyyyyyzzzzzzzz{{{{{{{{{{{|||||||||||||}}}}}}}}}}}}}~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€亖亖亖亖亖亗倐倐倐倐儍儍儍儍儎剟剟剟剠厖厖厖唵唵唵唶噰噰噰垐垐垐墘墘墘墛妸妸妺媼媼媽寣寣實崓崓帋帋帋弿弿弿悙悙悜憫憫憭拻拻摀摀摀敂敂敃晻晻晼枛枛棗棗棗槝槝槞櫃櫃櫄殮殮洓洓洓湝湝湝湝潩潩潩灋灋灋灍煙煙煙煙煚牋牋牋 、ⅱⅱⅱⅱⅲ#######いいいいいいいいいいいいいいいいいいいいいいいいいいいいぅゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥΖΖΖΖΖΖΖΖΖΖΕゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥいいいいいいいいぃ#######ⅱⅱⅱⅱⅱⅱⅱⅱⅰ �牋牋牋牋牊煙煙煙煙灋灋灋灋潩潩潩湝湝湝湝洓洓洓洑殮殮殮殭櫃櫃櫂槝槝槝棗棗棗棗枛枛枛枛枙晻晻晻晹敂敂敂摀摀摀摀搾拻拻拻拻拺憫憫憫憫憫憫憪悙悙悙悙悙悙弿弿弿弿弿帋帋帋帋帋帋帋崓崓崓崓崓崓崓崓崓寣寣寣寣寣寣寢媼媼媼媼媼媼媼媼媻妸妸妸妸妸妸妸妷墘墘墘墘墘増垐垐垐垐垐噰噰噰噰噰噯唵唵唵唵唵唴厖厖厖厖厖厖剟剟剟剟剟剟剟剟剟剟剟剝儍儍儍儍儍儍儍儍儍儍儍儍儍儍儍倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倎亖亖亖亖亖亖亖亖亖亖亖亖亖亖亖亖亖亐€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}}}}}}}}}}}}}}}~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€亖亖亖亖亖亖亖亖亐€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~}}}}}}}}}}}}}}||||||||||||||||||||||||{{{{{{{{{{{{{{zzz{{{zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{{{{{zzzzzzzzzz{{{{{zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzyyyyyyyyyyxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyzzzzz{{{{|||||||||||}}}}}}}}}~~~~~~~~€€€€€€亖亖倐倐們儍儍儍儍儍儍儍儍儍儍儍剟剟剟厖厖厖厗唵唵噰噰噰垐垐垐垐墘墘墘墘墛妸妸妸媼媼媼媼寣寣寣寣寣寣寣寣寣寣寣實崓崓崓崓崕帋帋帋帋帋帋帋帋帋帍弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿悙悙悙悙悙悙悙悜憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻摀摀摀摀摀摀摀摀摀摀摀摀摀摀搾拻拻拻拻拻拻拻拺憫憫憫憫憫憫悙悙悙悙悙悙悘弿弿弿帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋弿弿弿弿弾帋帋帋帋帋帋帋帋帋帋帋帍弿弾帋崓寣寢媼媻妸妸妷墘墘垐垐垐垐垐垐垑墛妸妸媼媼寣寣崓崕帋帍弿弿悙悙悜憫憫拻拻拻挀摀敂敂晻晻枛枟棗枛枙晹摀拻憫悙弿弾帋帋崓寣寢媼妺媼媽寣寣寣寣寣實崓帋帍弿弿彁悙悙悙悙悙悙悙悘弿弾帊寣媻妷墘増垐噰噰噰噰噰噰噰噰噰噲垐垐垐垐墘墘墘妸妸媼媼寣寣寣實崓帋帍弿悙悜憫拻挀摀摂敂晻晼枛棗棗槝槞櫄殯洔湝潩潩潩潩潩潨湞潩潨湝洓洓殮殭櫂槝棗槝槝槞櫃櫃殮殮殮殮洓洓洓洔湝湝湝湞潩潪灋灋灋煙煙煙煙煙煙牋牋牎 ⅱ#いゥΖЖī┆��������������������������鞍鞍氨北北北北膊膊膊膊膊膊膊膊膊膊膊膊膊膊脖北北鞍鞍鞍������������������������┅èěЁΖΖΕゥゥいいい###ⅱⅱⅰ 牋牋煙煙煙煙煙煙煚牋 ⅱ#¥ぅΖЁī┆�����辈渤吹刀贩腹购换冀骄究靠览览览靠揪郊蓟汗垢范荡吵脖隘����┅┄ěЕΕゥいぃ#"ⅱⅱ 牋牋煚牎、ⅱ#ぅウΗЖ┅����辈炒档抖贩父购换冀揪坷懒旅媚牌魄热缮噬惹婆寐晾窘蓟垢范荡闯脖隘���Еイ#ⅰ牊潨洑槜枙敁拺悘帉媻垏唲儊}{ywusqomkigeca`^\[YWUTRPOMKIGEC@><97520-+)&$"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
"#$&'(*+-.012356789:;<=>?@AABBBBBBBAAAAA@@@@@???????>>>>>>>>>>>?????@@@@@@@@@@@@@@@@???????>>>>>====<<<<;;;::::999888777666554432110/.--,+**)(((''&&%%$$$##""""""""!!!!!!!!!!!!!"""""####$$$$$%%%&&&'''''((())))))****++++,,,-../01223456789:;;<=>?@ABCDEFGHHIIJJKKLLMMNNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\]]^^__``aabbbccdddeefffggghhhiiiijjjkkkllllllmmmmmnnnnoooppqqqrrrsstttuuuvvvvwwwwxxxxxyyyyyyzzzzzzzz{{{{{{{{{{{|||||||||||||}}}}}}}}}}}}}~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€亖亖亖亖亖亗倐倐倐倐們儍儍儍儎剟剟剟剠厖厖厖厗唵唵唵噰噰噰噲垐垐垑墘墘墛妸妸妺媼媼媼寣寣實崓崓崕帋帋帍弿弿悙悙悙憫憫憫拻拻挀摀摀摂敂敂晻晻晻枛枛枟棗棗棙槝槝櫃櫃櫄殮殮殯洓洓洔湝湝湝潩潩潩潪灋灋灋煙煙煙煙煚牋牋牋 、ⅱⅱⅱⅱⅲ########¥いいいいいいいいいいいいいいいいいいいいいいいいいいいゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥウΖΖΖΖΖΖΖΖΕゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥイいいいいいいいい#######"ⅱⅱⅱⅱⅱⅱⅱⅱⅰ 牋牋牋牋牋煙煙煙煙煘灋灋灋灊潩潩潨湝湝湝湜洓洓洓洑殮殮殮櫃櫃櫃槝槝槝槝棗棗棗棗枛枛枛枛枙晻晻晻敂敂敂敂摀摀摀摀摀拻拻拻拻拻憫憫憫憫憫憫憪悙悙悙悙悙悙悘弿弿弿弿帋帋帋帋帋帋帋帊崓崓崓崓崓崓崓崓寣寣寣寣寣寣寣寣媼媼媼媼媼媼媼媼妸妸妸妸妸妸妸妸墘墘墘墘墘墘垐垐垐垐垐垏噰噰噰噰噰唵唵唵唵唵唵厖厖厖厖厖厖厖剟剟剟剟剟剟剟剟剟剟剟剟儍儍儍儍儍儍儍儍儍儍儍儍儍儍儍儌倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倎亖亖亖亖亖亖亖亖亖亖亖亖亖亖亖亐€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}~~~~~~~~}~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€亖亖亖亖亖亖亖亖亐€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~}}}}}}}}}}}}}|||||||||||||||||||||||||{{{{{{{{{{{{{{{{{{{{{zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{{{{{{{zzzzzzzzz{{{zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzyyyyyyyyyyxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyzzzzzzzz{{{{{|||||||||}}}}}}}}}}~~~~~~~€€€€€亖亖倐倐們儍儍儍儍儍儍儍儍儍剟剝剟剟剟厖厖厖厗唵唵噰噰噰垐垐垐垑墘墘墘妸妸妸妸妸媼媼媼媼寣寣寣寣寣寣寣寣寣寣寣崓崓崓崓崓崕帋帋帋帋帋帋帋帋帋帍弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿彁悙悙悙悙悙悙悙憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憭拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀搾拻拻拻拻拻拻拻拺憫憫憫憫憫憪悙悙悙悙悙悙悘弿弿弾帋帋帋帊崓崓崕帋帋帋帋帋帋帋帋帋帋弿弿弿弿弿弿弿帋帋帋帋帋帋帋帋帋帋弿弿弾帋崓寣寢媼媻妸妸妸墘墘墘垐垐垐垐垑墘妸媼媼媽寣實崓崕帋弿弿彁悙悙憫憫憫憭拻摀摀摀敂敂晻晻枛枟棙棗棖枙晹摀拺憪悘弿帋帋帋崓寣媼妸妺媽寣實崓崓寣實崓帋弿弿悙悙悙悙悙悙憫憫憪悙悙悘弾崓寢媻妷墘垐噰噰噰噰噰噰噰噰噰噲垐垐垐墘墘墘妸妸妸媼寣寣寣實崓崓帋帍弿彁悜憭拻挀摀敂敂晻晻枛棗棙槝槞櫄殯洔湝潩潩潩潩潩潩潩潩潩潨湝湜洓殮殭櫂槝槝槞櫃櫃殮殮殮洓洓洓洓湝湝湝湝潩潩潩灋灋煙煙煙煙煙煙煙煙牋牋牎 、ⅲ¥ぅウЁè┆��������������������������鞍鞍氨北北北辈膊膊膊膊膊膊膊膊膊膊膊膊膊膊膊北北卑鞍鞍������������������������┅┄èЁЕΖΖゥゥゥいいぃ##ⅱⅱⅰ 牋牋煙煙煘灋灋灍煙煚牎 ⅱ#いゥΗЖī�����氨辈炒档斗犯构夯患浇揪靠靠览览揽烤浇蓟汉垢范档闯膊卑�����┄ěЕΖゥいぃ##ⅱⅱⅱ �牋煙煚牎、ⅱ¥ぅΖЁī����鞍渤吹刀斗犯腹夯技骄究懒谅妹呐破乔壬墒扇瞧拿吕烤郊汗阜兜创脖卑���ěΕぃⅰ�灊湜櫂棖晸拺悘弾寢妶噮剝�}{ywusqomkigeca_^\ZXWUSRPNLKIGEB@=;9742/-*(&$!
|
||||||
|
|
||||||
|
|
||||||
|
!"$%&()*,-/023456789:;<=>?@ABBBBBAAAAA@@@@@??????????>>>>>>>>?????@@@@@@@@@AAA@@@@@@@@@@@?????>>>>====<<<<;;;::::9998887766665432210//.-,++*))(('''&&%%$$###""""""""""""!!!!!!!""""#####$$$$%%%%%&&&'''''((())))))))***+++++,,-./011234567789:;<=>?@ABCDEFGHHIIJJKKLLMMMNNOOOPPQRRSSSTUUVVWWXXYYZZ[[\]]^^__``aaabbccdddeeeffggghhhhiiijjjkkklllllllmmmmnnnnnoopppqqrrrsstttuuuuvvvwwwwxxxxxyyyyyyzzzzzzzz{{{{{{{{{{{{|||||||||||||}}}}}}}}}}}}}~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€亖亖亖亖亖亗倐倐倐倐們儍儍儍儎剟剟剟剠厖厖厖唵唵唵唵噰噰噰垐垐垐垑墘墘墛妸妸妺媼媼媽寣寣實崓崓崕帋帋弿弿弿悙悙悙憫憫憭拻拻挀摀摀敂敂敂晻晻晼枛枛枟棗棗槝槝槝櫃櫃櫄殮殮殯洓洓洔湝湝湞潩潩潩潪灋灋灋煙煙煙煙牋牋牋牋 ⅱⅱⅱⅱⅱⅲ########¥いいいいいいいいいいいいいいいいいいいいいいいいいいいゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥウΖΖΖΖΖΖΖΖΕゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥいいいいいいいい########ⅱⅱⅱⅱⅱⅱⅱⅱⅱ �牋牋牋牋牊煙煙煙煘灋灋灋灊潩潩潨湝湝湝湜洓洓洓洑殮殮殮櫃櫃櫃槝槝槝槝槜棗棗棗棖枛枛枛枛晻晻晻晹敂敂敂敂摀摀摀摀搾拻拻拻拻拺憫憫憫憫憫憫悙悙悙悙悙悙悙弿弿弿弿弾帋帋帋帋帋帋帋帊崓崓崓崓崓崓崓崓寣寣寣寣寣寣寣寣媼媼媼媼媼媼媼媼媻妸妸妸妸妸妸妷墘墘墘墘墘墘垐垐垐垐垐垏噰噰噰噰噰唵唵唵唵唵唵厖厖厖厖厖厖厖剟剟剟剟剟剟剟剟剟剟剟剟剟儍儍儍儍儍儍儍儍儍儍儍儍儍儍儍儌倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倎亖亖亖亖亖亖亖亖亖亖亖亖亖亖亐€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}~~~~~~~~~~~~~~~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€亖亖亖€亖亖亐€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~}}}}}}}}}}}}|||||||||||||||||||||||||||{{{{{{{{{{{{{{{{{{{{zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{{{{{{{{{zzzzz{{{{{zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzyyyyyyyyyyxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{{{{{||||||}}}}}}}}}}}}}~~~~~~€€€€€亖亖倐倐們儍儍儍儍儍儍儍儍剟剟剟剟剟剟厖厖厖厗唵唵噰噰噰垐垐垐垑墘墘墘妸妸妸妸媼媼媼媼媽寣寣寣寣寣寣寣崒寣寣寣崓崓崓崓崓崕帋帋帋帋帋帋帋帋帋帍弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿彁悙悙悙悙悙悙悙憫憫憫憫憫憭拻拻拻拻拻憭拻拻拻拻拻拻拻拻拻拻拻拺拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻挀摀摀摀摀摀摀摀拻拻拻拻拻拻拻摀摀摀摀摀摀摀摀摀搾摀摀拻拻拻搾摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀拻拻拻拻拻拻拻拺憫憫憫憫憫悙悙悙悙悙悙悘弿弿弿帋帋帋帊崓崓崓崓崓帋帋帋帋帋帋帋帋帍弿弿弿弿弿弿弿弿弿帍弿弾帋帋帋帋弿弿弿弾帋崓寣寢媼媻妸妸妸墘墘墘墘増垐墘墛妸媼媼媽寣崓崓帋帋弿弿悙悙憫憫憫憫憭拻摀摀摂敂敃晻晼枛枟棙槝棗棖晻敂搾拺悙弿弿弾帋帊崒寢媻妸媼寣實崓崓崓崓崓帋弿彁悙悜憫憫憫憫憫憫拺憫悙悙悘弾崒寢妸妷増垏噰噰噰噰噰噰噰噰噰垐垑墘墘墘墛妸妺媼媼寣崓崓崓崓崓帋帍弿彁悜憭拻摀摂敂敃晻晼枛棗棙槝槞櫄殮洓湝潩潩潩潩潩潩潩潩潩潩潩湝湜洓殮殭櫃槞櫃櫃殮殮殯洓洓洓洔湝湝湞潩潩潩潩潪灋灍煙煙煙煚牋煙煙煙牋牋牋 ⅱ#ぅウΗЖ┅�������������������������鞍鞍鞍氨北北北辈膊膊膊膊膊膊膊膊膊膊膊膊膊膊脖北北卑鞍鞍�������������������������┅èěЁΖΖΕゥゥイいい##"ⅱⅱ 牋牋煙煙煘灋灋灋灍煙煚牎、ⅱ#ぅウΗè┅�����北渤创刀贩腹购换技骄揪靠坷览览烤窘技缓构阜兜创巢北隘����┄èЁΖゥイぃ##ⅱⅱⅱ �牋煙煙牋 、ⅲいウΗè┆����辈炒档抖贩父购患冀揪坷懒旅媚排魄侨缮噬绕拍寐揽窘己垢范荡巢卑隘��┄Еイ"�煘潨殭槜枖搾憪弾崒媺垏厔個~}{yvtrpomkifdba_]\ZXVUSQONLJHFDB?=;8641/,*(%#!
|
||||||
|
|
||||||
|
!#$%'(*+-./12345789:;<=>?@@AAAAAAAA@@@@@@???????????????????????@@@@@AAAAAAAAAAAAA@@@@@@@@@?????>>>====<<<<;;;:::9998887776654432110/.-,,+*))(((''&&&%%$$####""""""""""""!!!!""""#####$$$$%%%%%&&&''''''((()))))))))****++++,-./001234556789:;<=>?@ABCDEEFGHIIJJKKLLMMMNNNOOPPQQRRSSTUUVVWWXXYYZZ[[\\]^^__``aaabbcccddeeeffgggghhhiiijjjkkklllllllmmmmmnnnnoooppqqrrrsssttuuuuvvvwwwwxxxxxyyyyyyzzzzzzzz{{{{{{{{{{{{{||||||||||||}}}}}}}}}}}}}}~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€亖亖亖亖亖亗倐倐倐倐儍儍儍儍儎剟剟剟剠厖厖厖唵唵唵唶噰噰噰垐垐垐墘墘墘墛妸妸妺媼媼媽寣寣實崓崓崕帋帋弿弿弿悙悙悜憫憫憭拻拻挀摀摀敂敂敃晻晻晼枛枛棗棗棗槝槝槞櫃櫃櫄殮殮洓洓洓湝湝湝湞潩潩潩潪灋灋灋煙煙煙煙牋牋牋牎 ⅱⅱⅱⅱⅱⅲ########¥いいいいいいいいいいいいいいいいいいいいいいいいいいぅゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥウΖΖΖΖΖΖΖゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥイいいいいいいい########"ⅱⅱⅱⅱⅱⅱⅱⅱⅰ �牋牋牋牋牊煙煙煙煙灋灋灋灊潩潩潩湝湝湝湜洓洓洓洑殮殮殮櫃櫃櫃槝槝槝槝槜棗棗棗棗枛枛枛枛晻晻晻晻敂敂敂敂敁摀摀摀摀拻拻拻拻拻拺憫憫憫憫憫憪悙悙悙悙悙悙悘弿弿弿弿弾帋帋帋帋帋帋帋帋崓崓崓崓崓崓崓崓寣寣寣寣寣寣寣寣媼媼媼媼媼媼媼媼媻妸妸妸妸妸妸妷墘墘墘墘墘墘垐垐垐垐垐噰噰噰噰噰噰唵唵唵唵唵唴厖厖厖厖厖厖厖厖厖厔剟剟剟剟剟剟剟剟剟剟剝儍儍儍儍儍儍儍儍儍儍儍儍儍儍儍儍儍倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐亖亖亖亖亖亖亖亖亖亖亖亖亖亐€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€亖亖€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~}}}}}}}}}}}|||||||||||||||||||||||||||||{{{{{{{{{{{{{{{{{{{{zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{{{{{{{{{zzz{{{{{{{zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzyyyyyyyyyxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzz{{{{{{{{|||||}}}}}}}}}}}}}~~~~~~~€€€€€€亖亖倐倐們儍儍儍儎剝儍儍儎剟剟剟剟剟剟厖厖厖厗唵唵噰噰噰垐垐垐墘墘墘墛妸妸妸妸媼媼媼媼寣寣寣寣寣寣寣寣崓崒寣實崓崓崓崓崓崓帋帋帋帋帋帋帋帋帋帋弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿悙悙悙悙悙悙悙悙憫憫憫憫拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻摀摀摀摀摀挀摀拻拻拻挀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀搾拻拻拻拻拻拻憫憫憫憫憫憪悙悙悙悙悙悙弿弿弿弿帋帋帋崓崓崓崓崓崓帋帋帋帋帋帋帋帍弿弿弿弿弿弿弿弿弿弿弿弿弿弾帋帍弿弿弿弿帋帊崓寣寢媼妸妸妸妸妸墘墘墘墘墘墛妸媼媼寣實崓崓帋帍弿彁悙悜憫憫憫憫憭拻摀摀摂敂晻晻枛枛棗棙槝槝棗枛晻敁拻憪悘弿弿弾帋帊崒媼妸妺媽寣崓崓崓崓崓帋帍彁悜憫憫憭拻拻拻拻拻拺憫憪悙悘帋崒媼妸墘垐噰噰噰噰噰噰噰噰噰垐垑墘墘妸妸妸媼媼媽實崓崓崓崓崓帋帍弿悙悜憭拻摀摂敂晻晻枛枛棗棙槝槞櫄殮洓洔湞潪灊灋灋灋灋灋灋灋灊潩湝湝洓洑殭櫃櫃殮殮殯洓洓洔湝湝湝湞潩潩潩潪灋灋灋煙煙煙牋牋牋牋牋牋牋牋牋牎 、#いゥΖЁī┆���������������������鞍��鞍鞍鞍鞍北北北辈膊膊膊膊膊膊膊膊膊膊膊膊膊膊北北北卑鞍鞍�������������������������┅┄èЁЕΖΖゥゥイいいぃ##ⅱⅱ �牋煙煙灋灋灋灋灋灍煙牋牎、ⅲ¥ぅウЁī┆����鞍辈炒吹抖犯腹汉患冀骄究靠坷览靠揪郊缓汗父范荡吵脖鞍����┄èЁΖΕゥい##ⅱⅱⅱ 牋牊煙煙牋 ⅱ¥ぅΖЖī����氨渤吹刀斗父构夯患骄究览谅妹呐牌乔热缮惹婆拿晾烤郊汗付兜闯脖鞍���ěΕぃⅰ牊灊湚櫂棔敁拺悘帊寠増唴儌€~|zxvtrpnljhfdb`_][ZXVTSQOMLJHFDA?=:8631.,)'%"
|
||||||
|
|
||||||
|
|
||||||
|
!"#%&')*,-/012456789:;<=>?@@AAAAAA@@@@@@??????????????????????@@@@AAAAAAAABBBAAAAAAAAAAA@@@@@@???>>>>====<<<;;;;::999888777665432210/..-,+*)))(((''&&&%%$$#####"""""""""""""""""#####$$$$%%%%%&&&&''''''(((()))))))))****+++,-../01234456789:;<=>?@ABCDDEFGHIIJJKKLLLMMNNNOOPPQQRRSSTTUVVWWXXYYZZ[[\\]]^__``aaabbcccddeeeffgggghhhiiijjjkkkklllllllmmmmnnnnnooppqqqrrssstttuuuvvvwwwwxxxxxyyyyyyzzzzzzzzz{{{{{{{{{{{{||||||||||||}}}}}}}}}}}}}}~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€亖亖亖亖亖亗倐倐倐倐儍儍儍儍儎剟剟剟厖厖厖厖唵唵唵唶噰噰噰垐垐垐墘墘墘妸妸妸妺媼媼媽寣寣崓崓崓帋帋帋弿弿彁悙悙悜憫憫憭拻拻摀摀摀敂敂敃晻晻晼枛枛棗棗棗槝槝槞櫃櫃櫄殮殮洓洓洓湝湝湝潩潩潩潩灋灋灋灍煙煙煙煚牋牋牋牎 、ⅱⅱⅱⅱⅱⅲ#########いいいいいいいいいいいいいいいいいいいいいいいいいいぅゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥΖΕゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥイいいいいいいいぃ#######"ⅱⅱⅱⅱⅱⅱⅱⅱⅰ �牋牋牋牋牊煙煙煙煙灋灋灋灊潩潩潩湝湝湝湜洓洓洓洑殮殮殭櫃櫃櫃櫂槝槝槝槝棗棗棗棗枛枛枛枛枙晻晻晻晹敂敂敂敂摀摀摀摀搾拻拻拻拻拻憫憫憫憫憫憫憫悙悙悙悙悙悙悘弿弿弿弿弿弿帋帋帋帋帋帋帋帊崓崓崓崓崓崓崓崒寣寣寣寣寣寣寣寢媼媼媼媼媼媼媼媼妸妸妸妸妸妸妸墘墘墘墘墘増垐垐垐垐垐噰噰噰噰噰噰唵唵唵唵唵唴厖厖厖厖厖厖厖厖厖厖剟剟剟剟剟剟剟剟剟剟剟儍儍儍儍儍儍儍儍儍儍儍儍儍儍儍儍儍儍儍儌倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐倐亖亖亖亖亖亖亖亖亖亖亖亖亖€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~}}}}}}}}}|||||||||||||||||||||||||||||||{{{{{{{{{{{{{{{{{{{zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{{{{{{{{{{z{{{{{{{{{{zzzzzzzzzzzzzzzzzzzzzzzzzzzzzyyyyyyyyyyxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzz{{{{{{{{{||||||}}}}}}}}}}~~~~~~~~~~€€€€€€€亖亖倐倐倐儍儍儍儍儎剟儎剟剟剟剟剟剟剟剠厖厖唵唵唵噰噰噰噲垐垐墘墘墘妸妸妸妸妸媼媼媼媼寣寣寣寣寣寣寣實崓崓崒崓崓崓崓崓崓崕帋帋帋帋帋帋帋帋帋帋弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿彁悙悙悙悙悙悙悙悙憫憫憫憭拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻挀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀搾拻拻拻拻拻拻憫憫憫憫憫憪悙悙悙悙悙悘弿弿弿帋帋帋帊崓崓崓崓崓崓帋帋帋帋帋帋帋弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿帍弿弿弿悘弿帋帊崒寣寢媼妸妸妸妸妸妸妷墘墘墛妸媼寣寣實崓崕帋帍弿悙悙悜憫憫憭拻拻拻挀摀敂敂晻晻枛枛棗棙槝櫂槝棗枛晹摀拺悙弿弿弿弾帋崓寣媻妸媼寣崓帋帋帋帋帋帍彁悜憫憭拻拻拻拻拻挀搾拻憫憫憪弿帊寣媻妸墘垏噰噰噰噰噰噲垐垏噲垑墘墛妸妸妺媼寣寣實崓帋帋帋帋帋帍弿悙悜憭挀摀摂敃晻晼枛枟棗槝槝櫃櫃殮洓洔湞潩灋灋灋灋灋灋灋灋灋灊潩潨湝洓洑殮櫃殮殮洓洓湝湝湝湞潩潩潩灋灋灋灋灋灍煙煚牋牋牋牋牋牋牋牋牋牋 、ⅲ¥ぅウΗè┅��������������������鞍鞍鞍鞍鞍鞍鞍鞍北北北北膊膊膊膊膊膊膊膊膊膊膊膊膊北北北北卑鞍隘�������������������������┅┅èěЁΖΖΕゥゥいいい##ⅱⅱⅰ �牋牊煙灋灋灊潩潩灋灍煙牋 、ⅲ¥ゥΖЖī�����氨渤炒刀斗父购夯患浇揪究靠靠靠揪郊蓟汗垢范荡闯膊卑隘���┅èЁЕΖゥいぃ#"ⅱⅱⅰ �牋煙灍煚牎 ⅲ¥ウΗè┆����辈炒刀斗犯腹购患冀揪坷懒侣媚排破乔壬扇瞧拍昧揽炯缓狗兜荡巢卑���┄Еイ"�煘潧殭槚晹搾憪弾崑妷噯厓個~|zxvtrpnljhfdb`^][YWVTRQOMKIHFCA?<:8530.+)'$"
|
||||||
|
|
||||||
|
|
||||||
|
!"$%'()+,./123456789:;<=>?@@@@@@@@@@@??????????????????????@@@@@AAAAABBBBBBBBBBBAAAAAAAAAAA@@@@???>>>>====<<<;;;::999888777654432100/.-,+**)))(('''&&%%%$$##########"""""""""#####$$$$$%%%%%%&&&''''''(((()))))))))))*****+,--./01233456789:;<=>?@ABCCDEFGHIIIJJKLLLMMNNNOOOPQQRRSSTTUVVWWXXYYZZ[[\\]]^^_``aaabbcccdddeefffggghhhiiiijjjkkklllllllmmmmmnnnnooppqqqrrssstttuuuvvvwwwwxxxxxyyyyyyzzzzzzzzz{{{{{{{{{{{{|||||||||||||}}}}}}}}}}}}}}~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€亖亖亖亖亖亗倐倐倐倐們儍儍儍儎剟剟剟剠厖厖厖厗唵唵唵噰噰噰垐垐垐垑墘墘墛妸妸妺媼媼媽寣寣實崓崓崕帋帋帍弿弿悙悙悙憫憫憭拻拻挀摀摀敂敂敂晻晻晼枛枛枟棗棗槝槝槝櫃櫃櫄殮殮殯洓洓洔湝湝湞潩潩潩潪灋灋灋煙煙煙煚牋牋牋牎 ⅱⅱⅱⅱⅱⅱⅲ#########いいいいいいいいいいいいいいいいいいいいいいいいいいゥゥゥゥゥゥゥゥゥゥウΖΕゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥイいいいいいいい#########ⅱⅱⅱⅱⅱⅱⅱⅱ �牋牋牋牋牊煙煙煙煘灋灋灊潩潩潩潨湝湝湝洓洓洓洓殮殮殮櫃櫃櫃櫃槝槝槝槝槝棗棗棗棗棖枛枛枛枙晻晻晻晹敂敂敂敂摀摀摀摀摀拻拻拻拻拻拻憫憫憫憫憫憫憪悙悙悙悙悙悙弿弿弿弿弿弿弾帋帋帋帋帋帋帋帋帊崓崓崓崓崓崓寣寣寣寣寣寣寣寣寣媼媼媼媼媼媼媼媼妸妸妸妸妸妸妷墘墘墘墘墘垐垐垐垐垐垏噰噰噰噰噰噯唵唵唵唵唵厖厖厖厖厖厖厖厖厖厖厔剟剟剟剟剟剟剟剟剟剟剝儍儍儍儍儍儍儍儍儍儍儍儍儍儍儍儍儍儍儍儌倐倐倐倐倐倐倐倐倐倐倐倐倐倐倎亖亖亖亖亖亖亖亖亖亖亖亖亐€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~}}}}}}}}|||||||||||||||||||||||||||||||{{{{{{{{{{{{{{{{{{{zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{{{{{{{{{{{z{{{{{{{{{{{zzzzzzzzzzzzzzzzzzzzzzzzzzzzzyyyyyyyyyyxxxyyyyyyyyyyyyyyxxxxxxxxxxxxxyyyxxxxxyyyyyyyyyyyyyyyyyyyyyxxyyyyyyyyyyyyyyyyyyyyyzyyyzzzzzzzzzzzzzzzzzzzzz{{{{{{{{{|||||||}}}}}}}}}~~~~~~~~~~€€€€€€€亖亖亗倐倐們儍儍儍儎剟剟剟剟剟剟剟剟剟厖厖厖唵唵唶噰噰噰噲垐垐墘墘墘妸妸妸妸妺媼媼媼媼寣寣寣寣寣寣寣實崓崓崓崓崓崓崓崓帋帋帋帋帋帋帋帋帋帋帋帋帍弿弿弿弿弿弿弿弿弿弿弿弿弿弿悙悙悙悙悙悙悙悙悜憫憫憫拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻挀摀挀挀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀敂敂敁摀摀摀摀摀摀摀搾拻拻拻拻拻拻憫憫憫憫憫悙悙悙悙悙悙弿弿弿弾帋帋帊崓崓崓崓崓崓崓帋帋帋帋帋帋弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弾弿弿弿悙弿弿帋崓崒寣寢媼媼媼媻妸妸妸妸妸妸妸媼媽寣實崓帋帋帍弿悙悙憫憫憭拻拻拻拻挀摀敂敂晻晼枛枛棗棗槝櫃櫂槝棖枙敂搾憫悘弿弿弿弿帊崒寢妸妺媽實崕帋帋帋帋弿弿悙憭拻挀摀摀摀摀摀摀搾拻憫憫悙弾崓寢媻妷増垏噰垐垏噰噰垐垐垐垑墘妸妸媼媼媽寣實崓崕帋帋帋帋帋弿弿悙悙憫挀摀敂敃晻枛枛棗棗槝槞櫃櫃殮洓洔湝潩灋灋灋灋灋灋灋灋灍灋灊潩潨湝洓洑殮殮洓洓洔湝湝潩潩潩潩灋灋灋灍煙煙煙煙牋牋牋牎 �牋牋牋牋牎 ⅱ#いゥΗЖī┆��������鞍隘鞍鞍������鞍鞍鞍鞍鞍鞍鞍鞍鞍北北北北膊膊膊膊膊膊膊膊膊膊膊膊北北北北北鞍鞍隘��������������������������┅èèЁЕΖΖゥゥイいい##"ⅱⅰ �牋牊煙煘灋灊潩潩潩灋灍煙牋 ⅱ#いウΗè┅�����辈渤吹刀贩腹购夯技浇揪揪靠靠烤浇蓟汉垢阜兜闯巢北隘����èЁЕΖゥイい##ⅱⅱⅰ 牋煙煘煙牋 、#ぅΖЖī����氨渤吹抖贩父构夯冀骄究览亮旅哪排破侨壬惹婆寐晾窘蓟焊范荡闯脖隘���ěΕぃⅰ牊灉洑櫁枙敁拹弾崒媻墖唲儊}{ywusqomkigeca`^\[YWUTRPNMKIGECA><97530.+)&$"
|
||||||
|
|
||||||
|
"#$&')*,-/012345679:;<=>>???@@@@????????>>>??????????????@@@@@AAABBBBBBBCCCBBBBBBBBBBBBBAAAAA@@???>>>>>===<<<<;;:::9988877665432210/.-,,+*))))(((''&&%%$$$############"""""#####$$$$$%%%%%%&&&&''''''(((())))))))))))****++,-./01223456789:;<<>?@AABCDEFGHIIIJJKLLLMMMNNNOOPPQQRRSTTUVVWWXXYYZZ[[\\]]^^__``aabbbccdddeefffggghhhhiiijjjkkkklllllllmmmmnnnnoopppqqrrrsstttuuuvvvwwwwxxxxxyyyyyyyzzzzzzzz{{{{{{{{{{{{{||||||||||||}}}}}}}}}}}}}}~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€亖亖亖亖亖亗倐倐倐倐們儍儍儍儎剟剟剟剠厖厖厖唵唵唵唶噰噰噰垐垐垐垑墘墘墛妸妸妺媼媼媽寣寣實崓崓崕帋帋弿弿弿悙悙悜憫憫憭拻拻挀摀摀敂敂敂晻晻晼枛枛棗棗棗槝槝槝櫃櫃櫄殮殮殯洓洓湝湝湝湞潩潩潩灋灋灋灍煙煙煙煚牋牋牋牎 ⅱⅱⅱⅱⅱⅱⅲ#########いいいいいいいいいいいいいいいいいいいいいいいいいいゥゥゥゥゥゥゥゥゥΖΖΖΕゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥイいいいいいいいぃ########"ⅱⅱⅱⅱⅱⅱⅱ �牋牋牋牋牊煙煙煙煘灋灋灊潩潩潩潨湝湝湝湜洓洓洓殮殮殮殭櫃櫃櫃櫂槝槝槝槝槜棗棗棗棗枛枛枛枛晻晻晻晻敂敂敂敂敁摀摀摀摀搾拻拻拻拻拻憫憫憫憫憫憫憫悙悙悙悙悙悙弿弿弿弿弿弿弿弾帋帋帋帋帋帋帋帋帊崓崓崓崓崓崓崓寣寣寣寣寣寣寣寣媼媼媼媼媼媼媼媼妸妸妸妸妸妸妷墘墘墘墘増垐垐垐垐垐噰噰噰噰噰噰唵唵唵唵唵唵厖厖厖厖厖厖厖厖厖厖厔剟剟剟剟剟剟剟剟剟剟儍儍儍儍儍儍儍儍儍儍儍儍儍儍儍儍儍儍儍儍儌倐倐倐倐倐倐倐倐倐倐倐倐倐亖亖亖亖亖亖亖亖亖亖亖亖亖亐€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~}}}}}}}|||||||||||||||||||||||||||||||{{{{{{{{{{{{{{{{{{{zzzz{zzzzzzzzzzzzzzzzzzzzzzzzz{{{{{{{{{{{{{{{{{{{{{{{zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzz{{{{{{{{{{{{||||||}}}}}}}}~~~~~~~~~~~€€€€€€€€亖亖亖倐倐們儍儍儍剟剟剟剟剟剟剟剟剟剠厖厖厗唵唵唶噰噰噰垐垐垐墘墘墛妸妸妸妸媼媼媼媼媽寣寣寣寣寣寣寣崓崓崓崓崓崓崓崓崓帋帋帋帋帋帋帋帋帋帋帋帋帋弿弿弿弿弿弿弿弿弿弿弿弿弿彁悙悙悙悙悙悙悙悜憫憫憫憫拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻挀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀敂敂敂敂敂敁摀摀摀摀摀摀搾拻拻拻拻拻拻憫憫憫憫憫悙悙悙悙悙悙弿弿弿弾帋帋帊崓崓崓崓崓崓帋帋帋帋帋帋弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿彁悘弿弾帋崓崒寣寢媼媼媼媼妸妸妸妸妸妸媼媽寣實崓崕帋帍弿弿悙悙憫憫憭拻拻拻拻挀摀敂敂晻晼枛枟棗棙槝槝槜棖枙晹摀拺悙弿弿弿帋帋崓寣媻妸媼寣崓帋帋帋弿弿弿悙憫拻拻摀摀摀摀摀摀摀拻拻憫憪悘帋崒寢媻妷増垐垐垐垐垐垐垐垐垐墘妸妺媼媼寣寣崓崓崕帋帋弿弿弿弿弿悙悜憫拻摀敂敃晻晼枛枟棗棙槝櫃櫃櫄殮洓湝湝潩灋灋灋灋灋灋灋灋灋灊潩潨湝湜洓洑殮殯洓洔湝湝潩潩潪灋灋灋灍煙煙煙煚牋牋牋 牋牋牋牎 、ⅲ¥ぅΖΗè┅��������������������鞍鞍鞍鞍鞍鞍鞍氨北北北北北膊膊膊膊脖北北北北北北北北北卑鞍鞍隘��������������������������┅┄èЁЁΖΖゥゥゥいいぃ##ⅱⅱ 牋牊煙煘灋灊潩潩潩潩灋灍煚牋 ⅱ¥ぅウЁī┆����氨辈炒吹抖犯腹购换技浇骄揪揪揪浇蓟缓垢阜兜创巢北鞍����┄ěЕΖΕゥいぃ#"ⅱⅰ 牋牊煙灍煚牋 ⅱ¥ゥΗè┆����氨渤吹抖贩父构夯技浇究坷亮旅媚呐牌魄瞧拍寐晾烤郊汗阜兜闯脖隘���┄Дぃⅰ牊灊湜櫂棖晹拺悘帊寢増噮剛�}{ywusqomkigeca_^\ZYWUSRPNLJIGEC@><97520-+)&$"
|
||||||
|
|
||||||
|
!"$%&()+,./012346789:;<==>>????????????>>>>>>??????????@@@@@AAAABBBBBCCCCCCCCCCCBBBBBBBBBBBAAA@@@????>>>>===<<<;;:::998887665433210/..-,+***))((('''&&%%%$$$$################$$$$$$%%%%%%&&&&&'''''(((((()))))))))))****++,--./01234456789:;<=>?@ABCCDEFGHIIIJJKLLMMMNNNOOPPQQRRSSTUUVVWXXYYZZZ[\\]]]^__``aaabbcccdddeefffggghhhhiiijjjkkkkllllllmmmmmnnnnoopppqqrrrsstttuuuvvvwwwwxxxxxyyyyyyyzzzzzzzz{{{{{{{{{{{{|||||||||||||}}}}}}}}}}}}}}~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€亖亖亖亖亖亗倐倐倐倐儍儍儍儍儎剟剟剟剠厖厖厖唵唵唵唶噰噰噰垐垐垐墘墘墘墛妸妸妺媼媼媽寣寣實崓崓帋帋帋弿弿弿悙悙悜憫憫憭拻拻摀摀摀敂敂敃晻晻晼枛枛棗棗棗槝槝槞櫃櫃櫄殮殮洓洓洓湝湝湝潩潩潩潩灋灋灋灍煙煙煙牋牋牋牋 、ⅱⅱⅱⅱⅱⅱⅲ#########いいいいいいいいいいいいいいいいいいいいいいいいいゥゥゥゥゥゥゥゥウΖΖΖΖΖΕゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥイいいいいいいいい#########ⅱⅱⅱⅱⅱⅱⅱⅰ �牋牋牋牋牊煙煙煙灋灋灋灊潩潩潩湝湝湝湝湜洓洓洓殮殮殮殭櫃櫃櫃櫃櫂槝槝槝槝棗棗棗棗枛枛枛枛枙晻晻晻晹敂敂敂敂摀摀摀摀摀拻拻拻拻拻拺憫憫憫憫憫憫憪悙悙悙悙悙悙弿弿弿弿弿弿弿弾帋帋帋帋帋帋帋帋崓崓崓崓崓崓崓崓寣寣寣寣寣寣寣寣寢媼媼媼媼媼媼媼妸妸妸妸妸妸妷墘墘墘墘増垐垐垐垐垐垏噰噰噰噰噰噯唵唵唵唵唵唵厖厖厖厖厖厖厖厖厖剟剟剟剟剟剟剟剟剟剟剟儍儎剟剟儍儍儍儍儍儍儍儍儍儍儍儍儍儍儍儍倐倐倐倐倐倐倐倐倐倐倐倐倐亖亖亖亖亖亖亖亖亖亖亖亖亖亖€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~}}}}}}}}}}}}}|||||||||||||||||||||||||{{{{{{{{{{{{{{{{{{{{{{{{{zzzzzzzz{z{{{{{{{{{{zzz{{{{{{{{{{{{{{{{{{{{{{{{{zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzz{{{{{{{{{{{{{{{{||||||||}}}}}}}}~~~~~~~~~~~€€€€€€€€亖亖亗倐倐倐儍儍儍剟剟剟剟剟剟剟剟剟厖厖厖厗唵唵噰噰噰噲垐垐垐墘墘墛妸妸妸妺媼媼媼媼媽寣寣寣寣寣寣崓崓崓崓崓崓崓崓崓崓帋帋帋帋帋帋帋帋帋帋帋帋帋帋弿弿弿弿弿弿弿弿弿弿弿弿彁悙悙悙悙悙憫憫憫憫憫憫憫拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敁摀摀摀摀摀摀搾拻拻拻拻拻拻憫憫憫憫憫憪悙悙悙悙悘弿弿弿弾帋帋帊崓崓崓崓崕帋帋帋帋帋帍弿弿弿弿悙悙悙弿弿弿弿弿弿弿弿弿弿弿弿弿彁弿弿帋帋崓崓寣寢媼媼媼媼妸妸妸妸媼媼媽寣寣崓崓帋帋弿弿彁悙悜憫憫憫憫憫憭拻挀摀敂敂晻晼枛枟棗棗槝棗棖枙晹敁拻憪弿弿弾帋帊崓寣媼妸妺媽實崓帋帋弿弿彁悙憫憭拻挀摀摀摀摀摀摀摀拻拺憫悙弾帊崒寢媻妷増垐垐垐垐垐垐垐墘墘妸妺媽寣寣實崓崓帋帋帋帍弿弿弿彁悙悜憫拻摀摂敃晻晼枛枟棗棗槝槞櫃櫃殮殯洓湝湞潩潩潩潪潩潪灋潩灋潩潩潨湝湝洓洓洑洓洓洔湝湝潩潪灋灋灋灍煙煙煙煚牋牋牋牎 � ⅱ#ぅウΖЁī┅��������������������鞍鞍鞍鞍鞍鞍鞍氨北北北北北北北北北北北北北北北北卑鞍鞍鞍鞍���������������������������┅┄èěЁΖΖΕゥゥイいい##ⅱⅱ 牋牋煙煘灋灊潩潩潩潩潩灋灍煚牎、ⅲ¥ゥΖЖī�����氨膊炒吹抖犯腹购夯患技浇浇浇郊蓟缓垢阜兜荡巢脖鞍����┅ěЕΖΕゥいぃ##ⅱⅰ �牋煙煘煙牋牎、ⅲぅウЖī�����辈炒吹刀贩父构夯患冀揪坷懒谅妹哪呐牌拍寐晾烤郊缓垢兜闯脖卑���┄Еイ"�煘潧殭槜枖搾憪弾寢妷垎厓個~}{ywusqomkigeca_]\ZXWUSQPNLJHFDB@>;97420-+)&$"
|
||||||
|
|
||||||
|
"#$&'(*+,./012456789:;;<==>>>>>>>>>>>>>>>>>>>???????@@@@@AAAAABBBBCCCCCCDDDDCCCCCCCCCCCCCBBBAAA@@@????>>>===<<<;;:::998877654432100/.-,,+***))((('''&&&%%%$$$$$$$$$$######$$$$$$%%%%%%&&&&&''''''(((((()))))))))******+++,-./011234567899:;<=>?@ABCDDEFGHHIJJKKLLMMMNNOOOPQQRRSSTTUVVWWXXYYZZ[[\\]]^^__``aaabbcccddeeefffggghhhhiiijjjkkkkllllllmmmmmnnnnoopppqqrrrsstttuuuvvvwwwwxxxxxxyyyyyyzzzzzzz{{{{{{{{{{{{|||||||||||||}}}}}}}}}}}}}}}~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€亖亖亖亖亖倐倐倐倐倐儍儍儍儍剟剟剟剟厖厖厖厖唵唵唵唶噰噰噰垐垐垐墘墘墘妸妸妸媼媼媼寣寣寣崓崓崓帋帋帋弿弿彁悙悙悜憫憫拻拻拻摀摀摂敂敂敃晻晻枛枛枛棗棗棙槝槝槞櫃櫃殮殮殮洓洓洓湝湝湝潩潩潩潪灋灋灋煙煙煙煚牋牋牋牋 、ⅱⅱⅱⅱⅱⅱⅲ#########¥いいいいいいいいいいいいいいいいいいいいいいいぅゥゥゥゥゥゥゥゥΖΖΖΖΖΖΖゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥイいいいいいいいいぃ########"ⅱⅱⅱⅱⅱⅱⅰ 牋牋牋牋煙煙煙煘灋灋灋灊潩潩潩湝湝湝湝湜洓洓洓殮殮殮殭櫃櫃櫃櫃櫂槝槝槝槝棗棗棗棗棖枛枛枛枛晻晻晻晻敂敂敂敂敂摀摀摀摀摀拻拻拻拻拻拻憫憫憫憫憫憪悙悙悙悙悙悙悙悙弿弿弿弿弿弿弿帋帋帋帋帋帋帋帋帊崓崓崓崓崓崓崓寣寣寣寣寣寣寣寣寢媼媼媼媼媼媼媼妸妸妸妸妸妸妷墘墘墘墘増垐垐垐垐垐噰噰噰噰噰噰唵唵唵唵唵唵唵唵唵厖厖厖厖厖厖厖厖剟剟剟剟剟剟剟剟剟剟剟剟剟剟剝儍儍儍儍儍儍儍儍儍儍儍儍儍儍儍倐倐倐倐倐倐倐倐倐倐倐倐亖亖亖亖亖亖亖亖亖亖亖亖亖亖亖€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~}}}}}}}}}}}}}}|||||||}|||||||||||||||{{{{{{{{{{{{{{{{{{{{{{{{{zzzzzzz{{{{{{{{{{{{{{z{{{{{{{{{{{{{{{{{{{{{{{{{{zzzzzz{{zzzzzzzzzzzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzz{{{{{{{{{{{{{{{{{{{{{{{{||||||||||}}}}}}}}~~~~~~~~~€€€€€€€€亖亖亖倐倐倐們儍儍儎剟剟剟剟剟剟剟厖厖厖厖厗唵唵噰噰噰噲垐垐垐墘墘墘妸妸妸妺媼媼媼媼媼寣寣寣寣寣寣崓崓崓崓崓崓崓崓崓崓崕帋帋帋帋帋帋帋帋帋帋帋帋帋帋弿弿弿弿弿弿弿弿弿弿弿彁悙悙悙悙悜憫憫憫憫憫憫憫拻拻拻拻拻挀摀摀搾拻挀摀摀摀摀摀摀摀摀搾拻拻拻拻拻拻拻拻摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂摀摀摀摀摀摀摀搾拻拻拻拻拻拺憫憫憫憫憫悙悙悙悙悙弿弿弿弾帋帋帋帋帋帊崕帋帋帋帋帋帋弿弿弿弿弿悙悙悙悙悙悙弿悙悙悙弿弿弿弿弿弿弿弿弿弾帋帊崓寣寣媼媼媼媼媼妸妺媼媼媼媽寣寣崓崕帋帋弿弿弿彁悙憫憫憫憫憫憫拻拻摀摂敂晻晻枛枛枛棗棗棖枙晻敂搾拺憪弿帋帋帋崓崒寣媼妸妺媽寣崓帋帍弿弿悙悙憫拻拻挀摀敂敂敂敁摀摀拻拺憪悙弿帋崒寢媼妷墘垐垐垐垑墘墘墘墘墛妸媼寣寣實崓崕帋帋帋帋弿弿弿弿悙悜憫憫拻摀敂敃晻枛枛枟棗棗槝槞櫃櫃殮殯洓洔湝潩潩潩潩潩潩潩潩潩潩潩湝湝湝洓洓洓洓洓湝湝潩潩潪灋灍煙煙煙煙煚牋牋 、ⅲ¥ぅウΖЁè┅���������������������鞍鞍鞍鞍鞍鞍氨北北北北北北北北北北北北北北卑鞍鞍鞍鞍隘����������������������������┅┄èЁЁΖΖゥゥゥいいい##ⅱⅱ 牋牊煙煘灋潩潩潩湝潩潩灋灍煚牎、ⅲ¥ぅウЁī┆����氨辈吵吹刀贩父构汉换患技技技技缓汗父范档闯膊卑隘����┄ěЕΕゥゥいぃ##ⅱⅰ 牋牋煙煘煙牋牎、ⅲぅウЁī�����氨渤创档斗犯腹购夯技浇究坷懒谅旅妹哪妹铝揽窘蓟汗阜兜闯脖隘���┄Еイ"�灊湜殭槚晹搾憦帊寢増噯剝�~|zxvtrpnljhfdca_]\ZXWUSQONLJHFDB@=;97420-+)'$"
|
||||||
|
|
||||||
|
!"$%&()*+-./023456789::;<<===>>>>>>>>>>>>>>>>>??????@@@@AAAABBBBBCCCDDDDDDDDDDDDDDDDDCCCCCCCBBAA@@@@????>>>===<<;;::999887655432210/..-,++***))((('''&&&%%%%$$$$$$$$$$$$$$$$$$%%%%%%%&&&'''''''((((((()))))))*******++++,--./01234456789:;<<=>?@ABCDEEFGHHIIJKKLLMMNNNOOPPQQRRSSTUUVWWXXYYZZ[[\\]]^^^__`aaabbbccdddeeeffgggghhhhiiijjjjkkklllllmmmmmnnnnoooppqqqrrssstttuuuvvvwwwwxxxxxxyyyyyyzzzzzzz{{{{{{{{{{{{||||||||||||}}}}}}}}}}}}}}}}~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€亖亖亖亖亖亗倐倐倐倐們儍儍儍儎剟剟剟剠厖厖厖唵唵唵唶噰噰噰垐垐垐垑墘墘墛妸妸妺媼媼媽寣寣實崓崓崕帋帋弿弿弿悙悙悙憫憫憭拻拻挀摀摀敂敂敂晻晻晼枛枛枟棗棗槝槝槝櫃櫃櫄殮殮殯洓洓湝湝湝潩潩潩潪灋灋灋煙煙煙煙牋牋牋牋牎 ⅱⅱⅱⅱⅱⅱⅱ##########¥いいいいいいいいぃ#¥いいいいいいいいいいぅゥゥゥゥゥゥゥゥゥウΖΖΖΖΖΖゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥいいいいいいいいぃ########"ⅱⅱⅱⅱⅱⅱ 牋牋牋牋煙煙煙煙灋灋灋灋潩潩潩潨湝湝湝湝洓洓洓洑殮殮殮殭櫃櫃櫃櫃櫂槝槝槝槝棗棗棗棗棖枛枛枛枛晻晻晻晻敂敂敂敂敂摀摀摀摀摀拻拻拻拻拻拻拺憫憫憫憫憪悙悙悙悙悙悙悙悙悘弿弿弿弿弿弿弾帋帋帋帋帋帋帋帋崓崓崓崓崓崓崓崓寣寣寣寣寣寣寣寣寢媼媼媼媼媼媼媼妸妸妸妸妸妷墘墘墘墘墘垐垐垐垐垐垏噰噰噰噰噰唵唵唵唵唵唵唵唵唵厖厖厖厖厖厖厖厖剟剟剟剟剟剟剟剟剟剟剟剟剟剟剟剟儍儍儍儍儍儍儍儍儍儍儍儍儍儍儌倐倐倐倐倐倐倐倐倐倐倐倐倐亖亖亖亖亖亖亖亖亖亖亖亖亐€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~}}}}}}}}}}}}}}|||||}}||||||||||||||||{{{{{{{{{{{{{{{{{{{{{{{{zzzz{zz{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{zzzz{{{z{{zzz{zzzzzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzyyzzzzzzzzzzzzzyyyyyyyzzyyzzzzzzzzzzzzzzzzz{{{{{{{{{{{{{{{{{{||||||||||||||||}}}}}}}}~~~~~~~~~€€€€€€€€€€亖亖亖亖倐倐倐儍儍儍儍剟剟剟剟剟剟厖厖厖厖厖唵唵唶噰噰噲垐垐垐墘墘墘妸妸妸妸媼媼媼媼媼寣寣寣寣寣寣崓崓崓崓崓崓崓崓崓崓崓帋帋帋帋帋帋帋帋帋帋帋帋帋帋帍弿弿弿弿弿弿弿弿弿弿彁悙悙悙悙悜憫憫憫憫憫憫憫拻拻拻拻挀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敁摀摀摀摀摀摀摀拻拻拻拻拻拺憫憫憫憫憫憫悙悙悙悙弿弿弿弿帋帋帋帋帋帋帋帋帋帋帋帍弿弿弿弿弿彁悙悙悙悙悙悙悙悙悙悙悙弿弿弿弿弿弿弿弿弿帋帋崓崒寣寢媼媼媼媼媼媼媼媼媽寣寣寣崓崕帋帋帍弿弿弿悙悜憫憫憫憫憫憭拻拻摀敂敃晻晻枛枛枛枛枙晻敂敁搾憫悙弾帋帋帊崒寣寣媼妸媼寣寣崓崕帍弿悙悙悜憭挀搾摀摂敂敂敂敂摀摀拻拺憪悙弿弾崓寣媼媻墘墘墘墘墘墘墘墘妸妸妺媽實崓崓崕帋帋帋帍弾弿弿悙悙悙憫憫憭挀摂敂晻晼枛枛枟棗棗槝槞櫃櫃殮殮洓洓湝湞潨湞潩潩潩潩潩湞潨潩湝湜洓洓洓洓洓洓湝湞潩潩灋煙煙煙煙煚牋牋牋 、ⅱⅱⅰ ⅱⅲ¥ぅウΖЁèī┆���������������������鞍鞍鞍鞍鞍鞍鞍北北北北北北北北北鞍鞍鞍鞍鞍鞍鞍隘�����������������������������┅┅èěЁЕΖΖゥゥゥいいぃ##ⅱⅱ 牋牊煙灋灋潩潩潨湝湞潩潪灋煙牋 ⅱ¥ぅウΗè┆����鞍辈渤炒档斗犯腹构汉夯换换换换汉垢阜兜荡吵脖卑�����┄ЁΖΕゥゥいぃ#"ⅱ 牋牊煙煘煙牋牎、ⅲぅウΗī┆����氨膊吵吹刀贩父腹汉换技浇究坷懒亮侣侣铝晾烤郊缓汗范荡巢卑����ěЕイⅰ牊灊湚櫂棖晹搼悘帊媻増唴剛�}|zxvtrpnljhfdb`_][ZXVTSQOMKJHFDA?=;97420-+)'%"
|
||||||
|
|
||||||
|
"#$%'()*,-./1234567899:;;<<=======>>>>>>>>>>>>????@@@@AAAABBBBCCCCDDDDEEEEEEEDDDDDDDDDDDDDCCBBBAA@@@?????>>>==<<;;::99887665433210//.-,,++***))(((('''&&&&%%%%%%%$$$$%%%%%%%%%%&&&&&&&''''''(((((((()))))))******++++,,,-.//01234567789:;<=>?@AABCDEEFGHHIIJKKLMMMNNOOPPQQRRSSTTUVVWXXYYZZ[[\\]]]^^__``aaabbcccdddeeeffgggghhhhiiijjjjkkkkllllmmmmnnnnnoooppqqqrrsssttuuuuvvvwwwwxxxxxxyyyyyzzzzzzzz{{{{{{{{{{{||||||||||||}}}}}}}}}}}}}}}}}}~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€亖亖亖亖亖亗倐倐倐倐儍儍儍儍儎剟剟剟剠厖厖厖唵唵唵唶噰噰噰垐垐垐墘墘墘墛妸妸妺媼媼媽寣寣實崓崓帋帋帋弿弿弿悙悙悜憫憫憭拻拻摀摀摀敂敂敃晻晻晼枛枛棗棗棗槝槝槞櫃櫃櫄殮殮洓洓洓湝湝湝潩潩潩潪灋灋灋煙煙煙煚牋牋牋牋 ⅱⅱⅱⅱⅱⅱⅱⅲ#########¥いいぃ#いいぃ####いいいいいいいいいゥゥゥゥゥゥゥゥゥゥゥΖΖΖΖΖΖゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥいいいいいいいいい########"ⅱⅱⅱⅱⅱⅱ �牋牋牋牋煙煙煙煙煘灋灋灋潩潩潩潨湝湝湝湝洓洓洓洑殮殮殮殮櫃櫃櫃櫃櫃槝槝槝槝槜棗棗棗棗枛枛枛枛晻晻晻晻晹敂敂敂敂敂摀摀摀摀摀拻拻拻拻拻拻憫憫憫憫憫悙悙悙悙悙悙悙悙悙悘弿弿弿弿弿弿弿弿帋帋帋帋帋帋帋崓崓崓崓崓崓崓崓崓寣寣寣寣寣寣寣寣媼媼媼媼媼媼媼妸妸妸妸妸妷墘墘墘墘墘垐垐垐垐垐垐噰噰噰噰噰唵唵唵唵唵唵唵唵唵唵厖厖厖厖厖厖厖厔剟剟剟剟剟剟剟剟剟剟剟剟剟剟剟剟剟剝儍儍儍儍儍儍儍儍儍儍儍倐倐倐倐倐倐倐倐倐倐倐倐倐倎亖亖亖亖亖亖亖亖亖亖亖亐€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~}}}}}}}}}}}}}|||}}}}}}|||||||||||||||{{{{{{{{{{{{{{{{{{{{{{{{{zz{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{z{{{{zzzzzzzzzzzzzzzzyyyyyyzzzzzzzzzzzyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzyyzzzzzzzzzzzzzzzzzzzzz{{{{{{{{{{{||||||||||||||||||||||||}}}}}}}}}~~~~~~~€€€€€€€€€€亖亖亖亖倐倐倐倐儍儍儍剟剟剟剟剟剟剠厖厖厖厖厗唵唵唶噰噲垐垐垐墘墘墘妸妸妸妸妺媼媼媼媼寣寣寣寣寣寣崓崓崓崓崓崓崓崓崓崓崓崕帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋弿弿弿弿弿弿弿弿弿彁悙悙悙悙悜憫憫憫憫憫憫憫拻拻拻拻摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀敂敂敂摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂摀摀摀摀摀摀摀摀拻拻拻拻拻憫憫憫憫憫憫憪悙悙悙悘弿弿弿弾帋帋帋帋帋帋帋帋帋弿弿弿弿弿弿弿悙悙悙悙悙悙悙悙悙悙悙悙悙悘弿悙悘弿弿弿弿帋帋帊崓崒寣寢媼媼媼媼媼媽寣寣寣寣實崓崓帋帋帍弿弿弿悙悙悙悙憫憫憫憫憭拻摀摂敂敃晻晻晻枛枛晻晹敁摀拻憪悘弾帋帋崓崒寣寢媼媻媼媽寣崓崕帍彁悙悜憫憭挀摀摀摂敂敂敂敂摀摀拻拺憪悙弿弾帊崒寢媻妸墘墘墘妸妸妸妸妸媼媼寣崓崓帋帋帍弿弿弿弿弿悙悙悙悜憫憭拻挀摂敃晻晼枛枛棗棗棗槝槝櫃櫃櫄殮殯洓洓湝湝湝湝湝湝湝湝湝湝湝湝洓洓洓洓洓洓湝湝湞潩灋灍煙煙牋牋牋牋牋 ⅱⅱⅱⅱⅱⅱⅱⅱⅱⅱⅰ 、ⅱⅲ¥ぅゥΖЁЖī┅�����������������������鞍鞍鞍鞍鞍鞍氨北北北北北鞍鞍鞍鞍鞍鞍鞍隘�������������������������������┅┄èěЁЕΖΕゥゥイいいぃ#"ⅱⅱ �牋牊煙灋灊潩潩湝湝湝潩潩灋煙牋 ⅱ#いウΗЖ┅�����北膊炒吹刀贩犯腹构汉汉汉汉汉构父范兜闯巢北隘�����┄ЁΖゥゥゥいぃ#"ⅱ 牋牋煙煙煙煙牋牎、ⅲいウΗè┆�����北渤创刀斗犯父构汉换技浇揪靠览懒亮晾靠窘蓟汉垢范荡潮隘���┅ěΕぃⅰ牉潨洑櫂棖晸拺悘崒媻垏唴儌€~}{yxvtrpnljhfdb`_][YXVTRQOMKIGECA?=;96420.+)'%#!
|
||||||
|
|
||||||
|
|
||||||
|
!"#%&'()+,-./1234567889::;;<<<<=========>>>>>>????@@@AAABBBBCCCCCDDDDEEEEEEEEEEEEEEEEEEEDDDCCCBBAAA@@@@???>>===<<;;::99877654432110/.--,,++***))((((''''&&&&&%%%%%%%%%%%%%%%&&&&&&&&'''''((((((((())))))))*****+++++,,,-../01234456789::;<=>?@ABCCDEFFGHHIJJKKLMMNNOOPPQQRRSSTTUUVWWXYYZZ[[\\\]]^^___``aabbbcccdddeefffgggghhhhiiijjjjkkkkllllmmmmnnnnooopppqqqrrsssttuuuvvvvwwwwxxxxxxyyyyyzzzzzzzz{{{{{{{{{{|||||||||||||}}}}}}}}}}}}}}}}}}~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€亖亖亖亖亖亗倐倐倐倐儍儍儍儍儎剟剟剟剠厖厖厖唵唵唵唶噰噰噰垐垐垐墘墘墘妸妸妸妺媼媼媽寣寣崓崓崓帋帋帋弿弿彁悙悙悜憫憫憭拻拻摀摀摀敂敂敃晻晻枛枛枛棗棗棗槝槝槞櫃櫃櫄殮殮洓洓洓湝湝湞潩潩潩灋灋灋灍煙煙煙煚牋牋牋牎 ⅱⅱⅱⅱⅱⅱⅱ###########いぃ########いいいいいいいいいゥゥゥゥゥゥゥゥゥゥゥウΖΖΖΖΖΖゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥいいいいいいいいいぃ#######"ⅱⅱⅱⅱⅱⅰ 牋牋牋牋牊煙煙煙煙灋灋灋灋潩潩潩潨湝湝湝湜洓洓洓洑殮殮殮殮殭櫃櫃櫃櫃櫂槝槝槝槝棗棗棗棗棖枛枛枛枙晻晻晻晻敂敂敂敂敂敁摀摀摀摀搾拻拻拻拻拻拺憫憫憫憫憫悙悙悙悙悙悙悙悙悙弿弿弿弿弿弿弿弿弿弾帋帋帋帋帋帋帋崓崓崓崓崓崓崓崓寣寣寣寣寣寣寣寣媼媼媼媼媼媼媼妸妸妸妸妸妷墘墘墘墘墘垐垐垐垐垐垐噰噰噰噰噰唵唵唵唵唵唵唵唵唵唴厖厖厖厖厖厖厖厖剟剟剟剟剟剟剟剟剟剟剟剟剟剟剟剟剟剟剝儍儍儍儍儍儍儍儍儍儍儌倐倐倐倐倐倐倐倐倐倐倐倐倎亖亖亖亖亖亖亖亖亖亖亐€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}}}}}}}}}}}}}~~~~~}}}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€亐€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~~}}}}}}}}}}}}}}}}}}}}}}||||||||||||||||||{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{{{{{{{{{{{|||||||||||||||||}}}}}}}}}}}}}}}}}}~~~~~~~€€€€€€€亖亖亖亖亖倐倐倐倐們儍儍儍剟剟剟剠厖厖厖厖厖厖厖厗唵唵唶噰噰垐垐垑墘墘墘妸妸妸妺媼媼媼媼寣寣寣寣寣寣寣崓崓崓崓崓崓崓崓崓崓崓崓帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋弿弿弿弿弿弿弿弿弿悙悙悙悙悙悜憫憫憫憫憫憭拻拻拻拻拻摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀敂敂敂敂敂敂敂敂敂敂摂敂敂敂敂摀摀摀摀摀摀摀摀摀摀敂敂敂敂敂敂敂敂摀敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂摀摀摀摀摀摀摀摀搾拻拻拻拻憫憫憫憫憫憫憪悙悙悙悘弿弿弿弿帋帋帋帋帋帋帋帍弿弿弿弿弿悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙弿弿弿弿弿帋帋帊崓崒寣寣媼媼媼媼寣寣寣寣寣寣崓崓崓帋帋帍弿弿弿悙悙悙悙悙憫憫憫憭拻摀摀敂敂晻晻晻晻晻敂敁搾拺憫悘弾帋帊崓寣寣媼媼媼妺媼寣實崓帋弿悙憫憫憭拻摀摀摂敂敂敂敂敂摀摀拻憫悙弿弾帋帊崒寢媼妸妸妸妸妸妸妸媼媼媼寣崓崕帋帍弿弿弿弿弿弿悙悙悙憫憫憭拻挀摂敂晻晼枛枛棗棗棗棙槝槞櫃櫃殮殮殯洓洓洓湝洓洓洔湝湝湝湝湝湜洓洓洓洓湝湝湝湝湞潩潪灍煙牋牋牋牋牋牎 、ⅱⅱⅱⅱⅱⅱⅱⅱⅱⅱⅱⅱⅱⅱⅱⅱⅱ#いゥウΗЁèī┅�����������������������鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍�����������������������������������┅┅┄èěЁЕΖΕゥゥイいいぃ##ⅱⅱ 牋牊煙灋灋潩潩湝湝湝湝潩潪灋煙牋、ⅲ¥ぅウЁè┆�����北渤炒吹刀斗犯父构构构构构垢阜范兜闯巢北鞍�����┄ěΖゥゥイいい##ⅱⅰ 牋牋牊煙煙煙煚牋 ⅱ#ぅウЖī┆�����北渤炒刀斗贩父腹购夯患技浇揪靠坷揽烤浇蓟汉垢范荡巢卑����ěЕイ"�灊湜殬棖晹搾憪帊寠増噮剛�~|{ywutrpnljhfdb`^][YWVTRPOMKIGECA?=;86420.+)'%#!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
"#$%&'(*+,-.012345677899::;;;<<<<=======>>>>>>???@@AAABBBBCCCCDDDDEEEEEEEFFFFFFFFFEEFEEEEDDDCCBBBAAA@@@???>>==<<<;::99887655432210//.--,,++***)))((((('''&&&&&&&&&&&&&&&&&&&&&&&''''''(((((((())))))))))****++++++,,,--./001234567789:;<=>>?@ABCCDEFFGHHIJJKKLMMNNOOPPQRRSSTTUUVVWXXYZZ[[[\\]]^^___``aaabbbcccddeeefffgggghhhhiiijjjjkkkklllmmmmnnnnoooopppqqqrrsssttuuuvvvvwwwwxxxxxxyyyyyzzzzzzzz{{{{{{{{||||||||||||||}}}}}}}}}}}}}}}}}}}~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€亖亖亖亖亖亗倐倐倐倐儍儍儍儍剟剟剟剟厖厖厖厖唵唵唵唶噰噰噲垐垐垐墘墘墘妸妸妸媼媼媼寣寣寣崓崓崓帋帋帋弿弿彁悙悙悜憫憫拻拻拻摀摀摂敂敂敃晻晻枛枛枛棗棗棙槝槝槞櫃櫃殮殮殮洓洓洔湝湝湞潩潩潩灋灋灋灍煙煙煙牋牋牋牋牎 ⅱⅱⅱⅱⅱⅱⅱⅲ###################¥いいいいいいいゥゥゥゥゥゥゥゥゥゥゥゥゥウΖΖΖΖΖΕゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥいいいいいいいいいい#######"ⅱⅱⅱⅱⅱⅰ �牋牋牋牋煙煙煙煙煙灋灋灋灋潩潩潩潨湝湝湝湝洓洓洓洓殮殮殮殮殮櫃櫃櫃櫃櫂槝槝槝槝槜棗棗棗棗枛枛枛枛晻晻晻晻晹敂敂敂敂敂摀摀摀摀摀搾拻拻拻拻拻憫憫憫憫憫憫悙悙悙悙悙悙悙悙悙悘弿弿弿弿弿弿弿弿帋帋帋帋帋帋帋帋崓崓崓崓崓崓崓崓崒寣寣寣寣寣寣寣媼媼媼媼媼媼媼妸妸妸妸妸墘墘墘墘墘墘垐垐垐垐垐垏噰噰噰噰噰噰噯唵唵唵唵唵唵唵厖厖厖厖厖厖厖厖厖剟剟剟剟剟剟剟剟剟剟剟剟剟剟剟剟剟剟剝儍儍儍儍儍儍儍儍儍儍儍倐倐倐倐倐倐倐倐倐倐倐倐亖亖亖亖亖亖亖亖亖亖亐€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}}}}}}}}}}}}~}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~~}}}}}}}}}}}}}}}}}}}}}}}}}||||||||||||||{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{{{{{{{{{{{{{{{{|||||||||}}}}}}}}}}}}}}}}}}}}}}}~~~~~~~~~€€€€€€€€€€€€亖亖亖亖亗倐倐倐們儍儍儍儍儎剟剟剠厖厖厖厖厖厖厖唵唵唵唵噰噰噲垐垐垑墘墘墛妸妸妺媼媼媼媼媽寣寣寣寣寣寣崓崓崓崓崓崓崓崓崓崓崓崓崓帋帋帋帋帋帋帋帋帋帋帋帋帋帋帍弿弿弿弿弿弿弿弿悙悙悙悙悙悜憫憫憫憫憫憭拻拻拻拻挀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敁敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敁摀摀摀摀摀摀摀摀搾拻拻拻拻憫憫憫憫憫憫悙悙悙悙弿弿弿弿弿弾帍弿帋帍弿弿弿弿弿弿彁悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙弿弿弿弿弿弾帋帋帊崓寣寣寢媼媼寣寣寣崓崒崒實崓崓崓帋帋帋帍弿弿弿弿弿悙悙悙憫憫憫拻拻摀摀敂敂敂晻晹敂敁搾拺憫憪悘弾帋崓崒寣寢媼媼媼媼媼媽實崓帋弿悜憫憭拻拻摀摀敂敂晻晻晹敂敁摀拻憫悙弿弾帋帋崓寣寢媼妸妸妺媼媼媼媼媽寣實崕帋帍弿弿悙悙弿弿彁悙悜憫憫拻拻挀摀摂敂晻枛枛枛枟棗棗棙槝槝櫃櫃殮殮殮殮洓洓洓洓洓洓洓洓洓洓洓洓洓洓洓洓湝湝湝湝潩潩灋灍煚牋牋牋牋牎 、ⅱⅲ##"ⅱⅱⅱⅱⅱⅱⅱⅱⅱⅱⅱⅱⅲ#いゥウΖЁЖè┅┆�����������������������鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍�����������������������������������┅┅┄èěЁЁΖΖゥゥゥイいいぃ##ⅱⅱ 牋牊煙灋灊潩潨湝湝湝湝潩潩灋煙牋 ⅱ¥ぅウΗè┅�����氨辈吵创档抖贩贩父父父父父阜范兜荡吵脖卑隘�����┄ЁΖゥゥイいぃ##ⅱⅰ�牋牊煙煙煙煙牋牋 ⅱⅲいウЁè┆�����鞍辈炒吹抖斗贩犯腹购夯换患浇骄揪揪浇蓟缓构阜兜闯潮隘���┄ěΖイ!牊灉洑櫂棖晹搾悘帊媻墖唴儌€}|zxwusqomkigfdb`^\[YWUTRPNMKIGECA?=;86420.,*(&#"
|
||||||
|
|
||||||
|
!"#$%&')*+,-.0123456678899::;;;<<<<======>>>>>???@@AABBBCCCCCDDDEEEEEFFFFFFFFFFFFFFFFFFFEEDDDCCCBBAAAA@@??>>>==<<;;::98876654322100/..--,,++***))))((((('''''&&&&&&&&''''''''''''''(((((()))))))))))))****+++++,,,,,--../01234556789::;<=>?@@ABCDDEFGGHHIJJKKLMMNOOPPQQRSSTTUUVVWWXYYZ[[[\\]]^^___```aaabbcccdddeeefffgggghhhhiiijjjjkkkklllmmmmnnnnoooppppqqrrrsssttuuuvvvvwwwwxxxxxxyyyyyzzzzzzz{{{{{{{{{||||||||||||}}}}}}}}}}}}}}}}}}}}}~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€亖亖亖亖亖亖倐倐倐倐們儍儍儍儎剟剟剟剠厖厖厖唵唵唵唶噰噰噰垐垐垐垑墘墘墛妸妸妺媼媼媽寣寣實崓崓崕帋帋弿弿弿悙悙悜憫憫憭拻拻挀摀摀敂敂敂晻晻晼枛枛枟棗棗槝槝槞櫃櫃櫄殮殮殯洓洓湝湝湝潩潩潩灋灋灋灍煙煙煙煚牋牋牋牎 ⅱⅱⅱⅱⅱⅱⅱⅲ###################いいいいいいいぅゥゥゥゥゥゥゥゥゥゥゥゥゥウΖΖΖΖゥウΕゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥイいいいいいいいいいいぃ######"ⅱⅱⅱⅱⅱⅰ 牋牋牋牋牊煙煙煙煙煘灋灋灋灊潩潩潩潨湝湝湝湜洓洓洓洓殮殮殮殮殮櫃櫃櫃櫃櫂槝槝槝槝棗棗棗棗棖枛枛枛枛晻晻晻晻晹敂敂敂敂敂摀摀摀摀摀摀搾拻拻拻拺憫憫憫憫憫憫憫悙悙悙悙悙悙悙悙悙悘弿弿弿弿弿弿弿弾帋帋帋帋帋帋帋帋崓崓崓崓崓崓崓崓崒寣寣寣寣寣寣寣媼媼媼媼媼媼媻妸妸妸妸妷墘墘墘墘墘増垐垐垐垐垐噰噰噰噰噰噰噰噯唵唵唵唵唵唵唵厖厖厖厖厖厖厖厖厖厔剟剟剟剟剟剟剟剟剟剟剟剟剟剟剟剟剟儍儍儍儍儍儍儍儍儍儍儍儍倐倐倐倐倐倐倐倐倐倐倐亖亖亖亖亖亖亖亖亖亖亐€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}}}}}}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~}}}}}}}}}}}}}}}}}}}}}}}}}}}}}||||||||||||{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{||||||||||}}}}}}}}}}}}}}~~~~~~~~~~~~~~~~~€€€€€€€€€€€€€€亖亖亖亖倐倐倐倐儍儍儍儍儍儎剟剟剠厖厖厖厗唵唵唵唵唵唵唵唶噰噰垐垐垐墘墘墘墛妸妸媼媼媼媼媼寣寣寣寣寣寣實崓崓崓崓崓崓崓崓崓崓崓崓帋帋帋帋帋帋帋帋帋帋帋帋帋帍弿弿弿弿弿弿弿弿彁悙悙悙悙悙悙憫憫憫憫憫憭拻拻拻拻摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敃晻晻晹敂敂敂敂敂敂敂敂敁摀摀摀摀摀摀摀摀拻拻拻拻拻憫憫憫憫憫憪悙悙悙悘弿弿弿弿弿弿弿弿弿弿弿弿弿弿彁悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙弿弿弿弿弿弿弾帋帋崓崒寣寣媼寣寣實崓崓崓崓崓崓崓崓崕帋帋帋帍弿弿弿弿彁悙悙悙悜憫憭拻拻挀摂敂敂敂敂敁摀拻憫悙悙弿弾帊崒寣寢媼媼妸媼媼媼媽寣崓帋弿悜憭拻拻挀摀摂敂晻晻晻晻敂敁摀拻憫悙悘弾帋帋帊崒寣媼媼媼媼媼媼媼寣寣實崓帋弿弿彁悙悙悙悙弿彁悙憫憫憭拻挀摀摀敂敂晻枛枛枛枟棗棗棗槝槝櫃櫃櫃殮殮殮殮殮殯洓殮殮洓洓洓洓洓洓洓洓洓洓湝湝湝潩潩潪灋煙牋 ⅱⅲ##########"ⅱⅱⅱⅱⅱⅲ#いゥウΖЁЁèī┅┆�����������������������鞍鞍鞍鞍鞍鞍鞍鞍鞍隘�����������������������������������┅┅┄èèЁЁΖΖΕゥゥイいいい##"ⅱⅱ �牋煙煙灋灊潩潨湝湝湝湝湞潩灋煙牋 ⅱ#いウΗЖī�����鞍北渤炒创档抖斗贩贩贩贩贩范抖荡闯巢北鞍������èЕΕゥゥいいぃ#"ⅱⅰ�牋煙煙煙煙煙煚牎 、ⅲ¥ウЁèī������氨渤创档刀抖斗贩腹购汉夯患技冀郊蓟缓汗垢范荡吵脖隘���┄ЁΕぃⅰ牊潨洑櫁枙敁拺悘崒媺垏厔儊€~}{zxvusqomkigecb`^\ZYWUTRPNLJIGECA?=:86420.,*(&$"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
!"#$%'()*+,-/01234456778899::;;;<<<<=====>>>>>??@@AABBCCCCDDDDEEEFFFFFFFGGGGGGGGGGGGGGFFEEEDDDCCBBBAAA@@???>>==<<;::998776543321100/..--,+++****))))))(((('''''''''''''''''''''((((((())))))))))********+++++,,,,---../001234567789:;<==>?@ABCCDEEFGGHIIJJKLLMMNOPPQQRRSTTUUVVWWXXYZZ[[\\]]^^___```aaabbbcccdddeeffffggghhhhhiiijjjjkkkklllmmmnnnnoooopppqqqrrrsstttuuuvvvvwwwwxxxxxxyyyyyzzzzzzz{{{{{{{{||||||||||||}}}}}}}}}}}}}}}}}}}}}}~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€亖亖亖亖亖亗倐倐倐倐們儍儍儍儎剟剟剟剠厖厖厖唵唵唵唶噰噰噰垐垐垐墘墘墘墛妸妸妺媼媼媽寣寣實崓崓帋帋帋弿弿弿悙悙悜憫憫憭拻拻摀摀摀敂敂敃晻晻晼枛枛棗棗棗槝槝槞櫃櫃櫄殮殮洓洓洓湝湝湝潩潩潩灋灋灋灍煙煙煙煚牋牋牋牎 、ⅱⅱⅱⅱⅱⅱⅱⅲ##################¥いいいいいいぅゥゥゥゥゥゥゥゥゥゥゥゥゥゥΖΖΖゥゥゥゥΕゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥいいいいいいいいいいぃ#######ⅱⅱⅱⅱⅱ 牋牋牋牋牊煙煙煙煙煘灋灋灋灊潩潩潩潨湝湝湝湜洓洓洓洓殮殮殮殮殮櫃櫃櫃櫃櫃槝槝槝槝槜棗棗棗棗枛枛枛枛晻晻晻晻晻敂敂敂敂敂敁摀摀摀摀摀摀拻拻拻拻憫憫憫憫憫憫憫憫憪悙悙悙悙悙悙悙悙悙弿弿弿弿弿弿弿弾帋帋帋帋帋帋帋帋帊崓崓崓崓崓崓崓崒寣寣寣寣寣寣寣寢媼媼媼媼媼妸妸妸妸妸妷墘墘墘墘墘垐垐垐垐垐垏噰噰噰噰噰噰噰噯唵唵唵唵唵唵唵唴厖厖厖厖厖厖厖厖厖厖厖厖剟剟剟剟剟剟剟剟剟剟剟剟剟剟剟儍儍儍儍儍儍儍儍儍儍儍儍儌倐倐倐倐倐倐倐倐倎亖亖亖亖亖亖亖亖亖亐亖亖亐€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}}}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|||||||||||||{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{||{{||||||{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{zzzzzzzzzzzzzzzzzzzz{{{{{{{z{{{zzzz{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{|||||||||||}}}}}}}}}}}~~~~~~~~~~~~~~~~~~~~€€€€€€€€€€€€€亖亖亖亖倐倐倐倐儍儍儍儍儎剟剟剟剟厖厖厖厗唵唵唵唵唵唵唵唶噰噰噰垐垐垐墘墘墘墘妸妸妺媼媼媼媼寣寣寣寣寣寣實崓崓崓崓崓崓崓崓崓崓崓崓帋帋帋帋帋帋帋帋帋帋帋帋弿帍弿弿弿弿弿弿弿弿悙悙悙悙悙悙悙憫憫憫憫憫拻拻拻挀摀摀摀摀摀摀摀摀摀摀摀摀敂敂敂敂敂敂敂敂敁摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂晻敂敃晻晻晻晻晻晻晻敂敂敂敂敂敂敂敂敁摀摀摀摀摀摀摀摀拻拻拻拻拻憫憫憫憫憫憪悙悙悙悙弿弿弿弿弿弿弿弿弿弿弿弿彁悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悘弿弿弿弿弿弿帋帋帋崓崓寣寣寣寣實崓崓崓崓崓崓崓崓帋帋帋帋帋帋弿弿弿弿弿彁悙悙悙悜憫憭拻拻摀摀摀摀摀摀拻憫悙悘弿帋帊崒寣媼媼媼妸妺妸媼媼寣實崕帍彁憫拻拻摀摀敂敃晻晻晻晻晻敂摀搾拺憪悙弿弿弾帋崓崒寣寣媼媽寣寣寣寣寣崓崓帋弿弿悙悙悙悙悙悙悙悙憫憫憭拻拻摀摀摂敂敃晼枛枛枛枟棗棗棗槝槝槞櫃櫃櫃櫄殮殮殮殮殮殮殮殮殮殮殮殮殮殯洓洓洔湝湞潩潩潪灋煙牋 、ⅱ#############ⅱⅱⅱⅱⅱ#¥いゥウΖЁЁèī┅┆������������������������鞍隘��������������������������������������┅┅┅┅┅èèěЁЁΖΖΕゥゥイいいい###ⅱⅱ 牋牊煙灋灊潩潨湝湝湝湝湝潩潪灋煙牋、ⅲ¥ぅウΗè┆�����氨辈渤吵创档刀抖抖抖抖抖抖档荡闯膊北隘������┄ЁΖゥイいいぃ#"ⅱⅰ 牋牊煙煙煙煙煙牋牎 ⅱ#ぅウЁè┅������北渤炒吹档刀抖贩父腹构购夯换换缓汗垢阜范荡吵脖隘���┄ěΖイ"牊灊湚櫂棖晹搾憦帊寠墖唴剛�~}{yxvtrpomkigeca_^\ZXWUSRPNLJHFDBA?=:86420.,*(&$"!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
"#$%&'()*+,-/01233456677889:::;;;<<<=====>>>??@@AABBBCCCDDDDDEEFFFFFGGGGGGGGGGGGGGGGGGFFFEEDDDCCBBBAAA@@??>>>=<<;;::98776554322100//.--,,,++*****)))))))((((''''((((((((((((((())))))))***************++++,,,,----.../01234456789::;<=>??@ABCCDEEFGGHIIJKKLLMNNOPPQRRSSTTUUVWWXXYYZ[[\\]]^^^__```aaabbbcccdddeeeffffggghhhhhiiijjjjkkkklllmmmnnnnoooopppqqqrrrsstttuuuvvvvwwwwwxxxxxyyyyyzzzzzzz{{{{{{{||||||||||||}}}}}}}}}}}}}}}}}}}}}}}~~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€亖亖亖亖亖亗倐倐倐倐儍儍儍儍儎剟剟剟厖厖厖厖唵唵唵唶噰噰噰垐垐垐墘墘墘妸妸妸媼媼媼寣寣寣崓崓崓帋帋帋弿弿彁悙悙悜憫憫拻拻拻摀摀摀敂敂敃晻晻枛枛枛棗棗棗槝槝槞櫃櫃櫄殮殮洓洓洓湝湝湝潩潩潩灋灋灋煙煙煙煙牋牋牋牋 ⅱⅱⅱⅱⅱⅱⅱⅱⅲ##################いいいいいいいゥゥゥゥゥゥゥゥゥゥゥゥゥゥウΖΖゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥウゥゥΕゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥいいいいいいいいいいぃ#######ⅱⅱⅱⅱⅱ �牋牋牋牋牊煙煙煙煙煘灋灋灋灊潩潩潩潨湝湝湝湝洓洓洓洓洑殮殮殮殮殭櫃櫃櫃櫃櫂槝槝槝槝棗棗棗棗枛枛枛枛枙晻晻晻晻晹敂敂敂敂敂敁摀摀摀摀摀拻拻拻拻拻憫憫憫憫憫憫憫憫悙悙悙悙悙悙悙悙悙悙悙悘弿弿弿弿弿弿帋帋帋帋帋帋帋帋帊崓崓崓崓崓崓崓崓寣寣寣寣寣寣寣寢媼媼媼媼媼妸妸妸妸妸妸墘墘墘墘墘増垐垐垐垐垏噰噰噰噰噰噰噰噯唵唵唵唵唵唵唵唴厖厖厖厖厖厖厖厖厖厖厖厖剟剟剟剟剟剟剟剟剟剟剟剟剟剟剟剟儍儍儍儍儍儍儍儍儍儍儍儌倐倐倐倐倐倐倐倎亖亖亖亖亖亖亖亖€€亖亖亖亖€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~}}}}}}}}}}}}}}}}}}}}}}}}}}}||||||||||||||{{{{{{{{{{{{{|||||{{{{{{{{{{||||||||||||||||{{{{{{{{{{{{{{{{{{{{{{{{||{{{{{{{{{{{{{{{{{{{{zzzzzzz{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{||||||||||}}}}}}}}}}}}}~~~~~~~~~~~~~~~~~€€€€€€€€€€€€€€€亖亖亖亗倐倐倐倐們儍儍儍剟剟剟剟剟厖厖厖厗唵唵唵唵唵唶噰噰噰噰噲垐垐垐墘墘墘墘墘妸妸妺媼媼媼寣寣寣寣寣寣寣崓崓崓崓崓崓崓崓崓崓崓崓帋帋帋帋帋帋帋帋帋帋帋帍弿弿弿弿弿弿弿弿弿彁悙悙悙悙悙悙悙憫憫憫憭拻拻拻拻挀摀摀摀摀摀摀摀摀摀摀摀敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敁摀摀摀摀摀摀摀摀摀摀摀摂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂晻晻晻晻晻晻晻晻晻晻晻晻晹敂敂敂敂敂敂敂敂敁摀摀摀摀摀摀摀搾拻拻拻拻拺憫憫憫憫憪悙悙悙悙悙弿弿弿弿弿弿弿弿弿弿彁悙悙悙悙悙悙悙悜憫憫憫憫憫憫憫憪悙悙悙悙悙悙悘弿弿弿弿弿弿帋帋帋帊崓崓寣實崓崓崓崓崓崓崓崓崓崕帋帋帋帋帋帋帍弿弿弿弿弿弿彁悙悙悜憫憫拻拻摀摀摀摀搾拺憫悙弿帋帋崓寣寢媼媼妸妸妸妸媼媼寣實崕帍悙憭拻摀摀敂敂晻枛枛枛枛晻晹敁搾拻憪悙弿弿弿帋帊崓寣寣寣寣寣寣寣寣崓崓帋帍弿彁悙悙憫憫憫憫憪悜憫憭拻拻拻摀摀摂敂晻晼枛枛枛枛枟棗棗棗槝槝槞櫃櫃櫃櫃殮殭殮殮殮殮殮殮殮殮殮殮殮洓洓洔湝潩潩潩灋灍煚牋 ⅱⅱⅱⅱⅲ#¥いいいぃ##¥#####"ⅱⅱⅲ#¥いゥウΖΗЁЖè┅┅��������������������������������������������������������┅┅┅┅┅┅┅┅┅┅┅┄èèěЁЁΖΖΕゥゥイいいいぃ##"ⅱⅱ 牋牊煙灋灊潩潨湝湝湝湝湝湞潩灋煙牋 ⅱ#ぅウΗЖ┅�����鞍北膊渤炒创档档档档档档档创闯巢脖鞍������┅ěЕΕゥいいい##ⅱⅱⅰ �牋煙煙煙煙煙煚牋 ⅱ#いウΗЖī┆�����氨辈吵创创档刀抖贩犯父腹购汉汉汗垢阜范档闯膊卑����┄ЕΕぃⅰ牊灉洑櫂棖敁拺悘帉媻垏唲儌€~|{ywutrpnljhgeca_]\ZXVUSQPNLJHFDB@><;97520.,+)'%#!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
!"#$%&'()*+,./001234556778899:::;;;<<====>>>??@@AABBBCCDDDDEEEEFFFGGGGGHHHHHHHHHHHHHHGGGFFEEDDDCCCBBAAA@@??>>==<<;::998766543321100/..--,,,++++*******))))(((((((()))))))))))))))********************++++,,,,----..//011234567789:;<<=>?@AABCDDEFFGGHIIJKLLMMNOOPQQRRSTTUUVVWXXYYZZ[\\]]^^^__```aaabbbcccdddeeeffffggghhhhhiiiijjjjkkkklllmmmnnnnooopppqqqrrrsssttuuuuvvvvwwwwwxxxxxyyyyyzzzzzz{{{{{{{||||||||||||}}}}}}}}}}}}}}}}}}}}}}}~~~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€亖亖亖亖亖亗倐倐倐倐儍儍儍儍儎剟剟剟厖厖厖厖唵唵唵唶噰噰噲垐垐垐墘墘墘妸妸妸媼媼媼寣寣寣崓崓崓帋帋帍弿弿彁悙悙悜憫憫拻拻拻摀摀摂敂敂敃晻晻枛枛枛棗棗棙槝槝槞櫃櫃殮殮殮洓洓洔湝湝湞潩潩潪灋灋灋煙煙煙煙牋牋牋牋 ⅱⅱⅱⅱⅱⅱⅱⅱ##################¥いいいいいいぅゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥΖΖゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥΖΖΖΖΖΕゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥいいいいいいいいいいぃ#######ⅱⅱⅱⅱⅱ 牋牋牋牋牊煙煙煙煙煙灋灋灋灊潩潩潩潩湝湝湝湝湜洓洓洓洓殮殮殮殮殮櫃櫃櫃櫃櫂槝槝槝槝棗棗棗棗棖枛枛枛枛晻晻晻晻晻敂敂敂敂敂敂摀摀摀摀摀搾拻拻拻拻拻拺憫憫憫憫憫憫憫憫憫憪悙悙悙悙悙悙悙悙弿弿弿弿弿弿弿弾帋帋帋帋帋帋帋帋崓崓崓崓崓崓崓崓寣寣寣寣寣寣寣寢媼媼媼媼媼妸妸妸妸妸妷墘墘墘墘墘垐垐垐垐垐噰噰噰噰噰噰噰噰噯唵唵唵唵唵唵唵唴厖厖厖厖厖厖厖厖厖厖厖厖厖厖剠厔剟剟剟剟剟剟剟剟剟剟剟剟剝儍儍儍儍儍儍儍儍儍儍儌倐倐倐倐倐倐倎亖亖亖亖亖亖亖亖亖亖亖亖亖€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~}}}}}}}}}}}}}}}}}}}}}}}}}}|||||||||||||||||||{{{{||||||||||||||||||||||||||||||||||||||{{{{{{{{{{{{{{{{{{{{||||||{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{||||||||||||||{{|||{||||||||||||||||||||||||||||}}}}}}}}}}}}}}}~~~~~~~~~~€€€€€€€€€亖亖亖亖亖亖亖亗倐倐倐倐們儍儍儍剟剟剟剟剠厖厖厖厗唵唵唵唶噰噰噰噰噰噰垐垐垐垐墘墘墘墘墘墛妸妸妺媼媼媼寣寣寣寣寣寣崓崓崓崓崓崓崓崓崓崓崓崓崕帋帋帋帋帋帋帋帋弿弿弿弿弿弿弿弿弿弿弿弿弿悙悙悙悙悙悙悙憫憫憫憭拻拻拻拻挀摀摀摀摀摀摀摀摀摀摂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂晻晻晻晻晻晻晻晻晻晻晻晻晻晻晻敂敂敂敂敂敂敂敂敂摀摀摀摀摀摀摀摀搾拻拻拻拻拺憫憫憫憫憪悙悙悙悙悙悘弿弿弿弿弿弿弿弿悙悙悙悙悙悙憫憫憫憫憫憫憫憫憫憫憫憫悙悙悙悙悙悘弿弿弿弿弿弿帋帋帋帋崓崓崓崓崓崓崓崓崓崓崓崓崓帋帋帋帋帋帋帋帋帋帋帋帋帍弿弿弿弿悙悙悜憫憫拻拻拻拻拻憫憪悘弾帊崓崒寣媼媼媻妸妸妸妸媼媼寣實崕帍悙憭挀摀敂敃晻枛枛棗棗枛枙晹敁摀拻憪悙弿弿弿弾帊崓崓寣寣實崓崓崓崓崓崕帋帍弿悙悜憫憫憫憫憫憫憫憫憭拻拻拻摀摀敂敂晻晻枛枛枛枛枛棗棗棗棗槝槝槞櫃櫃櫃櫃櫃櫃櫃櫃櫃櫄殭櫃櫃殮殮殮殯洓洔湞潩潩灋灋煙牋牎 ⅱⅱⅱⅱⅲ#¥いいいいいいいいいい########¥いぅゥΖΖΗЁèī┅┆����������������������������������������������������┅┅┅┅┅┅┅┅┅┅┄èèèèèЁЁЁΖΖΖゥゥイいいいい###"ⅱⅰ �牋牊煙灋灊潩湝湝湝湜湝湝湞潩灋煙牋 ⅱ#いゥΗЖī������氨北膊吵炒创创创创创创闯吵膊脖卑隘������┄ěЕゥイいい###ⅱⅰ �牋煙煙煙煙煙煙牋 、ⅲ¥ゥΖЁè┅������氨膊吵炒创吹档抖斗贩父父腹构父贩抖档创巢脖鞍����èЕイぃⅰ牉潨洐槜枙敁拺弾崒媺垎厔儊€}|zxwusqpnljhfdca_][ZXVTSQOMLJHFDB@>=;97531/-+)'%#"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
!"#$%&'()*+--./012344566778999::;;;<<===>>>??@@AABBCCCDDDEEEEFFFGGGHHHHHHHHIIIIHHHHHHGGGFFEEEDDCCCBBAA@@??>>===<;;::98776554322100//..--,,,,++++++++****)))))))))))))))**********++++++++++++++++++++++,,,----...///01233456789::;<==>?@ABBCDDEFFGHHIJJKLLMNNOPPQRRSSTTUVVWWXYYZZ[[\\]]^^__```aaabbbcccddddeeffffgggghhhhhiiiijjjjkkkklllmmmnnnoooopppqqqrrrsstttuuuvvvvvwwwwwxxxxxyyyyyzzzzzz{{{{{{{|||||||||||}}}}}}}}}}}}}}}}}}}}}}}}~~~~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€亖亖亖亖亖亗倐倐倐倐儍儍儍儍剟剟剟剟厖厖厖厗唵唵唵噰噰噰噲垐垐垐墘墘墘妸妸妸媼媼媼寣寣寣崓崓崓帋帋帍弿弿彁悙悙憫憫憫拻拻挀摀摀摂敂敂晻晻晻枛枛枛棗棗棙槝槝櫃櫃櫃殮殮殮洓洓洔湝湝湞潩潩潪灋灋灋煙煙煙煚牋牋牋牎 、ⅱⅱⅱⅱⅱⅱⅱⅱⅲ#################いいいいいいぅゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥウΖΖΖΖΖゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥいいいいいいいいいいい#######ⅱⅱⅱⅱⅱ 牋牋牋牋牊煙煙煙煙煘灋灋灋灊潩潩潩潩湝湝湝湝湝洓洓洓洓洑殮殮殮殮櫃櫃櫃櫃櫃槝槝槝槝槜棗棗棗棗枛枛枛枛枙晻晻晻晻晻敂敂敂敂敂敁摀摀摀摀摀拻拻拻拻拻拻拻憫憫憫憫憫憫憫憫憫憫悙悙悙悙悙悙悙悙弿弿弿弿弿弿弿弿弾帋帋帋帋帋帋帋帊崓崓崓崓崓崓崓崒寣寣寣寣寣寣寢媼媼媼媼媻妸妸妸妸妸妷墘墘墘墘墘垐垐垐垐垐噰噰噰噰噰噰噰噰唵唵唵唵唵唵唵唵厖厖厖厖厖厖厖厖厖厖厖厖厖厖厖厖厖厖厔剟剟剟剟剟剟剟剟剟剟剟儍儍儍儍儍儍儍儍儍儍倐倐倐倐倐倐倐倎亖亖亖亖亖亖亖亖亖亖亖亖€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}}}}}}}}}}}}}}}}||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||{|||||||||||||||||||{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{|||||||||||||||||||||||||||||||||||||||||||||||||}}}}}}}}}}}}}}}~~~~~~~~~~~€€€€€€€€€€€亖亖亖亖亖亖亖亗倐倐倐倐儍儍儍儍儎剟剟剟剟厖厖厖厖唵唵唵唵噰噰噰噰噰噲垐垐垐垐墘墘墘墘墘墘妸妸妸妸媼媼媼寣寣寣寣寣寣崓崒崓崓崓崓崓崓崓崓崓崓帋帋帋帋帋帋帋帋弿弿弿弿弿弿弿弿弿弿弿弿弿悙悙悙悙悙悙悙憫憫憫憫憭拻拻拻拻摀摀摀摀摀摀摀摂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敃晻敃晻晻晻晻晻晻晻晻晻晻晻晻晻晻晻晻晻敂敂敂敂敂敂敂敂敁摀摀摀摀摀摀摀摀摀拻拻拻拻拺憫憫憫憫憪悙悙悙悙悙悙悙悘弿弿弿悙悙悙悙悙悙悜憫憫憫憫憫憫憫憫憫憫憫憫憫憫悙悙悙悙悙弿弿弿弿弿弿弾帋帋帋帋帋崓崓崓崓崓崓帋帋帊崓崓崕帋帋帋帋帋帋帋帋帋帋帋帋帋帋弿弿弿弿彁悙悙悜憫拻拻拻憫憪悘弾帊崓寣寣媼媻妸妸妸妸妸妺媼媽實崓帋彁憫拻摀敂晻晻枛棗棗棗棗棖晻晹敁搾拺憪悙弿弿弿帋崓崓崓崓崓崓崓崓崓崓帋帋弿弿悙悜憫憫憫憭拻拻拻憫憭拻拻拻挀摀敂敂敃晻晻枛枛枛枛枛棗棗枟棗槝槝槝槝槞櫃櫃櫃櫃櫃櫃櫃櫃櫃櫃櫃櫃殮殮殯洓湝潩潩灋灋煙牋牎 ⅱⅱ####いいいいいいいいいいいい########いいゥゥΖΖΗЁèè┅┅┆������������������������������������������������┅┅┅┅┅┅┅┄èèèèèèèèěЁЁЁЕΖΖゥゥゥいいいいい###"ⅱⅱ 牋牊煙煘灋潩潨湝湝洓洓湝湝潩潪灋煙牎、ⅲ¥ぅウΗЖ┅������氨北膊渤吵吵吵吵吵吵吵膊脖北鞍�������┄ěЕΕイいぃ###"ⅱ 牋牋煙煙煙煙煙煙牋 ⅱ#いゥΖЁèī������氨膊渤吵炒创档档抖抖贩贩贩贩抖兜荡闯膊北隘����èЕΕぃⅰ牊灊湚櫂棖晸拺悘帊媻墖唴儌�~}{zxvtsqomljhfdb`_][YXVTRQOMKJHFDB@?=;97531/-+)(&$"!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
!"#$%&'()*,,-./012334556778899::;;<<<==>>>??@AAABBCCCDDEEEEFFFGGHHHHIIIIIIIIIIIIIIIHHGGGFFFEEDDCCBBBAA@@??>>==<<;;:988766544321100//..---,,,,+++++++++********************++++++++,,,,,,+++++++++++++,,,---....//0011234556789:;;<=>?@@ABBCDDEFGGHHIJKKLMMNOOPQQRSSTTUUVWWXXYZZ[[\\]]^^__```aaabbbccccdddeeefffgggghhhhhiiiijjjjkkkkllllmmmnnnooopppqqqrrrssstttuuuvvvvvwwwwwxxxxxyyyyyzzzzzz{{{{{{|||||||||||}}}}}}}}}}}}}}}}}}}}}}}}}~~~~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€亖亖亖亖亖倐倐倐倐倐儍儍儍儍剟剟剟剟厖厖厖厗唵唵唵噰噰噰噲垐垐垑墘墘墘妸妸妸媼媼媼寣寣寣崓崓崕帋帋帍弿弿彁悙悙憫憫憫拻拻挀摀摀摂敂敂晻晻晻枛枛枟棗棗棙槝槝櫃櫃櫃殮殮殯洓洓洔湝湝湞潩潩潪灋灋灍煙煙煙牋牋牋牋 、ⅱⅱⅱⅱⅱⅱⅱⅱⅲ################¥いいいいいいゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥウΖΖΖΖΖΖΕゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥゥいいいいいいいいいい#######ⅱⅱⅱⅱⅱⅰ 牋牋牋牋牋煙煙煙煙煙灋灋灋灋潩潩潩潩潨湝湝湝湝洓洓洓洓洑殮殮殮殮殭櫃櫃櫃櫃櫂槝槝槝槝棗棗棗棗棖枛枛枛枛晻晻晻晻晻晹敂敂敂敂敂敁摀摀摀摀搾拻拻拻拻拻拻拻拺憫憫憫憫憫憫憫憫憫悙悙悙悙悙悙悙悙悘弿弿弿弿弿弿弿弿帋帋帋帋帋帋帋帋崓崓崓崓崓崓崓崒寣寣寣寣寣寣媼媼媼媼媼媻妸妸妸妸妸墘墘墘墘墘増垐垐垐垐垐垏噰噰噰噰噰噰噰唵唵唵唵唵唵唵唵厖厖厖厖厖厖厖厖厖厖厖厖厖厖厖厖厖厖厖厖剟剟剟剟剟剟剟剟剟剟剝儍儍儍儍儍儍儍儍倐倐倐倐倐倐倐倐亖亖亖亖亖亖亖亖亖亖亖亖亖€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}}}}}}}}}}}}|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||{{{{{{{{{{{{{{{{{{{{{{{{{||||||||||||||||||||||||||||||||||||||||}}}}|||||}}}}}}}}}}}}}}}}}}}}}}}~~~~~~~~~~~~~~~€€€€€€€€€€€€€€亖亖亖亖亖亖亖亗倐倐倐倐們儍儍儍儍儎剟剟剟剠厖厖厖厖唵唵唵唵唶噰噰噰噰垐垐垐垐垐墘墘墘墘墘妸妸妸妸妸妺媼媼媼寣寣寣寣寣崓崓崒實崓崓崓崓崓崓崓崓帋帋帋帋帋帋帋帋弿弿弿弿弿弿弿弿弿弿弿弿弿弿悙悙悙悙悙悙憫憫憫憫憭拻拻拻拻摀摀摀摀摀摀摀摂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敃晻晻晻晻晻晻晻晻晻晻晻晻晻晻晻晻晻晻晻晻晻晹敂敂敂敂敂敂敂敂摀摂摀摀摀摀摀摀摀摀拻拻拻拻憫憫憫憫憫憪悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憪悙悙悙悙弿弿弿弿弿弿弿弿帋帋帋帋帋帋帋帋帋帋帋帋帊崓崕帋帋帋帋帋崓崓崓帋帋帋帋帋帋帋帋帋帋帍弿彁悙悙悜憫憫憫憫悙弿帋帊寣寣媼媻妸妸妸妸妸妸妸媼媽實崕帍彁憭挀摂敃晻枛棗棗槝槝槜棖枙晹敁搾憫憪悙弿弿弿帋帋帊崓崓崓崓帊崓崓帋帋帍弿彁悙憫憫憫憭拻拻拻拻拻拻拻拻拻挀摀敂敂晻晻晼枛枛枛枛枛枛枛枛棗棗棙槝槝槝槝槝槝槝槝槝櫃櫃槝槞櫃櫃櫄殮殯洓湝潩潪灋煙煙牋 、ⅱⅲ###いいいゥゥゥイいいぅゥイいい#######いいぅゥゥΖΖЁЖèī┅┅����������������������������������������������┅┅┅┅┄èèèèèèèèèěЁЁЁЁЁЕΖΖΖゥゥゥいいいいぃ####ⅱⅱⅰ �牋牊煙灋灋潩潨湝湝洓洓湝湝湞潩灋煙牋 ⅱ#いゥΗЖī������鞍氨北膊膊膊膊膊膊膊膊北卑鞍�������┅èЁΖゥいい###ⅱⅱⅰ 牋牋煙煙煘灍煙煙牋 、ⅲ¥ぅΖΗЖī┆������北辈膊渤吵创创档档抖抖抖兜档创吵膊北鞍����┅ěЕイ#ⅰ牉潨洑槜枙敁拺悗崒媺垏厔儌€~|{ywvtrpomkigedb`^][YWVTRQOMKJHFDB@?=;975320.,*(&%#!
!"#$%&'()*+,-./012234456778899::;;<<===>>??@AABBBCCDDDEEEFFFGGHHHIIIIIIIIIIJIIIIIIIHHHGGFFEEEDDCCBBAAA@@?>>>==<<;::98776554322110///..----,,,,,,,,,+++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,---....//00012334567889:;<==>?@AABCCDEEFGGHHIJKLLMNOOPPQRRSTTUUVVWXXYYZ[[\\]]^^__```aaabbbcccddddeeefffgggghhhhhiiiijjjjjkkkklllmmmmnnnooopppqqqrrrssstttuuuvvvvvwwwwwxxxxxyyyyyzzzzz{{{{{{|||||||||||}}}}}}}}}}}}}}}}}}}}}}}}}}~~~~~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€Line truncated
|
||||||
|
!"#%&')*,-/0123456789:;;<=>?@@ABCDDCCCCBBAAA@@????>>===<;;:998776555443321100/..--,,+**)))(('''&&&&&''((())**+++,,,--.....///////000/////////////////.............//01122334566789:;<=?@BCEFGHJKLMNOPPQSTUVWXYZ[\]^__`abcdefghiijkkkklllllllmmmmmmmmnnnmmmmmmmllllllkkkkkkjjjjjjjjjjjjjjkkkkkkkkkklmmnoppqrstuvwxxyz{|}~€們剠唶垑妺實帍悜挀摂晼棙槞殮洔湞潪灍煙牋牋牋牊煙煙煙灋灋灋灋灋灋灋灋灋灋灋灋灋灋灋灋灋灋灋灋灋灋灊潩潩潩潨湝湜洓殮殮殭櫃櫂槝槜棗枛枛晻晻敂敁摀搾拻憫悙弿弾帊崓寣媼媻妷墘垐垏噰噯唵厖厔剟儍儍儍倐倐倎亖亖€€€€~~~~~~~}}}}}}|||||||||{|||||||||||||}}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€亖亖亖亖亖亖亖亖亖倐倐倐倐倐們儍儍儍儍儎剟剟剟厖厖厖厗唵唵唶噰噰噲垐垐墘墘墛妸妺媼媼寣寣崓崓帋帋弿弿悙悙憫憫拻挀摀摂敂晻晻枛枛棗棙槝槞櫃殮殮洓洓湝湞潩潪灋灍煙牋牋 ⅱⅱ#¥いぅゥウΖΗЁЖèī┅┆������������鞍鞍氨北北膊膊渤吵吵创创创档档档抖抖抖斗贩贩贩贩父父父父父腹构构构构构构构构构构构构构构构构构构构构构构构构构构构构构父父父父父父父父父父贩贩贩贩贩贩贩范抖抖抖抖抖兜档档档档荡创创创创吵吵吵巢膊膊膊北北北鞍鞍鞍����������������┅┅èèЁЁЕΖΕゥイいい##ⅱⅱ �牋牊煙煙灋灋潩潩潨湝湝洓洓洑殮殮殭櫃櫃櫂槝槝槝槜棗棗棗棗枛枛枛枛枛晻晻晻晻晻晻敂敂敂敂敂敂敁摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀搾拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拺憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻憫憫憫憫憫憫憫憫悙悙悙悙悙悙悙悙悙弿弿弿弿弿弿弿弿弾帋帋帋帋帋帋帋帋帋崓崓崓崓崓崓崓崓崓寣寣寣寣寣寣寣寣寣寢媼媼媼媼媼媼媼媼媻妸妸妸妸妸妸妸妸妸妸妷墘墘墘墘墘墘墘墘墘墘墘墘墘垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐墘墘墘墘墘墘墘墘墘墘墘墘墘墘墘墘墛妸妸妸妸妸妸妸妸妸妸妸妸妸妸妺媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媽寣寣寣寣寣寣寣寣寣寣寣寣寣寣寣寣寣寣寣崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓帊帊帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帍弿弿弿弿弿弿弿弿弿彁悙悙悙悙悙悙憫憫憫憫憫憫憭拻拻拻拻拻拻摀摀摀摀摀摀摀敂敂敂敂敂敂敂敂敃晻晻晻晻晻晻晻晻晻晻晹敂敂敂敂敂敂敂敂敂敂敂敃晻晻晻晻晻晹敂敂敂敂敂敂敂敂敂摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀敂敂敂敃晻晻晼枛枛棗棗棙槝槝櫃櫃殮殯洓洔湝湞潩灋灋煙煚牋 、ⅱⅲ#いいゥゥゥウΖΖΖΖΖΖЁЁЁЖèè┅┅┅��������������������┅èěЁΖゥいぃ"ⅰ�牊煘灊潨洑櫃槜枛晹摀拺悙弾帊寢媻増垏唵厔剝倐亖€~~~}}|{{zzyyxxwvvuttssrqqpoonnmllkjiihggffedccbaa`_^^]]\\[ZZYXWWVUUTSRRQPONNMLKJIHHGFFEEDCCBBAAAA@@@??????>>>>===<<;;;::::9999888877777777777765554432110//.--,,+*))(''&&&%$$##$$$$$$$#######""!!"!!!! !!"###$$%%&&''((())*++,,,--.---,,,++++++****)))((''&&&&&&&%%&&&'(()**+,-./0112233455666667777888776665544332210//.-,+*)(('&%%%&&&'''((((())))*******++++++***)((''&%$#""!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
!"#$&')+,-/0123457899:;<=>>?@ABCCDDDDCCCBBAA@@@??>>==<<;;:998766554333221100/..--,,+**)(('''&&&&&&&&&'''((())**++,,---.......////////////////..////.......---------./0011234456788:;<>?ABDEFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdeefghijjkkllllmllmmmmmmmmmmmmmmnmmmmmmlllllkkkjjjjjjjjiiiiiiijjjjjjjjjjjjklmmnopqrstuvwwxyz{|}€們剠唶垔媼實帍悜挀摂晼棙槞殮洔湞潪灍煙牋牋牋牊煙煙煙煘灋灋灋灋灋灋灋灋灋灋灋灋灋灋灋灋灋灋灋灋灋潩潩潩潩湝湝洓洓殮殮櫃櫃槝槝槜棗枛枙晻敂敂摀摀拻拺憪悘弿帋崓寣寢媼妸妷増垐噰噰噯唵厖厔剟儍儍儍倐倐倎亖亖€€€€~~~~~}}}}}}}||||||||{{{{{{||||||||||}}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€亖亖亖亖亖亖亖亖亖倐倐倐倐倐倐儍儍儍儍儎剟剟剟剠厖厖厗唵唵唶噰噰噲垐垐墘墘墛妸妸媼媼寣寣崓崓帋帋弿弿悙悙憫憫拻拻摀摂敂敃晻枛枛棗棗槝槞櫃櫄殮洓洓湝湝潩潪灋灍煙煚牋 ⅱⅱ##いぅゥウΖΗЁЖèī┅┆�������������鞍氨北北膊膊渤吵吵创创创档档档抖抖抖斗贩贩贩贩父父父父父腹构构构构构构构构构构构构构构构构构构构构构构构构构构构构构垢父父父父父父父父父阜贩贩贩贩贩贩贩抖抖抖抖抖抖档档档档档创创创创吵吵吵吵膊膊膊北北北卑鞍鞍隘���������������┅┅èèěЁЕΖΖゥゥいい##ⅱⅱⅰ �牋牊煙煙灋灋潩潩潨湝湝洓洓洑殮殮殭櫃櫃櫂槝槝槝棗棗棗棗棗枛枛枛枛枛晻晻晻晻晻晹敂敂敂敂敂敁摀摀摀摀摀摀摀摀摀摀摀摀摀摀拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憭拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拺憫憫憫憫憫憫憫憫憪悙悙悙悙悙悙悙悘弿弿弿弿弿弿弿弿弿帋帋帋帋帋帋帋帋帊崓崓崓崓崓崓崓崓崒寣寣寣寣寣寣寣寣寣寢媼媼媼媼媼媼媼媼媼妸妸妸妸妸妸妸妸妸妸妸妷墘墘墘墘墘墘墘墘墘墘墘増垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐噰垏垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垑墘墘墘墘墘墘墘墘墘墘墘墘墘墘墘墘墛妸妸妸妸妸妸妸妸妸妸妸妸妸妸媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媽寣寣寣寣寣寣寣寣寣寣寣寣寣寣寣寣寣寣實崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崕崕帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋弿弿弿弿弿弿弿弿弿弿弿悙悙悙悙悙悙悙憫憫憫憫憫憫憭拻拻拻拻拻拻摀摀摀摀摀摀摀敂敂敂敂敂敂敂敃晻晻晻晻晻晻晻晻晻晻晻晻晻晹敂敂敂敂敂敂敂敂敂敂晹敂晹晹敂敂敂敂敂敂敂敂敂敂敂摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀敂敂敂敃晻晻晼枛枛棗棗棙槝槞櫃櫄殮洓洓湝湝潩潩灋灍煙牋牎 、ⅱ##いいゥゥゥゥΖΖΖΖΖΖЁЁЁЖèè┅┅┅��������������������┅èěЁΖゥイぃ"ⅰ�牊煘灊潨洑櫂槜枙晹搾拺悙弾崓寢妸増垏唵厖剟儌倎亐€€~}}||{{zzyxxwvvuttsrrqpponnmmlkjjihggfeddcbaa``_^^]\\[ZZYXXWVVUUTSRQQPOONMLKJIHGGFFEEDDCCBBBAAA@@@????????>>>==<<<;;;:::::999988888888888776655432110/.--,,+*)((''&&&%$$$$###$$$$#######"""!!!!!! !!"##$$$%%&&''(())**+,----.---,,,+++++++***))(('''&&&'''&&&&''(()**+,,-./1122344556677777777888776665543322110/..-,+*)(''&%%%%%&&''((((())))*********+++***)))(''&%$#"!!
|
||||||
|
|
||||||
|
"#$&')*,./012346789::;<=>?@@ABCCDDDDDDCCBBA@@??>>=<<;;;::98765543322111100//.--,,+**)(''&&&&&%%%%%%&&&&'''(())*++,,--.............///////...........------,,,,+++,-.//01223456788:;<=?ABDEFGHJKMNOPPQRSTUVWYZ[\]^_`aabcdefghiijkklllmmmmmmmmmmmmmmmmmmnnnnmmmmmlllkkkkjjjiiiiiiiiiiiiiiiiiiiiiiiijkllmnopqrstuvwxyz{|}~亗儎厗噲妺媽崕彁憭挀敃枟棙櫄洓湝潩灋煙煙牋牋牋煙煙煙煙灋灋灋灋灋灋灋灋灋灋灋灋灋灋灋灋灋灋灋灋灊潩潩潩潩潨湝洓洓殮殮櫃櫃櫂槝槝棗棖枛晻晹敂摀摀拻拺憫悙弿帋崓寣寢媼妸妷墘垐垏噰噯唵厖厔剟剝儍儍倐倐倐亖亖亐€€€~~~~~}}}}}}}||||||{{{{{{{{{{{||||||||}}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€亖亖亖亖亖亖亖亖亖倐倐倐倐倐倐儍儍儍儍儎剟剟剟剠厖厖厖唵唵唵噰噰噲垐垐墘墘墛妸妸媼媼寣寣實崓崕帋帍弿彁悙憫憫拻拻摀摀敂敃晻晼枛棗棗槝槝櫃櫄殮殯洓湝湝潩潩灋灍煙煚牋牎 ⅱⅱ##いいゥゥΖΗЁЖèī┅┆�������������鞍氨北北膊膊渤吵吵创创创档档档抖抖抖斗贩贩贩贩父父父父父腹构构构构构构构构构构构构构构构构构构构构构构构构构构构构构构垢父父父父父父父父父贩贩贩贩贩贩贩抖抖抖抖抖抖档档档档档创创创创闯吵吵吵膊膊膊脖北北卑鞍鞍隘���������������┅┅┄èěЁЁΖΖゥゥいい##"ⅱⅰ �牋牋煙煙灋灋灊潩潨湝湝洓洓洑殮殮櫃櫃櫃櫂槝槝槝棗棗棗棗棖枛枛枛枛枙晻晻晻晻晻敂敂敂敂敂敂摀摀摀摀摀摀摀摀摀摀摀摀搾拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻憭憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憪悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悜憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拺憫憫憫憫憫憫憫憫憪悙悙悙悙悙悙悙悙弿弿弿弿弿弿弿弿弿弿帋帋帋帋帋帋帋帋帊崓崓崓崓崓崓崓崓崓寣寣寣寣寣寣寣寣寣寢媼媼媼媼媼媼媼媼媼妸妸妸妸妸妸妸妸妸妸妸妷墘墘墘墘墘墘墘墘墘墘墘増垐垐垐垐垐垐垐垐垐垐垐垐垐噰噰噰噰噰噰噰噰噰噰噰噰垐垏噲噲垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐増墘墘墘墘墘墘墘墘墘墘墘墘墘墘墘墛妸妸妸妸妸妸妸妸妸妸妸妸妸妺媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媽寣寣寣寣寣寣寣寣寣寣寣寣寣寣寣寣寣寣崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崕帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帍弿弿弿弿弿弿弿弿弿弿弿彁悙悙悙悙悙悙悙憫憫憫憫憫憫憭拻拻拻拻拻拻摀摀摀摀摀摀摀敂敂敂敂敂敂敂敃晻晻晻晻晻晻晻晻晻晻晻晻晻晻晻敂敂敂敂敂敂敂敂敂晹敂敂敂敂敂敂敂敂敂敂敂敂敂敂摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀敂敂敂敃晻晻晼枛枟棗棗槝槝櫃櫃殮殮洓洔湝湞潩潪灋灍煙牋牎 ⅱⅱ##いいぅゥゥゥゥΖΖΖΖΖΗЁЁЖèè┅┅┅��������������������┅┄èЁΖΕイぃ"ⅰ�牋煙灊湜洑櫂棗枙敂搾拺悙弾崒寢妸増垏噯唴厔剝儌倎亖€€~~}}||{{zyxxwvuuttsrqqpponnmlkjjihgfeedcbbaa`__^]\\[ZZYXXWWVVUUTSRQQPONMLKKJIHGGFFFEDDCCCBBAAA@@@@@@@@@@???>>==<<<;;;;;;:::::999999999987766543211/.--,+++)(''&&&&%%$$$#####$$##""""##"""!!!!!! !""##$$$%%&&'(())**+,---..----,,+++++++**))(('''&&'''''''''((()*++,,-./01233445667777777777788776655543221100/..,++*)('&%%$$%%%&''((((()))*))***))**++++**)))('&&%$#"!!
|
||||||
|
|
||||||
|
|
||||||
|
!#$%'(*,.//12356789:;;<=>?@ABBCDDEEEEDDCCBA@@?>>=<<;::::99876543221100000//.---,,+*)(('&%%%%%%%$$$%%%%&&&'''())*+,,---............../////.........------,,,++****+,-.//0123456678:;<=?ABDEFGHJLMNOPQRSSTUVXYZ\]^_``abcddefghijkkkllmmmmmmmmmmmmmmmmmmmnnnnnnmmmlllkkkjjjiiiiiiihhhhhhhiiiiiiihihhijkllmnoqrstuvwxyz{|}~亗儎厗噳妺媽崕彁憫挀敃枛棙櫄洓湝潩灋煙煙牋牋牋牊煙煙煘灋灋灋灋灋灋灋灋灋灋灋灋灋灋灋灋灋潩灋灊潩潩潩潩潩湝湜洓洑殮殭櫃櫃櫂槝槜棗棖枙晻敂敁摀摀拻拺憪悘弾帊崒寢媼妸妸墘増垐噰噰唵唵厖剟剟儍儍儌倐倐倎亖亖亐€€€~~~~~~}}}}}}}|||||{{{{{{{{{{{{{||||||||}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€亖亖亖亖亖亖亖亖亖倐倐倐倐倐倐儍儍儍儍儎剟剟剟剠厖厖厖唵唵唵噰噰噰垐垐垑墘墘妸妸媼媼媽寣實崓崕帋帍弿彁悙悜憫憭拻摀摀敂敂晻晼枛枟棗槝槝櫃櫄殮殯洓洔湝潩潩灋灍煙煚牋牎 、ⅱ##いいゥゥΖΖЁЁèè┅┅�������������鞍鞍北北膊膊渤吵吵炒创创档档档抖抖抖斗贩贩贩贩父父父父父腹构构构构构构构构构构构构构构构构构构构构构构构构构构构构构构构父父父父父父父父父阜贩贩贩贩贩贩范抖抖抖抖抖兜档档档档荡创创创闯吵吵吵巢膊膊膊北北北鞍鞍鞍����������������┅┄èèЁЁΖΖゥゥイいぃ#"ⅱⅰ 牋牋煙煙灋灋灊潩潨湝湝洓洓洑殮殮殭櫃櫃櫂槝槝槜棗棗棗棗枛枛枛枛枛晻晻晻晻晻敂敂敂敂敂敂敁摀摀摀摀摀摀摀摀摀拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憭拻拻拻拻拺拺憫憫憫憫憫憫憫憫憫憫憫憫憪悙悙悙悙悙悙悙悘弿弿弿弿弿弿弿弿帋帋帋帋帋帋帋帋帋帊崓崓崓崓崓崓崓崓崓寣寣寣寣寣寣寣寣寣寣媼媼媼媼媼媼媼媼媼妸妸妸妸妸妸妸妸妸妸妸墘墘墘墘墘墘墘墘墘墘墘墘増垐垐垐垐垐垐垐垐垐垐垐垐垐噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噲垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐墘墘墘墘墘墘墘墘墘墘墘墘墘墘墘墛妸妸妸妸妸妸妸妸妸妸妸妸妸媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼寣寣寣寣寣寣寣寣寣寣寣寣寣寣寣寣寣寣寣實崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崕帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋弿弿弿弿弿弿弿弿弿弿弿弿弿悙悙悙悙悙悙悙悜憫憫憫憫憫憫憭拻拻拻拻拻拻摀摀摀摀摀摀摀敂敂敂敂敂敂敂敃晻晻晻晻晻晻晻晻晻晻晻晻晻晻晻晻晹敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敁摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀敂敂敂敃晻晻晼枛枟棗棙槝槞櫃櫄殮殯洓湝湝潩潩灋灋煙煚牋牎 ⅱⅱ##いいぅゥゥゥゥゥウΖΖΖΗЁЁЖèè┅┅┆��������������������┅┄èЁΖΕイぃ"ⅰ 牋煙灊湜殮櫂棖枙敂搾拺悘弾崒寢妸墘垐噰唵厖剟儍倐倎亖€~~~}||{zzyxwwvuutssrqqponnmlkjjihgfedccbaa``_^]]\[[ZYYXWWWVVUTTSRQQPONMLKJJIHHGGFFEEDDCCCBBAAAA@@AAA@@@@??>>>==<<<<<<;;;:::::::9::::988776543210/.-,++**)(''&&&%%$$##########""""""""!!!!!!! !""##$$%%&''()***+,-..../...---,++++++**))((''''&''''''''(())**+,--../1123345566777788888888877665544332110//.-,+*)('&%%$$$$$%%&''''(())))))*******++++***))(('&%$#"!!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
!"$%&(*+-./12356789:;<==>?@ABCDEEEEEEDDCCBA@??>=<<;;::99887654321100/////..--,,++*)(('&%%%$$$$$$#$$$$%%%%&&''()*++,,----....................-...----,,,,++***)))))*,-../012345678:;<=?ABDEFGIJLMNOPQRSTUVWXY[\]^_`abccdefggijjkllmmmnmmmmmmmmmmmmmmmmmnnnnnnmmmmlllkkkjjiiiiihhhggghhhhhhhhhhhhhhhijklmnopqrsuvwxyz{|}~€們剠唶垔妺實帍悜憭摂晼棗槞殯洔湞潪灍煙煚牋牋牊煙煙煙灋灋灋灋灋灋灋灋灋灋灋灋灋灋灋灋灋灊潩潩潩潩潩潨湝湝湝洓洑殮殭櫃櫃櫂槝槜棗棖枛晻晹敂摀摀拻拺憪悘弾帊崒寣媼妸妸墘増垐垏噰唵唵厖厔剟剝儍儌倐倐倐亖亖亖€€€~~~~~}}}}}}||||||{{{{{{zzz{{{{{{|||||||}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€亖亖亖亖亖亖亖亖亖倐倐倐倐倐倐儍儍儍儍儍剟剟剟剠厖厖厖唵唵唵噰噰噰垐垐垑墘墘妸妸妺媼媽寣實崓崕帋帍弿彁悙悜憫憭拻挀摀敂敂晻晻枛枟棗棙槝櫃櫃殮殯洓洔湝湞潩灋灋煙煚牋牎 、ⅱⅲ#いいゥゥΖΖЁЁèè┅┅�������������鞍鞍北北膊膊渤吵吵炒创创档档档刀抖抖抖贩贩贩贩父父父父父腹构构构构构构构构构构构构构构构构构构构构构构构构构构构构构构构构父父父父父父父父父贩贩贩贩贩贩贩抖抖抖抖抖抖档档档档档创创创创吵吵吵巢膊膊膊北北北鞍鞍鞍����������������┅┅èèЁЁЕΖΕゥイいぃ##ⅱⅱ 牋牋煙煙煘灋灊潩潩湝湝洓洓洑殮殮櫃櫃櫃槝槝槝槜棗棗棗棖枛枛枛枛枙晻晻晻晻晹敂敂敂敂敂敁摀摀摀摀摀摀摀搾拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拺憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悘弿弿彁悙悙悙弿弿弿彁悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悜憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憪悙悙悙悙悙悙悙悙弿弿弿弿弿弿弿弾帋帋帋帋帋帋帋帋帋帋崓崓崓崓崓崓崓崓崓崒寣寣寣寣寣寣寣寣寣媼媼媼媼媼媼媼媼媼媻妸妸妸妸妸妸妸妸妸妸妷墘墘墘墘墘墘墘墘墘墘墘増垐垐垐垐垐垐垐垐垐垐垐垐垐垏噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噲噲垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐墘墘墘墘墘墘墘墘墘墘墘墘墘墘墘墛妸妸妸妸妸妸妸妸妸妸妸妸妸媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媽寣寣寣寣寣寣寣寣寣寣寣寣寣寣寣寣寣寣崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崕帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋弿弿弿弿弿弿弿弿弿弿弿弿弿弿悙悙悙悙悙悙悙悙悜憫憫憫憫憫憫拻拻拻拻拻拻拻摀摀摀摀摀摀摀敂敂敂敂敂敂敂敃晻晻晻晻晻晻晻晻晻晻晻晻晻晻晻晻晻晻敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敁摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀敂敂敂敃晻晻枛枛棗棗棙槝櫃櫃殮殮洓洔湝湞潩潩灋灋煙煚牋 ⅱⅱ#¥いいいゥゥゥゥゥゥΖΖΖΗЁЁЖèè┅┅┆��������������������┅┄èЁΖΕイぃ#ⅱ 牋煘潩湜殭櫂棖枙敁搾憫悘弾崒寢媻妷増垏噯唴厖剟儍儌倎亐€~~}||{zyxxwwvuutsrrqpoonmlkjihgfeedcbbaa`_^^]\\[ZZYYXWWVVUUTSSRQQPONMLKKJIIHHGGFEEDDDCCBBBAAAAAAAAA@@@???>>>====<<<<;;;;;;;;::::::98876543210/.-++**)((''&%%%$$####"""""#""""!!!!!!!!! !""#$$%&&'(()**+,-..///0///..--,,,+++**))((('''&'''''(((()))*++,-../01223455666777888999888777655544332210/.--,+*)('&%$$$$$$$%%&&'''(())))))******++++++**))('&%$#""!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
"#$&')+,./12346789:;<=>>?@BCDEFFFFEEEDDCBA@@>==<;;::9987765432100///....--,,,++**)('&&%$$$$$$######$$$$%%&&'())*+++,,,--...--.............-------,,,+++**)))((('()*+,./0122356789;<=?@BDEFHIJLMNOPQRSTUVWXZ[\]^_`abcdeffghijkklmmmnnnnnnmmmmmmmmmmmmmnnnnnnnmmmmlllkkjjiiihhhhgggggggggggggggggghhijklmnoqrstuvxyz{|}~€亙剠唶垑妺實帍悙憭摂晼棗槞殮洔湞潪灍煙煚牋牋煙煙煙煘灋灋灋灋灋灋灋灋灋灋灋灋灋灋灋灋灋灊潩潩潩潩潩湝湝湝湜洓殮殮櫃櫃櫃槝槝棗棗枛枙晻敂敂摀搾拻憫悙弿帋崓寣寢媼妸妷墘垐垐噰噯唵唴厖剟剟儍儍儌倐倐倐亖亖亐€€€~~~~~}}}}}||||||{{{{{{zzzzz{{{{{{|||||||}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€亖亖亖亖亖亖亖亖亖亗倐倐倐倐倐們儍儍儍儍剟剟剟剟厖厖厖唵唵唵唶噰噰垐垐垑墘墘妸妸妺媼媽寣寣崓崓帋帋弿弿悙悙憫憭拻挀摀摂敂晻晻枛枛棗棙槝槞櫃殮殮洓洔湝湞潩灋灋煙煙牋牎 、ⅱⅲ#¥いゥゥΖΖЁЁèè┅┅�������������鞍鞍北北辈膊膊吵吵炒创创吹档档刀抖抖抖贩贩贩贩父父父父父腹构构构构构构构构构构构购汉汉汉汉汗构构构构构构构构构构构构构构构垢父父父父父父父父阜贩贩贩贩贩贩范抖抖抖抖抖档档档档档创创创创闯吵吵吵膊膊膊脖北北卑鞍鞍隘���������������┅┅èèěЁЕΖΕゥゥいい##ⅱⅱ �牋牊煙煘灋灋潩潩湝湝洓洓洑殮殮櫃櫃櫃槝槝槝槜棗棗棗棖枛枛枛枛晻晻晻晻晻敂敂敂敂敂敁摀摀摀摀摀摀摀拻拻拻拻拻拻拻拻拻拻拻拻拻拻拻拺憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悜憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憪悙悙悙悙悙悙悙弿弿弿弿弿弿弿弿帋帋帋帋帋帋帋帋帋帋帊崓崓崓崓崓崓崓崓崓崒寣寣寣寣寣寣寣寣媼媼媼媼媼媼媼媼媼媼媻妸妸妸妸妸妸妸妸妸妸墘墘墘墘墘墘墘墘墘墘墘墘墘垐垐垐垐垐垐垐垐垐垐垐垐垐垐垏噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐墘墘墘墘墘墘墘墘墘墘墘墘墘墘墘妸妸妸妸妸妸妸妸妸妸妸妸妸媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媽寣寣寣寣寣寣寣寣寣寣寣寣寣寣寣寣寣寣實崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崕帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿悙悙悙悙悙悙悙悙悙悜憫憫憫憫憫憫拻拻拻拻拻拻拻摀摀摀摀摀摀摀敂敂敂敂敂敂敂敃晻晻晻晻晻晻晻晻晻晻晻晻晻晻晻晻晻晻晻敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敁摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀敂敂敂晻晻晻枛枛棗棗槝槝櫃櫄殮殯洓洔湝湞潩潪灋灍煙煚牋 ⅱⅲ##いいいぅゥゥゥゥゥウΖΖΖЁЁЖèè┅┅┆��������������������┅┄èЁΖΕイい#ⅱ 牋煘潨湜殭槝棖晻敁搾憪悘帋崓寣媼妸墘垐噰唵唴厔剟儍倐倎€€~~}|{{zyxxwwvuttsrqponnmlkjihgfedccbba``_^]]\[[ZYYXXWWVUUTTSSRQQPONMLKKJJIIHGGFFEEDDCCCBBBBBBBBBAA@@@@???>>>>====<<<<<<<;;;;;:::99876543210/.,+**)((''&&%$$$###"""""""""""!!!!!!!!! !"#$$%&''()**+,,-.//00000//..--,,,,+**))((''''''''''((())**++,--.//01223455666778889999988776655544332210/.-,+*)('&%$$###$$$$%%&&''(()))))******++++++++**)('&%$#""!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
!#$%')*,-/02345789:;<=>?@ABCDEFGGFFEEDDCBA@?>=<<;::988765543210//...---,,,,+++**)(''&%%$$$###"""""####$$%%&&'()***+++,,----.............----,,,,,,+++*)))((('''&'()*+-./012345789;<=?@BCEFHIJLMNOQRSTUVWXYZ[\]^_`bcddefghiijklmnnnnnnnnnnmmmmmmmmmmmmnnnnnnnnmmmmllkkjjiiihhhggfffffffffffffffffghijklmnopqrtuvwxz{|}~€亗剠唶垑妺實帍悙憭摂晼棙槞殮洔湞潪灋煙煚牋煙煙煙煙灋灋灋灋灋灋灋灋灋灋灋灋灋灋灋灋灋灊潩潩潩潩潩潨湝湝湝洓洓殮殮櫃櫃槝槝槜棗棖枛枙晻敂敁摀搾拺憪悙弿帋崒寣媼媻妸墘増垐垏噰唵唵厖厖剟剝儍儍倐倐倐倎亖亖€€€€€~~~~~}}}}}|||||{{{{{zzzzzzzzz{{{{{{|||||}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€亖亖亖亖亖亖亖亖亖亗倐倐倐倐倐們儍儍儍儍剟剟剟剟厖厖厖厗唵唵唶噰噰噲垐垐墘墘墛妸妺媼媼寣寣崓崓帋帋弿弿悙悙憫憫拻挀摀摂敂敃晻枛枛棗棙槝槞櫃殮殮洓洓湝湞潩潪灋煙煙牋牋 、ⅱⅲ#¥いぅゥΖΖЁЁèè┅┅�������������鞍鞍北北辈膊膊吵吵炒创创吹档档刀抖抖抖贩贩贩贩父父父父父腹构构构构构构构构构构汉汉汉汉汉汉汉汉汗构构构构构构构构构构构构构构父父父父父父父父父贩贩贩贩贩贩贩抖抖抖抖抖兜档档档档荡创创创闯吵吵吵巢膊膊脖北北北鞍鞍隘���������������┅┅┄èěЁЁΖΖゥゥいい##"ⅱⅰ �牋牊煙煙灋灋潩潩湝湝湜洓洑殮殮殭櫃櫃槝槝槝槜棗棗棗棖枛枛枛枙晻晻晻晻晹敂敂敂敂敂摀摀摀摀摀摀摀拻拻拻拻拻拻拻拻拻拻拻拻拻拻憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憫憪悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙弿弿弿彁悙悙悙悙悙悙悙悙悙悙悙悙悘悘弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿彁悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙憫憫憫憫憫憫憫憫憫憫憫憫憫憪悙悙悙悙悙悙悙悙弿弿弿弿弿弿弿弿弾帋帋帋帋帋帋帋帋帋帊崓崓崓崓崓崓崓崓崓寣寣寣寣寣寣寣寣寣媼媼媼媼媼媼媼媼媼媼媻妸妸妸妸妸妸妸妸妸妸妷墘墘墘墘墘墘墘墘墘墘墘墘増垐垐垐垐垐垐垐垐垐垐垐垐垏噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰噰垐噲垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垐垑墘墘墘墘墘墘墘墘墘墘墘墘墘墘妸妸妸妸妸妸妸妸妸妸妸妸妺媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼媼寣寣寣寣寣寣寣寣寣寣寣寣寣寣寣寣寣寣寣實崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崓崕帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋帋弿弿弿弿弿弿弿弿弿弿弿弿弿弿弿彁悙悙悙悙悙悙悙悙悙悙憫憫憫憫憫憫憫拻拻拻拻拻拻拻摀摀摀摀摀摀摀敂敂敂敂敂敂敂敃晻晻晻晻晻晻晻晻晻晻晻晻晻晻晻晻晻晻晻晻晹敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敂敁摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀摀敂敂敂晻晻晼枛枟棗棙槝槞櫃櫄殮洓洓湝湝潩潩灋灋煙煙煚牋 ⅱⅲ##いいいいぅゥゥゥゥゥΖΖΖЁЁЖèè┅┅┆��������������������┅┄èЁΖΕイい#ⅱ 牊煘潨洓殭槜棖晻敁拻憫悘弾帊崒寢媻妷増垐噰唵唴厔剟儍倐亖€~}}|{zzyyxwvvutsrqponmlkkihgfeedcbbaa`_^^]\\[ZZYYXXWVVUUUTSSRQPPONMLLKJJJIHGGFFFEEDDCCCCBBBCCBAAA@@@@@??>>>>>>=====<<<<<<;;;::99876533210.-,+*))('''&&%$####"""""!!!!!!!!!! !##$%&'()**++,-./001111000/..---,,+**))((''''''''''(())***+,--../00122345667667889999998877665554433221/.-,,+*)(&%$$######$$$$%%&''(())))*****++++++++++*)('&%$##"!
|
||||||
|
|
||||||
|
| ||||||