浏览代码

restore FPTL (accidentally removed in 2c225f1da61cd431077d013f14435db0d39ce0f5)

/fptl_cleanup
Antti Tapaninen 7 年前
当前提交
9e51e66d
共有 76 个文件被更改,包括 7706 次插入0 次删除
  1. 9
      Assets/ScriptableRenderPipeline/fptl.meta
  2. 9
      Assets/TestScenes/FPTL.meta
  3. 12
      Assets/ScriptableRenderPipeline/fptl/FptlLighting.cs.meta
  4. 9
      Assets/ScriptableRenderPipeline/fptl/Internal-DeferredReflections.shader.meta
  5. 9
      Assets/ScriptableRenderPipeline/fptl/Internal-DeferredShading.shader.meta
  6. 12
      Assets/ScriptableRenderPipeline/fptl/LightDefinitions.cs.meta
  7. 9
      Assets/ScriptableRenderPipeline/fptl/lightlistbuild.compute.meta
  8. 466
      Assets/ScriptableRenderPipeline/fptl/scrbound.compute
  9. 9
      Assets/ScriptableRenderPipeline/fptl/scrbound.compute.meta
  10. 48
      Assets/ScriptableRenderPipeline/fptl/FinalPass.shader
  11. 9
      Assets/ScriptableRenderPipeline/fptl/FinalPass.shader.meta
  12. 9
      Assets/ScriptableRenderPipeline/fptl/lightlistbuild-clustered.compute.meta
  13. 90
      Assets/ScriptableRenderPipeline/fptl/ClusteredUtils.h
  14. 20
      Assets/ScriptableRenderPipeline/fptl/ClusteredUtils.h.meta
  15. 9
      Assets/ScriptableRenderPipeline/fptl/LightDefinitions.cs.hlsl.meta
  16. 172
      Assets/ScriptableRenderPipeline/fptl/StandardTest.shader
  17. 165
      Assets/ScriptableRenderPipeline/fptl/ReflectionTemplate.hlsl
  18. 9
      Assets/ScriptableRenderPipeline/fptl/LightingTemplate.hlsl.meta
  19. 9
      Assets/ScriptableRenderPipeline/fptl/ReflectionTemplate.hlsl.meta
  20. 9
      Assets/ScriptableRenderPipeline/fptl/StandardTest.shader.meta
  21. 9
      Assets/ScriptableRenderPipeline/fptl/TiledLightingTemplate.hlsl.meta
  22. 9
      Assets/ScriptableRenderPipeline/fptl/TiledLightingUtils.hlsl.meta
  23. 9
      Assets/ScriptableRenderPipeline/fptl/TiledReflectionTemplate.hlsl.meta
  24. 9
      Assets/ScriptableRenderPipeline/fptl/UnityStandardForwardNew.cginc.meta
  25. 9
      Assets/ScriptableRenderPipeline/fptl/LightingUtils.hlsl.meta
  26. 19
      Assets/ScriptableRenderPipeline/fptl/RegularForwardLightingTemplate.hlsl
  27. 25
      Assets/ScriptableRenderPipeline/fptl/RegularForwardLightingUtils.hlsl
  28. 18
      Assets/ScriptableRenderPipeline/fptl/RegularForwardReflectionTemplate.hlsl
  29. 9
      Assets/ScriptableRenderPipeline/fptl/RegularForwardLightingTemplate.hlsl.meta
  30. 9
      Assets/ScriptableRenderPipeline/fptl/RegularForwardLightingUtils.hlsl.meta
  31. 9
      Assets/ScriptableRenderPipeline/fptl/RegularForwardReflectionTemplate.hlsl.meta
  32. 154
      Assets/ScriptableRenderPipeline/fptl/UnityStandardForwardNew.cginc
  33. 9
      Assets/ScriptableRenderPipeline/fptl/LightBoundsDebug.shader.meta
  34. 9
      Assets/ScriptableRenderPipeline/fptl/LightingConvexHullUtils.hlsl.meta
  35. 9
      Assets/ScriptableRenderPipeline/fptl/lightlistbuild-bigtile.compute.meta
  36. 117
      Assets/ScriptableRenderPipeline/fptl/SortingComputeUtils.hlsl
  37. 9
      Assets/ScriptableRenderPipeline/fptl/SortingComputeUtils.hlsl.meta
  38. 9
      Assets/ScriptableRenderPipeline/fptl/Internal-DeferredComputeShading.compute.meta
  39. 139
      Assets/ScriptableRenderPipeline/fptl/LightingUtils.hlsl
  40. 281
      Assets/ScriptableRenderPipeline/fptl/LightingTemplate.hlsl
  41. 146
      Assets/ScriptableRenderPipeline/fptl/Internal-DeferredComputeShading.compute
  42. 131
      Assets/ScriptableRenderPipeline/fptl/LightingConvexHullUtils.hlsl
  43. 9
      Assets/ScriptableRenderPipeline/fptl/FPTLRenderPipeline.asset.meta
  44. 48
      Assets/ScriptableRenderPipeline/fptl/FPTLRenderPipeline.asset
  45. 440
      Assets/ScriptableRenderPipeline/fptl/lightlistbuild.compute
  46. 270
      Assets/ScriptableRenderPipeline/fptl/lightlistbuild-bigtile.compute
  47. 63
      Assets/ScriptableRenderPipeline/fptl/LightBoundsDebug.shader
  48. 140
      Assets/ScriptableRenderPipeline/fptl/Internal-DeferredShading.shader
  49. 146
      Assets/ScriptableRenderPipeline/fptl/Internal-DeferredReflections.shader
  50. 97
      Assets/ScriptableRenderPipeline/fptl/LightDefinitions.cs
  51. 229
      Assets/ScriptableRenderPipeline/fptl/LightDefinitions.cs.hlsl
  52. 19
      Assets/ScriptableRenderPipeline/fptl/TiledLightingTemplate.hlsl
  53. 100
      Assets/ScriptableRenderPipeline/fptl/TiledLightingUtils.hlsl
  54. 20
      Assets/ScriptableRenderPipeline/fptl/TiledReflectionTemplate.hlsl
  55. 558
      Assets/ScriptableRenderPipeline/fptl/lightlistbuild-clustered.compute
  56. 1001
      Assets/ScriptableRenderPipeline/fptl/FptlLighting.cs
  57. 9
      Assets/TestScenes/FPTL/FPTL.meta
  58. 8
      Assets/TestScenes/FPTL/FPTL.unity.meta
  59. 9
      Assets/TestScenes/FPTL/Materials.meta
  60. 1001
      Assets/TestScenes/FPTL/FPTL.unity
  61. 7
      Assets/TestScenes/FPTL/FPTL/LightingData.asset
  62. 8
      Assets/TestScenes/FPTL/FPTL/LightingData.asset.meta
  63. 891
      Assets/TestScenes/FPTL/FPTL/ReflectionProbe-0.exr
  64. 101
      Assets/TestScenes/FPTL/FPTL/ReflectionProbe-0.exr.meta
  65. 8
      Assets/TestScenes/FPTL/Materials/Custom_NewSurfaceShader.mat.meta
  66. 8
      Assets/TestScenes/FPTL/Materials/gray.mat.meta
  67. 8
      Assets/TestScenes/FPTL/Materials/FwdMat.mat.meta
  68. 80
      Assets/TestScenes/FPTL/Materials/Custom_NewSurfaceShader.mat
  69. 108
      Assets/TestScenes/FPTL/Materials/gray.mat
  70. 80
      Assets/TestScenes/fptl/Materials/FwdMat.mat

9
Assets/ScriptableRenderPipeline/fptl.meta


fileFormatVersion: 2
guid: 4ae727bb0a95bdf4aada784867082de5
folderAsset: yes
timeCreated: 1467916766
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

9
Assets/TestScenes/FPTL.meta


fileFormatVersion: 2
guid: e6f3b555b1b3c514f823d65f7bdbbf9e
folderAsset: yes
timeCreated: 1473161495
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

12
Assets/ScriptableRenderPipeline/fptl/FptlLighting.cs.meta


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

9
Assets/ScriptableRenderPipeline/fptl/Internal-DeferredReflections.shader.meta


fileFormatVersion: 2
guid: 3899e06d641c2cb4cbff794df0da536b
timeCreated: 1467917168
licenseType: Pro
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:

9
Assets/ScriptableRenderPipeline/fptl/Internal-DeferredShading.shader.meta


fileFormatVersion: 2
guid: 1c102a89f3460254a8c413dbdcd63a2a
timeCreated: 1467917168
licenseType: Pro
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:

12
Assets/ScriptableRenderPipeline/fptl/LightDefinitions.cs.meta


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

9
Assets/ScriptableRenderPipeline/fptl/lightlistbuild.compute.meta


fileFormatVersion: 2
guid: f54ef7cb596a714488693ef9cdaf63fb
timeCreated: 1467917168
licenseType: Pro
ComputeShaderImporter:
currentAPIMask: 4
userData:
assetBundleName:
assetBundleVariant:

466
Assets/ScriptableRenderPipeline/fptl/scrbound.compute


// The implementation is based on the demo on "fine pruned tiled lighting" published in GPU Pro 7.
// https://github.com/wolfgangfengel/GPU-Pro-7
#pragma kernel ScreenBoundsAABB
#include "..\common\ShaderBase.h"
#include "LightDefinitions.cs.hlsl"
uniform int g_iNrVisibLights;
uniform float4x4 g_mInvProjection;
uniform float4x4 g_mProjection;
StructuredBuffer<SFiniteLightBound> g_data : register( t0 );
#define FLT_EPSILON 1.192092896e-07F // smallest such that 1.0+FLT_EPSILON != 1.0
#define NR_THREADS 64
// output buffer
RWStructuredBuffer<float3> g_vBoundsBuffer : register( u0 );
#define MAX_PNTS 9 // strictly this should be 10=6+4 but we get more wavefronts and 10 seems to never hit (fingers crossed)
// However, worst case the plane that would be skipped if such an extreme case ever happened would be backplane
// clipping gets skipped which doesn't cause any errors.
// LDS (2496 bytes)
groupshared float posX[MAX_PNTS*8*2];
groupshared float posY[MAX_PNTS*8*2];
groupshared float posZ[MAX_PNTS*8*2];
groupshared float posW[MAX_PNTS*8*2];
groupshared unsigned int clipFlags[48];
unsigned int GetClip(const float4 P);
int ClipAgainstPlane(const int iSrcIndex, const int iNrSrcVerts, const int subLigt, const int p);
void CalcBound(out bool2 bIsMinValid, out bool2 bIsMaxValid, out float2 vMin, out float2 vMax, float4x4 InvProjection, float3 pos_view_space, float r);
#include "LightingConvexHullUtils.hlsl"
[numthreads(NR_THREADS, 1, 1)]
void ScreenBoundsAABB(uint threadID : SV_GroupIndex, uint3 u3GroupID : SV_GroupID)
{
uint groupID = u3GroupID.x;
//uint vindex = groupID * NR_THREADS + threadID;
unsigned int g = groupID;
unsigned int t = threadID;
const int subLigt = (int) (t/8);
const int lgtIndex = subLigt+(int) g*8;
const int sideIndex = (int) (t%8);
SFiniteLightBound lgtDat = g_data[lgtIndex];
const float3 boxX = lgtDat.boxAxisX.xyz;
const float3 boxY = lgtDat.boxAxisY.xyz;
const float3 boxZ = -lgtDat.boxAxisZ.xyz; // flip axis (so it points away from the light direction for a spot-light)
const float3 center = lgtDat.center.xyz;
const float radius = lgtDat.radius;
const float2 scaleXY = lgtDat.scaleXY;
{
if(sideIndex<6 && lgtIndex<(int) g_iNrVisibLights) // mask 2 out of 8 threads
{
float3 q0, q1, q2, q3;
GetQuad(q0, q1, q2, q3, boxX, boxY, boxZ, center, scaleXY, sideIndex);
const float4 vP0 = mul(g_mProjection, float4(q0, 1));
const float4 vP1 = mul(g_mProjection, float4(q1, 1));
const float4 vP2 = mul(g_mProjection, float4(q2, 1));
const float4 vP3 = mul(g_mProjection, float4(q3, 1));
// test vertices of one quad (of the convex hull) for intersection
const unsigned int uFlag0 = GetClip(vP0);
const unsigned int uFlag1 = GetClip(vP1);
const unsigned int uFlag2 = GetClip(vP2);
const unsigned int uFlag3 = GetClip(vP3);
const float4 vPnts[] = {vP0, vP1, vP2, vP3};
// screen-space AABB of one quad (assuming no intersection)
float3 vMin, vMax;
for(int k=0; k<4; k++)
{
float fW = vPnts[k].w;
float fS = fW<0 ? -1 : 1;
float fWabs = fW<0 ? (-fW) : fW;
fW = fS * (fWabs<FLT_EPSILON ? FLT_EPSILON : fWabs);
float3 vP = float3(vPnts[k].x/fW, vPnts[k].y/fW, vPnts[k].z/fW);
if(k==0) { vMin=vP; vMax=vP; }
vMax = max(vMax, vP); vMin = min(vMin, vP);
}
clipFlags[subLigt*6+sideIndex] = (uFlag0<<0) | (uFlag1<<6) | (uFlag2<<12) | (uFlag3<<18);
// store in clip buffer (only use these vMin and vMax if light is 100% visible in which case clipping isn't needed)
posX[subLigt*MAX_PNTS*2 + sideIndex] = vMin.x;
posY[subLigt*MAX_PNTS*2 + sideIndex] = vMin.y;
posZ[subLigt*MAX_PNTS*2 + sideIndex] = vMin.z;
posX[subLigt*MAX_PNTS*2 + sideIndex + 6] = vMax.x;
posY[subLigt*MAX_PNTS*2 + sideIndex + 6] = vMax.y;
posZ[subLigt*MAX_PNTS*2 + sideIndex + 6] = vMax.z;
}
}
// if not XBONE and not PLAYSTATION4 we need a memorybarrier here
// since we can't rely on the gpu cores being 64 wide.
// We need a pound define around this.
GroupMemoryBarrierWithGroupSync();
{
int f=0;
if(sideIndex==0 && lgtIndex<(int) g_iNrVisibLights)
{
// quick acceptance or rejection
unsigned int uCollectiveAnd = (unsigned int) -1;
unsigned int uCollectiveOr = 0;
for(f=0; f<6; f++)
{
unsigned int uFlagAnd = clipFlags[subLigt*6+f]&0x3f;
unsigned int uFlagOr = uFlagAnd;
for(int i=1; i<4; i++)
{
unsigned int uClipBits = (clipFlags[subLigt*6+f]>>(i*6))&0x3f;
uFlagAnd &= uClipBits;
uFlagOr |= uClipBits;
}
uCollectiveAnd &= uFlagAnd;
uCollectiveOr |= uFlagOr;
}
bool bSetBoundYet = false;
float3 vMin=0.0, vMax=0.0;
if(uCollectiveAnd!=0 || uCollectiveOr==0) // all invisible or all visible (early out)
{
if(uCollectiveOr==0) // all visible
{
for(f=0; f<6; f++)
{
const int sideIndex = f;
float3 vFaceMi = float3(posX[subLigt*MAX_PNTS*2 + sideIndex + 0], posY[subLigt*MAX_PNTS*2 + sideIndex + 0], posZ[subLigt*MAX_PNTS*2 + sideIndex + 0]);
float3 vFaceMa = float3(posX[subLigt*MAX_PNTS*2 + sideIndex + 6], posY[subLigt*MAX_PNTS*2 + sideIndex + 6], posZ[subLigt*MAX_PNTS*2 + sideIndex + 6]);
for(int k=0; k<2; k++)
{
float3 vP = k==0 ? vFaceMi : vFaceMa;
if(f==0 && k==0) { vMin=vP; vMax=vP; }
vMax = max(vMax, vP); vMin = min(vMin, vP);
}
}
bSetBoundYet=true;
}
}
else // :( need true clipping
{
for(f=0; f<6; f++)
{
float3 q0, q1, q2, q3;
GetQuad(q0, q1, q2, q3, boxX, boxY, boxZ, center, scaleXY, f);
// 4 vertices to a quad of the convex hull in post projection space
const float4 vP0 = mul(g_mProjection, float4(q0, 1));
const float4 vP1 = mul(g_mProjection, float4(q1, 1));
const float4 vP2 = mul(g_mProjection, float4(q2, 1));
const float4 vP3 = mul(g_mProjection, float4(q3, 1));
int iSrcIndex = 0;
int offs = iSrcIndex*MAX_PNTS+subLigt*MAX_PNTS*2;
// fill up source clip buffer with the quad
posX[offs+0]=vP0.x; posX[offs+1]=vP1.x; posX[offs+2]=vP2.x; posX[offs+3]=vP3.x;
posY[offs+0]=vP0.y; posY[offs+1]=vP1.y; posY[offs+2]=vP2.y; posY[offs+3]=vP3.y;
posZ[offs+0]=vP0.z; posZ[offs+1]=vP1.z; posZ[offs+2]=vP2.z; posZ[offs+3]=vP3.z;
posW[offs+0]=vP0.w; posW[offs+1]=vP1.w; posW[offs+2]=vP2.w; posW[offs+3]=vP3.w;
int iNrSrcVerts = 4;
// do true clipping
for(int p=0; p<6; p++)
{
const int nrVertsDst = ClipAgainstPlane(iSrcIndex, iNrSrcVerts, subLigt, p);
iSrcIndex = 1-iSrcIndex;
iNrSrcVerts = nrVertsDst;
if(iNrSrcVerts<3 || iNrSrcVerts>=MAX_PNTS) break;
}
// final clipped convex primitive is in src buffer
if(iNrSrcVerts>2)
{
int offs_src = iSrcIndex*MAX_PNTS+subLigt*MAX_PNTS*2;
for(int k=0; k<iNrSrcVerts; k++)
{
float4 vCur = float4(posX[offs_src+k], posY[offs_src+k], posZ[offs_src+k], posW[offs_src+k]);
// project and apply toward AABB
float3 vP = float3(vCur.x/vCur.w, vCur.y/vCur.w, vCur.z/vCur.w);
if(!bSetBoundYet) { vMin=vP; vMax=vP; bSetBoundYet=true; }
vMax = max(vMax, vP); vMin = min(vMin, vP);
}
}
}
////////////////////// look for camera frustum verts that need to be included. That is frustum vertices inside the convex hull for the light
int i=0;
for(i=0; i<8; i++) // establish 8 camera frustum vertices
{
float3 vVertPSpace = float3((i&1)!=0 ? 1 : (-1), (i&2)!=0 ? 1 : (-1), (i&4)!=0 ? 1 : 0);
float4 v4ViewSpace = mul(g_mInvProjection, float4(vVertPSpace,1));
float3 vViewSpace = float3(v4ViewSpace.x/v4ViewSpace.w, v4ViewSpace.y/v4ViewSpace.w, v4ViewSpace.z/v4ViewSpace.w);
posX[subLigt*MAX_PNTS*2 + i] = vViewSpace.x;
posY[subLigt*MAX_PNTS*2 + i] = vViewSpace.y;
posZ[subLigt*MAX_PNTS*2 + i] = vViewSpace.z;
}
// determine which camera frustum vertices are inside the convex hull
uint uVisibFl = 0xff;
for(f=0; f<6; f++)
{
float3 vP0, vN;
GetPlane(vP0, vN, boxX, boxY, boxZ, center, scaleXY, f);
for(i=0; i<8; i++)
{
float3 vViewSpace = float3(posX[subLigt*MAX_PNTS*2 + i], posY[subLigt*MAX_PNTS*2 + i], posZ[subLigt*MAX_PNTS*2 + i]);
uVisibFl &= ( dot(vViewSpace-vP0, vN)<0 ? 0xff : (~(1<<i)) );
}
}
// apply camera frustum vertices inside the convex hull to the AABB
for(i=0; i<8; i++)
{
if((uVisibFl&(1<<i))!=0)
{
float3 vP = float3((i&1)!=0 ? 1 : (-1), (i&2)!=0 ? 1 : (-1), (i&4)!=0 ? 1 : 0);
if(!bSetBoundYet) { vMin=vP; vMax=vP; bSetBoundYet=true; }
vMax = max(vMax, vP); vMin = min(vMin, vP);
}
}
}
// determine AABB bound in [-1;1]x[-1;1] screen space using bounding sphere.
// Use the result to make our already established AABB from the convex hull
// potentially tighter.
if(!bSetBoundYet)
{
// set the AABB off-screen
vMin = float3(-3,-3,-3);
vMax = float3(-2,-2,-2);
}
else
{
//if((center.z+radius)<0.0)
if( length(center)>radius)
{
float2 vMi, vMa;
bool2 bMi, bMa;
CalcBound(bMi, bMa, vMi, vMa, g_mInvProjection, center, radius);
vMin.xy = bMi ? max(vMin.xy, vMi) : vMin.xy;
vMax.xy = bMa ? min(vMax.xy, vMa) : vMax.xy;
}
#if USE_LEFTHAND_CAMERASPACE
if((center.z-radius)>0.0)
{
float4 vPosF = mul(g_mProjection, float4(0,0,center.z-radius,1));
vMin.z = max(vMin.z, vPosF.z/vPosF.w);
}
if((center.z+radius)>0.0)
{
float4 vPosB = mul(g_mProjection, float4(0,0,center.z+radius,1));
vMax.z = min(vMax.z, vPosB.z/vPosB.w);
}
#else
if((center.z+radius)<0.0)
{
float4 vPosF = mul(g_mProjection, float4(0,0,center.z+radius,1));
vMin.z = max(vMin.z, vPosF.z/vPosF.w);
}
if((center.z-radius)<0.0)
{
float4 vPosB = mul(g_mProjection, float4(0,0,center.z-radius,1));
vMax.z = min(vMax.z, vPosB.z/vPosB.w);
}
#endif
else
{
vMin = float3(-3,-3,-3);
vMax = float3(-2,-2,-2);
}
}
// we should consider doing a look-up here into a max depth mip chain
// to see if the light is occluded: vMin.z*VIEWPORT_SCALE_Z > MipTexelMaxDepth
//g_vBoundsBuffer[lgtIndex+0] = float3(0.5*vMin.x+0.5, -0.5*vMax.y+0.5, vMin.z*VIEWPORT_SCALE_Z);
//g_vBoundsBuffer[lgtIndex+g_iNrVisibLights] = float3(0.5*vMax.x+0.5, -0.5*vMin.y+0.5, vMax.z*VIEWPORT_SCALE_Z);
// changed for unity
g_vBoundsBuffer[lgtIndex+0] = float3(0.5*vMin.x+0.5, 0.5*vMin.y+0.5, vMin.z*VIEWPORT_SCALE_Z);
g_vBoundsBuffer[lgtIndex+(int) g_iNrVisibLights] = float3(0.5*vMax.x+0.5, 0.5*vMax.y+0.5, vMax.z*VIEWPORT_SCALE_Z);
}
}
}
float4 GenNewVert(const float4 vVisib, const float4 vInvisib, const int p);
int ClipAgainstPlane(const int iSrcIndex, const int iNrSrcVerts, const int subLigt, const int p)
{
int offs_src = iSrcIndex*MAX_PNTS+subLigt*MAX_PNTS*2;
int offs_dst = (1-iSrcIndex)*MAX_PNTS+subLigt*MAX_PNTS*2;
float4 vPrev = float4(posX[offs_src+(iNrSrcVerts-1)], posY[offs_src+(iNrSrcVerts-1)], posZ[offs_src+(iNrSrcVerts-1)], posW[offs_src+(iNrSrcVerts-1)]);
int nrVertsDst = 0;
unsigned int uMask = (1<<p);
bool bIsPrevVisib = (GetClip(vPrev)&uMask)==0;
for(int i=0; i<iNrSrcVerts; i++)
{
float4 vCur = float4(posX[offs_src+i], posY[offs_src+i], posZ[offs_src+i], posW[offs_src+i]);
bool bIsCurVisib = (GetClip(vCur)&uMask)==0;
if( (bIsCurVisib && !bIsPrevVisib) || (!bIsCurVisib && bIsPrevVisib) )
{
//assert(nrVertsDst<MAX_PNTS);
if(nrVertsDst<MAX_PNTS)
{
// generate new vertex
float4 vNew = GenNewVert(bIsCurVisib ? vCur : vPrev, bIsCurVisib ? vPrev : vCur, p);
posX[offs_dst+nrVertsDst]=vNew.x; posY[offs_dst+nrVertsDst]=vNew.y; posZ[offs_dst+nrVertsDst]=vNew.z; posW[offs_dst+nrVertsDst]=vNew.w;
++nrVertsDst;
}
}
if(bIsCurVisib)
{
//assert(nrVertsDst<MAX_PNTS);
if(nrVertsDst<MAX_PNTS)
{
posX[offs_dst+nrVertsDst]=vCur.x; posY[offs_dst+nrVertsDst]=vCur.y; posZ[offs_dst+nrVertsDst]=vCur.z; posW[offs_dst+nrVertsDst]=vCur.w;
++nrVertsDst;
}
}
vPrev = vCur;
bIsPrevVisib = bIsCurVisib;
}
return nrVertsDst;
}
unsigned int GetClip(const float4 P)
{
//-P.w <= P.x <= P.w
return ((P.x<-P.w)?1:0) | ((P.x>P.w)?2:0) | ((P.y<-P.w)?4:0) | ((P.y>P.w)?8:0) | ((P.z<0)?16:0) | ((P.z>P.w)?32:0);
}
float4 GenNewVert(const float4 vVisib, const float4 vInvisib, const int p)
{
const float fS = p==4 ? 0 : ((p&1)==0 ? -1 : 1);
const int index = ((uint) p)/2;
float x1 = index==0 ? vVisib.x : (index==1 ? vVisib.y : vVisib.z);
float x0 = index==0 ? vInvisib.x : (index==1 ? vInvisib.y : vInvisib.z);
//fS*((vVisib.w-vInvisib.w)*t + vInvisib.w) = (x1-x0)*t + x0;
const float fT = (fS*vInvisib.w-x0)/((x1-x0) - fS*(vVisib.w-vInvisib.w));
float4 vNew = vVisib*fT + vInvisib*(1-fT);
// just to be really anal we make sure the clipped against coordinate is precise
if(index==0) vNew.x = fS*vNew.w;
else if(index==1) vNew.y = fS*vNew.w;
else vNew.z = fS*vNew.w;
return vNew;
}
float4 TransformPlaneToPostSpace(float4x4 InvProjection, float4 plane)
{
return mul(plane, InvProjection);
}
float4 EvalPlanePair(float2 posXY_in, float r)
{
// rotate by 90 degrees to avoid potential division by zero
bool bMustFlip = abs(posXY_in.y)<abs(posXY_in.x);
float2 posXY = bMustFlip ? float2(-posXY_in.y, posXY_in.x) : posXY_in;
float fLenSQ = dot(posXY, posXY);
float D = posXY.y * sqrt(fLenSQ - r*r);
float4 res;
res.x = (-r*posXY.x - D) / fLenSQ;
res.z = (-r*posXY.x + D) / fLenSQ;
res.y = (-r-res.x*posXY.x) / posXY.y;
res.w = (-r-res.z*posXY.x) / posXY.y;
// rotate back by 90 degrees
res = bMustFlip ? float4(res.y, -res.x, res.w, -res.z) : res;
return res;
}
void CalcBound(out bool2 bIsMinValid, out bool2 bIsMaxValid, out float2 vMin, out float2 vMax, float4x4 InvProjection, float3 pos_view_space, float r)
{
float4 planeX = EvalPlanePair(float2(pos_view_space.x, pos_view_space.z), r);
float4 planeY = EvalPlanePair(float2(pos_view_space.y, pos_view_space.z), r);
#if USE_LEFTHAND_CAMERASPACE
planeX = planeX.zwxy; // need to swap left/right and top/bottom planes when using left hand system
planeY = planeY.zwxy;
#endif
bIsMinValid = bool2(planeX.z<0, planeY.z<0);
bIsMaxValid = bool2((-planeX.x)<0, (-planeY.x)<0);
// hopefully the compiler takes zeros into account
// should be the case since the transformation in TransformPlaneToPostSpace()
// is done using multiply-adds and not dot product instructions.
float4 planeX0 = TransformPlaneToPostSpace(InvProjection, float4(planeX.x, 0, planeX.y, 0));
float4 planeX1 = TransformPlaneToPostSpace(InvProjection, float4(planeX.z, 0, planeX.w, 0));
float4 planeY0 = TransformPlaneToPostSpace(InvProjection, float4(0, planeY.x, planeY.y, 0));
float4 planeY1 = TransformPlaneToPostSpace(InvProjection, float4(0, planeY.z, planeY.w, 0));
// convert planes to the forms (1,0,0,D) and (0,1,0,D)
// 2D bound is given by -D components
float2 A = -float2(planeX0.w / planeX0.x, planeY0.w / planeY0.y);
float2 B = -float2(planeX1.w / planeX1.x, planeY1.w / planeY1.y);
// Bound is complete
vMin = B;
vMax = A;
}

9
Assets/ScriptableRenderPipeline/fptl/scrbound.compute.meta


fileFormatVersion: 2
guid: e7a739144e735934b89a42a4b9d9e23c
timeCreated: 1467917168
licenseType: Pro
ComputeShaderImporter:
currentAPIMask: 4
userData:
assetBundleName:
assetBundleVariant:

48
Assets/ScriptableRenderPipeline/fptl/FinalPass.shader


// Final compositing pass, just does gamma conversion for now.
Shader "Hidden/FinalPass"
{
Properties { _MainTex ("Texture", any) = "" {} }
SubShader {
Pass {
ZTest Always Cull Off ZWrite Off
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma target 2.0
#pragma multi_compile __ UNITY_COLORSPACE_GAMMA
#include "UnityCG.cginc"
sampler2D _MainTex;
uniform float4 _MainTex_ST;
struct appdata_t {
float4 vertex : POSITION;
float2 texcoord : TEXCOORD0;
};
struct v2f {
float4 vertex : SV_POSITION;
float2 texcoord : TEXCOORD0;
};
v2f vert (appdata_t v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.texcoord = TRANSFORM_TEX(v.texcoord.xy, _MainTex);
return o;
}
fixed4 frag (v2f i) : SV_Target
{
return tex2D(_MainTex, i.texcoord);
}
ENDCG
}
}
Fallback Off
}

9
Assets/ScriptableRenderPipeline/fptl/FinalPass.shader.meta


fileFormatVersion: 2
guid: 5590f54ad211f594da4e687b698f2258
timeCreated: 1474297133
licenseType: Pro
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:

9
Assets/ScriptableRenderPipeline/fptl/lightlistbuild-clustered.compute.meta


fileFormatVersion: 2
guid: 4c2d6eb0553e2514bba3ea9a85d8c53c
timeCreated: 1475075348
licenseType: Pro
ComputeShaderImporter:
currentAPIMask: 4
userData:
assetBundleName:
assetBundleVariant:

90
Assets/ScriptableRenderPipeline/fptl/ClusteredUtils.h


#ifndef __CLUSTEREDUTILS_H__
#define __CLUSTEREDUTILS_H__
#ifndef FLT_EPSILON
#define FLT_EPSILON 1.192092896e-07f
#endif
float GetScaleFromBase(float base)
{
const float C = (float)(1 << g_iLog2NumClusters);
const float geomSeries = (1.0 - pow(base, C)) / (1 - base); // geometric series: sum_k=0^{C-1} base^k
return geomSeries / (g_fFarPlane - g_fNearPlane);
}
int SnapToClusterIdxFlex(float z_in, float suggestedBase, bool logBasePerTile)
{
#if USE_LEFTHAND_CAMERASPACE
float z = z_in;
#else
float z = -z_in;
#endif
float userscale = g_fClustScale;
if (logBasePerTile)
userscale = GetScaleFromBase(suggestedBase);
// using the inverse of the geometric series
const float dist = max(0, z - g_fNearPlane);
return (int)clamp(log2(dist * userscale * (suggestedBase - 1.0f) + 1) / log2(suggestedBase), 0.0, (float)((1 << g_iLog2NumClusters) - 1));
}
int SnapToClusterIdx(float z_in, float suggestedBase)
{
#ifdef ENABLE_DEPTH_TEXTURE_BACKPLANE
bool logBasePerTile = true; // resolved compile time
#else
bool logBasePerTile = false;
#endif
return SnapToClusterIdxFlex(z_in, suggestedBase, logBasePerTile);
}
float ClusterIdxToZFlex(int k, float suggestedBase, bool logBasePerTile)
{
float res;
float userscale = g_fClustScale;
if (logBasePerTile)
userscale = GetScaleFromBase(suggestedBase);
float dist = (pow(suggestedBase, (float)k) - 1.0) / (userscale * (suggestedBase - 1.0f));
res = dist + g_fNearPlane;
#if USE_LEFTHAND_CAMERASPACE
return res;
#else
return -res;
#endif
}
float ClusterIdxToZ(int k, float suggestedBase)
{
#ifdef ENABLE_DEPTH_TEXTURE_BACKPLANE
bool logBasePerTile = true; // resolved compile time
#else
bool logBasePerTile = false;
#endif
return ClusterIdxToZFlex(k, suggestedBase, logBasePerTile);
}
// generate a log-base value such that half of the clusters are consumed from near plane to max. opaque depth of tile.
float SuggestLogBase50(float tileFarPlane)
{
const float C = (float)(1 << g_iLog2NumClusters);
float normDist = clamp((tileFarPlane - g_fNearPlane) / (g_fFarPlane - g_fNearPlane), FLT_EPSILON, 1.0);
float suggested_base = pow((1.0 + sqrt(max(0.0, 1.0 - 4.0 * normDist * (1.0 - normDist)))) / (2.0 * normDist), 2.0 / C); //
return max(g_fClustBase, suggested_base);
}
// generate a log-base value such that (approximately) a quarter of the clusters are consumed from near plane to max. opaque depth of tile.
float SuggestLogBase25(float tileFarPlane)
{
const float C = (float)(1 << g_iLog2NumClusters);
float normDist = clamp((tileFarPlane - g_fNearPlane) / (g_fFarPlane - g_fNearPlane), FLT_EPSILON, 1.0);
float suggested_base = pow((1 / 2.3) * max(0.0, (0.8 / normDist) - 1), 4.0 / (C * 2)); // approximate inverse of d*x^4 + (-x) + (1-d) = 0 - d is normalized distance
return max(g_fClustBase, suggested_base);
}
#endif

20
Assets/ScriptableRenderPipeline/fptl/ClusteredUtils.h.meta


fileFormatVersion: 2
guid: cbef1fe8de4d82246b1f88d4dcc90833
timeCreated: 1475179985
licenseType: Pro
PluginImporter:
serializedVersion: 1
iconMap: {}
executionOrder: {}
isPreloaded: 0
platformData:
Any:
enabled: 1
settings: {}
Editor:
enabled: 0
settings:
DefaultValueInitialized: true
userData:
assetBundleName:
assetBundleVariant:

9
Assets/ScriptableRenderPipeline/fptl/LightDefinitions.cs.hlsl.meta


fileFormatVersion: 2
guid: 70f1451131ffdfa4798fd3c62bd0ec51
timeCreated: 1475179983
licenseType: Pro
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:

172
Assets/ScriptableRenderPipeline/fptl/StandardTest.shader


Shader "Experim/StdShader"
{
Properties
{
_Color("Color", Color) = (1,1,1,1)
_MainTex("Albedo", 2D) = "white" {}
_Cutoff("Alpha Cutoff", Range(0.0, 1.0)) = 0.5
_Glossiness("Smoothness", Range(0.0, 1.0)) = 0.5
_GlossMapScale("Smoothness Scale", Range(0.0, 1.0)) = 1.0
[Enum(Metallic Alpha,0,Albedo Alpha,1)] _SmoothnessTextureChannel ("Smoothness texture channel", Float) = 0
[Gamma] _Metallic("Metallic", Range(0.0, 1.0)) = 0.0
_MetallicGlossMap("Metallic", 2D) = "white" {}
[ToggleOff] _SpecularHighlights("Specular Highlights", Float) = 1.0
[ToggleOff] _GlossyReflections("Glossy Reflections", Float) = 1.0
_BumpScale("Scale", Float) = 1.0
_BumpMap("Normal Map", 2D) = "bump" {}
_Parallax ("Height Scale", Range (0.005, 0.08)) = 0.02
_ParallaxMap ("Height Map", 2D) = "black" {}
_OcclusionStrength("Strength", Range(0.0, 1.0)) = 1.0
_OcclusionMap("Occlusion", 2D) = "white" {}
_EmissionColor("Color", Color) = (0,0,0)
_EmissionMap("Emission", 2D) = "white" {}
_DetailMask("Detail Mask", 2D) = "white" {}
_DetailAlbedoMap("Detail Albedo x2", 2D) = "grey" {}
_DetailNormalMapScale("Scale", Float) = 1.0
_DetailNormalMap("Normal Map", 2D) = "bump" {}
[Enum(UV0,0,UV1,1)] _UVSec ("UV Set for secondary textures", Float) = 0
// Blending state
[HideInInspector] _Mode ("__mode", Float) = 0.0
[HideInInspector] _SrcBlend ("__src", Float) = 1.0
[HideInInspector] _DstBlend ("__dst", Float) = 0.0
[HideInInspector] _ZWrite ("__zw", Float) = 1.0
}
CGINCLUDE
#define UNITY_SETUP_BRDF_INPUT MetallicSetup
ENDCG
SubShader
{
Tags { "RenderType" = "Opaque" "PerformanceChecks" = "False" }
LOD 300
// ------------------------------------------------------------------
// Forward pass
Pass
{
Name "FORWARD"
Tags { "LightMode" = "ForwardSinglePass" }
Blend [_SrcBlend] [_DstBlend]
ZWrite [_ZWrite]
CGPROGRAM
#pragma target 4.5
// -------------------------------------
#pragma shader_feature _NORMALMAP
#pragma shader_feature _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON
#pragma shader_feature _EMISSION
#pragma shader_feature _METALLICGLOSSMAP
#pragma shader_feature ___ _DETAIL_MULX2
#pragma shader_feature _ _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
#pragma shader_feature _ _SPECULARHIGHLIGHTS_OFF
#pragma shader_feature _ _GLOSSYREFLECTIONS_OFF
#pragma shader_feature _PARALLAXMAP
#pragma multi_compile LIGHTMAP_OFF LIGHTMAP_ON
#pragma multi_compile DIRLIGHTMAP_OFF DIRLIGHTMAP_COMBINED DIRLIGHTMAP_SEPARATE
#pragma multi_compile DYNAMICLIGHTMAP_OFF DYNAMICLIGHTMAP_ON
#pragma multi_compile_fog
#pragma multi_compile TILED_FORWARD REGULAR_FORWARD
#pragma vertex vertForward
#pragma fragment fragForward
#include "UnityStandardForwardNew.cginc"
ENDCG
}
// ------------------------------------------------------------------
// Depth Only
Pass
{
Name "DEPTHONLY"
Tags { "LightMode" = "DepthOnly" }
Blend [_SrcBlend] [_DstBlend]
//ZWrite [_ZWrite]
ZWrite On ZTest LEqual
CGPROGRAM
#pragma target 4.5
// TODO: figure out what's needed here wrt. alpha test etc.
#pragma shader_feature _NORMALMAP
#pragma shader_feature _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON
#pragma shader_feature _EMISSION
#pragma shader_feature _METALLICGLOSSMAP
#pragma shader_feature ___ _DETAIL_MULX2
#pragma shader_feature _ _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
#pragma shader_feature _ _SPECULARHIGHLIGHTS_OFF
#pragma shader_feature _ _GLOSSYREFLECTIONS_OFF
#pragma shader_feature _PARALLAXMAP
#pragma multi_compile LIGHTMAP_OFF LIGHTMAP_ON
#pragma multi_compile DIRLIGHTMAP_OFF DIRLIGHTMAP_COMBINED DIRLIGHTMAP_SEPARATE
#pragma multi_compile DYNAMICLIGHTMAP_OFF DYNAMICLIGHTMAP_ON
#pragma multi_compile_fog
#pragma vertex vertForward
#pragma fragment fragNoLight
#include "UnityStandardForwardNew.cginc"
ENDCG
}
// ------------------------------------------------------------------
// Shadow rendering pass
Pass {
Name "ShadowCaster"
Tags { "LightMode" = "ShadowCaster" }
ZWrite On ZTest LEqual
CGPROGRAM
#pragma target 4.5
// -------------------------------------
#pragma shader_feature _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON
#pragma shader_feature _METALLICGLOSSMAP
#pragma multi_compile_shadowcaster
#pragma vertex vertShadowCaster
#pragma fragment fragShadowCaster
#include "UnityStandardShadow.cginc"
ENDCG
}
// ------------------------------------------------------------------
// Deferred pass
}
FallBack "VertexLit"
CustomEditor "StandardShaderGUI"
}

165
Assets/ScriptableRenderPipeline/fptl/ReflectionTemplate.hlsl


#ifndef __REFLECTIONTEMPLATE_H__
#define __REFLECTIONTEMPLATE_H__
#include "UnityCG.cginc"
#include "UnityStandardBRDF.cginc"
#include "UnityStandardUtils.cginc"
#include "UnityPBSLighting.cginc"
UNITY_DECLARE_ABSTRACT_CUBE_ARRAY(_reflCubeTextures);
UNITY_DECLARE_TEXCUBE(_reflRootCubeTexture);
//uniform int _reflRootSliceIndex;
uniform float _reflRootHdrDecodeMult;
uniform float _reflRootHdrDecodeExp;
half3 Unity_GlossyEnvironment (UNITY_ARGS_ABSTRACT_CUBE_ARRAY(tex), int sliceIndex, half4 hdr, Unity_GlossyEnvironmentData glossIn);
half3 distanceFromAABB(half3 p, half3 aabbMin, half3 aabbMax)
{
return max(max(p - aabbMax, aabbMin - p), half3(0.0, 0.0, 0.0));
}
float3 ExecuteReflectionList(uint start, uint numReflProbes, float3 vP, float3 vNw, float3 Vworld, float smoothness)
{
float3 worldNormalRefl = reflect(-Vworld, vNw);
float3 vspaceRefl = mul((float3x3) g_mWorldToView, worldNormalRefl).xyz;
float percRoughness = SmoothnessToPerceptualRoughness(smoothness);
UnityLight light;
light.color = 0;
light.dir = 0;
float3 ints = 0;
// root ibl begin
{
Unity_GlossyEnvironmentData g;
g.roughness = percRoughness;
g.reflUVW = worldNormalRefl;
half3 env0 = Unity_GlossyEnvironment(UNITY_PASS_TEXCUBE(_reflRootCubeTexture), float4(_reflRootHdrDecodeMult, _reflRootHdrDecodeExp, 0.0, 0.0), g);
//half3 env0 = Unity_GlossyEnvironment(UNITY_PASS_TEXCUBEARRAY(_reflCubeTextures), _reflRootSliceIndex, float4(_reflRootHdrDecodeMult, _reflRootHdrDecodeExp, 0.0, 0.0), g);
UnityIndirect ind;
ind.diffuse = 0;
ind.specular = env0;// * data.occlusion;
ints = EvalIndirectSpecular(light, ind);
}
// root ibl end
uint l=0;
// don't need the outer loop since the probes are sorted by volume type (currently one type in fact)
//while(l<numReflProbes)
if(numReflProbes>0)
{
uint uIndex = l<numReflProbes ? FetchIndex(start, l) : 0;
uint uLgtType = l<numReflProbes ? g_vLightData[uIndex].lightType : 0;
// specialized loop for sphere lights
while(l<numReflProbes && uLgtType==(uint) BOX_LIGHT)
{
SFiniteLightData lgtDat = g_vLightData[uIndex];
float3 vLp = lgtDat.lightPos.xyz;
float3 vecToSurfPos = vP - vLp; // vector from reflection volume to surface position in camera space
float3 posInReflVolumeSpace = float3( dot(vecToSurfPos, lgtDat.lightAxisX), dot(vecToSurfPos, lgtDat.lightAxisY), dot(vecToSurfPos, lgtDat.lightAxisZ) );
float blendDistance = lgtDat.probeBlendDistance;//unity_SpecCube1_ProbePosition.w; // will be set to blend distance for this probe
float3 sampleDir;
if((lgtDat.flags&IS_BOX_PROJECTED)!=0)
{
// For box projection, use expanded bounds as they are rendered; otherwise
// box projection artifacts when outside of the box.
//float4 boxMin = unity_SpecCube0_BoxMin - float4(blendDistance,blendDistance,blendDistance,0);
//float4 boxMax = unity_SpecCube0_BoxMax + float4(blendDistance,blendDistance,blendDistance,0);
//sampleDir = BoxProjectedCubemapDirection (worldNormalRefl, worldPos, unity_SpecCube0_ProbePosition, boxMin, boxMax);
float4 boxOuterDistance = float4( lgtDat.boxInnerDist + float3(blendDistance, blendDistance, blendDistance), 0.0 );
#if 0
// if rotation is NOT supported
sampleDir = BoxProjectedCubemapDirection(worldNormalRefl, posInReflVolumeSpace, float4(lgtDat.localCubeCapturePoint, 1.0), -boxOuterDistance, boxOuterDistance);
#else
float3 volumeSpaceRefl = float3( dot(vspaceRefl, lgtDat.lightAxisX), dot(vspaceRefl, lgtDat.lightAxisY), dot(vspaceRefl, lgtDat.lightAxisZ) );
float3 vPR = BoxProjectedCubemapDirection(volumeSpaceRefl, posInReflVolumeSpace, float4(lgtDat.localCubeCapturePoint, 1.0), -boxOuterDistance, boxOuterDistance); // Volume space corrected reflection vector
sampleDir = mul( (float3x3) g_mViewToWorld, vPR.x*lgtDat.lightAxisX + vPR.y*lgtDat.lightAxisY + vPR.z*lgtDat.lightAxisZ );
#endif
}
else
sampleDir = worldNormalRefl;
Unity_GlossyEnvironmentData g;
g.roughness = percRoughness;
g.reflUVW = sampleDir;
half3 env0 = Unity_GlossyEnvironment(UNITY_PASS_ABSTRACT_CUBE_ARRAY(_reflCubeTextures), lgtDat.sliceIndex, float4(lgtDat.lightIntensity, lgtDat.decodeExp, 0.0, 0.0), g);
UnityIndirect ind;
ind.diffuse = 0;
ind.specular = env0;// * data.occlusion;
//half3 rgb = UNITY_BRDF_PBS(0, data.specularColor, oneMinusReflectivity, data.smoothness, data.normalWorld, vWSpaceVDir, light, ind).rgb;
half3 rgb = EvalIndirectSpecular(light, ind);
// Calculate falloff value, so reflections on the edges of the Volume would gradually blend to previous reflection.
// Also this ensures that pixels not located in the reflection Volume AABB won't
// accidentally pick up reflections from this Volume.
//half3 distance = distanceFromAABB(worldPos, unity_SpecCube0_BoxMin.xyz, unity_SpecCube0_BoxMax.xyz);
half3 distance = distanceFromAABB(posInReflVolumeSpace, -lgtDat.boxInnerDist, lgtDat.boxInnerDist);
half falloff = saturate(1.0 - length(distance)/blendDistance);
ints = lerp(ints, rgb, falloff);
// next probe
++l; uIndex = l<numReflProbes ? FetchIndex(start, l) : 0;
uLgtType = l<numReflProbes ? g_vLightData[uIndex].lightType : 0;
}
//if(uLgtType!=BOX_LIGHT) ++l;
}
return ints;
}
half3 Unity_GlossyEnvironment (UNITY_ARGS_ABSTRACT_CUBE_ARRAY(tex), int sliceIndex, half4 hdr, Unity_GlossyEnvironmentData glossIn)
{
#if UNITY_GLOSS_MATCHES_MARMOSET_TOOLBAG2 && (SHADER_TARGET >= 30)
// TODO: remove pow, store cubemap mips differently
half perceptualRoughness = pow(glossIn.roughness, 3.0/4.0);
#else
half perceptualRoughness = glossIn.roughness; // MM: switched to this
#endif
//perceptualRoughness = sqrt(sqrt(2/(64.0+2))); // spec power to the square root of real roughness
#if 0
float m = perceptualRoughness*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
#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 = perceptualRoughness * UNITY_SPECCUBE_LOD_STEPS;
half4 rgbm = UNITY_SAMPLE_ABSTRACT_CUBE_ARRAY_LOD(tex, float4(glossIn.reflUVW.xyz, sliceIndex), mip);
return DecodeHDR(rgbm, hdr);
}
#endif

9
Assets/ScriptableRenderPipeline/fptl/LightingTemplate.hlsl.meta


fileFormatVersion: 2
guid: 055113b0dcb47d0468619612ccb7de75
timeCreated: 1476168722
licenseType: Pro
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:

9
Assets/ScriptableRenderPipeline/fptl/ReflectionTemplate.hlsl.meta


fileFormatVersion: 2
guid: 7e1ced85dc3e259469da295c01d95ecd
timeCreated: 1476168722
licenseType: Pro
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:

9
Assets/ScriptableRenderPipeline/fptl/StandardTest.shader.meta


fileFormatVersion: 2
guid: 8f28d6dbfdba66d4dbae80224aca5669
timeCreated: 1476168726
licenseType: Pro
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:

9
Assets/ScriptableRenderPipeline/fptl/TiledLightingTemplate.hlsl.meta


fileFormatVersion: 2
guid: b25f3fae508f5c04f8f15d77515e4a23
timeCreated: 1476168722
licenseType: Pro
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:

9
Assets/ScriptableRenderPipeline/fptl/TiledLightingUtils.hlsl.meta


fileFormatVersion: 2
guid: 25c458a8106d44444bea6b074b79cfdf
timeCreated: 1476168722
licenseType: Pro
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:

9
Assets/ScriptableRenderPipeline/fptl/TiledReflectionTemplate.hlsl.meta


fileFormatVersion: 2
guid: a9b744e06937f8d4ca633dfa63e357b4
timeCreated: 1476168722
licenseType: Pro
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:

9
Assets/ScriptableRenderPipeline/fptl/UnityStandardForwardNew.cginc.meta


fileFormatVersion: 2
guid: c185aa276c9670d4381a830ece205577
timeCreated: 1476168722
licenseType: Pro
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:

9
Assets/ScriptableRenderPipeline/fptl/LightingUtils.hlsl.meta


fileFormatVersion: 2
guid: 0f0336214df2a1845afb1ce1b72075f5
timeCreated: 1476376272
licenseType: Pro
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:

19
Assets/ScriptableRenderPipeline/fptl/RegularForwardLightingTemplate.hlsl


#ifndef __REGULARFORWARDLIGHTINGTEMPLATE_H__
#define __REGULARFORWARDLIGHTINGTEMPLATE_H__
#include "RegularForwardLightingUtils.hlsl"
#include "LightingTemplate.hlsl"
float3 ExecuteLightList(out uint numLightsProcessed, uint2 pixCoord, float3 vP, float3 vPw, float3 Vworld)
{
uint start = 0, numLights = 0;
GetCountAndStart(start, numLights, DIRECT_LIGHT);
numLightsProcessed = numLights; // mainly for debugging/heat maps
return ExecuteLightList(start, numLights, vP, vPw, Vworld);
}
#endif

25
Assets/ScriptableRenderPipeline/fptl/RegularForwardLightingUtils.hlsl


#ifndef __REGULARFORWARDLIGHTINGUTILS_H__
#define __REGULARFORWARDLIGHTINGUTILS_H__
#include "LightingUtils.hlsl"
StructuredBuffer<SFiniteLightData> g_vLightData;
Buffer<uint> g_vLightListMeshInst; // build on CPU if in use. direct lights first, then reflection probes.
uniform int g_numLights;
uniform int g_numReflectionProbes;
void GetCountAndStart(out uint start, out uint nrLights, uint model)
{
start = model==REFLECTION_LIGHT ? g_numLights : 0; // offset by numLights entries
nrLights = model==REFLECTION_LIGHT ? g_numReflectionProbes : g_numLights;
}
uint FetchIndex(const uint start, const uint l)
{
return g_vLightListMeshInst[start+l];
}
#endif

18
Assets/ScriptableRenderPipeline/fptl/RegularForwardReflectionTemplate.hlsl


#ifndef __REGULARFORWARDREFLECTIONTEMPLATE_H__
#define __REGULARFORWARDREFLECTIONTEMPLATE_H__
#include "RegularForwardLightingUtils.hlsl"
#include "ReflectionTemplate.hlsl"
float3 ExecuteReflectionList(out uint numReflectionProbesProcessed, uint2 pixCoord, float3 vP, float3 vNw, float3 Vworld, float smoothness)
{
uint start = 0, numReflectionProbes = 0;
GetCountAndStart(start, numReflectionProbes, REFLECTION_LIGHT);
numReflectionProbesProcessed = numReflectionProbes; // mainly for debugging/heat maps
return ExecuteReflectionList(start, numReflectionProbes, vP, vNw, Vworld, smoothness);
}
#endif

9
Assets/ScriptableRenderPipeline/fptl/RegularForwardLightingTemplate.hlsl.meta


fileFormatVersion: 2
guid: addc185d48decc34d9bf21cb3a4ea28c
timeCreated: 1476774180
licenseType: Pro
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:

9
Assets/ScriptableRenderPipeline/fptl/RegularForwardLightingUtils.hlsl.meta


fileFormatVersion: 2
guid: 13dff6ea8f6c55743a3cbb841066cc27
timeCreated: 1476774180
licenseType: Pro
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:

9
Assets/ScriptableRenderPipeline/fptl/RegularForwardReflectionTemplate.hlsl.meta


fileFormatVersion: 2
guid: 61d33edab0cf72c4e881ea8c05dcd596
timeCreated: 1476774180
licenseType: Pro
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:

154
Assets/ScriptableRenderPipeline/fptl/UnityStandardForwardNew.cginc


#ifndef UNITY_STANDARD_FORWARDNEW_INCLUDED
#define UNITY_STANDARD_FORWARDNEW_INCLUDED
// NOTE: had to split shadow functions into separate file,
// otherwise compiler gives trouble with LIGHTING_COORDS macro (in UnityStandardCore.cginc)
#include "UnityStandardConfig.cginc"
#include "UnityStandardCore.cginc"
struct VertexOutputForwardNew
{
float4 pos : SV_POSITION;
float4 tex : TEXCOORD0;
half4 ambientOrLightmapUV : TEXCOORD1; // SH or Lightmap UV
half4 tangentToWorldAndParallax[3] : TEXCOORD2; // [3x3:tangentToWorld | 1x3:empty]
LIGHTING_COORDS(5,6)
UNITY_FOG_COORDS(7)
UNITY_VERTEX_OUTPUT_STEREO
};
VertexOutputForwardNew vertForward(VertexInput v)
{
UNITY_SETUP_INSTANCE_ID(v);
VertexOutputForwardNew o;
UNITY_INITIALIZE_OUTPUT(VertexOutputForwardNew, o);
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
float4 posWorld = mul(unity_ObjectToWorld, v.vertex);
o.pos = UnityObjectToClipPos(v.vertex);
o.tex = TexCoords(v);
float3 normalWorld = UnityObjectToWorldNormal(v.normal);
#ifdef _TANGENT_TO_WORLD
float4 tangentWorld = float4(UnityObjectToWorldDir(v.tangent.xyz), v.tangent.w);
float3x3 tangentToWorld = CreateTangentToWorldPerVertex(normalWorld, tangentWorld.xyz, tangentWorld.w);
o.tangentToWorldAndParallax[0].xyz = tangentToWorld[0];
o.tangentToWorldAndParallax[1].xyz = tangentToWorld[1];
o.tangentToWorldAndParallax[2].xyz = tangentToWorld[2];
#else
o.tangentToWorldAndParallax[0].xyz = 0;
o.tangentToWorldAndParallax[1].xyz = 0;
o.tangentToWorldAndParallax[2].xyz = normalWorld;
#endif
o.ambientOrLightmapUV = VertexGIForward(v, posWorld, normalWorld);
UNITY_TRANSFER_FOG(o,o.pos);
return o;
}
#include "LightingUtils.hlsl"
static FragmentCommonData gdata;
static float occlusion;
half4 fragNoLight(VertexOutputForwardNew i) : SV_Target
{
float linZ = GetLinearZFromSVPosW(i.pos.w); // matching script side where camera space is right handed.
float3 vP = GetViewPosFromLinDepth(i.pos.xy, linZ);
float3 vPw = mul(g_mViewToWorld, float4(vP,1.0)).xyz;
float3 Vworld = normalize(mul((float3x3) g_mViewToWorld, -vP).xyz); // not same as unity_CameraToWorld
#ifdef _PARALLAXMAP
half3 tangent = i.tangentToWorldAndParallax[0].xyz;
half3 bitangent = i.tangentToWorldAndParallax[1].xyz;
half3 normal = i.tangentToWorldAndParallax[2].xyz;
float3 vDirForParallax = float3( dot(tangent, Vworld), dot(bitangent, Vworld), dot(normal, Vworld));
#else
float3 vDirForParallax = Vworld;
#endif
gdata = FragmentSetup(i.tex, -Vworld, vDirForParallax, i.tangentToWorldAndParallax, vPw); // eyeVec = -Vworld
return OutputForward (float4(0.0,0.0,0.0,1.0), gdata.alpha); // figure out some alpha test stuff
}
float3 EvalMaterial(UnityLight light, UnityIndirect ind)
{
return UNITY_BRDF_PBS(gdata.diffColor, gdata.specColor, gdata.oneMinusReflectivity, gdata.smoothness, gdata.normalWorld, -gdata.eyeVec, light, ind);
}
float3 EvalIndirectSpecular(UnityLight light, UnityIndirect ind)
{
return occlusion * UNITY_BRDF_PBS(gdata.diffColor, gdata.specColor, gdata.oneMinusReflectivity, gdata.smoothness, gdata.normalWorld, -gdata.eyeVec, light, ind);
}
#ifdef REGULAR_FORWARD
#include "RegularForwardLightingTemplate.hlsl"
#include "RegularForwardReflectionTemplate.hlsl"
#else
#include "TiledLightingTemplate.hlsl"
#include "TiledReflectionTemplate.hlsl"
#endif
half4 fragForward(VertexOutputForwardNew i) : SV_Target
{
float linZ = GetLinearZFromSVPosW(i.pos.w); // matching script side where camera space is right handed.
float3 vP = GetViewPosFromLinDepth(i.pos.xy, linZ);
float3 vPw = mul(g_mViewToWorld, float4(vP,1.0)).xyz;
float3 Vworld = normalize(mul((float3x3) g_mViewToWorld, -vP).xyz); // not same as unity_CameraToWorld
#ifdef _PARALLAXMAP
half3 tangent = i.tangentToWorldAndParallax[0].xyz;
half3 bitangent = i.tangentToWorldAndParallax[1].xyz;
half3 normal = i.tangentToWorldAndParallax[2].xyz;
float3 vDirForParallax = float3( dot(tangent, Vworld), dot(bitangent, Vworld), dot(normal, Vworld));
#else
float3 vDirForParallax = Vworld;
#endif
gdata = FragmentSetup(i.tex, -Vworld, vDirForParallax, i.tangentToWorldAndParallax, vPw); // eyeVec = -Vworld
uint2 pixCoord = ((uint2) i.pos.xy);
float atten = 1.0;
occlusion = Occlusion(i.tex.xy);
UnityGI gi = FragmentGI (gdata, occlusion, i.ambientOrLightmapUV, atten, DummyLight(), false);
uint numLightsProcessed = 0, numReflectionsProcessed = 0;
float3 res = 0;
// direct light contributions
res += ExecuteLightList(numLightsProcessed, pixCoord, vP, vPw, Vworld);
// specular GI
res += ExecuteReflectionList(numReflectionsProcessed, pixCoord, vP, gdata.normalWorld, Vworld, gdata.smoothness);
// diffuse GI
res += UNITY_BRDF_PBS (gdata.diffColor, gdata.specColor, gdata.oneMinusReflectivity, gdata.smoothness, gdata.normalWorld, -gdata.eyeVec, gi.light, gi.indirect).xyz;
res += UNITY_BRDF_GI (gdata.diffColor, gdata.specColor, gdata.oneMinusReflectivity, gdata.smoothness, gdata.normalWorld, -gdata.eyeVec, occlusion, gi);
//res = OverlayHeatMap(numLightsProcessed, res);
//UNITY_APPLY_FOG(i.fogCoord, res);
return OutputForward (float4(res,1.0), gdata.alpha);
}
#endif

9
Assets/ScriptableRenderPipeline/fptl/LightBoundsDebug.shader.meta


fileFormatVersion: 2
guid: 33f2a444e9120d34396d41e40795d712
timeCreated: 1477309800
licenseType: Pro
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:

9
Assets/ScriptableRenderPipeline/fptl/LightingConvexHullUtils.hlsl.meta


fileFormatVersion: 2
guid: 97c18f9b04997a34aa7a246dbc1b2fac
timeCreated: 1477394758
licenseType: Pro
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:

9
Assets/ScriptableRenderPipeline/fptl/lightlistbuild-bigtile.compute.meta


fileFormatVersion: 2
guid: b5507a2ffdae8a84f94211c10d428920
timeCreated: 1477394781
licenseType: Pro
ComputeShaderImporter:
currentAPIMask: 4
userData:
assetBundleName:
assetBundleVariant:

117
Assets/ScriptableRenderPipeline/fptl/SortingComputeUtils.hlsl


#ifndef __SORTINGCOMPUTEUTILS_H__
#define __SORTINGCOMPUTEUTILS_H__
unsigned int LimitPow2AndClamp(unsigned int value_in, unsigned int maxValue)
{
#if 0
unsigned int value = 1;
while(value<value_in && (value<<1)<=maxValue)
value<<=1;
return value_in==0 ? 0 : value;
#else
uint valpw2 = value_in==0 ? 0 : (1<<firstbithigh(value_in)); // firstbithigh(0) returns -1
valpw2 = max(valpw2, valpw2<<(valpw2!=value_in ? 1 : 0)); // max() just in case of overflow
return min(valpw2, maxValue);
#endif
}
// have to make this sort routine a macro unfortunately because hlsl doesn't take
// groupshared memory of unspecified length as an input parameter to a function.
// maxcapacity_in must be a power of two.
// all data from length_in and up to closest power of two will be filled with 0xffffffff
#define SORTLIST(data, length_in, maxcapacity_in, localThreadID_in, nrthreads_in) \
{ \
int length=(int) length_in, maxcapacity=(int) maxcapacity_in, localThreadID=(int) localThreadID_in, nrthreads=(int) nrthreads_in; \
\
const int N = (const int) LimitPow2AndClamp((unsigned int) length, (uint) maxcapacity); \
for(int t=length+localThreadID; t<N; t+=nrthreads) { data[t]=0xffffffff; } \
GroupMemoryBarrierWithGroupSync(); \
\
for(int k=2; k<=N; k=2*k) \
{ \
for(int j=k>>1; j>0; j=j>>1) \
{ \
for(int i=localThreadID; i<N; i+=nrthreads) \
{ \
int ixj=i^j; \
if((ixj)>i) \
{ \
const unsigned int Avalue = data[i]; \
const unsigned int Bvalue = data[ixj]; \
\
const bool mustSwap = ((i&k)!=0^(Avalue>Bvalue)) && Avalue!=Bvalue; \
if(mustSwap) \
{ \
data[i]=Bvalue; \
data[ixj]=Avalue; \
} \
} \
} \
\
GroupMemoryBarrierWithGroupSync(); \
} \
} \
}
// have to make this sort routine a macro unfortunately because hlsl doesn't take
// groupshared memory of unspecified length as an input parameter to a function.
// merge-sort is not in-place so two buffers are required: data and tmpdata.
// These must both have a capacity of at least length_in entries and initial
// input is assumed to be in data and results will be delivered in data.
#define MERGESORTLIST(data, tmpdata, length_in, localThreadID_in, nrthreads_in) \
{ \
int length=(int) length_in, localThreadID=(int) localThreadID_in, nrthreads=(int) nrthreads_in; \
\
for(int curr_size=1; curr_size<=length-1; curr_size = 2*curr_size) \
{ \
for(int left_start=localThreadID*(2*curr_size); left_start<(length-1); left_start+=nrthreads*(2*curr_size)) \
{ \
int mid = left_start + curr_size - 1; \
int right_end = min(left_start + 2*curr_size - 1, length-1); \
{ \
int l=left_start, m=mid, r=right_end; \
\
int i, j, k; \
\
int ol = l; \
int or = m+1; \
int sl = m - l + 1; \
int sr = r - m; \
\
for(int i=l; i<=r; i++) tmpdata[i] = data[i]; \
\
i = 0; j = 0; k = l; \
while (i < sl && j < sr) \
{ \
const uint lVal = tmpdata[ol+i]; \
const uint rVal = tmpdata[or+j]; \
bool pickLeft = lVal <= rVal; \
i = pickLeft ? (i+1) : i; \
j = pickLeft ? j : (j+1); \
data[k] = pickLeft ? lVal : rVal; \
k++; \
} \
\
while (i < sl) \
{ \
data[k] = tmpdata[ol+i]; \
i++; k++; \
} \
\
while (j < sr) \
{ \
data[k] = tmpdata[or+j]; \
j++; k++; \
} \
} \
} \
\
GroupMemoryBarrierWithGroupSync(); \
} \
}
#endif

9
Assets/ScriptableRenderPipeline/fptl/SortingComputeUtils.hlsl.meta


fileFormatVersion: 2
guid: 5c0b30845c471c449967253c8cdf5bc2
timeCreated: 1477583748
licenseType: Pro
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:

9
Assets/ScriptableRenderPipeline/fptl/Internal-DeferredComputeShading.compute.meta


fileFormatVersion: 2
guid: 6994e4f8a80d87b428cca7242cb32a0e
timeCreated: 1478685321
licenseType: Pro
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:

139
Assets/ScriptableRenderPipeline/fptl/LightingUtils.hlsl


#ifndef __LIGHTINGUTILS_H__
#define __LIGHTINGUTILS_H__
#include "..\common\ShaderBase.h"
#include "LightDefinitions.cs.hlsl"
uniform float4x4 g_mViewToWorld;
uniform float4x4 g_mWorldToView; // used for reflection only
uniform float4x4 g_mScrProjection;
uniform float4x4 g_mInvScrProjection;
uniform uint g_widthRT;
uniform uint g_heightRT;
float3 GetViewPosFromLinDepth(float2 v2ScrPos, float fLinDepth)
{
float fSx = g_mScrProjection[0].x;
//float fCx = g_mScrProjection[2].x;
float fCx = g_mScrProjection[0].z;
float fSy = g_mScrProjection[1].y;
//float fCy = g_mScrProjection[2].y;
float fCy = g_mScrProjection[1].z;
#if USE_LEFTHAND_CAMERASPACE
return fLinDepth*float3( ((v2ScrPos.x-fCx)/fSx), ((v2ScrPos.y-fCy)/fSy), 1.0 );
#else
return fLinDepth*float3( -((v2ScrPos.x+fCx)/fSx), -((v2ScrPos.y+fCy)/fSy), 1.0 );
#endif
}
float GetLinearZFromSVPosW(float posW)
{
#if USE_LEFTHAND_CAMERASPACE
float linZ = posW;
#else
float linZ = -posW;
#endif
return linZ;
}
float GetLinearDepth(float zDptBufSpace) // 0 is near 1 is far
{
// todo (simplify): m22 is zero and m23 is +1/-1 (depends on left/right hand proj)
float m22 = g_mInvScrProjection[2].z, m23 = g_mInvScrProjection[2].w;
float m32 = g_mInvScrProjection[3].z, m33 = g_mInvScrProjection[3].w;
return (m22*zDptBufSpace+m23) / (m32*zDptBufSpace+m33);
//float3 vP = float3(0.0f,0.0f,zDptBufSpace);
//float4 v4Pres = mul(g_mInvScrProjection, float4(vP,1.0));
//return v4Pres.z / v4Pres.w;
}
bool SampleDebugFont(int2 pixCoord, uint digit)
{
if (pixCoord.x < 0 || pixCoord.y < 0 || pixCoord.x >= 5 || pixCoord.y >= 9 || digit > 9)
return false;
#define PACK_BITS25(_x0,_x1,_x2,_x3,_x4,_x5,_x6,_x7,_x8,_x9,_x10,_x11,_x12,_x13,_x14,_x15,_x16,_x17,_x18,_x19,_x20,_x21,_x22,_x23,_x24) (_x0|(_x1<<1)|(_x2<<2)|(_x3<<3)|(_x4<<4)|(_x5<<5)|(_x6<<6)|(_x7<<7)|(_x8<<8)|(_x9<<9)|(_x10<<10)|(_x11<<11)|(_x12<<12)|(_x13<<13)|(_x14<<14)|(_x15<<15)|(_x16<<16)|(_x17<<17)|(_x18<<18)|(_x19<<19)|(_x20<<20)|(_x21<<21)|(_x22<<22)|(_x23<<23)|(_x24<<24))
#define _ 0
#define x 1
uint fontData[9][2] = {
{ PACK_BITS25(_,_,x,_,_, _,_,x,_,_, _,x,x,x,_, x,x,x,x,x, _,_,_,x,_), PACK_BITS25(x,x,x,x,x, _,x,x,x,_, x,x,x,x,x, _,x,x,x,_, _,x,x,x,_) },
{ PACK_BITS25(_,x,_,x,_, _,x,x,_,_, x,_,_,_,x, _,_,_,_,x, _,_,_,x,_), PACK_BITS25(x,_,_,_,_, x,_,_,_,x, _,_,_,_,x, x,_,_,_,x, x,_,_,_,x) },
{ PACK_BITS25(x,_,_,_,x, x,_,x,_,_, x,_,_,_,x, _,_,_,x,_, _,_,x,x,_), PACK_BITS25(x,_,_,_,_, x,_,_,_,_, _,_,_,x,_, x,_,_,_,x, x,_,_,_,x) },
{ PACK_BITS25(x,_,_,_,x, _,_,x,_,_, _,_,_,_,x, _,_,x,_,_, _,x,_,x,_), PACK_BITS25(x,_,x,x,_, x,_,_,_,_, _,_,_,x,_, x,_,_,_,x, x,_,_,_,x) },
{ PACK_BITS25(x,_,_,_,x, _,_,x,_,_, _,_,_,x,_, _,x,x,x,_, _,x,_,x,_), PACK_BITS25(x,x,_,_,x, x,x,x,x,_, _,_,x,_,_, _,x,x,x,_, _,x,x,x,x) },
{ PACK_BITS25(x,_,_,_,x, _,_,x,_,_, _,_,x,_,_, _,_,_,_,x, x,_,_,x,_), PACK_BITS25(_,_,_,_,x, x,_,_,_,x, _,_,x,_,_, x,_,_,_,x, _,_,_,_,x) },
{ PACK_BITS25(x,_,_,_,x, _,_,x,_,_, _,x,_,_,_, _,_,_,_,x, x,x,x,x,x), PACK_BITS25(_,_,_,_,x, x,_,_,_,x, _,x,_,_,_, x,_,_,_,x, _,_,_,_,x) },
{ PACK_BITS25(_,x,_,x,_, _,_,x,_,_, x,_,_,_,_, x,_,_,_,x, _,_,_,x,_), PACK_BITS25(x,_,_,_,x, x,_,_,_,x, _,x,_,_,_, x,_,_,_,x, x,_,_,_,x) },
{ PACK_BITS25(_,_,x,_,_, x,x,x,x,x, x,x,x,x,x, _,x,x,x,_, _,_,_,x,_), PACK_BITS25(_,x,x,x,_, _,x,x,x,_, _,x,_,_,_, _,x,x,x,_, _,x,x,x,_) }
};
#undef _
#undef x
#undef PACK_BITS25
return (fontData[8 - pixCoord.y][digit >= 5] >> ((digit % 5) * 5 + pixCoord.x)) & 1;
}
bool SampleDebugFontNumber(int2 coord, uint number)
{
coord.y -= 4;
if (number <= 9)
{
return SampleDebugFont(coord - int2(6, 0), number);
}
else
{
return (SampleDebugFont(coord, number / 10) | SampleDebugFont(coord - int2(6, 0), number % 10));
}
}
float3 OverlayHeatMap(uint2 pixCoord, uint numLights, float3 c)
{
/////////////////////////////////////////////////////////////////////
//
const float4 kRadarColors[12] =
{
float4(0.0,0.0,0.0,0.0), // black
float4(0.0,0.0,0.6,0.5), // dark blue
float4(0.0,0.0,0.9,0.5), // blue
float4(0.0,0.6,0.9,0.5), // light blue
float4(0.0,0.9,0.9,0.5), // cyan
float4(0.0,0.9,0.6,0.5), // blueish green
float4(0.0,0.9,0.0,0.5), // green
float4(0.6,0.9,0.0,0.5), // yellowish green
float4(0.9,0.9,0.0,0.5), // yellow
float4(0.9,0.6,0.0,0.5), // orange
float4(0.9,0.0,0.0,0.5), // red
float4(1.0,0.0,0.0,0.9) // strong red
};
float maxNrLightsPerTile = 31;
int nColorIndex = numLights == 0 ? 0 : (1 + (int)floor(10 * (log2((float)numLights) / log2(maxNrLightsPerTile))));
nColorIndex = nColorIndex<0 ? 0 : nColorIndex;
float4 col = nColorIndex>11 ? float4(1.0, 1.0, 1.0, 1.0) : kRadarColors[nColorIndex];
int2 coord = pixCoord - int2(1, 1);
float3 color = lerp(c, pow(col.xyz, 2.2), 0.3*col.w);
if(numLights > 0)
{
if (SampleDebugFontNumber(coord, numLights)) // Shadow
color = 0.0f;
if (SampleDebugFontNumber(coord + 1, numLights)) // Text
color = 1.0f;
}
return color;
}
#endif

281
Assets/ScriptableRenderPipeline/fptl/LightingTemplate.hlsl


#ifndef __LIGHTINGTEMPLATE_H__
#define __LIGHTINGTEMPLATE_H__
#include "UnityCG.cginc"
#include "UnityStandardBRDF.cginc"
#include "UnityStandardUtils.cginc"
#include "UnityPBSLighting.cginc"
uniform uint g_nNumDirLights;
//---------------------------------------------------------------------------------------------------------------------------------------------------------
// TODO: clean up.. -va
#define MAX_SHADOW_LIGHTS 10
#define MAX_SHADOWMAP_PER_LIGHT 6
#define MAX_DIRECTIONAL_SPLIT 4
#define CUBEMAPFACE_POSITIVE_X 0
#define CUBEMAPFACE_NEGATIVE_X 1
#define CUBEMAPFACE_POSITIVE_Y 2
#define CUBEMAPFACE_NEGATIVE_Y 3
#define CUBEMAPFACE_POSITIVE_Z 4
#define CUBEMAPFACE_NEGATIVE_Z 5
CBUFFER_START(ShadowLightData)
float4 g_vShadow3x3PCFTerms0;
float4 g_vShadow3x3PCFTerms1;
float4 g_vShadow3x3PCFTerms2;
float4 g_vShadow3x3PCFTerms3;
float4 g_vDirShadowSplitSpheres[MAX_DIRECTIONAL_SPLIT];
float4x4 g_matWorldToShadow[MAX_SHADOW_LIGHTS * MAX_SHADOWMAP_PER_LIGHT];
CBUFFER_END
//---------------------------------------------------------------------------------------------------------------------------------------------------------
//UNITY_DECLARE_TEX2D(_LightTextureB0);
sampler2D _LightTextureB0;
UNITY_DECLARE_TEX2DARRAY(_spotCookieTextures);
UNITY_DECLARE_ABSTRACT_CUBE_ARRAY(_pointCookieTextures);
StructuredBuffer<DirectionalLight> g_dirLightData;
#define DECLARE_SHADOWMAP( tex ) Texture2D tex; SamplerComparisonState sampler##tex
#ifdef REVERSE_ZBUF
#define SAMPLE_SHADOW( tex, coord ) tex.SampleCmpLevelZero( sampler##tex, (coord).xy, (coord).z )
#else
#define SAMPLE_SHADOW( tex, coord ) tex.SampleCmpLevelZero( sampler##tex, (coord).xy, 1.0-(coord).z )
#endif
DECLARE_SHADOWMAP(g_tShadowBuffer);
float ComputeShadow_PCF_3x3_Gaussian(float3 vPositionWs, float4x4 matWorldToShadow)
{
float4 vPositionTextureSpace = mul(float4(vPositionWs.xyz, 1.0), matWorldToShadow);
vPositionTextureSpace.xyz /= vPositionTextureSpace.w;
float2 shadowMapCenter = vPositionTextureSpace.xy;
if ((shadowMapCenter.x < 0.0f) || (shadowMapCenter.x > 1.0f) || (shadowMapCenter.y < 0.0f) || (shadowMapCenter.y > 1.0f))
return 1.0f;
float objDepth = saturate(257.0 / 256.0 - vPositionTextureSpace.z);
float4 v20Taps;
v20Taps.x = SAMPLE_SHADOW(g_tShadowBuffer, float3(shadowMapCenter.xy + g_vShadow3x3PCFTerms1.xy, objDepth)).x; // 1 1
v20Taps.y = SAMPLE_SHADOW(g_tShadowBuffer, float3(shadowMapCenter.xy + g_vShadow3x3PCFTerms1.zy, objDepth)).x; // -1 1
v20Taps.z = SAMPLE_SHADOW(g_tShadowBuffer, float3(shadowMapCenter.xy + g_vShadow3x3PCFTerms1.xw, objDepth)).x; // 1 -1
v20Taps.w = SAMPLE_SHADOW(g_tShadowBuffer, float3(shadowMapCenter.xy + g_vShadow3x3PCFTerms1.zw, objDepth)).x; // -1 -1
float flSum = dot(v20Taps.xyzw, float4(0.25, 0.25, 0.25, 0.25));
if ((flSum == 0.0) || (flSum == 1.0))
return flSum;
flSum *= g_vShadow3x3PCFTerms0.x * 4.0;
float4 v33Taps;
v33Taps.x = SAMPLE_SHADOW(g_tShadowBuffer, float3(shadowMapCenter.xy + g_vShadow3x3PCFTerms2.xz, objDepth)).x; // 1 0
v33Taps.y = SAMPLE_SHADOW(g_tShadowBuffer, float3(shadowMapCenter.xy + g_vShadow3x3PCFTerms3.xz, objDepth)).x; // -1 0
v33Taps.z = SAMPLE_SHADOW(g_tShadowBuffer, float3(shadowMapCenter.xy + g_vShadow3x3PCFTerms3.zy, objDepth)).x; // 0 -1
v33Taps.w = SAMPLE_SHADOW(g_tShadowBuffer, float3(shadowMapCenter.xy + g_vShadow3x3PCFTerms2.zy, objDepth)).x; // 0 1
flSum += dot(v33Taps.xyzw, g_vShadow3x3PCFTerms0.yyyy);
flSum += SAMPLE_SHADOW(g_tShadowBuffer, float3(shadowMapCenter.xy, objDepth)).x * g_vShadow3x3PCFTerms0.z;
return flSum;
}
//---------------------------------------------------------------------------------------------------------------------------------------------------------
/**
* Gets the cascade weights based on the world position of the fragment and the positions of the split spheres for each cascade.
* Returns an invalid split index if past shadowDistance (ie 4 is invalid for cascade)
*/
float GetSplitSphereIndexForDirshadows(float3 wpos)
{
float3 fromCenter0 = wpos.xyz - g_vDirShadowSplitSpheres[0].xyz;
float3 fromCenter1 = wpos.xyz - g_vDirShadowSplitSpheres[1].xyz;
float3 fromCenter2 = wpos.xyz - g_vDirShadowSplitSpheres[2].xyz;
float3 fromCenter3 = wpos.xyz - g_vDirShadowSplitSpheres[3].xyz;
float4 distances2 = float4(dot(fromCenter0, fromCenter0), dot(fromCenter1, fromCenter1), dot(fromCenter2, fromCenter2), dot(fromCenter3, fromCenter3));
float4 vDirShadowSplitSphereSqRadii;
vDirShadowSplitSphereSqRadii.x = g_vDirShadowSplitSpheres[0].w;
vDirShadowSplitSphereSqRadii.y = g_vDirShadowSplitSpheres[1].w;
vDirShadowSplitSphereSqRadii.z = g_vDirShadowSplitSpheres[2].w;
vDirShadowSplitSphereSqRadii.w = g_vDirShadowSplitSpheres[3].w;
fixed4 weights = float4(distances2 < vDirShadowSplitSphereSqRadii);
weights.yzw = saturate(weights.yzw - weights.xyz);
return 4 - dot(weights, float4(4, 3, 2, 1));
}
float SampleShadow(uint type, float3 vPositionWs, float3 vPositionToLightDirWs, uint lightIndex)
{
float flShadowScalar = 1.0;
int shadowSplitIndex = 0;
if (type == DIRECTIONAL_LIGHT)
{
shadowSplitIndex = GetSplitSphereIndexForDirshadows(vPositionWs);
}
else if (type == SPHERE_LIGHT)
{
float3 absPos = abs(vPositionToLightDirWs);
shadowSplitIndex = (vPositionToLightDirWs.z > 0) ? CUBEMAPFACE_NEGATIVE_Z : CUBEMAPFACE_POSITIVE_Z;
if (absPos.x > absPos.y)
{
if (absPos.x > absPos.z)
{
shadowSplitIndex = (vPositionToLightDirWs.x > 0) ? CUBEMAPFACE_NEGATIVE_X : CUBEMAPFACE_POSITIVE_X;
}
}
else
{
if (absPos.y > absPos.z)
{
shadowSplitIndex = (vPositionToLightDirWs.y > 0) ? CUBEMAPFACE_NEGATIVE_Y : CUBEMAPFACE_POSITIVE_Y;
}
}
}
flShadowScalar = ComputeShadow_PCF_3x3_Gaussian(vPositionWs.xyz, g_matWorldToShadow[lightIndex * MAX_SHADOWMAP_PER_LIGHT + shadowSplitIndex]);
return flShadowScalar;
}
float3 ExecuteLightList(uint start, uint numLights, float3 vP, float3 vPw, float3 Vworld)
{
UnityIndirect ind;
UNITY_INITIALIZE_OUTPUT(UnityIndirect, ind);
ind.diffuse = 0;
ind.specular = 0;
float3 ints = 0;
for (int i = 0; i < g_nNumDirLights; i++)
{
DirectionalLight lightData = g_dirLightData[i];
float atten = 1;
[branch]
if (lightData.shadowLightIndex != 0xffffffff)
{
float shadowScalar = SampleShadow(DIRECTIONAL_LIGHT, vPw, 0, lightData.shadowLightIndex);
atten *= shadowScalar;
}
UnityLight light;
light.color.xyz = lightData.color.xyz * atten;
light.dir.xyz = mul((float3x3) g_mViewToWorld, -lightData.lightAxisZ).xyz;
ints += EvalMaterial(light, ind);
}
uint l=0;
// don't need the outer loop since the lights are sorted by volume type
//while(l<numLights)
if(numLights>0)
{
uint uIndex = l<numLights ? FetchIndex(start, l) : 0;
uint uLgtType = l<numLights ? g_vLightData[uIndex].lightType : 0;
// specialized loop for spot lights
while(l<numLights && uLgtType==SPOT_LIGHT)
{
SFiniteLightData lgtDat = g_vLightData[uIndex];
float3 vLp = lgtDat.lightPos.xyz;
float3 toLight = vLp - vP;
float dist = length(toLight);
float3 vL = toLight / dist;
float attLookUp = dist*lgtDat.recipRange; attLookUp *= attLookUp;
float atten = tex2Dlod(_LightTextureB0, float4(attLookUp.rr, 0.0, 0.0)).UNITY_ATTEN_CHANNEL;
// spot attenuation
const float fProjVec = -dot(vL, lgtDat.lightAxisZ.xyz); // spotDir = lgtDat.lightAxisZ.xyz
float2 cookCoord = (-lgtDat.cotan)*float2( dot(vL, lgtDat.lightAxisX.xyz), dot(vL, lgtDat.lightAxisY.xyz) ) / fProjVec;
const bool bHasCookie = (lgtDat.flags&IS_CIRCULAR_SPOT_SHAPE)==0; // all square spots have cookies
float d0 = 0.65;
float4 angularAtt = float4(1,1,1,smoothstep(0.0, 1.0-d0, 1.0-length(cookCoord)));
[branch]if(bHasCookie)
{
cookCoord = cookCoord*0.5 + 0.5;
angularAtt = UNITY_SAMPLE_TEX2DARRAY_LOD(_spotCookieTextures, float3(cookCoord, lgtDat.sliceIndex), 0.0);
}
atten *= angularAtt.w*(fProjVec>0.0); // finally apply this to the dist att.
const bool bHasShadow = (lgtDat.flags&HAS_SHADOW)!=0;
[branch]if(bHasShadow)
{
float shadowScalar = SampleShadow(SPOT_LIGHT, vPw, 0, lgtDat.shadowLightIndex);
atten *= shadowScalar;
}
UnityLight light;
light.color.xyz = lgtDat.color.xyz*atten*angularAtt.xyz;
light.dir.xyz = mul((float3x3) g_mViewToWorld, vL).xyz; //unity_CameraToWorld
ints += EvalMaterial(light, ind);
++l; uIndex = l<numLights ? FetchIndex(start, l) : 0;
uLgtType = l<numLights ? g_vLightData[uIndex].lightType : 0;
}
// specialized loop for sphere lights
while(l<numLights && uLgtType==SPHERE_LIGHT)
{
SFiniteLightData lgtDat = g_vLightData[uIndex];
float3 vLp = lgtDat.lightPos.xyz;
float3 toLight = vLp - vP;
float dist = length(toLight);
float3 vL = toLight / dist;
float3 vLw = mul((float3x3) g_mViewToWorld, vL).xyz; //unity_CameraToWorld
float attLookUp = dist*lgtDat.recipRange; attLookUp *= attLookUp;
float atten = tex2Dlod(_LightTextureB0, float4(attLookUp.rr, 0.0, 0.0)).UNITY_ATTEN_CHANNEL;
float4 cookieColor = float4(1,1,1,1);
const bool bHasCookie = (lgtDat.flags&HAS_COOKIE_TEXTURE)!=0;
[branch]if(bHasCookie)
{
float3 cookieCoord = -float3(dot(vL, lgtDat.lightAxisX.xyz), dot(vL, lgtDat.lightAxisY.xyz), dot(vL, lgtDat.lightAxisZ.xyz)); // negate to make vL a fromLight vector
cookieColor = UNITY_SAMPLE_ABSTRACT_CUBE_ARRAY_LOD(_pointCookieTextures, float4(cookieCoord, lgtDat.sliceIndex), 0.0);
atten *= cookieColor.w;
}
const bool bHasShadow = (lgtDat.flags&HAS_SHADOW)!=0;
[branch]if(bHasShadow)
{
float shadowScalar = SampleShadow(SPHERE_LIGHT, vPw, vLw, lgtDat.shadowLightIndex);
atten *= shadowScalar;
}
UnityLight light;
light.color.xyz = lgtDat.color.xyz*atten*cookieColor.xyz;
light.dir.xyz = vLw;
ints += EvalMaterial(light, ind);
++l; uIndex = l<numLights ? FetchIndex(start, l) : 0;
uLgtType = l<numLights ? g_vLightData[uIndex].lightType : 0;
}
//if(uLgtType!=SPOT_LIGHT && uLgtType!=SPHERE_LIGHT) ++l;
}
return ints;
}
#endif

146
Assets/ScriptableRenderPipeline/fptl/Internal-DeferredComputeShading.compute


#pragma kernel ShadeDeferred_Fptl SHADE_DEFERRED_ENTRY=ShadeDeferred_Fptl USE_FPTL_LIGHTLIST=1 ENABLE_DEBUG=0
#pragma kernel ShadeDeferred_Clustered SHADE_DEFERRED_ENTRY=ShadeDeferred_Clustered USE_CLUSTERED_LIGHTLIST=1 ENABLE_DEBUG=0 //TODO: disabled clustered permutations so far as it leads to the error "All kernels must use same constant buffer layouts"
#pragma kernel ShadeDeferred_Fptl_Debug SHADE_DEFERRED_ENTRY=ShadeDeferred_Fptl_Debug USE_FPTL_LIGHTLIST=1 ENABLE_DEBUG=1
#pragma kernel ShadeDeferred_Clustered_Debug SHADE_DEFERRED_ENTRY=ShadeDeferred_Clustered_Debug USE_CLUSTERED_LIGHTLIST=1 ENABLE_DEBUG=1
#define TILE_SIZE 8
// Hacks to get the header to compile in compute
#define SHADER_TARGET 50
#define UNITY_PBS_USE_BRDF1
#define fixed4 float4
#include "UnityLightingCommon.cginc"
#undef fixed4
float3 EvalMaterial(UnityLight light, UnityIndirect ind);
float3 EvalIndirectSpecular(UnityLight light, UnityIndirect ind);
// uses the optimized single layered light list for opaques only
#ifdef USE_FPTL_LIGHTLIST
#define OPAQUES_ONLY
#endif
#include "TiledLightingTemplate.hlsl"
#include "TiledReflectionTemplate.hlsl"
UNITY_DECLARE_TEX2D_FLOAT(_CameraDepthTexture);
Texture2D _CameraGBufferTexture0;
Texture2D _CameraGBufferTexture1;
Texture2D _CameraGBufferTexture2;
Texture2D _CameraGBufferTexture3;
RWTexture2D<float4> uavOutput : register(u0);
struct v2f {
float4 vertex : SV_POSITION;
float2 texcoord : TEXCOORD0;
};
v2f vert(float4 vertex : POSITION, float2 texcoord : TEXCOORD0)
{
v2f o;
o.vertex = UnityObjectToClipPos(vertex);
o.texcoord = texcoord.xy;
return o;
}
struct StandardData
{
float3 specularColor;
float3 diffuseColor;
float3 normalWorld;
float smoothness;
float occlusion;
float3 emission;
};
struct LocalDataBRDF
{
StandardData gbuf;
// extras
float oneMinusReflectivity;
float3 Vworld;
};
static LocalDataBRDF g_localParams;
StandardData UnityStandardDataFromGbufferAux(float4 gbuffer0, float4 gbuffer1, float4 gbuffer2, float4 gbuffer3)
{
StandardData data;
data.normalWorld = normalize(2 * gbuffer2.xyz - 1);
data.smoothness = gbuffer1.a;
data.diffuseColor = gbuffer0.xyz; data.specularColor = gbuffer1.xyz;
data.occlusion = gbuffer0.a;
data.emission = gbuffer3.xyz;
return data;
}
half3 BRDF3_Direct2(half3 diffColor, half3 specColor, half rlPow4, half smoothness)
{
half LUT_RANGE = 16.0; // must match range in NHxRoughness() function in GeneratedTextures.cpp
// Lookup texture to save instructions
half specular = tex2Dlod(unity_NHxRoughness, half4(rlPow4, SmoothnessToPerceptualRoughness(smoothness), 0, 0)).UNITY_ATTEN_CHANNEL * LUT_RANGE;
#if defined(_SPECULARHIGHLIGHTS_OFF)
specular = 0.0;
#endif
return diffColor + specular * specColor;
}
float3 EvalMaterial(UnityLight light, UnityIndirect ind)
{
StandardData data = g_localParams.gbuf;
return UNITY_BRDF_PBS(data.diffuseColor, data.specularColor, g_localParams.oneMinusReflectivity, data.smoothness, data.normalWorld, g_localParams.Vworld, light, ind);
}
float3 EvalIndirectSpecular(UnityLight light, UnityIndirect ind)
{
StandardData data = g_localParams.gbuf;
return data.occlusion * UNITY_BRDF_PBS(0, data.specularColor, g_localParams.oneMinusReflectivity, data.smoothness, data.normalWorld, g_localParams.Vworld, light, ind).rgb;
}
[numthreads(TILE_SIZE, TILE_SIZE, 1)]
void SHADE_DEFERRED_ENTRY(uint2 dispatchThreadId : SV_DispatchThreadID, uint2 groupId : SV_GroupID)
{
uint2 pixCoord = dispatchThreadId;
float zbufDpth = FetchDepth(_CameraDepthTexture, pixCoord.xy).x;
float linDepth = GetLinearDepth(zbufDpth);
float3 vP = GetViewPosFromLinDepth(pixCoord, linDepth);
float3 vPw = mul(g_mViewToWorld, float4(vP, 1)).xyz;
float3 Vworld = normalize(mul((float3x3) g_mViewToWorld, -vP).xyz); //unity_CameraToWorld
float4 gbuffer0 = _CameraGBufferTexture0.Load(uint3(pixCoord.xy, 0));
float4 gbuffer1 = _CameraGBufferTexture1.Load(uint3(pixCoord.xy, 0));
float4 gbuffer2 = _CameraGBufferTexture2.Load(uint3(pixCoord.xy, 0));
float4 gbuffer3 = _CameraGBufferTexture3.Load(uint3(pixCoord.xy, 0));
StandardData data = UnityStandardDataFromGbufferAux(gbuffer0, gbuffer1, gbuffer2, gbuffer3);
g_localParams.gbuf = data;
g_localParams.oneMinusReflectivity = 1.0 - SpecularStrength(data.specularColor.rgb);
g_localParams.Vworld = Vworld;
uint2 tileCoord = groupId >> 1;
uint numLightsProcessed = 0;
float3 c = data.emission + ExecuteLightList(numLightsProcessed, tileCoord, vP, vPw, Vworld);
uint numReflectionsProcessed = 0;
c += ExecuteReflectionList(numReflectionsProcessed, tileCoord, vP, data.normalWorld, Vworld, data.smoothness);
#if ENABLE_DEBUG
c = OverlayHeatMap(pixCoord & 15, numLightsProcessed, c);
#endif
uavOutput[pixCoord] = float4(c, 1.0);
}

131
Assets/ScriptableRenderPipeline/fptl/LightingConvexHullUtils.hlsl


#ifndef __LIGHTINGCONVEXHULLUTILS_H__
#define __LIGHTINGCONVEXHULLUTILS_H__
#include "..\common\ShaderBase.h"
#include "LightDefinitions.cs.hlsl"
float3 GetHullVertex(const float3 boxX, const float3 boxY, const float3 boxZ, const float3 center, const float2 scaleXY, const int p)
{
const bool bIsTopVertex = (p&4)!=0;
float3 vScales = float3( ((p&1)!=0 ? 1.0f : (-1.0f))*(bIsTopVertex ? scaleXY.x : 1.0), ((p&2)!=0 ? 1.0f : (-1.0f))*(bIsTopVertex ? scaleXY.y : 1.0), (p&4)!=0 ? 1.0f : (-1.0f) );
return (vScales.x*boxX + vScales.y*boxY + vScales.z*boxZ) + center;
}
void GetHullEdge(out int idx0, out int idx_twin, out float3 vP0, out float3 vE0, const int e0, const float3 boxX, const float3 boxY, const float3 boxZ, const float3 center, const float2 scaleXY)
{
int iAxis = e0>>2;
int iSwizzle = e0&0x3;
bool bIsSwizzleOneOrTwo = ((iSwizzle-1)&0x2)==0;
const int i0 = iAxis==0 ? (2*iSwizzle+0) : ( iAxis==1 ? (iSwizzle+(iSwizzle&2)) : iSwizzle);
const int i1 = i0 + (1<<iAxis);
const bool bSwap = iAxis==0 ? (!bIsSwizzleOneOrTwo) : (iAxis==1 ? false : bIsSwizzleOneOrTwo);
idx0 = bSwap ? i1 : i0;
idx_twin = bSwap ? i0 : i1;
float3 p0 = GetHullVertex(boxX, boxY, boxZ, center, scaleXY, idx0);
float3 p1 = GetHullVertex(boxX, boxY, boxZ, center, scaleXY, idx_twin);
vP0 = p0;
vE0 = p1-p0;
}
void GetQuad(out float3 p0, out float3 p1, out float3 p2, out float3 p3, const float3 boxX, const float3 boxY, const float3 boxZ, const float3 center, const float2 scaleXY, const int sideIndex)
{
//const int iAbsSide = (sideIndex == 0 || sideIndex == 1) ? 0 : ((sideIndex == 2 || sideIndex == 3) ? 1 : 2);
const int iAbsSide = min(sideIndex>>1, 2);
const float fS = (sideIndex & 1) != 0 ? 1 : (-1);
float3 vA = fS*(iAbsSide == 0 ? boxX : (iAbsSide == 1 ? (-boxY) : boxZ));
float3 vB = fS*(iAbsSide == 0 ? (-boxY) : (iAbsSide == 1 ? (-boxX) : (-boxY)));
float3 vC = iAbsSide == 0 ? boxZ : (iAbsSide == 1 ? boxZ : (-boxX));
bool bIsTopQuad = iAbsSide == 2 && (sideIndex & 1) != 0; // in this case all 4 verts get scaled.
bool bIsSideQuad = (iAbsSide == 0 || iAbsSide == 1); // if side quad only two verts get scaled (impacts q1 and q2)
if (bIsTopQuad) { vB *= scaleXY.y; vC *= scaleXY.x; }
float3 vA2 = vA;
float3 vB2 = vB;
if (bIsSideQuad) { vA2 *= (iAbsSide == 0 ? scaleXY.x : scaleXY.y); vB2 *= (iAbsSide == 0 ? scaleXY.y : scaleXY.x); }
// delivered counterclockwise in right hand space and clockwise in left hand space
p0 = center + (vA + vB - vC); // center + vA is center of face when scaleXY is 1.0
p1 = center + (vA - vB - vC);
p2 = center + (vA2 - vB2 + vC);
p3 = center + (vA2 + vB2 + vC);
}
void GetPlane(out float3 p0, out float3 vN, const float3 boxX, const float3 boxY, const float3 boxZ, const float3 center, const float2 scaleXY, const int sideIndex)
{
//const int iAbsSide = (sideIndex == 0 || sideIndex == 1) ? 0 : ((sideIndex == 2 || sideIndex == 3) ? 1 : 2);
const int iAbsSide = min(sideIndex>>1, 2);
const float fS = (sideIndex & 1) != 0 ? 1 : (-1);
float3 vA = fS*(iAbsSide == 0 ? boxX : (iAbsSide == 1 ? (-boxY) : boxZ));
float3 vB = fS*(iAbsSide == 0 ? (-boxY) : (iAbsSide == 1 ? (-boxX) : (-boxY)));
float3 vC = iAbsSide == 0 ? boxZ : (iAbsSide == 1 ? boxZ : (-boxX));
bool bIsTopQuad = iAbsSide == 2 && (sideIndex & 1) != 0; // in this case all 4 verts get scaled.
bool bIsSideQuad = (iAbsSide == 0 || iAbsSide == 1); // if side quad only two verts get scaled (impacts q1 and q2)
if (bIsTopQuad) { vB *= scaleXY.y; vC *= scaleXY.x; }
float3 vA2 = vA;
float3 vB2 = vB;
if (bIsSideQuad) { vA2 *= (iAbsSide == 0 ? scaleXY.x : scaleXY.y); vB2 *= (iAbsSide == 0 ? scaleXY.y : scaleXY.x); }
p0 = center + (vA + vB - vC); // center + vA is center of face when scaleXY is 1.0
float3 vNout = cross( vB2, 0.5*(vA-vA2) - vC );
#if USE_LEFTHAND_CAMERASPACE
vNout = -vNout;
#endif
vN = vNout;
}
float4 GetPlaneEq(const float3 boxX, const float3 boxY, const float3 boxZ, const float3 center, const float2 scaleXY, const int sideIndex)
{
float3 p0, vN;
GetPlane(p0, vN, boxX, boxY, boxZ, center, scaleXY, sideIndex);
return float4(vN, -dot(vN,p0));
}
bool DoesSphereOverlapTile(float3 dir, float halfTileSizeAtZDistOne, float3 sphCen, float sphRadiusIn)
{
float3 V = dir; // ray direction down center of tile (does not need to be normalized).
#if 1
float3 maxZdir = float3(-sphCen.z*sphCen.x, -sphCen.z*sphCen.y, sphCen.x*sphCen.x + sphCen.y*sphCen.y); // cross(sphCen,cross(Zaxis,sphCen))
float len = length(maxZdir);
float scalarProj = len>0.0001 ? (maxZdir.z/len) : len; // if len<=0.0001 then either |sphCen|<sphRadius or sphCen is very closely aligned with Z axis in which case little to no additional offs needed.
float offs = scalarProj*sphRadiusIn;
#else
float offs = sphRadiusIn; // more false positives due to larger radius but works too
#endif
// enlarge sphere so it overlaps the center of the tile assuming it overlaps the tile to begin with.
#if USE_LEFTHAND_CAMERASPACE
float sphRadius = sphRadiusIn + (sphCen.z+offs)*halfTileSizeAtZDistOne;
#else
float sphRadius = sphRadiusIn - (sphCen.z-offs)*halfTileSizeAtZDistOne;
#endif
float a = dot(V,V);
float CdotV = dot(sphCen,V);
float c = dot(sphCen,sphCen) - sphRadius*sphRadius;
float fDescDivFour = CdotV*CdotV - a*c;
return c<0 || (fDescDivFour>0 && CdotV>0); // if ray hits bounding sphere
}
#endif

9
Assets/ScriptableRenderPipeline/fptl/FPTLRenderPipeline.asset.meta


fileFormatVersion: 2
guid: 6aaf534559faf7e499945c3d9eb97d9f
timeCreated: 1486895883
licenseType: Pro
NativeFormatImporter:
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

48
Assets/ScriptableRenderPipeline/fptl/FPTLRenderPipeline.asset


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ad5bf4f8e45bdd1429eadc3445df2c89, type: 3}
m_Name: FPTLRenderPipeline
m_EditorClassIdentifier:
m_ShadowSettings:
enabled: 1
shadowAtlasWidth: 4096
shadowAtlasHeight: 4096
maxShadowDistance: 1000
directionalLightCascadeCount: 4
directionalLightCascades: {x: 0.05, y: 0.2, z: 0.3}
directionalLightNearPlaneOffset: 5
m_TextureSettings:
spotCookieSize: 512
pointCookieSize: 128
reflectionCubemapSize: 128
deferredShader: {fileID: 4800000, guid: 1c102a89f3460254a8c413dbdcd63a2a, type: 3}
deferredReflectionShader: {fileID: 4800000, guid: 3899e06d641c2cb4cbff794df0da536b,
type: 3}
deferredComputeShader: {fileID: 7200000, guid: 6994e4f8a80d87b428cca7242cb32a0e,
type: 3}
finalPassShader: {fileID: 4800000, guid: 5590f54ad211f594da4e687b698f2258, type: 3}
debugLightBoundsShader: {fileID: 4800000, guid: 33f2a444e9120d34396d41e40795d712,
type: 3}
buildScreenAABBShader: {fileID: 7200000, guid: e7a739144e735934b89a42a4b9d9e23c,
type: 3}
buildPerTileLightListShader: {fileID: 7200000, guid: f54ef7cb596a714488693ef9cdaf63fb,
type: 3}
buildPerBigTileLightListShader: {fileID: 7200000, guid: b5507a2ffdae8a84f94211c10d428920,
type: 3}
buildPerVoxelLightListShader: {fileID: 7200000, guid: 4c2d6eb0553e2514bba3ea9a85d8c53c,
type: 3}
enableClustered: 0
disableFptlWhenClustered: 0
enableBigTilePrepass: 1
enableDrawLightBoundsDebug: 0
enableDrawTileDebug: 0
enableReflectionProbeDebug: 0
enableComputeLightEvaluation: 0

440
Assets/ScriptableRenderPipeline/fptl/lightlistbuild.compute


// The implementation is based on the demo on "fine pruned tiled lighting" published in GPU Pro 7.
// https://github.com/wolfgangfengel/GPU-Pro-7
#pragma kernel TileLightListGen LIGHTLISTGEN=TileLightListGen
#pragma kernel TileLightListGen_SrcBigTile LIGHTLISTGEN=TileLightListGen_SrcBigTile USE_TWO_PASS_TILED_LIGHTING
#include "..\common\ShaderBase.h"
#include "LightDefinitions.cs.hlsl"
#include "LightingConvexHullUtils.hlsl"
#if !defined(SHADER_API_XBOXONE) && !defined(SHADER_API_PSSL)
#include "SortingComputeUtils.hlsl"
#endif
#define FINE_PRUNING_ENABLED
#define PERFORM_SPHERICAL_INTERSECTION_TESTS
uniform int g_iNrVisibLights;
uniform uint2 g_viDimensions;
uniform float4x4 g_mInvScrProjection;
uniform float4x4 g_mScrProjection;
Texture2D g_depth_tex : register( t0 );
StructuredBuffer<float3> g_vBoundsBuffer : register( t1 );
StructuredBuffer<SFiniteLightData> g_vLightData : register( t2 );
StructuredBuffer<SFiniteLightBound> g_data : register( t3 );
#ifdef USE_TWO_PASS_TILED_LIGHTING
StructuredBuffer<uint> g_vBigTileLightList : register( t4 ); // don't support Buffer yet in unity
#endif
#define NR_THREADS 64
// output buffer
RWStructuredBuffer<uint> g_vLightList : register( u0 ); // don't support RWBuffer yet in unity
#define MAX_NR_COARSE_ENTRIES 64
#define MAX_NR_PRUNED_ENTRIES 24
groupshared unsigned int coarseList[MAX_NR_COARSE_ENTRIES];
groupshared unsigned int prunedList[MAX_NR_COARSE_ENTRIES]; // temporarily support room for all 64 while in LDS
groupshared uint ldsZMin;
groupshared uint ldsZMax;
groupshared uint lightOffs;
#ifdef FINE_PRUNING_ENABLED
groupshared uint ldsDoesLightIntersect[2];
#endif
groupshared int ldsNrLightsFinal;
groupshared int ldsModelListCount[NR_LIGHT_MODELS]; // since NR_LIGHT_MODELS is 2
#ifdef PERFORM_SPHERICAL_INTERSECTION_TESTS
groupshared uint lightOffsSph;
#endif
//float GetLinearDepth(float3 vP)
//{
// float4 v4Pres = mul(g_mInvScrProjection, float4(vP,1.0));
// return v4Pres.z / v4Pres.w;
//}
float GetLinearDepth(float zDptBufSpace) // 0 is near 1 is far
{
float3 vP = float3(0.0f,0.0f,zDptBufSpace);
float4 v4Pres = mul(g_mInvScrProjection, float4(vP,1.0));
return v4Pres.z / v4Pres.w;
}
float3 GetViewPosFromLinDepth(float2 v2ScrPos, float fLinDepth)
{
float fSx = g_mScrProjection[0].x;
float fCx = g_mScrProjection[0].z;
float fSy = g_mScrProjection[1].y;
float fCy = g_mScrProjection[1].z;
#if USE_LEFTHAND_CAMERASPACE
return fLinDepth*float3( ((v2ScrPos.x-fCx)/fSx), ((v2ScrPos.y-fCy)/fSy), 1.0 );
#else
return fLinDepth*float3( -((v2ScrPos.x+fCx)/fSx), -((v2ScrPos.y+fCy)/fSy), 1.0 );
#endif
}
float GetOnePixDiagWorldDistAtDepthOne()
{
float fSx = g_mScrProjection[0].x;
float fSy = g_mScrProjection[1].y;
return length( float2(1.0/fSx,1.0/fSy) );
}
#ifdef PERFORM_SPHERICAL_INTERSECTION_TESTS
int SphericalIntersectionTests(uint threadID, int iNrCoarseLights, float2 screenCoordinate);
#endif
#ifdef FINE_PRUNING_ENABLED
void FinePruneLights(uint threadID, int iNrCoarseLights, uint2 viTilLL, float4 vLinDepths);
#endif
[numthreads(NR_THREADS, 1, 1)]
void LIGHTLISTGEN(uint threadID : SV_GroupIndex, uint3 u3GroupID : SV_GroupID)
{
uint2 tileIDX = u3GroupID.xy;
uint t=threadID;
if(t<MAX_NR_COARSE_ENTRIES)
prunedList[t]=0;
uint iWidth = g_viDimensions.x;
uint iHeight = g_viDimensions.y;
uint nrTilesX = (iWidth+15)/16;
uint nrTilesY = (iHeight+15)/16;
// build tile scr boundary
const uint uFltMax = 0x7f7fffff; // FLT_MAX as a uint
if(t==0)
{
ldsZMin = uFltMax;
ldsZMax = 0;
lightOffs = 0;
}
#if !defined(SHADER_API_XBOXONE) && !defined(SHADER_API_PSSL)
GroupMemoryBarrierWithGroupSync();
#endif
uint2 viTilLL = 16*tileIDX;
// establish min and max depth first
float dpt_mi=asfloat(uFltMax), dpt_ma=0.0;
float4 vLinDepths;
{
// Fetch depths and calculate min/max
[unroll]
for(int i = 0; i < 4; i++)
{
int idx = i * NR_THREADS + t;
uint2 uCrd = min( uint2(viTilLL.x+(idx&0xf), viTilLL.y+(idx>>4)), uint2(iWidth-1, iHeight-1) );
const float fDepth = FetchDepth(g_depth_tex, uCrd);
vLinDepths[i] = GetLinearDepth(fDepth);
if(fDepth<VIEWPORT_SCALE_Z) // if not skydome
{
dpt_mi = min(fDepth, dpt_mi);
dpt_ma = max(fDepth, dpt_ma);
}
}
InterlockedMax(ldsZMax, asuint(dpt_ma));
InterlockedMin(ldsZMin, asuint(dpt_mi));
#if !defined(SHADER_API_XBOXONE) && !defined(SHADER_API_PSSL)
GroupMemoryBarrierWithGroupSync();
#endif
}
float3 vTileLL = float3(viTilLL.x/(float) iWidth, viTilLL.y/(float) iHeight, asfloat(ldsZMin));
float3 vTileUR = float3((viTilLL.x+16)/(float) iWidth, (viTilLL.y+16)/(float) iHeight, asfloat(ldsZMax));
vTileUR.xy = min(vTileUR.xy,float2(1.0,1.0)).xy;
// build coarse list using AABB
#ifdef USE_TWO_PASS_TILED_LIGHTING
int NrBigTilesX = (nrTilesX+3)>>2;
const int bigTileIdx = (tileIDX.y>>2)*NrBigTilesX + (tileIDX.x>>2); // map the idx to 64x64 tiles
int nrBigTileLights = g_vBigTileLightList[MAX_NR_BIGTILE_LIGHTS_PLUSONE*bigTileIdx+0];
for(int l0=(int) t; l0<(int) nrBigTileLights; l0 += NR_THREADS)
{
int l = g_vBigTileLightList[MAX_NR_BIGTILE_LIGHTS_PLUSONE*bigTileIdx+l0+1];
#else
for(int l=(int) t; l<(int) g_iNrVisibLights; l += NR_THREADS)
{
#endif
const float3 vMi = g_vBoundsBuffer[l];
const float3 vMa = g_vBoundsBuffer[l+g_iNrVisibLights];
if( all(vMa>vTileLL) && all(vMi<vTileUR))
{
unsigned int uInc = 1;
unsigned int uIndex;
InterlockedAdd(lightOffs, uInc, uIndex);
if(uIndex<MAX_NR_COARSE_ENTRIES) coarseList[uIndex] = l; // add to light list
}
}
#ifdef FINE_PRUNING_ENABLED
if(t<2) ldsDoesLightIntersect[t] = 0;
#endif
#if !defined(SHADER_API_XBOXONE) && !defined(SHADER_API_PSSL)
GroupMemoryBarrierWithGroupSync();
#endif
int iNrCoarseLights = min(lightOffs,MAX_NR_COARSE_ENTRIES);
#ifdef PERFORM_SPHERICAL_INTERSECTION_TESTS
iNrCoarseLights = SphericalIntersectionTests( t, iNrCoarseLights, float2(min(viTilLL.xy+uint2(16/2,16/2), uint2(iWidth-1, iHeight-1))) );
#endif
#ifndef FINE_PRUNING_ENABLED
{
if((int)t<iNrCoarseLights) prunedList[t] = coarseList[t];
if(t==0) ldsNrLightsFinal=iNrCoarseLights;
}
#else
{
// initializes ldsNrLightsFinal with the number of accepted lights.
// all accepted entries delivered in prunedList[].
FinePruneLights(t, iNrCoarseLights, viTilLL, vLinDepths);
}
#endif
//
if(t<NR_LIGHT_MODELS) ldsModelListCount[t]=0;
#if !defined(SHADER_API_XBOXONE) && !defined(SHADER_API_PSSL)
GroupMemoryBarrierWithGroupSync();
#endif
int nrLightsCombinedList = min(ldsNrLightsFinal,MAX_NR_COARSE_ENTRIES);
for(int i=t; i<nrLightsCombinedList; i+=NR_THREADS)
{
InterlockedAdd(ldsModelListCount[ g_vLightData[ prunedList[i] ].lightModel ], 1);
}
// sort lights (gives a more efficient execution in both deferred and tiled forward lighting).
#if !defined(SHADER_API_XBOXONE) && !defined(SHADER_API_PSSL)
SORTLIST(prunedList, nrLightsCombinedList, MAX_NR_COARSE_ENTRIES, t, NR_THREADS);
//MERGESORTLIST(prunedList, coarseList, nrLightsCombinedList, t, NR_THREADS);
#endif
// write lights to global buffers
int localOffs=0;
int offs = tileIDX.y*nrTilesX + tileIDX.x;
for(int m=0; m<NR_LIGHT_MODELS; m++)
{
int nrLightsFinal = ldsModelListCount[ m ];
int nrLightsFinalClamped = nrLightsFinal<MAX_NR_PRUNED_ENTRIES ? nrLightsFinal : MAX_NR_PRUNED_ENTRIES;
const int nrDWords = ((nrLightsFinalClamped+1)+1)>>1;
for(int l=(int) t; l<(int) nrDWords; l += NR_THREADS)
{
uint uLow = l==0 ? nrLightsFinalClamped : prunedList[2*l-1+localOffs];
uint uHigh = prunedList[2*l+0+localOffs];
g_vLightList[16*offs + l] = (uLow&0xffff) | (uHigh<<16);
}
localOffs += nrLightsFinal;
offs += (nrTilesX*nrTilesY);
}
}
#ifdef PERFORM_SPHERICAL_INTERSECTION_TESTS
int SphericalIntersectionTests(uint threadID, int iNrCoarseLights, float2 screenCoordinate)
{
if(threadID==0) lightOffsSph = 0;
// make a copy of coarseList in prunedList.
for(int l=threadID; l<iNrCoarseLights; l+=NR_THREADS)
prunedList[l]=coarseList[l];
#if !defined(SHADER_API_XBOXONE) && !defined(SHADER_API_PSSL)
GroupMemoryBarrierWithGroupSync();
#endif
#if USE_LEFTHAND_CAMERASPACE
float3 V = GetViewPosFromLinDepth( screenCoordinate, 1.0);
#else
float3 V = GetViewPosFromLinDepth( screenCoordinate, -1.0);
#endif
float onePixDiagDist = GetOnePixDiagWorldDistAtDepthOne();
float halfTileSizeAtZDistOne = 8*onePixDiagDist; // scale by half a tile
for(int l=threadID; l<iNrCoarseLights; l+=NR_THREADS)
{
SFiniteLightBound lightData = g_data[prunedList[l]];
if( DoesSphereOverlapTile(V, halfTileSizeAtZDistOne, lightData.center.xyz, lightData.radius) )
{
unsigned int uIndex;
InterlockedAdd(lightOffsSph, 1, uIndex);
coarseList[uIndex]=prunedList[l]; // read from the original copy of coarseList which is backed up in prunedList
}
}
#if !defined(SHADER_API_XBOXONE) && !defined(SHADER_API_PSSL)
GroupMemoryBarrierWithGroupSync();
#endif
return lightOffsSph;
}
#endif
#ifdef FINE_PRUNING_ENABLED
// initializes ldsNrLightsFinal with the number of accepted lights.
// all accepted entries delivered in prunedList[].
void FinePruneLights(uint threadID, int iNrCoarseLights, uint2 viTilLL, float4 vLinDepths)
{
uint t = threadID;
uint iWidth = g_viDimensions.x;
uint iHeight = g_viDimensions.y;
uint uLightsFlags[2] = {0,0};
int l=0;
// need this outer loop even on xb1 and ps4 since direct lights and
// reflection lights are kept in separate regions.
while(l<iNrCoarseLights)
{
// fetch light
int idxCoarse = l<iNrCoarseLights ? coarseList[l] : 0;
uint uLgtType = l<iNrCoarseLights ? g_vLightData[idxCoarse].lightType : 0;
// spot
while(l<iNrCoarseLights && uLgtType==SPOT_LIGHT)
{
SFiniteLightData lightData = g_vLightData[idxCoarse];
const bool bIsSpotDisc = (lightData.flags&IS_CIRCULAR_SPOT_SHAPE)!=0;
// serially check 4 pixels
uint uVal = 0;
for(int i=0; i<4; i++)
{
int idx = t + i*NR_THREADS;
uint2 uPixLoc = min(uint2(viTilLL.x+(idx&0xf), viTilLL.y+(idx>>4)), uint2(iWidth-1, iHeight-1));
float3 vVPos = GetViewPosFromLinDepth(uPixLoc + float2(0.5,0.5), vLinDepths[i]);
// check pixel
float3 fromLight = vVPos-lightData.lightPos.xyz;
float distSq = dot(fromLight,fromLight);
const float fSclProj = dot(fromLight, lightData.lightAxisZ.xyz); // spotDir = lightData.lightAxisZ.xyz
float2 V = abs( float2( dot(fromLight, lightData.lightAxisX.xyz), dot(fromLight, lightData.lightAxisY.xyz) ) );
float fDist2D = bIsSpotDisc ? length(V) : max(V.x,V.y);
if( all( float2(lightData.radiusSq, fSclProj) > float2(distSq, fDist2D*lightData.cotan) ) ) uVal = 1;
}
uLightsFlags[l<32 ? 0 : 1] |= (uVal<<(l&31));
++l; idxCoarse = l<iNrCoarseLights ? coarseList[l] : 0;
uLgtType = l<iNrCoarseLights ? g_vLightData[idxCoarse].lightType : 0;
}
// sphere
while(l<iNrCoarseLights && uLgtType==SPHERE_LIGHT)
{
SFiniteLightData lightData = g_vLightData[idxCoarse];
// serially check 4 pixels
uint uVal = 0;
for(int i=0; i<4; i++)
{
int idx = t + i*NR_THREADS;
uint2 uPixLoc = min(uint2(viTilLL.x+(idx&0xf), viTilLL.y+(idx>>4)), uint2(iWidth-1, iHeight-1));
float3 vVPos = GetViewPosFromLinDepth(uPixLoc + float2(0.5,0.5), vLinDepths[i]);
// check pixel
float3 vLp = lightData.lightPos.xyz;
float3 toLight = vLp - vVPos;
float distSq = dot(toLight,toLight);
if(lightData.radiusSq>distSq) uVal = 1;
}
uLightsFlags[l<32 ? 0 : 1] |= (uVal<<(l&31));
++l; idxCoarse = l<iNrCoarseLights ? coarseList[l] : 0;
uLgtType = l<iNrCoarseLights ? g_vLightData[idxCoarse].lightType : 0;
}
// Box
while(l<iNrCoarseLights && uLgtType==BOX_LIGHT)
{
SFiniteLightData lightData = g_vLightData[idxCoarse];
// serially check 4 pixels
uint uVal = 0;
for(int i=0; i<4; i++)
{
int idx = t + i*NR_THREADS;
uint2 uPixLoc = min(uint2(viTilLL.x+(idx&0xf), viTilLL.y+(idx>>4)), uint2(iWidth-1, iHeight-1));
float3 vVPos = GetViewPosFromLinDepth(uPixLoc + float2(0.5,0.5), vLinDepths[i]);
// check pixel
float3 toLight = lightData.lightPos.xyz - vVPos;
float3 dist = float3( dot(toLight, lightData.lightAxisX), dot(toLight, lightData.lightAxisY), dot(toLight, lightData.lightAxisZ) );
dist = (abs(dist) - lightData.boxInnerDist) * lightData.boxInvRange; // not as efficient as it could be
if( max(max(dist.x, dist.y), dist.z)<1 ) uVal = 1; // but allows us to not write out OuterDists
}
uLightsFlags[l<32 ? 0 : 1] |= (uVal<<(l&31));
++l; idxCoarse = l<iNrCoarseLights ? coarseList[l] : 0;
uLgtType = l<iNrCoarseLights ? g_vLightData[idxCoarse].lightType : 0;
}
// in case we have some corrupt data make sure we terminate
if(uLgtType>=MAX_TYPES) ++l;
}
InterlockedOr(ldsDoesLightIntersect[0], uLightsFlags[0]);
InterlockedOr(ldsDoesLightIntersect[1], uLightsFlags[1]);
if(t==0) ldsNrLightsFinal = 0;
#if !defined(SHADER_API_XBOXONE) && !defined(SHADER_API_PSSL)
GroupMemoryBarrierWithGroupSync();
#endif
if(t<(uint) iNrCoarseLights && (ldsDoesLightIntersect[t<32 ? 0 : 1]&(1<<(t&31)))!=0 )
{
unsigned int uInc = 1;
unsigned int uIndex;
InterlockedAdd(ldsNrLightsFinal, uInc, uIndex);
if(uIndex<MAX_NR_COARSE_ENTRIES) prunedList[uIndex] = coarseList[t]; // we allow up to 64 pruned lights while stored in LDS.
}
}
#endif

270
Assets/ScriptableRenderPipeline/fptl/lightlistbuild-bigtile.compute


#pragma kernel BigTileLightListGen
#include "..\common\ShaderBase.h"
#include "LightDefinitions.cs.hlsl"
#include "LightingConvexHullUtils.hlsl"
#include "SortingComputeUtils.hlsl"
#define EXACT_EDGE_TESTS
#define PERFORM_SPHERICAL_INTERSECTION_TESTS
#define MAX_NR_BIGTILE_LIGHTS (MAX_NR_BIGTILE_LIGHTS_PLUSONE-1)
uniform int g_iNrVisibLights;
uniform uint2 g_viDimensions;
uniform float4x4 g_mInvScrProjection;
uniform float4x4 g_mScrProjection;
uniform float g_fNearPlane;
uniform float g_fFarPlane;
StructuredBuffer<float3> g_vBoundsBuffer : register( t1 );
StructuredBuffer<SFiniteLightData> g_vLightData : register( t2 );
StructuredBuffer<SFiniteLightBound> g_data : register( t3 );
#define NR_THREADS 64
// output buffer
RWStructuredBuffer<uint> g_vLightList : register( u0 ); // don't support RWBuffer yet in unity
// 2kB (room for roughly 30 wavefronts)
groupshared unsigned int lightsListLDS[MAX_NR_BIGTILE_LIGHTS_PLUSONE];
groupshared uint lightOffs;
float GetLinearDepth(float zDptBufSpace) // 0 is near 1 is far
{
float3 vP = float3(0.0f,0.0f,zDptBufSpace);
float4 v4Pres = mul(g_mInvScrProjection, float4(vP,1.0));
return v4Pres.z / v4Pres.w;
}
float3 GetViewPosFromLinDepth(float2 v2ScrPos, float fLinDepth)
{
float fSx = g_mScrProjection[0].x;
float fCx = g_mScrProjection[0].z;
float fSy = g_mScrProjection[1].y;
float fCy = g_mScrProjection[1].z;
#if USE_LEFTHAND_CAMERASPACE
return fLinDepth*float3( ((v2ScrPos.x-fCx)/fSx), ((v2ScrPos.y-fCy)/fSy), 1.0 );
#else
return fLinDepth*float3( -((v2ScrPos.x+fCx)/fSx), -((v2ScrPos.y+fCy)/fSy), 1.0 );
#endif
}
float GetOnePixDiagWorldDistAtDepthOne()
{
float fSx = g_mScrProjection[0].x;
float fSy = g_mScrProjection[1].y;
return length( float2(1.0/fSx,1.0/fSy) );
}
#ifdef PERFORM_SPHERICAL_INTERSECTION_TESTS
void SphericalIntersectionTests(uint threadID, int iNrCoarseLights, float2 screenCoordinate);
#endif
#ifdef EXACT_EDGE_TESTS
void CullByExactEdgeTests(uint threadID, int iNrCoarseLights, uint2 viTilLL, uint2 viTilUR);
#endif
[numthreads(NR_THREADS, 1, 1)]
void BigTileLightListGen(uint threadID : SV_GroupIndex, uint3 u3GroupID : SV_GroupID)
{
uint2 tileIDX = u3GroupID.xy;
uint t=threadID;
uint iWidth = g_viDimensions.x;
uint iHeight = g_viDimensions.y;
uint nrBigTilesX = (iWidth+63)/64;
uint nrBigTilesY = (iHeight+63)/64;
if(t==0) lightOffs = 0;
#if !defined(SHADER_API_XBOXONE) && !defined(SHADER_API_PSSL)
GroupMemoryBarrierWithGroupSync();
#endif
uint2 viTilLL = 64*tileIDX;
uint2 viTilUR = min( viTilLL+uint2(64,64), uint2(iWidth, iHeight) ); // not width and height minus 1 since viTilUR represents the end of the tile corner.
float2 vTileLL = float2(viTilLL.x/(float) iWidth, viTilLL.y/(float) iHeight);
float2 vTileUR = float2(viTilUR.x/(float) iWidth, viTilUR.y/(float) iHeight);
// build coarse list using AABB
for(int l=(int) t; l<(int) g_iNrVisibLights; l += NR_THREADS)
{
const float2 vMi = g_vBoundsBuffer[l].xy;
const float2 vMa = g_vBoundsBuffer[l+g_iNrVisibLights].xy;
if( all(vMa>vTileLL) && all(vMi<vTileUR))
{
unsigned int uInc = 1;
unsigned int uIndex;
InterlockedAdd(lightOffs, uInc, uIndex);
if(uIndex<MAX_NR_BIGTILE_LIGHTS) lightsListLDS[uIndex] = l; // add to light list
}
}
#if !defined(SHADER_API_XBOXONE) && !defined(SHADER_API_PSSL)
GroupMemoryBarrierWithGroupSync();
#endif
int iNrCoarseLights = min(lightOffs,MAX_NR_BIGTILE_LIGHTS);
#ifdef PERFORM_SPHERICAL_INTERSECTION_TESTS
SphericalIntersectionTests( t, iNrCoarseLights, float2(min(viTilLL.xy+uint2(64/2,64/2), uint2(iWidth-1, iHeight-1))) );
#endif
#ifdef EXACT_EDGE_TESTS
CullByExactEdgeTests(t, iNrCoarseLights, viTilLL.xy, viTilUR.xy);
#endif
// sort lights
SORTLIST(lightsListLDS, iNrCoarseLights, MAX_NR_BIGTILE_LIGHTS_PLUSONE, t, NR_THREADS);
if(t==0) lightOffs = 0;
GroupMemoryBarrierWithGroupSync();
for(int i=t; i<iNrCoarseLights; i+=NR_THREADS) if(lightsListLDS[i]<g_iNrVisibLights) InterlockedAdd(lightOffs, 1);
GroupMemoryBarrierWithGroupSync();
iNrCoarseLights = lightOffs;
int offs = tileIDX.y*nrBigTilesX + tileIDX.x;
for(int i=t; i<(iNrCoarseLights+1); i+=NR_THREADS)
g_vLightList[MAX_NR_BIGTILE_LIGHTS_PLUSONE*offs + i] = i==0 ? iNrCoarseLights : lightsListLDS[i-1];
}
#ifdef PERFORM_SPHERICAL_INTERSECTION_TESTS
void SphericalIntersectionTests(uint threadID, int iNrCoarseLights, float2 screenCoordinate)
{
#if USE_LEFTHAND_CAMERASPACE
float3 V = GetViewPosFromLinDepth( screenCoordinate, 1.0);
#else
float3 V = GetViewPosFromLinDepth( screenCoordinate, -1.0);
#endif
float onePixDiagDist = GetOnePixDiagWorldDistAtDepthOne();
float halfTileSizeAtZDistOne = 32*onePixDiagDist; // scale by half a tile
for(int l=threadID; l<iNrCoarseLights; l+=NR_THREADS)
{
SFiniteLightBound lgtDat = g_data[lightsListLDS[l]];
if( !DoesSphereOverlapTile(V, halfTileSizeAtZDistOne, lgtDat.center.xyz, lgtDat.radius) )
lightsListLDS[l]=0xffffffff;
}
#if !defined(SHADER_API_XBOXONE) && !defined(SHADER_API_PSSL)
GroupMemoryBarrierWithGroupSync();
#endif
}
#endif
#ifdef EXACT_EDGE_TESTS
float3 GetTileVertex(uint2 viTilLL, uint2 viTilUR, int i, float fTileFarPlane)
{
float x = (i&1)==0 ? viTilLL.x : viTilUR.x;
float y = (i&2)==0 ? viTilLL.y : viTilUR.y;
float z = (i&4)==0 ? g_fNearPlane : fTileFarPlane;
#if !USE_LEFTHAND_CAMERASPACE
z = -z;
#endif
return GetViewPosFromLinDepth( float2(x, y), z);
}
void GetFrustEdge(out float3 vP0, out float3 vE0, const int e0, uint2 viTilLL, uint2 viTilUR, float fTileFarPlane)
{
int iSection = e0>>2; // section 0 is side edges, section 1 is near edges and section 2 is far edges
int iSwizzle = e0&0x3;
int i=iSwizzle + (2*(iSection&0x2)); // offset by 4 at section 2
vP0 = GetTileVertex(uint2(viTilLL.x, viTilUR.y), uint2(viTilUR.x, viTilLL.y), i, fTileFarPlane);
vE0 = iSection==0 ? vP0 : (((iSwizzle&0x2)==0 ? 1.0f : (-1.0f))*((iSwizzle&0x1)==(iSwizzle>>1) ? float3(1,0,0) : float3(0,1,0)));
}
void CullByExactEdgeTests(uint threadID, int iNrCoarseLights, uint2 viTilLL, uint2 viTilUR)
{
const bool bOnlyNeedFrustumSideEdges = true;
const int nrFrustEdges = bOnlyNeedFrustumSideEdges ? 4 : 8; // max 8 since we never need to test 4 far edges of frustum since they are identical vectors to near edges and plane is placed at vP0 on light hull.
const int totNrEdgePairs = 12*nrFrustEdges;
for(int l=0; l<iNrCoarseLights; l++)
{
const uint idxCoarse = lightsListLDS[l];
bool canEnter = idxCoarse<(uint) g_iNrVisibLights;
if(canEnter) canEnter = g_vLightData[idxCoarse].lightType!=SPHERE_LIGHT; // don't bother doing edge tests for sphere lights since these have camera aligned bboxes.
[branch]if(canEnter)
{
SFiniteLightBound lgtDat = g_data[idxCoarse];
const float3 boxX = lgtDat.boxAxisX.xyz;
const float3 boxY = lgtDat.boxAxisY.xyz;
const float3 boxZ = -lgtDat.boxAxisZ.xyz; // flip axis (so it points away from the light direction for a spot-light)
const float3 center = lgtDat.center.xyz;
const float2 scaleXY = lgtDat.scaleXY;
for(int i=threadID; i<totNrEdgePairs; i+=NR_THREADS)
{
int e0 = (int) (((uint)i)/((uint) nrFrustEdges)); // should become a shift right
int e1 = i - e0*nrFrustEdges;
int idx_cur=0, idx_twin=0;
float3 vP0, vE0;
GetHullEdge(idx_cur, idx_twin, vP0, vE0, e0, boxX, boxY, boxZ, center, scaleXY);
float3 vP1, vE1;
GetFrustEdge(vP1, vE1, e1, viTilLL, viTilUR, g_fFarPlane);
// potential separation plane
float3 vN = cross(vE0, vE1);
int positive=0, negative=0;
for(int k=1; k<8; k++) // only need to test 7 verts (technically just 6).
{
int j = (idx_cur+k)&0x7;
float3 vPh = GetHullVertex(boxX, boxY, boxZ, center, scaleXY, j);
float fSignDist = idx_twin==j ? 0.0 : dot(vN, vPh-vP0);
if(fSignDist>0) ++positive; else if(fSignDist<0) ++negative;
}
int resh = (positive>0 && negative>0) ? 0 : (positive>0 ? 1 : (negative>0 ? (-1) : 0));
positive=0; negative=0;
for(int j=0; j<8; j++)
{
float3 vPf = GetTileVertex(viTilLL, viTilUR, j, g_fFarPlane);
float fSignDist = dot(vN, vPf-vP0);
if(fSignDist>0) ++positive; else if(fSignDist<0) ++negative;
}
int resf = (positive>0 && negative>0) ? 0 : (positive>0 ? 1 : (negative>0 ? (-1) : 0));
bool bFoundSepPlane = (resh*resf)<0;
if(bFoundSepPlane) lightsListLDS[l]=0xffffffff;
}
}
}
#if !defined(SHADER_API_XBOXONE) && !defined(SHADER_API_PSSL)
GroupMemoryBarrierWithGroupSync();
#endif
}
#endif

63
Assets/ScriptableRenderPipeline/fptl/LightBoundsDebug.shader


// Final compositing pass, just does gamma conversion for now.
Shader "Hidden/LightBoundsDebug"
{
Properties { }
SubShader {
Pass {
ZTest Always
Cull Off
ZWrite Off
Blend SrcAlpha One
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma target 4.5
#include "UnityCG.cginc"
#include "LightDefinitions.cs.hlsl"
StructuredBuffer<SFiniteLightBound> g_data : register(t0);
float4 vert(uint globalIndex : SV_VertexID) : SV_POSITION
{
uint lightIndex = globalIndex / 36;
uint localIndex = globalIndex - lightIndex * 36;
uint faceIndex = localIndex / 6;
uint vertexIndex = localIndex - faceIndex * 6;
int remapTrisToQuad[6] = { 0,1,2,2,3,0 }; // Remap tri indices to quad indices: 012345->012230
vertexIndex = remapTrisToQuad[vertexIndex];
uint faces[6][4] = {
{0, 2, 6, 4}, //-x
{1, 5, 7, 3}, //+x
{0, 4, 5, 1}, //-y
{2, 3, 7, 6}, //+y
{0, 1, 3, 2}, //-z
{4, 6, 7, 5}, //+z
};
SFiniteLightBound lightData = g_data[lightIndex];
uint coordIndex = faces[faceIndex][vertexIndex];
float3 coord = float3((coordIndex & 1) ? 1.0f : -1.0f, (coordIndex & 2) ? 1.0f : -1.0f, (coordIndex & 4) ? 1.0f : -1.0f);
coord.xy *= (coordIndex >= 4) ? lightData.scaleXY : float2(1, 1);
float3 viewPos = lightData.center + coord.x * lightData.boxAxisX.xyz + coord.y * lightData.boxAxisY.xyz + coord.z * -lightData.boxAxisZ.xyz;
#if USE_LEFTHAND_CAMERASPACE
// not completely sure why this is necessary since the old stuff pretends camera coordinate system is also left-hand.
// see: Camera::CalculateMatrixShaderProps()
viewPos.z = -viewPos.z;
#endif
return UnityViewToClipPos(viewPos);
}
fixed4 frag() : SV_Target
{
return float4(1.0f, 0.5f, 0.3f, 0.1f);
}
ENDCG
}
}
Fallback Off
}

140
Assets/ScriptableRenderPipeline/fptl/Internal-DeferredShading.shader


Shader "Hidden/Internal-Obscurity" {
Properties {
_LightTexture0 ("", any) = "" {}
_ShadowMapTexture ("", any) = "" {}
_SrcBlend ("", Float) = 1
_DstBlend ("", Float) = 1
}
SubShader {
Pass
{
ZWrite Off
ZTest Always
Cull Off
Blend Off
//Blend [_SrcBlend] [_DstBlend]
CGPROGRAM
#pragma target 4.5
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile USE_FPTL_LIGHTLIST USE_CLUSTERED_LIGHTLIST
#pragma multi_compile __ ENABLE_DEBUG
#include "UnityLightingCommon.cginc"
float3 EvalMaterial(UnityLight light, UnityIndirect ind);
// uses the optimized single layered light list for opaques only
#ifdef USE_FPTL_LIGHTLIST
#define OPAQUES_ONLY
#endif
#include "TiledLightingTemplate.hlsl"
UNITY_DECLARE_TEX2D_FLOAT(_CameraDepthTexture);
Texture2D _CameraGBufferTexture0;
Texture2D _CameraGBufferTexture1;
Texture2D _CameraGBufferTexture2;
Texture2D _CameraGBufferTexture3;
struct v2f {
float4 vertex : SV_POSITION;
float2 texcoord : TEXCOORD0;
};
v2f vert (float4 vertex : POSITION, float2 texcoord : TEXCOORD0)
{
v2f o;
o.vertex = UnityObjectToClipPos(vertex);
o.texcoord = texcoord.xy;
return o;
}
struct StandardData
{
float3 specularColor;
float3 diffuseColor;
float3 normalWorld;
float smoothness;
float3 emission;
};
struct LocalDataBRDF
{
StandardData gbuf;
// extras
float oneMinusReflectivity;
float3 Vworld;
};
static LocalDataBRDF g_localParams;
StandardData UnityStandardDataFromGbufferAux(float4 gbuffer0, float4 gbuffer1, float4 gbuffer2, float4 gbuffer3)
{
StandardData data;
data.normalWorld = normalize(2*gbuffer2.xyz-1);
data.smoothness = gbuffer1.a;
data.diffuseColor = gbuffer0.xyz; data.specularColor = gbuffer1.xyz;
float ao = gbuffer0.a;
data.emission = gbuffer3.xyz;
return data;
}
float3 EvalMaterial(UnityLight light, UnityIndirect ind)
{
StandardData data = g_localParams.gbuf;
return UNITY_BRDF_PBS(data.diffuseColor, data.specularColor, g_localParams.oneMinusReflectivity, data.smoothness, data.normalWorld, g_localParams.Vworld, light, ind);
}
half4 frag (v2f i) : SV_Target
{
uint2 pixCoord = ((uint2) i.vertex.xy);
float zbufDpth = FetchDepth(_CameraDepthTexture, pixCoord.xy).x;
float linDepth = GetLinearDepth(zbufDpth);
float3 vP = GetViewPosFromLinDepth(i.vertex.xy, linDepth);
float3 vPw = mul(g_mViewToWorld, float4(vP, 1)).xyz;
float3 Vworld = normalize(mul((float3x3) g_mViewToWorld, -vP).xyz); //unity_CameraToWorld
float4 gbuffer0 = _CameraGBufferTexture0.Load( uint3(pixCoord.xy, 0) );
float4 gbuffer1 = _CameraGBufferTexture1.Load( uint3(pixCoord.xy, 0) );
float4 gbuffer2 = _CameraGBufferTexture2.Load( uint3(pixCoord.xy, 0) );
float4 gbuffer3 = _CameraGBufferTexture3.Load( uint3(pixCoord.xy, 0) );
StandardData data = UnityStandardDataFromGbufferAux(gbuffer0, gbuffer1, gbuffer2, gbuffer3);
g_localParams.gbuf = data;
g_localParams.oneMinusReflectivity = 1.0 - SpecularStrength(data.specularColor.rgb);
g_localParams.Vworld = Vworld;
uint numLightsProcessed = 0;
float3 c = data.emission + ExecuteLightList(numLightsProcessed, pixCoord, vP, vPw, Vworld);
#if ENABLE_DEBUG
c = OverlayHeatMap(pixCoord & 15, numLightsProcessed, c);
#endif
return float4(c,1.0);
}
ENDCG
}
}
Fallback Off
}

146
Assets/ScriptableRenderPipeline/fptl/Internal-DeferredReflections.shader


Shader "Hidden/Internal-TiledReflections" {
Properties {
_LightTexture0 ("", any) = "" {}
_ShadowMapTexture ("", any) = "" {}
_SrcBlend ("", Float) = 1
_DstBlend ("", Float) = 1
}
SubShader {
Pass
{
ZWrite Off
ZTest Always
Cull Off
//Blend Off
Blend [_SrcBlend] [_DstBlend]
CGPROGRAM
#pragma target 4.5
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile USE_FPTL_LIGHTLIST USE_CLUSTERED_LIGHTLIST
#pragma multi_compile __ ENABLE_DEBUG
#include "UnityLightingCommon.cginc"
float3 EvalIndirectSpecular(UnityLight light, UnityIndirect ind);
// uses the optimized single layered light list for opaques only
#ifdef USE_FPTL_LIGHTLIST
#define OPAQUES_ONLY
#endif
#include "TiledReflectionTemplate.hlsl"
UNITY_DECLARE_TEX2D_FLOAT(_CameraDepthTexture);
Texture2D _CameraGBufferTexture0;
Texture2D _CameraGBufferTexture1;
Texture2D _CameraGBufferTexture2;
float3 ExecuteReflectionProbes(uint2 pixCoord, uint start, uint numLights, float linDepth);
struct v2f {
float4 vertex : SV_POSITION;
float2 texcoord : TEXCOORD0;
};
v2f vert (float4 vertex : POSITION, float2 texcoord : TEXCOORD0)
{
v2f o;
o.vertex = UnityObjectToClipPos(vertex);
o.texcoord = texcoord.xy;
return o;
}
struct StandardData
{
float3 specularColor;
float3 diffuseColor;
float3 normalWorld;
float smoothness;
float occlusion;
};
struct LocalDataBRDF
{
StandardData gbuf;
// extras
float oneMinusReflectivity;
float3 Vworld;
};
static LocalDataBRDF g_localParams;
StandardData UnityStandardDataFromGbufferAux(float4 gbuffer0, float4 gbuffer1, float4 gbuffer2)
{
StandardData data;
data.normalWorld = normalize(2*gbuffer2.xyz-1);
data.smoothness = gbuffer1.a;
data.diffuseColor = gbuffer0.xyz; data.specularColor = gbuffer1.xyz;
data.occlusion = gbuffer0.a;
return data;
}
float3 EvalIndirectSpecular(UnityLight light, UnityIndirect ind)
{
StandardData data = g_localParams.gbuf;
return data.occlusion * UNITY_BRDF_PBS(0, data.specularColor, g_localParams.oneMinusReflectivity, data.smoothness, data.normalWorld, g_localParams.Vworld, light, ind).rgb;
}
half4 frag (v2f i) : SV_Target
{
uint2 pixCoord = ((uint2) i.vertex.xy);
float zbufDpth = FetchDepth(_CameraDepthTexture, pixCoord.xy).x;
float linDepth = GetLinearDepth(zbufDpth);
float3 vP = GetViewPosFromLinDepth(i.vertex.xy, linDepth);
float3 vPw = mul(g_mViewToWorld, float4(vP, 1)).xyz;
float3 Vworld = normalize(mul((float3x3) g_mViewToWorld, -vP).xyz); //unity_CameraToWorld
float4 gbuffer0 = _CameraGBufferTexture0.Load( uint3(pixCoord.xy, 0) );
float4 gbuffer1 = _CameraGBufferTexture1.Load( uint3(pixCoord.xy, 0) );
float4 gbuffer2 = _CameraGBufferTexture2.Load( uint3(pixCoord.xy, 0) );
StandardData data = UnityStandardDataFromGbufferAux(gbuffer0, gbuffer1, gbuffer2);
g_localParams.gbuf = data;
g_localParams.oneMinusReflectivity = 1.0 - SpecularStrength(data.specularColor.rgb);
g_localParams.Vworld = Vworld;
uint numReflectionsProcessed = 0;
float3 c = ExecuteReflectionList(numReflectionsProcessed, pixCoord, vP, data.normalWorld, Vworld, data.smoothness);
#if ENABLE_DEBUG
c = OverlayHeatMap(pixCoord & 15, numReflectionsProcessed, c);
#endif
return float4(c,1.0);
}
ENDCG
}
}
Fallback Off
}

97
Assets/ScriptableRenderPipeline/fptl/LightDefinitions.cs


using UnityEngine;
using UnityEngine.Experimental.Rendering;
[GenerateHLSL]
public struct SFiniteLightData
{
// setup constant buffer
public float penumbra;
public int flags;
public uint lightType;
public uint lightModel; // DIRECT_LIGHT=0, REFLECTION_LIGHT=1
public Vector3 lightPos;
public float lightIntensity;
public Vector3 lightAxisX;
public float recipRange;
public Vector3 lightAxisY;
public float radiusSq;
public Vector3 lightAxisZ; // spot +Z axis
public float cotan;
public Vector3 color;
public int sliceIndex;
public Vector3 boxInnerDist;
public float decodeExp;
public Vector3 boxInvRange;
public uint shadowLightIndex;
public Vector3 localCubeCapturePoint;
public float probeBlendDistance;
};
[GenerateHLSL]
public struct SFiniteLightBound
{
public Vector3 boxAxisX;
public Vector3 boxAxisY;
public Vector3 boxAxisZ;
public Vector3 center; // a center in camera space inside the bounding volume of the light source.
public Vector2 scaleXY;
public float radius;
};
[GenerateHLSL]
public struct DirectionalLight
{
public Vector3 color;
public float intensity;
public Vector3 lightAxisX;
public uint shadowLightIndex;
public Vector3 lightAxisY;
public float pad0;
public Vector3 lightAxisZ;
public float pad1;
};
[GenerateHLSL]
public class LightDefinitions
{
public static int MAX_NR_LIGHTS_PER_CAMERA = 1024;
public static int MAX_NR_BIGTILE_LIGHTS_PLUSONE = 512; // may be overkill but the footprint is 2 bits per pixel using uint16.
public static float VIEWPORT_SCALE_Z = 1.0f;
// must be either 16, 32 or 64. Could go higher in principle but big tiles in the pre-pass are already 64x64
public static int TILE_SIZE_CLUSTERED = 32;
// enable unity's original left-hand shader camera space (right-hand internally in unity).
public static int USE_LEFTHAND_CAMERASPACE = 0;
// flags
public static int IS_CIRCULAR_SPOT_SHAPE = 1;
public static int HAS_COOKIE_TEXTURE = 2;
public static int IS_BOX_PROJECTED = 4;
public static int HAS_SHADOW = 8;
// types
public static int MAX_TYPES = 3;
public static int SPOT_LIGHT = 0;
public static int SPHERE_LIGHT = 1;
public static int BOX_LIGHT = 2;
public static int DIRECTIONAL_LIGHT = 3;
// direct lights and reflection probes for now
public static int NR_LIGHT_MODELS = 2;
public static int DIRECT_LIGHT = 0;
public static int REFLECTION_LIGHT = 1;
}

229
Assets/ScriptableRenderPipeline/fptl/LightDefinitions.cs.hlsl


//
// This file was automatically generated from Assets/ScriptableRenderPipeline/fptl/LightDefinitions.cs. Please don't edit by hand.
//
#ifndef LIGHTDEFINITIONS_CS_HLSL
#define LIGHTDEFINITIONS_CS_HLSL
//
// LightDefinitions: static fields
//
#define MAX_NR_LIGHTS_PER_CAMERA (1024)
#define MAX_NR_BIGTILE_LIGHTS_PLUSONE (512)
#define VIEWPORT_SCALE_Z (1)
#define TILE_SIZE_CLUSTERED (32)
#define USE_LEFTHAND_CAMERASPACE (0)
#define IS_CIRCULAR_SPOT_SHAPE (1)
#define HAS_COOKIE_TEXTURE (2)
#define IS_BOX_PROJECTED (4)
#define HAS_SHADOW (8)
#define MAX_TYPES (3)
#define SPOT_LIGHT (0)
#define SPHERE_LIGHT (1)
#define BOX_LIGHT (2)
#define DIRECTIONAL_LIGHT (3)
#define NR_LIGHT_MODELS (2)
#define DIRECT_LIGHT (0)
#define REFLECTION_LIGHT (1)
// Generated from SFiniteLightData
// PackingRules = Exact
struct SFiniteLightData
{
float penumbra;
int flags;
uint lightType;
uint lightModel;
float3 lightPos;
float lightIntensity;
float3 lightAxisX;
float recipRange;
float3 lightAxisY;
float radiusSq;
float3 lightAxisZ;
float cotan;
float3 color;
int sliceIndex;
float3 boxInnerDist;
float decodeExp;
float3 boxInvRange;
uint shadowLightIndex;
float3 localCubeCapturePoint;
float probeBlendDistance;
};
// Generated from SFiniteLightBound
// PackingRules = Exact
struct SFiniteLightBound
{
float3 boxAxisX;
float3 boxAxisY;
float3 boxAxisZ;
float3 center;
float2 scaleXY;
float radius;
};
// Generated from DirectionalLight
// PackingRules = Exact
struct DirectionalLight
{
float3 color;
float intensity;
float3 lightAxisX;
uint shadowLightIndex;
float3 lightAxisY;
float pad0;
float3 lightAxisZ;
float pad1;
};
//
// Accessors for SFiniteLightData
//
float GetPenumbra(SFiniteLightData value)
{
return value.penumbra;
}
int GetFlags(SFiniteLightData value)
{
return value.flags;
}
uint GetLightType(SFiniteLightData value)
{
return value.lightType;
}
uint GetLightModel(SFiniteLightData value)
{
return value.lightModel;
}
float3 GetLightPos(SFiniteLightData value)
{
return value.lightPos;
}
float GetLightIntensity(SFiniteLightData value)
{
return value.lightIntensity;
}
float3 GetLightAxisX(SFiniteLightData value)
{
return value.lightAxisX;
}
float GetRecipRange(SFiniteLightData value)
{
return value.recipRange;
}
float3 GetLightAxisY(SFiniteLightData value)
{
return value.lightAxisY;
}
float GetRadiusSq(SFiniteLightData value)
{
return value.radiusSq;
}
float3 GetLightAxisZ(SFiniteLightData value)
{
return value.lightAxisZ;
}
float GetCotan(SFiniteLightData value)
{
return value.cotan;
}
float3 GetColor(SFiniteLightData value)
{
return value.color;
}
int GetSliceIndex(SFiniteLightData value)
{
return value.sliceIndex;
}
float3 GetBoxInnerDist(SFiniteLightData value)
{
return value.boxInnerDist;
}
float GetDecodeExp(SFiniteLightData value)
{
return value.decodeExp;
}
float3 GetBoxInvRange(SFiniteLightData value)
{
return value.boxInvRange;
}
uint GetShadowLightIndex(SFiniteLightData value)
{
return value.shadowLightIndex;
}
float3 GetLocalCubeCapturePoint(SFiniteLightData value)
{
return value.localCubeCapturePoint;
}
float GetProbeBlendDistance(SFiniteLightData value)
{
return value.probeBlendDistance;
}
//
// Accessors for SFiniteLightBound
//
float3 GetBoxAxisX(SFiniteLightBound value)
{
return value.boxAxisX;
}
float3 GetBoxAxisY(SFiniteLightBound value)
{
return value.boxAxisY;
}
float3 GetBoxAxisZ(SFiniteLightBound value)
{
return value.boxAxisZ;
}
float3 GetCenter(SFiniteLightBound value)
{
return value.center;
}
float2 GetScaleXY(SFiniteLightBound value)
{
return value.scaleXY;
}
float GetRadius(SFiniteLightBound value)
{
return value.radius;
}
//
// Accessors for DirectionalLight
//
float3 GetColor(DirectionalLight value)
{
return value.color;
}
float GetIntensity(DirectionalLight value)
{
return value.intensity;
}
float3 GetLightAxisX(DirectionalLight value)
{
return value.lightAxisX;
}
uint GetShadowLightIndex(DirectionalLight value)
{
return value.shadowLightIndex;
}
float3 GetLightAxisY(DirectionalLight value)
{
return value.lightAxisY;
}
float GetPad0(DirectionalLight value)
{
return value.pad0;
}
float3 GetLightAxisZ(DirectionalLight value)
{
return value.lightAxisZ;
}
float GetPad1(DirectionalLight value)
{
return value.pad1;
}
#endif

19
Assets/ScriptableRenderPipeline/fptl/TiledLightingTemplate.hlsl


#ifndef __TILEDLIGHTINGTEMPLATE_H__
#define __TILEDLIGHTINGTEMPLATE_H__
#include "TiledLightingUtils.hlsl"
#include "LightingTemplate.hlsl"
float3 ExecuteLightList(out uint numLightsProcessed, uint2 pixCoord, float3 vP, float3 vPw, float3 Vworld)
{
uint start = 0, numLights = 0;
GetCountAndStart(start, numLights, pixCoord, vP.z, DIRECT_LIGHT);
numLightsProcessed = numLights; // mainly for debugging/heat maps
return ExecuteLightList(start, numLights, vP, vPw, Vworld);
}
#endif

100
Assets/ScriptableRenderPipeline/fptl/TiledLightingUtils.hlsl


#ifndef __TILEDLIGHTINGUTILS_H__
#define __TILEDLIGHTINGUTILS_H__
#include "LightingUtils.hlsl"
// these uniforms are only needed for when OPAQUES_ONLY is NOT defined
// but there's a problem with our front-end compilation of compute shaders with multiple kernels causing it to error
//#ifndef OPAQUES_ONLY
uniform float g_fClustScale;
uniform float g_fClustBase;
uniform float g_fNearPlane;
uniform float g_fFarPlane;
uniform int g_iLog2NumClusters; // We need to always define these to keep constant buffer layouts compatible
uniform uint g_isLogBaseBufferEnabled;
uniform uint g_isOpaquesOnlyEnabled;
//#endif
StructuredBuffer<SFiniteLightData> g_vLightData;
StructuredBuffer<uint> g_vLightListGlobal; // don't support Buffer yet in unity
void GetCountAndStartOpaque(out uint uStart, out uint uNrLights, uint2 pixCoord, float linDepth, uint model)
{
uint tileSize = 16;
uint nrTilesX = ((uint) (g_widthRT+(tileSize-1)))/tileSize; uint nrTilesY = ((uint) (g_heightRT+(tileSize-1)))/tileSize;
uint2 tileIDX = pixCoord / tileSize;
const int tileOffs = (tileIDX.y+model*nrTilesY)*nrTilesX+tileIDX.x;
uNrLights = g_vLightListGlobal[ 16*tileOffs + 0]&0xffff;
uStart = tileOffs;
}
uint FetchIndexOpaque(const uint tileOffs, const uint l)
{
const uint l1 = l+1;
return (g_vLightListGlobal[ 16*tileOffs + (l1>>1)]>>((l1&1)*16))&0xffff;
}
#ifdef OPAQUES_ONLY
void GetCountAndStart(out uint uStart, out uint uNrLights, uint2 pixCoord, float linDepth, uint model)
{
GetCountAndStartOpaque(uStart, uNrLights, pixCoord, linDepth, model);
}
uint FetchIndex(const uint tileOffs, const uint l)
{
return FetchIndexOpaque(tileOffs, l);
}
#else
#include "ClusteredUtils.h"
StructuredBuffer<uint> g_vLayeredOffsetsBuffer; // don't support Buffer yet in unity
StructuredBuffer<float> g_logBaseBuffer; // don't support Buffer yet in unity
void GetCountAndStart(out uint uStart, out uint uNrLights, uint2 pixCoord, float linDepth, uint model)
{
if(g_isOpaquesOnlyEnabled)
{
GetCountAndStartOpaque(uStart, uNrLights, pixCoord, linDepth, model);
}
else
{
uint nrTilesX = ((uint) (g_widthRT+(TILE_SIZE_CLUSTERED-1))) / ((uint) TILE_SIZE_CLUSTERED);
uint nrTilesY = ((uint) (g_heightRT+(TILE_SIZE_CLUSTERED-1))) / ((uint) TILE_SIZE_CLUSTERED);
uint2 tileIDX = pixCoord / ((uint) TILE_SIZE_CLUSTERED);
float logBase = g_fClustBase;
if(g_isLogBaseBufferEnabled)
logBase = g_logBaseBuffer[tileIDX.y*nrTilesX + tileIDX.x];
int clustIdx = SnapToClusterIdxFlex(linDepth, logBase, g_isLogBaseBufferEnabled!=0);
int nrClusters = (1<<g_iLog2NumClusters);
const int idx = ((model*nrClusters + clustIdx)*nrTilesY + tileIDX.y)*nrTilesX + tileIDX.x;
uint dataPair = g_vLayeredOffsetsBuffer[idx];
uStart = dataPair&0x7ffffff;
uNrLights = (dataPair>>27)&31;
}
}
uint FetchIndex(const uint tileOffs, const uint l)
{
if(g_isOpaquesOnlyEnabled)
return FetchIndexOpaque(tileOffs, l);
else
return g_vLightListGlobal[ tileOffs+l ];
}
#endif
#endif

20
Assets/ScriptableRenderPipeline/fptl/TiledReflectionTemplate.hlsl


#ifndef __TILEDREFLECTIONTEMPLATE_H__
#define __TILEDREFLECTIONTEMPLATE_H__
#include "TiledLightingUtils.hlsl"
#include "ReflectionTemplate.hlsl"
float3 ExecuteReflectionList(out uint numReflectionProbesProcessed, uint2 pixCoord, float3 vP, float3 vNw, float3 Vworld, float smoothness)
{
uint start = 0, numReflectionProbes = 0;
GetCountAndStart(start, numReflectionProbes, pixCoord, vP.z, REFLECTION_LIGHT);
numReflectionProbesProcessed = numReflectionProbes; // mainly for debugging/heat maps
return ExecuteReflectionList(start, numReflectionProbes, vP, vNw, Vworld, smoothness);
}
#endif

558
Assets/ScriptableRenderPipeline/fptl/lightlistbuild-clustered.compute


#pragma kernel TileLightListGen_NoDepthRT LIGHTLISTGEN=TileLightListGen_NoDepthRT
#pragma kernel TileLightListGen_DepthRT LIGHTLISTGEN=TileLightListGen_DepthRT ENABLE_DEPTH_TEXTURE_BACKPLANE
#pragma kernel TileLightListGen_DepthRT_MSAA LIGHTLISTGEN=TileLightListGen_DepthRT_MSAA ENABLE_DEPTH_TEXTURE_BACKPLANE MSAA_ENABLED
#pragma kernel TileLightListGen_NoDepthRT_SrcBigTile LIGHTLISTGEN=TileLightListGen_NoDepthRT_SrcBigTile USE_TWO_PASS_TILED_LIGHTING
#pragma kernel TileLightListGen_DepthRT_SrcBigTile LIGHTLISTGEN=TileLightListGen_DepthRT_SrcBigTile ENABLE_DEPTH_TEXTURE_BACKPLANE USE_TWO_PASS_TILED_LIGHTING
#pragma kernel TileLightListGen_DepthRT_MSAA_SrcBigTile LIGHTLISTGEN=TileLightListGen_DepthRT_MSAA_SrcBigTile ENABLE_DEPTH_TEXTURE_BACKPLANE MSAA_ENABLED USE_TWO_PASS_TILED_LIGHTING
#pragma kernel ClearAtomic
#include "..\common\ShaderBase.h"
#include "LightDefinitions.cs.hlsl"
#include "LightingConvexHullUtils.hlsl"
#if !defined(SHADER_API_XBOXONE) && !defined(SHADER_API_PSSL)
#include "SortingComputeUtils.hlsl"
#endif
//#define EXACT_EDGE_TESTS
#define PERFORM_SPHERICAL_INTERSECTION_TESTS
#define CONV_HULL_TEST_ENABLED
uniform int g_iNrVisibLights;
uniform float4x4 g_mInvScrProjection;
uniform float4x4 g_mScrProjection;
uniform float g_fClustScale;
uniform float g_fClustBase;
uniform float g_fNearPlane;
uniform float g_fFarPlane;
uniform int g_iLog2NumClusters; // numClusters = (1<<g_iLog2NumClusters)
#include "ClusteredUtils.h"
#ifdef MSAA_ENABLED
Texture2DMS<float> g_depth_tex : register( t0 );
#else
Texture2D g_depth_tex : register( t0 );
#endif
StructuredBuffer<float3> g_vBoundsBuffer : register( t1 );
StructuredBuffer<SFiniteLightData> g_vLightData : register( t2 );
StructuredBuffer<SFiniteLightBound> g_data : register( t3 );
#ifdef USE_TWO_PASS_TILED_LIGHTING
StructuredBuffer<uint> g_vBigTileLightList : register( t4 ); // don't support Buffer yet in unity
#endif
#define NR_THREADS 64
// output buffer
RWStructuredBuffer<uint> g_vLayeredLightList : register( u0 ); // don't support RWBuffer yet in unity
RWStructuredBuffer<uint> g_LayeredOffset : register( u1 ); // don't support RWBuffer yet in unity
RWStructuredBuffer<uint> g_LayeredSingleIdxBuffer : register( u2 ); // don't support RWBuffer yet in unity
#ifdef ENABLE_DEPTH_TEXTURE_BACKPLANE
RWStructuredBuffer<float> g_logBaseBuffer : register( u3 ); // don't support RWBuffer yet in unity
#endif
#define MAX_NR_COARSE_ENTRIES 128
groupshared unsigned int coarseList[MAX_NR_COARSE_ENTRIES];
groupshared unsigned int clusterIdxs[MAX_NR_COARSE_ENTRIES/2];
groupshared float4 lightPlanes[4*6];
groupshared uint lightOffs;
#ifdef ENABLE_DEPTH_TEXTURE_BACKPLANE
groupshared int ldsZMax;
#endif
#ifdef EXACT_EDGE_TESTS
groupshared uint ldsIsLightInvisible;
groupshared uint lightOffs2;
#endif
#ifdef PERFORM_SPHERICAL_INTERSECTION_TESTS
groupshared uint lightOffsSph;
#endif
float GetLinearDepth(float zDptBufSpace) // 0 is near 1 is far
{
float3 vP = float3(0.0f,0.0f,zDptBufSpace);
float4 v4Pres = mul(g_mInvScrProjection, float4(vP,1.0));
return v4Pres.z / v4Pres.w;
}
float3 GetViewPosFromLinDepth(float2 v2ScrPos, float fLinDepth)
{
float fSx = g_mScrProjection[0].x;
float fCx = g_mScrProjection[0].z;
float fSy = g_mScrProjection[1].y;
float fCy = g_mScrProjection[1].z;
#if USE_LEFTHAND_CAMERASPACE
return fLinDepth*float3( ((v2ScrPos.x-fCx)/fSx), ((v2ScrPos.y-fCy)/fSy), 1.0 );
#else
return fLinDepth*float3( -((v2ScrPos.x+fCx)/fSx), -((v2ScrPos.y+fCy)/fSy), 1.0 );
#endif
}
float GetOnePixDiagWorldDistAtDepthOne()
{
float fSx = g_mScrProjection[0].x;
float fSy = g_mScrProjection[1].y;
return length( float2(1.0/fSx,1.0/fSy) );
}
#ifdef EXACT_EDGE_TESTS
int CullByExactEdgeTests(uint threadID, int iNrCoarseLights, uint2 viTilLL, uint2 viTilUR, float fTileFarPlane);
#endif
#ifdef PERFORM_SPHERICAL_INTERSECTION_TESTS
int SphericalIntersectionTests(uint threadID, int iNrCoarseLights, float2 screenCoordinate);
#endif
// returns 1 for intersection and 0 for none
float4 FetchPlane(int l, int p);
bool CheckIntersection(int l, int k, uint2 viTilLL, uint2 viTilUR, float suggestedBase)
{
unsigned int val = (clusterIdxs[l>>1]>>(16*(l&1)))&0xffff;
bool bIsHit = ((val>>0)&0xff)<=((uint) k) && ((uint) k)<=((val>>8)&0xff);
if(bIsHit)
{
#ifdef CONV_HULL_TEST_ENABLED
float depthAtNearZ = ClusterIdxToZ(k, suggestedBase);
float depthAtFarZ = ClusterIdxToZ(k+1, suggestedBase);
for(int p=0; p<6; p++)
{
float4 plane = lightPlanes[6*(l&3)+p];
bool bAllInvisib = true;
for(int i=0; i<8; i++)
{
float x = (i&1)==0 ? viTilLL.x : viTilUR.x;
float y = (i&2)==0 ? viTilLL.y : viTilUR.y;
float z = (i&4)==0 ? depthAtNearZ : depthAtFarZ;
float3 vP = GetViewPosFromLinDepth( float2(x, y), z);
bAllInvisib = bAllInvisib && dot(plane, float4(vP,1.0))>0;
}
if(bAllInvisib) bIsHit = false;
}
#endif
}
return bIsHit;
}
bool CheckIntersectionBasic(int l, int k)
{
unsigned int val = (clusterIdxs[l>>1]>>(16*(l&1)))&0xffff;
return ((val>>0)&0xff)<=((uint) k) && ((uint) k)<=((val>>8)&0xff);
}
[numthreads(NR_THREADS, 1, 1)]
void LIGHTLISTGEN(uint threadID : SV_GroupIndex, uint3 u3GroupID : SV_GroupID)
{
uint2 tileIDX = u3GroupID.xy;
uint t=threadID;
uint iWidth;
uint iHeight;
#ifdef MSAA_ENABLED
uint iNumSamplesMSAA;
g_depth_tex.GetDimensions(iWidth, iHeight, iNumSamplesMSAA);
#else
g_depth_tex.GetDimensions(iWidth, iHeight);
#endif
const uint log2TileSize = firstbithigh(TILE_SIZE_CLUSTERED);
uint nrTilesX = (iWidth+(TILE_SIZE_CLUSTERED-1))>>log2TileSize;
uint nrTilesY = (iHeight+(TILE_SIZE_CLUSTERED-1))>>log2TileSize;
uint2 viTilLL = TILE_SIZE_CLUSTERED*tileIDX;
uint2 viTilUR = min( viTilLL+uint2(TILE_SIZE_CLUSTERED,TILE_SIZE_CLUSTERED), uint2(iWidth, iHeight) ); // not width and height minus 1 since viTilUR represents the end of the tile corner.
if(t==0)
{
lightOffs = 0;
#ifdef ENABLE_DEPTH_TEXTURE_BACKPLANE
ldsZMax = 0;
#endif
}
#if !defined(SHADER_API_XBOXONE) && !defined(SHADER_API_PSSL)
GroupMemoryBarrierWithGroupSync();
#endif
float dpt_ma=1.0;
#ifdef ENABLE_DEPTH_TEXTURE_BACKPLANE
// establish min and max depth first
dpt_ma=0.0;
for(int idx=t; idx<(TILE_SIZE_CLUSTERED*TILE_SIZE_CLUSTERED); idx+=NR_THREADS)
{
uint2 uPixCrd = min( uint2(viTilLL.x+(idx&(TILE_SIZE_CLUSTERED-1)), viTilLL.y+(idx>>log2TileSize)), uint2(iWidth-1, iHeight-1) );
#ifdef MSAA_ENABLED
for(int i=0; i<iNumSamplesMSAA; i++)
{
const float fDpth = FetchDepthMSAA(g_depth_tex, uPixCrd, i);
#else
const float fDpth = FetchDepth(g_depth_tex, uPixCrd);
#endif
if(fDpth<VIEWPORT_SCALE_Z) // if not skydome
{
dpt_ma = max(fDpth, dpt_ma);
}
#ifdef MSAA_ENABLED
}
#endif
}
InterlockedMax(ldsZMax, asuint(dpt_ma) );
#if !defined(SHADER_API_XBOXONE) && !defined(SHADER_API_PSSL)
GroupMemoryBarrierWithGroupSync();
#endif
dpt_ma = asfloat(ldsZMax);
#endif
float3 vTileLL = float3(viTilLL.x/(float) iWidth, viTilLL.y/(float) iHeight, 0.0);
float3 vTileUR = float3(viTilUR.x/(float) iWidth, viTilUR.y/(float) iHeight, 1.0);
// build coarse list using AABB
#ifdef USE_TWO_PASS_TILED_LIGHTING
const uint log2BigTileToClustTileRatio = firstbithigh(64) - log2TileSize;
int NrBigTilesX = (nrTilesX+((1<<log2BigTileToClustTileRatio)-1))>>log2BigTileToClustTileRatio;
const int bigTileIdx = (tileIDX.y>>log2BigTileToClustTileRatio)*NrBigTilesX + (tileIDX.x>>log2BigTileToClustTileRatio); // map the idx to 64x64 tiles
int nrBigTileLights = g_vBigTileLightList[MAX_NR_BIGTILE_LIGHTS_PLUSONE*bigTileIdx+0];
for(int l0=(int) t; l0<(int) nrBigTileLights; l0 += NR_THREADS)
{
int l = g_vBigTileLightList[MAX_NR_BIGTILE_LIGHTS_PLUSONE*bigTileIdx+l0+1];
#else
for(int l=(int) t; l<(int) g_iNrVisibLights; l += NR_THREADS)
{
#endif
const float3 vMi = g_vBoundsBuffer[l];
const float3 vMa = g_vBoundsBuffer[l+g_iNrVisibLights];
if( all(vMa.xy>vTileLL.xy) && all(vMi.xy<vTileUR.xy))
{
unsigned int uInc = 1;
unsigned int uIndex;
InterlockedAdd(lightOffs, uInc, uIndex);
if(uIndex<MAX_NR_COARSE_ENTRIES) coarseList[uIndex] = l; // add to light list
}
}
#if !defined(SHADER_API_XBOXONE) && !defined(SHADER_API_PSSL)
GroupMemoryBarrierWithGroupSync();
#endif
int iNrCoarseLights = min(lightOffs,MAX_NR_COARSE_ENTRIES);
#ifdef PERFORM_SPHERICAL_INTERSECTION_TESTS
iNrCoarseLights = SphericalIntersectionTests( t, iNrCoarseLights, float2(min(viTilLL.xy+uint2(TILE_SIZE_CLUSTERED/2,TILE_SIZE_CLUSTERED/2), uint2(iWidth-1, iHeight-1))) );
#endif
#ifdef ENABLE_DEPTH_TEXTURE_BACKPLANE
#if USE_LEFTHAND_CAMERASPACE
float fTileFarPlane = GetLinearDepth(dpt_ma);
#else
float fTileFarPlane = -GetLinearDepth(dpt_ma);
#endif
float suggestedBase = SuggestLogBase50(fTileFarPlane);
#else
float fTileFarPlane = g_fFarPlane;
float suggestedBase = g_fClustBase;
#endif
#ifdef EXACT_EDGE_TESTS
iNrCoarseLights = CullByExactEdgeTests(t, iNrCoarseLights, viTilLL.xy, viTilUR.xy, fTileFarPlane);
#endif
// sort lights (gives a more efficient execution in both deferred and tiled forward lighting).
#if !defined(SHADER_API_XBOXONE) && !defined(SHADER_API_PSSL)
SORTLIST(coarseList, iNrCoarseLights, MAX_NR_COARSE_ENTRIES, t, NR_THREADS);
#endif
//////////// cell specific code
{
for(int l=(int) t; l<((iNrCoarseLights+1)>>1); l += NR_THREADS)
{
const int l0 = coarseList[2*l+0], l1 = coarseList[min(2*l+1,iNrCoarseLights)];
const unsigned int clustIdxMi0 = (const unsigned int) min(255,SnapToClusterIdx(GetLinearDepth(g_vBoundsBuffer[l0].z), suggestedBase));
const unsigned int clustIdxMa0 = (const unsigned int) min(255,SnapToClusterIdx(GetLinearDepth(g_vBoundsBuffer[l0+g_iNrVisibLights].z), suggestedBase));
const unsigned int clustIdxMi1 = (const unsigned int) min(255,SnapToClusterIdx(GetLinearDepth(g_vBoundsBuffer[l1].z), suggestedBase));
const unsigned int clustIdxMa1 = (const unsigned int) min(255,SnapToClusterIdx(GetLinearDepth(g_vBoundsBuffer[l1+g_iNrVisibLights].z), suggestedBase));
clusterIdxs[l] = (clustIdxMa1<<24) | (clustIdxMi1<<16) | (clustIdxMa0<<8) | (clustIdxMi0<<0);
}
}
#if !defined(SHADER_API_XBOXONE) && !defined(SHADER_API_PSSL)
GroupMemoryBarrierWithGroupSync();
#endif
int nrClusters = (1<<g_iLog2NumClusters);
//////////////////////////////////////////////////////////
uint start = 0;
int i=(int) t;
int iSpaceAvail = 0;
int iSum = 0;
if(i<nrClusters)
{
for(int l=0; l<iNrCoarseLights; l++)
{
iSum += (CheckIntersectionBasic(l, i) ? 1 : 0);
}
iSpaceAvail = min(iSum,MAX_NR_COARSE_ENTRIES); // combined storage for both direct lights and reflection
InterlockedAdd(g_LayeredSingleIdxBuffer[0], (uint) iSpaceAvail, start); // alloc list memory
}
int modelListCount[NR_LIGHT_MODELS]={0,0}; // direct light count and reflection lights
uint offs = start;
for(int ll=0; ll<iNrCoarseLights; ll+=4)
{
int p = i>>2;
int m = i&3;
if(i<24) lightPlanes[6*m+p] = FetchPlane(min(iNrCoarseLights-1,ll+m), p);
#if !defined(SHADER_API_XBOXONE) && !defined(SHADER_API_PSSL)
GroupMemoryBarrierWithGroupSync();
#endif
for(int l=ll; l<min(iNrCoarseLights,(ll+4)); l++)
{
if(offs<(start+iSpaceAvail) && i<nrClusters && CheckIntersection(l, i, viTilLL.xy, viTilUR.xy, suggestedBase) )
{
uint lightModel = g_vLightData[ coarseList[l] ].lightModel;
++modelListCount[ lightModel==REFLECTION_LIGHT ? 1 : 0];
g_vLayeredLightList[offs++] = coarseList[l]; // reflection lights will be last since we sorted
}
}
#if !defined(SHADER_API_XBOXONE) && !defined(SHADER_API_PSSL)
GroupMemoryBarrierWithGroupSync();
#endif
}
uint localOffs=0;
offs = i*nrTilesX*nrTilesY + tileIDX.y*nrTilesX + tileIDX.x;
for(int m=0; m<NR_LIGHT_MODELS; m++)
{
int numLights = min(modelListCount[m],31); // only allow 5 bits
if(i<nrClusters)
{
g_LayeredOffset[offs] = (start+localOffs) | (((uint) numLights)<<27);
offs += (nrClusters*nrTilesX*nrTilesY);
localOffs += modelListCount[m]; // use unclamped count for localOffs
}
}
#ifdef ENABLE_DEPTH_TEXTURE_BACKPLANE
if(threadID==0) g_logBaseBuffer[tileIDX.y*nrTilesX + tileIDX.x] = suggestedBase;
#endif
}
float4 FetchPlane(int l, int p)
{
SFiniteLightBound lgtDat = g_data[coarseList[l]];
const float3 boxX = lgtDat.boxAxisX.xyz;
const float3 boxY = lgtDat.boxAxisY.xyz;
const float3 boxZ = -lgtDat.boxAxisZ.xyz; // flip axis (so it points away from the light direction for a spot-light)
const float3 center = lgtDat.center.xyz;
const float radius = lgtDat.radius;
const float2 scaleXY = lgtDat.scaleXY;
return GetPlaneEq(boxX, boxY, boxZ, center, scaleXY, p);
}
#ifdef PERFORM_SPHERICAL_INTERSECTION_TESTS
int SphericalIntersectionTests(uint threadID, int iNrCoarseLights, float2 screenCoordinate)
{
#if USE_LEFTHAND_CAMERASPACE
float3 V = GetViewPosFromLinDepth( screenCoordinate, 1.0);
#else
float3 V = GetViewPosFromLinDepth( screenCoordinate, -1.0);
#endif
float onePixDiagDist = GetOnePixDiagWorldDistAtDepthOne();
float halfTileSizeAtZDistOne = (TILE_SIZE_CLUSTERED/2)*onePixDiagDist; // scale by half a tile
for(int l=threadID; l<iNrCoarseLights; l+=NR_THREADS)
{
SFiniteLightBound lgtDat = g_data[coarseList[l]];
if( !DoesSphereOverlapTile(V, halfTileSizeAtZDistOne, lgtDat.center.xyz, lgtDat.radius) )
coarseList[l]=0xffffffff;
}
#if !defined(SHADER_API_XBOXONE) && !defined(SHADER_API_PSSL)
GroupMemoryBarrierWithGroupSync();
#endif
// to greedy to double buffer coarseList lds on this so serializing removal of gaps.
if(threadID==0)
{
int offs = 0;
for(int l=0; l<iNrCoarseLights; l++)
{ if(coarseList[l]!=0xffffffff) coarseList[offs++] = coarseList[l]; }
lightOffsSph = offs;
}
#if !defined(SHADER_API_XBOXONE) && !defined(SHADER_API_PSSL)
GroupMemoryBarrierWithGroupSync();
#endif
return lightOffsSph;
}
#endif
#ifdef EXACT_EDGE_TESTS
float3 GetTileVertex(uint2 viTilLL, uint2 viTilUR, int i, float fTileFarPlane)
{
float x = (i&1)==0 ? viTilLL.x : viTilUR.x;
float y = (i&2)==0 ? viTilLL.y : viTilUR.y;
float z = (i&4)==0 ? g_fNearPlane : fTileFarPlane;
#if !USE_LEFTHAND_CAMERASPACE
z = -z;
#endif
return GetViewPosFromLinDepth( float2(x, y), z);
}
void GetFrustEdge(out float3 vP0, out float3 vE0, const int e0, uint2 viTilLL, uint2 viTilUR, float fTileFarPlane)
{
int iSection = e0>>2; // section 0 is side edges, section 1 is near edges and section 2 is far edges
int iSwizzle = e0&0x3;
int i=iSwizzle + (2*(iSection&0x2)); // offset by 4 at section 2
vP0 = GetTileVertex(uint2(viTilLL.x, viTilUR.y), uint2(viTilUR.x, viTilLL.y), i, fTileFarPlane);
vE0 = iSection==0 ? vP0 : (((iSwizzle&0x2)==0 ? 1.0f : (-1.0f))*((iSwizzle&0x1)==(iSwizzle>>1) ? float3(1,0,0) : float3(0,1,0)));
}
int CullByExactEdgeTests(uint threadID, int iNrCoarseLights, uint2 viTilLL, uint2 viTilUR, float fTileFarPlane)
{
if(threadID==0) lightOffs2 = 0;
const bool bOnlyNeedFrustumSideEdges = true;
const int nrFrustEdges = bOnlyNeedFrustumSideEdges ? 4 : 8; // max 8 since we never need to test 4 far edges of frustum since they are identical vectors to near edges and plane is placed at vP0 on light hull.
const int totNrEdgePairs = 12*nrFrustEdges;
for(int l=0; l<iNrCoarseLights; l++)
{
if(threadID==0) ldsIsLightInvisible=0;
#if !defined(SHADER_API_XBOXONE) && !defined(SHADER_API_PSSL)
GroupMemoryBarrierWithGroupSync();
#endif
const int idxCoarse = coarseList[l];
[branch]if(g_vLightData[idxCoarse].lightType!=SPHERE_LIGHT) // don't bother doing edge tests for sphere lights since these have camera aligned bboxes.
{
SFiniteLightBound lgtDat = g_data[idxCoarse];
const float3 boxX = lgtDat.boxAxisX.xyz;
const float3 boxY = lgtDat.boxAxisY.xyz;
const float3 boxZ = -lgtDat.boxAxisZ.xyz; // flip axis (so it points away from the light direction for a spot-light)
const float3 center = lgtDat.center.xyz;
const float2 scaleXY = lgtDat.scaleXY;
for(int i=threadID; i<totNrEdgePairs; i+=NR_THREADS)
{
int e0 = (int) (((uint)i)/((uint) nrFrustEdges)); // should become a shift right
int e1 = i - e0*nrFrustEdges;
int idx_cur=0, idx_twin=0;
float3 vP0, vE0;
GetHullEdge(idx_cur, idx_twin, vP0, vE0, e0, boxX, boxY, boxZ, center, scaleXY);
float3 vP1, vE1;
GetFrustEdge(vP1, vE1, e1, viTilLL, viTilUR, fTileFarPlane);
// potential separation plane
float3 vN = cross(vE0, vE1);
int positive=0, negative=0;
for(int k=1; k<8; k++) // only need to test 7 verts (technically just 6).
{
int j = (idx_cur+k)&0x7;
float3 vPh = GetHullVertex(boxX, boxY, boxZ, center, scaleXY, j);
float fSignDist = idx_twin==j ? 0.0 : dot(vN, vPh-vP0);
if(fSignDist>0) ++positive; else if(fSignDist<0) ++negative;
}
int resh = (positive>0 && negative>0) ? 0 : (positive>0 ? 1 : (negative>0 ? (-1) : 0));
positive=0; negative=0;
for(int j=0; j<8; j++)
{
float3 vPf = GetTileVertex(viTilLL, viTilUR, j, fTileFarPlane);
float fSignDist = dot(vN, vPf-vP0);
if(fSignDist>0) ++positive; else if(fSignDist<0) ++negative;
}
int resf = (positive>0 && negative>0) ? 0 : (positive>0 ? 1 : (negative>0 ? (-1) : 0));
bool bFoundSepPlane = (resh*resf)<0;
if(bFoundSepPlane) InterlockedOr(ldsIsLightInvisible, 1);
}
}
#if !defined(SHADER_API_XBOXONE) && !defined(SHADER_API_PSSL)
GroupMemoryBarrierWithGroupSync();
#endif
if(threadID==0 && ldsIsLightInvisible==0)
{
coarseList[lightOffs2++] = coarseList[l];
}
}
#if !defined(SHADER_API_XBOXONE) && !defined(SHADER_API_PSSL)
GroupMemoryBarrierWithGroupSync();
#endif
return lightOffs2;
}
#endif
[numthreads(1, 1, 1)]
void ClearAtomic(uint threadID : SV_GroupIndex, uint3 u3GroupID : SV_GroupID)
{
g_LayeredSingleIdxBuffer[0]=0;
}

1001
Assets/ScriptableRenderPipeline/fptl/FptlLighting.cs
文件差异内容过多而无法显示
查看文件

9
Assets/TestScenes/FPTL/FPTL.meta


fileFormatVersion: 2
guid: 9d1c12c0e8e265a47b31bdd5728a079b
folderAsset: yes
timeCreated: 1473161971
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

8
Assets/TestScenes/FPTL/FPTL.unity.meta


fileFormatVersion: 2
guid: ac502c5271c0a254b8a18fbe4b8a3bf1
timeCreated: 1473161518
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

9
Assets/TestScenes/FPTL/Materials.meta


fileFormatVersion: 2
guid: 5696f1f3528fdab49bccea664827108c
folderAsset: yes
timeCreated: 1473161495
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

1001
Assets/TestScenes/FPTL/FPTL.unity
文件差异内容过多而无法显示
查看文件

7
Assets/TestScenes/FPTL/FPTL/LightingData.asset
文件差异内容过多而无法显示
查看文件

8
Assets/TestScenes/FPTL/FPTL/LightingData.asset.meta


fileFormatVersion: 2
guid: 69881ce3df6a158419708b1cb7429d87
timeCreated: 1473174122
licenseType: Pro
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

891
Assets/TestScenes/FPTL/FPTL/ReflectionProbe-0.exr


v/1channelschlist7BGRcompressioncompressiondataWindowbox2i�displayWindowbox2i�lineOrderlineOrderpixelAspectRatiofloat�?screenWindowCenterv2fscreenWindowWidthfloat�?Y��\���a��@��]����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������۽�������ۿ��L�2�Da����1�q�q�q� � $�I(�I(��,��,� 0� 0��0� 0��0�M8�M8Ӎ4�L4� 0�M0��<�N<��4�M8��<��8�M4��<�@�;@��@��8�<�<���A�����@;A;<C����M�������A��QÐ�5�PC��?KC��?C�t?C�d?C�?)C�=C��;C�t>C�d<C�D<C��?C�?5C�? C��?9C�?C�4?C�����!ؐ�Đ���ܐ���!�P� �P�Ɛ�)�P�����ڐ�M��0C�?��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<C�?#<?C�$?@;C�D?C�>C���C�C�?A=?��C�A����<���A@�O<�<�<A@�C��@<�=<�A��<�@���<��<��@���<�<��4��<��8�8��8�M<Ӎ4� 8Î4�N4�M0� 0�L4� 0� 0� 0� 0� ,��,��,��,��,��,��(��$�I$�I$�I$�I � �q�q�q�a�a�q�q[T�*�%K*IU�&���VeBvS@����`J�S�^J&J�S��Q��݌"F�Q��B����n�x xH���D�}�<�(@,� ���EA=�&���Ç�qе�/��P�������Xh�5.6d
�@�l�T��¢kT&�3D�$ ��H�"���US����RI�(R����W�<^<�������'���aA4 �&�0hS�u0+D}�+�]$���W�� ��|P��i*URJ���ʒ�U$��t�&�2D�%UJ�S�^J'J�S�]J )]��n�F�dQ���^<y�\x��W��Q��� G.Žd(�d�$"�RBaI�Î�t㡛�]��#x���!�����{���hsA �� ����9� C���O��� ��ঊk��j�����\)�K�^�w �@I�뺽�wW��������-0`��`)0��]&`�5(\��2�e �"��
X`%���60�A���;0`YRjP�B�(}Be
&P����%P����&P}D*$���>�'��蛌/���cr0�� �X �#Q�82 2
d@dL�L@�t�.�\l�� �yp�p7`>�����v`)`������%A�S%A ��� *����QSA�V
�ʘ*�Q��E(&KUJ�!�*�R�JU*�R�L<3��D|V+��c���xf+������x�������������������乣X�=��S��?O��)^��������,�fO��oWwwwwwwwwwww������)E��h� CP�t5��A��_�,���X���j AP�t:����l����e�l��.������z���ƾƾ�_^W��|�0��1�����1,llllJ����|�_]H�k5���s9�c1��l��l�����f͛6����ٳ�������Ͷlٳf��f��{6{{�C��t�A(jAO��~�_�߰o����"U��t:�P�5$N�n�%�v��.K��wswr]���K%��I�ٯ����a��ޖJ�������g��z���������ܷ-˕�������\�w�Aa�f�����a���qqqئ)��W�f  �0�3�^�VԊ�Q�TJ��ԩi:�ͥҴ��i6���+1񲖥I8���Rooz]#{x�����pp��E���K6$iVĎn �;^C
S�S�H[,�l�B�tE�qq���S)�",���y#��g �G Rf�d��%�8K$9&
�P���xR�xR�����J�2�d)�d)��SxN�'D�K����C�—��K��³Fn�²�ժ��sR�@q:��䲔<�JKR�R�C�la��P�](v>0�v �)�
��/W��oޯ�������9n�T�!�3�7D���/*���}[{�����o�����;����������߷�������CO�����)_\P��'b�(b��� �(2q�ɠ'�@NJ )%�]a9�0(1���
� ʽH�U�j�� ��S* ���j ���+k 7ů'd�0D�.6c�����BE�K� �Dfi��4��|� z\��\���ll��#1�6b�>�bȖʣ+�HVJ�VVd��d��h�U��VJ$}[Qj%�Q�ԣS2�u0���L<��oo�|V+������`��;����\���ۭ�76�6���䷞$w=N�����g�i^�ް������Xw T�@�����wwr]��K�������!d
�Z�C��)}C������/�I�� A��h4�A($����e��z[-%jԵ-,lllllllllk������]R�zaA��g1Lf%�ccb��,K��_/����5Mf�Y��g1Lw��{=�of͛6lٳf͛?��{�����������ٳf���������=� ��t A��g���
w����������҈4 �PT
����v�.n�7%�����sv�.n�jG���)8&��풇����w=N�$������+rܷ-�V��r��.nnnn������3 ����0��qqqqqo*�wz`���f ���*I[I*-���UD��)R�Z�2��”y+�jWR��y-���ѹ���4������^<�\�׫Ǟ �>����,�t:��@hh��t��Zq�@�a�W���������V-K �EL.6�D\6���$�%�X�`L�,�RA�"��EIRJ�I^J O�};��� z��4J�g�@�N��4 �Zdp�]8�^<򗏼 /{}�����0JIY�����$�W3$�RT%Q
xR��W�ԯ%��K)]�F�v7chی�m�P� O�t^<��x�}����"���p#� �f�I<p늺m�?t몼y৴��h���5���1XA �������p� B^���~�}0+"S@���m�����9�M߷g��4`{����സq}����y��y�4�`��(Ȁ���d��˓�&%(�E�0T �2\`�p�+��(�u�a*`��I� �&Q�J�/P�F�*��Je��B�R� E/����<�[ Q(����7��a�F
�U���T�q�� �d@f����e�p���|�l�Z�m}�����|� ��V��X���Qb�J�X�QqSKJ�
��0VJ�*,*\�rE*J��)R�T��r�*eJ����`��p�7�e�z]�fqqqqqp��<<6 ��x�������������ܷ�����Q�;Ngd�;���tQ�/ooop�l<6�^�������77k���sv��������.~�����Ph4u;���������e�g����?�������J �[-��Iz[-�J�]l�Z��ı��cc1X�������׫�
ɜ�g1Lf3ė��|�_/���3Mf�9��b�������f͛6lٳ�f͛6lٳf��m���g���߶lٳ��{f�����Ph4 �����zOI��wj��z��_�����*�Ph$�������'76���ssr�������,v����H��0�8f ���콲T�w;��Ӕ�sE{{R�n�����-�V���������ppppX,<<<<S 'wk���� ��a�,:;�w�����=6N����*'i.���+)x�GƎ>4Q��BQ�7��n׈��#z�D�� ��/��` ��)l�!�;A���������9��%ҞK)Q���mde�ȋ*T�ZTp� $��w����ɑ�������� ԙJ��CW��ϩxR�xM�J��])��c���Jas�];�${xJ�����3��w��;��²�͕F��Ҫ�g�<�
5� Ӈ��C�jP�YJ��=z>0�V �\A�xC�&|@��T��R��R��=�;�7�n�xCp�"S��];�;�mu�8)sAJ�
<���=�\:�0ހ^���"`,���
]�N�)�
��@\Y��Q�@�� ���$PT�[�U�[h�� � �(���Q���'_\N��j�`J�������d\e��ɟ'�>S(|�T�UJ���\J�&��R�TZU�H�j�UJ5J*�5�5�U��Ep”�T鐥Q8���Ď.3�2��R�
�***�q��fg2 �Ȝe���\��\����� � �&)�`��s˥.�i*�iY\�B�U���Ed�E %$�^��P�T��J9��`�& �`��o�e���z�.�)���������`���$��sr���-�V�����{{[r�t��7'3��읔1�]��������`�l<2�wwwuTEgs��ܮnm˛�����2����?Oh%�W�����{z_�=��g���{?�����?()�-��I|�/��֥d��[-��R�1��f3b��)�įW������(5L�s4�c1������������|�]I�f��fsgŀd���� �< x&:L j����@�@�@��W�\
��o"�1�K�2�%�� �@�A.A60(�����R�O��<
{� �A3� ��e�A1PL�7�
X�)`R�c�R�� R�� ~�����{?��S��;��'{z�/oo����W�J�����{=���ܷ��\��{��or�O;������w{��`�X,3���z����P�s9���y��v����jZ�ږ�[R��ooosr[�'�~���a�f)��]��ݮ��W�  ��%I�U.�����O�2�T�e �<�*���$�F�Xһ�܌�r1tH�
�@�������CGN�M㮈�:�|J��0�&�<� G�
,�4���>�P0F�S�^Ju+�O�}(/�0�1X`�r�����F
�ʘ*(�@�c+�J�%B�K����� ,H!"��P�%y*4���}�p9�+�O%y(�_Lu4 ��g a8�� ��q�x5|��$_@����} ��@j�T¤ժ�V� G�g��Be �J���i+�aJ�S�]Ju+����ebn!����RB.�$-���C�^}�ω�A�!|N��0!�XRB.�$ �I�î���C7N:An ��,�N���W� X#��|/���=D@��i+���D��cպ�ƭ��< !;"� ���}�[�p ���{� �k��Ë�\:�.\s���0 2�D@�d).�&@Qr�QEʀ�T�P�Sࡂ�SL�T�P�S%E��PQBU\P�K�(aL*O�j,@�HS@�WҡL�`_L�T9�NF��`�|�C�L,D�����t�R2 �Ad ��f@�\<\�p��t�|�L&��Ra9����
L{������K�� �4�/�4�����0��E�q"��(�*J���]��ԩ�%L��3 ���z�.���������(����0L<6 ��'76��+�����n���[�K[Z5���y��r����컻���.�l6 ���{wv^�����*w9Q��ܷ-�V���4e���{=Og��I^����������,w;���s���{=����?��� /��e��_YR��VV��ml�[-���c1��f3�ccbX��������Pj���i�g1�ؓ}}|�_/���|�]I�k5���&�o{7�{����l��������?�og����m�����lٳf͞��zA������;Og���r���$�j�����������d���w;Og�M��KR����ތ����3�������������0�W���������cro7��䎛�D���������������䷹/'������`����wwwwr��]ܗe�~����âW������NO&��j5�UJti�ƒ>4Q��G�z����D�� ��wH�{x}����� *�d��!�;!�2Б�b"�,g#ҜK�:�R�K�D��"�dE�S�iC�d�¹S�$�B�D�I.�� <� ,� ,��I��D�Q"](��%J��])��S�tǓi��xF�GG+������xF��$|K�%�M�2��4�Ti[&3�j|aN�eL�Q*���)K1�Q��1���+z.0�\A�xC��B�S>!wt@��T��R������_�������aB�������v�E������y�������ߞ�W���������������������\J���z��}q��#��2#4��<S(t�*x�T�L�„�
ʮX4)J���Ek<��P@�P@�P:�h�X�%Mc��1ĺSie1�ҙ
U1"��|gJe��)�6V�#*H����ၬ`/�C��"��������������$��
����B��%��-+!*�22J�#%�#%$���9f��Pj%��y������]�wwwwk������uL6�x��������jZږ�������k:Hܑ�y�n��ɜ�%�������z^�88887k�������wwwp�⇓����-��苞�I��v�Pڇk����������x��9�����9N�s�����I�=���l�^K���l����[-%��l�[.��c1&i�f��+���c____0��g3���34�cc^Wث����y/���5Mf�Y��m�����{�6��6��͟����ٳ��g�{?�?�ٳf͛6������{=Nӹ�w;��I�윓���y3�ۻ�ۻ��wwv]�&}S�vN��-KRԵ�[�ӤϦmK��任.˕���郃���z����]��ݗ+�"�t���yG&�5Y���vvv������{[r���x888888+����������]���L�Um���L��ʉVTH_)�U Tj#N�Di�I��LnF#�,>}����|��5ӎ���Bc�]��x#<���!p � $d ̐��h� ѹѹf���+�C4���Ϧ�ij����F
*�@̣iSC�
*Qr� �(`�NX�%$ʒ$����(/%�4I��
_MW҈Ҿ�R��2J�Rɐ�
��84�����7N< �z^@�(>��} �(��:UbII&_��_���*R��PF�2���4�J�`yq�����&��5:�$6��)!����^U�����M���������
H@���HA��U�n���gW������27����ވ�:�~��m�2�u�m��o��I ��V�{���u{����ˍ�� ���k�\8���X0 ��
�#"-
�Å"(�P�f
*�@��(�P�MbF ,P �.U�� ���"L"}2��& B�Bg҆)_M�}0h�ɓ@�W�q�fQr��C"��X*�2�r�VB��"�2�a����E2���(�Tg0� f�`*0�0���&�<\maJƖUe��&L�Ă�Kɔ�����IQ$�ZJ��eL��88,�ۛ������������侢 ��76��������j���,���TE��*EH�<�M�mK�����仹���������]�ܗk��������wrQGR��ք���wD����w���������9��3��7'3�r�����w;��g��[0�i@ܙ�sY�k5��f�g0L�[-��l)1&s4�cb�LK���ƾı�L'5��I�b�X�llk��į������_]I�k5������{����g����������������{{=��6lٳg��>~��g����vN���9��I��7&��of'wwwwk����.�wwwt��9P��j���&�g777%�乹�����.�`���ܗw%�����칹�,E�R,�"ȴQ�������,�֥�kn�-���S�����I����r���.nnnn�w%�0po�hm�))8���T����y#S*�j��r$�s��&E�J�D�x��������v]wtu�����V��
)*@��Y YJ��1FGu)��ͥ����c�t�V� -J�(�C�2��e �ʛ+�6S(l�P��"�� $���a0�:U*'8�Pq.��])ĺS�e)IJ�T��a���f��;.�n��'��������$ ̚�`ء*!�����IL��&�8�T�J4�� �#�
�����������=v���nׂ���������`�a ��7 �7 � �C�[��͢�V�����A���� ���m���a߿{���A'�ߞ߷�}���� �� ��B�p�z�f��f��d�2�̆&s!��Ф�Fʛ+J�����eH��Cd�F�RC�����#R�Iri��Jb4�b4�ci�Si�b4Ҙ�m1�ҙ
e1����L�™Ce)Se)R2�R2�R�����
8�P�ăO /L����3�3�S�6�6�e�-K(P� ,� 9$DK$FJ�Gj�j�#Vi�eTL��`���W+��������sssr[����A��M�ooj�Z���ڬ�Vvt���l�E�dYE���sssv��\�ww���s~`�n���k��任��.�nn�777%�Z�F��.��K���������]��Ε7M��y��o7��t�r��gs�w;����7#r7�T�fMf�Y��k5#R3F��X$[/%��fLɊc1��Ę�K����Y��c1����ו����z_^���u����������������l���͟�����g�g�g�g�{6lٳg��>{=����;Ng3��o7��y#�t�7���Ԯ��W77k������.�k����h��'77777777777777%��w���wsuK���乹��[������iC��T�2J�IY��J���Գ-mmK[{R�w���j[����W+�{r����乻�0W�
ڦT)S*ƥD��
cR�Kr�L �N$�4�'�8b�$��>��C����>�y��M�6�%:mО������*1j@SH8ȕ�΀z���cn0�7c6�ԡ�n�<�䡢W��J�` ���(�@=(�@�E�EX**�P<*`�x��#�.P:Qr�e(�Rx(L� T'J���xJ�R���]J>���� ����\#�n.p�Î��<�(>}�C�'p"� G��� �X�[����򜩁+�@���W��@�������z&��5MD+(�#� B�d�y���:�+�u�#Ǟ����ϡ�`E�p�HEФ�bfc�V�Z�~��]�p<�dp(�K���v��@���m��V��L���9�%�W�����}"���%�?����2����O���q�����pW � ��p��p�u��0fB� �DAᠬ���xh*,
*
*e* �0T�5��&X�3$T�rE
4�aL�g@�hS�M
dI�L(KdI�LD��B�L��cv0e((�@;*�P�F
��SB��J� S+e�K= �q�d4��X6A�li�Y� �����  �|0`��}�����rƉ�I�&�2��I,Ld�Č&�uRj�T��&�eI����9���wr��\�nnK�u���䷷��-V��j����Z�mmK;[;5&��I�&C�IC��:����nV��͹swr�.nno������r\���ܗ777+�������N����We�����칹\�є#��<�#�ɹ#�y�o7����s9��g)��w�y�L��Y�bF3XČcʑ�ƨ�5��¥��
LS��c1��f$Ę�66%zĘNg3��f3�ccccc^������|�]A�k��of͟�{f����������l������������og��f͛?��Ϟ��i��s9��Ӓo7���G��yE��G(�7-�W6�͹ssssv�\�%�uKu�����ܹ\��ܗ777%���v�/�nnnn�7w+��u�n�[��ۓe�$���9}:II��i4��ggj�,�U�jZۖ������{{r��乹�������/�TU&�̛Sɹ�F�RE*�!S�"Q�!O�OS�'�����-�C�ϩ|y������w]���&؍��I# Q�@�$�+�؈b��1�G�G��,�#K�6�R�MS YR��҆�IB2�R2�R2��\�L�JP��(DS*<IiR�I�RmF��F��YJF�J=(���`�6��%������������x1~_ �� ��888&�lP�!�� \���3� �BĺP�.��(�8�T�����1QqP��������`
aL����������������8�p�����7�_��������F����������o�nR�o�{���h$������������"Ըf_.�ˆe�������{���2���Y���0�P�j^2㥓,DW*DVJ������9I�9R�!M)��i��i��鈓i��i��i��i��i���d �FFS(FS(FW*l�P��*DWX�j�l��e��� ��6�� %Nh^fL ��G��%��*���.-^2�����<��9$@O$B��DKT�]R5uH��6��
�_ݮWwe��ͺ�oooj�����Z�٨�!��j(��kgggfY�g��!�)A�IA���ookon\��r������칹��]�w7k����r�������n\�V�J��J)D��.n˛��uͺ���DYEHd�#�YEH���<�������7�����w;�橩5���TbMQ�c�(̍�܍Q�o���d�z_/�&$�c1&s�c1,lJ�z��s9��1��lV+�cc_____^�������͛6��g����?�����ퟷ�����͟����������>r��g3�ܛ�y��nH�<�"��,�"Ȳ,�!�2EHr4�S�.m�˕��ܤ�j�C�������oon[����ۗ77777k��������ܷ.V���������!""d � ~G��9��I��K;;5�)��F�������oj[�彽��乹����/���UR�H^�<�)ԅ)��)Ԅ�)��"NĞ��8BN�f�G/>��/�|���/�x[h�C���拴>���Qƌ��~�8O��!>bS���K)^J�y,�}(QJ�RI�L�0P�E���)�\�Q(�JU��D�T�\�P(�L��)Bj�� �J�*%:���:��#P �$�b�\ !-
8)�7%�7����� ������R��-�P(�>†Н��J������p#vĚ���䲕��EJ�k�� �������'#Qq�@��P"���;����>t㪺u�v���� ����0#�’7�����U�"�,���W��\@F�������6�{m��ܙL8�m��{ͽ��ͽ������ ���������|�%Å�,����l�� ������u�F� �d@g4!4�AY�hB` e���\l�-� �p����ʓT���I*QRj� ��)���&�Ц ��OR��(��4��0\��x���M)�L
(���E�R� J�*�SBqSU,2X!�.0\h�%0�@�0 �#c �2 \��}���K����up�\6]����e��2��i2��R��J*�R���I�*�T1T������r�\�m�%��ookkookkkkkHQ�CPh* �������4� �2 � ��
?$)�PԵ�Z����{����nnm��뛛����u��͹n[���ܗ776����P�t:���� H�""D4�HiE���!Ȳ,��dYE����y�n��7��3y��0���1#k5F1�c�b��x���7�Ѽ7F�jL�_/��R��Ę�f3��_^���j��4�cb�������W��ץ��u6om�6l��l�{g�g��l��������?�?�?�{������{��͟��s7���y�n���<�#�<���9 ��9CH2 �$��I !�JP(F�
�A��h4�+{[R��Է�[��ܭ�W+�r���乹��[������6�{r�ܵ����X����=#��?��������?'����I�A�L�ԳZ�������n[�������컻#���S*H��"S�!S� S� S� Q)������ű��O���� �+����
�Z�Bk5����KGQ��j�f�xG���c�Ȓ�R��It�It�)U�_ 8� �X���")�")�!)J����H�IB�B�P\�y͑B�H�N�O5H�I�>V������Z��Pr]
�B���\��^����A�A0���tZ2�yd��uN ������3� >�u*R��YJ����2Q�qxn>1�����������p`� ��J����T��}��}�������p�� ��7 �����{���ן�����{��ܥ��{����^�o~o�o�>������ap`.0��`[.�˅���r�sp�b� L�B�Y��eS!4�h'˄��p�_. �\H�eD�ꉕ�D�����m�Im1m1yL@�LB�LB�ND�ND�ND�T��JB/*�� U%JR�%r�%r�%r�)A��,<Z�-�\�M2��K�B`�2q��2�hD2��#E���u,�����,:R�'$�������*�+�BJ�F��D��s*�
�5$������������������&���g�?������ ��AG����~��������kkn[U��ooor[ۨ� ��
�;*[���ܭ�V�����okkj[єA(j A��e�A�ȩC$2AHr
A��A��C��9E�drGH��H�<�#��x�a&$ʦ/�R1#1�c21�Q�g��mHnCr���to���4L�_/K�����b������W��Pg3��f3���c^W����������͛?���ٳ��������6������l�����?���ٳg�$Ę�#rGH�<�"�:E�dY��C��4�!�����AH2 ��dC'� �A����4�ֶ�u������Է���[ۖI!ϒA(tj������ֶ������jZ���΄��=�c�=�c�� �d�{=��g���AQ'gjY٭KU�kknZ�V�%��搒�)
���ʕ*T���:��S(R�2�F��x��&r m
8P"�c������� l�2� Gdu�̏4$h�@&[C�p �I�,��M�E�����R�
D�%"��KD�'�v0+.X,*efV2TBP�@%( (�D�*�`�
"e�,P���T�9�HJu0�N�8�515о)�p��[
H@>�F�b��R�m���K:u����} �����n���Dm
�<��& �(��E*���V����i:�0RWҝJ�e�r"(��'� �94���ѻؙ�rOU'��(p"�׏��q�'�u���,��!| E�p��$"�RB�0( ��pc���\h?������M�m���^�nH�����r]��%U�� !�W�
�\�����O��u{�����t��F
��p���p�p=\8�ˇ��@$̈ ������ � � ����R����\�4��`f�eQ�MU�&� ��+U��S�J��;&�2�&$��@�wӞL�c��~4�X���ō�����J�P�Q ST0TBT�`��Kb�E��a��aq���F@�d+22 �@�6 �4 ������ �k�X6�qp7.\qcD��2���L�3$���*H�"����%Iی��cL@��Pi��������-Ve����� �����=���9CH1���DZ��-K;R�gj�Z���ֶۭ��ܢ$~Ogd��rz��2�A�R���Է[�ֶ���[Z2�%�A��g� ~��9 ��� �� ��� �2 � �$�"�,�"�d�H�+X4�LG��$��)^W��*1�b��8ԍcX��t7��mQ�7!� �o ��rK�}}}}zcbLV66*���
�d�3����b��Wؕ���������l�l�l�������?���?��?�?�?g�=���~�lٳg��":P����E�IE�dYC�dA���?���?G���� �)AO����������F�����������n���U�P�=�T�������-K[[[[[[[5���%ggg@\wDZ�=#��3�vOg���{=���$��;;;;;;R���ܵQ�C(*COH��r�~��N.�c�eI��}EP<�N<�L,��h8�X��ď�n�d'���h�RJ�Jgd/u���&�v�v�<#�X����J?(�p��K (�Ѩ�U�u+�
Մ�eaj��*���JT|�T|�P��(-T���Ȟy)ԉ��CE� b� _� ��Bd3L��&9.�7c��Nst';/���l>��M2
h[���q.�e�j��RH*$��3UE�����2`r�Lc������\@j��X�VÏ�r>0�V �3~ ����8�p�L�������T�|>��}��v v r��� �~�@ל~��s���"�����7��>���T��h�������C�8���h7� ����G?�v���a��I��A@a0�0 �2L�\-_.׫���0 �BY�d%�̄�9���� k��ay`&�,��ax� U�D�ꆶh���l*G�i��T���0�m0�j�Z��Q:UR���D�+��*'*Ia*�XVY)a��)�+%G���Ke� e�KR�����˖ � #*F�`� �X�b2����`Fİ%^X W��Kư�I&:O$:K&>K$<IUE�<Q�O��:��g�: A��(kkkfY�vv�:"h%��S���{;N� � �2
?�Q�=N�Β���������Y�e�kn�$yI�rO)D�A($�zP� ������[[[U���T�APS�A����!�rCH2?������z�Q��$� �2C�IC�H�`�C<E���H�#�OI,��+����攍cX�5�cXoa�9Cx��xoa�9C��e�}}}|���lI����ƽbXPg3���)��ccccc^�W����C��b�ER��"PD�LpD��(D��D�&(D�&��3�+V� X"H�%P%`J��P'&p��\"�E�-�v{<�C��A9M<���#a�l#a�l#P��|�z����TEC<3�LD9A$� ������=����=�c�����A#��:��~Og��~����f�U�kj�-V��#����A��g�
�tR�>���z�R��fZ�ږt��IRVe&�I���,:��=#��?��qI�;�����{?��%I�,��vvve�����~��gi�Be��H� <�̃���R�'Q*����bP�_%����ɼF� ��]��@��\�J2$���8N��ApL)! � ��B4M�J6����hZ��n%19>���K`T\6�R�%Ad����i`~���X�� ���
(I�TjT�+ʙVT�*)N���S�TL�Z�����} �;>�H@tpۛ��˧R��@tx���"��ǒ�!d��β�H��q��¦�$.d�*T��EI��RP�(�)K$��=(܌�r>&�c�Np���m��h��Y�������B���_C@�_>�:q�Ox�}�_@�:�
��s8�!��(��_� �Ę���;w���j1j�m�{��jS�"�Ϳn��V�`��a���n;���y�[��߿� �*�h�r�, � ��
Ɛ�3@* �W������Fs2 3���q�����Z`:��\ ����Xl�(�]TʔT$��J��J��Bp���ʦy0=J�e�v0W�Զ7R��V�Z���k,Ur�����Ɩ���.0�G(0UASKb�%��E�)q���. ņK �,���#@�l cA`�C@�h��XN�y�R`<…Ë�����X`�D&�5I&
����+���5*
��9�v�P�?������z�P��I�,�EO����=�����6H� �����=��$���l�M&�fY��e�gfP;'U7�P�J
�PJ- H��w<��?O����~�����Z��J2�3��?�����{:H� �2 � �䂏��{�q���DZ�{��� ��2���h�r#��;')ܖJVJ������Ƽ�R7F�jCjC�r�����7�$9�0���U�X�ث��$�cbX�65����s9��g1�جf+�z^�����?�?���g�g�����������?g��������������N�)��r��$,����(�������h�;�������;���=G��?����q9�{;Og���?O蒳�Yڬ�%Og���?���<��;��e�S��J,�#�rN��YٖjM&�gI��i*M&̤���Q�;�c��=��;NI�w;������2M&�f��$w=�������x��􆄲bBi�4�K7|�%L�e4���q\K@��%~�$~�?^ �.�&3� �*@��� r�T�/�b��9�<"�������p��G��X�1DR�X�2�5����P�jV���$Z�%YJ•�ZJ�^CY�%�"Y�J�P&/N��&Cb ������[�� 0��7BC��Iv] /K�%����1�����@3;��Q1&�3��4�cY��L@L:KT:K$%$�䤐1$��7$�P6J�`�>0s9�� �������;v�J
_��������`����������}��������7���u�����| �����y��������m�m����=��m�������\�fWX1X��cK����4�h� �� S �`#�̄s9��^K����Jc\%�X e��0�\0/A��EuD�TH��U�H�1(�1�I��#�%��T��KHp��Ҫ��(')J����$��e���,����X^[,8^��ˋ�e� �.*.�p�aa��7���� ��4�L�KF%�*���xVUQ=)D��%���Kgdӈ�Js��r����zOg���;��j)4%����=OS��r�&?G��=G��{9;;:M&�I���JM&�f�$rM�<ܟR=�R�P�;��5'd�vO�?������vN��wB��T �=��g����B
AH)���~���=���vGq�r����;#ؘ�]B�.� �?��o7Ng3�ܖO'�P�ı�W�63�1F�����7��9���Ò����zC�4U}�}��bLI��1X���צ��ɜ�c1��lK�^��+��m����ퟳ�?�?�6����g��g�~�����������{���9Ng)��7��$����/�vq4#����9G1�r�b�������c��=#��=��;��糲{=��҉2M#�w;�����?����;���+�*�$�PS��z���ܠP���h�:�fRi4�M&ΓI�Xw�q����9�9�����zOg�)�h �I��w;'������)���#�(IrEI �*I�EII"��ԧu, YJ�P��%9��R��݌,nFG���܌[8�#p/p��0�m���n�pۢ7��
/ |L��B�����DIN��<MB?Q���&�D.6\ �R����p���� &*�TeRj��MRʓT@�EK�(�rE �IbjI�O&�@]@��� cr28܌�܌�W҄��%@��� ɠJ*L�`_#h(�B�;d.�p\6�f��@ �$¥*QV $$M[�L�WңJ�P��%9������� ����J�r2ۈ!�� ]#p�#p0t۠#6����������(� ���% 1
�j `���bn0�pt �_��{��3���O��{o{���N����m� �P\K���W�����Tk�^����� ;������F@�Ȁ�"@?4 Ms4 FЅp)�(�(�Qr�Ҍ\���X��V
ʚX,i`b�p���>�4��O
t��L�5*%�R�J� r�[��#N�D/�� �"�[8D)!�$ �X+Xa`K , � ��Xip5
�:�J��p��
k����upvd@d���xdBd
��&��� ���k��,�M,!X�P��J�J�*�* *d�ISF��Td���L�u T@�*�T�S
��^�������ޯmW��a������L6 �����/���n[ڭmmmmK5��f�-ml��;2�|��'+{r���n�\��߯׷���{{n��>>>>>+}V�u��ookkD\���q����^ݗ���v��^�ݯoh�7'$�nNg3�vNgs�_/����^����%�
�s9��g1&$Ę�9�1�����1�M&��j��fs9��g3L�3�cb���R5L-%�ԶZKJ�n�y���{f���l�~������g�{6������ٳ����?������3��s7NI�GQ��������컽]���ޗ����UC5���jZ�Ծ�����������|�j_��ooW�����������oorY&DI)6vvve�����ggggkfZ�ۭm�{z�����0K�����a�w��/oWe�������|�$y\��Y#IJG �:�D�:T�t����K�G� |hc�����|f�(�����n��<����������:�����F߄���E|dQLg��s��ϗ��_`���",�d�S�Һ�+�Һ�+��UU;I�BIRC�䘪F��v3����s��gc�:�Jy,�:�Ju.��*��-l2n[ ۖ�7777DNˣj���� RA�Y �"XΡ@T�BQ](�/�.�@��AU�*��)���X�0�x9� \�nW.WD�§��S��������� ���#1q ��1���3����������������ڣs�=���� w����������ᙌ�fg2�F�A�¦�JH �P�I(p�*t�P�Y*qiX��c�kZ�.*h����}D�#P�J*�S*ZS�iL�iO-O(ԔLC(�Ħ�p���<'��H��"[X�mb�bʖ�0hX5����/�:Ƹ��������2<g2>g4<g2D�eϭ�}md eP���j��U�Ter�J�$CIg%B��%A�2���PyF���������ݽ������pL���`���߯onf�Z���٭KR�����Γgf��ȉ����ooooooon��/ץ����{z�Z��S����΁sz(ݗ������wz�.��k������&E��y��nNf��s9����z������Z��ד9��g3���s9��bL�i�3Lf)���a�c�T�5L�Y��g3L�$Ę��ث�(�,^��e��Դٳ{?��͟��6��g��������ٳg��f�����g����g3���9���yEH�i�ݗwwwwwwwwww���������Y��B�)��a�L6�1qqp�n��/ooo�����������������DX�2E)*M�I��)+2��I,����;U��m3����������`��f�Z�ڗ��콽���/bBE�(��R��D�����%:�SĔV�Ե+�E1����7#�n0�4px��-�7%�7C�n*���n����z���\|��(�<�I ��[ 1LM�#n9��ą������ �W0�4�B�+ ʙY�e�T����T��RJ��$�5I���mDj䮥z7bF�v7#%r=+��4���_L�|�>�[!op��26Fڗ � ��v]8��(�H� 7$T�H� k���� T@����ln�1����7c�r0<����� �p<������m�Bp۵�����߯�|�>�G�>p!�>� tf�(����C=��3��{���sYb'�� {��Q������ӄ��g{�w�:��ո���ţ�6�{����e0��� d4!2�� �0��$h+�h2:�x�fQr���2��M,�4��� �0�r�
�KGj�r��T)N�uJu2�B��*�T) Tœa+���\�<nD$�(�@�&a V2�X��=cKk  �K.Xh�/� D0 \"�c`:�D`:�0 2��L�D&B9� �dBd(�0�p��U�����4���,*X��T���ʼn���O��ݐ�Bu
T&P$P�N�2�������]�ڭmmmlד������_���������5�����������IfY�e%I�٧� N�C[R�ԷZ����������ݗ����Z����{��������������⯔ssssr^���������������r,��dRE�I����o7����򾾾�����ke��^�Ng3&sT�5Lɜ�j��9��b��V+�a�c�Q�bMf�Y�5���3
�����,)�-%�ԶZKM�{=�l�����������l�����͛?���{��g��og�~�s��o7���y#�YE��:7��ݮ�K�����v���������������xlS ��b��)|�[R���n^���ޗ���������������j�\� 4�M&�I��i4�5��Y��6vk;�������������0pn�fZ�V���wwv]������Z����W$mRX���#�j�jR�D�J�>41񠏌�\g㱑@�ïW��spq��{��{������� �� 0خ���~.!��"��"� �c<_.x�\�����X}jX|�X��*uh����*괬�ʲ�V�ʽA%�QT��6�Lfⱛ���u)��S�t�Ԣg�
KAE�l(����8�������x6JI d����p�����J5� ӈc��҈c�Gc��!�c
b�0؃�p`J�3ol9� \�/W�����§�������`���d6�(Fb��� 7�B� 3�"�l�#�X���9��n���h�OГ� \�+Q@�N߁������
�%^B_�+�K���c�X�o���� LS��`03� �!D�2���ќd5Hd�I(l��6S(l�������FV�#+%H�d����e�3,��,�)�YS�:��R�Q��c��NƢ�L��=
�b���-+��-��P����������+�3"�9�y�м�d^g2/1&�F\�ұ��c�k ZV@���j�%�VU�?zG�RqL�:�T�S*^ݮ�k����kgkj�Z٭)����0W������ۄ����T�J�I��i4�M&�I���L����ٖ�[[[[[U�j�-���oooom��[[[U����xxx��l<<3|���������ssr]���ݗe�vM�!�9EH�CH�<�7$y��������lU�l�[-��I}y3&���j��ɪk3���)��cb�X���щ�1�c5F$�k3L�V+������#y���l�[Z�3m t�@��Bp��
p�B ��G���>�#PG�A� R*Bp�B�!HB���4�,#l�F�F�]]]k`a��R�B�à 2�F#^�� x� x�h��o7��<�#ȩ �R�!�2 �3��乹��������\�6���sy4<<<<<<<<S�1Kj��-mml�[j]�n׷���{[[[{R��kj��Yٔ��Ԓ�RJ=���r�Q�M&�IRi4�M���n�oooץ���� �Y�������R��컻���Z�,�BFI%���u2�Ju0�L�ԥL�oF�nFn6��m�+������x
�88F�&Ȝ �#p��<y��6���@o� �@~��B�@[���bn%17nF ��˃r���\�i`4�2Xeh
�*!X���c$���U�I����I��U2'�C��P�Fr7R������`:F�R��t�% � h#C̄ƈl����7&�6��ÎF��Dn�x�$d�Ċ*H�����K`P�@ j#L�W�������b���#n"г�L�X@+��<���&�28m����x��'���Ǟ<}�o��QZ���$�"I�&�C�-!l~�����]� � ]�џ��� �V�{��uU&���,w���W��\軅��E�a`�?����f�v`*0\Ȁ��
���2 2&D&�c C� 9��%���AQE�e ��Ɩ�h�B�V
��X�$0IbC�U$ԧR �T)�THܦ� ތ ��Ԯ�/�����27c7
H^�$#��� eL� X���4X�h�
e�E�K �6�9\8���R0L+�`<�;`*4��Vd��&�Є�<2�����
L.X�0�'�i`�a��,acE
*���.�5JUiJ�%WUJ�.�N�5)Խ.��wwv�U�gj��������
���������FvvjM&�I���M&�Rh���RJ<�r����ٖe�kjZ��ۖ���ww���ݺ�̵Z��[[[;[�������xxxw�9.m�77+r�ܹ����.nnnh� �2A�R !Ȥ�"��H�#��=}}}�}�j[-��e��_/�צT�f��1Mc�j�Tę�34�c1�M'�q�1�c�j������b�,llk�
�E�e��n͟�{f������g����~��{�g��߳g���~͟������#��<���YC��4��dA�I�}�r���[ۗ7+u������ܷ/%���a��xxxw�3�,�;[;;[2�Ի��/We�ܵ�����Zٖ�;5�&Β�,vz9G��Tz=����zJ�Ri6e����۲���/���I���l�;;;;;;R������u\��rDj��O#�2;6GT�GTU#�eI��#?��g��"�g����/r�.opZ��.slZ�������щu�����&�l#��E�?�\d�gK�Η˜\���k�+-�>�Tx���VDQ:��H��EuOIt�i�r%r(��)e)jc#���=)](�R��J2Z��s[A=����p-v] ��B�k�{���Y �,�p����?��6�T ���J��:���|`�>0c�!��B�Bl!L�������{���Э����Х�^��~�����>� m�q ���?���=�yy�������o��I�m���砷�����A�������y��^b�
&0���$�O5M�X�L�!<j1��O�")J��-�BUR�r�r�$�D$�g�ţS�F�R�N�
�iGҒ�u.�z=(�zQ��ǒ�dq���<'a�+�[*>����a��å�a��q���+�\Ra+�6�S"�Y�i�dXjM L���$��Ę 1�V�<��x�X�ĉ*���uE���Y��h�SH�*N)R���K������Z�V�:II,�;5&ΓeK��������M�&�I���4��G���Z=����TIRJIf�ٖv�2�Ե�-K5���������kkkgj���Z�vvv�C�����þQ�n�-��+{{{Rܹ���\ۮdK� �2 � �!��!�,�#�RG��,V5�j[-���l�/+����^XR1���1�SR1��s9��f��fd�c4�g�1#Ě��s4�1�X�f+�ƾa@�h�|�[�f���?�?�7��l����������ٳ��ퟳf͟�����~ϑ�YEH�AH) �d?G��?��Ԋ&���ܷ��Z��m�m������&����0�3 �I����̳���,�;2Խ.�˻ժ���fZ�ڬ�����4�M�I�(�E����-��J-�Q�%�I)6�;.�W���Ґ�:�RJM&�I)4��̳�.nn��ኤժ�T&jd�2�L�*d#j�)��� �F�2��4�����H`t��Ӯ���BdN*�`��76Ȝ<U�6�q�Ϻ��+�`��"f.&� Q5���%��|nF.�q��9c+*e`����� ��-�d�NX��,iaa2��T��EfFF�((�B�#Nһ��„nƢ7# ������� �!�G�R��R� `\l���p]8��N��O:����"��2����?����q�P�Ben�*��%P�hcQ��mFRa���� } @�`E�lm�t�����t���N:M����?_C>�`D�� pn$q+���������@<��������{~�y��Rrh���m����'������� ���^�p/�`���� �0���TeS" ;#d �P�5B4 ��SIWʘX',d��L� �L��� Ė'�X�hMbM��)P���S��܌�n��v>7c ��Bdn�J���8Y�af�T�ԩ��)cKRƖ� -K ����.�.�������Rh��̈L��"Rh+4�F�
��Q�W,"X`�%�(�UeJ*(��N�UI*���.��Up�J�*T�R��v]�ڬ����t�M�&�IRT��w�k���6k5&�G(�z=���Z)E��h������I��i4������Ե-K5�kj����-l��vvvvvk;;;;;;;ɠ����(�����ܷ�-֥�Է����(����=����AG�� � �!�C��"ȫ���YR�Զ[-���|��Wץ�}|ҁ�f�c�MS2g5MS9��c1��f��c8��5���s4Ę�S��cb���R5M-����f������������������������{�y���?��E�d9C�R ~����?���~G��{�>�����kkf���-K[{[{R�h,3 �/I����RK5$��٬�vvv��wv���-mK5�������ΓI��h�M&��N�C(�Z*�QT2�E���*�RJIGZN�����Q�Q�%$����Ri4��gI,�K��컜W�j��#����/�E���� �jE�*��&;�:/wt\����豽�cu�[�����m���xX�w�������0�C�9�\C���G�?�l�\����G����8����Q²���Ëk� TjꞒ�Ti����#�K��JA�C�F�m Jgd%3��� mn�7k��9�М������A�d��ўq�q�q�J�ڝ@mEPS*� S�(�`�%b
ᰈa��aA� �|*����ս�d�'.n�
���/W��o���?����� q‘^zC�{������y���B����ܝ����͠��{oo�z����6���b�Lfi�d&̄�*��� #4d$ cb!�FG�U�ʪT|�T|��+�'�'$���#�ᨔ�H���=(�.�r:�q-�r>1ĺQIJ�y.��j!7�\��]aյ��-�8�,/-���/^W�X�L���
�SB�RhTjM
�f�fdȴ�`\g2>b5ͭ%���HVJI Ij��j��+E���uGSG��=D�S*]ݮm�vvk;:M&�I��*J����z-����$�h�%G����Z-E���*�Qd5��J�Q�9I��i4�;;2������,�˻��������&�f��+:M����iL�[�ۖ��nZ�ږ����e�oo!,=#��;#�{DZ��$ ��~H2!�r���YR�l�[-K�l�/����򾾾�‘�g5Mf�Y��k3&sT�f��f3I�q�b���4�j��I��c1�������)������g�g�g�����������g��������6l�������$9!�i?$�?����=���=#��;��� mK[5�gf�,��k;[[[[R��W���H��M&�I��i6k5�&��̳�.�K�Գ������٬Ԓ�I���z=GRh�J���t�C��h�Z9EQ��u��K�BH�Z-��������4�M���Թ�.�]UY�2RTJU*$̨��TK�T)�BU ��uBUr��ͨr8t��WN�wN:"p������!l� l2l��l�dJ���e�
_B�w��.�$!&b �����DQ7D���R���a��YS@W*d�����ʚXB���VX����T���, Xac+����ĝ*r��yDi��v1ĮF ���*H�a�� HH8�T��K#�54>�Pl��Rpہ��:u�C��� |^�'�7�*H�p�j�軫�Ų�BeJS(}BU� T8����$�M��GbI�� ���[� ����˧[8D��#p.pۀΛt3t�����į�|e�� B�,���3$ ��i+��俿�l��W�}O�����{����j��0Z�v�{��^��\軖��q��B�N��{�����m�l�y�%�` �&ـ���
���dBh �d�d �h f ��6 ���Q�����P�2�X���!��&d�b`ԑReɔ&9)�z7cB���F�`�^Jv7c �v3�^K
W��J�P����B� �L
ʙ*r�J�4�u�+ 1a��b���W� �W��y�t�u�dh*4f���'�
��14�d@d̈ �@�Td��$�X�I$d�R@䊪¤�ڤ�/IT���*N꒪�R����gggIRi4�:�GQ�*=������F�M�G����-E���t:�#*zzIG����r�G��i4�2�fY�vvvvwe��gggfRVe�&�I��i4�M&�I����MV�������̳,�V�2��<Tw��9GdrGq�w��{��?G�� ��A����Z��e��y/%��-K��}}}}�������RjMI�5��f�Y��3��I�c4�bF1�c5���9��1����cccb���o)�����ퟳ�g������~������6���������l��� �����{��DZ����9�Q�s�1��l�J�̳��������Y���P�IQ��r�RT�M%G(�&�I��l��2̹�,���2��,�4�M%I���z=�G(�=E(� �h4 ����e�G(�U�B ���-�E��U����%I���5��.ndUY�T�)�G&���E�dZ�R-QT ji�N*Q��U�+��=�+wtV�詺ء�؍�m����ǥ�k����ů� ��E�LB���#��Ec�c�JD^�+J�ʎ���/[X\�X^W*/[X\���maA2إJyP�@��8�}8�|c�؅p��0|��!�i2M FI,�vv�C[A!������� ooǷ�k��t)b�%��3��8����hqF�:�PQ*�5���)�LBfcW �B��B�|@��R�����&��{�[�� ����K��K������,�8��ٿ�����{����{�y���y�����<���m�oh.v߿m�������{�K,� �l�(�`$��BA�d#�Q��3FB(�4���4��^�
��,/ZJ�ʎ��c��B�I*QQ=�8�>1lzQjYJ.K�G�.K��Ҏ%�Ét���1U1ʎʎ-V��/[X\��--K �/�,c`X�����h\���a�8�4(5���"�9�A�L (��x���
�d�d�B�Y!a-Qj���eQz���uG,�*�K�U�%fRT�IGRJ=�EQ��z- E(�9����ͩ>��E(t:�#(.&,�B�EQTr�GQJ)GQ�*J�I��i4�2�I,Ԓ�seVvt�;2�I��i4zJ���4zM&���9����(�3�Z�vvvt��A�b�_���E�����9�c��;���{Ǩ�?����A$Iѥc-Ke��l�^K�y/%��}y__b����+�����ČQ��jMf�T�3L��c2�f�f�c5����9��b�جlK
F���=�����o�~���������?�����������<�������� 1�DZ�z���=#����/�$_��~/���Qn.���s��)fY�e&���BH���y��h�=����z=��zM�Ri6e�I��.l�6e�I��i4�=%G(�z-�EQh�Z-�E�.-PD���A��J C���#T�#���T5�C(tZ-��h��G���4�If�-Ќ�Y�T�CR�MR�HBR�IJu �Ju:t��DjOpPP�a�> o�}C��ϼ��7@{dZ��1�`bFu�0$��}��|>� �/�@����LMD�r)��� m�R4�B)Q��S%B!Sr�J�2�VUcK"Ɩ��
�JՌ�
�,H7�()Q)�B�[R�S)�@'B��Ͼ��a����*YH� �;#����I�6�nuK�]��^y�_\J�f�l��pmo����ۃ�ju �„�5 ������$�sq)����&�MP��оI����U���?�dM�p��At۵ӯ��^U����?_C�� D���+w����� _����^������H�h�{����?����|,v�{���J 2P��;�a�fq0�$`)0��Td��3�d �@�h�4Td ��ux0 l�d�p�,,�ZIP3*N�T�[tJ#� F�s���%��0�y*��%�_K�}0EJ�iL�`�Th�b��eL��M, +Z�4X�,H�mpz�q}����u�W.
%�ˇ � |h+ � @�`B`����y�L���$*h�/X��k����&�@T��U&�CT���5B*��*���̤�T�:����z*���TZ-���9Ո�"��*E�dRD���b�b�W���(�Z�E��h�Z)E��J=�GRJIGQ�*M$���*�Rl�*MGQԚ=�G���z=�E'�7M�$�o7���%�d�ꋱv.�ػb�[����]E�/���/�1�9G$w�q�{ P�35���-���[-KR�y-K���}}��c^X�k��}z��������Y�̙����cbL���1�f�Y��g3��f)��1X��צv��l����������������͛?�����6lٳ�������l����(@P{���9GdvG1�/��]E�.�ػ�,Œ-Ų-Ÿ���iO�GH�<�#�<�7�����R�Q�R�G���z=�Q�uI��i6T���4�:����M�G����Z-��hj��tZ*t����( Ln��CHr!�r,�9 C���CQh�U���zM&�I�ّ)HU����E�j�b��X�T���Ej4���8�>�4�x�8���A��Z��Mx�0��� ��'�?�S�§��[����ŐLȸ��q ����q���ű�h�wĆ!..YIQy\���T\������j��jTXW*,+J�I1�?�*j��N�0ST�%!��|!=_/��'����d!4���̲���KA������� ���J������$|��J'Tf��n�n����hre@uF�<�POS��ñqb�EbE1PK��§�§�������3n� ��nn�]�=]
^������=�ސ�������߷������������~������緸Y�����q"�./YI@Ԣ�Bib��9�LS�E1L�3X�0���BƂ�!�|3FB�@b�X�����йY�}�^�B��.��\zQZ](�/�,�-K)E�e0�6�\�S ��K w�E�`ZYIQq\������XX�XX�,+-�*^�*_\T�`R������T�M.4`�����{`-1,�l�F XNK&(%��B�RHV���YT\���*��%�T�LB��<�&�Q�u�EQh��E��j�:T�#Ȳ,���� �8��1U(;�E(t5���-�P�-����z9G��z=&��(?��
�� 4z=�����z=�EQTU���7���#�t���y/��[��[�qn-��Y�h�ȷb�_E�/�~/��s�q�'ҳ�Y����&���_/%�|�/�%���/�+����ƽ_^��W����įX�9��fL�s4�c1M'�1F3T�k3��I�c1��lf+�߶��������߳�߳�����lٳf���{��{���>?��S3�Y� (9�c��Q~.�ط�n-Ŋ��d��f,Ř�b�Y�ql�IE$t�H�)#��rz4U�E��u����=�G�����dT���=�L�Q��=��������:���t:
�A(t2�EO����)A�I��)!ȳ���4�CP�tZ)E��r�Q��u$�&E�X�!�I�uRT��H e*�R�Je �¢4�4'�9w#O�|N��@<y�Ǟ(���1�@"Q�pQ(���[
8k|��w�>��/�_B� x�.������q����(� ��>*} �Ƅ ��q���, ʌ�����ԩ��X���c%@F�ef*H9�s �B��R��@���t��7Ͼ}�g�>��!)���dy�����>4D����u#��ZJ +)E��}X�,�EX¡R��"T�5J`�:b�U��.���TO
s��P��9��'v&������DQ�RB-y����WϼWϾ����8�f��Sp����nt��'����>%}�C���?,B0]������<��g����,�Cm��V�n�o�+���^��U��h.e;���� ;� �����{��..��R���jPd�yC%��q�Y���62�v� �4 �FA��A��+�����l��I�����T�&���T]V���:��•��6%z3����W���u(*V�F�"RB'���%�k�����r�E@J�X,h�+X\�����p�����0,��pp\l�1..ˇ �
�`z`B`����t`>`C�����u� �2e���IbF ,IREIT� UY�HT�B����{!RC�d���z=�E��t:�AN�#�Y"�4�!�2 }Qf,�j��P�j�C��ht5���e���h�U���yƒ�=#��=#���H3����UEQh�Z-E��g����<�#ȩG��H�E�["�Y�1f,Ř�Qe����[�qv.��/��N�I��Δ��{��r�Jer��Ě����7�����Tl��L*įW�ؖ5���bX��I��b��S��b�L3�ьc5Mfi�3��f3��1��X��g������g����������{����ٳf͟�������G������8�&�I(����]��m��,Ŋ��^+�X���W��\�1l�1fC$9 �dYE�dYz42�E���*�E��TUG�&A�d9���DZ�w8���U�E����C��2�A��h%�PJ���H���� �2�!Ȥ�T�A��4�C���Z-�$A�� �*=���,�T'�*�jĨ�T(��
�Uu2�P�S��]������o����9��Ip�0��'����`A�(��N��({|P�����L�.!\\B��@�]���'�C��%��%��A<�.���%�`TYB�Ū¢�¥����THI|/�B��\�RMR1@���A�ʼ_����5�z��>jY KA�p";�W�����o0�K|��& �%���)*aU
��NLBM)0�U*�����U$�ҩS�j��-R��`�z�=z. �JcG1��C/�?�=_
_����f��2sl+qW�D�/W�������_���(Пwwww-������������p��������X�w������tAm
�B���`oO~�{�߄��p�^��P�f� �K((#*\�G,�p�eQ�|3FA�d��/�c �3FA���zİX��Ę�k���$����lк��;�R](�-J*K��ҊR��E xBt$� ��A)�N����H_\$�����XP��maR�aJԸ����}q:��u���q9z��y\R�\-\ip�1��c0 I��bL�ll@���LLNI
d�$���V�jKHO�d'��JJ�Q�{!���c��qBEP�t5�A��
��,�!�2
A�d�!^,Pz4U�Ph*
���* ��J A(t:�E(�2��s��w����;�d?�c����Z-��T:)C�*G��RE��,�"ȲE����,�f+��W��^*�tU"�UEr,Ř�H�M�I��g
Q��dw�dz���˩bLf3€�Øsa�?��*Ä�bXجllK��bX��I�5&s9�1��f3I�q�c�k5��ɜ�b��f)���E��y ��@�� �@����:����b,EDX�m@?����������|HPdE��i��i!�a�e�|�>����>���h5 xiDx��9�<G���vG��;�Q�m*J�G�&<��ȯ��E2)�N)�8���b���W��^,��9C��YE�gcC���t:)CQh������ ����=�Q�r����/�$ȴZ-���% A��� �?�� �C��:�:�{���� �2�9��A���%�6L~G��� �1�{�c%a(��V���1�Un�e
T&P�8''n0��ϾM��m��*���)!�O��\�
`C,��p����@�,����0��)����F�<�O|����0(�:���t� ��N\6\�.�����Tid� ,
J�J����R�A%Ju%�� �1(,:��x��߯�|�#���q��h�@^}$l�GaB���>�оU�O�bp)�Ս,yq�@vL�4��\�ro,L,�$�H i�JZ7"<M�f'��("'q�܏����p�����Ǟ׏�^>�<}��q� �B�'���uWN:��z�}�9|���>���%�0�(�����> @�_��������~��N �\����m��( ���{�����.����?��q���.��k�\:��Xu��`0*4T`� ��c����� 60bX�d�RbLF@N�]�ìt�
�T��^���J���U��Ae+�I�m0%ĒP#� p���L��(�Y���\l�"��q\:�v��������]`��V.
����uë�Wr�e�p�p[\:��\�.6�p�WX�p���0�V�"Xd�**L�2D��y3*d r�IJ��L�d�%�dy9?#�~����r4�j ��Pg
�dT�!�2 ��҂��Ң�ht:�A��J �?(4
�C(t:���H���_E�9�����h�q�?#�����{�i�J�C�,G�IE��"�C�b�W��e��W���b�)�TS�qV*�r+�bGQ褌��ȿ�1�9#��=#Ү�Z3��Ę�ə3��a���M�ô=!�=�ə�f%��c1&3��1&T���4�1LS��i8�3�c�k5��S4�b��6+��������?g������������f�����f͟��������;���s�$_��}#J�G�� �QF(�M�F(��H�b�U��\��W"�y1A��A$9 ��v4�C�͓ǤzG����
<��;�c�v�b�9��t���d)��j�T A'�������� A��4 �$=#��?#�?$A'#?'�� ���$wǤ{���G(���BJɕ vЕm ГTP��D��8�"ׂ���1��Mv���A�������߰ ��?^A/���A0��|-q�B��������g�� �B9�h$�L\%���Y|�I.��)u � F�����EW��6B�� f�Z�R�A�`�wA������������.�� �(x&@�Bd�a
/0�Ex�����F��$A�!�J��&�*'�
��0��LBQI0lQ9@8&�Pv��`s�1�J� 0�~)�)��)��)����*�C��������K��[�]M���u���� ��w�������y����+������1������D������+����| ���6��������H-���p�^����E��� �>�����r� �`�1�Z�Am��\aI�^1&t�`��}y`#0�@���NVhZ�B�f���D�U�.��&` �!*�%�1�I�ޗ�Al�F.Ip��\!�XlV
�2��a2�q*�p�}q*���y.�+�����(^W�+�W&�O.�p�c0 fs�b����*r���H���3��p�%R��Ҕw�1�#��Ǩ�;G$s���9���YAH2 ~���=�gӡ��j�� ��$�?�������~HJ�(���[��v/���E�;#�;������~�c���(���t刲,�"ȩC�d�Q^+�R+�X����b�SE8��1F(�2)�tGӡ�dEE��H�b���s�1�;���JJk�1��fd̙����kP����=��=��?!��E�f3�b��lV+�ʓ4�k3��)��ĚN3�ъ1���9�3���d������~�g���ퟳ�������l�����?������l�{g���r�c�r�Q~.��.��]E�[HR���p��a>'���QF(��(��QE8�E8��V*��c�A$ !�r�H2"b�rGdvGq�vG��{���;#�r�c�����b�.��-Ų,�R������?'��='��A��4�A���t��!*=#�?���?$4�G�b�_"��$rGdwDZ�E�s��k&�0�2��I�&H����)ݍؑF�@�M�D�#�3
���r&�LL��}�G���i�m�af p� nF�r28܌.7c��`���� |�� ��(�#���R` F@_0 2D&�7���� �bA�E �QU�$ U*I�J*aR���BII$�Y����z���RB9 0�VB�$�.��dq��nF"�`Xp^�!"#�Z�!��BA�B�G�&�1�K$�$2L�0�5���L�N�~&�"����j �&����&&b����&bD��ș
�$�GZ �!�,L�?q���JG��F�Si]J�v2'о��_>�(Ep����� <=��S��c��5����5��G9o{����9P������^��� �y��w��[��\ 5�{����d ���l4�X6��p ����`�� �ʁ�S+,eaSKZ*i`d\h�"�E���e��\l�6.4X������ �L� �&R�L*S�#R�DJS�)R�J51� �Y|X��pt㡣�^����}���e��p�pE\6�0\5���p�p'*
�*���� *b�V%��,h�5!�l2b�x�;,2X�a��԰�`� ņ���`jXe`����Xh�)���*�$�(�:D��uDj����ڭmmKR�������������]�������۔�)E���ZD�X7�� ������/����E���z=�G���u�����on���(�A����0pppppppppppppn,Җ�����n�[����������kjO���;�Q�w���=&3�bL�g3����IƤjF�g�8�3��8�3��8�3���iQ���7�ѼiR�z_-��e�l�Z�������X�V66*����~�l���{f�����l�~����������lٳg��6�����g�g�z=�c�w���;�H�/�8�������������������Ү%���/�W� ��`���Y��[ۭ������z9G��z=���諑��������`������ D:-CRF��乷�.n�n�˻��������TJZ������ڭ��$�"Y1�y1�y1�d��N���ў���\Gb�;��V#p؈��#��q�͊��
�T��;
xPC0���|hc�@���e^:����ŏ����p `�H��̐̏&��t召�TJ��%�B����I����"V��YTܮ�~%0�C�A �?�<#��D����?J,��! Da���0��R�vBK;!I9$��aQ9&!'$¢d���@3L� k5���� b��L@�+4��CbP�� `j�HU }�����7�j>1���c����zP�i�?��|9�9��A������z߿{������}>���������{���E�����$f����h$ cA n��p��i����
��ʏ�ʏ��>���l��|��|��|��uV#'B�P�F��R�N�
�J:�*u(T�O�)�P@��wH� {x��|\_.-/������k��R`� ��+�|�U��V� -�@[,x�R£*�
F����"�\��X��X���6_,p�X�l���X��I
����N>�N@�T(�(�7Z��[[[[R�D���P��{v�/n��K�����ܷ-�B�e�P�kP��`�W���8+�����2He�G�������=Է��-m�mִU ER(~�_�ppK� ���~��0L�qf���kkjZ��ٖe���̵����GJ�d]���s����q���c3���s4ԗ���$jF�f�c4g�q�g��g�q�g��i(sHo�y|�_/����l�[ZV��Y+�&3�ƾ^��{�����?��~������?�ٳg�?������������l�l��G��;�����(�.��[��jY��k5������gkkkkkeVjMį�����������F�-������[[rܷ����z:�E���5�F�����z������/W���� �5�RFܷ���.m�nn˲������(�A(e �,֥������&�X���&�&�2�����!6S�)��EQ+10� ��B�Y�’� ���!l�8� �%�$QB�"xY����ѹ���th��q�_x������ ��� E8Bc��T`%��B� �p��
%�ˢ*aQJ���$)T�,�EE*�WT���%8m<I�LMD�a p���$!*b���%��|nFxȜ�"� 7��P�^�b�j$�!�O��@|IbrL�0A&X��X�[��H
�#N�g�<ME��@G��lL��ME0��G H@��<�d,�! �!�G��NF cn;��ی�nF �v4�������0�}���������B�����s9�G�{����� ���om���� �Y�����~*�߿�7����F�!P�@�h��X6a��iQ�n���悲�(���c%BJƖ�����e���p�\h�5�
$�G��P�2�P�H�Be2�:�B��u)ԅ/�B�@���
Hc�����^<��}�~\h�.6�=\8^�\�����q���"�¡�S%r�V V4�Xd����l��`a.4�|d���14���@��e%���冋Iq���a��K  E���� t��Zt��<i�bx�j�n�Z�ڬ����C��J�on����K����r�[���P�:�\������{z���^��*�C��J-E��h�r�G(��������֊����Zį��& ~���_���%�¬��4��kkgfZ��;R������xз��Qv.R9��s���"g3Lf32g3��j������a8�5�cX�5�H�5�cX�ƨʣ�j�H�P�Ò�yz_/�����l�Z����J�e,V66+������l����ٳ����?���?��{����6��g��<��~�{g��K�9G(���������['\jZ�vvvvvt������%G)*M&�o�����K���������P�E��)kkkn�-m�Z=�E��J)E���5 AP�F���/��������/���¨$�A��Fܷ-�����7777wwv���ht2�P�jZ���f���#��C��C��C��QOqG�u5H�K��E�r �l$p��C�C �^�f�����4�0;
xO��~��\G��?�˸(wtR��*�W�*�`C0���G�����̎�&���\T����\|� !%�BJ��\�uP+��Y$E+��Ӌ��D��lC�����=�|c��Š@�@CQz0��RD�Q�Ve����Ħ ����I�0��*�7�Q���0Y�E�Ca !�hx��<@�`Pp��cжRT�j�H��#qq��c��f+���G�j=(v4����A��� �"��_�74"���,d��p%sA�w@�G��o�7��54����@�����������@��-����qzʖ 0F�td �cAn����
��C�iQ²Tp����q��q��q�ʬ.-��ɐ���Q�>�P�EP}N���J2�z5���)��U �;
wGݯ��>����.,/%�k��K��+��W�
�#�``��c�ec�kZ�<ZK/%ϗ��e�� �$`Z1 ��r�b�\��\�l���ay"ꉕ�D��?4sN�yF�y<�Q�kfY�e��gD��A��h4*�ݮ�776�����FU�A����_�߯K��~_������"he�C���t:*�E��h�[U�����̢���E(t:5������������k$�i4�&�I,����%�������qaf,Ř���]"�H�R�$�M&fL�s9�5&�������c1#x�5�cR7F�o�XԍcJ�c�1�f��a�9��n��^K���l��-+kkkkU�������W��Y�,� ��=�� ������A�����/�� �@Y�H�#�0H�#
@1���=��������>��� (��@��7n� � �p&���������@��`L��@��3f��0G�%�� Q�B�_�h�H�b�W�1�ٖe%fRT�II��l���=�GRJIm+���z_�K�������� C��h%�KU���kkjQ�-�Qhe���t2�A��h�=��^�����ߗ�����3����+r��j�[��ۮnnT��4 A��h����f��� )�,H�"���%�gS�JS��Je \R�3Q7P��)!�)! !<�3l��Ѳ&���EФ�~���I�f1Ȝ�*���o�p� ��q�Ϡ|R��+�D��p&��RB��ـ�������\�p�p5.]��E���e�8��Pd�bG�(��J* J�$�U2��N�x��^&����D�#����,�-����hch"��P�!R"��䃩(�8ص䐄ؙ�~&��L�A�eɖ&�2��.~��T%P�t��•$M��MBAP�j����$��`�� �x4x�� F���= �A9���m�.����q��j��di]��݌��/�����p�@
X�����p-`-!������1hAoշ����D��0[^��6�m�8�k�� ���c�
���
���"���a��C,4�72�c@�6 �ԇ�8 �8��&A`���Ɩ� ��q��Ը�b��e�K�L�1�eɋ�� �L� �S�}Ju!�1�"L� 6��Cг���va�at�ͼ}�3����p���re�ˁ�p��5�\ ����Td�� ���T��4T�Ɩ� �)a��ذ�p�q��ظ�p+���d0��|�.��E���e�K�(QP�&�eI��V����]U �$P�D
�j�,����5���g� �?����ͽ����֌� �?�����^���ޗ������K �J ��A��J�C���R�Qh��2���gEP�j�P�t:�m+���~^�W����T�M&�I��J="�vt�M%I������W��^,Ř�ȷ�AJ�G)4���jMI�5+��^������Ke8o������oƕ�q��1�c�҇$;C�o �%W��zZ���Դ��������LI���yc�og��l������������������{�����f͟����g��5&�I��Jb�Y�1^+�Ub�WN��I��h�&�G)4u�Q��z=�����������^�*�A��� �PJ�Z���֥��C��: C���e�O����j7�k����������������F���knZ���ͺ�C���A���4
�vvvvvdx�Hp�$.$K|���4�'�H�ER&R�ItБC�A��k˶&klN�w�š#�𞇄�<'��=�ʼ(p��wk�gw��o��?�)��U�����`^`�qIz\P_.(/W���r�qIt��L��eS��G�UHet���qrm8�+�.!tJb��/�b��)��@���z�BP���IH't(��Bؔ�/��/��@O&!'�%C�C���h~e8}F�*P�8X�4@�. q8��BNk�?� ޯ'w���6��`l�� Z0��\#1q E�1��|f��L�҇�P�y��� �A{����/�oy�=��������ю���� ������������/[,.-��T�^X`�@0Ph�Q�_ ��/0�?� 8�����i../K�K�,+-+
�e���b�y2pS�*��5'��N))�P�����'��Q�)�r?�<����,*/�����u���뉘�S9�9����JT��ǖ˞-K-K-�:ZK`����B`x��/%�K�q��I�U$��YT5WT5�D�h��]�P8�P<�T5����j�CPh*
~O�����{@�������ܣ*�A'���/ooon���ۻ���{BL��O��� A(4�P�t2�C��l�������CPh4�APh45w�������mdz=�����Z=F�&�I��4�L\XU��V*�R+�^+�x�(T"��*9I���9�Ԛ�[
�+������Lf3�ʐ�7��� ѹ ѵFq�g�8�3�ьb��P��hsc+/%�mj[-�KImmmml�����ج}�����?�?�?��?�<�����?��ٳ��߳f͛?����~��=G(��M�G��
�T��R��SE8��ql(���I����j��h��EQTr�Q�Q=^ޮ�w��$�g�~PS� ���h4*Y��٬�j�C��hj�A���
?���� ������ץ����/K��ڀ����6������y�gi��z����?��� ����vp�H�%I$ ��Y�iS�*deB�T�P
�S)}Be-+�'����l �y�15i
8f���I ’�bZ$���Np��Vp۲���e���|�E�� ���L)!��)���^.4\�q���\l�\6�,�6_,6\ ��t�l����R�(H'S#i�LST���5���MD�aZ�b"�n>&@�!��
t#������P��bj�j a���&��˔ɖ(��m�q�{��B�*#NF��Xމ<,����U�0����_#��t Ou���1�K�:�9h�52�����+���nF �v8һ<������{�����_����š������'���m��ނ�k��y�{�p����p���jX`�/,�a��[,4X ��6 �C�p@A�a�9��f�k �Ƌ,2X ��%��5��B��a2�RJ5)ԕR�P^�$&aI+��\L� ��af ]������;�R��p��uK ���k��e�`�muW0
��S" �dBe�BA��գX`����zXl�h\h��, �0�D 
�������0�IUrE �"�ʤ�ZJ�T���IX�,"�N�J��Ri4�M
�4�AO����~��I��vN��-V�Z2�����C�����wwz����/K+�g��=O�����?'��C(e�C��vt�2���h4�?'�� ��h)�?-��{{{idz)G����U�E��h��G����)�8���S��VAE��J=�G��y�k5�ث���Kı,I��c1��f1���9Cr�d��kƱ�5F��3�H�3F�P���9F���Զ[-%��l�[[Z���+{��l������?�����������������{�����~������Z-�E�� �Ɋ�F)�N(�(�����u��t:�E��5�G(���.��Kk�����?���
���h4)*J̳P�t2�A��g�?������{=��g����.�������wk�ۻE�g� l��2֌��������zOg��?��򂡔�II,������H�yO!��M�$�D�5E��N�R���p .Б�й��;��6�XNC�r��b׌6$r\�.�]� ]R���|L��<"xxE��1�.0L���.'/������e䰘�\L_.�ˋ��X꺣��qb}8�6�V�N+��W�+�)�[ �����. Ђ�=Ea�.B+�a��+��[�-�c�����s�r�s�;�~�P��R}8T�N �Ę�b�A/�g��������j�t����t��Y$�1ev�����b)�b>3Q��G�j=(v5�߿��������B���{�y�����N�O����Abm�����y��{������XV[,+Z���.X�d`øt��t�� A��bũqQeK
Ke�%����XTO(+)�����Q2.��"XxD��"X� ���M�)�O�%?�'-K �e����b�q2�q*�q"����dHg2$5M M>`�Թ��se���Is���Ke���%�� @`t��)(� ̔�+$�d�BBZ�5eQ"�C[�&�E�B�z�P���hj
�A������{=����;���3��٨���S�Q������]ݮn���� ������{=Og��?�������A����I��T ~��������O����~��S�^������u�E��t:�C��Z<X��b�Q�1F(�Rn2�C(eC��Z*�QTy��1��z���^�,J���c1���fLSJC�s �7��R5#R5�cX̍Q�3�њ6�;��mQ�o$ZK��l��-���+kkkk)1&+{��͟���������������?������͛6~�����e���h�ZE���:
���q>(�����>'Ő��h* �C���tR�C����R�nK�g���zOI��~��I�?��g���RT�IC��g� ������z��g������gt ����ܮ˕��������C5��3y��vN�s���{=��I�AO�)4�IwT�+*d���ҡHzTLr�a��!Q��uBU��>���Z8н�qH��~&b�
HE#�!E�0��m��[��'�qtۢG�>�о*}�G�p��RB,���X� � )a��а�pb\l�X\l�"� �冋9�.\.\6�j ��Mh� �B��Цl��Dе,D�!H"#����x5> G��Zr�͸+�$ �����!&�!���z6�����(Z�7m%��+r��N�*���T:�*���e;� ����@�����q��ӎ��ӎ�.�x6��0��\� I�3DP�m����5,��DQ�(݌�+���� �����Sǿ�� 0� =��~��&- ���+j���I�H`�
���I�W��]u���k�
��̋�{����cKE�, X�0XV, � �Ya��j�R0���!��< x��Y��y`�`=,,��%����`"��(\�9&X�
�Lp�HHaI�,�� 1B�� 1D�D17 m��n!��>�Xd�7,2X  ����� ��r��ّ�" �dBh
�����.�E�e�^.6X ���,2X�,������j��A�K$��`�R@I,IuJ*eRj�T���&�zM[IZ�B��M A������{=���d�w9��g3��o:H�{B���������wwr���(w;'s�{;OI��{=��������� �A��T�
�?PI��?�������z��g����{@I�QTUEP�t:�P�t�!,&�ؚD�&��'�Js�P��P�t:��Z)E��Y�����į��,llf$�c3&s9��g5#JF�����o�x�7F��j��8�L�����iR��[-��kU�������YI����{g�g�������~���͟����ٳg�������ퟳ��Z*�C(t:��eA��$\��blM"ia��ƃA��h4
�C���*C��hT�I��vOS��=������?'�� ��BM&�A������~��g���z���s���w;��&n�����.��˻����EN�T������ܜ�gs��w=��g���?��M&-T������J��"��I6DST��*���3Q� �T�:"Ά= QFv+�lF��7 ���_�Q���7[ ��.��ˢG�Đp _����0�����-`�a9jXLZK���a)l���.$/�$-�� �ą����ᄦR�P�R�S
i���"�<����e���+����C7߀O��Q�.!T\B��1dv1 EUY��hv��C�h~����@�>�@�S�S���*a ����n�|,st;� ]�nn����9GR�� 2evF����3�b+���%ҙK��;��A�{����� ����� �o����)����������pq7����V�TT�XR�XP����XN[,'-�.�����4���C�|�Ɇ���lF���XN[,')���bRD�JP�`LC�Cb��#�b�aC�%�c����&�cF��1l�j^� KR�R�q)y.$/W/Ẍ��DFsB#X�hiA�K X]J�e��e���Ice�b5�XZ����e�y0Ĕ� �I0̖HD���YTH��%VI U� U�E�B���T=O���zOgs���;��g3���nG� �䨓�Rڗwwk����ʌ��G3��rN�$�9�����w;'���?��S���?��r���g���������z��g���vOS�w".;������J��J�>��A9Q.%ĴJ�5�\5�4�R�N���h4�Pht:���:jXU}}z���ı����fs9��jL�Rf�Tę��T�� ѹ �x�7�cX�1�H�kJ��7���j���l�[-+R�j����VK)b���?�?������������{����{�����{����퟿�����t: A(4 �?O�����%�Z%Ą�x�a�a��� ?PI�A���2C��1�s ��s;������w=N���{?'��z�����3���=Og����=���)��v��3���7��)��7.nnnnWeͺ�Tz= 24�yG$rG&�rnMӲvN��;��g�����JL 2MM�*AMJu*�P�ԦRIJu ��:�*���TJt��ʞ�`r0}��J�a.6�Q1�>ç^7�<Q��k�M��6 ���m�Op۩�B�(�� ��
8f���(�Z��`�Ұ���Xd�,2X� ��˂�p��Xh�(/K�����_�fS�r�@|R�LJ N���p���"pӄn�B(Ai��8������P%�$ � 0�5.D�\NF 3Ѣ�Ru]Z���@��f�@��cP�@ �J�TF�Ĝ�h�(�Q
8�8S@�#�m�N�7 �I�7���hy"$$*�^��C 33��Ս���܎��`�7c�+�+�=_������_����š�m����'#������X ���W���;���� C�R�2T�4�Xa`ZXajX`�K�*�qp��
F@G��t`:��fB�N
��h+4|����.H���¤�*�5A'���BhY�����QL,�
5����n)���R6��G(,,���`S,2]R�e�D��z�l��.H�TdL�L�"@e4!3Mf�D�|�L���0\$�4�%�EM,UcK�S%S,�,*MR��%J*H�2@�H��H� R$MU*�$
����*�������g���;�����s9��y#���T)��=�G��TrʔDΪv��g3t�s7&��s9��S�s9's���zOg��?O���?�����z��g����;��s���w;HW���9�c������(X5&$ĔG�1$�%ȍH�E0R='���APh* �Ph*C��v*��ƾ����c1��fd�k5���ReS9�3���d�3�R2�j�ќg��c�STi(s ��o�J����l�[-%������l��͛6{g����������������͟�����6lٳf��~���e�C��: �A������{?'��{`I���L4R#�9��#��S � $/T]��~.��������9'3���rNӹ�;����{=��I�A'���z�����;'���;�����nMɼ�r����y�7��g%
�j*�G(�-�G(��9����5OSt�o9�����zOI������՞$U
D�T���CE5Hf�R���)P$Q*�T)'$�Z�R�c�Gc�1�b&�h�'�'��������ɺ�b��7���9/��?0���0�!� "&�Jl�a4b5��� R��l�h_."/��e��iC8F��E5HDS�DST�%+<
�l\����(9��.4����>%~_��&�aC�'��Q�(��MG�k��*�P��C�hz�?z�
oD3*��+QTS�N M)��!�A`@�h����`���d�p9� ���r�FT��!vF�� �b��b>#Q�MG�j>;� ��y��{��y�6��!��l�{�O�ٶ���� m��������� �\2�J��ma:��e��e�a)l���\H��h�6���@gT:sY�O5�9�hMF0�D�BVUuB���N�' �� �� ��Cb "� "��q�bH��q��&<a��e�A� ��R�2�q|�h_."_\2c0̆&�!��h/5� K�`1bL�(2(0�aR�µ��kk ʏ,����*���V�i%E4� U���+�#$K �L)L,���g����w9��f�rvP�I-˛�D�h�z=�G��h���o9����y��7M������Ӓs9'$���I��������ŒQ��]N{=��s�v��s���9')�vNg2㘿��/���Q~.Ĥ�������<G��E����w;'���?'���?��I�~���$}aER��˩cccc1X��f3�ʓY��g5��s9��f���s9�̙�X�5Fq�b���1�H�`�������_/����mj�������f���?g����������������������{~����ϊh�G�A��h3�
?��S�{;��i��v�� �E��b*Hi!���n-Ÿ���]��|�� ɼ�s9����윧)��vOg��|���QD��=�������s��9��St�o7�ɺG��yn�ɼ�7&�y��Qh�Z-�EQ�&ooosr]�K�����D�NӴ�>TW�hABꙤ� UY$�RmLΥL��B�ҝH �)Բ�$�1�nF\m�Aq�$BG��D��C'N<i���<�g� �"qK�n.p3��@�"�G?Bv3�m,���F�r�EA�q� �`�Xl�XXl��.K��Xh��r����p�S�}Ju"0(�u���$l��\:ؽ�O�H�}�K�_��|T��h}"�Y��-DĒ q�D�����nn�t�� $���RuzJ�F���%_��:�@&P��ӔO
t��L�p aGh�/�$ �>𑳎)p����'68F�\���<�%�$zA{!�A�L�+����q���d�r2(ی9�q�����w�� �
+�����'��o�����I�0W'u{���p1���S��W�Y�(8>w���pFD@�ȀȜ�T��XJ�E��a��, �(�up6`8� �uë�<�4�644 4���c" lI�N*MS
�TB�J�йDp�QO��#�5��Ǣj0 ��FC7k��=
H@?4 M����I` ����t\l�E�k�����DAȀ�3" ��Vh��}�<0�l�R`� ��0��k$,0�3X��(V4�1*ed˪T��WT�*�:¤����]U�T�B��Ę��J*�Su
���.�w+���sssssd�=GQ�Z*�CQh)��s9���<�#��<�#��y7&��nNg3��읓��^�kDؚD�;
�H����N�s��r��g3��s7Nc������_"�]��v-�<GDr#���Q$N<���;NI��=N���~�����~��Մ�'��Q�5iU+kke卉1Lf3��3Mf��k3L�s9�jL�Y�5&��k5��25��8�3���5F�a� �x�7����Զ�-���+ke{?�ퟳ�~�������߳���{�����o��6lٳg��g�g��1>'����F�AO���{=��ӹ��w7M�$�7G� �� ��b,E��Z�l�qeȷ��]"�~97��I�9'3�s9Ng3�:PS"�[��1ń��a�9�r����s9Nf�#��<��I��,�"�<�#��:o7��e�C��Z-�Ql�oossn\ܗ7w%����4:�P��'(���Z��U4_R�G�RmN���#S�#S�LV1dv1\v1\|B��BhJ���;��^ ��o����ˁ{��{����_ ��88J:�4�,4M�z�������,T$,��%xL�K�,��E���y,��i32>B�Jj������C��3�Z��`��0�hތ1};���g�?�#�L"HxD�LA�E��6 Np\�Ae�ubɋ��C$��mU
���
U�
�D
�P Tj*N M����\6 &cV�x<��l�p�\m��2sp,r&A�-�U 4H�#P�#QLCq G�j;��g?(�k��!�C�l������?fR ?�|���U<X�s������!��!�~ �A�p�S�������X3L�є��9���%XH[,$-K��\D��d�\2_\1_\',������f\��M�8�d̺L�U*� ��Ѕf�����. �+e�E1�1��$:�� _J¦��b��fs* A� �e��d��^�0�̅�i��k4L������`/1&C9���`Ja)aJ�¢Ұ�iXV�Tuhɑ�"V�F���U#U\rJ�ʲ)S2&OS��t:��D�W+����sonZ(�G��u�E(j�S��o7���E$yG�I��9"�rG$rG�ɼ�n������ᬉdr3��?(jp����GS�3t�7���y�}qt��v.��b�-Ÿ�����E",E���Eq��9��ɼ�nNg$䜓��;'���=�,%��C\M"yb|O�IkkkkkRҺ���f��sRk�*g5MST̚�f�Ԛ�X�1MSY�iH�5�Q�bFq�c��Ô7!�7��o]R��^Ke����j�W �1��yA�0y��`��$f�~a�He�Ra��XeZy �� H ���8� ��C<3�9 �� ��, `��( P@� $��"�X�C:"���'�j'��MD�k���G����{;��g)�M��y��o7��Ɋ� �e!��R��)P,�]b�Y�$[E��������G��I��8TQE2=�t:
���I�}a11.%�Z.JrNf�y��#�*E$YE�d2E�d2E�drG����#�u��t:C��J-����������͒H4�C(s���e��&R��V�UZ*��U��:��T)
aNi+���܎��`�Q����K:q�]6�t۠`x���^��&���ܗ:ӧ_-(�!d6ɶ���'���`������a��X�P20T�S%@�\eu�l��p�R���Y,X��S 7J�%*d���
�q0K��*�'@lu�"j .��mF�`d} �`B�&�����Ex��w��6B� .�U�n���T�u��q����R���*�9$T�d�*j��VA�����&��M��0!@� 8�
HxRB�<����nW�d-���It���F�Ũʤ$vH ����MEbn0�&�%q��3����{��~ �x'����}��#���.S� �N�pT���Kt1Wp(�����!x,����*��V`)2L�T`�"1����b0p`B�%�Z2�����mre�k���q}p�����X��'K 
� 0T\6iA���E ��R���T�R�%@t��#P� /Ē"�$� p$t� B�%q+�AU+�L-D �X*2���7�ia����|e����%��y�� �0 2ɑ�Є�%
L)0������ � Fd*0 %�k'Xa`_,0YJƖ�Y�e� ��$��P�̗�2 ��l��X��
'�9��@��Ph4?��Թ�-����G���u C���t��鼏#��G�dYE��"�i�IE�I��x�`��<J�v#���APS��}B �APIҢՃZ/��GH�<�\]����h�H��f)*"�Xg�x�(�'3t�7�����o#�y�ܜ�gs��\XGD��D��D�M!��z&�Y)(�jZV�kR�l�����f$�1L�5MST�5���Y�1�c�5F$bMcR5�cX�3���1�&��9Cx��$[-��e���mi[��{��������������������?���{����6����'��kD����Z$�LI��;��3���G$y��G��y���y��<\F�e�Xe��
����YE���n; �dyGE�C\V��T �P��zO�����=��K��QdDyG��)"�4�!�r�!�r�"Ȳ9#��9#���%��:�E��Lܷ���) ����?(4�S��JN�P���&����֩�ږ�J�#���+��*��*��(��%�gCk�{��{��{����t(;^
�ƒ��Z��Pwt(>Q�~��@Qd�`�����I�9�5�R���a1t�D�r�r�Q��.X"1�Q0��K$jB �32��?QT��c�{��蝌'�A�V �+a_`�c����"��&��&�6
M킛{����+;.����B�]r��%�0�He\��)$%*�-��*T�Iԧ���Zm01�� ��A�< �b�x�� N�6op7[������c�4Qh��H �,����C1X�"�������������y�����y������{�����߿����}�7�y���aSi0��U2��S3L����)N0F �&,$�^��^��\�\0ZV ���`��"����ˮ
˺T�uA겨?��IU�B2o�GJ���0�8҉��D�t�d����&)J�J� � Y``XapQ1��ѦƂ�I� LfB���̙ L�Ai��P1&���Q3� ��2�̉ �\N�XP���iXV��8�e�+E�VD�JCY�O"y� d�p�<�?��T
Ph4
?�����F���Dz-�E���t��rn��yEH�EH�*EHr ����9C�b���"�#L;��;Og�����?'����g��?��*.,%�ԤX�qu��[E��b�+���:"L,��A��o7M�$���yG��yo#��1iqa�b<IDr$ĸk��K"j&RJId��KkR�[Z�%�e+*W)���u&$�bLɩ5�f��1�c�1�cĚ�2�n�c8̌�4c�1���9Ctn��z��Ij[-�֫U��?{?g�߳��?������?��?f߳g���of͛?���{��g�؛��D��bJ$�x�CLE��l'3t�#��,�"�䎑dRn�ɺG��ɼ�8��a4"��\��^+�r,Ř�$X�`�@�g������4�?Og���?������;��� �g�X�",�H2
A�IA$A�� !�r�!�,�#����T �����;ZGs��zOg��?'�=��� ��j���H~���w������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������3���A�a�a�q� � $�I$�J(��(��,� ,� 0� 0� 0� 4�M4��4� 8��8Ӎ5�=�8�N4�N<�M<��8�M<��@��<��9���@�����@>@���><C�C�$=C�D<C�?C�T?�C����5�P� ̐����?VC�t?C�? C��?C�?�C�4?,C���P����I�����P����M���?C��?C�?C��?C��?!C�?C�<C�d=C�D?C�D??��?@C�?LC�4?SC��??��?C�T?C��?C��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������̐� ÐC�D=C��?C�=C�D@�C��?C�C�DAP�����C�>C��;C�#�C���U������<A��C�D������C���>C�=C�?@=C���?C��>C�4>@����@�<@;<�A�C�;@�@A�==�@;@�?�A�9����������;C�4?AA���@�@=<<�<�A�9�<�@�8�@�8��9�=�<��<�@��<�<��<��<�@��8��@��8��@��8��@��8��<��4��5<�N<�8��4��<��8�O8Ӎ8���N8��8��<�O8��8��5M4��8�M4�N4�M4�M4�L4� 0� 4�L0� 4�M0� 4�L0��,� 4�L0� 4� 0� 0� 0� 0� ,��,��,��,��,��(��(��(��(��(��(��(��(��(��$��(��$�I$�I$�I$�I$�H$�I$�I � $� � � � � �I$�I$�q�q�q�aZ~7F�D�u}�s�+�湬�<ֺv�/�Md��5�S����S����$�Q5 4����ƴ����������񑅐<�01<d`b-�01:b_��R��&#$�H,�Y
,�١�OfPh��3E���B q b��J�
��J�!��JAuJ�#51(Y������� �5Fd�̒�5�3$�@ 2�Jk*d�������eZ�u����U�ˋ P�@L(�� yp�*k$6i��fkY��ZЖ�=�#T�`Q�d � �Ӱ:3uK��)uc�^ ���O)t������4`и�{1]ymq���²���u�K���2Md"�Md���($�L��R���K�O��#J^^p���]`]`Y���2�Ju)}��)}�� ��#��#;�]ou�X��k����Ǭ5�����UOu��S��-Q�wr�ܧz��%ᇕTQ�9U���F��[�S�T�X4
�*)J�!ڕp��d�0�P�P/�`*L��`Ȭ8X���P5* �6�bD�Ƒ,cX�TBgy � DBgv�n�q�q�Uo�` �4Oh��CF �57j��KV H̋�N�&JХZ��B�ԥb��J�����@� �!2!�@ � � ����#(l#(@`3�&�g�3�a3��A��N2���d��Ԭ6�jA�`��09�2�&�2�C�8d��z�S�5�jw*�s3��3�m˔[�yv˹w.�v��s.R]%i4��-"i��r˙r�yoIR��Z5�趉�2NӴ�7Nө7M� &�/�\q*�i&�4�&���+J��K�����2ݖ�K��E�.��]˹r��v��r���I�g��G�.r�]˹s.�jQ�F�m�t]D�]�t:D�;C��*<x�⛅
�ig,��$�V��iv�iyo-��-׷������>>;�����9*JUk'3�gcLg�,gcYƴ5�� hk�q���q\u�rrqܕ%G�����V�U��Rq�w%G��Qp�5WWUW�_���_�W�U��U�_�u����_������Uu}�WWW��uis��ݥ�ZU��V��iZNR�O�&(�j��� �hZ�hs�Z%�h���h�%��&�h�SB��2�\˚S�Ρhv��"�m/-�n˖\˙w.�ܷ�,��:[���2ޗ��t��iZM%i:F��i3��nt�0�Øt�0�n����n���C��D�KHj���ݖ�ޕH�"R�7Hҭ/-��.e̻Eܻ�l���ޔ�CU%-�7zy�����YVz��ud锶$�q�)�Ș�fE&S�P[q-6�II�iAk( Z�CeLP�S�.�u+қJ��Y\��+�
2�J,��M�Ȩ�ٕY�����M�̉��dDT�QA\��2�e(,(�U4���RM}C��s$U��oE:���̚���S"S*dJ���-JI��!�R�_OR�(&�N�N�_NW.dCd��E��)�ٕ�ʍdh��$v/��;� 9P�tj����ѳ��w��������5k;P���B[Y����v�'/��9v�d0�X소�CVS1KR���K�4c�1l�r��S�
`6��jǔi/(Ɏʿ�`������� ]�]}}���������k�������S�������߯����D-�4�h
�Z���IMK�M �$�!�T��1 S�B)��"y�C!xɚ�
Ɗ��#�$G�I��$��I��'��AF��[�F�"��K��b�[jSk;b�i�5���\bQ���V�&A4H&RU�RT�Ԕ��
0T�p�C�i�⸋7��9�>�h���B��
#�c����2I�fN1j��7!%��$�\�� �T5x���Tsp���j��l��� �jDh����� t���.R^�iZU%ZN�����h�!��hZ�:�S�蔉��;D�M��M�i7M���R\H�-'I�t�I��#H�t�'J��+KҴ�\B�m�3��@n�й��T���:N��h�"R����Z��h6�� �ԋ�贉�h�&��hv��<l���C4�L�(�A�FnjQ���4�'Iҭ*Ҵ�]>Ϩ�{v���iG��RTw'&�����V��Z�Uj�S�L4�� �m���6��ڤr>>..)����⸮>>*�eZ�V����9*>:���������������ꯪ��������������������������������������
t�Ҵ�&�t�H�)G��W͡'�P��P�~O� �Z��C��C�=C���)D�ڠ8������S���2E�i��i:U���i/��{G����h4�2L�t���N���F��ZF�i6��i��i���M�t�7M�t�7/B���� � P?� A�t-
�4=�E�RN�i:V���攥���<�%D��T�/)���� <��8e��uMX5 L� ^b`bY8Ķ�"������Ć(̓Y S%}�d��������4�L��S�LS%u�d� ��; ������,C#��� ,ә�4�a �F�U���)����X�u
�50����
���υ?���l� �h��D�\ͫ4�`�^��Z����Z���= � s
:sd��p;/L^]dab�&�02Nf��4u�k���,,L,B9�������6�y⡳��R�1:���'����Y�������كV�X�%�b�� ���`\\�qqp&�ˆ���l�,�s���A~T�5)~P���œ��e`[`��b��+��� ��J��:�`K�����b9������h�u�u���;|�ʪ�������$���W�U]u��]WU�_U�( a�(B�&q1��� ���L� ��e� ����rfA��F!��6��kV ���R�A�����+R�(o�HRuMO���5q�/N�u�ٵZ�l�U��U�ղ//v�*d�iJ�7��P��eg��L�@ @g �BCH��i��)�D(�6��CX�Q�"k�!^(И���23 ̂���SD3�+B4��CHC�jW�� ����P]�W<�������Q���}gԅ2Ct�I��"��D�:C�=
��A�(������Y�ٗ�Y��]Kq+JҴ�H�4��4�!ċH�4���#H��Hu ��?�tBг��=���I�t�#FuC��*Bq�4 �<Pue�M��Ͳ��s N|�i��晦if�(�D������ �6�H�5���F��hwg�������Ooo��-����9999*>>;U��j�Z�U��Y������kclkCZ���...)����>>+�����V�U�������⸸���������������������뮪���������������������믫>���=�h�;�����R=���>�h�6����X �6��N��P�C)76l|��çM�,f�ke��t��?���@�+A�- En��Z>�hΠ<y�Q͝gTw�Z�h:��Q��:<���h�E��>��RE�i>��ZE$i6��iS�'0N`�(��sJPwi��v��@� �gC�=C�fH�m"�tw��=�\;����l���`P��ډ� utB��L��M�椆�ЎҘ�erR b1/�<t�:y ��evM�Y�)Y{�
r����4a�4a�i-�P���yJ m�A�JKb��9^b>cLH �d&V̌��#zA~JT:Uj�'�hIP�������wl�u�&������:h)��
�^$'>�BZ��n�>N�hZ�x��9��FD�6Ȝ�dNe�$�zQ��%�LG�vC+d=gl��� 5Q�l�j����������tj��ަl9mMCV��5m3`嵰XS�~�<^�P_O�� ���X��S�)������5cLF�v#V-�W�� ��Z�j˜ %�KLk������� ��]�ׁ���������f �������R믪��ꪨޫ����|��#@<��w �=��D���N��&��L��� � 0*�I�5A�^b�Z��d�U�LES)��D�7�$�GJY�=��4��#��g��S�lIh�1�% nj阾��0�%�R"�RCR��� E<$(��K�hI�� >��>9�'��O��(I�iF;�����p�P`S5��T@��!�4dX��gRLR��U=�7�b�,t�ƣ[l0�������wgY�y�Q���Ȏ!��Hz��R g�Q�~ȹ9w.�s.iN�RE$�:F��iF���=��5#h֏��+�g�{�g���h���{G��u��4wGtuGY�|���*Bд-�i���9�Q����X�Z)�Q��i�f�A�vN�,�Y��6�H�-"��5�Z+�Μ�6sgVw������}��������������Q�\|���j�V�W:�Yf:��Yk32��cZR�"���������������n�U���98��>...�������������������������������������꿯���?��=�(�;��:γ���[�7GѴZE�]F�mF�!4��D�'d��d�(YE�_+�|���-e�-gMϳ�dA�i
Э�l����γ�;�,�9��;��Bд@���=���<�'F�#G��mF��G�}G���#H�4�"Ҭ��2�[˶^� ;t�����hZ!Z�����Y�wgvyg9՝��y��<�D��D��#P���
����x�2n��&�Z�Ob��5�����001�l���#�0�:���� � X��]`j��������r�XXeɁzS��J�)�� Y1Md��=�&kY�.h�!�a�cIH7�&�3�T0 ��@��/H�O�@��5�8�vm��X�h���y����IZ19!<����r���r������"�"���%� SJ�)ܩ��1�� )X��Dd�ͻ5��٭h�F �%� U<fO�z�<��uC��P� �[�Z�V�Z�l�ݛ`��,XW�^\^u*c�����
�'&�.%1/�9������[ʙ)��@����퉁� K��X��u���X&Ju*c����_��u��A�w��� pg6�������N�-�Y[�nUn�t��<ꫭʪ��q s�r�������P�Hl�Z��Ys � ;a3�"��1�@��0��� ���@3��3�8v�c(Ƌq�ld-`n�T�)g�@�A��'TȤn�.�r���3fm�7o9m�&kY�f��P�&J�R��& X��@�D�cR��I� XBgL�g��b�Ʊ�u�0��4���,ch��@e�m~1�`� �@G�5�`3�g� \�e0,�<��!��1��,Pk�<d�o�q��*��׵b�v̛0lͱ�u�g6u��Sgy�uE����5��Y��c��i����Hh��Qz˴\����M$�:M�i>�h����=#8����G�w��tyg�ݞ����ӟ��h6����gy�s�Q�s���h��* Z��U�V�3��Gj2�qE����X��E҅�2������ْdm��F�[Bp�ç Yj�(��3��9ά�����=Ϭ�{v���ߨ����RT||||��U*�R��k5��c��1�+3��;cLi��*�����N>>>>>>..F��W''GQ�T\u�_�_����U}U�U�_W���u��_U}_�W��_�������՟Q�}G�wGy�uG4qe�����Z��u1���&�:5�贋�莖���r}��~hܭEl�9f�6Y�9k:l}9�x�iһ�<�eY���S��:�����9�l�:��A�@�����h��3���������t ��Eѭ��zG�m��}H�4�*�v�E�.�v��{L�@�=p��wJ�b�l��M�����,�ӛ9����<����^~������п�,� aM�6�SqA�̅v� L�4(���i��KR�)]����S��^Pal ����/$�qyr���0���nQ� ���G�m���vdv̂��[A�.D:��#rAuSxE�.)���9�q�)��:�Ķ��fn�Tl݈����[5 ���ANj�Q�{2&L� i����L�erQjW%e�E�yE�nQq����3���ag;A����:� .HUj��ʠp��7v���6v��3`յ5 �L�8o��L�:a�����؄���_O�� ��#e�1��#V3J6a�5��1،���&ҎW��^5_���K�_�0}_���y
�������w����vڌ}��}��Pw��u���ou����C�P0��#�R/)rn�Y��"���b�����a��d8愑��Q�J��#�3Ǭ�7R)*l�Q��ė�tHP��.��zy���y����*���I� �ݔ[�����t�ؐߥ�@�E(Ի��w�.1~.1�w�K�~���<��L�i ���� $�(�r��x���'���%.��⺗�ާ��d��WB��au�����xݼ�tu�Q�sGsGS�Q�ZPoF�k�2�W��l���,��"���Yr��v˔��N�i4�i=#Z>�����N��s��Vu��Y�yg�y�g��g��h�����twgNQ�Z�g9��,�X��WʹS)�<�E,�!�+����ۖr����>�O��DF�ԋh���8Z�.���oe������l�gq��Vu���g���oooo���=��MU�Q��ܕ�J�Z�Wk5��ƌl�2����<�3�S�1�4̡�����掣��������n��rrT����_Uu�}�W�_��_�]u�]u���_�_������_��y�{G��y���Q�q����z,��o���m�Y���3΃:%"R5#h�s AI;(7*Y�m��':Gx�df�օ��r�Rʓ���e|ݩ�s�Qk8�,�:��;�*A�i?Ϩ�<���;Ψꎳ��9�,�8�,��h�s���E�m��}"��#I��eܻ��I�jD�m"t�/F|�×M\5�\��-�����՜Y�u�Y�0]q������T���Z���ݫp�nѳi���h�se�� 4�M��'�nľ�00-�Q)y�Y^[^�zBЈ\��B����\��B���Aym��2P}���iS%���v&A�=�����6i+0��/���~�dj�H�`|f��q�\��]����l;5��jŸ��2Md��%��b�k0zd��k"�YJ�-1/�
�K��.�V ��L ATĿ,����&6�������i�^�9�3Z�d�y.Aʡ���[%a��bzi���]�R�4:�f��6kvm��6�pn�|�˫�����iK���==�z:xF��~� �K�\bab��r�0 S%�K�BsL ��ym{�ˌ��y���J��0����ο��H �nu������:������vف��W�uU�^���������,�������| ڕ�A^�Z�,R
� �r!� ��'b�p���F
�Ѵ�m>�4��cX��1�1Bg6)V�b����R�@�L/���*®H(�ɪi�ў��݃��`nѨQ�>V W2
�%f`lɸE)�C�#R�#P�B�� �5���'#Fq #��ʇ*�����ʦ��UAYXo#5C�NA�m#����&*C*�'����c���Q�.�yK���Z8��ͧe<Ӈ��;��3L��^��Q]?t�û;t�d��K����.��+IuG�ZD�4M�-��=Ϭ�=�s�s��ά��h�9�s�9�s��γ��;��<�s�>���× .错�R:���s�����2��l�EJ)�N�TNRJ�6F|�D*!�:!dvƍ -N���s��7��|�7��6�|ڍ��7��|��l�����9γ�;�\7p�E]��z�ߧ���9*>>J�����Z�]��l�1�s*1�2��gfvgFtg����Q������x�N:����⨸�U���Q��\���_��___��W��U�]_}}]]]]_�WU���U_���������r�����w�g4sE�-Qk-Qf��|�7�lڍl�5�k7�l�6�sk8�3��8�3gʏ��!<@�9��4Lfi�h�)NU��V��W͚f�Y��u2r�d�L����6{9�}G���y���ug9�qGj�'8����s���h�:��<�,�<�,�t-��:C�'F�m"t�J��K�췖��[����.r�������3/�.S�S��:�Iǜ(��S�y��瘯71U�آ��D�N2&2u�%�Ȍ�����Xl��x�m'��u���x��� ��p��������.Q~[�_cr����\d�1m���o1�I�ߧ�O�|��O�O���M
� �БNЈ�a��MC֍��jav����
�fb-����*d+�u��ÔTc�)��Q��*0�EF3�*K�+1�"�-����B�X���d$��bC=��-R�Z�*�\*�`�+tj��6wtn�������n�ۇ-���y���`ܠ�/(LO��b�Z �`���r�#64�hŻ�Q�
b5���؍X�`8]�/�v�ynZ��_������� _���x������mF�꾾���$�������,��U�U��
u"Ld@)�4��� B)��)��)Eq�q�b�s�)��)G�*I4��<"ҝH��>*��������*%,�j�K��;�n�X�m��[�1ll٫s��܈��F�|^~�_�H��/��/CQ qq��TBܓ��R�mW ��T-*�b���
�P�F1��QI�#EjI07�� �-ԕ�*�o�5z�5v�{��'��g�:��3L��{.�r��oKp����[��[���J�]G��ѴW�=@p�>��<�3��9��9���8����l�9���9��ꎬ�9���V��Yn~��o.YsL�2���Qw.h�T��l�a½r���(��&�� ���N���H��y�g�q����m�f�l��m�f�oFٽf�o�l��8W���
4�L�����2�����n��ӻ���nJ����NMU��YF6c��9�cc+c,e��Ό��3�S�q� 35qT\W�\|uGQqqr6U��R�J����뮫꯯���������������������������������������2�R�4iF����+Y��r��ٮkf�����k�,�5�Z5�l�6�Yk-e�ꎳ�����A� CМ:x�sg 3�gu�gVwGTv�!�r˶]�헴�3-�r�zK�/�X|�f��g8Ψ��s��8��Nq�gk8���gqGŝ�y�yG�}�΅�hV�2.�h�6�2U%iz^�e�-��/-�s.��/i��i�f�NҚv������vS5�f�'�g0�yZ�2Nd02Md|�5�x��İ�-p��-yEqm�����Ũ��R�u���+�\����)qrR����, �%N����i��l=lɺ{fm��n�f�^����'�zG�:��i��w�׀Lsι�&�̛�1lSv-��X�lL,Nئ��d^`X`]`)�.�,1.ʞ���ՁvQ���yK�(�J�)^SV&%I��l����Z��у@=H8T ʇ*���6V *�eEF/ ���bz�O���n�k36��nѹ1���ؒe/�)~PD�e���d��=8�`>/��/�&���FF'��0`^��T�F K�OX��`^^p���^`]��)zT/��B^)��Z��� �3޾���L����nu���T T��*��:�n�`j��������PϪs�'UP��>�fu�[�nu��Q"�5*Ԇ�V))1����2���"D�0��@"�F ���F6��HZA�`� �0�  �3���oTF����{��d���[��;﹧�m36�&dݣu���r��buC�n�uS�^��<2R�\�dc�̢��i LT�"@�P1* U)�5T�a��>��`o �c�@lV�D�5��Bs� _�e��)���B����T��Q�U�ݿs�Y��\��(���/K�\H��I�i#H��G�gmFѴmDq
��>��>�h��3��9����(�E���g6p��)ѥ��S��O��K���.�v�It[˚^���z]�i4��>�h�5#�5#h��H����%!�z����:w��ݝg�o����mF٫���5�lڊ�Rx��.�tLɖM�vO�P�Q�9G)e<������nӴ��S���������n��N��s1�s+c,gC,ec+c,e��x�q�5���?�r\UGQp�\s*�r\����1�Oð���3�8�Tq�gŜcr�O�~�'�1�DŽ� �1� o8�2���Gsg9�u8MZ X1P1PN�b�b�� � [@9����uG3��9Δ���� � ��l'a;*YS)�:)QF�(���u��e2]��dي-ʳ�'5�Z,e{,NX�[5�s[6�9g8���:Φ?�'B����:A�)�tJE�mF�zFѴy�4�K��e��E� �s-強��z^�IT��ʂ����l�ev��Z�TZ�Yg-Yk9���8�3�:��=Ϩ�ϦB��D�]F�ZE�gGѴ}��#H��I�&Ҳ��ܽ��-�Rr��WEG*�;�P�sI�b�w�[:ܐ�քv["C-�!�ȉ+�ǫ���p¹���{����<YO��U=��z��k]Z#�qp��b'2h�`m+bSf��m�nUm�+7��V��i��/o��)=o:���.���βM���Ɉ-���b{l=j���Ƙ��v"���k�`(0�
-x����"�W� �^�׆5�� ,6�[�2���z�d�l�;;f������(��B�Z�v��N*P���=����ʟl��k�k4�f�`�i��7(LcLBd���I�1?O i�� �ӗ�i}���6#&;����9jQ����ՋV����
`7����vt��?L�3�����~7��2?/~��^�L�Q��ۼm] �WK�!��U�WE���]< �T5��C_ƿB�( �u!�N�=SPh\�2CP���/�����$�}$��S�$o �%�&��(��Af)�����F(Y� >�����������j%��߲m����sI�b��r�}�Y�ҳ��WwJ���G��s� ?⢈�!z!V�HW:�5\�%s��Z�af�ZY:�ڹ��ڱ�\��J��F��� :��&?;���x���=΍*|�ݔ���=Α�i���֍H��H�>���5"�&���hZ �hGn���w���wE�6�l�,Q^�Κ8P�i�YF�9Jʭ��I�t�+JҴ�J��'J��+J��#G��mEu�tmF�t=�t���ϳ�=�s�,�oF�Y�4Z�4W��T�yK(�=�S��$䜕��VK�y3&�2ɖM��M�nL�tI�Y/&�6�m�ݧww�i�k�v�ݧ����~�L���T�I���fc�Q�gc,�3̨�3�g���=��Qq\WuZ�NNNN���������ꮪ��������뮺뮪��������������������o\%伓d��d�&dܛD�&d��D�����d�$Q"�$LM���,�e,��g,پo��ٵ�sgvyG��{����΁h��-"�.�h�-���.������i:N�i:E��:U�ZN���:;NJ
� 2��2�O�~P��9[+匱f�mgY�u��Y�u9��G�������S�h�-��F�Hԍ�R5�h�6��h�8����e�Swa{�z���i�6�6��G4\֙���%�*eLb��k�\���RB�<S�ӡODN�z"r��t�N'�ʴ�(=ʞж�{P�ՃU�ej���V̛�mٷ��Y�����fӇ�)z������aq�ÏS�v�=��� Y���v-‹U�`h��9�Mc �PJ�,R�ׁ��%t ����)tKRWrR� �ׁx�����```�T�@�J��s9Z�y��۴n��̝3Y��q%���X�S�H�n�g�x�蟷�|5P�K9�L�m4�6��nѣib`b݊{0!�%'N���$�d���i�D�K�f��]b�Ƙ����)�zP�)~W�� Ҙ�����׹)u����M��[.��F��W������ z뭏]u����8�J���ꪫf!)���UV�6���������>���qc�� �T:b�*�(�J�
�%�E�@>�F��y��r���̀@��ت d-Pj����X&�de�0p�k(�P��J�-�P G�}��:�(���Zsos�s�m'o8enѼ�ڷy�\y� ���t@uKϽ �q������ T�R �ıX�`%LCS�C���b�2 ARb��X��a¶J�2�1�mbD����J�!]D�7~'���;3�Pd�)�9���~y�F�t{GѴgQ4JC��:A�t��>���?�h�<����l��TZ�g _+�|��R�yN�9K(�K)e�� �kF�iFѩF�}H�4�'JҴ�KѩF��m�- A�?��=���Ӫ:�����N��FٮX��(��G4�L�'�2��1�U��U�fJ�6Eș!d+!�;"dL�ؤ�ݹ�dM��Fѷw��v޷���ٞ����޵�
���57Eqqq���j�]�fY�e�юe8���2z���x�*�����n*�����UI�U}UW��W�]]U_U}U�W�w�]u�]uW�_�������������#R-"��%!��O(<F|�D<��(�d+!�"���Y+$�'$���Y.rt������Q��9[+�c,Nm�f��gY�sG4u1ݞY�}H �V��΋�R%#Z5��zM$�E$iE#�5#R>���5"��6��h�KJJ9�i�e�9Jr��l�Ek+���쳖���Y�gv{9�{G�{�N�h ��Z��z&�:-"�֍��6��[��3v���rη!7�ڼ�biMN�1�E�\^,/qp����==��-9��):�CJm&�)���)�X ��43��)�v�ֻBcM�5��'6�����Ѿܢߘ�5�U����:L{x���F�!�C�v�9�� �n.�q���Ƃ�7Z
-d%�q��+��C% ��^����s���� B��ZK\\+�pG.�� ؅�-Y�el(����ݫbv��-��s\�ٮeZ�
�Sꝑ�T��S���o���$QJVM̲nc��g{Q�b4c�3��n�u��}'i�xv�I���9| �����#FW(�Z�g/(�Z�e.�jɬ�u��l˜W�w��_��wׁҿ�����P���������]~!u����]`������q�S���i�+�:0���e�^^���������A�uAMT�ª�V�X�ڰƳVUN�?�yY�#�p��Z�EL�E�&|Zzw�O7parw�MD+�ȷ�朕5�M�y��n��(��h��=��s��1�|���-F�-E�#�P�^R�(d�Ld"�Y�i3�D�)̄��
f3��ڡi]�.Gq���� � ��Czw��n� NM�.��}�����蔉�R��R�H6�g�}G��{GY�sGY���6���l���)e��},��6��U��4]�tkE�t[F�ZF�mG��}"�4�#I��'I�zFѴ]�:C�-
�s��=���ì��TqF٭2�Up��K(�P�vN�nrNGp��r#�'Y � � � �DF�� -��A�m BЭC�KD�)D�wwww�����ܙ�����~��APTW��ǫ�Z�\�Y��f4c��S���2�TE����q�q\WE�P���U�����U����W�]uU�W�_U_}u�]u�]w�_�u�����u�wu���u��R&������t��h4�H6��Qe�Gȯ�(�C����2@�S��E����D�̙���f����+YZ�k��j�l����=���?�BдKD�mGҴ�'I��#H���GѩF�t]�4KE�]�tMB|�k��'dܟ9�e*eK*�W��,Y���-Y�s��y�{�Z��R����h�-���6�`��*�̮}��N���Zݓq�f-�Z-h��s3�S% e.�S^��Z�u���T��zi954 ��S �jR����( �Y\�9�#5��Y�f��{P0ڰj�ًe���ZݣpG7k3�M,��i<Ӂx����� �r�r��������vӗ۱nE�� ���4�g S�Ô�)MzZ���%i�z:�+Q�����[��'��.'�x�/0D�6S���Z�j�YZ�1l|ٓe��L|�&c3Y�fm;I���A cT8U�y�Aʠ�Pj�^���D��B�B�T��f�'N�y���3b��)��Z-h�ymy]rR|�ȩ���$�%��H����/�ӈ�K�@I�0�>`��yS%9�2P#�/�=bad��b��������������(������˙���]u������H��UUUuT�\"B�z��S�su@%��U]u�~{�8�:�l�Ωu�@�u�cz�u�2~�=D��B�9B�C����X5VLG&1�)�r� �a��5+!� U��1�`3#D ���)����:��w99������5��p3���jGqK�:���/,z�OĠ ��V�6R�Hs�N�eK��_T6T��c &A����Y�# �� ���8U�����D��у p���Hv���߉�����܆���޻�zF�tWP�D�*B�@�3�s���3�:���,���Q_+�l�E<���iE ����=�h����-��-�R&����.�h�5#h��H�F��i:N�H���R#�Z����{G�흸s�gZͳ\�E�*QS*QE†O�}(�D�#�F���C�.2CjPhYh���}�Q�����h:��hz����-���n9]n[�][�����OҍGAPpp�\W����z�e�fTc��9�e8�X�1Q�Qq�\UC���4�'']]}W�]uu�}UW�_U}W�}_]u�]u�W��������u�w��]w^��h����Z�����Q�����}G�g�ʒ��4��d���"Y"�H�FJ�d��'f�l�e9��W�Śٽ��g8Χ;���ϩ@�-B��D�]J��&�-#H�}FѩE�tMD�4=E�)E�tJEѴm
�$�'٥�h�e[*�l�9�kF�Z���9�,��l�����Aд*C��D�F�k&�D��#]Y��s;1 �6�q��ҙ���_a�:�U]K�%�� ��' ���4�d�`b��)�VD�4Ȗ�dIg�%3ْ�SR[[jKk�&7����ܟ5�i71Fnr����)�K�d]�!Ә�ޜc���s<�\mM���3�<�Mf졥�����Wk�r�����pUMq<$S�N ��ҳ�/f/�h�z�h>km��m���܀�nBo�!�s���������Ԫ�O��n�r;&��Z�ޅ��F�S"�R��s�q�v3��ю�rѻ@٥4 W��u�ׇi��'Rht�I���9| �ϱ3c���Q��(�^Q���͎�jŬ���¿�ϯ�������_���^(��_���{������� ������>�����%UQ"��+�� �!;N�;O���7���F�bP��mJ�"*�p�a�#�fAL�̂���Lũ�bUj���� ܂Ts@'�<"��_�@���]����8B�!��6�L�y�UTiV�A�p��8Mwt��<Kz�%?�I~��
)I&L 2<J!!3�EV��F3l2L��P2�`��e�ʹ�$�qM��>�e� ��#9�ˢUMD��]DqC�� Bд �4
=�s�=Ψ��h�,�g7Ͳ�W��UʔS���!�GqFѴ]E�tMC�[D�4]�iEѴmѭ��#H��&�tmDq
�i A�s�����<��9�3�ڍ����Up�E,��C'Q:�tIp�dw�D�N��SF�l���>ϳ��>ϳ�����?�� �t B�+D���m���+������z���[��Q�� M�qqqq\|z�V�W����y�e��9��V3�X�Y<<7 ������Qqp�񷓓�������������������뮺몯�뮿������������]�4M B�i�t
@������>�h��s��>��=�l�=t� & �,�d[#YrM���d���,����e{,Y�Y�6qe�:��=��>�4 Bд9�t]'I�-'H�4zGѴmE�t]D�4MD�:D�MD�-EѴkG�|��R��U�����f�o�l��l�γ��=���@�-AЩд+C�IѴl-U�3�am�vv��6��� 4��Y�3
�,^���+�B�h6'!����`3
J����!M�~T�S��&[ ��5�2Nf�i3V B�YZ�f-� fm�L�`�f�O;y�9柞k n9P��ڛ�I����L
����s@qh��C#KJ\`�zZ�2W$.�=8 $�d�5)4��ˋ�L,�Ւk# $�A�=�6kZCE�'k+P�lŴ͙6 �&o3i��ͧ�v����s�p*��ciH7��UF�6W+��4P�D�U(�V���0.\�߃ �ݻ�`��sKh��5.K_�-�z����PS@⚆��94%���оz���[ ^`�-J^�%L���؃ R�/s��.���u���'��������Y���]~�_����3��������]W��]�X2��]s�}a~�r���N8���돺�Њv�z���yDjj�Z�
U�
�@�(- �#�Fj��nd��72�9X�`p�*�uK� cCHY�e;�1P�B��O6q�*�q�;��ݍ��uUT���>��y�.�t.� �= �i��uB�mJ�3@e]���e[�iQ "
 " ����nf��tdF!��V*�`�s#XƑ(�eE�T�w����q����}�4� ��}G�����gtw�Qˇ�q��z7ͲÅ|�e|�EL���>���-"h�&�h�%!ht��R��ht�Hz��-���=��F��i6�I3�R�Z�G�{G���g�w��6Z�z5�\�����W*Q��~O�m(�D�H�Kdj����
?��@���>ϳ�>��@�4 A�Aд=�4M�mE�]��*��ˮ�7-�{Qo�5�Q��7 ����Q�T����z�U+���vcf4c��9�e8��N �P���P�T\\<7C����2�ꮺ��ꮺ�����뫮�������뮺��ﯫ��������������ﻫ��Fѭ�tKD�4=��A�?� @�3��>ϳ�=���?ϳ�?ϭs�J0��$�*ɖL�m�sI�yRʖW�����m9j�3�:���;��<ϴ A�+B�[I�t�&�4�#G��C�JD�=C�)
Щ�m
�t;C�=�)�m��mt��"�U��U����m��f�TZ�Y͝��y���g�}���h:�΋d{zr�N?���S s\��γ�u����B�-��+��5�'���' iԚ''�Z>�>R|�):W%%�R�eq�!��$���l�������%6��[b[k��;y��9J{��?9Rz�==d+r����WV<��w3�E��4:�OgL��N0 +�\ �qhg[KC"kɡ�=��!��# �HLi��������̀Ι��mH-�lCmm�M��&�1{��=�K��&OvL�ޑ�܏��.GUj�W���#Q��E��N��D�3���;�p�f��M�l�f�����xp�e��mC��4:Nӂbm���K�k�bfƘ�����(�^Q���͎�hŴ��}u�]~�}vJ������F�s������]����Xh�������d������ɝ�.�%UQ&������!=�Az� <����@�N�~�ԏ���xH0�
!a��5TfVZ��d�U�ՉrO� �(�4"�)������㓸1�;����}�N�(�Q�9D�r�No��%;O�ާȯҒ,<$x�"TS�M����M���p��%�Pf&�d)Lb,,���1n)��4#3��O��Hۤ7gp��zCq�t @���������;��9���,��Yp�¾W��[+e��L��H�zFѴmѩD�MD�-B�+D�MF��zF�]G�4�Jҭ.��.�t�� Q�G��y���y��Z�|�5�r�W���' 3J(QB��2�Jjn�Щ
�t-
�t
?���A��?���@�-B�-A��KC�4]E�mF�r�)ʮ����ݙ�E���?��� �qqqqqZ�WJ�^�UJ�z�V�WfY��ѕ��9��,Ό�PC��pTUCp���TM��뫮������������꾫��뮪��������������������F�mE�ZD�)C��A�t@��?���?� �(�?�� A�i�tB�+:����97&�;'���9V��_+���6�y�':��;��=���>���-/K���+J�t�#GѴ]F�mD�M
��D����=F�kE�]��G�}�s�J�W*�[,No9g,�k8���γ��=�s��?� A�+D�6���N�u��ܯi��m0�# $�&JL ,X'0F)���/�J_���~P�S%,�_�E�2Sf%� ���)bR��[���� K�k� ˋ����� ҆S%8b_bId����u�9�n�*���eM��<�gM�� e�em� 4㕹�������j�ľğ)~T9S%S`\`l���V^\`p�����)�����#�E�@W�0/0&JZ���)1017b_b/2/26d]`\��P5+ ��z7�W�xM�_����o�����ҵ/�`����e֋�
��֕�؊��Y��Z������ y���쩌>�������Y`^��)zP��kJ�R���W��������Z��f�@ �8+������ȸ��K����>������s��ƮaUs\ۭε=S�T�;��o�a�]iuTQCouU��u��cX|H��eO�etC(�tcH�LF4�dH�� _�e u#(��A��̃X��A��{�o O�q \cX�\cH���0��7P�N8�Q��߀$4^ĺ�5��$�H,�����@f�̀�%�e�J�1 ` p��t#8��!�@I�4��F\ci�A �C���1�`}�m2F6�<CH��!�@'�F Q "R�iM�i"D ��Q$C� d\F1ЙB����N����ӟCl��u��H �- E�m��C�=���<���TY��B�Ѵm-�Mx����&Zf_���Rf^������w/Y{/e�Ju���=�s�����@� A�t C����!�t��蔉�h���h������ 3�̃2>����>��{�Q���g��y�g�ۇtsgY�T��n��������}���h���:�Hz蔀����orrj�U��j�V�Uj�n��Y��;clm����1Ë��\��%I��rqҩ���Z�W'''&���c��j�^�WJ�T�������������������������������������������������t��R��R�h����Q�y��:$�S�*��s�����;��;����;�3��Ah��h�=�� �n�Ѽ� �,��-
t=D�MD�t- C�� �C�= A��)?�
?���=��=����I��e�.�ܻ������^��{/e�L�-3L�'i�b�gt��6t�s���}h��hZ��h���hZ���i�FP�Է�>�B�1�ՌV�/MaY��E�S4�1hSl���-�ܼ�Lv'RԧRܧ2��KR��uyEz�ąϮ �qxƹ��
�xľ��[��)^Rx��J�Mr��b��b�͉�żx*.B?���vyL/
��+�� �5p��\��C��a��%�G�������~�ZOy��k9H��)
WX�r��aal6(�[��-�!��D6N�)Z(-�r�3+�]�F�������|5|6|5y�CV��8m;P��v�5���V끍j���,� �c�;��َ�rż���^8aK��`7aR���\'���m. �R��~�r�����ƌ)��A��]�]�������9��]���5.�������;�U}��H���u��b��JNJ��C��!B�$j!�U�F0��0�<d���ѐ��z:�_��_��_��u�:��#�ǰ1P@�X�jgm�-� mٵY[1���!3nЌ�fdv�-'�a�*W
R3T<V�2� �D=���(�1��T0��P�I��6Th����Mj+���\Gq��u�-�<P���<0=
�]MD-�h���p{S� ����Dzu���D�J��(�e6���� ��}g����y��Y�4Yt���=n�طE�-�]��&Zf��Re���������:��맙�{�Y�z��y���{���}�g� g��YJ�vY���&�L�%B�
>���=�s�<���4Z�w ��5�r�&6�����3�<���;����;�����9e��{g��g�g��}g��}�Y���h9⒲�}�3M��~��h��Z�V�U��Z�URZ�W����t�Y8�aŎq�7y]IRR�J������N�U��T�'Iǫl��k5��W��j�U'��U�_�_W��]U�__��_�U����WW���_��WWW��}_�_��Q��O��S֨:�G�}�g�{�g��g��Q�{g���z�˧4s��՝Y՝gY�ugy�l�a�]��W��_,f����s�;�����s�г��p�]����E���� Q�}���{���y�g�y9��g��wg�!̕1w.�ܽe�/Yz��e�Ze�YmԹ��K���it����� �8nugyݞY�{���g��T��*4:h '�}S�(U>����9s_�M�<-�6
m%j��V���˛.h#2/1u�k!9�k�L DU����K\��/T�)hD.J\�qmxA�J\�rR��\��`\` &�Tʒ����ԧ�����+��j��B7�h�k+��c��� ��Z�'�x��?@��i�k0%�Y<�sPnh���I��P�[O��ՠ�Z`dʼn~P��2VR��9KҾ��� ����d��ĸ�&)k���Jx�jB�I.J\�ymy��mՇ �`l�=����~߉@3� ���j��f�el���lՋP;3L`�ymx�%�J_f lL i�}�Nb`clL A��y~����X:���e/0b�-h֤.qrJ�g\[^����9ym}/.0s�8?���?��������`U��]U]ͮk�_�]}U`w �u]U]W]t�<ꫯ����% �F��*��Xl�°5�(���!�@��k��$�ѵ�i-b��cX„c8��2�jƱ��pb
HLaY� �S"���!�T��� �[7��f�'5`�Z)fab�L �\[Z ���̓���D����0vT4X��n�(���!�a�J�p� U�T9�!U6T�
��UlU�*�2K �A&�OBe���6�JR��/��d~'�Q#�e�.�q� =��=�Fݺ��Z�լ�Y�b��tZDϔ��Vt���������8�2,�M��\�ޗe�K�^G�^D�JD�I�l�:[����{G��yG��wG��y���w���y�g�{��J
� �>�E�i�+D�E�L�"td�%e&�-O(��3�8|ލ��s|֋X��W���}�2FG�[r�cv��I�H/�Y��y�g���Y��8w���y�Q����t����D̛d��9C4ݝ�����V�Uj�^��9&�U:�e��ҺY�ٕ�fY�efs�(Urrq������L�U���\��|t����Y����t������:������������������������������������������O�~NɔL�^Rhr��=�3��;���;���3�;���;�3��7���1�]�����r6F�SBu4*YW+ek,Lm�8m�� ����<��$���-�e�&���:2��%%
'dܨ����{g��w�gy�u��wGy�w��ty�g��}2$�S�!�JBд*D�H�+K����9s.e�.e��2��轥����t��Z&�h�-�|��>D}�wH�6p��j*[�f���yښ���v�b�7��8��ƙ["C'��b]K���p�v�`[K�����ή����^00qp���:��f�D��F���5��*
�� Ћ���FP�!&ʅU���P���<*9أobm9B#x���Z�S@��v����C� 
��2��y-0l��Gr��v�� ܣ�/�@��O I�- k�\����|���eq+��,hb9|5~� �Z����8{x6������m�r�v��iׇ�����^/�Q�.Q���k.�j�b7c3��x�{��)�ن�5����n�7]K�e����\6]�/�W}]�]]��[�������w����R�����������W�������� {#�%N+ J�X!,bb*��T;U<C��!~>1�s�:��G�;��"�!S� ��T( ϼ�X}�!�d�*X<$�؛�pRs�Nk�X��1JX��_b!�h�Xd���6D�v̢����)P+(1P!D�b"�Kcj�j��w%H/ɪ�N�t���N�t��Z���P�T���\$hj4�L�xJ0�RTPWQ:�UƮۥ�f�k~rt��G��#��[m�M�ȴ�H��Hz��ht��� �v]˹r��s-�]%�zK��>�h���V��g�Q�g�{g��wg�v��w�Q�u���w�g
* VJ�fh���4��E$i:N�H����t��g�J�I��C\���|�ͳ\��_+�II;'Y;$�F��I��ܦ����y�g�y�Q��Y���v��wgvw���ZPQRG�E���d���rvO��iN���O�Z�U��ҽ^�T⪓U��z�],�f9��Ne�fY�fY��RrT||||���j�MU��Q�z��5��^�UR\��'��U}}�����_W��_����_W��������������_�����d�'Q6��K�TI�9##�� MN��:����l�s�ꎳ��;����;����cǍ�)�Np��2fL��2��,�1c5�s[5�k,d�$K$5*4<j�hZ���&���M$h���Q򒢒^K�MZ���Yݜ��Q��Y�ugy�ugy�w�Y�yg� �: !Z�֍�� Ҵ�.r�[˖[��\�ގ����&��hz��h���>3~'�~'�O�p Gsr�3�l����[1kMV�Bb�� VI�����ץ.�ԕ���K�R��ĥ� @�Z����r�������@�NIN;N-���"3Z�,�3Kh��+V K�ej��p�9����N(T��L/��(V�5 2{w�Ɩݺ֭��5^�1���[�n��5�LK�NYY<Ŀ)bR��1�.JQ�*PقR�����1��� ���4�t��zB�kR��-�/�.�A``�Ն��ڰ81D1�@��j� �>4QE�'�x G�l����1l�ݓp�����k�^����zP>��JhĿ(�S����1)}������k͘$������*z����ԕ�&W%-4Z��R���u����0p�_��X��K�����XL�U]~�W]�5��η:���;�7뮺뮨��0��]W�W�È�0�1��I���ʰ�a��eX,M1�`p��Pl�����9� 1�#�m3D2��Fp�膑Ʉ�Ht�.�y\X#x �8�\����9Z�Ѭ獙�Oh���Y�2Nf��k4�kZ�� _���Dj�)R�Hs�A±��.��� L� ���\ꃕ@jV*��8V�a��UA��!�����VH ���0B7T *���u �!2������\&�EO8��ry�훧6d��2l�ٛtJC��=B��C�=дOh��(�@�t��z[�#R6��h��:|��yg�w���w�Y��y�t��<Tt��$Q##�A��4M�tkF�kG�4�I�MC�=����*Bд��+>MPC|�9%�I�c+:QRQ��1�d9�i��
ϝ<�3��;���;����Ü�⛤�K"���E��"�&�Y2ə6��O�������B�V�Uj�N*���j�v�Y��Y�e�ٞg��Y� ��>Gd��*;����>I�j�U'''GQꛬ�k)^��R�NN;�����������������������������������������������}re��D��D|�Dj"dK"Q�-�-�[�g6ugY�sGY�u�gTu��Y�� !Z.���n��q1��4l�M�c���F��Ǚ�tA�-Bq
��=C�M#H�)"��m�4]���$�G�6F�cr�si�3��l�:���9γ��;����d A�MD�]�ۥ�^��%:ugYݞ��д;C�= �-��;D�2C���"��Fzw���D� �N;�,ys��������-[�#���){��L]^<[K��u����t�� I�'
)�D# f���p[Ny800b�Mdaf>fə%��&4��9��J �����)M@F��"��E�u$e�~��N(tRuK�{��S��T������9�5%4y� ���4�xƘ�����4�Y^��As�D���{�B�ד¢�ք�}��u�� Kmh]_:�¾׆V(�ų8U�"Yf1�##%�Ce���^=o^� �n�8m�[��<oM�Syׄ���%/��-��' �8�lǔm-J5��n�f���r����S�
�s+U���hl�ţ���n���e���������뾼���_�]λ�������}_�u�X�몯���:������0X��0F�arJTҰ���aM],
kVK'V�7X�1�5T+�k ��/CQ �q��HL� �"�y���1q֮�V��v�qU�I�s��};6�F�Ԉ��DFv̎�v���Т��A�|���-�T�HJ`�WRee�8�Ԕb�[�lL�&�"��cq]��ڱ��`�\�����GU2�4o@?�� ��O����h_�����֔E�ȳ�؊�nFom�-�n����HZ�Hv�HZǴ{�gy�gY�sE���2��3 L��hz�����yGTsg9���Or-��dL�d\љ�4+C�-D�ME�m���H�tKD��*B�AЧB�,���=����s�9�3�����,�9�tȺ.���wGy�w��Y�u��P|�� !8A� �rC�D�D�.E��G�FJ�VK�m�r�冯�oo�-E��l�Y�qV�U��j�fc��̳,�̳<�3�<gc<g����Q''�RTwG�2�KURrrqԜz��5��V�U���䮿������������������������������������������AA�u�r^K�NH�>FȴD�tC�B�(����@������g�u�g9�gs��&���Zt��F�mMZ��Ֆ��q��w����d
�i�t-
��MH��GѴm�)D�)C�- ,�L��D*!d,���CsF歎3��9���:���s�D�3��+�S�͍�g�s��Vy�Q�~� Bдд=�4L#����
OD�����3i�i3i���p�;V�6Z��K���9�:4Ob͊cmZ��J����OFO�9��
j�
�)�����J�L�!�{0Y�Od��k0��=�f�Z���SU�BI����\�)@c�!�&p�S���ǜ
<��<�*�z�L ���3[l�V����q3Od YK��HOJԅ�+R�r�>4�d�A-H]�JZ��t���-����r��� �Y&�Oh ��Nh�����d����vd��%��:�O��/;п;мמlճ&�qnͼ�ٷ�e��^[\f�[�^`$�D��ȫ�{��J 2�Kr�؃3��`[^ז�8����/K*���Ҟ���ԅ�ʹ)s��k���������|V�뮿s���:����빩sZ��뮿�(�꺪���C}U�]u@��R��(5�p�c�j�U ��f�n�J��X U���a��-�C�V
��7X�`p�+��6�P���H� nz7�y��)u��(W_��� ����am�^ݛP�f��h��#-iLֳ
�d~g�( O�����WP�K�U�5*ԍ Y'`X�8��01 �b3�(�93��&�Pd e1�}P�S%A��q�k P�)�p�� W�b�Ϩp�P�GT�N(u}U�svm�fM“vM���Qݞ����h����Q�g�t����湭�)�:)�K)Y5�FH�M�菑��D,����DK"Q
ȭ��Ϛ��Z�HZ��Z�h�.�����8Y��;��t дA�4*?x�<���;Ψ�Ì�7|�����F�4i�f�Jx��2-�\"dJ�� d ��r� ��2@�6B� �D�.F�>I��C��m�]<t����������R�^��5V�U��j�f�1��2���3�<�3�����3��3�y��9999*>:��eZ�U*�98�>JT�f�UJ�Z�V�U��__W����W��}��U���W�__��]u�U����W���W�m��;�t\�AY�b�-r-�A�A��������}���=ǶB�Y�n��[��},��2�b��sV������:���<�3��V����Hz�����c鐦FѴ[E�4=C�-
��A� ���$7�VB�A�A�Eȹr5r.L���4ie�eF�|�F��Vq�g6w��v{g��t-A�t+@p�÷l\~�_��y������gg���s�u��56��(�-J$�!��Bb�</'(M �xXO��D���#�hHgZW1`(20��h̆�vdF{2+=��̆��c�o�پ�Yf�1]��\�����3�<�xF�<wp`s�~�pZv�Rh[ mi���� ������
�=�TaR�b{�����R�hE���i���b~�#WN�#S�hSZ�P�+F+6 �Vs��l�ft�TiM W����a2�(��3*����×��W��g�n��`���%7ۄ�������i�/Kr��v� ��'V��m-J5����7c3��\7_L���Յ�8����:��U���v�r�__�q�]�_��뾿����u�]�]wU�����������U]��u_��)����R,��"�)�Ƥ0�SH�a�Vj�PE*�J�:�X��XC+�I�u� GAPy* ��x3��!��@��u��N��/\�/����q��ڏ��_d�!u��\gme�YQ:�}Ce#�3)!��$U6�����Թ
RA�� ��(����a���8d�dF9�UU� fM�����bԆ�Y�&G<b�l���ݷ�n���������-�j:mM����\om�3���TY�z6�Ś��Χ=���;Ψ��3w�h֊�_*<R�4Qɮ��U����6B�Y�9
��
��� h:��R���Z�g��Zt��_,f�mf�o���q�Yk,�����F���y��y�g�w��^��Z�O�f�B�O2>C�y!���������c� Y�?�,�d$4+4:lrụZ*YV��^�l�6޷�������D��v�U��j�]���s,�3�,�2���4��3��4�x��:3zNNNNJ����eu%*���9.>=[e��W��z�]���������������꯯�������������������������h�E��Ez+QW*�m1�����)!� P���?��>�����=�c���:�{�r rA��F� ��O�~QjT��U��XjY�S��6u�Y�qF��,�ͳ{7��Z�,�7�j6ͨ�F�W���;��t- B�@�)@� ?��
��a� �D "dL��2E�r[sL�4��b�����ݱk8��γ�;����˦�mf�Y�9k-Y�s�C��G�xj�O+yK��9wsY~v��;i� �j���ć)~S��9�y�a=8INCM*�#.{NE0L )�z���,�,���2021/�;d_d����� s$�HL�Y��Of��=��E�R��h ���I��\���j@��N�uC�:��]}�7.׶d�ի�Ʋ�&݃c�K��u������`�����S���d��䅭S��͖���ŵ�L�;10�?d�Ț�9�$�C4�h�ә��'�Hh��� �X����@o3̉�o����_����#~:zf�6nռ��7&��z�H��0<�2P�4�Jrp`NDN%J��yS%8�2QNT�N�W �-�5^\`+0/JZ`]`��)<��h��%qMrZ���S#���}���K�����i�A�
������B4 =u�j�α�E�5T���ꃮ�4������s��T�Z��B���b��J� F)Yw���!.(�� эU��n���!V�U�Ɉ ��`4�$q�k 1�*⡼@����Ƥr�5i~'�\r� g�i�o;�6�Y�6�j��sDv�Z#�Nd�J��*� �� ԬR ��@c�2�&Bg�&p�Fp�����\��_�e �cu`�2 L@��@�f��̃ŀ��#����Yb�)���T�#� \y��<��e3I�Lɹ�����s\����h��F�,��f�O�~O��f���1c+�j*�M��Mt���U�r.D� r+B��@���?�4?p����g
TR��T��T��V��^�c,Y�m�8W�����VʹR�OQ�QC'��'Q:�=�K*�VʹS*�EAB�O(���=�=�����>��=pcǸ�cö��� �P�L��l����eL�ek+Y_+�^��=��Oo�����S��=o[�����۫�,�3�*3��;X�c[cLi��g���3�8�NNJ�����U��qܜuE�n�Y����z���q���t]E�]Ѵ[ȆC�;��0��;û.0���Z-"�.�:-"�6�0m(u�TPu�Xu�XwaݶdmFѴmѴ{G�`ua�4Xs�Xu8u�VW��E��Ej*�S*QN�YF�(ҊC(YJ��_��{c1c�v1Xnjx�C�2E�.E��!�;4lS�yS*�Qƒ����Lp�dܝ�蟔2}�l�����ӖlދNoF٭(�e|�El��(����R�VV��c���?��>���?���5����y#�#$d�%�O��b�Uʹ[+:Qp�9B��N��B�,�4�Q��eL�9�嬵Ew�MDφ7ۨ�L�~���O���r`�3���g��S� �fb���1��<+'RpVN�Ь��ഞ�x�*kԭ%J�fW�%~Q.Z�4����Fel��V�Hel�K'���d3u�ef�0� �[�E<��Tu�:ず�p/S�-�«kn�L�17��^g� �`��A���j��8 �N���b�����u��V!Y��!��f!�+d �وl�fS! �3ٺ�1�u�I�u� 5�,�L�%/�Pb��_��~߅F�R�ό���<���LM3 ]��&�<��-� ɺh/&�pMNӃc L�9F�ԣ9i��V�˩x�~�j�`4aL�\�����Z.��=v�������[|� &]�_�u�w��DO�O�?�?�?��+�2�1������V����I�ӡ(�K?YU��1�.��HcS4����DhSP9}} ���TB��ZD갣#�1�+1�!#i��$�.@����}���>N���m��sX{=�������C+G��2 ��dZ��L�DE3����@`�X*�H�x����+��!z)�"�����@�dA&��AP�2
�VbJ�1D�Ar'"
�TAf�������������p���=��ቻ�B�GZ��D c�9
��g&�O�=�c�����"dJ!d � P�C��,b�{c�!�'2,�8�|ڍh�ᣅ �4�2�r�R�vS�yO)�S)8P�c���2.G�E�l��h�D
c��4D��92bu��u\#��n�r 2��=�
]g�X��и��������BS�2���ă);'Q?'���f��if�G(� �\"8@p�d�d9ȶ����O��ιNoo[���O��Φ������j�̳1�l�3�e��g��g���2�������..9��*NJ������6Y��z�U*���������������������������������������C�(C�"NI��9BsK4���(�D���l��re�1�b��c�E�s�ӊV*�,�0��C�]�n��Z�u�8ŌxǏq����;"�"rd��'d� X���=Ǹ�r��#�j"�J"NI��9Br��L�������E4�2�2�O��P��1_5�i�6Zά�TC����_�y��c���r��,�{#��ɶO��5�E ����c� X�#Q;��k�]R��T�����v��;&�;�0jْ{ 2�L����yq6U���^�`d�)zP3�.0])vPH�]a�2�.K��a�]��Kҁ{*d�J`bYL,�d�� �I��f�� ���[E�@��� ��*�V��|���q�\��]}��;y���D[/i4�@6%00R�������<���ymj���Q�/�01Lb��+�&J̩��b_b��d��01�.1Nd&I��f��Lֳ��Z,Y�vc!�tb�`p�a�n����f��-B��02����;i晼��;v�%/��S%o*k09�HM�5 8��4�SP ������AzT�yS% �ˋ�yqx0�.�q�qx2�/0`�-< +R��)s�Đ.m?�����������Z���z���Z�OUu\�SA���[>������#u=�k���P�E(T� %+��Z�c�B�&qM�.bCQ "�!�1B4�
x���3��#8L���8�ncJƊ�B�*f�g0���
����89;Y��w\��nͰ�fM�5��L����k0.���H� � ̤�.�1��3��C(�D3�� ��!�`c�6��Ch��6Q���Ch�H7� hƱ aD�#5J� #�X�[����#8]R�H�v�R�������{m;f�#m����Z��������'F
���v��hW�_hS�^qva����qs�lchLfk9]®TʙS)�Qp��P�,��f�Np����bpa��Ǹ������6Cșr5��F?����=����;�{qr��U�W�RtP�Nqbazqw�1b�Z�I�G��1
�F���2crvNt��rnN�vJt�����:p_��0c�61X�c=��?�6B�D���߷�^sr�ݝ�z޷���Q�����P��|�'%G�����Vg��y���Qqq�\\�I�RT|||u���W��ꪯ��������ﯫ��������������������������ș ������njX��
(w���zǓ�V?��9&re�h�d̗D�ɹ7'�!f! [ ����qF�LV�yŜ[�]�E�2��╊v*N+X�b�.����`�b����>��I�Eh�D:!d* Qc�{�x����N@��d�ɳ�,�D����}�3K)YO)YK)�V�g6��H���8�b���/�-8*�)P�b�+رb�.��:�݌�0�Ǵ=�����xJ'P�:�Qv��st��
���&�Y��[l
���632�U�›4�a��yD;�}0 �)xc^����B𬾗�%ί��U�0���!%� �c;�el�)���-���N2��@�h�0R��~�hB���
ڀ|}ǁ[O��OP7p��w'�u A�֠�k� 6mq��D�V��*�Aœ�+yBE��JW*�� %�(?1�B����lAh��#9�#+fl��A3����p,�@c��X���Z��g���Q��D�*S�c=�e71���׶�iyF�����4�7Z�t�������80��k-0�R���K2���x�~�j���l�\��CU������������h������ȕ�w����=�����������]}�������3)%� T�A@����e ����(Eq��gт�6�Ts����,F� �12B
�*�.� �T� 8_|C�� h�� �f|O2�S��[l�n��`�ٻP}e��I�B�P
)@D)�!D�qHCA� X� ���;�!#�o%��L�$d�@�����$�ES���<W�� �$!T�((�H+aqH:>��tP��vvw����Ƨ��u`����[n �������8�0��s���s��/b�-P�B�
��(�+N.�05"�&�4�k��%d���2&?t}������P���`��:��;��X�c0�1��}��� N /P�������������8�0�B�´���틔,��
ب����B] �(?p2�� ����kqa����N�1��n �������B� �.b틸��ؿ��:�v0c�ǘÎ���KpG�&wm�{{qڧ:��n��oo�-F���p��q\||��ɫ�f�Yftg��y�gfuE�qqqqܜw�Q�uŪl��j�W�����u�}}___����]_����}_�����������u�U �8�8�8�8�8�ǘ�(wC�_���wqs�n��YŜZ�j��'qr����y0�Ǹ�q��e�=���hx3��}b$�5�3�v'��1Z�{�(YpU�A�:��f[
�b��� 3����}c�� T1P�C�`� w���/�� ���V:�v<���3�xǏ�!d,�9rFJ�\�졚Y�䷈n��:.P�Bŋ8�b�/ж����������(L+6�qC�������UP�^�y�Um�07d����,���E�U2Lbj��Õ-yEzJ�
��+�+��ĵ!iarB�
u�+�%.l��� �}�k�� ���Ob_b���F-S����&��������3����8��*��W����s���Ճa�f-�ڭh��kC�&*Y�Xe�`[^V`��������K�X�K^Z^���� K�'��#Ja�5�l��)��)/d�̓$�r�\ыQ��rb��d��u`lX, C���o��"�� q���ͧN����� �v�r��M�9�;5��S.J\SZ��*ji�~`م4���(�T�K, ��*d�+ˋ�^\`X^[^]�u�fR���kMV��s��@����s�����j?������_�~���H�S�����θ�y��n���� �(�������Y��D�!P��J�1���\#H�aBem � xƑ����AĀ� �@ UA��� �G� d����o4D6��C8��I�� �&*k�������h���g����|���<��9�ͦjݬ�.>�O)|8~�?
�)B��+#�e4c(ù�)T7T
�e@
�u@Ȭ7V�Pp�����*� ���Pk� �h��W�3�'�1�ePo���м6q�`��9`��wi3�4�7��E<��8O��Nɹ3%d�#���B� (�c� �D�E�菒2;�k#dW9�1PŌX���ǔ/�.P�B����k�;���� �}��P�b ��C�Ij)6�mH���ʭ�X�yK(��O��7%�*���!P���1���퐦"�Cp�9!�B� �b�T:��.й��,�*Ч�. N���.��� 8a��� �{�|?��,C��[ 6$N������9չ��O[����ҍM�Pp��q��q�z�WK5��e��tg��Tg�;G������qܜw���Ūl�W����������꾿�����������������������������4ЋB%t!P�A���e�%* �0�Az���Y���Iĉ���+�^qj���qz��',a��� ��g!�����18<�cpa��q��g!�L�9�Y.rfM���'(�+)�z+�Up��!���Ň���e4�g�>�=��q
qq*qBaV�{l]�u�����y�3�l}���1"di����Gp�����@��@�3�'"�$Y+%�7'd쟚NQ����Awp?�(=�0��_�' ��0V�������怶d�0�h��+�A�W��~���Z+�<)�-�| ��[KA���3�8����ūI1j�̘�f� i[F�ۅ��[���7 -�n$��!;��끙�(1U8{�'zž�`��فo;�Af�CP}n�0xb�0vd��8��@�]�k`��J-ux#�@�Z�����1���k���_K��� )gb�m�ѣ@J�h�2n
������,�&��1P��n�պ��<cfP����H8$��1���y�i�5��iyCVMه �a��hr��Ж�I�,�F��F�k��9Fl6)jQ��//� W�Ƌ�6�o+E���o�I_���_׃E_����E����������u����������/���뾰�uK��u�AZ�.�؜��_=B�d(S" S!���I�y'V�s��M�@�U2�3LY���+ʹ���J�� r�� ��hA� ��-�% �gft#�k�j���M�0��ny�<�L 7�\��q��� .(t+:��
�O����(���>� ��Y:�F�nb�����3N+��f3�*�k�:�մ�� @E:����!����υG�:ݙм�w%x{�a��b �ĉ�VL�e�l�D�&�.�4I�G�B�9��1� ���c�T�A�?�HtG�gD:����>���A� v0ɇ��b�1���B�,�e 4������,�eL�F�iD� J�^L��N�m2Mh�Dz"8A�����(`����XtU�J�D���D����a��끒������� �\������-�\��az����0� 5�M�����f����Q�(�D�&�Kq���+����77��Q��j)F�����>>>J�����f�Y��z�Y�g�Q�g���Qqqqqp��q���\|\\\�U����������꾮�����������������������%��'NP�,ҍ(�DLj��/�O�/���yлAw �[���,PZ�ͅ�.X\���+ sY���S��f�:q>�+&qu���Ōv=���;"Y��#%��ɹ2�y.�4I�}�YG)�K*e:)�J�4i�2}�}�K��ґ1H��0ኃ�1Pd�2�f���?� �D�.#L#ؗbl����,b���;�a������9
ȹ$Y&rVLɶN�u2]���@:ܪ��z�|�5�3I��n�������h��K4րҖ� $��\���I��詰�R���MH0Zqmpz�������>��Y�Y����k4֋ـ�h��沵��6˛4l[v�ٷj�S6���L*��IU@8+�;�'�߶���f1n�� V����sP6E�CiR�r�K`�rZ� u� ���i��������yy��K0/�[*k��4/4`������[4ٓc v��n7j݄�f�3i�L�i CujU��V����� C�JU��W�V@�eW9�z���?��ySف���s�Z� ��Wk�W�j:m�O�o0 d0������.���nT�A�yu}/K^ ��k�`]` r�J�ymk��������`v�����?�����}~�Ԯ
�����xw�}u]w�A(������Q�]�ǝ��������u��O)x��^2~%
#P4P�H"���3��fq��g ��ͱ�jb����� �`ʇ*�H9��Pov!� �(b��H � OzG�CQMi����ܰWV�y�:��<�n������vG�|A�_T�5!J$Pd�Z��*F�L��Re�A��J��ԫ ���2 �ۙ�� ke��Vz�d/���jL����B��>m�]l����������ŜW�R�*(N�2���%�"�z1�^ xa��A{ ��.�a੅K
�TXH�
Bp����XC2
��#1���WtS�,Q�C�S�K�R�K1V�k,Y�ol^�~��w��`�g�hT�J���q�N#b#� a�'B�� XX��Ac ��#0�a�E�D�*B (����W@���;@��-� �D��^&bm�؝Be �'⅊6)⭊�,X��8�b�.�����uuU��UU=;���SJ5��ᨮ>>>>K��Z�Y��k5��f����3���2�?�qp�\<U'����Qqqqq�W��u���__W_�}}W����_�W���_������������~/b�.b�,б��
�*P��'�u �&P���&bU 8�bS�
���XRjAh����
����(�G�a
�!�������5�IaV�J­�{ �� ����@�F!؋��,J�6qB�9�K�q��uB� ػ��-гB�
�*b�
N
8��T)b��}
6(X�b��ŋ�p���.����Z�-�)�>�>žG�U�\����.a'�� 6f'��b-���8��X�b|╊x�b��Ղ�Q`�n� ��85���h�������B)f ��@�d�C2}�k���h��8
���`�u�Y'��>X�b3��M�V�bو82h���ocL����L�v���v�����i�����O8,��`��y�y�T�5�`�;� �vpJ��������j��"Y�f�7��f����ZR� �S'��b{��[��l��e,�]ʾP L��-�F@�dՐ&Y�f ��� gj �m�(����0*&o8*��`x�y��y�
�j���Z���Vk1̡��� �$Sp*��b��g�4�3n�8i��Å���m.W6Z��%3xap�5Oqx͆�d��K�5�u�Eּf�� �S�Q�������_����_����^E�������_�}���?����������������8�;Ӵ����p�q�mz� ��5�O�i��iO%`Q��RLB����RB���ck�����c)�Y��c5@\F���� �L Ԃ9Cw&�w2��������;SL �����NP>8��=@������9>���}��F��AF�x� �a��TB�oF��� (��H�1���F��, ��pb�X�5�6� X[D�Z@ 5-^��8 �[� ���)�n�*�mBÂ�
n
4'НBe T$P�B>"� 8�h2�c� 
����R�6�2�# �m���Sb/b��ӂ�-X�Bâ�
x���*b���(⍊v*ح�,��,X����8�� `���S�l{��a�U�I�C�MļI��j���gt1�h/�^p.�Y���F��CP-��4�͸E� ��F"�⣂�*P�B��u ����'b~&З��&؝b}�6)ةB�)X�b��ŋ6.X��ؿ��u��nS��u�N[��(�j5�Q�qO������j�f�Y��k5��Y��Y�g��Te�j�GQqqqp�UGQT||\\\5 �گ�����������������������������������������wc�_�{h\�j���UpS�G�G�NpM�2��q2q2���Jĺ�'qGlR�T�V�x� !M��x T ��%���!�H�
��� �]��a��+qa�k 8�8�be����(�*N,N=Ǹ��,a���_��hZ�jŬX�|U�J�F��Q�J�qC1F�[�_�^qjqo1b Ҡ3� jB>��+�
m��p��/��p�a� �L"Lg�lJ�6��O��g'@P�����zv�UPy�?U�U��� ��K�ejPf��m��`�fabn���R^���zZ���k� �k�E�k��җ�uj2���e��z2Һz"h�jRi����4�h�ֳ �ֳBf���ֈ�S���5�'�4��
� J#P�2( �H�T*P3S$ �9Nnm/���^v����5)�^к�s@Fi��٧����<f��%.1+�.J#�-�)�HZ����PZ��%�IZN\��!����פ05`��K �!2!�@ruK�N�t �V��G�vGT:0ݫu��7.�h�sfm�,�X��MdMd�� �k yS%8`��Z��)i�qp9'��(�HZV��(�I\Z��`$�P !�5 8���(Fi�ϙ�h,�Of��k0������s����EBO����~4�t���:��5��P\ҋ[�pu�U@H��'�⪀ *�ʪJ�(!��������$a��GH9�U*�b��XU��ְ81EVH���%� f�o��% ��b�*V)� `?R�H�J� lR�@��4�뮣�������4@h��m��F6��Fj��������~Pe+�V�*U(�R�\� ����0�rd�d,5a��ʃ�@iT+�6�Y*�O*�b�ʠ5C�@ʨ5T��ʠd�f�Fp�+R�(�"�v������w-�e��[�۰j\l]˶]�2�^˹z��w.QmĪI��E�kI��9~�)2�)3.>��iZN���:N�I:F�I��Z>����/+8Uʶj��^\��,�e�.Qw.��/eNjmK�w.Q{/Y{/e��E�.Qn��+@�����̅h�.�:E���iz^���z^��RV��iT�I6��iT���Ʈ�+QZ��b�sl�7���e��e�-gk �����p\ �PT7���)e,����юc����ո��ҪW��vc9�fY�cK5z�ɨ��*3�<΢v N�QJ*�꾿��������������������������������������6fqGY�9f��|�6�s\�Ez+QS*�X��� d�I�t�H��J��J��J�t�+JҴ�.˭K�_��~���� �n̊�&ҭ.˖]˹z��{L��]˙v�o����eܹ�(��2���[��!*8S���y� 7F�mFѴ{H��#H�4�H�-#I�t��ؽi�f�����K���:D��iv\˴]˹{.�{/Yv˶]�� @�HZ�,�>Y��s+��72���Kj�Rci�5n԰ջB���k�k�yEv��v��v��v����8~�h���4PMy8KM� kֲ'2d̮�ٖl�Zm �S"�5 H�T� *d��[H�1N���(6Q�VQJ
�)A9�]"n���&Sj)�ڊ��5+4�Zm
�)�Q�̪�ٕ���T�C_�yl+�5ίֺ�%'��1>e�r��
K�x��u����Jte��`T���,�gL]�1v�2wt���\p�k�d�y����s4탆�2�S ��1[0݃����f(n�e���O��C���8[K�R�I��`�K0�hv��8ɋ��Y앲٫g���:�������*W��]�]VZ����������������_�����}w_]w_�\�x�F�X*� �%*$�Bj��J�V#���J���mՋj٫ �g!6FД��55N��RTS�*)ԕ�j�cz����-�"�|�3V�F�ج�vƭ��e�ز��&��^@_�<-!)��Ib Pj���J�\��*F `>�N1nb,43�41$�j���TPUj�
�F��Q��QEV��X��]POP����|��u��8S�*����o�o�cF��D���TZϛ%4.��.���J�i*Ҵ�Q�m�4=B�*C��Y��&�t�&�4�#H���-��ʮ�2�U��l���fiZV���v���^[��$����{g�qE����Jd]˔���t��iZN��6�h�"h���蓢>�2^�IV�IZV��iZM%ZV��҂��K*�Z��[*:T��U��U����X��meH�p��`�6����ﷃ������.���8.
������S,��1̬Ɩk5N+�ҺV��Uk,�1�k-f����ɨʆY��ўe��)��������������������������������������������'ǔ;�L�����2�W��W*�U��T��T���r�TʙY��T&�4���N���6���ZV����� �- C��=t]Gn�i:N��iz^[���@|���g{G�y�L�ܷ��]%�z]%iZM�i4� ]ҦS��S�tTnZl��FѴ}F�}"�4�&�-�&�N �Z �ht�:%"��$RE%ZU�ZV��������-Y�`1��0�X T_R����]���Tݤ�y����jڰk�Nd�W��1�Vb������ODOV�����I�I�&n0�&�N-����� l�,��I̖�Nf!3Nf�C �Ŀ*�K�B%����SY�4T9TJ�1�"3�A�����|>Q�:��n��� 4�]M8Rj��7f�.7fٓV B���VJ]` ��K�ւ�jB�+��erB����.�!l�RAr*�K�S@�MFL����Z����&Q�g �2�6�d�T��R��������o5��`�ݤӷh�[.fݚ{052Oe3$�@i`]`������+� ��^\\�j:�!S��ԕ�C�I\�9�3
k��I����)�4�A�$�N3Of�^��������"���_�.�ֺ������jZ֪������@��]u���/���U��d&P���`j3d4 ̀H ��%�:T EA����*�8X�Xl�
�*�* �°�D�j��K�DߑD��E=Ө2P~�簵~ڪ�,��^ݛP����['�
�Ә��./
+ˌ�/0� `m �!f�L"�!Bd���"�*�1��B9��@p�le �pf�a,�8�<2s �b��`H�9� �<CH�� �
���B�iB� T�P^��\z���~��3�n2l��Y��P�k3��E�,��Z���6Gl��iT����H�-�h�!R!h9���˥�������E� ���l��(����S�yN�,њ��:M��ZM%iv���|��sgY�yg�{���e��ͨ�9k=n��+J��I��E�t]C�=Bг��(���-Qk9n2,ȯ�>j�W*YW*�NʙNʙR��Tp��징2��r�����B=�\��a����s�<�ݧww�A�P\ C�p�����p��\W�j����t��U��rR��f9���Z�e,�y�Q����gFy��8*
Spj����������������������������������������������:��#���(zĠīE\�EJ*e<������*QO)�:)e*)�R�yO+�;l����,圳�7;ϛ �6�H6�:&�H�-#L�i:N�h�,��6���Y�Y�yG�wGtsG~��U%iZN���N�IM�)6�����e,���������� d7�\-<Y�͖l���6@�4 C�MD�4f�F���Ϟ>Y�9��圵e�T����X8��x`y�ħ��N�����ܔ�hHh�B+]�����:�,/�E�nQjWS��
��9��қI�1��"9���y�k2k&��,m�I�̤��D�* l �]��E�3���aelʼn*AZG$UZ�b�"g&&��<�-�t�]�-̋]������"�g� ���w� �^$/q��—����m.���e�����x��u�2דC�B�C���Z{"�B�,�V�D<*!��&񘽺d��d��b�8��tήc6�q���e5�5�ٍY소�cfS� �k�V0Kl,5������9[��Cu���s$�\0f��I��s��Ld��2VΙ���_����S�������]�_��k���������]u�W_]!]U�w��T�0�"�gR�R��X�d� �C)����V!�q`��eb"�T"+�b"�P�' �$� �5�X��^��w��~)��f��ȼ�I�rL����jGf��튖"�
��`+0���-�<�����5�� q���hJ0�F��
���P�e���Y��e9��f�d+��F*�r �3�1H��AL�IZ�S��1��=�n;n�������:f+����KhZ��Z��o�e���Q���T;E�tM�4= ���;�����g,Ѿo��*e<����R�������H�'I��&�t�'I�g�-e�8�3�9�������-e�ލ��Ͳ����Y�dKF�]D�KD��Bг����;���9g,圬�S)�R��O*QO)�<����Rt��r����S�l# b�+���M��qg9�u��v�������p�<<)�88.+����n..>>:�����V��jܒ�N�Urj�Wf9�c���e,�y�Q� �e�ўgġOAJu?U}������_��_�_U�_�]��WW��_�������U�G��u�g9�Z�����
��)5�K)e,��f���,�E,�e+)e,����R�vTnm�Q�o��:���Z �v���&��hTt��mf�of��m���Y�Y�y��Tu��Z��Y�Tx��M$iF��iF�I�%'
9G)QF�6Q�YQ��k�f�Y��:γ�� �΅hz�h���Q҃\�7�|���پY�9f�BT�R�V�j���"x
����TW5������R�F ƭYJ``���T�f0.JUNBM�a@0��Q�W&��..��ľ���c"�$�N�L�
V�, �0/Jw*d�����k�'�Bf��DcI�A��$*Y����2�s
�#~jU����Q�cm��횶��{��Æ��>b^`ؽ-qEyq�//-�(/GZ�j"҂��S�SJɨ�d�d�T���u��O%/��)���H����3Od�g.D3�2!�@��@���U��ם}��P�]�fs5��v�2���{��4�i��3Od��s@$���:^\`�����K�l ��ֱOGZh�<)j:�E�+� ��a��Q9�@0�J ��Y�Nf��o@���~����EBG�_���]��u���u�qAk^��ʭη:�<��q�]u��QA_��������\*� � ��D�C8�lcHã���4F�/��� f3�7V*R��XB��P�dB�q �U~�6�ޑ���(�X����:��{�ڶu����n��E�ÌA٘%8^��)S%;��(5*ԇjV@�BT#(�vD3�&�4�l�X�~1�`:�D � !3�i0�3��#(r�����jf a(d4�%�Dcx����k Yr #( �H�p���-�^�۶���Z��.iF �JԵE�ލ�ލsi��l�,QY��h��2�r�s鐴�;���;�����eGJyO)�K(�K)�z�"�)'I�)Ct�ӇM�{7ͳ|��r͜Q͜�Vu���햨���ٶj����m�٭Tr�����[��̇�8|��w�Y��e�|�*�S��R��R�tR��R��R�4h�B�
��jE�VdA`Vfmf�Y�6Z�l�9���;�w-����P� �����8.+����������999-e+�j�U���5V��h�1�R�e,�y�Q�2�Tg�я �T)���������������������������������뮿�������(�:�h��2�Y�9���*1~!G�i��؎ԟ�'4��Q�3L�(٥r�Q�9M���Y��9՜�Y�z�t,��wJ��,�D�(�F���5�l��ŚѶmf�Z��<��:��9�(���z,�ٶm�f��dz!Ώ�ZF���=�T��4�9G(�6湮m9͜�6s�g��'B���.�'d��e,���ͬ�7͜5ͳz7�͖�]E(�R�IN�RS3���<%T3��ݜ3ۘ��n#6����C5�F"��E���E����"s���၊{"T�0#���| ŖJ*��N^QQ��*�r��m��YL�t�vc�{Ab*�T����)&�R��D�1< ������[�"���u3 �I��ڴ�(��C��E��D_� ���9BhXM��I�I��/��I���%�zQU��r�(��v"�+d-��B�9َ��5�(��L|J�f���񓮸b�鋛�n��)��s\�I���N�j�f5g�4�%� e�Ö�p�^9_K�V ׇ+m<9O���m- ��C�̓�a��BQ��la�5c*d��3��9����������_�^Z�������]��}}UU`y�����B������v�����p9�B*��B�\BQD1 b�ԫj��8hFl���CV�A��BUj�).A:&� Q7�U�D�T����v���j��@o4�D�Z� �f(�u��,����Y����v����jj!���X�!J:�Q�ȅ8��X�xǒ3��#x��M"!�1�CV��B3�14Ŵbɓs!U[� Q>�E��""�_�z���Bu��K�qFy�[��Pk3QQ��Ev��7�z6�l֍sZ5�\�+()QF�9��vN��M�:��܈؜خ��8�\��K)e,��� �G�� ��K/3Z,Qb�c,Q�m��پo��g-gqg6u���e�,��m�f�W�[5�Z*�)e�'�N�nMə2��� TBlMnXju�Q�Tx�E,����Q�L�du#���7\�K�E��)A�c5�Ś��mf��Y�Y�Y�ugvwn�����Ӻ���xj SPpppqT<<WGQ�|�||���5U%�j�V���-U�j�T��ƌsf�YK)^d�e��:1�sM���������������������������������������������:����2�Z�4o��٫����,���#�.�&<%bT�]��mH� �?(f�i�f��Rnke�8�� j
����.�y2�y3'Lif����3\�E�,f��m�l��g�����k,Ѿo�Ѷk���,e�+�z+�{+��̅2>���+�КY�i��,Yk8�� �/�X���/%�3&d�'�i�l�eV���,Qb��m��f�V x)�I��P�Cu i�3��d�'�f���m[>��������Lf�4���0$'�`_\ �Kҗe-���������������/� M)~PSʙ-�/�&fN�0� �bA��H7�q���AĀ��S�N�t3���/�)D��LF����.ݲ{e���)��L�X�<�j |9� ����_zZzjqzP��#�01��� K�AJľ�ؘ{37��u�}� K�$�e�#����k v�����n(vgT:ri�m0/��~fӄ�س��{0dh���\��/�4��A�yq��ˋ���q}/.0j��ٓѓ�؞���ԅ� �W.NE0�ľx`P`?0���vq2Ng_�t�������b*_���]`�Z���������]WUUU�]�'�UU�_�v�:������N�2��#(A�I��Ԍ��t(j� ��e�C8A ��#(�xF4�j�p�B��g0�9�P41X+ c8�����o�y� Z���V)C�m��lKvӰ�������͘3ܥ�]b^b yKҽ*cP�2��#(AN��L�L�4#(j�@��gь�c8�!�`� �F� ���4�q *��e�F�2��AɈ�� d1��FQ1V*LC5 _P�W zWT� w�:�\��j������E�h��"��LU��Ez+�Z�r������i�Q:��7&d�<����X�C�8���q��U��QZ��Z��W��^��b��W��X�kf��m�Y�Y�Yj�(�5x��K�k$�2sIʳ�X��[5�ϔ��h�(d� �2��FRB�T=�y�1�� 1e@���(�(�'С�8��8��X�(���R�W��W��W��X��k�Y�m�r�Z�2�����-�v�޷�����<<\<7��Q�����Z�UI��U%��f�Wj�U��V�U:�1�u��YJ�^�1l3�,�1�YPp\__��]���_���U�U�_W����������WW�����W�VD� � � �(����F�m���X��Z��V��W*�\��!�&�#�>q,L�����M�fëc�c�bf?���VJɓ���i�YG*6,Y[+���*�Pt��*ȴI���թ�q�Qg7��ލ��(��2�W��V����V��V��W+Yc,e�,:L�b�\puc�`� `��� ��/%�/&�P�i�r��Z��[+���*�Pt��&��I������D7]�C�y�)��|����jj�ȸ)����
ѻ ��e�rU�C6L�f�N^��-}0����La;5��N�yD�yE gb(��D��"��� B�e
��B�u ^�� J���6T!B��Ӻ ���q���PXo#@�ҙ�38ۄ�`�����
x(��Q����_��T'�^ v%�!�VR�2��K�b&2�D�v"sb(2�D�^�40�x_`�P�+������x�EĢ.8#��An�v�1st��t�٧�<�I�a��0�{d7gm-6���A����(o,��f�� `9_���xt�N�<8[� ����s4Д_�K0Q�8M�8ɖλ�9�������*W��_���k���뾫�]���}}Pj�뮾�� ���������
�M^��a�Fq�1O�� й��B$Cq�q�EH�g<D3�>��Z�k�� Y��ڶo��G�BP\QJ����p�;{��qw�-�2�<�1/}�]aL伡V�,�� �H�X�D&E4b�s�(B�"lU�D%�q�q��Rq�29 �%��L�O��K�L�5��P�(�-�喰+�aaQn��N����/8���y��3 L�fY��$�[BFG��"d*���6F��1G4�,�D���2�
HtC�Y) LIjTjY���ѮkF��V��[+e[+el����W��V��W��X�\�*<Ot�����@�B�쉒h�Dj"��n(}�h�11��i�2~NɎ�����r�c�`��;Ņ�*P���'bv$b� �b�U��2�UʶU��V�����X�M�c�WǮ�V=�}��B��;�n�����[���������x�:������*=V�U��j�Z�KU:�^��8��Z���̲�ie��f����ɰ�c+3��*�������������������몿�����뮿��������������!��C�}�q��"7%�R��E|�Ej*�\��,��2���eJ)�<��1R1/�/�J�;��ؿ�����c�dVd�%LN�vO�P�c�WG�A���&E��G��h�D<�d
������'7)�5�Z,Q_+el����V���(�e\��2�Uʹ_+�^�o�����������2B�+BVK�u�졚YFɮ�� Y�Y"���G�E�<�����>9~'�T��t뻗v����4��3h^b��:T��-��-jx�2QJR�V ����.K^#/K^P`��U�K�l��$�,/J^�zZ��ŵ�e���� �X%E��)e�{�)��:)Wo�z38�i b2J ���_�Do�x�ڶM�69g+39YًdE���uq}y��` L���ʘ�Nb��ՉzU��%*1.�%-�+�-�n`���yqy yuy��S��җe)�.�Db^`F�A6!�`$�� э#:�GL�R�OuK�7�tQJ�Rݤͦj�Y�L[��4����/h��s@�%�O%L�a��)izR���ו�W
�l W�'�'������B����+bMB/����a@M"�$2-����܇�~���EP��ܿ���h�p��*�s�<�t�J(��ΰ��u�� �ֳ�ΰ�� ��:`��_��]XlcHC�F��DCX�dCh���o/�6�R � �$i�o2�7�P��x��B5�bD؆�$C5 o��&�������|� ��a�eQ�����nͳF��h�{f,�l�1Ld��#%�ҙ��W�G��!3�8�� ��@��@8H8�dw�s 2* U�1�`��8#F�C�@��*�بq
��,�h�MH5��+Q<
� V�
�7~@�z�Ӕ2�*��C��v33nanɱ���tYx��9�;����]��1r��qfqzq}��"�#����w�:Y�9fͨ��2����r�UʹRʶV��U�{�eׇn��0c�lb�9Ǹ����6B��=͟((">1��C��qs1o�g(X�vqq��q�r1�?���,)hWh=dMhUlW��쩕2�S��(�EL���&<D|bx^p]��_�V;��c �X�8�N?�6?u�wwwwwwqʧw-�rݧwn�6XΌ\������j�V�U��j�\�%��f�Yj�V��\���Z�^��ҽ^�U����3��<��,%Xyc��%�h�&��h��H�&d�PJ���� v��a+ wOD�)C�:E�)E�Y�v!�a����wA�t�QtZE�tZE�t]/�v��vPw�s�xwc�� P����C 8���w��h\�vq�� �2b�r����S�VS��S�vS���r�ke(p����E�`h1��{�������qm�Y�[�cqnż\�zaݎ��rbsR�s��-�y �
���:���(wC������V���F�j*�V��S���2�UʙR��W�l�7�|�1�y1�g����V��D'F'G�0c�wC�_�S�-��'7+78��c�D���!��!�x@v'�>�1�N�r`�4�����-�5��j,2S(�ÔPa�(0u������\ ����k�B�z�����[-up-���k�f�^,-xA.�B��B�9�v�Z�6��
\R"�qHz�"�ǁj���h�΅tnA@�Jg;v���[�#v-�� �4�a�6l��S��?(��`��C�ׅe�.��W
�W�/���(0��?0��Q]K��{�傅��\��Q/}��q?��މȝ�g�;���v�Re U#y�a���y��m5���m 6��yG��%� �Z��}.��x�}/��pn���t�hl����ihv��hK0Q�%i48M�<���Í?��Ӻ��o���ˬ��?����!'���zwZo,Y6e�e]����_W�~��w�ߺ�������l����#I�Sh��9��'�(��`�����N@X��P,�7Tʙ�
�٫ 6�2�q��bm� �` 8#�,)n�F;#��v7����C������vӄ�L v�7
m�l[3h��4���dQ���B��R␇��
d�nFѹ >�R����"���Z���Ƌ����V�@W:�\�����'GQ���b�M!�>�QP��%�����C��#9n��m��i��J�ۉm����jQ�(҉�;'NQʖW��9�q��j5�W��T�tS�TR�9B���l�9B�2�����*��(�C�'��Ż,\���{�~�X�c;��,t��0���b,��+)�\�e�(e
'd�(�Jb�Tp��5�C��t.<-ؽc���!�rCrS���9:r}�YJ�n��"Q
��\�1g�Z�o�n��]���{X���EW��CK���� ���E���ܧww��wi���w~�� �qq��||u ��T\|w'&������-]*�\���rT�����^�W��Z�cA�g��y��W��W_����}}W��_��]_�_��^BZ"І��B�~�Fl'L*���_�{�]ź�j��YŚ(W�lXn:j0�>��<�d��,�D�%�+$d��̟�2�Mp���A���l��ѹVsY�h��I…�\&Y:ɹ;(e\����\$:Dp|���~a���c�^�{h]��\�o�Y�m������C��d��s�l�E
'Q6�Y*rnif�G(�)�S*�V�k9g-e��һ�7 2s��'d��e �o��<��;�� �WW`����Nv��fՃ`0ڮf�$�@�����A���5� �;��S�'��\��br"p ����V�'@�\Nf�^`��}z{�@X�Z̼�{@ 5\�{PF5`ՓV ��b�R�@!�Ơ��^��B��X����P�=����T�ɻVҶ���t���
�FN�\`����/��%y��u�4#.T�h��e��ր�Z��i��� )��X�0��*s�S�����0m#8�!�P�3��FQC���R���^f����&6�fk73Y���2����Lh���el L�2�*d��)~Y�.�E�K�\��ח��ׁ�rR�����ҵ!k�Q��ܵ!jzr����¡5 5G\H�����������������t O����uN<�d�T5U_��wz�u�m�؄�<pu������������UBc �Lc�P�` UcEn�,�V9W:��` ��ċ�����7�N@�E��e@=$��� T�3�h)�Dj~@y8��)�����<�=��f��6�ݛv �6SU��\��D�/��!�F�j$P�� T+R�q��2�
�RD�nb���\��u�8+�j�v+�.1�`p�Y2��q#)��� �-�X� ը}��ꊺv�N�s��o;y�L�̛��nO����D�%�J�G�=��D* � |���3�f%NJ�.h�Dj"�GHY��у��1� � ����bՋv.X����D'D�CQ]���2��N�u�졚f�J�vT���r}�������$�z#Q"Q P�c���"NI����#d\���1���T/b�/P���B�,<+��+��,ئ���hx=t0�� �vp�a~�3� Lǭ mM2�Q�[�������u���[����)�88��.+�����O���u<%G���j�MU�Qܜ���:�W��z�V��j�ũ�gFtg�W�W�����u�U}}�Uu�]U�]�U����������_�����<��h҉�T �D�"���_���� t��8`ng� �⽊�*Ы��*�+бb��� ��b�:n=�}�� Y�vDȳ��;�7G�lcǸ� �"�$Y&�S�2nM�vO���(��J�9��2}�uh�D̐�y��������Ln*7�f��X�cg�n�����<�}1!NB�vE��rFI�#��7;c��d"Y��#%Y.bnM�nN��TQ2���w��κ� .9A#;��)�p��K`�mM� �̂�'�(P�yA�z����{�A�=�8&�� � F4\0�Ml��0����d��@�`�)3d�/�h�24���Y�f�@�Қ�6��0�u�T�u!^ ԅ�>��³��HS�T�ڔN�`�;�\����o��v��`�i�8�u�8.q< ��A:4�! ����
h"�N�:���`�x"�3� �Y���{@�i+@�fՠZh٠]j�P��Ə�Ģ>7�r��v)�P�<���PO�\#9���s f� {f4_m6�m�l3e3!���YyF��+�h�u���e�.��pn�O �����O'�C�̓�a��!�m&�����_�}x5W�_��D������{Y�W��u��uU�����������-��@]Qj⇔5
��D��A��4T�*c5�{#� �1lb!�302�fX & �V�`(�gT
9&V1O;H� V)��
t�N�()n�,�wB ֘C��R��Viۅf�p��v�Y�5
�fL�c|2(���R�S��F�0(uHTS  �p� #���MS� �3f2�&�@�3�rY9�:��ʶ���:��� �S4@�����~w�n�WB1ɝ 'p+����¼�0Vm�
��j*P����v:�����vF�����D�����*�YpV�S�(JćDG�,B�׃0��]��au��Ao ����GL���I�VI�^KɖLɹ6��:�n�!8>pap_p\p\�R�;�&��q����E�A��cp`���]�^�g(Kt4Ѝ�����z �a|.�v���f��� * ,$� *XT��­�k MVB�!�BFI�VJ�U��#�Bt|���}�m�b���wwwq����'wwwzu7�P��u%��ھ5*u<<<7����j�JUrT����)U��e��z�U�RZ�cQ���y��]W����_�}��_��W�U�_WW����X %�}׋,X�8�8�q��)�Ӓ��D���(�DgFE(D8�S
t�G�N;
����� x]n0ɇ��)�<E�H�M�>�9�\[���w�3�g� �Ȕ@tcp`t^ŷEwJl]p[�����Ӑ��9*ru����2e��]�K����25�� �Bˁbp�8\��f `�#`��A�F�Gĉ���,S�yŌ^����1�r�2���dgN�8/�ۂ���*��?�<6u�^q�&\��5���kvSI7`�)�c%��,��&/�^\^l���b���R0���E�R�V��`ľIJĽ(���NX�1.102Ad��}���3$�Il��-hJ̓CE� ��OjŰ
�J)�@J~�z�$}�*��N��V�Y��ӛ�j�̾��y���������zR����qI5%:
Z�U�ŠK��N���20�@d��k$�H̓Y 2Of[f��
�k��/h��{Tֲ�W� \�e0��"�D3�:uK�O,R"DX�Q �o9�f��w�!��%ymz�)͑۱lvI���eg*d�L �������-{��l
���$�-y]rR{4�e���T�%��-I\^NE0� ( �~OFu�]m�"��G�?��֛��o������8�O7U_�UUґ|��+��s�n� �0��]����1~5�����@R�P �Y.@��(@ �2R@eq�^�e꡴�ƨl���ld�!Ɉ*���5, �/+� � !��i.�V����ðP})qe��sչ<��Y7hݳv�Л1i+V @Z? �ߍ����(�@ %
��`Y�CxL�����8G��Fq��iN�g�#e`iX8T�Pjf�0�b�!��2**�T6��2�:�a҅OM=�:Q���S�Q�4�;y���6fݛaR�<Q�9�2��hG��BNa��h/�]p1L7f !؍b3�."X��{A�\ 4!�Y M #"�B�\]�\�2��16��P� �,T�V�yŋh[�r�:�Q�焼IpG����B�2:h.PZ��8Xp$ۆI�&��� �v!< ؁��'C� n��,�Ut$�.2[셆c��^ .��a� 8�bE�X�8�bu��(b�)ثb���9����]u�n��Z�S�����x���MV�W��QC�rT||u���\u%�RR�Yj�^��R�W%ɬjg��__�__�}}}���}_��W�U��U��}_�����������u�_t+ЭB�
x�B�'�m t%bN$8hF�[qlJ�O�V�\�`�ybґ5��]�)���A^p��.�v�3`χ��(=����C �i��8Y��a^����`�a����1�Hī[��)N*X��x��4+�*Щ�T(СB~&ЗB^%�V$Зb|¬��ù�+d!�F�>F�B�B:���a��V!P�8�B����3�y��8I�\��a~p�a�����;�q&ī�:aF�<T�P�o�[Ϻ �j�1NP$'~pF̢`2'��"<� Ư�\�P-ٺ� ������0�V2���9�'�2b
f�D�0��� ����T���b �;0N��}�������4;V�Aլ�٭5V�`P�� ���i�����Q@��6��_7}�S�h������@y/}� D�
9Z1\��l/�T�@^�р,W�z��A0ųJ��4� I1�`�e��)���v`��f���f���f��kMA�����'av
��r.'b��zݎЬ��Y Be|�)籷x۶�� ^1}�ɣ���S1�)� e��� Xl ��u����\6_���pl�I��u'�S������s��`� H�_���^ _]]��y
������{Y�_�u^:������%�����}`��> �ڀnP���}��8���P��4�$`rG���7�g���$�~@FĦ1d� P�� ��:�� 1T���F�n� ac ! n���>�8.5p �� I��3�0'[�l ��PT�o���J�3�� ϼ�8���P;&T� ����SF
� m�iK����$Jc�j�*(����1���'o%`����C)l� U,��G��J��`����m0([m��� �<F�I�J�"�|D��A�� �<1P_p$�,�W�EHF�C<�B=�Yl�� �V������
N� ؘ���$P����b5��4؏bN%bV%b\�e��'X��)X���+X�������A���b ��$�$�#ᦄ7,A����A~���q���G��=��>�,]�೘!�s0��Af%X������lD��E�T,B� ��D�Y�[,F��b>$bU�V&X�b}�6(8&8$8"P�N��Uu�]u����SpR�E���*�������Z��s>G�������������]I��������Z�W��Z�W%�rk�Q��������������_��W�u�_�_��������u�_��u�^!N"�$N&N(N'ПBm t%bE�qq(C�F!P�A�Ё���V!b"L#b=�3����d�-�
n�, ��>PQ�f�ӄK ��Bp�afp��� v�؃b�,��1!��E�j��M�R�U�U�R�*�O�6���K�*��I�#(4�"�."Ѝ���A��{lJ�K���qJaVŌY�S�F|=PjB=��t#��g x]�����4������4؏bM�.�x��gp �)�:�~�!��_wշ� f�[?3�/[0l���/٘��1���,e.J�B��$/��l�Q�j�J]��� ���0L�9q}|��iJ�ś��6Y0fś�K4dыf���lջ��a��8��U]jWOs�T�瑻�-�0lٻ&�-�'4q�}� vF-YX�bʔ—�0l�%t ��a�-���K��`_�q}�Ja`�T�-/d��lY�h��&�ڳj�f�elղ�L�z(]��+�g1 #b���#(g�em�S9s���߃';u��2�s(�Y�K��d��Ye��q�N`]`݁y�1�J^����9ym}�-���Kt�D�fNFOqjB�6�I\�9���8������[�`����[�ނBs�����q�b�������_9����������������y��}��]>��T@�ˆ�J@Z�$ª �̢��R_�2�x�ʀ0c��8�@�[5A����4TF�����!�)3R��N�zG�2ލ�]����{���a?8��_�y�a8뱺��/>�o(|aD
aS�pI0��65�=��� ��A�� �7�s Ҡ�Z�a %�6T���51 bZ1�@3��>��j6ޑٝ�� ��)��se��t�i��.8-8,b�*:'�%:#ЉB���
q�GC=Z ��1a� X]x,�k v𵅗�AHR���J��x ( (�(��/���@��9X9�:�:�
��[Tରx�� ��Fp���\�!0V�$ۋ�-�,P������ht?t38� �h-X\��� S���v�N���$�,:�*XIN0����C�kZE!A�|�{�W����op�
J�lरn��x7X8X)�9���U��px�W`����BŽ���U�]u�]n��)�7����ุx��.G g3�<e��� �����Q�s�����9*7#�j�Z�WJ�Z���X�ϫ������������������������������������ﻯ��������AA�{p�u�
���tp�5{���Q`��Q�6�
A���pQ`�`�l�
���pW`��`����@��#���$(#�
XTn�-ajp�8[���0Nf'�=����,4X�8�8�0�0�b��V.X]t+��ǂЃt���ˀ�@��u�ҁ�<(9P)h���9�[0=�>`�`�`����
�"����hf
�W���j
�Zn,/�`��a���Y���E��#X��6%ؙB}��b���,X�8�`��`�oX8�� ��`��lӼ� ]h����h�@D�}���^�� ���@�^�h��S�u�@�"| �P��Mq=��5��� �[��2�ɋ0)�l{i[rًp0�0#'e8%'e0('m8)go8:����[~�Ij,���R߰GZ��A(j ��A�ƀ_6y�,``Ղ�T�}���Нp ���[pi��2�B��Z6V��3,��j3b� �mZ�fɰ�f-���Y�Ggc8���,��l�'Bv�� �T ��9�qC 8VC²�\4�'n�w��F5� �4h���%��#���3e����م0�� l )<l���V/���u󧆩�p�>�� ����\�d�]����_����_����^A�����������_�}����������������ͥ4=A@_���+\��wbx+ѼiB�M���; 螈LoF)SU`4L���2f�Ҷf@1bb"��Oe@V*h�zFq����0�R"��@�)l�#�l�%������
Jj�*i�4�]�~����LR�Q8�!t����F��x3������9��Պu�O�22�f�`el̀�2ddJ�������A�h���� -����� �5R�-e��[�P6���7p�ju6ŷ�(U�LR�
�:��K�wDGD*h?��A����_x,>()�!A�eC��?��@�����x�z�a�����*hل0�fنfᡨ��V�ZʼnślZ�f��,]���w�,a���,c��E�j1N�P�:���I���χ�\ xb���Zx)��xD��ڂ �X�X=P+�xP
���[\�AI�l��f ��C7
M��P��45[
v*X�B�*X�b�-X�b�.ؿ��ݎ�ʮ�뮺����u:����u����6���x.+2��2�9��e��UCq������s�Rr9F�W%*�V�U��5U'&�����__]W_u�]W��W�_��U�_�������u����w]�}�����_�w(ZŚ�V�N�<T�LR�M|C|2����@@�ق�`qn
��r�Ͱ;5n��=5�`���B��M�&�Z`�8^��a� �e�?�D�Gċ�2���Q�+lX�[�b���yC�����]�ohXśqc�V�LR�A�!��H\�))`�^cPx��������(PP…��`[6��3�)XG�$�$ۆ vl=�=���S� V%�e��(N(ا8�b��3��@0 b��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������?����?������w��}�|��������_����������}���_w���~�����������������������������������������������������������������������������������������������������������������������������������������������������������۟���HZ!PE@ �@� �#�  B�
� @ T�! :� A�a�q�q�q� � � � � �$�I$�I$�I$�I$�I$�J$�I(��$��(��(��(��(��(��,��,��,��0��0��0��0� 0�L0� 0� 4� 0� 4� 4� 4�4ӎ4�M4�N8�M0�N4�M4�M4Ӎ4ӎ4��4��8��<�N8�N8Ӎ8��@��8ӏ8ӎ8�M8��8��<��8��<Ӎ8��@��<��8��8��8�O<��=���@��<��<��9Oӎ<��<�<��@�4��<��8��8��@�<��A�<��<�<����8��4��@��<�@��4�8��5�<��=�8��<��<��<@��@��@��=<�<��@�<�<��<��<��@�<��;��A=�@��<�<��9�9=�8��<��@��@����@�@�<�P8Ӑ=�<��8�<��8��8��<�8��8��=P8��<�M8��A�98�@�N<��<�N8��8��<��=�<��<��<��4�N8��<��4��8��<��<��8ӏ8��8��A�8�N@��4� <�4ӎ<��58��4�N@��<��@��8��@�A�@�@A�=�<�C�=@��8��<�?���<��=<��<@�A�8�=�=8��@O������=�<��<�A�<;?�A��PA��;��A�<�<<A=�C�A;<��=�=��AA@�<��A@@��8@@�<�A�<��=�8�<��<��<��<��A�A@����=��<��=��@��8@�P@�<�@�@��@�;8��<=�@�<�8��=���@<�@��<@���;A����OC�@<�;@��<�@�������8�<�<����8�A@���<��<����@��<�<��@��8����@�����@�<C�@�@�<�A@A�@�=�<���@�?�@��<<�A�A�<��A�<�@�����=@��<�<��A�=<�C��9@�<A@���=@�<�;@���C�?@>@>=��C��<�P�<���=<C�;C�A�A=�C���A@=@��������<@?���<����P�@=�A�C�@<<�=�<�=<@<=��=<=?��C��C�����P�=C�><A���C�$<A��=C�$C��=@������C�4?C�4?�?C�<C�<A��q��}�P���� ��Q�P�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������)���Y�P�����P��Ő�����=��Ő�U����� �����!PC�<C�? C�4=C��?C�d>@>C�t?C�<A��Y��������OA�C�?A@���A��Đ�!�P���C�dC�?C������� ����� �@=C��������1��A��������P����=A<?C��C�;A��AP?�C�@C���C�<C�>@�?@<<��P���C��C�@����C��O�A���9�@@��AC�<A�@��<�A=��=<=A<�A�9�C�@�AAAC�A@�=�����A�<�C��A�O=�=AAAA>?����@�<�@�����@;A;@A�=A@�C��@A@�P=�<=<��A@��<��@��<�=<�=A<��?���<�<��@��<�<@�@�<��=��=��<��=@���@��<��AA@��<�<�@��<��<����=�=<��@�@��<��<�A=�<�<A�@�<��@����8���@��<��@�=�9�8��@�8�<��AA�8��<��@��8��8��8��<��8��<��<�O<��=�<��@�N8��4�M4��4Ӎ4��4Ӎ4�N4�M4�L0�M4��8� 0� 4� 8� 0� 0� 0��0� ,��,��(��,��(��(��(��(��$�J(�I(�I$�I$�I$�I � � � � q�q�q�q�a��yk��N��}qǞ��Η�;�5ORtΦsC�#]���٭*[]���%['e_h x�"ȋ &ԸֲɅ( �\9KҢJ �8��!����?KRե*�U�LI_�v��(���*<�ID|�Y` x画����y�b ��&�:������q; ut�]F�}7���,�iq-�]���o�#I�.D��Q%2H�$��[�bZNH!de�僫��,�j̳��ԓ���Dd�)KR�����9Ke�����F�m���#b�tf�O�GpYl�P�Sz�*qX<J�V�U�������ŕJĘRWd’n�3�5�c&�2u���:��ċ�W�Q���4X� `@Lg褼fX«�c�F�7��E<Fc�B�e�|��3�� �J���������z7��:������N��K��>���qy�'�5�������?*�q1����~|����J����7�?��hyM���N�
RiA��J5J�i,җBu ����B����e�P��tks[ښҏU�6��a�Q誌��7�*��%�l���P̒r�mϫ:��2+���[������������R^��D(T��B�0��*3V�HSt��i�B��T��ه7KZR�mHO���
��1�e��l�t�U��Q��� �g5Ou'�p�KR�|Y�kX���\�qŋU{�i����x\��跼Ko�����8�On EОn}(?�� )X�QG��a E
��X�7 -`�a�Q� ~P&h`��� .xb"�
m�`q� ��@���X��F����V׈���n{p+Ƃ1�FF"�"��]�]8�h r��� 6�Tu��/ʂ��/:�CP(�AD�-�����_p�������\(w����^)A��L`�c;ta F�`����ACy ~%YAk��� �as�) /i�EI 1H��c���er0�
���/ ׂ�f}B3������e��q�
 ũSP*jAPV �i-P^t�����e��o�����y�����������z=�_����ힿg�����Mk�1���;[������&�*������{=��g�k���?�����f����ϛ��������|ߟ3����7������������~�߹��~�ϻ���P^v��(ա�I "P�d�%$1����P�-op+�#[�m�o�7�̥Ŏ�� +��௬ �`�h ��d�j]��3+�7 ��\M�<6��-��+����q7�`B�ºj!F�X5�Q�
=�P���H�>����(��q�@�N%� y�D� �P �9A|� �H`��
���Ť�AE�S�2�p��k�-�2�
����0fs��3)�2�����}!�6 y���C��\��.�. �T ��%7����S�C�6���P���@��
p���qB�<3���
q0�^N-�Ku��7\p��i�-�+.Ax;?�E' �˒ ����I��ؒI4�vfA'��*d�*�Z�e�|�}���f��2��Ǵ&������8����"� ��M(�
'd�
��\�`��0�V\�~)0�ʊ� � �f� c�w��C n��F ל�-�Yt��e�.LJ�0_��Ҁ2ăj@j�&Đn ��p:��/@�}o�����2�g�4)�jg�@ }�t%�.�������$�W�m*�@��q7&�VՋ�@�ʫ�#+�E��Ɂ���)�^ ep^� 2 �@�ὅ�-{Y-�i-�y;�-mk��z�~�^�u�����Z�t�2vK�>K�[ �? �;� ��T����F�s*CcDc���o�{㺉⹉�:������F�������|�|�|�~~7��?���ϟ��|��ϟ?��=�����7��������>����������� =�+pc��X���3�,n�9��A��J#h�Tp�s�H;ԣrp=3�p|�K�]WT���sL��j��ʨ������sp=������@ �r^d����2 �Xά޴aZ`�`\y/���`Se��1���� ��L�`��2��p��i�YCv����� g�p�D�tIf��$�i<��%��6�ʹv���sJ���N�=��Z��+��IrP{�����$K�@�p�����u�E��3E��0C�u| �E�-� �@`&��xA��I�,@� ��D���+�� �g�m��Y�up�l`��j�� '�p$�m�`;v����6B�ˀ灳���8lt��87)�^f�pn����-hlփ�a2~y $@ۣ�F �(
h�� �@�pj `�RA�%�K �,;�'��� �؍]J�EnDL�/� �����D0� �(���dp�\?��k�Z��:� �� �pj��i� ӕA��{%�k$�RZ�hSPr�@K\��; �}���!��`kR\�M�ڥ��� l���B% �0mQ���<h �� e45�Ӓ�KK� �$B�-khX�PX�l�E�Cr;q8 Ű\�"x���v�n]���|�/�n�~����G����y�������6����֝��ֽ�k�u�7��q���׵�{g����e��_���~g����7>n|��s�����3~f�����>o��������s������������w�}߹�x\Ђ��"HA�� R�a�,HA��g��A�4�a+`�CNZ Ehʰl�9�L;Pښ��hi`8� �݃wB�Hm �(�5�Y� �P6�a�\'pll@���A-Pt�A�EFg�5\N I<Y,,jH/��0[�Ak3��+�W�$p"�&n�`����.8`����D��W2X5����_�| �g� ��-ց����� QX�),�i����@ۚ�lm�9`#�a�P ��Z�������plW�,����������8:����o6Ѽ6a� <5D� ��d���$�O���)�<5qt��͜����\�������^�D7�I�(␈��Pw5s<���̑4��M\��Y0?�����P�h39�|�'�0�_�=��a�t����ʼ��.��Y`=���+r��>w�qq��+����k�{n?\�q����K��K >�%�Ą4����M"`����3I�u��r��p��aq���h�j��ɚ0 �M�{�<�w���y�۬;u������H�F߂�}׀�]"�u�.��=� ��맹��ǐ����"��ma�� �ư["6���߸GoCT&�5@�]M뾷�M�5������}�J�"LY7Ʌ%*�? ~>3$iPUYJo���~��j�G�"���
�t�����"\V(��*DfH�Fd�x�ü�_������?���9V'�����B����]��� g���n�:-�����Z�����9��-�����h��o�����+����$�$���$���<ȓ�0���Z����L�b�ͦ��� �0�MT�`;����3��{?F���ym�����6k�q����Cl�U���pn��f�����ͷ�x?���j�<��-���Y'V�tR�ՒK)@<���%��2��fR��d���Rpi�*j���h3;��g�c9�u�]�W�t6�o�h?[�m�w��_��I���X3���wƹV���u�wʼ�K�|���ʶWZ��!��$��WŐ��b�s3i� �k��6sV��7�ߣ�tr�ώ҇��~���,y��\���M�A� H<|��X����?`���#��r�Î7q� X6q��h�>��!N���7O6��':].�|Y
l�/�/3��F�4��MZ6����8㣗�v�=q�������E��<Y� �\��\�� pYL@h����|�z��C�pp�� �7q��i���цne��i4�q�o�p��<����ܷ�����/˿����~���G����<���׶z��f٭{^ӵƽ�5��mo{|o������fY�{2�g�k�=~�^�[�Za�I�,z&� =Y�׌,^0�as`����)|R���K�K���C�S .&�M8�q4�i�g�i����
o�)�StStSpSx��M��<`��� 08��c���)�Sx���h�`�`�qN⟠� @� `�  ,������ѣ^�tlѳ��7q�G 8㣟�\|�~����@`���� ��- ��.,�Y���c��~��������8`���pՃg4���0φ^/ƐSf�BG�����A�A'���.:\㑛��ѣ_4l��tnㆎr��G>;K�~��G� 4X�x���XA�i��< �� x��a���~��jG>9�ǎo�~ ��0��<k��3s6 �� �xW��Zd؇I����b(���֍Kޮ� �˨=m����� g1�)f�P!1�I䚂�v€�5�{]��
����8"9��>Qx"�����b����\�F�:��l=���r�8=��!��yu����l����dY��PYWd�\ ����_��
:���k�Zp�2;
�b����QC ����L{ݴ�u��r�IX-�W�y ~�먼U���Q��*���p��m�O�l�]rö�ka"H�C���bDx�(���(;)/ۉ2r"���ϯ�c��Im�Im��o��5�d���וm~���z.�������sk���O��Cw���d]��|��(�r
;bGc�h,�"���:��:�⹋⸋4V��1�nQW>���>���B��"�G�D�ȟ�Ób�w�������8���E�5�C�"~�#�DfuA�H��������o�D��O�h}�'����:�����zB?]n�g�W��'�o��7~����M@p�u"���H�%�U�Vy���&�ߨ�HJ��( kD��^S��)�@����3TIA���Xuz��H�f%��
�9XI�~�z).�-UM�@=+��`k�J��";x� }��HIT���<�L \�I��6�nGtR ��\#B�NwA���K���k��C��x��\G�������@Xs[(|�d�������(�na�O*\A���Q�T1W.|e�Q(Bd1O�J&�#�W)�";�R%�v.cbU.���a��V:�M����\�=ѥ�ц ۘe�A��%Z��+N�̳F�@��@����:�W.���*��{أ?c��G];�e�)Y�.J��Mu%Ax��Fr���T᪝L$2�� U�Ń�\�hG��6���嚇#�3]��YXK��[�㠕M�NP#8I'%DX����z�#�PGjB9���6�5p��������/ �-�zp��"�`������cZ�� nXF+�.L�����P@��Y�#B�n���5;^�#k 
L]��y��{��o�%�~ܷ������ͳ���?��}~�_�׭;Nӵ�{N�[���m�;�q���gE{_����{=�fU�������g���n��g���|���3����������7�����������}߿~����߹�~����7.V��vG1���¾���;�6! !'�p��%>���5:2K4�ӥ*! УRV�L�����s$���К#b-�s�KE�܄f��6 F�B�8w{{P(g�q�Y�Ҝ1K,_Mog)�P��9bc����a%E�n`C����F�ݻY��6_��ۥ8,�2��e�Gڮ����'��e�{���&ȵ�Q�R��F��L����4�O��i���?Mzr��,�+�O�"�E��
z�E�Z!��|*mTϬJt�I;@K�e*�"'�Le-v�+���)E�)�"8r y�48��D��v}���[�TT�U!- ��%d�#��N;�{X��ϯ ��0���s���ϰl�Ԙ|`T>�e,0�~k p�u|�x��P' E�t��~�#
(0%Yv�̯�d�!��0AcJ�\I��im��H*��\ R-H�.ؗʒ�s��H�n�%Ŧ$����|�K2Uԋ!]"0L��"_D�n��Ã"�^�I]bu��j�R_�K*��T��/I�gi�����֛�6Th��#T&��+���
�tƢ��f'}�UҮ}t�`ɋ$l�� ��3�̑���YE��x��1 �A$��C���i�?�Q�� ��)�# S�V(��b�y��7�=Dۉ3�����犡2~q�������E��ϟ?��w����7 �������F ���������<�)�W�f|��Ϙ0�a�K �%c�H��V��f�}�����
�۾�]3���\YU!��3F�������p�����gK�R���\��U��2&o5W5����=�*�%j r�@6WP�֤�s��q��,�K4�Y$N�Wn͠x�(�b�B���'H�8�!�yȈ��hP%��
�L1T pIa����-S$�X�A�(�� ��&%c%G�[ơ pZ%�#��L2hrƆ�� "�V ���7SXXc��bte�i L�qG�4���`[u�F���I#Oi�t�䮒��'"���p���6��F(����Y V��� �Kk��5y>�||���(e���X�X�f�.;��_� ���r��Tl���-;*�X'�S���UX3�]G{&�E���΢�S@B���Z[�*c�*KS)�)-����0)���Xw;>0��M,h#���Z�����٩����t��V;���!AP���>�1�WF���d�btd��]�1i��y-c�\'Kh�F��<���ĖU���z"
�'��6Dk��o���y/���ۿ߻�~��澍����y���k���k�cN�Zk]o���o���q�w:����~ͳז{2�����_���>n|�����?ߙ�g�ϛ�7?��f��?����o�����������߿����ߛ�w�ނ���Tm �@�ZP�9p�W.D�j=��/�LkiJ��]YE���Aq%�yis�%�COp�����I.�y�hC����DTz�!1�Z�[�D�#l$�lLsi}�r�pJ=(��������F� ����:��D��rJ��4%�V�Yr��&4�#L'���I� t��u�� &�U���c���]�#Ā#x���@@0�B &�&pq��D!R `(1� "P��`&`�6�C��
a�.���W�@]�� d"kGsxJ�hH�R( Rj1P��7���Riٜ��VavO�%Sʔ���fr[-�3��I���ô��knd�Kl�����K��j�:{$8�7���Kp�&��/�?�;���(T ������
��vaW�$ P;P=��8+��BC8�3@�O�؀C,�x�v����q�la���*3�ZX��b�3�AL��L���XN0C�ԧb��!};J�UXӠV���I� ���ܩc���7�(˦�����"]������AҤfܯ�9nk�����^e~�\��v�P�M��S~���� p��ƭ��MM�eU�KL;��� GR[v���;\k�m)���_��=Ӕz-����w��}���K�WF@�� F��a��H���Hb�$�MeIe��>�;��#���Y����[�����)g����Ϟoȩ�ɿ�}�}���ϟ?�����/7������>����~�����������w�����7`ږGIIer�8�Ne+�VB1�p�`y
�Lcl��u,2��ͽz"�,���i�u(t�Xf�R���S�+'�Ir�"�J,/��΍\PZ@I���Q�>�2Ea�c�Qɔ�ZYl�{,�$��Q�6ױ�`S:�R�!&Í�(I� 8i!��ЕEHU 5�G�FH���Tp'����ᾖ��� �X'
0�p���S cp�����@ ��`�a�%�1 &-��a�)aVT�+q\4&��T1����:XV�ڪ��.����q"ғ������,� 6�@bR<)��`��Mˤ���h�W=C���IxGx��*3(�FRSJg��Ʉc�D�CJ������j���D� @���U�A
0 x�T�D
~(Q(���#�@�Q����:���X#W0�&0��XZ�&Г�#�M�Jˑ�ˇ¡@���,�c�A��5#L�ؐ6�0�D �Ѭs<�����@2�)Tbۓ��t4ˣ�����S����Ц���J�ꑑFJ���Ƣ\�����3)��OB���bpn���w�E��,TD'�2'���?"=�w�-���_�����������=�z<���(ڶ�i�v��i�������7������ι�����6�g�+���[V���������f���ϟ>n|���33s�������������������~��������ߛ����ޮYS#3H=��H���\�SYx�w5A���1�����F��&�e,���omy]�"U}��v�N��)��n��R��d7g�܆��㩄i�%%є.nn6D����J,e�ϱ���]1�u���M�)ӓQ��ƃQ�P���EpHAR��qh�”�mЏAC����v �:0n� �J ���#��3
3h`��3�6�&��p���<`�, �)0��3�+��Հ8�� ��_.�G�� ����: ����3�f�z�x��9!"̈́�:N�v����������$��F��
�U%E2�c���R�s$.A��c���=�kK���@a���� Ms"R,��$�Ws�W'0�V�r�}�jJ�ˉT�@���+!� rA4��,aI�$[�#hv�!��&)�e�*��tV��! Gdp!@� �xå�R
���:�iIt�z']/��H5N��Jg����X�2m }浈Y7Y�)��� ��ۃ������z�=1���{�"���Y/�T�����װbJ ������n��E`�$�B�W�E�S����t��A��T���PW��7|� ��Z�5Bm�QZ��[E�K��v�t�M[&�76�M��&���q��d���4��p
�`l�%�+pe1��� ��^�}eS|��v�1X"O�"4V(�+$i���&�������~*�W��������E��������/�F�����������������r�/������ɅTC� ����1 �2���"մ��T�$���ZUJrh�A �u���)W2M�t��f��7�S�5������נ/��7���^ֈ�a�a�b��J&Z�'�q ��9����OR:H�k%I#h��r�i�2��t>b�"A�=�PQ���`���� �%IhI�h�!��� ����|d�"V��j�N�;bI�m4g@m��a0�� �,�V� RQ�����af�d?
�||O�`�GcLe��y�'SX��JM iG\��:� ��z�j��S�wK#m���Tܺ8�8A&J�'�9�D�oN7�J'�ۓyl��8�5�J Ɨ�S >X���ð� �%���`7�"��P)� V�Q�Y6 ���>
QA�`|���Bو@� �{(#�`?��ׇ� ,@�WB|/�����fsOR% ��_k�p� lVoȱ����zբ,sf>�L�b��B��)����� k�9�~Mt����} 6رܥ�4?G)Ez�`�Ʀ�
<n^>�d�T��G�7�Iq�OE}HG��p��F�B51|O��yǏo����_���[/�+s������5�y��3>y��Nյ��eͯo�clo��ݽ�5�s���q�������~��յm�|�ߙ�3s�����7>n|����s�������ϙ����������o߿~��������o���R�7&]-r��_4M�Za��! ����� e������YP?)���� ��R���j *N#��#Υ(�ʆ�����5�LGԢY���<�Y2l2 �Y <G��H�4��f~O� �3���0$"�9� d�� |hJ� d&XC�t!�A �AElXVå'p���X���$���%�@�̀���-�h^K`�
@��>4�%P�L���t ZC�@�Q�����ާ�c����c��pz�Ȗ�oǔ������rD)�<^@�K��j 
ui��EBն�Ĥ7��db��}t���[Q%1� EGDs� �b�%3{ę�1�2љ�d\b����f�*������܇�zĠ�7�D�ta� �)a���*���NY���>�j�TB�Y2�1��h7 s�ztL q�e��2�D=='^Z���61�:2L���h}^db*4��(jk��'����s1�
T!� r�X��im8�i��+R.>6,�n�"[KJ�f�)y���+�ʽ�� o�����U���q�@/>2���4�&@8���M�-}u���<_{� �� 'r��;\i�m�m%����j%Q�I��*�s/�r������x����k"�.`��+����3�l�L�ʐˏ�c�p�#�y �O�_�_>|(���������H������������������d��������`���������{������Lv��f��
[��)�Z�5ɯI.f���5ı�[Z���YK�2����ErU�بS6��\�%Y9���|�B{!J�5� ����0��X��rԡ��C[���(�@i
2֘$���J�&CS|�P�A�H@��O� �4�@A!�dl,6��n8Eq �G0��=X@Q�B�WO>�I��!h$�b)"8-�n%w��!�� �0>G��Y��R"|@)<ܥ`RU�Z�bP�ye���1�AZ� ��뚌B�̤�Jq������Kr~��X�KRL��k"cS]Ś�����șHh_�6L�r�ʻN���c�q�U����rp�T8jB�%��%����q�i� �!�,�Q��0�V;���
��
]<�c�c�.��}�F!ܐ�B��a�p�y� �z�0�� ������!��XƁ��J�.)t��<*?0Q9��5֍�*~�d��D�:�0/4fL��S]u�>���T�9m&V,�8�6L��Dz�J��q�Z7�|��%�4Z1�I��������UT���cx��D�P��_@ER�ݳר/��Eș��<?$E���~^K���/��r���}��n���������������G�Ӕmz����\�=�q�cZ��ey^���m[_���?����s���|���s��ϟ���������o������~����߿}�~����}��~n�� 8p� �"Z"-�S(LYJ-�����Ԫ~BPo2�Ue{QR�F�I�Sj��sk�Y�C�m�s�n��������74"V���T̒��&ŵ��� Ǥ�m O�;� t�1h�I�.*����*8m�ݣ6D�tâ����QW��D8x�2�5X�x�U@�ư� #�D�=� ǡ�D60��E �M�J��IAm ��^)�X��
�� �D�h+��`��%D
�s ��/\g����'
b���,W
@�R�Fd1Q&E%�C��n/��8'JqJ(*u"�hG����H�Ht�5.*�XI,�b�"�à����� y�g�5)���KA�V�LE�m;�3���<��,A�%1��:p��|HCT�P7𙡾�PPM���@+5Q"� H�+�P9X���P=����$�/@�Ț��\T��l�UR��[�K/NK�HE�G��i '�����bQB=��~~;R����5ϏK�ȶ� 1�J��ܻ`�{x" d����Z�<h1ڙ*mv��1X�A�b�KbXb'X�_o3��"��ArwA؄�Ṅ;wi� oT�����:������� 4�Z���5Ul��>�Әh��TYA5EYVe��&��I�Y�e���� ��, X+PM�V�
�%�F�j̃ ���F>U~��gă�xE8k��b ȌQO1X�3�ǒ��t�����.*�P��������?,��?������|�%�F��~��n���F�����~���)�G����?��#�g���%���ԝ�?��y6�5��@ȋ�5'����_���hP���#:�m>����C����]��틥����Q]�� ���[���)*���� ��u��s��"�=Q�Ʉ�:��4�LL.�
�5RXR�� P� ����X ��A]���;�ोA�L-h5��z�&���b~`HG��H�6�S�����3v1`fr>.��5Sa�޸��L@PW�>.7�x�� a�&����B�J=
q9&D�f5�4"�v1��w_)� �I��
�D�j�*���̌kǒ��U4�bad+@U?�ʚ�ԦW<޺��x(N���N�^N(��X���?�J�/�V<������8]��;0�����(w���<� �)�]��xS�6�M��qB´k$�z�B��@�@�J@��H�^�bw!N;�J>��#qj���粚��� ��1��0>�13Hr�4+;M+!��lk'1���]�aD'ᑂ���?N(u�"'OD`�El#P�&��Q�`��)�g9�+僠��*R������`�����O�!X‚��{\��x�'���?<�'��;#��<ʗv[���|�/�������������?�����v����2�_��֚�z��_�jʶ�����ϛ�?��3���7>��g��3����������������w��߿~�����ݿ/������Ք�5�@*ܐz`B]/�$t�K���2AP��P���$.����Im6I�P4M
F�� 1�V|О�j�X�Vtr8z�OӍ��+@N��AD�1�a�(�8���uK���h�R�l�X�m$�\!J���)(�b|,ً6A��r (�@|���eA(E"�P7B49ա&��\[*�� AsxyaL�V(�!�>� S�T�‡p'cj�HM��XY�@L�9\#pI���8%��F`���,~��``u��
($X~���
@*�`e�Fr��n�!a0'�iE$��3X����)�!:�P�o�+Lz�����g[_M(3��N,����/ۖ^NIԢu2�K�̤�1�jYGk �w9'����z���7�:Z�:ʄeP���ςA��d�l? B �$���I('q��-�k W���A�De���������T�0����J�Ev���q����������bY ���S�w����d�0��Wb;���h��/�6\'���ܴ^ "f���6n�֋1腴[�8�+1Xn�FK������5�f4�kJ��>���t��,����w�����И�Cq�4��Z?k��5�p�ɪL�D�=�̓�f߷{}�7��lz$_&�7�����g b7�{#�]ep��r��p�w���F�<F�|V�|l��G�����������s}�}�}�}�� �>�����/?ϟ����ϣ6��������/������ۙѐ�'�^�W�� �*@0��iA���P���������NԄ,�� ��F���'!����\
���8�A���[9D�|�ɋ ��@�Lb|N���+����agOǢ��F��O�)�?+�b��Q(��_X��}9�*���N
(�y�?w �����k��)�v�Xx#�%�az ���R��6
�|�.�kv%T�O��,"�p
����q< ��&"��Ȟx�ж4H�@�c����C�
&��\,A�e'���t� xA�=V� �h�ÄA0V����i�E+�+�/M� 4�4�q���Y,-�� c"�h��@Z���q|cq�&�iş�v�1z��n(�"h1x���>q� C`ǜcrX��K����S������X�Y�� '�x�=Q��f��50��@��. �&0:`�g��Mpe�>\O9 ��*-�����N�FT������Fia��� n�,&4BԄ�%��^$�2��~=��w�Q����7G��e����NF���dR<�YީMr�C���ҩI«Au]Yx�iJt�.D�2.E�<O�ȱ��>G��<�##��T���o����{/������_6M��z<�G�ӵz}~�^ٵ��~��וz�^�W�*�3���7>o�ߙ�����?��3���>�������������~�������������ߗ������������V���m4��JPϱz)�q+����P��"e������t�;$��#
R%���/k2L���58^��yL4^g��� ���I�Y�Ø�=+u�3�b���;�ؑ��� �Ġ�G��ȜC�.��#$�F��9ܦA8+= ��� �%�,2�P�F� �6��7�# (��xF�LA�t�3œL�ƢtB�lP���۱��T�U<�9.z@�`���� �aO�{�(�
d5�^IQ0����Q#���eCp��H̺�+m�ɤ�b��Z/I�IJNR�f�s����V�[��2���:�R�A�w����^�8�Ʌͨ1�.��2�7��(������m�9I��\��0Hҕ�T�zl(C
�#�� c�����$ج�X�J,a��za ��@�Ooh���� �x^�?� ���l`5�GE��� ���ؚ+��PH ���#���9��¹��^8�C���#���W��+�ܽsR��t��N��mm͈�G�L��9Fז��|��Z�p�Z�f�BHѠ�����-�1���nӣ��2���c��'�h���:�Ox��%��D�4Al���=f����QuP��s2l��|�e]<fX�����L)7�c��
��.�C��؋l� ����U�3�WӿV~���b"Eb���Ɵ�aDM���������T"��������BM�������t��������w�0 7}�w>�_��;����G��̍�P�P�4� ����� TTQł�ʪ�/�/Ψ[<K�s����B����9Ba�t�����bzf0���9��IP�,b��fA��J1���9M����E���>L�?"j&i��³��uvA"�_F`)FV bP���"Ҙ~Ĵ�R���@�P����;�P�� �A[�57:P���db�3Ff) Rj�X�YE3щ�"y��%�����!�JW�f�Û�m6T����X��p���<FL��KB�� �����A}��B>�ҡ5�����xhI_� Q� ��E)������hx�R�����[=��t�:I,�C��$��W.�g���d����nA<hi��W8�����M� :aaoM-�u&J[<]�ȡ���'f�SЌ'�9�V�^;�X�Q̺�jфe��mL"���SH��ȗ_�\DG�#X�)�o��6�t� p�)�t�:f�Ưב�]��5KG�#N� �t�襦ز�tS���̖*`�N f
g��k3�����M(��|_�ؙž��G��y'dy?���R���}�ܗ�������������}�(��YW�׵��~�g�*�z/�j�z�^�W���7�����ϛ���g���|������?���������~����o��w/�������o�>T~��R�2q�/��ci2i)�=c����m�\��e�`�Z9K�x��Z�ϤX�D�/�+T����2�W�k�qO0����� �h������ƶ��G�I�����7��&F�򩬿 ����blc�x�} �`)�hWl��Y����pH#!�� T� �1�h�Db� ��?s:��X� �$b��}���0�q^�a( -\�.E{&�kF�pYa��7�w9,A�����! � # 4-��5�^3�GdFR�Ăv���h����� ����tU2��D��~Cӹn99m������.���3LfJI\2a�WŇb��\{�`2�����>6�R����$�$� �lK���a� $8H�[!0�"D�v�A��V������3�I2�К���Q�����RR��Z��m��U��' �eW'�SRtSY�&w�?�e5^D^�[
��ky�f���^~�TKA>_��n�Xnۇ0<+��uwȁ�ӽ�6@��� G�D��D��ZU��~��j3b�6��yRZ���L�KH�Ȳ_�cwݱ�ǬOqy�.֝����Ai� 4֯��c�}�Fr*�G�E#��~{��6ǢNɦNɮM�l��Y��ma�m�\�ᗲ�}߷}3��������'��/��6�������ϟ���������7�o�?!3���������7����sw�������~���q�}�������5Ch�(��)��ʰ��D�w�"�E��9Q��A�j ��~q3�m$���@�5L�9f@��Sdƒ���$�1�i�Xs���L�*�6��G�=� :� ���a�� ����uH�Y��FT#�M_aML�8~@���z����n��G �.�6�Dh�p(��O�MO(*ok3/:���֋m�oʥ��z���ŀgO�,���o��Jۈm�)���˺W��"�w�^stkR�u�'��,�M�>���Z��ǩr��("!�^eI+���N3��,[ C���!���7�jÉ�?��%�5�m�D�z�d<YUk����~.I�^W��T,��r��>��(��b�Q�ɂ� �h0P��`P}!$`���!��=1�nN%0��� �;pc��^�`W"� �w=��������E��s�j�a;Ϥ�[�
���'�S�����WF�����κu�cxߣ1U���:�㣗9D�w�Ɵ#��ΏZ7"���w��r�"?��0s�2#�.��<�2��
O�Ib��d\��������c��2FH�<�����T�}��/���}������m������NӴ�YO������T�m^�D��W����zw77777�o����>��s������������������?�߿~��������������ݗ�l�� B��ȩ����|�aGPE�-�k�D�$���<�� n7)�|�䦍d���o�� 2��䞯�|���w�$p���,$�<k,*�d�$;a��@q�=A�xG����\w�;;(-�A$*=��������r1�8��k�@��1 �,���@�&ME��\2!̓���e��H���Olt��� �s�<�F^˰�=���5�ra����Q�D�� �8Ņ��Vu)�Q_��ܜ�$�H��W#�0��mE@��d�O������On�RRpX�&�e��S���*2L�gD��Xf� �S�fdV"#���&fd�]�% ��VǖwyYA^C,p���Bd������b�C�9�Dt�q�0��V?�@AJ�F���� ���L��6�W��W5A��"�٣N�N�#��-L�]t�� >��=C���xP��_S+ V�m�&+J�����>�U�c�Aҭaj�a&�;\0��%�v�!$�;�6ZsU<���Z�� �S�s�b����r����A��+��b��9�����ۄ���-I���N��7��3M�� O�d�'ɳ/�<),aI&��/��A]�q��45��8���,��R-��������� /�<Da�.#S�V8˹��>Go������!{ b��K~|��?���Ь���������������v�� ����~���w��7�D�_�������T�@�AY<�?/I<N{`*�I�A���8�J�4<eb�94&Ю���'�q8r�;y���6�5����,�3l�,<��i��)�(Y62$)�|��LJ�g(>�PV�<3T�n=bB�������%�; O��w]_d�(/�� i��fh�GѢ���t�:�V� ���(�5�-#�<�=S;��8���1�݅���'7��j��?�
�e��`�+�T��2�����t0���j�0��P�l޲0e(��䒘�CaX���������VI����4�E�X�����%���rJ���o�I��x~Hk�{�_�ݎ�����(�F�����")��d_�\ Xz�(b!`&l�n xf இ��"�(�:��DId�pV��]�$y'ljseB8�+�b�Ӱ�'F<�6��^щɑ�.�F�D�Dd:��1$ ��:�u��b�+z+�+�E�'|O4`�G�^���I��K�����ԒxǰWyL'蘲�� Um��$[�p�C�����/���^���=�E�#��G��6?���2���}�/m���o���y��?�h�v�O�)��v��jʦ����z���W�jʽ]�k� ]��v=b�]��cb��(���5�jC�x��Ja�]��v.ŬZnj]���P� P�B�:��:���0��k���vÐ w��{����{�5�,��KH?��$&�E�d�Y������a~̤�E5"y��D�X��� ���O":���]�w1�u"8��#d���\�s�q̒I"9��0�M�|!9hs>�H�":�V~-pZipk�hXCk ��=�|M� ��OGu�]/#�Zi�����[w��V4�o˦I%�K���=T�#��7"�Ѵ�>5�|���)��]4�#c��Ve�����%�{\��_v�. �s�Jt��p�'��zxu9E,��W��sf��S���:�RY�i�����{J���" �����y�ч�����N��t�1������U�\�f���-F, ��CH�T��HL%����e�s��9'�`42����A^���92�WS����� Tc>���{�G�����/��J��2X�ϣB�-Me�D�}�4<�;�R��sxþ�ʷ��1���K�dͺ���`�8#ܵq��j:--5�y8A�X�$e��Hr���S��K��oeN�����:\u���w�1� �N �� 3�ٖ>g��g&��G����?���eS'd�'$�'a�
�ma�6��#X��p��6e����|��~�Q�G؍���clQ>��砦��?�(�'���_��D���������91+�)_�J��W�%/mj��������'���.�J��Iߢ���C�xU ���_�a����2D�OU�K�8�S<�YOt �NY�q8ќZ� IS�������j4f�C=� �l�a�<M�<SfTv ���v9��f�_ ���-��0J Xk����i��\%f3Hd�� M-d����n�M��M�ۨ5A��Ehv-3R�d�G%��X�3��tYr� 5Aɩͧiz�Y^��i#���xS ��|�m��I��d�9X��V�Ѿ����^G�S9�j�q����Ҵ+�{�,%Vv����>J���' �l%��lZ೭NA��2����m�@`���.RF}�;��7̧Q�G�;P�?��g`�Ł[x܏J!��oX�|r�ө��� ȝ$����G�<MAD؊G�J^f7��=�>���ƔAl�3�&U7\���x`���ʴ�I��fW�kB�1�z��孳�5 |�:���<an�Z�^�^ӵ�zRs|o��drms~�� �A��u�3Q��u��nB�C{��� ��q�PUHE�_/#x�"�sB�rA�|ŏ'��F��6?���V���}�ܗ�d��}��������G�i��v�W�k�����ӕz��D��^�W�ӳ����~_�o�������|�?�g���?�g�����������ϳ��>M�l�|���{��v]�e��o����������M$@���{�O�6���,�Q�~w����Ļ��q؎Cv�{���;~ߧ�k���̆�������i��)6ֆ}�[5+�V{1��Mme��xִKW�z�l�����* �4]xwnp،j'�1r�5�$�r���: 7�ې��b6�����FAŏ 4�? n+�+�W8�L ^-9�{�'�ca&L��� ��*������d%�,�{�cy��*�U�f�@�be�OF�`�)؞QM����N~V>����RZ+��1Bc�a��DŽ���lK5(��6U��,1G���ɏ�p�]9 ���ԩ���.�Q% ��ף��+����!��N��D� /�@)t(�D���[bsvԝ=BE������$d%��wP4�;��jV���R�����F���'���*�Ǽѷ^<F%o}}��}����.�o�u".-].����,T�ۋ�9L��+J�E|K��!-���KNJR��V%��<n��sÃ��5�KtL�Mw;��g7�/X\��V�ՓX��[����l4W��^���>�T�qe�.4���q ���!�D`�tF����Y�O���*��՟�~�
i#!�b����L���wxI�����?���v7 ��l�������#����)���jD���4n�}�6߹��6)Ķ���Gm���U��i��×�w>�{���P��C� �Ռ+NJN� T�Ut ���H�v,����j��Z�LĬË ��<���"���|�cL�2|Rƥ!q�e�0�r6�������&+v#�ֆ_�r���v9W�8�ʆÊ|�2 ��QP���g�w�%XcM4�.��)�:���� Il���U�oR-M�q��A5=33 T�NM�8����Ϻhcf���9�&�����ojS%R���}�$N/����!%�&aI�5����e>|"��Уϕ�!�#�����_>|�&�Ng��F����z�~���k�}��U�#~�光�<�)�4JQ�z�xi�Fֻd���J��j����V�Q��"�1
�\I|I|U �#@<����C�= W�[�fF(�����'SD�M���7EF �"}���� 1�;���W�g��(P��qAÐ��_��"��%Cˡ�����*iT�)�+�' 0�K��G��̀4����5d����#x���^��| x$�;#��6>G��ȺNH�>N��;#��;'��|�m�mO�Ѵ�}>��*��O�����;E�/����~|���3����7�|��s��?��������?������������������o�����ߗ{���z"�ħ�2S��!�⍂tO�j��CEC�Dt����qA��Z�TAT���[�$q8�M��q����V������tw ,X&�H'�Y�X⯂�z�� >0��r�Gb��W���Hqpu~'LP��*�"��/��D�v�7�������z�?�Df{^%Gc[N�*�Q̈́�FM����ϟ�]>o߻�5[��r��~����?�h�]s��I��d���缄==J�ь%�W:lt3뇣� �1zrqdo:�g"fF�J�YL�T��p�s9ɘ�Ǚ��\�|>aP���u�����?��T���}!\�Qc���Q�9�܋��F%@R]������L%Ai�Bf����)+2��(�� �KzR�tje���y߲ɳs��궛��tz���m��ߧ�>������wy&�o���=����u��o����{x�s���}� �X}9�"��H2��ÅͭK&�m��bضL͍�<_s;��8�m�;Yw�w�b9�g���c%�X�g���S�������K�Pel�R�����t[�Q\["lF�6#f\djˬ�_w�_��_�ȾKX�+X�6�������&�����7ߟ����]��7�mϟw?������ww~��f߹�nm����i[���n痹����(P,�A�rfqq9`�)bD���w&1aK3�L.gL7��&#��3(�c�}6�%�ٌ������^�]��c���6�Ee���Uԅ�|2���,rG��v�i�,�-=\����ê�Z��YH�)\� �N�KZn�4V:���jjpJ۸Tq�������Z�̡�H�U�K4�vH<P�?�jKmU�q�d�o�{�a��U����T�%^�zM����_���%����]���zyXs(��2s��x�=/R�T��A�uλ��/ D���z�3�b��c��-3q7�dB�������
�n&��L����:�Z������3Qٝ��]��lg沚�J��n�s�YK��A=��F��G��z};N���Ϫ�z�v#3�*�s��Vյ���/W����5����{J����ҹ��Mi�y�\H?����EL�67����"��1\wΐB�? w}ߗ���7��x[ �����;�4�#��|_���E�'d읓��'��;'��|��������6Ӵ�������r�NՕy�VՔ�?��ss�ϛ�>|����>����>|��?ϙ�7�������������������~_���w�o˽��u��X ێ���<�c#�w���O05�q�=�Q�m{Li�Y�g�䤞��3�z��=�_��/"'����jkdm^�WL7��:���W�Ĩ�յmZS��)�p�= B9v���دP�԰�,� ���r��� =�Φ�g�|-���~Kr[ ��,&Nd�N`��nJ�-�^m�`�e�^e�����O�|�--��� �W9NJ�[���L�M5�E�Cy!e��0��c�X�9���N���ޑB&��H� J�v;Lu�L7Ms;��B�(qvJq*�WʾX=��$H�&X�eŖ�T)@mR�Jc�PJ�8Җy� ,�(���(�)nA%zP˔�(���-jS�R[$�y�画�����y�� A�\jOI�|_O��ō(�t��t;�����]�ʗ��֑LI2-Z�5��B�l�\ qm&#�rbY�P?9g�g�jҍ���,J_�EJa��)�Q�S$���I@����ۇ��K� ��@.��XAV���Xe��I��(������Y0�+H�!nD�`��6�\�+З�_�d>2 6S�(w����"}����0͌�� vt�ס��� H�1N�������- �����>�_��m���������5/�ϟ?���BC��/�?����C<���?��wi��_���ϟ>p�^�~��)ԠғRFz�*M�*��)�'ҡ@=��2X@31�҇t���C�^�΄�꡽Ml���ҙ�yM�K�DΦ�l���� '-U��:�^�y�}��/_k��x<���/i.�������!��J-Cui4�IR}#u
4���P�xf@� �KJQ)kH�R��
P�EtYC:�h(�r��0�|ХȜ�E�Ȟ�ż��$��\��y��a��Z������c��^�����ax�\����>�P�5�=\ ��(@���P�#Y+8��"��f �! ��� L��6��, ���� 0W��F V(c��e��P��E�����ep�� ��˚�GXd<2 ��?���ǰ|�+�E4�P)����/Z�I�m@�� X\5 ����_���x��'�� ���'�C�x��
HH� ��(UQ�'+��_�ACp��� �T�MP�;� �]�ED�C�l@Ƣ�'J �P��2��(�2��ip+{�ox�Z��2^I�#��hdX �V} �j?P_����jB�.����.J�Ʒݗe��o����so��~��w�t�G�(�z={f������l�{2��[k^׵�ݶ6��Ve~��+���=g��;<g��=��\���7������߹��?���7?�?���7����������������������������$.�Aw�+$H)� �%(0�A�J nHdv���E�"�"���È�H�`W�����#j/�2�����i}A��S1: ��^��jt��`M�bn U��pG.6�����]����l`�����y��'��p��⁅@��/g3�(,�����������
zPa2C��p�m ���8d�"�6�O�a 3(���s0�f �aL#K�k�4�2�D[@d4�5@����_-����pN�hn i�Z��\�,w����l�P���j�Q3 a��>T�����(t �u8Ü`�%Ӌ��p��F�܂�p��3�J��z�?=�A>!�&J6%OJ%�`M#��D�=����P 5O��[+0{-������e�d�7��m�8Olj$��4�|���2��J�~1���+��A�-�?X���SdFe�|��E�� ��+�!8]pk�� ������]�3�W��Ph��R � Ӓ�d��AD(jX���������]�$��f�0>��g.U����p>˨��Em%M,�T��a�pxIP3��d��idQl�������ʊ� ���e��C ���=��� ��;�{���Ԇ���=�_�l�z����g�g�ml�.���2<�0� �^ �WEC}��;"/|�����\��\���!xN��7p�#���Y�g���������������?�������Ͽ>��o���������������������������2'�1t����'`�^/����� � ��JY�0�Y4�H�$��WT����d�oZ�0 ��L�k(�-��4�8�r���$:� %���.���~J�s?U�SX2�'Z0���Oc�dPe ��{�Y� ��
L�a$A*ݕ�2f��@4�2;����j�W^�\BZB��qI7K8&��
2Fq%��麠���u�ـ�4�p9��|�P�[��koup=ːc׌�$������y(Df
(�Ԯ M`jZ�Z1�aRc�dQe��9�,� �@ �AT$�"�C�� ��!������� %�� g�`�|�
X@�z�jK׏���!�횆��6�����p-��7j������0�ㆻ,t�n2��Z3 8�Pr�A��Q6���b��A� `��'�:MF� -44���s �z )�,a�9c�7+�8�C�D= D�G /�'�"��� �,���C>c�M\J�1�pf� ��A���d$�l��n���`��v �Bpm��i�����%�٭ � ��ؘG`��LPs��k�l`Q�6#(5�i*�S���V&��� ��g�Ai� ��fn�d�E��N�0�z7 ��\.ax�m��}��nK�v^J����w�����F���m[g�l�=���׬��m�{^�v׷�/�+��~�_����zϳ�yg���W���n�s��������?����?�������o���������s������������p� �^���"xB,�#�� ��-7�������Z�1��f�A���>�Ca%@Q�m�klq�m-�Ǻ ��l(��i �5�A�L�0�#�d� �P6�`ۭ��"m�D?�� 2 m��lf���ii��ҁ�&L�L��*k�Y.�4x#a��C������y������"(B%�"�b,�TX���d���(h+ �����:W�� ��� �h�j{`u �϶*�c�ِA�P Ɛmԃk�5�a�� v����,���Ų���v(:H��Dm`�)���4�����&�
L�� ��g���n�3Ga�: qЊ��Dm�@�C���%6K<$����Jk�cl�����> �=8����X򬓍0Q��p����p��v���u�۠��>��w��k!���~��5_A���St�������}XY7�N� ;�J)k�(� <)Y��O��b��i��&K�.��/v�[��~�����p����(^����:��Yv�k�l[�����T��|;Im��:�N�m��5ga-���VЖO J�j�k�T\@p���Jr��k�ۣ7���V:��Y�4��,�N~����&��1$l�2S �¾
�"�V(�?>2Yl����T~����"LF�+d�̱��� :�<��.#Jb0�Y��[I�q�s�9��^�Ԑ?�3��3�^����������
k����3���~;ޱ�5��Γ��4�����+���}�$2P��@g�Q�3׀�2�Q�pxX� ����0\��d�����z��Va�z}<5�N��z��ߣCd�5��x:�i�3Y�<�o��Ӡ4{�o��r6}U���iim d��������SJ�KJ�z�¾9g�򗕊�$����T�2�m�����*�/?m���}��ߠ��v/�A�썫m��ۃv�|[+��^����n��lm�@uV����=Z t����xQ��� �{�:���bB�] ��-����N����?�t��>����ʝS����G �Ne�2t�s#Ѝ�z!�A�,A���:=׼�Ll
��y. �� ��q�+"���˦��@���1���t,D�mGċ��?TuKI�O�)uMTҦ�9S�1S�aK�p���R�;&H��tN�б ��A���� {�f��aX���M�m�ax^<k}��o�����/%�����~���G������]����fY����k��^׶ֺ������fٵ�=��g��}�Y�������^3p�:||���>q��||����|!t��;\!x��. �3�|J��|z����z���S��H$7�3� �w!� �nC�Q$�x�Ώw��G~<h�˥��܇�>�������ж���L!X�C�^-�^� {�:A�A�] P�'F��"��ӵC�r~�4��.�����NT�LT�L)r��?�G�/&G�^�2�t,B�=P:@ǽ�.���6ę t��a <��|( t���� @�z��C�-E��ԻӯP�G��O� �]SJ}S�9S�uL)��p����P��/�F��!�B�]��A� @�{�.��
ț 8� t�4+ ���J3+�Yu9' N@o3�C��\��5��<ZQ8��ʔ�yT g�H�$RJӳ��S���̫�2�Sz�I=_L�fK[�X�1D�ʦ�$Bz�qG�"�I%�� ihu:6=�g0,��w�XOb��� ���c�EG�A��w2�
g/�v�����'D���C\ �}�;�H �-���erC�bshL���8��b*��"�� u��%��K i��|���� Km@�$��7ح�}ͥ�Gu7�$� !�$[W-��hN�� �8�ʈ����w8�;��+~�CyM��fٖ]NS��M�����w���乑�:�༅lT8�
�!�k*3�~��`!/���'��.�u�w �w�w�sh�"x���4���?9��0��?�\z7�y��m�Ϳ9���f���/���{�q�|��6����m��ǃ�.��ߜ��.������������Ba�sIr��7��i�`-��g;T�.K��\җ�&�kp/9�X�bT�����*�8B�$`�Qi�-@d4Ŭ ��eA��HD����\jB*_�FJ�c�k��@G;��ʆ�$$;����ڀ���l�A�9Vm4WYh[�B�-��vD*t���,r��ThZ���1��M<�M-H��G(� ���a� K�f��N|g�y��ձ���G|�&鯖IK�Y{YC"١��{#�Fۣ��!�_���;9�g�Zw���i)pH�djو>�=��Kt k���R����o��>�M��C9���vy��}5���`˒�:� B���:�f��d:bȉK,[�_���m$��Ba�2bA���|���=B��M��)En�\?��"���G��2u����^ ^P D���I�(8oj!#XBG��8H)�vn�hF�6i�2�{�X� Q�{�4\�0��3��c0�������2��`b�1�!u b\ ����~������n�XBj�"�!�!p.6aOa�����k<L�k�g>4� ��� 1H %` �@��k/�a!��������}�^J������}߾��=�m|�Ѵz�ͳ׶c=k�������k�w��=������,��?f3����,��_�~f��7�����?������~�?����?��������������������s�����o,p $Q�)��S����ӧ1����W��v)F,�V���x%�FeX�RbU%�
7�iTœ�R(b�Lp�2}ɴ&�O�2��N��`���z�
%�e$V�JP:ZQ�҄���X��Xod��i)>b���T�� #C-�wI��P��멚ONf_���Tx�a�Z��vN�E�D��+�\����s����G��]LV���5���ߔӓ�*ul(\{N)���N��Ob��$@�������azª�z ��B�dzQ�'OD��mP,$��;vXiB%.ٵ ż�3���~�k�h�Y�n�����'� �,;�� ���[ "�:6Q�������u��v
�*�gD`����WR��^�Y�B�0[�S�$�N���:��߼ }~ۙq��
<�����dĚ4X��q�-a��]%���� I���˖�s,[��ȃ\ gx���3rm
+VKbB��XU�|KY"�+h�Ք=��'R ����� �- ֈUD;�Sr9�Jr��-�e�+h�ћ��!ٶ:���ť�(��C����k���LI#|�Gh�Q_�b�q�}c!O�����~�i/�X �"�c1ƾ3$c�5�F8K���k��C^�q�� �cJ�����/�>q��#y)�6�������?��������b“�?������T���B��?�����ұ�������Ë��J�%$�b� �ѐ/,f�� �U�7�SNj�$WA�����Z���w.��� ���ɮ{Kzتmc�wh\�l�_�0͝��Z֐WV�{�3IG�����>����g��3Ғ"ҭɡ(�@���ާ�mX��ڠĢw\�� a��#��%S��J`��&8��pQ�O��!X�T���h ��������\u��hG��6�^��ZqX:�QM ֠n1�@�� ҘiD�����p�<Ԛ-'�a2b���t�@�le������q\CNDeA�5�l�Y9��tBD�k><vN�M��G$���g��L�Θe�w��W��hQ{-�>������1/��F����4_zC�)>���Ce�*�\~׬"�|���E5iDz�=�K*N�K��BwS�j�j:j�
't���0�~E/����� �F67�k����;�W(�BHmz���b"��E�V��[g�̦�W�T��>�8�e*]LV�Y*؊[Z4'�I���P���P���}%L{���`�f�lk�5))�Dм/ cŷ���䬗�d�/-������~���=��(�m[g��^׵�{^�[^���1�7�{��׶{=�ͯY�=g��e~�_���?��������f��n���>�����ߙ�?��������������w7����w��K@/���2� Q���P�J�G(G�l�;0��g������wO��ؾ|(5@�S��QFN+�+�!5*G'�"Z�өLa+cާM�J�b�>C���j7���fTB�5!>Mxr���� �Ғ�D�����B�=��#$KM��: ������YE"��I�(��:�I�t�t�8!Pn����'Ma@&�!�C� ����M��#�Fa@�`U�@�)+��+�8_�A�*Σ�(�B'�ɓ����N�h����K��z� J$�
��)���g��Ǧ�U�D� �"�usiё`�ۍ�����@#P�e/�����(67uy�����tY���,���Ɍ��p$ �%&/�6����F1�� vE���h% �D���@��q�PC�p �#:C�Ja�:�� ��&�L"*xt����"M@x�I�.¥���BB���.K!B9�u�b �-Lp�"M
RY���/�OwK�n ��3䳴�L</F��s���6Kb�<'|��f�=��st����� ���VQ���R�����QNI�����ztD�����#F����=�w]�VݴF��K� ��e��o�Ӵ�M�e�[�Wn���d��lT(�* \�� �#������w�%��<WQ|g1�3�� �,��Cqa���g��Ͽ�����~oϟ?����|5������?�� �����������������o��������4�Fè��nS�� �)����5�9��Pެ�������>;AA���Խ\!���M4�@5bEy[�[}ecgR �˜�{V���
q�~ReJ��DW
J��*9�"�.R���H��VS�)'�3_\O/����d^�LלF�|8���q�ϔ� ����j�H;�Y=b��C�;߉UH'h|��
�`q D[�$�1r�thaS�r�G����;�G�iC�Wȁ���$PB@��J
t'�c��P���y�*��(#%y�Q� ��PM=�Q��9�\�̱�[/;��� #�#��;��W��L�r 谜�aWX*�P��)p��p�9:�����!���w+�k���/)z��{�M^ 1vp8�,��!��H�N�*ZF�&5.=P1�QE��@6�X)� T� J�S�x��zpIb�J5>�L�:5Z�
��jJ�f�ᮈ&3����W.��,9�t#���w/ k%g3[�>�/ R�9^�2=M)ˈ�M�n�
��e񡒈�~334�a&� ��7&($��3MJGb�A�MP��O�a���'R���.hD2�]�5)�Lr5p�Ƌo���䬕������~����߻��G�(�l�G��z׵�{^׵��Ƹ�������q�k�,�z�����{g�j�y_������������ff��7?��f�����������������������s~��7�߿~�����f��ڤ��h���a����5�T aj��Apig!�}a-&�D#4���Y��q֚^'���K�N�P`20�t�R�B�v
j �l�ܰ�~/���g3),>TЮy<ͥ�ڪ\rl�sB�����r 4J�#��L����LY�t@WVױo��&f`Zh�����.$��Hp��|f$j����A��Y�؃�o��4@J������KU��-�/Pr�0��G)h��X"X��P�)3�r��*�-���8B& ���g��ΰT�JB����ω��\�y-)*�B{$�d�t�%U��)
Y)�-L���;yW�{��@���{k�!;��Rٰ��U/��=M�v���Ă4A$�xH��B'���M�[HAI� �e
L�+�p .s�IӺ�\3��P����FB�&���8�9qi��4�R�����W�� �7b\ȽDt v����r�#�6 �W�wdH�qwti�A��&ɩ�����(ֳ�<A:U���?e�0���@�!lzw��9I��c �_��|?/
aI�~$ϧv�-Q�Hg�B�*�A��vӶEl����Gq-�{K:eRΜ��5�^ʶM���m�ɵ"#YqX��Ec�"����g׿W~\~��S ՁI���V8�q�#_�\%�T�\�� z'��o�J��?����<�i��o������k�������{������������K�������Ոw�����B��<ܰp[檊d�#ȟ�t�y����Չ���pPY֘�51C•e־��'$��ѩf06As&���s�siŤ��tΨ��zQ����poS����E32�[��6/JZ1R����
�Jo��Y����/���� )XlC�Bx
����#9�,�a=,��"��-G}8oR��t� 1O��>5E����e�I(ʰΤ<-E'L�gKk��<8�s�m�t0B24 -�3����� fb�<$_A�:��s��H�O{��D���Ռ��)x��tV�'+�j�Y��C��\dh����l����~D>��.�4?)�D=�aK4����� r1���(i.-�k����P�!�r.��0:AO$����``�tCQ� y���:�V N�B�xC�0 �|#�6l
L TP�������MY=.##_-&%폄�� 9��y<���D�z�"�u�⪹� �a�������[$K�E�yBC+��_.�QV\h%&f��a����=-^2)B���8Ƹ� dh���"2Q�k�2}r�
��bDU��Y ��>�_����VK���+�/��������ɾff|���O�k�w���[���7�ֺ�sW����f�����Օ��~���������?��37?�����������������������������������߿z�t���T�$��r�����V3EBTx��9��vC����6)R a�q�RBt��h�]��z�؆�����t�Җ)"��*R�� ��gC"�Iu��ʸc��S[��n2�= ��xq)V�NԺ�;��e�U`K� &#�@U�'U�'�H h�@�C��n\t�E1UXDpC�Ѵ�
i^�*�a ��~t�:�h#3�Z���I�i1��1�! � X�@�"�P�Ѭ�c8��a0)WS�q��zIl��xrY��T�Srjd��C�œ�%a � (�d<�#>�]*���f��{5�'M�X^(���V����˂��=1��Ĩef(����"��y��u�d����乭�t��8��e5�T� I�cA�j� ���w
�H�\&��K��H�p�8���B��J��^:
�"�A���lw2J ��͈��To6zEWCosuǥ�-��c֣]K���-�WA&�$21������V�ra�-9Ay��Eˊ��ܙq������e5��v�Q?6��� Ѩ�t��H�V���D&��1���y 9�X�V*1���2��S��&��y�hkH��w35�۶���o�$����r�t�i��4�7�n�{�����Y������#��� �=�|8C-�) 619�⹍�:�|'0f������D��%�����?���?������~k�������� �������3���������~g�����Q<�@1�a%1��G"H��?ZTG���sbF|}(��w-+~6��P\��أ �{�&N��5�fR��r�E���!�O�" �(�/�D�j�94�W�`a�i4�Ѐ�k�c��Yu�
:D64�)��ޥq5���٦��K0���F��'a-D*�B ��zL1�ak&�+�5Y,*�E%ə��:B���C=A&��~���,"u�L��k+�^J{� ���H{�����<!��Ҽ�:�T�C�ã9fa/5� b���KE#d���Ò:�K��?M�d�L��5���Ro�[,,
���7+�炸�e��dt��I� ��Pቃ��M���,'"���2yxy�@�j��#���S<�c�, �~ƣ�E��hq>�/Ob���t=�D�HkO4-�8��}
��
�R�[J"��ۦ�(M:���]-WDF"��q��,߲�Y��v,�M��jb�sg*?����0kB�sjQ����^�S#TTeb�mpkOKE^BqA��\.��a[EF�D�gKK�Y%<�%㔄t��'�|��^����e켕�d�+ey^O�m��/��~^K�����������m�h�z=>������5ι�=�g�٬��_���������|����?��������3s������?���������������������߿~���w�0� $�"����e�*TS;�F�H���W&ru,��t��E��RyFZ��� �螑k���v,�Iמ�F;��I�XR���NUyJ6ڊ�S���b�+�Z�j���{R� i�ujj�������ܬ��3:R��C�8s��D8w�1�R�F� `�B�I��WFࢉ`��~MO��M0�Lq/ȶ�G��D�p�V6��,��o�`�¨OB`SĨU-‰�Af���g!�)PǢh(R(+6�)��a3Vz�z�2z�
*��������T����GN��i��A�����"�V�X��B�(3���ZFMAP�i~�7���
4�mZ`\} p�3|$@���3��1�d��t�R����3��$�A,V�!�%�&iɅA����!`�N1�B��H�dJ�����f���1�U��*�A��O`.�Z�$�ѝ-�2���CU�"Ⱥ��F׫�%J��>]tk��D�^�d����rTH��2У�'�r�3ݒ���H�ȫ���⻷p�҂t\9�6Ĥ�V���-`I Z��� �B�!�YF_z���� ��6EnXl�����>� t3�����זf]E�m�l�H(�q��Y#ѠH?�]~I�W�J�X�%x PI�'�!-c<1�(K��>3,c�f8yj7 r��^�q�����$~���������p%?����������������XR|�����x;������o�4�C�Y��������dF(e>��^C�0����0��NMS��ܲ�s--�62�x�.f[hS|�B��i�R隚B�>;���(����2�e�.�6��f�R!^��HzR��[�F�! ��'�V'n�S�@>,G�A�i��Q�)'I �I��Q�� �=�Z�(0A2 8Z�VP� !�O,p`53JH�vS ���7�w�uI�{��6���N�]^\\^X_<Nl�p9\=/�ެ�dar&A�0�ć�&h���[��XcECNE55���aXeJN)Ԑ�uu�4�C���#�x��ҝ�dD���I���ӵ��i�z����F7���S����!k��A� Ξ���}}�b�;���*Й !ۃH�lPe|Ah��O�FTtQ�ZJSn8���WMa0F��@.u��n�|���r��lN�KK�2Ą��RҔ{׬|���ubI*�J$dTx2Ǥ� �V
�d��G��#��@��$`|��QS�[�sQ$����7��i'1/@�/��7 䏌~ Qn����[>M�����XI,+Ƅ����XbR�Y��|��>@�;<���<�����2��v_����+e���߿����ϳ�2�G����o�k��=S�����������^����������ߟ��ϟ�n���>g��ϟ����>���������߿~����߿~����X���
|���h�H�VK?d��'��;�j��axM����h�A*-��i[B�Ҹ��g"F��ځ�Q�]U����^�Eh^r ��pŢlXS%(��u����^0�0 �/I��Aӱ\�v��֪�����j
���U&
�����-���M Z%� `���bX�I[�E��O�F �� �p��!e=��<�"ށ:�%�J�յ�{ U��T�$`�����5 �Z�D�r�O"�؅����3p��K�TqH)(�V�9>��mzc:�
����䰠"Us�Ɠ�Dp�t�Z;#�4��>"(/&Lx��A��J�ʓ2���2hfO��T���⦭����� u�M��!�h/E���'`�@*BZ�p7𮃱
$�r0�|��z�����X��d"�|@���&��æ�د�!>m�T�O��Ȅ�_��Ց��e��������:RN��x�z���=�|���5{�G�o�+�A�֮���s�拇��|�]è�J�?�d&��Ŵ{Q�G ������� �F2��a���#��W���+i+�u�m1����\C��h���� ��ݳ�ݳ�ݻ#y�Bi��e��ƣ�|�m�m��|_ƾ5/�\���_��ia7�{�-ch�Lk#x�F����-�d'�6��&�'����?��������������~�s��|/�������G�ߞ����տ������:�B*}Z ���g �G��0.,/�p�-�FӠ�\_�3�L�9�a���< �3A*�q�qL���#Na�d������!0��8g�is'�"�G\P�崬Lf4R S&H]a� -��Jh%)p$>Do �~Ê8{�'��z[2@?ÐGQj�zd)��0.�ٸM��Ĥ$)���(8h��V!6p��Ȝ֩:zѯ,óс��>ώ\+��# nn0l�P#�� �z,�!�'z@�|H�ckq��� 1
�� ^��1�L���W�Eh�rz�fV:N�l���%RRs���M\��y<��J���iɌ$1��/4/G@�Hs�$5a����)�v:ߨ�=��P$�Ѽ\�R(�#�&:�_> ���"��+Dēh����a �7`��eNI7��a�EVgGu:�1d(:�,V���9��A�ˤ�{���q�OE%
O��#��G�kS����{�yG��8�'��eyB���K��`GY)`�J��&�~0�L�Y��ٜ����`?��G" ���NI�>VC�{ av]�G��x�?���o$ʷm�v_�e众�������6o>͓���h��W�l��{_�Ѵy���V����~���������s���>���?���������o����������o������߾��~����*���P��z*B9��N����5>7@�����<?,�VrZ�g,�w��A�O�QAwS� ��K��6l��V�ʷ�y�zRS[CnK�pȬd10c��t�r��>�'5�^FǓ(�E6IH����9�1:�B �a��M��"�O"DšM�. �D����D�%q:&��];�=��ƗE�f���44hf
P�x��g9�KPx� Fa�%��/��]C1CحAc7��}G*2������Ӕ�J9�%4B����/}B%(J4�� �f6%$�3gG�K�3b�(���Bee�x���=�$����{\mڝj�eՔ�Z�(G� v�;������\�R���HA,�Vb
�邫^&���������6!�t%I�Hǧ,'�冏]�ޤ\ra\]�`TŒ��ϱ��*̷�̊�F��O?�/aѬ����ٓE����$����!�m�m��sj�y^��"�sk����޻��� ��7�ؖ��c�������BCx5�8�5_X�����P���)�4E)���
(+ΓZ��Dm�"�?7Ag�2V��hgC%4���^e�-�nFd�.3� $@�t�'���HK���WbEc<�����3$Y�2FD���K���/C���g���7������n4��7�������������{��R��������������������Wϟ����kJ5� +�MmE�Z�ȞJ�afZT�b��p�~�_��s��
s\�g��Ng��\�5I(�4ɰЃd�e#�1���
v[1��ŃV:O$Ц�~���]��*J)v��Ǭ������X��X �Q�
��h����h����6��@����(���@� �������'�Sʈ)T�B�t��~#1 ���J��?�͎R�ѮS��K��XHf鬪� SDe����Ǥ'3'�V}2�� ��l���t;����� h��)v��ga������6����&�.���rk������֛2��\��PS6rk�],�Z����m�ޟ����e@��!6�D���@]Ew��&<n�tK��rTQ=1�7'=0��2��51 ���{˘�D���K��Y1-�e.��_�Jc�L��!.͹����˓�6��:C��i��hmV�z>�+�����]�WS=��v?�;�`�L��)��H˜��p�>�'5J���+#����}��
,�#������.I�n۶��/�����������l�͓�G�)�}[V�������FO��_V��ʲ��j��?�?�����n|�?��7?���?�������������������߻�~�����~_�wߌ׌�*e��i� �jYGs�iH��.� �M}á�J����������3]5��P�3�t77{r����f)9��u��S�_J��\����f��W'��ňs��j��2��U��B;FD�b����F��|���6x�K"жo�0����㓳\T��7��e�^~e�TœA'���G�0j��bBb?���d�����#�!yT�h��I����W%
�sO1<�BӲe�9O&�M+��e��a�2z����C$Bm�i����]��2B�2�o�7YR�|�E� �s���i��17��"�l(�H�%r�`�œd�b� $7�Y��r��6���L�yG;���#_ �&0daň G�e�(Q��VO�xzD]��I�A�aːA���!���
����h�L��7�"�.&�\�dv�l1����T2Λu�Hj�E��yD�8ޛz��B����M�=��;���BT�L/��ci�勉iB��~�j�o��kru��a�:��%���m��Q ��@_l����+N�#^Ս�DE�:ޟ�fA^A���n��ln����Ɛ�G�=��d�f�G������񧑲)��U"���� �_ �/ �+��1�6�t��4Ѫ���Ɠ �-������~%�����?���o�?����~j�������܅����~����ߛ���������w������In\��pÇ�Ff6�_:�Դ���S��6�S�ά�6A$�f-�'Q�$�]b�l�BP��o��WJlٓ,�1_z<�����G&���G'r��J�Ҏ�>!�&��Q�9]�_@CC��+`���
��D�!À�Gt|1�qL����z� �bӄf��[�z��k'k���Z� �%�d��3�D�Z��%�7�;��Y9^���y8%��z�R�DK���
�Ue�2�2D�7�bݷH����ܷ��o�$�����.5-(��"�&r�x��[*��z�A��ϳ��UG�� ~�W�?�������ʑ�7��Q��� +��A3*��� ��]�|����0�ź�~ih�P�A�A? (3�$�J�p�RSV�P�a���P
��=]BeB?�ӪR���E+.�U�޲<��Z彨����������sW�-u�� �˼�ғ5gV��$L:b�ۻ �=g���F^[B.�$���-�����ذ'����Y����+��~ ��}�viFG��?��r6��2�伷e�~_����s�l�7�f�d�G�i�}>�NW���{U�?�ϳe6��ڽ^���������7?�������|�������������������������~�������������U�T�����I�d1����A��t�&6W'Nt� S�Ⴧf�t�]:�X�k�_39=5:��~M �i���}9���L%�5��z�X��^ 2�雖�Q��q�z㹆A��K�G:�����, � 0��Al�-B�t!��,� @C�D�5�~r��AŠ|? C7��j ���i�yn��^4g6�� y�@�:eN��R�<��u(�GOk-͇��`���� @�i8���cFEKuL�pʬ/�H�&�$�f�H�����d�)�PS��j|U��2*Ybg���#w��A�o�,�ekt�Bӽ9�T)!�Ox���A�p�8uBl#���XHB;$��z � (��Q�1 {$U�.�bv���Q�M���V�yg����}C���k�����w;��رGM�h����b�u��_W�D���ʔ�\�m��l���73~�H�܅t'(��nV_Xe5�#�CD*�}�H/��ƈ
P��Z��+�Qz*�
h� E��9���#bA�֊L޴eh��J�h�j��h�6O�u�H^�C�d.He��f7nHK�����TX�,d+!��"+S�fHʑ�c�.‰ z;~/β�+���?���������?��q���1 ?���������������wv��PMV�[�����珽)r�e���7�→Q@4N��y]b��:�4QLpR������/̷ĵ92�s!�����4�Ū���f����|Зr̛+ZH�NM�I{6g��#���B œ��Ν�|���b��x��� �L���SZ*�8�ZY��<�'�2��aSۦC� K��h��_J%kqZ��� )�y4�f�f�y?>{9D�q����M��Q����� ~��@N%�kz�e�uU������L�L��!��tv�ZY �� �ئf4N;jN�p$D�z�:����a1B�'���Nӳ�����Ğyu�;It$��60 ƽ�:��Y��=��C�%Rǀ?��`�o!n
Z5�V=oe lyi_L�AD��A�9էE"7 g������FvqR#�!��uQ�G��Z&�H�Gi��92��|�z1&؍�3����E�� &&���#y% k8 ,����d$0��j�P�,��㚄��F�;�� q�q�2�v���S�_��d�+��������}�d(�<#��>F��.I�/%��/���^Kͻ6o7�f�d�>���}>�O������SM�l�>͕z�^��׎��j���x; ���}��wz�wz�wz�҃�������u��X�]c����:���"@�;������x�w�q���q�u4��i���� ��4���PI�s}<Q����IO|������ӎx�5y��{9`像+ͼ��ެt��m�B���ͽx�,�Mxj��ꁷ�]�ޝ��Z�V����ߜ�����M��z[/����!�F ��6����Qo�� ]���N��5�>J��W����L��?���^�ث��GD)J���>+U���Zs����Le�i�� ���g��4�Xϋ2���Ym2J�"|��<j�C�-*c"
��r�jI���2��2ߛq��H��s>�9�?��Y����y�e��]�t�8sʮQ8�LX�c(G
98�0[�x�8��4f ?�u  `�C'�$3����X5Jƈ�ge]:�B�}iwU5y�6O-��M:�w\����˰�O&4z߲�ac����^�N���N�^�� ��W�fRo��ym��~{{�,� �6\X���ص�v�CbI�K�!ANZ�yV��;H�;XMhf��w��q���+�0�m��4�l�5�N� IƟ�i��s<l��6ɢO�L�"�
� �-�����1kf9�����Ʀ6�m�M��m��Ag����2?�#�2?�#�a�J,�?8������̜�G��,?�a�E��>�Ƕ�9�E����?��x��X7��nh�o�#w�L&����s����t4����Gy�1�֊��g-O2�"�:�NLj�5���.�z��\,7LBMTu��.��Y <�(X�%s1�
�x�ϊx9�Ħ�1�myI���+I<�ʗ��� �2�)Wc|��y��r|B �!�-9J�ۂ�*cS�bܩ��� ��9�]T�ڨ4q������^���N��4��ǹ�h�2���r�����+��Jֺ[�n#������h�:���Ȭl�;ޡ1�����Il ���|��bd8�JD�R�/�|>����e�9ڠT�0������b�0N�593ɞ�F�9��9NH&�Mi��4����� �qrMso:2��y��f�$����K�c@>�h{B�R�3I��*έ-di���F�e�i�y��z7S��lCZ%sS��Ɋ�J�]��~�W���g�[Ư���:
#>��"��3�5 �R0��vʍ��k�tm&Je���|\$M�%����|�Ts�y^W��y9��>���>�Q#��>F��>F�r.H�n[���/��>>I��˦��}�g�������}>����SS�ٶ7�'�_VU���^o6M������}��~�l�7�ϳd�o7��5�w~�����~���o�7�&ɲl�<�m�vߗ��w�.��g�������g7 B۪[�D"�ܮ���rd�ek�s��v��5����;O�P����3�Z��=��U��fW��k���P�d������o���A5��M^���V3�>��O�+����3١�>���H����M��8cQ��M�Ma������5aP�y)����$������L���G�7��&�5i�8�#�!�u<Mk�f���?H�Gl#���p��)��J�O�>L.4�6�8;�ܬz)��)f�0��� �&�jhPNZkN%bܒ��2l<�����<�IO��W�t�����U���_:8w�{j�E��,IJe�I!{��-�1'h���z# A;�pCq#�;�i���-[��+�y�uY��B���9�e�)��k�2�Ő}���u��wR5�5�V�v�0�;l]�_�6��}�ݶ�W��m�e�hCB��N��cdC���H�vp��m�\�����O�*ں����Lh����݈m]��T�(@'���JHK�ӛY�g37��M����k�כ��dٝ�TIR�D�*TYR$Ċ��p�a B^�t5�hlgv*X� M"0��̱��e�&;,4XK���D?���2�����_���qĴL����(���R8���������8�oW*���Ҧ�ͷ���;�ߤ������M飶�7w>�?�?�JS�N�X�TUi�̋*ju�X���N��L[�TË���D�i��� ����:�<�W�Q��M��ġ�ߕ|���1ft�:�_���U*�'��fz�������!:�|�&��I�f����0h@jPlXE*�(5?�Ci�X��ls]��#N�t<����Z ǩ����R_3�!ܙ�_}Ҩ�W��~��<�J�F����
M�_u�*�������CDCĦ�������>Kg�n?��Z�d �l���w��1��W����-���[���~��߿{��e}���/�����u�h�ꙸ�Y���9�F�w:��-���<�[���r��+�c`�>���E���b8��n ��t�!�-\X�� �w�DH � �\��Y�fq��g�X���-y ��ȅ���m7��qq�Ƌ��5���N��4Cx��&\M4u3+�kkcYIy^W��y9#$xT@������_
4���cx�.F���x����?������y%n�F����}>�W��=>��i��}�fɽ7U�ڽ_�no������������n������������������ww���������߹�~�_���/���@�q��ty ��^�wŊDʃ>a�x��i̼G�Z����Q�h��Ɵ�V����t}�ḋ�/F�6+���\z��# �/H�Er*��$|���kT8���Dr'X���\~�����@�p3���jr�x��;�:���wx��lp��m��D]/�lʦ���ϳy�bq�&���E����r����a߻�������)�ss��Ʀ�d�5楦�sy�)_�v�ѱ|��b~X�k
�s<�[�*�[��~���+��3��r/�]��V�������o���V����W2%@�-�ԙS��J��I1[�;8챆� �����^�R�� �K�����5%���h,z��s���Y�i�~�>��t�υR��\����Y���W5p�`�5o�7��z�����F{�M����(�~^���f���/ޓ{s�ܺ�t����@Ҙ�yn�/C<�O��;��4��³������z@�� �+�P]�gٲ3�ll�f���U&w�;����?��@������J�M���<K�W�m!� ��,ػO��Lo�����<�����[�?��������ϟ���������~�����������!�߹���߷�m��n��n{����L�<�M1Nz�m�=V�)3���5)�Cl�3 ؄}^�P���+I�L�7��N��a�36�c��f�Q�0l������G��-�Ͻc�C%��9OJ��� ����R��F�#�Qn��Nk�\(K�
M;B�c�[6�m$3��Iň��RN�v�O���U2��A�&�u+s<.�-B��Yt���I(HU[�u���޲oҦ��Q�˾E��?"S�ڻ&��e�E�t.���i}����Y���]��63��a�>��!�"y ��{W���tMC�-`��{��!t.��԰��𼨅�����u�����t�8�������C��t �}� R}���z9����=��d�i��z9ޜ�i��YO�����ڽ^��M5��f����k�{=��D���NӞ�5�A�i�sI5�v�^K��W��<�#��?����|(����~��x9T|���|���|���>H�<����^K����uO�z=��&�y��?�ϕz�^��7?�������������������������?������������~��������������mm�P�ci�vxm4�8����������f-�rV��ez�vr��W�-Aȵz�^zf�NS��Y^"�����̄�����#M��*F��F���Y��G�V�dq��|����1����˓���;���p���\���UҦ�1E��)ߝ�۞�(�)��)��'�gnvö����uNT�.����uïW_Qd*��+jRz��nw�{؎�(�^V�^�[9�%��c���9K����P��e��D�ZU�I�>���V��9b鮲��N���]巗t������F�"L�A�I�)��RB5ɉ%�LI!��Q�9JҀ��-J&e.J6�W�GIa�2e1J7�e������`Z������;����w�%k]B�����?'�k�������[��k����l�{h=�1�E�"RԨ��I�$��L)1d���RR���J\��)vI�Q�JĦDd�)KҘ���ee��,f�V,v�Y�x�I�@��Ah�� ����M� A٢ U��+|��ao>9�;������|~K�e�2#���� :�k��" ��PI�+PC����� U���&_�� ��^+j� ��6C\�O��Y+���?��^��u��w�������)3�ϟ>���y�Js_e���)���O�o/�(�����x�>u��>|���ء��R�JHԠ�f�
�ʓ�,T�JU����2��cu�ښ�*oS�ZԙMu7��`2���Q5hٯ�T�t�Mt�m#e�����=�b���s�����l�����P��JP;����H5"ԇH�ZmARԏ@�JM <�&Tkf8XMMjD��G:����������ΰ�2�L�&Q�E�T�[=�H�����FJ9b������(޷r�}����^G�}���&��4�k�p�s�������gx��]�0e ��E���L��t0�#�J(�"� �N(!�b��(Z1A!�"� rL����c�� .�ath��R�B�������@�� &Xa��!hb��3,1����� ^pU�����|�'�0��/�K�5i�F��W���W��W�7 mw Bw$<�� ?B��t���B0H�c��PC6��TP��?� 2(%�ak��-�������X\�D�R2B��̐�$� H`�&�0�a�KU��. _�'8b3�0�x��K8a4���`S��ro������.���.������7���v�������ϳ��N�vsS��m;_�����6ͳY�}�g��yf���i��N�v�Ӵ���?�����|�������������3~f�����������������������������D���0[��%�'�=��hbW���1����f bp�iU��Tਰ0�a��
z�SU��`)J�HL
F�4�٠'6`�� i�Z�A'5���P�&��PBMA���*��{3X��� �~�{1Df'5���au@��YN>�;�9�7`�1�s&��/�C��Z
�Xb����1�AX\�pd�2I�YN���N�*�0����V
��S����/Z�J��
9��@���u��\^l�`H�A�\�,�B�j`���j!&�S�s0�,
*��3 ��y���beH��K'�3�ӏ:N7�j��8Ձp�^p"6ˎN�mȌ\�9bv��*�4]�� Q �� ��H�X3H 50i ����T�R���D�[!N��W���=�-7��O��.�@-r�����t6u���K��
s4b� k�G��ߠ@  � ��B� �A�]r"&��S7[tK��@�ݫ< �ޚ,�wA�D:!;F7$��P�.�T����s�B�37���9�T��8;�e^�|��q�����y@�%�(�]��l$E��"�=|5�64� g��V@e/�߆�� a� � �a�B��3[l�r��r����v�lg�;Mi�6˪�m�����̹q������޾��adv�/��/����&�w�o x/`�.�xH.����A� ��P`�/ �?������������������Ȭ���?���юs���?���f��?���~}P�������Ap��#w�,�2�0���2�L.��=:��{!+��hC?���E<��W�@<:&����e�+��i�q�x�5s�������^��Q���q(�S�`�帖 ��� ղ��� Y|m�����\d��=�ep`&^PR!�~
<@_��7 ���Ü2� 1��f.�p�<��WBUC u��)��İ+` u3R�L��īk��y����`w�S8;�\��������p9.%��s,6�ne��G���j ���X
� �EF �r� ,����Z�L�"� P���� C�Q��4�����$Dq�����S�DOErC�#u��XC<^�� �t2���3�5"l5v���Ih �3��͜'xm��U�N5a�I-h1�CL� ����@h���G N0��Ջ������)��|#�G„ =3����0�`�* ��� ұ�]Ar3�`PC���刎8_��(09�FU |�,r���.��CC^ xi���5fa�3�� @g ��8�x]�NEĨ ��d������ j�d���A > 4��c�L��p��2��1`Б{#A"�t� 1F���V{0T6X�* ֠�l ���k�����7e��~_�{��w�����s����Ӵ�;Nєm�ϳ�;N�mT���m{_�����;;�k>ϳ�c>�Z^׵�5�i�{\k�1�|�ϟ������|�������7?�ߙ�3~f���������������w?߹�s������
0\�B�����e�P`2AP� >8*��5X����.�^���0^Ts�&�Tf 1�4Va�3 =�3'���pbs��4Z�E� F��- *�cwa�i�@ ����R��`j%�e�`�уCF jgh��Ql���*�0���A{�"&awV=`�� ���b�.�B!�����$��$��`��g��`�� �x�t��33�i6��56�ҙ�Dh ��i��<E@i����V4��. *�c���h2w�͡=� 04�����5R�2���00d`^���у<D���`c���E �f�@ 4���]����P��l�k/�[P����^�:W�6̟=<o�5���S��������~��~5�d۴�n��w#�<�A��Nl�Z�m����w�t��t��:��8�ub'��A�!%!�Bv���J�8
�M�_O7��|���{����ok��Լ��������x4�w��������A�����p{�e���G9y<�ӷ����5cc0�0�ج`?���Ir�����3�޴���v;m)�K9 Z\��Vަ�5�?΃��vȖ� {�>����������aɺ34���/��>3$[`-AP���^�P��[�W���怳F
,�W���e:��������9��i��=�w�[�^�����_����{�����������|�����O�>�}�G��������g��2I� �<O��|�5���]�������K�v~�q���<4OW������/CI�u�O��5�ѡ��N1�N��si�s��ݹ�+>�m �X���CeBGCdBQB"CH�z5�x�����R�t���:? ���v�g���ppގ����{�=��ÿ���n�'Ӷ� ������ej�۠��ukn� ��v { (�/B�T�PAe!7TS*7���[��[��s�uι�{��w����;���ם���{���ǚ�wz���}�w������{�q�w����mm���u��RGq �8v 5PB�@�
"pS'�7���[��Ƹ��q��=�s�k��]�����;��^���y�w��y�w��<�z����ι�5Ƹ�;���~߷���S; ��AG�
��6x���R/���~_����]�w��������O�(�2�F٬�Mi�����j���_����;>ϳ�}�g��z��^׵�q���;<g����+�g"�@`���?����v�W\e�����/��|e���������p~���}�ꡤ�38��3���3pfh��3��{����|���{�ޏZ_/��30f���o!tf�Fn�l�!UADؤ��۶���o���q�w�8�=�u���w�5���;���ǝ�y�w��<�;����}�;���s�����;�q��~��|'������B�P�N�T�T)"���ʍ��6���o�;����=�u�{��]�}�<���{�1���{���ǝ�<����]��뺙�s���s�;��\c�o����΢nvY�B�P�Nĝ��aIK,�����0u���(sI���r�Mc� �y��e�ao"�۲�oD���b�i�/W*a�<挣L�Q$�}�$7��C�ue(��t2��sǣ:�K%�)�#���r|y�! ����������.db2�Kr~c/78��ĥ�C�otq"x�#�tN�3n#����}2�%3����k09�&��\�ְ���]��]U�/��}2��v����=�+m���.�HJ�w= ;������).��gPI9 (!���r�} �ٍ����+�ͥ��������$Y5��Ju�;K�k[��mV��o�f^��-Ͳ�=���>��M ğ%�o �O�]��7��������DB��_��<�'��A6}��k�?�O���2�q��6͟�g�l��9�o1|�/������5��6sg���6g���h�q����_����O�ϛ?�ϼ��6��Q�"� h���\��������#Ɏ�3����Ǡ`����E� 6A ��� r����3��)�HDj�T&������DjB/���Ǥ#����{��8,2Cy�q�o��� ��C��ڃ���K��0�Kǔ�����U9 U͜��p��E8��q,�*���h��T!I���i�8 ���ZE&�<�+<��6j6F���5�i�a��� �D��d����G�L����*�a��i�m���C[TqS��}�I�`��kzت�KJ�|%)M�7A�u##� /ޭr�'� Ҙig5���g��7P��G@�C�����C���BI�/����%L�v��t6&�W�!�_TH������(s>J��j�\�&�Bv�ʠ�"*����G ��<�R��q�b�2�p��-������u�o�������� ���� ��Gn�m.�6�0��PEZ������` @guH� ˄A� ��2�a4!���7�!�! c/�!s�0�� O`a/s� p/{�I��) _(h��!A�!D ��Bt�ܴ �| `�����7����.�e��&iV���}�����2�G�Ѵ�}���5�5��ו���_�l�m���Y�}�i�vz�����Nӳ�}�����������n�s������������?���37�����?���ϻ��������w>�o��7����ؖiPci�NF�$W��-)4� ���Q^�ޖ ���#��-�)^[���\)�I�XQ����2���'HQ�*��^��PCL�M P%$�ߪ?�ij۵)�O-BV-����r�J��i�I�TP� �_��>:#u(����f{��c6l��&h �e �]��8��B�u��F��w>y-~ZL�+a��gΝ����(�i�� ��r������Q��*,2�DA�8�/;[U\N0X��"w(*��!�2E(�Ҩ�JN��:�v�&���lڈ���5��G�Z�ٸ���/��
���p�^c,J��B�%�Ll� :&Q���������z����rv3U�r�%'�8\�Y~:�0��gNJ=��4�ۣ�zR��2���yL��� ɉ4X�8��ERZ°,,�K�d���)��#�s-~�H���H���A�Fn{C�Ւ\8@�⾈�ڣ-��V8���)�ak;�J+֌�y��K���*��Y�Y�h���m����S����4Aj�Sz�TޤZ�LS��6ȵ���H���]�7 v�l2���!����<Ec�"+$S��#��F�k� � ]���Z!^g�� X 0Q>q�,Yq��ϝ����$�#�6��/��R������W��+�ds_�������h��������?���f�3������[��%JҒ�a� �Ռ�4x���*������ֲ,�R�5�;̮w.�y*]�� ��n�{��޶J[�����K$Y��E��z�mPD��wFi0�]Oj�#�*HeU#V�֧r����@Cfޱ=G��%D�����4[�D�
+�a+� �S$2Í�ʊ�\”$!�+�f�`�c�Bv����:М��JNO�C�""��.���4T������z���J��$�b(�������A�=)��5<��*Eo0P��d��-U�h��J8-��"�!�Q�5UPx������zAlؼ�N�U�C>FSd]t�/#���u��y�E�K�e��-����f����h���T99|��9��Wi�>k���Y\:=�#ŭ<�YH��x)�]�d��P�:�Kd�i)�t�Rˇ����Ĭ�f>C)2, LN��g�wT�S~����������5F�W��co��P],փ �{R ���%J�abl�b)y`lO��),8�P������@F!�����U4�Z5Z�������|�"��n�{���*y>T�ϻ�������S���O����i�;|o������흞3�5�3��>ϴ�;=i�/i�q�i��f���?������������?��f��?Ͽ?�������������������7��~���w�߿szb�Tkxʺb$��-#�"k�&����? �GC��.�#�I� ��b�:qe�e1�Z9I-Z<�&���{����+���.�".��lS�����dft7��I�:��:)6`TVj�o(O���톃"J}�4!ПE�j���H�������h$'HqBC'�a'�,�
DN����� \hx �9�!8�u � ��!���4#��ہ��� EH�E�-�p���D�|�_[����&��R�'B�p0`��g�qA+$'ݗOO�� ��li��$Ė���#?W����,.ނE!��a��%���(��:�<�W[E�Q:,�Ki<h��Ew-���H���m�k(���i']�A�!��x���T���4��1@��cY Jz����@�l�r&c �R��I�:c8����'%�5�V|JI("��r��"�����M��4T^��r
L
�*Ih��}�=�LU�W02��^��Ѻ��a�!�� M��k�p]�[��C����N�����C�h.�{���l��� 
���c�hq�⡤��w|߸es��u��}����6{!���gq��Liu^���mv��m����r���ʐ��\$x^&p�G�n��WQ|WQ�g�<�v�^�~#�z��~���ݿ���9�Ŀ���������}����|�}���~���-�s����߿?���Ͽ���?�߿~�����EF51��/0K
������/�K+�����Ձ�zq��-���1��ڠ����6�n�TE�Au�� ���/�
r��haI��Q�k�FDɋI1���tUr�"$�����ƋY*��J���TL-%�2L���M�rd`���H�v�9����$��FHx�
���r�%� ������{�/ê�T�� .���,��=@^�̘"�(�.�� � p*�aɂ��8�D@�7������B�*Ű�5��2�~csz��8�("�+�q�":Seד#�ރJ�J
�تŨ��;PN���"��\�����-��.���r�SW[�;=^��q���a����z�SW�H^�.7��+��|!H��D�0�\�c�x�! [�=Q�SC����@� � h��)�U�@��8!NrU��&�J*����rR�v�٪�#Q�Xj'KE�m-����C;�&#��lX(�8����a\/e�rr���S�����Ē���ld�.� �f�)�"`X�r5@&�����B�I:'��dz�KƓ�y�/(D4B]3�F�)�l2>G��?�&��o�Mw��4�#e����߻��5���F���w���7���6���Y�=�f����>�ZkMi���i{I�v��,�m��������������3�������ϟ���������������������������7�߽9�9�Ҷ\*�pP&H*���.cq�쎠J �&�KDH�p�q2.� d�����q�淩��5�C#��%�2��Kd,�0�'����M�l� cvN�Y "����زL�K�����M� +�R��p�j��2/K�T4X��:���S+��T)1��m�Sݛ���%�$0� �W �� 5 A������0�v@%`ߛ��w}��z ���
h%�.(���;(@d� �$8��@�Q�f���*P �>#p��vbL�;U:�Y�����O�Q���ݿy--.�2���Ԕ�&E��I$��������ĭ������@A�5�P�Mdm����Z��Ճt7�bA��87�����a�n|ୄQI�$i��,B�h����9��Re�#gV����E;��#���(� k/YQ
K'֯��%�-�u�2�)Pe�7�y���֌BZ�(�wdI�qlY��~�&vɭ��N� kY����gS�삇&[���$;�P�����H€�����z�h���|?�Gq3��,R�2�Fg ��&�͌=sK���$3ڛU��mM겻64�����vǖ� v�KГa��g v*LV(��2lV8�A[�� r�]�� ~�ߩ?U}K�Wɏ��d�|�,Yy�������No�o�?��� ��������|�������S��������������������qX�Z#b�<�a�w ����\�&�p<�,Mi���Lgl�Y)"|PB=djZ &���I��1@��w��\I��m*�,��ծ�G7�on94�3-�O10�a�S
��.7�UJ(�Z^@dJHL;�$�l6�@��Ʊ�9�!>/+��m�h
�I�XO A!��9�4��p��ɓ�52@XO�0p�ொ�Mк��� ��d�^�N�٤�����+�CI�ٮ�욖�
���?��E���PQ����i�X��`y����&8��6&*l,-8��Y(�Z�JD��<F���Ny �қ0�)��E���F����֊���G�C��bڛS������;��Y� h�n�+L ��D�%"�E�@*��.��$�"�4&8>���A� �����$X�J�|B��{K��^ MB7�(�P��@qz�My5.c#�-.&�=c8-/�����ֱ���\,/ՍhL�l �O7J�1Ŀ����4B��e��K,J Q�Z����N��Ɂ�>���kM/�/c�tcL�����J+-Fc+̤�&*�Q����?�"����۽�+$�\�����������7����Q�z����}���=��gg�{5���;>ӳ���i��<g����ٖg���������������n������?��߿�������7�߿����߿~�����P��1Bҭ�O-'.��n��6*�C�D�ݑ���<�e�dH$�i�r����b鸾8M�g��C1��5�kE>���éN�D$vGV�P��5�#�sB��-���R��ξ�[/^�ܩ[��=�uwM癟��&Bx9� �h �d ��� �(�E�pn���لV`�� '9 n8��P��VB�E����CSz��B���gAq���>��p&��>^0�Eg�#�x&�䊒���(� e���<�Q?I5"���DЋ!�P']�JA��>����� �꩔-�O34�kؙ��;p���M��ȴ�}L���*ϔ�[K�Yb��{n��� �{UpX��نҦ�]�_\��Ȑ�:R���NTHa�
�H�X�T�%�r�G$�!�|�@U�Q�\
:�Yl�KpJ���T�G��,S`��,�*�#{�. �8U�� ���`�/PYB6:Ic2�+R+ HS��a:2F�������*�ŪSmN����sHi���.�ҙ����f�F:��_r.� V�U�Av�l���;��*.s=���Va"�ƅ{Uǥ�����8���:��+iM&�Uyd{(g�w�f��ʤU�G��"�sm�o����ya�â&�g"���[F�3��3���@������C�"^����]>�����l ��_������������?��σ~�ϟ~��|���������������ޫ�����|��ʈ�%!f�|��ƨ�9��� �b�Ҳ@����
;)�PK�y-'*|8*@���ԧ
��YSgwq��3�"����]�Jd�*3�G2F�����
Jk�� �$G&KLLm%ܚ��b}ls*K
=�(��a1%R�
�XB6��pS4��A����!)�����t
�ȣSAƁ@Zr"�"��ʰ����,�c0y�����b�I*`�F0W!�e��ب�,I�"�'`��%�)Kv�,f�e� �e0CU1�.6�f1 ) ��㐁�Ca�S
a�/�Ǝ��K�P�L$�UPHC��tG���NSl���� ٲV�J�r���'}꣊��`�Y �ΆWhȤzxό�4GN�:�܇��N!9"�8F�����qxE��-Q�L�ȓ �?�Q�{"�P�8�\�ͮ��
�{� �<kP3��4&}
�k
Zj��v���w ��SNU���K����I��S
S7̕�v+� tR�r/N?����r钓jY��`.J2����1��#�@� �f��e�'����*8�)ţJjf*�'���v����Oyc��6F��7�&�nݗ{���䍑�eے��+��rW�����������/�g��m��羏U�v��3�;Lg���fY�v~ͳ�������?������37?�����7>���|����������������߿~����߻��߼�����ƌ�����- �YP�R�a���ܚM酧�%��l�r�Jr��҄33��T�w��̷�����9ԯ�,�
V3>�a�(�j:IRҒkE66ZZ������{b�`i��_jz
պ�����p���5�%�Ԇ+��8�&.<�q��b��v�Ш�C�Q2���@��Th��M��{6) )�"�\���PP8�x�̓~(`&`�ɠ[�0Y�!vA/��n$��%�V�
�|,�l��V�P��<3+,+R�R�Az�U�@7 �<��]C�~0�b�=�.����-gx !>"�U�64u$Jg��E��JH=ֱ=������twМ� 1'&��u�4���{����H�b��, ���N�0W��Ā%Q������: ;J"�7q�ꨒ ��1!���5(�`a{���71�@��'��@� �T�0�d��̇���������.�qx5 uZ�ˮŏ|%�TY�V)ɕo�z���-�it���e����*xG�hq�l�m���-� &�����uX=*�y �H'ţ��lKA?%���4U�Q�3�넗"��S�#��KM�k(�����6'�Hvov�ܰ��C�-jE��CJ�s3�k��=�-�,� z��1��9�2�FH�q���#��cc��(K��ע
�6g���O��{�W�T~�������jK]������D������|����!��������h�A�����������S�������ɅQ���������fG�c>!E^D�4�����0��PO(\����'�2T��c*O���e����=P�z�vT�f��F��sU5�&�V��E�Xv����8��
���A&�/-5��I�Q�H>�.0�vUFNh~zW��� ׂ C(� ���`yF�����?b �`�,��ĸA�!HP,�eu4KJ�2���xe4a�\�/ �N�ݧ$"4��h�����K��+�P�B�FǶ //<�4�^�!� �@H�� �%ɼ%��6�r�U)[�O0�d�����FC#�x觖7����U���DT›�)��W���4���޻XJ��5�W�OH�x K]v:�~u��חP��H#�؏C � �I!�
�5�@��e ��� �X��M��pC��k �i� ƥ�%����X� }]��.5]">,�C]O?�T�j�o��\�,)evT�6=Gc9�~Al��J��e�[q��z0�l�!$�zR�!�+�x�h�RrR$9��q�fR��HLJDR%��FKG"?"�F�H]"��=�$Æ!xt�)���8ТN�Ie�y����?����7��y2��~V���i�x�&G�+����+��|�}������͟��ɼ�6O���FS���6��l��^���vyg�����~�����f��?�����ϟ�������������w~����~����߾���~n�"�;tZ�K4�(����m��j���%�K�yk5��F}�"Xuj�ț���Y0��L6)��2� �v �Ə/�����O':�4@� ��Ԉ�d���Kd� ��C>�륳i��qдy9L�7���֢q�e�Ԡ�0NPC�ABO�ر���,� � �+b@2 ��x\���4_ h��R��Xj�a��J.�$��O"��caf�n�*��B7 � ;���_f�_i`��@G`WI��5� 3T@m ���(V����F�R�g�qL7�F����1���?�Vz��pQ|;��ɓ�-w��d�����1����*�OH�+���3Ro1Ɣub��i�KB�s(�c��n�I�쬥��z�!R�ۈE�N�-ꃔ�]�b?� T�"í@�p�DzA"&�ax�.�* �x��\�R�|B�hs�CN+���Ĕʅ[�ܨVcB_0�_lƌ5�yiKC�c��i��&���c�������'��������,�-�+7{�q��p�p�!OWJ�x37 +L�Ÿ-ԅu��q|���z�>��ƎgVh��H���i���R��e�|p��r��t��u�f���Ư,e��L����īi�W�%Y4Y����^������荱����#ScSc��L�d&p�8�#H� �/~��|��~�@��%������?��9��������o�������o��?������{���������U�������|���TC
1����!�g ��$��1����t�-�N-G��[^�3�fP''4N8��'�8�6M�:GB%�l��k"f�L;��d�(�<��*B>�M��I8y�]YJ�5��5N�!u��JnsB(!Xe@���E���S9�(פ�����Š� ��b ��f�5�=}L(X3�<iH-���͈<��~- �eIӖ��X�#�džL�#�%��pՙj��1JL��y�$2��[q�PD)q�� �#����ޔABQ�����)/���pa�r|4֏_)�2�Ru%(�,���1%^Q#y!m�_5|1����SCd!���o?�ne�"�9�S�u���2�!� ��p�1���ayz�x�/���MY���G�&�������8���)1+**��:K���fp�j��UCG��S��. U)��v��N�*���!$�����T�����I�q������\����|��#�8{��B¦d�AzkO�M&
v��j@8+��gE ��[����<�#��<���x�e��/%�~,�<?Ǒ+��^W���>O�ߛ�������>O�y��}�'�2��(�6�G�іz���g����3���ߟ��7?���f��?���ϟ?����~f�g�����������o߿~��w~��wz��c*O%X$��F�q��aȦVRm�������.X ����Yh����b�
Ho*rc}�mg"���͗�u�2��~d]��NjH��"��L�R�ax�o)ޢ��Q��:�CӘځ2�Bb:L�l��㣀���* F������8���@7���YM�.���Z'eR���OU�TP����G�E�х�nѻ` ��џ�$��G�Q-����%p�a���.f�K U�0�uz!���Z8�|� �ȂEX�xC�Z*��V\zOMj�M/�c��QiCR�CƩ�ؘ�Xɝ*� �f.DhRks����4,^���>�J9����V���zl�;�˫Tĵ�B?_Z���K�r"�p�j�t8����1R�T�M��2;��Wc v3�� �HǗ�����/ �Rn8���ݯ�_HOr5�e�Y���ɑ�Wi���~� �FF���И)�m엳J4_m���uÍ׳8�\��q��I��������X�N˒�t4�KD�T��.$�p,hoF�g�����8��C�W Nht��]�3x l]�͍lt�����Fn���V�֥���&�i3Mtyq��k���d��3,k�.2����̱�H}��p�B]���Ẉ�!�DJ������ɏ��� 0&��X��|��7����I9�����:��7��������|����~n�ǵM���ߟv���o����_���)'�%��-ׅ�66���1�<��Ҽ
�
���p�|�a��sѝa�dC�~�'&rY<MD�2><�r~6!��d#
��j�Jl�y�� ��D�C�1����y��H�V��2J9�(�aL)��qE�� ��)@P�/p� �~�*d�(`
%BpZf�g�%�G+{Q�.��x2�D�����f )WB���#�)��{�7����8k��RA��*��T�Q.eCu8z��U�� '(�.�a�N�ث�bD��y5)�5:��QE�18Й��O&LNQ\IH��cZ0����$�&="�_��Q'��Lrg���]��DΛ9���~F)%w�M�dd3����mqZQc��V���(�!� �r�=�{{��̋������؊d���K������� �RK�G� w�t5��0�\B�Y,�F��賡�>�"��%"7[F�~d*ו����Y'Jk�ɥ�&�υJΉ�8��y�2ӈ�3��.���Su\���y>G��6D�r<�~^K���"xy���J��W��y^W���w����ٲ>�<�o7�g���;N���6�FO��]g�l�{=���?��3~�����������ϟ>|���ϙ������������������7�߿}�߽�񡀞\)E�Ck�5,��ԺP*z ��bܺ����iG*؏��|����^q������13���ے�n{M�ޤ�FGՒ�S�gL��^����j��_(���S��b���Q��x�P�Ս4��0�G�Q�>j�M@����d !4�s���@W�������p��`6a1��L/�WNV4�<����>����GLFr3�SO4��Č�g#o+���6m#Q�|�8�|5����V���S;�ڞXy.����D�kl����@B@m;��2K�zfI?$�})�”c��NiQb�jɘ���S1qQR��*b�H��:��sb�=#o��L�ˊ�$�n&����8�&nF�dB�L��b��G������@꣩�O(��{\�4�
D`Y�L�2AL��x�Y �f)�"S%}��Ǩ��I�V�!!�cQ�c/U ���`'��� /)��N�v�H`ߺ�xO�� ���b�x��UʤɊ�{�9B��}��p�Q������h�� >ז&�d�m3J>"�+(΀��qJ3���p��r����-�����E��̱�� ��v��Ų%>�ud���E�ٯ�m��%��To���Do����"�ò�gò�뇰�ĕ��|��~����K�?������ro�?����~7g�?����nA�����w~��w���Ϳ�y�=�������]�9t�y���lN*���
blK���m �>uy��A� 8�1t�X�Fh�����2���VNM�,����Y����Sf;��Y^�� ����*��]z"*��9ug���J�Ƅ�r�|���C�(0b�"<�7�Ho 7�2�j�z(OQa�lYr�⢻#b�_C�f��'(رB� ��-7��y\��Ö-o%�zYl�yCT4�N%�&��-�ƿފ�~���.#�Χ~1�,�t�����d���8'��U�shತb>3�����ӡ��|�YTc73�1H�*��7a_�Օz�䌗"��)��X�7��I�����bQ2 �"�9�]I@b�.a>�%��Gib�\?3�4p�I��P�Ę lI`%�[Ep�G�I� Lj��O�(%���V�Y�l��Ԧ�[�Ņ�G����6B�.�%�^���<�]��/u��c�A/�0jZz��u�M�&�X]ya�cU�"�@�h��� �,lyL��&C+r�𢨼�*��#dyG��狑|\�����[+��燐���I����+����'�o���y��?����y�?����z=��'�����l�{={g����7�o�������3s��?�����ϟ>g���3�����?��w���߻���߿~�����UU��(�n3(fC�.�M�G8��S2�99i���C���<h�r�,9���o���'v�.r���ۍ��ǜy���D��\���X'p��ٗ��.�# �1�vӡ�9��S�D� G�&�G����T@C�-3 cC�(�!o�d���EI�ۏ�ZAw�yIB����'c����������<�p�-�� �ǀ`}����S��Ў};��5,�HOm)�3r[��{S���A�e@�Y�N�#�&��v(ee���N�� 1�������y�l���m
�W3S��_d�4�3��<g��b�Րo��v� ���h������Ig�s;cB�C\��8��q݇2PHa;�A�N�����L-�6){%X�v�>ax���Q٦�_c,j���/d�F�N��6k�[|�����,Q���!?����.'� o������"L�"��w���������kr�] �^�w�Uy]�'�-H@CE+�{�F���I6���M��9p����� ��e�3u��5��sa[����Gn�ܪ��'*��ɧ�Q5e��d���3fXʱ��2F?�}"Dw��>�� z�"�:a��8D_�]����a��� H 03��Y\`��������'E�������.������~�C��Q7���~����wC�7[��t����Ӯ�KZ����������%* ����b�θ�;�i�U'*68�-��q|��T��'ecbǓM8�l�3I��q��d��=!�e�6T��4����6fAX�����u)
a���N��p����Z����� �nT%���j9= SK6��G��%��O/(���E�l)1����
Y)c�������e(0��MF7ù�) �ϔ�B@�ci��
�~�Ԃ�R�O-����zn ����ޫuTudZ��o��T�,G���t��Za����� HN��Ԝ� H��u3{�\w�����:���3��b��>E��u坭��C���/ɶ��JI-����E9��Jt4�v@���P�c0FU�Q9�dn����+r�Q���])3�����ErM�<�!�z��4w��@��n1��O��9T�lJ#9�bltd 4X�� �n4���*X��Ar �9�����O���F�>> + Dg#0شW;����NZIQ�t�b���ة��1���웲|�#d�G���/���\�*_�����<<���?T����^W��|��{�ټ�?������?�������G�ѓ���?����{=~�w���`w�_����@�?w��}�w������!?�<��6��x7�����]�:u�e����������?�a��5�s��=�q�r�Y�@��GYK��б�YE5�����,�GXC�,Kxn��͞)�v�w�ߔ �֛9�H�׎�t��� �&y��8�8�Ǖ�4g&z�(\= �7j��qH٤�1�jF�6�2�i�Dƾ'R����N� ~Z0�9]�O�vs�0�x)*7��`,�w/��:�^�!x�'%yW=I�'����yY+�[�Ӕj!VO��a��W��iuϦ�"�[.�Ol�q��;<t!���{X���j��d�%f%�Lw�&��Zf*�Ą����Eڒ�����ͯ͸����X��>�8�_�v��o}�^rXA�n�ii-���m|�&4g1T�!9FZP��a���O\�a��+F���� @p��-_J����m�o
�sԕ��ޕuu�2Q.��F�K:��+�5��\(��?o�c4��osP^�3H �� �ċ'/���h�����ˬ'S��W8�T6����מ�k0n8Z��L%��~�8
2���o��o� 8��nى�7`o�7��-~�U�R�I�/7��[�g��&d���/͑tzc��������E��G�돱��ⳇ��
xT��uD�+��7�k�O������Y������8���x��b��-?���-?�^h#?�c��?�c�q_�N?8��-�,����{��!G~1�����.��_��p�9������?��N�����P�1�2��Z����Q#��ͳ���GE���>��K � �����h��̘�,�& |�B���'��0R��>x�J_�<&�Gĸ���璭����d�]��;,c1��;�GG�2�����oYS����LQGr_q� +��j�ռZ�L*ٕ��•
6y�'=M拄����/ ����޾��^��� Q�N��Ʊ��k�Qؗ��v�I�s� o<��Yk��Zy=Fc21���JL��T���=�����h�Z��5�K�����d�Nc���K�/��0F.c�-1ru�����`�a�E�uѳI�92�-�4ɣT���ޓ�r��4E �
b����+L^t�V"j��>_
�p�|cGS�)�r���NՎ�MH��W�� ��U��L�f�^�����gq�f���
+>Ӵ�E�w4�:Q��cm��:ͲY�۷���*\w�^#�Ʋ�tu�/^T*��|�'$�"��/���O$I����+ƞ'���[T�+��^W���6G�۲��l������������}�ӓ��?�����6�g�l�y�o>oݿ7o������]7����y�l���m���߿r��ro7�͓y��77?��vݷm���������?�����I�l]wS|��E���;�6��3n����۶�p�otݧi�ͧi�:5vm��5�����l3�~�_*��������ɺ���܊Ϊ����� ֟{�'r��OO��3���>#��F��E�d~����(�'%����a���w+�
��<��� 5���q<�F�3�4��vxۃn��Fr3��r;�� �j�[U���_"� ���9`�� �q�Ƈ%�DX��=���x* �FKC���N����j���%��̕�2 ��{ɰ��ZG0�e<�p$~t�lvK�m�>�v�g|��綫dKIBBK$�rH�ݦ lxщ��G�� ����`� ���<P��V�$�j�d�]�����Le��s���$�z����24������M�I� �I:W��� ��6�}}Rǻ�����U����m慖�C>���sT1�����B:�I���.(&i�>����V��m��tf���M�l�����7En�����5�T֧U7hpl��["�W��nM�ܛ'�b��RcɃ&D�RcH��L����;h����w�!Q vhK��"�Gq"H��-������0��9�������:� o����9K�����Οw?��8���J���t���n��f�uwN��uwI����w~n�����HS!NO�u��*���F�=J�g-�ZG7�dL^�Të��MFf/A2|m6��J�l� �x|ɱ#�^���85.`ՙ�+[}����YvQ�d���,����-�v�8�:U-R�F�]D��t��)�-#�ʪM��P�vF�{�me�S:^�d�ȓ�1�j&6L7!s:G�u%�����j-x��� �x(nޏ�&���m��#����|whh���� f%q��D�����~6O��e����&����L��Џ(ş��p��ss�7���{7���>�[�������[s�ҏG�� ��r��ZruJ�gZ리�����E���2@W0W9|G6���Ƌ���(��+���F����|����fh�љ�h�i���'!8�f<Xx��/%�h.4\�q�����3��L�c��Kt]���y��z28��3)6&V�>&�x���U�U⩬���'��9h�7����/��x�L���y^4�6���YQ�/����&D�v/����/�}�����?����<�M���?�����6���=��Ͽ3~g�?��ϛ�7?��������ϟ3��>�������ww�������7/������������c���.<�qbw/��I��B�B� ����F �<[���F�"9�O�UŞ -<����i���C�ʣ���~��G�KF�<hޜC���Ǎ�C����;n�L
�ː<{w҈�/Vɥ�i��� �s�`������� �4�U�n��)�����6gO=����ȷ�~��(߹����7Vo����O1g��{30����F��S�����U�]�4nb&�P���^VV�f=�[�:�[����������3��y3�i������}��o���]��{����[�-*\ǦҶK$�$���q�Fd�g~�wJ�|Uإ=f�n!v1�8�b'��\,@b��c�搤�L�v�Ҥ�]A��>���i�wg%˗��ս\0��>���7ZyܽwV� 7�Ӹ�(�~^���[YW��J���s\?�*�W8R5���_��ȇcA��[�6��[��V�Ց�6bm����v�����bӕB���l���i�.3�C|bόY��O��'d���`I�"��H�Ȟ>Ȧ>Ȯ����Uê'�\M�\K�9�����3��?��?����~\���������������?q�����ϻ�Fo�߻�n���ܟ�߻oݷ�o�jt�єId�$lj��O��d�q�'l�H!�0L8̄|]�Q��7���[A�>yd��XM�� üf:���#��������H�^��u?���W�� %1�щ�*��Y7����0�KΩe�J�9��p�-�Ti�L ϩ�5Mk��"H%��Y��l�T�,4mUKX�o4ӓ�_��X�- C�Xl�S�q�|$:����4����w�y_N��e�"����Sr�kW$����e`�B�<C��I&�NǬ���R5�bC���������:.�b7����ؽ�u�"/E�N�������W� !�=D��+��vɆ[LI�=.������.�r3��2��P�����Ϥ�F�TmF���YG�)�񚝧����j}O���z�^�%&�����c[,�=�do��g������Yi�kM;��$cNӵ���3 ���4�����7��x�6��<M��x��l�'����w���&/����/����/����6Ⱦ]�{��~��g��?�͓���?�'��~̳ٿ���7�������3s��>���>|���?���������߿�������o���r�������� ����cNL���v�ә�IJ�g�����Y��bY������e�dJ�[W���S���,���}9!��NӴtC�L�O�Ӭ�c�У������i����&R,�+��.���/w���"�p��K�O��ϓ-@MW+��+u7j��nu�^y��S
���T���9ӝ9�1F9[�yWT�����N}UqM����W�i��κtïa;)"9gJ��]'b�����`b�r����������}��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!?�|�x�x�8��0� ` #�X��1Fa�r � �I$�I$�I$�I$�I$�I$�I(��(��(��(��(��(��(��(��,��,��(��0��,��,��,� 0� 0� 4� 0Ӎ8�N8�@<��8�N4ӏ<��<��<��<��@�<���@A�C�<C�;C��?@??�>C�D?_C���C�@?C�?C�<C�d;C���C��C�D?C��<C��?<?�$@����� C�$@C�?@?C�;A?@??�?A����!��C��?�C��?��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������mP�P�]���� C�C�;@;=@C��9<��9�8��4��8��<�M4� 0�M4�M4�M4� ,� ,��,��,��(��,��(��,��(��(��(��(��(�J(��(��$�I$�I$�I$�I$� � �q�q�aC@&�19�8����!�����p\��,C�(9s�-��'��V3�^�?0����9A0&$=���Xب����� O*3P7&)1�<PN�PA�aa(��`J~E�������^[)-֥h~��j�&4&в�P�ATV,�EܱO�������N��5u�����b��y[�p<X� �m�^�U������/<a��혞�i��@��lZm)hvP�6��~‡�Uh +h!���=�2 ���<6����pN��d�� f ȃ0�1� ��0T����0��25a I�&-P��j����V�4����ƜaNr��:N0(9N�zX<OJ��5=, �Ń�c������P���9Y9ڠ�ab�!s���~ p(�������a� �����ހ�� ��Y_Z�N�um{�r�}+W�:�[_F���[J[�v՝��!8��Ю W!�O�5�k��eq�x�n3p©@��v��:C�Lr� �����G@$C1�N:GC` ᔑ5 ,�?�خ+���q� �~����l袜�i����!qr�����Zh24���lh:5'��MF�����)H|��W���M�̂�' �D�%v\x|F�%�E�� �=�����wG��p< �`5z]�,�E���<���PG��"=kb��0 ��� �*���� 5a�����h=
���3���]�a��*������X���������zF0
���h��JIL�4,)S�e��*2̳<�Cjܘ �Ez�z2��Ό��@蠭������ �\g���? ��u�ͥ�J4ƴiM  �V�u�N@��9�p�+�[Q����c�7H�W��� ��r����Mĺ]A�t�!�|���J��O�����m-Nҽ^�W��j�z�^���V��q��j����6������C��aъ��]~s���󓗓��s����9��$������}�{������������������\Қ�����Ji�f� �3-$I `��N3�)�g �� C���$���CYau�vk;9|�EQ��� 5��#rS �� CP� ��vk+P�3Y�C<ΙQ�`0# q�2������i �8����bTC@�?�e�y{e��{.tS��������i�l�I�ݻvA!�E}}���X Ac�ȝ\% ��`,8Fs� �1Q �6����W�q��܌7���A�ڶ�U4������Q���[Z�YH1�)mI9@AN���a�f� Cs�b1]))1�`H�d]�#h�����=@kG4 )T,'�����z����Gp ��
��D����Kaz hn���F��Fz��������hl����Mx 5��=����4 {�s`���D
�!5�ThC��g����ٱ|�7/�Â��8,�A�Xe �&�(�#*�Ǝ#0������������6چ��'�է�է�'rf�>q�����=3>�Ƈ����*mI�w(������9���wy�����k?���{.�4����>�� �������VV��V�V^��Y���'\����� � ��
���`�p9w�ɇ`|n;p �H j�|�� �0��K�T�)�N�p's��E��=���G��3,`�A� �@^\8��2�8���f6sh����j�$
�"����� ��v9�fFK��"Te�NC�<d��*�ۖ�[��?��.+w��h�G"��Tx)%�6MW�x*{�*�y�§�c0�2�����X_b����Znݻv DT&S�������˃b_�|��{m�ը�߻
�������Ս��u�2���D�S�eFT<-�[9p;�.����ȡjL�IRb9 ����h/�*H���mK;;9��#;;1 ����v3�R�ѥ5�sl��u_c]� ����7àr�*J���[��E,���1Kt����<�qB}DQ���x�M�^�W����uf����v���U��Ӛ�W�߹�j���r�ч�Y��s����r�s�9��������s��O�~�헻�����ۯ�������0Ř��! ��(�M �A��*��9�=��^E$��H�P`a�0Ø)�
dl�H�"��c0f ����G�ii�B!�0f �LM��ĉ�!"᠍�.��r�G4��3,�@l�rf3�p�'
ji 3(���j;C���$N�9�> ~�,Vgm�ޞ���� �7��1c��s��&�;^��AЎ�}}}ç.�ؾ6��Bup��C!�^ N^#!(����� >b�8��m���`Z ��e'�lLl�!�J��,-�2B�ғu�ځ`E��I�i�� T��S��T�� e��VT[���R�B' ��ы-��:��i��̍@���m*�.R.�����r�������`7����{O�N��m�7����:x|���[Z��h@"olѵk ���~Gl�щ�$��Q F��d&��qH�|l��~p$N#����p�_Dl�"7F.�d���2\e�HaZ�kkU4vڶ�Ҷ����Γ�'9N�cei�����G��ˇ�P ��3�����c%h
�';N�:1��w������������D���׽��1h�_em��c�{`^'�=�����ު��@U�[SWߴ��)qX���v\Trw�1H�v��\@�7w��Y�� E�z/�l,t����� ��rH`. A��Ng��'�s$94 �p�d�М���%�Z���XN�GF�L���R%?P ���e#5���h�� ��CT�(�*T+�2T37`.�r��8� $��LQ$��ݠ`-���}$[E@��ui�պ/
frK��^�΂����ʯA�t��#���Lg���C�
h�&���l�k �L�I��JuuLU��Qi"=$G�p�)�uZ�f��T��V�j�u][�j��9��:\Ot_�]�J�ը E���#]
�������F#=cz�b1��ccccf�s5��2Aggf3��1����t��EQ�����T���3E`*1�y�[Z�5��it�!��g��y�h
i��}>�M��iޮ+��"�^����V�[[[U��j�Z����ۯYٌ����vo99e�99y9�������9��'d������헳����?~�����ooooj��<-p2I���8z
@b�IQ���t:B(�CP�8c(t1 C�Х����Ɛ͍������6*�x��@.ccccV7�xƾ����1�W�R�f�8��%*�XSqK.’�w�p9�� ֔��,� ��S�O �g��i�C�B
0Q� O� H3�� �� 2 X'�?�B����T2�*a�� C!O�O5���HP� tPT
��@x��( ��#�N��Ic8� p��/� ʠ̀&�qw\ �]e��9��Y���@~�r�A���h �ŀH�:V��ʛR��$ E �zp-N�*����֨ZSh\l��:+0�������g�1 ���/�9`9 p;P٢�1�E
�ʎ�d��Gz>�#���^X��������|l��w��FɁ���;c7�� �c(X%6��2-�f��gM��h�8,C���7*�Â�� ��(�����ɉ���+XA�lZ������-��OS�Q�R�&R��X�������4���� h(�N�\V�[�O����9����99�n�?� g��,���}���c���/���Ƕ��?�ByV��/U�U�C1$����%�GE�0��n���=��4����p!�����n�#�#�6��B9�rg8f�����#$�t_�X�A F- �m�� �SŨ t�(.�r�!4,FBB@ ��E�r@��$dm���"�1�)����x����`��qe ;��=�=�+�(���=�H���cxF��)-�7�S�4� ��_D"Xhe��p�'$���f�-�E�b[ggcv�������ؗ�r�a]���оrM���N�(�?5l⌠΍0� U��}}}|�&��}}}~0"�W����� ����������cb/�F���cc��lFk5��
�������� �E���I"Ď#��t-`�mk"�f�N���h�����{�S��@R�Q��m5Oi�z����5�n�[���m���N[�Z�߿����uՇ/�]�����Yy��/>^K?�s�'9����/;����������?~�~�n�7��Z�����1��%G���@ �J(�"��E�!��t1������X�%Fb�����C&65�*��)_____&C����_Zn&�������#U����z=�4V ��5���2�SO�ht1�nrI���Ӈ#��쨶���ȟ��* ��? ���$�7R�h,�Wnݚ�j��r�Q b�����Y�E��^7
\�m$K�@&�;\�? р�6v�_F-� ���i� �l��5�%��V&X/�ь���QiQ򐆡 \8V:P5�
j�슢z��ͱVR�š�<�M���'q�s�v��r��|�պheC ����=_@���z��}��R0F��5m�z@�-1҅i�z�����9{M�=�Ɂ*�tTl��/Z�qQt�&�4B9Bj������llh�zn��������� ��ᑹ��f8D"6D2dfɓ)�2dd�(-�Vږն�ڶ�4��ʃ�����1��N��(�~\??@. ��%�d���Z�����T�s( `3������̅�@~�}������5�����0 ƈ���on�����s��m�֞���i[�HNt]{ue}b��m
BqÈ�����"�T�]��/2�A�^1x���'ϋ�F��=��#�/��;,��1k�x��mi{)�?���9 Ϙ�� _0�?��%,xaf�܅����Jbp�!�h�ZB��]`?H2H8Fp�'F��3Dh�Ud͓FO[+']�5�];�pj
�d5���&# M�i�����'�7�u��"V�[{������W�{o1����;v���  ��s�r#�/�!�������A����D��n�ȂxЂ�cgC���Z�a�2��Ґ
��=G�X h %4$�Ҁ[�-�3�5X@�� h h� � �h}@+��\�@� �hP�-�J�����i��@;����t2�S��V�>�?�@��@�`�0 �+!��@-`2�gb�� �rڳW��ˠ������}��{a急F�Q���m5O�����n�[��cU����-�ƫZ����{��������99�Ye����O��g?����}������/��w�������{{{U��n�� a�~G@�X1���0�D<C���_�P]l�-�vBP=���u�� ~ `-��x SA
�tB������
0SAF ��臈pB�����S�-E � 7f���<���h���������֚����ʏ���F�-�����vS���r!.��9 �8������3H� ���(�'�ؼ��pܠ�Nr簊Nq�}�@���[eCPD=���������j�k��$ �WU�*��U������MR=R�H'2�3F��2<?�։��/Ll���3�<v����L�5����B,/�+0Ez/�m-�E�j�A���;GO(RE�^$=�3`#� ������'���Lؘ���b�i�9
T::�) ��ظo�����`����T��NLΑhNY�9gd��d���L��P�҆�����MP�3�(MS*O�V���@��P������ʱ�Y?�����?��?����?u���c���k����_����׶��?{ADz�Ǭ�WeWzEp;q@� ���#�0t�)s��� @k$����0)4W�H��^�@i,Y��S8R@&�A�r����P*�S��=Z����,��Ƃ`X ?7sh��Z) (G�����d�\��?Fj��̑DAp&mb�:`(�]Z�����Q���y�Y߳j��@f"��[C�W�]w��R�\\��5yj�v���@|Ut�rL0hM>/�������/��Ц���A�圎��� }������$�TʙӅ@��?"���H�!e��]�uF���ݻv�ذ��v�۲0x�۷n�V��u____<��___^����f�!T3�Y��q�HA�j(�EQUoY���*�^��@�3������=�s�y�)Q����}>�O��b���u�n�[��=�l[�Vƶ��q����~�������Nr��N|�9����9'�����������w�_�?~�}oooj���(�!���x��vt1�� ����f3ɡr����}��¾�����j�v�۲d��v��Р]�v�v�H��k���  ��K�9�q�A"�Xi �,T�T�"��c0. n���Ծw���S����;�߷�"��'���t�9��!���I�9w1���b��/ 1шj!7fnA����p�A�(�k� �)�e��E1Q�<�����l���wR����V&X����V�Z%H
�H��7EH
�j�f�UE‘D�\�A�_�� �5a5�enPxK5��k���?G����U�?��v���΅`.+�Q_Y�y����r����y���-�-���'��U@�'���٫�y��D1 ��T(����ȍ���q��� ���G6�8�~n* fcd"�(�]�lF��#`b��k��������+=N��4���S�9�t�Δ)?.�4�]Az }+җ�Ԧ�be�b��b��1�W?�;���F�/���ʿ����*��
��k�` %�o��.=�Ǵ���x��K{O�Z�G���'"<T{o�n�5����0⻃Q�~��!�wܼ�BE��6��#�> ��y'j�����:Y � �4�2�w3���.� <��8 Ha�Z��ax�$�oI<�"� �����3gBh���H�b�uIFn�<Fl�j����np�?Bf�`e#
N%� �_s��� �'3]Q`#h��뻋�V-��:���)�<����Q�PV�3{ov�ѳ!d�,��s
������Д�'��gML�߷�B������%�;v�_ B�66t:-+���&eL��i�@4
!��%;�۷f�a�w+���E���۹]�Evtw+�]��۷nݻLf�۷nס8�������LA�ɚ��f�� q����E��*�f�W��� � @����>�a�{�����}F�Kt��h��i�Z�ݭ����ݭ�����۾��������O��99e�;�y,����O���{����{g�����w����q������j���� \��3����b66665� N]}}}}�����۵�n�P�܎�d!��ݻuv��Z]]�v��`x5^;v���ra�\�Yăt&��3��X��zME���Q8hA^/�w$��J/�U��l�hS����r�C�?��6F���A<-0 :��ӂ��P􏄈g�%,a&#�$�;x� ��w��恕/DM�Q�����������3U�!mZ%,����+z�J�� ��C� A]VQV�g ����YX� `�-P���{h�,��ײ�z���xaW��zŵ��Z�����z�k7��[
j+��������zGד�� ��L~h���r�b�t((t'HR�M�bٶlZ6�ŃhlW6����ܸp�!���y��u��u�����z`���mP���&�)O�T�N�EP�W�6�P^�������[J���nnÃ��pI����� ��~`��s�Q��/� 9������6��>�r��r������P��,~�V��T�x)~���������������A ��0�w$�I$��#�E8��A�'���[�U��bq~�Fyb��&B�e%�c�I��.�u��pwH�XgX��0��Ĉ�;`��A�.B'"�`H�CD�-
�9~�,X �!$; ?b0��Ep-^����pX)p�ǘg� Hg��������1��i���W� �x2�Nj��#]� P` ��hǀ��kY4���>
�w��P p0�0`.�OOQ��N�L8 �����p�:��V~���1�u�����S��B�x`WM��@���� p1�9��t��ܮ�� K�d�,�%�2���:K+��yf�+��i+��v���۷nݻv����U���2+�V6666j�0�5!��UqeY���*�^��A���C��>�s��?V���: A�tA����:��z�lj����Z����o{������ڃj$�� \ pc� paA�]@��|�o�0o�x �t�/�}�/�{�|�.�v
�!�9�惘 8������2�� 0Y^
�,���+��l �7p7�������:/�>�cf1��D�͍z��___
�j���nݞݻv��ܜw9g$�����I$v.:��r:��=!.�n��]� p�hR�<c�1c�e@�������@��2���8��TZ�d,�d'��O���(2�P�X� �H?'��,��-��ElV��*��*���� �� �_��%+��,E�d@
ɣ8�:*���*�EqyDO$_�d�pH;E�����8�o)�_mI\j���^��6��[h%��.4�T�>Z�h a,(d����*��iU��.
�)|KX �XRX�h۴紽B��LOT���M��F!e�+��B6dd@E����Iu������ݵ葤6����_O���L�������;��R`�*���O�t"���+�Sa#&LАК!�5Bh�QLƦ����Ԛj;5S5f��`"6&��b�1�6.0��v������_UV�*4���'��i�S�ӝ(:Pv���ĀK�"� })�)�(��Ġ#�?TZT~�)����O�sk�s����^�ߎ��)}�ֻ_m)U�>:MBn�{o)=��{Op- �6{O(6��޵�9�^��(����<��յ� �!H��#����T�JU��8�B����ӑx�C����"�Ƙf�ә~Mۡ~ 7:���q��pO�b���)��Vǿ����0:a# ��bDQ!Bh�p�� � hE! ��� �#6R00d�
��(\c]�$s:s�6�$^L{�'�9�_�����=���k镮%���+�Ҿ���FXP��"�b �Ns� ��E���Â��*����Ɗ�>�}��˿ߓ�9Ф���ݯ��
��v*����!zII��!�e��n���K7I�4ñ�Btt��tB�vM��t�siC��t���
����n��� z�达�0����cccf� ������"ʳY���z�;:��D���=��1�<�J].� �:���tA�b��
��i�mkj����^������������Yy9y���?�s��'~I$�w�����ߗ��~�������{{{8�#���lk���)�� /������k�r;w#��C�sw#��L�u�����u���Ai<䛬�s����w7svg �,�2�0@bH�u�!��q|͍}x�Gs�v|��Z���e�<*�����a����B*{9�s��s0<�d!� �9'�V+'�??�!�H3�w���? /����j���,w�ޑ������Ӛ�2��X�n���2�%�Y�ǫ�+���N[���u���;��A*GH�Gj{�L,��ٍ~���1WN*�-� ]I�WN-�+ӊ�1�U�ڪ�М��sz9|z:8x�fV[V����w���SRØL��S!�J�B��Br�!�t���a�h� a�L� ��i���P�����/ޗ�K�R�l4[j�x�ej����U
�j�i���j].��iLRҪ�|�����y��������e?��Ͻ�,Υ�|�߾�>�l}on����om�����X����WeaɁ�X�#�"��3���Bi��Cbqyu�?�C_���=�fN�t�|�\���㧻���A Kz����-$��_����5b2NB&��b<ɲɢ
�H"�B˙a�� = ��N^;v���X�g'�����i,���{��O3(2���5M���� �i����@�/����c_������~s�u����ُBٻv�۵�t)cf�P��55Gi(�c|o�N����Na�c�(a�9�K#dl�H�#R6AFX�0� yn�a{.2>��y�}��A��e���2�+�jWǂ�+%d�� 4��%/�9γ�{O�� App�ַWUuf�YU����������gk�C��9��R�t��K��t� K�� �S���T��������}����������>rYe�N^|�����r|���������������X���������{X-Сb1����D�����۷g�h�n�u�����$䜓l�s��9�ŴF���7U���:��9�P:�Α�n�4�$I�x X���-C�� "ze��nݻD�r�^s�ժ9~�e�xF����|*����"aв"O�s� A5 L���:)����dI:�����BQ$AF����`�����������5�i��l���Š������ҥ�e�V�E���h���N��N��9�¸����K@+�$b�lE��&�kU��?�ŷ��h �� l��x܈�m_e��_� ��(���f��1�Đ���������@ k�9{��[x4}Dz�а��&hbD%�&�P�5D*� ����D�QѪ3A���f73d�tj$�͌�XD��F��_��*կB���f����m���J
s� �(mA�f�K�t��%0%a)}J�Gꪤn���W�����k�d#^n����*N�}u������5�vV�{O�i�й��������6����hͨz������WV�F�� ^W/� ��M��H�tE@�)%��H/'��l�R����{ ����.vM���j`����!!�e����Dd�L;�&]��������2d���6Xd� a8I+���2��l��lW���t+�0�˹k�q��V�:I3����.��������=b�0��Z���*h�m ��E��C9�s��d)�o��_���e����̽��r�V������BY�v�꾼66#:�� �F ���Ns�p2�9�s��O#��I$�����$���&���g9�9�9��� B[��ݻv�6(�����׌k���Zڲ,�5��\W�Р� @�!�;����:�9�|�6�M�t�].���\��h5��X���on�^����+�{����,��Ye�N^%����?��w����������r����?~�~�oook��D�%�^%�^�S����������I�F$bN$�N$�b��0}��}��}C�c�J�N$�*�8��$�P3h{��<��p��҉ Kĸ%�1�e12����Xw�:H�$�<!I�Z�3� �D�5��n�t�g9e��Z����<����������zFA����9����1PH�`��'��% s�w���"���m�ެ ?~���{c��R���0��+u���|~z��c֚,֎��������:�P+��|�]z��Y�%{/e��/��:�/e�P��eu��ơ�]e^�{iJ��V���k��.RhA���Cw���k��Xs �]
d;)P�PP�N��#.f��W̜d1�1��4�sR��
3
��6 6� ����.7�]oh��h��Ɣ�iB�J�5C�t�K��jU��SJuM*����y��?�#O���?� ���/e����?�����n�f�on���q�ۍ�Q�i���ǫ|z��.� ��vp�J�,[  ��5F%��&Z�-IAh������Bj#~,�,���HȽ�i�4�.������r�i���Ng k��B@vMd:dՇ0h�ɓ1��#
�!a�0�av#�ŀQ���r�)T�����d��oi C[���Q�H|H����{9��Ǯ' �����@g������\����������������x��|I. Ll�vbE��A09G�L��b,�9$�Ȣ@ܙ����B�\ڹ'�'١O�'�'ٌ���7I�� �t�۷nò�믯����������ʳY��j�z�Pj����S��;�P�:γ�)jh�K��t�.����h:���1B��Q������W-�ۭ���/�,��9,��K�䳟�d�$�$�{������9�ow�������������}}x�LH!��r;w7e��I˹�9'1�Vs����eL�/'/&_ 9��s������|��# ����2h��h�U C������x�������'/���U���l��b����D������]
�?��9 �h��>^�pE+A�$�.sc�����3������?�_m9��@$���ޭ�<|���6/���ږ�i[h�T�j���x x�j���j���T-֟��|Jh����ZSY��qݴ��ݵ��V�j�P��a���ЅI���hmmn������Ū��~u_[�
��AA };��_MiH w�^W�Kۥg0�EЮ3a##&LЈ�M�P�!!!4B7Fnf���Ȁd52 LɆc�P��B�AѨ��݂
��}WZy�kN����kLҶ��,m3J�1*J��I��� �(�����)d�X?;Tڣ�E�H
�� I`+�n��9����y����u�@�~��[_���`�I��ޭ�=�iꞵ�й��kR��Ҷ��X�9�j��kL�ףmkԽ��q�D���6&��M�Џ$\ ������q&�H@Tc^g2Gs)f1X`{tw1�삄��I��o����!b2�9�� a�6�)DDEö0p�6 �H���#�H���#0����\8�v\YsD� �����#�̉�� �_�����rP�����}��R��cO���}�g������aG��~����c����]�=��Ͻ����۷U��� �������aH*���lN�d�}��U����d.�ϲO�vD*;�'��3C ��s���8⠉,�t�۷@���]߶���ֵ�"ʳY���z�K0�<���yN���;�Y�:�Ԧ���m-M�r���:������u�7���^��Y���߿���������>|�9'��$����K/����~���߾���u�����_u_v�~*���n���r�WY�s��69�|���U9y9y�V�����Ye�YB�9�NYy9BI%��E ��B- C���vv1�;b�Wݻv�Q�ˆ�r�����}�����������$[o���)���ߜ�t�Np�E+b?99����'y�w��,�߽���*�Z��߿~����`��u�]��Z�2�h`ZF�զMV�գV��%�<-�b�"/+���Y�^����e콗���/�k/e�^��������/F��Gu��׶��H1���ޱm%Q�@�Vn�6U��[��Xs �]
d;)P�((t'l�d��s"��2)�C"��hR4���5,��Fb_\�f_{-���/�[/��_j�`ol��m��)Զ��^� �>\�Zf�4�TҭT���������4�?��R���e�j��|�������@�n��[ۭƞ��b�m��k[�Z�ڷdz8��l5�i�����/�cL�ɻ�����+$������?/Bx�y��~O:�S���]�,`��B K�,�3b0������"ca �W������R�۷n��q���g����0&���o|��o���kErp88쮶���Bz�K����`9�߿�����[�}��G���f7�M����}}�.0��ggf��tYZ'��p�Ŏ�I'��.C�������ȿ��ߓ��G{$��d�jF�s��9����n��w���n׫�߾7�����ʲ+����S�� ����<�p�S�w��y�~�6�M�ҹKt.� �j].�K��jV7������n�oۏ�_�?��9�e�������s���{�|�������?���{��?|~��������ܨ��sw7s�Ԧ]g9�s��ľNr��q�S��������Ye�YF� 8�99y�D��j�D��L�!�D;1���_ OʌU���n�� %�9���ڿ��g���������{����Qg�y;��Epe�F"�`��$�9��x|�q��B���E��|���j���������#��ΛZ�m����Pڶ�Ҧ����F�&�4��4��M֓E������к�����-����G�)��u��޾���
L�����mm*QDE��ڽ}��:� ��5��C���DSZyQ��^0�z�а��D1 �%�R0���
l�dd���E2�C1��E4�8�rh&�M H��oB��ņַ���e����6-6�����[X��j��Rt�t���d�J��J� *� �w<���''9�s!�����&�)���޾ʵft�Ƕ������Z��k{k{jڍ+mkj�p�F�6���X�f�6��x�: Vf�Ch�Fy�2�WZO�$�h������ �w?�Y� ��9�s�)�v��U�s�����e}���.`��$g �ЮDØF���ra��tLF.��\�t����Or�Ә�/��WTB�l�|��p�>������T\�� ���CKh2���f��GV��(�6$�%�]$�D$d�����`�/��.��1o(��U�T���;
�|'�^�@qj�iF�aG(�v Є`
0� �� p� i/%��_+�l��r�*eMa1��w��N�� ����I$/�w����ao~I'��A��쓟g9����7Ig,�V�ݻv���F�ֶ-z�[�k"ȫSU:�~��{�C�{�g��<�y�~�<MR���5.�R�5.�K����m-M��=�wŚ�n������y?��e��,���������?���'������{����˿~����okv�١�b ��r:�I�4� �9�s�SA���Yy�0�v%�%�K)�+�����A�9��/'(��@i�Ht �� �d�2���� 0+�&�L�*�S�L.�C!@!��L (5�҃H V�b�3��t�`I�&: F`�� � �?�?�?�>�}���q(���ǁvt��`]^1��P`5�,��Pw�e�)� F� �� ������q�=@��w�[| k�[E= � � _� ����m����4��2n���ER�e������h �{@ե -�Y{�/B�Ȇ>����K�2���e춣� ��{-��iJ��e뭮�*PB:y�����]e'�p�6�U�����G+t]C�̰�2���6���H����ESLШg��!�H��S#0������ ���`n6aol��ى��{gm�mbŨ*OW>P}��U�iV��Z���?����9���K�g�-��3���|~����Y[�ֶ�Q����j4�Q���X�mc��<���Ѽ#���8��Xr��t㿟�e��e���q�bvY����Q�����$��~4����O���?-�n��x�������A`J�r�X ��,E����u�b`�� N�(�� �Lߓ{ ���¯�b��������n���%ha�1����4�`"X+�g�'f��e���@�����~��Гoߟo?�������[ �9��v��_
��������Ά��'{�$��x|�����,��w��ȍ�I;���b���d�s��*A.Ns��t�����ww�߷������r��UUU1V�P��{����<�3��;���I����j].�K��D�Z�M��i�j�O�|[V�u����߾���Ye������|��O����������������^�����������D�:��GY�s��9�'9e�| �,����ְ�_�%�K)dM��s�瓌������f3�ٌ�V62z�����۷nݗY���?�u�b����}�RW��߷�R9������L����,^�q��ٍ��$@�� A��kbȾ{̿��臞���X���@ (f����i��Nm�V�
ը՛��+J�!H�P��jT'��#�T����U1�X���`���*�
A�*G�)Y|�c��sLM @[p�����k{��~���k�$N[@'�֭]i�0��YylG!����� 4��*���RcF�!6���9!W����lU*ˠ��DC!�0�� � T���8hG0Ԓ6#bX���x�,F2HDc$�4�4�!4B8aE���L�:å���Z|�R�7JaJ.&1&��I�)�)@
��GA��t�E���(<PWR|�KRr�aJaL[��]��������°������>��:/�������i�G��_�W���A�
a����WӋhZB)z���}�� �H�P�v�t|��~ᛗq����hXq1��<�U9Wr� �g�� ��E�����3NfA�"��j8nj��%2��k�>�w��OA+�/��{��ѰLd�@$Q�2RC4�}��"A�� � |��p$f��hS.6*VM�F�N�n�u�p��ĩ���&ɻ��2f�q�>��F���h@ *�궴SR{O�܆<8 Q�n�K%��T�5��֢�]QjF��H�0�g~��䳟�6Z���Ue�ѩ]���J<<ݺ�Yl�Cb�QTT^ �/�JiI��pf��I�C8����n�[ �q�5���
J�XUUj�����hk�SJ6 ��ڍm�k��l�H�Jv��[t�77�*2Ɣ�rݭ��c'#LeFy�9����8P-�u������Z����{s�u����].�Kt&Z���b��U�����WVEun�[���mkjDZ���tt^��z����y?����g�9�����������?�����}}}����~���"���M&�NI�ĚMI@��f��E����=����sz�z�gggauֱ�W���������u�W��E��?cb�������|7HAr���o���(�&ٮi�\Yr7��DP�' Ǭk��%�Jr��ο���{����{���>O<%���Z'#����ݻvJ�p�7\-�;p�[ KF8-F'2`��(e&/�
s�^-2��lr)���*ڐ[�~��h��om���.����YU�U����-Q���*)
̇f$'�Ab��e�5��50�-�?�L!S�4�sxRQpփ�Ҍ��%���F�@��Pme �(T
�@M]B0�G���)Вjc%����H)������y(�� �X+�0p����u:L�*G#@G�@G$23, �����q����FaIi �b,�O>�~�Z~�Z��i+Z��je)�eI�u XAV|�ۏ<Bv� ��!S��R�J�ƉtӾ]��?��
�y��<G����o��^���e�Z!���kvW޶B���}k�_�8���H�N*8��8�����7)��oL��<( 0���]�zY�M�e����y�&��_�V:��<�����* LXI��м!��-A�B��"k 9� VA.��Q љ�)�NQ�#����rh�8D�Dz�(Բr�c\h�T���tsgm�9A =�8�Т:�񎆃�͕WW����eAy ♡D���Nx�����H8+����a���)�{�N/�����:�;���Z��e��7�J��۷U�(Z6gC���bI\I2��:k����mWΉ�����B�tGEh�YDs{��6IQD5��L@�׌E�Elk�llc1���q�G(��Lʅ�R�uv�C<�3̰�K'�t: �U�ȯW����V�������u�C=P�MR�t�]A�t�*�UZ�V�U���5�Ȳ���ƫZ�,�^����v��}۪�x�ht?��/%���|����?������������m���}�ﯯ�߿~�~��>���.ǪH0����L�}�S����H�}�Q�R���{Os���;ǔwx�(7<�s�y &��:��:�Tv:=�!�=�^vX�A�L�a�w�g�Ť�D�k�Dc$f��i�#�Ą�E��I6��� ��|�xؗ�_֣���&5���A ��ˡ��ns��!��N�dJ>�n����r�%�k ��ؖk
���0+�
|�zC�c�ٸ�M���׈�m����y� �Nm[[J���7 � j̖%V'+* ���@Rl��B�yXn�a]Ad�~Z0�:����B(�ěs�\Ί%��ߦtJt5��m/���[m�D�]-�}9�5����� � ��7{���5�����i��)2�ލ�Z�4����aH2H��2�3�q�2�A�A���f�da�!�f$ ��B������H2F,!4B�&�J죊��֧Z��V��kiSGi�I�LcLt�����T�KG�O
��=1)Z��JE'�j��#5Gʔ&1%w<��s�w����W�w�����;��wo�,^���_m}����]_V��_V��B*�omUoۏ\>qP|I$��]���#>�'.��Ä�@�'���:-�R�a���/@`D���'�T<�s(����"枋��y��2HN���O�%0�/i�2�!�܀80d�� e)ՇH�����ff��p��#
d%FS�0���D�}��Øq~/��� d���=0d��v�"�:�G��%�dJ�2������z�o +o@!&F���K�D5���fK�c�:�N�U�� "=%E��Qʸ�Y��kP�t;5 y��eYVk3V��tUEL;Ue[��ŠoM��eFn���a%��/W������]�+��}�Ԏ������2����U�b��}}�h��x���t9cb1����5 C��qDr��:��L~2"���ʯW���u]U��.y�ü��0ǟ'M��T�].�K�įU��j�Z�������n�j��b��Śͽ�����������;7�����>|������9>N����������wۿ~���?|~�G�p�;C���Q)aht:���)Y�ٌk��������5!1W����#_____9(�W���}z辴�`K�E��ȶ������@�I/�#3/B�t7!���)Œ(ɍ����
����)2��3&dC�� a� )p�LɘK��%��8�F `� `ӉĺK��Kɚ���h1c1cR�%ɐ%�]@j_ x�B,-���Y��X �$�@���s94��p�70��m�w,�"���_e&�\���^&6*��{u�^��|�)hD(���`�����e�#U���ef�d]UՅ5���6/�C�,�@���^N�B��2� �����z~bk7�ޢ �oP�F�����Gzb���;��=⁛��^,<~JFj�揯��c�����DH(�h�g��3�q���Pg���1�f��`h|jaI�ԅ�:��
l�~~�X��i+[I��P�L�6�BU�R�ԪR�v����z�UUS=S*j�T�Fjji�.��?��
����<G�ϳ���_5����������W޷el�֯Z�j�orb2��5��Â��ca���%d2 ؎q��#��9�S�3u1 �?�� ,��s��
X����H.�T���\?B�&.l~be"���V�,���Ŗ6LEPl���"���!�`��BR�IB٨N@�,Fr�E��wGyÀ��O���,A߄k4�����@���r-�e��K)v�`:B:����hJ�X,����%E��huC�xLkkkoo%����w!�+{_�7 9�����y�&s���|����1 �<ҚS\�
!�1� CQnݺ� �@t�۷qr��x��x����v������x��
����x3-/�������Ƽb����,FvvbQ�P�bGC`��YEz�TU���1N�s�w��Y�ss����j�K���b�U�uV�+�5��f�[��Z�ŕf�[�[��o~^򺺯�P����K�~9����s���g��?�N����}�{�������ۭ�����A*���C��C��q����F�*�F65��� }}}}|d_b;_^�/Q#^�:/W�7n��ݏ�S!��ۣ���!z�ۢ��Q#tv�viL��3���S7$�h�YP6��،k�h�s�'>��~_��U��,����ߴ�Y����".�s��BR��7WsH��2�dF�m bXT.��#���aq<�&e�N��z��? Ј0 ���]�`�&V����m�y.&6jڶ�m*ZY/���Ŋ�&X++BH8X3V �J�����cV R�_j�V.F��]�l�$
)v�ۘ�[�fܙ���ow�������[��w��5�w_mBC�J�m�c�mq�6���G���a`cy��{O:Xvv)�7DCDl�
#tc�f��|�� � f�p4
d1�#"�<�F����V��5d�ٓ4)���5B�
K4��M����*hbLbL-�0�D�`J-%0%=J`?�
��3��EuG�L��.*@T~�QmQ�t� ��0���?�|+&~����O��q�������ᡫ4g_�_V�֫�x ����][�+tڷHD EK5�����nC ��t��XAp�)�`Q�.s��? RGBt'�)�:Mc���X$w0� d�ei#�� me�j9€�9�O X�b�t?�ӕ�ѡ#��D�P�,|lE�=Bf���j��ӂ�F�N�! ���1���L#a ^aT�"]��˸& �x�H�09�! ]�'o��O5 �VՖ��+=��z�l���C����O��\ (QNn� AylR��������-�?��B�;���T���b��9�9�����ll����h�UGF�ܚeL�* 0]r���$�B�}����pY��`ƒ ��HR���Lc �l �'�K@�H,t >� �'��%�h�4��j �7�0n�3�΁:���j0{��`n�TYEq^���j�1US�Ӯy�ü�:�a�|�6�&�D�].�KuZ��Y��k5��n�j�]eY��b��ۯ���߿{c��-���K�����ϟ?�9�����ߜ����������߿���߿~�o?
�,Q�((�G;P���y�:×,�)QO॔N���0�p�q> ���؟D�x����a� ��1J�PR��)�(k��5�\5�$E����x��X������mCL5�P��AD' T�8�"� ���،lk䀩�ܓ�FJ?���|���p@��za� {���R(��vsZj+�����L�P��&��ay0�$����F'�q4�G�k�����{{�j�K���ﭞ�%6�u�ګIM B��Z�n�J�*��@�ٲʬj�R�B���p|�D�
r��B�EJ=ϗɤ̿���}��?ū�j���!�azYB��МD�ҏ�T!����WFT�+(�m��'���]�ʌ��1�^/>����ң� "��h�Dg��g��C
C3"�Î!� #' �3�S=�����d��!12�(-�m3[Iڭ&j4�=L�+)��S%�T������^���OUUZ�Sծ��S�]��?��
������>���b��������D>�-�����Z ���W�^��+Aӄ����T ��Ř �4�b�_y��80�L��%��yd��#��D��" �~�r�G"�'��������+h�.�#���g����e� p�SY�2f2�!L�qE
D;(���C7��.a�l .Cj�]���� E9;��c��z,�/��SL"�e�f��x�+9��jc��t���1��s�$Na$���h7������~��YS����!4�7Y]�'U��6k8�.����S5���n9I�(�X0�[����XXM���K2���Ye��xM�Ye�V�J��۹S]�v�۲8z�������%1���Xƅ��2f�����-����Z��*�ꪘ�S�q�;γ�u��?N�MD�]4K�����oY��kj�f��V.���k5�l[������{�/{?��K����Y��������'��������g~�{���|~������u�����f��s�}��_+���׎�d�k�n�Ȕ��۷n�m\�I$� ɒ;uuu��*����0�����۴�@�U�I�, �#��M&�GcR��;�|�,��v�s;$|�������������7���9��w
�Y9�ic�ٳL��B:d���3b���|�8������R;������b�����{O1�P�mcm����JZ% e��� Z�`b��2(z�X�hv�B�l�[,��ӯ�{O),&8�V�v��'��>�mu�\Ѕm��k�8_=�u��Q�0/+���_Q�a���s_L�d:$O,Wе���о�ҳ�=���LjӢ6D[Dl�"6FXFp�#8F,�$#���Ɂ� f% ȣ2�����ɕ�HȢ�Fa#"�}M[yq�6���Ԝ�a��Ɣ���LIO��(=,���Sj��=R�R�ՠ�aQℼ�E��D��"���d��\�����O�r%��u� �e,��},����Ȇz����۲��u��H#�R��Wц�-��8 �q��1�y�Tc���y �K �,�(�L+r��&q���W���H�X�#�s�����1�H����'9֋�H�S@�ԄGs(��H��23ΘY3B!H�ٔ�Ն�lL#`��%ծ�\$��W1 b�.f�b��C-a�W�����k#�;��E���+ T�֫�k���&�T־�sm�h҉�|��% ���{�[���d����ʟ����Ҵ�9&��D_^�،�0�����-����a0�����9]�A\����T#��s�Q�Mv'9�n���n��������Ђ)0õ����#r���__^/�R�F�f�O�-���⪫U��j�:�N�<\��T�9�s� ��Z�@���{���>��g�mn�[V.���k5�l[��_m�����o�����%��?��������;�O����g��,��{����������c��VJa�k����������d!Ew;v�Gn�K�;u��=d�9�c�zn����@��.M�n�]�xL�n��dW &0��a��͔z=E�JD�-��vv5�ؼj8tw7GI� 2����/���Կ���\]���f%tv�����z\��,� ��G�BӁor �n4�8�&,IѨI������-�&Qc��z0��������w�<@T-7[(��-�Z'*��hd��
�� OJ�u�u��6�d���Cu���F�y i��~��b�%R�������]z����/����z��¥�X��m!����/]Y�!��<Cz���EVɂ�f���M֜ ���Qh��Dg��G��3�nFcF�P��� �!�2+��L�̰�i��a������b�\�Ӻ��YPS ĩ��S��(M�X���ԽUUUUZ�����K9@���� ���w�w�;�i����K�K�K�0���:�~Y�W��s��(�e/D��.�#��W������g� _�(�I���E����w"�?� C$fH0
����d�K���bM�6�R�q6���� J����ؼ���{9h�&9��̉��t.����v*d��d��E����d_d�K���; ���9��B; �"���:��G�5\@v��'
b���B�#��:9M����&N�_�KtX�N}���Q�,0�8���8.x.�v 0[D
�"�"P�B0��(|@��#� �M�l^����7���G�V
�S� �w9T!�l#Q�� E�,@�q%��@� � T!� 
���9fl`&���$ˁ�� �Y�cU�9�s�Jg9g7D�ɺK7Gn�";�nݯ����"������[ ��F63��Rڽ^�Wj�QN�S�u9�'��;�p��j���?���?���>ϳ��>ϳ�-YUŚز��u�ݧ����^Ͽ���q&�e@��xw�@�xw�P;�!ؕ�x��%�^%Q+��ra�p��u�P:�� �b^%�2 x��x��x�R�9��a� �� �o|��tK�V%bV%bV%Q+cbE� Z������.����ݻ��H��rH�}9$uu����9�cbL���2�}V�s��
�t�g7e���!z�r�\˙r� 䦉�K�2fK��K��l�
��JЫ��H��6F����W*eHTʙR1�h���>G�|���
yK)e,c�R� Ĭ��i'$RN?5Z�2��K�Hf��"�0��JE�z�#����6s��}XBZ��n�j.#W�����i����*æĖ�6��m��������� -R�ƴ��P<�R�y�M��ny� �$c=U��"S
��YFkm}�T̗4��[_m��N����QvDeCZ���=Xv_Jc��n�_Fu ~3"R5�5}�P�b(#q��`n<F����"i�!�3�az3�C�f��Q����v2�f�Ӄ�!���2���0�_Z����EXؠҖ����ҘR�iLI���i�����1Q��ң�F5H
�J�����(!�C�Q���7�?qY�2��'�<�/w���ۗv�TTS��V�v�����������=���i�iXBx;�z�����_C�F���: d�+��ż0�NH9��rF�k�܂��3�rH�!�&����$=˂��$�2ǡ�
�_����D�L8���72��t,l ��#&�#`��l0�L��%�0j�%�ˡ\2��aȢ�/0�T�7~5�3$�S��O�1������Q[�8WE�i�}YV�.� 1��L ~9xzF/
������ȋ���-Q����h���Ό�L!�������@_^����I���z�E��h��9�d[%��rO����J}���*ƄI����ک�s��3X9�NY�����]�;v���_v�|'�a3���[W���UV�U��ju:��@DyN��������@���?�����S��?����=\�<ԭYVk*ض���c}�{�{.��on���/�^Kϗ��ϟ�,���w��������{e������_�~����1(���ݻv�b#��}۷nݐ��Y$����y7Y�s��K,���7O9g9�R���Y�nl,:Nn��-�E��aq�(�gb1���K��r�s�Kϓ��,����Ҙ/{��h�����VF2�~I�� $��d��85���+( �j�����1�������������עj����^��p���[]��M �9 �f���#khn���8��5Z6j������"� j����I�4�7�6�S�R�gT~��z��u�g�g�g]OH�E�{*�E ��
3���Y�*X%
˵z�i�0и�����غn��D��D~�#?G�=G��ѝ�eP�s�|��@ڛ�G�E�#�+�6 W�����]�Z*-�LkPT�K�P��P�L�3G�U�z�S�j���bw(V�Q?�����y�x���������9�9{.�@�{,��w����|{����+on�������<
��"��3&0 �.��O_� Ƞ9_���������8���`�?����˚w?w�,��ǻ���1V�
$�������W�#0.����$b0���L ʇ�\]�5�_]wT#Q���ݻ�lFY/{����;��ُ�d�?�������{-��t3ld0�!�M,��%N7,
���?�����L8�����ү���1�"s���,��׫�ll�rH�8!���bo���� ���?�!�}����]��{����2b�*c�s�u�C��΍1��j7����1�,Ř��0�B��c�{�q�6��������it�\�\$�@������U\U��j�:�N�Q��<�& �0Ct��g��� �?�����0y���yPU��u�ݪ�[�������oj7�/y/�_������>����$�9$����~�헲�||����ۍ������ݻv�Ш�<w#�d3<�u��9�/O���7��9��Q�]���嗍$-���|�%'�t�'41 C��е�c;;�|�=J�ۣ�ͅc"����m_��}w�����Ɛg����dU(I'{$�l3�h�ÞE��q��������A��1DO���������ڷ�����ktn��VB l������ J� &�=��)h0iSB[G��1�\ht���Gq�0� Jh���hR�mnv�nc���� ��ڊ���-�Km���hpt%�߷��k�2�@Km��ھ�4������}�mdR6�Cq��\�x�*#dE�FȢ#dE�FȜ������� lf4545��r�t�h���6#�k���UcfM*Z$���-)h��2���I�ӘӶ���Gꪣ�KU *eQ�t��jNx�n�?������~���K����z�UM�쭿���� �������z״�WV������e}��cy!k'��Ŗ ����-\(�*pA&99!%���a������@<��?���5�F y���`%`_Lg����.� �� s ���.A`7&�� �B�ɄL9tl� F�tL!]
빕��'�FNa�.�˹���S0vO����h ��G����#�UX��;�Uƈ@��m�
�+[QK���m�+s���p/�4�?���/��}��*����hT��9����1/������H��얆������ B�g�'��I>�$�vS�I$�IU����fq'9�s�FG"���,�% �FQ:��W��5@�5@��M����Z�V�*��u:�LA\ƹ�0�`� �2��� @�4��g˞���{�g��T��n�kkm��쳵�V���w�$�����'���s������������l������m��~���wqv �����S��* ;
�WI�:��V��iF x�E�-��-��a:�vN��;'d��F�x��-�n ����\��$*¬*¬���H�b��]��.��.�w�С�N��!�t:'�̡���llE�Cs�u�۹d��e����me����0ᶻ���������R��"�{�O�/�9�v�"�Z����d����.9o��e�Z#���w��6l^����� �[ ��f�5ZH�hf��Aap2/5�;E�n^W������M�>^�9zx^7n^��z�VJ���׮�������^��{ Cw}^�{q�,R(����/]W��lظm ����Ph��DGȢ#�Q�8�ą�J�L�L�r��nR7@2.�X.1�\�.^�e��[Ev���V�m+i2��)O�T��U�z����+Q+Q�V���������?�-O�y��<<����^�5%콷��� o��_��{߽������Տ[zu8u8u8:
��o�~5͋��H0�8c�1�K������ِ�b������7����c���a<���s�� �4Wp��7G���E•�/H�]���\��+뮼]u���)���n�Ns���e�y�h:2-������Eӏ��ދ�˜�^�Y{9y�ez��bYe����/����Nu���������hfF��9��L>:�����٤h�3���M/ 3�>�:��'{�HxG��$�I$�,�{�$�CS�9�s�l/�����t&�t�ݻv�A�"��-���Z����jj��P�m6�A\Ĺ�1f�� �@�4 �g˞���{����O����v��o����5�������������y������d��$�'������e�{�?����߿~�۷nݏ���۬���c
U�Ns��3c���s�]g9�s��������|�U���r�Qd�����[ ���جlF"�h���x���1�r|�'�k����&0���=��������%�jI$�|��<�9�/��3�:Hs��Xϟ�?�5V��/v��� �}G�������z �A ��ǽ������6���$-xѥm�+i+K�La B�f/��5����im ��{m�Cm?�A�[�v��_m)-�Ж��ѵ����+wt��E
��[P-��2��HW�:WՕ�&��P��zl~n>7 Lj��FȈh��"Dl�r�����3B!3B:Bnd�n97&���IlXF���EZ�f�4�Ҧ���M 4���J�JҶ�*P�ӟ,,�?TZT��ƨ�AIAچT(*(=R�0�|
%�~����?������ x����_mum�5@Ue}[_k�z��� j����^��6�ּJ+�=k�=��[���^Hi&P�L@I \��w�I�Q<a��c/��`�6��s.�� 6�O��f���P{�<��w0�Q�K��s��7&�@ɮ!0�#�—2���X3]�Eš\ĺ�܅q��\�̸'��#�/ Qx�^��b�I�c����@-~�ӻ{�>�o�E��� B<# �U5�=�Yy�pa����㲏���{�5T���W��,�(�L����ݻ.���+����b� \���`r/I�'�u��y;�w�!ڟ�$�I$e_{ߒI$H|��s��9̾,I9�n���]�۷n�� � @��W����Z�V����}6�M���Y�0��:��h:���{����}����?����+in���{,�[[[{u����_���/���ϟ����������������/{���~����n���6)�B��$�9̺P��9�s7?���9�WW�s��YZF~Z���K�#|�����Z�l�ѭ ��F6665�!l��v�7rNf��Q�N��������g��w����������_'��������K(iG�s���+~�������}�z�r�����׍^S<]S��u���a���c�� u�MVѵ�l�v�Ӡ��.B󵺎s��i6_�Y��XVxvR������e�����l��/e춺��J�^��{��(QȨL�[W���a�t�6.Cb���tzZ#�:#�+�r�d��� BbB�E$Ffbټ6*�$.�.�Koa��U��[E���MV�Mm��<i*���Z�uS�j��r�j5
�U+�g���y����,�����xw,��g��փ�{����_A�������Ǽ���Ƕ���֬z��Ica �g��~���pT_w��I���q�?���������w�A/�|����I��?���̸�lYB���K�^9����.�� �_]wE�v���lH�������4`[���4v����f>��o�z��ҙK4���Ye��������v�����G����Y���9)�u��,��ݻ,0�}���ccc����\vS�����Hc�'~I:��������I��~I&l;�{��s/���9�sts¢$����.�Pt h��mTU��EZ��(���}>�OS鳤F,Ř���:��� g��>������?�����������[[[[Q��������~>s��,����N����9�����{�����?k���]]�ٱ|��9�s���t��Yg�p�9e�rYWYϖYe���4�ϗ�)�ppK����Ql�ڤ���v666665���9}۷n�g9���$���[�,���y������?����+���RI$��"��6.��'s ?��w���m���_��aYn1v�oi�~ �)�޾�^�����A��޵��k[��omka@�clbmcomckX؞ړ����M��o�I���/l��Rێ�XIWځm��چ��'k���o�_�;u���m���?�V-��N���)T��h�h;5q���S6�f��r���TF�J�L�Bɓ#
6c&l�L��F�D�Fȇh�f�!��ܾ�f��V�#J�ZV��VОڶ�J�X�m�h���/��jũ����B
���Px�2��I����?�ϟ��Qk��?� y;~���emn������{v=��DH~��^�q��i�[�`���Z�=k�=���9��20�(6��ls�/f���Z����flɡ���s���?e��?���8���k9>dx��M�\��a�9ƁA�&n�Ä��_]�%p�p�{���9̮�Ñ9TL�q:(��ѨÀ�b99�{������7�h�Ztk�1�������ʊ�gm-B�Z�t�l=X?����h���>�fE�[�P��r�W��[R*r&D�\�H��6�.*�l����X��Y��pzA�Y � A���\Ja�Ø3`���-��N�ߓ�1+��������I'��Wk���ߒCi��I$�s- �{9�k�����T�Kt�P4 *m^�*�b�F�QD�}>�Mi�˜�1g���:��O���
�P*��h ��U����mmV�u����,�����?�����������>O��~_���ym�{��߿~����H�Jg9�s��$.�\�',��U$K/����������<��o����" �~Ϙ�I? L�I�l$b."A�|(
PC��`q@�1�G�>#�' 8��fz���>������ph%$�1�G�<ذ.�@� #�&�GD
�,:��,�D���IjA?/�E�Ɉ:��a��q � �4.pGf����`��B�CB�#�@��������"n�
�/������lD}lEolGz����o��$��1������:�(�,����5H'�_�{,�s�/e���L-S%������D����z`4�KưԺm� ��x�a�=��\��1��vN�s',�NQhLhb"�$h��& ���� ���i��i���[E���mm�{f7��������i�J�9B���j5
�U+��������x�;�����䳖r���Z{���{�[���������V����������<���O8Ǜ�w�L� �:������<�'cC����xҷ(c�$����JN0���~k�qؖs��?=���8qq�ŧn,�r� ��!u+�Ktq%���E�Ø�yaZp�8X��y�'2'2'2��5ʖe?�ve�E��J�$�%}!�mP��R���0��i�����j|X���������9������S��s��tv�x7) � ���������?��"�ؗ'~O���b������ �����7/w��$�z|EPs$���ޙ��gIf�%��5A�"���Ԯ�QT�5�=QD�}EO�����1C� �����
�P*@�jZ�����^�W�n�����j7���9�������/>Y����������������m��wۿ~����ePP�s���8]8������8.K/�Y����9�,��c�����Tr�?��^1�����W���ݻtuu����K>�'���_�����������i}�����Qq�=���B#�w�m��ɉ��$����QA��sb��{ ь�s��z�4��h� �Q��yu�61 be6����b5G���U%)�`����YPx�8���B����5) ��eG���_�i�#4�ee���m+�18���]"����m�Ug�ں��_IBcT�}n�����ۥ��BA�ϫoBN6���*=I�hS�Cmke�;"=�a ���E"�l\�rh��̄!��,�nfh84
&���tjN6��JH2d���t����fd(��I��d�%VbV�a}bu��T���-�@T'�@VZT~�Y)�(��`J�L)E��� �i��)�$���\��~s�Q-��P�~��������j�=ʡ!����@l\�!��������~��_���ֻFU�0"Z]�o����b9�9����)�8h� �\pNV��9�(�g*��B���?���3P�����d��̄3}���+>\ŋ��2��k�g$q����b�ʪ�������6vI$XG�&$4H #>0�H42$���0\7>Fn���+r��7aC�"
ˇ�b%J�:M����Fy��.ho_M�@���N^�B��/�b{TuMȃё�������`�)�����B#.�n�qlH���C����K|��Vp�W-��+���6*���Q���������F6b*���y�kBaP; M��o��Y� �n���Ħ�0֛Cl�'�.�U��c疍�l�5��KQ����Fٶm��)P��kn���e���]rݭ�d0���Ҍ�Λ������hZ�W���5N�(�5x�'�it:�Z�V�P��@���@X�Qj5F���E5MT�Oj7[���ۍF�����U����*�5G���������r�Y�����9�O���������[{o{������߿~�� �hxeRi4��0JIi4�����Y�0?��=$ llli�vvvv��6�b����:Yv���EР1���q&�����t#�5���q�a(���ٮk ��F�qEQ,f>cb/�K"t����g������@/��"���tK/�;>0�4$�#�bpf~Vv�^����5� �3��`8-\,9wp6 �QC(�1tW䞼Zf<8 ?���Pon��eF [��x�`�浴�HV� �kL�����DX���KjJjB�C!��AI��`��B)p�`��e����g���I#�D\
~�l*( �8���f�hU4
��S� A��YB�P�����!�$� mx�DS` ��<7�Z"�8n<=;�8= �3}x2x`��T `l��y�A�&����s#�,���3;3��3Hhb4���W�'F~�B~�d����Z�%L�I��,�+��U�Zm��EKj�����r���KS6���J�.�
m2$�s4�� �� �.|�~���<,������">��9uᵽ�{�����+�_z�kdN��_Z����ề۷�����7��x�``;s���h��<���W 0����4�N ���7���q� ���{�ba;~���. �Xs��t��b&Y�- ��k �٘/!̉hGȆ��ӌeÔc$�H:HvM' ��h�DG�I���LlF6˔�z��ۛ:nY��%0w��X����F�7UW�������<��DԠBb�,���r�x�bʢS�n�Q]�3�� —��frp@�?��Ͽ�������ϟJ��ӫ��03��h�IJ��gL��5��X�F3�p�(v��PD�Qh�q,����b�Xz�!��t�-Z�����6661���x��|�ƒ��fXZ$.�n����(�y�g�B@X���(�uz�\S��u��Q��i�].�t��j�Z�� �~�����Q��E5N�)��1[mm������Q��|~���������촋E�,�/'����^|���|��r����?����^���e������ۯߟ���a��?PB�8C���C�=ϳ��rX��{G�@zy����c"����<ǚc��w3�_7�w��������øy[:�x�������&gt�?R,����6A�h�a�4�J�2H�#���$� ،E�i ���pL��Z����1���HA��|���g9�6�F���(�I(;v�z� ��� &����ڛ��Щb����$�������p|��i��J�ˏi��f�ڶ���r��2,1,3V�X���+��M�)?Rn��2�qPt�YY9`�|Y0-1�FT��L�;q/�[�"�v����@������K�ܭG������w_z�c������,�`@�ڶ��m�ħ��i�Om��8Kw�D��
C
q���-� � ��CS'���!��csAd�ph����`3�2VBd�6L�YH��F��6L��Ь�2ǬP�ĵ[j^��U *�� �?T“�*U&Z�ƙɌi�'9Lf��3Ӝ�':P���?��u�����n���?w�U ������xj��l�������]���������!�5]�v������R��a��qu�\��` ���sH4 �:b��#��u��`A'$��>)���<�� A��4�Z����,(
����'偌3˺��n8 �G �23d��*�ʃ�f�˨܌�ܔn�6D_Dn���fCVR0��/#3\;s.�x$ �g/1||`�?��dxUm�FRDj�I_K ����([[�C���_�4���G��M�ZiL� 
u�N�+�DzM����"�\W�<f���t;�U�^�Y��C��h�t�V�5�ݺMͩ�c:3\_�ݜШZ^څ����`ṵ�}��V{���}|�ӫ����U���������؋����،f1����� K�t5�E����!��t������,�U:�N���i�m<M��it�,AӫU��j�Z� .O� ju:�N�UUj���������Ӛ��߿��ﲯ����W���~I���众�>�s��?��ߓ���������������ۯ߷_���P�ȴZ-�I-�f����"gb��qpJcf1��F�U�*���4�U���������� �*�������!/�Wݍ A�v达�; ��X�]TG/��^��r6"�НI�7 V�M�Щ
yJ�� p���M��c�{�z���6�>О��"�.��.�{L%� p� p��  F `� a��F���O��p��7`Èp�D�EG�pDh)�`r���82(s��s��ǁ��i�_��;���:� n oA���F�ͺ���I�B �6XU�X��YV�"���z�J�(T_�B蒮�)-���f��O�� 6l� ��+�y�通B����7��~�eCmD�T6�l�ql}Q^��0�a�7�Gw�u�i�����g� �͕<����� h�R 6�f�#������C#�,��g���ᡀ��e�<���:C�c'�읰��B_D� ����Y�״���S��W�X��V��U)�-R�f�i�OS�>��ޡ
��
�A�v��x\��?�� '����xH�����X�m����m�����}��[��C�W�s[ڶ�L�Z$#0�;wAl�%��p�VC@�.�%��  �I� D3�d̵"�4<�p���?���\D���ʘB�'.l�bE#�%�s*a�z�9q]����@�"�NF���h��9IBѰRB��F�r�B+�E��#����E<Oj�:A_�/��3����z=�����C��+ ��悋����H�W
V�
��N�E���C�pJkkkkk&�����ǵ��������_��:%�sv�b흷�a�6i�fٵ&���� C��n׎׃�p�;v��p�b^:�v�&7E��nݞ +��U��.��׎�B���0
k�+Z9gggf!��PZC��rH��h�ȫST�uF�O�����m,Kj��X�UUj�Z�V����T�u:�V��mmmm����ƶ���{�������___a�����K����^|��9ϓ����;������������~����ۯ��ҁ��� C��˜:���1�"��������V665���y���}z���E�����ۣ���h2v��v٠�#;^�v�NQ�tv���4�)�p�?��e����L8�3�ئg������I�������?�5���/��� B#��SNRg7Y���(�dq����%�"�P��H��� �$��"��4�o�/” �N�m-ҠBko���{M����V��DiJ��tJ>,N�ı2�MZ"P�`�X'V�������c
��_k)��[
�צv�E!8ta?� s�})���k5�%���_m}�/��fOᄋ_@ґP�u�{[�舀]O�R�B�������4{o �V��������'B)�� L�f�A�B9���� ��Fcc3C1��Jf73cs0��nh\F2d�ɓ"��5a�0��d(�Eb���Zف���mke�h
�j��0��QiI��G�
i�iҧ9N1':Nh��AQI���'j
Jң�R.���~��s��, �K��_�ʡ m�����]��ƨh�}j�[_V����ǝV���Y[y�n�b +�ֻW��nD!��;�İ�h&dؼ9���? �GB,t !�&|t��A4l�d���C]$*sv���i�]曜�'�k�j���y��^��Q�#�.��k1܎5B>Bh�&B��P�p� �!�D$$ x; �H���6.��
�9�r��
��$�;� �[��q��lB�w[m0
£v��_MP��dj<����A-���(���e�ȴ(�s�¡NNK���;�g�$��~�aG���1�s���;M�.��ll��)��=�GF���+2̡� pe����?��w���0�� �$�G��؈�8,44b
�`U�\�
����?�}����T,�W�^l
�L� �B����� i�6L p&�K��U�����eh��*�E��Q����>�M���].���:ej�z�TU��EZe���DUZ��������[r�������_�{/{������~^r_��^K?��9���;�|�����߿~���߿}����ۯ��±?��D�'S�����?��X�(<P� P��������c�R&A7�. �K�Ѐa����\7 ���P��V!�m��� �F�|1C�C:�e0� ����y�JB���I�z<c � gc__$�k���m(:�?��w��������ä���ɢ|^s��
���9� ���%��rT\J%�I���))1>s�0xP?�=��5 �_e���"�}���l�3�s{Nj�LZPP��#Y�P�����'6p��+T��`a�ZTH)�Fm �,�?\K'�v�7��i�Q �b��m:�ptކ7���`L#�f�Y�SD �3���ж��LS҅�Y}�ɡ��r�Bj���0����Ǖ�ze�$��i���іfrg �Fp��d�#�f^3��F�Ѡ3�~�����ܹ�x� j�T�ڦ��?z��Z�K�T��T��X��i=L�};i�Q�z�F��]Kj'�ns����,�������>�r���n�^���~����=�{쭐���W�oVފn�Wъ@d�]��pˬC('D�� D "� d�!`$| �(��@� O;8��������?�r~OlW(����O�s�ap��~6s�IHd?dl����H���j$.e���� 칈���Q�k�n�h�����! ��oE��������L�]m,P�.��G:�ޘ���> Azb��ϙ,La$�������Λ��s�aW��1�ݻ��'/����Y�T��Z*�ILֆ�!���tJ<�Ul��vʐ��7I]̤%K,�ݻn�����mC�n����ݻv��|������1�$���X�ƅ��5ggCY�Ӷ�)��F�O�����6���b].� �:uj�z��U���QTN���k[[U�����Ӛ�F����u��������{%���e���y���?����?����������������߿~�||||gf����CѪ���؋�]+1����Ȥ��n��JZv�v�۷��۷WWQ�J�۫���1E�Gr;e`Z;����G±m��f�B��x�I�ѹ0��X���k��]۷n�3�\���������r��-�-���N�%y$��p�3z��sK��0�f�x�$_2$2h� ��y���Lsȯ��q�-���چ���kw{O1P�i����T�Y�KI�Ief�B�V'X,d��,���(Zc- E��p�\9�����TD��e���-�x�$������-��!w�P�I���;���t� �j�D��v�Bae}1����1�$�J���5��+ "�
�H���5"��#)��q���aH52�Cc1p�lf����Y3��nf0����ћ�Y]
�]
��WB��V�6���ֶ�h PU9I��'ʞ�RuH
��:N�9�}Aچ����Rz��$�<�"�o#s����O���������i�A��-�}^�Ó_,W޾��w{tt�^���~���ԏm����5�Wт�����18(�����1x=��d�#t3�����2pS'd�k 0,��vL�H+s y��aXB\��6��C��1~I����1�1�͒H桙���ll�a쏙�GL�!'2d�ݔ��gl�#`��%�.��Ks�]Ʈ]��.6� ��e�0�z�����q�ym����@��_C�jD0�j��9��h�G�9��# ���{�O���d�߶�}�?g��q�[��۷d�*�}���g������<�/�9P�Y�t��fH��r�s�H��,��(ؤ��9�,��tw+��T�tw+�n�b{ ;v�__R9*E�����"���&#;9ޝ�:��Sj5EO��m6�&��t� A�ժ�⸪)�4�}>�O�����j�[�rڶ����Z����l��{���o�'9/�_�����>���9;�w�����?�����k���~��u�����g�Е��c__]�����nݐ�����۬�� n�dv�7��I�s ӛ����tb(��#��l. �����H)Lsl>3a&�Gh`�KD�Z���< ��'ӑ�_��a_��ޛ�����O���(B��}x�Ax�xZ��E�¹�u(��a�āa�
 ���`��߅߅��)|V�+^������-~����G�*� ��Mօ�����c��kֆ�j��ai��nzS[V�զM
i��"uww[��D�H�!�~�ʅ2b����}��^����yyF����(�+^�ŵ��-9��Y�uCF!��=Cz��Hx���] �#~���P��Τ<I$�fG&Y�ɔ20�C# �20�e�8frf�뜹ۜ��k���szszymKZ�Z�T��*UU+U�V��iKӶ�P�}C��*����*J�Q�C0a�����x�i��H�$s?{���8������ߡ�]�jĔID��I��C����ç��xp������ ^_���BE���!0�:�(�q ��)�g�fL�����k6/7�ؒ/���v/8���u~���Y'�.w7s"�]�a=_���9,{�'.'.����#P.)2
����vI�XD�Ec\!���d�J��J�,��'��!O��l�S`��� �;(�z!﨨�[�Om��� a�����n��� `1��4/
��8��x�D8!� >�&�> �'�F
0S�`� �q�� �@6�ap`���S��\x�D<!a�,"b2<PpI�8$��r`n!���X@�1���g7I�Bbd���2�l�s���7t�9�smL囤�J>���w+�%�۷nݞ�Q}������sa��u�iN�S����F�O����j����t�,J�<Q��*x�Q��������Ez���mm�F�Q����������[��' 8�R`}�>��a�P��\?1�G�<1#����=��a���0��9dR��D�$bM`��4H��w�P:�����u�% Ċ#�(����|$�62X�E ���E����L�۷nݺC�r;u�D�������9��s��9'9���[$�9�O9�M�s-�̋�n���-���e�cA6�< ��%2Z5*ҦTʐ��3ҙ#$d����#$t���R�(R�<��FH�'$䜆j1ъ�Tb�0��]&B]%�^J�y�hXS�{�J8#�Mc<�7a\�F2½W7I$ �cF1���ր�BX��n���H �����=��^��V��X�V�4 Z�#��ժ��P�Ĵ�b��+BCJZ.��������)��iTv��Z`P[*(����)fK���]�܁���Q�w�Sݔ(��o_[���â�S k�vѭBB ���Ե�T��1��/<`hG�����iT�4���4�s!��~d5HG2,� L�Cc0��hdCF32.!5\t�+�+��%�p�ﶥ��V�0���i�U�0*@T[T�����8���@Ơ�B�'�F5'�A��
E)�)�j@�!�?o��p�, ���g��#� }�v�_m.֚D4Q��V�v����A))��i�'��Oi��i�YT�.��u����_C8M H��`g���R�io ���P:H�f���)AP����Cx�ι���[������X�<!CL��� .�
���G< \��E�0�Bd1
Ȭ�0��� ;e� ��L"`�tK�k�\b#�naȜ�?�pB�)y�m�l��P�����&����t}��,��mmWV���B�t �(i>O����)����CЍ���7X����4�����"�g9���|0Z~�^���P�(�6���Z-9�s��g��j���BrNs�*Ƅi�s��ڹ�s���5g���Y]�3a̮ݺ�vZ�JN��__
���P�<�!ޝ�N�(�j"�<QS��}4M���tg�
��F�Oi�z�Qi��DN��mcMmmm���u�����{��n�[y����_���/>Y����;��������Y������~�������� ���}}}x���Ii3�nݻvD��#���{9�s��I�s��� �9�>L��s��7<-::�s�:�#�h�X`|���v#;����۷GI�le/?��i_����A0��� ����\b*w���60��T�� �96���s�M8t1��y$�pZ�D���.8(?{{���M����н;��nom��m42h�
�#[V�j�-0�O)�&�kF�V�~efKB*��ޮ�U�{$
��ozo����J�ڢ�=]b:�g|��ұOI'�E�=�f����ތ�Y�*X&
��zݴΘ2�Lg�
�EcS�*����$Hte �L�C����e����q#��"���'����v�\��wzw���6bom�+��+U�V��i[i�O�z���u/S�T�t�R�g����9��x�?��s����s�ocQYm�^�߿c�����|{�^�W{o�Օm޲�I�����3����J���؞D3�K�����`�Dt�;�7~�����k��I��� P��ww�*Q����ߛ�\�}r;"�<��Z��a#�����i�X�.�� �CQ��ۤ��hEW����|_�����+Q�/e�^HS&vYz�YCvƂ�0P�r�i��aS�����������W�����W�Y�lI����۲�}z�cb�Y�b�䊆��h���C�p�7 ��}O��=����=��{G��c�9dØs1�:sN�����X5��ގ1�;Bc�,Øs 0f j1��c�>��ڟ�JO���A��a�D�C��;�-S��5:��O�����m6�K�?ϳ��AV���j5�DQ��j5w%���x�ku������e��������m[e�����_��/>��r���$�?����Ygl�������_�~�n�u��ݻv�**��w#� �!<����攻9�|��G9�,��hWe��'6����r�r��c�9f�E��h���3��F5�p7z�nݺ;�*�d9y���V���G{���q��i�'�"��LU���~�a�&"_���B�eAh�$������ ���~�����������#�k+o�mㇴ���e���մ`i[A�C��է�Xҥ��J�>+ �m�h�Qx�+�P?m[v�Ĝ�������?�A��ڊ����Qm���h08�5���Kh���M_z��A=<��ҵW�Z��%��q�i�q��5"���)��q���aH3H��4��A�����g�F32R ��8��W�e�>��0�ޅ���-�mkk<z��U%V�R
�ՠ)X��EPv�b��,�0�<J`K�1%���+������E(|����`����v�l���޾������}IO�i�=�Ǵ��i�����Vꇷw����4��б����]Ĺ0%�f*�����s�-p8� ��G$�D��`?0s���0
aA7\���`T��� ���;$�W��'2��lD���0��F��Q@�0��tL"]˲���pld�����DB�~^NM������[��|Ev�b�[���ƨRm-W�}-��y/'/��a������M?�������=j����cR����]�t,� ��666vr0�<&!��g�C���'�N�>�H��ߒN��c�{9�#*��I$�I\�9�sh��Q���w+��Qe�nݯW�5=���w�i�S���b�F�'���x�J�������>��U�j��QE����5 ����m>��ֽ���oon������[���ko��ϗ��|������?������������^���������ۍ���n x��x�S !:?'��R~O�Ȕ1��E�ZŬZ�4[h�����~O��?
��3���-Aj PZ��7�+¸�^���6+�0[�-�m���zM�T
��C��tO �B�t1����H��[^:�w9�hV�����,�?���=o����?����zX{�O�M}y?���h*��������@��w���W��}��h���|�����N �om���oh��fg������F��m4�B��u�YE�r\U�Y��G���k>ϲ���pܽ������/g��^�
��/��^�(b/mu�{ѵ+R0����oW�Ҩ� ʃLhV+�h�ii�D�I*C�F]D�e�z"�:��eR̓�<v��n<�<�:{�1������{gm�ڥ�T�^�b���C�U �����B]*��i���;�������?���9�Y��ڈ�{ow�߈;��������{eX�߽�����:�:����h�{ǽ��clܴ\V����1~fJ+��ǟ�?fB�����?��C~<�y��L&��1s1~_�m��8;�h�Ė�qp��&61F��pT�e}v�]xỊA�tt���q�����h?����qj2������T_
#��[e�'/9-p�W�s����M�g���1����}�_�����5#�r�v�z�|r-�X���٬����fI��V\�$�N��Y8 �>��t�����{��¹$��������s��Z ���%��P�����____=�!�y��zv�E:��Q����}>�*��C�����R�N�(�*����OT�}>�QESM�����w���m[�ڍm|�9/�_伖_��>���'~I?������w���{���~���q�}}}۷c�\r�GY�$�D�g���9���9�Ye�U����9����������^O�(�q[���tM�� ����llE�`��^/�rLjH�rw����������{���e@�'��ޝ�� ?��g<����.�� i��c�^�Y�����e@�A����m��� Z?������޴��D2��6��6�kL�Ƈ����f������+lPm1�],�[0�p�T1,��m����9
�ﶡ�>��F�UE����h�H!�'�����F�Ңpp��m}����i, �amA����)pOi��U�e}�Ȇ2�dQ��Ќ5�R!���d���d�A�A�3�`:Dl�z���#tDc4�� �! �Ȯ��q���m�+o3mc�=kb#k[P��ΛZڇ�l�b�g��U��<PRPv���‚,�0%F�˜\LbL�a��������������20~�m����][Zh
o^����ޱ��$��=��zשzײ�׉@x��ֽK�{����㡬�V�ѸNAI����<�#aM��H2�3$ I77��~]φ i�.��g� �:������!8O��9�g���8���D`��.�s5Юh�ƫ�S
�W3]
��2�2�h��9�br���c�R��=�����8�Y������ �Qۿ��D>$ Z�ښ�����{���� ?��;���Q�-�y�{J����cu��tv�z\ �lV+;8�`# � !��\��w���"]�;ߒC����#
��N�����3�$��9�^�9��r�*���۷g��g��w����E��Q�����T�4  g����U���u:�N����}=OS��=OTEz�����{��"�n�����e���%��������'�����������ߗ|���_�n?ov�۷cq����rNs�pV��9�s8?�99e�U����9�4����e�K�$���/%�@V�:&���1����cb1 $�U㫹'$�E�Q�O�O�mgl�,�:������������д�c���Ns�%�4������)���������;�޴*�������)��w��m��l7�Zh|�omU�����L�`r���bt����^������߶^�����b��^��j��^��{/M���/g���p�(��^��1�+<v)�{�/J�(2* �̨4�B��X��Τ=I����h�D^E�/"����"�=!q&���$0�P���緧osg-휷�r����Ο���鞩����ԽCjb�(.J�.�J]2��7�@��w�������;��?���ݭ�{����� ��߾>�7_�R=��i������bz��A�H$�A�w��ߖ�9��?8����_X\����8u�@��;���tq�?��a.Y&��Њd����/��tK�˧D���a�]wG9ۆ�����I'7s������@ǡ�����@�?���t��da �^�yϖQp��,���< ,����������ZY����N �M'9�J������������9*���bxS���;���;�Iެ4>,�$�I$�2�I$�����{$���9�C���9�ͅdi�t���{����w�C���:�DQi��A�tA�: A�4 ?�"e�b�N�P��}DQEF���j5�F�����n��-��u�n�k�'�K����������9�����������������������_]��C��(=����9�s���9N��%�_� y�s��)�Y�/� C�l�9y/%H�*H�, ����X��؇ABr�����uu��<�'���K����A�{�����]����!X;J`�O��Ȯ�Ų�ĩ��$���'��lP�~(w���6��3��3�A�V��5�����z �x\R<���^������6 ��7�����lKmI�X�n$��ߴ�B��5�v�ԽǴS *���m��p�$����qm/Q|���W��iz��𣺯m��q-��W2�5�h�pB.3!��A�i�q��5"�##Q�H����� ��Q"ь�
II�f�[2$=Bf���a�[�Z����Z�{M���u�^`{O@zŊU�(aA�����0%=LbL��4�I�_9�����Qc�����F�~�[{l�5�)��z�����h�I|z���n=km6���ֶ������>=�����!P�;͎�̾� ��_���k3fMMX����:��+|��>���!?6�I���Iҋ!Va�����5
OP��?s.���WJ��q�p*r�����"r�'!q΂^q}�ÀbY������V���~Ѧ�� h&��hM�>�F�"���K��r�,��֐1�A�>�����!k-R�X�_+el��H�#�>F�|��2=R2�TʹW*¬+��rvC�T��� ��He)�0e��K�/�ڜ�~X����:E 2w����tK�{�����~I$�zl�;�����"�������B��Y���=�s��g��w�iDQĺX�K��A�b���:��heJu:�'�EDQ����LQ��5�N�n�>=�jڷ[������_�K���~_������'��������������w����q�ݺ�@&��s�啤��Br�/9�2� ˜�_�q�\IJ�,����;ϗ���P������ D���$A�D��E�.2hH�A��x� @C Ɂ�H�"� H�"͆ǀs�8�;@���w�t�&��&�D�x�-��8%��Z �KA.LB9�A� �y�E�D���K�\�~
���e@�z���=��߅a���^�K��A-�_���VЀ��O����Q8�?x*n�
ۭ���e�.;m��#{a���ڦ��߷��d���6��_�zsBaV^��{/P��^�/��7��B^��m���1�%�����#�:sa�uW�,�A�\eEA���xЬ5T5<2�Q.����0"ИDE�Z"�8���#.$�i I�<{�:oy��gm�:}l��������퟽mZ�IԠ����R��R�L�5M���?�������w����������;,�߾?h�_[�ۭ��Ǽ����m�����ׯ<���c�߻�&cɡ^}���~i��,hy��?_iR�����upe����;�f x$|�;��2Nbq��N�-:8��9;�!�)�W ]�8�����b�Y�8�����Vp��fEGr7a�7�^e�xk�|�>R��Z��@x]�wɖdϤJmUf�>|��y������8���g���6�����_���~YLaD�9e�Wn�Є꾾ƽb1���'|dY�����?�!rI$�O��W����$��rN���I&zFNc�I�s��Ήaˤ�>���}a�<�!�u-N��m6�K���:],KPt��: @�4�E��Q��5�EQ���u1F�QT�u�>-�Ցn���mmm��y���?����Y����������������y�߷��l~��rr2��I9�Yg�9�NYy� �<���9,�iv���?�B��>_��GG/��/��lllk���}А�z�ܒI#��B���c�r�g��g������<������� �,#�

101
Assets/TestScenes/FPTL/FPTL/ReflectionProbe-0.exr.meta


fileFormatVersion: 2
guid: 510a68b9137dcaa4d8ed21f9b2a44073
timeCreated: 1472824676
licenseType: Pro
TextureImporter:
fileIDToRecycleName:
8900000: generatedCubemap
serializedVersion: 4
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 1
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 1
seamlessCubemap: 1
textureFormat: 1
maxTextureSize: 2048
textureSettings:
filterMode: 2
aniso: 0
mipBias: 0
wrapMode: 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
textureFormat: -1
textureCompression: 1
compressionQuality: 100
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: Standalone
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 100
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: iPhone
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 100
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: tvOS
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 100
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: Windows Store Apps
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 100
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

8
Assets/TestScenes/FPTL/Materials/Custom_NewSurfaceShader.mat.meta


fileFormatVersion: 2
guid: 0ff43702ce0fbe94982f1d06dc07ffd9
timeCreated: 1472660740
licenseType: Pro
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

8
Assets/TestScenes/FPTL/Materials/gray.mat.meta


fileFormatVersion: 2
guid: cb6536d04ba24874981eb01dfd87479e
timeCreated: 1441927681
licenseType: Pro
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

8
Assets/TestScenes/FPTL/Materials/FwdMat.mat.meta


fileFormatVersion: 2
guid: 24e6a15bf9d2c0944b380d860a738528
timeCreated: 1475863528
licenseType: Pro
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

80
Assets/TestScenes/FPTL/Materials/Custom_NewSurfaceShader.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: Custom_NewSurfaceShader
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords: _EMISSION
m_LightmapFlags: 1
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: 32, y: 32}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 10305, guid: 0000000000000000f000000000000000, type: 0}
m_Scale: {x: 32, y: 32}
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}
- _SpecGlossMap:
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.258
- _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: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SpecColor: {r: 1, g: 1, b: 1, a: 1}

108
Assets/TestScenes/FPTL/Materials/gray.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: gray
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords: S_RECEIVE_SHADOWS S_SPECULAR_METALLIC _EMISSION
m_LightmapFlags: 1
m_EnableInstancingVariants: 0
m_CustomRenderQueue: -1
stringTagMap:
OriginalShader: Standard
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _AlternateLightMap:
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}
- _SpecGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- g_tOverrideLightmap:
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.825
- _GlossyReflections: 1
- _Metallic: 1
- _Mode: 0
- _OcclusionStrength: 1
- _OcclusionStrengthDirectDiffuse: 1
- _OcclusionStrengthDirectSpecular: 1
- _OcclusionStrengthIndirectDiffuse: 1
- _OcclusionStrengthIndirectSpecular: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SpecularMode: 2
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
- g_bEnableMetallic: 0
- g_bReceiveShadows: 1
- g_bUnlit: 0
- g_bWorldAlignedTexture: 0
- g_flCubeMapScalar: 1
- g_flReflectanceBias: 0
- g_flReflectanceMax: 1
- g_flReflectanceMin: 0
- g_flReflectanceScale: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SpecColor: {r: 1, g: 1, b: 1, a: 1}
- g_vWorldAlignedNormalTangentU: {r: -1, g: 0, b: 0, a: 0}
- g_vWorldAlignedNormalTangentV: {r: 0, g: 0, b: 1, a: 0}
- g_vWorldAlignedTextureNormal: {r: 0, g: 1, b: 0, a: 0}
- g_vWorldAlignedTexturePosition: {r: 0, g: 0, b: 0, a: 0}
- g_vWorldAlignedTextureSize: {r: 1, g: 1, b: 1, a: 0}

80
Assets/TestScenes/fptl/Materials/FwdMat.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: FwdMat
m_Shader: {fileID: 4800000, guid: 8f28d6dbfdba66d4dbae80224aca5669, type: 3}
m_ShaderKeywords: _EMISSION
m_LightmapFlags: 1
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}
- _SpecGlossMap:
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.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: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
正在加载...
取消
保存