From 7c5ee556127ebd25587d7a62083d7704a1afde99 Mon Sep 17 00:00:00 2001 From: Kacper Donat Date: Sat, 8 Sep 2018 12:49:32 +0200 Subject: [PATCH] add database support for easy querying --- .env.dist | 7 + composer.json | 1 + composer.lock | 913 +++++++++++++++++- config/bundles.php | 3 + config/packages/doctrine.yaml | 19 + config/packages/doctrine_migrations.yaml | 3 + config/packages/prod/doctrine.yaml | 31 + config/services.yaml | 2 +- resources/icons/light/icons.ai | 537 +++++----- resources/icons/light/tram.svg | 2 +- resources/ts/model/line.ts | 9 +- src/Command/UpdateCommand.php | 30 + src/Entity/Entity.php | 11 + src/Entity/LineEntity.php | 129 +++ src/Entity/OperatorEntity.php | 88 ++ src/Entity/ProviderEntity.php | 51 + src/Entity/ProviderReferenceTrait.php | 31 + src/Entity/ReferableEntityTrait.php | 26 + src/Entity/StopEntity.php | 133 +++ src/Entity/StopInTrack.php | 66 ++ src/Entity/TrackEntity.php | 112 +++ src/Event/DataUpdateEvent.php | 9 + src/Exception/NotSupportedException.php | 7 + src/Migrations/.gitignore | 0 src/Migrations/Version20180907212032.php | 46 + src/Model/AbstractModel.php | 26 - src/Model/Departure.php | 3 - src/Model/Fillable.php | 2 - src/Model/JustReference.php | 8 + src/Model/Line.php | 116 ++- src/Model/Message.php | 26 - src/Model/Operator.php | 72 ++ src/Model/Referable.php | 2 - src/Model/ReferableTrait.php | 34 + src/Model/ReferenceTrait.php | 18 - src/Model/Stop.php | 121 +-- src/Model/StopGroup.php | 8 - src/Model/Track.php | 84 ++ src/Provider/Database/DatabaseRepository.php | 39 + .../Database/GenericLineRepository.php | 47 + .../Database/GenericOperatorRepository.php | 33 + .../Database/GenericStopRepository.php | 81 ++ src/Provider/OperatorRepository.php | 15 + src/Provider/StopRepository.php | 1 + .../ZtmGdanskDataUpdateSubscriber.php | 189 ++++ .../ZtmGdanskDepartureRepository.php | 50 +- .../ZtmGdansk/ZtmGdanskLineRepository.php | 27 - .../ZtmGdansk/ZtmGdanskMessageRepository.php | 2 + .../ZtmGdansk/ZtmGdanskStopRepository.php | 108 --- src/Provider/ZtmGdanskProvider.php | 22 +- src/Service/DataUpdater.php | 37 + src/Service/IdUtils.php | 24 + symfony.lock | 54 ++ 53 files changed, 2902 insertions(+), 613 deletions(-) create mode 100644 config/packages/doctrine.yaml create mode 100644 config/packages/doctrine_migrations.yaml create mode 100644 config/packages/prod/doctrine.yaml create mode 100644 src/Command/UpdateCommand.php create mode 100644 src/Entity/Entity.php create mode 100644 src/Entity/LineEntity.php create mode 100644 src/Entity/OperatorEntity.php create mode 100644 src/Entity/ProviderEntity.php create mode 100644 src/Entity/ProviderReferenceTrait.php create mode 100644 src/Entity/ReferableEntityTrait.php create mode 100644 src/Entity/StopEntity.php create mode 100644 src/Entity/StopInTrack.php create mode 100644 src/Entity/TrackEntity.php create mode 100644 src/Event/DataUpdateEvent.php create mode 100644 src/Exception/NotSupportedException.php create mode 100644 src/Migrations/.gitignore create mode 100644 src/Migrations/Version20180907212032.php delete mode 100644 src/Model/AbstractModel.php create mode 100644 src/Model/JustReference.php create mode 100644 src/Model/Operator.php create mode 100644 src/Model/ReferableTrait.php delete mode 100644 src/Model/ReferenceTrait.php create mode 100644 src/Model/Track.php create mode 100644 src/Provider/Database/DatabaseRepository.php create mode 100644 src/Provider/Database/GenericLineRepository.php create mode 100644 src/Provider/Database/GenericOperatorRepository.php create mode 100644 src/Provider/Database/GenericStopRepository.php create mode 100644 src/Provider/OperatorRepository.php create mode 100644 src/Provider/ZtmGdansk/ZtmGdanskDataUpdateSubscriber.php delete mode 100644 src/Provider/ZtmGdansk/ZtmGdanskLineRepository.php delete mode 100644 src/Provider/ZtmGdansk/ZtmGdanskStopRepository.php create mode 100644 src/Service/DataUpdater.php create mode 100644 src/Service/IdUtils.php diff --git a/.env.dist b/.env.dist index c31d190..ffec0ad 100644 --- a/.env.dist +++ b/.env.dist @@ -6,3 +6,10 @@ APP_ENV=dev APP_SECRET=1bdf86cdc78fba654e4f2c309c6bbdbd ###< symfony/framework-bundle ### + +###> doctrine/doctrine-bundle ### +# Format described at http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url +# For an SQLite database, use: "sqlite:///%kernel.project_dir%/var/data.db" +# Configure your db driver and server_version in config/packages/doctrine.yaml +DATABASE_URL="sqlite:///%kernel.project_dir%/var/app.db" +###< doctrine/doctrine-bundle ### diff --git a/composer.json b/composer.json index 728ff3d..20a22a4 100644 --- a/composer.json +++ b/composer.json @@ -12,6 +12,7 @@ "symfony/console": "*", "symfony/flex": "^1.1", "symfony/framework-bundle": "*", + "symfony/orm-pack": "^1.0", "symfony/serializer-pack": "^1.0", "symfony/twig-bundle": "*", "symfony/yaml": "*", diff --git a/composer.lock b/composer.lock index dc394ae..99880b7 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "f3ba745662faf21f8b44dd28a0eaf7b9", + "content-hash": "0af7567013958485d4223a33f8ba099a", "packages": [ { "name": "doctrine/annotations", @@ -299,6 +299,319 @@ ], "time": "2018-07-12T21:16:12+00:00" }, + { + "name": "doctrine/dbal", + "version": "v2.8.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/dbal.git", + "reference": "5140a64c08b4b607b9bedaae0cedd26f04a0e621" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/5140a64c08b4b607b9bedaae0cedd26f04a0e621", + "reference": "5140a64c08b4b607b9bedaae0cedd26f04a0e621", + "shasum": "" + }, + "require": { + "doctrine/cache": "^1.0", + "doctrine/event-manager": "^1.0", + "ext-pdo": "*", + "php": "^7.1" + }, + "require-dev": { + "doctrine/coding-standard": "^4.0", + "jetbrains/phpstorm-stubs": "^2018.1.2", + "phpstan/phpstan": "^0.10.1", + "phpunit/phpunit": "^7.1.2", + "phpunit/phpunit-mock-objects": "!=3.2.4,!=3.2.5", + "symfony/console": "^2.0.5|^3.0|^4.0", + "symfony/phpunit-bridge": "^3.4.5|^4.0.5" + }, + "suggest": { + "symfony/console": "For helpful console commands such as SQL execution and import of files." + }, + "bin": [ + "bin/doctrine-dbal" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8.x-dev", + "dev-develop": "3.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\DBAL\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + } + ], + "description": "Database Abstraction Layer", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "database", + "dbal", + "persistence", + "queryobject" + ], + "time": "2018-07-13T03:16:35+00:00" + }, + { + "name": "doctrine/doctrine-bundle", + "version": "1.9.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/DoctrineBundle.git", + "reference": "703fad32e4c8cbe609caf45a71a1d4266c830f0f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/703fad32e4c8cbe609caf45a71a1d4266c830f0f", + "reference": "703fad32e4c8cbe609caf45a71a1d4266c830f0f", + "shasum": "" + }, + "require": { + "doctrine/dbal": "^2.5.12", + "doctrine/doctrine-cache-bundle": "~1.2", + "jdorn/sql-formatter": "^1.2.16", + "php": "^5.5.9|^7.0", + "symfony/console": "~2.7|~3.0|~4.0", + "symfony/dependency-injection": "~2.7|~3.0|~4.0", + "symfony/doctrine-bridge": "~2.7|~3.0|~4.0", + "symfony/framework-bundle": "^2.7.22|~3.0|~4.0" + }, + "conflict": { + "symfony/http-foundation": "<2.6" + }, + "require-dev": { + "doctrine/orm": "~2.4", + "phpunit/phpunit": "^4.8.36|^5.7|^6.4", + "satooshi/php-coveralls": "^1.0", + "symfony/phpunit-bridge": "~2.7|~3.0|~4.0", + "symfony/property-info": "~2.8|~3.0|~4.0", + "symfony/validator": "~2.7|~3.0|~4.0", + "symfony/web-profiler-bundle": "~2.7|~3.0|~4.0", + "symfony/yaml": "~2.7|~3.0|~4.0", + "twig/twig": "~1.26|~2.0" + }, + "suggest": { + "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", + "symfony/web-profiler-bundle": "To use the data collector." + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "1.8.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Bundle\\DoctrineBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Doctrine Project", + "homepage": "http://www.doctrine-project.org/" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony DoctrineBundle", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "database", + "dbal", + "orm", + "persistence" + ], + "time": "2018-04-19T14:07:39+00:00" + }, + { + "name": "doctrine/doctrine-cache-bundle", + "version": "1.3.3", + "source": { + "type": "git", + "url": "https://github.com/doctrine/DoctrineCacheBundle.git", + "reference": "4c8e363f96427924e7e519c5b5119b4f54512697" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/DoctrineCacheBundle/zipball/4c8e363f96427924e7e519c5b5119b4f54512697", + "reference": "4c8e363f96427924e7e519c5b5119b4f54512697", + "shasum": "" + }, + "require": { + "doctrine/cache": "^1.4.2", + "doctrine/inflector": "~1.0", + "php": ">=5.3.2", + "symfony/doctrine-bridge": "~2.7|~3.3|~4.0" + }, + "require-dev": { + "instaclick/coding-standard": "~1.1", + "instaclick/object-calisthenics-sniffs": "dev-master", + "instaclick/symfony2-coding-standard": "dev-remaster", + "phpunit/phpunit": "~4|~5", + "predis/predis": "~0.8", + "satooshi/php-coveralls": "^1.0", + "squizlabs/php_codesniffer": "~1.5", + "symfony/console": "~2.7|~3.3|~4.0", + "symfony/finder": "~2.7|~3.3|~4.0", + "symfony/framework-bundle": "~2.7|~3.3|~4.0", + "symfony/phpunit-bridge": "~2.7|~3.3|~4.0", + "symfony/security-acl": "~2.7|~3.3", + "symfony/validator": "~2.7|~3.3|~4.0", + "symfony/yaml": "~2.7|~3.3|~4.0" + }, + "suggest": { + "symfony/security-acl": "For using this bundle to cache ACLs" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Bundle\\DoctrineCacheBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Fabio B. Silva", + "email": "fabio.bat.silva@gmail.com" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@hotmail.com" + }, + { + "name": "Doctrine Project", + "homepage": "http://www.doctrine-project.org/" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony Bundle for Doctrine Cache", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "cache", + "caching" + ], + "time": "2018-03-27T09:22:12+00:00" + }, + { + "name": "doctrine/doctrine-migrations-bundle", + "version": "v1.3.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", + "reference": "a9e506369f931351a2a6dd2aef588a822802b1b7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/a9e506369f931351a2a6dd2aef588a822802b1b7", + "reference": "a9e506369f931351a2a6dd2aef588a822802b1b7", + "shasum": "" + }, + "require": { + "doctrine/doctrine-bundle": "~1.0", + "doctrine/migrations": "^1.1", + "php": ">=5.4.0", + "symfony/framework-bundle": "~2.7|~3.3|~4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.36" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Bundle\\MigrationsBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Doctrine Project", + "homepage": "http://www.doctrine-project.org" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony DoctrineMigrationsBundle", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "dbal", + "migrations", + "schema" + ], + "time": "2017-11-01T09:13:26+00:00" + }, { "name": "doctrine/event-manager", "version": "v1.0.0", @@ -440,6 +753,60 @@ ], "time": "2018-01-09T20:05:19+00:00" }, + { + "name": "doctrine/instantiator", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", + "phpunit/phpunit": "^6.2.3", + "squizlabs/php_codesniffer": "^3.0.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2017-07-22T11:58:36+00:00" + }, { "name": "doctrine/lexer", "version": "v1.0.1", @@ -494,6 +861,162 @@ ], "time": "2014-09-09T13:34:57+00:00" }, + { + "name": "doctrine/migrations", + "version": "v1.8.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/migrations.git", + "reference": "215438c0eef3e5f9b7da7d09c6b90756071b43e6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/215438c0eef3e5f9b7da7d09c6b90756071b43e6", + "reference": "215438c0eef3e5f9b7da7d09c6b90756071b43e6", + "shasum": "" + }, + "require": { + "doctrine/dbal": "~2.6", + "ocramius/proxy-manager": "^1.0|^2.0", + "php": "^7.1", + "symfony/console": "~3.3|^4.0" + }, + "require-dev": { + "doctrine/coding-standard": "^1.0", + "doctrine/orm": "~2.5", + "jdorn/sql-formatter": "~1.1", + "mikey179/vfsstream": "^1.6", + "phpunit/phpunit": "~7.0", + "squizlabs/php_codesniffer": "^3.0", + "symfony/yaml": "~3.3|^4.0" + }, + "suggest": { + "jdorn/sql-formatter": "Allows to generate formatted SQL with the diff command.", + "symfony/yaml": "Allows the use of yaml for migration configuration files." + }, + "bin": [ + "bin/doctrine-migrations" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "v1.8.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\DBAL\\Migrations\\": "lib/Doctrine/DBAL/Migrations", + "Doctrine\\Migrations\\": "lib/Doctrine/Migrations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Michael Simonson", + "email": "contact@mikesimonson.com" + } + ], + "description": "Database Schema migrations using Doctrine DBAL", + "homepage": "https://www.doctrine-project.org/projects/migrations.html", + "keywords": [ + "database", + "migrations" + ], + "time": "2018-06-06T21:00:30+00:00" + }, + { + "name": "doctrine/orm", + "version": "v2.6.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/doctrine2.git", + "reference": "d2b4dd71d2a276edd65d0c170375b445f8a4a4a8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/doctrine2/zipball/d2b4dd71d2a276edd65d0c170375b445f8a4a4a8", + "reference": "d2b4dd71d2a276edd65d0c170375b445f8a4a4a8", + "shasum": "" + }, + "require": { + "doctrine/annotations": "~1.5", + "doctrine/cache": "~1.6", + "doctrine/collections": "^1.4", + "doctrine/common": "^2.7.1", + "doctrine/dbal": "^2.6", + "doctrine/instantiator": "~1.1", + "ext-pdo": "*", + "php": "^7.1", + "symfony/console": "~3.0|~4.0" + }, + "require-dev": { + "doctrine/coding-standard": "^1.0", + "phpunit/phpunit": "^6.5", + "squizlabs/php_codesniffer": "^3.2", + "symfony/yaml": "~3.4|~4.0" + }, + "suggest": { + "symfony/yaml": "If you want to use YAML Metadata Mapping Driver" + }, + "bin": [ + "bin/doctrine" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\ORM\\": "lib/Doctrine/ORM" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "Object-Relational-Mapper for PHP", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "database", + "orm" + ], + "time": "2018-07-12T20:47:13+00:00" + }, { "name": "doctrine/persistence", "version": "v1.0.1", @@ -647,6 +1170,56 @@ ], "time": "2018-06-14T14:45:07+00:00" }, + { + "name": "jdorn/sql-formatter", + "version": "v1.2.17", + "source": { + "type": "git", + "url": "https://github.com/jdorn/sql-formatter.git", + "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jdorn/sql-formatter/zipball/64990d96e0959dff8e059dfcdc1af130728d92bc", + "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc", + "shasum": "" + }, + "require": { + "php": ">=5.2.4" + }, + "require-dev": { + "phpunit/phpunit": "3.7.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "lib" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jeremy Dorn", + "email": "jeremy@jeremydorn.com", + "homepage": "http://jeremydorn.com/" + } + ], + "description": "a PHP SQL highlighting library", + "homepage": "https://github.com/jdorn/sql-formatter/", + "keywords": [ + "highlight", + "sql" + ], + "time": "2014-01-12T16:20:24+00:00" + }, { "name": "nesbot/carbon", "version": "1.33.0", @@ -702,6 +1275,125 @@ ], "time": "2018-08-07T08:39:47+00:00" }, + { + "name": "ocramius/package-versions", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/Ocramius/PackageVersions.git", + "reference": "4489d5002c49d55576fa0ba786f42dbb009be46f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/4489d5002c49d55576fa0ba786f42dbb009be46f", + "reference": "4489d5002c49d55576fa0ba786f42dbb009be46f", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0.0", + "php": "^7.1.0" + }, + "require-dev": { + "composer/composer": "^1.6.3", + "ext-zip": "*", + "infection/infection": "^0.7.1", + "phpunit/phpunit": "^7.0.0" + }, + "type": "composer-plugin", + "extra": { + "class": "PackageVersions\\Installer", + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "PackageVersions\\": "src/PackageVersions" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", + "time": "2018-02-05T13:05:30+00:00" + }, + { + "name": "ocramius/proxy-manager", + "version": "2.2.1", + "source": { + "type": "git", + "url": "https://github.com/Ocramius/ProxyManager.git", + "reference": "306da837ddf12aa5a85a8ca343587ec822802ac3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/306da837ddf12aa5a85a8ca343587ec822802ac3", + "reference": "306da837ddf12aa5a85a8ca343587ec822802ac3", + "shasum": "" + }, + "require": { + "ocramius/package-versions": "^1.1.3", + "php": "^7.2.0", + "zendframework/zend-code": "^3.3.0" + }, + "require-dev": { + "couscous/couscous": "^1.6.1", + "ext-phar": "*", + "humbug/humbug": "1.0.0-RC.0@RC", + "nikic/php-parser": "^3.1.1", + "padraic/phpunit-accelerator": "dev-master@DEV", + "phpbench/phpbench": "^0.12.2", + "phpstan/phpstan": "dev-master#856eb10a81c1d27c701a83f167dc870fd8f4236a as 0.9.999", + "phpstan/phpstan-phpunit": "dev-master#5629c0a1f4a9c417cb1077cf6693ad9753895761", + "phpunit/phpunit": "^6.4.3", + "squizlabs/php_codesniffer": "^2.9.1" + }, + "suggest": { + "ocramius/generated-hydrator": "To have very fast object to array to object conversion for ghost objects", + "zendframework/zend-json": "To have the JsonRpc adapter (Remote Object feature)", + "zendframework/zend-soap": "To have the Soap adapter (Remote Object feature)", + "zendframework/zend-xmlrpc": "To have the XmlRpc adapter (Remote Object feature)" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "ProxyManager\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.io/" + } + ], + "description": "A library providing utilities to generate, instantiate and generally operate with Object Proxies", + "homepage": "https://github.com/Ocramius/ProxyManager", + "keywords": [ + "aop", + "lazy loading", + "proxy", + "proxy pattern", + "service proxies" + ], + "time": "2018-08-26T15:07:25+00:00" + }, { "name": "phpdocumentor/reflection-common", "version": "1.0.1", @@ -1442,6 +2134,86 @@ "homepage": "https://symfony.com", "time": "2018-08-01T08:24:03+00:00" }, + { + "name": "symfony/doctrine-bridge", + "version": "v4.1.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/doctrine-bridge.git", + "reference": "58e331b3f6bbbd0beeb41cc924455bf85f660f50" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/58e331b3f6bbbd0beeb41cc924455bf85f660f50", + "reference": "58e331b3f6bbbd0beeb41cc924455bf85f660f50", + "shasum": "" + }, + "require": { + "doctrine/common": "~2.4", + "php": "^7.1.3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", + "symfony/dependency-injection": "<3.4" + }, + "require-dev": { + "doctrine/data-fixtures": "1.0.*", + "doctrine/dbal": "~2.4", + "doctrine/orm": "^2.4.5", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/expression-language": "~3.4|~4.0", + "symfony/form": "~3.4|~4.0", + "symfony/http-kernel": "~3.4|~4.0", + "symfony/property-access": "~3.4|~4.0", + "symfony/property-info": "~3.4|~4.0", + "symfony/proxy-manager-bridge": "~3.4|~4.0", + "symfony/security": "~3.4|~4.0", + "symfony/stopwatch": "~3.4|~4.0", + "symfony/translation": "~3.4|~4.0", + "symfony/validator": "~3.4|~4.0" + }, + "suggest": { + "doctrine/data-fixtures": "", + "doctrine/dbal": "", + "doctrine/orm": "", + "symfony/form": "", + "symfony/property-info": "", + "symfony/validator": "" + }, + "type": "symfony-bridge", + "extra": { + "branch-alias": { + "dev-master": "4.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Bridge\\Doctrine\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Doctrine Bridge", + "homepage": "https://symfony.com", + "time": "2018-08-24T10:22:26+00:00" + }, { "name": "symfony/event-dispatcher", "version": "v4.1.3", @@ -1966,6 +2738,34 @@ ], "time": "2018-07-26T08:55:25+00:00" }, + { + "name": "symfony/orm-pack", + "version": "v1.0.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/orm-pack.git", + "reference": "1b58f752cd917a08c9c8df020781d9c46a2275b1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/orm-pack/zipball/1b58f752cd917a08c9c8df020781d9c46a2275b1", + "reference": "1b58f752cd917a08c9c8df020781d9c46a2275b1", + "shasum": "" + }, + "require": { + "doctrine/doctrine-bundle": "^1.6.10", + "doctrine/doctrine-migrations-bundle": "^1.3", + "doctrine/orm": "^2.5.11", + "php": "^7.0" + }, + "type": "symfony-pack", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A pack for the Doctrine ORM", + "time": "2017-12-12T01:47:50+00:00" + }, { "name": "symfony/polyfill-mbstring", "version": "v1.9.0", @@ -2944,6 +3744,113 @@ "validate" ], "time": "2018-01-29T19:49:41+00:00" + }, + { + "name": "zendframework/zend-code", + "version": "3.3.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-code.git", + "reference": "c21db169075c6ec4b342149f446e7b7b724f95eb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-code/zipball/c21db169075c6ec4b342149f446e7b7b724f95eb", + "reference": "c21db169075c6ec4b342149f446e7b7b724f95eb", + "shasum": "" + }, + "require": { + "php": "^7.1", + "zendframework/zend-eventmanager": "^2.6 || ^3.0" + }, + "require-dev": { + "doctrine/annotations": "~1.0", + "ext-phar": "*", + "phpunit/phpunit": "^6.2.3", + "zendframework/zend-coding-standard": "^1.0.0", + "zendframework/zend-stdlib": "^2.7 || ^3.0" + }, + "suggest": { + "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", + "zendframework/zend-stdlib": "Zend\\Stdlib component" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.3.x-dev", + "dev-develop": "3.4.x-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Code\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides facilities to generate arbitrary code using an object oriented interface", + "homepage": "https://github.com/zendframework/zend-code", + "keywords": [ + "code", + "zf2" + ], + "time": "2018-08-13T20:36:59+00:00" + }, + { + "name": "zendframework/zend-eventmanager", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-eventmanager.git", + "reference": "a5e2583a211f73604691586b8406ff7296a946dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/a5e2583a211f73604691586b8406ff7296a946dd", + "reference": "a5e2583a211f73604691586b8406ff7296a946dd", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "athletic/athletic": "^0.1", + "container-interop/container-interop": "^1.1.0", + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-stdlib": "^2.7.3 || ^3.0" + }, + "suggest": { + "container-interop/container-interop": "^1.1.0, to use the lazy listeners feature", + "zendframework/zend-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev", + "dev-develop": "3.3-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\EventManager\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Trigger and listen to events within a PHP application", + "homepage": "https://github.com/zendframework/zend-eventmanager", + "keywords": [ + "event", + "eventmanager", + "events", + "zf2" + ], + "time": "2018-04-25T15:33:34+00:00" } ], "packages-dev": [ @@ -2953,7 +3860,7 @@ "source": { "type": "git", "url": "http://git.kadet.net/kadet/functional-php.git", - "reference": "f8ea3de9f7f6d2f2427488434d73edd8967b6856" + "reference": "0b58a4c6207d6e7b95902bb81e49b9ec207fc909" }, "require": { "php": ">=7.1" @@ -2982,7 +3889,7 @@ } ], "description": "Functional library for PHP", - "time": "2018-09-02T18:26:49+00:00" + "time": "2018-09-08T09:28:23+00:00" }, { "name": "symfony/dotenv", diff --git a/config/bundles.php b/config/bundles.php index e18f2a0..3a9d821 100644 --- a/config/bundles.php +++ b/config/bundles.php @@ -5,4 +5,7 @@ return [ Symfony\Bundle\WebServerBundle\WebServerBundle::class => ['dev' => true], Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true], Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true], + Doctrine\Bundle\DoctrineCacheBundle\DoctrineCacheBundle::class => ['all' => true], + Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true], + Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true], ]; diff --git a/config/packages/doctrine.yaml b/config/packages/doctrine.yaml new file mode 100644 index 0000000..dcc3040 --- /dev/null +++ b/config/packages/doctrine.yaml @@ -0,0 +1,19 @@ +parameters: + env(DATABASE_URL): '' + +doctrine: + dbal: + driver: 'pdo_sqlite' + url: '%env(resolve:DATABASE_URL)%' + + orm: + auto_generate_proxy_classes: '%kernel.debug%' + naming_strategy: doctrine.orm.naming_strategy.underscore + auto_mapping: true + mappings: + App: + is_bundle: false + type: annotation + dir: '%kernel.project_dir%/src/Entity' + prefix: 'App\Entity' + alias: Entity diff --git a/config/packages/doctrine_migrations.yaml b/config/packages/doctrine_migrations.yaml new file mode 100644 index 0000000..70959a6 --- /dev/null +++ b/config/packages/doctrine_migrations.yaml @@ -0,0 +1,3 @@ +doctrine_migrations: + dir_name: '%kernel.project_dir%/src/Migrations' + namespace: DoctrineMigrations diff --git a/config/packages/prod/doctrine.yaml b/config/packages/prod/doctrine.yaml new file mode 100644 index 0000000..2f16f0f --- /dev/null +++ b/config/packages/prod/doctrine.yaml @@ -0,0 +1,31 @@ +doctrine: + orm: + metadata_cache_driver: + type: service + id: doctrine.system_cache_provider + query_cache_driver: + type: service + id: doctrine.system_cache_provider + result_cache_driver: + type: service + id: doctrine.result_cache_provider + +services: + doctrine.result_cache_provider: + class: Symfony\Component\Cache\DoctrineProvider + public: false + arguments: + - '@doctrine.result_cache_pool' + doctrine.system_cache_provider: + class: Symfony\Component\Cache\DoctrineProvider + public: false + arguments: + - '@doctrine.system_cache_pool' + +framework: + cache: + pools: + doctrine.result_cache_pool: + adapter: cache.app + doctrine.system_cache_pool: + adapter: cache.system diff --git a/config/services.yaml b/config/services.yaml index 4d74763..0ea34cb 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -19,7 +19,7 @@ services: # this creates a service per class whose id is the fully-qualified class name App\: resource: '../src/*' - exclude: '../src/{DependencyInjection,Entity,Migrations,Tests,Kernel.php}' + exclude: '../src/{DependencyInjection,Entity,Model,Migrations,Tests,Kernel.php}' # controllers are imported separately to make sure services can be injected # as action arguments even if you don't extend any base controller class diff --git a/resources/icons/light/icons.ai b/resources/icons/light/icons.ai index c6ee7a7..486e3e5 100644 --- a/resources/icons/light/icons.ai +++ b/resources/icons/light/icons.ai @@ -1,5 +1,5 @@ %PDF-1.5 %âăÏÓ -1 0 obj <>/OCGs[5 0 R 25 0 R 43 0 R 60 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream +1 0 obj <>/OCGs[5 0 R 25 0 R 43 0 R 60 0 R 77 0 R 94 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream @@ -14,15 +14,15 @@ xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"> Adobe Illustrator CC 22.1 (Windows) 2018-09-02T15:44:01+02:00 - 2018-09-02T17:23:36+02:00 - 2018-09-02T17:23:36+02:00 + 2018-09-06T18:31:07+02:00 + 2018-09-06T18:31:07+02:00 256 40 JPEG - /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAKAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8AnX5i+ePzM8wfmdJ+V/5f XFvo09nZLf6xrlwA8ixOUqIVKuNhMg2XkSeqgVxVAXn/ADjLokllNqf5h+ftZ1VYV53d1PdJbWyr 35fWPrHFR2+MYqxC3/Ln/nDy8uRpsPml0utlE73hjQkf8XSxCDf54qzVv+cZb/SEFz5A/MDWtGlp ziinl+sW7jqqsIfQBT5q304qnH5N/mJ58u/N+v8A5defFt7jzF5ehiuP0raUEc8UgQguqhF5FZkY FVXY0KgjFWefmP5wXyb5H1jzMbf602mwepHb14h5GYRxgnsvNxX2xV8/aTa+bvzGsoNb87/mzZ+X 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 Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAKAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8AnX5i+ePzM8wfmdJ+V/5f XFvo09nZLf6xrlwA8ixOUqIVKuNhMg2XkSeqgVxVAXn/ADjLokllNqf5h+ftZ1VYV53d1PdJbWyr 35fWPrHFR2+MYqxC3/Ln/nDy8uRpsPml0utlE73hjQkf8XSxCDf54qzVv+cZb/SEFz5A/MDWtGlp ziinl+sW7jqqsIfQBT5q304qnH5N/mJ58u/N+v8A5defFt7jzF5ehiuP0raUEc8UgQguqhF5FZkY FVXY0KgjFWefmP5wXyb5H1jzMbf602mwepHb14h5GYRxgnsvNxX2xV8/aTa+bvzGsoNb87/mzZ+X dPv0WeDy7pF5DAyQyqGVJqSx8WofsyeoR3odsVTWH8gv+cbeXqX3m86lMRRpbnWLTkTWtf3YTFVs v5B/848xOZtJ88yaTc1BSW21iz2p/rAt/wANiqVat5k8+flPAus6P+Y2n+ffLNvJGLzRb66ikvhH I4QCJvUnlPHkN0bbqUKg4q+nNH1O31XSbLVLcEW9/bxXMIbZuEyB1r70bFXmX5761+YGnW+nroPm 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 2Q== @@ -54,7 +54,7 @@ application/pdf proof:pdf uuid:d992c7e0-91f6-4a5c-b5b6-13635ae583cc - uuid:938803d1-6397-43d9-92d0-20d396cc441a + uuid:674c91e1-f3dd-4408-81a2-96703ba3d577 @@ -80,20 +80,20 @@ -endstream endobj 3 0 obj <> endobj 7 0 obj <>/Resources<>/Properties<>>>/Thumb 11 0 R/TrimBox[0.0 0.0 512.0 512.0]/Type/Page>> endobj 21 0 obj <>/Resources<>/Properties<>>>/TrimBox[0.0 0.0 512.0 512.0]/Type/Page>> endobj 22 0 obj <>/Resources<>/Properties<>>>/TrimBox[0.0 0.0 512.0 512.0]/Type/Page>> endobj 23 0 obj <>/Resources<>/Properties<>>>/TrimBox[0.0 0.0 512.0 512.0]/Type/Page>> endobj 24 0 obj <>/Resources<>/Properties<>>>/TrimBox[0.0 0.0 512.0 512.0]/Type/Page>> endobj 27 0 obj <>/Resources<>/Properties<>>>/TrimBox[0.0 0.0 512.0 512.0]/Type/Page>> endobj 69 0 obj <>stream +endstream endobj 3 0 obj <> endobj 7 0 obj <>/Resources<>/Properties<>>>/Thumb 11 0 R/TrimBox[0.0 0.0 512.0 512.0]/Type/Page>> endobj 21 0 obj <>/Resources<>/Properties<>>>/TrimBox[0.0 0.0 512.0 512.0]/Type/Page>> endobj 22 0 obj <>/Resources<>/Properties<>>>/TrimBox[0.0 0.0 512.0 512.0]/Type/Page>> endobj 23 0 obj <>/Resources<>/Properties<>>>/TrimBox[0.0 0.0 512.0 512.0]/Type/Page>> endobj 24 0 obj <>/Resources<>/Properties<>>>/TrimBox[0.0 0.0 512.0 512.0]/Type/Page>> endobj 27 0 obj <>/Resources<>/Properties<>>>/TrimBox[0.0 0.0 512.0 512.0]/Type/Page>> endobj 103 0 obj <>stream H‰l•KnÜ0 †ś:….`E€ȚÛŠEWAtŃ},f $œ?П”dÙÓ"ˆÇŸÄ§HŃO_žíÓËł·>>[ófŒMÄúżÉăę»ùfcUțȚš§Ï_œęùÇŒYÒ%ȜąŁȘ\í~WŃ»Ùbt ȚnĆ;/æšžDŃnC\$J$»›­%S€Cï(HDljT\kÍn”șÔ°ŸÉ5ŹCŁˆv 9Ÿ«œńÂ9a%ș\a#G$Áć"É4Ű$ŹW—‹ űWŰ\Žäïˆ/JòÜMÀVi ˆE63BliRőjt7ƒ‰ń`h’ć’Ôâ2bÏŽ°Ÿ"Ó̈–Æ/{ŹÖț»›ńr3çíłȚ4·›łŸ['äçłm#Ȉ=NÀ#ś’È&vm/önŒ 8tFNš'%G!vÜÆ$œ] yq҃”a;‹ï©Za·ÛŹb넍uź}cèLTƒ†·C ‘ŹaźWćÌŃlśN±Óm’œ-ÉEI$ËEôÙ_„O(»áƒèąNh—ÿĂ*Ț9Çimí?reɟčđÈ@ZÂőÄęhÊ5#öhIڑw3ą,iBZâìbPe­E±ó0ŐÎn~Ê4ĄÉWtŒàNÌä/ëViî†9 5éò^]”J țîŹJhÜ .Ș¶«;•_€ :`œ‡Ë±q .úŽ[ŸnxI2­NœuH±_êƒqžn˘Tly:2êyđè—Ć2€tŒUYĐ.8Ú)śôÛé„/ę@AŐ sSŐeVă^ֱ͚ÌQ aš7v±NáRŻŠ&‹+ÈuEr3uvÀ•4ȘIĂPËèàܝÍVЀŽFêńPiű€LŃăBw3ëæi< 5Ìșź*xŽŰ8ÔĆA§ÍÄ^“Ł=bŽú61öû^Żöâš3yą~ĄêtB—ŻÀn~˜WóéăWóW€űŚrú -endstream endobj 60 0 obj <> endobj 70 0 obj [/View/Design] endobj 71 0 obj <>>> endobj 64 0 obj <> endobj 63 0 obj <> endobj 72 0 obj <> endobj 73 0 obj <>stream +endstream endobj 94 0 obj <> endobj 104 0 obj [/View/Design] endobj 105 0 obj <>>> endobj 98 0 obj <> endobj 97 0 obj <> endobj 106 0 obj <> endobj 107 0 obj <>stream %!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 17.0 %%AI8_CreatorVersion: 22.1.0 %%For: (Kacper Donat) () %%Title: (icons.ai) -%%CreationDate: 9/2/2018 5:23 PM +%%CreationDate: 9/6/2018 6:31 PM %%Canvassize: 16383 %%BoundingBox: -576 -1 2782 513 %%HiResBoundingBox: -576 -0.0009765625 2782 512.00048828125 @@ -103,9 +103,9 @@ endstream endobj 60 0 obj <> %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) -%AI3_Cropmarks: -576 0 -64 512 +%AI3_Cropmarks: 576 0 1088 512 %AI3_TemplateBox: 255.5 256.5 255.5 256.5 -%AI3_TileBox: -617.637786865234 -164.97509765625 -22.3177795410156 676.944885253906 +%AI3_TileBox: 534.362213134766 -164.97509765625 1129.68222045898 676.944885253906 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 6 @@ -114,9 +114,9 @@ endstream endobj 60 0 obj <> %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI17_Begin_Content_if_version_gt:17 1 -%AI9_OpenToView: -765 639 1 1554 988 18 1 0 108 87 0 1 0 0 1 0 1 1 0 1 +%AI9_OpenToView: -445.374531273435 996.372581370931 0.6667 1554 988 18 1 0 108 87 0 0 0 0 1 0 1 1 0 1 %AI17_Alternate_Content -%AI9_OpenToView: -765 639 1 1554 988 18 1 0 108 87 0 1 0 0 1 0 1 1 0 1 +%AI9_OpenToView: -445.374531273435 996.372581370931 0.6667 1554 988 18 1 0 108 87 0 0 0 0 1 0 1 1 0 1 %AI17_End_Versioned_Content %AI5_OpenViewLayers: 7 %%PageOrigin:240 240 @@ -125,11 +125,11 @@ endstream endobj 60 0 obj <> %AI12_CMSettings: 00.MS %%EndComments -endstream endobj 74 0 obj <>stream +endstream endobj 108 0 obj <>stream %%BoundingBox: -576 -1 2782 513 %%HiResBoundingBox: -576 -0.0009765625 2782 512.00048828125 %AI7_Thumbnail: 128 20 8 -%%BeginData: 5549 Hex Bytes +%%BeginData: 5575 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 @@ -157,212 +157,225 @@ endstream endobj 74 0 obj <>stream %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FFFFFFA87D2727FD06F827527DFD09FFA87D2727FD06F827527DFD -%09FFA87D2727FD05F82727527DFD0DFFF827FFFFFF2727FD0BFF52FD0BF8 -%27FD09FF52FD0BF852FD04FF27F8F827527D7DA87D7D5252F8F8F87DFD06 -%FF27F8F827527D7DA87D7D5252F8F8F8A8FD06FFA8FD04F87D7DA8A8A827 -%F8F8F852FD0BFFF8F852A87D27F8A8FD0AFFF8F852A87DA87DA87DA87DA8 +%09FFA87D2727FD06F827527DFD0DFFF827FFFFFF2727FD0BFF52FD0BF827 +%FD09FF52FD0BF852FD04FF27F8F827527D7DA87D7D5252F8F8F87DFD06FF +%27F8F827527D7DA87D7D5252F8F8F8A8FD06FF27F8F8F852A87DA8A8A87D +%FD04F8A8FD0AFFF8F852A87D27F8A8FD0AFFF8F852A87DA87DA87DA87DA8 %52F8F8A8FD05FFA8F8F852A87DA87DA87DA87DA852F8F8A8FF27F87DFD0B -%FFA852F8A8FD04FF27F87DFD0BFFA852F8A8FD06FFA8FF27F8FD055227F8 -%A8A8FD09FF7D52F8F8F827FD05F82752FD07FF2727FD0DFF27F8FD05FFF8 -%27FD0DFF27F8FFF852FD04FF7D27F8F87DA8FD04FFF852FD04FF2727A8FD -%047D527D7D7D52FD047DF87DFD06FFA8F8F8F8FD0527F8F8F87DFD07FFA8 -%F8F8277D7DFD05A87D7D27F8F87DFD04FFA8F827A87D7D527D7D7D527D7D -%7D527D52F8A8FFFFFFA8F8527D527D7D7D527D7D7D527D7D7D27F8FFF87D -%FFFFFF7DF8F82727F827FD04FFF87DFD04FF27FD10F87DFD05FF7DF8277D -%A8A8FFA8FFA8A87D52F852A8FD05FFF8F87DFFFFFFA8FFA8FFA8FFFFFF7D -%27F8FD05FFFD11F8FD05FFFD0FF827F8F8F852FFFFFF2727A8FFFF7DF87D -%FFFFA8F8F87DFFFFF8F852FFA8FFA8FFA8FFA8FFA8FFA8FFA8F8F87DFFFF -%FF27F8F8F827FD0CF8A8FFFFFFA8F8F827FD0EF87DFFFFFFA8F852FFA8FF -%A8FFA8F87DFFA8FFA8FFA8F8A8FFFFFFA8F87DFFA8FFA8FFA8FFA8FFA8FF -%A8FF7DF8F8F87DFD08FF7DF852FFFFFFF8F852FFA8F8F87DFD0EFFF8F852 -%FFFFFF27F827FFFD09A8FF7DF8F8A8FFFFA827F87DFD0EA8F8F8A8FFFFFF -%F87DFD06FFF8A8FD06FFF8A8FFFFFFA8F8A8FD0DFFA8F8F8F852FD07FF7D -%F8F8A8FFFFA8F8F852FFA8F8F852FD0DFFA8F8F87DFFFFA827F852FD0BFF -%A8F8F87DFFFFA8F8F87DFD0DFFA8F8F852FFFFA8F87DFD05FFA8F8A8FD05 -%FFA8F8A8FFFFFFA8F87DFD0DFFA8F8F8F87DFD06FF7DF8F8A8FD04FFF8F8 -%52FFA8F8F87DFD0EFFF8F852FFFFFFF8F852FD0BFFA8F8F8A8FFFFA8F8F8 -%A8FD0EFFF8F852FFFFFFF852527D527D5252F852527D527D5252F8A8FD04 -%FFF852527D527D527D527D527D527D5252F827F852FD05FFA8F8F8FD05FF -%A8F8F8A8FFFF27F827A87DA87DA87DA87DA87DA87DA87DF8F8A8FFFFFF7D -%F8277DA87DA87DA87DA87DA87D7DF827A8FFFFFF27F852A87DA87DA87DA8 -%7DA87DA87DA87DF8F8A8FFFFA8FD04F827F8F8F827F8F8F827FD04F8A8FF -%FFFFA8F8F827F8F8F827F827F827F8F8F827F8F8FFF87DFD06FF27A8FD06 -%FFF87DFD04FF27F8F827F8F8F827F8F8F827F827F8F8F87DFD05FF52F8F8 -%F827F8F8F827F8F8F827F827FD06FFF8F8F827F8F8F827F8F8F827FD05F8 -%A8FD04FFF87DFFFFA8FD07FFA8FFFFA8F8A8FD04FFF8A8FD06FFA8FD06FF -%A8F8FFF852FD06FFA8A8FD05FFA8F87DFD04FF2752FFA8FFA8FFA8FFA8FF -%A8FFA8FFA8F87DFD05FF2752FFFFA8FFA8FFA8FD04FF7DF8FD05FFA8F852 -%FFA8FFA8FFA8FFA8FFA8FFA8FF7DF87DFFFFFFA8F87DFFF8F852FD05FF52 -%F8F8A8A8F8A8FFFFFFA8F87DFD05FF27F827FD05FF7DF8FFF87DFD05FFA8 -%F827FD06FFF87DFD04FFF87DFF2752FD07FF7D277DFFF87DFD05FF2752FF -%2752FD05FF7D27FFA8F8FD06FFF8A8A82752FD07FF7D277DFFF8A8FD04FF +%FFA852F8A8FD04FF27F87DFD0BFFA852F8A8FD04FFA8527D7DF8527DFD04 +%527DF852A85252FD07FF7D52F8F8F827FD05F82752FD07FF2727FD0DFF27 +%F8FD05FFF827FD0DFF27F8FFF852FD04FF7D27F8F87DA8FD04FFF852FD04 +%FF2727A8FD047D527D7D7D52FD047DF87DFD05FF7D52F8F8F8FD0527F8F8 +%F8277DFD06FFA8F8F8277D7DFD05A87D7D27F8F87DFD04FFA8F827A87D7D +%527D7D7D527D7D7D527D52F8A8FFFFFFA8F8527D527D7D7D527D7D7D527D +%7D7D27F8FFF87DFFFFFF7DF8F82727F827FD04FFF87DFD04FF27FD10F87D +%FD04FF52F8277DA8FD07FFA8A827F827FD05FFF8F87DFFFFFFA8FFA8FFA8 +%FFFFFF7D27F8FD05FFFD11F8FD05FFFD0FF827F8F8F852FFFFFF2727A8FF +%FF7DF87DFFFFA8F8F87DFFFFF8F852FFA8FFA8FFA8FFA8FFA8FFA8FFA8F8 +%F87DFFFFF8F852FD0DFF7DF8F87DFFFFA8F8F827FD0EF87DFFFFFFA8F852 +%FFA8FFA8FFA8F87DFFA8FFA8FFA8F8A8FFFFFFA8F87DFFA8FFA8FFA8FFA8 +%FFA8FFA8FF7DF8F8F87DFD08FF7DF852FFFFFFF8F852FFA8F8F87DFD0EFF +%F8F852FFA8F8F8A8FD0EFFF8F852FFA827F87DFD0EA8F8F8A8FFFFFFF87D +%FD06FFF8A8FD06FFF8A8FFFFFFA8F8A8FD0DFFA8F8F8F852FD07FF7DF8F8 +%A8FFFFA8F8F852FFA8F8F852FD0DFFA8F8F87DFFA8F8F87DFD0DFFA8F8F8 +%7DFFA8F8F87DFD0DFFA8F8F852FFFFA8F87DFD05FFA8F8A8FD05FFA8F8A8 +%FFFFFFA8F87DFD0DFFA8F8F8F87DFD06FF7DF8F8A8FD04FFF8F852FFA8F8 +%F87DFD0EFFF8F852FFA8F8F8A8FD0EFFF8F852FFA8F8F8A8FD0EFFF8F852 +%FFFFFFF852527D527D5252F852527D527D5252F8A8FD04FFF852527D527D +%527D527D527D527D5252F827F852FD05FFA8F8F8FD05FFA8F8F8A8FFFF27 +%F827A87DA87DA87DA87DA87DA87DA87DF8F8A8FFFF27F852A87DA87DA87D +%A87DA87DA87DA87DF8F8A8FFFF27F852A87DA87DA87DA87DA87DA87DA87D +%F8F8A8FFFFA8FD04F827F8F8F827F8F8F827FD04F8A8FFFFFFA8F8F827F8 +%F8F827F827F827F8F8F827F8F8FFF87DFD06FF27A8FD06FFF87DFD04FF27 +%F8F827F8F8F827F8F8F827F827F8F8F87DFD04FF27FD04F827F8F8F827F8 +%F8F827F8F8F8A8FD04FFF8F8F827F8F8F827F8F8F827FD05F8A8FD04FFF8 +%7DFFFFA8FD07FFA8FFFFA8F8A8FD04FFF8A8FD06FFA8FD06FFA8F8FFF852 +%FD06FFA8A8FD05FFA8F87DFD04FF2752FFA8FFA8FFA8FFA8FFA8FFA8FFA8 +%F87DFD04FF2752FFA8FFA8FFA8FFA8FFA8FFA8FF7DF87DFFFFFFA8F852FF +%A8FFA8FFA8FFA8FFA8FFA8FF7DF87DFFFFFFA8F87DFFF8F852FD05FF52F8 +%F8A8A8F8A8FFFFFFA8F87DFD05FF27F827FD05FF7DF8FFF87DFD05FFA8F8 +%27FD06FFF87DFD04FFF87DFF2752FD07FF7D277DFFF87DFD04FFF8A8FF27 +%52FD07FF7D277DFFF8A8FD04FFF8A8A82752FD07FF7D277DFFF8A8FD04FF %F8A852F827F8A8FD04FFF8272727FFF8FD05FFF8A8FD04FF7DF852F87DFD %04FFA8F8FFF852FD05FFA82752FD05FFA8F87DFD04FF277D7DF8F8A8FD06 -%FF52F827A8F87DFD05FF2752A8F8F8A8FD04FFF8F852A8F8FD05FFA8F87D -%7DF8F8A8FD06FF27F827A8F87DFFFFFFA8F87D7DF8F8F8FD05FFF8F8F87D -%A8F8A8FFFFFFA8F87DFD04FFA8F827F8A8FD04FF7DF8FFF87DFD0EFFF87D -%FD04FFF87DFF527DFD07FFA852A8FFF87DFD05FF2752FF527DFD05FFA852 -%FFA827FD06FFF8A8FF527DFD07FFA852A8FFF8A8FD04FF2727A87D27A8FD -%06FF527DFF52F8FD05FFF852FD05FF7D27A8FD05FF27F8A8F827A87DA87D -%A87DA87DA87DA87DA87DF852FD04FFF827A87DA87DA87DA87DA87DA87DA8 -%7DF852FD05FF27277DA8A8A87DA87DA87DA8A852F8FD05FFA8F852A87DA8 -%7DA87DA87DA87DA87DA87DF87DFD04FFA8F8F852A8A8A87DA87DA87DA87D -%27F8A8FD05FFA8F8F852A87DA87DA87DA87DA852F8F8A8FF52FD10F8A8FD -%04FF52FD0CF827F8F8F8FD06FF7DF827FD0BF852FD06FF27FD0CF827F8F8 -%F8FD07FF5227FD0AF827A8FD08FF27FD0AF82752FD04FF2727A852F8FD05 -%A852F87D7DF8A8FD06FF2727FF27F8FD04A8FF7DF8A87DF8A8FD08FF27F8 -%52FD05A87DF8F8A8FD08FFF852A82727FFA8A8A8FF52F8A87DF8A8FD08FF -%52F852FD05A87DF827FD0BFF27F87DFFA8A8A8FF52F827FD05FF52F852F8 -%52FD05FFA8F82727F8A8FD06FF52F852F852FD05FFA8F827F8F8A8FD07FF -%7DF852FD07FFA8F827FD08FF52F852F852FD05FFA8F827F827FD08FF52F8 -%52FD07FF7DF827FD09FF52F87DFD07FF7DF852FD04FFA8522752A8FD06FF -%7D27527DFD07FFA8522752A8FD05FFA87D27277DFD07FFA85252FD09FF7D -%52A8FD07FFA8522752A8FD05FFA87D27527DFD07FFA8527DFD09FF7D52A8 -%FD07FFA8527DFD09FF7D52A8FF +%FF52F827A8F87DFD04FF277D7DF8F8A8FD06FF27F827A8F87DFFFFFFA8F8 +%7D7DF8F8A8FD06FF27F827A8F87DFFFFFFA8F87D7DF8F8F8FD05FFF8F8F8 +%7DA8F8A8FFFFFFA8F87DFD04FFA8F827F8A8FD04FF7DF8FFF87DFD0EFFF8 +%7DFD04FFF87DFF527DFD07FFA852A8FFF87DFD04FFF87DFF527DFD07FFA8 +%52A8FFF8A8FD04FFF8A8FF527DFD07FFA852A8FFF8A8FD04FF2727A87D27 +%A8FD06FF527DFF52F8FD05FFF852FD05FF7D27A8FD05FF27F8A8F827A87D +%A87DA87DA87DA87DA87DA87DF852FD04FFF827A87DA87DA87DA87DA87DA8 +%7DA87DF852FFFFFFA82727A87DA87DA87DA87DA87DA8A8A852F87DFFFFFF +%A8F852A87DA87DA87DA87DA87DA87DA87DF87DFD04FFA8F8F852A8A8A87D +%A87DA87DA87D27F8A8FD05FFA8F8F852A87DA87DA87DA87DA852F8F8A8FF +%52FD10F8A8FD04FF52FD0CF827F8F8F8FD05FF52F8F827FD09F827F8F8F8 +%FD05FF27FD0CF827F8F8F8FD07FF5227FD0AF827A8FD08FF27FD0AF82752 +%FD04FF2727A852F8FD05A852F87D7DF8A8FD06FF2727FF27F8FD04A8FF7D +%F8A87DF8A8FD06FFA8FF27F852FD05A87DF8F8A8A8FD07FFF852A82727FF +%A8A8A8FF52F8A87DF8A8FD08FF52F852FD05A87DF827FD0BFF27F87DFFA8 +%A8A8FF52F827FD05FF52F852F852FD05FFA8F82727F8A8FD06FF52F852F8 +%52FD05FFA8F827F8F8A8FD07FF7DF852FD07FFA8F827FD08FF52F852F852 +%FD05FFA8F827F827FD08FF52F852FD07FF7DF827FD09FF52F87DFD07FF7D +%F852FD04FFA8522752A8FD06FF7D27527DFD07FFA8522752A8FD05FFA87D +%27277DFD07FFA85252FD09FF7D52A8FD07FFA8522752A8FD05FFA87D2752 +%7DFD07FFA8527DFD09FF7D52A8FD07FFA8527DFD09FF7D52A8FF %%EndData -endstream endobj 75 0 obj <>stream -%AI12_CompressedDataxœÜœg{òșÒ0z>ïëÊ€@BÛôȘé)H#…êĄÆÀZ{=Țß~$čÉƍr?gœgŻœXË3Òhf43š‘źŹ–/7Z _ĐOX.țsuU`™țvĆ&,ègKu>ßm¶,üÉÙtYÈšŸ€­rŐX—oùÌ°›éj™°P”Ÿäž–àûÎzžfX œZö·.‹ÓŸŽ§Û9žM‡«ćÆߟșD”Ę߂gń 2f 'š „q‡Zô—ő7›éÿ€çd$ Âó«Ęr4]Žó«ÿ&,Ÿp4bń‘*Ł,a5šL›ÌF„á'"„#TXx‚ż…b1*FRaű2œîÌrÛ`WCfł)Źæ+v“°țé/-wę1xÒ·Œ1óùêoK~ȚÎÀ;čjž[šÎ0üEk!ƒˆč*Iuó»é|tż[ @™ IĄßƒ]őiÀÈđ;ú=Ú­.ÀO-f»HQ›ć<Țđ+úÇùȚdÆS4E€„Ÿ.2»Z/úìlĂš°ű"!8Nțy›YŹç€Țˆ,T8ì”GЧű]h -†ÄQ/Š?ŒFc‘X$LC€à‘? ‹Ôô&’Ńh4‘ŽX"ш?” Sá`œˆđ@%ò2M™ż–ûՒái˜c·-nȘC!‚à>ùGÍʜaŸ–Ó-*Îńn5bæà DiȚGŽCÿÒ'ßąĘgÇÌ0ÈjŸÛ"ț‰XÀDĘöÿaà|sÉh7šŒž–[Đëîô»ûÇśĘń6AFùvńîÚY¶WÏhH>@K$xÉp8d‰ÇbÀŚ°$łÄąČŽ‘ܧ€/7ß2,FÀynĆćšËË.3’! #$…@…(dÀàÉv -Ȑ B„üËsk™Ž$f%#–ÿQûYáÿH2Nq*nö—8ú_4B†cdˆ2ó O 0ï[0qêšná%ÂŚ‚ŁĂ/Ź7H™Àéò5_ù§Òè±[óäáxplƒ.!à‹ÿÜsÏbĘÆ|–ÙŐn]]~Ż.țăäéítÉXž‡ôšDô[ŸĘțœbgàÏêˆéKúhÇ”ËhkÆl‡%XțŚS?3C ÚŽ,ƒđ„•’„Íö‡`Äào±€`VXaüà]ô§đ_3ïÓÌ7茀û”žü‹™ŻÖ`źˆyÙgEą łôxÒł*„ ™í«)˜@Zր,Š|R `LĄêo'`ća–ŁûSê9 ś›ˆ…ț|>łęőd:ŽäÙĘfbiŻVsșÊsț =‚ošâàƒŐ|șYˆhđ_€‡§Ă9ÓúgłeÌÍ*~vù°äèł? -Ÿr`ÁàȚ9šśÿ»ŰÄ·Ô0‡ÿ7ai eÔpȉxűŸÿ…X„I.ŽŠ@!jŸn›Öß} ±o§A…dțž.G ß­ĘtËHČčZŹĄĄkiMúkIŽĐČ% ŁE[·|>+·4ąŸpk8pŽvw@ŽAX€ÍeôĐą«làsÖźęÇ—ĆÏw.ÎČîüĄi)CĐ@«‡đ°±(ôh·„ûçüęsÏ čŒęgÎ;&P_źț^ąż, Нw°öwóí§Ëžï/‹ŽiMéψËüìdűÏkțÒțh(„ÈPü7Ö&áDădŽĘà -yNęߐĐĄ[țÿ%ʛïżÿüę&ß̧Ăÿÿšq2…ę±0nHœˆZMŠ?Śț„™Ž'ŠdQlúŻĐăŸh<1ĘÍqöżdLhłÒpLOGۉ©qń-ÿcóƈxTbÌHÌpœÿ˜ă?ÿ’ńE”_­ôÆ3XmŃqË|oč}1SĂÛé_c_ ĆÙZíŰ!ƒ¶ÍÿXśțęX0ÛțX^gèLüäÎŰF|űÄÏa­ŃOa?ÌȱL?‡¶ÔV{„Ô!-)êÆjŠ6»'ښ—±4ÁcĄ§›őŒÿÏ]nFò’łƒŒőŽœA_…țcŽ3)è’Fź)B “†”ÉÌÛ«&‡ëAc”™Âιǀ0Tđaț5Jê;'üŐMŽĘV}vÔbæÌp+șŸ*-ű@ÜęŸ‰Ą$c vët2nÙțâP:ÂlŁ(I±Űż”qŰ­sr5Ÿ3ÿÁ˜$ŠŽ€h$ú7Rvë,̉–ÄÈ„bÇ“‚I)ÿ>b’u Vvu(5© q€Ú„ypÿBjFƒâ ÄÜ-gpŁìPrúŽÖŸă<+5“hł”AKŒ@ś;f4Ę-,R2Üç>erU’Žˆ{6(ʧZ1Ź„Á2fkÁÉ&æȘqËł™Xšę͖a§ÿƒ6Â0tü+Y±WvÛőnkô’0Ëję»í/Ç;˜ŽÔX­á>»O ~Àh=ő+ÉڟO+\rNŚęŃęęÀ^!Țp5g•čYŻ¶.i:Ș–Ün»Ç(/ĂâÀâ0• M›es-€eÌ2ą1ŠB@gj6Š,ŹÈ-†ph:ŹQĂàĘ%5*Ü2ŰŹ!ËÍș,çá?ÊtdÙHTiæ^0q-@Ž‡łàœ1—]aź‹Űp0žqËș“˜7ÓĆnȚ—łî)àÎț–ĐŽË€œ~Ô ûci3ÿĘąŒț`:Ÿnäƒ|_žær [Òđ(™€YüÌh=—»0ƒ3żúïë›BTfčjŁ,GđÜŠž00Śń{:gêÌ?ŠI’5}™L‡”ŠÜŰdmaB -æFą˜z»]‚Mie$pòÙûƒ‚. T\¶~ÁÂ&űÌ–oQ…Ž™Ă|Ì-˜“M7`Iž‰^:Ț:‚”î/·S Đ#}ĄĄ“Ë”Çș -HRÚÍçÂTóičà©$œæwс ܃žæ6@ïȚïÒ|ì0ćŃ°€Tú[èv5ìÏĄÆȚુVkÀ [„emńçms‡šEB”Ïšż… P̌ŹŚTT{ˆ,à­Ű4HE#Qž?±€I˜…ÜmBź(cچĐk˜—dWwȘm›ąf”6ՆëțPbäPX·q©?drËńœ1lF{­cš]ČX Ű>Ûțr(Œ#ă”% -Q{æ“òęÖ¶/Z#ą“ÆŻ–b HÓśRÆŐEPdXŸTĆÿn±†č!Ńdï…±hHŁ_„ùjĆâŒŁÇhš1Æ?†mÍđj(ç*B‘Z†ŁĂûŽĆc€N[»ëŽ4ÓYÁ”őŐ`\ßßFä%Í)+0óya”g,š ¶Ä–CJ»«˜ŠŸZÊÖ Jcűm,,ÙŁČ5«”€‘”VËíŠ „DÒbŃ(Iúă|YB 38#Ą”|î/§› X\â̋+òÔó(șŒ$?H{”Æ!h ČŰțyșá—oš6ŒäqĂïa^u9bț[šČqĄ `$YbA2j8`€WPO /É…ÙNŽ˜áj)K4§?§‚æz!’qŻ±H”’©9Sì„Fu"?I”9…Ą$(&9JzA‹5|a‚0ÆË@[ę/qš*%Ôv“d†Gńżë»…6 ČX6˜œK`.'nČȉóę…Êb,ƒț[xI Kr8Ÿź “:ț œŻ1èÒÆà•”à=ŹțbŰ5Ì””¶đa†+vČTFi ÜŻ¶òç‚u z.DȘŽšOR૖Ùțh -ʜțrÄ{ôș><śȘr‚…đ-äòìœ%ÇEZŠÖáÈžŚÌ`Ă(‹zX€łPàgĄ)›čQęuhÍç 5/čw,t‚Đè…KD<{Ődőwe:Rc$nÀŒ3ÒÒtFäíڒCâŽîr%q”eșD\ cRf)Ђ*ùkÆ»Ś VŽàâź’Ì’Śœê@x\րŽ«űY üƒévчȮNâ -oż/f~  -˜ŃêûÛÏmà -†”f{T}»ŚžTéŽünĂM”‡n\Úc@/ {+đà~ÈnŻ9ś`›+‹YLšœŰÀLóșÁćêÁ(‚dKœÚú©°fżGÌ7d‘żćîŸŃ ·"” ŁDƒ>k8#ëț˜™.żWzۇìÈżbÇțżt€Á6`,ëɊęƒf›áz>ÜłÁŐNt˜ƒ4\nôŠ6ڂUY -lš7ĐôOt A1Dúa…ń„ŚpÀg%è‚1›éx‰óL”Ò p `%żJ2T}@.æę5źoőê)-0?KfÜÇòeŽXmłl¶:ÄȚl籑3Ź9±…ïń/,eەșÖŁ ŻGčæxY)ĄÎëC˜E 2Ìž5’ă'Ź—XÉG–Á?šÄf À8Xw!GÆIà…Sqî]^“YhP–‚đžŁA*D‘šČĜʚçh™™ĄĄ; -—Ą99â€)±‘!d$sžÈlQI‘öRŽđ êj;a”›zŠŠ‹ńł.ŒáâqÓ,ç-Őb!BÆ#ć' ŰBÁÍ T˜N•ü7Œ ;b7rćgÀÜè…țrčÂč?š•àăoôÌ źćn94j#WŽjôÿïèš5ÚŠû{=ɗ0• ””9łjÈVëŃΚĆpeÔbł— ĄàQHF"‚V@0 ƒêŠl;鏖1€8'‡h'Séì*F   Č{ź) -’š5«y±j yq+‹è4äö7 š'E+ÜÿìË&šÚEčiœ·ÌaT"'Ž¶`„Vœ ­Ÿ‘AÁ ”0žàBfă\k0’Q”Bž’·0Ÿ é -FŸ\~„p© û_ÌÂYà,ÏŒbVè(꩛Ùt œ–ćL‡yđńéê\Ôž"őQΔ՞ł…qLŽ›4Ę&ŸŚ­ç2x8œbŒIIPÇ)ûïÁ]"žŃŸUu æF%M<‚Ü˝«ąäaô;œM¶…”ž ó°G8ŒWÜmŒżU:–êÀôTpxB·éœöËțúe–Ę»Ő_`œ] '{neŁ 3Fçr 3QËFkőÿbî€=:Ò&Äź7MŒCöÁĂÍi5b Ïi¶ÿ·ôÜHdïŰو–Źc5ـìÙ K]!ŒPόšŁša[ßΔ”Í㖯qó[}Qh t̶ܘ†ÛÄìY=rp˜.őb!BېÈf!LŽnłÓ…ąÏ:“2_±yę` ĐšW•Ć՚R\úë”h°é‘A Źë· Á¶B,Yż)ê@kÛ_Ž€ rŚž…hç¶CȚÂ;’– –žćï łŽlúPd-ę%~RšږțțÌD—Ä$9żćiƒ@‚O9°V; ĐkKËjiÊ>Aš9pățt 7&0D^ @&ŸșĂŽlWбLŃ.Fß2ïÿ“mçSN[6đĐœê’F±B ‡m ˜uz·ú–ĐO7>kŰŻ/ă5è!;]„{„Ö\ČkÂȧŰAŃXN‹Ùjć›ê¶ŠÀTw«ćj8aW †ƒä -ÍնΎYwÓ°ù)r“XèŻč Ç©hC«zä"#ż”ú’ăÎ0”©)«Æ€ąG»8ą^áh 7”‘ÁpŻïśHÔAšcÚČCÍ7Êlÿ,òqŚÇ$M3!˜€ŸbĆŃÓB@6QWÛx˜ÿ°Ù”yÈÇaĂŹO—#ęnêæV’ș<.eî Ä}<ÉĄóS‡‰ -œÛĆӚ( ©—–"I^ѝčÁJŒMȘûŒ8:aŚë)BŹ>D#ž–0Ï5.qm,\ße7_= o{ÉhkzŃ{ŠYÔSę<)—üÂ2•ŻńžùÓx”zሠú>·5ôYVÎû«C)L›™Ą’æȆ3kX“ƒÌ”ŹŠ%Ë\o”übU]Á:Șêa1{]W*!#wČ=Ù-ËțtnrQƒ Ș#°äNż§{ț° +O©7cnä†ìjĐßrGUÖoț\Ÿ°„Qm'wƔ… -ú -VĄBöŰ'€û6d]IŃʄPș4/űnAÒâÏ8Ë„ zŁ‚Ë›Ÿ -înźUšVcaš4DOC™‡ëwOêćƑìżzkÁë_>˖“Äxi­•Ź^§Ł0íû7öÈS„±%ČOćô](“žępÜeÙĘ0Z*Rw±+2ČĆțĄÇ^žM~ùĘٔwœÉnêT É&o­ŹĐȘ¶Í+·ÙTˆiŠ7é!íś;Æ{žnGoa”.]%ąò–țù̇:>on±șĘäȘ­íēŽŰv%:dÉÿÌ/ ęMÔȘĐìŃűwôùńę#Ś.űŸ”±âíŸÙÔŹô™Mlü íœÚ•œćŃ7@ƒèUê Ąż?_ąùyvțšűÎO¶…IŽCÊ(Ò»Š‡äío6•qŒp€@§7…ŻńŚ -|»ț„«ŁȘ5ï‹ęŰs-ŸmÉuâ”?Ú4ń§gX†…Iš›L漂Śžüœ·çÉO„łs§Ÿk¶Ir8ìÏà·©§ű};áP“D e§ö^búUćçW‡ő|ìr·­ë_8W6Y›À"ÉçÏln9t,<7wÉ@tńq3F›ï`ŽVIÏ,AŠ ‡tmó (u0ї 1JL >˜dòîÆéó2ùyŽ±àÆđv{•-TS¶—ą7†'yÒŐśˆ--ŹŸ<©çŃ{‚Ű>Üôò - )qÛàŽŒG^"KHȘt~æŠűx}Ęä§íŽôSŚ%«§ĂB4űà AAMbpY Ą?<éRŠÿ–z)Öčöo±ÇAŁȚš*ààW“Nœßđ€^nRÉŃÏęšM±ÇȚC>, ­ò5± ŸRHçM¶bBè·°5OwčÁ2— E:‘ŸaźMÿxèï@ę·Űï;ìùÈàé1Țžz}Ê=ò ú»5ęÍț~&à)őùĐ[»ËŽuŠ]ÒóœœæJôÏK·0ꉒߋ«q©đí& ÓœhŽ9ZIc­ßE=śp뼗hŚšÎQG 5'¶kÿŁ'óÜÿ憔ŽÄúÙd{{™kŚ¶»ęÁ)ˆ‹QB˜ŒWÖ*€j z(À€Țbgt5Šz© M”>ČAÄ©^ȘDq{=ùUüK9_rââ“+LÇ>™Éf‡èGƒ“Șv[Îuk$⛔gì•œßuŽH”;”Ëț•âz"§HdŚŒ3%çőÚU˜DšłąçÖ_’űÈÁÛ -)›Vq5 €kq gsƓâ&š>5sŃőąœ‡Feț,~Y.úŒƒžÚŽÄgLœĐäÚw#P6é8ż}›©ő5Ćڕ߱ß@xŠA•Cwûìłm”\yČD‡;”']îÁ#]„Ąq żKE:ÍG|ÏHśűÉÊła„œ”;ÿł-òóćó*ŚžŒÚŒșG°.zWśTéÚ}Ï5ż'đÚçu>âčđȘÓE;*ĐßՄS‰Ć禊 Ń†úg;Xʎo^ĄŸïуĐä%śt5ÜÈÛ]çšíśyìgîK!í&­ Ô`U#Rù™s=-„Ê€SőŠ»“Ź-˜ê&‰ÁźèŒù}‘VĆSÈĐÎmt :ÈŽöÄzžduó ôśĐΓ»ù{źŐ«ű§ń\/›Șü IïèƒÛë<ÙÙus­];$=EĄNż,Čì0qÍM.š·TæĄ°ŒFë}QÛŸg‰șsQŁÁȚ!(  7Rv˕oqżńĐĐžűș’Jb§•XoS”ù Hź= †šÈđ’ _ƒr€ł*ÂőĂÏ lp(č ™Qę•ÆiâìK/qò8.ƌhZűsDC2 ±»"Â74$8nŹŽčMèğëËRÖÁŽđMáëG<·«çű¶Ô»{K”Źn?\Öfˆ €Ïìz–}±= ÓŻ.…9Yd8ő|Ä,+Ś#fŽk;V»'`Ž†ĐČQóŒpłćŠCŚXwOáÁ!yoE/pÆ:)ٚMŰČÏgžÍo?Ž˜)ĐD“ÛR.œ <ŃçҖ«ż”–ȧęûXieSŸè%]óŰÂ2űžĐy•–udC+–æü`L3îâ-ź0Öf©ÔuY'ÜȘïíß\ŁêúP_ÛóÎ=ö€mÉÁêDÎVxłlæ9òO˜ÔÂȘț#&5@Ł°ȘŃàx_‚Ź|Đęeùű”Y©H?±‰Sčș&ąÈ‰žEŚ9kS}—D* 4nn#ùRȘűá}/żŸïeÖń‚ ąŃ§OŠŽLőÇM+0mŒù-țž©Ëw}wҔ/ùò”쎧«o/šv• -ŁĆâ}žG±ž0t)G3ąœ7ùA$}čńIr 9P<ś|Ź«ćü<2~—Ü)šQ>§.0sW߅éfĄż}ï Êe«V`“€ lâłń^Ɔ_`ÍèWš^Òʀ ˆÄh1'ˆZ™Ź!%Š'_íh6Y»,Ż/'V‘Đ7x€œÖ*~§Ę°TöÉçĆkŒß8w“ŻŽŻżč"ÏÇæ~¶Bz…žÜĄ,eYvòJÜœd”$‘Iö 3œ5â;^šò†ĘàïuŸ’íòé}ڈ.ń§(ŃśŻ\?gòdaj}w›€ û$WÎ~ŻŃŒÄŰx©ôő]t”rU ïˏNŽĘ©Hկ”<ò©w͏„DQAÓöù&G -MyI–C3)ÆZ!ь%9>/­ŸÍˆ1Ț ÆćÙäà1—”yv$˅ú\ Fp‰ 䧅É{H|äź·W xûtóMÒż .ü0¶f3CF˜KÇ.ŹÇ\H0CˆÇűțö[ĂIoj솚Ÿ—Sbš˜šő~!ÊqO\mOćæ#ÄÙ,bűȘ|8ríÂC‹ö7GŸlâ~6•–0‰ûžűëu„ùš‹~ŽȚ‹ȚŐĘ.ÌʒeĂG ‘ÿ°lŁHdțrđ€1[‹oš_ÁˆN°GŚë«dĄ7ˇ€y «CÏ#ű­Mòöß[OJ>à°;/c­äșSˆ1űèLšÄę89-ÚŚżró-0ï±ö”œUêÚź›„n#·…ńízśÇW30‡ńK|ȘxĆp~}ô “Î Čzžő)’rfY_|—{tÓßy_‚Y+°&ȘőŸäzklQEŽÄ·ž›úęˆ-â^ 5ĄÓ VkU✠-ɞ9& óŐ`0ŰS0‡e+ÏŃWö7O&f -ڊ>«?ąœŹt<ßčz]·U5òHR{Mæ­«Rw„Čń^û(3Śaș^”¶â«ŸRvS»ęAí$ełÏK…é„=ÂËcą:‘_{• Âïn&Ùçï§<œé5n6ò <ćÏš .kčpćł*7_ùُMóęâW‰zÊ=&_ź0™ŸÈž“źm0‰)â/_•?șčeù©/^q -€xÏ?ÊÆ'č9gú.Ślgqłœï[Ű”·î\ô#YÈ&^~§Ń—`É”s«=ÆŁÂłß|Űéä–ś/ŽR„ác™ôM$ÈÅíÓęù!c•LUK"¶KĐ fœŹìŻùÇ«ŒűŚ·ô¶E3ë&ÜŁÌ,›JŻïsOzȘ8p„#ZMžÁșàÚÀő1'j&H͊­TÈ}ŽÁ‡Ż[ąw”*š7»ò”+@x’„xhŽUÜKÀĄŒÓÀÊßs;é‰4[@CŚÛ…IxÛbš‹)üć&ŒæŠèqGŸqË|űÖĘüWöÙŸĘÊ䶇¶‰”Î'6fš’ƒWĂED"7gÍóč'r­íû”țŸźÌca6ù‚vr’ÌWcąÂ4žœUaŹsĐv_— -ùžÚpśÀà˱Ć~ïʉÏê0»ŁÇ¶7à›8‡ĆaĕÊéÚBÁ·Iæ‰Ò”»§W X+>ÀÚïe$F‚x"‹ˆŰ»3œ†Żśß çć-°:_{tí&HżŸôw{é—àŠ*t7ƒP°.$jüÖp$0QŰżIGzńÜĂjžŽß‡»50-Ë&0B‹í\4Ț˅ò‡łŽÀ·‰hwABÚfčàÖMçšË;ș8űîȚšą­BÎűX[ˆÇâđ%S -±ńvP0˜7ŽW”#rYș»†óP kÖoB Mžł{І‘~ -sáÌśmÉY/Ç1ŚJGdqîæFK\ÀŒéĆażĂŠ7™èSʏïwùŹ3±±˜]­B«(ŸÓLêë2Śxì@čÆRț_ăč°^쌧Áïgvr­Áú»DÏɖ{š»_`ąÎđc«@(Bé"ÿ&Ï:r«Ü·g7 ĐWœXą("ź -cMÖ¶€ĘŒŻJ3 yöç]ÉДŻJ•rìĄZ $Àă뒎à|TïȘCJjRŽ:Źœ`tŁű'ü †_àz“œ%G„bŹY‘â3)œm«3ú2mż!Ą«ïMê XVÜS(yńgÈ\qŁmG; -荎:‡áa(ÉęűpŁL$șűČ/8łĄțRÈ'Kę+6öбșˆïźï.pśń†6q-Ž ­^K…O·tçцȚÛž{źÈpđ|ÄŃ"]ŒóāáÿâčȚe3źçÿ“ŸK)XŒhy@u î‹ár„J.ęÇŽâÚ) ĂA`ɉŃhTH<ȚkÖR9VëA€èßušQ/ÈeĆoećčBi«j™Ę~,EHgŻ7Šÿeæ †ęföktśN7[îWj ÍÍ犳ï“*UyŰćЊ‡aZ$w1,­^üćKâ?©§?zÒá^ԓyˆ€çÎçÉL¶Aű -„AńÁŁű =H3ímžțŽ—gÀ°șé™|K‹OÁ:ЌLŹź`ćÆê 8à¶șՓž„ŹźûNÜêLÁłȚ·ßêÙ%ZVïĘ+mőwžys"üakÁőÚP›;Đ;zÊ<ôÒÁ|,Æôą“òőJ+ä±IO‰J—Ág–Mß rȚő}-[oÒ±JêĆ_ZuBÏEöŁCНÒ[»t“»’î\tI˜'ïŁˆZŁY *œp€êY+€Ś1yÖì @cą3,›±îòœ»Ę]ź>$ź—Sw9ŒœË‚N<·Č-QJ|>Đ«xŻćˁwk btęF‹XáUŐüdÜŒ…8ȘæW›{î?·– ŃS"đ:‹*›À)`?úï!đ6¶ó€ËÖki țÀ&VŠvoœÇć9]‚›ÜŒČŸ.úŽ„ZÜŽHƒ/{:ĄK*ᯑKŰß ëçS„V`ćĐđˆĂÁ«…”Ç~țnŸ4°‘fßG©bĘÄ^H€Fkž•Pü*7SǚșŒȚ8ì«”VvŚó۝{óC -śDÄD‰È€4°FlöXò;źŽ5ôöA”ÚùGŐ±^–ÖđÏ«‡é]SmžDÙ¶șŐÄêšĘ†îŽ(üÄ~ ©ÄêBXč$h‰È—/Á«đÖȚ ­öŠ6aOóX‡‚ĄBíhyŽ°ùćXá~7ûù?KV87ò©œš-ï -ZXûDÙÛ{VÇZ&rÆ}SĂ -çfkófxÄo>§Bx2śĄ›kžæ2Źqő‘«{k…Y "…:M9ÜÛśN_kĝJ_ZXiâÎęWĂ -Đl.«ż‰ì{ßDˆ•X[IGPki Źï>ąŐu]"Ź‚†Æ‡[Ż0śï—Sëłc9ÖÄښ<öjXŃČz/ÏőuJÈ·Á«§R6uŁŽu]»ÔÄúÜ-_nV€FežÄKŠN«cœK»_ŸŸȘX?fU5ŹPCCÄ?oáQIƒÈ1âs3ś©cœÿY/â± *ÖnŐ·DXŃzł?\öȘć±j`}{"ŠÓEMkìȚwiÍ~úŠkâW -Ń ”ëF»üpA—Bx\ÛŸa„igE>Ö[ąçNä VïȚÊÓęùœ&kĘ6 ;źoŰœ%ou}ĂcĘf<Š±ZÁâïâ°æßÈȘ\)zÙÍSÚ -±ú%Ź ŻĄȘ>až…­«'YčŒpX3dʧЋȚu蟇°í‰B]ŽŐÎČęŒ -"&”ĂesÌJ`ăšU©Ă?‰<5ńèWPűrĆôÚÜzÇô»„Éź<]­ŠÒÓ·GrńŹőt Ă«æS(7î}­ŃÌĂ”§ÀÛXÌU<ÄÈźĐóÍ,Š|șœ\Ÿ -â©Ö Úš&>4_QîfOûé€ÿćP<ƈ±ćšëÎPóő[Ï2Ci?<|'5Ÿ4—ĂAEŁAŹr]I=mž§ßŽßžâő'Ï4ùĂ?%/ʧƒZk)M„Á3íìO•§/Wƒ€Uû非Q<•­wő”kŸțłmŹ+šOgÏTțQó)@ł˜•Ò_Z @'“aͧ5*”~Ő|:\Z·:D»¶^W?ÜZŻ_swFóiÊ\’:DËY)»+ĄńzžBoÜš΀⩧ęžÉđO ț”â)@Óî•Ę9­·=#˜ÊjO3ìț4ämòNaĐțè)űÜbäx/H6tïjŽü7Țy+uĂ:Δ”CÏž`őŐâoÀ3țiĂ?ü­dőÒÍüxj/nGŻ!Őéč㔠°ßÌ J”œ€7 ż8Wű‚‘¶ÈÏäœ!àŒaRž‹-ÀÓ|Ę!gˆsŁŸSąÓo Lo. ç.‹ĐòÉT7ŽŐ“ąÆX#6ÛÓzț.łpÄĄ·Ž&V°$ꐚX‰Òś}K+@WŃĄúpCo#kšeÇ°Æîó- ëèúÚ&aĘŰ&LSÄD -#rúŚŸ‡[žË°șȚ4± -ßPšX! @ŚBBŹ.t-Ÿ4°Ÿ}jőČŽ Ém9bäZhb…źĆDkÊêŚÄŠLőÒ­CsžÈNŃÄ -”¶l^™ž€}ăgzk…Îhaą©ëk·X¶‹Ű~żŠŻŠvB0EÖ4<áčWy0đœ IÜs. šXÜ-]Ú±Œžčne -œ˜Ú^é#œvŽÚ|Hj(HŚôڕZ‹ F:^±ÿ N€ăćw(±~ąJ:ŠW6°<ôŠÿđȚ­x Èž0HĘƒ»YsMdC€ó C_‰M…ăÁ‡ŸÄö4DSƕ]Ż–:ęÔ^C‹uçÄyŒrÆhŰž†)v22âÔ'já«+ô9ówÔú4‹W5ûÄÙĐ;àà;/ćÈU)ŒŁˆ&"ÂSŸ»|]Aű=ȘĂŸïœëțˆâÊA:Ź&Fˆ> ç°u‰š`ÁŐiŽ‰#tkŽÚÄOúsÈÍÄ4źÔU^8(|44ҝÿ)A3ĂóIŸDzÁČ9šżÊżÆ—53ÔSç ’Ž •ïÄkGÒKź…\ --Ѐ}ćó.N«*žo>«B‰'Š:ȘîM)žâŒ2ž`æč}gDëręšWMÎĐ3ăbțkžöxŸĐ<Êr”);hHĐ[|Ć:!ȘB…ČéčźA_iu=óæ]“}»Łb‚6š„á–5šĐ€M`ČòÜ$24Š©“™T…Fcš\Ęûf@ż€)}H§"€ęËŚîlÚHïé…ïqŁB©ÊÙšIg±ź?«ü˜R)úœÏ `„P -vÚ>Ž‡G±[XßÀh¶eՎ„˃Ö0ł(fł} -ìYg:Óâٟ–QYŃCŁŃPD{Ź=‹m4}SRî큍óŸŐ]©T'Y…eH“ŠÂžUŹTŠȘQYź”ś—)ÀŸĐśŚbnm35ŐóĄÉwGŻO‚-ÀuKÛÖ§ÏÔÆíŠ9”yŒĄĄçÈæpyev›Ćjô*7'sżHCh­ćčű ,0 -Pâ.î1ĐȚôœ‰f`đHŽ.{6ąÉ”ÛáD[ăì֋Č{Țí6­Ș„eíËčrˆ·ŰÔÒiùŚ‰Ő„ő$^]<·™Ëó‰gțőŚn֝8ßV!P†ŹßD œîŒĄèà‰JoĕZۑà–5hhšcő`Š'hÿÆŹšĘ}Gcą3r«óˆž ą)…ëîŃXGÇó~WăÎ[SóčĘQ)<Ț”@RŸ›‹ƒƒoUÈűEę`ŠQ’˜ˆf˜„Dž–ÀuK0GÌyÍÚ}ČÆL«‚Ïí• Á8­©« -Ș‡šŐŠq0HǑ„ߣúŸő°·Ț(˜WËÒÿ©ÂmĆł#äÂʚÓHoÉâçŠl>òĄáșØÍçf<œÔ%}/ÊaŠ^ZÂźÉŒÜš -{ĐŸäÂ^S -»Ș·‹R Šæœ<5èPSr9śÈŽÏ±šÉ{€żŹh Čî8ypÈČI<ȚzÍz YÛÉWj枀ž€^,0Ă/uʐx†źí-ŽG‰5žÇüŠFĆČfHŁè B)nÿŸŐ 1A L)ÈBr3;»Cf¶<Ü ˜ÁLüŃŰÌź+Ìl5č1AŸÄă•~wë"gÙš/ÁÌSÔaÌ&ÖĆ:"š|iM†6gæÂę.J -ÁÆ~SrÄŸShRa„‚e–-đȘ|àŻ-ćVæŃËßk Ą9S”tLKŃĐPxÌnq(űU>7pòô—AŒ È=Í bCò@ZąšE2 Tșρ  áó:[ UĄÉv”MSû°ŽÁë”[ą”M«ż=ăæâd”%{äòłç{Bh”ÿÀBMjț0nDMsƒmšëj·ÍÌ”§Ę63æFd^mČżúÔä]\]3ïőédí†ïŽłi·'…v;΀‚탎›Š“wí  íf‚ÓŒk7Î4t†]\HgGɛwŠAU ’OššŸqŸ©n»đydBź#đˆöąêđ7•­ÜŁ2șà–ș)}$Zl껞 ńújÒìÎől5•/`Âæ/H j xecBă<ŸâqKs'O‘3uŒz€Pö­~ŒÓdœUĄ€ą–ƒixȚvGÈiÒÜ,Ö”Ś•Đ ă^Êü4œőŒĐŁ\Áo>$ۓÖ^û—M͜óNáëËùŹÿ”ĆQ•ÓÌŹ/9àò $>”żGZÿŠ™М Haę·Ź!@‡XÿZËtČőĄh.ŽÜȚAëăÇŻž<Ș/Ž -Wč>vśwáo'jP@™Ìò’R;4Ç߅‰Ê:ӂSSĂ>ÀeéUSÈ%OÚŒœżnë„^MÉč%ŽˆfJۍP0›~MsX- N=vW$}˜c bÔ-“lĄ.dÊeȘàś!ÇC±Rüڝ>ȍŁòŻŁN–jÖDjœŒcÚ;ˆšȘipš,3ۜ1”B3čęc°śAíÉúíY‚)€hQsqh­ù„vÍű(mOúm/K“-Lő c y^çAi±Ò—ß-U~űŠ|j3¶ú–]«śù«hőć‚_°ˆŻxP9Ÿ~-Jđ?G9Ÿ~-ŸBÙ_Χ_ËÇ·§—óéŚò]ÈK/çÓŻć»P”.]Χ_ËМ§œOż–ïBQșxt9Ÿ~-”›ł”óéŚòqZà ć|ûíđZ>Țń8œœO?{ßóÈr>EŽb WÙĐ0“„€ïË >íJ$äŽà˚™n©śI?9 XŒRî AĘVI™ßzP@ -ߐ€•¶±!©ŽàwYòą„#I„H©JąÓ…xfŠz‰›[Æ·*yl7§‰Š4RęažÏĂUšY^žă6Ç Ißá#”ŠČ;y K—đș} -(7VŽ&ŒQ Ë@nôëśLï L+&*kđmQ™É}DœđÍ»ĆR­L„˜h无pł©±‰psńÈü…xóÙ -Ê«“y?żD=áÒšìîàü57 -–ʝق…r=àÚhç—(œ‘Ą5•ą~Ą˜±ÏłV€%ôÈęMŸőkÄîfEżtUæïMé š§)æ@™­{í_Ț©Ö@êÚ4Ā^:™&mČ@#bYl­ˆš€ŚŸÎVŽl1CZ&4•őšUƒ)Ú5…;Ł…óšÂ~ęMăÒź‘»Tjó„Žû}šŰŽú”•"Ò|ʈŃ4dȚ’–0*ËŁž*&”é9d59ȘVçЌ\¶Hë@3*Ń1옎œ -Ą$ó0LEĆΉD3,\=ˆhF§5èvLLËwòŻo>yUEż|ÇŹ™ Ś1Zl,ö•iFu{܁0f—èQ_$üèi -9Ÿ«^9›?8ź(üA”\ŃԄa€(Ô`Êf\1:ÊEšîCKöđŠă™îf5M-‹íŒŽ€I5<5ßS›"Fćșš{: -e†d(ńČšN Ab#™—R„œ=ÄCÖź5R#œC”@ƂeY»žÔçf«čÆd§U‘àkÛiÉțOUMö•vš9R RáČ|hXÁ8(üF”gs@·ä}ąÌö‰Bê•ÂœŃ/ö ‰TÆ”žzʒGoüûћEM?zŁÂiћÚ)ŃIِuûyą7A{úù&ą&ą7”ł$'Î3Ô/ -Ńővóőp&Ł7H<őêáNŽȚÀ:žaŰÎmŒȘƒ.țcČ@ ÊeïD• ńđ,±46ÓȚrCșnTkhH_đf3O›țÀ 9b]Ś ÿ`Ć挰è˜*f•‡4i0ž„óäÁI–0ŻŽaÔÌӕv,JÁ„(QY»ÄO;ÂôP‚źÜä8ČÄÏ8!Đ0EÒæ”bV™UŚœÖù)sÊ Yn4àg“[ș+ŸveîߘÈ$?¶2Ou7 -–ӝ·2ïTN3Y™gąÆă•yhCrż8ïˆdXĘÊy|53—Ú{rQžrYëČ€(OunÎ_”'ÙFțIEyûDû#Ey&|Ïsć‰ȘS·['ćɒ,P]ȚáEy&,Fn›V_i‡~_ŰËčPlŹ^â§í7)v|€čŃŰôĐL3Š›w(DŐ!ŽÓCš<ŃȚ.ÍíFïL Z:3'Äل}Oćb°ŃÛ:l­xă<éÍ3|L§»Jb ïŃójdŠđó€nM?LÊóç~—¶vĆRܞę*”Ӎb6°uJíLô ]OwŠl6W‰Žk…ŒX(äuxíBk-,NWóœÈ-ą’…éÀ„ŹïڗÙĆ œ_•Ć~žäđá[cXĂśUÊșÒ*€{Ő»BoP$\*ÊîÚyíb?xy_ kOżŰŻì‹cX•Œ%<«ČìȚÎ-^űššC»„ùzew€_«'•\hûEl¶ßÈîC»Űïí]ŻnĄWì·j·5±4Ś·Ìd€UìÇè6>Ÿjc-Țż—%Ź{śڗÁdW ëăCčćńŁo<»'ÔX@œiÒÈĐÇ­‰vèvlWƒkÊG`n#*VȘ Á„Ę\čÀꝗĆS{MȚsàYî%ç7źW&ò@.LĘéeêŒz,Àą{§ŚŻ‰n™é“ÊÉőș]Ç]Ż§f㞮Č[G^Ż··B6VeÌæhRégbšÏłĄMܶ"3=őïÂ;ćf=(‰AEËæšęTÚÄE+h„ŰÜèuËàvĂ>ń¶}hÒŠNŸÔÎGÊM™1žŒI‘W+ÈÍ ûÔșˆ·g*ìSłÄESę|…}jń± tĘûY ûdƒă«ú°œ”sö©e•ˆûžêșê˜Â>”Ș>HŽ3öî>Ź°O͗S0ô9 -û„„Żê“ŽÀÙ -ûÔöy”Êæ …}jȚ5ZÖÎ[ۧč‹{ȚÂ>”Ș>Î[;kaŸšÉĂĆlÎZۧ6Úqă û”éÙ°ȘïÂàȚš# -û”[Ÿ|hè܅}jsxĄ<žùôÂ>iśRÏYۧêBšś<_aŸ‰Íâsö©Uőƒh†ÆâAD3[ŰgŽh'ö©UőáËڙ -ûÔȘúöb§ö©WŹœ„°O­ȘO­bćÄÂ>5»ZÛĆ=ș°O íŁJD;[aŸÚ,idwŸRۧVŐgì{jRÄtęæFțI…}Š!íàPaŸŒOF>â…z‘ŹÜGTÙ»ę©t攎U5șÆÓtEŰŻ2ûÁ` -LĘâ§Æ–‡˜&oń3uW„á-~fI”ő`Ś'ńÁq€ą·†Ö†ò ëíöîì=ŒOHĐɅŸ -ŸȘ«N“€Ž3Ž»CòLśprwHž”Ú·”Ÿ‡~»8ßń†šf”˅ŒȚÓLÁ èŻƆǖ”—Ÿàm›€&îlj™Üzărï{ț°.đÄĂ ÄŹóÆ(uȚW¶FéÏІ€äòh|‘¶ăĆšŠâ -$Œ8šç3ÉŁÊœGŐ{|ïÇĐ:Wÿ§€ „%è]ęgR îę3iȘŸzïŸä{j\ęwš©ßû‡qÚ!€őžULuùŐêÏCïę“+›ƒ )«}őîęÓKç1Yíûb"uʌNûű=ÙűÁ8 @;W”ïÇŻÂśVì{š­ö%/»_^=:ëïÎP4 űÏŃ…™qČ C@§ûW\êNYą«YKeTúoÔ̈́<Œú>áôîÉc©Z1­È4%Ż‡Rí…íä•i_šfæa…Tp4`€Ú1ŚƒRw (ŐȏŒhfÏp‡Đ̈§NŹSNŽ„‰òfŸ'guPK„ĄÄșŹ~!îx˜«=Ș -Śi -ŁQćèGTFvŒĆ( ‘—ʝ)•Ë( GscćÀșÛ7ęŸ î–_łu·oGžȘ„U‡ĐÎtæ`ƒ2BLìF™ș@0 ż$E9tënśR;tênON‚Ę:Ăe˜|žÎÄm!TËLlBX{WčiÓ3ȐÔ^hSkŃO«}łêy"à[čÁŐŸ~”F”#}Is ŒăgiY“•Țgš8VYeȚÆöüÖÀ#[ò«é…ś7”ÊŒ ź6J»$Ęő€&VąDž”Ș#6{Žéú”čžòș±œBÄuPkÙÖyRĂ -ĐpWÓUț±ÖŐt.čFX»2oăˆ^łxvwPQtérfȚç5r.ĘkűúȘUˆh‘ë)ij•%WĄ{ș§U™ŚŐÁZ¶GärŁŒÿïŃÖŃÀ«ÈJ=•X›jXčtÄÆőgM"ĆâSI>”vűÔ+~ăKBwZ» źtQÖ4X L€$zîDÎD;Ob”-òZ(=Ÿy )ó Äę•ĆŽ ă_‰+ŸȚ%rCĐ5ì’o'Ńeg^è_ëvŁ__”LŃȘ?âѐž„ʧ‚vâ܅xjŻ©úȘ͑ùëû–Í^ű€Ä-©€„ȚD„©ZFy­æËăÌ&niòÁ…Tg jš«ÔrÀŽËB€‡ä€qŃAÍn©§Ț§œĘšj%urÀ”›•Ná,ߝœ<ÜœĂL@WÓnčê*ž'6ÍÍMŐÄŸŁÁĆuú±01ÁßÌ^à›Ï ĆFÓGVQ6gK‡ïO;üĐ;őxZńûß_E)"}Ąur’č’Dł§ë^ˆÇ·«Óæ$ŻFÉĐŽIŚÙL*ŠÊN-șÙï,]—ÎéIśKGƐŐö`ퟎęuPÀ _RÙ#8ôŒ$yű%ô»—‘0‹±Êń)uvŻÚŒŠNȐŐ%ÙsÚ3ŹL€•MT™«ŠŠczVđ=uśTŽëìôŽ{5cȘËș„]$ MŸț -!U@ՙęL”„*·ț(¶đšK4Ÿ ĆG ô é_mźcšHBÓž úˆa*ö=O$ša5ŃAD3Ű=h†wB0ÌÛЇ6ŃöȘ˜5=ȚĂ/䦛cK”,w­dŰ#KeĐ©GMőăJÍÖ#ȘÆĄÍ—$jđÁ^=ąšŐy@Ią‘{,œśR­+I4[žŸsPIąY’*WÏKUčD„ŃÀ“6*I<ē>Ș$1Ëug\Ș—Ê9í]VšËĐĆc\VxĄs`Æ/+DŁ9ÓE„:—ʶ‰țÜe…ûžôčŹĐlŰîÄË -ńĐĐŒŹP\Öțìe…{”YREtìjÔ§ZqáĄùS­NșđP,ûSœíP‘™rü…‡úńŚ írìĂ.<Ôœó 9P5“ F§Z™żđPżđâ §ZĄ ÏRïyj&ž§]xš°æ·^HŚș!ŹyÛáƁeGæDȘD Ž»đPcpüm‡’ÉqT%Ą©CŰ b]xšÛᅙ+)Ì\xšÏ ÆÉ°&/<4Sïy† ©Wìì1ô±êßvše§|áááćqg*ÆÇo;4Ű#0áᩜfòÂCsśž\‘ŻÛĄÄ&·Ê=é.gûĘć#֏ț(ŸőČöXrWŒŸ{űm†goïŃ°?4ŒĘ•^ęu?k ߖCœ|sö””î"/“6sț}v2ßö—œ+Dÿ\¶›őYbž‚Ćć+&ă\țvŁżWlvč·ŸÜgö łčú~ŻV]»‰í=Žú`h~Q©iú©Ęz¶ú=_Y+5ț}ö€‚Ž,QÊŚóDé{X#ʑë&ËöâNv{©nl_‘@ł Țb]bÛsđœűƒ·ńKĄï'Àn>VđŸžM]Èê]“Ûn<7|\CQá/ÈäČ혌ańʝËȚÖÔè…(ŒœfÙ ĘȘ;։łï`¶çN;m_ȁÒ5ĂíUÛ|dÁò֚PźjĘyŚĄ{˜w·D’Ö\©ĘŸ"ìÌüÖXÉ­ù”BŒÀàŹxCs«'v(PqjÄHGź -;șSb^Ń걅Ïró5r_]fÛT-ی’„žmÖ(Ÿdƒ_€rËtyțüú‘«DŹNÙ<ÿ -pč+F€g…”•o_Ù䭕EăÊ-V·›\ęć„ë)>żVà70àÆÜK‰œ\,.~c‘kE¶N˜ÜĐʊžt ìwp:&(æ È]‚?ŁnTŽ tOu țŒńą?ÁČö΂? ~á”R T€îbn…đĐȚ«]ÉY©VIŻcÒEęäFSwáÏâÛŸ0†șpëŠ|űƒŻ(#>àօ1Ž†Äž•óż°ČáȚÿöä€îœűƒqh$>đŁ«Ɋ=KÀÂNV|„ |@"47«YÉ4á/8đÁŰéûèćš íŃŻÉ€^„L–'‡Ÿ6 ÀÊ©9ÌT!ćIțÇ'”żx3eƒ4śÀȘgŽRÙ)—/}ƒ6FʕÉ&!š$Ü>oæçț±;Ś~ßÒőȘ”%±„žĄPBûrW…<ćȘ”RG‚TƒMuŚăí2Ț6ìLùłçZ;ûŽŰ58.Rbcêsś•-Lû’Œ}&k‡°ĄÓ™šÈ//>an(ú±WƗ€ /űà^WśBòÆpű-+ű-(~ qŠÉEüÙńqv‡hö;©Ò+Ü!@Œç` -îTèQ'ˆ? göâpö'łŸ°0šû(áČÇjȚș*ză. ßÄł]QźĐsò»łÜ€>XȇśÒáOż„5xíz€tęo/NűżQš@Ă7œ‡àÏ!•=–zÏoÚs•JĆ»çżÊna‚$"KęA{*Ő+u]ï”] Țs‹:oäÁç)ò†‰ yùŁKš3QGâzE…Š/ùßg :ĘŽ'„%ș΀w5zŚo<€70qŹ·7G…Ïš­’ț”/n•§+đ“V[đú ô˜ńțeͅÄMhòü ùÛÉ éő±OˆAÈŁà—(‹T'*œF%Ò2ŐÙ -!àĐúćg?œőĄ:x˜ì4ï3Żœ™F4ĆÒßO‰wƁbDűû+ûĄdűêۀŠžőp*VȘO^§ >ŰE'őč@ÿ&?ż\–äZ°LôčRèÍr#à«źóŒ(–.8AwȀŠ‘ù€b?pŠ©3 SĂŒ: $Đšș–ZĐ»à -ړăœü‰‚żAòyeîÜśK"fíNRČöDNĂ ŸmÄêșïÄ­žĄ? ?òV/Ușçțt„îVïóWŐê 8šVÏăć5|ÚČúrÁ4üYœwŻ«‹eœVŻ”ç€ă3î°_s±FŠqăë3ŸuńŁô+—Híe‹ę^q–]țzÙgGó-ŚNț8éê{€Ž ó2›Ê”üą ń+ș=˜\­ŒrśÄ4ÖÂŽtÍ„ŻżÙU…}+uœ[îaœș͔鐝ț~Ü4;mcętĐÄèjIłìMdžl Š>dŽCęH_Żm‰`€Ą»PnŒÇ, xɐ­ÒQ„Œw›ÜQ üywK(‚>qÿé/bC/óìg‰‡{‡ąțˆëŁŸnÇƱóȘsŰug““.íoöŰÂśÍr FxMȘsŹ•–ČTÿś8-ęÔuź+Ż:ËuRü)„źGȄƒùX0±%n›ÙD‘™ægNçc±Ò˜’Ùß\ GWÓM‰ž“yno -eˆž‚­č…âéđ‡*čƑӭFp€Æ<Í3‰GÎńIïź­ ]ˆC›œȚĐuۍÛ^5?ú#†žIŠŻ%‡ŹÏD ÿëSöÈŹNu;l)«św} uê-t¶ëà…šžĘmőșČ@óșó^«/æûČșŠs j—đu¶ÏÀnÙeŃs| Ê<ŽŽûYPOû3“}źßTKĘmÛZìE&ŠĆțxes>=‡ÙifÉm~ÀĘ`^cĐêäą-îńf/âà™Ö”`CóŠíÙN$vfe 9Y˛PńHușČŸŹŁ äX`vÌQËÚៀ›Eîƒ ĐÈÇŹÂnyÇÉDŁ;pIÄ0ù:Ó”†Ü *f\+Ù ejŽBȚOPÀ»{»ÏyŚD67|Œ/ŃOž–óźșSÚ~æ*‘Ț}ö»œNÙÏÁCx>űČ#W0`·ö|ïžj•â¶pZæ&wăŽ7ï±Ï”#ă.+blÂčhtΗiČöˆmSôL;“\ûù…M2qvÆoD+Í[€ŠŰï;üĆÎèr‚šÍĂŐêłÍ -xŒdU6jłšív`[ü~4pÀŸ>ÌÙ›{ț ¶°rȘ!~Ąhż?őü'™MÖfÍ°ò–…ŠQĆĄ9Í€4aT]ÈJ~ÿÄچ4ʶĂìȘin–àÈČ9Țš<«uúČz -ÊÎ`Tè[\&än„țŠź†šcèӖšv"kHú…ŒNœ}œôP§Q_‰ÿęđQŁÂ˜Wt–iM·›Š’ê0f„NpŰÏćEÇŃÄgă.“H|€ò`á°ĘŁ?S)ß6V”ò-XˆZ·ÙÀ6SÏUÂO~°ü<·ÀŸD)qœąŽm!țÌzŁŁ - ŐiBęìÓ*t/49TżÇ ææFŽ}](ägŽćí:6ŠŐV©ę_^oö–ș ŒhÉ<č0P6k»–đ‡7ŠőhyßÒ›«…ŽÄŸŹÛihÙĐćòÍ š˜àïAÓ}e…ˆvè’{8§si ç -›iąFŁ9EÄÍńœà°›•ł#lR§ÀihÀpÇă9;RÈÔtšÙ™>@Èà4$gG -r -er·śȚđœ5yö+zÓK7)Œ·z:ÎŹŐ3•ŹȚîšÿtXœ“ŸOò»‡Û.I „(««śƒ[2EŰ4hőŐâoçŠ{ç Ô«™<ˆhçhœkàŸ^¶Gpą;{Ź'}\DCmèŒ'mÊÖ<ÁÉ<‚‚¶fđč=ŽńQł“ő ‹ÓQcŒ8íTOăOFnę;.žDËY92ž¶\ł„v&ôŠü•Rür•|5G†ËŒ?ܗq8 Së»Ëìą•˜ŽèIM#/|ÊÈk{„cK:˜maędŒ"·RűòŚĂç†/ïíëÌyHđI«‡ÚM$ÓtäÚO?_Š,<ô­Ô”‚oI/L#§šp:ìȚD:(náòJtĐ$B0ûètòDèg”‹4:ö)«Ÿ–}:(‰!k^òźșH„ʧÿòç‰[ox~Đdîl7Ž—Ł3žš‰aűp§Ć 1ÊÁőœ?Ș3” œ#5 ЃÁ]ČtB'ĐU'’esŒdÀÔâČÇD'x-  -çÌŁÂŸ-.ÒG * żÙNđrŁ„ŽÇgSXKÁ›\Ìæ0Nœ79ŚrćBpçÄÙÓ œ7T6Nî&žęN°râì© šo*ŠTîfł„Ă­€ŠÄž‡ó7—„zç<ˆ=Ő"ńŠ%D- » JìITèÖ@Œ^o)oç’X(”óbgß>ś8ÍeŠÓtÆćRӂ<§™„K‹Ó Xç4—ÄiÇÉŸKS Ê9MÆi‡Ê-Ïi.‰ÓŽˆ§}(8MGö]&i«ƒțxäP›/9·b‘>F‰č%ȚÔìÜ#Đ퇚"<šŠEúÙw›áMšÁ°EZ©ÄÜÇ.ÒÈ#c~h˜VŒ§ őÏŸZŒ·S:p„bő>žŒÈƆęb!dĆ/aßFöÜÎm6†,A±őKVPFöí‹XVcx ső‹ùŚ.Ș#ő •yBU_sU Ž*NTƒ «ïagĆÍy$ßä„ é‚/öƒęőó]ćß ˆÍ^č”9Ćź~#§3!‰Ž€†O,űí6ÀŚ­•Èä ö‹-^9ŐßÆy‚6ńòžaŁê“<xH çÖ7nęšș -üÙ$ *"ÁÇțùÊÁš8\ ȘĘïâë‰ßȘh6š™j5üČȘˆ$óćú.L"„‡ührćŰđÜ.ś­ùŒ -đ Ő[šZg“ï+(Œ*UEßűùŒĂHnűÛìÉ” f.æ@đœ“ûÖ·nűîÌú”۝ÿ+$…găX†*ĆÁÌS©"„í:>:ĐO]'ÆKÇS)U ęìĆ[ÊŻüKÜ”łIáLč} rQĐóœ›ûVüšyžoXÏ·ă úMšĆ»é,*súûjÓæ‚śŻĄ\ꕀ{ąŸa XˆQƒŚÓ«kTtɕ^?˜<¶; ”ËTŻ=c!(—yŻ^ zÆBP^ÙšÖ‚ž±” ©Ś‚Qșú?é‹ÿDăÁˆ% -Ć,ænΰìt<]Z€đ$/țÈUIòi9Z•X†i3ÿĘÒ«ánÁ,·–„%kȘŐX˜f†«cńòéÍQ‘Ÿ}ŒbàU ~Ș‰,âÈŐŻÓßńòŹbkȚôéoâ-­Lzp+7šš*žô,ĆUJy'Ó Ìmđ[=»D ÖBŃVqGÁè­êV˜ŠêD”ŻWZE_‚ÄÈ#OcD–wúfóźïkÙz|“ŽUR/țÒȘz.Č‚î”ȚÚ„›Ü͐_ xbí'EÔMx2w8@őŹ•È=Ï*'Â䱜đCj”Cƒ@ŸHUČšL;ûęÔŸGIûšV[Yš-–‚cù,/H„91VÆÈfɋÒëÌGu+#/ȘYăV©Ïͱ5Ço@©]"%ìŽüČ98Ą&áY!Îw*"»&<ÜYŽ›æ/’SîÏÏ Ă‚!–șŚĄŽEIÁûé%–=ü` -üœoáJ<„ąŽBá}"EÛ«îÇŒoŸ1”űìŐ †æȚĆKÛí„xÂÆ=~ÂFùË/ž˜pŸ°Q^'àIśą)vOpGTT"·üSÌą&_W"đGŚj°&aìïŃ'J‹mIĂßüüY‘ôHÀû–XrXy@RüѝwR°*Jpg!pŚšÁxk›S ”+’iÓök›€ł„â̄=-Ú70ÈÀy@Šđ ä42`Û€aV…4šȚ‹”`âp~͕Îč?”ç‹ŻvUqœú pM=…x; ùæżŃ}тû -D ^?/rÊ=ڟ%z~9Ì5ÛŽâÀ—E&a -]ƛ Ûu„ł ä -S~fÖ”òè ń`ŸŽJ|>ŹœH‰æ]s¶Žk€’/ț¶êŃAâáDüöŹƒ[™[Ń%ˆxcĆäuæüłŻ ÜòŠ—kÎö$œț`Čűč /77ĄRœĆ#ȘN°Žÿ€9ŻS4ÀKÏç€ÁcÎàM6~d0B}Ôá|6•CçčŃThrú6œMÿJȘ–ÓłH»æ; Œ8ΟáÔyș ƒzFR±ąÇê]Ț(I?’óĆMg”o܁b…“ÌY—` >N§"íÔi€W§ŒńÄ@čáœȘr–&ë8ZY·™©płwz)¶/ï”ßćÁyęYƒMÆËBîRÜd|ȚÛ„€6.YvŽőÚ;-*`x -öLQÚŻąœń· bCőò2) Ș+·bCusY*aIíÈ$Ÿ 0^_9Æԉ] €bÈf@|PüHú  ±K{á,q'Nąß [úŃoÜÜtƒÈ¶ŒąîVFęÓ¶žȚ0±§«·±írb„D[Ńrn8M†K†17^€r$ œ#ŽÄ Ń“ —śÔNűäây ż‰ Q\ ÓŰUaNqz΄‹<ˆ7ĄïčĂë:\ÎćÜ -šJô0gP6^Ż ł3âő©àˆ&ă ŒJ~3bâ=•”Œ„&!ĂĘi‚šš’ÎY6^J€±Ir¶č,Ś 2\·ÔΟ &|»Ò‚’·Sr‰§é+p„RrZ@•Q`ś€*— ĐiÙË%§ˆSą­€LsZ€úÛ»Ö;n#û]€țC/°$Û·ĆśĂAœŰČł±3I ;Î:Ù iäȈFZYZĂÿ~OÉnČÉ+Í\ĘQvŚ›—,‹Ćâ9d7ő6J$O»Żß<í~k~ùûï'/>ČșQBœ!•őæuÆP—xûëőJìÚEúQó%ÜÍŒnDÔe Ï(ˆ-Äá‹4_D Êúëű*ÛzÛòŁŻžüæOżúđŻŸœ‰țĂoœ}śĆśŒ5€N,šä Gșő–YÆăÜΛÆf|Aïoç]˜ôà‚Țśw;oȚë^Đûțńnçćfö\Đ{ÄÛyi!ŰwAïoç-»ê—œMśÀÛyoßzÈŁĘÎKœÙwAïoçMF_Đûțńnç]Ț5șÚ¶đUoçćȚìč śˆ·óæ“ìżŠËś7ïs€€ńËż€ĂÓć8ùœbÈŻŸç"t-`YæîȖ[Àӏ/?ú/zÿ„VÀßȚăéDÿ?⏿<›óËŻÿćoù$ćoÍ|ùŸ}ßòíË9íö=ùàĂś9~ëęĆg_ŹÇù·oUÿ@…ț՟ÿđ»rxšÿ ŸÉù{Ő;)ˆ~ôËś‹ÒżËAáƒoäœ"Űræ™Îć—5àŁ±ln™[îż}oé!íŽțçÇeïđÁ)țń)<~žŠĐ–êś·Ë%Œˆd2EČUűΖ1NCéȚ:ó<ęìâQ}Ț‰ì;Èúúüć«ç\Ğ~rțʓ‹“łŸÎŁć”țűțôq’*LÊZyűòÉł‹ł?MRžœîu~öéîً—Ÿ?șLJ«§śżęęÉ7Ÿ:}8%A§ô‹é.Ô§ŸrAêÄéí[bú˜țűöGNžßŸőȘKŒśŠôű”ÿˆ?foąWÒ8ümąƒòłóQFŁŒŽÎ˜`8Gà7g” Ńșˆœ(€±^Fa„v2Y힑Űćé'zú©ï‘śă$Ćôûé?ț&ŠG·ńăWPCÁF{JéègçbT2xËčRK5IŁf­…^„ŒÉčNLQ‰Ó>U *J§­ššŠÔTIč$Ò©ÊÏ&ŒäPnn‰Ó.Q€té*=F=«ĘÒEkő¶‹ÖÄrnn˜ÓjQÔn)wŃÊ°íąf$‡rKK”îuiE±ÒčO©‹‹IgÄ€­âŸ:­8}RÒp€’62Îđè…š„ą“3Ü/Z)œ a2&nÔ0AÌ9„ ‚œŒs@W–*šJÍBąPôÎ:i(gïÊ3:áBvöQeYag«Ą –ŻčÇJÏRŃqČädVúÙ{h-«L™Ô€‰rŽźôEs>”5›VەZFSQ(mt@ŠšžiMĐł U Șg”à&5Fd±„žŒÓłB™à}TĐ%”ŻP…”1ÒDžSHƒU«†Æ‘•EàÏ-ô@UÚríbc»>šŽŃêhrGÚÉÙXN)6wAĂj -…‚0Žx8P:ÚÍhnGJGx+z|ˆÔ[Y7Çچy€§f‰|¶GnƆ¶bÍmŒND2{?Rđíً”Àh T M‹“vő•ÜK˜aFycČyQMM‰ƒšƒ\šK$ŸÓyŽIïÖ4ąDÒŁ„7OÚÀÚÍŰsźJ“†ÒŽNJÚ9Ș]€(nÒ)QZ„ôINÇ5éC=ka{žF=ȃ”tô7ÛITŠ$úș©­Žšj‹‘E¶­›’ΘuU(D!êX/‹ruö$)ÓŽNêeò$XĄZmŹY -ÒI‹9Țh»dQnֆ’Y'녋ŹEáČ·*ćÆ4”,ŁAńwIĂŚT=ŹÜËšr:$­)M¶8)éÎOČö€Ęäšÿ)Šâ…Nqqv¶Š8šÂ&æđêő€±4[tFQ€â„ “lŽz$Ćč᳀20(Ï°Č€ ŒÌè@–U€č±˜xKuMR€hš—erŸŹ7ùTńBłxš’©Àă<Ô„ÇJ”š”ÌĆ©@•\kÒ@CÔÓìîyȚ(i›p„Tö!š°TćçȘG„li`#ŐV­ù5đ.K4ÉѕUëüüÔô7·oĆéîœéÛŠüfȘÓęÏ/^&Ä:=|öôùłWŠț~öü|zúìŃy _k™ušäđŃÿé«ô@Seˆ è\áHz:IąÚ!X’Z;MR”đäÓÇ\·Â”ôtȘ€jàJȘvČ€j`ËÜĘ2ôïœJ4éSț«ÂšôŽąÍò”ÂE~ș.ÄI=»æäbGD·wÒ/Ś†„òąƒê!ąpc”4)pÒ#VGúŸÒ^8‰b‚3|Hš†Šę^V™•šĐć`ï)n1uśÊ,`bÎĄšyŠúš Ô炩EX;^6DÁbYTDÊ(±.MiĆJ ZĐVY‚Ž”OO11ę2xqąš k75óÚžÖä—NÉGŠ€‰g“ś»^ĂŹtdêKpŚșN%=(ŐU&šÜŒ:Y*rHÖÄhĘúFل^˜1»˜eÍ1ζu‘MnÒ3ˆ (•ÍO—“„Î3&`JŁÇɄŰm+ÌÉ­dä!Ƒ›#[“WŸeQ\O:©RËÁ„‘eÉŐËš—•ŃHW„ÖJ°LZ]A§à/X°`"çƒqnYQtÆڃU Kž€“ŹùëI'’äɋa/Ô.p­ùÙ9ÂÚŰJă|“ż•_5]WĄŽæŠ}=Ą)ÿd”O@+V‘ -yËXđq>Šé(hH )%EœŠ‹ĐßĐb,-ûNkp0ÉùƘV:IêuȚêđ`OÇRŸś/ò>/ò_ÿùßNżŠ„ęO?=?ïȚB|Ó«‡ővW\ŚË˜Wčj ‰|@ô)q]/cY/늜$ZŚő2æ…nĘA~( f]1Ź+f(KfŁI'‰tn–Ìő9‘C:aP\ƒž%ÀKÉÔTŽ"ˆłĄŃRÎ[O»4ÊÏŠ‚zCÜ0fÚÁŰ2äêmk?§À„6»ŃŁ)ä) •VˆŐ^Ì3·ö یNVoQpzxP—3̍ÈòŃV«ú^PHč`­Á 3ÜżjìŠĘŠ€Ÿł„Iæ”2 - Š”sˆUCېȘ¶záû·Ì9*ź¶ŒLË%€ŽȘÌoÉ[ʂp1òáÒjšŒsŹw Ű7c»“`ˆ=ŐŁ,:7€‚z€›dŰà1`ŐŒM›%6Ž±2Y'–a0u|h[ÍŸÚêúè xZš|;[ÇYY™Ÿ7§6Š%d€@hš­±í Qt¶EMiŹkÜf»Čóç1%kčìvőȚőÓ§uüóș—6”&[§śȘf>usœ†EÚŒnRŻiú4öÛÌe‡>Ș>8ŁÛU*ŻîŐ6°“ĄDúÌđ V‡3H€d†‰œLP#  e§ì]0Ì[À -%ă’ê¶?œ5íxTô*ĂE/őŹë­ć„œmäÀÜRzc4rŸfܛ E}Û7py8!&@ V[Iä6ő< čuêʄÿÈšP=n\vłńâh·±pșUàAšÀźvÆÔcšśC€Ë¶úB Z€K IQ•ŰšDÁ[¶}‹ȚđÆmŐ1Žą«òŽ‹ÆË ##+4‘ź3Ÿ”6űȚŽnęzrëGǶœ$ôȚŻç¶^†ßûѱ­_Omęèȶ—D:7ŸÀŒóś_«—ÖŚ`+…‡C˜Ș„Pí6uçô >őÚŚB+~EOc†Eż\'ǂ=.ĂČPì:yÄż+ŠĆ}3ŚâbŚÉ¶ÈߖoĘ9œNÆuçôz9ä_†uQ±wÄ»ĐÔ;b^čËp/Rèžì ëŚpźÀÀPxć`ùáu,ŒÜ§:@^™XJ_‘‹Á`c6i—àcTêhŒŒFeÄɐ-Ź,MóA 33 -.oâfTæHìŒ‚ćˆŸqțő04Z·†–”ž„ÂÓx5źßZ©ž=œ™­Q©•Ż•§Ë2¶ö„ߊ·áá™aœKp7{köŚÈß0_.ĂàPì­9\ȘŠÇÀ<&“Ł`3ärPÿ­Ù\Vethmát”ł:ź1äu‹Ź“ZűĘÄÛșáћ!û8ȚžfV-íńő«č~űđŐÓŻžœ<ŁÂ­Ę%èÆHhf°€šƒ ă"B€X5#đ‘û«æ€" –KoŒòŚ ÚŽÿęĆDà€>ǀŚ¶’«R<âžńiJ“({ÙÊïòțÏâb2xțLe^À œüŠč7[Q^[7]ÌpÚÌí‹\Šbô’ë]S”Ÿ­ |…éĆQ~ߗm# ¶K¶ćÉĄDt#żUR©ŠtèźŒ’f0Ö)·Śžó;?êÙșk7đ[%hŸ€ęîpS±ŁoO˜áȧüź/ÛF:ŒlWùmúœś[€NóZżU’ŸߎuÊٖïșŰűQßÈÆę’vœß*ükęÄ =Îٖò»ŸtlM0Č]ă·kć(&„.ÿ$‡Šm>Ô =@bÄ@«ŽÎ™ČíHúKt¶8)ù’X’4AF­ T˂ -x@ÆÈkvÀ -ŐuÄÛ(ô -șH‚hșևEÓ7/éˈĄ­R›żûńL{1ÊźN}@šŸp†·JÏìeäęÒœ‡Ąœ›vÛH$ig`Ą"ÛßYCQ—ž»"Źó.HÁ"d\»V Ô$â`sŸ¶@J`w/Ed5-íŹ%hßđÊi€ÿHŸ€}u§ cmÖôȚV%,(›GocùD­+"„ozL-Ì-‚Ë(h#‚UńSÚ„±J †dV”@ôuˆ0đúöŠ; ąkò§ó(@Ü\Ćà…ŁŻL;»* >m’`ÜèC(3ufE 0OR†.À۔Pä’ÒÁÇ ž*>ùÂÂyÍ ƒ”ɅêOĐY MÎèà!àOìŒm€çŻš‹&˜íù“xĘûŽRdŠí\Hčźï;ćogÚIÉßLKŹ ¶›ÀĂ(PèÓŚ”]”ˆ.tù'9íős<Șœù9ÉXŸŻOKŸòłČDŽtŸ9J˜ÍÂè鈫ïhìcRè‹òL'°ËƁȚa”;Rn?L©ó¶Š|WÇ0(‹Q¶v$Łàyd_ÎۗćìËÈyœ{±u¶§%ßĐÍ5p¶ œw Cé0€ƒ–ÛÌy]ÚæłfšźŸ)ÛČȘ+ĂȘx §˜idrîh1ôæäX_4uRŒę@ĂÖ»,yoòÂ^„\Ï;I)íê…>íÁž-0™Rki?C‹l -5’eÔښQ#}¶ÂXőÜ7Xò7PPíXqéûԖĄ’\šWœŁ$ĆȘÌTźĘÀÚËÿzÆrŒĆßl)“pYœ›[Łô@Ÿ°€zî[PXĆ qWʅEJÇtœš4ĘT0A„ś3%ĂNËŽ“ÒóŃŹÆ -I›«ŠfgʝJ€)]IÔă”đüć.ÄŰțÓëhxX3êzè#€Šò3ŹÙŽ>ÜŽƒƒ”p'eGÙCœrŠ”! o!Ž©oC ßCœüÙ6»$FŹ…8ŹȘđi` 7çi*ÔPfą­űŸàŠ2Ć=]ÈÔÁA;\†Đ74<€/đ,ÉĐ1,­śđ„vIÚë]™s]îWPćëń”ȚΒrÏÛ2É*8‚űïÊëÊÛćÆ N«Ź%•©ÓčÌă"†ày„sn¶.śĘșŐ&Uș„NwRèÜŁĆOSŃìÁő~èż~óȚïïÖ VvqJJæ V8™ïEY^ŰÁfę *;­DyÉcGG\Ę,;˧Z[iœ›źńàtŃÂZ”ŠĘrêžł~p.™rÓ0q:ú§t:í,RhÔXz>őçVóPr:źÉîÌugUl:é$ËĄÿ.ß&s’“Ęœf;7g%y!_•¶#K$ÍMŸïaĘČÏPčŃMiœ› h–{ÒvÊ4ÉŹ%{ JÙN'b9I'rí€SčƧÖIŽî•ăÜŹ“\n•Ûń”Fu}2^t3G—ç„ÊàŹ·łìŒ)ïoìÖ Ûvë}m”Ìgٜì& `êogáaHw­đŰdăQ2ś„ -TÉćŸ6VźI,f« œš“UMDæ†Ä|<»+·9ät™]…æ‡Á)ć.a»*­öUX~ žŠËԐȘN–LuGŹ\šI[·§Bó…ŽŠh]"TMșۅ+Àł\P.]Ó趇Á-0;șÄČ»Œ…ĂĘóâlPą,0èòY:‡B‚ÍaûŽîŃÍ6IëÇwpÌŰ NÆ_tBzśËfCxH€h(Äśîò}§üĂN°7Će€7$«ŁJÛuƒ" Î~…¶˜bRxÀGÌĄŸQąˆœŽ2œP±Óü°~}€‹«šßÔN_$ëŰÿĐśoÛh2ÌȎ‰đo^ś érËÉäóTșÁÌyš§Žà[u7ĂZ­űž)ű bž Ž7iß +H‹ çê@G:ęsžVD^@„'ÆżÊȚĄ“Úè€>Ù„vLŻADP7íÇj߀ú7LGœKG/ĘHž–’&żxČŁ+ ŃÄúą„¶Eű8ĘbĆŰÿ„KR“k'ŽŐłŠK^3čß…ÁDYßCĄ{du}ÙäŽx 7‹dü‰¶} ZÇò^-›”mŠV°HÌȘÀv;Ÿp·W:dGkŠrÙ-”_/ ćÂà˜žő%™ ïĄ¶Ă ˆńôŠÎúÆ ïJ„™¶Ő…î}«ïî‹`i“Âđő[° Ï T‘î­‰fE8Ÿæ*x>‚-Á’ÄDűŠÍ7Óž;ș1¶û›pÆú.ß$GŒYźˆI‹ó臶ï'ĂR˜*±~ùvGkőáp3ęĘÿ2œźœČœaxé§9è<ÉG1áá?çôú›†í§èÀÇĂ -ńӃ)ŚšóQń@ šÔ§'«ê§«À}*żțòôzȟÛ_Ț·Ș`~ž2đ§z ôÏWÿdÏÿ)} jŐUÉ È‹~ÔZš„ T­șdúBÜușP]»ûFZ€"+1È—Ł퇋A ‡Pv% čXóĐü#Y ĄQ[ɉöa#eqÈÆÎ2?­łl}(? _sŹ)DyRû«U?-D"?­ÓMȘöa-·P䂛'ëöVÛüÔ‹2}›§ŐrûèĆđ§Á r‡Q ČÖ±IÆ>ŸY}jÿ*¶ŒOč—|ĐOÇŠ$óŰ„d›‚ĐÌ=6 ÉCòæÁ±úéúx -ŻRPO.ĂUžÜ»b+ÙŒGć+äCŚÈXHü”rž«cÖ2üé-y ÉÜĂ\x†™»°ÌK°—ačcóËă2˜Ë›·ÿöșęȘűÀ±oÈÍ čč!7G"7őç{oMn.ŽBn.nÈÍ č92čyʇu7„杚‹ÎrĂYn8Ë g9gčùTxű©đÉ'ĐúăÏíégNÎ~:±Û!ăΗgߝÿéĆٓœżž}ë»Îțû|:»ž odϟă§é»ç?Œ|öâzö#ćP„„;Ÿęń7·oęb!ÀÍ -endstream endobj 68 0 obj <>stream +endstream endobj 109 0 obj <>stream +%AI12_CompressedDataxœÜœi{ò8Ò(ü~žëÊ€@¶٠a5{d# p€@€è™~>œß~$y“7–{Ț~Îô4M°\%•J”©Jș°7ہüh9`á a;ûŚĆE‘c™Í’KÙĐ϶Ú|Ÿ]o8ű“»ć±‘ń [ćk‰žĐò‰ćÖÓć"eŁš É?-ĂśĘ fžb9œ\0ÍíO:Ó͜ÏŠĂćbdŠ %A3đ,Š…(‚LŰb©0ikȚąÌâ/fœžțxNƉ0ü±°Ü.FÓĆž°üOʈÆc¶iŁâ Ê%QƒêŽĆź5ZA‚ ’ńX4FEĆ(ű[$‘ $…/ÓËáö‡]lšÜrÈźŚĆć|É­S¶âßÌÂvˌÁÆöÊÎçËÛ +sf8ïäkŃ^y:gÁđ˜ #jäk$Ő+l§óŃĘögÀʄI +ęî!šk@†ßŃïń^íüÔf7Đq€”U)à}żąÜo-vDQ`DÆ!ó6?ßsS@Ä!là_Ó+Üt$3:łE„ˆ:&ț$“‘€’VIąÿĆc$j„Čò‹@?À50iâ©^ń[†Dđ¶ G†_\ț@^#A™ŹÍùr,<•ÿ@ψíJ ÏI€ß›ÜtŸę뎖è5ç[đ°Â-·«Úâkyö/7/„oŠ ÖÆ?ŽĄ§@œąßnóï%7ÖF,#Ë YW í»NÔ`…_üāZKxd»|ƒ? (ĐlŽ‚ƒż„6V‚YáÄńƒwџâ­ŒOł_ ó2țŚÒâ/vŸ\a€ùvV 6ç̂á$ą‰łôx€Y•A†ìæĆL°ZV€,ŠrRL`,Ąb6 ”ŰĆh-Açÿ”{GĂÿfb‘™Ï§cŽYMŠC[Ûź'¶Îr9— k<—0áÏĐ#űŠ%țûg°œOŚ?ü—&àáépζÿ^oXkł +?·ž_đôÙ…Đ@= nűwöêę›ô–&đđ–öQF ‡ò‘„GűùˆEœäÒh +ąÎÂ7lÓț7$öÍt`ČP!™żŠ‹èw{;Ę°òÚ\țŹ ‘lkO˜‹VŽŰČ-ƒŒ"„é­@À‚FăU#ê Ż €óŽ»rt ztÏlł‡6CaŸ[ »v‡<¶ Đ!šœĘùCÓ† ^á3`cQèÿĐê%öÏéûŸäŸAc{óśœvLš±Xț{țČ„@wȚ€:d¶ó͇Çșc~X›ŽiOÛÀJÛ=üíDűÏ i`<’ŒSd$țIÆąĐ܌'Éd„Š“Ńp +"è<‹E€UšŒÆ ő–$ÈH4N& àĆĆHRț’‡`„żț†ŐÁ·ođÛżčl·¶·Â6:rԓè0ŻŻÎțe ńÀ/hđ€`ŰĐÍiŰdæÀ dùÁ6§Ú‰CÔ|ù8 jïź9ÿä>K=ÛoÂoPĆ$ï†or ‘ÿŚÈÔÿ'ț€©ŐĂ tZtifžëą€<ÿœ!yîoᇗۛ;àê<ŸČčÿó3_€ Yčé`»a!äGóÇüWÁœ Ön8™ÎG»ZQ¶P Jz ?6CI»/ëȚ_ ·Ÿ œ 0,Æʶ1ó­Ô>Xë4\)!ŽzłVțùżžT àïZĄÒ|9œ±#Kd›úÿLQ°ŒŽ2HÀ3À±œCŁ±0PŒù)™âxąÆD±FŠ)3˜ł–V†•™țÿö +©żŹ‹ŰöŸÁđpœĂízłüùˆż?Êą©5m7šCÁ:ŽÎ©ÿu:ôOëÏÿ[Kyęőïÿ/äëùtűÿŽēáš-Ôb™čÁ˜ÿ¶4áÿCD6Úÿ3Óż§ŁÍÄÒž„–ÿˆ±ÁùŠ™Ží?Öè?dLÖækÂNÇKJ@júϝ-TX.F6Xn€uqĂ~mű 0KcÜ}écH Ù^nč!‹öÖÿ–Ppÿˆ~ü°fLŹt&ytg#!Nb‰ç°Ö +bÀT‚<Ç2yŽż€„ÖŐ«I1Y”5—SŽ;ÜłčŃŸ‚„  =]ŻæÌß· ÜuVÎòÖăb:}û9€(Ušù–-JRÖ;ï,[v)“Ż‘€MڜAiO6!§ŠćlMŽ]łNŸ(!0_KÚnÙőÄÖbÖ–›țÚńÂĐ Ż@fĆ^čßnVۍÙKâ,kőï†YŒ·0;©č\Á užę€ŃjT“•™OE+\vßVÌh‡ț?ÌZdŻˆožœsjž^-7y:j¶üvł”Æ(/Bç^XælĄił aJ€Ž9V2&ŁTÈLĘƔ“žĆîMČ5jÚŒ»€nC•[ČXŻ`9ÿPŠ#ÛZŠ’D{4śą‰kK{8[ÎóiÖșˆ ƒ›Ž­˜éŒžțl猒íŽpOw2@cŃn‹zúQkŽXžżX[‡ęÏ„~0ƒé|ș€àV }yšO”nËĂwŁdgŠ_0_ ęTéÁTÍÂò?/Ż*Âb)e0GłŚ‘=J^”êVU˜Ô·\Tq=ŹÛșÈÎçX_ÉšQĂ"p672a”–çË%wÿő”fĆŠú}EȚőŠÊ4…ìŹ3|Űž%ń=Ìm& Zd>Ąb1hZÁ©Éž SńX\0j.wŚŽ)ÖßH4Śë/j«èpBä*‚"ŁșÓÇYúÏFv--ŸŚ‚\€x‘ĐéL +—–補ŐÍÛCf.8A&)["ĄÌßÚ0’ò©•Đ2ž°À*†Ć†Y eò©Ì Ùüb<7oHŁnźÏ?šù.łGuȉš·pûAżÆ;F|†ÚâŒCĆĆÎJé@ç†î€žLÂgĆźBĄŹŃ4żËŒ8ú›ÍRóĘ0Œ24ŹŁ*ł @GYźFŻqCGŻíÍđ 4]­ńžsQ˒To|°ăŠ.»ùâL6Ïò”òv>ßČíÁS Ęł}IFłŰLmÀ aÖ Ź!P~s˜CŸ.Ì”Úzș/öYššÙŐ)0btÊ3Y7mŹP’*Th2 :˜šu“.Ă\E°•šPł1l TèZÖÆąÀV4{žL‡“&·üšÎYy:­Š„Ÿ;ÚiJêl%êïć_,·‚iMk“7†óé +Xp“ö?ÀƃžKŻ˜‹żĂ!›0đJ§· ˜9&jŽ‚á +V,ęg”ä6kCźńńąa*ƒÂÀ?^xbÓőL+. %JŽšź…é„âU!”ăI BY†ÔYźpÔÖćș ą€Âî +(±8„PUŹ%ˆš‰'ŁdŻ=I&’Tۖ“qSxP7 BCȒBÄ<ĘÚbÄț§Í— Qž'"aiP$OXë„LŠƒ{Qžrkłw3°†Ț{Žć( ĐÁ %AŰć§xœ”æ?žˆXä'P“HÙVÈȘövVty €N -òÒŸ‚í‡KnĎ4Ą-t·Ü(Ÿ‹ +ęˆ12PŁ”x’Č_”Â1Ł)ts˜ĆHđè }xț-TÎ+à[ÈćÙyK‰‹Ž•šíę‘ńŻYÁ†IiÔĂ"ÏEA<·âY©‹Ąż•p*aٜӉ `Ą„Æ(\"áÙ±L'ËW§ŁMIiÀś‚únë*{e»ŽŹæIÜŃ],e}f›.ș‚1) łhA5ŽŸŰw§A<ȘjÁÇ=B|ɘ­ Đq;ł€=P3eJHȚU }/ÁÁtóĂ@MŸNâ +ożÿ̂@—ČŁćŚWßÀMmĘöšDw§=©Ń%űíšȘŒÿ\{ôǀ^KäÁʐĘNs0î ŹÒ¶>VłÜt{±†)ć{tƒOʃ¶–dːÛ©šnżGìd<ïĂ 7ő ŁD†3‘3f§‹Ż„ö!7 +.čqđ/`° ËjČäțÇ€Ùzžšÿ¶‚pbÀ„<€ábG‰«m€ț•[„.Â5tăhp"ù°Äx2j8Č AŽŰőtŒÀy&Né fÉAĂhē-W+.ˆB‘Fæ\đg92âii̚?&à$y<€Ç˜4F hŸæ””Ć»ƒć Xes`Ź2$Ôd‰étW +Z~ą"ŚjŽèțbçÖ{g&ŹŸ›àhŸâŸ–˜Î2càżŹă—ćHT‡ĘVÂ&‘2XŐ”™A~ łE“Ń Făáx˜ˆÄ’š}Sƒ FMä Íˆß>2š>Њ—á’ÓA‰décĆÛ„>réYù#—Z|Žÿb[vWF_ ąWčß»ßÒ_ÏńÂ<7I}&›â$Ț%é_ÒCòæ7—Îșžy@ Óëâçűs Ÿ]țÒ”QÍ^$ŸùvÀ±à;ńŒ¶MòÛí–†Ńwqé]„óáK_áÎ߶押Çr‘Ęz3OuÇäj8dfđÛÔWúș™đšI"ÄÄč©łŸš~ÖG…ùEÖà|ïÛüMûòÀ“»ȘOàù–±«§\~1tęűźoŻBńŸśëi<Z…óÜ°Fúf)R9€ëë'@辋?‡‰QjZ 1`’ÉÛkwÀÏæńæ?†Ś›‹\±–v<—üÉ(<…źœĆ™xqùéK?ȚRÔÀńàf`H™˜Ś§ć-ö{X@Re +3O, 0èÓè† ?·tˆI_–íŸ.ŃÄàƒO5hˆÁy-‚țđeÊiá[účÔàÛę„>z„j€ƒ__&SòStv|-zŸN_Ÿï>ŃlJ=đî Q hUšK]ű»@șŻ[°AżEíș‡ÈMłël$֍}óúÛG…ż%†q9 ±ÁăCČyńò˜ż/šôW{ú›ûęHÁsÿ +‘ŚN'h76ê–z€ï©yÉߗéïç^qú ]}ę\ŒËĆ// h˜éÇă­ŃRF˜hÿț4òś7ȚF™öŒ<$GŚđ«\ąŁńB,pÿ„dOŹ>ùV:Ô_y ߛŃOaŸxZæ;“'€ŃđIV%ÿòŽ*_âoùÖŚÄ^ûž,Ä|7Atzè/W5ú»œđ"±ôôR%:ÀĐűè„Ëčńő ”ś}z™<ç/†ke»Ë|«ó6O|Ïi$ĘdœŃÈ –u"]˜čWÓrșBș1Qßmyœ,@·`ą›$ےûúśYÖ<Ș§ĄĘ›űtmï4Hô}W”őßCGŽ@nçoùvż^ž&óę\șZ ‚&ę' n. dwÛË··ˆü5†2 üò“ㆩK~Êđ…zMgxŒÁ8ˆúæ-G4Ü?%đ1* r”çżŐ_Ż“àÛKüÆäđßÈqœŃàMá͆{\ßüß<É&ÿ’đșˆÄC[•A»l |ûŠù&B㕀Fê l…Bh~h5 ŹûÒőوșĂś öA@hű‘"°[žB›ÿM€†Æ…ĐÀŚŐT’:­Æz“šàńŁyËbŻŚ7śiĐê1 >Țò85~śgN$dú#OÒźëN„ò™—‰ Ń(gK{~ś ŐLÈh({E€èȘĐț-#’JAŸü'Ï4ˆ} êĘNèÆÊŽ 1đßDÂSƟ7ĐÜ谇otí7űžd~Ù„z€Đhы."†HlÔ°±&]ƒ`Łh(M=pđ’€P‚Ąì¶ZùżeX!<ëK†_7ò”)§–'É·ÄĐZ2ÂʄŻÁu€ł*Âő-Ì l°/čM™Qę…ÆiÒìË/ńëq\<ˆŃŽ扆Ö4Äî‰Ę‹ßАà@ű±șȚ•6Ą7ßyj,Ê9Û~À…ëd~ŽçűŠÜż}M•íȚ Tk;H%D àö =Ë=;ÇĆégÂœ,2 F!æ–•çł@:ő­OŻĘ#0GŁhÙhyFžÙrĘ„ëœ·ŻòŒà|È7€Žą8cĘŽBgŽÜ“Ë] Gó›€)3šűUśŠœæBtŐœpäŻí…â)óăȘí\:?§ë>GTáß:ŻČZG6ŽJ5cšő–nĐpƱ¶ÊćžÇ>áÇP{ëüæ›5Ï»¶n/ xśŰ—q\=‹V'r¶ąëE«Àې€hTVő1©•U'űdőf•gàsÔgć üÄv,Iäò’ˆO, K,æ•\çLŸC1™T2(hÜȚßÄ +ćté=(ù^AcßËȘăAĆăl™êëvhÚ|ë·ô[äŠÎߌĘIKŸäówX¶Ó/f‚œhÙńÀIEž,Ï%áßeŸńüâËÈś+S æáłp § AÁš\ęŒ"Țxë {O—ó4+­ó–0#ˆ€ÏŚyȎ\ž;>ÖŐJażÉn„HŐ©€[˜čËŻât=Ń_·&ćqÔȘ°IH6ÉYžx+ĂO 3˜*Őżò6a"5ú™DœB֑3Z_xîȘńz^YOì € op9­]}N»æšÜŁ=É/ż3ôvíȚRlĄÚčüâH<Ÿ˜č*éw“J‡ČœăžÉc$uûœEPźˆìU:CĐ[#Ÿ’Ćš`ŰŸț^Ș…ȶ@țÇ”ä}ûÌ'ŻéA'òœæ'Ÿăe‰zőü +<軀&q5 Ûi`?5j¶“8S‹Ąș3GqònO߯ŚS6 +ł[p +›_ć<|fÔ”]~€ĄàR4kž+ÌÙYœÚß\@ÀhÂ9ɗ†łßK4#Éo.Y.~•\ćüC Èûʃ›gw*–żdőKœ€|êĐmë=!‡QTPäŽ]ŸÉ“bSa%+ĄY\ÆŐR‰hæ+99//żŹ,cŒ'`Wf,XišÖæčy˜Źs5HeÀW\š0-NȚŠ`ĆÇnû»p•Ń€ŚŻĐ$óûÇÆöÜovȊséÚæƒŐ˜ fè€ć1~„ż‚ö(OÒë:·&jo•Ž*„êÌ (F9ă«^żGx›E +?PŐwWŸSŒoÓÁÖ(KĘÍŠČ +“菏ż^V[/ùűÇè­ä_ȚnóÉĐÜ+[6BÄ9ńś‹Š$@`ƒG|ˆÙZBÓÂFtÂ}șŃX^ûłB۱{ș6ô=€ß:€`űęĆń€»û<ŃŸZuKƒ1Ę)@“ș_MKƒÎćŻÒŒA +æ-Ńčt¶Ë=Çe«Ükæ70Ÿ=Đîțűbæ0yƒOUŻ-Ìă>dòÀčAVŻŸbiwŽ $·ù/ęU€Ű• +kŠLŰïʞŚæUäHzpă»n܍èŃOÒ/Ł#t»Öž„Qu°œÓĆ3Ś$4a?û" { +æ°bËsô™û-W@2…„€=SNŃ:©Ż|ŁaŰȘû ]Q;Mæí‹roeó­ț^f/ŁtŁfo'›ßćÜș~óÚÉÂf——ŠÓsgLX©èDaćW3ˆ°»šäžŸ pŠWžÙ(€òU>âšÖòŃêGMiŸ +łŸ˜˜Òg™zÌ?\=_`Č0‘I7]_7`Ç‚•‹Ê{/żš<2Êè +Ùˆś‚Ł\ròžŸƒćLßæ[Ü/n– } »öƛż_s©çßiü9fóür‡ńšèì·őÄșùEŐû mtyžÆX&s pa{ŃôDŸ+X%[Ó撘ăt‚çbKçKááb /b +,üÉÌșś(;Ë„3«»ücš‘. \ј^“' «^á3śäÜl붏¶‰šőî6f(’ĂߘLnȚš(rGäۛ·)ęuY'ąÜŐ3ÚÉčb?› Š‰AuVƒ±ÎAÇ{Y.’^hĂĘƒ/ϕ˜ț›ŸŐanKïŻÀ7qKØ''2őß^±Ôźß>ŸÁZ Ö~« e$.Od1€%öæäMŻáËĘèyeŹÎ—>]żS„ÏûÁęŐYežé*ĘË"è…T]Ű:Žæ#Šû7™X?™ż_WÉ»hŻŠeŃFh©“'[cćąüæ­#đm"Ù]ŽY>ŒńÒùÖâ–. ŸzŚšh@«ˆ;yt ńP>çêĆFŹę]ŒæëEKaÄÎË·—pŠtĘțEèĄ‰v·śú02‘R>šęș)»•$æZ,YœûĆčŃ[`Țô‰ÒéČĆéu6úÔâû]ûLjìfĆ:@ŚjĐ* +æ4›ț<Ï7șpĘc©p‹«ÁdțX ÏNÁÓö3»ùö`őUŠçd źÙ6V,VœîÆ2©ûšÊÏÇ9 Sćžœït.ž±™Fړđű =Sï:”€_rß7ćȚÆń%Pr·úĄÜúȚŻWW€í ;H§=€Š8zŸ•?—wÉÒ Ś· +b™Ő茫}OCCŁ]uŽ2 `Ž. Ûuàz$a`aQč Ù  +5rqEìÉûçđ dèČd « œé.@Ž–á’™#fíNĄÖx6ŸÜźXäÁuà©/˜bâôǝXæÁÒŒđęĘÌŃ”ŃÆź»Ęe(jč§N)çç âoisYł‹šë[d^"Sęî{Š\ +°ŰEa—\żœc”Kg#~07œač8ü!qA\ßnƒœ!m~ +ŁIFĂNêîs°-ś?©`îgĂŰƘxJ\ł7èCžÔ^9b›ÆæșܛCJ4<Òko<őék#SQÍdaÏ" $I„ÉG\źe’|n„ò‰Êzç Ž:Ì"]™/ŐgŁ‘ÖkÈČy]2‰x¶X… uZ:Ï„Ÿ€yÒçҎ”,’3À”[ùáȚÖ`B[ș +Á”ëXì—L–Ô4–ùőÖéa‘™ŃȚih˜șő…ßÀòŒ”|QVIbJOïŠä‚f7Țé;8èƁőIôcżÄšêĆï\ÉŐŒô]çKŁĐwùgzù˜6Țä°űßäȚőQ +Äâ@ȚsȚyșźw댻ƒMűÇv‚lQÍ]¶w š^…íú.u‡ƒźÈ%Żó-;'€e(àŚźŃ){=•:2éć§"§]±©Ë+Œ|ƒ¶ÖHŠZéôŒ )̉(ęTűʗo͗©ű#`1ŠèőLæČSé&:ùÖòŠáA4ÂȘ•lB=êKŽ†ùàȚ”Ę5&{lŽB`>ú•ĄŚđčÊáÍą°+{ ećhÏ“[néï`AŐ>q_ùÎKŠK—™ź6đXcRxÈ;c…Èz‹Ç;«‘à°«ÂŰ`ö‰Ž«4ܞŁ°Ù‚&%Îï G ‰ü}Ăû uŠ€‡\B Jù7Ε_æżÜ8»É€>„2=@qMƒÜUă~ŰÍÿą62±`Ț–]Mćą\­$îk„šH<Ÿ.ËȚGő/»€,&•š“ÀÚ ‡…H7ŠÂß`űê›Ü 9*—­ȘŸIû·ô ìîŰĘńçiç- +  ŻrZńN! «Űs0KæĂ܈d;:yP@nÔĄŐ9Œ#…XnćgcńŸOço64ž‹…«2sÁ%î»vńŐ Ü†nߣĐ&źG֑ćKčűáőƒî<ÀĐû[Àócß ż$RÒ„[_Ț…o°mܔ„M„uƒ|f±hçà$-šđJܚąX·)șăž`\X,¶ípÓxŠ„•¶efœyfđ€* d@äș™.°ÓĘBEă–I­„۾ƎU]6|cRbȘh\À ·Ì›w–+ ďÊsFUÒ\ ĆIŰą+ń+łÈŹűsꊏąÄDÔír±NžćKƒUÄßéČsx…fYÉG­1țÄÍșòY8 Š»æ©À\§ț^Í€ÏxZDłt·ŒńöÈ-őšŽ`°v(­uŽlcș0Q<ąò2B8t%EéŹo~:8æoƒ•rCX‰`‘aÇź=lć)mf ltš•Œ°m‡šhÌŹÇÀLű!€ÖĆ6‹:eûŸPŹ©Šy +u°cn­ŹJ`}5„6‡8ŁJX%¶ásŹŠź;,k<‹”j͚kPg|&Ç ’†êZ>ˆ ĂeŒÉđLj%Ł=ČęÄął -<à€ Êș~ۋEń‚‰6‹ÚQ5oJébhhóÇ @{«’Ûż|Y”áIlšČËú&&ÔA“„°nÓ ńĘ*JȚèNń߂Y=ORšcț­qțŽô“‹ÍlLëÀwÍb»V„č öv œĘȚšCGvçXLu;`}M4N,ÓDœŸÏUgß˧ƒČ·ùșYx°jži ‡ÙŒWQìșhŐÄp>űˉa„űđì_hąđŸŽËś|™h?îË> BDÈwđe'›0üFEÒ©°ôàAú†\…łMțJVfUG뚡żˆŚŒô”ò]·b»'\œ¶B.˜nśefi»çź›Žû'SđŹÿŽû¶©¶ĘûBÛÄ-E„ź_ĘÔ^ôő*ç„ Ńî=ńœmĐÚXo3„ȚçĂLJ&֏ûYM +”ĐńśktTÖ!ò{‚űXÏÚXïŸW?śÉDXkŻX ŹHßì—»hûì:X_‰Òô§ź‰5q8·ç>%€5ő+c…h„Úöâ=ažƒ°G”x<ĘƋ°RźŒ»Șë ŃśŠò«GóôŸ/ÉzŻÓ&F—ŚÜŽÊ[^^ X7YŸjŹv ü=<ÖÂ+YS +E?·~ÌŰ!Ö Œą$T- ·žQaő]UÏc<Ö,Ùšäąčë#ŹagȘŰPbur3€7HAĄzž\ž]Šl\·«„qô;U°Š‚* +Ÿ/Ù~‡Św,Ӌ©MŽhőńòs™R5ŸŸ>?OzO'À0ŒŰê>…ëƛ§/u€yžô‹ęfăȘ§±Ù{Ÿž%ÔO“óqyj5ˆ7k©wĘŚ”·ŐŚ:a>]Ș§ŃbŽȚbKOŠ^&v Ö7ZńÚËs“=?Ęò,Œü:­șÓ"§ Ăʒ›œŽÓW<’@™”€©ő ^­ACCÛhŹš‹+=Aû7Vœ@ꞘÈ8 QZôÍLš\wŸŽWaÌûM‹_xoMËäwGćđxKI}ŹA,ŸŐ 㗌ƒ)j BDM>`"Z `bDZ%ÊŽŸ[ą9bÍkÖï“Ă4.`Y|l.,,<‘ÓZ†ą ¶(ĐĄƒtHűȘïZ;úFĆŒz–țw n+>[!î֝FzC–>Öë‘ŚÆl>֓đÉè„œÒwą–è„·Űu9BX7š‹=ìLÎBÊĆ^W/vM7n7„LÌ{~lĐĄź +äò, ì‘eŸă§ź4îu‚Z3‘dĂuôàe“zž5őš!YČŸUjjőžäž€Q,0Ă/u̐†źï(Ú‚D?užÇüȘE•Z3„YtP%D·Śê„ŠY &! „™Û"3[îÌ`%țhnf7Tf¶Öș±@ŸÔÅqwTz‘·lŽUc8ûw™ł…œŰ@DSȘƃç1$šé"nì(Ä}ٝgèUC­ ’]©őŁƒ†ą ûx=Pà¶@cGùiÓÆÜÌÔQj>]†¶fæÂę.J +ÁÆ~SsÄźShqÂJ…àÒ*[à!UćÀ_Úê­ÌƒŐßKĄ9Q”tLo î#Ąáâ±șĆĄâWćÜÀÉ3VƒAQzšaՆä>€ô–ąـÒtì>‚‚DÈëÜOjBSì2ê›–ö9`ƒß­ŽD‹(›Öx{ÆŹĆɊ(Kö@őłă{BhTpϝB]j~ł^DM sƒmšJ·őÌł#ĘÖ3æFe^mrżÆÔ\\C3ïćńhé†ïŽ“I·G•t;̀‚휀›ź“wé  éfÓÌ™K7Ț4t‚]\È`GÉ_pKA!Í€œ4-?ă4|RÛvòÈÄ\GàíDŐáo[četÁ-uKòHČŰŽwq‹`Ćß‹I«;ԓĘRŸ€›ż('Th„‰ótŒÇ-Ï œÀŚÒ‹î"—=iëëüe#Ű üđbi[âˆh–»č +f3škk„ÁiÇ€O!kla!@Œșe‘-Ž™ZMƒäxš4U1šßéœÜ8Șđ2Úd©æ,€Æ);Šżƒ€š©™§Ë2ƒő S{!4‹Û?&{?TŰyŐž9I0-n-­·± œĐž?€„ïIżîäbéȅ„>alĄÌëÜ+-VVp™èíBÓń&AšÈ§Öc{`ńĐłûŸ>Kö@>ü ‹űJ{•óŚòĄÿS”óŚò©„Íáć|Æ”|‚q{|9Ÿq-ߙČtńđr>ăZŸ3UéâÁć|Æ”|ÍiÊùŒkùÎT„‹—óŚòÁus’r>ăZ>^ +œ œo·^Ë'8Ǘó'`ïî{XΧJ€V©pí˜ 3YÊÆαÒàÓŻDBN źÖŹtK»OÆÉYÀb”sMê¶ÊêüÖœRű†$­¶MI„çżŃÈP-H*U@JƒT2Î€3SŽKÜŒ +ŸŐÈc»ž-T€Ąê7ûtźÒÍòÂęŻ5fž +ì?B9ü *»Sș oۧzcć`›șL֍qęž„â=‘i„DeŸ-©3čˆŸú7XȘ•„Ęün¶ ¶n.˜_ą’ŻÇ^Aym2ïæ—h'\š•Ęí_ąćFÁČ»c#[°P.däìAęü”—"1ŽŽŁR2.3śyVȘŽ„>č»é3 ~ÍŰʊ `ÊgXeń~ÎńΔÂúyšR”ŐșWæüVłÒ8ĐŠ ô2È4°hS Ì+UDŒțxČr`‹©zßz4±ńšbœĐŹLŃŻ)ܚ)Î}j +Æő7EŒKżFî\-Ź—:îöiâĐëSNŽH )#fÓh’yżOZšąŒzj˜Ô–çSŐähZ{@3sAP˜’6€fVącÚ1y{B3Iæßc˜ȘŠ#‰fZžșŃÌNk0옔2"•ï^^Ê<ȘȘqùŽU3ê)ZlŸìu*ÓÌêöű3L`ÌÎM:ѧ>IűŃŚ]äBźződțàžȘò”r9$P†™ Đ€ ›qŐì(yșś-ÙĂ+VÌgșGXuÔt„,¶3“f$ŐuòŽ|O}Š˜•ëêî鹄 ’éŠWD JRkÙŒ<“+œèÍ>Č~­‘éőÚ€Ê4€*ËÒÙĆ„>Ö]ż—VC _ßNÛkíŚŽÖŸÚNłFȘ}bA*#\‘ +ŰB§á•ßˆòlöè–ČO”Ő> AHŁRžœą7ÆĆ~‘‘ÊŒŚš[ÊèMp7zóS7ŽȚhpšNôŠ~LôF6dĂyšèMۙ‚~Ÿ…(‡…èMę$ÉI†ûő‹bôF{‡Ęz=œĆè ZžFőpGGo`\Ä4lg6fŐAgÿČX  •koŸD•3éđ,©46ÛÙJCșaVkjHŸ f„ł>‡ńÀM9bŐĐ ÿ`ĆÖŒ t,ł*Ă?:J .ć>zpČ%,HC5ûxĄ‹Rq)JTÖ/ńÓO†°<$” «49,ń3O4MQ„Ž9Š˜UáF5 #§Šu~ê\ÀŠzC– űÙâօĄæÓŻÌĂę ™ä‡VæiîFÁrșÓVæËi+ó,Ôxœą2mHîç kX™§Ê4tXnîÙNéâUêZ}’ęKcŃyČʓÏ2-š:f·W„„ĐN• +ęș’ăáŠ:€yäŠzń$G#(žžÉ2’„) +Iÿf§óÏ;¶jűK HŐÒÖ6ÖÚÿnÈ –ÀíșĘێ‡ő-,1܏†z2í°ƒ“u@őÎÏNV$˜ô g–‹dŸOT$ûț{Š"Yć$EČ°ní$EČĐńEČÊN‘ŹȚAŚæedÏZGÁȘò—P‚żi +“ŽëńĆBÌZjïŃEyj”ÖățHQžæܜŸ(O¶ÌüŁŠòv‰öGŠò,űž§(ʓD§a·Ž.ÊS$Y șŒę‹ò,XŒü6ŹŸÒ7ś;ęŸž“sĄÚXÙżÄOßoRíűÈsŁłéĄY:gÌ0ïPŒȘChLJ4ąœž[ۍ2ߙ@”tVNˆsˆûž:êb°6ÚÚOWŒòžô»î>–Ó]će ïŃóëdŠó€nÍÜO*ó'ŠG;FÛR9éÌ}–;™f)ÚžŠćN6țŠź€§»%.—ŻÆ:őb!8, ĄŒvĄœ•ÓĆ|'r+„š”Eapiû›țev‰‡TçWu±Ÿïjx‹Ç­1ŹŃ‰ś"m_êÀœ]Ą7 +©.Uew‚~±Œ‰œŃĂÚ7.ö«’Vőo)ßZÂȘ.»ƒ·sK>ȘêĐÎaEŸQÙÔĆêK_ęèûĆŽßŰö]żŰïőÍšîÇšŰoÙéèbh.oŰÉHŻŰ5*l|xŃÇZș{«ÈXÏvî)t.ÂW==Ź; Ö­€}Ű=„ĆÚMŻ,ŒŒßXhw†nÇö4ùŠBæ&Ša„Š+žŒ«ŹŃip9<”Śâ=ŸĆNr~óri!äÌҝ^–ΫÇ,†wzęZ薕>iœ\o˜ŃuŰőzZ†1îI«»uàőz;ČéČ«c6“Ê8Ózž mᶅéi|Ț17ë©@É *Y6í§Ò.ZA#ÄæÆš[&·+˜öI°è}“6 ú€p>pĘTX“˘Ty”âș9aaŸVqăöD…}Z–ždȘŸź°O+>v†ź{?iaŸbpBU¶·vȘÂ>­ŹißS[VRۧUŐ‰v⟃ĂĘûöiùr*†>EaŸšêđȘ>Y +œŹ°OkŸG-lNPۧć]#”vÚÂ>Ę]ÜÓöiUőńȚÚI ûŽL>fsÒÂ>­֍ ^ۧNφU}g&śFPۧȚòBC§.ìӚĂ3őÁÍÇöÉsž“ąxÊÂ>-Pgbœçé +û,lŸą°O«ȘïD35ś"šŐÂ>kD;ș°O«ȘWk'*ìÓȘêۉu_ۧ@Y±r’Â>­Ș>­Š•# ûŽìj}śàÂ>€Œ*íd…}Zł€“Ę}LaŸVUŸčï©KËő?șùGö©†Žs‚ÿ^…}Ê>™ùˆgÚEČJQcïö»¶Ś™SnTÍìOËażêì“)°t‹Ÿ[îcrXŒĆÏÒ]Š·űY%ŐƇ]Ÿ$x‡‘ŠȚ˜ZêC€ ź·Ûčłwÿ>Ąćiá?«őŠ:wőâ ț–IeážjUŸŽ…MÍ0=cÏ>Áˆ©EaŁë2eÉúZć2…É•:±ÉÀ0›í}ùŸ6ŃÔśÿž‚!\ț‡íàŹGóËÿ,E9êG_ț‡ˆfzÿŸĆš>ęŁ{­çCuù–ŃepÿŸőR)ËÿTÁkÙ-û_ț”§ùęxM/ÿł|¶ĘȘq|•gö‘ŒP雃ÓV‹›Îțen‘ŻG§ÿŸÁ“ÈŻ=ÇŚôŠ7ZÌîF5}GÔ5Ée„–“šŠ”ÓBpíi­ȚQLnÜ+IM#áÈRŽĆ’ŠjßáRŠŒunăxŒ” ŁJógÇż9°PÍäB’}R­4KčÏÖR­4+IäÆ9íH +žŠó +8I}" Ł }\j‹N‹€ô3Žö»CòDśpòwHžŽÚ·œ›‡~;;Ęń†šn”˙ČȚÓJÁ èŻÁ†Ç–Ô—ŸàíX€&îlꙌŸńxw=XxäáR Öi +cÔÇ:ï +[łt%Žれ}.wϚ6œÍn6TśgbîUBĄŸ> +œOŒźÆ;Á1< S _`hS@Êőh~‘ŸăŠYĆ>%>y1âhžNŽ5îę;;šȚsï{ÿx†6žúï4%M(-Áèê?‹ëŃäȚ?‹Šú±śțÉŸ§ÎŐû.#í{ÿ0NÛĐŸ·†©źŒúO;àčïœJał4u”ŻŃœFé<«}Ÿ-€NY‘iïżG?§h§Șö}ÿUùȚȘ}O«ŐŸäù~śËkGaœăí Šæ”à 2ș +NDc +èxÿŠ@ĘȘKtuk©ÌJà-‚†™ûWߧÜțő˜rkVL«r-­Ç—ę ©vÂvÊÊŽO]3sżB*80Rę˜ë^©;”fäGA4«gžChV–§AŹSIŽ……òf Ÿ'ouîQK„#Äzœq!îxX«=š +—i*ŁQăèGTFvˆĆ(ąQ–ʝ(•Ë( GwceÏșÛWăŸ3ț–_«u·ŻžȘ„U‡ĐNtæ`2B,ìFYș@0dŒ$G9 ënwR; ênÍON‚Ę:Áe˜BžÎÄM!ÔÊLmBX{WœîĐ3ČX՟i[oÓY_»sœìûbà[„ÉŚŸŒ—G”+sNóŠF„ń€łŹÖ%wÙŽUQ™·v<œ6ńȖòjșTńíU«2ïŒŻÒ/ ä¶ę©‹•(^œ*ĘĂoy>.źČnìĘšqÖÇZqt”°4üŐt”ApŹw5Ç FźŐŻÌ[»â—žĘV]zÜÙ·čNœÇđ>Fł +'r#-O­ș$đ"rGśő*ózX+ΘrĘšïÿ{ptu°&ȘŠRO5֖V>±qăI—ÈD©ôXVN­>őK߄’Đ­ś:€ŐîŒ/]T4  ‰Ÿ7•·ĐΗZnJ‚„KŻ_#ê<iżGC™ ü+Ió]â 4d]ŁćvœWvæ™ń”nŚÆőU;Áœú#͉[ú}*ê'ΝI§öZȘŻZ˜żŸkÙìāśHÜR‘JVő.MHŐ6Ëk”^g5qK—Îäò8“dPË\„•vXÖ*Ü'ŒêvK; lÿ>íìFQ+i¶çșYÎ +ĘÙÉĂĘ9Ìt5ăUŠźÒibÓüÜÔ,ì;š\\g “ü­ìŸLRlt}d as‚°ôgIuűÎAńŽęœÓŽ§•N±ÿęY’#Ògz''Y+IŽzșî™t|»6mŽòjÔ M[t­€ąhìÔą›ęNrĐuù”ž4S>0†Ź”Gkÿ ìŻœLYc`ßó’”á—ÈïNFÂ,Á©ÄÇÔÙœèo0Z:ÉBQ—hfÏéÏ°:fT±PPe­š*‰ÉYŃś4ÜSŃŻł3:îՊ©źè–~‘€<}Æs(†TUgÎՖjÜúŁÚÂÛŁ.Ńü0 ”2‚f| Ž”ŽĄ"YMç&è†©Úś<’hŠŐD{ÍdtOą™Ț œÇ0o"ïúDÛ©bÖőxśżhPĐ7‡–$êYîzÉ°–$*:aP(™ê‡•$Z­GԌC[/IÔოzD-«s’D3śX 8ï€ZíW’h”q7fŻ’D«$UkÏ=K5čDŁŃē6+IÜǓ>š$1Çwgw\š—*9í]VhÈĐ&Ćc{\Vxfp`Æ /+DŁ9ŃE„—*¶‰țÜe…»žôčŹĐjŰîÈË +ńĐĐŒŹPRköČÂÊ*©bv5ꎅS­žđĐú©VG]x(•ęiȚvšÊL9üÂCăűë™~9ö~ê Î}‚šșĆ łS­Ź_xh\xv‚S­Đ…‡'©ś<¶ [žÇ]xšČæU·žÉŚș Ź{ÛáٞeæDjD »đPgpÂm‡ČÉqP%Ą„CŰMb{]xh|Ûᙕ+)Ź\xhÌ æÉ°/<ŽRïy‚ EiWìì0ôĄßvšg§í}ááțćq'*ÆÇo;4Ù#°~áᱜfńÂCkś]‘o|ÛĄÌŠ•žôȘ š$čŸçѝiß±ÿ…‡ÆŐ1âV„nu ańÂCă,AŰ@hÇ]xˆSsś¶CĘčÁ¶z,]xˆŁÙœíĐ(fc˜â­Ÿđđđòž“Ő›"íyȒ ƒÛś’FîyOáĄ*Ąš 7vYàÀ Ùú>àÂC=(!ŁÂę/<4ŸíđŒ? +ìű Mę›Ó\xžGyÜÉÖăÎm‡Vdš„ 7ŐśșđĐű¶Clßó(@&ËȒ‹kćÂCëśuáĄEóžÂĘ˜/<4ö!vąê‡^xhìvk„Ä3‡\xš9jé¶Cwż ŸłYź6ŸđĐòqSÇ]x(Gj•«BȘ‡_xh E+Ïæ  ”Ąˆáëc2șîÆÁńD<Ș~ԅ‡Æ„úȘ­ˆĂ/<4ƒIÂæŰ Uel*gL„ÖżđĐŰ»Ççæš œ{|yuᡊhV.śœđЂïyŠ -••áĄńm‡Í).<ÌȚvÈ'ÀœàÂCmĄ îŃ N;ƅ‡Æ;>юżđPê˜f<ó ËFëÂC㝠܍ڝĐă‹t…Û­ćuZ»„Ń H…íö<Ù%€Ą+șFșâțńLqo”ADxČs:$úM/T‘ïŻŒrhÖQ*žŠ'‹òÊ\ŻđëNySNÀćV©”~p)ӆĘł1‰Șw +‡őfÍqÔzbjŠnśœĘ9‰ĐË,Î7U]vçmŠ$Ü {hű¶Š„čIœœ™$Ąeóèu~<źÂošŽïòŽßm!fgFađ­Ÿs&ź¶„ËÛûßVôwöú#ĂÄmù%ŰröèM%Ò/ŽfÙQû6ö<é°wŃß'7ûć|Î{"ôśy§Ő˜„æiX\ŸdłîĆo/ț{Áć±;ûó]Öć »+±‹Ż·ZÍł8Ț"Ëw6…æ•šf;í'{Đś™łSăß'_:ìÊćBŁ@”ż†uą»lq\?éæ։çÚÚń4ëèà­)Ő%v|ŚĄÀs0|“< đŸCÜú} oàK:ŽĆ‰ąȚőȘ{ÓKæ‡+žT„ 2ùl;¶oXŒđæs7u-z!Š€o.9.쎎uâf\lÓńÔídœ .TŸ€"cžœê˜ì#XȚZËUí[ÿ*rânšBҞ/w:„“ßšK„5żR-#0žf+ȚâĐŒöÄ."N‹™ŰEqKwËì ș_ŽűQiœÄó\h“źçBëŃU9é˜5KÏčđ' Ü"S™?œŒç«1û€6Oż"\țŠQ7é›ĆamćëgîêÆÎĄqć–7ë|ăùčç+=œTá70àæ<K‰ę|,.}ćkE„6n˜ÜĐÛHžt(tń:%Ę(æ È_€?ă^TŽ dOmțŒöŁ?Z{ăÀŸĆ űZ9T.Q· ·JűhÿƶìźÖj€ß5éĄ~òŁixđgÉ #ŽĄáĂÜű†Òƒțà3ÎJBűƒUqŒŁ!±g•Â/Źlžóâż=ș" ;?ț`I‚èêGČêÌPC8Éj †H„æz9#«Ùüć>û }ü|“Ą3ž$‹É +ä0pMÂ&!X9őCł5HčRxăá.ȚL; Í}°êi*'ć D oĐÁhCyČč+ˆæ +nŸ· +óàۛożnèFÍȚ–ÙRÚP(ÊĄ}„‹+.…ć©–Ó‚Ô‚MuÏĂÍ”ČĘ4l棛çÛ[çŽÔ5 8.Rfcêcû™+N™I„^?Ă"“u"ŰĐél\â—ç€87ęP„Zń9$.€g|đŻ«{&c8úŒ”Ă~ Kß"<€ÒŐO üÙ đö†hö»!čÒ+Ú%D@]Œç` +îTìQ7Œ? gÎÒpö›$Błïš8šźpû(áq&jȚŸ(ù“°Ÿ‰'§Ș\Ąïvgù!ÉB°PïeąAkűÒséú>^ŸĘđ)}ŁP;€Fhz;ŽÀŸ#=z(śŸ^‹Ž/á)—K·O AËn~ą;HĆ —ĂÎtș_îyȚșZ] +ȚóJ]0 +Ààó•ĂD”ŒÂ€Ń%ÍÙž+uč€"„çÂï^ڗŒFÒą]eÁƒÛ:œešśàÁ5L+'­QńŁîšf~?7êÓ„I«ÿò ô˜_âÌyʃ–›Űäéòw’Òë} Ÿ†ƒ4GßÁ/q‰NTzJ€ąłAÀĄ3ô+Ì~4@uđ0Űiț'A8łÍxš7€żSoȘ3€ˆđŚgî]Íđ”·! 9ëăEŹžȘ>qž)`ĘÔÇzę›Âü|QVJYÀ2ń§j±?ˏ€Żș*K±’òÀ șE P‚äÉkÌđűžŹHœ™Ä)ű!D Ńőô’€î ŰOŰy5΋À)ű$ŸOUæ^Ä}? 1kpŻdkOâ4ÜàÛÄ잻nÒîsđŁ`śSć;țOOú.eś?}Ö쁐«eś=œ_§m{ ÎÀ‘ĘûR”{8ÎośÛû.h1>áû%kd›Ś>šŸ…ûŹKïć_ÉžDb/Wbú„Ynńêçž\­Ś|çêÛMŚȚbu Ęçčt¶”Lˆ_1Ѕì‰ĐäbéWș'–±§ćK |ùÍ-«ÜkčçŻ:òśăôMŸCGœôŚĂș%Úikû‡‹&F šăź»dcPôđ>{êúërćH…‹ô }ۃëÆ|Ìâ€َšEÈKp·ÙĆĆ œGq»€K0 íß ùEŹéE៙û(ÓŃh_ÔïIcÔgòíŰ8vAt{ȚÜŐû€G[}źűuœh^—êáú†žœÊ\Ê;ĐÏDˆù š{dUŠz]ŽŽĘÿ»ș2ő:Û đ ÀAI +Ïî¶û=9 yœż=|Ú=Ó9”‹‡wű:Ûga·œŠh€5>Ö<ŽYö{Č Ž<ìOlî©q]+ś6{©»ŸX^ö‡ ›ÓÉ9ÌNłJnë†ìÖóš€V'mńŽŚ;y{ÏŽîšEZlONzŻeguÍ4GKy "‰Î}5ûțj!ÿ€‚QÙ1©”ę|6;ˆÜ{  QŽYƒĘ +źŁ 8ˆÆpàòĂÖŚńœŠ6äŽ1+äZ)n(Ó +  A‚ȚĘë]Țż"rùáĂ]™ÎúąőŒ™rŃĘòæ#_őïr_ŐU‰ûÜGçƒO'rs!nă,ôïšv9éˆfNáŐvœń‚î‰reœUŒM<-„Îù +ą èAöĂsŹKŸiw’ï<=sWl’›ńÛ'ńßjë )1Œ+XêŽÎ'ˆúŰ<\,?ŠĐl €ÇKÖŁ¶ŠÚé¶Ćï;@çLAńóʚ±ŸbÛ+/:âgŠÓÏ@Àč«úŹ”VÁČĐ5Șx4Ǚ”ŒȘ3EÉïŸĐmHâ l;ÌźÚ“æV Ž,›Ă­É“PÇ«Ő3TPvŁÂŰąà3!śt#Œ5șjžĄS5{8ì0D֔ć- +y9û8éĄL3ŁŸÿÛțŁF…1{jt–i]\nŚ-5ŐaÌà°›ËĄˆ0Žă©æm(“X|€ @q8îПét`“„rQû&Údùjô1ÔÏSüI”S—K:E;F1âÏèQ­N âwoŸV%{ĄÉ±§ű=5?7Jì«b±0s-Țé`Ü”Vi[cUû_Ö7;Șî /ZČNî= „ÍÊ)Š%üáÀJß)Xs­űŻNZ6t„r="&ü»ŚtïeY!ąí«rśçt>-áTa3]Ôh4Ç,qk<':ìVŚÙ¶(ӎà44`žă±Ï:;p‘iÉ4«3œÇ"ۃÓĐ:;p‘!§P±ÎàöȚ+žłŠÌ~Eoú郀wv_Śłûæ‘ČĘßŐáŸ.»òęC~wpÛć +ÆaÊîé%à–L 6 Ûőä멃…ÒÁéőZ&"Úi#§Ú#8À§WìéÎêIŃĐșàI[Č5prDàˆ ­ü{Gnc|OÓ0·Oìä@E œaqo»ÜsQžŸB±À=ë&+Ÿc2ƒę §Ń+ü6;śÁüżš”8Úń àšŃĆOÒćFȚÜł—AŒùŽ„hsč{ń‘˜ÌË﫟–â +$Q­_Íï`?ÏáƒWć=PnĆÜŒŰ—ĄŸÛÏ^߀ć9qœ­w’9T`•APÁPÁ„HŽ­b”óԌŹß.Ćő…îŒJ:$a{„sá€ZŠtȅ1:\€í}‘‘L۝vB1ș9ˆ'œnă—mœătŰŸĘKtPĘÂć—é K„pîÁíˆÀdïŐJ{Š ŐŽOË.ÔDȒő”° +ž†D„êGđüû‘Ś7?è2¶ÏËńû™À Ԗĉ0ŒżŐc—ćà{NŽÊΑ: Áà/Y:ąèȘÙČ9deÀÔâŠÏB')  ç̃Ÿ-)éƒPĐj'„uŁ†v&gĄcXKƛ|Ìf?nœ7ĆunŒÈՊà֍ł§5*8o(lÜüM<»0a <ćÆÙSȚ 55eȚTM©Ò)ÌŠf †WMM™=śço>KőÖœ{j DæM-JHRÀP ÊìITéö@ș^oĄlç‘Y(w +Rg_?v8Íc‰Ó Æćђ‚§Y„GÓLXç4Ìi‡­}źTrš1 ŒÓö]·§ydN;p zœöźâ4ƒ”ï± €í.úęA@­?•Œ*%}ˆóÊŒ©Û žG`Ű-AžW'TJú”ï”›P‚aJZ-ÄŒ‡*i䑱ß,4L«~ŒÓÄúç@=مÛ)]ž‰R”ûï=~äbÂ~©Č‹°ob;nç&—@– Tƒú©((#çÏ;Źk€1ŒFùúĆÂKՑÄÊ<±ȘJščȘJZU7ȘÁ„Őś°ˆłêć=’/ò܏†t&ûÁț…ź +o†$‡æŻ\ÊDÜRW?ˆ‘۝€ŒòČô™J‹rüŒreo2âłr{€Ő*fnùȘr +<áš+9j|Æ”}âŰ+ć€LZ@ĂGüvêÖ*śdrXö?ŒrŠÙ$Íą6ń žał=xH ïÖ7o‚šș +üÙ" ("ÁÇțùÂĂ’8| Ș3èê‰_kh6š"y%ÖjȚUWì§ç«8‰•ï ó„#čîh~aԀ‡Š>vB<Š€l…ŽàÁ]܃A>X|æń:UÌ?^^ő‹“xc•ïäϐç“TáÍ c6<{†/Rmg',WȘâ“<žńK“ÆI^û Ć—cĂs»<ü7æü àAȘ·Q” :ÏŠĐ WQx0Tș†Ÿ ó;GŃșBnłÇ ”.$˜č„ =Àónță,^ ʙ1”ԝÿ+$ĆgăˆT†*Çáìcč*†íș:Ä€/Să…뱜.EŸwâ-•—áÀ%țC8JÙ€qŠÜŒ…Pč(èyȚË+œŚ}ü7Źç›qę&VˆâʉuȘsúëbĘნ/‘|ㅀ{ąQ X܈Q×ӋKTtɗ^—ȚÙ¶ÛŁ”ÏÔź=a!(ŸyŻ] zÂBPAŰhւž°” iŚ‚Pșü?™łƓá˜-‰$lĄÖvÎrśÜt<]ŰÀâč:ûW(_#ÉÇĆhYæX¶ĂțgC/‡Ûv±±„lĄ|»X«%ą4;\ŽX›_HoŽKüƒ JđSMGŸ~țJVfUG뚡żˆŚŒ:éÁź^ŁjRhšű2ł4_)ćŸL'0·!hśmSmX EÛÄ-Ł·šGXa"ȘûéŠęò2ț&F>e#ČŒ3ŚƒŒuWÏ5’ëLąš~–—ĘÈS‰{ït·üÚ)_篇‚2žgቔQo¶àÉÜŃŐ·Wï!śBüŠż€#‚pőŸŃŒdÁ}„Eą…/Ÿ~òêĘ;ez~>Ì·:ïźÒ C&a]%˜ ›UŒ· ”SyfÖ„úè é`Ÿ=ŽJ}Ü/ĘHˆ›ÆĄóühȘ„ Žxy›Ùd~eQËËY$N€ˆ] ^oßđâíìRRk";Ç~韖T0|Eg¶$ïWQîäkX”Ąz~žÉVÄ Ő„W”Ąș>/—±€vdŸGC*//ÍŒcêÆ.P@± d3 >(œ_  ±Kûá,ń'Nąß [ŃoüÜôÂȶœąȚFAę㶞|Xț€°‰*œSvMÉÛxpÓìCg/Ó·°ș—©+ă{™Żț…î6ž…=Đûöń^çćjö<Đ{ÄŚyi"Űś@ï_ç-«êW}MśÀŚyoßzÉŁœÎK­Ùś@ï_çMBë?Đûöń^çÎ]oYűșŻórkö<Đ{ÄŚyóNößÓăû«óÉ`üțoiótÚN~«ò›g9 = ˜M–č;›ŹéđtáńĆûÿEçOhüä'ú@Əż=óËÿíy'ć/Í|őï}ßüę‹1­ö=~çĘ·Ù~ëßœśŃgóvțí[ŐšĐű뗟—ÍÓüƒ>|— ȚśśȘ3ɈŸÿû· ӟgŁđÎwrLlÚóLûòÓđțVLˇ+sæŠśoߚZH«ŁÿùAY;|đNJŁ?>…è§) -©țt»< K&“%›‰Ïælú‹ ŽJïŠĐžçÙG»‡ő~'’ï 雋/Ÿq{ö§‹ï¶çż^ÀFË!ęűG?}€ +ƒČK©[€à»œ{ś†íŽÊ|@PòìțÏ_|űű‡ŸîΟÿ:ŒËiß±ęîÓ‡w‡Tæ eȚî‚3q†ìűt7\Ïäpÿë‹ó wϟżűôaN€FœĘŸ%†èÇśżpđâö­—MୗÄLJę ~ŒȚDŻ€qűmąóŁóQFŁŒŽÎ˜`8Eà›3ʆh]DJÒX/Ł°R;™€€zωìû•bŸ!ôÒ~€Ÿțăbxxż*Ú +G?:Ł’Á[N•ZȘA5j-„ô"Ä`LNubű…8ìSÁ ąàyX“ŠjH5!@…”K$}Ș|6ĄG‡RsMnxY‘"ŠK›PèÊYíŠ&Z«ŚMŽźG–SsĆnX[‘ą6pMč‰V†u­0=:”ZjąpË˒3Û”š8é—tF Ú*n«ÓŠĂÛ†"•°‘q„îD/ŒĐLĄ~ŃJéeƒ1qƆ b”H&ä`lš2y@-Pj™ąwÖi C9zWâšh˙ìèŁ: +JČŽVƒL^s‹•„,€ă`IÉŹôŁśà(Zf™©Jć]i‹ætȘl.jaUšUEĄŽŃ‰ąŠS?š GȘ"Tqäà*5zd’„ŒÓŁBžà}Tà%ŐŻP™”1ÒǙą«f#)‹À[hȘžć Úƅlˆì4h-ŹŰŃ€Žž“Ł±œR,"n‚†Ô2a)p·ŁtŽ«Ț\ś”ŽĐVŽ2ű©.–ČnŒ” sOÁNé,Ü%\ Ëj˜ˆ5cŽ1:IìmOA·G/æ œŽR1,j4ŽłźäVB #ò#FŒ‹jhJŒ”ì€ÒX"úÎcLz7‡a•@’ąÚìâèleq4™MŒáÙÔëAcj¶hŒ"KĆSÙő™oÒ©ą…fÒÊPS†Gč«K‹•(%)˜łS†*8—€Ž©'YĘóžQÒ.̕RY„X˜„*=}ÔËeK+Ș¶ȘÍφwšą‰Žź€Z§Żè§Șż»}+wï ßÿ;0ćwûP­îș{‘`ìđĂÓ'ϞŸÜ=~țçùł‹áÉӇKűZÓŹĂD‡·țÏ^ŠAL•!&q…#)v’D±C°$Ővš€bàÉ;gžl…))vȘ€bàJ*vČ€b`ËÜÜÒőoœLȚχü«Âš›Ńf‰%s‘c7…8©eWÀœœíˆšôöàNúrcȓˆ_{R¶ŚEŸ4oő+ PÎvL Jû(”ŸÜe“x9„lcQźĐ(ĆfÔĘ꿁ș»Ł@ĘĘQ îśMCĘ]äk±· ŸöÜęêüĆ?=Ț=Œx>|óòń LđűûŻnűŰBYS~ć±ÊúęC:E‘9_ŹÈ–ŚáM291HąÉ€Ï‰ iNvÖ+ û”˜7â)Hà’АF‹0û-„„˧-™ìłAKaÓwšSC(șR…62č1ó~?êÜ<$±äéFvèrbȘ–ƒkźZJ1ÛÜ< Ëžd4&ÜPJ&kâàš“–ÍDčM©…<é …Z+œÍM2ô°Ő‘țSÚ '‘Mp„ ŐĐPąßé°ÊšD…Î({CHq=°©3žWfÚc6­à̓ŐGI >4MÂÚńŽ! +ŠÓ€" +˜PŠ@‰yjJ3V +Є6 È€­uÂxȉéĐàɉJ2Ź]•Ìsă\’M\Ú}4&o™&.4›Žß”Žf„-S_Œ»Öu(ńAĄŠ0AćEŻ“€2€!…dNŒÖK]B/›Đ3Š`3Í9ÆÙeY$“šŽÂ "ƒ +eń“Æć ĄóŒ XRïq0!VÇ sp­™iHQäƖ­É3ß4)Î;ÆTĄiăÒÈ2ćêi +ÔÓÌh€«Bs!H&͍ź Sű/˜° "çƒqnš‘uÄ܃Y Sž€’ÌéóN'g’äɓaKÔN•p­aùY9Â\ÙìÆùEúš~Uu]„š«öő€Šôm/€VŹ|DÊäá\ƂwÈç#›ŽŒ†˜€‘RRÄĄšę&ƒciÚwZĂ“œnŒYR'J-ÏkìiXjóțIȚçIț›żțùìšÚżęőÙĆúbœš”áçf’.ƒîM}zśË{Ă[HÆđS4OR˜rÛêû›<ŽXfÀ{ž[ÇÉû‡>Đl€?ZQƚiò`Rą©=Ž&Bƒ• œs*Ź|•&JWđ^àêš °5•`4,+!î։D."êbkhI S,[Ÿ2]î8œi WB*èƒÓȚ·"èÉî‡ÊțđśšZÙB·ĂŽLš<ÈšzdÒuŚ©=î)ƒ űÀÌKM%Ntž_%29Z|™–§t§ ûpM}iȚjÉQzۖu%:ČËZH¶JDŚÓ[KD>üu%M§ŻSjË=§7zÔTČV?æźŁ·JžžXk Â<Žő Óíù”ȚŽe]I#‚žì*œMß[œ…™6ŻÔ[%iqkĘŚ)”'[^ _éQ[ÉJęw­Ț*ü+őD§>Níɖқ¶4•ŹEГĘBoAXŠcB“ŸÍŠiv1ą—Á:Z… uN”ˆ$)YlK:(Żš h-B€gg--R €\N`æ™ŚŰ`™^A«ßŽ€eG« Ń4Q§éd0K›ÁŠ'HźŒ2Q9o=-1sۄGíŽ,m•ÀÚŁqÈŁCt&-/7h=È $ŒY["iÇ`CY‘ZgF ­ü”•š& łT€7&! _«©Ć€Íˆáî sIÊi‹NÀ…Ùä–fÎĄÁŽ±Èć<ŻŸ#‘«hsł&Çb͈HÉŁ”±àê&‹”~ŃbȘÉÚyq‰ó(p#‚Tń)0żV©ÄÄŠ°ŸúC€‘Ź1yœàŽ$čƍ\:MÆÜ- œ™Ą+rx˜!h’2ŽjżÊĄH%„ƒŽ#ăSç“.L ÖlÄ'h‡ ÖÚ€Bőșł€ 1œIA>0+#șCéyé§p‚ŃžŚńt«Ó@ŻĄ )Ő”m§ôőHۖôŐ°Ä b›Ü””çâӒ@c%ą Mú6§ŁŸvŒG”7œCç Ë·æőIIW~ô@–0€–ĄIQ ;YëèچÆÖ&…6+DGkŐd]WY˜í†‡”ÚvSjŒm»)o0tÓ;†Če-G +â=ùrzGŸLg_z‡ÎŁÜŠ”Č=)醶۠lA8ïÌìZ‚ŽĘÙ@ËuâƒÈ”Za:‚ˆÎ.ùÁ‚œ,ŹÆŹQćKŐč-6öËŠEŸÆmŐ.¶BTŒ—Ę ČZőB »j’­Ü‘5TVtĘ{4 ÁíˆȘ=mz#Wç;ÄŒ‡Uï Ô|ꎂćnMčS“{9Ù!hs§lÂQ8_żŁpȚÈIáőP)TxwČLè•GDŠšvhéÜ«ć‰=Țf~eæŒ[œ‹°•"TCĆx1.¶.Hp‚æTołÀŁGŁ ,!Ëń±űt«#đ ë: †œÊŠ:"‡‰ oąq ƒ—@êLíÈùf3‡tŰZZjÂ0ŚIô YoÉ +ĂIçRœcÉ LÖ±>ÍŐŽrKŁÄ-Ć­eć1ÍÉĆy@Hžô@^Ì"]*›^bÚőZÍ?ć"Ÿ eÎÎżLd;‘ìi©Úč¶öűG9T‚Ž&vžDÊ8†&œźiqJÒI/žBt@ƒĘlM5ÉɝÀâçí"–~,§ŸÀè±V{^țà~Ą­X„àÏ1 YnpĂу,‰r‘ćĐč Ű“ÏöÿÚĆÊ”Bäç +ĆqŻPì Ćq±òÙűÊÍBäG Ćq”îœälĄŰ!îÖ+Ż'VîĆú}yC.©Ęœ0Rł7ă†QÛߐ#–Ć|™+FÙnÌ#âŻëŽŃšž)‡ càæ\2ż‚SFčȚŒ[†šȚ”c†>»ŠkŽnÎ9ńÙ=»sv  ™g-G^ć€QMŐaÔÙQKákșj$»źłFęwč»FčŽæ°ŃÔÒsِ~#NÚȚwÛ`ĄûŽĄŒË\7ÊsçíYÇ}Ëvî&80ßwáx*1UäÚnOŃź:E]čr»Ü™Ł\ł;WbWuè–7R/śWČz]ćÎÙ z€§—û`á”=GĐž9ßń*œ±:°raÌ|žŸ˜Šìč0;‚ùț…€}î`țÒ»Pč„9Òq +éËëș…4nëfÙÌö8‡{$6 ôûïoÆ/ÜęŠüÂÎȚ“?xòOțàÉ<ùƒ'đäžüÁËüÁúÚv”ÍwrَèČÁȚĘŹŚ·ëç=y}‡z}§ íŚŒĐŽȚKWÌé`/óúȘ DëMŸRœ”êYRŰŐWD’ńtë+-CȘ-y_À5q}uŒêŃ2jźÍš?kbÌzn”ëăr…Òh0r{é:æòB +ÉéÒ^}YTŠ™™/.‡æŠXțcÓÍzô©Y_.ÄÌ"\‡§æÚ(ÜágE,±žÛ–N+`ȘM5ŁžŒÏƒ‰$œâŁ49aéè>]6é 9Qò4Éa™ŠžæÛšV;«+:ŚĘȚœ©üE/đŽ7gŁÌ\=ĘÒܜaNĐW'`Jš›3·Ł§űŠqÓܜ™dŠèڋ3SFÚÎœ™ê%Eo=aögVșŠxí„19Br˜öҌʎsA2]\šáȘlyQ&%ck.Çš™/Ç`n.ǘú-äđíć˜|K™U=¶ŒĂŹÏ-/Äpuž†B} f Șœű‚ùڕ!î”è\|ROSDșű‡·sńš%ùÒQ˜jo/ŸÔ*éƒêš2§șÜź Êeé^’òŹÙ4ÈȘc[{ÊbòvrĆ8Ź2—”§ç<òXÍxÉ›Ć +–W·Š™o" ĂTŽ€)” âüékÁ¶98ÊÖŹHBMó~ɚk^»Ú€ą5Wț°Ńì‹ì x]ŻÒEïN–ç;œ-†˜„Ż­ĂŽ•Òć–G™ÖZ6ZžQÔ œ]E}Y=m–ÌcûĄmßșÒ$˜ž“7Âß-†Žé0˜ŽUžĄ»à‹ŒùĂFgX«?«Í3Á űtc3Œ”Ä&ˆȚI +ädñN»ÈâibŠ ŒȘ1>Y„6|1ŽÊŠ›üÚ/@ę†+F?ÌÀ°Ș„$Ż„’ŸŃ‹‡šbȚ•Ńœ§G›l^xÙĐ «Ö{j„¶zÔôŠiŸș!e^~„gSuę¶â†ü A…2~ąnƒÎëj?d±.«ąÙ^$FUà%č ż/[›+Čą-:ŠRY-˜ŸZ93ü ÜúMH8ïĄ–C'‹á]­y%™‰7čÒH[óBϜŐOé¶Y05Ó MÀ bŐËÀ•#8(5č>À bŐ›Ê‡8I]çź ŐFî„nČ̎AŽ\Í5X…ŹŠ„J°ł“ł-"‹żIQ9 Ô#“»#ł”œXFVTö8YŰ@æŰ<ÊöčćSw§v!JLí/V}š‰›‡ÛäL”a3ćÛçP䌫˜u{‹­>”ŽEŸ‹Ű,č}îEśSÇÁ |‡č$­c;ûtfÖ©4‹íő/èÓ±= ąylƒhÛË Áyl?ŁŒä}Ÿ}ș9oƒçš7äoPKźâqpŸ7ćsdńŐë 5čAżƒÈßšçÁñï{t?œŠśA4śű<ˆì0Í+ű Ę|ÇöBš/ë‡d{òúȗ‡…>stream H‰LTËn1 Œë+ôK‹€Ô”NĐSP=ôŒ6§@Òÿ:€ŽF°đjD ‡/­/?źùòr-ùÛÓ5§Trc‰ßáŻÏßéWț «?ŸoéòęgÉoÿÒGæ0qÖVóìùö€śtđ€{:€ȘŐ°9Ä,+Ó(ŒpŻù–qw.g±n~”-âÏmÉ«Őìń|œ§f$:băn”ó (ć ăđŸa’9ó#?w|Èn~Ęô äÊę,ÎĄk”đpmJQŚfĆő%Š ĝLœü>I+”EH§X ‹"™Ąż©”|XŁŃ,b !înšÔԖJEŽÈJt”Wâ*ƒëš­HÛä:Ú Ă_ÜÂyÏJMDV“ŹčA GÇ=c€†2BCš‹í°mł è)Ûz-WÔÖŁ‹‹V xK^N4à2FDòÁ»ë.säB4bÀOűŃ*Yž_[Ébg›Æ%s°†h ­ôŃ­±ąDż8öC«-ÿƒĄÍ„û>°­ Ԕ*zŽÉmśÇ>˜&\­ÍZŸ§àâEœ}ć1ăžÙ Ă7<ÍÈD ŒădöuWŚ‡Ć„†ƒ_ńÉuŒ‹pŽUOö\3ˆęIŻéùÿŻéż É -endstream endobj 67 0 obj <>stream +endstream endobj 101 0 obj <>stream H‰LTËnÜ0 Œë+ôÖJ$őșvSôAęŁMÛIÿ‡Žìb±ȚĄLÎPCioßïńö|ÏńËÓ=†śc-dß _ágü««ű|Œ†Û·9Ÿț ï±ŰR‰Mą”–rÎ5î,OŠDsFé©VBÒlxîÆx––ˆ;©„RŠÁŹioh+4ôŃÊ”[ŁÚTÂá&ĂܒˆŠ2ć{Đ*Cp4bQŸ łÓíÚńV]ÖàV™"ô7oÜòÓZÒtŠ.+§Ź„4~ûá3§Òf,#”Š ĄÄłÄ. E5'éŹueŠVjÜ$ŚÔëĐòRÓ`[™©òƒÍGmÄih’á=ÈtnDPIëŽwU9TL±€źŠŚ‘ŠXLIj ŁŽVH‹©ŐĝVÈT— Ș-)G‹łêŠîĐő˜%±đjŒ[^zfš’CŐS›ò4^ûëș ”˜‚[ĐQŻŻÊr‰člÓé±>W@›?Lđ qeÌì%Èq’HpštwƒŰC•°©Ț@0ÙËŒ*TΙL—f”: íDźŠ#ÈÇ]8ź hŻžV{š©íqÖŃ{„člÔ{s 'Á­đô2É T”wŒ”Ę­tÇȚ˜A'_é&șzÙĂÈËŽ1.ÏpֆæIçÈÓÎl•çőëćr«É•í†æ3[WGGæSÉíôÉțAŽ­86:‡Ÿń•C@â6U>]âÿ<œœŸü?R!·šŰĂïđŸ>ëŸêKű`ŒNń -endstream endobj 66 0 obj <>stream +endstream endobj 100 0 obj <>stream H‰lUKn1 ĘÏ)t1")‰Ò¶iŃUP]ôA›.ìI€±\†>ùű›<|{ O)|úüŽ·#…‚äßh?ï?ᏞÚçęőxűú=…ŚżÇ[@?sƒ”z TjxčúŐëčeH€öeÙ=ôȘ(©‰Ăü}DE"Ög“"“Ńæ_ć0ù-ąbn]eä”?:Æî·QȘEš žtG1ƒJŒP8˜ H-ŒX\†ž»C“!d»ÊX Öácóțrp‡îI^Æi^Š9|M»Č:4GÔOg`u‹ŰĄiC“! r1'QT-)îP4=©Đș<6MŰkŻÉ&íĆ@ÊAD'Ù5Du jgl°B±Gšš1+‚ F`ç BMĘ<цŠ™R;“6[™€QDÆâä”ddr“„T ż«úDú–—>;ł2Z•Ą—­ś3/âV^”gRæÆű3)Ê&ț–'4v.Ł“ H+źs„.bÖ"XóJ»ƒc&òÆLy,æ„ÛÙìchĆÒ2íÍć˜@JXtą§ßŽôɟöZ„Š(fMŹŽF„ÛÒtĂ{[ƒËuxÊ”;ŐëÇenÒšòčAłÌ­çy•„îüœXĂXƒ&4>y©é„Ó—öç”Ôҝ"ÚéŸzҝ‡ŽkI[h[UcśV ȘVûŹÔc…Í*l{•‚îȘ­ŹwnŰe˜b1†9f`°t4Îw ȘłA:Xú ÊŁȘ†V~šĂîÍ°ïčKó·ĂdUÿúƒêɶ1 vȚëN˜hűš`ƙ$—°‰ó iŚÊ‰nb©”;/  Íđ‹i–ӡ˜YNÉk©Ü üWIœ•K›î_ÇóńćIÿ=ÿÚàI€ -endstream endobj 65 0 obj <>stream -H‰LUKnÜ0 Ęëș€‘úo›]EĐE`ŽÉbŠ@Òû}€$1‰EÊü<>RòӏgÿôòꗯÏȚ}žè ‹ę}|țvżü_ìêïóÍ=}ÿęÛ?śáÙ¶ŰsĆSș?îfuwÜš6HI*­{ ł-zXŚ?|ЂšLQź*„>Ă[łšÍ†ˆu6BkZźAQž1La„Æž„„Á Ôń*$d„`•«2@`·Wyń#żNHjKŽáŽì6àr€óÎ'[ęLa>Á‚nĐą őHíŚzá‰ëńDc}™ÎÿbN/œĆ§‰Ö&•VČł)ŽĘ"œ8VçL,ó -Öä۔f뗓fȚ7î*œęHóÒÖ xȚă*MȘišêg=æfÆș…/ÌúpÔ8=íŁcï—Yô3ááțžWśíßČWś_€|ÓLû -endstream endobj 62 0 obj <>stream +endstream endobj 99 0 obj <>stream +H‰\UËnT1 Ę߯È蝗ł„ VU,ű€”E‹Tű‰c'7s‹ȘéۉÇÇvæáëcxűò˜Â‡áx;Rš,ț‰öïϏă{űSûûó|<|ț–Âóßă-°q(E)„ĄAj ·W7}=bÖBI żœòŁmß+ÌL]ŚIąE'.lŸö q«,;L»ûŹânyWϞŻÒf Ômi\A™†cŃ}jțêNĆș2_ +“j&Ž9…æ=›>stream H‰l”An1 Eś:….02EJi['è*(‚.zŁMv€śJŠ”FSAl=YŸüóEûòíê//Wđ_žźȚœ;đ9bÿßäćă§ûáÿđźü}ŒčËŚïàßțșwûVô)ŐäS,țöèGnŁš^ßç:æPš2„=6żQ,Ą /Éo±!’ćÍme)őm ”ä(˜țæ~» `dI9z%ĆŃ.ł™ÀȚUDB‡ÆđŸ”hrxÖo&%ÔՏ€ê©ł€O¶©…¶śźGqŹï¶æÆČ@š^žÉ·2à% ÁTĘç`{0ęžAì‡ Žț–0­D\žvÚôŽűÞÌZÄ(Réș©äG w¶Xú[đ‡3r…Â)$ˆAÂÈèűnËmp’śE!J*M”2aąĐÏ4‚q©»a-ŠĆOeK–NÌ=°?G”4pÔjûtTádW?1vàTV+°tŽœVRăŁÎa’ì 4y9…LQĄîëU"ńiĆ„­u:LÎcs Č|!5fŹUŸ=ISŒ;é]æ5 €HȚtÈ8*bO öÙèŽrÒ Ô‚ƒŹ›ÉÄÇâ°7†Ő0ŽùćTdȶ˜hŠVÌÍșj[źfű“9uùEț/(“j†°˜ÿć^Ęó ÿżș n€‚ endstream endobj 11 0 obj <>stream @@ -377,36 +390,36 @@ E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn VNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> -endstream endobj 5 0 obj <> endobj 25 0 obj <> endobj 43 0 obj <> endobj 53 0 obj [/View/Design] endobj 54 0 obj <>>> endobj 36 0 obj [/View/Design] endobj 37 0 obj <>>> endobj 14 0 obj [/View/Design] endobj 15 0 obj <>>> endobj 61 0 obj [60 0 R] endobj 76 0 obj <> endobj xref -0 77 +endstream endobj 5 0 obj <> endobj 25 0 obj <> endobj 43 0 obj <> endobj 60 0 obj <> endobj 77 0 obj <> endobj 87 0 obj [/View/Design] endobj 88 0 obj <>>> endobj 70 0 obj [/View/Design] endobj 71 0 obj <>>> endobj 53 0 obj [/View/Design] endobj 54 0 obj <>>> endobj 36 0 obj [/View/Design] endobj 37 0 obj <>>> endobj 14 0 obj [/View/Design] endobj 15 0 obj <>>> endobj 95 0 obj [94 0 R] endobj 110 0 obj <> endobj xref +0 111 0000000004 65535 f 0000000016 00000 n -0000000187 00000 n -0000013945 00000 n +0000000215 00000 n +0000013990 00000 n 0000000006 00000 f -0000059934 00000 n +0000060194 00000 n 0000000008 00000 f -0000014031 00000 n +0000014076 00000 n 0000000009 00000 f 0000000010 00000 f 0000000016 00000 f -0000059027 00000 n -0000059372 00000 n -0000059420 00000 n -0000060378 00000 n -0000060409 00000 n +0000059287 00000 n +0000059632 00000 n +0000059680 00000 n +0000061012 00000 n +0000061043 00000 n 0000000017 00000 f 0000000018 00000 f 0000000019 00000 f 0000000020 00000 f 0000000026 00000 f -0000014385 00000 n -0000014728 00000 n -0000015070 00000 n -0000015413 00000 n -0000060004 00000 n +0000014430 00000 n +0000014772 00000 n +0000015115 00000 n +0000015459 00000 n +0000060264 00000 n 0000000028 00000 f -0000015756 00000 n +0000015803 00000 n 0000000029 00000 f 0000000030 00000 f 0000000031 00000 f @@ -415,14 +428,48 @@ endstream endobj 5 0 obj <> 0000000034 00000 f 0000000035 00000 f 0000000038 00000 f -0000060262 00000 n -0000060293 00000 n +0000060896 00000 n +0000060927 00000 n 0000000039 00000 f 0000000040 00000 f 0000000041 00000 f 0000000042 00000 f +0000000044 00000 f +0000060335 00000 n +0000000045 00000 f +0000000046 00000 f +0000000047 00000 f +0000000048 00000 f +0000000049 00000 f +0000000050 00000 f +0000000051 00000 f +0000000052 00000 f +0000000055 00000 f +0000060780 00000 n +0000060811 00000 n +0000000056 00000 f +0000000057 00000 f +0000000058 00000 f +0000000059 00000 f +0000000061 00000 f +0000060406 00000 n +0000000062 00000 f +0000000063 00000 f +0000000064 00000 f +0000000065 00000 f +0000000066 00000 f +0000000067 00000 f +0000000068 00000 f +0000000069 00000 f +0000000072 00000 f +0000060664 00000 n +0000060695 00000 n +0000000073 00000 f +0000000074 00000 f +0000000075 00000 f +0000000076 00000 f 0000000000 00000 f -0000060075 00000 n +0000060477 00000 n 0000000000 00000 f 0000000000 00000 f 0000000000 00000 f @@ -432,32 +479,32 @@ endstream endobj 5 0 obj <> 0000000000 00000 f 0000000000 00000 f 0000000000 00000 f -0000060146 00000 n -0000060177 00000 n +0000060548 00000 n +0000060579 00000 n 0000000000 00000 f 0000000000 00000 f 0000000000 00000 f 0000000000 00000 f 0000000000 00000 f -0000016889 00000 n -0000060494 00000 n -0000058443 00000 n -0000017189 00000 n -0000017076 00000 n -0000057609 00000 n -0000056866 00000 n -0000056219 00000 n -0000055666 00000 n -0000016098 00000 n -0000016960 00000 n -0000016991 00000 n -0000017263 00000 n -0000017437 00000 n -0000018777 00000 n -0000024538 00000 n -0000060519 00000 n +0000016938 00000 n +0000061128 00000 n +0000058703 00000 n +0000017242 00000 n +0000017129 00000 n +0000057798 00000 n +0000057054 00000 n +0000056406 00000 n +0000055852 00000 n +0000016146 00000 n +0000017011 00000 n +0000017043 00000 n +0000017317 00000 n +0000017495 00000 n +0000018896 00000 n +0000024684 00000 n +0000061153 00000 n trailer -<<212874D0ED688D4D90967DE6A39EC7F2>]>> +<<7C403BFEBAFB054A8577C2D7661E40D2>]>> startxref -60658 +61293 %%EOF diff --git a/resources/icons/light/tram.svg b/resources/icons/light/tram.svg index 241b6c2..6d048a9 100644 --- a/resources/icons/light/tram.svg +++ b/resources/icons/light/tram.svg @@ -1 +1 @@ -tram \ No newline at end of file +tram \ No newline at end of file diff --git a/resources/ts/model/line.ts b/resources/ts/model/line.ts index b65b667..ad30c6a 100644 --- a/resources/ts/model/line.ts +++ b/resources/ts/model/line.ts @@ -1,8 +1,9 @@ export type LineType = "tram" | "bus" | "trolleybus" | "train" | "other"; export interface Line { - id: any; - symbol: string; - variant?: string; - type: LineType; + id: any; + symbol: string; + type: LineType; + night: boolean; + fast: boolean; } \ No newline at end of file diff --git a/src/Command/UpdateCommand.php b/src/Command/UpdateCommand.php new file mode 100644 index 0000000..839226f --- /dev/null +++ b/src/Command/UpdateCommand.php @@ -0,0 +1,30 @@ +updater = $updater; + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + $this->updater->update(); + } +} \ No newline at end of file diff --git a/src/Entity/Entity.php b/src/Entity/Entity.php new file mode 100644 index 0000000..67f2640 --- /dev/null +++ b/src/Entity/Entity.php @@ -0,0 +1,11 @@ +tracks = new ArrayCollection(); + } + + public function getSymbol(): string + { + return $this->symbol; + } + + public function setSymbol(string $symbol): void + { + $this->symbol = $symbol; + } + + public function getType(): string + { + return $this->type; + } + + public function setType(string $type): void + { + $this->type = $type; + } + + public function isFast(): bool + { + return $this->fast; + } + + public function setFast(bool $fast): void + { + $this->fast = $fast; + } + + public function isNight(): bool + { + return $this->night; + } + + public function setNight(bool $night): void + { + $this->night = $night; + } + + public function getTracks() + { + return $this->tracks; + } + + /** + * @return OperatorEntity + */ + public function getOperator(): ?OperatorEntity + { + return $this->operator; + } + + /** + * @param OperatorEntity $operator + */ + public function setOperator(OperatorEntity $operator): void + { + $this->operator = $operator; + } +} \ No newline at end of file diff --git a/src/Entity/OperatorEntity.php b/src/Entity/OperatorEntity.php new file mode 100644 index 0000000..fced835 --- /dev/null +++ b/src/Entity/OperatorEntity.php @@ -0,0 +1,88 @@ +name; + } + + public function setName(string $name): void + { + $this->name = $name; + } + + public function getEmail(): ?string + { + return $this->email; + } + + public function setEmail(?string $email): void + { + $this->email = $email; + } + + public function getUrl(): ?string + { + return $this->url; + } + + public function setUrl(?string $url): void + { + $this->url = $url; + } + + public function getPhone(): ?string + { + return $this->phone; + } + + public function setPhone(?string $phone): void + { + $this->phone = $phone; + } +} \ No newline at end of file diff --git a/src/Entity/ProviderEntity.php b/src/Entity/ProviderEntity.php new file mode 100644 index 0000000..97a997c --- /dev/null +++ b/src/Entity/ProviderEntity.php @@ -0,0 +1,51 @@ +name; + } + + public function setName($name): void + { + $this->name = $name; + } + + public function getClass() + { + return $this->class; + } + + public function setClass($class): void + { + $this->class = $class; + } +} \ No newline at end of file diff --git a/src/Entity/ProviderReferenceTrait.php b/src/Entity/ProviderReferenceTrait.php new file mode 100644 index 0000000..91a8afe --- /dev/null +++ b/src/Entity/ProviderReferenceTrait.php @@ -0,0 +1,31 @@ +provider; + } + + /** + * @param ProviderEntity|null $provider + */ + public function setProvider(ProviderEntity $provider): void + { + $this->provider = $provider; + } +} \ No newline at end of file diff --git a/src/Entity/ReferableEntityTrait.php b/src/Entity/ReferableEntityTrait.php new file mode 100644 index 0000000..88277c7 --- /dev/null +++ b/src/Entity/ReferableEntityTrait.php @@ -0,0 +1,26 @@ +id; + } + + public function setId($id): void + { + $this->id = $id; + } +} \ No newline at end of file diff --git a/src/Entity/StopEntity.php b/src/Entity/StopEntity.php new file mode 100644 index 0000000..20f8176 --- /dev/null +++ b/src/Entity/StopEntity.php @@ -0,0 +1,133 @@ +name; + } + + public function setName(string $name): void + { + $this->name = $name; + } + + public function getDescription(): ?string + { + return $this->description; + } + + public function setDescription(?string $description): void + { + $this->description = $description; + } + + public function getVariant(): ?string + { + return $this->variant; + } + + public function setVariant(?string $variant): void + { + $this->variant = $variant; + } + + public function getLatitude(): ?float + { + return $this->latitude; + } + + public function setLatitude(?float $latitude): void + { + $this->latitude = $latitude; + } + + public function getLongitude(): ?float + { + return $this->longitude; + } + + public function setLongitude(?float $longitude): void + { + $this->longitude = $longitude; + } + + public function isOnDemand(): bool + { + return $this->onDemand; + } + + public function setOnDemand(bool $onDemand): void + { + $this->onDemand = $onDemand; + } +} \ No newline at end of file diff --git a/src/Entity/StopInTrack.php b/src/Entity/StopInTrack.php new file mode 100644 index 0000000..70a33bc --- /dev/null +++ b/src/Entity/StopInTrack.php @@ -0,0 +1,66 @@ +stop; + } + + public function setStop(StopEntity $stop): void + { + $this->stop = $stop; + } + + public function getTrack(): TrackEntity + { + return $this->track; + } + + public function setTrack(TrackEntity $track): void + { + $this->track = $track; + } + + public function getOrder(): int + { + return $this->order; + } + + public function setOrder(int $order): void + { + $this->order = $order; + } +} \ No newline at end of file diff --git a/src/Entity/TrackEntity.php b/src/Entity/TrackEntity.php new file mode 100644 index 0000000..833c71a --- /dev/null +++ b/src/Entity/TrackEntity.php @@ -0,0 +1,112 @@ +setStopsInTrack([]); + } + + public function getVariant(): ?string + { + return $this->variant; + } + + public function setVariant(?string $variant): void + { + $this->variant = $variant; + } + + public function getDescription(): ?string + { + return $this->description; + } + + public function setDescription(?string $description): void + { + $this->description = $description; + } + + public function getLine(): LineEntity + { + return $this->line; + } + + public function setLine(LineEntity $line): void + { + $this->line = $line; + } + + /** + * @return Collection + */ + public function getStopsInTrack(): Collection + { + return $this->stopsInTrack; + } + + /** + * @param Collection $stopsInTrack + */ + public function setStopsInTrack(array $stopsInTrack): void + { + $this->stopsInTrack = new ArrayCollection($stopsInTrack); + } + + public function getStops() + { + return $this->getStopsInTrack()->map(t\property('stop')); + } +} \ No newline at end of file diff --git a/src/Event/DataUpdateEvent.php b/src/Event/DataUpdateEvent.php new file mode 100644 index 0000000..22dfd9c --- /dev/null +++ b/src/Event/DataUpdateEvent.php @@ -0,0 +1,9 @@ +abortIf($this->connection->getDatabasePlatform()->getName() !== 'sqlite', 'Migration can only be executed safely on \'sqlite\'.'); + + $this->addSql('CREATE TABLE track (id VARCHAR(255) NOT NULL, line_id VARCHAR(255) DEFAULT NULL, provider_id VARCHAR(255) DEFAULT NULL, variant VARCHAR(16) DEFAULT NULL, description VARCHAR(256) DEFAULT NULL, PRIMARY KEY(id))'); + $this->addSql('CREATE INDEX IDX_D6E3F8A64D7B7542 ON track (line_id)'); + $this->addSql('CREATE INDEX IDX_D6E3F8A6A53A8AA ON track (provider_id)'); + $this->addSql('CREATE TABLE track_stop (stop_id VARCHAR(255) NOT NULL, track_id VARCHAR(255) NOT NULL, sequence INTEGER NOT NULL, PRIMARY KEY(stop_id, track_id))'); + $this->addSql('CREATE INDEX IDX_24003EB33902063D ON track_stop (stop_id)'); + $this->addSql('CREATE INDEX IDX_24003EB35ED23C43 ON track_stop (track_id)'); + $this->addSql('CREATE TABLE operator (id VARCHAR(255) NOT NULL, provider_id VARCHAR(255) DEFAULT NULL, name VARCHAR(255) NOT NULL, email VARCHAR(255) DEFAULT NULL, url VARCHAR(255) DEFAULT NULL, phone VARCHAR(255) DEFAULT NULL, PRIMARY KEY(id))'); + $this->addSql('CREATE INDEX IDX_D7A6A781A53A8AA ON operator (provider_id)'); + $this->addSql('CREATE TABLE provider (id VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, class VARCHAR(255) NOT NULL, PRIMARY KEY(id))'); + $this->addSql('CREATE TABLE line (id VARCHAR(255) NOT NULL, operator_id VARCHAR(255) DEFAULT NULL, provider_id VARCHAR(255) DEFAULT NULL, symbol VARCHAR(16) NOT NULL, type VARCHAR(20) NOT NULL, fast BOOLEAN NOT NULL, night BOOLEAN NOT NULL, PRIMARY KEY(id))'); + $this->addSql('CREATE INDEX IDX_D114B4F6584598A3 ON line (operator_id)'); + $this->addSql('CREATE INDEX IDX_D114B4F6A53A8AA ON line (provider_id)'); + $this->addSql('CREATE TABLE stop (id VARCHAR(255) NOT NULL, provider_id VARCHAR(255) DEFAULT NULL, name VARCHAR(255) NOT NULL, description VARCHAR(255) DEFAULT NULL, variant VARCHAR(255) DEFAULT NULL, latitude DOUBLE PRECISION DEFAULT NULL, longitude DOUBLE PRECISION DEFAULT NULL, on_demand BOOLEAN NOT NULL, PRIMARY KEY(id))'); + $this->addSql('CREATE INDEX IDX_B95616B6A53A8AA ON stop (provider_id)'); + } + + public function down(Schema $schema) : void + { + // this down() migration is auto-generated, please modify it to your needs + $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'sqlite', 'Migration can only be executed safely on \'sqlite\'.'); + + $this->addSql('DROP TABLE track'); + $this->addSql('DROP TABLE track_stop'); + $this->addSql('DROP TABLE operator'); + $this->addSql('DROP TABLE provider'); + $this->addSql('DROP TABLE line'); + $this->addSql('DROP TABLE stop'); + } +} diff --git a/src/Model/AbstractModel.php b/src/Model/AbstractModel.php deleted file mode 100644 index 5fcb06f..0000000 --- a/src/Model/AbstractModel.php +++ /dev/null @@ -1,26 +0,0 @@ -id = $id; - } - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - -} \ No newline at end of file diff --git a/src/Model/Departure.php b/src/Model/Departure.php index 48894d1..3d2502f 100644 --- a/src/Model/Departure.php +++ b/src/Model/Departure.php @@ -1,9 +1,7 @@ id; - } + /** + * Is line considered as fast line? + * @var boolean + */ + private $fast = false; + + /** + * Is line considered as night line? + * @var boolean + */ + private $night = false; + + /** + * Line operator + * @var Operator + */ + private $operator; + + /** + * Tracks for this line + * @var Collection|Track[] + */ + private $tracks; - public function setId($id): void - { - $this->id = $id; - } public function getSymbol(): string { @@ -59,16 +65,6 @@ class Line implements Fillable, Referable $this->symbol = $symbol; } - public function getVariant(): ?string - { - return $this->variant; - } - - public function setVariant(?string $variant): void - { - $this->variant = $variant; - } - public function getType(): string { return $this->type; @@ -78,4 +74,58 @@ class Line implements Fillable, Referable { $this->type = $type; } + + public function isFast(): bool + { + return $this->fast; + } + + public function setFast(bool $fast): void + { + $this->fast = $fast; + } + + public function isNight(): bool + { + return $this->night; + } + + public function setNight(bool $night): void + { + $this->night = $night; + } + + public function getTracks(): ?Collection + { + return $this->tracks; + } + + public function setTracks($tracks) + { + $this->tracks = collect($tracks); + } + + /** + * @return Operator + */ + public function getOperator(): ?Operator + { + return $this->operator; + } + + /** + * @param Operator $operator + */ + public function setOperator(Operator $operator): void + { + $this->operator = $operator; + } + + public function normalize(NormalizerInterface $normalizer, $format = null, array $context = []) + { + $normalizer = new ObjectNormalizer(); + $normalizer->setIgnoredAttributes(['tracks']); + + return $normalizer->normalize($this); + } } \ No newline at end of file diff --git a/src/Model/Message.php b/src/Model/Message.php index dd84746..96049c0 100644 --- a/src/Model/Message.php +++ b/src/Model/Message.php @@ -1,9 +1,7 @@ message; } - /** - * @param string $message - */ public function setMessage(string $message): void { $this->message = $message; } - /** - * @return mixed - */ public function getType() { return $this->type; } - /** - * @param mixed $type - */ public function setType($type): void { $this->type = $type; } - /** - * @return Carbon|null - */ public function getValidFrom(): ?Carbon { return $this->validFrom; } - /** - * @param Carbon|null $validFrom - */ public function setValidFrom(?Carbon $validFrom): void { $this->validFrom = $validFrom; } - /** - * @return Carbon|null - */ public function getValidTo(): ?Carbon { return $this->validTo; } - /** - * @param Carbon|null $validTo - */ public function setValidTo(?Carbon $validTo): void { $this->validTo = $validTo; diff --git a/src/Model/Operator.php b/src/Model/Operator.php new file mode 100644 index 0000000..2700172 --- /dev/null +++ b/src/Model/Operator.php @@ -0,0 +1,72 @@ +name; + } + + public function setName(string $name): void + { + $this->name = $name; + } + + public function getEmail(): ?string + { + return $this->email; + } + + public function setEmail(?string $email): void + { + $this->email = $email; + } + + public function getUrl(): ?string + { + return $this->url; + } + + public function setUrl(?string $url): void + { + $this->url = $url; + } + + public function getPhone(): ?string + { + return $this->phone; + } + + public function setPhone(?string $phone): void + { + $this->phone = $phone; + } +} \ No newline at end of file diff --git a/src/Model/Referable.php b/src/Model/Referable.php index 37585e4..81e33d7 100644 --- a/src/Model/Referable.php +++ b/src/Model/Referable.php @@ -1,9 +1,7 @@ id; + } + + public function setId($id): void + { + $this->id = $id; + } + + public static function reference($id) + { + if (!is_array($id)) { + $id = ['id' => $id]; + } + + $result = new static(); + $result->fill($id); + + return $result; + } +} \ No newline at end of file diff --git a/src/Model/ReferenceTrait.php b/src/Model/ReferenceTrait.php deleted file mode 100644 index 7c58a01..0000000 --- a/src/Model/ReferenceTrait.php +++ /dev/null @@ -1,18 +0,0 @@ -setId($id); - - return $reference; - } -} \ No newline at end of file diff --git a/src/Model/Stop.php b/src/Model/Stop.php index f21e18a..4d0ee1f 100644 --- a/src/Model/Stop.php +++ b/src/Model/Stop.php @@ -1,18 +1,14 @@ id; - } - - /** - * @param mixed $id - */ - public function setId($id): void - { - $this->id = $id; - } - - /** - * @return string - */ public function getName(): string { return $this->name; } - /** - * @param string $name - */ public function setName(string $name): void { $this->name = $name; } - /** - * @return null|string - */ public function getDescription(): ?string { return $this->description; } - /** - * @param null|string $description - */ public function setDescription(?string $description): void { $this->description = $description; } - /** - * @return mixed - */ - public function getLocation() - { - return $this->location; - } - - /** - * @param mixed $location - */ - public function setLocation($location): void - { - $this->location = $location; - } - - /** - * @return null|string - */ public function getVariant(): ?string { return $this->variant; } - /** - * @param null|string $variant - */ public function setVariant(?string $variant): void { $this->variant = $variant; } - /** - * @return bool - */ + public function getLatitude(): ?float + { + return $this->latitude; + } + + public function setLatitude(?float $latitude): void + { + $this->latitude = $latitude; + } + + public function getLongitude(): ?float + { + return $this->longitude; + } + + public function setLongitude(?float $longitude): void + { + $this->longitude = $longitude; + } + + public function getLocation(): array + { + return [ $this->latitude, $this->longitude ]; + } + + public function setLocation(array $location) + { + list($this->latitude, $this->longitude) = $location; + } + public function isOnDemand(): bool { return $this->onDemand; } - /** - * @param bool $onDemand - */ public function setOnDemand(bool $onDemand): void { $this->onDemand = $onDemand; } + + public function normalize(NormalizerInterface $normalizer, $format = null, array $context = []) + { + return Arr::except($normalizer->normalize($this), ['latitude', 'longitude']); + } } \ No newline at end of file diff --git a/src/Model/StopGroup.php b/src/Model/StopGroup.php index 5727352..f25d719 100644 --- a/src/Model/StopGroup.php +++ b/src/Model/StopGroup.php @@ -1,9 +1,7 @@ name; } - /** - * @param string $name - */ public function setName(string $name): void { $this->name = $name; diff --git a/src/Model/Track.php b/src/Model/Track.php new file mode 100644 index 0000000..fd1378e --- /dev/null +++ b/src/Model/Track.php @@ -0,0 +1,84 @@ +setStops([]); + } + + public function getVariant(): ?string + { + return $this->variant; + } + + public function setVariant(?string $variant): void + { + $this->variant = $variant; + } + + public function getDescription(): ?string + { + return $this->description; + } + + public function setDescription(?string $description): void + { + $this->description = $description; + } + + public function getLine(): Line + { + return $this->line; + } + + public function setLine(Line $line): void + { + $this->line = $line; + } + + public function getStops(): Collection + { + return $this->stops; + } + + public function setStops($stops = []) + { + return $this->stops = collect($stops); + } +} \ No newline at end of file diff --git a/src/Provider/Database/DatabaseRepository.php b/src/Provider/Database/DatabaseRepository.php new file mode 100644 index 0000000..18b622b --- /dev/null +++ b/src/Provider/Database/DatabaseRepository.php @@ -0,0 +1,39 @@ +em = $em; + $this->id = $id; + } + + /** @return static */ + public function withProvider(ProviderEntity $provider) + { + $result = clone $this; + $result->provider = $provider; + + return $result; + } +} \ No newline at end of file diff --git a/src/Provider/Database/GenericLineRepository.php b/src/Provider/Database/GenericLineRepository.php new file mode 100644 index 0000000..94235f6 --- /dev/null +++ b/src/Provider/Database/GenericLineRepository.php @@ -0,0 +1,47 @@ +em->getRepository(LineEntity::class); + $lines = $repository->findAll(); + + return collect($lines)->map(f\ref([$this, 'convert'])); + } + + public function getById($id): ?Line + { + $repository = $this->em->getRepository(LineEntity::class); + return $this->convert($repository->find($id)); + } + + public function getManyById($ids): Collection + { + $ids = collect($ids)->map(f\apply(f\ref([$this->id, 'generate']), $this->provider)); + + $repository = $this->em->getRepository(LineEntity::class); + $lines = $repository->findBy(['id' => $ids->all()]); + + return collect($lines)->map(f\ref([$this, 'convert'])); + } + + private function convert(LineEntity $line): Line + { + return Line::createFromArray([ + 'id' => $this->id->of($line), + 'symbol' => $line->getSymbol(), + 'night' => $line->isNight(), + 'fast' => $line->isFast(), + 'type' => $line->getType() + ]); + } +} \ No newline at end of file diff --git a/src/Provider/Database/GenericOperatorRepository.php b/src/Provider/Database/GenericOperatorRepository.php new file mode 100644 index 0000000..26cd500 --- /dev/null +++ b/src/Provider/Database/GenericOperatorRepository.php @@ -0,0 +1,33 @@ +em->getRepository(Operator::class); + $operators = $repository->findAll(); + + return collect($operators); + } + + public function getById($id): ?Operator + { + $repository = $this->em->getRepository(Operator::class); + + return $repository->find($id); + } + + public function getManyById($ids): Collection + { + $repository = $this->em->getRepository(Operator::class); + $operators = $repository->findBy(['id' => $ids]); + + return collect($operators); + } +} \ No newline at end of file diff --git a/src/Provider/Database/GenericStopRepository.php b/src/Provider/Database/GenericStopRepository.php new file mode 100644 index 0000000..2ed9efb --- /dev/null +++ b/src/Provider/Database/GenericStopRepository.php @@ -0,0 +1,81 @@ +em->getRepository(StopEntity::class)->findAll(); + + return collect($stops)->map(\Closure::fromCallable([$this, 'convert'])); + } + + public function getAllGroups(): Collection + { + return $this->group($this->getAll()); + } + + public function getById($id): ?Stop + { + $id = $this->id->generate($this->provider, $id); + $stop = $this->em->getRepository(StopEntity::class)->find($id); + + return $this->convert($stop); + } + + public function getManyById($ids): Collection + { + $ids = collect($ids)->map(f\apply(f\ref([$this->id, 'generate']), $this->provider)); + + $stops = $this->em->getRepository(StopEntity::class)->findBy(['id' => $ids->all()]); + return collect($stops)->map(\Closure::fromCallable([$this, 'convert'])); + } + + public function findGroupsByName(string $name): Collection + { + $query = $this->em->createQueryBuilder() + ->select('s') + ->from(StopEntity::class, 's') + ->where('s.name LIKE :name') + ->getQuery(); + + $stops = collect($query->execute([':name' => "%$name%"]))->map(\Closure::fromCallable([$this, 'convert'])); + + return $this->group($stops); + } + + private function convert(StopEntity $entity): Stop + { + return Stop::createFromArray([ + 'id' => $this->id->of($entity), + 'name' => $entity->getName(), + 'description' => $entity->getDescription(), + 'variant' => $entity->getVariant(), + 'onDemand' => $entity->isOnDemand(), + 'location' => [ + $entity->getLatitude(), + $entity->getLongitude(), + ], + ]); + } + + private function group(Collection $stops) + { + return $stops->groupBy(function (Stop $stop) { + return $stop->getName(); + })->map(function ($group, $key) { + $group = new StopGroup($group); + $group->setName($key); + + return $group; + }); + } +} \ No newline at end of file diff --git a/src/Provider/OperatorRepository.php b/src/Provider/OperatorRepository.php new file mode 100644 index 0000000..79f8b20 --- /dev/null +++ b/src/Provider/OperatorRepository.php @@ -0,0 +1,15 @@ +em = $em; + $this->ids = $ids; + $this->logger = $logger; + } + + public function update() + { + $provider = ProviderEntity::createFromArray([ + 'name' => 'ZTM GdaƄsk', + 'class' => ZtmGdanskProvider::class, + 'id' => 'ztm-gdansk', + ]); + + $this->em->persist($provider); + + $save = [$this->em, 'persist']; + + $this->getOperators($provider)->each($save); + $this->getLines($provider)->each($save); + $this->getStops($provider)->each($save); + $this->getTracks($provider)->each($save); + + $this->em->flush(); + } + + private function getOperators(ProviderEntity $provider) + { + $this->logger->info('Obtaining operators from ZTM GdaƄsk'); + + $operators = file_get_contents(self::OPERATORS_URL); + $operators = json_decode($operators, true)['agency']; + + $this->logger->info(sprintf('Saving %s operators from ZTM GdaƄsk', count($operators))); + + return collect($operators)->map(function ($operator) use ($provider) { + return OperatorEntity::createFromArray([ + 'id' => $this->ids->generate($provider, $operator['agencyId']), + 'name' => $operator['agencyName'], + 'provider' => $provider, + ]); + }); + } + + private function getLines(ProviderEntity $provider) + { + $this->logger->info('Obtaining lines from ZTM GdaƄsk'); + + $lines = file_get_contents(self::LINES_URL); + $lines = json_decode($lines, true)[date('Y-m-d')]['routes']; + + $this->logger->info(sprintf('Saving %s lines from ZTM GdaƄsk', count($lines))); + + return collect($lines)->map(function ($line) use ($provider) { + $symbol = $line['routeShortName']; + $operator = $this->em->getReference( + OperatorEntity::class, + $this->ids->generate($provider, $line['agencyId']) + ); + $type = [ + 2 => LineModel::TYPE_TRAM, + 5 => LineModel::TYPE_TROLLEYBUS, + ]; + + return LineEntity::createFromArray([ + 'id' => $this->ids->generate($provider, $line['routeId']), + 'symbol' => $symbol, + 'description' => $line['routeLongName'], + 'type' => $type[$line['agencyId']] ?? LineModel::TYPE_BUS, + 'night' => preg_match('/^N\d{1,3}$/', $symbol), + 'fast' => preg_match('/^[A-MO-Z]$/', $symbol), + 'operator' => $operator, + 'provider' => $provider, + ]); + }); + } + + private function getStops(ProviderEntity $provider) + { + $this->logger->info('Obtaining stops from ZTM GdaƄsk'); + + $stops = file_get_contents(self::STOPS_URL); + $stops = json_decode($stops, true)[date('Y-m-d')]['stops']; + + $this->logger->info(sprintf('Saving %d stops from ZTM GdaƄsk', count($stops))); + + return collect($stops)->map(function ($stop) use ($provider) { + return StopEntity::createFromArray([ + 'id' => $this->ids->generate($provider, $stop['stopId']), + 'name' => trim($stop['stopName'] ?? $stop['stopDesc']), + 'variant' => trim($stop['zoneName'] == 'GdaƄsk' ? $stop['subName'] : null), + 'latitude' => $stop['stopLat'], + 'longitude' => $stop['stopLon'], + 'onDemand' => (bool)$stop['onDemand'], + 'provider' => $provider, + ]); + }); + } + + public function getTracks(ProviderEntity $provider) + { + $this->logger->info('Obtaining tracks from ZTM GdaƄsk'); + + $tracks = file_get_contents(self::TRACKS_URL); + $tracks = json_decode($tracks, true)[date('Y-m-d')]['trips']; + + $this->logger->info('Obtaining stops associations from ZTM GdaƄsk'); + + $stops = file_get_contents(self::STOPS_IN_TRACKS_URL); + $stops = json_decode($stops, true)[date('Y-m-d')]['stopsInTrip']; + + $stops = collect($stops)->groupBy(function ($stop) { + return sprintf("R%sT%s", $stop['routeId'], $stop['tripId']); + }); + + $this->logger->info(sprintf('Saving %d tracks from ZTM GdaƄsk', count($stops))); + + return collect($tracks)->map(function ($track) use ($provider, $stops) { + $track = TrackEntity::createFromArray([ + 'id' => $track['id'], + 'line' => $this->em->getReference( + LineEntity::class, + $this->ids->generate($provider, $track['routeId']) + ), + 'description' => preg_replace('/\(\d+\)/', '', $track['tripHeadsign']), + 'provider' => $provider, + ]); + + $stops = $stops->get($track->getId())->map(function ($stop) use ($track, $provider) { + return StopInTrack::createFromArray([ + 'stop' => $this->em->getReference( + StopEntity::class, + $this->ids->generate($provider, $stop['stopId']) + ), + 'track' => $track, + 'order' => $stop['stopSequence'], + ]); + }); + + $track->setStopsInTrack($stops->all()); + + return $track; + }); + } + + public static function getSubscribedEvents() + { + return [ + DataUpdater::UPDATE_EVENT => 'update', + ]; + } +} \ No newline at end of file diff --git a/src/Provider/ZtmGdansk/ZtmGdanskDepartureRepository.php b/src/Provider/ZtmGdansk/ZtmGdanskDepartureRepository.php index 4ff178a..2f04a40 100644 --- a/src/Provider/ZtmGdansk/ZtmGdanskDepartureRepository.php +++ b/src/Provider/ZtmGdansk/ZtmGdanskDepartureRepository.php @@ -1,56 +1,50 @@ lines = $lines; } public function getForStop(Stop $stop): Collection { - try { - $estimates = json_decode(file_get_contents(static::ESTIMATES_URL . "?stopId=" . $stop->getId()), true)['delay']; + $estimates = json_decode(file_get_contents(static::ESTIMATES_URL . "?stopId=" . $stop->getId()), true)['delay']; + $estimates = collect($estimates); - return collect($estimates)->map(function ($delay) use ($stop) { - $scheduled = new Carbon($delay['theoreticalTime']); - $estimated = (clone $scheduled)->addSeconds($delay['delayInSeconds']); + $lines = $estimates->map(function ($delay) { return $delay['routeId']; })->unique(); + $lines = $this->lines->getManyById($lines)->keyBy(t\property('id')); - return Departure::createFromArray([ - 'scheduled' => $scheduled, - 'estimated' => $estimated, - 'stop' => $stop, - 'display' => trim($delay['headsign']), - 'vehicle' => $delay['vehicleCode'], - 'line' => Line::createFromArray([ - 'id' => $delay['id'], - 'symbol' => $delay['routeId'], - 'type' => $delay['routeId'] > 1 && $delay['routeId'] <= 12 ? Line::TYPE_TRAM : Line::TYPE_BUS - ]) - ]); - })->values(); - } catch (\Throwable $error) { - return collect(); - } + return collect($estimates)->map(function ($delay) use ($stop, $lines) { + $scheduled = new Carbon($delay['theoreticalTime']); + $estimated = (clone $scheduled)->addSeconds($delay['delayInSeconds']); + + return Departure::createFromArray([ + 'scheduled' => $scheduled, + 'estimated' => $estimated, + 'stop' => $stop, + 'display' => trim($delay['headsign']), + 'vehicle' => $delay['vehicleCode'], + 'line' => $lines->get($delay['routeId']), + ]); + })->values(); } } \ No newline at end of file diff --git a/src/Provider/ZtmGdansk/ZtmGdanskLineRepository.php b/src/Provider/ZtmGdansk/ZtmGdanskLineRepository.php deleted file mode 100644 index 3d6e0bb..0000000 --- a/src/Provider/ZtmGdansk/ZtmGdanskLineRepository.php +++ /dev/null @@ -1,27 +0,0 @@ -cache = $cache; - } - - public function getAllGroups(): Collection - { - $stops = $this->getAllStops(); - return $this->group($stops); - } - - public function findGroupsByName(string $name): Collection - { - if (empty($name)) { - return collect(); - } - - $stops = $this->getAllStops(); - $stops = $stops->filter(function (Stop $stop) use ($name) { - return stripos($stop->getName(), $name) !== false; - }); - - return $this->group($stops); - } - - public function getAllStops(): Collection - { - static $stops = null; - if ($stops === null) { - $stops = collect($this->queryZtmApi())->map(function ($stop) { - return Stop::createFromArray([ - 'id' => $stop['stopId'], - 'name' => trim($stop['stopName'] ?? $stop['stopDesc']), - 'variant' => trim($stop['zoneName'] == 'GdaƄsk' ? $stop['subName'] : null), - 'location' => [$stop['stopLat'], $stop['stopLon']], - 'onDemand' => (bool)$stop['onDemand'], - ]); - })->keyBy(function (Stop $stop) { - return $stop->getId(); - })->sort(function (Stop $a, Stop $b) { - return (int)$a->getVariant() <=> (int)$b->getVariant(); - }); - } - - return $stops; - } - - public function getById($id): ?Stop - { - return $this->getAllStops()->get($id); - } - - public function getManyById($ids): Collection - { - $stops = $this->getAllStops(); - - return collect($ids)->mapWithKeys(function ($id) use ($stops) { - return [$id => $stops[$id]]; - }); - } - - private function queryZtmApi() - { - $item = $this->cache->getItem('ztm-gdansk.stops'); - - if (!$item->isHit()) { - $stops = json_decode(file_get_contents(static::STOPS_URL), true); - - $item->expiresAfter(24 * 60 * 60); - $item->set($stops[date('Y-m-d')]['stops']); - - $this->cache->save($item); - } - - return $item->get(); - } - - private function group(Collection $stops) - { - return $stops->groupBy(function (Stop $stop) { - return $stop->getName(); - })->map(function ($group, $key) { - $group = new StopGroup($group); - $group->setName($key); - - return $group; - }); - } -} \ No newline at end of file diff --git a/src/Provider/ZtmGdanskProvider.php b/src/Provider/ZtmGdanskProvider.php index befb94b..c4ae7db 100644 --- a/src/Provider/ZtmGdanskProvider.php +++ b/src/Provider/ZtmGdanskProvider.php @@ -3,10 +3,11 @@ namespace App\Provider; -use App\Provider\ZtmGdansk\{ZtmGdanskDepartureRepository, - ZtmGdanskLineRepository, - ZtmGdanskMessageRepository, - ZtmGdanskStopRepository}; +use App\Entity\ProviderEntity; +use App\Provider\Database\GenericLineRepository; +use App\Provider\Database\GenericStopRepository; +use App\Provider\ZtmGdansk\{ZtmGdanskDepartureRepository, ZtmGdanskMessageRepository}; +use Doctrine\ORM\EntityManagerInterface; class ZtmGdanskProvider implements Provider { @@ -16,13 +17,18 @@ class ZtmGdanskProvider implements Provider private $messages; public function __construct( - ZtmGdanskLineRepository $lines, - ZtmGdanskDepartureRepository $departures, - ZtmGdanskStopRepository $stops, + EntityManagerInterface $em, + GenericLineRepository $lines, + GenericStopRepository $stops, ZtmGdanskMessageRepository $messages ) { + $provider = $em->getReference(ProviderEntity::class, 'ztm-gdansk'); + + $lines = $lines->withProvider($provider); + $stops = $stops->withProvider($provider); + $this->lines = $lines; - $this->departures = $departures; + $this->departures = new ZtmGdanskDepartureRepository($lines); $this->stops = $stops; $this->messages = $messages; } diff --git a/src/Service/DataUpdater.php b/src/Service/DataUpdater.php new file mode 100644 index 0000000..0bf9819 --- /dev/null +++ b/src/Service/DataUpdater.php @@ -0,0 +1,37 @@ +dispatcher = $dispatcher; + $this->em = $em; + } + + public function update() + { + $schema = $this->em->getConnection()->getSchemaManager(); + collect($schema->listTables())->each([$schema, 'dropAndCreateTable']); + + $this->dispatcher->dispatch(self::UPDATE_EVENT, new DataUpdateEvent()); + } +} \ No newline at end of file diff --git a/src/Service/IdUtils.php b/src/Service/IdUtils.php new file mode 100644 index 0000000..d1fe477 --- /dev/null +++ b/src/Service/IdUtils.php @@ -0,0 +1,24 @@ +getId(), $id); + } + + public function strip(ProviderEntity $provider, $id) + { + return substr($id, strlen($provider->getId()) + 1); + } + + public function of(Entity $entity) + { + return $this->strip($entity->getProvider(), $entity->getId()); + } +} \ No newline at end of file diff --git a/symfony.lock b/symfony.lock index c2fe44e..fb31d37 100644 --- a/symfony.lock +++ b/symfony.lock @@ -17,27 +17,69 @@ "doctrine/common": { "version": "v2.9.0" }, + "doctrine/dbal": { + "version": "v2.8.0" + }, + "doctrine/doctrine-bundle": { + "version": "1.6", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "1.6", + "ref": "ae205d5114e719deb64d2110f56ef910787d1e04" + } + }, + "doctrine/doctrine-cache-bundle": { + "version": "1.3.3" + }, + "doctrine/doctrine-migrations-bundle": { + "version": "1.2", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "1.2", + "ref": "c1431086fec31f17fbcfe6d6d7e92059458facc1" + } + }, "doctrine/event-manager": { "version": "v1.0.0" }, "doctrine/inflector": { "version": "v1.3.0" }, + "doctrine/instantiator": { + "version": "1.1.0" + }, "doctrine/lexer": { "version": "v1.0.1" }, + "doctrine/migrations": { + "version": "v1.8.1" + }, + "doctrine/orm": { + "version": "v2.6.2" + }, "doctrine/persistence": { "version": "v1.0.0" }, "doctrine/reflection": { "version": "v1.0.0" }, + "jdorn/sql-formatter": { + "version": "v1.2.17" + }, "kadet/functional": { "version": "dev-master" }, "nesbot/carbon": { "version": "1.33.0" }, + "ocramius/package-versions": { + "version": "1.3.0" + }, + "ocramius/proxy-manager": { + "version": "2.2.1" + }, "phpdocumentor/reflection-common": { "version": "1.0.1" }, @@ -89,6 +131,9 @@ "symfony/dependency-injection": { "version": "v4.1.3" }, + "symfony/doctrine-bridge": { + "version": "v4.1.4" + }, "symfony/dotenv": { "version": "v4.1.3" }, @@ -128,6 +173,9 @@ "symfony/inflector": { "version": "v4.1.3" }, + "symfony/orm-pack": { + "version": "v1.0.5" + }, "symfony/polyfill-mbstring": { "version": "v1.9.0" }, @@ -202,5 +250,11 @@ }, "webmozart/assert": { "version": "1.3.0" + }, + "zendframework/zend-code": { + "version": "3.3.1" + }, + "zendframework/zend-eventmanager": { + "version": "3.2.1" } }