diff --git a/client-patch/90CN_companion_p0.cpp b/client-patch/90CN_companion_p0.cpp index 5c22944..8bf4e30 100644 --- a/client-patch/90CN_companion_p0.cpp +++ b/client-patch/90CN_companion_p0.cpp @@ -261,6 +261,14 @@ bool CompanionEquipmentProbeEnabled() { return enabled; } +// 支æ�´å…µæ™®æ”»å¼€å…³ï¼šå�¯åŠ¨å™¨åœ¨å®¢æˆ·ç«¯ç›®å½•æ”¾ç½® 90CN_basic_attack.disabled。 +// å�ªå½±å“� CompanionBasicAttack 回退程åº�,12 格技能程åº�ä¸�å�˜ã€‚ +bool CompanionBasicAttackEnabled() { + static const bool disabled = + CompanionFlagFilePresent(L"90CN_basic_attack.disabled"); + return !disabled; +} + bool CompanionEquipmentApplyEnabled() { // Production default: the mode1 equipment rows are replayed for every // companion APC. A disable flag exists for a one-restart rollback. @@ -1924,6 +1932,42 @@ bool ApplyDynamicRuntimeKeyPrograms( return false; } + // 关闭普攻时把 CompanionBasicAttack 的技能ç �改æˆ�空å� ä½�ç �, + // å�ªç¦�用技能冷å�´å�Žçš„æ™®æ”»å›žé€€ï¼Œä¸�触碰 0..11 çš„ 12 格技能程åº�。 + if (!CompanionBasicAttackEnabled()) { + void* basicProgram = + programs[Contract::kBasicAttackProgramIndex]; + std::uint8_t* basic = + reinterpret_cast(basicProgram); + if (basic) { + std::uintptr_t basicBegin = + *reinterpret_cast( + basic + + g_native.kRuntimeKeyProgramBytecodeBeginOffset); + std::uintptr_t basicEnd = + *reinterpret_cast( + basic + + g_native.kRuntimeKeyProgramBytecodeEndOffset); + std::uintptr_t basicCapacity = + *reinterpret_cast( + basic + + g_native.kRuntimeKeyProgramBytecodeCapacityOffset); + if (basicBegin && basicEnd >= basicBegin && + basicCapacity >= basicEnd && + basicEnd - basicBegin >= + g_native.kRuntimeKeySkillCodeOffset + 4) { + *reinterpret_cast( + basicBegin + + g_native.kRuntimeKeySkillCodeOffset) = + Contract::kSkillCodeBias + + Contract::kPlaceholderSkillId; + Log("companion basic attack disabled actor=%p program=%p", + actor, + basicProgram); + } + } + } + std::uint8_t* directBytecode[ Contract::kQuickSlotCount] = {}; std::size_t directBytecodeSize[ diff --git a/client-patch/90CN_ui_iterator_guard.inl b/client-patch/90CN_ui_iterator_guard.inl new file mode 100644 index 0000000..483d962 --- /dev/null +++ b/client-patch/90CN_ui_iterator_guard.inl @@ -0,0 +1,95 @@ +// Included inside 90CN.cpp's namespace after its existing patch helpers. +// Only the evidenced UI update iterator call-site is patched, never the CRT. +uintptr_t g_uiIteratorNativeAdvance = 0; +uintptr_t g_uiIteratorAdvanceResume = 0; +uintptr_t g_uiIteratorNextBucket = 0; +volatile LONG g_uiIteratorInvalidations = 0; +int __stdcall CanAdvanceUiUpdateIterator(unsigned int bucket, + const uintptr_t* owner, const uintptr_t* iterator) +{ + dnf90::UiIteratorSnapshot s = {}; + __try { + s.owner = reinterpret_cast(owner); + if (owner && iterator) { + s.proxy = owner[0]; s.iteratorProxy = iterator[0]; + s.begin = owner[1]; s.end = owner[2]; s.current = iterator[2]; + if (s.proxy && s.iteratorProxy == s.proxy) + s.proxyOwner = *reinterpret_cast(s.proxy); + } + } __except (EXCEPTION_EXECUTE_HANDLER) { s.proxyOwner = 0; } + if (dnf90::CanAdvanceUiIterator(s)) return 1; + LONG n = InterlockedIncrement(&g_uiIteratorInvalidations); + if (n <= 16) LogLine("ui-update iterator invalidated bucket=%u owner=%08X " + "proxy=%08X iter_proxy=%08X begin=%08X end=%08X current=%08X " + "action=defer_remaining_bucket_until_next_frame hit=%ld", + bucket, s.owner, s.proxy, s.iteratorProxy, s.begin, s.end, s.current, n); + return 0; +} +__declspec(naked) void ProxyUiUpdateIteratorAdvance() +{ + __asm { + // Entry is a JMP replacing CALL; result pointer and dummy are on stack. + push eax + push ecx + push edx + push ecx + push dword ptr [ebp - 14h] + push dword ptr [ebp - 1Ch] + call CanAdvanceUiUpdateIterator + test eax, eax + pop edx + pop ecx + pop eax + jz invalidated + call dword ptr [g_uiIteratorNativeAdvance] + jmp dword ptr [g_uiIteratorAdvanceResume] + invalidated: + // Native ++ would have consumed two arguments (ret 8). Do not compare + // an invalid iterator again; the next bucket constructs a fresh one. + add esp, 8 + jmp dword ptr [g_uiIteratorNextBucket] + } +} +bool InstallUiIteratorAdvanceCompatibility() +{ + const uintptr_t site = g_dnfBase + 0x02BF2732; + static const unsigned char kLoopContract[] = { + 0x8B,0x0F,0x8B,0x11,0x8B,0x42,0x10,0xFF,0xD0,0x6A,0x00, + 0x8D,0x4D,0xB4,0x51,0x8D,0x4D,0xD4,0xE8,0x19,0x02,0x7F,0xFD, + 0xE9,0x77,0xFF,0xFF,0xFF,0x8B,0x45,0xE4,0x83,0x45,0xEC,0x14, + 0x40,0x89,0x45,0xE4,0x3D,0x87,0x04,0x00,0x00,0x0F,0x8C,0x55,0xFF,0xFF,0xFF + }; + static const unsigned char kBeginContract[] = { + 0x55,0x8B,0xEC,0x8B,0x45,0x08,0x8B,0x51,0x04,0x8B,0x09, + 0xC7,0x40,0x04,0,0,0,0,0x89,0x50,0x08,0x89,0x08,0x5D,0xC2,0x04,0 + }; + static const unsigned char kAdvanceContract[] = { + 0x55,0x8B,0xEC,0x8B,0x45,0x08,0x8B,0x11,0x56,0xC7,0x00,0,0,0,0 + }; + if (!BytesMatch(reinterpret_cast(g_dnfBase+0x02BF2720), + kLoopContract,sizeof(kLoopContract)) || + !BytesMatch(reinterpret_cast(g_dnfBase+0x00A44ED0), + kBeginContract,sizeof(kBeginContract)) || + !BytesMatch(reinterpret_cast(g_dnfBase+0x003E2950), + kAdvanceContract,sizeof(kAdvanceContract))) { + LogLine("ui-update iterator compatibility disabled: native signature mismatch"); + return false; + } + g_uiIteratorNativeAdvance = g_dnfBase + 0x003E2950; + g_uiIteratorAdvanceResume = g_dnfBase + 0x02BF2737; + g_uiIteratorNextBucket = g_dnfBase + 0x02BF273C; + DWORD oldProtection = 0; + if (!VirtualProtect(reinterpret_cast(site),5,PAGE_EXECUTE_READWRITE,&oldProtection)) { + LogLine("ui-update iterator compatibility protection failed error=%lu",GetLastError()); + return false; + } + unsigned char jump[5] = {0xE9}; + *reinterpret_cast(jump+1) = static_cast( + reinterpret_cast(&ProxyUiUpdateIteratorAdvance)-static_cast(site+5)); + memcpy(reinterpret_cast(site),jump,sizeof(jump)); + DWORD ignored = 0; + VirtualProtect(reinterpret_cast(site),5,oldProtection,&ignored); + FlushInstructionCache(GetCurrentProcess(),reinterpret_cast(site),5); + LogLine("ui-update mutation-safe iterator installed site=%08X next_bucket=%08X",site,g_uiIteratorNextBucket); + return true; +} diff --git a/client-patch/assets/combat_power_panel_skin_v2.bgra b/client-patch/assets/combat_power_panel_skin_v2.bgra new file mode 100644 index 0000000..5a46214 --- /dev/null +++ b/client-patch/assets/combat_power_panel_skin_v2.bgra @@ -0,0 +1,703 @@ + 'ÿ ÿ ÿ +ÿ +ÿ +ÿ +ÿ +ÿ +ÿ +ÿ +ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ#%ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ‡ŽˆÿMNNÿMNNÿMNNÿutrÿutrÿutrÿMNNÿMNNÿMNNÿMNNÿ‡Žˆÿ +ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ  ÿ ÿ‡ŽˆÿMNNÿMNNÿMNNÿMNNÿutrÿutrÿutrÿMNNÿMNNÿMNNÿ‡Žˆÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ‡Žˆÿ +ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ‡Žˆÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ®®°ÿÓÕÔÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿ®®°ÿutrÿutrÿMNNÿMNNÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿMNNÿMNNÿMNNÿMNNÿMNNÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿMNNÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿMNNÿMNNÿMNNÿMNNÿMNNÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿMNNÿMNNÿutrÿutrÿ ÿMNNÿMNNÿ ÿutrÿ ÿ ÿutrÿ ÿ ÿ ÿ ÿ ÿ ÿMNNÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿMNNÿ ÿ ÿ ÿ ÿ ÿ ÿutrÿ ÿ ÿutrÿ ÿMNNÿMNNÿ ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿMNNÿMNNÿMNNÿMNNÿMNNÿMNNÿMNNÿMNNÿMNNÿ ÿ ÿøÌ$ÿáÏqÿøÌ$ÿøÌ$ÿøÌ$ÿú´)ÿú´)ÿú´)ÿøÌ$ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿøÌ$ÿú´)ÿú´)ÿøÌ$ÿøÌ$ÿøÌ$ÿøÌ$ÿú´)ÿøÌ$ÿøÌ$ÿøÌ$ÿøÌ$ÿøÌ$ÿøÌ$ÿú´)ÿú´)ÿøÌ$ÿøÌ$ÿøÌ$ÿøÌ$ÿøÌ$ÿú´)ÿú´)ÿøÌ$ÿøÌ$ÿøÌ$ÿøÌ$ÿøÌ$ÿøÌ$ÿøÌ$ÿøÌ$ÿøÌ$ÿú´)ÿøÌ$ÿøÌ$ÿøÌ$ÿøÌ$ÿøÌ$ÿú´)ÿøÌ$ÿú´)ÿøÌ$ÿøÌ$ÿøÌ$ÿøÌ$ÿøÌ$ÿøÌ$ÿøÌ$ÿøÌ$ÿøÌ$ÿú´)ÿøÌ$ÿøÌ$ÿøÌ$ÿøÌ$ÿú´)ÿú´)ÿøÌ$ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿøÌ$ÿú´)ÿú´)ÿú´)ÿøÌ$ÿøÌ$ÿøÌ$ÿáÏqÿøÌ$ÿ ÿ ÿMNNÿMNNÿMNNÿMNNÿMNNÿMNNÿMNNÿMNNÿMNNÿMNNÿMNNÿ ÿ‡Žˆÿ ÿMNNÿutrÿMNNÿMNNÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿøÌ$ÿú´)ÿú´)ÿé‰+ÿé‰+ÿѤ_ÿѤ_ÿѤ_ÿѤ_ÿé‰+ÿ×s*ÿ×s*ÿ×s*ÿ×s*ÿêx,ÿé‰+ÿ×s*ÿ×s*ÿé‰+ÿé‰+ÿé‰+ÿêx,ÿé‰+ÿé‰+ÿ×s*ÿêx,ÿêx,ÿé‰+ÿ×s*ÿé‰+ÿ×s*ÿé‰+ÿêx,ÿêx,ÿé‰+ÿé‰+ÿé‰+ÿé‰+ÿé‰+ÿé‰+ÿ×s*ÿ×s*ÿé‰+ÿé‰+ÿé‰+ÿé‰+ÿé‰+ÿêx,ÿ×s*ÿ×s*ÿé‰+ÿêx,ÿé‰+ÿé‰+ÿ×s*ÿ×s*ÿé‰+ÿé‰+ÿé‰+ÿ×s*ÿé‰+ÿêx,ÿêx,ÿ×s*ÿé‰+ÿé‰+ÿêx,ÿé‰+ÿé‰+ÿé‰+ÿ×s*ÿ×s*ÿé‰+ÿêx,ÿ×s*ÿ×s*ÿ×s*ÿ×s*ÿé‰+ÿѤ_ÿѤ_ÿѤ_ÿѤ_ÿé‰+ÿé‰+ÿú´)ÿú´)ÿøÌ$ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿMNNÿMNNÿutrÿMNNÿ ÿMNNÿ ÿMNNÿ ÿøÌ$ÿøÌ$ÿøÌ$ÿøÌ$ÿøÌ$ÿøÌ$ÿøÌ$ÿú´)ÿú´)ÿé‰+ÿé‰+ÿ×s*ÿ¨v3ÿŒf4ÿ†W0ÿ†W0ÿ†W0ÿ†W0ÿŒf4ÿ±nGÿ±nGÿÿÿÿÿÿÿÿÿoP1ÿÿÿÿÿ†W0ÿ†W0ÿ†W0ÿ†W0ÿ†W0ÿ†W0ÿ†W0ÿÿÿÿÿ†W0ÿ†W0ÿ†W0ÿ†W0ÿÿÿÿÿ†W0ÿoP1ÿ†W0ÿ†W0ÿ†W0ÿ†W0ÿÿÿÿÿ†W0ÿ†W0ÿ†W0ÿ†W0ÿÿÿÿÿ†W0ÿÿÿÿÿ†W0ÿ†W0ÿ†W0ÿ†W0ÿ†W0ÿ†W0ÿ†W0ÿoP1ÿoP1ÿÿÿÿÿ†W0ÿ†W0ÿ†W0ÿ†W0ÿ†W0ÿ†W0ÿoP1ÿ†W0ÿÿÿÿÿ†W0ÿ†W0ÿ†W0ÿ†W0ÿ†W0ÿ†W0ÿ†W0ÿ†W0ÿ†W0ÿÿÿÿÿ†W0ÿ†W0ÿ†W0ÿÿÿÿÿ†W0ÿŒf4ÿ±nGÿ±nGÿŒf4ÿ†W0ÿ†W0ÿ†W0ÿ†W0ÿŒf4ÿ¨v3ÿ×s*ÿé‰+ÿé‰+ÿú´)ÿú´)ÿøÌ$ÿøÌ$ÿøÌ$ÿøÌ$ÿøÌ$ÿøÌ$ÿøÌ$ÿ ÿMNNÿ ÿMNNÿ ÿ ÿ‡Žˆÿ ÿMNNÿ ÿøÌ$ÿøÌ$ÿú´)ÿé‰+ÿé‰+ÿé‰+ÿé‰+ÿ×s*ÿ¨v3ÿ¨v3ÿ†W0ÿoP1ÿM,ÿM5(ÿM5(ÿM5(ÿM5(ÿM5(ÿM5(ÿÿÿÿÿÿÿÿÿÿÿÿÿM5(ÿM5(ÿÿÿÿÿM5(ÿ0$ÿÿÿÿÿM5(ÿM5(ÿM5(ÿÿÿÿÿM5(ÿM5(ÿM5(ÿM5(ÿM5(ÿÿÿÿÿM5(ÿM5(ÿM5(ÿM5(ÿM5(ÿM5(ÿÿÿÿÿM5(ÿM5(ÿM5(ÿM5(ÿÿÿÿÿ0$ÿM5(ÿÿÿÿÿM5(ÿM5(ÿ0$ÿM5(ÿÿÿÿÿM5(ÿM5(ÿM5(ÿÿÿÿÿ0$ÿM,ÿ0$ÿM5(ÿM5(ÿM5(ÿM5(ÿM5(ÿÿÿÿÿM5(ÿM5(ÿM5(ÿM5(ÿM5(ÿM5(ÿM5(ÿM5(ÿM5(ÿÿÿÿÿ0$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿM5(ÿM5(ÿM5(ÿM5(ÿM5(ÿM5(ÿM,ÿoP1ÿ†W0ÿ¨v3ÿ¨v3ÿ×s*ÿé‰+ÿé‰+ÿé‰+ÿé‰+ÿú´)ÿøÌ$ÿøÌ$ÿ ÿMNNÿ ÿ‡Žˆÿ ÿMNNÿ‡Žˆÿ ÿMNNÿ ÿøÌ$ÿé‰+ÿ×s*ÿ¨v3ÿ†W0ÿ†W0ÿ†W0ÿ†W0ÿsKÿM,ÿM5(ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿÿÿÿÿ,**ÿ,**ÿÿÿÿÿ ÿ ÿ ÿÿÿÿÿ,**ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,**ÿ,**ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,**ÿ,**ÿ,**ÿÿÿÿÿÿÿÿÿÿÿÿÿ,**ÿ,**ÿÿÿÿÿ ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ ÿ,**ÿÿÿÿÿ ÿ,**ÿÿÿÿÿ,**ÿ ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿÿÿÿÿ,**ÿ,**ÿ ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿÿÿÿÿ ÿ ÿ ÿ,**ÿÿÿÿÿ,**ÿ ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿM5(ÿM,ÿsKÿ†W0ÿ†W0ÿ†W0ÿ†W0ÿ¨v3ÿ×s*ÿé‰+ÿøÌ$ÿ ÿMNNÿ ÿ‡ŽˆÿMNNÿ ÿMNNÿMNNÿ ÿ ÿú´)ÿ×s*ÿ†W0ÿYF/ÿM5(ÿM5(ÿYF/ÿ0$ÿM5(ÿ,**ÿ,**ÿ) ÿ,**ÿ,**ÿ,**ÿ ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿÿÿÿÿ,**ÿ ÿÿÿÿÿ,**ÿ ÿ,**ÿ ÿ ÿÿÿÿÿ,**ÿ,**ÿ,**ÿÿÿÿÿ,**ÿÿÿÿÿ,**ÿ,**ÿ,**ÿÿÿÿÿ,**ÿ ÿ ÿÿÿÿÿ,**ÿ,**ÿ,**ÿ,**ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿÿÿÿÿ,**ÿÿÿÿÿ,**ÿ,**ÿ ÿ,**ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,**ÿ,**ÿ ÿÿÿÿÿ,**ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,**ÿ,**ÿ,**ÿ,**ÿ ÿ,**ÿ,**ÿ,**ÿ) ÿhµ÷ÿhµ÷ÿM5(ÿ0$ÿYF/ÿM5(ÿhµ÷ÿhµ÷ÿ†W0ÿ×s*ÿú´)ÿ ÿ ÿMNNÿMNNÿ ÿ ÿMNNÿ ÿ ÿøÌ$ÿé‰+ÿ†W0ÿM5(ÿ,**ÿ ÿ,**ÿ,**ÿ ÿ,**ÿ ÿ,**ÿ,**ÿ,**ÿ,**ÿ ÿ,**ÿ ÿ,**ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿ,**ÿ,**ÿ,**ÿÿÿÿÿÿÿÿÿ,**ÿ,**ÿ,**ÿ,**ÿÿÿÿÿ,**ÿ,**ÿ,**ÿÿÿÿÿ,**ÿ,**ÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ,**ÿ,**ÿ ÿ,**ÿÿÿÿÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿÿÿÿÿ ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿÿÿÿÿ,**ÿ,**ÿ,**ÿ,**ÿÿÿÿÿ,**ÿ,**ÿÿÿÿÿÿÿÿÿ ÿ,**ÿÿÿÿÿ,**ÿ,**ÿ,**ÿ ÿÿÿÿÿ,**ÿ,**ÿ,**ÿ ÿ,**ÿ ÿ ÿ,**ÿ,**ÿ,**ÿb­ñÿa­ñÿ,**ÿ ÿb­ñÿa®ñÿ,**ÿM5(ÿ†W0ÿé‰+ÿøÌ$ÿ ÿ ÿMNNÿ ÿMNNÿMNNÿ ÿøÌ$ÿú´)ÿ×s*ÿoP1ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ ÿ ÿ ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ ÿÿÿÿÿ,**ÿ ÿÿÿÿÿ ÿ,**ÿ,**ÿ,**ÿ,**ÿÿÿÿÿ ÿ ÿ,**ÿÿÿÿÿ,**ÿ ÿÿÿÿÿ,**ÿ,**ÿÿÿÿÿ,**ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,**ÿ,**ÿÿÿÿÿ ÿÿÿÿÿ ÿ ÿ ÿ ÿÿÿÿÿ,**ÿ,**ÿ,**ÿ,**ÿÿÿÿÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿÿÿÿÿ ÿ,**ÿ,**ÿ,**ÿÿÿÿÿ ÿ ÿ,**ÿÿÿÿÿ,**ÿ,**ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ ÿ ÿ,**ÿ,**ÿ,**ÿX£èÿX¢éÿX£èÿX£èÿ,**ÿ,**ÿ,**ÿoP1ÿ×s*ÿú´)ÿøÌ$ÿ ÿMNNÿMNNÿ ÿMNNÿ ÿøÌ$ÿú´)ÿµqÿn0 ÿ,**ÿ,**ÿ,**ÿ ÿ ÿ ÿ,**ÿ,**ÿ,**ÿ,**ÿ ÿ ÿ ÿ,**ÿ ÿ ÿ,**ÿ,**ÿ ÿÿÿÿÿ,**ÿ ÿÿÿÿÿ,**ÿ ÿÿÿÿÿ,**ÿ,**ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ,**ÿ ÿÿÿÿÿ ÿÿÿÿÿ,**ÿÿÿÿÿ,**ÿ,**ÿ,**ÿÿÿÿÿ ÿ,**ÿÿÿÿÿ,**ÿÿÿÿÿ ÿ ÿ ÿ ÿ,**ÿÿÿÿÿ ÿ ÿ ÿÿÿÿÿ,**ÿ ÿ ÿ,**ÿ,**ÿ,**ÿ,**ÿ ÿÿÿÿÿ,**ÿ ÿ ÿ ÿÿÿÿÿ,**ÿ,**ÿ,**ÿÿÿÿÿ ÿ ÿÿÿÿÿ ÿ ÿ,**ÿ ÿÿÿÿÿ,**ÿ,**ÿ ÿ ÿ,**ÿ ÿ ÿ ÿ,**ÿ,**ÿ ÿ ÿM•ÞÿM•Þÿ ÿ,**ÿ,**ÿ,**ÿn0 ÿµqÿú´)ÿøÌ$ÿ ÿMNNÿ ÿ ÿutrÿ ÿøÌ$ÿú´)ÿ¨v3ÿn0 ÿ0$ÿ,**ÿ ÿ ÿ ÿ,**ÿ,**ÿ ÿ,**ÿ,**ÿ,**ÿ ÿ,**ÿ,**ÿ ÿ ÿ,**ÿ,**ÿ,**ÿÿÿÿÿÿÿÿÿ,**ÿÿÿÿÿ ÿÿÿÿÿ,**ÿ,**ÿ ÿÿÿÿÿ,**ÿ,**ÿ ÿÿÿÿÿ,**ÿ,**ÿ,**ÿÿÿÿÿ ÿÿÿÿÿ ÿÿÿÿÿ ÿ,**ÿ,**ÿÿÿÿÿ ÿ,**ÿÿÿÿÿ ÿÿÿÿÿ ÿ,**ÿ,**ÿ ÿ,**ÿ ÿ,**ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,**ÿ,**ÿ,**ÿ,**ÿÿÿÿÿ,**ÿ,**ÿ,**ÿ ÿ ÿÿÿÿÿ,**ÿ,**ÿ ÿÿÿÿÿ,**ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,**ÿ,**ÿ ÿ ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ ÿAˆÓÿAˆÓÿBˆÓÿBˆÓÿ ÿ,**ÿ0$ÿn0 ÿ¨v3ÿú´)ÿøÌ$ÿ ÿutrÿ ÿMNNÿMNNÿ ÿøÌ$ÿú´)ÿ×s*ÿoP1ÿ,**ÿ,**ÿ,**ÿ,**ÿ,**ÿ ÿ ÿ ÿ ÿ,**ÿ,**ÿ,**ÿ,**ÿ ÿ,**ÿ,**ÿ,**ÿ ÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿÿÿÿÿ,**ÿ ÿ ÿ ÿÿÿÿÿ,**ÿ,**ÿ,**ÿÿÿÿÿ ÿ,**ÿ,**ÿ,**ÿ,**ÿÿÿÿÿ ÿÿÿÿÿ,**ÿ ÿ ÿÿÿÿÿ,**ÿ ÿ ÿÿÿÿÿ,**ÿ,**ÿ,**ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ,**ÿ,**ÿ,**ÿ ÿ,**ÿÿÿÿÿ,**ÿ,**ÿ ÿ,**ÿ,**ÿÿÿÿÿ,**ÿ ÿ ÿÿÿÿÿ ÿ,**ÿÿÿÿÿ ÿ ÿ ÿ ÿÿÿÿÿ ÿ,**ÿ,**ÿ,**ÿ ÿ,**ÿ ÿ,**ÿ ÿ,**ÿ6zÉÿ6zÉÿ ÿ ÿ6zÉÿ6{Éÿ,**ÿ,**ÿoP1ÿ×s*ÿú´)ÿøÌ$ÿ ÿMNNÿMNNÿ ÿMNNÿ ÿ ÿøÌ$ÿé‰+ÿ’H ÿM5(ÿ,**ÿ,**ÿ ÿ ÿ ÿ,**ÿ ÿ,**ÿ ÿ,**ÿ,**ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿ ÿ ÿÿÿÿÿÿÿÿÿ ÿ ÿÿÿÿÿ ÿÿÿÿÿ ÿ,**ÿ,**ÿÿÿÿÿ ÿ,**ÿ ÿ ÿ,**ÿÿÿÿÿ,**ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,**ÿ ÿÿÿÿÿÿÿÿÿ,**ÿÿÿÿÿ ÿ,**ÿ ÿ ÿ,**ÿ ÿ ÿ ÿÿÿÿÿ ÿ ÿ,**ÿ,**ÿ ÿ,**ÿÿÿÿÿ ÿ ÿ,**ÿ ÿ,**ÿ,**ÿÿÿÿÿ ÿ,**ÿ ÿÿÿÿÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,**ÿ ÿ ÿ ÿ ÿ ÿ,**ÿ ÿ,**ÿ,pÀÿ,oÀÿ ÿ ÿ,**ÿ ÿ,pÀÿ-pÀÿM5(ÿ’H ÿé‰+ÿøÌ$ÿ ÿ ÿMNNÿ ÿ ÿ‡ŽˆÿMNNÿ ÿ ÿé‰+ÿ×s*ÿoP1ÿM,ÿ0$ÿ0$ÿ ÿ ÿ,**ÿ ÿ ÿ ÿ ÿ,**ÿ ÿ ÿ ÿ ÿ ÿ ÿ,**ÿÿÿÿÿ ÿÿÿÿÿ ÿ ÿÿÿÿÿ ÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ,**ÿÿÿÿÿ,**ÿÿÿÿÿ,**ÿ ÿ ÿ ÿ ÿÿÿÿÿ,**ÿ ÿÿÿÿÿÿÿÿÿ ÿ,**ÿ ÿ ÿ ÿ,**ÿ ÿ ÿÿÿÿÿ ÿ ÿ ÿ,**ÿ,**ÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ,**ÿ,**ÿÿÿÿÿ ÿ ÿ ÿÿÿÿÿ ÿ ÿÿÿÿÿ ÿ ÿ ÿ ÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ,**ÿ ÿ ÿ ÿ ÿ ÿ ÿ0$ÿ0$ÿM,ÿoP1ÿ×s*ÿé‰+ÿ ÿ ÿMNNÿ‡Žˆÿ ÿMNNÿMNNÿ ÿMNNÿ ÿøÌ$ÿé‰+ÿµqÿ†W0ÿoP1ÿn0 ÿM,ÿM,ÿM,ÿM,ÿ0$ÿ) ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿ,**ÿÿÿÿÿ ÿ ÿ ÿÿÿÿÿ,**ÿ,**ÿ ÿÿÿÿÿÿÿÿÿ,**ÿ,**ÿ,**ÿ ÿ ÿ ÿ ÿÿÿÿÿ ÿ ÿ ÿ ÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿ ÿ ÿ ÿ ÿÿÿÿÿ ÿ ÿ ÿ ÿ,**ÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ,**ÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ) ÿ0$ÿM,ÿM,ÿM,ÿM,ÿn0 ÿoP1ÿ†W0ÿµqÿé‰+ÿøÌ$ÿ ÿMNNÿ ÿMNNÿMNNÿ ÿMNNÿ ÿMNNÿ ÿøÌ$ÿøÌ$ÿú´)ÿé‰+ÿ×s*ÿ×s*ÿ×s*ÿ¨v3ÿ¨v3ÿ¨v3ÿŒf4ÿoP1ÿM5(ÿM5(ÿYF/ÿYF/ÿM5(ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿM5(ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿM5(ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿM5(ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿM5(ÿYF/ÿYF/ÿM5(ÿM5(ÿoP1ÿŒf4ÿ¨v3ÿ¨v3ÿ¨v3ÿ×s*ÿ×s*ÿ×s*ÿé‰+ÿú´)ÿøÌ$ÿøÌ$ÿ ÿMNNÿ ÿMNNÿ ÿ ÿ‡Žˆÿ ÿutrÿ ÿøÌ$ÿøÌ$ÿøÌ$ÿøÌ$ÿú´)ÿú´)ÿøÌ$ÿú´)ÿú´)ÿú´)ÿé‰+ÿ×s*ÿ¨v3ÿ†W0ÿsKÿ†W0ÿ†W0ÿsKÿsKÿsKÿsKÿsKÿsKÿsKÿoP1ÿsKÿoP1ÿsKÿ†W0ÿsKÿsKÿoP1ÿoP1ÿoP1ÿsKÿoP1ÿ†W0ÿ†W0ÿsKÿoP1ÿsKÿsKÿn0 ÿsKÿsKÿsKÿsKÿoP1ÿsKÿsKÿsKÿsKÿsKÿsKÿoP1ÿoP1ÿoP1ÿsKÿsKÿsKÿoP1ÿsKÿsKÿoP1ÿoP1ÿsKÿoP1ÿsKÿsKÿsKÿ†W0ÿ†W0ÿoP1ÿsKÿoP1ÿoP1ÿoP1ÿsKÿsKÿ†W0ÿsKÿoP1ÿsKÿoP1ÿsKÿsKÿsKÿsKÿsKÿsKÿsKÿ†W0ÿ†W0ÿsKÿ†W0ÿ¨v3ÿ×s*ÿé‰+ÿú´)ÿú´)ÿú´)ÿøÌ$ÿú´)ÿú´)ÿøÌ$ÿøÌ$ÿøÌ$ÿøÌ$ÿ ÿutrÿ ÿ‡Žˆÿ ÿ,**ÿMNNÿ,**ÿutrÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿøÌ$ÿú´)ÿé‰+ÿé‰+ÿé‰+ÿ×s*ÿêx,ÿé‰+ÿêx,ÿ×s*ÿÙr ÿÙr ÿ×s*ÿÙr ÿÙr ÿ×s*ÿÙr ÿÙr ÿ×s*ÿ×s*ÿÙr ÿ×s*ÿÙr ÿ×s*ÿÙr ÿ×s*ÿ×s*ÿé‰+ÿé‰+ÿ×s*ÿé‰+ÿé‰+ÿé‰+ÿêx,ÿÙr ÿÙr ÿ×s*ÿ×s*ÿ×s*ÿ×s*ÿ×s*ÿ×s*ÿ×s*ÿ×s*ÿÙr ÿ×s*ÿ×s*ÿ×s*ÿ×s*ÿÙr ÿÙr ÿ×s*ÿ×s*ÿ×s*ÿ×s*ÿ×s*ÿ×s*ÿé‰+ÿé‰+ÿé‰+ÿé‰+ÿ×s*ÿ×s*ÿÙr ÿ×s*ÿÙr ÿ×s*ÿÙr ÿ×s*ÿ×s*ÿÙr ÿÙr ÿ×s*ÿÙr ÿÙr ÿ×s*ÿÙr ÿÙr ÿ×s*ÿêx,ÿé‰+ÿêx,ÿ×s*ÿé‰+ÿé‰+ÿé‰+ÿú´)ÿøÌ$ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿutrÿ,**ÿMNNÿ,**ÿ ÿMNNÿ ÿ,**ÿ,**ÿutrÿutrÿutrÿutrÿ,**ÿ,**ÿ,**ÿ,**ÿutrÿ ÿ ÿøÌ$ÿøÌ$ÿøÌ$ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿøÌ$ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿú´)ÿøÌ$ÿøÌ$ÿøÌ$ÿ ÿ ÿutrÿ,**ÿ,**ÿ,**ÿ,**ÿutrÿutrÿutrÿutrÿ,**ÿ,**ÿ ÿMNNÿ ÿ ÿ‡Žˆÿutrÿ ÿ,**ÿ ÿ ÿ,**ÿ ÿ ÿ ÿ ÿ ÿ ÿutrÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿutrÿ ÿ ÿ ÿ ÿ ÿ ÿ,**ÿ ÿ ÿ,**ÿ ÿutrÿ‡Žˆÿ ÿutrÿutrÿMNNÿMNNÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿutrÿMNNÿMNNÿutrÿutrÿ,**ÿ,**ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ,**ÿ0$ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ,**ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ,**ÿ,**ÿ ÿ ÿ ÿ ÿ(ÿ-ÿ-ÿ,ÿ+ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ*ÿ*ÿ*ÿ*ÿ(ÿ(ÿ(ÿ(ÿ(ÿ*ÿ*ÿ+ÿ+ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ*ÿ*ÿ*ÿ*ÿ(ÿ(ÿ(ÿ(ÿ(ÿ*ÿ*ÿ+ÿ+ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ*ÿ)ÿ)ÿ*ÿ(ÿ(ÿ' ÿ' ÿ' ÿ/ÿ/ÿ1 ÿ.ÿ* ÿ,ÿ-ÿ.ÿ,ÿ*ÿ+ÿ' ÿ' ÿ ÿ,**ÿ ÿ ÿ,**ÿ ÿ ÿ ÿ,ÿ,ÿ,ÿ*ÿ*ÿ+ÿ(ÿ+ÿ,ÿ,ÿ(ÿ+ÿ+ÿ+ÿ*ÿ*ÿ*ÿ*ÿ(ÿ+ÿ+ÿ+ÿ(ÿ*ÿ*ÿ*ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ*ÿ*ÿ+ÿ(ÿ+ÿ,ÿ,ÿ(ÿ+ÿ+ÿ+ÿ+ÿ,ÿ,ÿ+ÿ(ÿ+ÿ+ÿ*ÿ(ÿ*ÿ*ÿ*ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ*ÿ*ÿ+ÿ(ÿ+ÿ,ÿ,ÿ(ÿ+ÿ+ÿ+ÿ+ÿ*ÿ*ÿ*ÿ(ÿ+ÿ+ÿ+ÿ(ÿ*ÿ*ÿ)ÿ(ÿ)ÿ(ÿ(ÿ& ÿ' ÿ' ÿ( ÿ( ÿ)ÿ.ÿ-ÿ.ÿ1ÿ.ÿ+ÿ,ÿ0ÿ'ÿ'ÿ ÿMNNÿ ÿ,**ÿMNNÿ ÿ‡Žˆÿ ÿ/ÿ/ÿ,ÿ(ÿ*ÿ*ÿ+ÿ(ÿ*ÿ+ÿ(ÿ/ÿ/ÿ,ÿ*ÿ*ÿ*ÿ*ÿ(ÿ*ÿ*ÿ(ÿ*ÿ*ÿ*ÿ(ÿ*ÿ,ÿ,ÿ(ÿ(ÿ(ÿ+ÿ,ÿ,ÿ(ÿ*ÿ*ÿ+ÿ(ÿ*ÿ+ÿ(ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ+ÿ(ÿ*ÿ*ÿ(ÿ*ÿ*ÿ*ÿ(ÿ*ÿ,ÿ,ÿ(ÿ(ÿ(ÿ+ÿ,ÿ,ÿ(ÿ*ÿ*ÿ+ÿ(ÿ*ÿ+ÿ(ÿ*ÿ*ÿ+ÿ*ÿ*ÿ*ÿ*ÿ(ÿ*ÿ*ÿ(ÿ*ÿ*ÿ*ÿ(ÿ)ÿ+ÿ*ÿ(ÿ' ÿ' ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ(ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ-ÿ,ÿ,ÿ(ÿ0ÿ/ÿ,ÿ(ÿ*ÿ/ÿ0ÿ0ÿ/ÿ,ÿ*ÿ*ÿ*ÿ*ÿ(ÿ*ÿ*ÿ(ÿ+ÿ*ÿ(ÿ(ÿ(ÿ*ÿ*ÿ,ÿ(ÿ*ÿ*ÿ*ÿ(ÿ(ÿ(ÿ*ÿ+ÿ(ÿ*ÿ+ÿ(ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ+ÿ(ÿ*ÿ*ÿ(ÿ+ÿ*ÿ(ÿ(ÿ(ÿ*ÿ*ÿ,ÿ(ÿ*ÿ*ÿ*ÿ(ÿ(ÿ(ÿ*ÿ+ÿ(ÿ*ÿ+ÿ(ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ(ÿ*ÿ*ÿ(ÿ+ÿ*ÿ(ÿ(ÿ(ÿ*ÿ)ÿ+ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ(ÿ(ÿ'ÿ(ÿ(ÿ'ÿ(ÿ(ÿ(ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ/ÿ/ÿ/ÿ/ÿ2!ÿ0ÿ0ÿ+ÿ(ÿ/ÿ0ÿ0ÿ/ÿ*ÿ*ÿ*ÿ*ÿ*ÿ(ÿ*ÿ(ÿ*ÿ+ÿ*ÿ(ÿ(ÿ(ÿ(ÿ*ÿ*ÿ*ÿ*ÿ*ÿ(ÿ(ÿ(ÿ(ÿ*ÿ*ÿ+ÿ(ÿ*ÿ(ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ+ÿ(ÿ*ÿ(ÿ*ÿ+ÿ*ÿ(ÿ(ÿ(ÿ(ÿ*ÿ*ÿ*ÿ*ÿ*ÿ(ÿ(ÿ(ÿ(ÿ*ÿ*ÿ+ÿ(ÿ*ÿ(ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ(ÿ*ÿ(ÿ*ÿ+ÿ*ÿ(ÿ(ÿ(ÿ)ÿ)ÿ386ÿN~Šÿa²Éÿa·Ðÿa·Ðÿa±ÈÿN~Šÿ383ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ/ÿ0ÿ2!ÿ2!ÿ2!ÿ2!ÿ2!ÿ0ÿ/ÿ0ÿ/ÿ/ÿ,ÿ*ÿ*ÿ*ÿ*ÿ*ÿ(ÿ*ÿ(ÿ+ÿ+ÿ(ÿ(ÿ(ÿ(ÿ*ÿ*ÿ*ÿ(ÿ*ÿ*ÿ,ÿ(ÿ(ÿ(ÿ(ÿ*ÿ+ÿ(ÿ*ÿ(ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ+ÿ(ÿ*ÿ(ÿ+ÿ+ÿ(ÿ(ÿ(ÿ(ÿ*ÿ*ÿ*ÿ(ÿ*ÿ*ÿ,ÿ(ÿ(ÿ(ÿ(ÿ*ÿ+ÿ(ÿ*ÿ(ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ(ÿ*ÿ(ÿ+ÿ+ÿ(ÿ(ÿ(ÿ(ÿ,ÿQƒ‘ÿU¡¸ÿ%FOÿ + ÿ +ÿ +ÿ + ÿ%FOÿU¡¸ÿQ†”ÿ+"ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ0ÿ0ÿ2!ÿ2!ÿ2!ÿ2!ÿ2!ÿ0ÿ/ÿ0ÿ0ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ(ÿ*ÿ(ÿ+ÿ+ÿ(ÿ(ÿ(ÿ*ÿ*ÿ*ÿ(ÿ(ÿ(ÿ*ÿ*ÿ,ÿ(ÿ(ÿ(ÿ*ÿ*ÿ(ÿ*ÿ(ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ(ÿ*ÿ(ÿ+ÿ+ÿ(ÿ(ÿ(ÿ*ÿ*ÿ*ÿ(ÿ(ÿ(ÿ*ÿ*ÿ,ÿ(ÿ(ÿ(ÿ*ÿ*ÿ(ÿ*ÿ(ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ(ÿ*ÿ(ÿ+ÿ+ÿ(ÿ(ÿ(ÿ+ÿ[Ÿ²ÿ2`mÿ +ÿ +)ZÿQ¬ÿbÍÿbÍÿQ¬ÿ +)Zÿ +ÿ2`mÿ[¡³ÿ+ÿ)ÿ*ÿ*ÿ*ÿ*ÿ*ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ/ÿ0ÿ2!ÿ2!ÿ2!ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ/ÿ,ÿ,ÿ*ÿ*ÿ*ÿ*ÿ(ÿ*ÿ(ÿ*ÿ+ÿ(ÿ*ÿ*ÿ*ÿ*ÿ(ÿ(ÿ(ÿ(ÿ(ÿ*ÿ*ÿ+ÿ+ÿ(ÿ*ÿ*ÿ(ÿ*ÿ(ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ(ÿ*ÿ(ÿ*ÿ+ÿ(ÿ*ÿ*ÿ*ÿ*ÿ(ÿ(ÿ(ÿ(ÿ(ÿ*ÿ*ÿ+ÿ+ÿ(ÿ*ÿ*ÿ(ÿ*ÿ(ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ(ÿ*ÿ(ÿ*ÿ+ÿ(ÿ*ÿ)ÿP„’ÿ5drÿ ÿO§ÿ V³ÿ.`ÿÿÿÿ,]ÿO¨ÿ ÿ5drÿR„‘ÿ*ÿ*ÿ*ÿ*ÿ*ÿ+ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ/ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ2!ÿ2!ÿ0ÿ0ÿ0ÿ-ÿ-ÿ,ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ*ÿ*ÿ*ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ*ÿ*ÿ*ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ365ÿU¡¸ÿ ÿL¤ÿ kÛÿ-\ÿ…¬µÿºïûÿºïûÿºïûÿÿ:yÿL¤ÿ ÿU¡¸ÿ587ÿ*ÿ*ÿ*ÿ*ÿ*ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ/ÿ/ÿ/ÿ0ÿ2!ÿ2!ÿ2!ÿ0ÿ2!ÿ2!ÿ0ÿ0ÿ/ÿ/ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿO�Žÿ%FOÿ +)YÿaËÿ?€ÿeƒŒÿºïûÿLdkÿÿ˜ÄÎÿ©Úåÿ ÿaËÿ +)Yÿ#BLÿO��ÿ+ÿ+ÿ*ÿ+ÿ+ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ/ÿ0ÿ/ÿ0ÿ2!ÿ2!ÿ2!ÿ0ÿ0ÿ/ÿ/ÿ0ÿ0ÿ-ÿ,ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿb²Êÿ + ÿJ¡ÿ +aÈÿ6ÿ˜ÄÎÿ˜ÄÎÿ6ÿ4iÿeƒŒÿºïûÿÿ +aÈÿJ¡ÿ ÿb²Éÿ+ÿ*ÿ*ÿ*ÿ+ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ-ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ/ÿ/ÿ0ÿ/ÿ/ÿ-ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿb¹Óÿ +ÿR±ÿZ»ÿ:wÿ1ÿ1ÿ#Jÿÿ©Úåÿ˜ÄÎÿ1ÿZ»ÿR²ÿ +ÿb¹Óÿ*ÿ*ÿ*ÿ*ÿ*ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ0ÿ0ÿ2!ÿ2!ÿ0ÿ0ÿ0ÿ/ÿ0ÿ0ÿ/ÿ,ÿ,ÿ,ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿE€•ÿ +ÿNªÿ R¬ÿKœÿK›ÿ3jÿLdkÿºïûÿ˜ÄÎÿ,ÿ3kÿ R¬ÿM©ÿÿC}‘ÿ*ÿ*ÿ*ÿ*ÿ*ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ0ÿ0ÿ2!ÿ2!ÿ0ÿ0ÿ0ÿ/ÿ0ÿ0ÿ/ÿ-ÿ,ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ6ZiÿÿB“ÿ K¢ÿC�ÿAŠÿ(ÿ˜ÄÎÿ˜ÄÎÿ(ÿ,_ÿC�ÿ K¢ÿB“ÿÿ6Ygÿ+ÿ*ÿ*ÿ+ÿ+ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ,ÿ/ÿ/ÿ/ÿ/ÿ0ÿ/ÿ/ÿ/ÿ/ÿ-ÿ-ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ2ENÿ#)ÿ +$QÿEœÿ>‰ÿ8}ÿ%Tÿ#ÿÿDÿ8}ÿ>‰ÿEœÿ +$Qÿ!'ÿ2EMÿ*ÿ*ÿ+ÿ+ÿ+ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ-ÿ/ÿ/ÿ0ÿ0ÿ0ÿ0ÿ/ÿ-ÿ-ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ,ÿ,ÿ,ÿ,ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ*ÿ*ÿ*ÿ*ÿ+ÿ+ÿ*ÿ+ÿ+ÿ+ÿ+ÿ,ÿ+ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ+ÿ+ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ-*'ÿ,Q`ÿ ÿ<‡ÿ @�ÿ7|ÿ !ÿ˜ÄÎÿ©Úåÿÿ7|ÿ @�ÿ<‡ÿ ÿ,Q`ÿ-)%ÿ+ÿ+ÿ+ÿ+ÿ+ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ/ÿ-ÿ/ÿ/ÿ0ÿ0ÿ/ÿ/ÿ-ÿ/ÿ-ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ*ÿ*ÿ*ÿ)ÿ3KSÿ5?ÿ +ÿ9ƒÿ=Œÿ%ÿ˜ÄÎÿ©Úåÿÿ=Œÿ9ƒÿ +ÿ5?ÿ4LTÿ+ÿ+ÿ+ÿ+ÿ*ÿ+ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ/ÿ-ÿ,ÿ-ÿ-ÿ/ÿ/ÿ/ÿ/ÿ/ÿ-ÿ,ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ*ÿ*ÿ*ÿ*ÿ+ÿ+ÿ+ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ)ÿ)ÿ9\hÿ6?ÿ ÿ +!Lÿ &Xÿ)ÿÿ Hÿ +!Lÿ ÿ6?ÿ8]iÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ-ÿ-ÿ,ÿ,ÿ-ÿ/ÿ/ÿ/ÿ-ÿ,ÿ,ÿ,ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ*ÿ*ÿ+ÿ+ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ)ÿ)ÿ*ÿ7Q[ÿ3_pÿ)0ÿÿÿ ÿÿ)0ÿ3_pÿ8T^ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ*ÿ+ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ-ÿ-ÿ-ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ%!#ÿ(9ÿ,Lÿ 0Zÿ2gÿ6pÿ8vÿ:|ÿ:|ÿ8vÿ6pÿ3gÿ 1[ÿ,Kÿ'9ÿ# "ÿ*ÿ*ÿ*ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ*ÿ+ÿ)ÿ*ÿ*ÿ)ÿ,+(ÿ8S]ÿ>o�ÿ;p…ÿ;n‚ÿ>m~ÿ8S]ÿ.-*ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ,ÿ-ÿ-ÿ/ÿ0ÿ0ÿ/ÿ(ÿ(ÿ-ÿ/ÿ/ÿ/ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ'ÿ"/ÿ,Rÿ5pÿM�ÿ.g­ÿA{¿ÿF‚ÊÿK‡ÑÿOŒÕÿJ‹ÔÿO�ÙÿW™áÿU—àÿY™àÿV•ÛÿP�ÓÿD€Äÿ0j¯ÿM‘ÿ5pÿ,Rÿ"/ÿ'ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ)ÿ(ÿ(ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ,ÿ,ÿ,ÿ-ÿ/ÿ0ÿ/ÿ-ÿ(ÿ,ÿ,ÿ,ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ#ÿ*Iÿ;~ÿ$_¢ÿDÄÿMŒÕÿJ�ÙÿIŽÙÿJ�ÚÿJ’ÝÿF�ÛÿI�ÚÿE}¼ÿ2Kÿ2KÿP‡ÃÿYœâÿZšßÿXšàÿX›áÿ]Ÿäÿ^ æÿ\œáÿK‡Ëÿ$_£ÿ;~ÿ*Iÿ#ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ)ÿ(ÿ(ÿ)ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ-ÿ-ÿ,ÿ,ÿ-ÿ-ÿ/ÿ/ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ%#)ÿ3WÿN‘ÿB}ÂÿQ�×ÿC‡ÓÿAˆÕÿJ“ÞÿJ‘ÜÿN“ÞÿR—ßÿM�ÚÿFŠÖÿG‰Ôÿ+Owÿ3Oÿ3Oÿ(Mwÿ3|Ëÿ.xÈÿ,vÉÿ-wÉÿ.xÊÿ2wÆÿ:€ÏÿGŠÖÿS”ÜÿX–ÝÿC~ÃÿJ�ÿ-Rÿ$"(ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ,ÿ+ÿ,ÿ+ÿ+ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ,ÿ-ÿ-ÿ.ÿ,ÿ,ÿ,ÿ,ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ)!"ÿ0SÿX›ÿ?jžÿFu«ÿF‡Óÿ@‰×ÿL”ÞÿS—àÿR“ÜÿGˆÑÿ<€Ëÿ4xÆÿ.uÄÿ.xÉÿ5~Íÿ5fœÿ!>_ÿ!>_ÿ8iŸÿGŽÛÿFŽÚÿO–àÿL”ßÿG�ÜÿA‹Ùÿ9†Öÿ2~Îÿ5€Ïÿ3zËÿB…Ðÿ[˜ÝÿNˆÍÿR”ÿ.Pÿ("#ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ-ÿ,ÿ-ÿ,ÿ,ÿ*ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ,ÿ-ÿ-ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ*FÿAƒÿEÄÿÿ ;\ÿL‡ËÿC{ÀÿAƒÿ*Fÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ-ÿ,ÿ-ÿ,ÿ,ÿ*ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ,ÿ-ÿ-ÿ+ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ )ÿ,Sÿ(b¦ÿU’ÙÿP�Ùÿ+Nwÿ9Wÿ8Vÿ2W�ÿBƒÎÿ/sÀÿ \ ÿG€ÿ(Wÿ-]ÿ2dÿ 7iÿ:nÿqÿ@tÿAuÿAuÿAvÿBvÿBvÿBwÿBwÿBvÿBvÿAvÿAuÿAuÿ@tÿ>qÿ 8jÿ0`ÿ)Xÿ.cŸÿ-Ouÿ"Adÿ =\ÿO‰ÇÿL�Üÿ>‡Ôÿ>…Òÿ=y¿ÿ?�ÿ*?ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ+ÿ*ÿ+ÿ*ÿ+ÿ)ÿ*ÿ*ÿ*ÿ*ÿ*ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ,ÿ+ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ+HÿJŒÿQŽÓÿP�Øÿ>�Íÿ9�ÐÿG�×ÿJŽ×ÿI…Éÿ!V‘ÿ1`ÿ 5fÿ=qÿ?tÿ@vÿAwÿBwÿByÿCyÿCzÿDzÿD{ÿD{ÿD{ÿD{ÿDzÿCzÿCyÿByÿBwÿAwÿ@vÿ?tÿ=qÿ9jÿ=mÿ/Z‹ÿH~½ÿL�ÚÿHŒÖÿP“ÝÿM‘ÝÿG�ÙÿDƒËÿJŒÿ+Hÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ)ÿ)ÿ*ÿ)ÿ)ÿ(ÿ)ÿ)ÿ)ÿ)ÿ)ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ,ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ)HÿT–ÿS’ØÿQ‘Øÿ>�Íÿ4|ÌÿL�ÙÿMŽÖÿ"V“ÿ*Xÿ +4eÿ>rÿ@tÿAvÿBwÿCxÿDzÿCpÿ!ARÿ)>6ÿ/<#ÿ3:ÿ69 ÿ88ÿ88ÿ69 ÿ3:ÿ/<#ÿ)>6ÿ!ARÿCpÿDzÿCxÿBwÿAvÿAuÿ@tÿ9jÿ.]ÿ&[—ÿKŒÕÿGŒÕÿO’ÛÿT—ÝÿDŒØÿC„ÍÿS”ÿ)Hÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ)ÿ(ÿ(ÿ'ÿ'ÿ(ÿ(ÿ(ÿ(ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ)ÿ)ÿ+ÿ-ÿ/ÿ0ÿ/ÿ/ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)HÿV˜ÿ\™ÝÿQ’ÙÿHŠÓÿ9�ÏÿBˆÕÿ=|ÀÿN‡ÿ/_ÿ;oÿ?sÿ@uÿBwÿCxÿCqÿ$?Dÿ1;ÿ66ÿ01ÿ+-ÿ'*ÿ$'ÿ"%ÿ!%ÿ!%ÿ"%ÿ$'ÿ'*ÿ+-ÿ01ÿ66ÿ1;ÿ$?DÿCqÿCxÿBwÿ@uÿ?sÿqÿ?sÿAuÿBwÿAhÿ'=7ÿ66ÿ./ÿ&(ÿ$&ÿ13ÿ@@ÿJIÿSPÿXUÿ[X ÿ[X ÿXUÿSPÿJIÿ@@ÿ23ÿ$&ÿ&(ÿ./ÿ66ÿ(=4ÿAeÿBwÿAuÿ?sÿ>qÿ 5eÿ+Xÿ.e¢ÿO’ÙÿYšßÿ\›ÞÿP”Úÿ>€ÊÿS•ÿ)Eÿ.ÿ,ÿ.ÿ.ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ*ÿ+ÿ*ÿ+ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ-ÿ+ÿ-ÿ-ÿ/ÿ/ÿ/ÿ-ÿ)ÿ)ÿ)ÿ)ÿ(ÿ(ÿ(ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ%;ÿQ’ÿO‚»ÿ@jšÿT�Ñÿ9ËÿG�Øÿ.cžÿ,Yÿ9jÿ>qÿ?sÿAuÿAqÿ&<8ÿ54ÿ+-ÿ"&ÿ24ÿHGÿ_\ ÿrnÿ…�%ÿ”�1ÿ¢Ÿ>ÿ«¨Hÿ±­Oÿ±¬Mÿª§Eÿ ž;ÿ”�0ÿ…�%ÿroÿ_\ ÿHGÿ24ÿ"&ÿ*,ÿ54ÿ&<8ÿAqÿAuÿ?sÿ>qÿ9jÿ,Yÿ.bœÿS“×ÿ^žÞÿ_ âÿHŒÔÿJˆÎÿLŽÿ&;ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ*ÿ' ÿ'ÿ' ÿ' ÿ' ÿ' ÿ' ÿ' ÿ' ÿ' ÿ' ÿ( ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ-ÿ/ÿ+ÿ/ÿ/ÿ0ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ%ÿ C…ÿQ„¿ÿ+Bÿ+Bÿ!<[ÿ@‰Öÿ-ašÿ,Zÿ:kÿ=qÿ?sÿAvÿ!=Hÿ66ÿ-.ÿ#&ÿ9:ÿ\Y +ÿuqÿ–‘8ÿ¯ªJÿº´[ÿÁ»jÿÈÀvÿÍÆ‚ÿÒÊŒÿÓÌ�ÿÓÌ�ÿÑɉÿÌÄÿÇ¿tÿÀ¹eÿ¸±Uÿ­©Gÿ•�5ÿsoÿ\Y +ÿ9:ÿ#&ÿ-.ÿ66ÿ!=HÿAvÿ?sÿ=qÿ:kÿ,Zÿ/ašÿ^�ßÿ.Lnÿ%9ÿ%CfÿM†ËÿAƒÿ$ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ'ÿ(ÿ)ÿ' ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ0ÿ0ÿ-ÿ/ÿ0ÿ0ÿ0ÿ.ÿ.ÿ/ÿ/ÿ/ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ(ÿ)ÿ)ÿ(ÿ+QÿL…ÅÿHy¯ÿ6Sÿ;[ÿ6Qÿ7n©ÿ,Zÿ:lÿ=pÿ?sÿ@uÿ%;8ÿ23ÿ&)ÿ46ÿPOÿ}y'ÿ¦¢Iÿ¹´^ÿľqÿÍǃÿÑÊŠÿÓÌŒÿÓËŒÿÓÌŒÿÔË‹ÿÓʉÿÓʉÿÓËŠÿÒËŠÿÓʉÿÑɉÿÏÈ„ÿËÄ|ÿ¼mÿ·²Xÿ£ Dÿzw$ÿNM ÿ46ÿ&)ÿ23ÿ%;7ÿ@uÿ?sÿ=pÿ:lÿ .]ÿ7fšÿ0Jÿ7Uÿ0Jÿ:s³ÿD~Àÿ,Qÿ(ÿ)ÿ+ÿ(ÿ(ÿ(ÿ)ÿ)ÿ*ÿ,ÿ*ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ2!ÿ0ÿ2!ÿ2!ÿ0ÿ0ÿ0ÿ0ÿ/ÿ/ÿ0ÿ/ÿ/ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ.ÿ+ÿ.ÿ(ÿ)ÿ,ÿ'Cÿ*d¥ÿR’ØÿY—Úÿ5Z„ÿ'Inÿ5a�ÿ7dÿ8iÿqÿ@tÿ&:2ÿ/0ÿ$(ÿBCÿliÿ¡�Gÿ¼¸eÿÊÄÿÒÌŽÿÒÊ‹ÿÒʈÿÐÆ€ÿÎÄyÿÌÁqÿʼeÿǺ]ÿŹXÿŸYÿȺ_ÿË¿gÿÍÁpÿÎÃyÿÐÆ€ÿÑÇ„ÿÑɈÿÐÊŠÿÇÁxÿ¹´\ÿœ˜>ÿhdÿBCÿ$(ÿ/0ÿ&:2ÿ@tÿ>qÿkÿ&Egÿ#Beÿ(HkÿD‰Òÿ<~Êÿ*c¤ÿ(Dÿ(ÿ(ÿ+ÿ(ÿ)ÿ.ÿ)ÿ)ÿ+ÿ(ÿ,ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ2!ÿ0ÿ2!ÿ2!ÿ2!ÿ0ÿ0ÿ0ÿ0ÿ0ÿ/ÿ-ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ)ÿ+ÿ.ÿ.ÿ(ÿ)ÿ(!#ÿ@‚ÿS‘ÕÿM‘ÙÿP’Øÿ@…Ïÿ?�Åÿ5bÿ8iÿ;nÿ=qÿ?sÿ%80ÿ-.ÿ*,ÿGF ÿ�.ÿµ²]ÿþrÿÌÅÿÊÂxÿǾnÿÅ»iÿĸbÿ÷[ÿµVÿõSÿôLÿÄ´HÿôGÿóGÿôIÿÄ´KÿĵQÿõUÿ÷ZÿĹ`ÿÅ»gÿǾoÿÊÂxÿËÄ}ÿÀºjÿ¯¬Pÿ{x$ÿEDÿ*,ÿ-.ÿ%80ÿ?sÿ=qÿkÿGz²ÿ`œÚÿR˜Ýÿ-vÇÿI…Êÿ@‚ÿ"ÿ(ÿ)ÿ(ÿ)ÿ.ÿ)ÿ)ÿ*ÿ+ÿ*ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ2!ÿ0ÿ0ÿ0ÿ2!ÿ/ÿ/ÿ0ÿ0ÿ/ÿ-ÿ)ÿ)ÿ)ÿ)ÿ(ÿ(ÿ(ÿ(ÿ)ÿ+ÿ.ÿ(ÿ)ÿ-PÿAz»ÿR“ÚÿYšÜÿ@…Ïÿ:ƒÏÿ'XŽÿ 3bÿ:lÿqÿ$81ÿ,.ÿ.1ÿc`ÿ‘Ž<ÿ¸´^ÿÄ¿sÿÉÁwÿÄ»jÿÀµ\ÿ¾±Tÿ½°Pÿ½¯Lÿ¾°JÿÀ°FÿÀ±Cÿò@ÿij=ÿij;ÿÄ´<ÿÄ´<ÿó=ÿ²@ÿÀ±Dÿ¿±Hÿ¾°Kÿ¾°Nÿ¿²UÿÀ¶^ÿļjÿÈÁvÿ¼lÿ´¯TÿŒ‰3ÿ_\ÿ.1ÿ,.ÿ$81ÿ>qÿÿ½­9ÿÁ±:ÿúøðÿûúõÿûúôÿȵ)ÿùøðÿûúõÿøöëÿÁ°9ÿ½­:ÿº«?ÿ¸«Bÿ·ªEÿ·ªGÿ·«Hÿ¸­Kÿ¹¯Qÿ¼µ]ÿ¼¶`ÿ³®Uÿ�Œ:ÿLKÿ&)ÿ./ÿ8CÿƒÍÿ+]“ÿ 1_ÿ7iÿ9lÿ:jÿ//ÿ+-ÿMMÿ†ƒ7ÿ±­Sÿ·°Wÿ¹¯Sÿ¶¬Iÿµ©Fÿµ¨Dÿ´¨Cÿ´§Bÿ´§Aÿ´¦@ÿµ§=ÿ¸©:ÿ¼¬6ÿȺPÿîèÅÿ˹8ÿèâ¬ÿȵ%ÿîéÃÿÓÄYÿòîÖÿȹMÿ»¬6ÿ¸©:ÿµ§>ÿ´§@ÿ´§Bÿ´¨Cÿµ¨Dÿµ©Fÿ¶¬Kÿº°Vÿ·°Wÿ¯ªOÿ�~/ÿIIÿ(+ÿ//ÿ:iÿ9lÿ7iÿ 1_ÿ/_”ÿY›ÜÿI�Øÿ(o¾ÿDÄÿIŠÿ#ÿ(ÿ)ÿ,ÿ)ÿ)ÿ,ÿ(ÿ)ÿ)ÿ(ÿ(ÿ(ÿ)ÿ)ÿ)ÿ)ÿ(ÿ(ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ2!ÿ0ÿ0ÿ/ÿ/ÿ/ÿ/ÿ/ÿ-ÿ+ÿ+ÿ(ÿ(ÿ(ÿ(ÿ*ÿ(ÿ)ÿ)ÿ(ÿ+ÿ.ÿ-MÿG¾ÿV•ÛÿP‘×ÿ2uÀÿA‚Æÿ .Xÿ5eÿ8iÿ9lÿ"32ÿ-.ÿABÿuq)ÿ¬¨Nÿ¯©Kÿ´¬Kÿ²©Fÿ±¦Cÿ±¥@ÿ±¥?ÿ±¤>ÿ±£>ÿ±£=ÿ±£<ÿ³¥:ÿ¶§7ÿºª2ÿÉ»RÿÓÆeÿóïÔÿÖÈ\ÿɵ"ÿØÊbÿëå¶ÿ×ÊpÿÉ»Rÿº©2ÿµ¦7ÿ³¥:ÿ±£<ÿ±£>ÿ±¤>ÿ±¥?ÿ±¥@ÿ±¦Cÿ²©Fÿµ­Mÿ¯©Kÿª§Lÿpl"ÿ<= +ÿ,-ÿ"32ÿ9lÿ8iÿ5eÿ .XÿV“ÐÿQ”Úÿ+tÄÿ3r¼ÿByºÿ,Kÿ(ÿ)ÿ,ÿ)ÿ)ÿ,ÿ(ÿ)ÿ)ÿ(ÿ(ÿ)ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ/ÿ0ÿ0ÿ/ÿ-ÿ/ÿ/ÿ-ÿ-ÿ+ÿ(ÿ(ÿ(ÿ(ÿ(ÿ*ÿ(ÿ)ÿ)ÿ(ÿ+ÿ- ÿKŠÿ3T{ÿ6Pÿ:e”ÿ9~Éÿ*]•ÿ1^ÿ6gÿ8jÿ7[ÿ,,ÿ/3 +ÿ][ÿœ˜Cÿ¨£Aÿ±©Gÿ¯¦Cÿ¯¤@ÿ®¢=ÿ®¡<ÿ­ :ÿ­Ÿ:ÿ­Ÿ9ÿ­Ÿ9ÿ®Ÿ8ÿ°¡6ÿ³£3ÿ¸§/ÿ̾ZÿÔÆeÿûúõÿÛÎoÿÉ´ ÿÕÇZÿûúõÿ;Oÿ˾Zÿ¸§/ÿ³£3ÿ°¡6ÿ®Ÿ8ÿ­Ÿ9ÿ­Ÿ:ÿ­ :ÿ®¡<ÿ®¢>ÿ¯¤@ÿ¯¦Cÿ±©Iÿ¨¤Cÿš–?ÿXVÿ+.ÿ,,ÿ7Zÿ8jÿ6gÿ1^ÿ4e˜ÿYœÝÿ?w³ÿ'LuÿDq¥ÿ E‡ÿ'ÿ)ÿ.ÿ)ÿ)ÿ+ÿ(ÿ)ÿ)ÿ(ÿ(ÿ)ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ/ÿ/ÿ/ÿ/ÿ-ÿ-ÿ+ÿ+ÿ-ÿ-ÿ+ÿ(ÿ)ÿ(ÿ(ÿ*ÿ(ÿ)ÿ)ÿ(ÿ+ÿ#)7ÿ/]‘ÿ.Gÿ3Oÿ.FÿI‹Ïÿ/Xÿ4cÿ6hÿ8kÿ"1.ÿ-.ÿIIÿ{.ÿ§¤Cÿª£Aÿ­¥Aÿ¬¡=ÿ« :ÿªž8ÿ©�6ÿ©œ6ÿ©œ5ÿ©œ5ÿ©œ5ÿ©œ3ÿ¬Ÿ2ÿ°¡/ÿ¶¦+ÿÍÀaÿûúõÿõóßÿûúõÿdzÿûúõÿûúõÿûúõÿÌÀ_ÿ¶¥+ÿ°¡/ÿ¬Ÿ2ÿªœ4ÿ©œ5ÿ©œ5ÿ©œ6ÿ©�6ÿªž8ÿ« :ÿ¬¡=ÿ­¥Bÿ«¤Cÿ§¤Cÿ|x)ÿCD ÿ,.ÿ"1-ÿ8kÿ6hÿ4cÿ/Xÿ]˜Ñÿ-Dÿ.Gÿ,Bÿ0bœÿ#0ÿ)ÿ,ÿ)ÿ)ÿ+ÿ(ÿ)ÿ)ÿ(ÿ(ÿ)ÿ(ÿ)ÿ)ÿ(ÿ)ÿ)ÿ)ÿ)ÿ)ÿ(ÿ(ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ/ÿ/ÿ/ÿ-ÿ/ÿ-ÿ-ÿ-ÿ+ÿ+ÿ(ÿ)ÿ)ÿ(ÿ(ÿ*ÿ(ÿ)ÿ)ÿ(ÿ+ÿ1WÿK}·ÿ <[ÿ"@bÿ$Acÿ:t±ÿ1[ÿ4dÿ6gÿ7bÿ++ÿ03 +ÿgcÿœ™?ÿ£ž;ÿ«£@ÿ¨Ÿ<ÿ¨œ8ÿ¦›6ÿ¦™4ÿ¥™3ÿ¥˜2ÿ¥˜2ÿ¥˜2ÿ¥˜2ÿ¦˜0ÿ¨š/ÿ­ž,ÿ³£(ÿÑÅnÿßÕ‘ÿȵ-ÿæÞ¢ÿƲÿëã²ÿǵ*ÿãÜ¢ÿÐÄlÿ³£(ÿ­ž,ÿ¨š/ÿ¦™0ÿ¥˜2ÿ¥˜2ÿ¥˜2ÿ¥™3ÿ¦™4ÿ¦›6ÿ¨œ8ÿ¨Ÿ<ÿ«£Aÿ¤Ÿ<ÿ›˜>ÿb_ÿ-/ÿ**ÿ7bÿ6gÿ4dÿ1[ÿL±ÿ6Tÿ!>_ÿ6TÿFw°ÿ-Sÿ)ÿ,ÿ)ÿ)ÿ+ÿ(ÿ)ÿ)ÿ(ÿ(ÿ)ÿ(ÿ)ÿ)ÿ*ÿ(ÿ)ÿ)ÿ)ÿ)ÿ(ÿ(ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ-ÿ-ÿ-ÿ-ÿ+ÿ+ÿ,ÿ(ÿ(ÿ*ÿ(ÿ(ÿ(ÿ(ÿ(ÿ*ÿ(ÿ(ÿ)ÿ(ÿ+ÿ7pÿ[“ÓÿG€¼ÿ=l ÿ>yºÿ*V†ÿ2^ÿ5eÿ7gÿ1;ÿ--ÿABÿwu'ÿ¤ ?ÿ£�9ÿ§Ÿ<ÿ¥›7ÿ£˜3ÿ¢—1ÿ¡–0ÿ¡•/ÿ¡•/ÿ¡•/ÿ¡•/ÿ¡•/ÿ£–-ÿ¥˜,ÿ«�*ÿ²¢&ÿ×Í€ÿ̽OÿôðÚÿÕÅWÿƳÿÖÈ]ÿðëÊÿÍÀTÿÖË}ÿ²£&ÿ«�*ÿ¦™+ÿ¢–-ÿ¡•/ÿ¡•/ÿ¡•/ÿ¡•/ÿ¡–0ÿ¢—1ÿ£˜3ÿ¥›7ÿ§Ÿ;ÿ¤ž:ÿ£Ÿ>ÿvr#ÿ=> ÿ+,ÿ1;ÿ7gÿ5eÿ3_ÿ1]ŒÿGx®ÿ-Vƒÿ4b˜ÿ[”Ôÿ6oÿ)ÿ,ÿ)ÿ)ÿ+ÿ(ÿ)ÿ)ÿ(ÿ(ÿ)ÿ(ÿ)ÿ)ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ+ÿ-ÿ,ÿ,ÿ+ÿ,ÿ*ÿ*ÿ*ÿ*ÿ*ÿ-ÿ-ÿ+ÿ*ÿ*ÿ(ÿ(ÿ)ÿ(ÿ%"ÿKŒÿR�ÓÿB‡ÑÿN�Òÿ.o¹ÿ0Xÿ3aÿ5eÿ6gÿ$*ÿ.0ÿTRÿŽŒ3ÿŸš7ÿ¤�9ÿ£š5ÿ¡–2ÿŸ”/ÿž’-ÿ�‘,ÿ�‘,ÿ�‘+ÿž‘,ÿž‘,ÿ�‘+ÿ “*ÿ£–)ÿª›'ÿ²¢#ÿâÛ¥ÿ;MÿùøðÿÖÇ[ÿƲÿÐÀDÿùøðÿͽLÿàÚŸÿ²¢#ÿª›&ÿ£–)ÿŸ“)ÿ�‘*ÿž‘,ÿ�‘,ÿ�‘,ÿ�‘,ÿž’-ÿŸ”/ÿ¡–2ÿ£š5ÿ¤�:ÿŸš7ÿ�‹2ÿQOÿ-/ÿ$*ÿ6gÿ5eÿ3aÿ1ZÿM�Õÿ8~Ëÿ*j³ÿT‘ÓÿKŒÿ#ÿ,ÿ)ÿ)ÿ+ÿ(ÿ)ÿ)ÿ(ÿ(ÿ)ÿ(ÿ)ÿ)ÿ(ÿ(ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ,ÿ,ÿ,ÿ,ÿ,ÿ+ÿ-ÿ/ÿ/ÿ-ÿ(ÿ+ÿ+ÿ(ÿ(ÿ*ÿ(ÿ(ÿ)ÿ(ÿ&8ÿ-e£ÿNŒÑÿK�ÕÿIŠÏÿ+i«ÿ0Yÿ2bÿ4eÿ5^ÿ((ÿ36ÿeaÿŸ›<ÿ�—5ÿ¡™6ÿŸ•1ÿœ‘-ÿš�*ÿšŽ)ÿš�(ÿš�(ÿš�(ÿ™�(ÿš�(ÿ›�'ÿœ�&ÿ¡”%ÿ©š"ÿ´£ÿïêÌÿͽ?ÿù÷îÿù÷îÿƱÿù÷îÿù÷îÿͼ@ÿîéÇÿ´£ÿªš#ÿ¢”%ÿ��&ÿ›�'ÿ™�(ÿ™�(ÿš�(ÿ™�(ÿšŽ)ÿš�*ÿœ’-ÿŸ•1ÿ¡š6ÿ�—5ÿŸ›<ÿc_ÿ14ÿ''ÿ4\ÿ4eÿ2bÿ0YÿCºÿ3}Éÿa­ÿNŒÏÿ-d£ÿ$5ÿ,ÿ)ÿ)ÿ+ÿ(ÿ)ÿ)ÿ(ÿ(ÿ)ÿ(ÿ)ÿ)ÿ(ÿ(ÿ)ÿ(ÿ(ÿ(ÿ(ÿ(ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ+ÿ-ÿ+ÿ+ÿ+ÿ(ÿ(ÿ(ÿ(ÿ*ÿ(ÿ)ÿ)ÿ(ÿ+KÿAy¶ÿG‰ÏÿP’ÖÿA„Êÿ([•ÿ0[ÿ2bÿ4eÿ/Cÿ*+ÿ@A ÿso ÿ�š7ÿœ–2ÿž–2ÿš‘,ÿ˜Ž)ÿ–Œ'ÿ•Š&ÿ•Š%ÿ•Š%ÿ•Š%ÿ•Š%ÿ•Š$ÿ—‹#ÿœ�#ÿ¡”!ÿ©šÿ¾®3ÿøöìÿË»:ÿøöìÿøöìÿ­ÿøöìÿøöìÿÌ»=ÿøöëÿ½­0ÿ«œÿ¡”!ÿ›�#ÿ—‹$ÿ•Š$ÿ•Š%ÿ–Š%ÿ–Š%ÿ•Š&ÿ–Œ'ÿ˜�)ÿš‘,ÿž–2ÿœ–3ÿ�š7ÿrnÿ=> +ÿ)*ÿ/Bÿ4eÿ2bÿ0[ÿ9jžÿ;�Íÿ"d°ÿH„Èÿ@wµÿ)Hÿ,ÿ)ÿ)ÿ+ÿ(ÿ)ÿ)ÿ(ÿ(ÿ)ÿ(ÿ)ÿ)ÿ(ÿ(ÿ)ÿ(ÿ(ÿ(ÿ(ÿ(ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ+ÿ,ÿ,ÿ)ÿ)ÿ(ÿ(ÿ*ÿ(ÿ)ÿ)ÿ(ÿ 0[ÿM†ÃÿD‡ÎÿL�Õÿ9}ÆÿNƒÿ1\ÿ3cÿ4eÿ+-ÿ--ÿKJÿ�~(ÿ™•4ÿš”2ÿ™‘.ÿ•�*ÿ“‰&ÿ’‡$ÿ‘†$ÿ‘†$ÿ‘†$ÿ‘†$ÿ‘†#ÿ’‡#ÿ•ˆ ÿ—Šÿ��ÿª™ÿÕÉrÿ÷õéÿ̼Bÿ÷õéÿ÷õéÿÁ­ÿ÷õéÿ÷õéÿÈ·5ÿ÷õéÿÒÅjÿ©™ÿŸ�ÿ™�ÿ•‰#ÿ’†#ÿ‘†#ÿ‘†$ÿ‘†$ÿ‘†$ÿ’‡$ÿ“‰&ÿ•Œ*ÿ™‘.ÿš”3ÿš–5ÿ�~(ÿIH ÿ+,ÿ+-ÿ4eÿ3cÿ1\ÿ.ZŠÿ?†Ïÿ_«ÿ@|ÁÿN†Äÿ /Zÿ,ÿ)ÿ)ÿ+ÿ(ÿ)ÿ)ÿ(ÿ(ÿ)ÿ(ÿ)ÿ)ÿ(ÿ(ÿ)ÿ(ÿ)ÿ)ÿ(ÿ(ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ+ÿ-ÿ-ÿ-ÿ+ÿ)ÿ(ÿ(ÿ*ÿ(ÿ)ÿ)ÿ(ÿ2fÿTŒÊÿHŠÏÿK�Óÿ.r¾ÿEsÿ1]ÿ3cÿ5eÿ)ÿ.0ÿRPÿ‹ˆ.ÿ—’2ÿ˜‘/ÿ•�+ÿ‘ˆ&ÿŽ…#ÿ�ƒ"ÿ�‚ ÿ�‚ ÿŽ‚ ÿ�ƒ ÿ�ƒÿŒ€ÿŽ�ÿ—‰ÿ¤”ÿ´¢ÿëå¼ÿöóæÿöóæÿöóæÿöóæÿÀ¬ÿöóæÿöóæÿöóæÿöóæÿéâ´ÿ²¡ÿ£“ÿ—‰ÿ‘…ÿ‘„ÿ�„ÿŽƒ ÿŽ‚ ÿ�‚ ÿ�ƒ!ÿŽ…#ÿ‘ˆ&ÿ•�+ÿ˜‘/ÿ—’2ÿ‹ˆ.ÿQO ÿ-/ÿ(ÿ5eÿ3cÿ1]ÿ$KvÿF‹Òÿc°ÿ9x¾ÿV�Ìÿ2fÿ,ÿ)ÿ)ÿ+ÿ(ÿ)ÿ)ÿ(ÿ(ÿ)ÿ(ÿ)ÿ)ÿ(ÿ(ÿ)ÿ(ÿ)ÿ(ÿ(ÿ(ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ+ÿ,ÿ(ÿ(ÿ(ÿ(ÿ*ÿ(ÿ)ÿ)ÿ(ÿ6oÿU�ÐÿK�ÑÿR”×ÿ0vÀÿfÿCˆÐÿb®ÿA~Áÿ\–Óÿ6pÿ,ÿ)ÿ)ÿ+ÿ(ÿ)ÿ)ÿ(ÿ(ÿ)ÿ(ÿ(ÿ(ÿ(ÿ(ÿ)ÿ(ÿ(ÿ(ÿ(ÿ(ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ,ÿ*ÿ*ÿ,ÿ,ÿ,ÿ*ÿ*ÿ,ÿ,ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ(ÿ)ÿ)ÿ(ÿ=yÿ\’Êÿ8aŽÿG{²ÿ5zÄÿ8^ÿ1`ÿ3dÿ4eÿ!ÿ36ÿ[Vÿ–“6ÿ’�/ÿ’Œ+ÿ�…$ÿŠ� ÿŠ€ÿ‹€ÿŽ‚ÿ�„ÿ��ÿ�‚ÿ“…ÿ—‰ÿ¡’ÿ®�ÿñ,ÿëå¿ÿôñàÿôñàÿôñàÿôñàÿôñàÿ¾ªÿôñàÿôñàÿôñàÿôñàÿôñàÿèã¶ÿÀ­#ÿ­œÿ ‘ÿ—‰ÿ‘„ÿ‘„ÿ’†ÿ�„ÿ�‚ÿ�‚ÿŒƒ ÿކ$ÿ“Œ+ÿ’�.ÿ–“6ÿZUÿ25ÿ ÿ4eÿ3dÿ1`ÿ8_ÿB‡Ðÿ+e§ÿ?n¤ÿ`™Øÿ;yÿ,ÿ)ÿ)ÿ+ÿ(ÿ)ÿ)ÿ(ÿ(ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ)ÿ(ÿ)ÿ,ÿ,ÿ,ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ*ÿ(ÿ)ÿ)ÿ(ÿF†ÿ%>Zÿ,Dÿ*@ÿ7o¬ÿ7\ÿ1aÿ3dÿ4fÿÿ47ÿ\Wÿ™–8ÿ�‹.ÿ�‡(ÿ‹‚#ÿ‰~ÿŠ~ÿŽ�ÿ”†ÿ–ˆÿ™Šÿ�Žÿ �ÿ©™ÿõKÿÛЄÿîêÎÿóïÝÿóïÝÿóïÝÿóïÝÿóïÝÿóïÝÿ½ªÿóïÝÿóïÝÿóïÝÿóïÝÿóïÝÿóïÝÿìæÄÿÖËsÿ½®<ÿ¥•ÿŸ�ÿ›Œÿ˜Šÿ—‰ÿ“‡ÿ�ƒÿŒ‚ÿ�„#ÿŽˆ(ÿ�‹-ÿ˜•7ÿ\Wÿ36ÿÿ4fÿ3dÿ1aÿ7\ÿ@y¸ÿ)@ÿ(>ÿ0Mnÿ F‡ÿ,ÿ)ÿ)ÿ+ÿ(ÿ)ÿ)ÿ(ÿ(ÿ)ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ(ÿ(ÿ(ÿ*ÿ,ÿ,ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ*ÿ(ÿ)ÿ)ÿ(ÿHˆÿ8Uÿ <\ÿ6Tÿ7h ÿ8\ÿ1aÿ3dÿ4fÿÿ47ÿ\Wÿ–”6ÿŽŠ.ÿŠ„'ÿ‡€ ÿ‡~ÿ‹�ÿ“‡ÿœŽÿ£”ÿ·¨9ÿÍÂoÿÈ»WÿǸHÿòîÚÿòîÚÿòîÚÿòîÚÿòîÚÿòîÚÿòîÚÿòîÚÿòîÚÿ¼©ÿòîÚÿòîÚÿòîÚÿòîÚÿòîÚÿòîÚÿòîÚÿòîÚÿòîÚÿȹMÿĶNÿȼaÿ±¡+ÿ£“ÿ�Žÿ•ˆÿ�ƒÿ‹‚ ÿ�†&ÿŽŠ-ÿ–”6ÿ\Wÿ36ÿÿ4fÿ3dÿ1aÿ;`ÿ2b–ÿ5Rÿ:Yÿ5PÿI‰ÿ,ÿ)ÿ)ÿ+ÿ(ÿ)ÿ)ÿ(ÿ(ÿ)ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ(ÿ(ÿ(ÿ*ÿ(ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ(ÿ(ÿ(ÿ(ÿ*ÿ(ÿ)ÿ)ÿ(ÿ @|ÿJy«ÿ*Mtÿ7^‰ÿ<}Ãÿ:`ÿ1`ÿ3dÿ4fÿÿ47ÿ[Vÿ“�4ÿ�‰.ÿˆ‚&ÿ†~ ÿˆ}ÿ�„ÿº¯[ÿ×Ï‘ÿëæÅÿñí×ÿñí×ÿéã»ÿ¼©ÿçá¶ÿñí×ÿñí×ÿñí×ÿñí×ÿñí×ÿñí×ÿñí×ÿêä¾ÿ»¨ÿëåÁÿñí×ÿñí×ÿñí×ÿñí×ÿñí×ÿñí×ÿñí×ÿéã»ÿ¼©ÿçá¶ÿñí×ÿñí×ÿçâ¸ÿÓʃÿ¶¬Qÿ’†ÿŒƒÿ‹…%ÿމ-ÿ“�4ÿ[Vÿ36ÿÿ4fÿ3dÿ1`ÿ=cÿ5v¼ÿ%Glÿ#BeÿBl˜ÿ A}ÿ,ÿ)ÿ)ÿ+ÿ(ÿ)ÿ)ÿ(ÿ(ÿ)ÿ(ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ)ÿ(ÿ(ÿ*ÿ(ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ(ÿ(ÿ*ÿ(ÿ)ÿ)ÿ(ÿ8qÿY“ÐÿI‹ÏÿYšÙÿ:|Âÿÿ_Zÿ�Ž4ÿ„‚*ÿ{w!ÿztÿ‚xÿ“†ÿ·§/ÿîèÌÿîèÍÿîèÍÿîèÍÿîèÍÿëåÄÿ»¨ÿÜÒ“ÿîèÍÿÚБÿ® ,ÿ˜‰ÿ‹ÿ�vÿ}rÿ�vÿŒÿšŠÿ´¦7ÿÝÕžÿîèÍÿÜÒ“ÿ»¨ÿëåÄÿîèÍÿîèÍÿîèÍÿîèÍÿîèÍÿ¸©2ÿ—‰ÿ‡~ÿ‚} ÿ†ƒ)ÿ�Ž3ÿ_Zÿ<>ÿÿ3]ÿ5fÿ3dÿ5Yÿ,i«ÿX¢ÿ=z½ÿ[–Ôÿ*`�ÿ$5ÿ,ÿ)ÿ)ÿ+ÿ(ÿ)ÿ)ÿ(ÿ(ÿ)ÿ(ÿ(ÿ(ÿ(ÿ(ÿ)ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ(ÿ(ÿ*ÿ(ÿ)ÿ)ÿ(ÿ%"ÿGˆÿ=x¾ÿ/r½ÿ6{Äÿ"b«ÿ7Wÿ4cÿ6fÿ7gÿÿ35ÿQN ÿ�*ÿ‡….ÿ}y$ÿwrÿ{tÿ‡~ÿž�ÿßÖžÿíçËÿíçËÿíçËÿíçËÿíçËÿÐÃfÿ·¨7ÿ²¥@ÿ“†ÿ‰}ÿtÿumÿngÿleÿofÿwnÿ�vÿŠ~ÿ”ˆÿ·ªIÿ¹¬;ÿÏÂeÿíçËÿíçËÿíçËÿíçËÿíçËÿàÖ ÿ ’ÿŒ‚ÿ‚zÿ�|#ÿˆ…-ÿ�+ÿRN ÿ35ÿÿ7gÿ6fÿ4cÿ7Wÿ+pºÿ`§ÿM‹Ìÿ^˜ÔÿHˆÿ#ÿ,ÿ)ÿ)ÿ+ÿ(ÿ' ÿ)ÿ(ÿ(ÿ)ÿ(ÿ)ÿ)ÿ(ÿ(ÿ)ÿ(ÿ)ÿ)ÿ)ÿ)ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ)ÿ)ÿ)ÿ-ÿ/ÿ,ÿ)ÿ)ÿ)ÿ-ÿ-ÿ)ÿ)ÿ(ÿ(ÿ*ÿ(ÿ)ÿ)ÿ(ÿ+ÿ6oÿC|½ÿ0q¼ÿ7{Æÿ&f°ÿ Ixÿ5`ÿ5fÿ6hÿ&;ÿ$%ÿEE +ÿmgÿŒ‹2ÿ}'ÿwtÿvqÿ€wÿ�„ÿÀ´UÿìçÉÿìçÉÿìçÉÿìçÉÿåÞ³ÿ¸­Lÿ‘…ÿ†{ÿ|rÿskÿleÿf` ÿb\ ÿ`[ ÿb\ ÿfa ÿmf ÿtkÿ|sÿ‡{ÿ’…ÿº®MÿåÞ´ÿìçÉÿìçÉÿìçÉÿìçÉÿÁµVÿ“‡ÿ…}ÿzÿƒ€&ÿŒ‹1ÿmgÿEF +ÿ$&ÿ&:ÿ6hÿ5fÿ5`ÿ)Q~ÿc¯ÿ(e«ÿPŒËÿVŽÊÿ5nÿ)ÿ,ÿ)ÿ)ÿ+ÿ(ÿ/ÿ' ÿ'ÿ(ÿ)ÿ(ÿ)ÿ)ÿ(ÿ(ÿ)ÿ(ÿ)ÿ)ÿ)ÿ)ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ,ÿ)ÿ,ÿ/ÿ/ÿ,ÿ(ÿ(ÿ(ÿ/ÿ/ÿ-ÿ(ÿ(ÿ(ÿ*ÿ(ÿ)ÿ)ÿ(ÿ+ÿ.Sÿ:p®ÿ7w¿ÿE…Îÿ>z¼ÿ(^šÿ:_ÿ6fÿ7hÿ5aÿÿ;>ÿ]Vÿˆ†/ÿƒ‚-ÿxv#ÿtoÿyqÿƒyÿ—Šÿçà»ÿìæÇÿçà¸ÿŹbÿ›�ÿ‰|ÿzqÿqiÿhaÿb\ ÿ_Y ÿ[W ÿYT ÿXT ÿYU ÿ\W ÿ_Y ÿc] ÿicÿqiÿ{qÿ‰|ÿœŽÿÆ»dÿçà¹ÿìæÇÿçà»ÿ™Œÿ‡~ÿxÿ~z"ÿ„ƒ,ÿˆ†/ÿ]Vÿ;>ÿÿ5aÿ7hÿ6fÿ:_ÿ;q­ÿ(g¯ÿ>|½ÿY”ÒÿCx²ÿ+Pÿ)ÿ,ÿ)ÿ)ÿ+ÿ(ÿ-ÿ/ÿ' ÿ'ÿ)ÿ(ÿ)ÿ)ÿ(ÿ(ÿ)ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ,ÿ-ÿ/ÿ/ÿ,ÿ*ÿ*ÿ-ÿ-ÿ/ÿ-ÿ,ÿ*ÿ*ÿ*ÿ*ÿ(ÿ)ÿ)ÿ(ÿ+ÿ!%3ÿ!W•ÿEÂÿ"€ÿCq¥ÿ1Lÿ7Uÿ/Hÿ+[�ÿ8aÿ7hÿ8jÿ1Yÿÿ=?ÿUPÿƒ�-ÿƒ‚,ÿxu#ÿqoÿpkÿrlÿvoÿyoÿvnÿqi ÿic ÿa[ ÿZV ÿVR +ÿSO +ÿQN +ÿQN ÿQN ÿQN ÿQN ÿQN ÿQN ÿQN ÿQN +ÿSO +ÿVR +ÿZV ÿa[ ÿjd ÿrjÿxpÿ{rÿzsÿxqÿxsÿ|y"ÿ…ƒ+ÿƒ�,ÿUPÿ=?ÿÿ1Yÿ8jÿ7hÿ9bÿ6a‘ÿ/Hÿ6Sÿ/IÿP�´ÿ?€ÿ'ÿ)ÿ,ÿ)ÿ)ÿ+ÿ(ÿ,ÿ,ÿ,ÿ.ÿ' ÿ'ÿ)ÿ)ÿ(ÿ(ÿ)ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ,ÿ,ÿ/ÿ-ÿ-ÿ,ÿ2!ÿ2!ÿ/ÿ-ÿ(ÿ(ÿ(ÿ(ÿ(ÿ*ÿ(ÿ/ÿ2!ÿ0ÿ+ÿ.ÿ,Lÿ@r«ÿ$Bdÿ#Bdÿ+Mrÿ-k¯ÿ;]ÿ7gÿ8jÿ9lÿ!2ÿ$%ÿIH ÿd^ÿЉ2ÿ})ÿus ÿmjÿifÿibÿfaÿc^ ÿ^Z ÿ[V +ÿUQ +ÿQM ÿPL ÿNK ÿNK +ÿNK +ÿNK +ÿNK +ÿNK +ÿNK +ÿNK +ÿNK +ÿNK +ÿNK ÿPL ÿQM ÿUR +ÿ[V ÿ`[ ÿf`ÿjdÿnhÿqnÿwu ÿ€(ÿ‹‰1ÿd^ÿIH ÿ$%ÿ!2ÿ9lÿ8jÿ7gÿ;]ÿ8t¶ÿ#Acÿ#Bdÿ%BdÿCu­ÿ/Nÿ(ÿ)ÿ,ÿ)ÿ)ÿ+ÿ(ÿ+ÿ+ÿ+ÿ,ÿ.ÿ' ÿ(ÿ)ÿ(ÿ(ÿ)ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ,ÿ-ÿ/ÿ/ÿ/ÿ0ÿ2!ÿ2!ÿ/ÿ-ÿ)ÿ)ÿ)ÿ(ÿ(ÿ*ÿ,ÿ2!ÿ/ÿ,ÿ+ÿ.ÿ"ÿJŠÿL„ÁÿK�¶ÿX”Ðÿ=|ÀÿM�ÿ9bÿ9jÿ:kÿ8gÿ ÿ78ÿPMÿojÿ‡‡0ÿ|z(ÿpo ÿifÿb_ÿ]ZÿWUÿTQ ÿPM +ÿNK +ÿKI ÿKI +ÿKI +ÿKI +ÿKI +ÿKI +ÿKI +ÿKI +ÿKI +ÿKI +ÿKI +ÿKI +ÿKI +ÿKI +ÿLJ +ÿOL +ÿRO ÿVT ÿ\Yÿc_ÿigÿrpÿ|z'ÿˆ‡0ÿojÿPMÿ78ÿ ÿ8fÿ:kÿ9jÿ9bÿ$SˆÿVžÿ@x·ÿJ{®ÿ]’ÉÿL‹ÿ&#%ÿ(ÿ)ÿ,ÿ)ÿ)ÿ+ÿ(ÿ*ÿ*ÿ*ÿ+ÿ+ÿ.ÿ' ÿ(ÿ(ÿ(ÿ)ÿ(ÿ)ÿ)ÿ)ÿ)ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ/ÿ/ÿ0ÿ2!ÿ2!ÿ0ÿ2!ÿ2!ÿ/ÿ,ÿ)ÿ)ÿ)ÿ,ÿ/ÿ2!ÿ/ÿ/ÿ,ÿ(ÿ+ÿ.ÿ(ÿ-QÿA ÿQOÿwu&ÿ……/ÿxx'ÿnmÿdbÿ\ZÿWUÿQO ÿNL ÿLJ ÿKI +ÿJH +ÿIG ÿIG ÿIG ÿIG ÿIG ÿIG ÿIG ÿIG ÿIG ÿIG ÿJH +ÿKI +ÿLJ ÿNL ÿQO ÿVTÿ\[ÿdbÿnlÿyx&ÿ……/ÿwu%ÿQOÿ>A ÿÿ'Bÿ:mÿ9lÿ8iÿ<_ÿVšÿ(e¨ÿO‹Ëÿ]–ÑÿDx±ÿ/Tÿ+ÿ(ÿ)ÿ,ÿ)ÿ)ÿ+ÿ(ÿ*ÿ0ÿ*ÿ*ÿ+ÿ+ÿ.ÿ' ÿ'ÿ(ÿ)ÿ(ÿ)ÿ)ÿ)ÿ)ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ/ÿ/ÿ2!ÿ2!ÿ2!ÿ0ÿ/ÿ/ÿ,ÿ(ÿ(ÿ(ÿ-ÿ0ÿ2!ÿ2!ÿ2!ÿ/ÿ)ÿ(ÿ+ÿ.ÿ-ÿ$",ÿG‡ÿG‚ÀÿMŒËÿM�ÌÿJˆÈÿ%UŠÿ|¾ÿNŽÍÿR�ÌÿG‡Æÿ$R„ÿ"?lÿ {½ÿO‹ÊÿY’Ìÿ;o¨ÿ-Qÿ*ÿ+ÿ(ÿ)ÿ,ÿ)ÿ)ÿ+ÿ(ÿ)ÿ/ÿ)ÿ/ÿ)ÿ)ÿ*ÿ*ÿ-ÿ' ÿ(ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ2!ÿ2!ÿ0ÿ0ÿ0ÿ0ÿ/ÿ/ÿ/ÿ/ÿ0ÿ2!ÿ2!ÿ0ÿ0ÿ/ÿ(ÿ)ÿ-ÿ0ÿ0ÿ/ÿ-ÿ,ÿ&$ÿ>ÿD{ºÿ@}¾ÿT“ÏÿUŽÈÿ5_‹ÿ.Msÿ'Ctÿ!{¼ÿFƒÆÿMˆÈÿUŒÅÿ>ÿ$"$ÿ*ÿ+ÿ(ÿ)ÿ,ÿ)ÿ)ÿ+ÿ(ÿ' ÿ)ÿ' ÿ)ÿ)ÿ)ÿ)ÿ)ÿ*ÿ-ÿ' ÿ'ÿ(ÿ(ÿ(ÿ(ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ/ÿ0ÿ2!ÿ0ÿ2!ÿ2!ÿ2!ÿ/ÿ0ÿ0ÿ-ÿ-ÿ0ÿ0ÿ/ÿ/ÿ,ÿ/ÿ,ÿ(Dÿ$Y”ÿB~¾ÿD‚Æÿ":Vÿ*Aÿ+Aÿ-Ouÿ$?oÿ\ÿU„ÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿU„ÿ>\ÿ%Hqÿ&Iqÿ7Tÿ:Zÿ ;XÿM‰Éÿ\ÿU„ÿYŠÿMyÿ 3Rÿ9[ÿ9[ÿ:\ÿ;]ÿ;^ÿ9\}ÿv˜»ÿŸÄëÿCe„ÿgˆªÿ‹¯ÔÿCb�ÿCc�ÿCc�ÿCc�ÿCc‚ÿŸÄëÿCe„ÿ 7Vÿgˆªÿgˆ©ÿgˆªÿgˆ©ÿv˜ºÿŸÄëÿv˜ºÿgˆ©ÿgˆ©ÿgˆ©ÿgˆªÿ7Xÿ9Zÿ9[ÿ9[ÿ9[ÿ9[ÿ 2QÿLxÿYŠÿU„ÿ>\ÿ0Hÿ/Fÿ/Fÿ/Fÿ/Fÿ/Fÿ/Fÿ/Fÿ/Fÿ/Fÿ8TÿDgÿDgÿGkÿ!Nrÿ$6ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ/ÿ/ÿ,ÿ/ÿ-ÿ/ÿ0ÿ0ÿ0ÿ2!ÿ2!ÿ2!ÿ0ÿ0ÿ0ÿ 1ÿ!KoÿFjÿBeÿBeÿ7SÿHhÿ/r©ÿ.o©ÿ.o©ÿ.o©ÿ-m©ÿ.p©ÿ.p©ÿ-l©ÿ Q}ÿKrÿYŠÿU„ÿ2Rÿ9[ÿ<^ÿ;^ÿ;]ÿ;]ÿ;^ÿ�¥Éÿ›Àæÿ›Àæÿ›ÀæÿAc‚ÿTu”ÿs•·ÿs•¸ÿ+Nmÿ޳×ÿ]}žÿd…¦ÿ,PoÿBd…ÿd†§ÿd†¦ÿd†§ÿd†§ÿs•·ÿ›Àæÿs•·ÿd†§ÿd†§ÿd†¦ÿd†¨ÿ,Rtÿ=aÿ=aÿ=aÿ=aÿ>aÿ;\ÿ4TÿT…ÿYŠÿKsÿ"Z~ÿ4�©ÿ5~©ÿ5~©ÿ5z©ÿ2w©ÿ1y©ÿ3~©ÿ3}©ÿ2z©ÿMhÿ7SÿBeÿBeÿFjÿ!Koÿ)ÿ)ÿ(ÿ(ÿ(ÿ(ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ(ÿ(ÿ*ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ-ÿ-ÿ,ÿ-ÿ/ÿ0ÿ0ÿ0ÿ0ÿ0ÿ2!ÿ2!ÿ0ÿ/ÿ-ÿ HjÿFiÿAdÿAcÿ9Vÿ8Sÿ-m¤ÿ.r©ÿ-o©ÿ-l©ÿ-l©ÿ-m©ÿ.p©ÿ.o©ÿ&_’ÿAaÿX‰ÿX‰ÿ9\ÿ 6Wÿ;^ÿ<_ÿ;^ÿ;]ÿ:\ÿ9Zÿ6Xwÿp‘³ÿ—»áÿ?_}ÿ*Kjÿ~ Ãÿ‘´ÚÿRs’ÿ@a€ÿZ{›ÿ—»áÿw™¼ÿBcÿbƒ¤ÿ—»áÿ~ Ãÿ~ Ãÿ„§Ëÿ—»áÿ—»áÿ~ Ãÿ~ Ãÿ~ Ãÿ„§Ëÿ—»áÿ@a‚ÿ9Yÿ9Zÿ9[ÿ:\ÿ9[ÿ9[ÿ 5Uÿ8YÿXˆÿX‰ÿAaÿ"T�ÿ(_•ÿ)a—ÿ)a—ÿ)c›ÿ*g�ÿ+gŸÿ+h¢ÿ+i¤ÿ)b™ÿ7Tÿ9VÿAcÿAdÿFiÿ)ÿ)ÿ(ÿ(ÿ*ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ*ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ0ÿ,ÿ-ÿ-ÿ0ÿ0ÿ2!ÿ2!ÿ2!ÿ0ÿ0ÿ0ÿ/ÿ0ÿ/ÿ Fiÿ@bÿ?aÿ;[ÿ.Gÿ#S}ÿ&ZŠÿ%U„ÿ$Uƒÿ%V†ÿ%Vƒÿ%X†ÿ%X†ÿ$U€ÿDeÿQ|ÿYŠÿ@fÿ 1Oÿ8Yÿ8Yÿ8Xÿ8Yÿ8Yÿ7Xÿ6Vÿ 3Qÿ_~�ÿ“·Üÿ 1Pÿ?^ÿ{œ¿ÿ4Soÿ_Ÿÿ“·Üÿ 1Oÿ>]zÿf‡§ÿ 4Rÿ_Ÿÿ“·Üÿ)Gdÿ_~žÿ�±ÕÿmŽ®ÿ)Gcÿ4Soÿ{œ¿ÿXw–ÿ>]zÿ“·Üÿ>^}ÿ6Wÿ7Wÿ7Wÿ7Yÿ7Xÿ8Yÿ7Xÿ 1Oÿ?fÿYŠÿQ|ÿCfÿ#S€ÿ#Sÿ$U„ÿ&YŠÿ&ZŠÿ%V†ÿ&X‰ÿ&X‰ÿ%V„ÿ!Nzÿ.Gÿ;[ÿ?aÿ@bÿ)ÿ)ÿ(ÿ(ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ0ÿ,ÿ-ÿ/ÿ/ÿ0ÿ0ÿ2!ÿ2!ÿ2!ÿ0ÿ0ÿ0ÿ0ÿ0ÿ?aÿ>`ÿ>`ÿ3Nÿ'`�ÿ1w©ÿ1w©ÿ0r©ÿ0r©ÿ1t©ÿ/r©ÿ.p©ÿ0u©ÿ1w©ÿNrÿQ|ÿYŠÿClÿ7Wÿ=aÿ=aÿ=aÿ<`ÿ<_ÿ<_ÿ<`ÿ4Wyÿx›¾ÿ�´Ùÿ„¨Ìÿd†¨ÿx›¾ÿx›¾ÿ„¨Ìÿ�´Ùÿx›¾ÿx›¾ÿx›¾ÿNp‘ÿ7Xÿ 5Uÿx›¾ÿ�´Ùÿ�´Ùÿ�´Ùÿ�´Ùÿ�´Ùÿr”¶ÿ3Vvÿ 7Wÿ 7Vÿ9[ÿ=`ÿ>bÿ>bÿ=aÿ=aÿ>aÿ=aÿ7WÿDmÿYŠÿQ|ÿPrÿ3z©ÿ3y©ÿ3z©ÿ4}©ÿ4}©ÿ3y©ÿ3y©ÿ3z©ÿ5�©ÿ2y©ÿ'`‚ÿ3Nÿ>`ÿ>`ÿ)ÿ)ÿ(ÿ(ÿ*ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ*ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ,ÿ/ÿ,ÿ,ÿ-ÿ/ÿ0ÿ2!ÿ0ÿ2!ÿ2!ÿ/ÿ/ÿ/ÿ/ÿ?aÿ=_ÿ=_ÿ4Pÿ#Suÿ3z©ÿ1w©ÿ1u©ÿ1u©ÿ/t©ÿ0u©ÿ0u©ÿ1w©ÿ0t©ÿ'`’ÿAaÿX‰ÿX‰ÿ9[ÿ7Yÿ<`ÿ<_ÿ<_ÿ<_ÿ<^ÿ:]ÿv˜»ÿ�±Õÿ�±Õÿbƒ£ÿMn�ÿ[|�ÿbƒ¤ÿ�±Õÿ�±Õÿ|žÁÿ[|œÿ[|œÿ<_~ÿ9Zÿ8YÿA`ÿMl‹ÿ|žÀÿ‚¥Çÿ[|›ÿ?\ÿ[|œÿ‡«Ïÿ3Wwÿ:[ÿ;]ÿ<_ÿ<_ÿ<^ÿ<^ÿ<_ÿ<_ÿ7Yÿ8]ÿX‰ÿX‰ÿAaÿ)e’ÿ1w©ÿ1w©ÿ/r©ÿ/t©ÿ1u©ÿ/r©ÿ.o©ÿ/r©ÿ/t©ÿ/r©ÿ"Ruÿ4Pÿ=_ÿ=_ÿ)ÿ)ÿ(ÿ(ÿ*ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ*ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ,ÿ0ÿ/ÿ0ÿ/ÿ/ÿ-ÿ/ÿ0ÿ0ÿ0ÿ0ÿ-ÿ,ÿ,ÿ!Fkÿ=`ÿ;^ÿ9[ÿ1NÿGuÿ*b›ÿ+d�ÿ,h¤ÿ-k§ÿ+gŸÿ)_‘ÿ)]‘ÿ)c™ÿ)b—ÿMsÿKsÿYŠÿSƒÿ 1Oÿ7Wÿ8Zÿ8Zÿ8Yÿ8Yÿ7Xÿ2Rpÿa€Ÿÿ‹®Òÿ 1Mÿ 3Rÿ=[ÿz›½ÿ‹®Òÿ‹®Òÿ‹®Òÿ1Qnÿ 2Oÿ 4Rÿ7VÿSt”ÿ‹®Òÿ‹®Òÿ‹®Òÿt•¶ÿt•¶ÿt•·ÿz›¾ÿ‹®Òÿ‹®ÒÿLlŒÿ8Yÿ8Yÿ8Yÿ8Yÿ8Xÿ7Wÿ6Vÿ 0NÿSƒÿYŠÿKsÿLsÿ)]‘ÿ)_“ÿ)_“ÿ)`•ÿ)`“ÿ)`“ÿ(_‘ÿ(]‘ÿ)_‘ÿ)a—ÿHuÿ1Nÿ9[ÿ;^ÿ=`ÿ)ÿ)ÿ(ÿ(ÿ*ÿ(ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ(ÿ(ÿ(ÿ*ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ/ÿ0ÿ0ÿ0ÿ0ÿ/ÿ-ÿ-ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ-ÿ:Uÿ"Ejÿ<_ÿ:]ÿ9Zÿ1Mÿ"Ptÿ/p©ÿ.m©ÿ-l©ÿ.m©ÿ.o©ÿ/p©ÿ/p©ÿ,i¤ÿ(`•ÿ>\ÿU„ÿYŠÿN{ÿ3Sÿ;^ÿ;^ÿ;]ÿ;^ÿ:]ÿ7XÿXx˜ÿˆ«Ïÿ6Vÿ'Kmÿw™¼ÿ}ŸÂÿ^~žÿˆ«ÏÿXw—ÿƒ¥ÉÿRs”ÿ:[ÿ:\ÿ1TtÿXx™ÿkŒ­ÿQq�ÿ:Zwÿˆ«Ïÿe†§ÿBa€ÿXw—ÿQq�ÿRs“ÿ:]ÿ<^ÿ<^ÿ<_ÿ<_ÿ;^ÿ3TÿLyÿYŠÿU„ÿ>\ÿ,j¢ÿ.o©ÿ/p©ÿ/p©ÿ.m©ÿ.o©ÿ-l©ÿ+h¢ÿ-l©ÿ/p©ÿ!Ntÿ1Mÿ9Zÿ:]ÿ<_ÿ"Ejÿ)ÿ)ÿ(ÿ(ÿ*ÿ(ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ(ÿ(ÿ*ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ-ÿ0ÿ,ÿ,ÿ,ÿ,ÿ-ÿ-ÿ/ÿ-ÿ/ÿ/ÿ/ÿ-ÿ,ÿ!ÿ9Uÿ"Diÿ;^ÿ9\ÿ8Zÿ0Lÿ)Aÿ)Aÿ)Aÿ)Aÿ)Aÿ)Aÿ)Aÿ)Aÿ)Aÿ2MÿEiÿYŠÿYŠÿCkÿ6Vÿ=aÿ=aÿ=aÿ=aÿ;^ÿWx˜ÿ†©Íÿ1Ttÿ†©Íÿv˜ºÿ>\ÿWw–ÿ†©Íÿ 3RÿWx˜ÿ†©ÍÿWy›ÿ<_ÿIk‹ÿ{�Àÿ†©ÍÿWw˜ÿ 5Uÿ†©ÍÿWw—ÿPq�ÿ†©Íÿv—ºÿIj‹ÿ;]ÿ<`ÿ<`ÿ<`ÿ<_ÿ5VÿBjÿYŠÿYŠÿEiÿ2Mÿ)Aÿ)Aÿ)Aÿ)Aÿ)Aÿ)Aÿ)Aÿ)Aÿ)Aÿ)Aÿ0Lÿ8Zÿ9\ÿ;^ÿ"Diÿ9Uÿ)ÿ)ÿ(ÿ(ÿ*ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ*ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ,ÿ,ÿ/ÿ/ÿ/ÿ/ÿ/ÿ,ÿ,ÿ,ÿ-ÿ-ÿ/ÿ,ÿ,ÿ'ÿÿ9Tÿ"Diÿ;]ÿ9[ÿ9[ÿ9[ÿ9[ÿ9[ÿ9[ÿ9[ÿ9[ÿ9[ÿ9[ÿ9[ÿ9[ÿ<[ÿQ|ÿYŠÿXˆÿ 7Wÿ 2Qÿ8Yÿ9Zÿ9Yÿb„¥ÿ„§Ëÿy›¾ÿ 3RÿHh‡ÿ 3Qÿ 4SÿUu•ÿ„§Ëÿ 4Rÿ 3Rÿ8Xvÿ?_ÿHiŠÿ„§Ëÿbƒ£ÿ%Fbÿt–¸ÿy›¾ÿ„§ËÿOo�ÿ 3Pÿ%Fcÿb‚£ÿ„§Ëÿ@a€ÿ8Yÿ7Wÿ7Wÿ 4Sÿ 5WÿXˆÿYŠÿQ|ÿ<[ÿ9[ÿ9[ÿ9[ÿ9[ÿ9[ÿ9[ÿ9[ÿ9[ÿ9[ÿ9[ÿ9[ÿ9[ÿ9[ÿ;]ÿ"Diÿ9Tÿÿ)ÿ)ÿ(ÿ(ÿ*ÿ*ÿ*ÿ*ÿ*ÿ(ÿ(ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ,ÿ,ÿ,ÿ-ÿ-ÿ/ÿ/ÿ-ÿ-ÿ,ÿ-ÿ-ÿ-ÿ,ÿ,ÿ,ÿ(ÿ!ÿ9Tÿ"Chÿ:\ÿ8Zÿ8Zÿ8Zÿ8Zÿ8Zÿ8Zÿ8Zÿ8Zÿ8Zÿ8Zÿ8Zÿ9ZÿAaÿX‰ÿYŠÿR�ÿ ,Iÿ 3Rÿ 6Vÿ6Uÿ8Xuÿ7Vrÿ$Daÿ 1Oÿ 4Rÿ 4Tÿ5Tÿ%Fcÿ7Vsÿ 4Sÿ5Vÿ 5Uÿ 4Uÿ 4Rÿ%Fcÿ 1Nÿ 3PÿGf„ÿTs“ÿGf„ÿ 3Rÿ 5Uÿ 4Sÿ 2Pÿ%Fdÿ 4Tÿ7Wÿ7Xÿ5Tÿ /LÿSƒÿYŠÿX‰ÿAaÿ9Zÿ8Zÿ8Zÿ8Zÿ8Zÿ8Zÿ8Zÿ8Zÿ8Zÿ8Zÿ8Zÿ8Zÿ8Zÿ:\ÿ"Chÿ9Tÿ ÿ$ÿ)ÿ)ÿ(ÿ(ÿ*ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ,ÿ,ÿ,ÿ,ÿ,ÿ-ÿ-ÿ-ÿ,ÿ,ÿ,ÿ,ÿ-ÿ-ÿ,ÿ,ÿ-ÿ)ÿ!ÿ9Tÿ'Jqÿ%Glÿ%Glÿ%Glÿ%Glÿ%Glÿ%Glÿ%Glÿ%Glÿ%Glÿ%Glÿ%Glÿ%GlÿAcÿKrÿYŠÿYŠÿKwÿ ,Iÿ ,Iÿ +Iÿ +*Eÿ +)Dÿ +)Dÿ +Hÿ ,Iÿ ,Jÿ ,Iÿ +Gÿ *Eÿ +Gÿ ,Hÿ ,Hÿ +Hÿ +Gÿ +*Fÿ )Eÿ )Eÿ +(Cÿ +(Bÿ )Dÿ *Fÿ ,Hÿ +Iÿ *Fÿ +*Eÿ +Gÿ ,Jÿ ,Iÿ ,IÿJuÿYŠÿYŠÿKsÿAcÿ%Glÿ%Glÿ%Glÿ%Glÿ%Glÿ%Glÿ%Glÿ%Glÿ%Glÿ%Glÿ%Glÿ%Glÿ%Glÿ'Jqÿ9Tÿ ÿ'ÿ(ÿ)ÿ)ÿ(ÿ(ÿ*ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ-ÿ-ÿ-ÿ,ÿ,ÿ,ÿ(ÿÿ +)ÿ +)ÿ +)ÿ +)ÿ +)ÿ +)ÿ +)ÿ +)ÿ +)ÿ +)ÿ +)ÿ +)ÿ +)ÿ -ÿ>\ÿU„ÿYŠÿYŠÿYŠÿYŠÿY‰ÿXˆÿXˆÿX‰ÿYŠÿYŠÿYŠÿYŠÿX‰ÿX‰ÿY‰ÿYŠÿYŠÿYŠÿYŠÿY‰ÿYŠÿY‰ÿXˆÿW‡ÿXˆÿY‰ÿYŠÿYŠÿYŠÿY‰ÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿU„ÿ>\ÿ .ÿ +)ÿ +)ÿ +)ÿ +)ÿ +)ÿ +)ÿ +)ÿ +)ÿ +)ÿ +)ÿ +)ÿ +)ÿ +)ÿ +)ÿÿ%ÿ+ÿ(ÿ)ÿ)ÿ(ÿ(ÿ*ÿ(ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ+ÿ.ÿ(ÿ)ÿ,ÿ(ÿ)ÿ+ÿ)ÿ(ÿ*ÿ*ÿ(ÿ(ÿ ,5ÿEiÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿYŠÿEiÿ+5ÿ(ÿ(ÿ+ÿ*ÿ(ÿ*ÿ*ÿ*ÿ(ÿ(ÿ+ÿ+ÿ(ÿ(ÿ,ÿ)ÿ)ÿ.ÿ(ÿ)ÿ)ÿ(ÿ(ÿ*ÿ(ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ(ÿ*ÿ(ÿ)ÿ)ÿ(ÿ+ÿ.ÿ(ÿ)ÿ,ÿ(ÿ)ÿ)ÿ,ÿ)ÿ(ÿ*ÿ(ÿ(ÿ*ÿ/>ÿ=[ÿ=[ÿ=[ÿ=[ÿ=[ÿ=[ÿ=[ÿ=[ÿ=[ÿ=[ÿ=[ÿ=[ÿ=[ÿ=[ÿ=[ÿ=[ÿ=[ÿ=[ÿ=[ÿ=[ÿ=[ÿ=[ÿ=[ÿ=[ÿ=[ÿ=[ÿ=[ÿ=[ÿ=[ÿ=[ÿ=[ÿ=[ÿ=[ÿ=[ÿ=[ÿ=[ÿ.=ÿ(ÿ(ÿ*ÿ+ÿ(ÿ(ÿ*ÿ*ÿ*ÿ(ÿ)ÿ)ÿ)ÿ(ÿ)ÿ,ÿ)ÿ)ÿ.ÿ(ÿ)ÿ)ÿ(ÿ(ÿ*ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ,ÿ,ÿ*ÿ*ÿ*ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ(ÿ)ÿ)ÿ(ÿ+ÿ.ÿ(ÿ)ÿ,ÿ(ÿ)ÿ)ÿ,ÿ)ÿ(ÿ(ÿ*ÿ(ÿ(ÿ*ÿ+ÿ+ÿ*ÿ*ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ*ÿ+ÿ+ÿ+ÿ*ÿ*ÿ(ÿ*ÿ*ÿ*ÿ+ÿ(ÿ)ÿ)ÿ)ÿ(ÿ)ÿ,ÿ)ÿ)ÿ.ÿ(ÿ)ÿ)ÿ(ÿ(ÿ(ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ-ÿ*ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ(ÿ(ÿ(ÿ(ÿ,ÿ,ÿ,ÿ,ÿ)ÿ)ÿ(ÿ+ÿ.ÿ(ÿ)ÿ,ÿ(ÿ(ÿ)ÿ+ÿ)ÿ(ÿ+ÿ(ÿ(ÿ(ÿ(ÿ*ÿ*ÿ*ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ*ÿ*ÿ*ÿ*ÿ(ÿ(ÿ*ÿ*ÿ*ÿ+ÿ(ÿ)ÿ)ÿ(ÿ(ÿ)ÿ,ÿ)ÿ)ÿ.ÿ(ÿ)ÿ)ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ(ÿ*ÿ*ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ(ÿ,ÿ,ÿ,ÿ(ÿ(ÿ)ÿ)ÿ)ÿ(ÿ+ÿ.ÿ(ÿ)ÿ,ÿ(ÿ(ÿ)ÿ)ÿ)ÿ(ÿ*ÿ+ÿ*ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ*ÿ*ÿ*ÿ*ÿ*ÿ(ÿ)ÿ)ÿ(ÿ(ÿ)ÿ,ÿ)ÿ)ÿ+ÿ(ÿ)ÿ)ÿ)ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ(ÿ(ÿ*ÿ*ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ-ÿ-ÿ-ÿ)ÿ)ÿ)ÿ(ÿ(ÿ+ÿ.ÿ(ÿ)ÿ,ÿ(ÿ)ÿ(ÿ)ÿ+ÿ)ÿ(ÿ(ÿ(ÿ*ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ(ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ*ÿ*ÿ*ÿ(ÿ(ÿ(ÿ(ÿ)ÿ(ÿ(ÿ)ÿ(ÿ)ÿ,ÿ)ÿ)ÿ+ÿ(ÿ(ÿ)ÿ)ÿ)ÿ)ÿ)ÿ(ÿ(ÿ)ÿ)ÿ(ÿ(ÿ(ÿ(ÿ(ÿ)ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ(ÿ(ÿ(ÿ(ÿ(ÿ*ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ-ÿ-ÿ,ÿ)ÿ(ÿ(ÿ+ÿ.ÿ.ÿ(ÿ)ÿ,ÿ(ÿ(ÿ)ÿ+ÿ)ÿ+ÿ)ÿ)ÿ)ÿ)ÿ(ÿ*ÿ*ÿ*ÿ*ÿ*ÿ(ÿ*ÿ*ÿ*ÿ*ÿ*ÿ(ÿ*ÿ(ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ(ÿ(ÿ)ÿ)ÿ(ÿ)ÿ(ÿ)ÿ+ÿ(ÿ(ÿ)ÿ,ÿ)ÿ)ÿ+ÿ.ÿ(ÿ(ÿ)ÿ)ÿ)ÿ)ÿ)ÿ+ÿ)ÿ)ÿ)ÿ(ÿ(ÿ)ÿ)ÿ(ÿ(ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ*ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ(ÿ(ÿ(ÿ+ÿ.ÿ)ÿ+ÿ(ÿ)ÿ,ÿ(ÿ)ÿ(ÿ(ÿ+ÿ(ÿ)ÿ+ÿ+ÿ,ÿ)ÿ(ÿ*ÿ*ÿ*ÿ*ÿ(ÿ*ÿ*ÿ*ÿ*ÿ+ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ(ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ(ÿ(ÿ+ÿ+ÿ+ÿ)ÿ(ÿ)ÿ(ÿ(ÿ+ÿ(ÿ)ÿ,ÿ)ÿ(ÿ)ÿ+ÿ.ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ,ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ,ÿ+ÿ+ÿ+ÿ*ÿ+ÿ+ÿ)ÿ+ÿ.ÿ(ÿ(ÿ,ÿ(ÿ)ÿ(ÿ(ÿ)ÿ(ÿ)ÿ)ÿ)ÿ)ÿ,ÿ)ÿ(ÿ*ÿ*ÿ(ÿ(ÿ(ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ.!ÿ+ÿ*ÿ*ÿ*ÿ*ÿ(ÿ(ÿ*ÿ(ÿ(ÿ)ÿ)ÿ)ÿ)ÿ)ÿ(ÿ)ÿ(ÿ(ÿ)ÿ(ÿ)ÿ,ÿ)ÿ)ÿ+ÿ)ÿ+ÿ+ÿ+ÿ+ÿ+ÿ.ÿ.ÿ.ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ)ÿ)ÿ(ÿ)ÿ+ÿ(ÿ(ÿ,ÿ(ÿ(ÿ)ÿ)ÿ(ÿ)ÿ(ÿ(ÿ)ÿ)ÿ+ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ)ÿ)ÿ)ÿ(ÿ(ÿ)ÿ(ÿ)ÿ)ÿ(ÿ(ÿ)ÿ)ÿ)ÿ(ÿ)ÿ(ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ)ÿ)ÿ)ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ)ÿ)ÿ)ÿ)ÿ)ÿ(ÿ(ÿ)ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ+ÿ+ÿ+ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ(ÿ*ÿ*ÿ(ÿ+ÿ+ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ.ÿ.ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ.ÿ.ÿ.ÿ.ÿ.ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ)ÿ)ÿ(ÿ(ÿ' ÿ' ÿ(ÿ(ÿ(ÿ'ÿ(ÿ'ÿ(ÿ) ÿ)!ÿ)$#ÿ)&'ÿ**-ÿ+,1ÿ*/7ÿ*2;ÿ+7Cÿ+l�ÿAtŒÿD{•ÿE‚�ÿGˆ¦ÿIŽ®ÿK”µÿM™¼ÿOžÂÿR£ÇÿS§ËÿT¬ÐÿW°ÔÿX³ØÿY¸Üÿ\ºßÿ^½ãÿ`ÁæÿaÄéÿbÇíÿcÉîÿdÌñÿfÏôÿgÑöÿhÓøÿiÕùÿjÖúÿkØüÿlÙýÿlÚþÿmÚþÿmÛÿÿmÛÿÿmÛÿÿmÛÿÿmÚþÿlÚþÿlÙýÿkØüÿjÖûÿjÕúÿiÓøÿhÒ÷ÿgÐõÿfÎôÿdÌòÿcÊðÿbÇîÿ`Åëÿ_Âéÿ]Àçÿ\½äÿY¹áÿWµÝÿV±ÙÿT­ÕÿS©ÏÿQ£ÈÿOŸÃÿL˜»ÿJ’´ÿI‹«ÿE†¢ÿD™ÿCv�ÿAn…ÿ>g|ÿ<`qÿ:Xgÿ8S_ÿ6LVÿ4ELÿ2?Eÿ08;ÿ/35ÿ.--ÿ-('ÿ,%"ÿ* ÿ*ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ*ÿ+ÿ+ÿ,!ÿ,# ÿ,$"ÿ,(&ÿ,))ÿ--/ÿ-/3ÿ,29ÿ.6>ÿ.:Eÿ->Kÿ-ARÿ.FZÿ.J`ÿ.Mfÿ.Qlÿ.Utÿ.Wxÿ/Yzÿ/[ÿ/]‚ÿ.^ƒÿ._†ÿ.a‡ÿ/b‰ÿ/b‹ÿ/cŒÿ/eŽÿ/f�ÿ/g’ÿ/h“ÿ/h”ÿ0i•ÿ/j–ÿ/j–ÿ/j˜ÿ.k™ÿ/kšÿ/l›ÿ/m�ÿ/nžÿ/nŸÿ/oŸÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ/nžÿ/l›ÿ/j–ÿ/h”ÿ/dŽÿ.`‡ÿ/]‚ÿ/Yzÿ/Vtÿ/Pkÿ.Kdÿ-G[ÿ.CVÿ->Lÿ-:Fÿ.6>ÿ-3;ÿ-/4ÿ--/ÿ-)*ÿ,'&ÿ,%"ÿ,#ÿ-"ÿ, ÿ- ÿ,ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ- ÿ, ÿ-"ÿ,#ÿ,$"ÿ.)(ÿ-++ÿ./1ÿ.04ÿ-4:ÿ/7?ÿ/;Gÿ.?Mÿ.BSÿ.FZÿ/Kaÿ.Nfÿ.Rmÿ0Vtÿ.Wxÿ/Y{ÿ/[~ÿ/]ƒÿ._„ÿ.a‡ÿ.bˆÿ/cŠÿ/cŒÿ/cŒÿ/eŽÿ/e�ÿ/g’ÿ/h“ÿ/g“ÿ0i•ÿ/j–ÿ/j–ÿ/j˜ÿ.k™ÿ/kšÿ/l›ÿ/m�ÿ/nžÿ/nŸÿ/o ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ/nžÿ/l›ÿ/j—ÿ/g“ÿ/dŽÿ.a‡ÿ/]‚ÿ/Yzÿ0Vtÿ/Qlÿ.Leÿ/H]ÿ/CVÿ/?Oÿ.;Hÿ.7Aÿ.5;ÿ.15ÿ./1ÿ.+,ÿ.)(ÿ.&$ÿ.%!ÿ.$ÿ-"ÿ."ÿ- ÿ. ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ)ÿ(ÿ(ÿ'ÿ(ÿ(!ÿ("!ÿ(%%ÿ('*ÿ)+0ÿ*.3ÿ)19ÿ+4>ÿ+8Eÿ+=Lÿ*@Sÿ,EZÿ,I`ÿ,Lhÿ,Qnÿ-Ttÿ-Vwÿ.Xzÿ.Z~ÿ.\�ÿ-^ƒÿ.Spÿ.Wwÿ/Y{ÿ/[~ÿ/]‚ÿ.^„ÿ._…ÿ/a‡ÿ/bŠÿ/b‹ÿ/d�ÿ/e�ÿ.f‘ÿ.g’ÿ/h”ÿ.i•ÿ.j•ÿ.j—ÿ.jšÿ/kšÿ/kšÿ/m�ÿ/m�ÿ/nžÿ0o ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ/nžÿ/l›ÿ/j–ÿ.f“ÿ.c�ÿ-`†ÿ.\‚ÿ.Xzÿ.Utÿ,Pmÿ,Keÿ+F[ÿ+AUÿ+=Mÿ+9Gÿ+4>ÿ*2;ÿ*.4ÿ)+0ÿ)(+ÿ(&'ÿ(##ÿ(" ÿ( ÿ'ÿ(ÿ'ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ)ÿ*ÿ)ÿ*!ÿ*#!ÿ*$#ÿ*''ÿ**,ÿ+-1ÿ,/5ÿ+3;ÿ+6?ÿ,;Gÿ,?Nÿ,BTÿ,E[ÿ-Jcÿ-Niÿ-Rnÿ.Uuÿ-Wxÿ-Z|ÿ.[ÿ.]‚ÿ.^„ÿ/Tpÿ/Wwÿ.Y{ÿ/[}ÿ/]‚ÿ._„ÿ.`†ÿ/bˆÿ/c‹ÿ/cŒÿ/c�ÿ/e�ÿ.f‘ÿ.g’ÿ/h”ÿ.i•ÿ.j•ÿ.j—ÿ.jšÿ/kšÿ/kšÿ/m�ÿ/m�ÿ/nžÿ0o ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ/m�ÿ/l›ÿ/j–ÿ.g“ÿ.d�ÿ.`ˆÿ.]ƒÿ.Y{ÿ.Vvÿ-Rnÿ-Lfÿ-G^ÿ-CVÿ-?Pÿ,;Iÿ+7Aÿ,4<ÿ,06ÿ+.2ÿ++-ÿ+))ÿ+&%ÿ+%#ÿ+$ ÿ*"ÿ+"ÿ* ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ(ÿ)ÿ(ÿ) ÿ(!ÿ)#"ÿ)((ÿ)),ÿ*-2ÿ+.5ÿ*2;ÿ,6@ÿ,:Gÿ+>Mÿ+BTÿ,EZÿ-Jbÿ,Mgÿ,Rnÿ-Usÿ-Xxÿ-Z|ÿ.[ÿ.]ƒÿ.^„ÿ-Sqÿ.Vvÿ.Xzÿ.Z}ÿ.\�ÿ-^ƒÿ-_†ÿ.aˆÿ.bŠÿ.bŒÿ.dŽÿ.e�ÿ.f‘ÿ.g’ÿ/h”ÿ.i•ÿ.j•ÿ.j—ÿ.jšÿ/kšÿ/kšÿ/m�ÿ/m�ÿ/nžÿ0o ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ/nžÿ/l›ÿ/j–ÿ.g’ÿ.dŽÿ.`‡ÿ.]ƒÿ.Y{ÿ-Vuÿ,Qmÿ,Keÿ,G\ÿ,CVÿ+>Nÿ+:Hÿ+7Bÿ+3=ÿ+/6ÿ*-2ÿ*)-ÿ)((ÿ)%$ÿ)$"ÿ*"ÿ) ÿ* ÿ)ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ&ÿ'ÿ&ÿ(ÿ( ÿ(!!ÿ($%ÿ(&(ÿ)*.ÿ*,1ÿ)07ÿ*3=ÿ*6Dÿ*ÿ*18ÿ*-2ÿ)*.ÿ)&)ÿ($%ÿ(!!ÿ( ÿ(ÿ'ÿ(ÿ'ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ( ÿ( ÿ( ÿ( ÿ( ÿ)ÿ)ÿ)ÿ)ÿ(ÿ)ÿ(ÿ(ÿ)ÿ)ÿ)"!ÿ($%ÿ)(+ÿ*+/ÿ).5ÿ*1:ÿ+6Bÿ+:Hÿ+>Oÿ,CXÿ,G^ÿ,Kdÿ,Okÿ.Trÿ-Vvÿ-Yzÿ.Z}ÿ.\�ÿ-]ƒÿ-Sqÿ.Wxÿ-Y{ÿ.[~ÿ.]‚ÿ.^„ÿ._†ÿ/aˆÿ/b‹ÿ/c�ÿ.d�ÿ.e�ÿ.f‘ÿ.g’ÿ/h”ÿ.i•ÿ.j•ÿ.j—ÿ.jšÿ/kšÿ/kšÿ/m�ÿ/m�ÿ/nžÿ0o ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ/nžÿ/l›ÿ/j—ÿ.f’ÿ.c�ÿ-_‡ÿ.\�ÿ.Xyÿ-Tsÿ-Niÿ,Ibÿ+DYÿ,?Rÿ+:Iÿ+7Cÿ*3=ÿ*/6ÿ*+/ÿ)(+ÿ)%&ÿ)#"ÿ)ÿ)ÿ)ÿ)ÿ)ÿ(ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ( ÿ( ÿ( ÿ( ÿ( ÿ) ÿ) ÿ) ÿ)ÿ(ÿ)ÿ'ÿ(ÿ(ÿ) ÿ)"!ÿ)$%ÿ*(+ÿ++/ÿ*.5ÿ+2:ÿ+5Aÿ+:Hÿ+>Pÿ,DXÿ-H_ÿ,Keÿ,Pkÿ-Srÿ-Vvÿ.Wyÿ.Z}ÿ.\�ÿ-]‚ÿ-Sqÿ.Wxÿ-Y{ÿ.[~ÿ.]‚ÿ.^„ÿ._†ÿ/aˆÿ/b‹ÿ/c�ÿ.d�ÿ.e�ÿ.f‘ÿ.g’ÿ/h”ÿ.i•ÿ.j•ÿ.j—ÿ.jšÿ/kšÿ/kšÿ/m�ÿ/m�ÿ/nžÿ0o ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ/nžÿ/l›ÿ/j—ÿ.f’ÿ.c�ÿ-_…ÿ.[€ÿ.Wyÿ-Tsÿ-Niÿ,Ibÿ+DXÿ+?Qÿ+9Iÿ+7Cÿ*2;ÿ*/5ÿ*+.ÿ*(+ÿ*$&ÿ)"!ÿ(ÿ(ÿ(ÿ(ÿ)ÿ(ÿ(ÿ( ÿ( ÿ( ÿ( ÿ) ÿ) ÿ( ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ( ÿ( ÿ( ÿ( ÿ( ÿ) ÿ) ÿ*ÿ*ÿ)ÿ*ÿ(ÿ)ÿ)ÿ* ÿ*#"ÿ*%&ÿ+),ÿ++/ÿ*/5ÿ+2:ÿ,6Bÿ+:Hÿ*>Oÿ-DXÿ-H^ÿ,Keÿ,Okÿ-Srÿ-Vvÿ-Yzÿ.Z}ÿ.\€ÿ.^ƒÿ,Sqÿ-Wwÿ-Y{ÿ.[~ÿ.]ƒÿ.^…ÿ._‡ÿ/a‰ÿ/b‹ÿ/bŒÿ.c�ÿ.e�ÿ.g’ÿ.g“ÿ/h”ÿ.i•ÿ.j•ÿ.j—ÿ.jšÿ/kšÿ/kšÿ/lœÿ/nžÿ/nŸÿ0o ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ/nžÿ/l›ÿ/j–ÿ.g“ÿ.cŒÿ.`†ÿ.\�ÿ.Xyÿ.Trÿ.Njÿ-Icÿ-EZÿ,@Qÿ-;Kÿ,7Dÿ+3<ÿ+06ÿ+,0ÿ+),ÿ+&'ÿ*#"ÿ* ÿ)ÿ(ÿ(ÿ)ÿ'ÿ)ÿ) ÿ) ÿ) ÿ*ÿ*ÿ*ÿ*ÿ( ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ) ÿ) ÿ( ÿ( ÿ( ÿ) ÿ) ÿ( ÿ(ÿ'ÿ(ÿ(ÿ)ÿ*ÿ*!ÿ*#"ÿ*%&ÿ+),ÿ++/ÿ*/5ÿ,3;ÿ,7Bÿ,;Iÿ*>Nÿ-DXÿ-H_ÿ,Keÿ,Pkÿ-Srÿ-Vvÿ.Xyÿ.Z}ÿ.\€ÿ.^ƒÿ,Rpÿ-Vvÿ,Xzÿ-Z}ÿ-\‚ÿ-^„ÿ-_†ÿ.aˆÿ.bŠÿ.b‹ÿ.c�ÿ.e�ÿ.g’ÿ.g“ÿ/h”ÿ.i•ÿ.j•ÿ.j—ÿ.jšÿ/kšÿ/kšÿ/lœÿ/nžÿ/nŸÿ0o ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ/nžÿ/l›ÿ/j—ÿ.f’ÿ.c�ÿ._‡ÿ.\�ÿ.Xyÿ.Trÿ-Niÿ-Ibÿ-DZÿ,?Qÿ+:Iÿ+7Cÿ+2:ÿ+/6ÿ++/ÿ*(+ÿ*$&ÿ)"!ÿ)ÿ)ÿ(ÿ(ÿ)ÿ'ÿ)ÿ) ÿ) ÿ) ÿ) ÿ) ÿ) ÿ) ÿ( ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ) ÿ) ÿ( ÿ( ÿ( ÿ( ÿ( ÿ( ÿ(ÿ'ÿ(ÿ(ÿ*ÿ*ÿ* ÿ*#"ÿ*%&ÿ+),ÿ++/ÿ*.5ÿ,3;ÿ,7Bÿ,;Iÿ+>Pÿ-DXÿ-H^ÿ,Keÿ,Pkÿ-Srÿ-Vvÿ-Y{ÿ.Z}ÿ.\€ÿ.]ƒÿ,Qoÿ-Uvÿ,Yzÿ-Z}ÿ-\�ÿ-^ƒÿ-_†ÿ.aˆÿ.bŠÿ.b‹ÿ.c�ÿ.e�ÿ.g’ÿ.g“ÿ/h”ÿ.i•ÿ.j•ÿ.j—ÿ.jšÿ/kšÿ/kšÿ/lœÿ/nžÿ/nŸÿ0o ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ/m�ÿ/l›ÿ/j—ÿ.f‘ÿ.c�ÿ._†ÿ.\�ÿ.Xyÿ-Tsÿ-Niÿ,Ibÿ,CYÿ,?Sÿ+;Iÿ+7Cÿ+2:ÿ+/6ÿ++0ÿ*(+ÿ*$&ÿ)"!ÿ)ÿ)ÿ(ÿ(ÿ)ÿ'ÿ)ÿ) ÿ) ÿ) ÿ) ÿ) ÿ) ÿ) ÿ( ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ( ÿ( ÿ( ÿ( ÿ( ÿ( ÿ( ÿ( ÿ(ÿ'ÿ(ÿ(ÿ)ÿ)ÿ)ÿ)"!ÿ)$%ÿ*(+ÿ+*/ÿ*.5ÿ+2:ÿ,7Bÿ,;Iÿ*>Oÿ-DXÿ,G]ÿ,Keÿ,Ojÿ-Srÿ-Vvÿ.Xyÿ.Z}ÿ.\€ÿ.]ƒÿ-Rnÿ.Vuÿ-Xyÿ.Z|ÿ.\�ÿ-]ƒÿ-^†ÿ.`ˆÿ.aŠÿ.a‹ÿ.cŒÿ.e�ÿ.g’ÿ.g“ÿ/h”ÿ.i•ÿ.j•ÿ.j—ÿ.jšÿ/kšÿ/kšÿ/lœÿ/nžÿ/nŸÿ0o ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ/nžÿ/l›ÿ/j–ÿ.f’ÿ.c�ÿ._‡ÿ.\€ÿ.Xyÿ-Tsÿ-Niÿ,Ibÿ,DYÿ,?Rÿ+;Iÿ+7Cÿ*2;ÿ+.6ÿ++0ÿ*(+ÿ*$&ÿ)"!ÿ)ÿ)ÿ(ÿ(ÿ)ÿ'ÿ)ÿ) ÿ) ÿ) ÿ*ÿ*ÿ*ÿ) ÿ( ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ) ÿ) ÿ) ÿ) ÿ) ÿ) ÿ) ÿ) ÿ)ÿ(ÿ)ÿ(ÿ)ÿ)ÿ)ÿ)"!ÿ)$%ÿ*(+ÿ++/ÿ*.5ÿ+2:ÿ+6Aÿ,;Iÿ+>Pÿ-DXÿ,G^ÿ,Keÿ,Ojÿ.Trÿ-Vvÿ.Xyÿ.Z}ÿ.\€ÿ.^ƒÿ-Rnÿ.Vuÿ-Xyÿ.Z|ÿ.\�ÿ-]ƒÿ-^†ÿ.`ˆÿ.aŠÿ.a‹ÿ.cŒÿ.e�ÿ.g’ÿ.g“ÿ/h”ÿ.i•ÿ.j•ÿ.j—ÿ.jšÿ/kšÿ/kšÿ/lœÿ/nžÿ/nŸÿ0o ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0q¢ÿ0p¡ÿ0p¡ÿ/nžÿ/l›ÿ/j–ÿ.f‘ÿ.c�ÿ._‡ÿ.\�ÿ.Xyÿ-Srÿ.Njÿ-Icÿ-EZÿ,@Qÿ+;Iÿ+7Cÿ+2:ÿ+/6ÿ*,0ÿ*(+ÿ*$&ÿ)"!ÿ)ÿ(ÿ(ÿ(ÿ)ÿ'ÿ)ÿ) ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ( ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ( ÿ( ÿ( ÿ( ÿ*ÿ*ÿ*ÿ*ÿ*ÿ)ÿ*ÿ)ÿ*ÿ)ÿ)ÿ)"!ÿ)$%ÿ*(+ÿ+*/ÿ*.5ÿ+2:ÿ+6Aÿ,:Iÿ*>Oÿ+BVÿ,G^ÿ,Keÿ,Okÿ-Sqÿ-Vvÿ.Xyÿ.Z}ÿ.\�ÿ.]ƒÿ,Qnÿ-Uuÿ.Wyÿ.Y|ÿ.\�ÿ-]ƒÿ-^…ÿ.`ˆÿ/bŠÿ/b‹ÿ.cŒÿ.e�ÿ.g’ÿ.g“ÿ/h”ÿ.i•ÿ.j•ÿ.j—ÿ.jšÿ/kšÿ/kšÿ/lœÿ/nžÿ/nŸÿ0o ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ1r¢ÿ0p¡ÿ0p¡ÿ/nžÿ/l›ÿ/j–ÿ.f’ÿ.c�ÿ-_†ÿ.\�ÿ.Xyÿ-Tsÿ.Njÿ-Icÿ-EZÿ,@Qÿ,:Jÿ,7Dÿ+3<ÿ+06ÿ++0ÿ*(+ÿ*$&ÿ)"!ÿ(ÿ(ÿ(ÿ(ÿ)ÿ'ÿ)ÿ) ÿ) ÿ) ÿ) ÿ) ÿ*ÿ*ÿ( ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ( ÿ( ÿ( ÿ( ÿ( ÿ( ÿ) ÿ) ÿ)ÿ(ÿ)ÿ(ÿ)ÿ)ÿ)ÿ)"!ÿ)$%ÿ*(+ÿ+*/ÿ*.5ÿ+2:ÿ+6Aÿ+;Hÿ*>Oÿ-DXÿ,G]ÿ,Keÿ,Ojÿ-Srÿ-Vvÿ.Xyÿ.Z}ÿ.\�ÿ.]ƒÿ,Qnÿ-Uuÿ-Yyÿ.Z|ÿ.\€ÿ.^ƒÿ-`…ÿ-a‡ÿ/aŠÿ/bŒÿ.cŒÿ.e�ÿ.g’ÿ.g“ÿ/h”ÿ.i•ÿ.j–ÿ.j˜ÿ.jšÿ/kšÿ/kšÿ/lœÿ/nŸÿ/nŸÿ0o ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ1r£ÿ0p¡ÿ0p¡ÿ/nžÿ/l›ÿ/j–ÿ.g“ÿ.cŒÿ-_†ÿ.[€ÿ-Yzÿ.Trÿ-Niÿ-Ibÿ-DZÿ,@Sÿ-;Kÿ,7Dÿ+2:ÿ+/6ÿ++/ÿ*(+ÿ)%%ÿ(" ÿ(ÿ(ÿ(ÿ(ÿ)ÿ'ÿ)ÿ) ÿ) ÿ) ÿ) ÿ) ÿ) ÿ) ÿ( ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ( ÿ) ÿ) ÿ( ÿ( ÿ( ÿ( ÿ) ÿ)ÿ(ÿ)ÿ(ÿ)ÿ)ÿ)ÿ)"!ÿ)$%ÿ*(+ÿ+*/ÿ*.5ÿ+2:ÿ+5Aÿ+;Hÿ*>Oÿ+CWÿ,G]ÿ,Jdÿ,Ojÿ-Srÿ-Vvÿ.Xyÿ.Z}ÿ.\€ÿ.]ƒÿ,Qnÿ-Uuÿ-Yyÿ.Z|ÿ.\€ÿ.^ƒÿ-`…ÿ-a‡ÿ/aŠÿ/bŒÿ.cŒÿ.e�ÿ.g’ÿ.g“ÿ/h”ÿ.i•ÿ.j–ÿ.j˜ÿ.jšÿ/kšÿ/kšÿ/lœÿ/nŸÿ/nŸÿ0o ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ1r£ÿ0p¡ÿ0p¡ÿ/nžÿ/l›ÿ/j—ÿ.f‘ÿ.c�ÿ-_†ÿ.[�ÿ.Wyÿ-Tsÿ-Niÿ,Ibÿ-DZÿ,?Rÿ,;Jÿ+7Cÿ*2;ÿ+/7ÿ++0ÿ)(*ÿ)%%ÿ(" ÿ(ÿ)ÿ(ÿ(ÿ)ÿ'ÿ(ÿ( ÿ( ÿ) ÿ) ÿ) ÿ) ÿ) ÿ( ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ( ÿ( ÿ( ÿ( ÿ( ÿ( ÿ) ÿ) ÿ)ÿ(ÿ)ÿ(ÿ)ÿ)ÿ)ÿ)"!ÿ)$%ÿ*(+ÿ*+.ÿ).4ÿ+1:ÿ+5Aÿ+:Hÿ*>Oÿ,CWÿ,G^ÿ,Icÿ,Ojÿ-Srÿ-Vvÿ.Xyÿ.Z~ÿ.\�ÿ.]ƒÿ,Qnÿ-Uuÿ.Xyÿ.Z|ÿ.\€ÿ.^ƒÿ-_…ÿ-`‡ÿ/bŠÿ/bŒÿ.cŒÿ.e�ÿ.g’ÿ.g“ÿ/h”ÿ.i•ÿ.j–ÿ.j˜ÿ.jšÿ/kšÿ/kšÿ/mœÿ/mŸÿ/nŸÿ0o ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ/nžÿ/l›ÿ/j–ÿ.f’ÿ.c�ÿ-_…ÿ.[�ÿ.Wyÿ-Tsÿ-Niÿ-Ibÿ-DZÿ,>Qÿ+;Iÿ+7Cÿ*2;ÿ*/6ÿ),/ÿ)(*ÿ)$%ÿ(" ÿ)ÿ)ÿ(ÿ(ÿ)ÿ'ÿ(ÿ( ÿ( ÿ( ÿ( ÿ) ÿ) ÿ( ÿ( ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ' ÿ' ÿ' ÿ' ÿ' ÿ( ÿ( ÿ( ÿ(ÿ'ÿ(ÿ'ÿ(ÿ(ÿ(ÿ(! ÿ'##ÿ(')ÿ)*-ÿ(-3ÿ)08ÿ*4@ÿ*:Gÿ*>Oÿ,CWÿ,G]ÿ,Keÿ,Njÿ-Rrÿ,Uuÿ,Xyÿ-Y|ÿ-[ÿ-]‚ÿ,Roÿ-Vvÿ.Y{ÿ.[}ÿ.]�ÿ._„ÿ-`†ÿ-aˆÿ/b‹ÿ/b�ÿ.c�ÿ.e�ÿ.g’ÿ.g“ÿ/h•ÿ.i•ÿ.j–ÿ.j˜ÿ.jšÿ/kšÿ/k›ÿ/mœÿ/mŸÿ/nŸÿ0o ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ/nžÿ/l›ÿ/j—ÿ.f‘ÿ.c�ÿ-_†ÿ-[€ÿ,Xyÿ-Ssÿ-Miÿ,Ibÿ,DYÿ+?Pÿ,:Jÿ*6Bÿ*19ÿ).5ÿ)*.ÿ(')ÿ(#$ÿ(! ÿ(ÿ(ÿ(ÿ(ÿ)ÿ'ÿ(ÿ( ÿ( ÿ( ÿ( ÿ( ÿ( ÿ( ÿ( ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ( ÿ( ÿ( ÿ( ÿ( ÿ( ÿ)ÿ)ÿ)ÿ'ÿ(ÿ'ÿ(ÿ(ÿ(ÿ("!ÿ($$ÿ)')ÿ**.ÿ).4ÿ+1:ÿ+5Aÿ+9Hÿ+>Qÿ+BVÿ,G^ÿ,Keÿ,Pkÿ-Srÿ-Vvÿ-Yzÿ.Z}ÿ.\€ÿ.^ƒÿ._†ÿ/aˆÿ/b‰ÿ/b‹ÿ.cŒÿ.d�ÿ.d�ÿ.f‘ÿ.g’ÿ.g“ÿ/h”ÿ.i•ÿ/j—ÿ/j˜ÿ.k™ÿ/kšÿ/l›ÿ/m�ÿ/m�ÿ/nŸÿ/oŸÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ/nžÿ/l›ÿ/j–ÿ.f‘ÿ.cŒÿ-_…ÿ.[€ÿ.Wyÿ.Trÿ-Niÿ,Iaÿ,DYÿ+?Rÿ+;Jÿ+7Dÿ*2<ÿ+07ÿ),/ÿ)(*ÿ)%%ÿ("!ÿ(ÿ)ÿ)ÿ(ÿ)ÿ(ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ( ÿ( ÿ( ÿ( ÿ( ÿ)ÿ+ÿ+ÿ+ÿ, ÿ,$ÿ-'#ÿ.,*ÿ011ÿ168ÿ3<@ÿ4BHÿ6IQÿ8OZÿ9Ucÿ;]mÿ=dvÿ?l€ÿ@s‹ÿD{•ÿE��ÿHˆ¦ÿIŽ®ÿL•µÿM™¼ÿOžÁÿR£ÇÿS§ËÿT¬ÐÿW°ÔÿY´ØÿY¸Üÿ\ºßÿ^½ãÿ`ÁæÿaÄéÿbÇíÿcÉîÿdÌñÿfÏôÿgÑöÿhÓøÿiÕùÿjÖúÿkØüÿlÙýÿlÚþÿmÚþÿmÛÿÿmÛÿÿmÛÿÿmÛÿÿmÚþÿlÚþÿlÙýÿkØüÿjÖûÿjÕúÿiÓøÿhÒ÷ÿgÐõÿfÎôÿdÌòÿcÊðÿbÇîÿ`Åëÿ_Âéÿ]Àçÿ\½äÿY¹áÿWµÝÿV±ÙÿT­ÕÿS©ÏÿQ£ÈÿOžÂÿL˜»ÿK“´ÿJŒ«ÿF†¢ÿDšÿCw�ÿAp†ÿ?h}ÿ=arÿ;Yhÿ:S_ÿ7LVÿ5ELÿ3?Cÿ189ÿ033ÿ0.-ÿ.)'ÿ.'#ÿ-#ÿ,ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ)ÿ( ÿ( ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ(ÿ+ÿ*ÿ+ÿ* ÿ) ÿ)#"ÿ)%&ÿ*),ÿ+,0ÿ*/6ÿ+1:ÿ+5Aÿ+9Hÿ*>Oÿ,CWÿ-H^ÿ,Keÿ,Olÿ-Sqÿ-Vvÿ.Xyÿ.Z}ÿ.\€ÿ.^ƒÿ._†ÿ.a‡ÿ.bŠÿ/b‹ÿ.cŒÿ.d�ÿ.d�ÿ.f‘ÿ.g’ÿ.g“ÿ/h”ÿ.i•ÿ/j–ÿ/k˜ÿ.k™ÿ/kšÿ/l›ÿ/m�ÿ/m�ÿ/nŸÿ/oŸÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ0p¡ÿ/nžÿ/l›ÿ/j–ÿ.f’ÿ.c�ÿ-_…ÿ.[�ÿ.Wyÿ.Trÿ-Njÿ-Iaÿ,EYÿ,@Tÿ,sÿ-Hÿ-Hÿ-Hÿ-Hÿ-Hÿ$ÿšÇêÿ$ÿ-Hÿ$ÿšÇêÿ$ÿ$ÿšÇêÿ$ÿšÇêÿ$ÿ-Hÿ-Hÿ-Hÿ$ÿšÇêÿ$ÿ3ÿ-Hÿ-Hÿ$ÿšÇêÿ$ÿ$ÿšÇêÿšÇêÿšÇêÿ$ÿ3ÿ$ÿ$ÿšÇêÿ$ÿ$ÿ$ÿ3ÿ-Hÿ-Hÿ$ÿšÇêÿ$ÿ-Hÿ-Hÿ$ÿšÇêÿ$ÿ-Hÿ-Hÿ-Hÿ-Hÿ-Hÿ-Hÿ>sÿÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿÿA{ +ÿ/Mÿ/Mÿ/Mÿ/Mÿ/Mÿ&ÿ�Àçÿ&ÿ&ÿ&ÿ�Àçÿ&ÿ!6ÿ&ÿ�Àçÿ&ÿ&ÿ!6ÿ/Mÿ!6ÿ&ÿ�Àçÿ&ÿ/Mÿ/Mÿ/Mÿ&ÿ�Àçÿ&ÿ!6ÿ&ÿ&ÿ�Àçÿ&ÿ&ÿ�Àçÿ&ÿ�Àçÿ�Àçÿ�Àçÿ&ÿ/Mÿ/Mÿ!6ÿ&ÿ�Àçÿ&ÿ/Mÿ/Mÿ&ÿ�Àçÿ&ÿ/Mÿ/Mÿ/Mÿ/Mÿ/Mÿ/MÿA{ +ÿÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿÿG„ÿ3S ÿ3S ÿ3S ÿ3S ÿ3S ÿ)ÿ…ºäÿ…ºäÿ…ºäÿ…ºäÿ…ºäÿ)ÿ)ÿ…ºäÿ…ºäÿ)ÿ…ºäÿ)ÿ$:ÿ)ÿ…ºäÿ)ÿ$:ÿ3S ÿ3S ÿ3S ÿ)ÿ…ºäÿ)ÿ3S ÿ3S ÿ)ÿ…ºäÿ)ÿ)ÿ…ºäÿ)ÿ…ºäÿ)ÿ)ÿ$:ÿ3S ÿ3S ÿ)ÿ…ºäÿ)ÿ$:ÿ3S ÿ3S ÿ)ÿ…ºäÿ)ÿ3S ÿ3S ÿ3S ÿ3S ÿ3S ÿ3S ÿG„ÿÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿÿL�ÿ7Z ÿ7Z ÿ7Z ÿ7Z ÿ7Z ÿ-ÿ|´áÿ-ÿ-ÿ-ÿ-ÿ-ÿ|´áÿ-ÿ-ÿ|´áÿ|´áÿ-ÿ-ÿ|´áÿ-ÿ'@ ÿ7Z ÿ'@ ÿ-ÿ-ÿ-ÿ|´áÿ-ÿ7Z ÿ'@ ÿ-ÿ|´áÿ-ÿ-ÿ|´áÿ-ÿ|´áÿ-ÿ-ÿ-ÿ'@ ÿ'@ ÿ-ÿ|´áÿ-ÿ7Z ÿ7Z ÿ7Z ÿ-ÿ|´áÿ-ÿ7Z ÿ7Z ÿ7Z ÿ7Z ÿ7Z ÿ7Z ÿL�ÿÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿÿSŸÿ;bÿ;bÿ;bÿ;bÿ;bÿ)E ÿ1ÿ)E ÿ;bÿ;bÿ1ÿt¯ßÿ1ÿ)E ÿ)E ÿ1ÿt¯ßÿ1ÿt¯ßÿ1ÿ)E ÿ;bÿ;bÿ1ÿt¯ßÿt¯ßÿt¯ßÿ1ÿ)E ÿ;bÿ1ÿt¯ßÿt¯ßÿ1ÿt¯ßÿ1ÿt¯ßÿt¯ßÿt¯ßÿt¯ßÿt¯ßÿ1ÿ1ÿt¯ßÿ1ÿ)E ÿ;bÿ;bÿ;bÿ1ÿt¯ßÿ1ÿ;bÿ;bÿ;bÿ;bÿ;bÿ;bÿSŸÿÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿÿZ½&ÿAoÿ>iÿ>iÿ>iÿ>iÿ>iÿ>iÿ>iÿ>iÿ>iÿ,Jÿ4 +ÿ,Jÿ>iÿ>iÿ,Jÿ4 +ÿ,Jÿ4 +ÿ,Jÿ>iÿ>iÿ>iÿ,Jÿ4 +ÿ4 +ÿ4 +ÿ,Jÿ>iÿ>iÿ,Jÿ4 +ÿ4 +ÿ,Jÿ4 +ÿ,Jÿ4 +ÿ4 +ÿ4 +ÿ4 +ÿ4 +ÿ,Jÿ,Jÿ4 +ÿ,Jÿ>iÿ>iÿ>iÿ>iÿ,Jÿ4 +ÿ,Jÿ>iÿ>iÿ>iÿ>iÿ>iÿAoÿZ¾&ÿÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ ÿS�6ÿQ•!ÿDtÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿAnÿDtÿQ—!ÿO‰4ÿ +ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ" ÿÿV‘;ÿaÌ/ÿ^¹*ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ]¶)ÿ^¹*ÿaÌ/ÿV‘;ÿÿ$ ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ" ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ" ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ( ÿ( ÿ( ÿ)ÿ)ÿ( ÿ( ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ( ÿ)ÿ)ÿ( ÿ( ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ( ÿ)ÿ)ÿ( ÿ( ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ( ÿ)ÿ)ÿ( ÿ( ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ( ÿ)ÿ)ÿ( ÿ( ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ( ÿ)ÿ)ÿ( ÿ( ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿÿ¬{;ÿ£xBÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ�uCÿ£xBÿ¬{;ÿÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡ŽˆÿÿŸv@ÿ�j@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿƒc@ÿ�j@ÿŸv@ÿÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿÿ“m?ÿ|^=ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿºïûÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿºïûÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿºïûÿpV<ÿpV<ÿpV<ÿpV<ÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿpV<ÿpV<ÿpV<ÿºïûÿpV<ÿpV<ÿpV<ÿpV<ÿºïûÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿºïûÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿºïûÿpV<ÿºïûÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿpV<ÿ|^=ÿ“m?ÿÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡ŽˆÿÿŒh;ÿsW8ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿfO7ÿºïûÿºïûÿºïûÿºïûÿºïûÿfO7ÿfO7ÿfO7ÿºïûÿfO7ÿfO7ÿfO7ÿfO7ÿºïûÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿºïûÿfO7ÿfO7ÿfO7ÿºïûÿfO7ÿfO7ÿfO7ÿfO7ÿºïûÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿºïûÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿºïûÿfO7ÿfO7ÿºïûÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿsW8ÿŒh;ÿÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿÿ„c7ÿiQ5ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿºïûÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿºïûÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿºïûÿ[H3ÿ[H3ÿ[H3ÿºïûÿ[H3ÿºïûÿ[H3ÿºïûÿ[H3ÿ[H3ÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿ[H3ÿ[H3ÿ[H3ÿºïûÿ[H3ÿ[H3ÿºïûÿ[H3ÿºïûÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿºïûÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿºïûÿºïûÿºïûÿºïûÿ[H3ÿ[H3ÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿiQ5ÿ„c7ÿÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿÿ}]4ÿ`J/ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿºïûÿR@.ÿR@.ÿR@.ÿºïûÿR@.ÿºïûÿR@.ÿºïûÿR@.ÿR@.ÿºïûÿR@.ÿR@.ÿR@.ÿR@.ÿºïûÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿºïûÿR@.ÿºïûÿºïûÿR@.ÿºïûÿºïûÿºïûÿºïûÿºïûÿR@.ÿR@.ÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿR@.ÿºïûÿR@.ÿR@.ÿºïûÿR@.ÿR@.ÿºïûÿR@.ÿR@.ÿR@.ÿR@.ÿºïûÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿ`J/ÿ}]4ÿÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡ŽˆÿÿuY1ÿXD-ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿºïûÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿºïûÿI:*ÿI:*ÿI:*ÿI:*ÿºïûÿI:*ÿI:*ÿI:*ÿI:*ÿºïûÿI:*ÿºïûÿI:*ÿºïûÿI:*ÿI:*ÿºïûÿI:*ÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿI:*ÿI:*ÿºïûÿI:*ÿºïûÿI:*ÿI:*ÿºïûÿI:*ÿºïûÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿºïûÿI:*ÿI:*ÿºïûÿI:*ÿºïûÿI:*ÿI:*ÿºïûÿI:*ÿI:*ÿºïûÿI:*ÿI:*ÿI:*ÿI:*ÿºïûÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿXD-ÿuY1ÿÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡ŽˆÿÿpU.ÿQ@)ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿºïûÿºïûÿºïûÿºïûÿ@5&ÿºïûÿºïûÿºïûÿºïûÿºïûÿ@5&ÿ@5&ÿºïûÿ@5&ÿºïûÿ@5&ÿ@5&ÿºïûÿ@5&ÿ@5&ÿºïûÿ@5&ÿ@5&ÿºïûÿ@5&ÿºïûÿ@5&ÿºïûÿ@5&ÿ@5&ÿºïûÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿºïûÿ@5&ÿ@5&ÿºïûÿ@5&ÿºïûÿ@5&ÿ@5&ÿºïûÿ@5&ÿ@5&ÿºïûÿºïûÿºïûÿºïûÿ@5&ÿºïûÿ@5&ÿ@5&ÿºïûÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿQ@)ÿpU.ÿÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡ŽˆÿÿmR.ÿM='ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿºïûÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿºïûÿ=2%ÿ=2%ÿ=2%ÿºïûÿºïûÿ=2%ÿ=2%ÿºïûÿ=2%ÿ=2%ÿ>2%ÿºïûÿ>2%ÿ>2%ÿ>2%ÿ=2%ÿºïûÿ=2%ÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿ>2%ÿ>2%ÿºïûÿ>2%ÿºïûÿ>2%ÿ>2%ÿ>2%ÿ>2%ÿºïûÿ>2%ÿ>2%ÿ>2%ÿ>2%ÿ=2%ÿ=2%ÿºïûÿ=2%ÿ=2%ÿºïûÿ=2%ÿºïûÿ=2%ÿ=2%ÿºïûÿ=2%ÿ=2%ÿºïûÿ=2%ÿ=2%ÿºïûÿ=2%ÿºïûÿ=2%ÿ=2%ÿºïûÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿM='ÿmR.ÿÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡ŽˆÿÿfHÿB0ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿ1$ÿ1$ÿºïûÿ1%ÿ1%ÿºïûÿ1%ÿºïûÿ1%ÿºïûÿ2%ÿºïûÿ1%ÿ1%ÿºïûÿ2%ÿ2%ÿ2%ÿ2%ÿºïûÿ2%ÿ2%ÿ2%ÿ2%ÿ2%ÿ2%ÿ2%ÿºïûÿ2%ÿ2%ÿºïûÿºïûÿºïûÿºïûÿºïûÿ1%ÿ1%ÿ1%ÿ1%ÿºïûÿ1%ÿ1%ÿºïûÿ1%ÿºïûÿ1%ÿ1%ÿºïûÿ1$ÿ1$ÿºïûÿ1$ÿ1$ÿºïûÿ1$ÿºïûÿ1$ÿºïûÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿB0ÿfHÿÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡ŽˆÿÿfHÿB0ÿ0$ÿ0$ÿ1$ÿ1$ÿ1$ÿ1$ÿ1$ÿ1$ÿ1$ÿ1$ÿ1$ÿ1$ÿ1$ÿ1$ÿ1$ÿ1%ÿ1%ÿ1%ÿºïûÿ2%ÿ2%ÿ2%ÿºïûÿ2%ÿ2%ÿ3&ÿºïûÿ3&ÿ4&ÿ4&ÿºïûÿ4&ÿ4'ÿºïûÿ5'ÿºïûÿ5'ÿºïûÿ5'ÿºïûÿ6'ÿ6'ÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿ6(ÿ7(ÿ7(ÿºïûÿ6(ÿ6(ÿ6(ÿ6(ÿºïûÿ6'ÿ6'ÿ6'ÿ6'ÿ5'ÿ5'ÿºïûÿ4'ÿ4'ÿºïûÿ4&ÿºïûÿ4&ÿ4&ÿºïûÿ3&ÿ2%ÿºïûÿ2%ÿ2%ÿºïûÿ2%ÿ2%ÿºïûÿ1%ÿ1%ÿºïûÿ1%ÿ1$ÿ1$ÿ1$ÿ0$ÿ0$ÿ0$ÿ0$ÿ1$ÿ1$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿB0ÿfHÿÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡ŽˆÿÿfHÿC0ÿ1$ÿ1$ÿ1%ÿ1%ÿ1%ÿ1%ÿ1%ÿ1%ÿ1%ÿ1%ÿ2%ÿ2%ÿ2%ÿ2%ÿ2%ÿ3&ÿ3&ÿºïûÿ4&ÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿ7(ÿºïûÿ8)ÿ9)ÿºïûÿºïûÿºïûÿºïûÿ;+ÿºïûÿ<+ÿºïûÿ<+ÿºïûÿ=,ÿ>,ÿºïûÿºïûÿ>-ÿ>-ÿ?-ÿºïûÿ?-ÿºïûÿ@-ÿºïûÿ@-ÿ?-ÿ?-ÿºïûÿ?-ÿ?-ÿ>-ÿ>-ÿºïûÿ=,ÿ=,ÿ<+ÿ<+ÿ<+ÿºïûÿ;+ÿ;*ÿ:*ÿºïûÿ9)ÿºïûÿ8)ÿ8)ÿºïûÿ7(ÿ6(ÿºïûÿ6'ÿºïûÿºïûÿ4'ÿºïûÿ4&ÿºïûÿ3&ÿºïûÿ2%ÿ2%ÿ2%ÿ2%ÿ1%ÿ1%ÿ1%ÿ1%ÿ1%ÿ1%ÿ1$ÿ1$ÿ1$ÿ1$ÿ1$ÿ1$ÿ1$ÿ1$ÿB0ÿfHÿÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡ŽˆÿÿgHÿC1ÿ2%ÿ2%ÿ2%ÿ2%ÿ2%ÿ2%ÿ2%ÿ2%ÿ3&ÿ4&ÿ4'ÿ5'ÿ5'ÿ6'ÿ7(ÿ7(ÿ8)ÿ9)ÿ9)ÿ:*ÿ;*ÿ<+ÿºïûÿ=,ÿ>-ÿ?-ÿA.ÿA.ÿC/ÿC0ÿºïûÿF1ÿF1ÿºïûÿI3ÿºïûÿºïûÿºïûÿºïûÿºïûÿN6ÿO7ÿºïûÿºïûÿQ8ÿºïûÿºïûÿºïûÿºïûÿºïûÿS9ÿºïûÿR8ÿR8ÿR8ÿºïûÿQ8ÿP7ÿP7ÿP7ÿºïûÿN6ÿM6ÿM5ÿK4ÿK4ÿºïûÿI3ÿH3ÿG2ÿºïûÿE0ÿºïûÿºïûÿºïûÿºïûÿ@-ÿ>-ÿºïûÿ<+ÿ;+ÿ;*ÿºïûÿ9)ÿ8)ÿ7(ÿºïûÿºïûÿ6'ÿ5'ÿ4'ÿ4'ÿ4&ÿ4&ÿ3&ÿ2%ÿ2%ÿ2%ÿ2%ÿ1%ÿ1%ÿ1%ÿ1%ÿ1%ÿ1%ÿ1%ÿC0ÿfHÿÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡ŽˆÿÿhIÿE2ÿ3&ÿ4&ÿ4'ÿ4'ÿ4'ÿ4'ÿ5'ÿ6'ÿ6(ÿ7(ÿ8)ÿ9)ÿ9*ÿ;*ÿ<+ÿ<+ÿ>-ÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿQ8ÿS9ÿU:ÿW;ÿX<ÿZ=ÿ\>ÿ^@ÿ_@ÿaAÿcCÿºïûÿfDÿºïûÿiF ÿºïûÿkG ÿlH ÿlH ÿmI!ÿmI!ÿnI!ÿºïûÿºïûÿnI!ÿmI!ÿmI!ÿºïûÿlH ÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿaAÿºïûÿ^@ÿ\>ÿºïûÿºïûÿW;ÿU:ÿºïûÿQ8ÿO7ÿºïûÿK4ÿºïûÿH3ÿF1ÿE1ÿºïûÿB/ÿ@.ÿ?-ÿ>-ÿ<+ÿºïûÿ;*ÿ9*ÿ9)ÿ8)ÿ7(ÿ6(ÿ6'ÿ5'ÿ4'ÿ4&ÿ4&ÿ3&ÿ3&ÿ3&ÿ3&ÿ3&ÿ2%ÿ2%ÿD1ÿgHÿÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡ŽˆÿÿiJ ÿG3ÿ6(ÿ6(ÿ7(ÿ7(ÿ7(ÿ7(ÿ8)ÿ9*ÿ:*ÿ;+ÿ=,ÿ>,ÿ?-ÿA.ÿC/ÿD0ÿF1ÿH3ÿJ4ÿM5ÿO6ÿQ8ÿS9ÿV;ÿY=ÿ[>ÿ_@ÿaAÿdCÿgEÿiF ÿmI!ÿpJ!ÿsL"ÿuM"ÿxO#ÿ{Q#ÿ}R$ÿ€T$ÿ‚U%ÿ…W%ÿ‡X%ÿ‰Y&ÿŠZ&ÿŒ[&ÿŽ\'ÿ�]'ÿ�]'ÿ�]'ÿ‘^'ÿ‘^'ÿ‘^'ÿ‘^'ÿ�]'ÿ�]'ÿ�]'ÿŽ\'ÿŒ[&ÿŠZ&ÿ‰Y&ÿ‡X%ÿ…W%ÿ‚U%ÿ€T$ÿ}R$ÿ{Q#ÿxO#ÿuM"ÿsL"ÿpJ!ÿmI!ÿjG ÿgEÿdCÿaAÿ_@ÿ[>ÿY<ÿV;ÿS9ÿQ8ÿO6ÿM5ÿJ3ÿH2ÿF1ÿD0ÿC/ÿA.ÿ?-ÿ>,ÿ<+ÿ;+ÿ:*ÿ9*ÿ8)ÿ7(ÿ6(ÿ6'ÿ5'ÿ4'ÿ4'ÿ4'ÿ4'ÿ4&ÿ3&ÿE2ÿhIÿÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡ŽˆÿÿjJ ÿI4ÿ8)ÿ9)ÿ:*ÿ:*ÿ:*ÿ:*ÿ;+ÿ<+ÿ>,ÿ@-ÿA.ÿC/ÿE1ÿG2ÿJ3ÿL5ÿO6ÿQ8ÿT9ÿW;ÿZ=ÿ^?ÿaAÿdCÿhF ÿkG ÿpJ!ÿsL"ÿwN"ÿ{Q#ÿS$ÿ„V%ÿ‡X%ÿ‹Z&ÿ�]'ÿ“_(ÿ—a(ÿ›d)ÿžf*ÿ¡g*ÿ¥j+ÿ¨l,ÿªm,ÿ­o-ÿ¯p-ÿ°q-ÿ²q-ÿ´s.ÿ´s.ÿµs.ÿµs.ÿµt.ÿµt.ÿ´s.ÿ´s.ÿ²q-ÿ°q-ÿ®o-ÿ¬n,ÿªm,ÿ¨l,ÿ¥j+ÿ¡g*ÿžf*ÿšc)ÿ—a(ÿ“_(ÿ�]'ÿ‹Z&ÿ‡X%ÿ„V%ÿS$ÿ{Q#ÿwN"ÿsL"ÿpJ!ÿkG ÿhF ÿdCÿaAÿ^?ÿZ=ÿW;ÿT9ÿQ8ÿO6ÿL5ÿJ3ÿG2ÿE1ÿC/ÿA.ÿ@-ÿ>,ÿ<+ÿ;+ÿ:*ÿ9)ÿ7(ÿ7(ÿ6'ÿ6'ÿ6'ÿ6'ÿ5'ÿ5'ÿF2ÿhIÿÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡ŽˆÿÿuR"ÿX?ÿJ5ÿK6ÿM6ÿM6ÿM6ÿM6ÿN7ÿO8ÿP8ÿR9ÿS:ÿU;ÿX=ÿZ>ÿ\?ÿ^AÿaBÿdDÿgFÿjH ÿmI ÿqL!ÿtN"ÿxP"ÿ{R#ÿT$ÿƒV$ÿ‡X%ÿ‹[&ÿ�^'ÿ“`(ÿ˜b(ÿ›d)ÿŸg*ÿ£i+ÿ§l+ÿ¬n,ÿ¯p-ÿ³r.ÿ¶t.ÿ¹v/ÿ½x0ÿÀz0ÿÂ{0ÿÄ|1ÿÆ~1ÿÇ~2ÿÉ2ÿÉ€2ÿÊ€2ÿË€2ÿË€2ÿË€2ÿÉ€2ÿÈ2ÿÇ~1ÿÆ}1ÿÃ|1ÿÂ{0ÿ¿z0ÿ¼x/ÿ¹v/ÿ¶t.ÿ³s.ÿ¯p-ÿ¬n,ÿ§l+ÿ£i+ÿ g*ÿ›d)ÿ˜b(ÿ“`(ÿ�]'ÿ‹[&ÿ‡X%ÿƒV$ÿT$ÿ|R#ÿxP"ÿtN"ÿqL!ÿmI ÿjH ÿgFÿdDÿbCÿ^Aÿ\?ÿY>ÿX=ÿU;ÿS:ÿR9ÿP8ÿO8ÿN7ÿM6ÿK6ÿJ5ÿJ5ÿI4ÿI4ÿI4ÿI4ÿH3ÿG3ÿV=ÿtQ!ÿÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿ( ÿ( ÿÿ„]$ÿvS"ÿlK ÿmL ÿnL ÿoM!ÿpN!ÿqN!ÿrO!ÿsO"ÿuP"ÿvQ"ÿxR"ÿzS#ÿ{T#ÿ~U$ÿ€W$ÿ‚X$ÿ„Y%ÿ‡Z%ÿ‰\&ÿŒ]&ÿŽ_'ÿ‘`'ÿ”b(ÿ—d(ÿše)ÿžg*ÿ¡i*ÿ¤k+ÿ§m+ÿªn,ÿ­p,ÿ°q-ÿ³s.ÿ¶u.ÿ¹w/ÿ¼x/ÿ¾y0ÿÁ{0ÿÃ|1ÿÅ}1ÿÇ~1ÿÈ2ÿÊ€2ÿË�2ÿÌ�2ÿÍ‚3ÿÍ‚3ÿÍ‚3ÿÍ‚3ÿÍ‚3ÿÍ‚3ÿÌ�2ÿË�2ÿÊ€2ÿÈ2ÿÇ~1ÿÅ}1ÿÃ|1ÿÁ{0ÿ¾y0ÿ¼x/ÿ¹w/ÿ¶u.ÿ³s.ÿ°q-ÿ­p-ÿªn,ÿ§m+ÿ£j+ÿ i*ÿžg*ÿše)ÿ—d(ÿ”b(ÿ’a'ÿ�_'ÿŒ]&ÿ‰\&ÿ‡Z%ÿ„Y%ÿ‚X$ÿ€W$ÿ~U$ÿ{T#ÿzS#ÿxR"ÿvQ"ÿuP"ÿsO"ÿrO!ÿqN!ÿpN!ÿoM!ÿnL ÿmL ÿlK ÿlK ÿkK ÿjJ ÿjJ ÿtR"ÿ‚\#ÿÿ( ÿ( ÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ( ÿkI*ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿkI*ÿ( ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ)ÿjH)ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿjH)ÿ)ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ)ÿiG(ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿiG(ÿ)ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ)ÿhF(ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿhF(ÿ)ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ)ÿgE'ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿgE'ÿ)ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ)ÿfD'ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿfD'ÿ)ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ)ÿeC&ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿeC&ÿ)ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ)ÿdB&ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿdB&ÿ)ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ)ÿcA%ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿcA%ÿ)ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ)ÿb@$ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿb@$ÿ)ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ)ÿa?$ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿa?$ÿ)ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ)ÿ`>#ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ`>#ÿ)ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ)ÿ_=#ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ_=#ÿ( ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ( ÿ^<"ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ^<"ÿ( ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ( ÿ];"ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ];"ÿ( ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿ\:!ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ\:!ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ,ÿ[9!ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ[9!ÿ.ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ,ÿ[8 ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ[8 ÿ,ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ,ÿZ7 ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿZ7 ÿ,ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ)ÿY6 ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿY6 ÿ.ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ.ÿX5ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿX5ÿ0ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ0ÿX5ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿX5ÿ-ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ.ÿW4ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿW4ÿ0ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ.ÿV3ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿV3ÿ0ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ-ÿL-ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿV3ÿL-ÿ-ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ.ÿ.ÿ.ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ0ÿ.ÿ-ÿ-ÿ.ÿ.ÿ0ÿ.ÿ.ÿ.ÿ-ÿ-ÿ.ÿ-ÿ-ÿ-ÿ.ÿ.ÿ0ÿ0ÿ0ÿ0ÿ0ÿ1ÿ1ÿ0ÿ0ÿ0ÿ.ÿ.ÿ.ÿ.ÿ0ÿ0ÿ0ÿ0ÿ.ÿ-ÿ0ÿ0ÿ0ÿ0ÿ.ÿ-ÿ-ÿ-ÿ-ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ1ÿ1ÿ1ÿ1ÿ0ÿ0ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ2!ÿ0ÿ0ÿ1ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ1!ÿ/ÿ.ÿ.ÿ.ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ0ÿ0ÿ0ÿ.ÿ.ÿ-ÿ-ÿ-ÿ-ÿ.ÿ.ÿ.ÿ.ÿ-ÿ-ÿ-ÿ.ÿ.ÿ-ÿ-ÿ.ÿ0ÿ0ÿ.ÿ.ÿ0ÿ0ÿ0ÿ1ÿ1ÿ1ÿ0ÿ0ÿ0ÿ0ÿ0ÿ.ÿ.ÿ0ÿ0ÿ0ÿ1ÿ1ÿ1ÿ0ÿ.ÿ0ÿ0ÿ1ÿ1ÿ0ÿ0ÿ0ÿ0ÿ.ÿ.ÿ-ÿ.ÿ-ÿ-ÿ.ÿ.ÿ.ÿ.ÿ-ÿ.ÿ.ÿ0ÿ0ÿ1ÿ1ÿ1ÿ1ÿ0ÿ0ÿ.ÿ0ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ0ÿ0ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ0 ÿ/ÿ.ÿ.ÿ.ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ0ÿ0ÿ0ÿ0ÿ0ÿ.ÿ.ÿ.ÿ.ÿ-ÿ-ÿ0ÿ0ÿ.ÿ.ÿ0ÿ1ÿ1ÿ.ÿ0ÿ1ÿ1ÿ1ÿ0ÿ0ÿ1ÿ1ÿ0ÿ1ÿ1ÿ1ÿ1ÿ0ÿ0ÿ0ÿ.ÿ.ÿ0ÿ0ÿ0ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ0ÿ0ÿ1ÿ1ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ.ÿ.ÿ0ÿ0ÿ0ÿ0ÿ0ÿ1ÿ1ÿ1ÿ0ÿ1ÿ1ÿ1ÿ0ÿ1ÿ1ÿ1ÿ1ÿ1ÿ2!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ2!ÿ1 ÿ2!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ3!ÿ/ÿ.ÿ.ÿ.ÿ.ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ +ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ +ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿÿ©y9ÿŸv@ÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜rAÿ˜q@ÿ—m8ÿžp5ÿ©w6ÿÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿÿšr=ÿ†e>ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ|^=ÿ{];ÿ‚]1ÿ˜l2ÿÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡ŽˆÿÿŒh;ÿsW8ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿºïûÿfO7ÿfO7ÿºïûÿfO7ÿfO7ÿfO7ÿºïûÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿºïûÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿºïûÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿºïûÿfO7ÿºïûÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿfO7ÿlM+ÿˆ`.ÿÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿÿ„c7ÿiQ5ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿºïûÿ[H3ÿºïûÿ[H3ÿ[H3ÿ[H3ÿºïûÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿºïûÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿºïûÿ[H3ÿ[H3ÿºïûÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿ[H3ÿaF'ÿZ*ÿÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿÿ}]4ÿ`J/ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿR@.ÿR@.ÿºïûÿR@.ÿºïûÿR@.ÿR@.ÿR@.ÿºïûÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿºïûÿR@.ÿR@.ÿR@.ÿR@.ÿºïûÿºïûÿºïûÿºïûÿR@.ÿR@.ÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿR@.ÿW?!ÿwT&ÿÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡ŽˆÿÿuY1ÿXD-ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿºïûÿºïûÿI:*ÿI:*ÿI:*ÿºïûÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿºïûÿºïûÿºïûÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿI:*ÿºïûÿI:*ÿI:*ÿºïûÿI:*ÿI:*ÿºïûÿI:*ÿI:*ÿI:*ÿI:*ÿºïûÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿI:*ÿN8ÿoO#ÿÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡ŽˆÿÿpU.ÿQ@)ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿºïûÿ@5&ÿºïûÿ@5&ÿ@5&ÿ@5&ÿºïûÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿºïûÿºïûÿ@5&ÿ@5&ÿ@5&ÿºïûÿºïûÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿºïûÿ@5&ÿ@5&ÿºïûÿ@5&ÿºïûÿ@5&ÿ@5&ÿºïûÿ@5&ÿ@5&ÿºïûÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿºïûÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿ@5&ÿF3ÿiK ÿÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡ŽˆÿÿmR.ÿM='ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿºïûÿ=2%ÿ=2%ÿºïûÿ=2%ÿºïûÿºïûÿºïûÿºïûÿºïûÿ=2%ÿ=2%ÿºïûÿºïûÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿºïûÿºïûÿ=2%ÿ=2%ÿ=2%ÿºïûÿ=2%ÿ=2%ÿºïûÿ=2%ÿºïûÿ=2%ÿ=2%ÿºïûÿ=2%ÿ=2%ÿºïûÿºïûÿºïûÿºïûÿ=2%ÿºïûÿ=2%ÿ=2%ÿºïûÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿB0ÿfHÿÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡ŽˆÿÿmR.ÿM='ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿºïûÿ=2%ÿ>2%ÿ>2%ÿ>2%ÿ>2%ÿ>2%ÿ=2%ÿ=2%ÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿ>2%ÿ>2%ÿ>2%ÿ>2%ÿ>2%ÿºïûÿ>2%ÿ>2%ÿºïûÿ>2%ÿºïûÿ>2%ÿ>2%ÿºïûÿ>2%ÿ=2%ÿºïûÿ=2%ÿ=2%ÿºïûÿ=2%ÿºïûÿ=2%ÿ=2%ÿºïûÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿ=2%ÿB0ÿfHÿÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡ŽˆÿÿfHÿB0ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ1$ÿ1$ÿ1$ÿ1$ÿ1$ÿ1$ÿ1$ÿ1$ÿ1$ÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿ1%ÿ1%ÿ2%ÿºïûÿ2%ÿ2%ÿºïûÿ2%ÿ2%ÿºïûÿ2%ÿ2%ÿ2%ÿ2%ÿ2%ÿºïûÿ2%ÿ2%ÿºïûÿ2%ÿºïûÿ1%ÿ1%ÿºïûÿ1%ÿ1%ÿºïûÿ1%ÿ1%ÿºïûÿ1%ÿºïûÿ1$ÿºïûÿ1%ÿ1$ÿ1$ÿ1$ÿ1$ÿ1$ÿ1$ÿ1$ÿ1$ÿ1$ÿ1$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿB0ÿfHÿÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡ŽˆÿÿfHÿB0ÿ0$ÿ0$ÿ1$ÿ1$ÿ1$ÿ1$ÿ1$ÿ1$ÿ1$ÿ1$ÿ1$ÿ1$ÿ1$ÿ1$ÿ1$ÿ1%ÿ1%ÿ1%ÿ1%ÿ2%ÿ2%ÿ2%ÿ2%ÿ2%ÿ2%ÿ3&ÿ3&ÿ3&ÿ4&ÿ4&ÿ4&ÿ4&ÿ4'ÿºïûÿ5'ÿºïûÿ5'ÿ6'ÿ5'ÿ6'ÿ6'ÿ6'ÿ6'ÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿ7(ÿ6(ÿ6(ÿ7(ÿ7(ÿºïûÿ6(ÿ6(ÿºïûÿ6(ÿºïûÿ6'ÿ6'ÿºïûÿ6'ÿ5'ÿºïûÿ5'ÿ4'ÿºïûÿ4'ÿ4&ÿºïûÿ4&ÿ4&ÿºïûÿ3&ÿ2%ÿ2%ÿ2%ÿ2%ÿ2%ÿ2%ÿ2%ÿ2%ÿ1%ÿ1%ÿ1%ÿ1%ÿ1$ÿ1$ÿ1$ÿ0$ÿ0$ÿ0$ÿ0$ÿ1$ÿ1$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿ0$ÿB0ÿfHÿÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡ŽˆÿÿfHÿC0ÿ1$ÿ1$ÿ1%ÿ1%ÿ1%ÿ1%ÿ1%ÿ1%ÿ1%ÿ1%ÿ2%ÿ2%ÿ2%ÿ2%ÿ2%ÿ3&ÿ3&ÿ4&ÿ4&ÿ4&ÿ4'ÿ5'ÿ6'ÿ6'ÿ6(ÿ7(ÿ7(ÿ8)ÿ8)ÿ9)ÿ9*ÿºïûÿºïûÿ;*ÿ;+ÿ<+ÿºïûÿ<+ÿºïûÿ=,ÿ=,ÿ>,ÿ>-ÿºïûÿ>-ÿ>-ÿºïûÿ?-ÿ?-ÿºïûÿ@-ÿ@-ÿ@-ÿ?-ÿºïûÿ?-ÿ?-ÿ?-ÿºïûÿ>-ÿºïûÿ=,ÿ=,ÿºïûÿ<+ÿ<+ÿºïûÿ;+ÿºïûÿºïûÿ9*ÿºïûÿ9)ÿºïûÿ8)ÿºïûÿ7(ÿ6(ÿ6'ÿ6'ÿ5'ÿ5'ÿ4'ÿ4&ÿ4&ÿ3&ÿ3&ÿ2%ÿ2%ÿ2%ÿ2%ÿ2%ÿ1%ÿ1%ÿ1%ÿ1%ÿ1%ÿ1%ÿ1$ÿ1$ÿ1$ÿ1$ÿ1$ÿ1$ÿ1$ÿ1$ÿB0ÿfHÿÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡ŽˆÿÿgHÿC1ÿ2%ÿ2%ÿ2%ÿ2%ÿ2%ÿ2%ÿ2%ÿ2%ÿ3&ÿ4&ÿ4'ÿ5'ÿ5'ÿ6'ÿ7(ÿ7(ÿ8)ÿ9)ÿ9)ÿ:*ÿ;*ÿ<+ÿ=,ÿ=,ÿ>-ÿ?-ÿA.ÿA.ÿC/ÿºïûÿºïûÿF1ÿºïûÿH2ÿºïûÿJ3ÿK4ÿºïûÿM5ÿM6ÿN6ÿO7ÿP7ÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿºïûÿS9ÿR8ÿR8ÿR8ÿºïûÿR8ÿQ8ÿP7ÿºïûÿP7ÿºïûÿºïûÿºïûÿºïûÿK4ÿK4ÿºïûÿI3ÿH3ÿG2ÿºïûÿE0ÿD0ÿC/ÿºïûÿºïûÿ@-ÿ>-ÿ>,ÿ<+ÿ;+ÿ;*ÿ:*ÿ9)ÿ8)ÿ7(ÿ7(ÿ7(ÿ6'ÿ5'ÿ4'ÿ4'ÿ4&ÿ4&ÿ3&ÿ2%ÿ2%ÿ2%ÿ2%ÿ1%ÿ1%ÿ1%ÿ1%ÿ1%ÿ1%ÿ1%ÿC0ÿfHÿÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡ŽˆÿÿhIÿE2ÿ3&ÿ4&ÿ4'ÿ4'ÿ4'ÿ4'ÿ5'ÿ6'ÿ6(ÿ7(ÿ8)ÿ9)ÿ9*ÿ;*ÿ<+ÿ<+ÿ>-ÿ?-ÿA.ÿB/ÿD0ÿE1ÿF1ÿH3ÿJ4ÿK4ÿN6ÿO7ÿQ8ÿS9ÿU:ÿW;ÿºïûÿºïûÿ\>ÿ^@ÿ_@ÿaAÿºïûÿºïûÿfDÿgEÿiF ÿºïûÿkG ÿlH ÿlH ÿmI!ÿmI!ÿºïûÿnI!ÿnI!ÿnI!ÿºïûÿmI!ÿlH ÿºïûÿºïûÿjG ÿhF ÿºïûÿfDÿdCÿºïûÿaAÿºïûÿ^@ÿ\>ÿZ=ÿºïûÿW;ÿU:ÿS9ÿQ8ÿO7ÿºïûÿK4ÿJ4ÿH3ÿF1ÿE1ÿC0ÿB/ÿ@.ÿ?-ÿ>-ÿ<+ÿ<+ÿ;*ÿ9*ÿ9)ÿ8)ÿ7(ÿ6(ÿ6'ÿ5'ÿ4'ÿ4&ÿ4&ÿ3&ÿ3&ÿ3&ÿ3&ÿ3&ÿ2%ÿ2%ÿD1ÿfHÿÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡ŽˆÿÿiJ ÿG3ÿ6(ÿ6(ÿ7(ÿ7(ÿ7(ÿ7(ÿ8)ÿ9*ÿ:*ÿ;+ÿ=,ÿ>,ÿ?-ÿA.ÿC/ÿD0ÿF1ÿH3ÿJ4ÿM5ÿO6ÿQ8ÿS9ÿV;ÿY=ÿ[>ÿ_@ÿaAÿdCÿgEÿiF ÿmI!ÿpJ!ÿsL"ÿuM"ÿxO#ÿ{Q#ÿ}R$ÿ€T$ÿ‚U%ÿ…W%ÿ‡X%ÿ‰Y&ÿŠZ&ÿŒ[&ÿŽ\'ÿ�]'ÿ�]'ÿ�]'ÿ‘^'ÿ‘^'ÿ‘^'ÿ‘^'ÿ�]'ÿ�]'ÿ�]'ÿŽ\'ÿŒ[&ÿŠZ&ÿ‰Y&ÿ‡X%ÿ…W%ÿ‚U%ÿ€T$ÿ}R$ÿ{Q#ÿxO#ÿuM"ÿsL"ÿpJ!ÿmI!ÿjG ÿgEÿdCÿaAÿ_@ÿ[>ÿY<ÿV;ÿS9ÿQ8ÿO6ÿM5ÿJ3ÿH2ÿF1ÿD0ÿC/ÿA.ÿ?-ÿ>,ÿ<+ÿ;+ÿ:*ÿ9*ÿ8)ÿ7(ÿ6(ÿ6'ÿ5'ÿ4'ÿ4'ÿ4'ÿ4'ÿ4&ÿ3&ÿE2ÿfHÿÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡ŽˆÿÿjJ ÿI4ÿ8)ÿ9)ÿ:*ÿ:*ÿ:*ÿ:*ÿ;+ÿ<+ÿ>,ÿ@-ÿA.ÿC/ÿE1ÿG2ÿJ3ÿL5ÿO6ÿQ8ÿT9ÿW;ÿZ=ÿ^?ÿaAÿdCÿhF ÿkG ÿpJ!ÿsL"ÿwN"ÿ{Q#ÿS$ÿ„V%ÿ‡X%ÿ‹Z&ÿ�]'ÿ“_(ÿ—a(ÿ›d)ÿžf*ÿ¡g*ÿ¥j+ÿ¨l,ÿªm,ÿ­o-ÿ¯p-ÿ°q-ÿ²q-ÿ´s.ÿ´s.ÿµs.ÿµs.ÿµt.ÿµt.ÿ´s.ÿ´s.ÿ²q-ÿ°q-ÿ®o-ÿ¬n,ÿªm,ÿ¨l,ÿ¥j+ÿ¡g*ÿžf*ÿšc)ÿ—a(ÿ“_(ÿ�]'ÿ‹Z&ÿ‡X%ÿ„V%ÿS$ÿ{Q#ÿwN"ÿsL"ÿpJ!ÿkG ÿhF ÿdCÿaAÿ^?ÿZ=ÿW;ÿT9ÿQ8ÿO6ÿL5ÿJ3ÿG2ÿE1ÿC/ÿA.ÿ@-ÿ>,ÿ<+ÿ;+ÿ:*ÿ9)ÿ7(ÿ7(ÿ6'ÿ6'ÿ6'ÿ6'ÿ5'ÿ5'ÿF2ÿfHÿÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡ŽˆÿÿuR"ÿX?ÿJ5ÿK6ÿM6ÿM6ÿM6ÿM6ÿN7ÿO8ÿP8ÿR9ÿS:ÿU;ÿX=ÿZ>ÿ\?ÿ^AÿaBÿdDÿgFÿjH ÿmI ÿqL!ÿtN"ÿxP"ÿ{R#ÿT$ÿƒV$ÿ‡X%ÿ‹[&ÿ�^'ÿ“`(ÿ˜b(ÿ›d)ÿŸg*ÿ£i+ÿ§l+ÿ¬n,ÿ¯p-ÿ³r.ÿ¶t.ÿ¹v/ÿ½x0ÿÀz0ÿÂ{0ÿÄ|1ÿÆ~1ÿÇ~2ÿÉ2ÿÉ€2ÿÊ€2ÿË€2ÿË€2ÿË€2ÿÉ€2ÿÈ2ÿÇ~1ÿÆ}1ÿÃ|1ÿÂ{0ÿ¿z0ÿ¼x/ÿ¹v/ÿ¶t.ÿ³s.ÿ¯p-ÿ¬n,ÿ§l+ÿ£i+ÿ g*ÿ›d)ÿ˜b(ÿ“`(ÿ�]'ÿ‹[&ÿ‡X%ÿƒV$ÿT$ÿ|R#ÿxP"ÿtN"ÿqL!ÿmI ÿjH ÿgFÿdDÿbCÿ^Aÿ\?ÿY>ÿX=ÿU;ÿS:ÿR9ÿP8ÿO8ÿN7ÿM6ÿK6ÿJ5ÿJ5ÿI4ÿI4ÿI4ÿI4ÿH3ÿG3ÿV=ÿqP!ÿÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿÿ„]$ÿvS"ÿlK ÿmL ÿnL ÿnL ÿnL ÿnL ÿoM!ÿpN!ÿqN!ÿrO!ÿsO"ÿuP"ÿvQ"ÿxR"ÿzS#ÿ{T#ÿ~U$ÿ€W$ÿ‚X$ÿ„Y%ÿ‡Z%ÿ‰\&ÿŒ]&ÿŽ_'ÿ‘`'ÿ”b(ÿ—d(ÿše)ÿžg*ÿ¡i*ÿ¤k+ÿ§m+ÿªn,ÿ­p,ÿ°q-ÿ³s.ÿ¶u.ÿ¹w/ÿ¼x/ÿ¾y0ÿÁ{0ÿÃ|1ÿÅ}1ÿÇ~1ÿÈ2ÿÊ€2ÿË�2ÿÌ�2ÿÍ‚3ÿÍ‚3ÿÍ‚3ÿÍ‚3ÿÍ‚3ÿÍ‚3ÿÌ�2ÿË�2ÿÊ€2ÿÈ2ÿÇ~1ÿÅ}1ÿÃ|1ÿÁ{0ÿ¾y0ÿ¼x/ÿ¹w/ÿ¶u.ÿ³s.ÿ°q-ÿ­p-ÿªn,ÿ§m+ÿ£j+ÿ i*ÿžg*ÿše)ÿ—d(ÿ”b(ÿ’a'ÿ�_'ÿŒ]&ÿ‰\&ÿ‡Z%ÿ„Y%ÿ‚X$ÿ€W$ÿ~U$ÿ{T#ÿzS#ÿxR"ÿvQ"ÿuP"ÿsO"ÿrO!ÿqN!ÿpN!ÿoM!ÿnL ÿmL ÿlK ÿlK ÿkK ÿkK ÿkK ÿkK ÿjJ ÿjJ ÿtR"ÿ€[#ÿÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ0ÿwV0ÿD) +ÿD) +ÿD) +ÿD) +ÿD) +ÿD) +ÿD) +ÿD) +ÿD) +ÿD) +ÿD) +ÿD) +ÿD) +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿB' +ÿD) +ÿD) +ÿD) +ÿD) +ÿD) +ÿD) +ÿD) +ÿD) +ÿD) +ÿD) +ÿD) +ÿD) +ÿwV0ÿ0ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ.ÿwV0ÿD) +ÿD) +ÿD) +ÿD) +ÿD) +ÿD) +ÿD) +ÿD) +ÿD) +ÿD) +ÿD) +ÿD) +ÿD) +ÿA& +ÿA& +ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿB' +ÿD) +ÿD) +ÿD) +ÿD) +ÿD) +ÿD) +ÿD) +ÿD) +ÿD) +ÿD) +ÿD) +ÿD) +ÿwV0ÿ1ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ0ÿvU0ÿD( +ÿD( +ÿD( +ÿD( +ÿD( +ÿD( +ÿD( +ÿD( +ÿD( +ÿD( +ÿD( +ÿD( +ÿD( +ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿA' ÿD( +ÿD( +ÿD( +ÿD( +ÿD( +ÿD( +ÿD( +ÿD( +ÿD( +ÿD( +ÿD( +ÿD( +ÿvU0ÿ1ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ1ÿvU0ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿA' ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿvU0ÿ1ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ0ÿuU0ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿ@& ÿA' ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿuU0ÿ.ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ1ÿuT/ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ@& ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿC( +ÿuT/ÿ.ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ1ÿuT/ÿB' +ÿB' +ÿB' +ÿB' +ÿB' +ÿB' +ÿB' +ÿB' +ÿB' +ÿB' +ÿB' +ÿB' +ÿB' +ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ@& ÿB' +ÿB' +ÿB' +ÿB' +ÿB' +ÿB' +ÿB' +ÿB' +ÿB' +ÿB' +ÿB' +ÿB' +ÿuT/ÿ0ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ1ÿtS/ÿB' +ÿB' +ÿB' +ÿB' +ÿB' +ÿB' +ÿB' +ÿB' +ÿB' +ÿB' +ÿB' +ÿB' +ÿB' +ÿ?% ÿ?% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ>% ÿ@& ÿB' +ÿB' +ÿB' +ÿB' +ÿB' +ÿB' +ÿB' +ÿB' +ÿB' +ÿB' +ÿB' +ÿB' +ÿtS/ÿ-ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ0ÿtS/ÿA' +ÿA' +ÿA' +ÿA' +ÿA' +ÿA' +ÿA' +ÿA' +ÿA' +ÿA' +ÿA' +ÿA' +ÿA' +ÿ>% ÿ>% ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ?& ÿA' +ÿA' +ÿA' +ÿA' +ÿA' +ÿA' +ÿA' +ÿA' +ÿA' +ÿA' +ÿA' +ÿA' +ÿtS/ÿ.ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ-ÿsS/ÿA' +ÿA' +ÿA' +ÿA' +ÿA' +ÿA' +ÿA' +ÿA' +ÿA' +ÿA' +ÿA' +ÿA' +ÿA' +ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ>% ÿA' +ÿA' +ÿA' +ÿA' +ÿA' +ÿA' +ÿA' +ÿA' +ÿA' +ÿA' +ÿA' +ÿA' +ÿsS/ÿ.ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ-ÿsR.ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ>% ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿA& +ÿsR.ÿ.ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ.ÿsR.ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ>% ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿsR.ÿ1ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ0ÿrQ.ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ=$ ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿ@& +ÿrQ.ÿ1ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ.ÿrQ.ÿ@% ÿ@% ÿ@% ÿ@% ÿ@% ÿ@% ÿ@% ÿ@% ÿ@% ÿ@% ÿ@% ÿ@% ÿ@% ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ=$ ÿ@% ÿ@% ÿ@% ÿ@% ÿ@% ÿ@% ÿ@% ÿ@% ÿ@% ÿ@% ÿ@% ÿ@% ÿrQ.ÿ0ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ.ÿqP.ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ=$ ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿqP.ÿ.ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ-ÿqP-ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ=$ ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿ?% ÿqP-ÿ.ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿqP-ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ<# ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿqP-ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ.ÿpO-ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ<# ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿ>$ ÿpO-ÿ.ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ,ÿpO-ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ<# ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿpO-ÿ& +ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ,ÿoN,ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ:! ÿ:! ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ:" ÿ;" ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿ=$ ÿoN,ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ,ÿoN,ÿ=# ÿ=# ÿ=# ÿ=# ÿ=# ÿ=# ÿ=# ÿ=# ÿ=# ÿ=# ÿ=# ÿ=# ÿ=# ÿ9! ÿ9! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:" ÿ=# ÿ=# ÿ=# ÿ=# ÿ=# ÿ=# ÿ=# ÿ=# ÿ=# ÿ=# ÿ=# ÿ=# ÿoN,ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ,ÿnM,ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ:" ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿnM,ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ,ÿnM,ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ:" ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿ<# ÿnM,ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ)ÿnL,ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ9! ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿnL,ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ(ÿmL+ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ9! ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿmL+ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ*ÿmK+ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ9! ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿ;" ÿmK+ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ.ÿlK+ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ7 ÿ7 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿlK+ÿ& +ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ0ÿlJ+ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ8 ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿ:! ÿlJ+ÿ& +ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ0ÿkJ*ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ8 ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿ9! ÿkJ*ÿ& +ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ0ÿkI*ÿ9 ÿ9 ÿ9 ÿ9 ÿ9 ÿ9 ÿ9 ÿ9 ÿ9 ÿ9 ÿ9 ÿ9 ÿ9 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ8 ÿ9 ÿ9 ÿ9 ÿ9 ÿ9 ÿ9 ÿ9 ÿ9 ÿ9 ÿ9 ÿ9 ÿ9 ÿkI*ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ0ÿjI*ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ6 ÿ6 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿjI*ÿ& +ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ0ÿjI*ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ7 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿ8 ÿjI*ÿ*ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ0ÿiH)ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿiH)ÿ*ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ-ÿiH)ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿiH)ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ0ÿiG)ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿiG)ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ0ÿhG)ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿhG)ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ1ÿhF)ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿhF)ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ1ÿgF(ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿgF(ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ1ÿgE(ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ4ÿ4ÿ4ÿ5 ÿ5 ÿ5 ÿgE(ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ1ÿfE(ÿ4ÿ4ÿ4ÿ)ÿ)ÿ)ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿÿÿÿÿ4ÿ4ÿfE(ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ0ÿfD(ÿ4ÿ4ÿ,ÿ41(ÿ41(ÿ41(ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ‚¼Æÿ‚¼Æÿ‚¼Æÿ2EFÿ%ÿ4ÿfD(ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ.ÿeD'ÿ3ÿ3ÿ+ÿ31(ÿ31(ÿ31(ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ„½Çÿ„½Çÿ„½Çÿ2EFÿ$ÿ3ÿeD'ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ0ÿeC'ÿ3ÿ3ÿ3ÿ(ÿ(ÿ(ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿÿÿÿÿ3ÿ3ÿeC'ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ1ÿdC'ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ3ÿ3ÿ3ÿdC'ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ1ÿdB'ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿdB'ÿ*ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ0ÿdB&ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿdB&ÿ*ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ0ÿcA&ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿcA&ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ.ÿcA&ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿcA&ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ-ÿb@&ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿb@&ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ1ÿb@%ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿb@%ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ0ÿa@%ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿa@%ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ-ÿa?%ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ.ÿ.ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ.ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿa?%ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ-ÿa?%ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ.ÿ.ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ.ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿ/ÿa?%ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿ`>%ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ`>%ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ.ÿ`>$ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ-ÿ-ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ-ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ`>$ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ.ÿ_=$ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ-ÿ-ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ-ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ_=$ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ*ÿ_=$ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ_=$ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ*ÿ_<$ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ_<$ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ,ÿ^<$ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ^<$ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ,ÿ^<#ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ^<#ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿ];#ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ];#ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿ];#ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ5ÿ5ÿ6 ÿ6 ÿ6 ÿ6 ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ];#ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿ]:#ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ4ÿ4ÿ5 ÿ5 ÿ5 ÿ5 ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5 ÿ5ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ7 ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ]:#ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿ\:#ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ4ÿ4ÿ5ÿ5ÿ5ÿ5ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ5ÿ5ÿ5ÿ5ÿ5ÿ5ÿ2ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ\:#ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿ\:"ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ6 ÿ6 ÿ6 ÿ6 ÿ6 ÿ0ÿ%ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ&ÿ ÿ+ÿ6 ÿ6 ÿ6 ÿ6 ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ\:"ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿ[9"ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ5 ÿ5 ÿ5 ÿ3ÿ&ÿÿ.>@ÿ3ÿ3ÿ4ÿ4ÿ4ÿ4ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ4ÿ4ÿ4ÿ4ÿ4ÿ4ÿ*1/ÿUqÿÿ ÿ1ÿ5 ÿ5 ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ[9"ÿ(ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿ[9"ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ5 ÿ4ÿ'ÿ ÿ5>9ÿDcgÿ8W_ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ% ÿ)€«ÿ?•¼ÿ+Tdÿ +ÿÿ4ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ[9"ÿ,!ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ,ÿ[9"ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿÿ8:2ÿXnlÿSorÿEdjÿ" ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ+ÿ !,ÿ@˜ÀÿY¯Ðÿg¯Æÿ5QXÿÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ[9"ÿ(ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿZ8"ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ41(ÿbqjÿj�}ÿ_xwÿSorÿ,1.ÿ%ÿ2ÿ2ÿ3ÿ3ÿ3ÿ3ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ ÿ>OÿY¯ÐÿrÂÛÿ‰Ôæÿ‚¼Æÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿZ8"ÿ,!ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ,ÿZ8"ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ31(ÿbrkÿi�}ÿ^xwÿRorÿ+1-ÿ$ÿ2ÿ2ÿ3ÿ3ÿ3ÿ3ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ2ÿ ÿ>OÿY¯ÐÿrÂÛÿ‰Ôæÿ„½Çÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿZ8"ÿ(ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿZ8!ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿÿ7:2ÿWnlÿRorÿDdjÿ! ÿ2ÿ2ÿ3ÿ3ÿ3ÿ3ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ3ÿ3ÿ3ÿ3ÿ3ÿ3ÿ+ÿ !,ÿ@˜ÀÿY¯Ðÿg¯Æÿ5QXÿÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿZ8!ÿ(ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿY7!ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ3ÿ2ÿ&ÿ ÿ4=9ÿCbgÿ7V_ÿ1ÿ1ÿ2ÿ2ÿ2ÿ2ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ# ÿ)€«ÿ?•¼ÿ,Vfÿ +ÿÿ2ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿY7!ÿ(ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿY7!ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ2ÿ2ÿ2ÿ0ÿ$ÿÿ-=@ÿ0ÿ0ÿ2ÿ2ÿ2ÿ2ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ(//ÿVrÿÿ ÿ.ÿ2ÿ2ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿY7!ÿ(ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿY7!ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ2ÿ2ÿ2ÿ2ÿ2ÿ-ÿ"ÿ0ÿ0ÿ1ÿ1ÿ1ÿ1ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ#ÿ +ÿ(ÿ2ÿ2ÿ2ÿ2ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿY7!ÿ(ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿY6!ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ0ÿ0ÿ1ÿ1ÿ1ÿ1ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ.ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿY6!ÿ(ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿX6!ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ/ÿ/ÿ0ÿ0ÿ0ÿ0ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ1ÿ1ÿ1ÿ1ÿ1ÿ1ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿX6!ÿ(ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿX6 ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ/ÿ/ÿ0ÿ0ÿ0ÿ0ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ/ÿ0ÿ0ÿ0ÿ0ÿ0ÿ0ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿX6 ÿ(ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿX5 ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ'ÿ'ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ'ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿX5 ÿ(ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿX5 ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ'ÿ'ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ'ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿX5 ÿ(ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿW5 ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿW5 ÿ(ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿW5 ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿW5 ÿ(ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ*ÿW4 ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿW4 ÿ(ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿW4 ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿW4 ÿ(ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ,ÿV4 ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿV4 ÿ(ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ.ÿ`>$ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ-ÿ-ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ-ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ`>$ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ.ÿ_=$ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ-ÿ-ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ-ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ_=$ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ*ÿ_=$ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ_=$ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ*ÿ_<$ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ_<$ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ,ÿ^<$ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ^<$ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ,ÿ^<#ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ^<#ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿ];#ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ-ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ];#ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿ];#ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ];#ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿ]:#ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ]:#ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿ\:#ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ,ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ\:#ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿ\:"ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ\:"ÿ+ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿ[9"ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ[9"ÿ(ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿ[9"ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ[9"ÿ,!ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ,ÿ[9"ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ*ÿ*ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ*ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ[9"ÿ(ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿZ8"ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿZ8"ÿ,!ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ,ÿZ8"ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿZ8"ÿ(ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿZ8!ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ)ÿ)ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ)ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿZ8!ÿ(ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿY7!ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ)ÿ)ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ*ÿ)ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿY7!ÿ(ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿY7!ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿY7!ÿ(ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿY7!ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿY7!ÿ(ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿY6!ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ(ÿ(ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ(ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿY6!ÿ(ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿX6!ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ)ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿX6!ÿ(ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿX6 ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿX6 ÿ(ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿX5 ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ'ÿ'ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ'ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿX5 ÿ(ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ‡Žˆÿ+ÿX5 ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ'ÿ'ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ(ÿ'ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿX5 ÿ(ÿ‡Žˆÿ ÿMNNÿMNNÿ ÿ®®°ÿ+ÿW5 ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿW5 ÿ(ÿ®®°ÿ ÿMNNÿ‡Žˆÿ ÿ ÿ+ÿW5 ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿW5 ÿ(ÿ ÿ ÿ‡Žˆÿutrÿ,**ÿ ÿ*ÿW4 ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿ&ÿW4 ÿ(ÿ ÿ,**ÿutrÿ ÿMNNÿ ÿ+ÿW4 ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ'ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿW4 ÿ(ÿ ÿMNNÿ ÿ@pŒÿ ÿ,**ÿMNNÿutrÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿutrÿMNNÿ,**ÿ ÿ ÿ \ No newline at end of file diff --git a/client-patch/assets/combat_power_panel_skin_v2_preview.png b/client-patch/assets/combat_power_panel_skin_v2_preview.png new file mode 100644 index 0000000..4a3a2f4 Binary files /dev/null and b/client-patch/assets/combat_power_panel_skin_v2_preview.png differ diff --git a/client-patch/assets/combat_power_panel_skin_v2_source.png b/client-patch/assets/combat_power_panel_skin_v2_source.png new file mode 100644 index 0000000..a9a33ce Binary files /dev/null and b/client-patch/assets/combat_power_panel_skin_v2_source.png differ diff --git a/client-patch/assets/combat_power_panel_skin_v2_source_base.png b/client-patch/assets/combat_power_panel_skin_v2_source_base.png new file mode 100644 index 0000000..77d4a85 Binary files /dev/null and b/client-patch/assets/combat_power_panel_skin_v2_source_base.png differ diff --git a/client-patch/assets/combat_power_panel_skin_v2_source_original.png b/client-patch/assets/combat_power_panel_skin_v2_source_original.png new file mode 100644 index 0000000..a08c869 Binary files /dev/null and b/client-patch/assets/combat_power_panel_skin_v2_source_original.png differ diff --git a/client-patch/assets/combat_power_rank_icons_v3_preview.png b/client-patch/assets/combat_power_rank_icons_v3_preview.png new file mode 100644 index 0000000..92132d7 Binary files /dev/null and b/client-patch/assets/combat_power_rank_icons_v3_preview.png differ diff --git a/client-patch/assets/combat_power_rank_icons_v3_source.png b/client-patch/assets/combat_power_rank_icons_v3_source.png new file mode 100644 index 0000000..45f5587 Binary files /dev/null and b/client-patch/assets/combat_power_rank_icons_v3_source.png differ diff --git a/client-patch/assets/combat_power_rank_icons_v3_transparent.png b/client-patch/assets/combat_power_rank_icons_v3_transparent.png new file mode 100644 index 0000000..b893cce Binary files /dev/null and b/client-patch/assets/combat_power_rank_icons_v3_transparent.png differ diff --git a/client-patch/assets/combat_power_rank_tooltip_v2.bgra b/client-patch/assets/combat_power_rank_tooltip_v2.bgra new file mode 100644 index 0000000..c25f69c Binary files /dev/null and b/client-patch/assets/combat_power_rank_tooltip_v2.bgra differ diff --git a/client-patch/assets/combat_power_rank_tooltip_v2_preview.png b/client-patch/assets/combat_power_rank_tooltip_v2_preview.png new file mode 100644 index 0000000..205ef57 Binary files /dev/null and b/client-patch/assets/combat_power_rank_tooltip_v2_preview.png differ diff --git a/client-patch/assets/combat_power_rank_tooltip_v2_source.png b/client-patch/assets/combat_power_rank_tooltip_v2_source.png new file mode 100644 index 0000000..9f6fd84 Binary files /dev/null and b/client-patch/assets/combat_power_rank_tooltip_v2_source.png differ diff --git a/client-patch/assets/combat_rank_battle_pinnacle_v3.pbgra b/client-patch/assets/combat_rank_battle_pinnacle_v3.pbgra new file mode 100644 index 0000000..f1c3c49 Binary files /dev/null and b/client-patch/assets/combat_rank_battle_pinnacle_v3.pbgra differ diff --git a/client-patch/assets/combat_rank_battle_pinnacle_v3.png b/client-patch/assets/combat_rank_battle_pinnacle_v3.png new file mode 100644 index 0000000..750122b Binary files /dev/null and b/client-patch/assets/combat_rank_battle_pinnacle_v3.png differ diff --git a/client-patch/assets/combat_rank_conquer_v3.pbgra b/client-patch/assets/combat_rank_conquer_v3.pbgra new file mode 100644 index 0000000..4902651 Binary files /dev/null and b/client-patch/assets/combat_rank_conquer_v3.pbgra differ diff --git a/client-patch/assets/combat_rank_conquer_v3.png b/client-patch/assets/combat_rank_conquer_v3.png new file mode 100644 index 0000000..942f1cb Binary files /dev/null and b/client-patch/assets/combat_rank_conquer_v3.png differ diff --git a/client-patch/assets/combat_rank_explore_v3.pbgra b/client-patch/assets/combat_rank_explore_v3.pbgra new file mode 100644 index 0000000..9127716 Binary files /dev/null and b/client-patch/assets/combat_rank_explore_v3.pbgra differ diff --git a/client-patch/assets/combat_rank_explore_v3.png b/client-patch/assets/combat_rank_explore_v3.png new file mode 100644 index 0000000..f264029 Binary files /dev/null and b/client-patch/assets/combat_rank_explore_v3.png differ diff --git a/client-patch/assets/combat_rank_fearless_v3.pbgra b/client-patch/assets/combat_rank_fearless_v3.pbgra new file mode 100644 index 0000000..16d8a6e Binary files /dev/null and b/client-patch/assets/combat_rank_fearless_v3.pbgra differ diff --git a/client-patch/assets/combat_rank_fearless_v3.png b/client-patch/assets/combat_rank_fearless_v3.png new file mode 100644 index 0000000..b08d4ce Binary files /dev/null and b/client-patch/assets/combat_rank_fearless_v3.png differ diff --git a/client-patch/assets/combat_rank_heroic_v3.pbgra b/client-patch/assets/combat_rank_heroic_v3.pbgra new file mode 100644 index 0000000..caf37eb Binary files /dev/null and b/client-patch/assets/combat_rank_heroic_v3.pbgra differ diff --git a/client-patch/assets/combat_rank_heroic_v3.png b/client-patch/assets/combat_rank_heroic_v3.png new file mode 100644 index 0000000..f7645d9 Binary files /dev/null and b/client-patch/assets/combat_rank_heroic_v3.png differ diff --git a/client-patch/assets/combat_rank_martial_mastery_v3.pbgra b/client-patch/assets/combat_rank_martial_mastery_v3.pbgra new file mode 100644 index 0000000..3a0d804 Binary files /dev/null and b/client-patch/assets/combat_rank_martial_mastery_v3.pbgra differ diff --git a/client-patch/assets/combat_rank_martial_mastery_v3.png b/client-patch/assets/combat_rank_martial_mastery_v3.png new file mode 100644 index 0000000..0087401 Binary files /dev/null and b/client-patch/assets/combat_rank_martial_mastery_v3.png differ diff --git a/client-patch/assets/combat_rank_pioneer_v3.pbgra b/client-patch/assets/combat_rank_pioneer_v3.pbgra new file mode 100644 index 0000000..67e5ddd Binary files /dev/null and b/client-patch/assets/combat_rank_pioneer_v3.pbgra differ diff --git a/client-patch/assets/combat_rank_pioneer_v3.png b/client-patch/assets/combat_rank_pioneer_v3.png new file mode 100644 index 0000000..1c4bfc2 Binary files /dev/null and b/client-patch/assets/combat_rank_pioneer_v3.png differ diff --git a/client-patch/assets/seria_luck_base_cn.pbgra b/client-patch/assets/seria_luck_base_cn.pbgra new file mode 100644 index 0000000..f8ba7b1 Binary files /dev/null and b/client-patch/assets/seria_luck_base_cn.pbgra differ diff --git a/client-patch/assets/seria_luck_fill_blue.pbgra b/client-patch/assets/seria_luck_fill_blue.pbgra new file mode 100644 index 0000000..55c1898 --- /dev/null +++ b/client-patch/assets/seria_luck_fill_blue.pbgra @@ -0,0 +1,69 @@ +‡D °›NÉ›NÉšNÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉšNÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉšNÉ›NÉ›NÉšNÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉšNÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉšNÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉšNÉ›NÉ›NÉ›NÉšNÉšNÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NÉ›NɇD °¨H ÉÀSæÀSæÀSæÀRæÀRæÀS æÀSæÀSæÀSæÀSæÀSæÀSæÀSæÀSæÀSæÀSæÀSæÀR æÀS æÀSæÀSæÀRæÀSæÀSæÀRæÀSæÀRæÀSæÀSæÀSæÀSæÀSæÀSæÀSæÀSæÀSæÀRæÀS æÀS æÀSæÀRæÀSæÀSæÀRæÀS æÀSæÀSæÀSæÀSæÀSæÀSæÀSæÀSæÀSæÀSæÀSæÀR æÀS æÀSæÀSæÀRæÀSæÀSæÀSæÀSæÀSæÀRæÀRæÀS æÀSæÀSæÀSæÀSæÀSæÀSæÀSæÀSæÀSæÀSæÀSæÀSæÀSæÀSæÀSæÀSæÀSæÀRæÀSæÀSæÀSæÀSæÀSæÀRæÀSæÀS æÀSæÀSæÀSæ¨H ɹK ÉÓV +æÓV +æÓU æÓU æÓU æÓV æÓV +æÓV +æÓV +æÓV +æÓV æÓV æÓV +æÓV +æÓV +æÓV æÓV æÓV +æÓV +æÓV +æÓV +æÓV +æÓV +æÓV +æÓV æÓV +æÓU +æÓV +æÓV +æÓV æÓV æÓV +æÓV +æÓV +æÓV æÓV æÓV æÓV +æÓV +æÓV +æÓV +æÓV +æÓV +æÓU æÓV æÓV +æÓV +æÓV +æÓV +æÓV æÓV æÓV +æÓV +æÓV +æÓV æÓV æÓV +æÓV +æÓV +æÓV +æÓV +æÓV +æÓV +æÓV +æÓV +æÓU æÓU æÓU æÓV æÓV +æÓV +æÓV +æÓV +æÓV æÓV +æÓV +æÓV +æÓV +æÓV +æÓU +æÓV +æÓV æÓV +æÓV æÓV æÓV +æÓV +æÓV æÓV +æÓV +æÓV +æÓV +æÓV +æÓV +æÓV æÓV +æÓV +æÓV +æ¹K ÉÃTÉßaæßaæß`æß`æß`æß`æß`æß`æß`æß`æß`æß`æß`æßaæßaæßaæßaæß`æß`æß`æß`æß`æß`æß`æß`æß`æß`æß`æß`æß`æß`æß`æßaæßaæßaæßaæß`æß`æß`æß`æß`æß`æß`æß`æß`æß`æß`æß`æß`æß`æß`æß`æßaæßaæßaæßaæß`æß`æß`æß`æß`æß`æß`æßaæßaæß`æß`æß`æß`æß`æß`æß`æß`æß`æß`æß`æß`æßaæß`æß`æß`æß`æßaæßaæß`æß`æß`æß`æß`æß`æß`æß`æß`æß`æß`æß`æß`æß`æÃTÉÈ`ÉåoæåoæåoæånæånæånæånæånæånæånæånæånæånæåoæåoæåoæåoæånæånæånæånæånæånæånæånæånæånæånæånæånæånæånæåoæåoæåoæåoæånæånæånæånæånæånæånæånæånæånæånæånæånæånæånæånæåoæåoæåoæåoæånæånæånæånæånæånæånæåoæåoæåoæånæånæånæånæånæånæånæånæånæånæånæånæånæånæånæånæåoæåoæånæånæånæånæånæånæånæånæånæånæånæånæånæånæÈ`ÉÉoÉæææ~ææææææ~ææ~ææ~ææ~ææææ~ææ~ææ~ææ~ææ~ææ~ææææææææææææ~ææææææ~ææ~ææ~ææ~ææææææ~ææ~ææ~ææ~ææ~ææ~ææææ~ææææææææææææææ~ææ~ææ~ææ~ææææ~ææ~ææ~ææ~ææ~ææ~ææææææææææææ~ææææææææææ~ææææææ~ææ~ææ~ææ~ææææææææææææ~ææ~ææ~ææ~ææææ~ææææææææææææ~ææææææ~ææææææææ~ææ~æææææÉnÉÉ{Éæ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææŒææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææŒææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææŒææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�ææ�æÉ{ÉÉ…Éæ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜ææ˜æÉ…ÉÉ�Éæ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡ææ¡æÉ�Éɓɿ¨ææ¨ææ¨ææ¨ææ§ææ¨ææ¨ææ§ææ¨ææ¨ææ§ææ§ææ¨ææ¨ææ§ææ§ææ¨ææ¨ææ¨ææ¨ææ¨ææ¨ææ§ææ¨ææ¨ææ¨ææ¨ææ¨ææ¨ææ§ææ§ææ§ææ¨ææ§ææ§ææ§ææ¨ææ¨ææ¨ææ¨ææ¨ææ§ææ§ææ¨ææ¨ææ¨ææ§ææ¨ææ¨ææ§ææ§ææ¨ææ¨ææ§ææ§ææ¨ææ¨ææ¨ææ¨ææ¨ææ¨ææ§ææ¨ææ¨ææ¨ææ¨ææ¨ææ§ææ¨ææ¨ææ§ææ¨ææ¨ææ¨ææ¨ææ¨ææ§ææ§ææ§ææ§ææ¨ææ¨ææ¨ææ¨ææ¨ææ¨ææ§ææ¨ææ¨ææ¨ææ¨ææ¨ææ¨ææ¨ææ§ææ¨ææ¨ææ¨æÉ“ɰ‚°É”ÉÉ“ÉÉ“ÉÉ”ÉÉ”ÉÉ“ÉÉ”ÉÉ”ÉÉ“ÉÉ“ÉÉ”ÉÉ”ÉÉ“ÉÉ“ÉÉ”ÉÉ”ÉÉ”ÉÉ”ÉÉ“ÉÉ”ÉÉ”ÉÉ”ÉÉ”ÉÉ”ÉÉ“ÉÉ”ÉÉ”ÉÉ”ÉÉ“ÉÉ“ÉÉ”ÉÉ”ÉÉ“ÉÉ”ÉÉ”ÉÉ”ÉÉ”ÉÉ“ÉÉ”ÉÉ”ÉÉ”ÉÉ”ÉÉ”ÉÉ”ÉÉ“ÉÉ”ÉÉ”ÉÉ“ÉÉ“ÉÉ”ÉÉ”ÉÉ“ÉÉ“ÉÉ”ÉÉ”ÉÉ”ÉÉ”ÉÉ“ÉÉ”ÉÉ”ÉÉ”ÉÉ”ÉÉ”ÉÉ”ÉÉ“ÉÉ“ÉÉ”ÉÉ”ÉÉ“ÉÉ”ÉÉ”ÉÉ“ÉÉ”ÉÉ“ÉÉ”ÉÉ“ÉÉ“ÉÉ“ÉÉ“ÉÉ”ÉÉ”ÉÉ”ÉÉ”ÉÉ”ÉÉ”ÉÉ”ÉÉ”ÉÉ”ÉÉ”ÉÉ”ÉÉ”ÉÉ”ÉÉ”ÉÉ”ÉÉ”ÉÉ”ÉÉ”ÉÉ”ɰ‚° \ No newline at end of file diff --git a/client-patch/assets/seria_luck_fill_full_orange.pbgra b/client-patch/assets/seria_luck_fill_full_orange.pbgra new file mode 100644 index 0000000..649de08 Binary files /dev/null and b/client-patch/assets/seria_luck_fill_full_orange.pbgra differ diff --git a/client-patch/assets/seria_luck_icon.pbgra b/client-patch/assets/seria_luck_icon.pbgra new file mode 100644 index 0000000..838e238 Binary files /dev/null and b/client-patch/assets/seria_luck_icon.pbgra differ diff --git a/client-patch/assets/seria_luck_tooltip_cn.pbgra b/client-patch/assets/seria_luck_tooltip_cn.pbgra new file mode 100644 index 0000000..84eab0a Binary files /dev/null and b/client-patch/assets/seria_luck_tooltip_cn.pbgra differ diff --git a/client-patch/client_assets.rc b/client-patch/client_assets.rc new file mode 100644 index 0000000..ddd21a0 --- /dev/null +++ b/client-patch/client_assets.rc @@ -0,0 +1,11 @@ +#include "client_assets.h" + +IDR_COMBAT_POWER_PANEL_SKIN_V2 RCDATA "assets\\combat_power_panel_skin_v2.bgra" +IDR_COMBAT_RANK_EXPLORE_V3 RCDATA "assets\\combat_rank_explore_v3.pbgra" +IDR_COMBAT_RANK_PIONEER_V3 RCDATA "assets\\combat_rank_pioneer_v3.pbgra" +IDR_COMBAT_RANK_FEARLESS_V3 RCDATA "assets\\combat_rank_fearless_v3.pbgra" +IDR_COMBAT_RANK_CONQUER_V3 RCDATA "assets\\combat_rank_conquer_v3.pbgra" +IDR_COMBAT_RANK_BATTLE_PINNACLE_V3 RCDATA "assets\\combat_rank_battle_pinnacle_v3.pbgra" +IDR_COMBAT_RANK_HEROIC_V3 RCDATA "assets\\combat_rank_heroic_v3.pbgra" +IDR_COMBAT_RANK_MARTIAL_MASTERY_V3 RCDATA "assets\\combat_rank_martial_mastery_v3.pbgra" +IDR_COMBAT_POWER_RANK_TOOLTIP_V2 RCDATA "assets\\combat_power_rank_tooltip_v2.bgra" diff --git a/launcher/app.js b/launcher/app.js index d36fd12..570e39d 100644 --- a/launcher/app.js +++ b/launcher/app.js @@ -89,8 +89,17 @@ function gmConfirm(title, message, confirmText, onConfirm) { // 视图切æ�¢ // ============================================================ function showLauncher() { + if (window.shellGo) { window.shellGo('start'); return; } $('launcherView').classList.remove('hidden'); - $('gmView').classList.add('hidden'); + const gm = $('gmView'); if (gm) gm.classList.add('hidden'); +} + +function showGm() { + if (window.shellGo) { window.shellGo('gm'); return; } + $('launcherView').classList.add('hidden'); + const gm = $('gmView'); if (gm) gm.classList.remove('hidden'); + if (!gmInited) initGm(); + renderGmPage(gmCurrentPage); } // ============================================================ @@ -276,7 +285,7 @@ const GM_PAGES = { inventory: ['背包装备', '/ 查看背包'], auction: ['æ‹�å�–行', '/ 挂å�•上下架'], quests: ['任务管ç�†', '/ 任务查询'], - dungeons: ['魔改中心', '/ 副本状æ€�'], + dungeons: ['副本控制', '/ 副本状æ€�'], wallet: ['钱包点券', '/ 钱包与黑钻'], wipe: ['删档管ç�†', '/ 删除角色与账å�·'], settings: ['连接设置', '/ æ•°æ�®æº�切æ�¢'], @@ -433,13 +442,10 @@ function initGm() { loadAccounts().then(() => loadCharacters()); renderGmPage(gmCurrentPage); }); - // 「返回å�¯åЍ噍ã€�:å�•窗å�£æ¨¡å¼�下回到å�¯åЍ噍首页并æ�¢å¤�窗å�£ + // 「返回å�¯åЍ噍ã€�:å�•窗å�£å†…切回开始页 $('btnBackLauncher').addEventListener('click', () => { - if (typeof window.shellExitGm === 'function') { - window.shellExitGm(); - } else { - showLauncher(); - } + if (window.shellGo) { window.shellGo('start'); return; } + showLauncher(); }); // 预加载账å�·/角色,供所有页é�¢è�”动 loadAccounts().then(() => loadCharacters()); @@ -620,6 +626,8 @@ async function openCharDetail(charId) { try { const r = await api('/api/character?id=' + encodeURIComponent(charId)); const ch = r.data || {}; + const fat = await api('/api/character/fatigue?id=' + encodeURIComponent(charId) + '&mode=query'); + const fatInfo = fat.data || {}; content.innerHTML = `
角色:${escapeHtml(ch.name || charId)}
@@ -649,6 +657,23 @@ async function openCharDetail(charId) {
�业 / 转�
正在加载�业信�…
+ +
疲劳值(无�疲劳)
+
+
+ + +
+
+ + +
+
+
+ + + 疲劳�日 6 点�置回上�;无�疲劳 = 把疲劳和上�都设�超大值 +
@@ -760,6 +785,20 @@ async function saveGold() { if (r.ok) gmToast('金�已更新', 'ok'); else gmToast('失败:' + (r.error || ''), 'err'); } +async function saveFatigue() { + const fatigue = $('editFatigue').value; + const limit = $('editFatigueLimit').value; + const r = await post('/api/character/fatigue', { id: currentCharId, fatigue: parseInt(fatigue), fatigue_limit: parseInt(limit) }); + if (r.ok) { gmToast('疲劳值已更新', 'ok'); openCharDetail(currentCharId); } + else gmToast('失败:' + (r.error || ''), 'err'); +} + +async function maxFatigue() { + const r = await post('/api/character/fatigue', { id: currentCharId, fatigue: 999999, fatigue_limit: 999999 }); + if (r.ok) { gmToast('已设置无�疲劳(999999)', 'ok'); openCharDetail(currentCharId); } + else gmToast('失败:' + (r.error || ''), 'err'); +} + async function deleteCurrentChar() { gmConfirm('删除角色', '确定�删除该角色的全部数��?
此�作����,且需先�止�务端。', 'DELETE', async () => { const r = await post('/api/character/delete', { id: currentCharId, confirm: 'DELETE' }); @@ -1384,12 +1423,12 @@ async function renderAuction(content) {
- -
本�为�一价格模�,一�价自动等于�价
+ +
- -
本��设竞�,按一�价(=�价)直接�交
+ +
@@ -1512,20 +1551,19 @@ async function auctionList() { const itemId = $('auction-item-id').value; const count = parseInt($('auction-count').value || '0', 10); const unitPrice = parseInt($('auction-unit-price').value || '0', 10); + const buyoutRaw = $('auction-buyout').value.trim(); + const startRaw = $('auction-start').value.trim(); if (!seller) { gmToast('请选择�家角色', 'err'); return; } if (!itemId) { gmToast('请填写物� ID', 'err'); return; } if (!count || count <= 0) { gmToast('数�必须大于 0', 'err'); return; } if (!unitPrice || unitPrice <= 0) { gmToast('�价必须大于 0', 'err'); return; } - // 本���行�支�「一�价 = �价�的�一价格模�(�务端 unit_price �唯一定价, - // 客户端�展示这一个价)。这里强制对�:一�价=�价�起�价=-1(buyout-only), - // ���交�被�务端英文校验(buyout_price must equal unit_price)拒�。 const body = { seller_id: seller, item_id: parseInt(itemId, 10), count, unit_price: unitPrice, - start_price: -1, - buyout_price: unitPrice, + start_price: startRaw === '' ? null : parseInt(startRaw, 10), + buyout_price: buyoutRaw === '' ? null : parseInt(buyoutRaw, 10), duration_hours: parseInt($('auction-duration').value || '24', 10), grant_if_missing: !!$('auction-grant-missing').checked, }; @@ -1759,7 +1797,7 @@ async function renderDungeons(content) {
当�爆率: — - + % @@ -1955,7 +1993,7 @@ async function renderWallet(content) {
-
黑钻��疲劳上���外翻牌等�益;在线角色回城��时生效,无需离线。
+
黑钻��疲劳上���外翻牌等�益;角色需离线(下次登录生效)。
`; fillCharSelect($('wallet-char')); fillAccountSelect($('cera-account')); @@ -2033,7 +2071,7 @@ async function activateBlackDiamond() { const id = $('bd-char').value; const days = parseInt($('bd-days').value) || 30; if (!id) { gmToast('请选择角色', 'err'); return; } - gmConfirm('开�黑钻', '确定�为所选角色开�黑钻 ' + days + ' 天�?
在线角色回城��时生效。', '开�黑钻', async () => { + gmConfirm('开�黑钻', '确定�为所选角色开�黑钻 ' + days + ' 天�?
角色需处于离线状æ€�,下次登录生效。', 'å¼€å�¯é»‘é’»', async () => { const r = await post('/api/black-diamond/activate', { id, days }); if (r.ok) { gmToast('黑钻已开å�¯ ' + days + ' 天', 'ok'); queryBlackDiamond(); } else gmToast('å¼€å�¯å¤±è´¥ï¼š' + (r.error || ''), 'err'); @@ -2209,19 +2247,32 @@ function initTitlebar() { // ============================================================ // åˆ�始化 // ============================================================ +function isGmWindow() { + // 独立 GM 窗å�£é€šè¿‡ /gm 路径打开 + return window.location.pathname.endsWith('/gm'); +} + function init() { initTitlebar(); + // 独立 GM 窗å�£ï¼šç›´æŽ¥æ˜¾ç¤º GM 视图 + if (isGmWindow()) { + showLauncher = function() {}; // é™�级模å¼�下的返回按钮已处ç�† + $('launcherView').classList.add('hidden'); + $('gmView').classList.remove('hidden'); + initGm(); + renderGmPage('dashboard'); + refreshGmHealth(); + return; + } + // å�¯åŠ¨å™¨æŒ‰é’® $('btnStart').addEventListener('click', () => { appendLog('â–¶ 开始游æˆ�…'); action('start'); }); $('btnGm').addEventListener('click', () => { - // GM 工具现为å�•窗å�£å†…嵌页é�¢ï¼Œé€šè¿‡ shell 导航切æ�¢ - if (typeof window.shellGo === 'function') { - window.shellGo('gm'); - } + showGm(); }); $('btnStop').addEventListener('click', () => { appendLog('â–  关闭æœ�务…'); @@ -2257,6 +2308,8 @@ function init() { window.openCharDetail = openCharDetail; window.saveLevel = saveLevel; window.saveGold = saveGold; +window.saveFatigue = saveFatigue; +window.maxFatigue = maxFatigue; window.deleteCurrentChar = deleteCurrentChar; window.doGrant = doGrant; window.loadInventory = loadInventory; @@ -2285,5 +2338,10 @@ window.wipeCharSelected = wipeCharSelected; window.wipeAccountSelected = wipeAccountSelected; window.queryWallet = queryWallet; window.setCera = setCera; +window.applyFatigueMode = applyFatigueMode; +window.refillFatigue = refillFatigue; +window.toggleBurning = toggleBurning; +window.initGm = initGm; +window.renderGmPage = renderGmPage; init(); diff --git a/launcher/server.py b/launcher/server.py index 82b6679..d60e2af 100644 --- a/launcher/server.py +++ b/launcher/server.py @@ -107,7 +107,9 @@ PVF_PATH = os.path.join(CLIENT_DIR, "Script.pvf") # 一键æ�¢è£…工具(独立工具,放在æœ�务端根目录的 LoadoutTool 文件夹下) LOADOUT_DIR = os.path.join(SERVER_ROOT, "LoadoutTool") -LOADOUT_EXE = os.path.join(LOADOUT_DIR, "DNFLoadout.exe") +LOADOUT_EXE = os.path.join(LOADOUT_DIR, "æ�¢è£…工具.exe") +if not os.path.exists(LOADOUT_EXE): + LOADOUT_EXE = os.path.join(LOADOUT_DIR, "DNFLoadout.exe") # 一键æ�¢è£… / æœ�务端工具的æŒ�久化é…�置路径 LOADOUT_CONFIG = os.path.join(LOADOUT_DIR, "config.json") @@ -2421,7 +2423,7 @@ def show_window(url): # 主窗å�£ï¼šå�¯åŠ¨å™¨ï¼ˆæ— è¾¹æ¡†ï¼Œå±�幕居中) window = webview.create_window( - "DNF90 å�•机模拟器", + "90轮回", url, width=1204, height=717, diff --git a/loadout-tool/Assets/loadout.ico b/loadout-tool/Assets/loadout.ico new file mode 100644 index 0000000..344b5c1 Binary files /dev/null and b/loadout-tool/Assets/loadout.ico differ diff --git a/loadout-tool/LoadoutTool.csproj b/loadout-tool/LoadoutTool.csproj index 746a8a3..ae8016b 100644 --- a/loadout-tool/LoadoutTool.csproj +++ b/loadout-tool/LoadoutTool.csproj @@ -9,6 +9,7 @@ DNFLoadout DNFLoadout app.manifest + Assets\loadout.ico diff --git a/server/cmd/companionoverlay/main.go b/server/cmd/companionoverlay/main.go new file mode 100644 index 0000000..cd24571 --- /dev/null +++ b/server/cmd/companionoverlay/main.go @@ -0,0 +1,277 @@ +// Command companionoverlay — 支æ�´å…µè¦†ç›–工具(å�•文件版)。 +// +// 把「支æ�´å…µ AIC 覆盖ã€�å�šæˆ�一个å�¯ç‹¬ç«‹å�‘布的å�¯æ‰§è¡Œç¨‹åº�:内置 companionpvf 与 +// profiles.json,用户å�ªéœ€æ‹–å…¥ Script.pvf(或直接å�Œå‡»ç”¨é»˜è®¤è·¯å¾„),å�³å�¯ï¼š +// +// 1) 生æˆ�覆盖版 PVF(默认输出到å�Œç›®å½• Script.companion.pvf); +// 2) å�¯é€‰åœ°å®‰è£…到客户端/æœ�务端目录(自动备份ã€�打å�°å“ˆå¸Œï¼‰ã€‚ +// +// 用法: +// +// 支æ�´å…µè¦†ç›–工具.exe 交互模å¼�(使用默认客户端路径) +// 支æ�´å…µè¦†ç›–工具.exe 拖拽/命令行:å�ªç”Ÿæˆ�覆盖版 +// 支æ�´å…µè¦†ç›–工具.exe --client <客户端目录> --server <æœ�务端数æ�®ç›®å½•> +package main + +import ( + "bufio" + "crypto/sha256" + "embed" + "encoding/hex" + "fmt" + "io" + "os" + "os/exec" + "path/filepath" + "strings" + "time" +) + +//go:embed companionpvf.exe profiles.json +var assets embed.FS + +const ( + appTitle = "DNF90 支æ�´å…µè¦†ç›–工具" + appVersion = "1.0.0" + defaultClient = `D:\90server\Client\Script.pvf` + minOutputBytes = 50 << 20 +) + +func main() { + fmt.Printf("%s v%s\n", appTitle, appVersion) + fmt.Println(strings.Repeat("=", 60)) + + args := os.Args[1:] + pvfPath, clientDir, serverDir, install, interactive := parseArgs(args) + + if interactive { + pvfPath = prompt("è¦�处ç�†çš„ Script.pvf 路径", pvfPath) + if !ask("是å�¦å�Œæ—¶å®‰è£…到客户端/æœ�务端目录?(y/N): ") { + install = false + } else { + install = true + clientDir = prompt("客户端目录(å�« Script.pvf)", clientDir) + serverDir = prompt("æœ�务端数æ�®ç›®å½•(å�« Script.pvf)", serverDir) + } + } + if !install { + clientDir, serverDir = "", "" + } + + if strings.TrimSpace(pvfPath) == "" { + fail("没有指定 Script.pvf") + } + source, err := filepath.Abs(pvfPath) + if err != nil || !exists(source) { + fail("找ä¸�到 PVF:" + pvfPath) + } + + outPath := strings.TrimSuffix(source, filepath.Ext(source)) + ".companion.pvf" + if dir := filepath.Dir(source); dir != "" { + outPath = filepath.Join(dir, "Script.companion.pvf") + } + + fmt.Printf("输入 PVF:%s\n", source) + fmt.Printf("输出 PVF:%s\n", outPath) + + if err := runOverlay(source, outPath); err != nil { + fail(err.Error()) + } + size := fileSize(outPath) + fmt.Printf("覆盖版已生æˆ�:%d 字节(%.1f MB)\n", size, float64(size)/(1<<20)) + if size < minOutputBytes { + fail("输出文件过å°�,疑似失败(原 PVF 未被修改)") + } + hash := fileHash(outPath) + fmt.Printf("覆盖版 SHA256:%s\n", hash) + + if install { + if err := installTo(source, outPath, hash, clientDir, serverDir); err != nil { + fail(err.Error()) + } + } else { + fmt.Println() + fmt.Println("未安装。手动替æ�¢æ–¹æ³•:") + fmt.Println(" 客户端:把输出文件改å��为 Script.pvf 覆盖到 客户端目录。") + fmt.Println(" æœ�务端:å�Œæ ·è¦†ç›–到 æœ�务端 runtime\\data\\dnf\\Script.pvf。") + fmt.Println(" 完æˆ�å�Žé‡�å�¯æœ�务端,å†�å�¯åŠ¨æ¸¸æˆ�。") + } + + fmt.Println() + fmt.Println("完æˆ�。") + if interactive { + fmt.Print("按回车退出...") + bufio.NewReader(os.Stdin).ReadString('\n') + } +} + +func parseArgs(args []string) (pvf, clientDir, serverDir string, install, interactive bool) { + clientDir = `D:\90server\Client` + serverDir = `D:\90server\Server\runtime\data\dnf` + pvf = defaultClient + interactive = len(args) == 0 + for i := 0; i < len(args); i++ { + switch args[i] { + case "--client": + if i+1 < len(args) { + clientDir = args[i+1] + install = true + i++ + } + case "--server": + if i+1 < len(args) { + serverDir = args[i+1] + install = true + i++ + } + case "--install": + install = true + default: + if !strings.HasPrefix(args[i], "--") { + pvf = args[i] + } + } + } + return pvf, clientDir, serverDir, install, interactive +} + +func runOverlay(source, outPath string) error { + toolPath := filepath.Join(os.TempDir(), fmt.Sprintf("companionpvf-%d.exe", time.Now().UnixNano())) + toolBytes, err := assets.ReadFile("companionpvf.exe") + if err != nil { + return fmt.Errorf("读å�–内置工具失败:%w", err) + } + if err := os.WriteFile(toolPath, toolBytes, 0o700); err != nil { + return fmt.Errorf("释放内置工具失败:%w", err) + } + defer os.Remove(toolPath) + + profilesPath := filepath.Join(os.TempDir(), fmt.Sprintf("companion-profiles-%d.json", time.Now().UnixNano())) + profilesBytes, err := assets.ReadFile("profiles.json") + if err != nil { + return fmt.Errorf("读å�–内置é…�置失败:%w", err) + } + if err := os.WriteFile(profilesPath, profilesBytes, 0o600); err != nil { + return fmt.Errorf("释放内置é…�置失败:%w", err) + } + defer os.Remove(profilesPath) + + fmt.Println("生æˆ�覆盖版(约需 10–60 秒)...") + cmd := exec.Command(toolPath, "--profile-overlay", source, outPath, profilesPath) + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + if err := cmd.Run(); err != nil { + return fmt.Errorf("覆盖失败:%w(原 PVF 未被修改)", err) + } + return nil +} + +func installTo(source, outPath, hash, clientDir, serverDir string) error { + if hasProcess("DNF") { + return fmt.Errorf("请先关闭 DNF 客户端:PVF 正被å� ç”¨") + } + targets := []string{ + filepath.Join(clientDir, "Script.pvf"), + filepath.Join(serverDir, "Script.pvf"), + } + stamp := time.Now().Format("20060102-150405") + for _, target := range targets { + if !exists(target) { + fmt.Printf("跳过(ä¸�存在):%s\n", target) + continue + } + if fileHash(target) == hash { + fmt.Printf("已是最新,跳过:%s\n", target) + continue + } + backup := target + ".bak_before_companion_" + stamp + if err := copyFile(target, backup); err != nil { + return fmt.Errorf("备份失败:%w", err) + } + fmt.Printf("已备份:%s\n", backup) + if err := copyFile(outPath, target); err != nil { + return fmt.Errorf("安装失败:%w", err) + } + fmt.Printf("已安装:%s\n", target) + } + fmt.Println("请é‡�å�¯ DNF90 æœ�务端(æœ�务端å�¯åŠ¨æ—¶åŠ è½½ PVF),å†�å�¯åŠ¨æ¸¸æˆ�。") + return nil +} + +func prompt(label, fallback string) string { + fmt.Printf("%s [%s]: ", label, fallback) + reader := bufio.NewReader(os.Stdin) + text, _ := reader.ReadString('\n') + text = strings.TrimSpace(text) + if text == "" { + return fallback + } + return strings.Trim(text, `"`) +} + +func ask(label string) bool { + fmt.Print(label) + reader := bufio.NewReader(os.Stdin) + text, _ := reader.ReadString('\n') + text = strings.ToLower(strings.TrimSpace(text)) + return text == "y" || text == "yes" +} + +func exists(path string) bool { + info, err := os.Stat(path) + return err == nil && !info.IsDir() +} + +func fileSize(path string) int64 { + info, err := os.Stat(path) + if err != nil { + return 0 + } + return info.Size() +} + +func fileHash(path string) string { + f, err := os.Open(path) + if err != nil { + return "" + } + defer f.Close() + h := sha256.New() + if _, err := io.Copy(h, f); err != nil { + return "" + } + return strings.ToUpper(hex.EncodeToString(h.Sum(nil))) +} + +func copyFile(src, dst string) error { + in, err := os.Open(src) + if err != nil { + return err + } + defer in.Close() + out, err := os.Create(dst) + if err != nil { + return err + } + if _, err := io.Copy(out, in); err != nil { + out.Close() + return err + } + return out.Close() +} + +func hasProcess(name string) bool { + cmd := exec.Command("tasklist", "/FI", "IMAGENAME eq "+name+".exe", "/NH") + output, err := cmd.Output() + if err != nil { + return false + } + return strings.Contains(strings.ToLower(string(output)), strings.ToLower(name+".exe")) +} + +func fail(message string) { + fmt.Fprintf(os.Stderr, "\n[错误] %s\n", message) + fmt.Print("按回车退出...") + bufio.NewReader(os.Stdin).ReadString('\n') + os.Exit(1) +} diff --git a/server/internal/app/dnf90/companion_panel_admin.go b/server/internal/app/dnf90/companion_panel_admin.go new file mode 100644 index 0000000..e649d28 --- /dev/null +++ b/server/internal/app/dnf90/companion_panel_admin.go @@ -0,0 +1,126 @@ +package dnf90 + +import ( + "encoding/json" + "io" + "net/http" + "strings" + + appkit "longheng.io/server/internal/platform/app" + httpx "longheng.io/server/internal/platform/httpx" + "longheng.io/server/internal/services/dnfbridge" +) + +// companionPanelAdminPath is the local-only endpoint used by the GM tool's +// "支æ�´å…µå±žæ€§" page. It is intentionally unauthenticated: the admin mux binds +// to loopback, like the existing /local endpoints, and the page is served by +// the local GM tool. +const companionPanelAdminPath = "/local/companion-panel" + +func registerCompanionPanelAdmin(env *appkit.Env, bridge *dnfbridge.Service) { + if env == nil || env.AdminMux == nil || bridge == nil { + return + } + env.AdminMux.HandleFunc(companionPanelAdminPath, func(w http.ResponseWriter, r *http.Request) { + applyCompanionPanelCORS(w) + if r.Method == http.MethodOptions { + w.WriteHeader(http.StatusNoContent) + return + } + switch r.Method { + case http.MethodGet: + characterID := strings.TrimSpace(r.URL.Query().Get("character_id")) + if characterID == "" { + characterID = strings.TrimSpace(r.URL.Query().Get("characterId")) + } + values, found, err := bridge.CompanionPanelValues(r.Context(), characterID) + if err != nil { + httpx.WriteJSON(w, http.StatusBadRequest, map[string]string{"error": err.Error()}) + return + } + httpx.WriteJSON(w, http.StatusOK, map[string]any{ + "character_id": characterID, + "found": found, + "values": values, + }) + case http.MethodPost: + var body struct { + CharacterID string `json:"character_id"` + Values map[string]string `json:"values"` + } + decoder := json.NewDecoder(io.LimitReader(r.Body, 1<<20)) + if err := decoder.Decode(&body); err != nil { + httpx.WriteJSON(w, http.StatusBadRequest, map[string]string{"error": err.Error()}) + return + } + if strings.TrimSpace(body.CharacterID) == "" { + httpx.WriteJSON(w, http.StatusBadRequest, map[string]string{ + "error": "character_id is required", + }) + return + } + if err := bridge.SaveCompanionPanelValues(r.Context(), body.CharacterID, body.Values); err != nil { + httpx.WriteJSON(w, http.StatusInternalServerError, map[string]string{"error": err.Error()}) + return + } + values, found, _ := bridge.CompanionPanelValues(r.Context(), body.CharacterID) + httpx.WriteJSON(w, http.StatusOK, map[string]any{ + "ok": true, + "character_id": body.CharacterID, + "found": found, + "values": values, + }) + default: + w.Header().Set("Allow", "GET, POST, OPTIONS") + httpx.WriteJSON(w, http.StatusMethodNotAllowed, map[string]string{ + "error": "method not allowed", + }) + } + }) + + // Base-estimate generation: PVF growth + worn equipment + weapon forging. + // Enchant cards, amplification, reinforcement, quality, sets, titles, auras + // and pets are intentionally not modelled; the GM page marks the result as + // an estimate and lets the operator correct it. + env.AdminMux.HandleFunc(companionPanelGeneratePath, func(w http.ResponseWriter, r *http.Request) { + applyCompanionPanelCORS(w) + if r.Method == http.MethodOptions { + w.WriteHeader(http.StatusNoContent) + return + } + if r.Method != http.MethodPost { + w.Header().Set("Allow", "POST, OPTIONS") + httpx.WriteJSON(w, http.StatusMethodNotAllowed, map[string]string{ + "error": "method not allowed", + }) + return + } + var body struct { + CharacterID string `json:"character_id"` + } + if err := json.NewDecoder(io.LimitReader(r.Body, 1<<20)).Decode(&body); err != nil { + httpx.WriteJSON(w, http.StatusBadRequest, map[string]string{"error": err.Error()}) + return + } + values, err := bridge.GenerateCompanionPanelSnapshot(r.Context(), body.CharacterID) + if err != nil { + httpx.WriteJSON(w, http.StatusBadRequest, map[string]string{"error": err.Error()}) + return + } + httpx.WriteJSON(w, http.StatusOK, map[string]any{ + "ok": true, + "character_id": body.CharacterID, + "estimate": true, + "values": values, + }) + }) +} + +const companionPanelGeneratePath = "/local/companion-panel/generate" + +func applyCompanionPanelCORS(w http.ResponseWriter) { + w.Header().Set("Access-Control-Allow-Origin", "*") + w.Header().Set("Access-Control-Allow-Methods", "GET, POST, OPTIONS") + w.Header().Set("Access-Control-Allow-Headers", "Content-Type, X-Admin-Token") + w.Header().Set("Access-Control-Allow-Private-Network", "true") +} diff --git a/server/internal/modules/dnf/companion/team.go b/server/internal/modules/dnf/companion/team.go new file mode 100644 index 0000000..6c81a34 --- /dev/null +++ b/server/internal/modules/dnf/companion/team.go @@ -0,0 +1,234 @@ +package companion + +import ( + "sort" + "strconv" + "strings" +) + +// TeamMaxCompanions is the number of support soldiers that may enter with the +// owner. The current client's ordinary party has four slots: the owner plus +// three companions. Keeping the limit here (rather than in the bridge) makes +// every matcher, GM preflight and status projection agree. +const TeamMaxCompanions = 3 + +// DefaultTeamAIProfile is the fallback policy for an auto-matched teammate +// that has no per-character GM profile. Team members must actually join the +// fight, so the default is the aggressive AIC variant; operators can still +// override any character through ai_profiles (assist/aggressive). +func DefaultTeamAIProfile(classID uint16) AIProfile { + profile := DefaultAIProfile(classID) + profile.Behavior = "aggressive" + return profile +} + +// TeamCandidate is the detached roster row used by the automatic matcher. It +// deliberately contains no session, inventory or mutable character pointers: +// the bridge reads one consistent repository list and passes only identity, +// level, job and online state here. +type TeamCandidate struct { + CharacterID string + Level int + Job string + Slot int + Online bool + Deleted bool +} + +// TeamSkip explains why a candidate did not enter the frozen run. It is +// evidence for the GM status and packet log, not a client-facing error. +type TeamSkip struct { + CharacterID string + Reason string +} + +// TeamMatch is the deterministic result of one dungeon-entry match. +type TeamMatch struct { + Selected []string + Skipped []TeamSkip +} + +const ( + TeamSkipOwner = "source_is_owner" + TeamSkipOnline = "source_online" + TeamSkipUnavailable = "source_unavailable" + TeamSkipLevel = "level_unsupported" + TeamSkipDeleted = "source_deleted" + TeamSkipInvalid = "source_invalid" + TeamSkipJob = "job_unsupported" + TeamSkipPartyFull = "party_full" +) + +// MatchTeam forms the teammate roster for one dungeon. +// +// Rules, in order: +// 1. The GM's explicit selection is authoritative and keeps its order. +// 2. Remaining slots are filled automatically from the same account's offline, +// non-deleted characters. +// 3. Automatic picks prefer higher level first, then one character per job +// before duplicating a job, then the lower slot/id for stable output. +// +// The result is frozen by the caller. This function is pure so the selection +// cannot depend on map iteration order or on repository timing. +func MatchTeam(ownerID string, configured []string, candidates []TeamCandidate, limit int) TeamMatch { + ownerID = strings.TrimSpace(ownerID) + if limit <= 0 || limit > TeamMaxCompanions { + limit = TeamMaxCompanions + } + + byID := make(map[string]TeamCandidate, len(candidates)) + for _, candidate := range candidates { + id := strings.TrimSpace(candidate.CharacterID) + if !validCharacterID(id) { + continue + } + if _, exists := byID[id]; exists { + continue + } + candidate.CharacterID = id + candidate.Job = strings.TrimSpace(candidate.Job) + byID[id] = candidate + } + + result := TeamMatch{ + Selected: make([]string, 0, limit), + Skipped: make([]TeamSkip, 0, 4), + } + selected := make(map[string]struct{}, limit) + skip := func(id, reason string) { + if len(result.Skipped) >= 16 { + return + } + result.Skipped = append(result.Skipped, TeamSkip{CharacterID: id, Reason: reason}) + } + selectID := func(id string) bool { + if _, exists := selected[id]; exists { + return true + } + if len(result.Selected) >= limit { + return false + } + selected[id] = struct{}{} + result.Selected = append(result.Selected, id) + return true + } + + // Phase 1: preserve the operator's manual choice. + for _, raw := range configured { + id := strings.TrimSpace(raw) + if !validCharacterID(id) { + skip(id, TeamSkipInvalid) + continue + } + if _, exists := selected[id]; exists { + continue + } + if id == ownerID { + skip(id, TeamSkipOwner) + continue + } + candidate, found := byID[id] + if !found { + skip(id, TeamSkipUnavailable) + continue + } + if reason := teamCandidateReason(candidate); reason != "" { + skip(id, reason) + continue + } + if !selectID(id) { + skip(id, TeamSkipPartyFull) + } + } + + // Phase 2: auto-fill. Sorting is made total (level, slot, numeric id) so a + // database returning rows in a different order cannot change the roster. + available := make([]TeamCandidate, 0, len(byID)) + for id, candidate := range byID { + if id == ownerID { + continue + } + if _, exists := selected[id]; exists { + continue + } + if teamCandidateReason(candidate) != "" { + continue + } + available = append(available, candidate) + } + sort.Slice(available, func(i, j int) bool { + if available[i].Level != available[j].Level { + return available[i].Level > available[j].Level + } + if available[i].Slot != available[j].Slot { + return available[i].Slot < available[j].Slot + } + return teamNumericID(available[i].CharacterID) < teamNumericID(available[j].CharacterID) + }) + + usedJobs := make(map[string]struct{}, limit) + for id := range selected { + if candidate, ok := byID[id]; ok { + usedJobs[teamJobKey(candidate.Job)] = struct{}{} + } + } + // First pass: one character per job keeps the team varied. + for _, candidate := range available { + if len(result.Selected) >= limit { + break + } + job := teamJobKey(candidate.Job) + if job == "" { + continue + } + if _, exists := usedJobs[job]; exists { + continue + } + if selectID(candidate.CharacterID) { + usedJobs[job] = struct{}{} + } + } + // Second pass: fill the remaining slots by level/slot/id. + for _, candidate := range available { + if len(result.Selected) >= limit { + break + } + if _, exists := selected[candidate.CharacterID]; exists { + continue + } + selectID(candidate.CharacterID) + } + return result +} + +func teamCandidateReason(candidate TeamCandidate) string { + if candidate.Deleted { + return TeamSkipDeleted + } + if candidate.Level < 1 || candidate.Level > 90 { + return TeamSkipLevel + } + if candidate.Online { + return TeamSkipOnline + } + if _, err := strconv.ParseUint(strings.TrimSpace(candidate.Job), 10, 8); err != nil { + return TeamSkipJob + } + return "" +} + +func teamJobKey(job string) string { + parsed, err := strconv.ParseUint(strings.TrimSpace(job), 10, 8) + if err != nil { + return "" + } + return strconv.FormatUint(parsed, 10) +} + +func teamNumericID(id string) int { + parsed, err := strconv.Atoi(strings.TrimSpace(id)) + if err != nil { + return int(^uint(0) >> 1) + } + return parsed +} diff --git a/server/internal/modules/dnf/companion/team_test.go b/server/internal/modules/dnf/companion/team_test.go new file mode 100644 index 0000000..0d1aa88 --- /dev/null +++ b/server/internal/modules/dnf/companion/team_test.go @@ -0,0 +1,95 @@ +package companion + +import ( + "reflect" + "testing" +) + +func TestMatchTeamKeepsManualSelectionAndFillsByLevelAndJob(t *testing.T) { + candidates := []TeamCandidate{ + {CharacterID: "1", Level: 90, Job: "0", Slot: 0}, + {CharacterID: "2", Level: 90, Job: "12", Slot: 1}, + {CharacterID: "3", Level: 90, Job: "3", Slot: 2}, + {CharacterID: "4", Level: 90, Job: "0", Slot: 3}, + {CharacterID: "5", Level: 21, Job: "2", Slot: 4}, + } + match := MatchTeam("1", []string{"4"}, candidates, 3) + if want := []string{"4", "2", "3"}; !reflect.DeepEqual(match.Selected, want) { + t.Fatalf("selected=%v want=%v", match.Selected, want) + } +} + +func TestMatchTeamSkipsOwnerOnlineDeletedLowLevelAndInvalid(t *testing.T) { + candidates := []TeamCandidate{ + {CharacterID: "1", Level: 90, Job: "0", Slot: 0}, // owner + {CharacterID: "2", Level: 90, Job: "0", Slot: 1, Online: true}, // online + {CharacterID: "3", Level: 90, Job: "0", Slot: 2, Deleted: true}, + {CharacterID: "4", Level: 0, Job: "0", Slot: 3}, + {CharacterID: "5", Level: 90, Job: "x", Slot: 4}, + {CharacterID: "0", Level: 90, Job: "0", Slot: 5}, + {CharacterID: "6", Level: 90, Job: "1", Slot: 6}, + } + match := MatchTeam("1", []string{"2", "3", "4", "5", "0", "99"}, candidates, 3) + if want := []string{"6"}; !reflect.DeepEqual(match.Selected, want) { + t.Fatalf("selected=%v want=%v", match.Selected, want) + } + assertSkip(t, match, "2") // online + assertSkip(t, match, "3") // deleted + assertSkip(t, match, "4") // low level + assertSkip(t, match, "5") // unsupported job + assertSkip(t, match, "99") // missing +} + +func TestMatchTeamCapsAtThreeAndIsDeterministic(t *testing.T) { + candidates := []TeamCandidate{ + {CharacterID: "9", Level: 90, Job: "0", Slot: 9}, + {CharacterID: "7", Level: 90, Job: "2", Slot: 7}, + {CharacterID: "8", Level: 90, Job: "4", Slot: 8}, + {CharacterID: "6", Level: 90, Job: "1", Slot: 6}, + } + first := MatchTeam("1", nil, candidates, 99) + if len(first.Selected) != TeamMaxCompanions { + t.Fatalf("selected=%v want %d entries", first.Selected, TeamMaxCompanions) + } + // Slot order wins inside the same-levelled, different-job set. + if want := []string{"6", "7", "8"}; !reflect.DeepEqual(first.Selected, want) { + t.Fatalf("selected=%v want=%v", first.Selected, want) + } + for i := 0; i < 20; i++ { + again := MatchTeam("1", nil, candidates, 99) + if !reflect.DeepEqual(again.Selected, first.Selected) { + t.Fatalf("iteration %d selected=%v want=%v", i, again.Selected, first.Selected) + } + } +} + +func TestMatchTeamEmptyRosterReturnsNoSelection(t *testing.T) { + match := MatchTeam("1", []string{"2"}, nil, 3) + if len(match.Selected) != 0 { + t.Fatalf("selected=%v want empty", match.Selected) + } + assertSkip(t, match, "2") +} + +func TestDefaultTeamAIProfileIsAggressiveAndJobScoped(t *testing.T) { + profile := DefaultTeamAIProfile(12) + if profile.Behavior != "aggressive" { + t.Fatalf("behavior=%q want aggressive", profile.Behavior) + } + if profile.ClassID != 12 { + t.Fatalf("class id=%d want 12", profile.ClassID) + } + if err := profile.Validate(); err != nil { + t.Fatalf("default team profile is invalid: %v", err) + } +} + +func assertSkip(t *testing.T, match TeamMatch, id string) { + t.Helper() + for _, skipped := range match.Skipped { + if skipped.CharacterID == id { + return + } + } + t.Fatalf("candidate %s was not recorded as skipped: %+v", id, match.Skipped) +} diff --git a/server/internal/services/dnfbridge/client_build_id.go b/server/internal/services/dnfbridge/client_build_id.go index 3211c79..cd67113 100644 --- a/server/internal/services/dnfbridge/client_build_id.go +++ b/server/internal/services/dnfbridge/client_build_id.go @@ -10,8 +10,8 @@ const ( boundMovieSHA256 = "D62E3623C39CD9FCED5F6C4C7F5E6E18BEB69EB269ABF5D713EDE08EE8C926A1" boundMovieBytes = int64(22846532) - boundDllSHA256 = "CF2A0C4626DF2A5D056DC87CFB3D6AA07BC7A4EF7888B5B3B80A006BAD2204AF" - boundDllBytes = int64(1229824) + boundDllSHA256 = "F6DDA53482B6B8F6A3FD155FF0A15EB590C5AFF9572140004242793DC957561C" + boundDllBytes = int64(1230336) ) diff --git a/server/internal/services/dnfbridge/companion_dungeon_control.go b/server/internal/services/dnfbridge/companion_dungeon_control.go index 3f49648..3a6a0a0 100644 --- a/server/internal/services/dnfbridge/companion_dungeon_control.go +++ b/server/internal/services/dnfbridge/companion_dungeon_control.go @@ -63,6 +63,16 @@ type currentDungeonCompanionRun struct { Enabled bool BalanceEnabled bool RandomEquipmentEnabled bool + TeamMode bool + TeamLeaderID uint16 + TeamSize int + Online bool + OnlineAt time.Time + OfflineAt time.Time + OfflineReason string + LogoutSent bool + NativePartyID uint16 + NativePartySent bool Ready bool Reason string ReasonMessage string diff --git a/server/internal/services/dnfbridge/companion_dungeon_projection_p1.go b/server/internal/services/dnfbridge/companion_dungeon_projection_p1.go index 1706210..ef21267 100644 --- a/server/internal/services/dnfbridge/companion_dungeon_projection_p1.go +++ b/server/internal/services/dnfbridge/companion_dungeon_projection_p1.go @@ -5,6 +5,7 @@ import ( "crypto/sha256" "encoding/binary" "encoding/hex" + "fmt" "os" "sort" "strconv" @@ -369,6 +370,22 @@ func mustProjectionCharacterID(value string) uint64 { return parsed } +// buildCurrentDungeonCompanionOfflineBody is the exact present=0 projection +// body. The client's decoder requires all identity/count fields to be zero, +// the body length to be exactly the 72-byte header, and a non-zero revision. +// One body clears the whole squad, so the caller sends it once per run. +func buildCurrentDungeonCompanionOfflineBody(revision uint64) []byte { + if revision == 0 { + revision = 1 + } + body := make([]byte, currentDungeonCompanionProjectionHeaderSize) + binary.LittleEndian.PutUint32(body[0:4], currentDungeonCompanionProjectionMagic) + body[4] = currentDungeonCompanionProjectionVersion + body[5] = 0 + binary.LittleEndian.PutUint64(body[8:16], revision) + return body +} + func (s *Service) currentDungeonCompanionProjectionSourceID( ctx context.Context, session *gameSession, @@ -531,6 +548,22 @@ func (s *Service) sendCurrentDungeonCompanionProjection( "private_opcode", currentDungeonCompanionProjectionOpcode, "body_len", len(body), "template_mutation", false) - return s.sendGameUpperRawClass( - session, currentDungeonCompanionProjectionOpcode, body, 0) + if err := s.sendGameUpperRawClass( + session, currentDungeonCompanionProjectionOpcode, body, 0); err != nil { + return err + } + // The dungeon is now loaded on the client (projection is sent after op29 and + // player placement), so a notice here is visible instead of being swallowed + // by the loading screen. + if repos.Settings != nil { + if snapshot, found := loadCompanionPanelSnapshot(ctx, repos, + strconv.FormatUint(uint64(sourceID), 10)); found { + _ = s.sendCurrentClientNotice(session, + fmt.Sprintf("支æ�´å…µé�¢æ�¿ HP=%d MP=%d 力é‡�=%d 物攻=%d 物防=%d", + snapshot.HPMax, snapshot.MPMax, snapshot.Strength, + snapshot.PhysicalAttack, snapshot.PhysicalDefense), + currentClientNoticeDefaultColor, "companion-panel-summary") + } + } + return nil } diff --git a/server/internal/services/dnfbridge/companion_headless.go b/server/internal/services/dnfbridge/companion_headless.go new file mode 100644 index 0000000..3e4c688 --- /dev/null +++ b/server/internal/services/dnfbridge/companion_headless.go @@ -0,0 +1,544 @@ +package dnfbridge + +import ( + "context" + "encoding/binary" + "fmt" + "io" + "net" + "os" + "strconv" + "strings" + "sync" + "time" + + "longheng.io/server/internal/modules/dnf/dnfenum" + "longheng.io/server/internal/modules/dnf/dungeoncmd" +) + +// Headless volunteer sessions. +// +// These are real game sessions from the server's point of view: they are in +// Service.gameSessions, have a character generation, a native party peer +// endpoint, and can be driven through the ordinary party/dungeon owners. Their +// transport is a sink: outbound packets are accepted and discarded because no +// client is attached. The owner's real client receives the normal party +// prelude (op11/op9/op153 + per-member mode0/mode1) and therefore sees real +// party actors, not the APC projection. +// +// This path is gated and OFF by default while the AIC action driver is not yet +// attached. +const ( + currentCompanionHeadlessEnv = "DNF_COMPANION_HEADLESS" + currentCompanionHeadlessFlagFile = "companion_headless.enabled" + currentCompanionHeadlessPortBase = 45000 +) + +func currentCompanionHeadlessEnabled() bool { + switch strings.ToLower(strings.TrimSpace(os.Getenv(currentCompanionHeadlessEnv))) { + case "0", "off", "false", "no": + return false + } + if _, err := os.Stat(currentCompanionHeadlessFlagFile); err == nil { + return true + } + return false +} + +func headlessDebug(message string) { + file, err := os.OpenFile("companion_headless_debug.log", os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0o644) + if err != nil { + return + } + defer file.Close() + _, _ = file.WriteString(time.Now().Format("15:04:05.000") + " " + message + "\n") +} + +type companionHeadlessConn struct { + mu sync.Mutex + closed bool + port int +} + +func (c *companionHeadlessConn) Read([]byte) (int, error) { return 0, io.EOF } +func (c *companionHeadlessConn) Write(data []byte) (int, error) { + return len(data), nil +} +func (c *companionHeadlessConn) Close() error { + c.mu.Lock() + c.closed = true + c.mu.Unlock() + return nil +} +func (c *companionHeadlessConn) LocalAddr() net.Addr { + return &net.TCPAddr{IP: net.IPv4(127, 0, 0, 1), Port: c.port} +} +func (c *companionHeadlessConn) RemoteAddr() net.Addr { + return &net.TCPAddr{IP: net.IPv4(127, 0, 0, 1), Port: c.port} +} +func (c *companionHeadlessConn) SetDeadline(time.Time) error { return nil } +func (c *companionHeadlessConn) SetReadDeadline(time.Time) error { return nil } +func (c *companionHeadlessConn) SetWriteDeadline(time.Time) error { return nil } + +func (s *Service) ensureHeadlessCompanionSessions( + ctx context.Context, + ownerSession *gameSession, + sources []string, + accountID string, +) []uint16 { + if s == nil || ownerSession == nil || len(sources) == 0 { + return nil + } + headlessDebug(fmt.Sprintf("ensure_sessions owner=%d sources=%v", ownerSession.selectedCharacterID, sources)) + created := make([]uint16, 0, len(sources)) + for _, raw := range sources { + id, ok := currentDungeonCompanionProjectionSourceIDValue(raw) + if !ok || id == ownerSession.selectedCharacterID { + continue + } + if real, online := s.onlineGameSession(id); online && real != nil { + if !real.companionHeadless { + continue + } + created = append(created, id) + continue + } + session := &gameSession{ + conn: &companionHeadlessConn{port: currentCompanionHeadlessPortBase + int(id)}, + connID: "companion-headless-" + strconv.FormatUint(uint64(id), 10), + accountID: accountID, + selectedCharacterID: id, + characterGeneration: s.nextCompanionGeneration(), + channel: ownerSession.channel, + companionHeadless: true, + companionVirtual: false, + companionOwnerID: ownerSession.selectedCharacterID, + } + session.partyPeerMu.Lock() + session.partyPeer = currentPartyPeerEndpointRegistration{ + InnerIPv4: [4]byte{127, 0, 0, 1}, + OuterIPv4: [4]byte{127, 0, 0, 1}, + Port: uint16(currentCompanionHeadlessPortBase + int(id)), + MTU: currentPartyPeerDefaultPathMTU, + } + session.partyRoutingKey = s.nextPartyRoutingKey.Add(1) + session.partyPathMTU = currentPartyPeerDefaultPathMTU + session.partyPeerMu.Unlock() + session.townMu.Lock() + session.townPositionSnapshot = ownerSession.townPositionSnapshot + session.townMu.Unlock() + s.mu.Lock() + if s.gameSessions == nil { + s.gameSessions = make(map[uint16]*gameSession) + } + s.gameSessions[id] = session + s.mu.Unlock() + go s.runHeadlessCompanionAIC(session) + created = append(created, id) + } + if len(created) != 0 { + headlessDebug(fmt.Sprintf("sessions_created ids=%v", created)) + s.logGameEvent(ownerSession, "game-companion-headless-sessions-online", + "owner_character_id", ownerSession.selectedCharacterID, + "character_ids", uint16ListLog(created)) + } + return created +} + +// dropHeadlessCompanionSessionsForOwner removes the previous login's headless +// sessions when the feature is switched off. Without this, a relog after +// deleting the flag would leave the synthetic party members in the manager and +// the client would stay at "connecting". +func (s *Service) dropHeadlessCompanionSessionsForOwner(ownerID uint16) { + if s == nil || ownerID == 0 { + return + } + manager := s.runtimePartyManagerForService() + removed := make([]uint16, 0, 4) + type removedMember struct { + id uint16 + generation uint64 + } + members := make([]removedMember, 0, 4) + s.mu.Lock() + for id, session := range s.gameSessions { + if session == nil || !session.companionHeadless || session.companionOwnerID != ownerID { + continue + } + delete(s.gameSessions, id) + removed = append(removed, id) + members = append(members, removedMember{id: id, generation: session.characterGeneration}) + } + s.mu.Unlock() + if manager != nil { + for _, member := range members { + manager.Leave(member.id, member.generation) + } + } + if len(removed) != 0 { + s.logPacketEvent("game-companion-headless-sessions-dropped", + "owner_character_id", ownerID, + "character_ids", uint16ListLog(removed)) + } +} + +// CompanionForceEnter drives the ordinary op16 dungeon entry for an online +// character without requiring the client to send op16. It exists for the +// headless-party PoC: the client's party window can be stuck on its P2P gate +// even though the server party is complete, which blocks the only packet that +// would start the entry. +func (s *Service) CompanionForceEnter(characterID uint16, dungeonID uint32) error { + if s == nil || characterID == 0 || dungeonID == 0 { + return fmt.Errorf("companion force enter needs character and dungeon") + } + session, online := s.onlineGameSession(characterID) + if !online || session == nil { + return fmt.Errorf("character %d is not online", characterID) + } + body := make([]byte, dungeoncmd.SelectDungeonRequestSize) + binary.LittleEndian.PutUint32(body[0:4], dungeonID) + body[4] = 0 // difficulty + binary.LittleEndian.PutUint16(body[5:7], 0) + body[7] = 0 // selection mode + body[8] = 0 // runtime state + binary.LittleEndian.PutUint16(body[9:11], 0) + binary.LittleEndian.PutUint32(body[11:15], 0) + body[15] = 0 // the current 21-byte writer rejects a non-zero value here + binary.LittleEndian.PutUint32(body[16:20], + uint32(currentSceneActorObjectKey(characterID))) + body[20] = 0 + session.companionForceEnter = true + defer func() { session.companionForceEnter = false }() + s.ensureForceSelectorOrigin(session) + headlessDebug(fmt.Sprintf("force_enter character=%d dungeon=%d", characterID, dungeonID)) + return s.handleDungeonSelectUpper(session, body) +} + +func (s *Service) ensureForceSelectorOrigin(session *gameSession) bool { + if s == nil || session == nil { + return false + } + session.townMu.Lock() + if session.townSelectorOriginBound { + session.townMu.Unlock() + return true + } + origin := session.townPositionSnapshot + session.townMu.Unlock() + // The live town snapshot carries the current area (for example 38/2), while + // the dungeon return origin is validated against the durable character + // location (38/1). Use the durable ids and only borrow x/y from the live + // position. + if repos, ok := s.repositoryGroup(); ok && repos.Character != nil { + if record, found, err := repos.Character.Load(context.Background(), + strconv.FormatUint(uint64(session.selectedCharacterID), 10)); err == nil && found { + townID := byte(numericCharacterStatValue(record, "town_id")) + areaID := byte(numericCharacterStatValue(record, "area_id")) + if townID == 0 { + townID = origin.TownID + } + if areaID == 0 { + areaID = origin.AreaID + } + origin.TownID = townID + origin.AreaID = areaID + if !origin.PositionValid { + origin.PositionX = uint16(numericCharacterStatValue(record, "pos_x")) + origin.PositionY = uint16(numericCharacterStatValue(record, "pos_y")) + origin.MovementCode = byte(numericCharacterStatValue(record, "direction")) + origin.PositionValid = true + } + } + } + if !origin.PositionValid { + headlessDebug(fmt.Sprintf("force_origin_unavailable char=%d", session.selectedCharacterID)) + return false + } + origin.CharacterID = session.selectedCharacterID + session.townMu.Lock() + session.townSelectorOriginSnapshot = origin + session.townSelectorOriginBound = true + session.townMu.Unlock() + headlessDebug(fmt.Sprintf("force_origin_bound char=%d town=%d area=%d x=%d y=%d", + session.selectedCharacterID, origin.TownID, origin.AreaID, origin.PositionX, origin.PositionY)) + return true +} + +func (s *Service) bindHeadlessSelectorOrigin(leader, follower *gameSession) bool { + if s == nil || leader == nil || follower == nil { + return false + } + leader.townMu.Lock() + origin := leader.townSelectorOriginSnapshot + bound := leader.townSelectorOriginBound + leader.townMu.Unlock() + if !bound || !origin.PositionValid { + headlessDebug(fmt.Sprintf("selector_origin_missing char=%d bound=%v valid=%v", + follower.selectedCharacterID, bound, origin.PositionValid)) + return false + } + origin.CharacterID = follower.selectedCharacterID + follower.townMu.Lock() + follower.townSelectorOriginSnapshot = origin + follower.townSelectorOriginBound = true + follower.townMu.Unlock() + headlessDebug(fmt.Sprintf("selector_origin_bound char=%d town=%d area=%d x=%d y=%d", + follower.selectedCharacterID, origin.TownID, origin.AreaID, origin.PositionX, origin.PositionY)) + return true +} + +func (s *Service) ensureHeadlessPartyActorProjections(ctx context.Context, leader *gameSession, runtime *runtimeDungeonState) { + if s == nil || runtime == nil || runtime.Companion == nil { + return + } + for _, entry := range runtime.Companion.Sources { + if !entry.Ready || entry.SourceCharacterID == 0 { + continue + } + identity, online := s.onlineGameSessionCharacterSnapshot(entry.SourceCharacterID) + if !online || identity.session == nil || !identity.session.companionHeadless { + continue + } + if _, found := currentPartyActorProjectionSnapshot( + identity.session, entry.SourceCharacterID, identity.generation); found { + continue + } + state := entry.ProgressionSnapshot + if state.Source.CharacterID == "" { + headlessDebug(fmt.Sprintf("actor_projection_missing_state char=%d", entry.SourceCharacterID)) + continue + } + name := strings.TrimSpace(state.Source.Name) + if name == "" { + name = entry.SourceName + } + ownerChannel := currentPartySceneOwnerContext(identity.session) + mode0, err := s.buildCurrentSceneObjectListBodyForSessionInContextStrict( + ctx, identity.session, entry.SourceCharacterID, name, state.Source, true, ownerChannel) + if err != nil || len(mode0) == 0 { + headlessDebug(fmt.Sprintf("actor_projection_mode0_failed char=%d err=%v", entry.SourceCharacterID, err)) + continue + } + reader := csharpLegacyUserInfoReader{ + ctx: ctx, + characterID: state.Source.CharacterID, + service: s, + session: identity.session, + suppressActorSkillResources: true, + equipmentSnapshot: &state.Equipment, + } + mode1 := reader.buildCurrentUserInfoMode1WithEquipmentForOwner( + state.Source, true, entry.SourceCharacterID, true, 0, + currentSceneObjectRoute, ownerChannel) + if len(mode1) == 0 { + headlessDebug(fmt.Sprintf("actor_projection_mode1_failed char=%d", entry.SourceCharacterID)) + continue + } + if err := captureCurrentPartyActorProjection( + identity.session, entry.SourceCharacterID, mode0, mode1); err != nil { + headlessDebug(fmt.Sprintf("actor_projection_capture_failed char=%d err=%v", entry.SourceCharacterID, err)) + continue + } + headlessDebug(fmt.Sprintf("actor_projection_captured char=%d owner=%d mode0=%d mode1=%d", + entry.SourceCharacterID, ownerChannel, len(mode0), len(mode1))) + } +} + +func (s *Service) publishHeadlessActorToLeader(headless *gameSession, runtime *runtimeDungeonState) bool { + if s == nil || headless == nil || runtime == nil || runtime.partyDungeonOwner == nil { + return false + } + leader, online := s.onlineGameSession(runtime.partyDungeonOwner.leaderID) + if !online || leader == nil { + return false + } + projection, found := currentPartyActorProjectionSnapshot( + headless, headless.selectedCharacterID, headless.characterGeneration) + if !found { + return false + } + for _, body := range [][]byte{projection.mode0, projection.mode1} { + if len(body) == 0 { + continue + } + if err := s.sendGameUpperRawClass( + leader, uint16(dnfenum.CmdPacketSetUDPIPPort), body, 0); err != nil { + return false + } + } + leader.townMu.Lock() + position := leader.townPositionSnapshot + leader.townMu.Unlock() + x := int(position.PositionX) + int(headless.selectedCharacterID%3)*40 + y := int(position.PositionY) + area := buildCurrentTownUserAreaNotificationBody( + currentSceneActorObjectKey(headless.selectedCharacterID), + position.TownID, 0xff, uint16(x), uint16(y), position.MovementCode, + currentActorDefaultUserStateBits) + if err := s.sendGameUpperRawClass(leader, currentTownUserAreaNotificationMsgID, area, 0); err != nil { + return false + } + move := buildCurrentTownUserPositionNotificationBody( + currentSceneActorObjectKey(headless.selectedCharacterID), + uint16(x), uint16(y), position.MovementCode, 100) + if err := s.sendGameUpperRawClass(leader, currentTownUserPositionNotificationMsgID, move, 0); err != nil { + return false + } + headlessDebug(fmt.Sprintf("headless_actor_projected char=%d leader=%d mode0=%d mode1=%d x=%d y=%d", + headless.selectedCharacterID, leader.selectedCharacterID, len(projection.mode0), len(projection.mode1), x, y)) + return true +} + +func (s *Service) publishHeadlessActorsBeforeStart(leader *gameSession, runtime *runtimeDungeonState) { + if s == nil || leader == nil || runtime == nil || runtime.partyDungeonOwner == nil { + return + } + for _, member := range runtime.partyDungeonOwner.members { + identity, online := s.onlineGameSessionCharacterSnapshot(member.userID) + if !online || identity.session == nil || !identity.session.companionHeadless || + identity.session.headlessActorPublished { + continue + } + if s.publishHeadlessActorToLeader(identity.session, runtime) { + identity.session.headlessActorPublished = true + } + } +} + +func (s *Service) ensureHeadlessCompanionParty(ownerSession *gameSession, ids []uint16) { + if s == nil || ownerSession == nil || len(ids) == 0 { + return + } + manager := s.runtimePartyManagerForService() + if manager == nil { + return + } + ownerIdentity, ok := s.boundGameSessionCharacterSnapshot(ownerSession) + if !ok { + headlessDebug("party owner_identity_missing") + return + } + ownerMember, ok := s.runtimePartyMemberForIdentity(ownerIdentity) + if !ok { + headlessDebug(fmt.Sprintf("party owner_member_invalid owner=%d gen=%d", ownerIdentity.character, ownerIdentity.generation)) + return + } + snapshot, found := manager.SnapshotByUser(ownerIdentity.character, ownerIdentity.generation) + headlessDebug(fmt.Sprintf("party snapshot_before found=%v id=%d members=%d", found, snapshot.ID, len(snapshot.Members))) + if !found { + created := manager.EnsureLeader(ownerMember, runtimePartyStateSnapshot(ownerSession)) + if !created.OK { + headlessDebug("party ensure_leader_failed reason=" + created.Reason) + s.logGameEvent(ownerSession, "game-companion-headless-party-failed", + "stage", "leader", "reason", created.Reason) + return + } + snapshot = created.Party + } else if len(snapshot.Members) > 1 { + // A real party already owns this roster; never mix headless volunteers in. + headlessDebug(fmt.Sprintf("party real_party_present members=%d", len(snapshot.Members))) + return + } + for _, id := range ids { + identity, online := s.onlineGameSessionCharacterSnapshot(id) + if !online || identity.session == nil || !identity.session.companionHeadless { + headlessDebug(fmt.Sprintf("party join_skip id=%d online=%v", id, online)) + continue + } + member, memberOK := s.runtimePartyMemberForIdentity(identity) + if !memberOK { + headlessDebug(fmt.Sprintf("party join_member_invalid id=%d", id)) + continue + } + joined := manager.Join(snapshot.ID, member) + if !joined.OK { + headlessDebug(fmt.Sprintf("party join_failed id=%d reason=%s", id, joined.Reason)) + s.logGameEvent(ownerSession, "game-companion-headless-party-failed", + "stage", "join", "member_id", id, "reason", joined.Reason) + continue + } + snapshot = joined.Party + headlessDebug(fmt.Sprintf("party joined id=%d members=%d", id, len(snapshot.Members))) + } + if len(snapshot.Members) <= 1 { + headlessDebug("party no_members_after_join") + return + } + state := s.publishRuntimePartySnapshot(snapshot) + headlessDebug(fmt.Sprintf("party published party_id=%d members=%d", state.PartyID, len(snapshot.Members))) + if state.PartyID <= 0 { + s.logGameEvent(ownerSession, "game-companion-headless-party-failed", + "stage", "publish") + return + } + s.logGameEvent(ownerSession, "game-companion-headless-party-online", + "owner_character_id", ownerSession.selectedCharacterID, + "party_id", state.PartyID, + "member_count", len(snapshot.Members)) +} + +// runHeadlessCompanionAIC is the server-side action driver for one headless +// volunteer. The first milestone commits real monster deaths as that character: +// the existing op39 owner validates the room actor, applies reward/clear state, +// and broadcasts the death to every real party member, so the player sees the +// volunteer actually clearing the room. Movement/skill choreography is a later +// layer on top of the same driver. +func (s *Service) runHeadlessCompanionAIC(session *gameSession) { + if s == nil || session == nil { + return + } + ticker := time.NewTicker(1500 * time.Millisecond) + defer ticker.Stop() + for range ticker.C { + if session.selectedCharacterID == 0 { + return + } + session.dungeon.mu.Lock() + runtime := session.dungeon.runtime + if runtime == nil || runtime.Room == nil || runtime.partyDungeonOwner == nil { + session.dungeon.mu.Unlock() + continue + } + snapshot := runtime.Room.Snapshot() + session.dungeon.mu.Unlock() + + // A real follower sends op37 FINISH_LOADING after every room load; the + // party owner's loading gate waits for every member before it releases + // the leader. The headless session has no client, so issue the same + // request itself. The handler is idempotent per loading cycle. + if !session.headlessActorPublished { + if s.publishHeadlessActorToLeader(session, runtime) { + session.headlessActorPublished = true + } + } + _ = s.sendFinishLoadingStatus(session, make([]byte, currentFinishLoadingLegacyRequestBodySize)) + + var target uint32 + for _, monster := range snapshot.Monsters { + if monster.State == runtimeDungeonMonsterAnnounced { + target = monster.ObjectKey + break + } + } + if target == 0 { + continue + } + body := make([]byte, dungeoncmd.DieMonsterRequestSize) + binary.LittleEndian.PutUint32(body[0:4], target) + binary.LittleEndian.PutUint16(body[4:6], + currentSceneActorObjectKey(session.selectedCharacterID)) + if err := s.handleDungeonMonsterDeath(session, body); err != nil { + s.logGameEvent(session, "game-companion-headless-ai-death-failed", + "character_id", session.selectedCharacterID, + "object_key", target, + "error", err) + continue + } + s.logGameEvent(session, "game-companion-headless-ai-action", + "character_id", session.selectedCharacterID, + "action", "kill_monster", + "object_key", target, + "room", snapshot.Coordinate.String(), + "map_id", snapshot.MapID) + } +} diff --git a/server/internal/services/dnfbridge/companion_native_party.go b/server/internal/services/dnfbridge/companion_native_party.go new file mode 100644 index 0000000..3c8edf2 --- /dev/null +++ b/server/internal/services/dnfbridge/companion_native_party.go @@ -0,0 +1,430 @@ +package dnfbridge + +import ( + "context" + "os" + "strconv" + "strings" + + "longheng.io/server/internal/modules/dnf/alignedcmd" + "longheng.io/server/internal/modules/dnf/dnfenum" + "longheng.io/server/internal/modules/dnf/party" + dnffriend "longheng.io/server/internal/modules/dnf/unitedfriend" +) + +// Volunteers are persistent social characters: the native friend list and the +// native party frame both resolve them through a synthetic presence session. +// The session has no socket; it exists only while the server process is up so +// the operator's friend window keeps seeing the volunteers as online, including +// after a dungeon ends. +const ( + currentCompanionNativePartyEnv = "DNF_COMPANION_NATIVE_PARTY" + // Presence of this file disables the native op9/op153 frame without a + // restart. The friend presence stays online; only the party window is + // suppressed, which is the fast rollback if a client build rejects the + // synthetic roster. + currentCompanionNativePartyDisableFile = "companion_native_party.disabled" + currentCompanionVirtualPrefix = "companion-presence-" +) + +func currentCompanionNativePartyEnabled() bool { + switch strings.ToLower(strings.TrimSpace(os.Getenv(currentCompanionNativePartyEnv))) { + case "0", "off", "false", "no": + return false + } + if _, err := os.Stat(currentCompanionNativePartyDisableFile); err == nil { + return false + } + return true +} + +func (s *Service) companionPresenceSession(characterID uint16) (*gameSession, bool) { + if s == nil || characterID == 0 { + return nil, false + } + // A real client always wins over a synthetic presence row. + if real, online := s.onlineGameSession(characterID); online && real != nil { + return real, false + } + s.companionPresenceMu.Lock() + defer s.companionPresenceMu.Unlock() + session := s.companionSessions[characterID] + return session, session != nil +} + +// companionPresenceFriendChannel returns the friend-row channel for a synthetic +// volunteer. It copies the field under companionPresenceMu because ensure may +// update the channel when the owner moves. +func (s *Service) companionPresenceFriendChannel(characterID uint16) (uint16, bool) { + if s == nil || characterID == 0 { + return 0, false + } + if real, online := s.onlineGameSession(characterID); online && real != nil { + return 0, false + } + s.companionPresenceMu.Lock() + defer s.companionPresenceMu.Unlock() + session := s.companionSessions[characterID] + if session == nil { + return 0, false + } + return uint16(session.channel.ID), true +} + +func (s *Service) companionSessionSnapshot(characterID uint16) (boundGameSessionCharacter, bool) { + session, ok := s.companionPresenceSession(characterID) + if !ok || session == nil || session.companionVirtual == false { + return boundGameSessionCharacter{}, false + } + return boundGameSessionCharacter{ + session: session, + character: characterID, + generation: session.characterGeneration, + virtual: true, + }, true +} + +func (s *Service) companionSessionCurrent(identity boundGameSessionCharacter) bool { + if s == nil || identity.session == nil || identity.character == 0 { + return false + } + s.companionPresenceMu.Lock() + defer s.companionPresenceMu.Unlock() + return s.companionSessions[identity.character] == identity.session && + identity.session.selectedCharacterID == identity.character && + identity.session.characterGeneration == identity.generation +} + +func (s *Service) nextCompanionGeneration() uint64 { + s.mu.Lock() + defer s.mu.Unlock() + s.nextGameSessionGeneration++ + if s.nextGameSessionGeneration == 0 { + s.nextGameSessionGeneration++ + } + return s.nextGameSessionGeneration +} + +// ensureCompanionPresenceForSession makes the currently configured volunteers +// visible in the native friend window for this owner. It is called at the login +// scene tail (before op273) and again at dungeon entry. +func (s *Service) ensureCompanionPresenceForSession(ctx context.Context, session *gameSession) { + if s == nil || session == nil || session.selectedCharacterID == 0 || + !currentDungeonCompanionTeamModeEnabled() { + return + } + if ctx == nil { + ctx = context.Background() + } + repos, ok := s.repositoryGroup() + if !ok || repos.Character == nil || repos.Settings == nil { + return + } + ownerID := session.selectedCharacterID + ownerKey := strconv.FormatUint(uint64(ownerID), 10) + cfg, _, _, err := s.loadCurrentDungeonCompanionConfig( + ctx, ownerKey, strings.TrimSpace(s.accountIDForSession(session)), repos) + if err != nil { + s.logGameEvent(session, "game-companion-presence-config-failed", + "owner_character_id", ownerID, "error", err) + return + } + if !cfg.Enabled { + s.dropCompanionPresenceForOwner(ownerID) + return + } + sources := cfg.Sources() + accountID := strings.TrimSpace(s.accountIDForSession(session)) + if accountID == "" { + owner, found, loadErr := repos.Character.Load(ctx, ownerKey) + if loadErr != nil || !found { + return + } + accountID = strings.TrimSpace(owner.AccountID) + } + matched, _, applied := s.autoMatchCurrentDungeonCompanionSources( + ctx, repos, accountID, ownerID, sources) + if applied { + sources = matched + } + if len(sources) == 0 { + return + } + ownerName := "" + if _, name, _, found := s.selectedCharacterForEnter(ctx, session); found { + ownerName = name + } + s.ensureCompanionFriendRelations(ctx, session, ownerName, sources) + if currentCompanionHeadlessEnabled() { + ids := s.ensureHeadlessCompanionSessions(ctx, session, sources, accountID) + s.ensureHeadlessCompanionParty(session, ids) + } else { + s.dropHeadlessCompanionSessionsForOwner(ownerID) + s.ensureCompanionVirtualSessions(ctx, session, sources, accountID) + } + s.logGameEvent(session, "game-companion-presence-online", + "owner_character_id", ownerID, + "source_character_ids", strings.Join(sources, ","), + "count", len(sources)) +} + +func (s *Service) ensureCompanionVirtualSessions( + ctx context.Context, + ownerSession *gameSession, + sources []string, + accountID string, +) { + if s == nil || ownerSession == nil || len(sources) == 0 { + return + } + repos, ok := s.repositoryGroup() + if !ok || repos.Character == nil { + return + } + for _, raw := range sources { + id, ok := currentDungeonCompanionProjectionSourceIDValue(raw) + if !ok || id == ownerSession.selectedCharacterID { + continue + } + if _, realOnline := s.onlineGameSession(id); realOnline { + continue + } + character, found, err := repos.Character.Load(ctx, strconv.FormatUint(uint64(id), 10)) + if err != nil || !found || character.Stats["delete_flag"] != 0 || + strings.TrimSpace(character.Name) == "" { + continue + } + // Allocate the generation before taking companionPresenceMu: the + // generation owner lives under Service.mu, and bindGameSessionCharacter + // holds Service.mu while dropping a virtual session. + generation := s.nextCompanionGeneration() + s.companionPresenceMu.Lock() + if s.companionSessions == nil { + s.companionSessions = make(map[uint16]*gameSession) + } + session := s.companionSessions[id] + if session == nil { + session = &gameSession{ + connID: currentCompanionVirtualPrefix + strconv.FormatUint(uint64(id), 10), + accountID: accountID, + selectedCharacterID: id, + characterGeneration: generation, + channel: ownerSession.channel, + companionVirtual: true, + companionOwnerID: ownerSession.selectedCharacterID, + } + s.companionSessions[id] = session + } else { + session.channel = ownerSession.channel + session.companionOwnerID = ownerSession.selectedCharacterID + session.accountID = accountID + } + s.companionPresenceMu.Unlock() + } +} + +func (s *Service) ensureCompanionFriendRelations( + ctx context.Context, + session *gameSession, + ownerName string, + sources []string, +) { + if s == nil || session == nil || strings.TrimSpace(ownerName) == "" { + return + } + repos, ok := s.repositoryGroup() + if !ok || repos.UnitedFriend == nil || repos.Character == nil { + return + } + owner, err := dnffriend.NewOwner(repos, nil) + if err != nil { + return + } + ownerID := session.selectedCharacterID + s.friendMu.Lock() + defer s.friendMu.Unlock() + for _, raw := range sources { + id, ok := currentDungeonCompanionProjectionSourceIDValue(raw) + if !ok || id == ownerID { + continue + } + character, found, loadErr := repos.Character.Load(ctx, strconv.FormatUint(uint64(id), 10)) + if loadErr != nil || !found || strings.TrimSpace(character.Name) == "" { + continue + } + if _, addErr := owner.Add(ctx, ownerName, ownerID, character.Name, id); addErr != nil { + if addErr != dnffriend.ErrFull { + s.logGameEvent(session, "game-companion-friend-add-failed", + "owner_character_id", ownerID, + "source_character_id", id, + "error", addErr) + } + continue + } + s.logGameEvent(session, "game-companion-friend-ensured", + "owner_character_id", ownerID, + "source_character_id", id, + "name", character.Name) + } +} + +func (s *Service) dropCompanionPresenceCharacter(characterID uint16) { + if s == nil || characterID == 0 { + return + } + s.companionPresenceMu.Lock() + defer s.companionPresenceMu.Unlock() + delete(s.companionSessions, characterID) +} + +func (s *Service) dropCompanionPresenceForOwner(ownerID uint16) { + if s == nil || ownerID == 0 { + return + } + s.companionPresenceMu.Lock() + defer s.companionPresenceMu.Unlock() + for id, session := range s.companionSessions { + if session != nil && session.companionOwnerID == ownerID { + delete(s.companionSessions, id) + } + } +} + +func companionPartyID(ownerID uint16) uint16 { + id := uint16(0xE000) | (ownerID & 0x0FFF) + if id == 0 || id == 0xFFFF { + id = 0xE001 + } + return id +} + +func (s *Service) buildCompanionPartyState(session *gameSession, run *currentDungeonCompanionRun) alignedcmd.PartyState { + if s == nil || session == nil || run == nil { + return alignedcmd.PartyState{} + } + state := alignedcmd.PartyState{ + PartyID: int(companionPartyID(session.selectedCharacterID)), + IsLeader: true, + UserID: session.selectedCharacterID, + UserState: 100, + MaxMembers: 4, + } + state.Members = append(state.Members, alignedcmd.PartyMemberState{ + UserID: session.selectedCharacterID, Slot: 0, UserState: 100, HPPercent: 100, MPPercent: 100, + }) + slot := byte(1) + for _, entry := range run.Sources { + if !entry.Ready || entry.SourceCharacterID == 0 { + continue + } + if slot >= state.MaxMembers { + break + } + state.Members = append(state.Members, alignedcmd.PartyMemberState{ + UserID: entry.SourceCharacterID, Slot: slot, UserState: 100, HPPercent: 100, MPPercent: 100, + }) + slot++ + } + return state +} + +// publishCurrentDungeonCompanionNativeParty builds the native op9 party frame +// (kind-0 complete roster) followed by op153 HP/MP rows. It intentionally does +// not send op11: the volunteers have no P2P socket, and a made-up endpoint +// would leave the client stuck on "connecting". The scene actors themselves +// still come from the support-soldier projection. +func (s *Service) publishCurrentDungeonCompanionNativeParty(session *gameSession, runtime *runtimeDungeonState) { + if s == nil || session == nil || runtime == nil || runtime.Companion == nil || + currentCompanionHeadlessEnabled() || + !currentCompanionNativePartyEnabled() { + return + } + run := runtime.Companion + if !run.Ready || len(run.Sources) == 0 { + return + } + currentParty := runtimePartyStateSnapshot(session) + if currentParty.PartyID > 0 && len(runtimePartyMembers(currentParty)) > 1 { + s.logGameEvent(session, "game-companion-native-party-skipped", + "owner_character_id", session.selectedCharacterID, + "reason", "owner_already_in_native_party") + return + } + if runtime.partyDungeonOwner != nil || isCurrentImplementedRaidChannel(session) { + s.logGameEvent(session, "game-companion-native-party-skipped", + "owner_character_id", session.selectedCharacterID, + "reason", "party_or_raid_owner_has_priority") + return + } + sources := make([]string, 0, len(run.Sources)) + for _, entry := range run.Sources { + if entry.Ready && entry.SourceCharacterID != 0 { + sources = append(sources, strconv.FormatUint(uint64(entry.SourceCharacterID), 10)) + } + } + s.ensureCompanionVirtualSessions( + context.Background(), session, sources, strings.TrimSpace(s.accountIDForSession(session))) + state := s.buildCompanionPartyState(session, run) + if len(state.Members) <= 1 { + return + } + sent, err := s.sendCurrentPartyActorFrameProjection( + session, session, state, "companion_native_party") + if err != nil { + s.logGameEvent(session, "game-companion-native-party-failed", + "owner_character_id", session.selectedCharacterID, + "party_id", state.PartyID, + "error", err) + return + } + if !sent { + s.logGameEvent(session, "game-companion-native-party-deferred", + "owner_character_id", session.selectedCharacterID, + "party_id", state.PartyID, + "reason", "op9_projection_not_delivered") + return + } + if err := s.sendRuntimePartyRealtimeInfoLocal(session, state); err != nil { + s.logGameEvent(session, "game-companion-native-party-rows-failed", + "owner_character_id", session.selectedCharacterID, + "party_id", state.PartyID, + "error", err) + return + } + run.NativePartyID = uint16(state.PartyID) + run.NativePartySent = true + s.logGameEvent(session, "game-companion-native-party-sent", + "owner_character_id", session.selectedCharacterID, + "party_id", state.PartyID, + "member_count", len(state.Members), + "source_character_ids", uint16ListLog(currentDungeonCompanionTeamSourceIDs(run))) +} + +// clearCurrentDungeonCompanionNativeParty empties only the party window; the +// virtual sessions and friend rows stay online, which is the requested +// post-dungeon state. +func (s *Service) clearCurrentDungeonCompanionNativeParty(session *gameSession, run *currentDungeonCompanionRun) { + if s == nil || session == nil || run == nil || !run.NativePartySent || run.NativePartyID == 0 { + return + } + body := buildCurrentSceneOp9ActorRemovalBodyInContext( + run.NativePartyID, currentPartySceneOwnerContext(session)) + if err := s.sendGameUpperRawClass(session, uint16(dnfenum.CmdPacketRecoverStamina), body, 0); err != nil { + s.logGameEvent(session, "game-companion-native-party-clear-failed", + "owner_character_id", session.selectedCharacterID, + "party_id", run.NativePartyID, + "error", err) + } + if err := s.sendGameUpperRawClassCodec( + session, 0x0099, party.BuildEmptyRealtimeInfo(), 0, true); err != nil { + s.logGameEvent(session, "game-companion-native-party-clear-rows-failed", + "owner_character_id", session.selectedCharacterID, + "party_id", run.NativePartyID, + "error", err) + } + run.NativePartySent = false + s.logGameEvent(session, "game-companion-native-party-cleared", + "owner_character_id", session.selectedCharacterID, + "party_id", run.NativePartyID, + "friends_online", true) +} diff --git a/server/internal/services/dnfbridge/companion_native_party_test.go b/server/internal/services/dnfbridge/companion_native_party_test.go new file mode 100644 index 0000000..f717e17 --- /dev/null +++ b/server/internal/services/dnfbridge/companion_native_party_test.go @@ -0,0 +1,129 @@ +package dnfbridge + +import ( + "bytes" + "encoding/binary" + "net" + "testing" + "time" + + "longheng.io/server/internal/modules/dnf/channelcatalog" +) + +type companionPartyTestConn struct { + net.Conn + write bytes.Buffer +} + +func (c *companionPartyTestConn) Write(data []byte) (int, error) { return c.write.Write(data) } +func (c *companionPartyTestConn) SetWriteDeadline(time.Time) error { + return nil +} + +func TestCompanionPresenceFriendRowRendersOnline(t *testing.T) { + service := &Service{} + virtual := &gameSession{ + selectedCharacterID: 6, + characterGeneration: 7, + channel: channelcatalog.Channel{ID: 11}, + companionVirtual: true, + companionOwnerID: 2, + } + service.companionSessions = map[uint16]*gameSession{6: virtual} + + presence := service.currentUnitedFriendPresence(6) + if presence.Busy { + t.Fatal("volunteer friend row must not render busy/登录中") + } + if presence.ChannelID != 11 { + t.Fatalf("friend row channel=%d want 11", presence.ChannelID) + } +} + +func TestBuildCompanionPartyStateUsesNativeFourSlotRoster(t *testing.T) { + service := &Service{} + owner := &gameSession{selectedCharacterID: 2} + run := ¤tDungeonCompanionRun{ + Ready: true, + Sources: []currentDungeonCompanionSourceRun{ + {Ready: true, SourceCharacterID: 6}, + {Ready: false, SourceCharacterID: 7}, + {Ready: true, SourceCharacterID: 3}, + }, + } + state := service.buildCompanionPartyState(owner, run) + if state.PartyID <= 0 || state.PartyID >= 0xFFFF { + t.Fatalf("party id=%d is not a printable native party", state.PartyID) + } + if state.UserID != 2 || !state.IsLeader || state.MaxMembers != 4 { + t.Fatalf("party identity=%+v", state) + } + if len(state.Members) != 3 { + t.Fatalf("members=%v want owner + 2 ready volunteers", state.Members) + } + want := []struct { + id uint16 + slot byte + }{{2, 0}, {6, 1}, {3, 2}} + for index, expected := range want { + member := state.Members[index] + if member.UserID != expected.id || member.Slot != expected.slot { + t.Fatalf("member %d=%+v want id=%d slot=%d", index, member, expected.id, expected.slot) + } + if member.HPPercent != 100 || member.MPPercent != 100 { + t.Fatalf("member %d hp/mp=%d/%d want 100/100", index, member.HPPercent, member.MPPercent) + } + } +} + +func TestClearCompanionNativePartySendsOp9ThenOp153(t *testing.T) { + connection := &companionPartyTestConn{} + session := &gameSession{ + conn: connection, + connID: "companion-party-clear", + selectedCharacterID: 2, + characterGeneration: 3, + channel: channelcatalog.Channel{ID: 11}, + } + run := ¤tDungeonCompanionRun{ + Ready: true, + NativePartyID: 0xE002, + NativePartySent: true, + } + service := &Service{} + service.clearCurrentDungeonCompanionNativeParty(session, run) + if run.NativePartySent { + t.Fatal("native party flag was not cleared") + } + stream := connection.write.Bytes() + headerSize := service.gameUpperHeaderSize() + msgIDs := make([]uint16, 0, 2) + for len(stream) > 0 { + if len(stream) < headerSize { + t.Fatalf("truncated packet header: %d", len(stream)) + } + total := int(binary.LittleEndian.Uint32(stream[3:7])) + if total < headerSize || total > len(stream) { + t.Fatalf("packet total=%d stream=%d", total, len(stream)) + } + msgIDs = append(msgIDs, binary.LittleEndian.Uint16(stream[1:3])) + stream = stream[total:] + } + if len(msgIDs) != 2 || msgIDs[0] != 9 || msgIDs[1] != 0x0099 { + t.Fatalf("clear packets=%v want [9 153]", msgIDs) + } +} + +func TestCompanionSessionIdentityIsCurrentOnlyWhileRegistered(t *testing.T) { + service := &Service{} + virtual := &gameSession{selectedCharacterID: 6, characterGeneration: 9, companionVirtual: true} + service.companionSessions = map[uint16]*gameSession{6: virtual} + identity, ok := service.companionSessionSnapshot(6) + if !ok || !identity.virtual || !service.boundGameSessionCharacterCurrent(identity) { + t.Fatalf("virtual identity=%+v ok=%v current=%v", identity, ok, service.boundGameSessionCharacterCurrent(identity)) + } + delete(service.companionSessions, 6) + if service.boundGameSessionCharacterCurrent(identity) { + t.Fatal("removed volunteer session must fail the liveness check") + } +} diff --git a/server/internal/services/dnfbridge/companion_panel_snapshot.go b/server/internal/services/dnfbridge/companion_panel_snapshot.go new file mode 100644 index 0000000..e7b3938 --- /dev/null +++ b/server/internal/services/dnfbridge/companion_panel_snapshot.go @@ -0,0 +1,306 @@ +package dnfbridge + +import ( + "context" + "errors" + "fmt" + "strconv" + "strings" + + dnfcharstat "longheng.io/server/internal/modules/dnf/charstat" + dnfrepo "longheng.io/server/internal/modules/dnf/repository" +) + +// Companion panel snapshot (Option B): the client captures the source +// character's final character-info panel values and stores them in a settings +// record; the support-soldier projection prefers this snapshot over the +// PVF-derived base vector so the companion can mirror the source panel. +const ( + companionPanelSnapshotKeyPrefix = "character:" + companionPanelSnapshotKeySuffix = ":companion-panel-v1" +) + +var errCompanionPanelCharacterID = errors.New("companion panel: character_id is required") + +type companionPanelSnapshot struct { + HPMax int64 + MPMax int64 + Strength int64 + Intelligence int64 + Vitality int64 + Spirit int64 + PhysicalAttack int64 + MagicalAttack int64 + IndependentAttack int64 + PhysicalDefense int64 + MagicalDefense int64 + FireResistance int64 + WaterResistance int64 + DarkResistance int64 + LightResistance int64 + MoveSpeed int64 + AttackSpeed int64 + CastSpeed int64 + HitRecovery int64 + JumpPower int64 + Weight int64 + InventoryLimit int64 + HPRegenSpeed int64 + MPRegenSpeed int64 + SourceClient string + + // The following values are shown on the character-info panel but are not + // part of the 92-byte companion mode1 blob; they are stored so the GM panel + // can mirror the full panel and future projections can consume them. + // Percentages are stored scaled by 10 (70.0% -> 700); the three speed fields + // above use the blob's scale of 100 (60.50% -> 6050). + PhysicalCritical int64 + MagicalCritical int64 + MagicResistance int64 + HitRate int64 + DodgeRate int64 + Stiffness int64 + FireDamage int64 + WaterDamage int64 + LightDamage int64 + DarkDamage int64 +} + +func companionPanelSnapshotScope(characterID string) string { + return companionPanelSnapshotKeyPrefix + strings.TrimSpace(characterID) + + companionPanelSnapshotKeySuffix +} + +func companionPanelSnapshotInt(values map[string]string, names ...string) int64 { + for _, name := range names { + raw, ok := values[name] + if !ok { + continue + } + parsed, err := strconv.ParseInt(strings.TrimSpace(raw), 10, 64) + if err == nil { + return parsed + } + } + return 0 +} + +func loadCompanionPanelSnapshot( + ctx context.Context, + repos dnfrepo.Group, + characterID string, +) (companionPanelSnapshot, bool) { + if repos.Settings == nil || strings.TrimSpace(characterID) == "" { + return companionPanelSnapshot{}, false + } + record, found, err := repos.Settings.Load( + ctx, companionPanelSnapshotScope(characterID)) + if err != nil || !found { + return companionPanelSnapshot{}, false + } + values := record.Values + snapshot := companionPanelSnapshot{ + HPMax: companionPanelSnapshotInt(values, "hp_max"), + MPMax: companionPanelSnapshotInt(values, "mp_max"), + Strength: companionPanelSnapshotInt(values, "strength"), + Intelligence: companionPanelSnapshotInt(values, "intelligence"), + Vitality: companionPanelSnapshotInt(values, "vitality"), + Spirit: companionPanelSnapshotInt(values, "spirit"), + PhysicalAttack: companionPanelSnapshotInt(values, "physical_attack"), + MagicalAttack: companionPanelSnapshotInt(values, "magical_attack"), + IndependentAttack: companionPanelSnapshotInt(values, "independent_attack"), + PhysicalDefense: companionPanelSnapshotInt(values, "physical_defense"), + MagicalDefense: companionPanelSnapshotInt(values, "magical_defense"), + FireResistance: companionPanelSnapshotInt(values, "fire_resistance"), + WaterResistance: companionPanelSnapshotInt(values, "water_resistance"), + DarkResistance: companionPanelSnapshotInt(values, "dark_resistance"), + LightResistance: companionPanelSnapshotInt(values, "light_resistance"), + MoveSpeed: companionPanelSnapshotInt(values, "move_speed"), + AttackSpeed: companionPanelSnapshotInt(values, "attack_speed"), + CastSpeed: companionPanelSnapshotInt(values, "cast_speed"), + HitRecovery: companionPanelSnapshotInt(values, "hit_recovery"), + JumpPower: companionPanelSnapshotInt(values, "jump_power"), + Weight: companionPanelSnapshotInt(values, "weight"), + InventoryLimit: companionPanelSnapshotInt(values, "inventory_limit"), + HPRegenSpeed: companionPanelSnapshotInt(values, "hp_regen"), + MPRegenSpeed: companionPanelSnapshotInt(values, "mp_regen"), + SourceClient: strings.TrimSpace(values["source_client"]), + PhysicalCritical: companionPanelSnapshotInt(values, "physical_critical"), + MagicalCritical: companionPanelSnapshotInt(values, "magical_critical"), + MagicResistance: companionPanelSnapshotInt(values, "magic_resistance"), + HitRate: companionPanelSnapshotInt(values, "hit_rate"), + DodgeRate: companionPanelSnapshotInt(values, "dodge_rate"), + Stiffness: companionPanelSnapshotInt(values, "stiffness"), + FireDamage: companionPanelSnapshotInt(values, "fire_damage"), + WaterDamage: companionPanelSnapshotInt(values, "water_damage"), + LightDamage: companionPanelSnapshotInt(values, "light_damage"), + DarkDamage: companionPanelSnapshotInt(values, "dark_damage"), + } + if snapshot.HPMax <= 0 || snapshot.MPMax <= 0 || snapshot.Strength <= 0 { + return companionPanelSnapshot{}, false + } + return snapshot, true +} + +func (s companionPanelSnapshot) Vector() dnfcharstat.Vector { + return dnfcharstat.Vector{ + HPMax: s.HPMax, + MPMax: s.MPMax, + Strength: s.Strength, + Intelligence: s.Intelligence, + Vitality: s.Vitality, + Spirit: s.Spirit, + PhysicalAttack: s.PhysicalAttack, + PhysicalDefense: s.PhysicalDefense, + MagicalAttack: s.MagicalAttack, + MagicalDefense: s.MagicalDefense, + IndependentAttack: s.IndependentAttack, + FireResistance: s.FireResistance, + WaterResistance: s.WaterResistance, + DarkResistance: s.DarkResistance, + LightResistance: s.LightResistance, + InventoryLimit: s.InventoryLimit, + HPRegenSpeed: s.HPRegenSpeed, + MPRegenSpeed: s.MPRegenSpeed, + MoveSpeed: s.MoveSpeed, + AttackSpeed: s.AttackSpeed, + CastSpeed: s.CastSpeed, + HitRecovery: s.HitRecovery, + JumpPower: s.JumpPower, + Weight: s.Weight, + } +} + +// CompanionPanelValues returns the raw stored panel snapshot values for the GM +// editor. found is false when no snapshot has been saved yet. +func (s *Service) CompanionPanelValues(ctx context.Context, characterID string) (map[string]string, bool, error) { + repos, ok := s.repositoryGroup() + if !ok { + return nil, false, ErrGMRepositoryUnavailable + } + characterID = strings.TrimSpace(characterID) + if characterID == "" { + return nil, false, errCompanionPanelCharacterID + } + record, found, err := repos.Settings.Load(ctx, companionPanelSnapshotScope(characterID)) + if err != nil { + return nil, false, err + } + if !found { + return map[string]string{}, false, nil + } + values := make(map[string]string, len(record.Values)) + nonEmpty := false + for k, v := range record.Values { + values[k] = v + if strings.TrimSpace(v) != "" { + nonEmpty = true + } + } + // A record whose values are all empty is a leftover of a blank GM save and + // carries no usable panel; report it as not configured so the editor does + // not show a misleading "已读å�–". + if !nonEmpty { + return map[string]string{}, false, nil + } + return values, true, nil +} + +// SaveCompanionPanelValues replaces the stored panel snapshot values. +func (s *Service) SaveCompanionPanelValues(ctx context.Context, characterID string, values map[string]string) error { + repos, ok := s.repositoryGroup() + if !ok { + return ErrGMRepositoryUnavailable + } + characterID = strings.TrimSpace(characterID) + if characterID == "" { + return errCompanionPanelCharacterID + } + cleaned := make(map[string]string, len(values)) + for k, v := range values { + key := strings.TrimSpace(k) + if key == "" { + continue + } + cleaned[key] = strings.TrimSpace(v) + } + return repos.Settings.Save(ctx, dnfrepo.SettingsRecord{ + Scope: companionPanelSnapshotScope(characterID), + Values: cleaned, + }) +} + +// GenerateCompanionPanelSnapshot builds a best-effort panel snapshot from the +// server's PVF character growth plus the character's worn equipment PVF stats +// (and weapon forging). It deliberately does not model enchant cards, +// amplification, reinforcement, quality, set effects, titles, auras or pets: +// the saved values are a BASE ESTIMATE that the GM page can correct. +func (s *Service) GenerateCompanionPanelSnapshot(ctx context.Context, characterID string) (map[string]string, error) { + repos, ok := s.repositoryGroup() + if !ok { + return nil, ErrGMRepositoryUnavailable + } + characterID = strings.TrimSpace(characterID) + if characterID == "" { + return nil, errCompanionPanelCharacterID + } + character, found, err := repos.Character.Load(ctx, characterID) + if err != nil { + return nil, err + } + if !found { + return nil, fmt.Errorf("character %s not found", characterID) + } + base, ok := s.characterPVFStatsForUserInfo(ctx, nil, character, true) + if !ok { + return nil, fmt.Errorf("character %s PVF stats unavailable", characterID) + } + stats := s.addEquipmentPVFStatsForUserInfo(ctx, nil, character, base) + values := companionPanelValuesFromVector(stats, character) + return values, nil +} + +func companionPanelValuesFromVector(stats dnfcharstat.Vector, character dnfrepo.CharacterRecord) map[string]string { + values := make(map[string]string, 24) + put := func(key string, value int64) { + values[key] = strconv.FormatInt(value, 10) + } + put("hp_max", stats.HPMax) + put("mp_max", stats.MPMax) + put("strength", stats.Strength) + put("intelligence", stats.Intelligence) + put("vitality", stats.Vitality) + put("spirit", stats.Spirit) + put("physical_attack", stats.PhysicalAttack) + put("magical_attack", stats.MagicalAttack) + put("independent_attack", stats.IndependentAttack) + put("physical_defense", stats.PhysicalDefense) + put("magical_defense", stats.MagicalDefense) + put("fire_resistance", stats.FireResistance) + put("water_resistance", stats.WaterResistance) + put("dark_resistance", stats.DarkResistance) + put("light_resistance", stats.LightResistance) + put("move_speed", stats.MoveSpeed) + put("attack_speed", stats.AttackSpeed) + put("cast_speed", stats.CastSpeed) + put("hit_recovery", stats.HitRecovery) + jump := stats.JumpPower + if jump == 0 { + jump = character.Stats["stat_jump_power"] + } + put("jump_power", jump) + weight := stats.Weight + if weight == 0 { + weight = character.Stats["stat_weight"] + } + put("weight", weight) + inventory := stats.InventoryLimit + if inventory == 0 { + inventory = character.Stats["stat_inventory_limit"] + } + put("inventory_limit", inventory) + put("hp_regen", stats.HPRegenSpeed) + put("mp_regen", stats.MPRegenSpeed) + values["source_client"] = "server-estimate" + return values +} diff --git a/server/internal/services/dnfbridge/companion_real_actors.go b/server/internal/services/dnfbridge/companion_real_actors.go new file mode 100644 index 0000000..bc2032d --- /dev/null +++ b/server/internal/services/dnfbridge/companion_real_actors.go @@ -0,0 +1,192 @@ +package dnfbridge + +import ( + "context" + "os" + "strings" + + "longheng.io/server/internal/modules/dnf/dnfenum" +) + +// Real-actor PoC for the volunteer squad. +// +// This path is deliberately switch-gated and OFF by default. It publishes each +// volunteer as a real character actor (mode0 + mode1 + mode3, objectKey = +// character id, non-zero party owner context) instead of the support-soldier +// APC projection. It is the first milestone of the "real character enters the +// dungeon" route; attaching the client AIC to these actors is the next client +// patch step, so this path currently ships appearance/roster only. +const ( + currentCompanionRealActorsEnv = "DNF_COMPANION_REAL_ACTORS" + currentCompanionRealActorsFlagFile = "companion_real_actors.enabled" + currentCompanionRealActorsMode0Kind = "real_party_actor" +) + +func currentCompanionRealActorsEnabled() bool { + switch strings.ToLower(strings.TrimSpace(os.Getenv(currentCompanionRealActorsEnv))) { + case "0", "off", "false", "no": + return false + } + if _, err := os.Stat(currentCompanionRealActorsFlagFile); err == nil { + return true + } + return false +} + +// publishCurrentDungeonCompanionRealActors returns true only when every ready +// volunteer was published as a real actor. A partial failure returns false so +// the caller can keep the proven projection path instead of showing a broken +// half-team. +func (s *Service) publishCurrentDungeonCompanionRealActors( + session *gameSession, + runtime *runtimeDungeonState, +) bool { + if s == nil || session == nil || runtime == nil || runtime.Companion == nil || + !currentCompanionRealActorsEnabled() { + return false + } + run := runtime.Companion + if !run.Ready || len(run.Sources) == 0 { + return false + } + ownerContext := currentPartySceneOwnerContext(session) + if ownerContext == 0 && session.channel.ID > 0 && session.channel.ID <= 0xff { + ownerContext = byte(session.channel.ID) + } + if ownerContext == 0 { + s.logGameEvent(session, "game-companion-real-actors-skipped", + "owner_character_id", session.selectedCharacterID, + "reason", "party_owner_context_not_committed") + return false + } + ctx, cancel := context.WithTimeout(context.Background(), createWriteTimeout) + defer cancel() + type realRow struct { + id uint16 + name string + mode0 []byte + mode1 []byte + } + rows := make([]realRow, 0, len(run.Sources)) + for _, entry := range run.Sources { + if !entry.Ready || entry.SourceCharacterID == 0 { + continue + } + state := entry.ProgressionSnapshot + if state.Source.CharacterID == "" { + return false + } + name := strings.TrimSpace(state.Source.Name) + if name == "" { + name = entry.SourceName + } + mode0, err := s.buildCurrentSceneObjectListBodyForSessionInContextStrict( + ctx, session, entry.SourceCharacterID, name, state.Source, true, ownerContext) + if err != nil || len(mode0) < 3 { + s.logGameEvent(session, "game-companion-real-actor-failed", + "source_character_id", entry.SourceCharacterID, + "stage", "mode0", "error", err) + return false + } + reader := csharpLegacyUserInfoReader{ + ctx: ctx, + characterID: state.Source.CharacterID, + service: s, + session: session, + suppressActorSkillResources: true, + equipmentSnapshot: &state.Equipment, + } + mode1 := reader.buildCurrentUserInfoMode1WithEquipmentForOwner( + state.Source, true, entry.SourceCharacterID, true, 0, + currentSceneObjectRoute, ownerContext) + if len(mode1) < 3 { + s.logGameEvent(session, "game-companion-real-actor-failed", + "source_character_id", entry.SourceCharacterID, + "stage", "mode1") + return false + } + rows = append(rows, realRow{id: entry.SourceCharacterID, name: name, mode0: mode0, mode1: mode1}) + } + if len(rows) == 0 { + return false + } + // The client's native multi-row reader creates scene actors for a party + // prelude. Sending one row at a time produced global visuals that a dungeon + // room never rendered; the roster must be one counted mode0/mode1 body. + var multiMode0, multiMode1 packetWriter + multiMode0.writeByte(0) + multiMode0.writeUint16(uint16(len(rows))) + multiMode1.writeByte(1) + multiMode1.writeUint16(uint16(len(rows))) + for _, row := range rows { + multiMode0.writeBytes(row.mode0[3:]) + multiMode1.writeBytes(row.mode1[3:]) + } + for _, body := range [][]byte{multiMode0.bytes(), multiMode1.bytes()} { + if err := s.sendGameUpperRawClass( + session, uint16(dnfenum.CmdPacketSetUDPIPPort), body, 0); err != nil { + s.logGameEvent(session, "game-companion-real-actor-failed", + "stage", "multi-row-send", "error", err) + return false + } + } + session.townMu.Lock() + position := session.townPositionSnapshot + session.townMu.Unlock() + stateBits := currentActorDefaultUserStateBits + if runtime.Character.Stats != nil { + if value, exists := runtime.Character.Stats["user_state_bits"]; exists && value >= 0 && value <= 0xff { + stateBits = byte(value) + } + } + for index, row := range rows { + x := int(position.PositionX) + index*40 + y := int(position.PositionY) + if !position.PositionValid { + x = int(numericCharacterStatValue(runtime.Character, "pos_x")) + index*40 + y = int(numericCharacterStatValue(runtime.Character, "pos_y")) + } + if x < 0 { + x = 0 + } + if x > 0xffff { + x = 0xffff + } + if y < 0 { + y = 0 + } + if y > 0xffff { + y = 0xffff + } + areaBody := buildCurrentTownUserAreaNotificationBody( + currentSceneActorObjectKey(row.id), + position.TownID, 0xff, uint16(x), uint16(y), + position.MovementCode, stateBits, + ) + if err := s.sendGameUpperRawClass( + session, currentTownUserAreaNotificationMsgID, areaBody, 0); err != nil { + s.logGameEvent(session, "game-companion-real-actor-failed", + "source_character_id", row.id, + "stage", "op23", "error", err) + return false + } + s.logGameEvent(session, "game-companion-real-actor-sent", + "source_character_id", row.id, + "name", row.name, + "owner_context", ownerContext, + "object_key", currentSceneActorObjectKey(row.id), + "mode0_bytes", len(row.mode0), + "mode1_bytes", len(row.mode1), + "path", currentCompanionRealActorsMode0Kind) + } + sent := len(rows) + if sent == 0 { + return false + } + s.logGameEvent(session, "game-companion-real-actors-published", + "owner_character_id", session.selectedCharacterID, + "count", sent, + "party_owner_context", ownerContext, + "aic", "pending_client_attachment") + return true +} diff --git a/server/internal/services/dnfbridge/companion_team_mode.go b/server/internal/services/dnfbridge/companion_team_mode.go new file mode 100644 index 0000000..5556452 --- /dev/null +++ b/server/internal/services/dnfbridge/companion_team_mode.go @@ -0,0 +1,268 @@ +package dnfbridge + +import ( + "context" + "encoding/binary" + "os" + "strconv" + "strings" + "time" + + dnfcompanion "longheng.io/server/internal/modules/dnf/companion" + dnfrepo "longheng.io/server/internal/modules/dnf/repository" +) + +// The teammate squad is the default support-soldier entry shape. It can be +// disabled per deployment with DNF_COMPANION_TEAM_MODE=0; the GM settings stay +// authoritative for which characters are preferred, but the server fills the +// remaining slots from the same account at dungeon entry. +const currentDungeonCompanionTeamModeEnv = "DNF_COMPANION_TEAM_MODE" + +const currentDungeonCompanionTeamRole = "teammate" + +func currentDungeonCompanionTeamModeEnabled() bool { + switch strings.ToLower(strings.TrimSpace(os.Getenv(currentDungeonCompanionTeamModeEnv))) { + case "0", "off", "false", "no": + return false + default: + return true + } +} + +// autoMatchCurrentDungeonCompanionSources expands the operator's saved +// selection into a frozen teammate roster for this dungeon. +// +// This is a read-only matchmaking step: no source character is modified and no +// session is created for it. The actual snapshot/AIC/projection pipeline still +// runs per selected source exactly as before, so a bad or deleted character +// fails on its own row instead of aborting the whole team. +func (s *Service) autoMatchCurrentDungeonCompanionSources( + ctx context.Context, + repos dnfrepo.Group, + accountID string, + ownerCharacterID uint16, + configured []string, +) ([]string, []dnfcompanion.TeamSkip, bool) { + if s == nil || repos.Character == nil || strings.TrimSpace(accountID) == "" || + !currentDungeonCompanionTeamModeEnabled() { + return configured, nil, false + } + records, err := repos.Character.ListByAccount(ctx, accountID, dnfrepo.MaxCharacterSlotLimit) + if err != nil { + s.logPacketEvent("dnf-companion-team-match-deferred", + "owner_character_id", ownerCharacterID, + "reason", "character_list_unavailable", + "error", err) + return configured, nil, false + } + ownerLevel := 0 + if owner, ownerFound, ownerErr := repos.Character.Load(ctx, strconv.FormatUint(uint64(ownerCharacterID), 10)); ownerErr == nil && ownerFound { + ownerLevel = owner.Level + } + levelFloor := ownerLevel - 10 + if levelFloor < 1 { + levelFloor = 1 + } + candidates := make([]dnfcompanion.TeamCandidate, 0, len(records)) + for _, record := range records { + id := numericCharacterID(record) + if id <= 0 || id >= int(^uint16(0)) { + continue + } + if ownerLevel > 0 && record.Level > 0 && record.Level < levelFloor { + // A level-21 character in a level-90 party's dungeon entry preflight + // makes the whole party fail the level gate. Do not auto-fill with a + // character the dungeon will reject. + s.logPacketEvent("dnf-companion-team-match-level-skipped", + "owner_character_id", ownerCharacterID, + "candidate_character_id", id, + "candidate_level", record.Level, + "owner_level", ownerLevel, + "level_floor", levelFloor) + continue + } + session, online := s.onlineGameSession(uint16(id)) + if online && session != nil && session.companionHeadless { + // Our own headless presence is not a competing real player. Without + // this, every later auto-match (preflight/dungeon entry) excludes + // the volunteers it just logged in. + online = false + } + candidates = append(candidates, dnfcompanion.TeamCandidate{ + CharacterID: strconv.Itoa(id), + Level: record.Level, + Job: strings.TrimSpace(record.Job), + Slot: record.Slot, + Online: online, + Deleted: record.Stats["delete_flag"] != 0, + }) + } + match := dnfcompanion.MatchTeam( + strconv.FormatUint(uint64(ownerCharacterID), 10), + configured, + candidates, + dnfcompanion.TeamMaxCompanions, + ) + skipped := make([]string, 0, len(match.Skipped)) + for _, entry := range match.Skipped { + if len(skipped) >= 16 { + break + } + skipped = append(skipped, entry.CharacterID+":"+entry.Reason) + } + s.logPacketEvent("dnf-companion-team-match", + "owner_character_id", ownerCharacterID, + "configured", strings.Join(configured, ","), + "selected", strings.Join(match.Selected, ","), + "selected_count", len(match.Selected), + "skipped", strings.Join(skipped, ","), + "limit", dnfcompanion.TeamMaxCompanions) + return match.Selected, match.Skipped, true +} + +func currentDungeonCompanionTeamSourceIDs(run *currentDungeonCompanionRun) []uint16 { + if run == nil { + return nil + } + out := make([]uint16, 0, len(run.Sources)) + for _, entry := range run.Sources { + if entry.Ready { + out = append(out, entry.SourceCharacterID) + } + } + if len(out) == 0 && run.Ready && run.SourceCharacterID != 0 { + out = append(out, run.SourceCharacterID) + } + return out +} + +func currentDungeonCompanionTeamRevision(run *currentDungeonCompanionRun) uint64 { + if run == nil { + return 1 + } + if len(run.Body) >= currentDungeonCompanionProjectionHeaderSize { + if revision := binary.LittleEndian.Uint64(run.Body[8:16]); revision != 0 { + return revision + } + } + for _, entry := range run.Sources { + if len(entry.Body) >= currentDungeonCompanionProjectionHeaderSize { + if revision := binary.LittleEndian.Uint64(entry.Body[8:16]); revision != 0 { + return revision + } + } + } + return 1 +} + +func (s *Service) markCurrentDungeonCompanionTeamOnline( + session *gameSession, + run *currentDungeonCompanionRun, + source string, +) { + if s == nil || run == nil || !run.Ready { + return + } + run.Online = true + run.OnlineAt = s.gameplayNow() + run.OfflineAt = time.Time{} + run.OfflineReason = "" + run.LogoutSent = false + s.logGameEvent(session, "game-dungeon-companion-team-online", + "source", source, + "team_mode", run.TeamMode, + "team_leader_id", run.TeamLeaderID, + "team_size", run.TeamSize, + "ready_count", currentDungeonCompanionReadyCount(run), + "source_character_ids", uint16ListLog(currentDungeonCompanionTeamSourceIDs(run)), + "online_at", run.OnlineAt) +} + +// sendCurrentDungeonCompanionTeamOffline publishes the explicit present=0 +// projection. The client clears every queued/live support actor on that body, +// so one packet is enough for the whole squad and it is safe to call from every +// dungeon boundary: the run's LogoutSent flag makes it idempotent. +func (s *Service) sendCurrentDungeonCompanionTeamOffline( + session *gameSession, + runtime *runtimeDungeonState, + reason string, +) { + if s == nil || session == nil || runtime == nil { + return + } + run := runtime.Companion + if run == nil || !run.Ready || run.LogoutSent { + return + } + run.LogoutSent = true + run.Online = false + run.OfflineAt = s.gameplayNow() + run.OfflineReason = strings.TrimSpace(reason) + // The dungeon party frame goes away; the synthetic friend sessions do not. + s.clearCurrentDungeonCompanionNativeParty(session, run) + ids := currentDungeonCompanionTeamSourceIDs(run) + body := buildCurrentDungeonCompanionOfflineBody(currentDungeonCompanionTeamRevision(run)) + s.logGameEvent(session, "game-dungeon-companion-team-offline", + "reason", run.OfflineReason, + "team_mode", run.TeamMode, + "team_leader_id", run.TeamLeaderID, + "team_size", run.TeamSize, + "offline_count", len(ids), + "source_character_ids", uint16ListLog(ids), + "offline_at", run.OfflineAt, + "private_opcode", currentDungeonCompanionProjectionOpcode, + "body_len", len(body)) + if err := s.sendGameUpperRawClass( + session, + currentDungeonCompanionProjectionOpcode, + body, + 0, + ); err != nil { + s.logGameEvent(session, "game-dungeon-companion-team-offline-send-failed", + "reason", run.OfflineReason, + "error", err) + } +} + +func (s *Service) sendCurrentDungeonCompanionTeamOfflineCurrent( + session *gameSession, + reason string, +) { + if s == nil || session == nil { + return + } + session.dungeon.mu.Lock() + runtime := session.dungeon.runtime + session.dungeon.mu.Unlock() + s.sendCurrentDungeonCompanionTeamOffline(session, runtime, reason) +} + +func uint16ListLog(values []uint16) string { + if len(values) == 0 { + return "" + } + var builder strings.Builder + for index, value := range values { + if index != 0 { + builder.WriteByte(',') + } + builder.WriteString(strconv.Itoa(int(value))) + } + return builder.String() +} + +// runtimeDungeonCompanionCurrent is the compare step used by exit paths that +// opportunistically publish the logout before taking session.dungeon.mu. The +// final authority remains retireCurrentDungeonRuntimeLocked; this only avoids +// sending a stale run's packet when a newer dungeon already replaced it. +func (s *Service) runtimeDungeonCompanionCurrent( + session *gameSession, + runtime *runtimeDungeonState, +) bool { + if s == nil || session == nil || runtime == nil { + return false + } + session.dungeon.mu.Lock() + defer session.dungeon.mu.Unlock() + return session.dungeon.runtime == runtime +} diff --git a/server/internal/services/dnfbridge/companion_team_mode_test.go b/server/internal/services/dnfbridge/companion_team_mode_test.go new file mode 100644 index 0000000..ade5692 --- /dev/null +++ b/server/internal/services/dnfbridge/companion_team_mode_test.go @@ -0,0 +1,111 @@ +package dnfbridge + +import ( + "bytes" + "encoding/binary" + "net" + "testing" + "time" + + dnfcompanion "longheng.io/server/internal/modules/dnf/companion" +) + +// companionOfflineTestConn is intentionally local to this test so the file can +// be compiled without the large shared service_test.go harness. +type companionOfflineTestConn struct { + net.Conn + write bytes.Buffer +} + +func (c *companionOfflineTestConn) Write(data []byte) (int, error) { return c.write.Write(data) } +func (c *companionOfflineTestConn) SetWriteDeadline(time.Time) error { + return nil +} + +func TestBuildCurrentDungeonCompanionOfflineBodyMatchesPresentZeroContract(t *testing.T) { + body := buildCurrentDungeonCompanionOfflineBody(12345) + if len(body) != currentDungeonCompanionProjectionHeaderSize { + t.Fatalf("body length=%d want=%d", len(body), currentDungeonCompanionProjectionHeaderSize) + } + if got := binary.LittleEndian.Uint32(body[0:4]); got != currentDungeonCompanionProjectionMagic { + t.Fatalf("magic=%#x want=%#x", got, currentDungeonCompanionProjectionMagic) + } + if body[4] != currentDungeonCompanionProjectionVersion { + t.Fatalf("version=%d want=%d", body[4], currentDungeonCompanionProjectionVersion) + } + if body[5] != 0 { + t.Fatalf("flags=%#x want 0 (present must be clear)", body[5]) + } + if got := binary.LittleEndian.Uint16(body[6:8]); got != 0 { + t.Fatalf("source_character=%d want 0", got) + } + if got := binary.LittleEndian.Uint64(body[8:16]); got != 12345 { + t.Fatalf("revision=%d want 12345", got) + } + for offset := 16; offset < len(body); offset++ { + if body[offset] != 0 { + t.Fatalf("byte %d=%#x want 0", offset, body[offset]) + } + } +} + +func TestSendCurrentDungeonCompanionTeamOfflineIsIdempotent(t *testing.T) { + connection := &companionOfflineTestConn{} + session := &gameSession{conn: connection, connID: "companion-team-logout"} + run := ¤tDungeonCompanionRun{ + Ready: true, + TeamMode: true, + TeamLeaderID: 1, + TeamSize: 2, + Online: true, + Sources: []currentDungeonCompanionSourceRun{ + {Ready: true, SourceCharacterID: 2, Body: buildCurrentDungeonCompanionOfflineBody(77)}, + {Ready: true, SourceCharacterID: 3, Body: buildCurrentDungeonCompanionOfflineBody(77)}, + }, + } + runtime := &runtimeDungeonState{Companion: run} + service := &Service{} + + service.sendCurrentDungeonCompanionTeamOffline(session, runtime, "dungeon_return_town") + if !run.LogoutSent || run.Online { + t.Fatalf("run state after logout = sent:%v online:%v", run.LogoutSent, run.Online) + } + if run.OfflineAt.IsZero() || run.OfflineReason != "dungeon_return_town" { + t.Fatalf("offline evidence = at:%v reason:%q", run.OfflineAt, run.OfflineReason) + } + first := connection.write.Len() + if first == 0 { + t.Fatal("logout packet was not sent") + } + + // A second boundary must not replay the packet. + service.sendCurrentDungeonCompanionTeamOffline(session, runtime, "return_select_character") + if connection.write.Len() != first { + t.Fatalf("second logout wrote %d extra bytes", connection.write.Len()-first) + } + + stream := connection.write.Bytes() + headerSize := service.gameUpperHeaderSize() + if len(stream) < headerSize { + t.Fatalf("logout stream too short: %d", len(stream)) + } + total := int(binary.LittleEndian.Uint32(stream[3:7])) + if total != len(stream) { + t.Fatalf("logout packet total=%d stream=%d", total, len(stream)) + } + if msgID := binary.LittleEndian.Uint16(stream[1:3]); msgID != currentDungeonCompanionProjectionOpcode { + t.Fatalf("msg id=%#x want=%#x", msgID, currentDungeonCompanionProjectionOpcode) + } + body := stream[headerSize:total] + if len(body) != currentDungeonCompanionProjectionHeaderSize || body[5] != 0 { + t.Fatalf("logout body length=%d flags=%d", len(body), body[5]) + } +} + +func TestMatchTeamAutoFillKeepsProjectionPipelinePerSource(t *testing.T) { + // The matcher is pure; this guard pins the cap the bridge passes so a future + // change cannot silently form a five-player dungeon party. + if dnfcompanion.TeamMaxCompanions != 3 { + t.Fatalf("TeamMaxCompanions=%d want 3", dnfcompanion.TeamMaxCompanions) + } +} diff --git a/server/internal/services/dnfbridge/game.go b/server/internal/services/dnfbridge/game.go index 73bd355..32f578b 100644 --- a/server/internal/services/dnfbridge/game.go +++ b/server/internal/services/dnfbridge/game.go @@ -45,6 +45,20 @@ type gameSession struct { completedAutoNextRuntime *runtimeDungeonState conn net.Conn + // companionVirtual marks a synthetic session that exists only so the native + // friend list and party frame can resolve an offline volunteer as an online + // character. It has no socket and must never receive a normal send path. + companionVirtual bool + // companionHeadless is a real session in gameSessions with a sink transport. + // Party/dungeon owners treat it as a real member; no client is attached. + companionHeadless bool + companionOwnerID uint16 + // companionForceEnter marks the admin-driven op16 so dungeon entry can log + // its exact refusal reason to the plaintext headless debug file. + companionForceEnter bool + // headlessActorPublished marks that this headless member's own actor rows + // were projected to the leader after the dungeon room committed. + headlessActorPublished bool // writer owns this session's blocking socket writes so the event loop never // parks on a client that stopped reading. See game_session_writer.go for the // live 48-second stall measurement that made it necessary. nil means "no diff --git a/server/internal/services/dnfbridge/game_sessions.go b/server/internal/services/dnfbridge/game_sessions.go index 9d98651..791feb5 100644 --- a/server/internal/services/dnfbridge/game_sessions.go +++ b/server/internal/services/dnfbridge/game_sessions.go @@ -13,6 +13,10 @@ type boundGameSessionCharacter struct { session *gameSession character uint16 generation uint64 + // virtual marks a companion presence session. Such a session is not in + // Service.gameSessions (it has no socket), so the liveness check below must + // consult Service.companionSessions instead. + virtual bool } func (s *Service) bindGameSessionCharacter(session *gameSession, charID uint16) { @@ -53,6 +57,13 @@ func (s *Service) bindGameSessionCharacter(session *gameSession, charID uint16) s.stopCurrentSpendTimeClock(session, "selected_character_changed") s.stopCurrentPetGrowthClock(session, "selected_character_changed") } + if oldID := session.selectedCharacterID; oldID != 0 && oldID != charID { + session.dungeon.mu.Lock() + pendingCompanionRuntime := session.dungeon.runtime + session.dungeon.mu.Unlock() + s.sendCurrentDungeonCompanionTeamOffline( + session, pendingCompanionRuntime, "selected_character_changed") + } session.dungeon.mu.Lock() if oldID := session.selectedCharacterID; oldID != 0 && oldID != charID { runtime := session.dungeon.runtime @@ -143,6 +154,9 @@ func (s *Service) bindGameSessionCharacter(session *gameSession, charID uint16) session.collectboxSelectionRefreshSent = false } session.selectedCharacterID = charID + // A real client binding this character always retires the synthetic + // volunteer presence row, so the friend list cannot claim two online copies. + s.dropCompanionPresenceCharacter(charID) if resident != nil && resident != session { if current := s.gameSessions[charID]; current == resident { s.mu.Unlock() @@ -436,6 +450,7 @@ func (s *Service) releaseDisconnectedDungeonAttempt(session *gameSession, reason // 掉线ä¸�退队 —— 座ä½�ç”± raid_disconnect.go 的宽é™�窗å�£å®ˆç�€ï¼Œè¿™é‡Œå­˜çš„å��æ ‡å�ªä½œ // 诊断与é‡�连å�‚考(é‡�连实际一律回 PVF 等待室起点,è§� runtimeFiendWarRejoinLocation)。 s.captureRuntimeFiendWarRejoinPosition(session) + s.sendCurrentDungeonCompanionTeamOfflineCurrent(session, "disconnected") session.dungeon.mu.Lock() runtime := session.dungeon.runtime if runtime == nil { @@ -538,6 +553,9 @@ func (s *Service) boundGameSessionCharacterCurrent(identity boundGameSessionChar if s == nil || identity.session == nil || identity.character == 0 { return false } + if identity.virtual { + return s.companionSessionCurrent(identity) + } s.mu.Lock() defer s.mu.Unlock() return s.gameSessions[identity.character] == identity.session && diff --git a/server/internal/services/dnfbridge/gameplay_module_avatar_socket.go b/server/internal/services/dnfbridge/gameplay_module_avatar_socket.go index 5104fdb..49ebdfa 100644 --- a/server/internal/services/dnfbridge/gameplay_module_avatar_socket.go +++ b/server/internal/services/dnfbridge/gameplay_module_avatar_socket.go @@ -73,6 +73,7 @@ func (s *Service) commitCurrentAvatarSocketOpen(session *gameSession, request cu if err != nil { return currentSocketMutationResult{}, err } + socketTypes = currentAvatarSocketTypesForOpen(rule, socketTypes) if len(socketTypes) == 0 { return currentSocketMutationResult{}, fmt.Errorf("%w: avatar socket definitions missing item=%d", errCurrentSocketPVFInvalid, request.TargetItemID) } diff --git a/server/internal/services/dnfbridge/server_features.go b/server/internal/services/dnfbridge/server_features.go new file mode 100644 index 0000000..da42a4b --- /dev/null +++ b/server/internal/services/dnfbridge/server_features.go @@ -0,0 +1,434 @@ +package dnfbridge + +import ( + "encoding/json" + "os" + "path/filepath" + "strconv" + "strings" + "time" + + dnfauction "longheng.io/server/internal/modules/dnf/auction" +) + +type currentServerFeatureSettings struct { + RaidReviveSeconds int `json:"raidReviveSeconds"` + AllDeadReturnSeconds int `json:"allDeadReturnSeconds"` + AllowFreeRevive *bool `json:"allowFreeRevive"` + HellOrbChance int `json:"hellOrbChance"` + HellDropChanceDenominator int `json:"hellDropChanceDenominator"` + EquipmentRollMultiplier int `json:"equipmentRollMultiplier"` + EpicPieceRollMultiplier int `json:"epicPieceRollMultiplier"` + AntonRaidAttackSeconds int `json:"antonRaidAttackSeconds"` + LukeEnergyRecoveryPercent int `json:"lukeEnergyRecoveryPercent"` + FiendWarSquadCount int `json:"fiendWarSquadCount"` + RoomFatigueCost int `json:"roomFatigueCost"` + DailyFatigueResetHour int `json:"dailyFatigueResetHour"` + AdventureGroupBonusPercent int `json:"adventureGroupBonusPercent"` + RentalMaxReinforce int `json:"rentalMaxReinforce"` + RentalMaxForge int `json:"rentalMaxForge"` + ReviveByDungeon map[string]int `json:"reviveByDungeon"` + AntonBlackFogRecoverySeconds int `json:"antonBlackFogRecoverySeconds"` + AntonBlackFogActiveSeconds int `json:"antonBlackFogActiveSeconds"` + AntonQuakeRecoverySeconds int `json:"antonQuakeRecoverySeconds"` + AntonQuakeActiveSeconds int `json:"antonQuakeActiveSeconds"` + AntonNavalOpenDelaySeconds int `json:"antonNavalOpenDelaySeconds"` + AntonNavalRecoverySeconds int `json:"antonNavalRecoverySeconds"` + AntonNavalActiveSeconds int `json:"antonNavalActiveSeconds"` + LukeEnergyRecovery0Seconds int `json:"lukeEnergyRecovery0Seconds"` + LukeEnergyRecovery1Seconds int `json:"lukeEnergyRecovery1Seconds"` + LukeEnergyRecovery2Seconds int `json:"lukeEnergyRecovery2Seconds"` + LukePhaseTimeoutPercent int `json:"lukePhaseTimeoutPercent"` + FiendWarAreaLimitPercent int `json:"fiendWarAreaLimitPercent"` + FiendWarDieImprisonPercent int `json:"fiendWarDieImprisonPercent"` + SoloTeleportCooldownSeconds int `json:"soloTeleportCooldownSeconds"` + SoloTeleportCooldownIndices string `json:"soloTeleportCooldownIndices"` + AuctionStandardListingLimit int `json:"auctionStandardListingLimit"` + AuctionPremiumListingLimit int `json:"auctionPremiumListingLimit"` + AuctionStandardDurationHours int `json:"auctionStandardDurationHours"` + AuctionPremiumDurationHours int `json:"auctionPremiumDurationHours"` + AntonMemberMax int `json:"antonMemberMax"` + AntonStartMinimumMembers int `json:"antonStartMinimumMembers"` + AntonSingleStartMinimumMembers int `json:"antonSingleStartMinimumMembers"` + AntonStartDelaySeconds int `json:"antonStartDelaySeconds"` + AntonPhaseBreakSeconds int `json:"antonPhaseBreakSeconds"` + AntonEntryCostItem int `json:"antonEntryCostItem"` + AntonEntryCostCount int `json:"antonEntryCostCount"` + AntonWeeklyEnterCountA int `json:"antonWeeklyEnterCountA"` + AntonWeeklyEnterCountB int `json:"antonWeeklyEnterCountB"` + AntonPhaseTimeoutSeconds string `json:"antonPhaseTimeoutSeconds"` + LukeDailyAccountEnterLimit int `json:"lukeDailyAccountEnterLimit"` + LukeSanctumTimerCount int `json:"lukeSanctumTimerCount"` + LukeEntryCostItem int `json:"lukeEntryCostItem"` + LukeEntryCostCount int `json:"lukeEntryCostCount"` + FiendWarMemberMax int `json:"fiendWarMemberMax"` + FiendWarStartMinimumMembers int `json:"fiendWarStartMinimumMembers"` + FiendWarDisconnectWaitSeconds int `json:"fiendWarDisconnectWaitSeconds"` + FiendWarEntryCostItem int `json:"fiendWarEntryCostItem"` + FiendWarEntryCostCount int `json:"fiendWarEntryCostCount"` + FiendWarRetry *bool `json:"fiendWarRetry"` + FiendWarDailyEnterLimit int `json:"fiendWarDailyEnterLimit"` + AuctionStandardFeePercent int `json:"auctionStandardFeePercent"` + AuctionPremiumFeePercent int `json:"auctionPremiumFeePercent"` +} + +func GMSaveServerFeatures(data []byte) error { + var values map[string]json.RawMessage + if err := json.Unmarshal(data, &values); err != nil { + return err + } + path := currentServerConfigPath("server-features.json") + tmp := path + ".tmp" + if err := os.WriteFile(tmp, data, 0o644); err != nil { + return err + } + return os.Rename(tmp, path) +} + +func currentServerConfigPath(name string) string { + candidates := []string{filepath.Join("config", name)} + if executable, err := os.Executable(); err == nil { + candidates = append(candidates, + filepath.Join(filepath.Dir(executable), "..", "config", name), + filepath.Join(filepath.Dir(executable), "config", name), + ) + } + for _, candidate := range candidates { + if _, err := os.Stat(candidate); err == nil { + return candidate + } + } + return candidates[0] +} + +func currentServerFeatures() currentServerFeatureSettings { + data, err := os.ReadFile(currentServerConfigPath("server-features.json")) + if err != nil { + return currentServerFeatureSettings{} + } + var settings currentServerFeatureSettings + if err := json.Unmarshal(data, &settings); err != nil { + return currentServerFeatureSettings{} + } + return settings +} + +func currentActivityEnabled(key string) bool { + data, err := os.ReadFile(currentServerConfigPath("activity.json")) + if err != nil { + return true + } + var values map[string]bool + if err := json.Unmarshal(data, &values); err != nil { + return true + } + enabled, found := values[key] + if !found { + return true + } + return enabled +} + +func currentConfiguredAllDeadReturnDelay() time.Duration { + const fallback = currentPartyDungeonAllDeadReturnDelay + settings := currentServerFeatures() + if settings.AllDeadReturnSeconds < 1 || settings.AllDeadReturnSeconds > 60 { + return fallback + } + return time.Duration(settings.AllDeadReturnSeconds) * time.Second +} + +func currentConfiguredAllowFreeRevive() bool { + settings := currentServerFeatures() + if settings.AllowFreeRevive == nil { + return currentDungeonUseCoinAllowFreeRevive + } + return *settings.AllowFreeRevive +} + +func currentConfiguredHellOrbChance() int { + settings := currentServerFeatures() + if settings.HellOrbChance < 0 || settings.HellOrbChance > currentDungeonHellOrbRollDenominator { + return currentDungeonHellOrbChance + } + return settings.HellOrbChance +} + +func currentConfiguredHellDropChanceDenominator() int { + settings := currentServerFeatures() + if settings.HellDropChanceDenominator < 1 || settings.HellDropChanceDenominator > 1_000_000 { + return currentHellPartyDropChanceDenominator + } + return settings.HellDropChanceDenominator +} + +func currentConfiguredAntonRaidAttackSeconds() int { + settings := currentServerFeatures() + if settings.AntonRaidAttackSeconds < 60 || settings.AntonRaidAttackSeconds > 24*60*60 { + return antonRaidAttackSeconds + } + return settings.AntonRaidAttackSeconds +} + +func currentConfiguredLukeEnergyRecoveryPercent() int { + settings := currentServerFeatures() + if settings.LukeEnergyRecoveryPercent < 1 || settings.LukeEnergyRecoveryPercent > 1000 { + return 100 + } + return settings.LukeEnergyRecoveryPercent +} + +func currentConfiguredFiendWarSquadCount() int { + settings := currentServerFeatures() + if settings.FiendWarSquadCount < 1 || settings.FiendWarSquadCount > 8 { + return currentFiendWarSquadCount + } + return settings.FiendWarSquadCount +} + +func currentConfiguredRoomFatigueCost() int64 { + settings := currentServerFeatures() + if settings.RoomFatigueCost < 0 || settings.RoomFatigueCost > 100 { + return currentDungeonRoomFatigueCost + } + return int64(settings.RoomFatigueCost) +} + +func currentConfiguredDailyFatigueResetHour() int { + settings := currentServerFeatures() + if settings.DailyFatigueResetHour < 0 || settings.DailyFatigueResetHour > 23 { + return 6 + } + return settings.DailyFatigueResetHour +} + +func currentConfiguredAdventureGroupBonusPercent() int { + settings := currentServerFeatures() + if settings.AdventureGroupBonusPercent < 0 || settings.AdventureGroupBonusPercent > 1000 { + return currentDungeonAdventureGroupDefaultClearBonusPercent + } + return settings.AdventureGroupBonusPercent +} + +func currentConfiguredRentalMaxReinforce() int { + settings := currentServerFeatures() + if settings.RentalMaxReinforce < 0 || settings.RentalMaxReinforce > 31 { + return currentRentalMaxReinforce + } + return settings.RentalMaxReinforce +} + +func currentConfiguredRentalMaxForge() int { + settings := currentServerFeatures() + if settings.RentalMaxForge < 0 || settings.RentalMaxForge > 255 { + return currentRentalMaxForge + } + return settings.RentalMaxForge +} + +func currentConfiguredDungeonReviveSeconds(dungeonID int64) (int, bool) { + if dungeonID <= 0 { + return 0, false + } + settings := currentServerFeatures() + if settings.ReviveByDungeon == nil { + return 0, false + } + value, found := settings.ReviveByDungeon[strconv.FormatInt(dungeonID, 10)] + if !found || value < 1 || value > 86400 { + return 0, false + } + return value, true +} + +func currentConfiguredDungeonReviveDelay(dungeonID int64) time.Duration { + seconds, found := currentConfiguredDungeonReviveSeconds(dungeonID) + if !found { + return currentConfiguredRaidReviveDelay() + } + return time.Duration(seconds) * time.Second +} + +func currentAntonDuration(configured int, fallback time.Duration) time.Duration { + if configured < 1 || configured > 86400 { + return fallback + } + return time.Duration(configured) * time.Second +} + +func currentAntonBlackFogRecovery() time.Duration { + return currentAntonDuration(currentServerFeatures().AntonBlackFogRecoverySeconds, antonBlackFogRecovery) +} + +func currentAntonBlackFogActive() time.Duration { + return currentAntonDuration(currentServerFeatures().AntonBlackFogActiveSeconds, antonBlackFogActive) +} + +func currentAntonQuakeRecovery() time.Duration { + return currentAntonDuration(currentServerFeatures().AntonQuakeRecoverySeconds, antonQuakeRecovery) +} + +func currentAntonQuakeActive() time.Duration { + return currentAntonDuration(currentServerFeatures().AntonQuakeActiveSeconds, antonQuakeActive) +} + +func currentAntonNavalOpenDelay() time.Duration { + return currentAntonDuration(currentServerFeatures().AntonNavalOpenDelaySeconds, antonNavalOpenDelay) +} + +func currentAntonNavalRecovery() time.Duration { + return currentAntonDuration(currentServerFeatures().AntonNavalRecoverySeconds, antonNavalRecovery) +} + +func currentAntonNavalActive() time.Duration { + return currentAntonDuration(currentServerFeatures().AntonNavalActiveSeconds, antonNavalActive) +} + +func currentLukeEnergyRecovery(tier int) time.Duration { + if tier < 0 { + tier = 0 + } + if tier >= len(lukeEnergyControlRecovery) { + tier = len(lukeEnergyControlRecovery) - 1 + } + settings := currentServerFeatures() + values := [...]int{ + settings.LukeEnergyRecovery0Seconds, + settings.LukeEnergyRecovery1Seconds, + settings.LukeEnergyRecovery2Seconds, + } + if values[tier] >= 1 && values[tier] <= 86400 { + return time.Duration(values[tier]) * time.Second + } + percent := settings.LukeEnergyRecoveryPercent + if percent < 1 || percent > 1000 { + percent = 100 + } + return time.Duration(int64(lukeEnergyControlRecovery[tier]) * int64(percent) / 100) +} + +func currentLukePhaseTimeoutPercent() int { + percent := currentServerFeatures().LukePhaseTimeoutPercent + if percent < 1 || percent > 1000 { + return 100 + } + return percent +} + +func currentFiendWarAreaLimitPercent() int { + percent := currentServerFeatures().FiendWarAreaLimitPercent + if percent < 1 || percent > 1000 { + return 100 + } + return percent +} + +func currentFiendWarDieImprisonPercent() int { + percent := currentServerFeatures().FiendWarDieImprisonPercent + if percent < 1 || percent > 1000 { + return 100 + } + return percent +} + +func currentConfiguredSoloTeleportCooldownSeconds() uint32 { + seconds := currentServerFeatures().SoloTeleportCooldownSeconds + if seconds < 1 || seconds > 86400 { + return currentSoloTeleportCooldownSeconds + } + return uint32(seconds) +} + +func currentConfiguredSoloTeleportIndices() []byte { + raw := strings.TrimSpace(currentServerFeatures().SoloTeleportCooldownIndices) + if raw == "" { + return nil + } + if strings.EqualFold(raw, "off") || strings.EqualFold(raw, "none") { + return []byte{} + } + var indices []byte + for _, field := range strings.Split(raw, ",") { + value, err := strconv.ParseUint(strings.TrimSpace(field), 10, 8) + if err == nil && currentSoloTeleportCooldownIndexAccepted(byte(value)) { + indices = append(indices, byte(value)) + } + } + return indices +} + +func currentConfiguredAuctionListingLimit(premium bool) int { + settings := currentServerFeatures() + value := settings.AuctionStandardListingLimit + if premium { + value = settings.AuctionPremiumListingLimit + } + if value < 1 || value > 1000 { + if premium { + return currentAuctionPremiumListingLimit + } + return currentAuctionStandardListingLimit + } + return value +} + +func currentConfiguredAuctionDuration(premium bool) time.Duration { + settings := currentServerFeatures() + hours := settings.AuctionStandardDurationHours + if premium { + hours = settings.AuctionPremiumDurationHours + } + if hours < 1 || hours > 720 { + if premium { + return currentAuctionPremiumDuration + } + return currentAuctionStandardDuration + } + return time.Duration(hours) * time.Hour +} + +func currentConfiguredAuctionFeePercent(premium bool) int64 { + settings := currentServerFeatures() + value := settings.AuctionStandardFeePercent + if premium { + value = settings.AuctionPremiumFeePercent + } + if value <= 0 || value > 100 { + return dnfauction.SaleFeePercentFor(premium) + } + return int64(value) +} + +// currentConfiguredRaidReviveDelay reads the optional runtime/config/ +// server-features.json written by the standalone server tool. It only changes +// the server-side death watchdog; the current EXE still owns its ten-second +// revive prompt. +func currentConfiguredRaidReviveDelay() time.Duration { + const fallback = currentDungeonDeathReturnDelay + settings := currentServerFeatures() + if settings.RaidReviveSeconds < 1 || settings.RaidReviveSeconds > 60 { + return fallback + } + return time.Duration(settings.RaidReviveSeconds) * time.Second +} + +// currentConfiguredEquipmentRollMultiplier keeps the local test-end special +// drop tuning (2x equipment rolls) configurable by the standalone server tool. +func currentConfiguredEquipmentRollMultiplier() int { + settings := currentServerFeatures() + if settings.EquipmentRollMultiplier < 1 || settings.EquipmentRollMultiplier > 100 { + return 1 + } + return settings.EquipmentRollMultiplier +} + +// currentConfiguredEpicPieceRollMultiplier keeps the local test-end special +// drop tuning (3x epic fragment rolls) configurable by the standalone tool. +func currentConfiguredEpicPieceRollMultiplier() int { + settings := currentServerFeatures() + if settings.EpicPieceRollMultiplier < 1 || settings.EpicPieceRollMultiplier > 100 { + return 1 + } + return settings.EpicPieceRollMultiplier +} + diff --git a/server/internal/services/dnfbridge/service.go b/server/internal/services/dnfbridge/service.go index d079ddf..ec87324 100644 --- a/server/internal/services/dnfbridge/service.go +++ b/server/internal/services/dnfbridge/service.go @@ -85,6 +85,12 @@ type Service struct { // é…�置按账å�·è�½åº“(repos.Settings),è¿�行æ€�按副本冻结;这把é”�å�ªä¿�护那一段 // "读当å‰� revision → 校验 → 写回"的临界区,é�¿å…�å¹¶å�‘ä¿�存把 revision 撞掉。 companionConfigMu sync.Mutex + // companionPresenceMu guards the synthetic sessions that expose a volunteer + // in the native friend list / party frame. These sessions have no socket and + // are deliberately NOT stored in gameSessions: only the social and party + // projection helpers below may resolve them. + companionPresenceMu sync.Mutex + companionSessions map[uint16]*gameSession mu sync.Mutex catalog *channelcatalog.Catalog diff --git a/server/internal/services/dnfbridge/socket_emblem_pvf.go b/server/internal/services/dnfbridge/socket_emblem_pvf.go index 9fc31e7..01beb63 100644 --- a/server/internal/services/dnfbridge/socket_emblem_pvf.go +++ b/server/internal/services/dnfbridge/socket_emblem_pvf.go @@ -69,6 +69,21 @@ func currentSocketAvatarSocketTypes(catalog *pvfDungeonDropCatalog, itemID int64 return socketTypes, nil } +// currentAvatarSocketTypesForOpen applies the avatar-part socket layout that +// the PVF's [avatar type select] does not encode explicitly. Rare coat/pants +// avatars carry one platinum (0x10) socket followed by two normal C sockets; +// their PVF section only lists the two C tags, so the opener used to produce a +// two-socket result. Keep other avatar parts and explicit three-socket layouts +// untouched. +func currentAvatarSocketTypesForOpen(rule currentEquipmentPlacementRule, socketTypes []byte) []byte { + out := append([]byte(nil), socketTypes...) + if (rule.targetSlot == 3 || rule.targetSlot == 4) && + len(out) == 2 && out[0] == 0x04 && out[1] == 0x04 { + return []byte{0x10, 0x04, 0x04} + } + return out +} + func currentSocketEmblemType(catalog *pvfDungeonDropCatalog, itemID int64) byte { if catalog == nil || itemID <= 0 || itemID > math.MaxUint32 { return 0