From b7907bd69d169bd4b3bf37e1ee9d9e4478c7cb13 Mon Sep 17 00:00:00 2001 From: ahmido Date: Sat, 6 Jun 2026 09:41:19 +0000 Subject: [PATCH] feat: add report profile and disclosure policy to rendered review reports (#428) Implementing report profiles and disclosure policy as per spec 357. Co-authored-by: Ahmed Darrazi Reviewed-on: https://git.cloudarix.de/ahmido/TenantAtlas/pulls/428 --- .../SeedReviewOutputBrowserFixture.php | 49 ++- .../Resources/EnvironmentReviewResource.php | 16 +- .../Pages/ViewReviewPack.php | 32 +- .../ReviewPackRenderedReportController.php | 67 +++- .../ReviewPacks/ReportDisclosurePolicy.php | 179 +++++++++ .../ReviewPacks/ReportProfileRegistry.php | 161 ++++++++ .../ReviewPackOutputResolutionGuidance.php | 12 +- apps/platform/lang/de/localization.php | 39 ++ apps/platform/lang/en/localization.php | 39 ++ .../review-packs/rendered-report.blade.php | 224 ++++++++--- apps/platform/routes/web.php | 25 +- .../Spec357ReportProfilesSmokeTest.php | 294 ++++++++++++++ .../Feature/Auth/AdminLocalSmokeLoginTest.php | 3 +- .../BackupHealthBrowserFixtureLoginTest.php | 3 +- ...dReviewOutputBrowserFixtureCommandTest.php | 40 +- .../ManagedEnvironmentRouteBindingTest.php | 6 +- .../Spec357RenderedReportProfileTest.php | 209 ++++++++++ .../Spec357ReportDisclosurePolicyTest.php | 102 +++++ .../Spec357ReportProfileRegistryTest.php | 53 +++ .../ui-099-rendered-review-report.md | 19 +- ...c357-in-app-browser-customer-executive.png | Bin 0 -> 329830 bytes .../checklists/requirements.md | 45 +++ .../plan.md | 301 ++++++++++++++ .../spec.md | 373 ++++++++++++++++++ .../tasks.md | 107 +++++ 25 files changed, 2309 insertions(+), 89 deletions(-) create mode 100644 apps/platform/app/Support/ReviewPacks/ReportDisclosurePolicy.php create mode 100644 apps/platform/app/Support/ReviewPacks/ReportProfileRegistry.php create mode 100644 apps/platform/tests/Browser/Spec357ReportProfilesSmokeTest.php create mode 100644 apps/platform/tests/Feature/ReviewPack/Spec357RenderedReportProfileTest.php create mode 100644 apps/platform/tests/Unit/Support/ReviewPacks/Spec357ReportDisclosurePolicyTest.php create mode 100644 apps/platform/tests/Unit/Support/ReviewPacks/Spec357ReportProfileRegistryTest.php create mode 100644 specs/357-report-profiles-disclosure-policy-v1/artifacts/screenshots/spec357-in-app-browser-customer-executive.png create mode 100644 specs/357-report-profiles-disclosure-policy-v1/checklists/requirements.md create mode 100644 specs/357-report-profiles-disclosure-policy-v1/plan.md create mode 100644 specs/357-report-profiles-disclosure-policy-v1/spec.md create mode 100644 specs/357-report-profiles-disclosure-policy-v1/tasks.md diff --git a/apps/platform/app/Console/Commands/SeedReviewOutputBrowserFixture.php b/apps/platform/app/Console/Commands/SeedReviewOutputBrowserFixture.php index 6d708326..bcc5c448 100644 --- a/apps/platform/app/Console/Commands/SeedReviewOutputBrowserFixture.php +++ b/apps/platform/app/Console/Commands/SeedReviewOutputBrowserFixture.php @@ -4,8 +4,8 @@ namespace App\Console\Commands; -use App\Filament\Resources\EnvironmentReviewResource; use App\Filament\Pages\Reviews\CustomerReviewWorkspace; +use App\Filament\Resources\EnvironmentReviewResource; use App\Models\EnvironmentReview; use App\Models\EnvironmentReviewSection; use App\Models\EvidenceSnapshot; @@ -22,6 +22,7 @@ use App\Services\EnvironmentReviews\EnvironmentReviewLifecycleService; use App\Services\EnvironmentReviews\EnvironmentReviewService; use App\Services\Evidence\EvidenceSnapshotService; +use App\Services\OperationRunService; use App\Support\EnvironmentReviewCompletenessState; use App\Support\EnvironmentReviewStatus; use App\Support\Evidence\EvidenceCompletenessState; @@ -178,6 +179,7 @@ private function resetFixtureGraph(ManagedEnvironment $environment): void EvidenceSnapshot::query()->whereIn('id', $snapshotIds)->delete(); } + OperationRun::query()->where('managed_environment_id', $environmentId)->delete(); StoredReport::query()->where('managed_environment_id', $environmentId)->delete(); } @@ -298,6 +300,7 @@ private function seedPublishedLoopWithReadySuccessor( if ($publishedReview->generated_at === null || ! $publishedReview->sections()->exists()) { $publishedReview = $service->compose($publishedReview); + $this->completeFixtureComposeRun($publishedReview); } $publishedReview = $this->markReadyReview($publishedReview); @@ -319,6 +322,7 @@ private function seedPublishedLoopWithReadySuccessor( if ($successorReview->generated_at === null || ! $successorReview->sections()->exists()) { $successorReview = $service->compose($successorReview); + $this->completeFixtureComposeRun($successorReview); } $successorReview = $this->markReadyReview($successorReview); @@ -331,6 +335,47 @@ private function seedPublishedLoopWithReadySuccessor( return $successorReview->refresh()->load(['tenant', 'evidenceSnapshot.items', 'sections']); } + private function completeFixtureComposeRun(EnvironmentReview $review): void + { + $run = $review->operationRun()->first(); + + if (! $run instanceof OperationRun || (string) $run->type !== OperationRunType::EnvironmentReviewCompose->value) { + return; + } + + /** @var OperationRunService $service */ + $service = app(OperationRunService::class); + + if ((string) $run->status === OperationRunStatus::Queued->value) { + $service->updateRun( + $run, + status: OperationRunStatus::Running->value, + outcome: OperationRunOutcome::Pending->value, + ); + + $run = $run->fresh(); + } + + if (! $run instanceof OperationRun || (string) $run->status === OperationRunStatus::Completed->value) { + return; + } + + $summary = is_array($review->summary) ? $review->summary : []; + + $service->updateRun( + $run, + status: OperationRunStatus::Completed->value, + outcome: OperationRunOutcome::Succeeded->value, + summaryCounts: [ + 'created' => 1, + 'finding_count' => (int) ($summary['finding_count'] ?? 0), + 'report_count' => (int) ($summary['report_count'] ?? 0), + 'operation_count' => (int) ($summary['operation_count'] ?? 0), + 'errors_recorded' => 0, + ], + ); + } + /** * @param array $scenarioConfig */ @@ -460,7 +505,7 @@ private function markReadyReview(EnvironmentReview $review): EnvironmentReview ])->save(); } - $review->sections->each(function (EnvironmentReviewSection $section) use ($controlSummary, $controlExplanation, $disclosure): void { + $review->sections->each(function (EnvironmentReviewSection $section) use ($controlExplanation, $disclosure): void { $attributes = [ 'completeness_state' => EnvironmentReviewCompletenessState::Complete->value, ]; diff --git a/apps/platform/app/Filament/Resources/EnvironmentReviewResource.php b/apps/platform/app/Filament/Resources/EnvironmentReviewResource.php index 570f5c14..f2d96d84 100644 --- a/apps/platform/app/Filament/Resources/EnvironmentReviewResource.php +++ b/apps/platform/app/Filament/Resources/EnvironmentReviewResource.php @@ -34,6 +34,7 @@ use App\Support\Rbac\UiEnforcement; use App\Support\ReasonTranslation\ReasonPresenter; use App\Support\ResolutionGuidance\Adapters\ReviewPackOutputResolutionAdapter; +use App\Support\ReviewPacks\ReportProfileRegistry; use App\Support\ReviewPacks\ReviewPackOutputResolutionGuidance; use App\Support\ReviewPackStatus; use App\Support\Ui\ActionSurface\ActionSurfaceDeclaration; @@ -1244,6 +1245,9 @@ public static function currentRenderedReportUrlFor(EnvironmentReview $record): ? return null; } + $guidance = ReviewPackOutputResolutionGuidance::fromReadiness( + ReviewPackOutputResolutionGuidance::readinessForReview($record), + ); $parameters = [ 'source_surface' => static::isCustomerWorkspaceMode() ? CustomerReviewWorkspace::SOURCE_SURFACE @@ -1251,6 +1255,10 @@ public static function currentRenderedReportUrlFor(EnvironmentReview $record): ? 'review_id' => (int) $record->getKey(), 'tenant_filter_id' => request()->query('tenant_filter_id'), 'interpretation_version' => $record->controlInterpretationVersion(), + ReportProfileRegistry::QUERY_PARAMETER => ReportProfileRegistry::defaultForRenderedReportState( + (string) ($guidance['state'] ?? ReviewPackOutputResolutionGuidance::STATE_UNKNOWN), + static::isCustomerWorkspaceMode(), + ), ]; if (static::isCustomerWorkspaceMode()) { @@ -1272,9 +1280,15 @@ public static function renderedReportActionLabelFor(?EnvironmentReview $record): $guidance = ReviewPackOutputResolutionGuidance::fromReadiness( ReviewPackOutputResolutionGuidance::readinessForReview($record), ); + $profileKey = ReportProfileRegistry::defaultForRenderedReportState( + (string) ($guidance['state'] ?? ReviewPackOutputResolutionGuidance::STATE_UNKNOWN), + static::isCustomerWorkspaceMode(), + ); return match ((string) ($guidance['state'] ?? ReviewPackOutputResolutionGuidance::STATE_UNKNOWN)) { - ReviewPackOutputResolutionGuidance::STATE_CUSTOMER_SAFE_READY => __('localization.review.view_customer_safe_report'), + ReviewPackOutputResolutionGuidance::STATE_CUSTOMER_SAFE_READY => $profileKey === ReportProfileRegistry::CUSTOMER_EXECUTIVE + ? __('localization.review.view_customer_safe_report') + : __('localization.review.view_internal_report'), ReviewPackOutputResolutionGuidance::STATE_INTERNAL_ONLY => __('localization.review.view_internal_report'), default => __('localization.review.view_report_with_limitations'), }; diff --git a/apps/platform/app/Filament/Resources/ReviewPackResource/Pages/ViewReviewPack.php b/apps/platform/app/Filament/Resources/ReviewPackResource/Pages/ViewReviewPack.php index d70fc240..ad38b2d5 100644 --- a/apps/platform/app/Filament/Resources/ReviewPackResource/Pages/ViewReviewPack.php +++ b/apps/platform/app/Filament/Resources/ReviewPackResource/Pages/ViewReviewPack.php @@ -4,10 +4,13 @@ use App\Filament\Pages\Reviews\CustomerReviewWorkspace; use App\Filament\Resources\ReviewPackResource; +use App\Models\EnvironmentReview; use App\Models\ReviewPack; use App\Services\ReviewPackService; use App\Support\Auth\Capabilities; use App\Support\Rbac\UiEnforcement; +use App\Support\ReviewPacks\ReportProfileRegistry; +use App\Support\ReviewPacks\ReviewPackOutputResolutionGuidance; use App\Support\ReviewPackStatus; use Filament\Actions; use Filament\Forms\Components\Toggle; @@ -117,11 +120,38 @@ private function openRenderedReportAction(array $parameters = [], string $color ->visible(fn (): bool => $this->canOpenRenderedReport()) ->url(fn (): string => app(ReviewPackService::class)->generateRenderedReportUrl( $this->record, - array_filter($parameters, static fn (mixed $value): bool => $value !== null && $value !== ''), + $this->renderedReportParameters($parameters), )) ->openUrlInNewTab(); } + /** + * @param array $parameters + * @return array + */ + private function renderedReportParameters(array $parameters): array + { + $parameters = array_filter($parameters, static fn (mixed $value): bool => $value !== null && $value !== ''); + $review = $this->record->environmentReview; + + if (! $review instanceof EnvironmentReview) { + return $parameters; + } + + if (! array_key_exists(ReportProfileRegistry::QUERY_PARAMETER, $parameters)) { + $guidance = ReviewPackOutputResolutionGuidance::fromReadiness( + ReviewPackOutputResolutionGuidance::readinessForReview($review), + ); + + $parameters[ReportProfileRegistry::QUERY_PARAMETER] = ReportProfileRegistry::defaultForRenderedReportState( + (string) ($guidance['state'] ?? ReviewPackOutputResolutionGuidance::STATE_UNKNOWN), + array_key_exists(CustomerReviewWorkspace::DETAIL_CONTEXT_QUERY_KEY, $parameters), + ); + } + + return $parameters; + } + private function canOpenRenderedReport(): bool { /** @var ReviewPack $record */ diff --git a/apps/platform/app/Http/Controllers/ReviewPackRenderedReportController.php b/apps/platform/app/Http/Controllers/ReviewPackRenderedReportController.php index b65496f9..aaec8d20 100644 --- a/apps/platform/app/Http/Controllers/ReviewPackRenderedReportController.php +++ b/apps/platform/app/Http/Controllers/ReviewPackRenderedReportController.php @@ -15,6 +15,8 @@ use App\Models\Workspace; use App\Services\ReviewPackService; use App\Support\Auth\Capabilities; +use App\Support\ReviewPacks\ReportDisclosurePolicy; +use App\Support\ReviewPacks\ReportProfileRegistry; use App\Support\ReviewPacks\ReviewPackOutputResolutionGuidance; use App\Support\ReviewPackStatus; use Illuminate\Http\Request; @@ -96,6 +98,20 @@ private function reportState( $state = (string) ($guidance['state'] ?? ReviewPackOutputResolutionGuidance::STATE_UNKNOWN); $limitations = $this->managementLimitations(is_array($guidance['limitations'] ?? null) ? $guidance['limitations'] : []); $evidenceBasis = $this->evidenceBasisState($review); + $profile = $this->profileState($request, $state); + $nonCertificationDisclosure = $this->plainText( + $controlInterpretation['non_certification_disclosure'] ?? null, + __('localization.review.non_certification_disclosure_text'), + ); + $disclosurePolicy = ReportDisclosurePolicy::evaluate($profile, $readiness, [ + 'non_certification_disclosure' => $nonCertificationDisclosure, + ]); + $sectionAppendix = (bool) ($disclosurePolicy['show_section_appendix'] ?? false) + ? $this->sectionAppendix($reviewPack, $review) + : []; + $technicalDetails = (bool) ($disclosurePolicy['show_technical_details'] ?? false) + ? (is_array($guidance['technical_details'] ?? null) ? $guidance['technical_details'] : []) + : []; return [ 'title' => __('localization.review.rendered_report'), @@ -103,6 +119,9 @@ private function reportState( 'state' => $state, 'hero' => $this->heroState($state, $guidance), 'branding' => $this->brandingState($tenant), + 'profile' => $profile, + 'disclosure_policy' => $disclosurePolicy, + 'source_metadata' => $this->sourceMetadata($request, $review), 'tenant_name' => $tenant->name, 'review_id' => (int) $review->getKey(), 'pack_id' => (int) $reviewPack->getKey(), @@ -140,12 +159,9 @@ private function reportState( ? $decisionSummary['entries'] : (is_array($governancePackage['governance_decisions'] ?? null) ? $governancePackage['governance_decisions'] : []), 'next_actions' => is_array($summary['recommended_next_actions'] ?? null) ? $summary['recommended_next_actions'] : [], - 'non_certification_disclosure' => $this->plainText( - $controlInterpretation['non_certification_disclosure'] ?? null, - __('localization.review.non_certification_disclosure_text'), - ), - 'section_appendix' => $this->sectionAppendix($reviewPack, $review), - 'technical_details' => is_array($guidance['technical_details'] ?? null) ? $guidance['technical_details'] : [], + 'non_certification_disclosure' => $nonCertificationDisclosure, + 'section_appendix' => $sectionAppendix, + 'technical_details' => $technicalDetails, 'entrypoint_file' => (string) data_get($summary, 'delivery_bundle.executive_entrypoint_file', ReviewPackService::EXECUTIVE_ENTRYPOINT_FILENAME), 'appendix_files' => is_array(data_get($summary, 'delivery_bundle.appendix_files')) ? data_get($summary, 'delivery_bundle.appendix_files') : [], ]; @@ -528,6 +544,39 @@ private function reviewPackUrl(Request $request, ReviewPack $reviewPack, Managed ]); } + /** + * @return array + */ + private function profileState(Request $request, string $state): array + { + return ReportProfileRegistry::resolve( + is_string($request->query(ReportProfileRegistry::QUERY_PARAMETER)) + ? (string) $request->query(ReportProfileRegistry::QUERY_PARAMETER) + : null, + ReportProfileRegistry::defaultForRenderedReportState( + $state, + $this->isCustomerWorkspaceReportRequest($request), + ), + ); + } + + /** + * @return array{source_surface:string,customer_workspace_context:bool,requested_profile:?string,interpretation_version:string} + */ + private function sourceMetadata(Request $request, EnvironmentReview $review): array + { + return [ + 'source_surface' => is_string($request->query('source_surface')) + ? (string) $request->query('source_surface') + : 'review_pack', + 'customer_workspace_context' => $this->isCustomerWorkspaceReportRequest($request), + 'requested_profile' => is_string($request->query(ReportProfileRegistry::QUERY_PARAMETER)) + ? trim((string) $request->query(ReportProfileRegistry::QUERY_PARAMETER)) + : null, + 'interpretation_version' => (string) ($request->query('interpretation_version') ?? $review->controlInterpretationVersion()), + ]; + } + /** * @return array */ @@ -567,6 +616,12 @@ private function appendQuery(string $url, array $query): string )); } + private function isCustomerWorkspaceReportRequest(Request $request): bool + { + return $request->boolean(CustomerReviewWorkspace::DETAIL_CONTEXT_QUERY_KEY) + || (string) $request->query('source_surface') === CustomerReviewWorkspace::SOURCE_SURFACE; + } + private function plainText(mixed $value, string $fallback): string { if (! is_scalar($value) && $value !== null) { diff --git a/apps/platform/app/Support/ReviewPacks/ReportDisclosurePolicy.php b/apps/platform/app/Support/ReviewPacks/ReportDisclosurePolicy.php new file mode 100644 index 00000000..8d8affa4 --- /dev/null +++ b/apps/platform/app/Support/ReviewPacks/ReportDisclosurePolicy.php @@ -0,0 +1,179 @@ + $profile + * @param array $readiness + * @param array $metadata + * @return array{ + * mandatory_disclosures:list, + * warnings:list, + * blocking_reasons:list, + * proof_states:array{audience_boundary:string,evidence_basis:string,protected_values:string,non_certification:string}, + * show_section_appendix:bool, + * show_technical_details:bool + * } + */ + public static function evaluate(array $profile, array $readiness, array $metadata = []): array + { + $isCustomerFacing = (bool) ($profile['is_customer_facing'] ?? false); + $containsPii = (bool) ($readiness['contains_pii'] ?? false); + $protectedValuesHidden = (bool) ($readiness['protected_values_hidden'] ?? false); + $disclosurePresent = (bool) ($readiness['disclosure_present'] ?? false); + $displayedDisclosure = self::plainText( + $metadata['non_certification_disclosure'] ?? null, + __('localization.review.non_certification_disclosure_text'), + ); + + $proofStates = [ + 'audience_boundary' => self::PROOF_VERIFIED, + 'evidence_basis' => self::evidenceBasisProofState((string) ($readiness['evidence_completeness_state'] ?? '')), + 'protected_values' => self::protectedValuesProofState( + isCustomerFacing: $isCustomerFacing, + containsPii: $containsPii, + protectedValuesHidden: $protectedValuesHidden, + ), + 'non_certification' => $disclosurePresent + ? self::PROOF_ASSUMED + : self::PROOF_MISSING, + ]; + + $blockingReasons = []; + + if ($isCustomerFacing && $containsPii) { + $blockingReasons[] = [ + 'key' => 'customer_profile_internal_only', + 'label' => __('localization.review.report_disclosure_customer_profile_internal_only'), + 'summary' => __('localization.review.report_disclosure_customer_profile_internal_only_summary'), + ]; + } + + $warnings = []; + + if ((bool) ($profile['is_fallback'] ?? false)) { + $warnings[] = [ + 'key' => 'profile_fallback', + 'label' => __('localization.review.report_profile_fallback_notice'), + 'summary' => __('localization.review.report_profile_fallback_summary'), + ]; + } + + if ($isCustomerFacing && (string) ($readiness['customer_safe_state'] ?? '') !== ReviewPackOutputReadiness::STATE_CUSTOMER_SAFE_READY) { + $warnings[] = [ + 'key' => 'customer_profile_requires_review', + 'label' => __('localization.review.report_external_sharing_warning'), + 'summary' => __('localization.review.report_disclosure_customer_profile_requires_review'), + ]; + } + + if ($proofStates['non_certification'] === self::PROOF_MISSING) { + $warnings[] = [ + 'key' => 'non_certification_missing', + 'label' => __('localization.review.non_certification_disclosure'), + 'summary' => __('localization.review.report_disclosure_non_certification_missing'), + ]; + } + + $showDetailedContent = ! ($isCustomerFacing && $containsPii); + + return [ + 'mandatory_disclosures' => [ + [ + 'key' => 'audience_boundary', + 'label' => __('localization.review.report_disclosure_audience_boundary'), + 'summary' => __('localization.review.report_disclosure_audience_boundary_summary', [ + 'audience' => (string) ($profile['audience_label'] ?? __('localization.review.unavailable')), + ]), + 'proof_state' => $proofStates['audience_boundary'], + ], + [ + 'key' => 'evidence_basis', + 'label' => __('localization.review.report_disclosure_evidence_basis'), + 'summary' => match ($proofStates['evidence_basis']) { + self::PROOF_VERIFIED => __('localization.review.report_disclosure_evidence_verified'), + self::PROOF_MISSING => __('localization.review.report_disclosure_evidence_missing'), + default => __('localization.review.report_disclosure_evidence_unknown'), + }, + 'proof_state' => $proofStates['evidence_basis'], + ], + [ + 'key' => 'protected_values', + 'label' => __('localization.review.report_disclosure_protected_values'), + 'summary' => match ($proofStates['protected_values']) { + self::PROOF_ASSUMED => __('localization.review.report_disclosure_protected_values_assumed'), + self::PROOF_NOT_APPLICABLE => __('localization.review.report_disclosure_protected_values_not_applicable'), + self::PROOF_MISSING => __('localization.review.report_disclosure_protected_values_missing'), + default => __('localization.review.report_disclosure_protected_values_unknown'), + }, + 'proof_state' => $proofStates['protected_values'], + ], + [ + 'key' => 'non_certification', + 'label' => __('localization.review.non_certification_disclosure'), + 'summary' => $displayedDisclosure, + 'proof_state' => $proofStates['non_certification'], + ], + ], + 'warnings' => $warnings, + 'blocking_reasons' => $blockingReasons, + 'proof_states' => $proofStates, + 'show_section_appendix' => (bool) ($profile['show_section_appendix'] ?? false) && $showDetailedContent, + 'show_technical_details' => (bool) ($profile['show_technical_details'] ?? false) && $showDetailedContent, + ]; + } + + private static function evidenceBasisProofState(string $evidenceCompletenessState): string + { + return match ($evidenceCompletenessState) { + 'complete' => self::PROOF_VERIFIED, + 'missing', 'partial', 'stale' => self::PROOF_MISSING, + default => self::PROOF_UNKNOWN, + }; + } + + private static function protectedValuesProofState( + bool $isCustomerFacing, + bool $containsPii, + bool $protectedValuesHidden, + ): string { + if (! $isCustomerFacing) { + return self::PROOF_NOT_APPLICABLE; + } + + if ($containsPii || ! $protectedValuesHidden) { + return self::PROOF_MISSING; + } + + return self::PROOF_ASSUMED; + } + + private static function plainText(mixed $value, string $fallback): string + { + if (! is_scalar($value) && $value !== null) { + return $fallback; + } + + $text = preg_replace('/\s+/', ' ', trim((string) $value)); + + if (! is_string($text) || $text === '') { + return $fallback; + } + + return str_starts_with($text, 'localization.') ? $fallback : $text; + } +} diff --git a/apps/platform/app/Support/ReviewPacks/ReportProfileRegistry.php b/apps/platform/app/Support/ReviewPacks/ReportProfileRegistry.php new file mode 100644 index 00000000..562aa4af --- /dev/null +++ b/apps/platform/app/Support/ReviewPacks/ReportProfileRegistry.php @@ -0,0 +1,161 @@ + + */ + public static function all(): array + { + return [ + self::CUSTOMER_EXECUTIVE => [ + 'profile_key' => self::CUSTOMER_EXECUTIVE, + 'label_key' => 'localization.review.report_profile_customer_executive', + 'audience_key' => 'localization.review.report_audience_customer_executive', + 'implemented' => true, + 'is_customer_facing' => true, + 'show_section_appendix' => false, + 'show_technical_details' => false, + ], + self::CUSTOMER_TECHNICAL => [ + 'profile_key' => self::CUSTOMER_TECHNICAL, + 'label_key' => 'localization.review.report_profile_customer_technical', + 'audience_key' => 'localization.review.report_audience_customer_technical', + 'implemented' => true, + 'is_customer_facing' => true, + 'show_section_appendix' => true, + 'show_technical_details' => true, + ], + self::INTERNAL_MSP_REVIEW => [ + 'profile_key' => self::INTERNAL_MSP_REVIEW, + 'label_key' => 'localization.review.report_profile_internal_msp_review', + 'audience_key' => 'localization.review.report_audience_internal_msp_review', + 'implemented' => true, + 'is_customer_facing' => false, + 'show_section_appendix' => true, + 'show_technical_details' => true, + ], + self::AUDITOR_APPENDIX => [ + 'profile_key' => self::AUDITOR_APPENDIX, + 'label_key' => 'localization.review.report_profile_auditor_appendix', + 'audience_key' => 'localization.review.report_audience_controlled_auditor', + 'implemented' => true, + 'is_customer_facing' => false, + 'show_section_appendix' => true, + 'show_technical_details' => true, + ], + self::FRAMEWORK_READINESS => [ + 'profile_key' => self::FRAMEWORK_READINESS, + 'label_key' => 'localization.review.report_profile_framework_readiness', + 'audience_key' => 'localization.review.report_audience_internal_msp_review', + 'implemented' => false, + 'is_customer_facing' => false, + 'show_section_appendix' => false, + 'show_technical_details' => false, + ], + ]; + } + + /** + * @return array{ + * profile_key:string, + * requested_key:?string, + * effective_key:string, + * label_key:string, + * label:string, + * audience_key:string, + * audience_label:string, + * implemented:bool, + * is_customer_facing:bool, + * show_section_appendix:bool, + * show_technical_details:bool, + * is_fallback:bool, + * fallback_reason:?string + * } + */ + public static function resolve(?string $requestedKey, ?string $defaultProfileKey = null): array + { + $profiles = self::all(); + $normalizedRequestedKey = self::normalizeKey($requestedKey); + $defaultProfileKey = array_key_exists((string) $defaultProfileKey, $profiles) + ? (string) $defaultProfileKey + : self::DEFAULT_PROFILE; + + $effectiveProfile = $profiles[$defaultProfileKey]; + $isFallback = false; + $fallbackReason = null; + + if ($normalizedRequestedKey !== null) { + $requestedProfile = $profiles[$normalizedRequestedKey] ?? null; + + if (! is_array($requestedProfile)) { + $effectiveProfile = $profiles[self::DEFAULT_PROFILE]; + $isFallback = true; + $fallbackReason = 'unknown_profile'; + } elseif (! (bool) ($requestedProfile['implemented'] ?? false)) { + $effectiveProfile = $profiles[self::DEFAULT_PROFILE]; + $isFallback = true; + $fallbackReason = 'unimplemented_profile'; + } else { + $effectiveProfile = $requestedProfile; + } + } + + $effectiveKey = (string) $effectiveProfile['profile_key']; + + return $effectiveProfile + [ + 'requested_key' => $normalizedRequestedKey, + 'effective_key' => $effectiveKey, + 'label' => __((string) $effectiveProfile['label_key']), + 'audience_label' => __((string) $effectiveProfile['audience_key']), + 'is_fallback' => $isFallback, + 'fallback_reason' => $fallbackReason, + ]; + } + + public static function defaultForRenderedReportState(string $state, bool $customerSafeHandoff): string + { + if ($state === ReviewPackOutputResolutionGuidance::STATE_CUSTOMER_SAFE_READY) { + return self::CUSTOMER_EXECUTIVE; + } + + return self::DEFAULT_PROFILE; + } + + private static function normalizeKey(?string $requestedKey): ?string + { + $requestedKey = trim((string) $requestedKey); + + if ($requestedKey === '') { + return null; + } + + return strtolower($requestedKey); + } +} diff --git a/apps/platform/app/Support/ReviewPacks/ReviewPackOutputResolutionGuidance.php b/apps/platform/app/Support/ReviewPacks/ReviewPackOutputResolutionGuidance.php index 4afb5324..dde5ae2f 100644 --- a/apps/platform/app/Support/ReviewPacks/ReviewPackOutputResolutionGuidance.php +++ b/apps/platform/app/Support/ReviewPacks/ReviewPackOutputResolutionGuidance.php @@ -42,12 +42,18 @@ public static function readinessForReview(EnvironmentReview $review): array $review->loadMissing(['sections', 'evidenceSnapshot', 'currentExportReviewPack']); $pack = $review->currentExportReviewPack; + $packSummary = is_array($pack?->summary ?? null) ? $pack->summary : []; + $controlInterpretation = is_array($packSummary['control_interpretation'] ?? null) + ? $packSummary['control_interpretation'] + : []; $snapshot = $review->evidenceSnapshot; $summary = is_array($review->summary) ? $review->summary : []; $sections = self::outputSections($review, $pack); $requiredSections = $sections ->filter(static fn (mixed $section): bool => (bool) $section->required) ->values(); + $includePii = (bool) (is_array($pack?->options ?? null) ? ($pack->options['include_pii'] ?? true) : true); + $nonCertificationDisclosure = trim((string) ($controlInterpretation['non_certification_disclosure'] ?? '')); return ReviewPackOutputReadiness::derive( reviewStatus: (string) $review->status, @@ -60,9 +66,9 @@ public static function readinessForReview(EnvironmentReview $review): array requiredSectionStateCounts: self::sectionStateCounts($requiredSections), publishBlockers: is_array($summary['publish_blockers'] ?? null) ? $summary['publish_blockers'] : [], hasReadyExport: self::hasReadyExport($pack), - includePii: (bool) (is_array($pack?->options ?? null) ? ($pack->options['include_pii'] ?? true) : true), - protectedValuesHidden: true, - disclosurePresent: true, + includePii: $includePii, + protectedValuesHidden: ! $includePii, + disclosurePresent: $nonCertificationDisclosure !== '', ); } diff --git a/apps/platform/lang/de/localization.php b/apps/platform/lang/de/localization.php index 95466e4a..61bd751f 100644 --- a/apps/platform/lang/de/localization.php +++ b/apps/platform/lang/de/localization.php @@ -718,6 +718,7 @@ 'published' => 'Veröffentlicht', 'published_at' => 'Veröffentlicht am', 'generated_at' => 'Erstellt am', + 'interpretation_version' => 'Interpretationsversion', 'review_pack' => 'Review-Pack', 'rendered_report' => 'Gerenderter Review-Bericht', 'open_latest_review' => 'Letztes Review öffnen', @@ -802,9 +803,47 @@ 'view_customer_safe_report' => 'Kundensicheren Bericht anzeigen', 'view_report_with_limitations' => 'Bericht mit Einschränkungen anzeigen', 'view_internal_report' => 'Internen Bericht anzeigen', + 'report_profile' => 'Berichtsprofil', + 'report_effective_profile' => 'Effektives Profil', + 'report_requested_profile' => 'Angefordertes Profil', + 'report_audience' => 'Zielgruppe', + 'report_source_surface' => 'Quelloberfläche', + 'report_profile_customer_executive' => 'Customer Executive', + 'report_profile_customer_technical' => 'Customer Technical', + 'report_profile_internal_msp_review' => 'Interner MSP-Review', + 'report_profile_auditor_appendix' => 'Auditor-Anhang', + 'report_profile_framework_readiness' => 'Framework Readiness', + 'report_audience_customer_executive' => 'Kunden-Stakeholder und Executive-Lesende', + 'report_audience_customer_technical' => 'Technische Kunden- und Delivery-Lesende', + 'report_audience_internal_msp_review' => 'Interne MSP-Operatoren und Support-Reviewer', + 'report_audience_controlled_auditor' => 'Kontrollierte Auditor- und Assurance-Lesende', 'governance_review_report' => 'Governance-Review-Bericht', 'prepared_by_for' => 'Erstellt von :prepared_by für :prepared_for', 'generated_by' => 'Erzeugt durch :generated_by', + 'disclosure_policy' => 'Disclosure-Policy', + 'proof_state_verified' => 'Verifiziert', + 'proof_state_assumed' => 'Angenommen', + 'proof_state_missing' => 'Fehlend', + 'proof_state_unknown' => 'Unbekannt', + 'proof_state_not_applicable' => 'Nicht anwendbar', + 'report_profile_fallback_notice' => 'Das angeforderte Berichtsprofil ist auf dieser Route nicht verfügbar.', + 'report_profile_fallback_summary' => 'TenantPilot ist auf das interne MSP-Review-Profil zurückgefallen und zeigt die Anfrage weiterhin sichtbar an.', + 'report_appendix_hidden_for_profile' => 'Dieses Profil blendet den unterstützenden Anhang aus. Verwenden Sie ein begrenztes internes oder Auditor-Profil, wenn detaillierte Appendix-Inhalte erforderlich sind.', + 'report_disclosure_customer_profile_internal_only' => 'Kundenseitiges Profil durch interne Details blockiert', + 'report_disclosure_customer_profile_internal_only_summary' => 'Das gewählte kundenseitige Profil darf diesen Bericht nicht freigeben, solange interne oder PII-tragende Details im Scope bleiben.', + 'report_disclosure_customer_profile_requires_review' => 'Dieses kundenseitige Profil erfordert vor externer Weitergabe weiterhin eine Operator-Prüfung.', + 'report_disclosure_non_certification_missing' => 'Die erforderliche Nicht-Zertifizierungs-Offenlegung musste aus Fallback-Text erzwungen werden. Behandeln Sie das als fehlenden Nachweis, bis die gespeicherte Quelle korrigiert ist.', + 'report_disclosure_audience_boundary' => 'Zielgruppen-Grenze', + 'report_disclosure_audience_boundary_summary' => 'Dieser gerenderte Bericht ist auf :audience begrenzt.', + 'report_disclosure_evidence_basis' => 'Evidence-Basis-Nachweis', + 'report_disclosure_evidence_verified' => 'Die aktuelle Evidence-Basis ist vollständig genug, um den Disclosure-Status dieses Berichts zu verifizieren.', + 'report_disclosure_evidence_missing' => 'Die Evidence-Basis ist unvollständig, veraltet oder fehlt. Behandeln Sie evidence-getragene Aussagen als eingeschränkt.', + 'report_disclosure_evidence_unknown' => 'Der Status der Evidence-Basis konnte nicht sauber zugeordnet werden. Behandeln Sie evidence-getragene Aussagen als unbekannt.', + 'report_disclosure_protected_values' => 'Grenze geschützter Werte', + 'report_disclosure_protected_values_assumed' => 'Geschützte Werte scheinen anhand der aktuellen Pack-Optionen verborgen zu sein, werden aber weiterhin als angenommen und nicht als unabhängig verifiziert behandelt.', + 'report_disclosure_protected_values_missing' => 'Geschützte Werte können für dieses kundenseitige Profil nicht als sicher verborgen behandelt werden.', + 'report_disclosure_protected_values_unknown' => 'Die Behandlung geschützter Werte konnte aus der gespeicherten Berichtswahrheit nicht sauber abgeleitet werden.', + 'report_disclosure_protected_values_not_applicable' => 'Dieses Profil ist intern oder auditor-begrenzt, daher ist der Nachweis verborgener Werte hier nicht die maßgebliche Disclosure-Grenze.', 'report_state_customer_safe_ready' => 'Kundensicherer Bericht bereit', 'report_state_with_limitations' => 'Bericht mit Einschränkungen', 'report_state_internal_with_limitations' => 'Interner Bericht mit Einschränkungen', diff --git a/apps/platform/lang/en/localization.php b/apps/platform/lang/en/localization.php index ec2ee037..79c55f02 100644 --- a/apps/platform/lang/en/localization.php +++ b/apps/platform/lang/en/localization.php @@ -718,6 +718,7 @@ 'published' => 'Published', 'published_at' => 'Published at', 'generated_at' => 'Generated at', + 'interpretation_version' => 'Interpretation version', 'review_pack' => 'Review pack', 'rendered_report' => 'Rendered review report', 'open_latest_review' => 'Open latest review', @@ -802,9 +803,47 @@ 'view_customer_safe_report' => 'View customer-safe report', 'view_report_with_limitations' => 'View report with limitations', 'view_internal_report' => 'View internal report', + 'report_profile' => 'Report profile', + 'report_effective_profile' => 'Effective profile', + 'report_requested_profile' => 'Requested profile', + 'report_audience' => 'Audience', + 'report_source_surface' => 'Source surface', + 'report_profile_customer_executive' => 'Customer executive', + 'report_profile_customer_technical' => 'Customer technical', + 'report_profile_internal_msp_review' => 'Internal MSP review', + 'report_profile_auditor_appendix' => 'Auditor appendix', + 'report_profile_framework_readiness' => 'Framework readiness', + 'report_audience_customer_executive' => 'Customer stakeholders and executive readers', + 'report_audience_customer_technical' => 'Customer technical and delivery readers', + 'report_audience_internal_msp_review' => 'Internal MSP operators and support reviewers', + 'report_audience_controlled_auditor' => 'Controlled auditor and assurance readers', 'governance_review_report' => 'Governance review report', 'prepared_by_for' => 'Prepared by :prepared_by for :prepared_for', 'generated_by' => 'Generated by :generated_by', + 'disclosure_policy' => 'Disclosure policy', + 'proof_state_verified' => 'Verified', + 'proof_state_assumed' => 'Assumed', + 'proof_state_missing' => 'Missing', + 'proof_state_unknown' => 'Unknown', + 'proof_state_not_applicable' => 'Not applicable', + 'report_profile_fallback_notice' => 'Requested report profile is not available for this route.', + 'report_profile_fallback_summary' => 'TenantPilot fell back to the internal MSP review profile and kept the request visible.', + 'report_appendix_hidden_for_profile' => 'This profile keeps the supporting appendix hidden. Use a bounded internal or auditor profile when detailed appendix content is required.', + 'report_disclosure_customer_profile_internal_only' => 'Customer-facing profile blocked by internal-only detail', + 'report_disclosure_customer_profile_internal_only_summary' => 'The selected customer-facing profile cannot expose this report while internal or PII-bearing detail remains in scope.', + 'report_disclosure_customer_profile_requires_review' => 'This customer-facing profile still requires operator review before external sharing.', + 'report_disclosure_non_certification_missing' => 'The required non-certification disclosure had to be enforced from fallback copy. Treat that as missing proof until the stored source is corrected.', + 'report_disclosure_audience_boundary' => 'Audience boundary', + 'report_disclosure_audience_boundary_summary' => 'This rendered report is constrained to :audience.', + 'report_disclosure_evidence_basis' => 'Evidence basis proof', + 'report_disclosure_evidence_verified' => 'The current evidence basis is complete enough to verify the disclosure state for this report.', + 'report_disclosure_evidence_missing' => 'The evidence basis is incomplete, stale, or missing. Treat evidence-backed claims as limited.', + 'report_disclosure_evidence_unknown' => 'The evidence basis state could not be mapped cleanly. Treat evidence-backed claims as unknown.', + 'report_disclosure_protected_values' => 'Protected values boundary', + 'report_disclosure_protected_values_assumed' => 'Protected values appear hidden based on the current pack options, but that boundary is still treated as assumed rather than independently verified.', + 'report_disclosure_protected_values_missing' => 'Protected values cannot be treated as safely hidden for this customer-facing profile.', + 'report_disclosure_protected_values_unknown' => 'Protected value handling could not be established cleanly from stored report truth.', + 'report_disclosure_protected_values_not_applicable' => 'This profile is internal or auditor-bounded, so hidden-value proof is not the governing disclosure boundary.', 'report_state_customer_safe_ready' => 'Customer-safe report ready', 'report_state_with_limitations' => 'Report with limitations', 'report_state_internal_with_limitations' => 'Internal report with limitations', diff --git a/apps/platform/resources/views/review-packs/rendered-report.blade.php b/apps/platform/resources/views/review-packs/rendered-report.blade.php index 498265f9..ca7c3baf 100644 --- a/apps/platform/resources/views/review-packs/rendered-report.blade.php +++ b/apps/platform/resources/views/review-packs/rendered-report.blade.php @@ -10,8 +10,19 @@ $branding = is_array($report['branding'] ?? null) ? $report['branding'] : []; $managementSummary = is_array($report['management_summary'] ?? null) ? $report['management_summary'] : []; $evidenceBasis = is_array($report['evidence_basis'] ?? null) ? $report['evidence_basis'] : []; + $profile = is_array($report['profile'] ?? null) ? $report['profile'] : []; + $disclosurePolicy = is_array($report['disclosure_policy'] ?? null) ? $report['disclosure_policy'] : []; + $sourceMetadata = is_array($report['source_metadata'] ?? null) ? $report['source_metadata'] : []; $heroBadgeStyle = $badgeClasses[$hero['color'] ?? 'gray'] ?? $badgeClasses['gray']; $boundaryBadgeStyle = $badgeClasses[$report['guidance']['boundary_color'] ?? 'gray'] ?? $badgeClasses['gray']; + $proofBadgeStyles = [ + 'verified' => $badgeClasses['success'], + 'assumed' => $badgeClasses['warning'], + 'missing' => $badgeClasses['danger'], + 'unknown' => $badgeClasses['gray'], + 'not_applicable' => $badgeClasses['gray'], + ]; + $requestedProfile = $sourceMetadata['requested_profile'] ?? ($profile['requested_key'] ?? null); $generatedAt = $report['generated_at'] ?? null; $publishedAt = $report['published_at'] ?? null; @endphp @@ -212,6 +223,12 @@ display: grid; gap: 14px; } + .policy-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); + gap: 14px; + margin-top: 14px; + } .summary-grid { grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); margin-top: 14px; @@ -355,6 +372,14 @@

{{ __('localization.review.published_at') }}

{{ $publishedAt?->format('Y-m-d H:i') ?? '—' }}

+
+

{{ __('localization.review.report_effective_profile') }}

+

{{ $profile['label'] ?? __('localization.review.unavailable') }}

+
+
+

{{ __('localization.review.report_audience') }}

+

{{ $profile['audience_label'] ?? __('localization.review.unavailable') }}

+
@@ -391,6 +416,38 @@ @endif +
+

{{ __('localization.review.report_profile') }}

+ +
+
+

{{ __('localization.review.report_effective_profile') }}

+

{{ $profile['label'] ?? __('localization.review.unavailable') }}

+

{{ $profile['effective_key'] ?? '—' }}

+
+
+

{{ __('localization.review.report_audience') }}

+

{{ $profile['audience_label'] ?? __('localization.review.unavailable') }}

+
+
+

{{ __('localization.review.report_requested_profile') }}

+

{{ filled($requestedProfile) ? $requestedProfile : '—' }}

+
+
+

{{ __('localization.review.report_source_surface') }}

+

{{ $sourceMetadata['source_surface'] ?? 'review_pack' }}

+

{{ __('localization.review.interpretation_version') }}: {{ $sourceMetadata['interpretation_version'] ?? '—' }}

+
+
+ + @if (($profile['is_fallback'] ?? false) === true) + + @endif +
+ @if (($report['limitations'] ?? []) !== [])

{{ __('localization.review.output_limitations') }}

@@ -494,79 +551,118 @@
-

{{ __('localization.review.non_certification_disclosure') }}

-

{{ $report['non_certification_disclosure'] }}

+

{{ __('localization.review.disclosure_policy') }}

+ + @if (($disclosurePolicy['blocking_reasons'] ?? []) !== []) +
+ @foreach (($disclosurePolicy['blocking_reasons'] ?? []) as $reason) +
+

{{ $reason['label'] ?? __('localization.review.blocked') }}

+

{{ $reason['summary'] ?? '' }}

+
+ @endforeach +
+ @endif + + @if (($disclosurePolicy['warnings'] ?? []) !== []) +
+ @foreach (($disclosurePolicy['warnings'] ?? []) as $warning) +
+

{{ $warning['label'] ?? __('localization.review.requires_review') }}

+

{{ $warning['summary'] ?? '' }}

+
+ @endforeach +
+ @endif + +
+ @foreach (($disclosurePolicy['mandatory_disclosures'] ?? []) as $disclosure) +
+
+

{{ $disclosure['label'] ?? __('localization.review.non_certification_disclosure') }}

+ + {{ __('localization.review.proof_state_'.($disclosure['proof_state'] ?? 'unknown')) }} + +
+

{{ $disclosure['summary'] ?? '' }}

+
+ @endforeach +

{{ __('localization.review.supporting_appendix') }}

{{ __('localization.review.rendered_report_appendix_note') }}

-
-
-

{{ __('localization.review.executive_entrypoint') }}

-

{{ $report['entrypoint_file'] }}

-
-
-

{{ __('localization.review.auditor_appendix') }}

-

{{ implode(', ', $report['appendix_files'] ?? []) ?: '—' }}

-
- @foreach (($report['technical_details'] ?? []) as $label => $value) + @if (($disclosurePolicy['show_section_appendix'] ?? false) !== true) +

{{ __('localization.review.report_appendix_hidden_for_profile') }}

+ @else +
-

{{ $label }}

-

{{ $value }}

+

{{ __('localization.review.executive_entrypoint') }}

+

{{ $report['entrypoint_file'] }}

+
+

{{ __('localization.review.auditor_appendix') }}

+

{{ implode(', ', $report['appendix_files'] ?? []) ?: '—' }}

+
+ @foreach (($report['technical_details'] ?? []) as $label => $value) +
+

{{ $label }}

+

{{ $value }}

+
+ @endforeach +
+ + @foreach (($report['section_appendix'] ?? []) as $section) +
+
+

{{ $section['title'] }}

+ {{ $section['completeness_label'] }} +
+ + @if (($section['highlights'] ?? []) !== []) +

{{ implode(' ', $section['highlights']) }}

+ @endif + + @if (($section['entries'] ?? []) !== []) +
+ @foreach (($section['entries'] ?? []) as $entry) +
+

{{ $entry['title'] }}

+ @if (filled($entry['summary'] ?? null)) +

{{ $entry['summary'] }}

+ @endif +
+ @endforeach +
+ @endif + + @if (($section['summary_items'] ?? []) !== []) +
+ @foreach (($section['summary_items'] ?? []) as $item) +
+

{{ $item['label'] }}

+

{{ $item['value'] }}

+
+ @endforeach +
+ @endif + + @if (($section['next_actions'] ?? []) !== []) +
    + @foreach (($section['next_actions'] ?? []) as $nextAction) +
  • {{ $nextAction }}
  • + @endforeach +
+ @endif + + @if (filled($section['disclosure'] ?? null)) +

{{ $section['disclosure'] }}

+ @endif +
@endforeach -
- - @foreach (($report['section_appendix'] ?? []) as $section) -
-
-

{{ $section['title'] }}

- {{ $section['completeness_label'] }} -
- - @if (($section['highlights'] ?? []) !== []) -

{{ implode(' ', $section['highlights']) }}

- @endif - - @if (($section['entries'] ?? []) !== []) -
- @foreach (($section['entries'] ?? []) as $entry) -
-

{{ $entry['title'] }}

- @if (filled($entry['summary'] ?? null)) -

{{ $entry['summary'] }}

- @endif -
- @endforeach -
- @endif - - @if (($section['summary_items'] ?? []) !== []) -
- @foreach (($section['summary_items'] ?? []) as $item) -
-

{{ $item['label'] }}

-

{{ $item['value'] }}

-
- @endforeach -
- @endif - - @if (($section['next_actions'] ?? []) !== []) -
    - @foreach (($section['next_actions'] ?? []) as $nextAction) -
  • {{ $nextAction }}
  • - @endforeach -
- @endif - - @if (filled($section['disclosure'] ?? null)) -

{{ $section['disclosure'] }}

- @endif -
- @endforeach + @endif
diff --git a/apps/platform/routes/web.php b/apps/platform/routes/web.php index d738c4d5..60593924 100644 --- a/apps/platform/routes/web.php +++ b/apps/platform/routes/web.php @@ -237,7 +237,7 @@ $resolveSmokeTenant, $resolveSmokeUser, $resolveSmokeWorkspace, -): \Illuminate\Http\RedirectResponse { +): \Symfony\Component\HttpFoundation\Response { $tenant = $resolveSmokeTenant($tenantIdentifier); $workspace = $resolveSmokeWorkspace($workspaceIdentifier, $tenant); $user = $resolveSmokeUser($email, $workspace, $tenant); @@ -273,8 +273,27 @@ $workspaceContext->clearRememberedTenantContext($request); } - return redirect() - ->to($resolveSmokeRedirect($redirect, $tenant)) + $target = $resolveSmokeRedirect($redirect, $tenant); + $escapedTarget = e($target); + $jsonTarget = json_encode($target, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT); + + return response(<< + + + + + Redirecting to {$escapedTarget} + + + + Redirecting to {$escapedTarget}. + + +HTML) + ->header('X-Smoke-Redirect-To', $target) ->withCookie($makeSmokeCookie()); }; diff --git a/apps/platform/tests/Browser/Spec357ReportProfilesSmokeTest.php b/apps/platform/tests/Browser/Spec357ReportProfilesSmokeTest.php new file mode 100644 index 00000000..25bdc7cd --- /dev/null +++ b/apps/platform/tests/Browser/Spec357ReportProfilesSmokeTest.php @@ -0,0 +1,294 @@ +browser()->timeout(60_000); + +beforeEach(function (): void { + Storage::fake('exports'); +}); + +it('Spec357 smokes report profile variants on the rendered report route', function (): void { + [$user, $customerEnvironment, $customerReview, $customerPack] = spec357BrowserCreateProfilePack( + environmentName: 'Spec357 Browser Customer', + customerSafeReady: true, + ); + [$limitedUser, $limitedEnvironment, $limitedReview, $limitedPack] = spec357BrowserCreateProfilePack( + user: $user, + workspaceId: (int) $customerEnvironment->workspace_id, + environmentName: 'Spec357 Browser Limited', + customerSafeReady: true, + packOverrides: [ + 'options' => [ + 'include_pii' => true, + 'include_operations' => true, + ], + ], + ); + + spec357AuthenticateBrowser($this, $user, $customerEnvironment); + + $customerExecutiveUrl = app(ReviewPackService::class)->generateRenderedReportUrl($customerPack, [ + 'source_surface' => 'review_pack', + 'review_id' => (int) $customerReview->getKey(), + 'interpretation_version' => $customerReview->controlInterpretationVersion(), + ReportProfileRegistry::QUERY_PARAMETER => ReportProfileRegistry::CUSTOMER_EXECUTIVE, + ]); + + visit($customerExecutiveUrl) + ->resize(1280, 1440) + ->waitForText(__('localization.review.report_profile_customer_executive')) + ->assertSee(ReportProfileRegistry::CUSTOMER_EXECUTIVE) + ->assertSee(__('localization.review.report_appendix_hidden_for_profile')) + ->assertDontSee('Spec357 Technical Control') + ->assertNoJavaScriptErrors() + ->assertNoConsoleLogs() + ->screenshot(true, spec357BrowserScreenshotName('01-customer-executive')); + spec357CopyBrowserScreenshot('01-customer-executive'); + + $customerTechnicalUrl = app(ReviewPackService::class)->generateRenderedReportUrl($customerPack, [ + 'source_surface' => 'review_pack', + 'review_id' => (int) $customerReview->getKey(), + 'interpretation_version' => $customerReview->controlInterpretationVersion(), + ReportProfileRegistry::QUERY_PARAMETER => ReportProfileRegistry::CUSTOMER_TECHNICAL, + ]); + + visit($customerTechnicalUrl) + ->resize(1280, 1440) + ->waitForText(__('localization.review.report_profile_customer_technical')) + ->assertSee('Spec357 Technical Control') + ->assertDontSee(__('localization.review.report_appendix_hidden_for_profile')) + ->assertNoJavaScriptErrors() + ->assertNoConsoleLogs() + ->screenshot(true, spec357BrowserScreenshotName('02-customer-technical')); + spec357CopyBrowserScreenshot('02-customer-technical'); + + $internalUrl = app(ReviewPackService::class)->generateRenderedReportUrl($limitedPack, [ + 'source_surface' => 'review_pack', + 'review_id' => (int) $limitedReview->getKey(), + 'interpretation_version' => $limitedReview->controlInterpretationVersion(), + ReportProfileRegistry::QUERY_PARAMETER => ReportProfileRegistry::INTERNAL_MSP_REVIEW, + ]); + + visit($internalUrl) + ->resize(1280, 1440) + ->waitForText(__('localization.review.report_profile_internal_msp_review')) + ->assertSee(__('localization.review.report_profile_internal_msp_review')) + ->assertSee(__('localization.review.proof_state_not_applicable')) + ->assertSee('Spec357 Technical Control') + ->assertNoJavaScriptErrors() + ->assertNoConsoleLogs() + ->screenshot(true, spec357BrowserScreenshotName('03-internal-msp')); + spec357CopyBrowserScreenshot('03-internal-msp'); + + $auditorUrl = app(ReviewPackService::class)->generateRenderedReportUrl($customerPack, [ + 'source_surface' => 'review_pack', + 'review_id' => (int) $customerReview->getKey(), + 'interpretation_version' => $customerReview->controlInterpretationVersion(), + ReportProfileRegistry::QUERY_PARAMETER => ReportProfileRegistry::AUDITOR_APPENDIX, + ]); + + visit($auditorUrl) + ->resize(1280, 1440) + ->waitForText(__('localization.review.report_profile_auditor_appendix')) + ->assertSee(__('localization.review.report_audience_controlled_auditor')) + ->assertSee('Spec357 Technical Control') + ->assertNoJavaScriptErrors() + ->assertNoConsoleLogs() + ->screenshot(true, spec357BrowserScreenshotName('04-auditor-appendix')); + spec357CopyBrowserScreenshot('04-auditor-appendix'); + + $fallbackUrl = app(ReviewPackService::class)->generateRenderedReportUrl($customerPack, [ + 'source_surface' => 'review_pack', + 'review_id' => (int) $customerReview->getKey(), + 'interpretation_version' => $customerReview->controlInterpretationVersion(), + ReportProfileRegistry::QUERY_PARAMETER => ReportProfileRegistry::FRAMEWORK_READINESS, + ]); + + visit($fallbackUrl) + ->resize(1280, 1440) + ->waitForText(__('localization.review.report_profile_fallback_notice')) + ->assertSee(ReportProfileRegistry::FRAMEWORK_READINESS) + ->assertSee(ReportProfileRegistry::INTERNAL_MSP_REVIEW) + ->assertSee(__('localization.review.report_profile_internal_msp_review')) + ->assertNoJavaScriptErrors() + ->assertNoConsoleLogs() + ->screenshot(true, spec357BrowserScreenshotName('05-fallback-framework')); + spec357CopyBrowserScreenshot('05-fallback-framework'); + + expect($limitedUser)->toBeInstanceOf(User::class); +}); + +function spec357BrowserScreenshotName(string $name): string +{ + return 'spec357-report-profiles-'.$name; +} + +function spec357CopyBrowserScreenshot(string $name): void +{ + $filename = spec357BrowserScreenshotName($name).'.png'; + $primarySource = base_path('tests/Browser/Screenshots/'.$filename); + $fallbackSource = \Pest\Browser\Support\Screenshot::path($filename); + $targetDirectory = repo_path('specs/357-report-profiles-disclosure-policy-v1/artifacts/screenshots'); + + if (! is_dir($targetDirectory)) { + @mkdir($targetDirectory, 0755, true); + } + + $source = null; + + for ($attempt = 0; $attempt < 50 && $source === null; $attempt++) { + foreach ([$primarySource, $fallbackSource] as $candidate) { + if (is_file($candidate)) { + $source = $candidate; + + break; + } + } + + if ($source !== null) { + break; + } + + usleep(100_000); + clearstatcache(true, $primarySource); + clearstatcache(true, $fallbackSource); + } + + if (is_string($source) && is_file($source) && is_dir($targetDirectory) && is_writable($targetDirectory)) { + @copy($source, $targetDirectory.DIRECTORY_SEPARATOR.$name.'.png'); + } +} + +function spec357AuthenticateBrowser(mixed $test, User $user, ManagedEnvironment $environment): void +{ + $workspaceId = (int) $environment->workspace_id; + + $test->actingAs($user)->withSession([ + WorkspaceContext::SESSION_KEY => $workspaceId, + WorkspaceContext::LAST_ENVIRONMENT_IDS_SESSION_KEY => [ + (string) $workspaceId => (int) $environment->getKey(), + ], + ]); + + session()->put(WorkspaceContext::SESSION_KEY, $workspaceId); + session()->put(WorkspaceContext::LAST_ENVIRONMENT_IDS_SESSION_KEY, [ + (string) $workspaceId => (int) $environment->getKey(), + ]); + + setAdminPanelContext($environment); +} + +/** + * @param array|null $packOverrides + * @return array{0:User,1:ManagedEnvironment,2:\App\Models\EnvironmentReview,3:ReviewPack} + */ +function spec357BrowserCreateProfilePack( + ?User $user = null, + ?int $workspaceId = null, + string $environmentName = 'Spec357 Browser Environment', + bool $customerSafeReady = false, + ?array $packOverrides = [], +): array { + $workspaceId ??= null; + $environment = ManagedEnvironment::factory()->active()->create([ + 'workspace_id' => $workspaceId, + 'name' => $environmentName, + ]); + + if ($user === null) { + [$user, $environment] = createUserWithTenant(tenant: $environment, role: 'owner', workspaceRole: 'manager'); + } else { + createUserWithTenant(tenant: $environment, user: $user, role: 'owner', workspaceRole: 'manager'); + } + + $snapshot = seedEnvironmentReviewEvidence($environment, findingCount: 0, driftCount: 0); + $review = composeEnvironmentReviewForTest($environment, $user, $snapshot); + $review->forceFill([ + 'status' => 'published', + 'published_at' => now(), + 'published_by_user_id' => (int) $user->getKey(), + ])->save(); + + if ($customerSafeReady) { + $review = markEnvironmentReviewCustomerSafeReady($review); + } + + $review->loadMissing('sections'); + $appendixSection = $review->sections->first(); + + if ($appendixSection instanceof \App\Models\EnvironmentReviewSection) { + $appendixSection->forceFill([ + 'render_payload' => array_replace_recursive( + is_array($appendixSection->render_payload) ? $appendixSection->render_payload : [], + [ + 'entries' => [ + [ + 'title' => 'Spec357 Technical Control', + 'summary' => 'Visible only on appendix-capable profiles.', + ], + ], + ], + ), + ])->save(); + } + + $filePath = 'review-packs/'.($environment->external_id ?: 'spec357').'/browser-report.zip'; + Storage::disk('exports')->put($filePath, 'PK-spec357-browser-report'); + + $summary = array_replace_recursive([ + 'governance_package' => [ + 'executive_summary' => 'Spec 357 browser report summary.', + 'top_findings' => [], + 'accepted_risks' => [], + 'decision_summary' => [ + 'status' => 'none', + 'summary' => '', + 'next_action' => '', + 'entries' => [], + ], + ], + 'control_interpretation' => [ + 'non_certification_disclosure' => 'Spec 357 browser non-certification disclosure.', + ], + 'recommended_next_actions' => [], + 'delivery_bundle' => [ + 'executive_entrypoint_file' => 'executive-summary.md', + 'appendix_files' => ['metadata.json', 'summary.json', 'sections.json'], + ], + ], is_array($packOverrides['summary'] ?? null) ? $packOverrides['summary'] : []); + + $pack = ReviewPack::factory()->ready()->create(array_merge([ + 'managed_environment_id' => (int) $environment->getKey(), + 'workspace_id' => (int) $environment->workspace_id, + 'environment_review_id' => (int) $review->getKey(), + 'evidence_snapshot_id' => (int) $snapshot->getKey(), + 'initiated_by_user_id' => (int) $user->getKey(), + 'options' => [ + 'include_pii' => false, + 'include_operations' => true, + ], + 'summary' => $summary, + 'file_path' => $filePath, + 'file_disk' => 'exports', + 'generated_at' => now()->subMinutes(3), + 'expires_at' => now()->addDay(), + ], $packOverrides ?? [])); + + $review->forceFill([ + 'current_export_review_pack_id' => (int) $pack->getKey(), + ])->save(); + + return [$user, $environment, $review->fresh(['sections', 'evidenceSnapshot', 'currentExportReviewPack']), $pack->fresh()]; +} diff --git a/apps/platform/tests/Feature/Auth/AdminLocalSmokeLoginTest.php b/apps/platform/tests/Feature/Auth/AdminLocalSmokeLoginTest.php index 5d203d4b..99ea08c7 100644 --- a/apps/platform/tests/Feature/Auth/AdminLocalSmokeLoginTest.php +++ b/apps/platform/tests/Feature/Auth/AdminLocalSmokeLoginTest.php @@ -21,7 +21,8 @@ ])); $response - ->assertRedirect(EnvironmentDashboard::getUrl(tenant: $tenant)) + ->assertSuccessful() + ->assertHeader('X-Smoke-Redirect-To', EnvironmentDashboard::getUrl(tenant: $tenant)) ->assertPlainCookie( SuppressDebugbarForSmokeRequests::COOKIE_NAME, SuppressDebugbarForSmokeRequests::COOKIE_VALUE, diff --git a/apps/platform/tests/Feature/Auth/BackupHealthBrowserFixtureLoginTest.php b/apps/platform/tests/Feature/Auth/BackupHealthBrowserFixtureLoginTest.php index 8c5d6bc0..be9c6202 100644 --- a/apps/platform/tests/Feature/Auth/BackupHealthBrowserFixtureLoginTest.php +++ b/apps/platform/tests/Feature/Auth/BackupHealthBrowserFixtureLoginTest.php @@ -28,7 +28,8 @@ expect($tenant)->not->toBeNull(); $this->get(route('admin.local.backup-health-browser-fixture-login')) - ->assertRedirect(EnvironmentDashboard::getUrl(tenant: $tenant)) + ->assertSuccessful() + ->assertHeader('X-Smoke-Redirect-To', EnvironmentDashboard::getUrl(tenant: $tenant)) ->assertPlainCookie( SuppressDebugbarForSmokeRequests::COOKIE_NAME, SuppressDebugbarForSmokeRequests::COOKIE_VALUE, diff --git a/apps/platform/tests/Feature/Console/TenantpilotSeedReviewOutputBrowserFixtureCommandTest.php b/apps/platform/tests/Feature/Console/TenantpilotSeedReviewOutputBrowserFixtureCommandTest.php index bb0bd263..cb4ca963 100644 --- a/apps/platform/tests/Feature/Console/TenantpilotSeedReviewOutputBrowserFixtureCommandTest.php +++ b/apps/platform/tests/Feature/Console/TenantpilotSeedReviewOutputBrowserFixtureCommandTest.php @@ -7,10 +7,13 @@ use App\Filament\Resources\EnvironmentReviewResource\Pages\ViewEnvironmentReview; use App\Models\EnvironmentReview; use App\Models\ManagedEnvironment; +use App\Models\OperationRun; use App\Models\ReviewPack; use App\Models\User; use App\Models\Workspace; use App\Support\EnvironmentReviewStatus; +use App\Support\OperationRunStatus; +use App\Support\OperationRunType; use App\Support\Workspaces\WorkspaceContext; use Filament\Actions\Action; use Illuminate\Foundation\Testing\RefreshDatabase; @@ -87,7 +90,8 @@ 'workspace' => $workspace->slug, 'redirect' => $detailRedirect, ])) - ->assertRedirect($detailRedirect) + ->assertSuccessful() + ->assertHeader('X-Smoke-Redirect-To', $detailRedirect) ->assertSessionHas(WorkspaceContext::SESSION_KEY, (int) $workspace->getKey()); $this->assertAuthenticatedAs($user); @@ -98,6 +102,40 @@ ->test(ViewEnvironmentReview::class, ['record' => $readyReview->getKey()]) ->assertActionVisible('publish_review') ->assertActionExists('publish_review', fn (Action $action): bool => $action->isConfirmationRequired()); + + expect($publishedReview->operation_run_id)->not->toBeNull() + ->and($readyReview->operation_run_id)->not->toBeNull() + ->and($publishedReview->operation_run_id)->not->toBe($readyReview->operation_run_id); + + $composeRuns = OperationRun::query() + ->where('managed_environment_id', (int) $environment->getKey()) + ->where('type', OperationRunType::EnvironmentReviewCompose->value) + ->orderBy('id') + ->get(); + + expect($composeRuns)->toHaveCount(2) + ->and($composeRuns->pluck('status')->all())->toBe([ + OperationRunStatus::Completed->value, + OperationRunStatus::Completed->value, + ]) + ->and($composeRuns->pluck('outcome')->all())->toBe([ + 'succeeded', + 'succeeded', + ]); + + $this->artisan('tenantpilot:review-output:seed-browser-fixture', ['--no-interaction' => true]) + ->assertSuccessful(); + + expect( + OperationRun::query() + ->where('managed_environment_id', (int) $environment->getKey()) + ->where('type', OperationRunType::EnvironmentReviewCompose->value) + ->whereIn('status', [ + OperationRunStatus::Queued->value, + OperationRunStatus::Running->value, + ]) + ->count() + )->toBe(0); }); function tenantpilotReviewOutputFixtureRelativeAdminRedirect(string $url): string diff --git a/apps/platform/tests/Feature/ManagedEnvironment/ManagedEnvironmentRouteBindingTest.php b/apps/platform/tests/Feature/ManagedEnvironment/ManagedEnvironmentRouteBindingTest.php index 1cb1eea2..1ab19798 100644 --- a/apps/platform/tests/Feature/ManagedEnvironment/ManagedEnvironmentRouteBindingTest.php +++ b/apps/platform/tests/Feature/ManagedEnvironment/ManagedEnvironmentRouteBindingTest.php @@ -22,7 +22,8 @@ 'tenant' => $environment->slug, 'redirect' => $redirect, ])) - ->assertRedirect($redirect) + ->assertSuccessful() + ->assertHeader('X-Smoke-Redirect-To', $redirect) ->assertSessionHas('current_workspace_id', (int) $environment->workspace_id); }); @@ -84,6 +85,7 @@ 'tenant' => $environment->slug, 'redirect' => $redirect, ])) - ->assertRedirect($redirect) + ->assertSuccessful() + ->assertHeader('X-Smoke-Redirect-To', $redirect) ->assertSessionHas('current_workspace_id', (int) $workspace->getKey()); }); diff --git a/apps/platform/tests/Feature/ReviewPack/Spec357RenderedReportProfileTest.php b/apps/platform/tests/Feature/ReviewPack/Spec357RenderedReportProfileTest.php new file mode 100644 index 00000000..e9376f38 --- /dev/null +++ b/apps/platform/tests/Feature/ReviewPack/Spec357RenderedReportProfileTest.php @@ -0,0 +1,209 @@ +generateRenderedReportUrl($pack, [ + 'source_surface' => 'review_pack', + 'review_id' => (int) $review->getKey(), + 'interpretation_version' => $review->controlInterpretationVersion(), + ReportProfileRegistry::QUERY_PARAMETER => ReportProfileRegistry::CUSTOMER_EXECUTIVE, + ]); + + $this->actingAs($user) + ->get($signedUrl) + ->assertOk() + ->assertSee(__('localization.review.report_profile')) + ->assertSee(__('localization.review.report_effective_profile')) + ->assertSee(ReportProfileRegistry::CUSTOMER_EXECUTIVE) + ->assertSee(__('localization.review.report_profile_customer_executive')) + ->assertSee(__('localization.review.report_audience_customer_executive')) + ->assertSee(__('localization.review.disclosure_policy')) + ->assertSee(__('localization.review.proof_state_assumed')) + ->assertSee(__('localization.review.report_appendix_hidden_for_profile')) + ->assertDontSee('Spec357 Technical Control'); +}); + +it('shows appendix detail for the technical customer profile while keeping the route signed and read-only', function (): void { + [$user, $tenant, $review, $pack] = spec357CreateCurrentReviewPackForRenderedReport(customerSafeReady: true); + + $signedUrl = app(ReviewPackService::class)->generateRenderedReportUrl($pack, [ + 'source_surface' => 'review_pack', + 'review_id' => (int) $review->getKey(), + 'interpretation_version' => $review->controlInterpretationVersion(), + ReportProfileRegistry::QUERY_PARAMETER => ReportProfileRegistry::CUSTOMER_TECHNICAL, + ]); + + $this->actingAs($user) + ->get($signedUrl) + ->assertOk() + ->assertSee(ReportProfileRegistry::CUSTOMER_TECHNICAL) + ->assertSee(__('localization.review.report_profile_customer_technical')) + ->assertSee('Spec357 Technical Control') + ->assertDontSee(__('localization.review.report_appendix_hidden_for_profile')); +}); + +it('fails closed to the internal msp review profile for invalid or placeholder profile requests', function (string $requestedProfile): void { + [$user, $tenant, $review, $pack] = spec357CreateCurrentReviewPackForRenderedReport(customerSafeReady: true); + + $signedUrl = app(ReviewPackService::class)->generateRenderedReportUrl($pack, [ + 'source_surface' => 'review_pack', + 'review_id' => (int) $review->getKey(), + 'interpretation_version' => $review->controlInterpretationVersion(), + ReportProfileRegistry::QUERY_PARAMETER => $requestedProfile, + ]); + + $response = $this->actingAs($user)->get($signedUrl); + + $response->assertOk() + ->assertSee(__('localization.review.report_profile_internal_msp_review')) + ->assertSee(ReportProfileRegistry::INTERNAL_MSP_REVIEW) + ->assertSee($requestedProfile) + ->assertSee(__('localization.review.report_effective_profile')) + ->assertSee(__('localization.review.report_requested_profile')) + ->assertSee(__('localization.review.report_profile_fallback_notice')) + ->assertSee(__('localization.review.proof_state_verified')); +})->with([ + 'unknown profile' => ['unknown_profile_key'], + 'framework placeholder' => [ReportProfileRegistry::FRAMEWORK_READINESS], +]); + +it('keeps customer-facing profiles visibly limited when pii-bearing output is requested', function (): void { + [$user, $tenant, $review, $pack] = spec357CreateCurrentReviewPackForRenderedReport( + packOverrides: [ + 'options' => [ + 'include_pii' => true, + 'include_operations' => true, + ], + ], + customerSafeReady: true, + ); + + $signedUrl = app(ReviewPackService::class)->generateRenderedReportUrl($pack, [ + 'source_surface' => 'review_pack', + 'review_id' => (int) $review->getKey(), + 'interpretation_version' => $review->controlInterpretationVersion(), + ReportProfileRegistry::QUERY_PARAMETER => ReportProfileRegistry::CUSTOMER_EXECUTIVE, + ]); + + $this->actingAs($user) + ->get($signedUrl) + ->assertOk() + ->assertSee(__('localization.review.report_profile_customer_executive')) + ->assertSee(__('localization.review.report_external_sharing_warning')) + ->assertSee(__('localization.review.report_disclosure_customer_profile_internal_only')) + ->assertSee(__('localization.review.proof_state_missing')) + ->assertDontSee(__('localization.review.report_state_customer_safe_ready')); +}); + +/** + * @param array|null $packOverrides + * @return array{0:\App\Models\User,1:ManagedEnvironment,2:\App\Models\EnvironmentReview,3:ReviewPack} + */ +function spec357CreateCurrentReviewPackForRenderedReport( + ?array $packOverrides = [], + bool $customerSafeReady = false, + ?\App\Models\EvidenceSnapshot $snapshot = null, +): array { + $packOverrides ??= []; + $tenant = ManagedEnvironment::factory()->create(); + [$user, $tenant] = createUserWithTenant(tenant: $tenant, role: 'owner'); + $snapshot ??= seedEnvironmentReviewEvidence($tenant, findingCount: 0, driftCount: 0); + $review = composeEnvironmentReviewForTest($tenant, $user, $snapshot); + $review->forceFill([ + 'status' => 'published', + 'published_at' => now(), + 'published_by_user_id' => (int) $user->getKey(), + ])->save(); + + if ($customerSafeReady) { + $review = markEnvironmentReviewCustomerSafeReady($review); + } + + $review->loadMissing('sections'); + $appendixSection = $review->sections->first(); + + if ($appendixSection instanceof \App\Models\EnvironmentReviewSection) { + $appendixSection->forceFill([ + 'render_payload' => array_replace_recursive( + is_array($appendixSection->render_payload) ? $appendixSection->render_payload : [], + [ + 'entries' => [ + [ + 'title' => 'Spec357 Technical Control', + 'summary' => 'Visible only on appendix-capable profiles.', + ], + ], + 'highlights' => ['Spec357 appendix highlight.'], + ], + ), + ])->save(); + } + + $filePath = 'review-packs/'.$tenant->external_id.'/spec357-rendered-report.zip'; + Storage::disk('exports')->put($filePath, 'PK-spec357-rendered-report-content'); + + $summary = array_replace_recursive([ + 'governance_package' => [ + 'executive_summary' => 'The released review is ready for management handoff.', + 'evidence_basis_summary' => 'The report is anchored to the current released evidence snapshot.', + 'top_findings' => [], + 'accepted_risks' => [], + 'decision_summary' => [ + 'status' => 'none', + 'summary' => '', + 'next_action' => '', + 'entries' => [], + ], + ], + 'control_interpretation' => [ + 'non_certification_disclosure' => 'TenantPilot summarizes available service-delivery evidence for governance review. This report is not a certification, legal attestation, audit opinion, or compliance guarantee.', + ], + 'recommended_next_actions' => [], + 'delivery_bundle' => [ + 'executive_entrypoint_file' => 'executive-summary.md', + 'appendix_files' => ['metadata.json', 'summary.json', 'sections.json'], + ], + ], is_array($packOverrides['summary'] ?? null) ? $packOverrides['summary'] : []); + + $packAttributes = array_merge([ + 'managed_environment_id' => (int) $tenant->getKey(), + 'workspace_id' => (int) $tenant->workspace_id, + 'environment_review_id' => (int) $review->getKey(), + 'evidence_snapshot_id' => (int) $snapshot->getKey(), + 'initiated_by_user_id' => (int) $user->getKey(), + 'options' => [ + 'include_pii' => false, + 'include_operations' => true, + ], + 'summary' => $summary, + 'file_path' => $filePath, + 'file_disk' => 'exports', + 'sha256' => hash('sha256', 'PK-spec357-rendered-report-content'), + 'expires_at' => now()->addDay(), + ], $packOverrides); + $packAttributes['summary'] = $summary; + + $pack = ReviewPack::factory()->ready()->create($packAttributes); + + $review->forceFill([ + 'current_export_review_pack_id' => (int) $pack->getKey(), + ])->save(); + + return [$user, $tenant, $review->fresh(['sections', 'evidenceSnapshot', 'currentExportReviewPack']), $pack->fresh()]; +} diff --git a/apps/platform/tests/Unit/Support/ReviewPacks/Spec357ReportDisclosurePolicyTest.php b/apps/platform/tests/Unit/Support/ReviewPacks/Spec357ReportDisclosurePolicyTest.php new file mode 100644 index 00000000..982a0f70 --- /dev/null +++ b/apps/platform/tests/Unit/Support/ReviewPacks/Spec357ReportDisclosurePolicyTest.php @@ -0,0 +1,102 @@ + 'Spec 357 non-certification disclosure.', + ], + ); + + expect(collect($policy['mandatory_disclosures'])->pluck('key')->all()) + ->toContain('audience_boundary', 'evidence_basis', 'protected_values', 'non_certification') + ->and(data_get($policy, 'proof_states.evidence_basis'))->toBe('verified') + ->and(data_get($policy, 'proof_states.protected_values'))->toBe('assumed') + ->and(data_get($policy, 'proof_states.non_certification'))->toBe('assumed') + ->and($policy['blocking_reasons'])->toBeEmpty() + ->and($policy['show_section_appendix'])->toBeFalse() + ->and($policy['show_technical_details'])->toBeFalse(); +}); + +it('marks missing and unknown proof states and blocks customer-facing output when pii-bearing detail is requested', function (): void { + $profile = ReportProfileRegistry::resolve(ReportProfileRegistry::CUSTOMER_EXECUTIVE); + $policy = ReportDisclosurePolicy::evaluate( + $profile, + spec357DisclosureReadiness( + evidenceCompletenessState: 'mystery_state', + includePii: true, + protectedValuesHidden: false, + disclosurePresent: false, + ), + [ + 'non_certification_disclosure' => '', + ], + ); + + expect(collect($policy['blocking_reasons'])->pluck('key')->all()) + ->toContain('customer_profile_internal_only') + ->and(data_get($policy, 'proof_states.evidence_basis'))->toBe('unknown') + ->and(data_get($policy, 'proof_states.protected_values'))->toBe('missing') + ->and(data_get($policy, 'proof_states.non_certification'))->toBe('missing'); +}); + +it('uses not applicable proof state for hidden-value claims on internal profiles that intentionally include pii', function (): void { + $profile = ReportProfileRegistry::resolve(ReportProfileRegistry::INTERNAL_MSP_REVIEW); + $policy = ReportDisclosurePolicy::evaluate( + $profile, + spec357DisclosureReadiness( + includePii: true, + protectedValuesHidden: false, + disclosurePresent: true, + ), + [ + 'non_certification_disclosure' => 'Internal profile disclosure.', + ], + ); + + expect(data_get($policy, 'proof_states.protected_values'))->toBe('not_applicable') + ->and($policy['show_section_appendix'])->toBeTrue() + ->and($policy['show_technical_details'])->toBeTrue(); +}); + +/** + * @param list $publishBlockers + * @return array + */ +function spec357DisclosureReadiness( + string $reviewStatus = 'published', + string $reviewCompletenessState = 'complete', + string $evidenceCompletenessState = 'complete', + array $publishBlockers = [], + bool $hasReadyExport = true, + bool $includePii = false, + bool $protectedValuesHidden = true, + bool $disclosurePresent = true, +): array { + return ReviewPackOutputReadiness::derive( + reviewStatus: $reviewStatus, + reviewCompletenessState: $reviewCompletenessState, + evidenceCompletenessState: $evidenceCompletenessState, + sectionStateCounts: ['complete' => 4], + requiredSectionCount: 4, + requiredSectionStateCounts: ['complete' => 4], + publishBlockers: $publishBlockers, + hasReadyExport: $hasReadyExport, + includePii: $includePii, + protectedValuesHidden: $protectedValuesHidden, + disclosurePresent: $disclosurePresent, + ); +} diff --git a/apps/platform/tests/Unit/Support/ReviewPacks/Spec357ReportProfileRegistryTest.php b/apps/platform/tests/Unit/Support/ReviewPacks/Spec357ReportProfileRegistryTest.php new file mode 100644 index 00000000..4938eed4 --- /dev/null +++ b/apps/platform/tests/Unit/Support/ReviewPacks/Spec357ReportProfileRegistryTest.php @@ -0,0 +1,53 @@ +toContain( + ReportProfileRegistry::CUSTOMER_EXECUTIVE, + ReportProfileRegistry::CUSTOMER_TECHNICAL, + ReportProfileRegistry::INTERNAL_MSP_REVIEW, + ReportProfileRegistry::AUDITOR_APPENDIX, + ReportProfileRegistry::FRAMEWORK_READINESS, + ) + ->and($profiles[ReportProfileRegistry::CUSTOMER_EXECUTIVE]['implemented'])->toBeTrue() + ->and($profiles[ReportProfileRegistry::CUSTOMER_TECHNICAL]['show_section_appendix'])->toBeTrue() + ->and($profiles[ReportProfileRegistry::CUSTOMER_EXECUTIVE]['show_section_appendix'])->toBeFalse() + ->and($profiles[ReportProfileRegistry::INTERNAL_MSP_REVIEW]['show_technical_details'])->toBeTrue() + ->and($profiles[ReportProfileRegistry::FRAMEWORK_READINESS]['implemented'])->toBeFalse(); +}); + +it('fails closed to the internal msp review profile for unknown or unimplemented profile keys', function (string $requestedKey, string $fallbackReason): void { + $resolved = ReportProfileRegistry::resolve($requestedKey); + + expect($resolved['requested_key'])->toBe($requestedKey) + ->and($resolved['effective_key'])->toBe(ReportProfileRegistry::DEFAULT_PROFILE) + ->and($resolved['is_fallback'])->toBeTrue() + ->and($resolved['fallback_reason'])->toBe($fallbackReason) + ->and($resolved['implemented'])->toBeTrue() + ->and($resolved['profile_key'])->toBe(ReportProfileRegistry::DEFAULT_PROFILE); +})->with([ + 'unknown key' => ['no_such_profile', 'unknown_profile'], + 'framework placeholder' => [ReportProfileRegistry::FRAMEWORK_READINESS, 'unimplemented_profile'], +]); + +it('chooses the customer executive profile for customer-safe handoff and the internal profile for limited operator contexts', function (): void { + expect(ReportProfileRegistry::defaultForRenderedReportState( + ReviewPackOutputResolutionGuidance::STATE_CUSTOMER_SAFE_READY, + true, + ))->toBe(ReportProfileRegistry::CUSTOMER_EXECUTIVE) + ->and(ReportProfileRegistry::defaultForRenderedReportState( + ReviewPackOutputResolutionGuidance::STATE_PUBLISHED_WITH_LIMITATIONS, + false, + ))->toBe(ReportProfileRegistry::INTERNAL_MSP_REVIEW) + ->and(ReportProfileRegistry::defaultForRenderedReportState( + ReviewPackOutputResolutionGuidance::STATE_INTERNAL_ONLY, + false, + ))->toBe(ReportProfileRegistry::INTERNAL_MSP_REVIEW); +}); diff --git a/docs/ui-ux-enterprise-audit/page-reports/ui-099-rendered-review-report.md b/docs/ui-ux-enterprise-audit/page-reports/ui-099-rendered-review-report.md index e3b07670..427666a1 100644 --- a/docs/ui-ux-enterprise-audit/page-reports/ui-099-rendered-review-report.md +++ b/docs/ui-ux-enterprise-audit/page-reports/ui-099-rendered-review-report.md @@ -8,8 +8,8 @@ # UI-099 Rendered Review Report | Archetype | Reviews | | Design depth | Strategic Surface | | Repo truth | repo-verified | -| Screenshot | `-` | -| Browser status | Reached in the live in-app browser on 2026-06-05 via the Spec 351 review-output fixture; verified the HTML-first toolbar, signed route, evidence/technical-detail sections, and structured appendix rendering. | +| Screenshot | `specs/357-report-profiles-disclosure-policy-v1/artifacts/screenshots/spec357-in-app-browser-customer-executive.png` | +| Browser status | Reached in the live in-app browser on 2026-06-05 via the Spec 351 review-output fixture plus a signed rendered-report URL; verified HTML-first chrome, effective profile metadata, disclosure-proof badges, and appendix hiding for `customer_executive`. | ## First Five Seconds @@ -24,14 +24,16 @@ ## Productization Review - Decision-first: the hero and guidance badges summarize stakeholder-safe posture before appendix detail. - Evidence-first: evidence basis, governance decisions, accepted risks, and technical details stay visible in bounded sections. +- Audience-first: the route now states effective profile, requested profile, audience boundary, and source surface before appendix detail. +- Truth-over-presentation: profile-specific filtering may hide appendix detail, but it may not hide readiness, evidence state, disclosure state, or non-certification copy. - Context: the route is signed, read-only, and anchored to one current review pack plus one released review. - Capability/RBAC awareness: the controller enforces tenant membership, `review_pack.view`, current-export authority, ready state, and expiry. -- Customer/auditor safety: diagnostics remain appendix-level; the route does not expose raw ZIP internals as the first screen. +- Customer/auditor safety: diagnostics remain appendix-level; customer-facing profiles fail closed or hide appendix detail when internal-only or PII-bearing scope remains. - Diagnostics/default hierarchy: HTML-first rendering leads, with ZIP download and print as secondary utilities. ## Information Inventory -Default-visible content should include executive summary, evidence basis, limitations, key findings, accepted risks, governance decisions requiring awareness, next actions, non-certification disclosure, technical details, and a structured auditor appendix derived from `EnvironmentReviewSection` truth. +Default-visible content should include executive summary, effective profile, audience, requested profile, source metadata, evidence basis, limitations, key findings, accepted risks, governance decisions requiring awareness, next actions, disclosure-proof state badges, and non-certification disclosure. Technical details and the structured appendix remain profile-aware and may be hidden for customer-executive delivery. ## Dangerous Actions @@ -47,6 +49,15 @@ ## Spec 356 Follow-up - it keeps the ZIP as the structured appendix and downloadable artifact - it preserves owner-surface backlinks so operators can inspect the released review or pack detail without losing context +## Spec 357 Follow-up + +Spec 357 adds a bounded report-policy layer on the same route: + +- profile selection remains on the signed rendered-report URL seam and fails closed for unknown or placeholder profiles +- the route now shows effective profile, audience, requested profile, and source surface metadata explicitly +- disclosure proof is split into `verified`, `assumed`, `missing`, `unknown`, and `not_applicable` states instead of silently upgrading stored booleans to verified truth +- appendix and technical-detail visibility now depend on the effective profile and current internal-only / PII boundary + ## Target Direction Keep this report calm, bounded, and print-friendly. Future follow-up should focus on browser evidence and hierarchy polish, not on a second rendering runtime or a broader delivery taxonomy. diff --git a/specs/357-report-profiles-disclosure-policy-v1/artifacts/screenshots/spec357-in-app-browser-customer-executive.png b/specs/357-report-profiles-disclosure-policy-v1/artifacts/screenshots/spec357-in-app-browser-customer-executive.png new file mode 100644 index 0000000000000000000000000000000000000000..6a5b3e1532dce6f769e9553db2a522cfac943228 GIT binary patch literal 329830 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 zba�QyWZDc>vk9D+Lf`+B;V;ipYn9~Md+R2g-59WD^UrevwFlxC<~O4iGrYmsvoa1%$~ zi`Lg(Za&spU5qWPhn<&u>$egm;ed#1F>x1?BV5jO zb+6*4c0M$?NP97_QBK_*&|=P<(vfJuW^l}-9bRM3zTxWX>Jc)>BdGT8FqD%^FMm7l zHHbw{j>BIJ{^;s<{N;+uHM7?fHY3VIhG<;@9N6&;q=~Mj06Hc>C^GPsW}%?a3J>S$ z3c8XoVbOUAux}6%7z`K!v_7T)LGf>JgToNum$Cu~1=(XztSKRsl-z*WDOJf-s!=^P zym^jSB4=oT@rGwLp(#W7@sqkWj*9LuiXJi+4|8mWq6Q7mQX{S2u$* zW6u%_FL@YJu- zmBkFejX?*|bhHyAxeM>a=!g-(8YAzCAQbviV1pFt`-&`rholG&F~;#l;8L8&tszPt zrdA3dw~-J<>NmFOllSIPdsSnP9oY+=F8w*Zw!X2ynrLPB=qH0@Maf#6{>&Q}iNael zdID{n!SRIQ8&lj#eqi;{JTQJ$M#RV3=Z+_lLA{#p5T73iSvKK{)?38WSZU-DsF~42 z-&5H_$l`Rba4`^&E|Zgx@yQI2zxMj*gk^|sfItV&c{GIEllR^J@dTQO|&Bye6H)Qc&(Ji;z074MQ_s2PUQ@=XZ%~c;cpiDMr zbUx5uZ+_p?ZfCF~dTn#P6@-6Ne2r**kz_o}RM#`8BCKl4(Cb@Haec4Ue8j@$J-gc+ zug{_EZk?;Y^Yi}$OW~aU!dwp0fEncGr-7$UYbe>9@}=_)cvN#Pd(mKdT?isL{K_cK zw3L}Vs&ku<-s$H(dS50RUijC>Jdlz&u*2Ro38rD2Gky^=tv2^XFy+Ir+T0sEep<+v zM3E-4L!XP2Pk9O-PT&=BpQUXO8;YeEh7xX;RJeMG2FSeu$-~%G4bVVhV>RN3z0lkF z8EsX&C^X{Js;;Z+2ya0Z9?RmC+M?{qU*d#XfvS95Pb(D_VXB&vjh>K?`*6RcPtc#I z7VNDqdmnebTjZzKUM9uXuDNXtN3NdIC^rr-B?rZx0OD9x44G59ChWPS3Ez1^n~mk{ zH~MePxL?FkeI|ex@@$AA!b%Q2)37;)MD<6W!_ROw^PH-cr|Zi-@5GGu#B}>^6p3xb zigV?SzzL^$At_*RcVo@!+z`amwQttwa5J{Bz#0o{b@jRGdb{w|a52h%SZQ0@XdQ+% z!ZF)VZTvA{ib;HxzR+|QaxYePGUfxu%i(DU%UFOz)`xyt@fNNVL>5bk1Pg1u0_f#( z0^k7jw-@`@F9Aq_hPW~6w9p(L^qC{~ObmjtiYntsKTeMsSysmBPu$TKW3tg0&+>%x zmOfg9;oke;6jcT1gE(k_qP>=n!diU?=tc?G`nh-$#>+8&q;kS9s^A)`UPY17W~+Hl z58>A(Iih1KK;|3P2cTndx6@NYy+Wyqsd0TX6V_H$bC*MXBP8-hFDbaXZZuN%OOu*; zd+!!_aO?q9w$1jEv2)Ub@W=`r;XO|5&z2YwukbOrdvx=fw^(z|h955=@UUePobMZO zoZn>c-|gA1C*<7NUNzoepN;M2gZ=u|4E{~I(=x&FM-72i*-DOt{4>N*oboY*iIQGJ z9+%XBw@^YD>~$*}#v(5QrRL`MBp)hm)iC!A9!VS%&~%G2;E~3?&mM~`uF^}o3$h18 zAB--z5sU71-P*;Qr4!VC{f4IHkCBi^I_s&o-LpH`AtV_SgmhhR>{lx4XC+%!S(Kgpt;k+{9WM=gbgzB^!pS*UXPHWo(Y@@_>8A}oD^7xUzqy6FFdxv;9h_EdT#3KHnBeDIS`Mv65KO>U zapH^8(#08<=vumg`RFY%-d=;m{dSgdj2~vHMS@6qVq6<0c0=W4W4Kky%yfMXCkUgh z{;%94avRaxGg`X485PL<>AR7rSppaPIuUQ(&Zg9^embetSF!^*VuQK?+erVEzR#p0 z`G}-POOErVZuJf6754^+)f5=N@(mx57Tjf5ci<;4oyzX0FnMz!U z{povX0lykj{VZUq%m6E5)pt_XYBelDXgg=Z=NXJ9-hxy}U5dfdrTIkZg=J}mKnzr( zs#8E-W$|z5O9kH z!j_O_+R{b1OK8i`&m_Hj@7s8t6RN?`-f`QrJ%E@a1W6>KPMI(mwApe`c2t)6>mOL; z4;7|(G^LT-KR4_qs56}3ObHuchIp*uj_Ew}l6<#WI5t%V8Q0h1$TfvO*h}9X;d;8q zSfPeVw@XAJQA*e8kO}jd`}x62{z2Ob0yYjCaNT@!xuSZo`69fJz663Y6^0<|geNp; z*_K};ADS$XkdTm*Ve?BfI1-DLH$8beePcvAKsGUF%pS7gDL0ETWl0)zzAi>i2D)}8 zq@k01vgnrU0!MXv)(w_!AcJa}9xv8ue3gI}cv;o&3*dd^=viN*T`f}`9~r7uB?b>` zckOU*1|g@km7Q$v<|MMJt5~{`gM3{-TO<&u#Nci*Hoj z6G^R(v1G@>mj2=1a;nG){m0M`nr=tyU383-@~7yI>!U}9S|kPpI}oDpXxQi$#-b(yrGv2Z-rhXYHFrlfIM%wrFmP^xeM-{!$6u7E(piT)2vXOr z;-t>`_P4tb1b31r4e{mGU8|L?BVxmR1Iw)5uyeUCJuh3sNt59l*A`aQlrG&Kg17iN zFIw#IrKMUM9pZji>@U{mHUnhuptLs*2cbOtCXtAm z#EK;hkx81q97)5QY^|A_>Lzwv9OZ7fmiVqXQZyB;3h%*EeIw&e(~GjhN0ayUEO@iI zTL;;1<2@lh3V-eYliU(ZD99~V!PUs`K`vZc(zhsc>cf=j&g&rVMMy-wz^8bL!DH1q z!cOdh^GXw7mTR3byi{sbgFY}tqJ;HQ=%1;H7w_zl6603m|Io1+OQ~&rHR^ND*J76+ z6+?Ppn)O{Lqpq@+fg56KK?b3&!PChs;11w4mYp`f;%|J?C$H+KU9y+iLHk_ zOo5RQ?v{LZoh~+r>XNHz&lbK^lZUqDcI2#6lVgNkSt=^_1h+1JVsG}NWyd>0rda9?XA3~(|}cpnQ2o@h}3mNc1gXW<{c)6_2ipdk}hPl`0NS2evYh3 zqC>xeNB{AK3X5j{#>z4n*lhg{8w&juHe{;*uDl-DcjuH6y(%T(CDOwa16TvP;%`tq zzD2-7nFsJ0QC;zP zF~de%+1J+|^n^hE1h%SOBwyj&euH5F4Biz$mOq4mA9fr-?PB_%L@9JFjYpBZtf`1aSi=ecr z=_#&Af#qx~@_5yZQH~%w68?MA{mnVnDWh_wej{LGuK?oJ;sUYMgyW|pTzDM@l5?8~ z^RK3@BMl7gINO*f%z+0EKGA_~*T~Rr18evn>dVju#q&=<6f*RV9~JJ)(RGvE4~wNE zTN@Kw76U867dfXagvr~{i*&OsqumN~@6X>?Hc_N1gtQmrY+$bDG1F}=x!gtms#gtjV`7EHrV|7egwIo@4K z8Z?Dje8R~1WyKkgbEh14iG==qREar1d)}55y@qf#Fq?yhqIe@ADP4&wJL#&20&zoD zglv*;e7-4aOsJb4I5jtvz4!Nx8Dn`zyU-ch90nqv0iY&je_+`=qO9|SW}L0hbhT?5 z&>2LZ{n8r>Ri`pBi?Yg^*2`0?IWE)Ud3vo&N7 z1}@Zw<|HB=-PAY(M;5+@akhe)zi#2+mSjIBp`fQiT3?=~=;3uz0!%W#8yri)2lfqgCWCE+P!!&M6`S7BxNIWJ9lUwQ&uHR zB;3sJm1;8+btW6I2d`y{k%?WoJ{0-JGSD!PL6lIv2xRS`kvlqJo@e`f)Z~MxYNHp9 z*dhDTSxNDZN!O61&}s6F<2Prdmo6HOKFCxhlNea&l7oc4sKDI_I#? z0}AdT^XXH;eOQ+2+l;6B+u%7k@vpm%Nty#KZ#7w-p7xnV`%`4|%6_44SZ;xwQ2Jz5 zF_1Fl1V?+I+Vbj-Qa5KhbgiU0tfg*V@olYb*%X=UnPoN~$af80CsA2&-Mmasv$|sq zQd#s?TYE-FukR^>vwaQh@BTbZwCyH=#y!*N1fL@HES{bbu40F}1@9(|1E&plYv&`y z`Kn-(wxvBn0?UAq6|Oy^IH@9@~}J@e461lchnpJxUZx>T$B<>w0lmuIlnoam}3n zv=C1wee%@r1>Xl$u5`+bqodVq2?i(Q&HLs7Z*P9vq$W2*JnX5bz6Ak z|04Y7-x&n{>;9aw_;YoE65l)eZK~{X+=(O61eoQaM4_dD+PeBrwWzMJ1Fs^9;(vqY z6>b3XZ2)oNKYWQnLB;N6C=fs@4+IzS-?sb%D+nN4@*c+j_+U9v-Z4BX<6#N`pnRfJ zJdIHYGv!qqng}@E$uA4)sy z1|5I14L|Mbc`DWA&s3+cVtl)iAgSkBjPG!Y!X{C z^lC`uosa?KPSjsocy>nb_A8jbhvK_>OC1{SG14j9wK$-Tyi)U!Q^GI}_4QZy1{!)F zn114u^od&@uIyNZmrYLTqQgh@jvjKvD~wjJv@ZDy*`-T&0z$pZ<(CXzlD3F~^O=|J zq7ee~-$f)A58}^!7T4FxzApH>uhvU=Fca9=D z$NhjxrxT6ovj7XfLC_B?uGBq`wU7}E)0M??4lEBw|F12U7SWN82m^$+>9__=199R& z9|H`o$2pqdwgQNDjq_ajPO3y7lhMksOvp2`5QmZGQ~fjvV~4`F33J;Z2FTNpk(iK* zSAvz@CVL3!#g+cZvoj)~uagZ=Wg$XSREWH|saNy4y&_Lk z!VjhH8XSM_^^yO#@pa_N_}cuJ@s-W~%J{m1*|UB-u8hi=IM@w1geOduA3u*RuOO9r z?yij21n4V|aBjCRrq)k-5AsyRz8!gyUkbg;nstmt;{4Q$X~FtdLbh@M>2`x-IL6UA zZA*WtR3JHx9yK~ZI}>Sj=q7UaGrJX=xYS9=4oVj=@$r3DFy#GivpFbV`b4?NS@?08 z(BmAZidbbSsm8JeLfe&0SE;6xkxTs#`@&lWh87N`_PNl`qYe~rshPgBgFV(8#L2od z;7MLtYBvXtg=9)I`2qXQjzcXb)1sgHdOpt1214%`lIw}xl<$8*fYS`QxWD~v?q18T zAxD4|+Aw_1GB2Mp{=OxfYqWT`+t|&!(!?E#0tN{A7u)uW_291U-4QXU{&U#MglPs? z!6u{#<EMZSF&6eKET#~cvUO4LAPVf|=#SSoSoYZvLSop^>xL>zKMsd) zlhLl#-R#<96304Ri57rp8Mf*;L;!T%t*y{xzvb%02D|Di9r5?z7X-uV*uyWJ*SaGw zJOx|5LZf}2s>4BO5H|iBp5mg{hK3fqoHJn>PXwsIHRw43>QzV3iX<)&gY#|CN=fDC zQP+(5nQd{iJ?hfRxugPFZ|-vAT_0@J&Z@Bw)UQGSX{p(Y<5|8bnKmvJdX2O4wC+S8 zsDg$sChy>4IK$cC>#m6Q@SJst$Mx~%P`kcvX8fe46E-OtF4qj*L3~x3Va3fOX&9oz z#E;mYW0BazXyjlvxT(HEz4mDX+EmYEzvZ43SD)H4Scbc3Y^QE;lc+s@*l(OLL4|p~4f^Be$_mqmgA4n9Tyk zS*fyQMBohKwULwDDZ-H*#Ue7n0m{K1z`N@6_h05Sj4L3RI?kL{M~7wf*&QUjt;Mb( zU{BJ-?1TB`L?b@#+S_YOX~1sAU#76Qa8g%KnK}!RmmAxpq03JNaD}~U;UqARmy4D} z8m@R?#?~!wT3Tkb+m{YOe^cV1qh`G+!YFyzi*`Q zw21xgp_k8krOP;MwAq0{8Zv9hP*f1HQEyEbY9b?!Wqsj#f0=q?gpAe|*Y9Bpr!zqy z1-0HkZuS4+U-YGKhgh%9^;D(2pTGNb0AAEy#~qNMR4D*yY(RD8T}c?A2>6Kf+2F}Q z4D>G-D)2S~79Ad~BEr{{#edUX%gO198~i`)y=PQZUAHD$NY0=jsR$ATfda`HL~_o- zB8UPKi&RAhB}fpV$RIhVA|tU71d%K`Nt6sl1_=s=-uS-XIp^zhyYJ~cy3aU0#{C1e ztM=M^ueDd2b3XHVjBs)5s?FL>WjleaE+9kvFonG4MJGGV@FkHkJr!#*7A24p#TxlX z69}Ld19GCNSOKA+NM^sl?f?JJ|DX*-ykE?BU-OW&8C!fgKMn*Y;iyrx3dsl{G(i*| z=7y`MYlN#xR70VvA9QV}Qsv{_BGSWo^2gOMv>;Jem)&Keyoz!CfucnBeO7!~q z?$3JEfB>v_6MCRg{-x($yCJ!_ALQL2il@Y)VkJ;i!eQl-C!#8q|0fu(^FO*Opd|RW z#l8%Sr-VD}0}icwe-x~!0cHcNhpab}{!cT||Jxwbf0W=}zP$DM5uJBV0uS4I;qlkQ zK0g2+_Hc3VPc1F3T7X)<_x@8!3-5#VKgF^K(2)?&FRh7xiurTzur$m(KhU`@*1uO? z8ZrYElesR&Syz=${C|6~$%UNud^wJxE}b6QL!vHYrI`)ApP}C?ysF~6ZZ=cHj6XC_ z{u{Dqd2T~iV7>(04&)M9Ti?4 zqi6^S(N3Alv)ucD%f(6fQt?*o!(=Q9*>y#E^}m@6xc_BICCWt&0O6_)uP-Oxehnu7 zqfsapSy{Ut{%daRf89@{M*nDniq|Cr1y}fAP4~@^bbzGChdfjbipQ~(8;Sw~dPS-R z7c6Cz6zVLReiW1f+lo}ItWhr&|8+G5gioBy!_2sVD9@j@f`rHPwDQ|kGL?a0`2%Ct%~$^V{0VKtr_|`n z_6zDOy&bJ2_mAH$UuQXED})P~!@7JQcf7DmV)@Pc@9E~iLOb&A25j>T;O}7io)Ggb zFi2Yc`)+Y|y64@<8Tf3aaATQ+b+`mJ>Ph^_U`FCcY4YW^5(8)!O4#VbG-gQXK-eXs z(th~E`PW{bwZYCuJuMpMH9Hw(c_}`7CQ-yMHYBhy7YTl$JPOrPO+1Ok5ma>(-*fVB=5tF3@KU`UMAor?#d@b4RTv0 zSe7L!W4s7O@o#u#t1vMo8x+M5zJu!7RR?d+2f_kQ?asUpkWubT)_)Db#4x&o7F2$!fHf4JWEb|0+-LP#xChXA72`Z=tAR)#Vwz)S1^k?*k zST_4MoMKC<=pv)$ZDYo7iz?FuXXSOt7Sd2YLKYK(&wGV+;AAu5%{M2O1E@RB6FY~_ za)H*|$H(npu2fwW|3iH8pR`kyN1+2yay2hRkW-0>?}mWTniFGrq1&fxmamReZfLn9 zYc3!|_ct*M6F~Px*qf)bkf%rp8W+GIw5mq1BoT?yMZ?ETIALiJ*=PP~>w6En9sc}9K?NTv)~wLdOs zH!p*%7H11lCF@7NS)Gw$gVzXckkMIIkDI7Lr8LZ{nkpq8J5^7KjEbg+=?%}m>hWs1 zQUi&xA8&Q=rCEG35a=>F2-^-%xp1zWM0=$TwRfkXtgTJkv?oVD?T%d zl2zefiqCGRChEMd9REJmtvsr_o2`xG0ge_aJf!Wts8hKi<01Qo&Sra1TX$k1uVq*2 zC1r2=t4^3yp)`Be`m&Wc_}1Cc>bry_A%0aYUsM{nR2Aol&>+Yiw5$sf>yF-ul`@wZC(t&zD)r zdr0ENw3x<>Mw94NYbj}PLyZ6Dt>)t{=zZ)5%i>tALCbCWiAJ3hatbC47SuhFqo=mIjDvG#0klV)6GD_osVz`;VSu3(<1+_Q{#J# z&=rryBZx?R6W)A5F!IFa#iN>my#VKI7ABDOdx?wkCJj+Fp8e?|x?3WU)jH#PdG$R( zuCE(1CsyG>au*-I#}@92^cEbX+EoThP>QY`CKLDFNqAeaOOJKx=5QKYW}1=lhSM$= z@ny_*c*?(4ZEPvK6hV``V%pHW3FYtSe4Hm2QVx+NBIH|bf>s5pc#2@ql7%Tp^KuS2LKobe*650y5rZF)m`kp`ig_iYJxW>+uKtkRH7I3cVj2w-{XJ)vh!T`_F-K>>p zKp67IT1SAv$3n%)tn~J*`l)KQ)7K`BwH@1B*5RBD$oLVKmY{4t_OFi>O%QZ>;fbhp zVoya8?RDV*ubl+;S>{I7t8kfDC<(BZMdI3lZ{ z3Myz>{2TPJ|K~pZ3rT{rKiQ|-asDUn$X|QK1|n2S=Iw45LZb#2k}4@7?RP{tw9xr< z1?)lR61kM|z46fJ>Gc|j+ilt5>0**I_o;;gpKuB!cE9|(ysRRu4=ew1{{^b=PCvV{2BJ79@?7)A~Y?M}! zz`9a_5lGkG8YQjD5BWUHnl7GSH=)ATq@>45S`d44;yufjl=>=Km2cbn;oRwTT8g^= z{-!J%*OPDTg@&tAnT5PX1_u14qq%l9zp#)25Hj^^NEmrv) z$w7ByW}w=Q=!B`#Z7am+SncVVKfPMa%LAv8%iIH;3me{^iK0NrmN3aSW|3e@w6PA~ z$v1Qdd!e7CGEUX2MvAu6o^I{ustNo+Wts+Xl_K9%l_lgS5Lr&Cv%9;$6dAI9GqEty zR>JssWysDy+Yew0r>9TvEG^G#n%0$A6`LdxG+kIdQfRqB9NBq*oqoDVH%=;BGi5aC z=dsA46prLo^O3M|&0$;qJT7gMwY+dljN^(s~KIHj10MN>FXOyGnma3}sG3X}u1xumC_@>yK0+`28L~kh%qDh6u zf2gtsU6p~Fn@wwbDQPUw0Wk1#bo+Fn<+k4!GD=?^BcyLeofJs{*A`%wSpK3V$$S0uTjlny;4tDZDg9^v54@ZlO-G5on_LZjvRoTYa|9? zq&)aSdpe3Mb4x`F5deX=#EmZ#p7EtFWa+qjtHCu?rWpbd2}DgzQUv0k$qSor;7emK zn~10w4>3&4qpD#6_w_7o5WNl@75uW667db43ld0;=Wj_`t34Z28Xg^Z`M06*l^!7y za;Fm6GTGr?6w8EC&jmJu&{=dvu=J9JHpRh0S3x~_3j-}ScDSa8s9K~rJ{ed7{2LUt z7C1@2)LY)R5}`fW-pI|VGd7rl7Qzh;1CA;Glcxz{0PV2y@tjWld%c{D# zpwcGk9~d|5&0p%t zpo{6<^%U4C=`87)@AwngkN9?W92#Dg?Up&A_1*K!!gCdrs03-V!L&zP8ztb#zU2lu zDsgP)v}`OlCx6y+Xz9Yec}GP7*RU#ih+;o}2v77rIY%Y=O6cNXEXi+>N0`|eUdj~o z*%5{trWe_$hyjZ>>aqCC<3sSRqzP8l4lS6~ns&8JTFQklxYbCNNO=WB>grogM8;gK z=!Q2hkk)N(+3O75jq`3mev=c%!8Ti*`IcRhkdK|IMfBGWmYjz@U!$wbKY50QNYQ9a zd71H!gvBkSF$yR6K9g=KD%{E@1b<)gBS$mj&q3~3<-V6kG%xT`8wF<9InH8#8i9lN z*TPjkve8Ks9If>rLOt_JG2`eB9V4px8yKpr0GEXi(<$pA5=bDNG;z?-Iu9&?bzLft z)ui8=^cpa*rd9L5MkRTM;=lHIFv3xm)~vlxu5iisJo%Jt->lT7&TPL99Uh)Q(@+`R zQ0aA%Kz1S)B-BS@2gav7@M|$~_?5<088<2Sc5)EHp$U`K46gJdWQqXEU;a=(%ki+? zoYfdxoX$qAXy6=~^y~3(Bvv(W6VP@@NRn?czHt zu;x41vqA1)gLnLP)&2ztm)6P4Y)-R?$Hk9si3(2%a^=0a$YOy_a{;uXIUUd;}lSnf}_=QgUxaWVjWy7-{b+@kUdPD*pzB zQr;GhsQ2LL0O+2U>(BwM4#Z(hZwf{sk@NOXlj|huy_H9|_B!0%a7Vh-B-U2neC)op zb6((5jNx23Q*xVZLrfi+ZI&Y4?>N02i>Q}gUYVW$2>yD!+WumjMtjmR%htrP1U+TO zn(~F;KH*I;d;Ec2X9RN;A*8<(=;oGdW7CxrqyAY#>`mnXMu_vdH$^20UX99aJ({F1 zw>YK6-485P4lG;e_kMD;n^nSOs02p`iP=lzl*dmtDHgKnSg2W7*>jY&!?&3Y%&U_p zp~w(37#K0`T*mLoyh}5I=qh#uv_(RI(#6`W3_&+ye%?J+- zz-L-&0%omD3H2PY&{K?Kqk(=)LfxC0$Bu0AOXkltp4v%^^ty;!t#n-Q`!+wx?E;T z)09`(%EqX;|0f2N{>9XIg8KQF)1aL6+EoBEp$D+Pj-{2T+%m^fmePB=RJqCAR4ej# zC~!V-Q)*LEK4fJDV1N&c)I&lN%DD5(01?pHYXS_|HTW0sD_;Xbe_ZgPz&kZ&2*)iWBj#I`Nz~ zn4=&HEUfo=G6v0cc+u>r1x^gV2wh1uhW+msnVn1f~=m>p) zA-G2>>}T0ONrRsv87_8XnE+?qU0R1(9TU$BmjmROfZ1Rc0^~}6{`{f{0apSawbQ+s zWsNV2wGLMZre%r6g>uBeklhY7o$R6-FvfN|#B`jplWDRPpRjRWByT8NM`is14h>V=Oc43zKpAbdBz6 z#`Kjn-iSlfBl`?B`@G`3B8R@H>^ltbwcw?O^iU;CrIO)X#v(GLu_#wqgO}w!cHH8p z*oWJCy!Ow=(9itnq4!SD@}ZLEZ&(tLVuFJ13DfaG+IRtOrO#iDCp=_L)cm|iAwlAa zqm=t?&2d|gPeno}uRdA$ctodYPeAKd=qwxLsNs{F1P;YQ2)Un59wJ%sL`ycMW>6T( z@BhU$Y#9EkpFQQ6{h})7=DI!mSh}UUxC8rym&y3UEmWo(sff;f9-_iZrex zgs||b*LHnn7_!sF%;hDRGDMc&hdpq&P_YF(@?CE1{kewDi*r$CjLA;DWlFj8jdHC= zoD|A;BGu$?p&M_gT6-*!_H$xK+-%xTWs}z`5N_k)rqd|itEtPEMLp}4zoi)6CuI?S zOb1&2hHL#JXZs6)ZF+yjKz>@4c5@w`+D2K-AChU|EV`3D+)2eTDop!XLYT6@pevz8 zG-krUbk;7R8z$N)RRI&Tv$wYR8q|vqUmJ<~l5dVQPAzC-(9qmw9iKM1l?evOD_#5P zI;Da)5_h?`{_Ue%2y*mm;}^&1!N=%tm=$N|M>(vfh`(#3QNgiec~?)_VTHArio0$M zF?oTRo|P|lsuVC7S1_J?-Oxj!`0Tb-Lo~jWjl1}=|Jy;9K;g}Z`i2gPLaPu#0%Oc_ zc(wqev|cyu`n0gH-!%>-=?yEAfGzyCsCa?BHSJi?C?1GtmG!^Rb@}&b)$A9w#0M`ow8p@-kK=hqjn7iW-{rHVcKPp^qLj7D;q7W`3UBIP$J(04$ zq{uD1#?}8@1(s_Dp@0{*0~5)AIppR4o=X+YD=pFWdb>L?HlsP#7Q>0C$RfCk{*Tlr z8E><;tRt`4HkXqm3!za`XAsMxmPc&JCnoYFLIW3AHH{Wm3fk}-mMs=&{|CPv`d;8DCD9>D6EAgO^!0e5~Oi%tjqxvi*#iT38)tyfnWMXe) zZ!=k40P0Ks2J!&Cl*(~vHRqC|c9w}&_E)Thg$FL@gn9*3Hg~-vA`Jn2=G=E*nB4l( zFfup3UrEQw*x{2~Nh9DmRnhzylJdph$$`D9vEQAv+|GnuzD^*6X?V-mcWa@MzVUQO zqS(bd?G9ouFZk=5^!=ih0`U695*i`8Q&%gErmzB}P2RUIAeX zxHrT?K}X5DBEQ=cGTkmoQ1t2>sMR|e1FDIJ6m4!Cnp3EKE_afgT?>V=TUe*PTk{Y1 zxew=T=J-=X2w&EF!80TOusBIJrz%h4S6+S}*sL$e$>*$@UNRK^A%TOMiF{9$+W+krUteN?Rw9eHwU_J$`hlXUchsRj#K>qd1y%jF$7bgq+b%~U^P;tX|B?Kg zsD+!Jqbhv8Z~YY--#r=XTUT*6`A-S9I3B#>(7_Ok7^u>P)$zpemnhI=Me27{4I2sj&XNdkJUb4SHo{I zRqiC^Tz^u3Ctb>dnnUAWM3QB%I(vZ3F9Slj|F>wq*AKI#m{pC#5l+%?&6pL0s_!JI zehWVFOO<(%nJfn|x{= zNl9_QyDUu^-ra8v?%1RmJ;3TB1I6AzVs!v!$0m{Ey*1JD z^Rx;2ff*C6$Gnoyia&g_zneAQR@c_R=WeZWvg&ro?j3C%PQy{OE&MGpf3Pv{ReWPr zN^NYmcQd}`OwEUJc+g=?@E6QuwUp54Aoq`cR1%e5VjwpUL8%En9fE{MmBvv+kLl7? zOhsUwXQU47=mfQBk9x8nH)hC5%S{4HnkPP=X4!tN6P))iD@U8pd!!iazuF*0P<}EM z#D26M6p+~z>v1U}|1Xc+amv-7QE10kSyG zG)gZIvksD5gCVsV#oLvl>Q_TNJ3o)=cX~#3Rd>=DXE91k1o<39F%HeT#Yi1(tbRc8gaCL?fW$2oE4)t&j zdy-seL<<}7WdY1*&#OuTU{=GRU0Oo%k(+IO!uU5q{hP+Pm&m&I84;1j4UW2^Z}UcA z&G=7iy`(;Dk$qPadfLSKQqh+mR^Zb{ZvEKL!Wm$~{5Z~(O^9BmwCv5_pr17@`#ya; zPJZeos8(WgGSOT+z!ccu=fmlW`DU5IunMB%sG) z2N7-t80hJcj_b{2S!fh+TbCugR+*eM*XU=TR9s0H-Fg?y^X>T_pSR*dS;_RJW8KuD zE!%-+C3R9gTt`GfMUQQ6pp0pcCPIvbf*c!(b=_%5ma!5OUrriq?aR4|URh>VCuI9| zk-aR7AMIw#V1JW9hSl|2r_dcdBRCi3vwdcBJ8hpayhLq8kJmUt{TohY!hJD`1F3ba z^_w7RWfkhPhvD_YPja!AZ|Ug}j`ivYK^>U)sI?3m##Q*==MJ*<$D*Vi720{TToybe z`qo?MCD?zB*wa?uofclHlNs~h7p~P$uc|-jkG6Uz#Nh4I3O1Px0;z#+_+ILDh(GC| z#AqprBcrz;KN?G>rd};-;`WOyik4eZzVw!uH%r5Q9Q1*naPcAb1@ddBR4<29~JKkJnO?^=R!?6HS>$q(7`GN|!$~ZrZyUVs1VDT>&%IdwUF98k0?rCEY{8`DwubGTh2VdFzt7KOtt+8ynY?ovsREW zXcPnv(oalI`d**|t)RAGbTBib+(9jtv4reW3AQEFc76?-aUWE(XA2jHY}k^B5?8Jc zI_|PGjPJbWSuWWHZ+1_=SvXoqc)*F2;aLiWjsqk5<1$>oDnFaB_*rfq2CYXmIfL5S z4Kqa?59v|c5_=_14N;yj61&k)bhzVq^HmqN$tjgxs*I%!Hkom>oHh~O4NgD{+;`Or zZ>|qfRuw97EZ)Nw01H7JAj9%K#w`^EIci@ZCzkud zDN+7sQkc(Xy7SKa!Ye&D6<(*^%1X79QlkTZxO8>$g3XDp(e{$ugOE8mfI_=)foY@) zy)lnCh!h&r9d*zj=#k_}wour%5PBRrSlF}rVX-^-hj{$LZ9}cFMlFupmCffd#1I%f zhn+vuK-g_>O!XrCT@N{wUMInAN&K?Ng zl{o*M&+9r^VFz64O?5dE_GU77^IJr}I5$ICi_7arNPBn?Q~LdP;7~gD`T2&oB0rQ@ z!2wl1`U6+lC1Z1_EidOWo#MS)v*zIEA}-{QSx#5t{gnc5|5>1QiqswNeGP9<9+_&o z?I=;HJ1#n_3FB`W(PJ95{-!b!*@y338>i1i!+!D&F zWgNQXzYPl-=9QW#Ge6zzE;2n zizsT2`iU+8X3g(8*yp$%BpPW6%e~k-7>ih$D`OkHxHVgY{QyBhV@uvP`oz3}J ze5I~OC$E#s;*Y_pL^NCa5=>`}zmM}@@typC?N(JHom~)?Sc<=UEG1sm)*oQoRCxJ6 z&jsZ~^F|$i`)A1?0-~-U?wZ^r&ASw;N-TF}2<|EAvor#;!F9%A(L*BjLR1tW)l+VJ zJsZfIKz@VxWA|F1*ZDfYtiYK^I{p^|q(L~#6hzY23wrUj#lm#x1jX+A>o87E=r?HO z;e%iT_eFtSM$EcwZWR)olt2DIp9fivH!I%+o#cNL`-W86CE8($WZ%UiW3XHzBiiZp zPLy`}z9j$SH>lHwcOW+oi+ve4X2Z}|o1>OV3ru+V8>D1ml0?T0U+moh8##WsXHDN3 z4)}U*lu_#b8;8TcN94#WtXcmOQV#I{=}3E_eAG|2*&1qrIpSU|R*tBtzsP+TwLrdm z$2wL}(8y-_rY~;tqZAdIGk35Q9lUlBz|N9{#YpsQ1#G!<-wWOejqQ1n^t`UB((T%H z@y~=)|8y83{AZJezc^045OU}IZ{T}OOlW@pg z7na06tWU}A*6#;VYXhQ3mm|Nvq{pHB^1q_t?=Hly3JwlU9)PSs_<8COmdO8Uc6}xK zZemNj!Y{bbi%X-A@|rg#KGr?J35_LF^a=B|)>_|t;cqUZ68wl;J@T3}i_~J|4?MCQ z!W8EBch^d(>?NrZF`j~<){L%EqyNyzyIJ&*r3?@NyhBN02COZB1^+Nvoq#(81t3QM zfhqr2kmRpx2lAx#=N@ug0l1! zl`!Deor{dzHqPPhDG6v^;#``!00zH4j|EDb0r4vnxWllks; zRJNoeDjdr-$|Ni9_AB$B8Aa??V&eFAZg9-Y%*)qok_ ziM4VvQ~6XiEe()Wm+u+2N>&xP8ZLOg5TgCoj#O{nF0&SVgUNgH2Cu*IzF5$GtmBTA z-WCy+r$wlcZJQ}U1EO$xPF*Ewg>d4`i|Ei#>v*Wsp%3bx%fmE>0&0yX6~{U#dioTU z@q@6V1`-CHl8xqnmO7Y&&3QBBF4XPKDA+u%j>E$Iavq4_Y}y9Y*XTgn`h|34Z5MZ{kW< z1lfj*28<-h0;$ezH*P1Rknivep1I#6aeO&7#h6eOQ^IV-QCn3NaG2vhV*Zp5yY<{s zeU8_Un;S}?DJ(o{ps2kc*F(GTZJ9SL&0bOIdVBC^kMP$Y+!o*7^ACNdCtqXt!{Q1n zc(tzV+kb=ljY~7m#{z$Y5-LrVW1-WN^QS|$MmXV;Db6HrPHJ@i^2-O{SDP&+k6jll_mIl^wwl`air1hQ8IWI2VdIFLOTXg=CP(wP`~siz8%F6HkU zITRM7ht#xW@E!O0q6BykhKb$e?R$lSzbw~2Yq#90)y?qK6g18#z%a-eFD5%%+pw&~ zkwHN5m=AlXeXq*_d(6(Z!?O@xPxt;?=F`>@AQfC6y$OQlXoC-IK@kr}J0tsWZj3E< z#CLUH4~g8di&_2#ZwEqut0>hBFu%Q1zKrS8L>GI6%O=|P84=Xa_ig}%(ydLe@8BN1 z)Yk5ga5?C^w^GA{zz#kC|9QGDPF>&o4chXndORz)m#oC!Kl>Xrd}jW>?!_#REUJlS zFYOE$n$JHgv_sTT==*c-yPs{{BgofK!}(8>pB!RJ0yM1`*fze@lYBiz-4oIJu=dCY zRrIEA_Rx8XN>iXoDlPnwJvxWS8@nsypqrYDCCVP_W?CmD@+LUsH>ly`@m9C)AdHx< zHVH9gXZ&Q2)t>Q@1n6r z;G)(-aW57+X78jh#6UD0o}m&LW1K9HaJpZTkX8+o`y5%k#oWv8GrjaN?*lX5(!ipO zyH6ZIz(lYkX(wxk&c6A5j*jOwo{jx5_B)kZ9p8#e_Y7MGBP)w)7S@X=^+yae=t{|V zR`~2m+(}u)7}VAVr6nqRvZ!TG4b&c)aF~zR)}^*Zy9kcDVLzZXaex_LsyjGf>>Zwj zIKN^;-fgJv>+A!f>%@GbqM{=4^&&AKkxE*S5AI##WY+&-D5lhIAolZb5H&O}hg;72 zhwfw3wT+uUza;ei{Xee!HFD;{@yh0WML|T`rt+<~0(2bD$;#**or#Lc#(ZN#Tb=JU3f4P zHE5&-gK23TYw)bWyX8!pnQ-u8zOVc|0RJS4kt%aZG#CDf-eTD|0u5h;3ybE{JlLv1 z0%9(mJraH<)>^g=`hDN;!IJK`?eoG5f@Am`HVLsKxxeKVk{9~`Vk2oqHB#ktk(40} zUzNq()CPb`vd;Lo;6WXW&{0j()9AEQzNq`q;o704@lnS0@DO<1Tg23dU9%Sz)Ixy2 zSP~tX{^fgftdsfjSnyFAEjW<4xUhb{bca!f1DE|)t5jjs?S@|IlLrHlmA5}TY1tU> zh#J$-(9L5jrb+ZKMz61L?f$u|Xt#fhrx*RJgUZT;HGwFom=Z0VVZ#>&0ezQJhR1ii zoMpkrlc!7fVy#Nk^E!IYLpVrdMrIQSrQG9@PVPz$O}YaZd;5F$3f(#b?l-)QRl~CB z$I>(aEmWr!ZIGi(eo8lo-x_J<*mB0b=r5}s8FORHbn=EZAUD2W>vn1QM;;Llsb`0 zx7207={D4i?H4>;JV#C4Nei9y(ZT-S9RV82>zV(FTUTVqvMPv~>iV^E8d$(nRdg-x zRlDwP1UyxsqIABi1|46JD2z#C>t&1D?dryD88@Cp8+XzLyzRqQ1KA|dgEp3_qKE{D zSE-U#Is2zuLIfh@Bo>s#GlSqGcPvUnxZgY`Rn$zOiI#}9hnq_iNKd9UM7mvC8&4an zcUZ- z)KfV%+*%ciY@3G=DZY!Qb6$txEVN@rQ<+Z+G6J6O@l0J1%|-2EXo}|!)N$_Tg5 zjBQuJ>^D_G)~QiDSJeD=dq3033cP+*mos>~EM|HPA4nXpR!jrqbfQ-Vh6_;~`(ZM8 z%Y5^v;>#&qjo8x38T<161{bS~_e-D4dCEfZHY3C%WJ>5xe84`~OK2Io$08$IdecT4 z(}R2`kAnoU7x1yV;)or0>=^~pMnBr}?hFnpuYTHc36LRja9A!3j??b~Q@ma6Wl(^A zDJ3J){MbuO$x|9x2P|<7dRH`oU()+cr2Ye=ZV1u7?xQRikOHB$NoO-HFn>zFZ8 zOS!Gwo+hhPAz8zYAJ)MgRT|eWtBO_E8+)|v;Bw&?HSkEOGg0Z5CdBDwG(P#9JSUEw zw4g+JvHnue>pmT|)IJD&)X)r8H3b;6)($pRR4(!ROS6Qsx-M9QzFU(J3rY3K6i1#j z(m?ctY+i$ro>IEq`?uNysZW~w7kWv&6W2Zh#P56d@BA9q#z|y2Fi@g_R;p*k>BVYR zB|>N9PUZ^$h5GWiX!fIF6SHx$np72&&yJ3>pqi->4jJde;ct(pQWfQg?`x<^FcIki z;pf-ezmlsi6a1Bmi)Yj{{81?1@)D`YsK^JiFLM}Jnq`7+eaR-y85he^#rW}uYBf&5 z8fM0)Tau)<5Oz-nFE&1A+VQTssg02E6gG_-PTe=cPj^^-qx_ZOlPlTW$`F9|JW`K( za}V7O(|62<8qO$MYpLFas*>8tG;wWwVRef>M%P)wtB9q@SHh?jZ}vDpQB@4 z!TqvGCp4zu9Lo6{G*|xOhqn4cQ-1!@6hEMHW9)M5uRTphZKm`Zc{k2lHySNzg}ZBi*K8}`W3(3P5Q0dP>5v5g0x#!?$I>dk zllObAToPe*Gg<~^C`=Azg2&w?SFPx3V}|ZhXsK2`WC)x71v%l$Mj50<}2A)T1Zw&bZf)DnlT49uw3KqhY2;cV*B}50IC|A z?>et^@k_no368mr){D&o!xy!3KWO6Y2{WvwOn8zZudk$VLwa^v!`hOo(q>q;F9h~o zM3=2!N3cGSjZrk`XirvJMZ=3)KaGt%@_tJQDV~A!C+O={r=ga_i$}4}TxK zRvhZuI;R+m!_AnGE2Sqeydv@xPQ8A%!myBAEKW_}TixxtE1#_6uUW_Rd@VCEOlycb zduU6UeVWLx_WXprXtIy6nDL-Ty*Y6UThcQkc@40yOAt2Ov6R;wY*o4@BaLNW(Oips~W20gk|YIXeCXRXa%(s&9QtA7ed?c^5LD-^9%Qqcy)?!WAn0x<4r zAMvM_80YK8ShO2g@C$s!gu zZt`H{To-#RDQ<5|frOm?iPV|afs7~0qQb%XOhnf{DwVeMF;|HF<=(!Rs=v4#p$|dE0pX+ywhP?1;{35(jc77FDu05pnu+Nb@zZ7n_%ZgKX&n%_B{yU4>NVc&j zU&-VpYRIp7V*F9=_`H)t=wtTqx0DV0U%L9}+`hGSd_6{M_!UWy89wMQTeqp{!+vuv zE>VU5j`9=F>yHTS(n$|f#8T!sRb%#;S_!5cbr&tOQboo9?ZI;&A>)(A3-nx+gtqmU zAU1Yp9g7MYO(tX=Q3Km{*#tH=86-9zfL*$(FAgOVJOPZpdP@_340mJrd^M^pFE`2I zd|WbVqx&skfm7XDHXGkcG>`Z99a2pGz~G@)|lhC4D6+9Di`#eSDg z8)z{-K}nRuJxyevpuk3nn?xs0{aWOK*`rIf$zyXq>Zf1qJVQeD7{Kj@Aw|n=mE^9B z1q>NE;1gP4jLlN|wC7{^jXIsC!~nAN9%p0qS;zqr^+-xH);g5LaMi?yI|j z^2VjF&owVYDjjehbMB(;k*MjqR-HP>^w*yZ4QFPi(O53YdoJV4V_7Y0*%pIip3G{g zyNsLYZpS>^9)D^XA;&BZ4$X1nzU?mLj3V*Vm8D;HtzhH&qP9w!cuTZF^E`J|WAA*~ zyl>JNx>tt_PHNytKZ@U?cxQ*eb|(WxP?3$*0&TPF}7g%nP6KtrDhUXR^lm<;4#a7Q|tI-RfB+zO^zYu z23jMK>~(Lo443)-9GZyhk#kj}=oV>J$=eCTM5@@inP(n2@Zoz&|->8S;q>vB)lD ze6_+G{MF@k#r*9rQP|32QWCNap$LqSzOmOpjF4-66t@|P*sPRqV#Vjpmf>iaIA6!I z4;kb4>&=IurGmvcY*Xqi)RUCDvD3YzAg5tQNoxMyn;V;grk&Q{g*9?;zyr&7i2#|= zb#(Xt-6;|Iy7%X(a6YY3@>79o5>u>LBY^3Kk&R9i61c@c4B-R#i_Vz(EVhR-ktu1=8{8aA1hmZM^L zPxm~f3rMp?2P4FsYQSW^(Qp&ZqPABw(VgWMWuA8vny1XT)^pRpnvtS%CADi5zc4Gukfa1~6qd z<{#~lWjHdMS-}EvrKw)hR*xV52EEaK%`v*l6W2rgmLKdaZ?i;)bQ#@9*^+Ddh2tRaRAIr82Uasa(FFo)> zVaC1yIGML&CMH^?tb6*J-^IjN-P0C(Xv=z3f(j`doZX7DEZe*%DlKK*E1K!S#ul=U7MP-eXgO5| zZZ0`+mvL*dDo+fOc#?EL;-i!B$!sX#ArjSs4U_UZ@Y3DwJQSjheGvRiMW#(7`oW>g z3`smvyKk*u9ddeupX_xZ#LTP7F-kHL=4I9$}w+FmT{C{#~)gSUjORLaIsjWpLf5~#|xoTXu%fP*V*DmkgVe3rF zlaM7`d_x$O^7J&4*-}<)xz-0yqy!bu>`$EFr7iPJd;UZBCmf6Bh>6rcc&T-9| zI%SCt)nC@GaeMXd;+sMrFp&N2cWQHW=pXyye2uNvhxO2e;;CtouLNw_TscP-SRKpj zBvR6X1uDCwTCg$itE^vZ_Hn(QDaiPVs8{3`GcaCKdp@{(R*d}!89Q8yqpgKz1R#_3 zgv~21*c1t;>|DX-h}2)1QJo&dS0ilS#QZW4YL3A7_SkG{$}+i|FzJ`S>)9}-wYtF3q)L9%_(v{T-$MXQLw%gaN z9VO!Fg=(6)I=J#_9#@~%(9s|{lBL)T!HFLbB!hpvNhZ6oSaz*uMQrr95gzlmRjzN0 zqX;lfT}N=60cw(|l=2z5R7?@cY;lsVHuGjH7hG2K`;g7LvF5X zS}Rr{dtdkOTXM$uV2}ka=1I$ z)tPOzPgvTPEP51&ogQnobvZG~yUk~Um)+TTY@!O{UMOE0O^2H?I0=la=w3EwFe+9e zZc44uE-Av>n1upmT6!rs#ib??)O=tEnp&zsGR-HTQWYHl*$ zc_#GC5;6-dm@xLIAJcssBV$mHB)59D-nESTcHQ+p_zg0XIM7oX+f2=`SA&I2ckU3?Z?Dyh$a59BWvzo`;&Kvg%RIq?mqQ}wdt?)ri5z_AC=B?=H`smQ$ zI1lQdIwh5U`6H03pQ_y3HgNOp!G&Rn1dc=@-`IQ4u%^1U&l^OFG)3v5N>dP|6RIN82}KAk6p>Eo zy{d$ZDjf+*lU_mYUo``LN9`PP4v3&d7kGz=AGkxzs$^s`NG~D$qt*f z);`zDI{)YY*NArJv%_CQJnt6rij^kEEv(14uqgNpZPgPhNvgUZJGVqmZF?c|d=T!Q z{=vh@+aK#CoIDtj9galQ;pq5}29#z&Y^}TNxcZdZyc@LJLMA-?u)g1) zB7;Zcr?5kq@2Nv%Rcm z_o}haJ^-uXi$LeKjcYBu+R6WsUxQ?1zjA#Lne-6&YsQRHtLyU;>dpR-beGsqZcIzx z1tyQimiI&Bx}Q#lhfERsS&0^V`G4WUv#_sq%19G+#7?S#mA-RCIVc9 z9><~YFBsnGdD>zdQs0EkLcR75Bu=ydQoBAti*(w<7x?NT%EH=Z3rZAy6L;o>&c7&> zvTe)Zw`j!MM#+aWjSuNCZwSsVMHeGp6@?rqWy%tJzGTgzI7#D-saWi%*ZRLh=6Yu zYL>gZLPC30sVO&x|lLBs2J zr10Tiop^!Qv;(&?hf!8;0VYF(mIHCf1NJ&puKyQXC0eYm(n&J|K@G_?2UbPxYqNuC zRQw02v$G{WRNi{bmB1Vsbea2o@Fb`f5l=xP10{C^5o0i4>_=5l!Ok(6d zxe0Yk)MueER z6pL&8JC+wd-@efscu_S!eWk$Q0EZ&m<&r&Z!n8?_8~vrX9x)AEHdWXfnt~)x@18>? z56D=GabCE1pnXfCr?{+RrbPlDrVzyETi7^0iS=P11s0cz5!!Q(;%_3nJzkLt zKwH4KV;#%9f~acjQ+iK-(*jt5soA96?XD>xxeS-5Eabh%SztL=1svyL|6m!-lJl&i zpNNI8`YSCF?}|&!<+1L}w<TtD2fnxWZ=#@XAPD2Yeq8XA zGqeU?x8-1$rhSJy&F<*)G%|vE&~*6*$!p-3jsvO?PzjFyl*zfUz$R=)(m1+##I>_> zh8P-4J>F zz+`D?@MPDuX4h(A0`Gq`bdBgJ${TnI9$YN0pLKF^sld~JL{ZurZ~6`0^tFh1Ef6C> zL!QD*`o?7{GkC+U5ZxD$9|uP$ea!KD>gwY;x+T@Ez&5(l6yO-={?Iu=$O%J@U<`Kb zy)2bF9(*v8sY#^hL!)rOdJ{${foe_IEjmIplKXuCe7-5LddWBd z7_JU>F^>^3dS*EJsG>AItpVkDcx0;FokY?RC~RCdbw(rQ5oX!DLToDt(ArcLVmtey zah)zD-u?Oo?fs_e8Z}eF9Rxz~p3E@VgvR&lZV{m5FJeF~dp8j+N%%ggjrv$S+};mt z-BuGiN&P-?SFj|+od0KaZ-!0etgLXSC5TUl;qBPOGZ6jB5zP=>AX=*XGhIhykcc|B z>e$ze!tg^?_mJ}m6{BrFM5ZP?@1r_Cyq6aZ-reh)S<;w!*h%`^uX#fZ0XM@OJuC$> z4B@%;@^wIDyT(zVwpFvywJrKIj`#zKNJjd3oGzL+(j)x8t!Z19z+A4N#i{qqbS<$C z&T#2a$OzxJx@!iu2UD( zL?_6r+2EOx5t|DAah;4tDC>>>tMo;>SkLh(NW$f8aAjVic20wALz=tiPA4-D(ekA@ zt$gjrT}j=X%EIRHNr)M*j9~8UGwP(lk`7{=>>veEsD&`^<)TYsI`=rLzluGV)kYDr zmHj?@)k3Z;^JX7$exG7rvZX!E<(Ow?0V`D%sZqo1?ktT8$G7%T^8PD~SNR)d=cbck zw}?f2-L(0yx)ND|l>PVL$$g4Mma>tpKHbE2+VFDBr!g!H4(F!BKNu}=IjO1kk*nc%kd zAwNu+hy4`jc^{3uEY&fW0#W;BV5KK|*kGn#Lf&00%F5O_(>hts;sn|jW>WeG# zm7&xGn5F2LNoagv(;eazVwUZ4m;DwjGoCynB5hjr7*c)H6)E<9gI~Ro*?$$+@ttd( zLm+n3MB+m~0_e@so>}X^^YXpmW>DtU zv^v)6l%`H7vP3}DExuc8W<69nC7IYUSq&2YWj%PHq_D6}Oc6c&WY_1to}-AQqNPq% zsC>KVKTE{yss+olF?Br}Rr@Je?u~bLahfj7y%lL31CLB6+c=#w2dNpI-M-S_GD6q!*A*DI%f888J!_Tsl=W#j z>~UWTMvCvvLGVVP<|cPH?i|<)vFs>ELdoLLiEVYc-^=XA3Gf7Dxz*@K_6|iUDGtgP zLV~)}a$S<`($Lo^Sae*ZnRN{sV2y>ClDoVU)um8$a`@R2OCrD)xFsw51??MB;+`R& z6Xw=7Qr6tXT{&kc1dw=4WMAb;sL$iFcX#$U3r1t(;DB;CZvkr-P0VRD{* z^NQS>LYsWI#1Q)_&5HZmn@|x0HJe0>Rb5`Zl4dtKlUE<_yxD{zyR)T=HM>1_Vio}a zyb$@l;1z4lJeVdr5LJ>k?sem{g`0n8e>}Q#$?aZ79fD=oCB7y~+^xo@28q}<6LkSR zINi&K?YpNUuTX|{#fd3%nzY@@{hj1W%tn(t^6cyu4e1$KZi+^rC0_AKu_W72ZOt!i zhJMZ^gg^!Yt1F0|Paa;LO4-$IbpP-uNmZ1LUiMueCaJ$0 zTyd_#F8es|W#E6npZs%t8);!aSDd=!Th$1j#+)J9JAQWl#7d9s(mu`)H-{e_;Wx7MT=pc@34-E(4L4^X8)+^&SCx9unk1+5k`9OTdV%ub*ZY5 zbqD_BKER^rmbf@BK|rB{N+iiZe|)Zru(!JCnmj$FHZ6ldKwo6%UNo{bm$qb%RJ38s zc4oCreDY!Ccv}E9k{UX{l`Tq^mTD1rlVg3sTq`%p7YPzR%7s34k2{xe5h2p#+AV@M zlH17(ucfW8y+5>+lB9cvQPtD!WD^q=i)YIm6(zcY^GWSYgS|3g@C{X|PzC#vM1MK8 zu#$)rg7cYtIt?Oa(nM>(MbIIe1;OX)%DE4Got5Z4O_++2C^G#yOE%xrgqkQN%zZmU zNg%mY@eIjeK-ypuUm7I8VZ)8RE3*VUd$*<%cf4tWmtrQVgf`kIc5u=str{=Nx1mhN z#pNRbOQz$O4k-UL`N#ba);5UbyGG~HPcV#E#fT_q8{mVtxZkrr1D1sF*Qr*xMGaoY zh()zKzHSXuxhUs~kh02&O$v6N;+Na(Jh|sSK7`3i^CbN*N#hT<{a{NQSDPNPgzvm& z?ihjIgJ1hSC&Jl{6-Fi+xYYTw_uk3&ZxeH1CO2;ltzV`$x&VX(;7p6c!vH5BunU|+@rA zM-;Ego2noc&)iRN=MmBUo2bUAOeEOCz!>5p%w)Ee=(3`ZVFM-J{Sh6}_^xxnLlE0j zutx`uEBht}Y--6E|FC}Y%&CQxPq;caH^NSOAYPCeF48^9pGPhk_IIv_jF;-0l{@E`mAB00m%fiOEhgw& zUE`StGc`L&cw!E3G<8I)I$sEy88DE|zV}Kc{Amp@Fjx0_FaGf7(wk+*>pxkYHHW{n zV-NQuA0ysLml%hO`r|*omjB`(GMDshgn)E$NZoW#%xlCL8vASTOC4$m9I1o@l~fY- zk^`6RU2WR24#@T`nsJymR03UV&RjV;I><#pH>xX6}n%vd%Yq;JLFpo-;p%s?nVQ#LV8-!HqcdLd zs|YlVhNq>|aq?T$BeVL3QIA;<>HLFnYD2a=oaC<%z~htORw+&=z3C0kQD7=XiM24p z%MVr|0q6a{Iion#bKRv zYyaWjMAz!*(tD7m|j9WR{*zmKcVxT z$TIET^MkIH$_0)OINg-Ytrvx1sDQYq^<--5elzI6s@w!xL|55!A zb+z1i0X}6%DdoKfMiiv?vT+rL66pGhP}VWsyrm)hFlZCVww{jDD1Li*UrwT_&w$?8 zg;^N%L8ExeOR-o6kbJ%4ZZ;uES z_Wm3vS39rGu=NiFE+1K)#3Hl;-J%Pj5iCV4-VN>MK=;WEO00SR@;gK1;YtLQ#0<8~ zj(q)E6K`A*tbpz;1YDO3&P5a~A*{Vh3YM5MRHwFVZ^)aoiLIx~da(~Kj7e$g@)Q9` zUzUDDBQUO|_U)+PKy9b_gQ_j{xp3v=CYPL&0FhM*Az|h zsiG50(5a{bIE%}-^UR>!4r|&&~Zb=bR-9NupSx+)JQ+~*w*~OOK z=$d#R(JyLR*{|f(!RaP6H_NKg0>+w_rR6=VbwB2c`2bsSPhJeE4&QbpN}eXkcI3GJ zF!1RlpX`E+nNOICvm?f>0m7mQSoJJRn6u->M^`u!H`vAiEpPu@&>VM@IE^6d{IB15 z6<(&Kdn?0%vsEF6P&@YITbQelV53!*N-L%%aib?D0!tNaPWUwNlW9ZI z*Cbzfn~1zu5_w@18(HRqg&>gPug&1Nib=kKMEHlQs9@6}2VgfFhl6eQsK!GwC56EC zl`!fz<^&QI(vkx_i10Wz#Pm?PH0(OvuXdlY5{wD4I8M4Jf8BnD#T+D6;E~w8z4kM; z5L3{vtf&Ywk`hyxx46(IdF*(bsOX3J9zzcWrWd^%6&)3UL;!PWLlXQ`4rQa)j!L5xoS`axPpa z*)=G+l&nEQPTnS)-QRXM3iyt2*-RMoi!b&{mc)|}0D?d9+Fi=l_z;GWQrNe@i3;6R zT_&c0_!Fc(9MOyb4amhA(6=;tG27(yeD97JS^Dx&FHT3`AVG$qFD3z>w~uw=M`aH2xxrgp$FZkD(d;o4-anHGG9+tI>pBj7}O)? z9#3}#T;|vZcAb66-ly+X_<9t^Q4dmw=NR54?kVnRe#pB{K*CmSv=pM}UcyFwef`Y? zMJ58`Sm$btzeSw&o@ca;jASIt6Y(A{w-w(pdV7EsNfa@ffNPcQ)v5c5aHMRxf{y8F>)O-fJCx=zcX-wYPTeP?%lSho0mE(ZMx>lg7xJCKMf zDS)%W_%ElQz`5ym+(!s0Ccq3EDIqt!BoDk;%ynj=A3#l6l(txMRUzZdSp!6$f&HUe zC$G&n?Xj6P9IOqy{ab`*B(b5s_bRT+fRnYbzEpZR8;30NsQa)aH-^?_$UnJ}JL{yO7Eq2O__GB<|`}V zCGvJ@EZf|^ch&t8h!kPZZTXrWF*}k+QJ!80L1y)?ReYQJo5(tUFVh81NGj1-oE}>U zy1Yo4!p(i8eu9%1yp)L7V}}8J3Dd0`k;d1q$bm~qJ*?zwXW}T_xSQ_ zakgp_@mtZaJTDaqpSBjP_EG6-Yyng>w0I_o{86J= z>jY9Z{V6!CZeJ8e%CK5pqVa)Uf^CMKsT1v>zAn4*<1Auc>-_06{ zZ^eEym6km>6wq-@9D)`i^l`${V=JMOiYRRzAN`TaZM<&6xa!9f&~xa#x#i%yxuFZ; zm*rz%_yA-G7Bxpxf2F7ARg9XL=()~t7=wBj&0fVfpSest_vOIqN392Amfue7L_jdB z%Z|ydHHN1z)YiR$iof1Y7=FG4Rx}y9d`%IN3(+#@GiG@*W$p}p;TrN4*D)|Q8Eq@V z6>zZW-L_E#hpEv5lSsqu>gFC8g{2NFYb%3tdgTHmSoLE2B(@=>{I212^aj7H?MM+x zGcEWZQ(C=cKM7e>qTng5)Y`ju304SF84v%JD7R|<#|i(plbTSt1)=8I&B%Dt)JV$c zmN9)9rP1w}7=i-=;j@ZF?4-)hrS!2G6qmTizVd%Oj_BRndLqXv`Cx2cfbt?OFlpbE=JXAIp z{Bs2Te!Kqv;>)Tu526ts5{F5z4JWl$qQ9^{nqXF{t5NIiU8rQHG))#2mA(Jez;u{h zCo*~!xY3^U1dZ@f$uwW4Q0y@m(^#7APgy?vuv%5{pSuw8e{5&}Yee>soELI>-Q&Yk zyA#YVigl=kNk=a5vPwx$)G2Hmff=8A7M4t4=%RtR&wKJ&LV@rDp3g$x@*1YeB^k3} z#m_FhwF|v$lN7wj@xRCM$o!MZ|Iz^etH<#Fp9k#&;epFh$$iQ2ol~liWMBIh!A2VR zayWX*_{nP`W)fnpp|am~^ARTAe~ju}2EkVue^5Ba=8bIPRR|Q~TGOPevJpM0zB0EK z!H!Yq{!{AvU3bZT$C9VNA$#-$M@BHI5txsZRG$z=z^ZlCqoL?WbsJ6!O zDn&j6;~4!tN`f(Eq~NW8OeqbNjTp>~=n3rr`4dJ_;K5geg;ye)#@lpE(gcU!r%zd- zBBdXfgrN6uOy+U}nG&eLmAA5E*=tFK3gUGSaV>K5hou{Nai2V~JKvUgO-Ib~)pa2USR|Us{6~b{sJ& zo%S-6-uJipZ=<#R6{K(?$&G++T?z&97E3_&o?M1KJIxg9o3}>8xq;nm9qL3|lF1~Q z?A^k=q%-a}5wf zlYEmgwPG@JL~om8o#~j%j}yJU`@)_A5vb+Bhmt#Fx^@J{}rg4#DB$BGCO8XplR4 zF|V{TGJm`tI)C@N9eHzJRI2PXWm)FU*726YtKA9@R9qZn!M<+WH|%*PeET|mn^7ux z8V^AN9TG;g9v&ayuoL2+hdJX&{>FnDY93u!09y@aI44vlB)u7Mt@K*dmdRxAylgKL52ii0I-LPk_j(3`OXsVWW;e~&(9u!a zSQ55#+S+)xoi855hjllpMMM@<%WybYd%vxWc}RO^VIg$RknKsX)65T#n_Tb|e((8Q z=B{r4$O%Uf_}SIM-$cNdaitAXZK0tqnct}jzwUX`a+vh24Qs&`BRMr$bs?rr-GPbb z>PG04#5fj?ZF?tL&xHJz53iL6l{wPW&8i!Q*1J%UUG1jt3a}j-Si3$&f3%6{RMcL+y=>j(excY=*>xc!QXExQ@CeN1d(~qCm2* z3hD`~m1p2-Bk-Jy&?-ESHK(xB^_^=-?+_tRSiO8h3$`(H@~Q%Ys4>qQo9r=hDJqA_ z$@I?KREH-9Dt^By!mOY!vXSDu4ba3^*Uh;zl|8SFGwyugp0I@=fGvV(x|Qb@3Lc*v z2$2-Z+plIGSGb$BXbW3i8uuAor+J_H{Vsn)s;S08N*^ZM&P(piVlo=+yqLBew>Uj% zRVq?Irsm)f!vhUWi&|M(0&v_nu&thu+t=BidvouhjFU4Wd-SMlTHaQ(!)H*Ln!IO* zGC{TGq&K^q{`^gYr|vhvvza--x=3tKhXR@8M!R-h$j2UUFe*pgzImrt-+9VvWkT5Y zy#e+`{1bfMQ`>h6FjG;Dxt4Gq7BjTGnu(bdHCeT^5eBmz2hl(bdVV+kPK70wf8A-b zDmK_DNV6EJVxniQN@__zlneKlHZ8Upv>F$uP`WPSzcfw;Z?al)Ds06JT8tkykdpyx z?N@4epfN)Cq~9aH%`)zhNix{dA1le zsi(qL3C;ax(Wf=K>YrgJpXeDTIKd=zi7C}HZIW%B zY-YP-c*udv^^#E~xz6PP$jioQeYuINztRRtwo9*TH?+8u0Pd)%a|-b&G*zipVloD2 zrx^6jmjHOIH>C!5=op@XXvmUIzLsKfEE{*gXHqR`xuicmZ(9tti7VAX&-X8IVFl$j zTSZ^{z{u~!+kg@l*a-q+9?z2MT=+RjK|wr7%!gx0G$((U)`?*6P3-Qi!M=O#`*{01 zl=DDVEBM)@^o=Z%JlEUe`scP0nVYaha#>HJHCPAQ7z)jWBZ?cHon8Gts*;ebRh9az z6R%a;v1z!oU1mxF{2$4cCp>sh7CHrz+%a;)j&;Ycty8(TiA%02hvH3Kl&yV?N4h# z!%B{6R4uisR-Px|Za=pp7!+Px2Ew;^T7}z-Cya9>Jlx#QP;y!U3QxP1Ew);Zpys0% zYaItfxl|*2tV%eQBD7?oU)x8p*)BlJ=X(4F<2wghS#sLJ+`7RRDxMB+bW>B^+4kbpWp-MdvYr9-N07#un$VxHEzYds5DH+n>aR# z_c>PP22~T$9#PP;NP8M&d!P-(|Dgn}%7>MaO?)jjvpAL^`3Ru>dUMoUzU#PTI}GIA zYUQ3T%{X`EcZRX}LaL*8mzhnj4;XFhNy1BOcd#&QU5b%Q$z1#h&jdtfjzAP4y9<22 zVEWWp=H=NJjyM*cY?YX0GO@v&cM$=~FSn&T`O@_JNu`{K_)`+@Oe*vodj!Qv#;=PskwQ>T{Kt~ghS}~7cepF>Y0-843sj`L4U@t@%fo0CQRwI7} z?lwxWeBm&ZT@HpL6nXsPGL-umD4bEIE@g<0ln>-W%aK(ckAy^^P4S5=eC84Ur#W|L zs^D37PK8%tf>#M_evdKg_hW}WIVr^F>%{f0{Ro~K+6@Cr0WrPXOzj(UafXl(Xm?4uc8@-i{CPx~=+TSQcvzwHC7V9bZ)Gs*RhmiiCn?tm8) zCvCjyW)7&SxosDrIjI5n1^NalFTcQ0*qwv;x68C7EwT6YA^8Q{l#?EH<3>AgkZ8HM zau*2si#SJd1M1?xq>5YKM440c-O08SuDsmW=`3+ZUT+K}Eh+Cz)+Na%EPQ6Bh?`ot zz5_=Hel}|j{>d$)R=(+~U9ZL9YeBx%;$jO1xp{JTMRfxt6q>z(=F{6P3#lP|1FV!T znFD~+uYqpfVAVSan=+p>w7{Ll5Xc5uHk)HAVd#J`a@G9^z%y4Fid}gzrz~3wYWt34 z3a;k|3bOHDrUAIH;yoq<_m)MjlFDxFcjj9Z5$*R=Iv8s?Ph%_^pVk{2L#>j9-0A7` zK~ms*ehSY}27s)ajLo=Z>v$$xpa6>y2hL%_zyGwVeW}#86|K2eA5a&7jU+{j2PojL4VS%e;XOho{soTtI#LT=L3ehhac5zb$ zQQw~zMFmr=R%e=S*gsD0=W^A3c^4}UlU~QKy!Ptx3Fg$8oI%tEkS40U=V0R;^?WVabFUe9(Y#rxVRp*is41Z` zx%~@4v0Pp(^950`gKDdpldv5zYt5jBkp~SB*6y`+P~5}NmaAEpRzt$9G{-!;%r|$4 zZoI|%BLK(uT)x=y7B;%;r?O68?IW)cjw#p>-hFl6edW-n>7ZkkNy7Q#j`_t2DD#t^ zs!N2f9zA9rUrln zfyd5@2~eZAh9(fMhunv<)v-$pA_>cE96;XZYp`{>$Mp-s(=0ph-Q!-)Ro)XU%S$zm znjpgvsRiN&->qcOh6X)o1C^YLR5;Y4nY z=ro5dMg&jGdG}di0myN|;Jm4JwY`w6TLC@dvUw=ckT)@=@L$P$>Dbi@?XK@3zQW9} zjD9A)%4p78BO!j@zwFbI-suv?P)3$Nd6!bVC#?O#eDe(OmVWH{XC7alSXRsM2-ql| zoOxj9UZsq-Zd0aQFlB5N!;}m3m51wLn$E@3R;wGd{wi5Lg&(4Q%Vd0|7kop|78z{0FqnSD96!$lnqH@n0#^=-6(p`RQpe zFouOGyTDTKyM9z+cAs>VFE1(+xkcPZWS`fo>?ni1ulm zhY#VN3y`#~5eFd!R5L2@SuLORtt)WTfW11f@!ZOeU1ZWoXQTi4D(h4)P`(8=-1ux4 z;D;YU2%W4|o7{L%g`67i0aH1^jJ3A>5`1!M>vUj`W!WSKDJK9Zv||y}8mLh?KSJvrPhqHAFY7nvt%#-M zqm_uy-gpb)Xw98B+#i=XOILEMVH@6Xh!KO>#>a^!#&)Juzrcr0k8X)we7Fsz$~%rV$fhc_ zkL;3Mb%S~#;SG&!LFe|aC;XoX&q}ZyP^5MwkY1;(EM9Er`m%>GFIf}$ZQ60qhQ<)Z z6BpqS8pQ%F0?(tls-(j1Fbbt+*sfGH>=O|#BHY;vJmjIAoL04{aF+CASD-0&V^6GG zFqE)b`d+_Lk|=#ZE^-up(Y#))+*0!qnjrhK=?nlG7mQ1tmVGUTbFFgjj(6vheym`w zH9$a*4Hs|Q3pFfME|40G9^~~EH*&#-G?&^x)tl9wl9c@%0b5r7 z!lp^+3B&`ep`rA5uf|aWlbME}b_`<^JqDHxU|?w8sYeOP3QGn%o}8p5v;LO*Hzbo5 z>rHZ)YT3vpk)FJ3Re)(6 zRyI&BWeJP>4$_@UF{BSuS^Mj$ZAK7FQn)`P*UmOBoebYjkex{m!wM3qkc$+&74aZi zk|Hv3PY!Km8XE~fxJB`TCZpC6P zDZFk$Cywm9nt768J5;?{OaoN&pgOf>{xY;OpM(|94guT;XhnA9($0miJ~3hvsfX+W z8>(wDwH6h&#SO-WlW4cGjOHWJE*=^praK!gui0L1G(|(4`y1wJ#umzli)(fk9??Z_ z0jRuMUTPe9hXxf?sNA6xC-clwuujH4_|=LoH)zWcX_!N)qL>jm~-_pj?# zCDe^aA;t1Qp-1E$oQ<^~G#QfurSFAS{UN0=O*^;yXEf#7XTjyoUvv_9i2$2_u5O{nur`a0ESUQW|nwWDJ zn`VCgzP4Y;d|EO}u>)BHIJ&XY>CL0DfiSS0H#q&PZ-}5uk#0Kd02|x_^bW)5_QN}8F=2^If=cyw6Q%4Up$Q9==gcGJM zw_Ctc^rzF@04O)^7P9us`Mahd`vhknNMEcckq9YTT_1ZwW0hTkqQtnMF;k-x(oQqG z@lW#W<^3(Y3}83>i93413x>}p{8&3&F0Ag{Dx^})c zGtNNrH8&DA#s_jrd&6|vPla&|xQVXyvsjkg3e#^>a`P&M4S{VPJ35G z)K8?m&3N*&405g@_1UI;IPi;X=c@epi@RhDb4BuO6XsE=J$_M;$@aJshx!Wtg+tLT z!uG(=QWm200Oj2)j^fh7Lf9_#d1CKC>>9NXF%U4QNnB0*Iiew3g!Y5>PFaPAk?|Xl zU)>;B-P3NuPlm$f{yJQ(1+llZX!*I=sYv;#7{(oDx_NRxoJ@lE^;8MX4(T zOvi}_qs~6O$<-7i!~LwVcFwALdZ2H~!khBsGU8nk!L;vU#Kz|_AqB7jeLv2CIOeO} zhPI(f?u&>SOrQfd0TF8<-FLa0c17n8mqnF3yHq&^Z6OV_YOo}e(E6QGBNBNM9B<*m%$xM!4f4y;k1g`$dEhl& zTCw?Nc4zj@p0Tfu_0kw+OK5Ig$*Y&7t`OzWmN%T7eG=q0uWfUI@j}d>Galv_hS=F! zb;Fyk-HZVXE5Zv_chH$ygN_abrEzq6;A!MS9{juQ^VQ)Z;=bHK;jXS2f{p$E)b;vb zul|>`)*s~BpR`tOHL0sm`0uoqF!(wHso=Hr>*e|}f~vn^Yl6ae@5cP~RGCtKqKv?- zOeJV@3sS4nJuB=MgAy;-QeZ1h>e{Pij5F`JO&ZaEd!JIRXGHWMaZv4y2{~2v`a(0=B{_`VY3^ z)^`H70!F}E6mb5*TB!WSTKuL~#DxCFUX0x&U@s_sQ!W1Q<^Q+o{_n8)O?vs?^T>>r z{gr#W4@c_vCuEY<{X2eCoc~MBK)~YIdkS{t33e6KR#3i1PzX^P5wsjnpZ=CG#K5q3 zxqe4_%6q>9J%L(KmWN=g5RB%^AJ`xtT)Pr6p0Cyq{mm%OCENJ7gyA0`<{wDo|B*jf z2mhsGVXc|}cVHd=-3r(;m#Q)$%Di&QJXjvWC{mCzh3rc?aa zc0g_TNBm(m>zX(z{l+(>b<7vs?fyOEiSU@7oF5>^4It6LNt_UX}F41 z59EEVEWYMSQpbm^HBZV`vUs^sf0hgm&84z`z8&#o32IxE|EUA}o&w5Z09c;a<052r z1-b>dbNfB_$LLi5V~(Ly<}T!Yt$1%*YKcDLl>Ser{cGZHl{fZ1Wl#+Jnx$^KL@>vq zgV)s#Pxb&*x^FmjiU6{K2m3r+_NKA9H!?%w9=`jup)P`b^*0gNtcf$~Z=&36x?eRZ z-TMP4Ij_beF}ltb{)I?qM~jo6mb_BBm444-I_xhheM2t&f$74af?{8&yYG>{-0Oh*J&ZI;!eTu<1*6|KL76=6#uF3Eq?u(RO==Qeed;K z&Ga9AU;Ox4UOC+@t>0600rtKs>Ahl6SR^Sp@;X-@LaUNMhKi%iA6OyGrd00#_7l=y z{(n9RR+jj8v8lciVLmg{ax#X^f5pRd+r?5=I#SMS46JPN>3<1QCkInm)Dl3Q~yayB#JJ z|2L5^d@wyMj6db0mEVngo7A9kTj&cK_T{Ga^JUvapuO!?IUX#jNUt#sseCBe}mxEf__I4t7N7A=+6D<8|Ib?o7L2lC6J zrV1!i^#v~Hew9-iZM?8!mhEVbV)Ly5AqC=KZRVXAz`dNT%}Fn+CPKODA(WtYge zr?90iB5T-JGM;L{_uWZV?f_btfTSj6^n4s*s%jqkS)@zOEgok)qCckjeCc^}vD%k7 zA161R|7N3ob-Lp+tDFo$GTe!WSG6?MNPEF z33|d`NphrU2o5uBbQyQSpBeO;)@z=Ki1sn@53T-l0AVvGN9ETn=MPF;iL*@OCnKX% zdhv-<3C%hQ0WiRar&gkY_B_D0C$MK^fwRQz)O&ow^pp)OChwY}r^lx2e8AP8avq7> zUA^gxdAyx^^qA<~c7I>cj%od0PlvV5K#Jo(@v#_2^qDFRYTrx?4|a{Mw2Nr%Yl5w8 zFSo>Tq*OL4((#wp^;r8B#YFXkRLRW@0d?XSj-Ys0;2N7Uw^P`tai$zT%Dv53EJBsd z5Yr?XdM9%;NuXPp?~{R*HXc}6=3X#C&(%8KuhE|^u^x@Q;0&TwDk{r%zrDHrjj_hp zKdH%*tJqI?Jdx$bf}znD?3a$~>$o7rg>E4s-H<#<HKd$-dEu&$83fqzA z=wmOgJFjn+#!zil5vzktFhAL)jOakR?#B)S4UE~c>z*4!q$f06`EU5hDx08j!ExIz zE1`|j2JFR&Wh{YQYrv&G4#kUQByjDz&R|d#`US?^{ABQ+n?3euE2f37U5qF5_`i|& zo?%V3eZFWE5R@XQ^ng@p0ty5|RiuOTUKQyCLJ1u~Kn0`(X+e4qJpvLSp-7V|E%e@7 z=txm)J3ji(Jnzix{qFg2u5-;fUswc^z`C>6|NfU>X|3?!qU^|cY?2d2!vhmE0-WQUn{~4 zwQvcy7w=beef)#$fazzzaUzFoa9?Adb0{A`>>79G1`yDc;-D13H@`HRVzygKD24+FFH`&CFy^ZirOD}4On1P$KF^V9R7e0Mhw23D6m(r{nl-NPTQjTM(fi@~)_6=- z*yJ`AE-Ncf;(c^}c4CQ`?R;1H3ADf1tT)MVDdgY*S{HNK<(`~oY{|)} zNJ$!Fy8#d`D6bqHnJQ*`8)#b&&k}!lnxK%yL=?#b7fl}IjZ@B>`Ypi!U)8(+kN@o7 zExe3Tzx}vPowtA@^|Y=AB<4CswDNki@+9&EF0#BHuikGTIURy`7Y#KbE%>7+$RBkj zr?fXGr*_Tr`L9lg0MwXQ?iV%U-x5G!j;-}XQ)hEZ=$nxM6C<55vW&0MWlM3(jrSa5 zJAiBXuLLG^P14f2KhZy6(kOt!-zIww=Fb?bSdA;)J?qSbN0L7Eh{#wZknjxWv!t$J z=g=ze%{W4nFE$93Bd>MQ^#smK)L$fsn)va&j~F3Cqo5;NqhGckIt2v<468hV%n_s- zr;FaX$}ZGB_`=&Ke|OKu>R|{qDFqP73dC66%n#7p%+?(nw0WoCo0~zlMx#EVBCYJx z!2En#SsUn^1;HO{+R3E#sNm=-N9p?D#SkwvVu3fqd=oFBX>{1Fy6Ew4c%j24{-)&D z+_Rqm#5N&&{Hl5UHMlwNws0NvY6(27@R+(fptfT};YQr#L?aQpa1uGgp#T(x2W#Nj0KFD;{pLut3Ntcl1*k*}CW-$MMAZsBaoM@GU{cK8ZgcnqJ6bffyPqIZDBM z^e>02=zi>!sbfRW0OhF|);b<%@n_Vdc|v;fLqtWlt-iKhg8DGTi+%U;+~8y&cuCY5VW4xoq~j%;UL^dp7IT`=4W zsNQzHuErhqweX=4KCNgJyC|^etM|~A;V!zP{#t8?-&>dx$W_S=%7fJ8)31<{!hEHY_QNTMZqUHsfKuhiC>eQ?H*XdwX;>B6g{W4d~JKIb}}rhrjU6GlQRiFSj4L7)jadX`QRi z2r8JY+;H<5IraBAfN&I=tx9jjCfG81aUk5tf2bel7=mZ0ly zX<2V=vb8C8UltIBGF$xsP!4$TFs{wg!*U(Qu9;i(+bFmdmPUfggKn%V_q9hya`x;k zCH8yuYFR~Fy^TBGP;TO$^8PMY%%qv9Mr%_Vd#_n+mugl`aISGBbtSC1>fNZJvDxFa zEjRJ=64Qg4xa8^+hZaoZ)w$(&!y><&e=w%NecpGHFJ4a8q6OTi&Q6~Ts%9v zF0wGrDl1P=14W*yzrz+|TiH$0n+cDj>UKXG2>dKuOatoI)ka{ULz!$|q2(_-6V=iJ%p6I$6leKn z?I2cXZjyeTzDJg__~-(SIE6co`#W;IwIfOo@Nq$WeTp6~?WcR|i?cQ|;OqxytD1Il zuA5htwqt4h-y)l~lzW^SK(9wXLULp^%o}>ASvA60<%yz(9!b%U2XLAx1a5wht=DfA zMIt$r#Z}EbrRvbDPzG)cWA`BUNt6Hz+An-<_xtT_=c@sQ)wnHw|M2Ou)O4@h%;j68 zwqW>Az_R39+gd#za&JMNN3trq*Pm<`1%Kgc>D-WR%(5*{GEGGjw9fwDY8NmyWdEVF zy#2RQuzo4IrOdgOwzKpfZGc~;Afcy9q8b?zMMJ_H8AkJf?Img2-}(So%1f^h%D~^z z{~y}{*MS6YB&O!qP8IH$8g_YM^7ZD% z>WRd$X56Qvfb?^2x^AVosvp7H`p*;zzFzluO5W$`{?C6F*Iy^cW6EVCd|`KAkb!e= zUtREZ6ap-p+s{^W#BPwoA#m-XFP-At0I+BABKc<3X>YJtM*!2%JsD)zmoKuK-)Zxv z$f{274ff#OHq(Ev8R0FWZ`yqOwUn>^tl9tQC;eb-EVz0sWApi?h2E>nP;x8Dnvw^2 zLL;K?c5Ez0lIs8f;~%$wc5S^=2GDa-NRjj(E*=4;Y8soJXW5CP3&Y~SS1QSzolfre z0$%^KQvdUw^Pw5ii;v5$>+@jqYG#z+l$i zPeAdl9_fwXpbPKwYW}})^8e>g?ROw~g*Ea3$2T*y5FbPyT4}P+D>l{H*H7Tm)j}O$=-|NN0Up-G^-hI7X zT{Qz*W6y$rxF0Jd_g?+Q-m6Ido%{ZKu{#Jp= zXceDPU2{}y&JDw45Y-Fq16h*`4blFX-Idp98pnAKT!W6XTfz)SZUsWslG!#nOs*om zg)O5I`1r8JU;2xXCd~VgF`hB7HfD)Sy&Qi)TR5^OdmWm0#queL2!lMlsta|KrDwt@~o>`-P=<8pNKsF#|cr)g&?^ z8N@s2vM>1QQXijwt81^2{dZ-G1Vx>6gBgpZG;9TlF#bgOOaJ_L49L`f9q`|L9^RfxI9EPeNgStcpIM_X4{P(NdGit6K9 zJ`eYR<7(}VM4vPhBz}S3WN0_8bA6+JF&@unRoWOC^-lxKx|^+?E2joz>b$rCJ_5i5 zRJ2Qr`Nd`@il=m^a=GM0TDXX*B^`kBq}d#FdABs&hMk3s@#asHchV#?981iNZ?#aF zXoO$VzQ^_1SAfRZ*^~c+CW|-M=<#0Zok3=Wg4o7BRS%~<;MX>%q}ng^vbv>gQK&19 z#SmvMf{Bqr8NLO=s>(Qf*cG~#Y%z^oAX&yv@us51UZ)P2iFXqzL|PACyRb^QD(cLt7JQMGCAzX2LDLv_ zvAWzZm}cP3*@0W``>&sjlc{4ATO=>NG{cc$@IeHLn3+l+=i2Lf=gJ?~-`NyA<_e9V z_XKtuPMrwKj^P+e_?LTe-uFKEj23*4&&1TQk^7pC-iaS(sm$& z;ZR_~Hw%wh313@^GD4Ziq*Zuy0^4N#}yceB#a(?|`3T3Y#%dNa9)INy# zh9UgU$Hz~*$|$Iac)otE>hR@vO^Z(fJKN{gjrS3o*UET5yP{D0diXut*%y;V!rk?S z9>iJ^Ivx<6xI4kHmFpMR=i(pVsZ}1n^nG9>L*SFMvVwxP&R5sq^C);fkP;s~yIVN5 z_`SYeJ2>bvQX~8eUGt!K`1TD{lw>Y~{=~CgTD)1}F_7kj+Ve8ds995Ajb(O7P1|VU zOP`a}_X_+uZfJ2Kwjmzq@uEaa(2d(un22*d#|kiOyP>$xzTm@uF+JX`upa0NGbs7607 ztJ0=A`K%#!@EE>CaF8c?UDeggEf@Zh-Ohu?S-5V}^}22g-XHJm-1kCPp^nFqWY*&T zK2S7)5L0LJMvNEIHI1fKc?BT+=ec6>_s7?7T@S5KxsdogZ4L?$DTXGks8n-R$mPS zB2Kz7=AAI!X&*&qLex%raRbT*xZEYjgV2ANLKR9E-k|qE`5c_-_V($Cu9P)34f-P> zM4?Uw@HDqOxvJj6x^CLO-cVdw;f5t-`jW*ZN%y7f_m}m|L39bS@;9F#ON#SLL(#Oi zk+G=BWsSoKI~1oItN&oG0GdURSwJJFBz`oRW<;`_vTyzXH-{noV_h=bYOd2lE_l3x zJc|aOfYq5{+I1qc{@o<8`sXRGouqfvyX*008g{glnr-}%(gtC7nV)Nl1vo5qetHMIBx zY9psjaH{QfG9KNlBFWrXVntoWf1YsB#kD?U1(Rl?ShH4skaOD@1b3g4-TPo$B0#WN z{zb5d{U+GA8-D#$kuYIZ2=ER9uH#oT%35bkN8W@0?~vz>{5{|+E+ml3Ie6LiU-Hx5 zAh=8ZV%QV&lNlz<%e%b%(~h#U$ob;+%&td2UHzP9&$*+lD||&~+&u<&8Fp2PQ)@DZo#ifyv_i z5-JbQr?B-mP4&faK3N5%HLA-#8>yWhgHiK&&Pm0dMnSC80+yOsq!}My5priQNR~Rx z*u8V(p2uw9XE?;oArFIlPtTk$z~N#Y195s`o1L+en0WG7u$pU4w8voM@rb1%d<44d zze7tiIPU%IrcHEJ%)x;FYFYeNw`u7@z;=eON~m@mclB!~TT+?6`)pva(^HJ_IrJ1^r7gn~e|4H;eu zW1XD_q$A$3LXItg%1bpX;Z!QzLwVSOV%VL{udqk1E+65gh^W*9ai+-UXOaU>^J+_3 zqzzwt%TTGHw!^WpNX4mUa4m{l7*5RHHy(&R>C_>n8#5=`tQ`6h~#t5$a>>Kx` z&so6P$Cd9JvS5pKr+8nzp;n@gik&Tkq0wayR3=a@(tH8#8>y+2gnIffWte{;r2eH@ z1mx}MhGm7mPE>?`^;2;bG=@8sISqW!-91?7)EW2kwWX6yMe$AwnOT>}1FLn_`3p-O zpIsTc&Qxee^Qw~C3?zNGN=vckl^Bb3kY$jxQ^2_Xj*AO)$6p$*WudlQCI!tas#Sww zu0*AlaOJ=H7^2*5a@Y~R$CVMfFpD)XHb|yYZ%}Oxz?;3n^IB~3aTZ=gg=imMmYzw8 zE!g-hkW#@(J3L|BTr#X_vbk_0#vz&LO@Ef04ksHNcm=NuQqx%<$SOr9zymEm)ST!H zS4XL+k(%_F%&S0`!Y=cqZoGW5QCL)gmA5*_GCJ6a^36K$?xqVtGIm#bnbm|=W$29v zD<1j}sjFYf@?RPAKfe5Tl-RAJ)s$3%=p7v%mx4q!*za5wlDvn>*kC*IooJ6jwibNH zC+Kq35Zo1QZTcJ)VX|*MxELj_sobPm#1@#1@#(B8C)bC%K3_np$-5<2D^S#g)bB2~ zY>>t*dM-**guQKe_z+43gEG`&>n$kn>93uHMA!re3oT`t?)7dF1PFE3d28CYK*VRa zG#~uH=8j|@vwfV6p{uo=BHG)RXQ#D!5SFKbG=i1A{h4O0ZR&W_S<#L+|*L5 zmuec}s`Zv~K;cGAzv|0fgGrcu_LYeF4kZ`u@P&P+t#c}kcgqjYstzY~pa#a6OE!r( zKfkQM8}aGr)j;stD2H=GZduiIrmL$#;wTnXU8+^#-zTpq?DxrCJVrwYOf!TiByzHc`M{XE9}dV>p$S$4<+-%VLVv>JqG_ z4m=2i1HslBNd8n>N?N566k1n(iX)Yhr5%MlR6xyqc?;Y^hitEFj^^*iHgkKc zB1`yzU8hgvOSl`nkFR=Ft8l)kxo{)_VZt%q`c@|m>kAK@(27hHM-##?A*TMpP+kdt zTKqlk(6E&8DF5`{2a*%GoUZWPm)kFYANj7-*O*mz37*E*^k=1kBi;S7-aPb+Ar;$W zwg4}l8=cVQLA=%mHLc6SP*P=@eee3GQZ*$WUA5q*7?{Wsln&Pprt%lKH}#6I#5L>8 z_|3MXrNH@@ylrBnMarHdXX^4DKWnc|REc^7k9ah)q|V&2j0Z%GOPv$i?6mXBog#QK zzTSWW4?|DN`bW_2;xizYPTsv6UhB!YG?y;1r&Q!b;bd&U=PS!tTTML!Nl0x<)|w#k z32l-$?TsNUPa5`8Zx4C2)?$B)*cZ7hNT9B!7@|mD#4%Mm4}U&TAQ`g4IH@hHZ1jZB zQ$Mi~cZ*!6=3_aWKf*{H%hP^oGB>`y#l>Gvn~GBwzg_dL)RCXP-mp3^ptKv0zc~u% zx-F?0nfmeYWT^~%aPHNlRTV=P(^RoQ5%(Z?@xVf};fa@D6Tf`3cET7ye;isMr zkL}`VEKxN5r=a@J!dubJ`~Cknd%20cx#91@62YlT#~?E5vZ9haVWbopMW(0|c7so+ z_-`V&gu#;GpCTLcuXggw72cZ5l-f|-v@#+JGG;+ljtE%ZLn1O!Gxg|Z{a2CzqJCe< zi}7irL)}tAY?11iu0lXT=%{C_1MWWYjM0#z;yEr z7iOQ;y`GghIM_V<=v4v1!qMt5@Jw?*+kEQ0QQFOX{rscLToyAd>Gy^`}+Z{=5S zgL=cZJ!?MbYFeE4*dDDUw}f@=a(}2`=&Q=ON*fjc8b!XGc0fIwzMa7m(k=5h|eJu7fV(;Bm% z0FCiU{(Xb9NXps-Eu_EI#GR^dG6@raos1X?k3Ea0bIca2Xp60w+7)i2^0O}mm`S`u z&90nwR|_Yw{*%$kBc(IuS!|Xg#3?7CdP@zKdr^%^LV>Priu}G{4^OljXXrYC+SJ;_ z;iO=fu(RFqFbAGnQ?173W)0WxdF$i|3qH6wH!W=R^#eix-CUpsjYkFA2U;>rDe{!tQA}sy5uO zWUau)3dj15TEdlc`PzO1us2UDUhuV5Hb`@Njx|es6aQvI0bC5pz8fh!1s!IT(`J?2 zXeF5cvN#9UW=-6k#g`w>xqZSJv`)>jhl^gep5Cb=v`@MR;iTM{lA#Gfg`oNgyfqZg zjL4=dSt^X*zuPyC`I?T&XS;~IDg(FN(t&OZ1z_7DC2zx)Jj1ip$ryF@8-a>l8KOK4 zJu*c8*(AQ2&Vh2sFn^ciyn_2bQ1%Fdg3huC(VGLHh@`EDmAU3H%X0pGi{iKR&Q54e zOAA`%D)=*_B_gxQd{_vis)m)#mfqHZykhgc%J^1q^oO9iq>8uoQsRjuc1pUpZB(IO zZb|ZRtpFaoFDFtL(et!jw?P42gcfRBaj+m&!K-gM^z z{q`B&)fv0RWiP9-0mUtBlo6CRaU!smBVu=Pu!@>e*^Xi5)Ect>?%_Q72l865_sj*M zP8AA({}RmDD&;sCl(7BCt)Be(rp>}=7ch2POVtq)?Jh6K>E3;ea#K6@E)z_~Drc?f z+aQLKYbE#?trS$TZMh#wOPwR9I|FIgtEF@ws~FG?y6;NRAWIVL#3Kj-&Kx9Y@oD7M ztlITU-J;aX%HxS2KMUwUcO%rWMzYe-Mx)soO>N8g>nu0m@dE(pg;0WN<{_KSc(uT} zGR}am&$|tIrp3EQ8CXJ~kQ@qqgaX8_zgA_~$YQXl#0B&+9Ryq%iwqFMn7uVqUote77ekz<$GZB(NXBmSrvY39TaV0C{8{B* z6iay1K@)0T;gyf``me&hVvo^i;?xH&wW)>?v zOxrvBthP%Z#BGU~v%+t32YKtJNN225<#XJs2Os(ZV-A+}a^|+oe9fKaR6Mf6dOYnc zEhu1XHk^KwOuI!~Ar}UHU<-XwXwQl1CsWV75w-YEi|I?7ihB2)1cd;Y3PCDC;_$=- z>Ez}ZuQ9D8T-%HV-eEK?bpy85BglS)>0iDtIelM7Iz`lP=xpm;J?g6iB78y}Uw^B# zxTq{c!;qYbC=Ws54dr?5qfGirJ(`(C0N0%P-VBv|^bilO_=J@tnmn^>IKA86vuxoJ z9+L$&IZr9z^q_v5p82+}ko5+J^$TVZjzLbEPnxF%Q^s%*6Z#bbS2Gx_FP6kTJ_mCg=9r7$r7=bzSo;Y+8QQyua8uV z^e}J*YV>_RAov9!j_3$W^mby}x)y^{-lfTnD!_U7$L?Lz{KVNFOnq?gx zhe9YKz5G&-sYejV1u3EmvGEWTS_eXWPwb0@m45lhUx#VtMTP!e)MYU``+_fTkxrY{G_z4alm}mU8Uz z?5(%=z=l4=Zh6Hor(T;Yq{zw;Nc_?-+x2Wt$q6R%c1O41&6C!9ISV!GB zq2uLHh8Nq*A;1AM<+cSoo5l`D4NfXboV>y`;q9v3oXqtZz8*{QowB`?GjC$K7?qxUD@*agfwQC4Bb3cs<1BZcWbI^{ZQRG?mnIChq z$Y*uhHGzeDeT>>;bp0(X1)s0Cd@f_TzQw$UNLZe!ct|r-VEeG3PJdj}kVS4tA=;9c z%2DRdJh%(QPb&Wi<+axQqYq@)UuD6<$v*icxRo|aiJUz`o&A%830gtqxGgJNw33@Sb`pz5Qb&5tR@O(W_~q*Jua#}lT&AVhLYvjN$wa*@G)^(#mmvZ_ALFs zJI3dwtnT~-Yy_YlP2Jl`&NejvZ5*#lzms}GVuq89n)63GqPcvoMAry5$nM76XWFpd z`&M|t5mtoCt9#d|#r(dHXna~%#oB2`7ClQfKQ6-gf;A%+W++8BrDYP-@&38DZ4?Ml6v(%%B{;a( zfEkNN#d~E6A{St3XWEmHz7Jv*kPI$CR(W~)iNIJ&%G$5mvWAYI zFM;ANbgd_thc|rJlRp-+(K?2B)y;XGbXJ#!5gY`^>LAZKW+&V6oYRbCoQbNy!+C>| zV>hqxF$bi}_-T(yY5(a10tD^SMrMA`=g%-@N%vnVbg!&G(suM>cVCTAeX1t-F{GAJ z1xzR$7Ji^$n*=&OA#z(e)JzLKEUmvkfi+2G?riA_m*$Egs)sZ7tb>Im-W{vJaz<;G z{fqHCUS|rPa5aI_7Zpd*)5L(tx`>-`S)7tUV@RH>h@-2lDN8@npC4*SE146f)^kk; zgQ0}(gobF{k!xoG|HlUhU7ti@POk7 zy0~@nwpnh(;@4$T*#s|%o`#qSz1~4>UF*@%bPBSg^{%bu{~YKltHj9#QwX2?st`eX zldn;QBquIkU>2*l<`_SYHC_-f+0JMy%`4eOK4zfsYS~X(Sz*a>?^Gq>;2ib+1Ze_M zRtHA!Rr!FOV`-A^uF6^W$A^frZybttf9AKHn6{Dy&+Mc`GDEzY?kAyVVzS)qCH9vN zJ+dEsnnp$Kcd1Xi-Zj?2j9=O4a}BgdWQ^)J$UQ{G5CNaxW5f(T6EQs3ig6SFs##q- z`_&*IDr#G>f2bd%csxR1XMHt(weh_ptCi$mx$7~rP|e5$hA$sIo2ql3<~yc1%-rhb z;?tGIW<#~~ylV*4yO&ZkCVSMXK&ep5hZ^qTEw%M@jlBA5b*Hb6&^D^-N^8S9WxDAH z*5I%Bi>(^_=o;u4c08O@Fy%Z0?JT8$AKL@t*DHz85ktd=Vl?CTlU2}x7al$OD?$|oY8Bxj5 z85*lHSs`Y7w@~Ff`&sIaeH`(73919E3`4k$3-e}V$0&}C;p9C{Nq4&5bAHPQ1QiRv zI)jJ?TbJa?+x|1JH7<7pVnRPCo#jQxPmn=k@oI)30f%jXuwQ~OA4-_` zsCDp0u|z;7Vp|~)Ju>SG(jC(^knn;jdjdt{tmKJ(so$lD4i9AbAaGu_J?2`|;h3Y3 zd<&c_^BdQEQZIXKeEcK{2BtiG$N%q;TmIioETdwF-Z%pK=mz~b_>1Cu-_>fm-^T*} zNKdg4&9F!grivatFmEPufBGsg;0sBUMOOKUp+u&B0ZIp({?3fwF3U$< zYlBqLZ06@B|ggDzbeZxC9S zp(=J4pU0kXbfm@!l%d0K4QFZ^s~t}iL)f7iUX>F@I+%e4L5tggPy84aMdhTA?l%Cjh`xM+QTMiK+PFg4Oe*h){SZl zO98(0s>P;Zitds4RZPw*dQxCesEO7R?^-Q&W!h+#W0cm|k74>%o^AZYV9tWaS8WdG zXIE0F4MCYVEVFa^WwCi-&kdr}Q68h>NPinD_sPXAuGzC|0}ceqKcX}P=B8_ND6hF* zcz9{p_KgFhu~R1ByK%C%lLNChoFN0+6uuSx^J{7jwFa|LeKOvyH@1iemnj|B-9?NM zTUpWXtEC16YP>0f)9XeUor?2p7I@3omo}m^T1YGSg{_C2=AIRvuymS{gO;zP)lb^q-Gxcqfx$FFs8|tehBgyv z&R@(y+_l@l#CDp@*288t8zA|#)evxa8TVjmhe^S34&rr!+c&n)gZH~2$RWEs{(%d( z*+Y*=0RYF=X%W$^weojf+QmhvZExDPH?IT@ji#f*jYr2c1qvPA%!qS9O+Pf;!BqZ> z#S(7lIQ80+nu>vZrMaaNjBcM6%Yo2L6~TuT40WUes&;qx?(Z^%P54#R>&@`b=!1we zH3@JDI^~~$^!Lmf5q`w+^NqOoirdniA?fOtROxoN@9MQ`f<)JC3aESAG`?l?+;+P~ zQ1BSSqGD>$UCKD)DO&_Q@CFQP?iIsja7ktl#?5@6>w0TTLf~Qdtzw_<$m+ab^ss+I zMWFxq)|-s|F|y}={FiUH^WJZixry`pf6V%fRewPZuY{Bl2$#PJhXkZy7(q9im(W&@ zx}r+}-Vk_~H;U!e43c#Xl9hfbXq)r$dSc{{Hh=Ub*Aa-@LcfUHp%_J_{#+XB-?sI( zza6mtd%jmz9^Wgg|L%DeJT3hG$gqrzW9?k?Jt5$c`Zvxv&FC7dQEg5xy}s-YU6yW# z)t_Jdq$ypFmemx>hpz;>f&^uYjTO8~>{!p8eBGU*=o_UZs1#!k*gQI2lnR^r=?BMu zB!h0x-Naie7;Lg*^_mfxi1tg;%(fIi0U7sv$e*8GBQVF?UoF2?!rdybbDGl@d{{Ml zs-jn$Ra>s_hTP6#S`pxzU#cO(6om&Kp;86+9UH@gw7n_~wmJ>B&As>F)dze8&~q3= zIuQDzUU?aJpL>$+0L+=T3ew7L#G60#z2pqu+H^eWdK_l57*qKGIA8i;@1VuP@4#n| zCq$FG`9)YWJYYHv%%78hN_Wb-q)NU#D>By)G>`9aNb9k>32R>1t&-JnWKX@La-C)~I4)4p45 zxsKM>jw_jRiM>r@%-F4P48N=jW67wgkBgF*-8QFJ!y>03W4k49#5M*grKV?;sj2FO z{>SmP!kAZkLXk&Dot~GTURQI=iT8u%HEqur#aCKT<%Idpa(dgDmz40OgJgm5V=mb$@aA{rt-hkHHeqi^zNZ2x%(FRv-w zGxZZNaANVk`q>nJ)T6|AKLMF|%ro1cfNG;4L#XhSDE;;hR(m|K7Vt=`O6hY{Q-)Dqxi2^@&09zK(2j91;iT$XlYrzk@p{C#-Dd5H~bSa zV*kVtJtJa89U7WTsEt384`pZfehbipyx@!$S1SKbR{j+`42u7vs@&ipYqM78Sk?m->WaUirLSfwNc8X_XxH6e3Y@_ z0xnX(t*sUE1kzng!fO+lumsnucB0w!dhsA!gN+7US>g_xhRFWRV*Uq&=(tWiCzA*-A5vuv~A}-Aun?>o{K-=z!>^RZ!rtFR8vJWnL67 zr#MzMqmyBp8^KqHc>xU52%II8iK8fvR-G`47j&i6m;&JtPRr%qcjj(rx(nToy!6cP zqKF!RTi)|{^Hx+I*?LiYLOZ9z6ekckAr=!xwobNhvb^O6+RvjMMWSP8@xhoT8x5gi}jII#ZtrFIXFR}QLJe`?F3L3R%^0_5}CLXnN4tdCdRaEusFfq z)u21BY60}v>IxJ*^3qH25Wa%#N!w_b3RxQ!35hsr5%5bT!TA|uZIF^+8{Ch5(3}f~ z?vDeWQM=2Xtb0w1e_@f`%7Zgl2IQxfQzSi^)|fpcmAf6h$Nil7T{{Ec_k@PA5ra{= z@Un6nJ~KyrL7@#{=99Y@OeWR}pM!+T6 zT;i@Nj=us+yNNHxPIc0;rdC<(qNjsV*xsAGcD9DH=F1*MUdbHFG6{YmvqwFwEIm5r zHSerAP`TUAEE*&VOpk8g9TTx;_63vDQ!%g?Y;3diercFd(v+2~*FB92k7%d2n#0u` z2{QJOb_j!0ROUbAjnQ&(@ZmYr<~&(!JbRsZgy+GFuO%obvW2$|EskS{&t_t7hgXb( zlHL1(qkBk*jg10;3N~%$WIulaL+oc;DDQb9_V->o0rc@N@gDk|j9gILSjgm}*?PS# zwSO300wp_gYqKc-x%Mz8JUPa;y>*cS>>-1jL*5pj zER0$pFk8BA2R)1>{O+o~+Vl<;Cs)SJYjtD@vD1pX)-|eJXj9iDy-S$%tu0gLS^^39 zwIq-t?!K-{Va<06@A%=#U3V2TTrc8-8nfcA%=7_i5;%*rqoS8PR&zwlRA{v3xK2YB zTb=gi0)_s_-QCCwF=8~KEf-o{mZHGywmMZ+9i8D-F$|PMuZimUhyMZi`6CTMBKDq# zz#^3%^Ze2C6JT4)7pyh-!?$$pd*Y8C(-Xt`_qKz@{9`o1J=r>j6>NWS4F8U3_z&Ox zYk&jVSferrJIxy-{o!e~vaN8JaW&69aM#Uf_#VU=Gp7M9t!OggK}J6{s2h5*ys6O$g@PKG@_?@lVbg}b!v*hLVX?ve_BKR4f zd)$5p3b`g)li&`NZd<817x&}!+PPiZdVRTORNp9@^YpEYUGAiuaT3r|^yMqTu%m4# z0>SL6DY{#;UszleQH{NS)JcWTdsrD}rtHb`{G?1LMOYcJ4GmZ2L^Q|870-;KN5mK< zfD(>_z$}yXlKjT$ZRbE)mfonmpoa7MBFJ1_7hr=mxpPaFlbdpVO!tujmS4ju7M^+7 zyJ_#W_EmZ4(tR*V4gh?y#_Y<7vAI3&QdVa#yNU!PVg2UKwn}unW9z&|9Y7vH;d?-^ z)IbQI!nDPfcirwN)RiaJyn{$Qwd?{j?hS&Tlo^L%F5NN~=W(Fm?l#v`RR6vp*xus)Zkuy^F#2dQMh*z;bNtYZni$YgbvHg3q|+ zp{L{@s&fq92#I+{={#IZM9=8}&lbPP#N8wD4BwD<_o~RLC@l5jaS3BIJ8EBa_Y2zY z&qkuWy#%Au+WHKVYMs;Q5d<#wkxD1ic-Y9HFXdD)IJ?4YoJH=dRbf$aQ64-i#*9&u zJ(&cB$z7N{NyWD1dmmMQhJBt3{Nw?mXv*YD@4beZ7t$R;)+P3H z9kvpZogQ6Ro?vSXW{;0mPhSM_-CFZUmudc_w6*iL7m{Lc-6|6Dq7up$3xZlLt{%0xh}wC?x#An$iYQt&sWpZ{8a zPG>OrX4MaVw1S*LaM$OY=3n^mukX44!if`(?8Y>7c|QTcMb&90t6`<3r6nIK_4O*{ z)b5BZUtoJoWt*&9r_^h>9l-Q>c4iMJSt*VzEH6ANVSqj7<$8R;L&O8fQlA@qH0^qF zy=usKP+M!VAPYsNu=FY+#AF$k0X(}HbY-*AdQLz6Vib4ua6nwo~1IxRg+ zU8{>Bs)FvT^6Ck5SRuJ=!z;|h-pMo;dodyg`&s;sQ)9J~79;ggqVPL+G%_xE^lL)j zqj7@*N}x7Bc3Y8teG2wrC14JnY!}-KX}io-;u67$yp8PAE!i)KFed32JK?$%Cm!-x zvPUtyuy^qx%BsW^hwMt}M!J>|zD0OiZ6;b5Yo_MRL1CxC9E0%Si6^B3EUxhz&0P}= z+S}H)&)o$*P}vK70_RP~95r=O+Nk(*LwM2Nl$v%RuB4MBw7!8<^6(&oQ@GARCFnDk zzvePd3VKNh z1W|&js+$p|EN_KHb|Gm)T58>ntsAZUdUNMOdaiB?+S=0iO{mw&oxU4d1y9*N2H+IP zE_6_TX@{fCv1zL~t~3t!O-{va@~P zZtj!!tvpAPJJ<9(f##US_>bsGK*Ig*-pwt3j)VI#RRLP3C(an~Qz)xFnuAt9{Ya{qFpo`yYd=kY{P+Np#zVihACmhh5|f zi+3|*?!iKcsg*_4x+u!@5L?5ZAgQATU}4Rug!+1InpBsXh8A$VjW8pEtM2V>EK*%5 zeP?ODRQ%Ly)L81YI!mgqPYn>re7%)@H9XFkE zNG-25@?7qFVUcuZ15xN&Xw2Fprs?OEjQzCThNt<8yi%dl6b-(QCBU5v0+OB5xPm%^ zXw4!tiR|f>9=?*&r68`(%TEaU;Y&-o9X9v2FZ=}5(Z;HkIze^Jn|9!8`~>qFF^bo& z6!_0He2g<|)botXNwu5tp3|4GTc#Smc1KA5D6IL5q_24~cVitPRO4_zk}l%ILre9< z%Kv?PFq=Pa=Vm{lJ?Qm^3ShJnZf9c5RPoZIG^(wb|6(~?F`v$joFqkgeuG~j=7r*) zV8_qLA4bq+3rncL7#WiM|2^2z#pz5r)Emu|?VeQRzs(gPTi~*U04G9#6B2Ac0p3My z2W|5l#Ve&Xh5bi{8rn~7^=J7~wXHrWvy3Cch$bZ{;jNrs+f%|)y%ep^EQ?FFDRhiJ zXp)Pvu3WcvblhjIX5O?66Yxy>H0NPmOb-@t#D9cMSZvnDQ|;w+P60et)~ICa1(O2g z{GI14-7&S07s)jzo^nz_F*9WBRp^FSHyIAOKCLzoYw&HHG_hdw7&y<`(v-Vc9@-k} zUQQdpI;b^^r-V$z&iDe4)@I+C=iRkynE8J2C5T&A*mN{_urx;0N5X?3^AZzaY)=5L zd+v-FCY>?;=z`h$lz!<~(&XH#YsB1>h&vKAf_=l zm8XVWfRS^##3V|tgtfKL~G+7nS}5q|VF`d0ek^?OaylX-tGKR&UoNRa@}X4_he7K7-O$ z$_}|fe)l+@N5(O?E3Z*cqE zEz&?WQX+OQU2Q|Ra49KsLB*uw9T(kZNp>3zvpaX@2k3CM<**oXTF#UdxS1M#Vlkvnjon^dz*GnUWE-EugHdbq zgcJHCZIp>^4aAzerr7IskyMAn)gGyhd*|HUogc1ub#LA0>|HL)9ho5Wrd^)1#ay{! z;yUW}5;x-gVV5#Kw`C6syz^8gxi8^3$yirQT$b{NNc+^bMYpvWGs9*bP%nihG5*60 zW+hyD{8mY|Tv+aznbY=5n>~(FJ}1Wp6^G9ku0LNP6|$z3Qe+2Gk}&@Wtg?ykaF7RCH3klDD`Q)rU$_1*||fvYWT=AjQKz)ibO zgVY-tN5BwEe(t0(6Ia&b=FPqL6}#xSWuMc1pb+JGhkNwdR8J9OG)iX0-~R$fmplKl zDgK8!v9I=@PUa)*znc?_lnW4&y9z?QE9bvh%vSy<-u;?~M6%ylx|36Q{qhUy5<_cc zY8^vvg9inry!>Hh{9$1;|DYrPS4e5$83A^iZ))=+JwJ55Mg6x1BMe`>Z#%9I@_v6B z@wq&i+xm&yjKbLub+o2xI|1PP#xoeDq`E93DL|I=&yz##ec&}colyN5_#zW1@4Bz6~5$z+LtU-=2hZdElkij2znSJl3tLGXtK-}P!Ev1ap? z7~jmUA=00Ki#`9=kly;YhV<``v1*#&#~=`DGE*K6gF&5{}+4j9o1yJuKNZN@snnu6N&;N zRXU+6(m^_*2h@Pngcgb*N>M;cfFK~DNrwQTCO|0Cq)P84^xg!dD7GE_<~P^cbDw$k z-sg<9*I0YZe==0S9`1?#n?1~ zTC#lY#SxLWD)4ewea?Mua$K7)9;_spYP}EWqW4D@_Bhcb=&>x+>LWz z?utEExE=c3k=o(=!?uZTyKMYFzHg`d@FBYN*y%q=K-Sm{&V^rv z(EUnmHjy>^eeFW|vAtHcp8lVf>Hkao`v2f(ao+p0%z)zlZQ1=Z!5W5H`1^1YiF!vu z{pbDdFx>i`*K$j9b^~coWC$X>BA*zh^3QCXf z*zq}pf9TwK>HV)i|JR}W*J<;g`jv4sZl$}Jb8?UHYZFdF6@dTJC%|6|{)DIfLKPG{ z*D~OXf2W1~dsUX6|E}7_5R*R%^1q!-3>GHz^og*ZMbp`kaDk2Ayv)BYCBM0uYlFWx zr%~~v5T1?ivZiNN9dENkFcRUd6D%BU3v1<9>Bh@8(*yIo6~3!Qeo-?sP`+__7j;=S zuJb{rkqJpv`UjPiDb9s9edo;RKoP%LfTIUrscXR|Wq_sxmAM1{c>a0>NqMRL{ys!8 zkm>s4iShby4Vv);aep0KFi*c-knApXKuR?2dDI-Ixus3C|APudsCN;5rfAzq@Ot!z zaT8o^d=N>h56#!OFCXU)8Awq8Y1G8 z@^{%)562WLFLD9uzTOp)DY?&a zOmdpeSgFGXWu88|t!yZMe}Ioksy&lB@XXEICOQW zN0IB0d1awdfA*Ni^GG)TgL!kLdYa!W8@hv@!LP;kc7fNrCYBM2<+zlC!`PKe6%wU_ zk5jYeQcEixNxNA%{ALE8$jwhQ`8_J@< zrs4x4xDjpMG5%?3?d7M5x@Yq`N5rjy2oWHT>>;m4(Mja!vLI}js zO7j(jeta%Sfm%k`A z^9aLb>Pr&ql=x`K_b&B|$r@R=E1v9*_=Mn<(ou8%>wRpz?-l40pw{9tmqlsm7(cNu zBCZ^T=H(50I-6tnn|fJjP+8Fd(QqCBuvvy21-dfV@Z(b!;=6C%mUu6iUP{z_210+( zI^K2D^~Sy3w%FIo14y%kuPAKQ$WgF`^DIQoR`nB)s(s!EuIkL%hUX3WZ{E~er3RAO zZAPig-!@4q)+HWG;q7g9Dqap?1S}vw24A6<9BrulTUK$Et4kljJ(a zTdSJ_OH<|(HFGI?KvFO_G0XJE4c?o3oEDR}=~+VtbP?71)3*ey2>d>>sbQKc3m2E@ zM4J$&4#Dp<<;i)#Ac3(1ubVbS&#-5aj*)(vem zw&zoB=n|Qw53AEK)<PP2<% zz8Ai+Q7Sg^g^%L{nT?gr_8uZx3sZ#jYRv4*Sb#ilLbq-1>}mZ3$dO+6V%76b)-h{s zpMVeFMir$TT^P*sF!d}LQQ(^Ky-jI{x^`;vC5iYsrv7JJ z&W=uJmPMkfT^~lvyKfG~^tZ4mrIBsf6bzq4j3mW+eaV<{%qhU+A(Ko^q{YUQ6?a^s zGC!;+d{W{d(*^DR=uIx@9)`!pYO58_2Nb|CX3Ud^?2QA!N$!r_wl-kx;Zk|^a~-t2 zDKXWxdNzF~GXZGay7A%7k`GE$540?MboiUXCGnPWb3}c<7iq$V60g^7J@0 z!f7#~qT$KDHTxQhjgoMFWctmtAAecJ8|Z`P2iulD!3z@6euCK|59(I;8f9kvg+^sA zSmI*#u#vm29*&Z6+BSX7SBL#;Btus+57w$+gtogIdl5^>7DQn|jfr^vCH~wns8Cgq z?^P8~T5C`oWteCkDJoG>l2XsShsFn^$krrYdPR(>x^M7o4yd(E&4ZzA<>hGRbrHo^6%RotdGM!Ta&=^A38<{I@zF7NV zvaMNO!O4+Vt^+cbFLFe6NUWKF4D!jTwXgG63OLG@@o!@$0lC;(cMNy?#nH%^HC3WnS zY=8{m5Sh}*Zn@@qMcQ%C70SU%<^rM54SM59_Dy-2n%{jur5MM;r@kuw^Wb6))jYu)0hb6`g$@eOd@kqkRWc69a90rrI( zm^EN_xdi)KPY6>`n%256QL)C%IsqNjyyLkR*!|jY)?cp_TXN26)6ots)4dAPT(8KR zQvB={7APnYD0Wb9n{KJ=@jk8ujfut^4aK~V1$i7THaj%aQ8aE| z*t}VEDr8Z{WO{shL5EFllQiXEhmELL;*p6(8mq#18%;%05JE{>d)X)B!)mvUSKGL4 zPM1M0RKD`Tz`M;K&5j&&SXIoe-xK;g6&stAloj-1hRND@Nt2$PEd5Ne0SSmwIu#P(O8WOw5i@}uTyG*XP zO&Dm;)zZE3SvZ@B3cw1TY92T8&Y9;0Vo1n5`eys+0G+5e`X0*}3ZL5IO}a;5@60xn zH~ZsCTqO_7#cD25!-JPY?XJ`}c!7K)I%w&mrK^m$a2-O4>R6L; zHkZ6C96lH4q$2@KgjBwK?Ow?mE7#mi-grK^8#W>R;(w}a|06Hy|3UozU;Y)=;=hWD zGNRJo67NXiJXYZ5Qk?Zg0g~mJ6wFlq%j--UkNCSxqk1`~k)BjmXn`5Dl$A|LHHPfp z+n}TzLdsuqjn=~7^6ecP`)!*>RYpexel-?H zc_GXC(7Y#cV-u|#%wH~coL*}NNCb&5C$!ZCsz&*r610!pzq1|%YGhX{SEzBJv$L?? z5KTCBnR^TO-~|9j>{YYgX@PkRfqzq64$~;%f!$ft<#oLsPqW?x5|-X>H&5y0)Dv;BRC`-GGJ;5`3=Np+bgw>rL!n`F8^ zG5W%n-zQb-uRMN*ScrfPqcT`cjVh|-#7`d%_$-G%c={B|hZ>i)F->5g-`rEYZtd*P zm^XruGd7U>0(M0P!LkCf5bB~Mg4PnXvS~rUfh^a?K1Iga>S~-^lwqq=@z(V%{vzwA zh08olvdeXyG|g)lyavMGBGkMZbqa35%)ZN5Ic5+w=-Cki(415k70+2pk`ASWkw{4!ZALrSns4_u7#2O0_%+ z*LqYEt4h38dLZ}k{0+W7gF_YZQ(WmGTQlI|a)@79NxanAu#=yIipfMI_Eqtb+KfH~ z20j;wy|uNqDAvYj2?_4(p}nBe224#mz0JAtdh1y+2-A@byV9 zcQ(HRTe}7qpLUUf*US#q21L zj$;)0iyA+b*%_dp2jq$bwSJym+9x?95A{H2qGk;@T$aDne@U2aVPDsrn7{QAZEI+Z zZ<5vl?$vZnPCs%*3VU#Q_$;t3`T4$FKg$@xh$sqxot<^rielKXy2W;G_#O`PiO|rM zxIf4O@vq7PbZ@6L4o=8p>#Hm_T>a%u!&~@^5=W+U9pM&1bAXit+5OfH#eoA-1Vs1u zUUkUP_q{QbM}+|b#kc0^>0IBy$e8k_hxI@k?|!ZjN)@3iIw zdZ8$^`GbOhD743_So7sQF3xi`&o%<|3dfk()bm;WxAj$oIgO_>S)RV`ca8nL3-{Th zz;+*WdY&_-D5s)QhSc{UDgMj97F5&Af6KXnq7ya$K6&^n^YPE1LkbFB zBe0s0fdQEI7g+SKmGpPuBWZZ(zYBb{^oOXZSa~Le1@{-BukRyCsOouT-`hU{_ol+N z=EnU8HtIC2sNdmX4TLAq??XC;rSOE7jA|lZsG{@dxIR))EJ6Q*{|F+3`ncc~#lPuCJzWcZKzF7zOAecy9L6_mU5nK;2Cf?aQc(MWAGb=6;6eb(Z#-?F~>t_73rZ;wvJ z^e+~%lqmxZDIkEVMF&V)>z2j z19@jvjLz+d8JcY5+57F$TvUF^p!u$$(Y^7H&4@D2`DdWSYE?)@hiF76$Mv;d{(c9c zy7()MDSusB8K~n?OcxZf!XS4_kP?MyP-H}|T?yT*-2gg1$rT36bGJNboJ6?D+7o88 zVqK%@prL5L5L)G5Z}qn{{hxY+9~skR``&qY#1LqaxTu4Gegxa@UDO3C&1C+8=3#~p?29P!kuZBp8$ZZ%ufJsr~VIv zGtNP;%y0JF7b6L>$1f(|M4A@ z`+<5R+8fg<*0jsDAu8cyy^YR$#A_zjj*{PSOp|=?EcyGmN-_9KKg`1c)YSEW*w>V& zH4d_h-{hS;oO#i2tR3!4O0jB3t}8oXitE7>sn$NVc}~7gZcMc0PvqT|XXVorLHQhs z+t-WU8O|N$=~gZ};N;dNuYxP@?q4J;2~fYt6)V`u4P@BLh$Qs!xxOuEIMG>cDxYXU z#(*THMk4xsF2qRGI;Oj|j8G zfI>`IMuzjE(Be+qrvNnB`Aqep<(Cb^jZBbI|ET*Aku%(>y7~1aG&-|f`sT4-R5AJW zl@;HFv;|t`?)rQJ|0ya;&G_r5iJySSTLKQmDW4N$Z3gq44^-jv`e26U_n&|jVzB=v zO2=MTjb((CrRc5TMdV7_riP^S!}qY_A7^T5l{AmMKvq`C+BckBU!(86H-276bX4oE zZuK#aaO&<@Z=3?Gb8~QKUP*)44&AEX3V69S{A zWRctyv!&ZJ;5}UP30gmB7%=zcCB3JHA+7JjA(~Q350M42j6L%wG}HY-+dQ>k7ed`8 zZw}gJ2OFp`Ie!gbBMe%M^Aj%pnrk^JrPk4xe}sd5o_^Cg`#3Bs{-TVGy9@a{$DQX0 zXp8Ha^pMfUWEp$@N8#y!^oOOWCl9aGdpMG2gE_b|nAf9)A=^2+BGt}S3LeI53_l3RLZiTLRtN-x*P~X{zig22X7DjR* zHv@Hv-;w(^)XvGpSCbY}BMWQ*QMi3eGBr>xz#!K0P*Z``Gw&*VYy;H;QkG>|@2nJR4_h!|x-5+HDQwLWc1MH3ywoZ;b_!jD6}?!{Q|zz$3kk^R1RCFlWe z2((zba+flUky??qTP1%7krboG%R4s)5q>Jw7>|vX)1!M3?nCZ=;e!72$R{*Y6a7io zt7mZRRwbYGgeKIj*nwU&BTUd9w}iIL+e;-7f3s4&j)q(52z#;tSnT*l7-sXl5HbxY z^)Y2m(<_2Y^qe2C*aM*=TS0Uzmf}eS%dnNmSU6{@lg+hKrB*A@@^F|pFNVIX-K5L$ zJJvmkJXN#O)$q;_8Uc+NbXrhXT-CfFvw!}oru%{Z_4Yk4!n!9P&{8WYTf!~ElNr@zXLn!| zoGtkY(Ue|*KRy`kX|)wP81B^Ld7_}#)l6RNn?}}-)mt2T?lK}bJoK??V3)ml;JOjcFPr7+z7i+;M;_c9 zNI7lV#E0cmN2M79c7uM3i=d`!D zFH+|=c+_DT@CFW^y`r2tlBZ9 zuvLBf10AczGOuPwG07Tga)sLUcK7$+Aw%cS!Y=7NP5%5oBLkh05`&%r;tZv^$iznN zKupU><+XrXq239#bL+~OO|_Nw+qmlE)EMbclqMPp2OZy*GwBL*9c65*kKP6zHW_TC z(tyLVr`%+8W788-oPt|?6Po2gY@UAmJ>$y5tKF66c6E-JEw;eJ%1h3yHRI|FCp~_$ zedNL*SsH~7ztTO-kYu8NTr+mex_w{?mNDf42>>!8f3azwO1I zggtL&>LY1A9wR>iua&}&fa^a2EdH%GZdsn+k&+0KcReou?@Sa$7?LJl9`g2Yns|``seb=umnR*@m%luF z6u+WDc&!8~3q3CZ|3>|AE&c~|5EBagJbmcL;K1i|$GDY5+jYeAYKb3!Cbu6t$jon9 zM|a+?-}&4-e&ve)98(Mo9u|OE0qTzKnJ%lO*ko7AxXm#79dXId6XJ+n}UQm3B6?k)& zQKsl-%`8!`AXe49uGni~n_Ul)u8Eqb$(%NI9Wc%yeV#I|cjS9N*T1VD;7A-6kF_NZ zqlp^BCO%(F!3_CChUOt-4Y27Kmz=!miR!wNX!)o)O9>=-#4?H?&}gjPN1;RtL>;4d zt&v*>+U&TO78C=XzJ9SsoVU*|!d`MDmRdN$3AzzJ|lPEb(|v4_}m}y7nzypQdSq zx9Ow4#xwkwjxmEBuBKbv%ysVt4sIWm#_p&&m8Y%7l@j6Yf{(y>=TNw%A zNI8o80agj3r6s3$ds!o5AB=d3Sq@`6uIQ^ZPIa%j?|jSoh4{O&qDfZTks#@V^*GJN zK1Wiv&ZalPg+P@z?e_F$Q4P4wi#|B|YRBNoPAo{+$q_Dd4e6j@I+v5<64P#*->@ZZ zG7hPyUGG#GtGuEsV@__>up*y)EzZ;Lkg4}-Y9&Ta14R-F3;A;^^n}LQ*P1q`*>FMk zcpP2*NGvoTQtX9S=cT@~JUL&mx9|2-pGnfragjQ1yc7Ip$0zE znxJIM;1i06=hm5ayAFMjd?6WX#Jqav`o6u7Z;4g~0y{@izJ6Q$1>VLy+t4lEHai!0 z^CcjV)vN2E3o=(bCgD^wwU~?3L15~}ST(bdrX4DH*=E!p^PykHVnQdg^>>b-CRU={ zHnxPJT3R5iR~JwdLA>PxY#G1vq&EmO3jiMep&-}$J$&A!F{HlwSm_w7RN!D%UrM~T zJd+mlj#GBI`=&>&jOPIY^%LOFBQfc0QE25Q9X6dJZ`%|Y{N?HbO)BkfyZgS0=}{_g zWp@C2w_wYujPVtJs$yLNUaumdi@CFti`iXPK@?O&Np*8^XdA;Ug1cM2@^^ z3TWv+UdG?(l&tS{a+Lkt@cq&UBD=}N5HYvG=DqIPsuT}uOg!1nqf=kd&hCD!M>EJr z%R|;Dpgcpxr%iv`cYp**!>QrW{@6$mMv0?RmK()S6$)v1Kwg)7Ww|R+_mj0=Z=0~c z(FboD^E`$sIRU&1y$2Ix%~fEy?0al82XMTjSaWE63$u;uu0F0FGZ7skMEd(Q26b}J zacJ>y#`Xfm`dmZ^H?eFpaJ2Nc{=<~fm~1rpy{Wedn1>gYIgp5T@@k}1czrlk4++@3 zJ7{WZ++x4Y2`@kfM0+zFDD&{{%#W#$WZ)JX_V4cXgNKHNVI4n6bchj8;xfIv8EcMt z7x$I>t!obMe0+ch4h{RQ?;DP6rR?Xh%Q}dflhhYt;&|ybNCFkIXZHgX1bvj4ErY6dZ{hju@P zAeh{6&eOM_65c(>Oo87O4jAGpWZ*JSY%AB>GD%m$XkIPjQn-Zkr7ar8d}sJk(&m(| zmFaZh;>>j#-V&E4Sx0xiC{wAKTrFWs43#bnlO8u}Dji7~m8PCG;Cn%#859OuaFAu` zCbN5|F?S0`(Nm-6EIm^Q_ZBKH&O^PdiszznA+kk<5f|SA!=Z019nXXc?R#X|p5)Pc z%%wg7ScN+#F4>fK^2~h8{{&dL()NZ~ToSwMcGCY7;68Y^R$yS|P}2fKXW!I^m$~pg z?vz=WUKj}nJW~>V%B15r;a#1~mdG2W2cC1<*>PxMpeeFbdr^MJ73Tg~BkUL99O*pf zpfQGHBtCRG-IJdFc&H=KE%^k6wvgVFuZh_`)Vn~b^ps({DV!j;?whIaeA~aMjI5Es zWcaFozq$2udM(K+16Tps+26kAqxf9&Si(9hcX-<0Wgg-bx!)~s>@+jl*v~8<+}02u zJfG0Z0s&_l8Cq8dO6RgIyiJNWmG?W$c}(mCeFQ%76ZQ^Q8!`V#gUKp%&qEGT3p;sBa`F`b$v2Jg4Qr+gTH?_13Nop7{6&@ z)7AK?u2SLRV|RB6*|&E4)Q@G|2dGQaNx9Q+5xY{)N_I`_X-vTM;8pz1FG<$`M ziy^557Ki5DWHy~e4kLSGblF`Q#G1zmXn()S@pmlOr-Zth$|LKUSjmVP+t^?9W!&U5>KC?%Jtbei~PI= zy}rw%J;l<}7R<~=D)%;`+Q(!B(|e6H6wk7w4U9)S-CQ0Pg!=`A8?A%xc#!+(i;y#0 z5|koW^Qy+gsopC}jqBvfINImEy<)5^1fu~c*T=IABzE$z%D5hDXfC}s_6<&YwQc{l zG$-5T#%s#^TVa$mZ;|I6nE7HO%oD%!Oc#J}Po zDW(8g7J))JnNn0G2ESQI0fFgGhi!7tsB*)dDk7$d>wqADLg%y9=cY#p_*qf_k$|1o zHwNqV_=lOzuvm^%$=f|%q5_g}Hvp-Tf3VWbbeB~pXCSw3zrI~$&#Q~qPLkt0_7Y|8 zUf7ejQSe(p9(NBPy%Od%O|P(m8P9I<;fBXG&+1UPk&$NuQS z@Ky8dH)3Tu-h9^AUHs}^=6z*l9co`EC*QKxE7)koes#iI+BFVG!Gw9}3rg@}pE{r& zc43gInEqy<@5B3uvjliOWXpCZFLeI8if}-Ts^o6LtClj4_{C6`#SDda5!MiWZ5fQk z?aL;P=yG_l2IFP}C;b7WA6x$15%zjCy`bt?>h*EJi5qcD zdrEqlJ7d4CCB(S2ZZ=S8^d%j0ovJyWMJ)7!v3h~f- zgdIyxv&JmszOCt>_B9FqV|(_b3aZ)u)ZKbXpLP%EQhStQ1}~r9+A6tR*|coBW$70) z&hcTNt^T@c+wepYevwc1R(N9Xmm zwtNgWw&rAC_54 z-rc9hYY?G5jvDTi`oIHsK`&kGQhMEUfCqEUL*`W!lh+7X}LKwatY=?J}8ABpG? ziP%Q1kqxzmjm(LsySBw;!gfuokx@rPv4wha9{0=>`cwAb9r3VmM3&= z&c1FY-6IBDWPiuBqgJZ#i93iZ&3%9aSX+WlX9x&emFnrn1hBUfk^};xs|=(K4L(m> zPN4_a!tR`p_HYvcGTNjJA_$%zoiJ~U<3?t7Z{zSREXkS>K_2ns^%P-Q<{ziNJcp?` zRHyFIzz_x7G_A}Z(|C#*PBbAn zJH3}oCO7S5ew9#6w{?)fvBy@+sccnm8nVL(<5vEdZ1Iu8uxMK@+WU)L=}gR={;os@ zDFP^bV_qF1MX4ceX-T~Iyvp-~vwcmZ@_4=Lp0C*ie4%wM^uUXlCb+sP11psBlI&A2 zK~xa1*fL`|6pB)B5^e32=5zd4h!dKIYuQy4GsCEHQZ5(9ETOGQ>MBdAy2eo@YbyIMLjZJRni3 zdkJzWXQq|JkBKyj9sXS|(4rh%=XpapKHLX4laXW@;X5qtUo^IK+KE12hbh$XixgNk zg{#E(Y=Qy{=vCmAk?^bJ=aC#%-L$`!3?6%LOVh79Mb*1apWNu^$KwC6oQRffd|xnp zk$cbD=k3N;{GUP51ogwWvL)mttv-*nyAc^n9Oz_iy!y4vD&)n(#9=(AWo_7wX{^@OQdug zwZzNgvo2c~zRi&w9sjaGi{z_Y97yI#s|_0JdO%T7vXL>q>E=GY&RDNIoW!VvOu9UW z$!C%2H0X2yAOSUQKrd51)*>0FZEr}AQrr&MGQU?bl9dh8fxRn`YS7J16OoX#+yftp zN3t;U2}I$G8|L=TXvPSh*Z~zYUt~7g7c8!aSIV}QR2P-Y zB-9(?H`yEoNI`R#uG}91_R)9+(|OP>wjZtriFMpMqSznboPc;gD9x%ck+yWCXi(o& zF<+yt_}Xtx*0BIskJDOoqbH^h`{ccI+C+SHm98zeuyRMD&9vm9{X5^7&jXpD%f8Uz zIxQS*sijnkXu|3r5G`3g1Rj^dMMIs;`41OnV})md?tuQer}vK7y$hVB*a?wxtS5t} zgX8ZZ`Vx!V7ER)QvUM!yugboBfpD#qFhxft*eYe^BGDT7OvjgfLG3md_P7%2fnvRU z=y)-!k{R&RO(g-#FGVFM8++%HPy#&#x)64e@h;*Hl)TdBkc6wepaD!AV>g7cN_;i2 zd)^3%s)5g}dI!irIpu+3OSSc}YF69z5d0z>=~TFoi}Ci(muqt4PnQ_XP~Hj?6bh6?^p33!|R&!3!E8$In7wBYGxN zB;IIl#ve4syjQELbXL09LOMO1roHAnuNyjVvX7@Srf1byZHpY&TrlY$@gisdUsilr zOL}E9$n)%(AOHwhZWDa2lI4bNbeis+!@!<0$^tj8!x~iWFUV-5us5tuaz_B%6+rvV z1O&v&EZ4F6$gGE3jo!HP76vE&G=<0Otn2Vw$4U4DV0;_MvcXSxrnnzprxsXLy}2u4 z?1#w?k==f`ZrIGVO(q_@J7CO`TNh#?D zOKo~7IW5mR;GAD+1DbXnUaM55?W|#CSCkWiDytsC7ng`uL3!cUvv=Ic(?Z+0Lomxj z%b0o3BKsvxxWw!tVb}yuA{9xaK~_wR>vT?JQ$UbB`;?I+cE@=x0peISpEt_LzacXI zW-;aHUKUE)RQr2$fPFKYuN^2(dZF~?g_@#38l+21N_8bs#OAbI1;VcCw>5VlXy-sF z)5U$B{D<_zAts}lKJUj_NSLxmq<{zbV}M-5!3iom6_U*-I1vt z2Kk9Xcq-Xv?h!g8NF2>iF4q_n>U)6^MVFYCR`8mbS>&&EiVldrJmr8b%p;6U=S1?O zCvC;$*{^bJn`JOz7f;@RPZEvzj+CC zVCLu#Dz>*O7BTxVWx=~e)sDI(#(Wcm_kKW`Mn~QW0C@F*G5#{ABSsT8FkI5slf5hA z0{Ih`%cU(3rl+_?xS{xk2P;5Y;I%IJq>D~9)3b25Vm3kFRiY=9*9?^BBJRVAvK#wuv(Y9c<8ayrXadS^3 z<>0GSs=JRjdSzVUlp}CF4XYrCcN^C38M8?dELOI`9#n6P7fEY4#0Xs zBDXFa-tubVp+w07W9+Q>kU+gw^t6jh(6b zA}vJ5%t%(Tj(?t~uo5!c(vmJNLv$RG_e48jN?T zuF^z9%gi(KW@Sp=TP>b9*RdY%WI@;Byt+joY~ynqQsiZ)Cu5MkYTcU3d;u|_$slg# z1h2S)vex3MZ%bnAwcaq@l7CMzhw{G#r;k@ki`-%yR~FLaS}2bXx!C2-odWbMi1&p{ zKF-S@lY1tgrvNWFTnTfuS*v}|4YWMj177S}&^RY*#_hCegI=_S`I10h175}Sh{Qm= z%>DJ+xK1UqRWU3#U?qc_%ihP|v}1-Lgw1OuENgex9wq0vIm4Z%1&Rrhqy>Ehk(0Kl zkt2bO0d2Ob{KciQc*FaTgJY}Oonytvl{~es=Z3}&?vY0rNq&61L*R(V2!0ePA2z?~ zlU?w1sWN6{*IvODP^nj5Ls1ET;70cmxJ+eRAg5mUK6@{@5A5tJR8WFS$}B8|#;B$T zWV@O#uvLeJERhmpsUA9QEa}*2)%2+J9hxdIYO(!##ot^J~lZua&zK+<;ZgMx=CrO+z zrO#mNkc+j~xf!OV`ouK`2psmSj-|dzYifOV@}0&WGmEgB`)2(xBU?_xn){rz`dX0P zGf{DNB8rw0xMIQ1qN9k~)v$2KYbbg>gxbBW>b&2T3XF-{rxo$=aO{T!2M4!!ADeQ# zvlz7fsyElICdFqsw(e{GnON`R2QBUp>s0v6vnk`{kjuX|EImVH&tOC+_tGCs%s$FR zCLYvQ^dXS_%XPWbGDvZETs3QwqH*z=T)p9|>jfn_1g3j7K=L;aoz5d^+d|8q{W$g} zGMn7{YBFl(uVG@)XL&FKYt6nPU@v}^r2!W3gwi2494H)?v~fDeB3U0ZI{LM%=fr+= zG3?n0*E2o#u-y(2d8P)>Vdo!&z4{4Hr(z<0NW~e}(S+ycbFnW)Cf1wZ6?VyN`6#G6-;N0YlhQ2Vi0TT%F);0D*GtJqnIbfl^2DI!;I{7dc9ELgbQY@;r&KM5 z{>Y41gH8MoN$!+liuv#3GE9;c3!bvvLoNK0*PI-^rG$L>IePo3C9e;w)eS~$o~5_% z9d>^v&M(D-+J$B~Ef6ohD{AQ5QdDMS&+u}UNSIh>=Xp&l%in-j+U$#ZG*0C6b}aC6)>F)>M%D@_fM=O9kadeuMkAQc)4 z)$nD>rba9*S=Y+dMY3(!Wm#jsBCu4Ui}8@pQI z+zMuh5S#K4k$gIvi|E+B-GhHQk{D)G-TN z9+0)p&l=g^AP7rtl*zCP#!zja_tg}>T^wpRoWf2&RE?6Tg~_fB`w6b5Ov(77uYr3p zEIu$W#s#8_FRSP~KPrIVWw>Pj-46lV< z6RUTjtOsL2Z`~)9ZUL6(j=iI^Z}>Q$SGD-v^Zchb|J%*bQp|$s^sfkze>U1uWR&&q zeYh%d27ko@Gx*H^f+zhOfaD3U*%u<`E-6hT=(d%O7Wjv+##fa)3sh?)A5ZP(Pe2c+ z${DTKPe63z!z)asi+{P|{y&mQR9MF)rDA9tR{+gMe>NTeff@b(`|hperNHG+W{D}! z_~!0NJ#i`ckkA|vRea+H*Vy0t$z6nRm^_W(Mg=C=YD0W=LL8xppqhjHc6Nn9w!q%;tydrP{P)K` zdzZgGYTje3%5Y$|^6%qSHq)}DS}lTNimlwQR`k(@Jq`nG^n;!%f8ek;rbXq4?3_*e zZ+*@|<>0!tJImF-=!@$SC;47E`uwp6k%B5z8I6o@tB+0gsMvK~Q#5JMXRye2nEnKOWpiby z*~(9u5nj7S{n@?!L5)ik$X#U3D}zhWL2X#NdO#QAp6}8QK^Q6qS1~u!@Fb!BpaJZ1 zbMY>~Tc0(B2%O2u7UsGh&hloZ(shMG(L>ikE6Y4KoScJI0#XbR(~y#;nOn_o)P&;1 z4rzs)+^;%tO1gCtGmd50uQ=73+F%N{+iT1%=-*?>AJ0Dgu-G!?LaXOjE!-6hL)P8wfqU`s;+lCBFC4@g%iKi$>~jP)JO+;vM~w_qV>$%1?9f_S&`B#k ztLp*56yeN#fauHeqa7ZY#5YL|TVG!iwlTJT*-&BA^43oA$H`B0+0;cP-f5C|g z8Y804$ANL9ak}nNMVDLDEPImlHX#+IR{`YK>>sW)KZq{vgU4l+VCs}Cw(1pIFQ^#a z2TEUU2~z;VX#up~{24eWx13R@c! zOlYm2ABSLR`R3%V4D0l%*@PK*TwGd**Z7T}gpVleAZ5p$A8BhX!}J$Q$Jo71PxTEA z)Yp~~AE@0wHv|C{mH08j&X&wltJ7KK7ZFuNUR}`-o-UY}&|;2LXuIdRx+ML z+!A<~PYFbMDZ;x{W$%%!>wtajY%VUc!T@-m#IB4uNH1_x*yn3}Ji5`tzx|jr)hHe5 zA8#f_Zs%sm^ER|LroNUmdo{`9X~Cys$jrh7F(QYH)P(?NkFj298n>g8IrZ~&-upgs z3^et=4;GIE73IXTsW_(yenyF&P%{(T;tv)~LlTV4rksye_i#EE&iQq9V+=Rml3(+$ zJ!EYa-_3coB)dPrFghvO&KMA*_N275v>1J}*&gFX70Rkb-tE}kz2+Gxc%e#VXw1YK z_%(5;y5^7eW0UB_5Pp4HP9}FsN6Pcp=D-c`0JidCf3@uVMqN$r{6HZF-CUH4c}HJE z991e^hZmXq`Sscbps-C^)A&%gUrBK_3l^7bW@xNF-8j>A{tZbRf|6?yk+LgKaNA^Kx4_n@XBOlcD4jpo&j6?e}mA6Xn#->9-p|`HRnl%_+`t*}x-X~3{*cWq0 zW*QKHESj$A#<0mCWTmvA6dT4bplkg)IzUzL^(UTPVu)YTUW;P4pU7I-nCRxjVC&il zA-`f^>#ME~Y3|UR%maa>1U8eOPb(EXQ+tI!yVNnmi;`PwVts}&_HnTb+4jG$K?nXTMp6~9Pq!f_nuKrw*8tn zN>i$+^iZS<2uSZJ(m{GB6qViyp%(>Inh+oeNQBT^AVE3=Y0^P@@4bcI6>fB5xu5;q z&&-}Z^UlnE_lNrfti{DjS?6_~?SCG}?+^&XQDwGiy%}imQAW?3^m$p`VCNU6yvU-k z@Oh$$3oz(*z}$@Mbhs1=A#N*V8@4BTO6+2OP55{(x6oSfDyCgDsO-iSXK}WW_|*9M z=tZ|JXZ^~=(Mny_`%u)I4=Qv@cz%AJiw7UeH&&Y+YzOoOX-#`xx8LP(k+OXaiM{zw zUcnmr$xqn&>Xm(!)F2~or8jAxLND0zR3+<>wm63nyzt;lY98}qN4N9mP&D*)w5N}x zEb1;#3Ty5x=k|Owwj1GzV*|?T2__vvXYsA|4>h6?k&YJY;x?$bl^tdh94-9p+<_4t zeY&Wqi`V8lFu0X)pY8HUO>OYblm1(+aLzUsP#rYa;k?h+MFc!LU0BHDz#|117#S}U zhpFSXyvqG3hv!b(r^R>TIE}JH_u55`+j{PmL>{RG=$TH?1L}c&pjDE?4p~5Xi=BCn zgQHVAkkZCQ7{l=Fknca!Y33whnlEBQYK}={rxbj&}+8Av~Y$Rb$-(& zUy`)hZ;a9-AMIy*rbS}RsLmao%<~Yd%sH^iJp_urguOK`_MvTfws^En6D z*LzhCt~cZqDZTVQ??kjt($*vGnRmShG{u9Q?3{;$sg~byAbkE9Jbn&@1%`KSUSF8= z16|Z5a}^vT&G1K()aZ+{yc)P~$;fyLlw}CyB5zeTQG{Hsftcf)9fd#V?H?2Kx}!}B z_^!$p80dA#eqMK73%8Q_(%owsBxM_v2Ze}@X>o-`(aBTog%XG^2LQ20^nC%LGkoB_ z-iJRU4E|lQ-~XL|{Kt|(+9HnMl0l&#lEHSwr%c3$&<_ZrI0V*AuaAG18_Qk#4THV& zDDm1IW&gx~bN%5P8j#637gc@7Nmf2JLrR!e|M3^wpM_#U53-(1QHMW)el6^w7CBq+ z(2I~0eseQa{V>aSoQIQK`#cMTMV!IDdk)`m$S=p=obN)+Ez%Z0Yt*L?dVw}icw{-a zhO<_W4Ze))14#VMkkVh=MwGqEi zWIuUi|22L^CD#|zf^fKmfZbVE%^6^DFxHz>Nw1z>zf7|*xVUL#cn*?U<&t@&U~Ym9 zbVK}kQw%kJdvfyv4YqfL{v^j z1_DsT{R2n&YZsW9&-436{llz-ea%S4e)s-YRtMjeZ4i@x{0*kL7ZnDr#&Echm^#An zJo6}hhf`k`e3=Wn)zVSwQ9VkY`W?qX^2c?a2soq6o5Y5K!1W8&U)RkP_7AqrkSFr% z52iGKTvuD-43B-b>V{yF_%`JA% zC$?&lGq!cl|M=XTpO;ZAzP_h?e}A37Tj%d*=f7Ofx;yc1+!dGafRp`4_g{O1^-~V~ zMCu~`QF%%Dtx%`^Wi5ZIJ!&jxY=Ey~fJceXef2Gt?DzK9EQ7TivanpkV!-cmaYKJ( zR)iLC|L_}9di<gzAwGNYr$x&rqOUrq9-ebfH?b$_?Z-_Of`*dL63 zKuiD0u_IzV`^&M@{@bx*IEBLd;r_-q{^i)Y8xflGPhJzq$&ZCe2BJG7Bd5s5jC)c} z&WQI{K^4fo+PFG+nT#bwt3=dR{NGvo{y%<~KkLiwj$Qv4<$iLg+KaI8Qle07J_R<9 z2mHgjboVa>W+I}ye~xWXWa1Cl?Vn>?7Haxm#x{P&&2JjO{B05cY)!`$`$8^-$I$u7 zYS{}fA|v4ZidPx zR4}9@N0B<|fU7E(BttQGtpf2u^05sF`3 zUXV6uJN%BLQBUI(WRB!=J&mZ}&xFIM+BM`^w{wJD@x&qclionM)5eaNs)1ZS($j|y zG78jEzpd8~^`E3`0_;lr#;GMx+)$`eiO7lqEDR>!AdJ+l)r|AxjWwI5*Lt4oSrSsR zeI%$XGEm!O(?UoXw}3?)ZPJ=N{`%^1!RsOTV{-hCU4tHJ9f_DELxFzrC*WW{S=_cj z(;M~rdOlHmwK_^vF;(>jU}?{J!L|@uI>@A z6x-9F`)`1Go7@G$Cn(6W&Qy`Z=CdfjLoFbyF>YE%?9J;y_OMrf<(c6tKm`R-7{_9% z0o>z}0lCM#kUGWL6ZOJ3{BNV*xX4@kB+c&Fj*E%2l1YOSpYhozmp2>W%eja8=H6>x z=m@vk`t-5E>Wt>wyipKLtIy_m$%axmUX+C;>Mu`d=tI1O;M*w9Jo5+MBbN-bE~d|Q z7y_H$n_7NQ8(1*wot?yiNRzWRy$zX^7uM@&xK7I|;c6Aa_yNUFd?vKPtCNk7F;``> z%14km>!*RO*?apeyrG0w38m9(_&p7u<%Af+%3$QvBl1kszDzI#0?v&#Da6n)k$e`Y z&%fwp#q&@8R4={x2CD&OteUot9MFE3of1z??ab$P<9b)Shwqmnh-4nrHr?myH9SCQ z?$gP}4S%MK2rNF6SinZ%uZ{Nao__tG{DbcOpVR^qYPVnD3D{5YgqdU2C{X)1s^+O$ z4%c7E6A___gs{JETJiDAuzk%E8z)j>F#X~;{4JgWY_Fhzzb3nBdBj^Fi+=I#ON_tA z;htw}X~#hCK}mq=CX?paRd+N0FMWiuI9f9(=}%hZ*Uy9@x(Kj*zY8D7;W4Kt%9DffxFiL~Y! z*Tc2WPxHPTDRH~>!4VWED^^>k$FEM3lRT*}tH;5XF8fY&=iK)@(+mvQO5pB-m&k}@ zKZ#}NHR-E^29BgUgLZ1e)AI#9Max-*Pu{8X%ydVj((Q3U*shu`ZW6|uchvOmP&4R% zTKw3ixiE9UOe^>z;-p0SOrbtMZ}#DWoPCh2)+nBd;REzj8Q#5yjc*A~o*HP#_*3_& z9d{?VBe6U>BAldxY429&*^{$HuneWApZ6#o@rA1Q=sASG7i@8^++p#D!Wfj!5~^M% zC;kJ)jpVN*>X-O9;dW5b5M}DxZtc(`KeaBCy+;OOl+p@4hP)K1e0_OidfEV-odcW1 z%|t*POh5JJEKW!_(?~F~fr$ZD?&GMv^vlol>q%Xw+z$>Jt7T*#=xn$+FrdRt9Mxcw zFvHOgTJ8y8!Ly3$5S&<6>2Q(EGckR6jbVnE(VJx)HJVN9sif`H!9ttT)Ec{uVDllx z3X!Iyscbylp2b{q&Wp)o|L4_N=yA{MR*eIW>Z9moIh*`KP#ywIulpF3?Dg(2b=Oy7 zO%t5BT2G*kJgIL#aLF4zIrdy5kjz6lSW16(T@Gujom1s}A3}(`E87wP=L|@)@{NC; zJ~`!W%}9^V6JxUQ4RY!YYTvUT@sD}kBr_5phrJ2XE8lS_wv1zU5>LVz3iwS+vLJ7{ z@1_(K?Ou&Cp4&y+B^fBKRZaw4XN?d)W@J9Z(pJ+qZ=U6oBKq?Y)|r$aB(od~zNi4x zGLb%K0bQ)Ie5{bb*jdqq-4uR$6>+Rl-iI;w&3Mo#WsNPIHB$>RmR?uzG!Q9Cf;zW^C6~@<4()Wrx|`B#SVYxs^k}@%^^Ea{OlnnG zxw=$@+;&Wry z+A56j$}4!Qba*y{j@zhd*dnLu`KKcd))oy~8>@wIABM^4m2yT+2{NZi|GUHEMf@t& z5|)9;5y@u(?%UL~2=wWu6x~<*&5S0ghpeR1pgC25hi^&FiTU8E z2EQ-5gWBwzP67dB>c98Yo#{Dsrwr3PxvDu!2eoSQS96DnuWiDkGKx}j0#)~~T*;1< zzOOmwM58p!b1#h-$#*W5_td`H60_?~XpT>7J<8!bPn<)F2V!-{1JQIb0;s{eSy5+s zt6BAvCkE$my06iKI)atkQGzu0jp>xGGg7n096i^l{O7g66`Kg zH0uo}^KcFaG2CitoaN!J7eD6Q|ew?f!mY29aQV`eOS1a|lK zXF?0*zHgJwNmqA>sx7#aJ2i!f008fm-5?vQ0XaQnO}Z|zyPiB`sYL1TlQ~rvJq7!! z1CA0;w|V6%%5B2 z_$(_Mj>w#T8Y-rC<|~rTb{>jFDLUv7^PK3DC&s{3HdEWFpZ1Xou7u3Tw2V;?PQhke z&s}$1oT^~mstzq7?P4FQAGBFL*mYuL;x!ei%H4dKt0pDyI(iy_2UYpjFV7X(8ABObd=*aEl5bNB0Qd#I?$dZcrULE%;Zd#s8bbz^TA3943w+$&}I`q7Z zVLP$$Fyh#5Xwv-7Jc_P5v-^2marMP0tSlvdcw|7=04>h=t=bAgC)a0jjV+xGN6AQR zz<{85lW4xcA$OcQipV%xYG#t*UO$MuiJY$o*tCMX>fX;@k<@IIf7zK#Wz_y99|_~` zL;f)}KB7S1QpamAeq0<2N_))gh|uG~myeN-iB7*;;T0SweT8*QS})o*)`(CJDdMIu z%cgIN^6{^Wp=5Xn$%8wXv$97lPQL>LCR4@9G5kUH=$PNrPQ9APpbO@vW*`|qt8P(^cPK+USYK}*C z0Im{TYwp_nv~zqrh}u!+j-m%u3=aSqQjbi~dpIu7Y(K{kCw0^j4>06)*;1Q1zq@&D zWBRe-g^P^v0NpzW6Fd<&OlJ@Ab5S7(>qp<>`E30|vX_X;_KJp?owqP_Lz39gZedXY zOm!vZeaE$zY0a&vt_u(QDT~Ia8GwVzs@T)%LRZSQ)D9_2;r@FCR>9)&uUi@SpBG2- zy`S+uC3OmT>Q3&}c&By=#0vh3Bt)k*9oOn#!K;GefM&drFA{||-O3BrT@2VLN$^As zMHZN@3VsC6N+^3*JCqhWqmxctq0}8(?Cc`I?AJSNUyWVKw&Oe4Zb1M=7(m zhvD|Y$ClerbtB#73aZMBvN4gII@}bRjxdYFjB$}5DvVQ`clO9wo~Z!)Ese*ek$-HN zr-}#Tf?fuz*HF#{K-iuR(}mt&I|(g?@b=#z7H3)rQXfV;2bc`X7Vx{<3v1DG0yJ?L zD{H&+psY^5XSJf2z8@V)A5PbgHPjd9MOPT;H)s!kJfM&Kw1|;ZLX4VoZjX&mBa0qa zWf{+E$+Kot2wUG57mHjXFc0-xW|-ddpj3C*L%+w*d-`aS=99a5WygbeC&kl-!9%km zK#T}JqXF_SYV<~<{Ne&n8i_L||{$pqKMVZ`p9HQaP>7b*Bp2KqX*@fh_dgCpR zkJJuLgcwcLwK6JaDJ>OA-0ZJE=#|De&r2PkVWUtXQVc1BRMhcXXAp{0lUd&cko(Gp z)}!ijw=^y?J6)**0x2(T9vg1;lI`TixJ%_c0r>9B%;UC5IDT#)G^08~MeZ5O=^iWONmK{V_)-fu%1SAR+UVW7uPoJ&ub|jf`u|b6_rLfug1nty zyb&Qojp<)(xqtVZ>Ys`rir4PQt>wzesp=>G2ymg4Gf0$=19I;)t{z+_^C)6Z5gUHO zLpLd?f6&FvY>PHJR4~)|4U(ZlPCTLnZX$a32_W)L7KHoeFg6W$>AClrjIj=mEbw%# zB#m1yCl<~1nqJ1eu&=*E!C~vi=w&%j6J32$6^P;rdE(TOVD)feX>S1@I1_6l9KFM~NwTo>r%;q(@~CQaNa zP3~(f=t(~~6ANA$-UZKim|@PLs(&bM+Qaf|wb!|XHPdp3!ZnngV@@Ak+b)+mgm6j| zceyXO0`_-5ts>0{?de^*DoaiL$4jSEu&F)j^jedgWZ!WDc!nwX)clYS!77_WEfl-YA~s| zNN4R^ml!=^OZf8U)8#;=m*gYg3Ps2~B|#$Q^<(GwFt9MBZ(UT?hiYNJMTK?G(()d0 zeb%&p-u78Q5W6R%YaUhS;Mom>4#~8kr;CQ)-bk_(4&65+9Syss2{_*i^p4y4XlAO3 zTb|AdASdDH-N03dF)7~4f?dZ5*Repky975{k!&=RadL!U<85+SLynu`IYZgWOSLI6 zUpnu2%nBOKE$K*PyjkF|n3os*H2zUjyRa{gIKJ05%pyoEXC=g>6pUl!faTQ3p(5+mxZH z?D;8krG@TO8jU+PdKt+MRb*3&Wyg>h##|PK|X+5{=kU#0Ux0qwE{7-#t3zXo6Ru+3? z%&JMEb%*dHiH&O|2fPB~WFDL7W}rH&O_&Z)+q(wv^5q>uj5H;z;T2jID;dqp`?P77*tQo?gz#AMOP}Ib z#&*T-uw>QEH%idTfa&~A4R&f{8_egD1Tyiio-Ub|F!xGWM>dkTxG1w|B&ox&pX3<_ z(_1q4v z%Ghz2AS8IqRItz8xuK`M7jq-t-F5w3C}PRa&Xz$*xSGJy~`K;DDX7a{v=#`jqLyu1G=+0I(2x zc-SK$!OPS;;GD~a?DO-zP9Mi-*sZpBE@fj(Lu1qA^Njq>YJdD>L#C}DpDisky~A) zS@j9M^ggw(Ay!p~Gq}N>$I-6}c|R%^jL<=b^Os+b`?n9Dv_?!<_Ja@lN$uG}=0MF> zqg%xI>}W_sKq_x`F&Ty(r$)8HIwYjO4sg_xj#tRrh!t3lR&l?-cV>^$hFxPQGXW5* zGaRX_%#c%rM5iL2jZx9^dWliETRCvSC)U9er;?oF!Lz;0;@0u4*pF{i%pX2a8Y~D< z{&*5oAiQ#&zVtJ1KWjLSdq6C^Yqfz%!Jf|K8p?_fDp71r~r>vkvFeSLN=k-a*i z1|#F;m{VqoUDyu2PBe&5xsn6Xqkmr$(?qrF6i~Je>V8+LukW*?HeGM61GKkPn*vvJ z3MxYh2+UMh#EbHDXG3{OU{xKIhf>ms+b-RY#v;@i@2`_o<}6=n^|?vZS8st0oh~k@ z?H_4Bi(vO!tLZzn_yXY6v>0Qd< z6b-9~D^U5jX5RIoIUWyLJ*VpkHeFBkqwV}MVVF~`^hOSaGN4Lh@T$?4K^BHy{WAB^ zoiH50h;Qtj7aE%P<)YVxL|>TvH4-y@C;t5eLwNKPs1|9;Vt8I$3G_gN3G9=wh`*4+s(nj^?fGF`96xCTjzNAlxCp)-j* zq2!CIP^ayY#qXPjil^=@&8$Ne9wX~XsrfDq)Gaj}5v4{tsv3G0QxYWGapGV3*kf>P z%G^6=a5~1QY^n_=`F#A4o?_S5P;b09TFkCYxo?ZdpgJ<%{&?1N8Zbq?VFl*ySdV|gX4E^(z=7)ssFTmqHS3+F3s*nVhS+pO20 zz@elIML}-Xs5fTQ_&`KNMg-q#j@+U%bzN8*Hx5*p6Th{FRu5udIw*1xQ-7U4=ga%{ zuw6di8j^B|BO3GSD`~q2sP)kN6AwZ+^?62C?VuC4`XzeCHJ*r5M^&@Sgno(rqGkGH zFc$OH&)%Woj5a~hS(xw+YPlDp$Hp(_CV^GVUwY70AHPc2(-H>HZdrW#fY^Ck=|e;` zIbp8zXdO*RNKsLri&~s-f;+Y=w0z#9)4lW;12$!Q;p>kcC+cXIWriAw64d6Lyu9bs z_XosxO0eiTwAOI4#4U)lb=0s|X`tt|vu@WtQ1`faT82mseT^&I7wj&=5IdntOgXtc z_CH0hj)V0C*p* zq4jmg;Nm;{1$T=@l?JAYp4AU)OQss=jw=j|(-Ob(D4is?yRnN`ycL$v7-MBnXq6v@ zLZls+DXV>@V?ngufhMhdC3jdF2k;vxdUfmdB9J~~TfSSxr&HL)`KThh8KgM!c=!<= zZcp|SkV871Gn{0--tA3(W<&tmU(1M!!$pWduzUDjS z7mN%wjEY!$8R&!cy#1@>?qZgl%vk|`5;*|e=n^GGR&K5}ZD8eN!#Z{wFTlx(Ftw_! zi`4p?lI=b#*z9hnReG}Z!r7%0!BNhhX6<~Ii^vcHvh~1huGc+^#(f|6{avv7$5gPr z1kFOd3+0F&);#&qxWuPg+vL4ZE?SPnIdQl&Ot2GOU$)!KyO** z)}qgqsNoaa<9;sZqVR?x4A{0{TJ~$UFRwG7ecaQTYKoThwfZ}^BXjf9dh+?;7ie2u zvK)+|nIN0pwgSESL3-M3|3JZz_xsg4L$UIK(P`&beVBKg#gMFH z-Ou{UeG{HKJpYb!0%|=At`E8?_>OD+ElhWrT7^8|-Td}2x25-+ZbA{QCr@34;$PM- zhlwK}pR1iwHfoJ1lRklm`tMfJNxoZtC+MIKJC&GpyJu}D&NHTCuB+GO~zD=v-DN(*}sm`|36Ja{~ObrqwD-H05Mk1)bJBP{6o$p#65+=|1A?qNa?Zs=ef2OY?te1)yiI19SL_uRzBil&x}3C3dgU z!}bOxPkmLtxL*E9y#M>k->vcYlkj&h_}}gYZa+s7^IzI4xx%`@-$wTY?_WUhA9Cx@ zMUFL;RoHx&DFjgxB9!RU{~*arYUD3^>jG>(&raQ+#rVL#6ytvgyRjia|Al|i{bNcq z5&I{ZSdk+V@gwHucQb^GV0Gt|%nCnpZho3)C~h;q#{buVqDdo{dH&e#TGQX{fmNv5 z|EW+t+D-D;syYUdejFR>1?rftJBLw+#f^m|-wa|Sw+zL2#(YcGcPR40ykvn_QQUQq zxF?;8tux*Tx)X>TR%B?g&_HAT_~%#6W1`Im=iO-7*YSrFijMv)hLx#|Rh?+gvef&i{QoLLv&C$-<> z{Em}K9jEI#`Mkln#OU%tE?3I4ij`g+b5qkzsnbfNTYED=@L}h2+cSX_V8ADS!Hx3V zX~UYbnJw<8XNUkGUZr!A#%E_=PT%JQ%204i=)lyueaV<)Qda-qZmNr?`-e^p<~#xK zX~r_h-hug6G^nfpPAJT}Ccu=RZX-6I$Q&Ffs{XoqZY$y4`lpT6EtdE8J>fU5iQ}C` zEByNu&1K z8+&Sxa=v_DA^*VSMqDcCBrd50qoJ0pIKYsqc5`{5^L~Ux%g*lay4)7w3>czquw+w&-@|VVD#{ydExQ!dp%kx?dF}tUUxz~KdnyI za35cDs+`Tua6=(Ydnfvm(Z07$>_T23^h4h;5%p$mzEmsi&FeKH&%{o8vRLbSipToKWOCwhjUi z&Y)j6AK&_Bf823_jR1VL`XZP2DR|IOY1ZZ3>kOgNl4iJOa4kSeX$D)4;UnaXTZHi3 zq95VUt~9OJ0edBA%(})mVUh=Rd$jL3G{=?ZPCx&HpZLQ?&NOIe$(&bbT>eTDk-uu1 z&?@VjYKE8CjMt@Iaa?Gc!0zi>46ZpoS(KNHHHBo3Jia^A)%j>m6Q~lf2{#oE5TCv2 z_}cuM=Wu~YUX3Vll#(JJ&czNij` zlyxjDFJ)(L2g%nwO%HDMJwv7ExWbr+{mU45pH`p`0--94;K!ftPO`n5`n<3@16&~R zJ0e<*=~ZCU?6!f7~*>{D5gT^-@4A2LlUSGj=Sqek#J8&POzpnY?SZckhF z94;)8X?h3G*-1;2`6$nFT2?-OwrrVgZa1tErJ9GpKb>5KA+jnK^N_#+JcbvS} zNeFn%2{}hLa!ww0wj0F)4gpR8~KZI;hV}lc3wIuv$pDQB4}n;!GI3}SVMnIjp6ar zp*A5DYY}wT5aT#j0cD_-vQUng@*%G&sVaUjrL}#8P4uFQeev-5Tw4pc=W7=at4VG^t{< zlhT$wd;=2m;6x?hdNvUkvXFC!%&+^~Gv9Wd*0nrZ*4@t95_bqUsS+CiVTE`+78PEN2H3z$C1qh`}+H$mNPXY3;m_?;0Q!!Vl_IC zKwXGFOyTpol~4!XGTTwp!u{M8G7vbbq2e69IO335SF;KXE6b%j*lt;ir$@=r*Tk04EGBGt(UEIA znKPI>Y>J|%+2!W}Z#{r4%tQ5cWlLrROCDEfaA}u2So(B8To$on8&u7OUgS!Y!l&kz zS}xV9(#J=-l4D&n#4s^Go2COYh92&OOvygT&e_%_RW7C1jVT^1D?xcwV)FHjJi4V7 zz-ZQF=$WoK%jN0kUMQ)yWmk}0;LQXm@$Lxe>a%*kQn#IOlDKKA{BVwQ#ARgm&g@gP z`SR<1JzYI97hWF5``cFumgJbBve=jkyNY7@^?8qI_XoM&k}mbuoM)p45l-JwDKxbefl7-p3xAl#}(TJe%5hz%pdl71Kd@XTVIAs z^=YY?lOIQ-a;pt3_NpWhOIGhTOqp(LUzMX*dCJELQN@h|7}Sg+hVlwA^?2WLU@`*V zdaynb3A^L!Z%!wc-)OO>og_o75J3cSoCxI+%|c;)7=>26xx&Z%3pH`Tqn zf75iZP=p|1s(Ye?ifn!gBu^wOc;8mVa0InbbHW2-o>R`i&=8Pg4IcdIi2|y+<4ct z&(-^F#N;7i?TbJ5ryuNM7u`J`8~(N%m_47d}9RDd{{ zDXJs-`4o0N`Q}EW@wBhv7TwZm8_1J#Eg`?91_gz=e zGus{J=m#%fhTwcPF^@$bqPWjvn2a=4L$jbJR-E-Hf%rd&HY<%3&?Pzbc3M88Yoj)q zQB+OOvf_Gq-T};`;|MgD1hvQjL?yWmks|O~^bnE5@hp4RREOSx;F7 zrL}Ie=9Sctm6t6LK>|N1@<&0e#`mg=%qhn;yX3rI78c|O9^KFazu%W9W0Y-J<#=Yu z#|W~_7Ws~&G|p+Z6F)9UP<^jry)(oc=fn16m3vAGW9Ji+)!6{)O;l$ z3Ws7kTRkdpEUbKK90(nnah`lx4|mIPzU0~{Vl(u`5B-j#NQ}#sE}{^xdaa{PR_pEH z>^$V#!zZ3{1C_R^qa~xJStzJ_oM&uUQUoJPOf}9-6}PsPAS49tAfeE{Nin$_5mAeE ze_j30s`dWmgGPQAIolk&>wZ!3qW*g--p{Qu){@PPCF4;%Vt%XrGb`+0(|f0}_1|fq zp5+TZ!>BsfuYoUYx}-^`SomE2Wwk}Tz8fz|Icj=%KApC%JB_;>TM!wqD}%It+8T0D zlUj3N`7opsN&$${mFTP63&G+Z{d_!VtU9Ur zzgkh5AaC!N2$ILpVE&f~(hv*l_}3Eh+OPaIe3i^!dXq<3jR!Wv?)L3ORRc;@IXT1b z8iQ))|3MY`_j1v3{&|&cqvhtzOETTO5sh2SId~j)a@Iyw%%KZ8{elKbnIX22lY{pSash$d-`>;H{ys7C| zR&U9sLvTXVIxdX{dwrp{b+p<<&lHufIu*99uTmGB9!W+;wu4tdi&zSVX!pkH_Av0At_U z@7b(VRuzzY3nL$W`$L0+C`lR;FO?jCzg%@Omr+~q@C0t`<-(^Bgbj8zV%M_XJ!te2MH2%T$Fm*RGK z3YR|d_#jie9x6yBqu2+5uPeL3Tq+Y?0y1MAq*`$JmZPzoeX}Z5Q9#_Bmy-LlG=vZxZ;Rg+6US&HM8uF$nL0>|Nk2!ms1BMkzCvVMSmArP4rTR)X zHC-a?W^WIpzD`R`9E6&(xe-=aKRH_8Fmo|D{DAT2z6dgC)#(jzxgtVMkfbtn8EfSb zyfD~7CTrxkR-RM+f#sl(O!Y#(z5WOVV5GnHPuUh0G5{9Bo+MPDsC+E;sRPW zHXmKBjm1$nfZc9?eyeQc0V%UzVT%qOjvFTvmlhNU8>zY`)#;mVaJ$|Z>;9rh{KT{W z9(yB^x=FM(oVD4FI>~Vg9YtSNR*(%-;dJ)S_|c*`eR9j2c(L`sk|M+#OO>9OsRax- zy07i=mREC{8T;oZhzcmFhEeLG#sm9^=yI_p<_^k~*t6N>v$BQ|RW6O(8gbZ#?1>om z#8@Y4*2uy%%QB?Ot1BdOmwgB%nhrpF%!sv*7-E@nZ5qx3NZQ*EGAL|Fpt*?9{9P-! zDAYUY=C1S=S3T82%!!eyzf&7&)x&Rt#$DDCAuCHVb!9K+h}tk0T8@a!+&~c#N&^)5 zX;|9(RC!Qs2OAE7lBUshm)!iUO}-X<-fyV=7DXKnZb!V`=(zd2;yzMPmp}_frFhXw`F7ZLvg)W-J z(&P%21v6SW8<`!Gudz1}DYFzgsvoi>+QY`_+dR{elwQY-;`@%{5;@CbvJP7}Cj_eB z!xA*Tg}@9ISyt4+1$@yb%EB@goKU}n7V&G zYF*jWMt*~13y8OuAGgCh%}NHCWA->$DL0Cr+2W^6>Q2Jyv*`Ip<>`eE*&Vnr3tMo?q{{(h@8^=6FOzjO<1P$c$HxzygpM zJv{nOH(O_2k(lWoNbkG}zI{d8vbGs#xfz3wE(a2cK`2y`i}GS^!8b$tN8E3 zYoaJv5m9i_pNH3Y|3)vv=ADK{5nbaB{ehK%B5QxJ%j6UPX$cb``-7DHd%87o;gxbs z*Pmda!;+ zY9K;QjUU+D+MF<9nxtvENb0@WURKp?hjJ!GR%+{urqw;WIb8Zl^otm4@G%#n)YK8P zgea;U=-0b(1=@vccDkH&opy1iN+n4`(uG}BHnYLV!sVDUepKuB+jjf+tncV=89%?j z*j7LHx)E6k+)96ZKE>@AJ}ebTmc&uh>I-sJCX-JNHYrHbGv8wf6Vya$*3)&YE(`~7xKT?r;T^^>s)L-jO)*4Tp>SC@=ep=?g13o9AWP`<{?atTadhXT6m-i#^(QK&K3< zW~i%I1=DETk7%;02GsGklc`D^bXPi6Od|#Alh8z_qSC9M;2iCMAnXBy2XiZYT26a2 zO-E6kCx3#SKN7Vi3MlthX2{3xrNz|~ z_f98)>a0F4fx_EXVW89-Qu{J;wp|){i30knB$@>g5~ba1SJw!w+zH?H5d^xI zu#mc!nZE9yr*OgEv2+Iv{g@pM_Krb&^7BI9bvrCXu?l@IqnV(uU%@d0eO@5rY_?FK z@fzzUepPXZMVRV$Y3}T!ja#B!7u#|Ur3v|Qa)9;u}%V3OQuahbbOrPf9~HZKfwGwRB(j<(;)Ztd<#%J{NaxIxOehE^WT$ATL=;Y>bNw zimCInV(30(ZYikJ)}Nl1(^1smB{m%sO*;^7$63Jz1rvz-vdf@CVRINFe>&p=v!QXl zGLDED^83JOz}c7LR=KFVcc&S6@Y%&}_(-J`Tw29x=n16Zco2r}RzoR$F>HEVm5yM2 zYl8L!9UI$`R4JV2S;YNW=L{dGSw*#gCvBR~+*+codKOpR7u$>&@B!d9Vb6*k7|r>+ zxrrt)>(}5jvEaon>#V=*lm2t|XQUc`?iY%S8h^=fkU$8n;ix;0i@|F}?2kNF8~#5B zTCCirluxwLUb&5hF9z19+jI~A7}6$B%@Uesvsl&!{h?XjIEV%0c>mn-lg zuLmC!ri^s(QTb=k0M(IihguGQzwGZO`THsP?>i1E>sNTfi21jl0=oZkZ3&6UD0D3F z_=N`3y{r2}OLv>)x`M)uOtn`xvg@(Ri{FKizjouE#4WcUMJCk+*TJ8Fp8pl)iN3}? z_tvkr0alSQd;xRrbc8omcZn0<=fqG_w~uLw4M-Xk>0V2;KW&go9xNeVKp#@j+iIe zc}aOF`-S|-+(UKNm!|Cy>x3r!lHqemZ$V}fka7sJ(3w^xuXXo%%WSHLT-Cp$oH67< zY!=*ID?$}S!IG$wyM#+ftmq`5S~ygcFSRF6D5Vo7P@c)xth_tWaP7>*PxwH`0@fgUW~z0s{%#xK)rtG`lCxDE zen01z1dQn?K0U4iuONzzi)wWW1B^>RAX*>z8JnmBmH6x&-$EaO`_fn_T9_pD3uwZ# zaqwjL(PsCXb>*|IQTE#!lR)`t#)XM~(rt-;lISC5K)m^QW32s+cZ~1kJ;_0mgD3wy|MJ}Tb^Wf#BH)~RfnxGxpfB^bArFf`rG3+w@a+fe z$KOkZtB1(IDDHk0d^bZ+^A;WMjx#}>b8SVsZqCF%C|Pqdd-g&8<9uiKNCTHwza8u+ z1HF}1#M8}la@XqZT{+#e2bD>l>T=#YQJ6s>= z-GTHJm*6&q!9iTzC7r$d_SU_mluwi!5d6<_vc_sI8FE+pJIfsnyOLh{o2U7L#MH$+ zs6|=gUUV;@lGj-69>jX*ZsP7|EX($k={BQvJ8LE02~mb%540doy7;CG8oJp+tWIxyBbHSz8?kn)xRtv?n3 z@9E`T>}hOcjZkR`zdb6FlZU$$m@hwxZTVoRD4;s|^=o~&ZlqXn3QgP!mgd`*#^(Vy zJc!b)WbW}^sgn8zZICBv z=cD^#gTXwCrP_(>p115E)d< z@%OkEZDJEnib{R|UVGABPsiL!*6R(nqa}eGl_v<~`gEReh-dk|oI7tB1hz@G6ce+z z?ACFvbU+20&My%_hx-@VM}SbmctlZ?UD?)7l@233A$2J`{Iwi?Sey(U`Kx^y;>r(e z4zrO-eZOJrGX5txI}S}-ecEA}MV7Dh)WV9bf}2M*Cd4=I_<9m#Qw{i>#XT4vWDBVz zN+h0?aC)((U~=`W8-dAgORZ&$uhpR6!u%lDGe<^ps397 zo*A-&z8p?NjYA{MIL}wi#2*%Z{6j&3hg^Ip&JXfMyi4L|50wmB=(mB(Cj9(T%YmtB z5M47sv+fB?gG+?pR(XZ}ump!-gSfOlODYai+`J}3-J<==VD3{HQN`HQJpuJe0MoC# zl?&5g4S4L%M*EZEcIq;9@l!3Z&bGwh`=)u)Ld0ac_faFu$Cpb7f`1=%TAD5?Q6)8P zp{GM9*9=Y3An%zB7`#%ffR$&(DiVY^kpmTOoQ?&Bg(MR>DHKFV1q3?KaYWYZ%-9r{7 zHTZnab_(CJE9bA(K0`0>-vokXm43>6JATRZCs`&Zsk!>bYP_yfxNnx zz?UNZ)Li@LfOCb%kwN30W)tpr#fEQgVR5WIMb~@*t33ISMKT4EA^(H^FrA4w$@ln7lyS5t7%V~Ig{ioInO%l>?=4WjygR*e;d<( zR6VAsZdkP{_P}!TDJjD5Ccbd)?9{jW=c%M3wxFT_P5;-#p*kcKFknl=FGm@aC%r5x zQI9d(Ev@XbgOwFtpt(tvx+KRLvU{C$Lr=O^aE)G&k#%&<5q4IBGr>a$Qt;YXPxT3n zO;yyzclj&6fs4fOkP10GL&0w7(*mwe5KOaVqX1Tn3V(9}uw74~i3c7)x{w|#N%}b5 z(}*h9e6Q9K71drlara!O`xcO3u+m)QS7+1Nq}wRj*a;K1Kc>=}TdewiZ5NmA&W{YQ zzbmRUkdzb-kT)9Fx&6*o=}lqzccQ%3{_Ij(7u4NmM6y#I>oi^qpRI(=aYB6k`rpNa z5hokoR8#=6C9KesH{BVV=dJ}wviN{pB1T*AY$-z1&2vBw!G(S66)0CdcbBp)EazOP zVUr_!0<-V`8JU-NkLKa#{6?*WoLrXel|gkfY=|vhLmle1dG*^ud|o-KPO2J%x6?4R z#rA}MAyT{3&xp}$?o&b{SH7KZhy6*``6t;QAhXIxW5~+#xy6YL;H#0Y_j6TS;8MZ< zH>7_t{iiQXX(uAsfx{!o#DB}R5G5q6=QLu;*MLE=TQ0;(aqqCMq=vW&2ml9VL^kku zb05uU=*>t{r52nPRivY9i2*`$I1)9YZhA22>U{Vg`B^_rG#L3>Kbg-y@=mF$7X3=Q zOV4)vI9sBygDa!y_Sfz*@{MLoE1^7;)0+y&YqcM#ZO?DF)yAawA)P~>DzS$~7@;@n zx&uh9v3`|%D0oV2Kd;=UkDbZgy~4deDT0b%o?{o0f-_phP)0MQU$gu9p064rK#1=S zv`0e)%bWcLvK|pKRu&v`@&UC6jenBSFp5C@8m`QDL>_M=H@)n_IB#zWBG}dnVaH7V z=DpXav_$Kcjf&2n zCPe3<5LMYl?$1k$QZ#$>Ak~x6@*zvQRfX~OpHUo-d_q9HAS5t7`Z~?P;qz&1g+GDth!0cs9_LY zY9sc&^z)pXPqxgTG&J*jIQXc@i@y!Hh2XOmH%edPL|2)$6EHFexB_g<(3bCE6ga=w4IB_;K2^m6fzf=Le|gi;`-DWbPlVpx5TTe^J8*>`n=OJpUBo*ehrLef`=E-V{zE{*p3dfrH0MKIE_)3Oj& zg{B!A@QI(7&H|!(1Qt0f$Wz;?sk_6Mh_5$)cjiF@ijE6PSLU(nsIudt$=tq9Gp; zs}Zg2CqPXe-6UP6XJbRKPpd6JY$#7!xeKxBNnG$ISU7!2Zvaw*E{Xvcjr%>U%*2Sz zj-_0I<}o{>DXHr2<@Dl)bcSS-y8tAfY$KT-0Nh{cG(aCEp)QEfYCIT}Vk>OU9^zi; z1mlRLdtF;ErwQC+&I zM@xiJM7`ba&yk6M2nd*Ky@|6NOh0^u{*HGDOn@tGZz5EEw){xK>(i(dg6bJxkaTP< z9d^6Nq6@i6$KySMAj;AxrPdxAsTo?IW_X2&xVOsy<;1&?;Hh&@+)4jiWtIUIc^_6C zucr7f-=_grKzI%v9Z1Z6@1S_<0KW*2zd*(?9YTOO%fnf-;@GybZN3G5=y4io{n2H{ zmxx}PI{(@F^i*auaQkB&GiS%PotDeHnx;H>YI|(qM)`DO*ImAbAX-0OuC+luN)7c0 zDRwzYrwccsm841mdN?afb~2VcJ?pLm#Yl@)>8a78nE4|MK{i*yeRN^?yjOK?^LSPz z;&L(+eyA5vH&wcUM2<+_D@jpb9+B&x!%Z^&kRbEx?>kS=DM;cdLeFmuJPfZl?xw>T z={uFUA8bHV8*!5JKwsd`+0IzgM5#CR6PvBRr+n^V&T5DV9R>2tfTA)u;zmW?qO3TF zzto0%&$4*(GHdhpor;<*n_BBY_3oeu@mcLtzzbd9epvL)(0_O+d~-~5+pG7zhJ+jp>yk#||Eh4514yo!S`04?4SubaMVY;E7HCaGl$4P?Q*c zLtiowbAG?N6&^=!WoDqy!1E~T({Y+VGT4LEk?IFjAq|q++eo8QnhP~e_p%6Vg3k0& z8TD(QNSt--C{&8~@3vjQaK;`Z;@Rw`RGdbWrg;jBE?1CSV$Hi%1qI!_J*jG32z zj|^AflL#a|m2sU^HHO7#!~@M&OQV6RID^~wo-RPze9+;^#0ngypS~C~hfZyMSkV!J zLO6+l3+UZN*aX<-gGp-v*_W~=(J@3!UbawZ?SM_l2aI|kOC#F(ksJ)4v;^1m6Ubrg zj5QWbXcj&(rg{O#Rl83*3&788`jUG*kcRUH!rW}LO_ z*n~{Ai{>IUnXv;P<4X;c7o~oLcE*XoGKZmzIJ0(s45yt6zFNO-2pSXawBk*EeW|~9 zND|7P<6aiw8R2R%A^vh;PMqNI=!oON)?GD+qeygmUUm9>kJ)gai!YqKZl_IVnIkne z3nmczBw2D(cEF@WRwW;UvlA4K2se)RaR0)`xFd%cozq-G?i9g-Bo%kOym(N0avskm z$+Mm*H$==$JUe?=oJ6BF(prv5dTL=cZmJ}BXUpkF>i5Z;n!e=2;gGbQnbU&p!uPq^ zGSH$7*6l7vRY6g)&KfaI>PJ797VVI00`w1knrBhlo16V=&UW&Y3rsrP-jU^LDU;N- zG6gaPPB;B;ob~6sOHg{pj|H%wEcZ%ELRLM+#^RmQMeoqq1Fjsr>+Kx^keRzS23gq& zpZ6ks^>|MRn=VgG6uK}nmRL=iNbkUuaLA^4Xn0ZaWPllTERnvfB$f)PPTG){Kc{^d zf|8hgBG73^z5Et<1@f(Q=bp6Cpf{(%jlW}|ZoUdAJyvGItZ&Nf6Y_Q*nKY{Hh zXzF5#w9djX`ohh@72R!5y6o|j4b63}D^UICVLUI>YBR{fVyS@s@82+{wZ1MbjZRmr zE^=E+-q2he*%q7?+T!{?*M|y{((rV=brrC81si|#I4*!5<@{2&P7=@EZsuQyv(RJu zKo=?7Fk?GW6~j$-&7CK92Y{5Z&v*N>8KG4vF>si7KI7q$;4!sUS@(V8nXcZl6X@=b zsJ7Tuz^PxKZ-t&gVJf2|sTuL_BZsK+NG*}p_CF^6v%HLy1yyIr?4@jDrfmE#4&{GM zT=<7#kCdPCm$`4+0zisUk+H}8@mG`R@2cv*Hi>B3F2@uA6CQ%Hc3PllZN&M5^Mr)p z*~SAExC(;$mbKRRpNenx;>z{(-n0C|&b8wdP#Jp7+6!f$KbIDy?G*&*ba}$1oB5); zR(wPJu)#sJi|D6K>%W|vUb?#PX50|$n+ei)W;&2k;jm?UwJhTl(;jwtNUA{W92f+Q zPV^pwgLZ@zYH9XI;M)iIsJ#@Pac#uAEpWP>+6?9_=er#NIXrsUZJ(C`Z*msp< zifhxJKXHm2S#U)Zm2O8TPo~Jy(1yfwF5748ExnU{I#ea!rYprTu|?Iu6RCn@*KoC8 zu3Y+^z1ZB!a*L-gM?%4dgRU)8=w-!L`-#PCL?4^qw#Q zV#@h7THm8pl1Gfyz*@|Pq%;+?@r1VHW;r?4Bqc!co?gOJBP&&dZF{TDeRgur1z!gO zi|PzJp_vNKHr!z6$dI)*r;RIKW?4kfxbT-mkFBet`C#Hiwt)bss2p+^a3GorNct}P zGWa_W49M6WR&#DzYe9JDoS~^SdsOo@!b_EYnvRJ)3l?&RH#lON;#DYk{td2vCS%O5 z_OcpPxbgVY(e5_qaRY76SM-}qgXx{x$N9C^n;)!afi0I$FkX*)x<$2j5n-EPOe{MfqV{iiw zUI!#|=@|VsIP$rKk1kv$y*)RdA9AUiez-u1m{s$MBF=AaaeL}PzEEkpk!4-M4u5jK z%}Al9Xn1Nfw+TM(t`=l(5OmN}1$|Wg`5S!+`kDbsJ%ZSmX_Y)8o<4cXDl3m^JHIt5 z?k_-~2`zVBacxE%c_h&lpj_dhNsnKohuAvs!floy$Yp;mzD8c;G30`^@Zx&j?}2GK zw)YjHf!CT^Ywj%6drLnjZR3c%yc^+YqCw+`O{f~0`Pk5eJrlC@wj%gBT;-9I=H;KB~hxxu? zT>as~5L3h5|H>!wXQzMw|gCI3-O9|D^_l=f31BZoD7<#-KjYgd%f(;{Q%d7Ayw z$f5|*?nbzukUi4zBB>ocqr(xkN~G{73e7hKj5meu4u|hs@0p*Mx=Q?jJwUNlTTpDU`}%H`F_PBidkHAX;#EAZ{G z>W*uURB442>F$&lp9>49A2lY(3L^S~Jyyd_#2)g}L8d0YL0-wX?O{cZ*AT=Fwa5B( zlMg)d;8FE~T9Z}nKZL=v@N4Tp=92)HcepX}<1uTGUIVE~@$%ScemQUyI94U(rY6tV zTjej`Uvm6O=2Uz7CmG1`_lHSVXDEYz1bSp*T7+pQaonW2JW=xpOavgR zE(*a?w}-l_Mu=^hj9g;UFQEx|U(Bc&!g8JdOueev`s6w1G?^~|f&|p;h+2D%om7T# z*W=W@W~`>!Xlz(;{_1T{V%~RhZs#QDdogo@JU$hc?|v%gVJe?tnC^KRjmUdZ2o4K= zsu#V7b9q}dKE|T8wL8&QnqQ26FH9o9lOiqw?0^M>s|NSdJ`ugPp6X8@l^vZFlqE!a zgyitak21uh!en@Y{OE_|eR*)LpTH{C?8D?rZDhVz{L?N0ZvAhxO3FrA-u|$)-AHh$ zZ8*!ilG7roW?JauWslfmNjBZqu&%A6sbE34*%F$YwVaH4FDImV`USSRc({c(G$$TP zO1){B-a0u+XtJml-XJdr*u0;UCaX8^4`4>YWObbR6gVG+v(YlfKKW({U@;!pt1*Z_ zCmT1#--W(2V=2C6*lt9=xdBb&Zs&&B(!3QF!!gj43}9h+Y1E_hVjIJO=jC2r3X-=S z!+%gaMxHj)3FKS_!f3WRP7+3Cqsz_g%gqThpQ9#q$aTI0qJqQ}sG~m}nWvXHiwjEN z5#}c1WpApDRF`i1>$B4Y)53#;(cAAZ&|QNZ$rfhCrcG+yr@CV*zK!lPZgS4NB6tZe z!pYM|01cLnjGH(OKG0l0&g`we)%Fg1dg%w{W2z!Vo;kd;5e@#RdG?Ko5ed*f_nvgY zSgUlS@M_QQCUqdFx|;ztwX}yqIsu!fnsy%9CcdMAr6{i5y^I>kijaLjvfHPnD8YhC z3km#7uL;@I83*l=%sPr%9A*uYnBJ*9DH{7q^PpE=^xDzwnB?@MLOmbVOJSpdh=R1r zdi^uPoht{+5ZjIuSB_ZvrIlB$Yqi$s6Aylz^#k{kQkyO{gPTc>`)zxcle;p`V~kZ9 z{d#n5;&O7jbSX9RCvY*v)xEczw%ORkG`cZ0X1#HU(mlAn0 z*VC@#9ECAfZJSEXu>)gM6a7u}aQ9Q!586|!a|i3*fbVmx6Ek5NTX-3s)ha8u2hPEr z1+h1|G-8RtM?wt4)`}X92ktuL$dwG4iA^nmu3ryfMv3olKfW`raLHO^VTW-1BVL1VMU#i{9xwe|W~^-SN}U9tB!-5Fzkum%UMxhwPrdC+(_ zH+1`!M}Ino+L>}fIw_L3*#o0Pn%jaZ%PN{e`-7sdiA=l;fQm-;$s$~|r_MmV^c3_e z@V4UNCT(Q!Mlo*UPEk_(PHOrYsa!{btNL7J2n8p=bGZB6a`FZ<(ZuGCO|P*@mI0KyDA{$}T1F7hzuRcrfKD|Ao;8|C_}nr{?reu}W@i3V3CzFJfQ3M3bT?+rJp zU(ZL-2|L0pNnG=4{I!2>EhY}q1e3MofTRe%Ag$Vtgd%p>kT>jlXz|+s|Le|t#eg^p z-=m7OL6N(k)8Pk^6O#F~r>2-to zw_M)^)&fZ>5OWOkfabIFCnJpGfw5a)rS~$wT;^{hpMA)Y&Hz$>hn5 zAq{yvVSb#Fwwqp;cL-7zX6^dti0hx(SvjYK10>$lj zN%-%#=f+}j306tFWn1;SV}$u6@00#8m2C_rnC&nNOYOx4ze0|C_N#Jk3%z^JV2Xbb z0F2-hhOlw0!NouFC1z3Avyu1t$^!vGPRTVH3Xvn$u7>(sdr}-;&ML2{+}&rKxcxcy zbC!!_OikZ&RTzIO3=`HPOuCMw)EL_m)_g4cEWBVyz%OHkGw$a>q5GXrMLo3HTNBUS zywtqJ&lBX{gB@o?`D4oGq~5pvl2@SSX^bd)KAP?&N3&dIy@}ol>F<^ob__X6?Ybm1 z??#WjEcRsWcjoNizhyb|(S{!v)}ukbbz|j&@)IAV!pJ4hmKSNurKF4A?CWa;^OO*# zIif)1T=Y9pF&S52-~gg=)VLj!2YX<62zdSZ`47f7#i!aYLFMeiO+Naap7~8DXGKUj zTneK!!tovY@kpj&D4Fs-QGE=P0H%w~DM2R)eLW^3*@J$Hed%gnJ-sC*$Ag$W^F&ti zZ}MNN<;xnAplt>LOmt3TH43{=uO2*EyVB)%N0H5j0h(S`N4RuXvw8uy+I*hJwETHQ zCNZr;18&uDRcTOs`NnzAUM@6yd6{rggv6Lm$gdr0k?SDC?G9Uy(`@pO#{G&Vn<7U{ zrdJrB@#iNk^OL7ctopJEyfU%1Lj)G5m~Yc5m=IleQs&+CoB}ON@OqOH+WfR&9Vu6t z?+SAb2eu52{D)q39`DAaWeFY{W1~;L93N0!zZP`!`l11s?c}JqTegtAr_+oJmWK^K z(Hec90~t*DRff_FL8H-g(tdjq57RkLcpxbdlM`z7l^0JiqGvL09#Wnxev~$=s%Q1b@#( zfGx9bZ1e*s=wk-D;PBVAsqIj_tgfPya#yr_jojTe&aiigm?>2I}Z+61@c4xEJ zJ{P3o-)#H*AGRPt{TLjTR1XyWst0Gwu?GcGtO#&~k>sv+M)l{~!PE_e4HYf3(oF(t zF&33;(t4*L7+gSmYfqROd4(i97znj#G%|xu2UZrACWJn*x!tsx#f4*^puR~Ogb1A- z0w-%>iJ*;%O3}`TaXJbqOSk)=SKKkt97yieV`k954n$Eyv&62!-BVM-H9@FZ%B)+7 z2!`;BSGY0x%}tirMfH=ct2@X)$%u?G__dP=t&vx?vn6{IyUte3LdrW8XzSLHuQ`@sjExT=j75t-u+;RRcwY2@8a2;IRr6kp-^?OxGvxY zU5jCSM`ikx&c21MAw`)z>!iHf!)&Ds)-%tK)9yRlca7{k`9=JiOX`xuy*NjBF=W(A+zsvH+=&_@S!d-Wcv_YLW zky&+P=9;?)n&*M=)8Gbw0i5}9&sJeiSbpu1Y-L_)1rwEQyw|KZ6A926vy9D%mZ|+h zTpDt-*CHC%nc3H=puk*P!sh&15{z>1tc-xPyb+#`7j63vmM7Mc*l7yJ8}^kbf(q5Z z#~%FGD%c%Mb2+-acG@Z{;SYglg@GH@=`1~f5T`{y%S6;ea9FrT*-pLQb=+=5b(;g7 zPBGM!FD5=AFuj&Re_Cpz>oH1FP0~UGPi=1E{^O+Cu0c%Z&iuVO3it~49kQAIQrfA( zu9TQIfw=K5O>w>mWy!w9Gvkl1;NhWI70#cTtQrVYK`cdI`+m=Aa5JvB3r}fZi&m_u zY=*uw6iEAW{Nd2NYV@s6gEKaYZ)(+`_#2JIXOS_9Z0TXV&>9m|@mxzN2ROw8&f4)F z>RuN|>g;IS!)gQgx-3k#GIay=0#Cl0NcRTC-D!JjXz`exTHD@Rzrjx87=x-idyLS$ z0{JN_9Zm!Q(ZMMQ2iXhsUV2$~ZuvUv5n%m1{f3d^pPnwfvM z1C>Y{!%Z4@>?_DQQEC2WTwwd!whTOfM##yn4I6YQd_)f<=f_`P1TqlIXB9twu@ZDJ za;cixJ#5LgDJUp_3CJ{3y9<-8a05cG{#d)6B<$mpO{)IuV|3E$O^w@rxxE4Amp*b= zFhOj{R0O?}iyMj~|0G3^ec50#TOqZ19xX^U(bt|`0dDkf<3VbSwJcjs zKk|l|OYVPVX(UPaxSqf19T-8zrx)m73b}4mL)@(=E_cbP$4C!u1!y9>++!`w?B2I= zLlew!txpNnLS0J?)bp-{%1!zn5e?{_--+Ic1MltS+)8y3PYN%eKoO zxuc4sX4jGm3o9w}d@{|hW zaQ1?a`_xOlppAxqO4;l2%g%LWQ>>k=zltD|%$_O<$fIOGUe62g1CI?|rKgNA)E6j}>a()zci=&A|aHpRIYk z_h?;oORe;+$??&cs-xXNUOz0iP3n(Cr0cy1KZlWtq)HgSnR}+rYh7ALrU7@b#=Vp) z9WzrBYZ>|-XXWNiLSc8iFOe)?zHRfwUyM&`6&@l#c*kxb;2L1+ZnudRw-P_2f;_YiD!vPm)D{4;VOZrNes*MHJ764D1+OQN@5E_)69-`K*+ctPp_=Kt!t5 z2r;?5AOVrDXKhDoMSC^vRlR@!1#Kc+dvJ6{zr9#GlNlKswRZ=y_*!z1i*jxVEjd#7 zPYL?}=c;c+%&+plO~oAzlO-8NU1A`SbQ}0pOA4k*WXIiwXq;6xYS;VO)K?=P8bU}6<4PGn}P!hNKX@q)l0NEv)T$;*P% z`RGy_op4#|4KeFi$fJqiQ+)(_hX~s1>3RRkHV{VKL8CKF%?(1Lrz5I+-Al{jak%$} z)0q#vr6p3RCdrhs`_@fdNe|pXW2P98dsuamVU%EhjB}g?D)suNlI$F|x z7B7tZlPs9^;bvaADcV^ys{C%iB_5t8><8TgpnLmuEVt*cO8(OzoQ8=5S1JMPdYH z9zHMieD#USa$S=OaE-WxxwM!fq%!H*ioj-?~Nos8+`6EOZWr*eUi z-bZKY; zdj>se`ut@#sVk|N`XOMJ$>1VI6CisW_r6f51>CiJixgb`bWRU~THO6@v z;fX9<eQ$j9z#QrMN7gULXK)ph(lqV(sc)Z{>1OnxpHEwCuq)uq>vqlToZ9uRtWu zMK-r~^43b!>^O_eTknM3aZI5~Pa@*G7FU4#i;xbrM>F{Pf?y$V2}E_mMhF!qEUDoE zDiq<3&3Hz-j?~1BPHtyUVFapa&$qj&(@6Nkm~7?(*Kki(ZF=LfcvtPs;0;CCT4fb9 zbXF}uz{2d=`3n)g8JNGJCFoXu=GRi6^`8;7EoVNN##@G#MW67Z_ zT@5|FL)~*)YdPBbInRU#ttDqScV#0JVxv(jW)_+r5IbLxlkhf;FR$-ajSYEHM*%Y~ zo6e!IXQCq{B6+LJEiWPE2Vk<7M-zPCTeQQVM@D92(=x4vbKIb4^HEass4NVb)kbWc z>!sI;-{#?)27U4SanLt4zG+F|gakMI==BKW*;=EeJUTF`r;F6;JX~lCy7c&E5^xKg zkRTXV_E^g5fw!rtOXCOp=W40os2U)vm$jFFxF*ou(a; zc%@9f+#I*mZDx{(A{ybHzs^(YbyUX8;(@&HH*Iu~SqRh`vzKsZ z^$>HbHa}PHQ_8jC$m{Jr3ke#4LlbAbdE&P*0!J7D<+YRVqG7&Cm^SRa!nU}6z>`W5 zI?=GLrFO8VyR8~M?LH3{;SBR_yFV}b!@29AZLRHe$;qwd!LFPc1ce}FHg5k2`=qD+ zaM`6z>E0`(0581y#i;1V048P=w&!2JZ?vGjNAEzr9LZK!f5{BdyVqsbVvwoaC1ufa z*#M}a>1eMBMPixL2AHFzL%seTXFUvfz=J5tv72ntkx#Ss4h2Wdh{BPUh!k8&Voe* z@gk`;VN3t}XD@CLqCJI^r(I@-N<3!ay1v(PqjP=rdvoYkb;VfrPJOstiYS1 zc-(J$uE@-qaNZ=_^uV#=gPypDaMhS5_U9ZZtkD~L{~9%~NWP)f!^+Ueq7g+7A@_3x}n#vBX@oN;m7u& zgX)%Exd~`VMYST6+bK1cOyib6dcxfX-!t#nNKn_47gJH-ts1V2eh3O&Jf*|>DXee{ zx*tW1z*YHV=`p7^j#oiW z?A{U=;h+Zwy$O_dGzb53Lh@UB!sn(gAl}aFq%9yZ<0`%KLF~MW%*tYg)$vw&S)Sxc z{O-xj86Ogc(n1{afV?-nL6HLQNtr3-+vc$1y1^9gyhq&NI=-wLFSk82yU@8zj`$V@`t4&s+e>mD*)V; za^RLau*MevM9R~%bgFnHw3z4;uvR&0KHPD|5h@N74ZylK3EEdrew5RR=MJPd#S_au zBhr)abI&^IX8$3IKiKE3@1lZ-RJ_%)dRa3Q3Y(lffeiv=@tM-j-E-A`L*4u>*D%Qz zU{`n41_rf2Q<6VrCsda2R7t-Mdb=WbH;CuWi$feQ3qo+q1AXvmOGG_tSWLI!i}Xvo z{^gzisz1WUv(-j+COw)*^BPCn>4vLtGDr8V@`c^5px^s;hNpIN@!&84O|#AFeySKQ(1#C1$**y%Sad zcQx2#WZL6NvxVN2WKCQUH!{5_Ir#~JA+rqHX?n=$Zv#L1XirzC_K|2>`FYDxUIqI zSrm#fp%PPWOya0%T=m0>*ao8nn^ZyDUZy8t$BKXe9w9O~N|wYt>29{>Y~P~*ywVWy z7}wB{v(w>Y_PUw*Cke%smyp`O3x*-~4<35$G~lqxOmwfS zb)ep1w)A$q-W-84_(fWwHNEK%p*_}kM-%75y1iJ0eUbZstygNX_by)R;GJCk)tUe` z&FJmoJ5FV;4z{4H*D;a{REP0Y^y@#@I$;d{~PPgMZ#_k@GQ`$54ul0W669GWe;eBO*rN!KYBW4BdcxwU*Sq{yncN`DiRWB0)bi1D zn@QrAhyrxdX!oPE0IJW+*C-f8Q>Z3HZ%1`@gNE|COGl-_3VJ5UK0+gyA}NuaBU`|7 zBw7;)JjX_7S~cgiY?B9!hNjP&=x}m|2Q~_R8Z*Ouh9z?tq|Z6FrKWCK)zgK}g4PO( zK0901k81GQtd=|RI!DcdzzyGbzxs7{%2>G9@9Om14%2tcFFR zpFGf;{4JmN_Q^N$y8 zD?>6^fRJpn`Gl#Bq_9F!zk*q7!oyMzaHgEqc<&eDOlNm{BbyB8nFVNbH^p`hegi?@ zE^LH?LTv7*J7#!4iMPANK?Vw)GT`U#uZQ(q+qe2R_i!UZ9a(o{@Zjp-?pG& zEKIaAP1^He#rz@EOA8wAk~?bi;$ux9&Hfz{!PtWTD=Go;+SH0tGQuxxYl|S1pVXqF zVqkf?Ld)CC;cGzIS}}?*Qe~^QJZd_*cW5QJ0-=19$0R^ z^(gRCHU1KnvVIG=>U1;M&sbsyVSOC z`DncMI0LNLVLz>>j9J{A>r0M8JRnz2-I-l;jVCSGdwm1w;a$|oZq3QmV!6{YN_Hkx zU6tp9+`WOMkK}LP4*~bAZf`befvQK33yf?^ia$f|WjQ;QgRkR})V%_!gC>36VQ^v-&~dOWLcyg5gSg9FQMqNYkT2_Q)--*yXb| zR5`Q6@l_FtAKrmIR77q`9PMhjxArfSAlE`-MXTilqIXfi1C*=fRMu{n#QWL}@{jEo z6XRgvldVmUwuG8L$?E(@H7J-O3^}cQ=w^RqCDMkn47{-Z_bXZdMi>iK-hY&4%*|HT zjQ*cu7aBz(`TWIOepbR=0x`~gsBHYNK%ZyV3{C&n-~#_hDwE9BB#59k$vXeH75;DkeD0xfZf*fe zy98w$9bF<=FL;B-`!D{5>$HFMTIlS-Nkj%Ix`0HUto^ILh1mjJzbcTrO!Lx|mC<_J zVV(E5{#d{6_X`6X(mO`~{my@n#(&=l|2+%-?`Hw$x)W(7u`v95t@U_(SMc4=-GLX9 z&hv_9tW!@BU8HC&u?A)@Q%V~{^KnDdI@6n`GNp!0xoLubu_FHN5h#;t@c(-b%j{ni z5RzWKyzw6bb`olK`F}^v{+D(R{*C6szxNeM*5ov`6NdFF_UgU=7!fFp&GrTcb@e}| z36MHDrg4A4b{QG}ju`u2H#gyb{`!BB@Bc?D=iQGctI6|s&(zP)BOWt%bhWje&(GYk zJOw!Zn9*e8c7>~29*x;E=AOHbvlBeN*AkQRKOH533%5lg?8)QFGl2&W(dSO%=X}F2 z-D-JF_w_XsTx?ZS8(_Nwj_pSPX7p`n21AglS{ftdlG|1!5X~G?S*1K90zDcGXWU)L zpucQ6V*~DW>_3H=f18jkGnp%WJT5jToLDUOX@SOOtiLf=LME4THZ$Elb{*?ie3 zYbaX97v2XI+B7IYhrQg=7IIz=@z^X7 zJLwA=m5lyC1!o|m5nben83L}CgZ$jZ4N4gq)&BoGg8a{;1&_JiKTlYHA1z2G5*v?( zG3Gi`5^3u-GbJe#=~i4E=|24XQvX5}{~d|+KRqNjFouR^|8Gl}1<#DBFK;*)M$E92PrAbWviPo4dTQcysg= zCmfkIiipuO6teS!C*KMG-c|O*RS!=u z@cKV>>a4xf{+Q5uyN`@^zsLUxHo7vmBIB68X=2p6;%MT#yBcrW-9t-ztT+Ahb^Ay^ z`}aCUTSv*N%u?F6EF?cVc%FKf_en#`LRh@e27|xBuaTTT$>=hF1IK1w=q)=EIG-GC z@PBM=HgJ~(3RR>6#X^cGM|uuP82~dADYir&d0z(F+gbh*a!(6_L#2y;PlfeLQtGL? z*!N)LOAFeC-DPGpL^X#PPjf_hN1#WXfxbRwrQ`&_epHlM#@#YDp{=_C4!?>rFRK}T zlo=& z6FDFQH=KrEdG#8#e29P!{?Yd3m68kEG4|k*F=`zRah|lb5h6FW^9nsV+Y(HkWz+=9 zkUvGpoG%!cp18HRwG9@!2M8v!J=Hj-?7pbVnp}YPe_UKgSZQ*vGB!M9cX^TSeQ((G zCL>oxAun91Sm+`Sl9sBKGd(YKIlKVL-H?Yxps-f%G3Q`3SIHT!0H+@t7Tg~CiHHF}yMvgx=#!1Nv{(q9KtESz) z71}v^uD8__W{+}7A7NrTrTOOOCA3k(+r{TcMI?2}_0;QC587L+GKl$$SY2N;wEMY1{A?{XXa1xVNZG z-3GJGU?!IQNhXo@bl3M~mxb1dRNCmd6dqdZURGXDRbAdxSUm(tjC&auY%<&9ZpG9V6E`_wPTSZL9bq%4cC`Bx8OSCz1K`TL z7<6d&R72sZUEz4@Q~;h%g45|TqgEBGdd7#Zza;^Gf~3BKE%a=`K0SVR`Fn2Rk1ta&0FwF4XFhY@_jUcQSeKY^(uqnv=1i6YW<-y7r2FZ;nbl%6y+jo-iOh<6 zE(kJARRot-=7A;?SG)Iqc=km&vf*A4way1=*DvocxfRrQErg*}4|}a{SeKFaO7WU#+@( z40P)>SG%Vo-X=uuv9~Q2N^n|Ao?WUh;PjVMPX;3gPt`=!N(&g+rC2?-PlKq)Qs8&9 z0>wDfylf-?Snxi@*r?&b*{2g;0MIvV~ z%+wbf_tk=ek}G>x@EotL-|tg?BWLW0P|}oH3weq9k))s)Hmwt2DvQiwRagQStLSP< z`bI}AXtQZ`%e{D=-r`C$?F!`NPu9V6YC1|hnZ>&aI2o7@ ze2Dj?)tmg6HgP)|u0=&9sRzS65xYU64vCUS3#0Y6>tab2ndneV&G$+CR6C=fr)#{d zHYmHvktbN4NHOoWNI1Uz<7v6wF6P>2t<<6Sb__0C-i5ex`Wi2ySO#x{snKLQN$ouG z2>pDQ@y28WJ|Q&0l46Q=5nqE-DPQd$7C|ANh&p?aM3(Z#wN^ zi!c=Y!$>Cl>>w9>9l4?nENBF6Gng(3b8rCO2VGuV_=7eQGN;r{r&e($*@&I?^|!tv zePPGxX@`j}cW9>Hd=c9~nEYpRiP(hL^!cIdZC82^j4@{+s{=!kGf=n`r?A`O5-@{o zbQO?c8B6o>@&A>iiW@iRH2$_zDQoKKN1an0Jxn0N=FBjEm+s^U{fx6D{aFej?pl8B z{)wAshtce(q1rghD#O=*(nJtsN+4W|}S0a<$ zvkpn(xCrd}K;w{nUrMO;{ky=m_7Gz}JqGe|E^<4lKNOScozFUEAgs_xT_>|NH0)!w zrKM6(Jvo2HectXKL0NU2c&174d1^eXdmV*5Hr^uXELFs7m3rqF#UpwLs!#PLkCbaDAn=EDe zB1@iCfBcT7XRu!%r_Fz~@`pt$>b?mlzfx#HYt$}bd(-Qfn0pftbiw7s#u2jk=&B@j z00}!+M|ud};+XSEt6N4nF44}y40oZ!fc-g+?b)I>#Y}Jyi8kBHi15M{8$VN}Xw;7w z;bUfpY`xN=lKR2jNmJz)3GgT6zH=KaN9z)O5JKYImcjmhD^BveGUEQbayTPU=;$u%a|rvoxmF_ z8{NL@LcE{JN1E5g%j^p(2KlXQ^0M2`#iE0RxWVHtYG3GlRqwaIvGHWOfy_i@KZD(u zml#|GjLk_>A6Ub(Hz8IZwpu>rZgCW*4Iva7cmfs~lwSuXh4UQA+aAWbBQHfO=GMKa z)R^J)tnL0@(5+pRI$MBL8`@Xi_$q4ffJ3s#*6oTD(P)@FjE=Jy;MINRpgl~o9`qR? z520yLZ)~y(!e(tI8g5$dJgu^-0hS1JjPbDwsftb08&Kra9^9Gd&RP`y4miH1R(QgR zVg9kje|R#53tHGbYnb7!(e3RM3()4tazILw+IGfmzbX!L(N(@sYv~?ai7l;l6%tYl zRhLq??E#X^5AnqNknsYhWR7w!4XnS7RP3&8u)b~j)k6v&`PCs2;6N)j!p&_S8cneu zlet$-)+XnJku!cxx%rqzb^SKbQyg8SxETILu?w1L8?;!$Our!ImM z)jOG1FHOf3vW86V>S@Ig)0(_i+ExVPPFD4dO$ML_>g8h`kC(Iyy}b+HS$JHXFD&qw zRWs;vRDVXrIGB=>l10++My_#q$+=}>eiyg(dG1k4Iovy>BPKAIr(bngAF|vUqdv{A z*0ptZ9nUgv=7XQob9KATj7T4(qZS_=r&OD1YMD`i?=w3ejSfv)ZR>!Fv=rb%4Q?5{ zp8TzEO5D6Yt@!fAudc4BBtL6uBu-2k(@_mQ116?V9zLCI-4c1E5-%yZfd0zbo#yh^3i-R7Gk~UswHGomuD7rJUcf=Tjp;;hmO3 zC$;}1iu`$Ob~U}{Zlf;{kC%y5V_9mDMvzsHuu~=G+WeColw89L6;zUgaDVLpW9#1N zBVts?mbF(eTWgR+l2Y*;Ue~!md<0<#*LRiQR3z4U>?o9X1k9}j$ge0#R{TXdE!g+) zfUNp}IV3lLi=@k@Y9f#hz^GQ=jpW=?U+THvaEG21o!jJxD;OUh!?vIyw@9-pR6+f2C3Hd$2cM%vP%kz2sbVW8=9&aO%ZWZx6O|@zW^1%(Xv^7Dlh#1x(rr@#V|DGkghc3-hSNI zIl#nx+jCZ9BpR>tQCs*51eq=eCdn7H#34-DNsZEy_)CvVUsYPH+jB!ZiDB01t+#xWiJv>@eDZ z-0{#f0sP$BxIZg(o+E-??&6I>QIf^Fh9iPan?rlZ-Ky~fJ(IAjdW7wpukWopdeAy7 ze7@Tq=(O<;&>+gpsu|GFLG zmzGTi;2QUs19V~^hu#-0G{-5`^Vjt7%=M5ZZ?!LqWBkvS|0E%%IzMER9V>)RkYh}M z@9G}ViNBH*SITbhiB%HUq&=`vNgii9^TV#$?7w)w=G$=c7=^}sx(#t4m&lPQCm~sx zPeJlK_7s#4y*1JnN93k2FU-*9vs}J@#nX#~hov5_y{u#X@F_j!_2*}^jq zi4ri3tvA*N+*bt@`~jdQ_woY5t^I005jM=Qi8>4Z6xiVb{xhqPfEt80ordE2HOf=3 zLtX9eyUX((vF)I@pNwiPO9$nePP&q23kwVKON!~?vS~h~WnkSA64GE_t^u>L5zVAp zeYZ;knD-}l9uwJ*anlwzx82YW9;MW~23YA<0aohaR4+cvJD28*st;(`mceE{0ul?* zVPf&UKL}qfZ<~J0e8STap-A0FmWeJk1%v9&+Ob+9(5W5i31e(wPQO#~P(tOQnm#G% z+(9CDR5uFixbj*;<-8t=@1*PuWI~PfC*5n1^sNQr{jq z?GpqpEjFK=jaNR{in-=gKU;ijyE2g4U0A3~y$*lQ{{-+ozk!{4BWV=UMzO6RrC+c6 zFc+iYTTxjQMHev%w}%?RU|4ahsc$@T?-Cii+?_|oX&`Q*(*tXD0qD#km9&5hM~VZ; zY3ZuEx~sm)$ty!*BHp6)a(FlQ(ERb)fsa~(VM!yI9=m-v9)ua3RQCnHV9=>oPEYIi zIN2+zF`aiSM8Qx%;uc0CML?lDyJNr}kVu-;!kw;TwFR~KVlJz@Z{X;E#qDXD1JQZ0 z7L=8eI?^-tf+jD+VqxEZA2B17qY(V~t3oiDDji)sU59H&4BrMk$ezio4GYdzRrQHF zw^Q?ogVl`55a`=Ba9Zlu;bDGWiz}Fwn6};?Zm=HO3-|tD%}v9`rzaj!|Wib`C7Rm@2^MT3cCA3q_> zP;jkjDcx5Cwc97JZ3ObKF}wCc-0+uHGXbTEvVN!2-e90lgpvRj(;-(>a<;A!KF?deG zn4zYfqHX{E#wPta>8kPc!}Zjy85 zv>cmiQ6R)^E@9GC;N=Jm=5p`gZjcX=DUy8PqpHNrxXGb2%dCgn322_qP_=>HQRc_exhWn+*Hf4{Gf6Sgxeqed3IB;_5M zQ#y+umP1&DQtxKu7i>{6#Bsj1oM1D;GMz#N=WOC7QM@|J<3qIAyXId}<+X=8H}wHahDV4(sfdj3U8z6iE7csb}*13)+A z9$sK{-pX_8-6sgT^MXqC_quz|+v+o4-*UnSUAT6fCO(CGYch7bH9ZXXPd_+ZpFM}y@>nfC@I}f z4}xL38VF<@Bs`x_3flF=itq&F4ojtTRt`pG#M$E&Nck|cOqgbtw#<32K1;f;0K!am;@ALD`0 z=tf@!knjp_n=j4}&z}4!!k?s}J%v3nCViI9tnxN~(C7CKg!7gTwRXlWU?ztl3@M%cXY^i8cYbM9G+e3jcgMbZ*Z}wnVP@-VO zC2P*cd15u4FcavH)O0%!ABM*X#dVl(6~HZ#7q4hkU7+MdY`AbfYwx!3^~N7sE}xbIhWDE3ngTB}aD6{-ToZ^+HH5wmNmsS;Ry$Yr zX_(N{20&lIGvy>Ebfy&KUkkqKq3fh_AtzR*7BtF;57uy9)e=zA)=v4ck;MeQ#?qlc zBzeS(PmH21S_+^dt4UIOW3zwGzTteyziCcrCtJsrej!iIcUt0;&}?Plj#C{w$YCRZ=2Vi>&Ny9nfOZ+cD)yqXRwvx1wOfGT9B zdJJ*dpVgG5&FG5Xl+I%9ZeEFscC1_FUS|1DXfmASu2q( z_M^wxfvj|no$RS2Yqudjh_y3#&@crt1;gYpMxigLC`;JSbm{dYrw}ZXHc_(9J_)8gWivirrDP9xt;(dB~=2{h; z{H^e_#U`(0=p?Gv_rLz| z0~{yyOFTVJ&aKyXB?lNEE6HwbAUaEhneE$|RrpCEc7FX9t zYZR^ZMKOR|SKn%7Fz{=6`QDgzaMct+m`#J(MzI7r_2_bs9JfIP*TN-hk4o|4E!%p` zcAQmcxO^tkb*aXCK5ltC>cOE;5UgLZx?{>ey$SOr4!yc7GV4k9wsaAN4jrtJVF-2m zf}n|^Q;hLpTci~Cvk251%Z|(@7!5LO5Ilg!SHJvmE8wE!Hx;8fvab&PC&JUpq+S)d zIFq>kvtZ#0kEW9Y<%rLw;^NY^qTN*H3*_7`i6Wq=KsqzKQc>Iy$ZY0Ot)7XVdronM zjKJL<`Q$;}8)S*8Yl{t^+lC<>_}z4vwR8dhZX}T1NWH&JFa^xU#rE{oCm%8;eHJ=_ zr2I%w=eW6rsi}=?4ho%SAtmPVAe5||gT!|SU=ZN@OkM=L)qm|11Ud+F6Gc4(#X_o1 zH6~BOw8-F!Z2)uU$C|8Tf0Af1PtTjrYCzM_y+yg%;^1RLht!q`}WAEQA)*e=;IE4CZxp0c6AZkYwXE(DmmAiVh(t4OX%J2XD1Z5r z#K`^9tfPW#c2bOP z&N*qC0N=1I6sq_#Yoq+uNYY5BmoKy^;#2H6*>#{BJuR`$$i$@!9LbN)l_$G8niP2m>Gf1(9RXP71R6lV^ zd_jpj*a5Cm&N4H|D|-{xP(eZx;+6*^pyh9B60iV-5B3~hm_bxrJh77hVSA){LY zAFmflCr{2{^c+QywNFiGK%9V$2C4o)5)#*L?RDm+L@f^Fk$bMJ&dUcT6CX>;PnfS@ zZPCSAU;Le(9ni`{Y$sAWB5b29$98K_@`GmS99BKnt4$h~oG6UAi`E8cZjCQ`pCS>p_C0F;XuzQ?iEzIitzC0;DtFBW>Z76`7e2b39un$4xc{ zyrx*?Umx`H3bU-_ESHwUameqXISshvSN>+EDfg$RBwlyqQ@m*U+SKpr#t8@7L%lG@ z0}lSEg31z9_#LO@+FnO!a@y|oVL`s+!IV^igaxC=TRI2OvLaLwivnRb6>wy%p*8bv zeWFH+_i;uOX?xq1#)f5i;ZtPNojL_`RZTTL6HT!UG;S_0b%ay=efN7BEuM6&VbBIG zkhtHrk;((vm%@ymv`!O=xsk}sih{zM8NMBKVBOv}lIDhporl=Hgiit6TxQx@?ytG? zb~KC@<~nD{+C6ObIYu3WNj50D#OMeLbh;&C%#mYxqF-R`ZuR5Z#^AN|fw1a5M~U4& zHdk&??MQmas&u;6)elhF#Jcf5PZYW|zql-|aG5X6NL+s%2J4C3U}an&p;P*HTf1U& zFV20+Y}BSwwq#zHi&?kW1*~Xl6fadaVDO5RN4`mmywnit;*pD;aVuvP#^4Gkn37DU zCi;gPI#0cz-gED#<$y|{wr50qMH7Oru=rB@Co z0`BuFYNj}5Q_b|y95D_E^b^eZNms#MQZmA?J^m5>!)}QR^yc=o43n>_rEftgY)N?- ziM?nwlauBGY?j__x1YN|POqtSWV|>(;;#2JY~n<=NoI!dB=W?F2_rSB<%~$JmRTwz zw2=*D8Qkz8Q8M74K8BQJmr6HV+_HC+xnRkYT8(fJb9fmjo^%lm14v3mRyl9}U}smA z@;=?%JAQ1A-6Ya&7y7sw$KF9`Xe3GLW>*&-XbP)mL9Uo~_5Ms;^<{Zvg@Z^XA3`@P zT(F76kAy;?IH)iJPatx<-CUYR)ZCt=MLt29U%W;*t2bp~SN)m=*pH20gwPbU9w&mp zQzE&JQ&zZZVYxX7WOhnxP$wK5sA8y4*ud%=f6(*9JiHzSGNY5>XJ|boyp&N|E(Qq{ z+eaKy?NhXgUzH06`Ee#^K`bSYUAz%B7U%oHPK%6O1YcsbOvb}5HAUUL|OPhLG5|%rm2@>&eo0YoA$p@~^k|U>=2U;I<{Ag`2 zIJS{NBL-aS%?PiJ2x9uh((T_!Ot5#YANr;=u70+Sgi?s$;)KgRmyfIn!A{6bL}5Uy zP+;%)G|M-|Dl#~!FX`iHsEekFeQr%x*gF%@t<4v$IzdIw{Tb0C6wkf(=0+!;H^>DV zDTa9jSOt>!O(dUkpIG4uBFR=e=#8S%iZH1j+6Vb*o}&|3*7i@TYCz7Q|9Y`R}fym_fxqA3|DcEdZTkP$$7TI2TmQ}~{BORR_`85|pg9bEyXvV-%;Y%G$w!D#dY^RNle~i;&%VHfO%795HW$P=6At%&A$J41^3?|1`e1B|JokH^&KA9 zu(AayPJJJ1#fbLhuuHAYiB_^tcMF!SU;|=ExPqXKeU!2Ts&m$Wp8wf_4?ydDGN$fz zQK_+MyQLnN2H?PeJW2#17%kJ$d8Ms%V9;NzsG(*@SqzyvW;iyxjE=yMO=J|%&qphd zD>uYYMy&cS2f;~J=1u}o;r-3y8X^q2pH^x}4e*U44gmEU<)se(u5yv3HpprPVxjEi zfG~!Ck8S_-zHQF-ZlIJNS5@2K;Ls3h!ADNtIp0M3AG@d8zGf{1e|)<9O)D?o?&T?o zwsb1{1;f4erQVH1zf4{Ky3|)EUd5i$ke6VgV%04aC3dL5Wy9Gw+Smu_vlUo$G=J}40W4f@~vxZ)vZ4% zyvqSlWmEEzh$Mbe#RsukLjv%r=r(K7z9)Y0j_lVtz%5K z2aYdKv>QHl3g3<+^ZGEQoQ!9US!-vfXM;Gh^En8)Ar?{%OehRMGaGTXCF{2o>Z3h^ z)+gZVjy|U2<|dQ4Tq3Db)8rq&$8`4jk?-y>*4SLtOC}JV8EA1S=y0ls(V9}CuB8X2 z9~}7EO40KR@kwXoonMM5be|mpIhCQ}82PeI#TR92fZ~i<$frz;K{os?xvUwZ^BCoI zP&lWUN4?HYxQ05ShT2JzZJpM>P0W?=O43EL7_JYEo_N;KKVFr4ZfExLVoWTwY{;$= zt_cKQ6Zz~AumYpE86qa3-(t-$bboVVn@gWqF5P;Di#XnMQndH*^mV)5_1!Ir^c`FK zDkZSIM_UezsjSxaEcKV+66~qXoA|hfx=t;>p|tB zlgKZlbGIHj2|9ZTz*Xr#HGEV1(#ZA45t6NhfZX_wj;b{?)dM53A<8u!G`tk?!C#da zZ;3*HjU8?yf#l<$adTxSCuPRR{-)(Iy2AGMfv3n7Sp5!vaB8~IN08UV^hNJF3#$3o zyj)tFmYnvG$B_CxZ-8_a)kZX9yw5{1+d4^9e)aTA^63Cc2T1rWTx)j3dkHdUa6p*eYLhFln@XgN7ZiY-^LPyU zXzu29!gQnXro)U%udR9mFFQ}#l>vEPIHR`rLyaLYI6;F;nNFrPq`0(HaC_NP+DJw7 zSr71;)AfW!sT8DjL&g1}FnmZvS}#vi4a{QH%s^zQ5Ppvs`Z0H0jLvBCUcm_!3r9GViO}f?4vK7Pbf)%bCL;JVq^guh9U6 z?0BuM!zzpt8V-ZLSxS`gp%mkVH^EK_3+f8FizO}v*UJOV z^w-n%QAm-r{e-2VULY@T^JUGs%G-j8M)SCrW)uuI z1_UlUsny(~qJ_PRf-*7P;eP zOUxg`lEifQ_hPzt?Y8};{ig*LJxL`r$U)*(2b?yyxm^Z=z0Y4}V%&wtit6VDT21iS z(2{!GEdD3kTw16bvfPtXR@7juX{IUcT$G|{yFfJ4eSNV$g?lqJV6-KKKF=)*OPa)t zRVStO^CHBb-0~Tijen*;PA^_{oZWxqQ2Wqj_i+WRJTGjmD}puHNXSj2^f!bvJE725ct{9lG2*O7lQ95t22`$F;(j`%9z|qCj9O5*BiAWsd8W&H+0-0mv=D{kK>&uUQe!K zv3CAL_7hxNbnjS?mdf+x<&#TydnrVg|n^ZuV^$q1mD^~mlVdC<3hq)z*Mqc z?CfXndu=U?-Myw}ztrLgdvt|PG`9r8C|R0K!>+M3AVt|mM7UL6y!OSPvYkM0z|bg= zOKbA1lf%-Bs%VykA-55$jSG-0&%K@yoNkChS7~KIekL{A#nD*bnwK6pk0}^FAu*V1 zULGp;rxmxX@SohRfGzh|xxP?juj}k-c~L>ehpha0J#;Uo)^ofmOsc4CnXuM#WH!5( zT_u4cn?d@_`HHd=0v%Vw?WNOB(7~vZNcpWb$Ex1ZFWQ_@nd?aPD}%x>dzV_aSwEoB zn_@oWYT%kNi-3Uf`yk=Bj9Kf4hgJbdGPd4si5^~)?a-#j_{q9@La0lNQ?=UNuWYBf z8HB|{n;tPSMc+ALrcfQs@R!DLb9yQM@x}66=>BIj-I<& z1kZHeZYZ%a<5hb@62$k8DndzIszZz>uGQ3LXKof+Ur{$(`6>yERS5dQ^bQPLN@&Vc zA)4LqB`2iZevscZIyv2^p=Zd4hRgPU?a+TXO>#fThwrja&|>MyR+g$IV5 z8|QC%!7+2-8x5J@78-UVQEAVBJ}YfDGLp!jSxD=(Au6pl!eW!JEY2oG?W5~zSTtCT zc^5#qTMzZu|1gU7HPQAuVa@zlIekXu-tw(21C@xa_l6zt^1hu#rD zmf!mlJPwu?hrT6jLn*Ym;^YK{p09XRTtA;-d>QbJEMn0YNfclp7Ajs2qEEP%XZeTm zURCDWTzUWzoC*v5pr9E2!qifJy=%|yc*)|jmTeYuT#t5eoE2@h(K2Q0^=dJ z-7Ro>2bfw!FK-u7WBr#x<6pAZ{%glhr~JQFA6i`aCxy%}PwGu##O*H?$3MGvA|nw* z-vklB_Sb!#sWXeK4IR}JL zP<}1QhD#+Rjl=x0QdV{z@d7U`RGL|qr}|f$n}LegOJ8zXkKdbC&R7;-mK4WQr^&w& zOF`vVRFqfb<(8DE;jD^X#G|!2tyRf<*~xuZ>(e81*oR7h8unKVQ?ypGuA^8*Us zy4uZy9gTU*hAO<$sw(wnQjR{!fq@rbEn83ZmUOYaX2`>7Xqp97JnIvvkW8Z<4O5Yo z>T^NS3TGG2`#XBz42`EGr5YnqEWI3I_cbYe@zROmQXh56-s+xHv9(M1^rRdG`7F)V z7*SH_A!p6>WR&$<;jRKHx-kBqyx`D(yEm#;D?Q&%cA(lOUKB978j8)50`WbIYnjc_G3B4aDMxkb)wqR zadssh4u~94XRE9?QcjULh7LQ9cp&OJ$N55iqZOmC%GQ&AWuS=pe#dQB%B;&H*9rQ( z0Z+|wtszp*tDBg?dYp<;uO4=@5%#Vj6fcKUkTyuBzB7Ts@5*$s&&?37(TlBg{4wd}I0teB}t12CYRBdLQ0c z64I1KX2uy&lTi&d8EovaVS|D~;N1yM>S1axarw8FASPY5bYV}ramo%zUSZjbiUoEh zz2uy)i*WZ_#3@)%m9Bpu}DITc0mzhtU|;$aTD2DFqe zubm{Sc0bp%j@c7SG)`I zBRaoW?tVg2#rtqd$}S#|Uq%h(d*aP+hk_Ri8zhbtQ2My+2$&|fr_1G0c@lXNoV59B zA$c0uF+R^>_ZaTP8C8;L?{%Fw*@ZzcX>GBh%M10~B&K*P<5sLVW#`!BRciibrL0Iu z;?ku_UCBu9M5jh9SI$?=Wi!_YjY! z9?jHW)j<;r3P!|;i5jG1RL9CUil`d5qxMC-a zyL1h_iQLay#M((_nb}n*J`=`?pUBo5#NtX`DctVeokn+06T;f)ncj{3C z3GkF6w`oi0;x4|nHlX-io0<_wbuTtFtdiV{=KMn{%JYW}a~c>c25Mi~VC zhIw8o75j@A!TS^D*;eYFBSeU-LSITkQwv@C4@^{@NTPm`!q7~^*wEOlrc{WC@~i~i z*`g#m0{CsQPseG0u{@2gKwSS~DiF1+|L?w1E&6*6Fg^Hh<3X&7VoMXu2|vZVWkMH- zxQu@<-X$VUe-4ATX{wPaaZjRZma3|%O7ueRZ_K5&6g4nLi#yZVQ9fj_d{*!&<@LB58`tz0-%Dit8PI zt6cw|U;CdS`JY+xA8#Cr-)eA5$G0~8{@f&&b(~vDhyn%Dk|5Vbyl>AeN{i}iS zON{;RkvD!cPQT9;{T->lI~*x(3#fk;;Q9X_;^3F{>c8?M%HXdRjILDjuL0rwxuSQY ziCpHYe_GLXUi>6o6V>ocH>lOsFaNX2%jq8^>6hMl{3HM&f;jQ&)`Xw(`CtZ}?>F6* zNv*%}kBgvdwH;)9TmGDQ*E%a2JxRPgdEB8(952mW`!mb+?W9m85)+du;vG`r z7gtGuN|IE08A4lx@zbKR8#m(qHI1$R_FtJ;c=8J^(&0YX{Kv1(80=?f%okl%>`sJh zT*@iAloOd#aMzf4L?=>{{vFq#L}>#qKX}VAa~+`-6Wy3Xd3|wQ4xl zcL-8Ze|hdG0`Ilu7Uke*oMjvI_EYi$NJ-nDB-^|e-1dUegW0!S6%#dC2mHI|MSgt2 z!%PjQq?g9DNCMt#3Q8YPHT&)X&+Jh2h+AiBV;G|;wv|@nHcLyAMLsqjov|Z>pgkoe zsmXchZmp#&u-rncv(DeNI<4g$JDfmcJ29tu=X>1O)_t{N9M2Z%SdDE(&0B$6Q3e)f zWDUMtyFQDWzJNnXoF-Cu^6hT8+Mauu>Gw;7!qg$SEUw^Cxrc;Q>QMVEa^3U0xZTN@ zW`)qa?T|}40@eHB?_1@xb`usIX~{`0@{sri#joHLRN_$HeokS~*HQ|wcf<~XTweo2 znd5DaQ$<5f|1FBCQ`@}&H}{*X9wwl|E84sfU@TF3=n013nY?J!T>kk49H@6XFELJc zKV$2{rHeT*Vt@-S879RB?0kMz)r%U~#uIdCp3Q-uEBPn= zCMj#Cdd0u3m-Mt}9E@c2adpB!(>8kv(akk0i+&W?wBDXF+ZqXf5oqZ4K+3aQ{5lSmwMT9J0V^aC&e;MP7C(_G>P%ob{A2vp{MU2^P(HXvReoOzcg zYJu9^;X&7xruDZFXl7%2>BtuWVUbkI?ChtlFumNS2G0+gfUlL+BHhgd*P&Gtn&jA) zd=nS+RfqnWCivV2yWQ0?%)y}N?OmS8@8LWOy{^|nWS9Ov`<=AH#mrRv6aoV=WGqI%x) zS8lE36K?vKmQ9sQIXBqcwEmFre&xYT)-+PlfeH`{u+|z53al`g=W=KzP-ea{-DcmH zQz+hmCVcp?Sk#`_mypB2EeP`gQk3~7lndAy81Izoo+(B@oFry7_87;d%XG3zAAV4> zY3k$V55AwWWnc+S4sMdt?Q*ZN^gQq%H=XRen-uy>@RE)Ov4un<~q8&Kh>%WAr zRn8LwUnQEZ`JG=HE0k7A#3vE;JJ{LVassVDt819Uh{*NsaUUwuq*2y>WxAw=x1yH7 zKS|!|-$~ObbCxUCJ`T0hQkX9AWGvDk?0SzKj=xqn=CC(B9GZ)z4_XZN5!?nXM1-g} zg2NSq8@8{jJs_}0spZ%wBsdRsW)CYhn}(L$8KMh3e{k*K#acL3htVBX8@?`0WFv9y zAmfAQtTJe`Uke#hUjc7#FKy)+g2Vl}vp4r(ksN`n>$t^fr8K#$H>#YP&*TMp5!puL z!!s!R96E1`~FdjA^3!Bb=n z@3#xMYXP7YIZv@RO)H+PrXDwl#5Z~OJo8tLr6IR0QDg3A8i1i3sQ~W2MjVBx5^!a?)0kO-N z6CZs09x%qtkyUHDdz$ughh_54x-z+FQN#2P82(R^-OEqkuL<$8gXW`h&;0QR;IGnq z*xY=uQ|Tw;6QhjPqE}6>`#g2rPvAUXPn8v+%|8+g^08K~%jhP2*Yw_7WowDmx~r5l zv7&*r@%BV}X(dc~j5&j7&C>Xjgp;-Ucn5V$;r=8F*5w1^vh+ZK^9xES%8=Q^`~{UH z2X4M!qWLmj#_DFe%vH7s&q5Xbm6guCcFDG0n7$gl`+ZEjUNKXx>U;CZWQXv?nM#wX zU7d2=j@3i=(wobf#_bW!buMI0aEq=JqvPl?8Aqcb{_Zir^G~ix+In({v>Ed!+)5VH z^OxPF&}Ry@^KbR&L=g8kKhlcMa$5JKapg5|HIg*}_e_Ar57QlgyVU>NPs#uCAD~nI zYjY}FHZbzrgKz(nUFBYmhN0j8qfhje`cKc`PZxe9kzRFE=pS?^^5$kgbti-$M5EwO z-AUzNKGEL?Zi+SKTgP@`(rhm`-

AuiZq456gdN%12womX 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 literal 0 HcmV?d00001 diff --git a/specs/357-report-profiles-disclosure-policy-v1/checklists/requirements.md b/specs/357-report-profiles-disclosure-policy-v1/checklists/requirements.md new file mode 100644 index 00000000..1fec7f0e --- /dev/null +++ b/specs/357-report-profiles-disclosure-policy-v1/checklists/requirements.md @@ -0,0 +1,45 @@ +# Requirements Checklist: Spec 357 - Report Profiles & Disclosure Policy v1 + +**Purpose**: Confirm Spec 357 is selected safely, scoped narrowly, and ready for a later implementation loop. +**Created**: 2026-06-05 +**Feature**: `/Users/ahmeddarrazi/Documents/projects/wt-plattform/specs/357-report-profiles-disclosure-policy-v1/spec.md` + +## Candidate Selection + +- [x] CHK001 The candidate is directly provided by the user and is also a repo-real follow-up over current rendered-report truth. +- [x] CHK002 No `specs/357-*` package existed before this preparation run. +- [x] CHK003 Related specs 347, 355, and 356 were checked for completed/prepared/runtime signals and are treated as context only. +- [x] CHK004 Close alternatives are deferred instead of hidden inside the primary scope: billing/subscription truth, localization adoption, governance-artifact lifecycle, first AI runtime consumer, and customer-portal consumption. +- [x] CHK005 The selected slice is bounded to static profile/disclosure policy plus the existing rendered-report family. + +## Spec Completeness + +- [x] CHK006 `spec.md` defines problem, user-visible improvement, smallest viable version, explicit non-goals, and why-now rationale. +- [x] CHK007 The Spec Candidate Check is filled and scored above the approval threshold. +- [x] CHK008 Scope, routes, data ownership, RBAC, and canonical-view filter/entitlement rules are explicit. +- [x] CHK009 UI Surface Impact and UI/Productization Coverage are completed for the existing strategic report surfaces. +- [x] CHK010 Cross-cutting reuse, OperationRun posture, provider-boundary check, proportionality review, testing impact, user stories, and acceptance criteria are all explicit. +- [x] CHK011 No template placeholders (`[FEATURE]`, `[DATE]`, `NEEDS CLARIFICATION`) remain in `spec.md`. + +## Plan Quality + +- [x] CHK012 `plan.md` is repo-aware and names the existing runtime seams to extend. +- [x] CHK013 The plan keeps the slice inside the current `ReviewPack` rendered-report family and forbids new persistence, delivery workflow, PDF stack, portal, and AI scope. +- [x] CHK014 Livewire v4 posture, Filament provider location, and current global-search/no-new-panel expectations are explicit. +- [x] CHK015 The plan distinguishes repo-real truth, current gaps, technical approach, authorization posture, and rollout impact clearly enough for implementation. +- [x] CHK016 The plan declares Unit + Feature + one bounded Browser smoke as the narrowest honest validation mix. + +## Task Quality + +- [x] CHK017 `tasks.md` exists and is ordered into small, verifiable phases. +- [x] CHK018 Tasks start with repo truth and failing tests before behavior changes. +- [x] CHK019 Tasks reference concrete repo files or namespaces and avoid speculative architecture. +- [x] CHK020 Tasks include explicit validation commands, screenshot capture, and `git diff --check`. +- [x] CHK021 Tasks explicitly forbid new persistence, delivery workflow, PDF stack, portal, AI, and provider-boundary widening. + +## Readiness + +- [x] CHK022 `spec.md`, `plan.md`, `tasks.md`, and this checklist exist. +- [x] CHK023 No open question blocks safe implementation; defaults remain conservative if unanswered. +- [x] CHK024 The slice is small enough for a bounded implementation loop. +- [x] CHK025 Result: ready for implementation loop. diff --git a/specs/357-report-profiles-disclosure-policy-v1/plan.md b/specs/357-report-profiles-disclosure-policy-v1/plan.md new file mode 100644 index 00000000..f24ed092 --- /dev/null +++ b/specs/357-report-profiles-disclosure-policy-v1/plan.md @@ -0,0 +1,301 @@ +# Implementation Plan: Spec 357 - Report Profiles & Disclosure Policy v1 + +**Branch**: `357-report-profiles-disclosure-policy-v1` | **Date**: 2026-06-05 | **Spec**: `/Users/ahmeddarrazi/Documents/projects/wt-plattform/specs/357-report-profiles-disclosure-policy-v1/spec.md` +**Input**: Feature specification from `/Users/ahmeddarrazi/Documents/projects/wt-plattform/specs/357-report-profiles-disclosure-policy-v1/spec.md` + +## Summary + +Add a bounded report-policy layer to the current rendered review-report flow. The implementation should keep the current `ReviewPack` artifact and rendered report route, but introduce: + +1. a static report-profile registry +2. a disclosure-policy evaluator with explicit proof states +3. profile-aware rendered-report composition and section filtering + +The slice must stay static and read-only. It must not create new persistence, delivery flows, public links, PDF infrastructure, or AI/runtime expansion. + +## Technical Context + +**Language/Version**: PHP 8.4.15 +**Primary Dependencies**: Laravel 12.52, Filament 5.2.1, Livewire 4.1.4, Pest 4.3 +**Storage**: Existing PostgreSQL truth plus existing `exports` disk-backed `ReviewPack` artifacts only +**Testing**: Pest Unit, Feature, Browser +**Validation Lanes**: confidence, browser +**Target Platform**: Laravel Sail local runtime and existing Filament admin panel +**Project Type**: Laravel monolith with Filament admin surfaces +**Performance Goals**: No measurable render slowdown beyond current rendered report; no new remote calls during render +**Constraints**: No Graph/provider calls during render, no new persistence, no public route contract widening, no second artifact family +**Scale/Scope**: One existing report route and its owner surfaces, one static registry, one policy evaluator, focused regressions + +## Repo Truth + +Current repo-real seams: + +- `apps/platform/app/Http/Controllers/ReviewPackRenderedReportController.php` already builds the rendered report payload. +- `apps/platform/resources/views/review-packs/rendered-report.blade.php` already renders HTML-first output. +- `apps/platform/app/Support/ReviewPacks/ReviewPackOutputReadiness.php` and `ReviewPackOutputResolutionGuidance.php` already derive readiness and limitation semantics. +- `apps/platform/app/Services/ReviewPackService.php` and `GenerateReviewPackJob` already anchor the current `ReviewPack` delivery contract. +- `docs/ui-ux-enterprise-audit/page-reports/ui-006-customer-review-workspace.md`, `ui-042-review-pack-detail.md`, and `ui-099-rendered-review-report.md` already document the affected strategic surfaces. + +Current gap: + +- There is no static report-profile registry. +- There is no first-class disclosure-policy result that distinguishes `verified`, `assumed`, `missing`, `unknown`, and `not_applicable`. +- The current renderer cannot express different audience/detail policies without ad hoc branching. + +## Candidate Selection Gate + +**Result**: PASS + +- The candidate was directly provided by the user as a concrete Spec 357 draft. +- It aligns with current runtime truth after Spec 356 rather than reopening an older or completed foundation. +- Related specs 347, 355, and 356 are treated as historical/runtime context only. +- The scope is small and reviewable: static registry + disclosure policy + existing rendered-report integration. +- Broader alternatives such as billing, localization, customer portal, or AI remain explicitly deferred. + +## UI / Surface Guardrail Plan + +- **Guardrail scope**: changed existing customer/report surfaces +- **Affected routes/pages/actions/states/navigation/panel/provider surfaces**: + - `/admin/reviews/workspace` + - `/admin/workspaces/{workspace}/environments/{environment}/environment-reviews/{record}` + - `/admin/workspaces/{workspace}/environments/{environment}/review-packs/{record}` + - `/admin/review-packs/{reviewPack}/report` +- **No-impact class, if applicable**: N/A +- **Native vs custom classification summary**: mixed; existing native Filament owner surfaces plus the existing custom rendered-report Blade surface +- **Shared-family relevance**: report viewer, status messaging, artifact truth, customer-safe disclosure +- **State layers in scope**: detail route payload and existing owner-page derived payload; no shell or navigation contract change +- **Audience modes in scope**: customer/read-only, operator-MSP, controlled auditor, support/internal +- **Decision-first contract**: the rendered report must identify its audience, readiness, and limitations immediately before showing deeper section detail +- **Required tests or manual smoke**: + - explicit Unit tests for policy + - explicit Feature coverage for rendered report + - one bounded Browser smoke for profile variants and disclosure hierarchy +- **Active feature PR close-out entry**: `Guardrail / Exception / Smoke Coverage` + +## Technical Approach + +### 1. Keep everything inside the existing ReviewPack report family + +Do not create: + +- a new report persistence model +- a separate rendered artifact family +- a profile CRUD resource +- a delivery workflow + +The current rendered report stays the single report route. The new logic should live inside `App\Support\ReviewPacks` and be consumed by the existing controller and owner surfaces. + +### 2. Introduce a static report-profile registry + +Preferred repo-aligned shape: + +- `apps/platform/app/Support/ReviewPacks/ReportProfileRegistry.php` +- one static array-based contract or readonly value structure +- no database/config mutation path + +Required implemented profiles: + +- `customer_executive` +- `customer_technical` +- `internal_msp_review` +- `auditor_appendix` + +Required placeholder: + +- `framework_readiness` marked not implemented and not selectable for an implemented report + +The registry must remain narrow and typed enough for tests, but must not become a generalized framework. + +### 3. Introduce a disclosure-policy evaluator + +Preferred repo-aligned shape: + +- `apps/platform/app/Support/ReviewPacks/ReportDisclosurePolicy.php` + +Inputs: + +- selected effective profile +- current readiness / limitation truth +- evidence completeness state +- PII/internal-only state +- available source/disclosure metadata + +Outputs: + +- mandatory disclosures +- warnings +- blocking reasons +- proof states (`verified`, `assumed`, `not_applicable`, `missing`, `unknown`) + +The evaluator must use stored truth only. No render-time provider or Graph calls. + +### 4. Add one local rendered-report profile composition layer if needed + +The current controller already builds a large report payload. If profile/disclosure integration makes that method unreviewable, introduce one local support layer under `App\Support\ReviewPacks` to compose: + +- effective profile metadata +- filtered section list +- disclosure result +- appendix policy +- audience labels + +This must stay local to the current rendered report. No cross-domain reusable viewer framework. + +### 5. Keep profile selection bounded and authenticated + +V1 defaults: + +- default effective profile: `internal_msp_review` +- customer-facing or auditor-oriented variants remain authenticated and capability-gated + +Preferred surface policy: + +- the existing report route may accept a bounded authenticated profile selector only when the parameter is carried through the existing signed URL builders (`ReviewPackService::generateRenderedReportUrl()` and current owner-surface helper/action seams) +- existing owner surfaces may add at most one small group of safe "view report as ..." actions if that remains reviewable +- if action-surface growth is too large, keep selection route-local via those existing signed URL seams and test it directly + +No unsigned query contract or share link may be introduced. + +### 6. Mandatory truth overrides profile presentation + +Profiles may influence: + +- section inclusion +- appendix visibility +- detail level +- audience label + +Profiles may not hide: + +- readiness state +- evidence completeness / limitation state +- internal-only or PII warning +- non-certification disclosure +- generated/source metadata + +### 7. Preserve current owner-surface boundaries + +- `CustomerReviewWorkspace` remains the handoff surface +- `EnvironmentReviewResource` remains the released-review detail seam +- `ReviewPackResource` remains the artifact truth seam +- the rendered report remains read-only delivery output + +Do not turn any of these into a profile management surface. + +## Domain / Model Implications + +- No new table, column, enum, or persisted artifact family is expected. +- `ReviewPack`, `EnvironmentReview`, `EnvironmentReviewSection`, and `EvidenceSnapshot` remain the only persisted truth used here. +- Disclosure proof states remain derived-only and request-scoped. + +## Filament / Livewire Implications + +- Livewire v4.1.4 compliance is required; no Livewire v3 APIs. +- Filament panel provider registration remains unchanged in `apps/platform/bootstrap/providers.php`. +- No global-search changes are expected. `ReviewPackResource` and related review surfaces keep their current search posture. +- Any new action affordances on owner surfaces must remain read-only and subordinate to the existing primary inspect/open model. + +## OperationRun / Observability Implications + +- No new `OperationRun` type is introduced. +- Existing review-pack generation/run-link behavior remains authoritative. +- Any profile or disclosure result should remain derivable from existing stored artifact truth and not require a new run or audit path. + +## Authorization / Security Implications + +- Existing workspace/environment entitlement and `Capabilities::REVIEW_PACK_VIEW` remain authoritative. +- Customer-facing profiles must not bypass internal-only or current-export guards. +- Invalid profile keys must fail closed. +- Non-members and out-of-scope records remain 404, missing capability remains 403. + +## Data / Persistence Implications + +- No migrations +- No new settings rows +- No new config-write path +- No new stored report or rendered artifact record + +If implementation proves persistence is required, stop and split the scope. + +## Test Strategy + +### Unit + +- registry shape and implemented/placeholder behavior +- disclosure proof-state evaluation +- invalid-profile fail-closed behavior + +### Feature + +- rendered report profile selection and profile metadata +- mandatory disclosures cannot be hidden +- customer profiles remain visibly limited on limited/internal output +- internal profile remains clearly internal when appropriate + +### Browser + +One bounded smoke file covering: + +- internal MSP profile with limitations +- customer executive profile on limited output +- customer-safe profile on ready output +- auditor appendix profile +- invalid or placeholder profile behavior + +### Regression + +Keep existing rendered-report and review-pack tests green, especially Spec 347 and Spec 356 coverage. + +## Rollout / Deployment + +- No env vars +- No migrations +- No queue changes +- No scheduler changes +- No storage contract changes +- No `filament:assets` impact expected + +## Risks And Controls + +- **Risk**: profile system drifts into delivery or portal work + - **Control**: static registry only; explicit non-goals in tasks and checklist +- **Risk**: proof-state modeling becomes a fake certainty layer + - **Control**: explicit `assumed`/`verified` distinction and tests +- **Risk**: customer-facing profile hides limitations + - **Control**: mandatory disclosure override plus feature/browser assertions +- **Risk**: controller complexity grows too far + - **Control**: allow one local report-profile payload layer only if needed + +## Implementation Phases + +1. Repo-truth recheck and failing tests first +2. Static report-profile registry +3. Disclosure-policy evaluator with proof states +4. Rendered-report payload integration and section filtering +5. Owner-surface handoff and localization updates +6. UI-audit follow-through +7. Focused validation, browser smoke, and screenshots + +## Spec Readiness Gate + +**Result**: PASS + +- `spec.md`, `plan.md`, and `tasks.md` are present. +- Scope is bounded to the current rendered report family. +- No open question blocks safe implementation. +- RBAC, isolation, disclosure truth, and customer-safe behavior are explicit. +- No new persistence or delivery workflow is required. +- Required checklist artifact is included in this spec package. + +## Assumptions + +- The current rendered report route remains the correct owner for profile-aware output. +- A bounded authenticated selection mechanism is sufficient for v1. +- Existing report/resource page reports can absorb the UI audit updates without inventing new page identities. + +## Open Questions + +- Whether owner-surface actions are necessary or whether the signed-URL-local profile selector is enough for v1 +- Whether `auditor_appendix` should render as internal-only by default until a later delivery workflow spec + +These are safe implementation decisions, not product blockers. diff --git a/specs/357-report-profiles-disclosure-policy-v1/spec.md b/specs/357-report-profiles-disclosure-policy-v1/spec.md new file mode 100644 index 00000000..a3846b38 --- /dev/null +++ b/specs/357-report-profiles-disclosure-policy-v1/spec.md @@ -0,0 +1,373 @@ +# Feature Specification: Spec 357 - Report Profiles & Disclosure Policy v1 + +**Feature Branch**: `357-report-profiles-disclosure-policy-v1` +**Created**: 2026-06-05 +**Status**: Draft +**Type**: Reporting policy / disclosure governance / rendered-report hardening +**Runtime posture**: Static profile registry plus disclosure-policy evaluation over the current `ReviewPack` rendered-report contract. No profile admin UI, no new persistence, no scheduling, no customer portal, no AI, and no native PDF stack. +**Input**: User-provided Spec 357 draft (`pasted-text.txt`) plus repo truth from Specs 347, 355, and 356 and the current rendered review-report runtime. + +## Dependencies And Repo-Truth Adjustments + +This spec is a bounded follow-up over already repo-real review-output work: + +- Spec 347 - Review Pack Output Contract & Readiness Semantics +- Spec 355 - Platform Sellable Smoke Matrix +- Spec 356 - Review Pack PDF/HTML Renderer v1 +- Current runtime seams: + - `apps/platform/app/Http/Controllers/ReviewPackRenderedReportController.php` + - `apps/platform/app/Support/ReviewPacks/ReviewPackOutputReadiness.php` + - `apps/platform/app/Support/ReviewPacks/ReviewPackOutputResolutionGuidance.php` + - `apps/platform/resources/views/review-packs/rendered-report.blade.php` + - `apps/platform/app/Services/ReviewPackService.php` + +Repo-truth adjustments against the draft: + +- The rendered stakeholder report already exists on the authenticated route `/admin/review-packs/{reviewPack}/report`; this spec must extend that route, not create a second report family. +- Any v1 profile-selection parameter must flow through the existing signed rendered-report URL generation seams (`ReviewPackService::generateRenderedReportUrl()` plus current owner-surface helpers/actions), not a controller-only ad hoc query contract. +- The current renderer already derives readiness, limitations, evidence basis, and disclosure copy from stored `ReviewPack` and `EnvironmentReview` truth. +- Native server-side PDF is still not implemented. This spec must remain HTML/report-policy only. +- `ReviewPackOutputReadiness::derive()` currently receives `protectedValuesHidden` and `disclosurePresent` as boolean inputs. Those values are not yet modeled as independent proof-state results. Spec 357 must preserve that distinction and avoid silently upgrading assumptions into verified truth. +- No report profile registry currently exists in config or support code. No `report_profile` persistence, delivery policy ledger, or profile selector surface exists today. + +## Spec Candidate Check *(mandatory — SPEC-GATE-001)* + +- **Problem**: TenantPilot can now render a customer-facing review report, but it still lacks an explicit policy layer that determines which audience the report is for, which sections are allowed, and which disclosures must remain visible regardless of presentation preferences. +- **Today's failure**: The current rendered report is effectively one output shape with readiness-driven copy. That makes future customer, internal, technical, and auditor-oriented report variants risky because the renderer has no bounded policy contract to stop a profile from hiding limitations, evidence gaps, internal-only boundaries, or the non-certification disclosure. +- **User-visible improvement**: Operators can trust that rendered reports are audience-aware without becoming truth-optional. Customer-safe variants stay conservative, internal variants stay clearly internal, and every report shows the required readiness, evidence, limitation, and disclosure metadata. +- **Smallest enterprise-capable version**: Add a static profile registry, a disclosure-policy evaluator with explicit proof states, and profile-aware rendering on the existing report route and linked review/report surfaces. +- **Explicit non-goals**: No profile CRUD, no database table, no scheduling, no delivery workflow, no customer portal, no AI/HITL runtime, no native PDF, no branding editor, no framework-specific NIS2/CIS/BSI report implementation, and no second artifact family. +- **Permanent complexity imported**: One bounded static registry, one bounded disclosure-policy evaluator, one local rendered-report payload/view-model layer if needed, focused localization additions, focused Unit/Feature/Browser tests, and UI-audit follow-through. No new persisted truth, no new queue family, and no new cross-domain framework. +- **Why now**: Spec 356 made the rendered report repo-real. The next honest gap is no longer "can we render HTML?" but "can we prove which truths every report profile must show before broader delivery or customer-consumption work grows?" +- **Why not local**: Copy-only changes in the Blade view would not create a reusable, testable policy boundary. Broader delivery or portal work would be premature without a profile/disclosure contract underneath. +- **Approval class**: Core Enterprise. +- **Red flags triggered**: New policy layer, customer-facing disclosure semantics, and rendered-output surface changes. Defense: the slice stays on one existing report family, keeps policy static, forbids new persistence and delivery execution, and explicitly models assumptions instead of faking proof. +- **Score**: Nutzen: 2 | Dringlichkeit: 2 | Scope: 2 | Komplexitaet: 1 | Produktnaehe: 2 | Wiederverwendung: 2 | **Gesamt: 11/12** +- **Decision**: approve. + +## Candidate Source And Completed-Spec Guardrail + +- **Candidate source**: + - direct user-provided Spec 357 draft from `/Users/ahmeddarrazi/.codex/attachments/5b0bf308-47d5-449d-be56-f3946cc8a20b/pasted-text.txt` + - current roadmap/productization lane for report delivery and customer-safe review consumption + - immediate runtime follow-through over Specs 347, 355, and 356 +- **Completed-spec guardrail result**: + - no `specs/357-*` package existed before this preparation run + - Specs 347, 355, and 356 carry implementation, screenshots, tests, or close-ready evidence and are treated as historical/runtime context only + - related review-productization specs such as 308, 342, 349, and 351 are also context only and must not be rewritten back into preparation wording +- **Close alternatives deferred**: + - Billing & Subscription Truth Layer v1 + - Customer-Facing Localization Adoption v1 + - Governance Artifact Lifecycle & Retention v1 + - First Governed AI Runtime Consumer v1 + - Customer Portal Report Consumption Boundary +- **Smallest viable implementation slice**: existing rendered review-report route plus linked review/report surfaces only: static report profiles, disclosure proof-state evaluation, profile-aware section filtering, visible profile metadata, and truthful customer/internal disclosure behavior. + +## Summary + +Spec 357 introduces a static report-profile and disclosure-policy layer for the current rendered review report. The report must become profile-aware without becoming truth-optional. Profiles may change presentation depth and section selection, but they must never hide readiness state, evidence limitations, internal-only or PII warnings, non-certification disclosure, or source metadata. + +The implementation remains intentionally narrow: + +- extend the current `ReviewPack` rendered-report family +- keep all evaluation based on stored review-pack and review truth +- model `verified`, `assumed`, `not_applicable`, `missing`, and `unknown` disclosure proof states where the repo cannot independently prove a safety claim +- avoid delivery, portal, PDF, AI, or framework-report scope + +## Spec Scope Fields *(mandatory)* + +- **Scope**: canonical-view +- **Primary Routes**: + - `/admin/reviews/workspace` + - `/admin/workspaces/{workspace}/environments/{environment}/environment-reviews/{record}` + - `/admin/workspaces/{workspace}/environments/{environment}/review-packs/{record}` + - `/admin/review-packs/{reviewPack}/report` + - `/admin/review-packs/{reviewPack}/download` +- **Data Ownership**: + - `ReviewPack` remains the current artifact truth + - `EnvironmentReview` and `EnvironmentReviewSection` remain review and section truth + - `EvidenceSnapshot` remains evidence-basis truth + - readiness, profile selection, and disclosure results remain derived-only request-time truth +- **RBAC**: + - existing workspace membership and managed-environment entitlement remain mandatory + - `Capabilities::REVIEW_PACK_VIEW` and current review/report view permissions remain authoritative + - no public routes, no unauthenticated profile selection, and no new capability family by default + +For canonical-view specs: + +- **Default filter behavior when tenant-context is active**: keep the current explicit `environment_id` workspace filter behavior and do not introduce hidden shell or legacy query scope. +- **Explicit entitlement checks preventing cross-tenant leakage**: all rendered report, review, and review-pack access continues to resolve through current workspace and managed-environment scope plus current-export and not-expired guards. + +## UI Surface Impact *(mandatory — UI-COV-001)* + +Does this spec add, remove, rename, or materially change any reachable UI surface? + +- [ ] No UI surface impact +- [x] Existing page changed +- [ ] New page/route added +- [ ] Navigation changed +- [ ] Filament panel/provider surface changed +- [ ] New modal/drawer/wizard/action added +- [x] New table/form/state added +- [x] Customer-facing surface changed +- [ ] Dangerous action changed +- [x] Status/evidence/review presentation changed +- [ ] Workspace/environment context presentation changed + +## UI/Productization Coverage *(mandatory when UI Surface Impact is not "No UI surface impact")* + +- **Route/page/surface**: + - `CustomerReviewWorkspace` review-pack launch and readiness area + - `EnvironmentReviewResource` customer-workspace detail handoff + - `ReviewPackResource` detail/download context + - rendered report route `/admin/review-packs/{reviewPack}/report` +- **Current or new page archetype**: existing customer-safe report/detail surfaces and existing rendered artifact viewer +- **Design depth**: Strategic Surface +- **Repo-truth level**: repo-verified existing runtime surfaces +- **Existing pattern reused**: current review-pack output contract, `ReviewPackOutputResolutionGuidance`, rendered report viewer, customer-safe disclosure hierarchy +- **New pattern required**: one bounded report-profile/disclosure-policy layer over the existing rendered report +- **Screenshot required**: yes, under `specs/357-report-profiles-disclosure-policy-v1/artifacts/screenshots/` +- **Page audit required**: yes, update the existing reports for `UI-006`, `UI-042`, and `UI-099` if the hierarchy or visible contract changes materially +- **Customer-safe review required**: yes; customer-facing profiles are central to this slice +- **Dangerous-action review required**: no; the slice stays on read-only report surfaces +- **Coverage files updated or explicitly not needed**: + - [ ] `docs/ui-ux-enterprise-audit/route-inventory.md` + - [ ] `docs/ui-ux-enterprise-audit/design-coverage-matrix.md` + - [x] `docs/ui-ux-enterprise-audit/page-reports/...` + - [ ] `docs/ui-ux-enterprise-audit/strategic-surfaces.md` + - [ ] `docs/ui-ux-enterprise-audit/grouped-follow-up-candidates.md` + - [ ] `docs/ui-ux-enterprise-audit/unresolved-pages.md` + - [ ] `N/A - no reachable UI surface impact` +- **No-impact rationale when applicable**: N/A + +## Cross-Cutting / Shared Pattern Reuse *(mandatory)* + +- **Cross-cutting feature?**: yes +- **Interaction class(es)**: status messaging, report viewers, disclosure messaging, action links, evidence/report truth presentation +- **Systems touched**: + - `ReviewPackRenderedReportController` + - `ReviewPackOutputReadiness` + - `ReviewPackOutputResolutionGuidance` + - `ReviewPackService` + - `CustomerReviewWorkspace` + - `EnvironmentReviewResource` + - `ReviewPackResource` + - rendered-report Blade template and localization files +- **Existing pattern(s) to extend**: current output-readiness semantics, current rendered-report route, current customer-safe workspace handoff, current artifact truth and download seams +- **Shared contract / presenter / builder / renderer to reuse**: `ReviewPackOutputReadiness`, `ReviewPackOutputResolutionGuidance`, `ArtifactTruthPresenter`, current rendered-report payload composition, current review-pack authorization and current-export guards +- **Why the existing shared path is sufficient or insufficient**: it already holds readiness and report truth, but it does not yet define a first-class audience/profile policy or proof-state-aware disclosure result +- **Allowed deviation and why**: one bounded `ReportProfileRegistry`, one bounded `ReportDisclosurePolicy`, and one local rendered-report profile payload layer are allowed inside `App\Support\ReviewPacks` because the controller already carries complex report-state composition +- **Consistency impact**: profile labels, audience labels, readiness state, limitations, evidence basis, internal-only warnings, non-certification disclosure, and source metadata must stay aligned across workspace, review detail, review-pack detail, and rendered report +- **Review focus**: block any second artifact family, any report-profile persistence, any public link contract, any hidden mandatory disclosure, or any fake upgrade from assumed to verified proof + +## OperationRun UX Impact *(mandatory)* + +- **Touches OperationRun start/completion/link UX?**: reuse only +- **Shared OperationRun UX contract/layer reused**: the existing review-pack generation and current-export reuse path remains authoritative +- **Delegated start/completion UX behaviors**: queued run, dedupe, current-pack reuse, and completion notification behavior remain unchanged +- **Local surface-owned behavior that remains**: profile metadata, disclosure evaluation, section filtering, and rendered-report copy only +- **Queued DB-notification policy**: unchanged +- **Terminal notification path**: unchanged +- **Exception required?**: none + +## Provider Boundary / Platform Core Check *(mandatory)* + +- **Shared provider/platform boundary touched?**: no new provider seam +- **Boundary classification**: platform-core review/report disclosure semantics +- **Seams affected**: existing review-pack and rendered-report semantics only +- **Neutral platform terms preserved or introduced**: report profile, audience, readiness, limitation, disclosure, proof state, internal-only, customer-safe +- **Provider-specific semantics retained and why**: only where existing review content already carries provider-backed section labels +- **Why this does not deepen provider coupling accidentally**: no provider call, provider model, or provider registry change is introduced +- **Follow-up path**: framework-specific report profiles remain deferred to later specs + +## UI / Surface Guardrail Impact + +| Surface / Change | Operator-facing surface change? | Native vs Custom | Shared-Family Relevance | State Layers Touched | Exception Needed? | Low-Impact / `N/A` Note | +|---|---|---|---|---|---|---| +| Customer Review Workspace review-pack handoff | yes | Native Filament page plus existing report/download primitives | customer-safe output guidance | page, URL-query | no | Existing route only | +| Rendered report route | yes | Bounded custom report view over existing controller route | report viewer, disclosure hierarchy, profile metadata | detail, route payload | no | Existing route family only | +| Review Pack detail/report handoff | yes | Native detail plus existing artifact-truth primitives | rendered output vs ZIP truth | detail | no | Keep read-only | +| Review detail handoff | yes | Native detail plus shared review/output truth | audience-aware launch copy | detail | no | No new route family | + +## Decision-First Surface Role + +| Surface | Decision Role | Human-in-the-loop Moment | Immediately Visible for First Decision | On-Demand Detail / Evidence | Why This Is Primary or Why Not | Workflow Alignment | Attention-load Reduction | +|---|---|---|---|---|---|---|---| +| Customer Review Workspace | Primary Decision Surface | Decide whether the current review output is ready for external/customer consumption | readiness, limitations, profile-safe action, evidence basis summary | review detail, report detail, download | Primary because it remains the handoff start surface | keeps current customer-safe review workflow intact | reduces explanation work around output meaning | +| Rendered report | Primary Delivery Surface | Decide whether the chosen report profile is fit for the audience | profile, audience, limitations, disclosures, generated/source metadata | supporting appendix and technical detail | Primary because this is the actual human-readable output | keeps report delivery inside the current review-pack family | prevents "pretty report hides risk" drift | +| Review Pack detail | Secondary Proof Surface | Verify the artifact and open the rendered output | artifact status and current-export truth | ZIP/download metadata and related proof | Secondary because it supports, not replaces, the delivery decision | preserves artifact ownership | keeps detail out of the main handoff surface | + +## Audience-Aware Disclosure + +| Surface | Audience Modes In Scope | Decision-First Default-Visible Content | Operator Diagnostics | Support / Raw Evidence | One Dominant Next Action | Hidden / Gated By Default | Duplicate-Truth Prevention | +|---|---|---|---|---|---|---|---| +| Customer Review Workspace | operator-MSP, customer-read-only, customer-admin | readiness, limitations, current safe handoff path | current review detail and evidence basis | raw artifact diagnostics | open the current review/report safely | raw diagnostics remain secondary | workspace states handoff truth once | +| Rendered report | customer, technical customer, internal MSP, controlled auditor | profile, audience, generated/source metadata, readiness, limitations, mandatory disclosures | technical appendix only where allowed by profile | raw JSON or protected internals stay hidden | read the report or step back to the review | diagnostics and internal-only detail stay profile-gated | the report states its audience and limitations once | +| Review Pack detail | operator-MSP | current pack truth and rendered-output availability | artifact metadata | ZIP internals | open rendered report | raw ZIP detail remains secondary | artifact proof does not duplicate report narrative | + +## UI/UX Surface Classification + +| Surface | Action Surface Class | Surface Type | Likely Next Operator Action | Primary Inspect/Open Model | Row Click | Secondary Actions Placement | Destructive Actions Placement | Canonical Collection Route | Canonical Detail Route | Scope Signals | Canonical Noun | Critical Truth Visible by Default | Exception Type / Justification | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| Customer Review Workspace | Utility / Workspace Decision | Customer-safe review hub | open the currently appropriate report/review surface | existing review-open path | existing | supporting report/download actions stay secondary | none | `/admin/reviews/workspace` | existing review detail route | workspace plus optional `environment_id` | Customer review | whether the output is safe and which audience it fits | none | +| Rendered review report | Detail / Report Viewer | Read-only report | read or print the report for the current audience | explicit report route open | forbidden | appendix/technical detail stays below primary sections | none | existing owner surfaces only | `/admin/review-packs/{reviewPack}/report` | workspace/environment artifact entitlement | Rendered review report | profile, audience, readiness, limitations, disclosures | none | +| Review Pack detail | Detail / Artifact Viewer | Read-only artifact detail | verify or open the current rendered report | existing detail inspect path | existing | ZIP/download proof stays secondary | none | existing review-pack collection route | existing review-pack detail route | environment + record entitlement | Review pack | artifact status and report availability | none | + +## Operator Surface Contract + +| Surface | Primary Persona | Decision / Operator Action Supported | Surface Type | Primary Operator Question | Default-visible Information | Diagnostics-only Information | Status Dimensions Used | Mutation Scope | Primary Actions | Dangerous Actions | +|---|---|---|---|---|---|---|---|---|---|---| +| Customer Review Workspace | MSP operator | decide whether the current output can be shared and which audience path is truthful | read-first workspace surface | Is there a safe report to hand over now? | readiness, limitations, profile-safe path | deeper review detail and evidence links | output readiness, evidence basis, package status | none | open review or report | none | +| Rendered report | MSP operator or entitled customer reader | consume the report for the chosen audience | read-only detail/report viewer | Who is this report for, and what limits still apply? | profile, audience, readiness, evidence state, disclosure, generated/source metadata | appendix and technical details if allowed | audience, boundary, readiness, evidence completeness | none | print or return to owner surface | none | +| Review Pack detail | MSP operator | verify the current artifact and its rendered-output relationship | read-only artifact detail | Does this artifact match the report path I am about to use? | artifact status, rendered report availability | ZIP internals, operation proof | artifact readiness, expiry | none | open rendered report | none | + +## Proportionality Review *(mandatory when structural complexity is introduced)* + +- **New source of truth?**: no +- **New persisted entity/table/artifact?**: no +- **New abstraction?**: yes, but bounded to local report-output support (`ReportProfileRegistry`, `ReportDisclosurePolicy`, and one local rendered-report profile layer if needed) +- **New enum/state/reason family?**: no new persisted family; one derived disclosure proof-state vocabulary is allowed if it remains local and request-scoped +- **New cross-domain UI framework/taxonomy?**: no +- **Current operator problem**: the current rendered report can become unsafe to evolve because there is no explicit audience/profile policy and no proof-state-aware disclosure contract +- **Existing structure is insufficient because**: the current readiness helpers describe output state but not which truths every profile must keep visible, and they cannot distinguish assumed from independently verified disclosure safety +- **Narrowest correct implementation**: keep everything inside the current `ReviewPack` report family with a static registry, a local disclosure evaluator, and existing owner surfaces +- **Ownership cost**: maintain a small static registry, disclosure evaluator, local copy, and focused tests/browser proof +- **Alternative intentionally rejected**: a profile CRUD system, delivery workflow, or generic reporting framework was rejected as larger than current-release truth requires +- **Release truth**: current-release delivery hardening and follow-through, not future portal or automation groundwork alone + +### Compatibility posture + +This feature assumes a pre-production environment. + +Backward compatibility, migration shims, legacy profile aliases, public query stability guarantees, and second artifact families are out of scope unless explicitly required by a later spec. + +## Testing / Lane / Runtime Impact *(mandatory for runtime behavior changes)* + +- **Test purpose / classification**: Unit, Feature, Browser +- **Validation lane(s)**: confidence, browser +- **Why this classification and these lanes are sufficient**: the registry and disclosure evaluator are deterministic unit concerns; the rendered report, route guards, and owner-surface handoff need Feature and one bounded Browser proof because this is a customer-facing strategic surface +- **New or expanded test families**: one new Unit pair for report policy, one new Feature rendered-report profile test, one bounded Browser smoke file +- **Fixture / helper cost impact**: low to moderate; reuse existing review-pack, environment-review, and rendered-report fixtures instead of adding a new heavy family +- **Heavy-family visibility / justification**: one explicit Browser smoke only because audience-safe rendered output is visual and disclosure-order dependent +- **Special surface test profile**: shared-detail-family +- **Standard-native relief or required special coverage**: no standard-native relief; the rendered report needs explicit disclosure and audience-profile proof +- **Reviewer handoff**: reviewers must confirm that invalid or placeholder profiles fail closed, mandatory disclosures always render, customer profiles never overclaim readiness, and no second report artifact family appears +- **Budget / baseline / trend impact**: none expected beyond one bounded Browser smoke +- **Escalation needed**: `document-in-feature` only if an authenticated query-parameter fallback is kept temporarily for profile selection +- **Active feature PR close-out entry**: `Guardrail / Exception / Smoke Coverage` +- **Planned validation commands**: + - `cd apps/platform && ./vendor/bin/sail artisan test tests/Unit/ReviewPacks/Spec357ReportProfileRegistryTest.php tests/Unit/ReviewPacks/Spec357ReportDisclosurePolicyTest.php --compact` + - `cd apps/platform && ./vendor/bin/sail artisan test tests/Feature/ReviewPack/Spec357RenderedReportProfileTest.php --compact` + - `cd apps/platform && ./vendor/bin/sail php vendor/bin/pest tests/Browser/Spec357ReportProfilesSmokeTest.php --compact` + - `cd apps/platform && ./vendor/bin/sail artisan test --compact --filter=Spec356` + - `cd apps/platform && ./vendor/bin/sail artisan test --compact --filter=ReviewPack` + - `cd apps/platform && ./vendor/bin/sail artisan test --compact --filter=EnvironmentReview` + - `cd apps/platform && ./vendor/bin/sail pint --dirty` + - `git diff --check` + +## User Scenarios & Testing *(mandatory)* + +### User Story 1 - Profile-safe customer report delivery (Priority: P1) + +As an MSP operator, I need a customer-facing report profile that can never hide readiness or limitation truth, so that external handoff stays conservative and defensible. + +**Why this priority**: This is the core trust problem introduced by broader rendered-report delivery. + +**Independent Test**: Request a customer profile for both customer-safe and limited outputs and verify the report still shows limitations, evidence state, and non-certification disclosure. + +**Acceptance Scenarios**: + +1. **Given** a customer-safe ready review pack, **When** an entitled user opens the rendered report with `customer_executive`, **Then** the report shows customer-facing profile metadata and still renders mandatory disclosures and source metadata. +2. **Given** a limited or internal-only review pack, **When** an entitled user opens `customer_executive` or `customer_technical`, **Then** the report remains visibly limited or blocked for external use and does not pretend the output is customer-safe. + +--- + +### User Story 2 - Clear internal MSP report boundary (Priority: P1) + +As an MSP operator, I need an internal profile that can show more context while still clearly labeling itself as internal-only when customer-safe delivery is not justified. + +**Why this priority**: The default authenticated report path is inside the operator/admin plane and must stay honest about internal-only output. + +**Independent Test**: Open the report with `internal_msp_review` on a pack with PII or unresolved limitations and verify the report remains visibly internal and still shows mandatory warnings. + +**Acceptance Scenarios**: + +1. **Given** a pack that includes PII or internal-only detail, **When** the internal profile is used, **Then** the report clearly states internal-only boundary and keeps evidence/limitation disclosures visible. +2. **Given** an invalid or placeholder profile key, **When** the report route is requested, **Then** the system fails closed to the safe internal path or a truthful not-implemented response without exposing a broken public contract. + +--- + +### User Story 3 - Proof-state-aware disclosure contract (Priority: P2) + +As a reviewer, I need the profile layer to distinguish `verified`, `assumed`, `missing`, `unknown`, and `not_applicable`, so the report does not silently overstate disclosure safety that the repo cannot prove. + +**Why this priority**: This prevents the new policy layer from laundering assumptions into certified truth. + +**Independent Test**: Unit-test the disclosure-policy result for readiness, evidence, and protected-value handling states without requiring a browser. + +**Acceptance Scenarios**: + +1. **Given** stored report truth where a safety claim is only inferred from existing generator behavior, **When** the disclosure policy is evaluated, **Then** the result marks that claim as `assumed` rather than `verified`. +2. **Given** a mandatory disclosure is unavailable, **When** a profile is evaluated, **Then** the output marks it as `missing` or `unknown` and still renders the warning path instead of hiding it. + +## Functional Requirements + +- **FR-357-001**: A static report-profile registry MUST define at least `customer_executive`, `customer_technical`, `internal_msp_review`, `auditor_appendix`, and placeholder `framework_readiness`. +- **FR-357-002**: A disclosure-policy evaluator MUST derive mandatory disclosures, warnings, blocking reasons, and proof states from stored review-pack and review truth only. +- **FR-357-003**: The rendered report MUST use an effective profile to drive section inclusion, appendix visibility, and audience metadata. +- **FR-357-004**: Mandatory disclosures MUST override profile section-hiding rules. +- **FR-357-005**: Customer-facing profiles MUST NOT overclaim readiness. Limited, blocked, internal-only, or assumption-heavy output must remain visibly limited. +- **FR-357-006**: Internal profiles MUST remain visibly internal when applicable and must not suppress PII/internal-only warnings. +- **FR-357-007**: The rendered report MUST show profile key, audience, generated/source metadata, readiness, limitations, and non-certification disclosure. +- **FR-357-008**: `framework_readiness` MUST remain placeholder-only and not appear as a falsely implemented framework report. +- **FR-357-009**: No report-profile persistence, CRUD surface, delivery workflow, or new artifact family may be introduced in this slice. +- **FR-357-010**: Invalid or unimplemented profiles MUST fail closed and must not widen the signed route contract or bypass existing signed URL builders. + +## Non-Functional Requirements + +- **NFR-357-001**: Output must remain deterministic for the same review pack and effective profile. +- **NFR-357-002**: If uncertainty exists, the renderer must show limitations rather than infer customer-safe certainty. +- **NFR-357-003**: No live provider or Graph calls may happen during report rendering. +- **NFR-357-004**: Registry and policy logic must be unit-testable without Browser coverage. +- **NFR-357-005**: Localization for dominant profile/disclosure copy must be available in both `en` and `de`. + +## Acceptance Criteria + +- **AC1**: A static implemented-profile registry exists and is tested. +- **AC2**: A disclosure-policy evaluator exists and returns mandatory disclosures, blocking reasons, and explicit proof states. +- **AC3**: The rendered report is profile-aware and visibly shows profile and audience metadata. +- **AC4**: Customer-facing profiles cannot hide limitations, evidence gaps, internal-only warnings, or the non-certification disclosure. +- **AC5**: Internal profiles remain clearly internal when current output truth requires it. +- **AC6**: Invalid or placeholder profiles fail closed and do not pretend to be implemented. +- **AC7**: No new persistence, delivery workflow, portal, PDF stack, or AI runtime is added. +- **AC8**: Focused Unit, Feature, Browser, and report-regression validation passes. + +## Assumptions + +- The current rendered report route `/admin/review-packs/{reviewPack}/report` remains the single human-readable report route for this slice. +- The current `ReviewPack` and `EnvironmentReview` truth is sufficient to derive audience-safe disclosure results without new persistence. +- Authenticated internal profile selection may use a bounded current-route mechanism only through the existing signed rendered-report URL builders if a richer action surface would over-expand scope. +- Existing rendered-report and review-pack regressions from Specs 347 and 356 remain the baseline to extend, not replace. + +## Risks + +- A broader "report profile system" could sprawl into delivery, branding, or portal scope. +- Assumption-vs-verification semantics could drift unless tests pin them down explicitly. +- Profile selection UI could widen scope if it becomes a settings surface instead of a bounded report-viewer affordance. +- Appendix handling could accidentally reintroduce internal-only detail into customer-facing profiles unless the policy contract stays strict. + +## Open Questions + +- Should authenticated profile selection remain signed-URL-parameter-based on the current report route for v1, or is one bounded action group on existing owner surfaces justified without over-expanding UI scope? +- Should `auditor_appendix` remain internal-only by default in v1, or be rendered but always marked non-deliverable externally until a later delivery workflow spec? +- Can any current `protectedValuesHidden` or `disclosurePresent` signals be upgraded from `assumed` to `verified` without broadening generator scope, or should v1 explicitly preserve them as assumed? + +These questions do not block preparation because the safe default is to keep profile selection bounded, keep auditor output conservative, and preserve assumption states unless implementation proves otherwise. + +## Follow-up Spec Candidates + +- Branded / themed management report layouts +- Scheduled report delivery and approval workflow +- Framework-specific readiness report profiles +- Customer portal report consumption boundary +- Private AI/HITL report review preparation diff --git a/specs/357-report-profiles-disclosure-policy-v1/tasks.md b/specs/357-report-profiles-disclosure-policy-v1/tasks.md new file mode 100644 index 00000000..10aca9a7 --- /dev/null +++ b/specs/357-report-profiles-disclosure-policy-v1/tasks.md @@ -0,0 +1,107 @@ +# Tasks: Spec 357 - Report Profiles & Disclosure Policy v1 + +**Input**: `/Users/ahmeddarrazi/Documents/projects/wt-plattform/specs/357-report-profiles-disclosure-policy-v1/spec.md` +**Prerequisites**: `/Users/ahmeddarrazi/Documents/projects/wt-plattform/specs/357-report-profiles-disclosure-policy-v1/plan.md`, `checklists/requirements.md` + +**Tests**: Required. This is a runtime report/disclosure change on existing customer-facing strategic surfaces. Unit, Feature, and one bounded Browser smoke are required. + +## Test Governance Checklist + +- [x] Lane assignment is named and is the narrowest sufficient proof for the changed behavior. +- [x] New or changed tests stay in the smallest honest family, and the browser addition is explicit. +- [x] Shared helpers, factories, seeds, fixtures, and context defaults stay cheap by default. +- [x] Planned validation commands cover the change without pulling in unrelated lane cost. +- [x] The declared surface test profile (`shared-detail-family`) is explicit. +- [x] Any material budget, baseline, trend, or escalation note is recorded in the active spec or PR. + +## Phase 1: Repo Truth And Scope Gate + +- [x] T001 Re-read `spec.md`, `plan.md`, and `checklists/requirements.md` before editing runtime code. +- [x] T002 Confirm branch/worktree intent with `git status --short --branch` and record the baseline commit with `git log -1 --oneline`. +- [x] T003 Inspect the existing rendered-report seams in: + - `apps/platform/app/Http/Controllers/ReviewPackRenderedReportController.php` + - `apps/platform/app/Support/ReviewPacks/ReviewPackOutputReadiness.php` + - `apps/platform/app/Support/ReviewPacks/ReviewPackOutputResolutionGuidance.php` + - `apps/platform/resources/views/review-packs/rendered-report.blade.php` +- [x] T004 Inspect current owner-surface handoff seams in: + - `apps/platform/app/Filament/Pages/Reviews/CustomerReviewWorkspace.php` + - `apps/platform/app/Filament/Resources/EnvironmentReviewResource.php` + - `apps/platform/app/Filament/Resources/ReviewPackResource.php` +- [x] T005 Confirm no new persistence, new delivery workflow, public route family, PDF stack, portal route, AI runtime, or framework-report implementation is needed. + +## Phase 2: Tests First + +- [x] T006 Add `apps/platform/tests/Unit/Support/ReviewPacks/Spec357ReportProfileRegistryTest.php` covering required implemented profiles, placeholder handling, and invalid-profile fail-closed behavior. +- [x] T007 Add `apps/platform/tests/Unit/Support/ReviewPacks/Spec357ReportDisclosurePolicyTest.php` covering mandatory disclosures, blocking reasons, and proof states (`verified`, `assumed`, `not_applicable`, `missing`, `unknown`). +- [x] T008 Add `apps/platform/tests/Feature/ReviewPack/Spec357RenderedReportProfileTest.php` covering effective profile selection, visible profile metadata, mandatory disclosure override, and customer/internal boundary behavior. +- [x] T009 Add `apps/platform/tests/Browser/Spec357ReportProfilesSmokeTest.php` covering internal MSP, customer executive limited, customer-safe ready, auditor appendix, and invalid/placeholder profile behavior. + +## Phase 3: Static Report Profile Registry + +- [x] T010 Create `apps/platform/app/Support/ReviewPacks/ReportProfileRegistry.php` with static implemented profiles: + - `customer_executive` + - `customer_technical` + - `internal_msp_review` + - `auditor_appendix` +- [x] T011 Model `framework_readiness` as placeholder-only and not implemented by default. +- [x] T012 Keep the registry bounded to the current review-pack/report family; do not add CRUD, config writes, or generalized reporting infrastructure. +- [x] T013 Fail closed for unknown or unimplemented profile keys and keep the fallback behavior explicit and tested. + +## Phase 4: Disclosure Policy + +- [x] T014 Create `apps/platform/app/Support/ReviewPacks/ReportDisclosurePolicy.php` to evaluate profile + readiness + evidence + internal-only/PII + available source/disclosure metadata. +- [x] T015 Ensure the policy emits mandatory disclosures, warnings, blocking reasons, and proof states without provider/Graph calls. +- [x] T016 Preserve the distinction between independently proven and assumed safety signals; do not silently treat current boolean assumptions as verified truth. +- [x] T017 Keep blocking and boundary behavior derived-only inside the current rendered-report flow; do not implement scheduling, approval, send, or future-consumer delivery semantics. + +## Phase 5: Rendered Report Integration + +- [x] T018 Update the existing signed rendered-report URL seams (`ReviewPackService::generateRenderedReportUrl()` callers/helpers and `apps/platform/app/Http/Controllers/ReviewPackRenderedReportController.php`) to resolve an effective profile on the existing authenticated report route without adding an unsigned ad hoc query contract. +- [x] T019 Keep the controller-local implementation bounded; no extra cross-domain viewer framework was introduced. +- [x] T020 Apply profile-aware section and appendix filtering while guaranteeing that mandatory disclosures, readiness, evidence state, and source metadata still render. +- [x] T021 Show effective profile and audience metadata in the report payload and keep invalid or placeholder profile requests truthfully limited or blocked. +- [x] T022 Keep the current `ReviewPack` route, current-export guard, and existing ZIP/download contract intact. + +## Phase 6: UI Surfaces And Localization + +- [x] T023 Update `apps/platform/resources/views/review-packs/rendered-report.blade.php` so the report visibly shows profile, audience, readiness, limitations, disclosure/proof-state information, and generated/source metadata. +- [x] T024 Update existing owner-surface report URL helpers/labels in `EnvironmentReviewResource` and `ReviewPackResource` so the profile-aware handoff stays clear without creating a management UI. +- [x] T025 Add EN and DE localization keys in: + - `apps/platform/lang/en/localization.php` + - `apps/platform/lang/de/localization.php` + for profile names, audience labels, external-sharing warnings, proof-state labels, and mandatory disclosure copy. +- [x] T026 Keep the report read-only; do not add destructive or state-mutating actions. + +## Phase 7: UI Audit Follow-Through + +- [x] T027 Inspect `docs/ui-ux-enterprise-audit/page-reports/ui-006-customer-review-workspace.md`; no material hierarchy change required an update. +- [x] T028 Inspect `docs/ui-ux-enterprise-audit/page-reports/ui-042-review-pack-detail.md`; no rendered-report vs ZIP hierarchy change required an update. +- [x] T029 Update `docs/ui-ux-enterprise-audit/page-reports/ui-099-rendered-review-report.md` with profile metadata, disclosure-proof behavior, and bounded audience modes. +- [x] T030 Inspect `docs/ui-ux-enterprise-audit/route-inventory.md` and `design-coverage-matrix.md`; no material route-classification change required an update. + +## Phase 8: Validation And Close-Out + +- [x] T031 Run: + - `cd apps/platform && ./vendor/bin/sail artisan test tests/Unit/Support/ReviewPacks/Spec357ReportProfileRegistryTest.php tests/Unit/Support/ReviewPacks/Spec357ReportDisclosurePolicyTest.php tests/Feature/ReviewPack/Spec357RenderedReportProfileTest.php --compact` +- [x] T032 Run: + - `cd apps/platform && ./vendor/bin/sail php vendor/bin/pest tests/Browser/Spec357ReportProfilesSmokeTest.php --compact` +- [x] T033 Run focused regressions: + - `cd apps/platform && ./vendor/bin/sail artisan test --compact --filter=Spec356` returned `No tests found` + - `cd apps/platform && ./vendor/bin/sail artisan test tests/Feature/ReviewPack/ReviewPackDownloadTest.php tests/Feature/ReviewPack/EnvironmentReviewDerivedReviewPackTest.php tests/Feature/EnvironmentReview/EnvironmentReviewExecutivePackTest.php --compact` passed + - `cd apps/platform && ./vendor/bin/sail php vendor/bin/pest tests/Browser/Reviews/CustomerReviewWorkspaceSmokeTest.php --compact` passed + - broader filters surfaced unrelated existing failures in `tests/Browser/Spec347ReviewPackOutputReadinessSmokeTest.php` and `tests/Feature/Filament/EnvironmentReviewHeaderDisciplineTest.php` +- [x] T034 Run formatting and patch checks: + - `cd apps/platform && ./vendor/bin/sail pint --dirty` + - `cd apps/platform && ./vendor/bin/sail pint app/Support/ReviewPacks/ReportProfileRegistry.php app/Support/ReviewPacks/ReportDisclosurePolicy.php app/Support/ReviewPacks/ReviewPackOutputResolutionGuidance.php app/Http/Controllers/ReviewPackRenderedReportController.php app/Filament/Resources/EnvironmentReviewResource.php app/Filament/Resources/ReviewPackResource/Pages/ViewReviewPack.php lang/en/localization.php lang/de/localization.php tests/Unit/Support/ReviewPacks/Spec357ReportProfileRegistryTest.php tests/Unit/Support/ReviewPacks/Spec357ReportDisclosurePolicyTest.php tests/Feature/ReviewPack/Spec357RenderedReportProfileTest.php tests/Browser/Spec357ReportProfilesSmokeTest.php` + - `git diff --check` +- [x] T035 Save browser screenshots under `specs/357-report-profiles-disclosure-policy-v1/artifacts/screenshots/`. +- [x] T036 Report full-suite status honestly if not run. + +## Non-Goals + +- [x] NT001 Do not add a `report_profiles` table, profile CRUD, or any profile persistence. +- [x] NT002 Do not add scheduled delivery, approval workflow, email sending, or any public link/share contract. +- [x] NT003 Do not add a second rendered artifact family or replace the existing `ReviewPack` ZIP family. +- [x] NT004 Do not add native PDF infrastructure, branding editor, or white-label theme management. +- [x] NT005 Do not add AI/HITL runtime behavior or framework-specific NIS2/CIS/BSI report implementation. +- [x] NT006 Do not widen provider, Graph, or authentication boundaries during report rendering.