From 786c07127489fc00a1c70fe03579e8a5ebcbe15b Mon Sep 17 00:00:00 2001 From: tonlls Date: Sat, 14 Oct 2023 04:06:03 +0200 Subject: [PATCH 1/3] added connection to api and missing to create the data file --- .gitignore | 222 +++---- .idea/.gitignore | 4 +- .idea/IdentificationGenerator.iml | 20 +- .../inspectionProfiles/profiles_settings.xml | 10 +- .idea/misc.xml | 6 +- .idea/modules.xml | 14 +- .idea/vcs.xml | 10 +- .vscode/launch.json | 28 +- Dockerfile | 20 +- Model.py | 547 +++++++++--------- PrivateConfig.sample.py | 2 + README.md | 12 +- Tools.py | 260 ++++----- api_connector.py | 23 + main.py | 50 +- old.requirements.txt | 62 +- resources/editions/data_sample.json | 30 +- test.py | 140 ++--- 18 files changed, 748 insertions(+), 712 deletions(-) create mode 100644 PrivateConfig.sample.py create mode 100644 api_connector.py diff --git a/.gitignore b/.gitignore index 63edd56..2922d14 100644 --- a/.gitignore +++ b/.gitignore @@ -1,110 +1,112 @@ -#custom -resources/*_firebase_cert.json -resources/editions/*/data.json -_out_/ -*.pdf - -# Byte-compiled / optimized / DLL files -__pycache__/ -*.py[cod] -*$py.class - -# C extensions -*.so - -# Distribution / packaging -.Python -build/ -develop-eggs/ -dist/ -downloads/ -eggs/ -.eggs/ -lib/ -lib64/ -parts/ -sdist/ -var/ -wheels/ -*.egg-info/ -.installed.cfg -*.egg -MANIFEST - -# PyInstaller -# Usually these files are written by a python script from a template -# before PyInstaller builds the exe, so as to inject date/other infos into it. -*.manifest -*.spec - -# Installer logs -pip-log.txt -pip-delete-this-directory.txt - -# Unit test / coverage reports -htmlcov/ -.tox/ -.coverage -.coverage.* -.cache -nosetests.xml -coverage.xml -*.cover -.hypothesis/ -.pytest_cache/ - -# Translations -*.mo -*.pot - -# Django stuff: -*.log -local_settings.py -db.sqlite3 - -# Flask stuff: -instance/ -.webassets-cache - -# Scrapy stuff: -.scrapy - -# Sphinx documentation -docs/_build/ - -# PyBuilder -target/ - -# Jupyter Notebook -.ipynb_checkpoints - -# pyenv -.python-version - -# celery beat schedule file -celerybeat-schedule - -# SageMath parsed files -*.sage.py - -# Environments -.env -.venv -env/ -venv/ -ENV/ -env.bak/ -venv.bak/ - -# Spyder project settings -.spyderproject -.spyproject - -# Rope project settings -.ropeproject - -# mkdocs documentation -/site - -# mypy -.mypy_cache/ +#custom +resources/*_firebase_cert.json +resources/editions/*/data.json +_out_/ +*.pdf +PrivateConfig.py +.idea/ +.vscode +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# pyenv +.python-version + +# celery beat schedule file +celerybeat-schedule + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ diff --git a/.idea/.gitignore b/.idea/.gitignore index 0e40fe8..5a36972 100644 --- a/.idea/.gitignore +++ b/.idea/.gitignore @@ -1,3 +1,3 @@ - -# Default ignored files + +# Default ignored files /workspace.xml \ No newline at end of file diff --git a/.idea/IdentificationGenerator.iml b/.idea/IdentificationGenerator.iml index 6711606..9c88284 100644 --- a/.idea/IdentificationGenerator.iml +++ b/.idea/IdentificationGenerator.iml @@ -1,11 +1,11 @@ - - - - - - - - - + + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml index 105ce2d..20fc29e 100644 --- a/.idea/inspectionProfiles/profiles_settings.xml +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -1,6 +1,6 @@ - - - + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index d4fc832..c9da8e2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,4 @@ - - - + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml index e59bda9..43bab96 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -1,8 +1,8 @@ - - - - - - - + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 94a25f7..9661ac7 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -1,6 +1,6 @@ - - - - - + + + + + \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json index de19f71..7a47f91 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,15 +1,15 @@ -{ - // Use IntelliSense para saber los atributos posibles. - // Mantenga el puntero para ver las descripciones de los existentes atributos. - // Para más información, visite: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "name": "Python: Archivo actual", - "type": "python", - "request": "launch", - "program": "python main.py", - "console": "integratedTerminal" - } - ] +{ + // Use IntelliSense para saber los atributos posibles. + // Mantenga el puntero para ver las descripciones de los existentes atributos. + // Para más información, visite: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Python: Archivo actual", + "type": "python", + "request": "launch", + "program": "python main.py", + "console": "integratedTerminal" + } + ] } \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 30c1b19..709e0ee 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,10 +1,10 @@ -FROM python:3.10 -ENV PYTHONUNBUFFERED=1 -WORKDIR /app - -RUN pip install --no-cache-dir -U pip - -COPY requirements.txt /tmp/requirements.txt -RUN pip install --no-cache-dir -r /tmp/requirements.txt - -COPY . /app +FROM python:3.10 +ENV PYTHONUNBUFFERED=1 +WORKDIR /app + +RUN pip install --no-cache-dir -U pip + +COPY requirements.txt /tmp/requirements.txt +RUN pip install --no-cache-dir -r /tmp/requirements.txt + +COPY . /app diff --git a/Model.py b/Model.py index ab80de4..41cffe7 100644 --- a/Model.py +++ b/Model.py @@ -1,269 +1,278 @@ -import os - -import firebase_admin -from PIL import Image -from firebase_admin import firestore - -import Config -import Tools - - -class Card: - QR_PIX_SIZE = 1 - QR_POS = (450, 78) - _QR_SIZE = 267 - QR_SIZE = (_QR_SIZE, _QR_SIZE) - QR_BORDER_SIZE = 0 - TYPE_POS = (0, 475) - NAME_POS = (QR_POS[0], 370) - NICK_POS = (1198, 870) - - -class Assistant(object): - __ID:int = 1 - __DATA:str = 'empty' - _DATA_FILE:str = Config.DATA_PATH - - def __init__(self, id:str, type:str='', name:str=None): - self.id = id - self.type = type - self.name = name - self.card = None - self.qr = None - - def show(self): - self.card.show() - - def save(self): - self.card.save(os.path.join(Config.OUT_PATH, str(self.id) + '.png')) - - def generate_qr(self, crypt_id=False): - self.qr = Tools.generate_qr(self.id, Card.QR_PIX_SIZE, Card.QR_BORDER_SIZE) - self.qr = Tools.scale(self.qr, Card.QR_SIZE, False) - - def generate_card(self, rgb_back=(255, 255, 255)): - self.card = Image.open(Config.BAK_PATH) - Tools.draw_text(self.card, self.type, Card.TYPE_POS, Config.TYPE_FONT, Config.WHITE_FONT_COLOR) - if self.type == '': - self.smallen() - - def smallen(self): - blank = Image.new('RGB', (1082, 782),(255,255,255)) - blank.paste(self.card, (0, 0)) - self.card = blank - - @staticmethod - def get_data(): - data = Tools.DataFile.get_content(Assistant._DATA_FILE, 'JSON') - num = data[Assistant.__DATA] - res = [] - for _ in range(num): - res.append(Assistant('A' + str(Assistant.__ID))) - Assistant.__ID += 1 - if Config.TEST: - break - return res - - -class Guest(Assistant): - __ID:int = 1 - __TYPE:str = 'CONVIDAT' - __DATA:str = 'guests' - - def __init__(self, name:str, mtype:str='', logo:str='', has_qr:bool=False): - super().__init__('HackEPS_Guest_' + str(Guest.__ID), (mtype, Guest.__TYPE)[mtype == ''], name) - Guest.__ID += 1 - self.has_qr = has_qr - self.logo = logo - if has_qr: - self.generate_qr(True) - if not logo == '': - self.logopath = os.path.join(Config.RES_PATH, Config.EDITIONS_FOLDER, Config.EDITION, 'images', logo) - - def generate_card(self, rgb_back=(255, 255, 255)): - super().generate_card(rgb_back) - if self.logo != '': - logo = Image.open(self.logopath).convert("RGBA") - logo = Tools.scale(logo, Card.QR_SIZE) - self.card.paste(logo, Card.QR_POS) - elif self.has_qr: - self.card.paste(self.qr, Card.QR_POS) - if self.name != '': - Tools.centrate_text_relative(self.card, self.name,Config.NAME_FONT, Card.NAME_POS, Card.QR_SIZE) - self.smallen() - - @staticmethod - def get_data(name=None): - res = [] - data = Tools.DataFile.get_content(Guest._DATA_FILE, 'JSON') - for u in data[Guest.__DATA]: - if name is None or u['name'] == name: - res.append(Guest(u['name'], u['type'], u['logo'], u['qr'])) - if Config.TEST or (name is not None and u['name'] == name): - break - return res - - -class Company(Assistant): - __ID:int = 1 - __TYPE:str = 'EMPRESA' - __DATA:str = 'companies' - - def __init__(self, name:str, image): - super().__init__('C' + str(Company.__ID), Company.__TYPE, name) - Company.__ID += 1 - self.logopath = os.path.join(Config.RES_PATH, Config.EDITIONS_FOLDER, Config.EDITION, 'images', image) - - def generate_card(self, rgb_back=(255, 255, 255)): - super().generate_card(rgb_back) - image = Image.open(self.logopath).convert("RGBA") # .resize((550,350), Image.ANTIALIAS) - image = Tools.scale(image, Card.QR_SIZE) - self.card.paste(image, Card.QR_POS) - Tools.centrate_text_relative(self.card, self.name,Config.NAME_FONT, Card.NAME_POS, Card.QR_SIZE) - self.smallen() - - @staticmethod - def get_data(name=None): - res = [] - data = Tools.DataFile.get_content(Company._DATA_FILE, 'JSON') - for u in data[Company.__DATA]: - for _ in range(u['number_of_cards']): - if name is None or u['name'] == name: - res.append(Company(u['name'], u['logo'])) - if Config.TEST: - break - if Config.TEST or (name is not None and u['name'] == name): - break - return res - - -class Volunteer(Assistant): - __ID:int = 1 - __LOGO_PATH:str = os.path.join(Config.RES_PATH, 'editions', Config.EDITION, 'images', 'logogran.png') - __TYPE:str = 'VOLUNTARI/A' - __DATA:str = 'volunteers' - - def __init__(self, name:str): - super().__init__('V' + str(Volunteer.__ID), Volunteer.__TYPE, name) - Volunteer.__ID += 1 - - def generate_card(self, rgb_back=(255, 255, 255)): - super().generate_card(rgb_back) - image = Image.open(Volunteer.__LOGO_PATH).convert("RGBA") - image = Tools.scale(image, Card.QR_SIZE) - self.card.paste(image, Card.QR_POS) - Tools.centrate_text_relative(self.card, self.name,Config.NAME_FONT, Card.NAME_POS, Card.QR_SIZE) - self.smallen() - - @staticmethod - def get_data(name=None): - res = [] - data = Tools.DataFile.get_content(Volunteer._DATA_FILE, 'JSON') - for u in data[Volunteer.__DATA]: - if name is None or name == u['name']: - res.append(Volunteer(u['name'])) - if Config.TEST or (name is not None and name == u['name']): - break - return res - -class Mentor(Assistant): - __ID:int = 1 - __LOGO_PATH:str = os.path.join(Config.RES_PATH, 'editions', Config.EDITION, 'images', 'logogran.png') - __TYPE:str = 'MENTOR/A' - __DATA:str = 'mentors' - - def __init__(self, name:str): - super().__init__('M' + str(Mentor.__ID), Mentor.__TYPE, name) - Mentor.__ID += 1 - - def generate_card(self, rgb_back=(255, 255, 255)): - super().generate_card(rgb_back) - image = Image.open(Mentor.__LOGO_PATH).convert("RGBA") - image = Tools.scale(image, Card.QR_SIZE) - self.card.paste(image, Card.QR_POS) - Tools.centrate_text_relative(self.card, self.name,Config.NAME_FONT, Card.NAME_POS, Card.QR_SIZE) - self.smallen() - - @staticmethod - def get_data(name=None): - res = [] - data = Tools.DataFile.get_content(Mentor._DATA_FILE, 'JSON') - for u in data[Mentor.__DATA]: - if name is None or name == u['name']: - res.append(Mentor(u['name'])) - if Config.TEST or (name is not None and name == u['name']): - break - return res - -class Organizer(Assistant): - __ID:int = 1 - __LOGO_PATH:str = os.path.join(Config.RES_PATH, 'editions', Config.EDITION, 'images', 'logogran.png') - __TYPE:str = 'ORGANIZACIÓ' - __DATA:str = 'organizers' - - def __init__(self, name): - super().__init__('O' + str(Organizer.__ID), Organizer.__TYPE, name) - Organizer.__ID += 1 - - def generate_card(self, rgb_back=(255, 255, 255)): - super().generate_card(rgb_back) - image = Image.open(Organizer.__LOGO_PATH).convert("RGBA") - image = Tools.scale(image, Card.QR_SIZE) - self.card.paste(image, Card.QR_POS) - Tools.centrate_text_relative(self.card, self.name,Config.NAME_FONT, Card.NAME_POS, Card.QR_SIZE) - # Tools.draw_text(self.card, self.name, Card.NAME_POS, Config.NAME_FONT, Config.WHITE_FONT_COLOR, False) - self.smallen() - - @staticmethod - def get_data(name=None): - res = [] - print(Organizer._DATA_FILE) - data = Tools.DataFile.get_content(Organizer._DATA_FILE, 'JSON') - for u in data[Organizer.__DATA]: - if name is None or u['name'] == name: - res.append(Organizer(u['name'])) - if Config.TEST or (name is not None and u['name'] == name): - break - return res - - -class Contestant(Assistant): - __CRYPT_ID = False - __TYPE:str = 'HACKER' - __FIREBASE = None - __FIRE_PATH:str = Config.DB_PATH_T if Config.TEST else Config.DB_PATH - - def __init__(self, id, data): - super().__init__(id, Contestant.__TYPE) - self.generate_qr() - self.name = data['fullName'] - self.nick = '\"' + data['nickname'] + '\"' - if Config.TEST: - Contestant.__FIRE_PATH = Config.DB_PATH_T - - def generate_card(self, rgb_back=(255, 255, 255)): - super().generate_card(rgb_back) - self.card.paste(self.qr, Card.QR_POS) - Tools.centrate_text_relative(self.card, self.name,Config.NAME_FONT, Card.NAME_POS, Card.QR_SIZE) - self.smallen() - - @staticmethod - def __firebase_init(cred): - if Contestant.__FIREBASE is None: - Contestant.__FIREBASE = firebase_admin.initialize_app(cred) - return Contestant.__FIREBASE - - @staticmethod - def get_data(id=None, name=None): - cred = firebase_admin.credentials.Certificate(Config.DB_CERT_PATH) - Contestant.__firebase_init(cred) - db = firestore.client() - users_ref = db.collection(Contestant.__FIRE_PATH) - usrs = users_ref.stream() - users = [] - for usr in usrs: - if ((id is None and name is None) - or (id is not None and usr.id == id) - or (name is not None and name == usr.to_dict()['fullName'])): - users.append(Contestant(usr.id, usr.to_dict())) - return users +import os + +# import firebase_admin +from PIL import Image +# from firebase_admin import firestore + +import Config +import Tools + +from api_connector import get_accepted + + +class Card: + QR_PIX_SIZE = 1 + QR_POS = (450, 78) + _QR_SIZE = 267 + QR_SIZE = (_QR_SIZE, _QR_SIZE) + QR_BORDER_SIZE = 0 + TYPE_POS = (0, 475) + NAME_POS = (QR_POS[0], 370) + NICK_POS = (1198, 870) + + +class Assistant(object): + __ID:int = 1 + __DATA:str = 'empty' + _DATA_FILE:str = Config.DATA_PATH + + def __init__(self, id:str, type:str='', name:str=None): + self.id = id + self.type = type + self.name = name + self.card = None + self.qr = None + self.code = None + + def show(self): + self.card.show() + + def save(self): + self.card.save(os.path.join(Config.OUT_PATH, str(self.id) + '.png')) + + def generate_qr(self, crypt_id=False): + if self.code: + self.qr = Tools.generate_qr(self.code, Card.QR_PIX_SIZE, Card.QR_BORDER_SIZE) + else: + self.qr = Tools.generate_qr(self.id, Card.QR_PIX_SIZE, Card.QR_BORDER_SIZE) + self.qr = Tools.scale(self.qr, Card.QR_SIZE, False) + + def generate_card(self, rgb_back=(255, 255, 255)): + self.card = Image.open(Config.BAK_PATH) + Tools.draw_text(self.card, self.type, Card.TYPE_POS, Config.TYPE_FONT, Config.WHITE_FONT_COLOR) + if self.type == '': + self.smallen() + + def smallen(self): + blank = Image.new('RGB', (1082, 782),(255,255,255)) + blank.paste(self.card, (0, 0)) + self.card = blank + + @staticmethod + def get_data(): + data = Tools.DataFile.get_content(Assistant._DATA_FILE, 'JSON') + num = data[Assistant.__DATA] + res = [] + for _ in range(num): + res.append(Assistant('A' + str(Assistant.__ID))) + Assistant.__ID += 1 + if Config.TEST: + break + return res + + +class Guest(Assistant): + __ID:int = 1 + __TYPE:str = 'CONVIDAT' + __DATA:str = 'guests' + + def __init__(self, name:str, mtype:str='', logo:str='', has_qr:bool=False): + super().__init__('HackEPS_Guest_' + str(Guest.__ID), (mtype, Guest.__TYPE)[mtype == ''], name) + Guest.__ID += 1 + self.has_qr = has_qr + self.logo = logo + if has_qr: + self.generate_qr(True) + if not logo == '': + self.logopath = os.path.join(Config.RES_PATH, Config.EDITIONS_FOLDER, Config.EDITION, 'images', logo) + + def generate_card(self, rgb_back=(255, 255, 255)): + super().generate_card(rgb_back) + if self.logo != '': + logo = Image.open(self.logopath).convert("RGBA") + logo = Tools.scale(logo, Card.QR_SIZE) + self.card.paste(logo, Card.QR_POS) + elif self.has_qr: + self.card.paste(self.qr, Card.QR_POS) + if self.name != '': + Tools.centrate_text_relative(self.card, self.name,Config.NAME_FONT, Card.NAME_POS, Card.QR_SIZE) + self.smallen() + + @staticmethod + def get_data(name=None): + res = [] + data = Tools.DataFile.get_content(Guest._DATA_FILE, 'JSON') + for u in data[Guest.__DATA]: + if name is None or u['name'] == name: + res.append(Guest(u['name'], u['type'], u['logo'], u['qr'])) + if Config.TEST or (name is not None and u['name'] == name): + break + return res + + +class Company(Assistant): + __ID:int = 1 + __TYPE:str = 'EMPRESA' + __DATA:str = 'companies' + + def __init__(self, name:str, image): + super().__init__('C' + str(Company.__ID), Company.__TYPE, name) + Company.__ID += 1 + self.logopath = os.path.join(Config.RES_PATH, Config.EDITIONS_FOLDER, Config.EDITION, 'images', image) + + def generate_card(self, rgb_back=(255, 255, 255)): + super().generate_card(rgb_back) + image = Image.open(self.logopath).convert("RGBA") # .resize((550,350), Image.ANTIALIAS) + image = Tools.scale(image, Card.QR_SIZE) + self.card.paste(image, Card.QR_POS) + Tools.centrate_text_relative(self.card, self.name,Config.NAME_FONT, Card.NAME_POS, Card.QR_SIZE) + self.smallen() + + @staticmethod + def get_data(name=None): + res = [] + data = Tools.DataFile.get_content(Company._DATA_FILE, 'JSON') + for u in data[Company.__DATA]: + for _ in range(u['number_of_cards']): + if name is None or u['name'] == name: + res.append(Company(u['name'], u['logo'])) + if Config.TEST: + break + if Config.TEST or (name is not None and u['name'] == name): + break + return res + + +class Volunteer(Assistant): + __ID:int = 1 + __LOGO_PATH:str = os.path.join(Config.RES_PATH, 'editions', Config.EDITION, 'images', 'logogran.png') + __TYPE:str = 'VOLUNTARI/A' + __DATA:str = 'volunteers' + + def __init__(self, name:str): + super().__init__('V' + str(Volunteer.__ID), Volunteer.__TYPE, name) + Volunteer.__ID += 1 + + def generate_card(self, rgb_back=(255, 255, 255)): + super().generate_card(rgb_back) + image = Image.open(Volunteer.__LOGO_PATH).convert("RGBA") + image = Tools.scale(image, Card.QR_SIZE) + self.card.paste(image, Card.QR_POS) + Tools.centrate_text_relative(self.card, self.name,Config.NAME_FONT, Card.NAME_POS, Card.QR_SIZE) + self.smallen() + + @staticmethod + def get_data(name=None): + res = [] + data = Tools.DataFile.get_content(Volunteer._DATA_FILE, 'JSON') + for u in data[Volunteer.__DATA]: + if name is None or name == u['name']: + res.append(Volunteer(u['name'])) + if Config.TEST or (name is not None and name == u['name']): + break + return res + +class Mentor(Assistant): + __ID:int = 1 + __LOGO_PATH:str = os.path.join(Config.RES_PATH, 'editions', Config.EDITION, 'images', 'logogran.png') + __TYPE:str = 'MENTOR/A' + __DATA:str = 'mentors' + + def __init__(self, name:str): + super().__init__('M' + str(Mentor.__ID), Mentor.__TYPE, name) + Mentor.__ID += 1 + + def generate_card(self, rgb_back=(255, 255, 255)): + super().generate_card(rgb_back) + image = Image.open(Mentor.__LOGO_PATH).convert("RGBA") + image = Tools.scale(image, Card.QR_SIZE) + self.card.paste(image, Card.QR_POS) + Tools.centrate_text_relative(self.card, self.name,Config.NAME_FONT, Card.NAME_POS, Card.QR_SIZE) + self.smallen() + + @staticmethod + def get_data(name=None): + res = [] + data = Tools.DataFile.get_content(Mentor._DATA_FILE, 'JSON') + for u in data[Mentor.__DATA]: + if name is None or name == u['name']: + res.append(Mentor(u['name'])) + if Config.TEST or (name is not None and name == u['name']): + break + return res + +class Organizer(Assistant): + __ID:int = 1 + __LOGO_PATH:str = os.path.join(Config.RES_PATH, 'editions', Config.EDITION, 'images', 'logogran.png') + __TYPE:str = 'ORGANIZACIÓ' + __DATA:str = 'organizers' + + def __init__(self, name): + super().__init__('O' + str(Organizer.__ID), Organizer.__TYPE, name) + Organizer.__ID += 1 + + def generate_card(self, rgb_back=(255, 255, 255)): + super().generate_card(rgb_back) + image = Image.open(Organizer.__LOGO_PATH).convert("RGBA") + image = Tools.scale(image, Card.QR_SIZE) + self.card.paste(image, Card.QR_POS) + Tools.centrate_text_relative(self.card, self.name,Config.NAME_FONT, Card.NAME_POS, Card.QR_SIZE) + # Tools.draw_text(self.card, self.name, Card.NAME_POS, Config.NAME_FONT, Config.WHITE_FONT_COLOR, False) + self.smallen() + + @staticmethod + def get_data(name=None): + res = [] + print(Organizer._DATA_FILE) + data = Tools.DataFile.get_content(Organizer._DATA_FILE, 'JSON') + for u in data[Organizer.__DATA]: + if name is None or u['name'] == name: + res.append(Organizer(u['name'])) + if Config.TEST or (name is not None and u['name'] == name): + break + return res + +import PrivateConfig +class Contestant(Assistant): + __CRYPT_ID = False + __TYPE:str = 'HACKER' + __FIREBASE = None + __FIRE_PATH:str = Config.DB_PATH_T if Config.TEST else Config.DB_PATH + + def __init__(self, id, data): + super().__init__(id, Contestant.__TYPE) + self.code = data['code'] + self.generate_qr() + self.name = data['name'] + self.nick = '\"' + data['nickname'] + '\"' + if Config.TEST: + Contestant.__FIRE_PATH = Config.DB_PATH_T + + def generate_card(self, rgb_back=(255, 255, 255)): + super().generate_card(rgb_back) + self.card.paste(self.qr, Card.QR_POS) + Tools.centrate_text_relative(self.card, self.name,Config.NAME_FONT, Card.NAME_POS, Card.QR_SIZE) + self.smallen() + + @staticmethod + def __firebase_init(cred): + if Contestant.__FIREBASE is None: + Contestant.__FIREBASE = firebase_admin.initialize_app(cred) + return Contestant.__FIREBASE + + @staticmethod + def get_data(id=None, name=None): + # cred = firebase_admin.credentials.Certificate(Config.DB_CERT_PATH) + # Contestant.__firebase_init(cred) + # db = firestore.client() + # users_ref = db.collection(Contestant.__FIRE_PATH) + # usrs = users_ref.stream() + usrs = get_accepted() + users = [] + for usr in usrs: + if ((id is None and name is None) + or (id is not None and usr['id'] == id) + or (name is not None and name == usr.name)): + # or (name is not None and name == usr.to_dict()['fullName'])): + users.append(Contestant(usr['id'], usr)) + return users diff --git a/PrivateConfig.sample.py b/PrivateConfig.sample.py new file mode 100644 index 0000000..2644fe9 --- /dev/null +++ b/PrivateConfig.sample.py @@ -0,0 +1,2 @@ +SERVICE_TOKEN = 'backend SERVICE TOKEN' +BASE_URL = 'backend url' \ No newline at end of file diff --git a/README.md b/README.md index d069e03..89f58ed 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -# IdentificationGenerator -Program used to generate Identification cards - - -to run as a container -- docker build -t test . +# IdentificationGenerator +Program used to generate Identification cards + + +to run as a container +- docker build -t test . - docker run -it test /bin/bash \ No newline at end of file diff --git a/Tools.py b/Tools.py index 8c2405c..c80988c 100644 --- a/Tools.py +++ b/Tools.py @@ -1,130 +1,130 @@ -import hashlib -import json -import os - -import qrcode -from PIL import ImageDraw, Image -import Config - - -def create_dir(path): - exists = os.path.isdir(path) - if not exists: - try: - os.mkdir(path) - except OSError: - raise OSError('dir creation error') - - -def empty_dir(path, delete_files=True, delete_dirs=True): - exists = os.path.isdir(path) - if exists and (delete_files or delete_dirs): - for root, dirs, files in os.walk(path): - if delete_files: - for file in files: - os.remove(os.path.join(root, file)) - if delete_dirs: - for dir in dirs: - os.remove(os.path.join(root, dir)) - - -def draw_text(image, text, pos, font, fill, centrate=True, mayus=True): - if mayus: - text = text.upper() - draw = ImageDraw.Draw(image) - w, h = draw.textsize(text, font=font) - if centrate: - ImageDraw.Draw(image).text(((image.width-w)/2, pos[1]), text, font=font,fill=fill) - else: - ImageDraw.Draw(image).text(pos, text, font=font,fill=fill) - -def centrate_text_relative(image, text, font, relative_pos, relative_size, mayus=True): - #centrate relative on x and split in 2 lines if text width is bigger than relative_size - if mayus: - text = text.upper() - draw = ImageDraw.Draw(image) - w, h = draw.textsize(text, font=font) - x = relative_pos[0] + (relative_size[0] - w) / 2 - y = relative_pos[1] - if w > relative_size[0]: - #split in 2 lines - words = text.split(' ') - line1 = '' - line2 = '' - for word in words: - if draw.textsize(line1 + ' ' + word, font=font)[0] < relative_size[0]: - line1 += ' ' + word - else: - line2 += ' ' + word - x1 = relative_pos[0] + (relative_size[0] - draw.textsize(line1, font=font)[0]) / 2 - x2 = relative_pos[0] + (relative_size[0] - draw.textsize(line2, font=font)[0]) / 2 - draw.text((x1, y), line1, font=font) - draw.text((x2, y + h), line2, font=font) - else: - ImageDraw.Draw(image).text((x, y), text, font=font) - -def scale(image, max_size, add_mask=True, method=Image.ANTIALIAS): - """ - resize 'image' to 'max_size' keeping the aspect ratio - and place it in center of white 'max_size' image - """ - im_aspect = float(image.size[0]) / float(image.size[1]) - out_aspect = float(max_size[0]) / float(max_size[1]) - if im_aspect >= out_aspect: - scaled = image.resize((max_size[0], int((float(max_size[0]) / im_aspect) + 0.5)), method) - else: - scaled = image.resize((int((float(max_size[1]) * im_aspect) + 0.5), max_size[1]), method) - - offset = (((max_size[0] - scaled.size[0]) / 2), ((max_size[1] - scaled.size[1]) / 2)) - back = Image.new("RGBA", max_size, Config.BAK_COLOR) - if add_mask: - back.paste(scaled, (int(offset[0]), int(offset[1])), scaled) - else: - back.paste(scaled, (int(offset[0]), int(offset[1]))) - return back - -def generate_qr(input, size, border_size): - qr = qrcode.QRCode( - version=2, - error_correction=qrcode.constants.ERROR_CORRECT_H, - box_size=size, - border=border_size) - qr.add_data(input) - qr.make(fit=True) - qr = qr.make_image() - return qr - - -def crypt(input, method='md5'): - m = hashlib.new(method) - m.update(bytes(input, 'utf')) - return str(m.digest()) - - -class DataFile: - __contents = {} - - @staticmethod - def get_content(filepath, type, reload_if_cached=False): - if not reload_if_cached and filepath in DataFile.__contents: - return DataFile.__contents[filepath] - else: - with open(filepath, 'r', encoding='utf-8') as json_file: - if type == 'JSON': - data = json.load(json_file) - DataFile.__contents[filepath] = data - return data - else: - raise Exception(NotImplemented) - - @staticmethod - def clear_cached_content(filepath): - if filepath in DataFile.__contents: - del DataFile.__contents[filepath] - return True - else: - return False - - @staticmethod - def clear_cache(): - DataFile.__contents = {} +import hashlib +import json +import os + +import qrcode +from PIL import ImageDraw, Image +import Config + + +def create_dir(path): + exists = os.path.isdir(path) + if not exists: + try: + os.mkdir(path) + except OSError: + raise OSError('dir creation error') + + +def empty_dir(path, delete_files=True, delete_dirs=True): + exists = os.path.isdir(path) + if exists and (delete_files or delete_dirs): + for root, dirs, files in os.walk(path): + if delete_files: + for file in files: + os.remove(os.path.join(root, file)) + if delete_dirs: + for dir in dirs: + os.remove(os.path.join(root, dir)) + + +def draw_text(image, text, pos, font, fill, centrate=True, mayus=True): + if mayus: + text = text.upper() + draw = ImageDraw.Draw(image) + w, h = draw.textsize(text, font=font) + if centrate: + ImageDraw.Draw(image).text(((image.width-w)/2, pos[1]), text, font=font,fill=fill) + else: + ImageDraw.Draw(image).text(pos, text, font=font,fill=fill) + +def centrate_text_relative(image, text, font, relative_pos, relative_size, mayus=True): + #centrate relative on x and split in 2 lines if text width is bigger than relative_size + if mayus: + text = text.upper() + draw = ImageDraw.Draw(image) + w, h = draw.textsize(text, font=font) + x = relative_pos[0] + (relative_size[0] - w) / 2 + y = relative_pos[1] + if w > relative_size[0]: + #split in 2 lines + words = text.split(' ') + line1 = '' + line2 = '' + for word in words: + if draw.textsize(line1 + ' ' + word, font=font)[0] < relative_size[0]: + line1 += ' ' + word + else: + line2 += ' ' + word + x1 = relative_pos[0] + (relative_size[0] - draw.textsize(line1, font=font)[0]) / 2 + x2 = relative_pos[0] + (relative_size[0] - draw.textsize(line2, font=font)[0]) / 2 + draw.text((x1, y), line1, font=font) + draw.text((x2, y + h), line2, font=font) + else: + ImageDraw.Draw(image).text((x, y), text, font=font) + +def scale(image, max_size, add_mask=True, method=Image.ANTIALIAS): + """ + resize 'image' to 'max_size' keeping the aspect ratio + and place it in center of white 'max_size' image + """ + im_aspect = float(image.size[0]) / float(image.size[1]) + out_aspect = float(max_size[0]) / float(max_size[1]) + if im_aspect >= out_aspect: + scaled = image.resize((max_size[0], int((float(max_size[0]) / im_aspect) + 0.5)), method) + else: + scaled = image.resize((int((float(max_size[1]) * im_aspect) + 0.5), max_size[1]), method) + + offset = (((max_size[0] - scaled.size[0]) / 2), ((max_size[1] - scaled.size[1]) / 2)) + back = Image.new("RGBA", max_size, Config.BAK_COLOR) + if add_mask: + back.paste(scaled, (int(offset[0]), int(offset[1])), scaled) + else: + back.paste(scaled, (int(offset[0]), int(offset[1]))) + return back + +def generate_qr(input, size, border_size): + qr = qrcode.QRCode( + version=2, + error_correction=qrcode.constants.ERROR_CORRECT_H, + box_size=size, + border=border_size) + qr.add_data(input) + qr.make(fit=True) + qr = qr.make_image() + return qr + + +def crypt(input, method='md5'): + m = hashlib.new(method) + m.update(bytes(input, 'utf')) + return str(m.digest()) + + +class DataFile: + __contents = {} + + @staticmethod + def get_content(filepath, type, reload_if_cached=False): + if not reload_if_cached and filepath in DataFile.__contents: + return DataFile.__contents[filepath] + else: + with open(filepath, 'r', encoding='utf-8') as json_file: + if type == 'JSON': + data = json.load(json_file) + DataFile.__contents[filepath] = data + return data + else: + raise Exception(NotImplemented) + + @staticmethod + def clear_cached_content(filepath): + if filepath in DataFile.__contents: + del DataFile.__contents[filepath] + return True + else: + return False + + @staticmethod + def clear_cache(): + DataFile.__contents = {} diff --git a/api_connector.py b/api_connector.py new file mode 100644 index 0000000..c888dab --- /dev/null +++ b/api_connector.py @@ -0,0 +1,23 @@ +# import http.client +import requests +import json +import PrivateConfig + + + +def send_request(endpoint: str): + url = PrivateConfig.BASE_URL + endpoint + headers = { + "Authorization": "Bearer " + PrivateConfig.SERVICE_TOKEN, + } + r = requests.get(url, headers=headers) + +# some JSON: + +# parse x: + print(json.loads(r.content)[0]['id']) + return (json.loads(r.content)) + return r + +def get_accepted(): + return send_request('/event/1/get_approved_hackers') diff --git a/main.py b/main.py index 23d2916..caa6904 100644 --- a/main.py +++ b/main.py @@ -1,26 +1,26 @@ -import Config -import Model -import Tools -from PIL import Image -import os - -users = [] -users += Model.Contestant.get_data() -users += Model.Organizer.get_data() -users += Model.Volunteer.get_data() -users += Model.Mentor.get_data() -users += Model.Company.get_data() -users += Model.Guest.get_data() -users += Model.Assistant.get_data() - -Tools.create_dir(Config.OUT_PATH) -Tools.empty_dir(Config.OUT_PATH) - -i = 0 -for u in users: - u.generate_card() - u.save() - i+=1 - # break - +import Config +import Model +import Tools +from PIL import Image +import os + +users = [] +users += Model.Contestant.get_data() +# users += Model.Organizer.get_data() +# users += Model.Volunteer.get_data() +# users += Model.Mentor.get_data() +# users += Model.Company.get_data() +# users += Model.Guest.get_data() +# users += Model.Assistant.get_data() + +Tools.create_dir(Config.OUT_PATH) +Tools.empty_dir(Config.OUT_PATH) + +i = 0 +for u in users: + u.generate_card() + u.save() + i+=1 + break + print('Generated ' + str(i) + ' cards') \ No newline at end of file diff --git a/old.requirements.txt b/old.requirements.txt index 57004d6..c7a0cc1 100644 --- a/old.requirements.txt +++ b/old.requirements.txt @@ -1,32 +1,32 @@ -CacheControl==0.12.5 -cachetools==3.1.1 -certifi==2019.9.11 -chardet==3.0.4 -firebase-admin==3.2.0 -google-api-core==1.14.3 -google-api-python-client==1.7.11 -google-auth==1.7.1 -google-auth-httplib2==0.0.3 -google-cloud-core==1.0.3 -google-cloud-firestore==1.6.0 -google-cloud-storage==1.23.0 -google-resumable-media==0.5.0 -googleapis-common-protos==1.6.0 -# grpcio==1.25.0 -grpcio==1.50.0 -httplib2==0.19.0 -idna==2.8 -msgpack==0.6.2 -Pillow==8.3.2 -# pkg-resources==0.0.0 -# protobuf==3.15.0 -protobuf==4.21.6 -pyasn1==0.4.7 -pyasn1-modules==0.2.7 -pytz==2019.3 -qrcode==6.1 -requests==2.22.0 -rsa==4.0 -six==1.13.0 -uritemplate==3.0.0 +CacheControl==0.12.5 +cachetools==3.1.1 +certifi==2019.9.11 +chardet==3.0.4 +firebase-admin==3.2.0 +google-api-core==1.14.3 +google-api-python-client==1.7.11 +google-auth==1.7.1 +google-auth-httplib2==0.0.3 +google-cloud-core==1.0.3 +google-cloud-firestore==1.6.0 +google-cloud-storage==1.23.0 +google-resumable-media==0.5.0 +googleapis-common-protos==1.6.0 +# grpcio==1.25.0 +grpcio==1.50.0 +httplib2==0.19.0 +idna==2.8 +msgpack==0.6.2 +Pillow==8.3.2 +# pkg-resources==0.0.0 +# protobuf==3.15.0 +protobuf==4.21.6 +pyasn1==0.4.7 +pyasn1-modules==0.2.7 +pytz==2019.3 +qrcode==6.1 +requests==2.22.0 +rsa==4.0 +six==1.13.0 +uritemplate==3.0.0 urllib3==1.22.0 \ No newline at end of file diff --git a/resources/editions/data_sample.json b/resources/editions/data_sample.json index 411efb8..5cc3461 100644 --- a/resources/editions/data_sample.json +++ b/resources/editions/data_sample.json @@ -1,15 +1,15 @@ -{ - "empty": 5, - "organizers": [ - {"name":"Ton Llucià Senserrich"} - ], - "volunteers": [ - {"name":"Ton Llucià Senserrich"} - ], - "companies": [ - {"name":"Ton Llucià Senserrich","number_of_cards":5,"logo":"logo.png"} - ], - "guests": [ - {"name":"Ton Llucià Senserrich","type":"HACKER","qr":true} - ] -} +{ + "empty": 5, + "organizers": [ + {"name":"Ton Llucià Senserrich"} + ], + "volunteers": [ + {"name":"Ton Llucià Senserrich"} + ], + "companies": [ + {"name":"Ton Llucià Senserrich","number_of_cards":5,"logo":"logo.png"} + ], + "guests": [ + {"name":"Ton Llucià Senserrich","type":"HACKER","qr":true} + ] +} diff --git a/test.py b/test.py index ee2f8d2..f1cf8ed 100644 --- a/test.py +++ b/test.py @@ -1,71 +1,71 @@ -from reportlab.pdfgen import canvas -from reportlab.lib.pagesizes import A4, landscape -from reportlab.lib.units import mm -from reportlab.lib.utils import ImageReader - -from PIL import Image - -import os - -path = '_out_' -filename = 'test.pdf' -title = 'Test' - -MAXY = 139 -MAXX = -5 -MARGIN = 10 - -def createPDF(path_to_images, document_name, document_title): - - def rowGen(list_of_images): #Creates a list of 4 image rows - - for i in range(0, len(list_of_images), 2): - yield list_of_images[i:i + 2] - - - def renderRow(path_to_images, row, y_pos): #Renders each row to the page - - x_pos = 27.5 #starting x position - thumb_size = 450, 400 #Thumbnail image size - - for i in row: - - img = Image.open(os.path.join(path_to_images, i)) #Opens image as a PIL object - img.thumbnail(thumb_size) #Creates thumbnail - - img = ImageReader(img) #Passes PIL object to the Reportlab ImageReader - - #Lays out the image and filename - pdf.drawImage(img, x_pos * mm , y_pos * mm, width = 317, height = 227, preserveAspectRatio=True, anchor='c') - - x_pos += 150 #Increments the x position ready for the next image - - - images = [i for i in os.listdir(path_to_images) if i.endswith('.png')] #Creates list of images filtering out non .jpgs - row_layout = list(rowGen(images)) #Creates the layout of image rows - - pdf = canvas.Canvas(document_name, pagesize=landscape(A4), pageCompression=1) #Creates the PDF object - pdf.setTitle(document_title) - - rows_rendered = 0 - - y_pos = 113.5 #Sets starting y pos - pdf.setFont('Helvetica', 10) - - for row in row_layout: #Loops through each row in the row_layout list and renders the row. For each 5 rows, makes a new page - - if rows_rendered == 2: - - pdf.showPage() - pdf.setFont('Helvetica', 10) - y_pos = -100 - rows_rendered = 0 - break - - else: - - renderRow(path_to_images, row, y_pos) - y_pos -= 100 - rows_rendered += 1 - pdf.save() +from reportlab.pdfgen import canvas +from reportlab.lib.pagesizes import A4, landscape +from reportlab.lib.units import mm +from reportlab.lib.utils import ImageReader + +from PIL import Image + +import os + +path = '_out_' +filename = 'test.pdf' +title = 'Test' + +MAXY = 139 +MAXX = -5 +MARGIN = 10 + +def createPDF(path_to_images, document_name, document_title): + + def rowGen(list_of_images): #Creates a list of 4 image rows + + for i in range(0, len(list_of_images), 2): + yield list_of_images[i:i + 2] + + + def renderRow(path_to_images, row, y_pos): #Renders each row to the page + + x_pos = 27.5 #starting x position + thumb_size = 450, 400 #Thumbnail image size + + for i in row: + + img = Image.open(os.path.join(path_to_images, i)) #Opens image as a PIL object + img.thumbnail(thumb_size) #Creates thumbnail + + img = ImageReader(img) #Passes PIL object to the Reportlab ImageReader + + #Lays out the image and filename + pdf.drawImage(img, x_pos * mm , y_pos * mm, width = 317, height = 227, preserveAspectRatio=True, anchor='c') + + x_pos += 150 #Increments the x position ready for the next image + + + images = [i for i in os.listdir(path_to_images) if i.endswith('.png')] #Creates list of images filtering out non .jpgs + row_layout = list(rowGen(images)) #Creates the layout of image rows + + pdf = canvas.Canvas(document_name, pagesize=landscape(A4), pageCompression=1) #Creates the PDF object + pdf.setTitle(document_title) + + rows_rendered = 0 + + y_pos = 113.5 #Sets starting y pos + pdf.setFont('Helvetica', 10) + + for row in row_layout: #Loops through each row in the row_layout list and renders the row. For each 5 rows, makes a new page + + if rows_rendered == 2: + + pdf.showPage() + pdf.setFont('Helvetica', 10) + y_pos = -100 + rows_rendered = 0 + break + + else: + + renderRow(path_to_images, row, y_pos) + y_pos -= 100 + rows_rendered += 1 + pdf.save() createPDF(path, filename, title) \ No newline at end of file From cc785c14699d56261633d0f2678d96e473de889d Mon Sep 17 00:00:00 2001 From: Quiracle Date: Tue, 14 Nov 2023 23:06:55 +0100 Subject: [PATCH 2/3] pdf batch falta testejar imprimir --- Config.py | 21 +++++-- Model.py | 55 +++++++++--------- Tools.py | 40 ++++++------- batch_pdfer.py | 38 ++++++++++++ main.py | 3 +- .../editions/2023/plantilles/organitzador.png | Bin 0 -> 61577 bytes .../editions/2023/plantilles/participant.png | Bin 0 -> 66230 bytes .../editions/2023/plantilles/patrocinador.png | Bin 0 -> 60503 bytes 8 files changed, 103 insertions(+), 54 deletions(-) create mode 100644 batch_pdfer.py create mode 100644 resources/editions/2023/plantilles/organitzador.png create mode 100644 resources/editions/2023/plantilles/participant.png create mode 100644 resources/editions/2023/plantilles/patrocinador.png diff --git a/Config.py b/Config.py index 931a170..335838e 100644 --- a/Config.py +++ b/Config.py @@ -3,7 +3,7 @@ TEST = False -EDITION='2022' +EDITION='2023' EDITIONS_FOLDER = 'editions' DB_PATH_T = 'hackeps-'+EDITION+'/dev/users' @@ -22,18 +22,27 @@ DB_CERT = '2019_firebase_cert.json' DB_CERT_PATH = path.join(RES_PATH, DB_CERT) -BAK_FILE = 'plantilla.png' -BAK_PATH = path.join(RES_PATH, EDITIONS_FOLDER, EDITION, BAK_FILE) +BAK_FILE_CONTESTANT = 'plantilles\\participant.png' +BAK_PATH_CONTESTANT = path.join(RES_PATH, EDITIONS_FOLDER, EDITION, BAK_FILE_CONTESTANT) +BAK_FILE_STAFF = 'plantilles\\organitzador.png' +BAK_PATH_STAFF = path.join(RES_PATH, EDITIONS_FOLDER, EDITION, BAK_FILE_STAFF) +BAK_FILE_EMPRESA = 'plantilles\\patrocinador.png' +BAK_PATH_EMPRESA = path.join(RES_PATH, EDITIONS_FOLDER, EDITION, BAK_FILE_EMPRESA) FONT_FOLDER = 'fonts' -FONT_FILE = 'SpaceMono-Bold.ttf' +FONT_FILE = 'SpaceMono-Regular.ttf' +BOLD_FONT_FILE = 'SpaceMono-Bold.ttf' FONT_PATH = path.join(RES_PATH, FONT_FOLDER, FONT_FILE) -TYPE_FONT_SIZE = 50 -NAME_FONT_SIZE = 25 +BOLD_FONT_PATH = path.join(RES_PATH, FONT_FOLDER, BOLD_FONT_FILE) +TYPE_FONT_SIZE =50 +NAME_FONT_SIZE = 90 FONT_COLOR = (0,0,0) WHITE_FONT_COLOR = (255,255,255) +DARK_FONT_COLOR = (35,35,35) TYPE_FONT = ImageFont.truetype(FONT_PATH, TYPE_FONT_SIZE) NAME_FONT = ImageFont.truetype(FONT_PATH, NAME_FONT_SIZE) +BOLD_TYPE_FONT = ImageFont.truetype(BOLD_FONT_PATH, TYPE_FONT_SIZE) +BOLD_NAME_FONT = ImageFont.truetype(BOLD_FONT_PATH, NAME_FONT_SIZE) # FONT = ImageFont.truetype("Symbola.ttf", 60, encoding='unic') MAIN_COLOR = (31, 33, 36) diff --git a/Model.py b/Model.py index 41cffe7..b7bfe59 100644 --- a/Model.py +++ b/Model.py @@ -12,13 +12,13 @@ class Card: QR_PIX_SIZE = 1 - QR_POS = (450, 78) - _QR_SIZE = 267 + QR_POS = (72, 315) + _QR_SIZE = 331 QR_SIZE = (_QR_SIZE, _QR_SIZE) - QR_BORDER_SIZE = 0 - TYPE_POS = (0, 475) - NAME_POS = (QR_POS[0], 370) - NICK_POS = (1198, 870) + QR_BORDER_SIZE = 2 + TYPE_POS = (984, 150) + NAME_POS = (984, 40) + NICK_POS = (984, 40) class Assistant(object): @@ -47,13 +47,14 @@ def generate_qr(self, crypt_id=False): self.qr = Tools.generate_qr(self.id, Card.QR_PIX_SIZE, Card.QR_BORDER_SIZE) self.qr = Tools.scale(self.qr, Card.QR_SIZE, False) - def generate_card(self, rgb_back=(255, 255, 255)): - self.card = Image.open(Config.BAK_PATH) - Tools.draw_text(self.card, self.type, Card.TYPE_POS, Config.TYPE_FONT, Config.WHITE_FONT_COLOR) + def generate_card(self, rgb_back=(255, 255, 255), template=Config.BAK_PATH_CONTESTANT): + self.card = Image.open(template) + Tools.draw_text(self.card, self.type, Card.TYPE_POS, Config.TYPE_FONT, Config.DARK_FONT_COLOR) if self.type == '': self.smallen() def smallen(self): + return blank = Image.new('RGB', (1082, 782),(255,255,255)) blank.paste(self.card, (0, 0)) self.card = blank @@ -73,7 +74,7 @@ def get_data(): class Guest(Assistant): __ID:int = 1 - __TYPE:str = 'CONVIDAT' + __TYPE:str = 'Convidat' __DATA:str = 'guests' def __init__(self, name:str, mtype:str='', logo:str='', has_qr:bool=False): @@ -87,7 +88,7 @@ def __init__(self, name:str, mtype:str='', logo:str='', has_qr:bool=False): self.logopath = os.path.join(Config.RES_PATH, Config.EDITIONS_FOLDER, Config.EDITION, 'images', logo) def generate_card(self, rgb_back=(255, 255, 255)): - super().generate_card(rgb_back) + super().generate_card(rgb_back, Config.BAK_PATH_STAFF) if self.logo != '': logo = Image.open(self.logopath).convert("RGBA") logo = Tools.scale(logo, Card.QR_SIZE) @@ -95,7 +96,7 @@ def generate_card(self, rgb_back=(255, 255, 255)): elif self.has_qr: self.card.paste(self.qr, Card.QR_POS) if self.name != '': - Tools.centrate_text_relative(self.card, self.name,Config.NAME_FONT, Card.NAME_POS, Card.QR_SIZE) + Tools.centrate_text_relative(self.card, " ".join(self.name.split(" ")[:2]).strip(),Config.BOLD_NAME_FONT, Card.NAME_POS, Card.QR_SIZE * 3, Config.DARK_FONT_COLOR) self.smallen() @staticmethod @@ -112,7 +113,7 @@ def get_data(name=None): class Company(Assistant): __ID:int = 1 - __TYPE:str = 'EMPRESA' + __TYPE:str = 'Empresa' __DATA:str = 'companies' def __init__(self, name:str, image): @@ -121,11 +122,11 @@ def __init__(self, name:str, image): self.logopath = os.path.join(Config.RES_PATH, Config.EDITIONS_FOLDER, Config.EDITION, 'images', image) def generate_card(self, rgb_back=(255, 255, 255)): - super().generate_card(rgb_back) + super().generate_card(rgb_back, Config.BAK_PATH_EMPRESA) image = Image.open(self.logopath).convert("RGBA") # .resize((550,350), Image.ANTIALIAS) image = Tools.scale(image, Card.QR_SIZE) self.card.paste(image, Card.QR_POS) - Tools.centrate_text_relative(self.card, self.name,Config.NAME_FONT, Card.NAME_POS, Card.QR_SIZE) + Tools.centrate_text_relative(self.card, " ".join(self.name.split(" ")[:2]).strip(),Config.BOLD_NAME_FONT, Card.NAME_POS, Card.QR_SIZE * 3, Config.DARK_FONT_COLOR) self.smallen() @staticmethod @@ -146,7 +147,7 @@ def get_data(name=None): class Volunteer(Assistant): __ID:int = 1 __LOGO_PATH:str = os.path.join(Config.RES_PATH, 'editions', Config.EDITION, 'images', 'logogran.png') - __TYPE:str = 'VOLUNTARI/A' + __TYPE:str = 'Voluntari/a' __DATA:str = 'volunteers' def __init__(self, name:str): @@ -154,11 +155,11 @@ def __init__(self, name:str): Volunteer.__ID += 1 def generate_card(self, rgb_back=(255, 255, 255)): - super().generate_card(rgb_back) + super().generate_card(rgb_back, Config.BAK_PATH_STAFF) image = Image.open(Volunteer.__LOGO_PATH).convert("RGBA") image = Tools.scale(image, Card.QR_SIZE) self.card.paste(image, Card.QR_POS) - Tools.centrate_text_relative(self.card, self.name,Config.NAME_FONT, Card.NAME_POS, Card.QR_SIZE) + Tools.centrate_text_relative(self.card, " ".join(self.name.split(" ")[:2]).strip(),Config.BOLD_NAME_FONT, Card.NAME_POS, Card.QR_SIZE * 3, Config.DARK_FONT_COLOR) self.smallen() @staticmethod @@ -175,7 +176,7 @@ def get_data(name=None): class Mentor(Assistant): __ID:int = 1 __LOGO_PATH:str = os.path.join(Config.RES_PATH, 'editions', Config.EDITION, 'images', 'logogran.png') - __TYPE:str = 'MENTOR/A' + __TYPE:str = 'Mentor/a' __DATA:str = 'mentors' def __init__(self, name:str): @@ -183,11 +184,11 @@ def __init__(self, name:str): Mentor.__ID += 1 def generate_card(self, rgb_back=(255, 255, 255)): - super().generate_card(rgb_back) + super().generate_card(rgb_back, Config.BAK_PATH_STAFF) image = Image.open(Mentor.__LOGO_PATH).convert("RGBA") image = Tools.scale(image, Card.QR_SIZE) self.card.paste(image, Card.QR_POS) - Tools.centrate_text_relative(self.card, self.name,Config.NAME_FONT, Card.NAME_POS, Card.QR_SIZE) + Tools.centrate_text_relative(self.card, " ".join(self.name.split(" ")[:2]).strip(),Config.BOLD_NAME_FONT, Card.NAME_POS, Card.QR_SIZE * 3, Config.DARK_FONT_COLOR) self.smallen() @staticmethod @@ -204,7 +205,7 @@ def get_data(name=None): class Organizer(Assistant): __ID:int = 1 __LOGO_PATH:str = os.path.join(Config.RES_PATH, 'editions', Config.EDITION, 'images', 'logogran.png') - __TYPE:str = 'ORGANIZACIÓ' + __TYPE:str = 'Staff' __DATA:str = 'organizers' def __init__(self, name): @@ -212,11 +213,11 @@ def __init__(self, name): Organizer.__ID += 1 def generate_card(self, rgb_back=(255, 255, 255)): - super().generate_card(rgb_back) + super().generate_card(rgb_back, Config.BAK_PATH_STAFF) image = Image.open(Organizer.__LOGO_PATH).convert("RGBA") image = Tools.scale(image, Card.QR_SIZE) self.card.paste(image, Card.QR_POS) - Tools.centrate_text_relative(self.card, self.name,Config.NAME_FONT, Card.NAME_POS, Card.QR_SIZE) + Tools.centrate_text_relative(self.card, " ".join(self.name.split(" ")[:2]).strip(),Config.BOLD_NAME_FONT, Card.NAME_POS, Card.QR_SIZE * 3, Config.DARK_FONT_COLOR) # Tools.draw_text(self.card, self.name, Card.NAME_POS, Config.NAME_FONT, Config.WHITE_FONT_COLOR, False) self.smallen() @@ -235,7 +236,7 @@ def get_data(name=None): import PrivateConfig class Contestant(Assistant): __CRYPT_ID = False - __TYPE:str = 'HACKER' + __TYPE:str = 'Hacker' __FIREBASE = None __FIRE_PATH:str = Config.DB_PATH_T if Config.TEST else Config.DB_PATH @@ -249,9 +250,9 @@ def __init__(self, id, data): Contestant.__FIRE_PATH = Config.DB_PATH_T def generate_card(self, rgb_back=(255, 255, 255)): - super().generate_card(rgb_back) + super().generate_card(rgb_back, Config.BAK_PATH_CONTESTANT) self.card.paste(self.qr, Card.QR_POS) - Tools.centrate_text_relative(self.card, self.name,Config.NAME_FONT, Card.NAME_POS, Card.QR_SIZE) + Tools.centrate_text_relative(self.card, " ".join(self.name.split(" ")[:2]).strip(), Config.BOLD_NAME_FONT, Card.NAME_POS, Card.QR_SIZE * 3, Config.DARK_FONT_COLOR) self.smallen() @staticmethod diff --git a/Tools.py b/Tools.py index c80988c..98bc6ab 100644 --- a/Tools.py +++ b/Tools.py @@ -28,40 +28,40 @@ def empty_dir(path, delete_files=True, delete_dirs=True): os.remove(os.path.join(root, dir)) -def draw_text(image, text, pos, font, fill, centrate=True, mayus=True): +def draw_text(image, text, pos, font, fill, centrate=True, mayus=False): if mayus: text = text.upper() draw = ImageDraw.Draw(image) w, h = draw.textsize(text, font=font) if centrate: - ImageDraw.Draw(image).text(((image.width-w)/2, pos[1]), text, font=font,fill=fill) + ImageDraw.Draw(image).text((pos[0]-w, pos[1]), text, font=font,fill=fill) else: ImageDraw.Draw(image).text(pos, text, font=font,fill=fill) -def centrate_text_relative(image, text, font, relative_pos, relative_size, mayus=True): +def centrate_text_relative(image, text, font, relative_pos, relative_size, fill, mayus=False): #centrate relative on x and split in 2 lines if text width is bigger than relative_size if mayus: text = text.upper() draw = ImageDraw.Draw(image) w, h = draw.textsize(text, font=font) - x = relative_pos[0] + (relative_size[0] - w) / 2 + x = relative_pos[0] - w y = relative_pos[1] - if w > relative_size[0]: - #split in 2 lines - words = text.split(' ') - line1 = '' - line2 = '' - for word in words: - if draw.textsize(line1 + ' ' + word, font=font)[0] < relative_size[0]: - line1 += ' ' + word - else: - line2 += ' ' + word - x1 = relative_pos[0] + (relative_size[0] - draw.textsize(line1, font=font)[0]) / 2 - x2 = relative_pos[0] + (relative_size[0] - draw.textsize(line2, font=font)[0]) / 2 - draw.text((x1, y), line1, font=font) - draw.text((x2, y + h), line2, font=font) - else: - ImageDraw.Draw(image).text((x, y), text, font=font) + # if w > relative_size[0]: + # #split in 2 lines + # words = text.split(' ') + # line1 = '' + # line2 = '' + # for word in words: + # if draw.textsize(line1 + ' ' + word, font=font)[0] < relative_size[0]: + # line1 += ' ' + word + # else: + # line2 += ' ' + word + # x1 = relative_pos[0] + (relative_size[0] - draw.textsize(line1, font=font)[0]) / 2 + # x2 = relative_pos[0] + (relative_size[0] - draw.textsize(line2, font=font)[0]) / 2 + # draw.text((x1, y), line1, font=font) + # draw.text((x2, y + h), line2, font=font) + # else: + ImageDraw.Draw(image).text((x, y), text, font=font, fill=fill) def scale(image, max_size, add_mask=True, method=Image.ANTIALIAS): """ diff --git a/batch_pdfer.py b/batch_pdfer.py new file mode 100644 index 0000000..0ac6871 --- /dev/null +++ b/batch_pdfer.py @@ -0,0 +1,38 @@ +from PIL import Image +import Config +from fpdf import FPDF +import glob +import os + +image_directory = r'./_out_/' +extensions = ('*.jpg','*.png','*.gif') +pdf = FPDF() +imagelist=[] +for ext in extensions: + imagelist.extend(glob.glob(os.path.join(image_directory,ext))) + +for index, imageFile in enumerate(imagelist): + cover = Image.open(imageFile) + width, height = cover.size + print(width, height) + + # convert pixel in mm with 1px=0.0847 mm + width, height = float(width * 0.0847), float(height * 0.0847) + + # given we are working with A4 format size + pdf_size = {'P': {'w': 210, 'h': 297}, 'L': {'w': 297, 'h': 210}} + + # get page orientation from image size + orientation = 'P' if width < height else 'L' + + # make sure image size is not greater than the pdf format size + width = width if width < pdf_size[orientation]['w'] else pdf_size[orientation]['w'] + height = height if height < pdf_size[orientation]['h'] else pdf_size[orientation]['h'] + + if index % 9 == 0: + pdf.add_page(orientation=orientation) + + pdf.image(imageFile, 90.2 * (index%3), 61.1*((index//3)%3), width, height) + + +pdf.output(image_directory + "file.pdf", "F") \ No newline at end of file diff --git a/main.py b/main.py index caa6904..8a8fd45 100644 --- a/main.py +++ b/main.py @@ -21,6 +21,7 @@ u.generate_card() u.save() i+=1 - break + if i == 10: + break print('Generated ' + str(i) + ' cards') \ No newline at end of file diff --git a/resources/editions/2023/plantilles/organitzador.png b/resources/editions/2023/plantilles/organitzador.png new file mode 100644 index 0000000000000000000000000000000000000000..87b4a00c75bd600e7f0673580a5ae2c3e5971855 GIT binary patch literal 61577 zcmeFYS6EcRwk|r!L82fcpdd6EfhI_kMI`4OBuB|PXHbx=zd(XpuIP=4gNmb3NQ6tws%6M%}C2~>*QV4>`Rg~}PLJ&SD z1mS)qCIl@nycuM{FA`5>6CViTXFLCg6Idea4;m$X6^wo5J>1;v-F=}zZwWhzdvc0` z>Wcn;K7I%ZAwFjbI9%|ypoow-Tnr&9BrGl@C@RM1DmL1fS-;dI1(&bJ92V zHP%p zb>J;`A2u-4zfX0~-pAJ4$+9`g^Dnlz`|w*|wD_I#k{^g!z}oJdF@pcbn16gFA!q0Fp9nwSiJraJ ze`x`%Iq&ea_V%&Y5Aw8^=G3+K@$mDuwg1oh@Xrb5z3r`i?d@cQ1ciie!Qr>yB2ohX zrR!fJmHKCgLZGjTos6A5Lg+Ta-u9M_n1kRg5fOwPc(b;a2?f3^Lu;r|a} z{&#l$#{~b**8fd{_WVyab}r=$<2{!z=m7E+{x|u8HVHXD-v=JvGU~4OPIlHT%GS0n zQs-m;qy4|^?f<_f0`Ku}YWOb#1Fb#(n*xHt5*Nzi;jQoC;VL6? zPv3tiPP`lEJ}C}M$A5=|on%hW`}PCxa#a>A)82&b(l!Pe(RzqwA%>C3i{D7q%~}*_ z6YKfBu&_{)AIDq1Z2F!r{UlsKLwN0$bwwsjrOQ;(StjsN`Sd^c z+}Dzjzk>J`bdpY^6PDjBo9-U9*qPjpUvJ?e9e1x!E9J%^fPBA-B!k9Wj6`LpIOoKw z;g%G06E`cXw?tu=IHyxy!upY|7!kywl{yv4ZNpN-q<6jD(12Y_OKZM>v56ZJRMQw% z|NAjzz?qYw^s@Sg{`VQH{zuL`6ws{FLmJ}`!%HIZB}`RLd5T3vMK8w7gOr+*64r`*N-g(0i=#GLOC_9mMC=6~;(m8AhPK`WG#9T`4 zIBU@xAG1bHqgkkC_PXiWiZF!{Xpv-n19p28 zRUO(GzMD?j0dLXE(`eI#xVX6L{7ByW6^8Q#G?)T?1JMJ&KTzYfGLI|Nn^Nm>r^iQM zpE)sb4{S{$DXSj>LA@GQnMbUJRj_YJrJjabe;B>oTm8fDmVrUMPs(ZNO|V%m0|RoQ zcf`?m<`Hx=dou+Gf<4Mq_<$}c6p^^!g0DoMbFEDsL11Taiww%UE+(&->m^r$iEHGg z*)WY^GH)%QreyN*#mb>G5k86&^laAjMcKwTQhO}~R5gZ`i!hfJsB8YT^Gc!8cY<$$ z7IXA`!O=|^>~(`VP=q9Z!LNH!biLIum96KIcevSm=;1w&*N@&$xraPr^D{>hi9i;w zYGr1Sqo(o2f0|z|2TFZ$z)C??E|&U-+NvsPu*Xi)*f zJ4&Obn_*|oF5yL(!B$B4d%#H$twPIQ$b;-4CW<&sq{m*Vb6)IK-e)oXCWch_X_$`% znw(jl)6lg0JNhslik~Lvo48S23Bj3OLKC>#=(W>Uiz;>vz0q(y;cxER;|7w;Klj3o zRDtj=+cu)GJB1=R8_?=;=tuiQ` zrxDqX6rv8_P1Vw1TgS(fOW1-to*z2mfjN@3~{aejV|(}E)~G{Osr-dxx^B4 zR{jZ;^5;K0Djad{-b`cuTI=I1_KCr}eayXV#6EK5m3&t(t-?*J%2EX0IuYZXgBkuDWP`41i( zvNrelX$w8ra(I$ypS$AUq=^m-4P7ztikTTURijn7j2|T>D_dhU zF-V27g*SfrU}hu8#!7Z4ibPkn&!OgNQQU=pUV>celBetm+*PXW^;&BRAV@ZjYFc!i@QW3 zjL6Si&A=e0%3uH+`gIwnfvF^;%ZpEA`15Aqub^bjK}K>dGMj3Il4vD z{pJRK-jd=5@_hf}G`NloAzw3_0uH#+F?Y+V16uB(~^ zFYJgfb%G7Nm*Zr7&$m2@3@K8Iph$W-rT6#XAUD$HZXl}-{BSTM!=C%qu+tOWH4qUmY`a0f5xSw+Dg+xm%}BJPSZ)w&6{Di?a&*9DN`@1xc( zFLiAMwG?$Vz3H+=%`HFk0sp2BMuSSfq_ z(Lc5X^;7?;^(h4u`>kje{_A%zG>r+eSU;-d8_+!QF2Z2q6J%odB_VpnkS?xF^@Rn- z_Tv54nI^I(^SsUN?d>&S-)Lae=NUvHFMliMNG9f*)!mM`J@bTOdOMmS!!%fo`6Z9#8vMsU!h%9)fK~^)`Cgj!iDr4iH$X^2x+Rs} zc6NF{bmoj*W9B zSZ_cmyjMIRGdqoixXUzTQT5t)s|x#D;-2C5ITUMX-)6lmJ)fkVEh55!Xf$0DI2L?8wQ1s zI64MGQ-MWdODr?zVd|kHo*>)k&psJF_iJG8A*>W|_UU|6rd4P@4CJ85%|2@Ca6gi_ zW>nK(Hf|?)C{4i1;pblxv#T#S`HC*Y%aNYKQv%b_i(kmG!p(WkLQKpVNp0-1czPNx zw1?DHy>a74;3pgh=f4AO9^XWYrrSS*z<+cUQazf&K>Q(-Ns27$z&YTM&@=49l`)5r zJc29U&L4vD3gd*5jnJT#5IDy`Ho%!GPQ2?k9nhtiRix5{7C<5lv`ex44q2!6cacSL zXcFp(U(Qp!E-6U8xFt~aqJdrFuzR28g-Oa#nSj1M$o*L`|`GI|W)D#30UA#;@7ubq^eqop@m+z9y_HdPS?VXgX8%G2GuO~T1+^Kz$ zb##fNd0%U*#*do5tp&-Di%t|H9X`$+z95e38y^MvEPIeszpPxAyEsH76o1=mfIP(? z(xBxLIL-3heir^ZStTF}8Wl{&;ak(TTu!z&t1>RF|KX+;NbgpJktDb|>9_ zd`yEr2_7rAktwR-L&2F>8sxWIa(ytAS=(y-Z(|nlSYe}kVG_N$AXnc#3d5k3bh-jg zaq52{@4GDVR=zE?+gC@(u|$=Xy#&4n$^Ih`SymRjBWmkbC(F6o^uwl;1i)1ls6&6v zRUF8Q;SZ`RhWi?5dWZu$uu2i(*MDSR;7pM^)SCaZUQQ?>=b};*AVcIgG0wCn zcgj^y&Sa}$noP)+DvqYdS*4-vFW+T7{BcQ_oSyz@Gl}hD4<_*-c0+dz=Rt^vo@63$ zz%M)Y|I_uqiyK2el(XUs2${pjj~`6ze!~np)Z}Qsg6FE=2-^tHD~)em_n}-cQ0GWD zt}y%<=e6^BU%z`x`SUJ7q+b{jlXd%b4)NR6;k1paw0xM3fg~56;y;yEkLSij{W6O_77<=J|t*MpE z#mkKkCT@e*)^%i|pks~6IZ-G~wK1QK3=-K%;8D&u@Vbm=Ptc;I#lfRA0O_5P~=B1HKE9dVoN0)1D!=u1iv7xOkbjNPC{dfE0>kTZe$JEPfkuA zZ#n+unZGwI;w5$Ch1-M?@2+fwutSXr$cBLs!>b{S2TZ*PCJJh5uaJx3E z$vUZO##gQ@DQhkudX{_vch3G2cKXCxKend-f;|`-(g2Hc-cNep6K_pFA1I}0lI2nN zlFuN2%KhrAVeYl{_0??Lz~`XP6VYWSbg)PVWWF#r_bDM>t8}>$aU<2EF+#fHoogNk zI4ru>-{%~F1b*y=f#b&h;m)!EQtqkYo$!nb3p0)>E7d0I>AR*+b)r^fALM!S|VMkjMU*=*Bvlqq_k$!){F3e~x5gtpjHe zKpjw&dQF5&6;$hh@%IS=qdqXCpx6}NxQMSU#dg{W#jpCiBoeh>dMQRTi&aM14_4>T z1xzo}$xC=OlnOo#9J>UWaa8CxWC?E8_~OAZs^?hH%Ml?oEeGo~x8_U8v!bl5zjXv3 zsx<$Z7gW*zzPaBM7ece%Vmh~1?V>;|;#=LStk>N7LqaILs&cuUf`6TuU8mm|O75Jx+jI8C3C=Oa@1;vLr#UAdeXC51>5UT#-4g;&^* zrU|xN3Fe53&wXL7sxbQ%F!?aH#t?#z_0WF#AFluxqc-dUK^uA#bpY=(ypIrc@dj3= zVZhcvGGsc#2SHidS&Q?9&9Xqs8qxv~tEiJChJs_LLVv($xqZ}2g;P*wXOU0uxh#a z!)RLR8*mmibN*GIRl6N2{>;``+(>52IV#+pwOTzD!08Huo34CwobTu}ilpuYwLp zY60$C^5IhZZH*S^K@Gcv;{C5Er;5d@w$rrrnKrF8OFxN1WlhM)+h+rjA|QzbXPy*Y zys;u{dXBvmfY}sbm@5^@qVE7G7~oIkMV~^vZRlhBB(Lkxs(?OK^<$m^A?jTJ4_%pW zQo{&mb(|{LRW8Rb7z4EWJzopb3r|qCK1O1+N|Mj^BeF2<+3V%JK#C+P{3tsU4wWKiDe;f~RxajoB0$CGegoYu;M9_=Yhi`FccIBMwDltv5zR7z6K_E~_bE!`rf9Di4y#T|fT_ zEQ0m@q9JfkK6_Q$4n)d*hIPuba9_yjSe@2X@%Aj?5-ikJ?GVh6LM>u3C=qRf+cy2t z(@JFiW|Rrli8s?|BAHEHsz>|X>(fz4SsydfvB%tuYd|(ky%v|#Dv7#7nwgg$O!)hH zcNF?yyUjg>>Iw?_;}4QowTf%Q1D;Cm`h`UhZUTe?9AveSGUozc*!&!gv+g|<|B60# zP8MfJYk?>{=Q5soriI`=`pt*Y|4b&TB7$Hsbm4NNY4gPW6f9T1t`Z9 z_jz*wsNaZ-xQaRx37?JQ_TjEC+69M7P;>D3eW{s~^RSh0nlf`*Qa?pQUB z{rStPwv4{-J@e3lWG~vvRnk6#V}AZw_{wsRm%6u&!x~d#tzk;($lB3po$dSDbW>OL5;-!1G*YyrH2C46r+66brkmRJo6%&e|Ou1u9wizQW z_2v(l(iQ0P+9ga}7MGTsbcI78>@`M|d1i*k`Vh6DX!Icb8C)56c`}Jk}Y$}`<8r*TLsS@#m?0lai)n`mxS-Cs?xm}5b8;41?3l> zb(J3Og(#Hf0#s>Rky*_3%M+pAm`A@XCpA-Az1h4T;*{4DlD63rxF#(Qx0ka-*KUWc z-{KY|>wNj?iMNQ=HGmlF&?D{oT(0(4%)~7na%`W-o`CeftS#0-yTbpKo?TUK)-O{f1#>y5qT8d7VxX!t$ zvz`#|4timy4eo*OYTN;6zjO{^Rv2ewiGmI+s7T<1zFj^~DEC^d+!stuw(eS~)2~n& ztzdGVn^E?lzGaei>te+F(w*v3|4I`KN*8SWRn2+`(A#tl5q@4__JJ3*4nlZu@1((C zT#*FywjAA9Fw4%4pDuU6L|wY2?cZknNM@5P0QIZM5^i`V!P8SrK&>gR)B5{T>;WdI8~9ECPOcL(Xn0C&ZLL@MmugPKkNd;%GRODYh7Pl zT(tKVcS?hG`B)KT=z{(CzKvwmQ`IO^LZUF=Hk+Lo08nRCvFfO%sa{C@!Hw6lEj+WV ztn!epA@(|W-|^;maE>O3ly$$`NiNaucJTNSfcdfoEWvTUd?CodU~6wCB1D|-t`yN| zC%t?JRRg>vBioH3bKFP;*-HJ8aFyU>pI| zo(9WKqZNAwVn?T-@vh!jpEwmLUn6bc3E zP+eZ3OIkZFQtL++KkG8z^Hpiu9jnkPfX&*2;s=ni=n%n%BXDf=vFYijYaQ_*GQf8O zHYaxy5C5#^SG>8KSE`#;l5H2YeEDx0jr-mQ@FaS~2 zZ$J&xRWnU*y!`27)r9%bMDyrAb+q4izry;!%JV4K(o8q~DudxVihDCc%G5<=c-wnX zF!F#vjzxzy$V6-}OaRoXzF@Es2}FmjZCzNngPLZ;`-+9lKdYj>+t2o23zD%Xu=WqR zKm0PZPb^lsuc?e1m|tu7w${S^`{k!<-3ya&=>%4~Rl*^-+1(SYk(2zS^a z|LvIkvxi<~*jE@Ybt04CorNlQB^`k~U&?}pXjW43XEm$r7lYCE(T}3*rfmT=Rb4SGPoz*r z($95N``qg%?p-EmM?Jb6IRQU+S@-=e&uBD`N@1XlbjjOBqQw`EHu=_`h0EMS%pE-NJ?6|Z^;+bV_}_wlPdvA=gvn@hHx?p6yAw(o$?%( zlyGjOG(8=lXX{(_+m^FREsOe#=<)Kbw+`?_9B>2|hA&;N=%yEFD zNu3#>%5f*U){r7D=7XE$@;WF2W!W<=Kx>aLvV^iS_q<>D8|h8mY!|5CcfYB(ZKxsU zVlLJqynwqdw|a8M(Rk3b!+8i2=v~<4Ai%FY+(Z{gbuT}E!IdURwiqg-W|DPo2yfq< z=LA$PtL%*Uv#s>D_qY|jagCo$96T;o24NnQe9h58M;1Kiksst;X)t{?DB!axue}NX zxfAv2mAdc_FhBEr!Ft zqM`}~@DbzsYei*x8j!1`9dj0?&Nc2g1#0TzHdqd#qjo^SSBLgHINr=3)v zL?7$XgEdITy(nOU`f5pZhlcZ{>{&=OfZQKc2o#1V!?S(YT_G53*Jg_%jM9a#XE zRk;j+{y6JE;i4wQ8i#nF0(0ae~ z#G53LsPd{ut#!fC1f&JrB}$U3kg3?p6fJ2vi*gfBX3YU;PClx zC{p2R!Nm)d$SQu(1G@4&y&U!skbYEusry-;(9;h{Z_CUhoQ?C#WW4yW3>YfkLf#5W8Nv74K&ZOu+5SvpyZ zBLdB!qOp02z6L;hZ8NXjd%7p5rh=ZdK69G@pdkPunNQ5j(NFD70L0h!Lufjtb^V1? z9_VVUOa##4`jO9PaWaSZe2IN_mxGFW0qD_ZH}8Q>0Kn$LW=`X^t3DAC$VQSEpgs<8 zo*zRE^n1tlpk{!qiYVqA05D`xAIKRSu{rPDCa|#m-qX+=CGwe?2yEDbTS~9(55Gb% z2Us3ZRpPFwu1B6`Sf1%QPhgG?dyTW=Q1flP^_f#1z>)yObQOSSBeFG9?zSJzNIBj0 z&Cy;Gh2f+e7OL2|s39u-K@65Fp(EfAXN+#{#98S0O=Yd{DT zOF|d zk`^RhVb!)vM>62j1z?def3}hHP1~<~VfqGFnx^={nhWnc0QcM`9`CPry#d!gR{eEo z72cv%+qVGHdtLT-9vLQ42>1*@Vu0bg z9zcOHVB*b9IH*~L-zSG3Gk@xGTWVZ;r4XwYu{-Dacwv)%U{NS*pv0MJnqUq;Nq?g5 zd~f+fzq5t8Vz1DF;n(_!QURnX9r*@8a5qwQvh3d)mV*TdMWM6r?|4qn%D(r%*N1z> z0C=}^j>_KTbmug*ZAQt!0D!eGxJWZ;lkz-q72g5`(7j%^P!4`Pp(Gv|mrZ_!93=K- zdo9b2K972WTf%q5xu9cL1eIUSctPj%@Dgp)l%}AUd@S}CKp+j)j|Bah4t*|BBxU{~ zQ(Wui0Vv5i%jOr4lhE4TPk5d%>~_e=$Z!PJ(6lQ7MVMb&S_*ae>fdC56C@AtzbW@@ zz9$UPPvhcNe4u7=QL| z9v3=x4mAHW#(4_VD!ff=itI7*9De(2vm?Lf9ss&js*R(AdY&yembdY5-vU|2YF-j3 z5L&_VO0O-p{)pJRQ6>e==7Ex#QPs?ij*QA>U9m@uoCOd)KsArn2njWYlY(V$L1q&< zsN}=KJ-XK$a1HdbA7A!Bxn-bGuGvZ6x<;1$n|#QuuY`yos7OhN7LG*ON)##T4iZlGu{>4qB)h6NI%f*lV_j%%<3h;=R=QnZ{?MWYjIqZ zU1rP~E*;mX88H6}y0N??L6_Jq5OeOcum@6x`b508*ci?HDi)5*@6t^y! z#HMPvR<-3+2csUh@Ht*TQ6g2L(I68`XH@mplhAO-l zoKtwRNl0C=5sMF7V~N?KWC`q62)cT6*5GbK3$dXcu_DzySEUY)CVy8VY&5-Ey- z$y5{;oKX9KajTGs)Hn&39o}(C(s`r*GeF7VXaN9T3kcKu_XlXTUsgqV;*K$+{T3V7 zME9^C%A%j(=4hE{y?Z}eru*i#89(#u!D;#z-XHnUezkRVS==m3{!L~2JhrkoK1W;p zVp5Y7tu@t9Q&S^4Wx;#W22&9-x&yBH%v#MK_JZ1(x*B;g*ZdC(D>A1?b|1|QUwr%e z{d-!6;9!#pM8Q?TI><`aseS?w4TJI#Ar0D>nNRNAAm*gN0XaTOuf+oW?S<0P56B0c zDhFc@9cpqv+I;e28d=^^N5T8Z+anb+_)i|(&NsENDE+{Y1M*~hh96Cp<<7NvL7;Sg zG8lK=)0t>%e%e*Iv_+!Xvl z->9#I?Mi9MQ6)`r-z>;!b(#wJh`gGL36k*s_4wy%okXGLZ@(2|vPl#+y_VElmrSq+1pwgX;KO4aNkMMb+V$;swwx> z6B#jv{PO`$%1@!%gQty?PcPM>eAltM8c`Go2A zrrVs8Gio~GTq}(XnDk_IAy|bq#C*C_sOg9ncs=6WM8WUAJJzD^T}LVD!=#j{s?fTg znnI83FSOogtrl<(sRQV+#K0Nfx47^#dY4VF#N(+_j*bHNBtHtiN3arDzX9` zoqki_mL!ZS&2AERrKG`ff1VU9AOD_5+>k8T2#Y9A7w@4zXsrTY8Rj=2wPqU7&cQ!_ zTA(Dqpe9Z4KMt2%YQLEsju6e)*e!-AuA#6T7P<2X&C+Bzj=GZRm5(1jbXm~e!Lc{_ z4o{W|&XU1Z>v(##Bc8yz!T^M-&x(>zLX^ujW2uyd2jJo_O(O)wQOtEkzcDN?LoW{| z;X;DF&b16`b~sQRX}|{p+SupdPjI;z^5L1{tI>U<4PZe8EiosZc5oLJXDNiewOnm4 z+2V_OsSc-@ayJ@r z_A6e!wrA|AqHn||_K@ZhKQZpevR_42mGFHD%grD{eqU-$E1L5o;dUf{z@53nlh)7~r1Je@u73UG zPw{s?Um7+8>c4VG{tLGJtq=$-*Z3WRp6th}e{Zzm9J_a8 z%R9uJg4x8Jcj5>?Kdrs3hk!FtaDIOd4y8U{SpaY7z03i>G8eD6CmpmR-_VLw z1V5;sAgT-nC+7-7-eGSFryA#Ia(I-@Mi?>@_p{s^{r>I!?V`!$9SZ$}C$RX~&gX`P zhC*?S`Wh@++c2+W7GmRRoWUGGyd(EKV)XE^5g6lMt$YAe?_XaD=UUU;a{liNph^)r z&y_tuCKP!M8zzfYx$1PsYq38w%uV;Y!c&RD6hk8;VIrC(r|>%#ug5=$Cc(=L%YlS) zRXd;+BwVpXSEa>5U>MYciZx%o2yYWWVHMBZD9M4AJTTgr^F%xy61m=MtwN+N*h6o? zld0Z|hlj}7ZX5`H>k+)AS%q%;9bRN8#;GDC@szCvsbwRqF|%j#J<9B3rmDTK%&uk* z$$g;xuT3kQ{rp7NOQB0_6;e6(jHwj9{mJ>ZobAM}BD85sIIKxi>fz)RZ_8TkQH0?p zlTXPdba<`LqpIA_FdZ8n=zDDvERS< zvj#i>;u>-G(VN4us^PiRzB1U^A~dz0&?=J(a0$fQGcY6nE^qnG%ldY|M zi-lI_oF~r==k@l7)*v)>t&n;?Mx?O0RLmp3oR8$m9@q-AT=l=-V&UO@vh17oT%U)V z74Itp&R$?bHS{f}faAR;;K(3yd5U2zCxek@5flL;H=a z?_tl!eh=gNeiT$cQE03Tf&dl%ix3H=M>ZBznpT!ca3)cF+IyzsvyGLiC252)pSWJr zJKp}`#q`MfH4E{tM*c$jS*n^*?_@lJr<$Z7wlyLHn#^~O!q`>3XE9i*^*j>7O25H; z^%okpWQ%f_fLeu53%7?Poe1@O_A1b6U~!_=zo+wZ&NHy{d#cC-Una*N@z3w#PNJ?V znTmfxg)}yldQvU5h!^@kc^TeT72YP>m~Clk@KjSD@MUIi@kquRzvpz4yC0LeZURCVrXB^sGOuSM7;0!Rm+o0wlMaI z*1^w|p;P|z57!zND5iY&%p2FIk9?Om_sYi~l#RQ7-aFCpOv8j^5sErVmiC#Jb0uWJ zyw=*-Ac~X=ZOI*EEfDPC64Dh)-(fQp%BJ7NP-9OieX&qM+nm9#W< zY5VlP`!_tw;9CO)qAS6yqYkVq{b3h2N=t*Y62&5Uy4HXt_oQEB!#89WZAChlMB}59>Ltc|K3Y1X5?j?KKVqsy~tVg zBV8*@p?=akajga8F1GIwiN5z^* z@fUNRTq^e&dEE^aULIK}=M9mt+m78xp|_=VYiU)xD)9IC(IpA&iVshw>fuuAamJ0H zUt+%K!T=s(Tou-r&=bZBkd?1sHRNXV&gj|S@>i%o-B;Tx(QVl4-HTW>OwJ($xw%uNkbub&B@5ao=7+TViP z(Ey;fe#t0o>H<>!?OfDpZtHQE9>_x`c2gS;YvYD?(HXG#!n;;(cAJ66Y-5kOR9tt zDN&*o_Lp+I)wZ{XlxrR~9qN%h^7|%7;*kvA7~_T7kq)>HwJ_QOlUV?V!s$KR;i!#( zwxfvPtv6MF5+lwUey;AmzRWWHGZp84UEv*@q;Jn;zven3M+Rns7238F+nyoMK5G4` zqv5Q4^IlC(hZmj%bpHgaMjtPB+#bfV+AMtJ99~dZ4NF^j-t{J%iHz~Qr6fC zl+*43pC?HFr@HM#QhMt?^2dzSApy8+<8oSPHLo}!MmlBst9XDnd*=WpTc#9_O%Fca zjQHw_U}}jAf%p9R)t7#_+;;49vL7b{W7EXLdDnDC^bb@&sDO5{kZ=Q2@z=KWl_Q}; z!{#iNf`Ya-t@d7eU>DnC_tDvSn|Z}WeVTPyORD zaldtjnl=ZagH>tB;aX+z%*l(!Je=P}U`FIRM)=0C@Q7%b{?5^l^^+DU2`Xx8Y8|=i z7?PX#zUIBZ`ewR4B2FynWkQYfjaD*sm9G(wR^E?eoO z(yO9M!p*)ry4rnA(AG6*;`7dHp>*&^P8}J&Af$HVeo}d50~32mNpAn8O2WJMG`viS zz+%)_$Z%ZxAC)?3t6J~Az1A?lH8AJ>(e(P@PrM~#zE}lHnI!Z~D9xNUmk%Re{1+!v zm7Cx7WTr#T@ZQe6qrR$@n=}y-d_TX1OGHCnMTI1MEB!v)cT9US4At^g5a%P#23&P5~5PBnqHXiqLOZi83( z557OoGsn_pu=xyAw@_M>7*me%BH_QjJ%7<;$|-{dNhZB z&bq}+Dnp^?BvCkcgtOI3%smf>HC=po;`B-V{QUMe-DJDdwWMQutf+XT5e{5W?U&+= zRO9ckMA{F8KLTDpK{~|wexahRk#>RiR$t)ih>@W0A1bhwkI9b{u6B~Jf~TJ`FSe51Z^+rC3jOwKW0mnVy(GONPDk4@t@Q`x(*}0DfnRa4quQRJVn~y?swg9 zWp3*{4vX-`D}x2nS1s3n5^z`83ykjz$>wQ3AKzTmoZMQN*f?bLaL8hEOQFKeE43bb z_k15YbIPD}T{JX;k`yeU5dR+wwD9!KDKVuyy2RZ6G=|^( z$-V@*^hBMKboVoiN5)Jw<1u)=zqEQ!S9w@UopdeGi#*US$MftIp-#RBU;VlK&TrYU zoco0?foSZMY)Ka>3qJm{_-$Gu67D_9Mgmyg^{Dcb8AGCzhgS@Vxd@bpot2%8ifGll zAM0vUQQ-#8b!WeGLG$z7Kcs(|@%4jzRpQT20~^+z8~JF9?qA&5&m4?2IDC0>+7chX zPxaqwig*4vZtGrlbbb?)%F91EYgo&P({a=Mx{*l9pNUtLhkNUBGGT|$JZ5D6%v3R#m6y-$9qAYv#tI=R`RkXTl%-}oz01cS4`YxM z9D59`e`UIc$gkFKtiI|-i1XgFx;lzdr@Idrp6PRZh>SJ}dZLA!d&ua@iguX>5T!SXonk7?6+sG(Rl)0+=h&eQpQr0Zl6F~-jeV8>az#?0oCDNkx zhE~R+iB4=N=Mg4bHpZeQ*d(f7ZUwWwuk+&FcD0h%qQNkg7R=NuoPoYop4O8`9r_GvZt^(NxrmltBGi^glE znhh}3za8~6X1O%N)@PXUr_W4dr99d%BP*-8xR|Lkmb}|uPe1`M8P&GWv^*LXt%dez z-(8)kcGPk!4gQq1+&g62E#EGpu`*VTXJjTyo=C^vUfrAGx(WaKupQpZlpL~_8`t!E zDkf0MT_dh9K$Mu;{`xBHCF3%qSXk^eVaFG(tug}ar@Q*( z=EIP&G(QWzCNhwrRP#helU|hc%9TYfZtlJnB-MPRwXb9J``Aq}^1MdE>VXe)dRS_|%=*mY=g`Sa+e}&k6juEBI!X=S;=AsP;qe!a*VJ++S z$kSW9;J^6$e32oV39VtIly0UUtw*%Pynbc-4_9iExikPpt!uVIX!C$ull(@Edg85J zg#lkWTf=s!SbML~>{`)BR=RjLP069ns-xAaOyP zE}dJkVmDG5(PtYHE7L8EXFETutmz4lw5WDGS?LltuWO!b!Sy;|p=O8!o1D_|-Df() zOt%B6EP^))^o@*a8PtJvF>)<*E3zJ;~P-U8-_p;V+ax6=4r2 zjDzrJc@K*^lg z<$t>8=5{Om&?CSuI=(=~$dOp%*~_lPZ=3~@=Z^X+(lVt6b$A$1xJ!&7RV@M`bqb9X7hPER)9eMLa7Z&X%OwM20DB@Nu^dzWEM{5{sF zaUb^{%d^IxdErkMW$^AA<0M9Y)~8ImCe3gzgd|2Wip9lKcN#@s5VW6b6Q9TJs-jR* zMlpBXCrzYRaBzruLlKyjnvL1wM{cof$k0RX>5%o9?e+Qw>zvs5ME<;_oAN1qj}6Qp zzdre=&l#<)!+)(y`bM7=8y-%1iiwB_Xy2|9vy@eD^Jl2c_4jjd`dUP+@D7D((IHJsEjcP?xSYP0azka3>x_Vw^jMwSnB z>QH;l0J76oE$ik}6{A*y!@SCZ^}Pg4jx^rry7?VtaF># zJif%c(N@()A#BfrC9|vbwm-vqF5eQfJ**uzHUCsnUM0%P<8w;+IclOJMlb#D?E8}|k2NwRu%X(vYGZ6>V?EBwR zPp`xfQhabCaqp>)VpYB~+(Vi_UuWYAjGmU+|q)PZ`ML%b3Sdli8 z(x~baR^Y9bpq&20{Yp+SWpTmfyH-0&E*pQ#t4!viJi{g8L?6@TE)mmk6eL`=45e7; zMSgc4R(NlWN^I{Ud1ZYttTn&CkXn-k5eS|67wA6GwdwnA9~iJ$HrRjjo<7q*8T^H- zgo=!C^J{0~Q)Sru+fZ#Mg~qVwbP#4f>S#Tt?QN3Lum6j&w~mT>{oX)_9(n|%Lqb~V z?pC@%y1TnOl~TI9L|VE*3F(lK29++6uKRM%`Tp*@|6SHB*OE2Nyt((Y_kN!J5qLG{ z4vfiWIUV`H)mGrZb;&%10k48=bdvGfdl?D|iDwCkzs#b`SdX{mAFn(gby#=D#pnQm zpZDopfEI(E~NAc2;F^A+4v7R5+mv>@XQFN-VJ%j3T9aSoYLX#c~P{KcQX z6XpbX@X1eyseW5{8|^kv85Xp7&>xfO(4ECszvj`#m)u7w4)qcwAIauG7rE{Ei@-=v z+QmY@oe?3E$}A=Etot5UQYuKs=AUinXLz3Dw`={$unSJsqFUY%7r3tuygB){j98ZX z?vHu&eOU|jPFLn?7m>(VA|tYJstk7XHBTHn&KetZprxL$Gpqm3W(5Ep?cV4qLib^3 zn2}mru-S}!nE2XTCYHVzu3O!|Txw0I@-w`5QVnzHJ~jGEHdkxYk>flcGDk|_%c>|3jzEMtP3 zZrd4$w`k-$TaBHam@H%#iu;2SrHL`D}Lx@R8 zPW~`emvjw)Pow)U;CYju)SJ6{g+5!Qj{Y8a}v9%5V$sKYBRE7gp>_i7MMN{@2yVC8|=T%WpKy1t93pO;7V>EqF|uOE_Lm zo;4reo@O0+iXK>qoTuusBW>mQdRRoOY?XM@i^4^l!DEZuLO%@Agwhv~NBxU|`4p!) z?H2E!gJ^Z@)(uM=VM9%kk7!PzE2T#gF5Po3n~=jozBRqrW#3x`5;pN@;lPpUd2f%S zV*KB5-qf1yuuB%IyxO_da8Q#S$>G8k&W-Pp42Fs4eg2HtG?I-Om`))+P5Q}6IY>3? ztBKd$=&EIgGmgr5kJCSX4n(_ON^`3QK=KkvmSG@My;bk!lFzVSmfHql)rg8w7>rQh zoJP;@L@EJGQxP)w>F=LM%em}(&fBO@#fTx8feWI%_ohj}bZqc+-5nuxZb6L|2>6^w ztn|FE%*X5!NuP%WRqds5_~OS2coc1FypUx?1RL~IZJf7NpX!^)zcBS@+4Z&0rz@|@ zLJdrDC{(-ncDh7Ac4|shaf@DA9C|4$$L89vaO~3o6R-DC=B;zKRdeh-p}oH!FntpRGP%U=I4-M@ovjie-4{B*VSo( zn-a0zfW>0P4dHRz(ULf`75RJBsJ^=s6e~U?mO0KoO=u*(7l)Xs6;_c(2PTBb@WG;; zo_%Z@8XBYspL;kJAX21?UpAc~R-U4i#gY;d2yO5L48?fz(~`{i63qB}%Hp}NXdv2j z)=i6;x#OuXo%hM<2SZOCjbmpvo$Wa z!&1^4>8YW)KVQ{K^0cZAvhV!`5~8FFU(w(k26iTm8 z$vq%3X||iaXkPF3IGCGhbq-PIAYW0+e-jb|%Ew%*+Wq`dMTXi1?FSeoM5#;9>9%@gxKWPQpb=WaLpl2ncug z_G&>)hh=DGCCd=*C783I$w_>mg1|txus-t`A!)d4{BCgzfrq{OdfYY#bke?(Nr6&i zie-OwfMT!tD{hi8AvCfty<%0Jv?vJ-)ymFJl9f=B>b(=EB&!1Mx)WiK5e#ViC~Tsl zTJwb9q}bCXO--reo8HhAOFn~jXEbP1%a^`1V}dB7snII+gU||7e@@`D64(Rqm!MP~ zXK2NaL4Ep$k`#;M(x%5a6vcEZ3^gtw1*gV<#PRWtya z^k2{hnWs51eQj)OZM85VTe9ilu;bJl=S3xlgNgP7z~C}sjZ&r$1K8`ks~ux9IPucY zV1w6|k%!VyxYXhBVU}Dp$OIy3d5*HISg0sCe;^C>Z6K=*h5q`H4y242+A|WYzz_~% zdrf&fqPCw+OuurnjSao6?d=Xsbn`X_=ue`#G2RRQ=-dAJedb~o`X5w%wvP+JNVwPn9 z%LJudJMn@+5w&e{5j?P?MDBOSHFM#1Mq1QyXFqCzLEsl9*<*?7evIN$z|FloaAZ{- zliyR3%`d2fr;g*_O<3Ijrdy2XCrp7dsvw^m@ItfWLiocFUJ?Ra3Va@FutFyHn_!je zhv+h26JF;8FTs`k!_k>LF3;i@xhA!Q;Lb`(A*E(eQSBo7zKw*1Y@L#-$QlpCWnbRD zW62UoEy-lSBIbmd_QyD!4iqOvNm7k!z5ov8cB2yo+LDY}(Ux&@_nPN8JO$aCrN8zbq0 z(RkvEB7ZOlMK9s;4($7DIQhPG#;25s`+KXaH(PSbhZjvc!A9T)dGm+YH0~U0>292O zwP{8$A!n52*A>7g(kgDxyk&Z!iiU{^=hqtGFQ#WkRWJrHht#OU2hAu7;(hOm@McE< zWE9d%q5&{=wsW#_956J9dsixN?f%SG>6eufQc=g};^_`roy1o(XeIm{t4XSt=S`hR z`b`nf6cO=c8APG&r(IqaSI530eO^E1tGNm7(;|`E{GRKJ=@h;dI*aat>blu&;d=l{BK_^0CqB-hjp*`-zXcdLP~X>y#4E;l*>!$N-?S;`_vA} zOwFTEv(Kr7($ceJkN;)M&kYZySnGGHK|!Lx5OiMe+5#uKObEs-d*ao;sMo`)P`~D5 z0y4@AVX(6Ds~butGdK6ldlwPuIMRjPD;At+w@k=t)iJ$?I5f-onnqn+owunjqDJ%Z za(Ayfd(T`m@uyv!komNurf0>bY13W5kMvJE3O`HCMFTVvT{cJWbvLe>$VW=m2{z8Ged z$XD+4433K0hKWP%7V41Tor+v~cOB`Sb}vtkZ|+`T8MWCem6(X++Ga$2_<%#|`gf95 zVY;>?O&q%au{_u~ZTXM8m}C&>UnrU+2l8j{U-7z3;fRaQxi>F6cy+8u%(5!c-~dw( zbc^p9h|aGM%+1a9S2Sx0S&e|t3w9Yf@UTot*q7Jxr`qN1V+9baaRgFZaU|gT$>+K# zI^CX}IbEJAS=N0g;Llf94B!=$l9GPtr=uxWwB77+nqmS03VJ2jt}Q8Fr=4$ z!ega0He!GrgV7gcoxzH+8N`D8RC3{DlxH=sstOD3TgK%P1b_$U&He`7ZqP4e*`wQp zr|sOQL&{fJOLl$xi40$>0>g8gz1;-)5@j8o-R(w(CcT#gA3uJ~5K7IYWis_)2V>z( zQjJ4IG^i#B=%RR;S}}_K6a+3E24KO!?10aCSqU@Apan>^-N3Q5No;1iMek*^-b?Tn z`eLIDT3}Itlcjo3f2rXU)tXtk*eD^33TKRjr%&??VGD3Ir)`=|=_xW>!7%~BTkm7Z*sQ~^|m)o&lr7yCf^_JOP1SNNT z_}e#jf_pTfqMFileA{Am8P=@40%N+W>|ZV|$|@?8#RzhsYJ<_Yt?KFA7KyZ_isK#w zgBOn)N%{mjn_6*xW1x`K|NC9bP@q+)950TX4IYvqw3Siv1{V6hDl0NsHQiLH7E2p1 z$aymhoeuHS+;F32FZ(p-V}`G#$QGNbc;u6fQtzKnu2zym9xtG@ z)<@bf7(Ek{ZEcsNOw)AoQ;GcqP+L*i;=*Jon4|~EObN6C#RS!Yl9K+~3s7$`h)0Pe z3(&4_Vk&M`=UV?Mu=LACZ2Gez%JcKD5mf<=+f|4`xYA^~_abzf-YPr4B)e?5k84Y> zg#K*fe9~+9_5+Um4+8-r>%qs0W5=e|lp`SqFAO@DSF-8JMTXOySn7-UOcWL%kQOA5 zr@qOzCcX_20T8k@U=@q*Z37-B!9F%?cK)7EMRC!>{7d&7GQyOkq-Xf=D2Ze7zdU`z zXt!W9I7_y=6=9s$ncq`;fJ(V`np~h|ZvIXKDI4uVsuiuTXKS>056pS*?^NE`m3bv- zaA5?t%$Tj{jt;yYv^ZBxeSu!8jQ6?hGej_C(;1xl)K;fEe};{*}7d}e{i?iu4- zn}0qWOf1MEQ6hqY7HVoh4+Gc7@O#A20i-C%}=6U375&BI>h&EZaXY+*fW?@n5 z_u|8*)cvKJ18bTUh=TZLzUQD++Nb`QU2qbg{w!Z=R61Yb<;MMKV~De@Rds!0)^&Q} z;E#Wf|9R^!fWH7U0)OpStx~@qccQo#SIq;W4|dhKa9mYcFoR3K7c58%D+4Q7w3?MZ z*ysd8VcN{dYO*pfQcK+V^FV<8i(V+H`pfV|)hq-aL$V&3Scg zpG7O0=PKQ;8yer1HQP2sHPFBOZlWRjS(8Gl4b361;f}%PduvdLNFEfg9J^qn8>5~k z-Ry&Fj);Q;p;HPgU;2o=@R639+2B$ZP2%gZivWUIcvwT<0hS%{Fnd&M6{rz{Dnv~C zd9=?5ZIj)wa*j}0TSWLPuqD zg~jO>Mk2`gQa0v}^LWMz^4<#1-Tmx^Fon(@H-e#Ll0L>`o#&v(KJAUV`WI0u6_Tv? zY0jpVq=;GU+#uxfaN6jL*EE?u@XRZ*uw=g(af682#y);!Ra;;zz@^Ca=N}d?WEjj# z_{&!m!ulSgoG;~M~V0h5x9pb zhrb;GeaN6PMmjSyBg&Bcezc4vYC^~K*T;Ca)6_0;fB#|2{hiDu)ilAbRqqiDK^Yu) zVo_c^hcj=Z?)0)flgHS;471U`u%;#f4y^#c%!~8{>)g#I8ltSHKC^BVGD{4yXFZ=5 z54-0y7CBPbCU4J|MCLxdd3SRd_!ux?C>IT8kC~XLM!Je_S<>S~eJpyokrN61V1jFEktFehKN_=)Dk%7m4{cF~^Bqc0L z-q^{6g`s!?{Nx|~vfym9TRfcjf>n%{k&&T8hQ07aXAf_cx9c_Zy+q#Bv*9`J!3aoe`iXQJ?-IR?z{22K;v<$+l3R9;Lmk1bD zW&Mj2FTqN6hhjYOeB~cRgpKxFeTKNeT z_aZoIBtex*M5Jq=C=J&=%zUArorp8*cLoT)?K=l_QobJ;dN$g7-rPK%*nDL|al#)T ztmtTreFZD;F{G#`%{UaPc6A7|^0L+~6pM6M7iMO{T3h*NzJG7Xlv;1!iBMKk3kCLD z(+Ga;aSHv7_K5JoSt2*DTjXTlr^OkInp8KN4#aVj0MY#DdCMUDA~(UzPSw(D77%rd zLkkNf(SKZakYa>;kUYpr>dQDhXclE{o_K+%Zt7*FvMdOwsY$UwF{S(H;^>@G!Zxi9zqYncN0Z9l4Gj-V@RD-Ra;BCEINv-=_j5!;mH?>Q{@m>N$`4raWtWY& zu#o4*s5-WsGd!ZQ)@G8`5fMo^!J+~09$tot)=;Lk+y6IDs^YNmEeTFyuJaOL8^TIT zXsHKm-jN{YkAUuQ+d!Pum@2mX%GsF>z`jf4RF}9+IHO%lLujxOYnU=`4Csif8H(Fz z-?w+>F}xNww--LQH+s%qH};~kOfKmp?TQGeMyQP#p8y}fpr*#D$(Fv7gS|B=YH9%N zWmbE;AeftjdkQeHqR$cz%wZ}_Ssd=cpZgJU-DSY1+WO{UAkh^iS;cTt;bG)|E-D(` zLxzU~K>@YplE6C{JQ5Ppf`N4EvoKLX@`15zfl&otxJQ#@(~><)Eb!5j1_5_O`uVQT zylaR{+~Sui0kC+c)ba%{9mfB>EYLGrY&^}eVYQ{7A{1jKwDa7wdZXF2xQzlI{Bm00 z+o&e%n}F6PVq#)teSQ1GEg9%v(4*+mcEpENKsFt@p6c+jii275)Nq2K9ZA{WwOZq?VD^Y*|F9_Ww}XI|YE9E^ZsGP12Q#EwoWS?c#2*z3Oj*l2l833D+BG6vy< zO`ja*+92vCn^D*OtJ0dn@^VyQ1SD4XE^ekB#uU?w8@Mx)e_hJe|;_}pxR$*sUHr=JGr@gBQh*5S?)S;=ka}&K{6cx zYB)7ApbTX|6n@jSvhcBl_0MEuHgXiW@^4}(*ek>K{&o7#Gat%g&OZT%!doLD4iurdNz-CY2;I`(_&m0Pd(GRVMB^69)i3Kq`A*4g`6(#C{}2%oK! zvy z&EZF;qu;vn69(U>tGj5UQu>5*-J{qKY#vYDL4=;AT}2=3vjUJH}ubGXlUQ}xG?+PDYW0L_?A^vAV6M4 zNy0=W3g487*LMd^5sO3M;Yns4yZJpuVlbkGJ#K;Nk=3#c637qIoqNh)v)-b>83LGNDHJ4A~PjQDGh{;CZ-rkz2wE+iOtBMUu?~nhD z<$rR9;b1CX5~5l~$hILm--uGHt@dMJN=HIAIwK?dazC)i=u2>4+t=TsP&kI?%uK!% z)f&ihYRlu|jH7vxr%SU&r@tSFM?O0fV}VmHR32J)G(DPGyCahM>;<}Ye7wR8MXaD5 zjjYI#&lstO0yg`~bpY zkRLA(998a{P zum&vgA`H0B%+79<5b+e|clNwO{xI8pB_fQ?b9al3P_eh*^)aOkQ#{IyCF;)~m%qE; z(ZS_RF)!v+93~^9DV9g(2QnpPkb^E?Zi_BE^`4UVr`=TqyiXM!O`Ah`FO!d7bRD}A zFPUUc&+!0k8W+Bx`pkXW-bzt?elU%KfTDR^uc4KihFqAec=O?s^4kdeavzBf9YSjP z(85Uc*nUoy^(|zHuPA8{01yKMau8*FHL37KvE`aXCx6eq>JRt#56c42*0DEm7? z_(-k2K&7+}^O>xIl8;CeGt;8nHjLppIBsl3bvS!-j<3#zUPU59Dr^0&(9|{TWq_3N zeZ#pM{0{B6rcpAn-SfQp#c?iKhEH$m@kzKdGH3F+o)ve0iCzt!+uKPR*8xcG(o<n5=`z?s+n?8Wvn-N*UDO94tV;NMjh~d2C^r?5h2Y3U%)ml@qXn>Nb8fg@UOXw*dN!ByKDCM*e zQLciC8!gS(4jC}fBH)d89aD|*-9*weGVV@QGgRVrR(9JH}u316;# zj+c>K_$MZO@}$^))&IumZyELRSl0?y>&dOnBKIe~Gqz6ukx69DbUsoq+4S%nJ@e@5z;n=K2#*)JCw%bR zv!~na?T(KmA+5D1i6nP<^=@MT$JXuZsDivZPXkfV>}>FA>RV3n&F^6={!@f+>*1Hx`5I zk0(Q~9ObsagBS!{Jq0Xn%3_Y6I&}OjH4mcFJ9tyi!eH}t=IAT_M|WRNjZI_+svd-o zmRx~@xYWZvgZz^oc=Dd@G0)#Fj2*^`OFE$=fdHaeulp;4#eE?F&7J^K?|W+O;INix z${8FuN=PwyzD={K@tawm9LI|j!^;^8;J){gb_l%{vld@6G4(~$Wf`q`NzOcF{g-Rd zPwLct&+F2QnC37-AJ#op%#sg4{pjA$tu51j1)hRtE$4TjcjDLd80R15r6wDmoy&i? zKKIK|RDO9UmqOb$fJccKm&HmhB^BNu_xk@%8PU3;{N*}!z{GFup^oB)2vsxzTU+PT z7fn?QcZLLsa#Hmz&T7*vQXM@sX9 zlBc25y+9klE1Xn@^50&?OzLbVgktxv^`MACtt~haJdg-i0&d9K@2@lM4aV!3_1Mo$ zVkmfC^1Tit(Uu4cN*FWs`<^_FYiM&->wlB&c|0k@lo-gPVzDWlTU>0;Yxi^T@s{YL zg#N>4H3P}luV1Bjugj?O)t9uLBWK43<%jEPj(19*U?AfbO6wX(00?~8dg}4_XmvdO zXZJa-HE!>a|M5Jzd?xqP0aAarcWUgPXRWNDCM&l{L!VI9f>Ax)cHda$#7#}%AZJJU zzyM+aKZEp?h>CnyG+yln7wG+Ql}WuB-))b-B%&{3`Xwc&ZnoN1c}OR?U}xg$~3_ykH_*ME0HDY89ZA^^?}#(y(Og2CS$b%`k6 z+%t?JPyL+1z@)Ead&rMG>G|`tG7kT#cy}YS-;wVsVBrK#niwL=#_Gz#RkGC-z-#Gy zOH~x=G|Xyu`XSw)H)&;kLNhMOD!kHB6yA{paDhmG_K7>@zXw%CTJJIuU0FwU%49cC z#@dR$@>%hhP}eO=JhX`@7CZ=z3{ z!+gZ7TTR%{@X#o$l6uT}$90X3pOnb+;ma}z$N%4SlAhdMpMOnbE6iRC9-0Y&f+CU4 z_klE?Ksa?0A%WxIs*49VGdc<|=GiqrfTt7}#R?sP}fCUiDa zbS;gSTiq3pA+(uB`~$@9U!D*O+oeqg5ts+RpQAAB6T&q7{zzFe%M#$)1Or#(R^@C+ zb>eB)v1JCdD#4q5S7q4-qC5~P^xU@ao_xW@vAk=kwT=%;WK&ULgJG`(Qbb^q{ID^C zhumM!NqKF?@^qb?x$#YF25oGZ=((OHOUJ!l0F8Yh`@{lSvr!`f1U6 zV5AK{~CrYeYW4n?ud_C^M2(ku+5(1AG}iM|Dz>dRy5k(Q$XKvAIO`S#+yD#%r> zU)xsqDDbQVg@lCsoR>?C6=*~EOr#4BVqw9iBNai47rcdCpD#CkAI+U5=He0n-1)hU zJ8WT5L41TCR`NgC#!mU2)*yO*lS&JSiDi+SOj-X-Synb0bf{fV$qa;pMDL@9ib1k( zMFek_PMht|v!gh<8+FC0!n#|wvSMY(bK>u=FCv42M)IZ8M{^N)qTGJ{9cH~be`6mP z^j+tXq}y~M5~OA5J9?F|lc!h^3fe(@#hf#Y1kC;uWbs;ipJ$| zL-w2Nci)*xWp%s{F~bgPoNtVkz~)1Y7djUJbtA-iauRX0ZZ}BrJC}M|MkbU^AiC)Z z7iobA=T?t)16s+KJM59K1z*Q$yO2YPaL3#TEcFXz;(OC33uDe1DGREid;V3`@KPdf z$gV$=SZ?l;7T8tm$Kc&wZX6=)po@uJy-pmR~-*~UT|3EHJ1^>gxY%h zI#xk(ZY%3ff;mluV6#8gzJ9%EmiYZE#ET^Xlz5?gkv4@h)**)Pa3JI2(0oV?V%HQm z*e^)uw`j1yWop{08^?Xp8@;)DHMSDAUZzZIF(|Q2;adh?a9#dJ4sAm8S>}Md1DEC9 zzvJbzjtkBuhFv^?D%zwa$-0E;v758(n4#vY?OK%>Vtf+{^wj)J=}Mbx&Cg9Lv?@ z{zqb|USMDBrO)DA+kMB=!-XrcP)63kLxg7k*-Aoov%xCq^dWh;&Ec`K-;e8D$?{yZAa23fk0!k>%^UE zx8=XXu1FmgWWU&aTPLTYt-WoR#!+*DH);{W?7OM(I1Z3fm9yq}Q5?2%J*Z$USSm)Rbu_qU}YYj1Z_P1l0phU{B7 zmw2f4M}0+USRk@;a!xBPmYb8SLNNjss}a4u;#QT$Z!{|gTtZ>hFLWc&1G%4O3g69m zm3$$uP(ltrY~S?2AY%{nr;T#KFg*Fk67MXrU3~}S5nO*05{FtnZ6n56e2Fjq{&kJZ_TLL+GzZmsGpE8DDEXO>2c|Rh-RnPdqVbRuW7i z=*VgsI*dV+ki9q3dltc$xfOTryh%)b=8tKVCX|rX>ZG606V4<-|Kq z@Klg6wGZnjUd{uL;-O0h#j62>q$iv#&LDZM-E@e{taHn3;BQZ~ySw{g&J_XPH$}1t z=d;sn#j~(5-P?^SHvD+HcgBBCPn~B}WB{93v45Ve@O^4(lkThxW75A|^HirTeNTZq zKAfiXa>zT9ygJZ#D=F3Vq@XLWsECHTNh;}Mb;U=gZ{?*R*GR6@Bpku30VpdEn-uFM zB#x{#tvRv(oz0q#h33Z3Djwfn25A{w2{?3|aU)9fbO;}=*sNssY@V5Xa~{|Tp~#H{ zN!|JLmFM_JEo0Xa$e$j}gl2)>;PRqX=}`x#uAu?=Q8r*{JmJPlR{0QknG5dgA0Pr4y>0i9CKM^izz2~x>+ZdwD?PaRIMUbt~ ze}j|0#6Uw1@`;BnH;SZzw@KUxjODlTR+Sv8RFW;BJ<O5zw0!i1!^3dg9AXl0Qky#2H6!niRyrShHjy4+lQ0%o=+2nl4XSw;I zoS>)iz>HSR_q<&s90`f{_PCGLX6DI%d_q&2kcew!zw@q#ccYm+rhBt2DjH{8KtH3R zs}=c*rgg6qt=rUhqM`_~!{@1KE=XAH&0*hN?8PITQ-m3O{R%1-k1sDl<>-i9-!>x8 zBSYXz`r-xOTH?QuW+jwIq{TrWa#{rw{jA!2mdfG0e=g&LNeL|VSUZuEbr-TEW z2b@GwYI1&o$+I}V>$2sliiT;Z%ed()hA!vTW$-xE4z|pceccJI_{rsTW?>bq#-on0Z;Jc3LeLKoYwj%|Y z3Yd>I**_+UGI|3Ft+o9jEk^*kwE87G(tMSoIpBpxnU~bdHK!MD8t2S&%#W)ko!B{v zAa38pnorotelIPrERJtO6bGIF1z5#&t6TQYgO5wH+KM&Gn0DE z8z)SKSgrU`_Faf|qb5ieDqNb~A&)eB(<%yVGPgIIp#lj|gf{bR{xd08-$m^F!aLlh z0Rsl4V!TeE-hafIyf;e}rnC0-wGPX46DMBMBngK@WDPdD__RtHQ7A`U)!*fbo5Xei zBH5^HT6JcBUBeVK^&>p0l?CJ=0rXL^u%;F?1Th3P;{Z+U4>NT_toygk~$ ziu~0eXVXsv2q@WV`ronvF*7QKUkyB{h&%T;h>J?lA>d}$mJ^86kOamF{#9OLca^U5 zHn)9zpX-)Tn3v$;r}woeyNJCV(2Fh%(!?D>hW}z;{_v?sVRN(HwZ`S9n$iY%DysdT z%tY0K_I8Y}mJ0_xPIuzj>eV$wUVchZIHRWDNwQ4aw6WvDHyD{bj{S!BtA8keA8%m!!j5x(n_E&KjXI@U1 z#?&YCh4I~WpEN0$it#k7bi&&XJ5d04I2d(To!^^HT{8tbrh0S#-{ZnO{YbyJ@EotE zFECbW>T~zwr6<313XhDUoMc}}rrYbA6A>zP?Wr&Nv_U?PWmXIU*r-cWP zAj95dNdQrxk$G5C_n@kAJnQtH&9`4i*WA-XQ{Y3+5uId;hv)D8{gJUO%bZhEG)2Jj zqYO(h&L12rgEc=0U~jZo28JN?$5XI|0`?NJi0>g0(8T*oBTIQi4LG@f`YN1`#C}<0 zF{<;)paVZP7L)g9!qDRhV6z-^evJQBbaicowK`|xc3#{dKQk+d&~vb~q~o?*iUQi% zX!pH2VCU?i;o@t09`z77hkm_?u3X0vdY9g%&65t4E)J_vj4{4OP`rL9#)1fW!>q~QAcE80Ene1Es9>2%YLg;XHJKBNod0OCj)7{&G zAlEp{TyNsiY@d&X5sNVK2xZ}xelTQP*^3U2`wOIx!q0m zx_mElvTGYSJS0tc7}vC&7y!h7V|GuXCE?{#U-V6x59iUN0XRE3GxI35o|&5~WVoqs zEg=S~%HylssAunN&9m!)T3v%H6yeu?_o2YwK0*QG zk?YCjGK~F}elGf-(~TkE`cbauQI)ggw|B6;gNi** znVb%Xz4Tx|(zeMBw5TXr-KzqzrB!<{KgUtj@B>VC!iVyOT)W&{+4B|*G_`IB^yLU8 zr^`I@TKhhHIGeipz`?51ox6mEycs*u(!~KvjrpkzcOr*hF6Nsc+s)3K z$NNgT{Ym9&c^Ilt@boM|N7cJHBLNIw+U=#mu>5pBC{ZT8YsfznOo~kx>)`{+KYhQ` zuFmkdu`#hohO&=uP2>28AC3q_`hXw~jxe0ybqnF*O7X`u-&<0_i;-zS5Vj6Qrfr68 z@9y@u3mo-aW0Le()1y$Dk|WUps{j*^qIRM@9&0;VPtkRhadbQifwCoF zynl=*K6qTPhWPmDPzC|MB#AjLU`UWt4X-rpezfyhejM{>>sNmBCK_xkDt5pHoO}l7 zleZt!;#Cp~I0=XEDG=~9dc;t;fTl6G+rDWj280c8rN>Ec*nzR`X#z=(7XqH*PzPaY zDA6K4uh>8HAQgkc(Z&Sz&Q>lS8}cm2m=6mRaxNRH;DJR#XW^xIlqQb}?=eGKJP#ON z8B>_*vePdtXbN8}xSkB>K45HR`O`u$2-DV<2pelJ4?K@YNgR7q;)S^>3cC?05%d0= zk2CCjWyB!gK#tHs^GQkO$!p39|dtS)*Q?I!g_`jt;U!RIwTJV|?)dgpZ)%X2a%2YRG;-J838 zl=6V0nydZ|rEH4^wl9v?gt)4G!^Q9SbSWha3d)e~K|gT(oyTfz&TN=D5OCo?*P>D) zyzD1<*$M6PS(m!KCFqhABu6oF%X_Z?$umZ7sn1eJ zf^RphEp8oAO${L zq8Rue97)rLL(+OnZ#_{e!~7(+g>g$!*JWGPPFQdb5FsuK8k|E!fE=l^aDxsG}NbsaYRW$ zLA^2SMB+{{B&%Tp4sDp=2;=L$)KWB71^15Ye}>{dRvQf+im$Ta4Z_$)GgT zrtI{uF^YN3&XiYIhhv%Rjz7kG=N2X|bUCnBZF+yJRa01u1V4x$IAWn5lV?ofZ|ly= z8f0#37qq?xY7v}!yXF(FXoP+riai`DfvM%JJ5L^jiF zw@bgyI|CUgS$V-Q{Y#$s*0Z?}Xj$SO!YHtRY?R$CJ(XEef z(Rv^~Eo>N)FH6FL(K&oWiTXHW*3k0ymbAGZH2`nwEjC6t6bDWQ#>FK3g#eizLR=>X zbteDcS{Go<>0hjOwy_8t2a7@g;cj$v^zxf|YC%T_S;gF^p0~*rwa%N;VBPZt@WdTI z6J)uTp>dQ$N5-nl?!HaDLCZPRPmvd)KC6*!Jg|ukM}1c)(MxMH3zNriNy5o zPgn}ffjEZuG={@zHr*0P@}7~#J;RAMvb1FqzP~i}`!hs$X|~ukIW-mH#f&w^M~G1O zi+rTY^-$o+&7Im`27~B*4^4F>jbKLkEZ!%H*uv0AQg)*062-5|b?fT$QVg_c))ts&^h3$n!(&bGqa)jm^Dlo~&$bdf+FB1rJq6q;M zGi7?jY}cO-Ldfw0vAaf?jEuKsA3p-NE*bIe9-G4wFDdIfB*xYzWPFQ5V6E`zZbDc*-GpFyx{Vc#9llnQO3Ya59~&udSL4`i zv|5nP?hBe4W%HRn%yIPR(aS1Mi0zUPE_mt#+wei3{q8XqNwf|50+q5+=PmfA-kbGSD2T(D$o?=Pd@i8XQ{8 zhp-_xE$Say@RIxgHjRhD$J848k`djV3*~}G_59HK#+*1L3RMAb6j#A()}uaT_neO{ z8Q0U$DEp}M_*dEE(b-|JK{NK>M=@+bk1~Aomb$BfZws``n&vE0WdP2^Dua7FwRHGb z2zU)_0?q-F>Bwz-lBT00%ZDMemP})GDV2$t8Flb+2AsrFjLD3i9Co0Q7ho4FKmP6? zAtL>@iQ$|(hz0Th)h+A=wIc2KR=PYgPzGj{VEPEB5^(+TJ3R5~CM?W^_0iy=#b$KZ z10o?HxVB`jdo3?77t-=RHYC#5f1Ip=mKFhk$LMH30hR|;mLETU;55eYCIk5h)M@O! zVkvlyo?eNX1!?Du|H6#QAKQvUQ?$ykFz7Ct-U(4ma6x#U_?oqUl(Ohm zYZW!9!x3Wif|kKoe%_SRJQ<4p$lk8`M^}QYWAPYfU@2&DQ0d>+tzKmTT;-lo0$8e` ze+y&v(G0+@uV~n9LbPcD|70;E;Dnp$oMD=QYJS;A8`>v>c~XI-PqHRBF{34WV|wx0 zPSGh7WQ)OT1QSe(;T3>5QlOatpk6_cF_j0qzgP`bQC`WFP6LhA@2ht0ELT9*KlM92 z^8v&z`hVX3s&pEp3nh^0f1YwG6jE}S0v5-XU)7$^UeQ@9f^Oj<#22o|nYNrZqq8JSh!yAfN-o&cCN1F?_euz~hJ(hBO z3&=V^r0{#w99_|AY;t;5h zM?tC)?7CAOvJ}vUJ+`kG>2!><$Z2K{xqy&k}Q@%^z_YkGs_=HX76K7u7%-C?LGMjKzEQ+_ajX9t*QEjj>;jtU1j7har7 z8D`_~k$Sl&d_XDmNvDJO9e!7Ae4}4jN_OS;{;ni{GBU!RCkZ-Xphw&CBT^`Ooycmx zi%04@GMUEh{xLnn{)`t-Jg>eUS3pK zhR6v~S>+AjbVo&8UuWH!HkUq6zVY|;gjQ%)_Wr@vGMfH9YGrLLW@$;lsj$}s>JdQS z$H_UfnfKd*)cFhNNID0~z-W$nKv&G)Q}B2RKnw$UVsm>L+C(;Zi)cxc`CjU1$pSl1 z?dv|mLP$8KkB^TP<0Km`9va_9ku6GwET;&ta0n#_7YZi_!}h^?4Ljh-_;zPJkYT$)qUEvx{UjTuQ-7+h_K)_jtj*CT z{52GjTQ-k_AK>{vqn}X5_z=UMWD&XqG8$OgppKrVGU4-4E)J9ALBE~ zc|Z%en;K48p*F<;*nzOi|CjmY-F?Vxu43uQ)hUbk;^8t<_1xyknv94a8mL5vq&GN^ zS&sKr>Dwc*3_E}%3S+?W%%(*OI^=UhgRzVp`tN0L?AEq6bR7fZ-11r$wtm(@NlAoM=y!|6Gd(k78SQh8BNO^ z?Yd+CAD*rPsH&}PAG%ArODU1=BV7s#CBVY}*SJpKkQv+6U zD-po46U9J5Js>t&QQ)V6OV5}*{c=ijpxR3&roQ zPnTgG6+XJ+yj1?hrFcV}F#UEe`9$dI_Ny=YwY7-OEGUoPF5I%YPrUQkmVNXEso~D4 zi&unLzg7Pxo@6P{Ybj*kBK2xr5Iz}UGf|#2x;9vmc}->VAC9lveWpOvMVcm<{^2Q% zRGWI^6?e^WSB^6skzmEF`WqXKfVl%#UMNse$dO}6@RE#7c#{u=*IvNwK9R9mrBFS5H)695YLHjGvyRlz!?K7{ zeO_zl8SmoY)lqa2)nG4W)yxn{+0YnqP3Ou1^C$oVlN?tgif9nOTT>Knp?o+q{xM2? zD#uO;TSlnd!?S;@q07>~RZ*l`OR~#r(Q&<*9$cbn?>Iz$>k)6c&WUL7t6NP+e>n?W zwT-`*B%H4Lb%QB_z+IMd$rw<&-=FwO$V6G6$EDj*u%0rufm=$QNF1aQ=H9nZE$>wf zGJZ=E3b!qHzO4)+^-J&17PbqTmpa>j4X5?f;TV{S^jS)VZD|&fHpzf6StlsQbOjQo zL?3!>KBTOa$;H2U-X|2BE&O89jYG48QJnvVmexG`#rsqcG?pf(C=c}}a)==VnGD@z z{(y*A0-IZr=VGP&K7a@&YZshq4=O@(b7w{BM_`$Mk;`o<-^CHbOTUhJQ3gYYNc-ly zT+UIq@B=Zx0Xzq*nfyK#hG^Dwxveu0NwTcI)mRQ%$%R4ssce>;bPZRG>bs2o`VRM1 zAO2%#yjGeu{6pBB%0GHWyAvhd2!x(EhmFnfb;bU>(~u<1TRkWKx}lg}gQH;K2b4+8 zM~sTfeJ6)>6`8!zsD7VV84?f=0g`w`2#u*&NEzYIb1=;*A@)|eY0%VMQ$yCVw^Ec~ zMvG}DNd3oG(&4rv&y(7j_h?F5t(#X_8t#YcIa)hCe&G$&5lk-I;N(hpxEf}{PPs)L{W}fFw1@ZwJ*N);(XTxVT4piBo2pNPw91IDbYz1%MVDY>fEne9VGs^yC^WbVc%cI zjBp_vd2d=!p}Rw^z#Y+bI{Zks?J!e%@B50366@ z$Cr=y+8UnclYhp?4NbLi#4;)?@l~`>xhtv;W@fKhj;-hed~{%m-?t}K?%J%r=Y1T7?$0(+L6nNTCdSC2Yq32?S!gfO!F%B4FDXjVn4&~O(&)OKu z65q|>-hJ!dKJOaTwXN`CBd_ClK}$q3tfROR#rFI+gdN+#8hE_j*72&=UK3O#+8*Myp% z9xqXr?pa7;BJRaro(56ibmaPsKH#alY)o&)yfr2p;n#~;9&c_6!rdI|qz-=P)M1Q5 zL_Xsn;1Bw<{_Hs!mM@@b-4yN-*HA_=r>U4?QpI_po2k{B{RwrTICi>Fg+}bSLjN zBiI3T0Q@drDM=Am)fxcl2}li;m<;<7<>|gXMZ|7BOD0;^rFmIduvXQiPjYu$CP^D1 zXjEb$jcfA^&?sxk4*(Afh;Rd^u8T_ncS13n_E0MUkV~M-;bnlmy);QwUX3@&js_14 zRF{Y=Mw8_7`WImKK*^s@-#ZwjS$k&Y?Q6YAgy$57o2#I}C`l8;mWNs?;4fKvVMXt& zAdmHMvSXg$d|UJ)@q0&sgFxUu*e@Sq{cf-$*st!r-tpfZ;c$!lkM??Q@HSt+lH=25 zk%KyJ>1C(b11U_TXyId}^iwI<3)jS=m^XAsi-tnKmIN8){0PQ8v z*1mm#)$;?!RX_XBK>t^=w;;(%d`Hko2J~n^#RG^vfp4psKS=TM&0=`^Ki3{lnLVgc zy&4S$R;J=mWMTkUm!!gGi>{xUQ3D_XK=S5WK}*2a!>S(&27o9K)`9;5QvX?NH&HNj zPW2$88a%|0FTA>?2U~GO-@La6;D*x#$*ZvNzZwtB*E8YurP$%d_wF45tYO= zEbi?yjivL+MG;_YRhz7*7m;asNdY!w8Jz5CVunT5ROC=U8tF3flIavca^2 zveEeXIKuo9>suQjdPZ4g=q=>IJngsYSV0?%fgW>So@3huFYVvG4Fpf z5wHYg;qe&!#4}L-RLaD}1c+PTE^SB?**~kRCp#1Sd?kC|nHvFK7tDM=k~;{`M;N(s z-ptY(FoQDyl+*y>03aKJX7_V(d8ui?kP~tOa!0GqpOanxR-F-;uo&fmZ+w$!7lKtt z^lMGi$_5(&du*&44R2VcPwXIwFWmDKks;G{);j2MXc26yH#(icFaL~;Y=`JoMzAvj zw6s259BdQqnxZ@~JtBeCq5+5^pe0D@ZTIKUx{FBYW=p?f&xAeij9Jww-pDhEjz~Nj z62Ahgy38#Z;g{0le%N>zqWezD6Mwfd8f}8WRv}J%NJU9iw-TeP`U9O~32xe&~hW^rOq_d;72OvhWZ@ zP&|L?0dz%^BIUAGR9EX?pWuT^L|j}En(uu5<gvhA=Yb7y(yb^T(YuHQ1O#M8$8ljTEiEMpl{M}zpj|7>4a!a_U|^mq|EZ@| z!^Cu{AY56^^Y$Zr*qoeZj%=HJUS9feUQ(36ZJ!&cJR^%>~EsIL!~ zOX>b=pIj~xMn7U*C46d;2oKRkuoEkCHy-j@XxMA<7#*?+3+gvh#ca7}%xCrL25^Xw z-+Jpz14)&S4{b#Lxu&XR2BE}vOm}3h84T#)U~;)g%(ESfk>0>F12&*tpC&bep8}K7 z^EN4d6d1N31T@0sr=j|-dBL<%rw(|TVQy|fVdDNlG*~_ExqVi`Qa~#Hdqac|g{>$% zBHz=-@n}Em8&E0J28h3kR|PTg=X5c-WU0@125cu$&g?g`d9j_by-Q(lVLp8tk8{HT zT-=vCQ2#K!C=EN|3VQ+dmq6M7plbd_Vb$b_?f|^rdChW){`k(gJJb}RNvrAL2d;d_ zyz^kc98UdZ{ph~aYL~SaE>z7)ZzQV|BC(uI1C=nCt+M3bWk%{E0(E=qDq8Kbs%}uS zZd0_f`U3f2sqYXXYc|{v@VSps3qkLE}y3%}- zcs9P&FPgm8a?*Or2Z&Y6iOydhgG2`Z`^fWhorA_(7Bcq%cK-CdEQY5-%Khbh_->OI zT&xgG!(E)^Ywzn|O0miFGA(Dk)BEjX7mHm|(02q-^oG_@kHUhB?#9P5`T1Mh>M>}C|FxAuj0M#f)IbaE z;@N#EPtV5vesasOT85$O1ji*uLxCsdN2o7mbcJGVSd>A%?@^pdg=L0G1T7oxzgd$R=4Ap_P67D2G6a>QRHS>*+e;ZxiXrXgR-J&4z!z+%Rx zk1SipoZ|Hn9@ zReQNRMq2LWTVY>(7w0C8pqniseQ?{=tbLXBvA}LAh#CS_+$wEs@Xp}bRf%*BoV^hjeAr)+VZ!|uj--T8MHpV-jf^nmQVI4?!139%`QAqE z4x1V|T?3$#2`H&mT1g0`B5qD_mWKfaw3GFI&;mo7F^XWf8DjU+zy%a+#$9{luq>Un z02IEv-|Y}pVJG0DVQjqVb#` zwx9YQF3CAe-*l;Q#B$?hJl^Yi{~m&~6hU_$4w)?HH(MA!@Hz*_mC$A0#kA^Gy=mUDmt(?oR&t>Pp(BRG4dWw`O~`N9`O3}_r({u6Dn*Vcbgv3EVcVo zbs+grVmQ6bYrjb$FD`KMJfH7yYY!pfkxzf zKpYCjVp-F zz^0&n7WxOzC);P-b__3tffZn=T&>O=1T4+Dy@p&roK`4G`{9Wr`yL!9TrB2%7J`5V zF>qXAnQU>Sl*#vj!NkVgF(3dPr>7dPh^})0KcT`W1faSrO{MVpVp=MN3MfbA?cNZlptftYdz#>pWXFE178Z zh19AeFN&DPm4xVYq>mrW2uvbOP;wtcGk$x!*nOP;@WFNmZ=SRLU8Hj4XUhpq|!d{e}Ay;(UK@pDkF2_Go0sNQBqFl z%Im%Jbgtqe<%B0sy-HdOfmN$g;rQyqyXUQ;UVrJyyG3g?4tCe}jCIbS!rys0C9-+h z+1ZcOxFj6(a!oHB;TFs)74nsC`dnzSDX>>4RmB1^g zB=N_^`6xr3&Z@(njx|1#l$_XkH%C^^Z@M>CHSc^P(hL*kR3B+q>(MqzboF_HHFh*w zD%;ntmdwrSU9EW)-j@UJKANZ~B zoV#uDK!~<9KF=h~MER=~Vd8IJzR6ZD${M#iy(NKpB&%>f6l93^KgW@PFW%Mj(xu?! z_OAbDj=h7^oNc>raD z@u97hV9$ybqx-gu0WXMTM!V@@@=M+ zPYY+18Ya;_3+)g&$RzK6`AmZ){^`>Z*fl04!ARE6V>)_B6Qlrr!(IbB9UPq^?xaDZ z#cW>s6>pn}FidHdcv44PlL!EeH{js^lCLf?Mmk${s}{8P2B;2^L^g#fUjkxC)2M1F zBtyB-efl-dfp|y#@-QolRmjM-0S8Ks(&Fcd#*Z?~+6N7sN4Et}%wgm7#^B3eToZTs z9F^LD>lvrj>)f3WIB3!ee#;<3d4t@M+Q8oBwn`swzkHA^-ml(?-^C4yI~8U44}Y>RH(A-CyMd%Rp8IOEuNj9zDlhK80V z$;qs?4yT0N2u+NWgolU2y;SDKyrc2_&{VBvK6jm6PsMa4q)}wsMVx0p!&?Le)}L{3 zr{eYHpdwfb1mQmBPesGyjEuy7Oi`5M0;oZOIGFq1-nT|dBO=$t=+|;KG&=(*FbWI= z!Bu{e8VR|?(|9&GqUFK?il7e;gEjNASdLTdiSN41!lc2S z@A(0nMu4aJ4L%M=yf8io3vH;aIaU#C@h(mJu()*Hm#tBfNW`$tzd;4o|LBlLtW{P{ zOf`E`Vp4d}9K~X`BskoD_wU~=r)Wj$KzTNKFsfmy!88dt#BDjBKcG?obxUw) z3px&#{W>5cO*0AUO4cO;n{(gEee6B;jLlsH!YJ2=BIOYap5Qv~f9_|!_^&d%!4o91 z!C2X9g&2n3sIY`?;)wLj{UleOwG$-!RsOTq&2XaGvJ0^kOWLX4UYC_q)*0u0lr~2t zo9#^{7ibP7LF{)+0mD_63Arejh z1iYzZ8Ub5G-_DMsOb;r-B>=eTk!iX_2`MSy4ruG^LnVondVYIsu44PeH^|U*n++lo z+7fvsuu5pbOwMH4W7_SXc3B+T1`Oju*VpkwAfiG-AAl?mn#;vodUkWY#=i^Be$LVI zxH#a9+uq(jIBys?lPsfbuDOWWtW(vP$7pXkJL3Yy8{n;;G)PC*jiQPE=83Ap+%LwF zXwXMLB49*>XiXCG{xJ9$3GhOQbnPCi0SlKVGP9AaRCzz&n4 z%3#%lc}x{;{dn(wI!s$0W#%_5D{9iIK&9tgT)=7IfyI;f0Ww6O$T-1P-yro=?i z>=BVhE$RCCpjEz1Bsh%rt>TLKcXa8tU#JOMQPNG5z=#Cw)`43B1XAG7c~a7%^ADrK zu^+Kx4lp9p35-4yNGpf%K!ol6LRQ+VET^h4x^3$w?H{|ku#{epp3gP=9zTh@*xn#U zM#S@HQh!Nn!}X$D93}Sj)9N<5Pks=i=UZ-GkizM-^}3Yzil9pO9d^`wa_P!fvJ*Ed zjffmt#^K`ZTCAFPqG5f-HguPt+-p!a%X(R|S$MlCjVW>!3Jd=7aDFGzt;pV{&rb$RjLM88AH(p5Y?d^5sbPP(rKDy$4 z0hyTVx$@SIoU|8+(_lerQRmj5>Ms6Rpq^4TIhu|Li8&Y!-sS@LV}wz8?J|cqknPX= z2D!C6q=D@}6 zS+_GEf>ARkGP?4KgP8D;np6d;54dVvzg)Y%xAP`RdQ`PMubg`<-@He!TlU|0`4tY9a(x>UZd|^bQ=;xTk<9JO_bS`p0 z$viqc8PnYkkZD``66TR=jlNQit>%gluONM;tG7=aD4e2|Xv{d77x2Wcg!_>_K(l0* zjh&siW)-MZ7AZ@c_sE_W^MW(nZPqe#cRr=T6ADNzLvrR3rbX=B>?n~ot+GYj1>aGD zvpnJ=A8MpD+0%!P;HVW5DEAqfz;9iJ#6L6`_7hCS5t||Wbt?*@3qL#WM3eKN6par% zD-6)ES(YVE2;nc{HZn4X7Fq@LKY-ZC<*c+DagJjLDO%u(_L}txXlgvgHiZf>wCDg- zKD})^RYlJHdwHL@(v5u3NWcC4Hc^NiWu*ecQYIXhs5uIkxhO;go>0?96h1Orbhg3u z8zBVU^=Ak&h09W_{>1x?5uJbO*e3WG8PgV-S|#GJ5gFmg8=IRtvvItWLOQ|H<{2YD zvqy-$VE#B}p2pp;5JrR3Q#4=aFf&9)R~H8AltLi7YVt(_ezw{Y0kVZ%?tG`yA%AhO z-$W5f@vn@6L?Lp6DTrViyCo%{siYVKLqkqsm};3)`n%@>1(jw?`^fVHp-5P-L)41G zs1yYthn%lnZ+QULE$T;iN{9}~c)=}gQC6|h@5C?zU zKaGxV6%*Jm64H}{EoXav(8D^r+-*M(6gvWpRvW1Jmiy%bsfSE3GFf+P6gd=#j!FOR z7U4+jAT~~+FbgCs;+F6MxrMrQBM>M}_}{n*IR#=z=9z4ySnzP?X77-_`Q~h8>4$glH0b9s{9@Gjp;F79(^-kV6vr>vB{(MIPeuvdm z#0NnCY8pvXoitxpUf~_wZ_7jF&zg!J`L*qiJ8>!^vOvNGCKiG9o>$9PHlPqctFlW| zxQ=wO@!ANHUMk{Wc4ijsTDX=E)f;2_m^U=3azJ7@F_E|=8&?nC*Q3ctxe(u^e);Qx zxBqLOE!6invbC_SDpuGy149E#Kz(A+;yXJn&DDCmwx5Fl29;{pJ7YK#jGCx$dG8H- za2t2uKU@*NZxqD4^PxQt`u{J)3(pY|X2k|8dnyhAL&wR8P9v#yLRCvB0));kvp-FX zGBxM-|A;=Hf)lA94>NF>@g8I=d4-+gHk1F`654@E$z_(zW7)PI-&~BVii(SJByJ0+ z8s+jQ9Ebm7QKi5f$0jI9UKrzn)B1K;2t`Hfm{QEL1STN}r?3u_2DaPrw|#e%YUAV> z=_BXuAnzR%sG?vne3!8yr#}jNsb<UJwlc)o3Ra|^LoMWuS56(*3XkgXE@06Nk zsb0Nuxo{oTq(!UM{7rI18T@%NN?O$X|S%fZ8IXI8ge_U?6dZ zx<*EH62_CsC0b11VWS@~Wq-R~N(-+@bf_DyS18H{uGVE+VFpssu%W{>pQ~H%u)vXC zspqCYXlc9e1E*d2i#E-3Pvl!oV;vfzCiN$(vIM!-V6fpB$$85;+TU#@=RQ9mp>b-j zs|Lv^PcaE8%6ImPlL7Z?FTM4llZELW5dZL;Rc^R!JiLH~rN*Kt;@&wIXu9fb4%8*m zXw>gkhSsGnBz}=(hoRDDwj1Nt^E&Q79ri}~yX~-7 zCcr>c#O<{@sU67ad>HgmYDvFDU1@y0=KAqL_%40dI>hqguUjW4#lPEnf&^s7uow+D zjB}i|b4fmJcXJj;wTF-l-!{Fp>?$0^)S=x@*7}gtKOyL+&|gnQjn?Favt$#fT#X~N zA}FYOrYl(Z4(IjB5$$Wt;E?}T{U@26uY@+pQ;msD}!2$r(?=(;68Yi%0jA{8Cb|<`T1dPoGs8B=XyS zQVwX&Pa*hLOxS2nqA4S|bc9Zj1jomV%Uh!MbG-+S+}GGV)(d22W@9^-r|OGMIE#<1 zSgMbPZ)##0o`wh`bus2<^Kjlzn!@$0MtHZ51(fKp)z))@2xVVb3rP9MeGkzwqMO8! z3qdB>*vyRe!>mCK2+7bY%=}&Ik=>?BE;h|&df1cValiS& zc#DW7xIT^TO#Eq2&}KrXQMyx$sip6TZQaQxCG(YF|F|bLJlaoNI1Qd|I{+#Ghl@D8 z2~Uy<7k?2g6Kspj)KrzFy77)e1pHn<8bmx_)iLS*1^;2gt~9b8Gx@G#8#WF|N0&#_ zZ=P>#80j+LUsWnU-c>hy(l&XnMrO{4HU4*{NYPo@Zzo40D#!KvR*gW=+gskT%l{ZI+>Q@O6cW_w zhs_%jJ%b=ae$uhK>f&`_#iiM86@COMjmMHdWt%@1MTj<=Ir)Fgb!08+AJZ0D%7q9! z9mqbwr3qwEm8~csGa`O%FD9NnVv?bZF@cHN#fCv7)xd$-4 znJ8QVudL-X@&J}MW>z_cPpQfJufz?_ zj)_CAB7D(_Fcb>pJ11WotH<#c(V7TL!3`S0_4mJo;r*e-n4^#%dwkXEZ^QSDA_5U2 zI&1sKf+yOgLZM{R_8#Lgpu}t6`~3U$b8OYzP=KB~uVmgjJHr!tI4%SS5Dd=vDbs7| zzfa0yR-GzMH|Ga3OkAqWA#b1NdkiGte@wXGENN*#T;{J!WS++RR6=`Z6(Se0TEl>M z3Q1!blJ+0Bs5-h@MY6pq*37o*n>vE7Y2VIF+MW*bmfTklr2{lh&FulDbNUxZAcH5Y zHENdwPdFGtujI(VWS-^J!z)dXGkq0j)Ui6>9S5gqQ5d1~{N^^(yoYBjbz5ysvy$dO z?)m9~0*0QYMIwS+csP}j)g*(xnXQ>Fgo@@jGbwr)<2Err^`Hw~ApB#+l)8Sc2$~fus;(;lkxP`*gH+HpG+b5af-G zjiZOlM#6jpRGIugo$N46N#@0!j*nOG5$O^C|GbaNX%8N;sC0jD^=%nv0l7r<124{i zf&Id>AW_mRZq!b_pX*rpyu}k&*TddX-B=W4j*2GutfVlYWXS5#iiX(auvxpA8V`o<{NEu5s}(FlTu}aFwUn~p)L57{rSS+#c>}mb#?hA4Yxb7N(05kcvGCD=q#; z6sP^TI;nMyYB5{on88gh(SR?qa6RO_gfQ%_r9H|4g4E+~td;Wg+g+>reBu8VIPH?7 zNLr;U+SmNGV=r_P5+Hl_CS&I&Q|$-0OfY5<J}g`&k7h$nNa;MV?=oWvOK= z2?Q9G1FvHo8*|i^r;TII>OS~0dD*dV`IT%k*qhEy_jUBE?=xa``r`&&F6+I8zv_LX z@e8nA6+FE0yt_DTz?YQ`Zhz&<1lw)7dic0ZlH&a!dvqepLgAv$OY-kzn{35?w9zD_ zba}k}4Ip5+cNJYZB_8+%-_0^2g4kp_KUP~dV&i~l6tJQ6AKZD85h{X0Q0Fe}Y9n%T zUNAE=+n7ni-{IUq59>(R?TA4EnbtG?-c#Fg9slaPwwLRYjs}fx^ko4pECUWhj?MUY z6&*J-rm{sziKm#a;lZ(_UE6b`e0~!afkB|sAoiKZ$+z@2P*VWM2#@V~l+b?(9PKyI zZRj^_tT@yEGoyYo(yt#PWLc-m?07j#Dk_i~WJw9Fr%q12Fk=mRa|;?s*J3cBFy&jF zvk-#Z_npJ*qC9=|Y}8qB_0lE*oazGu?|w#I^C8i}!}gaQ6?osuXj~+zNH@ujavjH2 zHxLWg++*Gu9BQ#rZGT$XyXJ-`Q3LD!j;;8*tMW?T+I`mrDMTtlm;5Q~CLzYz9!eIT zXn(B!+5XI{F+^N87#87~L<1z;ltkK4Jp{RInmOXj{v?DTz0aP-y+fnBH9K06BpJtg z8|cTmM&LHX9pXov!{P!>NrZL6eaLtTkhBL|n4=t4 zZ~V*oYU?A6d6BMN(tn(M@o+$4Jy356Q$`@w&y)g6%^yDq@PhCqpBS`)>9u>1=D)&% zNiHt5eZ0ql=zM6`Rg`H}0A{bRmfF2fx?N_~7dd|Ch`UqMOx>q!F5$;(p>{hq+y_ln zA}TP(A1_CH;8m(cE@prE@5+Gv16p+q-(d~;O^RaPNy^1Qw`JP;Q227wHA?9xa#h5v4yf=7w_ioCzTh&VAKdX5f*Z_g-9{VVmVrB}`O zMjoei=0{PBpi*N+zV|g#)H_~-CtUa@8>_9%f=C8I>sG}aW72WNs`|K-)e|&hp;;5f z*8gp3_!1(c1i8+&wKYz;U7&KQt4jgv%|AjRt;n5$-~!0AjdJ!8J1A#R8nSAg@YTAj zPF9L;T>00bMe6B-I~x%QhA!tiQRkZ2$W(s4q3G{M#dx5R*R}kwcRvre6{kXNW}?V} zzLK;vcT^4Dm)E-k^8nWpZqttO2oIA1eZ&A#yZ5(;-Fd>N{0;Y(&A4x&lbrwU=k`&x zYz1b-nXW_C_ww?T_Gt}^w(1G#m+2^TxgWQ&LBYvlHcAr73Y2#*fGd)l`v+83*W+-# zQl=nzftPJ_PP3P`*Xt#bowsBvG+JNw#l5dY8&>|xMknil(i%IOV_os=;IAWX&Iq&0 zAmu`0vs)!5g#NNRZ$j5Ps?GD%C5e_mXk9FF)7|%ym4D94`I|je&&k!Oe`9?b$hAk! z$~Sto3tKC%Av7g;vJiY6r9ynALT=SK{BXI`huh25SJs|TpCw{E8XrsgBmdc^U?nDe z$ZhrF&~H7Vba%;4JwNS}@KtJ&EL z))g0pAt3(xP%>FLTahGC#A~yTMGz5(G*YVHt-zx47uGIRGnOLo|0|p_k+oq*{M`j|2UIev&YP2NUf^- zX*Yp@FeVJ&fGX3d7$azPhAw(-LO0?G#wD$m)^g(IRx^Vs4tBUPNl>1^K!7Id+da^f z=V(x#_~Kh%DDtYlK5`)X{8wBZo0oi<)qXuxW|OQ(wSv`Ef~P0M`8aG#A;{LZMT;Fr zpAMe2%%BaNcwBT;KOQun*Eo_U!~ZJ~)X`FINm^dc8Slufydr4D0Ijgd;{#@Y6yc(b z_r><*rdi4*NNxfW*fp|#OkXmWUP_GIFw3X8iE_{*lHpJTu?=UTi_!@Py!G4L%K_H3 z>^zulfbz&j5Yp>7n5w6Gu#VKCpZ`tAc}*=rQ8#7h)la1T^{@S!Od}7rg%QvmfqD z(2AO^DyrGt`cSj}>TH442=r_7n(>cqPX5Oq2&&VPHIEOGXsr>q3($m@z!S_6jXf?}K$a zki~sNuUK=~RK1h8?0yTedAM^;$YpG$@|B?R1#Q4iE$XpTW?vVn5tWx0HOnFy^XHnbT+CWYay>h( zY;2D}BV^UHGn4Vdg&R^oIoqHOo`+2m!a@>fO!3;T@NkCW?Ks2z^CAIT)ozWxxf>z; zFbT=Y?XwFHLxz;y@bBc`w^ms;O5ym6B-C@|RnJrD1?}?z5@gNAOez?R*b+{LOyV^c`a{2`}9^=5eo!TtMFJ&Z~%Y%77+m+{Ym+H-mSC3vN3=5ABm*-WM zdh<`ttQY%4O*>2)NvR0eKLwY6`{(DIj_o-9_}cr)Y`cqk6o>eDkH1Q!bR6HGs)-(cYm>!U^e*`R_Ckyi;hrSm;P!rOR6bjyxX0wuhn5DAGv>Tz ziy#}#(P~5hPgCP^tQW0b&Hld^X|T(ARwEX2P$OLJk1J}Xj_qna3{+SE%P=!Jf8|_I zHitvYZTkh-Jdl<_X-qgs?C>Ea4jVWBct4$`>i-sKi3U?E*Pw{go6QZon{y__skq5T zOn^zgH15>_L_M@;=+7WNp6-`s#Vhs*G#W|Y>ey4iEd4uQM59JGV5RZ8}C; z_@^vV+V9^3P;Y7d6aiSARXhm8fzY3Gl=I%IuTE5g&ux<&Iq;74oy+oyB*0-_;fB18C4$!CTU#|1I(U&Blsd9Z7m*NQjNC-A4|3t|zNgsPn-wLS1)jj}TF2=jR0NXy!d@)=BkJwtzUBRU;TD}lf+)dj zC3k*R_Nh5$G8CmEp8uU_k`g*b1E$KOmr`S)$W)iZ>)sv{6$rg z#56+0Sq|0jo=Hz9a(I@ZhW5Y78wA}?G|3_yyArrv8n)kSSdia~A5>WR*tuV%u3@^u zLsyywmd}-$qBl=mzPURNG^-bAm(Z%iFvU%mm!kj&OK^ zVla7fjXwTJSR#zXqxgE2|68fdMqQwr`>q@%m46+5scyHpy?*h0mb?V@_)j~QzMC7# zfLp&J$G^)*0FcoP6dXht14l-1EM}W9Hiy#9jTIgG-0yl7^K7>Mw0^S4$8Mvg2DWWr zf3g2gAdY7lg#D#*5CtZscj6?w-`TA(D=a%ZyD5(81r4a7C>4HU9QrBB7znj$#_&QV z=BVF&`TFtBmM=<+?Je?h^#4!4NODq|?@)jpt37pcuagqn$n9n5F}rpkdnj_QX{JU# zSg)h|)$@pu8BuDZpiI1>G{JDYT4oqj>It9!|BMzInt=gO%(XW$dGqoQ8@tfK%Nh|0 zFlOUspWJ6fr6jZ$^W*L$>`{VAMUo2%*!dzI9z_o z*E+Dj6yWd`+6~;i;exTq1L|k|7TmiBo+9LdvxtU6v0pI%TTeWkP_&gH#mB}dGl6dh zd{ZJ4MCnAAjXVB^pTQYYW)^^G-8UH19(=#=12bB7G^QwDy&Hr~tsI>)|L<|tVh7gw zH$|I%${j}`M^1VvX(^m236IDn^{POz%#6xZo5lLwl4eZ61Dw2-lW;l7&x01cq6yfF z`u`yi(K7i>gz$ z0CGQACZ`Ow2v>|5&x|J-Abz8gh%@Cgt3 z@@5N3&i&Px3D?bulw|gYYuKWeGUiyBx|q8qU?ONot?3Jljh7?da zVJ1*tCkUegvbwpZZDq{=z(SV!hRXWWh=X9B9R9G;+eLu#2_IS9=?MvVBhsC@rWk>O zLP??1B{1k_ATG`!PSF8+xIae2cgIFlu-gF zldl6$e=`rE?s#n^)u@HUNt--a?4qk{6f5(Biv$C(jk(QokYSC2z$=cM#UnfyFr0OQ z{)EXO{|VUE;MSg*h5~xB)~CWxs&Pf!K4KC;(cldo;cyCg*l{!bs8yEX=TlBsNe{3_pav&Bys9}YsP(0d zwBjpOpsM_u2|kSv_$RyCxw05LBhc|PN8;>Q0$Z_D569l#9*jTRd&QS*r9|CNCCU#h z@wVH4b3~*s1F^GILXa!fFsckiow+;F1f@sMJ(+H*jsj0A%3F z^_}5}P4p@s(EcDb!z@=#R0-brnUW8qG$c2XVZRn zr_q@V3A}Kv24=2l-?;{S8rY`DzX8tmW4^;@9{?k~P{L#m zot#{srw>-ts*ZsJ{Hp%yOe+eaKi+bpak_eZA}+;YTA2omxw0w_WX-)A5hO+(0-#83 z$kgqVKW=6&5UKwH7`uWm1ulK1)Gp+a8Z1~M)?6vX2}G2a=M6xx0sVde1$K!IK&|>F zPcNb-56;Iw(9#%i5^LBG8ckI#>@ZXLkavZy(km2>PdNI(+UzEku4b&(z9U74q58Xz zh_&HfIq^?I2DA2l9hszLBlO)dwwMI~HNgB)rTD8E^^Ay=a@32Z+ZKSxD$OY>(g|Av z!wKUte>jYo9-N&+qvp*XZ+0@=`j`~~RLaknYC(bF^6t0=oy5T(siC|`TUDd^ zOTi!dRv@s0oB+V;#d{PIxu#hk^DRP>IjI8}@K6=LO09(Sekm9%Wnag4eK&MZ{m4#v7M(?HGHMW^}DiOnZn_;jFdI0f4(17*vj z0Gx+G2J*jzo^CY>AJ7jrtDLzc!F>r1r;oAk!ARnvB0%PB|H9w^>OJkZx3_Lh1|S6_ z^|_!B<`ne&T%DAN6W%Q27L% zr@ql0^J{uv(;mwu;W`cAzMRxRM^;tW5(G(u+v z&eg?y2zu-i0YH`3hGFfcc#1j#d&xj?c&ENX-=9TY5T2H#L8AdyYma~4mhAQQ*y#QZ zVOkvKB9@n_v2PQy+FR_0DZ2yF z`p2wIZ4-|Fh(}+sARh3c!&2{aj+*`XC$@*p(qL(?nw*?jjWg^$!=&!0`vhPr`AQYg zZ@oW~?=zrZWhCBotiH(^Z7N6VTjyZv4v$TK!Og*u)woXu`U&g- zVwv3DD_&`_6KIT8v>i(T2@04H#<#RIpu`STx*2jZV!?-iiv*AnECdiaLBkDrruVuw ziUT^X9k?84CFPo-D z$HLHMiHD2v5=1saD(5V}I=FnKNWUM*Q-Aq&pjqhf<~UmTO4l5Y^1ZcX^>xx<(dO8& z#ukE6*H#a5anp?%U^*!S5vD5JyDOB2>-U!|Hzdk^LZ6!~4bC^c?2Q|eh?vKq47R3Z!vrfe707yST9vcX7r!T4(U@ucKxT{h1%-uAp| z*75$_x9I{YXOS2+xZU%8(KA`JKrte6@<7AS09OX0kXXZ=y1m_4PboC8Gw-Bvrr8u!FWHn`%Ogp+!lfD z`yv7Se1m6R;VjrVUESUP*WPviQ}xGxD?(+KJtI;f6xo%Pl9HKCh-4<)wMRnA9^I&$ ztSjSMmuq*+_CdyV@9id=d+qC5_xtw!@%uM?ACL1m#}AkLexLI`-mmc-8-J7A#&G7B zm90OU$^e}x3SR#+$IPoyqaaFut~pXE`DJIy^TUZY$^{??#oBiK!W(r}5yV;QyL&_H za@2jurwqCS^@x|RzdNH}+hcZ36mr|MCTwFyOYDE2o0k?>ha6HQsja3m6tC<+Uf||= z5k%DPrzGxFzPKe1=?|XpZ-4EXW5iXzHLXckt>#B|q-z}?0s6pH|q7-@^% zHGTyl$M}J_$vjdU6uB@C2!+QUJ#OLMys8dhVGlp5#!(OLQM9mHlJ0aaVD|VgoCEa| z`vYEy7f=N;RXrUbdJT@Xn5mkpAXx!9s>|p*@FpiH?~hc1@M~4UKe#m+o^8f)E&+g$ zk#-j{a={+Mk)lV>70e@Uka!yB@Qx>Evj(=jvmgJk^<49>(#w@w7di&S4ZfOq85xKy zsJs4{T>Q5CS{Q7)@C^Gc!NS<6SuRtqyQntj_Y~- z)$;O{rcizdLA70pk71ja@dvqh5l~Z)*g_q!r>z(}GdFu)iUDP&zfxMkrU!zC|028} z7N{q&MJ!%yB!5KuI#45Yia9_L_YeRUH`cq-UfHs~O+0ymz|A;QSVpuXDL@Kn>SY=N zE?}q9z%HP9S@}6%>{cC5uJ{II`(C{m^ess|4Z6Yr)@>>iFwW>LVOb*;yZDx;0>s-V zOBOIipv73Wwa)m$T_bC@epdzCfNedr-a^8!8zg*7e^OlTS)EvA+zw+PcazP30=jnX zwn?S2ki8DJ4L0gt37dMG$X|Rq|SuWCdL8KHL>yNCObtfJ9I(}?HJiQnCnMnm?;(1tPSHO zZpW-tAzxpE3{kCqmf$ZM_b?kLl0f2k^7>0atKHa=D+iDai9kF%QI1 zL_zq3Jzp;%BxEaJQ5i*xu1-ffQJz%QQhzs~VBs2zvNV4Jd_v{pa%Qqi4G8oiL0X*z zAJJ$oXJ_Zh1_%_n{O0w$(?P2nP}`f5CehnR)xle?t5da1^|RV)y>&DVUsoF;yG~_= z$hMJkc;`UF%*-5$F#!yn9mWmB2I3PE(uqzD|@8>!l2{pU6TWTFHHS|YCC7UN94~U z$Lz(l`~{MJRA*jB)H-EIEZ2ZxzLBl@okf+y<-YUAORl#-XY}_(ldC|ka+*4SN-;pi zD;brt$Yz;Unp?QE`8{b>@D9GI1sroc6RrRzkLA_*gBDr;IScz%J948!scdxJas0?*nB>0Hi+% zk)=O}^=H+}!qUa(UGbI?m-tW$SJeWu0;rIH0g{m7-OC`)%DfeID*1lB-Do9HD_6$* z%N>*Mvh5&nkruR(xxQopQYWf4w62!hoJ-L;%v12hbE3(Ap$;CJ+VySxg$jB3)+)ZC zYDdjVw@Rc%yBn>wO9J+J#(%b#vOAi$UWH7HMt%Z<1MBH*kZ;%@S16!Q>V9j}r1am4 zimBl#aTT$VsI!B~(Jl&nrMhA|+5ubzi#tYk(%kRctJ!Iv@#-Ok@< znit#H^)}(3LW?x(|1E)+iJpUl>(2HMk5e4~?#SrKb8r-oNbBk8J&S`2e={xj5ya@X z(gyBV;Qe8v%iWjWGp{|&AQ#xpcRN{Mf%y#F$lsvg!@sw_>3F)8C5)|er?aO{TcjJp z=mK9pHUy;PKk>H6nQ?xlGRM?0~q< zEPOi;gv1(^_oL3vz{e?)odY~^QMr>sKiFYRSf)J9zYYdOC4$~sUCB>*#XFAlr5V&e zu?=Plxv{^)IQ!kE&)+B3EyJe&od0wVtestkvfWEV5 zl^J$bTwFoG<3$q^73>|C{Y0)M(Y2OuazZ(g2q7ca|F~%~*OjnW5>3Uu@i_8IJ;u8S zdN?A&;K4E)0v0uG2KfJI2$Kk~2BWhq$pDOuQO-~6Nr{gtO=sqqZZst8Iajvd2^@kx zkO&({adYKPj!Ru0TE!xn>?xbs-<=O$$DVQ4G$1(3^!d%W3*xvr8?*`3!$Al-ivEBe z(iRM479YhI-MAJrH4vHGH$a$jgMPRyL|e>F2q%TJ9Us21e_8ovG#M7a(;&~wb1uP` zio_+g9hZB963@@zsS*e1weB)eaS6^OxCv(*`%wdbU)HY{E3w~fFm97lQ+)D!g~@Al z6HjxCMn$j{w1H|`L$j}Ycz$Pzii5hTN`0*ZzHseDP!Mmr!IzcLZ?9Cb!nWfSM|qG) zgnFP2;dlfq^xN}zE$P2?7sf33c!P_NTw!0e3D?=tEErh`0i?#|1*7iPb!-jH>QC?hH74}5Gu*IdQlH|*`POhhc4lBT(e+@JRFMM`_2O_9jrCR)XL z{e>IXRuhA0X}$R#>t7VTPXmaKNEyRrgk_<3X^jsgEN(-`%QYO+FuFb* zcQS-L!UkaXq|OG^P9SK;NXTTq5qRfSNvZZ3Ps^MpY7S}~=LkKkwGveME&@FslL{O6 zX?zcbSMi9Bz%n}X0m~J5&)ttKObsNoIs*@222Bbxz!EkVnvu0n(E}fGJ2u|tjt{!| z!}~%U*J_LVOxAqUcwAY05<4qzSFh}^Y)s$}86);Six9l2^OzGFS?kDi$U}>dJXwBo z)em$;b$NyOI`T=aJkY~`B*4&<-M1_PtsVM))<-I-v!VAaIRt^~q$WDxTYhqmixqIl zB=|H+y>xW7%$f_$y<>G-JMmal9B4~}Ps^q>#m6VauTL>)&0PUNJs(d2>jp2Y4V&k@ zjG6~a#zl_%Y`wyhZEZ&_k!o`Ue`x3 zjEz2~@ixPcL15I51)1kl_g%erxY=W0{IqI_1f6lSx|y5`w#PT1pZ9lh zMD4^4g%B_B8UaNcf6q(w>AR*p8>n^Q5UTSu;WkUIr=D7QT;lp*V2cn)g`>uTeLByl zNjX^kb{V4Jm~d;ql}3V2lA*EBqFRcd?W#IzJf(rS(|j$g^nAsB0|_Dm6ak7mZgt6L z_5T!aywbUf_2)8eSNm(n{#VF5RDg(Dkp)JV{z2O#==EA>w9o!_pATH{trg)}dp|E9 zUq=T(BTm@r`);LQ1d!O3;*N6!HUI{*w~OXmdCz|*VEUBMZ0S^`tu~0N8GKQ zsg|$-Sx1u%{G_y=l*D}NaTUn7xLFDZgzVlna2m_u+(wlE?J(T!;Yk?qGs;pZTh?|n zyaI^my8nXo&G~`YTLWKZX$`7kmRI+Wuc}ExDZM~lz+S;hm2gU^Wd)GXJE|gfSY&M) zBTJX~Kq4@t9wG z<~6cAxf_Bso`CF{0tMvq@#c^IgZ-e`i=yYE3CZdZi(N;{zun!Lsi}xi)@K;YEGz{e z2Q1RN8$`{rO#_CsrMKB0&=AQ(BqgJEp-&(_0i|$T1mFpRT0VY_W|$b}Ey0@hSiBR& zJK$mXY^8T;OqDF2<@<4g<|Ixwm63Fxx>Io-W;$W@j3{jpKF0+AtC?W}`h(&$0Aw(6 z<=$zrZNB)C@$kA?70~*#onX6?-Dm4!{Ax>q%;;h@BbC^ANxqp+Ndm_I@^B2r%eiJ#hIlrr#bSzr<2iX54sZc>It{; z=_38hae(R?FpL-Q0eKTR)>bH;F3znhO%~-e>E*gK?bmAB3>y$Z=J@(QF|6!W-`x;LnZ|@r|}$ZuT-$HVE;x@=YZU&=0C|QuC0muj3DpdL zY9lz~d9xnUX~;K3*qqm{{&FgztPISeM3ceB+A$EHrAo-T&V>2_)2F#>a!;(Mip1q#*@$-llcAsFQ(e8*gV-3CQ z(ERh49I(sHyVlp=Jv+ypiFCJ*3!YG`; z0r=y`kGNIpcz{qi9&?SB^x(2&Sy{;F0n`rNOGA-ni9}gp5fS|MmZf2mub{<7 zjvu>JPji5tEb*ca?1Cp}v{SvOa<)@89 z)Lc%Q-78z3g{@m)ejlAr#&mpOXJ$5puA8n;0UL^Y-nW(MjkAq(nk(Pc18e~V z6{MN)W^{==EiH{YZFYTVpiKnO;<0W8h%$hJpC1+jLO}2I%;~|!B#8^0wPk$iz{NoF zAvn{Nb~A&sXr>B)`q6yhlmh2S)4vSh^3JdTod5rq{?CmlgU}QeF`9D}`use(J@<4U K>cHtb1Q5z7N3<}ufjDRF* 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 z≶kva^J@c-w@JhD&s5PjE#*ncn+AIl)9(y9Wje$#>tBQYd8V<(32<^+S9-tegFC z(5ZLRTG$);{@0rHzKn^{x1KK$>P8c+hK7Z%5s$<3B%AVBb+BtD~^&Xbp5z{6-Vkf`|N@GAp5An%8>H3`vm)* zVYXubM-G{%5l9Y2uT32k6ynb@rrhaVWODo;AfI(2X@ge^)lV1yTgO3k5=ua^$dgv+ zMKpb0j@RpYB@C_R%E|Z~z2W`h0YKekqu&5Xgp)!ryyw@&JeOl=E6bat^>K1i3U4rYKNbaJ0mHV|9zAk8eHs%;6Kj6~dN%UVCRx^IWeOb*dQ4@Xl8k z>v#R^wsU;dfWI!S=Hj;FH`erZI>!p={Z87;VVE01UrtK9Z%gyeqP`FO*W-~Fydy~3 zi0pqB4PX*m%lZsoQspevT~cqYojN#6oG3hO4o#PKh3^MwdNp?=);x@EUXOi5P^wiD z!$rEyzgGDyⅈ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 literal 0 HcmV?d00001 diff --git a/resources/editions/2023/plantilles/patrocinador.png b/resources/editions/2023/plantilles/patrocinador.png new file mode 100644 index 0000000000000000000000000000000000000000..edf6d04bd2eaa75d5ea9bf3bec608b5ca7975c8b GIT binary patch literal 60503 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

J?R#!+FYI0cqerxm8NRL6=J&(7yy4%% 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 literal 0 HcmV?d00001 From 8cba4316565c0e16f7f952f70d621842ea439313 Mon Sep 17 00:00:00 2001 From: Quiracle Date: Tue, 21 Nov 2023 20:41:05 +0100 Subject: [PATCH 3/3] fixed size --- batch_pdfer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/batch_pdfer.py b/batch_pdfer.py index 0ac6871..aede495 100644 --- a/batch_pdfer.py +++ b/batch_pdfer.py @@ -32,7 +32,7 @@ if index % 9 == 0: pdf.add_page(orientation=orientation) - pdf.image(imageFile, 90.2 * (index%3), 61.1*((index//3)%3), width, height) + pdf.image(imageFile, 7+(width+1) * (index%3), 7+(height+1)*((index//3)%3), width, height) pdf.output(image_directory + "file.pdf", "F") \ No newline at end of file