浏览代码

Merge branch 'hackweek2017' of https://github.com/stramit/MaterialGraph into hackweek2017

/main
Florent Guinier 8 年前
当前提交
670f4bf3
共有 201 个文件被更改,包括 13035 次插入193 次删除
  1. 1
      .gitignore
  2. 39
      MaterialGraphProject/Assets/Andre/Materials/Mat.mat
  3. 20
      MaterialGraphProject/Assets/Andre/Scenes/Andre_scene.unity
  4. 2
      MaterialGraphProject/Assets/Andre/Shaders/SlopeShader.ShaderGraph
  5. 2
      MaterialGraphProject/Assets/Andre/Shaders/TestingGraph.ShaderGraph
  6. 2
      MaterialGraphProject/Assets/Brandon/Cellular/Cellular.ShaderGraph
  7. 305
      MaterialGraphProject/Assets/Brandon/Cellular/Cellular.shader
  8. 4
      MaterialGraphProject/Assets/Brandon/Cellular/Cellular_Material.mat
  9. 2
      MaterialGraphProject/Assets/Florent/2Pass_Edited.ShaderGraph
  10. 128
      MaterialGraphProject/Assets/GeneratedShader.shader
  11. 2
      MaterialGraphProject/Assets/Matt/Examples/Anisotropy.ShaderGraph
  12. 9
      MaterialGraphProject/Assets/Matt/Examples/Anisotropy.mat
  13. 1
      MaterialGraphProject/Assets/NewNodes/WIP/AACheckerBoardNode.cs
  14. 138
      MaterialGraphProject/Assets/NewNodes/WIP/AnyNode.cs
  15. 2
      MaterialGraphProject/Assets/NewNodes/WIP/POMNode.cs
  16. 1
      MaterialGraphProject/Assets/NewNodes/WIP/RadialShearNode.cs
  17. 2
      MaterialGraphProject/Assets/NewNodes/WIP/ScaleOffsetNode.cs
  18. 2
      MaterialGraphProject/Assets/NewNodes/WIP/SphereWarpNode.cs
  19. 2
      MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/Presenters/MaterialGraphPresenter.cs
  20. 2
      MaterialGraphProject/Assets/UnityShaderEditor/Runtime/Nodes/AbstractMaterialNode.cs
  21. 2
      MaterialGraphProject/Assets/UnityShaderEditor/Runtime/Nodes/Input/SceneData/ScreenPosNode.cs
  22. 26
      MaterialGraphProject/Assets/Vlad/TextureAssetNode.cs
  23. 2
      MaterialGraphProject/Assets/_MingWai/GeneratedTextureDemo/0-UnityLogo-Mat.mat
  24. 189
      MaterialGraphProject/Assets/Andre/LavaFlowMap.shader
  25. 28
      MaterialGraphProject/Assets/Andre/LavaFlowMap.shader.meta
  26. 134
      MaterialGraphProject/Assets/Andre/LavaRock.shader
  27. 14
      MaterialGraphProject/Assets/Andre/LavaRock.shader.meta
  28. 9
      MaterialGraphProject/Assets/Andre/Meshes.meta
  29. 9
      MaterialGraphProject/Assets/Andre/Scenes/Lava.meta
  30. 399
      MaterialGraphProject/Assets/Andre/Scenes/Lava.unity
  31. 8
      MaterialGraphProject/Assets/Andre/Scenes/Lava.unity.meta
  32. 1
      MaterialGraphProject/Assets/Andre/Shaders/GreyToUV.ShaderGraph
  33. 9
      MaterialGraphProject/Assets/Andre/Shaders/GreyToUV.ShaderGraph.meta
  34. 1
      MaterialGraphProject/Assets/Andre/Shaders/LavaFlowMap.ShaderGraph
  35. 9
      MaterialGraphProject/Assets/Andre/Shaders/LavaFlowMap.ShaderGraph.meta
  36. 1
      MaterialGraphProject/Assets/Andre/Shaders/LavaRock.ShaderGraph
  37. 9
      MaterialGraphProject/Assets/Andre/Shaders/LavaRock.ShaderGraph.meta
  38. 407
      MaterialGraphProject/Assets/Andre/an_gradient.png
  39. 84
      MaterialGraphProject/Assets/Andre/an_gradient.png.meta
  40. 75
      MaterialGraphProject/Assets/Andre/ground_cracked_ground_basecolor.png.meta
  41. 75
      MaterialGraphProject/Assets/Andre/ground_cracked_ground_height.png.meta
  42. 1001
      MaterialGraphProject/Assets/Andre/ground_cracked_ground_roughness.png
  43. 75
      MaterialGraphProject/Assets/Andre/ground_cracked_ground_roughness.png.meta
  44. 29
      MaterialGraphProject/Assets/Florent/UnityEngine.MaterialGraph.ExportTextureMasterNode8e1be5fc-7506-4529-879d-f1ce8c5aab04.mat
  45. 9
      MaterialGraphProject/Assets/Matt/CharacterRendering.meta
  46. 960
      MaterialGraphProject/Assets/Matt/Examples/Anisotropy.shader
  47. 10
      MaterialGraphProject/Assets/Matt/Examples/Anisotropy.shader.meta
  48. 363
      MaterialGraphProject/Assets/Matt/Examples/Anisotropy.unity
  49. 8
      MaterialGraphProject/Assets/Matt/Examples/Anisotropy.unity.meta
  50. 69
      MaterialGraphProject/Assets/NewNodes/WIP/SphericalIndentationNode.cs
  51. 12
      MaterialGraphProject/Assets/NewNodes/WIP/SphericalIndentationNode.cs.meta
  52. 1
      MaterialGraphProject/Assets/SphereDent.ShaderGraph
  53. 9
      MaterialGraphProject/Assets/SphereDent.ShaderGraph.meta
  54. 1001
      MaterialGraphProject/Assets/TestAssets/Lava_flowmap.png
  55. 84
      MaterialGraphProject/Assets/TestAssets/Lava_flowmap.png.meta
  56. 65
      MaterialGraphProject/Assets/TestAssets/RockMaterial1.sbsar.meta
  57. 244
      MaterialGraphProject/Assets/TestAssets/portrait_mask.png
  58. 84
      MaterialGraphProject/Assets/TestAssets/portrait_mask.png.meta
  59. 52
      MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/Presenters/SamplerAssetPresenter.cs
  60. 12
      MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/Presenters/SamplerAssetPresenter.cs.meta
  61. 136
      MaterialGraphProject/Assets/UnityShaderEditor/Runtime/Nodes/Input/Texture/SamplerAssetNode.cs
  62. 8
      MaterialGraphProject/Assets/UnityShaderEditor/Runtime/Nodes/Input/Texture/SamplerAssetNode.cs.meta
  63. 44
      MaterialGraphProject/Assets/_MingWai/Gradient.asset
  64. 9
      MaterialGraphProject/Assets/_MingWai/Gradient.asset.meta
  65. 101
      MaterialGraphProject/Assets/_MingWai/GradientShader.shader
  66. 10
      MaterialGraphProject/Assets/_MingWai/GradientShader.shader.meta
  67. 1
      MaterialGraphProject/Assets/_MingWai/GradientTexture.ShaderGraph
  68. 9
      MaterialGraphProject/Assets/_MingWai/GradientTexture.ShaderGraph.meta
  69. 21
      MaterialGraphProject/Assets/_MingWai/UnityEngine.MaterialGraph.ExportTextureMasterNodee933fd86-9b63-40a2-9321-e857830b2339.mat
  70. 9
      MaterialGraphProject/Assets/_MingWai/UnityEngine.MaterialGraph.ExportTextureMasterNodee933fd86-9b63-40a2-9321-e857830b2339.mat.meta
  71. 9
      MaterialGraphProject/Assets/snow.meta
  72. 1001
      MaterialGraphProject/Assets/Andre/Meshes/Lava.fbx
  73. 158
      MaterialGraphProject/Assets/Andre/Meshes/Lava.fbx.meta
  74. 9
      MaterialGraphProject/Assets/Andre/Meshes/Materials.meta
  75. 75
      MaterialGraphProject/Assets/Andre/Meshes/Materials/Border.mat
  76. 9
      MaterialGraphProject/Assets/Andre/Meshes/Materials/Border.mat.meta
  77. 116
      MaterialGraphProject/Assets/Andre/Meshes/Materials/Lava.mat
  78. 9
      MaterialGraphProject/Assets/Andre/Meshes/Materials/Lava.mat.meta
  79. 125
      MaterialGraphProject/Assets/Andre/Meshes/Materials/RockLava.mat
  80. 9
      MaterialGraphProject/Assets/Andre/Meshes/Materials/RockLava.mat.meta
  81. 633
      MaterialGraphProject/Assets/Andre/Scenes/Lava/LightingData.asset
  82. 9
      MaterialGraphProject/Assets/Andre/Scenes/Lava/LightingData.asset.meta
  83. 790
      MaterialGraphProject/Assets/Andre/Scenes/Lava/ReflectionProbe-0.exr
  84. 76
      MaterialGraphProject/Assets/Andre/Scenes/Lava/ReflectionProbe-0.exr.meta
  85. 940
      MaterialGraphProject/Assets/Matt/CharacterRendering/Anisotropic.shader
  86. 10
      MaterialGraphProject/Assets/Matt/CharacterRendering/Anisotropic.shader.meta
  87. 941
      MaterialGraphProject/Assets/Matt/CharacterRendering/AnisotropicTransparent.shader
  88. 10
      MaterialGraphProject/Assets/Matt/CharacterRendering/AnisotropicTransparent.shader.meta
  89. 9
      MaterialGraphProject/Assets/Matt/CharacterRendering/Challenger.meta
  90. 1001
      MaterialGraphProject/Assets/Matt/CharacterRendering/Challenger/Chal_Rig.fbx
  91. 696
      MaterialGraphProject/Assets/Matt/CharacterRendering/Challenger/Chal_Rig.fbx.meta

1
.gitignore


MaterialGraphProject/.idea
MaterialGraphProject/Assets/Plugins/Editor/Rider
.DS_Store
MaterialGraphProject/Assets/_MingWai/New Custom Texture.asset.meta

39
MaterialGraphProject/Assets/Andre/Materials/Mat.mat


disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs: []
m_TexEnvs:
- TextureAsset_8f4a8771_6c8f_4107_9c0b_83da34d57a9b_Uniform:
m_Texture: {fileID: 2800000, guid: 5d84e1086e00e3347aaa0bbba206bb80, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- TextureAsset_c7200338_1d92_46a8_840a_e39cf74e61c5_Uniform:
m_Texture: {fileID: 2800000, guid: 5d84e1086e00e3347aaa0bbba206bb80, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- Texture_19c9bbd1_c4e8_4c71_9323_a8fc6485f3e5_Uniform:
m_Texture: {fileID: 2800000, guid: 69689f06d0a74fd42b0ef31038efadbf, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- Texture_23165f20_f8eb_4f7c_86e4_7fb7aeacb0f7_Uniform:
m_Texture: {fileID: 2800000, guid: e0530738470b5cc4287b0d7c3804940b, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- Texture_401188ed_6e9e_4a8a_9f5c_a7853502ba40_Uniform:
m_Texture: {fileID: 2800000, guid: aa460a2956f927d4ab684aa4970bf76a, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- Texture_6df69ae7_cb4c_435c_a029_13f370817e4c_Uniform:
m_Texture: {fileID: 2800000, guid: e0530738470b5cc4287b0d7c3804940b, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- Texture_c007d40f_e93f_40ea_9867_1b70cebcd3fd_Uniform:
m_Texture: {fileID: 2800000, guid: 556373d2abe91394795e2c7b920330f0, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- Texture_d48530d7_5921_4987_918e_46411222e797_Uniform:
m_Texture: {fileID: 2800000, guid: 1085d6f82e40b31428079b25ebee7d74, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- Texture_fd9422b7_6255_4b8e_b616_78346d444d21_Uniform:
m_Texture: {fileID: 2800000, guid: 84462bdfeee9d694bbebf34e5f3faa74, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- Vector1_15d5efb3_faea_4990_90ce_629f350a50cb_Uniform: 0.75
- Vector1_a2ac4923_bc39_4a5c_924e_e77bd500d4f3_Uniform: 1
m_Colors: []

20
MaterialGraphProject/Assets/Andre/Scenes/Andre_scene.unity


m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingPath: -1
m_RenderingPath: 3
m_AllowMSAA: 1
m_AllowMSAA: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 1
m_StereoConvergence: 10

m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 294444510}
m_LocalRotation: {x: 0.19050473, y: 0.77208126, z: -0.27119747, w: 0.54226416}
m_LocalPosition: {x: -2.1872556, y: 2.1173432, z: 0.8953756}
m_LocalRotation: {x: 0.089319564, y: 0.9083633, z: -0.2531812, w: 0.32062057}
m_LocalPosition: {x: -0.69146323, y: 2.1685483, z: 1.7600105}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}

m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1883063129}
m_LocalRotation: {x: 0.826291, y: 0.249458, z: -0.4548529, w: 0.21936846}
m_LocalRotation: {x: -0.61004186, y: 0.21850748, z: -0.7400399, w: -0.18012369}
m_LocalEulerAnglesHint: {x: 36.119003, y: 232.659, z: 164.73401}
m_LocalEulerAnglesHint: {x: 147.1, y: 259, z: 0}
--- !u!1 &1914401973
GameObject:
m_ObjectHideFlags: 0

m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 2080471397}
m_LocalRotation: {x: 0.039958883, y: -0.06547875, z: 0.8823947, w: -0.46421504}
m_LocalPosition: {x: 0.382, y: 0.506, z: 0.267}
m_LocalScale: {x: 1.6328479, y: 1.6328486, z: 1.6328486}
m_LocalRotation: {x: -0.088190466, y: -0.12587233, z: -0.019407442, w: -0.98792815}
m_LocalPosition: {x: 0.8727719, y: 0.3689865, z: 0.47811005}
m_LocalScale: {x: 0.647487, y: 0.6474872, z: 0.6474872}
m_LocalEulerAnglesHint: {x: -184.5, y: -172.431, z: -304.206}
m_LocalEulerAnglesHint: {x: -350.249, y: -345.178, z: -356.478}
--- !u!1 &2129034570
GameObject:
m_ObjectHideFlags: 0

2
MaterialGraphProject/Assets/Andre/Shaders/SlopeShader.ShaderGraph
文件差异内容过多而无法显示
查看文件

2
MaterialGraphProject/Assets/Andre/Shaders/TestingGraph.ShaderGraph
文件差异内容过多而无法显示
查看文件

2
MaterialGraphProject/Assets/Brandon/Cellular/Cellular.ShaderGraph
文件差异内容过多而无法显示
查看文件

305
MaterialGraphProject/Assets/Brandon/Cellular/Cellular.shader


Shader "Brandon/Cellular"
Shader "Brandon/Cellular"
Properties
{
Properties
{
Texture_b86ff54c_bbe9_4694_8531_326cc9640f0b_Uniform("Texture", 2D) = "white" {}
}
}
SubShader
{
Tags
{
"RenderType"="Opaque"
"Queue"="Geometry"
}
SubShader
{
Tags
{
"RenderType" = "Opaque"
"Queue" = "Geometry"
}
Blend One Zero
Blend One Zero
Cull Back
Cull Back
ZTest LEqual
ZTest LEqual
ZWrite On
ZWrite On
LOD 200
CGPROGRAM
#pragma target 3.0
#pragma surface surf Standard vertex:vert
#pragma glsl
#pragma debug
LOD 200
sampler2D Texture_b86ff54c_bbe9_4694_8531_326cc9640f0b_Uniform;
CGPROGRAM
#pragma target 3.0
#pragma surface surf Standard vertex:vert
#pragma glsl
#pragma debug
inline float4 unity_remap_float(float4 arg1, float2 arg2, float2 arg3)
{
return arg3.x + (arg1 - arg2.x) * (arg3.y - arg3.x) / (arg2.y - arg2.x);
}
inline float2 unity_voronoi_noise_randomVector(float2 uv, float offset)
{
float2x2 m = float2x2(15.27, 47.63, 99.41, 89.98);
uv = frac(sin(mul(uv, m)) * 46839.32);
return float2(sin(uv.y*+offset)*0.5 + 0.5, cos(uv.x*offset)*0.5 + 0.5);
}
inline void unity_voronoinoise_float(float2 uv, float angleOffset, out float n1, out float n2, out float n3)
{
float2 g = floor(uv);
float2 f = frac(uv);
float t = 8.0;
float3 res = float3(8.0, 0.0, 0.0);
for (int y = -1; y <= 1; y++)
{
for (int x = -1; x <= 1; x++)
{
float2 lattice = float2(x,y);
float2 offset = unity_voronoi_noise_randomVector(lattice + g, angleOffset);
float d = distance(lattice + offset, f);
if (d < res.x)
{
res = float3(d, offset.x, offset.y);
n1 = res.x;
n2 = res.y;
n3 = 1.0 - res.x;
}
}
}
}
inline float unity_particle_float(float2 uv, float scaleFactor)
{
uv = uv * 2.0 - 1.0;
return abs(1.0 / length(uv * scaleFactor));
}
inline float unity_oneminus_float(float arg1)
{
return arg1 * -1 + 1;
}
inline float unity_multiply_float(float arg1, float arg2)
{
return arg1 * arg2;
}
inline float3 unity_multiply_float(float3 arg1, float3 arg2)
{
return arg1 * arg2;
}
inline float2 unity_uvpanner_float(float2 UV, float HorizontalOffset, float VerticalOffset)
{
return float2(UV.x + HorizontalOffset, UV.y + VerticalOffset);
}
inline float3 unity_add_float(float3 arg1, float3 arg2)
{
return arg1 + arg2;
}
inline float3 unity_rgbtolinear_float(float3 arg1)
{
float3 linearRGBLo = arg1 / 12.92;
float3 linearRGBHi = pow(max(abs((arg1 + 0.055) / 1.055), 1.192092896e-07), float3(2.4, 2.4, 2.4));
return float3(arg1 <= 0.04045) ? linearRGBLo : linearRGBHi;
}
inline float4 unity_remap_float (float4 arg1, float2 arg2, float2 arg3)
{
return arg3.x + (arg1 - arg2.x) * (arg3.y - arg3.x) / (arg2.y - arg2.x);
}
inline float2 unity_spherize_float (float2 uv, float2 position, float2 radiusAndStrength)
{
float2 fromUVToPoint = position - uv;
float dist = length(fromUVToPoint);
float mag = ((1.0 - (dist / radiusAndStrength.x)) * radiusAndStrength.y) * step(dist, radiusAndStrength.x);
return uv + (mag * fromUVToPoint);
}
inline float2 unity_voronoi_noise_randomVector (float2 uv, float offset)
{
float2x2 m = float2x2(15.27, 47.63, 99.41, 89.98);
uv = frac(sin(mul(uv, m)) * 46839.32);
return float2(sin(uv.y*+offset)*0.5+0.5, cos(uv.x*offset)*0.5+0.5);
}
inline void unity_voronoinoise_float (float2 uv, float angleOffset, out float n1, out float n2, out float n3)
{
float2 g = floor(uv);
float2 f = frac(uv);
float t = 8.0;
float3 res = float3(8.0, 0.0, 0.0);
for(int y=-1; y<=1; y++)
{
for(int x=-1; x<=1; x++)
{
float2 lattice = float2(x,y);
float2 offset = unity_voronoi_noise_randomVector(lattice + g, angleOffset);
float d = distance(lattice + offset, f);
if(d < res.x)
{
res = float3(d, offset.x, offset.y);
n1 = res.x;
n2 = res.y;
n3 = 1.0 - res.x;
}
}
}
}
inline float unity_particle_float (float2 uv, float scaleFactor)
{
uv = uv * 2.0 - 1.0;
return abs(1.0/length(uv * scaleFactor));
}
inline float unity_oneminus_float (float arg1)
{
return arg1 * -1 + 1;
}
inline float unity_multiply_float (float arg1, float arg2)
{
return arg1 * arg2;
}
inline float3 unity_multiply_float (float3 arg1, float3 arg2)
{
return arg1 * arg2;
}
inline float2 unity_uvpanner_float (float2 UV, float HorizontalOffset, float VerticalOffset)
{
return float2(UV.x + HorizontalOffset, UV.y + VerticalOffset);
}
inline float3 unity_add_float (float3 arg1, float3 arg2)
{
return arg1 + arg2;
}
inline float3 unity_rgbtolinear_float (float3 arg1)
{
float3 linearRGBLo = arg1 / 12.92;
float3 linearRGBHi = pow(max(abs((arg1 + 0.055) / 1.055), 1.192092896e-07), float3(2.4, 2.4, 2.4));
return float3(arg1 <= 0.04045) ? linearRGBLo : linearRGBHi;
}
inline float4 unity_oneminus_float (float4 arg1)
{
return arg1 * -1 + 1;
}
inline void unity_CustomCode_test (float d, float dp, out float c)
{
c = step(dp, d);
}
struct Input
{
float4 color : COLOR;
half4 meshUV0;
struct Input
{
float4 color : COLOR;
half4 meshUV0;
};
};
void vert(inout appdata_full v, out Input o)
{
UNITY_INITIALIZE_OUTPUT(Input,o);
o.meshUV0 = v.texcoord;
}
void vert (inout appdata_full v, out Input o)
{
UNITY_INITIALIZE_OUTPUT(Input,o);
o.meshUV0 = v.texcoord;
void surf(Input IN, inout SurfaceOutputStandard o)
{
half4 uv0 = IN.meshUV0;
float3 Vector3_ff318061_3405_4489_b0c0_004f3556b379_Uniform = float3 (3, 2.5, 5);
float4 UV_257dbdde_fb0e_45d2_b1d5_3245a77a7446_UV = uv0;
float4 Remap_e2de5e87_5108_4e55_91d0_202c89bfdc77_Output = unity_remap_float(UV_257dbdde_fb0e_45d2_b1d5_3245a77a7446_UV, float2 (0,1), float2 (-10,10));
float VoronoiNoise_6363f48c_fb0a_4d4a_b0a0_e9c095b25f14_n1;
float VoronoiNoise_6363f48c_fb0a_4d4a_b0a0_e9c095b25f14_n2;
float VoronoiNoise_6363f48c_fb0a_4d4a_b0a0_e9c095b25f14_n3;
unity_voronoinoise_float(Remap_e2de5e87_5108_4e55_91d0_202c89bfdc77_Output, _Time.y, VoronoiNoise_6363f48c_fb0a_4d4a_b0a0_e9c095b25f14_n1, VoronoiNoise_6363f48c_fb0a_4d4a_b0a0_e9c095b25f14_n2, VoronoiNoise_6363f48c_fb0a_4d4a_b0a0_e9c095b25f14_n3);
float4 UV_b1e148d9_f64d_4409_bc93_047246acb763_UV = uv0;
float Particle_bc661883_3410_41aa_9c40_9841d35071d1_Output = unity_particle_float(UV_b1e148d9_f64d_4409_bc93_047246acb763_UV, 2.44);
float OneMinus_ed098cd5_7e1f_43c8_aa71_e28f93649eb3_Output = unity_oneminus_float(Particle_bc661883_3410_41aa_9c40_9841d35071d1_Output);
float Multiply_f23a464e_ad77_4844_96be_5f17a4ee2ad5_Output = unity_multiply_float(VoronoiNoise_6363f48c_fb0a_4d4a_b0a0_e9c095b25f14_n1, OneMinus_ed098cd5_7e1f_43c8_aa71_e28f93649eb3_Output);
float Saturate_4f751b04_b16e_426b_8661_93bba25e78ea_Output = saturate(Multiply_f23a464e_ad77_4844_96be_5f17a4ee2ad5_Output);
float3 Multiply_51e47dbb_3a27_43fb_85f3_075820b6f397_Output = unity_multiply_float(Vector3_ff318061_3405_4489_b0c0_004f3556b379_Uniform, Saturate_4f751b04_b16e_426b_8661_93bba25e78ea_Output);
float4 UV_f53721a3_b62f_474c_8348_cd27dce64004_UV = uv0;
float4 Remap_fc254320_74c6_4929_9c55_12b74013aa50_Output = unity_remap_float(UV_f53721a3_b62f_474c_8348_cd27dce64004_UV, float2 (0,1), float2 (-10,10));
float VoronoiNoise_5d4bee83_6fb2_48e2_b332_76a7ce558de7_n1;
float VoronoiNoise_5d4bee83_6fb2_48e2_b332_76a7ce558de7_n2;
float VoronoiNoise_5d4bee83_6fb2_48e2_b332_76a7ce558de7_n3;
unity_voronoinoise_float(Remap_fc254320_74c6_4929_9c55_12b74013aa50_Output, _Time.z, VoronoiNoise_5d4bee83_6fb2_48e2_b332_76a7ce558de7_n1, VoronoiNoise_5d4bee83_6fb2_48e2_b332_76a7ce558de7_n2, VoronoiNoise_5d4bee83_6fb2_48e2_b332_76a7ce558de7_n3);
float2 UVPanner_a7d52543_81f8_4b8f_9f48_a83f6390465f_Output = unity_uvpanner_float(Remap_fc254320_74c6_4929_9c55_12b74013aa50_Output, 0.45, 0.45);
float Particle_ff7ecb20_7b31_4549_a468_0da4421a2b0e_Output = unity_particle_float(UVPanner_a7d52543_81f8_4b8f_9f48_a83f6390465f_Output, -0.78);
float SmoothStep_d93b46f2_249b_4b3a_93a9_70e542a367ea_Output = smoothstep(0.15, 0.4, Particle_ff7ecb20_7b31_4549_a468_0da4421a2b0e_Output);
float Multiply_3002b60e_2a73_4b04_9567_798629fb7fb7_Output = unity_multiply_float(VoronoiNoise_5d4bee83_6fb2_48e2_b332_76a7ce558de7_n3, SmoothStep_d93b46f2_249b_4b3a_93a9_70e542a367ea_Output);
float Saturate_848599e3_7853_4ad1_9dc9_d854e0c98884_Output = saturate(Multiply_3002b60e_2a73_4b04_9567_798629fb7fb7_Output);
float3 Vector3_ed4329c2_0a82_4467_816a_99ed1694361d_Uniform = float3 (2, 4, 8);
float3 Multiply_196a897c_4a8f_4c02_87f1_4818aeec305d_Output = unity_multiply_float(Saturate_848599e3_7853_4ad1_9dc9_d854e0c98884_Output, Vector3_ed4329c2_0a82_4467_816a_99ed1694361d_Uniform);
float3 Add_371d52ad_c3e8_484a_8546_7079c5df37df_Output = unity_add_float(Multiply_51e47dbb_3a27_43fb_85f3_075820b6f397_Output, Multiply_196a897c_4a8f_4c02_87f1_4818aeec305d_Output);
float3 RGBtoLinear_b45ced7c_417b_406b_9524_9699354a5af9_Output = unity_rgbtolinear_float(Add_371d52ad_c3e8_484a_8546_7079c5df37df_Output);
float Vector1_514d9c2d_f80f_4ffd_824e_58e3f2d8a162_Uniform = 1;
o.Emission = RGBtoLinear_b45ced7c_417b_406b_9524_9699354a5af9_Output;
o.Alpha = Vector1_514d9c2d_f80f_4ffd_824e_58e3f2d8a162_Uniform;
}
void surf (Input IN, inout SurfaceOutputStandard o)
{
half4 uv0 = IN.meshUV0;
float3 Vector3_ff318061_3405_4489_b0c0_004f3556b379_Uniform = float3 (3, 2.5, 5);
float4 UV_257dbdde_fb0e_45d2_b1d5_3245a77a7446_UV = uv0;
float4 Remap_e2de5e87_5108_4e55_91d0_202c89bfdc77_Output = unity_remap_float (UV_257dbdde_fb0e_45d2_b1d5_3245a77a7446_UV, float2 (0,1), float2 (-10,10));
float Sin_b1ddf0e6_502c_4513_9a06_d60c0f84e7e7_Output = sin (_Time.y);
float Absolute_fca0185b_603c_4c3f_a7d7_20003e1bfbf1_Output = abs (Sin_b1ddf0e6_502c_4513_9a06_d60c0f84e7e7_Output);
float Lerp_6aff06be_b078_46b9_a5d9_131ef80392d8_Output = lerp (1, 20, Absolute_fca0185b_603c_4c3f_a7d7_20003e1bfbf1_Output);
float Vector1_09cb6502_ddcd_40fa_a9c4_80a8217e6532_Uniform = 0.5;
float4 Combine_27399d01_fcb9_4ec2_8c0e_864fa09b5aa3_Output = float4(Lerp_6aff06be_b078_46b9_a5d9_131ef80392d8_Output,Vector1_09cb6502_ddcd_40fa_a9c4_80a8217e6532_Uniform,0.0, 0.0);
float2 Spherize_fe87ab04_d3e2_4b06_93f6_ea59773ab7eb_Output = unity_spherize_float (Remap_e2de5e87_5108_4e55_91d0_202c89bfdc77_Output, float2 (0,0), Combine_27399d01_fcb9_4ec2_8c0e_864fa09b5aa3_Output);
float VoronoiNoise_6363f48c_fb0a_4d4a_b0a0_e9c095b25f14_n1;
float VoronoiNoise_6363f48c_fb0a_4d4a_b0a0_e9c095b25f14_n2;
float VoronoiNoise_6363f48c_fb0a_4d4a_b0a0_e9c095b25f14_n3;
unity_voronoinoise_float (Spherize_fe87ab04_d3e2_4b06_93f6_ea59773ab7eb_Output, _Time.y, VoronoiNoise_6363f48c_fb0a_4d4a_b0a0_e9c095b25f14_n1, VoronoiNoise_6363f48c_fb0a_4d4a_b0a0_e9c095b25f14_n2, VoronoiNoise_6363f48c_fb0a_4d4a_b0a0_e9c095b25f14_n3);
float4 UV_b1e148d9_f64d_4409_bc93_047246acb763_UV = uv0;
float Particle_bc661883_3410_41aa_9c40_9841d35071d1_Output = unity_particle_float (UV_b1e148d9_f64d_4409_bc93_047246acb763_UV, 2.44);
float OneMinus_ed098cd5_7e1f_43c8_aa71_e28f93649eb3_Output = unity_oneminus_float (Particle_bc661883_3410_41aa_9c40_9841d35071d1_Output);
float Multiply_f23a464e_ad77_4844_96be_5f17a4ee2ad5_Output = unity_multiply_float (VoronoiNoise_6363f48c_fb0a_4d4a_b0a0_e9c095b25f14_n1, OneMinus_ed098cd5_7e1f_43c8_aa71_e28f93649eb3_Output);
float Saturate_4f751b04_b16e_426b_8661_93bba25e78ea_Output = saturate (Multiply_f23a464e_ad77_4844_96be_5f17a4ee2ad5_Output);
float3 Multiply_51e47dbb_3a27_43fb_85f3_075820b6f397_Output = unity_multiply_float (Vector3_ff318061_3405_4489_b0c0_004f3556b379_Uniform, Saturate_4f751b04_b16e_426b_8661_93bba25e78ea_Output);
float4 UV_f53721a3_b62f_474c_8348_cd27dce64004_UV = uv0;
float4 Remap_fc254320_74c6_4929_9c55_12b74013aa50_Output = unity_remap_float (UV_f53721a3_b62f_474c_8348_cd27dce64004_UV, float2 (0,1), float2 (-10,10));
float VoronoiNoise_5d4bee83_6fb2_48e2_b332_76a7ce558de7_n1;
float VoronoiNoise_5d4bee83_6fb2_48e2_b332_76a7ce558de7_n2;
float VoronoiNoise_5d4bee83_6fb2_48e2_b332_76a7ce558de7_n3;
unity_voronoinoise_float (Remap_fc254320_74c6_4929_9c55_12b74013aa50_Output, _Time.z, VoronoiNoise_5d4bee83_6fb2_48e2_b332_76a7ce558de7_n1, VoronoiNoise_5d4bee83_6fb2_48e2_b332_76a7ce558de7_n2, VoronoiNoise_5d4bee83_6fb2_48e2_b332_76a7ce558de7_n3);
float2 UVPanner_a7d52543_81f8_4b8f_9f48_a83f6390465f_Output = unity_uvpanner_float (Remap_fc254320_74c6_4929_9c55_12b74013aa50_Output, 0.45, 0.45);
float Particle_ff7ecb20_7b31_4549_a468_0da4421a2b0e_Output = unity_particle_float (UVPanner_a7d52543_81f8_4b8f_9f48_a83f6390465f_Output, -0.78);
float SmoothStep_d93b46f2_249b_4b3a_93a9_70e542a367ea_Output = smoothstep (0.15, 0.4, Particle_ff7ecb20_7b31_4549_a468_0da4421a2b0e_Output);
float Multiply_3002b60e_2a73_4b04_9567_798629fb7fb7_Output = unity_multiply_float (VoronoiNoise_5d4bee83_6fb2_48e2_b332_76a7ce558de7_n3, SmoothStep_d93b46f2_249b_4b3a_93a9_70e542a367ea_Output);
float Saturate_848599e3_7853_4ad1_9dc9_d854e0c98884_Output = saturate (Multiply_3002b60e_2a73_4b04_9567_798629fb7fb7_Output);
float3 Vector3_ed4329c2_0a82_4467_816a_99ed1694361d_Uniform = float3 (2, 4, 8);
float3 Multiply_196a897c_4a8f_4c02_87f1_4818aeec305d_Output = unity_multiply_float (Saturate_848599e3_7853_4ad1_9dc9_d854e0c98884_Output, Vector3_ed4329c2_0a82_4467_816a_99ed1694361d_Uniform);
float3 Add_371d52ad_c3e8_484a_8546_7079c5df37df_Output = unity_add_float (Multiply_51e47dbb_3a27_43fb_85f3_075820b6f397_Output, Multiply_196a897c_4a8f_4c02_87f1_4818aeec305d_Output);
float3 RGBtoLinear_b45ced7c_417b_406b_9524_9699354a5af9_Output = unity_rgbtolinear_float (Add_371d52ad_c3e8_484a_8546_7079c5df37df_Output);
float4 UV_f07867b1_de17_49e3_8e83_602340969ed4_UV = uv0;
float4 Texture_b86ff54c_bbe9_4694_8531_326cc9640f0b = tex2D (Texture_b86ff54c_bbe9_4694_8531_326cc9640f0b_Uniform, (UV_f07867b1_de17_49e3_8e83_602340969ed4_UV.xy));
float4 OneMinus_4ee34df0_3179_41cf_b2d7_f7a3a8a7795e_Output = unity_oneminus_float (Texture_b86ff54c_bbe9_4694_8531_326cc9640f0b);
float3 Multiply_a8ff6c5c_5b0d_413a_b22d_7a95b12dadbc_Output = unity_multiply_float (RGBtoLinear_b45ced7c_417b_406b_9524_9699354a5af9_Output, OneMinus_4ee34df0_3179_41cf_b2d7_f7a3a8a7795e_Output);
float CustomCode_de9dc268_2bcc_4906_804c_bd10b50ad4f4_c;
unity_CustomCode_test (OneMinus_4ee34df0_3179_41cf_b2d7_f7a3a8a7795e_Output, 0.57, CustomCode_de9dc268_2bcc_4906_804c_bd10b50ad4f4_c);
float Multiply_2f548bb2_d578_4b2b_b00c_20897ee877b3_Output = unity_multiply_float (CustomCode_de9dc268_2bcc_4906_804c_bd10b50ad4f4_c, 0.75);
float3 Add_e67d33e0_c8c9_451a_9962_408b4fa9f2e9_Output = unity_add_float (Multiply_a8ff6c5c_5b0d_413a_b22d_7a95b12dadbc_Output, Multiply_2f548bb2_d578_4b2b_b00c_20897ee877b3_Output);
float Vector1_514d9c2d_f80f_4ffd_824e_58e3f2d8a162_Uniform = 1;
o.Emission = Add_e67d33e0_c8c9_451a_9962_408b4fa9f2e9_Output;
o.Alpha = Vector1_514d9c2d_f80f_4ffd_824e_58e3f2d8a162_Uniform;
}
ENDCG
}
}
ENDCG
}
FallBack "Diffuse"
CustomEditor "LegacyIlluminShaderGUI"
FallBack "Diffuse"
CustomEditor "LegacyIlluminShaderGUI"
}

4
MaterialGraphProject/Assets/Brandon/Cellular/Cellular_Material.mat


m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- Texture_b86ff54c_bbe9_4694_8531_326cc9640f0b_Uniform:
m_Texture: {fileID: 2800000, guid: ad78029cb3832214ca442896e68ae18f, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}

2
MaterialGraphProject/Assets/Florent/2Pass_Edited.ShaderGraph
文件差异内容过多而无法显示
查看文件

128
MaterialGraphProject/Assets/GeneratedShader.shader


<<<<<<< HEAD
=======
Shader "Graph/Generated.MetallicMasterNode588ae349-7b2c-4dcc-a420-78da738e8509"
{
Properties
{
Texture_a6eb1bfb_6ea7_4e0b_bfc1_c9e0ed434f76_Uniform("Albedo", 2D) = "white" {}
Texture_df5248d2_ffaf_4f62_9322_5575ac4818d0_Uniform("Normal", 2D) = "bump" {}
[HDR]Color_11e7c6f6_9284_4d76_bfbf_3a1eced790b6_Uniform("Color", Color) = (2,0.5379311,0,1)
>>>>>>> 82dce9042a3bb161933bb4ee1fa5fa11724776d6
}
SubShader

ZWrite Off
Blend One Zero
<<<<<<< HEAD
Pass
{

}
ENDCG
}
=======
Cull Back
ZTest LEqual
ZWrite On
LOD 200
CGPROGRAM
#pragma target 3.0
#pragma surface surf Standard vertex:vert
#pragma glsl
#pragma debug
sampler2D Texture_a6eb1bfb_6ea7_4e0b_bfc1_c9e0ed434f76_Uniform;
sampler2D Texture_df5248d2_ffaf_4f62_9322_5575ac4818d0_Uniform;
float4 Color_11e7c6f6_9284_4d76_bfbf_3a1eced790b6_Uniform;
float2 Remap_c59de931_587b_4bd5_8442_b14cce0a0208_InMinMax;
float2 Remap_c59de931_587b_4bd5_8442_b14cce0a0208_OutMinMax;
float Combine_6e51fc05_a66b_4b70_8024_a68288e35b69_Input3;
float Combine_6e51fc05_a66b_4b70_8024_a68288e35b69_Input4;
float4 Multiply_83fd2441_1d6a_4f28_8ee0_65576c6ed07f_Input2;
float Clamp_15b0b059_9349_429e_b7b8_47acccc69d45_Input2;
float Clamp_15b0b059_9349_429e_b7b8_47acccc69d45_Input3;
inline float unity_remap_float (float arg1, float2 arg2, float2 arg3)
{
return arg3.x + (arg1 - arg2.x) * (arg3.y - arg3.x) / (arg2.y - arg2.x);
}
inline float4 unity_multiply_float (float4 arg1, float4 arg2)
{
return arg1 * arg2;
}
inline float unity_noise_randomValue (float2 uv)
{
return frac(sin(dot(uv, float2(12.9898, 78.233)))*43758.5453);
}
inline float unity_noise_interpolate (float a, float b, float t)
{
return (1.0-t)*a + (t*b);
}
inline float unity_valueNoise (float2 uv)
{
float2 i = floor(uv);
float2 f = frac(uv);
f = f * f * (3.0 - 2.0 * f);
uv = abs(frac(uv) - 0.5);
float2 c0 = i + float2(0.0, 0.0);
float2 c1 = i + float2(1.0, 0.0);
float2 c2 = i + float2(0.0, 1.0);
float2 c3 = i + float2(1.0, 1.0);
float r0 = unity_noise_randomValue(c0);
float r1 = unity_noise_randomValue(c1);
float r2 = unity_noise_randomValue(c2);
float r3 = unity_noise_randomValue(c3);
float bottomOfGrid = unity_noise_interpolate(r0, r1, f.x);
float topOfGrid = unity_noise_interpolate(r2, r3, f.x);
float t = unity_noise_interpolate(bottomOfGrid, topOfGrid, f.y);
return t;
}
inline float unity_noise_float (float2 uv)
{
float t = 0.0;
for(int i = 0; i < 3; i++)
{
float freq = pow(2.0, float(i));
float amp = pow(0.5, float(3-i));
t += unity_valueNoise(float2(uv.x/freq, uv.y/freq))*amp;
}
return t;
}
inline float unity_add_float (float arg1, float arg2)
{
return arg1 + arg2;
}
struct Input
{
float4 color : COLOR;
half4 meshUV0;
float3 worldPos;
};
void vert (inout appdata_full v, out Input o)
{
UNITY_INITIALIZE_OUTPUT(Input,o);
o.meshUV0 = v.texcoord;
}
void surf (Input IN, inout SurfaceOutputStandard o)
{
half4 uv0 = IN.meshUV0;
float3 worldPosition = IN.worldPos;
float4 Texture_a6eb1bfb_6ea7_4e0b_bfc1_c9e0ed434f76 = tex2D (Texture_a6eb1bfb_6ea7_4e0b_bfc1_c9e0ed434f76_Uniform, uv0.xy);
float4 Texture_df5248d2_ffaf_4f62_9322_5575ac4818d0 = float4(UnpackNormal(tex2D (Texture_df5248d2_ffaf_4f62_9322_5575ac4818d0_Uniform, uv0.xy)), 0);
float4 Split_71e36b70_b3f9_4f61_afdb_1c781b2fcd97 = float4(worldPosition, 1.0);
float Remap_c59de931_587b_4bd5_8442_b14cce0a0208_Output = unity_remap_float (Split_71e36b70_b3f9_4f61_afdb_1c781b2fcd97.g, Remap_c59de931_587b_4bd5_8442_b14cce0a0208_InMinMax, Remap_c59de931_587b_4bd5_8442_b14cce0a0208_OutMinMax);
float4 Combine_6e51fc05_a66b_4b70_8024_a68288e35b69_Output = float4(Split_71e36b70_b3f9_4f61_afdb_1c781b2fcd97.r,Split_71e36b70_b3f9_4f61_afdb_1c781b2fcd97.b,0.0, 0.0);
float4 Multiply_83fd2441_1d6a_4f28_8ee0_65576c6ed07f_Output = unity_multiply_float (Combine_6e51fc05_a66b_4b70_8024_a68288e35b69_Output, Multiply_83fd2441_1d6a_4f28_8ee0_65576c6ed07f_Input2);
float Noise_56e06f3e_5014_4678_b1bf_2c92a67f4952_Output = unity_noise_float (Multiply_83fd2441_1d6a_4f28_8ee0_65576c6ed07f_Output);
float Add_90f8adc1_246d_42c3_86fb_812d9895dd2b_Output = unity_add_float (Remap_c59de931_587b_4bd5_8442_b14cce0a0208_Output, Noise_56e06f3e_5014_4678_b1bf_2c92a67f4952_Output);
float Clamp_15b0b059_9349_429e_b7b8_47acccc69d45_Output = clamp (Add_90f8adc1_246d_42c3_86fb_812d9895dd2b_Output, Clamp_15b0b059_9349_429e_b7b8_47acccc69d45_Input2, Clamp_15b0b059_9349_429e_b7b8_47acccc69d45_Input3);
float4 Multiply_48befeb5_6a8f_4ad2_a0bc_86af5b21d5c4_Output = unity_multiply_float (Color_11e7c6f6_9284_4d76_bfbf_3a1eced790b6_Uniform, Clamp_15b0b059_9349_429e_b7b8_47acccc69d45_Output);
o.Albedo = Texture_a6eb1bfb_6ea7_4e0b_bfc1_c9e0ed434f76;
o.Normal = Texture_df5248d2_ffaf_4f62_9322_5575ac4818d0;
o.Normal += 1e-6;
o.Emission = Multiply_48befeb5_6a8f_4ad2_a0bc_86af5b21d5c4_Output;
>>>>>>> 82dce9042a3bb161933bb4ee1fa5fa11724776d6
}
Fallback Off
}

2
MaterialGraphProject/Assets/Matt/Examples/Anisotropy.ShaderGraph
文件差异内容过多而无法显示
查看文件

9
MaterialGraphProject/Assets/Matt/Examples/Anisotropy.mat


m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: Anisotropy
m_Shader: {fileID: 4800000, guid: 9ab5e16c2083a4fe689209a8c1ae425e, type: 3}
m_Shader: {fileID: 4800000, guid: 01a19a2c08481994c87ec502a371225e, type: 3}
m_ShaderKeywords:
m_LightmapFlags: 0
m_EnableInstancingVariants: 0

m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- Texture_25f557fd_e8c0_4423_81b1_854877e54145_Uniform:
m_Texture: {fileID: 2800000, guid: f147ecc73752dd84c862347627c2506c, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- Texture_3db1140f_b814_4ba5_a49c_d40499367921_Uniform:
m_Texture: {fileID: 2800000, guid: cbf25f5368b2350408963109a1c8f22d, type: 3}
m_Scale: {x: 1, y: 1}

m_Offset: {x: 0, y: 0}
m_Floats:
- Vector1_3c037cd0_a4ae_48b0_8e8c_e1507ff6f738_Uniform: 1
- Vector1_5c761f75_773e_42ed_b242_72e6b25acebd_Uniform: 0.896
- Vector1_8272d735_22ca_40c5_a082_1c40f63ad50b_Uniform: 0.415
- Vector1_91e780ac_52c0_4e9a_bd0e_974f5805854d_Uniform: 0.546
- Vector1_da8ece50_8bc4_4e14_b77a_24dfc74c32da_Uniform: 0.817
- _BumpScale: 1
- _Cutoff: 0.5

1
MaterialGraphProject/Assets/NewNodes/WIP/AACheckerBoardNode.cs


};
}
}
public ShaderGlobal[] globals { get { return new ShaderGlobal[] { }; } }
public string hlsl
{

138
MaterialGraphProject/Assets/NewNodes/WIP/AnyNode.cs


namespace UnityEngine.MaterialGraph
{
public enum ShaderGlobal
{
UV0,
UV1,
UV2,
UV3,
WorldSpaceNormal,
WorldSpaceBitangent,
WorldSpaceTangent,
WorldSpacePosition,
WorldSpaceViewDirection,
TangentSpaceViewDirection,
ScreenPosition,
VertexColor,
}
[Serializable]
public class AnyNodeSlot
{

string name { get; }
AnyNodeProperty[] properties { get; }
AnyNodeSlot[] outputs { get; }
ShaderGlobal[] globals { get; }
string hlsl { get; }
}

[SerializeField]
protected AnyNodeSlot[] m_outputSlots;
[SerializeField]
protected ShaderGlobal[] m_globals;
public IEnumerable<AnyNodeProperty> properties
{

AnyNodeBase
, IGeneratesBodyCode
, IGeneratesFunction
// , IMayRequireMeshUV
// , IMayRequireNormal // TODO
// , IMayRequireTangent
// , IMayRequireBitangent
// , IMayRequireScreenPosition
// , IMayRequireViewDirection
// , IMayRequireWorldPosition
// , IMayRequireVertexColor
, IMayRequireViewDirectionTangentSpace
/* , IMayRequireMeshUV
, IOnAssetEnabled // TODO
, IMayRequireNormal // TODO
, IMayRequireTangent
, IMayRequireBitangent
, IMayRequireScreenPosition
, IMayRequireViewDirection
, IMayRequireWorldPosition
, IMayRequireVertexColor
, IMayRequireViewDirectionTangentSpace
*/
where DEFINITION : IAnyNodeDefinition, new()
{
private DEFINITION m_definition;

m_outputSlots = m_definition.outputs;
m_globals = m_definition.globals;
UpdateNodeAfterDeserialization();
}

// now that we've copied the old data into the new properties, start using the new properties
m_properties = new_properties;
m_outputSlots = new_outputs;
m_globals = m_definition.globals;
List<int> validSlotIds = new List<int>();

}
}
public bool RequiresViewDirectionTangentSpace()
{
return (Array.FindIndex(m_globals, x => x == ShaderGlobal.TangentSpaceViewDirection) >= 0);
}
// properties.AddRange(subGraph.GetPreviewProperties()); // ???
switch (p.propertyType)
{
case PropertyType.Float:

return "unity_any_" + node_name + "_" + precision;
}
private string GetShaderGlobalName(ShaderGlobal g)
{
string globalname = null;
switch (g)
{
case ShaderGlobal.UV0:
globalname = ShaderGeneratorNames.GetUVName(UVChannel.uv0);
break;
case ShaderGlobal.UV1:
globalname = ShaderGeneratorNames.GetUVName(UVChannel.uv1);
break;
case ShaderGlobal.UV2:
globalname = ShaderGeneratorNames.GetUVName(UVChannel.uv2);
break;
case ShaderGlobal.UV3:
globalname = ShaderGeneratorNames.GetUVName(UVChannel.uv3);
break;
case ShaderGlobal.WorldSpaceNormal:
globalname = ShaderGeneratorNames.WorldSpaceNormal;
break;
case ShaderGlobal.WorldSpaceBitangent:
globalname = ShaderGeneratorNames.WorldSpaceBitangent;
break;
case ShaderGlobal.WorldSpaceTangent:
globalname = ShaderGeneratorNames.WorldSpaceTangent;
break;
case ShaderGlobal.WorldSpacePosition:
globalname = ShaderGeneratorNames.WorldSpacePosition;
break;
case ShaderGlobal.WorldSpaceViewDirection:
globalname = ShaderGeneratorNames.WorldSpaceViewDirection;
break;
case ShaderGlobal.TangentSpaceViewDirection:
globalname = ShaderGeneratorNames.TangentSpaceViewDirection;
break;
case ShaderGlobal.ScreenPosition:
globalname = ShaderGeneratorNames.ScreenPosition;
break;
case ShaderGlobal.VertexColor:
globalname = ShaderGeneratorNames.VertexColor;
break;
}
return globalname;
}
private string GetShaderGlobalTypeDecl(ShaderGlobal g)
{
string typeDecl = null;
switch (g)
{
case ShaderGlobal.UV0:
case ShaderGlobal.UV1:
case ShaderGlobal.UV2:
case ShaderGlobal.UV3:
typeDecl = "float4";
break;
case ShaderGlobal.WorldSpaceNormal:
case ShaderGlobal.WorldSpaceBitangent:
case ShaderGlobal.WorldSpaceTangent:
case ShaderGlobal.WorldSpacePosition:
case ShaderGlobal.WorldSpaceViewDirection:
case ShaderGlobal.TangentSpaceViewDirection:
typeDecl = "float3";
break;
case ShaderGlobal.ScreenPosition:
typeDecl = "float2";
break;
case ShaderGlobal.VertexColor:
typeDecl = "float4";
break;
}
return typeDecl;
}
protected virtual string GetFunctionPrototype()
{
string result = "inline void " + GetFunctionName() + "(";

}
// then 'globals'
// TODO
foreach (ShaderGlobal g in m_globals)
{
result += "in " + GetShaderGlobalTypeDecl(g) + " " + GetShaderGlobalName(g) + ", ";
}
// then outputs
foreach (AnyNodeSlot s in m_outputSlots)

inputVariableName = p.name;
}
outputString.AddShaderChunk((first ? "" : ",") + inputVariableName, false);
first = false;
}
outputString.AddShaderChunk("// global parameters", false);
foreach (ShaderGlobal g in m_globals)
{
outputString.AddShaderChunk((first ? "" : ",") + GetShaderGlobalName(g), false);
first = false;
}

2
MaterialGraphProject/Assets/NewNodes/WIP/POMNode.cs


}
protected virtual MaterialSlot GetTextureSlot()
{
return new MaterialSlot(TextureSlotId, GetTextureSlotName(), kTextureSlotShaderName, SlotType.Input, SlotValueType.Texture2D, Vector4.zero);
return new MaterialSlot(TextureSlotId, GetTextureSlotName(), kTextureSlotShaderName, SlotType.Input, SlotValueType.Sampler2D, Vector4.zero);
}
protected virtual MaterialSlot GetOutputSlot()

1
MaterialGraphProject/Assets/NewNodes/WIP/RadialShearNode.cs


};
}
}
public ShaderGlobal[] globals { get { return new ShaderGlobal[] { }; } }
public string hlsl
{

2
MaterialGraphProject/Assets/NewNodes/WIP/ScaleOffsetNode.cs


}
}
public ShaderGlobal[] globals { get { return new ShaderGlobal[] { }; } }
public string hlsl
{
get

2
MaterialGraphProject/Assets/NewNodes/WIP/SphereWarpNode.cs


}
}
public ShaderGlobal[] globals { get { return new ShaderGlobal[]{ }; } }
public string hlsl
{
get

2
MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/Presenters/MaterialGraphPresenter.cs


typeMapper[typeof(GradientNode)] = typeof(GradientNodePresenter);
typeMapper[typeof(ScatterNode)] = typeof(ScatterNodePresenter);
typeMapper[typeof(TextureNode)] = typeof(TextureNodePresenter);
typeMapper[typeof(SamplerAssetNode)] = typeof(SamplerAssetNodePresenter);
typeMapper[typeof(TextureSamplerNode)] = typeof(TextureSamplerNodePresenter);
typeMapper[typeof(TextureAssetNode)] = typeof(TextureAssetNodePresenter);
typeMapper[typeof(TextureLODNode)] = typeof(TextureLODNodePresenter);

typeMapper[typeof(ScaleOffsetNode)] = typeof(AnyNodePresenter); // anything derived from AnyNode should use the AnyNodePresenter
typeMapper[typeof(RadialShearNode)] = typeof(AnyNodePresenter); // anything derived from AnyNode should use the AnyNodePresenter
typeMapper[typeof(SphereWarpNode)] = typeof(AnyNodePresenter); // anything derived from AnyNode should use the AnyNodePresenter
typeMapper[typeof(SphericalIndentationNode)] = typeof(AnyNodePresenter); // anything derived from AnyNode should use the AnyNodePresenter
typeMapper[typeof(AACheckerboardNode)] = typeof(AnyNodePresenter); // anything derived from AnyNode should use the AnyNodePresenter
typeMapper[typeof(SubGraphNode)] = typeof(SubgraphNodePresenter);
typeMapper[typeof(RemapMasterNode)] = typeof(RemapMasterNodePresenter);

2
MaterialGraphProject/Assets/UnityShaderEditor/Runtime/Nodes/AbstractMaterialNode.cs


return ConcreteSlotValueType.Matrix4;
case SlotValueType.SamplerState:
return ConcreteSlotValueType.SamplerState;
case SlotValueType.Sampler2D:
return ConcreteSlotValueType.Sampler2D;
}
return ConcreteSlotValueType.Error;
}

2
MaterialGraphProject/Assets/UnityShaderEditor/Runtime/Nodes/Input/SceneData/ScreenPosNode.cs


returnString = "float3(" + ShaderGeneratorNames.ScreenPosition + ".xy / " + ShaderGeneratorNames.ScreenPosition + ".w, 0)";
break;
}
return ShaderGeneratorNames.ScreenPosition;
return returnString;
}
public bool RequiresScreenPosition()

26
MaterialGraphProject/Assets/Vlad/TextureAssetNode.cs


[Title("Input/Texture/Texture Asset")]
public class TextureAssetNode : PropertyNode
{
protected const string outputTexture2D_name = "Texture2D";
protected const string outputSampler2D_name = "Sampler2D";
protected const string textureName = "Texture";
public const int outputTexture2D_id = 0;
public const int outputSampler2D_id = 1;
public const int textureID = 0;
[SerializeField]
private string m_SerializedTexture;

public sealed override void UpdateNodeAfterDeserialization()
{
AddSlot(new MaterialSlot(outputTexture2D_id, outputTexture2D_name, outputTexture2D_name, SlotType.Output, SlotValueType.Texture2D, Vector4.zero, false));
AddSlot(new MaterialSlot(outputSampler2D_id, outputSampler2D_name, outputSampler2D_name, SlotType.Output, SlotValueType.Sampler2D, Vector4.zero, false));
AddSlot(new MaterialSlot(textureID, textureName, textureName, SlotType.Output, SlotValueType.Texture2D, Vector4.zero, false));
get { return new[] { outputTexture2D_id, outputSampler2D_id }; }
get { return new[] { textureID }; }
}
public override void CollectPreviewMaterialProperties(List<PreviewProperty> properties)

: TexturePropertyChunk.ModifiableState.NonModifiable));
}
public override void GeneratePropertyUsages(ShaderGenerator visitor, GenerationMode generationMode)
{
var slotTexture2D = FindOutputSlot<MaterialSlot>(0);

visitor.AddShaderChunk("#endif", true);
}
}
var slotSampler2D = FindOutputSlot<MaterialSlot>(1);
if (slotSampler2D != null)
{
var edgesSampler2D = owner.GetEdges(slotSampler2D.slotReference).ToList();
if (edgesSampler2D.Count > 0)
{
visitor.AddShaderChunk("sampler2D " + propertyName + ";", true);
}
}
}

m_Texture = defaultTexture
};
}
public override PropertyType propertyType { get { return PropertyType.Texture; } }

2
MaterialGraphProject/Assets/_MingWai/GeneratedTextureDemo/0-UnityLogo-Mat.mat


m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Texture: {fileID: 2800000, guid: 8080b3773b9568a46bcaaf9b18512990, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats: []

189
MaterialGraphProject/Assets/Andre/LavaFlowMap.shader


Shader "Custom/LavaFlowMap"
{
Properties
{
Texture_f6eb7ab6_0df6_4d1f_a833_847f9eefa1ce_Uniform("Texture", 2D) = "white" {}
Vector1_48a064e9_29c4_4cdd_8bf7_34902bb50605_Uniform("Vector1", Float) = 1
Texture_aa489395_d5b1_4bce_a08c_71ce4329894d_Uniform("albedo2", 2D) = "white" {}
Texture_8304e17f_0ca3_45b8_9081_4e083e4ffba7_Uniform("albedo", 2D) = "white" {}
Texture_73d7755c_9da7_46d2_90c6_35c2a880d380_Uniform("Normal2", 2D) = "bump" {}
Texture_d6d1ed65_5575_444c_8f92_38740ace2353_Uniform("Normal", 2D) = "bump" {}
[HDR]Color_0cf876a7_4590_4973_82b7_3f878b008b3c_Uniform("LavaColor1", Color) = (2,1.365517,0,0)
[HDR]Color_d1ecd429_6e84_47b1_903b_60f454b7d326_Uniform("LavaColor2", Color) = (0,0,0,0)
Texture_c384b973_02cf_4076_96d9_302f320a2dd5_Uniform("height1", 2D) = "white" {}
Texture_3cc862ff_e5c3_40c2_a0f2_895da84195ea_Uniform("height", 2D) = "white" {}
Vector1_2fa9bd83_0823_4530_9787_f0fab2f47430_Uniform("LavaAmount", Range(0, 8)) = 0.2
Texture_ead3f7f8_56e5_41f9_8217_555fb21e0536_Uniform("roughness1", 2D) = "white" {}
Texture_9dcd98df_78a5_4ad3_83dd_e3c00c88f898_Uniform("roughness", 2D) = "white" {}
}
SubShader
{
Tags
{
"RenderType"="Opaque"
"Queue"="Geometry"
}
Blend One Zero
Cull Back
ZTest LEqual
ZWrite On
LOD 200
CGPROGRAM
#pragma target 3.0
#pragma surface surf Standard vertex:vert
#pragma glsl
#pragma debug
sampler2D Texture_f6eb7ab6_0df6_4d1f_a833_847f9eefa1ce_Uniform;
float Vector1_48a064e9_29c4_4cdd_8bf7_34902bb50605_Uniform;
sampler2D Texture_aa489395_d5b1_4bce_a08c_71ce4329894d_Uniform;
sampler2D Texture_8304e17f_0ca3_45b8_9081_4e083e4ffba7_Uniform;
sampler2D Texture_73d7755c_9da7_46d2_90c6_35c2a880d380_Uniform;
sampler2D Texture_d6d1ed65_5575_444c_8f92_38740ace2353_Uniform;
float4 Color_0cf876a7_4590_4973_82b7_3f878b008b3c_Uniform;
float4 Color_d1ecd429_6e84_47b1_903b_60f454b7d326_Uniform;
sampler2D Texture_c384b973_02cf_4076_96d9_302f320a2dd5_Uniform;
sampler2D Texture_3cc862ff_e5c3_40c2_a0f2_895da84195ea_Uniform;
float Vector1_2fa9bd83_0823_4530_9787_f0fab2f47430_Uniform;
sampler2D Texture_ead3f7f8_56e5_41f9_8217_555fb21e0536_Uniform;
sampler2D Texture_9dcd98df_78a5_4ad3_83dd_e3c00c88f898_Uniform;
inline float4 unity_multiply_float (float4 arg1, float4 arg2)
{
return arg1 * arg2;
}
inline float4 unity_remap_float (float4 arg1, float2 arg2, float2 arg3)
{
return arg3.x + (arg1 - arg2.x) * (arg3.y - arg3.x) / (arg2.y - arg2.x);
}
inline float unity_multiply_float (float arg1, float arg2)
{
return arg1 * arg2;
}
inline float4 unity_add_float (float4 arg1, float4 arg2)
{
return arg1 + arg2;
}
inline float unity_add_float (float arg1, float arg2)
{
return arg1 + arg2;
}
inline float unity_subtract_float (float arg1, float arg2)
{
return arg1 - arg2;
}
inline float unity_div_float (float arg1, float arg2)
{
return arg1 / arg2;
}
inline float3 unity_multiply_float (float3 arg1, float3 arg2)
{
return arg1 * arg2;
}
inline float unity_fresnel_float (float3 arg1, float3 arg2)
{
return (1.0 - dot (normalize (arg1), normalize (arg2)));
}
inline float unity_remap_float (float arg1, float2 arg2, float2 arg3)
{
return arg3.x + (arg1 - arg2.x) * (arg3.y - arg3.x) / (arg2.y - arg2.x);
}
inline float4 unity_oneminus_float (float4 arg1)
{
return arg1 * -1 + 1;
}
struct Input
{
float4 color : COLOR;
half4 meshUV0;
float3 worldViewDir;
float3 worldNormal;
INTERNAL_DATA
};
void vert (inout appdata_full v, out Input o)
{
UNITY_INITIALIZE_OUTPUT(Input,o);
o.meshUV0 = v.texcoord;
}
void surf (Input IN, inout SurfaceOutputStandard o)
{
half4 uv0 = IN.meshUV0;
float3 worldSpaceViewDirection = IN.worldViewDir;
float3 worldSpaceNormal = normalize(IN.worldNormal);
float4 vertexColor = IN.color;
float4 UV_f421b42f_c4ee_429e_b708_74f20b521d0c_UV = uv0;
float4 Multiply_93b72a87_aa02_4d7f_9532_2ce43a75a0cb_Output = unity_multiply_float (UV_f421b42f_c4ee_429e_b708_74f20b521d0c_UV, float4 (5,5,0,0));
float4 Texture_f6eb7ab6_0df6_4d1f_a833_847f9eefa1ce = tex2D (Texture_f6eb7ab6_0df6_4d1f_a833_847f9eefa1ce_Uniform, uv0.xy);
float4 Remap_aa8e6b93_bde3_46fc_a9bf_2aa8880b8f30_Output = unity_remap_float (Texture_f6eb7ab6_0df6_4d1f_a833_847f9eefa1ce, float2 (0,1), float2 (-0.5,0.5));
float Vector1_6c65527e_4c6d_48e7_bf72_8c3a97b082f5_Uniform = 0.5;
float Multiply_5fe876ca_d791_427b_a60a_c365e6ae4f53_Output = unity_multiply_float (Vector1_6c65527e_4c6d_48e7_bf72_8c3a97b082f5_Uniform, -1);
float4 Multiply_5ae7596c_dc8a_4b33_bf11_ddcabb17d929_Output = unity_multiply_float (Remap_aa8e6b93_bde3_46fc_a9bf_2aa8880b8f30_Output, Multiply_5fe876ca_d791_427b_a60a_c365e6ae4f53_Output);
float Multiply_5c580d9b_a1d8_4816_8b3d_a5b541a5334b_Output = unity_multiply_float (_Time.x, Vector1_48a064e9_29c4_4cdd_8bf7_34902bb50605_Uniform);
float Fraction_15f91423_9b19_4442_81b7_9ed97ebc72ea_Output = frac (Multiply_5c580d9b_a1d8_4816_8b3d_a5b541a5334b_Output);
float4 Multiply_63fe984c_5505_4dd9_b1fd_64e3fbdac2b0_Output = unity_multiply_float (Multiply_5ae7596c_dc8a_4b33_bf11_ddcabb17d929_Output, Fraction_15f91423_9b19_4442_81b7_9ed97ebc72ea_Output);
float4 Add_a918ad87_b512_4228_a79e_9fed664eb31f_Output = unity_add_float (Multiply_93b72a87_aa02_4d7f_9532_2ce43a75a0cb_Output, Multiply_63fe984c_5505_4dd9_b1fd_64e3fbdac2b0_Output);
float4 Texture_aa489395_d5b1_4bce_a08c_71ce4329894d = tex2D (Texture_aa489395_d5b1_4bce_a08c_71ce4329894d_Uniform, (Add_a918ad87_b512_4228_a79e_9fed664eb31f_Output.xy));
float Vector1_f869c62d_74bf_4d98_8baf_297a55e8befb_Uniform = 0.5;
float Add_375a7a99_064f_4492_9b30_d700e08720e0_Output = unity_add_float (Multiply_5c580d9b_a1d8_4816_8b3d_a5b541a5334b_Output, Vector1_f869c62d_74bf_4d98_8baf_297a55e8befb_Uniform);
float Fraction_cd46bddb_f4c6_4d60_988c_74fac46174af_Output = frac (Add_375a7a99_064f_4492_9b30_d700e08720e0_Output);
float4 Multiply_ef182c2b_4e87_43f6_9362_549430c80ccf_Output = unity_multiply_float (Multiply_5ae7596c_dc8a_4b33_bf11_ddcabb17d929_Output, Fraction_cd46bddb_f4c6_4d60_988c_74fac46174af_Output);
float4 Add_f68bff29_c2ff_46d2_a4ab_43258df5a4dc_Output = unity_add_float (Multiply_93b72a87_aa02_4d7f_9532_2ce43a75a0cb_Output, Multiply_ef182c2b_4e87_43f6_9362_549430c80ccf_Output);
float4 Texture_8304e17f_0ca3_45b8_9081_4e083e4ffba7 = tex2D (Texture_8304e17f_0ca3_45b8_9081_4e083e4ffba7_Uniform, (Add_f68bff29_c2ff_46d2_a4ab_43258df5a4dc_Output.xy));
float Subtract_4acb9ef9_e7c7_4c66_8511_4b34c15bc1a8_Output = unity_subtract_float (0.5, Fraction_15f91423_9b19_4442_81b7_9ed97ebc72ea_Output);
float Divide_5514c159_af5d_493a_8b87_5c2cc7d20b20_Output = unity_div_float (Subtract_4acb9ef9_e7c7_4c66_8511_4b34c15bc1a8_Output, 0.5);
float Absolute_4a921b1d_1662_4268_9fcb_85b03bac472c_Output = abs (Divide_5514c159_af5d_493a_8b87_5c2cc7d20b20_Output);
float4 Lerp_95004cc7_3bfc_4e0a_ac12_0d8b65401649_Output = lerp (Texture_aa489395_d5b1_4bce_a08c_71ce4329894d, Texture_8304e17f_0ca3_45b8_9081_4e083e4ffba7, Absolute_4a921b1d_1662_4268_9fcb_85b03bac472c_Output);
float4 Texture_73d7755c_9da7_46d2_90c6_35c2a880d380 = float4(UnpackNormal(tex2D (Texture_73d7755c_9da7_46d2_90c6_35c2a880d380_Uniform, (Add_a918ad87_b512_4228_a79e_9fed664eb31f_Output.xy))), 0);
float4 Texture_d6d1ed65_5575_444c_8f92_38740ace2353 = float4(UnpackNormal(tex2D (Texture_d6d1ed65_5575_444c_8f92_38740ace2353_Uniform, (Add_f68bff29_c2ff_46d2_a4ab_43258df5a4dc_Output.xy))), 0);
float4 Lerp_d1772cb2_840c_40e0_a6bd_22bfffc1278b_Output = lerp (Texture_73d7755c_9da7_46d2_90c6_35c2a880d380, Texture_d6d1ed65_5575_444c_8f92_38740ace2353, Absolute_4a921b1d_1662_4268_9fcb_85b03bac472c_Output);
float3 Vector3_894929cf_cdbf_4a9f_8bfb_78efb02ec5bf_Uniform = float3 (0.5, 0.5, 1);
float3 Multiply_a87468aa_7978_4ec7_ada1_872f58bfbf06_Output = unity_multiply_float (Lerp_d1772cb2_840c_40e0_a6bd_22bfffc1278b_Output, Vector3_894929cf_cdbf_4a9f_8bfb_78efb02ec5bf_Uniform);
float Fresnel_ff56ea0d_187e_4d44_9aba_20a2636d6e20_Output = unity_fresnel_float (worldSpaceViewDirection, worldSpaceNormal);
float4 Lerp_39312fa9_94de_4ace_9379_60e45e762b77_Output = lerp (Color_0cf876a7_4590_4973_82b7_3f878b008b3c_Uniform, Color_d1ecd429_6e84_47b1_903b_60f454b7d326_Uniform, Fresnel_ff56ea0d_187e_4d44_9aba_20a2636d6e20_Output);
float4 Remap_df9ad0c1_bc7d_4218_ba2f_4b54dc89e064_Output = unity_remap_float (vertexColor, float2 (0,1), float2 (0.8,0.25));
float4 Split_7877a754_c5e4_44e2_8b95_1faeef76c45c = float4(Remap_df9ad0c1_bc7d_4218_ba2f_4b54dc89e064_Output);
float Add_1a3abf95_b10a_4c93_8c80_0829ccd86807_Output = unity_add_float (Split_7877a754_c5e4_44e2_8b95_1faeef76c45c.r, Split_7877a754_c5e4_44e2_8b95_1faeef76c45c.g);
float4 Texture_c384b973_02cf_4076_96d9_302f320a2dd5 = tex2D (Texture_c384b973_02cf_4076_96d9_302f320a2dd5_Uniform, (Add_a918ad87_b512_4228_a79e_9fed664eb31f_Output.xy));
float4 Texture_3cc862ff_e5c3_40c2_a0f2_895da84195ea = tex2D (Texture_3cc862ff_e5c3_40c2_a0f2_895da84195ea_Uniform, (Add_f68bff29_c2ff_46d2_a4ab_43258df5a4dc_Output.xy));
float Lerp_e4ffbd80_7aeb_4ffd_959e_b42c0fddb434_Output = lerp (Texture_c384b973_02cf_4076_96d9_302f320a2dd5.r, Texture_3cc862ff_e5c3_40c2_a0f2_895da84195ea.r, Absolute_4a921b1d_1662_4268_9fcb_85b03bac472c_Output);
float Add_4e09ff76_d920_4322_8317_8f6fa3108ddd_Output = unity_add_float (Add_1a3abf95_b10a_4c93_8c80_0829ccd86807_Output, Lerp_e4ffbd80_7aeb_4ffd_959e_b42c0fddb434_Output);
float Vector1_db502ab1_b257_430a_8eac_4c2fb63f5cf1_Uniform = 0;
float4 Combine_c3f75c44_cd2d_4870_9d30_77d318dabf43_Output = float4(Vector1_db502ab1_b257_430a_8eac_4c2fb63f5cf1_Uniform,Vector1_2fa9bd83_0823_4530_9787_f0fab2f47430_Uniform,0.0, 0.0);
float Remap_278d7df3_8782_4bb9_b51e_211bc43b2f8c_Output = unity_remap_float (Add_4e09ff76_d920_4322_8317_8f6fa3108ddd_Output, Combine_c3f75c44_cd2d_4870_9d30_77d318dabf43_Output, float2 (3,0));
float Clamp_4d130bfe_d56f_4a72_896b_f91a292682e0_Output = clamp (Remap_278d7df3_8782_4bb9_b51e_211bc43b2f8c_Output, 0, 1);
float4 Combine_b7ee0905_6d7c_437c_bb78_9f4059c9073c_Output = float4(Clamp_4d130bfe_d56f_4a72_896b_f91a292682e0_Output,Clamp_4d130bfe_d56f_4a72_896b_f91a292682e0_Output,Clamp_4d130bfe_d56f_4a72_896b_f91a292682e0_Output,0.0);
float4 Multiply_f1276058_6b35_46b7_bd96_3b0e94ea899e_Output = unity_multiply_float (Lerp_39312fa9_94de_4ace_9379_60e45e762b77_Output, Combine_b7ee0905_6d7c_437c_bb78_9f4059c9073c_Output);
float4 Texture_ead3f7f8_56e5_41f9_8217_555fb21e0536 = tex2D (Texture_ead3f7f8_56e5_41f9_8217_555fb21e0536_Uniform, (Add_a918ad87_b512_4228_a79e_9fed664eb31f_Output.xy));
float4 Texture_9dcd98df_78a5_4ad3_83dd_e3c00c88f898 = tex2D (Texture_9dcd98df_78a5_4ad3_83dd_e3c00c88f898_Uniform, (Add_f68bff29_c2ff_46d2_a4ab_43258df5a4dc_Output.xy));
float4 Lerp_fe1290fe_9261_45ed_9be5_b48e9e797683_Output = lerp (Texture_ead3f7f8_56e5_41f9_8217_555fb21e0536, Texture_9dcd98df_78a5_4ad3_83dd_e3c00c88f898, Absolute_4a921b1d_1662_4268_9fcb_85b03bac472c_Output);
float4 OneMinus_66f9602e_9e86_48b0_9a92_559c310b6958_Output = unity_oneminus_float (Lerp_fe1290fe_9261_45ed_9be5_b48e9e797683_Output);
o.Albedo = Lerp_95004cc7_3bfc_4e0a_ac12_0d8b65401649_Output;
o.Normal = Multiply_a87468aa_7978_4ec7_ada1_872f58bfbf06_Output;
o.Normal += 1e-6;
o.Emission = Multiply_f1276058_6b35_46b7_bd96_3b0e94ea899e_Output;
o.Smoothness = OneMinus_66f9602e_9e86_48b0_9a92_559c310b6958_Output;
}
ENDCG
}
FallBack "Diffuse"
CustomEditor "LegacyIlluminShaderGUI"
}

28
MaterialGraphProject/Assets/Andre/LavaFlowMap.shader.meta


fileFormatVersion: 2
guid: cb267e18a2bfb48199dd718e33eb9f9b
timeCreated: 1495756524
licenseType: Pro
ShaderImporter:
defaultTextures:
- Texture_f6eb7ab6_0df6_4d1f_a833_847f9eefa1ce_Uniform: {fileID: 2800000, guid: 8a17a00c2a071472cb92f6911bb7be11,
type: 3}
- Texture_aa489395_d5b1_4bce_a08c_71ce4329894d_Uniform: {fileID: 2800000, guid: 330f42016073a97418a4aae5517e32c8,
type: 3}
- Texture_8304e17f_0ca3_45b8_9081_4e083e4ffba7_Uniform: {fileID: 2800000, guid: 330f42016073a97418a4aae5517e32c8,
type: 3}
- Texture_73d7755c_9da7_46d2_90c6_35c2a880d380_Uniform: {fileID: 2800000, guid: 5a5e07ee958edbd468227e1d9ac4726a,
type: 3}
- Texture_d6d1ed65_5575_444c_8f92_38740ace2353_Uniform: {fileID: 2800000, guid: 5a5e07ee958edbd468227e1d9ac4726a,
type: 3}
- Texture_c384b973_02cf_4076_96d9_302f320a2dd5_Uniform: {fileID: 2800000, guid: a653bbc25cc7e4794829cf7b1184abcb,
type: 3}
- Texture_3cc862ff_e5c3_40c2_a0f2_895da84195ea_Uniform: {fileID: 2800000, guid: a653bbc25cc7e4794829cf7b1184abcb,
type: 3}
- Texture_ead3f7f8_56e5_41f9_8217_555fb21e0536_Uniform: {fileID: 2800000, guid: 9d64a9e7ca6864704ae6b8ca7afc9d85,
type: 3}
- Texture_9dcd98df_78a5_4ad3_83dd_e3c00c88f898_Uniform: {fileID: 2800000, guid: 9d64a9e7ca6864704ae6b8ca7afc9d85,
type: 3}
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:

134
MaterialGraphProject/Assets/Andre/LavaRock.shader


Shader "Custom/LavaRock"
{
Properties
{
Texture_a6eb1bfb_6ea7_4e0b_bfc1_c9e0ed434f76_Uniform("Albedo", 2D) = "white" {}
Texture_df5248d2_ffaf_4f62_9322_5575ac4818d0_Uniform("Normal", 2D) = "bump" {}
[HDR]Color_11e7c6f6_9284_4d76_bfbf_3a1eced790b6_Uniform("Color", Color) = (2,0.5379311,0,1)
}
SubShader
{
Tags
{
"RenderType"="Opaque"
"Queue"="Geometry"
}
Blend One Zero
Cull Back
ZTest LEqual
ZWrite On
LOD 200
CGPROGRAM
#pragma target 3.0
#pragma surface surf Standard vertex:vert
#pragma glsl
#pragma debug
sampler2D Texture_a6eb1bfb_6ea7_4e0b_bfc1_c9e0ed434f76_Uniform;
sampler2D Texture_df5248d2_ffaf_4f62_9322_5575ac4818d0_Uniform;
float4 Color_11e7c6f6_9284_4d76_bfbf_3a1eced790b6_Uniform;
inline float unity_remap_float (float arg1, float2 arg2, float2 arg3)
{
return arg3.x + (arg1 - arg2.x) * (arg3.y - arg3.x) / (arg2.y - arg2.x);
}
inline float4 unity_multiply_float (float4 arg1, float4 arg2)
{
return arg1 * arg2;
}
inline float unity_noise_randomValue (float2 uv)
{
return frac(sin(dot(uv, float2(12.9898, 78.233)))*43758.5453);
}
inline float unity_noise_interpolate (float a, float b, float t)
{
return (1.0-t)*a + (t*b);
}
inline float unity_valueNoise (float2 uv)
{
float2 i = floor(uv);
float2 f = frac(uv);
f = f * f * (3.0 - 2.0 * f);
uv = abs(frac(uv) - 0.5);
float2 c0 = i + float2(0.0, 0.0);
float2 c1 = i + float2(1.0, 0.0);
float2 c2 = i + float2(0.0, 1.0);
float2 c3 = i + float2(1.0, 1.0);
float r0 = unity_noise_randomValue(c0);
float r1 = unity_noise_randomValue(c1);
float r2 = unity_noise_randomValue(c2);
float r3 = unity_noise_randomValue(c3);
float bottomOfGrid = unity_noise_interpolate(r0, r1, f.x);
float topOfGrid = unity_noise_interpolate(r2, r3, f.x);
float t = unity_noise_interpolate(bottomOfGrid, topOfGrid, f.y);
return t;
}
inline float unity_noise_float (float2 uv)
{
float t = 0.0;
for(int i = 0; i < 3; i++)
{
float freq = pow(2.0, float(i));
float amp = pow(0.5, float(3-i));
t += unity_valueNoise(float2(uv.x/freq, uv.y/freq))*amp;
}
return t;
}
inline float unity_add_float (float arg1, float arg2)
{
return arg1 + arg2;
}
struct Input
{
float4 color : COLOR;
half4 meshUV0;
float3 worldPos;
};
void vert (inout appdata_full v, out Input o)
{
UNITY_INITIALIZE_OUTPUT(Input,o);
o.meshUV0 = v.texcoord;
}
void surf (Input IN, inout SurfaceOutputStandard o)
{
half4 uv0 = IN.meshUV0;
float3 worldPosition = IN.worldPos;
float4 Texture_a6eb1bfb_6ea7_4e0b_bfc1_c9e0ed434f76 = tex2D (Texture_a6eb1bfb_6ea7_4e0b_bfc1_c9e0ed434f76_Uniform, uv0.xy);
float4 Texture_df5248d2_ffaf_4f62_9322_5575ac4818d0 = float4(UnpackNormal(tex2D (Texture_df5248d2_ffaf_4f62_9322_5575ac4818d0_Uniform, uv0.xy)), 0);
float4 Split_71e36b70_b3f9_4f61_afdb_1c781b2fcd97 = float4(worldPosition, 1.0);
float Remap_c59de931_587b_4bd5_8442_b14cce0a0208_Output = unity_remap_float (Split_71e36b70_b3f9_4f61_afdb_1c781b2fcd97.g, float2 (-0.28,0.07), float2 (0.97,-0.61));
float4 Combine_6e51fc05_a66b_4b70_8024_a68288e35b69_Output = float4(Split_71e36b70_b3f9_4f61_afdb_1c781b2fcd97.r,Split_71e36b70_b3f9_4f61_afdb_1c781b2fcd97.b,0.0, 0.0);
float4 Multiply_83fd2441_1d6a_4f28_8ee0_65576c6ed07f_Output = unity_multiply_float (Combine_6e51fc05_a66b_4b70_8024_a68288e35b69_Output, float4 (100,100,0,0));
float Noise_56e06f3e_5014_4678_b1bf_2c92a67f4952_Output = unity_noise_float (Multiply_83fd2441_1d6a_4f28_8ee0_65576c6ed07f_Output);
float Add_90f8adc1_246d_42c3_86fb_812d9895dd2b_Output = unity_add_float (Remap_c59de931_587b_4bd5_8442_b14cce0a0208_Output, Noise_56e06f3e_5014_4678_b1bf_2c92a67f4952_Output);
float Clamp_15b0b059_9349_429e_b7b8_47acccc69d45_Output = clamp (Add_90f8adc1_246d_42c3_86fb_812d9895dd2b_Output, 0, 1);
float4 Multiply_48befeb5_6a8f_4ad2_a0bc_86af5b21d5c4_Output = unity_multiply_float (Color_11e7c6f6_9284_4d76_bfbf_3a1eced790b6_Uniform, Clamp_15b0b059_9349_429e_b7b8_47acccc69d45_Output);
o.Albedo = Texture_a6eb1bfb_6ea7_4e0b_bfc1_c9e0ed434f76;
o.Normal = Texture_df5248d2_ffaf_4f62_9322_5575ac4818d0;
o.Normal += 1e-6;
o.Emission = Multiply_48befeb5_6a8f_4ad2_a0bc_86af5b21d5c4_Output;
}
ENDCG
}
FallBack "Diffuse"
CustomEditor "LegacyIlluminShaderGUI"
}

14
MaterialGraphProject/Assets/Andre/LavaRock.shader.meta


fileFormatVersion: 2
guid: 9506a3443882e4345a7bf1a0e103ae3e
timeCreated: 1495757448
licenseType: Pro
ShaderImporter:
defaultTextures:
- Texture_a6eb1bfb_6ea7_4e0b_bfc1_c9e0ed434f76_Uniform: {fileID: 2800000, guid: 84462bdfeee9d694bbebf34e5f3faa74,
type: 3}
- Texture_df5248d2_ffaf_4f62_9322_5575ac4818d0_Uniform: {fileID: 2800000, guid: aa460a2956f927d4ab684aa4970bf76a,
type: 3}
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:

9
MaterialGraphProject/Assets/Andre/Meshes.meta


fileFormatVersion: 2
guid: 41db8b52004fd4fa3adcd157caa3d17f
folderAsset: yes
timeCreated: 1495749720
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

9
MaterialGraphProject/Assets/Andre/Scenes/Lava.meta


fileFormatVersion: 2
guid: 28953496d3e8842a4961989e0e4ad2c9
folderAsset: yes
timeCreated: 1495755068
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

399
MaterialGraphProject/Assets/Andre/Scenes/Lava.unity


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!29 &1
OcclusionCullingSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_OcclusionBakeSettings:
smallestOccluder: 5
smallestHole: 0.25
backfaceThreshold: 100
m_SceneGUID: 00000000000000000000000000000000
m_OcclusionCullingData: {fileID: 0}
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 8
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
m_FogDensity: 0.01
m_LinearFogStart: 0
m_LinearFogEnd: 300
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
m_AmbientIntensity: 1
m_AmbientMode: 0
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
m_HaloStrength: 0.5
m_FlareStrength: 1
m_FlareFadeSpeed: 3
m_HaloTexture: {fileID: 0}
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
m_DefaultReflectionMode: 0
m_DefaultReflectionResolution: 128
m_ReflectionBounces: 1
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0.12735108, g: 0.13419528, b: 0.12115393, a: 1}
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 11
m_GIWorkflowMode: 1
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
m_IndirectOutputScale: 1
m_AlbedoBoost: 1
m_TemporalCoherenceThreshold: 1
m_EnvironmentLightingMode: 0
m_EnableBakedLightmaps: 0
m_EnableRealtimeLightmaps: 1
m_LightmapEditorSettings:
serializedVersion: 9
m_Resolution: 2
m_BakeResolution: 40
m_TextureWidth: 1024
m_TextureHeight: 1024
m_AO: 0
m_AOMaxDistance: 1
m_CompAOExponent: 1
m_CompAOExponentDirect: 0
m_Padding: 2
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 1
m_FinalGather: 0
m_FinalGatherFiltering: 1
m_FinalGatherRayCount: 256
m_ReflectionCompression: 2
m_MixedBakeMode: 2
m_BakeBackend: 0
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
m_PVRSampleCount: 500
m_PVRBounces: 2
m_PVRFiltering: 0
m_PVRFilteringMode: 1
m_PVRCulling: 1
m_PVRFilteringGaussRadiusDirect: 1
m_PVRFilteringGaussRadiusIndirect: 5
m_PVRFilteringGaussRadiusAO: 2
m_PVRFilteringAtrousColorSigma: 1
m_PVRFilteringAtrousNormalSigma: 1
m_PVRFilteringAtrousPositionSigma: 1
m_LightingDataAsset: {fileID: 112000034, guid: 3590b96a6c1c8427191dc231f84f7919,
type: 2}
m_UseShadowmask: 1
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2
m_ObjectHideFlags: 0
m_BuildSettings:
serializedVersion: 2
agentTypeID: 0
agentRadius: 0.5
agentHeight: 2
agentSlope: 45
agentClimb: 0.4
ledgeDropHeight: 0
maxJumpAcrossDistance: 0
minRegionArea: 2
manualCellSize: 0
cellSize: 0.16666667
manualTileSize: 0
tileSize: 256
accuratePlacement: 0
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1 &59579813
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 59579815}
- component: {fileID: 59579814}
m_Layer: 0
m_Name: Directional Light
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!108 &59579814
Light:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 59579813}
m_Enabled: 0
serializedVersion: 8
m_Type: 1
m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
m_Intensity: 1
m_Range: 10
m_SpotAngle: 30
m_CookieSize: 10
m_Shadows:
m_Type: 2
m_Resolution: -1
m_CustomResolution: -1
m_Strength: 1
m_Bias: 0.05
m_NormalBias: 0.4
m_NearPlane: 0.2
m_Cookie: {fileID: 0}
m_DrawHalo: 0
m_Flare: {fileID: 0}
m_RenderMode: 0
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_Lightmapping: 4
m_AreaSize: {x: 1, y: 1}
m_BounceIntensity: 1
m_FalloffTable:
m_Table[0]: 0
m_Table[1]: 0
m_Table[2]: 0
m_Table[3]: 0
m_Table[4]: 0
m_Table[5]: 0
m_Table[6]: 0
m_Table[7]: 0
m_Table[8]: 0
m_Table[9]: 0
m_Table[10]: 0
m_Table[11]: 0
m_Table[12]: 0
m_ColorTemperature: 6570
m_UseColorTemperature: 0
m_ShadowRadius: 0
m_ShadowAngle: 0
--- !u!4 &59579815
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 59579813}
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
m_LocalPosition: {x: 0, y: 3, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
--- !u!1001 &1547970701
Prefab:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 400000, guid: f3a76c41447b84daabaa84848510464d, type: 3}
propertyPath: m_LocalPosition.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: f3a76c41447b84daabaa84848510464d, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: f3a76c41447b84daabaa84848510464d, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: f3a76c41447b84daabaa84848510464d, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: f3a76c41447b84daabaa84848510464d, type: 3}
propertyPath: m_LocalRotation.y
value: -0
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: f3a76c41447b84daabaa84848510464d, type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: f3a76c41447b84daabaa84848510464d, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: f3a76c41447b84daabaa84848510464d, type: 3}
propertyPath: m_RootOrder
value: 2
objectReference: {fileID: 0}
- target: {fileID: 100002, guid: f3a76c41447b84daabaa84848510464d, type: 3}
propertyPath: m_StaticEditorFlags
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 100026, guid: f3a76c41447b84daabaa84848510464d, type: 3}
propertyPath: m_StaticEditorFlags
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 100006, guid: f3a76c41447b84daabaa84848510464d, type: 3}
propertyPath: m_StaticEditorFlags
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 100018, guid: f3a76c41447b84daabaa84848510464d, type: 3}
propertyPath: m_StaticEditorFlags
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 100016, guid: f3a76c41447b84daabaa84848510464d, type: 3}
propertyPath: m_StaticEditorFlags
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 100020, guid: f3a76c41447b84daabaa84848510464d, type: 3}
propertyPath: m_StaticEditorFlags
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 100032, guid: f3a76c41447b84daabaa84848510464d, type: 3}
propertyPath: m_StaticEditorFlags
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 100004, guid: f3a76c41447b84daabaa84848510464d, type: 3}
propertyPath: m_StaticEditorFlags
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 100008, guid: f3a76c41447b84daabaa84848510464d, type: 3}
propertyPath: m_StaticEditorFlags
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 100000, guid: f3a76c41447b84daabaa84848510464d, type: 3}
propertyPath: m_StaticEditorFlags
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 100022, guid: f3a76c41447b84daabaa84848510464d, type: 3}
propertyPath: m_StaticEditorFlags
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 100024, guid: f3a76c41447b84daabaa84848510464d, type: 3}
propertyPath: m_StaticEditorFlags
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 100030, guid: f3a76c41447b84daabaa84848510464d, type: 3}
propertyPath: m_StaticEditorFlags
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 100034, guid: f3a76c41447b84daabaa84848510464d, type: 3}
propertyPath: m_StaticEditorFlags
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 100028, guid: f3a76c41447b84daabaa84848510464d, type: 3}
propertyPath: m_StaticEditorFlags
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 100010, guid: f3a76c41447b84daabaa84848510464d, type: 3}
propertyPath: m_StaticEditorFlags
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 100014, guid: f3a76c41447b84daabaa84848510464d, type: 3}
propertyPath: m_StaticEditorFlags
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 100012, guid: f3a76c41447b84daabaa84848510464d, type: 3}
propertyPath: m_StaticEditorFlags
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 100036, guid: f3a76c41447b84daabaa84848510464d, type: 3}
propertyPath: m_StaticEditorFlags
value: 4294967295
objectReference: {fileID: 0}
m_RemovedComponents: []
m_ParentPrefab: {fileID: 100100000, guid: f3a76c41447b84daabaa84848510464d, type: 3}
m_IsPrefabParent: 0
--- !u!1 &1717210254
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 1717210259}
- component: {fileID: 1717210258}
- component: {fileID: 1717210257}
- component: {fileID: 1717210256}
- component: {fileID: 1717210255}
m_Layer: 0
m_Name: Main Camera
m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!81 &1717210255
AudioListener:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1717210254}
m_Enabled: 1
--- !u!124 &1717210256
Behaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1717210254}
m_Enabled: 1
--- !u!92 &1717210257
Behaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1717210254}
m_Enabled: 1
--- !u!20 &1717210258
Camera:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1717210254}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 1
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 1000
field of view: 60
orthographic: 0
orthographic size: 5
m_Depth: -1
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingPath: 1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 1
m_AllowMSAA: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: 0.022
m_StereoMirrorMode: 0
--- !u!4 &1717210259
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1717210254}
m_LocalRotation: {x: 0.111745276, y: -0.85558593, z: 0.20849027, w: 0.46045357}
m_LocalPosition: {x: 1.991151, y: 1.196378, z: 1.3721017}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}

8
MaterialGraphProject/Assets/Andre/Scenes/Lava.unity.meta


fileFormatVersion: 2
guid: 9057abe8801fb490c889b76f61b1090e
timeCreated: 1495750731
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

1
MaterialGraphProject/Assets/Andre/Shaders/GreyToUV.ShaderGraph
文件差异内容过多而无法显示
查看文件

9
MaterialGraphProject/Assets/Andre/Shaders/GreyToUV.ShaderGraph.meta


fileFormatVersion: 2
guid: 3b009d10515854377aba74e7a2979e46
timeCreated: 1495723108
licenseType: Pro
ScriptedImporter:
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3}

1
MaterialGraphProject/Assets/Andre/Shaders/LavaFlowMap.ShaderGraph
文件差异内容过多而无法显示
查看文件

9
MaterialGraphProject/Assets/Andre/Shaders/LavaFlowMap.ShaderGraph.meta


fileFormatVersion: 2
guid: 22341debce5704be3aa6acdb6be2a199
timeCreated: 1495548280
licenseType: Pro
ScriptedImporter:
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3}

1
MaterialGraphProject/Assets/Andre/Shaders/LavaRock.ShaderGraph
文件差异内容过多而无法显示
查看文件

9
MaterialGraphProject/Assets/Andre/Shaders/LavaRock.ShaderGraph.meta


fileFormatVersion: 2
guid: 10e2bfd6f0b9f4605b6d4bcbf673d684
timeCreated: 1495749836
licenseType: Pro
ScriptedImporter:
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3}

407
MaterialGraphProject/Assets/Andre/an_gradient.png

之前 之后
宽度: 300  |  高度: 300  |  大小: 75 KiB

84
MaterialGraphProject/Assets/Andre/an_gradient.png.meta


fileFormatVersion: 2
guid: 79b61ba99411748ae8fa11666dceaee5
timeCreated: 1495723363
licenseType: Pro
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 4
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 0
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -1
wrapU: -1
wrapV: -1
wrapW: -1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

75
MaterialGraphProject/Assets/Andre/ground_cracked_ground_basecolor.png.meta


fileFormatVersion: 2
guid: 7296f51323ae9485a9c834c4e3d722ed
timeCreated: 1495753485
licenseType: Pro
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 4
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -1
wrapU: -1
wrapV: -1
wrapW: -1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

75
MaterialGraphProject/Assets/Andre/ground_cracked_ground_height.png.meta


fileFormatVersion: 2
guid: a653bbc25cc7e4794829cf7b1184abcb
timeCreated: 1495753487
licenseType: Pro
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 4
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -1
wrapU: -1
wrapV: -1
wrapW: -1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

1001
MaterialGraphProject/Assets/Andre/ground_cracked_ground_roughness.png
文件差异内容过多而无法显示
查看文件

75
MaterialGraphProject/Assets/Andre/ground_cracked_ground_roughness.png.meta


fileFormatVersion: 2
guid: 9d64a9e7ca6864704ae6b8ca7afc9d85
timeCreated: 1495753486
licenseType: Pro
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 4
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -1
wrapU: -1
wrapV: -1
wrapW: -1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

29
MaterialGraphProject/Assets/Florent/UnityEngine.MaterialGraph.ExportTextureMasterNode8e1be5fc-7506-4529-879d-f1ce8c5aab04.mat


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: UnityEngine.MaterialGraph.ExportTextureMasterNode8e1be5fc-7506-4529-879d-f1ce8c5aab04
m_Shader: {fileID: 4800000, guid: c07ee90c6976be945b82c415058ab856, type: 3}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- Texture_52494c62_81e0_463e_aa3f_fadca56482fa_Uniform:
m_Texture: {fileID: 2800000, guid: 153d265862621434696692a6c4c4400c, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- Texture_bcbba8c3_42d3_4afd_970e_817d00cd2f76_Uniform:
m_Texture: {fileID: 2800000, guid: 5d84e1086e00e3347aaa0bbba206bb80, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats: []
m_Colors: []

9
MaterialGraphProject/Assets/Matt/CharacterRendering.meta


fileFormatVersion: 2
guid: f25473f70e5844a4dabcea9bce39e35f
folderAsset: yes
timeCreated: 1495740471
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

960
MaterialGraphProject/Assets/Matt/Examples/Anisotropy.shader


Shader "Examples/Anisotropy"
{
Properties
{
Vector1_5c761f75_773e_42ed_b242_72e6b25acebd_Uniform("Metallic", Range(0, 1)) = 0.278
Vector1_91e780ac_52c0_4e9a_bd0e_974f5805854d_Uniform("Smoothness", Range(0, 1)) = 0.59
[NonModifiableTextureData] Texture_3db1140f_b814_4ba5_a49c_d40499367921_Uniform("Texture", 2D) = "white" {}
Vector1_8272d735_22ca_40c5_a082_1c40f63ad50b_Uniform("Anisotropy", Range(0, 1)) = 1
}
SubShader
{
Tags
{
"RenderType" = "Opaque"
"Queue" = "Geometry"
}
Blend One Zero
Cull Back
ZTest LEqual
ZWrite On
LOD 200
CGPROGRAM
#include "UnityCG.cginc"
//#include "AdvancedBRDF.cginc"
//#include "AdvancedShading.cginc"
//#include "AdvancedLighting.cginc"
#define SHADINGMODELID_STANDARD
// ------------------------------------------------------------------
// Diffuse
// From UE4 - Used for Cloth (Deprecated)
float3 Diffuse_Lambert(float3 DiffuseColor)
{
return DiffuseColor * (1 / UNITY_PI);
}
// ------------------------------------------------------------------
// Fresnel
// From UE4 - Used for Cloth
// [Schlick 1994, "An Inexpensive BRDF Model for Physically-Based Rendering"]
float3 F_Schlick(float3 SpecularColor, float VoH)
{
float Fc = Pow5(1 - VoH); // 1 sub, 3 mul
//return Fc + (1 - Fc) * SpecularColor; // 1 add, 3 mad
// Anything less than 2% is physically impossible and is instead considered to be shadowing
return saturate(50.0 * SpecularColor.g) * Fc + (1 - Fc) * SpecularColor;
}
// ------------------------------------------------------------------
// Distribution
// From UE4 - USed for Cloth
// GGX / Trowbridge-Reitz
// [Walter et al. 2007, "Microfacet models for refraction through rough surfaces"]
float D_GGX(float roughness, float NdotH)
{
float a = roughness * roughness;
float a2 = a * a;
float d = (NdotH * a2 - NdotH) * NdotH + 1; // 2 mad
return a2 / (UNITY_PI*d*d); // 4 mul, 1 rcp
}
// Anisotropic GGX
// Taken from HDRenderPipeline
float D_GGXAnisotropic(float TdotH, float BdotH, float NdotH, float roughnessT, float roughnessB)
{
float f = TdotH * TdotH / (roughnessT * roughnessT) + BdotH * BdotH / (roughnessB * roughnessB) + NdotH * NdotH;
return 1.0 / (roughnessT * roughnessB * f * f);
}
// From UE4 - Used for Cloth
float D_InvGGX(float roughness, float NdotH)
{
float a = roughness * roughness;
float a2 = a * a;
float A = 4;
float d = (NdotH - a2 * NdotH) * NdotH + a2;
return 1 / (UNITY_PI * (1 + A*a2)) * (1 + 4 * a2*a2 / (d*d)); //RCP
}
// ------------------------------------------------------------------
// Visibility
// From UE4 - Used for Cloth
// Appoximation of joint Smith term for GGX
// [Heitz 2014, "Understanding the Masking-Shadowing Function in Microfacet-Based BRDFs"]
float Vis_SmithJointApprox(float Roughness, float NoV, float NoL)
{
float a = (Roughness*Roughness);
float Vis_SmithV = NoL * (NoV * (1 - a) + a);
float Vis_SmithL = NoV * (NoL * (1 - a) + a);
// Note: will generate NaNs with Roughness = 0. MinRoughness is used to prevent this
return 0.5 * 1 / (Vis_SmithV + Vis_SmithL); //RCP
}
// From UE4 - Used for Cloth
float Vis_Cloth(float NoV, float NoL)
{
return 1 / (4 * (NoL + NoV - NoL * NoV)); //RCP
}
// ------------------------------------------------------------------
// SORT THESE
// Smith Joint GGX Anisotropic Visibility
// Taken from https://cedec.cesa.or.jp/2015/session/ENG/14698.html
float SmithJointGGXAnisotropic(float TdotV, float BdotV, float NdotV, float TdotL, float BdotL, float NdotL, float roughnessT, float roughnessB)
{
float aT = roughnessT;
float aT2 = aT * aT;
float aB = roughnessB;
float aB2 = aB * aB;
float lambdaV = NdotL * sqrt(aT2 * TdotV * TdotV + aB2 * BdotV * BdotV + NdotV * NdotV);
float lambdaL = NdotV * sqrt(aT2 * TdotL * TdotL + aB2 * BdotL * BdotL + NdotL * NdotL);
return 0.5 / (lambdaV + lambdaL);
}
// Convert Anistropy to roughness
void ConvertAnisotropyToRoughness(float roughness, float anisotropy, out float roughnessT, out float roughnessB)
{
// (0 <= anisotropy <= 1), therefore (0 <= anisoAspect <= 1)
// The 0.9 factor limits the aspect ratio to 10:1.
float anisoAspect = sqrt(1.0 - 0.9 * anisotropy);
roughnessT = roughness / anisoAspect; // Distort along tangent (rougher)
roughnessB = roughness * anisoAspect; // Straighten along bitangent (smoother)
}
// Schlick Fresnel
float FresnelSchlick(float f0, float f90, float u)
{
float x = 1.0 - u;
float x5 = x * x;
x5 = x5 * x5 * x;
return (f90 - f0) * x5 + f0; // sub mul mul mul sub mad
}
//Clamp roughness
float ClampRoughnessForAnalyticalLights(float roughness)
{
return max(roughness, 0.000001);
}
//Calculate tangent warp for IBL (Reference Version - not used)
float3 SpecularGGXIBLRef(float3 viewDir, float3 normalDir, float3 tangentDir, float3 bitangentDir, float roughnessT, float roughnessB)
{
return float3(1, 1, 1);
//Hidden in UnityAnisotropicLighting.cginc
}
// Sample Anisotropic Direction for IBL (Reference Version - not used)
void SampleAnisoGGXDir(float2 u, float3 viewDir, float3 normalDir, float3 tangent, float3 bitangent, float roughnessT, float roughnessB, out float3 halfDir, out float3 lightDir)
{
// AnisoGGX NDF sampling
halfDir = sqrt(u.x / (1.0 - u.x)) * (roughnessT * cos((UNITY_PI * 2) * u.y) * tangent + roughnessB * sin((UNITY_PI * 2) * u.y) * bitangent) + normalDir;
halfDir = normalize(halfDir);
// Convert sample from half angle to incident angle
lightDir = 2.0 * saturate(dot(viewDir, halfDir)) * halfDir - viewDir;
}
// Ref: Donald Revie - Implementing Fur Using Deferred Shading (GPU Pro 2)
// The grain direction (e.g. hair or brush direction) is assumed to be orthogonal to the normal.
// The returned normal is NOT normalized.
float3 ComputeGrainNormal(float3 grainDir, float3 V)
{
float3 B = cross(-V, grainDir);
return cross(B, grainDir);
}
//Modify Normal for Anisotropic IBL (Realtime version)
// Fake anisotropic by distorting the normal.
// The grain direction (e.g. hair or brush direction) is assumed to be orthogonal to N.
// Anisotropic ratio (0->no isotropic; 1->full anisotropy in tangent direction)
float3 GetAnisotropicModifiedNormal(float3 grainDir, float3 N, float3 V, float anisotropy)
{
float3 grainNormal = ComputeGrainNormal(grainDir, V);
// TODO: test whether normalizing 'grainNormal' is worth it.
return normalize(lerp(N, grainNormal, anisotropy));
}
/// REGION END - ANISOTROPY
/// REGION START - SUBSURFACE SCATTERING
half Fresnel(half3 H, half3 V, half F0)
{
half base = 1.0 - dot(V, H);
half exponential = pow(base, 5.0);
return exponential + F0 * (1.0 - exponential);
}
/*
inline half3 KelemenSzirmayKalosSpecular(half3 normal, half3 lightDir, half3 viewDir, float roughness, float rho_s)
{
half3 result = half3(0, 0, 0);
half NdotL = dot(normal, lightDir);
if (NdotL > 0.0)
{
half3 h = lightDir + viewDir;
half3 H = normalize(h);
half NdotH = dot(normal, H);
half PH = pow(2.0 * tex2D(_BeckmannPrecomputedTex, half2(NdotH, roughness)).r, 10.0);
half F = Fresnel(H, viewDir, 0.028);
half frSpec = max(PH * F / dot(h, h), 0);
half term = NdotL * rho_s * frSpec;
result = half3(term, term, term);
}
return result;
}*/
/*
half3 SkinDiffuse(float curv, float3 NdotL)
{
float3 lookup = NdotL * 0.5 + 0.5;
float3 diffuse;
diffuse.r = tex2D(_DiffusionProfileTexture, float2(lookup.r, curv)).r;
diffuse.g = tex2D(_DiffusionProfileTexture, float2(lookup.g, curv)).g;
diffuse.b = tex2D(_DiffusionProfileTexture, float2(lookup.b, curv)).b;
return diffuse;
}*/
/// REGION END - SUBSURFACE SCATTERING
// Upgrade NOTE: replaced 'defined SHADINGMODELID_CLEARCOAT' with 'defined (SHADINGMODELID_CLEARCOAT)'
// Upgrade NOTE: replaced 'defined SHADINGMODELID_CLOTH' with 'defined (SHADINGMODELID_CLOTH)'
// Upgrade NOTE: replaced 'defined SHADINGMODELID_EYE' with 'defined (SHADINGMODELID_EYE)'
// Upgrade NOTE: replaced 'defined SHADINGMODELID_FOLIAGE' with 'defined (SHADINGMODELID_FOLIAGE)'
// Upgrade NOTE: replaced 'defined SHADINGMODELID_HAIR' with 'defined (SHADINGMODELID_HAIR)'
// Upgrade NOTE: replaced 'defined SHADINGMODELID_SKIN' with 'defined (SHADINGMODELID_SKIN)'
// Upgrade NOTE: replaced 'defined SHADINGMODELID_SUBSURFACE' with 'defined (SHADINGMODELID_SUBSURFACE)'
// ------------------------------------------------------------------
// Shading models
//#pragma multi_compile SHADINGMODELID_UNLIT SHADINGMODELID_STANDARD SHADINGMODELID_SUBSURFACE SHADINGMODELID_SKIN SHADINGMODELID_FOLIAGE SHADINGMODELID_CLEARCOAT SHADINGMODELID_CLOTH SHADINGMODELID_EYE
// ------------------------------------------------------------------
// Input
half _ShadingModel;
sampler2D _AnisotropyMap;
half _Anisotropy;
sampler2D _TangentMap;
half4 _TranslucentColor;
sampler2D _TranslucencyMap;
sampler2D _FuzzTex;
half3 _FuzzColor;
half _Cloth;
sampler2D _IrisNormal;
sampler2D _IrisMask;
half _IrisDistance;
half _TDistortion;
half _TScale;
half _TAmbient;
half _TPower;
half _TAttenuation;
half _TransmissionOverallStrength;
// ------------------------------------------------------------------
// Maths helpers
// Octahedron Normal Vectors
// [Cigolle 2014, "A Survey of Efficient Representations for Independent Unit Vectors"]
// Mean Max
// oct 8:8 0.33709 0.94424
// snorm 8:8:8 0.17015 0.38588
// oct 10:10 0.08380 0.23467
// snorm 10:10:10 0.04228 0.09598
// oct 12:12 0.02091 0.05874
float2 UnitVectorToOctahedron(float3 N)
{
N.xy /= dot(float3(1,1,1), abs(N));
if (N.z <= 0)
{
N.xy = (1 - abs(N.yx)) * (N.xy >= 0 ? float2(1, 1) : float2(-1, -1));
}
return N.xy;
}
float3 OctahedronToUnitVector(float2 Oct)
{
float3 N = float3(Oct, 1 - dot(float2(1,1), abs(Oct)));
if (N.z < 0)
{
N.xy = (1 - abs(N.yx)) * (N.xy >= 0 ? float2(1, 1) : float2(-1, -1));
}
return float3(1, 1, 1);
return normalize(N);
}
// ------------------------------------------------------------------
// Surface helpers
half Anisotropy(float2 uv)
{
return tex2D(_AnisotropyMap, uv) * _Anisotropy;
}
half3 Fuzz(float2 uv)
{
return tex2D(_FuzzTex, uv) * _FuzzColor;
}
half Cloth()
{
return _Cloth;
}
half4 Iris(float2 uv)
{
float2 n = UnitVectorToOctahedron(normalize(UnpackNormal(tex2D(_IrisNormal, uv)).rgb)) * 0.5 + 0.5;
float m = saturate(tex2D(_IrisMask, uv).r); // Iris Mask
float d = saturate(_IrisDistance); // Iris Distance
return float4(n.x, n.y, m, d);
}
half3 Translucency(float2 uv)
{
return tex2D(_TranslucencyMap, uv).rgb * _TranslucentColor.rgb;
}
// ------------------------------------------------------------------
// Unlit Shading Function
float4 UnlitShading(float3 diffColor)
{
return half4(diffColor, 1);
}
// ------------------------------------------------------------------
// Standard Shading Function
float4 StandardShading(float3 diffColor, float3 specColor, float oneMinusReflectivity, float smoothness, float3 normal, float3x3 worldVectors,
float anisotropy, float metallic, float3 viewDir, UnityLight light, UnityIndirect gi)
{
//Unpack world vectors
float3 tangent = worldVectors[0];
float3 bitangent = worldVectors[1];
//Normal shift
float shiftAmount = dot(normal, viewDir);
normal = shiftAmount < 0.0f ? normal + viewDir * (-shiftAmount + 1e-5f) : normal;
//Regular vectors
float NdotL = saturate(dot(normal, light.dir)); //sat?
float NdotV = abs(dot(normal, viewDir)); //abs?
float LdotV = dot(light.dir, viewDir);
float3 H = Unity_SafeNormalize(light.dir + viewDir);
float invLenLV = rsqrt(abs(2 + 2 * normalize(LdotV)));
//float invLenLV = rsqrt(abs(2 + 2 * LdotV));
//float NdotH = (NdotL + normalize(NdotV)) * invLenLV;
float NdotH = saturate(dot(normal, H));
//float NdotH = saturate((NdotL + normalize(NdotV)) * invLenLV);
//float H = (light.dir + viewDir) * invLenLV;
float LdotH = saturate(dot(light.dir, H));
//Tangent vectors
float TdotH = dot(tangent, H);
float TdotL = dot(tangent, light.dir);
float BdotH = dot(bitangent, H);
float BdotL = dot(bitangent, light.dir);
float TdotV = dot(viewDir, tangent);
float BdotV = dot(viewDir, bitangent);
//Fresnels
half grazingTerm = saturate(smoothness + (1 - oneMinusReflectivity));
float3 F = FresnelLerp(specColor, grazingTerm, NdotV); //Original Schlick - Replace from SRP?
//float3 fresnel0 = lerp(specColor, diffColor, metallic);
//float3 F = FresnelSchlick(fresnel0, 1.0, LdotH);
//Calculate roughness
float roughnessT;
float roughnessB;
float perceptualRoughness = SmoothnessToPerceptualRoughness(smoothness);
float roughness = PerceptualRoughnessToRoughness(perceptualRoughness);
ConvertAnisotropyToRoughness(roughness, anisotropy, roughnessT, roughnessB);
//Clamp roughness
//roughness = ClampRoughnessForAnalyticalLights(roughness);
roughnessT = ClampRoughnessForAnalyticalLights(roughnessT);
roughnessB = ClampRoughnessForAnalyticalLights(roughnessB);
//Visibility & Distribution terms
float V = SmithJointGGXAnisotropic(TdotV, BdotV, NdotV, TdotL, BdotL, NdotL, roughnessT, roughnessB);
float D = D_GGXAnisotropic(TdotH, BdotH, NdotH, roughnessT, roughnessB);
//Specular term
float3 specularTerm = V * D; //*UNITY_PI;
# ifdef UNITY_COLORSPACE_GAMMA
specularTerm = sqrt(max(1e-4h, specularTerm));
# endif
// specularTerm * nl can be NaN on Metal in some cases, use max() to make sure it's a sane value
specularTerm = max(0, specularTerm * NdotL);
#if defined(_SPECULARHIGHLIGHTS_OFF)
specularTerm = 0.0;
#endif
//Diffuse term
float diffuseTerm = DisneyDiffuse(NdotV, NdotL, LdotH, perceptualRoughness) * NdotL;// - Need this NdotL multiply?
//Reduction
half surfaceReduction;
# ifdef UNITY_COLORSPACE_GAMMA
surfaceReduction = 1.0 - 0.28*roughness*perceptualRoughness; // 1-0.28*x^3 as approximation for (1/(x^4+1))^(1/2.2) on the domain [0;1]
# else
surfaceReduction = 1.0 / (roughness*roughness + 1.0); // fade \in [0.5;1]
# endif
//Final
half3 color = (diffColor * (gi.diffuse + light.color * diffuseTerm))
+ specularTerm * light.color * FresnelTerm(specColor, LdotH)
+ surfaceReduction * gi.specular * FresnelLerp(specColor, grazingTerm, NdotV);
return half4(color, 1);
}
// ------------------------------------------------------------------
// Cloth Shading Function
//float3 ClothShading(FGBufferData GBuffer, float3 LobeRoughness, float3 LobeEnergy, float3 L, float3 V, half3 N)
float4 ClothShading(float3 diffColor, float3 specColor, float3 fuzzColor, float cloth, float oneMinusReflectivity, float smoothness, float3 normal, float3 viewDir, UnityLight light, UnityIndirect gi, float3x3 worldVectors, float anisotropy)
{
const float3 FuzzColor = saturate(fuzzColor);
const float Cloth = saturate(cloth);
//Regular vectors
float NdotL = saturate(dot(normal, light.dir)); //sat?
float NdotV = abs(dot(normal, viewDir)); //abs?
float LdotV = dot(light.dir, viewDir);
//float invLenLV = rsqrt(abs(2 + 2 * normalize(LdotV)));
////float invLenLV = rsqrt(abs(2 + 2 * LdotV));
//float NdotH = (NdotL + normalize(NdotV)) * invLenLV;
//float NdotH = saturate((NdotL + normalize(NdotV)) * invLenLV);
float3 H = Unity_SafeNormalize(light.dir + viewDir);
//float H = (light.dir + viewDir) * invLenLV;
float LdotH = saturate(dot(light.dir, H));
//float3 H = normalize(viewDir + light.dir);
//float NdotL = saturate(dot(normal, light.dir));
//float NdotV = saturate(abs(dot(normal, viewDir)) + 1e-5);
float NdotH = saturate(dot(normal, H));
float VdotH = saturate(dot(viewDir, H));
//float LdotH = saturate(dot(light.dir, H));
half grazingTerm = saturate(smoothness + (1 - oneMinusReflectivity));
// Diffuse
float perceptualRoughness = SmoothnessToPerceptualRoughness(smoothness);
float roughness = PerceptualRoughnessToRoughness(perceptualRoughness);
float diffuseTerm = DisneyDiffuse(NdotV, NdotL, LdotH, perceptualRoughness) * NdotL;// - Need this NdotL multiply?
// Cloth - Asperity Scattering - Inverse Beckmann Layer
float3 F1 = FresnelTerm(fuzzColor, LdotH);// FresnelLerp(fuzzColor, grazingTerm, NdotV);// FresnelTerm(FuzzColor, LdotH);// F_Schlick(FuzzColor, VdotH);
float D1 = D_InvGGX(roughness, NdotH);
float V1 = Vis_Cloth(NdotV, NdotL);
//Specular term
float3 specularTerm1 = V1 * D1; //*UNITY_PI;
# ifdef UNITY_COLORSPACE_GAMMA
specularTerm1 = sqrt(max(1e-4h, specularTerm1));
# endif
// specularTerm * nl can be NaN on Metal in some cases, use max() to make sure it's a sane value
// specularTerm1 = max(0, specularTerm1 * NdotL);
#if defined(_SPECULARHIGHLIGHTS_OFF)
specularTerm1 = 0.0;
#endif
float3 Spec1 = specularTerm1 * light.color * FresnelTerm(fuzzColor, LdotH);
// Generalized microfacet specular
/*float3 F2 = F_Schlick(specColor, VdotH);
float D2 = D_GGX(roughness, NdotH);
float V2 = Vis_SmithJointApprox(roughness, NdotV, NdotL);
float3 Spec2 = D2 * V2 * F2 * light.color;*/
//Unpack world vectors
float3 tangent = worldVectors[0];
float3 bitangent = worldVectors[1];
//Tangent vectors
float TdotH = dot(tangent, H);
float TdotL = dot(tangent, light.dir);
float BdotH = dot(bitangent, H);
float BdotL = dot(bitangent, light.dir);
float TdotV = dot(viewDir, tangent);
float BdotV = dot(viewDir, bitangent);
//Fresnels
float3 F2 = FresnelLerp(specColor, grazingTerm, NdotV);// FresnelTerm(specColor, LdotH);// FresnelLerp(specColor, grazingTerm, NdotV); //Original Schlick - Replace from SRP?
float roughnessT;
float roughnessB;
//float perceptualRoughness = SmoothnessToPerceptualRoughness(smoothness);
//float roughness = PerceptualRoughnessToRoughness(perceptualRoughness);
ConvertAnisotropyToRoughness(roughness, anisotropy, roughnessT, roughnessB);
//Clamp roughness
//roughness = ClampRoughnessForAnalyticalLights(roughness);
roughnessT = ClampRoughnessForAnalyticalLights(roughnessT);
roughnessB = ClampRoughnessForAnalyticalLights(roughnessB);
//Visibility & Distribution terms
float V2 = SmithJointGGXAnisotropic(TdotV, BdotV, NdotV, TdotL, BdotL, NdotL, roughnessT, roughnessB);
float D2 = D_GGXAnisotropic(TdotH, BdotH, NdotH, roughnessT, roughnessB);
//Specular term
float3 specularTerm2 = V2 * D2; //*UNITY_PI;
# ifdef UNITY_COLORSPACE_GAMMA
specularTerm2 = sqrt(max(1e-4h, specularTerm2));
# endif
// specularTerm * nl can be NaN on Metal in some cases, use max() to make sure it's a sane value
specularTerm2 = max(0, specularTerm2 * NdotL);
#if defined(_SPECULARHIGHLIGHTS_OFF)
specularTerm2 = 0.0;
#endif
float3 Spec2 = specularTerm2 * light.color * FresnelTerm(specColor, LdotH);
float3 Spec = lerp(Spec2, Spec1, Cloth);
//Reduction
half surfaceReduction;
# ifdef UNITY_COLORSPACE_GAMMA
surfaceReduction = 1.0 - 0.28*roughness*perceptualRoughness; // 1-0.28*x^3 as approximation for (1/(x^4+1))^(1/2.2) on the domain [0;1]
# else
surfaceReduction = 1.0 / (roughness*roughness + 1.0); // fade \in [0.5;1]
# endif
//Final
//half grazingTerm = saturate(smoothness + (1 - oneMinusReflectivity));
half3 color = (diffColor * (gi.diffuse + light.color * diffuseTerm))
+ Spec
+ surfaceReduction * gi.specular * FresnelLerp(specColor, grazingTerm, NdotV);
return half4(color, 1);
}
// ------------------------------------------------------------------
// Eye Shading Function
//float3 EyeShading(FGBufferData GBuffer, float3 LobeRoughness, float3 LobeEnergy, float3 L, float3 V, half3 N)
float4 EyeShading(float3 diffColor, float3 specColor, float3 viewDir, half3 normal, float smoothness, float oneMinusReflectivity, UnityLight light, UnityIndirect gi)
{
float3 H = normalize(viewDir + light.dir);
float NdotL = saturate(dot(normal, light.dir));
float NdotV = saturate(abs(dot(normal, viewDir)) + 1e-5);
float NdotH = saturate(dot(normal, H));
float VdotH = saturate(dot(viewDir, H));
float LdotH = saturate(dot(light.dir, H));
// Generalized microfacet specular
float perceptualRoughness = SmoothnessToPerceptualRoughness(smoothness);
float roughness = PerceptualRoughnessToRoughness(perceptualRoughness);
float D = D_GGX(roughness, NdotH);// *LobeEnergy[1];
float V = Vis_SmithJointApprox(roughness, NdotV, NdotL);
float3 F = F_Schlick(specColor, VdotH);
float3 specularTerm = V * D; //*UNITY_PI;
# ifdef UNITY_COLORSPACE_GAMMA
specularTerm = sqrt(max(1e-4h, specularTerm));
# endif
// specularTerm * nl can be NaN on Metal in some cases, use max() to make sure it's a sane value
specularTerm = max(0, specularTerm * NdotL);
#if defined(_SPECULARHIGHLIGHTS_OFF)
specularTerm = 0.0;
#endif
half grazingTerm = saturate(smoothness + (1 - oneMinusReflectivity));
half surfaceReduction;
# ifdef UNITY_COLORSPACE_GAMMA
surfaceReduction = 1.0 - 0.28*roughness*perceptualRoughness; // 1-0.28*x^3 as approximation for (1/(x^4+1))^(1/2.2) on the domain [0;1]
# else
surfaceReduction = 1.0 / (roughness*roughness + 1.0); // fade \in [0.5;1]
# endif
float diffuseTerm = DisneyDiffuse(NdotV, NdotL, LdotH, perceptualRoughness) * NdotL; // TODO - Unreal does not apply diffuse in Shading function
//Final
half3 color = (diffColor * (gi.diffuse + light.color * diffuseTerm))
+ specularTerm * light.color * FresnelTerm(specColor, LdotH)
+ surfaceReduction * gi.specular * FresnelLerp(specColor, grazingTerm, NdotV);
return half4(color, 1);
}
// ------------------------------------------------------------------
// Subsurface Shading Function
float3 SubsurfaceShadingSimple(float3 diffColor, float3 normal, float3 viewDir, float3 thickness, UnityLight light)
{
half3 vLTLight = light.dir + normal * 1;
half fLTDot = pow(saturate(dot(viewDir, -vLTLight)), 3.5) * 1.5;
half3 fLT = 1 * (fLTDot + 1.2) * (thickness);
return diffColor * ((light.color * fLT) * 0.4);
}
// ------------------------------------------------------------------
// Eye Subsurface Shading Function
//float3 EyeSubsurfaceShading(FGBufferData GBuffer, float3 L, float3 V, half3 N)
float3 EyeSubsurfaceShading(float3 diffColor, float3 specColor, float3 viewDir, half3 normal, float smoothness, float4 iris, UnityLight light)
{
float2 irisNormal = iris.rg;
float irisMask = iris.z;
float irisDistance = iris.w;
float3 H = normalize(viewDir + light.dir);
float VdotH = saturate(dot(viewDir, H));
float NdotV = saturate(abs(dot(normal, viewDir)) + 1e-5);
float LdotH = saturate(dot(light.dir, H));
// F_Schlick
//float F0 = GBuffer.Specular * 0.08;
//float Fc = Pow5(1 - VoH);
//float F = Fc + (1 - Fc) * F0;
float3 fresnel0 = lerp(specColor, diffColor, smoothness);
float3 F = FresnelSchlick(fresnel0, 1.0, LdotH);
//float IrisDistance = GBuffer.CustomData.w;
//float IrisMask = GBuffer.CustomData.z;
float3 IrisNormal;
IrisNormal = OctahedronToUnitVector(irisNormal * 2 - 1);
// Blend in the negative intersection normal to create some concavity
// Not great as it ties the concavity to the convexity of the cornea surface
// No good justification for that. On the other hand, if we're just looking to
// introduce some concavity, this does the job.
float3 CausticNormal = normalize(lerp(IrisNormal, -normal, irisMask*irisDistance));
float NdotL = saturate(dot(IrisNormal, light.dir));
float Power = lerp(12, 1, NdotL);
float Caustic = 0.6 + 0.2 * (Power + 1) * pow(saturate(dot(CausticNormal, light.dir)), Power);
float Iris = NdotL * Caustic;
// http://blog.stevemcauley.com/2011/12/03/energy-conserving-wrapped-diffuse/
float Wrap = 0.15;
float Sclera = saturate((dot(normal, light.dir) + Wrap) / (1 + Wrap) * (1 + Wrap));
return (1 - F) * lerp(Sclera, Iris, irisMask) * diffColor / UNITY_PI;
}
// ------------------------------------------------------------------
// Shading function selectors
//float3 SurfaceShading(/*FGBufferData GBuffer,*/ float3 LobeRoughness, float3 LobeEnergy, float3 L, float3 V, half3 N, uint2 Random)
float4 SurfaceShading(float3 diffColor, float3 specColor, float oneMinusReflectivity, float smoothness, float3 normal,
float3x3 worldVectors, float anisotropy, float4 customData, float metallic, float3 viewDir, UnityLight light, UnityIndirect gi)
{
#if defined(SHADINGMODELID_UNLIT)
{
return UnlitShading(diffColor);
}
#elif defined(SHADINGMODELID_STANDARD) || defined(SHADINGMODELID_SUBSURFACE) || defined(SHADINGMODELID_SKIN) || defined(SHADINGMODELID_FOLIAGE)
{
return StandardShading(diffColor, specColor, oneMinusReflectivity, smoothness,
normal, worldVectors, anisotropy, metallic, viewDir, light, gi);
}
#elif defined (SHADINGMODELID_CLEARCOAT)
{
return float4(1, 1, 1, 1); //ClearCoatShading(GBuffer, LobeRoughness, LobeEnergy, L, V, N);
}
#elif defined (SHADINGMODELID_CLOTH)
{
return ClothShading(diffColor, specColor, customData.rgb, customData.a, oneMinusReflectivity, smoothness, normal, viewDir, light, gi, worldVectors, anisotropy);
}
#elif defined (SHADINGMODELID_EYE)
{
return EyeShading(diffColor, specColor, viewDir, normal, smoothness, oneMinusReflectivity, light, gi); //EyeShading(GBuffer, LobeRoughness, LobeEnergy, L, V, N);
}
#endif
return float4(0, 0, 0, 0);
}
//float3 SubsurfaceShading(/*FGBufferData GBuffer,*/ float3 L, float3 V, half3 N, float Shadow, uint2 Random)
float3 SubsurfaceShading(float3 diffColor, float3 specColor, float3 normal, float smoothness, float3 viewDir, float4 customData, UnityLight light)
{
#if defined (SHADINGMODELID_SUBSURFACE)
{
return SubsurfaceShadingSimple(diffColor, normal, viewDir, customData.rgb, light);
}
#elif defined (SHADINGMODELID_SKIN)
{
return float3(0, 0, 0); //SubsurfaceShadingPreintegratedSkin(GBuffer, L, V, N);
}
#elif defined (SHADINGMODELID_FOLIAGE)
{
return float3(0, 0, 0); //SubsurfaceShadingTwoSided(SubsurfaceColor, L, V, N);
}
#elif defined (SHADINGMODELID_HAIR)
{
return float3(0, 0, 0); //HairShading(GBuffer, L, V, N, Shadow, 1, 0, Random);
}
#elif defined (SHADINGMODELID_EYE)
{
return EyeSubsurfaceShading(diffColor, specColor, viewDir, normal, smoothness, customData, light); //EyeSubsurfaceShading(GBuffer, L, V, N);
}
#endif
return float3(0, 0, 0);
}
//#endif UNITY_ADVANCED_SHADINGMODELS_INCLUDED
//-------------------------------------------------------------------------------------
// Lighting Helpers
// Glossy Environment
half3 Unity_AnisotropicGlossyEnvironment(UNITY_ARGS_TEXCUBE(tex), half4 hdr, Unity_GlossyEnvironmentData glossIn, half anisotropy) //Reference IBL from HD Pipe (Add half3 L input and replace R)
{
half perceptualRoughness = glossIn.roughness /* perceptualRoughness */;
// TODO: CAUTION: remap from Morten may work only with offline convolution, see impact with runtime convolution!
// For now disabled
#if 0
float m = PerceptualRoughnessToRoughness(perceptualRoughness); // m is the real roughness parameter
const float fEps = 1.192092896e-07F; // smallest such that 1.0+FLT_EPSILON != 1.0 (+1e-4h is NOT good here. is visibly very wrong)
float n = (2.0 / max(fEps, m*m)) - 2.0; // remap to spec power. See eq. 21 in --> https://dl.dropboxusercontent.com/u/55891920/papers/mm_brdf.pdf
n /= 4; // remap from n_dot_h formulatino to n_dot_r. See section "Pre-convolved Cube Maps vs Path Tracers" --> https://s3.amazonaws.com/docs.knaldtech.com/knald/1.0.0/lys_power_drops.html
perceptualRoughness = pow(2 / (n + 2), 0.25); // remap back to square root of real roughness (0.25 include both the sqrt root of the conversion and sqrt for going from roughness to perceptualRoughness)
#else
// MM: came up with a surprisingly close approximation to what the #if 0'ed out code above does.
perceptualRoughness = perceptualRoughness*(1.7 - 0.7*perceptualRoughness);
#endif
half mip = perceptualRoughnessToMipmapLevel(perceptualRoughness);
half3 R = glossIn.reflUVW;// -half3(anisotropy, 0, 0);
half4 rgbm = UNITY_SAMPLE_TEXCUBE_LOD(tex, R, mip);
return DecodeHDR(rgbm, hdr);
}
// Indirect Specular
inline half3 UnityGI_AnisotropicIndirectSpecular(UnityGIInput data, half occlusion, Unity_GlossyEnvironmentData glossIn, half anisotropy, half3x3 worldVectors)
{
half3 specular;
float3 tangentX = worldVectors[0];
float3 tangentY = worldVectors[1];
float3 N = worldVectors[2];
float3 V = data.worldViewDir;
float3 iblNormalWS = GetAnisotropicModifiedNormal(tangentY, N, V, anisotropy);
float3 iblR = reflect(-V, iblNormalWS);
#ifdef UNITY_SPECCUBE_BOX_PROJECTION
// we will tweak reflUVW in glossIn directly (as we pass it to Unity_GlossyEnvironment twice for probe0 and probe1), so keep original to pass into BoxProjectedCubemapDirection
half3 originalReflUVW = glossIn.reflUVW;
glossIn.reflUVW = BoxProjectedCubemapDirection(iblR, data.worldPos, data.probePosition[0], data.boxMin[0], data.boxMax[0]);
#endif
#ifdef _GLOSSYREFLECTIONS_OFF
specular = unity_IndirectSpecColor.rgb;
#else
half3 env0 = Unity_AnisotropicGlossyEnvironment(UNITY_PASS_TEXCUBE(unity_SpecCube0), data.probeHDR[0], glossIn, anisotropy);
//half3 env0 = Unity_AnisotropicGlossyEnvironment(UNITY_PASS_TEXCUBE(unity_SpecCube0), data.probeHDR[0], glossIn, anisotropy, L); //Reference IBL from HD Pipe
#ifdef UNITY_SPECCUBE_BLENDING
const float kBlendFactor = 0.99999;
float blendLerp = data.boxMin[0].w;
UNITY_BRANCH
if (blendLerp < kBlendFactor)
{
#ifdef UNITY_SPECCUBE_BOX_PROJECTION
glossIn.reflUVW = BoxProjectedCubemapDirection(iblR, data.worldPos, data.probePosition[1], data.boxMin[1], data.boxMax[1]);
#endif
half3 env1 = Unity_AnisotropicGlossyEnvironment(UNITY_PASS_TEXCUBE_SAMPLER(unity_SpecCube1, unity_SpecCube0), data.probeHDR[1], glossIn, anisotropy);
//half3 env1 = Unity_AnisotropicGlossyEnvironment(UNITY_PASS_TEXCUBE_SAMPLER(unity_SpecCube1, unity_SpecCube0), data.probeHDR[1], glossIn, anisotropy, L); //Reference IBL from HD Pipe
specular = lerp(env1, env0, blendLerp);
}
else
{
specular = env0;
}
#else
specular = env0;
#endif
#endif
return specular * occlusion;// *weightOverPdf; //Reference IBL from HD Pipe
//return specular * occlusion * weightOverPdf; //Reference IBL from HD Pipe
}
// Global Illumination
inline UnityGI UnityAnisotropicGlobalIllumination(UnityGIInput data, half occlusion, half3 normalWorld, Unity_GlossyEnvironmentData glossIn, half anisotropy, half3x3 worldVectors)
{
UnityGI o_gi = UnityGI_Base(data, occlusion, normalWorld);
o_gi.indirect.specular = UnityGI_AnisotropicIndirectSpecular(data, occlusion, glossIn, anisotropy, worldVectors);
return o_gi;
}
//-------------------------------------------------------------------------------------
// Lighting Functions
//Surface Description
struct SurfaceOutputAdvanced
{
fixed3 Albedo; // base (diffuse or specular) color
fixed3 Normal; // tangent space normal, if written
half3 Emission;
half Metallic; // 0=non-metal, 1=metal
// Smoothness is the user facing name, it should be perceptual smoothness but user should not have to deal with it.
// Everywhere in the code you meet smoothness it is perceptual smoothness
half Smoothness; // 0=rough, 1=smooth
half Occlusion; // occlusion (default 1)
fixed Alpha; // alpha for transparencies
half3 Tangent;
half Anisotropy;
half4 CustomData;
float3x3 WorldVectors;
//half ShadingModel;
};
inline half4 LightingAdvanced(SurfaceOutputAdvanced s, half3 viewDir, UnityGI gi)
{
s.Normal = normalize(s.Normal);
half oneMinusReflectivity;
half3 specColor;
s.Albedo = DiffuseAndSpecularFromMetallic(s.Albedo, s.Metallic, /*out*/ specColor, /*out*/ oneMinusReflectivity);
// shader relies on pre-multiply alpha-blend (_SrcBlend = One, _DstBlend = OneMinusSrcAlpha)
// this is necessary to handle transparency in physically correct way - only diffuse component gets affected by alpha
half outputAlpha;
s.Albedo = PreMultiplyAlpha(s.Albedo, s.Alpha, oneMinusReflectivity, /*out*/ outputAlpha);
half4 c = SurfaceShading(s.Albedo, specColor, oneMinusReflectivity, s.Smoothness, s.Normal, s.WorldVectors, s.Anisotropy, s.CustomData, s.Metallic, viewDir, gi.light, gi.indirect);
c.rgb += SubsurfaceShading(s.Albedo, specColor, s.Normal, s.Smoothness, viewDir, s.CustomData, gi.light);
//c.rgb += UNITY_BRDF_GI(s.Albedo, specColor, oneMinusReflectivity, s.Smoothness, s.Normal, viewDir, s.Occlusion, gi);
c.a = outputAlpha;
return c;
}
//This is pointless as always forward?
inline half4 LightingAdvanced_Deferred(SurfaceOutputAdvanced s, half3 viewDir, UnityGI gi, out half4 outGBuffer0, out half4 outGBuffer1, out half4 outGBuffer2)
{
half oneMinusReflectivity;
half3 specColor;
s.Albedo = DiffuseAndSpecularFromMetallic(s.Albedo, s.Metallic, /*out*/ specColor, /*out*/ oneMinusReflectivity);
half4 c = SurfaceShading(s.Albedo, specColor, oneMinusReflectivity, s.Smoothness, s.Normal, s.WorldVectors, s.Anisotropy, s.CustomData, s.Metallic, viewDir, gi.light, gi.indirect);
c.rgb += SubsurfaceShading(s.Albedo, specColor, s.Normal, s.Smoothness, viewDir, s.CustomData, gi.light);
UnityStandardData data;
data.diffuseColor = s.Albedo;
data.occlusion = s.Occlusion;
data.specularColor = specColor;
data.smoothness = s.Smoothness;
data.normalWorld = s.Normal;
UnityStandardDataToGbuffer(data, outGBuffer0, outGBuffer1, outGBuffer2);
half4 emission = half4(s.Emission + c.rgb, 1);
return emission;
}
inline void LightingAdvanced_GI(SurfaceOutputAdvanced s, UnityGIInput data, inout UnityGI gi)
{
#if defined(UNITY_PASS_DEFERRED) && UNITY_ENABLE_REFLECTION_BUFFERS
gi = UnityGlobalIllumination(data, s.Occlusion, s.Normal);
#else
Unity_GlossyEnvironmentData g = UnityGlossyEnvironmentSetup(s.Smoothness, data.worldViewDir, s.Normal, lerp(unity_ColorSpaceDielectricSpec.rgb, s.Albedo, s.Metallic));
gi = UnityAnisotropicGlobalIllumination(data, s.Occlusion, s.Normal, g, s.Anisotropy, s.WorldVectors);
#endif
}
///END
//#pragma target 5.0
#pragma surface surf Advanced vertex:vert
#pragma glsl
#pragma debug
inline float4 unity_multiply_float(float4 arg1, float4 arg2)
{
return arg1 * arg2;
}
inline float4 unity_uvrotator_float(float4 arg1, float arg2)
{
arg1.xy -= 0.5;
float s = sin(arg2);
float c = cos(arg2);
float2x2 rMatrix = float2x2(c, -s, s, c);
rMatrix *= 0.5;
rMatrix += 0.5;
rMatrix = rMatrix * 2 - 1;
arg1.xy = mul(arg1.xy, rMatrix);
arg1.xy += 0.5;
return arg1;
}
inline float4 unity_add_float(float4 arg1, float4 arg2)
{
return arg1 + arg2;
}
inline float3 unity_saturation_float(float3 arg1, float arg2)
{
float luma = dot(arg1, float3(0.2126729, 0.7151522, 0.0721750));
return luma.xxx + arg2.xxx * (arg1 - luma.xxx);
}
float Vector1_5c761f75_773e_42ed_b242_72e6b25acebd_Uniform;
float Vector1_91e780ac_52c0_4e9a_bd0e_974f5805854d_Uniform;
sampler2D Texture_3db1140f_b814_4ba5_a49c_d40499367921_Uniform;
float Vector1_8272d735_22ca_40c5_a082_1c40f63ad50b_Uniform;
struct Input
{
float4 color : COLOR;
half4 meshUV0;
float4 worldTangent;
float3 worldNormal;
};
void vert(inout appdata_full v, out Input o)
{
UNITY_INITIALIZE_OUTPUT(Input,o);
o.meshUV0 = v.texcoord;
o.worldTangent = float4(UnityObjectToWorldDir(v.tangent.xyz), v.tangent.w);
}
void surf(Input IN, inout SurfaceOutputAdvanced o)
{
half4 uv0 = IN.meshUV0;
float3 worldSpaceTangent = normalize(IN.worldTangent.xyz);
float3 worldSpaceNormal = normalize(IN.worldNormal);
float3 worldSpaceBitangent = cross(worldSpaceNormal, worldSpaceTangent) * IN.worldTangent.w;
float4 Color_60e5aa92_5827_4655_88ef_824edebc611c_Uniform = float4 (1, 1, 1, 0);
float4 UV_5469bdac_9fb3_4be1_99d3_b33dd79bde38_UV = uv0;
float Vector1_eba0cdd0_45b4_4538_9e0b_cea4c7422396_Uniform = 10;
float4 Multiply_4812768f_5378_4eb3_9ce3_7b7b373bf5af_Output = unity_multiply_float(UV_5469bdac_9fb3_4be1_99d3_b33dd79bde38_UV, Vector1_eba0cdd0_45b4_4538_9e0b_cea4c7422396_Uniform);
float4 Fraction_5d78144e_c212_4560_a9ac_8a1cfa2d8998_Output = frac(Multiply_4812768f_5378_4eb3_9ce3_7b7b373bf5af_Output);
float4 Texture_3db1140f_b814_4ba5_a49c_d40499367921 = tex2D(Texture_3db1140f_b814_4ba5_a49c_d40499367921_Uniform, (Fraction_5d78144e_c212_4560_a9ac_8a1cfa2d8998_Output.xy));
float4 Swizzle_8fa020a1_1e6e_4a73_8319_f9403f55481f_Output = float4(Texture_3db1140f_b814_4ba5_a49c_d40499367921.rbga).rgba;
float4 UVRotator_33524407_d6a4_4e64_995b_84ca0117ce56_Output = unity_uvrotator_float(Swizzle_8fa020a1_1e6e_4a73_8319_f9403f55481f_Output, _Time.y);
float4 Swizzle_518dd051_97b1_4f9d_b388_4db28346054e_Output = float4(UVRotator_33524407_d6a4_4e64_995b_84ca0117ce56_Output.rbga).rgba;
float4 Add_204f3b90_9101_429f_acf1_8fdace08eb17_Output = unity_add_float(Swizzle_518dd051_97b1_4f9d_b388_4db28346054e_Output, float4 (0,0,0,0));
float3 Saturation_96e26331_ca74_4d63_aacd_f34516700ae6_Output = unity_saturation_float(Add_204f3b90_9101_429f_acf1_8fdace08eb17_Output, 0);
o.Albedo = Color_60e5aa92_5827_4655_88ef_824edebc611c_Uniform;
o.Metallic = Vector1_5c761f75_773e_42ed_b242_72e6b25acebd_Uniform;
o.Smoothness = Vector1_91e780ac_52c0_4e9a_bd0e_974f5805854d_Uniform;
o.Occlusion = Saturation_96e26331_ca74_4d63_aacd_f34516700ae6_Output;
o.Tangent = Add_204f3b90_9101_429f_acf1_8fdace08eb17_Output;
float3x3 worldToTangent;
worldToTangent[0] = float3(1, 0, 0);
worldToTangent[1] = float3(0, 1, 0);
worldToTangent[2] = float3(0, 0, 1);
float3 tangentTWS = mul(o.Tangent, worldToTangent);
o.WorldVectors = float3x3(tangentTWS, worldSpaceBitangent, worldSpaceNormal);
o.Anisotropy = Vector1_8272d735_22ca_40c5_a082_1c40f63ad50b_Uniform;
}
ENDCG
}
FallBack "Diffuse"
CustomEditor "LegacyIlluminShaderGUI"
}

10
MaterialGraphProject/Assets/Matt/Examples/Anisotropy.shader.meta


fileFormatVersion: 2
guid: 01a19a2c08481994c87ec502a371225e
timeCreated: 1495754850
licenseType: Pro
ShaderImporter:
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:

363
MaterialGraphProject/Assets/Matt/Examples/Anisotropy.unity


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!29 &1
OcclusionCullingSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_OcclusionBakeSettings:
smallestOccluder: 5
smallestHole: 0.25
backfaceThreshold: 100
m_SceneGUID: 00000000000000000000000000000000
m_OcclusionCullingData: {fileID: 0}
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 8
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
m_FogDensity: 0.01
m_LinearFogStart: 0
m_LinearFogEnd: 300
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
m_AmbientIntensity: 1
m_AmbientMode: 0
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
m_HaloStrength: 0.5
m_FlareStrength: 1
m_FlareFadeSpeed: 3
m_HaloTexture: {fileID: 0}
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
m_DefaultReflectionMode: 0
m_DefaultReflectionResolution: 128
m_ReflectionBounces: 1
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0.15402943, g: 0.17526728, b: 0.18618384, a: 1}
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 11
m_GIWorkflowMode: 0
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
m_IndirectOutputScale: 1
m_AlbedoBoost: 1
m_TemporalCoherenceThreshold: 1
m_EnvironmentLightingMode: 0
m_EnableBakedLightmaps: 1
m_EnableRealtimeLightmaps: 1
m_LightmapEditorSettings:
serializedVersion: 9
m_Resolution: 2
m_BakeResolution: 40
m_TextureWidth: 1024
m_TextureHeight: 1024
m_AO: 0
m_AOMaxDistance: 1
m_CompAOExponent: 1
m_CompAOExponentDirect: 0
m_Padding: 2
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 1
m_FinalGather: 0
m_FinalGatherFiltering: 1
m_FinalGatherRayCount: 256
m_ReflectionCompression: 2
m_MixedBakeMode: 2
m_BakeBackend: 0
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
m_PVRSampleCount: 500
m_PVRBounces: 2
m_PVRFiltering: 0
m_PVRFilteringMode: 1
m_PVRCulling: 1
m_PVRFilteringGaussRadiusDirect: 1
m_PVRFilteringGaussRadiusIndirect: 5
m_PVRFilteringGaussRadiusAO: 2
m_PVRFilteringAtrousColorSigma: 1
m_PVRFilteringAtrousNormalSigma: 1
m_PVRFilteringAtrousPositionSigma: 1
m_LightingDataAsset: {fileID: 0}
m_UseShadowmask: 1
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2
m_ObjectHideFlags: 0
m_BuildSettings:
serializedVersion: 2
agentTypeID: 0
agentRadius: 0.5
agentHeight: 2
agentSlope: 45
agentClimb: 0.4
ledgeDropHeight: 0
maxJumpAcrossDistance: 0
minRegionArea: 2
manualCellSize: 0
cellSize: 0.16666667
manualTileSize: 0
tileSize: 256
accuratePlacement: 0
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1 &1175244166
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 1175244170}
- component: {fileID: 1175244169}
- component: {fileID: 1175244168}
- component: {fileID: 1175244167}
m_Layer: 0
m_Name: Cube
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!23 &1175244167
MeshRenderer:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1175244166}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 2100000, guid: b691b84f941db2740ba393773c55e10e, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!65 &1175244168
BoxCollider:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1175244166}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
serializedVersion: 2
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!33 &1175244169
MeshFilter:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1175244166}
m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0}
--- !u!4 &1175244170
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1175244166}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -0.6726772, y: 1.891152, z: 1.7966161}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1268097406
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 1268097408}
- component: {fileID: 1268097407}
m_Layer: 0
m_Name: Directional Light
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!108 &1268097407
Light:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1268097406}
m_Enabled: 1
serializedVersion: 8
m_Type: 1
m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
m_Intensity: 1
m_Range: 10
m_SpotAngle: 30
m_CookieSize: 10
m_Shadows:
m_Type: 2
m_Resolution: -1
m_CustomResolution: -1
m_Strength: 1
m_Bias: 0.05
m_NormalBias: 0.4
m_NearPlane: 0.2
m_Cookie: {fileID: 0}
m_DrawHalo: 0
m_Flare: {fileID: 0}
m_RenderMode: 0
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_Lightmapping: 4
m_AreaSize: {x: 1, y: 1}
m_BounceIntensity: 1
m_FalloffTable:
m_Table[0]: 0
m_Table[1]: 0
m_Table[2]: 0
m_Table[3]: 0
m_Table[4]: 0
m_Table[5]: 0
m_Table[6]: 0
m_Table[7]: 0
m_Table[8]: 0
m_Table[9]: 0
m_Table[10]: 0
m_Table[11]: 0
m_Table[12]: 0
m_ColorTemperature: 6570
m_UseColorTemperature: 0
m_ShadowRadius: 0
m_ShadowAngle: 0
--- !u!4 &1268097408
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1268097406}
m_LocalRotation: {x: 0.2754269, y: -0.6067653, z: -0.25753763, w: 0.6997502}
m_LocalPosition: {x: -2.93, y: 3, z: -0.69}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 4.182, y: -83.555, z: -44.148003}
--- !u!1 &1652373340
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 1652373345}
- component: {fileID: 1652373344}
- component: {fileID: 1652373343}
- component: {fileID: 1652373342}
- component: {fileID: 1652373341}
m_Layer: 0
m_Name: Main Camera
m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!81 &1652373341
AudioListener:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1652373340}
m_Enabled: 1
--- !u!124 &1652373342
Behaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1652373340}
m_Enabled: 1
--- !u!92 &1652373343
Behaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1652373340}
m_Enabled: 1
--- !u!20 &1652373344
Camera:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1652373340}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 1
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 1000
field of view: 60
orthographic: 0
orthographic size: 5
m_Depth: -1
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 1
m_AllowMSAA: 1
m_ForceIntoRT: 0
m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: 0.022
m_StereoMirrorMode: 0
--- !u!4 &1652373345
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1652373340}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 1, z: -10}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}

8
MaterialGraphProject/Assets/Matt/Examples/Anisotropy.unity.meta


fileFormatVersion: 2
guid: e62816a8b56c9964d9d512ec8496d304
timeCreated: 1495753720
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

69
MaterialGraphProject/Assets/NewNodes/WIP/SphericalIndentationNode.cs


using UnityEngine.Graphing;
namespace UnityEngine.MaterialGraph
{
[Title("UV/SphericalIndentation")]
public class SphericalIndentationNode : AnyNode<SphericalIndentationNode.Definition>
{
public class Definition : IAnyNodeDefinition
{
public string name { get { return "SphericalIndentation"; } }
public AnyNodeProperty[] properties
{
get
{
return new AnyNodeProperty[]
{
// slotId is the 'immutable' value we used to connect things
new AnyNodeProperty { slotId= 0, name = "inUVs", description = "Input UV coords", propertyType = PropertyType.Vector2, value = Vector4.zero, state = AnyNodePropertyState.Slot },
new AnyNodeProperty { slotId= 1, name = "center", description = "UV center point", propertyType = PropertyType.Vector2, value= new Vector4(0.5f, 0.5f, 0.5f, 0.5f), state = AnyNodePropertyState.Constant },
new AnyNodeProperty { slotId= 2, name = "height", description = "Height off surface", propertyType = PropertyType.Float, value= Vector4.zero, state = AnyNodePropertyState.Constant },
new AnyNodeProperty { slotId= 3, name = "radius", description = "Radius", propertyType = PropertyType.Float, value= Vector4.one, state = AnyNodePropertyState.Constant },
};
}
}
public AnyNodeSlot[] outputs
{
get
{
return new AnyNodeSlot[]
{
new AnyNodeSlot { slotId= 4, name = "outUVs", description = "Output UV texture coordinates", slotValueType = SlotValueType.Vector2, value = Vector4.zero },
new AnyNodeSlot { slotId= 5, name = "outNormal", description = "Output Normal in tangent space", slotValueType = SlotValueType.Vector3, value = Vector4.zero }
};
}
}
public ShaderGlobal[] globals { get { return new ShaderGlobal[] { ShaderGlobal.TangentSpaceViewDirection }; } }
public string hlsl
{
get
{
return
"float radius2= radius*radius;\n" +
"float3 cur= float3(inUVs.xy, 0.0f);\n" +
"float3 sphereCenter = float3(center, height);\n" +
"float3 edgeA = sphereCenter - cur;\n" +
"float a2 = dot(edgeA, edgeA);\n" +
"outUVs= inUVs;\n" +
"outNormal= float3(0.0f, 0.0f, 1.0f);\n" +
"if (a2 < radius2)\n" +
"{\n" +
" float a = sqrt(a2);\n" +
" edgeA = edgeA / a;\n" +
" float cosineR = dot(edgeA, tangentSpaceViewDirection.xyz);\n" +
" float x = cosineR * a - sqrt(-a2 + radius2 + a2 * cosineR * cosineR);\n" +
" float3 intersectedEdge = cur + tangentSpaceViewDirection * x;\n" +
" outNormal= normalize(sphereCenter - intersectedEdge);\n" +
" outUVs = intersectedEdge.xy;\n" +
"}\n";
}
}
}
}
}

12
MaterialGraphProject/Assets/NewNodes/WIP/SphericalIndentationNode.cs.meta


fileFormatVersion: 2
guid: c0688eef7b3723840beb4e69e24f7b9b
timeCreated: 1495748007
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

1
MaterialGraphProject/Assets/SphereDent.ShaderGraph
文件差异内容过多而无法显示
查看文件

9
MaterialGraphProject/Assets/SphereDent.ShaderGraph.meta


fileFormatVersion: 2
guid: b63da350811f7ba48914e852a299204c
timeCreated: 1495747830
licenseType: Pro
ScriptedImporter:
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3}

1001
MaterialGraphProject/Assets/TestAssets/Lava_flowmap.png
文件差异内容过多而无法显示
查看文件

84
MaterialGraphProject/Assets/TestAssets/Lava_flowmap.png.meta


fileFormatVersion: 2
guid: bd7bebe6d50204bf5837af485488c872
timeCreated: 1495752952
licenseType: Pro
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 4
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 0
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -1
wrapU: -1
wrapV: -1
wrapW: -1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

65
MaterialGraphProject/Assets/TestAssets/RockMaterial1.sbsar.meta


fileFormatVersion: 2
guid: b69a7e88e13e24260acb38513f619ff2
timeCreated: 1495753980
licenseType: Pro
SubstanceImporter:
serializedVersion: 5
materialInstances:
- serializedVersion: 16
name: RockMaterial1
prototypeName: RockMaterial1
shaderName:
shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
shaderKeywords:
renderQueue: -1
lightmapFlags: 4
inputs: []
materialInformation:
serializedVersion: 5
offset: {x: 0, y: 0}
scale: {x: 1, y: 1}
generateMipmaps: 1
generateAllOutputs: 0
animationUpdateRate: 0
materialProperties:
serializedVersion: 3
texEnvs: []
floats: []
colors: []
textureParameters:
- name: RockMaterial1_basecolor
alphaSource: 6
filterMode: 1
aniso: 1
wrapMode: 0
- name: RockMaterial1_normal
alphaSource: 0
filterMode: 1
aniso: 1
wrapMode: 0
- name: RockMaterial1_metallic
alphaSource: 7
filterMode: 1
aniso: 1
wrapMode: 0
textureAssignments:
- shaderProp: _MainTex
material: {instanceID: 0}
baseUID: 779270956
- shaderProp: _BumpMap
material: {instanceID: 0}
baseUID: 779270958
- shaderProp: _MetallicGlossMap
material: {instanceID: 0}
baseUID: 779270954
buildTargetSettings:
- serializedVersion: 2
buildTarget:
textureWidth: 512
textureHeight: 512
textureFormat: 0
loadingBehavior: 1
deletedPrototypes: []
userData:
assetBundleName:
assetBundleVariant:

244
MaterialGraphProject/Assets/TestAssets/portrait_mask.png

之前 之后
宽度: 256  |  高度: 256  |  大小: 29 KiB

84
MaterialGraphProject/Assets/TestAssets/portrait_mask.png.meta


fileFormatVersion: 2
guid: 28f8651cc7780724692679226b6de1ba
timeCreated: 1495753817
licenseType: Pro
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 4
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -1
wrapU: -1
wrapV: -1
wrapW: -1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

52
MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/Presenters/SamplerAssetPresenter.cs


using System;
using System.Collections.Generic;
using RMGUI.GraphView;
using UnityEditor.Graphing.Drawing;
using UnityEngine;
using UnityEngine.MaterialGraph;
namespace UnityEditor.MaterialGraph.Drawing
{
class SamplerAssetControlPresenter : GraphControlPresenter
{
private string[] m_TextureTypeNames;
private string[] textureTypeNames
{
get
{
if (m_TextureTypeNames == null)
m_TextureTypeNames = Enum.GetNames(typeof(TextureType));
return m_TextureTypeNames;
}
}
public override void OnGUIHandler()
{
base.OnGUIHandler();
var tNode = node as UnityEngine.MaterialGraph.SamplerAssetNode;
if (tNode == null)
return;
tNode.exposedState = (PropertyNode.ExposedState)EditorGUILayout.EnumPopup(new GUIContent("Exposed"), tNode.exposedState);
tNode.defaultTexture = EditorGUILayout.MiniThumbnailObjectField(new GUIContent("Texture"), tNode.defaultTexture, typeof(Texture), null) as Texture;
tNode.textureType = (TextureType)EditorGUILayout.Popup((int)tNode.textureType, textureTypeNames, EditorStyles.popup);
}
public override float GetHeight()
{
return 3 * (EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing) + EditorGUIUtility.standardVerticalSpacing;
}
}
[Serializable]
public class SamplerAssetNodePresenter : MaterialNodePresenter
{
protected override IEnumerable<GraphElementPresenter> GetControlData()
{
var instance = CreateInstance<SamplerAssetControlPresenter>();
instance.Initialize(node);
return new List<GraphElementPresenter> { instance };
}
}
}

12
MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/Presenters/SamplerAssetPresenter.cs.meta


fileFormatVersion: 2
guid: ec47786947b3100438fbe355a2a23000
timeCreated: 1495754404
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

136
MaterialGraphProject/Assets/UnityShaderEditor/Runtime/Nodes/Input/Texture/SamplerAssetNode.cs


using System;
using System.Collections.Generic;
using System.Linq;
#if UNITY_EDITOR
using UnityEditor;
#endif
using UnityEngine.Graphing;
namespace UnityEngine.MaterialGraph
{
[Title("Input/Texture/Sampler Asset")]
public class SamplerAssetNode : PropertyNode
{
protected const string kOutputSlotRGBAName = "Sampler2D";
public const int OutputID = 0;
[SerializeField]
private string m_SerializedTexture;
[SerializeField]
private TextureType m_TextureType;
[Serializable]
private class TextureHelper
{
public Texture texture;
}
public override bool hasPreview { get { return false; } }
#if UNITY_EDITOR
public Texture defaultTexture
{
get
{
if (string.IsNullOrEmpty(m_SerializedTexture))
return null;
var tex = new TextureHelper();
EditorJsonUtility.FromJsonOverwrite(m_SerializedTexture, tex);
return tex.texture;
}
set
{
if (defaultTexture == value)
return;
var tex = new TextureHelper();
tex.texture = value;
m_SerializedTexture = EditorJsonUtility.ToJson(tex, true);
if (onModified != null)
{
onModified(this, ModificationScope.Node);
}
}
}
#else
public Texture defaultTexture {get; set; }
#endif
public TextureType textureType
{
get { return m_TextureType; }
set
{
if (m_TextureType == value)
return;
m_TextureType = value;
if (onModified != null)
{
onModified(this, ModificationScope.Graph);
}
}
}
public SamplerAssetNode()
{
name = "SamplerAsset";
UpdateNodeAfterDeserialization();
}
public sealed override void UpdateNodeAfterDeserialization()
{
AddSlot(new MaterialSlot(OutputID, kOutputSlotRGBAName, kOutputSlotRGBAName, SlotType.Output, SlotValueType.Sampler2D, Vector4.zero));
RemoveSlotsNameNotMatching(validSlots);
}
protected int[] validSlots
{
get { return new[] { OutputID }; }
}
public override void CollectPreviewMaterialProperties(List<PreviewProperty> properties)
{
properties.Add(GetPreviewProperty());
}
// Properties
public override void GeneratePropertyBlock(PropertyGenerator visitor, GenerationMode generationMode)
{
visitor.AddShaderProperty(
new TexturePropertyChunk(
propertyName,
description,
defaultTexture, m_TextureType,
PropertyChunk.HideState.Visible,
exposedState == ExposedState.Exposed ?
TexturePropertyChunk.ModifiableState.Modifiable
: TexturePropertyChunk.ModifiableState.NonModifiable));
}
public override void GeneratePropertyUsages(ShaderGenerator visitor, GenerationMode generationMode)
{
visitor.AddShaderChunk("sampler2D " + propertyName + ";", true);
}
public override PreviewProperty GetPreviewProperty()
{
return new PreviewProperty
{
m_Name = propertyName,
m_PropType = PropertyType.Texture,
m_Texture = defaultTexture
};
}
public override PropertyType propertyType { get { return PropertyType.Texture; } }
}
}

8
MaterialGraphProject/Assets/UnityShaderEditor/Runtime/Nodes/Input/Texture/SamplerAssetNode.cs.meta


fileFormatVersion: 2
guid: bc508c398f312644bb3c00c6ad160133
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:

44
MaterialGraphProject/Assets/_MingWai/Gradient.asset


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!86 &8600000
CustomRenderTexture:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: Gradient
m_ImageContentsHash:
serializedVersion: 2
Hash: 00000000000000000000000000000000
m_Width: 256
m_Height: 256
m_AntiAliasing: 1
m_DepthFormat: 0
m_ColorFormat: 0
m_MipMap: 0
m_GenerateMips: 1
m_SRGB: 0
m_TextureSettings:
serializedVersion: 2
m_FilterMode: 1
m_Aniso: 1
m_MipBias: 0
m_WrapU: 1
m_WrapV: 1
m_WrapW: 1
m_Dimension: 2
m_VolumeDepth: 1
m_Material: {fileID: 2100000, guid: 0a9ee03ce6ea51f4e92acb81546fefc1, type: 2}
m_InitSource: 0
m_InitMaterial: {fileID: 0}
m_InitColor: {r: 1, g: 1, b: 1, a: 1}
m_InitTexture: {fileID: 0}
m_UpdateMode: 1
m_InitializationMode: 1
m_UpdateZoneSpace: 0
m_CurrentUpdateZoneSpace: 0
m_UpdateZones: []
m_UpdatePeriod: 0
m_ShaderPass: 0
m_CubemapFaceMask: 4294967295
m_DoubleBuffered: 0
m_WrapUpdateZones: 0

9
MaterialGraphProject/Assets/_MingWai/Gradient.asset.meta


fileFormatVersion: 2
guid: 28805740b89754d4f87ecf03fa9a100d
timeCreated: 1495750594
licenseType: Pro
NativeFormatImporter:
mainObjectFileID: 8600000
userData:
assetBundleName:
assetBundleVariant:

101
MaterialGraphProject/Assets/_MingWai/GradientShader.shader


Shader "UnityEngine.MaterialGraph.ExportTextureMasterNode31754f39-6eb9-4773-ae21-b2fca7f2fcde"
{
Properties
{
}
SubShader
{
Tags{ "Queue" = "Geometry" "IgnoreProjector" = "True" "RenderType" = "Opaque" }
ZWrite Off
Blend One Zero
Pass
{
CGPROGRAM
#include "UnityCustomRenderTexture.cginc"
#pragma vertex CustomRenderTextureVertexShader
#pragma fragment frag
#pragma target 4.0
v2f_customrendertexture CustomRenderTextureVertexShader_Preview(appdata_base IN)
{
v2f_customrendertexture OUT;
OUT.vertex = UnityObjectToClipPos(IN.vertex);
OUT.primitiveID = 0;//TODO
OUT.localTexcoord = IN.texcoord;
OUT.globalTexcoord = IN.texcoord;
OUT.direction = CustomRenderTextureComputeCubeDirection(OUT.globalTexcoord.xy);
return OUT;
}
inline void unity_Gradient_float(float v, out float4 finalColor, out float finalR, out float finalG, out float finalB, out float finalA)
{
float3 color0 = float3(0.1176471,0.08960744,0.07439446);
float colorp0 = 0;
float3 color1 = float3(0,0,0);
float colorp1 = 0.1147021;
float3 color2 = float3(0.2132353,0.07766853,0);
float colorp2 = 0.2500038;
float3 color3 = float3(0.6364486,0.2844907,0);
float colorp3 = 0.3764706;
float3 color4 = float3(1,0.9310344,0);
float colorp4 = 0.5058824;
float3 color5 = float3(1,1,1);
float colorp5 = 0.6529488;
float3 color6 = float3(1,0.6413793,0);
float colorp6 = 0.7823606;
float3 color7 = float3(0.4779412,0.353851,0.02811421);
float colorp7 = 1;
float3 gradcolor = color0;
float colorLerpPosition0 = smoothstep(colorp0,colorp1,v);
gradcolor = lerp(gradcolor,color1,colorLerpPosition0);
float colorLerpPosition1 = smoothstep(colorp1,colorp2,v);
gradcolor = lerp(gradcolor,color2,colorLerpPosition1);
float colorLerpPosition2 = smoothstep(colorp2,colorp3,v);
gradcolor = lerp(gradcolor,color3,colorLerpPosition2);
float colorLerpPosition3 = smoothstep(colorp3,colorp4,v);
gradcolor = lerp(gradcolor,color4,colorLerpPosition3);
float colorLerpPosition4 = smoothstep(colorp4,colorp5,v);
gradcolor = lerp(gradcolor,color5,colorLerpPosition4);
float colorLerpPosition5 = smoothstep(colorp5,colorp6,v);
gradcolor = lerp(gradcolor,color6,colorLerpPosition5);
float colorLerpPosition6 = smoothstep(colorp6,colorp7,v);
gradcolor = lerp(gradcolor,color7,colorLerpPosition6);
float alpha0 = 1;
float alphap0 = 0;
float alpha1 = 1;
float alphap1 = 1;
float gradalpha = alpha0;
float alphaLerpPosition0 = smoothstep(alphap0,alphap1,v);
gradalpha = lerp(gradalpha,alpha1,alphaLerpPosition0);
finalColor = float4(gradcolor,gradalpha);
finalR = finalColor.r;
finalG = finalColor.g;
finalB = finalColor.b;
finalA = finalColor.a;
}
float4 frag(v2f_customrendertexture IN) : COLOR
{
half4 uv0 = float4(IN.localTexcoord.xyz,1.0);
float4 UV_49a5272a_c49d_4f7e_94ba_3a2e27fcbed4_UV = uv0;
float4 Gradient_9866089f_0763_409d_904a_c1f7836ea742_finalColor;
float Gradient_9866089f_0763_409d_904a_c1f7836ea742_finalR;
float Gradient_9866089f_0763_409d_904a_c1f7836ea742_finalG;
float Gradient_9866089f_0763_409d_904a_c1f7836ea742_finalB;
float Gradient_9866089f_0763_409d_904a_c1f7836ea742_finalA;
unity_Gradient_float(UV_49a5272a_c49d_4f7e_94ba_3a2e27fcbed4_UV, Gradient_9866089f_0763_409d_904a_c1f7836ea742_finalColor, Gradient_9866089f_0763_409d_904a_c1f7836ea742_finalR, Gradient_9866089f_0763_409d_904a_c1f7836ea742_finalG, Gradient_9866089f_0763_409d_904a_c1f7836ea742_finalB, Gradient_9866089f_0763_409d_904a_c1f7836ea742_finalA);
return Gradient_9866089f_0763_409d_904a_c1f7836ea742_finalColor;
}
ENDCG
}
}
Fallback Off
}

10
MaterialGraphProject/Assets/_MingWai/GradientShader.shader.meta


fileFormatVersion: 2
guid: 5aa1351ad9e754747b68549dbdc6971e
timeCreated: 1495753069
licenseType: Pro
ShaderImporter:
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:

1
MaterialGraphProject/Assets/_MingWai/GradientTexture.ShaderGraph
文件差异内容过多而无法显示
查看文件

9
MaterialGraphProject/Assets/_MingWai/GradientTexture.ShaderGraph.meta


fileFormatVersion: 2
guid: 7da779631b3abb64da5b34a8ac4b5011
timeCreated: 1495753206
licenseType: Pro
ScriptedImporter:
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3}

21
MaterialGraphProject/Assets/_MingWai/UnityEngine.MaterialGraph.ExportTextureMasterNodee933fd86-9b63-40a2-9321-e857830b2339.mat


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: UnityEngine.MaterialGraph.ExportTextureMasterNodee933fd86-9b63-40a2-9321-e857830b2339
m_Shader: {fileID: 4800000, guid: 7da779631b3abb64da5b34a8ac4b5011, type: 3}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs: []
m_Floats: []
m_Colors: []

9
MaterialGraphProject/Assets/_MingWai/UnityEngine.MaterialGraph.ExportTextureMasterNodee933fd86-9b63-40a2-9321-e857830b2339.mat.meta


fileFormatVersion: 2
guid: 0a9ee03ce6ea51f4e92acb81546fefc1
timeCreated: 1495753275
licenseType: Pro
NativeFormatImporter:
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

9
MaterialGraphProject/Assets/snow.meta


fileFormatVersion: 2
guid: 53a2ad442875a484db8e0ffd69c38c77
folderAsset: yes
timeCreated: 1495725863
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

1001
MaterialGraphProject/Assets/Andre/Meshes/Lava.fbx
文件差异内容过多而无法显示
查看文件

158
MaterialGraphProject/Assets/Andre/Meshes/Lava.fbx.meta


fileFormatVersion: 2
guid: f3a76c41447b84daabaa84848510464d
timeCreated: 1495749721
licenseType: Pro
ModelImporter:
serializedVersion: 21
fileIDToRecycleName:
100000: //RootNode
100002: Lava_surface
100004: Mesh_2
100006: Mesh_2_10
100008: Mesh_2_11
100010: Mesh_2_12
100012: Mesh_2_13
100014: Mesh_2_14
100016: Mesh_2_2
100018: Mesh_2_3
100020: Mesh_2_4
100022: Mesh_2_5
100024: Mesh_2_6
100026: Mesh_2_7
100028: Mesh_2_8
100030: Mesh_2_9
100032: RockMesh
100034: Rocks
100036: LavaPoolwall
400000: //RootNode
400002: Lava_surface
400004: Mesh_2
400006: Mesh_2_10
400008: Mesh_2_11
400010: Mesh_2_12
400012: Mesh_2_13
400014: Mesh_2_14
400016: Mesh_2_2
400018: Mesh_2_3
400020: Mesh_2_4
400022: Mesh_2_5
400024: Mesh_2_6
400026: Mesh_2_7
400028: Mesh_2_8
400030: Mesh_2_9
400032: RockMesh
400034: Rocks
400036: LavaPoolwall
2300000: Lava_surface
2300002: Mesh_2
2300004: Mesh_2_10
2300006: Mesh_2_11
2300008: Mesh_2_12
2300010: Mesh_2_13
2300012: Mesh_2_14
2300014: Mesh_2_2
2300016: Mesh_2_3
2300018: Mesh_2_4
2300020: Mesh_2_5
2300022: Mesh_2_6
2300024: Mesh_2_7
2300026: Mesh_2_8
2300028: Mesh_2_9
2300030: RockMesh
2300032: LavaPoolwall
3300000: Lava_surface
3300002: Mesh_2
3300004: Mesh_2_10
3300006: Mesh_2_11
3300008: Mesh_2_12
3300010: Mesh_2_13
3300012: Mesh_2_14
3300014: Mesh_2_2
3300016: Mesh_2_3
3300018: Mesh_2_4
3300020: Mesh_2_5
3300022: Mesh_2_6
3300024: Mesh_2_7
3300026: Mesh_2_8
3300028: Mesh_2_9
3300030: RockMesh
3300032: LavaPoolwall
4300000: Lava_surface
4300002: RockMesh
4300004: LavaPoolwall
materials:
importMaterials: 1
materialName: 0
materialSearch: 1
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
resampleCurves: 1
optimizeGameObjects: 0
motionNodeName:
rigImportErrors:
rigImportWarnings:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
animationDoRetargetingWarnings: 0
importAnimatedCustomProperties: 0
animationCompression: 1
animationRotationError: 0.5
animationPositionError: 0.5
animationScaleError: 0.5
animationWrapMode: 0
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations: []
isReadable: 1
meshes:
lODScreenPercentages: []
globalScale: 1
meshCompression: 0
addColliders: 0
importVisibility: 1
importBlendShapes: 1
importCameras: 1
importLights: 1
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
optimizeMeshForGPU: 1
keepQuads: 0
weldVertices: 1
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVPackMargin: 4
useFileScale: 1
tangentSpace:
normalSmoothAngle: 60
normalImportMode: 0
tangentImportMode: 3
normalCalculationMode: 4
importAnimation: 1
copyAvatar: 0
humanDescription:
serializedVersion: 2
human: []
skeleton: []
armTwist: 0.5
foreArmTwist: 0.5
upperLegTwist: 0.5
legTwist: 0.5
armStretch: 0.05
legStretch: 0.05
feetSpacing: 0
rootMotionBoneName:
rootMotionBoneRotation: {x: 0, y: 0, z: 0, w: 1}
hasTranslationDoF: 0
hasExtraRoot: 0
skeletonHasParents: 1
lastHumanDescriptionAvatarSource: {instanceID: 0}
animationType: 0
humanoidOversampling: 1
additionalBone: 0
userData:
assetBundleName:
assetBundleVariant:

9
MaterialGraphProject/Assets/Andre/Meshes/Materials.meta


fileFormatVersion: 2
guid: 719492de9857e490e94dd841853f712d
folderAsset: yes
timeCreated: 1495749720
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

75
MaterialGraphProject/Assets/Andre/Meshes/Materials/Border.mat


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: Border
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0.275
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 0.28676468, g: 0.2134739, b: 0.13494807, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}

9
MaterialGraphProject/Assets/Andre/Meshes/Materials/Border.mat.meta


fileFormatVersion: 2
guid: ed9027901b3444444b753a7aa143cb7c
timeCreated: 1495757443
licenseType: Pro
NativeFormatImporter:
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

116
MaterialGraphProject/Assets/Andre/Meshes/Materials/Lava.mat


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: Lava
m_Shader: {fileID: 4800000, guid: cb267e18a2bfb48199dd718e33eb9f9b, type: 3}
m_ShaderKeywords:
m_LightmapFlags: 1
m_EnableInstancingVariants: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- Texture_3cc862ff_e5c3_40c2_a0f2_895da84195ea_Uniform:
m_Texture: {fileID: 2800000, guid: a653bbc25cc7e4794829cf7b1184abcb, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- Texture_73d7755c_9da7_46d2_90c6_35c2a880d380_Uniform:
m_Texture: {fileID: -931156776, guid: b69a7e88e13e24260acb38513f619ff2, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- Texture_8304e17f_0ca3_45b8_9081_4e083e4ffba7_Uniform:
m_Texture: {fileID: 2800000, guid: 7296f51323ae9485a9c834c4e3d722ed, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- Texture_9dcd98df_78a5_4ad3_83dd_e3c00c88f898_Uniform:
m_Texture: {fileID: 2800000, guid: 9d64a9e7ca6864704ae6b8ca7afc9d85, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- Texture_aa489395_d5b1_4bce_a08c_71ce4329894d_Uniform:
m_Texture: {fileID: 2800000, guid: 7296f51323ae9485a9c834c4e3d722ed, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- Texture_c384b973_02cf_4076_96d9_302f320a2dd5_Uniform:
m_Texture: {fileID: 2800000, guid: a653bbc25cc7e4794829cf7b1184abcb, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- Texture_d6d1ed65_5575_444c_8f92_38740ace2353_Uniform:
m_Texture: {fileID: -931156776, guid: b69a7e88e13e24260acb38513f619ff2, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- Texture_ead3f7f8_56e5_41f9_8217_555fb21e0536_Uniform:
m_Texture: {fileID: 2800000, guid: 9d64a9e7ca6864704ae6b8ca7afc9d85, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- Texture_f6eb7ab6_0df6_4d1f_a833_847f9eefa1ce_Uniform:
m_Texture: {fileID: 2800000, guid: bd7bebe6d50204bf5837af485488c872, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- Vector1_2fa9bd83_0823_4530_9787_f0fab2f47430_Uniform: 1.95
- Vector1_48a064e9_29c4_4cdd_8bf7_34902bb50605_Uniform: -3
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- Color_0cf876a7_4590_4973_82b7_3f878b008b3c_Uniform: {r: 4.007354, g: 1.2436613,
b: 0, a: 1}
- Color_d1ecd429_6e84_47b1_903b_60f454b7d326_Uniform: {r: 0, g: 0, b: 0, a: 1}
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}

9
MaterialGraphProject/Assets/Andre/Meshes/Materials/Lava.mat.meta


fileFormatVersion: 2
guid: cb86b209e3893428e80cc4e27728fe64
timeCreated: 1495749721
licenseType: Pro
NativeFormatImporter:
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

125
MaterialGraphProject/Assets/Andre/Meshes/Materials/RockLava.mat


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: RockLava
m_Shader: {fileID: 4800000, guid: 9ab5e16c2083a4fe689209a8c1ae425e, type: 3}
m_ShaderKeywords:
m_LightmapFlags: 0
m_EnableInstancingVariants: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- Texture_3cc862ff_e5c3_40c2_a0f2_895da84195ea_Uniform:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- Texture_73d7755c_9da7_46d2_90c6_35c2a880d380_Uniform:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- Texture_8304e17f_0ca3_45b8_9081_4e083e4ffba7_Uniform:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- Texture_9dcd98df_78a5_4ad3_83dd_e3c00c88f898_Uniform:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- Texture_a6eb1bfb_6ea7_4e0b_bfc1_c9e0ed434f76_Uniform:
m_Texture: {fileID: 2800000, guid: 84462bdfeee9d694bbebf34e5f3faa74, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- Texture_aa489395_d5b1_4bce_a08c_71ce4329894d_Uniform:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- Texture_c384b973_02cf_4076_96d9_302f320a2dd5_Uniform:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- Texture_d6d1ed65_5575_444c_8f92_38740ace2353_Uniform:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- Texture_df5248d2_ffaf_4f62_9322_5575ac4818d0_Uniform:
m_Texture: {fileID: 2800000, guid: aa460a2956f927d4ab684aa4970bf76a, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- Texture_ead3f7f8_56e5_41f9_8217_555fb21e0536_Uniform:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- Texture_f6eb7ab6_0df6_4d1f_a833_847f9eefa1ce_Uniform:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- Vector1_2fa9bd83_0823_4530_9787_f0fab2f47430_Uniform: 0.2
- Vector1_48a064e9_29c4_4cdd_8bf7_34902bb50605_Uniform: 1
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- Color_0cf876a7_4590_4973_82b7_3f878b008b3c_Uniform: {r: 0, g: 0, b: 0, a: 0}
- Color_11e7c6f6_9284_4d76_bfbf_3a1eced790b6_Uniform: {r: 2, g: 0.5379311, b: 0,
a: 1}
- Color_d1ecd429_6e84_47b1_903b_60f454b7d326_Uniform: {r: 0, g: 0, b: 0, a: 0}
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}

9
MaterialGraphProject/Assets/Andre/Meshes/Materials/RockLava.mat.meta


fileFormatVersion: 2
guid: 01e2d522311ef48b99438b41d63a496c
timeCreated: 1495749721
licenseType: Pro
NativeFormatImporter:
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

633
MaterialGraphProject/Assets/Andre/Scenes/Lava/LightingData.asset
文件差异内容过多而无法显示
查看文件

9
MaterialGraphProject/Assets/Andre/Scenes/Lava/LightingData.asset.meta


fileFormatVersion: 2
guid: 3590b96a6c1c8427191dc231f84f7919
timeCreated: 1495755068
licenseType: Pro
NativeFormatImporter:
mainObjectFileID: 25800000
userData:
assetBundleName:
assetBundleVariant:

790
MaterialGraphProject/Assets/Andre/Scenes/Lava/ReflectionProbe-0.exr


v/1channelschlist7BGRcompressioncompressiondataWindowbox2i�displayWindowbox2i�lineOrderlineOrderpixelAspectRatiofloat�?screenWindowCenterv2fscreenWindowWidthfloat�?Y+���"7ʽ@��������������m��w����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������_�����ݿ�����߯�U��b�o��AFq� �q�r� $�I$�J(��,��,��0� 0� 0� 4� 0� 4�L8�M8�M8�@Î4�8�4��8�;��=�=?�;=@��8��A�<�8�;@�@�C���C��?�s�?��=?�??�D?<�OC�<?�??��-A��ď�����?�����O������������������Ώ?��!?���$?�C��?�#� ?���?������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������O�8����O�?��?���<�?ӿ
?�s�?�c�@����������<�;�A���<�?��98���@<�<��<��<�������8�=�@��5��8�N8��8�N4�O8��4ӏ0Ӎ4�M8�L0Ӎ4�L0�L4�L4�M0� 0��0��0� 0��0��,��,��(��(��(��$�I$�H$� �q�q�q�a�q�q�q�Q�X8X����\>\�� �
� ���
�L
(�r���I00�.P����
�"���FJBX��m� ���[j� ���[���V,y`ů-�qhUl!t��7��䯁]���8@0Ȍ�"�!4�)�����/,l" 
E��B6,���q���\�� �b��`l`� ��p+�.H�¥�->�:�K\�p������ \�p�����p�$�.��p��S�J(:�jD�R)�ȹ1�E���d`�RL\�:�39�N9�C�S]8�9�=��X(��
�]��a��qƾ5�'�tPD�4/���1"�b@���T�q��V/B��W +!n� �_��W[=u���������� C�������w�����|���⻹��]���s.�V�*�vJ�Q����hf�f��۝�q��wr'!i����I�2��9������d��lpϩUT��J�'T��T����D�5�(�tMĺ%���"��2,�p��3l��d��6i��2��`��N)����(�v
0]�� 2Q�X�O���5�-�tj"]��ERfULHZLH������8nV�*�z���d/B�(888888*
~��5q���iu��k��A��zO��ڍF�Q�b �����~
O���ɭ��u���ku��Q7)��������ssssr��ۧ7777-T+5��f��R�n�X�}?�����~ '�F�Q���}>��i� lk���u-���[o����������h��Y�7��yy��o�t5�Ƴx�5��ټj�ٻ��k4ɨ���j�Ѻ�y�7�cY�k7�f�j���,���ݛ�Ѭ��9���]_��u�_������W_�}��_�u��U���]���U_��Uw��PS������?
�F�OI��}>�O��I�
OpppS�=���4�������}>��j5�ݷ����� �ߨ8776��ooooooG&�?�o�o�on��۴��廻�����Q;�����N��������������Tsoooooor������ �-�:_.t�\����0�:/G�e`)E_+�D,L�k*��U Z*���>Q�O-�bz���Zv�
�W:��<��<�X��k� �#PQ��$���·��o�����̊��Ef�CƳc��l�mygax[x[xZŞ����������`��"���z%Ե
�\�v��,E+_]��u�}v���+>�����S���Q�<�Ԉ�����2y0���ɳA���s ��Mu0_>`�w0�[��`�� � (�������h��|uM0��/�A4��j��GXG8� ����<_]w����w�u�_�}]��w�����W]W]W]}�_�W]_�}�����)��l��J�2H�+��Ҋ�]� ���h/������#��ID�N=3���������U�
䂪�S3��$㈖+��.#�q���f�f�'�<�2(&�]!e|�'̎u29�"�L�T������ت�YWWWW�J�G+�$�!�HC%��.(G��G������?o�o���S���Qkmn�]ku��l��&�O��j)=�����O����84�Yku�����Yk5�� ?Nnm��vݹ�M�{v�7�mۛt�7m�n[�k-f�YK)m����f�P\�O�����Q���O���� l��u��[���)>�?�o���S��AfsVg5��f����lf�XՍcX�5�cv5�Q�Ʊ�n��n���34f��7cv5�cX�5�����kƱ�k��3e��o7f��k5��Q���ꮯ�����������������������������꿾�ꪻ������������i��������}>���i� ~���� zN��N
�~��7�
Opi���O�����rkov���߷�-� ���ooj�����h41��oooooon�S��幹nn�L��mD���NnS����ooooooo��h�skn������oo#!�������|�B0"1�aH��ʁa���K���J�
�00\�^T�Z*`�VT�AfE�kY����V�Zu�0�\�c��:�KX-L�҄)�m��ɸ>�7t���G���_�� ̈�Q��X4��A!�[ ��8� ��˾2:,F,l^�ƅ�ƅɕ&�.0P`��CdXаW
�V�R�/\�v�:�"�ꓬ�q*�R���+�X]SJ���I9��:�����"��J�I���c��L`�P\�Uez��'%L��;�sD��Q6��V-���3,P�݂5U+�q"%��K�DK�t��&*��S�ƾ0>��wvU����B����W �꾿����������뮿�����������������������Wwwx@`��bL`z��R�f
bau�r�s
�9�� �"lr' ��P��ª�[s�!G ���WW�AuJ�R�yQ��K������ƾ9ĺ0����� �*�2,�+2,̉�d ��>�(�,Q$��;�Q���9���`�(��FQ�Q{���J�N8�j5�q��� �&d �fS�2C0��+�����Z���x�Eq.�
~ߧ���)������{O��n�[kmn�YI�>������ =OS���ppppj�]��k5��Y����^߷Xr�ܦ������ooon����ڦ��ssv7��0����[��k5��QH8888)�~޷�����}>�OK-n�[���ud���=?������O�����f�Y�՛��y�Qz-��Q cT5Cx�7cx�5cV5cx�7�3���q�F��o����o��jƬjƳL���{-e��7F���f�Y�����몿�����������������������������↑���������{{n���ڤ���I�8)=���P[����������ޛ�����?pppp\~ x�m�koon��ާ�����������kMH�E��H�ik������;�NSv�ݹM�D�i4�M�[�6�ͺrܷwm���{{hX�~�M�Gkkj����ۢQ��)l�)l�){0Jc2Jf̠��/x��|�U��T�I�>V��+�:Q�Hٲd�ii*ɬ<�X�+�zX��V��X��b���Z���ح���w���ǟ�Ǡ�1�3fG�Y�Q��cc�s8F_.���� л��������M�eI�� E�.H-b�p�Gb�z�� ��!�s�uϭ�<��%VQRZ��J�RrT�rU�U:�U:���� �0����1 ������Iu��ϘO>`�퐝�������X��G�M��OO0���� 렞\�)��;L?wa��#�k�U�I /��k�����������������뾮�������������������%c`��`���XǺ�]bv6G�Z�����3��;t�,�ˑ3b���D\VK2X�����U���]�-�.1Wx��Cq�I$w,|c�l
�� �"vX�+�Õ�e2��E �ό�>2 �b��1L1L
(�ėؒ�R�������"r!� �"�µ��§�_���Ep������z�ߧ�����*
���n�[����[�f ?�~Ooooooo�
O�n�[K5���k5v�[��{t�ݷ�m[{vݷ�mS{t�7�MS{t�ݷ��OS���k5��f���u�v �����������i�51-�R�e-��t����-������z�����f�Vk7F��^E������Z�F7��,圳�r���� ��6��3��Vg3F�9ctr���9g(���7��-e��_/���^f�to5��Y����뮪���������������������������������↑�������{{n�۶���m.����ߧ� ����~�e�snۧ7-؟������~߸886��M���ۦ�����jۦ��5&��I!��3����'w-�r��ۧ)����3(��G���h����ܶ���r��)�'����C��SkM�����j��X82E�Ŭ�x���� �B0#2����3�#��ȩ���0TF,0�%2,L���@�1fK�.L �X�j��K���*�XT,X��Ս, ��N�t ��T� N8c���b��p�����"����� &�x�c`�l��%���\@`� ����v�ƅ�qr���L`��1r�0�q`ౡ`J�d)�[
%����d@�%kO-�i5Ϯ,iP&T'T�Q���'@�
�Ч �"QJQ��H��c$�I�&,L`�Z�o�3�/`��X(� �3B���8�͆@]`�%YbC�}����_MN8�D� �����ʩe���Ʀ5����\����/V�l*W��T,u�]}W��������1������}_w�.���ﻗ}���w{}�������NB�(�vb]`5���F �U�)�R��9��wԀ�&dī7s���*��T��qN��9������ �]��E�݀���8cQ��� `40Q���`q�l�;�s��;(0L�A��!J Q��i�_Qɀ,a�%A۝�q��3R��QF�0c���9%R~j׀p^�{K�/[R�uX ]D�&�]��F�����Oo[������%��e����]�b �;�O[�����J����u��f������������������ڦ���on��������۷�wm��D*�z�f�[���uE�wi�w{v�ߜ��k�m����Y�f ='�������{z��ާ�Y�5f�v5F(����|�_/e��|j#�s9�X�����sd�k5��f�Y�j#��n�X�Q��r��/�����_/��Yz1cVn����k�������������������1���������������������z���ۦ����6��R].�݉�~��������u���������cz�޷�����~�e%%���5���ۦ������~�����5�I�RC��: w=Gs��*�76��ookkn���G����Z=�&�����n��74��s�����h4:
C��m�MMmmd�42H[.H^����̝/1��8�񙌸1W��W����0��f��$$�HV�� ���Q��5 ��[��cJɧ#N�r��<�oly���)�K�|P��)��Rc0(3FE&�lx�4<5Cc�x���!1e��L�E�p_t^d�'d�&�((L�� ��E�C�ގ�~-k�ik�YV}T�U�<�J �$�NH�NH��(Ԓ��A!<�JS&�����AUA���l�����Su0e:`�l�
)av}���}`�_0cD ��5tS3F�a������v����I9� W��E����������뾻������뾿����������뫯������������#�� b��b��z��l�͒9G2Y�$�H�W"
fǯ�UՊ�ǿ ���u2I��Drba�R�Ko�Q���U� �|�#�1L
� �c 'V�X_}�)Q0�N�"�0�1��b������ފ�g>�K���t�A�.�L|b������CbK�^W����� 렾��
� ��G�(��{z����޷��������������Yk-e���u�T�wwv�޵Q����f�[����]>û�����j�����oj�i���j����Mi���j�����rn���[��Wk5v���u��f��0�;�N��MTk&�[��R�YK)<�����ߓ������=Ooooof��o7cYy����_1���|�c1���c�9���s&j�f��j�Q�ݚ�P�#��r�1��Y� f2�|�b�e��z/���k7F�y���������������������뮺�������������������{{{{wn���i��m5$����i4�~ާ�����[ڶ��n����j�܉����zߧ��I��RJII�6�M���۷w�����֛M��I �h3���h��r\������ޚ���2�EH�Z+EH�Z+E����57����&Kd�.KGl�g�� �Ah��M��SXT2�`�`��|�`@`*0"3FDfB���c#�p���ѐ�b���ʖd}�� ə2'!y2��zȔB�VC8U���b�Ѩ��b��q:��#h���@�+:B�<D�*@v����Ȍ�+ M��/q�`5��`�p$/q�|`DaY�����u�扐�fL�2$dY��� b�5��1������C����.R�H���B�ʤ�T���
��O�D�*R�L�%T� ���@ SR�@R��@L�l`*¶
�mJ���Yf�w`������}`I�L��خ���"]�K����Q�`q�s� \�}�0F^�{ ԯ�]__]u�u�������/�������}_r���wu��w�����w�|����0̪LHw���N��v�a�Y(�(0U��`z��r�^�`�wr��+Us���J�\� �ԥ)�(D�!h�DȗEq������Z���qGq�)0Q�0�d��1qL��6'��l�&Ld�$�&��b��LGs` lJ��vY�u9�jUu*]J�\�8�&X��%z��ש^���� T�1(��%1J�X)E s�|Ooon������������O��%��[��If����e�aTk5v����Wkmn��Ғnӻ������mS[{[[[[t�kM�MZm6�n����۶����v��ݷw50��v�[J�e�����j�S�Y����Y5��m��3��po�S������������ټ�5�f(�_/��f3��_/f2�b�X�C��c��3y�7����y��o5F��Ghs��d���c/E���c1�������cY���Uu�W�W����_�}}_X���u��}W��U�_U��U]���;N�{[Zkj�i�Ԗ�i4���RJINB��=n�0�5�����֚��S[[���N�nIi-%����I��֛M�i�����vݷ��6�KhXCh4~������rK$�2J#�M"涴�m#(i���i�Cht6�Ci"M�ڶ�bęY&I�Q.{?G��~�R !�-&�mY�2F3eȋ�����f�fI �0tb�N���)l�2�F+l�ĤܪNK�r�7��5��N�p��� N/~�q��7n
\���)z�=P ���̊ ١I�6)ƅ#xФo9 rr��Vt^ɺ�q�&�6�l�-��r>6�q��~*\�P��U:���Q�V��S�A�E��>��F��E)"S� Jeb�H?]��t!��S6,l���,�3�0Q\%������%�%�%�
5�q]���E�!��A�;� ���?}���M8����_������]��]�]�]��_��u���wW]]uu�_�������E.D 1b��_b{�Ou�y01L�l�l �YD3��y;]X���X��W�+�|6C9�O1x�X��h��h�1,s����Ex����2(�����N� Յө����s���LɃҔP*)� �(`O� ��ϰ�u0�}��cWA�tR��6��/
�����^��� 1H+��Y+�]WA�] j����OS�����On�o[�����������f�J�e����Yj�z�Wj�z�^��ҽ�\�ܷ7i��ͪM�������ڤ�[Ki��]�kj����S[TչnnӶ�����J�v����z�],�z�e,�v�YJ�d�k8������z�޷�����zޱ�k�ȵ�����c1F3����f34g1f�X�&o�vo��T5f���n���r�Q� Q�͘�f2�c1��Y������^cX�5�]_������_W�}}��u�_�u�U��_�U�_�������}UW�nӻt�5MRm6��R].�G��z=��ZH���a5�I�֛M��ԛM���V�����#���z=%���t�kMi��Vյmۻ��%��] �R � ������d�IDyG��J�5&�D��)��R
A��Z CHt�E
kMd�Ȳ;#��<��,�=�������� ��].��a ��`�`b���~\>a!� �B0#2|Ȍ�  �o �A��`�K�aŠ�RF&�~D�Y�lk�d)�Y�q%�T@�b��`���Nt ���̀�ح�Zp����.������G�����`D`��C@,� M��/F4 �L
�p� �����`Dd����E��d8��0:d]��Eɀo��N��|i��c+�R%R�H()H�7R�P *�* �� PN�@�:�
p�B%`P�@j�*��J JT;LQ:b�����i� �U�,d�̇�da�d��c�+�_` k�^����ZpĮ%�"�lOĶ �-�TqM%�5�������sT�J�z��_�����'�_������?���������wݳ��ww}��Ͼ}�w`dĮ�㻸nv���v�����F 0Q��a�+��w}����Z�WU�UN�����5�/�|jc_ؗ��/ʙ�C�[=S_8�]�%�5��k' ��qF�qF�p�$� �S&0L�1�c%I�b��lN�W�q�:�t�N�GWK���ԯT�\/B�xxU/�ِ�������L�^LȤ��N8ݷw��wwz������ޛ�����O����f�W����z�^�W����z�W�a�����r��ܶ��M���T֚�mi�5%��]-&�Rm5����6��i��r�ۧ-�ssssO�U+���z�W����z�^�W��������O����wwwwwwwwwz��wq�j�H�b��2�c1��f�Q�3Fh�b����g7!�j���kƱ�kƱ�kƬk739�ՙ�Q�͙��3f3c1��|ŗ�Lk�����������������Ă�����������������ݺkM�I�6�K���KGH�t�E��hm�II��m6���t�m.�Mi��]6���t4�E��h���R[K�����զ�۷wt�] �g����z�Q���$GDYdY ��TC�� ~�h-���) ��  ��Ed9 dY�dvI3��=�����?���.�!��ː�ː�����̑�$�40H3�� ��!l�)lY 1���a�rm�M���<)W�y��. R���)�\�{�y='5&��������'wxP��n�' �Y�A�؜�4'Ƅ�x؜�pPr���(�����$�<R2�I̛l����q��X�$11*�I"�I"�RH�RJ��?P��B�NB�Ӑ�Ԑ�Ԑ����~��Ђ��B*�EWB-�6ȍ���������A7<}� �a�0�&�XEr��E�.!U�.!��S�C}�/��|��� c��w�}wU�W}w�}w�}w���_�������W]]uu��W]]uu��W_~AR�+�bk� ��-�$��3c`3c`2cd1b� i�/��$���V�a�xoWBNX_6,-���q�Qq�q��q��*t%���5] ��: �1# �aL.��Σ '�ό ��aS4L�D�t�L�`�"�-�t���-�L-����Vł�ec�t`�}��� ��*��2����Ad� er �l� *(����������ݷww-��~�ߧ���zOoo[��j�]��R�Uj�](a�wv���ۦ�)��soMI��kM��i��m�j��].�ڴ�m6�M��i��m5���M�[{vݷ�nۻ��j�]��T����](���=��7����{~��ܧw-�wwwr����ݧq���Q{/f(�c1��b��,����Vk5�`�_/��v7��Ս�x� ��n�Q|�_3��g5���l��Q��c1��Yz/F,�^ƿ�����������������1������������������-�&�i�.�K���M&����Z-�C����%�\�;43K���M&���t2;"\�%�ѡ��t:-�E���M&���t�]5��mM�K��A��g�z����w;DTE��E�� ��Q6&�ބ���{=G����z�d,�� �Mblyq �� dYdVv��s��=h,��A�����l���E����p�|���90!1��"3+�C�!P��͌�A�`�j,�3%X �f
0B�yU����W��J�X���@u�o�4� ��'hT�(�+r�t�"wx��6�F�7��i���&�C@�l%7��@�4���P6 N!Ņ�E��� ����,�����<(X�E 
(��ba�k�'؂ K�f%��iUZ��B�)UR�ʁuRUE ;9��t ��t*5�ڄJR�H$N���]1@�&%t́L�d��ȳ1�,�!'!j� J��(�*���;'s� �sfq�!\�lk�X�D�+bH���)���N)�⺸���3���������������������������������������������; �ظ� s�r��y�2�f@b`���9u�P���&�QT��T����k��M�6nv޵W8��1�5���pƺLP銝J�B���T
uUx�8؜q��8���`d�S�����c&�&��%I���98��1%�b@Q�U^�38��8�R8�}JM� X�tKb_�C5tĀ�L�Rb@b�2�̀�)Tr�wsvܧwwi���v��������ާ�i������{{z�� 9Nӛ���9�M���{V�շ�i�5%��t�m.�M���V���T��i��]-&��]-���tյM�S{t�7�nnۛ����pM<��������wwm��{{{{{sssv������ܷi��ČQ�1��f3c3��9��g3fsVk5�̰_/��ي/���7f����|ŗ��|�f3Y��j��h�g3��Q��b�f3�Ř���������������������뮿������꾿��꾫꾫��j���m6�K��R[I��t�CHt:
C���Ih��2L��2L�$����$�2L�$�L�%�[= ��Z����%$��KK�����m�j�� ?G����{A4SK6�ٿn�R X!��Ac�D��a� ��X�FA"�ؚ�{a���6'ǗP�A,hcj�ߧd�%�) ������~��
CbcK���b�r�q�`����$%�2D3�� �$C42D3c$L�3�D��7"�\@����׏�׏?�*~�A�*O�)O'Cv���ہ���gw��o�I������� ��q�͉���n5���x�nr�
M̸��`Tg2*3FG�f��e�e
YR�(G:��."(����"SJH�ڒ%:�%:�RP+~� �� O� Q� Q�Q$�h
>:�Lع%t!��G*��R�J��� �Dr'A��AWB
�A]j�v �b �A:�~��1���!\AWE>b9���!�LA:�~u�L�]���]��]��]��]��_�w�����]�w�]uu��W]]uu���W]]a�EBn�&��$�bI��i� 'S z�_+`/c�WE,�X=����
����ª�
��Uw`���t�� �� 㩆1݆�tK�$�BI] ��MU��f½u� ��v=;��d3��N�A�!D��m&d�^�����J�r�@�R�W��+��n� �;�;�t�e���1Dq̂qd�R!�QT��T'�PkD��em��hܧ)�������ͻvoon�S��;�n[���������ݹ��nmۛ[[v����շi���ZJK��Z].�K�����������I�.�K��R].��RJMV�7mm�m�[v��9�Nnmӛ�����۴��9NS���o[�۲n��������ܷ-3m��z���b�fs9�3���s4g5��Q�2�|�c1E��_1��|�c1f2����|�f3tj�f�9�3���sg3��Q��3!{��������������������������������꾫�������~�M5���m&�I��z;EHi ��h4u�L�$��<�#��:#�2 �#�<�#��<�$�3� � ���+GH���I���].��H���Rjv8888-���z��ާd�����m2�K���M&�K��ht:M&��i4�M%���D�9�Nn���{zߧ��* �Zk�l%23"3)���!qpK�L��ʣ"3 B4 �dtdGFY����E0U� �gd�#,� ��/D�B��ԮF�J��$| >K�;W�;�"L Z48ح�Spy��:&q1��eHӀ�\<0f�c�c��l�`�h��1 �4p�,p%0X`D`̈��d"4#A!��((X�����(*8cU踖�Kc�JU"eITĩ*�:�ʀmT������`?AN}8���p�u���c%X2�V`�$R@,�2/&d���܊2��vM2Q�t� S�1B��.�T�{�9�en+YqL-�k.+�5п
�@Y�tݎ��1��3dk�k�7蟉lU�_���_���_�����������_����u��w.�����w��w|����2�]U/����f�S�p̤���܀c�2�����k��g��R�+��s�LS�w;���c�(�1$Ws���h��2_&i�1 eU_e.wwvE�]J��|�0'�9�8��)��� �bU*�[���;�R�*T�|S��6ԩ����q�� �*'LQ�w8���R��&$Ę� �������ւh44��F�ݷnn[{{v������9�����������M�{����7�Mmm[[Zm�Mmi4�KI���M&��I����[�յNY ��+�aKI4�[KI4�M-5���6�����巹m��[{tݷ����������n������Ӗ��9�NniA��4�G�[�k�|���s6k3FsY�5��Q�7fdc/��e��c1��ٜ�g3����c/F3|�ff���Y����l�f�ќ���j�j������������������1��������꾫������?��gs��4�M�G��h�9�Ag���I2:$�<�"�,�"�h���~�(�Ȳ,�"�<�$�;$��?����E��h��I�аv������M���w#~������ާi������i�6�M��i������V��i��m6�Mi��#w{{wv޸8887�����t�m� M��^c2��!�Ƈ�Y��9��9��Q�� �#�42+�G�q�m�i�%!�r_�]�_�]�?�'~�?P �ӆ��h6klH�6��A)d���� >�T�T*��lݎ�!���CBA�l69Gq�L �f3"�9�A���L��L��\��L����#�D1\DTC�u"�V�}U� S�T����A�*O'ď|0~P�i�פ��m��6F؛!�bdD�r�r�r �BFvB6X��S�K)��9��uXw��X��cb0c���a�0�q�E�Cq�q����Sb0�L�7����U����_�]��W}w����_���_�����W]]uu��WW�w�w���XB�/��K�����s����[*�A�LϘ<�LU`��r�q>`��U;w�<��y+�{.A��[;�a8dːi+�i*��'�/����Ǻ�G⚼�������ggS$�#�H'b��)�LO] ��6ņ�VUК��=�'��5rˡ����s$�r;+��R;/"�v)��E��y���A���3�8����ۦ�wwi�9���NS������ݷ���m��[tյ�ڴ�V�I�6�I���KIh씘�Ǩ�kV��۶��7�D"��=��XQ�=%#���M��mZm�j�mmS{T���7���MӶ������m�nn[����ݷ����`���� �=�űl^��|_���5��vk7f�vn���n�aɇ�C��Eb,E��?A�A�0����"�p�$s7F�o7F��j�f���H_��|_�l[��������������������������������������������w;d�.I��-�E��� �<�-�d�%��Y�QCC�������CdY��G�Q&I������Gh�Z-~D�.K�����{sv�ڦ�����������{wu�����ԛM��ii�G������M��i�����������߷�>�y���齫ov���h#7��� ����Dh��՛ �����!�Z����, ��僅��"��%X�')0M�W\�u.P��(]�P��$|��Q|�����衢� [�a"1�bT�VJF�������T�P+ J�����q��t
��9���M8'�1�Q0"3fDfAH�Dg4�r��e r��YB�A�p�8��D�+�l@��*�RU@���STҠVNH�G�����x��0>J��;�%y��_ Yf�d(`�0�.��&�����i(d�0ŋ��Q��NK�Q�&��Ā ]`����X�Q�5�����ƾ0�_=z����LF#Q�W�+"
!Y8��IJ*�d_]�_�u�_��_�_������_�����w�w�Ww�u�w}]���x����z�� ���#�:�< ���`<�9�����/��s�\�J���b�wv�J�1 /I�+�͆.L0
���=]��^�������
�����wvg|qX,˱���R�;�sU.�4N9�q� �N�@����`�&%U*��+�`�b\� q]���W����\<��zG�Ah3��=����M��t��ۦ�齽������j�������kn����6�Mi�����t�G���e��V*��SB���nS���m�iY�P��8�#^�Gh��K��鴶���m�kj�����kkkjڷ-��ͽ����on�ۓvݷ�d�{=g��?���zg�|_��{�1|c�2�o7g& �%�����+Њ�X��*b ABb CB b,E��"�T!�T!�8D�%�$n���c�1{�1z��|_������������������ E.����������������?G��v��r\��2L�=- ����E��YGd�KdtG�� ���gl�H��dCdy���GDYG�d�����g�$�2L��s�����Q�sr����55��i���Po���m0�K���].��im$�Z+Eh�Z*EH�$��M%���m6�K����o�����m6֚ڶ�-�s H�Xj3a�2��AY��Vn͆�K���4<1� c"���
��bRː�\�+�•��J�\)]K��[�w��4o' �H� ��ɣT�� �ڡR�V+U%#�i@�{,>Z�"�#fATr���;x���0����ř̉���ƳB��PRR�
Je%2����1�����<�T*Sj��j��j���h�WB�i������|,~� a����6Ͳ4Odi�dm����c��T �Qe����-�Ab�6-�Cb�1�X>��~� �s8�0C���0A��cV�W�Z U�V:��NC�7�5�U �j/��������������������������������→������ .X]~���X[�\X�s��f�k�ij���ߕ�o����~�-xoS�����-J�j� *,M)Pe���aox[�~s�ǯ�M�������;�\9�1U����by�_1G�o�1%݆�s ��IUA���آ] 됞��UE*�VOu�{�߉�������=����=��gs��;�����7mS{{t����ܚ�ڶ��j����kMmRm5%��i.�K��dE������8�ѯkjۧi��7��7-�nڦ�EET)��'���"^���t�[Kit�kM�i����jڶ��j��ۛ�{T�ݷ���M�h�;��Y��{=�������R%�ؾ/���Ōc1�cb��Q�#*!�V"�X�Њ�x��Cb
�C�q!�!��x�P��x�b*��_���s�,c�(c�|_�z������������������뮿������������������z���������{wv�߸7�����N��S���{V��5mSv��7����n��������ߧwm���{{{~�ާ��kkkj��t�]&�I�����z�a�or�ܷw����7����nS{{{{�{z��ܦ�)��n7�����M&�K���v���� ���R2:2����B�@��tC�+�������! ���:�#� , � "���,P>P�@8(\��A�`�(Z�l C�-<��4.�hn�
�-(D�4P�@U)�(���jx ����
(2���R��X82e���W..�@���"�`xh@��d������p�p����rT�PB��eL���J���t�R���/�P�� � ר\*R�HT�T�J�"�ʂ�H���'" Q�#$ F� ��*+iX�E�d]�8d]��b����2�,n�ٹ���5�ٜ��Q��D�4�9`��9��]�ލ|oF�1\k��J��Q:�<�TUӗ;]
�A�*�np��Y �,�A��_�����=��`"��������������������!��dY��E�2ȳ&ɕd�3Fo��;�s��w+��fF$M�y3"�'&e*�8������\pƞp�Ԫ:�3ʀ$r��u���WB�Kb��%�lPD� L�2d��!�E�6ȹ3Dʼn��r5:����$�v�㜮9��� �e�l`� �*�q� k�[��M|oƾ>�Q�N�@�T����|�B��W �,�K!~%�'���~ J2�?G� �V��Z�F�Q��ҚQ��:�N��j�Z�C
cS��4��ҝN�QI�E'�i�=��ڍ>��ܗ%���������O�S�����u�\���,O���}='�}>��Z�N�SjmM��:�F�U��jmN����F��ڍF�Q��i��d�����L�O��嬶Z��{-E�c1�Hf2�|�^��,�^�Y�ŗ�Y��b�f3fKDc1��Q|�b��(�b�ٌ��ٌ�_`bf3�/���^�Yl�_����b#__���W��uX�u�b'����ߧ�����A
�N�Sj�T�S���mF��jmM��j8 �
�F�SJiF��jiN�S��Z�M)���
=o����������������<�E(�ڍF�Q���O���}>�O�����I��~ O����>��j)F�Q��ҍE�U�{{{~�ߧ����0�g:2��`hX:���dX6t�є#8�!�D3c(�Qd�l�R�Q)L�R�Dd�e��$[�H�Z�m-H���QJ(�R�
u�E� �:OZAZt��TZ�U:�U:�R�X��X��\V\�����.�$ZYl��]{.���H-eR YT�qd�ز2��G KҮ�%]�J���]KQ��(�ҔJ�JZ�ʊ�8.�-E� �|��ԠU�@�T'l����ɇ��0�6(n�A���؂��7S�b leL�L["
'b
�b(�1u�;�A1 t!��U+��1cs�����5z�=z��������������:��������������������������63�y��VeC�D�1 ���_i/���)T�K�&*H���N�T6�|�Gq���)��WI+���Z�N!�n�g8�E�z.#�q ��%gd��d���BtL��4)�(}������� ������G�r@�0���J'd� ���w��3���UR� U#���RJ��� $7 $<D��D�qAPT�.{?��贑'�j4��=���E���u4�S�� (���S���mM��R�(�����O���}(2[%��_ާ����~��ާ����>,K��4Q'��}>�O���5���iM)��u�QJ#Sju:�SjuT��j4���j-F�O�e?��[�`�* ��e콗��|�_1�о/c1��f3���f3z1��f336���n321��f2�c1��f,�c1��f1� b�͗��|�Z��z/E������:�� C�1��F�1�����?���88887iͽ��ڝN�S��j5�F�Qj4��Q�a��<j5{Q���F�Q���u:�N��a��ۃ�������}����{z���ۤ�],j5�=(�ZzOJ-?'�* ?�.���������QI�=��{Q��iXK�۷������ h`td �����3�|���4��2 �#�62 C��0PHP�L�r��A�ed3^�|+�� ���]��s��P�8^��B%�I �4„���,:�BH�t*#P�@?P�N�"�~2-������.. f0������t��6 ������#� *2W*d�fT�Rd�Jp��|*W�(]�P�4^�c*Q� �SJS)�G_�>��HtBt@����R� &Wj�T���F ��#옹0��E*T)'����q�\v;�uEXK$�22P��$/w`'UR�׮J�0�ª0!ƺwLP*Ut�E3S]0�q���`|�Z��\ {
�jp�����Vb_���b-w���������u�������b�*�Cd�d� �R�j���7���k����K�r�$Ȝ�L�,��Z��ε�a�Ꭳ�0�q��� �UԨ!TS7
�Ar9�ێa%�N%�����]>d� 2,�;dY�2U�U��nL�c%�9���q�.�s��c�(�>��f�`��T�0�5����.��JA|�����/R�c����;�lS�l@�%�N%�APi� �����$4��X�QI�=����Qj)N��ڝN�I�
O�J&��R�Q��j$�O����?����y�ZD��~������ާ����{{{~��E�sџ����Opi��}>�j5�E��4�PZ~ OJ&�SJiM)��5�>��ҋO�.���=g���PppppppYl�^��,�b��� ����ay�1��f3�3F3�A��X��C�sa�@�GB,<��&3�3F3��c3f
��� b�͗�c1E��_-�����W�bW�b1uX�����W�W�W�A�po�ӛ�{[[��ڝN��j56�O������_���~��=��R�Oi��Q��Z�N��(���������Pppppoo���ۻ���&�ZY$�o-Qi���O���* ��i�vގ �����{O����h�,�Rm�z�����߷���0xc<3c'�Yp̹��X �@��b��͠� -�BZ�#��
e�!&�'��>�^�|k�.����P��� �j��f̦ i��JE� �j5ju$jiI͌����e�������B�A`�8&����t�� �Ж�TEqdB�UV �)�?
c^�v�"�r5�T�E)@���S�:a�����! >���RyM)<�VyV�<��|�L@O&(�U�r��$�d�X�NS��™�`��(��"���,o�9��q����s+���p�S���%:1 �!��!˩�N�=8׈!�������������������Ċ�����������������lc`���
�ǫ�C;$L�a�Guh���A.HX�����$���6�:�����WH��tE�"�xG��]ݒ]�v>#�q�����6vH��e��&�A�;&<QK('����L�Ԏˑ�r#���Տ�Dz�;����t��H+��z"��hix��b{���"(����#����ߨ7�
���@����AhtP�i��}>�Qj)E(����'�4�{O5�F��Z~
O�����d����I�����{{z��ާ��z��޷������L����������Z}E(��F�I� ?��������Z�Q���zO���D��49�;h"����ߨ8882�^������Z�e�͛����c؏�;�<GB;�;�<@P9a�Xr����#�t#�t#�#�t#�x��X��o7���[-f3|�_/����������������Ē����������������߸*
~��ۧ-��55i���R�F�Q���O����{{{{{{�4�}>�O���Q��j-�mRkoor��7��. ~�෷�����ݩ&��ZK��z=,I�=���A(-��ߨ-�\�۶���蠧�
~��'�������YG��Z]-���Swww{{z߰,� #�%FGF@��x������: �����x8@Ȁd��t��( e �(2P�"��&,��^�z��'Z�k�@����jt
�T��t�҉��¤ĉI`
�=�@�1P�E�H�J�*�) �@��t���̂!��t$#�G��)�1�%��
������� �&(X�%ĶaY���&^�x �R(F�)@�������q��B)L(D� *Q�)J�r�ʅ*�T�1�a)3�2.]�$����3'ɋ�p��0d����i'�eJ,(\�b�����u���^�B� ��])ɉe��Y8UB�+!58��qL��u��/ �®������������ C����������������������FX(�v ��x����b��2.L d�ȴ�oN;�Ԁ�"rbUCW;�����K�ۜq� `[��T���Ml "!WЬ�+���wqF�5/�Lk����`�&�&̫�g��&L`��c%�PbF�sj��s�:0M����w;ҥ�Rܜ��5��R9Ԥ�K��V�uꗶ�Z�o���ľ'�]��D�?O�����AhE��4 �qbz���R}F�Q���������ߨ8-E�������886�Q�;��֖����{{vݷ�i�vݷ�i�z�߷���!��z������ �QI�=��* ���������M(�j4�����A��h4�
�7� � ~߷��_/�����#xݍ�vs�Y��s��E�XE�XEa�Vb��=A�Pz���� \aTPE�XE�X��%Ng3��o9���7Cyȃ��&c/��������_��WX��u�]u�X��u_������U�U���?NI�n����M��i����ZzQi��}=��O��v�ާ���v�����}>��ڊ|�]6�M�ۦ��n۷&������nۻ��RM���]%"�V����V�����o������7�M��[{��o����T�ȴz;EH�%���m6����ݧi�:1���Q�,t�X�|�l\p�Z��^r�'"8H4����Yk(���>M�N��u�������y���@���[$�S�r$���I�i�0X�H_�88�ӑ'�(ԑ)ԑ 刋e��� Y�3�,� F��1� aX\�{.|�Ő YS�X&JR�'�; �xO��+�rԠ��PH����L��m���(l�J��Q�%S�:��U��Ʉ��F@�f�
*��� e9 d��K& ��L؆`B�`B���)L�d1`{u���y��������B]:r9����c /
!�1�a<�aD�`y� � �����������w����}`"U�u����_��]�w������J�� c�cߊ����D��"�q�<�6��Au#��$ز���!��{�J������WG��bxY�O �'��*�ǯǻ�;�2X��c�"c`������a��_�YH�fO&�������ϑ$��'c����=]WD<6IFK#�ȎD� W��3_��9� �~?q�E|O�[�����?���.zh(��?��P��������i�������7�����i��~ ~����s����s��۶���n��ۻ�����N�oon��۶�C�.w;��B��pT}>��O�����AO��{Q�����i�D���A��Y�"P��������o�S�_1�/b 8�ݜ�g3���Q��s��9G�xG��ax��{P{a�=�����"\��XIA�ds����9c�s9��ctr13��e������������:��� C�����������������n��ڦ��4��ZKIt�Q'�����;����������}>�O��]5%����M��j��۶���v��ܷtԛMIt�M&�H�Z*E�����?�O�۬�M��m��m��۱=�O[�������h�sI���t֛MnS���������@,�K����%���,l"8!�dq���p � K).8T+*2P�1fB"��1raz���+µ�W¹:�z�r��n���H�m(n�R��}R��矜�p OIЧJ�ԥR�GKc!��츀�\B`����M4  ���Àrl8A�z4�P`<T+*\�2����e ���YW�W/T� �iAeO��KF�4 m��Z�+��:
�"R�Q�H� *L�TҰ�5�r�2� �r' H`X�Ɍ�aA�p,P���"���`n��W���^��=��K���tV����W�^�x$/T�K�� �9N�M�Q��1���CJ�+������������Ě��������������� b�e�Z������~�,2,�)2.MS#�18�r�� \����x9�W�j����L�V
p��b����G8+>�Z���1�k�,�bL`��nv˻���2ɓd��@4(���0yLN܁q���v
�?��+ԫ�@�R��8��u"r�`h^�yeꗂb�K�_Ϊ}`�ַ�s����ާ����~����޴ŏY��?g����� >��O�����������������;���.K�^���O[���O[��;Nۻ������n�����oS���|�.K��h�i[������������������i���.?���{?��)z��������޷��?��8��07�����r�1�圱�s��w. 0���X~������z��~��������LDTw�(s�Q��3�s9��P�r1 qc��������������1 �������������������ooookkkM���m-��RM��� ��\�7i�ssssr��7)�������i-&���].�kkkoooon������ݧi4��]%����IH��C���i�����{u�������������c{v���*�A���t:+GI-&���JK���vݷwrA�$��R��)l�)l�!z.)0\d,�g3�X�8��6x��&�$��$��$���/ג�ג/ג��qղN�Fi](j����2� �P\)��J5*)I
�I͌���r"�r�#4d��h��C!��Ѱ�;��rá�u�æ&,JU�d�2��2��2����Cp��Q�%��I@n���[[A[[ac{��J�'��5�)I*�I"�TH��͌���F�r2� �6�92Ʌ%2�̝��(2�"������w`}}���}�߂� F]:����^ ����~�)��)��G)�������T�����
����Ī�����1������� X����OV(�l2$f�3�$g&+eSg)Q;������������"�fvs��1�D��"Hx��\"h���{�_�~G�,w���17V%��%�]Xgl� �0��L/'� ɨd�9H'b��S}�/�Ex��}�6G��]x`�� !� ����ۺWB^�M�+�� ��z������z������~H=��Y��Я����?ooS���o����������>T��2[$�6�?������������nS��;Nӻ�����������bĔI��&Kg�?��'��������~����{~��z���=��g���O��~���ߧ����z�ޱ!�6q������s�(v�1�s��wX�� ���eC���������?B ��X� l&�̎�r�q�r�1�s���3��r�Q��b����� E+���1+����1����ާ�)���kkj�i�6�Ki4�KIh�t�(7�Xssssr�ܧ-��ssssv7�4������i4�ZI��Rm�kkn��ܷ������KIt��Ii4�=%#�:Ah4 ~�D�;N0�M�����6�j���Rm6�n�������h4
Chtv���4�JK���[v���0� �����pdKK����~\>`������p&�3c�J ��,�}��@��ra�b��./R��z�� zu�k�^(�b0�������*��9+�W|�d��:ኄ*����RU �C� |X>\�����`B`���C2#2��D\GF@.� p@@�<d< �2P$(\�",P"(X��VB�p�!UT��L S �u�CA��0�Ұ�J�����B%$���J��I����V̱��l�`(`��Q��Q��`'`�#e jP�AB��CM�*��������݀5�?��C�)�ήN��zu�W(^�z��ĺ1��F�5���|jc_�k�mKJk��� C���X�u�!�����������������������LJ]�^w�"�㻸��l�2m�vM2,�fEɋ2�J�b�b���`���q�QU��(V²����DK"_?c�c��\��}�8�a�X�������w;_s�n�P��0
�� �(0P�A����]Y;틝��`*U:������p�X�R���/iz����t��Բu*%�D�R��� o�o��[����ooooo[����;�������B�;Oo[������������%&I�dvI��؞߷��vݷ7w-������sr��7wwwwww)��v���~�βGd�d��m�����������z�ݷm13��������ҷ��{{{{{~�߷���z߱"�$s9��P�9c��;����;�������� �,A�1!��hAb
؂�6 ��P� ���1�P�;����;����g,�s9�LE�~�������������F�뮺� D��������������ۦ���j��Zm6��RZGH��=���-&����۶��)�oon�����h����=�G���kMi��jkj۶���{{ssMIi.��i)�GH�Z �Q�AG����GmRm6�M���t�[M��i��V���������� A��-������Kit��������A�d�g,HZ���e��f3���̈́�p �X�C��jUyQ⑔!'l�3�D�^B�\<����ª���хH���$.�ԪRH��?O�?�A}9{PB�P>�T>3�!/� /E� f f �H Y�A�dVXd�?&����#a���q�hňJe�e��!��^���iE� �S$֘ �� �T��\J������ Z�E��N��N��V���J�,\��6�6��`1l�L�4)���P��A�$�J�N���z������`�d� .@�u.�Ը/���p4����0�>0�>0cFGS��������1���������������������������1�]X���آ�_a���VvCVvC6i�͝��L�gP�OQc�ت��Ux�x�f�9��aqL3��3�� "��X� ާ��}
+�=��]��zLX��ėؒ� g�i}�W+ ��!i<�XN����`�D��K� x�5݉��&��5V�6�V`���,_�Ck���!|7eS�Һ k���WBZ����z�޷����������
��%���;d�Id�KgcK�z޷��{wv�2u�L���G��y�K�������9�n[��������������N�nS��幹�����,GdTG���2K;H��w�i�z��d����ܒ�l�;gl�A �������������Oo[؊�$s9��,s�q�wP��hw����p�8Lo��ɇf!�8��E�q�����o�;�p��h9���;a�wX�;����9G3��rb��� D���������b�������� D��������ZkM���jMIi.�G���*E��Y�N�h�=4sj�ڶ�����G#�%����H��Eh�Z=�Ki�5���m5&�������5$�i4�=�G��h�9���Y�=���2
�2�ƒ��t����t�}�2 ���;G���=G����E����z=&�I��M�C���!��x2������x�\>\��\��� �DC�VC�
F��T�U�L�H�����( �]X][j�%[��8�
i�Tkя%D�ԢR�P.*J��䯃�A�}8-�@�P�@,(@�]A� �2#,����-���K��#��\2\2:2
�!���`�p)���0��H�غ�q�pN8.�\ذW'\2���]Z�ҫ`Zg-M�J`4�>�����m�&�
�v�}B5�JE:���Ҕ��+D� l��/"�)��M����V#`�)0U�(\�
e ����(d�1 %I�_&d���ڕ�qش����N)��8���� ��s �\�� �%���蘍l`J�|r�|`K�tj�Y�_����_����`$������]��]��]���}૱u�
w;b�`�s�\v��ʲU�LdY�d� _e�� tġ�-1%�Xn�^qL s�d����y�&B�+�l@i�tK��\�T
u*��Z���O�O��4�s���&�9�8� �1vE��p��6 ��6d5s��&d�L� r'%U�[���p�
3�1i�0)��g
�.B��W!Y
�b@�LTt���������=��{z�ާ�i�wwwv�޷����rL��$G�L��h��h�%�Y��$�$�<���<�"� ��ۍ��w{wor��ܧ6�7777-�r��7)�����sr�ܧ)�����wm�9��FG��y���I4Q"`�D�K��%�-�H�$�.Km�~��ާwww���{{{{z����X9�X�9�c��;���a�9a�9�l9A�a�p�ݜ���9��g1ɇ����g3��n����Bô���h9�0�0���w��s�1�9���W��W�����_��x�W���������������Zm6�K���]&�E���tV���K���K�d�-d��0K�d�K�d�-������*C��Z-�K����K��i�6���ޚ�RM&�GH�T��R+Eht6~�g����z��c��?���� ��2Vد�v?���F��w;��g������"�V�����I���$6�� x�H�q�!�� l� |� ��!i� P��`��=6��T9���P|-eA��T��`�c
¥z��^�*Y�H�X��Hڒ:�Zq���[��8i�8�>�yC�h08�����������Y�Ȭ�dx՚!1c$%����XXlhf
��p�_
�1p|1�?_KA��h>]KA��pT�4���J��+�d�䠅>��>��N��N��M�!T$"& Y�K͍�8f�����6�ʁ�K*�r�pȴ��]rR� ��)��OQ�)�S� g�(�L&�=]K��u.���9���q�U3��)���(�E쮮�������������Ģ������������Ʌ� �v(�؞� ��oubI�T� �� ��B�����>��}U }.��sӹ�������
��]0�+�2��4�sWA�]��UP��a�e#L,`4��k>a�� ��1�L/�L+�d!��L�����_`�*�-1�e�%S�\`�-O��s@��L!C���
ṅ��5r ��i]��4�6���g��;oS���N������[�����x\�"Ȭ�$�L�$�(�Ȩ���*"Ȩ���,�!ϩwwwwv�ܓ{{���ݹ�M�{v�� 0A ���osn�ۦ�7)��ɻ������,Cd9E�Y�dVE�Y��%�d�&Id�E�g�?OoooS�������������d�u��Z��r�1���wPs��9a�a�a�=��9��X�9�c��9���o9c��9�c��r�g1�C�wa�a�Ps�sX�;�P�c�nE��}_��^bW���`%���U�����y&I���5%��t��K���M!�R �2K��&ID��Q���A�dyYd�I��.z$C��:;I���].���t�kkB�&I��+�XQ��v��h�4�AH4���;���A��^+�x��]�P���+����W�����5�s�w;gl�h4 C��Z-��z<����sp�Ld��̝2#.��%�n, ,����. 0&�c���� ����pIS"��c%J�*p��@ Xy[��+qZo+���J5!b��Cu)T�ԩ���W�>z]��8 ����N7H]Ί�: Ɓ �/ ƀ�\#0Q�����̶h"4Ƅ# C� rX:X�K��F�.h\@.60T`h`D.lXJ�K�[��_Z�l @>4Hؑ:eaR���*mX �ѧ ��NeB%Z�*@�����9��(�>D�B�� ��FPd�y��@0,�q�f_d]��%��)*d�¢��ə Ȝ�I� I�NR��Qw�q�S�k'����Q��Z֗@�R�1%�dF�Y
H�D�%Q"^�pyz��']�X��X�u������w�����w�n�,�6a�):�[��q�S�q]2Xe�("��7;�&$N���*�q�%1&g9��v�q�>[5Tv���D�)�4�N���Pꜗ�Q�G k��`��X(�VY����l�9�pώ��L�cd]�l�@�����`$̊I����p��LȬ�5ӊ5��0 t��(zqD���l��'"r�NW)H4�Kn��.�tQ̒�l�w%�p��n�ۻ�������=�N��"�GDyGDy�AdE��4CD4Cq�����NS�t���5m����
YCd⼂d4A�R�����{{{[{���nnnnm2A"!�!Ȳ� � ����#�<�#��m�����oonnnS�������{%�L�^�ٌ� F;�0�0�øv��{��=c��g3��9�c��9�cx� ��9�c��9�c���r�aP{��a���;A�9a�w`����z-�������W���`%����_�U�������y�Y���).���:GH��Ah-y�L�$�;#��<������~��;#�;#��<��,�$�D�AH)���;Gh�-%�Z\�$YEdy+ǨUB��k�h�T�CH3�����-�.BTW�د��UC�=�b� �5 �M��=�c�*��z�x�
�%��-��.Ag������#&)�V*����jcA�Ffh54������ːː����0B1C#0�4��TV���F ��L�-�����+Ճհ�(R�}M)S�S��e���S�� ��2�:q�˻���I�drc���l D4��8(7 �Q����4+5��l��l��k,�,\�&T ��^��l_���w k����-օ����U�!Wjȕ����A�@�C� ��� �9'C�l�|����0*��4' xͲ����4TJ�A�2�R��`)� �U �La?XO݅<q�3��3���G� #\�V�@�w���� ����0�>���WR��������B�*������ D+������������{R�w.@퉰�c�Na�� 'S f�{;��U:���
��y]�f�j|�j\��G`�}�W�U]Ut�t������iW ڹ���q����`�>`�s�7�P*�L��`�����0�>0�>0�,�vA� �,O�7�0m*�+ː5����:� ҹY/�+Ϙ6��ː,K�]�s�8b`.c`/� �L`�!��Z&#X�0o9̓#��w%�r\�E�������ۻ����9I�,�"�h���(�!�l�-��ݹ��nnnnmmmmSV՞(?�YQ���+Ǭ{!�
� ������j����������ۧ6ɞ(CD9Ac��?C��CdYCDZ5N[�������۷7777i2K%�r\�w#�L�[/���c1����z������=��?A�g(r�P�9�c��;�Q����g(�9c��;�c��r�(��a�z��~��{Pz��6���c/f(�[-��U�����x��]u�]Vb'U�����`"$�GDY �9 �gbI����T�A��Q�d��yE�dY�W��^+�x�!��dYG��y�g�Ah4-������H2!�r"����t=B�S�(QB|O�B��R
?��d�I�Q1^=C��=��V)�8����oA���%�M�qN*�X�=�c�+ȡ$�L��g�� Ah(�����b�S�X���l&��H` &B#1���Hm�a!�l\#0����981!���`p`����%�U�ʼn���VF
���T/T� ����U� �#S��AeJU:��AI9���@��hy��Q�@���BɅ <p)Zp(6��/^4��ll�hp���`iY���,��q��`nX<Y����gd`��EɁL��B����v^�z�WD p��<Kc��T�SJ�ʶ��[j����œ��+�n�x��,�J�0�
�:M�@~T�XJ�(e \P�PG*dYASU&\��e�0X`�y` L3+�9�"lT��$uʼ;����8�q�0%G u1�28cQ
��*�Q XS���Z]l A ru�W'^���[���b������1�� Do�����������(Ԩ�J@9ɉNL� fJe, 3��q��%Fn;���N;ʥ&%����)�>L�3 ��s���R��(mJ�����.@X��h��q����8� �`!�ũ�i�9C"l�`��a� \q�eCS�`!��8f\��K�?� d��0�'(dN@5�9�)���2���2bNNqce����k��8c'��CG���d��Q%�d��G���ssv�����ܧ77ww$��9
�W��W��bK�����m�����{tԚڶ��DZ]
�W����,y��DZ�z2
�t?b�WB�ίkkkjm�{v��巷NS��敓����WB�WdsE�wwssr�����ݧ77- 2K#����2L�$�F�;-���1f3�3F,�j�D��P~a҃�9�c�;c��;���9��g3���s��;���;C�9�c�^������2j��(�g1��Qy�����_�X��}`"X����������tED9A�X���+�bE��6�G����y�Q d9C�H{DZ�{DZ��d9C�d6EdtG��b?��Eh�VEx���?dC�Y���SB�bzP���o�hK��=G��K"L���=cثb�S�hQ�Ж��%�-�lKb[F(�6)�8�c��=�.$�fv�g�|���o��5��Ob�Sb�aQ�6 Dd̃�Y�zj���s6 +����.>1��c�8�6��$$�,��c
Ȅ�C�)�?��@��H��H��Hn�G
bɁe�mv��a�p��A��҂�kh�(p��4 F�l�l���ȇ���0�&džq�ᜰ�l��l��91Y92'd�!�"��ٯ�IQ�F�2��Z��Z��z�z�Jro 8]a�z��_��pO��T��+� L���TDW*#ł1hł�u��?+@;&U��\���@p� i.@�L`����)���� �9�H���>0g:�)���\���\�*�#Z���h�n�B�\ ]%�崷��������������1����������������y����P8� Z�� 2�@���/�� e&]X;�LgSUt,�����i��� ��I~�� �t�tU�@��Ɍ�Z`�6& S����`�w`�w`��n�T�(�R J@n�0�D�,�T��8�r�#ө���`�Lʨ �H�>>05O� Lt �l�K�k;�+J�
򜁴�@�%vؖ 1���ٌ ��`�9��sI�`��E�d9��&G��TG�dtCD4��i�sssr��ݷiͺr����������ܦ��ooon�۴�)AN*�X�Ǭ{ǬW��zB�Ыb����v+Ǩ{DZU
�V)ήM�M��{{T�ݹnm���{{{{{{�ݹ�nӛ�������m� �� ����VG����� �dYz-e��ř�Y��j�f�X�B :Ls����w���,vC�r�P�9c�9���9C�Pr�lw�hr�,s� �Y5��fsY���Q�1��Qj� C���� C�1��:�����1#�,�!� ���^+DZ�{�NE��dYCD4AD4A���X�b�U��V*DZ\d �Y ��E�dVK
"dS�X�=�b�W��A��E�Ы��QB|M���ЗP� �5�R��@Pz�X���Qb�Q��L�ma�bKbLIA�a� �У����b�z���Q@��kbK�[ �6&����8�` �F��h$4l&6c`�h`l's�� �F���cB�bƅ�Qcb�"�ńd�� da��F
�Ŋ� �(�t
�,N�W
�SB�x ��BJ�ŀ��Մ+X<�塺��褅0+4*l��[���@�� ���7�M���I6 ��$���`G���a�E�ŀ�Xذasb�0�и�ƅ�"c$�Ɍ&0L(*\X80`��� -P��z�\�\ ;®�X �<��c�@-}h�k�@xTH�-8>�#�.��H��ď��_nP�A B�����"�J�!R��c5;��` '��9�qΙd$&,ɶE�4ȳ"�ؐI�
ؖD�K"z%��D�)�91"rb@ �ģ�S�j֨Z��i��. �'\}zu� 0�� C��#� ������������|�������&:L�@^P�@�B�DeK`Y��Ռ�;{8�t��3��J�:�V �U��J�Q�$�qD�%�*�lPD�$Ѯ��Jb�S��%U:E�ԮR�����.P��r��W�^�b�҅�� ��0TBT�����)��������2s�{"̎2,ɦE�dY���@�K�[��D�KbMع3PɊ+LP
b��rE��-R���됮N�}r���)^���i�6�&�ԛM��^����z�e�����Z�e-����ID��S����Q�n�[k)f�Y������W���ŒRKK���ZK����K���-.�Kit��IIu ���z�^�W��j���[K5��C
. )��M=(�ɭ����Z�e,����R�^�W���i��Vզ�ZkkMF�y���k��������o���o��n���o����s9�25��7����� �xݍ��7��x�7��tl�����ƨkƨݛ���������������VbE������[T��i�.�K���2Ƿ������v�����ݧ7i���i��v��ݷ7m������v�ާ������f�K����6��i�6�I�����h���y�%T�����9Nۛ�������7����&����������7-��rܷwwwt�'��Ih��Ii4�����4hNk4'7��Ƅ�Xب�� K�*ض,ؽ 8/�8-��Nɼ�M�h�Bd�(�3��Z�t+�_p���v/q],mf�����k�*�S�a*jlJ�8$wtJ��%{xJk6%�� �4%��)Ɏ
Jap�bسb��b����.�9�t�t�LP�C�X(u|K�.�a�^���jkY�mm�mn�*҉�Iʶ'opN����xN����𔥕 ��P`Vʄ�q`^,̄L�E0����Q>aD�� l� � ś& ��Bi�mt`���Q�����K���
+�_L�A�/�KBu��`���˩pJ���_���b9]�X����b=w�����tLLS&&)� �Q@أ2 ��YdS��ϙ ��Φ>ĘcdVͲ>�0(��(�L~+�WD?�S���D2�C.DR��u�r�a��\���e��2�^(_p�Je�2�B�P6+� ʔ`!JB⢊��|���?>b��cdy��S;#����+a�.��\"�n!踇��ˡ�t?+� t*��� d�ƽpl�\$]k����U���m6�M������[M���W����z�Yj���e,���f���~���Wk5��Y��j�e����z�WJ�]8�Z]%$�i4�M&��i4��I��i4�M&�ImnD��ڻW����z�Wk5��f��j������Ƴ[����Y���)e+��)^�W��zm-%����i��m6��x�5�X� �y�ċ��9cx��g,�s9��������9c�4L�k�r�(�s��7g3���r�g1��Q���&s��nƨk��U����#���VbAU���_��ԛMIt�JII)��s�;�N������ۛv�9���M�D��:j��sosrۧ7i�������w<����i-%���]5��Zm&�I��i-�G��܏%���sssn�ۦ�魭���j�Ҳ�E����n����۶��ͻsssv��Y#�福G��RM%$�i0Q2����l%7��@�6��p� ��424-����2"b��cĤř2�FD���U�!�T4�\#�ԭa[�KWKX�D�u����Bb��-{c�[��{�N�� ��Sx�L4 �@�j��q�6
G!cAY���b��aP�н�� ��� �T�2c���1)ArfXdK蠉l$P���\#��\��V,yf���rԪG`<��m���{�/o<
/=o�|�L����I*d��J���3XOR�$\s��0H���U�Hd]��.� l�E������"%�J��DK�u*�b���F���k��5w`IZ�m.}p�@��������"U��X�5_��X��]������L`�&ƒ%$P`��� ɂ`k*dYf��qX8�Sf�� g`� ��^�`�U��q�Kc�[8��&$���b��%шV���b���06/T�kԯ�W��K��Pd�( � `��@I����dE͋�-0X�S��0m8�*(�5dY�dY�62���*�<��¶+�l@�%󜙐,I�\��&�lA�VL1MM�0N\�tk�/R�+�z���-���t�]5��R]�ڦ�B�z�W��z�e����f�Y���U���UJ��Y��Z�e��T�W��z�V�Y55�����i-&��i4�M&�I��i4��II4���[[T�j�W����z�Wk)f��k5��*�T�j�\�k5��f�YK)^�W��Z�AV����kK���t�]-��X�5�ct7��y����_/E���,�r�,r�P�9��Q��1�l��5��P�#��9���s�3�9C�r�c�4�|����|�g1�o���k��������� �� F������RjMIi.�I��H���Ȗ�t��ݷm�sssr��齽��LM%#��-4-�{{{v�幹��nӴ��`�%��=��I���t��Mi�&�G��z=��H�%�"�i�76�����魭��5&ғE��贰��[[[[[v��������d�ȲH�r\���=�IH��LLj���BSY������y�1ɜ̒�R]�kl[l_p[&�6M�y6ٓ ��E��W ���/�rcJ�cK5�,��Y�C��4� m������=�$5�͆�X�l7�������Ra�l]�|]�zp[&�<���n�3��+������ B�:��kY�me,%NZTf�ؙ����:%v� ��?� ��A�\X�``,���WA�v6H)�›�ϘS�’y0����El$� ? ��
a�
a�
a���
k����+~. ��a�݃�Z ��`�Z �뾿����R��1*���1�����ܝ ��1):(bAeU:b���� ��(A>�s���S�dTŰ*f�H���VwBj_1TU�*�z.�r��Ȃ�K�-��hC�s .�G�*�^������HR����fR�%�@��}LP:�p�Y҃��=>c��\���'gdIB��XcWBMd��q ��E<z\���z\���K��Z�;v�%���^/��E��.�K�����Z].�K����܍]��T����e��Z�f�W%Z�U��j�\�Z�WK5z�Wj�z�V�i��jM��ZKII4z=�G���:G����z=&��RM%��i��UJ�Z�V��Z�f���)\�Z�V��j�sY��k5z�Uj�V��Z�q����-���t�JII4�].�Ƭj���7��H�b��{/���b1�s�(v�(s�1�r�lm�to5f��n�����1�s����s�0^��|�^�Y|��cy���������1��IJ���^������--%���I���{;g��$�3�9���N[�{[tյ�iYG��Z*E����5�M�[{��ݹ���d�$�3�v�g����i)-����G���+E��Q���&I��9 �B�����յI��m6�FM���t:
G
m6�M�ڶ�������� �9&I���٢�Z-�����B#@B4̈́��J@!F�q�����#�dFd̈KX���a�p`.X�5&0L�1fK2U��`Ķ'�[�V/rP�r��Ǖ��"X�`CPu�O���$|#L'L Z�懛��H�
�#| ƂC`�l%7c@�h����C�H���t��Fd��3@�h",����E����r�Ԙ�1�b̖dY�L�2 b]x�D�%��
�A> �:�D���z��������l[���A��oo��_:�b�J�EL�0,ZLP�b��\�V 0U��+E���;�&�vF&NA��}� ���q�
�U��0��Tr���t@b[.������0�jV�X�k�IV���������� Q/����������&�&6P`��1r�ʨ.�UTP����E�A������Q����
��,P~�q\��U3R�S�(b[8��I���4j�ĵ���Z��s��ns�z��B�{p���1�g ���(NU@z��XXȰD.l\й����c�9͆@�ȳ$�b�W;��0&ԩ���Q/�l@��R�9r��4�2�uaկ�[www`��
�k�/T��ꗤ��M-��i)%$��]%&�����'^��R�W������\�j�6��j�4�W�W��һU��Z��m6�KIi�������Z=#���T�G��z*G��z=%#�im6�KP.U��ҭ]+������:�U��Z�U���f�W����t��Zr�[[ZkkIit��Iit�M&��i(jƬn����ċ�(��{/f(�bơ�q�w�(v�(w&o7����y��7�9c�9c��;����3c1e���b�Y|�g3�7��� W����"���Vb-U���4�M&�G������rJ$�<�#�,soon���[T֐�-�C��h�ZHZڴ���ݷ���#��<��,�w;�������M&�I��t��h�Y���I�d�A�dA�V֚ڤ֛K���td�h4�?h4 )t�].�MMZjkD0A�c�A�d�I�d�K��-���;EBS9�!�А�lJ5������� ƬȜ�dRf3Hˮh[l^ɶO&�2a+ X��Ė.&��&��i},L�V�aX2����, 8���m�m��I���x4z� Q��ݛ �6�����j9��F�2&5���3+�� �� �6���e�R������\ib�j)��<-�KY�F��qK��'��O�7�$n���$wxH�����'łqk �ِ��B ]k��["-�12 � �K��&@᜘Q!k ��%��^���(��!��΁�U:'�&b�Q"�Ϙ��b ��x�X���:�nbCX���b)��$g&�a�6h+��Vj����l�=�XLMl�S�)��E SJ)a���XcWA�t$��Gq
b�B�rHZz����u-
�� �wa�»� '!���IfN�d�a�Bt���,u��, �lX�/Y1<����ȕ��Ί�]>���.����3��������$���r���[Ykqlq������cp� ���k��;I��t��i4�M&�K4�m6�&܍V��j�z�^�J�M��Z�S���u:�����V�SJ��K���t�I#�R=���=�E��V�EH�Z-�G�����it�].�j%Z�Sj�t�W��:�N�S��Z�SJ�T���z�V��n0�M��i��$�i)&�Ii)��i4��7��3�� Q��c1f3c1fs��a�9�0����25F�j��vn���7CVr!�vÔØsf�3��ي1���1��f,�g3��7�����b)X���"����4�M%#�������.KDl�dYH�����M���Bht:�A���t:HSii6յ���!Ȳ,����2[%������=%��i4Z-���dI�d�EDy ����]���m6��i4�"g��?������?��&�I���m6DP~�v?��� ��+#�2L�;4:E��`i2#5� �y��k`j ��l�x�Lb3"3 ��DeI��Д�|]`��brb̔d�F
1l`Kظ��&�lQB�x�{�ŕ�N
��<e�7���#��>� Ʌ i�MkC��c�c�o[ď�a��� M�h�N7c`���!�p���t'5���* @l%6$.!Z0l����6YdJȳ;"̉#]D�!<k�_�D���]b%��W�>u�7�z !h�op}�Op���'���#��_qcB�,`X�b�$� ���*(Ͳ,�e["̀�L�7"`�M��+���J�����0�� tN��!Y�+"(�EQ.� �)�qL�)��Q�:��������Vb�W�bu�_���vX&U�.W�����P�2���,d���J��&�;`����nw�v�u*��(�q�\���0*�}h��ր��:�V��+�����~��D+��%�����6 ��yk�
]�w`7eE� �XػB����"���l���(��`]���vڕu*J��q�)HY�р��Ճ�Xrז�Z����~�?`e�j��Y
=���4�M&�II)&�KI��jMI�� �j�z�T��uT���u:�V�S��M]��Z���JI����I��h�Z*GH���z+E��Z-��R=#�v����Z*K��i)%$�\ �R�]+�RS���u:�N�SJ�N�U5z�V���m6��Zm6��RJIi4zM&�I��Z=%��y��bF(�c1��4c1fs9��j�泐�p�Ø�A�n�����nƱ���k^Øw� ��9�3���sc3f(�c1��9��������R� � E/��#�����grZ%�\��(�!�*!�r !�i��T���ɠ�h4 �A��h48R�i�M� �r
!�r+!�L��h�%�[;��M�����EHs�d�G��YED8���Wcخdz���i&�DL�~�Q����g��z���)4�[K��x�+�^+�yEdYG���I����h���d53� ���a�h6��c�� �F�s"cY�1���& ̚VXa# �1��.qq#��$Q™|��@a�+����|J�>��P�6�3kh3kp3sp2wx2�23� ��A��6��3�8�c���F��sBCVhJn͐ '2�^ea�l��ge#;)"�ID�.4�G
hd��9g���A�%N�A�{a��������������1�`�X��e�E.B)\�R�Dl�0��d#f�
�`���) ���~ /�����a�2�FP�D-G BCQᨄQ\�S����C>b��x�X-��u����b�wWX��]��;!�,�C����}���PtW*��PrV��b�GL�V����a}���� 렾� )u���p�ZV��t�����v�w����2�� a� �a���������V �V,��7�`n-�ak���G&���
��C��C����
��Ɩ�I��Ɩe����u��-]��x<�
��x]k� ��$z+Ei4���Z=�G���t�].�K���D��jiM)�Z�S��Z�E���u:�L�R�L�M$��M��hm��hm ��h�Z�h��C��h�T�CH� ���M���:I��i�Sj�2S���u:�Q��:�M��:�Sj�4�)t�].�K����z=�G��ZKGH�����21F3��g3���s9��f�њ5�F��8Lk��oƬoƨo��o�!��`�f�ٛ3���s9��g3��f3fc�s��f������z;Gg�w;D�.K�d�&ID4A�YA�Q�K�R](4�?�����������A��.�Ȋ�AdAD �Y&I�d�.K���飤t�J�
Cd�$��:#�:!�!�DZ�z�T*�X�\�IHI��gs�w;Gs��;��������**�V*�V=C��=�� �� ���I�� ���Y22ƂS`��c`F�EF�q�G'���̈̀�d"2�B3@ ���lD,�,���
�6�V1D�$�,�I��D� ���"t
N��^#x}�W�i�2`�
�
ZH��`������+�e� ,A����l�`��pp)X�3��G4��h$4��S`��a�# B�鑖C���l�28ȳ Q.�ȗF*�lMD�0�x�F�_%| �u� 0�:*h����i��8@�.�D�#x3� �̋�a��� ə�9 I�dM�,��Ș�3��2"d`�vI��l���_�2���|*!W �U��+!]
�`�������3WS=8��d 0�� C�1�������������������
��e��Z��x�q��l (H�b�
�*6,dX��I�Y9�b㺜s�LUԪ*��/��������-ir��W+\�?��u�����qD�
�fR�+��w`ywq�����%Y�P`�бqsb�E� ����پr�w�s�LWLTu�5t�k�'Yǖ(X��k�+B�%Ӯ]SXm�*��\��h�Z;G���*Gh���T�I4�M%�����R].�j54��j54�Qj5�N�S��oI���:G��v�G���Cht:���-ʼn�����4�����C���tSG���:G��v�GOB�Q���)F�Q���Q��R�Q��M.��i4���i4�E��R*E��z=�GH�Y�s3#��g3��ٜՙ�Q�5f�Y�7f��n��7cx�7cx�s����7���7����Ѭ՛�Y��j�Q�3��9�3���h�����W�^bW]u����]u�bYU���g�w%�\�$�2;#��+!�?D?��Wb�W��L�=G��{?g�������������W��]���A�̊��<��2L�%�h�zh�z}==OoooS��;��N�l5�� ��)�N)�F(ȳ��%�h����-�.K��[%��܋b�SB�Sd1 �5�������o[���������\����h47� ƨh4��3���rc�C9�!�А�hHk6%5a���<Nd�161��$Q\'װ�}qE�D�:����=O���)XJ&� SA�v�d����K�������� F�l1�1��s Gc Mf�SY���l57� ��,>QyS�&M;(��E(��e��k�u,<${|J�����$�Rh3ol4sp3v� ݷCG���.V��`C.Br��ːE+�E.A;!90���JO&0�u���������aua٘Eq���C���C�O�"����GLC>b���B�1��B��� F���1�� E�2'a���a�Ն����g�(�9&�0X+EA`�T�V�� X�T���a]t��}l�7�Z0k5���p,.���|K�+� ��O�O�N�Ϋ ;�<3?)ddwVC}��d����LS"VY`+dY�p�B���ZI-`i~��@��t��]��Hţ��._W
؄�E�+��W��D5�}���8G$T��h��E��h�Z&�I���:I��R9��if��ڍ=��ڍF��a%#�R*E���;G��Z=�Aht6�Ah4:�z}=����>�����)���) �������:Eh�v���f�j-F�OJ4��ON�,�i-�Z;I��t�I��htZ-�E��h�v�Eh�c�� f3��g3��Vj�Y�՚�vk7f�y��%�^�F5g3���s9��cTa��b���7�����n�Q�5��Tj�ٜ�g1��f(�c���`"5}`$U��^b.���������z��ݷww)�0D�����{� (6�k �������w;��Zd7&Pm�,N�UC��+�(�F�n[������?o�����������z��m����ssr���ڤ�V���В�9p��$�-�d�&I��$�D�2a�Ė'����MmRm�kkkr��ݷ7wwi�z޷���ac��e���0�Jo�@e ������#� �́��Df�f��l"4����ɖ(��b���b�Ɍ+ԯ\�p(.N�����5�'i�'A5�'���䏋%%�†��-�cb���8?X���,�â�E���0�|l��Np�!�p��t�4�a!��JlF�a��Jh
*��r���r�� �0�^0�J�7�R���+�99+��+�i|������� �)h ����p!wt��Uy�ֶ�v
H����NW"l+ �r&��Q��� E&0Nd� �)2� Srb��(�)/�`F�̤��!�v���"�;W��E�R�B�!®5��,k������:�1�����t����X��`$�w��U�X�u����b����x,���v nx�� .�F��,��3%�f@:�̔�T��e��0'�e#�0(_������D�0k��u@�U�V }s���烻��v �;������s�ms���d �d�̀����R��4Ā�&$���vZq�
��d��z��N(��ؗĶ m��T�[�T�T �]԰w]|z�F��-��������G����z=��h撑��z=�ܛ�#�-�GH�Z)!�Z+E��h�Z- �� �A��n�O���)E����E�Z �A��R Ah�Z-�EH�ZE4T�E����sr7$����z=�������zKG��z ���-"�:-�uj�FfFl�f�Q�͙���4k5F�Y�5��Y�ݚ&c/f3c1���7� Q�͘�f,�^�f�7F�Tk5��Y�՚�٬���sf�fh���Ė�1'�� I���ߧ��~��ާ�m����ooon��� S��#�
�E� h5��!S!��[ �(�� �;;g�+����ooor���ݧ�����~߷�� �v��ާwi������okM�I�ԗK�e��Z ��h43K4�C$ ��h)��ėK���m55��nnnn�nۻ����?c�֌� F(�d5�Cx�b7� gA�2���A��2������L�jS(�CE��3]K�Eָ4]k�'i������x2z� ��ar](\�h/j� ۷�'V}c
EJ VX��b����Tp/9G��t.Á�ɚ �Y��ݛ ���#v4���Z*����[&CK�U���~�5_� �� �� � _�G��`��b��dݸ;���B�R��"���ȅ���\�r����l�l��0��L%'D�& Ђ\�2�!��Ut"�|�S��g�C>b �� a,7KI D���Q�q����#�1 � �LC���Vb%X�U�"Wx��ئK�GS�K���!���!��]S�[�)�,��˕��* *T�T�V�v�v\�/��sĺɊ��Ǣ��q��j��!��:�J�>V)��bY.`��������V+�ǯ�EI�36ș��֊�a}���/�A}tT�.��/�0�|��� +�]t��q ��E9�WB��~�DtC]S%��h撜�F���C���!�3E��z-��R����z=�Ch)�E��h�Z ��V�E���m ��?����C
}=��&��0�44�)���BL�?G�����htV�E��RCHtZ-�E��h- #���z=���i�E���-��Aht6���t:$*7Ih�/b�͙��sVj�Ѭݛ���y��n��Y�Kٌ�c1��b�Y�/��Q�1F(��f3z5�o7����y��n�fl���s8� ��W����"5��Vb%U���!�4�'��{z�����ݧ7)��j��Ҳ�G��V��h�Z-?��h�Z-"�T�G�����n�ܷ7m������{z��̡�6z�i"wsssssoosooj�i��jK�&���  ��(����K�����A��Ch�K����M�m��m�ۛ�����FOg� �D%���p�p�t�� �dC`H8Rp�8 ̀�dFd FJ��)���I��,R� �d]���^�r��'\�ru�]!t�D��#x�H�;ⴀlJ��„����<��Xf�xT"P�%xɠ��!�&\<X���@
�%#��4L8��h$6Sa)� M�h&�T�P�SW�,T8Pd�bY��/��W�^���_O�~ξ�u� !h��Y�[`����':H�d�"��R) � �Bc �d]��dm�f[`��(¦
�m�r`���2P�%�� ��1Ei���R���s�ظ�l��)�k'�ĵ{��/mz�ݍtc1����F�kcr%���d-®��������:������������LH���� �[�����u8�;�9�Q�X����`1S�1Ej�+�`1I�fwk����Ϋc�z��(��ds�T��U:�z�.��51��)�v�,`�����I��8��9�90+%e�H'��W;�&$N��r�_8����;��8� �� �[5T?8��%���rb���S���:[p�51��)���=������4 ~�h4Z*EH�T��Z�E��h�Z �A���tZ ��Z �C��� �~�g����j��L���Y�A��hi���c��=g�����A��R �C���tZ �A��h�Z-�C����h���h4 ��ht�$z=���ؽ�XŌYi��f�Vo7��x�o7f�k4Ɍ��Y�1fs9������9��b�Q�1�����tn��k7����Y��k-!����lĞ� � IP�) ���bwwwwwwr����ڤ�VQ�:GH�T�Chm��g������E��Z;Gh�,I�������wwwwwwJ����Z�w;���(�ۧ-��j����.�K��L��g��?���=�d�ID���~�Q��?H4(�R].�kjڶ��or��4L����� �L�jZ����Yr�a`����o8�ȌFh�bfF�9��՚ ��@̦P2'&B�vB���/_k����v�.v� ާ���������R�im0Vմ8�@�9H�( ڀ�� L�`Z��%�.'0��`XXl+��:�!4����ay�6�ƃ�PĮT/)D���P/��2�k�5���}/ �� � _����a-�[A{{�c��m�P)Ԇ�mHc'6O&6���fL>N"a#3`%b� X� ��a1<�H�:WB)]��EWB*�E�"��Ws]LG>b+����$�1��Be�A,\A,uI���'!�#p�_������x��`&Wx�}]`!�ʤK�])�K%� ���}��X��`P�������]Xe]5�_�a\��u�_S��|�+�w�uЗ]b���1�C�tA]S%�X���0�>a��aR��-��(� �X���ǧSϘ�l�%b� (���V�XY]�RT�©�
��!TVN�,��ں ���]bX�!4qP�\���SLXg�a6&c�s���tz-�E�X?g�������t4�A��hm!��t4~����Ah-���h����4~�h){=G���IX?��� �����z��
A����,h;����=��Z ?G�?����AH(�?g�����t:+A��R !�:?���?� �(E��h�z C�b�/�XŌc�^f�y�j��k7cX՚d��4g3�����f�ٜ��9�3Fs9��g3��f�D5CY�Ƭj���yy c�1C/�P�b'X��`&���^b"�A��Y����H�ܧ76���m6��Z-�EHi���
;Gh����v�ZAHt6���-�Im6�oossr��2{=g����h49���\�%�2M m�ST�֚�ii&��?g����{=���yG��ٞ�g����~��-I4��Mmmm[Vޅ�L�%�r\����L.0,"���Ń���\BpXB C��p �@�dDfFDf@|2�A�J)e �}�fdȳ =�R�ת^ K�.���y�'wH��ď[ď��l5HY(�0$�!j'����
p.�>�7�_鐈��""��\>^#�`Dd��L:C�Àxp ��3Th$6�a)��L4 E ����Ld�(���8V���k�z��`|����\����Ɍ4�$�� [@� J)Z�"�1�F����c$�La����8��1�k
%��!dd����V���fQH��L1l1 *��˻���uS<k�f8fi����/&Q�T@@�Z�uꗅ0���U� �U �T���V����16�������1�J�Q:b@_�2�L���
�� g��x'�*-s�1�w+��UJU]jqM��0-S�LH���� u\�T �*Ss��U+���Z8f���1�0J�s��`<�QJb@Wa�G"r ��<���>s��21T^�`]��+���R�U�;�)��V�1(i����;�J�LP*T����)r ����
���1�5����R��h�V�C�� 1J����~44�A����?��:�����{?��Q�?h)��g���g��������LT�I��?����>������������=��K ��h�;���������� A���~�Y��{?��� Cht9��~��4 �`���X�X0��t:�E�� C�о/�X�1�c� ��bcXՍcX՛&b���r�l;{L=a�;��=a�Pz����{P{�;G(܌�(�#T5�cT5���3c61�c�1B��/x�}_�������]W����`!�t�?��Q������(�۶��&Ѳ�E���i�A����w;��-���s�A��ht6�C��h�M�6���$���z�g��?H49���J$�莈��"�A Zm6��v�����z�g����K";"�,�"Ȳ+#�Y���s�������Q#����mh ����vGdvI�Y�=g���`11`�g,���qfK���gPD�� �����h�Zc2�̅��AyL�\NL�l��l셋�xV��-_5�r�hV��V��V��V��T�\�*�J UW�,Oi���+N�� �|!��AY������X^��(�<22dW@�B�8��AY��Vo6��aq\�ZRD²y@��
��
�� ��!z�pZ��Z�Z�_�S "3�ς�O' �D�1Qj%:��K0�������L�<��;&8O()2�2�� ��Pe�f�l�ԭ�<br�b��1��������`���N;��EQ�8��E��{+�k��/������� �xF�����~b7]�(u����mJ��rr���� Ʌ���mE,2��� ��/��͛S�%� J�,���� ��1��ʺ �}��,2�X��@��!��Ϙ[9�_}�:���{.AT��T���`-�� {�cEfO�W|»����9���`�u0u+�.��� ��+���� +�ƗX�Ual�#��0y�*�0{>09�C�� �!�R �6�A�� ��������=g����-~Gh�{=g��v�g��z����z�Y��{=G�\H2�>��w;g���=���-���s�-��{=����;��˄&��,��g��z�Q�=g��v�Q�힣��=������Q��~�������hL.X_D �h4: AhtV�?h4� ��/c�1c43C8�[-��Q��Xv������� �����[-��e��j-F,՛�c�~�ô���&�-E��� �63c�1�е ������'�X�� �����w;��\��2L�AZ6P�t:�A��g�K���.K���.K�禃?��h4:�GZI2L�$�\�;�����?h3��%�Z#�<�"Ȳ+!�r
�B�B��=G��z��h�Kd�"�h�!�r�!�l�$�-�������?HbK�&A�YC�QE��y��-��� ��@��������������������������_��������������������������������}�������=��~���}����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������?�����&�����w�������{]�{���<���iM��'����*USi7\�
%�����$(�$� a�(J<�Y��BB�z�*x��vDAFa�q�q� �� �I(�J(��,��(��(��,��,��4� 0��4� 0�M0� 4�L0Ӎ8Ӎ4�N<��4�O8��8�O8��<��8��4�4���<��<��8�����<�@@�@��<�<�8��8��<��<��8O��<�M@��8O@��?�;<�O�?�������@��?�#�<�=;?��@�=����?��;��<�8��<���<�����?��<������<����<�8��@�?�3�?������O�4�??���?�3��@��� ������8��O���������O�<������?�s��?����?�����?����Ə�L���C�c�4?��C�#�A�C��"?�$C���?��C������@?;@?�c������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������?�$C�=C�?$?��?�D;?�TC�T;C��;C�3�?���?��?�C�
?�d�??���?��C���
?��A�O?ÿ?��;C�#�A�? ?��@=?��?��?�#�<=@��?��C��?��C�?��?��8�����<�@����<�;Ð?����?���������8<��8�9���<�@��4�8�����8��<��8�8���8���=�4��4ӎ<��8�<��8��8�8�N4ӏ8À4�L4��8�M4� 8Ӎ0Ӎ4�L8�M8� 8� ,� 0ӌ0� 0� 4�L4� 4��0� 4� 0��,� ,��,��,��(��,��(��(��(��(��$��(�I$�I$�I$�I$� �H$�I �I$�H � � � �I$� � � q�q�a�v��@��:^˃��и>+��?+"��+�5���B`�`�P4�*¡����9To'qt���Ǥ�N��t��M�[��&�=n�� *I�P�(�( '�B�Q�8!DȢ'���AS6*�R
l�!�3d��.��&P�ՌU�R��`&T�ԅ5B�@UE������4�A,Pv逈V�X~V p~VJ����o�+|��|<}c�-��61�J8cK��q�"�#F%VA��U�!�M4�9�8�� 1$���R����4��u ��r�%� WT:����W����,�]���HUR\�?RV���]-uC�5�����qu�Oֻ����v��Ү����H��i�,�E�� -Z%3=f��v���d�BP�bi�&����$�����^���K��������_�����﻾������������w?������L���y����iW;����;��i�9�9���;����w;}R�T�
�]a�U9R��T�U��S�Y_[�`���V��ΰ������;�,��n;*\v�qL�m��"s�(㙧�W��)�8���$䠓���JNI�J��o��zv�԰���X$���ԩ��*���������hh�hA�F�z���.���,�)�4[E�[D�4ME�MD����yV�N H�:|�3�⍨�D���D�4KE��;D���v�ht��蔉�h�EQ?'ٵ�Y�n��s�e(ʶ���ZD�ME�MD�4ZE�ZD�-�f�H�.�H��yF�\@�-
�4 @�4A�?�-Ҵ�O��j4��ju:���m���_����� �c���l=��8PyA� �ec+PʆTXya匣�=����P��|�R�_ v/��n[Eo���uOj5�O��U���)_�����!u�����)�U���iZV�IT���N�i��R5�h�&��h�6���E�����R.��h�.����.��Z6�h�E#�F����&����5$ZF�I���:U�ZV��eH���EZ*eL�E<����e*A��Q�H��me;)�J�yKBqA�mA�
@�A�tB�������H2=��:�ݞY��l�e*)�O)�K*eL�e[C��'���jH���U�Y�� �5����E�Vİ�]�3W�Zɫ'��'ˑ=�D�T������bsklLj�a�C�4�R�I#)D�q�•���馩��Ս1'�q0�-Ԓ[�d��XJ[kI�#Tj����c�� E��ñlb��n0h�|Y2�!de�K�^LY���{�����Ӹ������O�jKM�i�k�LX�*k�dD�� �����$��IDT�,�����%�>i�,wt��q��������P��H��R"�}� �x&��E�^��t*8�J�*~?
��T�¥� ��@� �Œ/Baq�� B"�n�Ge� ̤�Bg1{gaa BW�Y_���}w��}w_�]w���5}]uu���]u}���W_����}�_g�+;����8��k�(]L�ud��'ߛ]ٵ�kuf��B�(}�F�tm��VO��U����+�j�8����jt]�A�deQY'����&��3rc����)��rcnx���|VD�Yw2,��s���r"�H�*����w���cj�C�NC�� �:0��˼������IҴ�!� �T��m Bд-
�d��3Bд-
�r���U�4KD���4JD�JD�JC�� �y#������3���l�gş�G��}��*>|�͝gyG(�R�V$]��"��?Vs�f�f��'��g�w�M���%�Z%�Z%�hv�h�%"e\�"�!R!hZ�#��@�
��- Bд*B�t�F�I:N�����j)NYv�����h��<�_��S ��ae�0�62�XʆT2�� �ec+X�cl��S ��al5���%�[b��
.�S��z���{�������������������������������'H��H�t�FѴjE�t]D�4M*�WC��U���Hv����&��Z%"h�.���t�e\�e]ʹV��MD�t]EѭF���'I�t�J��:Ψ�2���
�(�����s���3���\7��|ލ�y���4@�4 @�4 @�s�fo#l���|�9�������s������-
�VR�T��QG�+N�9bq%Ab� ����X��`�X�+�+����֫*���]�*
���]���u���)�͒���D��ٔҁ��t��A�@A���!���
S%��E3ԁE4�œ�h��RL+L<H i�IҐ�"��dkC��jђ�+C������Jõ�
X C��R����,R��, "^!/ b���)�ӆ�렆� ���6�4D�7�MfؕSi�Q4/1)��KBJ ��-�A�E$�$� %D�vH��-Z6h��@uC����mx�u,0��LJK��,��B��>��z7�< �?�iǤ�OH �;&��?8n �Q���o$!h���[��vP� �K6LnɢC &"3u�30mf�̓T��,ar&�UW]u�W�����__�����_����]��w�u������wwW}���wv<�ۗ;\�����q�ۊ�[�r�s'ܜv'���;�>wv(wws�C�����O�UԱB�Q��iʝ9CJr��(qNTU*S�J�7��� 5\}�,�s���"� ߍ�ax��X@��x����"��]�Dv�v�������ݓi>�E��7�� 2rS��$*�ݐ]���N�V���:N���������h:�������"B�+A�s��h: �6Rʳ*H�#�g��8u�Y�uGTw�@k�(��l�eV��>���S��#��4 �B�F��-
�t,�4XѴjGʰH�5�sZ8nw�Y՝�Twgџ���2�ʓ*ȥ���h:������H:��}G��MA�+A����G�&�t�*�x4�Q��Yd%�m�u��0�]_��
a��n[����~��YlÙ��8ȶL)�/���-�v
a��Z�~��]E�u��m���(��<�����������������������������������������&�t�#H�����iE�4JD�KC�<�E\�e\��2��������e[*�R�TS�TS��S��TʹR��V��;D�JD�ME�mѭ��#H��'I�$u��q�g՞��=�h�;���γ��Fٶkf�BD�&ȗ�,���7��3� �'8KɔKɳ'QBf��f���h�:��<����s��GTq��ݝ�y�}g������)A%:�#�����!:V@,���^����Uv����D6� �t�����-����45���2H$Z@�"�E�eb�T�m��LRS �rK$%��^�$�D�I6�CJ҈E��#,��U�Z^�kI aZO]�J��ť��Ep������hܲ���^8_5c��~�ӐS��K�ȑq⨈0��L�bEM�$$����zQ&�HIQ$�$�?H��L������6��)�c�x����T#(�!5L���V�EQ������"?�"�o�������Dr�"J� �]��b$u1;�B��"�!�7��6��BmM�V���4�&��1�3@̵���C(������������������|B����������������������gs���9�L�r�Bu2|���̛>d���/�L�fs���H����>�Gy#��U"L��+�e]k�:\��r(J��S��]��ܺ=���PLk�-� wػwc���c��Q b�F�ś�V���q�1>��}x��(ua��O��7&���T,�CJ�����w-�̮C�U �T-׍���ԭ�ܧ$�'I�t�#I��>x�;�fG��{G���h: Q�g���h���yg��}G�䎳��9γ����kE
(gɨ�\@�4 A�s������m�3١R �����HJhv��,(e �(���:�lꎳ��<��}�g��Ɓ�hG��h�h:��{g���g�����;ϡG�'H�4�I�m+Q��k�a��l�-�n/��Z��~��l-�[��� /������k��eZ�~�aL5��_��n[��6�aK��kq} ��-�v[K���j5�����_�W�W�W����X������U�U�_U��w������:E$i>�H�=��ԍ�h����z�h�EL��觔����R��R��R�VR�VR�YK)�<�eL��,�ht����%"�6�h�=#���h���ZF��Q��qF�o�Q�m�湼�l��h��h�9��5�r��읓ref��J�VJ�Vi�f�2ɹ;'e�s\�3��9��9��9�y湶m�Y�u�Q�y�a�rq�r���r��1AbpS',P!���:����"����m\2\�`t�(�.R:��/(r�y�U�o7Ml~�)�xЪĎ���% � j�PF���d43�`$ �4�a�I�RYzYE0�bH� �%bQ�Q),���X" �ȋKA�<X�hx�*.W°��� V� ` �`#�2��K"�7����R��r�u���>?WM㨙�U�-�VH��l���%���%�$�� �$� � � ��t�!�C4Ihz�!�D��MR��i��r��D�"�AIQr�,� �J��\���P-�,
�_V�����`tK��\�q��r
r�$�sm3�6�ch@"��$�Y����ʍ�[d�-�t��m2Dd �h��!�fH�� R���}u�_��}W�����X�uw����_�����}���wwϾ��w�\��S��N)��S��63�5������6s�jg��)�(�v�����x��WŹPT������g'd�N�d��8��$��I�&N�M9Ld�)��r&�$B�a3�L��W�ͼa�-&�8��qF�8b-�����01�h�ܯ��`<yr�㷜�ǜ���-��Fq����ҧ)|��Uq�]NPt���@�#�8��䓤��iM�i6��8}�s���uGY��g������h�ϳ�����<��w���=��9Ψ�8�(�6|��di"s"�R���(��� A����?�� ;��;ϢA� A� ���@���TQ�ʍ2l���c���h�:�s�=���Gy�y3�?Ϩ�>Ϩ��l�g�=�3�:ά�9���>l�F�IF�i�I6���B�_�� �[2�_�2ח��~�ae��a��$�_�S a��l6�_�� ��aE��_��n˜e��a������/˲�0�e��_�yG�W��W�U���_���X���U������w�_��_�4��RF�H�>����6�hԋ��-"RUʹN�yO)�J�YK(���r�Q�9G(������觔���r���Z-��.�h���h�>���E$i4����Gn����kF��P�s�̓"E2U�fk3j5p�"nMɹ7&d�%d�$ѝ��&�6J�VLɹ7&�ܟ3X��YdJ�FH�Lə:"��湭���:������=��;O�<OJ�i���s% � ��xس,ZѲ�\8[5c�V�z��=o�s�c��q�kh6b�m5�qi"H�z"Ҙ�Tl�6b��b���d�BJ�Q 2i�ǒG�:Q+J!��X�t��vXA,�q l��Ii u�!�̰�n�l���-|Ȟ& Ŧ^-��X�\Տ����?��8���#���vʙ�0l�Icd�I$id���4Hhv�ڝ���ڞ5ڞ���%-TjmP�����R�MP���(. �E�����7]tBv��W)��HB��+�D��c��H�!
*�C�(Df��EoMDF��BmM�f���2d"�y���وl��ɚv�U���V�%_��U���}]��w�����#w����瓩�ΦsL�|�#�7��6��(G�O��'N�K�FI��$GS#ϙ��c~c���z��W"L�D�\�ҹܷ
�l���V�Ü�er9���]���B@�P�a~1j�b���~����Lr��9�K��K���ێbt�0��9X�}�uЙ� �M�:�!6NP��.�r� U) 59��xSy���t4�N��ۣwf���q&�i#G�zH�4�#H�}G�3��9�s��7���(�:���=Ϭ�ά�;�(�9���D�d��F�f%��t)��g��Y��s��>���@��;����?���4
?�4
@��
e��sedj0�6��2d����g�w�gTuGTwg�{��tu�g���q��9�ugq��F�}"�4�G��#I�t�'_k酰�Ɇ[��_�(����~�a��n[����a��l6n�_�������[��l6 ~��Yn[��k���~Z�ab��E� |�l)}����� �����#WU�/�_�x�N��RF�H�6���6���-���-"hv���z�Rh�E+(�F��
д-
���e)QJʶ�h��Hz��h�-�R.�H���h�����>��iE�h�Y�p����B�Γ2]Q��Te���1��!�Aȓ1��d���s:3��<�3�9/%�nȉ"C��3�#ٖefq�Y.ə:"����q���u�Y�wdW��� '\���j�듫NV�%S�'%�X-uh�`@+�B�`��E���/� �{�+�Lmr�` I�$�Q�l�r�T�#�J��,�I�q,�%:Q�PI� %I-0,�$�I�PZJ@J����\�qp|V��c"�hJ,-���X\+�ڕ��B9`�Px�`�������.���օu��@����.q�ݛy7Hb J�_M)�$šdI���I*&Z$4�4b�-���KHZ%�/l�ٻd���T0T�P�P:���V�]S
�[:�� ��G'\����uuC��k���y�u�*T�����9�66����bi HAݓjn��Z���d��K�Klɚ3uM(��bTbfEV*�X�}UW]]W�WU�U��}��������]��]��]��Ww�����}���y&�?h�3o�m�x܍�b�m�r6��q��Q���8�)�m��ݜ3 s����]UO� �vQI� =)��
ry���gr7�����O�:���OȊ�6���-!rm�-�!g.�k��[���ku���
�����B
�YB�6�
{����S�>��S�{�
~��P**<��U:�Q8��`���^V�.�V�c�� WU<���3�������6IRG�}G�4���m�TL�8��ލ��6��oF��d�'����蟓�U��K4�VJ�$�P�2(���m��?����(�<�s�>�h�<�3�ꎨ��s��gցH�G���ReBв��*2xɩ�J�(���U�~O�~O��>fٽ���mF�5�s{8�s��H-���kH��G�)#J�l�M���Zٮ� -ˬ�Qs��~�_��Z����m/��a��e�n—�)�0��ae�n�a��l)}��m���
a�����]�˲�-�R�-�RQX�m_������W���` ��-�&�*I=���6�hԋ��&��h���z��蔇��yWD�;D��=C�J*�z��Z���z�H�&��h���Z-#hԍH�>�4�gmh��3��ϳ�<���:D�%�/4�VHt���^�"�'G��������X�X��X�X������!DEȹ|fc��DD���y.ə:f�og�sg9�s����������� �0I9�zPf�b��� �:�XW�VF�f��_vB�]�TmM�����0MM��rD҇ɩ��d�bFeId�%��]%�R�I$i#��J%ZX�.�մ�]]Eb�^X5,��\K�Kmqu�
�XF[j�ʭX�bՁ������� �5�r��G���)�b�q7�&B�E�6�f�$Ѻct�6��[C��jx�mO��ب�&ȭ��;{n�]�.Sj�ő-VƴCT�����N"��g�tCwtDwtEwpFr�!�!\�9���F��"��"C�!��#Cq�5��D6�Q �5�B�AKq0<Lu0�6�/cL������+�������������������������������H�J"�ND}�E(���F��d����q����c�&ό�L�̝ud���^NR&J�&ˑ6\�ҧ �n��5r�6rn�;7��қ�����Iv��(G-��4�\n�aI���{zn�8�66u�g�Q�/7 ���&��Buab�a9F]�EUa)�,J�$*�n6|/���B�gro�"�7?���I���O� ��Ǧ���ֻ]�5��M��I����>��h�6T�捤k�(�E �fٶm��&�ܝ�蝓���l��h��sI��Bв�!R~��}������n��9�������9�s��7����s����?Ϭ�>ϳ�д+(����iD���l��rNN�vO�vMɹ>3l�5�Y3\�5ͦseF��6��Z>�iZm��=��gl���S��ڛUJ�Z�V�ɕ��aK�~[���Z�a��m��ܷa�� ��a��� �-�Ym� }�����n�_l-}��+�]*�j�M)�:�����������������������������������������:gL�{M�ʓi.IE�]D����=D�:Cʶ���t�hz�R��Z!蔇hzU�=�-C��;C�ME�m"isM�VΚ[M��i��3�:���7�Z(Q-�K%�/4�VJ�9��^���"Q��=Ǹ�C�yC�s�q�<��<����� ș"Y|fe&�Y*�2^K�J%�O��m�f�Ŝg8���,}Kᆰ���>p �[l `�]i�>0yZr�j�*˕�>V��R�)uS���4�14QMGfp̨�%4��f�TM ��F$D�����ԑ�Q�X2���ǩ'���#��䐔J@K!%��$�W�>+�X~X�� aIx�X����+��`�+ q��A �:V ��ҰhX1XX�9R"�`�� ��jˠO�����ɺ;����Rb��%��m�� ڥ�*6Ll��1�#d���l��!�&жf݋v��X�PSV1X�hx�)��/N �,N���5 �����/;��:��ה8����r���qM�㴋�lcg
�YBU��$�Y7)6Hh
&h�Κ$4�Hjx��t�SL%&!& ��6$�(lk��r��UU�]r���������_�����������}��ww;���}����6q��$X�D#B�HZBs HJ�����6����4���]y�����m�;
�=R�5*Q'���/�\N�T:��/�/(xCyC�Ωt���������q;���۞7Kl9l���KPJ�IjSnű{fM�1lI�(��k 2�%�� �8m��4{���vK�=NS
�'�dl��.vB��:��P@��{�_�վ1NV�8�+N@��E����ϴ�t�gl�[-��c��[-��cIt�IRNn�C(YB�5�t��2��3'dܓFy�g��7(���hT��YGAx��3�=�s��;γ�<�3�:��9������>�s�<�(�;ϳ��=�(�<��:!hV����%�3��<�dܝ�2fL�nN��$P��P�۔��ZN�lm��e��lv[-���[;g���Q��3UJuZ�C��i�*
O����k5־e��aE��a�� ���l6
a��[ �[L-�[K亖j����~ ���pR��j�:�QI�OW�/�W�����/�]W����/��7q�5��v�]����Zk���M�1��"H�*�VʹW*�WC�&���z���z��ȫ�h��r�iiL��Ki��mv���SM��k���JiB��7&�2�y��Ng">G�0�(��Y�i�gq�h�H�<�,�;�3�;���<�(�=Ϧ�Hv᫆��fF�,�1�=��9�sL�4�l�l��f{�8�n��']y%�D~�*��U���}�]&<��� � �S��V)��:�6���SfѰ���-)0����&�LX�d$� ~�$��U%�H$�H�&�i6�=J���L��Kd���K��tV;_"��e� #\=]ec�ɯ!YY��Y��Yf��m�>��M�
Cj�U�wV)��V��p��F�I��MЛM�Q�ت�lUm�Dom�[� (b�q6����T��f�^�֖+�J�V��='\���� �Rv��r��=���e�B��B�LA�1|����ɳ�Ö�n���׵�el����Э��\֙2l�/K����5��������������/����������Z���7u�m�n�7Ko&�1p��•
T2�"BT��Oaz���Φm:���f�tmWG5ts-�סt��N�;7R���NO$����o�zn��O��n�v�ڸ�Wh�QI������64��cm�n��Xa�\�p�b�1�q�=������O���c��WC���7�S��pk'�«�:�y�1����� �#P)'�@�<*��O�����)�y4�;���i�f�Iv�I�n��Q�'(�:��7Ͳ��� �T:C����<�E�e��8�Z��g�yGVug���������Q���h��g��gTsg�{h ���h�r�Q��R��U�C���91�]�,�7�,��3�B��T)�n���]�i�f�������w)�5�Q��Z�S��ڝU�v ������}>���~ =�i�S���Y��es+��n�WJ��OI�)=A����ڋO���\(�U)�ҝN������������:�|:����Wk5��f������i�����ޛ[}����߆���}�3�4�It�I6�i����[o�m�m�ޛ�jo���ڛmv�M�w7�Qj�Y��T�SGR8��8��i�%���3XN�A�}g��{g�yGy�uGY�H��3�9����l�9���8���Y�ugy�yg�{G��}H ��5x��VK���Y�qg6u�LD�����,u�U8������'u�)yC�*}ה<Au;��@�iq�ׅ�v�m� mصHl��Nl��d��&��L)&�4���R�
I�M$�$��sė�RBE �"i( a"�|�� ���������mpL+��x[+��,X�����V��\�Vk#Z������ o�}|
� ��M:�O�8��A��(������ݓtHY��p�HZ�g dM�ex�X���㘊�:Y��`��9V�Ir����NX�&(^�j���'����V�o��E}K�'d#��NNP�8��ᘋ8��ٷ�&�q�kp���j��&3Hi&���MI�#!�+&)�T�0���iQ��]��W�����` ���/�_������������wWv"g�d�&�b��YB&�y�(C��[>Ջu�طNݓw[����Emcz8f�qN�vϕ];QӲ�I�u���uS˞R�W�<<��+�&<��`V�NyS�>�����buK����i �[X�&7 ���t��e�d݋p�n�!eD��'bi!6� �`Ĝs����Ԯ��B)�6q�%�����B9�OF�����ޛ�� �y��<�,N�u�����JK����iF�O(. z�����ܕ�Rm&�&izf�I2F�>��R5���m"����)�KC���,�"��yS)e,�e) Z��Y����{G�{�gtu���?��?ϴ
A�4�2���T�yJ�6Uʶ���J)�H�5�ZM#�,����}I3K��2�63i��S�rn���o�S�'�}E���E)���U�z ��pT������O������ppppppT�pppp\}=AI�>��~��}?Ap\AI�UJ�N�Q��/��i��W���v�,�� ��a�6����V��8��_�UWԭ��r��]�U��_�F�j�_1�a�40��-�Z���k��Y���UJ��>��3j:��
r�T��R���HTG��{#�f��sg�m�ѭ��kF���ٶo�g4o����f}�����YG)YO*YW*�vQx��k8��:����v��~L%),rO)v�P�<��;N���u��I�.;$iUyYF���r3�f��59h���-4�2i�鮤�$�d�� �4��ȉA %ĂLiDT�(��ifIq��yi u����d2�
�k�+"k��XdY�%/���u����d��+��l� �� :~�nj��S�i��N��8��(j��Sn��LW�����0�m� N9���\������R�N�b�R�=�+Sj(�u�����\���
}k��e�t�KeT�w5��kg�l[u������s}�ֻU�&̭�3ZҚ,gLV2�3nĵ2�&�7�������������̮���������������B�m�V��Am&� xۈ��3C6���(A �
m�0k�l=M�؄(�0�9F_a�t�r�n�bt(; ���Sr�+��3�������q��_��+�����#��L]bFgm�-�nPmmI��ܔڛ6�b3y6!��b}�����P�����݌g>cK�uC9t.J'�[��m�۳x��� ��F~o�?7�P[����B
|��ϑuIz�U�
�!�2�_%�Y$��������ˮ�������uڛmm���틩�^�IF���%!�RE,�������ZM
e9�Z,���6;-�ƒ�F�,��S� IЩ@��e,�����tKE��#H��/K�13�{I���k��������WW��.[�������ɯ��c&�a60�aB�ڝN�P���O�{O���z~�����>���ppppi�
�~ߨ8-=A�������}=���ߴ�������?�Pj"Uju:����:�����������_�
Q��! �� �8WK�[e�v/�scca匬@����a:1�~ �
�)P3�O
x3�J•�
i�G����B& �@�TPƆ8sB�e�m/�]�FF LD�0�0�aCe��l�Rc�4�H��EY(����HT�h: ����g��g����w�Y��Yݞ��y���g�{g�h6���R�����f�h��i6�9�Ɍ���=�<��jT��� B��kԀ“�E)H*8��ˠ'9���"�DsH��KjGl��Fd�ȌĤ�DL(�������RGI�"�I�@� �&�đ�A�PqJ>K��$Ė��`�QM+��ڴ=\�X~X��0�V+W�b���`�X��!X��+� �J����X�n�b�T�*7P�kN�'P����!S����¾j��24q����Y���Q��v�s�沥F}[��++�����K���"�@ܨ^�'(^�jW�Ӗ':r����ߍ�p �T�7���rvW'd�NH���)�p�6&m�ݓt6ɭ�lŹ�T����%��4vrh��Ւ D�DdPd��!�U0��SM��U���_��_������/�_������w����}��ϼ�,�I��)q4��f-@N5i
SvmZ5Ml�ݛ`���M��vp�n�����M��Nww;=U]J��d��:u��'}S�^��o���
^Y�@��Ψ�RO�uC��R�[�]�Q��^�)��d���)��T���T��mRZ�ݪSS�ɍ�-�!Bɸ �đh���\�
�'�d��^ꗁn����<S}c� ��
�S��*�V�BPW��t p$����^�(�Q•�+
4���'�<�v#؏B3�&"b�N�./�� �ܫr..-�6�m$�g�u3L��M�6�M�Y�>�uUV�UC&�]��gL锘�-�ʙli���{]��op�;���:���q�Y&��cI��i������i6�m������������s�!
b&"b4b=���a?jj �l)PQ�R���S��ڇ���. ���������I�?A���88888884��pi�����Po��>�O�PppT��4�S������x��^�OU�/��` ��� ��L��`�aR¥�}�������.v�v���`����# I`�x�
��n T |(�F•�<)�O
xSž�(�Q����U�n"&�KD ,3g� - v�v�E�T4 �(*P6P5�d �1�lM)�ҚS=���ld�I�n��R]��=#QR�R@����uGY�Y�u�gY���w�g�}h)L�h֏i6��Ze���m��-����-��k���`�~`���GX�=r�'y` ��� Ge�Or�'fcw � h���&�Z��I���ՃG�3�J�LP��S�SKy%ԍ"�cHu�=$�Hu!1�R�IFIґ���t�LG[kQ�둗QbAdei�������+����~WK�_c뤹I\k��ib�R�L)������tB���(�aV��#�(�'q�%.p�Z��w�< �x����@�q�:�w VkJ�@�b�J�:���QZ�B�4�j}B� ��\�>����n���l�-�Kg���]:�ظV÷\��.m�Z�h���s[fV�h��2X�d��ȭ�f%��o�����_�����/�_���������`V���[ɸ&�JM� p�7�mb�ٴ`�o������ ��@����(� �(g;�u`{�PԨ #��렟vR��
n�@[���':����n'p��� ��pN��/��+_����j��h��MQ�STF��M
mv�Mh~֚�5�� i�A�����&�J#H�2L�$�F������f�A��q�y�?Op!(�AM?U<Ӣ(ӣAi�S�:Z}:<���(���t�e��*�9XU­�aW
�h*�v�+H,�
�6s���RpD|;x:٠�]�u}�rY��z~
�u�r��(��=��m��I2�m-�T�Q�m��2�[Km���y�q���\�n���z�fW2�}����9�u�p��”`�7F��[8�҂�µ�W��Z
�9�l*��AVµ���h�#%[@�
x��u?�P\����ppppT~
�������pppppppppi�888. OPp\}?�AO���:��_{���'�m�%�7���n��0r��`��h���0HX$f͂R�+�3l �
�������&p*fV��������*�
��U�S L�SH
\
<
1�3N \��F@��G��+8xU�r�op�o��]�p�<�
X��(�i�5��:e���*ci�f���^��RE$�V�H�=��ԏh�G�}G�y��5����H��I:E�ZV���f���i���[;gmm��ḹ�X
��鵘q2n�Khi�9���bm�]�$�1�|m�#6q�bJl���df`Y�DT��O���$��@��&&]$�%����K%�I$�III�H$�ORf�v� �ĝ(�( h)rL(�A`x�kFKA �&.��I��%�+ &X Q`����Bɕ�ˁ.V
ە����QV
�>�C\K+ՀmZ2Xr�b���
�,x��n��@$�}�JV��ʜE��ԥ&rR�j'*����P����J�0R1R\�� � ��D�z��9ZzNX�d�z��X�x����O�*z����;.��y8��)���w (C�X�p�n2l��Ɖ Ʃ--�SQ�Dv��Cb1b�ʙ"2٣4d� 7�����������������Ư����������������P�j٣x[��q#�X
hamf��T���d7
���٣`�GLu01�m;�W��`,��w���PK�
ڷ ��+ P���
�)寺�
h�����L��P���N�8� % ��� Z>��k4f��Ff��;8�3n���i �[%�y�SD&ɭ� x��o��g���O8�'ݛ��IN�`]u+�3NZ�J�
[(`��K-�0P (`�������b� pz� `��3�@�t���`�x ق~`_� �V��{��`��-�F�(8R�@W�
��&���)0K�r�B� �3��0i���)�!lpl�k��-9>��AG
40�B>#ЍB%��B!؇B"b%�#XN�|'�P�(�K
V�� x5��`ӂ
x4`�@ӃD��|Z�9 퀤��n �����_0
`�P���o0N�2��=�|���E@`P�����(��@(1W�0d
)��PIN����. ~�ߴ�~ �~��8.
���������������888888888. ��߸7� >���~���)��<Jp�PX(c��� [l�0�#@ ��0 3�0 v� 1�Y�v� {�`c`c`dF��<� �x�G@c���G@��Q�cࣰ�0vC�c`c`c`c���d+�b@�� t�@d�@d�@� pXt �B�((C����2�a��m�0�e�u�v]���,�a��eҺSI�M'��AP\����OJm]��e�� �aK��]�e�]e� ���i��-�z�D�
�HTs*7���o�ݫp2����F��`M�j!��@ɸ��C@�ӳ7�sb�4 D�)@��K̊\T�TʀZKQ��E-*P���J�$�)� �i#:�$p'$� T� �w�"�I�Iq(�T�Ĺ&1l�5u��<�2�H�k��_K/��E��u��>�e�R/��)J�VAfXhr�\�j0��rS@3H���c\"�k�9�f�o�R�CU!4x �\�E�!|k��>��2�n��Ӽ1��2���r��>�Z�R�M�X�R�V�j�N�>�j}:������S������\�˒�]-�Ml���5���CM�7�V���Zm�ڬi�Z��-c�X�d��3VΙ��n��������������_(������������������dRI���gKI&@&ci`&���q1��1p������k �o���pU ���\ܰSz`*-�O�
X���5�S@'�Wq-��K�Ρ��_ X�� H�L�e�#�p�v�)J�Brjvb+Kf"3�b3;h#4و�혊�L�F�6 �v�3[j �q���c��dn�&J).[��pA~4�4�&�� u@��jDe4�FQ��R�M�TR�����q,dV�Ը��N�݂z���/l��`��?`_8�[X1�w`��/,��@Z�+��&X�]f�G���9`��,d8~s����X"��uv �(0k�!ph�hž �R… ��A; �q�1�q���� ؏a?
8Q•�>���E���f,��C`���$m@��
����� ���r�9@X��g���L�-(V� ]L���=@]�.m@]6� O�(p/� �{@^P'� ��@^�
'u�� � �����{�~��������ppppppppp\�A�i� ��OPppo�o�o����_|�PL ��\� ��0 `�@��sp ��06�01f� ��z���?X�` �`!�&�C�����[�"d�ɠ���)�����>�Ӡ����������c������ � ��@�j�� Ӱ�
aE�
-�r�-�e�[k�[��v/ˤ[e��.˲��e�-�me�v/�l���_�e�[��m� �-�ܷae� al6�� �^"e�"�M.�,�>++�а@,��C`�� x ��@�T/R�H�HQR/R ��ȱǤ!I�-q����(д�����b��Ҋi�iI4#�JI����$2r��ND)�0��n�9�8� � # ���S���B.P�( ��,ׂ5x��9��Z��&�K. ��I�x��XLX
�*��V��a�� P*t:uC���wK]N� ���26��� i1�n��ٓ�� ����@�Α�(�(��x�8I>J�(�(l�~���t�t`p��+N�.�>N�8��p�
�ר(Z�s��,rDȱ����T��ް�|=��v�qFH��i1���&�$�� m�!4HhFj����SP�j����[a�T���R��_���������� �Հ/�/�ï����ˮ�����}����x ���ԩ��!UUJ�*���?�����s)��8gp�)�02vN��;'e/���\��﫻�}��ݻ���2��79�q��S&q�?-��AR���9*�����a>���wq������S�qF
NJRvR��K�����J �����Ww����E�� �||�:�����=�s��<�3���l�>�(�h(̫5�h�6�h�#h֍h���Z6�hԋh��h��$jF�[F���T}#�N&u��ލ�m�f�o�Y�oE �������r�P���6�|ލ�l����γ�D}4,�5��5�趏hԏh��h���R6�hԍH�<h���h�6�"��$G�}���y�g��yG��{��y�r��YK-f�[k��^WK��,�̳\��m��l�����b�e�v]�e�]e�v]�eؾc a�1� ����,�DY�e�W���+�k���Y������
��j��:�|j�����,�:��9�3����l�D�%ȕFtHp�d���u�gY�uf�fٵ湮k�湵�fټgTs�gY�j�.D�$Fgd�%̟f�6��z8�3��ά�<����� �����h��(��d��_"d?p{"T$�(e �����+%Y�ɳ'��ͨ�"l�$J�VM��d���2}�"�=pd+/�d��d��d̛dܝd������ �Feі�F�z��ǥyX����6��� .�a]�#��Y-dj�Sۦ�r7�H���h�M⨍��'��2Jc�dT�R���L��GQ#D!� ��E�ZF#�@���LL)>�RS����x� �f0�x�}��l�j]e�b�^.�8\7^Ԭ��֑VĴ��%��1�l�黶鳻�����s7��TԖ���:k�H����1Ա�DH��zG��H�'I�ZP�-�Qa����:O��ӌ���?}�?Oj������=n���Mv7yU��z�G��{�G��u�#��brbEP�qq�۶�����>i�Z�FM��b��Mv�W]����u�/��x�E]` �u����W_݆���+��B���b��(\��� v���$Tti�
���{�,GQ��������W�HX��W�B���ٿbDܱ#��]G��x��x�k����Z��
1���gH��$� nc�w۶+nb�V'�؟΃�7����Yq̇9̾w2��!Ԩ�NP���Xq��O�X��B�x�nj���@�ȼ��nL{7&J�:3�q�7=�l�>��>ϳ��=��y�F����Ϩ�?�FeY���.�h�6��R.����U�'O$w�Q��y���mG:���:���:�s���x�t�Ojo����hI�3������:Ψ��6�{:�����<���h1�cE�t]F�mFѩE�r��2?��}g���3�3��ϳ�>ϳ�����>�uOl���z�f����vWK��,���,�:��ku��n��Z�,�ؾ�����_��~/��/�,�Ժ�R�n�[�����2̯,�ֺ��v�[Kif�W_�W�/��� ��X� W����D\� �&�O�l��/%ѦJ�9&��,�#ƌ3
#f�$K��f�P�>�C'�C(f�P�[���8F�,�1��3,�$�'%f�.�y3&̟f�l�-�;$���7���Jp�2��$A�i�3��?���Gtw��Tu���HQ�,�eK*YRʖT��(�EJ*R��;��ugy�wg�>���?�4A���RʙRH.g���hxZ��C.�x�Z�\#/�)c2��#�+�, �Xz����PJ+UĬ`�%�,y�� �(q��:&7b�����t���#&���$��0�%rA�0@����D("��)5r1,� 42yMQH�T����ZX@,Ռ�K��a�Q��/��)����. ������`!�L+���%��l d�����>��OțD�M! x�B��c0�bUMu�U�XbRLT�����-��) �%JI�0/���C�RYP
��i���iNV�4����Ad�V�(�B��P�/)xP��P�7��麝�q���N�;Iʆ��;N)�8�3�oN(��&����d,��-!4,��l��$4q�C@nj���� ��KW�5���_M��������������9'pn�(�*�WW�.����`����x����ZN|5T
��݃�5v I�o\� _ۗv K�*���M��{����㎧�}s��s4��n>�E8����uJ���.�o�vs�޻���.�!'J�B�i}���9�BN9�� ���n� ��jTt�7������0��Q�9�;�����$fY"̲cs�O����s�gy�w��}G�}����,��s��?��2�ʮ\>��y�gr:��;���;�^6�h�6�x�s���sX�����4����3�?��}�fKG�>�͍Z��9�sF�6�l�ͳ�N��:���g��y�L�V2��2?p�=�s�<���s��>����ꎳɞ��{�gO2̤c��>f����f�[ku������,�2�s�-e����n��kil�ҽ^��kl�˦]"�[K5t�W���[k���[���5��"̳,����[Ku��Y��` ���W�/���V�&Q���Pp�"EQd��Y����d�&��'�B�'Q7&Q.�(��$�"���ɑ�Fl�1�)�E�l�3J4�]�,����2���Dܙd�%��iD��afs%�6d��g6r��Q�,��(�3��i@���>�s�=�(�:��9����'�B��G��F����Δ2����f���l�ά�<����s��?�4 ��9p�e 7���8���X�6.RX�h�5̴75�b����� 2��f�t���z�������׷G��������q�m���54q0l�ic��LRT#�)0��h�4k*�%E%�RVR ���4�d��T�ljzX�t+��XqX/Z(. #!آ3�a��E�\,�����J��u�e��p�5���O��_�G���(G�����!�(؏X�GI������E��R�GѠD ȉ�D�W�1REQ5!-� �Cp�F�;QjBb{PZ��F�=N���������td��ܓ�9r���2���u0�uw>1��ø���CP����-���C�{@�ҚƔ�;gLö�A�M�_��_���_����/�]�����������{S��� j�qS��E���WS!_d �ǝc��_1w�\�U�k�.�]���t:���y���]�����'+Φ:���y
��� YrN
ҧi\���C�ED��|dz��f��z��vc;raǪ5t,W�a�ua���r��ʋ�c��C�]e�W���Ƒ��LY�žxם�hV~�����G�h�1�3F�gY�u�g4y�{�Q����g�{g�������;�ɝ��s��6uG9�ƶk�湵d�H��X�d��N�����<��9Σ>�h�=�ՐT,wC���:#l��s\�5�!9γ��9γ�<���y����3�<����h��&{��n���u���u�:h��c��6G�نLbQ�K)k5��[j�nWey^Y�e��Vk5��[��ֻ[kie���)f���u����u��Yku��[kiv����e-�k5�e�fW��t�WKu��Y�/���%X�e� �W�/���� ����G����)YK)e(�
��A�$����{G�yG�y��ݞg�yg�{g��hA�t+B��Q�6R�YJ�${���g���h4��R{�8m��
(QC'�:��M�h�&}g��{g��u#�9�(ڍ�\�D������rnN��N��>�sl��,�9���g�����H��m�l�d�(f��o�Y�q`j*.R#���!��h.�@�DB�D�����G���@�+�V�)-b���!���T�S��R�6!k
f-�-�ZZR�z& � ��Bz9�(��PC�T%Eb�� U�R!"���MAK!$��������S�-.:��ht�<Xe������o�p�9A�b 0�à�N`�2�qX��V ����`����S}[��S�2�6q5�\,���Id �#%��,�(|�x���h�NC� ��C�PdS�3$��$FEH���,N"'^�-Ij�����M(^�=P���<0y[�S����T;��ծ@�.=%vP��=R�*n9��Q�8f�6��Oh��k 8Q�d�MطCnɺST�� �7h�̠���� Z$�������������|:��k����������￰�w޾���@mUT����j�5������8g9��s��>.��������T�J�֪�j���UXWv�ʚ���` Ww/���5'�8�|�\�� rQ��s��������j�;m;���w8�꫹����ۖ��R��T��)��]�@'��$�������w��˗Z�H:�9���хQ��Z0��a��M��g�G�u��y՝���Y�u#���,�ά�8���8�(���(d� c�|��㜒�w�gr:��;����s�8���#��<���%-�������"DH��B��9��8�3�⎳�:��9���g��QݝQ�w�g�t��k"k�n�f���_�Y��Y������r�R�Z�e+���[k��,�2�s�im-���]k)m���n�[����u����f����n�[Ku��l�kie����[k5�W fY�ez�[Ku���k0�*�|�����*���Q���#��>ϳ��<��g�mGS=���h2?��?���>�3�<��wGvw3���3��>�����hY���F�o�Y�w3��=ϳ�@�4B�,��3�8t���~N�vMɴh�'#��0�8�ћ�w�H�F��k���6��;&Q3&d�'d��f��k�湼Φw��Np�� 0��$��l���u&mfٽ�Y�se�uDUT����"���A�t���E�,/�xd-���"� �e�q[U��ؕ����p����P�] qq ��au�4<�)%<�Q�!��I"��W��T��E�� 4$��ɭSG)�%�,t�i���0][K�����薎�R����Bщ`E���x�A�[�. R����^�Z)B�X]
�u=�?'E�wE��q9�8o�.6u4WMu0NK�$HI�HfIu2#Z(K"R bD�@̌�,Ub�Ċɻ#[#v�b�P�Ԍ�jC�3P (�������?�2z���ۛ�۶��W �] j�cwa������q�A�\a�S�e BC���ö�p�[ )�|�L�L�a�=�Ŧ�_�����_����_�������|D�uf+![���{�9�,k9Xϖ4�b�v.�X��sdz��jV8���睏err���WB�Xӕ���Z�j<{w���>�/y:�SNS&�*J�R� �Ĩ݌2r��S�#��+���N+�v1B���N�;�ZQ8*S��O�K�BE�a��a�sĩD�n�lR��[�B�N��йWH4��h�hZ��$l�/�.D��#dl�����DH���#5��:�����|�7���������^�
����yc�{�q�������y�wgTs�Y�w�����g�oF�u�wGtw���W ��C�{�q�<�x��/��2tgoGVoF��o��w�Y�j飆.�Y,�/�썘Y{�L�����1�hV��hYG(�e+��u��]��fY�uf��ku��k�v�[Kin���u��[����f�[kuԷ[��R�m����u-��[��R�tE�fWK���[���/_�|>�_������*�|B���Q�9F�����{���gVs���6�j5�h�"l��:f�:��{��tu�gY�wgy�{�H�D�2l��5�\�ͨ�7��uGY����}���Z ����gtw��Y����d�&f�s<ΌdaDl�"��n���"4���웒�id�%٥�M��P�0t����C��D[/�م�����Ni3&�:��m�f��qamIr�T/R� (T0TJKTՁ��;���|�Zyh�WEa�X+���KFK\�`�������;@���0B��F%TՉ�)u$������E5En�pUȦr�r���)�Ԥҋb��8�~� 4����R�+�DV����raX~� U�j�k@�Z.�t`9 `- ��u �x���X�`z�5X�X,�<������M� �h��CD4�<SPR�% %ޔ~�iGH�w"��"��(��n��[bUb�� �_b�ƙ"�
(n��H6���P�P7(\�C���տ7�>V��wA��ܧ t~W'd U*r�@�s��9�d��M�@�h�&хHZCš��&��t���݋v�R�k�'�"2
�Y>�����_���_����X��_���}���������n���H�;Os�+���S�4����ۗ�}8�����׃�����wX=�o߂��P�� NT}aNɬ�����֥��J���e��X0���;���l��e�j�o6�dm�=��S�6�)�Tz�LeR5���M��X��j���7)��8
�;���>�k�8 'q�J�w'%9J@��S�gTwg������Z�f��D<��#/��-(�d<�"�ȹ ȃ�r �腐q�?�?��1�ë��wc�y��$�Q�w��tw��9�u�ȟ#Ir>H����5�h�g6w����Y�I\;�y�1���:��b�D �� � !��9 ̉�r-l���!�:"L�e�/Ȏ�E�6G��Z�����Q�����V��k���,�:�Y��kuֺ�k���[Kin�[���if�[���5��]���u���kmv�[����n�YK�,�R�v��j�=AX��������}` �U�/�_��x���Y��hV��H�G�܎h�8���6���C'Q;&��Q�if�*�TgFy�g��vJ�U�f�i�Y2dܝ����٭�L�8�,�9���g�}����Q�u�sK'L�gTsF�&�6�ns<�D��0����N�2���X�cW�,\��!r���8���8懐�(���"�"ل̲Fg�䜗6�P�s\�#I(�cu:�«T8WjǪ�VDSjG�T) ʋWҷ့+ ˜\k��\k���8\N��"��R�PɸYf�0���B�$H����4@�E�p�KMK���Ʃ��7L��q1�����@���H��IBZ]%�����WebYdE��{E��薍��Ѫ�Z)-\�%V�Z�(�"�.�{Fh�V�Ґ��$��S�1TAq�M�]4.�������P`J�B�i!�-���Fd6Rb?M��12��S%�mJ�V��\ՌUƬ<R�����v��?��o�Ӂ���x����C)t�Pw]s�;�������"�"��Ȯ��x�n����zn6���5�%�dı��-eL���������������������_������7���]�wucy�ci�����'(�yՊ���)����0�r�߰�r�/�/��΄߰���)
R�*Jr��4��.��l�CyN�5X��~7�2��t���uk����BDR�3��A-:������UF¢aUA NXAMɃ�-�U������F�GBӶ�J:�A-W ��n���)�HL�2 ��%na����u���q�gŜY�g�4 <Nb��D8ȹ�y!d,�2&D�t?p��A�ǔ<ǖ>��?�oq�:�x�d�gTq�Y�s�gP�)��#̨ٔ���9�a"5��#f4lP�ŝg9�qGՙ(HwC�uC�w���yC�yd ��r?���2�2&Bp���CȖE�nlő�T@��}Gn��q��Y�w��{�O����6�Jm^�[����u����Yk-n�]Kiv�Y����[ku��[����[��R�YKmv�[ku��^�SJ&�����}='�0���+_�|�����;���9��ލsZ6�,�9���7�Y2~Nɹ:��Lp҉Y&�4g��#$d���ўI�M��K&FM�u�rvO�����8�l�8�l��l�7����l掳<Ήe��DI���f1�3*2̲>Ft��\ d }��v��P��]��cLi�1v��k1�8��;�}��@�1�24F6e�fVH�\"H�2�2.F� 0�#�Ғ�!5P�P"� 2���*U�2��@��^����^�e��Uhv�����h�8r�wV:��.�@2!Ih~��њ;2��a��!zIE$$Y!�"&$��%��A-,t�v�NH:H���D�Ա�I�H�XL\���
b����E�*��+-�Z�>\J���a��C**��;,
��^��&* �X(]Ij�����3m(�D�HJ�Jif H D䲒X�) (��QH;bUbNb��]d�ȚĪ�ء�'1Cd>d��Ւ# �K�������9T���B�k�'�� �-�=�t[@��{��]N��T:��$��K�T�J������is�m#k��D�H�"i$)�@#5Jl��1�{d��M��<��A�U�ђ#"{$V_�_]W���W�����` ��������w���w���{8��qL�8f�p����6qL�p�6m��y��h���'�s�W;�����N�R��?�#�<��:�{'d�OH�OI]=!���="$���v��r�S�c8f�8c9�1�F� %�ml�L�m��m�� H�c�2�-�c hC���n;c8�����NԤ��O[�@v�<����8�I�0r
WOP�O�� tj�-q��v���;����:��8��j6��7��z6Ͳr��� ��9�4A��C���>Ǹ������wCɏht����D�Gr8��n�#�Y#3�ٕ�d��2��b� �M���Ftg��#2��fvH̳*#�y��Plq3�&�)��B=���v;�x�����}����y� �l��l�C�!�OhkFٽ����Q���9����l�8�)=�������׷��{{~�ڝU���u��n��R�[��Z�n���u���R�v�[��j�N���������{�$��>�O��/_6�j6�\���}��Dܗ���%Q+%Q*�3K&Y7&�3&Q��9��y#$fY�H��g��'4�2ə6ɹ2�(�%Q*�Y*�2]�nN�}��}�,������d����=��:��7�v���iC:X�b��y�b��{�ht��d.b�-з���-�݋����c�G�=����7���CJ��Ż,]���qՎ�yd �fF�c3Ɗ�CEZ���T4WJťT�f�Ԍ���j�P��J�ҡjp���`�YE�Wp�v��m�e;7B-���%��"���ƒ�Z;�ţA���bT�D��$���(4��$2$I 1�R0K$8� �����8Z_`J��xa_��[k�"�� %�Z�k���, &V(,��کB�����c�Z��S��:��R�@2��! D�\ �j�H2Rm4-1n�4�Lh*2d�ZcLFl�C6T�Yc��؍��ld�XeL�)��ʵej�k��J�}T
�ӪOi�AO�z�^�o ޛ�jC��A�]wSϱ���1�"�e
�\�l2�ckj��5T�l���Kzh��vElv+���2�_�` �U�/�^�%���b��b�u1N:�P�� �J169F�r!":�4��H�s�s�rċ�5]L5_a�� Ut$WB_�\�BD��i�!!�p5��k��o��\��7��B��BԮ�;�CN9�L�C�(�. ������
a�5.����m��o?�O0An�'s۫ںʪ���M^�?@����n��xOD�1����/;�����9L�tN���k�2�O�u�2�P�\ڍ�����7�j5ͦo��`�n�Yū�,\Ƹ���8Ʈ x��b�y
��2nJ�Y*�,��#3�&�6gFTeDl�D9d;pkC[cZ�ڇ3��Pֆ��A�s/�̬��앒l�D���J�VJ̟�f+�X�kb�5�q��mC\\���-P��ژ55��6��mfپo�ѽY�k�2}���,�E ���4�}>�}緷���������{{z��������jmM���iM(�pRz����޷���~���������߅>�O���z���P��;'Q7&�6��.�tiF�g"FeFYF4a����"�\������Y�c������/�.E�����f6cfY��39�Y��왓2m�2nM�u����,h��B�
�+P��+�icY��r�n
x��20��m����L�2���%�6L7X�b��,R� ��6HK��1*��,6bnf'�(b��,S�^1�b危���+�X�ZB����1���K.)-R �%��V/V�z�T0V �cT�^�
���R�@I�Ӈ)�Ӂ������o�����Z&7b��)m�3Db�iI5��hIg�J�N�@Q�R$��Ċn�� � �SdU�)C���F?Gm�|�K���"%���1hK�BƬb�#��Bƫ�6y�%l�ŠI��ԫ�8��J����Z�S�o�H��X�D���}5JjUj�� љ�d���P��P؂�UelP؂��#����+(��3T��ڡz����*��N\�� ��� �Ӯ�^��&��C�T�7�<2u;������'(>�s���)���;��2��#ZD�d���mv�mK��6�d��� 2Eb�CcL���������u���������6ѿh�sh���@���O�� VD�("k�4���F�6ѹh�O6�z��$3����!꺕���d���8��� ��7q;��v[:��Y:���'p.'q��8 �g���� h�#o��� ��G�Ѹ񶏍�`l��8�o0!w ��(��G���۹�S� ��ް!ܫ�d-�d���6i�9'����r�y<�>�O'z܂@ /(y��<P��O�}��Dܛ�,���҉y.�(��d�&d��ٮk���'d̒�DWH2QKrm(��:I�,��(��\/p�D��C�uc�c\mcl\�vƴ5�r��X�żiB�czP�h\����k��͎�q�&?� ���2Lə2�y�sH��2ɶI|����3"�G�&2fN��5�s\։�2]d���vK�,��2el������~P�t�Ai���;O[�����O�������oS������������Ooooooo[�����=��O�����Oon[���}?Ai�_(d�'ȟD�&Q.�vi�h�Fy�H̲>G�0� ��y!�<�"@�@�@�@�A�S!�<���-�ل�,���G̲Fg���$٦K�]�,���}��[P���V�b��Lqc�X�2C���%�م�菘�4a���E�_E�E�2&C�-��}����a�َG��aE�D���D9q�����Hi!b�Z�,��Ɩ3Q%��RT��QU%Bz�T�R�9V�MSJ��V�MSJr�N''� �� r��E�bLm�����4���cgLBY-���Ly$,$�(#F�zH�wQBF4y"�
-��Pb$5K���`�P�p?�ux@�F� Kh� ˦�!e�[��_l0����e�*V�`K-�hcUjCJ�����������\�16>��ۉ�v���3Z[15��������b�[!=��YM�qe1]�ٌ�F�r�QZ�V�K��'�(Oi�A��PI�0p*wuS��ާT���])�Je�L���jo���U�p���T<*[m�7�Umv��m�4��m4nȭ�2\�e�/�W���/�_���/����"�ND)�(D�\�M�P��TBL2�4�Qxj�b�Q�U_�� ��a':�I���XI��\��ܷY�t1;7#����t4�n�.��1�tMvn�������]��i�� x�F#� �J �� TA��1�(�Z7a ��0��� �a!>0�0����v�!�G�PHT�-W �s�HJ� 7nAqɺ���crn�W��������ɸu��'�y�gTq#i蟓dL�]��Lҍ2U�NI�9�,�3�*#�|ƌl�1��_��J"dL�� c�������P�c�l��clocZcJd+Ф�p�hЈ���(��f�OtRj+س1��1���m��6�q�1�:���ݏ�}�q��2C���2%���|�sƌl���+3�<�Fy&�9*�Y*�3K4�y.��M�?'ٴ�&u3��Oi���}׭�wz޷����~���ާ��{{{{{{{{{{{{{{{{{{{{{{zߧ�����z������wvާ�O����_<��:�3�6��h�D�$�y�Y��=цa�����l�/���"�����/ȶE��/������l�f�cd{#�VeFvg�rU���e 6��8γ���(ҍ3J3t��9����D�2̨�E�"��Y����X��jعB� 1�3��3�t4Ƙ�b��hmc|s��폲 ���d[/��̬�$Y&�tiD�3�Lf��if�Ju�Õ ����� /R!K!��
C�%�FJX)वP�9bqAb��վ��/(q�)v���3ab�ݺKQ{4VfLP��l& & R䓔q�)�0 dbz ��5��T=E5,��Jb�Č���Dv�f�^�CPZ�U�Յ5��5�D��� �ipM���'��Z#�����A,U���3V����Ij�D�o���x 9J��;��m!f��d�Ȭ�Z4Hh����h��Y#2)2Ff~��,�ٕZ$�9h�Ъ�-�ST\�DT�Ibr��r�9C" `� `���� ^P��P�c��
�qL���䠧((\sk8���6q��G��I��P����1�Nl�ؤ�-����<f���$4<h��)�3#�(������������|�������������B�H�D��웁�ݜ(��7^�5�<,���ݓth��\݋tȚ�>�3��s���!�r�U��)q�@�u;�T�[�8Z����}S��V�C��.uK�w���Ψu��`��@bg
,[���nR��@6�bܪ݌E�3�P�ى�H���<MbM��`fF�6��7g�s�39Sܪ);$�}�.>��S���:��N�x`��R]T���N�":�ы��)��ც]<���9��8�(ڍ��O�u��D�f�J���D��#��sf����!ȇ��� �����P�B� (YxR�G�8:�; �ntM��ِY䜓D����VJ�9&�9�AT+�(M�tA��;
t(��,�4��b��X����!DC�yd\�/�h�0�fcdz#�"�"�앚Q�L�l��N�|��mf��sg6wgvy������o[���=�o���;Onӻ�������������Ooo[�������������n�۶��o������oS��I��������ϳ��=��<������>�l�h�}#��F�%fteDj/�-�h�/�������dZ/�5�Y���dfѝF{g�?�4
=���>��<�,��l�>ϳ�=�2#�a�dl�D,��q���s�(]�҆x�$,���ɍ1oqv��qr���n���r��qr��qoX�!� 4,Lg�񥋳X��y��9!e�#f�G��2�@:���8�h��ŠP*(q@���r�( �d�KOI�Ry>_��θҩ�r�JuG��B1� ��ΙS�a�0 ��H=�'D G��P@��@қ%[� �ͫ-�� l��KgLĵ�5���-U* �ө�Aʰ@�@V���9n/ ~/�{R�AK5���Ѓ] X1�jB1Kd���N\��G��wc�&ᕽ� M��KimCcI��͠��l�Fq�[A�8� Z��v�&�6з\��,P�u ��TRu
-J�.PS�_������yS���i�ӪeҚ�Mt��S|��5\J"��Cp���R�l���T�ګkM�3�jZ[D�)�ư�+e��������/���������r y7��#�v��xG�͸���A�ې�p�#�j�� (�F���c���Dg9d��W�n�G�� 뀂���P^��׷���^����{�x47�p��M�]���η M�j��n �jM�n hd��J~��������>0~�Lw�0����r�9������?�8���'�x" ���~�x` ��K�7�#�|4=7�d��FG�:��q�ѮP��>��L�y.�Y���2�0� ˆ�D�%h��1���㗆���[�t3�\V�W�N� �'a��Y�4%f�&D�����Fn���(�fq�ѝ��#$��%fJ�C����7F(P��X����+P��[�ٍq��a��F@�ȖD�-Y�ady�Y"��;%d�%�̝d�'� �7���:���3D�&pi��{z޷���{z޷��v��߷��i�������{{{{{{z������ݷ������z����{v���������` �5�/�^�.�$J)���gy�{�����g��}G����E,�e]D�}*lf�gm6�M�Κld�$}���T���� �������{G��{�gy�}e;D����6G�‹�.B��C�}�1��wc����8;��9�ظ෍(gcK�Y�j��hZ�� �ib�.F6�8���1쇱����uC�c�}��B�/�,�#ٍ�^R�ǔ<l��y�a���@���>��c8���|_���:�.=%u�K6�.�� o6Cb��Y�Ȩ��,�$ 2b2�s�p��Ȍ����FAM:dUdCF%6%4�;S
I�� T3Gi4���PX�� �ڨ9U�ցа:T1T\� UCB���р�/T\ ��^ �K`Fk��-T���;VRT0���u-�(�r�� @�0�7l��طLl� �ݣdv�[ �&�i �pƇf훴n�p�0R�9Zu�ק����`�4�``�����@� ����S�N�t���Ν�Ꝩ���ᛓ��n)�&������%вo&ɍ�6Lmm�[��Kj�4fk٤4�$4Z�5f��������/���ux�}����}7f�nպ�[B�8c�h�Ʃ�FM��lݼ"<p��T�aNв�sTqG�´�w݅n���NK��:�:��:����:��@����Gw���'u������|�طu�Sp:ڥ7��C@#-�[�L�jžًp8Z�o6�"1x��� rG q�)��s����uS�$%9'$��F}�}�8\P��Sw����8��;O��� �6}t�ys�>���+�첊���7:v>>>.:��/$R���9�G/��D̓FtHp���8�@��j���<g!=�&��J�k�e��PL�!Q !dK"�}�$Cȓ!P�C�c��2 �����d+"�B�$���DL�����
Cf(5�M 8�b{q��x��Z��c�d�D8���*d̙d�9�e+)�C���c Q�qq������������+������=n������Oo[�������On�����=��pZ�G=Ooo���۶����Ooon��������n������|~�����_1�!�؆�'b=�����0ml�E��aZ�ʁ�@��p�6��
T ��'�>�}��'�3XR��6�E|�0�`�@�¶ �6�G��uo������,����!d ��c �!dd>�r����w�,qc�wc��셐,����25�d_d\��싗�dj"H�D�D,�C��s�(qC�y���;����d��A� �+ � ���_��;'�ܓ�8� <�� ���.<�5�t�$���7d#Ogl��_l�p�b�(!�%�m&� ��� ���@Y�Ė �V �KLK tɦ��Q� Ɏ&���M �v!y�5 M#j���/'�a}^�/�����5��K�C�ք��-Rի����`,�:��p�a�2�~WksB��+LTލ���G�[8,G8��F��M�ۜ� h1��*6жo6҉�o�ƪqLa6��M��.��>�B}:���
-J��������O���T�����R�s�q|�/��tr�T����L<J!��CM���)m�P�l���PΙ�g�P�h���SXY� ��/�^��� �Y�t��"gsI��M�����*���=�kżP�����������w��� ��;��qʀ�rX��[���^{PPT��)pN�:8�@���7S��;����[�`���a�����X��� �͸a�m� i���io�$G9�ɷ�o��'�9��Q�X��
�O�(7ʤ$������������azO���`O};�#PTGe��]j�u�777777*>H�4�#G�$T���9�Q�kD�H�/�%�����p����ॊX�� ǭ���c��2��' ��!�!�K#Y�H�&N�I�H�f�$f9��!�<�e�_fQ��Y1�3����‘N�*�f1f1�qݏ1�?hD��/��G����gqg9�%I�MH�4�#L��ܷ777777bU�}ש�v����vݷ����v����߷��i��{{~i�F�QI�=��:�<�����۶���=����n۶�=�N�����oS��` ��ytA�!2�� ����0��4@���7�"0p�q´`�$�c`��+�[��b���
,
,
+m` �
*����LP%��%pJ` hO��Y�q��}���Н�R1��&XA2�׋�+�n/�l�Di�Y�K�G 3%�r%�Lt�d�ͬ֍��P�y�L�"�ʶT��U�;C�;C��UʹV�R?p�F�(QC6�lډ�H�-�9��L�S%іaDiLƋ�Cr\`��Հ�X�~�9T�K� U�E������CР2lZ#�X�V ���s+
�$'X�x�wB������f�[�[�nE��s��,��H9H$��9�@�� h��U���*Z
Y1 , �’`�4���')B�Q�8�`��J��%A��qX1Z�hx����J���D�"8~*0��%x���`�X��B��%o�*x�*|<yS�-�k$-"&D��)���x�;K<J I'�$�d`�b 0$S
I�dҚh4ң#�c��S�@K�����o�%�O/*|{��Z�"�-P!�^��]��������p+8�'��:���1\��;H��I��s(��i1�8�!d��4tӖh��-���b�-�7*���d��F�[��������������u` ��+������ÀX]����w}���9,�u��)�RmT��WUW^���ww:�4���)����)����)9*�*��+���;��n�����6���N9��si�m-���+��)�YR�D�'�U�U׀�ꯗ9���E��qN��8f�Nʤ��N�]�uuuu\���~�����m�9�Nv�q�K���ƃF�� )e*(�����"����i�Hp�I��:��i AЭH��h����h�h2A�4 ���&�I�(���A��@� ��>����>�����Щ�4 ?�)Y�a�&��'Bu ����h3@��@�)?� @�4 @�f�H:��Qӄ� $:H��<L)�F�3)QG(��eBШ�h'��Sju6�U��Z�V��[H���,��cch=�TXwA� q��p��8��c�hc�V�y��=��\\_"�,��E�����j�Z�U��:�M(�Zz�ǫ_@�|u�����H�G��g��H�5������}�m
�� @��Q�}�g��}�g���Zд+B��!Q����P��ͳ����}����h�h��hZ �����>����3��;γ�6�>D�҉NfO��$ @��?��=p�;����:γ��;����3�?��@�
:t��&D��,���m3�:����<�l�>��?�] !,�BV`�5Duz�:�a!f���墢���I6-�&�T`ـ݃e�q�Bst��:Bwt��ېa��6��|���u: ���(��H�IV�G E$��J#%ie�t�EL��k��4eQ) Z ����l+ȅ��"�����qv�Į�� �+����`(�7. ���G �|���B~�!E�A��!C�@n�h�"qQq9IJ4QQ��GL�0�����t�:n�b�IC���š2���S��-~o?�/|9~%*���E*`޷�G����O�C�� �T���;���˫˫����@����;w[����?oP���3ST1Y��^�n\�nZ�M�7����||v��+�|lRy�㗚�As��T:����g���VnX�S��CC�7��,}:��u1����RU���C����3��*ܦy��xϏx�uq��� ��>��F�=��l� ;�~X��������V-�M�С&�$�N������oLo+��\��6���~b����9L6\T's�.x��b���v:��k�
�'���rnm�b��yR�yN�tS���s):l�ƌڒ�$Q�g�2LD���@� �?�,�?����@�3�I��:G����"F0P�
�:Q��Q�9KB�s�Dt�!Q %Q&��l'��t,��r�Q�4��t*B���ĉ��1�=DM��$ ?����?�(�?�)��'�It���y"�S3��͓JQ�S�N�yO)�J)�K>RL|��H�R�E(���V��j�yca|����d�QeYf�aE��u0��VP���c,<���2��é6[L-~Y�Qe���-�7P�e�+�j�4�Uju�Q��|n�_C������2�\'P��܎s�ލ��6�sZ(QB��&Y3&d�%�ɔ$q�{G�{G��{���}G�}�8P�2D��D̙�(�2��,��sl�6�{8�s���ㆮ,����D�Dv���hډ�N�vM�nLə.�VJ�.(�̳,��FJ��GY�s�gTs��Vu��Y�Pt�fN�,�2�E�c%d�%�3&dܛd��d�6��8p���I�X/�ƥa�`C��Kb�¸&,f�=X����c`��`X��d�+�b��W��p�:d �� _f�����-��� ���;2�e$�wD7F��Ie��iI0.����J@J $�ĵ��i�$��Ȧ�0=�����2r ,KBklB�}.� D2��,�������k�K���b�b�;Z��0����W�T��`��������[���T��Z�%��I��������Ub�JI�TҊXaLAMR�~��g��A�(-M�U�$o�~o�|'@�����C��B:���F+`�T `
ϫz�@��?
�`���O�zM��bp� ����m�{vM�l���&�u�kpF5Klɚ;C��X�f��'7Mo&ɍ�6ɭ��5����X�M�}` 㷀/�_���+�y��P� O)y���$�,7w�`���?t ��GW`��\t��������z�9��qۖ������u~֥@��m��|���=M�0C `��(�8�C����\
�J};��q����*���st����+*U:�\������Ni�`��Y�*��n[�gS��0W_��P�r���ӏz��
��7S 1��s��2e�reh�D�&Q�tJYK)QG(�T�J�T�h�"NI��Gp���2�,ʌ�'�wۤ���#��h�DiYfR1�Fg�B�$��h6�hZQ��&�e��0�h���
$L�Fy�fVe�[��)Z�HT�H ZH��ƌ��#
#L�f6cdz3�� �Gn�3t�̳+#�ƈ��fq�h�2M��)Z�YG(�J�YK@x��e�Q+4�,��j56�QJuZ�U����(_b�,u~YE�e/�
aE�� (��� _E��Le ���/���(���[�����e�e��,�_1} &��t�SJ�N��jiF�;X�%� �d�dz1�0��f��|�5�sZ(Q?'d��"^K�ti�\$Q��9�cFQb8���k�N�َc�FH�Lf�.�y/&̝��~P�[5�sl�5x��5�Y̬�fvJ�#�
��c�{��7&��&d��D��D�$���1�,��&Bt��,D8��'�Ht����@�Q2��(�1�>H�'%Q&�Y.�y3&�74|���L�d!�L�0����e��xp+�x������f ��e���c�ŵKT��T�NJ�1^�4'ӆ�-8��pIo&�����f{0�Ƒ�*4҅���0��i,��Id4� t��8"�FQ�F �91V��:�a{b�%�0 %�Z$���O-dZ:.j���ZA]k�kmac��ea��E���T��:��TM�*-�ikMCC]�fi������%�`��5�{�Hɴ�`�ic���ń���!ԑ5�Cr4��zF���}����qKEB:�P����)� =�"=�"?poI� �pCspDs�Mr�gQ�������D8f�DmM�F�n!6���kj"6n�'1����C�݃jl��كjo�/��}]` 灮��gv� nӡ��pHq�����U����)�Äް��k�&$N�k��)�j�᫕�Y�a�}�� u���PХ+��]
��P�� ?d�� ��bD�b\��`��-<��e�x,�n���m �� ���\�a�oXe�� �]�Q����\�VQ�+�0�:�Z��]rr 2oA���W �]\�d�A�]���n�� B��Vs��q��3����]f�i�f�+5��$-Э AЬ�3�&n�8ef4aF31�l�1Ȯfa�faF���_3&��
3Bt��3�?��
<t��af9#�k#Y�c32�%a$d�#эQ1�(�&6<������3�
"���'/���da�Y��fDX�sƌsY��Q�fq3(ȣ��Z �6~��Ɣi�f�id���Y�K�z�F�QJmN�Yu���L,�򼲋-�˜S �a�� al5��~�a�e� ��_��l)�� ��k�‹(�����(_e�]KU���-F��` ��uX��/4pƌr5х����D��l����D�&��%ȕF�f�"����ȍdlˆ�DY�� #dj1�#2�E��iD�%̙dܛd��d��F/2._dk0��̬ʌ��fY��}C�P��T:��Ane+$�'3�H���j/��vD�c�}�q܇s��}��ș��_25��x�"��NI�Vd���:�Վ���,�d+!d<�`g/�f"��X�X���`�Xk�&VXV+ ��?����`�P|�`�('-V�b���p;�:��΅�dVi�&�%��Dd���ٔ�#&������@{#�$ ��1��,�#%#���"�,��= t�j��\���1rC�Z "���h�Z�p�\n0ׂAx��P�&-����
�*A�Ir�3�����u� _P���cV-bjŢD��騭I�٠2)&�&�R����$����Ôs�q�A�@�I�0��z9�8� �$ ������ *��@�V����}�τ��i�ӭ|<�c��[ů(t 7�qd�q��I<��s�6�����66��D�hX��ɍ�-�ڂq�SC��m��EblȪ��"�"CTv�d��-�[��` ��X�����}� �w���w���&��t/u�]q�s���rRQs��u�ܺ�i�ws�Y�� NR�w`9j���+vU)PiT��SY_>v�8b��i9�8��28���˝����;��!��:��:���q�R�ۓu�@oԿ��s�c�`7�w59J_;�U�㜭�)�$~Rqڕ4������Q�5�qGh��������3�"�1Q��L҉6I��<�%Q+'L��f�$(�Z���f���*#H��r4f4aDj"�p��A�GA�$GN�4t��2;��#f�c��/�6F�,�#�J!Q "�G�s�0�26_e�2FG�H��FhA�: �T��_Dk0���"�\�3+2�
0�2CS��S)hN���F��%d�4��Mh��Y�I�'%Y+%Y/%�56���u6��l�[!|�>Wk텰��aK��-����~�_��e������[L5��~�_%��h�_���aL)}����0�ٰ}M)��iM)������j����_-����^i�Q!�6_��\��(�DG�9pqC|} #8�y���H�,�FTG��/��$��"L�/��#�VG�,�fs4�/3p�����8��c� DC�%�r.F����>e�,�dz1�(����t;�T9�8��ׅ�]1O�7"Be��E�!� !dH{�qԇ8�L{�q��6B�Y�yf1�dG�O���Sb�]�o�q�:���� Y�yK$�50� ��/K2�0�����K_6i]��sZ(��h�cUc�V�[R�⃉� o<�c�Pd�8�d-��d�v�&C�/&��j�CbS�bJ[��#F Hn!��%"�4i��$g����cD� gE�`�]!xI��`��b���`�H�1���/�^XkĒȗ���ŌW�¨v����������9�a�6����-�n�xΙ اLR�L�JRm$KG�8��i�#I i"��h��j=� ����|�
�b���t*�r��Ԩ�AO4��8�����G�xAv�޷W7G.�:�C�1u��B �P����FmM�V��Bi�Zɨ�գ ��&"+��)����m����|�������/_����S-� ������� ���GMɄ=9 ��T ����� I6�cr0�R��}���0s��(� [�JpL,��d���va8�#�9�kavs�b�8e� =�Gx�u0�7,%&��ÎH.9 ��L+�ق N�IG@�P�@\�"oacoan'b��"��"��7��ۑ:7�"7� ��z`�M���)�yE@��;L��#�� :� Z���葙fTc��I�4I�M�y�fq���"NI��Ή3%d�8��EAϜ5t�D�&Fk�(:Ш�҄�n�� �1�#�|��-�l���F�24��E��#f6c��%��DE��Q�aDl�e�"ьd|�����3 ����(L�$+B�v���� �M�X��A�6~�ĉ�%d�ٝ�rNJ�U��e�Y�g�l�ftH�<��l��Y���R�N�6-�
.�_K�,�f�_L&]��݃����a��Yn[��˜[ ae�n˜l5��_���ae� /��f�,�����XL��MS�u�Qx��` �������9x��/%Q+%Q��"�J"d<~�������hk�����3tV|TŘ��1�h��臐�C�vE�l�!:8tYtT�f�8��1w�lq��������&E��,���2��i�,��r}��1��2�n���6:���rB�
�hS�=��������n؁�(wC�sc�P��8��@��
� � Q���|b���Y�n���9�� �̃2,�,���6F��Ihz�; �lqjc��±�E�
�V/�D�C,��=Y5a��Y��d�9T*�A ���$���[F�(bMj fi-f���jYZQ�P�H RK<H���A���#����J*�C8DiU%�U� ��0�& t `���)��xMae�4���^�`#����@]5��X�a0�)h�`-� �MAZ�['V��@�-'pͳpyj��ƨ́fȨ�RaM4�Қm&�%� ��s��?�&�x��1�3���{#��GAF`[X���`�jb��p#U�)U\蜱<i�9Ad}[����w��ד�7_p$�JNH'�8����(�7XY��g#��m&�-ѢCW$�kT���"1$�ũhI� F�6Km���X�` �����/�_������୕qu�&���|���Z������ǁ�U���ݎ(�T��J@q��]����`E'9��sv��\wv=�I�; ;$����Z�������\q��o�=N�W}���N9��8f�8�R׹�`sG ��@����R�;9�^gwwX)g9��s�u���-J�����d�'d
�rI�`��������ƴ9�30��g��y�3,�#�q��y&��*2����Ή4g��2�ed��d�1��G��G̨�� �0�3�#:C�%�l��쾋쇑,�e���;B�Oə6���?����쾋쾈���#Da��4a���d|��쏙f2$Q"��(�#�g�l���H��H��g#<�3p��fY#3�;3̲E��y��)�������-��]E����ae��e� ��[ 0�Yn[��n[��侗����}��n[E�m��)�0�L��S �a"�aK�}���.��[K�j ����J�|N�_3���1�Fg�3'�!�G�<ǔ;�v:po!� �-�.X��΋�3�f�j$)Pp��7�o�?�b��klgb卢P�B�b��lo1�c�������-��0Ȏ��5�}��g�A�s���8p�5�l�5�s�̙�Q*D�3̝0�26aDj"ȇd,���C�,��adl�0̢3�6J���2fN���sl�ͳ�γ��=����g �&ayB�a��.n0 c���"�Ծ�Qd����`%�Z�%d�� 5�B�Չ*�" ����.A�.0������� )42����V���,2%�0^C� _D�(_F�@�ENT9E�P����&&�M�=^�4�Z��V� ��xa�bо]e�|�E�x_�20���u. u�V
�Zڀ̢� o�hsp4O�3E(��cl$��BCD��4Ic4�-6�B<��RD�CRM#�t�Q���ae �@�E�,%�R��Oi�3\��`~YX����{P!���E�T�8����[�+��#�����@�Ѓ\�� N�"Nq��\B,<"$5��&�+Y3�1 ��M)�����)Ԑ�2I+ҕ4T֚���_���V�)]� �u�/�]�������gX�^��G�Nݱ>��Js��9L7ܱ6ܱ2>b\ް��:w + ����0s���a��ĺ���rj: ��S��)T�'Ӹ�ņ�� v��7ؕwb���x�ŋ�b���78ň�1V7f�X�7#�� ������)X]�,%;�R���GA���^wa���KspM�t��VQ8,J�,�T,TxΜ�Rް�ub}�sF�U � (g����M�Q��2̲>cF9���Fe�d|��&g�2Fc# �1�ƌr6F�4��2��Fp�/��F�3
"�B��,�d\����a@op8�S �2ɖM��3%٦J�Yh��N�Wb8��"Q�y
���� ����/�ё��#ȍ"5��1���3 �d������>e�fVg�8af6G̳,��
C�Ź x�b틶Efl�������Uj)T�Md�Mte� a���.˜a��l-��K�~—喾����e/�Z�}/� ��a���˶
_L6Y�qd�MT�MD�R��OoV�eX��� �'vsG9�Q�P��k#k9���<���9��m#\֊>��&Q3&d��4�M��D�4�L��2fL�t��P�s\�f�������3�捨��l�6�l�8�����:ɔL�^J�<��$̝3j5�Z(d���/%8I�<��(��6F���DL�" h�d!̉�l�#Y1��d��$�*2^M���3[5�k'H�"E�2FI�6J�Vi���%�u%�A"�9+���^�x�\f#�R�r. Š1KDR�pX,qXv�*,�����S�2u;�]�@Q1n��1���cbcB�arQ�P�(�(,����Q�E0⡙PjT5*yT� ��x�FKBL"&�SC"iE�50�`�X7+L�<Z �FKA�x�Z"�`pr��vA�9)��u+J��+
©X�V��<N Z�9�����nśh��i M!?j���4��FM(���Ҋa$�B)�(��5#���Q���4�JQU����=�#
P� +�K��ZYX�q1X�@����&��ԋԀ_RZ�=}[��򧃧U����Ӓ,���NH���Y�4��4ؙB�0��e ��-Q�Rd�Ƞ������4F!E) (�%,JJAJ2j�����������j��/_�������� ����[�os�E\�۞U��k��c�����8�m8�1��wmnw��ʭ=V���)A'$[R���� �\�����*[��߻Հwp��
�mn9�FqͧQ�mn9�č���s*�mc� ��P����q\��T�J�Uo\��N��5*SOH����9i�T.ӒO]�\Vugtu���NV<V4�j��1�4��-c;#�"Fc2=��1��2�(�#dl�#�{/���/��1��H�/��������M��Bv�O�B� X��%�3&�ܙD���;���2u�vMɔK�4���B�
��Bu���FD��/ȹ/����"�~_e����F�نafVG��c��=�Ȉ���u�jB�3Ɩ4��Z�jƖ<bLdqg9͜QA���UJmM*�:�����4�{��Z�[�̲��� a�̶�i��al2ܷa�� ��h�L6�����-�Ҋ���~ �
Q
�V��ҫ~߼}��f�P�~NɶMə/4�VI��ΉH�6J�.2��2}��~M�2�3L҉Y+$䜕��K4�2efP�~O��P�[���h��,��蓒�K%�̛dܟ3k7�l���G��aFE��tB�?�����=��dD��#$fY�`�~D�B�TB�@�B�CȖ_�De�d����"8A���=�����@�VC�%���c39��K�7�F�SU5A�U* Jת�KK�W�
�(�˲��.� WЋ[
д�%�ulI����_v� gf�^l�`�m&�&�j,S�R;���G} RE�Q<��)��C���05%�K$�$&:�RӤ������ֆ5�-WB�L+��ԹRఴ�P=�+^!�c]�b�����^�xE/n�$W�Vpp�|/A- � ��!v*�.�y,-%��io&2c�!�H���H�]с����JJc��%���lEN���.�Wk V����\X����:�6�r�IZ��^�N���||ePOۂ �B�Br��!N� ��!GM�M�l/l�f ����%�i��[%���ƲM,Ml�Z�$�ԪLV��\|b�����Ļ�6s�w; �����&��S��i�0�>0�>�=�a�����$�bU݉wV%��]bMxk�d�� ��?�e� �(�%T�6Ttk�mNA��6�'~ ��,�����eϘIN�1�0�7&Q�B�Qwam���XZ����� 7;����,Ԩ,u��o ���'*�+��E9�bQ�$j9�U.��� ]�IUўH�FH�*#�&d��l��\T3�v-��-��BŋQ 1�3�� X�b�C|qc�X��>��Pކ�.P���襊V)X�����p�F1J�I���%�+3� �@pu!Վ��:��&=�t:�͎�@��f33�+%ٚq‘R�*\�FS�J�,R�R!i��c[���x�d
P��t8��.�-8-c<g�1�-8,P�1nż[�t3�q��6�tIpʌ��2�H޴��Ը�%7�o����{Oj);�\A���}E��Z�f�]EvWK�n�W���E'���=Ap\O������~���V��3Q�y���̨�1�2�/�
1�����Fy"��#dl�/�$�VB�9 c� H�d,�d[/� 0��"��Y�Q �����2�/��#̑fy*�TeF20�荘Y����cg�(iC:ع���cFB��$8��qsP�ో+b�*Чb��Z��1v���h[��!^��
�)Ыb�+bŋ����]Ƹ�cɏ��c�. � ��BՍ1v��8�*ԋ�D�^��B�J�*��V0T++]XtX1^2^�>-q�L^p�su��� �Õ X��(u�e`A�b��� @�j�͂a�H��h�G=FA �-�jZ
Y�bX��mS��I=IR�~��Q�Rt���"+���k���E����J��9�S� ��CW�D�%�h0.�C3�D�^!��X�GR/�:r���T��qG 8@�B��C2�hD����R����#ƌ~��:AM$����6%(l@����b���EV2b��AP-h�d�?+�X�:V-�¤�@|��L�)(^�}[�� ����v���9.��qO�Q���w&�T��6Ln2l��f��>d��L�Y���<̨��*&����D�� e��` 뗀/�_��*���� %�8#�`��m鷌��7g �捼n��`q�S�p�⛗;��}�����X\�:r@q��NNP�zQI��'�*v�M'�v��Ӳo'hT�CNP�pƞp�� ��� 4��pM�@?��o[x�~F�nF�`=�(����8f���z]��vҪ���J����q�7�~I�E($�OT4���u=6�� G q���6�}ƲvDz#іG�>G�Œs0��a�Պj�4�1&a�0����4,P�B�
��,b�
��B��ح�U�I�Cf*P�a�� /�;Y ��rc�w!͎,s���7��qć��Xކ�9��P���7�X����s���\R&� xjl'�hT�Sd(b�qV��+b�)Щb�+ر�+�*ثb�,ص���c�L�D�3QM����F� ��s 1��G����,���M)���u��i�����{�����APZ}>���������
�ߧ��. =���J ~o���������~�ߨ"Sj54�ӹ�/�V��x��#2�daDj"ȉD* c�{C����7��8�Տq�<���t:�49���7��7������,sc��lu��ycɏq�:�� �o�(qc�����!Yȳ/��af6eC��솘΅�EZ(P�>�} ��!"�Vh3ؓ161>a��� ��݆�M�l�e t%X��X�B]�� ��0݆�7bu�� �'�MpI�g��a�,K�����P�R�["�nb�5���V�1*�Ev�1��a�^�1���­�A�j�{T�H;�P������%�~���X(l����X�`��6����`�b�,D�GRLI �If� ��TІLj�it� ��A���B[����S���I ���� "��� ���_XBe�Y�c��`�,�pE��� V�h/U�,j�%��,t�FV
�ɪ��Djc��dž���P��� �e$�?�I^K�0�&�$v!�1�ac��l�#41���Ƙ��d�i���ZZ��+P�Z�Z�v�r�IZ�T�K�U�� _��Ap�O�u\�+����U;������d[r���sjl��6V�ٮg"�T�s=���1V���b�4�&���/���}�����a�7c �r0��� Q�X�ȁ�ф4r� �r0cGQxܘW�� 's �½� N�bu�����@UPW�PW��3� ��n3��2����n�#p%��NA-+�a���8��;/"v z���,�����D�oB�w�E7[�n킚���`�����`���S�o,�@��$
g���<�����<�и
�Z> '�x6t����: '7�'$=��1��&B�%����a�������"��JE�!�Hbx0av����$���.a%A%��� �t/���,�.� �F�GrX��r�u��r��c�q!� (Y��!=8�!&A��M�� 6$L5�Oj*�,�ic[��c|s�P�C��,yC��U��auXY�G���pe�2�-�$���J��p�p.L.�vAva� Q ��d&dj"�~_e�_�� �Dj/�%��!�=ǖ=�2UjiT�y������z�OI�)� �'�888-�{�৷��v���.
z�߸* =?po�Z}=�����?��n�JmU)���<���,{c�l}d ���<���s!� h]���Zř
�+Xq�:�R�
0�b�0��p�C,R�:�8��
�,�ZŻ,]����s1Վ�yc��r>��f=ǘ����Ӊ3,ItI�M���a�Bm� t$�$p�A�A : '>��l�� c�D�!����xA� a a a 0��1�م�� (�N����2�h���0�bm� �T�hIpI�5ГA� X�
D%E��� Ո����k�V�cb2��`��`���z��������@}�g���ǔ�:�_�3!h���cZj�Ԡ� � �EF$�$�����Q�H ��q�A�C��r!�@�A�I�-(��TJ9\� �a����h7�%�4 b�q`!�+^!/6X ����*���Z2\
��@3 �Ap-x>y;�3����vm�����-�4fd�h�͘�1�Ī�OM*17M*���J�@���7b��%�+#�h���<\֌V/R/V �å�ڰ<Z ��Tڒ�B"�
B���'�? >��kyC��r���쁮8��qN�i�3�*7bت�1�͓�Gf ��ٜ�EeL��&SA�Sbh���!4��IKBL���_l����ƓX���D�H�̉�H�4�_H�bi X�D�X�D�&1���m�k8f��q���\�U��y<� W�����wW:��3P�[��DqC��N���+q;�W p��7��(͙6���h�f�ͺ$M#-��H���\m!G�����' �eNk8���p�� ���QS���� �=Kd���;��O �'t��$��� �P������/���'ty���9�7�6Ƹ��l\�n��[�oP��ٍ�sc�X� Q�.�,P�!O�Rb�cxG�>������г!VB���ĩ %a��φ� V ��3�g��A��5l4Xj�ӆ� �f��A�a��=j �" T$����%LNn(�U��1������P���7xYpT���x�1b�؇q�r����s!� �P�Ż�[��\�� ��c�����w�5�(�;�o�����O�I��~�߷� �Pi����
{z���� ������{���߸* OO����'�z���7����=��C�f�_�P�CzP����iC:d+ЫB�*P�B�(P� Q�K�S�K�J�Q�  P��A�� �1GqJ�,R�;�R�1C(╊�*⭊�,�gcK�]�� �oc��&� � Z H��� s �z �I�*��5؟�1Vb����]����چ��ֆ�5���lm1���m��w�\�jB��*� t%bV$�j�� �a��� �A���Q���^���3��)HE)�!��*�RJ��V U2T�ڰ��JA�M�
�u]D�
�o㮺rs�J�{ q��y5�Zh X�Ջ�@�J�X;�>��=%����0*��$TwQ��Fр�Hq4v�`�Ll� V��j�Z�W+�hU����2�=e�z���*������u�r���b�k�jW
�@UD��-8=����q�A}S�{���EW�l�I�Wi��t�+�� �Ƙ� �bK؄++d쭐E3�a�ٰ]J����Z�V�]�X�X�F�r�(X�P�=�[��
}c�ʞ�T�t�W%���|�ΣS:�T7
�v��[eͶ��E��k�͒�[5��b�4�Zm2+d�1�m����/�_��E��A ��.B� ��0av^�� ��P��2n He T@��Q�*���_:�W����}]�W X9n�ɺ���vo��t���^���z'�z7���7ct"�Ћv7Aq�P�0�� ��4�M݄��z��A���w����e�
�܌���Ձ�݁���t��+܎@������n�/���N��/ޛ��z'���x+�����p�I��q�9��7�����5�v��[�n�x��� 8����د�ث�8��)ا�2hP��D�N���6P�bV%P�bS�N%bF �i��A�A��4�E�W^�$�-F���<ǘ�cw��q)8c�^�,�EiZ � h3��1#�'��J�+ �,6�t��N��� Q�Fb�)Ч�8ث�د�د���8�c<g��nż[�v��mclm����qՎhuj-='}�{~PpT������P[��������~�߸.
~�ߧ�������T��O�}=AP\�~�޴��ڊ���X�P�P�B�4�kqc�*Щ�rqB�� ����q7(L�׆���b^%�k�^%З����a�(L�7 �lN�~1B�R�SlV���8��,\��Xڇ9�X�Ƕ>��,����$6��5��qc�*b��XptN�e ���4��A��-Z �c��A� �l3Xg�Չ6%bf,NÄB�(Щ�ы��1������� d
P���<�R(Z�J��k�+P�Ab� �X*N��P*�*P���3԰S%,��N�:x@��o@��m^����RZ0f��#TvJ��&�F7I,J?J��|��9�D�P��QM,QU-,��=4��Rd���Dv�����N�8�; �K��k��8��K�����kF+��A� ��&�n�&0��&.I+��X+d��:��GNX��;M~�yN8�7b��TƭZ%�=�;)�Fd�$fM#�
��VH���h��5�K@R3If͢[@�`r�R��#AʫX,�kbR\�b�z�T/P�-Su�O�}ǔ<����vC;*���9���s8cr0�M��v-���mf��b�!�M���Y:�RL&�6%V!�4Vl�J����` ����I�8^n͸)!i �k)�mM���-a�Ё��QD� "��3�`F���vE�����ꀍԩ�; "�vOI�������n;����yD��H����yCм��4agB�3ۥ�X�)�6�m܅� g7e �[��j� �� q5���B�6�q�`:n)�9��R�NP����8���7vv8�����}[��T�7T�˟=:�`Z�/+v�R���|oC\[�k1Z���LS�G0�A���,K�+(HĊ 4��a� ��� � ņ* �A����A��,8��@ða�?a_ �ypM��F2 LD�b���*b����8X�b��I
(O��b�b�)Ч��1+�@��J�`�l )�|�t :��#`�Y�? 6�HD�+ Xb�e�f�5�3�g�M�$X��X�bf&Xm��a��S�S3�XŬ[�����8�SI�{wz߸)��OpT�����4��~��ߧ�888887��8887� �~��ߴ�z�~ޜ�}=?��(-�z���Ħ����q� �m�&9�49��7�1&_"2l'<���;���;��w�Q�s���s��Y��9՝��܎��;�3���$Mx��{� ]��sC��������9�VhR�:1>Bc��A�A���A~���� � ���R��4�$�.L/X^���0L%���$�/�`�a�[ l0H/P\���.H$�-XH�[�����\�.�.�]��a��a�a��Ȅ��)إ�C�@�91 z}�I������S%�P�pY�y@;�q@+T;g�x'�|��S�`����|��h�4 �������j�@6DMI�B�Y%�����u54�-��6-��؂��؃�92�)4�[��Rp^'��_���U%`��J��B�|(N���z�6�--�R�4�̸ ����D���N� �m��ʱ�p:e���@��`xC�ɴm��7��+[D����m!h v�4�I�H���Y�#XZ�+hڃ!�-֪yR�6�R�Z�V�b�j唡b�P�F�j�T�M>���OS�߷�K��t��J�v�|k'sX�l��d;u����T�[=��t�s=5bf��2LU1تeL������X�e����gH�Ar(f��1&6�
C�q���1�w�.1��c�� _��WvB��_D.�U%��\��R��9�H]���q�Aǝ\~A��$$��"㎅�d�/��0��m\l �j l����M�X����om�Y�
خ WEq��q�.����0X��T�y8�+��Z�:
�)�U�O��Ӂ���ww������ �� � ���<>pqCZ�n��-P����B�)HO�n�ۉ�l�� t$H3�e��A/A� X_t$� x2𷅼,��GX2��t!�#;:L"a -B]���+ر�8��2(8��*b�+دB� 1�T+�V�VtW��b� +دB�*b�qRŘŚqc�V��e8D��!8A�!DL!��+��,� x[����$� �,1a/a��-�{&�L�ى�m�u���*b�����V4�nżkc�G���������~p\�?o[�ߧ�����pppo��������ppppS����߸%�=O�[���ߧ�����~����E��d�ͣ;��yGy���u�g��g�wg���������6�h:!Z�H4��h�������wG�y���y�gY͝��yg�܍�'8f�B�
ح��hXũ�N
�+�*��*8)�T�]����1��$3��1�Ǹ�c��u����u��Վ�<ǘ�Hj��CI��\�ً����b��H�lU�w[��,b����[�@�@Q���������������������������������������������������������������������P� X�<�@�(��0!�`��@  ! � L@ � ��A@��@ �"�B6,Bc@T�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������s��7�k{������^Ԝ��\�H�z�����뜚ϿůOb���W8ׁ�s&�o䀓_O��5��ۣ ��r��Hn������~��<��t#�Qw ���'�W���߁a/ L����| ã��a�P�V*�W�2�������������{u�=���e<�$�����������{s~��#_Lz�����3k�ؐ0�DyϢp���~·�_m/yO7����ۻ�����f�%�ݓ*�N�g\O�������U����B@H��@G`��$`� "(�C4A��P(�H�K��PDa0�w�b��6 :�BB�V�q��1Fa�r � $�J$��(��(��(��,��,��0� 0� 0� ,�L0�L4�L0� 0� 0�M0��4�M4��<�O8ӎ=�;��8�E@8��8�=�@�N8��8ӎA�58�@��8��8��9�@Ӏ<�E8��<��E�9AE�8��4�5�<��8�O<�=�A@�4�=<�9�@�<O4@��9=�8�=>@O@�?Ӑ?�<���5<��E��=Q@�8�@���<��?��@��8��A=�8�;8��=8��D�@�?��D@���==@�O���=����?��@�<�PG�@@��;<<�@��Q@@�C�@��A���������?�;D�C��<�O���A�@��?��@��C�@��A;@��G��@���=@���A�=}C��AC�<@<C���O<��@@<E�<A�G�;?�D�AE�9<�<;D�����;C�@D���P@?�<�@C��@�@D�D�A@<A����C�>@���=����<����@C�<@;�4@�AP=?D��;=��O4�����C���8���@@;@�C�$=;�$@�O�?���A{?�;@;C�?@AC����@��=�E�����P��<�����D�G�<C�;E�EC�Q�>C�APD������@E��G�� P�C��@A|EC��C���?�=@C�=@��=EP�=�����OG�A�D�@G�C�t<C�=AE���C�<C��C�?C��C��?��G�$>C�Q���PA��C�?9;A�P�Ő��)P��P���G��?#C�? C��;A�������C�?C��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������,G�C�C�|G�|D?G�3�G�;A�G����EQQG�@AEEAQ@E�=�EAO8��8�N4�N4��4��4� 8�L8�L0� 0� 0��0��,��(��(�I �I � ��q��ѤF�(<*�ŤdD�QuDp���,�pD$��tC�C  ���s�"�C���(D"�-�b��TZXE.!�BPt%���T$`}ʄ��- @��Db u�)a�J���p���Ia X0 R��-F�
g�G���|L*�$��4����4���;���0
�O
��<��� ; ��:H0�H����'� ��CbQ)C��BaD�
�P&8�:��ā���h$<H�x�2cD#!���Șd�e&�<d`3(��qp@E�1pv  �1�)0�&$&I�I��J �G�� 0�0�<e'$J��I'$���a�K�>\��8K�Iq� �D+"##�H��F+ a� |�>"��D!C�HBL�D (��n�}�������������j�U)Z�Q���-UZ̪��ԆD�����ġHJ�`x�d���BA�0�F�`��-�p ���C"@�L��A0� 9%$�44h�R�eHʐ�`�a�P�*EB ��`!Ha'�I�A0:*" �c����-�B@VB�t
�Xp$GDB �F*2
�D����yq�ȹ2�P�l�~�c!ѐ�d(��d'R� �̞e�%2.h�/ST�BmKLLH�EFHM�RY*h��:̄ɡl�UN sBU!}!) ���D#�P�3�&� G�ar)D B ���o �8 q�[H�B�W�"��X � � P ���M�`N����!��d=�v �"�� A�<�2� I����+�\�1D��0 b,��ehL ����İ5�+`��� ӂX���K���`�,�\�@���A;`�Pl� �" �A��;Pl� � &��\����5T��,`��%�i���KO�A�@ ����2. r�M�3@�\. y`LR t X�%# I�JV��$�`��R 0� ��0h\
��(q
c� � �2.��)�E��_ �D
���[��T��0
����0bbbb]��R�����
^^^^^^^^^^]���������������R��������������]K˲��bbbbX���W��^���������������� Y�I
y�0TʀR��Ȁ,Ȁ���s�,JW
@�01�� ����fH�8�s�����A �S@B ��. p��������AQ��@@�`g�`�0a�2�fJo02��1���:�WbDܸT�x8̠Q0
R�ZɁi&
y "�Y��h4�@��;#|F�F�T
1PPHE �B
Z ���eH�`-����.l\ܰ�+%�[.�`�T@Ù�2)@Ũ� cK��< a�b���hs@° T0Nl�VN�&n�����p@ jH�xQ�SFAKHApQFA�HА�0'����j$ �@J���0�H���0����#(�L0 �H���1pA8]pa0Ly��$�d�jD���;��� �-8��P�pE2|��ܐE�5�2�kH���� ��% ��L%��,al �` @���1a|<%���Έ!��\C�01" |8(H@2᠀(:( ��<'��
là������ �,a<p������1 �ˆ �ZP��5�0��܍F�w  �n��G�� @ A��� I��VDTPdx;E 2$A<�$��H"�H�LN�,�C�09$%��@�`��(� $ �P�FP<���#�����!���`���"'&BNL����&� �y
�B�HI
i!F�4HQh��!-,BY�,�d$R")���BDA"��)
��=�~���_�������Z��^�^�W�w��^�$�BѠ�cD�d��&��86 �(�\��S��/ �G #AaJC�5́��gr1;�I�2Q���IH�"D �$
���QJ g��P�*� �� #��P�H��R�%�ڑ ��@L�1� ���"%$ !�����,p��� nC`]��Z��q��/!�7��L)�@@����x�v� H �)�&" � �S�o8��f-&�F6�-�J�.��<��Ј�r�;fF 煰� `6�2 ��&�� P��a �� ��/A ��`�ؤ І��)�><ZX�и�H�̈ �P!H� B�d�Ф��Q�W����d�,d�b4 H� � ��q�F$
��JL\ ВfP � �9ᅐ8�W �� ���� ���(� ����%�q�@�D�w�P �� �0��
0O3 �k�``|�
���`� �nZ����"���+C� 0��"�t�0:�@&a2�����`���� �r��@x��q�`w�XH@$( p�| ��`��+���8R8
�l���"-�X )+�`"Ah�t���A�8 �����5�`$&E������Pb�h �}��2�3<L̠Hd�.�BT�1�`���R� K�)�yu.�%����—��e���//,��u/-//////-/-,��yy�,�K�yy�a����S��/10�LKU�����ׯ^�������U�������Utx �� �p2b�!����*F(����Y@NF��\d4X;4�B!��:��%0% �4 ��`��#�`�g�g�#��ڂ8����  R�J L J�<`�0Bѐ���"0"hD ��Y�(�"�����!� �c�� ��2
X�
�_��/@]* y
�ъ�Մ�,�l �K����-ax� ��\�j�r��=�45`���4��Z@z�<a��S�(�H!<�� p�@��,�T4�P%�x�@�Z =�`>&Ao* x��x�_���"�c��@!kTA� �Q�'�
�h� !0P� =�+��`��`q�A,� � ��g�: �k9��$������$ؕӘ/m)�mD��ej�媀Ъ*L�Dʆ0�t�s!$d�p<Ș�u�@~�*d�H̀��Y^Q,�2%�
$�A$#�QX` D���B�@�Q��@�  �4�A�i$��I�"�� Ē&���é��I�,4�V�_�ƪ�m�E�& ��UH��D����D��S(�P�%��$"s��%J��!���h.8.'c���`P0qA)AIA)5&%("�J
P=P@E@\�NH����5"*&h�DED�3�%� 2�ńR���"�
H�����VDd|C �E!D2�������_�k����������U]WU��뮫�UU@V Hlq#���)�������� �$�A T��w��i��Ct��´�v���m�Z�UT *��
�DMD%� ��% �2
%����@G̖2K|d�!d|1�*\B2FT,:�6.#($(�l������J L���$� �[�5�f��l8iH�t.��,��?����L����I,`�XH"] K� ��DR�Ps�]@�Ժ��p,�t�XXp08�!�CO$Њ�_(>(/̅x@(A"h�"!�D�EB1B2 b�ǃ!A�Th��D�"p@��@�$E(�H L�@ ��B8Ћ4!P `��aY ��x4�S�&XQaF!=�p� �`"��hd��#
��OP�
0��EB��8;"A���@(0T,B�E�� " �fAP@�(��0A �AH3`�0"pf@�$�iT0d0c��H#!�*,"!D�B !¼�����ud�����DVF�1.�LLK�u-//1/////,�K)yyyyyyyyyyyyyyyyyyyyfZYK�����K��K������ı�jWZ��������_����������E �"� &�pF�?�VD  �* 5P� �"�*�," Z�j�A���P����~��B� �2 ǃ!����c0b�b��a� ���+F ƒ
l,, �@0��a�C �d�& � �E "b0„(”)š�H;(;¬*�<A�}P~a\�X2�B%B-A�d#��A��2���@�� �2�B9�Ћa�аhW$����¬��¤)��
P�
_��@������B �9���� �Rh!)4�LjL��L �K�����j�Fe���i�#mX#��j���Ũ#�eA!TQ�d
-H L:d�A2���IpE�\�,��.qp"��<���HLfA!H��C�\���qc�8���\�FD�F�D�$ ���4
U �%R L�ks`�pF��#h�AZ �h�2���Y�E���3��`ბ5L�d� ��!2 �(�:eL�FcDE�H��`�b0D1 &�D� 92r�4�B�� ��4���Uh�#2@aK�� *�R�$R"9
H����~@DA # ���<-�~�o߭��u����������kZֵ^�֫�jt�h3ΚI���r),�N4j'8���������Re ��)U��(Ճ:�"OC� �"KPg**�-EQTA2��E ����fA2�G `ф�,�Le& 0B`�f��S�$5H�)���i��\�B�.pQ��K8����X�$�A �4#f�F�H4�A$� P�
PH��QPh"�A#E����$OP$���@�Ysˀ%<�!F01��
dɀC���cD���
Ȅ� 0�� �D!� ���E�D��pV4��XOa� �C��>P�����("���A��A����D� � v�B9��k�l"�D0�axB�F� ��D!�������2�r���1�
�� ƄI�x?It�6��C���|��Bk�'�QP��<(=�
�B����I��a�DB�4!!� a²A��~eT��X�����yyyiie0���yyiu,�����2���켼�����R�����ZZ^^]K�2̴���/1111,q��V���������������������������0 X@� B Bj Ä$!a tBа��~4*��PH~�k�v��<P���C�xøvõ ��PD)�U2�B�XP�2�!a
� ,B � �A0��
��d��X>��D ̄*!���E�1��@��!A���Pe(� ���1�x>�zHUHSHOa=�
0�Š�(ƒ ��)�Q�A�B�C)`?�P?�2�2X2X2�c0��bB.P��Kv�3B ӏ4�NI �%�����if���X�K5�em)l7����&�����*�*aQ�&Q.����,��@��]��D�tH�.dP�c& ��cʗ'�H�sO8!�@҆�h��i9����I'$v�I�5����j@MR���
����cQ5UUTMQDʢ��*eT9L�]*e*](� �D���J0���Hd5��n4, E�|.���f.�e�qA10�&%(�0�� �(@et�.p�NJRrI3��L"Fd�(�a�%�L��Q ��c� "!YJ�
�B���H����@����>6< ��<!�ӻ�����������Z��Uꫪ��]UkUZ5Z���Br�4�A�i��4�@3RrI3�;�Y��͚�iaI���� ��[����UU*�*��sS(�E e2��2�j&,��Z�D�& ��2\���Au2\����f@�f�hS4�I�q�vs$�a�h$���g4�lԜ��9���į|mj�������.袉�L�L��K�e;�D�&��D����,`%��2D`���
�RF�D�BjC�E Q(k T6P��u!�:P���{Xz��|��?������}��>��M���øtèsa�8a�8���
A��=�
� �B�B��P�ahW8�sB�C�CvC�p��9�0�(w��<��M���C�|��?�����}�}T=P�C�w�s!� ��6a� b�(��P�rd&� �DA��>��+Jʩ�X��vb^^]KK˲�aK�˲����^^^^^^Y�R����^^^^^^]����R�� �.����u/111,q�U�������_���cj������w�u
�M��D���� i QE
��CU T6�����C�u����<�p�C�w�:�P�C�r��7��Ն�5a���(��4��"� ��DA�}2�+��D!�A���S���4���
(tæ(w�;P���(|��?�� ��
�
0��F�JaE�P�P��Na�?��>a�T;a����:P�� 8P�d(�
���WD �2�*B '�_��ZRM���`��`�j����`�Ճ�pz����aW���;�A�UA��j�����YfB�*�VE��S!X�2�� ���e!e!a&B)ȄRPHXI�$�!Y)H>��ҩ
�T�cZB�U�d����K��=7��;��
�.��ʃ�Q�j�P|E� �Z��-��Q�TA�D袡�tE� dX3,2D0�C � 5&>RP�]�EB��!@}
(M M$)T���h��� F� �a����� K)
HGȤD$l���H��|yh�z<,Q���տ����o������V��^����Wu�֡�� ����JA嚐wM!U��yJ�zv-X<�*�aR�K��u
5P��TUP��TtA����yE��h�Th��4A�*�U_�e�D�!�`�JRIJB�5 ��A~�a]*��J��v-XA<+���>�{�=�w��>�A�UB����B�@��E�
�� �E��̅tL�H�D,"�!�tC(�'Q<3a�3P�(��!�5��0ن��'��V$�ID�$Kı,LĪ%�bX�%�Kı+��CDCe ��9�,9a�7P��v�ن��(P�(�!��k Xl����0����r��9��ن��+��%�bF%�bX�%�X�D�,Kđ$ID�I��'���(l�� b�(�4a�3a�O�<2a�,����X��yyv]K�ZZZYK�˲�^^ZZ^^^ZZ^^^^^^ZZ^^^ZZ^^Y�R��̴���K��^a�RƑ��jVYuj���}^���������ߪ��}����C(d��3a�3���CEE Q T5b���"V$cq����b8�Dq�q��6#��ڍ��F��E�d�f�� T5b��Eц��C8f��<2��x�CV�Chm �7�
C�p�҇P�C���(Hf��J��4L��L�% �2���2���2a�(�D�&��U�f��!�9P�C�C�0�C��fChk b�� �jNI����ia���������p�����P`�aUEUBUUQP�EQTQ"���L��e�D(�TQ0�$L2d� E �D�%�(��zNH )9'$ԃ%����?��k#5���)iia����n ���Bª���*�UuEQTT"�E(�(���A���L�e�0(H�l4! �dC!���0&&�bBb1)D� �e��<]€� @a�yCZMH��[I�2��a���T� `�T|�%� e� #!�Ed(�
��R!�$H�d��A�!��< �">!����������o��������]WU�u^���`�I�9'�5��XD�֖kF�kKK5� �[a]�^���^�EUBUL�* %EL��E2�TʄJ&QE�j&Q2�� �Dɒ��D&�Ԛ�f$�s5�-���������9���#m-���xC�uU��*�UT��������Ec�*����TUL� �L�e@��2a�J'���3��&bV#cLf3Q��j5cQ�cq�7cq�4�c1���#
3cJ4�8�#bE�qm��n7Q�4��j6��C$C5(k b��(�P�U a��f�$�X�F�liF�m���66�8�#��D�i�1��1��a��iF�n6�q��(��(�j3����iDj%Q2��O���J�Y#����e��u-//.�K)yv^ZZZ]K29�A c�ű�H�C"��)vZZZ^]K�2��^^YK�������r5+*�������_��_����W����� ��O��;$H��LaF#��f2�Q��f5�F�,f3����x�^1��Tj5�Fc1��f3�F#*0Ɣn$Q2"u��; ��Q T5��Ն�4bv&b65���G�j$�"H�$�"H�DlG��Le�1�Q���8�D�ID�$ID��q��n5��D�(k �k X�(��a�K�ͱClP�5v� ^�Ѹepʱ7 ��Z��P�j-C%�5ECUECuEC�h�(��µ�t��"e�Q
*����Xx�æ�p�8jÇa˰��oK ia�0�a� ���nq7 ��eXiU u V���5Z���U �T8TT<TT>TQ���,dti�� �!I2rd�A����(����#�<0� ��i ���4B�*�`F�`0��"�K���\t��+"!�)�����ţ���G�xZA���պ�o����z�������׮��Uj���kP������� [a��CV�b�ء�gq51-%�^$�MD��x�S**���UE
����+QB�CUTCTh�袡ڢ�MEQ
Il'3Xx�a۰奇×a˰��r�6�(�g�;��'���'�3�3Z�a�r����V���8F��(�v�C�TBr��IQD]����x�b1�F#1��f3��6JJJJJMI�995(��ɩ5(�2jMI�ɲl���D��(ʍ1�5�F�Q�2Ɣf3Q���2�aFaF��eFTj5�F�J4�,a�d�I��RjNNM�e��d�99E&��ɲl��������x�f3��#��b/�����++*�T�#��/-.��fZZY�$}�$X�Tr8�#�8�qGr:�Xꎨ�q�1�8��r8���,Q�Gԉ�ZZYK)vZ^T�9��eYYU�����_��W_�kZ��U�_U����~�H������.� b0�#�ŒFI: II* �����%&����)%'%%%AI2MAI�Fb0�#�ŒF]��x�^Q���e#
1��Ti�F�J5Q��n6��1�d�����R���yFRRQE�%%%FQ����Qx�iF��ƣLj4ƣQ�����f4�\ZY�-�kKF���M��]<۾=����U2�̪* �EL��uU0��
���#S(�E@�2�tL�D��K�e@@RjOI��R��RM����4��`aY�����B���O�.]~��Q�Z�L�QTTz35���TT�EL"��S*aQP=�!��S �H�j4Ca�Р`LH?$6H! �IɁ�@Px��D�� N(x��i4��٬�5��e��DXd���$eŅ�K�� %� �2��0=�b�0�F,*1a\** š�Z��x#ǃ�J��d{����W���������?�]n��uZ����L�V��UU1Z5P,�,���ig4�?f�Bٶ���Mκn����kU�j�� j����TfUT :��,���QP"2��QD�(�E���I�$��JR�f��6Ͷa��m��6�z����EUUUD*�USS*����̪*V��E"&Q0�(��e�eJJE�"��/�d�
(P�RJIIPd��Ԛ��RrrrrrjMI�2������d䔔��� ))))5Q��1��Q��b1�F#���1vM�����%%%%$�ɩ&NNNQJ)96M������d��6JJ���d�&�
(PRJQE���^R/))+++*�dr9!D��1c�(��G"�8��v;Q��Q�ꎱ�:�Xꎨꎨ��1�����v8�Z�G#�q�Ŋ<����H�r�����_���������������_�u]W���JE�IE(����I�
{B{B�
 ��RJJ�%%'%&����)9)*
JI�d�
��B� ���A��Ԥ^/�eF.�#��b2�X�f.��9)))))9)&NMI���)6R.�%"�RR.�JE�I5(���ɲrJJNJJJJJN.����eFTeFTb1;�4��X�le�<f�f������q%bN%�IU�Q"�H��DkQ����iZ�-F�Tmj$UP��h� Ѣ� �bfؑ�6�i�4�i�v6��{;;�$���8�Z���5j6�ڵV�*�:��F�TmQQ%����X���� ɣ!�dѐ�.d�_$��&H.�� %'�ӧ������Q4.��밺� �D@2�D2�2]L��cJ��# �r�t�J���T/�@�����G�̐ �]߯ׯW�Z�ַ_���kߪ��^�W���kZ���Vؑ�4�j�]�5�5c;�k�q���7q�����֣KQ��ʸ��aZ�+Q��ʵTTJ��UU-C4�f�2i�b7��j�F��5�%ؗ��q5�Չ�+Q*�J�-D��F��kQ�j6��D��**�C5�RQ��ϟ>��(*
%$�����RjJNMI�99IFNQ�RjNNNNNM�RRl�������
(P�=�$�]Eغ����B�B�
(IIIIIIII�)&MI����ɲl���R�rrl�'%&ɲL��$�4
(4'П>|�%(�%dl�<�c���G "�Gc��,b���(�v;Q��G#���c���v:���r:�X�v;b��b���X�Ȳ:��
�qGv;R �}}Z��������ֿ���}�}������d�O�>|��'ОС=�BII)%$�2RJJ�%'%%%%'%AII2T�$�2M
�
� �'ϟB�>�����F9*
$�J�%%%%&��Ԝ�(���(��]JJJJE�IFQ�R���$���)6JJM����)&�
(II���6�[�[ib�kpٺ��f���� ~�ӾuU�ʵZ�*��UUEC�2�TT6S*�ECu2�T:TUEC����4���f��,8ij�Ö�m�6ոm��M�u���7UZ��ʫUP�UZ��j��Z***����&$(P`N.!p�`��f.�\N.FLJ�.䆉$�� ]I ��@c��g8S�KI����ҋ5���QJ%̂�d��D�p]��R�%�u,@]K���F-*�Q��}���!HA�@"����d� H�GH�}o���������ֺ�zֵ��U�V������UUCjZZXh��K Z���ڴ�ն����K����}V��TUTP��F�6��h��TT4TU�*(TV�T6TUEC��Za�.��v���ᥫK�j�:����۾u���U��C�Uj��*��QP�QV�T7TV��r���*z�ϟ>|�����Р�P�B�$����|鳧N�:t�Ӧ�Ӕ�AIII�RRRRT(P�С=��P�>|���P�=P�AP�B�%%%%%&���3�����ӧN�:t鳧�RRRL�AP�B���A��3�ϟ=�=��X�,Q�,c�[�Q��Y��X��Gc�����v:��9c����X�qG#�r:�c��H�r9Q��ő�8U�j:��QcE�<����Wׯ^��~����������}����z�>|���СB}B��(P�$�P��g)�f�S�Nf͝9��*$�(P�>�
�(O�>|�����P��T(P�BJ���������&����3�ӧ3�N�:t�:t�AII�ɲJJJNNJJJ��
(P�>z�>R�]ػ�}�;n3��c<b�K���$�>OR|�T��֥UQ�UUQ�UZ�"�e��Deh�#Q�j0�a��V2Ռ�F���cM����b�9>K��>O�\�'�\��aQQ����ej2�� Qu���(�J+Q ���`/ 1�\�p�.��r����&H&I$��=O �"p^:hL�� ����Q4/; ��&L��L�S!2eK��t�K�f\&K"T/R�x���F�Z!R��^ R�@�"��}wk}z��׭o����]��Z��}��ժ�kZ��J;(죱wc�������./r|�%�VK�ԕ�.Ir|]V1UUQ��ʪ�-F��Quh�Z���ñ�c.�]�5c-Xӱ��n3�x��ܟ)VS����u���V�+Q��ڥF��(�V���ej0�V�3�ϟ>��>|�
{B� ��5���S�͛5N�9N�Ν:j�Μ�ST���s5NSԔ�
J�
(*�
��|���
(I4(IIOg3Y�r���f����k:t��t�l��ٳgNf�f���B� ��>|��'ϟ=�=�����,�ő�+�⸪8`Yb��r:�#�r:��,c�v:��:��ر�v9c�u��X���G#�9Q��YQdp�TW�q�Gb���!E_���W���������k�U�^���oU��S�O�>r�>|���СB|��ٳTٳf�f�Sg)ӧ3g3f�Sf͚͛5N�B� ��ϟ>|���Ӕ��(P�B�
T'�g)�k:k:t�ӧN�:t�ӧN�5N��3��} *(PhP�СB�
(0��5�����'6���p�ݽ�5�ׇ����UUT'*�TUUEUB��2��eL��QPxDʘDʢ�T�&TY�-���XRiI�,���Nm���n���?�k�mj����:������TT(**eL��*aQP!�� � � ����tLJPx�dP'����ɉ �CD���<Nx���#����I'����sډ�%�0�dK�U��� ,��
K�Tx��Tp�d�RB"�!�!Y_ ��!aQ��e�]���}{���_��^����U���V��UUZ�Ѫ���XQif����ZX~�Kt�7.�m��/��W��U�T<�UUѪ�ꪊ����U
*��EEQS
���l��if�����ZZ[��F﻾��o���V��V�F��ЩY���*eL�*��S(��S
��:|����gϟ9��T�f͛6l�l��T���ӧN��3��T�j���ST�5M�9�6r�B�
�B} ���� �A�A�B����l�6l�k5�͚�g)���r�Ν:t٪t�l��Tٳf͛J��S�������ϟ>t�H�*<Ōv:���J+���ődv:�X�qG#��E�v,�"��uE�X��v,�"��X����G�Q��"��⨮+�㈎�ر� �B������^������Z����ߪ꾫z����>|���O�>|斖���lٳTٳf͛9M���S������f͛6k6l�U*�J�NS�ϟ:z�>|���P�>�
(P�:lٳY��r��)����:t�ӧϝ:t�ә�t�9��f��j�6l��(P�B�B�
�X��we+)r\��t����C���%�-IrjԒ�%�
����IUI*�ֈʴFQj0�V��la��V2Ջ�%l�t*��t*�;%��K���%�t9+T: ���U$�)U(�EբQjQj+8�$�@08�L�e�4� ��˓ �P �O ���� �</H]M!t�� "�!u����f`&K���ZX&K˅���x���FyL�B��&H��0�#�2TVXɎ�����n��k_���_�k��Z��j���j�U�J;(�]�F�N�t�C����B�U���%rJ�Z������-PZ��AjMUJ**.�(�(�j�c�]��ɴ�N�r[%Y.N�\���W%Y5�UIrjԖ���%�%�%�5EE�QZ#
�2�F���ϟ>s5��5MSif͛6lٳg)�fΛ6sKM*k6t�5NgM�6s9�͚��f͛6l�>��ПB}=Pg� ��>s6lٳg)�Y���9M�6k9Mf���T�ҧ)�gM�6s6lٳf͛J�5�͚��r�9�:t�,��H��ĎEq�H�EqS0,�v;�GX�r:���v;��R!!Q���b�,QԎG#�9��b�,�*Q\T�b��X���"��Y�������W��_�_��_�꾫�귪ޫ~�����gϟ9)iiif�ST�5MSiif͚�f͚͛6�f͛5M�J�͛J�M��f�Y��U*�J��ϟ:t��(O�B��>s6lٳf�Y���r���f��NS�Mf�L٪t����T�6s9�͚���lٳf�S��(O�=�������w�����~����YJ�ak�f�UTiUj�iU]TiUQTTKUEQP�QEQED������j�n4�[�[��[��������걝V�0��UFj��uTUTL����]<��@$@i�`�&$(qA1@o��B�DĈ����yC�<���y3��s:���+����UP>���SB<�cȋ���s�K�|��BI7�EdF��@�x��b�t� b"�e������{�������V�Z���WUU��j�����Q+Km��٭�.�1}�.����w��'��]E�V��
���*�UFUUTiUL��%TUU���J�6��im�7[�_q��1�)�)׌u�J�UQ���4���6��*�%TUU �UEO�>t٪j���l�5MST�Y�f͛6m4�Kj�i�i���3f͚�͛6l�6l�T�m*l�l�N��S�О��Rl�6�l�K6l٬ٳf͚͛6�iT�M�M6ҩ���f͛6m*l�k5�ͥR���fΟ>|������G�b�+�G�*�Gc���v9b��bD!D%b b AQ!1
����+DuG#���v;GEQ����Qj$H�%�_���ꯪ�����_��Z��W�{U�U�V�[�����Mi������j���ZY�f��l�Y��i��i��i��f���f�Y�iT���kJ�R�T�i��N�>|�A��JZY�f͛6l�9NS�ٳY��k6�i��i��i��f�ST�5M�9��g3f͛6l�U*j'*��\�w=�=������:���r���sk9jo9\�O\��%UCT�-PUS֧�I*�ETJ7%l�A���z$�?g��՛����͹՝ͬ�������OZ��=Z����T|�p���N�!i�uI���p�Q�� dz��pY4�BH�M l$v.�G���"� �H��I2d,�0`@0���aK�h�" d2 �Fd��X�q��������ƾ����׭��׭���__׭k�Z��Uz�Z��j��䶃l�w?g��?���uf�y��o7���+S��UOZ��=jz�����Z�nJ�ՠ��}Z��] ���s���w;���.z�-I-I-P��jz�U=jIUJ*�Zi��Zi��i����f�KM�4�ڦ�n�i��M4��-���6lٳY�Y�ͥMf��f���kK5SK5MT�i�5M��͛6����tҩ��U4�t�M�t�wM*��f�f��M4�J��i�Kʲ�Y��!H��R:�q\W�Lp��u"��iTA�0ġ� ��B�Q
!1
!D%�B�6 �1Cb Ab"�GQ1ÅJ8���+��-D}��@�T��eT���W�ꯪ���_�Z��kZ�_��U�V�]V��-4�M4�5SM,�5R����M*�U�M4�M4�M4�M7j��-4ҩT�T�kJ���4�M4�J�5R��͛5MT��f��f�f���J��i��i��i��i��T��M*j��͛5�J�Mf�iT�U*k6��lغ�Q�UC�"�!�Nd202`��ɀ_9�Ae�0T�C�5K0D\��� ������xRD>F �p�PoI
�P�,�B�p�`E.!� �a�^." Q� �2-0�h٠�H�a�dž�
���
��2@'D��Ї$q��&2LN2 ��bT� ����D�"怛��(i��fY���Aah��p�8|�SG��EP��x�]a�!��>��f@�&��r�� �LHL����b�������ch�� ܐ� �Cd�rB��%8���q3E�rF�<�iA 5fK#2\ȰɄHL�����F\�Q�ZT\����Tx�/%E�Ap�RBy"��!Y7����� �����o�{�"�9���W��� �꿪?Z�U����A�#f��CS����x; �:H�����6D����d�
� ��(<l���ezI$�@�"T��Ȑ�F�����c."�� B0>e�z*���� %Cq�`D1 ��P�,��.`BD�E�BH��cFX?����F��]��# �Cxl�����!��
���y#����͜�ޢ^fbYK� r�K�U0�9��х�
�.$.1 C���QQHTE�A� ��Ĝld
��64��MMb�k rA0Pk(&�A44 i��� Q����5��bp���%HIj�ȸ&�,4��`i��A���� a����&�@ �k��A�B� ���9�\R@�[`J�T$ 1@@��\�DP0�s�`����0�3T5.\����\�#d`
%A&"T*��ڂdTR����9 t��@T"�MX5̀2�5& �^�%����X���i [Xd � R@�H%E��\ q`&&�����(0 Q�KK�-. ��M ���\�5��1DS ����N��`�`ɖba�������f&&&&&&��11110�ԺH����2%#R�9�D�0�LLLL3
bbbbbaK��113310�&& �E�/����pX��62 ʃb � N NL:0 ����uPt@8�(D@T �FX�:�Z2F
q�,�AP#�D�U*��Q�*�@��� ��F�TH*�B� 䂠L ) �@#���2���
90*�P�€;�Ղ~x@��m4 ��N �$ � ���0)`� ��8�3�'l�$e���ʃT� �p3��4�����Q�@R˂�d��(�@���.\�)F@�"��@��xԀF�
�AJ4
��ǁQ8c@� �)g���N�����7(�p#��P�����F�N<�h!f�$*�8sȐ�&"��b �1�+��/A� ����8I��m ���d-.@�8h�Ane�˚D���4��3dD'Θ.F>Tp� �*HX���|�0se�����8�0��4 `� �"?�H�ZlV&�
A]��0d%��B/���p r�"உ�d�'Ġf�EbP�� N �@M�q��8�� �O��z��Nq3�iI�&M2D�3���$y�3f��0� �$ʀ˙(d�OP�#F@\��`��0�@��1H� *�@��} ��~��@1�ȴ�Z���T�bs�I�eI��e"�b�r2JH� "2RDd���S�ΞFt�#��)�bR�a�� ̋ ��
4H�)r2�e�˲�eeH�ʑ��#*���d$d2"�JDT�FDBy�J����������_��XF��c�@��\ �6€.�D5�"��� J��� ��0 ��4&��`�XrFI�PV&�#( 0Bh �L�,���e�TH�����!&@ `�LB\��0�>@��pB�L���B��Xl+�c���YK�_�A�� ��HD`T�`V��"�%Q�W��|h�dD(�4��Ԉ�Q��(9��@� М���
@2��� @1���<��xO"@8�T��T�$��`��$���$T be�r�X�@ ��L�rg `� �(�0a0:�V�Z'�Š�A��+���V�@��@' ��@2 ��R�� P+�lR0
r�\�H0k�`�(!� � @�09 �. ��w���;�@pP�$f#�p q�5� 6��6��mH�o�pŠ8�@�(H�0|DZ�"����"/�d�P�}�E��X���ȅ 0C ` �_�� �����L �l�`�
A@Q���F
A)E���b�L�>�T؈�Z� ��%�=�� :��6�sl8P���P�!���Dl0d$l�4 l�hԘ � ���\���6b�Ҡ8%������ 8� �p�9�
i07�� M @� ���|�s�
tU&|'@`R��iP ��YsT�ʘ�����R� ����ļ����Ļ0�K��fG"dJG,�%ى�.�&&&%��&&&&&��111112��K�U�����\n�������V
�m�D8�
����� qP���! ���P,B( ��V�,�� @�!�@.����P��>q ���@+����U���
p�,��f#N��\�
ɀ� X��T� Š�bG� ���@@Z��*�
`%�` � � Pdx<� ��`a0 �
pQ�68����$
�QTb0R�"��F**�8LBVF�X�t T�<�!��8`9@L�xPH X8Am> �>���(�L�`�4�J�hTwN�x���B�;����2�t�>�@�F�D�T԰���C@Z��
�<��`V6�B� �� 0� ، ����0��(���`H�Pb@zC �7 ����Rg��6��i`yۇ��V��U�ݥ2�����Q��qUT/**�QQ QP<����L"���H�DL" �L���
a �0�aQ  0\�{ A�*�@aD)� ^�=PPF
r�`z��>f� ��C9��$����$���<m1Cl�p�$�w��5P�EE�� :�`Cj��QP�E5EBAQPu2��x%� !h,��|D1H�\3# �� �JJ � �B�$:Hm
d�$���<�Ӊ�8q3l�"3Y�,DS*aL�8��f�#10D\p� tJ�J�����*-*`�RB,"�H�dB�1I 2�������E�.������U��zD���$B�R
>�Li�v����饁�I�*4�;m��-�,8np�`ux��ժ�T!UD** r���L�mV�TT�D%T� yTʃ�L����9Z�zB�Y @���
B�S�'��D�`���� ��Sia�`��������},��K`<���jԨ�ꢠ=ꌺ&6*��QP E0����@�ʅ�2�A�eHT1��
�� @� `� �
�{ "�.��0m ��8� 9�0�C�x��=��&��!:�'���EB�)�SP�
j!R��;B�*B�)�SHR�8QaF� �����0�XMa�aꇐ�C�8�P�
�G���,`}Ac�3��h"@�.d�wyX{T&�MP�(����O2aEB�)B�!M�HT�H;A�A�B�*B�
p�›
0�‹ ��N�Ƅ�z��<��;�L9�0�C�o ��!A� x.`�t�$A[ %YYsfT����ļ����Ļ11//1111.���0�LLLLLL)�.˳���bbb^^^bbbfbe��8���������_���������������(���"���6P�Èq!�9�*C�v��<2�}�������9�� �'�|'(Oa9Bt?P������������C�Øq!�7��نЄ� p7AD��t\0���V�(
�`�#��<��� ��C��'Bt'�|(B��$B����
�X<0y�҃����=A�L`��UB�x;�مHRHPaB�>�:����&�l<����"`�
�.`g�1�

l 2B-� �?5`�Յv�� ����� ��V :��L,pa����B*�UBj�P�UP�E�C��F�B�� �B �A+D#� (�=DAOD=�kz�@G0���j� *��T�+T�2it�DU�Cl!݄;��B\,\u�� :* 5j�XET,)��Z�5j�*���Z�"*�'D4@��J��� ..FMI���*Q�!%$DIDhI�":yȞFt�#��N�7dM��D�$H�"2���K�Ir"��EeH���� �R"#"��22�Lj��[�������������������AaM�J��HA0̓��S`�Յd��`�J���@6��@U��^�Z�Z��X0*��BUBUBj h�tUB�4A��>�D�A(���� �@��Ȃ��5�=`DXG$(��j��V�XD%XD�XE�a2�5��ʰ��18E�����#k�j�D#QU�MP�V�D���Z!
�D,"�4Z!�.��@���\TQ a�5P�(oq9�P���v��;a�8H�!�1,H������j7��ڍ�ln#Q,M�DCtC� �>���C�Ma6�������0�C�Ør��;a҇p�C�y=P� �C���&�v�t����,F��5�����ln7�(ډK(f��C�C�v��;a�;�P�ÆC� �� �� a�Q*�K2� L�����^a�R�bbba�e��y�10�&�u.���Ļ.˳
ba��e�Լ������e��˜���f%�,��W�������������W�����B�5���Cho Ẇ���èr��9� 6Hh�2D�cQ�3�Fc1��j5���mDj%��  �9�P��P�Õ �n�xo ��6���(b�æ(t��<��(z�����?���=�� ����9H��цLLı$G(�$�"H�$��$�be �4QA���C� О�z��NP�0�������<�p��L:P� BR����m��]6���ہ���?l g��xZ��bUTUT QTU@*3*���TTʢ���*eQPdL�a(�
"e�D&���ig4�9�������Bii� ��� �m��Ϭ�\ ����#�UE@PEQP�UTUT�EL�*QD�(��ᘸT �"aH���\(&&%&6L:$#$���9'�<LyC�\�i(�Y��zMa.��K"e(�D��p�.D\T\��%ȋ��E�B�Qa_#��ҡ��TD�"� �"HF��2� H?��������o��V�����~�೤�kL��kK1������{��1�n��G���V��]U@Ӫ�*� ʩ�E@LU2��:U2��,袦U@�)�L)�@aҖsK����^���U���p��� m��{����*���%UEU@J�����QTUT$�T��S(�E@�e�DQ Xh���c (��]E��x�aFb1��X��F�j5���q����n7�Ɣn5cLf3�(�b1�E�b6�E �3QB�
Øs�n�C �dČm�E��b1���f3Q��Ƙ�n7��j7cq��n5����eFTf2�#�0���x�]���0�҈�J�u 5QD�*��2�L3,Ļ////.�&&%�v^b^aK��ĺ�S ��0�&�.�K�u0��K˩u111.����˩��2�)c��ʩU�"ɗ��_�����"�ED4a�1i#,�))(��]E��v0����b2�*2�1��Q�3�Fc*4�Tf3c,e�F#x�Qx�]���RRQFTiL����(�!�9a�CF1#H�b2�*1��cJ4�Q�cqF�5Ċ#�"ED�$I1$G1G�n4�lj4Ƙ�f3���1�"$P�CECuT9��,Q�=��<2��X��=XgXgq=0ˉ�eX�q5TMU ��~*���(UQB�P� ���3V��U UT7UP�QP���v�j�6�6�4vlP�G\Qp�؟�M��\M�+��e����u�v�uq:� ��%�d��C5��p�QQ�x���`�`��9B!vH��� &L��$��I8��<���GRF�"t��#Z$H�#EQ"30D^\��.D^\���T�����H�H�� ������@<A ���o�������Z��ֿ������Cf�h� �X�ؙؚ�2k ��2xe��Kėq�u�8��/p�j-D���Z�J�L�&Z�֡������ʊ���4�٦(m�ub�����5k xip����O��OU �f����5\5V���5V����j�QB��ʊ���)�'''(��IE))(��]E��v0���l�� %%A�B� )6JJIII2RRRRRL���RjQE�aFc1�1�F#x�^/��������x�b1�F#*3�1vQ�d�&JIIIIIII))&JJMIP�B�%$В��R�x�Qx�]���RRQ��R�����*����0�LLLK�yyyy��yv]�����R�a�f%��Ļ10��0�LK�˩yy��yyy�.˩����,ie+,ʩU�"�V�Y�9E'')'))))))�b�Q��d�4
(P�B�
(P�B�
(4'&�%]�QyIIIIII9I9999H��^/b����FTb2�1�0�ؼ�'&��ԓ&���Ԝ������%'&�)6JM��Qx��(Œ�X�e�F"�1����vQJC����w�~�wn�����k�uU�C�ְ�W�;�k �����򢪪�=QS*��5EQTT)���ƒt��n�6�n�p��w���|7��o��C�Z�C�Z��wU�*�V�*���b �ظh0"�
H��2��h2CD�D�ɲb2B�CHq3�3ɜi���$�5�&km,1"eS*!"e�2�r"�K��".`���TF,#R1aQYQiTJ���B!1� �1��n�����{��������~��_�}z��ݰ��m�m������ݰׯ o⏸�W���CUUuP�V��UUP�Uj����TT?TUU
v��
�l?m�������y�{�u�:�ÕZ��UUUC�_P�QZ��ꪪ�UEB�����999I99&J�����|��>�=���'��ϟ>|���>z�B� &�
(P�A�О��ꄔ���R���������yFM���=��hPT
(P�BIP�B|�|�z�>|����T'� �A�>�=O�=�9O�%$���Ԝ����*����110�����唺��S
^aK��2��*ȤRB�T�H�R�UJ�e//1/0�3켼�����12�VVVUJ�X,�\V�E����RrrrRT'�S�3�����Ϡ��g����N�5��N�>|� �=O�ϟ>|��r���gВ����������^/�e$��PTB� %B�II)%$��P�B����СB� )&I�d�
� &�
 ����))))(�����c��{��N/���)��u����rJ�j�����(��cb�0�F���aj2�Ҫ��Ċ�$n7���M��/V1����q{��N��N�W%��O��'�q~.��)�EUUQu���g�UG�����h�`|d��F�&H���!'$@IO5�:rN�i��� 6݈M�BET1� h�fT�����0<aLdd$r2"�����U" <|Z?  � HT���_�����"�U�����_�6�v0ܧ�N/��NS��+���.K���.K���U�\�Z��J-E�T��
�4��j�%n#���x��b���\^��S��J��|��:�-I�/X�Tej0�0�Z�-Fx�TF��UU:k:t���s=OS��s>|�ә�f͛6r�6l�:t��٪t٪l�6j�6l���� �}�=O�=�9O�ϟ9�ϟ>|��AO�Р���N�6l�l�l�l����t��Y�f�f͛6l��t���)�{=��S��9N�:{-*���ʲ9c&&��ļ��*Ȥ,}�G��z=ǣ���G����y�G���z<��������R�����.�%�#�R�����YR�,�V�):t�ӧ3����=OS��=OS�M����Sf͛6l��fΛ6lٳf�iSf�gN��g����{=�9N�:t�����z�>|�
���*
��=�9�Λ6l���:t���Ӧ�S�N��S�͛:j���T(4 �A�>|������]<ۻ��}��);���������UU`�U�fz5P2��j�UU�FeQS
����e-��m6�'���6�����·w�)?��9ֵ�uaj���U����Y�Ѭh��\( �c0 1�@�"�4�
� (@e=�� �&hM8��f�4`�Q'1��{KئT��Q�L!D��L�L0 ".).>TiQ򡌰�`q�,ʎ����T�D ��@�"�����������_��V�׭U��}V��ׁy�[f�-��n�zn
m�w�v������z���UTj������5Tj��UTj�UF�t��۸V��m���=�� ����}j�U�L*ף�P ��5�U����U���US*�t�ӧN���Ӕ�f��T�T�f͛6l�l�ӧN�9�:s6s5M�͛6lٳf͛J��ST�|����r�=��Ng������k5��f͛6lٳf͜��g)��鳔�ӧN�6j�6lٴ͚Ҧ���͜Ξ�gN�:t�iVYJ������&Ac����X�[Q�=�G��[���G����z=b�ǣ�=�G�y�c�j�G��� �)HԬ����--E�����YU���5�Ν:t�Ӧ�Tͦ�j��j�K5M��K6lٳf͛6lٴ����ZT٭*��*���fΝ=�:t��t�=OS����g3��Sf�͛6lٳ��SY�k9N�:t�ӧNf���9�:lٳfͥM�5�:r��ϟ9N��d�J��>�����}Э�$�\�%�.It*���+��=j���O��URj�R�QjS��;���?���V��U����K���.KT:j}T���S֧�O���%�UI�G�2�‰ �\CH��P�0�{@BA� �@1 � G�8B6h�l��Ci��Am�*��J� H�L�&fD#3����u* ���)`�YKDf�d�
�Q!"B>C!��[���_��dK����_�u��'��7?���?����B��C���t5CT-O���z��z��S�%�%ɪ�>Sd�.�>�m����*�r\�d�=IܒԒԕ�.��j�As�U P��\�ԟ:k5��i�����f�Y��j�����Sf͛6lٳf͚�M�6l٪lٳf͛J�Mf�iT�f�Y�*l�5Og���m,�5MSU4�f����lٳf͛5�6lٳ��f͛6lٳf͚Ҧ�iSZT֕5�Mi�ҩ��L�5N�eYb�=űش���G�����b���(�z=c�=ǣ���ǘ�z-�G���G���<űly�G�~=����ض-�G��D�T���������"��������9M���i�j��j�l�L�f�6�lٳTٳf͛6lٳY�fҦ�6���f�5�S5��f�Ҧ�gNgMf�K5MT�f�Y�f͛6l�6l�6k9Mg)�g)ӧ3gNf���6s6l�lٳf͛J�ͥS5�S6j�:.�)m��[�����u�;�?�]k���+��*�UFz�����ꪪ�2��X��q{���q������_�����S���׬]Uj���U)Z���]BT������P2<\2(ĥ� �'��@� ��(x:&l�F�����rAГ�-,
�����U��`���#�.B]K� �唱`�.,*P�VD�Q rQJ���K�
ȿu���������������V�j��W��?r���vה�S��^S�O�?ԧZ�֯R������T�U��V��/Z*�1��.�����e���������FUu�U}Fn�0���ª�Tb�U��i����Y�����T�i�Lٳf�M4�M4���MڦlٳfҦ�f�fҩT�f�Y��k5�R�����j����j��iif͚����f͛6�n�n�T�M4�M3f͛L�fҦ��f�5�SM4�KM1��Q�<��=�b�Ŧ��}�G��lz-�"=c�<��k�G�~?�ǘ�z-Q��c�=H�-Qlz=����ŧ XŪ=��Q�<���_�����]�����������i��i��f�iif�if�if��U-7wJ��i��[���5�5�S5�S5�R���M4�M4ڦ�f�if��j���5R͛6lٳf�Sf���M7wwt�M4��l�lٳf͛6�5�J�Mf�ZU4�L��Vw9�s�>��>����o7����M��M�������S�U���s��S֧����wA��?�s��ۛsy�7����y��Ϲ�=\���S�:�r�jv���&!�J)@�.��|�(�$!!@B=��g���y��#f�&��� ����1�Q!�DAF`B12�\1� F��YKE��SȂ��#$" �B!�25"������_�������������u������nw>���Y�:�sy�7����W7�U5s�:�uT�s���S��S��sj�\���\�C���u��������o6�w:��:��ꪂ��z����S֧USM*�i��ii��f�ii���U4�M4�M4�Mڦ��7j�馕J�R��fҩ��i��f�Y�j��i��if�Siiiii��V�6��m�M4�M4�M4���M4�f���4�i��M4�j?�����R,�"ȱ�L���>ǣ�kQly������Zǣ����1��z=�G�y�ǒ-�1j�G��<���i�Ȳ,�X��Q���ֿ�}_������_�����_�~��M4�M4�M4��T�Km6ݷt�n��T�M4�wv�n�]�mR��kM*�i��i��f�iif��j����l٪m,�n��i���T�M4�Kwt�M�7L�T٬ٴ�U*���kM*��Iv�7m�wƿ��u���W��k�UZ���UUUV����J����UU ���������}�����k��Q���^#U���F�"��h굁  ��e��bB`|
�҂Rb�Cg�'�.yCć�=�P�!č4䠓�zNI�5� "e��D�&,�sB�H��".�ȋ�!,��p�\XF#""�����H����XD+" �!�?����������׭W�U^���U��Z�����ۍ���������׽|gU���Q���U�X�UQUU��em��q/{�ğ�������Z��O��UU�V�UTUT2U�Z��*��i��i��i�ۺU�ҭ��Uҩ��mSMڦ��-�v��-�[T�ҩT�U*�J�R�T�Zi���������U��iVݷMҭ��ۦ�mSM4�Kwv�n���ժi��i��i�>�~?�(�,�#�Yc�G���>ǣ����cȏ���z=�G��>ǣ���z=Q��E��=�G�}G��iñduE�YG��yG� ���������WE���꿪��꾪�i�SM3U4�J�Uݷv��wt�n��Kwt��ݫ�Wv��n��i��M4�M�Zf��j��ZZZZm�n�m�m�M�ҩ��T�M4�wM7j��Kv��4�U*�M4�f�ZT�ks�����<ޞoO7�����j��j櫛���V�ZUiUSj�UOZ��=jz��ug���6��n����y������y��n�\�R��O5s��-N�jrጛ&�2� D� ���90�NL0�,HBBx�s<181<A8��
ZD� � .�
4Dh�(�QS" �K�"������]K�E��SȂ��/��`#��$H�2%" dJG�o��_����"�֯�W�����{��vs��w7�Zzznmi��zy�ޝM����WMU=+��o;��9jr������~ι�6�kM���o7�ά�o:��o7SnoMf�SmM��U=jz����4�M4��wwwm�*ۺU�wwM4���Rݪn�ڥ�[��[Wj�Z��f�Y��kM4�ST�5[m�vҮ�t��[v�6�*۽�T�wwv�n�R��wwwj�M4�M2����ض-bȲ,��ش��}�1��z<�ص�G�~?���:�LT��<��?����Z��y�G���Q������"Ȳ-QlZ����}H?�����WX,���������iT�M4�wwv�*�ۻn�m�ҩ������Rݫ�Wt�j���SM4��M4�KKKKM�mҮ�m�wMҩ��SM���4���Kt��v�n��]�iT�U*�M2{}�w;�w|����w�����U�O����u��UY%Z��5U��Gv�+n�������;������j�u���V}k�Y:�UA�HFM$ą�Lh�Ćɂ�HHL�bRa LJL�����8�ƜH�q�H��H�qs9������]UAĪ�0dfˢ\��9��2`��H(D8D ���1�0s������p�1�5���^����`��o���j�֪�j��VOm�v���}��[|��;���z󿞫z��Vz��}kZU��UUUR��$����������w|���������z���Ud���MUUR����wm��*��wv�ݶ������ڥ�[��[���wwwj�i��i�ۻ��n�WJ�UҮ�m�������Wwj��n�n��]�tڦ���G����c�[�dY(�GX���y�G��k�k�v+b��)�b����X�)�b��Gb�E�-Qj�G����NQcE�dZ����c����>������_��@�����U�J��m�������������������wwwv������Z��Zi����]�v�7J���V�7wwwwwwwtݪ[�wKtݫ�wKwL�kL�����V���������}����i��*���UN��]+����m��v������n���������痢]+���j�zuOj�Uͪ���0�M�I2A��� ���90�NL1.HB:pa4�B馤-i�e(���˰��,�B��,�B�)2��2L�2L0!� EO" �R �G# r0�Fʈ%Q*�ԌD#R5���������������������kt�Mi�======�w�}��}�[��]====7M�j��M��=-��-�y����t��}��}��֕͹���j�����M��]ݫۻ����]�����������W}�-�����ڻ��[VҮ��ۺU��*�W}�ڻ��������WwKwwwwz�n�@�$��[ǘ�,�b��c�i���E�V�1��"1E,R�1LS�1LS�*)Q��"�X����E�<���;Q�E�cǔ[ǣ� ��������k_��ֿ����U���������ݷwpX����Wwwwwwz����������n�����"���wwwwv���}#��a�$����X�F�H��"��2Ph�ā��t�E�0�3(J�R��.e@vK��*BF>`���Q�1����R�d�" r b�y�
K�ˋL�L�̊�
��� �逕.-0 �#�@��2�z4h��p��A��C���I$l�1�s@vP
G�r`�<(�P��g�� �4x���� �.p�'�@��ʑ�*iMJ).�_* �Pu����,t��"���#�8�tHQ#DAR#p� tƃ���0(���@�4��%F��h2(�A1@�. ����b�<��_�2�j����i9!�NI4���L"D��"�L"-,>X���E������-� t�E$!.B+! "�ZE�!�Zq�x�<���>E�v�����k����k������;��_���$�RP����D��R(4e#g Xh��!��ɠ:gg�hl�h$�F $r 6rR�f�4L��L�]L"T�S$H̕D�" �q� r�x����`B2"""(��b#�C#�fE���$D!2��x<1xN�DG�"F%8LĬb3`;� �� �����ԑ���Wt�w5��D��U��11 ��Ce��У��#��ˎ(��5(�"P��(I) �N�hH<�1�L�^<������ ӃH�JID�I �:x#Ł�@ I�I���$�>�HʃD�$�Hp$�".����%Dc
e��`]�H�5K�/*�F �'G�ph&���OZ�%�*� :A�hB`��|�g���F�(�A�*�f� �EQ�!E���qpg�>\�I��dt@L�XX i`���#�A82 �pN �0�^H��H�u��
hLh$�I�#4 �H�H` 1�h����, !�IJ�NX�A�0������%�)* #ӃM ��\��0,�X ��c �@� �v�2����f^]�e�����,������,���iiiiiiVZZZZZZUKKKKKKK��2�Y����eԼ��,�)u/,���/#?����Zc���n��0 �`�0(e���=�X3SR6
* %� ˁV0d�qP X aPS�L�3 ��A ��Du
MAS` u i�`�$ J�K��� 3AN`XX�$�$e*��A�x(����(gK@��b@P�qn& ��8 �i�#� ,r �\�#%�. !p$ŀ��Pk`0 s��pX�� �Ah�P� �L�P.\��U��d�@�"
a�S ��R�
Q�U�$�D��h��f�<��6�\��$�M��� X�5 *4 2��������rA @���8b�$�W<�.� t��V ����� �f (��%��A,�����C��4��Y�2d0����"H6�@d�XTK�\��,�x��,R`��@�C���"!@>@�x��d��Xj��ŀa��P+"�!�r0 B1� A�i0/$�������� ���TF,��;Fɀ| ����R�&��0�2�X�I ,"�
�� �QM�%�� �Glф@S�(T0�"��$�o��0N �A�zD��H;`�����VD�`FZ ]ʔ,
�Re�V#" ��Td�i���(��l|^P���F.>/)$>��(��>�G�H�iFdy#�̏��-,>ZTx��|�B@B�$R!� �- Ť#�<B? ��f+�������_���
�c䀹Y �b��/�" � @��0 qLdH @h�0���Г �0\�
L��is�I� �̰Yڰm�A��Y�h�mM.�DH�@��57 D%@F�@� ~��"��À�Є A�� ��h>r>##�Y��1� Q��@^� �� �g �!�2�A|F�6)��
E�B��@k�Pp��Z� ��N�i��id�4�2�`�@` �u�@f }*��9��d��#��<�k�`,0�hhB�B'� Še�C�hp�8� �@��J�Z��>!��AD#� %@"Q�>"�)ȁd"� XRz �*�8��FB<`8
� 8�)$�R����� ����ۜذ�07G���=�� �
Y�8"�ZAj#�<�F�`�� !@lA����pF
��_P�.�ha�U%��W���������<\
a�RP��,$�<�(�@T���UH�� aH*���t�B��+e�\l�� ��p���x I�,��� �L�p8"`��R�\�h��7E��l�sn � Ae"~@�x
IP8 *eAfd"@D�J�/Bh*�p ��,b��$E V�@"R
K��(,
C�'��2����˩v^Z]J�����������R������ZZZYKKK2���̴�����+----.����TK��̺�e���O!�������������������9��X
J���(h�?�D
x)����\��W �� t �K�u�4`�����V�b`2@#�#G� �����H,, Q�!&��p+�BL��2
��D4�X�h���$�`%h��@4`��Dž0�P/��*��*A��8)$��(B�T��� #�A�I`��\E���d
y"����D�� 8� a*��.à�`��T H����@@�=�.��\ɀ��4�9��Y��� �<9�+i��ZI�T* +h��2$��Z�<0�� -�\Ȁ]J�A$0��^@Ĉ�\$�L��.�@U��� �g�`(d�L�$���L8
A��@�@�5 A��4�������N���!p8w|S��6���֠������ r����V�V8��_TT�QP��� � �@vB�[�&�[��������7�<b��m���g)�v�l�����&��� .��|n�JŕP8j�UPDVX[TTª�UP�U*�a�� CÀ��0�#D��a�Ȋ2 1��h1�G��e"�. �"�qsI �� � �� �I� i9*��̗E�a�d�2��Ca�̰���XZFd�E!�ED,�RB�DR��-E��G�!��>�c�tw�o�����_��������������P�A@�(5$��m�Ͱ��[`r. N -��>�w��n��@O� ��ʪ�J���\%U{Ta'E@`�T1�*��� ``�!���c b��'�s��?-��v$m���;� 5�+����u����K���x���IUGU`ue���*��UT�UET`6*���� ��8�0h.��`&�)T �<.�HU ��2ƔiF�Q�6�q��qI��2��M0�C(�D�:�p�'�q:�l3a���N���D�K1,K(��I��#��8ڃ�7�(�'��D#���� !�Q�O���Љb8�#��6$��D�K��%��2�Q<N�u�5 �3Q; �xg �v'�Q<2�LL�h����"6$��8�F��liF�Q�4�T'���\ @'�$
@:ș �r���첗IvY�If]����e�e+----*�K)iiie,�KKK2ҪUKKKJ��)U---.���%���R̺����<�D�Y����`�@R� �pC��'��e����j5Q��n#Q�Ċ#bH�D�$bX�%��Mı,KD�Kı"�X��"51�����n7cQ��eFTeFa<$����5A�� �� �@"�?@I�� G�q$I1*�bX�D�&��h�C8g �� !� �E
(�"��(�"�(a��jC5 ��3�ؚ&��f&bX�%bED�G������ �8Q�0](�Xh;ø�6��V�a�Xw����0���kn�C����u ������?V���>UP���v�C�jTV�G�
�A��OD@�0�aF&a�a�V5a5�|�������M�&����<������p���j*a�õ�r�C�j+P�j��j B��R#�D�F�c$Q��4-e�عIA�v.<���$>��'%�}4�%�yD}��T���a����6Tx���
��H��T�ZB�$� Lj�â�C����������_���X���_�xU`E�V��l6xn�8�9�r���5a�n���8��WUT9�ʵ�V��T8V���7UP�j���Pu�%
�'�" ���aE�P������>j����� � � ��N�'\?�:��� �P�� ��N�?Z���=V���;Z�(#*�A=P�Q�ʌ��f4�J2ƣQ��n#Q��G��La�e$䤙)*M%%%AIIPRJNRQF#*6�5D�$Kđ$I�qQF��q��Ƙ�n#Qm��Gđ$Iı$KDlm���FRNI��IPd���2J��������Q�Q��#�؍���n5�FTi�1��e���
�2FX�,�K)ie+*��������+,�jZZZZU��R������̴�������R��ZZZZVVU��e��ie,�O R �"����E� F# eFc1��F�j5Q�6�q��c1vRNJI�ОСB�
(OT()%%')Q�ҍ(�n6Ɣm�F�Lj3c1��Q��n6�q��#QH�8�$Q$KĬL�h�$���c
/&�������II�����ɨ�a�(҈�I��3��%�"F$��F#�؎7���׷��v���u�?·| ��z�
��!��P �U]Aq�UT *�U ��*��UQTT%UEQP5�����M���w �|f���s�(���z�k�9*�U��U
�� ꪢ��$������`��(�F��n4#a��S('(��r�H`N.ap�\<@h���� �  �4��i=$�rBA��.��.����`s��%G��*-*HE$!"B"��I
$"� �E��G��<łq�p�о-���������Z��������zm���p2w|(]�V^�<���)� ��E�V
��kV��:���Ҫ���z*�*� Ң��@�[Kp�������o��O� ��_���Ԯ�XV���֪�����kU\���*
�*�1b򌜓B{=N�9��ϟ>}B{B�
$��������)*
J��h*
��B��A�О�����$�"��Q��Ƙ�b��M{>��>{B����(I* ���Pd����������
(P��Pgϟ>|�r�:{=I2JNQE�
1"I �A#,^ZZ^U��R5,�e�����������e���������iiie--#eT���---,�26U%eT������A!dJD�v���E��F"줜�A��3��s>z�ϟ>z�B|���AP�=�B�
'�(4(3�����Ϝ���)��9Ph)%')Q��i�FcvRI��S�PS�
(III)))9)5'$ɩ99996IIɲRrRRL��
(P��T�4�����f5Q����9N/X�b��b�~/q~S��.OR������1���Q�����c���Ң�5U�m�3q�/�8����^���)�����8����0�/q}E�.�SR���/UⱤ��"F%�� F��Ah����\x]��\y����$d��G�iM#��}#�fG�S#�e����ZVTx�� !R!�B<A �HH�Z@= +�(��X��,q�c���!_�����Q�NQ�+)�\�)�\�'r��'��|���)�EYMJjQUJ.Q\�Ԣ�*�
����1�5lc�q�3X�cUcn1��/����_��z�ƣQ�ƕ���U���aj1ƕTk��*k:t������:|�>|���Κ͜��f͛6lٳ�Nf͝9�5M�:j�:|���=OS�ϟ>r��)����=O�9�ϟ>|���{=�>|��Y�f�f�S�͜�N�6lٳf͚�3f���O�>|�|���:{:t�ӥN"d2 ��iivZVY�eeRU�Ҭ����+----,�YiiiiU,�KKKJʩfVVUKKJ��%T��R���ZZF�!�ȤfkE�3YӧN�:s:z�9�=OS��t�t�Y�lٳTٳf͛6lٳY�f�iSgMS����{>r�=�9N�:t��T�9�>z�>|�{APS��
���N�5�9N�:l��t��ٳ�N�͚�N�>|�B��=Ph3��>|������$��.��|o��|k��|g�3�kZ�u�b5]V#U�X�j�Q5h���UUUD��5�q/|G�؎���q��?�z���iU|kU����mj��%UUbMj��H2(#�tJ E�0�hB ���@�.'b�q��0'(i!�B$�@d�[@\֓�K���s tLTK��0�� , �0Tx�a*<T���1
H$"��RD�"�.��ѱX�8�B���TW�������׾�`��������?b7�7�k���������]F?Q��Q�U�F���u�TH��X��m���_�_�=�7�������\oU�:�V%�Uת��UU��*�t�:t���l�Y����m3T�Zfͥ��͛6l�i��f͚Ҧ͛6l�l�lٴ�����������{=��S��=OS�N���T�if͛5M��͛6m,�6m4�M3f͛6l֕6m4��Zf�i�MiSf�S�N��N��HY �A".ZYJ�2�VYJ�YTK2������#I �@���XŌX��Q���dh�R�VUJ��)T��eeeYiYfZDy
��dJD���oj�NS���Y�f�KL�L�K5R�6����Sf��M4�M4Ҧ͚�6�T�iSZT֙�4�f͝5N�:s:z��Ϝ�g�Ӕ�f�͛6lٳf͚͛9M�6lٳf͛6l�l٪lٳf͛6m*m3g3����9NS���<�}g�w:���?�͹��o;����w9s�g�z�ꂹ��UC��B�J�J�7C�Ϲ�
����u��sy��w7����w?��~�UN竞�CT*�Đ � �%bQ�)�|i%�1q⒂�yA�tI��g�g��a<��١2���ZB�i h� ��!2�(��a.d��X�aQe,:D�i �x�D<B�#�(�������qE��%������������>�\�}g�}g�w:�s���o7����W;�ά�z��竞�z�V}U
�.�B�s�}Ϲ�>�V;���s���M�s�?��z��Y���g�� TT���M4�M4��5SM-3U4�wM4�M4�M4�M7j�i�T�ݪi�m*k6�����f��f��f�i��j�l�K6��U,�i�ۥSm�M6�4�M4�M4�M4�ڦ��4�i��J��i��T�*qHT�B�Yr�UJ�YYU+-!4z-c�UEQTT�LT��+����*�⨮+QS(�EQTT�j8���"U��eeeYVZDy
�� �D�S�`�����i������������n����T�M4�M4�M4�wM7t�5�kL֙�3Zi��ZiT��K5R�T�U,�Y��if��m�*�i��n����4�M4�v��M�M�M�M�MiSZT֕M*�(���ÿ������U�Q����]V���k�]UU�VuUGTUj���wOw���G���Q���C���W^��`���UUk ��kZ�@����a��"��� ���* �ؠ��1I�I��Ĥ���  0p<�P���sć�4d����L����e�K0D\t�aQb��.>X0�"#��C�@�#!Y�- QX\��8G<tB���«�����������������U�^��*=��l)��|���i�����5Z�UU�Q��EV���U�UF��P,��7|)�w�
w��������Q
��� 5Uzֵ���Uh���[M4�M4�t�n��M���*�n��4�M4ݪn�4�j��[�KtڦkJ�kJ�kJ������������[t��m�U6�6�4�M4�wt�KwwwM-�ڥ�i��i��R��4��d2 2<�c�lV���*�ةSEJ+b��*b�(�����Z���+QS�R����ELU(�"�Eq\V�j+�y�H�C!d24K��pX��g��U�M4ҩ��m�n�Wt�n��M��M4�M4�M��Kwv�n�n�]�i��i��T���T��KM4��mҩ��i��U4�M4�M4�M-�i��饻T��M4�iT�iTҧVw6��7M��鹵����y��v��W7SW5t�M���V���کڝ�\�����zn��ͭ77����y��o7����n�Y�����ͪ�Y�S��II
� 6�g�!�@�4\`.d��90�M� dԐ\$d��s8-� s١h١m4��U�´B�3!h��K�R�h�� �Ը\,i[*Ȃ���9\"R0� @Z  C���ab2�5�����X,�_��k��Y՝Y՛��-��skO6�y�����y��j��ۧ�j�Һj���ι�:��w;�sno7�Y��o:�y՝��s��7S����n���j�ک���9s��m*ۻn�Wwv�ҩ���i����T�Kt�ڦ�饺n�-�wKwv��i��nۥ]*[t�*��Sm*��SM�wwwM7wwM-ݫ��[���Kj��^U�U��"�),9�\W1Z���*c�E�q���*�TU1Z�⸮+�⸭��U�TV����#���U(���W�j9�"(����*�U/0�X,q`��E�?M�wwwwwJ��]�7wM�t�M4�M7v���n���������i���U�J�SwJ��iT�t�M4�M7M4������[���-ڥ�Wj�T�����������w��ϯ��ϯЭ���U��Uu��UZ
�h_m�y��:����?������|^�wUY�ϯ�� �6H���،8��n6@0��b2i&%& �b4!�@�<`���Ē�<Џ4��K�L��,d�KS%K�|��q���#*���AF8F��7�B�hb��1� B��� Qi_^����X,�U���W��_?��v���������9}g>�Ϫ�z�Y��U�g��_����������?��U������Uj������P��wwwwv�Ү�ۻ�����������n��T�Kv���-������Ү�wm�t��[t��wwwwwwwwM7wj��n�]���܍H�L�,b�)Q��C�KG"��+���*�TV��r8���TUEh��V��+b�����+Q�H�r+H�����Eq\W�E(q"����u)�H߫������"��������Wwwwwwt��U��wwww��������n�n��������n��UݷJ��V�6�4�wm�����ݫ�T�v��T�j��]�ݫ�WOOOOOOMͭ===5�����v�z{�<ۦ��j��櫚�mӪj����mf�mf֛��֞�kOO}=7OOO5Z���������h
В �Xi��cAdl��\&Ʌ�ra0NH-�2x�t����!m*h��U fY�2 � ˅�ƕ EeB`��-�H�����BГQ��,<Hʊ��R���_���Y����_�OK�Ӵ���������}5���]���=+��t�S�ҺzuOO6�=7Mͬ��szy�=���}��i���zk5Z�j��kJ櫧WwwwwwJ��[w�w�wv������v��ڻ����]���vݷm�w��������������-�-����wr5"�H�Qi1Q�$CbC�KEq[1SEQK(���c���r:�Ȳ:��YGX�r9�(�4T�**���(�+�(�!�5"��2)�E#�����\^��������������������ڻ���Wwv�wwj�������wwJ���WJ�黾��������������R�-ڻ������~�/�������묗]Q��'�Uz�T���Uԣ�;�����C�������/��ֲ}}V�P\@6$4H� � Ƃ��n6@0�
d�d���� I � 0p��$�OJ��r@� �D���K,d��b�BE�ˆ2�Ҭ��Q���<�t�%��R�h�<��A�\E�CQ��(Tx��Tx�������`��Z���������߻�d��������ּ�}k]Iz�z�MV��Uj�;��>��?���������~��}u֫�U��Z�����������wwwwwww~���]��۫�wwwwv��������wڻ���{���������ww�������ș�E!Q􊘊�!�8���+�⨪*��R�QZ#�9Q[Qȭ���:�qZ�G�G�q��*�TUEQTW�qJC��*Q�HdR)�H���u�"��N�������w�w{�wwwww����]�����ޮ�n�wm�t��Wwڻ���������������n�n�ڻ��kN����[゙����゙�v�u}�_uW�t������������茶���}��}�ӫユwZzzWM�h4hP!<1���d�!&5 #dcp�&�h��Z$� h<.H�k4-���ZB�*�[Y�ʙ �f�cJ���T-� ��T.�Y &- 1��Y*D�,*-,++,+,��o������)U����Z�5��n����}�����}���:��uW�k���ZWOM�zn��������Miレ�}7}�����o����T�SUO�wwwj���ww��wwo��{�{�{�����������]���W{ڻ���������������G#�H����<S"��Ñ\WEQTU(��̎G�W��"CC""�ElW�(�Vh�ELUEQR����Rx��$S.C!R%"�)�G������X,���������]��j��]�ڻ���]�ݿ��~�߻�www��n��w�w�w����������}]��������Ͷ����t�7����]i����[���MUy���/\�����7�7���O��O��O�}V�|�[��U��V 0�P@%�<���(�� D#A������.H j�0�� ����sle��p!�U,��5EL"X��b�KȨ�S%�����#��8��B���X�s%� G�"X|���������d���U��U^���{��鿧�������?��+�i�ZuZ���������ככ�?��?���������7�7������j�~���������www�v�v�~��]��[���{��wڻ�]�������wwo����ݽ�܊G"���C!��#��C�qIa\V�TV��*���)HcQ!�!�!�B� �`�`���cb�E**����TV��"��EQ�� �C"��)��������� _�������{j��������wwwwwww�������۫����Ww}���]�H���wowwoww}��}��w}��}��w�}��}�Z�W}��z�T��}�����������}��ﺫ���z�}����(
Og���T(� �  #DB�mxKi�$qDŽ�ǜ3� ��>7��j5�9TfY��.\�I0\%��.�)`�@PZ��H� b"�)ia���Rㅥ� 2����_�����^�������������}��}�dO���v�]�����S[レ�Mo����������W�U�Ү�U��w�}������ڻ���������v�ݺ�{�Wo����j���^ڻ�W����������߻���������C!��d2 �Eh����+b"D���y�� оd00� *a� ,0(`P�� 0(_4/B� ��}DDDEj+b��EQ� �2 �C!�ȤR5#��������Z��kZ�������ڽ���{ڽ���"�����v��������j��w���pY"��~����Wo��`�XA0��������������D�'����v����w������������������������������_�����������������������������������������������������������������������������������������������������������������������������������������������j$�Vp_�!��I(��0� 4�M8��8��8�=�;�<A��� ���<��<���8��<�Ï�H����?�S���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������(�̏�\��H�ŏ���4��������<��������<�?��<�8��<�O���<�4�N8����8��<�N<�N4� 8� 0�4� ,� ,�L,��$�I(�H �I �H$�I$�4 c�v=��c��G���30�f7$ȡ2I��H�cH�*II EH�(I$� �u:�V:��~�]�3��?�x�xܙ��I"�3 �l�d����p��� `�(�6H�� @� �(8b�B�� ��B� �.����f��
���"��@��dT ��D� �"pH,��&� �L.��d((��a1@LL
U���7[����� �y�g��$��6H�d��$l��I0 ����,z�[P����7?<�o<W�`F�EةC$�Xؤ���V=���
��=G�w������&Erf+$l�YIIF��$T�"�����ő�Ǐ<x��Ȳ����Ǐm��=�=�u#��:=#��..9�G#ţ���ȴYG��#�E��q�d]Tr9Q��9Qʱ�DZ�ǫm�����E���Ǐ<x�����$1 C�/BP�= �>��d�`�6 A�� �4h:���:���:�GA�i � �`�4� �5
!�$���% @�/ C�2�y���y<������~I���ɽ����G�,�:<x��mX�=�lx��Ǐ<x���DZ�-�r<x������ǎG�E����qdYGE�x�x�{��r<x��Ǐ<x�����x�����E�#�h�\r9�E�� J�xo q|\��_��|_Lab䌱fE�gd^E�F���L�� 2d4�i�� p� p��,{��|_���c&.Ŝ_�y��,�y 2d4�i�Ґ�"�aAh�HX0 ����H ��h�P������,���V:,��⃀��������h�P���T��|+`�T!�80�����B��$
���\T2
���P@P�
K����3��o3���O?fL�I'�̙'˗21�8�F4d�V3G��_��s���X�/��y�yH�p�H��X�0�o p� ᲆ����Ɍ�ɋ���3��8�0ȼ��‘��,Y���4�iHi��Hi��#Ǐ,�"Ȳ,�#�rڎ[�r=�9i<u�H�:=#��:::����ȴr<\r--G��#���E��d{U�G*<r��,z�G�����#����#�Kc�-�E��h��dž!�`p����/!(<`"��A ��A�j �b A�y�yA�zA�6 � �4���A�`,�� ����(��^!x`�`hb���/%��Y�>�333'����nM&���N<x��Ǐ<Y��mZ�c�<x�H��Ƕ=������<Z<x��Ǐ<YG����"�踲��r�z�Tr<r=G#Ǐ<x���:<u#��:���E�"�h�r9-�����
�����x+�
点੓ �3���!���
�� ��`y$�@�4���`z� ��)��^�_�]���ق�0T�#3�+�$�ę$$� ��8`��B���P�P�р Qa�� �@P4�h$ŀ84qc��pᣑ�E�^8������� �DƣD�@
����h*$&�p�p�dHL0(��dP4LT
E"��@@P0(4P?�ٿ=���y���&L�'$���$��9 r��\�V�U�o�W<��M����I�!�$�S2@�I$�Ӓ@��[�|~
�s`��/� � � ��d�II �9 �cI y$�@�4��<x��Ǐ��ն������lx�Ԏ�u��H��R��[c��"���h�x�tx��<tY9m�[UQ��G�X�G*9=�㭱���Km-��x��Ǐ<0C�Ca ��Hq�,,�BA��>A�A�l��|A�>�`�6 ��r �<���P A! �**"DbCB��!�!��e��K�>K�?,�g��g�'�'&瓓{ܑ�Ǐ<x����m�jՏlr<x��ǎ�=�����m�����Ǐ<tYG�E�V��9j��=�Q����Ǐ<x��x��c��R�X�ZR-�G��G#1�_(�~?(��b��/����dY�fE�qe#�E�X��|Y$4�i$4��Ն�v/��s��\��|_���Ŝ_b��b������da���Ah���ń84q�� 8ㆌPh�P��-8 G��〰x�:8��z�z`:4q�,�c@Z+h�T ��
��`�����Q1P@h��4hѡ��Bb�E��T@P�g�g�l���o?<�����I����&I9<�r�4gŬu��~?G���/���/������rH�G��#�Yc�$a��a�Ռ�oc��=���_����q�gqyX�/����g��G�.Hi��!���Ǐ���m��������ǎ�u#�Km)c��ԤZ99<x��eTr��V�#��Q��G*9Q��ǎ�Ǐl{m��m��<x���0�1 !�,8V��b1�D�#���9 �:�����:�PJ���8ptA�qq�D�E�@�F#�°�,40C1 Ϟy�����s��?�3'��=>��97��q�ǏUm�ڎ[c��G*ڶ<x����������R�m��x��ǎ��"ʫV��Z����c���c��Ǐc�R=�c���Km--)�G#��1�;�իځ;\o�)��@��%�d�9#I)$i0'1��1�@d�$��4�5\~���=�;͏`S��>rg�9����ɒd�&9�I�X�`Lqc����,pÌ8���0p&,0�`�`20,X)ŋ��8��G8�c�Ɗ� &4TTLh���EEB�C"�������`Pp�dT,4Lh"4Ph`h�� ��  4PT,*&*7��+߶�m��7��7��32f�I1Rd��d��d䜀­����j��}���?��RfK�0<�&�Lə&7 1$�VI$�ͼ_x��w�oo���r{��`��2I�$��&I��2LT�4���m��c��m�����iiiic�JR���Kc�c�cNjE��ڎZ�[V9m�����V�X嶑�����c���m�) C��B��+��b1�F#DQLXDhA��t�|A�J A�t��: �>!�b�$D���F#��b0�+
ġXX�!���<��r���g������'ɤ������G�V�m��m[jՎ[��c�������m��m�x��ʎX��[j9lrڨ���c��z���x�:=��-��:���c������}E�?���{DZs��.�t��Y�29�̎IR?d~,������(�^���-����_1s1sŖ<��y��̏�8��8����� �-� 4��G� c�G � �E��ر���t #�Us@}�>d�c@�@�@�@ب �
�A��P`�464644��hDi!2*+���y�y��~f�<���~�<��r��\ȽG��wG���ZQ��.c��\��<�8�G�?R?#��>G���q�.b�.c��=������_��|^E�yŒE�s"̋,rH�GȻX��m��m�ڎZ�[cն=[c�u��Ա���������Km��m�ڶն9�G#��Q�����=����Զ��m��m���h&�D��+
¨�F#�Q�@�"*%�D�Q(U
!��C�CCƅT�D�Q(�J",AD�*Db1�*B��+"PL�d��Ig���Ϟs�?�������>�<����[m��m��m�c��-�[lu�֖�m��m��m�V��[j9j�r9��c��z���x�:�:::Җ:���iiic=�^�WQ���5 ��y�&�d�F� $�!��$a%��)1��If2ˌ���q���� ^�w��� ��r�a7#'&0����2NH�Ȣ-uE�-GqŠ,E�,���,,B�B������As��A12H
���h�dTC�EC�, �Ɗ�4h���I @EH�����������<��7�g24�����9&NfNH��7c�.�.����x��|�ټa�I�fd�2FNLY�Cm�=����oa�6�gx�I���d���y��d�I���Hl���m��m��m[��-����-�����m,u���m��UV�UV����i�[m��m��m��*D�Q(�ID�hZB��+
¨�*��bDTJB��A �2��8RBd@�aXT�DE�"1T�¤+
°�,BдJ$D��J%�Q y�.\�r���g?�33���4�NNNNNN}�Ku��Mim��c��m��m���m��U�m�j�c�ڶ9j�-�V9c�z[mv��:Җ��Km-���c�~>����?����s���r�>Y������|�)�d~,���\���~-(�~?�����<���~?�q�?��s�q�=#����C�z��IA%A��`� � E���� N�[^� �����H�0T��EH�<T���A"H$5H$cA1by��y����y��������<��S)�˗�H��>�1�}���~?�������~9��>G8��t�����c�r���\Ŵ~?DZ�o{1�����dYc�Yb�#�H���[m��m�ۖ�m��]��m��[lu��m�������m������n��m��m��ˑ�Hh�J%�"H��aXV!h��1V#��d)
B��&B��)
B��&�!HR���F��bCBЪ�aXV$D���D�Q!�"�<�d�Y,��y��333'�<��I��i99��Z[���m�����m��m��m[m��rڹm�ն�rڶ9��m��m��m�����R�im��C�>��=[�j����o�y�ӒH�cfH�H�1�$��$��mT]��c�Z�� �ox���k��$�܀�cI�999&*Li0C���ÀN���h "��Z88�a��c��G|q�m��f{�'���(*6EEEF�����C"��D�B¢cB�EF�� EH\h�B�a�`����_�������1��4��I�bs$�2Nd��4������������������3$�Ɠ�4�ә"�I0Z��뷋w�ݪ��������$�H�`"��H��91��f�Kn��m�������.GG[c����m��m��m�9��#��������m�.\���"���(�*D�$I
¨VB��H��H���H��!HR!
B��)
B�R�BcH|DTH��HV�HV!X�"D*�D�b%D"�.\��<��,����������4��������Ii��Zkm��o�m���o�m��r�[nU�ڶڶ�-�m���[m�m����m-���m�?�����>���|���˖JvH�"̋29��?��s#�~;G���~;E�[E�����������q�?�����$zA���h�ЂPI��A��,<px��p��m dŁ�bh#�G�%�3x#����P2+����pب<T���b���4cA# ��h"&8� '?<�6lٳ�<��<��?d�瓙&fI�s.RL�G��>�Տ��������^��1���$��8��;$}c��~:��:����y��{ُǴ�G���"�H�s�Ǥs֖�m��m���_�myk/��m���m�m-������wu.�n�����m��m��Ȃ �D!R% "Q(�I�H�H�Q"�aXLXy!(J��B"Q�B��(,% C��&*�aX�"H�*�D��J% (U��@��.Y�������33��3>�9��Ͻ�9$�Km��m��]m�-����^[rչm��m��m��m��m���m��m�ܶ��m��m�c-�,�Ǹ�le�����G�x�nG?��$�$�#'��Nc$�c5q�����j�j��͏�/��&?�g2E�r2NH�,��$�R0 `0�Ah�:�����,q�E��X��i E�ŀt8(X]�{��{��*4 ��p**��
���QAP ���F��Th�CF��=�Ș\Pm�?�����獷��6~7&cN��s$�$�$䑤��/�ev-�fſ�~=����?���$�&�M�2rb�Ɍ݌}F]�YTc��������?���If39�'22rKKu��im5���m����Y~�m��m[m��m-��m��Խ-�-���m�Vն�rڱ�AD!R$Bв%�"Q(U�D����BD% �HJD"B!�D�
BD' BHL�Ȉ��%�H�J$D�P� D��!"@��R���yr�yg�s������N}''>��I$���m���]~߷����~��r���r�-�9m��m�^�������m�u��m�:�j����y�1�}��{����r��RH�G2?�d~=��c�~;G���;U��{�<���r���8���{�%�"1�F
�� Th$<pHtpp��^E�ɐ2H�d\p4,ML�'x#�� "�P25��|U�A!�T��FA"H@ƃ�DȘ0R(y�f͛7�g�y矜��O'<�^�$�2L�Y2N�~��y�?G�����{ޝ:w�c����s��%X�wG���}���y�������{�9��?��s���ɭ5���m��n�[m���e�Ym��m�ܷ[m��m�R�Խ�m�����m����ʹ��H� �D�Z$�D�Q$I (�@XN��"Bp�$��A�E"1�"D��8H��8L���' �D�P�$D��J%!h�!"E�̥/3�\��S�9��O�>��'>���ܒI7Zkm����~�t���k�_m�nU�ܫ��Km��-�����-��k��-��[m���]���z������7',̐Ӟd�I$�l�d���cd�����X��������������|d�i2LI2RcI�\0,F��l`�<G�� `����"�i�4����88�<d�<N*4�D�B¡�P⢓�ux4hѢ���di ����q@��&(0P �
X���W�����[��W���g>b�ɓ$� #I�#I �l���۾3�����?ɞ2I�d�*I&d�`�$�$��}6�����~��
����zL����g t��I08�٤��ii�5���}-��m�ח���v�m��V���[m��oK�R�t��o��_�m[r�U�
¨T��b$B$B�$J%B�J��
!8L��M �B��Q�@�"1��� ˆL��4&��BB�)
��Bȑ�D�h�!Db1T�rR����g?3�9�s333>�O韟I���$�Zkim�������������]�nU��ʶ��m��n�[�z[m��o�����m�ڶ���Ͷ����{��)�N左G2?�RH�G8�}V���v����o{��/N�{�Γd�H�I.A��`���Db00h��B
8@x��iD�%)S i�B���x���h2H2�*��P4*E@�.�*P4�r&BcBI �(�@`�
C�<�f�<���y��y9����2OْfL��$���j����7�{7��[r����i$s���r9܏Տ�h�v��{����{ӧr��Y��2?���9�Mi�-֛��諒��]��~�[m��mU���km�R�����m���o��rڹW*�I
�1�F!D���P�- DE�!B�!HN!HR�P�К (#"(�@`L��Q
!HR�М)
B��) BдJ� D"1�F"FJR�2y|��~S��9������d��9�rI&��[K�.����������˖�Z�*ܴ��m��w�������/�����m��V?6/������~{�?��)31��<����Nb���I$�U�w����~?���x�����G���9̑rsI��Ic�� X�X�`,` ��8
�@�@NF�� ���8 � q���G #�QAcDƀ�TLTh���cD�Tt��G@Wc@�h�0h\Pb�qB(@��������߱�������o���l���Ln|l��$i&Li&I_{����{�?����y&�ٞ,���L�.L�-�2���E�����_<^^99�ϼ�|����I$�s�SZkMn�����w��w���~�V�ne��m����wt���-~[��m\�*�\�&�D��#��b"��dB!B��)
B��@�!D(���"B��@p�)
�
�
D�)
B��)"X��h�!��b1"$�A32R�3%���|��9��>��?L�?&�rI�.����~����������~��2�嫭���om�������^_-���m�jܱ��Ǜm�{��o�ޙ~Jw/N��RH�G29�������v�{����{ܹ�;ozw��$�i%����h@tX<X���р��`E`�A l�2́�ぱq����hx����D��b�hV4 ��@���6�6�6�A��*�I E��P*4T *F�Ɗ�<�g���y��7����fIɒy<��9&I$�'{o�o�������˖������I#�r�\�1�������{����ӽ���/I#�����Zki��n���K���]�ח�e�ګnkm)m�R��/K�w������[oܫr�U�!�/�Q(�#�ĈTX�B!�D"R�D"�D"@�"�‘AD!B!�B��B!�D"�**$��b1"%�p�2E%)y�2��9���<��~d�OL��O�I�i$�z�kJ]i��߻�����������U�iu����o��ޗ���������Um�V�)��o����ƀ�3$�����9!��L�fI�&4�
�jؾ�_��������g�S�2L�l�Ɯ�0
�XPX ��(�,PP ��`4J�,�8@��� c��Xh��Gc���P8h�9���$Vab*4.*&4
�EB¢c@����DTHL�dD.��\. ���@� ��` �`��\ �����pq�����<d�̓��<��
{�����o����7�g�& �L�$�I�ff`{���������)��g�d��g'"�<o=����im���m���_��[���m��m��m��m�wn���m���m�������VD� "(�F �B!B���� �q�0� �HB�!C���C��:���!E�#ÐH �EB�R D"!"1� "?�?���`�����m����iz[��@��k�m��[m��j�V�wm�-��m��k��-���Km���wc�������r�c��)Ƿ���y#��9�8�>����;��om�ͷ��zw�{Ӥ�8�>G�� � ��X0� � `�`�*0��`� �����q���\<p!Tp-���RH��*ᱠB+CF��QX� ��Z�a�06 �!t0 �40C�Ȩ`"!�������`�L�������m��m��{���?����ӽ�^��M�M&�������y�y�������~�������?�����m��K�[��w��m��������m��m��m���Է������o�^Z��m��%DQ�F!D�`�A�t &!�#�0�!��<�C����z�P�#�#C��@4A�tC�D���D�"B���?����9A�����'�u��woK~����m���mv�rۗ.[m��m�wm�n�m���o�{k��m���x�����������#�ُ�E�8��Y�91dӋ�Fo��=��x�����/������|��9&2K$�����@P�0�P( ��5 ���8`��8444
���h$0Q�8��`8���$\� ��ThEƊ (����Q1�EB�`P0 v
������5����d`��dHL���dL. ���{��9 �眞fy�y�~/��q����{�|�����|��c����E��rrF�_x������_���1ɞ<���f/���3�]m.�o�o�-�����Z����m����m���Ի�����k��~��ܵnZ�B�+�bH�# A($A�|��| &���aF�r!�|8��#�0�"C��t ���>�H$�PJ*#"D+��%�����_�9��'�����KKKn��/��略�m��o��^Z�mZ�m��K~�K�n�m��m����Yo�V�m���of���{��{��x��rܽ�ӽ��I���m����x�x�{��{����˗�m��c�
��h<4X��
BŌ�����,�pX �a��Ttp*:888j� �
�hFƁQ�h#@\& ��`�ZD�|P��!AQ@��EA�cD���2 � ����??������y����ɟ#�y��~����{���{��:|����X�;��w��{ǛǛo{�����[���^>G��iu�۾�t��[m�߶�k��/��e�j���~����.��m��k�k�_��nZ�Lp�+"HQ!ÄHF�Pz A�J��� &�C���t:��|>���t:�C��@4A$�� A(%�0�4>!Q�HV�cg��������s���������'��K���wM��Km��k�+����ն�[~���/Kz[o����mv�~��m[ ������������f�<fs��T��3�S��߿�o���3����d����I��̓<�h0cB�$
�B�� ���`" !�P�� A@2 ��`��,q��E�0qc���*4Ph��A�cE�$(4(4`D0 C C"Ba��q0�@����`P��`PDP0( � �a�����=����g��2d�&O�<�Ȏ�����3�~3����x�g猒s��ɜ��N
��� ����?�,�7&y����H+��-�n�[��/���u�����w���^^�{�_���7wm�m�m���������ad,DG�!�D���HE��PH��0�z�C��C���B(t:���D4�y��B$"�C��rC�q�� !b_���������3���O����'��R����~���o���oߵ�����ۻ~���ݽ-�Km���]�^߶��-�l߷��f���{�.^9oL��ӹm�ӽ�f���{Ǜ��ޝ�{�ޝ�sN�o �,Ţ���X������`�
ph��>
 ���.<p.:8H�Xx�Y����c@��hF�q��B( �dhd����" ���P
�E����T�H�*
��������7����?�����/�����~���{����{ܽ�L�m����-�{���{�<������ۗ�R��^�ܹzw�����~���w�ז�|��|�_�廥�����w��������~��_���DT>���(JC��B0�t:�HB A�@L>����|:��y!��t<�á��@4A(B8�C�Ќ"B$8��J�����|"//�?�����������N�.��_�������mo���^_�_n�]����Է}����[Y|�_����������{��������s>>d��#�w�/x�c������������d�'I��%��� ����ņ����h��`����B�J,0hh`�C@�h ����(�᪀� t�I�쀔�&4h� F��d*�2 �D� % ��� �@ ��@Ȩb��R*0�dT����{��?���g���'�$�2O�������x�c�����y��������$|�#��{�����?���㜓s�������������wK��m����{�w��y|�j����zn�������m��^_�_���Pb*C�|:�a�:C�ÄaB$"8A���Ã� �2 � �2 ���C���p��ЈЊC�#!��r�a��zC�����?��?��sO�����I��K�_��~���-����w�v�ז��/���wwz]��m���k�_/���k�{7��~�8����L�zw/N��l����{����i>n\��:[��:���G��������", �0�F!�DA@D ��1`T��z9g��v`,�<��X��CC D' �e �P�ᘘ���T
�@��ⱠF*EtH`�������͞~�<�?��g��O������������>Jt�KoKO��o{����{�8�ޝ�ܽ�ޝ����K�_�m��Y{]��k��t�/K��Sw��>_����_��i!�C��rC�Њ�at:����Hr�B���PJ A(<�PJA(%���PH`F�D��q�Ќ#�$:!��!Ã6�������33?�����?�����/��t��9|�+�������_�������������������� ���~fd��L����L�����Wo������9��3�3��<��L`L�&`c��C�� 8�����0�a�L4�@�h�у#��@�@G�I7�;�!�QPȪ*(& �Ą� ��Ä�1PHTLT,*&*$* 4Lh��p�D,7����7����7���<�L�$���$�_��{�6<��3�3s̓�3�3�;����௿���+�r�fNrL��s�Ͼ�w���/������|��|�~�������w���w��k���/�k� �`�<T>�!�y�P�:�0�"C��"0��!�t �9�r �A�qA�DBC�#�0�t#��zC�|> �7���/�g������O��O}�wK�������������_ϻ���^�������m��{^_��~�l߷��`��?��/r�˔霝��{���~��q����7��`:�x�10&�#���.<p,<p,9 ���" C@�4pP���T4a���@d ���� �A�V*�@"�E�:�c@�242BdL ����*��@��T�H�$��X4,�b7����y��9��>e�&|�/���o~�������[����Z|����{����������ze���/r������L�����v��+��t�/Mޛ���rf�����A�6 � �|9C��E�C��D�!0�j�4A��I�I�|A�>A"A" �� �5P`d#!t:�Ht8�������lA�����������������'�~��M����/��^W������/�������-���/����_k��������������7�9'�f?{2M�����������s�3ٞ��>x<p<`x ����8c�`� �!�L4�h"��Ѥ4��@��@PHp� $�%�k �d*d �h�����b` ��‘�b���h�� �A` ���a��L-�����������g��9��3̙7ɤ����������?=��L�_��I�7�����~{��������~�$~���<�I�~�����m���-������߿|�w�߽7���n���m�/�����: ��a��(|>C�qC���t ,�� ��A ���|��|��|�� n�n�!
�C���|9C�|> CŃ`� �<�������?��33'����������}�n���r��W������7�����`����w�y+��߷���9K����e�w/Ͷ{{�������93�L����P�X��<��0< (��ǎ�Fq��*0Z�@<2�����Lp,̀�����@d�@< ��x��h*&���F(�q��F4�QP ��t�`@ 7�����������;<��L�Y�&I����{=��ٽ�{ޗ��g%-��rR��o{ٽ����7��K���ӹm��9-����o�r����|�+�߿~��7M߻����������@4��� !�BH|>�����y��# �� ��� A�A�=���!A ��0B ���|>���"85��:
 ��������0q�������{��t�~�����������}��+�wM���ݷ��[m�����/��y^^/��?��������|�x�=��&g�"�I>x������������?=�>s93�O$�N0�x(���&`6,B-�8 ,X��Dȩ�h�`phP h 2�@�Z&*LHL8LH2�2#Q�z:�@
����b�CE�cE�'
���P ��B�������7����?�Lo�����$�31}�����������ٞ9���Y2g�L_�_�����������fx���$�ɞg龛�����[����������]��7w~����w�m��/�~W
ĢD<4A���$<����$��`� ��2 ��0F���JB@�%��#`�A�2 A# ����� ��(z!��`�:&$�B��~?�������O��?���|��7K�����@���}�^W����n��������/���ו�������������i��?�Jt��R�/{���~�߿~����{�79�so$1 ,`��|(� �8G�B�1�864CH���Ɔ��l`
CP� ŀ�?�:*�@R"`8'�1ƀ�P(�8=,4
@$F� �T��\2 ��D�E�dS3���y�����O3��������^��g�����������ߛy>��{=�������{����o�>Koͷ�~�����������y]���ޛ��M���`㭶������(U�P�"8@`:(��2���X1 �2����2 �H6 �B�!���`�A�D�$ �2 � �(M BP��� ("4*B�J"\�?����?�L��������O������߿�w���e���_��?+����������m����������{���=��s�L��s{�d�<ܤ�%������������o����2��|`0q�p���h`0�P8�8� G�ѣ@�F� 4�0�h,444 r���0�9� �0��p�&&&& �dUT�;G@1GBlT�AQ��a���11@����E����=������������g�'�fO������{����ٿ�g�����2��~{�����=�|���/��Ǟo�~����Ǜm����/�_+�W�M�w����������8�_+� D�Q"%
¨U ���4' ���`�: B$8� ���l��2 �A���dA�l�!�E��6 �H4�HHT' ��&&!R�B�(�-��~�������������|�M����������������]����[��������[_k�~��������������?���g%-��͞�������K������g0���x�`<d`8b020�@�� I@^F�4d$��b�ㆎ�Ō`�4�B����&�2(₢�\h��44TTXh ��$G�"(�Ȩ�`�P(E��@HR(�~f�?6~�~�����Y�/�9|����߿�f�Ɯ����Ks�[�of������������9)�~~����������������+��n��?�������m���}����(Y�P�J�aX&BÅaXV�b0�+
�0�+
±<px��6 �A��64D�aXV�¤+
�aXV�aXXh&�aXV%
ĢP���|�_���s��������?��'��}�}>���`�������������������������^W~��8��������y��N~I����`�����pq�
���L�������(
�� a�" `�P�(PN
`���(�(�E�N8h�p��`Qh-��z�#b���!�(4⁁PLT24 ��ƅ��P�pd,a� �xdH2�d,&&bbA��dH2W����Pq�
���I<�2O?�+���� v4K������V'<��<�)�o��,��Y������3'�s3�����o���m��[����~ח��~ޗ������Km���-�߅�x' !hZ��d,��Q(� �!�FBd<�ȄB!D�B!"B!���&��B �`� �D�P�,B�- Bд,A8^����0tG����_��w����ۿ��m��/�����߷t����m��m�����o�����{���7�����r��������\��{߷���f����{ܽ/�����0T4<52 ��B��AcQ��x4L`,X "��YG#���GV�-�)$ L�����Q���"�@*���� �bb�����@LT2�� �Ä�a�d2 �?�����_�����o{�����ܿ��^�7����~��������r���ӧ{�-�������������k��t�w��o�m�9m��m|/ �t!d- Bд-"�Д>!!�ÂP|�z �<��C��8�!�t: ��� |��C�� !��&D�!hZ��hX�h\��_����0t������~����9ao���_o��.��w���m����[��������������������̖~�G�H��{�����x������|���s���g d4 ����Q�p����� � �X,`,`�( ��E�� 8j,p�,x�� �<2JEF�@*5*4AQR&4Th�C��Ȑdq0LP0(�P��&*�aq1A0����D������{A'��'�����������?{�������fr=������������y��{?oI���c�;�o�-�����m���������ח��wK���-��m��m���m�_���h'�Y��*8N��8J��(I
���A
8pI� B ���D8hHhPh��D"$(,$BP�% Bp�' £A8' N �2�����X9�?������_���������������Η�w�����������k�w�����~�ƍ�K������oN���������8ѽ���;y� ���� `8Xh�4,q`/�"��ȸh C@�h��Dz #��けせ$������CF�Ƃ#c@Рh� �02'"�@��P4*4T*&*(4L<N(������t����~߿����������s����>i���~��������r��4��v�N��ۿ��`� ��_��������������r��������M�� £�!HR��8M �D% BD%
��B"�D"�F!TF!�D"!�"0���$��(I �d' �)
B�A8&A8&B������������������������k�/����.������ۿ��-��Z������������?����~.d�2G����|�b�����/�������������g�`$
B�!�G�8�a��1�E�Ȱ�`40�4 ���4 ��E��E� �h�4qc����h�Q�cEF�Q�
Ɗ�
��� B�a�aa0�`����dTDT2* ���TLT �&(
�����2g��I���H�����?������ǟ�q���?3������=������������s=�<�No��K��[m��-��/����k�w�w���������������o ��I�B�Q!HM
�) �p���8M
��"E�D"1�B!"$B �"�(0&Bp�' ��'
B��!H�!B!� ɟ����0rğ����Ի������n�������������o�/����m������Z��ٽ���9!��z^i��?�{�~��f�f���=/��K��8X���8":������X���`J20�!�d6�DŃ����A�  �#cA�$c@Рh����N&�q@%"�hiB��"���4*Hp�QL�����y��3?����/���ٿ��"7��K�z_��ٽ��������oN߽/ޝ/����������k��������K�l�������QQ(V"�aTD��!HR�!4&��8N�
��b1"��� 8Hp���$A���F#��8N!2��HR�"�"�HV"B�(T_?����(?�������_�������������.����9o���-���{������>��s/r���o�Ͽ�����������7����;?��a����#�0p#q� � �D �G��v0 � @<ho߆� ����&I쉊�aa@�`���0LL�`��T24Dƍ *&*4h���E������=�������?�<����y�����������ɳ{�f�>����������~o�ϳ����������[��������������w�/�7���-���m�����â�1� B�V���!
B��)
B�' !8���F#Bbá��t:�Bb�F#� �p�(�!HR�"#B��*D#� �������0q�?��'��?���K���������+������]�������m��o�k����_߿�{�߰q�r߿�o�s����߳߿ٿ`����˟���F
������������#����ش`��Q��/ ���Ѣ��.v����G0%��Ш�`J&D��N(��@6(E��TEA���Th"640������������Y����'�������=�6D��Ϳ������{�����4n[����?����]��������k�-�������`���k����t@h�B!���@�Db$*��!HR!8N�������q���>�C���t<p� �p��"T��1�!���B ,:����0q��������������99���������������������������� ����<_3&}��f/����������3Ϝ_3?����>�,��8X�c�8��@8(X � ����� x�a�d�@���'4PV**((*&
��������!Q1����CF��
��QL �as0q�2I3��&O�������������<������3����������|���3�������s���_��������`���-�>�QQ�F!�D"�B��H�B���|�BH|>C���!��H���"��LT)"�#
D"�!�D"1�@XD����g��,����O�������s����������`� ��������������?����r���r�����o�4���������~`��p� 81� Q������F#"���qFa���� bH�c��3 �@!P0�Ƃ"�@@R(
#A�h0i  ��P$���.C���������'������������4����߿��������ޗ���w������m������W��������������m���/��_���:"1�E�D"�B!�Dx��#!А�R!HQ
B��)
�&�! ��r�a���B!���B!���F"��y���������������X9�_������������m������_��y��������w?���ܤ�s&���������Ə|�7�M��dPX ���,�8G "�P�����pP�X,X �����Hi0A�x���9���� "�@dP~(&���T
�P0(EC�*(4h�A�(*4 �j
�����1<����������������o�L�����e��y��������_��ɽ��|������`�������W�W�o�o�o����n��Z��_��BH|>�DH���Q�"Db(��B��H� �!B�@�% �$BHJBP�8`B� �!��(*!�"$F"�����Q:C�������S�9bd�����)��o����������+������o�K���-����o���~����3��������g�g���,6��O��H ���-��(��A�8"-���@�� .2$�p��.008, �ffƂ�\'5s�)��"�@DP�����H0lT���p.!�$ �����������&���������8Ӗ�����������{*{��nޗ����������������������������% !��q���#��1U�!EB��$! �8M �p� �d<`BB0�!B$#!�b�#
��D��aR"�C���H�������L���������������q�������������h�����������������{�|��f�������������������T �P`X ���p �'��� �hE��`�c�Xb4��Di`��
F�@0\&���A���b�q@�a��t=��3
��а�Q�
�DB�l0 @��` ����`�d�����<�&O������������~���f~y�������������L���������݀����_�����M��`������P�>���DH��b0� 8t:�!DhE�0�# ��2��4'aF�HDp� C���t@hT�±�"�H�C���|<��Y��������ɀ�?�I�����������������:_��������9����?����g���`��[�r�PP��#��$�`��1� ��L�S Dd Fa��Td` �^�Ab�TR(�"�XQM��H`�Eb����ѱP$ � �`��`��b���?���g��'���?�O�{�o�f�����ܥ�i{�{�`��zv<�����M��`���/�����w��`����!2����|="$*�aX�$�C�Ќ#�C���t#
Bd&�!�0�t:�B0�:�C�!1V�H�"���|> BhM���0r����?������K<k������o��Ǜv[`�������8����|�7��;�󗽞o������{����8�<��`�
�P��������ȱ`�H �Ra��dTh ��"�b�L08�8`�p����b�@`P.(a@���@�� ���:d[G@9GDTh
EEH"�0 !��0��`h`D2{��`�G���8�<��<��{��4���lj����_�=�������������f�'���H��k����������O�������-��?���&BHJ�������V"8|>!�t<�C��=�C���t$(�!!���t:���:C��=���#B�����|$��� �����0t�'��������
������`�n����qҿ����������������r��g�m�������������p�� �H( ��$�``( �@�@�j@�� ��R�`\dX�F��� ��aH��qH�E�P.�#Ji@�(�Lh  b�` H` �Hg����`�$���3����ɞ�ɓ?�������ٿ`�F�/���R�%/�`㍻���������W���M�����M���[`��� �p���J�����Р��>!��|>C���|=�á��HL$�C�������>���$>�G��P�% �8H��<�������̟�����?�l��%+����������`��������

76
MaterialGraphProject/Assets/Andre/Scenes/Lava/ReflectionProbe-0.exr.meta


fileFormatVersion: 2
guid: 1d271db3f0c5a4083aa5f20446be8d53
timeCreated: 1495755068
licenseType: Pro
TextureImporter:
fileIDToRecycleName:
8900000: generatedCubemap
serializedVersion: 4
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 1
seamlessCubemap: 1
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 2
aniso: 0
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 2
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 100
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

940
MaterialGraphProject/Assets/Matt/CharacterRendering/Anisotropic.shader


Shader "Character/Anisotropy"
{
Properties
{
Texture_02787904_5090_4666_a7c8_97507f02d498_Uniform("Albedo", 2D) = "white" {}
Color_c9de3ed1_a353_4808_af95_5a93b2d8ea8d_Uniform("Color", Color) = (1,1,1,0)
Texture_71f3d401_2df9_4089_9d97_b67c1150fd8f_Uniform("Normal", 2D) = "bump" {}
Texture_8d2e732f_5ca2_405f_9835_5f727d9e43e2_Uniform("Metallic Tex", 2D) = "white" {}
Vector1_1a947b3b_f0d1_47e4_923c_a34e01736c82_Uniform("Metallic", Range(0, 1)) = 1
Vector1_1f0b0b76_65f8_4986_8eb5_9f7ef1373895_Uniform("Smoothness", Range(0, 1)) = 1
Vector1_d193efae_d745_43f0_8f92_f814516da592_Uniform("Anisotropy", Range(0, 1)) = 0.5
}
SubShader
{
Tags
{
"RenderType" = "Opaque"
"Queue" = "Geometry"
}
Blend One Zero
Cull Back
ZTest LEqual
ZWrite On
LOD 200
CGPROGRAM
#include "UnityCG.cginc"
//#include "AdvancedBRDF.cginc"
//#include "AdvancedShading.cginc"
//#include "AdvancedLighting.cginc"
#define SHADINGMODELID_STANDARD
// ------------------------------------------------------------------
// Diffuse
// From UE4 - Used for Cloth (Deprecated)
float3 Diffuse_Lambert(float3 DiffuseColor)
{
return DiffuseColor * (1 / UNITY_PI);
}
// ------------------------------------------------------------------
// Fresnel
// From UE4 - Used for Cloth
// [Schlick 1994, "An Inexpensive BRDF Model for Physically-Based Rendering"]
float3 F_Schlick(float3 SpecularColor, float VoH)
{
float Fc = Pow5(1 - VoH); // 1 sub, 3 mul
//return Fc + (1 - Fc) * SpecularColor; // 1 add, 3 mad
// Anything less than 2% is physically impossible and is instead considered to be shadowing
return saturate(50.0 * SpecularColor.g) * Fc + (1 - Fc) * SpecularColor;
}
// ------------------------------------------------------------------
// Distribution
// From UE4 - USed for Cloth
// GGX / Trowbridge-Reitz
// [Walter et al. 2007, "Microfacet models for refraction through rough surfaces"]
float D_GGX(float roughness, float NdotH)
{
float a = roughness * roughness;
float a2 = a * a;
float d = (NdotH * a2 - NdotH) * NdotH + 1; // 2 mad
return a2 / (UNITY_PI*d*d); // 4 mul, 1 rcp
}
// Anisotropic GGX
// Taken from HDRenderPipeline
float D_GGXAnisotropic(float TdotH, float BdotH, float NdotH, float roughnessT, float roughnessB)
{
float f = TdotH * TdotH / (roughnessT * roughnessT) + BdotH * BdotH / (roughnessB * roughnessB) + NdotH * NdotH;
return 1.0 / (roughnessT * roughnessB * f * f);
}
// From UE4 - Used for Cloth
float D_InvGGX(float roughness, float NdotH)
{
float a = roughness * roughness;
float a2 = a * a;
float A = 4;
float d = (NdotH - a2 * NdotH) * NdotH + a2;
return 1 / (UNITY_PI * (1 + A*a2)) * (1 + 4 * a2*a2 / (d*d)); //RCP
}
// ------------------------------------------------------------------
// Visibility
// From UE4 - Used for Cloth
// Appoximation of joint Smith term for GGX
// [Heitz 2014, "Understanding the Masking-Shadowing Function in Microfacet-Based BRDFs"]
float Vis_SmithJointApprox(float Roughness, float NoV, float NoL)
{
float a = (Roughness*Roughness);
float Vis_SmithV = NoL * (NoV * (1 - a) + a);
float Vis_SmithL = NoV * (NoL * (1 - a) + a);
// Note: will generate NaNs with Roughness = 0. MinRoughness is used to prevent this
return 0.5 * 1 / (Vis_SmithV + Vis_SmithL); //RCP
}
// From UE4 - Used for Cloth
float Vis_Cloth(float NoV, float NoL)
{
return 1 / (4 * (NoL + NoV - NoL * NoV)); //RCP
}
// ------------------------------------------------------------------
// SORT THESE
// Smith Joint GGX Anisotropic Visibility
// Taken from https://cedec.cesa.or.jp/2015/session/ENG/14698.html
float SmithJointGGXAnisotropic(float TdotV, float BdotV, float NdotV, float TdotL, float BdotL, float NdotL, float roughnessT, float roughnessB)
{
float aT = roughnessT;
float aT2 = aT * aT;
float aB = roughnessB;
float aB2 = aB * aB;
float lambdaV = NdotL * sqrt(aT2 * TdotV * TdotV + aB2 * BdotV * BdotV + NdotV * NdotV);
float lambdaL = NdotV * sqrt(aT2 * TdotL * TdotL + aB2 * BdotL * BdotL + NdotL * NdotL);
return 0.5 / (lambdaV + lambdaL);
}
// Convert Anistropy to roughness
void ConvertAnisotropyToRoughness(float roughness, float anisotropy, out float roughnessT, out float roughnessB)
{
// (0 <= anisotropy <= 1), therefore (0 <= anisoAspect <= 1)
// The 0.9 factor limits the aspect ratio to 10:1.
float anisoAspect = sqrt(1.0 - 0.9 * anisotropy);
roughnessT = roughness / anisoAspect; // Distort along tangent (rougher)
roughnessB = roughness * anisoAspect; // Straighten along bitangent (smoother)
}
// Schlick Fresnel
float FresnelSchlick(float f0, float f90, float u)
{
float x = 1.0 - u;
float x5 = x * x;
x5 = x5 * x5 * x;
return (f90 - f0) * x5 + f0; // sub mul mul mul sub mad
}
//Clamp roughness
float ClampRoughnessForAnalyticalLights(float roughness)
{
return max(roughness, 0.000001);
}
//Calculate tangent warp for IBL (Reference Version - not used)
float3 SpecularGGXIBLRef(float3 viewDir, float3 normalDir, float3 tangentDir, float3 bitangentDir, float roughnessT, float roughnessB)
{
return float3(1, 1, 1);
//Hidden in UnityAnisotropicLighting.cginc
}
// Sample Anisotropic Direction for IBL (Reference Version - not used)
void SampleAnisoGGXDir(float2 u, float3 viewDir, float3 normalDir, float3 tangent, float3 bitangent, float roughnessT, float roughnessB, out float3 halfDir, out float3 lightDir)
{
// AnisoGGX NDF sampling
halfDir = sqrt(u.x / (1.0 - u.x)) * (roughnessT * cos((UNITY_PI * 2) * u.y) * tangent + roughnessB * sin((UNITY_PI * 2) * u.y) * bitangent) + normalDir;
halfDir = normalize(halfDir);
// Convert sample from half angle to incident angle
lightDir = 2.0 * saturate(dot(viewDir, halfDir)) * halfDir - viewDir;
}
// Ref: Donald Revie - Implementing Fur Using Deferred Shading (GPU Pro 2)
// The grain direction (e.g. hair or brush direction) is assumed to be orthogonal to the normal.
// The returned normal is NOT normalized.
float3 ComputeGrainNormal(float3 grainDir, float3 V)
{
float3 B = cross(-V, grainDir);
return cross(B, grainDir);
}
//Modify Normal for Anisotropic IBL (Realtime version)
// Fake anisotropic by distorting the normal.
// The grain direction (e.g. hair or brush direction) is assumed to be orthogonal to N.
// Anisotropic ratio (0->no isotropic; 1->full anisotropy in tangent direction)
float3 GetAnisotropicModifiedNormal(float3 grainDir, float3 N, float3 V, float anisotropy)
{
float3 grainNormal = ComputeGrainNormal(grainDir, V);
// TODO: test whether normalizing 'grainNormal' is worth it.
return normalize(lerp(N, grainNormal, anisotropy));
}
/// REGION END - ANISOTROPY
/// REGION START - SUBSURFACE SCATTERING
half Fresnel(half3 H, half3 V, half F0)
{
half base = 1.0 - dot(V, H);
half exponential = pow(base, 5.0);
return exponential + F0 * (1.0 - exponential);
}
/*
inline half3 KelemenSzirmayKalosSpecular(half3 normal, half3 lightDir, half3 viewDir, float roughness, float rho_s)
{
half3 result = half3(0, 0, 0);
half NdotL = dot(normal, lightDir);
if (NdotL > 0.0)
{
half3 h = lightDir + viewDir;
half3 H = normalize(h);
half NdotH = dot(normal, H);
half PH = pow(2.0 * tex2D(_BeckmannPrecomputedTex, half2(NdotH, roughness)).r, 10.0);
half F = Fresnel(H, viewDir, 0.028);
half frSpec = max(PH * F / dot(h, h), 0);
half term = NdotL * rho_s * frSpec;
result = half3(term, term, term);
}
return result;
}*/
/*
half3 SkinDiffuse(float curv, float3 NdotL)
{
float3 lookup = NdotL * 0.5 + 0.5;
float3 diffuse;
diffuse.r = tex2D(_DiffusionProfileTexture, float2(lookup.r, curv)).r;
diffuse.g = tex2D(_DiffusionProfileTexture, float2(lookup.g, curv)).g;
diffuse.b = tex2D(_DiffusionProfileTexture, float2(lookup.b, curv)).b;
return diffuse;
}*/
/// REGION END - SUBSURFACE SCATTERING
// Upgrade NOTE: replaced 'defined SHADINGMODELID_CLEARCOAT' with 'defined (SHADINGMODELID_CLEARCOAT)'
// Upgrade NOTE: replaced 'defined SHADINGMODELID_CLOTH' with 'defined (SHADINGMODELID_CLOTH)'
// Upgrade NOTE: replaced 'defined SHADINGMODELID_EYE' with 'defined (SHADINGMODELID_EYE)'
// Upgrade NOTE: replaced 'defined SHADINGMODELID_FOLIAGE' with 'defined (SHADINGMODELID_FOLIAGE)'
// Upgrade NOTE: replaced 'defined SHADINGMODELID_HAIR' with 'defined (SHADINGMODELID_HAIR)'
// Upgrade NOTE: replaced 'defined SHADINGMODELID_SKIN' with 'defined (SHADINGMODELID_SKIN)'
// Upgrade NOTE: replaced 'defined SHADINGMODELID_SUBSURFACE' with 'defined (SHADINGMODELID_SUBSURFACE)'
// ------------------------------------------------------------------
// Shading models
//#pragma multi_compile SHADINGMODELID_UNLIT SHADINGMODELID_STANDARD SHADINGMODELID_SUBSURFACE SHADINGMODELID_SKIN SHADINGMODELID_FOLIAGE SHADINGMODELID_CLEARCOAT SHADINGMODELID_CLOTH SHADINGMODELID_EYE
// ------------------------------------------------------------------
// Input
half _ShadingModel;
sampler2D _AnisotropyMap;
half _Anisotropy;
sampler2D _TangentMap;
half4 _TranslucentColor;
sampler2D _TranslucencyMap;
sampler2D _FuzzTex;
half3 _FuzzColor;
half _Cloth;
sampler2D _IrisNormal;
sampler2D _IrisMask;
half _IrisDistance;
half _TDistortion;
half _TScale;
half _TAmbient;
half _TPower;
half _TAttenuation;
half _TransmissionOverallStrength;
// ------------------------------------------------------------------
// Maths helpers
// Octahedron Normal Vectors
// [Cigolle 2014, "A Survey of Efficient Representations for Independent Unit Vectors"]
// Mean Max
// oct 8:8 0.33709 0.94424
// snorm 8:8:8 0.17015 0.38588
// oct 10:10 0.08380 0.23467
// snorm 10:10:10 0.04228 0.09598
// oct 12:12 0.02091 0.05874
float2 UnitVectorToOctahedron(float3 N)
{
N.xy /= dot(float3(1,1,1), abs(N));
if (N.z <= 0)
{
N.xy = (1 - abs(N.yx)) * (N.xy >= 0 ? float2(1, 1) : float2(-1, -1));
}
return N.xy;
}
float3 OctahedronToUnitVector(float2 Oct)
{
float3 N = float3(Oct, 1 - dot(float2(1,1), abs(Oct)));
if (N.z < 0)
{
N.xy = (1 - abs(N.yx)) * (N.xy >= 0 ? float2(1, 1) : float2(-1, -1));
}
return float3(1, 1, 1);
return normalize(N);
}
// ------------------------------------------------------------------
// Surface helpers
half Anisotropy(float2 uv)
{
return tex2D(_AnisotropyMap, uv) * _Anisotropy;
}
half3 Fuzz(float2 uv)
{
return tex2D(_FuzzTex, uv) * _FuzzColor;
}
half Cloth()
{
return _Cloth;
}
half4 Iris(float2 uv)
{
float2 n = UnitVectorToOctahedron(normalize(UnpackNormal(tex2D(_IrisNormal, uv)).rgb)) * 0.5 + 0.5;
float m = saturate(tex2D(_IrisMask, uv).r); // Iris Mask
float d = saturate(_IrisDistance); // Iris Distance
return float4(n.x, n.y, m, d);
}
half3 Translucency(float2 uv)
{
return tex2D(_TranslucencyMap, uv).rgb * _TranslucentColor.rgb;
}
// ------------------------------------------------------------------
// Unlit Shading Function
float4 UnlitShading(float3 diffColor)
{
return half4(diffColor, 1);
}
// ------------------------------------------------------------------
// Standard Shading Function
float4 StandardShading(float3 diffColor, float3 specColor, float oneMinusReflectivity, float smoothness, float3 normal, float3x3 worldVectors,
float anisotropy, float metallic, float3 viewDir, UnityLight light, UnityIndirect gi)
{
//Unpack world vectors
float3 tangent = worldVectors[0];
float3 bitangent = worldVectors[1];
//Normal shift
float shiftAmount = dot(normal, viewDir);
normal = shiftAmount < 0.0f ? normal + viewDir * (-shiftAmount + 1e-5f) : normal;
//Regular vectors
float NdotL = saturate(dot(normal, light.dir)); //sat?
float NdotV = abs(dot(normal, viewDir)); //abs?
float LdotV = dot(light.dir, viewDir);
float3 H = Unity_SafeNormalize(light.dir + viewDir);
float invLenLV = rsqrt(abs(2 + 2 * normalize(LdotV)));
//float invLenLV = rsqrt(abs(2 + 2 * LdotV));
//float NdotH = (NdotL + normalize(NdotV)) * invLenLV;
float NdotH = saturate(dot(normal, H));
//float NdotH = saturate((NdotL + normalize(NdotV)) * invLenLV);
//float H = (light.dir + viewDir) * invLenLV;
float LdotH = saturate(dot(light.dir, H));
//Tangent vectors
float TdotH = dot(tangent, H);
float TdotL = dot(tangent, light.dir);
float BdotH = dot(bitangent, H);
float BdotL = dot(bitangent, light.dir);
float TdotV = dot(viewDir, tangent);
float BdotV = dot(viewDir, bitangent);
//Fresnels
half grazingTerm = saturate(smoothness + (1 - oneMinusReflectivity));
float3 F = FresnelLerp(specColor, grazingTerm, NdotV); //Original Schlick - Replace from SRP?
//float3 fresnel0 = lerp(specColor, diffColor, metallic);
//float3 F = FresnelSchlick(fresnel0, 1.0, LdotH);
//Calculate roughness
float roughnessT;
float roughnessB;
float perceptualRoughness = SmoothnessToPerceptualRoughness(smoothness);
float roughness = PerceptualRoughnessToRoughness(perceptualRoughness);
ConvertAnisotropyToRoughness(roughness, anisotropy, roughnessT, roughnessB);
//Clamp roughness
//roughness = ClampRoughnessForAnalyticalLights(roughness);
roughnessT = ClampRoughnessForAnalyticalLights(roughnessT);
roughnessB = ClampRoughnessForAnalyticalLights(roughnessB);
//Visibility & Distribution terms
float V = SmithJointGGXAnisotropic(TdotV, BdotV, NdotV, TdotL, BdotL, NdotL, roughnessT, roughnessB);
float D = D_GGXAnisotropic(TdotH, BdotH, NdotH, roughnessT, roughnessB);
//Specular term
float3 specularTerm = V * D; //*UNITY_PI;
# ifdef UNITY_COLORSPACE_GAMMA
specularTerm = sqrt(max(1e-4h, specularTerm));
# endif
// specularTerm * nl can be NaN on Metal in some cases, use max() to make sure it's a sane value
specularTerm = max(0, specularTerm * NdotL);
#if defined(_SPECULARHIGHLIGHTS_OFF)
specularTerm = 0.0;
#endif
//Diffuse term
float diffuseTerm = DisneyDiffuse(NdotV, NdotL, LdotH, perceptualRoughness) * NdotL;// - Need this NdotL multiply?
//Reduction
half surfaceReduction;
# ifdef UNITY_COLORSPACE_GAMMA
surfaceReduction = 1.0 - 0.28*roughness*perceptualRoughness; // 1-0.28*x^3 as approximation for (1/(x^4+1))^(1/2.2) on the domain [0;1]
# else
surfaceReduction = 1.0 / (roughness*roughness + 1.0); // fade \in [0.5;1]
# endif
//Final
half3 color = (diffColor * (gi.diffuse + light.color * diffuseTerm))
+ specularTerm * light.color * FresnelTerm(specColor, LdotH)
+ surfaceReduction * gi.specular * FresnelLerp(specColor, grazingTerm, NdotV);
return half4(color, 1);
}
// ------------------------------------------------------------------
// Cloth Shading Function
//float3 ClothShading(FGBufferData GBuffer, float3 LobeRoughness, float3 LobeEnergy, float3 L, float3 V, half3 N)
float4 ClothShading(float3 diffColor, float3 specColor, float3 fuzzColor, float cloth, float oneMinusReflectivity, float smoothness, float3 normal, float3 viewDir, UnityLight light, UnityIndirect gi, float3x3 worldVectors, float anisotropy)
{
const float3 FuzzColor = saturate(fuzzColor);
const float Cloth = saturate(cloth);
//Regular vectors
float NdotL = saturate(dot(normal, light.dir)); //sat?
float NdotV = abs(dot(normal, viewDir)); //abs?
float LdotV = dot(light.dir, viewDir);
//float invLenLV = rsqrt(abs(2 + 2 * normalize(LdotV)));
////float invLenLV = rsqrt(abs(2 + 2 * LdotV));
//float NdotH = (NdotL + normalize(NdotV)) * invLenLV;
//float NdotH = saturate((NdotL + normalize(NdotV)) * invLenLV);
float3 H = Unity_SafeNormalize(light.dir + viewDir);
//float H = (light.dir + viewDir) * invLenLV;
float LdotH = saturate(dot(light.dir, H));
//float3 H = normalize(viewDir + light.dir);
//float NdotL = saturate(dot(normal, light.dir));
//float NdotV = saturate(abs(dot(normal, viewDir)) + 1e-5);
float NdotH = saturate(dot(normal, H));
float VdotH = saturate(dot(viewDir, H));
//float LdotH = saturate(dot(light.dir, H));
half grazingTerm = saturate(smoothness + (1 - oneMinusReflectivity));
// Diffuse
float perceptualRoughness = SmoothnessToPerceptualRoughness(smoothness);
float roughness = PerceptualRoughnessToRoughness(perceptualRoughness);
float diffuseTerm = DisneyDiffuse(NdotV, NdotL, LdotH, perceptualRoughness) * NdotL;// - Need this NdotL multiply?
// Cloth - Asperity Scattering - Inverse Beckmann Layer
float3 F1 = FresnelTerm(fuzzColor, LdotH);// FresnelLerp(fuzzColor, grazingTerm, NdotV);// FresnelTerm(FuzzColor, LdotH);// F_Schlick(FuzzColor, VdotH);
float D1 = D_InvGGX(roughness, NdotH);
float V1 = Vis_Cloth(NdotV, NdotL);
//Specular term
float3 specularTerm1 = V1 * D1; //*UNITY_PI;
# ifdef UNITY_COLORSPACE_GAMMA
specularTerm1 = sqrt(max(1e-4h, specularTerm1));
# endif
// specularTerm * nl can be NaN on Metal in some cases, use max() to make sure it's a sane value
// specularTerm1 = max(0, specularTerm1 * NdotL);
#if defined(_SPECULARHIGHLIGHTS_OFF)
specularTerm1 = 0.0;
#endif
float3 Spec1 = specularTerm1 * light.color * FresnelTerm(fuzzColor, LdotH);
// Generalized microfacet specular
/*float3 F2 = F_Schlick(specColor, VdotH);
float D2 = D_GGX(roughness, NdotH);
float V2 = Vis_SmithJointApprox(roughness, NdotV, NdotL);
float3 Spec2 = D2 * V2 * F2 * light.color;*/
//Unpack world vectors
float3 tangent = worldVectors[0];
float3 bitangent = worldVectors[1];
//Tangent vectors
float TdotH = dot(tangent, H);
float TdotL = dot(tangent, light.dir);
float BdotH = dot(bitangent, H);
float BdotL = dot(bitangent, light.dir);
float TdotV = dot(viewDir, tangent);
float BdotV = dot(viewDir, bitangent);
//Fresnels
float3 F2 = FresnelLerp(specColor, grazingTerm, NdotV);// FresnelTerm(specColor, LdotH);// FresnelLerp(specColor, grazingTerm, NdotV); //Original Schlick - Replace from SRP?
float roughnessT;
float roughnessB;
//float perceptualRoughness = SmoothnessToPerceptualRoughness(smoothness);
//float roughness = PerceptualRoughnessToRoughness(perceptualRoughness);
ConvertAnisotropyToRoughness(roughness, anisotropy, roughnessT, roughnessB);
//Clamp roughness
//roughness = ClampRoughnessForAnalyticalLights(roughness);
roughnessT = ClampRoughnessForAnalyticalLights(roughnessT);
roughnessB = ClampRoughnessForAnalyticalLights(roughnessB);
//Visibility & Distribution terms
float V2 = SmithJointGGXAnisotropic(TdotV, BdotV, NdotV, TdotL, BdotL, NdotL, roughnessT, roughnessB);
float D2 = D_GGXAnisotropic(TdotH, BdotH, NdotH, roughnessT, roughnessB);
//Specular term
float3 specularTerm2 = V2 * D2; //*UNITY_PI;
# ifdef UNITY_COLORSPACE_GAMMA
specularTerm2 = sqrt(max(1e-4h, specularTerm2));
# endif
// specularTerm * nl can be NaN on Metal in some cases, use max() to make sure it's a sane value
specularTerm2 = max(0, specularTerm2 * NdotL);
#if defined(_SPECULARHIGHLIGHTS_OFF)
specularTerm2 = 0.0;
#endif
float3 Spec2 = specularTerm2 * light.color * FresnelTerm(specColor, LdotH);
float3 Spec = lerp(Spec2, Spec1, Cloth);
//Reduction
half surfaceReduction;
# ifdef UNITY_COLORSPACE_GAMMA
surfaceReduction = 1.0 - 0.28*roughness*perceptualRoughness; // 1-0.28*x^3 as approximation for (1/(x^4+1))^(1/2.2) on the domain [0;1]
# else
surfaceReduction = 1.0 / (roughness*roughness + 1.0); // fade \in [0.5;1]
# endif
//Final
//half grazingTerm = saturate(smoothness + (1 - oneMinusReflectivity));
half3 color = (diffColor * (gi.diffuse + light.color * diffuseTerm))
+ Spec
+ surfaceReduction * gi.specular * FresnelLerp(specColor, grazingTerm, NdotV);
return half4(color, 1);
}
// ------------------------------------------------------------------
// Eye Shading Function
//float3 EyeShading(FGBufferData GBuffer, float3 LobeRoughness, float3 LobeEnergy, float3 L, float3 V, half3 N)
float4 EyeShading(float3 diffColor, float3 specColor, float3 viewDir, half3 normal, float smoothness, float oneMinusReflectivity, UnityLight light, UnityIndirect gi)
{
float3 H = normalize(viewDir + light.dir);
float NdotL = saturate(dot(normal, light.dir));
float NdotV = saturate(abs(dot(normal, viewDir)) + 1e-5);
float NdotH = saturate(dot(normal, H));
float VdotH = saturate(dot(viewDir, H));
float LdotH = saturate(dot(light.dir, H));
// Generalized microfacet specular
float perceptualRoughness = SmoothnessToPerceptualRoughness(smoothness);
float roughness = PerceptualRoughnessToRoughness(perceptualRoughness);
float D = D_GGX(roughness, NdotH);// *LobeEnergy[1];
float V = Vis_SmithJointApprox(roughness, NdotV, NdotL);
float3 F = F_Schlick(specColor, VdotH);
float3 specularTerm = V * D; //*UNITY_PI;
# ifdef UNITY_COLORSPACE_GAMMA
specularTerm = sqrt(max(1e-4h, specularTerm));
# endif
// specularTerm * nl can be NaN on Metal in some cases, use max() to make sure it's a sane value
specularTerm = max(0, specularTerm * NdotL);
#if defined(_SPECULARHIGHLIGHTS_OFF)
specularTerm = 0.0;
#endif
half grazingTerm = saturate(smoothness + (1 - oneMinusReflectivity));
half surfaceReduction;
# ifdef UNITY_COLORSPACE_GAMMA
surfaceReduction = 1.0 - 0.28*roughness*perceptualRoughness; // 1-0.28*x^3 as approximation for (1/(x^4+1))^(1/2.2) on the domain [0;1]
# else
surfaceReduction = 1.0 / (roughness*roughness + 1.0); // fade \in [0.5;1]
# endif
float diffuseTerm = DisneyDiffuse(NdotV, NdotL, LdotH, perceptualRoughness) * NdotL; // TODO - Unreal does not apply diffuse in Shading function
//Final
half3 color = (diffColor * (gi.diffuse + light.color * diffuseTerm))
+ specularTerm * light.color * FresnelTerm(specColor, LdotH)
+ surfaceReduction * gi.specular * FresnelLerp(specColor, grazingTerm, NdotV);
return half4(color, 1);
}
// ------------------------------------------------------------------
// Subsurface Shading Function
float3 SubsurfaceShadingSimple(float3 diffColor, float3 normal, float3 viewDir, float3 thickness, UnityLight light)
{
half3 vLTLight = light.dir + normal * 1;
half fLTDot = pow(saturate(dot(viewDir, -vLTLight)), 3.5) * 1.5;
half3 fLT = 1 * (fLTDot + 1.2) * (thickness);
return diffColor * ((light.color * fLT) * 0.4);
}
// ------------------------------------------------------------------
// Eye Subsurface Shading Function
//float3 EyeSubsurfaceShading(FGBufferData GBuffer, float3 L, float3 V, half3 N)
float3 EyeSubsurfaceShading(float3 diffColor, float3 specColor, float3 viewDir, half3 normal, float smoothness, float4 iris, UnityLight light)
{
float2 irisNormal = iris.rg;
float irisMask = iris.z;
float irisDistance = iris.w;
float3 H = normalize(viewDir + light.dir);
float VdotH = saturate(dot(viewDir, H));
float NdotV = saturate(abs(dot(normal, viewDir)) + 1e-5);
float LdotH = saturate(dot(light.dir, H));
// F_Schlick
//float F0 = GBuffer.Specular * 0.08;
//float Fc = Pow5(1 - VoH);
//float F = Fc + (1 - Fc) * F0;
float3 fresnel0 = lerp(specColor, diffColor, smoothness);
float3 F = FresnelSchlick(fresnel0, 1.0, LdotH);
//float IrisDistance = GBuffer.CustomData.w;
//float IrisMask = GBuffer.CustomData.z;
float3 IrisNormal;
IrisNormal = OctahedronToUnitVector(irisNormal * 2 - 1);
// Blend in the negative intersection normal to create some concavity
// Not great as it ties the concavity to the convexity of the cornea surface
// No good justification for that. On the other hand, if we're just looking to
// introduce some concavity, this does the job.
float3 CausticNormal = normalize(lerp(IrisNormal, -normal, irisMask*irisDistance));
float NdotL = saturate(dot(IrisNormal, light.dir));
float Power = lerp(12, 1, NdotL);
float Caustic = 0.6 + 0.2 * (Power + 1) * pow(saturate(dot(CausticNormal, light.dir)), Power);
float Iris = NdotL * Caustic;
// http://blog.stevemcauley.com/2011/12/03/energy-conserving-wrapped-diffuse/
float Wrap = 0.15;
float Sclera = saturate((dot(normal, light.dir) + Wrap) / (1 + Wrap) * (1 + Wrap));
return (1 - F) * lerp(Sclera, Iris, irisMask) * diffColor / UNITY_PI;
}
// ------------------------------------------------------------------
// Shading function selectors
//float3 SurfaceShading(/*FGBufferData GBuffer,*/ float3 LobeRoughness, float3 LobeEnergy, float3 L, float3 V, half3 N, uint2 Random)
float4 SurfaceShading(float3 diffColor, float3 specColor, float oneMinusReflectivity, float smoothness, float3 normal,
float3x3 worldVectors, float anisotropy, float4 customData, float metallic, float3 viewDir, UnityLight light, UnityIndirect gi)
{
#if defined(SHADINGMODELID_UNLIT)
{
return UnlitShading(diffColor);
}
#elif defined(SHADINGMODELID_STANDARD) || defined(SHADINGMODELID_SUBSURFACE) || defined(SHADINGMODELID_SKIN) || defined(SHADINGMODELID_FOLIAGE)
{
return StandardShading(diffColor, specColor, oneMinusReflectivity, smoothness,
normal, worldVectors, anisotropy, metallic, viewDir, light, gi);
}
#elif defined (SHADINGMODELID_CLEARCOAT)
{
return float4(1, 1, 1, 1); //ClearCoatShading(GBuffer, LobeRoughness, LobeEnergy, L, V, N);
}
#elif defined (SHADINGMODELID_CLOTH)
{
return ClothShading(diffColor, specColor, customData.rgb, customData.a, oneMinusReflectivity, smoothness, normal, viewDir, light, gi, worldVectors, anisotropy);
}
#elif defined (SHADINGMODELID_EYE)
{
return EyeShading(diffColor, specColor, viewDir, normal, smoothness, oneMinusReflectivity, light, gi); //EyeShading(GBuffer, LobeRoughness, LobeEnergy, L, V, N);
}
#endif
return float4(0, 0, 0, 0);
}
//float3 SubsurfaceShading(/*FGBufferData GBuffer,*/ float3 L, float3 V, half3 N, float Shadow, uint2 Random)
float3 SubsurfaceShading(float3 diffColor, float3 specColor, float3 normal, float smoothness, float3 viewDir, float4 customData, UnityLight light)
{
#if defined (SHADINGMODELID_SUBSURFACE)
{
return SubsurfaceShadingSimple(diffColor, normal, viewDir, customData.rgb, light);
}
#elif defined (SHADINGMODELID_SKIN)
{
return float3(0, 0, 0); //SubsurfaceShadingPreintegratedSkin(GBuffer, L, V, N);
}
#elif defined (SHADINGMODELID_FOLIAGE)
{
return float3(0, 0, 0); //SubsurfaceShadingTwoSided(SubsurfaceColor, L, V, N);
}
#elif defined (SHADINGMODELID_HAIR)
{
return float3(0, 0, 0); //HairShading(GBuffer, L, V, N, Shadow, 1, 0, Random);
}
#elif defined (SHADINGMODELID_EYE)
{
return EyeSubsurfaceShading(diffColor, specColor, viewDir, normal, smoothness, customData, light); //EyeSubsurfaceShading(GBuffer, L, V, N);
}
#endif
return float3(0, 0, 0);
}
//#endif UNITY_ADVANCED_SHADINGMODELS_INCLUDED
//-------------------------------------------------------------------------------------
// Lighting Helpers
// Glossy Environment
half3 Unity_AnisotropicGlossyEnvironment(UNITY_ARGS_TEXCUBE(tex), half4 hdr, Unity_GlossyEnvironmentData glossIn, half anisotropy) //Reference IBL from HD Pipe (Add half3 L input and replace R)
{
half perceptualRoughness = glossIn.roughness /* perceptualRoughness */;
// TODO: CAUTION: remap from Morten may work only with offline convolution, see impact with runtime convolution!
// For now disabled
#if 0
float m = PerceptualRoughnessToRoughness(perceptualRoughness); // m is the real roughness parameter
const float fEps = 1.192092896e-07F; // smallest such that 1.0+FLT_EPSILON != 1.0 (+1e-4h is NOT good here. is visibly very wrong)
float n = (2.0 / max(fEps, m*m)) - 2.0; // remap to spec power. See eq. 21 in --> https://dl.dropboxusercontent.com/u/55891920/papers/mm_brdf.pdf
n /= 4; // remap from n_dot_h formulatino to n_dot_r. See section "Pre-convolved Cube Maps vs Path Tracers" --> https://s3.amazonaws.com/docs.knaldtech.com/knald/1.0.0/lys_power_drops.html
perceptualRoughness = pow(2 / (n + 2), 0.25); // remap back to square root of real roughness (0.25 include both the sqrt root of the conversion and sqrt for going from roughness to perceptualRoughness)
#else
// MM: came up with a surprisingly close approximation to what the #if 0'ed out code above does.
perceptualRoughness = perceptualRoughness*(1.7 - 0.7*perceptualRoughness);
#endif
half mip = perceptualRoughnessToMipmapLevel(perceptualRoughness);
half3 R = glossIn.reflUVW;// -half3(anisotropy, 0, 0);
half4 rgbm = UNITY_SAMPLE_TEXCUBE_LOD(tex, R, mip);
return DecodeHDR(rgbm, hdr);
}
// Indirect Specular
inline half3 UnityGI_AnisotropicIndirectSpecular(UnityGIInput data, half occlusion, Unity_GlossyEnvironmentData glossIn, half anisotropy, half3x3 worldVectors)
{
half3 specular;
float3 tangentX = worldVectors[0];
float3 tangentY = worldVectors[1];
float3 N = worldVectors[2];
float3 V = data.worldViewDir;
float3 iblNormalWS = GetAnisotropicModifiedNormal(tangentY, N, V, anisotropy);
float3 iblR = reflect(-V, iblNormalWS);
#ifdef UNITY_SPECCUBE_BOX_PROJECTION
// we will tweak reflUVW in glossIn directly (as we pass it to Unity_GlossyEnvironment twice for probe0 and probe1), so keep original to pass into BoxProjectedCubemapDirection
half3 originalReflUVW = glossIn.reflUVW;
glossIn.reflUVW = BoxProjectedCubemapDirection(iblR, data.worldPos, data.probePosition[0], data.boxMin[0], data.boxMax[0]);
#endif
#ifdef _GLOSSYREFLECTIONS_OFF
specular = unity_IndirectSpecColor.rgb;
#else
half3 env0 = Unity_AnisotropicGlossyEnvironment(UNITY_PASS_TEXCUBE(unity_SpecCube0), data.probeHDR[0], glossIn, anisotropy);
//half3 env0 = Unity_AnisotropicGlossyEnvironment(UNITY_PASS_TEXCUBE(unity_SpecCube0), data.probeHDR[0], glossIn, anisotropy, L); //Reference IBL from HD Pipe
#ifdef UNITY_SPECCUBE_BLENDING
const float kBlendFactor = 0.99999;
float blendLerp = data.boxMin[0].w;
UNITY_BRANCH
if (blendLerp < kBlendFactor)
{
#ifdef UNITY_SPECCUBE_BOX_PROJECTION
glossIn.reflUVW = BoxProjectedCubemapDirection(iblR, data.worldPos, data.probePosition[1], data.boxMin[1], data.boxMax[1]);
#endif
half3 env1 = Unity_AnisotropicGlossyEnvironment(UNITY_PASS_TEXCUBE_SAMPLER(unity_SpecCube1, unity_SpecCube0), data.probeHDR[1], glossIn, anisotropy);
//half3 env1 = Unity_AnisotropicGlossyEnvironment(UNITY_PASS_TEXCUBE_SAMPLER(unity_SpecCube1, unity_SpecCube0), data.probeHDR[1], glossIn, anisotropy, L); //Reference IBL from HD Pipe
specular = lerp(env1, env0, blendLerp);
}
else
{
specular = env0;
}
#else
specular = env0;
#endif
#endif
return specular * occlusion;// *weightOverPdf; //Reference IBL from HD Pipe
//return specular * occlusion * weightOverPdf; //Reference IBL from HD Pipe
}
// Global Illumination
inline UnityGI UnityAnisotropicGlobalIllumination(UnityGIInput data, half occlusion, half3 normalWorld, Unity_GlossyEnvironmentData glossIn, half anisotropy, half3x3 worldVectors)
{
UnityGI o_gi = UnityGI_Base(data, occlusion, normalWorld);
o_gi.indirect.specular = UnityGI_AnisotropicIndirectSpecular(data, occlusion, glossIn, anisotropy, worldVectors);
return o_gi;
}
//-------------------------------------------------------------------------------------
// Lighting Functions
//Surface Description
struct SurfaceOutputAdvanced
{
fixed3 Albedo; // base (diffuse or specular) color
fixed3 Normal; // tangent space normal, if written
half3 Emission;
half Metallic; // 0=non-metal, 1=metal
// Smoothness is the user facing name, it should be perceptual smoothness but user should not have to deal with it.
// Everywhere in the code you meet smoothness it is perceptual smoothness
half Smoothness; // 0=rough, 1=smooth
half Occlusion; // occlusion (default 1)
fixed Alpha; // alpha for transparencies
half3 Tangent;
half Anisotropy;
half4 CustomData;
float3x3 WorldVectors;
//half ShadingModel;
};
inline half4 LightingAdvanced(SurfaceOutputAdvanced s, half3 viewDir, UnityGI gi)
{
s.Normal = normalize(s.Normal);
half oneMinusReflectivity;
half3 specColor;
s.Albedo = DiffuseAndSpecularFromMetallic(s.Albedo, s.Metallic, /*out*/ specColor, /*out*/ oneMinusReflectivity);
// shader relies on pre-multiply alpha-blend (_SrcBlend = One, _DstBlend = OneMinusSrcAlpha)
// this is necessary to handle transparency in physically correct way - only diffuse component gets affected by alpha
half outputAlpha;
s.Albedo = PreMultiplyAlpha(s.Albedo, s.Alpha, oneMinusReflectivity, /*out*/ outputAlpha);
half4 c = SurfaceShading(s.Albedo, specColor, oneMinusReflectivity, s.Smoothness, s.Normal, s.WorldVectors, s.Anisotropy, s.CustomData, s.Metallic, viewDir, gi.light, gi.indirect);
c.rgb += SubsurfaceShading(s.Albedo, specColor, s.Normal, s.Smoothness, viewDir, s.CustomData, gi.light);
//c.rgb += UNITY_BRDF_GI(s.Albedo, specColor, oneMinusReflectivity, s.Smoothness, s.Normal, viewDir, s.Occlusion, gi);
c.a = outputAlpha;
return c;
}
//This is pointless as always forward?
inline half4 LightingAdvanced_Deferred(SurfaceOutputAdvanced s, half3 viewDir, UnityGI gi, out half4 outGBuffer0, out half4 outGBuffer1, out half4 outGBuffer2)
{
half oneMinusReflectivity;
half3 specColor;
s.Albedo = DiffuseAndSpecularFromMetallic(s.Albedo, s.Metallic, /*out*/ specColor, /*out*/ oneMinusReflectivity);
half4 c = SurfaceShading(s.Albedo, specColor, oneMinusReflectivity, s.Smoothness, s.Normal, s.WorldVectors, s.Anisotropy, s.CustomData, s.Metallic, viewDir, gi.light, gi.indirect);
c.rgb += SubsurfaceShading(s.Albedo, specColor, s.Normal, s.Smoothness, viewDir, s.CustomData, gi.light);
UnityStandardData data;
data.diffuseColor = s.Albedo;
data.occlusion = s.Occlusion;
data.specularColor = specColor;
data.smoothness = s.Smoothness;
data.normalWorld = s.Normal;
UnityStandardDataToGbuffer(data, outGBuffer0, outGBuffer1, outGBuffer2);
half4 emission = half4(s.Emission + c.rgb, 1);
return emission;
}
inline void LightingAdvanced_GI(SurfaceOutputAdvanced s, UnityGIInput data, inout UnityGI gi)
{
#if defined(UNITY_PASS_DEFERRED) && UNITY_ENABLE_REFLECTION_BUFFERS
gi = UnityGlobalIllumination(data, s.Occlusion, s.Normal);
#else
Unity_GlossyEnvironmentData g = UnityGlossyEnvironmentSetup(s.Smoothness, data.worldViewDir, s.Normal, lerp(unity_ColorSpaceDielectricSpec.rgb, s.Albedo, s.Metallic));
gi = UnityAnisotropicGlobalIllumination(data, s.Occlusion, s.Normal, g, s.Anisotropy, s.WorldVectors);
#endif
}
///END
//#pragma target 5.0
#pragma surface surf Advanced vertex:vert
#pragma glsl
#pragma debug
inline float4 unity_multiply_float(float4 arg1, float4 arg2)
{
return arg1 * arg2;
}
inline float unity_multiply_float(float arg1, float arg2)
{
return arg1 * arg2;
}
sampler2D Texture_02787904_5090_4666_a7c8_97507f02d498_Uniform;
float4 Color_c9de3ed1_a353_4808_af95_5a93b2d8ea8d_Uniform;
sampler2D Texture_71f3d401_2df9_4089_9d97_b67c1150fd8f_Uniform;
sampler2D Texture_8d2e732f_5ca2_405f_9835_5f727d9e43e2_Uniform;
float Vector1_1a947b3b_f0d1_47e4_923c_a34e01736c82_Uniform;
float Vector1_1f0b0b76_65f8_4986_8eb5_9f7ef1373895_Uniform;
float Vector1_d193efae_d745_43f0_8f92_f814516da592_Uniform;
struct Input
{
float4 color : COLOR;
half4 meshUV0;
float4 worldTangent;
float3 worldNormal;
INTERNAL_DATA
};
void vert(inout appdata_full v, out Input o)
{
UNITY_INITIALIZE_OUTPUT(Input,o);
o.meshUV0 = v.texcoord;
o.worldTangent = float4(UnityObjectToWorldDir(v.tangent.xyz), v.tangent.w);
}
void surf(Input IN, inout SurfaceOutputAdvanced o)
{
half4 uv0 = IN.meshUV0;
float3 worldSpaceTangent = normalize(IN.worldTangent.xyz);
float3 worldSpaceNormal = normalize(IN.worldNormal);
float3 worldSpaceBitangent = cross(worldSpaceNormal, worldSpaceTangent) * IN.worldTangent.w;
float4 UV_9f41e2a6_ad5a_46ca_b34c_f60ac2c321f9_UV = uv0;
float4 Texture_02787904_5090_4666_a7c8_97507f02d498 = tex2D(Texture_02787904_5090_4666_a7c8_97507f02d498_Uniform, (UV_9f41e2a6_ad5a_46ca_b34c_f60ac2c321f9_UV.xy));
float4 Multiply_5f63430a_31df_4533_b412_89748a592b6c_Output = unity_multiply_float(Texture_02787904_5090_4666_a7c8_97507f02d498, Color_c9de3ed1_a353_4808_af95_5a93b2d8ea8d_Uniform);
float4 Texture_71f3d401_2df9_4089_9d97_b67c1150fd8f = float4(UnpackNormal(tex2D(Texture_71f3d401_2df9_4089_9d97_b67c1150fd8f_Uniform, uv0.xy)), 0);
float4 Texture_8d2e732f_5ca2_405f_9835_5f727d9e43e2 = tex2D(Texture_8d2e732f_5ca2_405f_9835_5f727d9e43e2_Uniform, uv0.xy);
float Multiply_f05d7ce8_6386_4302_bde1_cc1806075819_Output = unity_multiply_float(Texture_8d2e732f_5ca2_405f_9835_5f727d9e43e2.r, Vector1_1a947b3b_f0d1_47e4_923c_a34e01736c82_Uniform);
float Multiply_f4f05e7f_9461_4ef6_b868_a0a2b57c3a83_Output = unity_multiply_float(Texture_8d2e732f_5ca2_405f_9835_5f727d9e43e2.a, Vector1_1f0b0b76_65f8_4986_8eb5_9f7ef1373895_Uniform);
o.Albedo = Multiply_5f63430a_31df_4533_b412_89748a592b6c_Output;
o.Normal = Texture_71f3d401_2df9_4089_9d97_b67c1150fd8f;
o.Normal += 1e-6;
o.Metallic = Multiply_f05d7ce8_6386_4302_bde1_cc1806075819_Output;
o.Smoothness = Multiply_f4f05e7f_9461_4ef6_b868_a0a2b57c3a83_Output;
o.WorldVectors = float3x3(worldSpaceTangent, worldSpaceBitangent, worldSpaceNormal);
o.Anisotropy = Vector1_d193efae_d745_43f0_8f92_f814516da592_Uniform;
}
ENDCG
}
FallBack "Diffuse"
CustomEditor "LegacyIlluminShaderGUI"
}

10
MaterialGraphProject/Assets/Matt/CharacterRendering/Anisotropic.shader.meta


fileFormatVersion: 2
guid: f354e64a3ee15af459e4a31439c1953a
timeCreated: 1495748613
licenseType: Pro
ShaderImporter:
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:

941
MaterialGraphProject/Assets/Matt/CharacterRendering/AnisotropicTransparent.shader


Shader "Character/AnisotropyTransparent"
{
Properties
{
Texture_02787904_5090_4666_a7c8_97507f02d498_Uniform("Albedo", 2D) = "white" {}
Color_c9de3ed1_a353_4808_af95_5a93b2d8ea8d_Uniform("Color", Color) = (1,1,1,0)
Texture_71f3d401_2df9_4089_9d97_b67c1150fd8f_Uniform("Normal", 2D) = "bump" {}
Texture_8d2e732f_5ca2_405f_9835_5f727d9e43e2_Uniform("Metallic Tex", 2D) = "white" {}
Vector1_1a947b3b_f0d1_47e4_923c_a34e01736c82_Uniform("Metallic", Range(0, 1)) = 1
Vector1_1f0b0b76_65f8_4986_8eb5_9f7ef1373895_Uniform("Smoothness", Range(0, 1)) = 1
Vector1_d193efae_d745_43f0_8f92_f814516da592_Uniform("Anisotropy", Range(0, 1)) = 0.5
}
SubShader
{
Tags
{
"RenderType" = "Transparent"
"Queue" = "Transparent"
}
Blend SrcAlpha OneMinusSrcAlpha
Cull Off
ZTest LEqual
ZWrite On
LOD 200
CGPROGRAM
#include "UnityCG.cginc"
//#include "AdvancedBRDF.cginc"
//#include "AdvancedShading.cginc"
//#include "AdvancedLighting.cginc"
#define SHADINGMODELID_STANDARD
// ------------------------------------------------------------------
// Diffuse
// From UE4 - Used for Cloth (Deprecated)
float3 Diffuse_Lambert(float3 DiffuseColor)
{
return DiffuseColor * (1 / UNITY_PI);
}
// ------------------------------------------------------------------
// Fresnel
// From UE4 - Used for Cloth
// [Schlick 1994, "An Inexpensive BRDF Model for Physically-Based Rendering"]
float3 F_Schlick(float3 SpecularColor, float VoH)
{
float Fc = Pow5(1 - VoH); // 1 sub, 3 mul
//return Fc + (1 - Fc) * SpecularColor; // 1 add, 3 mad
// Anything less than 2% is physically impossible and is instead considered to be shadowing
return saturate(50.0 * SpecularColor.g) * Fc + (1 - Fc) * SpecularColor;
}
// ------------------------------------------------------------------
// Distribution
// From UE4 - USed for Cloth
// GGX / Trowbridge-Reitz
// [Walter et al. 2007, "Microfacet models for refraction through rough surfaces"]
float D_GGX(float roughness, float NdotH)
{
float a = roughness * roughness;
float a2 = a * a;
float d = (NdotH * a2 - NdotH) * NdotH + 1; // 2 mad
return a2 / (UNITY_PI*d*d); // 4 mul, 1 rcp
}
// Anisotropic GGX
// Taken from HDRenderPipeline
float D_GGXAnisotropic(float TdotH, float BdotH, float NdotH, float roughnessT, float roughnessB)
{
float f = TdotH * TdotH / (roughnessT * roughnessT) + BdotH * BdotH / (roughnessB * roughnessB) + NdotH * NdotH;
return 1.0 / (roughnessT * roughnessB * f * f);
}
// From UE4 - Used for Cloth
float D_InvGGX(float roughness, float NdotH)
{
float a = roughness * roughness;
float a2 = a * a;
float A = 4;
float d = (NdotH - a2 * NdotH) * NdotH + a2;
return 1 / (UNITY_PI * (1 + A*a2)) * (1 + 4 * a2*a2 / (d*d)); //RCP
}
// ------------------------------------------------------------------
// Visibility
// From UE4 - Used for Cloth
// Appoximation of joint Smith term for GGX
// [Heitz 2014, "Understanding the Masking-Shadowing Function in Microfacet-Based BRDFs"]
float Vis_SmithJointApprox(float Roughness, float NoV, float NoL)
{
float a = (Roughness*Roughness);
float Vis_SmithV = NoL * (NoV * (1 - a) + a);
float Vis_SmithL = NoV * (NoL * (1 - a) + a);
// Note: will generate NaNs with Roughness = 0. MinRoughness is used to prevent this
return 0.5 * 1 / (Vis_SmithV + Vis_SmithL); //RCP
}
// From UE4 - Used for Cloth
float Vis_Cloth(float NoV, float NoL)
{
return 1 / (4 * (NoL + NoV - NoL * NoV)); //RCP
}
// ------------------------------------------------------------------
// SORT THESE
// Smith Joint GGX Anisotropic Visibility
// Taken from https://cedec.cesa.or.jp/2015/session/ENG/14698.html
float SmithJointGGXAnisotropic(float TdotV, float BdotV, float NdotV, float TdotL, float BdotL, float NdotL, float roughnessT, float roughnessB)
{
float aT = roughnessT;
float aT2 = aT * aT;
float aB = roughnessB;
float aB2 = aB * aB;
float lambdaV = NdotL * sqrt(aT2 * TdotV * TdotV + aB2 * BdotV * BdotV + NdotV * NdotV);
float lambdaL = NdotV * sqrt(aT2 * TdotL * TdotL + aB2 * BdotL * BdotL + NdotL * NdotL);
return 0.5 / (lambdaV + lambdaL);
}
// Convert Anistropy to roughness
void ConvertAnisotropyToRoughness(float roughness, float anisotropy, out float roughnessT, out float roughnessB)
{
// (0 <= anisotropy <= 1), therefore (0 <= anisoAspect <= 1)
// The 0.9 factor limits the aspect ratio to 10:1.
float anisoAspect = sqrt(1.0 - 0.9 * anisotropy);
roughnessT = roughness / anisoAspect; // Distort along tangent (rougher)
roughnessB = roughness * anisoAspect; // Straighten along bitangent (smoother)
}
// Schlick Fresnel
float FresnelSchlick(float f0, float f90, float u)
{
float x = 1.0 - u;
float x5 = x * x;
x5 = x5 * x5 * x;
return (f90 - f0) * x5 + f0; // sub mul mul mul sub mad
}
//Clamp roughness
float ClampRoughnessForAnalyticalLights(float roughness)
{
return max(roughness, 0.000001);
}
//Calculate tangent warp for IBL (Reference Version - not used)
float3 SpecularGGXIBLRef(float3 viewDir, float3 normalDir, float3 tangentDir, float3 bitangentDir, float roughnessT, float roughnessB)
{
return float3(1, 1, 1);
//Hidden in UnityAnisotropicLighting.cginc
}
// Sample Anisotropic Direction for IBL (Reference Version - not used)
void SampleAnisoGGXDir(float2 u, float3 viewDir, float3 normalDir, float3 tangent, float3 bitangent, float roughnessT, float roughnessB, out float3 halfDir, out float3 lightDir)
{
// AnisoGGX NDF sampling
halfDir = sqrt(u.x / (1.0 - u.x)) * (roughnessT * cos((UNITY_PI * 2) * u.y) * tangent + roughnessB * sin((UNITY_PI * 2) * u.y) * bitangent) + normalDir;
halfDir = normalize(halfDir);
// Convert sample from half angle to incident angle
lightDir = 2.0 * saturate(dot(viewDir, halfDir)) * halfDir - viewDir;
}
// Ref: Donald Revie - Implementing Fur Using Deferred Shading (GPU Pro 2)
// The grain direction (e.g. hair or brush direction) is assumed to be orthogonal to the normal.
// The returned normal is NOT normalized.
float3 ComputeGrainNormal(float3 grainDir, float3 V)
{
float3 B = cross(-V, grainDir);
return cross(B, grainDir);
}
//Modify Normal for Anisotropic IBL (Realtime version)
// Fake anisotropic by distorting the normal.
// The grain direction (e.g. hair or brush direction) is assumed to be orthogonal to N.
// Anisotropic ratio (0->no isotropic; 1->full anisotropy in tangent direction)
float3 GetAnisotropicModifiedNormal(float3 grainDir, float3 N, float3 V, float anisotropy)
{
float3 grainNormal = ComputeGrainNormal(grainDir, V);
// TODO: test whether normalizing 'grainNormal' is worth it.
return normalize(lerp(N, grainNormal, anisotropy));
}
/// REGION END - ANISOTROPY
/// REGION START - SUBSURFACE SCATTERING
half Fresnel(half3 H, half3 V, half F0)
{
half base = 1.0 - dot(V, H);
half exponential = pow(base, 5.0);
return exponential + F0 * (1.0 - exponential);
}
/*
inline half3 KelemenSzirmayKalosSpecular(half3 normal, half3 lightDir, half3 viewDir, float roughness, float rho_s)
{
half3 result = half3(0, 0, 0);
half NdotL = dot(normal, lightDir);
if (NdotL > 0.0)
{
half3 h = lightDir + viewDir;
half3 H = normalize(h);
half NdotH = dot(normal, H);
half PH = pow(2.0 * tex2D(_BeckmannPrecomputedTex, half2(NdotH, roughness)).r, 10.0);
half F = Fresnel(H, viewDir, 0.028);
half frSpec = max(PH * F / dot(h, h), 0);
half term = NdotL * rho_s * frSpec;
result = half3(term, term, term);
}
return result;
}*/
/*
half3 SkinDiffuse(float curv, float3 NdotL)
{
float3 lookup = NdotL * 0.5 + 0.5;
float3 diffuse;
diffuse.r = tex2D(_DiffusionProfileTexture, float2(lookup.r, curv)).r;
diffuse.g = tex2D(_DiffusionProfileTexture, float2(lookup.g, curv)).g;
diffuse.b = tex2D(_DiffusionProfileTexture, float2(lookup.b, curv)).b;
return diffuse;
}*/
/// REGION END - SUBSURFACE SCATTERING
// Upgrade NOTE: replaced 'defined SHADINGMODELID_CLEARCOAT' with 'defined (SHADINGMODELID_CLEARCOAT)'
// Upgrade NOTE: replaced 'defined SHADINGMODELID_CLOTH' with 'defined (SHADINGMODELID_CLOTH)'
// Upgrade NOTE: replaced 'defined SHADINGMODELID_EYE' with 'defined (SHADINGMODELID_EYE)'
// Upgrade NOTE: replaced 'defined SHADINGMODELID_FOLIAGE' with 'defined (SHADINGMODELID_FOLIAGE)'
// Upgrade NOTE: replaced 'defined SHADINGMODELID_HAIR' with 'defined (SHADINGMODELID_HAIR)'
// Upgrade NOTE: replaced 'defined SHADINGMODELID_SKIN' with 'defined (SHADINGMODELID_SKIN)'
// Upgrade NOTE: replaced 'defined SHADINGMODELID_SUBSURFACE' with 'defined (SHADINGMODELID_SUBSURFACE)'
// ------------------------------------------------------------------
// Shading models
//#pragma multi_compile SHADINGMODELID_UNLIT SHADINGMODELID_STANDARD SHADINGMODELID_SUBSURFACE SHADINGMODELID_SKIN SHADINGMODELID_FOLIAGE SHADINGMODELID_CLEARCOAT SHADINGMODELID_CLOTH SHADINGMODELID_EYE
// ------------------------------------------------------------------
// Input
half _ShadingModel;
sampler2D _AnisotropyMap;
half _Anisotropy;
sampler2D _TangentMap;
half4 _TranslucentColor;
sampler2D _TranslucencyMap;
sampler2D _FuzzTex;
half3 _FuzzColor;
half _Cloth;
sampler2D _IrisNormal;
sampler2D _IrisMask;
half _IrisDistance;
half _TDistortion;
half _TScale;
half _TAmbient;
half _TPower;
half _TAttenuation;
half _TransmissionOverallStrength;
// ------------------------------------------------------------------
// Maths helpers
// Octahedron Normal Vectors
// [Cigolle 2014, "A Survey of Efficient Representations for Independent Unit Vectors"]
// Mean Max
// oct 8:8 0.33709 0.94424
// snorm 8:8:8 0.17015 0.38588
// oct 10:10 0.08380 0.23467
// snorm 10:10:10 0.04228 0.09598
// oct 12:12 0.02091 0.05874
float2 UnitVectorToOctahedron(float3 N)
{
N.xy /= dot(float3(1,1,1), abs(N));
if (N.z <= 0)
{
N.xy = (1 - abs(N.yx)) * (N.xy >= 0 ? float2(1, 1) : float2(-1, -1));
}
return N.xy;
}
float3 OctahedronToUnitVector(float2 Oct)
{
float3 N = float3(Oct, 1 - dot(float2(1,1), abs(Oct)));
if (N.z < 0)
{
N.xy = (1 - abs(N.yx)) * (N.xy >= 0 ? float2(1, 1) : float2(-1, -1));
}
return float3(1, 1, 1);
return normalize(N);
}
// ------------------------------------------------------------------
// Surface helpers
half Anisotropy(float2 uv)
{
return tex2D(_AnisotropyMap, uv) * _Anisotropy;
}
half3 Fuzz(float2 uv)
{
return tex2D(_FuzzTex, uv) * _FuzzColor;
}
half Cloth()
{
return _Cloth;
}
half4 Iris(float2 uv)
{
float2 n = UnitVectorToOctahedron(normalize(UnpackNormal(tex2D(_IrisNormal, uv)).rgb)) * 0.5 + 0.5;
float m = saturate(tex2D(_IrisMask, uv).r); // Iris Mask
float d = saturate(_IrisDistance); // Iris Distance
return float4(n.x, n.y, m, d);
}
half3 Translucency(float2 uv)
{
return tex2D(_TranslucencyMap, uv).rgb * _TranslucentColor.rgb;
}
// ------------------------------------------------------------------
// Unlit Shading Function
float4 UnlitShading(float3 diffColor)
{
return half4(diffColor, 1);
}
// ------------------------------------------------------------------
// Standard Shading Function
float4 StandardShading(float3 diffColor, float3 specColor, float oneMinusReflectivity, float smoothness, float3 normal, float3x3 worldVectors,
float anisotropy, float metallic, float3 viewDir, UnityLight light, UnityIndirect gi)
{
//Unpack world vectors
float3 tangent = worldVectors[0];
float3 bitangent = worldVectors[1];
//Normal shift
float shiftAmount = dot(normal, viewDir);
normal = shiftAmount < 0.0f ? normal + viewDir * (-shiftAmount + 1e-5f) : normal;
//Regular vectors
float NdotL = saturate(dot(normal, light.dir)); //sat?
float NdotV = abs(dot(normal, viewDir)); //abs?
float LdotV = dot(light.dir, viewDir);
float3 H = Unity_SafeNormalize(light.dir + viewDir);
float invLenLV = rsqrt(abs(2 + 2 * normalize(LdotV)));
//float invLenLV = rsqrt(abs(2 + 2 * LdotV));
//float NdotH = (NdotL + normalize(NdotV)) * invLenLV;
float NdotH = saturate(dot(normal, H));
//float NdotH = saturate((NdotL + normalize(NdotV)) * invLenLV);
//float H = (light.dir + viewDir) * invLenLV;
float LdotH = saturate(dot(light.dir, H));
//Tangent vectors
float TdotH = dot(tangent, H);
float TdotL = dot(tangent, light.dir);
float BdotH = dot(bitangent, H);
float BdotL = dot(bitangent, light.dir);
float TdotV = dot(viewDir, tangent);
float BdotV = dot(viewDir, bitangent);
//Fresnels
half grazingTerm = saturate(smoothness + (1 - oneMinusReflectivity));
float3 F = FresnelLerp(specColor, grazingTerm, NdotV); //Original Schlick - Replace from SRP?
//float3 fresnel0 = lerp(specColor, diffColor, metallic);
//float3 F = FresnelSchlick(fresnel0, 1.0, LdotH);
//Calculate roughness
float roughnessT;
float roughnessB;
float perceptualRoughness = SmoothnessToPerceptualRoughness(smoothness);
float roughness = PerceptualRoughnessToRoughness(perceptualRoughness);
ConvertAnisotropyToRoughness(roughness, anisotropy, roughnessT, roughnessB);
//Clamp roughness
//roughness = ClampRoughnessForAnalyticalLights(roughness);
roughnessT = ClampRoughnessForAnalyticalLights(roughnessT);
roughnessB = ClampRoughnessForAnalyticalLights(roughnessB);
//Visibility & Distribution terms
float V = SmithJointGGXAnisotropic(TdotV, BdotV, NdotV, TdotL, BdotL, NdotL, roughnessT, roughnessB);
float D = D_GGXAnisotropic(TdotH, BdotH, NdotH, roughnessT, roughnessB);
//Specular term
float3 specularTerm = V * D; //*UNITY_PI;
# ifdef UNITY_COLORSPACE_GAMMA
specularTerm = sqrt(max(1e-4h, specularTerm));
# endif
// specularTerm * nl can be NaN on Metal in some cases, use max() to make sure it's a sane value
specularTerm = max(0, specularTerm * NdotL);
#if defined(_SPECULARHIGHLIGHTS_OFF)
specularTerm = 0.0;
#endif
//Diffuse term
float diffuseTerm = DisneyDiffuse(NdotV, NdotL, LdotH, perceptualRoughness) * NdotL;// - Need this NdotL multiply?
//Reduction
half surfaceReduction;
# ifdef UNITY_COLORSPACE_GAMMA
surfaceReduction = 1.0 - 0.28*roughness*perceptualRoughness; // 1-0.28*x^3 as approximation for (1/(x^4+1))^(1/2.2) on the domain [0;1]
# else
surfaceReduction = 1.0 / (roughness*roughness + 1.0); // fade \in [0.5;1]
# endif
//Final
half3 color = (diffColor * (gi.diffuse + light.color * diffuseTerm))
+ specularTerm * light.color * FresnelTerm(specColor, LdotH)
+ surfaceReduction * gi.specular * FresnelLerp(specColor, grazingTerm, NdotV);
return half4(color, 1);
}
// ------------------------------------------------------------------
// Cloth Shading Function
//float3 ClothShading(FGBufferData GBuffer, float3 LobeRoughness, float3 LobeEnergy, float3 L, float3 V, half3 N)
float4 ClothShading(float3 diffColor, float3 specColor, float3 fuzzColor, float cloth, float oneMinusReflectivity, float smoothness, float3 normal, float3 viewDir, UnityLight light, UnityIndirect gi, float3x3 worldVectors, float anisotropy)
{
const float3 FuzzColor = saturate(fuzzColor);
const float Cloth = saturate(cloth);
//Regular vectors
float NdotL = saturate(dot(normal, light.dir)); //sat?
float NdotV = abs(dot(normal, viewDir)); //abs?
float LdotV = dot(light.dir, viewDir);
//float invLenLV = rsqrt(abs(2 + 2 * normalize(LdotV)));
////float invLenLV = rsqrt(abs(2 + 2 * LdotV));
//float NdotH = (NdotL + normalize(NdotV)) * invLenLV;
//float NdotH = saturate((NdotL + normalize(NdotV)) * invLenLV);
float3 H = Unity_SafeNormalize(light.dir + viewDir);
//float H = (light.dir + viewDir) * invLenLV;
float LdotH = saturate(dot(light.dir, H));
//float3 H = normalize(viewDir + light.dir);
//float NdotL = saturate(dot(normal, light.dir));
//float NdotV = saturate(abs(dot(normal, viewDir)) + 1e-5);
float NdotH = saturate(dot(normal, H));
float VdotH = saturate(dot(viewDir, H));
//float LdotH = saturate(dot(light.dir, H));
half grazingTerm = saturate(smoothness + (1 - oneMinusReflectivity));
// Diffuse
float perceptualRoughness = SmoothnessToPerceptualRoughness(smoothness);
float roughness = PerceptualRoughnessToRoughness(perceptualRoughness);
float diffuseTerm = DisneyDiffuse(NdotV, NdotL, LdotH, perceptualRoughness) * NdotL;// - Need this NdotL multiply?
// Cloth - Asperity Scattering - Inverse Beckmann Layer
float3 F1 = FresnelTerm(fuzzColor, LdotH);// FresnelLerp(fuzzColor, grazingTerm, NdotV);// FresnelTerm(FuzzColor, LdotH);// F_Schlick(FuzzColor, VdotH);
float D1 = D_InvGGX(roughness, NdotH);
float V1 = Vis_Cloth(NdotV, NdotL);
//Specular term
float3 specularTerm1 = V1 * D1; //*UNITY_PI;
# ifdef UNITY_COLORSPACE_GAMMA
specularTerm1 = sqrt(max(1e-4h, specularTerm1));
# endif
// specularTerm * nl can be NaN on Metal in some cases, use max() to make sure it's a sane value
// specularTerm1 = max(0, specularTerm1 * NdotL);
#if defined(_SPECULARHIGHLIGHTS_OFF)
specularTerm1 = 0.0;
#endif
float3 Spec1 = specularTerm1 * light.color * FresnelTerm(fuzzColor, LdotH);
// Generalized microfacet specular
/*float3 F2 = F_Schlick(specColor, VdotH);
float D2 = D_GGX(roughness, NdotH);
float V2 = Vis_SmithJointApprox(roughness, NdotV, NdotL);
float3 Spec2 = D2 * V2 * F2 * light.color;*/
//Unpack world vectors
float3 tangent = worldVectors[0];
float3 bitangent = worldVectors[1];
//Tangent vectors
float TdotH = dot(tangent, H);
float TdotL = dot(tangent, light.dir);
float BdotH = dot(bitangent, H);
float BdotL = dot(bitangent, light.dir);
float TdotV = dot(viewDir, tangent);
float BdotV = dot(viewDir, bitangent);
//Fresnels
float3 F2 = FresnelLerp(specColor, grazingTerm, NdotV);// FresnelTerm(specColor, LdotH);// FresnelLerp(specColor, grazingTerm, NdotV); //Original Schlick - Replace from SRP?
float roughnessT;
float roughnessB;
//float perceptualRoughness = SmoothnessToPerceptualRoughness(smoothness);
//float roughness = PerceptualRoughnessToRoughness(perceptualRoughness);
ConvertAnisotropyToRoughness(roughness, anisotropy, roughnessT, roughnessB);
//Clamp roughness
//roughness = ClampRoughnessForAnalyticalLights(roughness);
roughnessT = ClampRoughnessForAnalyticalLights(roughnessT);
roughnessB = ClampRoughnessForAnalyticalLights(roughnessB);
//Visibility & Distribution terms
float V2 = SmithJointGGXAnisotropic(TdotV, BdotV, NdotV, TdotL, BdotL, NdotL, roughnessT, roughnessB);
float D2 = D_GGXAnisotropic(TdotH, BdotH, NdotH, roughnessT, roughnessB);
//Specular term
float3 specularTerm2 = V2 * D2; //*UNITY_PI;
# ifdef UNITY_COLORSPACE_GAMMA
specularTerm2 = sqrt(max(1e-4h, specularTerm2));
# endif
// specularTerm * nl can be NaN on Metal in some cases, use max() to make sure it's a sane value
specularTerm2 = max(0, specularTerm2 * NdotL);
#if defined(_SPECULARHIGHLIGHTS_OFF)
specularTerm2 = 0.0;
#endif
float3 Spec2 = specularTerm2 * light.color * FresnelTerm(specColor, LdotH);
float3 Spec = lerp(Spec2, Spec1, Cloth);
//Reduction
half surfaceReduction;
# ifdef UNITY_COLORSPACE_GAMMA
surfaceReduction = 1.0 - 0.28*roughness*perceptualRoughness; // 1-0.28*x^3 as approximation for (1/(x^4+1))^(1/2.2) on the domain [0;1]
# else
surfaceReduction = 1.0 / (roughness*roughness + 1.0); // fade \in [0.5;1]
# endif
//Final
//half grazingTerm = saturate(smoothness + (1 - oneMinusReflectivity));
half3 color = (diffColor * (gi.diffuse + light.color * diffuseTerm))
+ Spec
+ surfaceReduction * gi.specular * FresnelLerp(specColor, grazingTerm, NdotV);
return half4(color, 1);
}
// ------------------------------------------------------------------
// Eye Shading Function
//float3 EyeShading(FGBufferData GBuffer, float3 LobeRoughness, float3 LobeEnergy, float3 L, float3 V, half3 N)
float4 EyeShading(float3 diffColor, float3 specColor, float3 viewDir, half3 normal, float smoothness, float oneMinusReflectivity, UnityLight light, UnityIndirect gi)
{
float3 H = normalize(viewDir + light.dir);
float NdotL = saturate(dot(normal, light.dir));
float NdotV = saturate(abs(dot(normal, viewDir)) + 1e-5);
float NdotH = saturate(dot(normal, H));
float VdotH = saturate(dot(viewDir, H));
float LdotH = saturate(dot(light.dir, H));
// Generalized microfacet specular
float perceptualRoughness = SmoothnessToPerceptualRoughness(smoothness);
float roughness = PerceptualRoughnessToRoughness(perceptualRoughness);
float D = D_GGX(roughness, NdotH);// *LobeEnergy[1];
float V = Vis_SmithJointApprox(roughness, NdotV, NdotL);
float3 F = F_Schlick(specColor, VdotH);
float3 specularTerm = V * D; //*UNITY_PI;
# ifdef UNITY_COLORSPACE_GAMMA
specularTerm = sqrt(max(1e-4h, specularTerm));
# endif
// specularTerm * nl can be NaN on Metal in some cases, use max() to make sure it's a sane value
specularTerm = max(0, specularTerm * NdotL);
#if defined(_SPECULARHIGHLIGHTS_OFF)
specularTerm = 0.0;
#endif
half grazingTerm = saturate(smoothness + (1 - oneMinusReflectivity));
half surfaceReduction;
# ifdef UNITY_COLORSPACE_GAMMA
surfaceReduction = 1.0 - 0.28*roughness*perceptualRoughness; // 1-0.28*x^3 as approximation for (1/(x^4+1))^(1/2.2) on the domain [0;1]
# else
surfaceReduction = 1.0 / (roughness*roughness + 1.0); // fade \in [0.5;1]
# endif
float diffuseTerm = DisneyDiffuse(NdotV, NdotL, LdotH, perceptualRoughness) * NdotL; // TODO - Unreal does not apply diffuse in Shading function
//Final
half3 color = (diffColor * (gi.diffuse + light.color * diffuseTerm))
+ specularTerm * light.color * FresnelTerm(specColor, LdotH)
+ surfaceReduction * gi.specular * FresnelLerp(specColor, grazingTerm, NdotV);
return half4(color, 1);
}
// ------------------------------------------------------------------
// Subsurface Shading Function
float3 SubsurfaceShadingSimple(float3 diffColor, float3 normal, float3 viewDir, float3 thickness, UnityLight light)
{
half3 vLTLight = light.dir + normal * 1;
half fLTDot = pow(saturate(dot(viewDir, -vLTLight)), 3.5) * 1.5;
half3 fLT = 1 * (fLTDot + 1.2) * (thickness);
return diffColor * ((light.color * fLT) * 0.4);
}
// ------------------------------------------------------------------
// Eye Subsurface Shading Function
//float3 EyeSubsurfaceShading(FGBufferData GBuffer, float3 L, float3 V, half3 N)
float3 EyeSubsurfaceShading(float3 diffColor, float3 specColor, float3 viewDir, half3 normal, float smoothness, float4 iris, UnityLight light)
{
float2 irisNormal = iris.rg;
float irisMask = iris.z;
float irisDistance = iris.w;
float3 H = normalize(viewDir + light.dir);
float VdotH = saturate(dot(viewDir, H));
float NdotV = saturate(abs(dot(normal, viewDir)) + 1e-5);
float LdotH = saturate(dot(light.dir, H));
// F_Schlick
//float F0 = GBuffer.Specular * 0.08;
//float Fc = Pow5(1 - VoH);
//float F = Fc + (1 - Fc) * F0;
float3 fresnel0 = lerp(specColor, diffColor, smoothness);
float3 F = FresnelSchlick(fresnel0, 1.0, LdotH);
//float IrisDistance = GBuffer.CustomData.w;
//float IrisMask = GBuffer.CustomData.z;
float3 IrisNormal;
IrisNormal = OctahedronToUnitVector(irisNormal * 2 - 1);
// Blend in the negative intersection normal to create some concavity
// Not great as it ties the concavity to the convexity of the cornea surface
// No good justification for that. On the other hand, if we're just looking to
// introduce some concavity, this does the job.
float3 CausticNormal = normalize(lerp(IrisNormal, -normal, irisMask*irisDistance));
float NdotL = saturate(dot(IrisNormal, light.dir));
float Power = lerp(12, 1, NdotL);
float Caustic = 0.6 + 0.2 * (Power + 1) * pow(saturate(dot(CausticNormal, light.dir)), Power);
float Iris = NdotL * Caustic;
// http://blog.stevemcauley.com/2011/12/03/energy-conserving-wrapped-diffuse/
float Wrap = 0.15;
float Sclera = saturate((dot(normal, light.dir) + Wrap) / (1 + Wrap) * (1 + Wrap));
return (1 - F) * lerp(Sclera, Iris, irisMask) * diffColor / UNITY_PI;
}
// ------------------------------------------------------------------
// Shading function selectors
//float3 SurfaceShading(/*FGBufferData GBuffer,*/ float3 LobeRoughness, float3 LobeEnergy, float3 L, float3 V, half3 N, uint2 Random)
float4 SurfaceShading(float3 diffColor, float3 specColor, float oneMinusReflectivity, float smoothness, float3 normal,
float3x3 worldVectors, float anisotropy, float4 customData, float metallic, float3 viewDir, UnityLight light, UnityIndirect gi)
{
#if defined(SHADINGMODELID_UNLIT)
{
return UnlitShading(diffColor);
}
#elif defined(SHADINGMODELID_STANDARD) || defined(SHADINGMODELID_SUBSURFACE) || defined(SHADINGMODELID_SKIN) || defined(SHADINGMODELID_FOLIAGE)
{
return StandardShading(diffColor, specColor, oneMinusReflectivity, smoothness,
normal, worldVectors, anisotropy, metallic, viewDir, light, gi);
}
#elif defined (SHADINGMODELID_CLEARCOAT)
{
return float4(1, 1, 1, 1); //ClearCoatShading(GBuffer, LobeRoughness, LobeEnergy, L, V, N);
}
#elif defined (SHADINGMODELID_CLOTH)
{
return ClothShading(diffColor, specColor, customData.rgb, customData.a, oneMinusReflectivity, smoothness, normal, viewDir, light, gi, worldVectors, anisotropy);
}
#elif defined (SHADINGMODELID_EYE)
{
return EyeShading(diffColor, specColor, viewDir, normal, smoothness, oneMinusReflectivity, light, gi); //EyeShading(GBuffer, LobeRoughness, LobeEnergy, L, V, N);
}
#endif
return float4(0, 0, 0, 0);
}
//float3 SubsurfaceShading(/*FGBufferData GBuffer,*/ float3 L, float3 V, half3 N, float Shadow, uint2 Random)
float3 SubsurfaceShading(float3 diffColor, float3 specColor, float3 normal, float smoothness, float3 viewDir, float4 customData, UnityLight light)
{
#if defined (SHADINGMODELID_SUBSURFACE)
{
return SubsurfaceShadingSimple(diffColor, normal, viewDir, customData.rgb, light);
}
#elif defined (SHADINGMODELID_SKIN)
{
return float3(0, 0, 0); //SubsurfaceShadingPreintegratedSkin(GBuffer, L, V, N);
}
#elif defined (SHADINGMODELID_FOLIAGE)
{
return float3(0, 0, 0); //SubsurfaceShadingTwoSided(SubsurfaceColor, L, V, N);
}
#elif defined (SHADINGMODELID_HAIR)
{
return float3(0, 0, 0); //HairShading(GBuffer, L, V, N, Shadow, 1, 0, Random);
}
#elif defined (SHADINGMODELID_EYE)
{
return EyeSubsurfaceShading(diffColor, specColor, viewDir, normal, smoothness, customData, light); //EyeSubsurfaceShading(GBuffer, L, V, N);
}
#endif
return float3(0, 0, 0);
}
//#endif UNITY_ADVANCED_SHADINGMODELS_INCLUDED
//-------------------------------------------------------------------------------------
// Lighting Helpers
// Glossy Environment
half3 Unity_AnisotropicGlossyEnvironment(UNITY_ARGS_TEXCUBE(tex), half4 hdr, Unity_GlossyEnvironmentData glossIn, half anisotropy) //Reference IBL from HD Pipe (Add half3 L input and replace R)
{
half perceptualRoughness = glossIn.roughness /* perceptualRoughness */;
// TODO: CAUTION: remap from Morten may work only with offline convolution, see impact with runtime convolution!
// For now disabled
#if 0
float m = PerceptualRoughnessToRoughness(perceptualRoughness); // m is the real roughness parameter
const float fEps = 1.192092896e-07F; // smallest such that 1.0+FLT_EPSILON != 1.0 (+1e-4h is NOT good here. is visibly very wrong)
float n = (2.0 / max(fEps, m*m)) - 2.0; // remap to spec power. See eq. 21 in --> https://dl.dropboxusercontent.com/u/55891920/papers/mm_brdf.pdf
n /= 4; // remap from n_dot_h formulatino to n_dot_r. See section "Pre-convolved Cube Maps vs Path Tracers" --> https://s3.amazonaws.com/docs.knaldtech.com/knald/1.0.0/lys_power_drops.html
perceptualRoughness = pow(2 / (n + 2), 0.25); // remap back to square root of real roughness (0.25 include both the sqrt root of the conversion and sqrt for going from roughness to perceptualRoughness)
#else
// MM: came up with a surprisingly close approximation to what the #if 0'ed out code above does.
perceptualRoughness = perceptualRoughness*(1.7 - 0.7*perceptualRoughness);
#endif
half mip = perceptualRoughnessToMipmapLevel(perceptualRoughness);
half3 R = glossIn.reflUVW;// -half3(anisotropy, 0, 0);
half4 rgbm = UNITY_SAMPLE_TEXCUBE_LOD(tex, R, mip);
return DecodeHDR(rgbm, hdr);
}
// Indirect Specular
inline half3 UnityGI_AnisotropicIndirectSpecular(UnityGIInput data, half occlusion, Unity_GlossyEnvironmentData glossIn, half anisotropy, half3x3 worldVectors)
{
half3 specular;
float3 tangentX = worldVectors[0];
float3 tangentY = worldVectors[1];
float3 N = worldVectors[2];
float3 V = data.worldViewDir;
float3 iblNormalWS = GetAnisotropicModifiedNormal(tangentY, N, V, anisotropy);
float3 iblR = reflect(-V, iblNormalWS);
#ifdef UNITY_SPECCUBE_BOX_PROJECTION
// we will tweak reflUVW in glossIn directly (as we pass it to Unity_GlossyEnvironment twice for probe0 and probe1), so keep original to pass into BoxProjectedCubemapDirection
half3 originalReflUVW = glossIn.reflUVW;
glossIn.reflUVW = BoxProjectedCubemapDirection(iblR, data.worldPos, data.probePosition[0], data.boxMin[0], data.boxMax[0]);
#endif
#ifdef _GLOSSYREFLECTIONS_OFF
specular = unity_IndirectSpecColor.rgb;
#else
half3 env0 = Unity_AnisotropicGlossyEnvironment(UNITY_PASS_TEXCUBE(unity_SpecCube0), data.probeHDR[0], glossIn, anisotropy);
//half3 env0 = Unity_AnisotropicGlossyEnvironment(UNITY_PASS_TEXCUBE(unity_SpecCube0), data.probeHDR[0], glossIn, anisotropy, L); //Reference IBL from HD Pipe
#ifdef UNITY_SPECCUBE_BLENDING
const float kBlendFactor = 0.99999;
float blendLerp = data.boxMin[0].w;
UNITY_BRANCH
if (blendLerp < kBlendFactor)
{
#ifdef UNITY_SPECCUBE_BOX_PROJECTION
glossIn.reflUVW = BoxProjectedCubemapDirection(iblR, data.worldPos, data.probePosition[1], data.boxMin[1], data.boxMax[1]);
#endif
half3 env1 = Unity_AnisotropicGlossyEnvironment(UNITY_PASS_TEXCUBE_SAMPLER(unity_SpecCube1, unity_SpecCube0), data.probeHDR[1], glossIn, anisotropy);
//half3 env1 = Unity_AnisotropicGlossyEnvironment(UNITY_PASS_TEXCUBE_SAMPLER(unity_SpecCube1, unity_SpecCube0), data.probeHDR[1], glossIn, anisotropy, L); //Reference IBL from HD Pipe
specular = lerp(env1, env0, blendLerp);
}
else
{
specular = env0;
}
#else
specular = env0;
#endif
#endif
return specular * occlusion;// *weightOverPdf; //Reference IBL from HD Pipe
//return specular * occlusion * weightOverPdf; //Reference IBL from HD Pipe
}
// Global Illumination
inline UnityGI UnityAnisotropicGlobalIllumination(UnityGIInput data, half occlusion, half3 normalWorld, Unity_GlossyEnvironmentData glossIn, half anisotropy, half3x3 worldVectors)
{
UnityGI o_gi = UnityGI_Base(data, occlusion, normalWorld);
o_gi.indirect.specular = UnityGI_AnisotropicIndirectSpecular(data, occlusion, glossIn, anisotropy, worldVectors);
return o_gi;
}
//-------------------------------------------------------------------------------------
// Lighting Functions
//Surface Description
struct SurfaceOutputAdvanced
{
fixed3 Albedo; // base (diffuse or specular) color
fixed3 Normal; // tangent space normal, if written
half3 Emission;
half Metallic; // 0=non-metal, 1=metal
// Smoothness is the user facing name, it should be perceptual smoothness but user should not have to deal with it.
// Everywhere in the code you meet smoothness it is perceptual smoothness
half Smoothness; // 0=rough, 1=smooth
half Occlusion; // occlusion (default 1)
fixed Alpha; // alpha for transparencies
half3 Tangent;
half Anisotropy;
half4 CustomData;
float3x3 WorldVectors;
//half ShadingModel;
};
inline half4 LightingAdvanced(SurfaceOutputAdvanced s, half3 viewDir, UnityGI gi)
{
s.Normal = normalize(s.Normal);
half oneMinusReflectivity;
half3 specColor;
s.Albedo = DiffuseAndSpecularFromMetallic(s.Albedo, s.Metallic, /*out*/ specColor, /*out*/ oneMinusReflectivity);
// shader relies on pre-multiply alpha-blend (_SrcBlend = One, _DstBlend = OneMinusSrcAlpha)
// this is necessary to handle transparency in physically correct way - only diffuse component gets affected by alpha
half outputAlpha;
s.Albedo = PreMultiplyAlpha(s.Albedo, s.Alpha, oneMinusReflectivity, /*out*/ outputAlpha);
half4 c = SurfaceShading(s.Albedo, specColor, oneMinusReflectivity, s.Smoothness, s.Normal, s.WorldVectors, s.Anisotropy, s.CustomData, s.Metallic, viewDir, gi.light, gi.indirect);
c.rgb += SubsurfaceShading(s.Albedo, specColor, s.Normal, s.Smoothness, viewDir, s.CustomData, gi.light);
//c.rgb += UNITY_BRDF_GI(s.Albedo, specColor, oneMinusReflectivity, s.Smoothness, s.Normal, viewDir, s.Occlusion, gi);
c.a = outputAlpha;
return c;
}
//This is pointless as always forward?
inline half4 LightingAdvanced_Deferred(SurfaceOutputAdvanced s, half3 viewDir, UnityGI gi, out half4 outGBuffer0, out half4 outGBuffer1, out half4 outGBuffer2)
{
half oneMinusReflectivity;
half3 specColor;
s.Albedo = DiffuseAndSpecularFromMetallic(s.Albedo, s.Metallic, /*out*/ specColor, /*out*/ oneMinusReflectivity);
half4 c = SurfaceShading(s.Albedo, specColor, oneMinusReflectivity, s.Smoothness, s.Normal, s.WorldVectors, s.Anisotropy, s.CustomData, s.Metallic, viewDir, gi.light, gi.indirect);
c.rgb += SubsurfaceShading(s.Albedo, specColor, s.Normal, s.Smoothness, viewDir, s.CustomData, gi.light);
UnityStandardData data;
data.diffuseColor = s.Albedo;
data.occlusion = s.Occlusion;
data.specularColor = specColor;
data.smoothness = s.Smoothness;
data.normalWorld = s.Normal;
UnityStandardDataToGbuffer(data, outGBuffer0, outGBuffer1, outGBuffer2);
half4 emission = half4(s.Emission + c.rgb, 1);
return emission;
}
inline void LightingAdvanced_GI(SurfaceOutputAdvanced s, UnityGIInput data, inout UnityGI gi)
{
#if defined(UNITY_PASS_DEFERRED) && UNITY_ENABLE_REFLECTION_BUFFERS
gi = UnityGlobalIllumination(data, s.Occlusion, s.Normal);
#else
Unity_GlossyEnvironmentData g = UnityGlossyEnvironmentSetup(s.Smoothness, data.worldViewDir, s.Normal, lerp(unity_ColorSpaceDielectricSpec.rgb, s.Albedo, s.Metallic));
gi = UnityAnisotropicGlobalIllumination(data, s.Occlusion, s.Normal, g, s.Anisotropy, s.WorldVectors);
#endif
}
///END
//#pragma target 5.0
#pragma surface surf Advanced vertex:vert alpha
#pragma glsl
#pragma debug
inline float4 unity_multiply_float(float4 arg1, float4 arg2)
{
return arg1 * arg2;
}
inline float unity_multiply_float(float arg1, float arg2)
{
return arg1 * arg2;
}
sampler2D Texture_02787904_5090_4666_a7c8_97507f02d498_Uniform;
float4 Color_c9de3ed1_a353_4808_af95_5a93b2d8ea8d_Uniform;
sampler2D Texture_71f3d401_2df9_4089_9d97_b67c1150fd8f_Uniform;
sampler2D Texture_8d2e732f_5ca2_405f_9835_5f727d9e43e2_Uniform;
float Vector1_1a947b3b_f0d1_47e4_923c_a34e01736c82_Uniform;
float Vector1_1f0b0b76_65f8_4986_8eb5_9f7ef1373895_Uniform;
float Vector1_d193efae_d745_43f0_8f92_f814516da592_Uniform;
struct Input
{
float4 color : COLOR;
half4 meshUV0;
float4 worldTangent;
float3 worldNormal;
INTERNAL_DATA
};
void vert(inout appdata_full v, out Input o)
{
UNITY_INITIALIZE_OUTPUT(Input,o);
o.meshUV0 = v.texcoord;
o.worldTangent = float4(UnityObjectToWorldDir(v.tangent.xyz), v.tangent.w);
}
void surf(Input IN, inout SurfaceOutputAdvanced o)
{
half4 uv0 = IN.meshUV0;
float3 worldSpaceTangent = normalize(IN.worldTangent.xyz);
float3 worldSpaceNormal = normalize(IN.worldNormal);
float3 worldSpaceBitangent = cross(worldSpaceNormal, worldSpaceTangent) * IN.worldTangent.w;
float4 UV_9f41e2a6_ad5a_46ca_b34c_f60ac2c321f9_UV = uv0;
float4 Texture_02787904_5090_4666_a7c8_97507f02d498 = tex2D(Texture_02787904_5090_4666_a7c8_97507f02d498_Uniform, (UV_9f41e2a6_ad5a_46ca_b34c_f60ac2c321f9_UV.xy));
float4 Multiply_5f63430a_31df_4533_b412_89748a592b6c_Output = unity_multiply_float(Texture_02787904_5090_4666_a7c8_97507f02d498, Color_c9de3ed1_a353_4808_af95_5a93b2d8ea8d_Uniform);
float4 Texture_71f3d401_2df9_4089_9d97_b67c1150fd8f = float4(UnpackNormal(tex2D(Texture_71f3d401_2df9_4089_9d97_b67c1150fd8f_Uniform, uv0.xy)), 0);
float4 Texture_8d2e732f_5ca2_405f_9835_5f727d9e43e2 = tex2D(Texture_8d2e732f_5ca2_405f_9835_5f727d9e43e2_Uniform, uv0.xy);
float Multiply_f05d7ce8_6386_4302_bde1_cc1806075819_Output = unity_multiply_float(Texture_8d2e732f_5ca2_405f_9835_5f727d9e43e2.r, Vector1_1a947b3b_f0d1_47e4_923c_a34e01736c82_Uniform);
float Multiply_f4f05e7f_9461_4ef6_b868_a0a2b57c3a83_Output = unity_multiply_float(Texture_8d2e732f_5ca2_405f_9835_5f727d9e43e2.a, Vector1_1f0b0b76_65f8_4986_8eb5_9f7ef1373895_Uniform);
o.Albedo = Multiply_5f63430a_31df_4533_b412_89748a592b6c_Output;
o.Normal = Texture_71f3d401_2df9_4089_9d97_b67c1150fd8f;
o.Normal += 1e-6;
o.Metallic = Multiply_f05d7ce8_6386_4302_bde1_cc1806075819_Output;
o.Smoothness = Multiply_f4f05e7f_9461_4ef6_b868_a0a2b57c3a83_Output;
o.WorldVectors = float3x3(worldSpaceTangent, worldSpaceBitangent, worldSpaceNormal);
o.Anisotropy = Vector1_d193efae_d745_43f0_8f92_f814516da592_Uniform;
o.Alpha = Multiply_5f63430a_31df_4533_b412_89748a592b6c_Output.a;
}
ENDCG
}
FallBack "Diffuse"
CustomEditor "LegacyIlluminShaderGUI"
}

10
MaterialGraphProject/Assets/Matt/CharacterRendering/AnisotropicTransparent.shader.meta


fileFormatVersion: 2
guid: d6cf794d3b991c842ba5ee650aaf280a
timeCreated: 1495748613
licenseType: Pro
ShaderImporter:
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:

9
MaterialGraphProject/Assets/Matt/CharacterRendering/Challenger.meta


fileFormatVersion: 2
guid: bbb00072bc4c43e45b7c53c3db0f2dbc
folderAsset: yes
timeCreated: 1495745555
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

1001
MaterialGraphProject/Assets/Matt/CharacterRendering/Challenger/Chal_Rig.fbx
文件差异内容过多而无法显示
查看文件

696
MaterialGraphProject/Assets/Matt/CharacterRendering/Challenger/Chal_Rig.fbx.meta


fileFormatVersion: 2
guid: 6a0af412b3bd5e4429eb52b218255660
timeCreated: 1430294420
licenseType: Store
ModelImporter:
serializedVersion: 18
fileIDToRecycleName:
100000: //RootNode
100002: challenger_beard
100004: challenger_Belt
100006: challenger_BeltBuckle
100008: challenger_boots
100010: challenger_dress
100012: challenger_eyes_refl
100014: challenger_eyes_refl 1
100016: challenger_eyes_refl2
100018: challenger_fingers
100020: challenger_FrontGorget
100022: challenger_FrontGorget_PntCnstLoc
100024: challenger_FrontKnife
100026: challenger_geo_grp
100028: challenger_Gorget_Ik
100030: challenger_Gorget_PvLoc
100032: challenger_hair
100034: challenger_hands
100036: challenger_Head
100038: challenger_head
100040: challenger_helm
100042: challenger_Helmet
100044: challenger_Hips
100046: challenger_hood
100048: challenger_Jaw
100050: challenger_knife
100052: challenger_LeftArm
100054: challenger_LeftArmorStrap01
100056: challenger_LeftArmorStrap02
100058: challenger_LeftEye
100060: challenger_LeftFoot
100062: challenger_LeftForeArm
100064: challenger_LeftForeArmRoll
100066: challenger_LeftHand
100068: challenger_LeftHandIndex1
100070: challenger_LeftHandIndex2
100072: challenger_LeftHandIndex3
100074: challenger_LeftHandIndex4
100076: challenger_LeftHandMiddle1
100078: challenger_LeftHandMiddle2
100080: challenger_LeftHandMiddle3
100082: challenger_LeftHandMiddle4
100084: challenger_LeftHandPinky1
100086: challenger_LeftHandPinky2
100088: challenger_LeftHandPinky3
100090: challenger_LeftHandPinky4
100092: challenger_LeftHandProp
100094: challenger_LeftHandRing1
100096: challenger_LeftHandRing2
100098: challenger_LeftHandRing3
100100: challenger_LeftHandRing4
100102: challenger_LeftHandThumb1
100104: challenger_LeftHandThumb2
100106: challenger_LeftHandThumb3
100108: challenger_LeftHandThumb4
100110: challenger_LeftHemetFlap
100112: challenger_LeftLeg
100114: challenger_LeftLowerEyelid
100116: challenger_LeftShoulder
100118: challenger_LeftShoulderpad
100120: challenger_LeftToeBase
100122: challenger_LeftUpLeg
100124: challenger_LeftUpperEyelid
100126: challenger_Neck
100128: challenger_Neck1
100130: challenger_pants
100132: challenger_RearGorget
100134: challenger_RearGorget_OriCnstLoc
100136: challenger_RearGorget_PntCnstLoc
100138: challenger_RearSword
100140: challenger_RearSword_Strap_01
100142: challenger_RearSword_Strap_02
100144: challenger_RearSword_Strap_03
100146: challenger_RearSword_Strap_04
100148: challenger_Reference
100150: challenger_RightArm
100152: challenger_RightArmorStrap01
100154: challenger_RightArmorStrap02
100156: challenger_RightEye
100158: challenger_RightFoot
100160: challenger_RightForeArm
100162: challenger_RightForeArmRoll
100164: challenger_RightHand
100166: challenger_RightHandIndex1
100168: challenger_RightHandIndex2
100170: challenger_RightHandIndex3
100172: challenger_RightHandIndex4
100174: challenger_RightHandMiddle1
100176: challenger_RightHandMiddle2
100178: challenger_RightHandMiddle3
100180: challenger_RightHandMiddle4
100182: challenger_RightHandPinky1
100184: challenger_RightHandPinky2
100186: challenger_RightHandPinky3
100188: challenger_RightHandPinky4
100190: challenger_RightHandProp
100192: challenger_RightHandRing1
100194: challenger_RightHandRing2
100196: challenger_RightHandRing3
100198: challenger_RightHandRing4
100200: challenger_RightHandThumb1
100202: challenger_RightHandThumb2
100204: challenger_RightHandThumb3
100206: challenger_RightHandThumb4
100208: challenger_RightHemetFlap
100210: challenger_RightLeg
100212: challenger_RightLowerEyelid
100214: challenger_RightShoulder
100216: challenger_RightShoulderpad
100218: challenger_RightToeBase
100220: challenger_RightUpLeg
100222: challenger_RightUpperEyelid
100224: challenger_sholders
100226: challenger_Spine
100228: challenger_Spine1
100230: challenger_Spine2
100232: challenger_Spine3
100234: challenger_sword_holder
100236: challenger_sword_holder2
100238: challenger_teeth
100240: challenger_tongue
100242: challenger_torso
100244: challenger_wound
100246: dress_frontLeft_jnt1
100248: dress_frontLeft_jnt2
100250: dress_frontLeft_jnt3
100252: dress_frontLeft_jnt4
100254: dress_frontLeft_jnt5
100256: dress_frontLeft_jnt6
100258: dress_frontRight_jnt1
100260: dress_frontRight_jnt2
100262: dress_frontRight_jnt3
100264: dress_frontRight_jnt4
100266: dress_frontRight_jnt5
100268: dress_frontRight_jnt6
100270: dress_rearLeft_jnt1
100272: dress_rearLeft_jnt2
100274: dress_rearLeft_jnt3
100276: dress_rearLeft_jnt4
100278: dress_rearLeft_jnt5
100280: dress_rearLeft_jnt6
100282: dress_rearRight_jnt1
100284: dress_rearRight_jnt2
100286: dress_rearRight_jnt3
100288: dress_rearRight_jnt4
100290: dress_rearRight_jnt5
100292: dress_rearRight_jnt6
100294: left_beard_jnt01
100296: left_beard_jnt02
100298: left_beard_jnt03
100300: left_beard_jnt04
100302: left_beard_jnt05
100304: left_beard_jnt06
100306: left_beard_jnt07
100308: left_beard_jnt08
100310: left_beard_jnt09
100312: left_beard_jnt10
100314: left_beard_jnt11
100316: left_beard_jnt12
100318: left_beard_jnt13
100320: left_eyeBrow_jnt01
100322: left_eyeBrow_jnt02
100324: left_eyeBrow_jnt03
100326: left_eyeBrow_jnt04
100328: left_lowerEyelash_jnt01
100330: left_lowerEyelash_jnt02
100332: left_lowerEyelash_jnt03
100334: left_upperEyelash_jnt01
100336: left_upperEyelash_jnt02
100338: left_upperEyelash_jnt03
100340: LeftArmorStrap_AimLoc
100342: LeftArmorStrap_AimNull
100344: right_beard_jnt01
100346: right_beard_jnt02
100348: right_beard_jnt03
100350: right_beard_jnt04
100352: right_beard_jnt05
100354: right_beard_jnt06
100356: right_beard_jnt07
100358: right_beard_jnt08
100360: right_beard_jnt09
100362: right_beard_jnt10
100364: right_beard_jnt11
100366: right_beard_jnt12
100368: right_beard_jnt13
100370: right_beard_jnt14
100372: right_beard_jnt15
100374: right_eyeBrow_jnt01
100376: right_eyeBrow_jnt02
100378: right_eyeBrow_jnt03
100380: right_eyeBrow_jnt04
100382: right_lowerEyelash_jnt01
100384: right_lowerEyelash_jnt02
100386: right_lowerEyelash_jnt03
100388: right_upperEyelash_jnt01
100390: right_upperEyelash_jnt02
100392: right_upperEyelash_jnt03
100394: RightArmorStrap_AimLoc
100396: RightArmorStrap_AimNull
100398: challenger_Ctrl_BeltEffector
100400: challenger_Ctrl_BeltEffector_OFFSET_GRP
100402: challenger_Ctrl_FrontGorgetEffector
100404: challenger_Ctrl_FrontGorgetEffector_OFFSET_GRP
100406: challenger_Ctrl_FrontKnifeEffector
100408: challenger_Ctrl_FrontKnifeEffector_OFFSET_GRP
100410: challenger_Ctrl_HelmetEffector
100412: challenger_Ctrl_HelmetEffector_OFFSET_GRP
100414: challenger_Ctrl_Jaw_OFFSET_GRP
100416: challenger_Ctrl_JawEffector
100418: challenger_Ctrl_LeftHemetFlapEffector
100420: challenger_Ctrl_LeftHemetFlapEffector_OFFSET_GRP
100422: challenger_Ctrl_LeftShoulderpadEffector
100424: challenger_Ctrl_LeftShoulderpadEffector_OFFSET_GRP
100426: challenger_Ctrl_RearGorgetEffector
100428: challenger_Ctrl_RearGorgetEffector_OFFSET_GRP
100430: challenger_Ctrl_RearSwordEffector
100432: challenger_Ctrl_RearSwordEffector_OFFSET_GRP
100434: challenger_Ctrl_RightHemetFlapEffector
100436: challenger_Ctrl_RightHemetFlapEffector_OFFSET_GRP
100438: challenger_Ctrl_RightShoulderpadEffector
100440: challenger_Ctrl_RightShoulderpadEffector_OFFSET_GRP
100442: challenger_CustomRig_grp
100444: challenger_eyes_ctrl
100446: challenger_eyes_null
100448: challenger_leftHandProp_ctrl
100450: challenger_leftHandProp_null
100452: challenger_leftHandSpace_oriLoc
100454: challenger_propSpaceSwitch_grp
100456: challenger_RearSword_Grp
100458: challenger_RearSword_Ik_01
100460: challenger_RearSword_Ik_02
100462: challenger_RearSword_Ik_AimGrp
100464: challenger_RearSword_Ik_OriGrp
100466: challenger_RearSword_PosLoc
100468: challenger_RearSword_UpLoc
100470: challenger_rightHandProp_ctrl
100472: challenger_rightHandProp_null
100474: challenger_rightHandSpace_oriLoc
100476: challenger_worldSpace_oriLoc
100478: correctiveBlendShape_grp
100480: facialHair_rivets
100482: l_eye_ctrl
100484: l_eye_null
100486: left_beard_rivet01
100488: left_beard_rivet02
100490: left_beard_rivet03
100492: left_beard_rivet04
100494: left_beard_rivet05
100496: left_beard_rivet06
100498: left_beard_rivet07
100500: left_beard_rivet08
100502: left_beard_rivet09
100504: left_beard_rivet10
100506: left_beard_rivet11
100508: left_beard_rivet12
100510: left_beard_rivet13
100512: left_eyeBrow_rivet01
100514: left_eyeBrow_rivet02
100516: left_eyeBrow_rivet03
100518: left_eyeBrow_rivet04
100520: left_lowerEyelash_rivet01
100522: left_lowerEyelash_rivet02
100524: left_lowerEyelash_rivet03
100526: left_upperEyelash_rivet01
100528: left_upperEyelash_rivet02
100530: left_upperEyelash_rivet03
100532: r_eye_ctrl
100534: r_eye_null
100536: right_beard_rivet01
100538: right_beard_rivet02
100540: right_beard_rivet03
100542: right_beard_rivet04
100544: right_beard_rivet05
100546: right_beard_rivet06
100548: right_beard_rivet07
100550: right_beard_rivet08
100552: right_beard_rivet09
100554: right_beard_rivet10
100556: right_beard_rivet11
100558: right_beard_rivet12
100560: right_beard_rivet13
100562: right_beard_rivet14
100564: right_beard_rivet15
100566: right_eyeBrow_rivet01
100568: right_eyeBrow_rivet02
100570: right_eyeBrow_rivet03
100572: right_eyeBrow_rivet04
100574: right_lowerEyelash_rivet01
100576: right_lowerEyelash_rivet02
100578: right_lowerEyelash_rivet03
100580: right_upperEyelash_rivet01
100582: right_upperEyelash_rivet02
100584: right_upperEyelash_rivet03
400000: //RootNode
400002: challenger_beard
400004: challenger_Belt
400006: challenger_BeltBuckle
400008: challenger_boots
400010: challenger_dress
400012: challenger_eyes_refl
400014: challenger_eyes_refl 1
400016: challenger_eyes_refl2
400018: challenger_fingers
400020: challenger_FrontGorget
400022: challenger_FrontGorget_PntCnstLoc
400024: challenger_FrontKnife
400026: challenger_geo_grp
400028: challenger_Gorget_Ik
400030: challenger_Gorget_PvLoc
400032: challenger_hair
400034: challenger_hands
400036: challenger_Head
400038: challenger_head
400040: challenger_helm
400042: challenger_Helmet
400044: challenger_Hips
400046: challenger_hood
400048: challenger_Jaw
400050: challenger_knife
400052: challenger_LeftArm
400054: challenger_LeftArmorStrap01
400056: challenger_LeftArmorStrap02
400058: challenger_LeftEye
400060: challenger_LeftFoot
400062: challenger_LeftForeArm
400064: challenger_LeftForeArmRoll
400066: challenger_LeftHand
400068: challenger_LeftHandIndex1
400070: challenger_LeftHandIndex2
400072: challenger_LeftHandIndex3
400074: challenger_LeftHandIndex4
400076: challenger_LeftHandMiddle1
400078: challenger_LeftHandMiddle2
400080: challenger_LeftHandMiddle3
400082: challenger_LeftHandMiddle4
400084: challenger_LeftHandPinky1
400086: challenger_LeftHandPinky2
400088: challenger_LeftHandPinky3
400090: challenger_LeftHandPinky4
400092: challenger_LeftHandProp
400094: challenger_LeftHandRing1
400096: challenger_LeftHandRing2
400098: challenger_LeftHandRing3
400100: challenger_LeftHandRing4
400102: challenger_LeftHandThumb1
400104: challenger_LeftHandThumb2
400106: challenger_LeftHandThumb3
400108: challenger_LeftHandThumb4
400110: challenger_LeftHemetFlap
400112: challenger_LeftLeg
400114: challenger_LeftLowerEyelid
400116: challenger_LeftShoulder
400118: challenger_LeftShoulderpad
400120: challenger_LeftToeBase
400122: challenger_LeftUpLeg
400124: challenger_LeftUpperEyelid
400126: challenger_Neck
400128: challenger_Neck1
400130: challenger_pants
400132: challenger_RearGorget
400134: challenger_RearGorget_OriCnstLoc
400136: challenger_RearGorget_PntCnstLoc
400138: challenger_RearSword
400140: challenger_RearSword_Strap_01
400142: challenger_RearSword_Strap_02
400144: challenger_RearSword_Strap_03
400146: challenger_RearSword_Strap_04
400148: challenger_Reference
400150: challenger_RightArm
400152: challenger_RightArmorStrap01
400154: challenger_RightArmorStrap02
400156: challenger_RightEye
400158: challenger_RightFoot
400160: challenger_RightForeArm
400162: challenger_RightForeArmRoll
400164: challenger_RightHand
400166: challenger_RightHandIndex1
400168: challenger_RightHandIndex2
400170: challenger_RightHandIndex3
400172: challenger_RightHandIndex4
400174: challenger_RightHandMiddle1
400176: challenger_RightHandMiddle2
400178: challenger_RightHandMiddle3
400180: challenger_RightHandMiddle4
400182: challenger_RightHandPinky1
400184: challenger_RightHandPinky2
400186: challenger_RightHandPinky3
400188: challenger_RightHandPinky4
400190: challenger_RightHandProp
400192: challenger_RightHandRing1
400194: challenger_RightHandRing2
400196: challenger_RightHandRing3
400198: challenger_RightHandRing4
400200: challenger_RightHandThumb1
400202: challenger_RightHandThumb2
400204: challenger_RightHandThumb3
400206: challenger_RightHandThumb4
400208: challenger_RightHemetFlap
400210: challenger_RightLeg
400212: challenger_RightLowerEyelid
400214: challenger_RightShoulder
400216: challenger_RightShoulderpad
400218: challenger_RightToeBase
400220: challenger_RightUpLeg
400222: challenger_RightUpperEyelid
400224: challenger_sholders
400226: challenger_Spine
400228: challenger_Spine1
400230: challenger_Spine2
400232: challenger_Spine3
400234: challenger_sword_holder
400236: challenger_sword_holder2
400238: challenger_teeth
400240: challenger_tongue
400242: challenger_torso
400244: challenger_wound
400246: dress_frontLeft_jnt1
400248: dress_frontLeft_jnt2
400250: dress_frontLeft_jnt3
400252: dress_frontLeft_jnt4
400254: dress_frontLeft_jnt5
400256: dress_frontLeft_jnt6
400258: dress_frontRight_jnt1
400260: dress_frontRight_jnt2
400262: dress_frontRight_jnt3
400264: dress_frontRight_jnt4
400266: dress_frontRight_jnt5
400268: dress_frontRight_jnt6
400270: dress_rearLeft_jnt1
400272: dress_rearLeft_jnt2
400274: dress_rearLeft_jnt3
400276: dress_rearLeft_jnt4
400278: dress_rearLeft_jnt5
400280: dress_rearLeft_jnt6
400282: dress_rearRight_jnt1
400284: dress_rearRight_jnt2
400286: dress_rearRight_jnt3
400288: dress_rearRight_jnt4
400290: dress_rearRight_jnt5
400292: dress_rearRight_jnt6
400294: left_beard_jnt01
400296: left_beard_jnt02
400298: left_beard_jnt03
400300: left_beard_jnt04
400302: left_beard_jnt05
400304: left_beard_jnt06
400306: left_beard_jnt07
400308: left_beard_jnt08
400310: left_beard_jnt09
400312: left_beard_jnt10
400314: left_beard_jnt11
400316: left_beard_jnt12
400318: left_beard_jnt13
400320: left_eyeBrow_jnt01
400322: left_eyeBrow_jnt02
400324: left_eyeBrow_jnt03
400326: left_eyeBrow_jnt04
400328: left_lowerEyelash_jnt01
400330: left_lowerEyelash_jnt02
400332: left_lowerEyelash_jnt03
400334: left_upperEyelash_jnt01
400336: left_upperEyelash_jnt02
400338: left_upperEyelash_jnt03
400340: LeftArmorStrap_AimLoc
400342: LeftArmorStrap_AimNull
400344: right_beard_jnt01
400346: right_beard_jnt02
400348: right_beard_jnt03
400350: right_beard_jnt04
400352: right_beard_jnt05
400354: right_beard_jnt06
400356: right_beard_jnt07
400358: right_beard_jnt08
400360: right_beard_jnt09
400362: right_beard_jnt10
400364: right_beard_jnt11
400366: right_beard_jnt12
400368: right_beard_jnt13
400370: right_beard_jnt14
400372: right_beard_jnt15
400374: right_eyeBrow_jnt01
400376: right_eyeBrow_jnt02
400378: right_eyeBrow_jnt03
400380: right_eyeBrow_jnt04
400382: right_lowerEyelash_jnt01
400384: right_lowerEyelash_jnt02
400386: right_lowerEyelash_jnt03
400388: right_upperEyelash_jnt01
400390: right_upperEyelash_jnt02
400392: right_upperEyelash_jnt03
400394: RightArmorStrap_AimLoc
400396: RightArmorStrap_AimNull
400398: challenger_Ctrl_BeltEffector
400400: challenger_Ctrl_BeltEffector_OFFSET_GRP
400402: challenger_Ctrl_FrontGorgetEffector
400404: challenger_Ctrl_FrontGorgetEffector_OFFSET_GRP
400406: challenger_Ctrl_FrontKnifeEffector
400408: challenger_Ctrl_FrontKnifeEffector_OFFSET_GRP
400410: challenger_Ctrl_HelmetEffector
400412: challenger_Ctrl_HelmetEffector_OFFSET_GRP
400414: challenger_Ctrl_Jaw_OFFSET_GRP
400416: challenger_Ctrl_JawEffector
400418: challenger_Ctrl_LeftHemetFlapEffector
400420: challenger_Ctrl_LeftHemetFlapEffector_OFFSET_GRP
400422: challenger_Ctrl_LeftShoulderpadEffector
400424: challenger_Ctrl_LeftShoulderpadEffector_OFFSET_GRP
400426: challenger_Ctrl_RearGorgetEffector
400428: challenger_Ctrl_RearGorgetEffector_OFFSET_GRP
400430: challenger_Ctrl_RearSwordEffector
400432: challenger_Ctrl_RearSwordEffector_OFFSET_GRP
400434: challenger_Ctrl_RightHemetFlapEffector
400436: challenger_Ctrl_RightHemetFlapEffector_OFFSET_GRP
400438: challenger_Ctrl_RightShoulderpadEffector
400440: challenger_Ctrl_RightShoulderpadEffector_OFFSET_GRP
400442: challenger_CustomRig_grp
400444: challenger_eyes_ctrl
400446: challenger_eyes_null
400448: challenger_leftHandProp_ctrl
400450: challenger_leftHandProp_null
400452: challenger_leftHandSpace_oriLoc
400454: challenger_propSpaceSwitch_grp
400456: challenger_RearSword_Grp
400458: challenger_RearSword_Ik_01
400460: challenger_RearSword_Ik_02
400462: challenger_RearSword_Ik_AimGrp
400464: challenger_RearSword_Ik_OriGrp
400466: challenger_RearSword_PosLoc
400468: challenger_RearSword_UpLoc
400470: challenger_rightHandProp_ctrl
400472: challenger_rightHandProp_null
400474: challenger_rightHandSpace_oriLoc
400476: challenger_worldSpace_oriLoc
400478: correctiveBlendShape_grp
400480: facialHair_rivets
400482: l_eye_ctrl
400484: l_eye_null
400486: left_beard_rivet01
400488: left_beard_rivet02
400490: left_beard_rivet03
400492: left_beard_rivet04
400494: left_beard_rivet05
400496: left_beard_rivet06
400498: left_beard_rivet07
400500: left_beard_rivet08
400502: left_beard_rivet09
400504: left_beard_rivet10
400506: left_beard_rivet11
400508: left_beard_rivet12
400510: left_beard_rivet13
400512: left_eyeBrow_rivet01
400514: left_eyeBrow_rivet02
400516: left_eyeBrow_rivet03
400518: left_eyeBrow_rivet04
400520: left_lowerEyelash_rivet01
400522: left_lowerEyelash_rivet02
400524: left_lowerEyelash_rivet03
400526: left_upperEyelash_rivet01
400528: left_upperEyelash_rivet02
400530: left_upperEyelash_rivet03
400532: r_eye_ctrl
400534: r_eye_null
400536: right_beard_rivet01
400538: right_beard_rivet02
400540: right_beard_rivet03
400542: right_beard_rivet04
400544: right_beard_rivet05
400546: right_beard_rivet06
400548: right_beard_rivet07
400550: right_beard_rivet08
400552: right_beard_rivet09
400554: right_beard_rivet10
400556: right_beard_rivet11
400558: right_beard_rivet12
400560: right_beard_rivet13
400562: right_beard_rivet14
400564: right_beard_rivet15
400566: right_eyeBrow_rivet01
400568: right_eyeBrow_rivet02
400570: right_eyeBrow_rivet03
400572: right_eyeBrow_rivet04
400574: right_lowerEyelash_rivet01
400576: right_lowerEyelash_rivet02
400578: right_lowerEyelash_rivet03
400580: right_upperEyelash_rivet01
400582: right_upperEyelash_rivet02
400584: right_upperEyelash_rivet03
4300000: challenger_boots
4300002: challenger_torso
4300004: challenger_helm
4300006: challenger_hood
4300008: challenger_head
4300010: challenger_pants
4300012: challenger_dress
4300014: challenger_sholders
4300016: challenger_hands
4300018: challenger_sword_holder
4300020: challenger_knife
4300022: challenger_sword_holder2
4300024: challenger_fingers
4300026: challenger_eyes_refl2
4300028: challenger_eyes_refl
4300030: challenger_eyes_refl 1
4300032: challenger_teeth
4300034: challenger_tongue
4300036: challenger_beard
4300038: challenger_hair
4300040: challenger_wound
4300042: challenger_eyes_refl
7400000: Take 001
9500000: //RootNode
13700000: challenger_beard
13700002: challenger_boots
13700004: challenger_dress
13700006: challenger_eyes_refl
13700008: challenger_eyes_refl 1
13700010: challenger_eyes_refl2
13700012: challenger_fingers
13700014: challenger_hair
13700016: challenger_hands
13700018: challenger_head
13700020: challenger_helm
13700022: challenger_hood
13700024: challenger_knife
13700026: challenger_pants
13700028: challenger_sholders
13700030: challenger_sword_holder
13700032: challenger_sword_holder2
13700034: challenger_teeth
13700036: challenger_tongue
13700038: challenger_torso
13700040: challenger_wound
materials:
importMaterials: 0
materialName: 0
materialSearch: 1
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
optimizeGameObjects: 0
motionNodeName:
animationCompression: 1
animationRotationError: .5
animationPositionError: .5
animationScaleError: .5
animationWrapMode: 0
extraExposedTransformPaths: []
clipAnimations: []
isReadable: 1
meshes:
lODScreenPercentages: []
globalScale: 1
meshCompression: 0
addColliders: 0
importBlendShapes: 1
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
optimizeMeshForGPU: 1
keepQuads: 0
weldVertices: 1
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVPackMargin: 4
useFileScale: 1
tangentSpace:
normalSmoothAngle: 60
splitTangentsAcrossUV: 1
normalImportMode: 0
tangentImportMode: 1
importAnimation: 1
copyAvatar: 0
humanDescription:
human: []
skeleton: []
armTwist: .5
foreArmTwist: .5
upperLegTwist: .5
legTwist: .5
armStretch: .0500000007
legStretch: .0500000007
feetSpacing: 0
rootMotionBoneName:
lastHumanDescriptionAvatarSource: {instanceID: 0}
animationType: 2
additionalBone: 0
userData:
assetBundleName:
assetBundleVariant:

部分文件因为文件数量过多而无法显示

正在加载...
取消
保存