From 38b076416f3faf2256e95cb6787afd7a20859d94 Mon Sep 17 00:00:00 2001 From: Jacques Doeleman Date: Mon, 19 Sep 2022 12:11:58 +0200 Subject: [PATCH 1/9] first test version Functionality has been added and is working. No test or documentation has been written yet. --- example/lib/main.dart | 18 +++-- example/pubspec.lock | 31 ++++----- lib/profile.dart | 3 + lib/src/models/user.dart | 8 +-- lib/src/services/profile_service.dart | 11 +--- lib/src/widgets/avatar/avatar.dart | 39 ++++++----- .../widgets/item_builder/item_builder.dart | 41 +++++++++--- .../item_builder/item_builder_options.dart | 6 +- lib/src/widgets/profile/profile_page.dart | 66 +++++++++++-------- 9 files changed, 129 insertions(+), 94 deletions(-) diff --git a/example/lib/main.dart b/example/lib/main.dart index 7df78ab..56b4fe5 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -58,8 +58,8 @@ class MyProfileService extends ProfileService { } @override - uploadImage() { - return super.uploadImage(); + uploadImage(context) { + return super.uploadImage(context); } } @@ -73,40 +73,38 @@ class MyProfileData extends ProfileData { int justMyString; @override - Map mapWidget(Function update) { + Map mapWidget(Function update, BuildContext context) { return { - 'justMyString': Container( + 'justMyString': SizedBox( height: 100, width: 300, child: Row( children: [ ElevatedButton( style: ElevatedButton.styleFrom( - primary: justMyString == 1 ? Colors.green : Colors.blue, + backgroundColor: justMyString == 1 ? Colors.green : Colors.blue, ), onPressed: () { justMyString = 1; update(); - print(justMyString); }, child: const Text('1'), ), const Spacer(), ElevatedButton( style: ElevatedButton.styleFrom( - primary: justMyString == 2 ? Colors.green : Colors.blue, + backgroundColor: justMyString == 2 ? Colors.green : Colors.blue, ), onPressed: () { justMyString = 2; update(); - print(justMyString); }, child: const Text('2'), ), const Spacer(), ElevatedButton( style: ElevatedButton.styleFrom( - primary: justMyString == 3 ? Colors.green : Colors.blue, + backgroundColor: justMyString == 3 ? Colors.green : Colors.blue, ), onPressed: () { justMyString = 3; @@ -117,7 +115,7 @@ class MyProfileData extends ProfileData { const Spacer(), ElevatedButton( style: ElevatedButton.styleFrom( - primary: justMyString == 4 ? Colors.green : Colors.blue, + backgroundColor: justMyString == 4 ? Colors.green : Colors.blue, ), onPressed: () { justMyString = 4; diff --git a/example/pubspec.lock b/example/pubspec.lock index a9c8f14..9668a4f 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -7,7 +7,7 @@ packages: name: async url: "https://pub.dartlang.org" source: hosted - version: "2.8.2" + version: "2.9.0" boolean_selector: dependency: transitive description: @@ -21,21 +21,14 @@ packages: name: characters url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" - charcode: - dependency: transitive - description: - name: charcode - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.1" + version: "1.2.1" clock: dependency: transitive description: name: clock url: "https://pub.dartlang.org" source: hosted - version: "1.1.0" + version: "1.1.1" collection: dependency: transitive description: @@ -56,7 +49,7 @@ packages: name: fake_async url: "https://pub.dartlang.org" source: hosted - version: "1.3.0" + version: "1.3.1" flutter: dependency: "direct main" description: flutter @@ -87,28 +80,28 @@ packages: name: matcher url: "https://pub.dartlang.org" source: hosted - version: "0.12.11" + version: "0.12.12" material_color_utilities: dependency: transitive description: name: material_color_utilities url: "https://pub.dartlang.org" source: hosted - version: "0.1.4" + version: "0.1.5" meta: dependency: transitive description: name: meta url: "https://pub.dartlang.org" source: hosted - version: "1.7.0" + version: "1.8.0" path: dependency: transitive description: name: path url: "https://pub.dartlang.org" source: hosted - version: "1.8.1" + version: "1.8.2" profile: dependency: "direct main" description: @@ -127,7 +120,7 @@ packages: name: source_span url: "https://pub.dartlang.org" source: hosted - version: "1.8.2" + version: "1.9.0" stack_trace: dependency: transitive description: @@ -148,21 +141,21 @@ packages: name: string_scanner url: "https://pub.dartlang.org" source: hosted - version: "1.1.0" + version: "1.1.1" term_glyph: dependency: transitive description: name: term_glyph url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" + version: "1.2.1" test_api: dependency: transitive description: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.4.9" + version: "0.4.12" vector_math: dependency: transitive description: diff --git a/lib/profile.dart b/lib/profile.dart index a5911f2..1a644a7 100644 --- a/lib/profile.dart +++ b/lib/profile.dart @@ -1,6 +1,9 @@ library profile; export 'src/widgets/profile/profile_page.dart'; +export 'src/widgets/profile/profile_style.dart'; +export 'src/widgets/avatar/avatar_style.dart'; export 'src/services/profile_service.dart'; export 'src/widgets/item_builder/item_builder.dart'; export 'src/models/user.dart'; +export 'src/widgets/item_builder/item_builder_options.dart'; diff --git a/lib/src/models/user.dart b/lib/src/models/user.dart index 76dbc09..83e62ff 100644 --- a/lib/src/models/user.dart +++ b/lib/src/models/user.dart @@ -2,8 +2,6 @@ import 'dart:typed_data'; import 'package:flutter/material.dart'; import 'package:profile/profile.dart'; -import 'package:profile/src/widgets/item_builder/item_builder.dart'; -import 'package:profile/src/widgets/item_builder/item_builder_options.dart'; class User { String? firstName; @@ -44,7 +42,7 @@ abstract class ProfileData { Map toMap(); - Map mapWidget(Function update); + Map mapWidget(VoidCallback update, BuildContext context); ProfileData create(); @@ -58,12 +56,13 @@ abstract class ProfileData { }) { var widgets = []; ItemBuilder builder = ItemBuilder( - options: itemBuilderOptions ?? const ItemBuilderOptions(), + options: itemBuilderOptions ?? ItemBuilderOptions(), ); for (var item in items.entries) { itemBuilder == null ? widgets.add( builder.build( + item.key, item.value, typeMap[item.key], (value) { @@ -73,6 +72,7 @@ abstract class ProfileData { ) : widgets.add( itemBuilder.build( + item.key, item.value, typeMap[item.key], (value) { diff --git a/lib/src/services/profile_service.dart b/lib/src/services/profile_service.dart index a94a3e5..c1a35ce 100644 --- a/lib/src/services/profile_service.dart +++ b/lib/src/services/profile_service.dart @@ -1,12 +1,10 @@ +import 'package:flutter/material.dart'; import 'package:profile/profile.dart'; abstract class ProfileService { const ProfileService(); - deleteProfile() { - print("Request to delete profile"); - // TODO(anyone) project specific - } + deleteProfile() {} editProfile(User user, String key, String value) { if (user.profileData != null) { @@ -19,8 +17,5 @@ abstract class ProfileService { } } - uploadImage() { - print('Request to change picture'); - // TODO(anyone) open image picker and update profile - } + uploadImage(BuildContext context) async {} } diff --git a/lib/src/widgets/avatar/avatar.dart b/lib/src/widgets/avatar/avatar.dart index 0fb6896..8d885c6 100644 --- a/lib/src/widgets/avatar/avatar.dart +++ b/lib/src/widgets/avatar/avatar.dart @@ -7,13 +7,15 @@ class Avatar extends StatelessWidget { const Avatar({ Key? key, this.image, - this.name, + this.firstName, + this.lastName, this.avatar, this.style = const AvatarStyle(), }) : super(key: key); final Uint8List? image; - final String? name; + final String? firstName; + final String? lastName; final Widget? avatar; final AvatarStyle style; @@ -22,9 +24,12 @@ class Avatar extends StatelessWidget { return Column( children: [ _avatar(), - if (name != null) + const SizedBox( + height: 16, + ), + if (firstName != null || lastName != null) Text( - name!, + '${firstName ?? ''} ${lastName ?? ''}', style: style.displayNameStyle, ) ], @@ -39,22 +44,26 @@ class Avatar extends StatelessWidget { return Container( width: style.width, height: style.height, - decoration: const BoxDecoration( + decoration: BoxDecoration( shape: BoxShape.circle, + image: DecorationImage( + image: MemoryImage(image!), + fit: BoxFit.fill, + ), ), - child: Image.memory(image!), ); - } else if (name != null && name!.isNotEmpty) { + } else if (firstName != null || lastName != null) { return Container( width: style.width, height: style.height, decoration: BoxDecoration( - color: _generateColorWithIntials(name!), + color: _generateColorWithIntials(firstName, lastName), shape: BoxShape.circle, ), child: Center( child: Text( - _getInitials(name!), + style: const TextStyle(fontSize: 40), + _getInitials(firstName, lastName), ), ), ); @@ -67,15 +76,13 @@ class Avatar extends StatelessWidget { } } - String _getInitials(String name) { - var nameList = name.split(' '); - return nameList.first[0] + nameList.last[0]; + String _getInitials(String? firstName, String? lastName) { + return (firstName?[0] ?? '') + (lastName?[0] ?? ''); } - Color _generateColorWithIntials(String name) { - var nameList = name.split(' '); - var uniqueInitialId = nameList.first.toLowerCase().codeUnitAt(0) + - nameList.last.toLowerCase().codeUnitAt(0); + Color _generateColorWithIntials(String? firstName, String? lastName) { + var uniqueInitialId = (firstName?.toLowerCase().codeUnitAt(0) ?? 0) + + (lastName?.toLowerCase().codeUnitAt(0) ?? 0); return Colors.primaries[uniqueInitialId % Colors.primaries.length]; } diff --git a/lib/src/widgets/item_builder/item_builder.dart b/lib/src/widgets/item_builder/item_builder.dart index 10fab7c..f28bdf9 100644 --- a/lib/src/widgets/item_builder/item_builder.dart +++ b/lib/src/widgets/item_builder/item_builder.dart @@ -8,19 +8,42 @@ class ItemBuilder { final ItemBuilderOptions options; - Widget build(dynamic value, Widget? widget, Function(String) updateItem) { + Widget build( + String key, dynamic value, Widget? widget, Function(String) updateItem) { if (widget == null) { var controller = TextEditingController( - text: '$value', + text: '${value ?? ''}', ); - return TextField( - controller: controller, - decoration: options.inputDecoration, - readOnly: options.readOnly, - onSubmitted: (s) { - updateItem(s); - }, + late InputDecoration inputDecoration; + if (options.inputDecorationField != null && + options.inputDecorationField![key] != null) { + inputDecoration = options.inputDecorationField![key]!; + } else { + inputDecoration = options.inputDecoration; + } + + final formKey = GlobalKey(); + + return Form( + key: formKey, + child: TextFormField( + controller: controller, + decoration: inputDecoration, + readOnly: options.readOnly, + onFieldSubmitted: (value) { + if (formKey.currentState!.validate()) { + updateItem(value); + } + }, + validator: (value) { + if (options.validators != null && + options.validators![key] != null) { + return options.validators![key]!(value); + } + return null; + }, + ), ); } return widget; diff --git a/lib/src/widgets/item_builder/item_builder_options.dart b/lib/src/widgets/item_builder/item_builder_options.dart index 616c25d..2ab6356 100644 --- a/lib/src/widgets/item_builder/item_builder_options.dart +++ b/lib/src/widgets/item_builder/item_builder_options.dart @@ -1,11 +1,15 @@ import 'package:flutter/material.dart'; class ItemBuilderOptions { - const ItemBuilderOptions({ + ItemBuilderOptions({ this.inputDecoration = const InputDecoration(), + this.inputDecorationField, this.readOnly = false, + this.validators, }); final InputDecoration inputDecoration; + final Map? inputDecorationField; final bool readOnly; + final Map? validators; } diff --git a/lib/src/widgets/profile/profile_page.dart b/lib/src/widgets/profile/profile_page.dart index 6c20331..a87d1f1 100644 --- a/lib/src/widgets/profile/profile_page.dart +++ b/lib/src/widgets/profile/profile_page.dart @@ -1,9 +1,6 @@ import 'package:flutter/material.dart'; import 'package:profile/profile.dart'; import 'package:profile/src/widgets/avatar/avatar.dart'; -import 'package:profile/src/widgets/item_builder/item_builder_options.dart'; - -import 'package:profile/src/widgets/profile/profile_style.dart'; class ProfilePage extends StatefulWidget { const ProfilePage({ @@ -81,52 +78,50 @@ class ProfileWrapper extends StatefulWidget { } class _ProfileWrapperState extends State { - late List profileItems; List defaultItems = []; @override void initState() { super.initState(); - profileItems = widget.user.profileData!.buildItems( - widget.user.profileData!.toMap(), - widget.user.profileData!.mapWidget(() { - widget.rebuild(); - }), - widget.style.betweenDefaultItemPadding, - (key, value) { - widget.service.editProfile(widget.user, key, value); - }, - itemBuilder: widget.itemBuilder, - itemBuilderOptions: widget.itemBuilderOptions, - ); + if (widget.itemBuilder == null) { ItemBuilder builder = ItemBuilder( - options: widget.itemBuilderOptions ?? const ItemBuilderOptions(), + options: widget.itemBuilderOptions ?? ItemBuilderOptions(), ); - defaultItems.add(builder.build(widget.user.firstName, null, (v) { + defaultItems + .add(builder.build('firstName', widget.user.firstName, null, (v) { widget.user.firstName = v; + + widget.service.editProfile(widget.user, 'firstName', v); })); defaultItems.add( SizedBox( height: widget.style.betweenDefaultItemPadding, ), ); - defaultItems.add(builder.build(widget.user.lastName, null, (v) { + defaultItems + .add(builder.build('lastName', widget.user.lastName, null, (v) { widget.user.lastName = v; + + widget.service.editProfile(widget.user, 'lastName', v); })); } else { - defaultItems - .add(widget.itemBuilder!.build(widget.user.firstName, null, (v) { + defaultItems.add(widget.itemBuilder! + .build('firstName', widget.user.firstName, null, (v) { widget.user.firstName = v; + + widget.service.editProfile(widget.user, 'firstname', v); })); defaultItems.add( SizedBox( height: widget.style.betweenDefaultItemPadding, ), ); - defaultItems - .add(widget.itemBuilder!.build(widget.user.lastName, null, (v) { + defaultItems.add(widget.itemBuilder! + .build('lastName', widget.user.lastName, null, (v) { widget.user.lastName = v; + + widget.service.editProfile(widget.user, 'lastName', v); })); } } @@ -134,17 +129,19 @@ class _ProfileWrapperState extends State { @override Widget build(BuildContext context) { return Material( + color: Colors.transparent, child: Padding( padding: widget.style.pagePadding, child: Column( children: [ if (widget.showAvatar) InkWell( - onTap: () { - widget.service.uploadImage(); + onTap: () async { + await widget.service.uploadImage(context); }, child: Avatar( - name: '${widget.user.firstName} ${widget.user.lastName}', + firstName: widget.user.firstName, + lastName: widget.user.lastName, style: widget.style.avatarStyle, avatar: widget.customAvatar, image: widget.user.image, @@ -155,11 +152,26 @@ class _ProfileWrapperState extends State { height: widget.style.betweenDefaultItemPadding, ), ...defaultItems, - ...profileItems, + ...widget.user.profileData!.buildItems( + widget.user.profileData!.toMap(), + widget.user.profileData!.mapWidget( + () { + widget.rebuild(); + }, + context, + ), + widget.style.betweenDefaultItemPadding, + (key, value) { + widget.service.editProfile(widget.user, key, value); + }, + itemBuilder: widget.itemBuilder, + itemBuilderOptions: widget.itemBuilderOptions, + ), if (widget.showDeleteProfile) SizedBox( height: widget.style.betweenDefaultItemPadding, ), + const Spacer(), if (widget.showDeleteProfile) InkWell( onTap: () { From 7600f1ad98f56ef2833ca6387cdfc688155776a4 Mon Sep 17 00:00:00 2001 From: Jacques Doeleman Date: Tue, 20 Sep 2022 14:11:38 +0200 Subject: [PATCH 2/9] Added documentation --- lib/src/models/user.dart | 8 + lib/src/services/profile_service.dart | 7 + lib/src/widgets/avatar/avatar_style.dart | 9 + .../widgets/item_builder/item_builder.dart | 3 + .../item_builder/item_builder_options.dart | 7 + lib/src/widgets/profile/profile_page.dart | 170 ++++-------------- lib/src/widgets/profile/profile_style.dart | 12 ++ lib/src/widgets/profile/proifle_wrapper.dart | 144 +++++++++++++++ 8 files changed, 222 insertions(+), 138 deletions(-) create mode 100644 lib/src/widgets/profile/proifle_wrapper.dart diff --git a/lib/src/models/user.dart b/lib/src/models/user.dart index 83e62ff..a4ee6e0 100644 --- a/lib/src/models/user.dart +++ b/lib/src/models/user.dart @@ -3,6 +3,9 @@ import 'dart:typed_data'; import 'package:flutter/material.dart'; import 'package:profile/profile.dart'; +/// User is used to contain all user data. It consists of three standard fields: firstName, lastName and image. +/// +/// For additional data profileData can be used. class User { String? firstName; String? lastName; @@ -35,6 +38,11 @@ class User { } } +/// ProfileData is used to store custom/addintional data for a user. +/// +/// The MapWidget method is used to bind a [Widget] to one of the keys. This will override the standard textfield. +/// +/// The Builditems method is used to make the list of field to house the user data. abstract class ProfileData { const ProfileData(); diff --git a/lib/src/services/profile_service.dart b/lib/src/services/profile_service.dart index c1a35ce..f9d27f0 100644 --- a/lib/src/services/profile_service.dart +++ b/lib/src/services/profile_service.dart @@ -1,6 +1,13 @@ import 'package:flutter/material.dart'; import 'package:profile/profile.dart'; +/// ProfileService can be extended and set for the profilePage. The following method can be overriden. +/// +/// DeleteProfile is called when the user want to delete their profile. +/// +/// EditProfile is called when a user changes and submits a standard textfields. +/// +/// UploadImage is called when te user presses the avatar. abstract class ProfileService { const ProfileService(); diff --git a/lib/src/widgets/avatar/avatar_style.dart b/lib/src/widgets/avatar/avatar_style.dart index c944e24..3107a90 100644 --- a/lib/src/widgets/avatar/avatar_style.dart +++ b/lib/src/widgets/avatar/avatar_style.dart @@ -1,5 +1,14 @@ import 'package:flutter/material.dart'; +/// AvatarStyle is used to set the style of the avatar displayed at the top of the [ProfilePage]. +/// +/// Width is used to set the width of the avatar. Defaults to 100. +/// +/// Height is used to set the height of the avatar. Defaults to 100. +/// +/// InitialStyle sets the [TextStyle] of the initial which are shown when no image is provided. +/// +/// DisplayNameStyle sets the [TextStyle] for the displayname underneath the avatar. class AvatarStyle { const AvatarStyle({ this.width = 100, diff --git a/lib/src/widgets/item_builder/item_builder.dart b/lib/src/widgets/item_builder/item_builder.dart index f28bdf9..70e81fb 100644 --- a/lib/src/widgets/item_builder/item_builder.dart +++ b/lib/src/widgets/item_builder/item_builder.dart @@ -1,6 +1,9 @@ import 'package:flutter/material.dart'; import 'package:profile/src/widgets/item_builder/item_builder_options.dart'; +/// ItemBuilder is used to set the standard textfield for each undefined users data item. +/// +/// Options sets options for the textfield. class ItemBuilder { ItemBuilder({ required this.options, diff --git a/lib/src/widgets/item_builder/item_builder_options.dart b/lib/src/widgets/item_builder/item_builder_options.dart index 2ab6356..b6d60a3 100644 --- a/lib/src/widgets/item_builder/item_builder_options.dart +++ b/lib/src/widgets/item_builder/item_builder_options.dart @@ -1,5 +1,12 @@ import 'package:flutter/material.dart'; +/// ItemBuilderOptions is a class to store all settings for a field in the profile page. +/// +/// InputDecoration sets the decoration for all standard textfields. This is overridden if a field specific decoration is set by inputDecorationField. +/// +/// inputDecorationField sets the inputdecoration by key of the user data field. So a field can have its own specific decoration. +/// +/// Validator can be used to set a validator for the standard textfield. class ItemBuilderOptions { ItemBuilderOptions({ this.inputDecoration = const InputDecoration(), diff --git a/lib/src/widgets/profile/profile_page.dart b/lib/src/widgets/profile/profile_page.dart index a87d1f1..59fc135 100644 --- a/lib/src/widgets/profile/profile_page.dart +++ b/lib/src/widgets/profile/profile_page.dart @@ -1,7 +1,24 @@ import 'package:flutter/material.dart'; import 'package:profile/profile.dart'; -import 'package:profile/src/widgets/avatar/avatar.dart'; +import 'package:profile/src/widgets/profile/proifle_wrapper.dart'; +/// The ProfilePage widget is able to show the data of a user. By default the user is able to change this data. The widget has a couple of parameters listed below: +/// +/// User will contain the data of the user which atleast contain a first name, last name and an avatar/image. Besides this information the [ProfileData] can be used to set custom user fields. +/// +/// With the use of the service set by a [ProfileService] some actions can be determined what should occur when the user does the following actions: Deleting/editing the profile or uploading an image. +/// +/// The style can be used the set some style options regarding the whole form. This is done by setting a [ProfileStyle]. The following styling can be set: The style of the avatar, the padding of the page and default padding between items. +/// +/// CustomAvatar can be set to override the standard avatar using any [Widget]. +/// +/// ShowAvatar can be set using a [bool] to determine whether the avatar should be shown and be able to be set by the user. Default set to true. +/// +/// ShowDeleteProfile can be set using a [bool] set determine whether te user can delete the profile. Default set to true. +/// +/// ItemBuilder is used to determine how the user data is represented. +/// +/// ItemBuilderOptions can be used to just set the settings for fields instead of defining the field itself and how it is used. This field should not be used when the itemBuilder is set. class ProfilePage extends StatefulWidget { const ProfilePage({ Key? key, @@ -15,14 +32,28 @@ class ProfilePage extends StatefulWidget { this.showDeleteProfile = true, }) : super(key: key); + /// User containing all the user data. final User user; + + /// The service the determine what should happen when the user takes action. final ProfileService service; + + /// Style to set some general styling parameters fot the whole page. final ProfileStyle style; + + /// The way to override the standard avatar is needed. final Widget? customAvatar; + + /// Whether to show the users avatar. final bool showAvatar; + + /// Whether to give the user the option to delete their own profile. final bool showDeleteProfile; + + /// Itembuilder is used the build each field in the user. final ItemBuilder? itemBuilder; + /// Used to set settings of eacht field in user. final ItemBuilderOptions? itemBuilderOptions; @override @@ -48,140 +79,3 @@ class _ProfilePageState extends State { ); } } - -class ProfileWrapper extends StatefulWidget { - const ProfileWrapper({ - Key? key, - required this.user, - required this.service, - required this.rebuild, - this.style = const ProfileStyle(), - this.customAvatar, - this.showAvatar = true, - this.itemBuilder, - this.itemBuilderOptions, - this.showDeleteProfile = true, - }) : super(key: key); - - final User user; - final ProfileService service; - final ProfileStyle style; - final Widget? customAvatar; - final bool showAvatar; - final bool showDeleteProfile; - final ItemBuilder? itemBuilder; - final Function rebuild; - final ItemBuilderOptions? itemBuilderOptions; - - @override - State createState() => _ProfileWrapperState(); -} - -class _ProfileWrapperState extends State { - List defaultItems = []; - - @override - void initState() { - super.initState(); - - if (widget.itemBuilder == null) { - ItemBuilder builder = ItemBuilder( - options: widget.itemBuilderOptions ?? ItemBuilderOptions(), - ); - defaultItems - .add(builder.build('firstName', widget.user.firstName, null, (v) { - widget.user.firstName = v; - - widget.service.editProfile(widget.user, 'firstName', v); - })); - defaultItems.add( - SizedBox( - height: widget.style.betweenDefaultItemPadding, - ), - ); - defaultItems - .add(builder.build('lastName', widget.user.lastName, null, (v) { - widget.user.lastName = v; - - widget.service.editProfile(widget.user, 'lastName', v); - })); - } else { - defaultItems.add(widget.itemBuilder! - .build('firstName', widget.user.firstName, null, (v) { - widget.user.firstName = v; - - widget.service.editProfile(widget.user, 'firstname', v); - })); - defaultItems.add( - SizedBox( - height: widget.style.betweenDefaultItemPadding, - ), - ); - defaultItems.add(widget.itemBuilder! - .build('lastName', widget.user.lastName, null, (v) { - widget.user.lastName = v; - - widget.service.editProfile(widget.user, 'lastName', v); - })); - } - } - - @override - Widget build(BuildContext context) { - return Material( - color: Colors.transparent, - child: Padding( - padding: widget.style.pagePadding, - child: Column( - children: [ - if (widget.showAvatar) - InkWell( - onTap: () async { - await widget.service.uploadImage(context); - }, - child: Avatar( - firstName: widget.user.firstName, - lastName: widget.user.lastName, - style: widget.style.avatarStyle, - avatar: widget.customAvatar, - image: widget.user.image, - ), - ), - if (widget.showAvatar) - SizedBox( - height: widget.style.betweenDefaultItemPadding, - ), - ...defaultItems, - ...widget.user.profileData!.buildItems( - widget.user.profileData!.toMap(), - widget.user.profileData!.mapWidget( - () { - widget.rebuild(); - }, - context, - ), - widget.style.betweenDefaultItemPadding, - (key, value) { - widget.service.editProfile(widget.user, key, value); - }, - itemBuilder: widget.itemBuilder, - itemBuilderOptions: widget.itemBuilderOptions, - ), - if (widget.showDeleteProfile) - SizedBox( - height: widget.style.betweenDefaultItemPadding, - ), - const Spacer(), - if (widget.showDeleteProfile) - InkWell( - onTap: () { - widget.service.deleteProfile(); - }, - child: const Text('Profiel verwijderen'), - ), - ], - ), - ), - ); - } -} diff --git a/lib/src/widgets/profile/profile_style.dart b/lib/src/widgets/profile/profile_style.dart index cbdded8..1d38b0d 100644 --- a/lib/src/widgets/profile/profile_style.dart +++ b/lib/src/widgets/profile/profile_style.dart @@ -1,6 +1,13 @@ import 'package:flutter/material.dart'; import 'package:profile/src/widgets/avatar/avatar_style.dart'; +/// ProfielStyle is used to set a couple of style paramaters for the whole profile page. +/// +/// AvatarStyle is used to set some styling for the avatar using [AvatarStyle]. +/// +/// PagePaddign is used to set the padding around the whole profile page with its parent. +/// +/// BetweenDefaultitemPadding sets te padding between each user data item. class ProfileStyle { const ProfileStyle({ this.avatarStyle = const AvatarStyle(), @@ -8,7 +15,12 @@ class ProfileStyle { this.pagePadding = EdgeInsets.zero, }); + /// AvatarStyle can be used to set some avatar styling parameters. final AvatarStyle avatarStyle; + + /// PagePadding can be set to determine the padding of the whole page againt the profile page parent. final EdgeInsetsGeometry pagePadding; + + /// BetweenDefaultItemPadding sets the final double betweenDefaultItemPadding; } diff --git a/lib/src/widgets/profile/proifle_wrapper.dart b/lib/src/widgets/profile/proifle_wrapper.dart new file mode 100644 index 0000000..e760ea0 --- /dev/null +++ b/lib/src/widgets/profile/proifle_wrapper.dart @@ -0,0 +1,144 @@ +import 'package:flutter/material.dart'; +import 'package:profile/src/models/user.dart'; +import 'package:profile/src/services/profile_service.dart'; +import 'package:profile/src/widgets/avatar/avatar.dart'; +import 'package:profile/src/widgets/item_builder/item_builder.dart'; +import 'package:profile/src/widgets/item_builder/item_builder_options.dart'; +import 'package:profile/src/widgets/profile/profile_style.dart'; + +class ProfileWrapper extends StatefulWidget { + const ProfileWrapper({ + Key? key, + required this.user, + required this.service, + required this.rebuild, + this.style = const ProfileStyle(), + this.customAvatar, + this.showAvatar = true, + this.itemBuilder, + this.itemBuilderOptions, + this.showDeleteProfile = true, + }) : super(key: key); + + final User user; + final ProfileService service; + final ProfileStyle style; + final Widget? customAvatar; + final bool showAvatar; + final bool showDeleteProfile; + final ItemBuilder? itemBuilder; + final Function rebuild; + final ItemBuilderOptions? itemBuilderOptions; + + @override + State createState() => _ProfileWrapperState(); +} + +class _ProfileWrapperState extends State { + List defaultItems = []; + + @override + void initState() { + super.initState(); + + if (widget.itemBuilder == null) { + ItemBuilder builder = ItemBuilder( + options: widget.itemBuilderOptions ?? ItemBuilderOptions(), + ); + defaultItems + .add(builder.build('firstName', widget.user.firstName, null, (v) { + widget.user.firstName = v; + + widget.service.editProfile(widget.user, 'firstName', v); + })); + defaultItems.add( + SizedBox( + height: widget.style.betweenDefaultItemPadding, + ), + ); + defaultItems + .add(builder.build('lastName', widget.user.lastName, null, (v) { + widget.user.lastName = v; + + widget.service.editProfile(widget.user, 'lastName', v); + })); + } else { + defaultItems.add(widget.itemBuilder! + .build('firstName', widget.user.firstName, null, (v) { + widget.user.firstName = v; + + widget.service.editProfile(widget.user, 'firstname', v); + })); + defaultItems.add( + SizedBox( + height: widget.style.betweenDefaultItemPadding, + ), + ); + defaultItems.add(widget.itemBuilder! + .build('lastName', widget.user.lastName, null, (v) { + widget.user.lastName = v; + + widget.service.editProfile(widget.user, 'lastName', v); + })); + } + } + + @override + Widget build(BuildContext context) { + return Material( + color: Colors.transparent, + child: Padding( + padding: widget.style.pagePadding, + child: Column( + children: [ + if (widget.showAvatar) + InkWell( + onTap: () async { + await widget.service.uploadImage(context); + }, + child: Avatar( + firstName: widget.user.firstName, + lastName: widget.user.lastName, + style: widget.style.avatarStyle, + avatar: widget.customAvatar, + image: widget.user.image, + ), + ), + if (widget.showAvatar) + SizedBox( + height: widget.style.betweenDefaultItemPadding, + ), + ...defaultItems, + ...widget.user.profileData!.buildItems( + widget.user.profileData!.toMap(), + widget.user.profileData!.mapWidget( + () { + widget.rebuild(); + }, + context, + ), + widget.style.betweenDefaultItemPadding, + (key, value) { + widget.service.editProfile(widget.user, key, value); + }, + itemBuilder: widget.itemBuilder, + itemBuilderOptions: widget.itemBuilderOptions, + ), + if (widget.showDeleteProfile) + SizedBox( + height: widget.style.betweenDefaultItemPadding, + ), + const Spacer(), + if (widget.showDeleteProfile) + InkWell( + onTap: () { + widget.service.deleteProfile(); + }, + child: const Text('Profiel verwijderen'), + ), + ], + ), + ), + ); + } +} From d0c027820aa1123fdb1479fbf448c1d82de49e93 Mon Sep 17 00:00:00 2001 From: Jacques Doeleman Date: Wed, 21 Sep 2022 09:20:15 +0200 Subject: [PATCH 3/9] Added widget tests --- lib/src/services/profile_service.dart | 5 +- .../widgets/item_builder/item_builder.dart | 1 + test/profile_test.dart | 95 ++++++++++++++++++- test/test_classes/test_profile_data.dart | 39 ++++++++ test/test_classes/test_profile_service.dart | 25 +++++ 5 files changed, 162 insertions(+), 3 deletions(-) create mode 100644 test/test_classes/test_profile_data.dart create mode 100644 test/test_classes/test_profile_service.dart diff --git a/lib/src/services/profile_service.dart b/lib/src/services/profile_service.dart index f9d27f0..78efe1c 100644 --- a/lib/src/services/profile_service.dart +++ b/lib/src/services/profile_service.dart @@ -11,9 +11,10 @@ import 'package:profile/profile.dart'; abstract class ProfileService { const ProfileService(); - deleteProfile() {} + deleteProfile() async {} - editProfile(User user, String key, String value) { + editProfile( + User user, String key, String value) async { if (user.profileData != null) { var map = user.profileData!.toMap(); if (map.containsKey(key)) { diff --git a/lib/src/widgets/item_builder/item_builder.dart b/lib/src/widgets/item_builder/item_builder.dart index 70e81fb..95ada51 100644 --- a/lib/src/widgets/item_builder/item_builder.dart +++ b/lib/src/widgets/item_builder/item_builder.dart @@ -31,6 +31,7 @@ class ItemBuilder { return Form( key: formKey, child: TextFormField( + key: Key(key), controller: controller, decoration: inputDecoration, readOnly: options.readOnly, diff --git a/test/profile_test.dart b/test/profile_test.dart index 65b3dba..322216e 100644 --- a/test/profile_test.dart +++ b/test/profile_test.dart @@ -1 +1,94 @@ -// todo +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:profile/profile.dart'; + +import 'test_classes/test_profile_data.dart'; +import 'test_classes/test_profile_service.dart'; + +void main() { + testWidgets('Profile page with preset values', (tester) async { + await tester.pumpWidget( + MaterialApp( + home: Material( + child: ProfilePage( + user: User( + 'Firstname', + 'Lastname', + Uint8List.fromList([]), + TestProfileData(email: 'test@email.com'), + ), + service: TestProfileService(), + ), + ), + ), + ); + + final firstNameFinder = find.text('Firstname'); + final lastNameFinder = find.text('Lastname'); + final emailFinder = find.text('test@email.com'); + + expect(firstNameFinder, findsOneWidget); + expect(lastNameFinder, findsOneWidget); + expect(emailFinder, findsOneWidget); + }); + + testWidgets('Profile page without preset value', (tester) async { + await tester.pumpWidget( + MaterialApp( + home: Material( + child: ProfilePage( + user: User( + null, + null, + null, + TestProfileData(email: null), + ), + service: TestProfileService(), + ), + ), + ), + ); + }); + + testWidgets('Profile page with preset value and changing them', + (tester) async { + await tester.pumpWidget( + MaterialApp( + home: Material( + child: ProfilePage( + user: User( + 'Firstname', + 'Lastname', + null, + TestProfileData(email: 'test@email.com'), + ), + service: TestProfileService(), + ), + ), + ), + ); + + await tester.enterText(find.text('Firstname'), 'FirstEditedName'); + await tester.testTextInput.receiveAction(TextInputAction.send); + await tester.pump(); + + await tester.enterText(find.text('test@email.com'), 'edited@emial.com'); + await tester.testTextInput.receiveAction(TextInputAction.send); + await tester.pump(); + + final firstNameFinder = find.text('Firstname'); + final firstNameEditedFinder = find.text('FirstEditedName'); + + final lastNameFinder = find.text('Lastname'); + + final emailFinder = find.text('test@email.com'); + final emailEditedFinder = find.text('edited@emial.com'); + + expect(firstNameFinder, findsNothing); + expect(firstNameEditedFinder, findsOneWidget); + expect(lastNameFinder, findsOneWidget); + expect(emailFinder, findsNothing); + expect(emailEditedFinder, findsOneWidget); + }); +} diff --git a/test/test_classes/test_profile_data.dart b/test/test_classes/test_profile_data.dart new file mode 100644 index 0000000..b13ccc3 --- /dev/null +++ b/test/test_classes/test_profile_data.dart @@ -0,0 +1,39 @@ +import 'package:flutter/material.dart'; +import 'package:profile/profile.dart'; + +class TestProfileData extends ProfileData { + TestProfileData({ + this.email, + }); + + String? email; + + @override + Map mapWidget( + VoidCallback update, + BuildContext context, + ) { + return { + 'email': null, + }; + } + + @override + ProfileData fromMap(Map data) { + return TestProfileData( + email: data['email'], + ); + } + + @override + Map toMap() { + return { + 'email': email, + }; + } + + @override + ProfileData create() { + return TestProfileData(); + } +} diff --git a/test/test_classes/test_profile_service.dart b/test/test_classes/test_profile_service.dart new file mode 100644 index 0000000..e0b53e7 --- /dev/null +++ b/test/test_classes/test_profile_service.dart @@ -0,0 +1,25 @@ +import 'package:flutter/material.dart'; +import 'package:profile/profile.dart'; + +class TestProfileService extends ProfileService { + TestProfileService(); + + @override + void deleteProfile() { + super.deleteProfile(); + } + + @override + void editProfile( + User user, + String key, + String value, + ) { + super.editProfile(user, key, value); + } + + @override + Future uploadImage(BuildContext context) async { + super.uploadImage(context); + } +} From d4e43ef41c31b1976239bb0ac3cbfad11b0f1d32 Mon Sep 17 00:00:00 2001 From: Jacques Doeleman Date: Wed, 21 Sep 2022 10:01:48 +0200 Subject: [PATCH 4/9] Made the delete profile text interchangeable When the text is set to null the feature is disabled --- lib/src/widgets/profile/profile_page.dart | 10 +++++----- lib/src/widgets/profile/proifle_wrapper.dart | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lib/src/widgets/profile/profile_page.dart b/lib/src/widgets/profile/profile_page.dart index 59fc135..3275a15 100644 --- a/lib/src/widgets/profile/profile_page.dart +++ b/lib/src/widgets/profile/profile_page.dart @@ -14,7 +14,7 @@ import 'package:profile/src/widgets/profile/proifle_wrapper.dart'; /// /// ShowAvatar can be set using a [bool] to determine whether the avatar should be shown and be able to be set by the user. Default set to true. /// -/// ShowDeleteProfile can be set using a [bool] set determine whether te user can delete the profile. Default set to true. +/// DeleteProfileText sets the text for the inkwell at the bottom of the page. If this is set the null then the deletion of the profile is disabled. /// /// ItemBuilder is used to determine how the user data is represented. /// @@ -29,7 +29,7 @@ class ProfilePage extends StatefulWidget { this.showAvatar = true, this.itemBuilder, this.itemBuilderOptions, - this.showDeleteProfile = true, + this.deleteProfileText = 'Delete proifle', }) : super(key: key); /// User containing all the user data. @@ -47,8 +47,8 @@ class ProfilePage extends StatefulWidget { /// Whether to show the users avatar. final bool showAvatar; - /// Whether to give the user the option to delete their own profile. - final bool showDeleteProfile; + /// Sets the text for the [InkWell] at the bottom of the profile page. If null deleting the profile is disabled. + final String? deleteProfileText; /// Itembuilder is used the build each field in the user. final ItemBuilder? itemBuilder; @@ -72,7 +72,7 @@ class _ProfilePageState extends State { style: widget.style, customAvatar: widget.customAvatar, showAvatar: widget.showAvatar, - showDeleteProfile: widget.showDeleteProfile, + deleteProfileText: widget.deleteProfileText, itemBuilder: widget.itemBuilder, itemBuilderOptions: widget.itemBuilderOptions, key: UniqueKey(), diff --git a/lib/src/widgets/profile/proifle_wrapper.dart b/lib/src/widgets/profile/proifle_wrapper.dart index e760ea0..b0b17dc 100644 --- a/lib/src/widgets/profile/proifle_wrapper.dart +++ b/lib/src/widgets/profile/proifle_wrapper.dart @@ -17,7 +17,7 @@ class ProfileWrapper extends StatefulWidget { this.showAvatar = true, this.itemBuilder, this.itemBuilderOptions, - this.showDeleteProfile = true, + this.deleteProfileText = 'Delete proifle', }) : super(key: key); final User user; @@ -25,7 +25,7 @@ class ProfileWrapper extends StatefulWidget { final ProfileStyle style; final Widget? customAvatar; final bool showAvatar; - final bool showDeleteProfile; + final String? deleteProfileText; final ItemBuilder? itemBuilder; final Function rebuild; final ItemBuilderOptions? itemBuilderOptions; @@ -124,17 +124,17 @@ class _ProfileWrapperState extends State { itemBuilder: widget.itemBuilder, itemBuilderOptions: widget.itemBuilderOptions, ), - if (widget.showDeleteProfile) + if (widget.deleteProfileText != null) SizedBox( height: widget.style.betweenDefaultItemPadding, ), const Spacer(), - if (widget.showDeleteProfile) + if (widget.deleteProfileText != null) InkWell( onTap: () { widget.service.deleteProfile(); }, - child: const Text('Profiel verwijderen'), + child: Text(widget.deleteProfileText!), ), ], ), From 57e0b7a1fcab3cf617634f66c2155012ce99959d Mon Sep 17 00:00:00 2001 From: Jacques Doeleman Date: Wed, 21 Sep 2022 11:09:24 +0200 Subject: [PATCH 5/9] Updated the example Made some other small changes --- example/lib/main.dart | 189 +++++++----------- example/lib/utils/example_profile_data.dart | 39 ++++ .../lib/utils/example_profile_service.dart | 29 +++ lib/src/widgets/avatar/avatar.dart | 6 +- lib/src/widgets/profile/profile_page.dart | 2 +- lib/src/widgets/profile/proifle_wrapper.dart | 7 +- 6 files changed, 143 insertions(+), 129 deletions(-) create mode 100644 example/lib/utils/example_profile_data.dart create mode 100644 example/lib/utils/example_profile_service.dart diff --git a/example/lib/main.dart b/example/lib/main.dart index 56b4fe5..2442c5e 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -1,29 +1,44 @@ import 'dart:typed_data'; +import 'package:example/utils/example_profile_service.dart'; import 'package:flutter/material.dart'; import 'package:profile/profile.dart'; +import 'utils/example_profile_data.dart'; + void main() { runApp(const MyApp()); } -class MyApp extends StatefulWidget { - const MyApp({Key? key}) : super(key: key); +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override - State createState() => _MyAppState(); + Widget build(BuildContext context) { + return const MaterialApp( + home: ProfileExample(), + ); + } } -class _MyAppState extends State { +class ProfileExample extends StatefulWidget { + const ProfileExample({Key? key}) : super(key: key); + + @override + State createState() => _ProfileExampleState(); +} + +class _ProfileExampleState extends State { late User _user; - MyProfileData profileData = MyProfileData(); + ProfileData profileData = + ExampleProfileData().fromMap({'email': 'example@email.com'}); @override void initState() { super.initState(); _user = User( - 'firstName', - 'lastName', + 'Firstname', + 'Lastname', Uint8List.fromList( [], ), @@ -33,123 +48,55 @@ class _MyAppState extends State { @override Widget build(BuildContext context) { - return MaterialApp( - theme: ThemeData( - primarySwatch: Colors.blue, - ), - home: ProfilePage( - service: MyProfileService(), + return Scaffold( + body: ProfilePage( + itemBuilderOptions: ItemBuilderOptions( + inputDecorationField: { + 'firstName': const InputDecoration( + label: Text('First name'), + ), + 'lastName': const InputDecoration( + label: Text('Last name'), + ), + 'email': const InputDecoration( + label: Text('E-mail'), + ), + }, + validators: { + 'firstName': (String? value) { + if (value == null || value.isEmpty) { + return 'Field empty'; + } + return null; + }, + 'lastName': (String? value) { + if (value == null || value.isEmpty) { + return 'Field empty'; + } + return null; + }, + 'email': (String? value) { + if (value == null || value.isEmpty) { + return 'Field empty'; + } + return null; + }, + }, + ), user: _user, - ), - ); - } -} - -class MyProfileService extends ProfileService { - @override - deleteProfile() { - return super.deleteProfile(); - } - - @override - editProfile( - User user, String key, String value) { - return super.editProfile(user, key, value); - } - - @override - uploadImage(context) { - return super.uploadImage(context); - } -} - -class MyProfileData extends ProfileData { - MyProfileData({ - this.justMyNumber = '1', - this.justMyString = 2, - }); - - final String justMyNumber; - int justMyString; - - @override - Map mapWidget(Function update, BuildContext context) { - return { - 'justMyString': SizedBox( - height: 100, - width: 300, - child: Row( - children: [ - ElevatedButton( - style: ElevatedButton.styleFrom( - backgroundColor: justMyString == 1 ? Colors.green : Colors.blue, - ), - onPressed: () { - justMyString = 1; - update(); - }, - child: const Text('1'), - ), - const Spacer(), - ElevatedButton( - style: ElevatedButton.styleFrom( - backgroundColor: justMyString == 2 ? Colors.green : Colors.blue, - ), - onPressed: () { - justMyString = 2; - update(); - }, - child: const Text('2'), - ), - const Spacer(), - ElevatedButton( - style: ElevatedButton.styleFrom( - backgroundColor: justMyString == 3 ? Colors.green : Colors.blue, - ), - onPressed: () { - justMyString = 3; - update(); - }, - child: const Text('3'), - ), - const Spacer(), - ElevatedButton( - style: ElevatedButton.styleFrom( - backgroundColor: justMyString == 4 ? Colors.green : Colors.blue, - ), - onPressed: () { - justMyString = 4; - update(); - }, - child: const Text('4'), - ), - ], + service: ExampleProfileService(), + style: ProfileStyle( + avatarStyle: const AvatarStyle( + displayNameStyle: TextStyle(fontSize: 20), + ), + pagePadding: EdgeInsets.only( + top: 50, + bottom: 50, + left: MediaQuery.of(context).size.width * 0.35, + right: MediaQuery.of(context).size.width * 0.35, + ), ), ), - 'justMyNumber': null, - }; - } - - @override - ProfileData fromMap(Map data) { - return MyProfileData( - justMyNumber: data['justMyNumber'], - justMyString: int.parse( - data['justMyString'].toString(), - ), ); } - - @override - Map toMap() { - return { - 'justMyNumber': justMyNumber, - 'justMyString': justMyString, - }; - } - - @override - ProfileData create() { - return MyProfileData(); - } } diff --git a/example/lib/utils/example_profile_data.dart b/example/lib/utils/example_profile_data.dart new file mode 100644 index 0000000..3091752 --- /dev/null +++ b/example/lib/utils/example_profile_data.dart @@ -0,0 +1,39 @@ +import 'package:flutter/material.dart'; +import 'package:profile/profile.dart'; + +class ExampleProfileData extends ProfileData { + ExampleProfileData({ + this.email, + }); + + String? email; + + @override + Map mapWidget( + VoidCallback update, + BuildContext context, + ) { + return { + 'email': null, + }; + } + + @override + ProfileData fromMap(Map data) { + return ExampleProfileData( + email: data['email'], + ); + } + + @override + Map toMap() { + return { + 'email': email, + }; + } + + @override + ProfileData create() { + return ExampleProfileData(); + } +} diff --git a/example/lib/utils/example_profile_service.dart b/example/lib/utils/example_profile_service.dart new file mode 100644 index 0000000..8fd7873 --- /dev/null +++ b/example/lib/utils/example_profile_service.dart @@ -0,0 +1,29 @@ +import 'package:flutter/material.dart'; +import 'package:profile/profile.dart'; + +class ExampleProfileService extends ProfileService { + ExampleProfileService(); + + @override + void deleteProfile() { + super.deleteProfile(); + + debugPrint('Deleting profile'); + } + + @override + void editProfile( + User user, + String key, + String value, + ) { + super.editProfile(user, key, value); + + debugPrint('Editing key: $key with $value'); + } + + @override + Future uploadImage(BuildContext context) async { + debugPrint('Updating avatar'); + } +} diff --git a/lib/src/widgets/avatar/avatar.dart b/lib/src/widgets/avatar/avatar.dart index 8d885c6..80cfc2b 100644 --- a/lib/src/widgets/avatar/avatar.dart +++ b/lib/src/widgets/avatar/avatar.dart @@ -68,11 +68,7 @@ class Avatar extends StatelessWidget { ), ); } else { - return SizedBox( - width: style.width, - height: style.height, - // TODO(anyone) child fallback image - ); + return Container(); } } diff --git a/lib/src/widgets/profile/profile_page.dart b/lib/src/widgets/profile/profile_page.dart index 3275a15..75b3564 100644 --- a/lib/src/widgets/profile/profile_page.dart +++ b/lib/src/widgets/profile/profile_page.dart @@ -29,7 +29,7 @@ class ProfilePage extends StatefulWidget { this.showAvatar = true, this.itemBuilder, this.itemBuilderOptions, - this.deleteProfileText = 'Delete proifle', + this.deleteProfileText = 'Delete profile', }) : super(key: key); /// User containing all the user data. diff --git a/lib/src/widgets/profile/proifle_wrapper.dart b/lib/src/widgets/profile/proifle_wrapper.dart index b0b17dc..27f428f 100644 --- a/lib/src/widgets/profile/proifle_wrapper.dart +++ b/lib/src/widgets/profile/proifle_wrapper.dart @@ -17,7 +17,7 @@ class ProfileWrapper extends StatefulWidget { this.showAvatar = true, this.itemBuilder, this.itemBuilderOptions, - this.deleteProfileText = 'Delete proifle', + this.deleteProfileText = 'Delete profile', }) : super(key: key); final User user; @@ -134,7 +134,10 @@ class _ProfileWrapperState extends State { onTap: () { widget.service.deleteProfile(); }, - child: Text(widget.deleteProfileText!), + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Text(widget.deleteProfileText!), + ), ), ], ), From 52d595bbac2a45f1998cce9d4e39379888241252 Mon Sep 17 00:00:00 2001 From: Jacques Doeleman Date: Wed, 21 Sep 2022 14:08:36 +0200 Subject: [PATCH 6/9] Made some changes according to feedback --- README.md | 53 +++++++---- .../lib/utils/example_profile_service.dart | 12 +-- lib/src/models/user.dart | 54 ++---------- lib/src/services/profile_service.dart | 20 ++--- .../widgets/item_builder/item_builder.dart | 6 +- lib/src/widgets/item_builder/item_list.dart | 80 +++++++++++++++++ lib/src/widgets/profile/profile_page.dart | 10 +-- lib/src/widgets/profile/proifle_wrapper.dart | 87 +++++++++++++------ test/test_classes/test_profile_service.dart | 16 ++-- 9 files changed, 206 insertions(+), 132 deletions(-) create mode 100644 lib/src/widgets/item_builder/item_list.dart diff --git a/README.md b/README.md index 7c6ea38..8afd88d 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,52 @@ -[![style: effective dart](https://img.shields.io/badge/style-effective_dart-40c4ff.svg)](https://github.com/tenhobi/effective_dart) +# Flutter Profile +Flutter Profile is a package you can use to display any user data and let them alter it . -Short description of what your package is, why you created it. What issues it fixes and how it works. Also mention the available platforms +![Gif](example/gif/ImagePickerGif.gif) + +## Features + +With the Flutter Image Picker you can select an existing picture from the gallery of your device or make a picture with the camera to use in your app. This package is made for Android, iOS and Windows. ## Setup -What setup steps are neccesarry and why> +To use this package, add `flutter_image_picker` as a [dependency in your pubspec.yaml file](https://flutter.dev/docs/development/platform-integration/platform-channels). -
-PLATFORM - -specific platform steps +## How To Use -
+See the [Example Code](example/lib/main.dart) for an example on how to use this package. -## How to use +You can add an optional `ImagePickerTheme()` to the `ImagePicker()` to change the layout of the Image Picker Dialog. You can add the following parameters to the `ImagePickerTheme`: +An example on how to add a parameter to the `ImagePickerTheme()` is: `ImagePickerTheme(imagePickerTheme: const ImagePickerTheme(title: "Image Picker"))`. +As a whole you get `ImagePicker(ImagePickerTheme(imagePickerTheme: const ImagePickerTheme(title: "Image Picker")))` -How can we use the package descibe the most common ways with examples in +| Parameter | Explaination | +|-------------------|----------------| +| font | The font that is being used in the Image Picker Dialog. | +| title | The title displayed at the top of the Image Picker Dialog. | +| titleTextSize | The font size of the title mentioned above. | +| titleColor | The color of the title text. | +| titleBackgroundColor | The color of the title background. | +| titleAlignment | The alignment of the title text. | +| textColor | The color of the text that is displayed in the Image Picker Dialog. | +| iconColor | The color of the icons that are displayed in the Image Picker Dialog. | +| iconSize | The size of the icons that are visible in the Image Picker Dialog. | +| iconTextSize | The font size of the text underneath the icon buttons. | +| spaceBetweenIcons | The size of the space between the two icons in the Image Picker Dialog. | +| makePhotoIcon | The icon that is displayed for the 'Make Photo' functionality of the Image Picker Dialog. | +| makePhotoText | The text that is displayed underneath the 'Make Photo' icon. | +| selectImageIcon | The icon that is displayed for the 'Select Image From Gallery' functionality of the Image Picker Dialog. | +| selectImageText | The text that is displayed underneath the 'Select Image From Gallery' icon. | +| closeButtonText | The text that is shown on the 'Close Dialog' button at the bottom of the Image Picker Dialog. | +| closeButtonTextSize | The size of the text that is being displayed on the 'Close Dialog' button at the bottom of the Image Picker Dialog. | +| closeButtonTextColor | The color of the text that is being displayed on the 'Close Dialog' button at the bottom of the Image Picker Dialog. | +| closeButtonWidth | The width of the 'Close Dialog' button at the bottom of the Image Picker Dialog. | +| closeButtonHeight | The height of the 'Close Dialog' button at the bottom of the Image Picker Dialog. | +| closeButtonBackgroundColor | The background color of the 'Close Dialog' button at the bottom of the Image Picker Dialog. | -```dart - codeblocks -``` ## Issues -Please file any issues, bugs or feature request as an issue on our [GitHub](REPO URL) page. Commercial support is available if you need help with integration with your app or services. You can contact us at [support@iconica.nl](mailto:support@iconica.nl). +Please file any issues, bugs or feature request as an issue on our [GitHub](https://github.com/Iconica-Development/flutter_image_picker/pulls) page. Commercial support is available if you need help with integration with your app or services. You can contact us at [support@iconica.nl](mailto:support@iconica.nl). ## Want to contribute @@ -31,4 +54,4 @@ If you would like to contribute to the plugin (e.g. by improving the documentati ## Author -This flutter_profile package for Flutter is developed by [Iconica](https://iconica.nl). You can contact us at +This `flutter-image-picker` for Flutter is developed by [Iconica](https://iconica.nl). You can contact us at \ No newline at end of file diff --git a/example/lib/utils/example_profile_service.dart b/example/lib/utils/example_profile_service.dart index 8fd7873..ddb42ee 100644 --- a/example/lib/utils/example_profile_service.dart +++ b/example/lib/utils/example_profile_service.dart @@ -5,20 +5,16 @@ class ExampleProfileService extends ProfileService { ExampleProfileService(); @override - void deleteProfile() { - super.deleteProfile(); - - debugPrint('Deleting profile'); + void pageBottomAction() { + debugPrint('Bottom page action'); } @override - void editProfile( - User user, + void editProfile( + User user, String key, String value, ) { - super.editProfile(user, key, value); - debugPrint('Editing key: $key with $value'); } diff --git a/lib/src/models/user.dart b/lib/src/models/user.dart index a4ee6e0..ef7c943 100644 --- a/lib/src/models/user.dart +++ b/lib/src/models/user.dart @@ -1,16 +1,15 @@ import 'dart:typed_data'; import 'package:flutter/material.dart'; -import 'package:profile/profile.dart'; /// User is used to contain all user data. It consists of three standard fields: firstName, lastName and image. -/// -/// For additional data profileData can be used. -class User { +/// +/// For additional data profileData can be used. +class User { String? firstName; String? lastName; Uint8List? image; - T? profileData; + ProfileData? profileData; User( this.firstName, @@ -39,9 +38,9 @@ class User { } /// ProfileData is used to store custom/addintional data for a user. -/// +/// /// The MapWidget method is used to bind a [Widget] to one of the keys. This will override the standard textfield. -/// +/// /// The Builditems method is used to make the list of field to house the user data. abstract class ProfileData { const ProfileData(); @@ -53,45 +52,4 @@ abstract class ProfileData { Map mapWidget(VoidCallback update, BuildContext context); ProfileData create(); - - List buildItems( - Map items, - Map typeMap, - double spacing, - Function(String, String) updateProfile, { - ItemBuilder? itemBuilder, - ItemBuilderOptions? itemBuilderOptions, - }) { - var widgets = []; - ItemBuilder builder = ItemBuilder( - options: itemBuilderOptions ?? ItemBuilderOptions(), - ); - for (var item in items.entries) { - itemBuilder == null - ? widgets.add( - builder.build( - item.key, - item.value, - typeMap[item.key], - (value) { - updateProfile(item.key, value); - }, - ), - ) - : widgets.add( - itemBuilder.build( - item.key, - item.value, - typeMap[item.key], - (value) { - updateProfile(item.key, value); - }, - ), - ); - widgets.add(SizedBox( - height: spacing, - )); - } - return widgets; - } } diff --git a/lib/src/services/profile_service.dart b/lib/src/services/profile_service.dart index 78efe1c..a3b62e0 100644 --- a/lib/src/services/profile_service.dart +++ b/lib/src/services/profile_service.dart @@ -1,9 +1,11 @@ +import 'dart:async'; + import 'package:flutter/material.dart'; import 'package:profile/profile.dart'; /// ProfileService can be extended and set for the profilePage. The following method can be overriden. /// -/// DeleteProfile is called when the user want to delete their profile. +/// BottompageAction is called when the [InkWell] at the bottom of the page is tapped. /// /// EditProfile is called when a user changes and submits a standard textfields. /// @@ -11,19 +13,9 @@ import 'package:profile/profile.dart'; abstract class ProfileService { const ProfileService(); - deleteProfile() async {} + FutureOr pageBottomAction(); - editProfile( - User user, String key, String value) async { - if (user.profileData != null) { - var map = user.profileData!.toMap(); - if (map.containsKey(key)) { - map[key] = value; - var profile = user.profileData!.create(); - user.profileData = profile.fromMap(map); - } - } - } + FutureOr editProfile(User user, String key, String value); - uploadImage(BuildContext context) async {} + FutureOr uploadImage(BuildContext context); } diff --git a/lib/src/widgets/item_builder/item_builder.dart b/lib/src/widgets/item_builder/item_builder.dart index 95ada51..4321595 100644 --- a/lib/src/widgets/item_builder/item_builder.dart +++ b/lib/src/widgets/item_builder/item_builder.dart @@ -11,8 +11,8 @@ class ItemBuilder { final ItemBuilderOptions options; - Widget build( - String key, dynamic value, Widget? widget, Function(String) updateItem) { + Widget build(String key, GlobalKey formKey, dynamic value, + Widget? widget, Function(String) updateItem) { if (widget == null) { var controller = TextEditingController( text: '${value ?? ''}', @@ -26,8 +26,6 @@ class ItemBuilder { inputDecoration = options.inputDecoration; } - final formKey = GlobalKey(); - return Form( key: formKey, child: TextFormField( diff --git a/lib/src/widgets/item_builder/item_list.dart b/lib/src/widgets/item_builder/item_list.dart new file mode 100644 index 0000000..21c7af2 --- /dev/null +++ b/lib/src/widgets/item_builder/item_list.dart @@ -0,0 +1,80 @@ +import 'package:flutter/material.dart'; +import 'package:profile/src/widgets/item_builder/item_builder.dart'; +import 'package:profile/src/widgets/item_builder/item_builder_options.dart'; + +class ItemList extends StatefulWidget { + const ItemList( + this.items, + this.typeMap, + this.spacing, + this.updateProfile, { + this.itemBuilder, + this.itemBuilderOptions, + super.key, + }); + + final Map items; + final Map typeMap; + final double spacing; + final Function(String, String) updateProfile; + final ItemBuilder? itemBuilder; + final ItemBuilderOptions? itemBuilderOptions; + + @override + State createState() => _ItemListState(); +} + +class _ItemListState extends State { + Map> formKeys = {}; + + @override + void initState() { + super.initState(); + + for (var item in widget.items.entries) { + formKeys.addAll( + {item.key: GlobalKey()}, + ); + } + } + + @override + Widget build(BuildContext context) { + var widgets = []; + ItemBuilder builder = ItemBuilder( + options: widget.itemBuilderOptions ?? ItemBuilderOptions(), + ); + for (var item in widget.items.entries) { + widget.itemBuilder == null + ? widgets.add( + builder.build( + item.key, + formKeys['item.key'] ?? GlobalKey(), + item.value, + widget.typeMap[item.key], + (value) { + widget.updateProfile(item.key, value); + }, + ), + ) + : widgets.add( + widget.itemBuilder!.build( + item.key, + formKeys['item.key'] ?? GlobalKey(), + item.value, + widget.typeMap[item.key], + (value) { + widget.updateProfile(item.key, value); + }, + ), + ); + widgets.add(SizedBox( + height: widget.spacing, + )); + } + + return Column( + children: widgets, + ); + } +} diff --git a/lib/src/widgets/profile/profile_page.dart b/lib/src/widgets/profile/profile_page.dart index 75b3564..3d76986 100644 --- a/lib/src/widgets/profile/profile_page.dart +++ b/lib/src/widgets/profile/profile_page.dart @@ -14,7 +14,7 @@ import 'package:profile/src/widgets/profile/proifle_wrapper.dart'; /// /// ShowAvatar can be set using a [bool] to determine whether the avatar should be shown and be able to be set by the user. Default set to true. /// -/// DeleteProfileText sets the text for the inkwell at the bottom of the page. If this is set the null then the deletion of the profile is disabled. +/// BottomActionText sets the text for the inkwell at the bottom of the page. If this is set the null then the [InkWell] is disabled. /// /// ItemBuilder is used to determine how the user data is represented. /// @@ -29,7 +29,7 @@ class ProfilePage extends StatefulWidget { this.showAvatar = true, this.itemBuilder, this.itemBuilderOptions, - this.deleteProfileText = 'Delete profile', + this.bottomActionText, }) : super(key: key); /// User containing all the user data. @@ -47,8 +47,8 @@ class ProfilePage extends StatefulWidget { /// Whether to show the users avatar. final bool showAvatar; - /// Sets the text for the [InkWell] at the bottom of the profile page. If null deleting the profile is disabled. - final String? deleteProfileText; + /// Sets the text for the [InkWell] at the bottom of the profile page. The [InkWell] is disabled when null. + final String? bottomActionText; /// Itembuilder is used the build each field in the user. final ItemBuilder? itemBuilder; @@ -72,7 +72,7 @@ class _ProfilePageState extends State { style: widget.style, customAvatar: widget.customAvatar, showAvatar: widget.showAvatar, - deleteProfileText: widget.deleteProfileText, + bottomActionText: widget.bottomActionText, itemBuilder: widget.itemBuilder, itemBuilderOptions: widget.itemBuilderOptions, key: UniqueKey(), diff --git a/lib/src/widgets/profile/proifle_wrapper.dart b/lib/src/widgets/profile/proifle_wrapper.dart index 27f428f..580ea0a 100644 --- a/lib/src/widgets/profile/proifle_wrapper.dart +++ b/lib/src/widgets/profile/proifle_wrapper.dart @@ -4,6 +4,7 @@ import 'package:profile/src/services/profile_service.dart'; import 'package:profile/src/widgets/avatar/avatar.dart'; import 'package:profile/src/widgets/item_builder/item_builder.dart'; import 'package:profile/src/widgets/item_builder/item_builder_options.dart'; +import 'package:profile/src/widgets/item_builder/item_list.dart'; import 'package:profile/src/widgets/profile/profile_style.dart'; class ProfileWrapper extends StatefulWidget { @@ -17,7 +18,7 @@ class ProfileWrapper extends StatefulWidget { this.showAvatar = true, this.itemBuilder, this.itemBuilderOptions, - this.deleteProfileText = 'Delete profile', + this.bottomActionText, }) : super(key: key); final User user; @@ -25,7 +26,7 @@ class ProfileWrapper extends StatefulWidget { final ProfileStyle style; final Widget? customAvatar; final bool showAvatar; - final String? deleteProfileText; + final String? bottomActionText; final ItemBuilder? itemBuilder; final Function rebuild; final ItemBuilderOptions? itemBuilderOptions; @@ -37,6 +38,10 @@ class ProfileWrapper extends StatefulWidget { class _ProfileWrapperState extends State { List defaultItems = []; + GlobalKey firstNameKey = GlobalKey(); + + GlobalKey lastNameKey = GlobalKey(); + @override void initState() { super.initState(); @@ -45,41 +50,69 @@ class _ProfileWrapperState extends State { ItemBuilder builder = ItemBuilder( options: widget.itemBuilderOptions ?? ItemBuilderOptions(), ); - defaultItems - .add(builder.build('firstName', widget.user.firstName, null, (v) { - widget.user.firstName = v; + defaultItems.add( + builder.build( + 'firstName', + firstNameKey, + widget.user.firstName, + null, + (v) { + widget.user.firstName = v; - widget.service.editProfile(widget.user, 'firstName', v); - })); + widget.service.editProfile(widget.user, 'firstName', v); + }, + ), + ); defaultItems.add( SizedBox( height: widget.style.betweenDefaultItemPadding, ), ); - defaultItems - .add(builder.build('lastName', widget.user.lastName, null, (v) { - widget.user.lastName = v; + defaultItems.add( + builder.build( + 'lastName', + lastNameKey, + widget.user.lastName, + null, + (v) { + widget.user.lastName = v; - widget.service.editProfile(widget.user, 'lastName', v); - })); + widget.service.editProfile(widget.user, 'lastName', v); + }, + ), + ); } else { - defaultItems.add(widget.itemBuilder! - .build('firstName', widget.user.firstName, null, (v) { - widget.user.firstName = v; + defaultItems.add( + widget.itemBuilder!.build( + 'firstName', + firstNameKey, + widget.user.firstName, + null, + (v) { + widget.user.firstName = v; - widget.service.editProfile(widget.user, 'firstname', v); - })); + widget.service.editProfile(widget.user, 'firstname', v); + }, + ), + ); defaultItems.add( SizedBox( height: widget.style.betweenDefaultItemPadding, ), ); - defaultItems.add(widget.itemBuilder! - .build('lastName', widget.user.lastName, null, (v) { - widget.user.lastName = v; + defaultItems.add( + widget.itemBuilder!.build( + 'lastName', + lastNameKey, + widget.user.lastName, + null, + (v) { + widget.user.lastName = v; - widget.service.editProfile(widget.user, 'lastName', v); - })); + widget.service.editProfile(widget.user, 'lastName', v); + }, + ), + ); } } @@ -109,7 +142,7 @@ class _ProfileWrapperState extends State { height: widget.style.betweenDefaultItemPadding, ), ...defaultItems, - ...widget.user.profileData!.buildItems( + ItemList( widget.user.profileData!.toMap(), widget.user.profileData!.mapWidget( () { @@ -124,19 +157,19 @@ class _ProfileWrapperState extends State { itemBuilder: widget.itemBuilder, itemBuilderOptions: widget.itemBuilderOptions, ), - if (widget.deleteProfileText != null) + if (widget.bottomActionText != null) SizedBox( height: widget.style.betweenDefaultItemPadding, ), const Spacer(), - if (widget.deleteProfileText != null) + if (widget.bottomActionText != null) InkWell( onTap: () { - widget.service.deleteProfile(); + widget.service.pageBottomAction(); }, child: Padding( padding: const EdgeInsets.all(8.0), - child: Text(widget.deleteProfileText!), + child: Text(widget.bottomActionText!), ), ), ], diff --git a/test/test_classes/test_profile_service.dart b/test/test_classes/test_profile_service.dart index e0b53e7..185df60 100644 --- a/test/test_classes/test_profile_service.dart +++ b/test/test_classes/test_profile_service.dart @@ -5,21 +5,15 @@ class TestProfileService extends ProfileService { TestProfileService(); @override - void deleteProfile() { - super.deleteProfile(); - } + void pageBottomAction() {} @override - void editProfile( - User user, + void editProfile( + User user, String key, String value, - ) { - super.editProfile(user, key, value); - } + ) {} @override - Future uploadImage(BuildContext context) async { - super.uploadImage(context); - } + Future uploadImage(BuildContext context) async {} } From 9603bc02206a6d07bd400f2ed53d33f3bc6d3cb5 Mon Sep 17 00:00:00 2001 From: Jacques Doeleman Date: Wed, 21 Sep 2022 14:37:16 +0200 Subject: [PATCH 7/9] Updated file names and imports --- example/image/example_profile.png | Bin 0 -> 214113 bytes example/lib/main.dart | 3 ++- example/lib/utils/example_profile_data.dart | 2 +- example/lib/utils/example_profile_service.dart | 2 +- example/pubspec.lock | 14 +++++++------- example/pubspec.yaml | 2 +- lib/{profile.dart => flutter_profile.dart} | 2 +- lib/src/services/profile_service.dart | 2 +- lib/src/widgets/avatar/avatar.dart | 2 +- lib/src/widgets/item_builder/item_builder.dart | 2 +- lib/src/widgets/item_builder/item_list.dart | 4 ++-- lib/src/widgets/profile/profile_page.dart | 8 ++++++-- lib/src/widgets/profile/profile_style.dart | 2 +- lib/src/widgets/profile/proifle_wrapper.dart | 14 +++++++------- pubspec.yaml | 2 +- test/profile_test.dart | 2 +- test/test_classes/test_profile_data.dart | 2 +- test/test_classes/test_profile_service.dart | 2 +- 18 files changed, 36 insertions(+), 31 deletions(-) create mode 100644 example/image/example_profile.png rename lib/{profile.dart => flutter_profile.dart} (93%) diff --git a/example/image/example_profile.png b/example/image/example_profile.png new file mode 100644 index 0000000000000000000000000000000000000000..a28e7cb08ec1f77b4792aa93b0f30b5a789ac6e2 GIT binary patch literal 214113 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⪼ZOzm&a2H}1{tSC4BV-*!P`xK|_&ZRpJyu8%c?7l$vy2zeOC z=si(&2w}MRk`*}KmW+bthPbp&A;$fCC0TpH8}P`ovH{>|IF383b|Lnjvg}!! zW*M=4FjmGWLg319`1le!jqWqp&nj#I><*_d4QPK|7CWO^zt&d|Tx?Oy<+=4&>ilP+ ztdWVmme(`aMSJ@B6}NMDZ^%zK69{h+9F^$_F4Dcz>Dt)oPcwJoM%A27oh_0vFndYe zW!`=#dorA$g5-0EM)Nj+b1^%Rq5M%7wA;cHcnIg$kO;orW?WD+Zb!rOSNthjJ*3IXfFa~9l|IFiD&%nUd#Qt`J>|)a{Xso{bJ!w z#{8_i^M*f$mCbToO(mv?sej3pdA{XN^#YJmRZS!S^X>@$lBvepKKx^EV*tilPyV;H z5;z%z1x`1D7Hy13Wq{e64M!V^tlzQd>CcX@(nJ9(pBuASf-Mi*&nRYJ+svZpECrLm zi;;WEV4XG1MRlEV?^b70Q>)??M1ijfT@l>f(2kZX-)E7)nX+C_r%K3RqSr`6;jD zQcb4(xR$+289P$%;lP3PXC1Fi9E`x6}~qz%^XgV1CC z-6IaDFjcp;Apa_y>m5;aAN#gn*N#9U8v2$^i-ocoMkG}j%${Fom9*KhL4U_3h3mwqMS%ZFi-Sj(E9 zFlWZPM1UTUjYHhea+JjdSyDAcm7NPN{a4ID+>5XOxj>{;$-xMMv5%Vw(nt0Y&~Yk= z`h2&AXy72XRZ#dZtI$>erkX^;@F?(|PY; z8Czy}&KAF%uK5Unrhi;l&V-bYZQW8UNzoaIqD_wLc z6@LfwGARIux4^SNN|@zV&Tqg>f99)!XrMm3_Xq0Eqldg-Ur#A-2<#=yHhBwvP~}gy zaVaLH_+M1$L(Z38C$ivPPYGeie{_SD4l%$Q5`%{8-dwU#LjNXmlDsv#C7?*T%)?($ zslZsuUQs4Irz^3VBe-o;N8>K4rm}f!q8UZH0Ry_rtG5c+GT%P9Kr``fGJ+H zTDHG>o#B;1Xx28V?`~NX_qxhpF8)J@>CYXNCt5i-dw4-2_|M>*-=*Oi(Irk`X*c0E zv;SR>Ku^Cb$~$2LD28TMsNAoCG7%6sUUlm&C8@S?yhv1>s&7W3p$9k1)=jKYv(FcZ z_KSNiJiPqa|1bMFe2otr{6f2n&%)Hvh+d1M`xv;@mp#hY*4Q<9LGnk_qod3FbZA?w zR>s6NzO2r4B>on?IE?_hI@aH1Cak9;OEVA-vq67G+b( zxx1}hWGIm%8>e+^p`_)4kcT?av&Qc?Fe~PKPPaCaN^Yi(nm>woe(Fds%)t zjz0Nu*!FB9S-bmKUG!;T*$<#l;CF0!ulAxki)PULXtBpcA~`9~f`4rKtTR+z1QxHPjHKz$-`PLNis+z^?JCNtu(BEf_)e>0Dfm=fc**~zO< ziJ4)|*Tr>yN;3eCCvX1V>A{0(I5?c-VNH?uD_7x_hG>T6kl3WjYuwSScUOfOrK_XuqUun}}!<$(DQDR`7i6(vQbiVe2&i57}J&ZU%?+*S2Xa?KE z;;c_>$!NfoUN9@YVcWYS5UHXCAAm~5tiMCuzy`)opJ@*yY_b|!FCDIPtPXd+DIEL= z)w>k?W|DRmtC9{3n8=$9LJH{-6V<)Y$|SCB@lNH9yxfAr#9l5wZ@gzI8n9rnE>RC= zuO**=>x|V%I9wb;r-S@L~^S<99g^js1?mGf+T!XXWL z|M*5ds2_m0TssvlxWLBlTNR4BRh3~JmS%wScQIhVIJ;%=(fF6;f(bB=Q6Z#CexG9= z6o?8sa)@W##nJsa%EWtiM!Eev)nDYry?lSXIlf&n1_mejSghB$t1EME^s@hZ^T{Tw zmB}XE@BJ?(SEmbXpJ5el)osH%)ipwn>rQMK+7FMQ{E0SOb^ZG4<8cb-^U6Q7}N^t(H7!8w34!<(s>QEnKI%&?*cw3?7)8a-TwHA zF=mnp_*U()+$VQV9r($)2Vf|#5jN9B8&y;;KfNsjUN6izb_oZDrp#nbSwAw5d7{EP5u`3&Y{vh13l_ z)drP^_C?c|({3}5`%%#27R~37R&#`v(DaWgQFc@61T-_G%{8Edb%>^iV+l%&k-mAp z(1pu_aj(8ceAs(Vvx>P-%F&N*2&8&lLutHcmfC2^t(4)GlP?mZKgbZ-#Xqc>SSdu+cKP zj*asG2TT@%6sV8EiU28Dgou4O)F9h$zE0|rOs*eIFxZR6Be47v=f3cYNvA!Gd(`VX zr0a>~a*iaU)V=Bg94r|w`r*GvSu*n|fA(WWq8V{zW+KkL?(%Y+hN_JHNi`MlZ^K$G zc7{XK0j6&{M>U{u!R?$H`oBkP(yofIzT)QSe)FfWu}S()-h3}P=E^s_{YA0-?B&O4 z-g78;sO60PKti9yBcYL6?vzrEv@m97=Fl%VQ-Xf=JFRbYv&F{lKbQXaQlZ%SWYV3~ zJ@sdN+lH~8o=iT&e(y`B&Xe{oC-6aaYRa?0F5 z(7r-l4HqZKPYdxmsgLDKGT%g>2z?hZg><2_+Fnir=|ez&S<%+e0Ts#4v#dyv>Z#8S znD(EMIfY^jK#qblsOkH4&RRXj*6q@DHbB0Sp*pdzRbn8L8n+-2mw0Hfft5s1#IKu| z3TF8=ll9{{6P*bY?$7fBXoJEIrE*t9fQ#6RoNO+K{k zz-=i$n5ywCAin%|BD<~RVBGI%O*%OGZ`PZ+fDRPDVubIt$=0IibXQs*L3cycxt%A> zLQVi=zBFYC#J*da)t!0Eur1ACCa~kZsWT>HbkJ$3J!?-UN&)YW~O?4u9xh+m-D>oVQVe?K)K9+W-1F; zB4usqu*xK}kD2$0o;~K!qSl^M;Ml(2aEHE`>KZqr5`uA-MP)H;jt5aaGx}}1Oo46K z$A$0pT!lx=Ol*MUOO ziH#3q!o{9nw3g$D=18OUrBs|-A53oyx8r#OXtP1(66E+sm4NI{`+OOOVHg1Qxl`Yn zB^Vju!S+wzaVaCKH-p@|kFP+v2{AB1f9J&b>*Hj!`ncKnem3hd#iezp&ov1q_aTPS zdF%QHQpa&s6$0uWlFkb(qjNw*)iyM%c1}tMf(T=#`_-flv;B3qKv* z%0QBv6fG-y2s8a9{G*(UFG;OmW~7+u#*C^h3RC&)f6k1Fr%5d773eF2ULc=PX#DApc#afi zI&o?MHq+B}`{Y@M{SOP3sHm>x$R*{g2!9vn1!>Z!qc0ri1ueq24L;4$MwfY%8{m*=)$+cpkXM+n7BJS$>@8u&{c8owjm>3 zxx5cXSs}FAL^>qn40T80b6GQKG9-HVb;Pk&7zlR)=tA5Yk^ z#jJGnqy46hK9Q)ZLfZ(Q)Vt^KzcJhtKvYJ-2c=*5$J$aPeg+SRS!>5Dc5l$$6P>_M z?~ri2aO%~xBLgr{d`FaV?S8t5TB))HT;{psgJ+5M5#QFab)~VNs?`rNlu414k-OUK zB&U!03yXpc?+0utmL&M=Cly`=LZfi-Q=NM@FnNBwe3HaEk-dx;>Uf_mJL}KTjdusY zv{47)Z?HF@L*c=1HY{jWHwH_@6025Gn#40Sk3a5oiqL-R!FbwkI}V|9)-1>-ozs)z zf$`UOz-`%g1@Z`&=J@+H;sy=CbC1fm{%tD4olK!*Lj37qyE46|s7!@zRaZs|lK;T@ zSIy&}Qv`VGqpP3K)g*;rQZdW$mu$xd&xB1-n+T8~J^u*Pem!j|;{NO-O(yo&ET&eT zP_@bNs_=A=65R+o2y|{pB!5&s1^08C{U+5Vv{z;ibv;J0NV$dDnGx?z&%xFCh%w+V znQJ?twHOfkxK+3PwogJ&PTqc$2vBhs83In~yUtIDX95$Z{V<7}Nk0iJfbkyXGieDx z3bqSsK!M^Jp2giqoo2cihNqh=2BZSB z;T-^M8_uF(bzMFosww43PT%trjIrj#1IFmUt@*NfxbV%0pY!ynAczakv zu!Z2?Z-YhTSE>SQkh}x^3!E71yxV9unZHlsHhzb4aZW!XAfx8oG%IOv?3}$@YDsx{h^IF^u0yz z2-2R}?x)@{DMOcd`Q^8Ca6S#wMOeMDz&A^;yN-HI#X^HgxR$XdD&~6vg(hk4Ul&anq#em&cG3Xx{@LV1~ zuW_SYXD)Yrn9`8uTM)*fEAz7{3P18*^kdo{M-y}ocQ5up7HMd&^{YPvAg53y16)y8 zPdZ&kjGru1HaP^RKuJ?*?l~UQQF@vpqxMzpY^~QxR!@2TzOgsB#p>fJ zlMF(V+L7Kpv_eIqW)xRCm$X+W=<~i8y1TWcWN4R;Dlyj8^qr6NtyO_uzRSL=ZZr0LM7pExCMsVd-R|)5couok!264NKG zXqdh02pMlu@GK%EoaVkro`JI;mHYk`(7qopWve6&37$cKKhqkZ3_jU+OF!oV1-;x{ z_5uvrS`x;6RQp_9Q``Kf=Rp~v%CDzj83-KR5k5y%eQP2-Zk$~dVTSKUr4M%^mTrw2{v4GZjFC9wwR?)L6Z1afh5Jorz=so%;Gk(XlwG zO(Cn!UE~WA&>vWf?W_D1#d1P$X380)Lb%*s(E={ zJjl0#++R$lT;;w+aH9T<_=5-SLnnzRCl1p@(2ak{0X(ByfEn>!5YWTbTs#`txl_#x zw-Q>wUk6BJ0MBLMd=123SQDgB#vXTXHoaY$pgRocNpjCKC-%AVyTl5BIwj!N z06i=mkVogNC~SQOKPQkGsv;UdIO?4CD?d;$POqX3ffVtZ-=pjK&ib6il`ua+*BfJ( z%^VKe4tc8QsC!Do1i-fP-v?4?>Ll>N3Gg}SwmwzCz|I%(Oh48(GX%lM*%qSjT24eO z#Chtv<4}l%p_p&0V*XqKy=jVg`NMi6&>{1uuEL7+Oj?~p@uPIq)IFaSwY8~~Lh(46 zp5D(@_ISH5yWy2{P+5PzsCUN9;G7#JRNkm*&~{QeSAQ}0X4=Fe#Z~xMbpI~`p3Zxt zgGIqxk1BER#U4i738e|I?5N-u80{^6=Z9^>Rn0c#P`gXz*&}^f7ryPw1A<$_F^K9T zLt@zKj4__GSfASr%}*47EOiKs+GAqYjQlR{?9Nio4j>XB_N*URho-0vm(YmGX;{W) zRjYS~iSL)@XXHL1m{|;gc``;jy{s1l@w2*eyT<**=ZmHve7;)1hPC7&yRAUL7UwBR zMZ~1{>`rF_^Nv-Y^BS|*`37q`N?tMeVT!lspKpwPo#CSpcM*K>YxF2LRJg00d@tE+k>RYW?&^Y)~SA4g{RnAdyTXK1|IPsXcyB-I1T@8j;1wBeU|CWCQ z7Q!)6C=e#n24 zfE+z9z%(n_)LRX=r!{*>y$f#TI7Z)REy9r)N9CX6NK=02WO?^j;02ni$Ny+X`{|+m z9MQ(G%6$lim6fCBuj3e}3sdhr!jBNA!300nD55!H0LJviPwiZwW?(Sv16=Q-lXzap z!}OOH3)>5(tMgH4mKf*SS^o)ySSbom-2z8l_FfurhxT{QwcDKIPn^Ad%0%c&($5hX z_Ltz_cPA8oKpwoOvc}sl96jt=u&T>559ySB{xI4hX>z0;_l?hZgc<9(4mY=Tuyc}F z&`FM<73v#?!rzAn6IY0soIACDcZm~3$TFcB&55?Ts}G;n<2|Z$R}+7Sa~@+HmlukhVX zR|#d!R(=M0;ml&y4^%_8UUC_8rOSTqfj2$)d!Lm}1mJ~D!S@oO`Duv_qrDI(Yt&c# zXSmn-vc#2?K&eHb#k&+-aUB(X?RPel@kS3A?qcT=Gte-q6EY{3Or#1?eiXUGsQ%k$ z{To6(5AerxJ~IZ`=}!42Hm)fbDg8ZLIbN%bZV*lW@pv)~!vOK%Xziqc?Z=bZoWGDX z?5lCGJy0r)7y=jrFp|8-&QfN8OCGfGyjaxu#BiRqp9w<`Q^4#31uT@dl(1sWkMB0^ zfK=6T=wZ~k^D7|6qQp#_omJ#(BkUY@&mQeAO0N_4K-Ts}Wdbz;TBLOA%gG~r*%@`!>)hYsGI$=?@uZmOMDS=g}3GNKS!`t<4wS+9Cew&MSR zadh^oT4L!0qRAk>?(n6>&}Smi>fN)gAWCk)*HuRO0-Qn-Q`0lij#yQOz^C2b?sZG4 z50??9sL?gMKBSEHCm3BspFDHJN6eXcitbk*yFXA#Jb&5*i?Uxv2pGWhy4W|hdpXc0 z`WWM}LWsfb&%4Bt5$c_nEK3G?(N6sxZ-Z|*%l{mqOC5&VSH>XFdtL4~qwh9WSD1{~rTF9rNc3y_h)V8q`bjSJ-i#UOF{ zr2Sq7&=E@jpEPzTPGTb<@G!gHpGJdc&L;gduasoIjvwlJKxL@oC0uK923SWu0Zs5T z{h?oXV<0Dw#Z(>Cef!Y&w@`*ueOrDz=AJ%b#Whp9_uDypdQcNB?X-egHba)9sL&P8 z?Z#EVS#xw;A#M4tg;5@m4L;sT>Mz!N2&99PCUe%W6Bl%UV(vTLSnv(a7U9Gt{^3`Lnn~4f4%*!BeS*iZHf8KA9QRBSxOeb|N44^@_t7aL94Z9aAE1yCF{U! zFRA$y5Omz&L>Sb&0;j<4&!Ay-lovSh7ejcE%9h*7pq4i}fpqN1w<*9DsXx7HHM}4% zkxhyq2!iO2!sy*d$I&a@@N!LK5m=l7)x9x)i+DFw9VwFX zvMdqYZn8=S3IDdsx7UTpflr?2p90GO5A07<=v>KDWJs z%~j_Xu9cw?kJLtXao$ZZiT2s;KJPT&a>Dy?w~o{wbn(UP0mEK;TT z5Jn+JVsJns(huk%>0IOsMh^Rz`*^F&0c`p@RTrt}DL1i${o|$tON84la4Kxz*zBzO z7;rhlM~BH?dOWFAPAV2(z=1n?tcOBp&FJJ zF~Dp?qe8v?Et>{4hFWB@nmQ{Fb1rkz$ZX5=*MVduq~E7>7k)BJ$qGi&_^_ce#E!Wp z#s54k0Eme+ky(=qNBHXUW6Mu+lkpbpOSu^2zz;P=6O3nz67I_MrCDj@W_sb3pxs*f zs~2qlOz2*->)RoAvz07x^A#`QnDoI5u z{EqE{voV8J!Pd#QWm8ux9hEXjtWZ-Y+TCR7Yq=9e2699i7!A9?lsO#ToC{yNk} zGYZ!2VX!?0eM3WxS+13f{Zin?uNMqp-q01b<}j@isWjkNa8wI^W?p7j?sRrHIcS|5 znRk+&_uXFb&EPCR^=koaC8elG5=@`$LBA(ZN4<@NJrfO+u!{ zN%Glg1^AOJb&4`SB?5UD32=OnvIzdtnq}gE{-ghx-@usZUmLizr@xBXI#p%B3P(2u zlFq)JbeeK1uva47jBau0qyBpE7Jb1fim&$BH}*DMuOY<+{Ngme-&~v%VmGgeu1SjR z2*V9p*e+dy{1Wq)2k_(!LW4;UR#_^TMH%1Ea(oRJ@87d`IoG3XH`DDmgpDQ(=0B-@ zhJ-|^=*J+REh@Ko_ju)Wh)Nr=w~6Y9>Zg?>vc~gEQ;>`&`BmHpR@eQhCzO{ZmfHD5 zc5zvzBs|pAp)FqyATM}aZ=V!QuqJC?d1m&V3$R$P;v<0`Clc*rxDvf%vph~wZi9x0 zX1$tmUt&Zq!I4?11M`2~&PomPHpRGGd9C9IqOCJig3I+yEF5%Xb!f|304I9rM7N0c z7z+7R5_v=1Y-$4-1gWF1Ub1`HnnH;lkQ*>+Z`24Xh}C4NDv)6BTgmx1x1I1dk}xKc{u2>Ru*b78{h#^$7ppOdsO3CSV?K+zb>?&qJcAQeZM@ z>>jzHT(BMfI}j?RwimRxD7Qz;Kd0(m&0zn^>le-iidUD^w6zu6cd6=L{+P1DyV|7> zS9c6;72DFTo*Y_p5pp4%I{PxedfV8O9k8d6M>9``o_3qrJkN;@s>Y8f3mVtJZbLtN zKl-6!m*GBkFwb%8`>nu>3V7Tm29-mNcjC(ZHP6bCC{G{9E19YNc`Y$#?xZCAA50Cv zHPk9>La5^ zWkm^Kw^^6fxiRA?jjbwG-7JbYnVVWQwst}g*O z3yCmt^bLtQO+gyT2nh#22_FnWpav#3t7QP8dC_FO6y(=Ju>b>!`!EN+`Xv8F?hUr6 zJ%0oC=#epOFx9a610b_rR}494U7EHMzJ3dN__N_g)PDA>**W3*K0$4pT~f+9W3_t2 z+57lI-Tijx_weE)zF*Bzi=kd)z%GQ)rqh~7NO0(8<8c)@qu^Fs%F9w)(I>LgY%}$Z zfHSQR3VvD$hO3O`&kHWes8=!lwcP0HFSh@tN{q-zKbdLdzOaG0@b?5h(XV%rAHGTu z-F9kH#k>S{geB@a@j@2BBdEX`3Ud4|OrS~$k|+$~0y%$X9r2oGgKI^&&e<1}njSVE zO_6z5jeQtu)N%Z#yI`@zITX9>#|fW=O1lQtLAC`*3N&I8PBDvj-It6?v;PJxrecr8 z$GIBzZN6|YWs9uZ*Or0QH!_T=vGj|N*Rm$?kng(C)sblSnL<161;>P#4CZ|cAq>Jr zTA1OtS`kim|Ne@DYuAC$;FrAlD;XFww(W>T4#>`W@*B77EeR_@?upggRpcJgws_;l zWfyp;B-8YHp^<;(o^izY3Fk6!n3og8mXgT}kzJr<8Rn)VAvvf<>#-IX3e*jV--B&@96-SRcd0^cgIY=YEV#M{ohc~1E-pA1Q6BM0%j8T&o z9RzY1mtCM8qEBHR3P-z>2puTfRm~zplXD4#H^zScS4$pW8ZTrMl%%dn8(7WuV|Fxu zkH`YGIQtDOEYywm7xphYRMQgT1CrD$DNaU1X3Xm;Y9qB*SA0-h$s=X;GF!GJt94Q) zkR)~<%}$x!T;BisFCPZX6q?|OT2W4RJQIfP56Hktm5K52(5cg1;UO-=K^Qm5eRh{XQWx=$DaFzG)A+4`RD;!g7^SotO+v z8?I{X@w5LSi6+JXTFq-p;r<7U;ULGwhuXDF8+nfkxl zpFH&a?hN#mRO)s40q}prO$nFxR#d>MlQ!KMRI2djBOE)zhPR|5UT}P(n`%Zw6C)tK zo2I>6hAAlY($qR8zn+?P@5F=qH>(4vs^gxyLNQVISv&dxFp3G(5jhT~ zg?&OB;SG~R7YmViuQtu`BOrhE9RmF84Z5Y27eA3miQt{O(omd)v8eKS3JcHhz-~>v zEl+LsiB3!7AnekSfegwaYw&tW5Q)=)U)=l)$B-hJmG3_>O9G6PqY&q zhboC=rf+jtKUUeFTos^DNaA8E3k9EdBTKJ_izd$}p@q((D6lZd-K}@|f(kD$QXlmN z4G-Jf`4^}dc()msme=jc-}Cyta&*xd2CcAzUwsjB>Sc@gGjxV>5A(R0o|LgtTVPOP zq#U&}?24ukTR26z$AmMuIn+PEAYK%pxW1S#!!p-<6d(D}iuKeUK8gLNh=gx3V{_;k zDMARJ0xA|6m7gd39c;e+K(sU3t%$JIh1$x1;yQrfe|j7n~DGPT4lB>um6&L<-Ons4!XO86o3FJFkxX~)&lZ3*iU$OvzsFH zGWrXA7`JoJ%@B>zQFpZyY!s@&zmrtmj{K-)4M)4)*b|EcUyLD__6 z+;TIT7GyZpvusk4D79K^L#n1^SD6z^K&R z)57;7X`g?kM}!4V+XI6L&?n_^w75oq^+67dpdHs@wI(Y*O19%Hxs4vDPGo&HO+3e- z)uu6TsOFo{%;;+$#&D2X5&!@^|uOMl_>#K2EF-@o&@mj(Z;0Jtt_PjLjKX(8ny z*NS}x#;Bd|)D-=vHk~*pdIUcSaI~|^9kt_4dRg5Lva)aE;xAK~CJl#hm;5ZGp6JKb z-hc_Hy>%Sk2*9g}7Ju(BRD9a-zsGfY;!9@{To|FXJ;`gdbflLPTOXjulB@Yuy-U{B zP8Lq!)@Mq&l(f@cO$q8-uww~$(u^kV7aH?1@38;;1->8s+xu-aYLedt$Uy=B34S2X z(?f@d_}+A}1+bT*^ZRX`)hqG3@u28Uw$yDqk1(Usnr+BJ<8y0MBnp@+@K1{iwj`5QAyzV)49ad9jaxDsD=DMgNQ+X zYQMT%>8d9v#9LI9i;Gm0zA7z?mw9ktWo|eZFmvc3FLBr}Eck&lXDf0~!YZ1-ITUwZ zEMnWkqHuALceKTVE(JQ?vnS2W|%s3 zLEUpX5EQ-0kknG|HS!-E^R3}p=tLn<&<-7%=qs*rdEvCf*Qv=__-RrzI77P~2dBoR zpS6BSb1+HhX5EwO7IQ|G)m%`HG0<-R87gMd+T@_stT^Bw3#)6V`Arz;HRLdSWwfh9 zI^s7ZmG1_8-qOFeL^3G^p+t)5RZLR|&@x$oJ0RZJhd8@_=qz)VA=T)5xm3HF-rYV` zr_YB+@j#q#?yawq6-*RuI!!Iz<}oqhu5d|@*34z-q)HPm(HNvrdw9Ie>A{i26iBVL z{~LCuJoY$gYupO21W;O*Jp>*WdpxhEZtrh?mh4OZV#uM#ES9@E7E*0TWIx4fNP8!w zWm*Gm;w49y1WRXNajE2)&MsD`w3D99Exch*N>)1)Nalb$Ma&pneMEaQN?f~~;IqOra0gp5d2 z^@;P)6B5BW&kG;*|3klMwv;Fc*E?00#X`+g(gob^SSz$&U7bD3BXuYq?fWQOuWsfs z1Pc_OT{#?-8=Xk_AcC$REL)q_uf~DQrn=#TNKTdbZ7-!g_l^gsTgUca>UNZ?locDG z7eTeVjBupJ`8KM5(nzIbuH0H&97}T3IolRal^~0d@1o>!C5<%e0a^GiV~Le>)cqKE zqf;||ts>b@vZiskl|0oD!~P8W$C!=+dTY4=y7aEj`2ey;Dv&Z^Ep&$F;HIYago33} zAh&Hp&@~a?1>;&5aguKh1o?Nu$Mr{`EcTPc1uT&G_NOy z!6BI|w~v0+mQLGqzwYA=eU;og`@U{TG;Say-#>How4^j`KTrDFt_I1tkdv~FS{+1O zyDx4}I^9ROi6jv@8-EPiP92FRudK2N{tic(GRd*~K`>GsZ;&X%lgYw*GImqHay1T# zRl}%HjZcpuF6^d!;xJ{(V?$@JYxHttG2oOH+H?Y*3)m5$(K5pDZhzWfQZ8Tza7fHv zs*J^HKhrGy2wMie04@OJp$|#+FFTKsmyjR4ipOS-Xx_q1#xcN{*k1DD#mL|P$b+JgKGI`fVUMJPmqyF2~T&Lcs9@n5NN zSY|Tjyp*M2l9Z_DY)$ZZ7xR(JeK+YPgnGR~;<3aTru5}TW){VP4d`AtyIqQJ<49F1 zsZR23tNYAyCHUsz`mgwoditIpe2Q%t1QV{V#B0Q)kg~M6X3FUS=N|@6i5b|l_Oo;P|W@mSOGTlpeZ4}*+Ur45z`sB zpLZRSjJnTJI}T!Gf8VNuo;D_3XX@j*C6#5!65EgWYR?@OEYlX+y)jv|)9sd2Nqp~9 zQfBuk!%g0Ebf^a{g&`|MkOJMSOG@2QWqL(YjT6?Xk(aH{7T+vl1#@hR4!KD#C@Y1T z-Pk~6i%?2tD;Nxm2L#YN@-yDgQi+d2Mpz@ml39c@KUfodO)pKAq2NTZE8+fjU(zO#b zSAo8V=6&jnh1QVam3`!A*w#aqM%Hs2<1$EOo6`I?`Mn=2DlJuZVDR!Fa;J`hGEwnZ z#%9@l`tPyjVufv!@K$hSQt8gQo1%GFf8Wm5huF}KzoKZ1yTY}!+XOjhH<6a41x#^F zkN{F0qdUoJ+yQIU6HO?pL08Iw{SHewYOSBqKU`LImLp|4P;Y4s1K>%QcWnDY=&<-_epLQcvCMTtTKb$ShaNDkPC(O&T@9J?R~e219s-e2v=x{*g*+j zQ8D$)L5Kgnr>_xE$3JUgt%tpsvVCic;`XFuho6%+`$(~u$qEh@nN1Rnk+SH_VCK*(5K$^`K~dj($%MiYNoTbQPC61@(&)Z)T$H0|kX=7@fPk4H> zO*Bw=0|uA>o9 z5+iOr0Z2Sgfswyc)_US6fD-#mh}~qk>wEjpQo-0a%2sVQ21|9&H^bv%n`g>hMt?)2 zUHll;zTvQCKD89qElA)HnnKS>ry^YxO!nF4)E!de_@04G1gE_y|M>aiVa6TugAlmF z*R+AJw%*Q`Z>+9daYUK+ftTw$_}AShNJsG&op#?KWyx}!F4EgZ15xpO;(Zg}Y2-~6 zCzX1xj&cu&&hTy@bFY*`O1vT%$$#DgRTr}n7BfE7d2WlY$- zt#6SRLHweo5A7e$gL{yj2qE2!ypsRN{Q1W&n1rG>3W84Ee|3R6&V?+fb_V?F(o8`m znf7>vW4v}iD_Dc)Yd2bwL`{90Ge14RpZTwL&LcaGa$KBi_u#oQXEUvvRpIA zt18HpZQI0#MsTLNC$dytUZ$b`=_MIkoH1W;F%CWmh(w=>*)@bc>nd!07rpy`xcu6` z%J1oa3b<;)L`;Js0Y0p(l`_Ovg6g&+i+-Et=-Py&<0tckUc(`-8nGJnga@JNHzoQ( zdaEH}lc&cK60;S2f`I!cSY4nAT|*$tSncVVuE6JkqSbNARnTg2lnrE;eia}r_)f4x zRNJ`KyPO%WSoOD!mI2d9mF%AnOLW}cLAMzS9YgZ>`DadbU8mIAe5`z85NA1eec$jQLiG^5-;4yg0*gXytTW%p$@iEw7Qj1`*PCaX;;!hC zY0^C)Q?Dkvguq_;S`2)?pE?X#^CFT4yfFh>eY{dqJ{A{my-FCKW(mKJBX<11Vsd`& z*aBU@nZ$!-GL&!!O)af=B!4Pn+G5K= z#19@$fc~p6p?4}~z1l#WLx@a3L@?Nki-!LX`Dh~tYYsoKzaT?@Mt4^x0dae-8P43+ zc>_LyECG!`QzMKB(-qoIcq*+BKLEPxAd{!A@D_{`lk2IBvN765%4E(f9t{d>Uy|vJ znu#vn4T2rx%ud+T4>=~sAw#i`Vql@k(5>*-QsgM%C^6)`7Qk(R{vGu%OWQ~C**!Hn zMk|`h!A=atzc}&n1s5N^?dMhAuWjmcV)MRyRvtVf8r+;vCF0|xh>G(UbQiq{|8v&Fa$d!AEQ-t12Hl1YUUt~A@sfvShsLOj zPD+?Rjijfkx7LV3>xzC#4psJ%>I7FP}ooVks#ds z09jGM;b+akEmq^{Yqm;jycID$yf`nlvCL0$pSarL_J^AdgYj6EYwdoTS%`)e;mm!s z!t|tmzLw~0>vI1GXh`dXuJl4zMT6eE<#MVKx2B5iOezk79;|M_rx5gpY|}?}Ec>4e z>N>$xxzAv(ObKh(3YSBwooO;g5oR{((Mitpx4eR*eed34yc?Pt9(tQ^a5}9JiG<%3 zEsr3^qREW+Ryb;-Iq9nfW@E$yMylQBQxk(HUzA7sG{j0}e^h>;Sa%Ou&XG5Tv(S}! ze`^}x=H!JrJarTfz64`Nek5CVLGI|e-*xLJS((k`>LVQQ=^$x{Abr+P41Ze)V2~{h3kWVI41}0Q_4fsK1eCac5_g?Xj<1NSU24N z_5ChhUIo6wTa}}LB~RDXsu%N%Nc62IQw!j(*dWP@h&xa7j9#=h&VT{9WwE22X#PCX1FXt6YbW^kqcGAMhS}P1`Y| zJ;|7n?YDY}E94YHEQG_@qlNaooKOkf7Dqsz!=c*Xx)s?YBeqG}>6(=lG?25W04$5) zC?Im?NuO0+V_a2Lp=<&x#|^9bcRK&LGQKez|G4dK^*1$7v%U@NBeMstc2R#T{4ws^ zhVtb2-$04pUl!|=HS6hT+frQE-=Rmu3(pCDN(UVm2awDt4XpXVXxwDJB{_C7$HXY; zA8_9mE3=;`kn1(Di=1OJUBhHh#XeYXdOCowkcB3?a!1b6dD4?)3E74rKQF!>{dIf0 z4vqVeF68P8QL6f+i~c(jtxU{U>ZYx8*XX>wHZefi6Hk{^9;%9aoHg|dVdsbZg*H)p zIzj5#KlZhE`q?pFLC-AEm>nARwa&!-??1(1$ED<4tQUi6U^nlX==r~SX z(JND5oI~^fBp-h~q7uJ1uTD>#9_tO!yHsRPHE+Ka_75z$pSQyJjrt?jQHfJYZ!f%+ zKh+==lNo!V^ts*FSN?t5msMe<8=^c7oLA#;E&5cil~5} zsZc|FkinD|&3#k^8UtbZ?Uvhb)VOLVUhMD>(NZ~O@^)b|$4dhtL&AueI@CSku83Y1 zGgmv|LFC#H(UjgkGeuOgBFFoTR9swaPt5)<3JtuH=%p_%=Z+%5VwRVHC&Lsmz&5ya zAQ9*~@+Br&&QmB^a?%Nn%=dQ(LQvru(|%1?ioqdNbNyYB3`9T9@3j`h^b&H)x*Bi_ zWY!*F)tsJ1)-NOLo&zw802EUoEY>@EM_IxmCu!t%FBK+G?x)bZ*11meCar6Z#VX@p zcb9yB`3`=AV>yQ*bq;E_Tsb6H4svCYu2kgaQ$sYgYr7m<5l*KyYN%$C z+39{Np@zI)XL+t@*2jaZ!!?W64`OtJ`0}^|3F6QrGc&|{+$Mz5pmev1%&oYI&9MUa zUn7IL2jvLkhPyKX=@nFaRz&VM863ed`RPU9APwEE+MZ6-uzcYgbnK|2wEzBtD8I~l zb-`K)@~$#5tCe!G!WB$2FY=a8Wi@kPXL;UUfDq6#KT7oOW!5)u{tsYgSI2XQQ zUMBuA2pUdcy7XwU5HMeb6?b@$<>({n`;O+7FGMs?C?V4z zbfV*+!=a3*R*!sy*o&P_YXBto#oUZ+&k#w*Pr}YXoH)~sNHLTW9g)}ub96E8WI-WA zQOlei=e2R@w%9Iicru$3x`_W7wwbWOj$DEm@ zWf`Ff(d<8gupwfZl`>H+tDKPYjhadB49$ZTejiZ1h`jrOf+8EYJDah!6l>C(acKCP9qS>ZE3_~QfPU^i0Wvo#slMO4e1Qk!01DEO#Ma0e*ugG+B zXn@tXDK0znF^bmPu-4D*%ZQ$@rE-r2Lq!({j+9IRZ^7G*vb;kYOD> z1cP~DGz?+4@VxJ8pm|T_#OX3hq@lkg7Eg+-7AMLY$$CE(MADAEp^?0Lk(_Fe3f>*I%p7Uw|`iFx=+3qQEvmRW-=TbNw z29i&)BPo2SdQ7clW#b=t?g)yZOQPksMakpkpqkw6+&cj=4?CoS#`hYQ_v2$yy&SGr zhel|n2Z61&Ya%DNd^01&Q1q3X?WfF8sV=$Ol#!nKDWb7%X9=3sT*pq=xo4Ry81_GV zl+(s1DiwdKU;UKGILzSd&`n4H3=C>k*Y2s>pz#~KdkZu}6Bkl7X#2fj@|VR$t`Khu z75Xo53c7Yw;-&wXw&Kul&$f$^Mo83G3N+)soX#;Pq3@3Ptw)&d=ueM@45(29J}wpQ|!XSwU8< zsuXbKD7f{jLg7Ts9J}jCIS1|D{ozN;iNN@#{tPfJ!Wj37`RwdAdh>-MU6#~~!W5l> zYO{?9TmE`-?~il+Zpa~bGgU`}d5M}K@E^NXy7T?Jx41#f?%VO9db?y9cN=lJk5j=K z=lEtw_s-r0b;^Z$^xr3nSrk?VZ(wa z%zc!SYj?ZvFZ?_JK)-LOHTnhMsKkby3iK5%t|DUK0uRMEojHoIQX)sPy+bDAC3115 zNvQ=P`B}8wRHEC#=UV3Q}Pg`f(MF|j(JLMSB=E!yr*2D1R;q6Z^kGpAkJwS&ZV=A2n-Nk}0Z zV;n)=($ObLmS4!jLH}SN2#tTg(Vw*{gt^z;xbLhZGG`*d7X73Yf73py^VmMPAj@tJ zT&KIIFZ#e50BM%OXyewl zJM(nAEs*z&clXw2w2_4}!~3@5PbNuT>q1GE@W^z_`I9@2l8y5U2OU#eZY~)s=v^tC=$FSKWP2r& z!6lBu5euaCxwx&LDx9)29P@f5yRL?D*^u5iFIkoJ6-Fge7@Bjdwnisk zdIh5RewpXiH$w8;s6RQ}mC#Y~hjqr@7;%*(C}CbZ4Vyi4Gy-du!|}X$OiMMcq0#~K z?u+$Z=aHX@>3cas@2q6M_NM;>&m7a^h<~IB;Bv>;Hf2sN^}fEd(bFDHc?>Lq6@u^j zRA2MajvSO`sVZswpeCVMyV>&rX%+M4&GBDar9V1V`2>-y2cE*}aGl#XQuW+0RQp#v zlDJ85*(N6r>c%ST_Vb)>)wQM+DBiQB6h#AR?QDvCP(h-W7KG%Yc*D#bkXcG7U=IBX zKMl%28JXgG0HLBVIDJCY7%`=O>!UJS2B_ctyXj;iwE?x~Fg^K%?eG9dGeEBC+A_6X zC58gZziPLNUWJ76-`k{!%T?o@8v0YPyQ@@(1f+>lyfLkCf9K30VDmN3zKt;0r8o^xu*${!6X zhYe)4b7{TCW;b-M?xx0y77R}5gj*;(&000W)EdRUK0wXEQ9=j#Tajt$dsb(fMKVY)^d@7<_)w(ogNo2( zCPi$?lj9{-cId~krtC}&N>cu-#s^sBF;dL?GQRP?(;wL>TGB3gjTiUPU%G%qC9(qQ{YP4KmVo}&_Hh73SsD#oo*na5RAau9GBA-?Z zmIPgXvc12z2%mEfyC~*yIZhtDUdc!g1=>2hV=NJ;kgNO7O{flwD=>*@*hz6q>TK!B z_Tcb-;U3yn$S%{>7}Muu9n7{YCPne=){AZPY2W3g3C1-2GWzvVgpH__neB%U`aaKs zksEo@MWupAKXImH=K1l)$AMz#yj#nbNJs2$Cq{I~!c{*P0Bv%8iA`H0I7%Fmitmd1 zODl0k)nhxZm)EW=fcJf~rbg0ybnv|0Mv^c*svpR@9bdWM-^4rp{ff_$M?LPe0qIS& zLTP$O8kWYpJbPAeCUtB?`NDuC~g=Uv;;Rc zieVuU(Iu5f_2|OuK3m2mwXa)u2mTWfuFzKO;KwL-$P<}g%PszNPSCV#GG&qX zX%bBqhnc`FHCk)APv}GIzZ=Qk^v;VI;g?B@4dQfq^D}=x6p%qQbgeRx)F!P|cYJ8; zB)1;v+%*m_YSyN43|>&dUQm9;0dV@m=SJ`zWp+;ERL0ef7dF|y;MyoA824b3Mm=40 zEKfA&shSs?17x;DBf{K&w&UoNrprVdS!r|jLDI=%YT~IB)}-8dHX{sQR1yN`zt9QE zuut?1aw5$MNIg=Zgm|HIGvYk#!z#;QaaB^qSFwb%77{DWaMZ{sNG-WVbJ5)i)kaQy z_=;WbYhtfI)#lo?sMa@Ql4#bZC<8`CuMeP$SN^Dg@kYh?>CITXOdF&PxQbTPP6BSg zy@V(XClDnr%5U%n6OQrv!qDn6Fq8Bokz9j-677GYWZlX-nrJj+{)9zCj9$q>H9Ylqhnw6?;Y=@3jl8y z(8@|aM>u={yaVAp)F14OqzlvAO4-}EcZci1jk~bO);H8X>z%pDdfzMDTW2M@Cw_u% z@8c`wMYHBMn1f6kUR{@NRiNmL^00{^*{nhh&6gT@7#PFIs@#h&m`#QlD_mU}AmSJh z@bt^RMr5pWD8P_QvT-RRX$Pw?#RWFog(?GEJ2Km=%*A6ljAw zSbp?zxS1TBZfI{q%p-_w!QYaMH>?(;TtODJls^nVm3^#eV5JjTL4=DxlDW%33sB^u z(W4#~faZXDkCp<)>a?L_lF^DZnruOf{x9TFL|vwFjH zLu!A~vlbgxx#N7pzXh2iD2@^{v9C^84=Q3wFe6w(Q<|Sc#r4i%RxcX zNjK(nrh$YkRHnuj4xruZ^E%gR=HGXCiS&()Amc`968#gphI&{W>FTkc`s>aPP3# zB^iLknyD8+H*O}8PcatvY08arW2%+k4R{iSy2^W25HBb)6-0v*%p`?YTcnRAne8w% z%$t3PR+1bB?m)@Tbs#lwA~|TpygMnEoS(4tl9QOZ8g}~+76~Je2mVgLjSE(;UUb|8 zVDyBrR=kl=hU*8BZtml#UYn)ZuiSQI*K61azm)tEcKS%dY{7VwDefW7u$ENXFXD@@~M9fXUC!4G-=Mw20uUcCHQrww5_&p0nJP*x2jCzrtl zZNH|b>AGQr+)>BAX=1HW44@8RP7$hUr{H%euIG!cHkj{+(TAs%6N$xEZCZH<-3o64 zM;k6XqQEF}u{RJz%n`S2C&cG{>`jqTQ{^`7-+jzifzb19!@(bYpoa}&hE;wvha@5AJ)ucn7*H-ksoiCq^?5?i4fqqBlWr7~)B5mX1Quns-0U ziLHLjIZQwvkZ}n@QxF$wLqaJls*hOJyi~Adm~T+S>CZa1U!)#%VH6PNE9+1-4cWAo!dBsYpm4YZ`G7LT2_?q=E!eV%;e>Rm0QOJWA|9V z2bG`}_!oH2TYc2o0flk>3OghlNlb3REnpx+I*Fl)#`#ceL)D)h>U@`M|4P7aw-D~G zX(+iQ>(0WltSHu-@#+jR=)V+;cRN{T7p+!toSVg24$2H}wt_J|;n0iNNlNAAdMS#J zq^QIGQiDSadWdwTnyUT&S3$u$L>^2E(0AwlBHn&B*fAd|$VX!d5ncYk z7vZ)cixgn>r;oBf4_0(OmPE*HK1o3SZu542aZ7GDJHgA}&V1WW#w8UYyyqrPn`v9? z>r2kBXR(RKfeF1#!#GejIB;x+w94#E-W-VJTH|$rEqevhjdwJ(<~2l+ZK`Yw_=kNP zLn+W>Mv5_#<*%&$o_UdGC{3|c?ht6^qyMyvF9cz(-xv2m`~-tNJonb2w>zM=HZSlh z7^mnIa*zNo4owQheS{@5h@mN6F_SicL)t=S8jmim?7jBu7N1`wEx1oh@$s&yIqL-f z=hycF&DD*Fs_(JbK63mGhDx+At4qTRZJY?Q29S|%9C?}&9YZQMmCK8s;;M0AWuRcf zxs1;^is18*dUhYRQ5Vj~ESOF76y4H<;zAi=TeA)|88XlCW(s54AvGzU-kd!`CBE^s z)r%|RlXX>>6en*UBFfHT6+uY}5*Z^3v4Kw8Czzje^e8!Ho@xzr>dshZ4l#eWdAXZI zg}8&gr?|N05Xk-jBQjcgm-?Ae#T5-I|;LmcoQe7ner<_Y@s#j5IjFS#uN zI-#uQ{ztv8KL3i#wQWzpdgy*}I2yXYax4A*g?ZCqacGxtQHhU^l>FyUDodQPJ->P# z?G<}NJE@r%9bY-I7@wgXKIFXdV6pyLkN#(dX`=T>nWUt%&}u95qz$hl)yZ7F>;V7k z`?6_Tnfu#VG0Wi0rR<7jXkOO(T}{l=RO>3z?}c>oA~-DYm`?y=;a;geu`utvWeA4r zY~#<{XUy&LsBxeVF_o!;B2T|pVaAnqCn0I;M7yqmFeT`W{MF}~c|O6!dHUKU=ybv* z(n|qCrpqHjKJiD@n*xd8s3LI`$ROQ$(<#x{wnGD2wiCh{P(}%hl0cV-b$cJ7HDg0E zzZu?7mQB2_zg?Zy;BcNXRkF|#a;u4WJPX;eZ!!lvGK+EqVJl}lg^PzUH^3E;)@}w^ zt#sP;Owh=ik;a!r#F^NA=a(;E=BTT+&CLG_>5PxO`$ZzmVi7_~_vH5YiSYX@+6B4t z8fV|fuEnB-Lhvh5GItVPW*d+&EbnonKWrx; zf3@7=V$P324#1{oEOq4KvaOuqF;qQ?AiTWzjT<5cDT&oWx)|%KX(4~|t_#9D3!u}d zkUsIX#%(bKF5=(q^L^&GJ*8$cYIF$dP={K|?^WL$iNdcH-ecIvB4(pGKd0&bI0v;- z>@q)xS@B*C2IS$Ow@x3aZFdm$Up-) zs@0jleQD=*X9Y3o^!icOtW=xl%DZ)Yck83|eGZ=72 zDodL7T}xBPj7PrDna&c0q)Ia+rgi>jYIB5ovjhKyCJYbqf4|i39oG8 z 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

-XxvbbU*s+hmR!il} z>fvJFV?CxiBTBWCOzBlv!)k-Z4!wpp_Cm`k4VLJ2mZl*5o|t%~v@shf!V8r21+;ejJO z+S+(iDy#i)9ILQb`1qX#AZ#q*l_Ts8Dk-g_6tMf;#QQ)~VEaTW>|HbSHNtjr6YugJHm_J>*Q0k-(POd3(w;6o{{Y(v=GdKVJhbXI*;wg|xgsR^r1Z4l zn^Js5!TU3FzA@2>%kKOHW~lRz*)8&~1csNTB6#YcMO_K*B@Z%$6qZ!5cd&?ek@~n< zX$o6v{r651QVS3O@Px6nH*F_6pDrn;@BuZPsZdSIZggOh;66q>Z1vJ(p%Wq_S<=d9 zP}?Ag`J|K!bW>SsulPh@`E(Wi&W?hv=8HaZL&LbQH7tG-FE6xOcxrbdVFFM=SbMSO znJW1FLDnPMhCT=)8Tt0H<3%J~4ap5;K(mD?Ea25gBf)h5wb`#g{l>Gbm^ve87dr+m zqClJ6jV8Fd7YyPf<>WradF?aNbng}DaAOenUh&TMk6f11JIt7=OtzP`&?Q?jO*lG@ z%0zmv?vae~XP|3mXeSzJj${YYpyNFT%AXrCY>x(D$!|wSO1<0`K1EUZ?&A)!-trBj zYYbYj{Mdo}bE(34L}TBKQP^GCFzbU%%fs0D)?JzUN~4JY(Gga9cKXc*q`m55>K`6t zOwSc7Ld4p^0%MUEhSAEH#W{yfJqFo&K! z6k9Lsupx?w`MDjrSXY8L$uy>l)+Frc@~P9!l6&Gbq9uD7ouN6*xz@?TuC(ViVM>bU zn|`e2GY|P?0N-`Wxu^v`1LKel+llNb_A$r+i>3Sc9VD|DyzByYlpFG^uH_H`Re&P$({*nCMFQH zX)9*pGlzN(IrI_T6{})BGSCgH#BSaQe1{CecSMJse$@?UduKgS6>Z9giva41$3Bgi zDs^e#!yQ@V!&GH>9U~pIkIz1CIeyGmWF?y~T)x~AqcU5q&V47~px}8rTYSb;!M%qj zAUk4?{Art@a!m;xTnVlpx}s&$Y=NntLatUmN6aT5ETuw6do~IQGdIbdzaIaNv&W>PmtXM8akzoOfEtS9DW8u$l>djl_YR7xi`sn2IVln(=O7{?IW{?G1VoV>Bq%wG zG$06)ny3;R0SS_`C=!&6fFuFQIZF-=9q#GI_nq&XxpS+gYNl#t>i$nvbN1PLuk}3Z zx7Mi|AbE6hdi%ZYR3=t4Qp1~*7%RDE{B&(iL3McH!^fDaDq>h(@1Ap)2GGRYza8hs zA-ZZcRSdSX6jC#NIf6cCjdKmTQkH5cTqCwbw~SHDhQTFkT=pot(F0nAwoY|#sFAc1 zqviyYwimsmvB&Y8pNRQ-XARvG06G0~dEPMKJ4yLiJ&EzupI^#o=9GLVS-YKT|EsoM z0?6n-(vV_I2~nz47I~lL2cZi%|E7M^eI0Kqu&EP)LFfE|`31B(-RfeVo#l`cMn@%8 zR@cRjvY_iDp%^p)20R^i)S#x%*LM$K?JcEAlS&pzuFHDH1h~mFt_Hlu zjqzroX9MedpS9FhW;YH!#hiip0k*rJ85q|mjm(PbueJ;paV+Jr_C9XV>b5h7G74yA395AxCYte6RAM zsq98~>-{68&y9kYTP{RjOL_t<&S;&N&-<(pu}?cZs)*y%FB!{vO9gpNDm9frXw~XaA9e0kMK*2;VI>;KFnUv*GixBP|}7TT2oJt#BZ>z{jn? z#&`=iMk0#3S!=m#>WCa~tV5^XGNlZ~Jd&a=b^l>BAW*R$##zFtq5bwxM=tmdNk&R` z+m4IE+ULh~RD909uBQu_M|u1NyaWL*#dggt@G2|t@{8b%0_W4qkhh`ad6G5{m{ebi zg@5FC^-xt%B|Wz%X{q5%7I_ii8U(J>Y<;UTG%KCHgXf$1ezqKOvviifXev&lp?@-= z5g$U!CMo1IT>fE za!$^`+*eK~2f_Y2^0hy5JEz+kjvY~l!9eI3#L z+7CaTz$d5VXuv!B+Z_Q9NYf?L`Wt7@57Siq-odNTM0G@|;1lq*?>JHC)NVI`C%LeK zMZvX^=B<1vG*86EeaQT}+$swED*zz0y!Z{aE&S@Gm0qzt1rFt2#u`rR2zR8GSuG4$4iQiDaUUH5O0L)n}g zWpWM8d3OJJIPd*fXL}qr2|7&IFz%6s%SE`{Y zBP%W9{(drg^P={l1RSF%pY5rGH1HU%pmHn_VjyX0`PY^x--O9(EV=V~wvi%+iaUxU zkrEA_r-ePByc>~ZRpGOLQM- zcUal1H@37$;-=yBde=~*8IpODQ(k1ksS+fOz6t+^8mgCD;DhMfToJrffu700ljM=Y zd4UXzS{?3t(7nFCJYjaQPaK!@y#R;X_U67D#f|K|H&#(t0%7LyB^%OeVscH2x8@ld zJd;q6}f6bV}`j%6AIS_{VAOa4sFv**756L zARhWxE#~fg+gd0&XT+6CZtvz|hL54{)8@+&sR5a9B6yqvX^a%xvtcwSK`{B0Fiq6i zn#F#%vzvU#@8w8l4S z`M@WXwV&MZwwIL9d5slf2%7*=3FNtvVxr8o3rj0f{h-x(kSOvKi}Z-pdpxZ~C7%pY z%8*H-fS5a-l}ISoZ8@T5$y51qoha%jbp^ntanzV;)k01qZr#zt{M(o-8~qr)AUpiSJ-YzC?iK_MG+Y?YK1@!x&eGWexbb(m;CFF{5cyz?t5T{ULK(@Tj}lRpXqdw zs5#V}>13CsQ*L%i6GAS(c75p6lwa2DqYxcUNTG`~c%ycQ4<$8P0Z$3n^*juDf=UrhvtQ^LNIqe%EnH7LBtdOChAvIe#K`zhF(Y0-1 z-XUsDr^u)Yqe2c;Lfl6o-^%H|jzZ(=H)3>k8iw; z{G))v@z+pVaIief>+iqt#Xo=J&skW!5Iu-aDWW)gATzne8L`>@@pm&-rb!*R#fZdX zgwN1w@5k3ue#Wnv%bZzoWvw0!801yFEJp&}6q|rcQ0}wQ9$j=$fL_0G@K0EHBLrm5 z^9OMtDP%w}kF`uGy+fCd?zd3yM^fJ(|1%4Kt*tNWa@;?ajMzn&*r)X9qQU58!~D9Y zpEx~fy5kICkgnn(T>JE4QU31(Cz=n}fhq2|geUq}w}pO{0g7}q5lj}ZbYmwd892>R z+SGCP%(D}32N`~zrIsc6(u+ED?>Nd|h6HX9Sv|?-I5@*|p5W~_lVkO&3#|iPXb(o;(@LAC?ezE;K_v;zzrk?Qp@gSuXR z!;2qVKR0hc`);_I>6sNkw<@U)&#oK&)_Kl!BwrxoFeAH~005a;sURf{C5h7l;ElEu zkA;c4c&2jVFX^vxAn(MfiFxn?O1cvMl34Ms7jWRvp1@GVkp64X#gf|tJzdGDF5T@z zer^TM1Y2dbKoN3@uZiKQvmfb2?jRi;6kg%Y&X%D^UFx4Z)8> z$}B;^ay|u~M)|ln5yVxKg!5^2Dv$6ixNsymND|^l8z_BSi_%$fOi2WHM?<9Us@X}C zBm*CmMtcR&UTolw#ia)>KZ&5k0#r#+S?d^z!mRkNnw(|AA?2?kOxTimfaP@vX30J{ zT7q;hCxJ34g{^p4SH({A*5n*6L$BRB>gY+I>c98&Wz%zr_`BlL;Ro(u<*}L87q@C? zvH`2}g!1k%5Hw^m@+kkNWT8dls%Rg}FtYiB84~fflhxd&Kem>Vic0x$|HGyyZDRCE z8GJpiOAKDZ{2d(MmcJT24J>t&R13^e`L?Vw>h`;CQ+(!G0;{5rIlq@7(xm)j{}Y|c zp~XVmauamk?-X|I$h71hoPx1%(HY?CJa?*RqHo$Z-^A09v-9Os#)izOAztU>7WeDH z?BCX3MsiS_>F5YY7HysA)iMn=kgxU3jlPyThOr9^>Idzvp2K^53JT%wVLgU5#qmJq z@*1>Ibl%Uk81~9cKM!Rill8Bu3ig8!hnBY+H_zf}vUjie^WdyU2?RquT*cLlCdqRX zBQ3_1PYJ#=|EchH5{F%z@hm?6%-e01UfVGM27HK7WETa_4a`-|Kl=+sK>4mX1$=uC z9r;%0u_IeKkpUG|t4DsFc}e%fU*SC{+ldo1cu@XC5SGk$_hreK6t5RnnVE##2AXIM zc71pg{P|?(ypQ$8LkEK^Q6v|A*J(v@1V~mzUWc_Ng5xyf%zIkH$(`Jj;UZdwJrO3o zt*D4|PV8x?Uv1|~SK4cr`gYuj>oXpy3hK5r4P)gTOC2~j)pE@366xgcb-KET(`9FF za^(!{BctfBie4b#bw|;wpkmeS*#%{>*9J5J$210LpaT*VU8aMHPF5%sVrA9&o%gO9 zMG8r3v_o61lz~so!w_biGCW7I!n|$z@#7VOl3>@#E>)!aatrIkK@!2?2A$_?p9!*-TwrAhf;b?QZzV?Gxpy*Xs(t){&$+7|ply0Iqne2RH2gqct|9ItwRNS#gtq zcM7#R0*Yj%z7Fm-y0g<}4dl1jRIt6=jqoRW7xSnDuumlUJE?YTJ!c&^FB(CG2oLX^ zrzyr!DTKMd9m~8J7MmNIJBv`_S#x6sKVcoNp-!_azgLfkrVf&R_pE7{!_Ugx|o7m!u#InV=M z%7jjl1rsy=h( zCO684*JbLx;IJp0s{W*&ysRFCHqO3U%X95g#!-R0M&tDEOA%;wS_P}etD?Sl6k!fU z3{5DpHLhfOGn_h$sfZnw5D8y6x5E*aZ##L13~thVE3}e#89G9sEIIAbJG$}ak7|lg zu*F$M6J&GjLL?e}hwOFcBsh;X*R}TWL}NdR260AVPcmNU9fYlv(1LkWWoiOR0DR6K zcsdAh=DpiQii2_$QH;brpcZn}r}8SfG#|%p58olt`KkBV64ME_&-)?#y!6_aF48KC z=6GR&x_s%z^BH=Hawupr&~Eke1S(@Ik4UnHSJS zo1So=;20zwbu#$J{hZ387I_YbyK!}u8G#m<`pz zx^FWx>^;lOhz&~CYgli}Rf99nUb#%|kys^gS1B|7Ou~DsR=!+^Lr=a*EI`d|wA=ic zWUU6I&(>e5rHZdQpQJhDK1(f7Z+<-eYs{Qon^KmI_=Qt%v5+JViI(uAaph-Sl&B}C z_B3BTf>$99GvYqwmcZ|$Mdy;(c@ZFH-aI1%ZYFe;INYmI#fb%pAtfOvt=~Q(28kQy zt|y6o{6VI(9KARwkRtmA8vPW$UjFL#ZlFEtsgz&LktFI^)AKFw=8VkfOZgHzwq*1k z(!UhwiUzfDJPEuWz>ieBbpfUON{{%7$wtwh88IJ&>4HE=0Fc<92c(h@{GKwvNkD|2 zf5+3K!o|q6Glj>~bvvJ;XI;K?lN0sToH;fKR%eJK3Qt5`rYP3VIXSuV0fnwZB!j6p zphZ%oHkmdS<0`8sSO(i6ZXJHc7t#Qd~r3mf~H5pts(bLVE0 zQU8-6xWY#6a>1M?IR$h9gO>9Z^afZ~p1KN{sT1--XMhTOKT@roS_Qr(qxA}}zHr{_ zUtu=oEB43e)m+p*&aQ?!lKXl2sBql!&@D&&O1QwQt*hX-Bt)T%dRa7%qKH?xQ6`P9 zy?y5yNs#yHtBmGuu$;oqP5WksV48yQs> z!;fV!Zn^jS8ri(tkC2ar-P*zfGD5um%Cd!e_RsxRf|`r4Cry_6y@!iGTuy4;4@y?# zjR#94^i2HMA`)BQCXP7%UVeARzMC+#Lm5_jXw|6*`AH3Yl?qYL5Di*#_c&zx9*``> z!f4*{6E#K*(T0s+w#!S#!y##7*x67lT8|NVKDMNYXWS3q&riiFC$+Ade3v)=)RVN& zYd|hU|2)pTI47fvb0%7cndB=|tC0d%&!;>i2zqJJuC*BMAs+wy@V<3x{EIJ zzm0LGSQ^^;f%WlRMqV2wB7UTelIc(easnKVsI*^_E6{Bv^Y-?pzSduFa~_<68Bu^+ z0-E%%pC36vh<>+&9bt7N`ksVu53R)=Ij~S_j0>K8m~7%5*Lld~CFQThzw9giGILK1 zu~`Ksxry=Z2Dtv3z#Cw~8&>Byc(%!K&Qv|L!7SC&imEzaUOtd2BtQQe@+Cgo(eKTJ z7=jc6Uhf@RQk>dy&PlC?7ZoKW7dntlM9>RI@N~z)-tQ0aQYj~-tMAT8p+zY;eGf1X zp!MXy^-OK@6E$e>4pY;8`CW`UIFM>jgcjfU79VGsjWbiAsp4KQc8qlJN9oM`ZGT?de%6m@Ywvg4% z0z@e#{|>JtmLxQ))M?4ZV$GyKh7fW7*2Pletii$RG5LE5nwyaAIgY0oZlF4zokbkpj)bY7pgUTD)_P8au$YrwKp}D7klkG{o`NzP{6Il-~ zUp(i{k!b}&2?CND! zMKiDU`rVvHC%F=SMTmGNKtNsDVaaJV}I z7!G7u2pLA^Yit8&ee&lO1(E#9Z#41rj;=}QP0N?Vckdo47i*T7JRgw(J>I78Oa-Q4 zlrB#s0#2z!dkOIBu^NGt+9|6PvpC^~eW1%@Vwk_wQSS2g0VD>*0#Wy2>4aLx=p!y> zjgN9_)^87h0&Q2y${f-g+GoBJ!fKBjR^_tAo4}VAg>OzVm84Krz-OZ{N|?U(Puw8Q zc|gYxERs6S;hUw_JIEfAN0wQ@_t)sR9{%dZhZRV17%IMt(xP+GRm1c%CP5#+F-EhS6Jz>!w7P@)Tx#Gd>C8UF&+snQc|`wTRk#<4Aew ztKr`1@BV+K#$Lb5nCCr=XQqtAXCXV9TmCsp+o*=#n%+wg0ypxUyhUoRUBB+yQeiFq z(3701*x7GPmoni0xynuc ztqgDlXRRUOQKNQs)w(p^v@^{|Pm=1_&XRq{xVUJPsi}Aby(pgrR^8%Y7*tc+cnX zVEDx?7Wpt?uXp!zRc__dUV` z&>?-8wd%m*^vtZDEz~jUUE;aS8!sC|f|LRjacB>iP?b)_djy5_hvy5pwf!Kb@X)fe zO(}hX%@L7#jMQDs>X6L)HCZGfa0}JOkXw9to%p#wp&a zP%kNp;~n`~y6K!g3TJ!%8PP|%Fn5F-L3}oH;gU%PZeCWW5V!$oRU6v3@z#$m{#NLv z+Hx`V)v8y8cC;2*vQ9woy^QK&olsVn=1o-~Hj36uS!<_c#MU4Fa6XQr4*ftFM%O)8 zl(y-C6W_2L{=kh`t?;7^t*>SR>n1<=L`XawmRJY6s|4pyOwfw+B1`qNbWK&oT-g{B zz^P0DDR+k&H1#gu{$tA#fErL&9gtf=h?yM~n0%v`ca(q7;HPJAq{9gw^@`2L@>m@? z*LuH@KDi)ULT6+$g@%u$3x!{$l@2~z(E{!ctRd{NkKIx;u{=UZJ-+81C#eSB-912Y z3a!NmWhZ@d-@lzDWbMEbJ#M|QI?koAPjk>e%j-qWU(QdHOiyl;)rp8TwmSKo!f*bg z%r=Mb>#kG2c*DF3a{8SHHmY*|6TGr;eq_SBsd6W2Jn#oB$;9;^mtil|Av+G^^hjpy z>{obq834Ix34tiZ9%eODN?M#Q?!aZRr`7$IRy&(t00x`Vh?~b6!vkPMxivJ5Shm0aun&L{lMGKj{PDfap7go(t7a{n7Ga`w z@5f>D9*=Ri)znE{pi0AhET&#frUdu``Gl|{R6D5b`8Z1L`nJR>>v*hL8kS6yLvJgA z3|b8VRUP|CLF{R4$+lL%7xM1{Ew zYKl#opsyS{z^v?;SKydi;=;spZ1I-gos($#0l1T?uaLvx$se;2?dETM`)py1Z9Plo zPGT>qdi9FOYjCf98Bfw?ph|VvebG>US4jRpt1O9U>aBmNylvMm?FGx2Btcx^^@|{E zJaSB7Gzw0dOT?ZA99mD(p*rbxG?>OLKv{%)o9DB;pgb519 z;s2sL6NmU{ge2#Hw;N!r@Z6ke@_)Q5(WLjFz+ld4}0coIdAIn^Yl`- zcaXr2eKhV;p^{%C2i$A9?Q>rSS(bO-wy)K8A@{1%SBfI0-2&S%975h3Mu$Jv2UwnU z59e@0o>J;$RUxg$=i%x$5-=-dd_af~T$qx1k+j^H3z@^VdtndzxUQT)yFae~C)n#o zBs1Tb&g=(aCrF>q6S*koUTG}YeGDgIONh|}gLa6C)`hzn%)EJk{7&F03%OfDM}r0q zX>V<*+q}`f3u!l)QdiZYNX3ViMf<_5xsic+Z46&Pw@+peTESfnm^GE{tO(M;Wt{mVk3Q2}ZC#nf1 zcoitXODsC(BZrF#?xXi=e+lvW&ri;e?^sIL>y?J_fO>pCmTs%5pb; z{N){L+XGUgNK=m(Gr>oLha~?kc<5%+Q6qsJfJmBCyIz)I_+N=F=>Le=dilSx*lPH{ zUTn!<|8K>XW8?o+v6c1T7hBPY|6|40-2XbUHN==S{pVwIxAn~8@4w_B`?8y~-O0#- zz-LbCg2}gh82^qMj6?Jvbi?XASRH;)8I>Ta=i;LfdKa7aa^Xwzn-fMTPbUM5NGnEY?dP`BS3=>HsIHCvPw27fEQk zio5#_k?j|$m{3JPs-TA)$`=W-MAL?cPDku({VVy+U6y0bMQ*Hjl^k;Dr9_^a7e2k~ zzc)-k?JLHxz3U#GaoMP^+K>l8fBc+>4f77u2y3a%abRq)KhR1!as2Vig z66kq~jbmHvYA!%W{)vFoh#Ego*FyOYPvirYfM&Xng6?VL-F!nS8Ua~PGITS6kAzJR z9B@Y85m3F;*ZR@K_h$U&iPX&fvU*Iee>-t5P8lBWj;`_iUy6CnU$}q&>zwnO<*9~trm5%B!cp=duEJH#%CAgN z*7St2RFoiN>vT zU0;8rial5Fqg=dOXx(MNA&t;)%mJXLeEm|gze0%c+FG2f29Th-^9b+L9YTa(3zNdk zsup*2lfi2IBJ~gMr?P?@DjI2#>4|89>8_IG?UNyY!64zHY^{1@J=? z_5V-&a087W7DV#4HB0pZF6l5nG6hIVUUMQp1I-Xe2iv6q=XhN`Hb!CBtH}by31jpO z`zw`0)7r|q?)xz3XXMPVrMZ(&f9gR!ojF^UmLE}IL2%qj8uaZ;xl?VG?o{iX3xu}g zl}Xyq5q~@e_yc!^!X@wZ-n1XOd_1NKs(}?*yJoDlxMUA5Dl$Q1$ z^hGk$>m(z2u{co7Hy%?BXreCX47e#1S;v?O2jwXRRI_HXENbEb^dolIWN6Pc z{^1Yl{_=-I0U5)uZ*?n_oX74JS8ssdonNso)i`&t-LQC5-h#tZmPJ?Qs}ot7z&dSR zgr8VOp+XXyhmjUOtOmcWiJTbk1TxHye0_2l3E8$3ITOx)2qy4E-yvToM}^}v-k#D; z;R$1rA2_Yt#d@wh&o7@SJHE6R;iWFF|6a^LP6v28bg70SfWU-ObOX$Z4eM@PWNoBr zC`ul5W3KpE{j;Ud6L>w$hE_lkHD9go^kJqCS&*SZrqb7w$;Gx8jyL z7dT5})UUt;ypUSu*p)1pQ%@tzZ#{8;;l-%UNYWc|* z5FTyyLcKRJ_t){G|02x3RCGP=`*}%anajM{(`sMoEB(q7Zr)k8kOuBF_=*XB>hMmR z4e);5#r*qg(cvcQK*87b6IVNZN_{PZ)o1fx#O)o=4qM^W2R*Ir6nNEIhro{mcp}Mc zZX8Vvd+&rqCPd8YFj(O}*lRtr+u%W1k>gfH^lsU(e$+4TcW=sY%N8*1wJ-t3yNgGgYVpbqn_%}-zxBm`~j8zsD8qgEW>IRSMi6Ha`Vfw z3QlbEo6BdJmxr7R%BRgZ^+}y{m23@W{YNZu_8=X>?qPx~mE5=%q+|q;tR}cXrxv*$ zi#@&my>2_sSo#a7^r9!f)s=YhP)3?N-9jM)F?x)>qQC#WCoYSSL+bThU+g$qM&r8A zg3lDqE1J6Zh@rxyZP6Rwn?aFx`R>l}xvOi`b?)YGjVBDU%vf#>)SV;l~|tEqMMu_5>P^wA~mmnrh*;vk@10F>CMT}u2si; z&~*4(z)b|DMwmj4vmOR`C%-$B@V(lI4KTlvj;#5N{BR!l^G215sQyj7`_u*R$HxXd z<@?LvS>~m?Q{odgARlJcXOr_ERx~`PC91UV;48PC-I0<)Y8b-Qr3^?k5|50DcmtW=FKM8Ulu^9e{wn!zS6MyUG% z-UZs&y-s*par)?U3)C^-Hkf7MlhsXK55!cKXUmUe?2^wPT5iak6=Z0}D&JYx<9BEt zbo4m-S_oo3)n~`FG<`{r_**bS?1e6oT7@d;B!eSHdI2>pOb9z;1^8fD`R+RG)(Q8< z>d_yA*R_YOM;7c8W^EO%8+`E|^)?KNnJ7Xxg}+)=4(+&SN+KVBNd=3o{{WXKJpP^P zdLneh3>@^@26o_j&Lg>)Pu~%oFLw6$LTWW|z2?FWs!} z5QwY~7xrXj^Se6m340_0j}UA9$m2xEBEG-b#rzb1=|H@=A)w8#fI;L_AT%X$yTZS__tq_4wM|pbYZ5+ZD**215|7}acwDPckf4u1#;dp151$MOZ(vcTn>whMX*yoCr$y(ath5V-gW4?_qxqleyPiOx+txc*)fDjjKAJRKWM$kl{x>N z*Q|uUFPtG6_$406ap2W2m;wqa&U+kFgukl=bArmVqwYAd_yo%#4G+4P526S2S| zN~~I+yUZD%W_^J1>c?fJ)!!Z!fA{5#4g6-Vp}A<3=gb}2KQ=Olt{xFq0Z#moVxOnX zzj33TdK*X#5BG|d=8WI~riP&tA?#>6QM!o@DyoimobgHCckHwmva3Ar`Z&6T<`;Ef>L5RscgtasFIN~Edhgl{(~it z$b(<;mpUD;zfu? zv&7b{<#VZjJDpynM@#FeVLY>**0z_xH*=YSelPt(-^`ES{s~q+4X|dnc*1ak|Boa7&&3f>QV&!Zg2dzm zy)#(t^&72V*fY;VLhmkGKD2t8vIy~q_t-?DZP*`6HP^~w|EbCo(qsBw>3;q6`4JwQ zvVI!~zNnw)%Rw6&>k-%a6iJ4iM`X`!I2ZUo-)Ox6<5V59?JrGU*4<;)%N_Q!po$f2 z@44^Wop-1AfKv`gay!-TvL>Gr0vii|#PGFYLfFWlYkUo6Faf&h3_w3PDH;J;8go@y$`zm&mBKvdJ4hb`caX)ffmuDH;tXi6E?o$r zqnY*GKpIg*bLM-c8vwP=hziZu96`n1IBt!SVai6cd1`bk&~|N@Kh~nqYmht$#Q6Gv zF*HK~01&$|03r>GrFJ?1Am01fGWPXZD|Mz`=fhtXKl56(G+&wLoXy&AoeO-)5r_1g zJ~u=cjG`3L%+)a)pnuMzd@C>Jfl*(D@cf{IkJqi&t8T+4tfSD~(Lg1qtcu%O28-}~ zqGFHn*00miErEW8$9x6qbzh&7;*=#ikmArP;7FL?+agWCdTkVEdXhLUowK7_yZkI; zweNrvw2GSfc`u_qxemk3g;xFzxcl+nE3e=@D=KhS_l1?sc!*;=Gv!!!Jyv$pB9)K$!rn%T>oB?MnER}NrS0_&#H@hGbR z*a>~0wl1?T^p{sSI@lJ28HzGwHeGtYHlxR9;qt(xH<#TmbEM*!BCdbv$7b6o?WKtu zUQ_mUsDWm!v*4uu5 zYU#kt$e8|C_fA0VN(dnxphHQN#IR~x6F9+4cXaRe+50NhY^ZMf>F@LH@SyrzuMI&G zKx^+ggWvncbj(v1Jci!3ItlI>#%a0e&DKxItHO=UDET6~wqux1QNDgx(43GBs)c4F ztacPIdH@);@}K8zQ1YDQaR3s0LP-_D_rr^LO_=^;<_eUP5GL{P`ti9UFl<1*K?Nru zz6JLE3w%8J2Fv)G@-R=4%BD!Ea*=WHE#s=kQje2DKDH|L%xh~ni|l&-xJ>+$>UoqZ zgCx1*WrQSRC!U>50p21$uL0pmai?Lzjc8C>?D?0w4C8GdfL>Cd>756!y$3jC=(zxL z)bb#1XaY7W33 z0P_$6cPynfn$p-%Ohy*v)F6#eG8XT@(VqlJ^?@EhuX>KGv3q(^fj(UT>tk{(kZ3}e`)0^G2Fp2W!i zO~Y_=OzF_xl^Q@8TEfl%j1C}Lga+jm6v%u9U03t4C#+Rm^4Kb0yY_SzP{k5K&Xnp` z%WD?tR|BsTL#TCYokt6&J-$eV;0-%`=uw54)qlK`FZ@+LDl?|u6w{)NKa%Mg-Fl#l zv2Fj3)H3K&{AE&+Z_x;wU4~4%Pd;OjhZYQ9wrK805qBLAwE@hYEy22&{?_~zOhUiiP2jP`c-#-RW<>@p&phQ zhc0wLN@yFs zl+G;!jyKptYYM~sE-+uBs_XB@-^Ene-5*V1EI2H;VWfk##$Se5bgMJ;NYQtvj3OtdRXCCJX0Xmk zyFNnSLHPGeYm6i^+g$*yS{<=8V5j{aQheLzsVm@DFDWbjsyvOusf&$fBEQa9TMO1>19$y&FWVaK?z)MzfoSeLp2!*wbPqqw0K@4cVJk#jk2Um-cY|-sIw|@R3U~ERqzUQp# zntY-0_7EHTK53TK?{`9Qz*R3Ta0TUR| z5aJN_Q0`V30m7Y&4RtOKUvBtzdVeIn{QJ1vXs}Zh!Hk>C;2%LyVV3pn-O^2}NT(@7 zr1x6Is#PO)fDRrxL`FV7VflGIP(LZ+0BWtdl+40>6r4 zCmlK9zp&ELKnfen_-|rMU@VAc922+9lnpQE7vB`*J>fG<({_8c^=9p`8YlZ5VW~O;Q% zZg_AF>8YIcaE1eaAGESf1LM)*6dYErTF5gfI1fR|hhHiA zTTwQ?{<+Mlh7OnC$CQ`iI}D0iA$2rR%riHhbbL^V~41m{4364l=JZ|<|KY` z_h(7hTutiWTu$1zfF$Pl)~$Xd#QUTP%WuR4D4%;e|G12mtJ>caSD-eKGSO8oR04g7 z5&Ym>r_IlF_~JxZOc}3@jsahv>Y#Lw@8o}QVZ+GhT zy6+}{O5f2mA6C+Tl=w?jNRlBab4*b(qBw?CTYNzAm;5aky9V#&zcl;1NnPYy zFb4}vVls@)R1^4d0990c&zM@RB+Lc7a6GDB)6Suc-U3j?BYF~neE?OYsm>O=*!&qp zF`DcfN|S|gvb%DD{lB!={L2F2=O6Q;@G;?Ce}_QN;0mkP8FEgY%v*-?0~53pEzm{=W z={D9XTuH}Ss(3X|#{JPxCZT-bJDXG*;scv#W~dVT)wHLiDG2~x4$be_`EW+gM}YU< z^qhD|Wrw4JsAEEneC?zl|80{2_$cqe8dMl14L`K3q-& zSCBg36RzJvJ+un4okBf@ADy1Vt>?!>v?tC+$snskxJ+jP`NS2VOp(F2fwF8Sjbm?Z z*K_WRID7W2&hUSTo0uYd)-rKi^c~4>e^o_F!3=sqx9Tt(1TT_OMQa{H45ZNp^BNlp z`F#lj>0W;)zHoN2EAE#uWp2yQpu>>$qx#Wpq8|+j)&f(fO@+5MMC1z3wolR#PpP|G zUEdy7u4Tb0$E&q7y~>deEy}<_|0NC_b^ZH_D4CS6tBhjg6cal8tBS>M!9QZc-~xSU zheY1&Z3{Q*kNf1Q5N>O7B(iLMKDi=%6+g>3%R5I>RaP7t@73Ia-6=&$me^X<^n8A5 zVsLt09CHTt9I5CZ$H#lSm6VSDt+9tjbP^)m+p4jqYT?V`N&bd+VRSoM$eRr8C>Bc- zc!XJeQZO*`VD}&?DuD~@GL0_fv{JsH3c7%`5X@4M^SabC-Aqt`<#^fZV<7wN^qUvH zVi9xq?PV*T$JSxklTLA4$w|Dfd<41aeF}Z&0uSSMPFQ9ct!oF=kR8+e#H9H$$9y4IU6-z@eO^t)hQJ8%72 zwvJ!;=YgMpej($=|D^su?7eqTRNeRHOA-Vn2`D*;l98OzRzQN}3a+l?!7g|zn0y-&pvyvXRT*_*0`06%=Px|Z4fz(Y7G5@FBNrc3_#$q1TEExW@rg8-tw8Um(l*ky!kkjO^7MOUw6QE` z9G%B20*@Z|OE^GqI#pt1$0d1A^wv20%KYl5!04(T7#He=G~=izB|L!h&cUXK`k;4z zcAYSKB`mJ4Hra9(-{lYE%JA4+@*mgP71U3cw1=~pdLGtQ$Zex2VGluC&#i+m%%0?f zMPktHeH4yv`Rh~^z=NEM?AKNjzK8l7QA`y@&)zw%@m)VH|CiFy8X%7=IXrRvy;;pP zg{rCNi*K~cKz-AgU1%aGTB-Nup*~-&M}(TbltmJXf?opBjv%2{ZVdAOoftxg_YrQ_ zqCzxJgWr36GoKk@)$5h%sn3YiKW}EG(wRrQ`t==Vt9{BHCJp-||99l*lXF2&Qd*j2&B~<1nZXgD|h9}2M$*JE&MTnsAg*5+*D+d zR81#<+2TpxPg&AOt79cI;u+C<=jau75DL#mUoxw?Nu5^u%V6TBgkOFU5K7Y*zsruH z+Ai)E-Ie4L=oiqK^{mjmiaD~+p`JB3$A6kskQV0A@g*liIgF4iQOxHyn`peQ#n^UfQ={|!+gF^>DCN}?KIa1~Aex!C&>s3m&#&LtQ16!Ivql|IQ zkuUw-kyP#$`INTIAOq_-I7=Wcwqr8>GT6wS$%hPgWCXnd6ozE1Zt`u=WQK-s!yUM7 z&8vh)h9(xn!^1t0aU3wYv^fDhUk7l4riDP>4PG4{nCeX-2j2Wmzf-el}>Wv z0#JV(L-Ht~BEfn9Qs@OInuHm76T*sGvkLg(YEY~LGh!-aMy&hT@thNw5f$V=r?gD{ z^e`JQF&Id{^zb(ZO~3ykLj|Deryw-FA0MW8#D5Xw2%>-=5k-Km{-ukiQ!1ZNgzNAb z>EdkBC*MTVZp8u{G5jGij;aAr2p6!>vj@JiU9)}g zae)m(qG#3&A1!69eb|%m{;B&H)w;(Lek(=D9J+_{LI&}A7*qES#M=dT3c&}bqoi}A z-le6OeFHRi`RuSt^}$uSt#ZFYK{^Fuk6&?z6j{lzFVA|%vK0>J8)Sj;kUd?hpy?6M zxEW3Zu2hMO&yCL}`cQOh3=)^*aNMvL5eZ-?fd78_=-D;%b2Ra(dL+hjC~q$00lT$J zl-CxBXOG1iVV(8)vdj&sT)hDjxh*{f41fOZpP7b_?~eX^l{MeQa0VF)z=~B=(eSS?Zj)GCd%ls59FX7-i;J0p3~#kdXHnS7l@d5YLFWtR)xj)C`(T%m>~?_FAOhLPgEetX>_ zrQ>m)2{p}Sfd_rR@z3R!9NS7<*gutXD9CY&-i=zOpOXC+u$TCy^x-geI18FuLWhxD zOP>ld9&-IpjE6zw1K;o#4ivoTl&YV}|6j${*#8Z&MT`M-|G!gg&HVpfY#k~7k76tB z>;G1<3Fatj$tuFN1l+|us3HgB$Y2AW{=ie6W}&{+b$*n+{UM^bKHgkoyx@Lr{#?ZmS?}_ z?@-Nz4`KX-b@7&jUPEOq78t6eh$7ejL^Eh`=iFVIFR zs#30qI1x9eQks!3?iv+0yweq>&y!ZazUcJEM$~TBmCjzQCx*GDoU)k%U8?ulQn+wx z%~88%vJ~Q0)ZO(GBH0!D0M&cWqrScEEB)fVE&XnZo1zGBq|+(!++fFAg0R=T7~u!9 z#r<}fxG-+E!c>U6QDhixJ%{gNvHhcy{sbADn#}(G(Ame&LQ+c`)p&P>!*D_#Q&if~ zMq0-2-0di1A4OL)ocpPvL@G=Q^|Wnrf%BVvKz^+Go)pE){SK-R>P;eateji;8oe^N zHdwp^7fC#(nuRiu7k`QCczsO(WHQ60?=Vcw)0_aC2wd!+(TVn(@IV5Ui9T4e2Xyo8 zZTo+mCx-|ed!DUkql#SjWN~=(+`DNx%Ju4#eUvCu+b6y%HGilY91OftoDb=)u=U@t zuU_teId-Q)@Go$TQ7%r**a&_rkhwbn~njw+GjWDWPZzI4nMvuFS(_{=zqW za?kbFA>q~T6A{RKNVxDIzl24dj}3Jt6tW*O^!=~whi@?U!>id?`@kj}3%`HuNF4+v zY|%%X5KgB56f!G#%m4$1qx2oh{PoH|NSvPI0QYboyCl4;H=zSKCN}`J?qKEgd37D{m1OmwInl%Tc=XpqQyv zUfwO`bsgP0a86zQSidQX`BY#ZJK=3C%@ z%3Q!I5@r)^4!_DQ(&EXlxy3dkGTb;f0Pv?`h zts_M{3zz(IWZpI1dc`-Ib8#w{9vPlJxfk`jIPdOR8U18iPHo!b`^n{pu+p0-Q0v?_ z>9{u&^toMoR}A0zMqrGR=qC`gnZOX= zNf|AHRkXA%c?Coje*`Z>y&Hwvw?Y%)dX#(Hq1aELv_Gh-4-wwfz&brr$@kppkZ;o# zP9p1l3@D+?hU&|}fEbToqUJZNT6BlJHgL<}3+q4rL!*EEhs!qd?4|U$1xtJ%^11;c zbV(bNF76^~!>h*5R53ykszn2^b&rgnBT@jHj%mS51^(en{=hZoQQx~Zfh?JJO)EC8 z$^eyd?M|il;FliPXJ<5>&>8Z_OdYrojb@E4C;(QYGbgSCYm3;o=;-dAP6UFYpJ7Hi zX!47IAoz7qsYYUfM(6g(YjhOe3e$Wr{EOan_5;Z}x26{B^zE$?{|vjHnfI$bi4>6q zz9I~7c6g-v;X_~EA~!|boC;jNrPZ$OlnF)0_{WrUG5$3nXkwcTqHQTC;e1)*eruWS zs%OJH{1*2l@7za65ca{WO08YoT`n`=)pGzk^a%Tm@DV>?GhWL?!Tw1*G^R z{$K0OzoMi3nUvV)_8)7oqN0CcGD|TFGX6TKx0z){gScsXRgzbZt%Voqc7`$DM3U?( ztE^KOS=I*`dl*!`*n=_FZH_BrR2pD5ueWUbS-*(f8B4pv`9!iD~kn#lL=!@^q9H+vMY!7AA8~&-Xn*wURqr%{6eQr$F(FS z#sT$CQPloF21RL0JN_93I zVHD~2Z@cg*9wjmN4iz9v0*aV)f3Ve0TMq0Vzq?3N9QIIbNSZ}@zpk`<=>E9V{_SEs zKAz=_x6oX&fog`|xEJkPTLKqk9CHYA)FrKdWg7FXcdZeB$Ky5c-`-S;ihcB!*Pe^e}&mr3#|vI?6&NSm+twj==k@O zKd8F_roJvfA4Mg5aDMsiUJJ=Zw~vE>L7tgNj{z#5EXL!Rt4t0(^Z8+A$c{$=LF&~z zS<(1XWSv}n;KPAck;64mP>&<{hVi`Zok^d*eQeFMzAOhuSK|7XSsXiBy*-&}JkoK_;ar=bD=L+8`L7m5_a5uRkT%`ps-@Qo z>x4?+de}(=EP`ZsHg3 z5;Y(APhQ}EXsa^1(a?0kviUnBg59T^M@LnGAdn=7 zZ`xf-U$*=WW4?gXS15r=MT@jKN|E$DcnOl<#~Hqn_W3&*JKJBcG&9~RqR>!{4c5~Z z>pAAB+jFt1Xt17p9C9||M%io%Pl;#kvYT(a)l7LAd%ksL<%sqED%0v+-U$R(=R?KS zcAwXWV(Ghy%3Z<)yVh=2Sh`4toB}jW#&H3fVF_xR#g6NE@SJ{c*e$nwVd3$r@uspm z&nY4b{*5t*X{&YC;m3(z`eF^z(|_5|Qn>xV+NJwgFoqz1Bl$#Y>r28jHeQnEOsRsz zUCE60!9VFJ*J)T#Bvd`!wz~4SVDuY-8_ws0jU%9hB7eXR)O0sJ2yqOMySqp9D; z#Mf>$At_~^`+-V<2@>uR7hcXxlH1;#yECP8!MCvIx8M6abqKqqBafe2sLz>Tu(_nW zjdtZ{#3v6Zw4DtG$8#9hI^4Rp(I>C4eKDQzgY?CNy%<9Q5b)4I^~AM}vBs78GvYav z<$`|gNX`NB(U@-aJAapOmm!Lx(4Oygn$aoZuf^A1V(o%KBZ5{!8VzFx-3 zE30ve=5=#>cwSd0jjcX8$*2#p**CZ$I2Y;_$=fka%;cTvMbOJsVu^m?>$#rRT(^z5gys&<`5@} z@taJ`Una(jH0yXdT|4u@YyWtNQmnOruV5sX@x0HR>|h?s0MWJ5g?aM z3)B}84uz^3zuHv_D}19jUnrY&<;?{`EZjrYVbm_q#{>#KGNMn!)n9?MFiLf_zE zu%HB5{#TZUgOV-;2fkLg^>14e6ivgukOGgcD@T~fJE78i`vi{5o05cTPP%zMzgzNR z6pxn-sCWILcKKxO&1;Dn!cUd>7L{{u*e~Pt8m&mre@f8bj=;=(%-sp4QfdMa02WC& z%^Xe<+@&dOz*?MMi?5HTQ}3@{xWFxSU1B_>vG9*V#&2(>-(M;c`qVTUX=cC9=G4q) zIj0YXTC_&~gnDe~TE|iHBtSr&S4NDEbv$*_5|GdP@{vOPFA?R;8f3?RQkA0FC!e;9 zMPYo4sH~{yi?QFmEg|3H$3&Ka8#qPBp>#!dIeIAf)MJ*3{E5=rKeBQv-6GBU-R8f1 z-hHkJJ}F~C2RwTJM?gUd4e4T{s&qy?PyCTmsZOn!X}L>hX{?PaTF095@gZDnt$dc@TB26EVN_Wb-;Szb^t zk4OZIlt<*LybCOA=T607$f>xw65umNPd@T|>10B4jvdxO>YMW)N{9Z))4OYFlJnA2 zoLjXxe^OhAo$S-D>bDTb34)Iz^qfG<1{_`!;BgFvwafpPl>9*iV0=+y2py#G*W$?D zxUR{nsk@PU8HGxnx)j=~izQy~DO}7y#SQVz{AJYdek=Cy29SD8<`^8+e=M(Wh|^$l zW&p2B8tl34v~Cmeh!qr{(Gut8#L*qXc=y)jna|V(>}_7^(_Qwa(Ps?z;Qq-G6MGI* zPkY>d71jy0mgj%<;bo{=IcnrBjMHk&;6f`G{Oioelpd8)G#fnV?51VD2v|0^ZCGK8 z*(85>g=JlrV?q4bDbaL!ysotYo;auKujek-jmy7PW$~Xf3;v~YDBKcDi=F!PMHVL!f(?%VU zK%(NyM8!|@epX$0dqGb50y)_W(hHfIZ1?dkU%YdEcE9k=g;!iuj0RkShEJ{*i0gif zNPCZZo<(8obL{_MV=?Ak+UCk&D1~+CzOU4wk@ruRr3emG|J_219f1cFuuV8m#8c9M z5;QNG16|9I$&2pyp2p#7$O*fZyv)x#^SNztn!3R%yqpGCw>(BmpGG}DH)VWCaNOs5 zYfIK7>4Mri!9~J96JB;@mzh2+E0f4_B*DQvG6Op>kL>lKK9UnPiB>Tw#{B;uX)_BA z9r^dS24Dk-7#n2G9oJ458KOkypmkwRQa@^P$8f!_M$|Bt3K&Q>eIi|{6GHQ}iGiTg zEYRd>>8!bC(Zue}_x*?ycDi;S#kVm2H%I2oQ4i!Ka0;@g!fPqvoA3?z0IVO;53{_m zIu9n2DfQ5^X&+|w+y=Y3o63lZf)+p+MZ(N~$xe`8NYC2IMqX@4beX++(_!DK&Qn_I z_yq|-BB3|tg^B0JgrlgFqorGO^Ja~A33e{Oet7%4)uTk8U9sFP$|*IOAyw8gG|0 z=m3!*rIN(~c18HDL^u)O0OG>MYl=uGSJxE?!#Iuij?UBj6TmRq=)HKsTfp^O%+kWQ z#+%{H$~HaR)KKDe5IpJ4jtega`V7pfxvft%EQNk~P>RZ|dW)HS?`?iMq zCc=~8$?%+*-JbTvK3N6xwAL8q#~mCycQGu+G;5I{vVOJ+=b2ZbPGzhiz~neS>uvwY z)JXblOfu@RDE{UV(0Cik}0j|56wTB}V|U*J<@TKX&O=d%6*sg9E60ZmS+3w7$W#Tw~6z7(&^L|Di$CsBfsvCMy zX@83I12<>#!SLr5-5F?`=WLyyO5bZx9RSCe8ASoTz)@_M&rGz`xwODaioE{lM`xk=S@ZG2TNm*d67ot}8La)@s z)v{6kr1Z{B8NZKU3^d>|GLrt#qhZ(g>|qK>$mD{*di}~i@(HwGGVd}dYDSdMb8(;y zZgtIL=V=i?et=n70*U|=i=A3z8F&SxDDL#!MD0KgX`-ff^kT#*>YUiLPLyI6sbb@f z`M0%R*Q$QDHA5u^%~DD*<|Rg|->r&v0Ftlom9$_9vJCzfv82A+h$=!|TjQ9gUK5vI zVdK#6E9^h8eNDZ}6c@P4!s4l$i{zH6kx2rMN4>DUVV87ph71s89Jqh`7-|`Vw{WcB z#fq6pmiu$aQZ{JRq^duh--KdMDM3iPTf?RY5ik{Id!xR8zP1F__3kk86TU8Z)hOXV z?TFKN1rH#}H>w(VfB-7Z7&~}SlwSD)*f=@X(+aM#L2DP$jE!<6q(xsZ7hiz@AeI^1 z@ku!n&qcgi23u&1XQO4x2@ze1s=LrsLHo9!z8^7MceK2+sHsA?Glyu2 z&Jx6^zWjy!h7VlJjVfUQbno_xX{e=52oWLbwhYnjIU1iV#=u#;Yu|9;0o|4Q(n7)K6IGwX2(S& z2B9tw!yddND!k@cXyAPt3?}25hkTECU0VQx-^gkGN2>0t=kJ-zQKBV4vg~afs|j> zD<_38Ez>fOagCcnPh|iGQTggKnd3? z7v@*N%W{TdlL>S({O>Wny{lj!Cd?Z^(|7#*@cyIKw@X$-of~v@I-XrdjN)%31BBgn z0SJHU@E4A0;T!FH1H{eR|@ zHAIigGi?m1K=a8i^Zr`)o8=D%^T`sY!F)1TWIrqc7rKnwG%%NO;s$(+^C#aXyn~7- zvbg7412XWSWUp#(c+a64Yh?w&nB|0Ais|T(^|k#VcZ^vtU`4~ zmJbPB<{0f`iw8zi)e-k}vgUnxYFS#MjgR%wSP9_ETSpYG%VM5sBN8{;>Kd3UhT_y6 zdE_;K;Hy58<+k;5I>ZBnMmIxc0+OZx^3u3~E%s=ZYf9IzUSZr0avo4E03eV92n14U zWwTtEx41sJd-Eb6x6-X7gzmt`m8jj_FSa_L-eQ)@8tX^5csOED^#FE$^gx#tTcUHU zds2rcNuy_F4^zf`wVm|44`F$KcG=o*UzbLtatJ!zHw&j6Dm@djl*oo!)TDBO0TOCa z%d|o0_pB)t#ywm`5Xu$CE7_Gorz`1^At=i^%5;1H@RvpRCJ`9#il3*axZ3PjO$3&ZiXSXfv~9pS+v< z_T$?XRZN$f)fngpxkdWmb^M2Cy;y8-e!yBi=XaqlH4a(uzeAC^np`iVXDk%3h=4g| z9OzJ`PM&_mE8_icpsk%V2(+o`qI~akG7(Kj*W-6z2x872kuk8(F){s=GDEW}u7_p) zw@t0+ZX|2%jm=O|n=;x}1)-ergL>yzio=*^|Ia%ipor;H6W#@VYOP?A_hxOx|Q|ezJpuo1@~5s&t%mL?Q)gZNqV*ttIm|jwAp4^uh%S}qwzau z<5hQ!_d@ShUtgR2B(G+%iQYg9S~C>fYbpPX%n^uXSM+T15l zo1>&q9)duPm50rCf^OoTSp9ZpNuW=ScJ)^FnL-CZ2fiartM}}x~Lpg6U6%g(#9H;zTuszoQ)^Sy%=1j%4h91zREAdG{ZB9hnVvxGn z%r~*2e=k5@Oc8(@g)0)@17SwI&hCoq_3^!`Z%>LNxSWlhi%~NR;8`%GeH12Gs6UdT zR|4V2_A?L$tQx1O8M4$O$KP6u{am1W47h`1DWLUGT-RPFuSQd zj_Wp5H{aZEipMY2yYq9bPyN+zW^{G+{B>liMo~tXep%tx~&9Ptwaw{AbCyV7C_<=J!HgjXiL8h5ABWolxLtYOA#?YTo zyLPc;F1W|8aG=Glk9w?v?27WC_Ozc`l{5L+baTmdQX?^(6pKw2pg(Px znOYk+GHGRa^)@uD>`*(>Pc3ZNMI#+$Gw3Phx5|`NjOx1+%-b~yy-Zd-8s#UK z7dhiU!?lKIkY$vXsjJcg_JY5TWWRp{(}?MC%Ap1|t+TQ-B_Pp|*i1{&?wh}+FCOIz z*L_>_PhWCyEdmi`BT}}BnVA<&n>o-LM<6(W*i!6=6%ejrp(ltka2kFrGz)h$Z`(hW zv(c@@$Tqs0KUf^r8bsandM9v66=miP1@|sR`{QV<=zHcR>~_G?e;Ndlf+rkfX=}eu z>!k_40Tnp^UJ!!}@CIB}>?0o-djz!o0AdjIs0~dWncta&6PI<1uun^B$bB!?65@|$ z{g@S^@*C<=I~rCcHk{q>MGZRJh98K-4>W7Qz_KkNFtDuDoLQ@<3JQ;5<|-Iqqcsj+ z1S0;y*>JXz9PFPQ!T`eh?qW5LvC}6^j1yudYbbT;rpYE>C`@MoPrzjNQ(d|<=|pqX zKw$)RiB%|!<2Onr?nd7~J1)}R}rwlh)?p5yUy1zA=w|cg4xa{d}6!j>n zeU0VaU8#vUnB^2;HvTv=?5bbjhDWq}Y5#p#;*lpz(spMKPx0QEe69g85clJFlgPf= z^6m`#bT=9P8oDz+w4C(nya_=7^#kY3C7|K(g4{K_iS8@zd08I3b&lJ=pn10PJqg2X zWOIAoDLS=2-hN;^2HMnEnlM+2#bu1H5vzJj4Ms{Y+GZ+3%1PLCJ!E^96B8QIYuGTF zCO<*h2}Jr|*cE43J6c}Iw-3X^nxcF29=UpjYN)Dkc@a<>Kb0pVPC2rZGTB$Re9Ux@ zhv>=oDA@ArmB29R7mD7PLfzXvrtm<}d)yC54?l~(CTGdKGtC}z$XjSW^taOi1)hIL{azWbvU=rZ%8=yjwaFs#dy8kHr>$jI# z&RiFMCBn}nl$tr9YNP{N6L`FVICcto}Mvl<^eGp4Djfk+V`S_C@W!*U&1ufMx=t-&MIyCln^3=+JVSeO?XNmD-4XWN zW8UZ&L#P&|p803`s}6%{`^K_8dUj(@2kQF_U_FPcqkxu*(aA-LCA|MmCrT{3sj{kRue`R9bPN1rgtCHSX9I(T@|aPHPA+e5m8|h zu^meNup0ykT8ozFXIo7qh^T@YWW6&NBBy^pp!P`Qpla|EBi7XlWxIiOxyeEDPt0@j zp*3n=onN9GBHl$-47JM&lvg#tm0xxS0FH9I)?E*9JLE<Tf@6~Y)2xX3_<2s~ z&EJJvxUmU8PaqF~s@f z)MwQMUm6-cS|$Rq*P1KnTT9&R_uVm4qR78Pky6c z%XfiD&P`9Z$!G`JQgELUsy&a{qHz9)1puPGg@&U?Xo|Im=Q+YW9`x^V_I|`*T440) z+&&jb+({<_q9bA9(d6k=b~**u+~63Gmzjm$WWCC!iTzw4^061)>bF5rNyKS+Vc{WW z!(sD4+gh%_DeK?Ia7}vjRxQ}bk4j%RQW`t%hUiWIUfQy`*r~Bu8%@&7Z5iQzNYPUl z{SbCM>bu@r<|;1VjF~n49_nJV-tbwG(92Ds5?2_?wo@y)`h50sZY?bq?92{61CG_&tPQBX5%_xO;I7)3?tYppGY*TOH9FG;`vChr&)L(HWRG$cy@Et7`pet2Vx2_pR$=?VkBBW?Y=d z?&JM%-I9Nkn*T_4O1E2RwJ%ODyO>(3MDJ@G3Aj*qRaiE6IV#>Sn4_vLk2eIByi_IC z1_0Q%@A<7Oi|@!BkE+Y~0~S67nro&Bq#I~un+RPZO@1k@*k!D~``gLj6uWIF=Xz z7sbgJ-5VcCKAT_hERku@M{R1nAM~<;$P;?=pcw1`*7^FpnXMBvvrQ*~l!?-{BYkii zsM0&NcQGj_gcPaMkb1OnNZg>|AXjc1m(UQtf6G`5M-NAcE@4zeJ}Eo%ZV~~>ocIV_ z?C{h{3gYa4AS+XJDR(Z=-Fj{{#X}6mNnV0>m!8OYh+7r;{8SG}6&z(G4`a9nk0si> z%RHHE8;*`w0Gxe^Mk`V0>yOa-z*-6BiE(lRYvqFj7*6co{Offr&7T`^;Hz2$oDnO0 zz!^z3aJ~u+ntnTMmw>TW+EbLN0M0&#$L-03$Ki|rnC2UXUiNbcSDn$XlZtD_Hoxowev9 z1VS*Dlg1}c* zc@w(b6gKOt^>v?wb9yW7iwy7m_F;=j*? zg8Kabuf{L3xk~>@`V?eqw#{k(QE!-bw!i94cees9gr!Z2!`E;phWoQAKCOKZcFi<1 zb$aQc!33w9k5Uzs!2)bYEih@C14XTvcSSS$Zpqr)H#~o9CQx2O-SFPA$743XF@cc2 zMBg>17=R3Q3YzM96-+~>pt_WLO6Df_(u(~ZJ1l^AHM8M<-<;1ETgG9vJK2FC;{?Vm zs&+I8tFi_cunya=7lT6=TN<}mFQ$3s>P=&$Du-0p+k{w`@m?t2hyL0EwnT8F($WXl!iI)oYHI8xT5-=(;~CW^UGJ<{ z+H#@4j1M6b0^*#%bB09cDBmt%ZC2FV7g*EQtE~7ZJ1%Bo!w%`hM<@Y_nUyClF}aEG zAngmnY}=X8dV+>F_aBcJ=l=?~RDDe>CdWIHDKY7wp-tZ?XBrWaCu2j4(48aiJlrf$ zy>*fqpSt#1_-s6U-yQnNP~C|VH2gaXgB=f z?%S`B&ote_B#c7tLFu9~+_TT<1*Tx{3Utzq;CUW&wb51?-ZV|JE{bZ410)Ua*h9xN zWwok5F4Aslj*ct%XW3^?UR=-ISjI8;Mv;rvGKK#PIE#Y@oTZvI_0v^g2ArvSEb}NZ z81I!KJ;dteKu=pGra0;E@K0WEp4v|rU7keY42H$@zUzy@3lGa$j=dXS7-B6X~RW0G$$D%A|Up9JK zz$EGV!|XY|)NAVhy(}Yd%rnL$3yY4P8&iO`HUasT%blNgPjD{MPW;UbV^dzwhd!(+ z=n1W))0d@~ybjqe(~b+0Egw0D7EI3ovJvWQt7nMZ;Cu!8+Iaaot*GoI3bgzad|u_j@?S-Ap`RM8usCh?;Tvi$6T7kAx5s>b4_?8)SDVO@3@A%BN-sM_ z!$@K%s|R&23t<}DX30!`3}hWjJ&*}_Y>xBu+4~QJ6Ky|x_HWzd*=0(T+~lyD&jtrs)xnq@Us-Cf{D^S zvMsvZeY)RvLl$lnfz~#TTsm`oa90rm&ZE|Z8CM8VI4oIt*Q2di2RB6v^L9hMZ8YzA zFzM5wSHn(WFyxZ0LA0s?U5{$Vs`dkadHOD5n(u?c^fob+#kSfa8L2SKT+#c{JsdZe zDMrec9}$JhL7>OKSs-nUr0$aF7weWFA#En?*R3sazD>s=52)oPo{EY_x}bEfQLeF? zGaaq_2DzX49h@PxAFbYJHS(LyuwuVJ#eECCVIY!c`?S?%M#EHix~%s4Wq=YHTlthI zpfkH$wcvK0j<8~{(Y6#WP<5NN?j9zCVC?-U(CVEEhO6&7Zh}b=>ie745%*}_0~=?J z=8*iW#-hYWL=SIVM~96VZYiG4QxUhB@2wWA){;*_hOkJ|&W^$?t2X z0N?lD{yKK?#^Dt%T7&srH&P@L9?%Te(PaA2kLQpq=f(aw0;idS`4x;7g=&{#ubX zx6hU(PB+;Y;AKye5F*w?aAJl>Zgt40u1IYuN2;0BHHoVe3+u$!}6Lw zy-lVfJ=raKW)$kn->>Eg0Y#olNBa`J#jKus0}Djg&z?1|{^&fdBpbv^Bb_+k`^-dj zmz_%ovvG;pInlB7Di4BE&JWWbLDUWgukQrm^|?*IXui>z-uNo4qr{RPi^ae2;l~$P z<$duS^LmZux#Fp$UT!;XLEW-_88`f_I0|C5&_AG5~Nv#Cf`OqQ-T z;_t!*CY1kM`syaS1<2BTCV?DmmlN_F!G!4~L4tEnW$8lVuTTs19Ng=TPWr2&_{*0! zD-!zIis@)*1&0(}c$nOMBJBI|I8Sc&W4^pTlAQS;b#|U#F_HUd6r^))o~SP_bM;8qy-9{XN8=N;cxODMvJNF*O?Jrn@+cAc)h4SMGu!oq+%R zGA=k_@_ukSa5C?B;S%dcO(QSb#1}|4pp`JKZdD4_^oXP7ogEFP48FLCKK+@P_r(&q zwY&c0TnC-KpSEn$CfmO>gwWmCa2EbP?m(uy=D`$U8(IlTOITYz2%%=)aGv~A7W6Ng zxerw{A5i^H{{5bF+UU}8wb8U;9xsS9M9hHk6rfNiUw?!a&sme$D zuMGqe;EjX@^!ZO#9TPk3vNv~ozKhw?kybe@t^2-Ha*Vk+%*O`Mk8!EjgX*54RScuo z8i>F5suhDN)5k0Vyw>4!R)ilk?L)w4R{kn<-hgR z(-%EVB-8ZLeRDSzuSl@LtgbuyHGQNYY;-oi5%d8JKYNYqt(e37#dK4$2O55s0fwK= zP3(q1{cgsXn4*gWj}lYgj``t!R<+|F*0LAV-g^GvFA!amN7g(t9shF>9>mIdftaY; zU?xmN<7tH>uV(@We_%;#n(MnK83RzmTNSOKf7sKLVf$|$$bKeY+J23{YKelpR)H}e z%Jiz5Er6u8*%g6^JwDTpcVZy(`oOgJm2MI|hjcdtr-8NNrPDo@Q1*JVU~Rh zd5LJMwlqa;*=!>fBq!N&C{Lf{8`arT`Qy<~Yp%B|=vl_VBd0IjLWxUCO8fS|Xu_56W9hpaW`L7D^zsd-^KlC~;6Ki!Mpg=x z{$9Z=m3Ex&eu-+WnU9&@ZYutLZ3ECzb%GroloRnIe6ith~2bq%MwP<^*u$Rf>=3lnrZe12s$0MMreDsT@)!A}<~ylU}NT0ceSAev@c}t6%`yc^1J^O8gNj=}+|q9a|X16P_N> z2~zg50}MbLq%;)5FEwB)sHlDSdX#t!FXM(Pw`G-mksIy_;aC4`M+fcs-JA5_a!#Qy zg^MTZS?9PMdpZ5f zG0^nZ(XEB<=(IjB5td`AV9~WHtq#E2`^2O691ME}qJcQuy)fDHdvl4a;zKO%JVCxF z^~ZO_Dbi7*HjfhDEt=of|9)qz@4zJ%lM*@HvPlmfEIVYMxd`OelKKjn|JTK7+s*`cv7VELD42j84MqhYiu7Y79;1IBl#p9o<>zbc8E3QO;7O|*S!yOd&l z`_t_vLo@|rFpuJR(FB-*w#t;Y5oT`yvyk2w;nvoF44K|EQ8g#DmMEpODx8Ld77F!k z;W#S6NgvnBsEMm#n`=TByC*=~+p&wMdYgQ3{266lj`q?%ePSW}q02Y$lNH!Y;k7ZQ z$~AAn1GF}?1|r7VYj8b4HsZXD@4Hu$x2JyfNk5`!O69T(Cr{zu|<;St?e$cn~`CcAY}aR7n8wr9Wc^3xulRQ#U0 z%}0qg*xQeV{&tctZVfvAY6axShe;UOb}X;t)jQW*p_)Y{c+iF$KjM)bi40(U-9|aC z`)%CWKTD3GEG3HjKL{j$ODt`k1#b77HK7PqznCo>&7fqEs_ zo0EU+kYE%Vaoeh|xl!%J5UU49wo%e3e3XcebqDmvUOGH+t<{)sde9m&sRy5Dx}l6Q zzA=$37n%~xLQ`tpa|l}$?_vs3Ae#QpmCnbcEhLBaSc9`EAavYMK}j+8xlhuQimApl z+NQG?*;)F_dX_t$7x_j=+*Z_Q+_IugCH?dSc#rz$&8ols^RP(rPz36LRZRPm!@!LP z)VPQ+{72EU-NFp3EHafXdGr8`9AJL||1mh8z6jEA_i`Bk|B*cYospq$#p4y9dpfXY z&s70Ry@e8`ue3FTA}6knw=?Q37)&mnhZ8iin2N~YbKYRk{w7Yx4jpB5s?;Zot?uWg zR|1`Mg;dKF_@m3Lp#Mz`vVMw}Ji3nEb`boO58f;nv|sk)#ft~Yq(Wt@+jqjPZ>}jx zNaYyleh^Z4g?t6DBx8&{(u`m*5Ht;~0vUp7fGYtSmF^j2Ln2~l7wk;1kg~I2mOqQh za(vuha=vL6x%IKe#P;O1=Yt?&~GdN`Qa9z0U16jLZ zDN8v{%K4wi=pFHOj$=)v+#Y$Q{>K*iKwX(S0G{%Ox66LJO-+L8m48fKezW>GxRW}y zjvp}v2ZPdDh%WkXX>9@pmDX-qAe)c+)E{P-`u~&{d)My#W57rcnPipuAs)5n@a@mk zfCB>QabqBG^-aXBhn4WNO^3)BY-a;B$Y6m%p{=oJ>IZ0Gc_#=_V0V*$nsX)E%A)Vw zGpV1C@5gd;+^K%<`7mKTQp+|g;n~$ewq_$Kfo%P8@fef`FgU4a|BberosUkS|ri{?=-8<2%b8Z`)0@9Onjl z0B%9L3SUL6qQ^sGUjOLtgt3#x;8fsUI-L|T6C9=>@_8C7H?)}Q;B-T5ui8Lg z>u*Kuxv#sKzK)tb^A9~%9aMo+wLJKC#bn;{Y|eM@a2OL2oUi%lN=5Z;%jQL5hkXB^ zmi|>*yB;kgXma%akjMMy&EpK)Ca2y*LOFGhUCSb_PoBWak}V&inX>q8x3}!{Lu;9D zAu~3>cyw)49gr7jz0)>nTgB8!mut_Ei}TgQgVp>p@ZdF?n?@JLFNu$cCF9HqQSC<#-2vLss_|`Cp}&h4|KYQR_4@O0j|p;P9-05n{AIheee2!N(VNbL z&y85u&Y1V$<8*Mi=MT#iUWXT7H&YO(%|E>80bcu>FTV~Ojeq%oe{Xa+rktYSv)z&0 z`t5)_x##w;8m0ymVn1v9q2IEYpRZ>JogdtD^U-{R&l0;2()m&rIs&ocK49nIGPhc) z|GxA?jXm%8IssU5p8os2qygLyi*#FXql0k$TT^HG&yBI+dG(i|F>+~@ zP3--Ty+Km1k-fbXL}miV6HT%BD-(ftyC*m<^e5v4l`-k z;UFv>GXdB6VxOmhUR0jhyrOUgBM3EeaVxkelD?eQ{Z6q=TP;amtGDeu3|NXM+W8%{ zbJaIvMP0{FIO8Nbe1@`uMlcy&N;Zv+d$x0kgF(!iEyU697rl~$Pb}NxsOj}hw+Pfd zT0YoHG0ea5aC)OCWZj)8F^RS{f^A&efp2b`APF$>h)swwVZb9#P318EF2!t4x~dW; zvDd58D@PI77NX2WZnaY50+JDXUX}9$?T?wI`iw?GoDEH-j@NJccKe8=Bd$=a!inQ> z?4cQ;r{vW*(PjF59+(qX^1+5dKk^6G5}{Je!qvBeCZ%q&qj^xD6-Lu;7GDPD0BxbN zss10p<>?$}vc$Uo6=YGI_$RIVRNC>Ax&2FquTC^tSy9op_T4pg&ncEEbvZ8KeE$wT z%iCx=6DJk4+SFIMi67D?gZ*{P2aN|9wA=pN-vIW*aqW@(+m)}8@&QBjDYxn@1JXFFtk0q zB?3Sc2nc=Bpp=D6;D8#i3JZPrvW=~B1As4iJ@ANh_+pa1#dS5 zTVY3B36FZ0g7=${9s>c>&#=rvaR@>a!Yp`mKiJhTsh?2kgK%sNeT2!~DU42!Cyd2^ zw;kGtp~{%5XG2ZVJqDtqpEtbbo=X!KJt{_~QDQzfC<1>*n|_#DE0P&$h=lo%HX(B& z;z~wq8m}Zp#LWyPR3M!9QZg0guB|AY!4A+HlgGpliE`+!miPDo>Z-hb$`^ zwWtotYzJ84J@jHZdOt}cw>$*wSN}-t-FXcA)-Qd}X2sB>tg`WOuNA%DlJZVol192X zac)u+>OYs9=D6bBE=pwT4w`HTTE+NJ$N4riO+EF)GjSp2u!rD9Mg87y*~b*g5CV1) z-#y-Q1$&&GzS+nLe0L4r_J9W*!BcFivX#f|$N9W=0s^fAX8S=OY3> z#xkP7sE>kmW6voqo)xHo8?GI4(2goY{3%N>DA*T=Y@I+N0>6(2igqrb&9J2g;`I1% z>W|Z9%+)5U!cK+ujthorO{>!zr5p_^jMdZnOtJQ8m+5dn0mUnfU=&_d2xweNYZ&yq zv1Jq3pBSb%3fw(N1jd)(RaR)%VYOPj6>jOH1eH_%7*vcI|M`ou>XuIkMaXihL}(~S zsxTk>UZwYQ_u*iN9kq30TIO>-ho~lAD3rKb?8v2jSC9?t+1}PCx^Lm>KHvm$641j$ zKI$vSsZa6AenC?ymmrHyUw{Q_6h0bL(xc~W)NC6apWEa{tjDK=3S*!yADcN4IN|}u zNZg4PR}F%fkE2I3RkaQdRe7KUXyOz=q7U23>21$0su`1BqAchr^P2|AqNthD}9TAh+G(_i>|$;Kt4ymCMb$0oRCDT-)uv z0{~v!_r@wZeu#G3@Bpr=u*T4P+H~s$%G4}q02L9u6mdPXCN%?+M;PG7M?j2QR?1o) zEE=b!3uQE;V^8rzS7!yQ9<}ZrLqSEV{D+0>zIdAiG*%Ek-=#NbEITeefmrGg-xW>V zK18f?mRC=!-6*d8QUtDD^Av6vx@RvFOhA4V`yJa{_y`y{X^n+q&9LGJv^Hr#E+;Td z?i+GSelRM&;bpGM#u_I4#y?AzDm;A zjq9CV&uVlfN6EDkoT9K@R&2zI0J{T?YHmBrTuqql?PrIBe|#MM_L>S~310 zesVz;C9QQBkO0p;kni%4%G2$oxfVm*7ESJ%bHJ33nB5o?hh$pC4WD`R>$r*&t zwjE%#HFL)=bF2beI-h2MRC-|4WIQ&c&SdnxW zl^jG+HBh{y=p@rJdp0e-W$i;vCz3n3uOQv*0Bb9<|FO$JEdGH`9n}}61(^dNAwt2k zac3}H4CrbIj1GqGaq^!(=?B@ff)quhP6cD5;P`K|YL$^dykDPH?U%i6+}TMJFAY90 zmeH@nlzc<29@7GiJOK4mqBCM zWaj*$<}PfC?jaD*4`xt56AOa~qymHVkxK@SOcP8AIw|VGpy=j$8%r+Dl&?l!8h0MW zjhhl92PZQH$3OK;)^uw2c-rku6vaWT#g>H(z$PWBuQ3x6g6WwNFSCXcPJ#bKD4`1n z>~HNeD)NP~x*)M;(|&$)$zs@q1K=!e@PWygPtc-|DDprHr_LQ%{W`6b`XvqLsNu9 zfjY$YX_&XL6VB9B^2BZTERX8)@^RtDKHbb`DTYz4Rxf72PIb=3oU&=T2vVc^@qgE- zu2dkJVyr1mp?*Cc%8F+ep8BgVfUk$`U~FUWz7pmz4T?=!6$evqM2j&>h?}=}VLQS5 z0N57*EE>k_-6FU)-HxQq)Q^pY8D1`KIOS z%>)BRoBurQC2%K%tg}=dOrw&OmSKAalQ=}fN*$%o&tze2WwY#Ik<3FRnt|ni|sQD-189TT7?cqQ~{F}XNLg|0VgRtFEGTxck=KC&x}w&X3JOm7|%3xJlKW* z{+#0KxvxwZ=fB%K3W|?y?5m!UNOk zh&yEtQ>MPv#(R#4`oK=xK&tM_{o2odSXxR2-*8*Um+L%=Pd%tqCc&4ia=dBoJD-mX zONx7Fi2ozvqTfKkZ%pJS!BmkGGvS}m^R!nWaIPx=e~mBzT@g%#{*oVaao^4o9|$6D zrj`Usgf6@W`xslm{U zsu074%#Q*uGlqe5AO&cPu<$GD9RHMuZ@>fXk+8TpI_PSuytizh%EW249B^v8|4C@# zb!M#1}?us$v1lhA8Wh}F~+__*~p`rs|hI+D2lsnkE|y}11j z;8BqfG_1IhpNeQl9U_3k^Z;0eOAZGPV1=P`Q5r1^dqgqFmNF#I=TlHDZs^E zcTo@&ESz)a@_|)=g&xrsUw5@O^C0WY+bqxLGgSs-F&xTr-eUZ6Q?Z;3p9~*<*$G2dr!(n46K73j0EM+d#H1*kkm9f#kzn9zcxQ6P2uom_qG3{<)ggME# zwtW%i3zq5dB9{7r<~B^Zt->{T`O?i=;H&Un4+)Ur=#z@K}qF4hH-HV+W!+aH2S<^b>`28{7c# z=SD9GI)qJ5rNgi}=~Ydegfu8&2Wq5EY=k zGI^*!ttUoAWGm>?%eNg)0TlaY8-DQtV&EHW)QEU{F?f3QceR4yA~7DUy=ePdto<yd*9hmR_V?7U*{#d20t^~QHnGoRCtfn*3@>NJ3nFVP5K{Ru} zD<1uHV^@(3pcmwA%2sX8CUSBSlm3=4lEk3m#7`;9i0YN(`@lyt{Lyov3?#y zx;nxJg7==KapT)y1=~C@FWp`wb{%P2=|fnZZ%Z0^w&M0@+!0UD50g=d-h?x)sE~vK zWtJPOK4k4kkVT8C z@+dT9&!K;QCM7ZbqWnXTaB|M>05iY+08Jh6(c>U1B2Hmfc}9FDrf>W3Cx|N=sAxFU z!q$A*bHoKrl$jA6KEu~AsFf!bpO&>;K1}V^n>7c1TSr(o{<#4mD$fB~zjrp%(@k+n zsQsO-#Qo2kuIb+g*@EwM z#s9&)hV8#bL0Z)=b4}_-rNB){_rWeqw|B{m03&}OEq1pm<`ab%fqoghR%>{g zT}Q9B4Nb3-%>t*BmevDLhbW$h?9PMrSN$R^T%_Y|1-Sou?6Qh1qF)!yo`BBwT1vbI z4=1&vM935Qk?-|avCp_+h(!xz4Zi0z?4j_JeIqXP)-)4$8PNE(XnfEtl{qfy05830I>yKAbu^Zr4-WW+&?J=Mi=+WYi7RvY+A zbxsAw@DIXSp#zG=H;4};9`q~3R?bs96nXNoesfUz6WG&J_qUJyevy@j&3b?nPsl=G zvrz0{vY=knD#myKAc;ioGI`$(kE_t{!}n={L?da z&7dGUb(!M^(SMI$2OLbqkp5Vs-HSDwM!8#I0%D_!4JNiTz&0ERRNR`M?F3i}D^()! zw_Tf~KsN-()xYdW@)_{^yuPVRd|7oBP@(TZh?g8Fiz|5X6=`X?W<^q*1v zeJ{T54B`WOzf%^$LAU*brD^uK&s(8(k<}v!sMNm80yz^Ixb*-}Ax;rCABuqb&M~FI zao^xiT-@3(iXiu9fT2xctGe~7--o8a###hyK{EF$9#?gULs|G=sOP+khFV@F8nLc` zj#$!%M*SkpS}K{DaC!Eq>1StC017gy9Gr<5AIR=`wAwp-w}Nj`74x0oO@Wg*Q*G&}VqWf$nu-SglPu*(N=J{(?jtW+6;+J<&|*whG&Z0rfG^ zjDvyG(T zL9?Y_`zkW8YZ*X$5LQiK*z5rU$7kMk?_SoxHdZn20-p>PAR5?(?E)xBJ|uyF+3e)D z?KGo~5THjhY|Y_la%l3bQtOjk2w*Htc?aT{D8?sr+b%&u2(_mn z!YL)>xiTA(L>1A?1{X2a)DRSOxM88Oy3&I_O4g7!|A@}MFXTq;S zm*I@YdvLl++vK$J6A1=aXrC5Ok%!7$tBPx4R?!6{hfDiFcP-NC<~BB?*w& z@bdlcSmhP9T|}ZXNqT`TZUw*R*jH|90kFdL-B`*xy@(P|cgo9&R{u9>_^UNiezj`VZK8eUSMsdPuw0WMG2!D9rP1bxuWi2=^oM+S@AE!wJ^^g)$mv;64 zxu-L1QY4;%Au;FFz&s=Dpkw^U#Vm>bpe?SRt5zdob|C!a5?doZvpw#{^C}c=h;6uyeafKJ@Gg4D)0sL z!;p*l6*`Q%rDT`FvyqQP0m+_ztPpFS#Df`~6XTMuJv)J$BEvN;rhhO zw=bnRy^-M%G5|-;+dnZ7(v-1rv#<2yJ$*gNr=R^p=5-8dpMwI@Sr!>?7vbsXSdxO& z@=%2RyLfshNM@qCGmHGOOMq_BbW8koeV-l;&?V; zTkt0FyonG@P;)o_!siL(E6Fs%fqKfloTx6wdMtl z6Xh9(e4vUP-n6s_!f}abCl9PoZ0FxQfmMw%XxlkH$n01p5cfO+>yonC3b~U-ka(eW zi8bYi^wVJ5dU^UwInyKOvyM~kny(GFmOUezu!e~tVbAG1xC<8fib+G{b-sv{cHC`4 zLREPop0~N@KyWzZm0*X1X6*wBbRE75{KAI?Trduf++WJ7%po}=(Q?jp+i%8R_=L;f zDYN*xR&x4jOxbUpA>t z89RRO@V~>ggnWJeKarJcnm8$TDrF6-is|-LRj|7u1A`%X|4h6-2Kg8BW5L&I0lhY; zi-*6ril7yK#FlXts_sWt&i-TmG9-SV8^T@$U4PxF6jAu4Nry6;J0#N|O^9J>v!ysa zhc4&s*SO0Z0-R&^OXjN8o-kUh*WcNUTm*5lQ@0p}n3RjNNaM2ch#{Ht{wH3M%f=lHj} z?xrb|9w0_M5?lf2pi2aP#=t7KelV=DGKREa^j-(bW_}R%c(1>Dnw5!LRt~4*W5Xl$ z%kkn_ngux)V0Y+7eEu8e7!z zQ%_Q0+@S0R)SKqUgL=~_;i;}*2kjCk8I8K7sM{wWHY*CpmkiK7_}7(r z{{jO=|G{j2GUn3&bMD?Nxdng5%#uO?IfBl`q;H)-zI4pgNs83 zXD_rqH~+Ur-TMzxH+TZ#)IiNv)eG6JH$(w`h8j>mF5MTP*8?eJ4%cjUAieLv#+H$z zMwbjxr`5YKi%F8?_M0y4hBkZgDK})w7jSg(=yN;qim9bY%aK+>NMv1gDcMyyrywqaqO22&4WV8un(VCsIAw~m-yaBN5!DD;9|*m07rPIdxEZUT zyRBN?xqK}D{!DK2X6P)>svYsn3x!)B)h6F8tScQE{-hIDPLf|#T0_-$wT8BCuZy!$ z*n#^p+bQ(Rx~80>lf;RPU$u>TrUJ6lP&JR1O2B9wy>L-NiG zls|W|OXk^^;}R0(`F%g{2|M_NUbO*Y@X>YrcAmA=BW-_0)A) zp(($yFw*9P^ZyRi#FdOSs1ACgr`-e-;l|7Y#!sVO^&BPPoed3eP`? zL!LzpKTb79kRIi>E18u~Kd2|C4W1s-+MHoP!5Jd0+sweHI~IcZ!N5GBop=Fv(tb5H zb#RfVi&p0!97`d;S6N5jjg=$WC|63e5Lud(%tiwJezvKP8`G3y)7kt0_|9k)bpZ5NR{g1tW(2`zz zP{8Tw)cS+0sYb-!Husd4-W!XO2BjtOc{K;oYG)3?tYJTf_pVS@6vr^%FfeCw#2k4^ zW2&FoY#DuypIz7{1vcYUoLviC#Z(;uHkDfKKW7Y?Z#v!(ADe>8NL1$g{QBeg(7K5Uck8jfftYqBljcNXW@jalR}U41f5YC;cgh&1w|rCllvuZ$JBL+ zq8@I6^PodV%fXI|#+I4dnqSD;P4$%CY}rOp{;LMd3fsS`r}=pQq>Bo(6K8R((yyFMDF{tD+mop-LaoJ_E>GsG z@7qr$l6;u_)TB3cNIsa^q;i2&?J>Oxvk@R%_%WMq{AXuy=Uwtq>^GVsA*@zS2C^Zz(V{^S?-zQzuDCmNYsJH%eZ8UdnMOhq73b ziU^;=@6#wy(eqD*_VD{)rHHyXRQje`pW!Q_M*_> zETQUsCnrOBfc~4k+z?1+8HkVJt?Pj?MQUD2o*;W4xVLH!diiF)Kc<3Nbg!k8=N)|H^)1PV=+A(;1e3)u2q8qx{>3x3IoOi;vJA~~iU z7*D`-i44h+hAFU97yo=#L%|==D)X0@;tvBOAG)81Cde_1`H)b=GqyymY4 zfwXJfat`{O4J_D382-IrBVlKU$uD0Vw`Bs(Oo8XL{oE-DS8q~UF-S=y<(y2a#%`pn zb9Py;vz=2yolcEP{VU^^Cmpj^V((~dNNQ_er?qFS?ppx?9n|x7X}TR`EFpL%F8+E# zg!osXL5?zGdzQo3<2N)yNsgOb&B;6IKRDyY1Jt-1CZ)Ee34B9V^7kT)lZqzX^w=kB9lbJe!f(Mxiap zpO$_1^tsE%>(3^wSKKhiQYOC&4bd##=rK_^{AaXnOg%PyWl^jKvB$~%?k-rlr6P8| zyy91rb;wF`&lj#hDC;D0c`@q)A`uod^5cBAiGoIl@eUxp224%N+f~LX%G!qJs?J!e zQ*jquN7oR$K1A+a${_no#3$RvF;&eGqIs5wnM;;(bVErdXF1|xEgXxwUrXwA;I2BS zq9|is68OjX?4Jk*c*$2>`~h8}+6fED!o`Wt-nUCdEP!m7HqyP2dTCGBYLE7jO(G#H zh9yV|kW|ixJJ#6ZyI_Eo%sbtsKzz)7b58CuC9OF(GAe}{5hIDD4LY>Ff^xh8jhP^ z=?GnAO=*67?3lKY8Mywg(>?{(dne8vT&@@^UaeGQ#%f@{`;y~8=~7+Wxj&@!ceSLN z?JW0dqtt$)b|w6X($ZiH9lGvhS_k=dFOpQV@kAV3qYBbfxGXo^feiD|la|kylZhqO zH>8j4i((zGJIaJAJ{_Wa|5p5W+DUD-Yeo@elW&b{)J{m(i`x3+aqIE3=><66RIxCS zPK9mAm0?G1LYCEQxUW5JnvLl93_Pju^eOsp1H7x`SoI2|;naDUK~6@n?MB;o9GtZO z?zPfeA}f;+(5(;kY{y-m&#W@c{4_TKrnKN^c=YNvbOpvzo%1Wl*S|QbJmLMHf@jW! z_4kb-@Y@naRBXcE;JpFIrKM8VirEO+jBqlgP-C<#CI&xluko!&+NmW zf$I$-2TP4BwCyi+gDdcqfA>2(gDddf{at~#Kw5!Ulu?PfCqP<(H~F5H8&th>_l`~d zxUuu*FB=5hfkz5auU*2-{%M3}i84OUu0nSOmILgMVjZ=sz49Xabl=*TbEt;N(`PQd z$E!G@;aTh-Y8Mj;S*S7QRd?b_fu%U~f3uSN;C=poQprhzTksOVO77D>e}m}z*J;7_ zIrqdahI-+89))gEq9)hDapXA8}mf%hvvb!b|43oEZZ5BiOeY5YLD1{sVGx z2Z58m6FB4#8kM$ED^lk6k*|#{xy~?FX8QVSn7Jis(iY|0gJ`2WDVeeW+7SJgXlU2- zVpv`!EbR8IIHGtKPrt!^`z{=xUws^^wK5XvT=}#3?~(-NBc$LrHnK(3)zncEf10j+ zTsDyu%Iv=Uphwo}fxRfuA&@ty@I|BvKWWKEaeB`EW { Widget build(BuildContext context) { return Scaffold( body: ProfilePage( + bottomActionText: 'Log out', itemBuilderOptions: ItemBuilderOptions( inputDecorationField: { 'firstName': const InputDecoration( diff --git a/example/lib/utils/example_profile_data.dart b/example/lib/utils/example_profile_data.dart index 3091752..5634051 100644 --- a/example/lib/utils/example_profile_data.dart +++ b/example/lib/utils/example_profile_data.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:profile/profile.dart'; +import 'package:flutter_profile/flutter_profile.dart'; class ExampleProfileData extends ProfileData { ExampleProfileData({ diff --git a/example/lib/utils/example_profile_service.dart b/example/lib/utils/example_profile_service.dart index ddb42ee..52139bb 100644 --- a/example/lib/utils/example_profile_service.dart +++ b/example/lib/utils/example_profile_service.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:profile/profile.dart'; +import 'package:flutter_profile/flutter_profile.dart'; class ExampleProfileService extends ProfileService { ExampleProfileService(); diff --git a/example/pubspec.lock b/example/pubspec.lock index 9668a4f..e78ef51 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -62,6 +62,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.0.1" + flutter_profile: + dependency: "direct main" + description: + path: ".." + relative: true + source: path + version: "0.0.1" flutter_test: dependency: "direct dev" description: flutter @@ -102,13 +109,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.8.2" - profile: - dependency: "direct main" - description: - path: ".." - relative: true - source: path - version: "0.0.1" sky_engine: dependency: transitive description: flutter diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 0c2ba24..f1d5956 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -34,7 +34,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.2 - profile: + flutter_profile: path: ../ dev_dependencies: diff --git a/lib/profile.dart b/lib/flutter_profile.dart similarity index 93% rename from lib/profile.dart rename to lib/flutter_profile.dart index 1a644a7..37389fc 100644 --- a/lib/profile.dart +++ b/lib/flutter_profile.dart @@ -1,4 +1,4 @@ -library profile; +library flutter_profile; export 'src/widgets/profile/profile_page.dart'; export 'src/widgets/profile/profile_style.dart'; diff --git a/lib/src/services/profile_service.dart b/lib/src/services/profile_service.dart index a3b62e0..a200dfc 100644 --- a/lib/src/services/profile_service.dart +++ b/lib/src/services/profile_service.dart @@ -1,7 +1,7 @@ import 'dart:async'; import 'package:flutter/material.dart'; -import 'package:profile/profile.dart'; +import 'package:flutter_profile/src/models/user.dart'; /// ProfileService can be extended and set for the profilePage. The following method can be overriden. /// diff --git a/lib/src/widgets/avatar/avatar.dart b/lib/src/widgets/avatar/avatar.dart index 80cfc2b..6fc3eec 100644 --- a/lib/src/widgets/avatar/avatar.dart +++ b/lib/src/widgets/avatar/avatar.dart @@ -1,7 +1,7 @@ import 'dart:typed_data'; import 'package:flutter/material.dart'; -import 'package:profile/src/widgets/avatar/avatar_style.dart'; +import 'package:flutter_profile/src/widgets/avatar/avatar_style.dart'; class Avatar extends StatelessWidget { const Avatar({ diff --git a/lib/src/widgets/item_builder/item_builder.dart b/lib/src/widgets/item_builder/item_builder.dart index 4321595..fa79807 100644 --- a/lib/src/widgets/item_builder/item_builder.dart +++ b/lib/src/widgets/item_builder/item_builder.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:profile/src/widgets/item_builder/item_builder_options.dart'; +import 'package:flutter_profile/src/widgets/item_builder/item_builder_options.dart'; /// ItemBuilder is used to set the standard textfield for each undefined users data item. /// diff --git a/lib/src/widgets/item_builder/item_list.dart b/lib/src/widgets/item_builder/item_list.dart index 21c7af2..367639e 100644 --- a/lib/src/widgets/item_builder/item_list.dart +++ b/lib/src/widgets/item_builder/item_list.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:profile/src/widgets/item_builder/item_builder.dart'; -import 'package:profile/src/widgets/item_builder/item_builder_options.dart'; +import 'package:flutter_profile/src/widgets/item_builder/item_builder.dart'; +import 'package:flutter_profile/src/widgets/item_builder/item_builder_options.dart'; class ItemList extends StatefulWidget { const ItemList( diff --git a/lib/src/widgets/profile/profile_page.dart b/lib/src/widgets/profile/profile_page.dart index 3d76986..aae0db7 100644 --- a/lib/src/widgets/profile/profile_page.dart +++ b/lib/src/widgets/profile/profile_page.dart @@ -1,6 +1,10 @@ import 'package:flutter/material.dart'; -import 'package:profile/profile.dart'; -import 'package:profile/src/widgets/profile/proifle_wrapper.dart'; +import 'package:flutter_profile/src/models/user.dart'; +import 'package:flutter_profile/src/services/profile_service.dart'; +import 'package:flutter_profile/src/widgets/item_builder/item_builder.dart'; +import 'package:flutter_profile/src/widgets/item_builder/item_builder_options.dart'; +import 'package:flutter_profile/src/widgets/profile/profile_style.dart'; +import 'package:flutter_profile/src/widgets/profile/proifle_wrapper.dart'; /// The ProfilePage widget is able to show the data of a user. By default the user is able to change this data. The widget has a couple of parameters listed below: /// diff --git a/lib/src/widgets/profile/profile_style.dart b/lib/src/widgets/profile/profile_style.dart index 1d38b0d..5d09954 100644 --- a/lib/src/widgets/profile/profile_style.dart +++ b/lib/src/widgets/profile/profile_style.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:profile/src/widgets/avatar/avatar_style.dart'; +import 'package:flutter_profile/src/widgets/avatar/avatar_style.dart'; /// ProfielStyle is used to set a couple of style paramaters for the whole profile page. /// diff --git a/lib/src/widgets/profile/proifle_wrapper.dart b/lib/src/widgets/profile/proifle_wrapper.dart index 580ea0a..866fe49 100644 --- a/lib/src/widgets/profile/proifle_wrapper.dart +++ b/lib/src/widgets/profile/proifle_wrapper.dart @@ -1,11 +1,11 @@ import 'package:flutter/material.dart'; -import 'package:profile/src/models/user.dart'; -import 'package:profile/src/services/profile_service.dart'; -import 'package:profile/src/widgets/avatar/avatar.dart'; -import 'package:profile/src/widgets/item_builder/item_builder.dart'; -import 'package:profile/src/widgets/item_builder/item_builder_options.dart'; -import 'package:profile/src/widgets/item_builder/item_list.dart'; -import 'package:profile/src/widgets/profile/profile_style.dart'; +import 'package:flutter_profile/src/models/user.dart'; +import 'package:flutter_profile/src/services/profile_service.dart'; +import 'package:flutter_profile/src/widgets/avatar/avatar.dart'; +import 'package:flutter_profile/src/widgets/item_builder/item_builder.dart'; +import 'package:flutter_profile/src/widgets/item_builder/item_builder_options.dart'; +import 'package:flutter_profile/src/widgets/item_builder/item_list.dart'; +import 'package:flutter_profile/src/widgets/profile/profile_style.dart'; class ProfileWrapper extends StatefulWidget { const ProfileWrapper({ diff --git a/pubspec.yaml b/pubspec.yaml index 0c7b99f..e425458 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,4 +1,4 @@ -name: profile +name: flutter_profile description: A new Flutter package project. version: 0.0.1 homepage: diff --git a/test/profile_test.dart b/test/profile_test.dart index 322216e..674b073 100644 --- a/test/profile_test.dart +++ b/test/profile_test.dart @@ -1,7 +1,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_profile/flutter_profile.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:profile/profile.dart'; import 'test_classes/test_profile_data.dart'; import 'test_classes/test_profile_service.dart'; diff --git a/test/test_classes/test_profile_data.dart b/test/test_classes/test_profile_data.dart index b13ccc3..1207ab6 100644 --- a/test/test_classes/test_profile_data.dart +++ b/test/test_classes/test_profile_data.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:profile/profile.dart'; +import 'package:flutter_profile/flutter_profile.dart'; class TestProfileData extends ProfileData { TestProfileData({ diff --git a/test/test_classes/test_profile_service.dart b/test/test_classes/test_profile_service.dart index 185df60..1f79a75 100644 --- a/test/test_classes/test_profile_service.dart +++ b/test/test_classes/test_profile_service.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:profile/profile.dart'; +import 'package:flutter_profile/flutter_profile.dart'; class TestProfileService extends ProfileService { TestProfileService(); From 2f633eff7cea3e78d6267e8968fb92c8826d2367 Mon Sep 17 00:00:00 2001 From: Jacques Doeleman Date: Wed, 21 Sep 2022 15:10:25 +0200 Subject: [PATCH 8/9] Updated readme --- README.md | 52 +++++++++++++++++++--------------------------------- 1 file changed, 19 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index 8afd88d..d04c45d 100644 --- a/README.md +++ b/README.md @@ -1,52 +1,38 @@ # Flutter Profile -Flutter Profile is a package you can use to display any user data and let them alter it . -![Gif](example/gif/ImagePickerGif.gif) +Flutter Profile is a package you can use to display any user data and let them alter it if desired. + +![alt text](example/image/example_profile.png) ## Features -With the Flutter Image Picker you can select an existing picture from the gallery of your device or make a picture with the camera to use in your app. This package is made for Android, iOS and Windows. +Display every type of user data. +Display an image/avatar. +Enable the user to alter his data or withhold the user from doing so. ## Setup -To use this package, add `flutter_image_picker` as a [dependency in your pubspec.yaml file](https://flutter.dev/docs/development/platform-integration/platform-channels). +To use this package, add `flutter_profile` as a [dependency in your pubspec.yaml file](https://flutter.dev/docs/development/platform-integration/platform-channels). ## How To Use See the [Example Code](example/lib/main.dart) for an example on how to use this package. -You can add an optional `ImagePickerTheme()` to the `ImagePicker()` to change the layout of the Image Picker Dialog. You can add the following parameters to the `ImagePickerTheme`: -An example on how to add a parameter to the `ImagePickerTheme()` is: `ImagePickerTheme(imagePickerTheme: const ImagePickerTheme(title: "Image Picker"))`. -As a whole you get `ImagePicker(ImagePickerTheme(imagePickerTheme: const ImagePickerTheme(title: "Image Picker")))` - -| Parameter | Explaination | -|-------------------|----------------| -| font | The font that is being used in the Image Picker Dialog. | -| title | The title displayed at the top of the Image Picker Dialog. | -| titleTextSize | The font size of the title mentioned above. | -| titleColor | The color of the title text. | -| titleBackgroundColor | The color of the title background. | -| titleAlignment | The alignment of the title text. | -| textColor | The color of the text that is displayed in the Image Picker Dialog. | -| iconColor | The color of the icons that are displayed in the Image Picker Dialog. | -| iconSize | The size of the icons that are visible in the Image Picker Dialog. | -| iconTextSize | The font size of the text underneath the icon buttons. | -| spaceBetweenIcons | The size of the space between the two icons in the Image Picker Dialog. | -| makePhotoIcon | The icon that is displayed for the 'Make Photo' functionality of the Image Picker Dialog. | -| makePhotoText | The text that is displayed underneath the 'Make Photo' icon. | -| selectImageIcon | The icon that is displayed for the 'Select Image From Gallery' functionality of the Image Picker Dialog. | -| selectImageText | The text that is displayed underneath the 'Select Image From Gallery' icon. | -| closeButtonText | The text that is shown on the 'Close Dialog' button at the bottom of the Image Picker Dialog. | -| closeButtonTextSize | The size of the text that is being displayed on the 'Close Dialog' button at the bottom of the Image Picker Dialog. | -| closeButtonTextColor | The color of the text that is being displayed on the 'Close Dialog' button at the bottom of the Image Picker Dialog. | -| closeButtonWidth | The width of the 'Close Dialog' button at the bottom of the Image Picker Dialog. | -| closeButtonHeight | The height of the 'Close Dialog' button at the bottom of the Image Picker Dialog. | -| closeButtonBackgroundColor | The background color of the 'Close Dialog' button at the bottom of the Image Picker Dialog. | +Underneath are all paramters, of the 'ProfilePage' widget, listed with an explanation. +| Parameter | Explaination | +| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +| user | The class that contains all the user data. | +| service | The service which determines what happens the user wants to update their profile, update their avatar or press the InkWell at the bottom of the page. | +| style | With the use of ProfileStyle a couple of style options can be set for the form. | +| customAvatar | An option to override the standard avatar. | +| showAvatar | The ability to disable/enable the avatar. | +| itemBuilder | The way to override the standard textfield for each standard piece of user data. | +| itemBuilderOptions | The options used by the standard itemBuilder to alter the function and style of the textfields | ## Issues -Please file any issues, bugs or feature request as an issue on our [GitHub](https://github.com/Iconica-Development/flutter_image_picker/pulls) page. Commercial support is available if you need help with integration with your app or services. You can contact us at [support@iconica.nl](mailto:support@iconica.nl). +Please file any issues, bugs or feature request as an issue on our [GitHub](https://github.com/Iconica-Development/flutter_profile/pulls) page. Commercial support is available if you need help with integration with your app or services. You can contact us at [support@iconica.nl](mailto:support@iconica.nl). ## Want to contribute @@ -54,4 +40,4 @@ If you would like to contribute to the plugin (e.g. by improving the documentati ## Author -This `flutter-image-picker` for Flutter is developed by [Iconica](https://iconica.nl). You can contact us at \ No newline at end of file +This `flutter-image-picker` for Flutter is developed by [Iconica](https://iconica.nl). You can contact us at From 29a90a377ba44086a15c3ce6e83d04b91eeb83aa Mon Sep 17 00:00:00 2001 From: Jacques Doeleman Date: Thu, 22 Sep 2022 09:53:26 +0200 Subject: [PATCH 9/9] Fixed comments --- lib/src/widgets/item_builder/item_builder.dart | 15 ++++----------- .../item_builder/item_builder_options.dart | 6 +++--- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/lib/src/widgets/item_builder/item_builder.dart b/lib/src/widgets/item_builder/item_builder.dart index fa79807..5a1e9fc 100644 --- a/lib/src/widgets/item_builder/item_builder.dart +++ b/lib/src/widgets/item_builder/item_builder.dart @@ -19,12 +19,9 @@ class ItemBuilder { ); late InputDecoration inputDecoration; - if (options.inputDecorationField != null && - options.inputDecorationField![key] != null) { - inputDecoration = options.inputDecorationField![key]!; - } else { - inputDecoration = options.inputDecoration; - } + + inputDecoration = + options.inputDecorationField?[key] ?? options.inputDecoration; return Form( key: formKey, @@ -39,11 +36,7 @@ class ItemBuilder { } }, validator: (value) { - if (options.validators != null && - options.validators![key] != null) { - return options.validators![key]!(value); - } - return null; + return options.validators?[key]?.call(value); }, ), ); diff --git a/lib/src/widgets/item_builder/item_builder_options.dart b/lib/src/widgets/item_builder/item_builder_options.dart index b6d60a3..a0600f7 100644 --- a/lib/src/widgets/item_builder/item_builder_options.dart +++ b/lib/src/widgets/item_builder/item_builder_options.dart @@ -1,11 +1,11 @@ import 'package:flutter/material.dart'; /// ItemBuilderOptions is a class to store all settings for a field in the profile page. -/// +/// /// InputDecoration sets the decoration for all standard textfields. This is overridden if a field specific decoration is set by inputDecorationField. -/// +/// /// inputDecorationField sets the inputdecoration by key of the user data field. So a field can have its own specific decoration. -/// +/// /// Validator can be used to set a validator for the standard textfield. class ItemBuilderOptions { ItemBuilderOptions({