From 9e1f645c31c9a515588cc48443d5e334ca98dd69 Mon Sep 17 00:00:00 2001 From: "Salvador E. Tropea" Date: Mon, 4 Apr 2022 18:02:31 -0300 Subject: [PATCH] Fixed problems when using page layout files with relative paths. Fixes #174 --- CHANGELOG.md | 1 + Makefile | 7 +- README.md | 6 +- docs/samples/generic_plot.kibot.yaml | 8 +- kibot/gs.py | 4 +- kibot/kicad/config.py | 65 +- kibot/misc.py | 2 + kibot/out_any_pcb_print.py | 8 +- kibot/out_any_sch_print.py | 85 + kibot/out_base.py | 39 +- kibot/out_base_3d.py | 20 +- kibot/out_pdf_sch_print.py | 80 +- kibot/out_render_3d.py | 8 +- kibot/out_step.py | 14 +- kibot/out_svg_sch_print.py | 61 +- .../board_samples/kicad_5/kibom-variant_3.pro | 11 + .../kicad_5/kibom-variant_3_txt.kicad_pcb | 1 + .../kicad_5/kibom-variant_3_txt.pro | 1 + .../kicad_5/kibom-variant_3_txt.sch | 1 + .../board_samples/kicad_5/print_err.kicad_pcb | 0 .../kicad_5/test_v5_wks.kicad_pcb | 1 + tests/board_samples/kicad_5/test_v5_wks.sch | 1 + .../kicad_6/kibom-variant_3.kicad_sch | 2 +- .../kicad_6/kibom-variant_3_txt.kicad_pro | 252 +- .../board_samples/kicad_6/print_err.kicad_pcb | 0 .../kicad_6/test_v5_wks.kicad_pcb | 1 + .../kicad_6/test_v5_wks.kicad_pro | 1 + .../kicad_6/test_v5_wks.kicad_sch | 1 + tests/data/rotulo_k5.kicad_wks | 32 + tests/data/rotulo_k6.kicad_wks | 40 + tests/data/rotulo_sch_k5.kicad_wks | 32 + tests/data/rotulo_sch_k6.kicad_wks | 40 + .../reference/5_1_6/kibom-variant_3-F_Fab.pdf | Bin 9660 -> 0 bytes .../5_1_6/kibom-variant_3_txt-F_Fab.pdf | Bin 0 -> 8958 bytes .../5_1_6/test_v5_wks-schematic_(no_L).pdf | Bin 0 -> 97073 bytes .../reference/5_1_7/kibom-variant_3-F_Fab.pdf | Bin 9545 -> 0 bytes .../5_1_7/kibom-variant_3_txt-F_Fab.pdf | 1 + .../5_1_7/test_v5_wks-schematic_(no_L).pdf | 1 + .../reference/6_0_2/kibom-variant_3-F_Fab.pdf | Bin 11696 -> 0 bytes .../6_0_2/kibom-variant_3_txt-F_Fab.pdf | Bin 0 -> 8962 bytes .../6_0_2/test_v5-schematic_(no_L).svg | 3246 ++++++++--------- .../6_0_2/test_v5_wks-schematic_(no_L).pdf | Bin 0 -> 111507 bytes tests/test_plot/test_print_pcb.py | 4 +- tests/test_plot/test_print_sch.py | 10 +- tests/utils/context.py | 9 +- 45 files changed, 2240 insertions(+), 1856 deletions(-) create mode 100644 kibot/out_any_sch_print.py create mode 120000 tests/board_samples/kicad_5/kibom-variant_3_txt.kicad_pcb create mode 120000 tests/board_samples/kicad_5/kibom-variant_3_txt.pro create mode 120000 tests/board_samples/kicad_5/kibom-variant_3_txt.sch create mode 100644 tests/board_samples/kicad_5/print_err.kicad_pcb create mode 120000 tests/board_samples/kicad_5/test_v5_wks.kicad_pcb create mode 120000 tests/board_samples/kicad_5/test_v5_wks.sch create mode 100644 tests/board_samples/kicad_6/print_err.kicad_pcb create mode 120000 tests/board_samples/kicad_6/test_v5_wks.kicad_pcb create mode 120000 tests/board_samples/kicad_6/test_v5_wks.kicad_pro create mode 120000 tests/board_samples/kicad_6/test_v5_wks.kicad_sch create mode 100644 tests/data/rotulo_k5.kicad_wks create mode 100644 tests/data/rotulo_k6.kicad_wks create mode 100644 tests/data/rotulo_sch_k5.kicad_wks create mode 100644 tests/data/rotulo_sch_k6.kicad_wks delete mode 100644 tests/reference/5_1_6/kibom-variant_3-F_Fab.pdf create mode 100644 tests/reference/5_1_6/kibom-variant_3_txt-F_Fab.pdf create mode 100644 tests/reference/5_1_6/test_v5_wks-schematic_(no_L).pdf delete mode 100644 tests/reference/5_1_7/kibom-variant_3-F_Fab.pdf create mode 120000 tests/reference/5_1_7/kibom-variant_3_txt-F_Fab.pdf create mode 120000 tests/reference/5_1_7/test_v5_wks-schematic_(no_L).pdf delete mode 100644 tests/reference/6_0_2/kibom-variant_3-F_Fab.pdf create mode 100644 tests/reference/6_0_2/kibom-variant_3_txt-F_Fab.pdf create mode 100644 tests/reference/6_0_2/test_v5_wks-schematic_(no_L).pdf diff --git a/CHANGELOG.md b/CHANGELOG.md index 172a1c0d..427f8cb8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -120,6 +120,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 not specifying the SCH and more than one SCH was found. (#138) - 3D: problems to download 3D models for native KiCad 6 files. (#171) (not imported from KiCad 5) +- Problems when using page layout files with relative paths. (#174) ## [0.11.0] - 2021-04-25 diff --git a/Makefile b/Makefile index 7e9be88e..8a3ab13a 100644 --- a/Makefile +++ b/Makefile @@ -64,13 +64,14 @@ test1: #@cat output/*/error.txt test_docker_local_1: - rm -rf output - rm -f tests/.local + -rm -rf output + -rm -f tests/.local $(PY_COV) erase # Run in the same directory to make the __pycache__ valid # Also change the owner of the files to the current user (we run as root like in GitHub) + #docker run --rm -it -v $(CWD):$(CWD) --workdir="$(CWD)" setsoft/kicad_auto_test:latest '/bin/bash' docker run --rm -v $(CWD):$(CWD) --workdir="$(CWD)" setsoft/kicad_auto_test:latest \ - /bin/bash -c "flake8 . --count --statistics ; python3-coverage run -a src/kibot --help-outputs > /dev/null; pytest-3 --log-cli-level debug -k 'test_step_2' --test_dir output ; $(PY_COV) html; chown -R $(USER_ID):$(GROUP_ID) output/ tests/board_samples/ tests/.config/kiplot/plugins/__pycache__/ tests/test_plot/fake_pcbnew/__pycache__/ tests/.config/kibot/plugins/__pycache__/ .coverage htmlcov/" + /bin/bash -c "flake8 . --count --statistics ; python3-coverage run -a src/kibot --help-outputs > /dev/null; pytest-3 --log-cli-level debug -k 'test_print_sch_variant_ni_1' --test_dir output ; $(PY_COV) html; chown -R $(USER_ID):$(GROUP_ID) output/ tests/board_samples/ tests/.config/kiplot/plugins/__pycache__/ tests/test_plot/fake_pcbnew/__pycache__/ tests/.config/kibot/plugins/__pycache__/ .coverage htmlcov/" #$(PY_COV) report #x-www-browser htmlcov/index.html rm .coverage diff --git a/README.md b/README.md index 90d8bce3..5512af88 100644 --- a/README.md +++ b/README.md @@ -1698,7 +1698,7 @@ Next time you need this list just use an alias, like this: A short-cut to use for simple cases where a variant is an overkill. - `frame`: [boolean=true] Include the frame and title block. - `monochrome`: [boolean=false] Generate a monochromatic PDF. - - `output`: [string='%f-%i%I%v.%x'] Filename for the output PDF (%i=schematic %x=pdf). Affected by global options. + - `output`: [string='%f-%i%I%v.%x'] Filename for the output PDF (%i=schematic, %x=pdf). Affected by global options. - `variant`: [string=''] Board variant to apply. Not fitted components are crossed. - `output_id`: [string=''] Text to use for the %I expansion content. To differentiate variations of this output. @@ -2098,7 +2098,9 @@ Next time you need this list just use an alias, like this: * Valid keys: - `dnf_filter`: [string|list(string)='_none'] Name of the filter to mark components as not fitted. A short-cut to use for simple cases where a variant is an overkill. - - `output`: [string='%f-%i%I%v.%x'] Filename for the output SVG (%i=schematic %x=svg). Affected by global options. + - `frame`: [boolean=true] Include the frame and title block. + - `monochrome`: [boolean=false] Generate a monochromatic PDF. + - `output`: [string='%f-%i%I%v.%x'] Filename for the output SVG (%i=schematic, %x=svg). Affected by global options. - `variant`: [string=''] Board variant to apply. Not fitted components are crossed. - `output_id`: [string=''] Text to use for the %I expansion content. To differentiate variations of this output. diff --git a/docs/samples/generic_plot.kibot.yaml b/docs/samples/generic_plot.kibot.yaml index 0c4ac985..cf3e5e11 100644 --- a/docs/samples/generic_plot.kibot.yaml +++ b/docs/samples/generic_plot.kibot.yaml @@ -1123,7 +1123,7 @@ outputs: frame: true # [boolean=false] Generate a monochromatic PDF monochrome: false - # [string='%f-%i%I%v.%x'] Filename for the output PDF (%i=schematic %x=pdf). Affected by global options + # [string='%f-%i%I%v.%x'] Filename for the output PDF (%i=schematic, %x=pdf). Affected by global options output: '%f-%i%I%v.%x' # [string=''] Board variant to apply. # Not fitted components are crossed @@ -1534,7 +1534,11 @@ outputs: # [string|list(string)='_none'] Name of the filter to mark components as not fitted. # A short-cut to use for simple cases where a variant is an overkill dnf_filter: '_none' - # [string='%f-%i%I%v.%x'] Filename for the output SVG (%i=schematic %x=svg). Affected by global options + # [boolean=true] Include the frame and title block + frame: true + # [boolean=false] Generate a monochromatic PDF + monochrome: false + # [string='%f-%i%I%v.%x'] Filename for the output SVG (%i=schematic, %x=svg). Affected by global options output: '%f-%i%I%v.%x' # [string=''] Board variant to apply. # Not fitted components are crossed diff --git a/kibot/gs.py b/kibot/gs.py index f8c973c6..96755295 100644 --- a/kibot/gs.py +++ b/kibot/gs.py @@ -328,11 +328,11 @@ class GS(object): exit(EXIT_BAD_ARGS) @staticmethod - def copy_project(pcb_name): + def copy_project(new_pcb_name): pro_name = GS.pro_file if pro_name is None or not os.path.isfile(pro_name): return None - pro_copy = pcb_name.replace('.kicad_pcb', GS.pro_ext) + pro_copy = new_pcb_name.replace('.kicad_pcb', GS.pro_ext) logger.debug('Copying project `{}` to `{}`'.format(pro_name, pro_copy)) copy2(pro_name, pro_copy) return pro_copy diff --git a/kibot/kicad/config.py b/kibot/kicad/config.py index 0e5389f3..799ea45d 100644 --- a/kibot/kicad/config.py +++ b/kibot/kicad/config.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (c) 2020 Salvador E. Tropea -# Copyright (c) 2020 Instituto Nacional de Tecnología Industrial +# Copyright (c) 2020-2022 Salvador E. Tropea +# Copyright (c) 2020-2022 Instituto Nacional de Tecnología Industrial # License: GPL-3.0 # Project: KiBot (formerly KiPlot) """ @@ -20,11 +20,12 @@ import sys import json from io import StringIO from glob import glob +from shutil import copy2 import platform import sysconfig from ..gs import GS from .. import log -from ..misc import W_NOCONFIG, W_NOKIENV, W_NOLIBS, W_NODEFSYMLIB +from ..misc import W_NOCONFIG, W_NOKIENV, W_NOLIBS, W_NODEFSYMLIB, MISSING_WKS # Check python version to determine which version of ConfirParser to import if sys.version_info.major >= 3: @@ -67,6 +68,8 @@ def expand_env(val, env, extra_env, used_extra=None): val = val.replace('${'+var+'}', extra_env[var]) used_extra[0] = True else: + logger.error(env) + logger.error(extra_env) logger.error('Unable to expand `{}` in `{}`'.format(var, val)) return val @@ -381,6 +384,62 @@ class KiConf(object): # Load the project's table KiConf.load_lib_aliases(os.path.join(KiConf.dirname, SYM_LIB_TABLE)) + def fix_page_layout_k6_key(key, data, dest_dir): + if key in data: + section = data[key] + pl = section.get('page_layout_descr_file', None) + if pl: + fname = KiConf.expand_env(pl) + if os.path.isfile(fname): + dest = os.path.join(dest_dir, key+'.kicad_wks') + logger.debug('Copying {} -> {}'.format(fname, dest)) + copy2(fname, dest) + data[key]['page_layout_descr_file'] = dest + else: + logger.error('Missing page layout file: '+fname) + exit(MISSING_WKS) + + def fix_page_layout_k6(project): + # Get the current definitions + dest_dir = os.path.dirname(project) + with open(project, 'rt') as f: + pro_text = f.read() + data = json.loads(pro_text) + KiConf.fix_page_layout_k6_key('pcbnew', data, dest_dir) + KiConf.fix_page_layout_k6_key('schematic', data, dest_dir) + with open(project, 'wt') as f: + f.write(json.dumps(data, sort_keys=True, indent=2)) + + def fix_page_layout_k5(project): + order = 1 + dest_dir = os.path.dirname(project) + with open(project, 'rt') as f: + lns = f.readlines() + for c, line in enumerate(lns): + if line.startswith('PageLayoutDescrFile='): + fname = line[20:].strip() + logger.error(fname) + fname = KiConf.expand_env(fname) + logger.error(fname) + if os.path.isfile(fname): + dest = os.path.join(dest_dir, str(order)+'.kicad_wks') + copy2(fname, dest) + else: + logger.error('Missing page layout file: '+fname) + exit(MISSING_WKS) + lns[c] = 'PageLayoutDescrFile='+dest+'\n' + with open(project, 'wt') as f: + lns = f.writelines(lns) + + def fix_page_layout(project): + if not project: + return + KiConf.init(GS.pcb_file) + if GS.ki5(): + KiConf.fix_page_layout_k5(project) + else: + KiConf.fix_page_layout_k6(project) + def expand_env(name, used_extra=None): if used_extra is None: used_extra = [False] diff --git a/kibot/misc.py b/kibot/misc.py index 1b2e9c55..cd14d1a2 100644 --- a/kibot/misc.py +++ b/kibot/misc.py @@ -37,6 +37,7 @@ WRONG_INSTALL = 23 RENDER_3D_ERR = 24 FAILED_EXECUTE = 25 KICOST_ERROR = 26 +MISSING_WKS = 27 error_level_to_name = ['NONE', 'INTERNAL_ERROR', 'WRONG_ARGUMENTS', @@ -64,6 +65,7 @@ error_level_to_name = ['NONE', 'RENDER_3D_ERR', 'FAILED_EXECUTE', 'KICOST_ERROR', + 'MISSING_WKS', ] CMD_EESCHEMA_DO = 'eeschema_do' URL_EESCHEMA_DO = 'https://github.com/INTI-CMNB/KiAuto' diff --git a/kibot/out_any_pcb_print.py b/kibot/out_any_pcb_print.py index 4aae0b82..b595202e 100644 --- a/kibot/out_any_pcb_print.py +++ b/kibot/out_any_pcb_print.py @@ -5,7 +5,6 @@ # Project: KiBot (formerly KiPlot) import os from shutil import rmtree -from tempfile import mkdtemp from .pre_base import BasePreFlight from .error import KiPlotConfigurationError from .gs import GS @@ -77,12 +76,7 @@ class Any_PCB_PrintOptions(VariantOptions): if self.hide_excluded: self.remove_fab(board, comps_hash) # Save the PCB to a temporal dir - pcb_dir = mkdtemp(prefix='tmp-kibot-pdf_pcb_print-') - fname = os.path.join(pcb_dir, GS.pcb_basename+'.kicad_pcb') - logger.debug('Storing filtered PCB to `{}`'.format(fname)) - GS.board.Save(fname) - # Copy the project: avoids warnings, could carry some options - GS.copy_project(fname) + fname, pcb_dir = self.save_tmp_dir_board('pdf_pcb_print') self.uncross_modules(board, comps_hash) self.restore_paste_and_glue(board, comps_hash) if self.hide_excluded: diff --git a/kibot/out_any_sch_print.py b/kibot/out_any_sch_print.py new file mode 100644 index 00000000..02697dfb --- /dev/null +++ b/kibot/out_any_sch_print.py @@ -0,0 +1,85 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2020-2022 Salvador E. Tropea +# Copyright (c) 2020-2022 Instituto Nacional de Tecnología Industrial +# License: GPL-3.0 +# Project: KiBot (formerly KiPlot) +import os +from tempfile import mkdtemp +from shutil import rmtree, copy2 +from .gs import GS +from .kiplot import check_eeschema_do, exec_with_retry, add_extra_options +from .misc import CMD_EESCHEMA_DO +from .out_base import VariantOptions +from .kicad.config import KiConf +from .macros import macros, document, output_class # noqa: F401 +from . import log + +logger = log.get_logger() + + +def copy_project(sch_dir): + """ Copy the project file to the temporal dir """ + ext = GS.pro_ext + source = GS.pro_file + prj_file = os.path.join(sch_dir, GS.sch_basename+ext) + if source is not None and os.path.isfile(source): + copy2(source, prj_file) + KiConf.fix_page_layout(prj_file) + else: + # Create a dummy project file to avoid warnings + f = open(prj_file, 'wt') + f.close() + + +class Any_SCH_PrintOptions(VariantOptions): + def __init__(self): + with document: + self.monochrome = False + """ Generate a monochromatic PDF """ + self.frame = True + """ Include the frame and title block """ + super().__init__() + self.add_to_doc('variant', "Not fitted components are crossed") + self._expand_id = 'schematic' + + def get_targets(self, out_dir): + if self.output: + return [self._parent.expand_filename(out_dir, self.output)] + return [self._parent.expand_filename(out_dir, '%f.%x')] + + def run(self, name): + super().run(name) + output_dir = os.path.dirname(name) + check_eeschema_do() + if self._comps: + # Save it to a temporal dir + sch_dir = mkdtemp(prefix='tmp-kibot-'+self._expand_ext+'_sch_print-') + copy_project(sch_dir) + fname = GS.sch.save_variant(sch_dir) + sch_file = os.path.join(sch_dir, fname) + else: + sch_dir = None + sch_file = GS.sch_file + cmd = [CMD_EESCHEMA_DO, 'export', '--all_pages', '--file_format', self._expand_ext] + if self.monochrome: + cmd.append('--monochrome') + if not self.frame: + cmd.append('--no_frame') + cmd.extend([sch_file, output_dir]) + cmd, video_remove = add_extra_options(cmd) + ret = exec_with_retry(cmd) + if ret: + logger.error(CMD_EESCHEMA_DO+' returned %d', ret) + exit(self._exit_error) + if self.output: + cur = self._parent.expand_filename(output_dir, '%f.%x') + logger.debug('Moving '+cur+' -> '+name) + os.rename(cur, name) + # Remove the temporal dir if needed + if sch_dir: + logger.debug('Removing temporal variant dir `{}`'.format(sch_dir)) + rmtree(sch_dir) + if video_remove: + video_name = os.path.join(output_dir, 'export_eeschema_screencast.ogv') + if os.path.isfile(video_name): + os.remove(video_name) diff --git a/kibot/out_base.py b/kibot/out_base.py index 969a5edc..1d3947ab 100644 --- a/kibot/out_base.py +++ b/kibot/out_base.py @@ -1,10 +1,12 @@ # -*- coding: utf-8 -*- -# Copyright (c) 2020-2021 Salvador E. Tropea -# Copyright (c) 2020-2021 Instituto Nacional de Tecnología Industrial +# Copyright (c) 2020-2022 Salvador E. Tropea +# Copyright (c) 2020-2022 Instituto Nacional de Tecnología Industrial # License: GPL-3.0 # Project: KiBot (formerly KiPlot) import os from copy import deepcopy +from tempfile import NamedTemporaryFile, mkdtemp +from glob import glob from .gs import GS from .kiplot import load_sch, get_board_comps_data from .misc import Rect, W_WRONGPASTE @@ -20,6 +22,7 @@ else: from .registrable import RegOutput from .optionable import Optionable, BaseOptions from .fil_base import BaseFilter, apply_fitted_filter, reset_filters +from .kicad.config import KiConf from .macros import macros, document # noqa: F401 from .error import KiPlotConfigurationError from . import log @@ -386,6 +389,38 @@ class VariantOptions(BaseOptions): if self.old_title is not None: GS.board.GetTitleBlock().SetTitle(self.old_title) + def save_tmp_board(self, dir=None): + """ Save the PCB to a temporal file. + Advantage: all relative paths inside the file remains valid + Disadvantage: the name of the file gets altered """ + if dir is None: + dir = GS.pcb_dir + with NamedTemporaryFile(mode='w', suffix='.kicad_pcb', delete=False, dir=dir) as f: + fname = f.name + logger.debug('Storing modified PCB to `{}`'.format(fname)) + GS.board.Save(fname) + GS.copy_project(fname) + return fname + + def save_tmp_dir_board(self, id): + """ Save the PCB to a temporal dir. + Disadvantage: all relative paths inside the file becomes useless + Aadvantage: the name of the file remains the same """ + pcb_dir = mkdtemp(prefix='tmp-kibot-'+id+'-') + fname = os.path.join(pcb_dir, GS.pcb_basename+'.kicad_pcb') + logger.debug('Storing modified PCB to `{}`'.format(fname)) + GS.board.Save(fname) + pro_name = GS.copy_project(fname) + KiConf.fix_page_layout(pro_name) + return fname, pcb_dir + + def remove_tmp_board(self, board_name): + # Remove the temporal PCB + if board_name != GS.pcb_file: + # KiCad likes to create project files ... + for f in glob(board_name.replace('.kicad_pcb', '.*')): + os.remove(f) + def run(self, output_dir): """ Makes the list of components available """ if not self.dnf_filter and not self.variant: diff --git a/kibot/out_base_3d.py b/kibot/out_base_3d.py index b61d07b1..ee4dd6dd 100644 --- a/kibot/out_base_3d.py +++ b/kibot/out_base_3d.py @@ -1,13 +1,12 @@ # -*- coding: utf-8 -*- -# Copyright (c) 2020-2021 Salvador E. Tropea -# Copyright (c) 2020-2021 Instituto Nacional de Tecnología Industrial +# Copyright (c) 2020-2022 Salvador E. Tropea +# Copyright (c) 2020-2022 Instituto Nacional de Tecnología Industrial # License: GPL-3.0 # Project: KiBot (formerly KiPlot) import os import re import requests import tempfile -from tempfile import NamedTemporaryFile from .error import KiPlotConfigurationError from .misc import W_MISS3D, W_FAILDL from .gs import (GS) @@ -181,15 +180,6 @@ class Base3DOptions(VariantOptions): models.add(full_name) return list(models) - def save_board(self, dir): - """ Save the PCB to a temporal file """ - with NamedTemporaryFile(mode='w', suffix='.kicad_pcb', delete=False, dir=dir) as f: - fname = f.name - logger.debug('Storing modified PCB to `{}`'.format(fname)) - GS.board.Save(fname) - GS.copy_project(fname) - return fname - def apply_variant_aspect(self, enable=False): """ Disable/Enable the 3D models that aren't for this variant. This mechanism uses the MTEXT attributes. """ @@ -233,14 +223,14 @@ class Base3DOptions(VariantOptions): # Push it back to the module models.push_back(m3d) - def filter_components(self, dir): + def filter_components(self): self.undo_3d_models_rep = {} if not self._comps: # No variant/filter to apply if self.download_models(): # Some missing components found and we downloaded them # Save the fixed board - ret = self.save_board(dir) + ret = self.save_tmp_board() # Undo the changes self.undo_3d_models_rename() return ret @@ -269,7 +259,7 @@ class Base3DOptions(VariantOptions): # We will change the 3D model self.replace_models(models, new_model, c) self.download_models() - fname = self.save_board(dir) + fname = self.save_tmp_board() self.undo_3d_models_rename() # Undo the removing for m in GS.get_modules(): diff --git a/kibot/out_pdf_sch_print.py b/kibot/out_pdf_sch_print.py index 68781073..9042bfaf 100644 --- a/kibot/out_pdf_sch_print.py +++ b/kibot/out_pdf_sch_print.py @@ -3,91 +3,27 @@ # Copyright (c) 2020-2022 Instituto Nacional de Tecnología Industrial # License: GPL-3.0 # Project: KiBot (formerly KiPlot) -import os -from tempfile import mkdtemp -from shutil import rmtree, copy2 -from .gs import (GS) -from .kiplot import check_eeschema_do, exec_with_retry, add_extra_options -from .misc import (CMD_EESCHEMA_DO, PDF_SCH_PRINT) -from .out_base import VariantOptions +from .gs import GS +from .out_any_sch_print import Any_SCH_PrintOptions +from .misc import PDF_SCH_PRINT from .macros import macros, document, output_class # noqa: F401 from . import log logger = log.get_logger() -def copy_project(sch_dir): - """ Copy the project file to the temporal dir """ - ext = GS.pro_ext - source = GS.pro_file - prj_file = os.path.join(sch_dir, GS.sch_basename+ext) - if source is not None and os.path.isfile(source): - copy2(source, prj_file) - else: - # Create a dummy project file to avoid warnings - f = open(prj_file, 'wt') - f.close() - - -class PDF_Sch_PrintOptions(VariantOptions): +class PDF_SCH_PrintOptions(Any_SCH_PrintOptions): def __init__(self): with document: self.output = GS.def_global_output - """ Filename for the output PDF (%i=schematic %x=pdf) """ - self.monochrome = False - """ Generate a monochromatic PDF """ - self.frame = True - """ Include the frame and title block """ + """ Filename for the output PDF (%i=schematic, %x=pdf)""" super().__init__() - self.add_to_doc('variant', "Not fitted components are crossed") - self._expand_id = 'schematic' self._expand_ext = 'pdf' - - def get_targets(self, out_dir): - if self.output: - return [self._parent.expand_filename(out_dir, self.output)] - return [self._parent.expand_filename(out_dir, '%f.%x')] - - def run(self, name): - super().run(name) - output_dir = os.path.dirname(name) - check_eeschema_do() - if self._comps: - # Save it to a temporal dir - sch_dir = mkdtemp(prefix='tmp-kibot-pdf_sch_print-') - copy_project(sch_dir) - fname = GS.sch.save_variant(sch_dir) - sch_file = os.path.join(sch_dir, fname) - else: - sch_dir = None - sch_file = GS.sch_file - cmd = [CMD_EESCHEMA_DO, 'export', '--all_pages', '--file_format', 'pdf'] - if self.monochrome: - cmd.append('--monochrome') - if not self.frame: - cmd.append('--no_frame') - cmd.extend([sch_file, output_dir]) - cmd, video_remove = add_extra_options(cmd) - ret = exec_with_retry(cmd) - if ret: - logger.error(CMD_EESCHEMA_DO+' returned %d', ret) - exit(PDF_SCH_PRINT) - if self.output: - cur = self._parent.expand_filename(output_dir, '%f.%x') - logger.debug('Moving '+cur+' -> '+name) - os.rename(cur, name) - # Remove the temporal dir if needed - if sch_dir: - logger.debug('Removing temporal variant dir `{}`'.format(sch_dir)) - rmtree(sch_dir) - if video_remove: - video_name = os.path.join(output_dir, 'export_eeschema_screencast.ogv') - if os.path.isfile(video_name): - os.remove(video_name) + self._exit_error = PDF_SCH_PRINT @output_class -class PDF_Sch_Print(BaseOutput): # noqa: F821 +class PDF_SCH_Print(BaseOutput): # noqa: F821 """ PDF Schematic Print (Portable Document Format) Exports the PCB to the most common exchange format. Suitable for printing. This is the main format to document your schematic. @@ -95,6 +31,6 @@ class PDF_Sch_Print(BaseOutput): # noqa: F821 def __init__(self): super().__init__() with document: - self.options = PDF_Sch_PrintOptions + self.options = PDF_SCH_PrintOptions """ [dict] Options for the `pdf_sch_print` output """ self._sch_related = True diff --git a/kibot/out_render_3d.py b/kibot/out_render_3d.py index b5e4a200..3d2a5060 100644 --- a/kibot/out_render_3d.py +++ b/kibot/out_render_3d.py @@ -5,7 +5,6 @@ # Project: KiBot (formerly KiPlot) # KiCad 6 bug: https://gitlab.com/kicad/code/kicad/-/issues/9890 import os -from glob import glob from shutil import rmtree from .misc import (CMD_PCBNEW_3D, URL_PCBNEW_3D, RENDER_3D_ERR, PCB_MAT_COLORS, PCB_FINISH_COLORS, SOLDER_COLORS, SILK_COLORS, KICAD_VERSION_6_0_2, MISSING_TOOL) @@ -170,16 +169,13 @@ class Render3DOptions(Base3DOptions): if self.view != 'z': cmd.extend(['--view', self.view]) # The board - board_name = self.filter_components(GS.pcb_dir) + board_name = self.filter_components() cmd.extend([board_name, os.path.dirname(output)]) cmd, video_remove = add_extra_options(cmd) # Execute it ret = exec_with_retry(cmd) # Remove the temporal PCB - if board_name != GS.pcb_file: - # KiCad likes to create project files ... - for f in glob(board_name.replace('.kicad_pcb', '.*')): - os.remove(f) + self.remove_tmp_board(board_name) # Remove the downloaded 3D models if self._tmp_dir: rmtree(self._tmp_dir) diff --git a/kibot/out_step.py b/kibot/out_step.py index dd52b3ab..6ace3737 100644 --- a/kibot/out_step.py +++ b/kibot/out_step.py @@ -1,12 +1,10 @@ # -*- coding: utf-8 -*- -# Copyright (c) 2020-2021 Salvador E. Tropea -# Copyright (c) 2020-2021 Instituto Nacional de Tecnología Industrial +# Copyright (c) 2020-2022 Salvador E. Tropea +# Copyright (c) 2020-2022 Instituto Nacional de Tecnología Industrial # License: GPL-3.0 # Project: KiBot (formerly KiPlot) # KiCad 6 bug: https://gitlab.com/kicad/code/kicad/-/issues/10075 import re -import os -from glob import glob from subprocess import (check_output, STDOUT, CalledProcessError) from shutil import rmtree from .error import KiPlotConfigurationError @@ -78,7 +76,7 @@ class STEPOptions(Base3DOptions): else: cmd.extend(['--user-origin', "{}{}".format(self.origin.replace(',', 'x'), units)]) # The board - board_name = self.filter_components(GS.pcb_dir) + board_name = self.filter_components() cmd.append(board_name) # Execute and inform is successful logger.debug('Executing: '+str(cmd)) @@ -90,11 +88,7 @@ class STEPOptions(Base3DOptions): logger.debug('Output from command: '+e.output.decode()) exit(KICAD2STEP_ERR) finally: - # Remove the temporal PCB - if board_name != GS.pcb_file: - # KiCad likes to create project files ... - for f in glob(board_name.replace('.kicad_pcb', '.*')): - os.remove(f) + self.remove_tmp_board(board_name) # Remove the downloaded 3D models if self._tmp_dir: rmtree(self._tmp_dir) diff --git a/kibot/out_svg_sch_print.py b/kibot/out_svg_sch_print.py index a6216821..d7760969 100644 --- a/kibot/out_svg_sch_print.py +++ b/kibot/out_svg_sch_print.py @@ -1,77 +1,36 @@ # -*- coding: utf-8 -*- -# Copyright (c) 2020-2021 Salvador E. Tropea -# Copyright (c) 2020-2021 Instituto Nacional de Tecnología Industrial +# Copyright (c) 2020-2022 Salvador E. Tropea +# Copyright (c) 2020-2022 Instituto Nacional de Tecnología Industrial # Copyright (c) 2020 @nerdyscout # License: GPL-3.0 # Project: KiBot (formerly KiPlot) -import os -from tempfile import mkdtemp -from shutil import rmtree -from .gs import (GS) -from .kiplot import check_eeschema_do, exec_with_retry, add_extra_options -from .misc import (CMD_EESCHEMA_DO, SVG_SCH_PRINT) -from .out_base import VariantOptions +from .gs import GS +from .out_any_sch_print import Any_SCH_PrintOptions +from .misc import SVG_SCH_PRINT from .macros import macros, document, output_class # noqa: F401 from . import log logger = log.get_logger() -class SVG_Sch_PrintOptions(VariantOptions): +class SVG_SCH_PrintOptions(Any_SCH_PrintOptions): def __init__(self): with document: self.output = GS.def_global_output - """ Filename for the output SVG (%i=schematic %x=svg) """ + """ Filename for the output SVG (%i=schematic, %x=svg) """ super().__init__() - self.add_to_doc('variant', "Not fitted components are crossed") - self._expand_id = 'schematic' self._expand_ext = 'svg' - - def get_targets(self, out_dir): - if self.output: - return [self._parent.expand_filename(out_dir, self.output)] - return [self._parent.expand_filename(out_dir, '%f.%x')] - - def run(self, name): - super().run(name) - output_dir = os.path.dirname(name) - check_eeschema_do() - if self._comps: - # Save it to a temporal dir - sch_dir = mkdtemp(prefix='tmp-kibot-svg_sch_print-') - fname = GS.sch.save_variant(sch_dir) - sch_file = os.path.join(sch_dir, fname) - else: - sch_dir = None - sch_file = GS.sch_file - cmd = [CMD_EESCHEMA_DO, 'export', '--all_pages', '--file_format', 'svg', sch_file, output_dir] - cmd, video_remove = add_extra_options(cmd) - ret = exec_with_retry(cmd) - if ret: - logger.error(CMD_EESCHEMA_DO+' returned %d', ret) - exit(SVG_SCH_PRINT) - if self.output: - cur = self._parent.expand_filename(output_dir, '%f.%x') - logger.debug('Moving '+cur+' -> '+name) - os.rename(cur, name) - # Remove the temporal dir if needed - if sch_dir: - logger.debug('Removing temporal variant dir `{}`'.format(sch_dir)) - rmtree(sch_dir) - if video_remove: - video_name = os.path.join(output_dir, 'export_eeschema_screencast.ogv') - if os.path.isfile(video_name): - os.remove(video_name) + self._exit_error = SVG_SCH_PRINT @output_class -class SVG_Sch_Print(BaseOutput): # noqa: F821 +class SVG_SCH_Print(BaseOutput): # noqa: F821 """ SVG Schematic Print Exports the PCB. Suitable for printing. This is a format to document your schematic. """ def __init__(self): super().__init__() with document: - self.options = SVG_Sch_PrintOptions + self.options = SVG_SCH_PrintOptions """ [dict] Options for the `svg_sch_print` output """ self._sch_related = True diff --git a/tests/board_samples/kicad_5/kibom-variant_3.pro b/tests/board_samples/kicad_5/kibom-variant_3.pro index 152769cb..b2129efa 100644 --- a/tests/board_samples/kicad_5/kibom-variant_3.pro +++ b/tests/board_samples/kicad_5/kibom-variant_3.pro @@ -8,6 +8,7 @@ BoardNm= [pcbnew] version=1 LastNetListRead= +PageLayoutDescrFile=${KIPRJMOD}/../../data/rotulo_k5.kicad_wks UseCmpFile=1 PadDrill=0.600000000000 PadDrillOvalY=0.600000000000 @@ -31,3 +32,13 @@ NetIExt=net version=1 LibDir= [eeschema/libraries] +[schematic_editor] +version=1 +PageLayoutDescrFile=${KIPRJMOD}/../../data/rotulo_sch_k5.kicad_wks +PlotDirectoryName= +SubpartIdSeparator=0 +SubpartFirstId=65 +NetFmtName= +SpiceAjustPassiveValues=0 +LabSize=50 +ERC_TestSimilarLabels=1 diff --git a/tests/board_samples/kicad_5/kibom-variant_3_txt.kicad_pcb b/tests/board_samples/kicad_5/kibom-variant_3_txt.kicad_pcb new file mode 120000 index 00000000..f32298b8 --- /dev/null +++ b/tests/board_samples/kicad_5/kibom-variant_3_txt.kicad_pcb @@ -0,0 +1 @@ +kibom-variant_3.kicad_pcb \ No newline at end of file diff --git a/tests/board_samples/kicad_5/kibom-variant_3_txt.pro b/tests/board_samples/kicad_5/kibom-variant_3_txt.pro new file mode 120000 index 00000000..bbcbb926 --- /dev/null +++ b/tests/board_samples/kicad_5/kibom-variant_3_txt.pro @@ -0,0 +1 @@ +kibom-variant_3.pro \ No newline at end of file diff --git a/tests/board_samples/kicad_5/kibom-variant_3_txt.sch b/tests/board_samples/kicad_5/kibom-variant_3_txt.sch new file mode 120000 index 00000000..789049ea --- /dev/null +++ b/tests/board_samples/kicad_5/kibom-variant_3_txt.sch @@ -0,0 +1 @@ +kibom-variant_3.sch \ No newline at end of file diff --git a/tests/board_samples/kicad_5/print_err.kicad_pcb b/tests/board_samples/kicad_5/print_err.kicad_pcb new file mode 100644 index 00000000..e69de29b diff --git a/tests/board_samples/kicad_5/test_v5_wks.kicad_pcb b/tests/board_samples/kicad_5/test_v5_wks.kicad_pcb new file mode 120000 index 00000000..8b17c740 --- /dev/null +++ b/tests/board_samples/kicad_5/test_v5_wks.kicad_pcb @@ -0,0 +1 @@ +test_v5.kicad_pcb \ No newline at end of file diff --git a/tests/board_samples/kicad_5/test_v5_wks.sch b/tests/board_samples/kicad_5/test_v5_wks.sch new file mode 120000 index 00000000..50a9ec8f --- /dev/null +++ b/tests/board_samples/kicad_5/test_v5_wks.sch @@ -0,0 +1 @@ +test_v5.sch \ No newline at end of file diff --git a/tests/board_samples/kicad_6/kibom-variant_3.kicad_sch b/tests/board_samples/kicad_6/kibom-variant_3.kicad_sch index 88656f91..6c575e5f 100644 --- a/tests/board_samples/kicad_6/kibom-variant_3.kicad_sch +++ b/tests/board_samples/kicad_6/kibom-variant_3.kicad_sch @@ -229,7 +229,7 @@ (property "Config" "T1" (id 4) (at 63.5 43.18 0) (effects (font (size 1.27 1.27)) hide) ) - (property "default:_3D_model" "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_2010_5025Metric.wrl" (id 4) (at 63.5 43.18 0) + (property "default:_3D_model" "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_2010_5025Metric.wrl" (id 5) (at 63.5 43.18 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid c70d9ef3-bfeb-47e0-a1e1-9aeba3da7864)) diff --git a/tests/board_samples/kicad_6/kibom-variant_3_txt.kicad_pro b/tests/board_samples/kicad_6/kibom-variant_3_txt.kicad_pro index ccb29b75..6eee7740 100644 --- a/tests/board_samples/kicad_6/kibom-variant_3_txt.kicad_pro +++ b/tests/board_samples/kicad_6/kibom-variant_3_txt.kicad_pro @@ -121,6 +121,211 @@ "cvpcb": { "equivalence_files": [] }, + "erc": { + "erc_exclusions": [], + "meta": { + "version": 0 + }, + "pin_map": [ + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 2, + 0, + 1, + 0, + 0, + 1, + 0, + 2, + 2, + 2, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 2 + ], + [ + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 1, + 2, + 1, + 1, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2 + ], + [ + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 2 + ], + [ + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 2, + 1, + 2, + 0, + 0, + 1, + 0, + 2, + 2, + 2, + 2 + ], + [ + 0, + 2, + 0, + 1, + 0, + 0, + 1, + 0, + 2, + 0, + 0, + 2 + ], + [ + 0, + 2, + 1, + 1, + 0, + 0, + 1, + 0, + 2, + 0, + 0, + 2 + ], + [ + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2 + ] + ], + "rule_severities": { + "bus_definition_conflict": "error", + "bus_entry_needed": "error", + "bus_label_syntax": "error", + "bus_to_bus_conflict": "error", + "bus_to_net_conflict": "error", + "different_unit_footprint": "error", + "different_unit_net": "error", + "duplicate_reference": "error", + "duplicate_sheet_names": "error", + "extra_units": "error", + "global_label_dangling": "warning", + "hier_label_mismatch": "error", + "label_dangling": "error", + "lib_symbol_issues": "warning", + "multiple_net_names": "warning", + "net_not_bus_member": "warning", + "no_connect_connected": "warning", + "no_connect_dangling": "warning", + "pin_not_connected": "error", + "pin_not_driven": "error", + "pin_to_pin": "warning", + "power_pin_not_driven": "error", + "similar_labels": "warning", + "unannotated": "error", + "unit_value_mismatch": "error", + "unresolved_variable": "error", + "wire_dangling": "error" + } + }, "libraries": { "pinned_footprint_libs": [], "pinned_symbol_libs": [] @@ -163,14 +368,53 @@ "step": "", "vrml": "" }, - "page_layout_descr_file": "" + "page_layout_descr_file": "${KIPRJMOD}/../../data/rotulo_k6.kicad_wks" }, "schematic": { + "annotate_start_num": 0, + "drawing": { + "default_line_thickness": 6.0, + "default_text_size": 50.0, + "field_names": [], + "intersheets_ref_own_page": false, + "intersheets_ref_prefix": "", + "intersheets_ref_short": false, + "intersheets_ref_show": false, + "intersheets_ref_suffix": "", + "junction_size_choice": 3, + "label_size_ratio": 0.375, + "pin_symbol_size": 25.0, + "text_offset_ratio": 0.15 + }, "legacy_lib_dir": "", - "legacy_lib_list": [] + "legacy_lib_list": [], + "meta": { + "version": 1 + }, + "net_format_name": "", + "ngspice": { + "fix_include_paths": true, + "fix_passive_vals": false, + "meta": { + "version": 0 + }, + "model_mode": 0, + "workbook_filename": "" + }, + "page_layout_descr_file": "${KIPRJMOD}/../../data/rotulo_sch_k6.kicad_wks", + "plot_directory": "", + "spice_adjust_passive_values": false, + "spice_external_command": "spice \"%I\"", + "subpart_first_id": 65, + "subpart_id_separator": 0 }, - "sheets": [], + "sheets": [ + [ + "e6521bef-4109-48f7-8b88-4121b0468927", + "" + ] + ], "text_variables": { "text": "Test" } -} \ No newline at end of file +} diff --git a/tests/board_samples/kicad_6/print_err.kicad_pcb b/tests/board_samples/kicad_6/print_err.kicad_pcb new file mode 100644 index 00000000..e69de29b diff --git a/tests/board_samples/kicad_6/test_v5_wks.kicad_pcb b/tests/board_samples/kicad_6/test_v5_wks.kicad_pcb new file mode 120000 index 00000000..8b17c740 --- /dev/null +++ b/tests/board_samples/kicad_6/test_v5_wks.kicad_pcb @@ -0,0 +1 @@ +test_v5.kicad_pcb \ No newline at end of file diff --git a/tests/board_samples/kicad_6/test_v5_wks.kicad_pro b/tests/board_samples/kicad_6/test_v5_wks.kicad_pro new file mode 120000 index 00000000..cd494bc7 --- /dev/null +++ b/tests/board_samples/kicad_6/test_v5_wks.kicad_pro @@ -0,0 +1 @@ +kibom-variant_3_txt.kicad_pro \ No newline at end of file diff --git a/tests/board_samples/kicad_6/test_v5_wks.kicad_sch b/tests/board_samples/kicad_6/test_v5_wks.kicad_sch new file mode 120000 index 00000000..2bf562e7 --- /dev/null +++ b/tests/board_samples/kicad_6/test_v5_wks.kicad_sch @@ -0,0 +1 @@ +test_v5.kicad_sch \ No newline at end of file diff --git a/tests/data/rotulo_k5.kicad_wks b/tests/data/rotulo_k5.kicad_wks new file mode 100644 index 00000000..106015db --- /dev/null +++ b/tests/data/rotulo_k5.kicad_wks @@ -0,0 +1,32 @@ +(page_layout + (setup (textsize 1.5 1.5)(linewidth 0.15)(textlinewidth 0.15) + (left_margin 10)(right_margin 10)(top_margin 10)(bottom_margin 10)) + (rect (name rect1:Rect) (start 110 34) (end 2 2)) + (rect (name rect2:Rect) (start 0 0 ltcorner) (end 0 0) (repeat 2) (incrx 2) (incry 2)) + (line (name segm1:Line) (start 50 2 ltcorner) (end 50 0 ltcorner) (repeat 30) (incrx 50)) + (tbtext 1 (name text1:Text) (pos 25 1 ltcorner) (font (size 1.3 1.3)) (repeat 100) (incrx 50)) + (line (name segm2:Line) (start 50 2 lbcorner) (end 50 0 lbcorner) (repeat 30) (incrx 50)) + (tbtext 1 (name text2:Text) (pos 25 1 lbcorner) (font (size 1.3 1.3)) (repeat 100) (incrx 50)) + (line (name segm3:Line) (start 0 50 ltcorner) (end 2 50 ltcorner) (repeat 30) (incry 50)) + (tbtext A (name text3:Text) (pos 1 25 ltcorner) (font (size 1.3 1.3)) (justify center) (repeat 100) (incry 50)) + (line (name segm4:Line) (start 0 50 rtcorner) (end 2 50 rtcorner) (repeat 30) (incry 50)) + (tbtext A (name text4:Text) (pos 1 25 rtcorner) (font (size 1.3 1.3)) (justify center) (repeat 100) (incry 50)) + (tbtext "Date: %D" (name text5:Text) (pos 87 6.9)) + (line (name segm5:Line) (start 110 5.5) (end 2 5.5)) + (line (name segm6:Line) (start 110 8.5) (end 2 8.5)) + (tbtext "Rev: %R" (name text6:Text) (pos 87.00020000000001 3.900199999999984) (font bold)) + (tbtext "Size: %Z" (name text7:Text) (pos 109 6.9)) + (tbtext "Id: %S/%N" (name text8:Text) (pos 109.0002 4.100199999999973)) + (line (name segm7:Line) (start 110 12.5) (end 2 12.5)) + (tbtext "Title: %T" (name text9:Text) (pos 109 10.7) (font (size 2 2) bold italic)) + (tbtext "File: %F" (name text10:Text) (pos 109 14.3)) + (line (name segm8:Line) (start 110 18.5) (end 2 18.5)) + (tbtext "Sheet: %P" (name text11:Text) (pos 109 17)) + (tbtext %Y (name text12:Text) (pos 109 20) (font bold)) + (tbtext %C0 (name text13:Text) (pos 109 23)) + (tbtext %C1 (name text14:Text) (pos 109 26)) + (tbtext %C2 (name text15:Text) (pos 109 29)) + (tbtext %C3 (name text16:Text) (pos 109 32)) + (line (name segm9:Line) (start 90 8.5) (end 90 5.5)) + (line (name segm10:Line) (start 90.00020000000001 8.500199999999978) (end 90.00020000000001 2.000199999999978)) +) diff --git a/tests/data/rotulo_k6.kicad_wks b/tests/data/rotulo_k6.kicad_wks new file mode 100644 index 00000000..1daf4284 --- /dev/null +++ b/tests/data/rotulo_k6.kicad_wks @@ -0,0 +1,40 @@ +(kicad_wks (version 20210606) (generator pl_editor) + (setup (textsize 1.5 1.5)(linewidth 0.15)(textlinewidth 0.15) + (left_margin 10)(right_margin 10)(top_margin 10)(bottom_margin 10)) + (rect (name "") (start 110 34) (end 2 2) (comment "rect around the title block") +) + (rect (name "") (start 0 0 ltcorner) (end 0 0) (repeat 2) (incrx 2) (incry 2)) + (line (name "") (start 50 2 ltcorner) (end 50 0 ltcorner) (repeat 30) (incrx 50)) + (tbtext "1" (name "") (pos 25 1 ltcorner) (font (size 1.3 1.3)) (repeat 100) (incrx 50)) + (line (name "") (start 50 2 lbcorner) (end 50 0 lbcorner) (repeat 30) (incrx 50)) + (tbtext "1" (name "") (pos 25 1 lbcorner) (font (size 1.3 1.3)) (repeat 100) (incrx 50)) + (line (name "") (start 0 50 ltcorner) (end 2 50 ltcorner) (repeat 30) (incry 50)) + (tbtext "A" (name "") (pos 1 25 ltcorner) (font (size 1.3 1.3)) (justify center) (repeat 100) (incry 50)) + (line (name "") (start 0 50 rtcorner) (end 2 50 rtcorner) (repeat 30) (incry 50)) + (tbtext "A" (name "") (pos 1 25 rtcorner) (font (size 1.3 1.3)) (justify center) (repeat 100) (incry 50)) + (tbtext "Date: ${ISSUE_DATE}" (name "") (pos 87 6.9)) + (line (name "") (start 110 5.5) (end 2 5.5)) + (line (name "") (start 110 8.5) (end 2 8.5)) + (tbtext "Rev: ${REVISION}" (name "") (pos 53 6.9002) (font bold)) + (tbtext "Size: ${PAPER}" (name "") (pos 109 6.9) (comment "Paper format name") +) + (tbtext "Id: ${#}/${##}" (name "") (pos 109 3.6002) (comment "Sheet id") +) + (line (name "") (start 110 12.5) (end 2 12.5)) + (tbtext "Title: ${TITLE}" (name "") (pos 109 10.7) (font (size 2 2) bold italic)) + (tbtext "File: ${FILENAME}" (name "") (pos 109 14.3)) + (line (name "") (start 110 18.5) (end 2 18.5)) + (tbtext "Sheet: ${SHEETNAME}" (name "") (pos 109 17)) + (tbtext "${COMPANY}" (name "") (pos 109 20) (font bold) (comment "Company name") +) + (tbtext "${COMMENT1}" (name "") (pos 109 23) (comment "Comment 0") +) + (tbtext "${COMMENT2}" (name "") (pos 109 26) (comment "Comment 1") +) + (tbtext "${COMMENT3}" (name "") (pos 109 29) (comment "Comment 2") +) + (tbtext "${COMMENT4}" (name "") (pos 109 32) (comment "Comment 3") +) + (line (name "") (start 90 8.5) (end 90 5.5)) + (line (name "") (start 53 8.5002) (end 53 2.0002)) +) diff --git a/tests/data/rotulo_sch_k5.kicad_wks b/tests/data/rotulo_sch_k5.kicad_wks new file mode 100644 index 00000000..ee803ef4 --- /dev/null +++ b/tests/data/rotulo_sch_k5.kicad_wks @@ -0,0 +1,32 @@ +(page_layout + (setup (textsize 1.5 1.5)(linewidth 0.15)(textlinewidth 0.15) + (left_margin 10)(right_margin 10)(top_margin 10)(bottom_margin 10)) + (rect (name rect1:Rect) (start 110 34) (end 2 2)) + (rect (name rect2:Rect) (start 0 0 ltcorner) (end 0 0) (repeat 2) (incrx 2) (incry 2)) + (line (name segm1:Line) (start 50 2 ltcorner) (end 50 0 ltcorner) (repeat 30) (incrx 50)) + (tbtext 1 (name text1:Text) (pos 25 1 ltcorner) (font (size 1.3 1.3)) (repeat 100) (incrx 50)) + (line (name segm2:Line) (start 50 2 lbcorner) (end 50 0 lbcorner) (repeat 30) (incrx 50)) + (tbtext 1 (name text2:Text) (pos 25 1 lbcorner) (font (size 1.3 1.3)) (repeat 100) (incrx 50)) + (line (name segm3:Line) (start 0 50 ltcorner) (end 2 50 ltcorner) (repeat 30) (incry 50)) + (tbtext A (name text3:Text) (pos 1 25 ltcorner) (font (size 1.3 1.3)) (justify center) (repeat 100) (incry 50)) + (line (name segm4:Line) (start 0 50 rtcorner) (end 2 50 rtcorner) (repeat 30) (incry 50)) + (tbtext A (name text4:Text) (pos 1 25 rtcorner) (font (size 1.3 1.3)) (justify center) (repeat 100) (incry 50)) + (tbtext "Date: %D" (name text5:Text) (pos 87 6.9)) + (line (name segm5:Line) (start 110 5.5) (end 2 5.5)) + (line (name segm6:Line) (start 110 8.5) (end 2 8.5)) + (tbtext "Rev: %R" (name text6:Text) (pos 87.00020000000001 3.900199999999984) (font bold)) + (tbtext "Size: %Z" (name text7:Text) (pos 109 6.9)) + (tbtext "Id: %S/%N" (name text8:Text) (pos 109.0002 4.100199999999973)) + (line (name segm7:Line) (start 110 12.5) (end 2 12.5)) + (tbtext "Title: %T" (name text9:Text) (pos 109 10.7) (font (size 2 2) bold italic)) + (tbtext "Schematic: %F" (name text10:Text) (pos 109 14.3)) + (line (name segm8:Line) (start 110 18.5) (end 2 18.5)) + (tbtext "Sheet: %P" (name text11:Text) (pos 109 17)) + (tbtext %Y (name text12:Text) (pos 109 20) (font bold)) + (tbtext %C0 (name text13:Text) (pos 109 23)) + (tbtext %C1 (name text14:Text) (pos 109 26)) + (tbtext %C2 (name text15:Text) (pos 109 29)) + (tbtext %C3 (name text16:Text) (pos 109 32)) + (line (name segm9:Line) (start 90 8.5) (end 90 5.5)) + (line (name segm10:Line) (start 90.00020000000001 8.500199999999978) (end 90.00020000000001 2.000199999999978)) +) diff --git a/tests/data/rotulo_sch_k6.kicad_wks b/tests/data/rotulo_sch_k6.kicad_wks new file mode 100644 index 00000000..5ddb7c18 --- /dev/null +++ b/tests/data/rotulo_sch_k6.kicad_wks @@ -0,0 +1,40 @@ +(kicad_wks (version 20210606) (generator pl_editor) + (setup (textsize 1.5 1.5)(linewidth 0.15)(textlinewidth 0.15) + (left_margin 10)(right_margin 10)(top_margin 10)(bottom_margin 10)) + (rect (name "") (start 110 34) (end 2 2) (comment "rect around the title block") +) + (rect (name "") (start 0 0 ltcorner) (end 0 0) (repeat 2) (incrx 2) (incry 2)) + (line (name "") (start 50 2 ltcorner) (end 50 0 ltcorner) (repeat 30) (incrx 50)) + (tbtext "1" (name "") (pos 25 1 ltcorner) (font (size 1.3 1.3)) (repeat 100) (incrx 50)) + (line (name "") (start 50 2 lbcorner) (end 50 0 lbcorner) (repeat 30) (incrx 50)) + (tbtext "1" (name "") (pos 25 1 lbcorner) (font (size 1.3 1.3)) (repeat 100) (incrx 50)) + (line (name "") (start 0 50 ltcorner) (end 2 50 ltcorner) (repeat 30) (incry 50)) + (tbtext "A" (name "") (pos 1 25 ltcorner) (font (size 1.3 1.3)) (justify center) (repeat 100) (incry 50)) + (line (name "") (start 0 50 rtcorner) (end 2 50 rtcorner) (repeat 30) (incry 50)) + (tbtext "A" (name "") (pos 1 25 rtcorner) (font (size 1.3 1.3)) (justify center) (repeat 100) (incry 50)) + (tbtext "Date: ${ISSUE_DATE}" (name "") (pos 87 6.9)) + (line (name "") (start 110 5.5) (end 2 5.5)) + (line (name "") (start 110 8.5) (end 2 8.5)) + (tbtext "Rev: ${REVISION}" (name "") (pos 53 6.9002) (font bold)) + (tbtext "Size: ${PAPER}" (name "") (pos 109 6.9) (comment "Paper format name") +) + (tbtext "Id: ${#}/${##}" (name "") (pos 109 3.6002) (comment "Sheet id") +) + (line (name "") (start 110 12.5) (end 2 12.5)) + (tbtext "Title: ${TITLE}" (name "") (pos 109 10.7) (font (size 2 2) bold italic)) + (tbtext "Schematic: ${FILENAME}" (name "") (pos 109 14.3)) + (line (name "") (start 110 18.5) (end 2 18.5)) + (tbtext "Sheet: ${SHEETNAME}" (name "") (pos 109 17)) + (tbtext "${COMPANY}" (name "") (pos 109 20) (font bold) (comment "Company name") +) + (tbtext "${COMMENT1}" (name "") (pos 109 23) (comment "Comment 0") +) + (tbtext "${COMMENT2}" (name "") (pos 109 26) (comment "Comment 1") +) + (tbtext "${COMMENT3}" (name "") (pos 109 29) (comment "Comment 2") +) + (tbtext "${COMMENT4}" (name "") (pos 109 32) (comment "Comment 3") +) + (line (name "") (start 90 8.5) (end 90 5.5)) + (line (name "") (start 53 8.5002) (end 53 2.0002)) +) diff --git a/tests/reference/5_1_6/kibom-variant_3-F_Fab.pdf b/tests/reference/5_1_6/kibom-variant_3-F_Fab.pdf deleted file mode 100644 index a500cca35c49549517ee235b88794c1bb5fdf67c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9660 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 diff --git a/tests/reference/5_1_6/kibom-variant_3_txt-F_Fab.pdf b/tests/reference/5_1_6/kibom-variant_3_txt-F_Fab.pdf new file mode 100644 index 0000000000000000000000000000000000000000..85f5dfd8c30ea9aa8dc240e8756519766ae01154 GIT binary patch literal 8958 zcmZX41yEeew)Wr_U~q>4g1c)7?iSo#17VN>26qika1HJn+zD>M-Cctw1W4e)IrpA- z-v4*)YWcc*`QBB#)}m3BlxE>zH=}LH2r`I&5Sl2t>S5Wm;Jynk5*%|aYiR9 zZsusx4d4((LXP|?EjSFSrda4$^>V$fMo#$g$54AkbFZ$=-J9&>?Gtd}sl2{Zz1nqP z;e2B&_G0BE7VyL`AMEG#XV1^*>GA#vXnc{=_50{Y?2~Kzq;47;j6AKXmPyr z_|Tp4(~)cYLf7MmsXy2EU2nsletioet$xC|g#H;liPi2qIDBGj`4N7eJz9Pv#W%o2 zapp6&AiVzP5VW~r)D=RZVarT;*6_%5@bfsobKxsbth>^JWDE1e9>SCBC+%|&6knD= zcLUaDsz`?kC*XMj0Jsr-MGP$28 z+wtpn;nkVz`LvG1wFaD#fE0_%tg_X)A-^{vuMF~^HPi;J&f*0rUku`Ass}25Bb#NLil)9qU z@pcKtcSPilRn* z?y7GBaW=MXs}0QdDAGvH8sTuT-WD^e>Z0XkytkNsv= zfO+(YR5yO4+K>)|il$+~HWVB={7QALqs1o68Sg>r`-kK*ma2dXR;9Ule#NzY25Roz zWL4}$EMjK``qE)!^cI>=yB5KrtJw0LWtE*I0%17Gpj)ER8ICx1sQxr;!TW?jM-=4W z9~JZ)_HN&?70Ru{jzke9;1B?unrAJqXgtnj?M$ij>|cAc+ySNq%u%QqIq_@_A8MHQ z+pR2`e0RBN<@Knz8U&I8YVsnEWa&&S$*SWDXhrXnJKi&$LuYX~!}3u}c#;GXrU0e2 z9+zgRyI;rx3h;&TNc6zvJo4tbt|R?d%RvM*wLQPXF2BqoHYRBqI&kgswk(CqBGzEV z78eqCW7nLtup-}t z9Q2WhQd@9yMvX19y-Q@h?%}>c*4>I8Z0){udj#FNlSmBt0tY*d+mCQIvtKz=gsZ>2 z7NF~%_s^56?JY(dFQ4&-0G-Pn61%9Rvb$RztWUD3PK;{rq}YX2xLFN%14e^m&9g^{ z+tuWL#nZt8HRDtw;T^jTaNLuofsYJ+Kp>E)!;|>_oNY(`i?Pm!>Lnxq68MmW9!Of( zc=?4&!Gg&ua(1Wz zMB+?BN9_y?U?ed(_J`XSz2GjucibbD83A-xg~)@?7DFvukR;2(lW4`0T@|TC7@P@e zP^Ypxtit%QT`|eAu0KhWI-2BmW)J0}y=F@_-e5y0QIvS6a83s3f>8~PF%>o8*L*+H zNGOU2fF2{O7GwhxP+5_Axd2lUqGn8NikcN8(~BQk6iJETs-y~?AO;^WP34eTSW&hl zOt8g2DvJLCroYa&wI@~p&g$Iupaglk^`In5)NjJun}EpkaN@>K^Kd4U(hZ@o1(i`| zmna?*NHTC57eFa`>O`Pr1&uTecI;6gF7bR(817WbYk47)ko{~H<=T=>s-)xm_z`N{ zvi3_{@>CbcspDPF;!U3~*aW)G*a*x&!zGwS0=|5wCdAN{Cz(?-xj7O~F0tT11HNLz zu17}3{=!Rzp*NtNmpq&dEVws~L(M=R9G=RS_jV#_k)%d543#Z`MR>mfNT}{npbL^_ zdpFdZLT_<73Pdpx$KwxfK{2NsD^Pf)j!-_Il%csba^EU{qNAOrMJwoY_7*pQ%4upY zG%M$f589kuXc|^mC$4Wc3<#db0jZ+Ha85x*8E1nEJ04C+rZ<{7gXw2Ep#nGu1OS#f zrC+=I31u>f-W|%ch8gP%kl4A5D%pb(3g99KYvD>fQ0L)mD%LQ6=*Mrwm-&Loz%d2+ zpCy3BtLRlz(JYRURqDRXH$Y(E4#oj(SU6pXePPrh@4Sz#ZbbZ$wT+8h%W3(1XCtL! zZyzf_L9oGZmVqGnL&yYWBHAH5yZZ97p5ohWG@`kO*QxvgA|FYBE(iOUc)rpbztJu` z?1#ETxA!j_2bshbaPb7#th z_nZV!PK?J35>*18Ox zO$FLwM+w>I0zUT+;|6}BP#H>{8&Z`S@f;HX!6%gvu!W{Z-WFAM2d=eP691H<{5gi- zuZ7xxwH$`XY@9;-8h+LQj*7!7h!;JitTVRdl1D)fauHWjtP!H898*gf#F>w3{PC`Y zFD@kQPBY9oP)e|vdT{v1Mh1ShT?q)^+)kyoZN%4TM&2+XRsGz#FqRV zUH1Wmq}$@J)7c}yj+eTY>L0Jrek2-m!oKhPp0!&CUWnU}e^bWzd=gV*FP4KGXX zV;iCGeMD#8tjuhj<`%glbMCjy zJMX-EW(w3}UY~|KxA_m!#m#T>ainuhUmG}qYg}FGonR8ILhwk9XK@l@TgC?vq%w2$ z%;@uGq=z9f^mgScnw><0jKp*4=`;?R=$~~JdvnU8hR}T~IjLq3`n8Gf!_(e6s<)(d zUEWFl02!CR(iB}t7BSzCgw?XlB=n(b&*H^W>MSQFw z%FZQ>iB;}?;PnkeyAb6qx$EltF=4G!$=hY?zrT1ITQ3TW^?E;4!N9-IdNbuS40XU1 z%EdNM#`)Ng-z=X%Dey!X5_>+-TlW=YQ`N10g8 z(IB`g)(YX4&|*Ki(>?1HH@dWd9qNOH$IRXufoqEnG8u=;4)%PxZtl69P=BSf`WZR2 z5aK8%kel!15*dZ2JZFFf&^irr#m0|P1T-j{#pyQb@HH!LSE$?G&JVlMSDTLagTn~p z&nBG@1_LXn0^9}?U0F#tJyBs&%!J6C_IVKKzfc6V;@m>)thPcB^Mme?5uiqQ*Mj6S zoy4Et!|L{JM579%*0U3F*@NKICMy@Sd+Y+sc2&yIF4H`13U>L5OjeDAZ4Bw>Q|DJ_ zhv7)jasjRlxlLJ!aO@0y5}&?fHg8x=?zIM9Z262<5)S(8jS}-A2v+`ha8ii)nLLJ4 zN0DKk>!@(t0A({;d%EFm2484zH=Nr!eK6@1PDdCntlNSZwq|P$U_@;&B$Xv`)R5dw4uKeYAe?8z|abaQaxV&p<~UpMsa6` zP1I_M_U)$?kL#yhRc2}p%;xIT!3yct?NV;EAs_R$xX2k9sS~bTBa>a(rHmTMcf9Ic z1c692yd3TatC_@Prx>ng`8#b$2W+isjp0UgdV7!($0w$2pm3b~sHNBV|4yPHE?e4HZ2Q7N!WO3JR08Kk}`{O-F={yRC9>s7Ub-Da%*ZDgS^bVfPn~PR5v7~En5*m@4{oz(Ncm)8xCGeI+aLrh`9Og+* zcCfb+O#PQS6$GWEsW;h@71>zNY%t8dxO)}rWZlVp5Q3CO==JQupiXJP#9`P-E)OMk9LSF!VhM7Meq9m`w^-DlZ>pYaMyHbkQuk)jDa9=1ZVt7P&cpN zd6aOo6miGcF-em>A&M^P`LWd!&_VYjEDYtUgb+IX7A0?4WESf;-B3^}G(b^`y1bb% zy7n;?y(|&~c?!34)uI={N;TbxYt|^*rBc{@-lh9u{ya(~{*8_3fCoC`hH1U^tkFAB z^1Ge`xVb$o!t_Z8X9nlDPV;Zg)$~s(S$t+RVy~yne4-E+6;7drS49LN`V7Topj### ziW$6DF)R2rB6(>1PV95mz880rZcC3M$E(}~yFJ5KsS_B@lI!imlL3QPSbC0YL|?d{PXe zfSpz)Lt1Qgfm^m7VqTw<$D;#RtFdnhyV$?PExEand_c-lAZ{ea`y2!JJ(N_p7|nyY z8y8w*ng399>|##@pH7f(PmEp#T$NQ`UgEDCCTQ2BhWXCJ81I>j|3iMuKygTEN9?<= z%Pdn?mH84-f^9Q37Ouf<6MEh!t%FsI$b02_jdS|gWJcG`YN&?T=5RJ$>^_t4%}SK3 zP&0=#vTScYFZh)})IF@i1cZ#$`m;h~+!gIcZ-r9GTq6*Nf@cp*s!>C_3 zvKL3+6(LI><@D3>MXjv!7YN(KXvqxtF{5w4gG3#fZrO#DS`{bc))4uGkSzT$Kef-z zOcM3h<7H&Q-z}9|@V-f_A6LdEC$(5_&d6fysxIhb@nKaY#Sg|AEQFcYnM z0i6$U!?~8aLVr05aR4DeRZAUO@HCFUAo-*YRyyI&MpT4jjEXxi4^%bW?iZVEli!@q z_JyvX(xbC7#?W_L&X`K&wj`x^x2)h}tZrni0B^=f%$TNk5t~D>TX-rl2nJfGute?9 zs8BjvRXdL<@v4|imi(Jqc;WT=V&qRxn~Z057<=A38j;rdbhuD$I5!G##>}i=)M*A6 zYfn4`9+C#QO)nlZH6!t7Aq6J7zm?l`P4M{&UtMbNaT74fJl6F^igYh)R9d?<=k9gQ zWF^&g6xDHBkG0i45p<(tevOOjTDR}r{uOW5Q}0o>dvN$^ z!Q4tvOtk%;Q1B=b&5X0OuFEBMrgy1zyNm;Bx*P6#Ng5MEi(yuFocCl*g>4$MgUq&J ziA+tYg9rc_bJBGH2K!I2y8l5&{E)YKXHRq{O3D-u0y;yhQU}?&JXl-qyFHRm?l!MG zuRZlcOgbeFUvZbH>{($bLDnDM+O6^yO9`qymr4UbPpnpIM(%_C%4^J$>Ll4PIHHH2 z2`EiYcnELArB@qM^a>Wp*SI4?9Joo!Q&lR#qQ^z5p-NthUnUIrQY`~ZF4LOs_bImZ zkL0@uJ~-h2c!h=Yoes;WcU>!;>Xu1~V&(|&X4mHwX#tJAbj6C5yZyRdC9DT8*i#bV zk`7EWNAf`#ZS%8fp@N&eoeyeytXiSxL%&nYXtNy}8jr{2<-%kRT@#{2tL5V=ZF-7QC5|Hsvt#FCO$pH$%Hovx@ zwPPc+cgnYXAEQ-)*WsioX?MVA6Y*XtNlyY?5gqj+%KPK+>ogl~hYiOmYL+Z1&(lH| z>2CwC;;*@~rM}Oif2WPjVc8`vJ_o}a{;qRiMS2YeHL;~G>x%NOSG zyD^B%*RgF{@eCqoDq&N<8+BmLZru(ldYvdBl-j_R-Jfw;@tJyC`wgkNM4vbAqfO`P z04<$4me7^}&-)_OD?#Hv=w)uWe>EHo~yyL;Dd*U7tv@3o7rz2%x*S=i!o2jy`gR zUs%#RCS76!=NJrx5~=<7(e8bLiQ*{(zI;5$>?|Q)9R|; z9+c#JwAG1PhzW0Xib`{3`p|+$@F>@WjM{`nu@Psm3Ux%#*Bf1 z&B1|#-{_aLNT5mV6n{nXI6KV1lO2~@_6{MqhMs2P#_P1V+&^e7#uFJTtEb6heyuWg(yk}iJNCPn3!CxR9zE^xj8u9kw)6qw-M3E8%WIuXk zAU{dY+R&kpMms3Z#W82rd`l3vEJvbGgR=D%;zc|mWr2EF)&VcI%BUK7y`_Kv)lwa|Rvq(^a(5%M zyL8Twh&IpU8k4UsBb6AszxhMBg}@fpy}qKrdPKUFNPnKr|mx?c0itVI-*fE9;B$5qR5oN4V|nF4cdQXYSz zuHAQ~7J@x85rZhh)M&jLzu%ecWc?cTpfy(HAft%-_-oyt9%F!paU+uf5=*X=v`m!N zK!P3jikPg7mZ~;dNx?LW-46PCr(eoS(t>C-k8M!!I(u?=CJqQ2jUWXpP7{MeM8s5a ze$07u1xS{_C+DTYZO$ylC2$iI-_`f?-z)~%eND+h34mbU`Xcs=#Ls_!Bt>jB<7HEd z_tXY_K5+_!M9F-~-sFB77V%N+G%~?H`coO^?-GL};@q6{n-bgEV7pR;#_yG3lrXlI zq5x~(8cz0|S47`2!y##WvBLoi!Y=Be%1(`uUm8BS0{@*bC1ujvkcbH6N5DkrWUI|h zJhr?Lk_vS*M6o3T66m8RLK%|Wo*!u0AE63u;^wcyLrX(IEX*F+9Mu#!t8ARQ{S)KU-7l{PdLc|3|nuo2}UT$%OvpBO5GcYIE{W#=%f z8EEKuH8qYA9B+e+Uuh5fo8T2K6Hy_;Q{zxa*F(koKbB8Cb}(pettk5vVrMJdnGR)+ zyAqZl*=^UV22Z3=Am3-_QlN<0(+A6wVn^`_DHXQ$n4tIHz7Iyy^2em3I=v(`en0qN z3%pbvJdu&TkVZ};V$A%Ymj^ws86Qnq%XikOlC|ePgmd%dW^_%B65!!&n##S^Y)^>Z zPT`US)@zll+8~2}5G%OHSfY>L*$2Zw$v#k^+gy7zB0P0wP(+FIB&n+axhd@}tmwEJ zYjfKiGuql?t3|$sGFYo-#i4@DOZ^ksSPiG&6#>O1sGf)z3^Ip=uLg-=0{TMxp-k8! zvf19;_n!3vC$uVY&|CLb_QLL*A3@j+-0Lg0A0XDBg_D1syrF&9iGE|3(TPbDUv2O3 zo?+SeS3-CkT`$GTm{%*87v1E!N{#~iFV-~)dw6lVyc;Tu5a zL{uMykrb1{YYH5$tj+LZ@DL+OI=o08F(mImzD9hnE`_ZqH3oCQiDM^fCod|VMEstM zOqxFY4)AEAMHN)6kxE#PA6U!A@A1_q;@qlt8Y#tq0mI!Ay*X1voDS#Dm>m4UmF`8Z z3VnBEaFzf^H==5Y9YsoD5=PFIMc?6(hX12;yk=k!?5PBdz~Qf%cn%YU-Q3^i&mHF! zsx0;o1JSDutQrFpKRZCxk*96QV`Q)0=Qq|K~cSsQm+st9^bi- zzu8R1!fsmq&lf9P9AVV~V0yP|)!g;?O_N>bY19gObvDRC{KCSj*m0gptuLd^jly_u zL|AKTW1ANrB6=K}=hbx8-K zL6`_17~=!aXq589Y>NrSbw)8x!Yn2}Euwd6wR?M9z0I190Itby>}hq1<4IvgMqq~S zy4~><_d^i-k!UY^Ae9v(UuvdM+>b^=omLVQwMkMH{6+BlTChUE{YA`4_xDdJiW?ZW z%P8B)fpJTs$kx{gA8)@$o;i`yR)BWlHp)N4iNSOF1>HtOJxR~PdTNS5>OzWTNdn)% z@^Obe65{B@qALa0#Mc6kHHpo94+RSqV4u>`zzUP<+wMu-Y(I8Qj5HT>XD4zFrQmNv z4IiuK#GMtZ7T}N#+|*v16nyn5p$@|AM3*#6WM2`gEvlxX#x8vb_6w%72fF4&Ra`dx ziFWq5*OIMOW3-+0p^>eD%LI z1WJ|`wx;4>C`kVqVh8babFlLB3-IxBgLnjZSULH4cmy~=hJW3a06RdQFS~$ViW2^= zK#*|;yE^_$#J@TIh5lD+^=CPpO&weuUpSk4{1=u3L7ZJJ|GScSJ|$`CW@~P#CL{g= z{;e6CnxzZa)!E$A1@vMcwSVdPqQQ&ZUM%vzdb+&aWmB-VaCz3}#T07)$nN^0_P+@5 z{)>RBGuXn_{JE5Z-rUsI84TiJ<=|yy2hrO=AdW7AY|qAiMy;Jq9c^sQU0A`+)(i}P zF_L&Lw1C)x9VA~IMK3AH$p_mR6|GK0#&wr-68Rc(`~#R-pf2{M`KfpucuO4*y`BJkQF#w0~h7{Lfzd zzZg3^$8#|LUyPrF_t~=l5BALR|HF8nBjlfR5NA_cdrRlPoS|;(Y56Sjiyzd$U3=7#I{Bg3U|whQ`U%7F$%5hD*i5(aP1Dh7Wk8 zMZ+a$WAAF=41C&ubhVJNFmp1upb;0xc5!vK_~?M`xv-yuB}p_l+h4R((!zCs>`UuN z+h9~*Uf%gxttsW5X!?zlg#`qT=`@M&qyd>8b?UJzPXF@Z(l?F#8Hep_wWaoz?J4^{ z-P`O(k8aU8m&;U_qm|RFjJFLXlT67btTy!zc@I|WWl5V!hkqYA1`?ATve*KyW>{TsA!dJuTU zXeZtvo20^s0p^47W-<__2{W_lZ)B73ZkV%IW^0?khJ`tBYph}?Rqdz}8SQZ_$atZ; zybS}0p~o_d8I{FK;cErX3ROj3+)&+<^nrks$%o0fj8{@Aa1$Y~9~I~+?AmOFpL>~R z3|pdDS<_WvuLzBK@*#>P=8}e9)2MAJccXW!Nl!SG9*8u)cNaU2O8?AMAye$I_6k11tdMQuWs zJN!cPkUm`$`9hA0dxq#$)-YWuF=H0$alE-*y+DRnP&%c0Y)mSIf+hSm)oeKXzRP0& zn4@3+Y=;PgN&aoJ85xhDS7dsniJ3DALc$~|^otd7GEtwR0Fzx-M$<1MjH!(32u&Vd z5{fChU*_O8$tdTal21u2Nap!pREnW}{7^c$lsqReqGOfTlde$8=)6?uJ0UzjAG}Kt zH_~XE)Td|EJ_FS^I%#+x4z>R=0HT1n0-v6sto1qLSq2f0bBn4x-8rNAaXq7RGH%a? zuHE_{^X4NK5Jlt95b&o%Z@WDCliG#)?EIQ0cIF+nsx{R5QQNTd+X9OQ&MfCAyP!c} z=O!2+ifjDjCf(zXBvlGb<|_Eb^_%DLihW8qRb5e8unzdcxqc8&rJCss|A7z#-8%;tXYt2TLLn@ zF3V9e5wG!Krf4^*q4Qt5%~tyx5PN~aB6KQK;gR}_2>#Pze}1|_d5G7_JMcj|p$``i zNiLD z91iPAv=_C|w?hdjP$C@G5ffFXumn-`Yhxs&E4Zn_Q+VIHReFY*?UTVP++&H^^m?)e z^pBk#3O8-v5QW$OcN<$TiF&LbP(moValq0qSfn?~?9IPwVAEK&6sTuWzWTz=ZVBn=uRss9aHem)dr}QcWN>%-e zDH37Hvx714rIdt&FxQ}bDO;h~$|*FjbW>?wHGBac!2UhR1|HAA1TDBUANu-E@q=%}AVHrsf z4u7faJ!R=ShQ1{gYY!5lj}Dq{E=vt2#{E!YQnI)1MKPqZwc*)Dg#3;*W7z4wRe$CndOigx`@mvFGBUs zJ`#Z4jj9`H&%zr_G*aG)^!kdo;Y~fJEzT@IUE(}BC9f}_El?#IRD{spggO6^ zfm-=|8A`!JBs*Q6A{cqUDYfj*NhL66pUA!xisSL*g^noUias%Uv*8pg2_$6JBu!9m zMDW3!6d(7^*$dS|qpA+~ikYYrA=a6w*}Y)fCY}j+Cu10oqN2d43~|0t22oXOo=!z$ z9G|>H1;h3{`iX-Tac?ClM?{hlD|gCff_+862CB~3pe#IR%2)FJcjp_jms(o9&bY|e zM)|lw1@+HFk?eb&b|a76SlAgO5v;pjj+eGYlkk zLSXgJT%RaOD^6@IzB`wIfn*<*l?oa6!tX63>td6+|W_ zV39rz5aWExCd)my#qRT%gbd`_Glx`_voFoHNnz~SeJVAp*`XiH%woF4pMal|8-G4Y zWuF-=eyYi4G;T&fHk}V)@myz55{Ffq7h0LAc&ng>WC}!mEU9M=VLH;(6jQF}&hSV{ zRCN~p+NWL}c-(xMQ*IwDTUk@4AHKrpzk@mr0qH5MXxuNP`;!s{6qGY{Ia`XHq8 zYV%(G2I28$Gi5yn%t`Jl0y4+qU!e)U|d3I?0Olh5RPu6 z_iL5vl$pT=@5kxyAckSKs${9uB3!$aKPk5#vfYxLNg{cKaG?Q}2c`sTdGg^tDiWLWo{!)qzcB9o=W=$7vdm6NL zwr1fz({8#PUGX{@&jRsmmMt*b*+Z*#QlxY#he7sljFQ1DSNPH^HXBHdOS!f(rlQ;5 z4LBy^H!G%DK|O0V6NbLd5A(A>iNfQvFLc@YCopRQbQNq6dZE+3Qx4jP#7XwqlEgiq zbtbYyD^gq*hy}t3U-^t(-P5=Ayb7>rZ+3Z;{c}T;F<&4D{nZM)CZ=24&|ea&luA9( zCjD}9QK;&CoecJGNQJdU7Bg2K*Hfh@OwlCTm1*YuMjGTw@8WHr>Ie+JBbG$X(Bgac zIp&UP8domf z`cipM>D>O{@Jy=oD#Sou%bITYS0=D_5g~zav?l068*_XqeeVr|%e&zj#UbY~sVi z>)Wmh%RLT*IBW;HQdNz;S!^l3M6=ms)!p=tK`k++1XYKHAI%yT24bAf(=o)tjGNJ- zem@F{osvgHyi~KbI^0fpC_ki`h~0zt2r6?D=Z8f6s`RKZG-IVKVP9<}wQ#T7zwLc^ zDHM5=a=w=jwaUq9LzCHK4a*lrqcCkLq3&YNo zT_=OY5C8j1Kj)xt6Y^)m*2yCV)TLumvkcAxZqJx1IDyfXk#k!#=2KfVWM`D-BbI*n z^(Req=h~KViRqIKWu-Q>;b3tr2yac=K&EgikA4s+-lF_OADGpOec=VqVn56kkhXD6v5pGW?2dq|j`Vl<7=5r`|m)=*E|D4fBV^xmX9o)(TR z<_Ve+OmaSyA+LB-W2&GdfNWR8eo=nPp~$ntESpIysI!caB(WL6K|R38h2g3dcJv&l zkX9~FchFGSUT)ai#&4ibH%NW8KDXDX*5TjS{2NTd>j}ftte~~Q5jQJ{8^l!4At-ly zHv6}fgv*$90+%pnq*xFvMy0t-_cZwMnQ-8Cn4(8Cr4>V%>6*-&aaRr~t>tKY1^Cs8r26G4UCCC!Qg9rn3$ z0mU^}E>_uXPQo%S9PYCXJ|>)l!X&-PLYjLzfx~KDxB`VIN@)VI?4wm~IUb_=z2kjyliNv(_9DR9dqT=3 z^u8tb23{SK(9-7kscx8(SF`*Vm3ecugvLk|+SzxpM0U*)3ks}Z&U3TF>F1l7*`lMLma?}*Vd6EVN3X+4j6^)V^K0h=TRO?yA=rCCP z7-ivr5N+kkK7@hH*d)%XkegYAOkbTE{MPa?Qalsq zoGD<);yG7*g0N>!C?m_hV<>5JQY~!f(xg|fKL*Tkn+-z7@3{hOVR{P^-L-$B^Ghq9 zMa;BVMgB@~bBqA=6AKT9xqfjQ zmN9!oAcs%Y_j*AW*@0n#4&>U+=C5wm1xJ`>i}Re`H3j>F%M4H8f+`E=PS=0PZ}~32qi(88?B-gq z9x&!v<^j551I)1|pBrI~s)OY#6?8C`DotAr4z2dgm}9)#F@hXf zou(XDWLmNax7`Vqs}f85jag+KSj(lFWU}0&DL+IhjETcA?=iD^)>GPDNNkIzlfgV_ zg?!3l$2`0`5;9pwv08CA&ZN#HN?pR52vv#uWOn6%Bz`OL65n-u=UrHmgO_bN!b4uT zQBgvIKZ`wP%3YduFW0y3&E;Z2MRQz~lw`s z??);BUi?xc=49jAq7~8Fbeo~!apA#e@9A4BCSirY1WhODvdOWGn!+4Rgt}3EGIJ)} zS>+2HmZ`QGmV;HZ&IqykbeS6_Y@3#*@Qo3OZM&D;L8two*oM~v!7Gu{1xKwY=VYmJ zDJ>_-OndgM>_V9|y7_6E`Dr!h3JyXC165lM`FBUJA#TH{Gsb;dc^SG6nqSkTS6Yi# z*lD?-S_W#f0?SF;+3c@mbDPgdw&jtr1eEuRaTjsE^a?GWK-6(usX9yy!;72vl^W7Z z<0~#TM|3!VE>;SomRpp09NRj*0hz5Yk@Bn8jHTXV(3HZMc&!i~aixPOSfk2fnN+Sk zSYEj;;RL zpAlI8Px1+OYFjbZsmi?KJ0%Mt=JgucH}gT=FE9!-zkhDX`5ZW1Y+sl3YMgG|*IIK& z#a}+wa*&}MnbNQ2#a;9+pCqwO-L#p-&?^EaT3o$hKFoK_L(+yRw|qrAH)?&W#oox+ zVlc#d8Bu3l4630a3B?`Qb*%fN9xdrWGPRPX!2VNa*=AyqBkgRY~(qb*6Asr2PQmKiwtS71x}^AX5P&{KmQrM$#I<;wW+9B zJSV9Y2gb1@c;!b@&jhX)L!6#z<{EsfOr7MeH+s^;Oj7B44(+%u-e;S#t7C1DF zWrnA1{}&|-NY>SNmf><4%%)`q+cG`xXu+Jt22vL@-B z6n@1MMIy4W%`qNtdn|ifOljPxg}f?+bf~Hc7h1a|SQpJn(M2pM&lh?t+Bc;UNT;z) z+|wP)HVnI}5lBswM4a7Swg^}Bksc(Iv>7vWZKo=1nUAN+WOl=ZVK>kpo(V-=ry7=hG=bK_OvrIK((41Oe+ zEeAta83zrpn0}iWLt)v0W?`%m*4PBc3yiF5DY~eWE^PhcD<`P%mA~e7PvUO+OG>` zkx#!xEp|65HvBo|@#-x0!a3eET2&`$u}YS)YT3E+&+wTSz7_XGs`psPhR&j@(nnzs z=ciq<=hr^fkV4>kXRToos2|YkrWX{|c$L#kU5xtXvt3wINj#<>KqPDn)E2Kmpz|$>l#{zOsYc%11C$ zULBoD1a#X!v8)(kDZ(82Hrt&euf^txn@+US0yBqew}Q?jN8;#U=8lMdg9BBPER_cb z=(E5UTV|i~G%l^?yL)j^ssWbMlvdV!#dN+wu{(e1j|td|=z<~|tCtRIaqr_upl3$q z^8dEjlu%aOENQwuL93}aG&p&n$=><@rcuZbTCe-@!lYde0;rC9QdzM#gtfoe0nf^- zlai5>1x}DXr*W@UnB=Gl&nK{(me+)8k%`E$!hV@^< zA6jXjl9CHT=*Gs=o_U28*y(Xh@;KND)TFJ|%p;6+vx;Kwx^I{v(XounZjs95%sHxI|*^yjVR|q2)VYXCJ zFf4B)o&FD9pJf8j7_%UfsEs1h3|YD=bwW4JCE)H6dtKXc_QX-val2$&Zdbg@=0&4C zMa@jurBb21d=g7u^75)J&On?K0$_TQh85}=t-U}R`&q;M9@HAA7gmgJ_v4(UCkrc1 z(T9r24Lw#p4taQ=Jwdqvk+M_B-4sDb{a9*G=#9Hr10-Kej(SvUon3$WGTOcktcO?s z+OS0^cXUvbE$W<9;YaY73_mlSm;)Z-P})Tg^~c^lx7cXDSZs4KeKD+qtMXyrSZo;o%@@6K{}d zkrk6$u(^Flzbjafa!LJ?9zI8Jk*NCMMvycT#=?955zRT{0j1K;%rAs(ER8AK%2E=R zk@OcM*@MNfMwvejq}f*`Gniyiaizn-YVcULYg`{=91EJ22vPbDDLs$R{QFA#S&JH#9xPg<|i*WPh8^QFel(K)(nl4+;GhLqy{yE$M45q79^(xHd%n=NCP zkjpQ=qWj5K-xT9^76(_GgjRXJ?x!}Mxw^7q|2KX3c1u*Z;M?W9<<`rS7?zBw?wkO53q>UKV12* z&k9qCEM=QOv{k|I|uFbk*<3L4&#<4c21NVr_q+=hozBV zkf)fZmfz*W*jtaq(Z^r6A?oBE$BuvDPM94hVUKoB7+vT7+Y;T5JIL1(tUC*R@Xbb3 z$8AnvUm%7XwtdTK7#O$+{WtlAFoMpN?Th@k;v!!_`F5;*c83xt76&4VNB73}Yc<~8 zf9tL4^n8stUf#_bp09eff1_}k_1kF*BsIDS4#0A~zG>h7)*HWk)y{r{2V6~Vdn(lE z;m_}Q>~yVd^IQkvO+QL3ROHeSYdl;n-S>JbK!EKcO0O=hbH%6h__;COW8~`YhaH88 z+fa?mXn)<&Rz)8~8sq_KRacYx6xGyg$8GgBTOXB>0Z(TumdJ~LOGH!mi636%`_zs0 z<{airxy+n8e9L`Rb>a40!n^aT;&q_v;G>Mg{Xu6V>9PL{Acn+^)wA799GtgH ztf6Wgqb9Rmzxhi zRG02Y7xA9xb=@?dAM>sjN&pC~Flk&p?XjX4=lYWWPU{*;>?qJ3+WW;h!hQex>OQ^~ zMWE}BPoQ;SByNNU%sHN6e!3f@3g;21YAhLnSI+73nL^qbimVo6!kQ-GIB$*EUcTQa zuBqS;_?l(#>_ZfgW23V`)?Ir&bNI&avA~o0juW2*l-G7!b`lR=L(y6BZx1r=b2%Wl ztW0;ZNYcgOEm0pJBTk!ue~`0}ju{={ZIdx~b;{u`GyGYc`0BLO!09<-&8U92Xpxi8 z-VE_!_f(Ls5$7L4pC?9V(m*C`?J9LjJSP8DrNtsnvUNE3B)TOF$A!MGn!f_gm(V>p z`OBCrWV3>0b|#pLEI!GZjm2OdLW;whcrtG+W#)#+#u?2vf5Z@<@_5TweF1mhUq3dX zZC-zy-kDvF+SdP<{}n@neS0`6l~qwgyYCTW8T?DMM|+BQOF)IrOXG^TSNrM zw#ONY>hxwKk}QIUf%D-WB)+6h(1b36_lb|vl&^pdk>8L2K+P_$rN?{!R7WB6M3D}k z667S}Q#T!+XVB7jvO4DYJ9lNg7hlP1R|&^g;H-4G_+zDzC-CZ{4b2+akIsxiI z>Qh}xJds)@hG0xSmOzyp{yxQeX;G6Y&xzJ}byl=3GIJyntjl8y6?=-2>dCx4eq1yD zzj0rg=bSY)Xju;w5J#iXFb*l=J$CR{|x;K6aJzbTw&yMtQ)}Ma-F%h{qf(G z63St{xRdXkTf4Mume0#(f#^cj}Ap5)s zVE!V$yYrWrD8vd}uAt^I2MK%@P+Hq*{$%&#B4%shaKIYXPtc5G=XvV+x5A*_xcqP+ z3lOxx@wfBLy7@5SlGyX4QD#vH7&WO2o5hZ)pU~Q;ZN*)m!msq&O#GhSxUEw8h|66T z0{fHxF}fb}1C+3^x*gaHEF%{qhE{p9Y4}k}w`S|L&hCtFPk;m!_TANMRjmiUqJJ_0 zdKB697&ggA-I@B6CwAc%91@L)y`Xy7+H;!o|6{@RC%ibpcJB0a!+Dwf5`MZTas6iL zhGglrkA(LhW>>C%Dq~FLCbqP_**QFC%W2jrKKPjdkw&^?G$1|KUQn z2cy_oX_mw>{Q9WB^DNW2POl>@UO2W(7D%n|ZR7QB9tJp{$O;)2DO4Gc(j9$!txwM{ z<48{T%}C{U_6yE{e8#_pR%uha!hmZtvDvdUE5%?OboZKmRX>5Z!9m zIRXr2lJ(;AU)~|rNUPHyj%%K>nRTq5^-o3;tMHneLbf$8F7qqW_GWy^HZK@>3wtDH z;h!b)CwKB%XNX4{eru;Xg`@pNx!`lCW2n;SaAp7RpvOn*d?2`FeG(Zq6bIJ5E$sdM zI?brX^k;YXHn?k;@0DIqa+_4(01<&Tr>%^;VZSr@#4#P_3`L5PSpIkq}%k3hzM;hFece zAA}Rbzv8us+uc{z)bM4U#Fx{<=B{VqrV*{6YksBq0wq%6~)R>LEe zZkLLdK+1{PPC2ZL`s~7R)=;9R>(zMk`p@=q=tL}w!Rr7@KIerUuA#;rU~X+{EezTp zJpf9b_XJON3IkH(w)s!uJ-Xl_dkzy5gAI>W`VN1UYi?iwurGyeus%yZHGByNediR|5AO5+~2QVTXS1es}RqeMZNq_+C4@tAeYz58L-ldH2Q} z65??WXGH^-s}4GAvA+S1?48hC`P=ezdCtNAUQ-Uwm1>vuK@Yn{umB-Oq^Vg$qbJRAburwAM$wWiNqTNW8{Hed#IcZK+e+bZlgBz4| zkHA%?Xtpia<=&piijk!yLr+hEbs-NykH?mk8-{yXL02M>a;%DIWDqc&Z;8Kn@E=GY zyd$q@iQk#Ls|sda?u~nSue&rvMz)gxzX-Lfett8MHoYFk3SoQ@~cgiY>j)jMZqrqk5RNQ3r3D@Z>oB&WW+$?-Sh*6r;fu5R3?Pf=)gmfJ72 zD|y^@r)z892u*kTTq2;yv=%xfZKv;qV|W0VOSql0Sb2iWK{M|8{fERgU)VlPOaSjK zEiKv3RPej+|FX#-qN2j9oNTnw4*NK+S2lce|Lc~_0!Y9BTkVGWKM+~haTiI3Z)+j{ zh6ZEc1j?bJq7o1g@H8l`cKQ7&tEo96HU5o*rU|j0>JsEen0!xpoF3mk(hE8>b}_^9 z#wB_EJ}5c@q*uLEuFagEC>Kkvnj^x`3y+}?tOi#ZB>cHJSOhF_JvNhyni90w#4H3c zvrQ0pPFAlpp;@j48;DE6rxH;aQhN66Sx`_=!pDh1;P*!Vy+3*@mfuembLS)3EpU$u z!GH>OK0e&$=H>>{Nr&T)B>JjzMM0|N@b6CxraY{q7vdiUS3k0z`FT+8vg}|>%3-eNg+RJrA|Na@#(+qogMeT_VMvS z^T#E7Ln9B)5cP6aP_p)Fqn+l^&?;4}dK#|=Ucv^aT zx(|3~wu)jt?)E6)kz)D3#mZ48qyA!Z_Ji(s!?&s$20$#T>_bUd35G3>Vk6YC0 z{^I~=#W>3RgOLtOdBsi7q>!GjgV;t>r&Frt#3?0^2FoW-)72k*CW{rP_H}f0hEQVhh%~O(goJ1v6F~aC@4|>9 znNOi0Bh#-pS9E3iZ)C8F|3eXH%YE6Wl^fP0G5SX;8L-q#zsLK_4RN(nwVaaq8g8?n z38W38UMJ`|k^kaV{`<0;GM*FiOJHi#DjvH&N?W(epb5cQCb;6++uMt#Z}F@4qv8dd zxOndV(1%WMHw)>fKVLHQ{v*xmbLnB;OmCv3%Q9SSyZxSOTDTAxV3CzZo2lUpUMo>U zUL07P$B~gX7&v9jz3o&9p4XIrkzA}LiRs8dj^#+E+sVdY6fxUcirhaUY0^p)aX9*! z;u)9kEO6715Lgg*KvW-vc0Q#pK_%|{YhRricp?V-s zC9kDFeXmr-5Z)usp79B~ls=bMQzfb|HUZ2^OH1#G8=hllTN1Y(u^M|_G?#SR66A>t}n^39*C=} zt$c!R_BYT1n^MUTVk8v`Y0gx&iL2TK_`+$W6q3#%puldN{6jQDx#WpnXF9g~pEVi`pUMUa01x%E-ugzCD2k!2m$cq+(F9Emq}m zPqJv3dDIfXF&5$6x!lgyJ0u_O`bTVwSbr!{H@hD+RjLl4ca@7ILQ6}FkLd}`lhG#+ z!k>Qk94@yP;0+EAN~*GfEA=}(kMDr18_p;yh+s3~9Rx}*vWYe~yZ;^ijTjV#mwfh6 zqWR;%LPULkk#b3M03(Ia_1n!6G|g3Z2O}?&d!{E3^uP__bbT8DsaZfjw7UzF$UcqD z7Wd11Pd4A~aTG`Ow%K8^`D1UGE*zZLF0c^#(yT}!E|}JOu9~VI`(Hw&J1@;@O$in> zKXT#O_BTB}oZxIU1CZ1f6moYjzxjB6H2@0D({(>u$x$XM;EKr>cG(0hn0y@Ne2dfT z@lil!+q_OU0guOS+~o_njnmDMqN9mc&RCTk5$FnDR(kr=$F*N4?d}IrmBE1Y5Hjhh z|JyEcU~FkEy7k8Xe1m!aKoA<%1@N6&e;kKlbER>&e_s@_aw_}hX|c@WVupx^GhXq( zSYM7r?`Gr8S`q`T!tf|&fv}gAmHqp!$}mlIeF>l#;ItQq%RbX(n&SrHjV?WbPyPq( zkMF=z7QG-zdi5Y|lt}HP3CRd`1qCt@*X=Qh$E8Bq=-S%agoK3re3~n+JG@8KM|^o& z^(WFeCX?yhX24r09M5oZ(Rp^3zVb@qG@@s}@xQwQw*2$Q4@vreZnRs>`z#_pe$0x# zKb9gboP+KETb5O%(s_HFHd9wESM*uRnhx3auR8jmCr?`g8H?oOFcXfJt z8tXar`z~Lv+lvDX{Q|Ai(x>Vv_`K`(_Xif$#1NToSUh#FIDe0B*CoNmCkoppEGrvomLNV$;d=KKUrI|{5S*fc7MH<_ciFr0NSrwlW(Y3 zM7|_SpMGMbvTB#O?*Ez?8+-lCd78v)F>lwuzrO*t84DBh;%HUEiDS4omDn8m z&hxqT_?LUxsaQQH(Xx4yCN|78>3*lR78KXZhxKad2gzT+4u&h8Pc{^9KIRd#frUsg z0ZSP0aBUSB-*+5l z?_s9N+Kmz)*YrfGk^*svcm-@MTi0?l+w11cCRSH1TZkJ-Z>*J@$k^CWPwW5*&%ZQz z906B<{{V;V?CflJ-AQ`Pk_sgByE!{PIms0F^L~&D-3IPlqolk0u}rgQA65cz5#7I~ zX)v0X5;6^R+@+RU&ug^?u;=hNwMnyC>XRP_lh34%v0l7M(0w1Q3;fRw7+}pnG{ISX za=xeIrgvAz*I2}KELQu!>QKluoW&P0k$?+2KUfqTYw@q2hO+5>@9m}Fvwq`sV&2|U z?sIuK0QzY{tYB73#Y%_2FYFtyjFrZE8qES<>bz|28(U1|1Xc>wwH(X!+Z=x7(0~BU z9p%-ux`u{^z5V`bz~e#B1z?XT5MPo`PtC`t%eCq0=yvC70(O!@j=-g*r9jxJUK9e# zqPA=lU8$80k^TF@`Ecz+ug?*p={9?eAPt{$NFbXlcc{si~Nd27LfcnegL0+T8Ss4gA-YTY2)8etoVd5?R%X6K3U9# z%Q}o2x4O;|dQ8&6Tglvm+3!4QFK#6pAc^UpF?xu+`fG%3=x-$v* z1p(V>7IyYZi=k9{xflgCwJ!gAZ^wLPLcS*LQnf(oud8T)(=>1Q{{%6E&KdcPaCo3z zNDHyP0S8Tg?omT)cSLloS5rf5I&8yJbM0p=#fvG4o9!Y}=Sfmy--%N7*A9C)3BCDJ zAt-wL3*RdauFn7d6>`~(nZ>o*}rZKbZ@bjtH8nNWP$EWGS#Lc-_ZkV8~nQq5TX4nzrES2 z?d@$nBQIp=(oU@4$`!!CO=*q$OJ5s+x)#u~<`ypv8vq0a?pmXOGy_#MJBji|Q}^{| z79NFwsP~yQ=cnb!ZItu92yp8TUqaUyaqr84gS9M z)5pOiM*NS&5nqAk$6Sq73;w@#2NGy&IxiM*F1D9FRzn4n7r6nd4&nUq^XI}Xx<&{l z9?(mYtG-4l!zJh2UXPa;wLq)TtMLaId+Gg$C*J51i*9Ma1Hf`YfdZEgp(qIv7Z*>s zPBZogS}xdhNCdy_j7Gx5qW$Va^gjdw;(r@#yu)|5|NIM@0 z26+RZmC3?8Ko0rcUdV!3J;6b)Ovt$7JCgky^$zm$q`4_l&#~2N$|xV51YK-Wxa;B4 z_1Vr8X+3emAmH=(!H{PAS9kQa*phM50<(abZUUqaD7uF?EouQLf?DZKTN7M+D?>7k z>NbCl@Y`@En6YEW2kr?4K#Boa7#4%$QV6hL#&g(J zp6u0h8x1H*dI0uC670oU$>TF`6C!*td!X~vrB1n@=$pqN|GFdNr0bu_<=yjRkK{z% zm>v+|plK@Wfjg1ExBqNyy**wa-7r7*`T7J2R1{kox(FznJhk9x@5RE^mFMf%uYY4n zmb)J;Agi9_`CZI+`Q6sPP6>bh8n9g)?Ck89m8NrC0Cl!v!^w_h*|PlG_jkErN86oY zd5izt!HhND30i#=x4s3yF|75oHO5C};eo*+A%G3ePz?d<8Q_emR$wn6M}Z0i9r^Eg zK<~-> zz<@-EnW^u$U%p@?SWo!8xQ2=17Zk(R3q)f zoNoS5pdgBH;EQV;NthC}epS>Lux$XG!otJ1a&_|^z6MZH)vG+QK&Jzp#5w%8( zBb-zkZO<1S_8~c`sVi-BP73$~AURWLlii#VP@VvK=dwBcdD@9BJTw&WGzWir!y(NA zVq%?u2fa3j0zXRl-=!~^*X;?W4Z29y)ztx1F`|yP;!8WU1VqXS$=dn#J0Wl+o z+XG^(Zvm+86eY9dO9_c?Hoa<5__y&uU+3>YKlkD8RNdHkm0HaE*P`fetcVl9URj7Q z{=Gfww&G<0WD1>GQvIOKZ?-@h%LifswCt>0CIS0)b9oeBdD5Y8(N}^KcKl0DZ$;m* z>JZU>NloD?UbB#GdMslJxXt}a0y47nloUQ@!;xIEw*mrSGw8;~MoLNwP+tip=mIyg zesIv~e!$y8bhz3raajW&IUxnUv3~)vl0$jATv@|roqq({Uo|ko8twl@v zjqUyh7}?a+6oq-eO#+&p{tM_X`>fUhiP6o%Jd!0?1JJ|(Xe?T{giG9lEM7Ht@4EzA zqxrHIn)>Dktm;O>KIMiJiA1i|5~M?UQYp&gEaj z`4U;Z;`w{_6MrFUeN+$xdAS-O;krEzuqD+HD3B0PoDi(%{C2a&fi_=z}9%z6I)tJ-qz8#fk#itCa1T>E#u25Nohw$O7Che_;%t-U>Z=qT5x zfL+!g)5+3J$ZK^RiMQQ1;PzzY7Bv|ft=X#R%0Fd^K{xYN=JDv{mMGNqAQ#K^&OwkC z6tY#_N_Y>k=m3U)e3-4#5=z;3Y|R^`1pUL-T${tsYN4k~Y7Pz#>;ewFQ5Gcdf4Fj| z83ozN23-P`MP*R}q#pg>qa|$85B2r+Q^$k$eZx8td*e@pgK8p@YZvs2GTm2&GbR7J z%&tyJ;d0B0Lz)1XW;1x>l|!x<;uPqP@sSZq{{u+c18GI}6AeC$!4{AxfJeD>=~6&C zanH+Oap)ZZp-H-JVn~h`7)h~z0yOiiu9Q_omEigBffjRqi=EB{((4KsEP1*mxO&?U zyBH-sD}jvxKruaS%=GRUX!#Iz-7J;e8)lWZZS}U?WTJ?`+=HE?3$nfAk18}JlJez* z&##T&X5a&~HYzT~>8-$#$hd-r09=&!_YG`|c3OK(+;x%Z{%vH2z2yIq zLDJI=dV36QcrCQIpV>){2lZi6gIQAViC|Do`Fi!NjGtN08!}myF*enKB-hapW8Ykj z4>}f$-R}mIc|Jewe#@tvDCno)M-V|LhUF(IF>YIejT^xram&1&Ti+*0rebEIN-0-(^EKCwh&BcwV^;BuHL$z$y%f94cGez zj%1to>^OAm?EW%Zd@aG3*7X+&eiRZ?ItFffAjvHA z5H2=$0Q~pr6@&`4wK>2F0E~eRGe*->GwkzzK2A)R=If(<h8x-7c3!rR=jsYDVWwjp(4JZVedjnd!y6@H{~!)$hT-%! z^vJ*bG#R|DsC8Se>$H42yamBHlUNccuA?JP`Q&)5nEBW80%{-iUH3Iw1cZ`{jS=;^ zv#9T&@{KS1ScOC6Iplg={hew(v0__^nV5p*DlxTlhMv)fDFUMpk!XtY#c3i`6d)|m zA5h+6KKoEE>7?r;y+q8Zk1?sK-`q(PI+x-FBX);(gf zy?ukf9BO8XAF-gAP$0*_Nlb~$!>~NR0}VW(7rRU1g$nxm69>uI*GKXmQKEk}DtEvq zm(S?$vz2E#l=b%+bz6dSXJ=-vkdu?Az1Qg{Upiwh3vzk!o?ZE@XueD!0kB%i znje**8Op57#bV)pK$;Y5+>b({a9>J#9yp?3hqhIG`sZ+B21&k2JI`a$JoPp%s;y|` zrCg{pz%@aWN{AIJ#um?G!~l=7zEpUh=f@{qIkFbIdlRNb4+{)`4i36Ni3Pe{?(Q8e zCj+f)vf^tC+Xk||t&^F5Oe^nc@s&ewasj2bTY`+NH5&Q|9(yKzsJuc*qZw8)%3QhW2Ctc8l>|%O*DwtXP1zm@4(h=8J_z+U)4q=M!Zj7<@XnQ3$;?vfXbng zn8!DNglD}Fjx_W+aZMg>N67gh$97M9qP}{qwZ5b=LGkv36b;#;0f6jOCj&D?CD~1_ ztta*C>ve6dNq*Up1IuOOVd@OJIDqnN6X4&^f8vnOaTLHBk=O-~@Eve2+;nTU~k39}krE6F{+WhX5V2Aa&+~YL=A)RP)odF>;-j zt}YZL;S?9rfN#JYF%^lbLioOC#0m)uyF^Gx*z>?QkvAB0wvfn3BO4Up5l;{qMGvEq z`f*5_QdRF=(H^(hwSlz#ob#t<9-q70LTNOV_o%}16q{`W0xy_DWdOSTvRA%((B@N7 zEiEp->0@3QMo}6gdVS2v6U^e%mJ6z%&G~Iv>OFp}XDzt?350H~4!wX1O+BHuvucj}ce?rG3O`o@&)7U6|o(0U~(_WpLw2S@uJBiBO zHw~LZza)^XNLBytZ>ZYi;#|BK3A`CW=N&XQ02EVOSBL)@9;}E|IuwxH*^FG$fyZ-S zhS*w@j497*wZ)#|;DYpgnseth%4lYQh@;hkZygo!Kv`2 zxj7>vLvH~@G6`NnT_tr-Z zoq3(av`p$KHzs^~+%!2PBr@lGQ>f~r(RKbUQW_d!kO%_@m}sy{!$9z1MyMuA`FKN< z+97azy5oj&VySZ!x*EV+`N(z4rae2J_m^m^J^H$TH6yUKf&7|ZU%%{B4*fr%G-Zpp z6s(Z@4<3Nm2=nvi?ylYUTwRVfeDuo*)X5rbObJTXZdkACbelmRTKJGw#JmJ*ZLG{C z0jCAD8r+j)4`j9mn&G{3=g$0a)6C3F9v$NR6_~^~wiE3$QaMUJ>5TV?mvNNhLf<)q zE*iW=G{-|^$O=Anak-#RE#}PHRlKx3fp=g6g2()tCy;XhNURsE(MJ{_$iqv9-lqcw zb3LCuh#4-HPxz|S!Zlv+%Pj`&=;AEe8U(?Bp`E@7b{+zM-^pG>;CaB2LGK<(a9jaY zab7YL`UaZ&5MjS&=jpY>L{bI@1#W#^W7qgrW!E^+zoZR0iP&gi+Ly$^C1M z&EUsI*RN*MJo6Rt==cn|j5?+&T>U!Q5H1qBKIuc(Z|ZerO6!*6u{Sy#?iFuSI^=xX3&m%e4beEE`DO{P-m!GmnL+i2I@qBB6E zEDdE}b zJ0ASe(}VYs3zEa3*kZ%kX^r(P!S2!7>BbqTI2{*${zqL{8WB&mu-&*}xx-%v5<5CcQzap>8?IlBoD!Vu zuJYI@GWz-=Ahz44N}W582_oji0tGA#`a^@v;~%?fpSqv;ZQbbpy;IROY#1aM z?P$3Ku~R3=Fc=%z2MZeDu0!j}BXS7X+3bT!?#s zOsL@FTa0r_Z@VQhf9m9ky?o7YUb4r?9rxd5`;XfazQ(;w7mNnNtXlXXV+YeSSLb?S z_r@Ki^1N)!GrG<`U=@RLjC{iI(fy$YAE@f)&Gj+x4`3>qhH0 z%?ehZ3Du(2lrW4(SJb(OW+yT5k5TpiB4!~goy39pZ z0cg7ds3~9I;lb<6V$!vEI$$!V{2I+pJev$DjP85LY%PXT_+x^tVc%gAeE2t>gu06MTDm)lYu|FAXxFqA~7+kDGS6Xm|!{A{g%bZ|w8O|xF;(#+wz?ufg$X}TA zQMnyxwPP04zVEKx=WjUP4iylFM+yxB#{b}UZHMFh5Z4loX^<@GTp2p%uRG)xgJAmw z2L(Bl4vFLQrGYNSb#wYo@dI3p8*sTNM|WrW$_nVtG^CCiO5GtUc@7ij;GLWIS<9S!WZA{7@o2W%hiYibLkP99BZX@h;y5K z@spu$cR&#;IF5|R;--PW z{!G}@m2z9Dn-C10>fr5-jEKOMvHq6Pvh(vISY0;&#&dxIfIor|9f#3RPYPZMHES_H zM87a-0im;kK3WZ`1~B6|uhH2PT0WqfAnKBrC7g+8vCmTgHeajb zG^aSr&97hO`a9<=a!Q4BqIrkefgFvj5GK4dD8=wQB2UHyoo2uOXCZ?SfR~yAi33aJG4ewE#5F*u2X$GpA0xzbRHLbmd$SPcB;?Fzae3gYIs zyD+{NJUBoCQwJbjGO)SOBCb`Yt<`K!S#hjzFDmd!Ho9hbR1{k5+A(yw*2ZQ;n~t zZ*8)<329LrP}lxUzjI+z98>P|WLcKugKA#M<93d+i;k!J!L=fTjG4Sg+%JXrt1 zPOUguC*QmDiiq|NNQ2;!2DJ;)+q+`R?zfnjl&4N0!$D(8V#PdN-Qmw(3!oN|%zPR$ zy&HH&Wo}QJ+s`;ht&%*nvVjkVwi#Y0m^|rc*};tudgo=pQl5CJ*gpQ+uRWUjrk@<# z+dPJw_cQVL_iqopv57x)3K2PHz>IdV54(u|YiOM$z&^AN{wl|7s_a<+jX^I9lE%N{ z0xb>5Ig^DZUmO}v%E9V$@^>FFEXHXKydEQ;6Y_M^$y#?{eFHJZip=f>H_YqZ0kRm) zV8a%|W`r6|>3fpX#q>W)YTUXDpVGWvtmIXIqfk0O3#6*2%R~6QmyU&fPLBa#`mr^o zl{z$yPrGc2A27dPPAs`~Uo;(O9DmWDnKdWJW;w~oWH0;rFCOE`|)7P@_)oB8> z7B5fFb{h}Sk4UhR$9TXB0aP)tR^o6npjT4O_HT#;ODuS{q)rc5Ab$c&HP26YcM{yy z0Gp$NFU`9^NvT~k<|9Qx0E&S!1kc_)RMFg=)scSsVw?cfMtDf}qs2JW*vI&WJ*!rm zQsz2^#+YGvB#Ka`IwDD%eZcU`5^_xiJs+@M_P^7R-fg)9O;)?=&%nUIa4J45Q+BmZ zU=X}Pu+)rWdfMEu`m^RasKt);QXYTo{Ml7)I^%9aSTIxSz-yakasN>dG+*|^>;Z^> ztP2-97UJOIqQ@mv@x}2^u?zein!c#sA;g3!59QMsgm{8Z6<5Q)S94%fyMS@=t(eWh*)Bc zx(yUca8T!FXJ1&NAd8h+fAbf2BkV7Rmda@DN*o3wHp3Fwu=<)m{rI8doMsD8a&*@e z+Sd6H0yj~9ep1hvuI-NDJg}F*@YUtxv!UQs`1$pTDzHVdHY_jA%oM>R{LjdK$0BpR zVO8D^4aS|gkOhV(@U!#LX<&;5|Ac6Q6xf$Ft+tXx96sI*M7u3mH8PVwfHEX~W%dcv z8&DZPNF$s7{84 zgh0Rb(%)atLBsB6b-WTn64iY-m)~Jh{3$2Z!1#F5ies3Jl9G~>6WVPo=C2lBOK?=_WI4Rf&9!rM-GMuBP^*&Z9!=YEejhJb7yt4$6^`b98j{xKaZ|ZBkNG8=D6V_rNbP+ezE4 z6Ic{7)SiVRws;(h_#Ppk9?(RM%i3ke9m517K9r87^rb8=2Nz`5AQG*-T&L<1>g{yMs z1Ox^~t1dzt2NYWl3MDrF9IDYX7B4E)E(MAt-`v8&sZs-pB!}pmo|a~~3k8oe4KC~k zYj}7qk&4(Qaw-(B*6&a#mr;NpH1o?LB~nsQIENw*4-bJ#TN~4CMbxz;qWb&${r#~{ z)d??M`k?OuXpKhFQ&iI#E{X|rW;pEXzt6eG#`b)F-5^9WNH;7zJTE(&IaXU;9Vl_; z5DD^T1ehCl_V?R%>XiZrUS#)taLgzqV1@Xele?g8U_gKMs%!-J_V#vJS(#EFHHufv z!0|~O)_-?fV2`o(vxf4+`_G^8Lf=J4H?5trvayAV?o)n607--f=ar5#SU1*QhlGSg zMD#*|yw!$?ii;z&XIlbc*G;O01T1Ezaqn^jw0`$(j|{&OpkU*@e;xyoos~{=>~cx) z#8(a6-NmSDGBU2IlMWD=kVg?O92sA$_Fd7N4q3_tN?1c*U+IgsmR7mX*(oqLvu}ff zg5VsQ=k)4iO?7^0b48#ushN4TOmYXFF91gQh?fo(SYA#pTKkEzva+XV?UE#Uo-R(% zz}K$X-W4XyhM{r@8E5j5!O>FF4@))p2p%_aRN|HFs7WC?oAXd}w~Py{Xo zEy2dm{Fz~wHO_)l{YPuH)@#qzAIa9N`M0kTe;aGj${Y4r<`GPrJY4h^{W8L35y_}i zC8}9v&d8Y7TSOoq&VOJ+2aSuliHTny0)eRC?&MG!rbg|mj$YMk`QckcU>0A`4Qy=2 zFtLZnUr4_(?`}U^)p=!#)GG-|OPk_pIQC~-d*`!Y~dCZ z;dtmz3niaFk6G@!W{9&_ z8b(u}?VbH+Fwe7rws8xBgX1+)-@xEC61wcW`#I#%NaG&H=Te_bEh86)BU{VAOVAYT z(ByB^aPQEZ9(j}mm0OB#F5U9jB|tfjOB<70Sy^@BJ)ddD(Q1n-QfP>m;*olL+{G-9 z7lwpmul^3uGGG}w4`~$@6&U?1bo!*4wr*Wt{7e@|oav8TBk76$3y1$`M<=o4V{7d3>Em<;0QpX`cb)V8UL!bbw?)enNUHmAj`t2@kScy z7lJfN)7$}OEld|vx-DZUu@4t*z*36-Ox~LXRT5f!Z{GjAeMKO9_qMxucnoXb@_z)* zOa!P1LBY~Tx>>1hHSM+}_GN^R8GFMBPqhp8YfQX#iPs^MlA!3s-ALwwzdck}ZzB1e zom~fl5di^#(hPh7eps%_=SHXz3R5wZhHjX#_MPjJ&)45STXiagaq0(p`-&~@bRNRx1J<((bBx+w+8T-nBsNF>d& z^!%fZqCtwJqNV*3r9P=A&dbj~*5GsIK%a2AsME}F?%gwC-{l_XK}>{oAGXJM{KDR? z&t$`r{N4BYZl&lQ?-tFM5DbgzlvolSr73XD`DJJS2A1yKn1Ggv^GY-t!mA z_RPoG#pP!9Z#Yb!9m9%?`F)=4+nd5Om!G*&v-vwSZC3U*vVT{VRZHmm9ycoB)YV%$ zxUY-3zRliXhIX@-MdGJX=b3O7vf~q*{2iuK>l=CeVZ?g8hvV`9jT!Y zsTz80YfDK+c2`dBN(GFby}zo+L2nv=d#$MRTaxyqc;&Bm#v6V!r^e(}0Wan1mJJ{E zphU#H!WwNx-Z^(zk%y&cXWx|LXlrR%SXh8eVZsT$g)o>bJ{|)ake)bJpcX*i)3pwM zFeQMGj*7?K{SdI5M!ueegoOCZjstl8HSx%NLf2dzDm%`0402COYHO{i*B8_79#~1$ zjwjJdt1_O&IY#NUu>TF1FA4ed=@(Er{fAH+;=cTW$>?bc@e5&1OC^esCS$9safRM^ zq(QUJ>R?4-04AJO}o= zcmfVC<83{tb*iG&T^Oo+v_ZGaqV-LbRCDwRt%j)yxsQ(z0TMSE8y8n&W)u46x8Q%WY^{wGW}F6|DwZ%RCJ8nUpt@>MKu%gb*mzY3J$5mHBaUaosMxI>e2d zm@$i&3Mf`sUV}f7g4rZ#_zR&TRr}Y#d|IGsGJ+fjaKY`qIHz6#fm#0@TSf&=)arOe z-^4`n_VUW_-=Kp%)Y2Lt`SkH4et^sL6I@jNN5+rZ zR@11|iASTh9JDK1Dfg#!7Gm+vy6wC62jsMx+)S8w36}m`S9}9TM{FD%3k!>HBxboO zDJj1Xta_81E?9no81u7x+F`MIeld4Dz_bscA&)Nt)R7oR>%#DJ7njU~XfXfVjh8Fm z)xVO0OeIjx*U;bB;p3ybU&y(q<}S;1a92bE|EyQ}(ig?LW`w&cLs%$&vzSsCv6t}I zUsWV&aY@>&FmkN{`M9*~Q*Q3+`g-re_^)6=5s`#}-`2LaK6}I3Z~(PTu-p$SRiYOr ztpMK1nVOH4+B7va&36D`_bc%sOvgEMzCm2#u-*OD==SXzU=v+0N(`{-!I!IYz z3^f7xRD>{Ovxia0h>mf+qTY%uQ0vwiHV1AqeWdhvI4dO@l zZEUh%zs4sQ^aMBd+i3I!u`<;rGGn7FR2?@oxg~{#=|uiuS+rNjY2{#L{jeA058Egb z6US70V3@$PKe(a6XGC`)b$T9=<*FKY`5p%DkcMg3X|E-*^?rJ$oA!FU?W5YIJ!_uWaG(B+dQKYoi2x6$)7|rIbIq2VNVO&j32ikW0dTdLN&`U= z&~?Kz968LpE+LU(7N3)YfPDgE1Yju1$j#*}(S#$pndq|7_fXNCsR>=39MG-T12GXn zAt4tR7qJqgt}ZnL1Gl-$Mayq3Ef(N{CBqGE=8+f^(ha z92<+x+$HZ%4?3QO{jE3@3DQcv|8-}F_@1xQ!IaUk&c5xP#gUoQ8}G6Wn6XW=_jpcD zl?wNLWV|$!G*>)QV6%~n@Xzjx6^}j!x^Fw0XbkN~`&~S{HASDB@%eMGpL7}wD(l|6 zcQLau9FJFH1(qqG!&}Pn1kd^mEq_;%4}*h%n@fJ3vfb zp{G~2Wr0p)PM?wq`nWYMWa~ZOYp~Zu7hL(Zwc<#z4(j|6)1Jh{kRo)lb8-L!74Q?b z=mg^9chy0WFH-31f`-d@l^ugxV5!7Y1K>08q4qD(LkGHNnpy>h%Du@DSfKY+!=$;n z`3Lsg?YOqvJdH{Hu(@_uh=X*nhUVpH0r_s^d{Ff(o}A5uhcHAaeC;_Zj#e|d30mLI4z z7~l$}kT8xskf7*I7K=?zo>({cgo!`2S|SpUE{CHAV zGo;{v-EJehVJo}1Nagk(NveJ#ox$kA83R8~8Sy8PR|1+P+?}MiQJlKPAM*1fl9hZ@ zC@3h7U;6Wrl4i9$P*5N^yKHP>k(HOnCHL`yC~%-X=ZTAz?;a0t#(6JnH4oDM$nbC= zpMQ8)Z|`E7CM0-9akoN)l|`sr4p)Jr|B#g>m(K%@Me9p6uEgv>s!Z1G$=$_>`tqK$ zfT$t5wVJ$bwh06AAbP%&^!QiRh^$u{;g%DkPwHfIeG?WH4hychl^w{uPSRLmbWq4E zh}w*dt6Dt#)c*4NM#tGJtgNZJt?x||08$(1mP55EZ^$|GjliFegC24lYy)HmnR$8P zMbnIl=t+ayi6$l{V2wO}92FlQ$TH`Pi;D~R&5{EBzEp(m&HiDY-_PFhnaOKtkdD^F z>DpHP%nUrtT4Fg=((al=q6~nEc?0Nyb?9eyM5rRue^od5hR@uHNw+OWF~eq0#K{J|`#V8Vk#KnJsAXixojy zT3SyVVH<&nprE4>>n+rTeJHY%_HhD3I3@&IB{siuC~3WI6)9*@A7c3 z_G@9lO2Q<;&kOqa>qGBKyAVrjKvJ_qV`oOmrFXZ!jMXhEAwj#wjE0=N#bSi{CO7x@ z!NE-DSHQjtm#9J6an#W2`R^Qs^E=JLE}46?A%NCO&f*{utINbgcY3Ic(=Gd+9XP;a z^?Z0IW#w3J1lFfc%iS-umy14%y3*z$N#KyvVup;75c?xNDA^UgH2dl7LQ?bCJ?9?o zg06^`1VZIfjh{N&di$00H_Pr>x0FS0GfDwC+SvV4!?rOc>9p~^s755l!APWA$;Pl_ zG+}RPU5d0`qIzG~g+0m^c|{`jY`*F1q9%Xmt<yEa#^h|!bBT8-(QdfE?%Z2od4h)`7|UiA3accm2y_l4Qx`Ol13FZW84 z-QwVOvs8+*+jSVs*jJ4hlVW~6^|rn7O0=IW3s!w3o}0jjjve#g(Qhd>H4k>btuBgJ z)>dvxVx!c|gI zJv%%Z*-c%VCWs2&ov)Dn**Nzl(a7y5E6hyr@$#l4PjYi}DPosE@BNPBtM>|V`}Xaf znxTB1B7gnInwpv>x8$tixl(I7S8N@Ggok$AtY}kb`FuF?J#r`MzGX&H_2$Kv+8bl! z4T*C1TUw0GQ1qf~o;!F#c`(ANb*XyllGF1|o{Q%G@6kntPUxNL$(H}7sZEKCY#1HIyG=`+6YVp$hx_eDZ-sFBuV-swftN8#fz_- z5ha#AAo-AFRq9qbUvG%z@(HxK13R!f(=1=@7@;>nT%Vy9wxjwN-_CQw{|a8nTRAPQ zKQM@0XkTan8Znn;|G_@&W1uHO8a8-KAaVSeX<-5))PbxQ5z=5kB;m@sx7|Xk%HYuX zU{EZ+drDA+wRU86ddqgkX2$mN8@W&TT=fL|QqTUrSo!?xdXEav_G=UWw`?bqJ$^mn znb9xWtKcsoaQ2~UnF@163qJ~ODvj2ckpJz|UO%h5wIrjw*;2ynlM-3yon4#fm>P~l zE!zI|$Av0Y1`KU>`3HxN*e&c95|uk3WeiugOOGy1-5R=a>-Z=WFSj`|lPlSd?=e-) zvo;Z6Ap%Wdb%ooD7cpZX|Gs?329)r@!b9%=?pqW+zcSyK4j@rS=ZERhggqux49E%a zmIuNfsjF|nkXc@Xx+p44SodUuB(1+B-fH6~^$4B*M70;`;s}kDUg@S{!(dWRvFhe8 z;hC}29i(yUh|E6gRPDgxmGU>j3(JgT>%`XCk8@G-D{ELtp2*7r*HE{s#x; znbgeM$+)tu5VD2-iEW+4UEn$bU%tE`HVWkT8(N+)gPNwUem{!CXG~R9Rf-AREtq`I zINja>13{tjx6~whhA)U3%^C*Ff$EcQSf}t5v-`f1()_@%mbP}N21fhfV61>An3*4H zXk>K!1s!x`QG~!Mz9*Hz!d2B?cxcMOuJPqSxn9x=YaRza#dk^09IuC5KR&gjj~2M< zKYFbdF;#U6StTV%ix0 zNr{hl1y5;nb2EC5i#Dg$bw#T;>luiAf-aGvp|R1?zp+t{PSVeDSpBb>DFRxQ>Upj8 z=R|#Q_BsLC(UAl3kNjal&to$eW!awC2Z=oqO*tLv3kHu+zv)ojFviKxAH!euduhp0 zr91&SnN2{44bQ7>RxX}(8rgqc2#VASE$pv%T_Y+_xwTM zfze7V#e2_QHNWY2j3Cb)D?+5OfIub-o@yiaHPpnCx0X##*aV$gZZu6> zLpFBx+ob-uWi5d{HMuW?+}?^vvlNvQsWt6rzbPS}LSUrGx(=VmA>Dc`$fR!yey8H$ z=1DFnaHuf@P32|9w|e5L-vbvwR0pdbKU$bz##a<|*tE4Y%iQG%3KaMclxr_QF^d~f z1i>iQ9?DT?NaU!<>QAsuUBJQ$2teEx6LaD&o43Jdaa-slXP#oehSIm^s0#Tp{$`f5 z@r%{W>8FEbp-&UlNAlL1b*T~!+OHQLFnw%C#xH^pegj%(5#Pf1O$QOMU0a(EGSpb&=lRY-8CmaPQFlNm1W3h{ArO})w1@y zNBv|0^7oA!H+V$~?ExDI2?;@n^FAtk8s|*$%n^uPP#&yZA~Ae1ljK@^+uMULy{oG` z3BbQv-HV{~2tW>O{G=PAR_E+jxftQ(oEM9*>VfUQL^a%KrbQXR-(T!Z+ zqd-Z6o7&vWO!lQMlyh-6>N)7wpFMfP>nPh_4b%gL!q)^J5z;lB`gssPJabk)=vv+%ym!IUw2RZn}_KBFwo85 zalO~(@H0fWLIzYO>kds_OdoYV8Q=5D$}c1+sQPntuN(+ITs^f-et9}Pg)aN~F3<)8 zqnj0h)b4)+lS2z#34;iI;5}i<*ExAXg6ijav013HJZz?FO)h&G{Vr}X!?7Cb?@u>K z0(cDrzZ8qO#G+(dySw^zFNB`pM^i#$kq4s$lsRF)#j1ut6gVB?1Wlgzk%3iw643Dy z&4`{*hT*=zgIbzpkAqf=XAhRyyP1n zm|>yCoPR>qiDcL|2&QM0a+9lxrqLcji-Uf9vU95;$nWws;xZ& zvl>m3G2!FT)n2E51alcMAUw6M9omc-aU-(w2ti_ynq?$ym*n**W!vQnbli$)%gosS z6>Rez8;1KbaYX0{q(iOr zei?UkcL(%B4+`d;RI;1EVM*N{<=6Txh)SndIFVfz`fzjqRO26C93LU=Eqfs_1s0!e z0({`T1!3RV}?Ye4&ACBV;5zB=|WbE4tdgbTT?Cn+|bPU0qrEmZAqbR~x~t zk;X<}!iz~#K9UhP*ztW}eTA#5kRaRj>vD2(fdl2Robp`%Qz`7cyHL49xuIAWliXeR zUzdC>17;LjySu|IdtgGt+zB+^0CP>SsyD6DYT9iVv9i4ZHwrg+C~izc&wOQFW1Ly5 zYKSGGO#im$$u_E|EOI1S@{eh7-ww0nm4q{r4eeF2N0K*>L%4pMl3tkBFQ&rn=68 zOdnYD2k*Hg4weyF=XVM43A1l(UD)!*A-VqdTV3(ui$Kz5MD3!WZz*Rh52$@q7J4>U z41>k^_@ZM*;p(^_m4`9?f;Z$pfPqfS*8-6J$zCB@hN?R2Ugx$y8YXFg-hT!|^UxiaNZ=uc>=d0V$=GcLG{0724teFR zo&o{CAHHnP%7*n zxw5?MY%>d%jld;&*d{!~o!$be`yq$0a5S9GJ4VoWYr za3Nl!fcL-7DG!HY4Y~-jmdxzzcS%W#e{jBD`ykKkLv6twT3=iYdS%1JZ-Fa;Nbe0I zEzFF#;gLW1s`2)whxp_z>O+ZK(_zIzk{x-=~V`*t=Z4K|&ivb)dze zc&WnuKp)o|9w&@ofL-T)O1d_cg3K%!sgz)}1?>?~DI`ctZk-u_ZkuKJ#8dXaSWkqN z(3a3aK*VPNMJ?wJlFfCg6b zRmsDE@A8gxusA`TfRBxhO*SE29ny;%tz5_q9SlP5!CbDd&;P0d^>N}T`hfnwHH41@OSD{oB*M}I6n`z z^12$`1y0%MNi*_voX;=6%Y$Im(V+z;HudS#r-Hn^7++;F)3x=>rJainD(npu6gmMw zqYbX-rSvPp`VOB}R;qKsq?@>z6V?S%aCAhWH?Hwg0gKvB1(4$P!Y)uF0+-}o#3Px&xR{RJA{_y)$TIe?t7~gdjE$u+d;1yFgNusz z1Uq5PD*~JT<;SYZ%4tootv5R1=?Mx7Lab#8Nd^}wJTD|TnZHQ90vAVD8$uNeGP_hR zzuTrU4-XIjH9`tbUIBrZGrM#PS;M=3x<8Q;? zO%!$|UcJ1u^g|CzZNQh1>rIqq4w;oyZ0d}bj?m`(kZc-QptV}FK41!b+Qj_;@f=IQmKH*UH0du(7#$Ndat`YM2jY173=4 z!-5?Q-a_T0qa#5UXu{48<|1nx3~*W_DEy&ACYP#g6aDa0YioDQa-aSo(dhX2qt#rj z!|9jAmBUqFFqUQXy*^&y@F`qQ?NwEknBc{u3;cfEcQW-*aKSWguyxHb0;(D_-}K}E zU~2Fr$gxo`^u_+R)!{2Rg(*>??u(${tS*3RZBA&c3rhFP*l8{@aaxcZZWu{z=s_j7aiFiDk8 zAA&OxRQP0u2x<^H;@h9YF$qWBK(wVaxEU=wUB9*^&T_RCq0x=NcnvLXlYb*gBORD9 z3Tta?1M9#u(s(R#>lV!oS+&Iq@O4H#4@pc+1kL>kCU`0Bp^2EiH7u+f=v>v`i&cdc z`s0JN_o}`vg@wfe#omjrKoh{YF3f$saVgHSc!PEvy;N9v$}t_)-L1sEFUbZO!VRgd zoiP0iplJ%nV53eJV=+Nu=kgF+*`7uu2W_%5RWiu!T3UzeH5_*<{Wc*TK)NHW(>U)rCzESKvr>`k z5^lHdg`(T$Yk|3-S}3LCg#|;+g2nwH3smgAya+%EW^C3p2-sk|B{-!QGt}UOx729y z1R(LyO@jDXOv=dv@v*Cyu2RMi=H-H$n=H9c)u&*d)1bO^?=wC##S+6ofDv;fofx{c zGXAq*LGnZEk*FyhA*aPL5W z0YKO(|K{)CzX9qrxT>wLu3F=UUo<5iCFw;dRkNE~k;7jFJvM&wL|KsobQyYy>(
  • T^Yj+r}U;-Jovp$-rNG~jgmGr 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 diff --git a/tests/reference/5_1_7/kibom-variant_3_txt-F_Fab.pdf b/tests/reference/5_1_7/kibom-variant_3_txt-F_Fab.pdf new file mode 120000 index 00000000..ee9c955d --- /dev/null +++ b/tests/reference/5_1_7/kibom-variant_3_txt-F_Fab.pdf @@ -0,0 +1 @@ +../5_1_6/kibom-variant_3_txt-F_Fab.pdf \ No newline at end of file diff --git a/tests/reference/5_1_7/test_v5_wks-schematic_(no_L).pdf b/tests/reference/5_1_7/test_v5_wks-schematic_(no_L).pdf new file mode 120000 index 00000000..85c9b223 --- /dev/null +++ b/tests/reference/5_1_7/test_v5_wks-schematic_(no_L).pdf @@ -0,0 +1 @@ +../5_1_6/test_v5_wks-schematic_(no_L).pdf \ No newline at end of file diff --git a/tests/reference/6_0_2/kibom-variant_3-F_Fab.pdf b/tests/reference/6_0_2/kibom-variant_3-F_Fab.pdf deleted file mode 100644 index 8e914709d491a921f7018125805f32b104c04d04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11696 zcmZX41yo$kvNeOd6M|-NcXxMpx4_^!3{G%&4Nh>EKyZg(!6mr61$Rq+^4)viyKnuy zX0_~7UDef9vu3)_rc#xZW@2OJLZ)gwt$9Y~1hN91KH4G+3IbUaL5@}sYarJfq>c;( z0$HSO>>(iVTWfCy0ZD?)oh(4e!otX|5HQHh0ogM<)<~}Ah8Mhkjq3#{9mo(21i%~rBUlPxbR_P zi)Bltwj1_gRE_*)?Zp4j>#a)dAEZmTKQHJ0UBB;4;urjXe-KHUr$8fpjCbysm2I`$ zeL3j%AvwQo_BVp~cmIApznJ_}pRjZ5L`GWc@AevDI z;;9*W4{(MaKT|=C{%%Xa+wrOD)@BEs{g59&*RM=Oa#jgbT1xuc&b#_d?iamv-o@Wc z$oTHvka7ho#O)=i!M0FFpKA)?{Z_sv5yNFAs3e;|Z}P-aRWK3S{X`;Jpw>Cc5{K-j+62k+8eBv*J>S34p#eyz- zu3JGP$0{6b-kva@oXpS^u>5VG#M(|%0GXAMb#~OTb8tU!WPgsW%jD{L-ioV{E6>Gu zB2ZFcWv>QgrZC0dQ!Gx5xk-^V55ElTa;nBLxD$F226L&5z#Q8_X+zNFNqbzm4({6H zV?#ptOB4*xRt0-0W`yM_YBX!M?XegfIR*rS+K7-0JXVA$YSM+Wo~(&+sG{RHJ?OM# zNMDqzmsAOdW`v4O&509o!&@Z*b!j$=T$|o8gChtuI;SvFOE&NU`?jo5)jUIPfcJKq z%+TDbDdNlWUKPjWcq={{irxXoXX8>QDV2*XV5e`I4lZ04ZZ;K7gJ#FvDg^mt%^^wY zF;fW!;&MvT*27Hslr$8ayPs9Bv>a~NhWWC;!nRK8=Eenv^sXem18ODXhA4<`IvFlk zFm=a!(!D8mn6IPnan8Y;|9;3L)&t+vUeAV5nX%))00 zlT%*7lC|yCsLQ`~Z<4k_ZBTC2HTJnEpyWRMGnM;!xumQm72#6>j%_4c@p$k z>m4eOXoBW;W@Pd>x~TeBOOB&HK3VN=?$^V_0vVnQx(YC`cq}!XXhPzah^ZOgD~{Nk z<910GV|LhE4i9oOvs?I_!v--4v`)(GlD~N9=h>~FSTz*8(i!xuWrop9kTb`|V6xA$ zJz>g1W27?^37*MpXNpDA!$`>(IxcxxoI7$vWPh*qVb*`>uRF(Qd4g@B30_6mPEic- zVITHoU4H9SdbUtEbaw6Qi&i~c#=6F&Ry^KwVJRlE?r0Vj5cK|9o%TE?$1tS!wZGQX z-bt13ixxg#Z8~PFI%Z|M4f#DR}K$x;y>^<$Mv=76{!- zW=Eh>C=R)W8dmTU@8G06@fa!b5ry5(vuO&@D_DprBAA6!%{pbi%B-8MF;r;!SRxy1 zh*D41?7~h?1C>|bTa3<|hXJc1VGGcia4ABC`lX+KRE@WiV1E`M%ki-|G66&~8=(@l z3Re|rJ!$++f;h4bAwI%Oo&uehRn^49VhSz^|EBgl4VqI)LQUbE1gaaL8rEbcYRao+ zJHq{56c4K91X0yOn2Zw75VOh(s(>W0Uz;?&LN_(PZUvmd%MNcCEx&WfyG+`bgsE?c z-51_N8S*Y8_)6MiG5H2rW3Ecb`Me&rn&+p-61xrxWt#z|V)g=p)Xio$1GJTqO2MU6sH7nw! z>El()t_C$cO(%M#Dw9XEgYKv04K23halbB7pw~UX&a}mwE?UqzXetCwm!jwuBn>c% zvUbRhkppF?mLqtr2}~mOsSU&vj>E<1?YW6*WPIo^2OM^>V;La?~ZVBui^=!^v6Y z3?YqXdsfeAq%|O$MKgW9e8xHpDDfR6%ycvW`?RMh{TPCR&;1flQMZc)qFNc~!kK!4 z1xmjn>*B`%l~z3JgLjT%8+T{z8EGYtQQ`!Lzo_XzONyh6xM?+pxiqCY5wmdRK>RUK zl$C{UsSw(9lm{FR?>0#58jtCECn}0)?7_>!Cn-p0!2s%SsykB{m5-4WmdH{V0U0&k zHKGRcDE@-}TBPwPlLHo8)IKDhX$??@;wY{z9=KuZN>J-m35vuy{MG_s^Kc|J*|NGB z@5bC14MSz5eH%uHtn+Ze)pb!=%zK4!2~hDqE_-RpPz3`I2u_?xxoP=YN;+AE)y&L} z1WlI#JyBBY-<~3t(Gvxv?#D7FX(|vNEz)&F&4Yx^2cw{06g_hYK9N6H0lGg|acv*3 zQL6?SVrxguHfpG?2J};{p|o+m)YI5;BHDS~pM0!P#d2bCVA>sRY)FMgFUv0Hg&Pql zHJQrjiR8L%+fT*9i4ppi^ywpTZkzP6_W))t^ac90wFbV1_S5SG0$DP>sonlc$_Vc1O*Hexi1{LCNlDwB7*RP#KmrgdFQbT0J0VZ0NRj}BE7xiN2^D2ymFg*I!B=QNRu|(um4BJnNrzVJF zK4Yt}$y2X9p9{ucLO0os+l0zGKO@GDmEy&d;hi|hTLL6`5f%W!kPNiiJ6j$jzaj?#_EkgK*%a&Ue?)8yw*-G{)&>1TQ+~h@zGx{TekW<=fOAciP2w4ZN8g7s@o(C)jr$= zv(J=9-1q1sz>Kf3xrt1V0xb;jxCVEiNJ0G1>A(<;6lWM+VmeVwMytyk7u-nl6Pzaml1M0f?5>9IS2%>xNl%S>j&BkSsI zRlh;Uq)o2;0Kv5AOboE$tZS6&&QX617 zkWkIO)10>!ckXLk(h`cNRA#d0F|e_p#@f2&G)q$t0GaCD3mEJXxD4rLQ2zG)h;n9C zfN~k?nskS{Xr|u0^ubma8u6`DGS}ImuE*j3qy+N|SRGHfi5_4fby-dtxZJ=e8JGf7g#5M*Kg>gEBnJBTX)#_U3%p8=f&;-O;5TWX8i<8 zbN52>V>|NeQ?cx3W2Tuol8U?*2?y299x(MRY}n>p$bruxu|i0#Y@pW!E^d+P$fbp4 z`B!bH2v66=vpwe}!acOCMO}b(%tX14W?SBO9&PT>q>Xz%@!SG?35&JKka;K1S4)S* zI0-w3eu9MDQFC$IAwr$C?Z#7%|M3@8*hqG4pfy}Z0JpYIR&Aj@}> zOaO*01-0aL0c#dJHrJ?*QxFq3`e*h)w%z$AT|O29qd8nz4qnkaTtwM;=G{WyMJP)W z*imb93hdCLU_)z8-o13`pjCs95Z*#Zm$Oj?N$aCB5`<_YKM*cdlKQ)3u|~TGuM)Cm z!d@SJ1AOLK+!iCD#uUC78=8Q$W;&sfY7gMIxcZ~Odc8K8E#~iIdpVA|9b`Gebp=17O=>7TekxeMaI}F6l zNhMgRdP@>Jx$pED=ellgRWt6uXE`#cI(wWU?UH?HQuiq9ZgO_3G}fl_z_;&{rck`B zaZ47F=p194mwu&}{|;D8`y!|AEs6*5c_TM0*8#V?dIIAZL2~V1K4^MnRCS^qn^X(A zH;=TJDyaY@!=p+5T&=6k1JRniX}aNU(71^l2yiOZ9l?Z{%MxqbIEA$u1Xg;5LUxU^*<5)~5wkz;1@Y~^fN|sSf4YN*r;>04VBHB) z$I1GZh}mz^BKakU$KLw(IG48mB2u@Yc}AM>h~j(nqah#V%wLv^;A!uoSh2Q#TV4K@ zHboWUL^wTP_OoEHX2uRn?HUwqB<1wg1SSEOB5t-pUBUs(XY4ifU&fOzB*@Nhl?VFc zKoImj4BD~c%BoVpL>3y+=Y*aF080l{#GxP*`#d*5PhsYw{+~^}R zcBVgm=SCQZcPC8rM4Zwt`b8Bsdrihqiu0;6Y9?%K3C~Zl4c=R83iI~JXm_YS?Mn%R zvxw5d(3q5)56wp2)Gj_Vnw{E81wo}24ThMUojoabzhH>Px{~VSQOYzOF16De8J=# zPksodoA8o45w^PPl|&n2R$Yb$kkvoOxSIX@RPrUC>FqAVqIAM@I()SvY&oupSR7(A zytIm|>k=9(mNN@41jVBI(NOfg?9h2%oA;Qcs`x@i*c0lto69{NFtpTGYqe<;CRmOL zwW*r#0xEW!^s{^)`sidMJ|KyM!l-jzb}jmN{2h$D7_pm|AXgI6iEx{Ad^BB0;KZRd z`-Z%qPngipQ<&shY7d!FnKidXoueyoZt~0P~+fgh;*tF%c@!`9#6C+`ZKcl6oHz+Q^`I6Lfm=M1($+=Ip_%v?D$Z0)3^Lk`d27i68%f^l;gd=pG;V{X7Clo z?h2RkM7M%+@8ANC8Hsl09%VL)@NVD%;?0B@hztUnq{3_G*C?`9F zeRb1R-JxEH08e^xi5@gN3A*3je5@r9fJiG!r2eSVK{?o5Q7ux~Wrf32qi`%G6B@}y zI`#UB;BH{=u?pSp1tyyvm?m|>35{=r0(Bd@MR40Qwtb0z6^jYJ&Op`~stDSC_FN`` z7OnHJ4kYt(WsWfmzLc3a3zij%37fiokFU?EmhV>bo*MR#xBzNRIcC)jP32(E<1>64O*Adsa$R7q-Jl zL0JeZN*UM7#PBc<`w3(J5}Z~kK)3|w4)5A^Pg{+-Fq-`Rdya!g+oJ>Y6C~Db<^Zvt z^3{t-xj~j)JIEk$QxjT8J)d2*9;Au=XSY-ldh}CTFe7spD7tz{Ff^9f8Ee zO*5v@KVBvlZldc&=AhAtpeH0&9i%`Sh<4;-e-)2<%@hN*@lZ`UsA3EyrG*PEhIsH= zMO@3`e`HATG8hzyOjX2}k%5!szVKZ?O1ioDQP0$`p(~6`0|j8qCauG#t==Q)tZqql zoyVdiX!!M2%m|dD{TO<;4%G)r%5m0|Y>!Q{`JguME~veiMuprx$q`S*QiE43F zA#8S+O~Z-e&LEswNkJM~nWoKs>Yekd6y}GVfQ3&_=*&GZ1Yel-x4jR{C3GL^I7Tx@ zr!nNvv$4qe3xJ?eD7D74`{R0k4O>n%5TJ^|DsPI zTfCMQcu~zzJ#1?7BWZ#BgZ|#V20p~R)}`?-ix9u7_NGu8z=ghH>R2he`0QWdQr=*& z1CdLy5vVl4W+PW982G*8TdfvIv(xD(=oE130&5s`syQ&mkgH)4o{2))?$ee!Qnw9) zB&?e0VI15$PCQ->#8glxNWH9ClOlM8_5h6$JJhLR*E)nG#H3PQR$oPm4pzoYV(_muDxg=@xAhi zQK@KY@y@6AVo5Hl{r(}}X_$%w{fC`7M&)a{A+V&MXqgU+2+3~1;2JT;r8w&_Z$33t za_|FTN`A8~X)oG@bh7nIsd-k}TRyj8;%oM@Yo0;g?^~h=PSa^529-j86_|a=L>@3Y zi0%8$wxSXvoM>dNYBMLkp9t-VHVh5#T9NWSyBBU@e1!sXIMe~5ZWFYQAquTB-@EZ6 zKF+A&!`|PZ#UJ_=+#rv`NmD%ozlPw|F}~V%D9(DNUnttVl4ZjsOp5I?4olOZvCo;5~b%gdN7rx11yA_65M#Lfx(n<2gw?hFBmVF zm%tB77UocJobU8t7&CaDC$^IcFMUUHF0Y|6)ZWQtXi}fsz|~Vnn(Z6I<&@sQrs1gq z8VtR}UrUgj>_G<8xKxNo?G-&yQ||_75^g1aldq0xDc=ZbZWiS&4`nLVmSYy#a7s+ z7O7)PPk+_Tct=fjndVJ|myNYJl?r^oa?JWl^0%}GnL?w~-}e_8+kI2=&(Y(mydXjz z34@Y?p|F09W8285}389rk!tYXbm32u3k-)ig4trq6%<+vwIp%Zu`ML#Y4(CKtJ;RX93R# z_@jxs`unT(7OydVW?4F?4%Zm!m3@k3zs)knmW8al_mS%1?qOI<*n6Cm#}#p3cP_l% z2_WYf>X^$E76#uJnyGsAmRx?{cPIaVKWi+to?`PmfXTsg-qbGfM4VrzBHvgFg|UVP z$GMd?xfI@bXzPew`%8C~YRxdn<~>Jbk*B$|O8Ba-^ZY4CBx}l0L5=mP86Q^3-Ha`zbRcGw7A_qXSs;m)k4(t0AL)VaCA-&M8VW$3m$*Q8pF zd85Byf6AGrsYgH?=B*XmBZ8a~H0t0c$oO46in_Jp4l?o2x8k;*^PbeQl{4MNDvyZk z#9vQ;{1ijDsPIb{x1DlVzga^o;Tfwc{s<9%$N@(8!!#h9H~pAHsKKKL?`}M+>fX))F=e-r!F0|~alOki;%DGL)H5w*j4-S_O=KJA=c@!%WCi*q+A5nJ(BU+zLQ4SLmC|E}CkZ^?}yzTdbZPh6z+oNCOg#Sj1HEiTs=)NGwTzC#zML z8(KXd(`gE_*%uQN&Yq1=;CUe|61tOBwts;IW$bdpg!4VCOt_4?nnZA7d!qhF2(zLt`*S!f2{J~4e(Y!nuEt9JV3WI)*so8I3z#QYXpMt({Dj~4n@b64EX-UXR8k4a~YE7UgN zKOLdit>27Dm}A`XDFP;#A}Al0La($i%AH97qwuR^jbyrQE}9=pox7Z6iu)p}%e@PO z%FU@J(|Nlr*Q?8w|M_+3X|C0SRp0e%W4h1Kb3ag+%7wksSnk$Ze~q$~H1hpc5VeYd z`bn{!m~>Q8*!P5ka65kr(gITX=jOG&hP=*-cS3x+%-(?>Khgow(Z!`2^~?Ju11}4H zC%YVdtPD+tM5ch$Mszm3S~X=YPRX$r6?${k&UvmBAUo%!q1p28HOSm?gp2?5qZ=}3 zhVYAemuHrfq-z)6dKjw{fxD-O(YdfUVGo~@HD@uMfs!dDe>U)P&`3Ra*3XgmQ#Wes zhxE9F(=@x8G5uC(2Z=Zhr!0hAoyH03`y@Rp4N3m2DQjKouHNQG^M@ zh4{?S3rV9-BjVpq$kT!o$Z>RNyMeoeFxgcCO@!aG8$=)y73Zg7%<`^|+d7N;vVgIL z>jv!H8!fUldd&u|$}+2nbY}yzgp<(*8~|q4IlDJnriAB4Y%F1QgOxux^^JRv~+H)w`#&=B&#J>gKhW#H@Sl^mUAEtX5Y5 zO5NHM=Mewh>$CjcBwP<2#d?nl(XN>}*7>|nK(lUTltfo|5dw^9E!&zp?aUS}_NOMf zyZxa+s%(~(o)6(?u|sJLniKocR7*39du}ZNUzW~}#K6LjZaXWx0?X7LKhPS$>^)@m z);mrP8|N2R&25E%kt6UV$(&7!D&}=W2M60V#l{s(`!sE6ACJZ;r(`?^@0UpFox7Ca zu7xS%qI2Pf$wL%uiCrq>d-D5ZIPS98UJN`(eYV&i**0U#8H3y7obyvy(^>C^bO2{w zPj3=K8y#L-B;I=+dib;!LeKe-j>lI6@^_2g)dGk7B4jb1h zOy0qvlX)i-6z^hHU~u%yk7jKi!JY#6Ce%CD0@%zPt<;i(Boad0BX5QEkyJ!&J7cUTb*sY(DbwUJ({YrB9 zrQ5_x8$ZNqfOxCq_|mv~M*HyPF?=ubi#^S$qq6fRjK~6mXmRXwA6MEWDRILo;vvJl zV<5oKt%3AR_s9*Wr+Ah6?CoVd-HpMeR#l)31bWE5&(CH4J9)JsHyQ41DV*&(^jx$<_w!yri)0I%aVGq39` z)mG+kE+P_JqqY9QX_g(fz!*aB52BTfxk^7U;k$Vim7U#dZ4zfzT!rLy7O35az|-ev zxT`$*DjHnMk8Y1BShTM&?5yuBS7l)lPrbx_q;h?eZ^cPJr9+bzekTtTq_qu!gur9c zCejGf_2dLtg*^bubYjwqoR8Y_$qPu3bRHnCh?~ zmb`anF;9^=bFdhqR+gDPm}3mYCT$}tqb27rp0}`MI6*WV0-@g?#0Rq4-9MPnBsFQL zx!9rjYV2hd_;e9REZ&EgV3!8grL%xkmQ^L z*L1Z7Uk(PqMIM<*VBH!Vb`CY(EF#?wFWdWHO5%f->;D{$-{OE7W#XL^;+9*iSPOR=R)p5tCtNe>ef zpjxCt5SB#%>W7Ve#8b?0wn2ugb9M1{v6rOSeLLzx7rs09OPTccE%|$S7S-9Npch%$ zcsWa~9{z`rPQB}&;*-(v5B4PMM0wYTp;N1h2g?DRNAGw);P*2T5)(}Ry0ob47s!5H zn9$)mLiQTC*A3oqh4}x+#&y%6yg}^P~xe%dWVX!9(^0?%_Zqu%;&_MDEPD6`i8dSOmR* zf8V%v@tzr*9LRmqbj4wjx+B;b7_-~98f@}I=UNJnTqwH!{+3NVf`s$a_S=mC6FAVB zo{41#kqg>e z$>zq%@hZ;)M;<$8+BE}^tvt~qaoVHeGjU|{MmeJ*0KLPE`N&q|oaDwF<3GA}xT+{F z5t}S!1@o#1*qNh^I8^bb$Nd2#f*1*5!w)q*%^|>fTyZLNq`|D5k{KiOuVLFhTzxR* zSAxqCbaWuv$lXv$`hABExQJyno03Svi{k>ka>){u}A zL*Nl()#JyGuk?DD!w1ZitV@z9Ipb4!Va@2rtju=SF0zY%;Aw@v=WAY~g zXLV1;Kfb(<_W#k?cET2Ex>%Gq#v!>;{RqQv`<{%m-xieoF))=HANqATjaqBn!3J9Z z`ZGi^7ubb;pNOeES(NE=KgF{j9x}UvfU?I%7nUj6ns(sfB3d~|h_I>Kck882qDDkU zroKP#(n7|oT^&z#*5S)G0P$swlS$!-qxk;m z@&lsTK`9MxzwcM@X`@M)z^K}7X<;=uGv7&8XPN!Fl2^NeC!^5(2Q4ZdW)yl0=_}&}M9&sFH z*mY_9>Fsby>hWcyekei&t4|F>)S~J=12Qn6XZGpeXUi(1J~(7!H|bn^?mj}Biqx{C zv8qF+51NrYK<;9)P1&!Kfzes~LOA8_24$M3n7mAU?TKVyXM52Jz!(V!|JE{e#TSWw zO|rI_=&!LFh;*#v1)q&D`>aT~`Jp!@lJt&SNlZGjWRM-zZh=yGEwD@akf21 z;8XG}8txi6Y(An+W;bb`AoB&uQvfLUgVkW z6O+FmXzxFgoZ7CiGa2v2CA0-nqnxJGD(k!$j(#C@UoBShM8>(5mXY1VLXzES)^=tM zP7n{RW2b$H^%DH|&z2|6_D*8 zy{cwlkR#-6>VNpIN+1gxGjS(Rpuro&3gqQvW9H@M8egT1o!5cTQ|<>}$-j@6~80t<=5a3_O|CKRvj+RcqzkB~rFkK;LV8}lnvaxY;aUfGsNvTL9 F|35RyE$&Y7V#VFPxD{x5^xj|Y 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 -SVG Picture created as test_v5.svg date 2022/01/07 13:10:28 +SVG Picture created as test_v5.svg date 2022/04/04 17:51:58 Picture generated by Eeschema-SVG KiCad E.D.A. eeschema 6.99.0-4+gaa4dcb2bf1+deb11 -KiCad E.D.A. eeschema 6.99.0-4+gaa4dcb2bf1+deb11 +textLength="21826.023622" font-size="787.401575" lengthAdjust="spacingAndGlyphs" +text-anchor="start" opacity="0">KiCad E.D.A. eeschema 6.0.2+dfsg-1~bpo11+1 +KiCad E.D.A. eeschema 6.0.2+dfsg-1~bpo11+1 @@ -933,321 +933,217 @@ L81948 77367 L81976 77339 L81976 77395 " /> - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - -OUT OUT - - - - -IN IN - - -OUT OUT - - - - -IN IN - - + + + + + + + + + +R2 +R2 + + + +R_US +R_US + + + + + + + + + + + + + + + + + + + + + + + + + +L1 +L1 + + + +L +L + + + + + + + + + + + + + + + + +R1 +R1 + + + + +R +R + + + + + + + + -C1 C1 @@ -4934,10 +5119,10 @@ L17607 31991 L17607 31920 L17630 31825 L17654 31777 -L17702 31729 +L17702 31730 L17773 31706 L17821 31706 -L17892 31729 +L17892 31730 L17916 31753 " /> -C C @@ -4964,10 +5149,10 @@ L17845 32901 L17845 32830 L17869 32735 L17892 32687 -L17940 32639 +L17940 32640 L18011 32616 L18059 32616 -L18130 32639 +L18130 32640 L18154 32663 " /> @@ -5117,335 +5302,50 @@ L28082 35390 - - - - - - - - - - - - - - - -L1 -L1 - - - -L -L - - - - - - - - - - - - - - - - -R1 -R1 - - - - -R -R - - - - - - - - - - - - - - - - - -R2 -R2 - - - -R_US -R_US - - - - - - - - - - +L3D L3D - - - -L3A L3A - - - - -L3C L3C - - - - - +L3B L3B - - - -L2A -L2A - - - - - - - - -L2D - -L2D - - - - -L2C -L2C - - - - - - - - - - +L2B L2B - - - + + + +L2D + +L2D + + + + +L2C +L2C + + + + + + + + +L2A +L2A + + + + + stroke:#840000; stroke-width:60.000000; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"> + +L1 +L1 + + + + + + + + -B{AELEM} B{AELEM} - - - - - - - - - - - -B.A1 B.A1 - - - - - - -B.A0 B.A0 - - - - - - - - - -L1 -L1 - - - - - +Text box D Text box D - - - - - - - - - - - - - -Text box C -Text box C - - - - - - - - - - - - - -Text box A -Text box A - - - - - - - - - - - - - - - - - - - - +Text box B Text box B - - - - - - - - - - - - - + + +Text box A +Text box A + + + + + + + + + + + + + + + + +Text box C +Text box C + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -6494,7 +6438,66 @@ stroke:#00FF00; stroke-width:300.000000; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"> + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - stroke:#0000C2; stroke-width:60.000000; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -6727,37 +6647,30 @@ L30000 15000 stroke:#0000C2; stroke-width:60.000000; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"> - - - - - - - - + @@ -6767,21 +6680,24 @@ L25000 10000 + + - - - - - - - - + + - - - + + + + - - - - - - + +