From 0c0f62fbf118b7b29e492970ca52f3c1f53b04c8 Mon Sep 17 00:00:00 2001 From: Dom Date: Thu, 26 Mar 2026 10:12:21 +0100 Subject: [PATCH] =?UTF-8?q?feat:=20extraction=20OGC=20et=20g=C3=A9n=C3=A9r?= =?UTF-8?q?ation=20de=20PDFs=20propres?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pipeline complet pour extraire les données structurées des fiches OGC scannées (recueil praticien conseil + concertation) et générer des PDFs propres et lisibles à partir des JSON extraits. Co-Authored-By: Claude Opus 4.6 (1M context) --- .gitignore | 20 + extract_ogc.py | 1006 ++++++++++++++++++++ generate_pdf.py | 615 ++++++++++++ output/OGC 1.json | 164 ++++ output/OGC 18.json | 154 +++ output/OGC 20.json | 181 ++++ output/OGC 27.json | 149 +++ output/OGC 29.json | 154 +++ output/OGC 43.json | 29 + output/OGC 55.json | 159 ++++ output/OGC 66.json | 174 ++++ output/OGC 68.json | 154 +++ output/OGC 69.json | 155 +++ output/OGC 7.json | 154 +++ output/OGC 74.json | 149 +++ output/OGC 76.json | 139 +++ output/OGC 84.json | 174 ++++ output/OGC 86.json | 174 ++++ output/OGC 9.json | 161 ++++ output/OGC 97.json | 154 +++ output/OGC 99.json | 189 ++++ output/OGC_2018_CARC_resultats.xlsx | Bin 0 -> 12046 bytes output/pdf_propres_ocg.zip | Bin 0 -> 101339 bytes output/pdf_propres_ocg/OGC 1 - propre.pdf | 99 ++ output/pdf_propres_ocg/OGC 18 - propre.pdf | 99 ++ output/pdf_propres_ocg/OGC 20 - propre.pdf | 99 ++ output/pdf_propres_ocg/OGC 27 - propre.pdf | 99 ++ output/pdf_propres_ocg/OGC 29 - propre.pdf | 99 ++ output/pdf_propres_ocg/OGC 43 - propre.pdf | 93 ++ output/pdf_propres_ocg/OGC 55 - propre.pdf | 99 ++ output/pdf_propres_ocg/OGC 66 - propre.pdf | 99 ++ output/pdf_propres_ocg/OGC 68 - propre.pdf | 99 ++ output/pdf_propres_ocg/OGC 69 - propre.pdf | 99 ++ output/pdf_propres_ocg/OGC 7 - propre.pdf | 99 ++ output/pdf_propres_ocg/OGC 74 - propre.pdf | 99 ++ output/pdf_propres_ocg/OGC 76 - propre.pdf | 99 ++ output/pdf_propres_ocg/OGC 84 - propre.pdf | 99 ++ output/pdf_propres_ocg/OGC 86 - propre.pdf | 99 ++ output/pdf_propres_ocg/OGC 9 - propre.pdf | 99 ++ output/pdf_propres_ocg/OGC 97 - propre.pdf | 99 ++ output/pdf_propres_ocg/OGC 99 - propre.pdf | 99 ++ 41 files changed, 6184 insertions(+) create mode 100644 .gitignore create mode 100644 extract_ogc.py create mode 100644 generate_pdf.py create mode 100644 output/OGC 1.json create mode 100644 output/OGC 18.json create mode 100644 output/OGC 20.json create mode 100644 output/OGC 27.json create mode 100644 output/OGC 29.json create mode 100644 output/OGC 43.json create mode 100644 output/OGC 55.json create mode 100644 output/OGC 66.json create mode 100644 output/OGC 68.json create mode 100644 output/OGC 69.json create mode 100644 output/OGC 7.json create mode 100644 output/OGC 74.json create mode 100644 output/OGC 76.json create mode 100644 output/OGC 84.json create mode 100644 output/OGC 86.json create mode 100644 output/OGC 9.json create mode 100644 output/OGC 97.json create mode 100644 output/OGC 99.json create mode 100644 output/OGC_2018_CARC_resultats.xlsx create mode 100644 output/pdf_propres_ocg.zip create mode 100644 output/pdf_propres_ocg/OGC 1 - propre.pdf create mode 100644 output/pdf_propres_ocg/OGC 18 - propre.pdf create mode 100644 output/pdf_propres_ocg/OGC 20 - propre.pdf create mode 100644 output/pdf_propres_ocg/OGC 27 - propre.pdf create mode 100644 output/pdf_propres_ocg/OGC 29 - propre.pdf create mode 100644 output/pdf_propres_ocg/OGC 43 - propre.pdf create mode 100644 output/pdf_propres_ocg/OGC 55 - propre.pdf create mode 100644 output/pdf_propres_ocg/OGC 66 - propre.pdf create mode 100644 output/pdf_propres_ocg/OGC 68 - propre.pdf create mode 100644 output/pdf_propres_ocg/OGC 69 - propre.pdf create mode 100644 output/pdf_propres_ocg/OGC 7 - propre.pdf create mode 100644 output/pdf_propres_ocg/OGC 74 - propre.pdf create mode 100644 output/pdf_propres_ocg/OGC 76 - propre.pdf create mode 100644 output/pdf_propres_ocg/OGC 84 - propre.pdf create mode 100644 output/pdf_propres_ocg/OGC 86 - propre.pdf create mode 100644 output/pdf_propres_ocg/OGC 9 - propre.pdf create mode 100644 output/pdf_propres_ocg/OGC 97 - propre.pdf create mode 100644 output/pdf_propres_ocg/OGC 99 - propre.pdf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..671a430 --- /dev/null +++ b/.gitignore @@ -0,0 +1,20 @@ +# Données sources (scans) +2018 CARC/ +2018 CARC.zip + +# Debug +debug_images/ +debug_zones/ + +# Outputs générés +output/pdf_propres/ + +# Python +__pycache__/ +*.pyc +.venv/ +venv/ + +# IDE +.vscode/ +.idea/ diff --git a/extract_ogc.py b/extract_ogc.py new file mode 100644 index 0000000..5dabfaa --- /dev/null +++ b/extract_ogc.py @@ -0,0 +1,1006 @@ +""" +Extraction structurée des fiches OGC (contrôle T2A) +Pipeline : PDF scan → images → docTR OCR par zones → VLM correction → données structurées +""" +import os +import re +import json +import glob +import base64 +import io +import fitz # PyMuPDF +import numpy as np +import requests +from PIL import Image +from doctr.models import ocr_predictor + +# ============================================================ +# Configuration Ollama VLM +# ============================================================ +OLLAMA_URL = "http://localhost:11434/api/generate" +VLM_MODEL = "gemma3:27b-cloud" + +# ============================================================ +# Zones d'extraction — coordonnées relatives (0-1) sur la page +# Format: (x_min, y_min, x_max, y_max) +# ============================================================ + +ZONES_PAGE1 = { + # --- En-tête --- + "etablissement": (0.020, 0.060, 0.520, 0.085), + "finess": (0.520, 0.060, 0.720, 0.085), + "date_debut_controle": (0.720, 0.060, 0.960, 0.085), + "n_ogc": (0.780, 0.088, 0.960, 0.115), + "n_champ": (0.020, 0.088, 0.120, 0.110), + "dates_sejour": (0.250, 0.110, 0.600, 0.135), + + # --- Données du séjour — ligne Établissement --- + "age_etab": (0.120, 0.185, 0.195, 0.208), + "sexe_etab": (0.218, 0.185, 0.260, 0.208), + "duree_sejour_etab": (0.435, 0.185, 0.485, 0.208), + "mode_entree_etab": (0.495, 0.185, 0.540, 0.208), + "provenance_etab": (0.545, 0.185, 0.595, 0.208), + "mode_sortie_etab": (0.600, 0.185, 0.650, 0.208), + "destination_etab": (0.655, 0.185, 0.710, 0.208), + "nb_seances_etab": (0.710, 0.185, 0.760, 0.208), + "nb_rum_etab": (0.760, 0.185, 0.810, 0.208), + + # --- Données du séjour — ligne Recodage --- + "age_reco": (0.120, 0.210, 0.195, 0.233), + "sexe_reco": (0.218, 0.210, 0.260, 0.233), + "duree_sejour_reco": (0.435, 0.210, 0.485, 0.233), + "mode_entree_reco": (0.495, 0.210, 0.540, 0.233), + "provenance_reco": (0.545, 0.210, 0.595, 0.233), + "mode_sortie_reco": (0.600, 0.210, 0.650, 0.233), + "destination_reco": (0.655, 0.210, 0.710, 0.233), + + # --- Données du RUM --- + "um_etab": (0.370, 0.270, 0.435, 0.293), + "igs_etab": (0.460, 0.270, 0.520, 0.293), + "duree_rum_etab": (0.630, 0.258, 0.690, 0.280), + "dates_rum_etab": (0.545, 0.282, 0.770, 0.302), + "um_reco": (0.370, 0.312, 0.435, 0.335), + "igs_reco": (0.460, 0.312, 0.520, 0.335), + "duree_rum_reco": (0.630, 0.300, 0.690, 0.322), + + # --- Codage Établissement (DP, DR, DAS) --- + "dp_code_etab": (0.065, 0.355, 0.170, 0.375), + "dp_libelle": (0.200, 0.355, 0.770, 0.375), + "dr_code_etab": (0.065, 0.375, 0.170, 0.392), + "das_bloc_etab": (0.065, 0.385, 0.770, 0.475), + + # --- Recodage (colonne droite) --- + "dp_code_reco": (0.785, 0.355, 0.920, 0.375), + "dr_code_reco": (0.785, 0.375, 0.920, 0.392), + "das_bloc_reco": (0.785, 0.385, 0.960, 0.475), + + # --- Actes --- + "actes_bloc_etab": (0.065, 0.680, 0.770, 0.790), + "actes_bloc_reco": (0.785, 0.680, 0.960, 0.790), + + # --- GHM / GHS (ligne unique en bas) --- + "ghm_ghs_ligne": (0.010, 0.808, 0.960, 0.830), + + # --- Décisions --- + "recodage_impactant": (0.010, 0.838, 0.400, 0.858), + "ghs_injustifie": (0.010, 0.857, 0.180, 0.878), + "praticien_conseil": (0.010, 0.898, 0.500, 0.920), +} + +# Zones spéciales pour détection de checkboxes (accord/désaccord page recueil) +# Zone englobant les 2 checkboxes + labels +ZONE_ACCORD_DESACCORD = (0.580, 0.838, 0.850, 0.878) +# Sous-zones des checkboxes individuelles (carrés ~15x15px à 300dpi) +ZONE_CHECKBOX_ACCORD = (0.588, 0.840, 0.610, 0.858) +ZONE_CHECKBOX_DESACCORD = (0.588, 0.860, 0.610, 0.878) + +# Page "Concertation 2/2" — Décision finale +# Corrigé : les zones GHS sont dans le bloc decision_bloc (plus bas que prévu) +ZONES_CONCERTATION_2 = { + "ghs_ligne": (0.030, 0.190, 0.960, 0.230), + "accord_concertation": (0.030, 0.270, 0.960, 0.320), + "date_concertation": (0.100, 0.690, 0.350, 0.730), +} + +# Page "Concertation 1/2" — Argumentaire +ZONES_CONCERTATION_1 = { + "date_concertation_arg": (0.140, 0.125, 0.400, 0.160), + "argumentaire": (0.030, 0.220, 0.960, 0.560), +} + + +# ============================================================ +# Post-traitement — nettoyage des valeurs extraites +# ============================================================ + +def clean_value(text, field_type="text"): + """Nettoie une valeur extraite selon son type""" + if not text: + return "" + + # Supprimer les labels courants capturés dans les zones + labels_to_strip = [ + r"Etablissement\s*:?\s*", + r"FINESS\s*:?\s*", + r"Date?\s*début\s*contrôle\s*:?\s*", + r"[Nn][o°]\s*OGC\s*:?\s*", + r"[Nn][o°]\s*[Cc]hamp\s*:?\s*", + r"Dates?\s*du\s*séjour\s*:?\s*", + r"^[Dd][Pp]\s+", + r"^[Dd][Rr]\s*$", + r"GHM\s*[ée]tablissement\s*:?\s*", + r"GHS\s*[ée]tablissement\s*:?\s*", + r"GHM\s*apr[eè]s\s*recodage\s*:?\s*", + r"GHS\s*apr[eè]s\s*recodage\s*:?\s*", + r"GHS\s*initial\s*:?\s*", + r"GHS\s*avant\s*concertation\s*:?\s*", + r"GHS\s*final\s*apr[eè]s\s*concertation\s*:?\s*", + r"Recodage\s*impactant\s*la\s*facturation\s*:?\s*", + r"GHS\s*injustifi[ée]\s*:?\s*", + r"^Recoaage\s*", # OCR error fréquent pour "Recodage" + r"^Recodage\s*", + ] + cleaned = text + for pattern in labels_to_strip: + cleaned = re.sub(pattern, "", cleaned, flags=re.IGNORECASE).strip() + + # Supprimer les artefacts OCR courants + cleaned = re.sub(r"^\s*[\-/|.]+\s*$", "", cleaned) # Lignes de bruit pur + cleaned = re.sub(r"\s*\|\s*", " | ", cleaned) # Normaliser séparateurs + cleaned = cleaned.strip(" |-./") + + if field_type == "number": + nums = re.findall(r"\d+", cleaned) + if not nums: + return "" + return max(nums, key=lambda x: len(x)) + + if field_type == "code_cim": + match = re.search(r"[A-Z]\d{2,4}\.?\d*\s*\*?", cleaned) + return match.group(0).strip() if match else cleaned + + if field_type == "date": + match = re.search(r"\d{2}/\d{2}/\d{4}", cleaned) + return match.group(0) if match else cleaned + + if field_type == "dates_range": + match = re.search(r"(\d{2}/\d{2}/\d{4})\s*au\s*(\d{2}/\d{2}/\d{4})", cleaned) + if match: + return f"{match.group(1)} au {match.group(2)}" + return cleaned + + return cleaned + + +def clean_dp_libelle(text): + """Nettoie le libellé du DP en supprimant le bruit des zones adjacentes""" + if not text: + return "" + parts = text.split("|") + best = "" + for part in parts: + cleaned = part.strip(" :-.|/") + # Ignorer les parties courtes, le bruit, et les headers capturés + if len(cleaned) > 3 and re.search(r"[A-Z]{3,}", cleaned): + # Exclure les headers de tableau capturés par erreur + if re.search(r"(?i)codage|etablissement|recodage", cleaned): + continue + if len(cleaned) > len(best): + best = cleaned + return best if best else text.strip(" :-.|/") + + +def parse_ghm_ghs_line(text): + """Parse la ligne GHM/GHS qui contient les 4 valeurs""" + result = { + "ghm_etab": "", + "ghs_etab": "", + "ghm_reco": "", + "ghs_reco": "", + } + + ghm_etab = re.search(r"GHM\s*[ée]tablissement\s*:?\s*(\w+)", text, re.IGNORECASE) + ghs_etab = re.search(r"GHS\s*[ée]tablissement\s*:?\s*(\d+)", text, re.IGNORECASE) + ghm_reco = re.search(r"GHM\s*apr[eè]s\s*recodage\s*:?\s*(\w+)", text, re.IGNORECASE) + ghs_reco = re.search(r"GHS\s*apr[eè]s\s*recodage\s*:?\s*(\d+)", text, re.IGNORECASE) + + if ghm_etab: + result["ghm_etab"] = ghm_etab.group(1) + if ghs_etab: + result["ghs_etab"] = ghs_etab.group(1) + if ghm_reco: + result["ghm_reco"] = ghm_reco.group(1) + if ghs_reco: + result["ghs_reco"] = ghs_reco.group(1) + + return result + + +def parse_ghs_concertation_line(text): + """Parse la ligne GHS de la page concertation 2/2""" + result = { + "ghs_initial": "", + "ghs_avant_concertation": "", + "ghs_final": "", + } + + m_init = re.search(r"GHS\s*initial\s*:?\s*(\d+)", text, re.IGNORECASE) + m_avant = re.search(r"GHS\s*avant\s*concertation\s*:?\s*(\d+)", text, re.IGNORECASE) + m_final = re.search(r"GHS\s*final\s*(?:apr[eè]s\s*concertation)?\s*:?\s*(\d+)", text, re.IGNORECASE) + + if m_init: + result["ghs_initial"] = m_init.group(1) + if m_avant: + result["ghs_avant_concertation"] = m_avant.group(1) + if m_final: + result["ghs_final"] = m_final.group(1) + + return result + + +def parse_das_bloc(text): + """Parse un bloc DAS en liste de (code, position, libellé)""" + entries = [] + parts = text.split("|") + i = 0 + while i < len(parts): + part = parts[i].strip() + match = re.match(r"([A-Z]\d{2,4}\.?\d*)\s*(\*?)", part) + if match: + code = match.group(1) + (" *" if match.group(2) else "") + position = "" + libelle = "" + if i + 1 < len(parts): + pos_match = re.match(r"\s*(\d+)\s*$", parts[i + 1].strip()) + if pos_match: + position = pos_match.group(1) + i += 1 + if i + 1 < len(parts): + next_part = parts[i + 1].strip() + if not re.match(r"[A-Z]\d{2,4}", next_part): + libelle = next_part + i += 1 + entries.append({"code": code.strip(), "position": position, "libelle": libelle}) + i += 1 + return entries + + +def parse_actes_bloc(text): + """Parse un bloc d'actes CCAM""" + entries = [] + parts = text.split("|") + i = 0 + while i < len(parts): + part = parts[i].strip() + match = re.match(r"([A-Z]{4}\d{3})", part) + if match: + code = match.group(1) + position = "" + libelle = "" + if i + 1 < len(parts): + pos_match = re.match(r"\s*(\d+)\s*$", parts[i + 1].strip()) + if pos_match: + position = pos_match.group(1) + i += 1 + if i + 1 < len(parts): + next_part = parts[i + 1].strip() + if not re.match(r"[A-Z]{4}\d{3}", next_part): + libelle = next_part + i += 1 + entries.append({"code": code, "position": position, "libelle": libelle}) + i += 1 + return entries + + +# ============================================================ +# Détection de checkboxes par analyse de densité de pixels +# ============================================================ + +def detect_checkbox_state(image, zone): + """Détecte si une checkbox est cochée en analysant la densité de pixels sombres""" + crop = crop_zone(image, zone) + gray = np.array(crop.convert("L")) + # Pixels sombres = < 128 (sur 0-255) + dark_ratio = np.mean(gray < 128) + # Une checkbox cochée (☒) a ~20-40% de pixels sombres + # Une checkbox vide (☐) a ~5-15% de pixels sombres (juste le contour) + return dark_ratio + + +def detect_accord_checkbox(image, debug_dir=None): + """Détecte Accord/Désaccord via analyse visuelle des checkboxes""" + ratio_accord = detect_checkbox_state(image, ZONE_CHECKBOX_ACCORD) + ratio_desaccord = detect_checkbox_state(image, ZONE_CHECKBOX_DESACCORD) + + if debug_dir: + crop_a = crop_zone(image, ZONE_CHECKBOX_ACCORD) + crop_d = crop_zone(image, ZONE_CHECKBOX_DESACCORD) + crop_a.save(os.path.join(debug_dir, "checkbox_accord.png")) + crop_d.save(os.path.join(debug_dir, "checkbox_desaccord.png")) + + # La checkbox cochée a significativement plus de pixels sombres + diff = ratio_accord - ratio_desaccord + if abs(diff) < 0.03: + return "ambigu" + elif diff > 0: + return "accord" + else: + return "désaccord" + + +def detect_accord_concertation(text): + """Détecte la décision de concertation depuis le texte OCR""" + text_lower = text.lower() + if re.search(r"maintien.*(?:avis|initial).*(?:médecin|controleur)", text_lower): + return "maintien_avis_controleur" + if "retour groupage" in text_lower: + return "retour_groupage_dim" + if "autre groupage" in text_lower: + return "autre_groupage" + return text + + +# ============================================================ +# Correction VLM (Ollama gemma3) +# ============================================================ + +def image_to_base64(image, quality=85): + """Convertit une image PIL en base64 JPEG""" + buf = io.BytesIO() + image.save(buf, format="JPEG", quality=quality) + return base64.b64encode(buf.getvalue()).decode() + + +PROMPT_CORRECTION_RECUEIL = """Tu es un expert en codage PMSI/T2A. Voici l'extraction OCR brute d'une fiche de recueil OGC. L'OCR a fait des erreurs. Corrige les erreurs en comparant avec l'image de la fiche. + +Extraction OCR brute : +{doctr_json} + +RÈGLES DE CORRECTION : +1. Corrige les textes garblés (noms, libellés) en lisant l'image +2. Remplis les champs vides si tu peux les lire sur l'image +3. NE MODIFIE PAS les codes GHM/GHS s'ils ont le bon format (2 chiffres + lettre + 3 chiffres, ex: 06C043). NE MODIFIE PAS les codes GHS numériques s'ils sont déjà remplis. +4. Les codes CIM-10 : lettre majuscule + 2-4 chiffres (ex: K650, T814, E8758). Corrige si le format est invalide. +5. Pour accord_desaccord : regarde les cases cochées ☒/☐ sur l'image. Réponds "accord" ou "désaccord". +6. Supprime tout bruit OCR (tirets parasites, caractères aléatoires, séparateurs |) +7. Pour les champs numériques (age, sexe, duree, mode_entree, provenance, mode_sortie, destination) : ne garde que le nombre, sans texte parasite +8. Le praticien_conseil est un nom de médecin (Dr/DR + nom) + +Réponds UNIQUEMENT avec le JSON corrigé, même structure, sans commentaire ni markdown.""" + + +PROMPT_CORRECTION_CONCERTATION = """Tu es un expert en codage PMSI/T2A. Voici l'extraction OCR brute d'une page de concertation OGC. Corrige les erreurs en comparant avec l'image. + +Extraction OCR brute : +{doctr_json} + +RÈGLES : +1. Les GHS sont des nombres à 4 chiffres. Corrige s'ils sont tronqués ou bruités. +2. Pour la décision : "maintien_avis_controleur", "retour_groupage_dim" ou "autre_groupage" selon la case cochée +3. Extrais la date de concertation si visible (format dd/mm/yyyy) +4. Pour l'argumentaire : corrige les erreurs OCR évidentes mais garde le texte complet +5. Supprime tout bruit OCR + +Réponds UNIQUEMENT avec le JSON corrigé, même structure, sans commentaire ni markdown.""" + + +def vlm_correct(image, doctr_parsed, prompt_template, page_type="recueil"): + """Envoie l'image + JSON docTR au VLM pour correction""" + b64 = image_to_base64(image) + prompt = prompt_template.format(doctr_json=json.dumps(doctr_parsed, ensure_ascii=False, indent=2)) + + try: + resp = requests.post(OLLAMA_URL, json={ + "model": VLM_MODEL, + "prompt": prompt, + "images": [b64], + "stream": False, + "options": {"temperature": 0.1, "num_predict": 3000} + }, timeout=120) + + text = resp.json().get("response", "") + # Extraire le JSON de la réponse (peut être entouré de ```) + text = re.sub(r"^```(?:json)?\s*", "", text.strip()) + text = re.sub(r"\s*```$", "", text.strip()) + corrected = json.loads(text) + return corrected + except Exception as e: + print(f" ⚠ VLM correction échouée ({e}), utilisation des données docTR") + return doctr_parsed + + +def merge_recueil(doctr_parsed, vlm_corrected): + """Fusionne les résultats docTR et VLM, en préférant chacun pour ses forces""" + merged = json.loads(json.dumps(vlm_corrected)) # deep copy + + # Préférer docTR pour les codes structurés quand ils sont valides + code_fields_to_protect = [ + ("ghm_etab", r"^\d{2}[A-Z]\d{3}$"), + ("ghm_reco", r"^\d{2}[A-Z]\d{3}$"), + ("ghs_etab", r"^\d{3,5}$"), + ("ghs_reco", r"^\d{3,5}$"), + ] + for field, pattern in code_fields_to_protect: + doctr_val = doctr_parsed.get(field, "") + vlm_val = merged.get(field, "") + # Si docTR a une valeur valide et VLM l'a changée, garder docTR + if doctr_val and re.match(pattern, doctr_val): + merged[field] = doctr_val + + # Protéger les codes CIM valides de docTR dans codage_etab/reco + for section in ["codage_etab", "codage_reco"]: + if section in doctr_parsed and section in merged: + for code_field in ["dp", "dr"]: + doctr_code = doctr_parsed[section].get(code_field, "") + if doctr_code and re.match(r"^[A-Z]\d{2,4}\.?\d*", doctr_code): + # Garder docTR si valide, sauf si VLM a aussi un code valide + vlm_code = merged[section].get(code_field, "") + if not vlm_code or not re.match(r"^[A-Z]\d{2,4}\.?\d*", vlm_code): + merged[section][code_field] = doctr_code + + return merged + + +# ============================================================ +# Fonctions OCR +# ============================================================ + +def pdf_to_images(pdf_path, dpi=300): + """Convertit un PDF en liste d'images PIL""" + doc = fitz.open(pdf_path) + images = [] + mat = fitz.Matrix(dpi / 72, dpi / 72) + for page in doc: + pix = page.get_pixmap(matrix=mat) + img = Image.frombytes("RGB", (pix.width, pix.height), pix.samples) + images.append(img) + doc.close() + return images + + +def crop_zone(image, zone): + """Extrait une zone d'une image PIL (coordonnées relatives 0-1)""" + w, h = image.size + x1, y1, x2, y2 = zone + return image.crop((int(x1 * w), int(y1 * h), int(x2 * w), int(y2 * h))) + + +def ocr_image(model, image): + """OCR sur une image PIL, retourne les lignes avec confiance""" + crop_np = np.array(image) + result = model([crop_np]) + lines = [] + for page in result.pages: + for block in page.blocks: + for line in block.lines: + text = " ".join(w.value for w in line.words) + conf = sum(w.confidence for w in line.words) / len(line.words) if line.words else 0 + lines.append({"text": text, "confidence": conf}) + return lines + + +def ocr_zone(model, image, zone, debug_dir=None, zone_name=None): + """OCR sur une zone spécifique""" + crop = crop_zone(image, zone) + if debug_dir and zone_name: + crop.save(os.path.join(debug_dir, f"zone_{zone_name}.png")) + return ocr_image(model, crop) + + +def extract_text(lines): + """Concatène les lignes en texte simple""" + return " | ".join(l["text"] for l in lines if l["text"].strip()) + + +def detect_page_type(model, image): + """Détecte le type de page en cherchant des marqueurs textuels""" + header_zone = (0.020, 0.005, 0.950, 0.085) + lines = ocr_zone(model, image, header_zone) + header_text = extract_text(lines).upper() + + if "RECUEIL DU PRATICIEN" in header_text: + return "recueil" + elif "CONCERTATION 2/2" in header_text: + return "concertation_2" + elif "CONCERTATION 1/2" in header_text: + return "concertation_1" + elif "HOSPITALISATION" in header_text: + return "commentaires" + elif "PREUVE" in header_text or "ELEMENT" in header_text: + return "elements_preuve" + elif "CONCERTATION" in header_text: + return "concertation_medicale" + else: + return "inconnu" + + +# ============================================================ +# Extraction par type de page +# ============================================================ + +def extract_page_recueil(model, image, debug_dir=None): + """Extrait les données de la fiche de recueil (page 1)""" + raw = {} + for zone_name, zone_coords in ZONES_PAGE1.items(): + lines = ocr_zone(model, image, zone_coords, debug_dir, zone_name) + raw[zone_name] = extract_text(lines) + + # Post-traitement structuré + ghm_ghs = parse_ghm_ghs_line(raw.get("ghm_ghs_ligne", "")) + das_etab = parse_das_bloc(raw.get("das_bloc_etab", "")) + das_reco = parse_das_bloc(raw.get("das_bloc_reco", "")) + actes_etab = parse_actes_bloc(raw.get("actes_bloc_etab", "")) + actes_reco = parse_actes_bloc(raw.get("actes_bloc_reco", "")) + + # Détection accord/désaccord par analyse visuelle des checkboxes + accord = detect_accord_checkbox(image, debug_dir) + + return { + "raw": raw, + "parsed": { + "etablissement": clean_value(raw["etablissement"]), + "finess": clean_value(raw["finess"]).split("|")[0].strip(), + "date_debut_controle": clean_value(raw["date_debut_controle"], "date"), + "n_ogc": clean_value(raw["n_ogc"], "number"), + "n_champ": clean_value(raw["n_champ"], "number"), + "dates_sejour": clean_value(raw["dates_sejour"], "dates_range"), + + "sejour_etab": { + "age": clean_value(raw["age_etab"], "number"), + "sexe": clean_value(raw["sexe_etab"], "number"), + "duree_sejour": clean_value(raw["duree_sejour_etab"], "number"), + "mode_entree": clean_value(raw["mode_entree_etab"], "number"), + "provenance": clean_value(raw["provenance_etab"], "number"), + "mode_sortie": clean_value(raw["mode_sortie_etab"], "number"), + "destination": clean_value(raw["destination_etab"], "number"), + }, + "sejour_reco": { + "age": clean_value(raw["age_reco"], "number"), + "sexe": clean_value(raw["sexe_reco"], "number"), + "duree_sejour": clean_value(raw["duree_sejour_reco"], "number"), + "mode_entree": clean_value(raw["mode_entree_reco"], "number"), + "provenance": clean_value(raw["provenance_reco"], "number"), + "mode_sortie": clean_value(raw["mode_sortie_reco"], "number"), + "destination": clean_value(raw["destination_reco"], "number"), + }, + + "rum_etab": { + "um": clean_value(raw["um_etab"]), + "igs": clean_value(raw["igs_etab"], "number"), + "duree": clean_value(raw["duree_rum_etab"], "number"), + "dates": clean_value(raw["dates_rum_etab"]), + }, + + "codage_etab": { + "dp": clean_value(raw["dp_code_etab"], "code_cim"), + "dp_libelle": clean_dp_libelle(raw["dp_libelle"]), + "dr": clean_value(raw["dr_code_etab"], "code_cim"), + "das": das_etab, + }, + "codage_reco": { + "dp": clean_value(raw["dp_code_reco"], "code_cim"), + "dr": clean_value(raw["dr_code_reco"], "code_cim"), + "das": das_reco, + }, + + "actes_etab": actes_etab, + "actes_reco": actes_reco, + + "ghm_etab": ghm_ghs["ghm_etab"], + "ghs_etab": ghm_ghs["ghs_etab"], + "ghm_reco": ghm_ghs["ghm_reco"], + "ghs_reco": ghm_ghs["ghs_reco"], + + "recodage_impactant": clean_value(raw["recodage_impactant"], "number"), + "ghs_injustifie": clean_value(raw["ghs_injustifie"], "number"), + "accord_desaccord": accord, + "praticien_conseil": clean_value(raw["praticien_conseil"]), + }, + } + + +def extract_page_concertation_1(model, image, debug_dir=None): + """Extrait l'argumentaire du médecin contrôleur""" + raw = {} + for zone_name, zone_coords in ZONES_CONCERTATION_1.items(): + lines = ocr_zone(model, image, zone_coords, debug_dir, f"conc1_{zone_name}") + raw[zone_name] = extract_text(lines) + + return { + "raw": raw, + "parsed": { + "date_concertation": clean_value(raw.get("date_concertation_arg", ""), "date"), + "argumentaire": raw.get("argumentaire", ""), + }, + } + + +def extract_page_concertation_2(model, image, debug_dir=None): + """Extrait la décision finale après concertation""" + raw = {} + for zone_name, zone_coords in ZONES_CONCERTATION_2.items(): + lines = ocr_zone(model, image, zone_coords, debug_dir, f"conc2_{zone_name}") + raw[zone_name] = extract_text(lines) + + # Parser la ligne GHS depuis la zone corrigée + ghs_data = parse_ghs_concertation_line(raw.get("ghs_ligne", "")) + + # Détecter la décision de concertation + accord_text = raw.get("accord_concertation", "") + decision = detect_accord_concertation(accord_text) + + return { + "raw": raw, + "parsed": { + "ghs_initial": ghs_data["ghs_initial"], + "ghs_avant_concertation": ghs_data["ghs_avant_concertation"], + "ghs_final": ghs_data["ghs_final"], + "decision": decision, + "accord_concertation_raw": accord_text, + "date_concertation": clean_value(raw.get("date_concertation", ""), "date"), + }, + } + + +# ============================================================ +# Extraction complète d'un dossier OGC +# ============================================================ + +def extract_ogc(pdf_path, model, debug=False, use_vlm=True): + """Extraction complète d'un dossier OGC""" + basename = os.path.splitext(os.path.basename(pdf_path))[0] + debug_dir = None + if debug: + debug_dir = os.path.join(os.path.dirname(pdf_path), "..", "debug_zones", basename) + os.makedirs(debug_dir, exist_ok=True) + + print(f"\n{'='*60}") + print(f" Extraction: {basename}") + print(f"{'='*60}") + + images = pdf_to_images(pdf_path) + + # Auto-détection des types de pages + print(f" Détection des pages...") + page_types = {} + for i, img in enumerate(images): + ptype = detect_page_type(model, img) + page_types[i] = ptype + print(f" Page {i+1}: {ptype}") + + result = {"fichier": basename, "recueil": None, "concertation_1": None, "concertation_2": None} + + for page_idx, ptype in page_types.items(): + if ptype == "recueil": + print(f" Extraction page {page_idx+1} (recueil)...") + recueil = extract_page_recueil(model, images[page_idx], debug_dir) + + if use_vlm: + print(f" Correction VLM (recueil)...") + vlm_corrected = vlm_correct( + images[page_idx], recueil["parsed"], + PROMPT_CORRECTION_RECUEIL, "recueil" + ) + recueil["parsed"] = merge_recueil(recueil["parsed"], vlm_corrected) + + result["recueil"] = recueil + + elif ptype == "concertation_1": + print(f" Extraction page {page_idx+1} (argumentaire)...") + conc1 = extract_page_concertation_1(model, images[page_idx], debug_dir) + + if use_vlm: + print(f" Correction VLM (argumentaire)...") + vlm_corrected = vlm_correct( + images[page_idx], conc1["parsed"], + PROMPT_CORRECTION_CONCERTATION, "concertation_1" + ) + conc1["parsed"] = vlm_corrected + + result["concertation_1"] = conc1 + + elif ptype == "concertation_2": + print(f" Extraction page {page_idx+1} (décision finale)...") + conc2 = extract_page_concertation_2(model, images[page_idx], debug_dir) + + if use_vlm: + print(f" Correction VLM (décision finale)...") + vlm_corrected = vlm_correct( + images[page_idx], conc2["parsed"], + PROMPT_CORRECTION_CONCERTATION, "concertation_2" + ) + conc2["parsed"] = vlm_corrected + + result["concertation_2"] = conc2 + + return result + + +def print_results(result): + """Affiche les résultats de manière lisible""" + print(f"\n{'─'*60}") + print(f" RÉSULTATS: {result['fichier']}") + print(f"{'─'*60}") + + rec = result.get("recueil", {}) + if rec: + p = rec["parsed"] + print(f"\n [EN-TÊTE]") + print(f" Établissement : {p['etablissement']}") + print(f" FINESS : {p['finess']}") + print(f" Date contrôle : {p['date_debut_controle']}") + print(f" N° OGC : {p['n_ogc']}") + print(f" N° Champ : {p['n_champ']}") + print(f" Dates séjour : {p['dates_sejour']}") + + se = p["sejour_etab"] + print(f"\n [SÉJOUR ÉTABLISSEMENT]") + print(f" Âge: {se['age']} Sexe: {se['sexe']} Durée: {se['duree_sejour']}") + print(f" Mode entrée: {se['mode_entree']} Prov: {se['provenance']} Mode sortie: {se['mode_sortie']} Dest: {se['destination']}") + + sr = p["sejour_reco"] + print(f"\n [SÉJOUR RECODAGE]") + print(f" Âge: {sr['age']} Sexe: {sr['sexe']} Durée: {sr['duree_sejour']}") + print(f" Mode entrée: {sr['mode_entree']} Prov: {sr['provenance']} Mode sortie: {sr['mode_sortie']} Dest: {sr['destination']}") + + rum = p["rum_etab"] + print(f"\n [RUM]") + print(f" UM: {rum['um']} IGS: {rum['igs']} Durée: {rum['duree']} Dates: {rum['dates']}") + + ce = p.get("codage_etab", {}) + print(f"\n [CODAGE ÉTABLISSEMENT]") + print(f" DP: {ce.get('dp','')} ({ce.get('dp_libelle','')})") + print(f" DR: {ce.get('dr','')}") + for das in ce.get("das", []): + print(f" DAS: {das.get('code','')} pos={das.get('position','')} {das.get('libelle','')}") + + cr = p.get("codage_reco", {}) + print(f"\n [RECODAGE]") + print(f" DP: {cr.get('dp','')}") + print(f" DR: {cr['dr']}") + for das in cr.get("das", []): + print(f" DAS: {das.get('code','')} pos={das.get('position','')} {das.get('libelle','')}") + + if p.get("actes_etab"): + print(f"\n [ACTES ÉTABLISSEMENT]") + for a in p["actes_etab"]: + if isinstance(a, dict): + print(f" {a.get('code','')} pos={a.get('position','')} {a.get('libelle','')}") + else: + print(f" {a}") + + if p.get("actes_reco"): + print(f"\n [ACTES RECODAGE]") + for a in p["actes_reco"]: + if isinstance(a, dict): + print(f" {a.get('code','')} pos={a.get('position','')} {a.get('libelle','')}") + else: + print(f" {a}") + + print(f"\n [GHM/GHS]") + print(f" Établissement : GHM={p['ghm_etab']} GHS={p['ghs_etab']}") + print(f" Recodage : GHM={p['ghm_reco']} GHS={p['ghs_reco']}") + + print(f"\n [DÉCISIONS]") + print(f" Recodage impactant : {p['recodage_impactant']}") + print(f" GHS injustifié : {p['ghs_injustifie']}") + print(f" Accord/Désaccord : {p['accord_desaccord']}") + print(f" Praticien : {p['praticien_conseil']}") + + c2 = result.get("concertation_2", {}) + if c2: + p2 = c2["parsed"] + print(f"\n [CONCERTATION — Décision finale]") + print(f" GHS initial : {p2['ghs_initial']}") + print(f" GHS avant concertation : {p2['ghs_avant_concertation']}") + print(f" GHS final : {p2['ghs_final']}") + print(f" Décision : {p2['decision']}") + print(f" Date : {p2['date_concertation']}") + + c1 = result.get("concertation_1", {}) + if c1: + p1 = c1["parsed"] + arg = p1.get("argumentaire", "") + print(f"\n [ARGUMENTAIRE]") + print(f" Date : {p1['date_concertation']}") + if arg: + for line in arg.split("|")[:5]: + print(f" {line.strip()}") + + +# ============================================================ +# Export Excel consolidé +# ============================================================ + +def export_excel(all_results, output_path): + """Exporte tous les résultats en un fichier Excel consolidé""" + try: + import openpyxl + from openpyxl.styles import Font, Alignment, PatternFill, Border, Side + except ImportError: + print(" ERREUR: openpyxl requis pour l'export Excel. pip install openpyxl") + return + + wb = openpyxl.Workbook() + ws = wb.active + ws.title = "OGC Résultats" + + # Styles + header_font = Font(bold=True, size=10, color="FFFFFF") + header_fill = PatternFill(start_color="2F5496", end_color="2F5496", fill_type="solid") + header_align = Alignment(horizontal="center", vertical="center", wrap_text=True) + cell_align = Alignment(vertical="center", wrap_text=True) + thin_border = Border( + left=Side(style="thin"), + right=Side(style="thin"), + top=Side(style="thin"), + bottom=Side(style="thin"), + ) + + # En-têtes + headers = [ + "N° OGC", "N° Champ", "Établissement", "FINESS", + "Date contrôle", "Dates séjour", + # Séjour étab + "Âge étab", "Sexe étab", "Durée séjour étab", + "Mode entrée étab", "Provenance étab", "Mode sortie étab", "Destination étab", + # Séjour reco + "Âge reco", "Sexe reco", "Durée séjour reco", + "Mode entrée reco", "Provenance reco", "Mode sortie reco", "Destination reco", + # RUM + "UM étab", "IGS étab", "Durée RUM étab", "Dates RUM", + # Codage + "DP étab", "DP libellé", "DR étab", + "DAS étab", + "DP reco", "DR reco", + "DAS reco", + # Actes + "Actes étab", "Actes reco", + # GHM/GHS + "GHM étab", "GHS étab", "GHM reco", "GHS reco", + # Décisions + "Recodage impactant", "GHS injustifié", + "Accord/Désaccord", "Praticien", + # Concertation + "GHS initial conc.", "GHS avant conc.", "GHS final conc.", + "Décision conc.", "Date concertation", + "Argumentaire (extrait)", + ] + + for col, header in enumerate(headers, 1): + cell = ws.cell(row=1, column=col, value=header) + cell.font = header_font + cell.fill = header_fill + cell.alignment = header_align + cell.border = thin_border + + # Données + for row_idx, result in enumerate(all_results, 2): + rec = result.get("recueil", {}) + p = rec.get("parsed", {}) if rec else {} + se = p.get("sejour_etab", {}) + sr = p.get("sejour_reco", {}) + rum = p.get("rum_etab", {}) + ce = p.get("codage_etab", {}) + cr = p.get("codage_reco", {}) + + # Formater DAS/actes comme texte (robuste aux formats VLM variables) + def fmt_entry(d, with_libelle=False): + if isinstance(d, str): + return d + code = d.get("code", "") + pos = d.get("position", "") + lib = d.get("libelle", "") if with_libelle else "" + s = code + if pos: + s += f" (pos {pos})" + if lib: + s += f" {lib}" + return s + + das_etab_str = "; ".join(fmt_entry(d, True) for d in ce.get("das", [])) + das_reco_str = "; ".join(fmt_entry(d) for d in cr.get("das", [])) + actes_etab_str = "; ".join(fmt_entry(a) for a in p.get("actes_etab", [])) + actes_reco_str = "; ".join(fmt_entry(a) for a in p.get("actes_reco", [])) + + # Concertation + c2 = result.get("concertation_2", {}) + p2 = c2.get("parsed", {}) if c2 else {} + c1 = result.get("concertation_1", {}) + p1 = c1.get("parsed", {}) if c1 else {} + arg = p1.get("argumentaire", "") + # Tronquer l'argumentaire pour Excel + arg_short = arg.replace(" | ", "\n")[:500] if arg else "" + + values = [ + p.get("n_ogc", ""), + p.get("n_champ", ""), + p.get("etablissement", ""), + p.get("finess", ""), + p.get("date_debut_controle", ""), + p.get("dates_sejour", ""), + se.get("age", ""), se.get("sexe", ""), se.get("duree_sejour", ""), + se.get("mode_entree", ""), se.get("provenance", ""), + se.get("mode_sortie", ""), se.get("destination", ""), + sr.get("age", ""), sr.get("sexe", ""), sr.get("duree_sejour", ""), + sr.get("mode_entree", ""), sr.get("provenance", ""), + sr.get("mode_sortie", ""), sr.get("destination", ""), + rum.get("um", ""), rum.get("igs", ""), rum.get("duree", ""), rum.get("dates", ""), + ce.get("dp", ""), ce.get("dp_libelle", ""), ce.get("dr", ""), + das_etab_str, + cr.get("dp", ""), cr.get("dr", ""), + das_reco_str, + actes_etab_str, actes_reco_str, + p.get("ghm_etab", ""), p.get("ghs_etab", ""), + p.get("ghm_reco", ""), p.get("ghs_reco", ""), + p.get("recodage_impactant", ""), p.get("ghs_injustifie", ""), + p.get("accord_desaccord", ""), p.get("praticien_conseil", ""), + p2.get("ghs_initial", ""), p2.get("ghs_avant_concertation", ""), + p2.get("ghs_final", ""), + p2.get("decision", ""), p2.get("date_concertation", ""), + arg_short, + ] + + for col, value in enumerate(values, 1): + cell = ws.cell(row=row_idx, column=col, value=value) + cell.alignment = cell_align + cell.border = thin_border + + # Largeurs de colonnes automatiques + for col in range(1, len(headers) + 1): + max_len = len(str(ws.cell(row=1, column=col).value)) + for row in range(2, ws.max_row + 1): + val = ws.cell(row=row, column=col).value + if val: + max_len = max(max_len, min(len(str(val)), 40)) + ws.column_dimensions[openpyxl.utils.get_column_letter(col)].width = max_len + 2 + + # Figer la première ligne + ws.freeze_panes = "A2" + + wb.save(output_path) + print(f" Excel exporté: {output_path}") + + +# ============================================================ +# Main — traitement de tous les PDFs +# ============================================================ + +if __name__ == "__main__": + pdf_dir = "/home/dom/ai/Aivanov_scan_ogc/2018 CARC" + output_dir = "/home/dom/ai/Aivanov_scan_ogc/output" + os.makedirs(output_dir, exist_ok=True) + + print("Chargement du modèle docTR...") + model = ocr_predictor(det_arch='db_resnet50', reco_arch='crnn_vgg16_bn', pretrained=True) + + # Tous les PDFs du répertoire + pdf_files = sorted(glob.glob(os.path.join(pdf_dir, "OGC *.pdf"))) + print(f" {len(pdf_files)} fichiers PDF trouvés") + + all_results = [] + for pdf_path in pdf_files: + try: + result = extract_ogc(pdf_path, model, debug=True) + print_results(result) + all_results.append(result) + + # JSON par dossier + json_path = os.path.join(output_dir, f"{result['fichier']}.json") + with open(json_path, "w", encoding="utf-8") as f: + json.dump(result, f, ensure_ascii=False, indent=2) + except Exception as e: + print(f" ERREUR sur {os.path.basename(pdf_path)}: {e}") + import traceback + traceback.print_exc() + + # Export Excel consolidé + if all_results: + excel_path = os.path.join(output_dir, "OGC_2018_CARC_resultats.xlsx") + export_excel(all_results, excel_path) + + print(f"\n{'='*60}") + print(f" {len(all_results)} dossiers traités sur {len(pdf_files)}") + print(f" JSON individuels: {output_dir}/") + print(f" Excel consolidé: {output_dir}/OGC_2018_CARC_resultats.xlsx") + print(f"{'='*60}") diff --git a/generate_pdf.py b/generate_pdf.py new file mode 100644 index 0000000..0382b9d --- /dev/null +++ b/generate_pdf.py @@ -0,0 +1,615 @@ +""" +Génération de PDFs propres à partir des données OGC extraites +Reproduit fidèlement le formulaire "Fiche médicale de recueil du praticien conseil" +""" +import os +import json +import glob +from reportlab.lib import colors +from reportlab.lib.pagesizes import A4 +from reportlab.lib.units import mm, cm +from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle +from reportlab.platypus import ( + SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer, KeepTogether +) +from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_RIGHT + + +# ============================================================ +# Styles +# ============================================================ + +PAGE_W, PAGE_H = A4 # 210 x 297 mm + +styles = getSampleStyleSheet() + +STYLE_TITLE = ParagraphStyle( + "title_ogc", parent=styles["Normal"], + fontSize=9, fontName="Helvetica-Bold", alignment=TA_CENTER, leading=11, +) +STYLE_SUBTITLE = ParagraphStyle( + "subtitle_ogc", parent=styles["Normal"], + fontSize=6.5, fontName="Helvetica-Oblique", alignment=TA_CENTER, leading=8, +) +STYLE_HEADER = ParagraphStyle( + "header_ogc", parent=styles["Normal"], + fontSize=7.5, fontName="Helvetica-Bold", alignment=TA_LEFT, leading=9, +) +STYLE_CELL = ParagraphStyle( + "cell_ogc", parent=styles["Normal"], + fontSize=7, fontName="Helvetica", alignment=TA_CENTER, leading=9, +) +STYLE_CELL_LEFT = ParagraphStyle( + "cell_left_ogc", parent=styles["Normal"], + fontSize=7, fontName="Helvetica", alignment=TA_LEFT, leading=9, +) +STYLE_CELL_BOLD = ParagraphStyle( + "cell_bold_ogc", parent=styles["Normal"], + fontSize=7, fontName="Helvetica-Bold", alignment=TA_CENTER, leading=9, +) +STYLE_CELL_SMALL = ParagraphStyle( + "cell_small_ogc", parent=styles["Normal"], + fontSize=6, fontName="Helvetica", alignment=TA_CENTER, leading=7.5, +) +STYLE_SECTION = ParagraphStyle( + "section_ogc", parent=styles["Normal"], + fontSize=7.5, fontName="Helvetica-Bold", alignment=TA_CENTER, + leading=9, backColor=colors.Color(0.85, 0.85, 0.85), +) +STYLE_BODY = ParagraphStyle( + "body_ogc", parent=styles["Normal"], + fontSize=7, fontName="Helvetica", alignment=TA_LEFT, leading=9, + spaceBefore=2, spaceAfter=2, +) +STYLE_FOOTER = ParagraphStyle( + "footer_ogc", parent=styles["Normal"], + fontSize=5.5, fontName="Helvetica-Oblique", alignment=TA_LEFT, leading=7, +) + +# Couleurs +GREY_BG = colors.Color(0.90, 0.90, 0.90) +DARK_HEADER = colors.Color(0.18, 0.31, 0.59) +WHITE = colors.white +BLACK = colors.black + + +def P(text, style=STYLE_CELL): + """Raccourci pour créer un Paragraph""" + return Paragraph(str(text) if text else "", style) + + +def checkbox(checked=False): + """Retourne un caractère checkbox via symbole textuel""" + return "[X]" if checked else "[ ]" + + +DECISION_LABELS = { + "maintien_avis_controleur": "Maintien de l'avis initial du médecin contrôleur", + "retour_groupage_dim": "Retour groupage initial DIM", + "autre_groupage": "Autre groupage", +} + + +# ============================================================ +# Page Recueil +# ============================================================ + +def build_page_recueil(p): + """Construit la page recueil à partir des données parsed""" + elements = [] + + # --- Titre --- + elements.append(P("FICHE MÉDICALE DE RECUEIL DU PRATICIEN CONSEIL (une fiche par RUM)", STYLE_TITLE)) + elements.append(P("(à transmettre au médecin du DIM avant concertation)
Seul le recodage impactant la facturation est renseigné", STYLE_SUBTITLE)) + elements.append(Spacer(1, 3 * mm)) + + # --- En-tête établissement --- + header_data = [ + [ + P(f"Établissement : {p.get('etablissement', '')}", STYLE_CELL_LEFT), + P(f"FINESS : {p.get('finess', '')}", STYLE_CELL_LEFT), + P(f"Date début contrôle : {p.get('date_debut_controle', '')}", STYLE_CELL_LEFT), + ], + ] + t = Table(header_data, colWidths=[85 * mm, 50 * mm, 55 * mm]) + t.setStyle(TableStyle([ + ("BOX", (0, 0), (-1, -1), 0.5, BLACK), + ("INNERGRID", (0, 0), (-1, -1), 0.5, BLACK), + ("VALIGN", (0, 0), (-1, -1), "MIDDLE"), + ("TOPPADDING", (0, 0), (-1, -1), 2), + ("BOTTOMPADDING", (0, 0), (-1, -1), 2), + ])) + elements.append(t) + + # --- N° champ + libellé + N° OGC --- + row2_data = [ + [ + P(f"N° champ : {p.get('n_champ', '')}", STYLE_CELL_LEFT), + P(f"Libellé champ de contrôle : Champ 1 : séjours ayant des caractéristiques communes
séjours de niveau 2 3 et 4 mono RUM", STYLE_CELL_LEFT), + P(f"N° OGC : {p.get('n_ogc', '')}", STYLE_CELL_LEFT), + ], + ] + t = Table(row2_data, colWidths=[30 * mm, 130 * mm, 30 * mm]) + t.setStyle(TableStyle([ + ("BOX", (0, 0), (-1, -1), 0.5, BLACK), + ("INNERGRID", (0, 0), (-1, -1), 0.5, BLACK), + ("VALIGN", (0, 0), (-1, -1), "MIDDLE"), + ("TOPPADDING", (0, 0), (-1, -1), 2), + ("BOTTOMPADDING", (0, 0), (-1, -1), 2), + ])) + elements.append(t) + + # --- Dates du séjour --- + elements.append(Spacer(1, 1 * mm)) + dates_data = [[ + P(f"Dossier manquant : 0", STYLE_CELL_LEFT), + P(f"Dates du séjour : {p.get('dates_sejour', '')}", STYLE_CELL_LEFT), + ]] + t = Table(dates_data, colWidths=[50 * mm, 140 * mm]) + t.setStyle(TableStyle([ + ("BOX", (0, 0), (-1, -1), 0.5, BLACK), + ("INNERGRID", (0, 0), (-1, -1), 0.5, BLACK), + ("VALIGN", (0, 0), (-1, -1), "MIDDLE"), + ("TOPPADDING", (0, 0), (-1, -1), 2), + ("BOTTOMPADDING", (0, 0), (-1, -1), 2), + ])) + elements.append(t) + elements.append(Spacer(1, 2 * mm)) + + # --- Données du séjour --- + se = p.get("sejour_etab", {}) + sr = p.get("sejour_reco", {}) + col_hdrs = ["", "Âge", "Sexe", "Date\nnais.", "Durée\nséjour", "Mode\nentrée", + "Prove-\nnance", "Mode\nsortie", "Desti-\nnation", "Nb RUM", "Nb DPI", "Nb\nséances", + "Psy\nE&B", "Psy\nD.S"] + col_widths = [22 * mm] + [12 * mm] * 13 + + sejour_data = [ + [P("Données du\nséjour", STYLE_CELL_SMALL)] + [P(h, STYLE_CELL_SMALL) for h in col_hdrs[1:]], + [P("Établissement", STYLE_CELL_SMALL), + P(se.get("age", ""), STYLE_CELL), P(se.get("sexe", ""), STYLE_CELL), + P("", STYLE_CELL), P(se.get("duree_sejour", ""), STYLE_CELL), + P(se.get("mode_entree", ""), STYLE_CELL), P(se.get("provenance", ""), STYLE_CELL), + P(se.get("mode_sortie", ""), STYLE_CELL), P(se.get("destination", ""), STYLE_CELL), + P("", STYLE_CELL), P("", STYLE_CELL), P("", STYLE_CELL), + P("", STYLE_CELL), P("", STYLE_CELL)], + [P("Recodage", STYLE_CELL_SMALL), + P(sr.get("age", ""), STYLE_CELL), P(sr.get("sexe", ""), STYLE_CELL), + P("", STYLE_CELL), P(sr.get("duree_sejour", ""), STYLE_CELL), + P(sr.get("mode_entree", ""), STYLE_CELL), P(sr.get("provenance", ""), STYLE_CELL), + P(sr.get("mode_sortie", ""), STYLE_CELL), P(sr.get("destination", ""), STYLE_CELL), + P("", STYLE_CELL), P("", STYLE_CELL), P("", STYLE_CELL), + P("", STYLE_CELL), P("", STYLE_CELL)], + ] + t = Table(sejour_data, colWidths=col_widths) + t.setStyle(TableStyle([ + ("BOX", (0, 0), (-1, -1), 0.5, BLACK), + ("INNERGRID", (0, 0), (-1, -1), 0.3, BLACK), + ("BACKGROUND", (0, 0), (-1, 0), GREY_BG), + ("BACKGROUND", (0, 1), (0, 2), GREY_BG), + ("VALIGN", (0, 0), (-1, -1), "MIDDLE"), + ("TOPPADDING", (0, 0), (-1, -1), 1), + ("BOTTOMPADDING", (0, 0), (-1, -1), 1), + ])) + elements.append(t) + elements.append(Spacer(1, 2 * mm)) + + # --- Données du RUM --- + rum = p.get("rum_etab", {}) + rum_header = [ + [P("Données du RUM", STYLE_CELL_SMALL), + P("Éts détails SP", STYLE_CELL_SMALL), + P("UM", STYLE_CELL_SMALL), + P("IGS II", STYLE_CELL_SMALL), + P("Durée RUM", STYLE_CELL_SMALL), + P("Nature\nsuppl.", STYLE_CELL_SMALL), + P("Nb\nsuppl.", STYLE_CELL_SMALL)], + ] + t = Table(rum_header, colWidths=[30 * mm, 30 * mm, 25 * mm, 25 * mm, 30 * mm, 25 * mm, 25 * mm]) + t.setStyle(TableStyle([ + ("BOX", (0, 0), (-1, -1), 0.5, BLACK), + ("INNERGRID", (0, 0), (-1, -1), 0.3, BLACK), + ("BACKGROUND", (0, 0), (-1, 0), GREY_BG), + ("VALIGN", (0, 0), (-1, -1), "MIDDLE"), + ("TOPPADDING", (0, 0), (-1, -1), 1), + ("BOTTOMPADDING", (0, 0), (-1, -1), 1), + ])) + elements.append(t) + + # Lignes RUM Établissement et Recodage + rum_lines = [ + [P(f"N° RUM Établissement : 1/1", STYLE_CELL_LEFT), + P("0", STYLE_CELL), + P(rum.get("um", ""), STYLE_CELL), + P(rum.get("igs", ""), STYLE_CELL), + P(rum.get("duree", ""), STYLE_CELL), + P(f"{rum.get('dates', '')}", STYLE_CELL_LEFT)], + [P(f"N° RUM Recodage : 1/1", STYLE_CELL_LEFT), + P("0", STYLE_CELL), + P(rum.get("um", ""), STYLE_CELL), + P("", STYLE_CELL), + P(rum.get("duree", ""), STYLE_CELL), + P(f"{rum.get('dates', '')}", STYLE_CELL_LEFT)], + ] + t = Table(rum_lines, colWidths=[45 * mm, 15 * mm, 25 * mm, 25 * mm, 25 * mm, 55 * mm]) + t.setStyle(TableStyle([ + ("BOX", (0, 0), (-1, -1), 0.5, BLACK), + ("INNERGRID", (0, 0), (-1, -1), 0.3, BLACK), + ("VALIGN", (0, 0), (-1, -1), "MIDDLE"), + ("TOPPADDING", (0, 0), (-1, -1), 1), + ("BOTTOMPADDING", (0, 0), (-1, -1), 1), + ])) + elements.append(t) + elements.append(Spacer(1, 2 * mm)) + + # --- Codage --- + ce = p.get("codage_etab", {}) + cr = p.get("codage_reco", {}) + + # Section header + codage_header = [[ + P("Codage de l'Établissement", STYLE_SECTION), + P("Recodage", STYLE_SECTION), + ]] + t = Table(codage_header, colWidths=[150 * mm, 40 * mm]) + t.setStyle(TableStyle([ + ("BOX", (0, 0), (-1, -1), 0.5, BLACK), + ("INNERGRID", (0, 0), (-1, -1), 0.5, BLACK), + ("BACKGROUND", (0, 0), (-1, 0), GREY_BG), + ])) + elements.append(t) + + # DP + dp_data = [ + [P("DP", STYLE_CELL_BOLD), P(ce.get("dp", ""), STYLE_CELL), + P(ce.get("dp_libelle", ""), STYLE_CELL_LEFT), + P(cr.get("dp", ""), STYLE_CELL)], + ] + t = Table(dp_data, colWidths=[15 * mm, 25 * mm, 110 * mm, 40 * mm]) + t.setStyle(TableStyle([ + ("BOX", (0, 0), (-1, -1), 0.5, BLACK), + ("INNERGRID", (0, 0), (-1, -1), 0.3, BLACK), + ("VALIGN", (0, 0), (-1, -1), "MIDDLE"), + ("TOPPADDING", (0, 0), (-1, -1), 1), + ("BOTTOMPADDING", (0, 0), (-1, -1), 1), + ])) + elements.append(t) + + # DR + dr_data = [ + [P("DR", STYLE_CELL_BOLD), P(ce.get("dr", ""), STYLE_CELL), + P("", STYLE_CELL_LEFT), + P(cr.get("dr", ""), STYLE_CELL)], + ] + t = Table(dr_data, colWidths=[15 * mm, 25 * mm, 110 * mm, 40 * mm]) + t.setStyle(TableStyle([ + ("BOX", (0, 0), (-1, -1), 0.5, BLACK), + ("INNERGRID", (0, 0), (-1, -1), 0.3, BLACK), + ("VALIGN", (0, 0), (-1, -1), "MIDDLE"), + ("TOPPADDING", (0, 0), (-1, -1), 1), + ("BOTTOMPADDING", (0, 0), (-1, -1), 1), + ])) + elements.append(t) + + # DAS + das_etab = ce.get("das", []) + das_reco = cr.get("das", []) + max_das = max(len(das_etab), len(das_reco), 1) + + das_rows = [[P("DAS", STYLE_CELL_BOLD), + P("Code", STYLE_CELL_SMALL), P("Pos", STYLE_CELL_SMALL), + P("Libellé", STYLE_CELL_SMALL), + P("Code", STYLE_CELL_SMALL), P("Pos", STYLE_CELL_SMALL)]] + + for i in range(max_das): + de = das_etab[i] if i < len(das_etab) else {} + dr_item = das_reco[i] if i < len(das_reco) else {} + if isinstance(de, str): + de = {"code": de} + if isinstance(dr_item, str): + dr_item = {"code": dr_item} + das_rows.append([ + P("", STYLE_CELL), + P(de.get("code", ""), STYLE_CELL), + P(de.get("position", ""), STYLE_CELL), + P(de.get("libelle", ""), STYLE_CELL_LEFT), + P(dr_item.get("code", ""), STYLE_CELL), + P(dr_item.get("position", ""), STYLE_CELL), + ]) + + # Lignes vides si moins de 6 DAS + for _ in range(max(0, 6 - max_das)): + das_rows.append([P("", STYLE_CELL)] * 6) + + t = Table(das_rows, colWidths=[15 * mm, 25 * mm, 12 * mm, 98 * mm, 25 * mm, 15 * mm]) + t.setStyle(TableStyle([ + ("BOX", (0, 0), (-1, -1), 0.5, BLACK), + ("INNERGRID", (0, 0), (-1, -1), 0.3, BLACK), + ("BACKGROUND", (0, 0), (-1, 0), GREY_BG), + ("VALIGN", (0, 0), (-1, -1), "MIDDLE"), + ("TOPPADDING", (0, 0), (-1, -1), 1), + ("BOTTOMPADDING", (0, 0), (-1, -1), 1), + ("SPAN", (0, 0), (0, 0)), + ])) + elements.append(t) + elements.append(Spacer(1, 2 * mm)) + + # --- Actes --- + actes_etab = p.get("actes_etab", []) + actes_reco = p.get("actes_reco", []) + max_actes = max(len(actes_etab), len(actes_reco), 1) + + actes_rows = [[P("Actes", STYLE_CELL_BOLD), + P("Code", STYLE_CELL_SMALL), P("Pos", STYLE_CELL_SMALL), + P("Libellé", STYLE_CELL_SMALL), + P("Code", STYLE_CELL_SMALL), P("Pos", STYLE_CELL_SMALL)]] + + for i in range(max_actes): + ae = actes_etab[i] if i < len(actes_etab) else {} + ar = actes_reco[i] if i < len(actes_reco) else {} + if isinstance(ae, str): + ae = {"code": ae} + if isinstance(ar, str): + ar = {"code": ar} + actes_rows.append([ + P("", STYLE_CELL), + P(ae.get("code", ""), STYLE_CELL), + P(ae.get("position", ae.get("quantite", "")), STYLE_CELL), + P(ae.get("libelle", ""), STYLE_CELL_LEFT), + P(ar.get("code", ""), STYLE_CELL), + P(ar.get("position", ar.get("quantite", "")), STYLE_CELL), + ]) + + # Lignes vides + for _ in range(max(0, 4 - max_actes)): + actes_rows.append([P("", STYLE_CELL)] * 6) + + t = Table(actes_rows, colWidths=[15 * mm, 25 * mm, 12 * mm, 98 * mm, 25 * mm, 15 * mm]) + t.setStyle(TableStyle([ + ("BOX", (0, 0), (-1, -1), 0.5, BLACK), + ("INNERGRID", (0, 0), (-1, -1), 0.3, BLACK), + ("BACKGROUND", (0, 0), (-1, 0), GREY_BG), + ("VALIGN", (0, 0), (-1, -1), "MIDDLE"), + ("TOPPADDING", (0, 0), (-1, -1), 1), + ("BOTTOMPADDING", (0, 0), (-1, -1), 1), + ])) + elements.append(t) + elements.append(Spacer(1, 2 * mm)) + + # --- GHM / GHS --- + ghm_data = [[ + P(f"GHM établissement : {p.get('ghm_etab', '')}", STYLE_CELL_LEFT), + P(f"GHS établissement : {p.get('ghs_etab', '')}", STYLE_CELL_LEFT), + P(f"GHM après recodage : {p.get('ghm_reco', '')}", STYLE_CELL_LEFT), + P(f"GHS après recodage : {p.get('ghs_reco', '')}", STYLE_CELL_LEFT), + ]] + t = Table(ghm_data, colWidths=[50 * mm, 45 * mm, 50 * mm, 45 * mm]) + t.setStyle(TableStyle([ + ("BOX", (0, 0), (-1, -1), 0.5, BLACK), + ("INNERGRID", (0, 0), (-1, -1), 0.3, BLACK), + ("VALIGN", (0, 0), (-1, -1), "MIDDLE"), + ("TOPPADDING", (0, 0), (-1, -1), 2), + ("BOTTOMPADDING", (0, 0), (-1, -1), 2), + ])) + elements.append(t) + + # --- Praticien conseil --- + elements.append(Spacer(1, 1 * mm)) + prat_data = [[ + P("Praticien conseil", STYLE_CELL_LEFT), + P("", STYLE_CELL), + P("Médecin DIM", STYLE_CELL_LEFT), + ]] + t = Table(prat_data, colWidths=[50 * mm, 90 * mm, 50 * mm]) + t.setStyle(TableStyle([ + ("BOX", (0, 0), (-1, -1), 0.5, BLACK), + ("INNERGRID", (0, 0), (-1, -1), 0.3, BLACK), + ])) + elements.append(t) + + # --- Décisions --- + elements.append(Spacer(1, 1 * mm)) + is_accord = p.get("accord_desaccord", "") == "accord" + is_desaccord = p.get("accord_desaccord", "") == "désaccord" + reco_imp = p.get("recodage_impactant", "") + ghs_inj = p.get("ghs_injustifie", "") + + decisions_data = [ + [P(f"Recodage impactant la facturation : {reco_imp}", STYLE_CELL_LEFT), + P(f"Accord {checkbox(is_accord)} Désaccord {checkbox(is_desaccord)}", STYLE_CELL_LEFT)], + [P(f"GHS injustifié : {ghs_inj}", STYLE_CELL_LEFT), + P("", STYLE_CELL)], + ] + t = Table(decisions_data, colWidths=[110 * mm, 80 * mm]) + t.setStyle(TableStyle([ + ("BOX", (0, 0), (-1, -1), 0.5, BLACK), + ("INNERGRID", (0, 0), (-1, -1), 0.3, BLACK), + ("VALIGN", (0, 0), (-1, -1), "MIDDLE"), + ("TOPPADDING", (0, 0), (-1, -1), 2), + ("BOTTOMPADDING", (0, 0), (-1, -1), 2), + ])) + elements.append(t) + + # --- Nom praticien --- + elements.append(Spacer(1, 1 * mm)) + prat_nom_data = [[ + P(f"Nom du praticien conseil responsable du codage :", STYLE_CELL_LEFT), + ]] + t = Table(prat_nom_data, colWidths=[190 * mm]) + t.setStyle(TableStyle([ + ("BOX", (0, 0), (-1, -1), 0.5, BLACK), + ])) + elements.append(t) + + prat_val_data = [[P(f"{p.get('praticien_conseil', '')}", STYLE_CELL_LEFT)]] + t = Table(prat_val_data, colWidths=[190 * mm]) + t.setStyle(TableStyle([ + ("BOX", (0, 0), (-1, -1), 0.5, BLACK), + ("TOPPADDING", (0, 0), (-1, -1), 3), + ("BOTTOMPADDING", (0, 0), (-1, -1), 3), + ])) + elements.append(t) + + # --- Footer --- + elements.append(Spacer(1, 2 * mm)) + elements.append(P( + "En fonction des DR/DR et actes retenus par le PC, seul le recodage d'une des CMA les plus élevées ayant une incidence " + "sur le GHM est sur la facturation des suppléments
" + "sera renseigné. Hors RCI injustifié avec actes externes, seuls les actes classants seront recueillis.", + STYLE_FOOTER + )) + + return elements + + +# ============================================================ +# Page Concertation 2/2 +# ============================================================ + +def build_page_concertation_2(p2): + """Page décision finale concertation""" + elements = [] + elements.append(P("CONCERTATION 2/2 — Décision finale", STYLE_TITLE)) + elements.append(Spacer(1, 5 * mm)) + + # GHS + ghs_data = [[ + P(f"GHS initial : {p2.get('ghs_initial', '')}", STYLE_CELL_LEFT), + P(f"GHS avant concertation : {p2.get('ghs_avant_concertation', '')}", STYLE_CELL_LEFT), + P(f"GHS final après concertation : {p2.get('ghs_final', '')}", STYLE_CELL_LEFT), + ]] + t = Table(ghs_data, colWidths=[63 * mm, 63 * mm, 64 * mm]) + t.setStyle(TableStyle([ + ("BOX", (0, 0), (-1, -1), 0.5, BLACK), + ("INNERGRID", (0, 0), (-1, -1), 0.5, BLACK), + ("VALIGN", (0, 0), (-1, -1), "MIDDLE"), + ("TOPPADDING", (0, 0), (-1, -1), 3), + ("BOTTOMPADDING", (0, 0), (-1, -1), 3), + ])) + elements.append(t) + elements.append(Spacer(1, 3 * mm)) + + # Décision + decision_raw = p2.get("decision", "") + decision = DECISION_LABELS.get(decision_raw, decision_raw) + dec_data = [[ + P(f"Décision : {decision}", STYLE_CELL_LEFT), + ]] + t = Table(dec_data, colWidths=[190 * mm]) + t.setStyle(TableStyle([ + ("BOX", (0, 0), (-1, -1), 0.5, BLACK), + ("TOPPADDING", (0, 0), (-1, -1), 3), + ("BOTTOMPADDING", (0, 0), (-1, -1), 3), + ])) + elements.append(t) + elements.append(Spacer(1, 3 * mm)) + + # Date + date_conc = p2.get("date_concertation", "") + if date_conc: + elements.append(P(f"Date de concertation : {date_conc}", STYLE_CELL_LEFT)) + + return elements + + +# ============================================================ +# Page Concertation 1/2 (Argumentaire) +# ============================================================ + +def build_page_concertation_1(p1): + """Page argumentaire""" + elements = [] + elements.append(P("CONCERTATION 1/2 — Argumentaire du médecin contrôleur", STYLE_TITLE)) + elements.append(Spacer(1, 5 * mm)) + + date_conc = p1.get("date_concertation", "") + if date_conc: + elements.append(P(f"Date : {date_conc}", STYLE_CELL_LEFT)) + elements.append(Spacer(1, 3 * mm)) + + arg = p1.get("argumentaire", "") + if arg: + # Nettoyer les séparateurs | et formater + arg_clean = arg.replace(" | ", "\n").replace("| ", "\n") + elements.append(P(f"Argumentaire :", STYLE_CELL_LEFT)) + elements.append(Spacer(1, 2 * mm)) + + arg_data = [[P(arg_clean, STYLE_BODY)]] + t = Table(arg_data, colWidths=[190 * mm]) + t.setStyle(TableStyle([ + ("BOX", (0, 0), (-1, -1), 0.5, BLACK), + ("TOPPADDING", (0, 0), (-1, -1), 5), + ("BOTTOMPADDING", (0, 0), (-1, -1), 5), + ("LEFTPADDING", (0, 0), (-1, -1), 5), + ("RIGHTPADDING", (0, 0), (-1, -1), 5), + ])) + elements.append(t) + + return elements + + +# ============================================================ +# Génération du PDF complet +# ============================================================ + +def generate_ogc_pdf(result, output_path): + """Génère un PDF propre à partir des données extraites""" + doc = SimpleDocTemplate( + output_path, + pagesize=A4, + leftMargin=10 * mm, rightMargin=10 * mm, + topMargin=10 * mm, bottomMargin=10 * mm, + ) + + elements = [] + + # Page recueil + rec = result.get("recueil") + if rec: + p = rec.get("parsed", {}) + elements.extend(build_page_recueil(p)) + + # Page concertation (argumentaire + décision sur une seule page) + c1 = result.get("concertation_1") + c2 = result.get("concertation_2") + if c1 or c2: + from reportlab.platypus import PageBreak + elements.append(PageBreak()) + if c1: + p1 = c1.get("parsed", {}) + elements.extend(build_page_concertation_1(p1)) + if c2: + elements.append(Spacer(1, 5 * mm)) + p2 = c2.get("parsed", {}) + elements.extend(build_page_concertation_2(p2)) + + doc.build(elements) + + +# ============================================================ +# Main +# ============================================================ + +if __name__ == "__main__": + output_dir = "/home/dom/ai/Aivanov_scan_ogc/output" + pdf_output_dir = os.path.join(output_dir, "pdf_propres") + os.makedirs(pdf_output_dir, exist_ok=True) + + json_files = sorted(glob.glob(os.path.join(output_dir, "OGC *.json"))) + print(f"Génération de {len(json_files)} PDFs propres...") + + for json_path in json_files: + basename = os.path.splitext(os.path.basename(json_path))[0] + with open(json_path, "r", encoding="utf-8") as f: + result = json.load(f) + + pdf_path = os.path.join(pdf_output_dir, f"{basename} - propre.pdf") + try: + generate_ogc_pdf(result, pdf_path) + print(f" ✓ {basename}") + except Exception as e: + print(f" ✗ {basename}: {e}") + import traceback + traceback.print_exc() + + print(f"\nPDFs générés dans: {pdf_output_dir}") diff --git a/output/OGC 1.json b/output/OGC 1.json new file mode 100644 index 0000000..53671a7 --- /dev/null +++ b/output/OGC 1.json @@ -0,0 +1,164 @@ +{ + "fichier": "OGC 1", + "recueil": { + "raw": { + "etablissement": "Etablissement : CLINIQUE DL'ARCACHON", + "finess": "FINESS : 330780206 | Date", + "date_debut_controle": "début contrôle : 13/02/2018", + "n_ogc": "No OGC:1", + "n_champ": "No - champ", + "dates_sejour": "Dates du séjour : 16/02/2016 au 10/03/2016", + "age_etab": "/ 9", + "sexe_etab": "", + "duree_sejour_etab": "- | - | - | -", + "mode_entree_etab": "", + "provenance_etab": "", + "mode_sortie_etab": "-", + "destination_etab": "-", + "nb_seances_etab": "", + "nb_rum_etab": "", + "age_reco": "/ 9", + "sexe_reco": "", + "duree_sejour_reco": "- | - | -", + "mode_entree_reco": "", + "provenance_reco": "- - - - - | :: - | - | - | -", + "mode_sortie_reco": "- : | - | - - | -", + "destination_reco": "", + "um_etab": "- | - | 1 | -", + "igs_etab": "", + "duree_rum_etab": "L - | 3", + "dates_rum_etab": "du 16/02/2016 au 10/03/2016", + "um_reco": "+ | - - | - - - | - - - | -", + "igs_reco": "", + "duree_rum_reco": "- | D | - -", + "dp_code_etab": "K650", + "dp_libelle": "- | . | : : - | PERITONITE AIG.", + "dr_code_etab": "- -", + "das_bloc_etab": "B966 * | 4 | BACILLUS FRAGILIS, CAUSE DE MAL. CLASSEES DANS D'AUTRES CHAP. | C20 | 2 | T.M. DU RECTUM | T814 | 3 | INFECT. APRES UN ACTE, NCA", + "dp_code_reco": "- | - A : | K650", + "dr_code_reco": "", + "das_bloc_reco": "A415 | B966 | C20 | 2 | T814 | 3", + "actes_bloc_etab": "", + "actes_bloc_reco": "", + "ghm_ghs_ligne": "GHM établissement : 06M093 GHS établissement : 2160 GHM après recodage : 06M094 | GHS après recodage : 2161", + "recodage_impactant": "- | Recodage impactant la facturation : 1", + "ghs_injustifie": "GHS injustifié :0", + "praticien_conseil": "DR JP VIGNAU" + }, + "parsed": { + "etablissement": "CLINIQUE D'ARCACHON", + "finess": "330780206", + "date_debut_controle": "13/02/2018", + "n_ogc": "1", + "n_champ": "1", + "dates_sejour": "16/02/2016 au 10/03/2016", + "sejour_etab": { + "age": "79", + "sexe": "2", + "duree_sejour": "23", + "mode_entree": "6", + "provenance": "6", + "mode_sortie": "2", + "destination": "0" + }, + "sejour_reco": { + "age": "79", + "sexe": "2", + "duree_sejour": "23", + "mode_entree": "6", + "provenance": "6", + "mode_sortie": "2", + "destination": "0" + }, + "rum_etab": { + "um": "53C", + "igs": "0", + "duree": "23", + "dates": "du 16/02/2016 au 10/03/2016" + }, + "codage_etab": { + "dp": "K650", + "dp_libelle": "PERITONITE AIG", + "dr": "", + "das": [ + { + "code": "B966", + "position": "4", + "libelle": "BACILLUS FRAGILIS, CAUSE DE MAL. CLASSEES DANS D'AUTRES CHAP." + }, + { + "code": "C20", + "position": "2", + "libelle": "T.M. DU RECTUM" + }, + { + "code": "T814", + "position": "3", + "libelle": "INFECT. APRES UN ACTE, NCA" + } + ] + }, + "codage_reco": { + "dp": "K650", + "dr": "", + "das": [ + { + "code": "A415", + "position": "4", + "libelle": "" + }, + { + "code": "B966", + "position": "4", + "libelle": "" + }, + { + "code": "C20", + "position": "2", + "libelle": "" + }, + { + "code": "T814", + "position": "3", + "libelle": "" + } + ] + }, + "actes_etab": [], + "actes_reco": [], + "ghm_etab": "06M093", + "ghs_etab": "2160", + "ghm_reco": "06M094", + "ghs_reco": "2161", + "recodage_impactant": "1", + "ghs_injustifie": "0", + "accord_desaccord": "accord", + "praticien_conseil": "DR JP VIGNAU" + } + }, + "concertation_1": { + "raw": { + "date_concertation_arg": "sutve | sejouisue | - | - | tion | T. | 3. | - - : | :MS :: 11 a : | AvssivcativicM", + "argumentaire": "102 : La facturation du GHS par l'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non- | respect des règles de codage édictées dans l'annexe I1 de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non- | respect des règles porte sur un diagnostic associé significatif (DAS) codé par r'établissement dans le résumé d'unité médicale (RUM). | Ce DAS n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre IV, paragraphe 2.1: | ( L'enregistrement dans le RUM d'une affection correspondant à la définition d'un DAS est obligatoire >> Au vu des éléments du | dossier du patient, le codage d'un diagnostic correspondant à la définition d'un DAS a été omis par r'établissement." + }, + "parsed": { + "date_concertation": "15/03/2024", + "argumentaire": "102 : La facturation du GHS par l'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non- respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non- respect des règles porte sur un diagnostic associé significatif (DAS) codé par l'établissement dans le résumé d'unité médicale (RUM). Ce DAS n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre IV, paragraphe 2.1 : « L'enregistrement dans le RUM d'une affection correspondant à la définition d'un DAS est obligatoire ». Au vu des éléments du dossier du patient, le codage d'un diagnostic correspondant à la définition d'un DAS a été omis par l'établissement." + } + }, + "concertation_2": { + "raw": { + "ghs_ligne": "GHS initial : 2160 | GHS avant concertation : 2160 | GHS final après concertation : 2161", + "accord_concertation": "Maintien de l'avis initial du médecin contrôleur : | Retour groupage initial DIM : | Autre groupage : | : :: | : :: : S : : : AvictinaldulumeNECIDiioina : : : :! | : : | -", + "date_concertation": "" + }, + "parsed": { + "ghs_initial": "2160", + "ghs_avant_concertation": "2160", + "ghs_final": "2161", + "decision": "maintien_avis_controleur", + "accord_concertation_raw": "Maintien de l'avis initial du médecin contrôleur : Retour groupage initial DIM : Autre groupage : : :: : S : : : AvictinaldulumeNECIDiioina : : : :! : : -", + "date_concertation": "15/03/2018" + } + } +} \ No newline at end of file diff --git a/output/OGC 18.json b/output/OGC 18.json new file mode 100644 index 0000000..3fcecad --- /dev/null +++ b/output/OGC 18.json @@ -0,0 +1,154 @@ +{ + "fichier": "OGC 18", + "recueil": { + "raw": { + "etablissement": "Etablissement : CLINIQUE D'ARCACHON", + "finess": "FINESS - : - - 330780206 | Date", + "date_debut_controle": "début contrôle : 13/02/2018", + "n_ogc": "No OGC:18", + "n_champ": "- | - | - | - - | I | No | champ", + "dates_sejour": "Dates du séjour : 08/03/2016 au 21/03/2016 | à", + "age_etab": "- | 6 - -", + "sexe_etab": "", + "duree_sejour_etab": "", + "mode_entree_etab": "", + "provenance_etab": "", + "mode_sortie_etab": "", + "destination_etab": "", + "nb_seances_etab": "", + "nb_rum_etab": "", + "age_reco": "- 6", + "sexe_reco": "- | -", + "duree_sejour_reco": "I | - | -", + "mode_entree_reco": "", + "provenance_reco": "", + "mode_sortie_reco": "", + "destination_reco": "", + "um_etab": "- | -", + "igs_etab": "", + "duree_rum_etab": "", + "dates_rum_etab": "du 08/03/2016 au 21/03/2016", + "um_reco": "", + "igs_reco": "", + "duree_rum_reco": "- - | - | 1 | C", + "dp_code_etab": "E43", + "dp_libelle": "MALNUTRITION PROTEINO-ENERGETIQUE GRAVE, SAI", + "dr_code_etab": "oGn", + "das_bloc_etab": "J860 | 4 | PYOTHORAX AVEC FISTULE | T858 | 2 | COMPLIC. DE PROTH., IMPL., GREF, INT., NCA | Z511 | 3 | SEANCE DE CHIMIOTHERAPIE POUR TUM.", + "dp_code_reco": "E43", + "dr_code_reco": "TOCO", + "das_bloc_reco": "T858 | 2 | Z511 | 3", + "actes_bloc_etab": "", + "actes_bloc_reco": "", + "ghm_ghs_ligne": "GHM établissement : 10M184 GHS établissement : 3970 GHM après recodage : 10M183 | GHS après recodage : 3969 | Draticion cancail | Médocin DIM", + "recodage_impactant": "Recodage impactant la facturation : 1", + "ghs_injustifie": "GHS injustifié :0 -", + "praticien_conseil": "DR VIGNAU" + }, + "parsed": { + "etablissement": "CLINIQUE D'ARCACHON", + "finess": "330780206", + "date_debut_controle": "13/02/2018", + "n_ogc": "18", + "n_champ": "1", + "dates_sejour": "08/03/2016 au 21/03/2016", + "sejour_etab": { + "age": "66", + "sexe": "1", + "duree_sejour": "13", + "mode_entree": "8", + "provenance": "8", + "mode_sortie": "0", + "destination": "1" + }, + "sejour_reco": { + "age": "66", + "sexe": "1", + "duree_sejour": "13", + "mode_entree": "8", + "provenance": "8", + "mode_sortie": "0", + "destination": "1" + }, + "rum_etab": { + "um": "40 C", + "igs": "0", + "duree": "13", + "dates": "du 08/03/2016 au 21/03/2016" + }, + "codage_etab": { + "dp": "E43", + "dp_libelle": "MALNUTRITION PROTEINO-ENERGETIQUE GRAVE, SAI", + "dr": "oGn", + "das": [ + { + "code": "J860", + "position": "4", + "libelle": "PYOTHORAX AVEC FISTULE" + }, + { + "code": "T858", + "position": "2", + "libelle": "COMPLIC. DE PROTH., IMPL., GREF, INT., NCA" + }, + { + "code": "Z511", + "position": "3", + "libelle": "SEANCE DE CHIMIOTHERAPIE POUR TUM." + } + ] + }, + "codage_reco": { + "dp": "E43", + "dr": "TOCO", + "das": [ + { + "code": "T858", + "position": "2", + "libelle": "COMPLIC. DE PROTH., IMPL., GREF, INT., NCA" + }, + { + "code": "Z511", + "position": "3", + "libelle": "SEANCE DE CHIMIOTHERAPIE POUR TUM." + } + ] + }, + "actes_etab": [], + "actes_reco": [], + "ghm_etab": "10M184", + "ghs_etab": "3970", + "ghm_reco": "10M183", + "ghs_reco": "3969", + "recodage_impactant": "1", + "ghs_injustifie": "0", + "accord_desaccord": "désaccord", + "praticien_conseil": "DR VIGNAU" + } + }, + "concertation_1": { + "raw": { + "date_concertation_arg": "tion : | 2 : 3. - | 18", + "argumentaire": "105 : La facturation du GHS par l'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non- | respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non- | respect des règles porte sur un diagnostic associé significatif (DAS) codé par rétablissement dans le résumé d'unité médicale (RUM). | Ce DAS n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre IV, paragraphe 2.1 : (( Lorsqu'un | patient atteint d'une maladie chronique ou de longue durée en cours de traitement est hospitalisé pour un autre motif, la maladie | chronique ou de longue durée est naturellement un DAS, à moins qu'elle n'ait pas bénéficié d'une surveillance et que son traitement | ait été interrompu pendant le séjour. (...) Les informations attestant de la majoration de l'effort de soins devant figurer dans le dossier | médical. >> Au vu des éléments du dossier du patient, la maladie chronique ou de longue durée codée en DAS par l'établissement n'a | bénéficié d'aucune prise en charge diagnostique ou thérapeutique, ni majoré l'effort de prise en charge d'une autre affection." + }, + "parsed": { + "date_concertation": "23/10/2023", + "argumentaire": "105 : La facturation du GHS par l'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non- respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non- respect des règles porte sur un diagnostic associé significatif (DAS) codé par rétablissement dans le résumé d'unité médicale (RUM). Ce DAS n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre IV, paragraphe 2.1 : (( Lorsqu'un patient atteint d'une maladie chronique ou de longue durée en cours de traitement est hospitalisé pour un autre motif, la maladie chronique ou de longue durée est naturellement un DAS, à moins qu'elle n'ait pas bénéficié d'une surveillance et que son traitement ait été interrompu pendant le séjour. (...) Les informations attestant de la majoration de l'effort de soins devant figurer dans le dossier médical. >> Au vu des éléments du dossier du patient, la maladie chronique ou de longue durée codée en DAS par l'établissement n'a bénéficié d'aucune prise en charge diagnostique ou thérapeutique, ni majoré l'effort de prise en charge d'une autre affection." + } + }, + "concertation_2": { + "raw": { + "ghs_ligne": "GHS initial : 3970 | GHS avant concertation : 3969 | GHS final après concertation : 3969", + "accord_concertation": "Maintien de l'avis initial du médecin contrôleur + à À | Retour groupage initial DIM : | Autre groupage : | : | Avis.Finaldu MEDECIN: DIM | : : : | :", + "date_concertation": "" + }, + "parsed": { + "ghs_initial": "3970", + "ghs_avant_concertation": "3969", + "ghs_final": "3969", + "decision": "maintien_avis_controleur", + "accord_concertation_raw": "Maintien de l'avis initial du médecin contrôleur + à À | Retour groupage initial DIM : | Autre groupage : | : | Avis Final du MEDECIN: DIM | : : : | :", + "date_concertation": "23/18" + } + } +} \ No newline at end of file diff --git a/output/OGC 20.json b/output/OGC 20.json new file mode 100644 index 0000000..bff3ee9 --- /dev/null +++ b/output/OGC 20.json @@ -0,0 +1,181 @@ +{ + "fichier": "OGC 20", + "recueil": { + "raw": { + "etablissement": "JEuI C reLouabe umpauancieia | Etablissement CLINIOUF DVARCACHON", + "finess": "LLulauOiICL | CIUB\"L | FINESS:330780206 | Date", + "date_debut_controle": "e début contrôle: 13/02/2018", + "n_ogc": "No OGC:20", + "n_champ": "- | - | NO | hamn", + "dates_sejour": "niveau 23 3 et 4 mono RUM | Dates du séjour : 09/03/2016 au 18/03/2016", + "age_etab": "- | -", + "sexe_etab": "", + "duree_sejour_etab": "- a | -", + "mode_entree_etab": "", + "provenance_etab": "-", + "mode_sortie_etab": "", + "destination_etab": "", + "nb_seances_etab": "", + "nb_rum_etab": "- - -", + "age_reco": "", + "sexe_reco": "", + "duree_sejour_reco": "", + "mode_entree_reco": "-", + "provenance_reco": "- -", + "mode_sortie_reco": "- | - | -", + "destination_reco": "- - - -", + "um_etab": "", + "igs_etab": "", + "duree_rum_etab": "- -", + "dates_rum_etab": "n T 1 | du 09/03/2016au 18/03/2016", + "um_reco": "", + "igs_reco": "", + "duree_rum_reco": "", + "dp_code_etab": "- . - -", + "dp_libelle": ": : : H | del Etablissement | :: giu | = | : | Codage | FTnAi | CETHT | A . no IAI nu COLAA", + "dr_code_etab": "574", + "das_bloc_etab": "- | LO22 | 3 | ABCES CUTANE, FURONCLE ET ANTHRAX DU TRONC | T814 | 3 | INFECT. APRES UN ACTE, NCA | tar . | Shitm", + "dp_code_reco": ":: - : | Recodage: | D274", + "dr_code_reco": "", + "das_bloc_reco": "1898 | 2 | T818 | 2", + "actes_bloc_etab": "tes | HEE | : | iri :::", + "actes_bloc_reco": "", + "ghm_ghs_ligne": "Rappel: un code CIM de DAS suivid'un astérisque correspond à une CMA exclue par le DP | GHM établissement : 06C043 GHS établissement : 1941 GHM après recodage : 06C042 | GHS après recodage : 1940", + "recodage_impactant": "Praticien.consel | Dacaodaca imnetant a facturation 1", + "ghs_injustifie": "necoudpemmpdllan | GHSiniustifié", + "praticien_conseil": "- : AHA piaueICICI - - A 5 1 | 0 | *" + }, + "parsed": { + "etablissement": "CLINIQUE D'ARCACHON", + "finess": "330780206", + "date_debut_controle": "13/02/2018", + "n_ogc": "20", + "n_champ": "1", + "dates_sejour": "09/03/2016 au 18/03/2016", + "sejour_etab": { + "age": "57", + "sexe": "1", + "duree_sejour": "9", + "mode_entree": "8", + "provenance": "8", + "mode_sortie": "8", + "destination": "0" + }, + "sejour_reco": { + "age": "57", + "sexe": "1", + "duree_sejour": "9", + "mode_entree": "8", + "provenance": "8", + "mode_sortie": "8", + "destination": "0" + }, + "rum_etab": { + "um": "53C", + "igs": "0", + "duree": "9", + "dates": "du 09/03/2016 au 18/03/2016" + }, + "codage_etab": { + "dp": "D374", + "dp_libelle": "T. EV. IMPR., INC. DU COLON", + "dr": "574", + "das": [ + { + "code": "T814", + "position": "3", + "libelle": "INFECT. APRES UN ACTE, NCA" + } + ] + }, + "codage_reco": { + "dp": "D274", + "dr": "574", + "das": [ + { + "code": "T818", + "position": "2", + "libelle": "ABCES CUTANE, FURONCLE ET ANTHRAX DU TRONC" + } + ] + }, + "actes_etab": [ + { + "code": "HHFA009", + "serie": "4", + "libelle": "COLECTOMIE DTE + ANAST. LAPARO" + }, + { + "code": "HHFA018", + "serie": "4", + "libelle": "COLECTOMIE TRANSV. LAPARO" + }, + { + "code": "HHFA024", + "serie": "4", + "libelle": "COLECTOMIE TRANSV. LAPARO" + }, + { + "code": "HHFA018", + "serie": "4", + "libelle": "COLECTOMIE TRANSV. LAPARO" + } + ], + "actes_reco": [ + { + "code": "HHFA009", + "serie": "4", + "libelle": "COLECTOMIE DTE + ANAST. LAPARO" + }, + { + "code": "HHFA018", + "serie": "4", + "libelle": "COLECTOMIE TRANSV. LAPARO" + }, + { + "code": "HHFA024", + "serie": "4", + "libelle": "COLECTOMIE TRANSV. LAPARO" + }, + { + "code": "HHFA018", + "serie": "4", + "libelle": "COLECTOMIE TRANSV. LAPARO" + } + ], + "ghm_etab": "06C043", + "ghs_etab": "1941", + "ghm_reco": "06C042", + "ghs_reco": "1940", + "recodage_impactant": "1", + "ghs_injustifie": "", + "accord_desaccord": "accord", + "praticien_conseil": "DR. Alain PIAU" + } + }, + "concertation_1": { + "raw": { + "date_concertation_arg": "séjours de niv | ation | 2.3", + "argumentaire": "99 : La facturation du GHS par l'établissement n'est. pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non- | respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non- | respect des règles porte sur un diagnostic associé significatif (DAS) codé par r'établissement dans le résumé d'unité médicale (RUM). | Ce DAS n'est -ni conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre IV: (( Il ne peut figurer dans le | RUM, comme diagnostic principal, diagnostic relié ou diagnostic associé, que des problèmes de santé présents, actifs, au moment de | l'hospitalisation > -ni conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre IV paragraphe 2.1: (( Les | informations attestant des prises en charge en rapport avec chaque DAS, notamment les comptes rendus des interventions de | médecins ou d'auxiliaires médicaux, doivent figurer dans le dossier médical conformément à l'article R. 1112-2 du Code de la Santé | Publique. >> Le DAS codé par r'établissement ne peut être retenu puisque l'affection codée n'est pas mentionnée dans le dossier du | patient." + }, + "parsed": { + "date_concertation": "23/01/2024", + "argumentaire": "99 : La facturation du GHS par l'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non-respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non-respect des règles porte sur un diagnostic associé significatif (DAS) codé par l'établissement dans le résumé d'unité médicale (RUM). Ce DAS n'est -ni conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre IV: « Il ne peut figurer dans le RUM, comme diagnostic principal, diagnostic relié ou diagnostic associé, que des problèmes de santé présents, actifs, au moment de l'hospitalisation » -ni conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre IV paragraphe 2.1: « Les informations attestant des prises en charge en rapport avec chaque DAS, notamment les comptes rendus des interventions de médecins ou d'auxiliaires médicaux, doivent figurer dans le dossier médical conformément à l'article R. 1112-2 du Code de la Santé Publique. » Le DAS codé par l'établissement ne peut être retenu puisque l'affection codée n'est pas mentionnée dans le dossier du patient." + } + }, + "concertation_2": { + "raw": { + "ghs_ligne": "GHS initial : 1941 | GHS avant concertation : 1940 | GHS final après concertation : 196n", + "accord_concertation": "Maintien de l'avis initial du médecin contrôleué Retour groupage initial DIM : | Autre groupage : | - - - | - - | aM | N ti-ii T HT :: it R - - TE | E T : i", + "date_concertation": "" + }, + "parsed": { + "ghs_initial": "1941", + "ghs_avant_concertation": "1940", + "ghs_final": "1940", + "decision": "maintien_avis_controleur", + "accord_concertation_raw": "Maintien de l'avis initial du médecin contrôleur Retour groupage initial DIM : | Autre groupage : | - - - | - - | aM | N ti-ii T HT :: it R - - TE | E T : i", + "date_concertation": "23/08" + } + } +} \ No newline at end of file diff --git a/output/OGC 27.json b/output/OGC 27.json new file mode 100644 index 0000000..588461a --- /dev/null +++ b/output/OGC 27.json @@ -0,0 +1,149 @@ +{ + "fichier": "OGC 27", + "recueil": { + "raw": { + "etablissement": "Etablissement : CLINIQUE D'ARCACHON", + "finess": "FINESS :330780206 | Dat", + "date_debut_controle": "e début contrôle : 13/02/2018", + "n_ogc": "No OGC:27", + "n_champ": "No - | champ -", + "dates_sejour": "niveau 23Et4mono KUIVI | Dates du séjour : 13/03/2016 au 16/03/2016", + "age_etab": "nt | - | 5", + "sexe_etab": "", + "duree_sejour_etab": ".", + "mode_entree_etab": "", + "provenance_etab": "", + "mode_sortie_etab": "-", + "destination_etab": "", + "nb_seances_etab": "", + "nb_rum_etab": "", + "age_reco": "- | 5 5", + "sexe_reco": "", + "duree_sejour_reco": "", + "mode_entree_reco": "", + "provenance_reco": "", + "mode_sortie_reco": "- | -", + "destination_reco": "", + "um_etab": ": | 5", + "igs_etab": "", + "duree_rum_etab": "PTTTTTTE - - - | - a | -", + "dates_rum_etab": "du 13/03/2016 au 16/03/2016", + "um_reco": "- | -", + "igs_reco": "", + "duree_rum_reco": "", + "dp_code_etab": "1652", + "dp_libelle": "couugeder eCLUOIsssement | am HE | mmEm | : i = | STENOSE DEL'ART. CAROTIDE", + "dr_code_etab": "", + "das_bloc_etab": "F412 | 2 | TBL. ANXIEUX ET DEPRES. MIXTE | R471 | 2 | DYSARTHRIE ET ANARTHRIE | WE ", + "dp_code_reco": "ecouuge | 1652", + "dr_code_reco": "", + "das_bloc_reco": "", + "actes_bloc_etab": "1i2 EE | es F | : | L | : | L", + "actes_bloc_reco": "", + "ghm_ghs_ligne": "E :'. | 3 | : :':i: | Praticien conseil | :: | Médecin DIM", + "recodage_impactant": "AcLUUdBE umpaulais * à | a javtulauon | GHSiniustifié n | SF 1 - | 213211A I -", + "ghs_injustifie": "- | P | - | - | - -", + "praticien_conseil": "DR VIGNAU" + }, + "parsed": { + "etablissement": "CLINIQUE D'ARCACHON", + "finess": "330780206", + "date_debut_controle": "13/02/2018", + "n_ogc": "27", + "n_champ": "1", + "dates_sejour": "13/03/2016 au 16/03/2016", + "sejour_etab": { + "age": "55", + "sexe": "2", + "duree_sejour": "3", + "mode_entree": "8", + "provenance": "8", + "mode_sortie": "0", + "destination": "0" + }, + "sejour_reco": { + "age": "55", + "sexe": "2", + "duree_sejour": "3", + "mode_entree": "8", + "provenance": "8", + "mode_sortie": "0", + "destination": "0" + }, + "rum_etab": { + "um": "53", + "igs": "0", + "duree": "3", + "dates": "du 13/03/2016 au 16/03/2016" + }, + "codage_etab": { + "dp": "1652", + "dp_libelle": "STENOSE DE L'ART. CAROTIDE", + "dr": "", + "das": [ + { + "code": "F412", + "position": "2", + "libelle": "TBL. ANXIEUX ET DEPRES. MIXTE" + }, + { + "code": "R471", + "position": "2", + "libelle": "DYSARTHRIE ET ANARTHRIE" + } + ] + }, + "codage_reco": { + "dp": "1652", + "dr": "", + "das": [] + }, + "actes_etab": [ + { + "code": "EBFA012", + "position": "1", + "libelle": "THROMBOENDARTERIECTOMIE SIMPLE BIFURC. CAROTID. TOMIE" + }, + { + "code": "EBFA012", + "position": "4", + "libelle": "THROMBOENDARTERIECTOMIE SIMPLE BIFURC. CAROTID. TOMIE" + } + ], + "actes_reco": [], + "ghm_etab": "", + "ghs_etab": "", + "ghm_reco": "", + "ghs_reco": "", + "recodage_impactant": "213211", + "ghs_injustifie": "", + "accord_desaccord": "accord", + "praticien_conseil": "DR VIGNAU" + } + }, + "concertation_1": { + "raw": { + "date_concertation_arg": "nU | sejoursue | - | tation | 3. | :S 111A 44- lemkeateret a :o - : | - - à- | : - | 2018 | : | - | : - et", + "argumentaire": "100 : La facturation du GHS par P'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non- | respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non- | respect des règles porte sur un diagnostic associé significatif (DAS) codé par r'établissement dans le résumé d'unité médicale (RUM). | Ce DAS n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre V, paragraphe 1 : (( Les diagnostics | doivent figurer dans le RUM sous forme codée selon la plus récente mise à jour de la 10e révision de la Classification internationale | des maladies (CIM-10) de P'Organisation mondiale de la santé et selon les extensions nationales données dans la plus récente version | du Manuel des groupes homogènes de malades. (....). Le meilleur code est le plus précis par rapport à 'information à coder. >> Au vu | des éléments présents dans le dossier du patient, le code CIM10 choisi pour le DAS par r'établissement n'est pas le plus précis par | rapport à l'information à coder." + }, + "parsed": { + "date_concertation": "03/05/2018", + "argumentaire": "100 : La facturation du GHS par l'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non- respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non- respect des règles porte sur un diagnostic associé significatif (DAS) codé par l'établissement dans le résumé d'unité médicale (RUM). Ce DAS n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre V, paragraphe 1 : (( Les diagnostics doivent figurer dans le RUM sous forme codée selon la plus récente mise à jour de la 10e révision de la Classification internationale des maladies (CIM-10) de l'Organisation mondiale de la santé et selon les extensions nationales données dans la plus récente version du Manuel des groupes homogènes de malades. (....). Le meilleur code est le plus précis par rapport à l'information à coder. >> Au vu des éléments présents dans le dossier du patient, le code CIM10 choisi pour le DAS par l'établissement n'est pas le plus précis par rapport à l'information à coder." + } + }, + "concertation_2": { + "raw": { + "ghs_ligne": "GHS initial : 35 | GHS avant concertation : 34 | GHS final après concertation : 34", + "accord_concertation": "Maintien de l'avis initial du médecin contrôleur : | Retour groupage initial DIM : | Autre groupage : | MA | nE | E HEE RE", + "date_concertation": "" + }, + "parsed": { + "ghs_initial": "35", + "ghs_avant_concertation": "34", + "ghs_final": "35", + "decision": "maintien_avis_controleur", + "accord_concertation_raw": "Maintien de l'avis initial du médecin contrôleur : Retour groupage initial DIM : Autre groupage : MA nE E HEE RE", + "date_concertation": "12/03/18" + } + } +} \ No newline at end of file diff --git a/output/OGC 29.json b/output/OGC 29.json new file mode 100644 index 0000000..02e2ec0 --- /dev/null +++ b/output/OGC 29.json @@ -0,0 +1,154 @@ +{ + "fichier": "OGC 29", + "recueil": { + "raw": { + "etablissement": "Etablissement : CLINIQUE D'ARCACHON", + "finess": "FINESS : 330780206 | Date", + "date_debut_controle": "début contrôle : 13/02/2018", + "n_ogc": "No OGC : - 29", + "n_champ": "- - - | No | champ", + "dates_sejour": "Dates du séjour : 14/03/2016 au 17/03/2016", + "age_etab": "L", + "sexe_etab": "", + "duree_sejour_etab": "", + "mode_entree_etab": "", + "provenance_etab": "", + "mode_sortie_etab": "", + "destination_etab": "", + "nb_seances_etab": "", + "nb_rum_etab": "", + "age_reco": "2", + "sexe_reco": "", + "duree_sejour_reco": "", + "mode_entree_reco": "", + "provenance_reco": "", + "mode_sortie_reco": "", + "destination_reco": "", + "um_etab": "- - | 3", + "igs_etab": "", + "duree_rum_etab": "-", + "dates_rum_etab": "du 14/03/2016 au 17/03/2016", + "um_reco": "- | - | - | - | D", + "igs_reco": "", + "duree_rum_reco": ": - - | - | - | -", + "dp_code_etab": "K635+0", + "dp_libelle": ": | POLYPOSE HYPERPLASIQUE", + "dr_code_etab": "", + "das_bloc_etab": "D509 | 2 | ANEMIE PAR CARENCE EN FER, SAI | E46 | 2 | MALNUTRITION PROTEINO-ENERGETIQUE, SAI | 1480 | 2 | FIBRILLATION AURICULAIRE PAROXYSTIQUE", + "dp_code_reco": "D509", + "dr_code_reco": "- -", + "das_bloc_reco": "E46 | 2 | 1480 | 2", + "actes_bloc_etab": "", + "actes_bloc_reco": "", + "ghm_ghs_ligne": "GHM établissement : 06M092 GHS établissement : 2159 GHM après recodage : 16M112 | GHS après recodage : 6183 | : : nInA", + "recodage_impactant": "Recodage impactant la facturation : 1", + "ghs_injustifie": "GHS injustifié :0", + "praticien_conseil": "DR VIGNAU" + }, + "parsed": { + "etablissement": "CLINIQUE D'ARCACHON", + "finess": "330780206", + "date_debut_controle": "13/02/2018", + "n_ogc": "29", + "n_champ": "1", + "dates_sejour": "14/03/2016 au 17/03/2016", + "sejour_etab": { + "age": "82", + "sexe": "1", + "duree_sejour": "8", + "mode_entree": "0", + "provenance": "0", + "mode_sortie": "0", + "destination": "0" + }, + "sejour_reco": { + "age": "82", + "sexe": "1", + "duree_sejour": "8", + "mode_entree": "0", + "provenance": "0", + "mode_sortie": "0", + "destination": "0" + }, + "rum_etab": { + "um": "53", + "igs": "3", + "duree": "3", + "dates": "du 14/03/2016 au 17/03/2016" + }, + "codage_etab": { + "dp": "K635", + "dp_libelle": "POLYPOSE HYPERPLASIQUE", + "dr": "D509", + "das": [ + { + "code": "D509", + "position": "2", + "libelle": "ANEMIE PAR CARENCE EN FER, SAI" + }, + { + "code": "E46", + "position": "2", + "libelle": "MALNUTRITION PROTEINO-ENERGETIQUE, SAI" + }, + { + "code": "I480", + "position": "2", + "libelle": "FIBRILLATION AURICULAIRE PAROXYSTIQUE" + } + ] + }, + "codage_reco": { + "dp": "D509", + "dr": "", + "das": [ + { + "code": "E46", + "position": "2", + "libelle": "MALNUTRITION PROTEINO-ENERGETIQUE, SAI" + }, + { + "code": "I480", + "position": "2", + "libelle": "FIBRILLATION AURICULAIRE PAROXYSTIQUE" + } + ] + }, + "actes_etab": [], + "actes_reco": [], + "ghm_etab": "06M092", + "ghs_etab": "2159", + "ghm_reco": "16M112", + "ghs_reco": "6183", + "recodage_impactant": "1", + "ghs_injustifie": "0", + "accord_desaccord": "accord", + "praticien_conseil": "DR VIGNAU" + } + }, + "concertation_1": { + "raw": { + "date_concertation_arg": "séjours de nive | tion a | ( - | 3 | 18", + "argumentaire": "109 : La facturation du GHS par r'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non- | respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non- | respect des règles porte sur le diagnostic principal (DP) codé par r'établissement dans le résumé d'unité médicale (RUM). Le DP n'est | pas conforme aux règles de codage des diagnostics rappelées par l'annexe Il, chapitre V, paragraphe 1 : ( les diagnostics doivent | figurer dans le RUM sous forme codée selon la plus récente mise à jour de la 10e révision de la Classification internationale des | maladies (CIM-10) de F'Organisation mondiale de la santé et selon les extensions nationales données dans la plus récente version du | Manuel des groupes homogènes de malades. (..) Le meilleur code est le plus précis par rapport à l'information à coder. >> Au vu des | éléments présents dans le dossier du patient, le code CIM-10 choisi pour le DP par r'établissement n'est pas le plus précis par rapport | à l'information à coder." + }, + "parsed": { + "date_concertation": "13/03/18", + "argumentaire": "109 : La facturation du GHS par l'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non-respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non-respect des règles porte sur le diagnostic principal (DP) codé par l'établissement dans le résumé d'unité médicale (RUM). Le DP n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre V, paragraphe 1 : ( les diagnostics doivent figurer dans le RUM sous forme codée selon la plus récente mise à jour de la 10e révision de la Classification internationale des maladies (CIM-10) de l'Organisation mondiale de la santé et selon les extensions nationales données dans la plus récente version du Manuel des groupes homogènes de malades. (..) Le meilleur code est le plus précis par rapport à l'information à coder. >> Au vu des éléments présents dans le dossier du patient, le code CIM-10 choisi pour le DP par l'établissement n'est pas le plus précis par rapport à l'information à coder." + } + }, + "concertation_2": { + "raw": { + "ghs_ligne": "GHS initial : 2159 | GHS avant concertation : 6183 | GHS final après concertation : 6183", + "accord_concertation": "Maintien de l'avis initial du médecin contrôleur A Retour groupage initial DIM : | Autre groupage : | - - XXXXXXXE - - S - - : SANRNRNENE Sab : - - NONTERENNERMARR FRET WS5A - TE : : : : : : :", + "date_concertation": "" + }, + "parsed": { + "ghs_initial": "2159", + "ghs_avant_concertation": "6183", + "ghs_final": "6183", + "decision": "retour_groupage_dim", + "accord_concertation_raw": "Avis Final du MEDECIN DIM (les éléments couverts par le secret médical sont à mentionner sur la fiche médicale de concertation)", + "date_concertation": "13/11/2018" + } + } +} \ No newline at end of file diff --git a/output/OGC 43.json b/output/OGC 43.json new file mode 100644 index 0000000..e2881c9 --- /dev/null +++ b/output/OGC 43.json @@ -0,0 +1,29 @@ +{ + "fichier": "OGC 43", + "recueil": null, + "concertation_1": { + "raw": { + "date_concertation_arg": "sejoursenve | - | 3 | ation | 2018 | : | : : : : : : - : - . : - : : : | - - - -", + "argumentaire": "109 : La facturation du GHS par rétablissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non- | respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non- | respect des règles porte sur le diagnostic principal (DP) codé par l'établissement dans le résumé d'unité médicale (RUM). Le DP n'est | pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre V, paragraphe 1: (( les diagnostics doivent | figurer dans le RUM sous forme codéeselon la plus récente mise à jour de la 10e révision de la Classification internationale des | maladies (CIM-10) de l'Organisation mondiale de la santé et selon les extensions nationales données dans la plus récente version du | Manuel des groupes homogènes de malades. (...) Le meilleur code est le plus précis par rapport à l'information à coder. >> Au vu des | éléments présents dans le dossier du patient, le code CIM-10 choisi pour lè DP par l'établissement n'est pas le plus précis par rapport | à l'information à coder." + }, + "parsed": { + "date_concertation": "13/03/2018", + "argumentaire": "109 : La facturation du GHS par l'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non-respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non-respect des règles porte sur le diagnostic principal (DP) codé par l'établissement dans le résumé d'unité médicale (RUM). Le DP n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre V, paragraphe 1: (( les diagnostics doivent figurer dans le RUM sous forme codée selon la plus récente mise à jour de la 10e révision de la Classification internationale des maladies (CIM-10) de l'Organisation mondiale de la santé et selon les extensions nationales données dans la plus récente version du Manuel des groupes homogènes de malades. (...) Le meilleur code est le plus précis par rapport à l'information à coder. >> Au vu des éléments présents dans le dossier du patient, le code CIM-10 choisi pour le DP par l'établissement n'est pas le plus précis par rapport à l'information à coder." + } + }, + "concertation_2": { + "raw": { + "ghs_ligne": "GHS initial : 292 | GHS avant concertation : 324 | GHS final après concertation : 324", + "accord_concertation": "Maintien de l'avis initial du médecin contrôleur : EXK Retour groupage initial DIM : | Autre groupage : | : i- : : E : : : EE : : : : CRE: | h C | \"E : : : S : : : T :", + "date_concertation": "" + }, + "parsed": { + "ghs_initial": "292", + "ghs_avant_concertation": "324", + "ghs_final": "324", + "decision": "maintien_avis_controleur", + "accord_concertation_raw": "Maintien de l'avis initial du médecin contrôleur : EXK Retour groupage initial DIM : | Autre groupage : | : i- : : E : : : EE : : : : CRE: | h C | \"E : : : S : : : T :", + "date_concertation": "13/03/2019" + } + } +} \ No newline at end of file diff --git a/output/OGC 55.json b/output/OGC 55.json new file mode 100644 index 0000000..a25456f --- /dev/null +++ b/output/OGC 55.json @@ -0,0 +1,159 @@ +{ + "fichier": "OGC 55", + "recueil": { + "raw": { + "etablissement": "Etablissement : CLINIQUE DV'ARCACHON", + "finess": "FINESS: - 330780206 | Date", + "date_debut_controle": "début contrôle : 13/02/2018", + "n_ogc": "No OGC: 55", + "n_champ": "No champ", + "dates_sejour": "veau L3et4monORUIVI | Dates du séjour : 27/03/2016 au 01/04/2016", + "age_etab": "-", + "sexe_etab": "", + "duree_sejour_etab": "", + "mode_entree_etab": ". | - | r", + "provenance_etab": "", + "mode_sortie_etab": "", + "destination_etab": "", + "nb_seances_etab": "", + "nb_rum_etab": "", + "age_reco": "- | - | - | I - | - -", + "sexe_reco": "", + "duree_sejour_reco": "- - - -", + "mode_entree_reco": "a | - I", + "provenance_reco": "", + "mode_sortie_reco": "", + "destination_reco": "AA", + "um_etab": "-", + "igs_etab": "", + "duree_rum_etab": "-", + "dates_rum_etab": "du 27/03/2016 au 01/04/2016", + "um_reco": "", + "igs_reco": "", + "duree_rum_reco": "-", + "dp_code_etab": "K123", + "dp_libelle": "couugeue. CLADISenTment | MUCITE BUCCALE", + "dr_code_etab": "", + "das_bloc_etab": ": . | C795 | 2 | T.M. HRE. DES OS ET DE LA MOELLE OSSEUSE | D611 | 4 | APLASIE MEDULLAIRE MEDICAM. | R630 | 2 | ANOREXIE", + "dp_code_reco": "necouuge | K123", + "dr_code_reco": "", + "das_bloc_reco": "C795 | 2 | D70 | 2 | R630 | 2", + "actes_bloc_etab": ":", + "actes_bloc_reco": "", + "ghm_ghs_ligne": "NUPPe.Unwue LINUCDA JUIVI UHTUSETIPYUEcLonesponoOUUICUVACALLEPUIRLE | GHM établissement : 03M114 GHS établissement : 863 GHM après recodage : 03M112 | GHS après recodage : 861", + "recodage_impactant": "* + | - - | Recodage impactant la facturation: 1", + "ghs_injustifie": "GHS injustifié :0", + "praticien_conseil": "DRVIGAAL" + }, + "parsed": { + "etablissement": "CLINIQUE D'ARCACHON", + "finess": "330780206", + "date_debut_controle": "13/02/2018", + "n_ogc": "55", + "n_champ": "1", + "dates_sejour": "27/03/2016 au 01/04/2016", + "sejour_etab": { + "age": "78", + "sexe": "1", + "duree_sejour": "5", + "mode_entree": "7", + "provenance": "1", + "mode_sortie": "8", + "destination": "0" + }, + "sejour_reco": { + "age": "78", + "sexe": "1", + "duree_sejour": "5", + "mode_entree": "7", + "provenance": "1", + "mode_sortie": "8", + "destination": "0" + }, + "rum_etab": { + "um": "40 C", + "igs": "0", + "duree": "5", + "dates": "du 27/03/2016 au 01/04/2016" + }, + "codage_etab": { + "dp": "K123", + "dp_libelle": "MUCTE BUCCALE", + "dr": "", + "das": [ + { + "code": "C795", + "position": "2", + "libelle": "T.M. HRE. DES OS ET DE LA MOELLE OSSEUSE" + }, + { + "code": "D611", + "position": "4", + "libelle": "APLASIE MEDULLAIRE MEDICAM." + }, + { + "code": "R630", + "position": "2", + "libelle": "ANOREXIE" + } + ] + }, + "codage_reco": { + "dp": "K123", + "dr": "", + "das": [ + { + "code": "C795", + "position": "2", + "libelle": "" + }, + { + "code": "D70", + "position": "2", + "libelle": "" + }, + { + "code": "R630", + "position": "2", + "libelle": "" + } + ] + }, + "actes_etab": [], + "actes_reco": [], + "ghm_etab": "03M114", + "ghs_etab": "863", + "ghm_reco": "03M112", + "ghs_reco": "861", + "recodage_impactant": "1", + "ghs_injustifie": "0", + "accord_desaccord": "accord", + "praticien_conseil": "DR VIGAAL" + } + }, + "concertation_1": { + "raw": { + "date_concertation_arg": "séjours de nive | tion : | 3 I - -", + "argumentaire": "100 : La facturation du GHS par r'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non- | respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non- | respect des règles porte sur un diagnostic associé significatif (DAS) codé par l'établissement dans le résumé d'unité médicale (RUM). | Ce DAS n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe Il, chapitre V, paragraphe 1: (( Les diagnostics | doivent figurer dans le RUM sous forme codée selon la plus récente mise à jour de la 10e révision de la Classification internationale | des maladies (CIM-10) de P'Organisation mondiale de la santé et selon les extensions nationales données dans la plus récente version | du Manuel des groupes homogènes de malades. (....). Le meilleur code est le plus précis par rapport à 'information à coder. >> Au vu | des éléments présents dans le dossier du patient, le code CIM10 choisi pour le DAS par l'établissement n'est pas le plus précis par | rapport à l'information à coder." + }, + "parsed": { + "date_concertation": "09/03/2018", + "argumentaire": "100 : La facturation du GHS par l'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non-respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non-respect des règles porte sur un diagnostic associé significatif (DAS) codé par l'établissement dans le résumé d'unité médicale (RUM). Ce DAS n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre V, paragraphe 1: « Les diagnostics doivent figurer dans le RUM sous forme codée selon la plus récente mise à jour de la 10e révision de la Classification internationale des maladies (CIM-10) de l'Organisation mondiale de la santé et selon les extensions nationales données dans la plus récente version du Manuel des groupes homogènes de malades. (....). Le meilleur code est le plus précis par rapport à l'information à coder. » Au vu des éléments présents dans le dossier du patient, le code CIM10 choisi pour le DAS par l'établissement n'est pas le plus précis par rapport à l'information à coder." + } + }, + "concertation_2": { + "raw": { + "ghs_ligne": "GHS initial : 863 | GHS avant concertation : 861 | GHS final après concertation : 861", + "accord_concertation": "Maintien de l'avis initial du médecin contrôleur : 2 | Retour groupage initial DIM : | Autre groupage : | : TESANNARN ChDPEA R -araT : : :", + "date_concertation": "" + }, + "parsed": { + "ghs_initial": "863", + "ghs_avant_concertation": "861", + "ghs_final": "861", + "decision": "retour_groupage_dim", + "accord_concertation_raw": "Maintien de l'avis initial du médecin contrôleur : 2 | Retour groupage initial DIM : | Autre groupage : | : TESANNARN ChDPEA R -araT : :", + "date_concertation": "12/09" + } + } +} \ No newline at end of file diff --git a/output/OGC 66.json b/output/OGC 66.json new file mode 100644 index 0000000..950a524 --- /dev/null +++ b/output/OGC 66.json @@ -0,0 +1,174 @@ +{ + "fichier": "OGC 66", + "recueil": { + "raw": { + "etablissement": "Etablissement : CLINIQUE DL'ARCACHON", + "finess": "FINESS : 3307 80206 | Date - - -", + "date_debut_controle": "début contrôle : 13/02/2018", + "n_ogc": "No OGC: 66", + "n_champ": "N o champ -", + "dates_sejour": "veau ADEL4OInonUIV | Dates du séjour : 04/04/2016 au 20/04/2016", + "age_etab": "D 1 U - - -", + "sexe_etab": "", + "duree_sejour_etab": "- | -", + "mode_entree_etab": "", + "provenance_etab": "", + "mode_sortie_etab": "- - -", + "destination_etab": "", + "nb_seances_etab": ":::: | - | - -", + "nb_rum_etab": "F | -", + "age_reco": "0", + "sexe_reco": "", + "duree_sejour_reco": "", + "mode_entree_reco": "", + "provenance_reco": "", + "mode_sortie_reco": "", + "destination_reco": "I", + "um_etab": "", + "igs_etab": "", + "duree_rum_etab": "- | - - | 6", + "dates_rum_etab": "du 04/04/2016 au 20/04/2016", + "um_reco": "-", + "igs_reco": "-", + "duree_rum_reco": "- | - | - | - - | I | 1 - U", + "dp_code_etab": "CO7", + "dp_libelle": "ouugeue ELUDISDEIenE | T.M. DE LA GLD. PAROTIDE", + "dr_code_etab": "", + "das_bloc_etab": "C795 * | 2 | T.M. HIRE. DES OS ET DE LA MOELLE OSSEUSE | E440 | 3 | MALNUTRITION PROTEINO-ENERGETIQUE MODEREE | J91 | 2 | EPANCHEMENT PLEURAL AVEC MAL, CL, AILL. | Z511 | 3 | SEANCE DE CHIMIOTHERAPIE POUR TUM.", + "dp_code_reco": "- 1 vowuye - | C780", + "dr_code_reco": "", + "das_bloc_reco": "C07 | 2 | C795 | 2 | E440 | 3 | J91 | 2 | Z511 | 3", + "actes_bloc_etab": "S", + "actes_bloc_reco": "", + "ghm_ghs_ligne": ": | Rappel: - un code CIM de DAS. suivi d'un astérisque correspond à une CMA exclue par le DP", + "recodage_impactant": "Praticien conseil", + "ghs_injustifie": "Recodage - | impactant - | la", + "praticien_conseil": "Nom du praticien conseil responsable du codage : | à" + }, + "parsed": { + "etablissement": "CLINIQUE D'ARCACHON", + "finess": "330780206", + "date_debut_controle": "13/02/2018", + "n_ogc": "66", + "n_champ": "1", + "dates_sejour": "04/04/2016 au 20/04/2016", + "sejour_etab": { + "age": "80", + "sexe": "1", + "duree_sejour": "16", + "mode_entree": "8", + "provenance": "0", + "mode_sortie": "8", + "destination": "0" + }, + "sejour_reco": { + "age": "80", + "sexe": "1", + "duree_sejour": "16", + "mode_entree": "8", + "provenance": "0", + "mode_sortie": "8", + "destination": "0" + }, + "rum_etab": { + "um": "40 C", + "igs": "0", + "duree": "16", + "dates": "du 04/04/2016 au 20/04/2016" + }, + "codage_etab": { + "dp": "CO7", + "dp_libelle": "T.M. DE LA GLD. PAROTIDE", + "dr": "", + "das": [ + { + "code": "C795", + "position": "2", + "libelle": "T.M. HIRE. DES OS ET DE LA MOELLE OSSEUSE" + }, + { + "code": "E440", + "position": "3", + "libelle": "MALNUTRITION PROTEINO-ENERGETIQUE MODEREE" + }, + { + "code": "J91", + "position": "2", + "libelle": "EPANCHEMENT PLEURAL AVEC MAL, CL, AILL." + }, + { + "code": "Z511", + "position": "3", + "libelle": "SEANCE DE CHIMIOTHERAPIE POUR TUM." + } + ] + }, + "codage_reco": { + "dp": "C780", + "dr": "", + "das": [ + { + "code": "C07", + "position": "2", + "libelle": "" + }, + { + "code": "C795", + "position": "2", + "libelle": "" + }, + { + "code": "E440", + "position": "3", + "libelle": "" + }, + { + "code": "J91", + "position": "2", + "libelle": "" + }, + { + "code": "Z511", + "position": "3", + "libelle": "" + } + ] + }, + "actes_etab": [], + "actes_reco": [], + "ghm_etab": "06C043", + "ghs_etab": "", + "ghm_reco": "", + "ghs_reco": "", + "recodage_impactant": "", + "ghs_injustifie": "", + "accord_desaccord": "désaccord", + "praticien_conseil": "Dr POSE CATHERINE" + } + }, + "concertation_1": { + "raw": { + "date_concertation_arg": "sejours de nive | - | tion - | 2 - 3 ", + "argumentaire": "109 : La facturation du GHS par l'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non- | respect des règles de codage édictées dans l'annexe Il de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non- | respect des règles porte sur le diagnostic principal (DP) codé par 'établissement dans le résumé d'unité médicale (RUM). Le DP n'est | pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre V, paragraphe 1 : (( les diagnostics doivent | figurer dans le RUM sous forme codée selon la plus récente mise à jour de la 10e révision del la Classification internationale des | maladies (CIM-10) de l'Organisation mondiale de la santé et selon les extensions nationales données dans la plus récente version du | Manuel des groupes homogènes de malades. (...) Le meilleur code est le plus précis par rapport à l'information à coder. >> Au vu des | éléments présents dans le dossier du patient, le code CIM-10 choisi pour le DP par 'établissement n'est pas le plus précis par rapport | à l'information à coder." + }, + "parsed": { + "date_concertation": "23/10", + "argumentaire": "109 : La facturation du GHS par l'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non-respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non-respect des règles porte sur le diagnostic principal (DP) codé par l'établissement dans le résumé d'unité médicale (RUM). Le DP n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre V, paragraphe 1 : (( les diagnostics doivent figurer dans le RUM sous forme codée selon la plus récente mise à jour de la 10e révision de la Classification internationale des maladies (CIM-10) de l'Organisation mondiale de la santé et selon les extensions nationales données dans la plus récente version du Manuel des groupes homogènes de malades. (...) Le meilleur code est le plus précis par rapport à l'information à coder. >> Au vu des éléments présents dans le dossier du patient, le code CIM-10 choisi pour le DP par l'établissement n'est pas le plus précis par rapport à l'information à coder." + } + }, + "concertation_2": { + "raw": { + "ghs_ligne": "GHS initial : 844 | GHS avant concertation : 1163 | GHS final après concertation : 1163", + "accord_concertation": "Maintien de l'avis initial du médecin contrôleur | Retour groupage initial DIM : | Autre groupage : | : | E | : i - RA | A : : C - - : :: a", + "date_concertation": "" + }, + "parsed": { + "ghs_initial": "844", + "ghs_avant_concertation": "1163", + "ghs_final": "1163", + "decision": "retour_groupage_dim", + "accord_concertation_raw": "Maintien de l'avis initial du médecin contrôleur | Retour groupage initial DIM : | Autre groupage : | : | E | : i - RA | A : : C - - : :: a", + "date_concertation": "23/03/2018" + } + } +} \ No newline at end of file diff --git a/output/OGC 68.json b/output/OGC 68.json new file mode 100644 index 0000000..54d2056 --- /dev/null +++ b/output/OGC 68.json @@ -0,0 +1,154 @@ +{ + "fichier": "OGC 68", + "recueil": { + "raw": { + "etablissement": "Etablissement : CLINIQUE DI'ARCACHON", + "finess": "FINESS : 330780206 | Date", + "date_debut_controle": "début contrôle : 13/02/2018", + "n_ogc": "No OGC: 68", + "n_champ": "No champ", + "dates_sejour": "Dates du séjour : 07/04/2016 au 11/04/2016", + "age_etab": "- | - | - | - | - | 5 | L | 3", + "sexe_etab": "", + "duree_sejour_etab": ".", + "mode_entree_etab": "", + "provenance_etab": "", + "mode_sortie_etab": "- | - - | I | -", + "destination_etab": "", + "nb_seances_etab": "", + "nb_rum_etab": "", + "age_reco": "5 3 -", + "sexe_reco": "", + "duree_sejour_reco": "", + "mode_entree_reco": "", + "provenance_reco": "", + "mode_sortie_reco": "a | - | - | -", + "destination_reco": "- | - | - - | - | - | -", + "um_etab": "", + "igs_etab": "", + "duree_rum_etab": "- - | - | ::: - -", + "dates_rum_etab": "du 07/04/2016 au 11/04/2016", + "um_reco": "", + "igs_reco": "", + "duree_rum_reco": "- | - -", + "dp_code_etab": "R650", + "dp_libelle": "SYND. REPONSE INFLAM. SYST. ORIGINE INFECT. SANS DEFAILLANCE ORG", + "dr_code_etab": "- - - - e -", + "das_bloc_etab": "D508 | 2 | ANEMIES PAR CARENCE EN FER, NCA | E8758 | 2 | HYPERKALIEMIES, NCA AT SAI | K868 | 2 | MAL. PREC. DU PANCREAS, NCA", + "dp_code_reco": "K868", + "dr_code_reco": "aaun", + "das_bloc_reco": "D508 | 2 | E8758 | 2", + "actes_bloc_etab": "S", + "actes_bloc_reco": "", + "ghm_ghs_ligne": "GHM établissement : 18M042 GHS établissement : 6773 GHM après recodage : 07M112 | GHS après recodage : 2550 | Lto: | I | - nIna", + "recodage_impactant": "Recodage impactant la facturation : 1", + "ghs_injustifie": "GHS injustifié :0", + "praticien_conseil": "DR VIGNAU" + }, + "parsed": { + "etablissement": "CLINIQUE D'ARCACHON", + "finess": "330780206", + "date_debut_controle": "13/02/2018", + "n_ogc": "68", + "n_champ": "1", + "dates_sejour": "07/04/2016 au 11/04/2016", + "sejour_etab": { + "age": "63", + "sexe": "1", + "duree_sejour": "4", + "mode_entree": "7", + "provenance": "1", + "mode_sortie": "0", + "destination": "0" + }, + "sejour_reco": { + "age": "63", + "sexe": "1", + "duree_sejour": "4", + "mode_entree": "7", + "provenance": "1", + "mode_sortie": "0", + "destination": "0" + }, + "rum_etab": { + "um": "40C", + "igs": "4", + "duree": "4", + "dates": "du 07/04/2016 au 11/04/2016" + }, + "codage_etab": { + "dp": "R650", + "dp_libelle": "SYND. REPONSE INFLAM. SYST. ORIGINE INFECT. SANS DEFAILLANCE ORG", + "dr": "e", + "das": [ + { + "code": "D508", + "position": "2", + "libelle": "ANEMIES PAR CARENCE EN FER, NCA" + }, + { + "code": "E8758", + "position": "2", + "libelle": "HYPERKALIEMIES, NCA AT SAI" + }, + { + "code": "K868", + "position": "2", + "libelle": "MAL. PREC. DU PANCREAS, NCA" + } + ] + }, + "codage_reco": { + "dp": "K868", + "dr": "aaun", + "das": [ + { + "code": "D508", + "position": "2", + "libelle": "ANEMIES PAR CARENCE EN FER, NCA" + }, + { + "code": "E8758", + "position": "2", + "libelle": "HYPERKALIEMIES, NCA AT SAI" + } + ] + }, + "actes_etab": [], + "actes_reco": [], + "ghm_etab": "18M042", + "ghs_etab": "6773", + "ghm_reco": "07M112", + "ghs_reco": "2550", + "recodage_impactant": "1", + "ghs_injustifie": "0", + "accord_desaccord": "accord", + "praticien_conseil": "DR VIGNAU" + } + }, + "concertation_1": { + "raw": { + "date_concertation_arg": ">co - - A - I I 4 UCITVe | A | - | a | a | ( | 3 | ation | 6 | :A : : | : - | - | : : - | : : à - . | -", + "argumentaire": "109 : La facturation du GHS par rétablissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non- | respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non- | respect des règles porte sur le diagnostic principal (DP) codé par r'établissement dans le résumé d'unité médicale (RUM). Le DP n'est | pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre V, paragraphe 1 : (( les diagnostics doivent | figurer dans le RUM sous forme codée selon la plus récente mise à jour de la 10e révision de la Classification internationale des | maladies (CIM-10) de 'Organisation mondiale de la santé et selon les extensions nationales données dans la plus récente version du | Manuel des groupes homogènes de malades. (...) Le meilleur code est le plus précis par rapport à l'information à coder. > Au vu des | éléments présents dans le dossier du patient, le code CIM-10 choisi pour le DP par l'établissement n'est pas le plus précis par rapport | à l'information à coder." + }, + "parsed": { + "date_concertation": "16/03/16", + "argumentaire": "109 : La facturation du GHS par l'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non-respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non-respect des règles porte sur le diagnostic principal (DP) codé par l'établissement dans le résumé d'unité médicale (RUM). Le DP n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre V, paragraphe 1 : « les diagnostics doivent figurer dans le RUM sous forme codée selon la plus récente mise à jour de la 10e révision de la Classification internationale des maladies (CIM-10) de l'Organisation mondiale de la santé et selon les extensions nationales données dans la plus récente version du Manuel des groupes homogènes de malades. (...) Le meilleur code est le plus précis par rapport à l'information à coder. » Au vu des éléments présents dans le dossier du patient, le code CIM-10 choisi pour le DP par l'établissement n'est pas le plus précis par rapport à l'information à coder." + } + }, + "concertation_2": { + "raw": { + "ghs_ligne": "GHS initial : 6773 | GHS avant concertation 6773 | GHS final après concertation : 2550", + "accord_concertation": "Maintien de l'avis initial du médecin contrôleur | Retour groupage initial DIM : | Autre groupage : | : | : | : : | : :- :: | : : V : | Aeni ecini : | : Ti : : : : : D - : :", + "date_concertation": "" + }, + "parsed": { + "ghs_initial": "6773", + "ghs_avant_concertation": "6773", + "ghs_final": "2550", + "decision": "retour_groupage_dim", + "accord_concertation_raw": "Maintien de l'avis initial du médecin contrôleur | Retour groupage initial DIM : | Autre groupage : | : | : | : : | : :- :: | : : V : | Aeni ecini : | : Ti : : : : : D - : :", + "date_concertation": "16/03/18" + } + } +} \ No newline at end of file diff --git a/output/OGC 69.json b/output/OGC 69.json new file mode 100644 index 0000000..c13ad79 --- /dev/null +++ b/output/OGC 69.json @@ -0,0 +1,155 @@ +{ + "fichier": "OGC 69", + "recueil": { + "raw": { + "etablissement": "Etablissement : CLINIQUE DL'ARCACHON", + "finess": "FINESS :330780206 | Date I", + "date_debut_controle": "début contrôle : 13/02/2018", + "n_ogc": "No OGC: 69", + "n_champ": "- | - - | No | champ", + "dates_sejour": "veau 23 et4 mono RUIVI | Dates du séjour : 10/04/2016 au 13/04/2016", + "age_etab": "", + "sexe_etab": "", + "duree_sejour_etab": "", + "mode_entree_etab": "-", + "provenance_etab": "", + "mode_sortie_etab": "- - | -", + "destination_etab": "-", + "nb_seances_etab": ". L4a", + "nb_rum_etab": "", + "age_reco": "/", + "sexe_reco": "", + "duree_sejour_reco": "", + "mode_entree_reco": "", + "provenance_reco": "", + "mode_sortie_reco": "- - | - | -", + "destination_reco": "-", + "um_etab": "-", + "igs_etab": "", + "duree_rum_etab": "-", + "dates_rum_etab": "du 10/04/2016 au 13/04/2016", + "um_reco": "- | - | - | 5 | D", + "igs_reco": "", + "duree_rum_reco": "- - - - | 1", + "dp_code_etab": "1622", + "dp_libelle": "coaage dercauDussemiement | PROLAPSUS RFCTAI", + "dr_code_etab": "", + "das_bloc_etab": "G20 | 2 | MAL. DE PARKINSON", + "dp_code_reco": "- La | K623", + "dr_code_reco": "", + "das_bloc_reco": "", + "actes_bloc_etab": "S", + "actes_bloc_reco": "", + "ghm_ghs_ligne": "oniv elaousseemient. UOLUIL uno CLODIPSCHICTL | Praticien conseil | Médecin DIM", + "recodage_impactant": "Recodage impactant la Tacturation a L | : | - 4 - | - | -", + "ghs_injustifie": "GHS injustitie | - U", + "praticien_conseil": "DR VIGNAU" + }, + "parsed": { + "etablissement": "CLINIQUE D'ARCACHON", + "finess": "330780206", + "date_debut_controle": "13/02/2018", + "n_ogc": "69", + "n_champ": "1", + "dates_sejour": "10/04/2016 au 13/04/2016", + "sejour_etab": { + "age": "87", + "sexe": "2", + "duree_sejour": "3", + "mode_entree": "8", + "provenance": "8", + "mode_sortie": "0", + "destination": "1" + }, + "sejour_reco": { + "age": "87", + "sexe": "2", + "duree_sejour": "3", + "mode_entree": "8", + "provenance": "8", + "mode_sortie": "0", + "destination": "1" + }, + "rum_etab": { + "um": "53C", + "igs": "0", + "duree": "3", + "dates": "du 10/04/2016 au 13/04/2016" + }, + "codage_etab": { + "dp": "K623", + "dp_libelle": "PROLAPSUS RECTAL", + "dr": "", + "das": [ + { + "code": "G20", + "position": "2", + "libelle": "MAL. DE PARKINSON" + } + ] + }, + "codage_reco": { + "dp": "K623", + "dr": "", + "das": [] + }, + "actes_etab": [ + { + "code": "HHFA027", + "position": "1", + "libelle": "RESEC. CPLT PROLAPSUS COLORECTAL EXTERIORISE +ANAST. +MYORRAPHIE PELV" + }, + { + "code": "HHFA027", + "position": "4", + "libelle": "RESEC. CPLT PROLAPSUS COLORECTAL EXTERIORISE +ANAST. +MYORRAPHIE PELV" + } + ], + "actes_reco": [ + { + "code": "HHFA027", + "position": "1", + "libelle": "RESEC. CPLT PROLAPSUS COLORECTAL EXTERIORISE +ANAST. +MYORRAPHIE PELV" + }, + { + "code": "HHFA027", + "position": "4", + "libelle": "RESEC. CPLT PROLAPSUS COLORECTAL EXTERIORISE +ANAST. +MYORRAPHIE PELV" + } + ], + "ghm_etab": "06C071", + "ghs_etab": "1947", + "ghm_reco": "06C071", + "ghs_reco": "1947", + "recodage_impactant": "4", + "ghs_injustifie": "", + "accord_desaccord": "accord", + "praticien_conseil": "DR VIGNAU" + } + }, + "concertation_1": { + "raw": { + "date_concertation_arg": "séjours de nive | tion : | - - 1 3.", + "argumentaire": "104 : La facturation du GHS par r'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non- | respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non- | respect des règles porte sur un diagnostic associé significatif (DAS) codé par rétablissement dans le résumé d'unité médicale (RUM). | Ce DAS n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre IV, paragraphe 2.1: (( Un | diagnostic associé est significatif s'il est pris en charge à titre diagnostique ou thérapeutique ou s'il majore l'effort. de prise en charge | d'une autre affection. Par prise en charge diagnostique on entend la mise en oeuvre de moyens nécessaires au diagnostic d'une | affection nouvelle ou au (( bilan > d'une affection préexistante. Par prise en charge thérapeutique on entend la réalisation d'un | traitement. Par majoration de l'effort de prise en charge d'une autre affection on entend l'augmentation imposée par une affection B | de l'effort de soins relatif à une affection A enregistrée comme diagnostic principal (DP), diagnostic relié (DR) ou DAS, par rapport à ce | qu'il aurait dû être en l'absence de B. Sil'affection B, quoique non prise en charge-à titre diagnostique ou thérapeutique, a néanmoins | alourdi la prise en charge de A, alors B est un DAS. (..) Ne doivent pas être retenues comme significatives les affections ne respectant | pas la définition, par exemple, les antécédents guéris, les maladies stabilisées ou les facteurs de risque n'ayant bénéficié d'aucune | prise en charge >> Au vu des éléments du dossier du patient, le DAS choisi par l'établissement ne peut pas être codé, ce diagnostic | associé n'ayant nécessité aucune prise en charge documentée au dossier." + }, + "parsed": { + "date_concertation": "13/03/2023", + "argumentaire": "104 : La facturation du GHS par l'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non-respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non-respect des règles porte sur un diagnostic associé significatif (DAS) codé par l'établissement dans le résumé d'unité médicale (RUM). Ce DAS n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre IV, paragraphe 2.1 : « Un diagnostic associé est significatif s'il est pris en charge à titre diagnostique ou thérapeutique ou s'il majore l'effort de prise en charge d'une autre affection. Par prise en charge diagnostique on entend la mise en oeuvre de moyens nécessaires au diagnostic d'une affection nouvelle ou au « bilan » d'une affection préexistante. Par prise en charge thérapeutique on entend la réalisation d'un traitement. Par majoration de l'effort de prise en charge d'une autre affection on entend l'augmentation imposée par une affection B de l'effort de soins relatif à une affection A enregistrée comme diagnostic principal (DP), diagnostic relié (DR) ou DAS, par rapport à ce qu'il aurait dû être en l'absence de B. Si l'affection B, quoique non prise en charge à titre diagnostique ou thérapeutique, a néanmoins alourdi la prise en charge de A, alors B est un DAS. (…) Ne doivent pas être retenues comme significatives les affections ne respectant pas la définition, par exemple, les antécédents guéris, les maladies stabilisées ou les facteurs de risque n'ayant bénéficié d'aucune prise en charge ». Au vu des éléments du dossier du patient, le DAS choisi par l'établissement ne peut pas être codé, ce diagnostic associé n'ayant nécessité aucune prise en charge documentée au dossier." + } + }, + "concertation_2": { + "raw": { + "ghs_ligne": "GHS initial : 1948 | GHS avant concertation : 1947 | GHS final après concertation : 1942", + "accord_concertation": "Maintien de l'avis initial du médecin contrôleurg | Retour groupage initial DIM : | Autre groupage : | : : : | - E : :: : Sol 3E A : - - | E | : : : : : - : : : : | : : : SE : . | -", + "date_concertation": "" + }, + "parsed": { + "ghs_initial": "1948", + "ghs_avant_concertation": "1947", + "ghs_final": "1942", + "decision": "maintien_avis_controleur", + "accord_concertation_raw": "Maintien de l'avis initial du médecin contrôleur | Retour groupage initial DIM : | Autre groupage : | : : : | - E : :: : Sol 3E A : - - | E | : : : : : - : : : : | : : : SE : . | -", + "date_concertation": "13/08" + } + } +} \ No newline at end of file diff --git a/output/OGC 7.json b/output/OGC 7.json new file mode 100644 index 0000000..3ec6300 --- /dev/null +++ b/output/OGC 7.json @@ -0,0 +1,154 @@ +{ + "fichier": "OGC 7", + "recueil": { + "raw": { + "etablissement": "Etablissement : CLINIQUE DV'ARCACHON", + "finess": "FINESS : 330780206 | Date", + "date_debut_controle": "début contrôle : 13/02/2018", + "n_ogc": "No OGC:7", + "n_champ": "No cham p | -", + "dates_sejour": "Dates du séjour : 01/03/2016 au 04/03/2016", + "age_etab": "I - - | . | L | / | 5", + "sexe_etab": "", + "duree_sejour_etab": "", + "mode_entree_etab": "- | r", + "provenance_etab": "", + "mode_sortie_etab": "", + "destination_etab": "", + "nb_seances_etab": "", + "nb_rum_etab": "", + "age_reco": "/ 5", + "sexe_reco": "", + "duree_sejour_reco": "", + "mode_entree_reco": "- | - | a | - | -", + "provenance_reco": "J", + "mode_sortie_reco": "", + "destination_reco": "", + "um_etab": "-", + "igs_etab": "I -", + "duree_rum_etab": "", + "dates_rum_etab": "du 01/03/2016 au 04/03/2016", + "um_reco": "", + "igs_reco": "", + "duree_rum_reco": "-", + "dp_code_etab": "T810", + "dp_libelle": "HEMORR. ET HEMATOME COMPLIQ. UN ACTE, NCA", + "dr_code_etab": "", + "das_bloc_etab": "R33 | 2 | RETENTION D'URINE | Z954 | 2 | PRESENCE D'UNE AUTRE VALV. CARD. DE REMPLACEMENT", + "dp_code_reco": "R31", + "dr_code_reco": "- 5 -", + "das_bloc_reco": "R33 | 2 | T810 | 2 | Z954 | 2", + "actes_bloc_etab": "s", + "actes_bloc_reco": "-", + "ghm_ghs_ligne": "GHM établissement : 21M162 GHS établissement : 7610 GHM après recodage : 11M122 | GHS après recodage : 4323 | - a IRA", + "recodage_impactant": "Recodage impactant la facturation : 1", + "ghs_injustifie": "GHS injustifié :0", + "praticien_conseil": "DR VIGNAU" + }, + "parsed": { + "etablissement": "CLINIQUE D'ARCACHON", + "finess": "330780206", + "date_debut_controle": "13/02/2018", + "n_ogc": "7", + "n_champ": "1", + "dates_sejour": "01/03/2016 au 04/03/2016", + "sejour_etab": { + "age": "75", + "sexe": "1", + "duree_sejour": "3", + "mode_entree": "1", + "provenance": "8", + "mode_sortie": "0", + "destination": "0" + }, + "sejour_reco": { + "age": "75", + "sexe": "1", + "duree_sejour": "3", + "mode_entree": "1", + "provenance": "8", + "mode_sortie": "0", + "destination": "0" + }, + "rum_etab": { + "um": "40C", + "igs": "0", + "duree": "3", + "dates": "du 01/03/2016 au 04/03/2016" + }, + "codage_etab": { + "dp": "T810", + "dp_libelle": "HEMORR. ET HEMATOME COMPLIQ. UN ACTE, NCA", + "dr": "", + "das": [ + { + "code": "R33", + "position": "2", + "libelle": "RETENTION D'URINE" + }, + { + "code": "Z954", + "position": "2", + "libelle": "PRESENCE D'UNE AUTRE VALV. CARD. DE REMPLACEMENT" + } + ] + }, + "codage_reco": { + "dp": "R31", + "dr": "5", + "das": [ + { + "code": "R33", + "position": "2", + "libelle": "RETENTION D'URINE" + }, + { + "code": "T810", + "position": "2", + "libelle": "HEMORR. ET HEMATOME COMPLIQ. UN ACTE, NCA" + }, + { + "code": "Z954", + "position": "2", + "libelle": "PRESENCE D'UNE AUTRE VALV. CARD. DE REMPLACEMENT" + } + ] + }, + "actes_etab": [], + "actes_reco": [], + "ghm_etab": "21M162", + "ghs_etab": "7610", + "ghm_reco": "11M122", + "ghs_reco": "4323", + "recodage_impactant": "1", + "ghs_injustifie": "0", + "accord_desaccord": "accord", + "praticien_conseil": "DR VIGNAU" + } + }, + "concertation_1": { + "raw": { + "date_concertation_arg": ") | tion : | 3 - | -", + "argumentaire": "109 : La facturation du GHS par l'établissement n'est pas conforme àl'article 1 delarrêté du 19tevrier 2015 moditie dutaita un non- | respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non- | respect des règles porte sur le diagnostic principal (DP) codé par rétablissement dans le résumé d'unité médicale (RUM). Le DP n'est | pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre V, paragraphe 1 : (( les diagnostics doivent | figurer dans le RUM sous forme codée selon la plus récente mise à jour de la 10e révision de la Classification internationale des | maladies (CIM-10) de P'Organisation mondiale de la santé et selon les extensions nationales données dans la plus récente version du | Manuel des groupes homogènes de malades. (..) Le meilleur code est le plus précis par rapport à l'information à coder. >> Au vu des | éléments présents dans le dossier du patient, le code CIM-10 choisi pour le DP par P'établissement n'est pas le plus précis par rapport | à l'information à coder. | 1" + }, + "parsed": { + "date_concertation": "13/02", + "argumentaire": "109 : La facturation du GHS par l'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non-respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non-respect des règles porte sur le diagnostic principal (DP) codé par l'établissement dans le résumé d'unité médicale (RUM). Le DP n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre V, paragraphe 1 : « les diagnostics doivent figurer dans le RUM sous forme codée selon la plus récente mise à jour de la 10e révision de la Classification internationale des maladies (CIM-10) de l'Organisation mondiale de la santé et selon les extensions nationales données dans la plus récente version du Manuel des groupes homogènes de malades. (…) Le meilleur code est le plus précis par rapport à l'information à coder. » Au vu des éléments présents dans le dossier du patient, le code CIM-10 choisi pour le DP par l'établissement n'est pas le plus précis par rapport à l'information à coder." + } + }, + "concertation_2": { + "raw": { + "ghs_ligne": "GHS initial : 7610 | GHS avant concertation : 4323 | GHS final après concertation I : 4323", + "accord_concertation": "Maintien de l'avis initial du médecin contrôleur K | Retour groupage initial DIM : | Autre groupage : | ': : : S : | Avis Finaldi MEDECIN: DIM: | : : : : | : : : a", + "date_concertation": "" + }, + "parsed": { + "ghs_initial": "7610", + "ghs_avant_concertation": "4323", + "ghs_final": "4323", + "decision": "retour_groupage_dim", + "accord_concertation_raw": "Maintien de l'avis initial du médecin contrôleur. Retour groupage initial DIM : Avis Final du MEDECIN DIM :", + "date_concertation": "13/03/18" + } + } +} \ No newline at end of file diff --git a/output/OGC 74.json b/output/OGC 74.json new file mode 100644 index 0000000..a5e8a88 --- /dev/null +++ b/output/OGC 74.json @@ -0,0 +1,149 @@ +{ + "fichier": "OGC 74", + "recueil": { + "raw": { + "etablissement": "Etablissement : CLINIQUE D'ARCACHON", + "finess": "FINESS - : 330780206 | Dat", + "date_debut_controle": "e début contrôle : 13/02/2018", + "n_ogc": "No OGC:74", + "n_champ": "- - - | No | champ", + "dates_sejour": "niveau 23 et4 mono RUI | Dates du séjour : 08/04/2016 au 13/04/2016", + "age_etab": "- 1r", + "sexe_etab": "", + "duree_sejour_etab": "- I", + "mode_entree_etab": "- | - | a | . | - -", + "provenance_etab": "", + "mode_sortie_etab": "1", + "destination_etab": "", + "nb_seances_etab": "", + "nb_rum_etab": "", + "age_reco": "", + "sexe_reco": "", + "duree_sejour_reco": "-", + "mode_entree_reco": "- | -", + "provenance_reco": "", + "mode_sortie_reco": "- | - | - | -", + "destination_reco": "-", + "um_etab": "", + "igs_etab": "", + "duree_rum_etab": "- | -", + "dates_rum_etab": "du 08/04/2016 au 13/04/2016", + "um_reco": "", + "igs_reco": "", + "duree_rum_reco": "- Amm - | - | -", + "dp_code_etab": "Anoo", + "dp_libelle": "HIEE | mitmimall sut | : | codagedederttablissement | HATENEHREYE | frirtr. | THHTE FRHHET | GASTROFNTERITE COIITE ORIGINE SAI", + "dr_code_etab": "E 6 | DR", + "das_bloc_etab": "C795 | 2 | T.M. TIRE. DES OS ET DE LA MOELLE OSSEUSE | C797 | 2 | T.M. HRE. DE LA GLD. SURRENALE", + "dp_code_reco": "CoOMM | B99+1", + "dr_code_reco": "", + "das_bloc_reco": "C795 | 2 | C797 | 2", + "actes_bloc_etab": "tes | a | : | ERES", + "actes_bloc_reco": "", + "ghm_ghs_ligne": "Happer:un code CIV de DASSUIVIO unastensqueconresponumnUIELIVCACIUEPUITE | GHM établissement : 06M032 GHS établissement : 2130 GHM après recodage : 18M041 | GHS après recodage : 6772", + "recodage_impactant": "raue : COn a - | Recodage imnactant la facturation:1", + "ghs_injustifie": "- 1 - - | GHS iniustifié :0 -", + "praticien_conseil": "DD IDVIGNALL | -" + }, + "parsed": { + "etablissement": "CLINIQUE D'ARCACHON", + "finess": "330780206", + "date_debut_controle": "13/02/2018", + "n_ogc": "74", + "n_champ": "1", + "dates_sejour": "08/04/2016 au 13/04/2016", + "sejour_etab": { + "age": "52", + "sexe": "1", + "duree_sejour": "5", + "mode_entree": "7", + "provenance": "1", + "mode_sortie": "8", + "destination": "0" + }, + "sejour_reco": { + "age": "52", + "sexe": "1", + "duree_sejour": "5", + "mode_entree": "7", + "provenance": "1", + "mode_sortie": "8", + "destination": "0" + }, + "rum_etab": { + "um": "40 C", + "igs": "0", + "duree": "5", + "dates": "du 08/04/2016 au 13/04/2016" + }, + "codage_etab": { + "dp": "A099", + "dp_libelle": "GASTROENTERITE COULITE ORIGINE SAI", + "dr": "E6", + "das": [ + { + "code": "C795", + "position": "2", + "libelle": "T.M. HRE. DES OS ET DE LA MOELLE OSSEUSE" + }, + { + "code": "C797", + "position": "2", + "libelle": "T.M. HRE. DE LA GLD. SURRENALE" + } + ] + }, + "codage_reco": { + "dp": "B991", + "dr": "", + "das": [ + { + "code": "C795", + "position": "2", + "libelle": "" + }, + { + "code": "C797", + "position": "2", + "libelle": "" + } + ] + }, + "actes_etab": [], + "actes_reco": [], + "ghm_etab": "06M032", + "ghs_etab": "2130", + "ghm_reco": "18M041", + "ghs_reco": "6772", + "recodage_impactant": "1", + "ghs_injustifie": "1", + "accord_desaccord": "désaccord", + "praticien_conseil": "DR IDVIGNALL" + } + }, + "concertation_1": { + "raw": { + "date_concertation_arg": "sejoursue aIv | cation : | 2 | 3 | -", + "argumentaire": "115 : La facturation du GHS par rétablissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non- | respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non- | respect des règles porte sur le diagnostic principal (DP) codé par r'établissement dans le résumé d'unité médicale (RUM). Le DPn'est | pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre VI, paragraphe 1.1.1 : (( La situation est celle : | d'un patient hospitalisé en raison d'une symptomatologle. (..) Lorsqu'il n'a pas été découvert de cause à la symptomatologie, elle est | le DP. [Règle D2]. La symptomatologie qui a motivé hospitalisation et qui a été explorée, est le DP, qu'elle persiste ou qu'elle ait | disparu lors du séjour. La même règle s'applique aux circonstances dans lesquelles le motif d'admission est une suspicion diagnostique | qui n'est pas confirmée au terme du séjour. >> Au vu des éléments présents dans le dossier du patient, alors que l'admission a été | motivée par un symptôme dont l'affection causale n'a pas été retrouvée, 'établissement n'a pas retenu ce symptôme en DP." + }, + "parsed": { + "date_concertation": "23/02/2023", + "argumentaire": "115 : La facturation du GHS par l'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non-respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non-respect des règles porte sur le diagnostic principal (DP) codé par l'établissement dans le résumé d'unité médicale (RUM). Le DP n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre VI, paragraphe 1.1.1 : « La situation est celle d'un patient hospitalisé en raison d'une symptomatologie. (...) Lorsqu'il n'a pas été découvert de cause à la symptomatologie, elle est le DP. [Règle D2]. La symptomatologie qui a motivé l'hospitalisation et qui a été explorée, est le DP, qu'elle persiste ou qu'elle ait disparu lors du séjour. La même règle s'applique aux circonstances dans lesquelles le motif d'admission est une suspicion diagnostique qui n'est pas confirmée au terme du séjour. » Au vu des éléments présents dans le dossier du patient, alors que l'admission a été motivée par un symptôme dont l'affection causale n'a pas été retrouvée, l'établissement n'a pas retenu ce symptôme en DP." + } + }, + "concertation_2": { + "raw": { + "ghs_ligne": "GHS initial : 2130 | GHS avant concertation : 6772 | GHS final après concertation : 6772", + "accord_concertation": "Maintien de l'avis initial du médecin contrôleur | Retour groupage initial DIM : | Autre groupage : | FF HESETE - | im - -", + "date_concertation": "" + }, + "parsed": { + "ghs_initial": "2130", + "ghs_avant_concertation": "6772", + "ghs_final": "6772", + "decision": "maintien_avis_controleur", + "accord_concertation_raw": "Maintien de l'avis initial du médecin contrôleur | Retour groupage initial DIM : | Autre groupage : | FF HESETE - | im - -", + "date_concertation": "23/08/2018" + } + } +} \ No newline at end of file diff --git a/output/OGC 76.json b/output/OGC 76.json new file mode 100644 index 0000000..e9df2cd --- /dev/null +++ b/output/OGC 76.json @@ -0,0 +1,139 @@ +{ + "fichier": "OGC 76", + "recueil": { + "raw": { + "etablissement": "seur e recodage impactantiala | h lieco | t a CUNIOUE nlARCACHON", + "finess": "curauon esu - rensebne - | FINESS' 330780206 - - | Date", + "date_debut_controle": "début contrôle: 13/02/2018", + "n_ogc": "No OGC:76", + "n_champ": "no", + "dates_sejour": "iveau 23 et 4 mono RUM | Dates duséiour: 05/04/2016au11/04/2016", + "age_etab": "an", + "sexe_etab": "U - | -", + "duree_sejour_etab": "à", + "mode_entree_etab": "", + "provenance_etab": "", + "mode_sortie_etab": "-", + "destination_etab": "-", + "nb_seances_etab": "", + "nb_rum_etab": "-", + "age_reco": "- | -", + "sexe_reco": "", + "duree_sejour_reco": "- - | -", + "mode_entree_reco": "", + "provenance_reco": "", + "mode_sortie_reco": "- - - -", + "destination_reco": "", + "um_etab": "- - - :", + "igs_etab": "", + "duree_rum_etab": "a -", + "dates_rum_etab": "du05/04/2016au 11/04/2016 -", + "um_reco": "- - - | - EETT - | - | a", + "igs_reco": "", + "duree_rum_reco": "- | I | - | - | - - | - -", + "dp_code_etab": "", + "dp_libelle": "bii | : ELTnCE aE : | : | del 'Etablissement | :: n# n | - | mE | mthhRENL.MIE. | \"iE | FtTTAT | MFH: | Codage", + "dr_code_etab": "F329", + "das_bloc_etab": "Z511 | 3 | SEANCE DE CHIMIOTHERAPIE POUR TUM. | : | t", + "dp_code_reco": "ecodage - | - | - -", + "dr_code_reco": "LDIL | C189+8", + "das_bloc_reco": "C189+8", + "actes_bloc_etab": "SL | - | es | iit; | E", + "actes_bloc_reco": "", + "ghm_ghs_ligne": "Rappel : un code CIM de DAS: suivi d'un astérisque correspond à une CMA exclue por le DP | GHM établissement : 19M113 GHS établissement:7086 GHM après recodage : 17M061 | GHS après recodage : 6487", + "recodage_impactant": "Praticien conseil", + "ghs_injustifie": "Recodage impactant | C | Cuciniuctifio -", + "praticien_conseil": "NomuupraucieIEnCOnSEnrespouanie - ryoudbe" + }, + "parsed": { + "etablissement": "CLINIQUE D'ARCACHON", + "finess": "330780206", + "date_debut_controle": "13/02/2018", + "n_ogc": "76", + "n_champ": "1", + "dates_sejour": "05/04/2016 au 11/04/2016", + "sejour_etab": { + "age": "54", + "sexe": "2", + "duree_sejour": "6", + "mode_entree": "8", + "provenance": "8", + "mode_sortie": "8", + "destination": "0" + }, + "sejour_reco": { + "age": "54", + "sexe": "2", + "duree_sejour": "6", + "mode_entree": "8", + "provenance": "8", + "mode_sortie": "8", + "destination": "0" + }, + "rum_etab": { + "um": "40 C", + "igs": "II", + "duree": "6", + "dates": "du 05/04/2016 au 11/04/2016" + }, + "codage_etab": { + "dp": "F329", + "dp_libelle": "EPISODE DEPRES. SAI", + "dr": "F329", + "das": [ + { + "code": "Z511", + "position": "3", + "libelle": "SEANCE DE CHIMIOTHERAPIE POUR TUM." + } + ] + }, + "codage_reco": { + "dp": "C189", + "dr": "C189", + "das": [ + { + "code": "C189", + "position": "", + "libelle": "" + } + ] + }, + "actes_etab": [], + "actes_reco": [], + "ghm_etab": "19M113", + "ghs_etab": "7086", + "ghm_reco": "17M061", + "ghs_reco": "6487", + "recodage_impactant": "oui", + "ghs_injustifie": "non", + "accord_desaccord": "accord", + "praticien_conseil": "Dr VIGNAL" + } + }, + "concertation_1": { + "raw": { + "date_concertation_arg": "séjours de niv | tation : | 3. 2018", + "argumentaire": "124 : La facturation du GHS par r'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non-. | respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. En | préalable, chapitre VI, paragraphe 1.2: ( Les circonstances du diagnostic préalable n'importent pas (..) La situation de traitement est | présente lorsque le diagnostic de l'affection est fait au moment de l'entrée du patient dans l'unité médicale et que l'admission a pour | but le traitement de l'affection. >> Le non-respect des règles porte sur le diagnostic principal (DP) codé par rétablissement dans le | résumé d'unité médicale (RUM). Le DP n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre VI, | paragraphe 1.2.1 : ( La dénomination traitement répétitif rassemble les traitements qui, par nature, imposent une administration | répétitive. (...) Dans les situations de traitement répétitif le codage du DP utilise des codes du chapitre XXI de la CIM-10 (a codes Z >). | [Règle T1]. La règle est la même si la prise en charge, incidemment, n'a lieu qu'une fois : c'est la nature du traitement qui est prise en | considération. (..) Les séjours pour chimiothérapie, radiothérapie, transfusion sanguine, aphérèse sanguine, oxygénothérapie | hyperbare, injection de fer (pour carence martiale) qu'il s'agisse de séances ou d'hospitalisation complète, doivent avoir en position | de DP le code adéquat de la catégorie Z51 de la CIM10. > Au vu des éléments présents dans le dossier du patient, alors que | l'admission a été motivée par un traitement correspondant à la définition de traitement répétitif, r'établissement n'a pas retenu en DP | le code du chapitre XXI de la CIM-10 en Z imposé par l'annexe II." + }, + "parsed": { + "date_concertation": "13/03/2018", + "argumentaire": "124 : La facturation du GHS par l'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non-respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. En préalable, chapitre VI, paragraphe 1.2 : « Les circonstances du diagnostic préalable n'importent pas (..) La situation de traitement est présente lorsque le diagnostic de l'affection est fait au moment de l'entrée du patient dans l'unité médicale et que l'admission a pour but le traitement de l'affection. » Le non-respect des règles porte sur le diagnostic principal (DP) codé par l'établissement dans le résumé d'unité médicale (RUM). Le DP n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre VI, paragraphe 1.2.1 : « La dénomination traitement répétitif rassemble les traitements qui, par nature, imposent une administration répétitive. (...) Dans les situations de traitement répétitif le codage du DP utilise des codes du chapitre XXI de la CIM-10 (codes Z >). [Règle T1]. La règle est la même si la prise en charge, incidemment, n'a lieu qu'une fois : c'est la nature du traitement qui est prise en considération. (..) Les séjours pour chimiothérapie, radiothérapie, transfusion sanguine, aphérèse sanguine, oxygénothérapie hyperbare, injection de fer (pour carence martiale) qu'il s'agisse de séances ou d'hospitalisation complète, doivent avoir en position de DP le code adéquat de la catégorie Z51 de la CIM10. » Au vu des éléments présents dans le dossier du patient, alors que l'admission a été motivée par un traitement correspondant à la définition de traitement répétitif, l'établissement n'a pas retenu en DP le code du chapitre XXI de la CIM-10 en Z imposé par l'annexe II." + } + }, + "concertation_2": { + "raw": { + "ghs_ligne": "GHSinitial: : 7086 | GHS avant concertation : 6487 | GHS final après concertation : 6487", + "accord_concertation": "Maintien de l'avis initial du médecin contrôleur : X | Retour groupage initial DIM : | Autre groupage : | : #ili | MatenteasnaEdEGEEAR XANEME MALTE EE L", + "date_concertation": "" + }, + "parsed": { + "ghs_initial": "7086", + "ghs_avant_concertation": "6487", + "ghs_final": "6487", + "decision": "maintien_avis_controleur", + "accord_concertation_raw": "Maintien de l'avis initial du médecin contrôleur : X | Retour groupage initial DIM : | Autre groupage : | : #ili | MatenteasnaEdEGEEAR XANEME MALTE EE L", + "date_concertation": "13/03/2018" + } + } +} \ No newline at end of file diff --git a/output/OGC 84.json b/output/OGC 84.json new file mode 100644 index 0000000..a8dd81b --- /dev/null +++ b/output/OGC 84.json @@ -0,0 +1,174 @@ +{ + "fichier": "OGC 84", + "recueil": { + "raw": { + "etablissement": "Etablissement : CLINIQUE D'ARCACHON", + "finess": "FINESS : - 330780206 | Date", + "date_debut_controle": "début contrôle : 13/02/2018", + "n_ogc": "No OGC:84", + "n_champ": "No champ", + "dates_sejour": "Dates du séjour : 07/04/2016 au 16/04/2016", + "age_etab": "- | - | - | IE | /", + "sexe_etab": "", + "duree_sejour_etab": "- -", + "mode_entree_etab": "", + "provenance_etab": "", + "mode_sortie_etab": "", + "destination_etab": "", + "nb_seances_etab": "- | - | .", + "nb_rum_etab": "", + "age_reco": "1 | - - /", + "sexe_reco": "", + "duree_sejour_reco": "", + "mode_entree_reco": "", + "provenance_reco": "", + "mode_sortie_reco": ". .", + "destination_reco": "", + "um_etab": "", + "igs_etab": "", + "duree_rum_etab": "- - | -", + "dates_rum_etab": "du 07/04/2016 au 16/04/2016", + "um_reco": "-", + "igs_reco": "", + "duree_rum_reco": "-", + "dp_code_etab": "C257", + "dp_libelle": ": . | : | : | : : : : : | T.M. D'AUTRES PARTIES DU PANCREAS", + "dr_code_etab": "", + "das_bloc_etab": "C787 * | 2 | T.M. IIRE. DU FOIE ET V.B. INTRAHEP. | N179 | 3 | INSUF, RENALE AIG., SAI | R18 | 2 | ASCITE | R410 | 2 | DESORIENTATION, SAI | Z515 | 3 | SOINS PALLIATIFS", + "dp_code_reco": "Z515", + "dr_code_reco": "", + "das_bloc_reco": "C257 | 2 | C787 | 2 | R18 | 2 | R410 | 2 | -", + "actes_bloc_etab": "S", + "actes_bloc_reco": "", + "ghm_ghs_ligne": "GHM établissement : 07M063 GHS établissement : 2526 GHM après recodage : 23Z02Z | GHS après recodage : 7992", + "recodage_impactant": "Recodage impactant la facturation : 1", + "ghs_injustifie": "GHS injustifié . 0", + "praticien_conseil": "DR VIGNAU" + }, + "parsed": { + "etablissement": "CLINIQUE D'ARCACHON", + "finess": "330780206", + "date_debut_controle": "13/02/2018", + "n_ogc": "84", + "n_champ": "1", + "dates_sejour": "07/04/2016 au 16/04/2016", + "sejour_etab": { + "age": "47", + "sexe": "1", + "duree_sejour": "9", + "mode_entree": "9", + "provenance": "9", + "mode_sortie": "0", + "destination": "0" + }, + "sejour_reco": { + "age": "47", + "sexe": "1", + "duree_sejour": "9", + "mode_entree": "9", + "provenance": "9", + "mode_sortie": "0", + "destination": "0" + }, + "rum_etab": { + "um": "40 C", + "igs": "0", + "duree": "9", + "dates": "du 07/04/2016 au 16/04/2016" + }, + "codage_etab": { + "dp": "C257", + "dp_libelle": "T.M. D'AUTRES PARTIES DU PANCREAS", + "dr": "", + "das": [ + { + "code": "C787", + "position": "2", + "libelle": "T.M. IIRE. DU FOIE ET V.B. INTRAHEP." + }, + { + "code": "N179", + "position": "3", + "libelle": "INSUF. RENALE AIG., SAI" + }, + { + "code": "R18", + "position": "2", + "libelle": "ASCITE" + }, + { + "code": "R410", + "position": "2", + "libelle": "DESORIENTATION, SAI" + }, + { + "code": "Z515", + "position": "3", + "libelle": "SOINS PALLIATIFS" + } + ] + }, + "codage_reco": { + "dp": "Z515", + "dr": "", + "das": [ + { + "code": "C257", + "position": "2", + "libelle": "" + }, + { + "code": "C787", + "position": "2", + "libelle": "" + }, + { + "code": "R18", + "position": "2", + "libelle": "" + }, + { + "code": "R410", + "position": "2", + "libelle": "" + } + ] + }, + "actes_etab": [], + "actes_reco": [], + "ghm_etab": "07M063", + "ghs_etab": "2526", + "ghm_reco": "23Z02Z", + "ghs_reco": "7992", + "recodage_impactant": "1", + "ghs_injustifie": "0", + "accord_desaccord": "accord", + "praticien_conseil": "DR VIGNAU" + } + }, + "concertation_1": { + "raw": { + "date_concertation_arg": "séjours de nive | ation -", + "argumentaire": "136 : La facturation du GHS par 'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non- | respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non- | respect des règles porte sur le diagnostic principal (DP) codé par l'établissement dans le résumé d'unité médicale (RUM). Le DP n'est | pas conforme aux règles de codage des diagnostics rappelées par l'annexe Il, chapitre VI, paragraphe 1.2.2.3, dans certaines situations | de traitement unique médical, en exception à la règle générale, le DP est imposé [règle T11]. A noter que ( la maladie traitée est | enregistrée comme diagnostic relié chaque fois qu'elle respecte sa définition. > Au vu des éléments présents dans le dossier du | patient, alors que l'admission a été motivée pour une situation de traitement unique médical telle que décrite dans le chapitre VI, | paragraphe 1.2.2.3 de l'annexe II dont le code CIM-10 est imposé, l'établissement n'a pas.appliqué la règle T11 pour le codage du DP." + }, + "parsed": { + "date_concertation": "09/03/18", + "argumentaire": "136 : La facturation du GHS par l'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non-respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non-respect des règles porte sur le diagnostic principal (DP) codé par l'établissement dans le résumé d'unité médicale (RUM). Le DP n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre VI, paragraphe 1.2.2.3, dans certaines situations de traitement unique médical, en exception à la règle générale, le DP est imposé [règle T11]. A noter que la maladie traitée est enregistrée comme diagnostic relié chaque fois qu'elle respecte sa définition. > Au vu des éléments présents dans le dossier du patient, alors que l'admission a été motivée pour une situation de traitement unique médical telle que décrite dans le chapitre VI, paragraphe 1.2.2.3 de l'annexe II dont le code CIM-10 est imposé, l'établissement n'a pas appliqué la règle T11 pour le codage du DP." + } + }, + "concertation_2": { + "raw": { + "ghs_ligne": "GHS initial : 2526 | GHS avant concertation : 7992 | GHS final après concertation : 7942", + "accord_concertation": "Maintien de l'avis initial du médecin contrôleur | Retour groupage initial DIM : | Autre groupage : | Hr E E V -S REGNSIN - a L MCHUER W = ANmaNMMS | : :", + "date_concertation": "" + }, + "parsed": { + "ghs_initial": "2526", + "ghs_avant_concertation": "7992", + "ghs_final": "7992", + "decision": "maintien_avis_controleur", + "accord_concertation_raw": "Maintien de l'avis initial du médecin contrôleur | Retour groupage initial DIM : | Autre groupage : | Hr E E V -S REGNSIN - a L MCHUER W = ANmaNMMS | :", + "date_concertation": "03/03/2018" + } + } +} \ No newline at end of file diff --git a/output/OGC 86.json b/output/OGC 86.json new file mode 100644 index 0000000..ffa0840 --- /dev/null +++ b/output/OGC 86.json @@ -0,0 +1,174 @@ +{ + "fichier": "OGC 86", + "recueil": { + "raw": { + "etablissement": "Etablissement : CLINIQUE D'ARCACHON", + "finess": "FINESS : 330780206 | Date - -", + "date_debut_controle": "début contrôle : 13/02/2018", + "n_ogc": "No OGC: 86", + "n_champ": "No champ", + "dates_sejour": "Dates du séjour : 14/04/2016 au 20/04/2016 | a", + "age_etab": "I - - | I | - | 5 | /", + "sexe_etab": "", + "duree_sejour_etab": "", + "mode_entree_etab": "- - | . | / | -", + "provenance_etab": "", + "mode_sortie_etab": "- | à", + "destination_etab": "", + "nb_seances_etab": "", + "nb_rum_etab": "", + "age_reco": "7. 5", + "sexe_reco": "", + "duree_sejour_reco": "", + "mode_entree_reco": "a | C | -", + "provenance_reco": "", + "mode_sortie_reco": "", + "destination_reco": "", + "um_etab": "- | -", + "igs_etab": "-", + "duree_rum_etab": "- | - | - | - - | -", + "dates_rum_etab": "du 14/04/2016 au 20/04/2016", + "um_reco": "", + "igs_reco": "", + "duree_rum_reco": "ITTTTTTT | - - - -", + "dp_code_etab": "C349", + "dp_libelle": "T.M. DE BRONCHE OU DU POUMON, SAI", + "dr_code_etab": "1on", + "das_bloc_etab": "C787 * | 2 | T.M. IIRE. DU FOIE ET V.B. INTRAHEP. | F028 | 2 | DEMENCE AVEC AUTRES MAL. CL. AILL. | F412 | 2 | TBL. ANXIEUX ET DEPRES. MIXTE | G318 | 2 | AFF, DEGEN. PREC. DU SYST. NERV., NCA | Z515 | 3 | SOINS PALLIATIFS", + "dp_code_reco": "C349", + "dr_code_reco": "- 797", + "das_bloc_reco": "C787 | 2 | F028 | 2 | F412 | 2 | G318 | 2", + "actes_bloc_etab": "", + "actes_bloc_reco": "", + "ghm_ghs_ligne": "GHM établissement : 04M093 GHS établissement : 1163 GHM après recodage : 04M092 | GHS après recodage : 1162 | mntiaion 3 - wenit | Médocin DIM", + "recodage_impactant": "Recodage impactant la facturation : 1", + "ghs_injustifie": "GHS injustifié :0", + "praticien_conseil": "DR VIGNAU" + }, + "parsed": { + "etablissement": "CLINIQUE D'ARCACHON", + "finess": "330780206", + "date_debut_controle": "13/02/2018", + "n_ogc": "86", + "n_champ": "1", + "dates_sejour": "14/04/2016 au 20/04/2016", + "sejour_etab": { + "age": "75", + "sexe": "1", + "duree_sejour": "6", + "mode_entree": "0", + "provenance": "0", + "mode_sortie": "1", + "destination": "9" + }, + "sejour_reco": { + "age": "75", + "sexe": "1", + "duree_sejour": "6", + "mode_entree": "0", + "provenance": "0", + "mode_sortie": "1", + "destination": "9" + }, + "rum_etab": { + "um": "40 C", + "igs": "0", + "duree": "6", + "dates": "du 14/04/2016 au 20/04/2016" + }, + "codage_etab": { + "dp": "C349", + "dp_libelle": "T.M. DE BRONCHE OU DU POUMON, SAI", + "dr": "1on", + "das": [ + { + "code": "C787*", + "position": "2", + "libelle": "T.M. IIRE. DU FOIE ET V.B. INTRAHEP." + }, + { + "code": "F028", + "position": "2", + "libelle": "DEMENCE AVEC AUTRES MAL. CL. AILL." + }, + { + "code": "F412", + "position": "2", + "libelle": "TBL. ANXIEUX ET DEPRES. MIXTE" + }, + { + "code": "G318", + "position": "2", + "libelle": "AFF. DEGEN. PREC. DU SYST. NERV., NCA" + }, + { + "code": "Z515", + "position": "3", + "libelle": "SOINS PALLIATIFS" + } + ] + }, + "codage_reco": { + "dp": "C349", + "dr": "797", + "das": [ + { + "code": "C787", + "position": "2", + "libelle": "T.M. IIRE. DU FOIE ET V.B. INTRAHEP." + }, + { + "code": "F028", + "position": "2", + "libelle": "DEMENCE AVEC AUTRES MAL. CL. AILL." + }, + { + "code": "F412", + "position": "2", + "libelle": "TBL. ANXIEUX ET DEPRES. MIXTE" + }, + { + "code": "G318", + "position": "2", + "libelle": "AFF. DEGEN. PREC. DU SYST. NERV., NCA" + } + ] + }, + "actes_etab": [], + "actes_reco": [], + "ghm_etab": "04M093", + "ghs_etab": "1163", + "ghm_reco": "04M092", + "ghs_reco": "1162", + "recodage_impactant": "1", + "ghs_injustifie": "0", + "accord_desaccord": "désaccord", + "praticien_conseil": "DR VIGNAU" + } + }, + "concertation_1": { + "raw": { + "date_concertation_arg": "tion: à | 2. - 3. - | /", + "argumentaire": "105 : La facturation du GHS par l'établissement n'est pas conforme àl'article 1 de l'arrete du 19 revrier 2015 moame duldiunnon - | respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non- | respect des règles porte sur un diagnostic associé significatif (DAS) codé par l'établissement dans le résumé d'unité médicale (RUM). | Ce DAS n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe I, chapitre IV, paragraphe 2.1: (( Lorsqu'un | patient atteint d'une maladie chronique ou de longue durée en cours de traitement est hospitalisé pour un autre motif, la maladie | chronique ou de longue durée est naturellement un DAS, à moins qu'elle n'ait pas bénéficié d'une surveillance et que son traitement | ait été interrompu pendant le séjour. (...) Les informations attestant de la majoration de l'effort de soins devant figurer dans le dossier | médical, >> Au vu des éléments du dossier du patient, la maladie chronique ou de longue durée codée en DAS par r'établissement n'a | bénéficié d'aucune prise en charge diagnostique ou thérapeutique, ni majoré l'effort de prise en charge d'une autre affection." + }, + "parsed": { + "date_concertation": "23/03/2023", + "argumentaire": "105 : La facturation du GHS par l'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non-respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non-respect des règles porte sur un diagnostic associé significatif (DAS) codé par l'établissement dans le résumé d'unité médicale (RUM). Ce DAS n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe I, chapitre IV, paragraphe 2.1 : « Lorsqu'un patient atteint d'une maladie chronique ou de longue durée en cours de traitement est hospitalisé pour un autre motif, la maladie chronique ou de longue durée est naturellement un DAS, à moins qu'elle n'ait pas bénéficié d'une surveillance et que son traitement ait été interrompu pendant le séjour. (...) Les informations attestant de la majoration de l'effort de soins devant figurer dans le dossier médical. » Au vu des éléments du dossier du patient, la maladie chronique ou de longue durée codée en DAS par l'établissement n'a bénéficié d'aucune prise en charge diagnostique ou thérapeutique, ni majoré l'effort de prise en charge d'une autre affection." + } + }, + "concertation_2": { + "raw": { + "ghs_ligne": "GHS initial : 1163 | GHS avant concertation : 1162 | GHS final après concertation : 1-162", + "accord_concertation": "Maintien de l'avis initial du médecin contrôleur : | Retour groupage initial DIM : | Autre groupage : | : | : : | : : : : | Avis Finaldi. MEDECIN DiM | : : : : : - : : : :", + "date_concertation": "" + }, + "parsed": { + "ghs_initial": "1163", + "ghs_avant_concertation": "1162", + "ghs_final": "1162", + "decision": "retour_groupage_dim", + "accord_concertation_raw": "Maintien de l'avis initial du médecin contrôleur : Retour groupage initial DIM : Autre groupage : : : : : : : : Avis Final du MEDECIN DiM : : : : : - : : : :", + "date_concertation": "23/11/2018" + } + } +} \ No newline at end of file diff --git a/output/OGC 9.json b/output/OGC 9.json new file mode 100644 index 0000000..b1cb8ff --- /dev/null +++ b/output/OGC 9.json @@ -0,0 +1,161 @@ +{ + "fichier": "OGC 9", + "recueil": { + "raw": { + "etablissement": "Etablissement : CLINIQUE DL'ARCACHON", + "finess": "FINESS : 330780206 | Date", + "date_debut_controle": "début contrôle : 13/02/2018", + "n_ogc": "No OGC:9", + "n_champ": "No champ . | I -", + "dates_sejour": "iveau - CL4TOTOnUIVI | Dates du séjour : 01/03/2016 au 08/03/2016", + "age_etab": "- | - | - - | 4", + "sexe_etab": "", + "duree_sejour_etab": "- | - | r", + "mode_entree_etab": "", + "provenance_etab": "", + "mode_sortie_etab": "", + "destination_etab": "", + "nb_seances_etab": "", + "nb_rum_etab": "", + "age_reco": "- | - | 4", + "sexe_reco": "", + "duree_sejour_reco": "a | - | - | - | - -", + "mode_entree_reco": "", + "provenance_reco": "", + "mode_sortie_reco": "", + "destination_reco": "-", + "um_etab": "- | - | - | 5 | C", + "igs_etab": "", + "duree_rum_etab": "/", + "dates_rum_etab": "du 01/03/2016 au 08/03/2016", + "um_reco": "- | 1 | 5", + "igs_reco": "", + "duree_rum_reco": "-", + "dp_code_etab": "C61", + "dp_libelle": "couuge UCTELUUIDSETICHCHL | T.M. DE LA PROSTATE", + "dr_code_etab": "", + "das_bloc_etab": ":", + "dp_code_reco": "a | - : a - | : | N135", + "dr_code_reco": "", + "das_bloc_reco": "", + "actes_bloc_etab": "s", + "actes_bloc_reco": "", + "ghm_ghs_ligne": "AUPPEIAUILuCLIVIUCEADUIUUITLAELIPYUL LUT - : | A LE - 4 | GHM établissement : 12C042 GHS établissement : 4519 GHM après recodage : 11C132 | GHS après recodage : 4169", + "recodage_impactant": "Recodage impactant la facturation : 1", + "ghs_injustifie": "GHS injustifié :0", + "praticien_conseil": "DD VIGNAL" + }, + "parsed": { + "etablissement": "CLINIQUE D'ARCACHON", + "finess": "330780206", + "date_debut_controle": "13/02/2018", + "n_ogc": "9", + "n_champ": "1", + "dates_sejour": "01/03/2016 au 08/03/2016", + "sejour_etab": { + "age": "84", + "sexe": "1", + "duree_sejour": "7", + "mode_entree": "0", + "provenance": "8", + "mode_sortie": "8", + "destination": "0" + }, + "sejour_reco": { + "age": "84", + "sexe": "1", + "duree_sejour": "7", + "mode_entree": "0", + "provenance": "8", + "mode_sortie": "8", + "destination": "0" + }, + "rum_etab": { + "um": "53 C", + "igs": "0", + "duree": "7", + "dates": "du 01/03/2016 au 08/03/2016" + }, + "codage_etab": { + "dp": "C61", + "dp_libelle": "T.M. DE LA PROSTATE", + "dr": "", + "das": [] + }, + "codage_reco": { + "dp": "N135", + "dr": "", + "das": [] + }, + "actes_etab": [ + { + "code": "JCAD001", + "quantite": "4" + }, + { + "code": "JCAD001", + "quantite": "1" + }, + { + "code": "JGFA014", + "quantite": "1" + }, + { + "code": "JGFA014", + "quantite": "4" + } + ], + "actes_reco": [ + { + "code": "JCAD001", + "quantite": "4" + }, + { + "code": "JCAD001", + "quantite": "1" + }, + { + "code": "JGFA014", + "quantite": "1" + }, + { + "code": "JGFA014", + "quantite": "4" + } + ], + "ghm_etab": "12C042", + "ghs_etab": "4519", + "ghm_reco": "11C132", + "ghs_reco": "4169", + "recodage_impactant": "1", + "ghs_injustifie": "0", + "accord_desaccord": "désaccord", + "praticien_conseil": "DR VIGNAL" + } + }, + "concertation_1": { + "raw": { + "date_concertation_arg": "UCTHIVE | DEjouis | : | tion | /. 3. | - : | - | - | . | : : * - - : : \" 2 : ATA: -:: : -:", + "argumentaire": "109 : La facturation du GHS par rétablissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non- | respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non- | respect des règles porte sur le diagnostic principal (DP) codé par rétablissement dans le résumé d'unité médicale (RUM). Le DP n'est | pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre V, paragraphe 1 : (( les diagnostics doivent | figurer dans le RUM sous forme codée selon la plus récente mise à jour de la 10e révision de la Classification internationale des | maladies (CIM-10) de 'Organisation mondiale de la santé et selon les extensions nationales données dans la plus récente version du | Manuel des groupes homogènes de malades. (..) Le meilleur code est le plus précis par rapport à l'information à coder. >> Au vu des | éléments présents dans le dossier du patient, le code CIM-10 choisi pour le DP par l'établissement n'est pas le plus précis par rapport | à l'information à coder." + }, + "parsed": { + "date_concertation": "12/01/2018", + "argumentaire": "109 : La facturation du GHS par l'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non-respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non-respect des règles porte sur le diagnostic principal (DP) codé par l'établissement dans le résumé d'unité médicale (RUM). Le DP n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre V, paragraphe 1 : (( les diagnostics doivent figurer dans le RUM sous forme codée selon la plus récente mise à jour de la 10e révision de la Classification internationale des maladies (CIM-10) de l'Organisation mondiale de la santé et selon les extensions nationales données dans la plus récente version du Manuel des groupes homogènes de malades. (..) Le meilleur code est le plus précis par rapport à l'information à coder. >> Au vu des éléments présents dans le dossier du patient, le code CIM-10 choisi pour le DP par l'établissement n'est pas le plus précis par rapport à l'information à coder." + } + }, + "concertation_2": { + "raw": { + "ghs_ligne": "GHS initial : 4519 | GHS avant concertation : 4169 | GHS final après concertation : 4169", + "accord_concertation": "Maintien de l'avis initial du médecin contrôleur : | Retour groupage initial DIM : | Autre groupage : | : | :: | : | : :::: : M - : CENR S - | AIR A | : : : : ::! - : : - T : | : :", + "date_concertation": "" + }, + "parsed": { + "ghs_initial": "4519", + "ghs_avant_concertation": "4169", + "ghs_final": "4169", + "decision": "maintien_avis_controleur", + "accord_concertation_raw": "Maintien de l'avis initial du médecin contrôleur : Retour groupage initial DIM : Autre groupage : M - : CENR S - | AIR A | - : : - T :", + "date_concertation": "13/08/2021" + } + } +} \ No newline at end of file diff --git a/output/OGC 97.json b/output/OGC 97.json new file mode 100644 index 0000000..0f2f98c --- /dev/null +++ b/output/OGC 97.json @@ -0,0 +1,154 @@ +{ + "fichier": "OGC 97", + "recueil": { + "raw": { + "etablissement": "Etablissement : CLINIQUE DV'ARCACHON", + "finess": "FINESS - - - + 330780206 | Date", + "date_debut_controle": "début contrôle : 13/02/2018", + "n_ogc": "No OGC:97", + "n_champ": "No champ | -", + "dates_sejour": "veau LDCL4OTOUV | Dates du séjour : 20/04/2016 au 29/04/2016", + "age_etab": "6 -", + "sexe_etab": "- I", + "duree_sejour_etab": ": - - - | - | -", + "mode_entree_etab": "", + "provenance_etab": "", + "mode_sortie_etab": "- . | -", + "destination_etab": "", + "nb_seances_etab": "", + "nb_rum_etab": "", + "age_reco": "- 6 -", + "sexe_reco": "- | U", + "duree_sejour_reco": "", + "mode_entree_reco": "", + "provenance_reco": "", + "mode_sortie_reco": "- | - - - - -", + "destination_reco": "", + "um_etab": "", + "igs_etab": "", + "duree_rum_etab": "", + "dates_rum_etab": "du 20/04/2016 au 29/04/2016", + "um_reco": "I", + "igs_reco": "", + "duree_rum_reco": ": - - | -", + "dp_code_etab": "C186", + "dp_libelle": "couuyeue! HLMPIDDCTTCICHL | - T.M. DU COLON DESCENDANT", + "dr_code_etab": "", + "das_bloc_etab": "C787 * | 2 | T.M. IIRE. DU FOIE ET V.B. INTRAHEP. | R18 | 2 | ASCITE | Z515 | 3 | SOINS PALLIATIFS", + "dp_code_reco": "Z515", + "dr_code_reco": "C186", + "das_bloc_reco": "C787 | 2 | R18 | 2", + "actes_bloc_etab": "5 | el: un code CIM de DAS suivi d'un astérisque correspond à une CMA exclue par le DP", + "actes_bloc_reco": "- - - - | - | 7002", + "ghm_ghs_ligne": "PraucienConSen | Recodage impactantla facturation:1 | Accord", + "recodage_impactant": "GHS injustifié : 0 | SE 1 | - L | : . -", + "ghs_injustifie": "Nom - | du praticien", + "praticien_conseil": "" + }, + "parsed": { + "etablissement": "CLINIQUE DV'ARCACHON", + "finess": "330780206", + "date_debut_controle": "13/02/2018", + "n_ogc": "97", + "n_champ": "1", + "dates_sejour": "20/04/2016 au 29/04/2016", + "sejour_etab": { + "age": "66", + "sexe": "1", + "duree_sejour": "9", + "mode_entree": "0", + "provenance": "9", + "mode_sortie": "0", + "destination": "1" + }, + "sejour_reco": { + "age": "66", + "sexe": "1", + "duree_sejour": "9", + "mode_entree": "0", + "provenance": "9", + "mode_sortie": "0", + "destination": "1" + }, + "rum_etab": { + "um": "40 C", + "igs": "0", + "duree": "9", + "dates": "du 20/04/2016 au 29/04/2016" + }, + "codage_etab": { + "dp": "C186", + "dp_libelle": "couuyeue HLMPIDDCTTCICHL", + "dr": "", + "das": [ + { + "code": "C787", + "position": "2", + "libelle": "T.M. IIRE. DU FOIE ET V.B. INTRAHEP." + }, + { + "code": "R18", + "position": "2", + "libelle": "ASCITE" + }, + { + "code": "Z515", + "position": "3", + "libelle": "SOINS PALLIATIFS" + } + ] + }, + "codage_reco": { + "dp": "Z515", + "dr": "C186", + "das": [ + { + "code": "C787", + "position": "2", + "libelle": "" + }, + { + "code": "R18", + "position": "2", + "libelle": "" + } + ] + }, + "actes_etab": [], + "actes_reco": [], + "ghm_etab": "23202", + "ghs_etab": "7992", + "ghm_reco": "", + "ghs_reco": "", + "recodage_impactant": "0", + "ghs_injustifie": "", + "accord_desaccord": "accord", + "praticien_conseil": "Dr Masson" + } + }, + "concertation_1": { + "raw": { + "date_concertation_arg": "sejours ae nive | tion:", + "argumentaire": "136 : La facturation du GHS par r'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non- | respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non- | respect des règles porte sur le diagnostic principal (DP) codé par r'établissement dans le résumé d'unité médicale (RUM). Le DP n'est | pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre VI, paragraphe 1.2.2.3, dans certaines situations | de traitement unique médical, en exception à la règle générale, le DP est imposé [règle T11]. A noter que ( la maladie traitée est | enregistrée comme diagnostic relié chaque fois qu'elle respecte sa définition. > Au vu des éléments présents dans le dossier du | patient, alors que l'admission a été motivée pour une situation de traitement unique médical telle que décrite dans le chapitre VI, | paragraphe 1.2.2.3 de l'annexe Il dont le code CIM-10 est imposé, 'établissement n'a pas appliqué la règle T11 pour le codage du DP." + }, + "parsed": { + "date_concertation": null, + "argumentaire": "136 : La facturation du GHS par l'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non-respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non-respect des règles porte sur le diagnostic principal (DP) codé par l'établissement dans le résumé d'unité médicale (RUM). Le DP n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre VI, paragraphe 1.2.2.3, dans certaines situations de traitement unique médical, en exception à la règle générale, le DP est imposé [règle T11]. A noter que la maladie traitée est enregistrée comme diagnostic relié chaque fois qu'elle respecte sa définition. Au vu des éléments présents dans le dossier du patient, alors que l'admission a été motivée pour une situation de traitement unique médical telle que décrite dans le chapitre VI, paragraphe 1.2.2.3 de l'annexe II dont le code CIM-10 est imposé, l'établissement n'a pas appliqué la règle T11 pour le codage du DP." + } + }, + "concertation_2": { + "raw": { + "ghs_ligne": "GHS initial : 2140 | GHS avant concertation : 7992 | GHS final après concertation : 7902", + "accord_concertation": "Maintien de l'avis initial du médecin contrôleur - | Retour groupage initial DIM : | Autre groupage : | :r | : | : | : : : FRE : AE : . : : . : : | T: A : : : RES3T T E DERNN ERE - -", + "date_concertation": "" + }, + "parsed": { + "ghs_initial": "2140", + "ghs_avant_concertation": "7992", + "ghs_final": "7992", + "decision": "retour_groupage_dim", + "accord_concertation_raw": "Maintien de l'avis initial du médecin contrôleur - Retour groupage initial DIM : Autre groupage : :r : : : FRE : AE : . : : . : : | T: A : : : RES3T T E DERNN ERE - -", + "date_concertation": "23/03/18" + } + } +} \ No newline at end of file diff --git a/output/OGC 99.json b/output/OGC 99.json new file mode 100644 index 0000000..a70976d --- /dev/null +++ b/output/OGC 99.json @@ -0,0 +1,189 @@ +{ + "fichier": "OGC 99", + "recueil": { + "raw": { + "etablissement": "A | Etablissement : CLINIQUE DV'ARCACHON", + "finess": "FINESS S:330780206 | Date I", + "date_debut_controle": "début contrôle : 13/02/2018", + "n_ogc": "No OGC: 99", + "n_champ": "No champ", + "dates_sejour": "vcau A CLONO - | NUIVI | Dates du séjour : 16/04/2016 au 06/05/2016", + "age_etab": "5 - - r 6", + "sexe_etab": "", + "duree_sejour_etab": "- | - | -", + "mode_entree_etab": "- | I", + "provenance_etab": "", + "mode_sortie_etab": "", + "destination_etab": "", + "nb_seances_etab": "- - - - : - . -", + "nb_rum_etab": "-", + "age_reco": "5 - 6 -", + "sexe_reco": "", + "duree_sejour_reco": "A | :", + "mode_entree_reco": "- | C | - | - -", + "provenance_reco": "", + "mode_sortie_reco": "-", + "destination_reco": "", + "um_etab": "- -", + "igs_etab": "", + "duree_rum_etab": "- - | - . | - | - | I | -", + "dates_rum_etab": "du 16/04/2016 au 06/05/2016", + "um_reco": "", + "igs_reco": "", + "duree_rum_reco": "-", + "dp_code_etab": "T827", + "dp_libelle": "couuye. ue FLLUDISSCHICHe | INFECT. ET REAC. INFL. DUES A PROTH., IMPL., GREF. CARD. ET VASC. NCA", + "dr_code_etab": "", + "das_bloc_etab": "B957 | 2 | STAPHYLO. NCA, CAUSE DE MAL. CLASSEES DANS D'AUTRES CHAP. | B965 | 4 | PSEUDOMONAS, CAUSE DE MAL. CLASSEES DANS D'AUTRES CHAP. | C795 | 2 | T.M. IIRE. DES OS ET DE LA MOELLE OSSEUSE | C797 | 2 | T.M. HIRE. DE LA GLD. SURRENALE | D619 | 2 | APLASIE MEDULLAIRE, SAI | D630 | 2 | ANEMIE AVEC MAL. TUMORALES", + "dp_code_reco": "cowwy - | A415", + "dr_code_reco": "", + "das_bloc_reco": "B957 | 2 | C795 | 2 | C797 | 2 | D619 | 2 | D630 | 2 | R650 | 2", + "actes_bloc_etab": "f", + "actes_bloc_reco": "", + "ghm_ghs_ligne": "AMPPAIALALVLLL - r Y A uc + - | - | - E MHMMm LALL | GHM établissement : 21M164 GHS établissement : 7612 GHM après recodage : 18M073 | GHS après recodage : 6783", + "recodage_impactant": "Recodage impactant la facturation : 1", + "ghs_injustifie": "GHS injustifié :0", + "praticien_conseil": "DR VIGNALI" + }, + "parsed": { + "etablissement": "CLINIQUE D'ARCACHON", + "finess": "330780206", + "date_debut_controle": "13/02/2018", + "n_ogc": "99", + "n_champ": "1", + "dates_sejour": "16/04/2016 au 06/05/2016", + "sejour_etab": { + "age": "66", + "sexe": "1", + "duree_sejour": "20", + "mode_entree": "7", + "provenance": "1", + "mode_sortie": "8", + "destination": "0" + }, + "sejour_reco": { + "age": "66", + "sexe": "1", + "duree_sejour": "20", + "mode_entree": "7", + "provenance": "1", + "mode_sortie": "8", + "destination": "0" + }, + "rum_etab": { + "um": "40 C", + "igs": "0", + "duree": "20", + "dates": "du 16/04/2016 au 06/05/2016" + }, + "codage_etab": { + "dp": "T827", + "dp_libelle": "INFECT. ET REAC. INFL. DUES A PROTH., IMPL., GREF. CARD. ET VASC. NCA", + "dr": "", + "das": [ + { + "code": "B957", + "position": "2", + "libelle": "STAPHYLO. NCA, CAUSE DE MAL. CLASSEES DANS D'AUTRES CHAP." + }, + { + "code": "B965", + "position": "2", + "libelle": "PSEUDOMONAS, CAUSE DE MAL. CLASSEES DANS D'AUTRES CHAP." + }, + { + "code": "C795", + "position": "2", + "libelle": "T.M. IIRE. DES OS ET DE LA MOELLE OSSEUSE" + }, + { + "code": "C797", + "position": "2", + "libelle": "T.M. HIRE. DE LA GLD. SURRENALE" + }, + { + "code": "D619", + "position": "2", + "libelle": "APLASIE MEDULLAIRE, SAI" + }, + { + "code": "D630", + "position": "2", + "libelle": "ANEMIE AVEC MAL. TUMORALES" + } + ] + }, + "codage_reco": { + "dp": "A415", + "dr": "", + "das": [ + { + "code": "B957", + "position": "2", + "libelle": "STAPHYLOCOQUE NCA" + }, + { + "code": "C795", + "position": "2", + "libelle": "TUMEUR MALIGNE SECONDAIRE DES OS" + }, + { + "code": "C797", + "position": "2", + "libelle": "TUMEUR MALIGNE SECONDAIRE DE LA GLANDE SURRENALE" + }, + { + "code": "D619", + "position": "2", + "libelle": "APLASIE MEDULLAIRE" + }, + { + "code": "D630", + "position": "2", + "libelle": "ANEMIE PLASTIQUE ACQUISE" + }, + { + "code": "R650", + "position": "2", + "libelle": "SYNDROME DE LYSE TUMORALE" + } + ] + }, + "actes_etab": [], + "actes_reco": [], + "ghm_etab": "21M164", + "ghs_etab": "7612", + "ghm_reco": "18M073", + "ghs_reco": "6783", + "recodage_impactant": "1", + "ghs_injustifie": "0", + "accord_desaccord": "désaccord", + "praticien_conseil": "DR VIGNALI" + } + }, + "concertation_1": { + "raw": { + "date_concertation_arg": "sejours de nive | tion: | 2.3", + "argumentaire": "109 : La facturation du GHS par r'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non- | respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non- | respect des règles porte sur le diagnostic principal (DP) codé par r'établissement dans le résumé d'unité médicale (RUM). Le DP n'est | pas conforme aux règles de codage des diagnostics rappelées par l'annexe HI, chapitre V, paragraphe 1: (( les diagnostics doivent | figurer dans le RUM sous forme codée selon la plus récente mise à jour de la 10e révision de la Classification internationale des | maladies (CIM-10) de Organisation mondiale de la santé et selon les extensions nationales données dans la plus récente version du | Manuel des groupes homogènes de malades. (...) Le meilleur code est le plus précis par rapport à l'information à coder. >> Au vu des | éléments présents dans le dossier du patient, le code CIM-10 choisi pour le DP par 'établissement n'est pas le plus précis par rapport | l'information à coder." + }, + "parsed": { + "date_concertation": "23/03/2023", + "argumentaire": "109 : La facturation du GHS par l'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non-respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non-respect des règles porte sur le diagnostic principal (DP) codé par l'établissement dans le résumé d'unité médicale (RUM). Le DP n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe III, chapitre V, paragraphe 1: (( les diagnostics doivent figurer dans le RUM sous forme codée selon la plus récente mise à jour de la 10e révision de la Classification internationale des maladies (CIM-10) de l'Organisation mondiale de la santé et selon les extensions nationales données dans la plus récente version du Manuel des groupes homogènes de malades. (...) Le meilleur code est le plus précis par rapport à l'information à coder. >> Au vu des éléments présents dans le dossier du patient, le code CIM-10 choisi pour le DP par l'établissement n'est pas le plus précis par rapport à l'information à coder." + } + }, + "concertation_2": { + "raw": { + "ghs_ligne": "GHS initial : 7612 | GHS avant concertation : 6783 | GHS final après concertation : 6783", + "accord_concertation": "Maintien de l'avis initial du médecin contrôleuc | Retour groupage initial DIM : | Autre groupage : | : MEATENSC AENU - : S MERR : | : : | : | : RE : : : : :", + "date_concertation": "" + }, + "parsed": { + "ghs_initial": "7612", + "ghs_avant_concertation": "6783", + "ghs_final": "6783", + "decision": "retour_groupage_dim", + "accord_concertation_raw": "Maintien de l'avis initial du médecin contrôleur | Retour groupage initial DIM : | Autre groupage : | : MEATENSC AENU - : S MERR : | : : | : | : RE : : : : :", + "date_concertation": "23/03/19" + } + } +} \ No newline at end of file diff --git a/output/OGC_2018_CARC_resultats.xlsx b/output/OGC_2018_CARC_resultats.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..99b691382fe165fb0c5c70ffc1d704370449eaa7 GIT binary patch literal 12046 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 literal 0 HcmV?d00001 diff --git a/output/pdf_propres_ocg.zip b/output/pdf_propres_ocg.zip new file mode 100644 index 0000000000000000000000000000000000000000..e52c2d177c6cf4b0471c861dcf2171495653f52e GIT binary patch literal 101339 zcmb5!RZtvJ+cs+4Ey04jySog*-Q5Wg+}$052Mz8%xWhp3AcMOGcXt`sdEb9a)voW~ zRlBR!>OQ*HK_B!}SKq1%uy8m~|G9)iTn+#G@PBStP~=d~->giWU7eg=E!|9W^pdmdZ6g?k7uW1UgkXO>t*!oHRM9 zPsHp3xv|~it{JbwcI#bTQ!8?h8E!r6L#Tz?T9Cy*Rr*>|)#c=H@tPtJ~&A^Sh2tV%oo29?L zU1+^85u{w{O!f2xdf#=u4c3V)a^07kJ%sf4M8Wc+e%#DBIJ>EsJ+_tKt+`$8`%}LK zm#)zHi_SHy%qazm2bKrDz8K-3ay`)*Wr{6CJOx#vzNWBlb;WT%p=I^2+LSoI5CoP>z&f ziiB~<$gkFaJ$tzu2=7f-=XWGCLXQ?G{(YP6BS$oB3IEQGHP?U&}UAKyv!YTHin;&rdg8X;n@p`ElcW6cCmkP6c*{tdB1>eGt0X_LQjzOn* z%v4g^^0PN74dQ2#le7S4-`6rS>8djDo@3(@z9*ht z)Y3vSrFvA2eEfcxb`O{yd%T-00K6+yzB>4vvIz%=d3up&#n2BjxR0ya9#Wn(=->n^2h4XpLnxr~vj4)$%d)w5S|ty7jM z5r3-@>)f;`t&^zE?HNs72hgh}(Zav?B{?lFY!_bBV+;#vsbglJwx+gFbZ%=iZERe7 zwn=8<#2OU58xQQtb_%l5kl_)f1*#jmZ*_Qx=rIeb11*B@;T8CvXk?S#2z6;f( zjE$T9JfzeOxT4}@p`;NaA`DsLih!F2^3^H78}BgLjrz8GU;HKOx@$m|J3Z%Azc`*Q zOy#38U}{ih&@or6n{M>mEqPNqH}sF-I=@dAH9B3+AH-292!7sQF)awo=EB@NVT@87 z?ET`YBBMq$*bWo~q^hUBrZI)75sSTA%yYKD}W9U&=k^KL1sYa!4R* z$DwtB$L&(&=a_?;3hot}?5klGg2HL*a@lSw%rDm#{+mSG!hW&CFjjn{n?FB8MV@%( zA(_TpS0U99Ipkv)fBZf&Ygehop8@3lGV}{QsugH&~pLzV}qfY=Qb$wxd*CeQK^&l`3v@thTtum>9CDMtzAz?moh7MG^nr zI%EA9|4Ac-B6AY@k0cpBxKI=L>1^m80(Zn$a6>D}oSzw;w(0m&9N!qtmFA{D!jh;G zt05`#r<#v+EQ4p%r>fPkxC+er&W@A{ZDpb+XRi*ZRPrdNHM*f*D$*d4%5%>QG-cRF zDS}oI08gmI&%ybrUztj{BXz*C*zyzTCl#^T7bqftNKW1rbTVoTJNU+(XZ zqQ{KWH4I0o+m|!52N<1++P1N3fT6s#mo!I@&N0bt@xHLP14)%d$Lo0>xbSP21-_xQ zb(<1-g|O~}zK6n3+|QYw@RO;lbI*-G)elBh>s)=>1Z4&F@=A*swV40~&dtIMjS+oE z1@M~Ix-$A;CA~7DG-ySX7T5)tyq-LKa{3;v%b#>T`C1~^Yfu?Cl ztI(Wf`&uy0J-1xVr2HaxtsVQq=45!%U!={su&GfGFBsL3b;*B~b*bAGbQBJDb*yS? zFiS*_GKQI^()01Wty)SsfXAnCm7W*02S$Lc);p$Se|ZQ9tysYrg>SnMr)cE4e7 znIV%>omT9;fKiod8K5enV@+||+u<`9mi@R{WLdOLSqU23w!=hMkLm&6*SJs(MqPoX zg_qS6EDn>!_eFo5nh_XCi2h74Bk392^Lj27M-}FR*Vo~m*0^a?8A!i|TXtp@@bQ~T zLjz$&nop7rz|?p5%M~x1d4jH=qN!J6~+c8TrXeRI!J%pue!ccn9WR1fFRX$s3)y0O-_f(VFn zTFZnbIOWL&?Clua3Uh0WZIFWz6{a)$Hd^J}yhb=$`K_FoRAYgW%3zsXZls~g8ZZCH z6jpf|d!vUwmyn;tU2qBF8(bXbJ+7}w_4$*c+_!jooQ#z@62g0t2j4U{EuSK2s96TK zVvE@Q>&d3C4n%C&&6^XHTe7Pn5Gl&fsywul zzNDZ#1dg;M_2g9AP;IgawKiT2s}t?uJ1Vhky6biHW$zbS{R*xqTd`36wZVuu({;B2 zNSj5$DKz8YmXt~oK9jL0(nMVv!}&ReJCEw@i{_QmL(x*YB5z|w1ladlaXwr^@@ZXl zWpi*xUL-ssU7Idl3X}A-JaOVLz2z( z`0Fn_cmLjlf`5xbk?rCB!~kzQN0XhrHY|>E9&TVI#&UCK9sT&#omd2-=sga zjAQEu!S3c?QilD_Fuv?LZ5cxUFCAd1TC>}S1C}%fpAM2iYyrj-WcV88CJgCJTWc@k zJ1w`})VtI*64dNd+@1O}m<{Dk!aw=>u-$(y=me-7pFuxomr!1xx^1LYR+Nr#qkYQX zQY$N;pX(DCTvZh)u!{;^11>cgRBW$@-}o8Er#>xc(QW*!ctqrYIKP3Dtn){6XjTlj ziMO)-@T(cJ7pxC|R@mU50GZ2W3VDDu5m6=mjZ`+phk{YII_A&JG?{9=7x^&(e0B!w z?@9XJU%Sdx1sLXIsRULoD5(ZV=CK7hhLRr;xLDa9|Y#2AZ8KdL0$6 zOY2F7od;{s<2v4V1bTMCWr+MDUM@!iExfyhB*Wuf*MXc1jEQQbjiO{s9<}Tp(hUJ} zi(T?sX-p6S)AS`o48cJ^!(&?T39&91Z!X}wTcU+~w`X;+st@$*?mh=|ex7`>M+D)~ zl^}&1fw7EEYUkggRoB+l!$bEf{Mdn9Ea}fc&7nJ9obk4}&1sb^&UEBe3c4wU&dh|@ z^S5o*%V>*J0b7HJ%{j)_PoYq#@{22D%sTX*e3{XtboY3Nt$!99EtAU$uf(O>)xdN) zixc}l%Dqs2gvQ)}rMXB@SR^PHl(%te5hKI*pvQT{pF)2>;$t z!EZ5eWp~4=3X&LXn;;L0A^57aw7Ke|0Nv5TbR|^P>f~)BdiR&bW$+kpbB#aW!T+;$ zEeK4aoVME-qe~ad{}lCJi!UYIT&$@rNb3n~E}{i=^rQu7fv(^c=E<_#9Is9vOl617`962&J!m4mE^?=rPl89m!H-GaTJ3blZw-d+`R7Cd zq1n%q{11#1nIy-PvfHHNvL|a(@p9_2eJjUI&hqoT6fc#s3WuVUKS>(upU%#CSnvqx zIp;4x9!G`(Er`xqtKPs%fEQkUq{?EG=-OIFB>_k`hY}6mlO74B-+U7nv67kKRi(yp zs4s9ql=va{ps6T7;$rBkbM2>VoUhK^8Nz~|#pWB_$8#mMJpp@&3PXCYxji^mIOOxT z-E18tS_7R*$Bn69JYf~VXZ@^8FP0Z6hi1wYtLQK1@;lr!UKYeYl(YhVEZLLaslh*l zF%)t{f1XLDJ}RO4O`wtccCe=fXKgggo_bukv3b5$E`&!w|A}b2ykEa|^&7KYv`%9z ztl>r2+7OMtzoE#%PKDmJA8I}PHT#KJjBpF@?IDwQFs5!~w(W~!)XI#Av~+@%cCk{kqXZWW>&qnrIy8O-X7wzTc{WsVYlrJqq$01kD+(#2Pj_~%+d(M5HKhQQ(B(zNl>2q-y$e$_&Yt~eAn-ZZ{- zo;J1T&tyc;JU#J@LK~#GfYdl`_rl*f?{k{QV?(Rvmmqfu_g~fq@%;{r;OY zUi-kPuvt(>p^ykaMASP=CVxyusK_I!7B3x#i8WD`h_l6@h0FN2#~BPOD=nKN)UN@Q z*RP`DU8u-5la($^QcvjT&8{SVUgtYQ&l|*hq6#F=bcotWG#Ci({OHc%-IGGeXEB>>f z`=3bfUKhU5AvE}xuB_3en%EX;+8dnFh3wLc@!iq6NpJU+BErX4$CD5+FD6NqT(KxI&r-zN z9*II{y zk$uOxAL-x*zl99XUx`h(6G9LPRo+9`06Rev7Rw)U)eUzljs9amdW?KAya>SM=~~(7 zORd6_aXhAOqFEw9JREx5&+rI=8c^^4dYS0lgB#R2Aq;u8qz(0lpJDKaB-()!zl?G~ zb^;BJ%u~3*J=zhhSZ|Jhk3|5@(;&ROOE>#SaI#Hv>$(n$*WB|F^Tg z=3H!!Ua)PLT=c`MR#yeu)#&r29(3!nCx(^w9L!0BieiuvS zLmAopdV52cZ0tVXE?M8$M#6e1Ou%)67(E;lZIRLbh51Df3s^I3XNh8Gs2}f-z@^uN zp^L||BNd}a?UR^M#Ac40{-B%99*Y2;@MSqev7SI4cQLEo`41*Q3+3ghQ1LKl(^jvD zXvD%{{M-BUynlV5c?9IL=461{{o_;Mk=P&151}_J&m%FeOER+1$x-3PCQu$41Bo zIgOs8u7_#o4E9RNrC(4S&7JP+If=zQU(Sa36FC%p!~Uv|6w{mqw8e(bQu;e}9*Fp7 z=WbizeduwW3=8|RElAne@dZ8*g-qasbbiFw@xYs`rgsu|3taK^FzyR^(E3>Y;Qqgy z6+`$C(gvsdd^!E9)sk39mN<1bhXrJZthC+*#ipF?E=@t@K9QkMuS}Z@(5#(BUo9(2cW%KIV{3ejZ4qc&GO-z+vm@aWdggNZKl#eHn$A#fUY^#coxbsr6>M#lkym3{c4Qc3sHrzH8X=#DZ5128R=k6OUU~51`zO ztj3M~g8Z_J?jqCG&)SJlO8YAr8nG<3s7ol9Ap+k7ZBl}lR~pth8AlRSuJS8$CBmJn*8x)HdJFCrHlT+k8v=CK<=RQ{zU_U&TGpA1 zgM+fwTYKmTAx*!msL|_;w@#cU{X|O{TVk!f(wR}vlM}=D7k(3i!?l-og%)ueuHs23 z^#IFKxG#A4q)bnhri?AvH^X?{G~E9EHA)egL<6}c_MX#G9=}_{{7Bo7(afZ8kfBqq zoCo$bxB@eH8aXo6PYJ%AK~`U`MID0`3~IF>FU!qI25hSD7!-} zV{16Dr!^Ixq!Qt=7IyKK0)+y*+BLSF-MmVAiX(&<56VzMzpsy6k1ACJv4M}YGD$C% z%nfU@q|3Ns^z-@G1P!K&bf!?E5y0_JDe`GjyfpNTzS=Qz4dzp*vZ9@+Q#QvvT5DmW zzwZ$Vg=Szxdd=T%Q`)IU<|^eskCe7kENfvDUT@DGCkOph1_E?LTcp3DB#J^pH zLyLL8gb8>lWqU#yRx)GbSVfgbWTa}+bfqT$`)4yV`^&7=pri%q+N0-%)czY1w)~%H z*84`!8|^D8e`h+qLcZ>lsBwR!%XwVG2Yek79X8WPuwiwa{BJbo8C$o%GcA%McaT6Q zGL34s(G^?WTJ0K%^+cdJBZuZV@hZsQVpPo7FQWzpOz}mzY#`9xn9S#Nxm?hgUGbZj zPP@`gxt!DWL*nP$RJSF|6?58Gtv#ir1Qk)xWAT-h3`x(5vo_UwX|d^+{a+;W%csU6 zNA_s-{0^gX@|s^G@GM(~&6YV}6y7LDF(N3;Xk7l~#Q76eX7N1p8fk5WbztMV<`?&f|UXnXFoyzIP&TS9a)&WXqu7;T;$+N}AF z;)yo#_~h?n!W(H>1;JrGzp$s*dLFrkM!5S8hQ>K{`l%sGD(?VmnnpfiM8~!WMUTja zHb%}4bVRQ-tq~KfDn;&D+gj*p9h&Y&`zw_!HV+6zRdBOe|0}7LtI+i>A3kF}TP=|} z%1)F*A~MiW((fUTN2`O-G#6&p8bPT{T(k#rRmOi2#}=?4ak$H~*bM0@#nJ+*fnSzO z&x9|ejEHN=wu*dC=} zn9W}stf1XJnQW{2K3|Xa^o}Doulb(yCSZNBbX@|B3wKTbU=lW)|3Msy;X36LyuPB@ zKNqs}fNNS-*-r{KE57r-m>jh0w-|X2FIE20m(unPNOp2-7@&@9j|J|32a+yW22(qk)9I z60qFf5-L$2e6UOGzWFHrq9%{=s^e_%vP9aVx5A?fmniEsYy8DbZ9MlveVMH{E6>N; zDhe+E+Nz(yB8@ocj`yz_+<0}p{!esYaV2EkaO*dpTjLIKFD5S#k=ew=fc5m#Oid^%=Sj*U~mHAqugnN$E4*aIMwL|zap;8Zq^Tqn+ z?0E?3P&Ay@OQ|H1BeQ=@q(R8xp=!ViGZkFw{LHR#|Gu?`_`ZT0pVbfj;9^&WKNBc| z>@HRA9aLR9)v9+)bn>o_AgO7N?ctMv(A2lzh}|>FWKXsP)f)=tB6`N1&w`xG~CZQ1Hs5O9fMj=n{cl;g1+aM-D|TYn8^#FG>{H}nLz{gSQ^4kPvHY2iS= zgt`p}7NV2g`c)ehricb8v8K|_V6Y@jqDKGa@~+0%TyZ32Ufp!~>ew&C1#S>sTX4;F zSozi5MqzLp!SzLXKS9=}Ho)9!=}KMK=|`>>b@6sUYriVjU*kTKlgU?&V{)$ZZ{g{F zR5kRu)T@*IOqa`c0nII!XYZ2QWzK+WKvU6^aUStG*xX~)`@8uer6Pg-3j+5q-YJQ% zIa&&qUr%oC{e^${+3gGyKZ(k*8ziNBj0uNn_5{oI>zaTw?_5B#y)Vrp0qU?OA zClCtDwIZ}n0D(kGKVw`hIh3@H9;H%K&4=rX&AmV<8qMgP)h@&oGgi{e7=>ocGD^CK z%0jb^YFD5`a6BE^{W~K!DIMdgo@WsMRylo#6llOx`#0m^1Mv5rM)947nto9{dgBYU zfdkWma+PFQT`+Wt^wm0XY-I)i%`mxhdmAb6)Mc$z&;!vvMFXq-tRDA3Me`eox-eTj zZ7}tE7XrVr9o+oy4Xau~CqMO$=QRE6Szs1$w=BlKRk{3FP$}JVY~ltqZ;3Ws`9nL& zQO!wFp2rCQTSCsU$KI<^*?BrN{Js}{LBYp9(D>^*RI@?Ljm%TWR|?^_NxdI-;Oliy zmdN+o*pMm8KAVUpYUqj4z`jRZ?Hilh$9PYRpjilA5AMJYM`E}U9yx~)t)=xzVt=%!5sgT&L7j^q|<^y zsge>3ikf^6!yx#1+1l;)dV>5aUHfiu@^;}dxriZe-lf#=?lx!L*pxx-FoCgz6;IAV z)6nbBZt!l?U74$a%?5nFRw-zG1N)gLTJx2FS@?7DpuX3eV7jV(c-xZ!E01JPQW2)) z&>=9r#jp9ue(~_Bi9P=?-!QVd7)J2xs}Yvi$r-1_Xxv6LJDp!zWwAUG--+?veOB6{ zYN^1j3$3zkk$*Yh*1`CPjF9gcIg#n2kW|>>thXSr!SlorIIwc$C29a)GVByP))>G( z=Ys0P_#29>aZULu0M{`U8J|s9$8}g?9VetKRY>1a0dm|JzJx+jMY6NRl4I4fx!3Y- z4X7k3Mr5B#u)yqrczqyD2qOaPXSLQCMV(!=s(iWU&oy4O%bd;RRYnU2@*cL4;eU$V zdo5H*zi^NER+4Mr!j>U>Dmu&}#=PH0mtoyn+_^v;mSUBYkpb908Y7F@A=%qwYY9Ht zh{9}6;aFC$Hni4(66>1Hs_w1&5srDj=Ge*xnE%-uryPz-K@(bekst7K@qG?iO>%7@ znMQoXJAAz!K(jNnBXO;=Q8M)>%lK-h?a7`t!ufE=26ZZJRpdleHR@PgJAT}9ZDE%p zaigMp52f>i{XmZ2%F1Ql=Ss?r14->Aq&6U1?}nKpS9b;5w=&RdiJsJNx%O@Si)ch1 zcMR8>mzC-Ln^9!x-m6yenVzOLGL^-+%Z#|%cEWVK4RQvqNv@-ZT36M+<@xN>QXYO+ zP)^C)vpvFdZ$6k@68rhtet2wBL6BHT{TE5eS3gLNE}B<1Ix%Y&aeqIRiT#(QL*4?a z=9q_!%`zTM{T&A~=J8KP>T!lnh-ayIW@TOi;oFn-wOMU2#tJF|s7GZBt^A~S`5h;H zlYX9xddBFh>1@xgT|Fxd>efHEhU|5PZ!_9lz4xjjHh5)RhsYt+#&als}V z7*Ja2AXy3dK(X}iz+3-ZAH1naylw_7e(cx*d-6H96Fb25ojL1mRekBj%;J)7+f`1W z%$JTo=Zw7%)8Gnct9o|`$w|5E&xtedlB8ZTc2EeLpMCWiib`Q8onxR|*BK>tgTX>_ zk$dLg`E%(7T9wW%W3NU71zmBTt=z`2Ciwz|-)i04ik+RNjO-S#-LmfYog&{E9XJl4 z*TS{A`D|%Y7t#GbS;$Hs~IB2ILJ1z))T0j z673dz0_V-mO5d_ZEn)*;n;ej_|K3w@f5w`||GnYBz_=m??Xutht8TZ2>?-Vc&%~n_ zwHT>#4C|b(7(yxJnL$q*cO9hrN|>aBd2A5aw>ND0WujlCN!SsSEl?lComo8{RpJvr zN;u;Q-$<=Q+I&EMN#!o?L&>tPjq8_n z3~Lk8t!cM<=jRL!bK3YaEt28aRVm6y)@?f+I`Bdi<87uLZl;Le!Em@J{||nn~*CUGwOS;^kQ^wqJqZto?kooN&;^`ia5t z_5>|=*E;J6cOI4lP2fm=1UiQZ#<_Oee9!GSL}8*&8~BW}rw#NIS9?7q=RY^r>=SG6 z%NGb7BL3>e4aAS_1Ir+JBK3Mri+gkpvsk?G$oI<}bYnV>VB6zGvK%7N;>z&Mj9D`c z&<#!A_M7j1dh~wjFEMTv=wk`+KDDnMe`i7q}ygF)dVv2S{o3a~)kX(ZyJs;H-f2^HtV~%F3dPe(2>Juaa+1w%?BM zzAyNKPE+mbut4r!fB9f`&?+;goY{bQpOVjEJyAm_iF*juQy=L3UtfY@&WwzKhzAXP zr7X0BMljh(@MN3Vno*DK^KR?(v9^}%5vJ5 z7E|XU!&2Tn0js=yOBebUzCydiXK@?dm|cB9p{T^tX5%+|;QZt>hUcf&TfWaD`No_3 z2DhkyUY?H||75t3PbL|4z0-eGe4o{@KO!Q@kJz|z3WEyGmg@psa^51OKZ8xav%q{r zNEi2BNs0O#=@806R0siTgC;hY8T(P2r!vE-&vj0;bB)unQEPBgU9B>OEF%!+$xk`d zAlie^B}=cbEErqzVjJ)#9}h;(p!fY39X1GATR$1cj>65ti_7iW^v^wr6y&}4?qlfn zqKHgx)fW`RAK(9Hu}xhrGiK`@^*`RMALkb=5B{g#fzM+5qrl;2ZqDugCR-CfmhD2- zLX$19YR7djOcwh?`z$3=n;^eq8$-}ls5eENDEzM@0(Blijy zG*_(wiS+L?N!|}CK6b)N{O8TvFQ_~Jyt$3QhZ`LDF2qD3R*dTlP2>9Popdc$> zsVE;9v6)QscT2b8Z}yObQ4zPtUx~y!g>&mJ*v;Y~Ow4di~N~Jcd@E7n_1y`$@9tut;vR(BUbgm z;Z7XXh&gByx-`{V`fiZZEfxszFL1jo?%R%iGMimY{Fs~S@qtMGuVU{${C|tRXsO%o z@}H>=Uk3F2ul^N#!!Ro&us0iD@e_9Ez0~W@EM^YdV&LI?B8mR!!<+0Y51&3ThnB#r z(=}71PCNu4w3+~Q&#m(MYvrovzYwiKXVE6;V4;RAz~GCU8wmDR`a#8z*u8?cjW4^M zt2Hk=401L-zR0Ra%f%4fDWi|kWG5o39VgV(FQ!?0@1j*OeocGaNl}~rH&50A?Td?O zP8ag&)D64V4SK8{6gxm8r~tnqm%k!D!GtGs-ufNKms-_Lkz94@XRDBc8S+a~M7(yc z;W3?2Z)egEvjB{eemPS%!KvDeefu0uj}E-HiCE`$j*>0*5rW2{!I9Arr~6!47llxI ztlB_RfyxRy(p6uK46GG$<>m~D<*L%Y>>PiNNtuuh5uIxeu=k_%^Nb9cE2kxtH%3eJ4;$N@L>MP8;lsQ zL0m`{&DC|a%U^_RurGO=17n@S$_+nl8=pd=MfcCK1)}ZZDiVTS-jCWtEPKjSU9_~) z7KsuMhz;|daFy3Oa(+$#K=*^h4V{*JDxbLgea7Sz-!7)lI8U$#RAU$D`Y ztOShA>9?#_G%4ZYD$JL_l#F#CWJG%?e<#TUOFR7mJ7Ata7X@fd!yZToOPxmzrlc63 zt2vbr$$4ob+A;wSJ)EIMD`sTXW(jecQQ`BCpmM$ckvQkRki$FiA3+60$!5}ZiKcbv zSsC`s`vW;2X%x@@ zY~xR&f7QbsRUYkV!ij{7-B0|jcVPfu!_hTy(%*i`KAuI<$@klZ_R=vh($GC8-h)3; zxlqBTSfrbT!(lJ=VkWIx8$#(omrUJlof{`DRf%+4`5_&v9lAAR7K;iSk2r^+n;1d z#qG|fDhVyI8XdGa!>fvB?6K%JJN(6PU{vDJS3DYVN;Epz5~I_hEHo!f_)5IA?<*U7kC0Xq&O26U75B6mJX`k+ zlm&b-wFA<60sOkCg+Kl*_~vdwyw4OK^|rT7!=jHJ5|!M-bs3W#| zXEH+&VgA|oG~NiFW+7q`^VrD@EyRwhI3`K?25_J`sg<3=P&*8~n*8naHRZ!}!44T( zsc&^ItRK;DyD7fuf{=-}#H^ZhqBMA3fNgzI8nWD8e3IdO%3QdJTelfWhmTXLqt@g- zH65*zbpGYyW@`;X)JyGnef!};Qn`S*u2RjurweO2YQ~x;4`Q=ptzl=JL@y3$!t+T5 z_GLqP0~4=k2+a+@>XoMuMG!avE!==M3p_@w6aNx6+@Ez0(1u7Z9l8HJNX!{##>-Q) z#VEfu#n!0NhR1YaCn$CbYAND+d7@A zc9cpmSx^?88zSslTp~?mJhdr=fXbHMPrTg7;O(NeXefCXwsGi3s9`^9u*Ka zmbEv|*_$Z%t-a&dP5v^cbr?M!CFI{?`=ARXxbKCgf_5Y%EYOyu1-j!yQVxVLw=z8OiPLU$DplOLKc z3$TrjeK}$l%p4WNmn79HjvUxOa-C7w=Ef-=PTvrlOSZhZ_^tv|Lway+{_dZHF}Ars zI{5V>#YLL?Az0bf$6zk4pJM2&)lBqe;Npt_di?io`nH7?|L+R+yHlsKDu(7hN^AfP z$HnTUtUZ>V{GoZQ>3c(Yw+TN`=g)I2ci&C@ZZSJVZH9VVm8u4UDV_nLs>D);4 ze)X-E(F*R}LyN0*Y+=PR0*B>r#;cSqwy%Ql3GW_C_?C$|-5Y?4z9728TS}T0eOymD z<5Yw5b*~TWOiatNY|roJmwiJms6wWROPl$%Iw6@L{sflk?@7wf-@+EAw_P9#FI|^= z{v=|b)u=R^@ArPYwG;Y@&4wbP(sK7wne@)fb>sIMdFMs{2Cj$Ju? z`i}9_>viApGzm_nYkVJTG+^}4AGL7|RJuU!gwje{Szd9@IiZdXmA-t0{NMk~CwDvb z{e%q$(MS4=JN3vTe2;HDG2*ux+$#=G!(2}SSE6e$qyJ?!(Ku18uKk&qi^d!k_{mvv z4|J2`AK*9CP#)-e!K-n2+;I9ADm8Xb;ScP3*PAY^+Rt0mmUIQ+9JV~h?$BN%i&XQ8 zO_lh-E;~HD;|Mr1cBsXlWp0g~@q9!3@w@fX8Z}@LZ}Z5iZNEYv!T5ld34@VmoH+Jy zKgkfwxT1BBmorbKRaPc;RL!55eBs?nYXN^KWKapE9h?R9GYZIouzCy^i@H35+FeA3 zoL{eyChpx&aoZBx_^Zh67<{B_R~8&qY-8MxP@kh+_Kpf^4vsh7nkOp-aSY;Gi!T4j z|8y4UKiT(lsWYYWTfwTLWnU(oTwYu^3qY=Wq;W%-@`dm40Ft6?mWnbPt8(;=&lpjG@=fwwj0wOB?St4@^}2%u}2!UH_j9Z5BYCo5yBh>PVC8rPaR!?CNe9$_$IPUfPp$wFXT&g<6vYtj}0gLV6tKAKk$% zMpSNpcW#z-FkYO?u~0mhvh8f8rB2Tk+c8%OoW5O1iX=rGsFl!m@ce3w7D!LP6;R1N zgH#kJLR$$%5XBCmP^sNl?Qb!q{3V{>Dw1=+ye!V1mezo|z#Rj*T z9G#b*VfyF}j`Fz0zXk!uiP^D8*Jbx%hn?R;-ZUBup<_ysrWLjcE`yT>-L;5%!pS$H ztURy+nbHGqz&dyOVo?v^M+##Mb^I+&G`O&E|Fvl&`do~*UR~#T0VvqX0se$9_Jfoi zIIn9jKoe5YcXfO6;N3%Y|4U0$iEzE6M1#O3Z;{5@X;Ffh^Z6UhgJLm@$+O?zSbfjM zkv)J-9+LD>oQllQb11KfC?@oxP>~Dcz3);;nqj@Y|IQPYTgvlSm$~>H53h-FX+sh* zgghvvZcd|GoIIq7HnjydxJ8F$%TW8LcD!22o*V0|A(oZpH^ zvR7dOQNa?pBT6O08)cDU-RD^IB1d-OT}k>a;iQGCVA=rhXfZ(ogzQ05ZU6VtpubG^ ze*Z`Ec580GlJy2jK(Jt zq;{FX&20RTX?VU9{O2GXZ=GiK7}fosx!bN=-dE*hlN_~I(eT(lLZZ(%wmeY|d?hqlG!V>+=qX_#%EbQ>58ar;s)MTpvK%lf$^xUDzw zVk)sFYj}EV(c;?SZ3zw9&s07`fn3q7+1vO3UXh$v_1U_hjWuLzhYWxIoW40MtKzaa zVf3?&Ym`G}*vI0W&YAR5F7Sv%9=&VbR#*~g+iu&OC7l;7smyY3g_!a_Xmj$g>ut#5@ ztv+8{A{bXR)I{TB5f@w6)5hLp=Tb^(t=a6)-^#xQ02J@#%j4qHl2%*uc<8HsF~o=PM(~oynxBcmdEHq4C%r5#iYX> z%Lur<==D=RZ%@6s5|ms~18?JYrHevml!7EZOsg~Wuy7$3W1~p&BK*K3xcu|g^ShK! z?+GPZL@o^J2m~*&VAhk7?GN=_7;EJb7&zN@9$n_ z;stmaatE~PY(-67Ti_28y*4t4-o#q$F33Y{7V-B|ISg_fDmSc6%p9MZ&eG<5H6#|z*hLLQyg!J`9bDx(L~Quii}2w@ zy27e=)#1AspNLcVP0lib`#zX=E7$R~`~@`BWMIeR?LVdEcfigjm34yB^ff}g4Zr`v znl6*h%OeO`_q>$oX!EG~izI;@~+7U1E{`Nd$jD{9i6%IhB8Nvjec0g-K}Kq zV&F{+i94ZC7mwqB!ns36ZL(|ZfVFmb8+_Vc3P-2Jm&YgjowxXP zp{PrmZ5>ivo$Hx7X3Z*ZYh5Pb^H6#jsX4G!;4FaSG57YO|(p!Hzz5I zcGb1q3UjRoCzL;T8-wJZ5*fKaKl~8OoxeEgy`fmm@~jb!MB=xkx{T?|Hx$~FLB4(T zIGj9!oQa3Q^{p&cUkCKP=o-%A#;h8+@PClfaf^f+@ubx18}Y>L!x>bt^d(t3F^gYj zVgfJvQwzd+J#^Ny2!7=g{@v6?BoU;wXgXH{A@&;2L(OffuY3zMIgixA5M(yuyK>q> z{S~50MLVywZ2o^x_D+qP}nww*Vr*tU1RIrlo* zd#=^mIvV2-jAvY}Kljz|23l;aVMsHG0HziSL*~UWzjeF)u-t*eTsS;0iqb9n#^JQ_ zwMB-YE#>W`*gTglSDuCt+EM(NZYxFu6@qR(X;`BUWA#x`LiSAEs|CKN^V<#wd*U4C zW|@1N@Yv4M38ySSKSY=dgzulR8*F`{acU9ro4TfClUPYDer<3G`}0yhGzi{qy~+cuf3EO8rh% ztNP~K4}(Ve1vN1rfz5dm<89CV`s$LKg(a4cBovo;potZ^%MhH`T0N zU-i6@bbT>X6DV{&@n|!B=Bth5I|u_jj(E2RMW`yEezW*`t#Uqysd|n#5y)H~ z=Ff1f<4k_B{et`ta^}#&#RJ0v0r?MD{-2RE?*9onbNt^SXLl+5a_#1=_jfp+^CDZ( zI#5(dPgF(oL{&vRp{}xV5?_)uaJ`zY#}3V>b;R1kAS|$5 zfxllb0-tYRv%8H|@0?NM8rvD{GY-YoFCCQ#Y2hb8T*zm{ z?e&-F);LnY{oV&1X`Qbk`Ax>?T+11Lo*I(h*Y#(=BY1@LXZ(VL01brfUuv<~HumVh z7wo`kTrM+fV}XL-U%w2_K2X=xF4aVRPh;Na8m7@C9=8D0$EMtZJXef>jlt1&kIn6^ zf}XCS%$uca_~g!>lRHAB3ud}c$d`mqvL{!qWx(OK)sL?-`q8hHW`&-$+Xlv4TC5&- zRluRpM=&QNpAX(Z#3}2wJGk=l1@YQlS#SgsxZVVyuw2!AQH*V>Rliz$J-pB4c5gWf zL_ZC^KDF(Z;2-&AX{-Spt1>?~2yT=IP>r$0M@SRui1UKED8b#K|8C zZWE6bdtL5NwgbjZ1{fGqjPojCe?Vq^ZI^Mp4eN;h;0IJpl=p6mS8L$j7pS{20ga8T z%xYEFTGj{4G%Os*YQfJji6MDggO-eRGq=FdIEC(lJ*#)(>>PNuBD>Mimhe3Bdim}@ zIeY)qO8&uCYJ(O?E7safj46_&+qMNh)z7Oyb=;#jMbro#vv)#sj2EKhV84qeS8Giv zH)x>^L^=Ml6)%pH+cw=u3R;DYeACyID|U|0jm``eN~xM#?(DDYT1VzkB_ zQ7BAo47rp^wnU0|p5#WJ5J|vyu9k>%s2Sshs~B=WTC-zc{siN_#Z&p6gG)=A`($>% zBJpcRWU-K-5$K_%Ys1VhN8&0F0LpmpTC9p!({~sLF?TpLNp_|Q1or?yXmdrSQoKlxqJ8}9+NckW1pnb}&ac7zd{~-HK@b!;Ploq)R{bgr zow0tgCq?0}fjZNdsv%{qaLbU*&I1z$>|sLGuD8GDjY`IUAr!N)REzt~(0Yk(jGhke ze6{{Vp=QZZ*OhGE|EwzX-m`$!Vtr%gr7<}D(Xc}q-ANz{YG7>Z688bBYE(?h2>iFGOKbgsK=aYPwwRKUbI5zYrm5%cC&_`9fD**cH*iUs>ZR>(Vu@xB4+(x z9Z02w{x4fx9Oj7ZYPIs30~X~Rqo$eWib!zO^~(@>?^L4@504c*GDm1ih>xu)xvt$P zfd62{lH-}N5@*pJlEw?Sn>>QDSWxW|VgPndw!My~o9Vprvb?&te8PuSJ<`j&OM~oi z|9Kg^hjHx^W`xHLWOwZHI*l=Uv5Ihz@q46PgITLH)Iqnk?h#^8Tl~;(0M|i8FZ6GO zF0M);P1>HnlB~Vx)7GWpFD5`y!g)NaL|eAHTZiI9Q+ho`MzNH*WPa#04LB+s?dq#y zdRp8{SL1P>t}gr%ZID^r-j`>-m6U{cE<2Tkwd&TFy`oG!x$Q{^?qEC>yDNz~>G)V2K-XzedZbDqh32 zwl;TOXOClicK=x6l z5zILQ+rFM;Z)DwI#uVA3wo8gt2;he$eK?7Dd` z4PO?A$V;#~`X8iVs0Kxv04qG11C7v&$335UnHp^NQ#Gfxkb3b)JPRw11;8Vb3+*Qz zSL9Cq{Qb0H(Uek3kgLMYNzzGkfT4o&c_0v_*R6SLvfsfh1B_uN1XTYC{!(Jih;WXk z3OM31F?zWXtz2FI5O=Y^W*KZr0rkxzpr0yPfi4hr3)vj%R?M7^!UZ*=&b~UV;?=Z0 z`=uWw#6`OfBL0Dmq8vBD8`_*5u9~5KlgT-bUJCyj2b_A02bjJVKX|EmO|8xQYZYVe zSma7RI!X(``I=q|@i0m@@*T~a>+Qb3NXVc3D0F9JyredC&ErIhC~#!tDse0(?iVJD z-T0te4<)m_w6n##_E*AXpW#fIOW?SxZX9d>G!fzN6#6N`mZ}-DobA?h*=`~}QkO{m zi(`a`E&rhc>HWp6xdYy&^aIe4M--81EXRj7nz7T<(}4l)#Htrwi7J;LqrXaa7R495 zX!jnRQ9EZs2$?+*v}o7xU4kKr_KRukS-frkrkTDZRWgpr%q`N>MIpO3qUlUx_jrIpa-ScXn^x0ybY2k5%J_JA!@GO z`A>fiwIZpnzwMXd$KU1jChzNJxX0sG8v@t8Ct5EnDk!<47fd|Ge zKI+ecqwEg0A{@-rVsH)U5tC@?u+n@0q%H2 zSdq>95+P(Y^$lxtC|srHlFLb3?YVv1_)YR1-v8iMF7q9~YMu6m^>l=PXu|izxve!< zCe?EmCGZlL0n&NaQ2qIml*RBRF{__|wHj5i?&gV#$66`T>>j4!Am zX5_?(yjk$-D9?dsx&Jg>(3Fn-<*P%?J?~6gn!^k>l#Hw9>4|C3@i-*sw;X}X(6L+g zONjd_Bp%@drH>Wb_x0TA9S|ma$-EQe%vc<6ig71suf^31@h4-@mB*ivOb&(HH~M~_ z4c>!gq_uJT@)J8XGt0ePx6Q_AmO5{n@#kYM7_yxtA7a~u>v*cA@(qn&AL6+7X;LP; z4Q*aXS&cvEQvS^!c@#5|c}360f4saaGUoCyN}&s;+^P}Fx0`>quG@AGotu$L?{uK_ zHKW(^56Yb*gtkW+RU;bdTVnPv)MK$FK78GZ6Emtggy) zxFV`q8$i5ptuwvq`q8j>5;A&O$v)d9HC>xK#qrU_$&0#z@5?yK|G|I0Ad+dy6SZ2Q z6WK38fMu_HgBR5Dj)P1|(uj7JFcNhRwXu75o!ab5{04U;xmp&u+SF!5X{aI)Ga98g zBXUt_s6yz$*SIFg=N!Zjja4^tQYM6E?TzFZIcl37aC9HnqhBEH(^ z^(bVUMy!}vcQ&VNpuk_VOjGpy6dHYfS}*L5b3N!c^DtESXX&@ewTFMf=9@Uw*c+XC zm#;*+WP(o~u0w3Tj()=V_7kGlJ;!6ro5d@-z!PUI01ta+H-Vx_nzg4jmnhF+P>+XS zb?t9wqWJ1Bx<5oBg9sMqrgg4RwH7sbrTU0EBMmT3N%q&3?gcCQsIm-cn)VfA*|2v6 z9HpR9g0RU`ancEG24duhG;B!%J zuZ4M-oKYYLw@Hd9eI=&pv2k#gN_Y3I3sE&yg_37o<~fz$6awx0yBtG7r>|nRj;TqS zkIb2Vd8FMSJxBbpckANg4_NyxvA*MBp1`f`amKhkF1M8tNA^<-p4{wgzFe~vjScwP z)kh>8V^1F_qV=-P;1WV5Z7|U+#}z&NJGiq~ka@OwobR|Ld0Jk7+wg_c5`IQ0ZsR(mpPUgB3a%=lJQTdP5I0~*<_SC&>(0+@>c=? zf}nSbYfPRpeA?U*xB}nm3CphfVTB5S(}08W5>G{jXoDtDC$NhZP0>N+$5~cY12?ZU zM%gG;X#Rztr#i5n4FZv`Ja=H+nCof(Ai5b)W5ceB--58p@Xp{H8I2-Sa^rlfX_$k4 zSeG__VOb@|ap8J}JvaC4^{P+~q6Y~&G;RETsrk55+wrZ}8)8485WQ&Nx~wLt<2F%w zUu+&QVX>F*dO8_Z11XCvF9_wUxi)g*&dKoJGOSta8%@`F&=N;%=3qjOZAm?lrj%8? z{j`#7zFaUUf>&4_puHq=tKT-#0zVrpT%`$GF{i`%$Z|@4`IihY* z1L;;@VNkuECm++yQA9CiMp^`NVH>QdX z>Jr*dF=2KYCguX{i44eOc#PP(6>i$EHNwbRV}qN36{QLaw7@|AgFJ4sc^3pPsbOck z=j6=U&*5U1aH468udJ(6cgwUJQ~KkyG0iUHf=igodZTIdAn7PB>W8m@meA++ zj4BF2$@gm=Kla+CZHVR&$h?CSZI5N*Sjmgnvv&I1##rHEg0JCs*j_0WZ!M8CKxTaW z$Zh<*Ts~yAHm;a9`3Xm8)gv$?o!X9XY$On3?X*3nJJVW#3Y zg6+Z=Co-GI?O%FGd;zO$fpGiC7AF1#n}P9HgQm`MSjt@Ebk^|9^9BUo{)dP^GK`4q zhUv`u!vi+`FvEph@2527*C-y14~#Qex3=1A`}%t^l+Iji*xUJ_=- z%MdBR+!T`GLr^gEURi3}@0QcKYTvkVeGiX!SP)5-k2RA&SD`L)-6AUjOJ^8K>d!jC ze8zof?T;1bOT2b!PB9L0!=)al92Jw7Hjd&T8~kN>prFaKh)(%;T@NO-C_+}9%oyr) zgvOEKO(!L2#SU7NaT-#Aq~5c{jdJOxOm&?j{15e3E&OWXtyo}Xsj+nOaLz%jSiUDC zscp&F4et+~%761MV;-&7KlP_D=rE;sTol7~Z!13a&P$8zU~U-q7P6`MoF`_gI|dBq zs|yLO>d`WckJ^8Db=R-6^lM;OyiaQFp@)$6Oo$HHF^E4{B`m{pNp8H--b)z`G*aKY zk3YQ)v~j#s;)1c?z~1Zda`w6w^kWn%hcM%JoH|vgu;2=a?m@V%)R`%1;2UEf4*)9) z5j{#qE)8o>Wz-o-_D||`Jqgd*$Lq&k7sEzdbcd=pTv#;~kh^VjxA*_6)>yi7!j`Wm}fA=1cV8J?H8X?nt! z$@^Y~$Z94^IBe$DDiiCK zLh~H&?D3R1|3rD}w9N7rYO^^%wImM>ZFK*m3sp7ZH^ZeQ!0cE) z4~Kc1n7*O%_ipYq_@}w{rZ!tz z1112X*NNuyZu=h~jFKyellwh`{2%Q5KLcUN{}T}A`o9Ch|8WcdxAOv9j1m(U656gG z6vM6;)E-0#GD%A2b)S?mcJqLL2JeZ#q{H=z3((%P83dpE-*RCw%x}q4VeGG=bZfhiU%nf{)e#?c)1zw4- z7cxU~I=g&>DIVnOjeHE&-u_!IT;8MUd)n3wjQYH9dV7`AcPkcN#(9h=2!k8B*uv+u2>)*?Tn~ z68*^PiQfH3EQEk!m*@Xwy_gdS@SP9(5YY+!N@-v8nLqGcVRaA)h)gLF-?1$Kd|NNn z{$^*b#T>t)Lp`C3A7uga@8O&Ecq01&*>i8kKSoVePuJ3jzkMF_eIMK!6l=6%b`a8b ze~>EB6q?{Z+&61LuC6gXO}}C)w-`0!6@GFzd zXE}?K9?}a9#dcP-uW4#t*bw8INZ?!YtY22G2cVT2VazOTf{v+ z{0c)~X0>kyKB-ia@R!lrZhG2i#FS-zZ>*Uvb+EyK_j zyFn}Gk7CLQAOB?+etl-X~RO%B}1rn&lBF-B=X{eJ-7T#NQ6m ze56@sz~`Gf{aFJDwnY+e{^XR2!HI??8brafO zu<_o;?E_JZBfwRWLY>CD(Yo2y0r9Ht=_o-?4w;~iqsE*IQz|Z0>}Ri1EDsywnsDo8 zrJAVUfAh==qBZOv`Vk1njg3S=Y*RH!j*1^-42L8v7yF_DTQJ}}nd}_tu~j=lT3I^C zJF09h^Uyr-;3L;}$Wu}sG(Od>h=@HGWdLMO7UB(-Sn9X14e!Zm{F$=+>egay8u4nO z-__&Nj`g;IH-*OzQ=e!vCA~0i&H$4K!w2_+u)Fk&>biF^PgUmJjQpyA1QcaU?mG0c z*~L-y91gW`WHm*MP;qB|hn3g6dvW^60bXpS7d|f~(Ir`>Ez}92qxO!?qvG~*Et%}j zvO=wzrYWivl{ACG+xI@4=K=?$L>w5J1=)Ot18A@QlYdK}1P<5$^ugJ}!Ris*E^aKEKZmPCW^Sy0%Cvl_6M zm7|#6{8VsY*1Zxwec(l8RKjVRAJioqBW`S<#dFSFvmAUP#+?Wkq`1LNYN)G>Pro0> z(4__O+ojA*_kN8Gmpdrjni5YL@<)5-+;BHJn{9*`ze)%TSeO|O`jXAW)u1SmZ(0?U zx*&Q?9dBA?1f(b3Wvkat5+EB7@{2Rxl@Vj?VF!eSJ0Nl+vkeTCkcaESDY9+e2PmG} zeM%qlgH>p!ly1y;0qRZ_;i0X1(oBD)9qx$IfW5qB8doFRQ;>%(rC|Sr=)M-|XJGNH zIdbuzhAz2s^H5-gsuwOFY~~bE+o>elfj;#GMv*1qA*J)b{x}xUJcwSCpVl+|!(6Fm zE+0GO8EQW93;fb*20GFSWMr~($LJ^svo(H-C0f(=F+}}P!C~q%o_Wxr`<^N#hki;m z`~QljG@(EA*Xu(rOdI?eg&dKdD!JStiMHZGqB7u7=>MhG$+ma+wnr_g3xJ6EY!kmW zI73HzoLq?O5a`LIg8Ar(O)JcCRYEuyRx`S|)taYUY7i25R|*U=e-SEhQ79R?o8}IU z-&g)^I4d-8+{OA?SG3eMw4IYNtYbnPber5W^$INyq?;H2kBq*9)cFtHOc z-PBzV`8}v%w=-mulR4feqKIJ3X_~#I${n}I?*%yL80(sN$u{w-N41IE@rF(hm#NxF zvb_7fp$0%ROXNa@6Ug@F#bV?ySF8{cQME@y;Wa@$a5+<3EEpxq{h1k8pm-@f<1pE@XKaS4SffkX)w&-U8*(1p`aI2=~l4gZ;ap$jf*{x@+G? z^)xUhc{vnfnnBtPKR%0oFJ4Umn8Ez#zC;YN9 zsEhsQ5>NcoM3+&rm?7!Qy~~o8KHE=XnJEU;zwj39mr{2+d$p|`HnD$*@QtkNR}E7r zB(S72*5KMzlOZ^l7>oGu>d2n&J1sRVl?gb7e6?+jtFdbPOw?)dYLj{Evd*1d{gLTI zAVMA=t;c`VroDni*SzonzzjCpsUi^VOd~QivsTKJ&FbB3I8N*R?K&`)bqQBWqHZmH zMBE)0wQ}0Taw=@AKhZ8FIXJ0LhZpHdp!cGGY}E<~?xPX^m?xQhu~Zy>8(j2JuW%&8 z!w-7n%xXkyn{o;G<8@Yh_I$0{=_uS%DD3(*Je_=PKok*;9V#I!x*^$O#kW2wXZ953 zW4TbVRfC4IbLJtEA-6#tB;nNJkeMLiLRv$-Rt2JZ@R=Jon=&W3{ci#!B}-UZa=PDQ zaT4AEp;N-Fi}pxQjD}4xpXb7{|CSS2{cK?v^p88Q8Ly^!9jwzaPj{Fw;POYoyC?hv z_mMS^_NE&@yL`7sYH(1Y=AsBEw}eOs`eVZn=kDSq*-gu8iFk(<%%{fXNXkKv-v-3@ zyHrSUc^t795hM_JBAj9z#Kjo{Eb1$|1{Hqy4=kkV@Vlo zmWRN6q{AQv%Ww)ae+Ot62&<({t=!UZm}}E-X7vqr*rT!a&C_Q~O+0Ai?UqFPBq_k^u3_Mra$TC!`Z$lf7%5QR& zzNwqBhA0TToxU&t*-Sl6T25%T)tFg`kCY%xA!IjQq$xiHi))shNyREP8^+7&uLx87 z6TwM1VrVgV8(krn4jR*1q7vburfjW~pf6i7N4B4};bjo(o}9fLuc&ym%;R^Ib;nva z-<5%2YnGtcBCiJ1x)s^ctU)ohE4af=HZDb{|G^oAT+-V+qPBxtGmXy9t|1{vx%lpHNBhHr zF$K@blq3nsNj0x1+n9Jxw~01A?>80ys@VY5t0@Zo5buxlDZ#rmi~TUx&0J0pj>ZV9 zmzSWVqO?Afe{}HxWPUi}Dt%k!RPzOis}mI*{MJZOVI3#-+*)3OroP)BXhJ~S)Fb$> zcr_8=QGiEJt=DpuO8MGkHsNbk7zA^yB?|Kzj{{>J^QulPEUyNDd;j#FbzA=uE-$$M zXT))veFwqG7;o;~R_plXSr*WGqzmP+jJEAYR&vO@O>I5{eV_LVMa_MYW>yIMQr_9y zH8Joml&0%0ySX9+_nx3dwZ{79T+bBE0{xAG?_$iZMgh{p8}ZeMbvb5~6hviEOQ7nA z$T4-~G~YiE{2_lyI3U{N!yT|e)uyp$tcGg1h7jPP$SeFr=fFz4!MeT4jZIIqZx+ZGe!T6^t?mJlmlqnz5l>~yR%aV7+v=z0voFrwaB8chy0bx3|T`u z>QKxu_$p|ZZc7c)j2r(>Vljwb?jp4no zhfTlI+&#gYh0RLXR-)8Z-CY(V zu&EO0887?21l+S7N$2PiD`Cc{db{-eEU?i#2mKB(7%ZWOOjE~!Jbi`>1dxnUtMqDQ7=PgOuEue8LYm|*UI=n3)R|Qqox5uLzKI~ML zWPj3d5dhkEX)z0fiqGDdhjK!utAA;vSSm~|gXuTna9BpFcRjvmtp=CIUz^Q9DE~ER z2RTm;7`N`ffTbW$U@(g0sxb8t^XvKxg1UEW%MH%J%m zgsse3;*1VGQ6m)Yv?9Ep$Py1@?F7!0;9C$`PuK)DGfUI?51S8QxvD52f6DzkZB})h zQy-5+_u)kxII~9UUx`*H*1~d;p93Oo*>*T|UoL4MDmLpYQ5YxrOe57OL@XUFxAC4$ zI$1Wq2DAx`m6yMa-wk5*;Kzit4#)Ww!6};|*R$s>U%pcR0l+wsu4*p1^Nn36Z~VMU z@<1CGk*&bV!9z4SmFq4@BpzE1T|C&W#pJ(fOb9YyIh4b-%fBDWtbkl!ts&Hx~yKV-?@O{|YD|fxi znOG<%hLCYPL0pE{pQPQUQiEb=xH(E*Scg$*P`o7tq(+<>6foM684;AzgEvX(2C8bi zwi}lbp}2J4AKTo=^~p#pA@wZ9#|^cD1@8&4@zj5r6fUPnMbm*GMA`7ADJg7o+^Q`m zZ_vNEQQQk!>PXEP(Zjkl~Jb?mQQKFX->^$A6 zvI3r2+y1hj+DJq&qo6w8cjf=}R7;|L;G6EYxlNoJ7Va#Y3UE-Q0qqz@vxIO2Z>xr2 z;BDwT=BnKPcthWnz!5B3mwR#Tg9mOu3V(KX2)}Q;s==gJeoS5dX6V@?zI9hWZv^O! zgaY26*hK&d)uCi+xDTB^cjaic%r#|#w@zM!199|qQl&RdXa<`4eJ1EYVFHp*&u2RmRWi@izODZgIdtKjNW*N+krLgXUjjQI?)c1||>Iu|T7 zaZ+8gmufbm#PbRPDZjbvRM+2344Q3#`hxuLL`wRQxtlN^9~b3N?87C}T&+?uF0H|O z&w*@N_>zI@whsQzVdeXK6P3tuu5)!0SK^9KcFC(|dUrVJi+W*X?5%q_GdiqMMF(-F#t-uW;Xd*tk!ViE zQ%ON~Rc{PjB;9b^DP!;?`(4}E*~lJA1JS9gcAC&IfOa_rq8%t!BBHVLfvFdKhEala8kh+-LgUY-l!l9SfEXduQ z@66oWlxlpn1`K)#<@l5>ssoBbU>i$Tw4&XU8^}&f@mI}wVLI!!Zi!T`#+md=QG!+UDMGo zc+noi+z5H8pQZjcbjX^DsYe)BD-BBfW@!c%*-JJ{g#TpPv%`JApa=68ELgfj-u;9u zcN_Q-W~&iUj~c|neA)CHSU@_Bm?i7<`Qw*G!5k%KQL|zNQ6t?p|B?#3uY;vJ*-^my zJ1dvN&j?w)A=;|tAKcC|A=El5gnz;ZtobR+72)EYuaxyKphI-gSA^?W9{<8UMLQg9 z-akU0e9D)(zI@kfM{SpSv;jW{6ed>=&KOxA8>rupVZVgQU~XMm4H=B2K zOD}OtKB5jLHP5zF&*+5tavS`_e_p^ne~6jUn>b)x>G7!P;feYPMb*t`yc`Lm;K}o>WJ|9S>=-cVW$~YIBH8mZ609z1^yrY+W|+U74yx1|3i8IXa3uQ@V|E+ zv$Fi(@n1EmjB-gV;2WKw*bpiTYNnDDq^Y8cN+yo*kf>nr<&(#pZ?5Oc+h=R}N{5LM3WrT5=hI*m2^i|SHquN2>OSD>eWWK3*UoB%n3i@B9KJOi*@^o8uag$M zP48`9;swY=1GpNv8AJ%vsA^4|CcV->yHJ=4meO8Sl$YmlRywKytSRALb-jNON8g6kZ>XTiHkpvu31uyl9VQN9@Z(xDHmDmUh( zE44J_7ebTJ4XCq-K}|hE4(cPhXv*X02WXIUOw=`(ec_&j3ef1Bn9lF4eigYaD*ucrj;jihgGY|EK3mv$6S@cg_vZ$4 zfnPvBF^5Uh&$mv8x=EHM+1k5j&96mlt~Lc8W4pHMF+itW=LeI2e>i89GH28rE`q#) z`fbQIw4k0l(rjb`=)G$w=<}!A#u6VjrmAqZF9c?J2{ax|osUixGHyulDea{zHMDh( z>WN`!$ZvfpZNI~>$llFs*=x2&1+x*@6<Z6+CkND7&tK=6?}5iVO)UHf9} zO68;aRf7%s>6U3XzHNDETgL9?W7xHF46T2j`DWUI)5jz*H?Z29rU2=M9u8s39Fm;O zt-E($@}LCrPkhZjMJou$s-(=U+jk8S2&YUdgN^`^!mvl$(>hv#)x83qODkp5?6&KZ zs%Bavx*D4j>-%NOa~^^ctBr~adlt3=i<#B7l!Yu^4kH_$YD|vI)eHI8w0;w%llxm4 zXSXQs$Of|&EnM7HO_gdBo)hPOJ$&g+mV7(ST$2C~8!_cvee2|s)#{v-8T=34jJ#l zzo?^`!wg&z7RyNMq;aF8yj&-Q9)$@Vbd%>*L;wb+;zWsEq#Q{WnRDzT;HU6CcOk3?(I&g15j` zf+npr*kf8Yp>=8?7AOZ|B|E<3YH1rTfoXS#k;~ZtJ&&bRk>l-X$@NM2ICq`@0S5HP z*(Ohsf^Wsa@h+yGnFlr7N_mnAi{at=?6#hJs^mTN&<&}N^fFRZ026?fUH#Me(dE)) zvWZ=aR#2hiElv3ZZMRWC6m5&NdvFfXU6)er34x@R3$3Sq0eHjgBtGR-(oxUdXhgh6 z-MXV59XH0{sW|W>)&z>Ds1mptMi|5Rkk`R9BqK;52p>qGf9!#Ch|&pxcS_rcui%@PdDK35l965-yQ z20Mz5OqsFoCUJ=T-eRV%Q`~x#3M{A9W-ImY(Ljwfax*F1l&&dt zfNs2D_b(%WK+>jttKm{oukrmMkp`2;_MDq%Q-{I$f!BtkO*p?zcaWt4)_u<#YRieb zvq@I#IV&#e#6UQ$mDsS@{k!2gu+Xh7V2lmU4>f|`C&TuXAPlei+&H5uOG8GqZk}FY)$5D@u{RK-$EPOgt%iSqF?+xvU=r zvTj?>ezto6^U~*ujy&;ySo1tQkm!$}VWV9pgRlO*a(u2VYxrC2Z{B{srzAW^dn?cW zWy`=R#so7$w#tYsn)G`J&B@=VPI2evplj%LDA;fi8{h92z>55HsYWywU}fz8X<=Bp zygqZ>9=@1BHtxP~n+O~z?L7jR0ak{6)`Uyp}aPz7BNBhg$ zA10lI6lOlnF7E3)9YDi0!c4AqL4$z&Clmb7Y2opEcf$W}LjoJy|35AK`rbhMpKZ7Q zdH#Pl(YkBkm&-J7eSBidapsX0aOUNQf|GzDasId?34o&nwv7@?UOMD#<2`-0znwdF z`#8Lg>2!j8E2~_in#wD|2G=@aTWX1Wzg}~`_I!`X-_kl+x=%WK!m|n6LQswz)9;@+S`HLpDP?inUc97jh&I`MiLi(iiCQQCLLgY4)in z?Lo|YSj?sZD46Mod<{)|DbEPWSWzYucW@p58%f}N_=+Mqj>~$Zfr%Foe_T0g$@9v& z{$Kr})$Ele z_ZiP~y@N|ML@f>5`a?{4Hj*xD9~%Q6}&%5%Vl3vo_tW zFgxS)7vt@_Ka?DIxqiRBwb0X*(srgcz^ESYy>P@sptR-j4u4DaA#r)t9Qt4Vq0ch< z>+k-MlTX8eDRz!JpjgKOUh19W^8PCP6O?I*g->R4n`v~Li85zWdaLcUsC-1~eTDj^ zFh%o%=hXTvEoZPHXZ?>UUttuAH3p?V807}}YB1e}%m3RSx;M}0-rHDa3~l;Y`AYAs zVpaQK@AmjKRRCOR5HEZhd}viYpNLO$Y`wnKw3%GqYDGQM?3Sc-uMw=8JkDS!y#H+c zvRYr6n>lKE6?Ej2@qMy>+CCUN!e6<9(0K#EPjkJeNQVJt&aUdDe8HdD1U?m;-?#r zM2ioQM5QvhPbr|bGWv7ZRe}K{?$R$cYB~*yz0rJntmNs3<8`bZg8W%b~QAKbp3q<@_|Gp8>V8nD-+IJy+y#rSLP{z}truuM+o#W>(F#ZFVZdN1Zc?9gT# zgsu4VJ=yRh(~>HWyD^p~x8l^4moTp`E!p(5&2%<>swZV^QIN7YFWVba#X7ECs7ko0 z+HGIewYnUVs_K+eAXmj+I%{`A7Y)fVCPm2Gryz}eq@$t3+2-673DtE>j7)HV9h`bf z(E*fMQ@fx7qFsfQ@X#;k%o!NUOyT(g&XDjX#`8Ox#Dw`XMt&zL0gT%^Xt`@W22V@| z({te{B|G7E@fV^`iPIT~G7j2Itj5x6wv7q&E9Ot`8FFk8F;^}xxNQEC1~c~N*+Rv8 z@-$^XoQTt^4W4BGtfJj7*uYP@NvUV*#gY%70cx>boBRM@N)ZLP?i*_sNC+YqxP+wP zVSG=m;XUA*c5?TdYF@tWhXAji98X-96b_{xRWr-ez&Zi)6)|F^Ye(Ju?NEb^wwm? zPBXkXReg61x@tgYwEjKktO4)J1T7ya*}QrZT&cY`UGA#u>u}A=vT-yze>)=0w5*8; za93Kc{7_f`npxbN?9E>9KjlaI{V@pGc}EE>o3M5dhI^Xno3)qUs-nbHrgz+z@+R1?9f;YQSk2NbOzu0oFVU;#2r&q$rKIpHJ?Lw5+b(uU<0wI{ubA$xMLEB3>#MP zayDNt`m-sOBFe!*F`j9QjtsC3hC&W123uW&Z9Ht4i#rS)RL&A94$zx(cFKfc{^Km9 z1t3n95zte){$5}R^jv>=EpiH{0`aH)mYy9Kp`l&?FrUg08bywpFOTLF=VO}hg|Dj@ zxv~l!ZOD-xsi4E4$K4XZR)ky1BSHRH4kiz31ck!8lq13cpV(%XB(tA1K$7n z(6=pPin)d)eQ|r?`LT1mYC6{WY`SgWb#XV6Y8!UUey`bGS|LbueWPUvlBmNtw{Xsa zWGZs$`iYF%+f;LF_Q;)??dc_bNPKsFVo$-7bG(kCgBWok9+oV;QA=*le97QckYe>) z%v0|4X#?U=U?6Gb69+NuWmCAQiQJVchV$aF$KA_oSu&!X za_zZpIqvvIdA02rtRpKw?G!7&7sQ?yAq_2Un;M;|JB%X3E|%LTF5X!Ey5Eu$&o&Kj zL*qm&no-e-w$`!>4XZW561-c5*h*LgpGWi~2z>2cHdf?0;t@7Ycs>niIkAz)NO|(# zNm)nB%WZf$e!#j&5BT)ANdYvX?PF~*RcwwsQ|(YDcWd@gosn<(?SLe`UMzW91U9a& z_d<~MiN05UxUm~JD|gVln0_gW-GHC$e%3zUmf25fyta zKF&ljoP0W_X|v=u>Ts_}I<%WaCLVvucvV&4)5;4&=W$CS1Y_>ps>o!pTEWb1D>Vu- zXW#t?bb-r4P_8D09|UY}zAgxKYSFEu)_bqomFzhEs$jK9(#fOJI%bKH{E(QXn>uIi zAuZ*Pi}reBDX&O~dE)le(y^YZKZVA-Hw#sNqCc!cGd5pn8eT!)kdJwyT^rVFDDIX6 zksF@e>R$eXcXqJaEWEr|8PbwpZQb#cxAV1Oh&?1E@VVN*xnl+(T91@GF6zY&TmJ%- z1toMqTt5SE)@Erj_QJslIM<%G&^JJC^1r9OufI59GFp_*=;?V(Q7nVMsWLAZ&COA~ z%EU;=z^gu_tBUph%E)e}EkJJVBeZ3h`F%Byob_-)jGdfnV%dI?Q3VKLa@EP8SKF=MU@|}oT`J%{ zxWT1*CSL4*I+^G7lnO@1`R8z(YuSdey`7w*7vpCDnFT)qNo}cpPNNCBl}It$Z=Iwc;bVmFLQ}sgHb_S?)DX;=;};c8R}^O4ToqoH8}ybO8M|1IF~? zgP4DqS!Qdku;*24i#rFqTtA|>gUsIDej40h<{MHZ!KrPf5xQ;&CClgX4W~*{oUyl# z-_@5A*3`1nd(K2C`81o1cEeh*^qok<(VheU9U?qM;6lsJ?x4G7802}p*uB{Og#-8J zf4dnA^yBP+dN>Ge73@zUfTmY!y{z~4gKg;cw3RJ#$f8>JI(azWFNx>jt?;y-Nm`YR zNhGUZGFc-$`28-5gYi7v98mJ|KIK1{A^BKxkPPJ!kUo2MUm;^_LcKuahGVYXeQU9O zq-nm_Oq?L)d^Q3z?$XaTM}sXNa@a8>b=X$#N~5O5UZ_`C@c&SDj?I-u0k#f0R(EWp z?V>>yqZQI64(y^19nYnd8%}mv;djG54AH&pu{~)B|El>+ zm%(4g4^2*-$T5kZeR6Enpwc0y)uJki!`dQMr_h#Sd~?+Lbu*=9@+h>|O<$EUW#TUR zaUnuF{7@{EZ3U!Ep41cAb$c(b*M5u;T54pp z$6kD}3Q%vySB}!Tg&j|8NOxOrxsTbmnf|!*J3TVs+})-)sQ886ks66vvLT)bU}bo_ zQa{GO%GjFf93tjcZ;d(~@`q+Ze=@p6*Xc&Cq0H@^xE>K=tb>7L#|vJZg`MV}+(;q_ zjVzAz4r&}Iui6GwEKR_s??9;hD@$H6eRT<*DLEvzT)+ytdX%dv(*9xWVrZLu87;CF z4Ou7#A6~y-2(fWI%+WEsWEe?=7qNy=E?Z?k2m&HAy?eq*Yvc-`w(!`aUYuNG1Gk}H zt70xEcZ(hQ*mORf(OovoPfA@ef!R(SSh|5*_eJLX8n`Q^J`NHHv3hp?^cT%b7fK(B zY|Rm8@txML+PabVfLxlwVl{?k?(D`~OZ(m3J^-AL+#Tt7da78uP9eyO1K*{l-@y}~ zY(5W6%%)m8UpDR!MpMY< zA!H^s6@Wc=k%FeKRkX;Sb(i%3qm}mmjp>H$iw-w?L9Q4vE);5E(8mex6;T z)@C%4%J><`hp14o2z?@2&`TzGVI)8X{LHR5I=7P`@DM~7WtrA;eOYF2DrH!Wn} zE_MX2N(w-iKN|k{RhP;Qv?^dL{#BvkJ%O2X<>i1lt6o=wkUp=r9rQFcBB&F1E}sKM z{%?pG*8TpuIsuDtQ>%A_{OJRys^3A0nsPMc_FTEYYYCRHQ}VkF!@9oP((f@xh6RH` znq2aKWpA>Oi!IMxNO3?fp60{z7Jmwhe(LJf(Kgk;<*BUtm=!mRx}oEEjV-Ahk$Cnr zkOeJTI6f6di~KH9G)Lkrdqmk|7Fc zG~?o3FquzzXK=K&a3e)ef)!9l)h86{$;7L zHaSE8EkAiX>50cN(V|efWT&ya{4;hqIbU=_PSpBUUDB7i%c%p| zQ&PeLT75b_WFWFuX_N5Xt#+O*fsoR$E;Kv8gO`W{Z>BOf?`Wg_d9C;oMP|<**fu8B zLKi7YI){^s*0mq>1uu~@U}aao%f{ZY;{I8;YJ3#n$$+}(Igo9d)QbOFEPD*$2fplo zbp2uwXhd7XK;70c&+Cfyw-{#5#xzga>Z}jukAM-+{4gSqR6uD zCMt0MEH#jM-yllmvl_d&u@QRvsq6QRgUmtgcZSTv?vmrM7A&{9tC8#Z?ZVj#S0zw# zsdEA8R_6kJwd~dYMRH;btfhmTqb_^`Uz*d zWzsE4SVz5O2EXp~fS&#hB(^+#a)k5MAOhT3o(AFIqe}V?E@w}WbFD~j4)`zV@wm+JDAo$i`OOi-&2{Xvzj7`1>Y`YyD{-ve7bRx?+i3)JI-Q z&uEQ5R^eqKA*nE06AXV=%0KIDx{aM$S!k2~wBg5Yu&39~Fg^^?r_b-5UZ0j`x`T)C z@n}G~Ddgu-@@<~_ZrbV|3UL%P&EDhL;9C#&c4)&Ru*QY`Jo_=sD6zvCah$awU_Jmy z|IdmLbpJ@MIqb$e8j{#2FJ^z3z$|RXI~8uYk#D|ByufI1{DZ*XAK9P3`{8ala8|V* zMPA>n4z;En1*Rb1Dj;piIJfHl#UN`Ls(77d)XAL8 zI&61+A*$Bvwj7X4AoJC!6IM(xZk;09uK(Ny<&wNKt(;wf)MmJ0H=e=4CQLu}{|oz` zJkI2Wd_5BX2i*PdvG45vQW9ck|Nq3kqqt|>&0AgqP<%t!`(5CWwmmC%-d2c1^tQce zg*1U3g3RN*)3^`(DlU(mC0!dY%#kq7jg5DVRpQbq%DQ)l(C}yiW1r`~AF-d=TC3CK zlaxbz9F0aiY|QIpU$arFhCZY`Q;vc+jr)KbN!j)X$VrmcgUipI79v@kNrUY(n&qTA z{0|^%4w+Aik8`^KXys)z;(bYsb*nkcODHpf-~)@tGfljjD{OMWW5Bk$)ptPn&F2lz zz*N-rvLx^5#cBHEQMZMHc?TMfx%}!@18(BM|WuKe{$cw zFYbH85kCh!J^u?p7W=6ESZF2;NqeIJOuZMz(ZLz9N*-cE1mlF5IHqbl859b1j(yA; znSAc90xnY}d}D~-3rylEkJi4p?_}=o%*KlE^I5TYh*hNTtCa6+dFwbJNUxUsHDns- z>6D0j%{Y>KN7UMVUjM}WS&VQm?;`Zsy%78%o0=;-Kk&kAv;9C9{yFsi@hbQU78f-E zi}uKYc*KFYo9Hf?0m<4EmiSboaN};(v<6hO#9Ji`e-)5`xzoZ9P=JkL{u#^+t0gf* z6QKM#^$62LQ#Um0uRTlYb)_Qtw@;2cVK^8+_pUd>S4?UTMz1Oj7V~$AMsdWElQNJZ@MX% z`Sg^$SU?~}d37`4DHFa8n&uGnbStdU(?Z14oxM28fAv2;j`)a3MVpy3;*N;aGEIRA z%yz2si)Fu*rm$GT+koTAiQv!bkq~wEG}J7}d7a^IdTbKW6~P#kTV?e2+={KX?IywL z^tNJf%(;^zE9A(aS3sA3RP6Ff+0yA?O0JFoR29E?dnS_)>epzJ$a<5N47y&qH}ZJ( zY_Z)KIyTk$%+4*?NhUty^ z(6wtJn?)|3*f2=`#yKy7fkGh#tzW70i)(qM-S;R2#>MF^q;17BA+O|8SW*G6FvJjHM*?t@YpIT9!wL|`JZ>Eg|82qZEpst4g0No=3UNF64T+ww|!Q-xU*+=77 z?{b_ioYn2xU#+WPMovz9Aq|bpsV|CzeNt6`zw9Xqnq7Z{7>Ix>nO!5pIX9x-Y+dSp z+g?7@>ym~dpmWRzyBXxlbm-1_zmpfz8ahkdYh*eWz0ufC9L6&jBL9}^-kT=)Ae#vPwNW0G#TJ> zs)7hiE?ogLU_;gZeJNtHhs+!* zkQ__sfeNdJrwF;@nAoXdLw=8xP5w7x2+MV_6=dfOSZXB0Q@?9?-%;HIIG>qPZzPj%m3SiWCuIx`7{9iktY_<%{G-jhqouwQ zeo_5>yB5`AZjQ$@&0^~hk4-GMP&&z0}C3^hp%dwq!^@ zb$-h6&v#0J{_PkYDD4Hpa^DR4*h!4T%V~u*vj=*OsPd7zDO2ToI!r`OndGDBvd15K z#fT3_0u)wOWsxi3*-La8z0;cAJD3k|J;;OF-C6G;oU23YYh~n`cClZJ1ICR6(-ytE z_n9Iu4%4kOpML3qn$8)tu+rotZVsy?akav%rTV|CR#%|oQrPpihg>C1OZ=s-q-yD0 zcguxStGO&}PQqEz{*x4He}|2Zi?3<(kpxzX-ZyMhfaozV4-yrv7NRM@AJEYvSK zYeMji=*h&_O=jrul-Im#m?y8?-w1o2_kvXkIy|Hn{X;TJYwELg1ogDaTRvpm z8dxh|kU}7Je0ZUhKvnp+hKU$8Deed*chX@`Q#6ug3pA^8Q8i47fLB?Lpj8Tit zeOWJ9`ZyYfax~phub$O@e$2rS;QVpLgLTc#8n`>9GkU5Ul*0y&2~CCR+KmVI*g%(& zt0Zkoxq^&qi)$IWy-dHTmkmmO#orix3+hD6eXskYA@oM-v2w=`{=2q?Z--h(F#qDj z#F{b_b(=O?_Zufl(8XVVkGkX45Z)XrigI%-NOJWk%p>*sVIuiTJ;{RA4E?E+jROzH zE_GMt^t!dp+26N*rRObuV^N`NP85L~}Jn%_4v*SVRC|4!wPFArwelN?QxwZITz z*^?wT6vFkyAg{4qXRR3>W;t^FR7g=j2bK~i{TyYxhW(lxNlIJMB1XJ1Q_%AyrR)dbofM>R+ z>r`&P6a6*0X52m<*U=+A#!~_E#Xf@L*t$t{Jt6yaaYbc{`VZ|O&QIHmB#Vl5f&y2u zUMrTzOPhA>bEqAgd7{6w5V1z=(<>FdI}bN=3QJ~Sd6pBV1zSI)u$E0o*w?%^e`+uC zC}Hyya9Gp2;A&`_eHaM8+A<4HiL>WVrx-65uOot{BPncX+5Gma0)e|9a2@Q8z=n?J zET|McKD1%2QWu7?OU+K%ZKQ@c;5C*)U-5qWM_4wJnqa~)LGg{1NpxrWlHlx@Og^FX zyG^uOi6;TAO1D#w|7gBbn{2MapHntbcrIdhMNWF2D|;5Az(?6)5DD#hc}eX7-E!SW z2*}HdPmdm$R`ws7BM6hDf&vo(eQ#j3^EKQCnR$;0Spfxj(!e4DhsIXZwhlD=Msl;7my?kp5Bq1)7RQ+{9h_YSoD4{3 z)4rHkyGCcqARk9hGNy$dyQ34$gQ8ALZrOpgQ7!dB$(|+wB;tP!t+XY!vGhtSRn&#y z&)?Ro8WcL`+rY=oSg9^9o zbpmR?FnM7jvPta}>C#C;aFK@#jRm#{d!jkHp260+oiUNQ%1xa~eqI^^ubU4U?;&#u zX%#&L@A__7a_%o{o;`%eR1yTz}M9Re6mg;YUzXj#F_uhJE|Kxmr#RObtE8PUn zO_}3#ssFgaY*|t{-GL}TGGu=Tqt#|#TA5qGbUMTXQK*W75#ilw|0qRXrb~{}6!BJ? zK8}f?zh{-*&br(5Q6Z_I?$A8?F^-iQveoy@_ZOpFOA~W@ZH1eHb-jE7;w*woPHOmK z*|iO%6e`uU>EpUj-ZOSv2l@%K!KVsm16I4B#5f28tYS6uWFmT;@5g1rF>8DMgJE-U zVr>s`zXYQAvaE zDU-QMv>m~#8g<3wI&I^z1?Q&rusb$fOiWv85V1?DbuTpnTCVw2cP1Tmxgq+!RB|E# zutM(@UkI+pQCVrH`!Gk6Leuy$gMdEwA~msCK)VYjg36eF70A0kLXDPISVNR8HHhqH z(1t`+H^)q>#+Gf7^qW^Mws&2OzM9|3e0`bWrniBzYa5H^&EsK#qvYd^?D~fL4fR~Y ztOx5IS0V38E@FYf?ZlXCNb17LJ5W9Lkn}A6)Z35=IV(u*Vmt^pMmsy#VbL-I`Oh~W zr_vB=4Z4qh{b+uEx$UXU|vg;;qCy{AWbBQR;6qHc3UZ5>(sH+d+7#i8PU~1 zjgV}vy(-1O8UmsdV<+aZ%56GTfLnW@lQ(O87gBnGr(FxFh%W&FkDWfJ642twyDUlf z+w{MP3P!W{;V=mx?XFMC!6ELVkuTVH+N<|>-P)n<0}}Elh4=Q?^53fx&^RlayB)p5LGlAC<&8Eznj5C zg5$k+DWOc9=~mDM6}?)k;diIiS5thUX|bRIJ$+|lxWTymDS__j#!Jg zrxD#T*3V+M33W4e7*!v?8YbA)&)SZ{94p(m8ND;8K-D2C>C4MSC?z@8c!eg(z9!uS zxl3-H#e*Ol7i))-9xGYSLtS?#ILU3%VVD0T*ECF1UT9LKm7J&Xo`$|)rrk>XYpdIZ zrd?G_^U2RFn)RqKx~vc5F@DQzo+>dZ5dLLK>@?^%f2``{5reiz^&lB8bt1a%ng7_p>QvhFc8(dsv-p*fpDkJPdnXj?kHB+&J%nCjM*MvvS6>Fty(;VzwuYR? zr2p0?!9g!GYi83?YjrkU>6U0pDyBnaYHEzZ<50*Q#A~dQqys|q=z^PNwn)u4-Dg9! ztcA4sydQPPCMhm_QmM;J)-X7saJBI3uV2Duo?)tLzHb{-4-_$F@NlbKrZQ@4Ll zeh~y@gXzCdmD1b2kRN+$GiK7()-dN@v-e`{nlg77z;Le!hjvw6;Em`EiC8t=vs5mY zn2N@`oo1jIYM&aejLCd#3~sri7^N;(dnqa_wnxwdXBkquc>EaD*;tJh?3Zczs&zV5 z{7E_z048EK@i335UG18QPcyrEITUotCtg~{k(}*xVg4*y(J&kImD<2g@$gofMt+io zcd_lQn5l#WDST-bow5d`RI ziz{1c0=Xbp_QI^U%{qRw&!_i$dI#EK{1LbNne5sXV(mmR&Ll0vHMQ#KH%AujRM>R7 zoZ6`d7mIp{@iXaV5D$+Pj5%mXX)}K%f0ffJPRM5w!L+Ey&x#jWo`-UlU z((XYBv?a{CG4CDDMfNcg|AQ5gR2wy&T5>M4etY+no=&%c&Poa z&{Lg&V~tT8U38yT*n8sJXX=8h4>1?|tN+{nr~-L-A{W&o3huoQg-_GKXWrkR4^+4z z^}hMLPr0wC-|ne!#YlbgnaHoHa3kL(86rqNgT!Y)%*c8!bF&q9|ewE-hO_%=7K(MUk}8|%=oll--&Efy8FYj z$%o(C_-v~a$j4`Wla^yYO+TGyYnqmRH|WU~z-7HCFrXaW#Qs;AX|e^sgyYL@@E~{Qu9-eE8b(I?^$|Dt{ZHxS@0Kcy?L(Rsr8HIUe`ClN zV(0#EI=Oj?R&G1NVOq9wL@FA1KjJNMKv?$-S9OvNxu1$*a!tinb%w$ldbrpA7`X3~ z2a!Y8^`$q!2*ZB{axhE0d%ezHeAMO-PyZdTQwk9`g}cT=&(`eqt=p=$IGAxT9zx-8 zbSym+5B%x$8C}aNO#7JlgU0vrs=KQzdh?O!bN~9{+31wnf5AaQHvCmhc}5YvJ2Z^ zD|4A8vMl~GUjZUwX%nlZkv7$uTr$CW4A}09^?jNVuGEM0MF!U-o9gXMyQ8BncSvH1jt!D_*WP< z=2n8xL~$Wow$o$b-Mw9I-ow;u?X&ipvkdg!-aL0^=xa#0Ft&Er&xXo~mI{s=^02tpYDaCGsGG)Z9pXTo6vaK0b-Zkw|n=?f-M}zjw2nC^4J!*_{Xt%GfypQIvOp| zRt|JbKGK=D2iV=0#dLCf-Q0cl zHcuEVIr5-n7%`JF2VE6LzA{j(DG!d1V`z@;1MWE01{V`Apwrl=8-H4NcgPc98u!En z3etfi4G9cY27#B)HFNR&{Q?3|phDN=Js3Bl!6uOY79E{+s?|NgDjxU$(3n7doqeGp$a`0-@o^ zLuf!~S^%Suz`NeQdf{A+BI6qCPUn`te|}*3$nJPNSFm1Vyk?jv>AIFhOTsR736wu} zfpN&X3}BU?_g8JbyTqYH9xKUL<~WzOBM|h1)p@+cusSiUsiuFhROP~N9c)_gLO9ek zqkGA1vjifrrCtbYb;}(ziGZqQmXQb1$@r_<26%KYTp9@t1 zx(Q@U&V$LVya}^Yxl3ugf?YClowkYCxf1hmP}Ql^e%5kY&vzNei&So9){Q*aC?U}6 z?iiG!MFYKM#;Um#&mumqo72vv-^}fTLNAUa&Cxr^y!^-GH!8&F;Zl?f)@K8=!RX~2 zdGuJ;{(MKhT)2jo$vH7N8yaMuA3477k1vOS3G*rT2GXR^OSz@iEDTM%LgaI-jDDRF zZZIs}62*msSSXPFx6A@drbA0DD^;SDqg`~2^}yjL*P(Mzu?V3YWHEPGPx;$S>GfU| z@}547`2w6WYzTe`qcTBT@lgGQ)~0pYwOLbbXyikiBXydP3l5}sJhNst#j>_!zk_PW z&q8&0ilC5z4wLP&5%GAQf z#_fMVxI4 zR_-NBBh5CT%U0WlrSniNe|O@~i$#T&UGD60(FtRXQ+mBH&ao`0rjAemO6BBa47nDc zl#jj8YO2GN>kNW@f))a}A2);?Wd>0e6O`3w(Z_fa(qd>zx6FS}U5tF=%5fcMs$7C6 z>eHelxODGOTLjfTRSwJ!5uxw&`3TA>#%8##y%)iW;tNpLFln5X14`=Bx0<;vA9<8k zQhImDyLnV1-K+ADDqMO8kP z)p-o=6XROs;u?SzIpsuhVK>$uiVj)Ba=!7~s&Y%C^|!MO`tm~({S-Rd1?Wzs%(vM) zb8(2`@1kU%Z3}};1ncl9_`CO!V4^1_Zi&3Ja>{omJXjDUMubI%En7tYh(JyiB zJ#auj-jW;+mqxMPj6UP^HTA|zOE<@Le(%Tkk|`an z?q9dcSc{kA#4V~ANfK9ADY^u5DYIKK9iju-w|q!gvU$uB_Q_W9<9m>XJVc+>LV?RA zT-@3QM&H2IkPic=qs>Ot0U@5%R{{EG*v$b<)RKRz>Qa$%2sM9vpH~QzRUu z!|`|zwE%QBR5zwy*Z787O~d8c=;`6)crvnBGho-awbuI2r-HX?M(cUs%?ijXi>EfZ z;BS6S{++(xHj7;R0x5VFakQN9QgMzKPpc#*_H$BEuugs0vY_%bG~t4EDuyj9iWd)f z7-8lvhm0fE=|))kBc1!I>^2i=R`Av7;4HX@YacoMCt+lxCWZH1aA4FU1PyPO*tC=c zn*Vkobzn_V_*OQ93sypC<`XPN#9*OO*QX7l4%{@~afs+1k1dIfdlQds&_X zs4Rhx)!I6{NQI%b8RQ{sMi`zzqV5iaKUwhS9nc6DC^Ix-R>ob9ZWzsqVm`A9IYvX) zL%i=pUu?V}*`wu?)|NfnSG)2nX+T=1pPsx$ut%YexaTcUj39dAV#~FAuDv&qI;^#Y zEaiLXG0~V=O6*Zg#B^KT-%(W4ggdkwhP=RB3Jh)g{(G*qM0As1F_-3Crer0FVH=u! z*p#qI>ambvc1Nm+E38Y3U()5t{nRb5L-L(vU+xe~vdO{M?B~sSxwX}fm*85!62ika za||^7@W~+N7`9y3x-PwD#Y1|y?MZn!5ZzV-m~nL$kz6w@Rlc0k@Ys^a4|eUVq#+!jzgdS1hX%_kG zj{Y0!S^H93meorZ(V(whTd{V7P(gv zk4UVkWZw<2@Hp4b+x7%qEjtHoyNOgaKs&XKJD8m5zIwYd$HnH$;KX!Ed=y?_pqg9m z?Nx7=rh6)6Z+J|;Bn4|F3LBV^o1_ML-L{=~-(T+eq=TpsOpdHJK#rYaAH|O?8w>e` zmbPf^p5p+^W3+Z9YrCG4-_a5bZW>WUv2}RFlAtd_OG1E}kSR~`El5i2Ugg(td%v-o z_IF1Y%k^!((YAkeRuHW?j5KwMQ4fGpX2DCUralVfJ*t93{-NTou%;y5tiKy7lu2G_pLJ~$cmrv6#kNlaFNN}Ce}&-)7)A|opybX5Gj641~{;q+j6N4 z663Sg^!#@Z!Fs1NLGnZ(FApjM8QOxdGW+34BhO$C#exC8Y0O_CD@j z?^5GhXVt>BMvjZnM|;H{EtScPN1T#RM_s^2uO;Z43ksvVt_{gF8X_`$0mm%~{72eh z5~O3x;;hTDf&&qPyD(CJ5o5{np`&5g#3io+sNj&~!$;=2r6Oo$5D42EdZ1*vjjfNS z+nNCdz)8tFJ9x!`hp}Fyc0%IVEr|jU<7bI@L`Mvvug{#ZQfdQ-Ax?-yrH^VJe zUXuk=3!dv6JfH%{)ehY@!2&;Oh0xxtCVy&pBD6(rY5%(_QEDY66g^HkDiO1F_;<}R z=lT9vjluWfDtGgki1qgQegO69BmLQ)nCf*s0`1_gN_ZzB3Ttpa-KA#YWsHgxpc-E} z2c#i1gsOsG$m`#`wYIWQnJ#hMv@#;iAu<#k>oMxyl-|17%+om~Jo`(DByCZIy^L37 z0NBNP`heLO4!_dSxZ!t&E5z@i|+#`(4l zAFkQMQV{17Nb?=l7TJ&SC_1~}ta)E4o@X!72$sF6BP3QRMf-HX5h(TuzMM)C@(Qg$ z%czWW4riB;a7R7aYAs3+U)|cS6CG)FKmtT}uHh*T(o1jW?}I)X!Q~Da1BhFByA=rY}s`z^BA>6if82mb|Rcb6%~uj)*4v_|sYjrc1m zt$bvTnZp(L zQ1++3fH9S`zX65skew;070CZaTFe>AYV; zy`C%zwT_ZvdEanC-0me{^^YQ`a@$ofykhD6yI_wXkl36D;jO%v#Y~5~gYOs%7KVG< znA_~sqm(&B~*Rm#;V^5!{%L?E$vv~E_G%q_>(Vvrp?90 z|8CPbG{WF zQE*qOV9P2uDrMk- zQk$3X8?;d*9*V6&%i*dq)9>qNo=#oO?1SKzeKSVh`AOo6M)eBoD1O`>F+gU^=zSO` zTubX8yE+=eK#5*&bon`uTd+aLQxfq}hqsq4v*qw*1s_w0${EYd8Es+7i0gG2XKkqD zEoLvV=Mg#~Ig)i*1U^|2mv=vJ$!|pEJdQ3H#+IK~;-2>CB{zbnS&(J#@E3i}vbxvP z?H%76{g~kpdnc?|ZdiN9Q$7aQT)J6P80TwVjJwr$=ZQzHu@|!qDdI({o=*&_g{mYC%CP^+~X?0ACXG(EMt6ZV*Gu9sNA>bu>NJl1=8h4{EY0OFVlRkH`NPyg!nwyW(mpVzF3HI-xDR5$D!$GJS;qp9?+URP9&9sK0{ zBCa%x9=@0|SIlu2vR;}g)wb@TZ)V*;pIhsf`}u!UdG0p~4}VIucT_$_uJ_+2dZ zs@mej2f9j89w~5JqQn>Nj>E4ydv$u|6Dsf(O2o@-`PVZ|It34GV0Tv^z_Rb3nd;u^ zDm~(X-KkXlpMEPuIaK`K@Ay*%oC*Wid)q@_oECX*glC(9WBMKLubc0?p21$RUXlDh z*|9*ti~6*8ZYRo8_i=>^{ z>VveE^diF_!x;cb`X1yUL1?!%GpcD*QKDV&*rq|gHSdTMrSxFS2UF?F{4L@rVtmlb z7;nM<;Q9L*x@TJBFa);j4rX#aW`53J3*2K5TWFOvi~S;%H42aQEt^#JLqBjkm4bcp zZh^dga*iLHed2VslsStoCy&ruh&4yBwSAJF-j_gb>NvC>ig}-(8y@O^u)LVJq)yau$MyD12)d)%Yuc2=BgrBnZb#ZS>S8@NnUuZB}l0 zqfp5CYEevV;p4y~QP{?}arc0BTBK6xa4Sdt^FzHer#IZ?$fF4oM0yOA((k!owY_Oo zj|M7{+iIP#cA*Ac36RO~$ojQG8qY9GesUOxTWJc?d~nX`?l~4mba2S?J{PNW>ZPUY zjMWQT&wSd=@&&&$S^ufo__F+N;Sh7RdPh>$<#32rCphHW55sisTo1|U;|UJpyl%_O zcV1KHlM)*=vEjpRax$%#0IP2m+BX!d**41ZRjM#fmTkB+`4gA7tZz01sA~Xpsopo!niv@2I8Wz+$NXgNaQtP1JZ@cK zKObW57Uo{1#j#7i8;FjxZgN<6Ib>*VE~qoe@2hH9aC*=~PLTNEDz=iSH2zJ6q1)j8 z_P|LZ()$47AH?F*(u=MgwEbircnYp@RWp7I`uV$%kT5sMy`O4+g|J&lUFXXcj9qPXm)gEsn^*AxDRD0D$Y0N=z1 zFGrQh(=WV9TAhDLC@XJ@7nvFymMe%#St(^#;xAZy`^Ez__{*x_%hZphBwusA&y?hX znR#dm5j(LJO_XRDb=bm?f|%}4!toaEx>Y(w*t$DW5>QmVLei@(d{+O2NT8J zbjs$zzDgBL?mC6*+l_1(KmNMpC-tswg&tptA|PBotV$(k=@`jO*A^;FgthqatbRc0 z`C;b=^ZiX;!#7wIc~k(CwvK#>w)%Q?BcJ&a>?^XaY0Ru;dT=DqSZ3(SdT7y2-X6w^ z_Rs0XG3cf8VD=C5i-*)QE+S1wXniOc9`~1Gbh0hZeJD384ys(!BmE3Fc?H z_Awzm$DX*T(1Pj+n6{h*6)=w2AJWvQ8!jiP8CZZ>3{eQyGP~~1uNh)uwv4q98^u9Q z-jl7vR7qYKA~v#Ol+Q3PJ7~BIT)Cdq7plC!R;7ppK{8#4&sogVeJ#w8?p_~B%P(Fg zj?{Fz`5`{rbFHOR&TBt7TETg4r3b@Rq*p4Rp+`-)Cnf36UaV33k!HuM$NxB_XOmFg zMlCb-<+y;ovrcCNZ)>h1gTwpH$XZlHcY@o@1LpVeb;0C1;n(x2I=@46us7mRWTE6gT3sQ^9A_yiQs zpS`3^-~m;Y<_ez2PCKt!L&xZ@+;@xEZm=Uc^Y654N1WB~!(rA|RDR$m)NPD&Urid6 z3f^O)_6Bul4lN$;Td#9zSmnfL9<*2DH0T?Zu%CS#bh$_L{zl!6Uv>qO9?|XemtOo6 zCQKNTMW^oOkUv_nNQqw)RzSPuP!^J~*H$2Qf$1O{*sle72dG(Jm{J&uB^d7hXDO@u5B6U@hLp z(>6gL>|?_c=VRlpkKB;V} zaa)DiwU~tiE_-)C@Vvn%s=aB3V+9;xc91&5TDAj^P;o=UKi%p_GCL8+cR38?kc7S+ zs0<8GvU6__46y9|{VLuOA(|OAs@$~Sl%`48p$bmK8)B>hfW!_ywEsidTLrb*2L85C ziWDytDPAbTd;_e!>xJ$4ghi}h5=juOu&$-J??(^nd&+l35 zbsdI|g9^T7Bh5TQVq#*$ou!8|=Fe(_NpvpGKR z-&sw>BFkE?`w$^Lvnh#W@gekA?!G;Q*o7f4lnq_Th=p%Y!T#9!F5IF4EI7?g2Wuqg zVIX{64((xM;#c(`-F3}#{?Tkc^AB>WP1xHn0tT9wOKs9!F^C(^0$=@GryzC>t12|P z;kbfPcioMe_@;-gs0_Jm=75`X!mvk+wl%lZ-nQkFp31guS5VV!6-TttVRZnzXbw^B zqE@7(lJ_Mktph&T%WHal9^l~#zzVHywb@QJBG?b9v{o{)Wyjgrgah%NC>;25A&Cgk z=@Kd=(Am_{lhPA)eU4RbzYwltwmKYE!sbF@D#!lrW+FUu&lTJ>y6;W4c8Wo|rzT;B zhCA}m@*ugi<)v+6x7+(yxgxq(0{pMM&d>Kr>)EH7oig}o#cW32()||s1$VmSqpfP| zo$M#rj&gV4*vPc0NL}V9pCMM738R-IlR^~ zQhe`@Cw|zCsmVrs^Daw(x$K-q2VwC(VuB=ySFyO)&5IUeodZ{?@< z*ms>Op0GO-3q+4?FYe1?9DI_oALq_{bDw2TMa11pfJ)Nu*ZLBTQC>dzYOM2xlslip z#lCmR#3HAz!Qyi#y2(3)75LDIHBX~Tt>Qhi)S z=fTkPx@zYJyJzDEr2VCdY-NCMY0pcGI=1$#dgQ+-(t7*Z;luKA?v1UG!U&5xBIi6( zqr5(!`{$xv5z(eAj|0Cns2uAs>kGR#>qIE|6gO8e)OQ84dHKQeI)WIliv_%c!aAYp zA+%a2k)1p)1%;3_4iyf)pXaV6dQ;WkFl2@5W92&}##Jv_I~1$_J*nB3R?OBHbJ@3{ zGCpL`b>evN%BL$}e14gA+@9Tr$qtE$r8H0v`l}icCRxJx*oGiT7po33q9<#Leay zf8D!^A`qK@fKbBv zuq{5goLL!q!XY@X-Bg!Gzhi5G=L0~-?Y9pQ<1gqgbL7mDsSRmelekn+T&b+&@5U}4 zB*G@@w|7`RQQ=?PphU+?%?k4IQ*FoccaD6FuSqDkM8x-@><8^)RTlJTHb-k0Pd{oh7_sAWeSZ&={aN&Rz-}J-u>6}j&7gzFk7K3>C2ZF;c zw}nsQwK2)Jl&FU^Ee>RsP*}u2NYBXaMg*&bg}2asX(&pdPAfxPSv|_(n)_q-W}o?Z zn|Mp*gpUbqrV&V0H<2u!y@f3mwtph69wheTse3Y8Fyb+YduR|&HxKN}ls#j3sBLw; z1n4_xsiowGbg8!xvfI4z{N#gW1j(~ZvM;0|-G7G}gn#;MGQ|jAW}HGP zwzRiDZT{W=DeMT3k_^S8&(4$>n3syL~C*eGvHXlm{hb3#>6)pBO`&eUW485-q7P+EAF_d?3`nj zr%Vb*3Df1p_C6ZiW`(ZD({4M*$S&!iRUhKlvd8VqOI@_TbvBbRqZKz89W4m(%ER6E z%YFHS|FAnOzskHlf2+H`tCwAqx)VXJhPAOWbGeXb5m**U@f;#vI1tTePS2t@p>q%o z(szrVw>&0Mu~nQ9-tzo9e%Wg!Kcp60oG#hxemAadqJp{1nnGK76|E7q>~ z4FPqul${Q_f3RT+`R4f+Vk_O7%kC+KAhWA;A*^$m^++~tk?R8M^b<>0C@ug#jWg0| zozg${UUS^58%gM%PW>;?g1LOI-26C=-1(BDbF%IfJ}eCJOcPu1se=ef@QIF<;kFm* zT6i52fG6yy^Q)IR0jD@#{0n>Ze^`I8?c@oQD^|5(fU{)BdABx1K5LC9fh8Z`n;)Zs zE{%h{B|{tfFI1BGMHCSCg<0*Rjfh8xGk`C#{gcC1O+B3VgfW!pr+?s#M`BWHJZV=U z){gR6`jY}S5eE=sx18F;lUUnhfZcY4prDyGvCxz@ z56fcd1+GouN8o_$W7rxV^mHv{Gtwl6hgCAzZW|H4N!nfMpiKo(wNtlI@m}h$7$u-nA~VlSHT zD6LG}KhA$IX|o#fea3||8<>%cF5??l3m*QLVG36<@3Glvrcm)RS^`P^+ws!d6TXJ_ za@oTeS|a^?dINUHyIsxjzyIuC`c>>4tqHI1JwW1*f0nG$1hFM@%zMDl>;kc+&pDb; z1l~s;IP`UzErZ-|CxQI_{Fq#@GA7{#JYcD4@g}mog0zo87s1LWtVgx!X8GwsH|55< z+MjRtitK%yz4iTYc{_P56(Ze!?B9<59{yFgpYh_bn6nvS;4JF(T(9R9aJeonh(y3U z>c|MR4}Y2g26e4Z*Bp~|B|-Tu7$n=G7!C5no~axOdSCEy>!!&9~6Wo^f_ zz~L!nY3|10M;^G^YgrX&t)-SSq=FC>LA?JC7JMImpRxn}l;1*{ADi45k(+Ee{nt&v zP1!7{!0B~Z;kYZI^&)N8at||}-?s8mZBHW}`8K|@b-)q!>st2~U@%E=eS0d|^F9!h zm0R@)5anWZF8$b4?|_E=9k&AP4&tRvhvm_qxW!OOImQD0$*LwwGe4BitG-na28jTZ zcVA=w&Tf8#sx2}0_saqj20yO%NWK??B*_=bo24Z(58n-cansumnEOWIba(zNK{al4 zM7(LxE^p{`ZQyjcp@1lz$h1jXuAAAr?UreOct=2*emq?^=O4Y&?k~nM{u+6t@LDhE zRm9fpegQ!WdC5W@*?b*e=Gd`%X83qFI068El=`#(H>tk7dqS1GFaQ1;_#*wD0O_Eg zOMT+hDf72Rx_>XGuimnKS_MXDGtU2T)^NPzyg2(`&S#db1G0Pn0n7K$KEKTtu1Pgu z#rMHkgWPM%d28Th*#i5PFhPvJwFaU4$6?Y8#nKQ}Rm>boBs3M`OZMe|lWOuBLXUvc zmq2t-&)YJWYlAL${qf`}SJ=1f(8u;63Jhr5Eyc$PNX|Gma8~?()gQ83t3K}M4}vO& z#GS+!xpEL59_j8?`1FjpGxx2zcl#WlZpT*!MdnBC|I{D4AL@^jo?!|I%J%Z}qvRSQ z(Pb_3R$K3dMBog?aLp^N=KS#TSAQFyd~ExFJpk^4h&{plhKJ?CX=2vO-@koh^~TkV zRc08|r#F~SPZ%ak*|xXel9{?zc#xXw2+=g}K-qR9y*XK3v3q|4K4XQQ+?KB)Ii#>G zKq3}o73s^;KkdN6#+#rsZr}`9==+})Dy9t@GHPPkciL~}qgjbUtW#bvWPNINK$AJtU1wN|xBqLQsiXKsM>ew5n9kDk$ZAp#^`B%%(OvL^k0|k1!x5zk ztb_FRg4Il-i&g^WD!|gbXqQ)d7Z0#68=ZEx!dW+`gtc8CcwvfE5by-!cS)gkfvUs| zE4H(D`-u?$)?!V@YCCB2OP`PMexs}vnji(tJF{jvVj3Huth!_D^KE|S(&XV_kqJo# z8>$$1&|2s+!vJ)j*UUFLVHz0|&Pj#z`tnpXGBC;S14q8(skYW_?2=QaBE@i~e6M5g zs9<_ZL%{iJtkdmM{&BtCaS{yemez@2tHH5Ze;_MaeRiOQKrXeqFMqK~6uVaAWN}oH z84Izmoz24;7TtZ61v=CfTO;yZ(Um+W@_d zGyaL|35i(wkwg9L1ER9B!aT)}$4M3m8WR?KU4q62Ls$AY&^~V5f@OveU%N)-`NPcz z5R@sI<+GzBN(_{$ojQ+8`*y_{0aL1ybspwbSDq27Lg1(&jGkNgx|h_N#Oyg37S^qu zun^CJ?BcRbG+Fp?pWUEY?f5l4`1iC32Z6_JDz^JPwb)05$-drUgLlSLK_iV?WO^<6Ko#Bg(%fR?yq%kUfKM87>$|^MrJ>1Bfw7_HU_GG)bcmB zX1NAwVc88_<)sMuC;vhxYpYX?$P8YexICgEX(-S@{VEGz1TDTl&B9AEYX{u{xGQL( zgliW9JNS|dHOm)&bwM?vNAYyM_0C&@C-X+NU2~Q2LF&J_+Uu6So%Xr@rCi(NohvH8 z!PJ4q{ZX^xM142xqV`Nx+~Ke{D}|tVrq()b!&sOMsHw4on!52kU76!x>sa$8UB0O_ z>&qa4)BH}FEh>Zj@M?oeo*Oc0Zdy_8tu!&b?5DwaXmg-{l^A}KhvpVLG+dy@o(m1+ zeA=vx8cd=kOj%ag*VeT ziEz22J!wFvzUOqudwzX|{SonE%DVDR+}1KX8f^voXH_T9-WD*UrrNouR!w9`Ys7g~ zw|Z%~Kbq?T5q4mGpIfe&pv_Lsjeqw28>;6`#=du`dxc||#Q9r$zTB6dH*0w^CL6@Qh8Vn0Gyq436x8UPfw*SmHc=Cd+iQLz|L%~t)Js+x=ma}x>prF@hafn zBDw!wK1o=7T=*b=d&tL?=;o$LjN_2)-G|haGUtvXp|ZE{x^6bgYl5t>VM}Hpnv^+S z)C_d?Tb>f)oDpjnriSfhsfZ)E2!Ao%jO@o19ep3wIt#ej)*Bje@QzO(+X^+eAgw4L*A>b74|trd;I_~)BvR5e;(35XoD3~o|((esgBK~y#-BS{w zJ~g~zLVfP`YbF6Y(H0#}THO&xR5cMZU7c1l zib&Xi&}_u=+E5#lGmq`deY{>5%Gj(^rE2i7EXB(h!Y&a9DhDNJ(pWIKXm;LwgC18f&v`s=TteJ(o(Wt%vAi9@{jmmre0u)PB4y&KYx2LLO?qhw6yp`kT)l;{0=}ro|Agma4pzJcLzFp6cZi&C)Sg;zVa=I=qZZ_(jp-gC<=G+e|!#Xw7Qr zf^XFl3>wm51J-?E;>fH1enfN_IaaEe{$xgI1QxUZMyMZrKsHX@c`~rq!9Xq1NWlzJ zT0%O{0af^qmxo{){GGFQ$t29se_Y9XwUet^pr{hzI!`m?@!>I%8yeOpoYS*|U)0|C zS`&8T7*E8I%wZ{bgFib)_ETRswQR8PJzN0hezMH6b_F@A6k7R$2P+nfDDDLe#*q&r_STMpg-aP^!9rd|~0OKNg+g33JTWR|!}ZtipL#+tr*j|Iuzw&bAmf zRDw>FAu3w!9VJ!PVqYjlWLSE-vKI3=g-hIe~ZnFd~ok;JvhGG2mv`0|KpQ%IMnS0r-X zp-}>sB11Ts6Q@q0j&CL?>KkehYYwEqt>Oy8fe=2?0CF6D2 z`?c@-0$YM9G6p4i$O&$RtE3rTGRz9hYWdx(4K3Rf-2#*|P72#QML0(uS#?%wihxbF z{(e~wIgZAsj{AJHXIY)vnG#Rvz{7chhOy*=q0Ql|WWZ?Oyke$Rw3V;g@IKo@Ue}6J zpY|%X%>vfL#WbjVMn$XzV5iyTZthYdl)h|~%qcNR%0j>Ks%LvI$S5nCyJ~weykRp1 zBsOyO=zlF-nh?80*3+veH@_`*T$odHi-R0lx2(DMd}$S468sT%#(K=d4*RA9j(~YJ z?_ZB6wqCDL^PB1)6^2YCrY6yd`A?7z33c;FqR%IUjW+X9+Y)A2g)Iz*HLY2Fs(kDw zR9GJNdibY`eTo7m@>SOLFrtMpc|bk=xQ;A3vIcl)g2->&hrujP`Fy*64=`F)N^!L| zW6!o8oArNq4o%CccN`bv7&$-Z%8!8&!X-C4D5&NN211@JW;Hoery;u>C93;&3VH0f zQ#D;>2RwYYj!#czds^2QJ6-0~RJ>bGLZs2Vb`&FA%W>9Ck3yO%^7oY$Y*Xf0&8ns8 zy|uRA6=tf|8*V$iz)6>aC-^Rc7-eYcs^Z|8xS{MmdBBqusFw3GVzndj1_Mo@=kEjG7ERI-2*ETg?&S`A@+<~u z?ar@jXBU*8Y-wM!ai@KM=*H*v=RJLd9Dlig_wx$;%5{AyuW&QiD7e+7kv!Gj7-a$1 zLYIPp-HI|*Iz958@SstvFNh8x0^^Hhi5+wIM58b}5CS`9)GxJuOd*BpIZ3uDlcp}p z_P*j=+<(RO9zSf1Lns$z16IrDlsb}g?_Hpzd2K(WQ(fcjwUKUDy!{H~pJs6?|Ivu* z8h!P8#a+?6IH{ydM(l+y)PDygxX&2)$#R}ZP@69CCweMP@KU&ZNdsQ;@zlE3_w&rH zghE($rGkNsmh*68BzSH3jFbL8nSzS%Lw0=KVQi50!u zcV!HcuQlv7$ladMs}cf0by-_5caP)&g{?7`U2;P}k-&z>>l##>t= zPkVW58|*vE%pU3t+xhEOqfuu&=OrKI8d{_EWSraT2Z5R%+7ed*wCzr%d0CCEMzEJ? zc1zlI%cpo0ef1e}M?@?FEJ8k{d&A1SYK<}7Fo%{+A=AqLn22l>^~o51+ddpb0H(h4WkE zGKya0pln%oQo^X$Y199DXymyS)3EMei=?hL5&~NNvHM^qiGNS&`LWp{8a6AMuq#%s zn22t~4?D}Zy$HuDny#WJSp&Z3v_y?HFc09bHH8DBI#8`NmQ3Hy5*3KoK+CK~BefO| z*3Fe8PE*4tg)B0^-E;&b)XR=53b+r$X0niO^urHmdWA4eNexKbow0&fqkW8m7uBZ2 zU4AwuJq+x&)a;A)_i{VT3T334XwECU^v6w}#zUX54`{K{15@X9ns~K!<{F#3%CY+v z!J7bcX{$&y?_USZJX%yYw%}w*FC22@H2vGZyZDkc{ME~jDY3O+?DF#Li3! z*$cOZdf|hr;MkJkYWa5W@FoBKktJ_<`?FA9F*dHuuK?9ZXyMHqj(JW@Uk=wedw7X! zT4Kt-l)Uysd+K(|)&nONHL~+O9H1N04tjQNl*eM1xL4B0FGynE2MkD+h3+6WQq~^A zDE6k-9%M>O-voJR!w?=u6T8XzK%U-E6a9_;)Ce@+-Rrl&g#lM)*?}+{SUv44r9&Rx z05bTQg2C%M`Yj=ptCn#oXZ=|*B=xc0XkH0rdX1DPcj~O3G^0j9A-@p6w9zKsc>#+= zp_PZ4HC6=5@cz=e*EWa`7$=dT%Vq)p7fKd#-tDC};3PsdoYX_G^$FO#DwW6bP0sHcg9u*x=p!{h~yQBeg3=C~Y^`jfPc`})~zKu#|j|994}73x26MoEP> z@Z&dEs>}rC2LADb@%q0Tv;iM}%{}xtIAb#2E1#aXwE?2CGP!cYaC)2_ZtiyJo{C~M z-U9Y#bd9(Cn$`u;p+6|^E>9SON9^M|aRQnD+v|~=zehc!k@`(1H6Ynj{Ud?R~s*Hhmb>Nys9SJA6`XLPlCD;b}z zFx&ORKW9;p+3f*Ny)hgSLy4Z+iI0N+GdxGX9TNVuLgg@|mEY|V_@iK+G`^)@ZqYUH zljt=GmB^7Ra-J%H88?QRN=LjNBQoV}^FMJ$7C%4bo#^xjzVPyYWt2WK=YG_A9Q%** zRv-EiTtd&zUnTMV4=}_xegr5HD=Qc-&w;yGJ zKrFNW#2JD^qlc#-Wk0NeTDV~X@OaT(ZOc;!pkWKjZ!*rGPRHo(jpmjR>2=b9!=xE;HWH9MU=OxWzWu4`Dsd$&iEsl-XG1E|#6;9n1OaWNaN4oD6X0hA@QM2hL zlJJs+-d=tCbjRdwm*)Ut4`iKf(%_ZD69$(>Y1vArx zH0IqfTz@Mv`Y4l3jhfYKkD4@*+mFmrWm>L@Is5D>rB)Qf`e~6uq#fP)z!`^riLGTi zEtbWa?E7c)2l{QBWNtOt7sdK-V4}jMW`F-2U|Dnf%_f&yaVs$&u6(vTQj7PYFyR=9 zyA8+1e#H~vP)C?gvd*=BeotM>V1Y!V=)3paG(B&x$ z8#XUXzd6^WfeN9c=!=rG!a#;SBatjr0oC}A=?zvnUv-758{3?-oLeWE_0hVx_I~`6 zaHr(}^$9Bz*Mmr^C?FV49d7JoeTD zE2i?n>K*c13E0O;`&ioeIBM)ufoVvNDTa+7ouBCu7sA6S6IyTo1cUmD-8IwHbmGMT zM+*LazykKk|emfgZVZj8)*cRpHLRN}gMJ4yBp{XYA{-+g}W#te#qO#F&|HS@ii>-mJX z7K0KJ2dvvho74}D_SDHB5d;Vmn3b+4mLGq?$>zA&Xqf+~>Y~Llwtz+ATw|&7zC2nF z9cV>VNIGh&XN>)*sHt=9Xt1F}Cba*2_hPsP%tJ7g8>De|0UAzQHGlEI_o2ykdyOl! zQ+xaN3l8b@j<7lNsfL#}(~X%UVXiC}%_eH83>k%a;$VCa9;%Kv&y&@_m%LEm;Ccqc zQcA^q>3WDssP{TWsM_sKOw`M>6)rKqJEL)m$D`%8A^FtC5PnNXN7N}#m0oJ~_#`G` zAl*#8tb1|(=|?oD@hR(PWs5G>Tw;_T6rOp*-)~CC!eGr0vvm61-t?6bHaXY-9;GnO zA@KDSQhI*;^%1gLa1c9(5TWT7q@;88M(Jf!)%d_)*~ffrzU(dx7zSpLa9 z@8Pq4S|8E|^Mt)<$_23os*tPeI+}ge5c=tmZNU~4OVw7d!tDA2_*XaBZlx?f*CLyY zv%Q0`^*p+XIK(L4RwIz$!rQTXRHJ&=`XA~9*fQ?oCLdwLYM|#}@r2M=$0bYbj-Nbr z*XvwQZ3%R(_9q<*^x)`tP9c6n=CW2fz;0dJCOwW4ayV~EH0J&TM)FIM02=m!zyw)x zo@`C6%K5_WX)U zzEH$F^V=Mxu8dSz)jBCddOEV4%76X$+J5Xd&}iQy;-wv26YZd4(So(Xkx|@=mhFC1 zh{%zOPnh&5?yqwJ(jJ%fZbgt>nTzah>rJwt7$I!8G_fay>3 zREgX#oM-ESS~TWS;`^XY&I}ITspl1T4oY8FjLUysA9WFBBQ8yh8+*1SMK9cBG|HOa zmN(nZa|yDaT|yPNWTP3-hLhhIPFQc(Ed74&KnupKU6t5bp)m+VqzL|@5$Vh0nbiMc zW^pmP0ArjKPUsvF?9~=} zQn~*r+~&tXQnU^yu-3WTEP{R^eO()^dHcDKUS-}x>f7c3;t3U=mWB80wbkqbqUP@n z*%;wh#nXDZS=7FXHR2)gh1WL0+Sm7u}rYc^y-4iWwdS zQ5$BSL|@-Hxxiz6Z|rlWm$Nmi0hFo{`3iG8=6W6hs~7exQ6jn6=c)oX$i~TtcdL^; zmysbIJ65)$u$=`NWB+cTJ_6%;puxSxOS;HJ>qP{1QXQQcu$=@9EHysK5CFcA-kY*Q zc)c!?b*xJ)4(YBbWcMdZ(0RLPbrD@muZ}IjM&r+D9sA8PKf6KX;(>8K5~f+GxW(Hu zC0x~eYuUXEK!yQDs!d*#pcog@tZ^kZWe1vN=CzC*~;B_V~TUoRN&A zT&7wIP7R2YRP~@KfP1O)Y18j5@oERl#zu ziribmMke}r07r(UZ<3@isMX}4K}a&xQEXGXYBUr@(%ODuawhYmiltQGdeMwE7v74B z`pY2;^o(|3{z9uXI_J=F!Spk{_lCvfq>wdPMrvMKCZBs`Kk+VJb%&F{m&1(`&8qz6 zvhLWPLy$R_KW7+WwQc6T#|nM&aO3>U<(|LWbPlhjoX%5FRrh7fiM~S~?ND}1Q2`sR zO6C3H_meBN(X4T@o23Fo!rV!n6i`-mcY05rgIo%lhrw+n{nkSfbkyzuJ!p?R&_tVS z9fBF|n?vu`@HdRmagl&wa1v|i$oq07cbi^H1Cgc-UpGO7RiD^0NWM0f;C_ZPbP;9h z8){L>cDXAQTE5a1w8!vz@PSv%_;vv0u2!}P`2g-i*{o3hkmb%iR<7A`9^Y*-q)tb->u+=Hxj^w`u% z`u^qUi``^TKA0uVnZTc5SNJ-_r{e1CWDEN5JVoP!?A3UkZL#NykeGQ_UGIV}w|)%@ zi$ms(jHyLx*Ds1iL;`Im(Gftm^kda*UB>AL6mau*eEy!ggTo0DnTfvtD#@V6F*uXKff0Nfj1zdEcF#@ZvlC(r#6Lw;k+I;9R50EeTw^bzOphWB2cEq z_FC#~p+aQ?K67)lYqw5yry?IaD&I1b1W4lA?GNzZQa59lfd6NNZVOTT3Mr&5ML2Z@ z4*%QI>x)(6A$$g|%^kpf1GM~z*-e(hp?=_y71s~jguCQKDuGGh2l{jct1BMy?zk%` z1gA1(#j(a6l@r4W5GoF=3*4HJ_4=CP^(d9>FjdyD8RKwCtv7jzPpQ>&oqxJmdU#2H z>l{3ffcvuEo8GU1nn^G?<=8AjglUF&9)C!i+u1GLh1IkK?1Kii4GqnPVfjp%scD4p zP&`F2ChiL1PSl?2x7uinIt6h@d7Jw>XGPG96F;zj49kUedaS4*2WtD~@t?@0%Mp$m zAnf)%%i_5K6Ni1MzUjT^Fkde;Scv*FzpE$iu=q~7Zv_J=6>xv#Vy(cwIs+YHE`5@S zKKE6+Hzq;xZn9h?RnL|DYN>f(6I+8od7;^dHl(Sk7qFUJ^DCY736K!3K8^44WQ|p- zP#UpxGc1P2oLCSRo*A@a)lle5<7AxdVpt?fH6vVjef;f9h2aX$gwzAr3Kozm)ueD_-#NQ8RaZ=)%8= zbOF$e)?%wm-P+BoQj#mV5HC^x#RXxb@3!zF;v(nnTsCvc5jS(Pmz72H$IJ;oJUs9w zGI?_8X91G*p1PcDxMJpaHGL7spwC* zM#!yEoCp#)_wqUBT=ya2vHC152ANtuq^a`6;@yhQ@U1|FDU`IX+?@>&p9GVGdxEw_ z5I&aS>XR6(l!EjFS7FxtuXSuIFEs$Rf$FsniMFyOGiKdX zIX9yi@xj~K#7j2+29vz!W827w1T07@pg_v2?22h~k|Ih-intkaBzy}O+oziy}M_LFJZIGCl1cUN4?oyi@#L_mo_ndL(@GC zpqg36?2b<2SHBgT1dqPB8>|V*!ZUR!nunENd9c)`NYwt&u7Cr1DI}ox#v&)sb3McP zx$rjo2%KCg(=~aK$y8Qg>h<;4Z>XJjd>*;cE}l^E%~KdVN^zoc{_)M-;8M6C**-& zRk318#-5p@(W#%STn5QVJ#P|$_UMHxm5=-tLccxolLlOn6w;hXG>fu22%}@5nP)JW zRcsDF*x$zXzQI~dj`YKHf4_t-+IIWX#*rK#zKDzHQ3y3NnvBY0}u ztfzU7(u$>heuT%Q#dhbzex*Poa&cd@;gb953#B(tR+%gca4Bs#ff#3671_&v6Y!f7 zVnGtcx-5gC$kLm??MOq#yfLW&5mM?4o+?Hrfz475PU8+asa-Ot3xR7z;OxklO_$%X zKZile;oZL|4^RGl)ssX*rDZ`gm(=+TvAp83y*)3&-Uo(c={1`oJj(cZrN95|ejx|H z{BJ_+;lw8XRds6mHAuq0aHclnk(lixT`D%fe6PS3_~>l#r|4a*kor!6EtK?K%;Z|| zdeGr6cjoB8zetJg8b8k6IwT?W4Y8_G>0-EkawW&&Yms;Z)%ni1K_AYqH8E{zlXEFH zZJ_tgkSCaz^U(X}X@KP^I169D>r8NC(Qh#P^*^t2ocNOT%@q6l<5uwdBILNhpngMU zt0!yeuhk1YLaf=&@H^ape3<$}|6KdQhySC%|1%$k{Ga&n|KI-K|L0Yf4`*ee4kr!V zhKePji9`(i9sPgc!;2N}a%z%F8ZgH8BR})F2`3CF-W`U2Jm9t z?^kdA&3r*I?|*pr{gfRr06+9P6Umrb#nFEz%sbDlN%>18zZ4EGy^%F&U1*5;pP;=f zHOlXG*!J`&&P-oGQQsSMH&2QT)UWpVw)Oa0aKBdW;L!Q`cTBf%7Zpj|A>B~EN?u$x zSM^Nvtj;}^Hut_8tj)bnrsS$ctvs`wvv_}(^xvC$tNDP#S^wLr{D@+5=h@+yQJF<6 z@lDbnWlzDaM!lz6dELX?k?pNq&ul|mQT#u5Zkd74`n`A@PtA8tAQRro5{b$33g0C{_} zK&0B_t$Vj!Tb`A^nG}dO{JeVEP5vI|ck?s^<`ojZwCSS`dv~%rT-JH#=U4?m^$ZOQ z&ZXdV_6+$z`lSxcSw9i4KN$331lE$hsXvNHyZ!3~5x`-ND3qPOf-N6SjIlpnUSriE zh|SbTsT0S7+=u!VRS7AUDvbjmHoV*`8k-6|b`RTrp>kQsly!!qtDhomliro>qD#l` zY4Phb`MVmKL)sdj&Zk$w$u=$y$}Q z?i*O^;e=aCe{`ukmjT4&ea(LfwnXr&|J1Aq?GHmI7CSC7GzoL1p7;nvig0Dt&~pWn zf44U}OK+$LBK?twDLNfB36aPx^P@ivJCmo&vc@`|1|3Q_7LL2!mN#vm()O(GCQkWY zLO_e#XCQ0s3Z*>f=$La7!Yl@UL&t^(@;8(Q6NvUiCgOJ(cz(r!F5F@;9C!J^^d|kkna-GnD$u9uP{;o~ zn2!71XGP>T5d}wCKsERWcROEzM18;m{$UjPL3KGvi;ZSuKCeJR-H6myP5gZcN*&^q zn*|+fT>KyT?-(P$1Cql`IN@X7OhIV1V*@fCjAtK*o9(OkcrE5m7gC{|<~1b?^7$R! zxBn^}ti5m>BPkNJ_%9>pd=wt}00ex-j5wt;L)`uBR+lcf(h{+IpjM0p_3adeL=`!w zdGxjV>5wyTSaTZ!nEn2M`A1Khr)JLY85m5t`2&s0TQ1eRcC~*a{J7=wq};NLURVqo zOU*ZLvBYHyDb~ehARu04NgQ#kyU@w`u%X9Y^@U>Lj`Iu5-@^~lS#`BEd{W^G%BZjWa=mwSeDY&kg9u zus~@O=*wC(6vu_Cy(iu=1ydpNteKOn;WL@Gv5h?Eza`!4lo=;LJ~V_-q4cFjRB-C( zZ^HPwYQ9T7v`3#$J^#Yo8Mx;{vewb*iF}=vlrk+>xakoudAIFR*}oVTjJir>OAeA( zC6`=Cak4Y&`KXH7mpAsQLtpX$Sr1Fi9D5usR@LG=BxOc|o!Gg=f^K~`36IvieMx8& zt*US~Df}vk;X}-du;dvVOo|2v+bugp8LGYN^iJgMzE^dVQpaG4mO9A5lK|ZEAx|kN z2foL#9IH4;4vg9rvZ6iqyQd{6O-Eec*c^RBb)lVX?m0U?SKgL#{B#}4%Z=gxZi_}w z(;3~s+gzsSyPQp_TTy^FN>pQfWnLJD;N|^%V|{l{*-OSRr&H=WEC9wkAY%gP`WrPbu~ZO*Hwh;-kB22kaFT=An4-TPUxAvE>J+ADR*63S|^t|H`4uQ zG^>Cqm!afpmAic?wCdm%;~@rqua{b+wQTV^C^&@M*W2d>d-+HEs--Ua;+L{h{qj%} z(Hln$`_bbUqMw{6*S;LHQ{#WLDyMzue4@Z<+1{Q^`e2J`h@F+%8UQ>CFh4o_CP zs6oZL>y+~iUGzG(h(*b47cIVhv*d&zr8M5}reQ3y0nndH$GaPg$K<*kziS=Nwl+7D zgTN0e%4o|#51wNPr;TeqBDDJ=d>0#V=V`W&ol)5>eYbn`$-4O0s`!ZO9866~w7r8< zScgMX4q=n@$EjsYR4BDe>4Ka1@9)Xy2Z#0hIvNbq7-8dsCDYHWUA6tQUFLaDuB_7K zZ~Xcyr-)J~hJM!^5U5r5A|IEP#Y#wv1eD!Vbe)ZEEb%!QZqT;AGzh`T-+H^at=4$; zYyImSEH_Cm&m3AHo~>-R$7!Rq4Z_uaW2D2#(HsX1tKN62-tFzW%!Ar#3+;Ae7R~x!t$#2TJ6`WseQ@kM*!iAjIF{&0maurX#5g?Uv6ZL;%Od#z_6o6n z-utX2e%~yP8Ft`GDg(xbSk{5j=%Fg6?<_9%uE#j?v-Dpua!VTZ;5km`HU9A`!q{d- zNty>>kLF#kcH}$lhp^ld-FnyWkfj*f1Ft#}6rW^is$jq6n{fNm&6TyS z_s6a6!!D%kxOkq&=fR)lCPZb^C_jzVJdd9TR!nG&V=XbVdHzCnXm}_$K%H;gefW8v z7lmxnUHkWS)*$6{&)p1d<&)Fk^|YEd+KEn>;saFg!Vt~!gk;zCt^@z%-4x+(-oHTj z+}VtJJ{mBuCZ%Aa)Ze_X4u2BYV^AOV)_gGkg@kMx8H^BRp4E0YV+}01)OT+KmN|O< zAIjdcDb6-*vxN{KK#&CYV8PuTg1fuBH|`ePJ-EBOTjTC74K(iV&hYH1nosYZs;TN9 z(bu|hU^}8|Mso z(pm6NYmJM;EOn_WJ(Y{UY15tDX=3Skc*?6%OdlClVhAx{yldJ>4;?#;JdpZmoA1tq zDMd`JuCe96OI2hMfMIq9l(1t5jk!x_dm^kIP|Xr%({#eHWwq5Z{>FTCkJ;tR!3o?3iYoQ9 zNYIv#ZGXhQ!$TF-coKEpn>%)ZtTh==K6z8V(LzU>B~-f}Z71&6HD2~Qlpry!!PCd7 zijJUpACrEjIX7?czlh^~U=P1nxex|ar%pV@x|YpUGh5`|&2Ot@ow(&J?y)-Ucy1d< zBB=yVBhH2eTh&9;6h1q#r6KWv=?FDM-CJxR0M_i864@<7Z5{4@R<@nwmI@=5mFjZU zrbGS4867~_;r6@NO zM1|_(dyh>T1qb%T)^h|(<=-+Q+)#LChC;eu3+|M>AblzmkVDYNtazOos%{tQqTjDA3G&*qKS0u4)Qm%%Xd<+bU0$L68$gF9({ z!(yIgqlG8&y5-7@Le|Yn2p(sZb7=hLMyaCNWyYkSV55KSp*r}F{v+rtSPE8(R>Q+Y zY9s99VdbPCG`dcP>Rf~ApJ}wRDuZh&Uk|Cu*@+g<_gqlRovu`WRlcx)o+@TO=Q%l1s`#&bLYkgkuBYn%fcZ1QFL_acbjrYlx`@GioAL?2GA?E*XOi znI0PT{TDr#_pSAR(K|d}I!v{Y- z;g+Q$oy&cBo|r&K++}f**rG?kP?Nj(+iFcXXzYm4DghFKl~{_{C( zHsd?0L%74k!>vN(kFucq^JUc94_up14b3FxyN@B{M_0Cb_t)SLA43B#KwUjYns96L z@ko)q9k#R8G{L4FjSwGuRt+qF3}>uM>;)jBXKtV#Y1I{0D@yDn+FjnXA(X9KW^1b% zw9Yz1h&^>L1A~I_GPzOBZ9Klbv#Tn20};0Tt0w4An;KWq382jieS~0%493HM$(eSC z?NiTg8ZcYR%DF2DHn{&e{6pzLk&~+${ah-1ug&nqAO6Y)qt`OlnrCOjxz~u2A};&4 zFY3W-0M@hpElwk+Viar~Mq@(fkbQCpip*11dZfgUD3H>%Y9y&Z8j>QUnVkAW<^{h= zTvn0Nq=|thFTywa2L0l|g=I@(>S_nC@@>wr6o8vn~E0rD)ox60A z7vEH*Yv#}k+ax9*xRog^g#ApFU@RR>sPgTU?ovX=!_ zCg8r5CsLuj&|#aa%UOu$rPE~c$f{JVd1|`RffvT0fM^!&(&f4oegHj`D-^7QiP;WgiSjKMz)NM#p|X74 z(}jOp*fk@B**cu;w!#;4&*x+%+1l`kj7CSAQOuTk1!WKvY)(fX^h2{uE-#Ez%A;JV z8>E`a*ZWnooyhJDC_!lObBlJzyT9W4fSIQTv|+$|F-89Hl%I$X0(9!7W@{@4j@b+7 zxSYJAqhS-fRUpsE%f|ia*g512nS2~=N&<}O0Z)B7;aWs0U?W;`q&d(~@BzGEpR8u;Q`P;Utkf+790 z*4-PD;=are1z?yL&TGIw1c-TI#V@50!Rc?TerpziB7}h`5c#J0UQshC8eFVey1Ye;NkT< z(<9JC)$L%I37Q`}MWeb+Yr6@Q`S7BHlxrg6^DoOkg1PqJC>T1>`?R}~D)L9bqAduMfcCy;?2tzIW>{$*ldc*rhC@t8p(js9AI01u$IX6SzlIK^siUZ3&=!%NQf zKpCNjq(rC|W8?ch&9m&=fd*UjSs~m*WO2J?uO#6g z;v3GMvYyvf zwD99#gM32{rH^TN${hk$HH0uM>&h?ko$3YmssPE!p zP3M>bngZ94(7yjxsJ*lh%taP-Ceepau)(IU`~(}v&bT|5M@M69)~+|xd-&EFdxHDr zb26?!EeQP!g&5X_SRvypuE%AqoXXWbXiFZ0vve{4oRnY4v?|h!-gDLSwMX4VL2h~) zKvOXY3Z3Gd%=~U0(+-IBlnf{2ch{i+P)xa**e^&Cip&pz=7L$h9ujwlWtzad=jT>v z>lG_)ine&az+`{F8iCZ<4HllLePkt1dTlI}nt$07mR-y_KbxC3Pv20?CcC&QIFYGrB*F|GZ0m2DKX;8Lso+V#t?z?9rxp z9X@iLfphoOX@`U?SfcO3Li*QoENE|zTHjAz!xno$zIi`5KAVAIuM%{T4Iglob8j&$ zctbvOdzm=8`o&$U#P#;)L!~kK=0kN1YnCK7{|*N( zD^CaPQxm3>*Ld77$gb0Rta)M?BtGlRLLd&GgErsSu?^ow-{8Zg?ICe+m;d5GTR$?y zrdn^z2jYJin+)uXqxz|`_zzb9&lubI|AMhO{$FR#61Zj3b^GtH@UVD-!jLA4!uG0o z0x0Ol%7VWIZPo7bJ_H`B9^SM-j=-|E;tMr7u!qMI4b#Z*I6D(D6A1~kl$Ot|dC&4^ zBJh>)62(VkU4{~+@WBjMH$i?k+T;Q0aeXNVkwIG(jmPA{O| zp!AJ_6Tg5T!Gf>BJ>DBJpF#_I73Tll2yCCX{G2*l0Xsh%fzef?N;U=Sg3}l?#|_^C zzs9LT3sU*oKEQU9kN#Y`2V{L3E!5jSx6by*#;wQAm-zqD?1ikG+I9NHu9xs^OKo>m z%c4)3?T`%i>X*adZ@kT%09ti@tU!=n;D4UCoRuGvK6zyC_kXVgJ4?M2-t68qp1Ata zbyj~pzs%S*+d@n4<{R`h2`!5^aqxAr{hr=P#=n~QKbl>+cKGhI z%kbUm?Y~H1R4{*$s;>02(1QormezGi72&R8v=W3q6s<#AN7VI z#FqqSJ>$s)FQU?=a_%YCVvryUy);q`1+vmGj(Ek<%!xgFdSZj~LaUTj^D9mFd=WA`odMoACrk8_bOiGEc_Nlhg3RgAc7NlV!cn;E3l}Z0 z?xsyKd;XU<;=kX$E#DD4RQ`zz&Hhnk3N>@)K66%SifpJK(3O1bu>81D7bsZVzLpC4M#DmNmf4h%l z>IM_I1#&S8mNAC3<~*bPS%Fx2`*U{Vsj@K<0h~J5jWfbx-gK5!6=XmBd^i1OOT@>) zYZ;h^+3bO24ernANPe~J(chNjv)l}5#p)d3$~|O0n}~>fqww$5K$u=C0@AlzT*^=I9cRYqa)Z722HdNdAJm-L4q0ymBjt6H2d`O0x`6w!z4z%5u3C8yGml`I;xo9fJQRJy@cm zOP5#I{9TXSMu$?6%=-0~qWW=5(awFlFrFwYx8J0Dzp@kvfARWW$DXvAFq!3IW<_@R zlv;Nn=~H#7>&9O+*N1gny6K{*=#=Qy10jRhfDoy8w(X5bFK3;q(M5u#^(eb?0CTcu zci=N0r5w6g_oK;DkKE_j*Xv`VH&M*JeQ>pT!b+VX_1^u^dTj<3w?V{R?~r1@AuFv9 z{bU;VIUw5nrlb^A@B|%qIaX=YvE;~B$mvF9ELLlc2DBbNm)W9Q1i^U8Y+jY%9E}xZ zVme5Ulv9`>;_1R9H6W$96}I&SEZjHNY0KO=SHVHGg^sbAwTSpjH+d++*6QZlb*FBY z*ZS{OTB+n6@~A+YMgQnZ30nqBMi#BIs>%w~*kk*b!|0)O%{5l|0s!yF{KHiAsp3O5k`o`Ir!sJwo z6!Dny!JGN2HX0!cwCArvzZ?sjS#)=Rv%_1nbtwlmpL^1ddby^4o<8Y#AZl`bt@AWR zL?1P31ckz?y7+JdH_Sa!Y=ebR+Q@-U-&d4YwTE0J1sXKK#gu}zYc`&FWzyYdv^P^J z{h8G}+83dkT%HB)M<6_MB{)p=q2t2L$&E)I%r8DPux;S+)kKW4|NC1>!lR1qi*4^$ z4xY)?LN++f$p|<(wsAeZ?w!S%;6y4HmSV^ge9@+I?L`5D(!W-9ff_UV^GQ?aOeu6Y zUbs2hzldSan13=qe^2zrx(-=)i-3V?Tp70iP_#IXR`%*JT~cv%Or^7{=(5GM0g_j= zw_k3|S=s{DovR^OI5Aot#83tAhB5!KOD#gPA=A>mk6@RXw=-1hcLxr^Lt`Oyb19d* zdd9rFco-JKt@#XeIt4UiiQ@RFE8&r>^HN}8jsri3^=2uoY;n@xhidNrX=cN9IWpjQ zPMcI>4GsYy-QuTA#K;)oRy8D3k&3fbt;P~W-T~v3-?RTPn=ZHGSsj_xp*|D_>FT%# z>rsy+GY)o=5BPNboSWEKu&q`g9qlFX!hVXnH)vp{kTG@XsNhtnSA^q}tl`K^SG@4C zLI()jcWQ-cQR$&m0JMG-!8$m;Yo_oc?kqMNuey1LO+coA3Q@1 ze6vTz!s|eDA@yPbRXbP`fVnH?7pe*Uy7ObEJ4aTqtwZ}9*C(l@!F*10aP8dk8ky)j z)G%cWWVu;~`vv)W|9Cnu5_@as8mimQ|H1yun|_8oJeF^S3kTx~5W0Fc9h`FgwH5Wo zFs%QxwaJsFiJf284WrXiM_P|QCts`_f{B|;1$FPvz@aZE3oe^?e#6r}jP{BzJJ0`7 zrFJ#6fT&rF^r*=R8xTcs{@C-l`hASD`Qe0sU*XHSX!}5MnO#riTq{G9K8jpb+~PtzD}j8)!Pr0MnLGKCDt_O1h8Ii z-|L8YsPoFF!nvxX2eCU0O1F<~pHFV?)ElrA?6g@jDDs_lWVxFeLIbuOJf%0fqq%+S z{4o)Z$~hnOrMw+OQB)swJ=8O)irG|8}Qgd7cv(|3nSrGex?!~1{ zAXnNW+x2bxuY*nBs%L#k8eH91Th?;Q)446JzhjN(CigOvwO}n^5q-OCW5Fxj^2ACk zw|31AC9P6+yh93-+`0Kb+Ey&^`J0C70AHX&4Cu3FsdjvGWMZZ^(A~~q6&W_wAFBBj zm)NQlK!wWFf$X9|LMv)zfIe-`;Rb4#&x+|~Zhu#HHg3*v9uyh~L_i;0V?Uj|>&QNe zd9iRlqTwsuyN+CCOIDMkgB!~os43HQT3U36*2_$~DqMVG!R z^K!lCQPk%mVVGO1(@I&S3-HGTsEM zgmn%(S#tcwV0Bj)Snji63N8a+0-gAsuENg84DuDGY(umu9SYWGdd?D3s+W=y9pt_C zAt&Oq+ncH%083s0CAN`5ZrKz93Y&?jVZ2>}!uySNlXYrh3(s&JM2oDYK@&M1W!4!lLe`i>#%PzI0|>ze)>u@oh=p;UQvHrlSD0RXlz!D>wX5Qy2leFIC}53 zo{=x&sV?u3oMt-t;EX5U18pPKHcqs&2Lt5J<`M2KZ73H?g~6~7@wpIIUx{|Vx(hh8 zf7?h5O4@*ziQg=znzBX`ME;@(>6zuOb80IoPiUEuy~S4`JNf(z>J;(%saSI=qARbF;j{!gBtrsdjLCb_)hfcDx*d zL=YuV`A;@i%!R*o!_}m!sq@wG_8YMYKXgOs{^pnURseefqc?8&Ro7cie9hvNqx2C9@xU)@}b(G{*Bd z2uASYNb$N-RmLpn7Ndo+QblMaYc0^berfirY$6%N5Bi5{se7_Afps#)(0tffgwQ74 zWNmpd*17eN!c^W`Z0&dzOkP~uiI0tpUH>&tCtm`fdGw#RPwKF<|1m*FSIx3=N%`tVxp~tFZC0*_MpUlRg=eQ z*xkkNrH$Xe;yOiy`Q7o-x0-e7Q8^7FzuQqWcmrDTw)&+h7uJ0Euu(?)&!0jtiMHl< zxL;~o2Zr-pZfuYT!qw%rxiCAqSXRTVCW)(%BXI7qW&yr?+3so;c$&X!cM0WY*Y%xL zuT7IFuZ5NBqHBUL|K(EiaDUBPX2va#5h6Us%}UQSBZRfR$}4!Jv&pqlrin?3V5ugXFkzl||NNgrsSpm}o2WMm+YekE(@I~U zSUa9wfBDxo)IwG&)7CB;xdTmOJZNAipV!y22$(h1X(IwP9ajvqzs9yKujr3*%PzLp zFzdAsiqM4LX<>5qdt~<7qnjV?z(d=@oLPwgwC3)$)9Lt|QM;mmpbK_2`uX45Pk|Jp zGxsiX*}}yXq==o5+hUu%Hyo(6=vqpiZr|CXb-OAf=*C>4f7u(s5B=SAuA`!OO@Q{A zR@0LRdwn$dC2TPx45Z509f4O2UNiBaN>r;%+oNg>5WY;Dzb4Gr@#SkK!UnsYvnyUk z<&R~$@Wod;?FQR6AQr5(^(y>JTB(2)cR#!tZ@0Lj=sfXBvXz|xS>O7XGNI2(jAD4X zm!W2g`lhrR!dF(x)`B`fYTv#sXF(7=aA(@M!7N`T*I)G|+ujWgtF!xUUs0mrskBxP zZ-nW_JuQ&vc4~QBRC~f5*n;HR%`bKOkB7<)b{J;4D%sh+?H6U<#Mx`Xp7~m0kfxn7 z1l_-P@oI|@&GzQ$UyA7GiC>rZiBZvrOdL(pGH$@nfZf-#@V$#+bV-mQk<`S-S z@rVndX_Y1hy9mS?aCBbI7(n-9e)p4Zl1~BL&PPc(()`;2Q8Tq zi~cC|L%@giFgwY>8Ot*g41!d0+}PwOxbHPjOG4=UvliVWRrqBaHoCRsDS9}4LCcmc zA^{NN<$6*@^fe(s2V?7alSodJJ*vJt%O9L>tXQ8Y<={70p-t;vFqa~&M zZvuzA8o3lMKNjpo*H!D1W#m?HHH)sJ_F^oz?$C@a7fQKUh+rgbNf(ogpjgS^$iF#b z(bNMqUe~DSzQrNq3$CelroC=WrZ*Dkgu>;3n=V#8JFB;ii)%igflA! zy=&%wo180%6$>@q%NR4(p;X=T7xsO- zTH_a8)-DqSW`xpP%_wy&^>m6~k+Y4Ao?talwBLP?v|L z_!f44Cw6N7h{UiJ#;M2g9=Oe~FHlCxF zIWjs?o^HfZs?$0PP4O-9%q591Vn@`9^*rI=wc(knbzN}NI)nT^kJ+F(w?a_4@YCs= zaekof2v=eY(o5=gg{SK6v}f78+qK)iR$7X4-rM?0mWz@^VpB}XJObQ{>2~R~ZB(6Q ze&N})Rc8^46Z|ti*eo*dRX^A3B0=_VbY9z2#~||x8~4v?$*JoDlwciT?b{;Z*{4I9 z4jLNK290ZLLH}gN2f6+)~{Av)^U`{Xexp$nWzaG+yz^|?N4WhY6{ zdR=Nvv&SE#4N?cdP00O?d4-Sw-Tf3RD^IohcHXk92!c!J%TODr-^vM1U|dpF)-!u3 zyL#fj2h!@z7~cI_AlC9y{ypi*GBvOD+WdD2FC1)nnWCFZwf{(AT{i++&Z!rs&3v zx4uTN*`Nut_Y_YNRDlEbSkv*Lb1%){Lw@@gUx{@PGU<}#hrs*Q9v4UScB|GoVZ)@W z-B%j zXb->i_tlGiuk)c)3ymZRuCMPhcC(Fmf&JsrR$JdJG|yCVFFp=v8wd-*S#B2}uVKwI z!<-xI6YqUS7p_<{w39!&2%OSi{x?#N*zk4sO*>q|uqwLH6Ftd0JC9Mc=tzBi1pkMW zTNYX{w?CKB|AFKG87UM0U&?|U|If?l|5Fx(pY)d=%?b7Y8=CiJ5-KP3SAvqOsopJN zN!!WGd*xp9)JTPn^Q2O$+&VfYWQF=w6(zCi_i5#S#}v}9f8W7f?_(byX`UL-ZWhrm zWS(IUcDfr+Cw*7WpJ%SiQo4GDEI09H&psI)*T}c!SBY&~F)lB##JPIQ2d?iy;>(!t zFPQHlUcPUeErhxb@1_Gj7PGEdS^s+0lV{Y(oAZ+$eDc<@I}enj$|W`7!zq1@YWp+6nQQ=$DI z5^=lq#6fZkNyV6{U0&9>gV7gvzP<=uT_JieF~Nj2w|7T; z+54eScJbM<;9EjH-+Gg0gZF`?{p?l$_n3yly9ipa%FgYpL0#4csf^Eo&%4YF7~<=} zo^a_00?ZwP=*3%GQB3u0)h?;U^%93Szw6$0@j{=Yu3%aycr{TN#!7zzCR))PwGhXt z(GLSRY8(9M1La0OHO>v4+|B(Fh~@7420q$(eWmjD;q!PWDT#TQyhwQHd46c!21RLZ z@?{L^bsg)q>+Ofy{s8Mf-|kOycfLzQGP{Xv5X!u8aEc5D*J6YVAwSKU&P3b}SM8|Z=X$jswW8EAf@CsoeQ7Ycb@&}NK5Q@FN-}udT z^!w^`eT(k~=4MsLi0u&8Aqcxyf#;IR{;-eq&BYMiGI$Bf@|-bEhRwJp&+8a7`J6h< z>_4|;#r0U!bTXL5d@s7=>4FnWc>G>(TavGvwh)Ll3h}C%C3jf6Ae4Y?YE?;OZsZ3y zFlr?Sv!4rWLK3#g-S4fPR%~8DtSwujpmTafgcJxOe6;>FD=s%y3WMftlbbg16Nx^Po?sXv7O2&Hsa-Ndfz3 zyy9)r!s}NKWaT0EJrywXB2V8SD0Hqkw9Bs4@rC@L9Aa%#XK=742$LWHp2=Ptua>o4 z6|J*82iPfpd2Q@1Tl5s0O@(MV?b$qcA8SWS$ca(zAD)xwhv7bQ}XH%oB1DEo(AUcTv;k*?5Z0TjcpU#Xm+uoNNIEF_GL(QA>&q^AK zVKuTJ{#QiDyAC8X~of| zsp{wX{G)b#T;))VWe$x^xg%4I06M>OF8NNKJo|F%rK)3!E9R+xvw<|S2Mo*&YO8Z> z%UK){U702L*FxFob^XMw4BMOx9|!NlL8z_hCSdqy5sYn?{kK2QM`6D&V}f7Y`#O3N zrU(#IYQOvsuxX$}c^91-x2s+_lhb_ljDf9&xk>6H9c~;aACzu>bJ|eh{;&?e7<#Ns z5s4{J7E?E7AhcHxw}hu9?Q5+v;jM>V+F+)ghQ}%xT+SZLv-)sdCbOii+fFWuPMgzN z8sDQ68`ZG#*S`Muhkg_j_ylkDgbb}o=$R$cknyBXb@$3%CVAi3a2j=LM9Iguvk7q^0ipPn%lGE@;O`-Vfy*mP+J9KmNEhKMRF0G}`PGa1u2Lfg z^?4UCn;DgQ6`eKSVd|f=YR&^cir3Ycl6{EcqZKC$Q(R&;Gnwiq0pZc8@(^)kH;3P?%eA1Y%mS^|doPLiaT(8D&=-xm z(JcPD7!aNH?_*Ild9b^PunVNMr6!lN6rQ7bbsEEJ6k}W(^C5K?pfnx~lW-A3o&VC~8o!%<>+91QfbkUj!yEy0u z=EpW)23Qm2cK)QPf|3KGA*|*!5qvD(bsOiyQ1`uKEy$cPbc7Kw#)jTq?TslF6i_~x zLnCzG&FSF6cXPF}_ho#1^QERB^?nUlo=7thob3+z4G5HjBk}^Agm3j#^Hd;pf3UkA#G!rg+x)Syg1dHnk@MlQz-?JbLz^T zX+#d2KjTOF3{ROCP@0mXb&kI`wCJ8+-fTvV8TWk0tlw`@#w>FZQIp#{?hpr>O^VO# z?kUCINhUwa7SmrQciZqSNP!!jYIV&z3|*g<7SwgkiQpuKM32gBJ=MU`V>&v2)3yWM<8`6k zc$LaPT_;U3(Hi1HYP{@Z_=(5Twt*%RxV`$?Os$H);pgWjg@W!uPr39qmow@jJ1wfd zg3!CeeBC|z?f6RdQHxzwxO19DC46wDX=v;TB8fgxTFs4eF~+l(L*M~YA}wmyQq`d- ztI4|2;LcHT-4l3X`P2ctlnt}}+{NG5S0oZECz>#cqe;8 zUy@C=n~>iaIOlAwdp54MF*Ys0T5tqyA9#6)7y4a<_3KnlO?mxwm-gu7CDcs1N1$OF z4xn>aWtW|4NZAgBO$@JX%?=JUN1AvDKN>%dasGM-(w6Xi0$@{iqv=Kw{gBmxmgtzH zZTMNwf|E?MigU<>PkL}<#BquM{Kmd|pm1@n2IHW`VXSq<%D7)OA2(b==hx_t?v1`a z62`Olh0FbT`?7xn9Vy)%__|UKK~< zbpBn0JWRouYs-L412>@zg2H2U3nET`&ma=&Z~m$HvHmzr_ISYB%NpOkkz?bBYjTSr z-dh;K1eGFm%Xt7bltU}dR%OB`BUrKS$q(rh?0|#~`?a-(#UXmL<2O^}cQ0OLRv4y# z=C5%vw6Ip@#4s6LGS9%%cLx!0-?p43Zr@$mJP;2dVoD|7uE zqTpl=R-mmJ;QgKw__Y=2W!i4F%vY2m_Pn=}IU(slSNPl-Lcq!Wodte16y)FK* zk=$K=L<&o@N&W`+1#UVb>fBR!z(ra+i`#lyuY?CGvv^fhM~9T)_87va5|Ls z_KnS^&1UdpltMl)F)MNjaG>$C7)ijyA>96j65og*IpO&d{u zV_r~|V;yoxocs^M2M%4gH;8u_Uf1BylsV$bcqG?lD*$PA9VK-e`n108M^NUmCED>~ zMOHpP1P`iRkxZ9aNW%JuwbA|CQirE3?t89nz+b_>x_!L#PVcW_)b>OOuy}TO#Q>&ly7GH%9`#S|ESRCENRgMv}|tW zh8Z{cHgLK6%xgG>D)Csrnyax<%~)sOlomF{hdC}eez$g8ZlB{L+Pmlaw4MaFZnBzc zsmX5~tS#sc%QbG*sA?<#BtBHEa=nG;crf_G9Z)8Ah_3!cL@73NUTNYC>R=`qeP#|H z0BYA0B_P#y)#Jq}yJz?S1$O_-B?Y%x*Q8~Fu)?gQvIjDc0B^aHhiCf-4>oS6q)@Z< zE~+dktrLltestGXw$OaZEe(B`^~u!%dIck1m|m1P_IEQlH+<466YnPB_tT(|Rw>0< z45LL@-T6Qx|I-PB&cHI{VEt;A$gy4;ciTIW^=5V{1Np^76|t&Bd*@jZR4H_OB8n@W zylHK)$h=ZPnC`a=xpF3saV;6ACgp5*o3Y7tRM?FDbMuSnlmpLT1A~h?#W6sbCL78_ zOLgZKDfKU1&`7zW{yj54U3p=akXCo>O{UgFPI`&QN*x}Sv6$vBArX7rSXd}_E7_U@rS3WpCGbFwDPVV$bWC*>0z)^xIomHrj#k8zQc4oF~TMAQGd_Hr&O%$}?_-5io{XbT~&7!kVe6BWAS?sTl%S z8e#gim)}F~g7Q;WMskKP|Iia?1mzjbkNrm?@-c>7=!q7;l)QC%C)@kMn3%Rn)1HZj%Y zqn>C8bFBhFc4%G*akCnVObt7;S$hJCop{;FLcZs8{>L(jy&IaH=5PpHlrqEWCVd&7 zYV|JEIKRt&SZ^5@Ek@T0pM9V$Jr^5gmRtUe9H*nu%Ju&vQ~k z;^9b8UD|mY5YEFzn^-xuVqDTXkx77DNc^pBaQ5amfE$euojdE0Sc(J&G>ri_soN-EOC=c`1;{Sm`e4O#d5pF zQNqp!V?1>x{Q!quyFbzoE*#5ZYK#~!qVm=tl!pu@sx^I9>{h1xa%`91HDS*|RFn(%iz zWR)#)-VOhX!{?_k8mQKfCM!o*|Kdiy%o;ViRrXU5wgn6t=3Po#L>rN<(BfGlQsZ?` zS7=4U$02m4z$2@2zx@Sc=!~BArWddsLS(aQ!a&^Ie?5)urm6WEnDS7OGBw*xH@6_; z+PHF=c>Nc~?w+d?$c@{@MSCv2f~7(ysVpO8`bKpWumaFo`MY8*AD7a&B#J+sYvyD@ z(6#hdN}=UOF-|MG zhroBVWPYs>s%GLGTb_e^tTImnc%xtpaN;bI2LEQh{JmSy-gYe|s2xIuJj73M_W zZ0X2`J}P8{7gZt!&0Y7Z&ViS{&7-g%AqA|82szKtM2noBihXi0D}9lKqe?!sVG%HC zt_{2IT}J(t%OqCB1v+h&+HOd?a`*RYr!NPU*$5y)!BjG{o^iR%t>1jA5qU&2YCz8PT-q1o zhGxoqUlEkr)~fBa7^?S9jyDj$n2SAZuA*idw@rl&3Cm(4z^7l>;_6OPDHbZ6hFHf5 zwl7!Kx9LIIeV(OFVBp^funI>Xw`x)M2F);OAHbvU-uq12OPxqJ8rCE}L8!2jnS}?rRx*R)`j9EaV_k6W8Qts^ymy!)VrMJgKaY4)9&p%BOB}DsA_I z1#RG6pill8nFa5|NXy^+-EWZ;*EdIj^a>Uy>P?U?ob^3$(fZ8{M}pmFX7A3mKE=W^+m*D~B{>-0SK8^kupLk#CVe~unq$s2!HPSsM^q~8Va z$DGQYSk!L3j{<*new=$65UAPZjob5a1r)kvcIA#)n#ySuZ@7c=W*l)_b zC~uCRv+4gx_W#VdKR&(D|9=HQ&i^+#w8qMF*|19&SnkTz&_Q2S84tx+{wumdh9IQK z4-^*8%!m#FhvXL?tF`v_sTGNbWJlmy(0>KM=gLyc1?4n&L-c9|u;joVhy%n(tDwIIxYa` zuf8^Z@@>|-m8FZeq|#I&DEqIq1!ofXzjxo|4?bVw_tX!*i;wn-Bs2LpC@5O*IxJqKsi9^ zxS-2RrOSnXFZ6;K=y^1kZoBbxX9iE>uXgx0(-4!Nu$$m5KLb~v?G1XhecOEtJ2Cqk z9S{QzqJIvNI^o}V$u>%O`+8~Q^~!1ky>((VUQBNXQ%&)m*6o0>=VxCGi4V0`jxv2) zN7ZL-aR!`Qw=|R=V>?S}M!F7JT>Z;32~1cwmfx?J98s*Si~caamB`KgtwS++5n|0f z2+%6~Gtk6Xn%uR~$`i1P5l!_ z*&)*|quaOQ0zf(L|_&BM0%vt)2shVxeG*q+;X7v5S@@gE~M}gt=+ODhLDP zjCTtw(No1jb!Wyq9oc!E`A9=YV|Mm5s-;_$lHlgZ4n~oSQDAlhu*IjV5Qja4$AVTh z*`%tF!9+(a=D@=6cpDs{v$`?zXu+BPL(<#{>~%9^sK_l-zXlO6w{zlML$Mzn_RUp5 zgtz*|j7)BZqz<5BwNCV7S^(Ek;+%3^fg(mW>FKqN`<(7SdGBbv<)Uc|StdS0XXV`7;BGwPO0;WfYZDX)I^zRKW( z&CW4Yd~AY%Q$w{>D_gwE&s>!T5llol6*}jxDou67j7u()CFea&8MqoTII5UaJCd(Y z!S!3M9BXaZLe(MrH{Ue_+^&ip&Ap@!!*Fik*^#AP6Cf>tpC+QBr_0mdkvrw4&9tb! zb$!RmU`>`EAsGE(m75_}&rkVoFryP7#bVnR5Llfz7+w{9#q(v!#9w{EwgXhCORO6bFNP^Qab87x6QHTW=Sk75S30^p@TOEtY6w1(z#>5gfZoc z@_KKcHV-&-WJ2v3Qn*6k+KTeBIM@TYq^J*W0HNT1I&>EDL^DX?$_y1E8?-{IFRR3? zH>y_a^paE6;g{vasu>9z7rRTKWY%rnx%k#9u)tA`i(wGhhMX7i^WKX@O_WEeQ3~0} z9(N?etvkaebWbiYkYf8^ipBK4Pl*SG3e|mr0aEDbw+R4wO&F5rs}lY-q&*Dd!UBEf zq))enF0$BopSX`aKxgYq!8tq~fFQ^OC?|AksV99E%&}SYhOsVZiIVaIu?zx5yh^XO zcE`e=75>Q3g?aI4Fm`+o+hm^?G4P5>p2tPdqbRqUw{PeW)FRw2YOO{+(ttm&U!siJ zPpgDfW!BSh+TL-9Me2a{U>c&k<}-foSgdw>?hx34uCf?X4 z$(;x^NYMFX9S&`pG8Wref{xp;T8WwmiACm`dvW>WfOP#{*Lgf?DU#dh4oT5ypRY@L zMTgof&Zbe}^v`4cU+*F)CF0=9f)ZS)4;=hOQ4t1kR6&JWFJpc;+Vr4-0s`WV!y3l= zm|Lx`SOl(Mu(_t&R6PpCPgoxvZ8m@=BSSQfkB4D@?4{k4%BZ zQ@plO9$qX#Fd8*DVMY?7P}1PTax~T}FsMpL#Z@xj|8Hf$^OdH`=|Y~#v==zowGzuO zLWO2A?aV#5kuTgxoin&lDnuiw!75sF?OJ1J!MbCW&-#Cr_7+fad|MhX65K*?Pk`X= zuEE{i-Q6uffB?aRyE~1$ySvl4TjOqz%-s9t&fNcfZ|<7vRo&IyYt?VUuBzq8M` zT|_0Q6!$3fpE7u|fM5BPzA%%re=N01c#3!Bp7MBiU2)Ge7EQc4KwF`tGQgAm;SJdw&K656N z#P}0!z#y2yPspUlk+!vKJR}cukhr$R34*`v3xU4Du*-Sm4XtSywMoak8I#J*m zs;vu?HZcJs3QvEy?dtKQa}#1CrcPG4K!%BuGn_c80xh4K`0Ms&LJ%_H}yfc|o$f975MbVw3ie^@Og zH*^}D`zhVC4eddr?Iz4j1#t7&B0`!__oMvxT+!g#wJHx$&zE^%8M0}ys=Aip^x6`j zTc7Vx*`N>lY1Q@AAnmtG>MgDOheoEjR29avZmi@HV+IO6%R;#n(CzLmXBR)W;)*(o zi}fsc!A;CHV>Qtu?pdbp6jN;rvn~~Zo1Dxc>gZ4T#|y&u37&f;o6}Aq(&V$lLrT1$ z-J+!deqOaW`0NWgLSaUY$j7 zYV|vw*k8RBvFyUHGTvp`gVG+{#g$qPR98UkszSAk@p?;rJAO}3eH7-B;WJG_VK0-f z9%og)L%tHe*0n1I8)UhUQ{laWF9k0xb?OEOn?tiJz0*p%WWCjJJ+)16V7_o&bNIW! z6A!`dmes1pyt!o(c{bmdbQ%aeZk8)NTqDq?v_V^;Mr2uJo z*MVj%bg5NCIW;z7Uy|o-JdXhpLKd!v-ilC}SeTBludxRzCS<#bibdx*_+`3$lXmMy zjzwDKd7-NG08)jdCjK~yc5YrG$%nLJuo;0~4l<)$hB37zaYd4xJjzvAxa!(l-qoC+W>%U?Otay*=-O z$qeqf{EYu2PCF%fG89n(C|sMtA>7#bdMJ+9^om5zUPwK~N!rCI#q+{$ltynokCyVX zRVzAzF@^y&k%T)+WNj6fe$h7-mH>HhemxwXtkt(R#)O8L7ti*!xp-FZR-03=S%>MD zM{o->ls=W!lOxyXR1K8cQgAT9Ys6?E}UR*Pa`5R8^yLH~{f6f^vS8l)HJtw!# zRl>(rVh}gB!?DAS`2Ix=A^(%kc@>VP`h{@>3ZWO)Zkiz$_Ue>V*!(=@2OHVAp^~|c zyv0B%6SHa~S~oVSkG%9AvS~+`40ofMPMtr^R%Qa*u-k5VAfXmib&u1=zDx4fgy*A# zpVoTemqhnG@98dtf~a@Iw-ub5&KXh#Y8s$Bim6ZfS$qNgm1ccH^l(3Sd)1}C*RU(J z2ECL~`JUC#ulv7#U1G1FIX`;O2Iq8l#faq_TC@gOzC z@JQt18cJ*tl=aSiZ2+|t2AmFWcwj5XD$t=^E_7e2!E~aUV8 z_jt(d?oSY9?K~~QD;;^ANhpI^0<$puQVB-h3#U<@dLu(+ldOCi`6^JB1~T^lRSF<6-Mh+@Y|~(x zW&~(yuR_)*PR1@b-M&qx*ivJK-b9T893Iy&aYBG4+@)?tGW-6UY>wbl)uJw~)aVca zvv}<@4*ZFfsvZ$Ny2CE$tOv?3Sj8v~04|rHW@Ln#aI{J5SQ4Uo9l-6p06-e4Jt6sW zlR;z4o}HB7B4K;0DpFp?-5)gB#EVC}$pFE=@Ivl!YNdVLE*W~kgeZ88DEG;ahXcWd z(DQPjuqk)oYJc+uIOJds`?}?k)>6)aY$fC6DKIjetX{#77oN<2627s4zm$d^6rqJ< z=b8AF>nP&13euOGmRO;R5}N=&QI+z&2k6i{`f)=%yvRenbr6+opohMA7j3oLYQl|R;5OW<>S@{o6$I<$_JOYdE1M^vU^f|s3uc|qG?Mp zrGcArDZv_=3y_N%KKbUfix>orGrfOTsu-l$TXyGN4`#zt!z@(BCz}WqSFG(dMZ*R= zonFgfhT;uj=XaimWLyP{>xZ3yRa|Bt|H2WcT0YaGpfz+gWE@_oLJ8lvfhNTPN^s^| zlt=a~H!J5c`W1P9;Tw13`f%RdR?-wda$?ErF#vfHodU^FNu$A&wz6F)yS|?=O9IfMCv*ZX>KKEzWiVa-Bk5wHf26|HFk=_7ov^X6ZzAma7z8) ztpk-ij^xEPZ`{TOnHJmK5F6J#cz*|RWjveP@2@djvcv;Gbl2C&uV+z)l}O&KH+*4O zLj~3C716`D2NJ0{-DOV+8?i8sKuCbp9c_Gbyw514_`Ha&C(7Y0f+OBJS0Efe=CmNj z$&KgmCew)9@%6Qb&ffCEd~vqHofTa79CD+9)$|k%zzjK0ZnD_N@E5|YI*EYU22}%G zbZfvE&EcoG@2m@^M&_pGEvyb6uk&l>3^0gXqiU4JgG9KX#ex5y0f@8Umr)F^b?1 z$IR_wEC;&5S-c@?0gVlIh2e-u>uFC*5mT-11o2qT;z*AG0I!5OcZPQ=n7?bzX^F+I{ zgkj-7bj`&O70R<{Q3|}X=5}F)yQXx?jT1c4B5nEm)0L}Xf|?sY)SHM;eJPDI$pu{~ zd|c=C0-FnE_1Rh~Rl`=eu9a7+!DTQ+@g*a_L|9~jqel@;XPWPDb{!A?*5uGEkg?I- z{FLSA-XRO@tIqq*65PZ^u@L#9qY(GqKeGqEkQ+KHwt{-xT(ywP37sbqmm5yzhbi1o zZ9U;j{i4<}TPR!zFR9Nr**aO487l?k5MX0Eh)<-ePsYx8_L*(vMXiBfsH|9HeD_X# zZPhu{`>Ra9HHa1J?)YrCh$ZXY^ZMvLXOWWE@eJsgKFajie9t*h!;M7q%R+U( zLSc!0Hqr_!dGl8-tm2=%Uv1ZYeZH;Jd~pm6Pkf2;T8zSt zA@XD72Wd`u;CHm+cD&+sb-1q!UmLl)OfN)bvA*Ad%aw7Dwi@0b{>Z*p=@)e&@2Smy z#NEG^eXHNUAp!dgW^Zh&XYXid?`YzrXJ=$aFDEAanUnqB*L@}bL-&P2hY}%!fyPk& zhHu{wuAm?w5G}}Z82A4QzfWnPwbgy^!&gTvy6>8GM-Ba&P$~~iq(;X1kF;-kZx8Qg z8FkLF_YW!B6?%~5jv0xGMt(jV?I(+#{AmX_D!>8zg z6*BiO5fY2(9~;;oOCMiOwOU@rLQl@hX61yN6GvmVQ79@nHaj@z*PFdJUk1Z$_#HdW z%ZXfaM&GCnJUuw{)}b~_?{40uUyCw+x66fr!u>ze@1q}9kjwVutJ#jiTVCrCe>8hb zu+uHMCbKS90~UZj_s~k5=XP zp#D%lAKi=&Zv(x4Io7R~pJ%#{##gIVx_)_`%YH%QXMZxACHUrG66pC7@Zuv3s+b#LEHQyZgU-45<$iEX^ZPS~Kpy&}9@ik3q+yo03ka5mO=?`rVpmwnG z$)k}w>aD58la>Bm{SBo4nYg?{if~bNLysDuLHuX8rmU2sP|#cK!p5oB|Y6 z)jGxQ)2QP|d&11tBYnV%%TdAqVf?{am1qw-u+`Kh6H{nv(|m#Pu+PX!m6gUz=`KS} zsO+|tp~}6kDA4->fl`;lx)c@Y@2;*9@qfo{VHWR z@e6I$q0}<_pB*}#7zrDU^xq5Flo1}+Keg)HWk2f^!99@AEjVAz`#8JK^CHGq^qV;o z1nReA@hy<3pM30EPX3|v;r2cxaq}@IFzs^BRr@!qoj3-k(NvB8EH>p$iLOP~Xe^rD zme~>1wXyH{d0G>DyuRz2h%?n*W)>paxVa1gp{O0DgR~JzBt=<%aGg}vxAy#W##jXL}CCJL1^nRJQMn}ckF>7)y$+ea7n zi{@@A`gYjAv3|`^887SP5n*I)=6ZTW3wCJ^9vc=g>c0O({!P_o!E;2RVdr}|Xtwb? zetQaWO7(uF&1ti)TI>1_${;ePG@`8sAq&dN7TmvJfWw&TSe-32JPjnzZSK#_lgJqu*9z}wWx`aaW=gMmc$S9 z@MGM7w$d2u7SDthsbQJb=3NEI=~dzrY_0c9`(G7 z6AK!JJh@uc)v9F-LnYx99U(G1Q@^9JW7@jJvv3!nr%(*Pf3}0MAi=0!+a(Hs|Evc3 zH$}!zT^zd^p0cN1rxgD?K`#awm35x>&@J=*)vz1vUu+RJ{B4F{Xt&Xxrkxl>>I+=^ z-HRcbHMVZj>>;$}sy3@Uf_jY>R-AtGday8wYWG0eR@a+ZdV~5;tzka8_%@Gu6%?VL zzM&qJ#8ue z7?$RBAS^lWQRQOgb3K*wrT#Bq##uJ5c&^4@5($YFO{0GvyFy>sZc8(MEl z>8PdGeLSOK6O7}eOzfqNyT@n{x(IGx&ENULH2MJoPumltXn%`&3(9nO%di0g(EzV& zN>k*KL~lBFx~{O|{*-JOb;lp(KtnjCv{L({4c{8LC0R6Jl5WEg8rqI@HBYHS)+8i+ zD-6*8rjLUzw;Kc8ZQmc!Qb6kal*umNa#+-8WS|#ohze%GL%Mo$CH}Wu~{cGEac>L5l*R(BWNEFOmnfF_3)tcSopr0q%2CSS-6S2P4>3=Q=?sL zAAdk8M4Bb?tMK=YKLuut4 zVIu>d7wHjSDui#q$PK-l)UT;GJ*gEoE4MCsnRc59LbN^OX5TVCpJ$S}OJ%#<+Qes~ z#T;$6s`alB{`I(T-on?lN3}lcF!mx!0J?W7(}NL4!5DEa|H_#P9D=akBUH+oYdfqRH(s^3;*qB`)<*bH> z!xB|#kbBS?(m2}MN^}0O)Sc8vBpa{6W>1J!LwEhVki6m{FG`)o1{GV@M24;u&}T-P zl1U&xk^(CRgho_;Cu83&m;xH*$AZG+V8X8(Pit#9Z8A`L9pi&*-wpyu!u=0OFe7Dx zoQM6-3WPOLKfpgR!E?%DXDn3`rqZ=eM3K3oVH$ z^J{IH=>_@rVPA%C=wGM;!M@Zm<(hPSWE|QH9ihI%c#NO3m6A&j*i|VJ(lYh8^>>$} z@nn2dK0Phg@3w-ql)5u^+9Df#H6aI-hBjNTFRC3C_yszBWb4C$)f$%*sV|M%ZPpYO zTQ!miLX@SRA#pRmIVcZeu7MaL+L!#d;ccSWG;re@L6!;=Qc zis(6Wget;yK0(EXq`{-GI{P~^Ag{;eHEQ)IN)`iC`Ig6ea_0-W7^iJO1rWc`>F2t; zx||<_(#aMc@KzxF8Ps)>E{%-vL%Jxp<7D@k$Fyu-R%S$C*3J}o4w&n36KBn?Mt9Sw8LQ4RQqigc zpLKA?$krHXKLJ6kWU)00_S|?@59lt`lrHlE*hWTnJ~spbp>(_$tK=10jT@}ZwmRg4 z+Wa8hJ6RL<8))jBfLed|V>0f1?Oh7l0vY{hl7S10xK;tbnSa%*+3bJPSvhvoJw*LAX?$8DkxwUb>3YX zuU?C~HA<#ns?;N3byEAsEp7p8P4l8EkhdV#nR6E>exe8At415665bB5?-%XnMI33v z2z%4$er&Jx$HW+iAs6VqLHjW5oc^bu9=8BNL+x}?=Yc(=7f0+U6$jl_N#)gxOouA9 z`!ZJs@iRCXioL7*O>0Y4Hdsq~G6Ca<7u~U1)Y*8kp6RL;`g@)Dj_*T{D#wiyVtXTB zQBfdbx&`U?F*f&$<}itRq8v2I+hy6mv}6A4c1buT1$pl3jj8yikDT5-rMIkr@pJh{ zA$vxI_$alR-gC=o1HU8!D^0~!S*mr8(iX;i5r)?K&OfE@9j$&IF)o=!GMVr1W?Z0x znt_oA1=^T#jtX`l0|90;~1y(F*P+oHEP0QbMLlE{j+cCr40 zs00sn5aunNV=Jc)x!GmCB!Hq^#lo0RWNAzLtR4YwIO|u3wwsk5g*(1#%+|%s(5tIq zfys3>8s=|ikM)~`OtugNf$SNROo$tfhW%Pt9%j|uE?_=tG_w?^Q2k<3!WUK;SD_IA zbftFtDYw;gBkFMYu+_|dTw9yEXJJ9sw}q=#r?r$BF+XRysnFG)2Wt;b^+THF@qR?^ zxo;m!xKmNRBHWH^oTczESm+==egtOvX7?A3R8C6*j`*629Ylx|c(b(HE1P|9u1C^J9Iae2pX-`J(W#C_OySEzWn>;j zp!b_M;PKIFYTkG;mZ~9To2gIn6uoxYtBkJ-@?>sP>b$0QSa8rrHJ0$;Ll^v+)JV^f zQX<#}8^5Z9(%^+cdg-si$N4l^tG3B+h56}zjK5VEW7O9a{GOF`$m%4TrpsjnEhMx& zZ6G^xQ&A*%3CqJQ46@BAQ?JG5m@+#ghkVjjR>k9K0O|dXz)b4n07z-ub83}Da1nCf z-fr1G&n-=g#!V&;UHn`d#6IPrDf@-FDQ%Ba1DVb-h5X7Td zZ6b&LCBG&-LuEhw+P=A4sC&U>6R}b~$D`Fv-z;VIQ?INXqlx27Z0@axX`IJV@v6bI zMZ{z9b;3*OYaEKVOqFLY5f1=^;U-Icw40+j8;)z}z}aPSJe-7>cS)t-`)X_1%ga*h zeYt0b%q7IkT_?ac!7J1D!!T<1VG;S=)2>`kQ2vsuZLe4dlrwUQo)F8F(dFhOM)%Zq z=iv8Q4Q+FDKPIwNIgi7A@&c;<^Mx%HnL&x`OM4;jJOSF@`gdF-^37qkI(8i>#srAPZ^z?dO%;$bET3}flLpOd`)UoN}Mof!O zT>uX_z0YEvHm=e>-l?lU+#0~@&Wwk2A|hR}vgy7p5GS$GL{#0HEaJ@65XjZ&XW(EY zwPeTsc&$3`D%$B3l(60GT?HXQNk1oC};s&vBU1>YwFBVtWufZmG4y`VLE zY!IujlQ;h-_LiTiY3#TkYf95JYI)l@K#-+8e#N?XKX4+bb5#>p1VZdfV^v1q9Vyw@ zy$p3eNht$-sffn2YAf*0c#ZdB{SzqxkS+-)J2A+-Kj`)xFjM3MwSVZs80GcSP106g z9wuK1$wKODEAeH*-Jmm6rP)Ohqkdi&%T^xg9@<-UchB-TLp4X@N_A8BT=eC4oY;iI{yaqQnu`+ z*F&d(*?O%VbXqwmZR>c!w}zH3IFd@!meu0RQgGtB6`|@=TEC&RdzI{7h#ANnWA?Cc zirJ+v@7$}^debu_G`-5BM?(hgk{i8c)1-@rbz@(0`TTCSMm^qU`|?okVUB6TllDWt zxJ8UAdWPD#269~NOXbNz2|Fn+N&7FXTL!OBcwaU7_zBq?)G4a`rI?#P|GJ{wRiy;+|+V%>6MDNubOh{*RP zPt5ztpEZZ)Cs#U$cdcgu*zZG0-;e6EqVVzIW;rdfS+J?rtW$q9j2S&OjlhWc{+nsL9vXjlrpSbh z3;Pa1OdLP~9|i%B%;Eoe11wB4UIXg|rupo#-OuXj)QQQ;E#u00PswdpMBtA%MGS_) zhpao}-$k+f-``$3UiaS~m;$|0+WIT*SYcy7JL&nq-E7`p&TKznk^<;C+F*v5ear^H z9t6EN^@`nIyBzo#lJ84=n)k5C7TS+GI_5eC&l-q$-blos?dF&1m6}1!(K9F%Y={+a zn5|p6PeC_vMn?k@_d&E<-=s4x{63L^Xzw2}e~hiI9Ru#<%w8=**9kLYQ0D1#j^6wf z%-P!>-@;m#J1C-_$uA4mSbbXq{X~pk-t$Rch!r0ZeTc80iO<(t0Z_gtt}`9pobTQg zB@!xDNMWyr;yJ?%GJ94}L5H@t1ao_K%%d9(gM1ynqSsn}TMekZQc*P{w^iBL!Y5T|L2+7Z&ST~w^{csEDR*c(fwqWP{1z1 z!uNxgYWKyz@Y;uDMUFkk@QGmw^%LgRBZ^w{MQjD0to4ipVher3P`hc;Kc=Nvoym`` zzUhr=@LXNt#&R&8w*E#c+Ovs(g%XiM()eDC$D)%N<$(YPhd8d`yI&G3eFM+oZEm_= ztQ=3_C{dU!yDM!mA@`iKycG30)vZ=){zlcRV~?lm9(yd##{x6wD@!dd7Tr~IhYysJp55pr<`)z!{Q%H2tR{bck%(9N&( zARG*xflKQ+{roV4JE7LJe!0fikIYsgOP@k$8gFy$h7vdmW0f@Ys3i2)%LJC95a-S*L||7 zv3)OodjTpP$zPv*bT>ix5I|WK;OIxHfgG+JgmtQV2OO+ha#-@h-{5o%w}L65s0^s0 zC#N^jC_?`(vjIjlHg60rL0Ls zI;00R;2Q$sk01@Hmgmd68D{^U6(Zr)l6D? zyKHW+UNN&xO+JyCO&joGP^w6-to#wR~ubfV$+>QYvwe6={-MVL4Siwg}U|;q2 z?RrV?m%*BzR%2S508?G{^1;b7mfu)p(;=>Ve=K<&ROO|UOW_z3OyH)9Ad#T)Q)iLY|c(GCjww<(i9JvTSwJKEJQ3h_kH3fg5cW8h!^ z7OC75YV_I|fB0VW_$o67l#+fo%boFvPs2}4Uw(IYgt+CS$vd?yNrRh=`*K57rP*;O z4cLzv4Mk<A2!oz zuHIl~~z=#(k<4zR0U zHF_*P6*+))U#w97Vgb{a8;7n-;HohycKuy+F?KoO-xP{GpRPiNTdk#KmxQGKguCI*>5V{CNL}xE&iLw zYK9q+tSaHVAlL9_DBA2!o3h;#?-Ju_s?2!dgP?#NCUe0BU5GuhCiXq*2Zwxf7BM_& ze74gVCg04#xkJ;+k0|C?6iJsdJgP$yuFm?OC!ur8y^GY)auz!8&N;C)v1`Wf@Y<$$506*7 zFenD23z0QrxYq0GZLpiA&`n}peNJ^__VaCQ{K+~c++L%lJdkXoOO0_i=8kAcjP}AZ z_tueg<|?bzukMl-CII6?a|z)UfDU&TuyoC?EXouUNl%mg-ka-vgI0(sF>R%#*hM(5 zIf*YYY(m2*cqu;B?RX`Oil%D5LpwO4evOZ{a@Du3E5G4)EKoo(T=}WPNqB-`m>KS? z^J2I*oGtyDiMuq3M56h{p0_6VEc;M-=#*O8X8{RQ4J4(JJu)~t!6IM{Vz%YAO%p_Y zp3O;W=*T|~!eo%)LIR&s875cj8c803#HqA#+I7ns8YA_^6{bCh*Rv4&ja+<~jnDqZ zm%C~Ul@(KUu7nZ0-CvHh(;m;=&G%<*NtS0TZf7q1)gJ1H6E+kE)m#kt7-y#`PZAn` zjw%|t?QhMqmS63xEiV8oX8~|ymq-Va7F_sKA08@BbzLBD86AIg6@g?mI-P>irv-mG z9akNW%I6xNrAFwm5pakI9_|w7hN_2|6t#Q-f^PR2&ed6-`#-{pMkv5=Jwmgb-kfU` zuBOs%YS&T@Zc;(I?pSLa%sHuFc^1@v=x`0|HE^)Eq)qGCS5KX&^wRN;R=aLp7+HM) z?u{Eu0WExaq#JPb1lgSFhH!Pdli1_E`2?1F90>|ex38DW)<93JH()ookYR5KkKfeb&Pbel|YFded)08nSq~ z^BRCD*6o74ZGDG%ez_`|^Oxur>DM?Ye;T*4MCZeuAS2;#mQZ5MTrrpmhevvD5_RgY z5&(r-*N5C4YjV8Oa6eEl9YXG!7OVVpJhsZva}9w#RQI5Hp@G`bN6&ZkSo3n-sNrzN zD||Kn9A{^j{p*&InI@x?8|bM#pv;$Yt?NJI)Bs4qnK>}gF`I-fi2*7ME7tx>agg6t ztmGx%;ZgIqvCW{NM8_jHiKFWqQPmX5<5uRo*(_yGOdQI$$-PTiqx13FvOSvIwPmEGjiHZIdYBs1D+&rNI1N>EUePfT z?boN*5>HiV1%3%`pth-6bvSDnR3fGe9~RH!8ssH!t2Kc6kls%wz>@c|OGf{kaBIpV zh{Yc(F~ey57n_*a;_y9QSjKJ{i;UUh-uHM|PlVlAxX&;NLgD!=({jYInU-9$#C^5~ zp4NRWp$%hP!VU6uV+J2^9Cax<67wfxxkZF@x)ie!GP6E$U}Ibo<^k%{)Bs+*lkQ*S z%!$XrYWbpnVE$C;F*1KjQLUZ8Zm9}3x?60lTKyK6=Fh(NeizabZ|FmlRo4f1zWF%{ zCp9#=JG~nTfSSQff89DKyS_m-7T!=LPE0AdqK}TmBTfuuZ^DZ z6zki#hdZntP%I(l^{6V+>$)dMbmuyp1CBfx@Y0DTslz*>jaL7?8$oJR8uX2dy_)1)|>lNt_>k+X2_EVYsUJ+Y2iCQ!$4as0UeyCCcRN#HOPC zsWp+>F8(gGtyR~yVP(V9#ony05Q`X-mWWjr4?bP75z|}zc*XmaZPQf0{roes5=gN~ z8w*3d-Hk1qb%;o=H9!bzAXy8`MUt$z^bB*{frmO3(&Q9%(cKS4RGH5Os40SinEJD( z+UfE4=WLVh=jr0@i5vwWdZF&uZ=L{^jT2qp4*Q*TpuVblT|@3md$PpUM#8X?nY`tQ z^)e6e2*`<8x?st)AUSEX42dbDOSw8uY5+}Q3Mne9K1**Q95>cZjJaQ~jTC*XFXD>g z;Gte2^^%3up1>&9{yZ?mq?s51FtZgB76&_Txv276B@a5pmj&P`fjPU>HSL9KI2N4+ zA)1b0AVzTETv=KpdTFJNPut(=GHrS)Dt*Q%rTlRdnKLB9rdKi9%QQeV(X!2qA}J?C za)8O3GL*_z4r>l)6AV?CzgWdV9w83ilMC{e~<4pKD zo^M2u_!pYa``Ou?bNe6o3&@-Y*NI9Cb$uK<%eUY>RW-p*L=L{z&3*U#;yGQi4_DA8 z-;)}j3xDR(HQJ=1ah+L4u_G54>u)`rD>bM1^(bx@VPTDa{pfMi2*mLlIqI}TFn5l| zD{PasKL{?Up4;imNoU{8w`A*snYN@((pZ>z-Svyp2Y;Qlx?s0yD^ z;y_+!!)V^rl~_~XKO)ncYVr|d)SK}}FLHS_C2U6yAlFJM3xJZiE6&Bc_R_V+DN(uX zeZz@2ACP>K`l*gD+pOlK$1oNWeuVprwvynqr=N$mbNfFmrb8@V=Q9m>j9r~lF!~(T zI05>|^_iRU!jYn|tMgddh^uz`F7M$n&L2=7e&E0?1(;!=T2X^{QTFK?(Z33PS!k06h2BKMJ@Nl z{p>8@HX88`(01y&c+qvgEbNh0P}V_BG2lX$a+R0-(x)C7Tl{P6G z8*e*4RjByx=OMrvVZ!P9I5H#XT@Y6^4d!@~&_kn4H&>bf=>k5U8+PS25BlyqXZ41{ zC;q%H7xwCU`|W*Fa0YDbV@OS5z)WjF7DQNpa!b7Zl_CAzQH!?u>QCFfk1WkP^vg+r zhy1)7>&=-i)8XzHqxit&vC^-ly4Op4o-YY;Rdb(ya#3HGJVZ83co@IJEGae8H2T=PD>}d$mcX~Qd-Rpj(|H!#Sd&iApLyW}4&;Za+ zYx6+LXgEfYnN2ILF-Jc+Kvr@Ix3@~xb1`w{PkqW}7+VN;NouT{(J$GVjc}(sp(;#j z6_Dfxg8NVn{1(K64aw5hP?exF9r)U@<`6f%n>8-racjsEeadtpnyO2S( z8^7UkW2p>7!#Ps#tIHyipz@n%7QOouqa`iey|H>G0WR8lT`Hxtmb1m{Mfa8shS`p+ z*Q|b3n2oFV2eE}-`J)t4_Oh0X-lkw{In9@z?5S@p)tjOi>;brfBHwlG1b*mhy2-m3 z`BFyNiC9Kt&0$Q5ZakQD9DNBG$w_SY@JI_?jhP44D;+_|)CeJO{#tDF+y7YV6zSmrGz)5J>q`J(O1-4fP< zUlN7HzA|Wafq&;@nVPq7VS@1remmJsu|*nzXFDEzmQpSED6g>^Ikk+6yM1(Y8=HW~ zZe5bi)yAhaw~i8Vh$7ObM6L1W*25$6?yNX0Kto0>EeVpfM$GM734i@$(KuxEtauF+_liBlMOEi-p#{Bfj)zxoR}3 zhH*?+Gk36PnH@eJ;EFVJL#|ATR>Hf+waL+>B%X!b=mxzAW=n%EcY(Re*CS$I1U09I z3Rc(!uGAl&)trv&^MlUm=cDAq1(kJHxTY`^;ncT7yZd3SQ7vy9WeqqP-mu8W;5LRq;pLmX`vDK!-#J z`?K))J8J*O#^0VkzNan!eR&c5v-Lldm{pXKz+gl=n=O=JS}erhR~L5#Fz^otkYHf{ z@$~n-!-BzreG72ZwpKWAyL*Sp{>=;H?|ZNHm;H;q|4ET%{O1g5hVEtymiP6~>;Df= zGr;-f?OorG_*==s|KioXfBHY8`41k)Ujx6r2l>AMvTNbsLcBNa?|%Y*rTJ?h6T|-r z_%TZWJL^3boPPo)3H=M;UnHIXiR^zFVGBH=R@6HX>Ysqc>i+`x7sDj~2Cx=(bg>Nv z46Fh1KNIQy>lhZ>{xy(=`Tx|U2X~WM!S4~?{w;I=zkmy_e+^`1{bwNKdz1b-Gyc5( z|Mb$aM*Kqd_f9kQPfa@h>#u=q|DGrM|2z$kNR=xJ-y!UAZ2A|#zvwjo29Wau;Wy{^2)F*}LNh%1*TBCxEB^3md;V94kdl-9 z4)D$+`KK1G*!vf}f3H&N|2%~MSf=&Q^pd|Xwf^JJ{{r}b>ofmo;{V@)@o3;Ph>AwRHDE|fU{}$mt&gJ=I)b#h|-8)*~uYv!!KKhS?&;LEZ9@T%r`xl+` ne|eqx$NT<&2L@RG3*f&SAr$nVRzrJ#$iRYuxd(#3zx#gx=HUTu literal 0 HcmV?d00001 diff --git a/output/pdf_propres_ocg/OGC 1 - propre.pdf b/output/pdf_propres_ocg/OGC 1 - propre.pdf new file mode 100644 index 0000000..6713f4a --- /dev/null +++ b/output/pdf_propres_ocg/OGC 1 - propre.pdf @@ -0,0 +1,99 @@ +%PDF-1.4 +% ReportLab Generated PDF document (opensource) +1 0 obj +<< +/F1 2 0 R /F2 3 0 R /F3 4 0 R +>> +endobj +2 0 obj +<< +/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font +>> +endobj +3 0 obj +<< +/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font +>> +endobj +4 0 obj +<< +/BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font +>> +endobj +5 0 obj +<< +/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +6 0 obj +<< +/Contents 11 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +7 0 obj +<< +/PageMode /UseNone /Pages 9 0 R /Type /Catalog +>> +endobj +8 0 obj +<< +/Author (\(anonymous\)) /CreationDate (D:20260318161808+01'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260318161808+01'00') /Producer (ReportLab PDF Library - \(opensource\)) + /Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False +>> +endobj +9 0 obj +<< +/Count 2 /Kids [ 5 0 R 6 0 R ] /Type /Pages +>> +endobj +10 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 4382 +>> +stream +Gb"/+>BAOW(4Q"]^sc?O1c0(QamP?:.?7S9E?ogBBBhZ/17]m>99(E3gOHsC+E=*"&]lkMB4iSd.d2M(%Lt[mK*-WL#f@aYr`q]2oQlNMh[i1(RQi"54c\[VBJdL!HpP',N-gKk/l3)ccf^8'mf:?7hL3%e(5QZ=RX'Jh.>h)O7(*kb*Y!,1!M2NKhOF&nm0MP'1I?iV62u7aL*JMq%IQ^GCG`[k\'t>(4;a,+B^fmpP@*2@%\":uY*QiCk]sF#e%;+Hn%VBa:MB_0HBiCi<.>F.b1$s,UOGu(aRc7b,kO7FEL=0K9&2/X0I.q?LieDLn%O"l3(Ef$@Zrpnqu&-:MZ\::B0LTsQ`CRA32#7*"tdP?2LDgdDO0g1^Y#`uRnR[q2t=CR"%"cLbi6MYX^e_rQeR;7`u(qMSeoS`Cgk"BO7;\D;f/0efgDl9'!FK:UeG8)&i)*I6ZUTf!VJ.)\?ponJVLaf+.3K3O]G`'C2@U8.0>7=BO!u_-oE>?_3$0t"oH8oodWPmV\o:,PNn,AUMBMLi-IL'^V9l:I+Ou#qLc9G-G%*K*`=W'M"@RY*cK&^d;2jJc56cB:b4)-Z7tnR=L>cciF3n(#<@AX%Z2V1h)uDk3)EG(YY.YC.4/J[*^@R":Y@-jY:b@-s1-cQ"W2PP4psMt.9`jVI;UT>?UEGB7qRt?2o85licfG$+9rUIB8ij#-qn`1[,C&Z4;(#T1D?T^K<(qan%,9f!U60WVeLK?(tHM&FfYN::I@NXV+@3;FO"T]ObRM9[EM`aP3f1`8I^F@OU(XNh3\KX`UM,rT2rFPhYP@iceIVAd5C^18QT*U""n>VHu9F%1Gur*Dd'3Jq:JYdf)nl'JfHNaO\>I-]31Gm:%M!'u$f.*H%'O(%9Mu@e9E".!)Z'EpsAG]RWl1c+,,U&/tD1E'Rr?:!!*$n0M\HoXF@1KTie?&iPFN-YCDjpn#h06?qV+a3p@i#ZK^RKbpHT58\jK,)_PD\`X>45tDM/e>(&+$FPD7JpL,+s'NV"Zr.h]eLol+]o3W1JNtiqT66gPoBcW+"7E(4&B)XF_=8]0HrL#qFOS,#%l$KbsN,g6$Kf-@=tAk8dk?G?tSIBF3%M+Y>GQ@p"U@S=B&cVR*VHI\F"1KZMH7_;N65E(*4!"-RLQ%OJC,517jaccn"H;()[e-Pc1R@+D^Rn(j9@d!'2j8e)Z-+1l?nOCM+riVS/p*-3,D(MiH"7LO^C3=!KQ7*BWV"Fd!0\>gFcp-b9kgG>>B2dgIas3MZZ[-V^-Bk;80VZnt@@WX+uueu"j!7R+N_\4usE/.jWXP=FilhEP?HZ`/0210FFLHWYm^*=iU:TqODda@tkm+s;1j'haT36cb+Df#NWUds\]3APa_\_7!.JZAZ$a6L7\<"d+q77k,a'CPe1/Kk"h3GDL9)Fo3OgMGkE)^X`CL2)To@G@,+ddF84ER%7$IN`Kd3AJ:-=<[)E4;+I*2?5`3="rcZ0$>M4s$>OKZ#(eYqk">sa-c,INjYY_cZjtZ@X$+PW*QYeiLL94.cL3pAmQAe_43m7TcL!Va(hF[W$"j*))5c4Z)5b):%]e<)!SL7lMZQM]4W"(qnXbZ@6gdq5\n^lGJ6d8fX[5JIJkS$+6L'dK?K28G2A)efoGP)-\*M22]]P,h70S@re03S*-\]=TZtr(4I24I9R&l`:X.pYG>lh3C251$%WtraJM:_/ss)j,ERK""-A)Wif=790ArA3[if(!L^4bOQ-44]RL7$q3H8-`Ur21Sg\?P+M=f],BoG$q1Eo7X=hF-l/EMKUp0Ke4jh3S;l_WAZFVbQC>(9Va5G%mLEFm*[W`5PO"@GotqI+Tm+`@bjHaI,3K$31K/l(J.@&2`_N7>&G$k+S(C)+.bd04Q*BnHMC>CTXF(jD>uiII0.H&O(AZ(C)IF%hb`"C$e*&8(7#+h./ViU&OheqM(?6E*E?`7u:]]0:_?-*c"*`EX-oJOJJJ0`:_QKAtt]u;@fVoeM<.X6RufN$O3cl1o]ZF%h&DYELL@oXA4LKQdZFBc0;P$CX'Pu9g_XE7[o/4X2E,4RW&O0_[2*oI5p:6]W#HC/F[uC)3EW\IlREi%Ln3"XgTA/1OGA^fIHGO[]'Lo8^f$[kk(8/tj(mgbY"#hrI0%7_R!Ml=cD'FHK$_lh[P8_`oP0;Kpo()n$:%NEn\^iMt+&Zms[?fI7HT.OD0P`]fbj-;acl?e=a6n"MF/ZLjmMqt2L-oA,epZ_q0R]RKKY)YVYaWM'XjA:*Z.:18/[77+]E.kRW.->2dG4ru#P6?(BJSd1a@f\U[I_>dHtk8(LekB"Q8HVrQp0<6b.A6b#al_RSK+qN#(PA3[3h+6!;%>jnY^+,GE+HU"O)Y`8(`l_0FBn<,U"XTVS_eZ8qfifkB,NeFs"_fjqJ)grF;=k(;.JkR2!t0:.X3GV8i5WTX_#U4oL%%J^?eiC4F,@omJ@)mt4[4r43MWn.A2RrjoVSQH>#`pE^1f=rN>P$DrP%>-11&$FtA\E78$%B[/@.fR:=8a=2=W=P2g5"q-N0M,#n8Km0'UJb*\1f04=0D[]/#LnltaZ\!`g+fW<-PgP1`c`H^Dii9(^3G7CfnZ5'X3Rd>;611`6DR!P#=7Jbo)^C2@ldHNB(eXFSbLY*[ls"jlj0Hq4QT.gF-V"&g_hpg*47WFD6s+lrK7f:B]\WBplaMRA:VQY'`G8Z$/Z707oU!bgmbq8G``_AbbOCf&Qq;)V4XV+3d)CJ82)6?+~>endstream +endobj +11 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 1216 +>> +stream +Gau`R?#uJp'Rf_Z\8QP6&u#m^E8Ill\!rqqSL32WnY1VSeM5u+8Gi#Q8f2$hfSM]=fjX4Zk]1gk\R//UGZ"L5('&h:i:8N.PeeOK)?q?9mbuE"nng]PQ95S#-pnQuD5*8eYNij\78"?k,J.CptT+bR?"8"DT]Gp!s_\@oskG4X\kc'sL-p#>DWH_?]6'#l-*Y*X"!b=7n'6e4SdE'Z:NRM+&KD!H\sE2D=c$l32YnHW=cH:>aonJXb8Z[bQ!3n30o&K_FqNNeg4%ZXHJ..srUG,lMj=!!E$d-o81MG(f>).?s7oE[8k#-jC_TF!=i]Vr=Fi5*]^`4UC"&4$@YQh-i#Y]sY#k@--t"lb`$pgCGAe.HpGJ^39c45InO$%jb<=-0JiBku7dWcSR;p?tLRWu>#;QPkeZ]JA&Q`tHOo[LI+XQR[8\(E*o-&iQ(nh"g.PnX"%*T#br+.s.=_R9Jl!2b?8FbW+2%GF81o2Q8pj=f]t3-tTB-BXkYn8&k&UX]&MQ`Y`SZ;b2/OT'\9VE<,b0)!Z6DA,b2j#%X&<[4Ehd@Y(hn8im'T=dF;AMD<0qRGD16->,J3ijg4NDg(OKm,AQV*:/j&VjO9@["E8/$_`#d.BVC-aZDE]+VB/6=b@9al?X"klO_+BhA-:&?"n^o*sr?T#JF_e(B(,].=6+Y]ss):2gY3u`2*q%&l)%9:(`tJ0H;pMdVT."H^5O95PjPY-RES-!2Qd/Q+/n)$W;dD?<&30'%/pT^Y#_25d+#m)4heqf(39UZ+6$I'q^9T*LnX:<'Bsb92g^MqB7%GlHHaob&<>9(`,n;:JNendstream +endobj +xref +0 12 +0000000000 65535 f +0000000061 00000 n +0000000112 00000 n +0000000219 00000 n +0000000331 00000 n +0000000446 00000 n +0000000650 00000 n +0000000854 00000 n +0000000922 00000 n +0000001202 00000 n +0000001267 00000 n +0000005741 00000 n +trailer +<< +/ID +[<7caa1cb59d7b67fdd1ed79b8ead21174><7caa1cb59d7b67fdd1ed79b8ead21174>] +% ReportLab generated PDF document -- digest (opensource) + +/Info 8 0 R +/Root 7 0 R +/Size 12 +>> +startxref +7049 +%%EOF diff --git a/output/pdf_propres_ocg/OGC 18 - propre.pdf b/output/pdf_propres_ocg/OGC 18 - propre.pdf new file mode 100644 index 0000000..bcb623a --- /dev/null +++ b/output/pdf_propres_ocg/OGC 18 - propre.pdf @@ -0,0 +1,99 @@ +%PDF-1.4 +% ReportLab Generated PDF document (opensource) +1 0 obj +<< +/F1 2 0 R /F2 3 0 R /F3 4 0 R +>> +endobj +2 0 obj +<< +/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font +>> +endobj +3 0 obj +<< +/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font +>> +endobj +4 0 obj +<< +/BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font +>> +endobj +5 0 obj +<< +/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +6 0 obj +<< +/Contents 11 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +7 0 obj +<< +/PageMode /UseNone /Pages 9 0 R /Type /Catalog +>> +endobj +8 0 obj +<< +/Author (\(anonymous\)) /CreationDate (D:20260318161808+01'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260318161808+01'00') /Producer (ReportLab PDF Library - \(opensource\)) + /Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False +>> +endobj +9 0 obj +<< +/Count 2 /Kids [ 5 0 R 6 0 R ] /Type /Pages +>> +endobj +10 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 4416 +>> +stream +Gb"/+>BAOW(4Q"]^sc?Oe22%GamP?B.CM:Glpu/p]6,20R80$0,tF3Jp>><>8:[@(cm08dS_]hnNPH(A3Fr'WLVY*%_L\)WHh\4MOD"2rh`n#[Q7@6AFMds)NdI,;^DMDF`_[1qZ79e,F_W(lp"WE'9W2Mg)kP-:SNHjmOpM>3sW.p?M)#DpeIbRX^)fMo124DrFKWqB<;s05)AO^=8X*^;i5Dductrqq2pCKL?oD^1#O'leO:Ud=/RW,`hJE^PgM!J0+0H:[[9)C4kpbBK3^mMbf8U*\FjjA\?bNp8dR-;d8K\4RU[KODJ*4nR7F.1"sUimJZ$mN)l!8Mre9*Y[3t-pitGj0i4D,U":WJ=78(GVO7`'1+ru%o'B$QeAEisE[L,_1t3QDaE/i5[,MEnCJ.;o&[;2pa]4R]d`J:531N!Xq49T7rjYdQk7lBVkcG?cRlD3:CMQW#CD2SBeNq9uFatV!56WfJGAYmI@b*ij#-qn`1a.3W5.'._l8f^3G%*QuM577mq+5K$*bP#1"mkEqM%kYN:@K@di@RAKRjW"TX)6ehSt'VIt;ljD@qi@PCgs0bj'g7uuELu:otL4Qn]dKu#>Bk6]fPB.ZNT.&iQgW!-#3kVPR*H%'O(%9N0@e9,oW3W\\\b^sa?GIuTB&+*a#n?najG%<78[Bb>"/SDpr\d6+E0B(lKMB?m`U^Da^?7;ejBoIdZ#hK"_K>Qti^G9o&!gS&a/gVobAIM\Q97`QDJa`T$7O#AEbn'P\4PSkS/B&7:qEf:=OBG+Dp^p(j9@d!'7AiVo_"nBG:X'ALj!CgKrAX'7c4#@&('M+YXG#XUuK.N%K4Z\kN?RY32"I'4$FD]-(5Cl%PGJ/CFNNPGZ?TF.2qo>+)3[<c[k'?aL5+R/+u?3f&cpk$WE=K-)+%)=Dge-i>ISPFF#ml!)q9;Aa=bX/$d#ke:RJ*K["p\)EGLDnLP7V7H"!KS\G\)&Eh#aWpph&'=ORR1rpFi?+Da(@`gON37.%*?=!DN3dJ0Jj7;WT_c;(9p%o]\rjhSig>7VTb,.F(^1=K:QXl$R!_kGl?&r0e[k-(Y/lgB[eqtXJEW=ZZIC8?m9B5!fJ]1')C;!!(TXlq#Im"%t([Em!!Kk2q2WCXIs(P9os[d7rrb&;[5fH5Y8al2JumFf.Y3`RH1bR96r].!`:Y9:@Wmn1G)*?%oEjhA.fmBYEDDP)-S0&15)o-2^\G4Iq0E2If0ZJ<$Rj42I8Eu[*2@[47%fk1Zr8#$i*_7Gch>Qj;[./Tt_)L"@i'eHZW@iN&3,k%F-oTDAP".l:YF*^7"g^cs_A)Ie?dQZ8,b[Z<[jUeO"e/5R$&h3K-ce6Pt)W]YaJCW;Yej9K.e:A4#he!I>gTf<2+gSHBdRkmEM#2QeCQUc!N@gak20.%9/CfSk@s5RI3PPVSX&=a#hXG)IoWfJ5)@$OA`f_Yqjr(I"9F,HK`AZggFMj&Cm=PgPm=GaOjahHVndNfb-PlpP%M:uTisa:+BKD@[FCN;RUdKBuQ2\U(,5jG>)C#_2NC_Go2X]Y)#"s3`1^L8Ac!te43mNL*SaL'c#Qg#'hi2_1BS-09t$eGRYj\r/dpHbO<40>XJ6`h:3G4;'PoA,2/i3i>TZ#;sqiRI#%KmZ2#6cr'm.`(h+@tuZPjQ:ehV6Vlp0s!AiA=R!;Y&cK:YlA,iE`(lMI;F7Rdb_H3$G_G9bulgDcbUWHYbkA\_6*M.#Li([*Lie"6H\[$+M/pRF;fEM<3Mt'RI9[`E/FO+%&XG=D-"nHn>U5h<]D?65?;f_9^H$'@@Ebp<3$$>`LiKt5mg>3OAO.c0sjV^>\bM7oC.?-b1,Vu9s66m2[)AiuR??B1V<7(Q&?p[dJ6G,eQ9'6EG<6B"ZN7-denX\_cld]!@[l&[uDEG*bN[\l=TW*I("O%oD'B]$kTOp9C=3bcZC;hRijAn][TRmFqYm4uo3;Zqe",VXbQY7#E>gR!1LIURJbL/]HRk*E$2QlP6S\fU+>DmG+KX)jdNL=@-"lt9PUk6uI`5(-0g9EX7TIJU87Soq!1I7Bis+Z0Q\libH)!ZL/,;Lc6'U;&sFe5>e'bE#tZf!VLB./@qiUXII2Mnt-0,]NYKb"40.qOU?qs'=r?PA;HJY=G=Aosgs7*d;]MZ/@mbQZnW_4\)V-WcaL0G*E'')E16Z3Q("niA!PJOX548R$eF;qr?i1$[F_NJ*&$i"CI:Q3s5-C^N)NQQo,H$U;6^@CDushNCYGU=(q+L:SZkoIr@mNbqjQe637F,=Jr^%23H48Dh!sXFD#s2p1N4P88aZp89uO?CD`EPP"qCu1:m#2O2?=(4^WASm26uAVF.CIe*McNG1CH=fWUUAGU)*0Oi4KrSA:8Vm9q/AmuX+usd@nV`HB'>X3quY&e1oV$N:sk6PVOum^OuPLk<,GPa:Ci:pfF3mIk]=6%k9*6kBp2;u<3SR*gOg'4`dGUC-r+LG4BbhZO\%)7SDfH_5d)1%5<+\q?9kcRMK5$2:BHaE)^nH1h3@*mDF$QLi_=o?7k@NBs@INXffY=WnBD3h7"GdEWipXPolJ3Z&qVXi72_RGC[:k<@a>iZu3s6tr,7bOm&N5XuA&n$X22Ek194[aEfTD+MYWFRgN&S,f/~>endstream +endobj +11 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 1501 +>> +stream +Gau`S9lJcG&A@sBbUq*aZ'ZL85[skIl..;B-N[h#4,s_!a'=s+:FJ@?q!+]b"ebn7ae,)Y&f"&:-VZLG;K"Ynr*[JE,##SCoG_(kHls0hdE)I@.TjS>,Nrn04J.BV&ch^A@irlI4SUEd%'Q)t7njk.X'29=&;(WGA2dKWK`F*^i,SWR?l/\i0.&%L^sW;j]_blo4]Y(_nk+JQH40M=1T]`[U5&LIoiQ4S>A8&dEqE+\5hi0YS=1KF=+W1$G]Kn:Pf-c@+g[gItsF/IoH>NaG=/ME6NBA_\TiOrYX+H1?b[,3JE04FNfWT55M,39_Cm'63#?Y1W`9F<\A(83N!eh"cEeS4.At[fUT4er:9LW\b%Ao:Pc]&dF4,;FW5Z$>$=bPb:gJXjLfR.X>St$1f9MkUK9.dR)r0R<4LgUWBVf!la5!aQ\.jPVh;S*^Nq?.T]i0>c8RHP=C2-oER(uY%3E.U]lXo('WQ'kd8LN6?_'n*fC[r^g?jD@jbfP\k1"JBM5=G'jZH/nXo.DuO#kXOGn,E/E5P;0RZ&do\g7&iD1qOZMWH&]e+uA(B-t1mDEO+n92ALuXo7bQhaucrsiSaJ*>q_k9Qd=kad)V6D]\NQapNWLTo9T[B5-Yj/5=Q]oNpWhL%c`S`Tb%4Be%mGGqb6HOW;\$Kb@NcGOH>,GDD`;h-Y8`b42H]HY6a`n(GNm[e&8F3"GOiB[_j6d)0]Y*o&p=0^'M5FC%P+2jo=jhg*2uSl`)NlDuQ$0io9[YhdF^@/TMs)rpX\6nB>7Fa;=o]OBEO+aE/c:>"JBJgXu2Y'8,>>gMC:T1W%kc.t1(4<6W&`.>s+$1FA?'b81)m4.gXGms?KD:gp)j3t&TU@[^>M9ad>pJ$.TMqbb5D,kR/Mh`4C.cJd"i.djh=P.^%s-$dKBN;`k(=1A;~>endstream +endobj +xref +0 12 +0000000000 65535 f +0000000061 00000 n +0000000112 00000 n +0000000219 00000 n +0000000331 00000 n +0000000446 00000 n +0000000650 00000 n +0000000854 00000 n +0000000922 00000 n +0000001202 00000 n +0000001267 00000 n +0000005775 00000 n +trailer +<< +/ID +[<8a2fe4b579dbe728cdce81466e03d56e><8a2fe4b579dbe728cdce81466e03d56e>] +% ReportLab generated PDF document -- digest (opensource) + +/Info 8 0 R +/Root 7 0 R +/Size 12 +>> +startxref +7368 +%%EOF diff --git a/output/pdf_propres_ocg/OGC 20 - propre.pdf b/output/pdf_propres_ocg/OGC 20 - propre.pdf new file mode 100644 index 0000000..f5ab69a --- /dev/null +++ b/output/pdf_propres_ocg/OGC 20 - propre.pdf @@ -0,0 +1,99 @@ +%PDF-1.4 +% ReportLab Generated PDF document (opensource) +1 0 obj +<< +/F1 2 0 R /F2 3 0 R /F3 4 0 R +>> +endobj +2 0 obj +<< +/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font +>> +endobj +3 0 obj +<< +/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font +>> +endobj +4 0 obj +<< +/BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font +>> +endobj +5 0 obj +<< +/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +6 0 obj +<< +/Contents 11 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +7 0 obj +<< +/PageMode /UseNone /Pages 9 0 R /Type /Catalog +>> +endobj +8 0 obj +<< +/Author (\(anonymous\)) /CreationDate (D:20260318161808+01'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260318161808+01'00') /Producer (ReportLab PDF Library - \(opensource\)) + /Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False +>> +endobj +9 0 obj +<< +/Count 2 /Kids [ 5 0 R 6 0 R ] /Type /Pages +>> +endobj +10 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 4449 +>> +stream +Gb!l#>BAOW(4Q"]^sgm%-8b-9]2,H&`7hJ-7s6pT;tiS?R8b&,E^VA2rqei$M$lb6-L!qdbYFU+i!83\*ZU[h+:s4b&'=fV4/NS5G&>A=],9f8.kk5(;Dbn*;OJ4,_!TT>9'ZMm>S2'd[^c6tUT2&bs@KqNp*ah6jibU`O7Z4$l7QBB-hqk-W2j<4r(gYuQ6:R0ti*qX7@l,,8hiB-$B_3?OcN^kBiFG&>_lN$]H?aYF?RP'tEq)YO*p6`aH[g>8j,`Et1V3Mk]e0g+XM9BP55$5fY[?BN%YWi26mCP/8,5]MTD!E#\eflb`sI/%Q)TS6u4oKB0+KVSBWXfBSqK-Y6m3eM)Z:u7H&eG5mql-&$'91-4^Eqld+8=-o+rO;`).S9IK;cK9lEhQjj;iQ<*;/q]P_\2tdN-I_M09pIbL)"`Pl=\FrI;'80!h._o3]*-rj)>p_be7?&%A!2HS<7i>[%+@"i8`\jjhsgA]0h\j^-_RUA4]s9>(j\H!7=g8.W*1]nP6'GT'FhS4Tf#t6'(b:I\8p6#cLWt.?$u52,Ej,_8g$C8@SRV7ZMGN^V5:oUW/2E\L/R49N:p?(BM^G;CG7p0.0&Eo)E+o'oOV4!qSZJ)1t]q_:PHC5?3#\!_O@b$3,JaJ+HE@e>P*^Mfg!eeGu;#J1aY4?pY0#2I/a&UWkiX5I,"S;\fO)b+aNVGoNHuJ:t<2MN%-#TeZmB'6b^_f@1bNr!@!Gda1se%jq]rBcd9&-j2-#O]D9%3gU_/2-m;VB1Nj<7R`@`G/K[X+=28qsXaN)KX*NjlYDp$[?]ebXprO*H$EWJS>3b?n`$QPMGL$.a0n-Z69H/M00q1oWc+%*O0V[$N*o&WLTohN$)sFGSKi!U_%c[QD`sPLM.Z_`FC9[b*K_W?mZ"$&&C_RP=%SFOin=T>u)I-Ake0jo%ZKl\fHoS%7?_lO0?*PS^c!$MNr##ELpi2l(j[^S)g*_ldVl0Rij^2l,1KVk*OT',(L3G1*0SW'5NMF^n8L+q]G?_BF^b\BK=DrVTBfiNep8`>YKXRiV'Tl[+X;>?4ii*1m`A1?WM*"Xp""YHagVQK!W;"'&aDnj&n[\#)D:pZ3m^X%,eeGMF4!$iXXH#ct\>/4b`2tJ'BB)o@A,LbJZ-?TO)bD]]NKk"W>LLi^&.CIKlUp9?W)-[plGE2ujQQE324%Z`po]A^Sbg$iG(CA9K"1eLkU`fE)5`8ei0@r350iqDg^=_Z[&?n^FF8nKYsUTToVj'VYf^T+/mZen5i>,"#)B^kC[^eGi4[_NO(T3.l@k_Jten\.$pt"&h\\jcPhMFi2'ok/s41\m]!$ENXUj'jWaLb]p9=)6=bm#1K(+8d=U9JN;B)9O4s@VJ]M''h,,2edW">A]p;bK6CJ/.M3_!#1g9N,70RJuX94M_3c;a%7X&eDp=5tL-o7&$IOcVWe//>nSiq_n\a83K%G"`l$?(phpL5@IQ:\4O[h0cb*dET)\UX[mojFK-;N8!i"('`k$A@5Me][#8uOo!nE?;r(iOjm3u]Y-TES*QBfW^0YU!*dj/0\?InmG&LHXjXSCqfl"U)FRu>qFs%6O6qj$kIWn@I(FfT>Qq:e3Lr8]/.4cg76^u!m?PUFn=`1]e=f=U?EIG0g9-mHWqNlr^ML+D_Me3`FmL5#2To,eB"<'%ir0rnMo,V?ZmrDb`FfDZ8!?Yn#4%#_\IA'iam>pCBY8MD<3k/]O'V*YS$[r3d7^`k#C;E1]C^oLeSgQ_`kWP3UjK+1=MP3#WY&/IBJ=+*.8gph_Mr^H2RKNr">uRQc87n-e=iRMhm*[?S$?T=N*?tFB,`m149`dX@<\o?F)KQ+SX$Y7c(h?%nMSd^5I>EahaN75Y6M\Yd/fH5j@P3]4k<12!SM"pQ8of<0Ot"YO+I8ta1sn-@mTSJS#=O_86?fdL+oJ_3%'jQ:^t^,)k3$4Tm9N-#>^3KhdU8X3%Qk[8B8]Zn(Inb@=E;O?bkr')\kDq)s5`25!c4kC2;kkmo8aN8gDlY1`F#EPpdLXH0*=QCS4b/dCik:l("hHkdB.>Pd!:!C;$h]ibhh?e>K:iIl>1+`("p:K"ka3*18YWk\XU.fL7F*^3*2]sk4:Jrj'MmF\\+L;YL$f@%+O7iiRLB7q+7@-?)_f^0H.sB69M!f)j[`eg?H)D:MD1jekY4nCefnfbZ.WgX"iDPV^n`ZQbg5Q=ht:&!67uVMM6md7Pe,^*TS.h35ee$Yb?rTh^,4-^O9\8hV-&e!-=op/j!Y.s&^-bDt)hH\t5Ga3*b#lfn?"T,`M&A0;F*S+>6+T8kXO!PCj%!eM1uQie#+Vc43mY]mXUIemi?Rl[!'%8sH#!Bu'kR!oq"j$*6f9Rr]28CpLGaV&oWQ=b[r]ASVI0,LLQ382TcW#uQ`>Gr`OGnMMiqjHnPlr7:qcY5@WLGb+u:r6O!496;'k<[0fb;Jl0s+N;uZJqSI-!*gtdPC&9CmQlMZ3;rq?8e"aLaPqL]nI'EO1b0B/=3rhthXim_;didZ5W^WoCVq%N'?qjTM9iU+84Z1'o+87/I_`a@2qZd<\U,PbL+U1%G)81q,_alp`C^W#@JXD?@kG0S+TFQg)Dg>.DBpk%i!I(*?3PI8!o,>FK)V\_h1+Jb']G,B_&Y9t5_I+NeZ`*n4/`FqG-=`^7OcFhljMWt_YE8[S.]5>T3^'80BjHWI\m[l3=\2prN==cAbqa3tE]BF\>gOF[%U;oeR;EFO^p)EkAiH/Gi'<'(%/_?Whl#-<:RGFA(o943WD#tPXWp!=5:8^h$RT!Yci)H*$U3[>faX;1u$+4^-i;"f[*PS]lRr0:sY9"_qN>Zu8oFX9=7o!$=P$<6X92iG9cET?lj@6HU%9@O(^t4ddqnK+8XNFrkOJmJS<9#Nm)F#oB;-km`p&00qnG^)j)L^DB(RaA`pK3DeB;:m+NbY_S[\-1'AA(dFX8YANY(s2WH?_I,r=A0c5kX6tjT#kU]n3F9)mN#L(-g*dDotruQg;W]5$9Pg%k"YK<=GendE@ti>HA%RIc6qh;1YQjQWCD_QgW]"*ae-1U]2$fP2:@H<**KB*BaQs(_.:/\X)%YLHWWokkJENO5L@OP!'Sq1$3~>endstream +endobj +11 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 1475 +>> +stream +Gau`S>uTK;'Re<2\8R$@0`(8dD_-"Bm*Kn`BqOr?CcSG(bJph:5JL:*j!m>eu37m!_EZ8FCi[&,d'6,kM/1F*nLRM&U>51X&,)UmS$tKFAK[O4nE7F"^pSj7"7Fq>$B'k9$iCB8aqdT7NRf=>CZ.=gRBcWEZ&7$!@MpOp0LTpOSMa--E2_-*OMOu?I1%TWXW'rii&FhL5IY(:'3ESn9V6m*/o*`r<3-BJIJo5Z?N1UY,7@:hZq?"%NpYmlS!Ep%n!WT./"5pu?GJlUl"d"7Z1^TAD5Zg,OKMaQ1liM1h+g0JaR<8T/]Dt)#HgGhnH]l/n>RAJ?g3/Hh55os4[:l3mYf:@qD4uoNQ6bYrBj)K5egYmpPS0;;-Q">%`6(i4N`E&O0?n00iXqdWQKq>6B0mPq6u2THiUV"-(rQCI3gJeYJBq-lr$KSF]?_#q'%kU^=Lm;*6,F4ZB)=`C#NoWTfHJ[(9TVa5djJ]0F8X+jP!b7PflYiD]LE;sY^hJT#*c&0_YNR#T941n?kTFA4f$6(rWpq6;6(H9^ANG;>q"WM=b)f7bHBZp2p^$SCJ`_B%0VKj=!^2d;Qju&:/rm'U[=t=/:'acDHcX8YOmiX>9Ps[E[4ZoQXq[6u.C!OQcuDSZi0h'opYhXXG3&$QU`o\(920B:X$FQ#:1)J,sOWjL3`4N2s_pZ<)acXjLs$f0*Tf.V2t?Vo?q2A*ge\G][djqnRc.dVl;%&NlnS*Ab;uc`9aN8dW"1fCe#2f*IQ2qJ'=/L>Q0GPPqY..(C%CqDY^F\q@Rm`p/42nf4"/otZY\DY;)Vf1,M\T5m>i2-()p]SULc+8l!j2"U$o1G=9N1QBul]nCpV?4c-tNctZ^\,io6SEr?bS%,SVk@qZugU+hZH\Cp.n*V%tC^bR;GpOeD'`%:KH%iBH.i5?Q.q;T)Q,^PG3LT6H^OOiEH/upFnb;L`N/[jVfQBR>D`u:rh,Rl:endstream +endobj +xref +0 12 +0000000000 65535 f +0000000061 00000 n +0000000112 00000 n +0000000219 00000 n +0000000331 00000 n +0000000446 00000 n +0000000650 00000 n +0000000854 00000 n +0000000922 00000 n +0000001202 00000 n +0000001267 00000 n +0000005808 00000 n +trailer +<< +/ID +[] +% ReportLab generated PDF document -- digest (opensource) + +/Info 8 0 R +/Root 7 0 R +/Size 12 +>> +startxref +7375 +%%EOF diff --git a/output/pdf_propres_ocg/OGC 27 - propre.pdf b/output/pdf_propres_ocg/OGC 27 - propre.pdf new file mode 100644 index 0000000..bdfaee8 --- /dev/null +++ b/output/pdf_propres_ocg/OGC 27 - propre.pdf @@ -0,0 +1,99 @@ +%PDF-1.4 +% ReportLab Generated PDF document (opensource) +1 0 obj +<< +/F1 2 0 R /F2 3 0 R /F3 4 0 R +>> +endobj +2 0 obj +<< +/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font +>> +endobj +3 0 obj +<< +/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font +>> +endobj +4 0 obj +<< +/BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font +>> +endobj +5 0 obj +<< +/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +6 0 obj +<< +/Contents 11 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +7 0 obj +<< +/PageMode /UseNone /Pages 9 0 R /Type /Catalog +>> +endobj +8 0 obj +<< +/Author (\(anonymous\)) /CreationDate (D:20260318161808+01'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260318161808+01'00') /Producer (ReportLab PDF Library - \(opensource\)) + /Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False +>> +endobj +9 0 obj +<< +/Count 2 /Kids [ 5 0 R 6 0 R ] /Type /Pages +>> +endobj +10 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 4352 +>> +stream +Gb"/+h/h=/&qBX_JZ"F[\M3e&8G8Vp8P+$aY=S@]DX'D617]m>99(F^gAh-f+Rq`0Ue*UE3]B!3;Lq%<]A-]Y/f#!(_XN>ZIhrV$]tQt>h@N(']"U[f#97$AU%.ftQP39hA3=7)E.O`O"mnFk<;N'PU[0['V-85Z,$,BC.:%VUf2%e0-3)SDIHhi6%Z/L+d_)4mFZd:eK9j5J7-Ee[%Bk\>Ei4W.#7(MJ&=0p<,d#Q&Y$m[&jh;tN',U?Tqum8#s?ld+ekBCrJl4L"f+rqP-,Z,;$IlQc`^h]r[6c>fA8'MI:i]jXH&oH*657YBI3/`R]8[e"Y8OR@;H'[?C9iKf2Y/mU$[k\cGNPB/S\3a_@&@^BC:gYI7dgoLml(#L:p+cQaV`%k![/$qpr2I1.ek+>PYI!D/7G&i8d*8SNQrDno/dVK0%elfT^[$EP.,Y6.2,`^!1P)*e%=i.!\g^Z0l*Q#a:-u3#>$eU'$!+:"Ip=S3/:C(J?%5^i,KZmU"#N-0>YO#3JD0pb[e2rAV,OD<7i>['rJ/_-F&>eJ&:*hKpJTS:V^06F0_)?0_Bl^('e8A,M?7oR0'Vi*1%^VgX#-C)hrC'b?Dc[@:0l">V$LGN<4QYW&J42/F$kmEfP;Ws2?Q)hueJ$5`<+4Jb4._HmNQStmmW-T'J$d.P>5&^/L%*eg:52e-=csj]m[igh#1>=Cqm,bRu_ZP/,bkRTWo2VHm?@GVb=]*+6\jIH#Ct9Qi:i"sTK.g&=ZaY`Dh[Z]j7\^HZ9W;fZct[.6VOub/%1HQ-f;O?s_n\BF\H!mk)?kM%ak"ML-]31Kmpde$*PS_<*Gr)uR;UEiI/RV@p\@orX*qj[+C^T.o59tTKZ=#hDN.5s-=d*&6FZqL:6':V^V5@qUW/3ph30Mu=]gNa4:G=UPp0WtHoVKGPlD!RQRoEFKpW+=&.-;I#\#s.s1-Pc$rG<$$2FNnpmZKm@Rc?&>b^gL+UUZ!#%u/o]\,@)/[qSs%mI].Z4BQ7+&hahI\/[+Am!-,3&NKW!K-%M*$m`C[qp?r^$lG30&*TH-7o?PT&7eZtehBU`%.bM0!ntL\NG!_icW^.df0l:;*S-:GZP(&!,OWAae[G?4)?Y[H/&BnetQ4>2iKaeGV/r+rs@[A;r\sbV0c'fsoXE0#U,e_EU8A7`MeXW4Hg<;8iYi)UboAQ5%EKPQKl&lb^F4SL@i5b>"duUQr:Ic$PdkPRUm*fP#]CdWSsSm8k6k$#NQ6.5JN2QnQBQ`Bb=ZMIiSA&pL4?"B[XHVRAll!p\f!.FpK8JG,@+7IXYC=1&[U`eR8M[Wq^;XWV@(b!mo'j>mc^HlHb2q!qS4*P#.jL@:6rk@-W6=@:@"D.BHq5Y](6<'2HBT@:75k5!;l5>W42b6uL3UedV^;N-!HHQr*U+QL>p_k0$bZAlk:Z;I<4^#F84agm4#,0IRH>ed[OY&`l&Nr_ka4?FrQS=Q9+r/q1"KZA1Ko9fQ='hk/>Ng8WUg&./?6#7/CgV1e&Hs)3L_Y@bg]pd^U\i\8_@#A>5<:Od=**C!OC#%*RO5.OqXL%J!J%K-SFF^=@8L'/GAKhT*k,/7,ke9F%P3>LcbBpGs+l9a"7Nmt<6Q]'C+:Ws0)tjMo[%IEo"9(RHq#[.`k*l1@#%_pdl3ojfn^5Nnrg\LTC0K*94$n\&-5e_bD7d)XrOcc(q@T"8[Ei#YQ-YKI8_,S4Cp?lmFsqlmFt^]eop7-*br#qB=^FK5fB5[oV__uW`.dL$JG%\J!gf4o;q!YOVQROPY^1NFQSt3RG.*@42YQ2t)6/i0=hnUGfp=Oh9\,2GPdX)1mJJL-BZMN\0DH+-!"7AIF95g-@Uj;Ygrkdlbt#=bVe@VI@Z5ghDj"Sf9tXVqXn!A:+ne)`]"uI@#4DUe+"tSkE?G./OI*Gkh6;iR#pXkH8Tubg/D1l:'l3g,NB.#3kZp[/J9auXL35!Qp?pHk!h3C`!ET)kVoW(VE(\"R]Qns0sR%BLA[d3VhVjZN[KmX==m;``!2u?SuSQNj)G*QST&"CHh<2%g/DS:_4Q[sLk&Iq"AC<_M'$6W,8.5#;f1,bGJYKuMF%ctZ=ojQ@pEmjlmS?)BnKnZaJ8$9DM`2e5WB5?REY(Ai6`$C3Yr$'k@1^i)AuMVc?0WbP/m+a@dcea5W-rB0K,h9Pl#2o`rW'd(oVFY3h;j`Ic[D!qkU(%%aii7ALS4jdabXXT`d#Q#87eo5)uQYTg.5OYr7np[R@,,odZ=tZYD'%J&2WCmA_O4oCZ__,>DeAgrX]r,;W'*c]A=?^X/eMK!$^99'!fK@6-jH#';%73ka#Tk4oVQrR]3:n6I:$lgH-i?Mu)bn_p->tP4DuQITZ.=YnJAg"0GT(3dW:9ui'BeJ98DclP*o9@E?DIDBHD*Hn]G5*:I0F(OGA&UEC1'E@FM6#M`G&^L=2VeJm-q$[],1$i2>Q@mq'dH5HNdc=mU;B0/UluHh`E)F0%Z$C?+O@`A*@Z(R@20$a],V5MrgVs]XSqMVM=N`7-Sl$]#cKgml&o/9o"o7+#X(e/rKBps4F1&FdhEqOXY0hA?hS9)=Rn7e*Ua!01fC7@2c8endstream +endobj +11 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 1449 +>> +stream +Gau`Sb>R@[']%q&mZ&t)7^Dq!MlpN^VhZ^7WZfhADq)4)7+lV7ZI=4#>fi$P':VL99arO:QEIF:3VV_L$3WTCr_3`Mhj8>)D^.T:Q02n6FhL3-9Ge^mn?Jg/8HKIQ\\fk?EcW$l@/Ds]u8Lo=WRDKgTXMG8'q:3GOI,&cgQ5fD'OV>@Le@80;gJ[?=ZkTu]AWKFPM/1peAe8PiTQUN:Jdlb$qca(d*R]TB]\kYm?/S,.226_-miWNG2tmq%O@kXpAr&mqi,D&^TYpV6n+#E%uuiY(\VR1^nFCqF^-XplO,t<4Z;9[p1d7\!>(8ZaEJ/aG)PbfP1K/=SG0n)A,(II7ro/GY90YTdZG4p&?]km"N$BMX`=22,VBpm^.o6TN6LC\@O^o"C+bkosA`j'qYD;0Jmdh7RH.c0)7[D]<`dqupofXUl+O!U)$f@9MEC)9FtRebKnlWt'U9TW1gKuM73^Ja=.quZ/]gD)!5CGWu/9E).Ggj^.lOEsa3$&00n%Eh1;c)KIM2V/um_ShCURjq]>HFHcO`/ICKDTU3Wk.l\iT/kf4Tc-Y"5j!da_fFUgQb(sCFI1JQs's]9\nD>TAHpnL:Hd(0FZELB6\Y&eap*Rs&6j&q'tATtc&6Z''p)_UmbF6t=)pD:c)4SM,>D*ULEJ9QL0YSWapbY?nLr-EAPblVMW!7^_,DZ~>endstream +endobj +xref +0 12 +0000000000 65535 f +0000000061 00000 n +0000000112 00000 n +0000000219 00000 n +0000000331 00000 n +0000000446 00000 n +0000000650 00000 n +0000000854 00000 n +0000000922 00000 n +0000001202 00000 n +0000001267 00000 n +0000005711 00000 n +trailer +<< +/ID +[] +% ReportLab generated PDF document -- digest (opensource) + +/Info 8 0 R +/Root 7 0 R +/Size 12 +>> +startxref +7252 +%%EOF diff --git a/output/pdf_propres_ocg/OGC 29 - propre.pdf b/output/pdf_propres_ocg/OGC 29 - propre.pdf new file mode 100644 index 0000000..ed89e77 --- /dev/null +++ b/output/pdf_propres_ocg/OGC 29 - propre.pdf @@ -0,0 +1,99 @@ +%PDF-1.4 +% ReportLab Generated PDF document (opensource) +1 0 obj +<< +/F1 2 0 R /F2 3 0 R /F3 4 0 R +>> +endobj +2 0 obj +<< +/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font +>> +endobj +3 0 obj +<< +/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font +>> +endobj +4 0 obj +<< +/BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font +>> +endobj +5 0 obj +<< +/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +6 0 obj +<< +/Contents 11 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +7 0 obj +<< +/PageMode /UseNone /Pages 9 0 R /Type /Catalog +>> +endobj +8 0 obj +<< +/Author (\(anonymous\)) /CreationDate (D:20260318161808+01'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260318161808+01'00') /Producer (ReportLab PDF Library - \(opensource\)) + /Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False +>> +endobj +9 0 obj +<< +/Count 2 /Kids [ 5 0 R 6 0 R ] /Type /Pages +>> +endobj +10 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 4354 +>> +stream +Gb"/+>BAOW(4Q"]^sbd?e22%GamP?B.>`4b=cr'AG3V7>17]m>99(E3gOHsC+E=*"1!.@+VmDR6(&1'SLBe(I"pb??pd408*K5u&Mb=:qNiE`*22&!E'"tFU>[\mcMBK[_0@e&KBpWa5.p2%2DKM[/Uri/dpe)E[o[e2I>;](U7:W!H%(!Gr>keb@m@mAq`1f(c^0$Cd.]N?@6.:7H,"UKOHAZ.dP$Q*GJ-)X1"u(3S)c<\mrpKi*73^do>uEn>]%jd!=d(NB^pAQfq[YPZ]',*`I>5NA8Ed1M8t#_&<_l]*ZrsH*MZoQgtj\J`+\i=ZrlbX#jVY?J<,JV)?[t#*dV[dGkGJiBc9R)OEj\?P%Q'Q:_0mg91cW6BW+#fOm.t"Br*=^bq1M\MLaqE$\sG5Jrh.bO^Un!-K+8UJ+RB0Y$]7MX_T0FLn&K71AoGs[>Q9&YOUNr9LjTtaIRjRo>,/V0YkoF'*b3sNkts>IjZ&O5KMBA"/>T7I,]"A:r9egdN8h+8S)VOIg/@j44"A#Mrkc<)Z;0hAc)TcC"@rZTHqmd^Pn:"S><>A@FM0Z@Wq0rn+k0\pfHm1/6tl!0HE?JGnE[KKB\^RZ3^8nHbL%'q"+Q64aQn;cjLOa:lbqXs#L!O41.q\g,L_5EL`*m">U%i7%oAB-!8lC)6jUZ)\mk$C"?2uH:3RjK:.!(Ta6\^PlZaJe+]QQ$iE'R8/e\R2g"le_9(Uhd"1="_t6<4B]md;VIP^"&9]DGiQWA%oCrhh3fb"I1Z>/gVobGKP8+,'AEBi?A9%d(S[]q`-jlKKUKGR5meYE`2ID(kS]XqkB8ieOU"tF/UI(]A'M?57BBJ7R.@iNsE%U-8?'n_p8llSs9o73VF;JN/2">e5So![WstD4)%Rm4>G%.jLmo;MLt3"'2#6805?j\^rSmIdFmRlO@/5PKSIs\UYW"h;*gf>q'>7$/k#9$,HTJg6ITP,dXVNL9oT\H2"cd61eX1:#["E6VAVUQ59#&FPaYa%u_OC7VnWeir?dQ=+sX63C_2kfk,Z-?ULEi4YVCV+7+#jMZB1j%S3QICER[;^Sk;h'\-IU27LS]+fT82&,XQV'g.T1%MPf,]*o6H(`mkOt=X&FbjDI:=tdOj6jXG,&U(Oqm+[JeB[>i'TG18*C]@3b1+QNs"_sRk#,"pa\kqSX"k6&8N0R70\?Z6/![HB6>>hf$We:/PM;-sRh*9ZHCWc8SD8:XgiT(AEh(j&PUMd$)^Uk+)eGDF)J,9o)EFn!iW?J/D1Mal\Vc;oIU$kIrL=qJ@6BjVphA6Wp^uKecq4=E$B]u+c\>s5lSAej?_O?*@)B-\l@5[>@DUD=XC0kgE"o/W:;OMM@*3/o4B._R2_6LJWlth$%0JDF;q4fHFPX/Tj/Jb$=>qc>VH<#>Jp"uH*:0J!(KK,;%1BMD8>T_MYV90;V)/P1N=;s@N="ec$:-/bU4C)H#uY(JP8eYA8p;mlXm9<$Mn$q0&Pn(ocoGaAnDtG3cgr0XpC>jO51b&d#nrX^mjW7s?==:c,gZO^ah769[+`n=G:`[<=UTr'do4ZOE8pPrhkX69SJPY[gB18rX[-.=NUtX<+_.IhZG'G(](S<8P#LN;-nFX*]>eP2>Q)(Y.$]+;a0`Ypk+I7TQ"ld'&%;PTWh)a)0fkaWq[iNZ8p);8i8GTu[*CRnZC)&/?XW&$/hr1q%/3p%3b.;2W*>BKQRWJ`!L;g\/dQ(1u;`?O>\O.iKjOhL2G-=Kk6_3EegV!\P8&\b[6nYLK8-rea%3j4aeKW4IKS@C$.1aoF['gYt`&ugi\'OE8c65'rX>S*"r,c=;3YZX#[1tb@6%-,628pX3`>4qiNI5f\MX%"EZ"fk81Jb0@A_BEa8,+8HoWehr/Ii8X>U<*9bhfU"8I3C,WL@i\\m`T2pHAd6GT^_OFTl?1j:i;Zcf9sJVGPi9j:D$Tm:\rE7a5]6Gi=LE%5'dU1J2C_8s?.F[f)L(LWfA2V`mZun!g'*UK5T&*c;hf_4LRj4#eI06]:A[h[8s)5mNK!Ih>r?]-C,PcH5,u#eO[:nt'mI=VsY&cb+c2'@1]T4MCJ(C$0"CDO'UMd6io2&"".?hDr:!lR(9+:?K)nFNfO7nU4oCDRDO]q!Q;sa0)UTR]Lmc!?1C$,\o)#q"k$\%NB+>eqb(Jr($&q"/-"r[H.YdYU6]fJZ!Wr`&\M0)Tqj?..F2OJPUb%]aY>h+8=I9?XI&+N4aVk@9:NS,rM(f^u&#lk\)-C%,oJopP8KVc;mSHfHN4pu?C(apa=d&4W1pU7^J%:WrKY[hmo;(U)V+D\!It]GQ,NZ+q,b89,g/N3jr$VSI<75?0gCi[?@'3,>l@Q>Z>'p4$"[TF.hL8]1KnH7DUXWFd!$4W!>dLDN[,'Y0JE3@t%NV(@*;%1EBfqkJhGsao`mf1Y4ZqEJ5W@)5)3Rh=6uDo*48)n]QB3Sd@"<4W9GX`37PI8Y-L2M7q$+pq(0Y77d*pEtU`/_`GnghLn(gA?:I\\+kr*[[(]YBJ#:e7d5l-a(2N2JN4mQ^snOpNTYbfm:5MYZ=DFRiLt0NZs#91Y/kUllZS3bC:T3\nihjT?EKi,(e%N#:DpU1C$[J>&#tAhb1D'P`E_W!jKK4D(SUZEMn8St-(=n@]X=W;5)_fi@c<`!+H1n7j%=Q2JIaJ'%*cp$;+&p5E=W6o_V"%nUB:qM3'DiU#g*aJ@=J_k2;MR42cpiH-JNq>Xafl=E&Y3t>p;P('nK?AF6?FQf#H+PU4<pX7Rj-&K,"[;T+;jRU)gV>8nc6jHmG.#ikm'9H+"3rO[K~>endstream +endobj +11 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 1427 +>> +stream +Gb!#[9lJcG&A@sBbUps];+Q*sLB?/)gJ*eeD]DeG8P'Ae*4Ja3P<&4&FDWiesc*IhKbI\:ODsq-1HX7*sos-0FDM5#9A1\L:5NJ5+Q%lZq9g/6G+I?qn%'rHkr;ihN;%`=G]_8$o4P,W3-e/#6@XiLp[O7OnjZk96PgYXO3*2i:E,P1WK@]"-;jCDYV7%;I`f-jhEl@nW'((`+V'[GZ,^d=hk>Dkt9R^DVQn'=ge)Y,*c8L(t3ar!]!K0GHq6),UR/BYPc0_Y[(Y+ff5RS0/3PP,b<'m^@PZN<2!inq\"R#3`VHd@I@BKS0([%FqUTu8As1KI@$8,1N:eY*AAa4FVp%.'7i>gkPh+.q64eP:=bZcJt_2itX(U;l1/;WY9e':BJ("UNf,@imYLOdC)LPf[iP"la0EL'(fm=ZNb0HI\PTb?[Eh9n.fWq@`fYSQj!Up=XdIZJu>rF1*QDW6E?IA1^$qbTQA-Z5=07Z)CMI's6fq4):bAo#-jO52L^%W*+]jL`Y-UP$0['RHOlMbXWdF5o5Np72u3iO!RS'2#&P'ZkNH0%bLMn?*T'Z($Ct35"R&hWXH\>qZ9ZV'cT'cP/!qfWVml$BKtkK6oRRK!&@^RT$;$/&endstream +endobj +xref +0 12 +0000000000 65535 f +0000000061 00000 n +0000000112 00000 n +0000000219 00000 n +0000000331 00000 n +0000000446 00000 n +0000000650 00000 n +0000000854 00000 n +0000000922 00000 n +0000001202 00000 n +0000001267 00000 n +0000005713 00000 n +trailer +<< +/ID +[<7d6de15b42eb949396983532491b6a2f><7d6de15b42eb949396983532491b6a2f>] +% ReportLab generated PDF document -- digest (opensource) + +/Info 8 0 R +/Root 7 0 R +/Size 12 +>> +startxref +7232 +%%EOF diff --git a/output/pdf_propres_ocg/OGC 43 - propre.pdf b/output/pdf_propres_ocg/OGC 43 - propre.pdf new file mode 100644 index 0000000..51319e5 --- /dev/null +++ b/output/pdf_propres_ocg/OGC 43 - propre.pdf @@ -0,0 +1,93 @@ +%PDF-1.4 +% ReportLab Generated PDF document (opensource) +1 0 obj +<< +/F1 2 0 R /F2 4 0 R +>> +endobj +2 0 obj +<< +/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font +>> +endobj +3 0 obj +<< +/Contents 9 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +4 0 obj +<< +/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font +>> +endobj +5 0 obj +<< +/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +6 0 obj +<< +/PageMode /UseNone /Pages 8 0 R /Type /Catalog +>> +endobj +7 0 obj +<< +/Author (\(anonymous\)) /CreationDate (D:20260318161808+01'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260318161808+01'00') /Producer (ReportLab PDF Library - \(opensource\)) + /Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False +>> +endobj +8 0 obj +<< +/Count 2 /Kids [ 3 0 R 5 0 R ] /Type /Pages +>> +endobj +9 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 59 +>> +stream +GapQh0E=F,0U\H3T\pNYT^QKk?tc>IP,;W#U1^23ihPEM_PP$O!3^,C5Q~>endstream +endobj +10 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 1441 +>> +stream +Gau`S>uTcA'Rf.Ggc%P)N'@0]_p2*2DX"sBbGK^1Mq1p\(gG9hG*\cX/,:CrEDiIYl!tpFFa\DX\`ZQl"bIi]rhfq8Y>[F\N<3ZFSHJOJ+/ZO:EI.9;Lj"p9pUD=A+[eoc"[;,E*Y&iB>V1si"!*P6RK=-X86e>nZVf#]J.[gZdgRR)pReWQ5"mW-2trqqShl`g(;XRiBF:_STdg@O"3$3(1m=oeOI!J\Aj#^,fi0=QI=g]:E42;P&V%dG)![K64W42rf^eV>V]QaUAJ9WmWPF"O:g]`@.1^%UsETSFIfPJSh!IbMD&&K)Dh8"J/4;'EpcoF=!6:h4pE%>HWg'`G(1QX6,p#/np3KJjTsf()t\c-83je0)*LW@Ybn*B+N9j>dk![L&&JK3NU$m'<_>_PTU>Z0.?RkgH+lYcO'aePbH^Rp:H2SQJL%&sU$V1)Z4gV'Xq+e20T%$jBQ]`hLpM@*EHXnE8Wo`$)em10-9[4HBhb3NU%@+0f(n]Tp#``?=LrUlSuaC6\1j;`cBC)#bog(A%ZjbU/Fd8=GfYALYmSU8^u6Sf31b;`4h`N1DXNU9P[KK@L$l!qd)r^%MGbZFpSpr+co%s7ZL6[\9)2^bD*]!Uk-FWemM'N+mh/jHb&lHa-ZgSSLN$+Ubn@c5bG&7oip!mp%_4FQY^BrMP9c.jf+53EkBY,L]hh7bgND@F/&@YU$+RO4mGt9!ZE61A\*n1q9[iQUO6l1t#9Q.FAHT!QJ[=f,UKG#!$&uRbl^O/A!aG*tB;lW+S_D*o9Iht]Wl1oGo<`puk1s^/[_E>*9E0amaAW!Br]PB3m),_G07]Zb)Qt@q"U$s]Jf(su]Z]9')^(Wrajst-Nn]BB:%NMb7M:I2,E.D)GI0&36bo2:&2E^LaH+Be&?J)`>^(d'dH8S4H$rlKH@Pri)"Pb+"6/e,#oOZ`hQRZJ^u'IPY^;nWV%['XpR&c0[WbrRZ/8UJ>uQWGh-Ft7:1[G7#2GW;1OoFu!\H[T^jk8.YcD\2Lm)#G5gm[e2Aj5$aS@YbtALgcZ?)oKS<0[,0J8tY;j])caDN.IZP*op=YK&l[Y?4!H7u!i!qT!gcbRu86uQ*7t1W&a,a[~>endstream +endobj +xref +0 11 +0000000000 65535 f +0000000061 00000 n +0000000102 00000 n +0000000209 00000 n +0000000412 00000 n +0000000524 00000 n +0000000728 00000 n +0000000796 00000 n +0000001076 00000 n +0000001141 00000 n +0000001289 00000 n +trailer +<< +/ID +[<30cbf8a5681ce7d8f9602f7956c47cae><30cbf8a5681ce7d8f9602f7956c47cae>] +% ReportLab generated PDF document -- digest (opensource) + +/Info 7 0 R +/Root 6 0 R +/Size 11 +>> +startxref +2822 +%%EOF diff --git a/output/pdf_propres_ocg/OGC 55 - propre.pdf b/output/pdf_propres_ocg/OGC 55 - propre.pdf new file mode 100644 index 0000000..72d0b59 --- /dev/null +++ b/output/pdf_propres_ocg/OGC 55 - propre.pdf @@ -0,0 +1,99 @@ +%PDF-1.4 +% ReportLab Generated PDF document (opensource) +1 0 obj +<< +/F1 2 0 R /F2 3 0 R /F3 4 0 R +>> +endobj +2 0 obj +<< +/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font +>> +endobj +3 0 obj +<< +/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font +>> +endobj +4 0 obj +<< +/BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font +>> +endobj +5 0 obj +<< +/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +6 0 obj +<< +/Contents 11 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +7 0 obj +<< +/PageMode /UseNone /Pages 9 0 R /Type /Catalog +>> +endobj +8 0 obj +<< +/Author (\(anonymous\)) /CreationDate (D:20260318161808+01'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260318161808+01'00') /Producer (ReportLab PDF Library - \(opensource\)) + /Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False +>> +endobj +9 0 obj +<< +/Count 2 /Kids [ 5 0 R 6 0 R ] /Type /Pages +>> +endobj +10 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 4321 +>> +stream +Gb"/+>BAOW(4Q"]^sc??=jsmEloqD3P%`Hj*6I(%9\fqCVGh&JEC;81rqehY#nRe(-L""fFEZ*.!^?tRnDN6[!.c7$Iu+)JYt!rt>BKCi+@=KC,9kq'kk5W`DU6%eOfTqj*oiDVjG2.sS2'd[^f\Ld:M2?_Z%KnICD`/-:le,rBOTiH!!aM%gBTQ[1EF/uTWT@VNYdPH@J(Z&+9aY9oL-[MdKud'^a96mcsfKn'UN8FSg9(?5t"grr@PKfFP4(IY$h3'8g]@#`j$HUa$&#pPUs=8VK>Po>50[5Ib>GU\uh!,jT]iho.!)T_1G]j<7h\2sB4N`mZFPI>p.3[+K73nSTH9QeP6S[cX'(>Yq&S9J#f1YX5B-mGc+Y+o2nJjn^E0m*uBB#X-&F_bQ8Dia`S52G(RZZr&Z^,Y5_`0F5b+P45H+=icjRg^Z.p*COR&'PCV8$J'8k9:@&5qTHb+.M8PpUrYb5-"t+YqRB]U8\C)B?%:4>UWDYj"#RTZ?;Ef@JX1[BS;i8uGOM`[$^]_3Ep8:JLY_cN1VKC(k@Nq;@F,sNAM$Ul"J,aQG,I?\p+^ki1\gL5eRZG,B9IlWPh7,F!n.O78Pm7D^YnSDCmJ[OcTk_7HaZc[0XO<$"eH!uY?EG5f)Tudj2,;rpN(X[%7<-NAZ]@pYV6Gu.M`3B7L"?%Si<]pbjVHSC5mBNs7JO??itnY2;oG+LU_W`8%KL&5G1DmlgshS92P8mZ3_%]Jel`Db^r0)b@JBcE_t)jlSVef`7gW1o2VHm=al@H=Ad"5]LNsD\!sKTW3u*;_%p^jfiuD`hi>j_-:A)5VUSU3BXQ9!gTOeE/IYZESP]RFL5!0GW;mWK)]=%)agmCb:D@lbhSrH&4+(6O45M=+1>\^I[/"`uWba5hSUJA'cY&L8ZYkWjKNA,qFK'b@R5/PU3D`C%0\&JnX=bkQTkLG"p_jK2")=Q8bfMSBl'%X=>'5QNcCSmIA`>__\6gZUia\$ZnA%23Tj@`H:sR6mVq'gpT<_W7^K;!3?o;mQBHNh]>[sAsFL?PA&p8mpAg'Gq3K(;bNP,(;`Ji+BIs)P7tcSs7IE*2F&J.>\7`+KFTkp.D^Y\1PV-,Ba&U=4iTf=,*`hLPnBg/*Y3j/RcFQH/Ec9oUI-jHrTpd&9'Kn?)jp03a@!2ZgZ/p-6fG!oPXXLig.7DC]Kj3(1EEpKf58hk!PdCQ*>;T,[d)J^K#UnmJRD.IR1b+f7W;;*S7NGXgqL@=]`C.(rA_4\&5Ca9jMp6@[c?GGj5cNde:s_bTrd(K^oZ4f_Mm$D_Mlkj@!*2#TY8VY'[S=/>g2g"MMplboI(71YsQFUTMEIe&/Tjt$CF_I)Us/C,XY\+^)m]Ag4k:f_k+"1fgZHESh=F\RmmmC6+Yu2C`4(dN2FccQcVrHLS[\0=i7+F@>8d%HFeuO)EH#dW[JcDN>r/OX*$kKVI;6s?ieu?*YAuhq[hQaY.Dt(u/<:B/6K;dErY6&RO9d@]ZG;sX`(805.D-aKo%LS4c:V)9T,KI@edlGhLdkhJ>]0e&Nkh*p.G-=Wo6_3EegV!\P8*+$&6n[c68-rea%78K+eKW4IKE^InW3lJFJ_"tce)ZQYEaF=<21P_Lus)e6G,SB_>YJFhIL?Eb*-[b#B&;"@GotLnHuqO>m#b^9M"E^_QAta!M-*(hjkg_I,Rj?a3On*;Q:IKn(,BP#hH@'0Y(+Trn%sNRDsH34SXa4S3MLn^)M98+5Up\GGmBjUb_2T3P\ti6cpm2fI[B:FTbJB:W`XV;/Fpat6W]>d%HZGhK]i,pAi0X#&-Jp#;OmX#%`2nE+aNT2*b`A:/TH3LnCea6@8^jgBmd4%kiaR.+@\^/G7e5d^sLR:Lf$;AJn/KrR,NhaO/LP2X^_el;2^g0:N/2RLha,##kMK;%aQDY@)Gq(%nVt+MTW^mk#,p5j+lEfmSS@I;Jeac[+X>P8eNtI'K7,W66N9s];a(2EV-)Lnu%-eh:TL#7S),pI9Bdk'WQ>JFf6]sL+c6Sg;Gsgc6bZGL3_'&>jPrZI"sch&&)77s;s_1"kg1`R1pAa#GLc\H&GHsGqU=?9]=@0@n2Cj"/m0L983-+EhfNZ6*8j$qQG[dlhJHq(XiX:#07%g4kR0ce!1=hEOneUdRpA*X>j.=$N+i1OT1U#;eSht5E9%s,lg,eGZXMsPlOhtHSX'.<$[,b!I%=fe>C!?Qf"]\@>RATJJO%7m?endstream +endobj +11 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 1445 +>> +stream +Gb!#[gJ[&k&:Ml+oG_BMN+Db,)[j!YCr&pMfmV#$``@[>?S[qlnG1Nb?]n)&AmfDTQ4uWNg9#Ek+'mg?nAFX;=oeIaLU03)E"D)(i4eNpr!#@/B4#;aNtf;Yr6Prt8jYK+Ku!G%R+^GE28]iM9T!Nk9^"cOo5VpmKl@-T#ooOLi*>,e])6M3^R/BcI0+l[_8>df\>WJGTuoji>!^_+Yn-r^<2rS^X0S]@,4os,f#KIoK)'>(\sjEHJ&]eKlI^/H`&OH^%Z&%?n9'=W66(eZ7$Io0i*=An_7@NP$JJ>^=E;F"RE'P7+FODskdtgO^&fkl`dj[2D?3kDcAn:T^AoNe/l0@F7j)-n#D>r2#4)Drk$b^NhO\ikr4E(o#WqC#$i;Ao=m-/&Sb!:1c5<(hNJ+-%S$nWBY"E`Ta$1YR/SiFga$J)2?;Fd:ob&l:fl$1f`HkP_!lG"I@PdY-k81.i:NKAU:>2J>La)A4LJCAQ>>Qb,eU#*Qe@.@]LJQQoV9(\Y;[C^H/dePo4>PL_atEM,3c+@jXi9E6;(l.(I!_7YcS+e4s$6"cKqq:Eo%[G]/oXMdZ"52'B_/b>h[_e-i',e/BB?!B3j>Q]mViuUBG+ejcMcY0MdmPU(#VbaFd;@;V"@&k_Z39NoigH_+aVn%C7dcf.+c$r:&d3k#WNYH=8:Jo]&anjW'I##]1K>$580rk?F;X_4E*[;@&hdCLU!0NPuThj2j^bogJ2soAVlQdg@Q//W_e,D^;M>JX7WKQot9\*bcr(7"gCqclZHprUfb(1R8_13Af;gGSBL6Q;pMUFelR(g8s\1Q$&Y`N9(l7WDpV+b%]UE)@KuMRW00C_)!<+>A_ATf1#FAPXD64ff3;Cd.^t+7eQ'6$^Q2AlXf-K@XkbUMAR%XkiX\$LI9S+je+QR`.Ng)]C-1CcRo+BpV,F(NLF'.+;`_4mMdESA[hf@\B]6M0QmdU[#J"qIBl&,ECK@/"<9=tZBf(j@:q).2$KDnh5#tc9>Xt8Nb/la6rcG4;2e48DpV64lWS_gd5L/$a^f7kR!en6cLRG!FaGAt-<4M#B0&%im92-sYnknDG`3#2U3dVL(bUgaMaRWI'=XgafOR5tSG[-LYhi&3K>&4rm!&\T,F__l'9mN<*rW*CCBV]lVQ2VfB2a7D"'BLdQ1OW9:GC5BV5NR)#3Qhh3JMG>oV##$c\kD6&4[DanYL$$Y#'a?4c-NO1'e`LN-E!;5Xa1Nt;3YiT8!p.lcb4+A'S's431aCMU*bpSsqIb\m/s-kEc"]"\-8'^24.6,MF0p\#lh"N5ZrGk8ZYp7CiDKt2EIOrlN4flp0%MhD~>endstream +endobj +xref +0 12 +0000000000 65535 f +0000000061 00000 n +0000000112 00000 n +0000000219 00000 n +0000000331 00000 n +0000000446 00000 n +0000000650 00000 n +0000000854 00000 n +0000000922 00000 n +0000001202 00000 n +0000001267 00000 n +0000005680 00000 n +trailer +<< +/ID +[<56505e2557d57a1d80465ffa553e36a9><56505e2557d57a1d80465ffa553e36a9>] +% ReportLab generated PDF document -- digest (opensource) + +/Info 8 0 R +/Root 7 0 R +/Size 12 +>> +startxref +7217 +%%EOF diff --git a/output/pdf_propres_ocg/OGC 66 - propre.pdf b/output/pdf_propres_ocg/OGC 66 - propre.pdf new file mode 100644 index 0000000..a4153d8 --- /dev/null +++ b/output/pdf_propres_ocg/OGC 66 - propre.pdf @@ -0,0 +1,99 @@ +%PDF-1.4 +% ReportLab Generated PDF document (opensource) +1 0 obj +<< +/F1 2 0 R /F2 3 0 R /F3 4 0 R +>> +endobj +2 0 obj +<< +/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font +>> +endobj +3 0 obj +<< +/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font +>> +endobj +4 0 obj +<< +/BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font +>> +endobj +5 0 obj +<< +/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +6 0 obj +<< +/Contents 11 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +7 0 obj +<< +/PageMode /UseNone /Pages 9 0 R /Type /Catalog +>> +endobj +8 0 obj +<< +/Author (\(anonymous\)) /CreationDate (D:20260318161809+01'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260318161809+01'00') /Producer (ReportLab PDF Library - \(opensource\)) + /Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False +>> +endobj +9 0 obj +<< +/Count 2 /Kids [ 5 0 R 6 0 R ] /Type /Pages +>> +endobj +10 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 4541 +>> +stream +Gb!Sp>Beg[&q801^sglj;q&5g,eHjP`5LrGAOVdVm+Jr\MThm=OX3M^ZL,Ea!D-NE&i@]e8p=(j`6\`t#(mFB^^pW7)#fW`hpiB,5:t74COug\Mt`$HO/'Z'MANH[]com>`]_%H8NP`#C,cp/maTof.jjb@"aKY_nf'+7PU@N_u"\+K1>TK3ZBWi_f7e)_n4#qIe[l%ga;7`HM(KoSsOd\]>&dhrd2$IL_bJ1Qf[?qosaFg:Ak`.lBel<4C@AJ6JpfCLNuOdeG\Yi6UIO9Om4X3Gdr!+*2CE#\P8]Z_dT11jUjX=0V:HSX7[5k*mnYKMjC!%gB1XH[]]ToY8T?p7$JXSU>WtS^k0Jph.E4Ta\r7hrA!Vt'U.([5f9)]AGl-B=Rt9U2B3./mj>'PPo`gU]SQ0X],n/rPB]9p8nSP7D^ZArR4Jb0!>b&TF0n%TkY[Au]442n%NMFG6.cpL]J[qa9GXk/:aF`.9Q4D4mnRh_Pfkf`"(LeJMk$]?D[0ZU@V=Ih4GK5,hQ@DGtnmrg\MFU55N(J2hl/D0OF%3r@+:(M%Ei[u'S1%'*YIFYh1ZA4g\G6E(]`FhN)JCDa^55,&\@"V#OFjT^gN/eme(PDtWWh^IW@]'T-4pg&gPVgTOWif(7-iSpGfeV34nW=]B_GckGVgRFrWB,p)A.AEZ9.gnerguQ#cuZ:F8L2V,GT-I=@W+dIjRZeRgpEb5!L9b4uWY"&R,@Pmie7Wo(5*#UX3r7"0mUJqaTLT$@?$Jq4*OkAUX+Jq9[NT5Y[L$6#e#k0kPJPcKCeKuhB+_5a/:L2fu%/JJ\h(m>fgARcnG\pRF*Q)6=/KlqEEGW#,k-S;C+Y@.XT$:QEOeFZN(#;Xrg*q$Im0[BkeOj@&qD<\RFBG\).@O%l*i6G*Bcbnt"^tUub/U+0K7,=P>@+B)A]4OpY*W*i]*PF5No/(.f^*e)B[reKH[r<`,oHQ2:X.N.Bs#gfQg<.;[]('pcg!IUn9JP*5$8qe_"mWtr4MQ9hH?+Y2R1I6M"(9j!#o92MurGt_FkVIAF8Kk[IW^jfICfX.b6!8'ja:jqBnA%&\0mEAjPRi84TS8hPQ3"H:lRWTJG#g8um6hh3T5WpEncD-fLF7JO_K.M+e]+sR43p[IDnsW//OZ(ApiT."FZK(G%M7hE9>3..c]H\sKYWhtfTl[YU7`ukiCLEI&X73D]`T##^:jFVp8+X1%23#Cd(e.ntkFCMH"8WVtYOnsiHM:>>K1e&H3)NgbhU><:q(3;cjJ1mP3nn9!8eREE`qhrJtD8(('aNNJ?Y,rP_Q"na;@+a"_Ib8"KfJs.eH+70P_NjXL7jgoE0[atJ7[dCd)MUt*DO#$\UC-(Y`=3;.DZ*_-\sfQ`jIZl$fQSn^s,e!:SORQU2aWhU8.c+t2*'"gGuS#ik2(a_3B;*[004!tE+rc\j4A,'e:a7+oN(e6&*mg%CU>'ZARTPNg@45:Am!d6@03>\<[E9dl4)@hk`_H!`B-8i>DlpDXt+a0;6KXLIC!^(uBjDRSBE:sGTX-T+(VOg+84CicBuck2J6*!VOD)Z_m.-oLl_$U&db6X)c;<2Ah20otbSj&mpCr#FP;U%KV`hql=22_f\:O726`_L6VI1Ck.:ClGLH9F5b1XL$!3h)B2_qZbO/#("*rlqB&^YckVZF,k*`=dY[bSV?!,%1Sa8Bn250D1n56MLH94s>+,/Z`A"g/[>Q40QpB0BP!n.sn[GGWib]h^u"kfjHk$dIcjUL)0Nm/Vqs5\@lOXi`0WRrLI!95cYesO+&+H`i6,cPO-p^R&WNhq'N(fL,ocH75Whk7][`$3%o3^@0^Q7Q_DoDgTBelDn?BZ-c'4b//1^V2:s$U!0e258ngh.dZB][ZL-G;!-5dEbnok2%OKFfHX3gY'4\E(96p^$nXg;H/NWB!nDrXS0c8fMVu6&\Jf^9kZ*^:u3QnC@rPao;FB;C=nYFNuGk\H/T_lO!#M?@>-6n9_-Q^'u')Dp2@+q!@e&&MbL>l@a:LUNmfrS>K:(^5Bhsf]d+on4W9GhJo9!,=e:)\WO\qH/W#Yk(+N#MlV]f9hr7sm@Q$,N%Nl:*8%G2^KAAs^_jlhD3#Us\iMERYGR-*h1ABd)Sg.2L3jHET[8,9i:%uiKHF6MVnd^j?=`7WDFu:,8F0V:4hjW;c7cV)79>8BELLt!PT*oe3N%cJ0\0jW;W>lDZ'R7*"bAB";-.C1H]V3L8'(j;Pc?IA=le^7ZnYRZF9U$eR/=KCVrHV?=%E\rHM!HlhB`3R\,oU;0km]H$l_.hl1;0=^B?nHqg+N?`Wpg[3s2:$X@7,OIA,HAr:_bYNr#3]-mE3`q-19JuFhr_ljV-'3V#)M"uq"`-KFSA,f5g)su&FDB>S35ith^PIedsIg+:2L?K_(XS\2m;IX-0"!!I%Ti%*5MCm*,`b=)0^?F&R:]37EGgQd06,AU72^?!Og=g@=2AY[ot)6t!fqQk,?9(pHVD1Nb>hX+5u)id^Aeadde.f,A,IRs1e,gEr`B%lCgC9pT4ck-C-qqY:Z7(>:pFP9hubS9t?YPnq'$?Ma~>endstream +endobj +11 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 1444 +>> +stream +Gb!#[gN)%,&:N/3m$m*39EPE9nj@"o4&+P9j2=glU_e];A9^XA+\9SEhd,^qags(!H][19mc-m*@=8/>i5!2LlV`4@BJ=l]moDKLYX$or8;bLCFa;QI=,35.a[=P\AFYsh0OK56>L$97EIt=rnW/13VIeKI1Hr%\>'C,N+Yo"Ipn&]0.3D`=&V:;CPj(hdJ\8Z\K6"_3j0?uTD5or<,"^Vg17o4oui:)e<]jFApc/C=N*>Rq"8`u-=QBi37IpW$S5%oCDC*M<=uV_JF_OA`++O:t93FQ0640^R[p3.<-tP([b1:75,aip\'aeOs@-B)@>,SpJV).3S;,VXFEQlc/)/[+\[4,+/0Q]:4Y+%Qfae?KaCq*DiZ$Hg"-LMap\=X?$*_@#>BL)8ZE-m9[Qtt>h6^FSdNV,aXL(Rl;W]YP?[nZ<;G(g=UqBK6]SH>A/`g$k[OGBf8=49L(*+b8I:hMp5OW3^%cR*DI8uKUo3PlTLG`2X7kU,XDe\W-0bF3ldRUjt2:D6N4#4q^\j*2<$]aeHNFubB?UW.2]qV%ZHI5\_B:g-;#$Wu$>*'a\aJ-gSR^n)_hR"84h$h_9B\P!*WC3V_dLnX=@qhdAPI,[`PtPnt]P4EfNRKE<`l&_U?-$8_H7^L4IW]^U`YfQ6C$<978>C#@TI:8HjJGh"Mm@>F:j!9b6`TL92ElS5#.lF:BrDH_-!QTGS$4F5#Z2=p:]/9YddDC_t]?Q)X,KhnHY/;b`ajHUZC6&)P'Vb6D","%VsR;Fms=5jQF,kFt,utJeVemDQmm^Zk%=WD+qD\6:fusE2^Sbt)IJ>em6MN8j30".V&;nC6'0KIg.>P+P^c()VXk.CV\)FS2k0'H^,`78qHk@A]d\>)1*+!c;8=1466*ftYi:lu$l]+dcD6?IPl^PcBr52$5,[rD5=`F-ao_lVb'h;[8ijEt<3oi-cS_1fk=,\C1%\DuK$/0.-Bh>k0irupN<)n&k^n'"9O2U!m"_rQX@IU_e?/7cWk$[n"3"E>!*M@1"j3pf3`8J,>,mH/d2pB1W?l!2+dR**TTedd...0R`5s9sdal)[Gl>a/BFt3$TC>'3Sp.qT.0APl_]DkHR%T49AR$RsT%`N4=KF\Qrrc-jK0#of-58KVGa4jnjJg_K7%CJl`l2~>endstream +endobj +xref +0 12 +0000000000 65535 f +0000000061 00000 n +0000000112 00000 n +0000000219 00000 n +0000000331 00000 n +0000000446 00000 n +0000000650 00000 n +0000000854 00000 n +0000000922 00000 n +0000001202 00000 n +0000001267 00000 n +0000005900 00000 n +trailer +<< +/ID +[<5f966b9fccc853292c327990e310f686><5f966b9fccc853292c327990e310f686>] +% ReportLab generated PDF document -- digest (opensource) + +/Info 8 0 R +/Root 7 0 R +/Size 12 +>> +startxref +7436 +%%EOF diff --git a/output/pdf_propres_ocg/OGC 68 - propre.pdf b/output/pdf_propres_ocg/OGC 68 - propre.pdf new file mode 100644 index 0000000..b8aa243 --- /dev/null +++ b/output/pdf_propres_ocg/OGC 68 - propre.pdf @@ -0,0 +1,99 @@ +%PDF-1.4 +% ReportLab Generated PDF document (opensource) +1 0 obj +<< +/F1 2 0 R /F2 3 0 R /F3 4 0 R +>> +endobj +2 0 obj +<< +/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font +>> +endobj +3 0 obj +<< +/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font +>> +endobj +4 0 obj +<< +/BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font +>> +endobj +5 0 obj +<< +/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +6 0 obj +<< +/Contents 11 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +7 0 obj +<< +/PageMode /UseNone /Pages 9 0 R /Type /Catalog +>> +endobj +8 0 obj +<< +/Author (\(anonymous\)) /CreationDate (D:20260318161809+01'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260318161809+01'00') /Producer (ReportLab PDF Library - \(opensource\)) + /Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False +>> +endobj +9 0 obj +<< +/Count 2 /Kids [ 5 0 R 6 0 R ] /Type /Pages +>> +endobj +10 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 4382 +>> +stream +Gb"/+>BAOW(4Q"]^sg3#PN>nBH'X^:ZP`Y@I4/>l5YFn-CSAC6]''@8c/.L_@(&(VO0-P9bU9iE:Z[:SZ"pSu67H2474r^&os424+gX_q/h(k(-0$8@e@ZcGT't>YM$Tq7KCl0ar@qZ)jeDK#!QmdI&h]d4Ro_C'NSa[@6HjG>*&(JJ&oTSRZt@0aT?)p]p`qR*F(GncZ>mh^<3Y!(2fJ_/1k8/-j'YFKNBnEMH//`4ULQ(%3$m![YOm6f]fTH@%*Ie@]eh^0cJ;qZj$3'iI9$YD[JgL[ZpIbLjk2NNo,/JDo4:7\!Y^%Lr;%*"/KL>j65k]*rc."b_#]Gta=2OhBKr8r$%IPf_HP::WS&6c1mg%MJtA.+%?:M3YC[UESs==O:SgI;AhC3"3%i=j2cYICd$fFD9?`f;rKZAc9V0j9(\7o_G_f?QS=^?7;pqH:9qGs\Q]'m0Cqb`u=pb(117>(7D77lX'^?bs0JA&\#L-c-NjPl*$J*_Vi_05ZJ?-XMVWs'Y[*Rk-2!XYs.@-bZr7buC5h1>'?<[%J?L/i.hm5q:kFs,62E]CHG4(PNhl36H:!r_!DWh(^'QXb(oABa9=p"G2'%<+rLc)h%Su3uT>uHBUl/?C1m;6\F5"j[+^+&nS?,n:L+LWa>=ZlTF*M\S;!,a;*lm2iHgjA8!2?0WQi0sca!!ZY[4)$Y*7hr@i)J&e4Ft&_4QksTF.Z59G]Kk/Z$+"p\%n6D["0Y[(6C)#r<,ReI-B%KmH/J;AdE`]1-9Q=3Y\A8)An()SdX4EM]/AolT$X4\(U283Bmp/WBicX998tWQR4EuOMfBM;P'^"cl)No$a#4a:=N<6OLBEs#^U3J%m7+eVs/P`BGgU!f1m`jQb@3C`Wm_!_+&@,6U2-4b7PZK9HYgHcQb!aIGCcu)dug?K*2NZF:>-U.c=uP[BkI*n:1Ba6/hYJqTFroQ.=6l(WD,L&L,.fO50-jn^Vik2?7ASKJGGZ4'=?;Vj$R8*5hZ&`ia/O0:04fpJA]MBoQW!H[;`)5TBHjq2lD527>DguP*KQq72H=L'NIM[VD0%":N+=5JN)^Su[\TNE+W,"u2jMNgWbg5QH`RZ/f@=H+fS(l\St=)e8pO*Q9X>(qilq>RVX@f&/Kb/8J*;"6??;t2*N"e_+^VA,a/24lJB&D!cJLI.cE@:@$WBBt&UOi*?[93B*/Oi(Uh/iX<0L4q(Ol1324Emr*<.8sg/Y\@4,@@X?hY+hCT%Ps\+MM=hMLV`Ut?.#lj=I=`3eEWb9S#2=c/1XV4fJIUc/=TZY%@]fkf9XE%F:=rj[:N4N@.kkF/rcii3a8FB;m">fYJs"9kPp>c"!LCa=X\[.`UgEFa83K%G"`l$?,#m8Q3eSX-gCWX/m>Cj1r%0...jVinj",T#As8b$A3@0Z,!0'?o2kIO*hCf$BZ^fL(O%/)s5I.">8-B9'k2e68]NC\HFI_9qI7qgGG+,t]M"=,H2SL-@19e78@k^&KR&N\TH#[$JHgbXPp0c\-JW>pa2<:)(SCtResWBGNnVfnjqJ1g]brmM6$'K.1W<:3N#d*9=ukbX*Apu6CY_+aC*$_1^-60b$3f[K!LN[JR4JQ1rD:b0r;qSQV&Y2Im)%9Pn`D!o'CgS.dh>-TsffXQU1d&t-Mfckpb)AjhakZZ4m2$0;$Vk[(iNeY+lN9HZ8fXi5^Ic:Hkof*@f$tMg^![);$$J)$R2";u>]<'U6qE[p:M98Zs(+7^ctn*)%ah#mo\sV)m@j>/o32a=R8#:];uQ*.#jqFq3_,t8`F*_/24+lod,D;05aYFFXt6OZ'ZIM>r,[sl!BVf@D,e%!j?BKYUfiD.CY(Skju_+'1\oV5/'"ij7[n>FY].i:+O-rP5b`5!.[Mg8`=N9JdD[NfY?bFUYlA-;jKcVV$g`1ddbWZ!gehW+E:jOtk&AOXODgj0TmE8`.&tl'(g-$!*&Kc]p$iYr/0?ja'%od1]rchtSYRk+4W<0>5$,dV$^N"XPGleWq:(^V1(NZU:q4kREAX`m-ldWMF33gbr2-f[4u)9gHH0H7&`A3<9sj4OrV3ZL7(OW7<*7_Lk34=DK%[Y4jG-uI<\&p34;1kTaUSp_UR,(KA3fFX?lV>=Z/l:ga?oe/8ag!>;OM:O;]8n`/O61:U5/X&=q$\/UC7%;9VSXu3*khfRqn9@DF8'IAO'`a\VB/`oMg_Dd`$L2LT?]t'r_:tJE-5KN_iRQ%RD$+qIEoX^)Q;TPp8K]\CS1aAYj"t]!tAV)'t&lFgn[Jc4q7+ZBX$..DLUMqok@:umBWIXUq]/me.DB#'<5QuRc/h%*BL3,$mddOj&mpW7=KYgcaaFLXcW#cdAh%K+go.-FWJAOaKX/+g;=WY7CdrO>.ciY$%63*n?,FVaKbSXsnXJO5QaBeY1p!^:id1h1=[P*D(:H)>`OWE]SI>(DTNED'\UA:d3HDEQel@Ye5TFWV+NDDW:.h\+(A"Ct8u2"kE9endstream +endobj +11 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 1424 +>> +stream +Gb!#[9lo&I&A@C2m*0PuV?)8k.GnAl:#3)7`)1m0"X,$,*YMuh;Xr)Z!rS-j;0J1!B0$r8+Ek;?qt;TA;'>Y-mXLB%r'#o-5:B>Mk"D@u(VoqahTmS,-FEATJ]E?r#U,Xj*Y0+*pWuU(\QV]]!Zcl%QlH5)0QZc_NCFfW\5*s1k:'*.mQY$kJ!aTgDsfgk4niCDq[m(6X!X1E(93OZ2NTR/Vl<@SL8<1=[:!F)aeh+Qq%Lu%K_T8%1_8bZC0AcCeBgaWD=J1f:nRMiUBqRSTP8r4=BKcL-;6*#fD1)-M$^@B;m)4dW(1/k/N3k$d5*;^3UTph%(0)tq_#f4kU8h4V8R+r:c5$rN];,j_k>^0uZ)A&69.^ZGd[$K#NDJmGp+U=te-Sk^ZFkf;/0[C>\Il@B@HZ1KB!F$M15E/Z;1s_r8g)N"Y0cs8Y12CUl6no8M%['=ZWZ(.!kFFJf'tQWP+Ua1u>54URp*+6TW3slaWE)`IFS<6gC+r(dTEX"'K.P.RV3qWa\?<:B`Lj.kRu83gS@>3(^a8X%X@_j\8pL.t#%YDJU2sH06@bWS5F-\sQg[gmq;o7<0D0U]=EHR@c%i7UUk?;U._SECA9jd4HdPg^q`7D4L>s$mLh8me`>ZF3kiqHrF(Fr]Qh%n<[Qc@cHmWfkj`qnjrATh^qCeCou5g4,VZ<^86Ksd18anG\7S5@p=h3M[+Cmh_9:pP!r_a`&R-CL"0q_.kol?:[4%hk#ApPHmE-Ck6OZ,^?::%9Zb0?uhkkK2"+g%]E0m"bCaki<":jq45>#EQ*Nqh)d`=,*)e;&$rY1/_Z.X,qofQmMdd20+0M`D(R++:jf3#lr1Ktr_^:=qp.iEh?m]76ls':9e&aCuX$jnbf2`S-n2\F1cMW`oWJ[ld"id#\LI[_++1#hL*8]Rdu`S/foip;GaB)4uAX-O.?USf#[.g+j0LK:28.V8\mYLX(:WUSo.%K7`0jg#2AW$?Eblp+#STCV(CorSAU=]lL;pmf"R;3_1ut&MFXl4c20.0c_6or^#I[.^*Qrqgfendstream +endobj +xref +0 12 +0000000000 65535 f +0000000061 00000 n +0000000112 00000 n +0000000219 00000 n +0000000331 00000 n +0000000446 00000 n +0000000650 00000 n +0000000854 00000 n +0000000922 00000 n +0000001202 00000 n +0000001267 00000 n +0000005741 00000 n +trailer +<< +/ID +[<81c14c56cfaa9f892b9ce19cd6d971ce><81c14c56cfaa9f892b9ce19cd6d971ce>] +% ReportLab generated PDF document -- digest (opensource) + +/Info 8 0 R +/Root 7 0 R +/Size 12 +>> +startxref +7257 +%%EOF diff --git a/output/pdf_propres_ocg/OGC 69 - propre.pdf b/output/pdf_propres_ocg/OGC 69 - propre.pdf new file mode 100644 index 0000000..0a3b960 --- /dev/null +++ b/output/pdf_propres_ocg/OGC 69 - propre.pdf @@ -0,0 +1,99 @@ +%PDF-1.4 +% ReportLab Generated PDF document (opensource) +1 0 obj +<< +/F1 2 0 R /F2 3 0 R /F3 4 0 R +>> +endobj +2 0 obj +<< +/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font +>> +endobj +3 0 obj +<< +/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font +>> +endobj +4 0 obj +<< +/BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font +>> +endobj +5 0 obj +<< +/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +6 0 obj +<< +/Contents 11 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +7 0 obj +<< +/PageMode /UseNone /Pages 9 0 R /Type /Catalog +>> +endobj +8 0 obj +<< +/Author (\(anonymous\)) /CreationDate (D:20260318161809+01'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260318161809+01'00') /Producer (ReportLab PDF Library - \(opensource\)) + /Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False +>> +endobj +9 0 obj +<< +/Count 2 /Kids [ 5 0 R 6 0 R ] /Type /Pages +>> +endobj +10 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 4351 +>> +stream +Gb"/+>Beg[&q9SY^sgkO2`,CTamP?B.C!(6+uqgB;tkj*ku9[S322XSs84s7^*Nc$Msq"Edt$-?s@s!":#T6?kK8VH&NR;i1HoIX%T[>iC1EG7GL6M-B)I?dqjMSUYrAm4TMtnG$HAo=HqX3qBgMbL,7s+VKH<"c&<.>:*WmhQaUOGMpaRc7b,kO7FEL=-J9&7g"1F+7BJ96Rol.tSEiu%0lnN'r%]A5A2nK+h#Qr!.6q-o?OpLlCo7.KGb]gMD9HCeqsnSYU7k@uN\M8t#_&<[RI/D2](1-sZ*^:B:h,\XH/N9<:U_D4Rkn8Z3CD4i016*59u/3^/39J[;,A6ot)jN3MiW/"Noj[clrBW*HVOf;0IBuLggk*D=#,%18jK<$C4AV3QOE%mNlJmJ;'\Ob1[PsA]+:q`!#<6\>u]U2quhS')XHo%-"#K-0!/)B/^%k/<$`-Kj$hja[Ns)YK3$8AhR4psMfmB!`SMuedlpa=#l4Runlm1pqe_5M^SFT6:Js$1[pTssZ,KZU^U(cfH)epRjo6B)_dF&.20B7@t;Eo1B[;@8)VnEIlL;"bu)^Jp=aaN**-Ko!OB#N4pq_fqq\5X7Uu-K+p-i,;Yq$]Q(b\4FY[68fCr#j;>D*[[+ZC"$Y31>8g0r1Tuj:Kcln+n>tPk&#bq4;--J-mHn36\Q?O:"k^\?B[Nop%-#Ai%WN/jrMA36XjRBd5'0*N+NXp(=&UdNpp3BV\NLUb+b_BF@H.Qo6>r`WA%+;87Z+JSk8UB"Rl/][DBp+deZXfK'^9a_su]U3c6c?7]h.-!8KeT"*$g\$5]_?rFlB0e>F.csBCT0L1X^,M;Qn*b1>\&fdI%\]p8)Vn(,G-e&7"oDQN-W)P.&?0k>YZfM\QH^Dt!/&b/`eSW(q*eJt9:)Xa=L30EF+'!r2Z1'Vs)LRQAD/Dje^Musr:mJ(esT0Dm?@Ne$(?&h1an)JhTR-!Bc7TbhRfmlHJfZ-:9:ogghAk+GO*d?AO9V^IIbH3b1@$+9CXhIN5QoplEI_^(jG^ZM.(1Vg6WgUU39S`Q&+0e2"'S<&kQkqg=]HQar(..d+IJQ:`IMK:`HGb&8Xp&;aN1j#d,tKdl^!3mAgWH)j$iLO(4Xi^WCdAh09pqFr]=[*8PWTgMg+'b1M[\ba=A>9O!K+9H/rm>YI;Y7_'Ct'f(4VFY\E!\,_aK5c6qZU\_;/)8Z.XK#h#l.2\F+m$[dD.9K^AC^DUo(G$P[fn*/,/f9s2ROo&8-J&D/$^$QS_7F#^L2f[GPss:.$T"@d7DZQC@5,BP.gji2"*:]1MCpB`W='JRH'1e9\mSsNCl1%VeqG*H9oTIX(^`QDe"VB/lj6R\)NtDK-;4)*Q9+3B)AdCas!+*@IA-D*KuB=I4F^A4=FYM@:5OTt=!52X;*r7nBm+s4M\jPNc#0U(Kt8!j*nWpc@9YmPK0d$Q]3;9p]M@pR8H%dX0<#Mo#\p/1hTX?bmWFG$fq?LX!*diD0\?K"g:>On>(pZDeu@;:;_J9CeSj1#H"9!c(%:k3q/lZ3\Fa%_3L))&YfmK2nG=X7gKm1I!q/e!$Pck+m,bg$ZL+sM.VirQ=BSpQUbEuj"kN6Tj%:mP<%/7*bABlR7*MH.g1k+*p)1gYMq.Tkcaa"DP=c*iBgd7\q7#[*#Zr#iJhX&[3%(E!:_(d-)k3$4Tm<7%#>^3Khn3Z^3%Qj077VX8DqbD86$@B(>JTf-)te=r2pAABI=ddBeE4c/h^QTGN+>O8P/Qh#&`]Zm:06Ms8UL0p`:qD'a@J?r*MOc:uTVZIeW38F@.)nHBK60&57AEI^u`m&!S89qXDG"$N!FNL"9!rL\pr[]I=G:jA+p)YL%aOAgihFt++"uil41O6J'G&U<._+U!%WsG+jU=c8q$f*:AD(&P(6D'ttBr3.qm51a:r+3OjPA.,+FQ@J@Pr[D!"4scG1pbnk_#IN-$e)ZHp8YM]j"O\s^ROrehS]'e5o[L3B$qYnQL0QR^u>c=4u[-)Eb(pZ]hQF?3=EK-K@eJl'5Z@RV[3@_VnfGb&aW%?Y8*gcD.?dT!cE>Fu."nmhW?%7PHp#buP#2[DM_h.Os*Pp?Zd*U#XpEESEeZ5u)Tj>&H>qC[0fHqp%:hN^4J/UQ:dEW+Wk;l6u]c::%o&hbeKB^^GX'*>9+fnbK(hZ##?NH4>`+QqcK6+gjRDkj'i52`&guHP3GecZt*SdA@%ESMpDci2?m(qL7fBAr!*u4BD+`2_H/hh5h+pCjI*6T:_(Hls-]PtDtK)*TpY9P1pWh-@(o:hW5Jl*K/)f/>VO`1p(n"SqMP8m_:T,(]XCjh76`.:A*)UJR/K;2[@r$m<=UP,3?^RNIm&=IC$2,h2s^a[9C@/e`bkmI8"N\uACL'b4S7"ik2I00Us&9(i]9`FT^f4pj6>WN3gkuTpOfN_m+.\tSpl1bn*B4[E-"3oTPf/IbL?":dHAD`&pag9Ssb\KB-uQulO!ArI!dgmH"T2;mFh84A:-9OH$_1C5Gmib;u;8I#/B7KKAV(!i;:K\RMUT_-gE8`P^gLtfr/!n-!Rl79(nb#8M"*Y-2Z5J-mhRK&VS&N=<`]\P'Q8\$=EO/a)B8b]b1:$[l[tP`'M:TIIEdM^H%po&5OJke-`+)n'Qs`&q5\s7sRr?VtPfc>s$A(!';+MC[>\NjOa&'-%9U"YNNp_>Kbd,;)TZPD:uR0?qs6N?u!gI_Ge5#k+Oo<@eDfUGr\N!kd4sU]d^ubZeNL3`I*fLj_H$fA?gN.@?fT)^22G)qPAUkc"L#J6AUsf:2VCJo4>P&,A0+0o(491^[Am'QQ5I;G1ZOY):Ks?qGUS1]TsN!MGIkB#4qY&H[dFm0B]`=J,Ap5-YeScOj^bFZ/5:ROT)tY\[9EJ![:YR*pE1;R28i04sh&q.?+jl#:ZNUZ0VA4RZ):k:YGjP;MSpWjL$4q(b]Dck-C-gW`p9o523sA[HR9k)o6;Sbs9b;sf\~>endstream +endobj +11 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 1817 +>> +stream +Gau`Sa`?-,%))NgE3h['d+g)3jt)_d<*!4kP:g^X-$P6)bU/V9n)pCTR'\9^:=[jYatAhWYrk.A6&0:S*:lD?LgI4Ir(i(fQW>&GI*8GgOja9d-UG'O0@GIXY*Y@T0AEZmaBg3,J#;4FXH]PW)?Mk;muB$-]t[V.5(1k>^N0:b.9^1eMg\15qg5Y&b-\8VP7D,Q5A3a7m3scH+h)N6oI]`JQ%FcV(QVR]b-O*QR3bCcq%e?p>#Ae?/,%`808-ioW:P!4q_$1oEr?$g]V#:SW1F4q1M!7gN&V=nmN[/U/_JIVcO]?@`W&K@_2lp$1N9eoOSuR1Pl!`D:tWK\R<^,RQ7fP0Bp0CNJOXH'U:.gB#hNuY%]7U8l(j%Q+0DNerit/r)Dqg6I!0r'P/V*mJ/Y>79QTLQ#N9bEskkLDT*CDVR*'-?ggW696+ksTWC]67Wf%WTdiZ0l^[MiIo/hOP;++L9l.o-VRV6>\4FQ(SV"U+2Wgk(C1)*dS>3RcK@&\HLg5!\GqOS;]"FPn%Y,gP*R!dR73.%/OS"4?43kiP=S,o`')A[Y_.R&?KEMr7[X"Qt(C@4%\A:G2D%;=Ub-7T4m*3NBqM`l\6BkuEjD:PK9rcWdF`a03_#dKa`1=cuW[j)'DMUgW?fO6qa!jm5`.p@](\`HMPn"b?tN+Z,M(!JD,%Z_6k5,o^s%V*81Z=IB$3:FB9qd11r9%[\[GEh"@!$C.UigeLd8B:KdG_MN1:Db)7e':WFVSs.O]'I$X)pY:'mZnPc.jD&5[/6.iRi1BXAq):;O;`0@SFH!DS4(NClX"bK,%/ILj*MLA[`e"_,[>fFOYo`c!C6Yc\u_gp'k9ju"E#//h2dq3.KmACip0!sbahXVn]>6"RYpRoBgV`n7qMkYr?*pm*[P>)Ps-IcCLt9">*T%6gG2QH:-h>KS,grD>'?-7)bk=[1#&Ako5;E>>/"i\r3PSR/!7*e74s51[@'!Wq!$!)SC'*Wj^,BJd[ETuA9XHcmP!WqJ@W8j[13h$BR?8NI(.tVP#PIkr@+Qh%#laO.R55_Ya)75@5FC/Gj@D$t&Y$2,koeBoDG=q>aH7VUfgt>L21DKMbH#1\cn2qL0"u]mkFO$uO$g"BalJ/XaF!lkQ+sA;9/.GBN*Ad53/Hjl$EYoG:#!AnU']p%g84@aAl0rY!D[4X[,^8&mR^d'K5rn:/ct.3&Y8`7k(>EOa?ZMdXKci/(_O4PgdCfSKglrh^KY6.E]eir5ei+76!L1<^,d',"u&$ND\$L[B4\M%;r74BU>KK0:!mNkA0_;#[)&G9$P]+2>O:JH!66+7oodr[p,O"-:kLhrt[+S50%eaDeB-~>endstream +endobj +xref +0 12 +0000000000 65535 f +0000000061 00000 n +0000000112 00000 n +0000000219 00000 n +0000000331 00000 n +0000000446 00000 n +0000000650 00000 n +0000000854 00000 n +0000000922 00000 n +0000001202 00000 n +0000001267 00000 n +0000005710 00000 n +trailer +<< +/ID +[<4c9f527f4d17306914f49ab510ed74e2><4c9f527f4d17306914f49ab510ed74e2>] +% ReportLab generated PDF document -- digest (opensource) + +/Info 8 0 R +/Root 7 0 R +/Size 12 +>> +startxref +7619 +%%EOF diff --git a/output/pdf_propres_ocg/OGC 7 - propre.pdf b/output/pdf_propres_ocg/OGC 7 - propre.pdf new file mode 100644 index 0000000..ffce65e --- /dev/null +++ b/output/pdf_propres_ocg/OGC 7 - propre.pdf @@ -0,0 +1,99 @@ +%PDF-1.4 +% ReportLab Generated PDF document (opensource) +1 0 obj +<< +/F1 2 0 R /F2 3 0 R /F3 4 0 R +>> +endobj +2 0 obj +<< +/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font +>> +endobj +3 0 obj +<< +/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font +>> +endobj +4 0 obj +<< +/BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font +>> +endobj +5 0 obj +<< +/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +6 0 obj +<< +/Contents 11 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +7 0 obj +<< +/PageMode /UseNone /Pages 9 0 R /Type /Catalog +>> +endobj +8 0 obj +<< +/Author (\(anonymous\)) /CreationDate (D:20260318161809+01'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260318161809+01'00') /Producer (ReportLab PDF Library - \(opensource\)) + /Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False +>> +endobj +9 0 obj +<< +/Count 2 /Kids [ 5 0 R 6 0 R ] /Type /Pages +>> +endobj +10 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 4322 +>> +stream +Gb"/+>BAOW(4Q"]^sg`4afob[IcIRD?A0t;GQ5icE[f:de5iP-#@ZmmZcL+Gr<6tm/*$-)i)aI4fi"+B![YXW@Qjkmi$Adq&8gX_:m0d"p^AMWg7e#T4sO(.o3g#8W^;6#8UsB3OU.de=,,9LVU>boY3dH2_>4QD^)\.Vk/uRi_92EW^`3BknGf"Pp*rr34dfZJ45U.6n,1Cf#RMfGPnjWo2nZnFpuf9=))TTWS5X=Xs\9H9_LlE"K9N[8uKp"2t52'YYosT@]iQ(a_d#CB`IIKmCTlYpe6_EqoUl]NN56@6__0CUBl3Vftgd%K()Bn5pk'gA-c.ifJq\o;rF-4iR$SLLdej':tE$:R\20W-_D6,>-Li5&^/L'[?YS2W6hkd:0fnZ_3EI1>OOsm+$1c-')=o]s>-/Llp8_5)$\QjQ-<.gi@:9c;m.hB4)``;EaNh`@-UpL+DdjTl*F@=8N](U_9Xa.n^AbF1=.*/g48Dj/396%m1N'14KNA%$kgD9(PuX$jIhH0nIi01q"jJ)q_7!3N`8'.s!!bV7\Q9ANSunebg(%IbE/_+&@/:Ur4@T>`305m"QQCaZ7j#K!o`>;]%!)aTIgpn6:0lAJ0oV#b(ami6TaH=q;1o6ePUM`u!g_5GXhtZ4c">*B9VorpfU6paMSq?QNDF)L4V*`9%%=]$=h(?#d-!%^+%)dL`0kh>YYU+P>sul):-b7Ve=3su-hE.$-bhak7BB1O9:X\*2KNn0^$oqYf>HJs%r05a+pqq,O#HL.pJG%k-bV]umVi/g5Rhfu(TYjre^n81A4[#_I@7aBi'"+=1.9OdW`(G.2SkE6tBb!HBerOb[>>\&kc2oD9($ua3cKZYmj3W6$!Os)AX)r-agPL_PV$,R--mf%@`*)_6RdOdBI?GE,B;_6H;Vh>$DaG$t`;`lI)'RVmBC7f;dB3ma\h'lhhjD1('i!3=CNo^NTUffWfnkTH+[N8QVk'XCX`=o4bX][$r^M.D!66HkcEX'R:g\$DY%W'SX@+L9-].K\(SI,#Z09f8D,3/s9A;PIK.Wicf\Ug'5]s._r.pAUlrciII(G;g8$mUMdGu!44&%JhP<[6XF>qhEXpqKVVP0&at]eV.S!0$TY[:DV8tVC<*8N'AE[':!GX<$SS)KW`1):mKs/h!Qb#q/o@A.F5H*Y/p$r/uDBib.uZTRtq\AF7HK?pRlN'4Isa[]CEl%Ckc@h"&iZ^eJ)[QD&O1md<=6Fm/\I8a3o-#!ZSS,B"k^#8A2H5*Edn\r+4_;Q)n^)SI.'_?HXB'"WYP`#+m$Q\Q3(eVr&#Ch.s>i`f@mX1,$UBnO\EDdVdEj,Q&4Tebk_A"eM-^8*1\r]IW%);K4@\#9Ztl:q+6&:?_[-Be*M*Q-4?aJt^_pEES!=/r("A>kG"Z3i,;,r;$1hDR0rb1E'D_-Rai]fBeKXu"&Gg%]/A]pW,#dHK-JCbd"q*@Vt*PX_3)P<;Cs=kc=c7*$:RLdo^K$NChGU3fklQ0>R)W&)EAX4d8o4<:HrGAalnu?At,9*[^C.W(Ld\*O'6N9LY))r67boD`:-_IX\bFaii*(A\OCqd>G%6_lW\FB:q=Z=5(*tVK(=H!MsYArlI\:UD*9O6ia>UOL]`PBA\cA-9*bp96>-DaIkU3@_Z*fLnI*7hCnW?1Y`DbSCH,FLfmI>6YiH6$=/R5PL-1aBr8":KEt6ce&Hb6k:luI=mY^H_.&c++h\E;B/9"d94W@3rY+jiSs98f2!4R22l?ra2GWctS/=XW'A[@#AI0Bio]tBiAm+%?]i^Pk@iL5X0gu'OD'1_!_.PVI.P-R&+8\"0WZ>U#`IAbA8"A`:@^utreX>W6-s/PSCGLnFfX#!6<(I*QRAhi[AquY+beY+UY]"9oDpAr(IZhfFn1k^sFpQGJt)u9U]q\ON03a^'imma@AX`66Dfu_gX@:;H9-8<,D9]N*2Wrk\-TK:Z+)%d%\6`2fjmSY"=XKe>bQA]=[<]<"6a`@(H_C3#/F"jgSoa>uqb\0msGJgoBqJB8lk(@Y2gV\3sKf[-`eK7KsJM_V\rNsjo>0NSNT;TS<,5*ukB/TsP`FaIH81AK?]ha.RkH@\R(b%mGkEU\uJpqPrX4>DA/_?Whl#-<:W@pR%E"Rd9<8k6^g-\)YE.Z2T8oFOV*;Yd&LOQ6tCur2Iq1NcU?l'!@4qnPn`cQH.ZSpW%W'fs5LXlo>;u-bA_*o`O6buQHHdbp*BdsraP2o(go^h/2FE%*n'oCBt)IXPL:Bk!m#_O3MmjLhD6ZXtcE-O+kG`=n)edHn)9Kl/AaWpTN(PDsGB\MZFsIHNcW2p0s;7c!S*(Y!>l*Qg;W]5$9PgOa'$fMW`ImBt@HSbA'k%G$U*%JkZ3-UguP?>cNP+]?N6&Zf0u\B[+:=Mu7j`hfm1cSYXqKUmg$H=fgb"$9SC+A@l!Fqq;g4=@Oh0.ZRaud)gb;\qSh%~>endstream +endobj +11 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 1424 +>> +stream +Gb!#[gJStN&:O:SoG_BM#$pA'h?[YuCdCUJGG"f-bfE9'>b'3#_rmq%F0U^A'%kp*fdLZ9fU.OPP^6JC6R[Gs5M\/G:6Vn2T@mC&.(QVKO/u9?i-IFqM@=3@pnacYWoO<,ppC[1gJ=-r\>Z?V.f0uf8V'0[uT?2V]3\^d`APlMb)>]b=WahD[_Xn?uh2[AK5N?Aul<&9d@[p9`GDP>;bD&?WZ>/Rng6OZ$A(m@*mU'LJqWmLM"0RNn$&.B%5-/5QhE/qDP4T>R-!V?(3S3.$#im&^+U;:7WLslfSFV['=$1RNfoH7tTo*t&ab[[?.!_)]$`gfc]*,ZJ7>R]j&KZ4"bQ7EnhN(DdlYd=W?FE>$7O'V[*j,s':dDb-kKTn35Wa.RApEBMUFA=$a4DS"6S$(3sp$F2@=ap]GFeVe:.02`Hop4usVQDD7)E$8.ZuJ]PF*1FRHKAR$,7,.qX;V>#+uk"48GeM"NVf`Q,na!RDK)0#T^@E0*LrF''N0dq_ObJr"Z?1@DHKR.^Eg-uoDT^/*kO#srklebi;9Ig0d`GY+Cd'\nLVYW%)+\'gRMn\dqnE\iNX?ao:_p(%&M!t$kJq<@3>c0='ZYPk!bCSn%190rk`X)&PAkD%7tbl2;!6TnC\W#aGU/_+$TRT(`Zk%p4XVrH^UO*c/<2j4hH'=LdKAsT&`$-gN'uA9sp\t"ZP:+=*:RZS`P8KjPc""ML^J5s0h#piBXsA@.nFs%eTrFR;4P;dkCC4i4$HK"uD;ubeq>+Q9j$K6K[7#1EZ$5mRG#Y5mEOpi:-aREjNH&.WMY-g'c_k:Zlc%goKbqhkWLB.1R]KMg_itn_,/KK>Xa>%_/R^9,a\"#P*hocY.pX%hr]/HN~>endstream +endobj +xref +0 12 +0000000000 65535 f +0000000061 00000 n +0000000112 00000 n +0000000219 00000 n +0000000331 00000 n +0000000446 00000 n +0000000650 00000 n +0000000854 00000 n +0000000922 00000 n +0000001202 00000 n +0000001267 00000 n +0000005681 00000 n +trailer +<< +/ID +[<0145dc33a05868e027cf371c2bf48744><0145dc33a05868e027cf371c2bf48744>] +% ReportLab generated PDF document -- digest (opensource) + +/Info 8 0 R +/Root 7 0 R +/Size 12 +>> +startxref +7197 +%%EOF diff --git a/output/pdf_propres_ocg/OGC 74 - propre.pdf b/output/pdf_propres_ocg/OGC 74 - propre.pdf new file mode 100644 index 0000000..07912a5 --- /dev/null +++ b/output/pdf_propres_ocg/OGC 74 - propre.pdf @@ -0,0 +1,99 @@ +%PDF-1.4 +% ReportLab Generated PDF document (opensource) +1 0 obj +<< +/F1 2 0 R /F2 3 0 R /F3 4 0 R +>> +endobj +2 0 obj +<< +/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font +>> +endobj +3 0 obj +<< +/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font +>> +endobj +4 0 obj +<< +/BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font +>> +endobj +5 0 obj +<< +/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +6 0 obj +<< +/Contents 11 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +7 0 obj +<< +/PageMode /UseNone /Pages 9 0 R /Type /Catalog +>> +endobj +8 0 obj +<< +/Author (\(anonymous\)) /CreationDate (D:20260318161809+01'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260318161809+01'00') /Producer (ReportLab PDF Library - \(opensource\)) + /Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False +>> +endobj +9 0 obj +<< +/Count 2 /Kids [ 5 0 R 6 0 R ] /Type /Pages +>> +endobj +10 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 4271 +>> +stream +Gb"/+>BAOW(4Q"]^sgljg!I5@,eHjPUc@(j09PUlSZ2M%aE4G@/rh>kgOHsC+E=*"0hE`bB;^rj&U6R2_h/K_#*8srpd4X%[*Np`cXI!>;[N9!,>pD=]OTHFl=cP_B4J;b4gp[JY]+D+FeAdni?'WLVY*%_L\)WHh\qCp`mBIK^Si"h@t_MdGMj6.e,mmLgQ6)npDlF$%7kU*+gFL;YH$X$jfLR6Mc8\q8<"1iu%0-nKqNhqu&-5nH#a6Qqnce`H$SP%qmf16LgCeZU]r@As)HRnUA%)jC0XMM8t#_&Qos4;^OrLOX^A8qtS'DRAS(eJS4pQ4cO!IHCgnjFE0NiIh*t'@5&W1L@9#_o`LPPOE0;KS4DDsGWWGWcf\m-N+'L2`M/YG$U[^?7_A73`VTd$ar1+r:b^Sk*gkl9JW^k'?!qtE0aTAkp_Wl,Pg@eEndNnAhm8:VJ>"jk=m5Z)%:j7.k)+]FlaUmOgO;nYWaRc&P8^Sa=JQ\)!h(me>59Jsomp_Y?N]3R@EKuO&[BiYRi!#(FIb$*9T$ZE!Jo>mb\MS(g3`'POZIYYfa:V1Qa-U>cW3KfTmYUE.bV/cnmX$Kh8qAZ:5+d*4b5R%XQQi^@q3ZNC&/"^0!.6qUqKo1X!)QLQ$2F6(r679FJPfns([3nSa8l>[!DQGT@6t9d2I/d'U[:Oi+)78;P_C.j,4AoOhF8p1,=-0s,/W\lW:0l'8NN$RC[qd;q0[-:3"0o%q7n]_Ql+[KC)Q7QZl+P1R<*U.L\X(.h6JZ]b,h$#17Qa):6+"bJ697#eS2HO^UAucWTV@^hGBLa^`LPSJU>I)]b$n]/'DA!i,L;D)&C11b@)Em##9U#7j]qAQs5u][Z>T8^lo]k-cul[dXk:ZV@>kCZ%-@.lDH$CfV-W0GM=dm)pR"KJsi$Ze=iN]^HiuulFAQoTr:7MYb"3FESK;uC#rcRU]puW/3G!#?:\Ou+@i"8Uc_;FTJtM5/2A]<3Dj!$6/(Jk0^OLh!+]P>VX"a&djPRob>'I^QG$rC-3,8$_+&@,6U20U.hN]U:)nA^VF:Z6Y32"I(L2c\]>.ONkudOh%VPjYBj9W83R.IGXj#4i-j%u$eS-XsOjAb(\*4up-:4SXdTBdt[Lg>o$4uF=d.uDtNLL7_`3:?WhSg6,r;+n7?M`1P/6c?X=1Al(bu=XWSjKXS%<%M/2'mMZ>Nc"=>g=$7FmHg>[&*[cnQ5de\S^XP^Kk4RUK\oQ*8:(NF!dlCN06Cl)Z^:"/WOBu^X/`l#=C&Aeo\>@(n*AUlA8J,DJ[4(B@Hl<(SrbgJ@;aK;0cJbW?(a(-Zd)5HnC3"tC*0cQW4-9?AE^L7W"1h/k'.B-Z,?9A/+;7%;Os,^#3X+5q&Q,2PsMcsL>N,$h\JQ9j7%T@=0f3OllYQ#KRdqSfT_G''oE`b6Z9S+VV#TREA&MfH&]m)Va*lhlPRFe7HeAala4dJq6b-W;/fk\5qOt>Y?G*0U=YZ'GeKd/kOOJl3fO&[?)hYqDXHtDU7=(G5'86^NZja`@F8TUjO90&u;6c*uOI&9Q*&uUI=t*a2di^Eb&"2*V]QG`m%]);BWkK[gf=L$G++\iW3sRa>]lBQ/)\%1@TBDT9k3+h<\a$I5d`lm`&pbF$GrihTR=5PNsrl%jn\Zd_NFE;d!\+fT_8CNZq]Z/(3.%[+_Im"B*YV;W:kt:@f@JOK,51fPg$/V=Kn&edY!L_)Z5L\IZftWGkV;D^(Lpbf.+[q2.-:(&6;:Hn6hk$^>t%=-Y-j(gE7Qs'J(Pq[JQ%(7!p)8Irkr'jD5:#)$uE;Iq\h45*,$4h+V?h'atEOZ\tiN#PPtA*VG+@Fgc(5S-#H;R]kW[\65AZhBg-AK9Hk25*]EVKE;T%hm\t?0KZIX.3Md5)+_ZYhlH+\1Isqgg%N/8JO63jV9[BK95*\XrKObcX@C\XqG\@!S!dG1Xi+i,jIL>o@B]A?"]2\GM\U?hTa%])NEqDAe'I:(NlSWFEKC2:*GXbcc>eOn]NZ*.93HhesY\uG#-k)pHm_>&$H^m#BdK&nqGBlgLd#Qb.\Cr>O^,"^%1up;9GM2C=KP7CMKSg(16k?[AG2;&XQ"V%X\:$50s@XBWB=?-/ZY&V+k-\:]FZ4WQ2raZ%Zi\"f#(U@b3Wde.`Bm2oK_VH&'\\E?5DZY0/,>OMkrTNE*%bZ]K'6+A0,9fOhCgZ2gBC#Don+,@?J;dPlKmrTtVtmq*+L+%7G%Fc3G3M%M_FBk`r\D)cPps!koJtaJK#k`BJ::@[C2h$q/u+([0!;/#3503Ie_9i:L23rq,i.^gE,p0?3%K5mf4P=E3RW`IX5-4RM_kS5tb8b0_q17u_@.Dld#XICKbFSN:_fNu:UB-dBk^1;c5'kXg2]BT?qmH(s*$hfghqY,AOi-R:)]pN0#pfSYq_Q!KY7JVZ6n-\d`?$T0H#\dBoh9XjFQeS-^P1PT_[G:OpYrimBAM]L?%*]`GbR)B*VO!0Y]_#gAO!Du;*UD8bO1=H$C!F$^.Z@:.\D>.$j^OWoj^p/@N12@nse3?Vu8(^Z0\eTp!E\h2f/Hnt08.c8P>ND9L2%6b6Vg/_+K$H>#dTfefIXpjnpYrA?>0phO@!%=6`G(t3fbop(/4p*(d%f_+.j%k@lrZFFe->sr3%=eMn=)a'S)6;gkri/endstream +endobj +11 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 1540 +>> +stream +Gau`SbAuW$&A7^6>^XTqWHJ2(1II%_/BP/&PtJ%B,)P9O];Gl6"o.j+r'/F,I\+@N0*6f[aW*_,"YdK9IK&m,rU&ZdErGeILiWl$.:]lh(/8\(>2.38XFYc!68:9q/KcX'\sfWIa@oO'^uQO`5Jc#j<^cj#ItpiJdSmD(#kd/,=S2\*#M=ul"&Xr4d[E(QY&nO=K(4qS4?'#8L;bE5@>a)#T%HT@BS(jWH<"#K&#nTf5InC'kB\;8Zfa?ei?*^Tbn\Lj.IXSbf_Ip0NE[bTt77@RMhWAB)!-9(!;t#:eia"3F/gL.q\;=e&L3/PV*5Muu]50/C2Wb\9)d$^qe.CK!uHgq!\Re!fO<&V?`2Ns;bj%g,--AosT4r&`JL$^!oM#NFht!C-,4`]O?H=]T3Ef:\/VF&jrOd\0(5XDF$QV9WI0])"0F+\Fj'9&B:aek$$bUmTM[3j]k9:FBD2[jY*:gB,Y^JMbA?8%66_S=VFiX"T6#W11h[.MJKbE[7QL99ZcPG7Nk;5)&W(05Z\Prdd!fWYZM%B6K1X4T(o=VD;+]4_O)X2'/G`9h&TS$^URPR,4)^9#L_f4@u8XRVCSkBX#k9j,#^AnWtGXI1]!fF#TO0:S6+C8S$N[l1O@Rdq.0'Z%s`5]=8*@2oJ+'DqC0'+h>-?QN/#bl\K9"cXS(m>=bO_[X(MK";?D5W+VGXQ1iEO>VbkN#OORV5]u-BXG)0T5c5]LF$U6?Zosee5kcI=6h%V5IA^'D.tU\+]4\<4nL9qKi9Lm1R`9#A+scMWbh$"_'JujW8?shogTpQR1@0)S,?L*&8]"N:9>l4U:KguRiNlQR`Ir!-mp=cRc7r8W;<4as;b.?HB0DNcdT5/XMrG_+M8KdcWhZP4!%s[bK%A0hqZT!endstream +endobj +xref +0 12 +0000000000 65535 f +0000000061 00000 n +0000000112 00000 n +0000000219 00000 n +0000000331 00000 n +0000000446 00000 n +0000000650 00000 n +0000000854 00000 n +0000000922 00000 n +0000001202 00000 n +0000001267 00000 n +0000005630 00000 n +trailer +<< +/ID +[<8beea34a4906e25583fbdb1d1b96adad><8beea34a4906e25583fbdb1d1b96adad>] +% ReportLab generated PDF document -- digest (opensource) + +/Info 8 0 R +/Root 7 0 R +/Size 12 +>> +startxref +7262 +%%EOF diff --git a/output/pdf_propres_ocg/OGC 76 - propre.pdf b/output/pdf_propres_ocg/OGC 76 - propre.pdf new file mode 100644 index 0000000..109f8d2 --- /dev/null +++ b/output/pdf_propres_ocg/OGC 76 - propre.pdf @@ -0,0 +1,99 @@ +%PDF-1.4 +% ReportLab Generated PDF document (opensource) +1 0 obj +<< +/F1 2 0 R /F2 3 0 R /F3 4 0 R +>> +endobj +2 0 obj +<< +/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font +>> +endobj +3 0 obj +<< +/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font +>> +endobj +4 0 obj +<< +/BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font +>> +endobj +5 0 obj +<< +/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +6 0 obj +<< +/Contents 11 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +7 0 obj +<< +/PageMode /UseNone /Pages 9 0 R /Type /Catalog +>> +endobj +8 0 obj +<< +/Author (\(anonymous\)) /CreationDate (D:20260318161809+01'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260318161809+01'00') /Producer (ReportLab PDF Library - \(opensource\)) + /Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False +>> +endobj +9 0 obj +<< +/Count 2 /Kids [ 5 0 R 6 0 R ] /Type /Pages +>> +endobj +10 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 4182 +>> +stream +Gb"/+>BAOW(4Q"]^sgkgOHsC+E=*"0h'\d*]e"5JKK\hG]7V>!(dcR5?.YE>9`_2/NS5G&S:2"!E"CO]"LM,gQO9<[-5U8k!BE3_H>e_E";UC9JjEXF93[`4"(NDKE2sJolsGq(.X`\,SC+7hP8OYj2&\??/9KmLZ?5HjTl;cBJLKR(l^2rn,p7iSDT>3j3]_&]Xsc8Mg))2pr"Dp*>.U/e)m3Y9D%P@-o5k!1TI"h!4BK3^mak((27C2Z%Q>X.QG.q8tChpa6('+dl/]9D=G71cKd3bEdmupNrRP,bHfiF*:8C.J:ghl[#.*]3ICR(af:Fel_8qKMPa&,6sPXNSHiNZ4Bn2mkqF9l@1Tfge-=,X,D^h(VNa>h07j%1Dc`j^M)kD%uL:rHY`,a2<@`Vq1'_ikN3;&o?Lpamu]+i/R=K;oKmjCZen>]Om%fo8i-FTdIDpH_7`Bq`snMkU2Uo]04lEkPX,KA-+5!c3EGS%V8gmd6\DBOT_SC=6Y4Hkh<8-V_&Jl8@83@.j+/KYkbM(V-3m6[M"tc%hQX*L%@nG_I;\A#N1Z$HhA]bZirMuV2S.VI=RT'c];UbJ[N#WQhIs_FS7Y;FsF&)lXn=\cJ7=]ZtPX9(GHo]"tb5[+Y="NnZ"[q96ar#MP#eh?Cr)i1e$7HeS')qnLroTa];5;]%/iI^>L+L?k+b5P-e%.>omFZKP\/hF/h*e$(PlO\u*?9]@a>j,W9lRX.;m^Asc4M*_khhJpCrV3Z9BX_KltBnfK'iW>^q,`fuk.C687sAD"KVG']]i$*22?9f[F`p[\t=p`;tsFW=)^RQO)n7SJ^)9;]=$@XK1k'K&qHDeRn'''a\[,agC!Ho&mlNS*WpH&eR&dBr%r(ro<0kFg]L]3U;4hG=sX&B;'l21rN]sXZG-&<&0#abF7H;RO8's;sUJ\Ddkd_C!B8X^^e>\]jrcOmAc*a3!P-pr;kN1Rh)$+q7BS$W2@TnDl.*A>@FMHb!'@1172IjV_niu6;JFc?*"8--.uf9XUOX:V@hLgl;UWRj-t"`UP1Gu>e4-"2d_/\`KBljGMn$n/;(SJ-R[g]`q!s@+YKIrUpC=bhZ'TQdb0*s8F?H2Wqa]CO^<"[n`plpk>>sU61b+Hqnkg/,',\#Y@M3#9l,uWhmT_EF&@tDEWK,k2dFdQlA[H2KPrui_oHF_;+CK*TMkX6dg<4nZ;Jh.5YZ^q%*NmHN_69'i%Wjnh4[(L&YBOmWD*JQl!FM]6Bq2W4GW_kZRKm.HMP^5theb[4'(cnu*H]Q%9^'Fsof!0G.'l"[N7"X@lZR4Zf$E#bF)!`lp5L-)B4U4d2W,9[K;I31/\S\AeXEpH#kJFtGRsBkQfq\oN6%h5j6m\p2+/d@ln,Tl4ps^a:UX?=GjT9jU.P2Hne@O"h)*G.e9hE4lL^E1I)O@-mubViE?"=<')N8>\+*Vig@CNR+RGT$nb.Gu=;@B8Oji@VC>rX>?kIa2PRW]>S_uIX3YS_C"BWUTS=:p\@'jDH7b\#!$UYDo919(EVEpi3D+NmTemF]keMn#*uK?`TCAitK#<9J%8-DN"Ze+7RS=1!:$-l'QPB45V6_ZLgf-S&\4['JPG5,FOO>q;mmWWaoM0NUt)T@RC#B\1_R=\>jS=E5EVhG4qZ[UY/q#"2P3FEZ`DMPE+V10XC!+bIn>7V5JIE.WVT`=iU'J!MtQA"jbthigmP=NRAh@nT6fQ^E2V5Hj1DIX7!4I+YN"&>iO;59:hf82/67LCeI`!NiW:]&3ENb`(73qRX*m"@b@[\&lm5F>Fm=#jf++SSuSP'SgoQTW<.U>C#l8)9l<=L7\6&9KF215WgPs*aAW8I4B3!2;g#HF2H\!u"Xnu8k$Y8N(T:]3m@dL]RWmEV/_*[B`u5;'YG(I!)@A!K>Khe*ZlD=k16I&LZBqD;=k_'9^F\a5Ed>_qI\7:@=DD*a2SYeHVS$_N>PV;#s2eh6*l:0Rg-Ku3,Nrnu)LapR,ga&72e)=kFbC"Z12V*L.?@SmC(!,bGhTpRr1$q4i,Z4/N/IM[)@bQb8'hTOt8K*c&0-4(75.lK3ZoL(@+bV\bQgCVUkXuMAhoWL/`EI/-+]TO1N:Rq/NtW9<$O]RJJa"Ij)Ge&l)Gjg1F_k;=K\HtAXdO(!'(H;82k+>>T?YiMH>bu?kDQ5S7b*ckdoZiR^N*]V(lmq=R/[qkD=*5.IN#1o6dEq=+]q4YS&$9_#!Zp.j5;Qs9V2/38nIOqGOssXG*jKc#;^BaS#nXDqm;6(dJNRfs8;RYO.fIJ/?'ZV=7f_?!L[9&DSGt[bI7"t\c2@l78tf3#%aR.9(.s#*jmDM'MN[KFPF"XW.j"gC/Jn]CJR==Fp/[*oF"'.3$89:41qY/]3[/@C#[0]$O?)KH\A$LVGl$=jK$#.q.\Vp&qV/rEl/@_p\=.Kq;lfM&uTSO@N&7m@p,ris-$EW'm`ucB%dlt:W!SgB>]T&_FpU1/"f8aFLB+Bf_5sJC@d10Z#,#!;t'FL,;Q04iCOY`'@S2\6>p5UZR:c4j2e~>endstream +endobj +11 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 1845 +>> +stream +Gau`SgMYb8&:O:SbaXh@VRa>i%gCB@9jQiFW'ufJ%r623Y9@5rMj+'ecg4ODAP6bXTI>K3,'Q"fk007P8:$YrP7rU.#9:C78=]p5+]ZsCQ@`2#s=$[.GX!'kg@WL'C8Hg^(YgqO5kLTdhhK0^3Fo`Im1VlpQiac7gmY$l$9u-E`KJEf8?konqA0C9Vo=nZn0pWiCC^fFnHE:hpD9K3o0H9`#nL%LH=rF5B[4*hJWu&K>HrHChB1>V\F2ES$ZmU/mCcj$m'$-S5,45RHpJjY"1HAO$JU)-]+QBd)'`UpfGHE!!@DU6ft`D!"ul'Qpn@Y5eNmOL]T:JliJp$ED<^O#LWqK3J[>qK8d(9ENt^O;nMf!M$Q9Nl_LekMo!AL]%,BlVe0DO+k).pD_!$WC3;3aF7hcBPkmW'[\!&+!6=BZ]0#C9;5;"[gGU9J?(Y?n$4kfq^-s.#ZPX23gdR6T)fBgsm>#i&NAF\`0:/Y>1((eSK!YR^=hQ1lS(Ue5o'T(]+5aK8dRC._e:j7u/G]ggfg?-K$3\]e$*k.j#r4g]0@s?150aKbN^"A3$+GnGbIp:O[lEed+>Y183*`21+cQrfmpn5.atY4d&uu?XBR:XPJtnC+b?.5iGHj,8.qZ5MaMBPs%D;(?Ytl23\hJnPS2"/<5l.'dr;\LmW=foX?9_o;9=O#MtE%O4)c^TT;$pNeE)9]Ne-i0n#pk\O:pQp19o-ptK5c2K^a3a)bKg%lJ,Z?U6o4W="Y^Y;gsO.8r5oIYq#r>&2Z>V$YVU/9QS3Um'Z%jbsii,mm+%eu62>+[CoC`NsYI6Z4c!I/aESZSf$jFh5@oLrS(dieY61.)148=m_0\d.Ok?eQ:2K^:r,%`TAC]@.]c6EM!XdMdd##J9%1#F&i5t?LLR:kiV!B8Gt3'!NKqFXR.dl?h[[nC(^sQ(fnIYZdgq-&7&>[fc%t$_`"MHFa!UOY2f;55;"IL6Mi;"%p)Vk2nIjZcB;4;LQ)FLdcZ1Nj%&7"bQ-h=?,MJ0d%ST+AFrsH&@3.FU[[l=Gn#"u./mk//+al@"GR&5$PZ-cn:7,Dmji]N01e7!/^tlQgNXSE)HQ7GnZu8B>m'rW/*F/Ld&Ier*>.#$qM;o`3[q^8Z-*e]T+,X/kh8%p4B0_hpBVJqojG$P"`Ne;`lm\i/DcE7G62oXo]`1uAO@Q=)!f[@XW_aT'&YbT(f-nd\68?fc^phpendstream +endobj +xref +0 12 +0000000000 65535 f +0000000061 00000 n +0000000112 00000 n +0000000219 00000 n +0000000331 00000 n +0000000446 00000 n +0000000650 00000 n +0000000854 00000 n +0000000922 00000 n +0000001202 00000 n +0000001267 00000 n +0000005541 00000 n +trailer +<< +/ID +[<5336dd45d020386272ba4e1ce31bb1db><5336dd45d020386272ba4e1ce31bb1db>] +% ReportLab generated PDF document -- digest (opensource) + +/Info 8 0 R +/Root 7 0 R +/Size 12 +>> +startxref +7478 +%%EOF diff --git a/output/pdf_propres_ocg/OGC 84 - propre.pdf b/output/pdf_propres_ocg/OGC 84 - propre.pdf new file mode 100644 index 0000000..d3cbab0 --- /dev/null +++ b/output/pdf_propres_ocg/OGC 84 - propre.pdf @@ -0,0 +1,99 @@ +%PDF-1.4 +% ReportLab Generated PDF document (opensource) +1 0 obj +<< +/F1 2 0 R /F2 3 0 R /F3 4 0 R +>> +endobj +2 0 obj +<< +/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font +>> +endobj +3 0 obj +<< +/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font +>> +endobj +4 0 obj +<< +/BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font +>> +endobj +5 0 obj +<< +/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +6 0 obj +<< +/Contents 11 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +7 0 obj +<< +/PageMode /UseNone /Pages 9 0 R /Type /Catalog +>> +endobj +8 0 obj +<< +/Author (\(anonymous\)) /CreationDate (D:20260318161809+01'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260318161809+01'00') /Producer (ReportLab PDF Library - \(opensource\)) + /Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False +>> +endobj +9 0 obj +<< +/Count 2 /Kids [ 5 0 R 6 0 R ] /Type /Pages +>> +endobj +10 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 4441 +>> +stream +Gb!Sp>Beg[&q801^sgF[D#<[F!"p**(QieaGP@nI"FUhn!.:0M$pbGXi=Afc?T]M(dgTMe&k".:I7/a8*6kY6E;&G;)j8`^ggaT.JV$F;5%b:Q#;B3Jp'+d1D'Qi7T>9],^M$%FNE&,@iLnpTB9b0LV+5s*cr=7Y?&02sJRVrR#SCqR>Lar:8f_^Q-^^jl6"O4jUTNEe!]Mh03Q+)9olckP=7+p%RsR9`5MalK>O74C@AJ6JpfCLM9DTeG\Bi+X,6o89YoA4e+YhNmV`+?RJY>DRYVQI#jj?Qqnd``H$qZpLl7l61_;OoaWQ3lUAJBc$.@U3`B8I9g%jmJ<4SLVX]+h<\`=JMp:;[;iI#-4<1:^kfFc3LK8EoI+AA_d:`$[s_Y9!s]0J&9`Wh"iV`ujjt?.'h&PM42fOqB"a<2[BdOeCk4@2SVR"6WaG*raBL?d;O;u3C;aX]YFN]=#-4BAW.[m]^t`Se!(b`V1AHsQf#GQSMKr$8@js,I^9*A8Cm&c<)ZH#C%5'?$Akbf$8q\hqD2]In,ji=!9qfF]fsrKEk;0m2?b,X1F=@C1<;?%(Mbs6l9YXPh7EEO)o7`"9V[)/GdDt\`[=EdZH;),hkO:F4e:pH#qm]2cj+M4kO?9+N'RH-CJu)2.4-m]pXnEiORe;o!*YBTs?tS9`:kV>japj46e,E2&"b*"c,i,ZG*kM4Di+-dDk`+^,_t6lDAEV>adkQen&9\i7TkBDTC&E`$S]?V^RIF+Ddpu2``JT1JZ#\B/YrMVu4^TP-UPo#%U+QK?3!KoK5o8g?YT'mZm'hinL\_^!OoJj0>6h3[;kJ6\$-Y9h\'/^dT#hqH_L7O\GJ54>R2#cD=NM7Qmg=])tAM7e_$,FX"Atu]S+YXD"Wt?9*N?!,J\jZdBY32"I'4$FD4"".4l+*,)*7=h>PGZ?TF.2qo=rO51<>'o;/=_j2M30nsm=.\Cj-2UCQ`:]VcU7rF?QU:s*?So_4+Y(K8YZ;/F6^\W!.MSW"X6/c_^^d&@T0W;^U$7^,(/+S$7^$3hgcHRAc*$5OC>?,?s""Udh/]&4:($O3JeVTV?'a`YG:6DS-mYV$c[@@U4kA^PY:_MkB\;6VZT(eh-mMLoue^`;^:U5MW[l@O^mQD@E_/m&rARj*iDFWlAf;e#kYL-h!EZm]<9H\.K[`oMb5PGL@-V:Kpqg-o9.s+i$h?g*k5QhYTbkNDYue^"_o.<,o@"k(R4-.IB-8Y7*lk0$bVVKZ(%>htPg%tmeGfMmq0?r68W,Sda?Jf:V`X!nt?=>u9V%B:BYYSE]3K0A_'Sbjt;Q(.JpSWZg=H6LqBDUT*Q8%.Il&5A\R2rW,mV9iut*\d+V)O?cRa#Yap0K+f)b/NRrBtN.&)7\H&)7[oj=KqGqc*:1T!Z$QI?mAU\4XZr&:u%WUGBZeCCsKAo5PRjHs(4u8`*o2K.6>W*IG\Qc(Sli\dM44af4(8RS<6)54S#]VB"0?UZFE,(e7.\7u;#k3R&m--*!PBA%ndTQXd5cZS!*)K'&l#k!$]bVkQ2j^=f_!-8*O`UmgFW$#NDWZ94kY9qsi1s6K=*3Y*Z+f0b_p*YK0'`rao["b^lDUh!l"rHTHaTg@>uYn:*H804G4r\er%SqC$I]rnYlK%P?pFLSN1&FrXp[*Lie2k4/B'?Xhm=Z^DGlIW2R>`ELiq[*Go@u)Z=lRY)KT*:p^Rlg%`W$M008Vp0h,V2#+gWJ]rf"/98D(YDO%,>,-[kmRm:ZdMUS#5li7mdLg!`X[Eo"jZ.@E>/b*X6T&*h#BJLRNf[.4l(oWYB!H)/[?fL:9f/kY'H4e#i1GJ;&91c:RjV=B7+pH)eZsO\iBZd-PfXm.&<,QtRni:Y"SFHnV.Tbqnu-]@[S'?*HB=&A;DETqghd+OAD3nm@_q3;odkF4F.Y99K^;2f]B'$AdY1&^bZ$CsBJM9#jeN)qBt]-N@8K;b^T,8uE;'`p,K!eQ[Q=?XHOGhfQ%Ib'Bh^@9Pam:MV$lO3P4SlbRYVe[j>%"6EhDUf"<>AKKC58HW%)e>!p@8WFc=jUq8T5:ho8\4Ib.S]4hB;e>Lj[DeS'U1a8KDhk9eO4;s%iH\G0k3r9*0?`NkV,_.HUlSS=a-Lud;U*\5pj)T]e/_Ai5+O>g5l&;G$_m=rG3?dX;W?n;Ia6k>5+foJ%Wje;b323S&C<\TI)p/K/m^D`CEj:STnfj;D?ET;AN1qiMa(nmP^Tgiu%7Xo1TY/;7M0`X\+"s`U@UWnUE)2/;a*Tf0P2YdL9t.hTAodO4WtopMQm6IMe`\S#S*f70Uo^*:55Y$1^E':.O@2_'V2bG2I]GKufZDPnf:VfZDY\:OmLj8SSVnPfgrk86#Np-^#qDC+gsiAa3%#1GcBXmOd^*fM#e??6X+8f<"Xl8D^9(NWDk?$j+jYqp%9uj&$m3;Sa0J%W:VFL,WBA\GZ%&L1)beW)UT8D'rbjhCQ>IIc,V5OieMmqj`XeAZQj0sL^0f5O]O,Wf7NXSTKsH=$T!,uk!er#XTt*js!/GafHCq.:&:m;pr?"jVG^86->BseSr,Mb6#7/gc_,$l?=N+XRQ^?-i`+6jKHEhjVf*hC`M/$#XkN"dYWgL9=Z;L9!LhoLt1>TR^ipAjP2kc#`D70b>oLB-UC]61tAGqAbfYuTfS>=t3PdW$H=O!$4F9I0bG-dLd*\R/jN)n5X2Ana+S,WO_endstream +endobj +11 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 1435 +>> +stream +Gau`SgN)%,&:N/3m$m*s9]JJ/iePghG+(I%kMiFgWVV.,OFdmZ#"ce+hZYE*;FERSB0%'e)N_R9S?mPX!%AJlW;B;0JD]L.r]:;+@(ld/HToYliQZc@0VKF]mX*_"quFSnn:]+J^5$=[b[r`K#db,"@<)dt+Em:RNCGr&"="o2o+\''+5UA<\Y!6SDa(f=HHop7=9t7*e`NlFUc&S.(@hVF1f]Ab+=W5g/9p)cW\p\.rs&(%i9W-I,6!8I&F,'s4=&FN*d.g7n*i$H-FOmFV9i,odY@"oC_U,64>qi;3X$.g'7N]O/^>_o"hkcV_%XV;kT,,@D`>@^3^$$q`A<#MimB`AIg!W_NC+83]u)!)-QV2=c&RH%n9P/I#WhLb8tP:KaST:i5AND;6_;l@doU8.p-C]k]@`iui1[F*+s,?-p7VL#5N%SNc?85Iq@MR#2tWifa#ug'Gn0VU6NSP(i)VuA[OM^n\8F$^fPt)tMR(596"P/#kXoHkQsP8IS6AO&&kmT.I97lbLB2UP#3sQT<,Oa#[s<`AZ_on#q'JB?I2:NAEA5S%cji(!P?"Hb0'=1-oN@bOnl8`%_-Htn2e\I,o`(p$MaKX^(S>gY&nS;,$B/$OVKDr^o/?m(cnRs]&$=P11]pa.H;%<"o\.D_p@r'-4U_-sOT!C8$!CKX3j6][V<@=(HVWfi*aE.p)_A%\$"N'PPH!ESE-1LE>9[!G(q%e7@ldOdk4q;sNQO:b@n(:QAZ9GRIA/K$YtcjK%+tr+WNg-X`.MFUZA!GedV^Whdl%N"m&n]Q]WHTcf!X$PMR11LTksuh.o"jI30@p8HEfJn/t?G"PK:p:Y<)ecM'?dE[4B,?C&j7R@NTbfAC.^h2Bi:Ve:,l-]Cmdm_`?*n\@T44_\MX5>dGLDi//eNQr0:iU3(\*!DQ0^HIY<0V?@nN?I.#@CS^dm9bEP]u,cR$PDpGd#Wq,$Z(/r\9;H6:-PUQm%iIZi8FS(I4sNP(CB)^msC#d%PQK/!oP^p9@t90[2DU2kX`Mm$V#>[)Ym[L?8\WcgW]lQ=gubgc8qCXN+4bpLd2R!5kqOPhA$M^__jg[3ZMWm@COFNR.9TI4jj-9pI&qsiL[Tpl-3Id?!=>?^Y,!p4,UV3(_rj&j5/b0($'gj*ED)/[m[j"D\gJQmN,U&53(`'5M'd0q][@njKkWJmi3P*41t>U_&Z^NOuIhIi#a$3If+;endstream +endobj +xref +0 12 +0000000000 65535 f +0000000061 00000 n +0000000112 00000 n +0000000219 00000 n +0000000331 00000 n +0000000446 00000 n +0000000650 00000 n +0000000854 00000 n +0000000922 00000 n +0000001202 00000 n +0000001267 00000 n +0000005800 00000 n +trailer +<< +/ID +[<1bba9d85a9d59ebd094a6eb509ab2125><1bba9d85a9d59ebd094a6eb509ab2125>] +% ReportLab generated PDF document -- digest (opensource) + +/Info 8 0 R +/Root 7 0 R +/Size 12 +>> +startxref +7327 +%%EOF diff --git a/output/pdf_propres_ocg/OGC 86 - propre.pdf b/output/pdf_propres_ocg/OGC 86 - propre.pdf new file mode 100644 index 0000000..26b7394 --- /dev/null +++ b/output/pdf_propres_ocg/OGC 86 - propre.pdf @@ -0,0 +1,99 @@ +%PDF-1.4 +% ReportLab Generated PDF document (opensource) +1 0 obj +<< +/F1 2 0 R /F2 3 0 R /F3 4 0 R +>> +endobj +2 0 obj +<< +/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font +>> +endobj +3 0 obj +<< +/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font +>> +endobj +4 0 obj +<< +/BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font +>> +endobj +5 0 obj +<< +/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +6 0 obj +<< +/Contents 11 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +7 0 obj +<< +/PageMode /UseNone /Pages 9 0 R /Type /Catalog +>> +endobj +8 0 obj +<< +/Author (\(anonymous\)) /CreationDate (D:20260318161809+01'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260318161809+01'00') /Producer (ReportLab PDF Library - \(opensource\)) + /Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False +>> +endobj +9 0 obj +<< +/Count 2 /Kids [ 5 0 R 6 0 R ] /Type /Pages +>> +endobj +10 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 4542 +>> +stream +Gb!l#>BAOW(4OT5^sgm%1^It%amP?:ac:O\fobVpG3_=?16Y_YQ5icE[f:de5iP-#@ZjKNmd.;u%=Jf6+n4IG!.uHss%r[OjT@iQYL0CLMC:jD*t]5iT^-YU^4,VJ"jMC7J[pk/U+hlm&=gZ4!%&W@IX2#jT_>)KQj7jY6a;(]V5uHTZ>"ec#,.OJ,Bmas,O7368+7X#M%_K5?6u=`)FFDFc6F!2iRki"GsE378!;UV]89^IRN=PdE1dt/JeQW[Yo;)OR./F">0?2iKa`@/m5@.k\cGNP7+bmZ<6SBEjK(!gYH>Jg8oA'[GDUUJ;'6M__P$]pZOe,gLRk*>C9&ilJZ`fgo2[V0@35aFhcJQ5Y8P>?L'FNI9J.hFsLb>E?%F>acQiH-9N&Y,lA-'1*(u!FstYCjpKLWb=YHj0`C+LeWblr_.4rV(eS2PDXl\7Q);Yj!q5uDIN'S&pH1aZo>u+Fp'+Xi_dGAB%,Y;bbmTlpO9pbR+l_p9S5,sAq7J8LErs!_7+TNA;1p6SBQol>`@aH#C'Hoh2,/8K>:p(uTVMeRY6]Ko#`U>+p]p`pT$PjOlijWd5;1S[!KJ3t^`sge/6&`u1tM`t5:;/GMcm!7ip5G36a?.`bht^*I*f(ucss+b:[ml]!Zu[I5W](21&-H\a?$L?2KpW`E(>P8Ws@#d%-$[f*4oCgjREfo.E52CpB\Sdg4%D'OfHRI"`@r5ONulYS2J[_oS^Z(k$^Y*(A_=KFaU(KEAZeBU5m+V$NmrN'5'4JCkD`@;P)Leq\X.L4+PC&MV%*#1;WI0J@pN>6MU:BMU+T]BHKJ9eSf6>8N/IXu!nrt$<>c!&.0HCE*C7@6]8GH`ml+r#lJ=UNH8$dG7]qMW:!)A8:TaTOk``(7k"G9n#f]b_4*-KE'LjNb:^EeA&]e90C)A7!c]OX*c$$R:qJ]h?_Z4[#Ym=Jc-?0kF:S/5p4=`KY0+$c'[R6j2U:+P7Bc@gbe;HmAkes#edgr%s3"GP@]hho@31t7E\ko5I6*O\E$R;-fU]C[tD2jSf/G"e$1.t]K86E399QPW`IP1Q.9)nNQ,3$TiNV01sIs_.g[anS0B-#@uD@%BQ=_LV?NUY^J1Mn$C$/W:r=E`U?,!hd/50UCIfD#0m3b?H;e:$o/0$`&VF\D6M%'7Ak;X90$98kTfhFP8q8.hfp^GO8V.NRMieWF_!Z0q%j&kQkq`g7]AU2a4(Rq1iFSguO5/^ZPI.U$!8?NjWf>R;;n=U?!V<<[t+l"$>(=rC^?+mPc`G:PG'obiL(TMaIJ0]`GlqO_Ua=Ggo$CY1H`*(S\6e$*OgQuSED%p^M@%0oOoO]fT!@:;o%7Qk$G2[p"5OV(%"VVto:]p^Gi2@U$%Y`kM.]!,le%d&&!9#IOb@'FI91`A93*3LlQ8a%!_8ScMDJALSD>$W%F)g/S]pJSC[f=`(=ELm-)=@Riu3G5&TjVQ6M(-C+9*OJc)+R'5uQaKHLGWsCGO*6H3I>[/g:6.a!MBWS,;.7sTO5aP$JK_'?-K4XS^51;-cLm>-To3G^lJucA-8*n%U1JtW`WL$G0>V$,!p8W/05;6!^"B5,eRgcBS(2H2iUb^8piNdq"6\/3j5W;rH09=M87=LgW=8VP!,8X4:4Wp%iIqanCA)DuHI[2hCfRle*NRBW#1'tRotHH5Ll0IL.aXL91`Ti8_s),BJ=9Kl]&pbS-o`,.ko)GhLC4u3F/&'"Bc+L+LK*isZ]ADY?CStJqe/G(U+*jelcYlSiX5Fh.mdWH9:goJ[2[KF1@pM`"VX!*Ob]GH08e&R^BFZ3KMJ1mm,-t%&/_;r$EE[[M8QZLBhY0P,0IJs4F+n'ZNV+9tM7kYg9KG5SgMG5SgNn57XbWJ+M0h"UU)S`Xp5@L?CD!*Qm>$oqQT^,<4#mrno;hq8j^QOFVICQ0:2Wmb9Xn>aQPgb>ti.f#@b)apg.JEL3?q+)7k:`UB$9.o%msRP^oFEgeD4qJ-Rd@i2e:ohksrLpoB&;2E#$b5dJZa'TU:'K@$H*SZqcI4DTITuX:=Q-rYl%B<>(Ltgb)/&.83+m%D.obH/neckjUnT(KM(U9UEOG9indPrIIBCgD.0tjKUiiiQ`i5CJj:mmju2j^]t#5+N\tgNo=b^AEi6;HP*8K<r>gLE2F>5bqBF$hTan^2i@NBN/%C%t;lq]/J2\:m)Ra;i=/h$$ZXNj/)9ruVQ:Te%T!_qQJ`]*@O[2P%.J6Njr9\s-;TB=WXa45./ZcrE=U/;#jBZ8kL28;5(37$u9ST3qsVZPG2.X)X(Cef,=GVV6A#Y$R\/X]F\tm8oj]kHHQ7"'n#'>39O\=F1%T%)<6^=74569GDXdKKJX%p\/OD>n(!@W%&tCf;^GH3*:jeS7I-:Q8^@"?"%\k/G8@C2#f]DC\JbL81b,UAaOr!3pC3:<9uQ^c`BoA']BtR'*/SGm)fuojY$'ZFW[\<:rM7p51*=$="$l:Pl13S'?;2;A$1,MISOaSoOl41HmQ^OUPtSN.mM:iN`sJ#FrU+7]R4JJf$eAVWim&e3jT/p`g_U=q@K=V=4cmNbX]C#PLII,*X,knBt,71B/LLe;3_DGilRmI4sG'0(?6Ne7L2>hVN_"c7MAkh5u:J[7<,(?-d.otjiK?l%3t_Cs9q;4[_4WOo(+qW1k.geC-ABm?hdT=9pnDdOghHeb9UYN'\"<$31H&s&:E?=Yb3fl0YM!jj/GZg6j2hEnbUU1S[gQt3j"fn(LVM;g!t8N>:ipu>2An8-EI$A(Im)CQnu[OV-g`ZWCE)OHX=G,)3JN?1nUJD3Ci(@?4&6YqD1eHFNO&jqsU*E^R761QWJs#L[;Rbc>!cRbK]bK:suQ22jAfXJ)b(8W0/b_],u.np&/ej32j3a>Qm7],Z&O1!"/$h4=_m9"6&eJngY#KHkGD//0h4o#5MH(^0I2#)N"[ECXZ><=b!4K(JhGs!ori/?#Rp_A0sU,iu.e+^=/[>,h,$'$i_UD\A:3L^Lrrh;d>fL?.D;>JG?_0I:8I^$J[/;jt^XbjmQXbl'qqRBZ][FnKfQ]5U\?s&R4>,WnXE+kT>pSkmb&SQ8Dr#)>d=!HN"TItgq?QNM^!.j#$n.fLfmZT="T4DO-UT'9Sol>2AXI&4uAb8>i!2j^1eBO^2endstream +endobj +11 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 1524 +>> +stream +Gb!#[9lJcG&A@sBbcT/7;++;hc7PN-]31p]RX"Sf$R8M,"+1pRd`O^X(m:%gJ!149lXH!R,K@j*^DS@2huSGTqrq#i]"JKn0dp%aD^DS)jbtYWaIi.5;s#R>]*6)ABsq\M);lcX;(loukn+]D:Rdk3Egkk8Y8-a)GaYD5jO)C82neTj3D8ALc4FUik4TKnt=I[H7VSO"gSCc46Tnibs&NTh`*F@\47t@>@tW%Sm2[bU<]g.Ai?7\gd%\*@G![>/)q+i"$8XgoAUR:KYGK=dHi.jSnoC@.-V`^JN32pY1WYC3[%h55``bl457Z%k'MQq"\7[%LFMg^\:@ci\P/LDa@=brWT2I"pTTqfM@Utr7QqO?>"'l-og.78NL"[Mf;;NO&:onFdPO!:'Mb2JpP>ONGs`/l-C[:rpWl;Z"5IN4P]`jE]lhDmDBSi'<`%>sR8J.0;LG/h:`t6ji#P9^lV&pF;UhmF?$Kqi2=N%Hb#-B70QK0cZEaV2WmhO_2`JYFh;cQ"h;>9!?9R=LH+(jO\*o*bsOKWGPHFBpV9JFq9=k+;`!blMBFrXVtXDl#jbE0VNH@:(R32(Gb&^,0UjE.%Q?)l&lb%t:*@$+=Bi@['b8b?.Zn,E=!3:Yp!!RVK)f3NB,95r&mX)JE"*1Z8t'LU>Yr(:EoWM8Tg`5p$kC"FqJXg(im+.87:'Dp6d5=W.1G@LIaBom'4!h#)Ta'/,ItOCsOZuH?[I2j"<4\jJ`S%0S.$Ud8P?a`6b]@#ROCrK>C\\?fO.-=QmaK)^iVTFfqh.D_nGoVV82R]kZ@Gp*F*0'Bj;':1?2k=Xqhi$M;)*679m@!+j/_Jd?,'.&KWjY"&*/kusR3UL=PL'i[G@i1JLH"SD&W!ofGA,=Q\5I*F*$9MEMoH8i/.&n.]k^C-\eZ+\<10V!n"K"Apb=-/*^_6dDgGJEODD>Qf_=>AlNu:_G@JRi?gNK2KI/]`PBU%L1@9sT9,Dp[T1%-.>r5IZU8ZuhF^L.n-QME(W5nm"A!bSmMh>~>endstream +endobj +xref +0 12 +0000000000 65535 f +0000000061 00000 n +0000000112 00000 n +0000000219 00000 n +0000000331 00000 n +0000000446 00000 n +0000000650 00000 n +0000000854 00000 n +0000000922 00000 n +0000001202 00000 n +0000001267 00000 n +0000005901 00000 n +trailer +<< +/ID +[<7d45291d96b42c0a90149af98d100133><7d45291d96b42c0a90149af98d100133>] +% ReportLab generated PDF document -- digest (opensource) + +/Info 8 0 R +/Root 7 0 R +/Size 12 +>> +startxref +7517 +%%EOF diff --git a/output/pdf_propres_ocg/OGC 9 - propre.pdf b/output/pdf_propres_ocg/OGC 9 - propre.pdf new file mode 100644 index 0000000..eca3701 --- /dev/null +++ b/output/pdf_propres_ocg/OGC 9 - propre.pdf @@ -0,0 +1,99 @@ +%PDF-1.4 +% ReportLab Generated PDF document (opensource) +1 0 obj +<< +/F1 2 0 R /F2 3 0 R /F3 4 0 R +>> +endobj +2 0 obj +<< +/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font +>> +endobj +3 0 obj +<< +/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font +>> +endobj +4 0 obj +<< +/BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font +>> +endobj +5 0 obj +<< +/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +6 0 obj +<< +/Contents 11 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +7 0 obj +<< +/PageMode /UseNone /Pages 9 0 R /Type /Catalog +>> +endobj +8 0 obj +<< +/Author (\(anonymous\)) /CreationDate (D:20260318161809+01'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260318161809+01'00') /Producer (ReportLab PDF Library - \(opensource\)) + /Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False +>> +endobj +9 0 obj +<< +/Count 2 /Kids [ 5 0 R 6 0 R ] /Type /Pages +>> +endobj +10 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 4345 +>> +stream +Gb!Sp>BAOW(4Q"]^sgm%ChVTqG+W$]8^t!ca*)WLVXB'\e#>+6322XSs8=!h`.]C+PB5`\H1bVQ5*4D7>uC9m:8r`rrs!B(HbKhkBT$!_pF)='ILcY@cI"45J36X-.>E2i5&;0d3AqDR/("/Ma]TB']?YV[Uh:O42c_NNeeE#Pbg`kV5o"DkYc4cfUj#MPcXA8Q_3($$fD]0o[k[\WVX'JL77H88X.I9P[qMH>[Fk;^>%d?+=&adR'<8`I"<^/_Ef_0'7GN/MhY'TCpqe1:lX')P'YV-gs9MQMb]J4ZXUsIq"nC9l[N1!)]dC2=H)K':FUjE^G1Wn7W5-K1"*)6H22W6jCd;6ApZ_3E)4Q"H!m*rB7EXC;P[s$odq^Trsc+djuX=.O+gEMZDld]/VeAh7E?jj?p*%^)nDasD$97&'BV7m.#X-4a^IUP[R0Gsat65=;U(?U2`n#p-R.,fSCFs[tg;9\'4'2+2Ln?OBa][$+o[R&+$lH=&`19n?/nd1APQr,cc\E1jF>4i9M,q#'/X!X,3`//4,D/:3NUj.:kgI?f-F)t,F,abO@="Y[tXJAtP%UY6j'G^YaoIC\[M?N((O>7!+*eUL`%mSTjJHAF^0a[l0"b2G*IFP2QN(Zk^-e/4%$@pE!&n+*5<[M)U/E?CqLECi2c'0LdOg==]BANe?1*U^JHm4d6IAi*6dDd1U_DV"@5('5QN/t]8Co/uSgn\7o`-,pP;i.)(%6DF[8+ihcDUX`kHT=S3*^K?Q^?o;mQkRa?$>\!2H\ldk%B`U_APr[<"f]*a7&t$*]"i^UaKli]T8F2'p^=o['B!2X%84mK,%PifsPXGmH&CbbE#AI%nP[HX%B&_C2mG.6L5a,@S`3>2F9F#8E!s*]FN$75L>62FS&S%dTO\1JAap>;]LaU:e9o=KLk'4K8kRgP<\:!X3;L7$>(1q#0ndoUG2E:p$OSBfhn^YS,DUu7p+O,lK8I)4&;1)FNlSUg_[$dgKTYYnTj23l/r#uRsl&$2^CY$V7jN$iS_N1bq02E2e1Ht%s5<]"d0E:`-L\I7,*':^L*a7-F?.nVi9ujEkN$n'TWoF.9;R#:Y_FK)I_l%g=8Wl5dUJ:AVq.CLsKW[m`LQ4GL*+A4&[uMm(!goc4l8E3Z(/5-n@D#M[<*%ZB?KJdQa%Si3s_.hOY/5-p5QA;W+RtcQl/6e@f'h#SM,#*F631qoF2L[+H;8BY'a3&6$WT9/N*p=p\%U_H#mj7<`\lH+T:mF/YT!B(NZ>;.mSbIW;5fX'F&A+8!Q-0egC$8gMBB+g.b'/X>@H;cp1ce)`SYEO0J=&P6JG#ln@lfNCfbtnVl`>QCG%_\qNI?28J2I@o]'"`X0dLlVedE8=lN+pqL_]Hn9@0^?%OT0<.nG(7,V\UO/%[fX+dhn[?`-/)7kJWG,aai<^/Gk('7-8DJ1e&J9),[3YEnpCp6FjTc]2u(AFfLE.'?Z:AF)dhG`=IsYn`k>`OVK)E;f/$<$oq$+P2VouhAF:NA%booX5[EF9iN;jdP1_HmI?Ns+U'KoU15.k+A[\L3;.I[>GZEBVa4:>T.mmhGi`!^4et9r]"TBcf=EAg0]CT+Nhe0X]mHO"@o,03V`dOh*)DN/.VDNZlQuF!;'s*Pc^%"!UI&P#sZ!mMtPXMK30^Tirk*KaDXMrHoU^\f0^$VPp[6&M-L$GH;Mn"WuLQWul_c^`8(qrG@V?dH"%jgs08ql\c8&Oa42)Yp%P.n_7i`*>&Z0VMqKN(L6i>WLP#m<6VrSMq4iQ41O\7f\W@-YU9SOYc35n93n-M/+eBR/n5fQ##Xq,qe's'qVmC7&HY":8%S!u'I_j*%g>="i)+sb["XDnjnA\W@-2j?A6nOC1cOoq@>'mZEX0$bXK^e0rmX<=;?A/I3E"Zk6O2>tlA3Sm$dAl^QM(QuN)u4h)do51k-o)eXoD?pi2VMSTM&ceMIeT`q-If?alo\'fgp]7[PlhdL(ma^e`-(GmF/U9\JW3c:CBp.Z2DWX0n&30n6;sH;[eR9Do0dFXLi3Hd":.QN^]jsgsWLojT'J^raZ#S$e1Z)c!?>HG,G/Wq$B"FPZk1N@4Fcg>.`R>3i??7nM.!nn-E0p-S-_X0c^;g_/]4/.>+Df\!G;HG2UQXaQ*#sW:ir(b[HXHblrT$C:4`4Q1Vj;Y8EB9Sk2u!36IRClFnlbdJj0;LIHlD@cfCcWQr8)IMD3/J$YI"!-!"rcnQ*f0<-H`*gTRf.E+5Hf*l4uMTjjD$r+OGH9?W$N+OaSg2OA]>B]35p;X+KJqB)d-%fl~>endstream +endobj +11 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 1430 +>> +stream +Gau`Shc&8h&:Vr4Z#>:70TtOi4EQ=1?B5S\QKJ%.(Y)Q<(gD/846=f'Q2Dj5EDiHNF-D0rhUUoGDnhPO$3WTCr_IQb5A+s/(Bs*@C]W%,4IFs?qq:&NKQ`s2F-mbg!JGINp`%OCiZ4a/h6s:"8SJ_1_kjHO;+^tjt-!Wd8\.?H\C&oE4R&)&V%XC)!]1b=@fAV4mile_;WF*2R1B?U_K8^qQs[W`G5M;(6;nN>,OpP)8W*SNI%B*TEUo#"i14Q^-=UTP&UlFJt6eAH2[jf5&k6U`6X"E;,]oC&*s>*tO?*=6#H;&e=BMCKDrB-'???I^gQ">65PqhV!;h:b7N0kh%(1L='Z<.G_U+YQa(OM/P`b8Sg(7Y*&=BdIjM&ptiZQp>2MiJa+S#JK\I-`L(k>E:fPon,Kqh+'XD"T?!tOS#9+m9b(sCQk(iCOgR#iU)8\LJ`MBKZ:=])SJWSYUAKQ[ZCiVLq/efSlrhiFO=QOD68"`7l0NIYe=_^h6OU20#$DWX8i,L(AkgH'ekI=$\^[/O*t)W5<17=;F=aPi[Z\(;0/KagQ8`N#/oc36m+="(o$2O#;n82-,/:e)4f&:>A2SI1/\.%U%?MA5;mK=rG`B#6FV&[+(IO(X=ssJ>_m#Fu?`B(62Y5bC,(E&]XD3OE`#4.ed;5MD&(Rd003MnkMJjBAE3ZFIuiE/HN.F5q!`@!E#^XS_.Snj7sLE\;[-U2JS`%J>Hc0&Do6'Dba3au7M%8/\1H9ZIKdGI35"Or&.p8u]kHcPi:]*aX,^"Dg-Q_2Y3uR!oCnl(!=PI>-f4iDcZKJJ=.FUendstream +endobj +xref +0 12 +0000000000 65535 f +0000000061 00000 n +0000000112 00000 n +0000000219 00000 n +0000000331 00000 n +0000000446 00000 n +0000000650 00000 n +0000000854 00000 n +0000000922 00000 n +0000001202 00000 n +0000001267 00000 n +0000005704 00000 n +trailer +<< +/ID +[<94b7559a74725ab32d8d7e3b9a50bfb6><94b7559a74725ab32d8d7e3b9a50bfb6>] +% ReportLab generated PDF document -- digest (opensource) + +/Info 8 0 R +/Root 7 0 R +/Size 12 +>> +startxref +7226 +%%EOF diff --git a/output/pdf_propres_ocg/OGC 97 - propre.pdf b/output/pdf_propres_ocg/OGC 97 - propre.pdf new file mode 100644 index 0000000..abfaa91 --- /dev/null +++ b/output/pdf_propres_ocg/OGC 97 - propre.pdf @@ -0,0 +1,99 @@ +%PDF-1.4 +% ReportLab Generated PDF document (opensource) +1 0 obj +<< +/F1 2 0 R /F2 3 0 R /F3 4 0 R +>> +endobj +2 0 obj +<< +/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font +>> +endobj +3 0 obj +<< +/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font +>> +endobj +4 0 obj +<< +/BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font +>> +endobj +5 0 obj +<< +/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +6 0 obj +<< +/Contents 11 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +7 0 obj +<< +/PageMode /UseNone /Pages 9 0 R /Type /Catalog +>> +endobj +8 0 obj +<< +/Author (\(anonymous\)) /CreationDate (D:20260318161809+01'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260318161809+01'00') /Producer (ReportLab PDF Library - \(opensource\)) + /Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False +>> +endobj +9 0 obj +<< +/Count 2 /Kids [ 5 0 R 6 0 R ] /Type /Pages +>> +endobj +10 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 4314 +>> +stream +Gb"/+>BAOW(4Q"]^sglj=jskm,eHjTjM]cW*Cj!g4'VGFOm,g_=`QnZg]%(5!/V(PJg0G_l0Ri68HjMRc6;]9g^'&c%"F*0GQ*9BO&L0"L*/h1oFVZVE&>6tQd_-O-`#tJGegiI!_%qO6I$GG%UcBrc)23lJXA`3QmW`4U-su2jCh+)ckseCi9:>)I5;dH?)!g87`]O*\@B7@_b2i#*.579?)-?`F>pq$NWu9%>;USK4-o!Nm_AcC9g>E;?dW#%GYn?%r2EUZ`fBmAXcjllHBU;s36-#&;ClrTJ&@A0kTeLlN)&h;mhs/Z]:#e,Vf]Q,UhI2(:\QCc&*\JH64Z.7*8R:@f@ansk3LP[h/$`Y`HkO_Xn3q@%r"F&0eJT2[m\CRD:87V@J2-=Ml5akHn.]hcHme`ghkOX.*]3ICR(`S:FdmCbQNc*OMik63"ll50MApG$+C"rFb_Y**Qfn7\:W8bdL&nU/:Ve_'d]#j1+A+SV@m"8SUF`qZ7LDriEC_-=!P\_Su67@4h;ZIrr=VGl+;lDi*pZumT*\7jUs!Y6,Ioq?'.(@gWR^7.\8@'`1^:XA[49*"AENRRD[]971XDF5OK4][[VUj309f-#%?\^Sl8>B)En'#Im4am1k'cQFT(sU8h.X''+.k^KJAHsCPaAF_!^s,oJO)US/ugj:lb.XQEY'?R)LnS(($I"!PdN!2o@`nojaTKU`HB5p7;UFK"oU&Snf\.]A9>"SY9UAD_i.]g=[!C=0WY[rcTM5@Mo6Rmfd-Psj'HY[2c"A!"$PM,DZL-Yp:4B[$H3//U)+/K1r"S4o(11"EGNqMi`]u0(JXhf(6o"nV7WEqb-!8lC)6s\&.i!T5A_'Ki#=OBBK3J`JTIRZ#\H1Z+0RH2-XUBUPo#%W\+kn3!KoK6PgZZ&.McJFrNl2I=8-&.0$Lif"l7^1o,PA!cs@3e`g]E@$_$Z\KQ$ogp!P*-l$4FTG/4Na;0qf'1F*,o]b1DrA?aeJcd0`=ZOPD9!]3i-j3sA%n/,e29Z^"k?'CmHF$mZI2FZ;@=f=3!KUnI-8Cl18"Usc4:Qd"tnrDEg0KP9_WlG![Xcm6uX_&K#d!2L:i4!qQu8)PQ-GaC.#Cg/O0t"sHQad=k-)97k]cSnZm%+Up+bCMS;WVn$01[;!3O7DPM&F'@d;oX!Ms?1tld'/@s"ku)qVqNi<(hUX`/l)[8#h^u\6NeI\VcnLhHA0t#L,/AQ7'he9`6d1D[f))GTF89]ZdT7H(/#m#khm&A&ZQKo,*?b)"X_GF"U!=?&*R.jJW@msdokj4$-.Q`?7V-D!caU-1Fi2'fS8U@jl\9s>U\XU[ATHV2YRig_'s&>YAf0^\;cRqqYV>)t;&$)N('`6g\>!Be0JE_nWT^&`S%<$:?`ks$m,&LI10oV8AR'4?k??o\V`DVo2oi'hL&oPYgmtQJXp\c5+S3:%#)(V7nfU*_<'#\?-h6ae1bHX;:,Tf=C`5ikIS,9.GTIJf:V`[hCU(\S`:e)H8^=?n6O0#($nZ]CnZjX0h6T4uK;t%:ZPErK\J<:[EemcF,gmI("BN?3W%NS5(pj/.3XG_L;hWg+.tZi+#3#WC)T4^"g(l[9Y[pG)MpDk?N^bV3Jp"uj>X\CV./Tt_)Y`)3'eF@k@i)c/-LIL%oMXJX".l:QD0eUqrO5<(A)Ie/dQQ,)/7=.MeI\hk1`3U&&h+8D\*W5o%ICMU@1Dq3Zd8t?F_$0Zb:EaE48)!l8S`nRE'n8pVr/FSgtli.SXW3Ne'ch.4?>F9!B'0uLc3QJDjpV^:L)Ytdptb`*g9E\Y.6`if&$#-N/8#-RP^(9BZKF6M,*JB]5M#\:U,3JgIcC3WM/ka_8NcAStmpe%@^(.2TM@@n,\3[r'sh^4SGo$_s]%[Q;3BW+;/6#J:r;RHAI>9,BsVA`SlOt5(Y3Pgg+`*qG.F3#;qaPL%&<8boDRq!,.#`Q,!^drPEARJ&[o3"qqNGahFTad#%DZ*E]?&d;U1<#RW5jQ,QA53M7fme:giU9!UL]?tRWQqdm]_:>snW0\iP=&GL1kg^B'rtU^DhHh[?D5^TU8e4d_1fKUJp6sH>*HQ\p75\+MH?;1/at2k5JN`?Hc0Po`"ZR:0.1T(B1*!pmFq?mMlg!,kKluLp(XRoa.+,CNm><[m5>3"K)B2C]nT5])"DBV1?O$(8S2]n+QS:Pu.JOLh]q(0:XtK0p_\'gAVcRr@Zcp+AT!lo-KhTbie08naCM*Ypgg'a/536cbL)PZ]XtjA.XNhGS0.)>!oWgpXH+`t%eEJNi5BUM9hFjE.VZ@:p)BOc4?[4*i/n9@qFHsDW*7gN<>m6fphMlD#kjII,H?:k^]pZ7#:sC8T[B@=gcLS,06S)J.oHj?DA?T/o3\dg5'u]<87C5h?d7Ug)3h7`cOcB-W@XmNDDa^%8M;%&QHpSu-`UG$gQO9+/or11WRu1R%$pp`70aJ\a$AG`J\e(-)MoYn8rEbkp\be7nj-PKZa[KKM@P4WD26eiro(C'GF"&"3Y0U?(%%/[_`UcsGk5t8k)FFuuSOUJ#BFJI+]BE'iBM;a"pTt5AgpAF;,+@/kk@2/"h$h(&rJ=>@mIHj?UAobNVl/T?0'bOsXD:bb;t+A_T-lK:=+kNm!,E">#K^A?g"b1Xk<*T-A`2--q-q#@?"I)9()ETD*i(q!HV-L%Hcbr5*.^"uIJmG\c3?/q*FEc[Fcr^7aKkIi:WtLg?D3,AGS(d^OHB]%E[8%n4YdX[t_&q2s7&@:2i$4um@"kf0;dW^D_t:j2JJ"q6`5pjmX7"=)Vo7BgVnQ&Y2m26Z?3?69_YQ:cmJlV9>@a8R2M%MhV.HNmeA[RU\RL?d7'Y`43]55*(>c?8Hphcq#QdXnehP361OFW43S2U=.7si22d@PZB>'p*8*8iRTB5u#km[SnHh;NLYf^8N,*aX?Q2eLujZ=iql+D&3i!2==%gNcu8H~>endstream +endobj +11 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 1384 +>> +stream +Gb!#ZgN)%,&:N/3m$m'r9EPF$H#r@0UF&cD.f5eg8(+5^k=>Y-6Ldk-tA;+&r+S$#)fO+Dm*L)-'ua=h-6Ng0!&>;KM/`?$;n6:.KNZW`L?TZ'<*N+Xia\H=lAD9;eM2>J`JaL5L,.B5N"DR3cZ5V&unfi#DC;*4@q'QZsq9pEJ4,;%bDpjK$Xf1M1,Te7RKEPHT'e!Lf&tqMRk23pinq'h%+huoDnbKECf"C(ZkGs$d&Nq"ZIDZ4Dd1!>?R4pJiA1.KUOF4k?`#k%FjM6b""DhAC<^>,B*RWN&Dp,/s&j`X1RECu]Y[1SL?_;%)AeQ`+2*'s?]J*`Jd"i/p7q&j$9ips8Z$N\\>RUeq(pdQ(rI):A1N9PTO%IF)LX@Se6@7caNn:\[qjJ$*YuP*sqO,s@`EN7n&%Kck)#m_YMaJL$0=L3bUdAK/Q'e\9D.a8jp2:\WTkB7I^38Ldck8_QiZT&EnS<&-DXkVF8!a"D6M=&X-"O,`g/]t);_H[8jGpWb5L9CN)7q.:-UFt,+`%X;N)L==60ja,=Gr*GEs4CublB0,?hq_4&dl(8LfF(jKY0AG=hLRhkBTm7N9WLhJSEc5Q;qHlBoj2QG_0%9;tffn&"k(e@foWil^QDZg%;((pk2f2)(fRTT0aM[^4;;t?XqS:gbWiPf<[<(d/lLl#+BY).#eC'sO[/;nl!RE54f)nK)iF/'Y&9^@7+3F_mmfg('+9~>endstream +endobj +xref +0 12 +0000000000 65535 f +0000000061 00000 n +0000000112 00000 n +0000000219 00000 n +0000000331 00000 n +0000000446 00000 n +0000000650 00000 n +0000000854 00000 n +0000000922 00000 n +0000001202 00000 n +0000001267 00000 n +0000005673 00000 n +trailer +<< +/ID +[] +% ReportLab generated PDF document -- digest (opensource) + +/Info 8 0 R +/Root 7 0 R +/Size 12 +>> +startxref +7149 +%%EOF diff --git a/output/pdf_propres_ocg/OGC 99 - propre.pdf b/output/pdf_propres_ocg/OGC 99 - propre.pdf new file mode 100644 index 0000000..5ac7b46 --- /dev/null +++ b/output/pdf_propres_ocg/OGC 99 - propre.pdf @@ -0,0 +1,99 @@ +%PDF-1.4 +% ReportLab Generated PDF document (opensource) +1 0 obj +<< +/F1 2 0 R /F2 3 0 R /F3 4 0 R +>> +endobj +2 0 obj +<< +/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font +>> +endobj +3 0 obj +<< +/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font +>> +endobj +4 0 obj +<< +/BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font +>> +endobj +5 0 obj +<< +/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +6 0 obj +<< +/Contents 11 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +7 0 obj +<< +/PageMode /UseNone /Pages 9 0 R /Type /Catalog +>> +endobj +8 0 obj +<< +/Author (\(anonymous\)) /CreationDate (D:20260318161809+01'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260318161809+01'00') /Producer (ReportLab PDF Library - \(opensource\)) + /Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False +>> +endobj +9 0 obj +<< +/Count 2 /Kids [ 5 0 R 6 0 R ] /Type /Pages +>> +endobj +10 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 4640 +>> +stream +Gb!SpD0+Gi')nJ0JPT@VP;'o_6*g5VPn[F]P3b_[kAKR6:h1nQ7[>#kb-h9K(*N-6Oe>8qFuhQr)F4me>qR2b!XfPVq="X4s0!ITqIP67^;C3i[.oG2o,(Yid;\X@b:B+7Us,Tm1QK>>HNBlUIL!)1iVfZUciVdX68K/!+@38K%u]#ua^Ug@ESMo)j*LAgJf^8*1qT=6rV.U@Hq'$dd$nM9T_a$1;l+s(>O!$3NkI^ANMF:!b`B&q,,+ngG8,%JIRNIPdDaq\*G%Dqm$HK!+ZUP9$!JCt_]93UIBm$pdJXXd7ME0,]%e@RC:@Ipqnr!/hJI>AV;Bj7!=:L+bq`(T)mi2`5$@:@Q_+ntIX#,#%\e[%&q,Foa1Z9k-0YGFD:<%oBe*_/9AkVPE>7@Z/J/WAV_JjNYUbf+<=!&>U"IhW/&(@S;ITugmOoM\;BjDF8PjY@8moJDq-gU)e)V['BDkssN=[=M?D.:B1`a9E"d])5S+V.,X6Za2i6i8O`k@bE\@isP7ap=D?C"?c&%j&LGKQ^YjDhD;H^TNJ+[Pjs#QVY<]jLQg2ta6jX>?$(l1/UhI0kK3Jo.I[qP2?]O-Xh89>>b>eA,$gX]5DnH";J?pGUU?$hAHJ!(Y_P'#_Q[pfODR6[+Y:oe77uQCC9I@]T+I!d!=kB]dZA-3]B0@_P?-k85BP%5FlTu)R1>2G)pdBKF\pZ-G]#+(8fYK17f?#'s/@SuHb:4V"4*r'UcjM:rh7QrA,,+.+`@0bbI4!_f(BN$@;BSV^)^gCYc5p?.]&<'eVXJN_"Z.XH!P>J4NcX?2t/c,e:pH#o=.oIj1&bF'JlC:MEDsoljKF':K01Yi:OL/DUB%%bZU5#;/7U5N,V2!&'+F.2aCWE:3N,?Baa-.^DWgFh*WBB`n*TWCfMHd%6Ngd)b975,Z9\fCI-*iJk!Bi4e:H!1HJJWYJ)d0\U9c\tV_h7`%gLub#KM%%:f[\-UXP8^:5=hnJimUdjeR\h`Up:INM)^X.sSEc\uV*i'k6&e2bX(MJ%`1e/#_0Cu>a6iSU[F'a2PA1LoII=A%FCGjd"'PI/@*,b+#(#kd-,VharRqR5]d^C4SY3-59Qo)n]j>4D-+"u7T`=&h]F`3.n1D70_(jeHU/8Z"E7DKpnEPBGl%#F'bJG;hJT]=k=('pC55R4V3Zal)sk=U]%9%`!o>M(74YnOe0..Sr4i8l0fT8l0f6.M/+A2d_/bE"Yj@.VF$adPt>JG'f;eG9AR+5CtrjnabPs`LY&-qi2J:*A?e?.N#!&7g5dg7MVfU7MVf57KISl>X8"88PqaPOE4:VTB9C#4f_&_)35PRILPVPKM6U[^7ZPFFr!"Hh*OJjdF(fT>@)*hI]0PB&UQEVhU30(9F-Xg$%0VKa2*\pTq$3oWT,I<&'6,V4H1[<(E\gePaZA^1E4_U_2ag*E2@9+m%BCooHK614u2^t3Q(d/4K/(-PaO:%b[H5)?)Qj;q\?S-Q*V_97^rOG[$@ID!hQ9)UIUQJ^H(=BET(%qW7d7H%eK7K?'cdQ'ODD0S?=DSX(!h\#FgYr%^4SX#D3!/9lj5]1>Z[$1`W`[2;0>p!:V>r/p3Aq4l-j_P+BTTV,)\6!nr7B1QT9I""e-:`XZgo=cOl9.mp_Z5q&P28(rCnVDRA>`(&'b&B4R.Z=.T;nQ'k8l(MZ/m(^pq8$?*b*B#o)1Z.3@aLH,Q--+8W"sNBFs4tCFr4CMJ6%]0bo6XLXoKM+eI!g]:"`VAlokR)Lp=ABF'_]e3_Di('1ldCFp*0G1KSqbD@G&52X^jj9:4V(-?o'_K.k5e\\[J4("MJhgq7s98FqBn9IRs]H$bh#70sZ-!Qc#4_1rS_(_Z2gLQCC"l4?E%+9*;#h!Zl">XBH)4[U"/oVXJ4GKhoF+TDs?(jAHa7fENGF4ubWIK_i8H$f&p(;q.L5"hNDte[Da]t2Ri6-kZ38-h'24>^[$oa].iVFFZL1([a=[gVR;uo3@\a`%F>Mj0mt&6i7AC,OmR='`Kuj3"T;$`GD]b_)agFk5n[EOiR4))9NkD7)7Ht0SNDt<6WB[+$;6I4duCP`idoAT)pH?)19c+bjb\ldasp+,uJ>d1_FZX]]]ell[0[Y_6WA/hXq22mNI-'#[[TUkJO4noaP^W[cLS+RGIZb1/L_peK5"o[a2,PeQV1ir+[fX[30s$Q$\$Ob,g)DtYe[^tdE#c>uI*mj41ReK8\&h[g$Pko7MFREIA$T;!2%F3&,Fa`i+H+3CEe=&tXi<4tdqfUQ;k#dPran6')e%>^LcEl_n#OT(olr8#%PJY\l"$rn`3_@r(:+,/-h?r8t7\QV]$OSog^uX8gZN2I'J/2I1UuhhNkFRta@9/r[dLTBLj>&Cs1M16;6KSF\=6I@-*-9g#'$WZ(TQ;2)^s)CAaIW3)/.QcUMLDGubR@ZDijC[q(3h!Z9`hH+3[Al$aTgQM[.sN0coR'`"pqYsP.t<%m,b@Pr*W%:k@Dn2YG>t)Pn;3"18=WJgmU!5#uT#R!ar+Ads:A@"fG*Q)\+Kk.UJC5mR=WaV_XuJZqd/aLgC`q]Y76-.rrsAgli0@N5-=?T@g?($fNIN\6fp$n(4)"%ZbE[dVT`:XpM7bfP2UD+b8-u8ZeRo0.Dl.RoRY<=C@kQ-h>[CQdVn>nP^f&"iaO%/OtJ8cT2bdVhnRd5n*T2if%\NkoW\>)QFCM7\A1Xf`^IIJPI@9goLg*3bO8G+^+AdCe57nB8PC1X4f#o\l',B-RebVJ_Y/Hf/Z;E?/'3Atl@aPjI7cc-rU(oDb['/(Sp<1endstream +endobj +11 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 1450 +>> +stream +Gb!#[9lo&I&A@C2m*0RkVX_Ju+#;m1Br[16-]ZW=/dMd*n;s;0OG\O:(Ec.<(8\t;FJbh<"`bE;[r:.*&-[Y-lMd[b_!b43pk&WZ0V&==4WgQ1n:!Fp5,+SqpH@r"IL&d`H@aC&c9jC-k%ZWf#db,"@1!Fa+E?qMNCGr&!_,/Q"lU8V0YU#&"Bt#9E>TaJ('M=g:Dn?V*8'ckR?tYg,Tn.&_W3!S(3^6s'_MsJ5b*(T.lQ.G:4Sr]d"ARA::II"'9@g*1K;X1(fQU5-/8ipMmR@O;6*T!FaWuU$S4^Mq2(A./\^>h(hlnQI3MCF7UpQs0<7FVN;E``79-BFQah,ah'7e,@'tu%A'tMBG.ai>XFLm$5Z)-.Y1=)(Tk_YD)@a:-kERksRGnTg^]l!@*(Li+/MjZ9MkYZ#lG?3#XoWNVAO7>o5\p0H@58])KH+NGSBBh1eo;([^cVl"fkpj:p>Asm!P9m5Pd"k`8*i5^(:l=n&M,H/;md<"bf2T6Au@O5[g5mgpE.tCqbbF?63D@DF-LQ&C7:kcM7cpj+k\F`;7_%@'aHc\!e'KJpn+3O)i3]]He)8C-kf%+7YN<&Kj7pR/FH"o:I+h;ZdS`%r?"rZZGbWg-:pXqj`c"KrJ,k[;QQ5`<#0$@.msMDZ3SbaXo@XJA>&$Y;@n5*a4&XhDLklDRl8j$`=l?K]0B/9oku?fCWL]C7".;04/W5)k#?J1/VI0%%8`9-;fYfRG_8>'`K9a2/r#V:[F>tFJUT2?^=F=.DG/o1i:>="$L)K/hW,`1Qsc_Ph!KA&%l^O/A!aG*t=/cqgcKo1l`dj"U$s]Jf%9gI*1E+1Q_"uAEPi'phb]C^EJsiFs,M4QOA0oa\1:LrL6:k;KhQ.Vm5-FlV2/PPs',+1JVL][gLnp5)eJGLYg7-W27J%qhNIE\>,uA"U>2K,Y@Ioh[4D9^%NrG+D\S4])CNXeSF:'9^_m-"Zf1oO:X)=fcJ*OLR@cFYPur-XtRgPh#<,&aU=PFoFDUSMYm~>endstream +endobj +xref +0 12 +0000000000 65535 f +0000000061 00000 n +0000000112 00000 n +0000000219 00000 n +0000000331 00000 n +0000000446 00000 n +0000000650 00000 n +0000000854 00000 n +0000000922 00000 n +0000001202 00000 n +0000001267 00000 n +0000005999 00000 n +trailer +<< +/ID +[<3c290bc81da600d7dd51c800080efdb5><3c290bc81da600d7dd51c800080efdb5>] +% ReportLab generated PDF document -- digest (opensource) + +/Info 8 0 R +/Root 7 0 R +/Size 12 +>> +startxref +7541 +%%EOF