diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md new file mode 100644 index 000000000..23ced593e --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug-report.md @@ -0,0 +1,32 @@ +--- +name: "\U0001F41E Bug report" +about: Create a bug report to help us improve Flow Launcher +title: "[Describe Your Bug]" +labels: 'bug' +assignees: '' + +--- + +**Describe the bug/issue** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. ... +2. ... +3. ... + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Your System** +``` +Windows build number: (run "ver" at a command prompt) +Flow Launcher version: (Settings => About) +``` +**Flow Launcher Error Log** + diff --git a/.github/ISSUE_TEMPLATE/code-review.md b/.github/ISSUE_TEMPLATE/code-review.md new file mode 100644 index 000000000..5cc53abec --- /dev/null +++ b/.github/ISSUE_TEMPLATE/code-review.md @@ -0,0 +1,21 @@ +--- +name: "\U0001F50E Code Review" +about: Describe (bad) code that needs to be improved +title: "[Describe Problematic Code]" +labels: 'code review' +assignees: '' + +--- + +**Point to the corresponding file and line number(s) which could be improved.** + +Click on the line number in GitHub to create an anchored link to the corresponding code section. For example: + + +https://github.com/Flow-Launcher/Flow.Launcher/blob/master/Flow.Launcher/Storage/TopMostRecord.cs#L8 + +Provide your alternative implementation idea: + +``` +Code +``` diff --git a/.github/ISSUE_TEMPLATE/discussion.md b/.github/ISSUE_TEMPLATE/discussion.md new file mode 100644 index 000000000..8bd88c90f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/discussion.md @@ -0,0 +1,14 @@ +--- +name: "⁉️ Question/Discussion" +about: Create a report to help us improve +title: "[Ask a question or propose a change]" +labels: 'question/discussion' +assignees: '' + +--- + +**Question** +Describe your question. + +**Discussion** +Discuss a topic. diff --git a/.github/ISSUE_TEMPLATE/feature-request.md b/.github/ISSUE_TEMPLATE/feature-request.md new file mode 100644 index 000000000..593163235 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature-request.md @@ -0,0 +1,24 @@ +--- +name: "⭐ Feature request" +about: Suggest a new idea or a feature enhacement +title: "[Describe Your Feature]" +labels: 'enhancement' +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** + +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** + +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** + +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** + +Add any other context or screenshots about the feature request here. diff --git a/.gitignore b/.gitignore index 28366cd03..a293100e6 100644 --- a/.gitignore +++ b/.gitignore @@ -300,4 +300,8 @@ migrateToAutomaticPackageRestore.ps1 *.pyc *.diagsession Output-Performance.txt -*.diff \ No newline at end of file +*.diff + +# vscode +.vscode +.history \ No newline at end of file diff --git a/Directory.Build.targets b/Directory.Build.targets new file mode 100644 index 000000000..4596aa084 --- /dev/null +++ b/Directory.Build.targets @@ -0,0 +1,15 @@ + + + + + false + + + false + + + + \ No newline at end of file diff --git a/Doc/Default Icons/app_missing_img.png b/Doc/Default Icons/app_missing_img.png new file mode 100644 index 000000000..b07eb4262 Binary files /dev/null and b/Doc/Default Icons/app_missing_img.png differ diff --git a/Doc/Default Icons/app_missing_img_01.png b/Doc/Default Icons/app_missing_img_01.png new file mode 100644 index 000000000..2cc466ed0 Binary files /dev/null and b/Doc/Default Icons/app_missing_img_01.png differ diff --git a/Doc/Default Icons/app_missing_img_01.svg b/Doc/Default Icons/app_missing_img_01.svg new file mode 100644 index 000000000..88b84858a --- /dev/null +++ b/Doc/Default Icons/app_missing_img_01.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Doc/Default Icons/app_missing_img_02.png b/Doc/Default Icons/app_missing_img_02.png new file mode 100644 index 000000000..285a68890 Binary files /dev/null and b/Doc/Default Icons/app_missing_img_02.png differ diff --git a/Doc/Default Icons/app_missing_img_02.svg b/Doc/Default Icons/app_missing_img_02.svg new file mode 100644 index 000000000..190ecf469 --- /dev/null +++ b/Doc/Default Icons/app_missing_img_02.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Doc/Default Icons/app_missing_img_03.png b/Doc/Default Icons/app_missing_img_03.png new file mode 100644 index 000000000..11d5466f0 Binary files /dev/null and b/Doc/Default Icons/app_missing_img_03.png differ diff --git a/Doc/Default Icons/app_missing_img_03.svg b/Doc/Default Icons/app_missing_img_03.svg new file mode 100644 index 000000000..904380091 --- /dev/null +++ b/Doc/Default Icons/app_missing_img_03.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Doc/Default Icons/app_missing_img_buttons.png b/Doc/Default Icons/app_missing_img_buttons.png new file mode 100644 index 000000000..62de71f21 Binary files /dev/null and b/Doc/Default Icons/app_missing_img_buttons.png differ diff --git a/Doc/Default Icons/app_missing_img_buttons.svg b/Doc/Default Icons/app_missing_img_buttons.svg new file mode 100644 index 000000000..b9d5e1259 --- /dev/null +++ b/Doc/Default Icons/app_missing_img_buttons.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Doc/Default Icons/app_missing_img_fluent.png b/Doc/Default Icons/app_missing_img_fluent.png new file mode 100644 index 000000000..eafd1bb35 Binary files /dev/null and b/Doc/Default Icons/app_missing_img_fluent.png differ diff --git a/Doc/Default Icons/app_missing_img_fluent.svg b/Doc/Default Icons/app_missing_img_fluent.svg new file mode 100644 index 000000000..7a201cdc3 --- /dev/null +++ b/Doc/Default Icons/app_missing_img_fluent.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Doc/Default Icons/app_missing_img_huge.png b/Doc/Default Icons/app_missing_img_huge.png new file mode 100644 index 000000000..70aea308d Binary files /dev/null and b/Doc/Default Icons/app_missing_img_huge.png differ diff --git a/Doc/Default Icons/app_missing_img_huge.svg b/Doc/Default Icons/app_missing_img_huge.svg new file mode 100644 index 000000000..874a9a0ca --- /dev/null +++ b/Doc/Default Icons/app_missing_img_huge.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Doc/Default Icons/app_missing_img_lightblue.png b/Doc/Default Icons/app_missing_img_lightblue.png new file mode 100644 index 000000000..3b262fc9b Binary files /dev/null and b/Doc/Default Icons/app_missing_img_lightblue.png differ diff --git a/Doc/Default Icons/app_missing_img_lightblue.svg b/Doc/Default Icons/app_missing_img_lightblue.svg new file mode 100644 index 000000000..da713b413 --- /dev/null +++ b/Doc/Default Icons/app_missing_img_lightblue.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Doc/Default Icons/app_missing_img_lightblue_buttons.png b/Doc/Default Icons/app_missing_img_lightblue_buttons.png new file mode 100644 index 000000000..17de0a6fe Binary files /dev/null and b/Doc/Default Icons/app_missing_img_lightblue_buttons.png differ diff --git a/Doc/Default Icons/app_missing_img_lightblue_buttons.svg b/Doc/Default Icons/app_missing_img_lightblue_buttons.svg new file mode 100644 index 000000000..7251fb9f6 --- /dev/null +++ b/Doc/Default Icons/app_missing_img_lightblue_buttons.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Doc/Default Icons/app_missing_img_minimal.png b/Doc/Default Icons/app_missing_img_minimal.png new file mode 100644 index 000000000..e66ea6d6e Binary files /dev/null and b/Doc/Default Icons/app_missing_img_minimal.png differ diff --git a/Doc/Default Icons/app_missing_img_minimal.svg b/Doc/Default Icons/app_missing_img_minimal.svg new file mode 100644 index 000000000..d2b6d22fe --- /dev/null +++ b/Doc/Default Icons/app_missing_img_minimal.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Doc/Default Icons/app_missing_img_minimal_buttons.png b/Doc/Default Icons/app_missing_img_minimal_buttons.png new file mode 100644 index 000000000..d4f240909 Binary files /dev/null and b/Doc/Default Icons/app_missing_img_minimal_buttons.png differ diff --git a/Doc/Default Icons/app_missing_img_minimal_buttons.svg b/Doc/Default Icons/app_missing_img_minimal_buttons.svg new file mode 100644 index 000000000..131ffadf8 --- /dev/null +++ b/Doc/Default Icons/app_missing_img_minimal_buttons.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Doc/Logo/app_error.png b/Doc/Logo/app_error.png new file mode 100644 index 000000000..70599f504 Binary files /dev/null and b/Doc/Logo/app_error.png differ diff --git a/Doc/Logo/logo.ico b/Doc/Logo/logo.ico new file mode 100644 index 000000000..36b1d22d0 Binary files /dev/null and b/Doc/Logo/logo.ico differ diff --git a/Doc/Logo/logo.png b/Doc/Logo/logo.png new file mode 100644 index 000000000..e46db32dc Binary files /dev/null and b/Doc/Logo/logo.png differ diff --git a/Doc/Logo/logo.svg b/Doc/Logo/logo.svg new file mode 100644 index 000000000..1ba18d65a --- /dev/null +++ b/Doc/Logo/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Doc/Logo/logo128.png b/Doc/Logo/logo128.png new file mode 100644 index 000000000..375579f0a Binary files /dev/null and b/Doc/Logo/logo128.png differ diff --git a/Doc/Logo/logo16.png b/Doc/Logo/logo16.png new file mode 100644 index 000000000..c6cb042c0 Binary files /dev/null and b/Doc/Logo/logo16.png differ diff --git a/Doc/Logo/logo256.png b/Doc/Logo/logo256.png new file mode 100644 index 000000000..bc5701ac8 Binary files /dev/null and b/Doc/Logo/logo256.png differ diff --git a/Doc/Logo/logo32.png b/Doc/Logo/logo32.png new file mode 100644 index 000000000..502e4d356 Binary files /dev/null and b/Doc/Logo/logo32.png differ diff --git a/Doc/Logo/logo48.png b/Doc/Logo/logo48.png new file mode 100644 index 000000000..e34d9f16b Binary files /dev/null and b/Doc/Logo/logo48.png differ diff --git a/Doc/Logo/logo512.png b/Doc/Logo/logo512.png new file mode 100644 index 000000000..e12118cb8 Binary files /dev/null and b/Doc/Logo/logo512.png differ diff --git a/Doc/Logo/logo64.png b/Doc/Logo/logo64.png new file mode 100644 index 000000000..839460640 Binary files /dev/null and b/Doc/Logo/logo64.png differ diff --git a/Doc/Logo/resources/flow-header-landscape-transparent.png b/Doc/Logo/resources/flow-header-landscape-transparent.png new file mode 100644 index 000000000..5ed248d2e Binary files /dev/null and b/Doc/Logo/resources/flow-header-landscape-transparent.png differ diff --git a/Doc/Logo/resources/flow-header-landscape.png b/Doc/Logo/resources/flow-header-landscape.png new file mode 100644 index 000000000..e817397fe Binary files /dev/null and b/Doc/Logo/resources/flow-header-landscape.png differ diff --git a/Doc/Logo/resources/flow-header-square-transparent.png b/Doc/Logo/resources/flow-header-square-transparent.png new file mode 100644 index 000000000..15443cd27 Binary files /dev/null and b/Doc/Logo/resources/flow-header-square-transparent.png differ diff --git a/Doc/Logo/resources/flow-header-square.png b/Doc/Logo/resources/flow-header-square.png new file mode 100644 index 000000000..08b16d975 Binary files /dev/null and b/Doc/Logo/resources/flow-header-square.png differ diff --git a/Doc/Logo/resources/flow-logo.ai b/Doc/Logo/resources/flow-logo.ai new file mode 100644 index 000000000..815a850b6 --- /dev/null +++ b/Doc/Logo/resources/flow-logo.ai @@ -0,0 +1,2249 @@ +%PDF-1.5 % +1 0 obj <>/OCGs[28 0 R 29 0 R 30 0 R 31 0 R 32 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream + + + + + application/pdf + + + flow-logo + + + Adobe Illustrator 24.0 (Windows) + 2020-06-25T13:47:04+02:00 + 2020-06-25T13:47:05+02:00 + 2020-06-25T13:47:05+02:00 + + + + 256 + 36 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAJAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A4/iqvZ2yXEpR5VhAUnm3 SvhluHGJmiaac+UwjYBkiG0pViLtdRBlBJSoJ2FdqHMoaIcNmcR5OJ+fPEAIS36qa2FQSZo137kd Nt+uGGgvnOI+P4/ATPX1yhI/D8fgtnT1Bp9YjPuDtkj2eAa44sR2gSL8OSjc24hKgSLJWv2e1Mxt TpxiqpCV9zkabUHLdxMa71HMZyn2t+X9tc3P5T6Hb20xt7iXS4UinFQUYxijCm+2WYpCMgSLDVmg ZQIiaJHNWufLXmt0WKDWmiSL1vRmLSM55VMZkFQHpsDUn2zMjqcPMw7u74uDLSZ+Qnyvv+FpTrtz e+WNGjg1TzOEuJ47qFrmUSPNSRoxFJFFHUl40jO5oOTE1zIwRjnncMewrbautgnz+4NGeZ08AJ5N ze+99KIA7gPmWH3v5h20cNtcS+cpYFJWNWjtrhhI8LK8/NCDSolAFP65mHSiJIOL7R8PucWOpMxx DL9h+P3sztvLXm7UNMtbq28wv9XuI4po0Ek68kcB6+oSZRyB+jME6rDGRBh933cnOGlzSiCJ/f8A fzZT5X0vVtN05rfVL5tQuDKzidixorAfD8VTsQe/3dBg6nLCcrgOEOdpcU4RqcuIvia4/RLNcxzU S7aac+s3qUUA/ACFqNzX9nLcXgmFS2nvvv8ADl+pozeOMlx3htt6d+/n+tRP6ErTem1GHPvtvXuK 1NNsy4fk+R/334vqem2ziy/O8x/vfft5dB133S5ypdio4qSeI8BmpmQZGtg7eAIiL3K3Isk5tf8A lDtU/wC2jp//ACYvcVSbFXYq7FXYq7FXYqmfl7/e+X/mDvv+oObFUsxV2KuxV2KuxV2KuxV2KuxV Xs7O4vLhYIF5SN9wA6k+2XYMEsshGPMtGo1EMMDOfIJtceWfQgd3uOTopYgLtsK+Obw9g8MDIz3A 7nRQ9oOKYiIbE1z/AGJTNbCOPnyrvSlMwNX2eMUOK73dnpdccs+GqUM1jsXYq+4Pyr/8lv5a/wC2 db/8mxirKcVfNXnO5l1jzfqk167GOGSYcVO6xQEqiLUEDoO3vnb6OAx4YiPUD5l8/wBZkOXPMy6E /IME80NZjT9Pit+QImuZCrsGbiywqG2VdiUYfQcllvxN+4fpcnSf3XxP6H115QFPKeig/wDLBa/8 mVzi8/8AeS95eyw/RH3BNsqbXwbLqgtr1yIectvPO0bFvhrIabrSu1Nt8y8Gq8OjVmN18fx3uDqN H4vEOKoyAvv28/2LYdQlml4W9rzY/wC6wS3wqRTttQLmdp9fIyqGO76e6v0D9LhZ+z4iNzyUB15c 7+8n9C+f9IQopltuIJAHJwd+JFAO2Zc/zIAvHz75Du6dzjY/y0iayfKJ7+vehry+leN4nj4+q3Pd q06e3+TmJrtXk4TCca4jxc77v1e9zNDo8YkJxlfCOHlXf+v3foE27BfJmqseg1CwP3QXuaUmg7qE eKQHek0UOpy24uI7GV4CHYSgMVpGKuagdFBqfDMf8x5O4/kfb6x+Pitik5rUjiQaEdcuhPiFut1W nOKfCTbUkrKyoic2au1adMGTJwt2i0RzkgGlpmkUgMgAqAaNXqaeGVR1IJqnMz9jSxxJ4uQvkrZk ulRttpF7cWzXKKFhWvxsaVp1pmbp+z8uWJlEekd7gajtLFimISPqPciNCjaPUZVbr9Svjt/zBzZT nwSxS4Zc3Jw5o5I2ENb6ZcTWzXNKQqacvfx+WZej7OlmiZk1Hl8XE1faMcUxDnLn8P1oRlKsVPUb ZgZMZhIxPMOdCYlESHIo7RtKfUrkxBuEca85H60Fabe++ZOh0Zzz4bodXD7Q1w02Piqydg3rOmrY XCxKWIZeXx7HqR7ZZ2jpIYJARJNjqw7M1stRAykAKPRBQwvNNHDGKySMEQe7GgzBhAykAOZc/JMQ iZHkBad6h5bjs4FcyM7V4swAC1pXbOhPYuOIFyPE87i7cnORqIEftSN14uyjsSPuzQZocMzEdCXo sUuKIPeFuVs3YqynyOiEXzkfGojUH2bkT/xEZ0HYMRcz7v0vM+0kjUB09X6EZqN3p5tZ1dw1yfUT gHNQQSqjip/Xm4yTjKMgT6txV/DkP0uowYpxnEiPp9JuvjzP6GL3hHoAeJGartY/ugPN3/Zg/en3 ILOcd87FX3B+Vf8A5Lfy1/2zrf8A5NjFWU4q8J8wflf59nv9YutPtwj3RnNrKlxHG37ySo35ArVc 6U9o4DijEncV0eVxdmZ455TrYmXUdUo8of8AOPXmq91qO884SrDZRsGnjE3r3E/GlE5LyCqehPKv gO+UZe04RjWPm7HH2fKUrnyfRiIiIqIoVFACqBQADYAAZoXct4q/P7Uf+Ohdf8ZZP+JHFWX6BZQ2 miJcAVlnUySN3oCaD7s67srFHHg4+p3LxHa+eWXUcHSOwQ3mCF44YizKSZBVVqafC3c0zN1EpERs df0Fq0PDcqv6f0hjV9/eL/q/xzm+2P7wf1XqOyvoPvRsQJ8k6sBuTf2AA/54XuaaXIu5wECcSe8I zTfOnl6x0y20+TRnukWJkupjeXETs0o4yCNYyEQMoAIoeQ65hg10emzQMjYmOn8I6MaiMbGVolZY mkYxK+7Ba/DU+NMycIqLo+0pcWX4OLrHMGc0XgQD71GVakE07DsLLGJlZpDPN6jKAKkkdBQAA5Tj ibDsdXnicctxyRmbB49kcur28WjWVvC6M/pskykVKFu9PHOjwavEMMYmQ5G3mMmhyy1E50eYrz/Y g9FkEmpykdBZXwH/AEhzZp9bnGXJY5O90eE44Ueappd3MunTWbxiSGYFoWWREKt/lVOy7VNczdDq pY4GNWDuNxsf1Ou1+lhPKJg1IbH0k2PLbmlE6SI/7ynI77EH9ROazMZGRMuZdth4eGo8gmvlu/it Dd81LerGFUKUBrX/AC2X8Mz+zNQMRkT1Hl+kh1na+lllEKNUfP8AQChLiDUrqT1J5Fleg+JpYzse w+L36ZjZRlyG5Gz/AFh+ty8MsOIVAcI/qy/Uo6fOlvf207glIpUdgKVorAmlaZTgmIZIyPQgt2px meKURzlEj5hONVub69vyYWAtz8SRSSxAAgUNfjIH35uc+syyzXD6e4yj3V3ul0ukxY8NT+vvEZd9 9yU3MD8TLxUAH4vjQnf2BJzC1soT9URR67j9bsdGZR9JN92x/Uhc1zsHYqnflzW7TTEuhOkjGfhw 9MA04cq1qV/mza9ma6GDi4gd65fF03a/Z2TU8PAQOG+fnXke5BXN9FLdTTKG4yOzKDStCa775k/y rj32lzPd3+9jHszIIgEjYAfZ7kLNM0hqdgOgzV6rVSzSs7Acg7LTaaOIUOanmK5LsVfcH5V/+S38 tf8AbOt/+TYxVlOKuxV2KuxV2Kvz+1H/AI6F1/xlk/4kcVZjBKq+VUo4Di2am+9aHOw0sh+V5/wl 4fUwJ1p2/jH6GMyXkstGnlL06cjXBLNGIuUvtc+GnN1GPyCAnl9SQt26D5ZzWs1Hi5DLp0eg0mDw oV16pra/8odqn/bR0/8A5MXuYrkpNirsVdirsVdirsVTPy9/vfL/AMwd9/1BzYqlmKuxV2KuxV2K uxV2Kph/zr//AC9/8k8Vd/zr/wDy9/8AJPFXf86//wAvf/JPFXf86/8A8vf/ACTxV3/Ov/8AL3/y TxVcn6Cr8P1j35+l+GX4OZ+n/Oac3L+L4Lv9wlf93f8AJLL9/wDa/sadv6f2vs78sPS/5V55d9Ll 6X6Pg4c6cqcB1ptmC5jJ8VdirsVdirsVfB2ofoD6/c1+t19V6/3f8xxVD/8AOv8A/L3/AMk8Vd/z r/8Ay9/8k8Vd/wA6/wD8vf8AyTxVOLX9Bf4R1Kn1rh+kLDl/d1r6N5Sn44qk/wDzr/8Ay9/8k8Vd /wA6/wD8vf8AyTxV3/Ov/wDL3/yTxV3/ADr/APy9/wDJPFXf86//AMvf/JPFXf8AOv8A/L3/AMk8 VTLQP0D9el4/Wq/U73r6fT6pLX8MVS3/AJ1//l7/AOSeKu/51/8A5e/+SeKu/wCdf/5e/wDknirv +df/AOXv/knirv8AnX/+Xv8A5J4q7/nX/wDl7/5J4q7/AJ1//l7/AOSeKv8A/9k= + + + + proof:pdf + uuid:65E6390686CF11DBA6E2D887CEACB407 + xmp.did:984c12c0-30f8-ae46-9ab4-359a8f3aef04 + uuid:7e2cd4d7-747e-4215-b83c-d43b7e8dadd2 + + xmp.iid:9520677b-5829-7f4e-b7ba-47dd9cadb709 + xmp.did:9520677b-5829-7f4e-b7ba-47dd9cadb709 + uuid:65E6390686CF11DBA6E2D887CEACB407 + proof:pdf + + + + + saved + xmp.iid:7e0fac8b-8f59-c34b-a801-a9c4f4f6a483 + 2020-06-18T11:15:20+02:00 + Adobe Illustrator 24.0 (Windows) + / + + + saved + xmp.iid:984c12c0-30f8-ae46-9ab4-359a8f3aef04 + 2020-06-25T13:47:02+02:00 + Adobe Illustrator 24.0 (Windows) + / + + + + Web + AIRobin + Document + 1 + True + False + + 800.000000 + 800.000000 + Pixels + + + + + Inter-ExtraLight + Inter + Extra Light + Open Type + Version 3.013;git-d82f67bfa + False + Inter-ExtraLight.otf + + + InterV + Inter V + Regular + TrueType + Version 3.013;git-d82f67bfa + False + Inter-V.otf + + + + + + Cyan + Magenta + Yellow + Black + + + + + + Default Swatch Group + 0 + + + + White + RGB + PROCESS + 255 + 255 + 255 + + + Black + RGB + PROCESS + 0 + 0 + 0 + + + RGB Red + RGB + PROCESS + 255 + 0 + 0 + + + RGB Yellow + RGB + PROCESS + 255 + 255 + 0 + + + RGB Green + RGB + PROCESS + 0 + 255 + 0 + + + RGB Cyan + RGB + PROCESS + 0 + 255 + 255 + + + RGB Blue + RGB + PROCESS + 0 + 0 + 255 + + + RGB Magenta + RGB + PROCESS + 255 + 0 + 255 + + + R=193 G=39 B=45 + RGB + PROCESS + 193 + 39 + 45 + + + R=237 G=28 B=36 + RGB + PROCESS + 237 + 28 + 36 + + + R=241 G=90 B=36 + RGB + PROCESS + 241 + 90 + 36 + + + R=247 G=147 B=30 + RGB + PROCESS + 247 + 147 + 30 + + + R=251 G=176 B=59 + RGB + PROCESS + 251 + 176 + 59 + + + R=252 G=238 B=33 + RGB + PROCESS + 252 + 238 + 33 + + + R=217 G=224 B=33 + RGB + PROCESS + 217 + 224 + 33 + + + R=140 G=198 B=63 + RGB + PROCESS + 140 + 198 + 63 + + + R=57 G=181 B=74 + RGB + PROCESS + 57 + 181 + 74 + + + R=0 G=146 B=69 + RGB + PROCESS + 0 + 146 + 69 + + + R=0 G=104 B=55 + RGB + PROCESS + 0 + 104 + 55 + + + R=34 G=181 B=115 + RGB + PROCESS + 34 + 181 + 115 + + + R=0 G=169 B=157 + RGB + PROCESS + 0 + 169 + 157 + + + R=41 G=171 B=226 + RGB + PROCESS + 41 + 171 + 226 + + + R=0 G=113 B=188 + RGB + PROCESS + 0 + 113 + 188 + + + R=46 G=49 B=146 + RGB + PROCESS + 46 + 49 + 146 + + + R=27 G=20 B=100 + RGB + PROCESS + 27 + 20 + 100 + + + R=102 G=45 B=145 + RGB + PROCESS + 102 + 45 + 145 + + + R=147 G=39 B=143 + RGB + PROCESS + 147 + 39 + 143 + + + R=158 G=0 B=93 + RGB + PROCESS + 158 + 0 + 93 + + + R=212 G=20 B=90 + RGB + PROCESS + 212 + 20 + 90 + + + R=237 G=30 B=121 + RGB + PROCESS + 237 + 30 + 121 + + + R=199 G=178 B=153 + RGB + PROCESS + 199 + 178 + 153 + + + R=153 G=134 B=117 + RGB + PROCESS + 153 + 134 + 117 + + + R=115 G=99 B=87 + RGB + PROCESS + 115 + 99 + 87 + + + R=83 G=71 B=65 + RGB + PROCESS + 83 + 71 + 65 + + + R=198 G=156 B=109 + RGB + PROCESS + 198 + 156 + 109 + + + R=166 G=124 B=82 + RGB + PROCESS + 166 + 124 + 82 + + + R=140 G=98 B=57 + RGB + PROCESS + 140 + 98 + 57 + + + R=117 G=76 B=36 + RGB + PROCESS + 117 + 76 + 36 + + + R=96 G=56 B=19 + RGB + PROCESS + 96 + 56 + 19 + + + R=66 G=33 B=11 + RGB + PROCESS + 66 + 33 + 11 + + + + + + Grays + 1 + + + + R=0 G=0 B=0 + RGB + PROCESS + 0 + 0 + 0 + + + R=26 G=26 B=26 + RGB + PROCESS + 26 + 26 + 26 + + + R=51 G=51 B=51 + RGB + PROCESS + 51 + 51 + 51 + + + R=77 G=77 B=77 + RGB + PROCESS + 77 + 77 + 77 + + + R=102 G=102 B=102 + RGB + PROCESS + 102 + 102 + 102 + + + R=128 G=128 B=128 + RGB + PROCESS + 128 + 128 + 128 + + + R=153 G=153 B=153 + RGB + PROCESS + 153 + 153 + 153 + + + R=179 G=179 B=179 + RGB + PROCESS + 179 + 179 + 179 + + + R=204 G=204 B=204 + RGB + PROCESS + 204 + 204 + 204 + + + R=230 G=230 B=230 + RGB + PROCESS + 230 + 230 + 230 + + + R=242 G=242 B=242 + RGB + PROCESS + 242 + 242 + 242 + + + + + + Web Color Group + 1 + + + + R=63 G=169 B=245 + RGB + PROCESS + 63 + 169 + 245 + + + R=122 G=201 B=67 + RGB + PROCESS + 122 + 201 + 67 + + + R=255 G=147 B=30 + RGB + PROCESS + 255 + 147 + 30 + + + R=255 G=29 B=37 + RGB + PROCESS + 255 + 29 + 37 + + + R=255 G=123 B=172 + RGB + PROCESS + 255 + 123 + 172 + + + R=189 G=204 B=212 + RGB + PROCESS + 189 + 204 + 212 + + + + + + + Adobe PDF library 15.00 + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3 0 obj <> endobj 5 0 obj <>/Resources<>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>/Shading<>>>/TrimBox[0.0 0.0 1280.0 800.0]/Type/Page>> endobj 25 0 obj <>/Resources<>/ExtGState<>/Properties<>/Shading<>>>/TrimBox[0.0 0.0 1024.0 512.0]/Type/Page>> endobj 26 0 obj <>/Resources<>/ExtGState<>/Properties<>/Shading<>>>/TrimBox[0.0 0.0 800.0 800.0]/Type/Page>> endobj 27 0 obj <>/Resources<>/ExtGState<>/Properties<>/Shading<>/XObject<>>>/TrimBox[0.0 0.0 1280.0 800.0]/Type/Page>> endobj 34 0 obj <>/Resources<>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>/Shading<>>>/TrimBox[0.0 0.0 1280.0 800.0]/Type/Page>> endobj 52 0 obj <>stream +HWn#7W8:fm\v`dL Jdy^j˃9PjRX}]ywwa%ȼ /{eH!b35akJ4+$ihZbbe JJHj8lӂpLZ\"Y~T̲ȍHf8U H5Pq?[D%jnWٟ8<oJ+Iگ +[, +Op1p)|>t.a -9sY[̭.H+9pP+H>'9u9swi:4J$ńfL|uZoMlYK'+bj-VkD0,-`\ UJM Kl \BXłtBv H +2D0oJ8sN3TedVK(;odd 9Y IXmD=A0@at< *`i$- ZqC2rx757ra@2N{߅yZr)R_aϦ2>SUƱ0_by&gxt}@诳y9bo)Otu`/f^biCerqDs#$<@"iRl7 eQJ ="KZ 6j_2#b⮧#3g&Φ>9֖҅dԁeBFu6< F\6Vg%Ե4H;jCA++K(hXiBi(R h&]"qhxbgg0ԼP5^}>8A,USATMz!Na~/rҋ\ bθ%~g.E.8֧(@[zły]cܙ˵z&MݕN3$=܀fJ a=+Ì3Aø@7YEF_e +[W#e f kH^C> 05 +endstream endobj 53 0 obj <> endobj 41 0 obj <> endobj 42 0 obj <> endobj 37 0 obj [/ICCBased 58 0 R] endobj 57 0 obj <> endobj 59 0 obj <> endobj 58 0 obj <>stream +HyTSwoɞc [5laQIBHADED2mtFOE.c}08׎8GNg9w߽'0 ֠Jb  + 2y.-;!KZ ^i"L0- @8(r;q7Ly&Qq4j|9 +V)gB0iW8#8wթ8_٥ʨQQj@&A)/g>'Kt;\ ӥ$պFZUn(4T%)뫔0C&Zi8bxEB;Pӓ̹A om?W= +x-[0}y)7ta>jT7@tܛ`q2ʀ&6ZLĄ?_yxg)˔zçLU*uSkSeO4?׸c. R ߁-25 S>ӣVd`rn~Y&+`;A4 A9=-tl`;~p Gp| [`L`< "A YA+Cb(R,*T2B- +ꇆnQt}MA0alSx k&^>0|>_',G!"F$H:R!zFQd?r 9\A&G rQ hE]a4zBgE#H *B=0HIpp0MxJ$D1D, VĭKĻYdE"EI2EBGt4MzNr!YK ?%_&#(0J:EAiQ(()ӔWT6U@P+!~mD eԴ!hӦh/']B/ҏӿ?a0nhF!X8܌kc&5S6lIa2cKMA!E#ƒdV(kel }}Cq9 +N')].uJr + wG xR^[oƜchg`>b$*~ :Eb~,m,-ݖ,Y¬*6X[ݱF=3뭷Y~dó ti zf6~`{v.Ng#{}}jc1X6fm;'_9 r:8q:˜O:ϸ8uJqnv=MmR 4 +n3ܣkGݯz=[==<=GTB(/S,]6*-W:#7*e^YDY}UjAyT`#D="b{ų+ʯ:!kJ4Gmt}uC%K7YVfFY .=b?SƕƩȺy چ k5%4m7lqlioZlG+Zz͹mzy]?uuw|"űNwW&e֥ﺱ*|j5kyݭǯg^ykEklD_p߶7Dmo꿻1ml{Mś nLl<9O[$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! +zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Km +endstream endobj 56 0 obj <> endobj 60 0 obj <> endobj 61 0 obj <> endobj 62 0 obj <> endobj 28 0 obj <> endobj 29 0 obj <> endobj 30 0 obj <> endobj 31 0 obj <> endobj 32 0 obj <> endobj 71 0 obj [/View/Design] endobj 72 0 obj <>>> endobj 69 0 obj [/View/Design] endobj 70 0 obj <>>> endobj 67 0 obj [/View/Design] endobj 68 0 obj <>>> endobj 65 0 obj [/View/Design] endobj 66 0 obj <>>> endobj 63 0 obj [/View/Design] endobj 64 0 obj <>>> endobj 54 0 obj <> endobj 73 0 obj <> endobj 74 0 obj <> endobj 75 0 obj <>stream +HU{P ww/]wKڠ"B"\k**(j#DJNӴfL M!j4өڈI&fiz{{i˚?~ss~>`l6۠sS[Q36o3sJopo<=ggّƜ}4mqSԏ +?X񟦦"eVc?NsׂCⅡB0FH& yLaP,xJZX/lBpDxGxO8%tצF[<%%-2YkAWZZjZڊ, ӂ)ǩAiL0Y?|jj٥X!-|fefeYggAe9쯻k^˳e},_8UꥮUkRs澼•*X*pty.됐!Cjv$U*H^b,>TӦfEạ"U:AB6oEezD >U5@ј@<R&7y)ȡ+$24a5 Ia؃x$i@B& "$ӥOAg(4)0h}w^Z-$ο__ yN, f[ᅍ"fM|C^~֠͗'c2#0ZCwo$/zФrJ>wyo/6>{*⥗a__W#q7RM=b(c2HE8 +$d!a7EbWTIㇰɔ XRHAvt%A/Qeq[ )8$X  ^ƄS"4?K4]vFZƛbv!PQ4j8no5Rx}Ch2܅ 8M4@Ch.'}H(=-tkgn'vᬝC /ZN!rl]E'Fԣƅ5tDz2xA4jLZiGS a58F+I*-zB Ze\pZWRyG僓*G6t2;?Vʱ2# BPdUeiALtf<7p +3b} Z:Dwտ5|ݨ}Ai(mTK7Syo'o8\<8M1=Ԍ?D'R- & +u r#"fߧN|U*p[, \gn'TufhCi]_:F_0pf s1ˑ$уJf,VpMKr|lpD7z eG\suJ`D40;L;6wK*`{ӫ(TZꄆTd;GVP?gTZ?SNt`&Ġ=E5Ezaї0|l{xaы:ªD9P MV ]s74rSEzPaÑ}Af]l;%ޕA=~MhyujrR :5%]2]%d^d#nhoǙM +d]&Gc4FE7EF#"|4ɫWH +endstream endobj 38 0 obj <> endobj 8 0 obj <> endobj 18 0 obj <> endobj 19 0 obj <>stream +%!PS-Adobe-3.0 +%%Creator: Adobe Illustrator(R) 24.0 +%%AI8_CreatorVersion: 24.0.2 +%%For: (Steven Kalinke) () +%%Title: (preview.pdf) +%%CreationDate: 6/25/2020 1:47 PM +%%Canvassize: 16383 +%%BoundingBox: -2232 -822 3512 -22 +%%HiResBoundingBox: -2232 -822 3511.95224586406 -22 +%%DocumentProcessColors: Cyan Magenta Yellow Black +%AI5_FileFormat 14.0 +%AI12_BuildNumber: 373 +%AI3_ColorUsage: Color +%AI7_ImageSettings: 0 +%%RGBProcessColor: 0 0 0 ([Registration]) +%AI3_Cropmarks: 112 -822 912 -22 +%AI3_TemplateBox: 640.5 -400.5 640.5 -400.5 +%AI3_TileBox: 206 -818 818 -26 +%AI3_DocumentPreview: None +%AI5_ArtSize: 14400 14400 +%AI5_RulerUnits: 6 +%AI9_ColorModel: 1 +%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 +%AI5_TargetResolution: 800 +%AI5_NumLayers: 5 +%AI9_OpenToView: -2844.95744680851 2502.82978723404 0.163194444444444 1098 1034 18 1 0 78 121 0 0 0 1 1 0 1 1 0 1 +%AI5_OpenViewLayers: 77777 +%%PageOrigin:240 -700 +%AI7_GridSettings: 72 32 72 32 1 0 0.623529434204102 0.623529434204102 0.623529434204102 0.811764717102051 0.811764717102051 0.811764717102051 +%AI9_Flatten: 1 +%AI12_CMSettings: 00.MS +%%EndComments + +endstream endobj 20 0 obj <>stream +%AI24_ZStandard_Data(/X(>d /R+H}w8&@K,wSRRfkM5= +(F%궰l -,T" B ++rp/7*w6 8{vHRHPXq +\L$1,$E^dZ>Z4Efn5$v$g4Hbv@+X`8y]$ mh L I`*# $ؐ`4lJwLGcA #K$H g%,QoXH1RpkHKBl I!@đjIX(H8E4jbE[Z3tPME==F2rq$ļ4:xFRIG$ cH|II_u IIHP I$$C"`(/HrRmmvC)LsϷH IoQ@}P$>MCE2A7/޸4 [,Zǽ@$F`41dWEYII,h aIR85(a c8!  W`$l h$(j8C@ +FrC/C +p!-a +[0:_^/8M:I(D*rl#I $YLdBx"P$ Fp$V@E*T+ +ECP‹ZbX41(\ YȆ6Fh4 rQH:񅃱 BH  $)18R%qP,raI0uP ɂ #I9S@bah h(o F5p0C8c*TS +R8#H(D"&4KX J8+$)`CA +$IP"/]͊đ$++f caB@2$jcH\LZ\$ P"@ gok#E*!Zay?B*IU\i6ٵw4 +$ߞ9 +I(¡p8vvukXưjUބCxkEȆw5ye(߄-𸆄cCPesZwpy5T|u[EVkZvjZ;9#*Ruoˆia!">3l;**]y{7TIrHJ'^~*»TԢ3]: 8V /hAX( +"H(XP୵Ml. -ARRG2R̼t: +<*&2bX$_W $@ׄ* u(hP2X4jP9ՕDFV^J׈|M~{Bt1?]*x/<+Z~;Q S:,?iKaZ]#ECe.t CHbE-Q"1 jPQjÎFc6A#$|K+,W +/0 70JO0 ł8c8;ԁs4 ±^M̅$0Ar.@2 e !N8^ P r .Y-YMs2 '*kٮ!$x\xA!r!,Y\&n'<*fUʛ^CEJi0w錆::SyoCSbX_%8-nqk\GHh4""&&*..h0UJJBB::r^[ZYXV. jl;A RPN"H,v ]"-j-P(+T +T Hb$q8`8 +G‘pq:ԡt$:΁$@P*T$rѠ@xH`xx@"($H%<(LG + H:Lp,xp% \P Ҽ\ 'K~ ڨGHzMTۙYh b QjQTj82ګB]mhz>eK8ޢ;"PI,ifú:##]uUx'Vqgo|EG譙fהU1zMZ X,KQ]>zK%xW;HUN_,eۻieԷg.$9,thwXJwMIC][Ktl㳫L?ś:#Z4UumR,XoҮVWKvC͖͛J[6'܊ޫyjz.ͱ,rlm ]27l_ ҏKJJFdX_ѹ4( Pă8XqVtsZr^1-t$Za 6ؽ>PViY;z3ٗY˾'- Ųog2h(eHXts\Vji҂,+kxv~kFs[Mnqm+m[zsLVYzu2KdYb5٭\{ZQT,O]UI$˒:ym5g۱-4;Y+G̛*vA+'kzCW/UnGN]Ю{!ӈiVnsEϹ"Z\;S-kcXEe{^V,;?y5,7Ut0~쨊rk6³ksrz8yYgߺrFkDzJ>z{ve*杻3=מJmEgoڎG:*?dnNmN]hUgʾpTՓVnM4yUؕK̓[%wu~En*'),/ZJ܆vb=kjmvXkiUN97淒bA:16 Ժ!yIYKe&ԫq8- I@$x 4xDJ +  + P@$.`€B.(.(T +MH{Tx$:0D [;*iƯrHÄ DHL@"I"2a9H($ID@ $6E"+f襁|⏈>P_TRޡ [uY)l[w(-]bR!\]ߣW̿uԹhfn)rF9-hfHGuG=/${@]E*Pqj$ֿG $YM63Owҷ樵rֆSO))^h68Ov瘬{jT:WmSZcz7wV8eCujv󓶇s˖PokVá6g|Q.'ɚO?D֜in6h4=ܩs ڐ]Դ{94͠!jjMfx6AgnQϵO.)=j /i~~⍈CfjY=OGWNZC/~ran;ceь6w-ӪaT㲴lݨnyZbMzڰeX8g9DģLfXcY}KjMUrYnSfd{UE ]+6brl>ugo:̆yI7j ZE{znJBιiYO-^rRM7~&E|ZiY8B3jXQу 6U^+ē꧊h1ω6 $dGnkM 6SV]7vWwjLk% sXGJ<հhtV(}GKY+5CD=BKM氎jzugίiGqȴLw[d-*ϦhXwG6+mҲI]ZV'yw" ]Ixs]UjXrF$ۜjK}dwt<D]{-]6{Ujӈ3RgcXEY 5)Gm\;G6.J;nm]YsTHmhUN{+ߕl:+޽6w!(rVB:c :H GY6VeN6[URZh!7,[]}uulkk<\9}K\2^t;j}6B=ZuYFCJU=D3:|?^(L vc;N.wEvfRҖZx8ؐ~:»֤iuGVw/ӯ )}߲檝"M{u73J{ڛthgʶh˿zx{zzJ>ªfZml\4RD;ړ޿4+LT,[,m҉=.ԄItKWU:c{gb,-Sε' nARuOZ䢕/4,3:h5Xy~뛪RE4һ%Wi&Y.2)1N15OV5Z[[[)+톖{?ͥ1x54V%p}+)ZʳVvtMjY{]#ZʛՃ?JCgjn)&-;X-T\̴|dXT{b򪶋jvx4GZƼݑ֪2z22k΅HWݭy缺l쾊6Xg+^U-m=M5dU*tϯ%+=iRʡm^GV>f4WS q Ni%'T!њ*niJ|7{5Y.K;~Ht6m+U8y.Wq3E56Hц{\64k(L8`1mLy?]'xkDe?Y5KK5nTGuVN9WE;:TXTr-^i٪I*S"j}'4ܺ_VT+YxߘPϘDC'ɬZ|[޹;u>U#רyyyixxKSH-sk O\^kRօFO>mV͹4yv񶊙xf&Uz[,M35:+t3BC3+o~SUWfxkxk(r]^ELwL#UP. +GRJӿ*h{d#sjLG^7[bHV{FUuUezDXUuGGvռꬨiְTx3RW +!Z0g IɨsV9ir=1,k]i22ɉtji%*t"L "+[QtCwgݸJNJζzXU~"$h۳ULk-QM<_]x4jwb'UUsީ~-Bjs.%^o홥h MV.{khϵR/xK KePLZJUCY+y9DWT@v}/ c:'KDUx.Ls]"јw,vUKEcdh[3;ӡu>#-ԝ n_"-1KlN6kt~+olwؗ}ѺݹVNEfj+iV6dCޚf|wҡth?'Zhkj-hG̲:LMz>#e~KkhOKv뿡ݯ}aj+]%U)њhҚm[XYtծ܋,/gh^ +gv7=}TѿYy-vLS+:Y-]4{V[N^3R\j.+uXDZǴt*muunZ%ae|YfոsEyO%ԝzѧjyD{Tjk2dʩʝ$[oz.|1~T/M]g_ Un{7]+bv;*i%M^S;MϤй/5K;NcV3kQe5Xvh3ώƹbS"e'uUL(qrѬw4u{.֕]y.;;r|Wrowp}LOV9%^*o+t4Ws[S_GBx8hM_yIE],rYNv5x:ՒѠTwju~o?K0Lc}_.&- VKuRHӑm稆g6 Q37o}.pgShp.d|`^]Ga) D^FKgD1)Vhl;&㌅ 6eke;iå>szWw4CaVİCn,Dlw=2*hY[DvCYK~`R`pyd^'_c]ʼa#M N.[pG:t!g1ib/$V[ k +eq"h֑ u^dEK[m-߇2$!k:X,v4_;Sdma6$`gީ`!(u :Dv.5QRgx -ε[轿]Nsl-! XQ%VE䊅KxB&NߘA mۿ9g7j݂ ć@Y +ts,qO2/¯xI/'$HA]krޚnnug XVg8[@.ieeb4ڣn2ouBZ-JQuM+@@9+Γkfa"cAup> D~U*>,`- owPee8!0JEhSkwmW\\Xiy Y] +f #G7Xrlij٤znx.hM q6pUMgo&}#PV B")M3ုs}z6z`]Z6+[6"6,#ܚaʁ3f!xMPutIWԭ+XvΥ0/!w?>;(U\涎A Meλy0Z,KWBbi\m5cy g+R BnB&GU6b{̖% q2@ۄ~8P8ʱ5K3*FM8$H׼Lgvt)JO]Q#gܪkFx(ȑ|  vvu!R%!qfj-,~)!1X.){ :˔DU4Eo9RtSwP{(4Oi +hp0i6n 1^]4']%oޣBDž?a a,1ƷWuO=kA~C*I*2~*)t 7BHqJ&gY9q衛F5a s46ECb[yv_D r O}d_kVPj([*79LDGNLf~/A$]j&=]2ԲS9o'iUv6FCUl7 I +/Ue4< #Y ٠\"35hBÊk}/lN +YAuLdɼjaKAU߯5EkMD3 j]Kkps~hYpl= ݘ!!-}7#˾BA% ]ž؇+%yMwĺL"]Q2HN߁STcn:6  p1_QWps쏜>3GU+Yَ.*YÂj|+f\٤=v7^O2mi-kı1t}0GfnGHޖYm; A: M 3BOYs|qAXyocJ,, [!JlgYZ0/{2yd7٦./V>]:=pi&j= j P$ Іh9I#ѐ@m WL\eE'jP@։P_gUY4Guq/z;Ld?h΂0߉cuxc:#J +Θu쪽ɈhB2j#±3] vXmBc JyvNsފu[;=F?=09|ZTiaja걺@PXM*i[S$Z?F%&>r5S 1olrJ/D(r˯f :9f~g䉈!=_%Gp>لXo;'Ɗocџj?K@Hohr~AHd[Nޜ3 RuI0*nB Nv!Ae; ?hR.MZg- . 'vGe$4 Ǥ76g1)|$t=dHr#CTf_^͈GNE< RJXKpLSKpZJF&urJ粢n/!w!7c#"9? C{bHdG''pR_|2}/oӾtԗVfPN +㞛IC$zot T !tkL C}iUssr|4xƹgVP@؞H4PAcgWF\,D3LӞbCSuz'bO^h4.=)2`[*eRX@hҚw(6S%bEp #Eu3jI@ڒFAR o-sd[d^ȠO *,"vӦ[[ULLq;_mB2?k 8Q*q xjGR5нNdӂcÑqT̿6Gja^E>GT$a%*K@=1$͜<KLe*(9%wĠ=%8XJV'63ZH얱qeCЩ_NJMe f XUZ&Bژ|& 6'sR,Mryfz8&gﷻ?sHN>o.o_j8v!&u/kثbz(BM˓M?^m]AҿƩ`y?.8S%MuSg +_;Zȥh2O@f1Ai)KKlE`aF.]勞HTR^V2[9UHL#kkQýt2ZX4wrDm4!!D>QGTm/m VL=؈>|*;̏أؔ>XAn|XPX2<+ {46DFFeG̰ii(׫*X 4qˀm穄?Jt2C|ϲӘLrN52"gjZK L DDs:p;85B|&bSfn53;%TMU niq;N1*kG'>?BKƊ¶'Pw_dr_wnq`XYjZUKMV}Odq~V*Ml';H_)rNHẹ‹,uP@zmz&Pu=-"!ogosS1MkH#|?'u(l'®Vn(QTEq&UQY";R ĐHLVkWTV)'B&_9,bË2e TKmU$% + iV^hFy+k0dJ@N}jSYzGRMLgAˆȒ!<9jb{D`uI@a$+bi5&*p(fKTNY02`!r)@\\-Dj\Ui2W [zY w,hi/Շ #^_Y$`A0%Cq:l0ň"Xab".f1Aݒ#n1!17 qFdBO$>P&UU'4]O(LЌ7gθ|gpFFxbiЉ6#}Wz"Bs!Lp5AX'o WyM + +I dlxıbb:a\Gf4bd6Ȫy5λ9rE}v48q8'pٖؗAFO5җAH'f-qŜT+fCCsbUm\rIꤗ4N8N$ uuaM;738ΘC+ ݹ +빪¥d@){W4l^:ٹiF "=r(H$=O3 v8Ϣ4IGOhn*v +[~DB wGǹ43BaT\. %}[Н- JNhw̲$~E +;9pQ7W:ҪZ +ށǣ`8OZwO4'~Cʟ<XV;6V}+nlũ:7S@GaY$PZId^vH->J(D6*{P й{*%$X V);6S(~M|' DBŻH[BVދP֡'c~wD/ǓʮF?֦At0hAndP@eGj6$䤗p^)n% *NqkQVKhbEdbPL!}<WTXlLTGT&)_إH)lj,H{U, mO% 8 XrtJnQJZ|킢)ZCV9ITgrցUv{$4X[DkNPD48-IߣyyJ; eE$4@2 uM|2G 9G&3=9tokʺى,g!U?d,5Zd-{^E<Բ +iѵ݅Pع+$*|&P* <׀$[i%VbCdn'4.D͋+̃{,/B!]༯ݩif5'zBZ7X q]hʘiFa ؆ B&z\ BE'9ӝP]N$;£o=!KY6ړ)@tf& +{B5|oI{j.{ MM>ŷi +](#7gSH#%`RS(hb%bgOPI9֥T-!ºCVëT[nF60ϨLGx]}&#U/!\"^ [ʍ{HGX8eXDQƪ<za_vKBՅ)Cnx /[Av" U;6)j7L Mpj (vnh{Y̍(HS߄:ʯ8:23BRiVEDys8b +;AlTt=;Qxi >\($EȮY6F : wy0c.x(x'-tytn)Q"YL^3`+JcK lXv ٺ9j=> )XqxU-JuY${'?PҨ9VY{_"!Ԏ{#$7G5{/N"9_~g)ƥj `Vqp })ITu?A8˭|Ϭ3}b3 A8 @hH.*>6b .;A3 H>Ֆ&JNAÒp~玈/.u:άj:_vؕ?,ҎZaFbSM"Ak!Zl1z ')P1NTmWXqpXV5ߞ'h"Fo'y!?lўc--U1}K2qϠ2DO[I +o#wYU!u91]yÉ rgQj0f#2+K!B S!w^${aR?VjE-bRkAyJf'Ѻ7I-qGh I;k +mNzchPD¶_,䏅nw#34I j34Wb䔙 |"/#zyEg IWoyY}STISWdCfGI!na\ӪЉ͜nssߺi6XwHڞcIG q ΐ%Gvc=?Ɓ-%> bÆ`3J^D!B'ߊB1ImUز# EmGo[^'AF-i;B* K,ZU%wV/bv/Ut !m/E!&#$FG e3Vb@ 㰹SԭS +)`Ywtɒ@b|ʪ eV\85]B^0xЋ]G5dgFJ9ƆHcUJ +KHK{`6Պ֫8 2q\&_E{Qy5j`yVBENc/neem\87YC0A?+>"5K=ԮY`Mb6?41QnH? @TlG MRKފP.UViP:L-ڗKF^nM+d_-HInp:Rc>U#'d74*[̠E7L]j r a'd2$O/{eoBS+`q,Gҗ%* z&4]f^(. +>66S;׵%ɰA}_nV29S 3erVj- +쫾Tn ZQ1_q(5DYgeC͒/,4T +p,L^:˖I+b~8)SPGY$n.)Se%MS}axkuJjʫbiuwJ4t&oO<-pHJEO3S3yv48 [)7~8b0TN⩒I&u ԿYWiX;m,Me:GŪC.H"|zSTmuRQnH*LgZ2t‹s,IJjj3mLfCey ٌٯj"YN! +g''b&ye6؅\9' V #E$) p\ UAVc(-ߊ:$ͻ3* {$aquf1`hd/Zsv:# +$$KFrH5Y ~On''HN(./-K\ElGsbH;z2-#_ԞuYO~kfVU{+h+aTb1l hvC*x~f~b O 96,6c;'I<@qgG%Lp E~'`^a +63_'W,4nZފ޿iYIsL0*o.TRU* +cbiXܕuis0͘h# _K%ƌ8\IBh{EG 1sƚ.S~oǢoX :G/Rqs},m9K&)_ zHG}<G^@Νn,ya]~ +P6 cBpQܒ +BBeC)WZ< =j8ɯw@S?GSw"CjT03ݹA$]ԑ1rZ_>-3ԠȩD2^Y(Ս-,pB޹ZeX yRPX o筧ч$T1sU,L%N(缁򋌟uwDzJOG\VеL5tV+n[\jo] +[l_QG9jGf>򁬫 aՍ +"SR#1}L9&/)+j"Z8H2RaUGmEX.F1X>erm|vOm8FMOЛ'`4k@9C:S1sBknmB JYqnZEf 3y4ANT ke +zQj?3놬Mw$RM:ڼ2g]ޅKTAˍ]3am3~nY@GOqP4>9f[JUq\IS;h3tusKS~;4+k-pa)ZK:~F>~3* |N-#+)NeƆL`DS?GT'"TJ{aU($|DđغAp>|pܫ;x[7zTj-No S=ⅲ\h=߳2DžVRH^mW۰Wlvvv{K@F =ЈNnVOqҡ?> +ۄ7d/Hݽ-k7Ml=bحb;K?؆X玟}t$o~SiK㕯qm#-\'leԠNE>9fMEDn)ҝf2.Si3\'ٓ~h6KT:&+/Ւi*U +t="%\ n2޸I;it;'x-WULsC}8TcSsWO;29 +濃C~b8=a"V^JKCw8'iZ*Hi{]E S'gX +gRû2|2]Iz,-U5tY* +x{:39DUmMߨ>A{sIB8zT(@ocoWqݿO/G6aM0NPiCQ K< +듑!܆2jJ&6Qlk,*RiML&Z̞ uDؤ 'ƹ[NC3JV꿠`|XYŖ嗾2+ViC؍Q;#f;)]X/6Mϫ O px5 c$;\doEVZ?# +tV +Dvd1ųdTWl[Ks]8ۊZjACVZIHDU:%w٭` +SEud]ekPo%V ;ŋTR.7EO4sj VX +Ҽ[=hݶXFU@dF+_)DF=?}=HMħI3ؽ +g?k MvBPyVh\]NHr*+FČ T 0NBuڝq5c0Nl+P?š-xwG؜ +M{%B(%=Cp^5>UDYB0V4{`L[xk| HĂȪLϛ<\<0\b <2ϨÜ@?Jp +FIPFmC<쨨 Meȝ cJTG;K\oI_x +HIz/@u{“/bv pe|!T[z!:9 !((MH\?Ig@: DSd Oq`kBˤŏ;vO |$. >d4 CT| 1@^L J鲜w5ps{&'\n4Zqj94VbbB|cjyd&rȩ7屠#PHGn!OkR~Ћ¿W,59GGOj(%f?0CI=}bxə6r3׽XvPR(o]Ģ=ҫBe +z{%s2BϿi=++L~N[K5, "FQ= {˜=J#6$JٝMu8C79"aNeiZ՜{zD6pz1#6,@]M>W:,留>g8K _kӧ@o1_ȶNi|D#OFx/FuP:*-9G^!`@ppz;fWBB8b9묣U@Rd!ѕ>?("2pRfqZx +kK"ʽѤ53?ҔVQjej/CM[km* {39-۲yVn7.ޢ*N*j ]q0咜[?{Օ!ކx1 qIJV]f紉!xד ƼttA>>TBpǤm)K,qM@R5N0QjdG M+^.bTn uޅatTDȢűF XH@0Q6pXt +XEo/S hUin*VM>߭fձ^ WPNop|( Lu[8ݜT +0C\-̥\n>xq@[k  :.YJ8y8/@P^USC" 㜥V+2,#]UC @˾]w/t>_tkag|{T A/}"/{QW&aݩ Gb)5JՅDѤʤoD@ Lv@L+s "lsE$4+"la`!$J7L4P7Q-ڍ >pwNH'A}lJ. + &8xPSԁ4vJ@ά`FrpH `'#{*CB5|̫)##IP3ixzX1م4LeX!܀t~4 Ha錱afiIX1 '2̅x%s݂KWz/Wt>,k"6D0X |t Gq t|[s|KYH߻wHݘ}Y8z171aI rOHy#щcy] }F +W~xOWg%|ו>t6'߯५z_ף=RդE6mt ;BNd>oϾ^`BFjzJ_b^G" E8$60tŊ,'?Zvk(78.xX'{$j=C^Y{7MCJ(G{:BV"n%pW_; h )'Ī +|PLs_VFF%:k HhS۩}j fC=Eg0eގSvvBrDž ߲FNjbdalS(Ad!H &6u&7̈́~ = ("k ɝ&@>uma,Й.0kGNUYޗ2 +_bRߩp˫V: Bbΐ1v5oM"CQ X%(yB5Q;U2KѵԔҰXɤu\ +ҫ)TkjJ,R"͒"EjUu O|5s?g 0P4~ )ILN^09Qi1M7sub >14m." b4#$Q!' j%^fl,B0ֈevq'#TM(dL'$$$:Ѡ')i=Z:nH%̙:poM@tfP|Ŭawg$B7]O˯{tKDE] ]j:k0-7H'bE#hv%-j?㵶FӖngdK ]%S>GːƳX;Z\_.pTV Z C\r JW}f,NUdJB!%_ +Tr_!گ酎(p[QE;ܡ ޷H4vP32ne`"8r<<>xUӡnd.y 8QB-[m7[stq)',7N[_,4A2yeNS6ɫ d6&tdKmQҳ3*bKx!5'dK@g{!җcʷjA,RYVft牼nIdxDzY` KXf&pQAw|0Uy7_q=_]!(4~"N(7EEYAM![M *i{$42 (zll^RԠk:6dZU FN'Qs'qT}͍/nH! 笭9y_q ֠SAMM<@V!4]N6-#1>ޚb|giMJ+V)\mg25Ca Hc}פ#uP*N)+-0Q29A K.]zZxop96>T; Ŭ#TX?" {-Kѹ>>hJ|GyXr1gG1L"OYzG1zs/C{IgLs9RمBjCFG8a+Ibc!_,HƕqR"u>uhRD]˷_F$JvJ,^!m-n7TEfـJu{ b&Z@+SxX%W +2!7+6VR!'6d=}SZ%GE87 z HBv[==g 1ne8{R\6d9sSq'^Nf u/f滶i=YMY.JŦ` N USfl-]dZ6y!ճH]4צ*[y ջ#QSfmTb-G.ɌaFդY-Ɋ(8ZJE/zLI9Y 5\^)% Why6~dP=$co7ńp48`C9r'77iŇ VN@JH}Po$P%ސ6sMu}d̽>,**Vf_#K2WȱkF*KeZძO{R >_#χ?v73;OU{.a^B;?Zo[٬( K;TbcU%8EdxylP,K;0jsFX +t&l邖,]Wz<5DQ]KA켏1/fmUT2Yʪ. -F*KfD >B%rۙ\UekX-ǘV,PgF)_Cߕ&"KhoZͪ۫0g]yhn`Q\TN͌]πrǟ.p<>\.R 1Z)<LuU P$b3R$m)&ۜ1M߀Wxƭ]En0 ąV*L0M`R27X&Յh+::c#GLU?%2NJ]ބѼ'v!2}՗\w+-`ϝ:~0]>" DWך%pY Ps}[>D 6' +1fws,Ds9x_!/#4$P1)6I>TScŁ y NqH-EQ& P~zpkr/vJ/F% 2W^^,%ARM5)rbO S< +",W}1Kܨb +Ɵ>!MMtT -/X?&ku@}26ZTbby_İ[%O?*U"nB8bu7kY5> j߰ +VW\NdH1GorfpT _>Z[vv-m-BQ[8oĻ7 6V^ ~_'mo?Pe=NIl]?RY 2]n7nwpp6g=Q u@ȹxDQb'zP+BskR1k\=`RAR'2^BT(#yh4*4}>v__OA_/Q4ODA{}ff(U뛙<JM!A$"C.zC-=b!DSѸ KaǴHPoUzCmIQ!<k>U꛹(պ7CG]Q$J$5#DAJR}aʭ#CwX?#)?zclqpdٲ o`-Cg~P%MZL.JFvFsC7^jY9*0f=9 AOӡbF\65"7(\=L M$,^j3CMqZFGHj hm_px?Խa#( YR6^"V uQ=}ۨ2`S{)jVpXjW` -ۆ^Z(Yqce5[fGԦ.W4Oɀ!o/ir]US ǴptTq5wb\wuɋcbC,]~'sM/>"'U8/{YKl.s.PsI,\+֖;EuEs-U˅hv-+ =LTz(]'(p1Q3lD +\Pͱ~/bJ,y, &zv`AhתK|P,TI6JOj ^ʕ<c==47E Rmf"%!IPIl&gxnƬ 'j5A(5i*\*};RB2p@<=[lQƯgqqƂo`E"\|$Xyx%$靖[ (Im>bN9R0VQC66ɮ_OX^^_%*5?t/eP|E# TfRdJ]I}=^:'2fƞ竚4'S*?T "N$Zqy+Kj"hlDA5/RI3f^(̸>Z|8kSSZjzP +h :jQ%JL5UTl$jShHY*ȹX7&:WDAfe^QfzhT(Ɖ*x -(>9j^nB1IH *"kpQp\0rj#WQPUBȪNUAސδ<*k~PYV\CHK)Phu9AIZ5ld|0%h„AՂH5OLk$34!B? ҄ + Cb*f`X:e>SDzu'TD1&% +ZA $.u#!uH1AFLld)_IHa c%/$ WEzyitDՐSl.e 2M)9;<ք(BUPLUO,aRLJJmf%}.AXez5\)`#z c1d?*sB*19L :HDAR9ُC6// NeLxp;Eܛxq`O|q@__Bz=u_)J(.upPK\>V~Q)c,Z$H~Ub~$+G|A@kY0` rԼp)AyA?Gd7bRg1 l-8&PS>c]zcaJ1hڑt,p4H"XUBHOVIXۊP0j2NwM Cb^B% +2^DvhШzE+X+P,!qkIDK,"<+G" cG!^Cir/*EJ)%"eA(Ĺ +NPCsSFC$PI+AMO#$2Ԛ%=(D%$RBR_(3 g)ȥBؑE'EK&li75Z=EEXVLQ6P E+h0m O QA)bRG'U-8T0dI9tܴ'`bn +d<0LgeZR!7iw E .Ahǿ&?>L7aćLEԕhPx#2?}ajUTcuJ1uJ5Iq3 1.@ @ X@48L@P`Rv@x1"[faLo@2"AcTK/-#IBSXwM +FȤ@#67*2=QgVJmB&M5Ӡ27<+k>;!C^7)r=̉C.*d7PV;q`4-{53Oc!8qˈ( +aǀƥp 3Y8C'BCP|\YpnpMl큈9FP>0^RQb?̈́1ߤU=QTt{&&PTb Ql&Q02Uk?m-O< +Ukm"_+$_]дz6q{^M_2 +E +Diq"$ +ңHShdzQ;Tlb(jN,FjU-dFGL +U蝊!b2oL hF'(Ea?K~VCUt^S0Jlb6Ʀ;4_ejtCPgVUWQLL0.0W]?ym~`shH<0N+% E<# +y1ACG3g"и@*$ WWm0B70HV` +!hpxn"J{4^&T1 + +qj&'SYV b7ݢT'q` js,C2 1*1Ig* BQ.)S0LTNT@ *>O{Pa\} ̴flVaJ A$%M ݭϦ #=/#yX4bZMcQU)c8M)^«I2FX~/طbuNCfQ8mhwPj6)nĎpѝcQ fT}"2:4+axPf3 V;e ^jJ/t;3n_*DhGHҏeB䐓& A9H?ִJ#=(-ߚM"%g^ߪPJTRM5=*MD'FB6ktu@4"BGN")e'7]j]-LCLbhdXf0*z.ъVaV*q*]]8tQ@X`J2b(!F%LA -9g@( 4{t%S/Y e5"qp,R*R %a)-H )K://a_W-nf)ć23j 7-r qh;ʄjk֬ % "bDD*A$,5B.|( р3A0ApP02>-yB A!,a:Nۦf{ xQ! !bptr2/g<Laz3/Dڌk%!sR$B43TaJI(I0` +@ċ!?'LH\2 @m/2 #A@r!rD^mCae؋%2C@@38\[P%e.~DmJދ{ 5^ښPe75+O +w%E'VOUb3V}Q +E"Ev{%iSZC9CB1A%Qi  +`xeqGbA5N5jYɰZV MiFX-\1]F5ŪKb:\c7 _ܸݕܚ5NXTM,*N1+,ԋ{<dzjIy !]QfN|iHo[>vug`t$)XkU]&@ZI`i!Z Vw_CaQT->t9pO-8q q9#o1MOt6ӕI(G2H+\-8J= 3 䐶l2 Jܬb I El`2񝕈3e?S?pD!鈂Dp 1!%G-f)D gx*ӓ>F%{h I#{õ^$un'2d(b#+7JxmXEx`1qRrՁ]Y}lq"'xW!#tc{|((W$T`!E[bEK<"Ho f EkSt>NӼ|# I%묪+h#lg9}6y_$LL| +}OAK+8[%[ ngjtMr%CW j1YxDw>=JО:.W.38;ɬ5:vz wY_CzBzARܓNw%`,K8It͙͘ Kx#Nd4FvϪK7>Z:r+ŔX_*U`kYF %lUTWpњm6803ÄIpWP64-Bį=+(TяٕzA jve>?"* -}!ÃӣxWHط\;U{n,ԏ4ϬC *HeFdV34EeqZda0n+Kؖ`ˮM״I4MdFg+w뭶5ۜ Ilŧcz5Z^$0kfYE=.W=UՋu%(pluD$ݦdRspF='|l wQ9P2\:y\Ǻ\@R$p3. 5y/Rpt Nު|1RgA9  fmb|b}NaBK)xe'>'Y37 (!+B&l +XP%R+mlY!jhr*N+‚LjdZK_⒕9E=Oдl-^]bjbZ^q[!rgם =@iYQFݛF8}TLa*B;֕.Vd)%L +R*Ƒ&{xOb9 p Z(>c/G=0PQmH!E EWiK.H}8E +$5z&#@V뺖׭#oL;JF/֧cԎWqv|*|dETQR &$cDfIv,ׯHd~zAd-G3'mX̃v ( B%Q~jY5 +Oؒģ`X,+!8. +xF]|g _rnOJv1/gZ`FF#T"̄8w>5_%eYƁگCbZSb0ŖJ.__{b,^D Hͣ +_7'n_^'+:p#Ϲ"0nIqSĿ&!2ĽZWGt tD^m蒇? *,CXXl01B;?/_nzީ=!?o2̈BbfD_A4QH`].&6jwwxRˇ&uC|"?DeJ%z,Z]4 Xrb3"HK{я ;pwqSecPwBC"I QVCͩQ^r$ TI¥sQF {+?SŁweYIn +pUXE3'B%jxL{TzI]* +іhQθLUn|2zi»i,O+5~dZEAbu66ȨDh0.FUd"!FF &K*J >_ɪ4+Cf%idFLk-  >EҾᗪ!.\oj&v8Xst蚾CdE BD??9wep:?`g͇eۇRC|C:8v@-CCV+!:'HW&;p8ҍ H`_dx=Ӈ}YtT{oZ]k2lة2Oɺ>-rN-+jMsP@rFN|=%A*;|iP a0P#;x]<@? 0taf> .'It9GÑ[. L +0f-A.YI199!ڜ QNr-߾`"@9':D0'J8"j2qD0Փ(BRqB\EP"s/thL8yFxkf i5yDOG 'DIqv7YvMʶ 5&6Y$d~P:+%4&d Zۖ`T%Z zFLh4ME&v&J9&+@ Ϥ M7dfםj"3 ~tBZ2a8cx +c"bODaNlP./*:ddQZQ@E[ 0  qI+E'üZ` +qmY=$hIL+p, +.d:,\*J(P3!>ϓ#BiAt%@ZY&o7J(yҨ$b)Y,4%aᯔtXDJȏHPqZz_#J 0{EqҢzK&-IQIx$qZMr-IAu[q%a.6.RBI.h.$c$t<|"Gg^pH>Y/g$&y}*њDCX'+B[E!AgARqn ($&gƉ +- ƅ~dI \bh"b(2mcGw$򏱫#Det$y$k4#0 p +7reF4_h7uHmD4c#k3[#ۏ3)jc653&I#}}nFzrFc_24ߕF!,&F`+jPE95"!dѶNZ$X)\wFܹ"0`+RS@Hlo aX)Ҷm"oc/({X,nX M*%B7|5BA!څc8Eq @DGBDrs:<c)χTB=DPCyO89xC>]!CeRlHct + 9 :#C\Gb{eLj]ȐQb`A6wDo`yw?R) 6 +ҚE%DxJB%bqc!lf!r=sCЃu! A A|>|h3Se܂LB̬R 2O=E`y ڏ7j dc4h?x$`+dHC Ni@ ( P 1I7A %&f +)+Iu(ϯ'!(A/Y&D:|CSAjbp # 0T%3FrlB`gDCWQvra~P;F!g#E 6~r ʏjQ'a [nvyb};( c Շ".}Tn6 S|J5 xˇ;gY#t(| >4D캇$ICh\EGuP BB^7A)Cz"1퇘8 }q`D\ւŐȩ0"]q/N8H ǃ +>HDU7o͡RԪKoHwC߉xۍ^DT)29UƊHyr97hEnC cmVFԮ Hj2x6)7"lY| `i92(#c;Ra{ G|ɅŏlxvWZ;@5NS6!Yt5qHh1$0HF,#4f$Iݜ>J4hIRb${_lgPuّ'h솒FGfш/%q#T*Sи4]:?C1,a3b3K D$۝𖌨3|rFmDpїmlFlF0YM8tB33#t2>f`a&! &/Mf2:&Ԥ9!XZI4*6ِ2ZwDXʶdGF(j"#\!Kr2ExhAWc, WQ1j6'Co{tRPX'2FzaO.FvbFG>1IF !~Lah3qį ND& "" } d#14U0`Չs[^(WoN/Ey|_-i( ) nc z%z!yacN4ŻË0d"Ś`vq{].'rEtbp.BE~u2*E$2N`g.2\riX/.Puu2,J;Y[,lYU׎{Z'k 6ɮE~2+QݴŷjQ?P20(VqeaZ`9p=Ze]??ZXO> _egEe]QZ* +~ɂ BEcQj))ƒ]Ja+,Re@FPV +?gQ@+,ZAH̊``J%40TF}6BOWPř׆T**TU⬊_9Mf;ZrT WTTJR`eT +HT*$ҊPo)l+kwʶ"W*8][ڕוŸ*"N)H֊z}e +>U`Q) + "QdcQ|b! +z0PX(Z+^DPw(Yz +P-i(Y, +e$P?)Z̤EApqZD}NKo 8-++;+Z ^}hˉK}]zhf"xǼpT"VՋ#7%!256lC|C/:DS%~A!aCL +0vK]ǽ4[+cЍ($B&>Bw0CcAD4atf ֠a Tat(z6 @̪C@%1#E41s(;a**@#ń.)? Xߘ4d9f!KǴ>hTP>2ժ>==.ApɌ7@ !l$=xEeEm22l}ԃuߟ ~避_0X2Lbf +$6`$f2ff{Ú/wt1q;xDgi.ۙTe`gփg6۶glSA#ԁC 5J;CS`TС0XϸpNպ2s4bKN9 Q1ʺ\`ӡ]~8}~jR#x8԰*QMA֪EVopjF|c@kYnȪ5º[27 k tn6,PtFlLaX]eC̄ϱ| +0dCkp 7)! +jP 6ށD\KmDa[نhXm v!ẍ́?C'\πLzܨjlRal7 i  Pyt#dߌB27C8԰u 382$¡c+f7h4gZ)> bQ<'(⬏8 Vj<8IC +gܿ` jBpH &/9$P.yƄx,Gb.ĜtQ7$6IRLsЈ 2^߂-:Vۂ zѵ@J4#<@tJ N YHN. Vg(Ym,{Rb!,h:$ +yŽZ`mL +ؖi\CxvhGe;fdINu& w_*UxrU-U*:j;[J0âT)ʝқn@KR<))b#H[GhFKD!; +ݝa) (XO?!NF>b xx OnxT'$Ü`|K&>.6lRsJU>Є3&OqcWM0>.hB쓝N( rϱ1m ?ʄ01O9S~!%L?\ƄS)&p?y 6c%(fYWM%柆RG J?8 @$` PMBՑ 'PN! HHn> !q}Ɋ,*Bia wJaTQ@;x#+&9,Fv^ +F v՞XT3ǍF'5B:T!@D} ABMWnb(ZG{hn.BpF@{ +jEdf3.r3.#x3E@5B%M̿uWhBuk]iJE@V?@a ˣp\J'!ĦEt\^8̄> s" +,iw=EЮSZan\)SO=Lkpզ2'B"TxQ0XP]R"x4sZkPN%?"i%<&.?lL2BjYYC EDXsF4Hɷ%[;^e)3&D()D9jaˑ7"T\T@)z"xh_Q8!`Dr+:_jf2fǩ,dBѾ]8SC +ҲiRI~jLrH@١DҠL;G{ݲ[jrE7sA+6wp 9lHZ.5PY@VK¤^:2 .2c6pIvU0Y'm!?XX`욝 /<ly GEh8%}p)vK1xe>A,ECw_h{irIh~[(fe^g/莓:UyvRn``L3jtS;s*\x ZUߺ#Hl<d!"͕1WoR*tƨh5VnLE|i,;9؆8zk8@'pPy!~AOۃzj#6v`%Fqnqm<Q(* *$y46hRWdh\տk漕cF a:Ud:_0d ľiPjAi9 `hJyDczzV]B7L@`#‚eS|H0©*M]AX5Z4Arc(VP_Fnbu%.9U0BUz(xnx:gI)$1|f)h KAy!e2RjIM:!Nd:ADzM( BF rtPOJRa?ٍd`@XUM5COZ; Na=xb#t XDlN`! +9ܨmEJ0;χ'—x\,"Nm$$x]2p";kT 6a5sG5rJF ]| R .e)F|ÿ\/- nHV<a$k=j'D!C; +ئ Ny_^lGUb uny K qx$^+a吲w<#o+:4@lӬ ;``D~LW|6y> * .n +zWP +fZ`;ن/^$X5#!nwV A, RO:f%et` n{9q<{B $E;8X7+ +UMQ `$ewa6"rdFV!=(l؀W(fpˬJpi׬pn4Fs|/50U@h̫ h_ԯT;6&2n_ɐLna 7- TD*tYK{n1,0.T]k O.9jO?@5KOb)-3Y$ ;/rT D'hqAW)WVJm ~T`57TǦ+-Iaxd1EEE[Rz0I +$6a2QfI,X8 lğ ˎ>i&")҃a8YQL$mR~8;K٘O/$g?4E1hYKli#peur4Y [,,[)Ply-dm7""2!WjVdX3: +pT|E$[\]W~o0KrNo{\6&N +pPxfoXĶ۰J9| q$Qu&~u:@^tqo/7j1? +c,~S Hd-YFdn9brUDԡ޼=`hrUgR"|7α8@qڟiR-ʔc Y,Lyſ2qVvq_rIl3^S){ݟ7{NtqrM PUK)JPCHwpQW7oxݓ;? 梳x c At +\u:owV ,t ,~S6(?6.ҟXᨼ&iwzrB)zF>eؿv Qs:J.x+: 玑ߡ-&s&[!0oIc~6+r@utŶ Y%馰ղD +Q_ݛ=kp`;ԾҩG7ǘ#lz"v17@{9;GRTRwI_^5o{~Kkd(r~nH +p%Y7߂@5iֽ_"Cf `׌;<3~ *-LŏR wiy_d*ןxKz^/HN*3U$8odh},pސ9}c xZ 7ke4݇YEEL(N{uwU{pb_*~SO#頋05K0u%Qvi$?m# +Ы1)^pIn}?*  m Yߙk~-sg})zg'pȯ!Cz!R/vN/oٿmi$:|k~xi!9vLbWElq?!$o_2. g?OBlTCRX}w9R'ߐ@8>}J K<׏ ]/׳TVYmGEg lnTn KӁހfN$sծ SSi2-P`yEٓ׃QϽH}Aax*zi` }1k^ ;"Ւqw~q!&},۸PĹGaAM>j>CdX,jg8XuY@\)Ӳc,(aYϜ`t-4SC1VңrCIy>y$9ç!]}H;GI{AT{%frGu4㽿i +"@w7 6Yd2Ǐuo|wl^Gn%4i2qi{ Ӱ9'=–uɏTck@n+RU5VHrb^{XW3B5j? <1=o).JFIОh7hU{졾+QZRa}Cɢ& ",x { +z׹g{R篾])Ȳ7Y;㢈~F/b^>믚#`vk]O +3fq:"[߃ޔ9h ϘOE֏A|3ޟC>'lw9L*[ReU?KKDQE7JIbcT=E=&~RF/PﳪN4ObMFK' \Jgzw$j4NeeUz,-aҷGQ7Z F +Zԋ{:dE0X?Pr[ZbPCUslc 3Os'ƺA˂J$a~ /6`$uS>ok/d8nյeznөuwXeYDxJa}SS}|:vjLeQ(%kCxACӸW[# ̏M:Z51()1,矴ZZ4Bb^!ky{sgcRT2 _O8퍉4iLX^Kdb:ڃwabը[A:\[['h:b +`cFPAxBIG%_ppX1+|p:c?l?~C)# -3zkӎw%&Ml?t}@ġmoۄ#jA"l3Ri}?1\MoX|CRdع,JOi؜@6P̉K" ['qK(70x-V9dLsxHDM%^#Bbaxm) ,g|L/-^#\ Exѫԏ&~1; Ӆ[Ճ}=߅,GKe |Kńm>͜)yKaW"@ Cu.*`)o΁ǘ]PEl  8WYA(p]{wlyދi)Za4*wb*s0 + h tw[֍T5#hI;l5:xwhu"}%)q6Ub=RDQT]5 t >YTmg՚L}M9}|҂6R1Sگ*ay/A,9́KVT$fFPn~*l&8oAJ{[pa%>*5⏠>)3NYLF$?t"u׊PFH[Ju +Oq6KƷwtgA}wt٩K덢UPjP8{h:(N"=WfrނQ?u7?+sAT +*Zz-᠂zvoj.osH"{?=u kG[hfR<}j3۰ +L|6:`dTUtbW3>,5.DAɐk=5 +CD9rsֹ#bƤ~m sTW0=ҙF熫t>X==%3>! nge'hO3ْX{߽U&ddUiD@Ozͫ=yD]Ǜv?ڎMffG%8E"5=DƂ +v i-Ţ9x/(d:{"c/8wtGJT <_6}^` 1| +{__ZgWmp//<'H?Z+kYQ*qjfr4*Hg^򙋲̀t0 iX-CXMꕑ`ctj[9VH#:4rόy93z[J FEnC|z忨_|sf|o5͒*SM/߀Q+^ڠ_^ RT`IeN5M/6~ `"ɂ4퐮sz"- @4{n~\7GcJ̡gZ 5 uWð&?̽Xٸݻ>t2~kWoP9̣_xWP:8T0lKޑwraσʣD19A[}֦Fyy ]rK\uQD\Ivj[r wb1^u]\qjoT}ҫBћY?89s[z0%JÜ`N0N@} Uasaz" "E0oFZJ0X`Q8`IzB䴡Xg8 hSg3TaJj nDձs; d4I0#͒9b5&rMI05 xs"_̏pq1'17p# k~l3i'9"p JBruԎns ?ҟd WzҤ\eJN^ML[ sRR* s Xs}gcb],'w3|=xk^uV]N:UQ:8/>TL)Kǔ.兰@dwA-\KHEe(IP'o- "zv 65yBy˒g} ALeGΥW> %;aF>@ҵ"_({BOy(EtWt"rCg*1"ʐOMH? ƥZ@nsΓ xFP_E+>"?Dɹ q'r܇ĎD S+|uvLT4p7Noy )S&X@qi~$較_+#$mz2RL.]u01/z^aH"~㟷a%xzz^B 3хAW  +YS#ZKA7X-w:)~߼)kq8B:E%`;,Oq7:WJ\څX%m݃JD]R,IJS{kT}AX;}j?=߻!A0X./uob.H߈&|bW9{׌pw Jqۢw6>0"ꍮ%ud6dGv<A.TEB(Ry dm»exZ +4Jb歷lx^dơV0 |#u0λf^'4A{un:;'*`<ͳgw2= +Q\j_XRF׺3(͞7͑Q7_WI!WQm"U Aj9^:Ņ7~؎x틘vrN⁇ad+ uᷰqv<$lhCK5V!ΡTl | +vw + +lQ4|*>Ώ5~ %ztI5VeעNyN]UѸhRcͫDFT7ѐ k. +ZȎQ +w]m^=s`:uj=-Xi;kuۉKlW>j +hٞ#u+gJR=q$z +OWr_!k U_^_#\\nn:x(ڻtLnƻuT^`aH,0A,t ˩S5cU'Iq3ځ2i^AT`?0 +>)z  (rK?ր/zj*k5򧀁uܐX^/M6̝ +EG1p^ol;$(ۭ5V2JXNj(ז}/X{K3z%j*+ʏێ頉l+f֭ȼʴ0,pØJ*+fSt`ZH7Y*)*5\+?ZWvW}A9JUј_|LGiaf„Tp<aU +ׁoe0TP]m*îY"b?KMHXA+X ϵ2FDbo͒]&?Y*j qz]P]Ur\^ZeqUF'; q^f,8f MgqäNT͎m4棝t6Q3J+5Ў363c- +ԊBLɪ=]Y 4Tҽ-fň!:e;1]&qihޖ]d5n B-PQEVN0#L[ 1 [Ά1=#[۾5^t[B\OKp^ƈۀ.X@k\](:9[ fhSo?>yKΕb$)gIm ەb;^)iܻC𦪡IIx:x$ܛ.V +vJk#h|^2=N=[+20Քk@~Hi$ߋfV]dTId?ߞFӋccžh}{iV]~BĔ>YVKMM>5!$0H@.l!E+},`F I[8'X:2 |wtv/$`S5bAD#…)M_1]pD+4 Οsq`2$<ބZW#ke^g}᫿,Z#|[v6L#g7n0}N~j@!.A(έFhU#v? ʍ/p %Y6fb-ʼSHy6Q[?q 5isw\܋ⓝTm\8ø4ݎ1e#1psơU"эA" ktsm(:p:B1BSrO~GlXt9?=&|(%, +c+O#]8KqϼGӔ.Mil<̉QG;n_h/P{tYri{9a3nǍ+wҁ3l%GkiRDv"` 7<@6(8'I]w"ut<=" c5i @s̵5.M86LlU;Se5nudGF 牓fx2nLHl Wy[ XAqu\ 41gEU F rvG?3X?-A65j Ce#upsds[c +k` ȰwGcHՍ||P!4O҅m0 졐Q"BJ,tAV0Yò nkPȄKV ƗoQ|BVL$WbӅ\wq)$' #wMIr>3(ΐW>a3d2WEX'rA< +k&CgA|r.Mm80r0%yl: +E/fZ#9Hlul<0 DD. 83'bWR./"* ]G|%n{D.gz\53HYBҁ;^nXVdךGx$z 𲦑! +(``FP59H44qPZ8Gy;Ip7#>(gɖedXedM^&s ֖f '6&d|R!Ë "g)>Ш%vl4KXB†9dx-k!e؜lMh yΞfRј Zz)?HiO`=D]V|쟿m-(;a oPc!ɾ(6,PT9EoBߕ25N,'V7`2Ųg9-]/pG{r\R,/h<1wE%7nyhn2?x#*ƀyF +͸}_ sT3>nwAޭ8f3e3o&N @Sl*fC84w̘L9K nTB:rrX֙qhP;cb1YEVѣ9}Vi&s~޵rL"4·:QM9^Яn))סh7DE԰}6ۊ>n|h4A-xhߧ&> mK.VdU7\IF+O:, ?S{>|X.fb鮨Lir }3r%!y9~e= 2uG7.2u2S0OB'vbH.jRCPc5aZ3IԹN]]$q&9r"/'#VqR݌ԉɔQxxP/H &8&1eI",WYQQ̝ԡꮑ:KQ,BR^ 68mԘIRO2RO䮦C^QnDo.&Hl;$7?Uwp+΅\ c_Ȩ̙ɨ k+m@͕oˇwgFF::/җu3\cG@PloEC]^2ZrH򡞓e<?1z0wwZue2>jP\5Ѕk(l2و#Z(BBphr>?%|?r;ԏ{2!R t̨L?PhFl#(iuH/Q/IČ|;b3jWzu3Q}q3jXHTq0 Z(Sc~F5˯PS=7չqZ=hኮFJNfw=A0cpXE=BF⃹:|W5dvεVQ('Q`Lkd}@`}ĩ-j ;6XO HOV-kodžR4+&H ieú" +!I4O&5t6z`ϞOh{%4sy +5,mnҖ]/%M$ +endstream endobj 21 0 obj <>stream +6xxcfݔ-y۬,kVvx5C4sA^!'6釷o4nV\CK6Cph YjMf]ϸsY4m%9odqܑt]~e,7-L&5f}[BN_;ܟCbonAcsЈw,p`NC~N\۷~ɞ"QlN(\/]'o[GE7dNl4I^|훡s{m?m?toeP'"Vw^\H=9~sk:4 q!Yq x"ZatNɾݞrCG-Y`PgL4>k +js3&gr&sTﯞ=nIZQ[Ofx).|=b:u7=|i165]_EnǕ.65'Y=8ku9-좞ڈ QBr:v\]8ekj6 +ZRjEb9Ȏ7$,;5k.٥ޟ}qL-os&M NoRhy.FK[w$7쎿۽|IG5.L޽wCTe4)ghYִꀷ'77`Mšz&? '4<`v"L)/"F3v\O،xXǣqy WE$$niΝRs&[|< ?͊y?i3pWZy~+U;H"{Y^CZCz `լ60ΞQҷD0}^}V{X-zXVkQ~=PI^Gٛ>)f%l"Dd}^DKaA +Ǹ/0}'v߼4gz 5q"X)KN. FZ/KlQIFY?s?1Pl/";|(K)WJ>fjB8?URjBߐ=81K7\d@.7S3@I1cߣ|k.G'\ޯp"!@5s(!` +k"昸{D4`BF$RuH7xg9'y^,deEg eoXzo졦OԽ38?&נ5A?!Igl ٠ߠE埅: _w&{_?v3w֜+˭W[LDz%񗓮ӒOwGԬ ۤo9LK_п~%?:\cf&?R "watPjsM<Ś G +޿,Wa ykI ܨ<&tq 1R1(`TP/8Q4@˚8%=T: 5zi /|:Cy,ӁY&% +Jޅ6E@$T{o@*MK@k1;(v)GIUO]l,-`PX+Ǵ2;$HÑ%tؖ@J|ǰhy m`qa0eA1Q9K + (ci͔O#f>־03.d"NgB^%}^?-L0I#V"6DB q|RC-E-ifx[ٳ Y]K&C{DŞ Ur_$O2-ZM;c3E祥 +6Uߪ3$!DmO^T_映VI9|]N Ѐ^[ڋ1 #V|7ՕH \jQ H -Vx(<^s¥\iMςYmEu ILFGm@*6aQ]:d\ qƩVL3EҀׄuLme2V7,nngTgQK5;X #4/5#ryKYE +)&%B,v5Y`_85˸"۟cT2NqȘFcFB ^xq.L]gaiԧa ɃSKצRRNYQ<}UgaUZ%[NIe[|6i!?EjXʟ1Ц#t|L CBfm+Tt`c053ekNK5{Q +d$XiUG|d}@oclSn_O8Uf[!f0muY xUP$!;2[Gyۉ6ǶnXpys!TZ.~O-a$4pX6 +BmP^^7g`<} }NPKNcW7a?U#64$<&p"}kjcqr(oG":Ol1%d0#bJ7Ul)ว´Aa㸩=l*I+:u-}Pg߂ F +3r7 B("su@8/iN==aR)IcNDx>o`_jWx]SMǟgb:gW>gc^}f"y22$LKHQ#WT1a@]ES.uŤ1 2CK?i=ipIL +NpI#]BHGM܁R M2)+b0[Ӳޮt˟L\dm؆Au&6i2r"D2!w}%V7X4met g/g=:'>^(oƈY%F,zs%g"j943_m 56صМ{Hi=(IN(>*VnȀ0}pWM;, v<3uaR)"i".OXPc~01|ŹKik3 =ʇACkxupgm 9)D?kPJŤ=\2H8 t g`[$f+[^]+7D%~b&hFS*#LQY9%[,}Z$82Gv-m' &E#jjl+ k!kZ{^],; sA*eNFU_ +XtesT⩶2VKKMlն%-,7ʏz~WBV/x"+(8aB+ TIzѹ( e=ZkpAQVEʧɕi79t \9Tl^EZޥ֑4MkēUSZ#5KA-˓zeog@/q8  sRrJCul<"jm|r EaUܙ5X#ChwܿJLÕwT9S[A@.΢{'M-+tKi.εk=[JmK +-Ee(3n+޲x–\(#g&D1Reoyf0INDT) ++rp. { +T/hxhb*z +Rbf:OBCܗW{\;{j0Ob(m#O(A sWR֋ +&V;un=N‡h_Әe)ޏUƒUk݌k#x7 8M5SË~ h71VV79: c"{h2c}*c±/(o H&Np;2ѼH2s0CBD'8B!%zCJNNL6!vgaW@v{IDv>V:kOҞd|s> '".x-6I<^6h/uOGuC@_J> ~j'S=.&P0B(B:޷ @pu~/uo0d8p`{= DgI(L8mg`[S"LՊx\?Ool?` +`Uഘ݊HDA{ݏfpLFCP WZH590DpU Fl-z.Q(EX,JwEde@1fe^U*Can,eI;r֗c +X|֕Tq P$Lq`d!2nCVR|}'-n၏nҋWlV/b_OqkpE)1sL+jfΤ4PwxPʪ>/ ntO.B?\}G[Bԝuv/l uzO>,}$؂pTHbᒦ1DSD.@'5/q7ıL|( tƌlmHÇKPmXB$MGNպT:@ki Q f=<|b!oeoeRn)A<1Ӆ\o.&O^@ G!T@anD vPtIOLS䀑=k!B ^Mer wA|W$ w3z*jk|kpm̍ 4dIS{ik:O i̞/-TfqLyN3s̘I 5,V-tPgȟ~¡/\tiM+51!7j[ЦD%OG:(o"N"ʹj7k_VTy9U¹r">lrEWvEekhkDpA"4|sxR&HGMjCC9,gw8+p0͑('gbB ~Bq 7M8t' ;~ +&8#akh=#`זbV>qmOQMjVq +AOWSiJdVERY2yoKŧ+Ʒ\+4k 9veޗЦb-/Vf?p ڍ]á0rD%t}3ίYJ .i XUmg89\5 4Y/QGi nֶpHHD+̺5cB> + +zvaosBDqv*JikXt8* G&g`jW`3\D,*F)kGsj&s#+)T1C%lHӨtuHZ׃jPSSAӠ΀at C=&:* =}@AyhÅv&Qwxo5ѡYMcACT*36|q&&Z Gfd'^ &e +'pb3W]ҹ(0Ҡ m>AQq,;T\"BHe]tLSmXn+l6wOMʰLxˊv{smwP%S 1⁥@$z,o4v|~58 p{b[Q8h@tb !H>OWvüigf3xh3b$JƛD8[mMV+gnB f0Q"o%o#=X5jϐ; +M9F|hx[ԊOA3%CõC2X~3h9#霣@ Hbݟ3gj@6cXl~&P\N̎$h0J⏳u>#_sXub>sqYfT朄)E}Og02:(n±Z  I(Ic?0c' dj0kl A Hi`nlJ5?r'`N0Z@x>gw +~!!}ރ("C8y9L,G!Q#k.o*Zw%AXD@=A;PZR^tJHE<&/à;d8<2!]=r>pF|ީ:~ +MxK׋'(鬯4KM X0U7$k/mS>#YQ9ƛ<T H`EjoھMڷ[:a78. {/)sV%}&S`bkqT I{is|3V0o`90L(t E4q&ѱ#a/6 +N8W:4'B2J ioN ^cľ3|e#\Uݜ;.i_4vg$JơJ?-#'FLG&}#fb;~#(Z?wwߏ +Q'0xCz%MZ=r_(7}NOߡHs'e(Fh`M?vx .ID{8e_Ԉۏ5f7kV'q XNi0_Kz*%]4 x$8Hw>Mٍ"S; +/spQ|I3 ;2qd ư6hgaߘ7PdnȾN=^i!;`x(@v6[}^oD̽ϓgܝ4xjZE|By8mfYmfZM[5{i7U/6`LAw)t`W/z:p7>÷:(o H<H8k D4e$:x5a5v%=4S.&mM>w/WE* +S>,ƺ;&Nl G{4оpF2 + P$K(w AyZ̻lw!Uţ7JF@`C8og㢄 Cujua/ ˉp񜧙KA6ym~.;s=tQn4O0O0?:D)΋"pA8g 1!Iό^+h1nu)Ag b؜:> H_r6/ԨK8 +J E}8ȁ1m_t#=r/^o옸9N3n6~l`ݳ%<_Ty +:&Nlm<حCgfBy:bsSe60z̮Kaok}_`,GfVG}x/XlG N$zvxҘ- x +J8oaw/&47fTkj2怼>.k)o"KOӗ68b;p(%LB)4(te;eC{xMxw_Ф% ADzyQ^>ԸA}0+m~M +@Ka.k4wg6a\##(sn<乯#iLڍp08/o ģP &PqD cheh70/O!c=蜴)g^.87G.B$i[LfX:axH 䝭1y/y.mNqޓm"Cy4{f6]-sG3gh920r]k%C66hvͮCce{/oWǿ^0p\V4yjeg HpΊ0hyAokZl-YF.}h{A1oS'm +AE;#vyl5uzd4+u@xGQ}h82\Vô}kh=$M=sxg5ziv C0|ÓR +CR[#2Atzx52#v bÉ"$~)Ã<xp1o>\T9']HQ_.s|`{2rgXwWx7(kD9bʾBzGtJb 7K˩\"0%$ᬡ@: +IC8k܍#{n!<#fح3yeZ#mn[,g}!=Ĉw|לCn4k<4O͞Kaؾ1sd_A'm7/SGVЅNdsp߆Oܝ3ufv8FPM9 %kM tUB{^G E;_D"ϡwޚmço־Mk5xj?tH0#^ C6{k}HrOˁMmv8a738wYKa\r2gq7T;i+y?4'#3額^'!sPt=uAyO8b6HMgf[^+7pw&m) me/hvW68#N@;H2ܳ*"L? U^цQ;sXWR'  uNۗaܾ0n-Zn/ݵ3˪fw_lb)F}_2ܙ}a6Gv|Y$~f؏< Z=swV PɸT D/g;rC5gh<M-g66~luP?pZxH%yq!>vv؆*ah#0xU?x7 w("ʾQf±vB^f?x>Goؼ\Y=3gv1@R?万%y1.%"7hn1)|>u u~rË(8a7vǻ3(ql^g$/IS; +~'S):m9i[Ѡ(}>AwpRg* ]>tH.)qmߦȁ4wgvQw"%{PhV@'PއYr0X%w޽cvve@ƣY__(z"H\G,w 0܍"iw?zAoo }r F;gP }F-YuX&~R$2se X]6>v,A1:c8C{ 5E|yN[y + Got 99b;GQCz?CzhGÓ0ø_{$p6 bˡD q$̾Ǽ0e9-f>[l =˺y2&O񗓨?6~j X-$yP~'oQ)teff/A(&!g`5ۆoͦCmּ ڍwح4|tM^33zbw WF4%m/MZ-i̼N`jka9.l?u7{o [(vn¹5;p~[$SٗC\8O߀(:-F?' wlαoцJ%JxS_E)TOjH +L,z(Q2^DO3wn2oG30J%QeJ;d8MBy'q %:bf.=sƎ햁3o]ƥDW EjW Jig4Ñ4(x  =5xjw X08&G { F;o 5(TB5x4Hcֲi8F|}+> :tHy ^Y}#V@v?f8mζLgj+տ\`1me4Zw̮34xgwXm=˿V+#7F0oZ:UƼսչ4dY~W,gmy3Axǰ0o`:G~ ܝm>ϸAyH)I8;csjA[rM}'QdZ ~(d*'i}`ܿsH~18I/OęB?p*:stGġR9T25Kc\)} F;\'0ݾNX@v#3}~QdG  @$PxѤ^#xy82Fo)u8893?wf~d_EJ8̫Z8R!%@j@y_H1/_ ̩`0^0"ʾ?4 M};.AÃrAC8q6t*=F !Ǿ#g!F=#^n?r#3V1o_ _گ[aؗE6j گ38?CgV[n/^ $iwy+})^/g Cސ¶Z&ol#cľִk5^h]mfø/a_n{~Uwcs k]_8ߍ˽V5dг*h.a31l`u`[~͝SXw3u޷koW Dҧ?4ۊv{i7'0YE7vL>`:@øbd=sh2B%ġH Rg_=skCw_01'}pAC~e3={fcAx'`Twᾍ F}yo׾^qaҾh4,G6̅1ocx!C|yP"^'Ł"4`&1؉ >:;uy +;힉;mn#ƿ skPIGď44 ˃r$̾|hQ/Zˑ,&Pq=}k=˿9c{3iG_=u?- 3xfu \^}yi~i>3l\:t o7f8gF^`ZZ0sזּ^C@{5pW֗<.`7nkU\]Cz+Tތf0/-7WޥCYk-kxe귆C +5#}g̾4f `CVfн/f\^Ƽ^f.`=gu C?t0`ΕVKmzF KՄmjBMWZ|*N5hjj7:[v4 nt6MTM ntºZV\-fS*DEDu3OYq+*;EEŭjiiQ]]SU\n[vJkEUe5ZaZ*7[unW)nV;Zm۫j^e۸Y) ۫vjj^m7bfUYUԵjV]YmU*+Ԭ*kRi׬[aXvKNmmV*mU۽V]Mmک-^YQmY.ՖjnWVkvnյjKuujl^[v^YiUWn[.v;nvnv^mVVY*˽nvr\,un[UnZVk^q-vj^Z{bY˽jUjYmV˽fYv{j,ZiVZnUkeEuViU٪*m6[^iTUT,vJuV]]Qi`TlV;^el6rUU6rWY*+ TfUfWm˵f^Yl6fثUVkeEj٬*kbj0euNUYaZmK^,KRaY*6uNa5{enWzeRY]iSZY-UfZ֪6ZMQ],֪J[efVܬ:en-))+[VqUWn6{UeU5eeVUMm*lU֊ +{n*JfUl +{VmUZljZUaVWmUUvʊj[Eub^YV˥^i)6˥^WV[RMQQMmT5kj{RaU,*jm6fZnjSVXn6kEUVQaUTXU{^mUT٩k7K^U٪kV+˥f)*-Na5;^*RY]SWثʊ;rUV;NiZ-UJNiةvJf)n5k5rTVVSSTVWmTնJ^TVܪԔvjJKurT,r*JKjګ*+VU]ƶUKu^m+nvjfګ6V]\픶 +bWl6kZaS*յ*{VUqZ.Rqثnܪ+nbW,^حUʽ^e۫+6KuRUq+ku^]eWWY*UzuuNUUQeY +fSv{fTi-Z^-6{flUVljŵnV,j{RUmV, +VYiiW,7[eŭRU]V,7˽jWW,fYU6[f׬ +˽j,7k@bVTU٩bFLsizm.;-hOxY:`oBv%F" |F! OUJ>&+([ ȤԒD^aTTBKңnՀƻ.zETUQ#~#SH"e ,c=|URvI1Jrc嘇 ~@jPwl%XJd/3PiJ#(!9NV􆲊.Zx,pQ+K rvyK/k񐗷xXU>ЕEIŠeL&Ud?xQ~nyqxm1P*pl%TLϺ8Z+Kte̲F# ++Yl=`/e`!E Ĕ3NT'orce({@,.|"'9c)c,9+c;)Q].\wYYôR0&aI#0X`+/mK2И']1 cc Iɿ##&Ԁc2S$tB!LUHI@xPMUpPC z5C"uJ,=F/ {dn" +i$Mܤ-cRw*Y$̄4"΄"x8$RȢeJFU*#C<&@~^ x[0Ā_ BZ%Y50 K22?hP 1bү I?##$'T\Bd\<5ݵJ9I bUaayb[ҸBf]Y+\4>typ!ȜV$AkP?I8iLuYDn6*]M ^NDܵwݑ99y-Aj2,d ,bK,,V&YLbX)Hs?$a#L$/B2SFEImIʘ0sl䳓1 ٓ1`ggI._H|FU*qʘ&$Ę68;1 ojJ J |%=3*13>Ua=\AU{A D˨ eΕLtW0KP6AUBElo^xm^4R%qEpI</i$& )hP1K4l+Pjd{8g0FFN$J(dPi2&e*dNE$UR%ug)d2E8*fIMJ%}-=8 ŕ2KQ'oA-pb2!DDƄFȻVCsDlq(rdji'%3%1>%_-6,1%+pjV+ Y@^ e[a 6]ʠR#I%(cbë=y ߲.5n.7l8+@;*IjU)9,8%+`*9jB[Y(DRq7JT(j\p.܉LVp'N9339#S-ͯRiBYw2zci3\7d)z/)ِDlCKaSp.^m̯zk.0f_ +7,@!f~GݐyNeǀG"BzS)ꨤ>2-kJOɈ;.rޣĶC mVF҅+;62KEZ=Yb樽Yf8msAQ)bM!bYbQr]qG BRVsNYAEÚ(&*!j/+%j &$x 3".\PN=*($ǥk*);ʊ;(s.ˉ:lJv"P5JgEv'P :4xpYqWg[veբǤo-.jp>.&b"oZlu}b@΂BzcI5P)GF|)=R +ZE[ON}֕;B͚{$ѐ{t~8GRq?\!&Eɉ/Ǥxo\ +/5n zF4J!UP+Np1GDQLG|Z-v^ṄUx$[p<`WsyGv%(0nZHՋJhaϒ2? ' ?U F!yG YkPPC{w{r"%9 5RH,+nH9H,1uc^0mb] Q2+ "s##s#%'Sϵ9VE SHg-AJ᧊P@ʡIo)9xXRLi +7w&UŜ'~FYK@IK@I_ici=`AXUD:&G< ?!ɦH'M59HBU !aT0&FG`B^ȾCqP_|`8[xj kčŔp¢3 z+X2p@Jrf1tvݠIC(9[ͰF,RxR%&R2U F9sh Z,Qloyl5S((- J( T4Y4vME*x#a7(m +E@g +L>Kz2-ć&p#ʾ H];4!p?v8ߛhNVE)$4fJE€T%1SC|ţWp"GϧFL +?`:D V(~*xd9{:=R R;H(}$M?AC;/:oI~AD7?l=ZӾXW0NLGĥyiϿ<Gl92zF T,ZՈ$䳉.!=F<u6A1y7~*6|T ZL}+4T C[(2+as$?"s96m*=cw'B*s&DG0K@t ĉ Ҙv`P# +ɻ[ԫF #E4: X)7`x? 3f7b5#FA +nRgS,$2*8bˇ"r$M?#K>*^Dsp7 ][ ԈF $,>xoBwf̖qlވ/AŻd*7zm_'0nIy(>A ǻhЭ4ug XFǴ1oauMڝ#g~~ z % M@g!J<+ +UU3&.TG+m"vR'GBԾY(GWD}7OD +P0T1"oAG0'`d/enR[Pi;@vvSkRZ{U9$SŸdPk(҉SiG".u=`.%"gg\ J<T/Uţ_$J7ĠDq +6)uA4W:4i+=S'kÒȤD(lk#6Vڪe }]k #G6v+ at~"5R! ;)<80G/1H/1Ñ8"6%` :Q1I`ŢQ3X$To?ă&S9˅'RCֺR!P=Ӧ ujK.1 +^z Axu4$JD8~-D)i&"p NBف zr8fn#ʾK>D:USP +uo!!3 w T k0dFfHB @4>zТ^xP^Cc-0g 1q#K?C;Y)%wb1-̝0%@|I3 åHT/&l̹jƤ-EBF {>531pH'qt|U#m7ktUwy +(>{6"A2uf5 zbƼ:rYWq b0Ɉ<CT51)9y8Gwp?틶}U/"#Щ4pgM^.Gb~k V<|M7eQ1)mlI{*(A5Ygj ŻeZWhĝ@3׊Bxw!4#S)٫\kC΅wqlv#yWIwdmt7yo-3k0>"^${MVjH?4r=o3HWI(ipYWJ R@m%q=_JD ɛ򆠚Y?;ڧa:3?Swf}-es#F?p Nؗ/YOAis0J=@ +xHöo-1vHdɬ3*m-9JN"*5R4@D?CySXwOh:g-1XHPio,rzaYOLwG(ĵ5,wQdϠ\?B{9oMۯ[edj0zƎ̮C7{kݝ,?3/u1ߵˮ_su"pi J_ OH)R{S8*Vj4("5#hkçv) 90k_y n%!L[&. C B C7p}/1G0po|fޥչh<7ql> +W8"J_==gFĉ5vkvM!É$=f'}*4aM4wSو-P+Xb<ź49H o *a)+k>dP.qc윿7|G.7js!E ļG\MB|0}!nY."Lяm}9$yF0^b3xM2wd5p7F{Gnu vڻջZ::A!…<0#Q@zki%ù˃D}!T._ [R8&~{$D^ r"c!M)`~єoDhs&+pƐuD#'BͲ.?.&ZBYB2~j0v7 ,J D=PHA= D{DJtސe̅D?Ys%,7/|"]LR'B"Z a?*8biT[p"JgX 7.e֝c-6vA3~yɼ/XWй4pVV }KCϐ!C(P)(vHB/ۗg0~ <&z[ +ٜi+. +[@t̘FXrea{-T)b]A=PQ_pZC9/XHWYP&iPqCmf'm\Rk,-5Gct*X/k9f{\4ft#}4G<5يvsu +zaud* +zk+/2(90*6jJ + ;z9;R&k UNxp4Q͓(Wߐh OJ4wNxE4I⺁UI2 5 P$n0gP<~O5 ۬à<Aֆ;Wu?t,t 0dyX:2w*VH EDc=U#n +-`H(k%ozÖҚNud +#i=|1("^Ji@ɨ1N$q&&.&*Fmscn7wo~掌uqp"ܿ< wBǺP!+cƼfԼ3{inkiID :΂DĠy7<`*jH< OxcȗyPiSq vl/@DoAk(@w L +,K :R@ bcڢ[aK# +\PT:*A{O# g'ykt&lI fHa/z >0|'%tߞseu=4/%mLĹG(Q,!=Zgy]8o_>r@ E@xeXNxaז3RO mG=ZI4vCrPu@)?9Ea~PV6 +l9R񠜇<3 |\齴9sX.!;n4u2le00k岞nGxg/8=][,@u,/d]ZV; 6k;q!dKӯ[ h'WN%멼-p)8hoi18~y6Le7cX*x#0X3K p77RL3sxBjO0"Js "d4Av81*f{_l{R\[rI;@[x`Fw}eƺ8|+*wCyW'ޖ5i[X~`r ,cLk٢JZ'9ˌzD*wDBx٠qPz5R 8bP D@ ɎF%njaK3ӨlWmHލ);hAMHɉ'Q?T Dxpɾ0Wk$t)mj+.Ȼ +JU 2eT:*@ċcBy[Z.\S^ CNtav8MG&ܫ+~P~+0]*%C_ z)(>ZaZQRo%KA<)20,JJ{ +  NsyV~!A 6t, +C =cJVO]/y׆ELV>dll"fR`w ɯ(] (ѥK?EԎ +!fS"ϛgBd\M@x[LB SHg+Gy琎 +8cspz)~xB&3cW%uE{wOw{`oM8[auboE a};Ncm/C⭱r">^ـnC*wnP|`iPѡ\ te]R,~$j"kPwχ$aCdO`O*G>_ pF1!4l̯6 M'3$_<;'&RˣDq )"8#H1l`SXpilTW C,YSZ:]D^,vXvm.3;%8㲂*#}F^,2FCe +9(}T,~0›n\xӢ@ᅕQi Ĺ  59"DѼPT/ +F`vQ(,3gp#@.]@cO 5 2hbPѮ`Fϸ?A)X(@VeeI]E6" 0V{:+F{uJh]E#`cQR' LXm󷦥"M{SQ)82羽%Б"tiۻZ[ Z,\(Xߚl;X׫{1p`Zdʴ2._udV6`.c鰠" ARO3eNLPʩ``7$sPtBq)+[`zAvk%_T3(D|s.f`~ZPU80MN"^ׁͮ хUAڝC`ÐތsaqMn]zle +$Oܘ,Md`}S +5 GW,+,w[%u$.aFN]CJ9 h9dQ%Cթھ•O^DKt k,]xyU뫼EKl +"xhYxIA/8ePA,ˀRK \PTlNzcQhm6_R"i}w +bp]1yb[w;,({lbg{h`a3暩A{"L*ˢ+؄혣 xSĔ5! -"b6D39H(UV\HDb!zt +zv;t .r1 +/X WYv0["v.wX~1ǒBrE939S]\HI8M+V+cR{%KA.[wY[_wC\5h}L<؂+@2(Ei`v}R"}"$ROeCDtYKCV`]ڪPnpJw>pƕtʫ\B8`-6l54򕬿*́5#b@"a! ('衕 |˪,ƒ@VYZdehe8\\ *>ؑx%cm AT-#i:O8uvYb8ՌH[f:MHYmBiʙ(k-Tjr oQpו@lx:f6LyHl6YZyy2 hP+`+o]# ^|D0c纔hPPALJ$7 B2K~V&ҭAʪeXb Sw S@o~)f $0|*+P6D/ҼzYkt RRNc4 ^ǁA6z:@[ԻMKg;# EWOl'9#/y> w-W@02@ M>ݕ (h]RZJA9= V)XUi UmܗJ0+~0iZ% KL\ȖX*ӠTNq bͪC~pf kwIu,^_ u8D.#;O +گȋ&~CUsaF W +@ xaIcs^חW~9ַÆr  0 9ipIt a ~ ̚@xp*DuGb/(<^L1 %#f9GZ{$tɕPN!A!j^qs>VP>0:gsX*ˠT!AH qVɨ7 M2?H$wppzL]¡cR=!BB'+` L]ulKr)~AbHqXb9A(M%tVBEԱ?Et>gl:L9Ń%aN˱a1. 3<"ܛE%TyT{0A)qbrlŤ8 Jq8PTsV4ԑYY1%%bJ2)iP +Md* tzN1]>iM9ݦtctmL1=t^wzOobK +2J` R (=\ 2lyG$A-i ^ ᬔ8$$Ri($TɰPQT J/,uV{R +AI!ZIcSH!&)iRWV`&^J8c˗^9]r]ʫlZ)L$؄uЛLSD]t~mzN:](? 5E֭3AEV+:L%"!zH~Dq2@-7@:=Y򈷊3I8/TfY. HbФ 1ṛ&!O"E 3 U//xNɧC?:0@( DBv + tl~jQ5I)Y{N7@ݨ#$^Gx`;B:rЏjԁQI}3)iA0PqeIn<)& 󠘈k"ROI K1H|!q&d82-uHVo41: +$&FMnhTTm)6FBӔ֕vmfƼMlaتT3) 4%~M}I5=ha`;"s`хe sÂ*;`PY6Ԉ™;2zF00%ޚ;AJj7h;+PDNM Z, `8L |E@iopbq39HK?19nϣ$"q +2< F<((%G8OA 鷚aY+y} +0 Ƽ䘷`Dgk ЬndS/&k&k YŨ\@xR QG SB=s:b8$ͿTOT&O`E*=Ax&Obݯcso)Tp1 =y$M 5X4ɇ//&M<iLmvDIu~LXgWz34$0>Θ'u=hZ;s6_OqCsmH/ HoO$οOd͟7:ҘH M^M9xcq\ZԈGitF]d7bМH~m~Qfj¹{kӦbAD9ơP&A_(#43}✟3aLtZ^LW<:Qe W=Uՠt~% -NML?v\5[hJ78DPtpV=,{ {I3,1P-$,NF}tj[ T0"a4E|ވhng O9ߛ!mC:ǼfBywx*K8A*a! 4vi6aG D( G2us;d}Q34&oc.zeC lz)},KoGO`ϡTơR bPڏ}vdM"_`iMCagmU㒾9spbjorZ'(x/d$شF0DL W4~"NB)3ze{gjαgvrȤR :J?r7h +F(,,j)m60JƑ.rKXX<@JƇltS+pjd\KJ_R"ߊ"B(ȉ6|i^G,w_U0,$zI3YE||\ R(Q5(o" +Oq)P!ȸ]}, HA5f]=&g*#(A2L^X6ivQ%? )m.RA3[άksl9T@,+E(!~@;`^4 4gw\YwS3;ެZ/$?wit 6ڪI52?<`0PVÕ4s’Oڋ)،G18,z!yyMZ{~9{BPve!K`"?QoPN"7'i7@y#@]rÍ0RRA|ݠ4:Ɲ<7f`).Lc?g}g̾KkAH'M'ehL9mGGa:3}u_(j%' PDm(oO/0h7"J#J@ş5.oA!ż0.J NzxePQySňF= R8|\N~Ǻ_WglQ¿:-p{{XvHۀ7<ʴ +Q2>'V4 (Dwô}{^{u./k٧cyrkH wP]~;8 ctrY0y?a' T$ٴ96 +$ >"b/ej#L"w +J{*'-A*-zRK`B:0Uzl\Y8 @ +HqYswdW9,$2@8 ՍL;K@BEKIUTK0YBow` oDIIS YEچopZxM>v5%m |7y:1]f}VE:q~P5~hve߇$d_jr82{-_ĺ^!Q +Zɾ2k÷f7>њ +F} 7uc H:R/7(T+u$6FtЙ1ibuM]{S`0ZC~%07mb jQi7ys>;mK9p38c D4m B ==%KAIL fQ%_ (AF4;~9/a_oO!#6ux^<[ +F-'*bm ]yAE)hK&F~8]F{o ۟4ѥ#jw&l6=uCU s x+_n`蚺>4a3s!4z¶QIa<5. 'dZ(ٷ`Ţ_bQN̶ =è4vg~, 3#M?wy~KH L$z% ^ ӆV4{Iirž|2J̝6s)é mm}÷:xL߃ v9*ө`-ŢBJw=1Iwi.u#E}M$?UPkez$N5' 6,k D@kv6Ae^80xh7}~ll@BziKPIe82oupؾzp ź&V; J1//ˍF{`J?| 30_CxNSwvǴ;2/h!1l`L8PZ@u?k9|L66JV4(m'QdoiA߅`!6zoOuetj`fT@B7(0(q #0d$ķ5.8pޛCxw+aI@<[fn34ue&/-;kr5o5sbmuWw/倥տ||!$ޭL9CZ?y+a{>y.m}3{dtθ#P>/UB2qd0El޲]7SZfξL}((>Z K!h#[F8òT=FsB<#~(R'Gki@L9`!t4%0D)|P"ߑ&^vߌz(` ȿ++kon@OswfwnXPkJPm%I7\ ll#ʾߠݑY700(L8d貯뙨\GL*6 +ǤJ=ď |uyOWx 9eiX"]6M,8b5< lǴ2mc7W V ^ľ]A6#mO>rP}ҡI5q۟#7zm:7|& ZfKz=\JD +M> I;o=ԕu4 ˚ +ƟH;ɔl?(L@Rbks"Pe)r~)4/8 7@;4!XFhgB{?`:s߼5mvόgXԅBwi49o޼ rg-ݵT*1⋓ߣ̾/sGƚz{~u578!1@ E@">@JƓ2xfʐl;JeDb^&hd*Eb0jH ē^ =ww /O9b7<-잹9qi-_+CWAPfM9&%|I`$C>z'=mҐ$'Y{3wW[ֆg"j_؜8>حY<ǶT D);l: HC]4݌cf0 +LJ(m6u +šG$-J' Eb#yaTXGF,#W$y6% .f[iV1۫3W&_tMόȺA +ǻ(O.~ ^N`gФu_:EO2(t +!N ü}eƼ9mtNʇ&$Jgl82ITpQwsR7hW)B:@RTEie4"6~WwG;/IkAt_QuEb~T!Ix̟edKN|C9o>u(/W#YDx_^t4icpόV)iwE)Q[ո@{g<&FȇcyDtF}'(Q9f_^v{9hYa%g_.61/7:n6+GI +l +07(BH2AxO:c@ZwMI) +? |_[8 PD6&UGNT+q<en"="7'v)u%'vbݐ݀ţ-!藂: Sk>44ٗOi_pj_ZkHҙshN6O\MhFN E>"yyI U"-` 1}"mE˻3{f#= i3H6þTV^{7{G!;t6#hG/`hw%qgP2Z?igvT0 ?hYAw )>71qgmtz, f Z-7V3}?2o7.?T|2qe `DJ@ĝHGA핡2e'U}ɸV4T{n' m<=uuݵ}.7n#_]:K%NFn%N{isn>2xXZDF C>2gnK#o$2met]/ev&t&uSi!/gV@!C!B K56,?v4w ` A 1:su%`a!Ka˩-'yw@J [ŁYcP~U+"d8_ BMۃ-2 +uD4ϊ"3LҨvB`X7SĘ>!\k4Wxy_ hD:ϰaYobj_xi?0gfk[ >M [#7k aѤ-zȒZge9!$.Hu8 sļ&)7T9GPqM +Fbw$HA +;PJP߽$p:'v;p/#ؼ@6|j^.lsr:;myog/4l cplwPa\8 6nk/'4Rׇ +{wʿA2LTB<9~rS,"o F@ HBo)w$9NcdfF:_ }kveM{}O "ZgCB:ܑ}qHJ!l@ Ji })}$Dȳ?*Ͱ"x# X5y91zF{eEu  粮.4ڦu Fa?w l81n@gF+Z^62oWmgY4zfKYݵ^ֶtyg_:^ga9c9 ڪd3w+%_uO^$(PF 8g YLgn9J ^Y/W~ sw-I' lqh@7oOcDW1rb71Wj}`m6^@v ZbT*$PMEr9y5{EDxH\SS l&ѱ'@vGp-ͯdM&oc^[}C X-z1jJۡ_-л,`T"(`+w KŃ{Afk)slpLj8-с׫*n݁]E݌fi9RIDRѨH\`bC"TC'Q,$M ol%m%od̼:p5MZmUû8bzs8ܽV0um!@axWb]1k׾3wj_75e6AxKp5`h[roϽZ8ܫ&6 1hgR:CP9+m9a!F6' ]@6A_eNPbn,D( +E(7'7Ɉ;_ǛZRF Z,zmV0oa]71o}df4.}^@ Z4Ay y/eF 9ny}#N4om`W4}gϣD7چ3JGZ(r3l=D|vP$]dw? jLMˀ/%}h;1I+a=CTE RN'$;/GFܱզ[ޗq%vkkIбm߲`k@EרB)hN:L>w*$]-W^tB\4zVg|&:~}] YPUo(=#Җ +xgxBZNoQ"! +P93@@b <|Vc"0 C׬nH`߹5Sk gvlunicPfN{u 6O5|~dtrDH!nJm:M \ehRCu?CH'A ݋U1!{+Ubty MF~gEn_eIM9[='TX;$ Y$}iW\Lװ' ö|M-SeJԘKJGgzIƝ_ wM /[zؽ ܋_s84^%CoJs4*i"X83ۖuX gwݯ'νj%=rd82x7_!}x퀻U$\5p*d1fK?:i~Ͼ?yZ '#tbs?ͮ޲r T6WRz]_gPp(ì\KnA= HoI_$%=Y@fV4`_wfvER\y::w>^э[[ad|gGi;ļ>3w$]YK5_GE!_^ܧ!7OkO2{ƨr?:FqռP.R}MLt}o~$tx3+ Θǝ +TΤ "ϔؙז}MZ趡sA?cg +{C%)iuK7 m <"e^_C| -R8/ĭO[ \[TmBSmAh^Ʃi1<w`k`VO~J Q"?@;o $/Mswܝ<=;ZÌ둫7;faö]uky;,lIkmw7O|.TyaPlIZIQͬ&他EڼQTx3 eЛcǨ0QB?M$ :ͭ"<)>k̨:8ʝBsF[ty%nba}Z.%v&/e͇?Bѭ$ j67 CRX"9VE_dG4$6.Mb:E<[NxK_`Cf~{0R4LJJ2|&]L9׃ʷzYO.O+GIL_݉>W ߧ@G#}նR52U(Yfu yvM5]U+P`SֆAo;l{,qV1љtU=o_𲧩x(B (nj+lLK $GzYc( +H!rpFDw~Yg)&0[-Ʒ74 7s9>Nf;j^ݱ";F kI* HZd{6`1pr#@C=,q$g +ZA PTnI0O&b~{F1GMmJ1F7;留gfP9@'U(BtMs){TfS5Y3'sx}6NQr f| ,Qw8qa.l-Vq\KCC;xԗ i=>H]Jט'n 8Zh_>52ojٖ//8?U4ۮG`R7Zo~4tYDY쯽$,|YF\ TWxoX|\96. +; ]}ÀOgFS濅Ra_1KAznhxdXPn;./PQ7E5_n&vA4C~_Ug,w]K iN_J> 8ik~=C% 7PΠ +:B4)[;J93`[OMA!6DQ -ͷ7NZҷ3:1H$(")z?tqX +ڃdžOܨJx/sIr}/Dk6ԇϕ>İLswÉfGv_%'0Hu\*P2^AF7qVhQl՟o*TmE*^u,~ +fחG;iLSD4I"r|O%/܌e˂F)|s@A[ +#1, +0S1;i\ 1%9T́Xx? e}`[cM ;ǂpSijD +@u +jNy9u bEڅ|+:ru(eK:m1*V[%ƑZJҍ,ie_1{ _/r@X]򅎨Տb㟈*^R5ozU"9 7ůIao-_kq4[RLcR8 +a INali8p6T͐Eu_6潏C$RtB@6,2}"D؏.Y?8j$kgA7DeϨTɬ%(Ƨ$aJ[XPSI%L 9ސOls&gE;mCP` +(K̺`Wlx2ap ܨ|G;i hKUkbFvidQ({+]FLϚP0aȚ;6+s-ð< +U +mlǀzft|_("L,[BaTΘ}NƭKXOpD ,A'w!& "h<ݡī붸jEҺ@NGiZB[022T1@ڛ]@bBfU ͇C7(1_/"iPy>⠈^2>*ݴw9u@u#a!P"|>KB#p+S"M Zu42SyMMT!5b!7+wj6z+X!},FVh_)fjqˉ;@GAӜ+>L5neĥl iѶrcKLtFo tЌZhyw\^JSK3^q)2t&b7\NZq2`鯰mˉCTKVžgN*+⛒'V*#d*aM)_хoS[`TFeC]qYo~y[NBɫ: +_TqH +FlpeD@ ι[,^9$W3j7U*(rwRhsc ',ҹQK)Te9ݡCcmj-!QES}S'KPI*X,AJvBhʘ.83YJZ@7L &u:2rY6+~}Vs |Hn|וylb,얨swgRw_E*qV`LHP' "#Kt' +g*g`HnE_mBʫ!=P±nrT+|Ev9Xb&ܕ' 9 5>ޘ8}DZgFFx :_~g-H:: ccȘ>ڑ繁[UՁ崵xGj7&rtgñ_,-Ҭ!v EӾ~O9$ob +:ɯ(^Ap׉WmS +K0[vX04 j*m &S&C; *{ƛVY.t~&ϩdg +/pFߨ#jўm_É} iFCr y׮9^GCVgbZ+>;@2[c*Gs4y$V`Su0bcYbHԯqp[pn#t";tAb64'(\S*CƗ<ӵ +6VGز R9eĥ,>XC7`|R j2FH,ڴɵILIc.bbH 11|P*=WlzДQFqE))CI2sLZNq]@3p̨}IK-oy4E"bmxw݊=kAs +Ylkw72 308Ǟ(rՋ{#Dr4 Ϗ5L$'p(4ej/f#0!]#U<"IHtAS#N%"?c +hA -,WsNfu>SSP5\ F/Kc HenRuKd"6 4je}2kXNpelIRc:w\H@I@25j9\*(/->`q#=Zw[Z(.bEUc$s 97TAQl.0Һq2_TYq"4Usb +W-V 01̬ ?quf2bMۖ. # "+ R%<_mZ4ew$1^k#^T2MX"mQ!E˗A] sUECb5?Hdrn8gwt +T Ćy2YԢ+[/{>m>3ZLG'ǩ"= +cO&; (Ke.'_n$ǂ[1u&f0df219a 2Y"cϽrsr"F`*c85BCgݯB㕶tNfΙ'bKGLv4xh4Sd Y NB;yK8{3AtVL6e]qk>dPMeIpʜ- lr: @6_s5GCxй1  +b`{[( 2{9Pkׅ,MsТ-f~ޑ +݃E0֖ &O*0} t}`Em$Yw,+t_+:YGb̅ + [pk}E:UUi#!&Fk5N]*=_W?Uf[gBW4; (06}G424t +fOԐ0K Ml>fOs3;h[xMK(o\a _(w^ J>o̦!".g >*7S0ȑ0unS)RYn]ـit8%.B+)"wdWlѪ[l>DhpОA%'vH77/oe KtBQ _z| jjTwMl0g$T' ˈFaQdBs457cekjx@@8m~.lyJ]B7 z%Ӽ2MrJ+>+c+pB՘W~C'`]/&Mqg:R(Uum*aKzEɯOP>=VL)i\%՛4A_up[߫.@E;7LBPG½-*q>cSEBff)B`Ⱦ 焄&N<{*3[ G>v胡m]ؐ>u}UTYU?G񒢑ZIBM<ȓmKm\ҐH1K 9Y a%0~_VLbsےvL X\"H{;L;5&x{bU%]r#-pEk ޶;AF0Wv0갴 iW_n bn{+*  +.Kd Ú*:n/" 4bpdh w뭂kY<=&q]IĉjRl-ġO5! ~dmF:Q(J޹W0fIK`Xĺ{:T't3/0Rэ?`t 4ǭIs.8b33s@?!s4yWhKX gH/Ϝ@7 +4%ɰ5(`ܛSȦiBco`oй΅JV1t7}`t|4554ml10SVGFilter +/ : +/XMLNode1xmlnode-nodetyp/Array;children(feTurbulence) /Unicodenodename/2resultattribute(turbvalu; ,numOctaves2baseFrequency0.05stitchTilnoSt1feCompositin2operatorinSourceGraphicinh(100%d)AI_Alpha_1idoyxxw,/Def ;4fractalNois4GaussianBlubstdDevi1feOffseo2ddd11fePointL2--5xz2zeSpecularspecOu2styll-color:whsurfaceExponent1Consta21litPaiarithmet2k3k3k21014411feMergeNod24BevelShadow2x4Morphologyaddila2radiu1.bbnbn-b20n1feDisplacementMap2(b3s3yChannelSelecAxRxMatri(b4m311anim2restartalwayaccumunond5NN2additrebeg0sfromto5tocalcMlineafillfreez51cn8ccccccc8ccc1ccc1nbCoolB-5x12D_66erErod66_(771 1;20 15;200 200; 15 20;1 1 1RsplipeatDindefinremov17cnPixelPlay50 5;20 20;yellow;green;blue;indigo;violet;red;oran5Dielev6azimu8Diffusedd11lular1re0011102nred6881322(-1yx410.0.ccSta82x045dddonFloofloodblack; opacity:sCn13521arithmiÛ! @"3NQ-<AaQ0$@00@`L li>H<}c&kobe]E |rseh ]g ͽnI2L4DZCb&wUK~i- +>LQ#ee57Z/dGtNOJ+9ib6c.mx)Q֥HpHJ{f)NV\ ZB -17 +DڭJ~A-PU_VZ˜*c7I<@ 8 PGBg_ Dw s Y-3* }N\ڞO++!uLdv{nKi.۵*w\7g"`U:(QM|F9P2Xoid\Qn~j'lwNHYM8)yXOqBe!{ &Ԟ9ţ(oE^`}NjJXu[-E\-ٌ7r()qs9*PB)m\6|-$dWܛ +t8r \G A hŸ3*=-K0e/)`ttXѣ<'ƬQG3Xuϒ.`z6IS]R~0/1[Ckߟb$5B f {lrΗ#]#!=8v f&#ImoGl?/_ܝKBqDA|!;XrG5{.sƗ>rR`A<\qwz_cP >DiI0"9uQqMA-&bȂ]`9558f^Du<ԙ]vJ30!(#zF}ꭒ>8i(iW_,#ŕc:eQ~n8 Q:Z4"-֌A +"X3@쁉1>{f%`M$7<\' @zKtI+%!%(0 ݭL +w]aG9wl~xMBc`M+w~\L .?2ГSCAF6jsH>mMYNg`O0 /V ېPKf_:՜pqfDIT5QyY.eJm -&BnUA5+j)HU%އr5ke 4] lJq4|`ZDEydL #/ ^Tf܀Fs%+\$o,wT8e* կZ-R"#b̸"_(> 膖7r:] d? H FjǮ\qh<ˑ5[ʘm0iƪZYy +-qr| շ$K 68TnPf,Bu~eA/z'ɡAG=oP `m\C ԊkzOMI6Fd2]tgxW>:oJA;K;%%PpeH ňKʒ{'k h"|6ɛŁ+NfNnd9,aNdn&?mayg}A%jXiXNIbI1VYw<]-T iCxJ*Tp˸FC]藇;VdE]FS=j… +j`eˤTq )`,mOKJ v9セ̉wULUj8)`<[ar z=^|ǘ~)ˣҿ5\ߚ ͫB5u{)z%J"[Cp'M2UUUUUUU"km)Ro)Xn.("h-6LT[I[+$O?R&ZUH(zli$ɣP@{2Eн4M4i*MӬ6"rnTUUwMaslڮo:M_p4vNj=oJV_RwgXx)aqcHkY;^h^c]4_¨Fvkk#Vfٿ9۞a9ޛ+)t o˘UA4`D휙faΌ1L]l5͵ʔAe9cc7tgگljkֲ'&w7UC"3~EpDa21S\Eepw}}K\^}vi8*KVMe|tl֫`S9&WSo ۲ep+7l.p\@0Yi8TaRTf;m̗Tʨ.k2TEe9V~r2sh~m8.0S !I".j,@<‰A1-L@.`ɣ]<5jѸL{Ȗy6ʚ#)jP@m8"C<$C<$C<$C<$C<$C<$o8(`bFxel)'l8".Woc,wmg͕Yf wrcj 6Ֆn5)2vm8& t G kJ^nV/Θv\pD[/eZ ՚ڌ7 mKa~]f9u//,^yl\3W.1޽JlV8ྺKαog2@REeBkDÃa(8E0my"g)$-Ity*j'YRLbH&AgPT X[vgl/cڒ)sE7Zo:]gm a_%c]JM/sY2euKo7朮uښ[cߛ|U;}]n}wQRݩ{v_n+w]L\L8ֲWNoh =!̈́Db1APՅBP,`j,,xTx #)L Gñ%zĂt[`2oK yX0^G9z.HT#  (`ÁX@ HS51y(aTPC= ,6#B. /& U0E,4[L a:d=DTTh8$=H+ D8oj$< +]-aT\6s6'7s638Wi۶,1l^1ɖo//©ɁT8-ts +kw⾴O14۳kQŌ/koo"wJwƹֹv֥t/:\o]rʴU]^mqVR۵&?[VS3RJly5׎WkdnQh"ꜻ#ʯ=Ze GdiA2ΝUvؼZעd:߭v׹1A7~h8"l]`cֺjqu5t+5y9flnMƖ7^k Dž́64l$yH箦Sdm*cc['A۪mfZ\ݺQyLΛx[-Ҷ:9^ cܾ˙_f/"k󵌷\4^KK׺_Kdm7ί+/s%Ld-6qkD[Cƌof&&^۲ [ [B [azcMۦsqFi|m 0͝oWߦ2묻꫍scfp3aeO-\1LgÖ0[aiq`$6[k +ٷl8_^27o٬qaЙg :hСCG8pT1Q@/r$r1y5g6Υ\ /Em6ssKVY.;䊔o"FhJ4 gF<ChFh8"$z3ft[s+^n24PXf:)c9ӵVֹ]ti2tuvkyc;d[ݲ~nڭsԷnj+sɍY[K93*kZU[s5e]6wXgm314P`/:;^ּr׹{;BT* 3\M_?fgf@wټ\ztMuۺ1+Y[n1gͲ[geޘ9,u{r2@{en?%V\9SXj2w?7~^َ3@Ptkzv2tv> tl~9ew-D׺5mfּ寶cزlۧ;wr{Jn.+o.}e~6*TovUwٺvm}c`2@3VnϜ۷kco햱oneϮWuYӓ]j?[ٷ2@5n_f]&KXLe`Kvz7znڬ.7y~sYSͩsA]jS +);{u˺X'>krKgjo떚c ضYsٝy?cǛ,9VoS3efo-ۿmNN]ݻSVݵ6xHb!&oU[HqMz**.*Y E\!3IśPƒ,i\DDNyIPph*I(QVT.h(8."# գJc`<1WxTgr"z2z0Xh,`hL`ӈ5ER$%`/R^z 9Ej8<¡p^EP09HM(]" ժiCٔPS +{1 vg`o"@ +٩ġrWs+xdN|~7䠎ԋX1"lp6_>{1#hzWw>AU-c}Pa32hh_FLqi-(c@rPU4 +c4|E'Z㈱KM9n7*W2&&u8mdhSMA1u@ +OYC| +ň@h1rE\7,c~?KNW\?LQkl~2e8@zdI7RlS~NR9/%1gt&7[H(x9-`HUWefNuݽ]EOpO2GnWv҅7r'I@ނO;dΜ!lp<6HavGq*j!キ+Wb0(v m.5d +lZgzǙ]/:/F%Qgb|$x{%*vEs=߂i9(4Z#Rp/'"WV&i1vV^vD!7a6`&1OMMk0% E-K>Gb-̪q["ar%@cbMY>aR*OShՃW䶱[)ݦe?{L#4+tu&M'>5|;#0Atu)vè<'ȄYY+Cߘ&},I04+TKVT !~}󕦟{1bF#%q$3>?D"F-ڛ)IF^oHx^i`*b']^ ?pf|ўi~ 0Z3@$$PE%+d*#an1pXRQj')),̊/_]_ +'tTzu`9P|'`.N3b1q ]&T3D$Frãfc,U`5R {im(uyؐt<*?j:{Vѫ̛8,}|/\PY϶ T"gSI /+ +Tj4>H$wH+I +:o^&m84X) +endstream endobj 22 0 obj <>stream +Iz \ =f4!nrn yC=׮糳2WTpC_\hs0 +$6_2xxVɪ%rvM])%OH Ɏ~î+d 1Fswe4vN*u P41XmPDR3R EPܰŋK;_9VaE*ozK5mֵA rt(j[7Qx5,)^zBo=Ab>I3ո/UY>.f=OcE, GմFV PMY,G> +bbg!?nH *YILݡ#g"QHBCݦD׏XLy06HFyٝj;q?Nrks?T[x|tk Y`{+AeoZYbiN0Oku촟&I\WóDv`AkHy +Aέꔄ`yck.0zjy v_ gSkP]?@NЋ&ol'jxnFCw!1ެIСZ|9^zh՝Q51E(O/^/"Ȉ& ( %lK1vRqW~t:#U Mj<ՇPqS Y /h Pպ%׸U?|QŢBoa^geWhY&LqDAxKY>>tjɀ{M]ZQpU,Qu(+B:IPaR+ΆI ^5DhZa,QYicܤSȭy`.ĉע'JԉsLH| t'oH.OYTIC>Q7R`7}560[C,4&}P,d{imsEőJORjҤJ*TdW̥'ktJĦ8G5oȆ U[\R.[ ҩU&*n(qK B/8 +vF- +xje2Me&kuݸ~uB$0boOG5Ze;̤{3B%sw\$7UnX ֳck#UոUlLeMr9BgtUF~9NP4LC8M:wh[FޔaTfշ]ܻ@h˰ܓS +w<_}PvH𡎿A}uxjCD^ȣD kr5U۳+;ȯŒGR&n#IV7tw'6^aR_ ' k5ġ.6V$%Q(\< !3Ot2zj|'<=W6-!nև^&/ݡMeɪ_g9E2-2I?aBYtS͒U#Y2lzrBQ +4NeUTuMl&F=.ȇ(_ZK_WPG6OLV CtBOmBzGCL4d)a)lw=}ѕW T%!3ϦiL|7l֊$u /zuEfjGs?91Dt.UIȹp( 5Ӊ=]ԍ'bJyUۙ`݅-'ǜoS~BNQ)r/01KJ݊G Oxf~םV,a=k Y8Ajɬ +Ow(E*HmTw @Zp7$'|/D* IF1xf4x}}+4)8 +{3HY֍ShT3ރPNk"'+n>?fդa,9G7;b;f.ruӖfQgT{#4U?dեfYWFK&}/ +<QP&K N? +0; $Q̢#I|?[B$H/^jl:|46x]`MY]"0)Й4wtyb NύB^ME#.HԽޘx4Ǩ?N N8xGk\(14Hhlr3R^ ? 2sZ0 ӈjC@a +SMh,; ւؐ:k #E MpJx(BCD. aJ *vi8L]Gse9t2zB-ivWqRAk˴BX;uB-3>11Fiu P17c=I3koA/ G&n:U,Dۆ%i%{ X 긣% N>`Pj)[0B0Ⰰn8d  jNAEuA_G҈-~IM;&<֗ ߁4,LJ2Ͽ]k͟TmxYLTt̿1p%@RZ$Ļ e{esn>mnZ_)sSVRawB"߫..lr,^tm:2GO~Jw;ώ/(\j`Z3m VW CNHGTFeMQ,M3n[I􄑮ᴩCOXl[%)7?" +1aaϭ16Jz[0kQZkM +{5 q狿8 &bkNx}!o?O'xʦ  wq—@p`3j4++ JdfǙl83O{~!o9hOۤ4EQs) +c b'8<bkS&RQۣi?žu()XV0ܶPαl ++y/VPIFbx`NN; j^0wr +ˎFCtb("-}1NNy +1Eu-ǫ6t_, rrwqqf爵ގάѠ*|ϱk.s6ڽcK.nH:i7H]>r]K̒!dj5JiGCID[pSSٺðHPz~҃4wepki snZ yb ?ͭ{@eqUsBE Dt;SGo"d\I`PJ40ߎd Jύ;Px3OGH˽u7VrOfc?&#* ) ^!.C+Usl%8nҽaJWإ,n+i6t +8o(i҅š@Ϩ pCe`psƣnE6":C,pd92Ms(8{*CKG1~ '-jfloP&-krMk:Գe4) G>'r=ª$.SFt*Cï,8G囀1iW|gE t-&q9{E +0C+910!فLY? + `WVI BS(X釖5Te̯jꇡ0WLN nym^McF5>ߎN[8YzuodI8| Mċ 26آA]'ZY|)IrFNV` gX :U!XFEd~ʊџ9/ݓң2U "=Α+QFtnGE0wNɃDM")NL74sl,U"+蟑SJ "dLԯsa;wթS^5\5a0#nUC~s- *j|hcN -_>! kLIp=I0eZN=fHua_mV'\e}*/?%KED^暔ODŽx\4oo#+>,ʬ|3Xt}Q?7Q2`nϳSQtmοgy̷;ME6!@1m| +vd}J`'ZN\KnsFhXfw^ʈt5jl'/;a78wa*VrԻ*&l\*Fc[lc|\i`}i܀cxc{SwJԑ_[i<+.)u7lj"QMybACJJ$MC-ܘ d)nq&! dPf->JDj@R +WǧlH~+#t=2N=នrS"!w/aC+0(~^*Pv lzMl9FP1{نBB#|pȹp){voa#i%O$x5E%U՗o+▟6%_;哆31#9Z V` Ymh5"*(ڒBh6z6$?no)a9rw  eK$ª$+G؉;eD ! 1PT EXoY 3vCgQܱnᒅYa." tn]b=A$H,V`Ԧф|Ċ!oR8/.t`b1dᏪ +CW4R$@2<3qG%wշGVT+6dB78JmiХU@J1'.GP̏~J0(<dʘAXcV.1Y̓"*W/^ =; Z#B!_rX@s)<17F 7b3/X/ 0:f)47CY1Ӷs],W ̵ZT Ry&Bpv5D4iE12,0PX!j9>b=P׬ub\3N*1)Y L CW9OzI-+஀IF򑃌G/oˤ&ۛ*?q69$vZdp pYh* /-zo; ZB-NjwWUN^'̅;Nj\_rcV!ȦUyU0=׸yx~'g= Iߨ0€;DYX;4v%Jnv}9Lgg8b dNb~(V.I%pR76>S7$ax_C'O*Y5zc4d%m=O$'o^0(򁉓}jD#._!P/XQSMTD&i[@0q +SOVd + }0N3fu9=BRӟ+n/t~Mw5]ә[9h9ڪpsO?`wx ^IQ#w*?t\%0HMRD:GpRiRc #jHo'Oty`8/>Y>9ԛ߽엒 4 f L;4c47Ls0{ '=Ը;(gj3p҈j\(Wy]d@]`[͕{-(Mv +:{y#߰grFy.b,Iږt}xifBhɄ;ZЕ0K rjyh_U6\Q1frƧ!aX]ASw>%IvʨUfPpz~;Q h#Q`&i(f8^$@hDg^fͱ̔˟,5jC)DBCHrQOMQ6!Cѩe sM~!`TH1"M"ef1ƷAK`ѻA!$=/% &Œ;wQeԤp&~eIUYU| U$v9 *i0e-WSIC0]R'arE8DG"@{L3Qz&>'{WI_")󠁹dT4n`‘̷<>m֭ ]]dI,cJ!-rb0X2 xHT5cM|JQ \0v3nI nGH̔ $9 ٝ_qo$x\lSEH OyD%!f:о@\M?8 +d4^Kp1Prݱj&Pكڠ»%|"1qͪ,-U^4*8})1%X:L̯B(錺Zb%gTXRy:P6!'o?݇Gik5l967ETGҴ|0a`q6*pـwIzC;8%2k$R <-C# 6&#AdS(SQR X@_#JgP,;S3$װH|9Ch9譲]w:+ Z1QA'bPhW68XbppFo4pYm{&v_%ÜٞEFnfO%A.`flrH8]oz $ wz 4}fMY/E=㨑ȑ{!yʈ 8ŦT@Jm[!BX0b@iKKQ1tS0<;}?c6M/!Zŝ鮦/u nJ]9d +c*2}S@Ǜ w i=Wf1z C`q^['m,;  D&dHlN,Njo Y{ӡ㱈ƖZ5@$0PBVٛV|Y"haY0zƴ" vi r1VƪkDEM-2J,-;:n AvW[ X)8brϱ*lz!6Lo)U7$ldqZSf}YdV + $rN3&h,9IgeL6j U/v7^Eֳ7{p zubgmB4r`]1C_hF3_vC pۡzd(/'!lE@bX/-J3!8)Hٿy-P"~xlaiKx )M>[pWLCB#:Y="C(jq}T9s@" l6:<ʟUrS g_E(!MS|Ѿ&ֻFcevJmG6=DO؊=-qВ_ ˋcvFxEl9"n+u)O"''/(Λј+ 4f]po~ oZȰG>3)* cM3|WoFL2R*b|0IqƩͫJʅMw[(+!YNeE1!yF-Ek]}$npf8i+xrhg.۲U7|:@\ _$N ) Z7ZALDN#v#mZb9B`67-=z#V171'Te^1Gg&qN$7DJ4 C{bU s٫ +@it4+ uAɌqOڒr䦧\e^$= +ZI=e|34IJ)5ue6 Wgn5>V, +$ ‹OY(IZ233ʤ\1RO%:# G$$d@S3_#=]Eg?8쎨$yurl,oʥe O'):EHrCWՊoe{q0E R>7'H!u!#'(yt-+Ǜpg*&3V;:Dn & nc*F(AJAX|$l{u6Bm)4^]`0BHʉ2o"6ʼ2In +APDg4Q8!e2,Վe@AD}ts*Jo\mb cuq*q̭f cG%2P;{CdvzFEIewaƽhK_62\xBh2/TY3hSTq@|H㍊qYD$#:aQPix+ y'Yu5zR֢WUH)'oNep/K)DAf1~wyTO&";sn rF@aV;|3F]F-3נ8d{0,@lbXJv<;U6 ɕ, (gᅨG=YB8`i.)ȞJc59y+>jF~;#Ր,l{řcX$OT( /f!gPc&֥mi),]]Y3-b<AJmb?n^_Ċ '_y*""RZdJjKzt6Bd25Uz~+G $DnzC#g>"EBAcePI3ʲ? + +){А&|ĈFD"t&ԙ!?͡iijkL F3]Sc! +Nr5b{Cn$ PPLHe7C@jHBg+O&p:Po* {;Qb-vXA,fKJ[aPȬ+63 4H[4U`C(Bc>!Y0aAH(vOq*b/c%- k`%e>|7]XB,@w&|VflT?fU4 +~S 5@ S΂W=>any[8,g*ɕvT$vxe)À#%/CĄR200& +lSu$@sM#Pٜ%!5;GB,AzC}KzS{r &$?L$(EzϬ&LĬAP@1`"Fm!sF+~>8ќ\H(v񭪭<1"X4^̋<@mjr3g+"`qK<=V+yP.7 bxiLQC;_ 8S0 pp  69xzFfb+ 24rR/s*adS +R Je*!ܒ3cx-˜DC T*]:@~ry rYeUǢ YXnEAŖ"HUVL7\Vx9 eqwrc<&O4iB$w)ˉ"A/Ж #A}ԁI< K2B@%դlgvEpJ$#51 dI &[`0Mz' $jG:9tAxVJ`=rː:)"D/xp<A8\-P!t;<b;l^';Bp0X]PdP:`MtmX9`Ks0nCo"z`< "GA>dL:8(d!' pQ擹H(:0<,aa8>Bs D|H@A)m")_ LOi }#:1EW`& C_E1 `L*#gabu(92.T r>謇 ~Nnї>PxD; &<V=p ŝ U43|;f>31}>` 52 {f7iO֯Kf-Ojyz NˍP72?#N"ҎVX4P e*BR܍ŝK#G0|d[酓I,1e't3WWOj-;34>wF<-wbNi%9<k3iEBOHb,d:ե뜇B-ЉYUN,#UNoT9.0ۙzP`}j&20:UCMo(K%ĵrSRY~gq1;"`긤g%)9Pb<|1t$J98X r=q.d,'y[8EqeqEV}(J +c(Ke(9d(YS=S% ej'Q>ZQ\l@F: dpBZi-1fCh6[."Fi`)A(ˀ%.O^J"` PH3RFIΙIʨY ȁ>vbf&I #ePFɫ)7RS$h1NPFFϒ a_7tLNWi<ATS٨P( ? +eE"@_Jœ|#g] ئئ_,{:h׋BSrAMtV{pÕΆ  @6JQfȕ7NB+%f"ɝ  +8(%l>c S;iO +gIeŞX DOt'!Ya6[ E 褦h1H%*  J!}@ [RϲgDh0ZQJZa/|i:2Ce!@oA_9|("T<"` |J[p|V?DeNfrKTv0q}$g# +Fz1 +d#L6ϚP +$ +j[|h}Lj 'b)S]YT If NG\ɠU<$a%?-2 \ǀ9""U!N'Sx) vseEI,4Kdb(CRZybelXL#N1"H(`f ѣXHYiӁPH!^[aڭQ4U$^9VK:H4-q|n*, +#?_/$K4Aڅ AB  !g(IzNE$.3rM`VjOD;.9'l^lTNR$JU*Ju}U+ESCL|br-ldW:ғjVp/;˽E"vWVu5L*H7JQxCɽ8M\T܎p +FNS0@_}di;NTVRiX̘+ {Q-2݃L|рUP{JA_"P1$^sd*'7\AJu"}0!,"(T39``o٧؋),NV jTMXЧZ \膏V(į4 q]`(|P@H))XZVَU1T5hZCkr' +=]wuPIf^[)Twh*//SZpDaTbD>%s9 c!+Q1 gD)~d0U=Ct8s2)%Tpj97-l^hmsxڄfk`1th4bYP@@ũ0>Ղ[|ӁV9$!^G@D>F&1NpFA. BFy[i*!BNS$ƤX?ߏUFB9&|VD3ÈϷa PUr'QKt&|V< +&a x}j(n. 2_e7RDHJAt$jD0Q 1@ԪV^l7]T`)jP.U=陞v"i2SE%xxxnu + XځiZhSu+ +wehHbP2x[^*+]V,=pih>`A 4n hiN1ZDBgrd=MƁ%9Pr\lgDL4^'t8IPS}Ɔ>Y5"  +" "pzyBT(=@ ҙ ^Dj<&JYEBlPlBV&b6s6ФyG8@{9Bќ#O p +v$lSئ)=(ݙ d($ZظȓQrzrP5W*+ɧ&DiG`m(jM,ҰhZ(,`*F +*:m0=➭'(^Q)  PRM&E9Q2+6f\?`hG󩌒dT$0>ڕ>d ((ys&IjVg3ҋ63[g&)Q<I]e(YԆLWj9VOg,ErIH ^5npB=5%9ؕeX#@ "=f.9Gc[`{rNhrm`s1 E1G/vK#tqX ͕چ$M7jZ +>"ɑ +) +iCN4-Cҍ1AjA$`7#`>hN V\4P2X.%& Y EvM{y1x}bisxرO[$7 yJn (*/󢴢1x(j)F*Q'8p@IrQғ+ K +JH|\ŭT2ئZk3CZ6wvCrgFpwX4BPXUcx1{#$4YEyPxQ:z % îċ^F4x2fh';A'uR!),7V;frLƿ+Vr<ʂ2l'`)y)~"lF2 (wazqK}xTA>!;l $0"p' 4N;3wzB1IH{8" EI&d'an,DsIV+Fqqؔ6(ɦ60Y:!fngeQAuXdθ@6&8nq@ANd8<,dы5G(Cr̒*" EYR2ڍҰ^& ¢6!&,0 +T^ٙB*lԄf2;5&Xraw(nѨ\NqdکME# c'KԩW= '"?u>Mn|$'>(ih;5.=@DB! +<hZˠj &s'A8A"2/dכa:G^ZX S\TG¼DdTQ efvN*Y*h5]3 pCɞ%$luS?_OT'$ c/ec+'(^RYR˅ir9Gټ"S7+܉g# 2 +`rZtZ^`JeP⢣%SԂ6CL4;I|pXu 8+ +'AOQ+կXp妖H `A1 {JyZE͒38pg)Q\ˉ@fQHܔN&7rɑO0lUkbrEBoyOe{vD՚27u*b~=1 +Znjr,#IeEcPI)nZPb2 & ujETR z&fil2 (YS%OQ:Sj1'7]^*n|P>2[f` )Ԩ2 0 d:x+SR8l|4O8zLTX5w{LN #>A/%ėsoZ\\f\\;}kܫ`_;jK;sk}W5&5kߴ_97ڿ{{ޜfqzg]M[[ks:W͛}f|{]WW\^_K{߻rn ֚~~ߚ\5ǘW7c}>{sVo׶n׬jkYZw{:_lun5wָZv׿Wo}{7wkŹ~qΏ6l7ҠnmV֯i+9Vݦw^1:X'f|w{ߋ+f7_{o]\M4n7n3/%ě+7hnv}my۾DݿD]-%n~+Ǘחݏ_K_K|/%ZfnnZ6X-5t/6r5W\-[ߌV}m?7oUW-۴xgnιxgwn+. ޝ]y޺նrjk6kiͯs۷};߼y_|;zWS3fY[͛/.m9s]r&=ŗߴsnfWͱ4ͬ͋9Wm/|W3լ;fc\2Ǹm?ۚ-[lnfs9[Wg};7oV5lwWu턂Nu {swo?&4Xs\o3׬W{7jM~5|v[Mo?63[?ܾkq:[_ww6[Ŷ]wWƯu=[>. \z?[ͻ~. rkݼklEVc[_KԽĪ6jev!Ps\\o }8sM};c{޸\ގ[8@߫oV--۫ZsmksͭؼbZZtZs̘skݷym][2ߺok^jqݟv pj\Zm}/Yk[|wϸ4t&mfmj5[mmw\q94k61Zs}iq=[~W[}^+My\شWo^kWoy&κf֦֖1}kbw?W^fMs߿oߍMWuix|cޮڻ}۟mVWmߥۿv[f߿uۻ{۰~gGߚ޹՛߿w|q٬[yUs˳Λ[Mo;\WSmWWs1_͚/~~[,5C\ֹb[[g_m{K2חk5s- f c޹/kkvwo}4^_&Yn7~{wgZk׻5֕[m{-9[W6}<ֹm]f|mVMkn-6sl|qǸ5m}>[~[l}S]8<]p~okz39צ|k6߷jSgo4|;4\BQ|Ӱj5aXﷷoo9f]6ָV_^+8ck~9b\i݆wƜ?j;zng 7c77-V]u7X{{k̿oܿnm:mk_ンkͦ-6m?㮹nתVnk֚wkqw֯_s}nvn_;ƿi +3ox[nm<[w֜kZ~n?s^_cs^?9?k +:ؐkP ۭ{=g󶶾v[wW\Ư_nx7ޭ9|n?nV +357m|{ }nps=k̻Y۽Ʀ[7g|k}KC5{{3|s]?w~Ɨ6sٚފyW~. m7},׋^]2[~6b{KmlZwib^skcݝ޷3Vo^|s}{Ǚ?ݳ7a_lvuku<MY+޿9vz1~߾6{ۺc}q׿b~kq͚oi8cͼݟ;ZƸ{Wnm7/Vk/3 yj Zklvc͋^z^{ݦ4nwϽf+o|m}Wߖ[>7-1~95켫K5\} <޿ƙ_gܴ^BAnvKC|Zgkno??/j_̀v<5p +lgph 8{UjydXՁc!$ Gt1aH*J>@(, H@, +1((9ƐBΝJ]{jkO!K 'ISַ\TA)y MV|֠Yt;Ordq|hf?_B?۽9| +aC-}c-pVkz\:,3Ë?O`+O$dQ=0"ս "S*id" ++b݋zQB6@x'5ADyo4υ2=Aı r?T V%xDV# CˀQ?ba2HM_되/%8hMa]b(oTOJӚ~_j+-%T,%g, Tq#ЙcB29]_$iL2;v,ݑwul!ND42Y'C{_<<*=BʎiW$lD=i+Qm.pPve% YN_MiDAn!8Ja~ Pl ߬p?c0ovNNιTy=NmNcg+٢kFfHdEPu&5I!kYHg<<1dYE0 ҄15eGG.Z Yh<;ǖf7!ľa3!:q/_!} |=EjgӍ(WKT*X@պ7lV (Á\I+H<$jb-Ca*iz2S.*lC""Uvn% oU>SW@={ m 44)oBJv#lI0ĎGLݵN ('"dx7C8nT]2Ld)d"uYV&a4Z*DF2 ȳkKR +!{Xl x]x'fx-YID>$/RT?cSNv 贔5VDk8PyxsVFH#3vt{jcߞKi{O +7^h@,d Db]-)5*O +,A?HllW`iЏZ^ ۨԙ;mvhZ96f7Ysx0:bq^*Zql5cQo>@HJxSɠvr*5ZM&{B{EZ[;>Ou;oR2dDomB:VZGYtF |%CP%M3  R`m?HQoʿ-e49r X)0!Ul&RN.)h cC۵t&0:'`%zR? !\^PipOZ5¸ 7:Fghy?pÏW1Y'ڄQy7 +;j[Ϣ|,|u wصUsO5_z.n@*\ h<:/JBE:u&ڿ +XcA,8" iX2X&ΒrJ .zB5.#\p}XQ'-:cN֮MHJ16:n,;߫3P^L/Bknqt1 +_;(8$m#}&uC*Z^J[|X:d/^B0(EEnT~E/C&aK"KN .C\&Քऋ8oȴD>VGݭX#c)DFy"mpRo#mYt )3Wd?tWvpv,=`9UӅnWȵrpݼhڼz%LFr󍣧5=\EL2CXs'G]SB OLoAHekl:Z'ŌA>s:1]tEOCG Ub`Y"kۘlɛ1z]\p?Lxܟ($h;[pv9,:X ra +ZkHZkR0 ++s1gU 56Exi9]uFnd"'C:~F\k}߬Bx˛Ev$g/24af-Զ p &m<-i6GWvpsbCG'4~'q 2ˬ+V=iQp5:% f 3= qD7/ ϡ'dBeZP7 {6#;e\@;G_rZHH~w%8pAr:m)4M4hЋ H#K".La:үidj$n[Gb6'K!?hMPu%\/9t?4?tSQUCL:e:GytisQM*ﲲKEȅw}:XJ;Gve|vi؎P [@{\uEܨoL_K|A|[sz^a jt`\M•us"XȸWӨ0=1ޓE+ ͪSEX??e,R@"C5޺8oslG,cC6VOl܍IxRI_t 3r3DxІZ2+75pR31%ٓz^lww tS5shN`8 IZ1:!'#@bПcly}ϳ#K7s1*I4 I䰬 ,OoC1GPȰ[bFIM'aPmJc>-MmJ*>]pLUv}ž)Y2 +L| p]=2Sh<:X;yUۜ >7(#V16 e稆r4 `x^qC +b) 0ڏGYUEFu/$!d!ӵgп^ pT^/)s><י {[D9%iEJIɁT櫰9a~C._ 􃣉GfMSx9I9ԛz]5.GR#rƞ 0heKPQ?!p@WҀCbvM[# H};||-'cALh4pDJuw6Ѕ0aE^ O2շڈ~X̕[ȗ}Pv` Bu: zƍ$bg8?q) ξjJʠ$XX'gU~}SPp\zWʱӧE-] 7h`dt%!E\9/¥ &N!5ʚOkLFB-P6 3xf\qUjy4+2QcP;vkZS ]tUaӊ0\ > "\S<!t0SW,)u +?QW1p%:˭{V6KԝrJ/uTW[=0TKvӉ"CRB'X!dӛZ>mP(0mvK(Ë5=IJ85 Ʉ|IDg`D(D (bE҅R)G8~$͛h-l eZi>UxQd1-es#,g8W}͍VDy5f z Kj +YL4 r8{_ Ȉ&L~#Vgg`#Kcgl6廁@G&7ejG e^h PXs=3`B6R[N"тUh)p=jNi?)IW&.0tk&I' ]f;঻zQE2ڊ畠"hEh5"ՊD"kE0P ֑*b|{UnE"*+w*rߊ(mNRhq [Vc!ȁTU Cx ܮWbEh@7' +4R]T4u.[`K:ش?r}"\)X.=!gvjq,(E_HC]?\ ޱkX ]ak8ч wnJB[f&I@(;%-lhsllàߦYׇˣGO̳oS*pܨS Dž aVTވAlX" ƸsJS؆kA9iT,z+3ZsţT8TA 2}plC8d6J㫽*v~ Uؖ\1k陂Ux1$R6UVg5,dH6[K>!V(YٻDʾc4i|wȘ*lmY5!o@>p$(8Hءu!REĮ/O*}m4&_? 2ᙽ,(tv0dXW2#dK˨9t|hV+^TjDUUX.1BA M-c0@kIl GvגC9ɺE|zbC\ffA2CWmQ7 4 +-tј;>U馉k B,(e-Z[9 +pm^IYd"Bz(>jaAYí5ŰysL<Hn#?M.:^齀[F5ƉSP-@LGo9$mH6{QM/,?dŋ Ы^FsUL qw@2q vaBdE-L 7rvl ^cJzbwh,LZmfsXtiެjesC隓!rN^bHm\g/;ap+1 Es%6ZA|03.7hB+4%[-PHV0#$%OsI]g,S}2-є}?Ee X4*N9 +ZgSͣ N= `'ȟtFBPB[&Z4^RO^G!OoaSU[\[?L& Hxʌ>7ZQe?k+R[]̾cS> Ws\#~*Ւ>v|2,f'gA̓HRR6g +)]fDP' &z֥$=\~AG;rhЛ0܏rڕ)n_/%d"5֍d-K?>cĥu x4Q|VYirM}Mֿן] Z- c33'6,; Շ=!Ã3]}lߜg*9p?2 Ks65lcT7A}x&VNhf 1.A/rf  ,mIlCvŤhw؟3EM< Dr]&'S8{RbwSdYrsGL>МAXEYM:HC+1!/UƟ׹ت=< R+}1fzY7>@YV׌+6 =U%}d\9~Ճxx.5]3xiTM[Ʋ>'T1JDo?02MGzuSb15Mzo3'd&?xSax`!jRwTHÄBKFH@%yt_fVcm\BzǮcGƙk{MZC^?~ex[>yXa[؊dPW~|Zh/b vuW $Tszû`5D3J^<\2zK h}.d`LhǮ^$]㭅gxOzXP$3=ܵe!6%C;ѡ֖>HHҀ&Ú){A6A)-6ԣuTrDqы9KM1#,L1۳zJQKDe؏.'FR0Tec^.(iakz3JEӦ6MGT{# wG+|ٟO7%Q&z|pſ|/b zRWq/$ z: q'OPj2 f=m#Mh<>FSˆ&!v ,]>* +  Q/$ASv/OL,b-(Npex)Se$ȮV}Ti(|< lCu;̂= eS#>1[a<{XUq?0`˝KY۰0~ۇ]l0ˆ 8:v,`*b֣2;M8Vm-* ٙVh0-1y>5GP78J0L$MLffaM6]/?7I5c HT|S7z18<]6x |pCL5 +ĩH(f Jt$ݛ8v5ߛJz4Я8,(339c6aNq(ҍדٹ 7̀{Y Yz>> Z^)ceZkpÖUڈ+0^}G="9WW鶜;c_ ]~T:ٿCyPxWt/byeuoABdFK^L ",p8eX[y{4*I χM/HF@"'3wy6Y'IllJ14CXGKf2X˄eWaiWje'Vq4C @Oڧn/`M㨄ZD;$ +|0p!ϼSAbp#.M_cMj*ۡF:֮ dOQ}xџLtaJ۴*BxҪ23k\) !`! x,{戨3-3Db{VbI4k=v0@d1? '#$"20e䑓&H"U ߷ٖ3}ʕ Pi{yVڧp,@(ǫR""}ޢkrTOE~Dm;hqDE5"R(O0R.h]gBץoDoDkf|ߧ-xe|~1+I1h +/ST6krb 3^a^a6׃Ǹ0g'{[2 %bt+LgnP&w.`Xy2'p{KUy^bG;A2)lfEUS%imAuksu /Q(?17/\jyO"\E5HuBܑGVWi#qa܀*ښf54BmsӋ{BnˉJ\ L&-qζ42fÈj%16?v+ҬnEGgP_߼oMM}]Iaķwڂrw2ԃ*-$Alcm`mf_ѫu l_6Kc=h_ W;=MnV-BȜ9/-1t`q#'9ZJ6hCD?p>p:wlG `; , +gY+=@FLf-h j +ȟ:h63Hm:yF 翪 !^zYbv9j'flTGL\ZkvlBʕR8.]4"XZ +^ՙdQy^z}Ws*h?{#uEYU!V]IAMCGDj)G]dW}YPBqA0FY`&Sxg_a +<ƀMǪ`3<3Etʾts_Q`+jW͓~~rSmq_جF۝s߿+ +:G"I8l lsz<Ɓe+xVv<&rd%;?)Q1orGf_z׵X狌[ٷt _p߭}?./ͳ,Hp_h/6 Zoף徵jl{_lv}A UYRs:(5e(MB^ĀT}J"]`z6uK݅-ep' fs_q`2>vңT5|1kp&Ks{f _y HN̐xy.:m3S5ʐIГnxKT } cZ1ܒY=Z؛Ї&K LlU>_/cIqQv5ev+Aq׼%u.wf*!uQ&58nḑҦOX@Zd[:#TP<Ҫ`EDVb%nYL(G^xCor'ZMҫ3YdA*6 C$)nŧ(rOP^8 |{W4 +cA.d"[j`'lIvQ6^Gxt]Y?"yUo1> J1HzBQ\aIi~_{^n#'ctyT#PdX&0/4"b^v|i6&A ]sMfTTp?.Eyn1Vv&\) @rRi72+ WbV;v,g(opD5V!œ +`_glhfQLc)&SםrVmHZ(q7&28c&GA{TUCY˪(09) Ag1/ #@ uU+4 +צbt + NQqRd'}9=> IU2ʞ&q/cu򃵽oYEB)*%XuCֽy{ZjhyU>|xIΫn³`ch?WƦgGu^B9d$ y1f!F+"ˠ>ƉރA/A.Rb>Ff:yBq !}{JDka=>~U+62SS}|'~bMtP,޸-upi|)>de!o`2`j(e[3Qb%yk8t4]: +W/4! +Ϋ>#i.wwc1jơǶQ#+ϦDT+9vv!DX/@KDD`\v? (<jQ6]GH6w^;~x*^35mR$}ijy͗_2hd }.N ϷJ_!\i_@7oWh!9 AycAvY}; ˩K_y$2'>_8dz\`|y+C$}!D5^@ Gjj2 §PkhbhK+>TV@dKh)gr5^0ٙx ;6gT+c%q +q_5]\ Uu-[톆l>10bM]6QjЏ87T e.9&@hqNTS\\V+ڀ}64xLR"4J&r?W!<@*zD +xdY+ɁE&|GTH_r~E!3JqWe-AN;UcYqL ȕRuloC2c2OE뒄{]*Hm" >#R$/SDoC; +Ua:}SזKI`uR`Pu9*JpSMd[Mgذ(ovE!@64%!] 'p59wqW h ,*` +s`f;H"T섓ƻB‘SA(][0Gg_Jg3륹A'-An⏞ Qac9c3t={IfI:s\8 qIjF]hǘLH ?57N#֐>Xoxi]"M =%(0|  !I +LXvCk'|OP +M6jK_ ف*0:80P*|ZZ{['bk_ό_9>Ѿ`|BR?d?6~'P4"m kVWA$2c!o/YiKlV@,wa{ۺU)!S2ic0Y]0Asbzw*S.4VFذq[ lbӮT2#<`U:Xt-mg>hV`q("$A}y_ֲ|aSgAMmZ`4yt5dӳDT%Q +ZKS3/>/!P-& o #@lNW `VS`_l]u!hJ3kbQ梂6`+w:dt[DC~{ Ęuh^ӥ*2Ά\2W +3b o88suL9O'゚ KuXqʍqQ=Xځ@ .-qYIT~0=.X=2z-)C̬3&JD1T&>4mIӝQC;ZD,w9p.vT,8ڧg.jl׵E*H,ZU"W6P+BZCN싏8)nS""s3H=o2b#BZ7T\!93U&\h[ ib^qy #Q ń  2$rFe3 :=RcсT'0("X>;pTt?3!lD3D>UU;(b檲lhYGtБr=R>l^}YSɤ aoVdW' U(撉ս$t~T%D@dYi=r||씈B h K&x(T0kF+^#xR /Z{hJ՗38Zg3}RTvˊ?|^mzW_rP$O\J=~] +4`rK_5yKj0+㣬9W^޴͡pw$\<%fЛq6L-R|O'RYόXd/T:m<(֞hGրΜ^2,ګHw0`7хi+Ƴ!3E!-8'5> ݗ/ ' V0,Y/uD#bp~UȐ-EflNcY9ȣJkLuJ,[k%ZQzsFY [۹kI:_t@Qӱ늠Bw:y=;jUM}K E**Q̣sW>=n)/Gy<ycڴFj_PrՌh"3"TDwޖf+̤9`j&WHmr| pޓ*vѨ:joeXt7+N:lLys< b r2e5vyv/_u k;zT B$4SI.Vbzmv" 䳕k<+Yliq~2 #O]@С`COruIJڇG.p'ಸt98'9x&1<ڈITLӀq(u +aXsd-/"t΄}2M!d8SK>7NqIyAea1>o3L.wUmB ;7^y5*mz KWr~" +VjvĊZg2u5*rY0`?$ID/"F57Z@ڙw[ _ @51"70!D 歌5fW4MRJ)in3ȱZO?KEe#ʺDG:?:86gl쯑l_ +@].*T'+B\"KU*,2pa3e˜O͝M]r}{\{fߧglSWm% ?+gPU9kprmA'O^{R(GGF4鿑3\x}B\ UJULTE^KeViafJ}jl|j]\jrvmr~v}r~wܶRɕEԻ#Ap'/GۃAZ4=r +Pa+*,KBY)dKE^"DUdUU^ya 3%,+R;Z{fheޫ4iYIt]{]%t"֢k2.{Q#Ere?~Hȃ# h oP`ls@a˃L."-Y,euYFfى ˦3gTksSktgucu4L{tUI2,'?ҚO}=#Ee/P[q *䟱Yw Wp eu*ebN(bX*ȋUT*Y*BReY,te& .1̄qilҺ4mrWQOUU{ۆr]ilCkpiO_{Gًy[ 37P@ۃ򦱿F{p5TyC?\dBUBQ)+R(\LT&KUTY$f0ya%YVjM9{d&mj9l6HXA =$AʝE2?|Hѵ U[35^osu Yv ,Ä+DUPrb UyL%TUFZYiee),3a|Z0iFZ{Ik9JV@/˓rmRM_}(Q.(o\Fm-s+-cCkQA0\U偢F\FX )DQ˥t *-Vee^Wy])Ubad1̲t]%E^aNL"]硵Hw"'q7A>¸hMD mhm{F =e(g Z_3L @6HUr, R&\de,ҲLE^a)e%ƦSQ,$L9z_^.dU#]׆D;c]FrȲC'Y]TqA;cw|s=؟@ƁrػoPHUa`Y*ŁRN@" &`&R,4mYU2Yy]uvԽI,ҲVKĈh""E*j{W;{Pò@"eTU EX,#X,#&LLMbR^.* IQ(UUbY#r+:Ezi-X$8 +I>PH +,8Zv@uDadBL,3 jY#וfe&DGWvbJX:0`"`bBC;aBhC:1ANL++p|@FF8LLp`Ed +&&(XXX fc)X +x&l5B|5*hzݪ֌j<Հt)n=jk5_Y +̈́*PZ" g[3RlVߺMfv*lVjPՀ-nw I|zoT f4fUՄi,Bؑ=Pttk7C*r,[1걣f<6ӭcj{z[qkصbBOцƆ i2zi뷅\ +nǭnW wu` +j귭qiȩ6ӵfVFoSvZmZ +nꧭb~umƓUHُ646LLeQͧzmV~>С.+e.uOvڶz?PSC.8\hA!XCITv?4VoS=_~}Wc9u%L٬|(QCc.`x*EV 3Y6>?G=?G5r|i߶riZtt=H 9(A~C[i `a,Ʌ2P(&2fW7r^/? w}HQ#GkGy``\ BYe6wק}TtWn ~$E{h͂IIؓHQ@Zqdߑ(`+s`aeP$$b,ʲ>>OOS{tM:ROC?muZM;i-DkG"Ch 5?te;R\*DU, Y6w>ͽQO;qT:}jΧG9jZ +vH[-Rq? McC{!pe W:PK5L,ՅJf0i=8y4=8}zmYM3Ýn;f Va\(s D_G0*@Y.*X( +RX*tUdVfON=?=O5j:yi)|֊1e==NYGdžkdl诡`3X@Y",VɥBT(%DRUye +Mm|lnM7ڹѾQUZO?WWn\:i,3{/!PGkHwkZG"C2}lƁ +qH(넴T)T EU%SuTXf²2gScD  %8؝A${Mvn]vn`hz~zF18Mz^vj(:q;r6v_ݾ=FȨx2'̉sta sKϟ~7ΧW;j(֢{1z0g|=⋑y-2$,DdJE[` k~7I祾IKS}nql)8p#Q~zT_ѽx1>ɓi/0mC܇lAz9r|G/F3!G^/"ǖsmck쾡RoSN3[LلdwobDO!<F`Z HG,!ANЭlk!-_3?>⹉OjY76-']|GNɜ^O]{QU +Ql>+LIxwޟx^hNS])>wCr@|m\9n^EȜ<)`n6+{"c?9MF͎8c{1ڋ8 wMr&&y..˾M]r~zΩ*z4=4z\'C"D +dкC#謄q2gָ,ύSUͣ=7ק')y/Ɠg<]I[oe0#062 YFb&Klro49?MKMy[!b<]'tiCd~o .Q^۱nG+ \  Q]#urU,22lfS bގ팣 ݋oMϡ{sWX FR.0vĶy/BBt/2nEf.F, 0Au@Y . UX,KBQ)*@kq;g+پp lu\!(R\.ya%̐-`N_ k! +'L? t V=5,ÈB!KuLeYa [ LZ`ڋl6&V:.dY}Pa(kKERd|Nv0nZ'<6402I.dr8ѵ!{7pXffᄝЭo'|;b*`}fVnv¶y-DcA#)Ueƭ݊_ OT=iAVn_ `ϷX +݀ ] YƵߍr“gOt M-KDw D"C T*@a"*JI,$ԟZ?n)ē@>3a*Lvj[?'"8$C!P +[(5 sPY#eBL XTak P`:.넪JU.ɝG9kO?ʣPE\,R i tFT uTRi]&D?y?!:=p'eCPJE]dVr"n5 pe(BlÅy* N(+J&TE)L ! m3tuTVJeLya!d~D] a W!TIE]%Tf_KA>ty=PG;DTW uPJeX%q!t'D!C]Lk +Q]'Uv@S}yteo(0:X׈PIeT&k[ᖂnj}>$kOHoX BB,OiߖڏD!=qa$eR])U.dZO=HE$B!tEKx#C0 >\Y 30 +;ԕC=rs-E{`k0"\وuXWuLV9Ӽfޓ R`\9 pe#줺Pc;VQK{0,|Hk)90+aׅ|"k~5}) -s+X{pe`8\XiN u2$`et>${ `dE`XXXta&G9u5F{XD`asԖMjNddT@S[5idC `Y + b)A0+"JWFc)>WUSO>7h++C0Sffk޺`Vv*ͧxqODA~4$"Ȑ@AshJt@U+3R߄.f@ ƍ CeY6"%H3DA0l9bbb8,d$[ +km;r_EG9QмJAd$&0&16e;O3d3vɓ9}2gt=g<`268cdYc7iB=ѥ@AFwp k8%g2VL[ ߊЭ3_+~^}=~4'O$>%2I[d5 S=}g|?7]@s7(Zr&.67LoS}ŗF"F@z4'!&:E&WQlyñ릪c&~2.ʄi A5XLNJagXoS-tŋ~Dc|#мDad;a: ߱h4 J{̮n+q^kGrGblT<ö@{ k06:JBb,K|ObWGA2g AȾfeq27SPPA_=ؔs^ki:h]H4V?p>lFe`޶Ŵl+-(+(aD˜+Ep@%~  Kx@ +Žݘ-n D.W5;bR_}ӛD;^9(h.ks|=/TZOD&M=הsTmHl'(*EV&15E$<: Z3Ft+iUS{Ir6Ed0ű w/ InG0'6>_7t6bB&^>Nø4U:ȲBgw HULbKj\AuR,!KpX23>̇p5i,7#-Up=x 3 +Q~q]( ! 1`qخ\Ŗ)$ռ=CIQʙByK&fJ՘_⺶Tb5$^WjCZv/~xe':J#2S#IBInym\$C;*VA[߃ q[e XB$95Er@oDo(rL@q" nAl &Q*4FUr+ A.rH)4@.hP_$̄J{2MI=bLğ6_jUhw=BW_6Ͳ5tj`1@%nqE?x2OcVHw<h\yRNrNB<B]4!HLaGJ𯹓mp##đ_M-srgO;or,%'aS[ +z\k-@)pz({Q,UIy}蓒l/Ə7Dg73[8#K[2JI <-ƜOM>[Rat)C-dL$]PJ I_^O<HT ,ҋ nMqc)s*O(=\|bQc݁U-O_!R +Lj.([aI?)~:4_#r0YDl,%(ʔUIB4YrO {.-cI3n7+ţ*Ǐ%C-_⩉ vsז%eb,rEi&JEk*);5N BYC?HWf0ҊL >W 3+YxpKqrvQt@6c#A@ruu)&Rw0p׶$/*h9v^-k- +el7W"h- XԠ1Tu>yьa8EyvE>~ܲxg3lʞb155mMKe@8!KŽ2sRŸo*`' +;vrқξGx^ȐSl,Nkw -;/038} :o@- W`4bx;'AJkY $JUri\yQm%co[rX%)Pn40A׫ղEvZhĺ >pn%uzUW}$m (@Vb08JNc/,)x~C d4xh*"DwPL? +fl;.}ot(|Z p +*SǐLSzf'_&t╪Ky`+QϪ \]mPwn`nLUJEo)}>Br/&"3얉 GjK'W"nC!$ &ycS^فJ%'-h7NWxJ # WG;kVQ8~a~.Ӵ cW5%&ʫH*wzp|ŕz۠R4 h9?ARΟ|a0񌶺~ 7Qb-䘨V"ڒ[eþHVuxW!DI@E%sT1 op|'Y-߹FNL ny(̈`}bR"dnOY2x 8xuEq*Kb?e^4?L3 du)e=^TG }||]RѴiɵ,_@c|]'_^>eWBZ\qC:C`Kϕړ'^BtlA-T}bƋ +{Nn.B:igQiqӁ8;3Xpƨ]taLT+Vm6[>$[ޡC8d-WiMHL+uDceњsE3⦸fQ^2u|H>Ejd)!|B0.W薨T=*cr/Hqly8#Zd## + FP+5u{ Z\+I*G=p9W*/uru:kڕ˽qģba +s$aB$u8$*o{*BgI Q;2t#82;fExm[g.zo̩~$l(b[aGCLIP"IfE'!C)D-EQKyZm2j1J +Aeb\$_4?I_x7Zjq9 l348v خb5}?ݯI2SBPUSHJU5.ؘ[ծ<9|ZIM`4Ifo W+k}5<6 ^V$ O (F*m* ʒ寮{x 'jM~\Ab+UJ/oJKR.W߀IeRw6wL7Lً o6>=S+F|R> o·ʠcbWZ$*-`L{red`p ) +̼tJ8Z#'oo.ve7*[f@ *m8#^*Z2`{ L۸/;P9roJvS~l) ##J-ʳT+=RLHK?'s{.L='ns{dG㕶{5*I3DKs ;YrfN1aTb̏eL[oz"dB&qy&a +ȄƀRy8>HH"qL"R2=v&&8[6"}kZjQ JHNsi62At^k3?jHf,řJΖF*%f+t$2-,tg&ٶpW1nҎ\d]lm,/ư/Bh__5V dqÓ} A*P情< ;;4G%OZuχa1݃= Ad W&/A^m(=UJR TUw`!2C'maZR0LJr7A2Z0& +}-dzo҃u Q_Fh v|>6WsR#(\KAPy8ikk_lKJ~o&*G.Q= *x݂hVA?(U&d#P}KFuUb`rW L)-b_eM_Kؽb`Jpi{w$_Gq +_SDd)/I"Y (iXJm; 8(,Zdcmݒ6lyx*]u{ٓ2i3pVyg2B#`<دz*1݉Jr)~\62D[cT? W92aVj<0~鳸ha!ʬe4 +D3.uO%)1t+Hics-)ӷOȹ%I OA(U x +K _iB1jxzSΦda,4:p"KNÞ!2R*/s_Za6A5v2[WG~Qv$ZBR.j%=սreMc4 ]>W02%pxvJCvezCEzA*AihXNI^)k$ॠ7W(#V o Whٞ({ò>_KhXzVq]R-TaVj4 `6B=̈_,([8/LZmUJOo4 :Ⱦ \ܰ Lծ5enQJԸ.c@d<|8HP)8 >BAPY q~rҎkxHpՍpo˅x] #†: )vҲ=0 U$-Q{A+GYAᤦ%6~ ;kUIZgz|O=g},s4IQz"~ހU[; R'Fuc*Kt(RʕKm,$(ɷ̏^WBٕ[]Qnp%QɼŖb(vq^aks ]?LY FdMhY*e~+-+X0 G^WVe>G<$d̕z٢D+0JB:0?ZX6'qkl|uӿ$.0^-MDI9/1 aؒ(0]vt]u/BBh9ͺ /_,1a_rvP)yp\-?A~VPjn> On0}Dx$%+ʕ#)#eij,̯H2^" n-_dI%?(9{Y"ʨҠ @OFc |]/dzb%md/%/6W61E)`/ ղVq*w󵬎%.0*Ƭ2yE'|uqaMfG T>[ŎŁJY[c L>D U -wÙ] c#sb%R%c ߤJLi'_+#\^KS_&K2{%qd ƙ&]y59gGf|\)'T^%_W`N"0eY*~G&q*[ӵJ&hE*y5ʓ@ R&2k*'m_ZJ-7U9cte/LbkfwR1Js.UrlJ|ky$e/2],crj\G QiI:}*M-!޲$ W-*i@-]ieBrjb_%)mȭqq^N>dū\%JB -%dqZl)p[*s~Ű[ەsWR>E!$MK`I` 8j\W-HJە>9S/EݘXĐE_r.+*LFV]OOi~  34wʖ2rZP}x0Qͩ4nbUk,_ZVɚt`?Ӹ|LF,c,ٗ0E~_ 71Fad/r9 4P([Ps@&F "jY bQ\y%0#h\)f *'<0T9+c*CEՓdt-a4Yi ~ef,O؄ZE{?tJ|ᚖ[\ep&KAK6GKCa$)iY_Id"D$rkY̜EP}·J+~aOSU^ňNKO +|aT>0nƲym'CKssL*~KXHʖ(MIE_y2 C`vNrNKR +Vٟ>˷wBQiL }=7Z+ۙz?I%Y'sʃ&D3)-`d'MXh98ɩ}*Rigu~''+!.Ė>U~I[% vh*TR+iV&#PEy_)qJg>FP'wHwM$.as2`+#v%|])-RK(IeAI/N`dh2.!Cܓ"+0ŇRѾZf".)mCU |y TfZ;Zגs#c;SguJG{$GZ_2 +b 9,=i<.>䮖©K|Ʊ3(z^EmˬFJ1Ś>)`43-ЌҲh^rUo lv`ݲNH~@#u$)K%ߏd1-*3S#IA'_0 +aO0EE9_^1OHMҷ̮8sp$+wP2rJ /;G spRSpEkXwCv;'¿z-QC[PQzJk]_kzBYM֒O;ɗSicI9z:]0 -Qk$FzwPai~(( +)^GV:IT5&J&G +Uf&"fV\Ԭrm'y"-~ 4V1{޻O쪪LN +t9VZO?ܮQBĉ$>$=s[ejQzf5JNAEYp0_,sklI]^__K-ks`92*YN%cRTyl,T1>wJe2fy]Yƞnv^eY{e٭vqvo.sYkkt%6o2y7xwc6Y녎enmfeؽe~zKZeow;-Z,skRQe~_&\mk\ƞ;svgmweΝ6ʾ.neVT5-em%U]so7ZOt6ޙ^˥wΝ;wZ-e1ξ+w6vV6ܝ?wʼ;Ǟ+wUƾ;sYf܊ry7w;wxy.7v}s\{cΕ{7ݚٴgyW]okӿݙ{cʝd25ܫe<.[˽]nwee̽;mm%!rooQ_ +Kݥyʼ zbq{ %}w^n{kNn}huuR{ܿ?N}Z)'SJpKVV2*FjBw] VjnVy\:ZtkK:uo['Ji[>kc/jVw=~TXkd 5괖^GA:jt*sq;Yiһ\2c*ui:% +j/E=jyw笲VORKtNIuPԪލxٕ{7VVo׋RG/:{<%E'Q]COO^G/EOG=<_s90 oUej^:(|ߌuTԮzr.Λn;u5ëe^uTOJ~Jg/B/ESt|z?]}̊on]bneruԙ:S>:)5tPOu]WwEz_9i~y.{uدܭLOViOҟZ~u*]WtۻVH8g{Yj.7^f2~O=J<;wܷ\?vݵZ;^[m_C~VX׫Jڸs-WC݇^V}ݫWt~8w}iqwx]y{Wξ*{lUTYV[eoIg\٫&Phe3̳ L͕+34n26o25p35o35pq666˸e<9ye:=no8]umoa w/i[e*h1)36gk25lm254qqqr46t5L̤en9x`*RiCPPc6: nܸp\`` bh"ENNoyY#K 0xS3>  =;%HQD@  +40hР! 4hD3`@dAabNiyY3#15r!a".ZPѳsS{뛜+Zx X℉#n؆FF:pp!D s5 'zxvHh~N13i#H8ĉ=&xvJ}&&/ D,e_ל654323456Lu|s̴ٰA>3CSd2ifd`D#3Ccd2c&siSSC3##"/4h!DxD"`bbbbdbbbb``Dć 4p8pˇ:tȐ! 4hذa 6lРA 4dAC .T^P鬱Uyph *؀dȨqƅ dfәɉ^q\k6ɚ2*{z怀dȨQYd2eraɉ8˦'gNXIl7!i\Հsr8@8z.r::::v==)R ==s2dTz>1T̯j9 yγ8hpU84l&}}7, L1"'g' TE +}>M>9RI^K-w+ѽ{C)}3R }7Q?T|35QΧk6]'&fq^7xýnhz95wv}v~xxz\(>qTBGHF%rTSiJ'yJ'ٽs*j죽C9*Z +ܔMLJ]\sܻ^s4`u8]_ +<~*L fעD`ß0 +}.r)R5|5rMKkiK>[:qܧq=k让RzͧCډDPS:Kڽ[ +M[s g 7fǫw8NNğO = +>:9.nSxqyӻvjYckx2;toɩ=*]*GtsTQOGi~ͧx3PΣfWʧ뚜f`<wunzRcǢğ #ZlEh;ip?qv]OgOtܫԹK?~Jt)tn>E&o>wz7v j_γzJѼow\qxM#QCGχʼn@7{(P:kj2ZcM+SiՙS?{UTOtMTSGSk\KS3݄j>5޴I8{Jm~ݮ~ϫ7 qGGggo +?%XK(IQX[Zҝ*{jܩ>* +Ej78Q{&ޟ}nqu]jn> ><-v~t~zR[8{s_]rO:{j\SnuW?)&]?y3s/ɼGoorj0:~@;|@@%Zy4ؽrҿ+W*ͭܭVe?;Ok)4_wOs%;wwu<#r~J[÷DA'*1Ξ*V[NTw(Pt3Pk[;9xnxLtX [עv)enkWW]:]Gw xں+>W 3''JMγ:wKsJw\}ΞJ{:*QOԮx=nds}= +endstream endobj 23 0 obj <>stream +WgD'SBN Y.ny*w[,{*TJ{z{uu7z:7{=#NK0DG'ܳlvrN%*wku_:3tVcq'yn8vp}+t*ض8yVܽ^nX{.9vuuPXXJXo*foSRqwp ? 0N_δ4jFu=wz_ψ>;){ ~XDn<制Y2$# ( +"Eue )fSҨTYc'Ww8hFdz0P3!pАk;v$3[ }~~X(.6:j2IERbAӈ:УGQKʚ8 (8HHXXhhxx1K"F,xWtuH<) N>Z R....2266:>j)ed"!\* OΠ~1M !!!##%%l…ߝ.. 9'''pREMRGC?tbg) S! +MY2dzB@Eήy!CaNmH.P`SRfᵕ)b)) ɥi]|;)XgIIt3`X<-2Mqc+t<3$d#&\TM-P=͙&+U ̖ &XlЀ@4-$`8,|sjOt@P|&@6&YJeHGE?630,"`8t ̇2`x&u2Ab 3`%P/#'t @;? QpoN Jz +Ds8G%4H\ #MLΊ/"֥H`F*Ht vWMA&lAV|J,}wmS¶OC(p <LKU +熶a ܌Ta.N˘E,a3"\)9)ƒ _ݕ)Lpx $|<rKD=:+ea\[#@>%~L#1K_ܚ%Zڧ e:lȀ"" +,(8j|p(sKr}B8gk`@xbGweJ#UT@8*b!˭I J~`Ԓ|woT|ei|`c^(皘H-ztWΜt BA@A50 ԤNR hqbDi`* ]AK +B,h  Μ"b! &FOF+`c`4RFJJED0XXmT2)JԳ _!%eV%I,}ytmTTY|EO[hQ,CC+TԲKJ.[$#սuB @ $P gN\/3=.\$(ŝaaXagq|Z$tl\LRؗWfDa0`%jz9#C2`&W[IGE½30+P ,nPQrd$#" `L6e싫 (P +#\CӶMdc0ӑ+DI.]teK#bC@;*fc_E 02qE 7z0iDilD{3[B!tYb')99errrr1PЏ\g%MJ%\VTP' `0g/ibD|B̲@t!iWSЎ>Ȁ >(aPnۭ6KRSQNKIN+p7l`@ (O߲L "j, x v0-)!D@$@l#EHJKLMMNMMMLKB$B +9J 62@ +c;9N3kf`BlBsN `hpc#` Ȉ1d0@ Cǎzѣ +~5A] ,<Ē%Kb"T?N2MC-9D[ߠ!b"c#YWՔG A >2* (3J*cHOI@Z$chmtz jPyEVVJѐSTI]X0 H#CG0@9S8'Gʼn Hȹ4% 7A,Z"%''p&a#+6<@D+e_XTO%!#k, Ϗ0 #L*cGӦ#׈ؙ_aF-[pbfI B`(d4D\jʮfi"9% =G"E}$נtUQ %l++>ʽ84#""t x(&`'IU;dD } B%T"[료;0 +GT-'kvX|MN"%V[^ "#8q:\clx|rib[)!'{dL.\h T- +X* ғuF30"ק#9BE ^bu:!Y[`(^VԦ!! AY-&hq{KXyc)$ړ#蒑hȘ]4p!7!gӴʋ jSRX\8, D$DgEm2AnQ3\U8f5t4$DEw%WՔ(((ImRXQCB@.j) + +4-B +YWd$$T$52D{ɚFH3 ֞B -EHbQsR;$HhI"Wuژ!!#iU -3QQ`-&{Upi r6QHi fzmj2}sTĶ$!SJI[`d7%DOHDBDIQجmS4ĴN!_fozQXQ\M̅ W N4ӘhQE%Y,GhW2Zv慃9>(IPIE@K-X_$.\֤l8@'F&"$' :J; `SKGEN'WY8r %e_(G 6"tjOPAFHMQ.XZacdJ:*aC@J]x6%lkmJr:V^P )rhK,8'"'WI)ȉjMq Dl܃3K}jPRfQ2"HY:9:RV!2&L|BI 1PȏgbF(!HGIMPm֒6C@(詙18haK[X&k1*r{Y֜hU +`'I'% NҭXٕ>:*LDN@:][%Z\*$&)Uד*r{_UOpݗ7wmLV\J:BEa2 pqB@<%OMͬWVdJ:BRzjDY#KJ+@D3ΫcCvȖdJ:: +4Eu5eЯXԉ0}{yvsnlhQĒlUeQKIGGILR*#L&:ɝ-*F@% ])dbJ ZOBU/6:ADF-YܤtqXA>#h876+k`^\CXiS#Qғ"S <\|BI وI (DS>;;;bV&&_^FXIyr<3Tt죣„(p1```K|%BRDU7[>$90=ݬ$O +4BJNv4SA5"[SӘ mT>ˌe{9>dk + c>LFa3Da&; +{Ʃl@)GUHK9AWD7CoSG9ͩe(iMbBc3i;E&>ё41ʟF* yBgT-4"6(4b +"AeN>6ʝGkdw{}6+֜{*>eQŮ-,=c׉R+$nQ/-!+0RXWBD`)$Cg#$N+7d hN#qOJ)`rH-X;X/2x0:p3xE%k>a`%Bԫ-S0#=`bD = N)t(QЖ&XY=t(/—4Ag(+% (b1Ev5ŽU̱8P*_v*K\Q?qm,7 spp.{v\S\Y SH⨣ CԍkX옇X"9>45`.(Uִr<9o2}MziР"0L\@> <_TI`X)8Բ@J 9f0 +2*CE@wbؗUVF);$V{8"iCJ͢$-J&Mv2!K xPʑ]NJI)}R)ۊ}` + )ɿLNC3FJ5l&<}%詤lBPC쓊0dzb*€N3! [ZgZPv"*h=H eZ(m-C j5mDA ..e7G0݆mE $:CǙ~U<;My!YP$O-ʁjiatLTH019; x(IvD;Fp*wS!q? }X]aq.ʩ_5OIs 産|Pݡ.+ !^S0a);7QcKpi0TPctH䈡SZk8ތ9 tk*"i)^tB4!% ?9j4iWAҎ$Eާfyeش$WW # ^jy*9m#B-^&V0l-9-qH"FQ c7ѕ{^58La%$Ϊɐf%s*c*Һr[~&%2I\qf[I;"7')YVah}J àR/ȇ>R]ְ5;,%:_u| AtX$uT!90'"d1Ay#ƽ'o* N\*Q]ByRa[#čzRГ1;]YqIuw]%C7# Z.os2V.?Nҥ`K&gI+퀙,p"'UZ:3y!{< xΜEQȱP ԳJ?QY_rQ"h' q:oq9}Bodo&*p[*9^(S +r]5am.{tؽ)t4@J@3NM wNg!?˨LeE.MR@zoZʄܩCU(fQܒ!-ZPG~tQhxҶLol/̊5u@#J\Nu5p[6_h"c=HPGKOZyQ@ヹyCc/Kre ʕ_(?;ϲua-ڗJ@ LSZ2#~>> 0L*0e+yXJlᇒ0رJ8u{n5w$/ mKQ]BZ.Z7,H{bszu1=') '!\JOSaH9P> ]E_/IK@㮒q`T"-lqX} ((UXG*X$vY+BZ=|l?bۋLڏNBqPB:iҦZ!1x TZ=SDh~<"Ib=ݺDJY*M0 sBnL"*8CToWg$cIlm`~88jrki +\b.XY<#~)*VIu!IyWJ1@}_Ym`^er 1,U `۔ar PVqW9PooӋ6U@,-mX!uQCrAPp7sB˹QIcM~IO/$T$ *kO) K>/6kQuxňtGEm\˫͖Ɓ0z/X]ߋE +.ڣӠ/lzCA˴S'3d1q$+TBK0`/L+87'Ĭ@ =FA"C%ڰQaT![Ah G0dۍKIt.C0tlY u\;DL Ӻ< *焩ncz#w͖D$1AT-g`y @pKeW}NP*4)`0&M \2͸-2ƍơN|`;MǤHNк*$-};dvTjniPǷԢPwN"ٻi95(~: l;ݒ4tq(hf)"kح:0f쿥LypK$M]fx.N9ʫ`o9ټ~,-I1ǀ;x2I_l9Aq)>] (nj;Ara <&F11GXo{cK]ۖbm[Xc mmyNFF::h7N耵_f;?b8a0yE|~ugK-Qb򒒕.X\x*']C4WRzu~Ƈ_^0-LZ^PS+RW^7r'7}E]k⤬C29A r3C8ܞmc9t¶#Z|LJ\w>T.ZGWKTJNnU.e}ˣoВ&,<旷 \̤h..kg7 ;҇&D.N d&"lVC WTn$2#) +bNښ?kbIUE)4/942*55@%4LV)O"\-%f9L տ * !SjӦ0%384@tO4Oǥ^YW{*IXz2@MwC+*_=ʍIdsNaPC(\YR/-{HRD[ qCom.J[PO\ܓ~{a.LMK5%hJi@e$ֵq/o7| A4kX!J6Qńۿ`{a qn)tIezY8%G+M>YN B*Cuo=0mǥwJ[ݸ 24$A=;VMS*cͱ =*o.ELEIV]ǫe/$ +[WKWpVH }Q NQ|!1 e2$ibh9E:]OKՔ2Ld]B*EiᘕdMY˿THڨXIg|%,*1<` T,6t(ݪ5ϔˊkicssE\(C|2P=\ٛ3;Gpsos%_J%ƅijn٩*KӚ$gfZ¬F~#;.!r|)[rF3 \ZװRy9P*W wbDƒ|Ts'rRDW* dKAWHTҘNe1r>EK ԯg$N71( Jr-9L#C<źugJc`uO2W.'ROh +떙=Y8L-7:a:P +r}pF#;/٫TV-\Ĕ,^]He%Jңl7)r&KI:ɔU6n1Q|/"ږo &J9' +orY,~9^y3zRG_Z_l ;\<Fa90dZX>఺!eq 0vfr/+!U'E锟 Oݲ<2p4,A7'WEo*ar^w2aTё| 7Ψ9~nټ`e|Bd]mkS)3siziIBn"'@a:gҤR/y%g|~b'LM5<ج|Nb>'li((ϻ*Dд;fyeYb(r3ۥ.vg+0Iz~1a? OURtI +ir1~sce[9*oޤ("J#{0 >|}T ].V~f}< x\͖h%g^蘲fHUz.W ]ͯ4g$U4b~BEOiDWq{Xh?Ԗi+_ҥc3G63\_]LR&0̽J0`ic/¥uk%rB/ +ThbL0W7XJH3'*2'0/GٗF\!~FEt[9R[J~=t,O.* o +9H5x->*Z)^S`Hu#jZ?cm4ZMg:aAw /6-a ^|⾲1ʞ._&=dqChhK(@(_n8W.Rs FZb-hXl٧'i|<*ux+F}o } \˖ QGym9r֭.%/"^jհ g9ɗŰN!] uh6JnJX`DKK}4TRx~Ketkt/AUdDj QH2goE4M 0oAtZ:GW5|kJܱe +`N䗁88[FLA&~7nYt_29I]Hr'hVBP[_ej:U2;Xyy۞xN֣O[SNDZJ+9) 'WXң~O[ny σO& k-uQ9kV i ?R(r+2D Kτj+UvK[#juUx&0=UN*H׋9 iMTVr@SN(Bxç2S mRpoɦ._'Ӏb4ޯb4,D9+e2/ +j S`; Zt95  +TN@&~#stAzdRJ)M"9 ri?* a8 7( cI83N<&5eP 0 +$|h |T8fhA sK4 +7QLgXɢN:O)C 0hl%@! &Ҵ9t0(gjqsƈfp>`'L0gԸb-Qwx#:#Oyqt".HfmA 9!3N@:\Qk!yA +1DQdEY 11D -pш~!tX@J4s` 4؀<|2!,#LB>XҧOG 6D<4 4$ = qjy2CG>)FDB >~d 'x'RhbX>`/t&(sdh t C 19d *FE30‡RVy["Hl)`CD(DT\E +6 26uΰH0 b` 2O?  4(X#C(DT^:f1#d`\CT|EpR.!1:hܑїHXM b pyDQTyH1D x +|x=dRV[lŖZj`^'qZfEXbX0$lP+tʅNCAP WjEX\iURARHEPBL1< F;y RXŕ M4D0Ǐ +4B B#FP W& +*ȓM$J&G8# E4R&K+2EP8ď%DD1A?L/ÑKl%VVAP:I,r!G;C8cp  a$ +,+"',D"GvFw8C 1t  x|,b'T Rq H@ |150C/B:Y+#@'T<E +#:܁_pQ +P!Ep޸q& 4R '"*p&}$a?3ư+L 5j<~ɟ=z$OkYXQoجIMbb%Ȁ 9dAH$ +'~$Yd=``l)޴YL,0cFQf v@=q +;n% "dFDtJ(@x0"O8ę3CL8@ $`:P 6CMPa >0A/SBфAex)@& 4iҨY +6lشa5i2s@ 8U|ǏFHiX8cQr!WP񆍚4iҬ8RLQE9sX1gN*hE;$OC hQGm֨Q6pbu ;_F`|a -&G @F 5rxÏFpF"K+Yāf5P ++Nd@ ;kxy7ظs^dQ3IAPX(B +'})D8΀Mqgq#:ȓ|ч}G:޸Cs8a#8 +1d@Rp +30@J$#4Щ 5k +-0:A +9EaFY$ ҇xb:cGV @F?H,x +(H12ֈ>"@" %{Xҧ%\r%},3DɃnj-`Й4QdAF 7^IEM,Hw¨N(ؼ-P;(D=O&t' +(.A`# :uʈ ' @,AEq!$Odh1'6lfQ,?tJ(b)J*V^]^?gsmik }3iߴݫ۷E#roB;c,wzGH(R4Z+KKHp33ml>S4ZM-sMMH7W~*9E$HXړi0=9TƼk3,^h^jߎѼнE#!1[QbIv\GByKnW~~QMSN݊VϚM:t5]n㚗峩?^N4:S$D&H ʻD}Csz.^S;Ѩiliuܥkʿuךf\VVfūV}}ի|{yzWǚwε}nZwX˚լk[:՘5Zߢ|jUo#-[aa%_sZ9!wb_h4unM2Ad "D&Lco1&z9b/g }7+~׹fus'"s9[ֲ q[ߕ*{߭b%g}b1~Zc9>^*oVꢯ-Wbw3szsjoP/[cmk{kf)/eg::ri6*+sfމFBi~yYhlzG˽;k{]?ݫswd}-Ļoguv=6sC7<{=1[$U>No'/ico}ۑ-MߎwiG#=_[]ݑN׎wvgDxc.8ty@`/T` +((0K_, 8@ <@ x""h +XIJ80) +& 0T`AtP aTC~Xh +442@ 2pN3Y@Ah_  F^\A H0!}`# t ! SLPT 4K * @ p +BYyZŞ\jnZgZXi~e~}nNew՚U?keZPO[Sj:VgZ7ok!OQί2ٕU1.[mdʷ;-bZ;:2k+Z/snj{*f+w[{.랮k^oVnrZJ!\_ʜ߿3=q=E=C6z[Nr-NsU;U~7ֹOQɮ{J7m$/XT}7{!5=t=;nMg5LWFnu;Ͼ/Y'{>g%2ן=-b9&-$ +gޯ>_NMO^Ƽfl/|HkoxlZӗyI~lvVwh黤=T߮E{/F߉ڏZؽI/͟ӶW9'۲y9vU_cW{9Y"nid˅ݸΫݸfn֌)Q;PUM{m7/$*;]>FC@UsѻUYZ۬v"Z.b%_~ەN۬跦jn%;Z!cKk^GFD&H鎽lܛḣl=]3%2Aޛy@+'hvٚdL 5jݢPvT-lk{FCH(qs4m^u˴ERɯE1]- 5mw)NS;h$ܕWW쥶]lCֆWƅV,˔oERe.*v٩Z+2]j˵+_+M+í-RR麺 ubשN[6U4M-:׬n]E#q"-z+:~Z-bh$Ž\۟rERFZ-beZOmj۬fW-_T|ĩμq}~w=L4z.ũ+qKqE#biշXkyi*NYٴ[X^e\Y͘Xiͥ;JϪw˱+MR/?o,缯mxS4*|Z.Ys~Eߗ:VZV.b*FI1K^JTѨԺm̪Q/XsϊL=?R{+.߻nyx{lKYh~݋Ww{WW݆ͭ}]wuwS!ߥ yP_6:_TWmB[f}S3{{{wPJro/j۩{*noVo2鶻n+l.iOۭv(nj.6oV?[ji]]nߵomvxݥo1ߕ-]xxM׀zi (Uk o.nT덷ywSyj}^153m]MxSio ˗wv2]L-_*&gTsKռ JyPb}Vr֞i9VjVvjjN]wz7e땞j镮+KQWozFT-.l>=՛Xm_\RջS75&=.KGujԛUOJ[xzZ ݊] [Ұjjjć|{)/nzI˷rWUlﻫso{/;s/J[;[_2-Rooqɓ;KV*μXLq2<[NLӯ6&\Ϳo:ɫ϶T=7756l?h(zD!1Ɔ{kee\L2+] +כ6޷ +oR)ɜ1S {%ż2Rj-/2OV|=Mݵɕ>UgպN^D1Z՟{W>S헵U3O;14SjZo#߄ufYln̕uӗqj"4"fa"V26#.a1ߩ]Ng7U?KBRZ;.E>sDKOtr׬O-to,.[zE.MZe-f{JI4 +}V4+>rif~w^%:B眮ޮ6t6\ $)C@H d2\Š>l@ 8FBJ@4C,A 0 @18EAL120DQi(8<;!]}6jމ?ڼsI_;Gpk =#;| ; 73 +K5-" +;Gc!`|kErUd7QN".w>(d߹aT!X`ȃxJ&ChK}@tfb Ӽ@P8zi}NFd23P@ ][nWGw?)T0@B[ +0y`blkRM[FsQ/Բ+N +؀i`Q.l JԩV\[h%}'BB!;vGujmL#>1$ 1 +[o\s3/ R,V0c5Gt:eLyO Q<*I1DUa5(ɲ#?JewDx#RrGsցlT2=Lv( OtOǥyP(H+ i͐^%wL%"O9Q +]\R(p6nM&x>\m Wqz$B0I(A  S<RR/Kes + I+pcM#N(;b$G# WO+eS@PjeVs5&,zJRFjmu*KĀ~&k6L}0S)Y=BץȱN4^+0zA"UVHͮRz΋K>>03:k$[Cw[EҤEebO b* +eoHESsҫ,F׍IRνB?;4.Y@nK}\&ա"?5s."9N܁OfkcG|doP$㼣& lnT)a-&7P0ˉ|\M9oRNS֗LΎ'`J@x˴̆nifw"#>g :‰Vn(o*\BkVYc˃=[g[׋(oA|ptefGJW4S麇h!ӧLl1]r*A,P?¸ .Eu,.eZWAИ \ &oeb`dV^J,%.u^h?GbDigc3N$ VD<=Z4#?Q&IW*36ڃV&gz=&]h  (pU@aC xtU=&TrHnsOQd7@@;rq%D.BS?#gP0P rDGKA ɵj܁"WN.`,l`B`u->*WXyLġiu?yZmXdW2Zk3 zg 3q+̒Ұ8ׄe>z럹a7N: vYhs +8㊬ "4c"%:ax]2K!<܂s' 8})P!kڦMs\Dj4R?<1d,!BPAIBr{j7G@볮 !x )ƽHTɯkqI[V>t0Sތl'17b/_,%[t$s5"+w^s0SZB-W{%D^F T֏DƑMAfZS;"0gǰA$+;ᣆAD}<>2AaϐlfOfS!eτE˽ʷpxH/IWk*6isIȄzU J7"} DMt$2VN' ܓl%5Y#.xugWژ*I1BHMMrDo'QAeC\hFo;/D7Ts%l(U@@,b?8xi@ʽVF{6Oly%_>rvؠN%K&c"7A*k + ?yD*+ - :iMV"nC)# #[]~>aq'NhSަQ'K;m!QmYraԙ{*2 g GW,Z ˴~Wa}Q{ =̮&D6 ob.4cuXŶUxQ#O5a1.]+D̗S+Q^v +<(wHZzjXe{76͉ֈ}9a&ŚDwB#9̭S_I@RLC5H E_QI`-M@H$'nާ{~LV +(ˬ Z #UuGgD`(s[8 8s6=2Zttg8zMyٰ[[6"q}~Sxwʁ{etS$mE, ܄U[.|$p}E:NQk<ǻ? =ûN3jpB iG''yéuahS9"<I;wbfMǎDl(1 Z@HQ8nj!)=.8Xo% Vy:rb_*º~R"*ZLQKWBշGi8ACe +q F2\ȫ|+2ca*qB[q^_rWڈf*HrS䱻WqJ75l{sؼY S ynpD_Lj@ ^oVxv3 kwЂNzȼ H͒eiL/fc`H}qŇ | l׎-=>}/^m&Aj'AGgySPnu\Als4~? S&1e>H^=븰y (f5M_f +}&:i%Mpk{FLs>NHh^a +Uȍ,tv"gQrpQUF%dA~[gBD@) vIJʖPЌT="=GtGKQٯn_CB{H`aЫ?TӇT٨ hQz0Iȝ' l +زp&P8Vŧ̠*]8w9ڰZ06ːX).>A{Ή1EnACWg *<?> "k!m?> HxèHse"X&E3l=)w<  xynu-t cpgxh7@ԭBdØi>Xezppl J|Ăk!aYQ)X4O +ל -)+7j qA%?s +~]A4iYc{YpBKQhdOob] i–*TsPؘlnxvoPhH #`VDEiu|uTVD;\(?YڳL©6#Fv.>-:׬P--$a,bL=X8iÈLQx,lx=o0 A̯HaJDayMKPRY3]bi.Kr7Ak- D$OBU+@rU&@,:N7UF[dr"{R .IBf>0"C}U\&b2? B|*nS" u4e|)@@C,SH! 8c8 +dr5ࠨ~y-ץ JJgFR>wKRtٝ^hM`;wEHے_ hu!(S؉bE;@ K*TE0*{e_er?֖>:< Npo4GnV(g;dvp ެ2 q@xk,n":J6]uύAh &UAA^r lPф&*}i{PhQ#a?M-ZiY{sFڮ挴eJlX< pcU戰X + eThhrGMmRI_~.~ /܆bCuS: +4tٕU +ߣK:ޣ6@o=q<)FrG)$iYj}ޥ6MP;4w2IL]=Q,5lT^XH/VJW:YvQU +ͬ~0wqe Fv.͏ONQdZduUbndi +٠ mRݰBʭ":eF:N,WK(*ډ:ҕ2NS!-cJ@|7#NwbBXK@E!2bt+ MÌٿ797"V(bMó-c#ֽOL~KXLQ<ĔScRH5"o7oR%"s HyOJQ=]\M7yJD|K/?Bo%ڷu,Ch:ȖYE{9LL#@Tg%bCMgc7ur)O +пp< +29,đ&%' 2_2 ]qc[t L!a?LHãYmm>Q?RI(#qwnڧ5ӤQo=iYhٽ$ևҾfCkX2E,8}X`j` .&ϕsO _:ōBP ?:M_}6iAv-#i>E%Oc(E˯vGW{5:BAU D`NaH hr^U@r%B*lA@ۆ΀V(OqW [ŝĕ|]A2RP* `RR\nu*y64C_V<6%egHT#3_k8elQ i[wrVS+v%Ԣ+< bJ/fUtPJb[h\Tns.d{X6)~Ass GQ~F}$d>`ݚ5Pwp}-noK:PxɝRf^G]F^V!:$#sdt-8J]őfr댳li7d\Ҍ,D!3|"#ur:ntYԢ$vי9 pHlb'I("*u|X!{<~cclip FE)%%xm)(x}ihK~FY Գjt eюI8{ftE"JTDp`#nNb+}dA֞z,lIE&V=OAb$qP@ +P+!7.Hbo9NBhrknqI__(#R DHkɉ\y zGq"eF%!b 8!!?KrXv}[64NlUyx8 +VmIՋ,P;U|5o(IKNגɫ=>r`{d|3oΗe ή9^>T?>h.L6῵;<o1z-vPxSFˡ)(Xq "_JsBMCQe,v$2-Ar$#T tazQeV݀Ku}K1dJr@0;a1s#&y90I2䢦Jȋ..])IV_jAU JW<0تڲ; + ; O=woaB)&[}h'zGv]1 Hۛ̄wIAˇVFV2u[~iF~nj&! ]@:(}en@:oYӜd=UsGkq(61՚eS`NtNLR~:7DL%]#} =E!ze-ii j !נg8x砌NPKOjbQɧZ3ZV(hHƁﲨv"OUѠŞٽ6;z s,\k/-`j tgYYBqFl- vqWd4 ٕ~?"O@I,G!(%;Ұ,9 59qHSYB_TBzw !Q$EsyF[P"%`R2wAo4-KG 2EoNR$fcZ>]h1Wr}xzAVP.MH4™"Hs&d*/4 ^[dVC${Xap DLJXW- f4ؠ`>8wֻE C@+A%DjC2k3bSP3 Y ^}ˊ!`-:(- qfQ#$xP{iTg^%Be +ч,ͱ"3|YJfǣiqc ֦֟쾿x2RXgq`Xv:N~ \A@|~DvH.i;b9q׳` wʸ nKBrf+|Ă6!׹JiW2ho9\d 8\E]+PiB.,H40jIiBog;YOJK(N+# iZ|s +~iX'YkX&k]}`3t4s+hWuX1j0j 6fD$szhUJʽKy(:9F9h )"Yl{" Y9͛!+XgDs#TrlQ(o?y8~Jx16ݚ.e~'AdHhs߃| Ӈ5'W Wd ++E2l)l9L/3HIn tQ:I($AEM&Κy`MpMrw`g3:9\aՎ3"_ZYȔh"q+THYxk 64_<{`9aae'<hAb(#\drLܨ1wR*; +}A5^rNaL]{)[PQHԥ|+^d<,Š_OQ2]V)^Lb3Ct+#R+ mQi~'!I鯎*%GA#_Iim1G/4/uΣ(GBlƫdk!9Vl;^zNڻQյ-h,G;+& 3Cu!"%4V(_'L{ ̷5#"ξJ(`6}e:&{3n3-SQSpŴjU2δv |, +[Կ{eaC HR!G(1%ࢮDMCK&.0=!O$vYasu+KɎ/+Sp{T vAۯ;i7pm{aI1*@k]NdljQw6 :;G3dges +D>vy.[QxsZ$Q %$LijLWܒkmR-TSURHrxGuuwZ&ܹGۅ(HW Kas(~$xE4r \&vVQI:X!VC7b'ee_.S'9ƱMCRa *6bGb6+'ɩ87 Nh8Kh*\&(GlOꃹNς,#1p^+\?]R@IJ2\Qr=9AZB"ܰ|;ìbFKIZ#Wv~WM?Q"EWS3vQwZ?/ʃBHYҽ',>yp' >WԀ0X%\sL2+U) +q:]BJߔWa* W=ځXJu5L*0" +f"*B騖лUױxNd:k_wЕQրaaHC~ϵ8mM0ˇ9dLVkbuEa}&AjNjaj2Bo!eJg=Lߊ3j0oeePhj^P~P zi 1>2VIl6XF +waC7& SgNz& XgW<GɂWɃ`^Юؼ=묠Cn GZ$@q7E;@ Kd0G9\H^;y`ڢ +iEJzd'g^)Rɪ5wJtMY]fQ/0珏`xyR Ztn6`jjjǼc/jX +qg7[mH͌bH1@W>-'ݺO7]tPuOU4wH=_1xNO n c3QNupc6,dIbMe2.©vo`HЗ92? RpzX# #qb.$|ͼbk{n +_,JbAHץABLLkO7:6^̂\G6#*E7asH!YwZ9Uޢ ݁+onT+ +h $Z4`>O3͠q %؞ܲP:u+swghI@0TL1gͤ,1bŕۉCäq(|«@;,UȀzT5TF{rdlFy:t?LP3峣Ԝ}pU?#:_o=P#id&ﳻ tPjmf>/9TZ]7?t+&fIDN~.ȋ܁$rofF8PH)3xn&_z,clN7r2*ܪҺ x_qqC +FNJ5]U^-P*\q8p-* `6M0<0ٻ%dϖ$aX &&:2&'^-웒"Ic joNg;3\%m_ʵ"&ۅN"L~63D3m|C |C)X$pkՎn߈v4㹂. ;|Dꠄ_,E +@QI2֊tMBO-,4$}`=Z q) +%u.r0 h\OZ`O)! 2㱋fPZr`f)&LPe0R[*DbBE}=2hIZ: #e-_`-,hHtn)y'J'l! f>KМβ\oo ]}r߂8GqM;1hV"]x pk +Ye {9ha$x&^jW*~ )E \Kkv#gsHb 6epJ!$.LvG )g]Z}Gw<{LbC2՛P&`y6 h?<"Xv@5)'h5j7კ  &WкM7b@?(&߈8]0}vz6^n (c@*er +[\)r}`>7f+RN<9Xpջ,V24${q{1dlhq1Q28HȴV xN5E6SsCxShpQdR;47m.sʫot2i]8nQb)a +صU·p'(Xk"eJ|Bg춦M|<%y@e Ie p*?O6f) `CӖwFkT@mh,.a^@/j-:݊_S;d0EwuMOc; hGC#(m;OYR&:!lGx%3&h4LYYr0&BB{(]Aֈ8=09/b;ylJoV*\x jHj>&G|@k0 Ps>,YemxLK+=[79mNɽwƕnNN[t)8ѫ}ZESw /%$Jh3hIŵBLqp\8(5\,&!e›aT`s}#F 5Zu> dɁ +&?;l<g&!poB%bô .fG6Od,` h!t"]br/0CduK!]<{B2] r֚n@HE.Вs`i)n`}!-ve +񤢳  +BnL2͔>06)%`y_R/A˸*!F$M_ +SiDr8mLA]vxkDAg*X"5iJècҿdh_ئ5s v`adʥQ1?3?M_U:Ji8؁OB{ky#NN)r +%쐾E fVGQMd'/8KdV@Ǖ햸R+wchH^pq6wsS6XqU/qhJ>#*>bMXlr}ǎۓ +57EX0lmDJ?S񳔲fPn_,r9WRti&--[1׶9k A&C~F"- +g~ЉIP UbTXd+ّxd>حlK]M6HS9pbg7h}ZHeL~n t-n5rVwPijD%u70(zFvTV^q&Ž|t$Yѣ '!3Y&R(*+ 1̫*+ e败p oR].Ԏ ؍n:zoT$`Er]q JH>d q +?4JRT"8>ГVZL i&+j6<LE^ ?OJȿ]RxFX&% +m`iQn) >D%\ɘТ +Xv K)/ECl~͞5v`jFkNM_ŵGUZ2YW+I՞"66ǁĖ@r+YYJQ"Vn{,\s^mk3DՃwM)omDA[CYTEQ5J +8⫷rQCb9V*Pl=VWDlD9al9|">G=| chNV>5QR)熮VMA 3*dAw#8l OgF=UUEd"@) lL@ ϕiH>c?*Zj5 rωLIk@Q!fE/W7y;&Ǥ Р[$(m:z@\2椐",B~H3wfHY#h5żH;0RQ#l:e*)yQ8͝\qWFiݝ? oZ1~eN8%[@4Z[ȅ`灤82RVx*ea2$i,"aI;BJR5{{e{ohq5/Ua%Đ-^_m̵QDBG!^!dE,7P (iS ȰZ0!^H?xvc$'aGW/XanFo8;HðB}QdQ}o7GƷlߞŅA=PǶpn"mMrc՘DJbewTdBKD0Ԇ/_+ġΐiۡ!܍ Hc@< Ϭ6cV,8$,7+Ee)Gь@917W I.@+.;t +ztf0#jB:+EYȊ#PԐ0[ey`MZ<=c)nkBzة1nsF@>ϣ ky(BU>@䦞RGѢ +*GH@3 r\qaShB nY_b!LچIVZU])ή ɗ! ,ſxni/@! $kdD%'o v^'`lOoRz[Əpj7>(\Pr tBg,v9ِZHIHMkil5*Q~[k Y@}/23nr\>F i0W QZa&IUDU3-SRvh#-֝ %( o2x&J$fj@C0{n[:%$}3+X1~1lf0T~k:N5YiΏ+@nmR[ߩ|>M9pKl3L2q@R|(Ѥl6J؃XeH.hyc*uK╎DX)eS cv5ic^D"Y\RJ^[g#2wǨW1*2y rc@9t#co|i!" i%!W}Kx_Sd}ȥYQA;%~C b+S0]lMٍΤ*ˀ ;z9F%wd{)ٓJ;QdO51p.N'xԐ%,6+6˕p\UlsvRw!T@crtl+~ݱryGR +endstream endobj 55 0 obj [/ICCBased 58 0 R] endobj 47 0 obj <>stream +HWɎ6+dX걓KpH<GQR/GW;'{idNO;R+>.vBKZ߿KZt~/K Z D,:$~ux$WT;,^/eIRȥTh0MZa2V̥S.n _).lL| ~\y 30LbDo_^{G$zL%Jjz`D+b!1YP`(ް"]&KCh +/g*|9]R X{ +D l G4x<MI=hJIJUYKZ;}|ٽ&:]AH7 3 )^ + xk@`QgevBfhiA49S;L߳RY$EoWXrRҐ5ECSzÄ`Գ[ot9 /0LDd/l]v<@i|>irE Y u{mB,gO ^ ;$–!!ې0'Z7Y3}t +"$IQj%ĪkAP̒1%d@Wi$A[)hۄ*U +nϥ74o(XRC_,оaKm;W1OA FOwV"eU5osrHiAq G3AZ8)!zT"m簲imI3n{Tc=ChG(XӶY2h\NIwP?mOS6jWCkƱrlӬ;XE/}cl42Ӄ}jLa˖–l 3TgSX# ʃoÀtp4,~P_k$F'j䔫 cpacAh1bA"!㎾G/ 2:N|xbICCL0NT!0D( qT# 9)3ȣ0n`t0I|$whw!7#A?:[G!>, 055 +endstream endobj 48 0 obj <> endobj 50 0 obj <>/ExtGState<>/Shading<>>>/Subtype/Form>>stream +q +601.698 301.285 m +541.263 301.285 l +541.309 398.841 l +541.309 451.921 584.621 498.714 637.7 498.714 c +670.218 498.714 l +670.242 436.571 l +642.038 436.571 l +617.862 436.571 601.746 420.454 601.746 396.279 c +601.745 303.608 601.698 301.285 y +W n +q +0 g +/GS0 gs +128.9794312 0 0 -128.9794312 541.2623901 400 cm +BX /Sh0 sh EX Q +Q +q +670.242 404.446 m +670.327 428.622 l +642.123 428.622 l +621.978 428.622 609.891 416.534 609.891 396.389 c +609.805 372.128 l +638.009 372.214 l +658.154 372.214 670.242 384.301 670.242 404.446 c +W n +q +0 g +/GS0 gs +37.9786873 -43.9988213 -43.9988213 -37.9786873 621.055481 422.3986511 cm +BX /Sh0 sh EX Q +Q +q +678.302 498.714 m +738.737 498.714 l +738.691 401.159 l +738.691 348.079 695.379 301.285 642.3 301.285 c +609.782 301.285 l +609.758 363.43 l +637.962 363.43 l +662.138 363.43 678.254 379.546 678.254 403.721 c +678.255 496.392 678.302 498.714 y +W n +q +0 g +/GS0 gs +-128.9794312 0 0 128.9794312 738.7376099 400 cm +BX /Sh1 sh EX Q +Q + +endstream endobj 51 0 obj <>/ExtGState<>/ProcSet[/PDF/ImageC]/XObject<>>>/Subtype/Form>>stream +q +/GS0 gs +270 0 0 270 43 265 cm +/Im0 Do +Q + +endstream endobj 80 0 obj <> endobj 82 0 obj <>/Filter/FlateDecode/Height 270/Intent/RelativeColorimetric/Length 25294/Name/X/SMask 83 0 R/Subtype/Image/Type/XObject/Width 270>>stream +H]ou5;;Bw}\Im(BnaNjD]ղD.di"P;e(,[`hrhγ''FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF>>]JWoI~Ogdž[~e';ʳ;<^Lmr z[Y_w͞O%h(WV*{I~Y>e'):Иc. pݕr_8 #< c,|Xw>K  EU 0\ [KKr2i :abP|¼LqRcBs)"( +\q2ŶsJyEb.piGRiײZ6m`38;rGQƢu(ފ(-Ĭݮ8 ;)8x43t&j՘Uk.8VU }/8f,_G?>˾xѿv{:vlvݿz}F(8n7RX~8x7߻E8nnSz HV`wĶA7xV"\ ,F!2 ٝH$EspBAC{  <|X(WzҾWX[*XV߶S5'w0*m qs=@uޢj7R:{J%]g|37(j~K4lW5`tt re3,y3 ;*>tBv$4q͌$'7obu0.Z9yC.9CB!QҌ +Rt攑ǙR01ag)}ghNE5)] +}yR{ أ}) _ +j\QSMLM1gv80lξpȑ(6ɋd+N q>I|и&J,줮a_-?3P6#zv*wsݪZ>.~\z4^z&C blj?SEIZЀ_ZȻ։ ?TwRMM3Ց԰SԁR.Lt<`X,V +)b,.VIk5C: P29dd`=k^Yxn~w𶉿BJ+ҋh_;y 3v+wZ]fa@hDbA|S=?&},t"$I?LI"#`ču#C)iǺ԰d}xc7`&X0V+=mR22.[Njwn־>.P#&u)+6b}Z:3"`:SL!hVpPfXEX8\_Ve))gOGJ}\^&^5|TY^=MWwULGN;07,SRNV5ƙ2}Z%k'L0u@mBjL/F&.21 &XLYػt,c(`S[™҃LvESbe bɒ/aI +W/)4NK쓔/a[y_o&zYP +PR@EkMщ낔 J%FBI9Rl\(cUqӄ[~lӋq`nJ`ZJY`BvԡbRn݅Ef +JQCor_JY3(jtw݌&X ŋl +V DzRIͷWH/IRN9T7Rn坫%(_ٍ L?a/B +\J0Y+)+FJVJ6PD(J.{ L-^)[Q}=#)eu ef +.'&!Â,-`K52i/i]LΓJ" JOa<єH +|oJ)p (g3rb 3LbeȔzzRF3Lх@1/j/71$^0UHKTyE;!,_@Z3JFp@paFBc+bSJzDp)e$Sew>Y y ;؂4\yXs%wl} +_C{Bm)e量wۥ@jO*nd7[ІzW` NNRFJ! L@fz1,M(V,JzNA Ծ2# `ynv4屮~mh_{%r3$,p&7oZ`yAj̪7b^`uLY}+I yj XnbRFb0)la@HXҸه+KW.1#/=B C5=0Eb-@)ߗRu66eR:ۀ#}Շ,40PXL VMJ1ɔb&Sxp/+ظ22Щwj,}oJt0#&9*(}}iWy~Qlo~',ПpE[-7?yQ9jaF|+,YDxTNY)B)H$iR0L룤. |,O< |zH&i_"\3u멚VS +_J'IʭK)8w_tQzV͜rU%U? ½`~LXT1!YNY )'ib"NI&a \ +O$_6ě5:%sNQ7{S^|2㓝<|cwv>RށykRvlg?SH^(xgŞ =rRRJ/Ƅ? 4_sE\C% W`;Ld)ɢ^* +0y)]̔ܣY>Aʞl_;\ +VE?E ԹXSZS +mQ]:L1=adRNR&(eTX 0j_b2L2dHAtBG z70b"A,} ʘzX4P=Ք'P,J$)((=)7>ױ9O`TXX܈OBXL/Ӿ/E0ELw +aGBU5!2wx/m G.UA0,PKaՋ1*tK1jX/X\#{"Cp xgOןj7=. +m8oSRs^ݚi5 I! (%Nc 33U&읦 0/'+lWyik>~a{Xt=θcnwTЈ.L!vGo>z:`Kx?-OWvS+őRsEOҁRKX +by,WHuEy>nݥnMk. ?~?G `S.BvI & FjukˮU5׹%eG` Imlp(zkYRL{,,&E20*V$/]#^ud$Y(01qI qT*=QU=H%eSG!̧9}Q A"dziNJdI L /d B"qm"9g1OmL+\+,e ҵhx,DӴcBQ/)oiqÕ\)bS6p^^/f~LWыeǒbJF`[i)R⢧ȕf:DA;>'n5qqM8SNAc}\UAM+͂ 51fkv`PSh8GSHCSR ->'h%egg=^½i7 ze k =aIlx +V 5,Fp!cNAJ֓@hZ;Y ]h(%%ubOmR Un-W5PBcL$z1HO~)IgWT ܒnIYסVi?oڃl$f +°ۘ2c(%ER(1YqX~$H\fnVg x] _wd$,^=Xb.S0FJVh䅆aLXgR?_J}ZH&mIYrppl}v'`NڜnQkʚI!C)Gy2LKXV ՘g O# ZULVZ/?L΀43\gT``Vc+/U^~-VX!1бDgX =RHi~ӓ=qiK:OV慗5L[4tY`.h1V /&zmHMy'2L #14CܥRPĺ^ΫS?I1*,"5+LiĒHLω'R?(7o]yH$"ؒr/(f s:9e a:,XXXgML )+Ks[7"ɀh.c%u0Bv{ +Fe.KDT/]O*r<-THe`H `GJ*r_;Jr Ro$R.JJZ=KJה()` !^ *y6DJWbŒĖ i ] D.&!.Ώ\F6%I$R9)>7- +65t˜nlU=剔uWHs͐lIY߱%t4ZLJJRRPPP(zeARʦ0)?~M0ИU6t+AA˥P(ta[i sIM]d9&)t#0GB +?)XOq.oIYQT`+4ܟgrKJfZ U()VZLKFRyVbxuƄCWC'!ϊы"e֢0AЮ$ 1[Ll*7bT=@&P&I18&T`(!1}9 q_Irnj) [R~C=8{&?ʂ䮌/ +`sSRzIRV +1.$ŃO0 Cb2F| ]F/v\'An23œ'* "[-*%͘L0Q,))_I6rW%e}=) _foC죛!?>7FH/^^U,&)*צM|O8*u&S0t5i#N\ N\,|cZ DJkV;4pg5\NJFsg0|m=ŶeZ?)=$FBJLj%ISȗc2t.!)v4rlrB71nRDF"x: 9q1y^R=o"Җh^~hb=w,:JX>dJI٘D1re'l(xWP(wAΛW H -t]$)XLL7?܄][ "2b1OqJsr@[Rvvv= +C %fn%`hl?{sW|jEfIvmY6P'_gJ&ô(\}v%${9g/X&HsFg2s~~YVB2 +\ܾ.YJj_j)ȆCŌUū^[gC!5Pi3L'JWp E4-&[,΁XCk*eXnVsO}9Zace5D&f{ +&*W5FRoV{$_uc91SܵDuK GIҤH$L&LbC ρeLJKTʫTwׯ^xaJhɄ`\2D){g/E+|pT<' K!2DHL/URQ2S fb2H"#G3>H1M8bs*e/rSJ9^xsh{70>\m !b `*F)Ի0STXj0T"&xKqSL,&t$wtrcP#|Pi]b<-bJ)}T/H??K2C/!3 +a/ھ@JncD+"шS>FX<,XI<xcxb2IL' I1 }$#X +01#w6Re3Wҭ@ώA$ '29XZt"%Ժ3ߟ̃Ia"3pERdH&(E#uή;B<2A)")dHm`G[I,WG# )?iAJXSVWPn-`+(%a . /&8Lz19' ")p= + R>@cA}ǁԒ^JDOTfB4ҋSU]ZBp*}3|" K<o $f)FMLdrh@$< eGhB(oM񥥣ptճb +R@X)lvnl R4v^%)A!+p0S_Gå+\L.dbr4%3i\qLd[haI1{-`s&:oqI@D}])<r`n?A)ۺ>r9R:#!%I.&/$j &9DHE:={ZfWlk'B{$o%I6?{LRȮdM:S$.J\7cvPJhoL\J)1RWeu*(U2dR:S8&*Gdh&(8;z汞y(oC|K +[7_JA)U+)X%'&IR.cOIH2%-+}-%_¯5`2qcIdDg{nI`y.)F+P +,)Ծ0PMg4S'!e3U,UMd U[n2e eRLFZHL T萔k(JB9= O.ɇaUL3W {BFwػ}@x(7Ck’"zwo[MK'I k@d)JHĖQ"{W~6TN6[`)/R^iRߡCI#[n}ڝYJ)7kؔ-KHڦ۴9:ڱcxEofCZ( +^ FI@>zOEm\Iu(baR0 LF(fA`zPxF dC0b<) %^))S0FzL }@v먧bMSΑiIB- 0Sg+0dΩ1t8LP +lr̂(>r;ɿr#%3NH)Xs<#)6V?eԮ,jeY_K5)+#e}rj?LrI3_b">=BU_zuzYL##e˒Ii_p +"۶i0Kb5] BdqRn^r=Hlue +)%s͹& +ɧ؄Y0rBBDQqϥңWFVT"l6Y0;EڵC{F[o#&kRVKʜHO +dQ|3>xq|&ܦ! CJpDN9d 5G|GByJ1~ tJHqw]}_'x'q);Dʭ5)+#~HqZ=aoйM 1crJ>]C'BPFP 4)v6RLEK;&E{虤+..5`&eŤX2 e @Lt&ظfURdr12L\JF&~ ITuA,xJ_'=QOgTIjIȊSV/-!bc;4$R֤zge% 9mTBsqP,$5>L,#V%$0MqY8L08f]w]J[ +.SL U.#;0?vM1&Z?RE[[kRL=9W19F2bdze:?L&JJL,ca m +@+GlQ`{+ +%y\di*R3(l_cYppӼE,ۉc U'4Lca@1 AɽJ&w*W &ؤ*!:#Fq  LF a2LXB7), +bG4}ۮ#4Rij_a tӸ-f !nZ|Rt6f^Ap暺aO :s*D\JdabUa{ 3gZ(Uܯ eE1!@w3$O7n#ҿIY)̍c^4vT,W)$5Ȉf +&HJwMm.BISFwٺET '(&&y/$Q)m{ +bԾ|:/pGd-ydZ@HK>cM4R^ÑrvI@FzӎZ `b,&&Ej׸m\ĈtUɸˆ 'h +1|:&^,y6 :LطԻ*b/#&RU}YPFdOnDQߘ&r&eq6YdBN.L)NRlJ&?ɸ2Ra26!4JFH%и#qȂQo`  +BzvNˑrSVBJ1RZ%&•.C5̐P4 +ᝪ#މݭ{פ,cۗ]%&Bu I!Ffn@a2kȉ](_(C6)2؄ИMF FԸH"',6,<(`?& bOE՝L)ąDfɪHjc:8/vDg;W0}- +;ɞNv#M-Rk=rһI;e:ʕ˾,I U";-S3W#f] bh3d05,;NcivR /JJ9#F`D^ /Š|CwD~%@~A@7f\:(H:w7/Ɩ%ۺYe !&p$\ y9jR5UXPZQTOZ"*Ș$[QVjr -_3#HrN_6*nxF*+ZY09)R-/k15qu A܁/meT 捔}mbHy93pR$o"IʟP\@}!nq'HI冨ٷ1Ɯ2$ˀXHZl#{ļMr/&9#} u5)'MJ۪Mv_+}%b߄h JM)yJg&m@+P&5W/)L=H^DAd19Dr=0箌wض¯ߦeACX:RCuit4t(&H ;%*z57R#%>( d +Ѯ$w)*(zO# zNI?>ܩzs2dM4/&3dԾp.i=#BXLRtlKW^%_yS\p^A/--638uMNMhr^M5J-!G!6s@̩]e,)mte/`mBvQlꙭ^Y^$%,Tx ^&@ָ kgPȤ95)6L$]c b"^d-Q|ʆ=k>q`~ҤtfF/`ʅB)f /\ع]՜5[RX(oHDCkDMb`3c4a5+V5fU-ZiQUì?&έɼ¡QϚ;Kґ@׭VփͲ1,k2E&y%aJ!)o]"^/T3W/4rjjij8#W2XqLvYSE,DäHw8 +ִ0<֬JRpLN Mg$5 dh!R2#RiT!ڒ.OWӴaH1,0 K>]BNMQì|qXOhW꺰`y*0iL)v}ة#w5]}*T?fz 捔RzI.+QiH\/p)CR4,d䒖KbLX1ژe,+-#V1 w'ZN#1RiZɒiY+񰸝#Ş?aK¿\:5+B')GdHyeIyWuPװŤf@pљ~S`YgI J,Ԋ5ի1ɘY@(]a@xJm()z55B')o-)/P=#HD^Tɠ%ŀxm_Yl|L.CFRJ#SezvF7Ul3S%KPVI/zC}%$IyDD +W)rebɳDd(&O[iRʰ}MdJH)zt$mۻ&Eϋ9t+DTj e6K!Mm씚s + eA rZ f?y1kD(cf*RbyɅ0fQO|9-m?w㸵e0AIDL y7#MђM,&8*E>VVF#S`-x8.&i e;dtN"#Γ4.#6=HP6n.S%rQ@=K)д:M-&g&+YS5QhYdH>IgP +%żPvGrj2gR#=E#E%eMic$sF>M%M2FH rRZrq;/B(+)'H;Kʛ{ +MRPw +ӱ0RDd\ֱ0by/B([Q4B-)'B +CRq-cׇGdVH1ALj{@Z 0B|Y2)kk I Ͳ<˧uO4lR0bbRK,/I lhsrIYH}?()J5^/(`,]ZB) +ќu PRN!)DžR1QC^rX7Rlb>,~ ١^6B|%+)I9DkT%-xRZ([_E$;$%%>~HiI 872Ie;; ;$/Ry>=3=r.@OuM5 j!dX)eJ,ceS {w K7_~8/՞}+岝G#eXr),~&H9GC@Y)Vʸ`'r'SQr+*PJR*R&ѻ;/ID/~O@'47걸wwJR*XҊDKᥗn&Խ+;L8/xA0ֿ;+Jyt56ѽqDKO+ (#+JD7 34{WR?}|JR01)zI .0'Ɖ޵rJRf0o,5I(M.zS c=Ơq-`JYn)".߾ '⪋LG…r|B?@;Nlvwc,``"T|%Uµ#5O,]^dZ/D.Y(&#+eIDX1H.NWX)4\'/x-͓E]X)K)ebLD爏͓/] + ey+eɤQe L[Rr& %A/p8pc!t- Rs)dRv ZI(Y +!$׋yۅd2REazEDk%6Nd|>F CM=u: ͓ㅜ'c,q&¯>e#KFZ5H`xEFJ) \sj_.5q zC)pRVk{^ּws񙌬Ŕ1@KzS +nJF$QW_Rr͸sıqgS&+# dd,Pr)HNJoxqi@tQ$I:1sV1p8/ R*#E3,J +/GJVqLUt#dl=qbq-9wܿ?c,FTJHHz`+D,trȑ)L/<)+eQR +2wfRV/BSIJ NDՈIgyҞݾ'w +-cUE\(yfMq& >VʜK1L`}*FȈ +2Qpx=ƨt/32RX9@ŋX)kWTcjexumLFVHy#36UT +PHI +t#^ypXj&#+e<3\);Xtj^jVT&pS&;pɚccRRzY9⼳+k6 Ȳ3Y)?q,W. QP|4y#Y"$܍p8ttC'eȅ/j)YeK +iA.e8!|7͐r:CR2aRR.LI54QdH[!,^QTx%Jtqc$50y&u^0LJʹ2ȥ )%eK*q)ofK1TViRNs)Ld)K!$e2VJcP \+yB=RP;I"&zP4*DardbR)j=<73EW/2hQ޵)Ծ7Km<7 )Mj_iҹF5S rgʉh|)s.*D! +Dg +h"VKY#(F"X9S&7RHyb榌ܼqZ1L-R)Ëܷ.\ް(;[;`dN5PUΌ@12ezu6& drï$)_)B|R؁d xc&d>dL&(%D3SJX `!P})^a]p86C*M(JV|?egwo @hbEKU/*`[ywY63 'DzAGʹP@F +&*P +)Ĥ[~)HJVR^A)!B&K3w]d ~ (Yth,bbRKѻ@ TPtM9睍5j\v\!)|v.  qG),j  ;cQE+o@йCrN|sqbcIXNPD3,`W,TRD!tBhE+|,S7p|T9;E_ȈzW0)VI~:f#m~z pD6Ϥӛ{{ Z}Oi7 )}a owo 2EW}m屒W1RT+42E3K ș4<cS)_ G)_"k6dJ~!&)yt6\ΖYScU eJE0<:%P!.j_j76t`xJ(QbוO!s%d7wljE.? P0MnSl_Ӥ \F*,1XNdYTPLFN 3._K_IInGJ,&Mf={po;c\{80/hkb̼]G!'?|(Ƈ=ym EUSDڴ6H(' R睙]J@/h5uMH6i-&%]bwJ W)G6ܾ2ꕏdz%HaIGk/ébRv#cN O/v +MD &IޟaՓrt;U&HD +E[vZP"R08 DkZhP6M#X% !о6Cj8~u=Y?(&%xe/=/BZ)2&y;XSfҊwʸMPBFlW!Z(N9[~a,mUN8B;evʖ_hke'LV}ɛbB FILJ&_q&M0=B hHP# F0IꃵT5Bu *d UFի+W@R[]g0RfqCf렀, +2)4 f.)z%))61)P#EsM{ۗH lNowRh_Eh_BX.SLcyFEV0, Lab`&Yg4@Pަtoa`1d63,Y6CFDg?LOH;%qz-t + I59e)ۑS8H>Yt1ѾB1=Rz#%kw +0#L,)O)FJ}%}ԾX(0xd ,`a>aR<*ɀVRnk;W/7 Qs ,uKZ(`0IB1SYr0rn 1чֹ+Jf&/(ζKBl8wI. +픙N {WV%ʸͅ#zqad"A`r,a;=jNAfGHRϥwDJ ų2/ wqNIxUijX8R=^(0u+"ZtS:T_Ō܍IM22Tɛۨ^~ *(`J u0('TS*wa,ѾȈF*^UxKn\7YlgRRݲO,Դ)CT|rJtS>.j&UPj pinu%n~Z9>61rn;:bRҗO&3fA k$itu4RX.X(3 \/r`L0J]ip1/{D}ԧR5 X`2➝)DZäD Hq+4IpT !w8Uz%A(Wh] ߔ=P+N-]n 631 &ePNt8G~/Y>-i#C]q|,=.`.եqAJ@\B)DW%M.K +cFO/PIڨĤi&jfvO'rmUoU\^menEfV&5M?T"K=A#g{"xNcDzPdHD#'94q+)#j&uIU/l#%Fh)^2G( cޅeeRҷ%"7gBO%IvEϣLĸ5>CG{j|)7pw4v1GS^4cD[җڌ+lTsx4YaZs;h^ԕ}g)1mN?.QT_(™fT{Pnz.| 0vuT +endstream endobj 83 0 obj <>/Filter/FlateDecode/Height 270/Intent/RelativeColorimetric/Length 13057/Name/X/Subtype/Image/Type/XObject/Width 270>>stream +Hy8Ͻ01mƚ% dBEUd/G*ԡIi 3t({X){{Q̠{.y?fy|wL0a„ &L0a„ &L0a„ &_[)/>>hTV- _7 ^ sbJљA >A9 ++}!gXYYSsgYy4mn.NNvlnԜ`XYRPMBpx!%\L0~>.vVЏAkh9 K $HyA"%ppȠ\XT|3$ A/ +8R2 +J*(44$/+% N#QI)Yy%eԼ3e"p~NqA]Vvq~!1 +ZMSK[WO100dF_OGK$'D Hi9%͗7CME^ZBt^rjAi7LPXT)#Fw:--^n036\QeBYkhlKM1a"p.9 Zsrb)9E9j6W7wAeMu5uMzK-[]\ͰhjGs,s9h.( "Gkhd=~'@ wx[746w؁'FoH-'XNۂl\TB +a79 ?0($4"*HLl\\\<]bcG{9Y[9{Frctgzl4VqQnt₇O@XLRFc5}^!Q1?';zT錌LdNO;}opT|҉4c7#2s eUKtw`EE@-մ[:z!F$&OMҲ+v(/J +oݠ, 6V-#c1bHy = !щӳ.]vx?08b!#Cֆ{2 ~̼[ZIC V䜈q꣐p"Ye^{Bc~I=_| olnx?84zztll0Q0AYc19vAsi<:08wFSmina_WK )6(2hŐRTYgsO@XѓYJޯo|K2a|brrjjj ]&C-w^H + +KpN}KylrQpe1VhAْbȩhaLp GOϽzν @E+Ifo333=9:F| 8<>5Zoxtrz3+% UxmKfgu_ȑSK?~Z1zb;x;356Bh{='-!؈HH˹~4265atvbeaFrؠm 'L!e`'(_iYťwkM]aq :8H8t0"بn'O,bʢ̸%X'(TP5ڻy_'^z *>y<N&F'sJ;o-dFGCUQf|ǦA2-VĀb oVۻ(Tb砜yO6j;omͲ٠^lЖȡYعyD$f_/w}S۳dJ-(X Iq񃍋l,j1{eg =+GO#+~~0>VV/R٠VA1)% fa oܩmx;0Lrߜ ~eeTnsN: Q󨩭bS_[A/$!1`y%P1|=W\|[628)gb/,1Տ{LLߔ /4̙Gk׺jUcVkuܱU\ &,! K¦@X" BšB3?4BNnྟ]gޣW-)M]}$bK4|ͦ?p'$.-E#@1 :D-k灓7mܒ*aH Tb;4j3SܲG&=Պ:Gc0tg39z9%RTCwhiK׬ T %S" d˾޴罸*!%HL@i3/]q=Cs.3>[R"c\+4:/V}}?pOf|F~iH3SBGh u2c;a`(mK壑1%0tG!u2gї9v#8!9E#4Fdኵ[~:rĖ-0z c lf+A`Lad d! z΃[2RrkDyOfYr.[8FE_~=#KWZqM8 ' ݲiqMsgbJ00M'v7<*|$U: l@dn<8A5ѭ'hls9 +a{גUv7q MAhh(A1NOn~+VnqBT1 yKl |RV-Tbhnqu;ZHB6lY44Pi|>1<^B~ɛ1,L@x]t +O-ӰOʗ2 hHc[2r RX%}Լ}FIl;4>x݇߂@r;SR@QyZ5<' +`,m[3{"K68I~{FR) yQ +@c$5 f$:Ac:#T*իR9<4 n+Is#X!?hI1ޝ)mT(`ȣ|g2XT$l;_42R(4X&I(`Cȣr0 ' xL/g;+KkE4wdR=$iI]|~PP!$岾^iOwwWW焑HmʢVdcaaHahOhw7#Ǥk3PY(^(ޞNqG{kKKH$j?BaC](/A%giƈ2 Θt͖* ׯ,^*}.IG[E%q#(/r2"a35mG:|.6&zܰDEgxSIx5C&w|#LdG.=)iw 5 +C9<둴5UyIcYa!Ə?.K]fI* (s3 +#QnYCGڅ2ch@.lտ(-r2RX ]OR\x Scmwx +W4ecuJ/x!z@`P:PUVv/|ɉD""8\xV =}#sH4Pl%KrPP4.joq؉1Jvq"W;َNr';F5;9mmlpJۥ +u7 'BNwppt$ "3Xˍ 4ʨQ*`(UjHO;>"ؗLtt]n +JX)XFm:bnT+F/+%>X\HəL11os̅_4 +85 +eT H eܥ8CDg2ӛ b!]鳗~IzOkNCΖr^֣?H F + OHzf1} 1cҵ^Pլ^1 jd%G342 ".O3!qIǜgϋK#(/r2"!km;_[{4@l1;fbNY9_27Hh9P?Xх`F'gpFi uLں0<%qim&v$&nI4q:I3ʹiʹN6qbb H ]K70b$@Z6wǵsF{iUe#BN +$Ɲ;S/~ͩjFŽB̉m@[mQv#4"Z,.(W6ujtS9 g~1MYpOs,5K;u4[,  8~ W~uRQ<RՕ +FdL4whT1,E~ñYaɛR?g +SGh#űG_Ӏ>1O4UQIܼjs8\.q) 4NT@iq7_3~O"tF;V{.31:`D EE]GFg0.X%gr.eV;\$Ђ\Q(hI9Г/mdW|lij47/\hP M[ VWWxVX:ukU~KfpE/)o~ȊCA-6pjXf[R0GNd-}+U|֮;hg45^-K2h ^hl +ѷMR\d5\it֕d'9Ħ֩Zp!Wn  ~ }sTl 1R%O9N*R̋N?y5T/4 D^-dc}Zfki$\n0^j՛Nw`qkpmCW +騳hew@۪q<7<&%kxx`øk7m@U}=R:xe#;.4$N ^ZP68 R7>4xyyH\^M%EA&J=7\07BO~2e Q)` 4(-1|+WNœƶc}lj%$  D! ęE:54HmAЍg^~B/Xn0(ҸN+T[7>cqzVd1qhXh }>w>F?a\tRpl,'mU0ŏIW'oF74|V83R%묶,'Qe2qˌ<`mmh*#$BRDIm8Ql`3HqfI}b4`k4B8tWbt5 YtWSDnP4LbM<_ sBg E:LHH +̌v+e {;4pH$uF{rVWWWV|sqWe񑰽2g$ r[بn`FJLC;lEvbw-{}w^r,ɑ:CNR]RPBPkE(/}GRFhphY ٥zվeԝ3gzzj;bױLcqluq:ZDuQDD"! $%5,$EE@@@$,!a :Frs/?yW7xt:F=jfaT*J̕4ԘBbg4!Z!Zڽe_Y)fRHdg0Z=WkKGU>T[KRc\3Bs ,m3PWƹ; JF+@.kQTgFy0<دhi(L-b)d3Bis>5 ]n6p4P.Ǔ^ѩ:YW{n +EooOwWGNZ^w+J#;Q,n0)s`,K Ȏ]9rT!3g'3yQZ~Y&<𓬹8?3Ee3NNdȄ:!ҀM$DM%ȉ lT@UP\V!\2IEyiIQANfjH(E& /⚖ʻdžy]pEl.[:PټalRZFfVʼ(x)NzqE1,ibEbF#6ŋpatHDQȰ@ǝLu"Id:èjPMBm0mFF4*c܈W/9}e;\:|ߛ>\O6AD (jGBc>y_JRfig (h}c'Z])ή,6}aXL +,B d/V" C|7`ǽ`ֽٗ JttšǾpO 9ɔeL&  N*#xf?:8RoN6TV8z꜕kqˌĐ](( !nf;7HYm { `#2t DrK m=JF>B_W)!`R.,w/hqjvS1<69 0LЍ~IZhQV7ETݙr E9E5m=qovT FY A(QBjf^^coxT=5;pO~(7iWCQV} +#cӳK}C p (]@WP6:&y:^سn3'$+,6tt+'gAdZUTw~C{aIcW[NNNnn^Aݒ2^}SK\1@5>95;F:=>24t?}!%`/Oe +DYe秪JZ]s~csK{WOrLX@U'2׾(Xp 8{<ˤu M2imkQS3:a<X B5FF(AI |I]ӫP-$@1;7u4ܽdH/F|+@xau G*jtьO'5کY<" Hh`@ FYFjs% 7B";{)ղAZ] 5~" 7:VJ e= $ Hos%h~ +QFѢPiu/( + /oڻ)\qh+ i'mSiFɗ/0Ɗ, i(xa4,DhkuAtQx4h`eޅvtDhzf6}a4|$[zۆyXi" }|RS%_9M׌ @B쓁Ҍh?gA7^5VG \u!y#I0+D& t>m.H +RlNg,"4i`E2=O?z5= 4@ht/-ۻ}㺵'KhT;Fn|'ľ/!~a4L JfiAR7[abOL5EB_y'Ĥh unZ=h-ɸg9X>yOOh<ݭje_{}Yfl;};7,zx +cRy<[E9e7t'CInBj{m'B 0ʼs_o5XDh6VMUɑ7]pۻcMy4{{e7lY2F]I" R4b([\Y*,Op+Y*)y-(ːmƖU>\34Hg;s06`HoϪKĆp8`Td3ci,Q,YPƆz:Z<{3#-%Y6N6&alŕX9 r1A0ąiSL/5ΧV5w O/,|_ <5>E- +4BcRn豰9>Ol#4>|X|++bd^*Kh &b48(sg;/:G)ӳs+K)%GD'_W1jyf&)FȃY^MymkOG},-̝Ҁ#fԼmqG>2Nmo(N:{wlTbvQEc;3!ɉ#wD@^ AnMeyI-X+j8x' G0R ޤΖ</ocb0 {o^4%7$Ą㱐r0A`']0&8>UgoL&^W UoƆxĦ޸_J2Hw=Į@ɗBN{p,v*Urh4 \]Z@h&=EwWGaՄH<#?DZuwwuviJhn|q齂[fDŽ~:hcaHM,<"2jzhlxBV~ieB "_<ZYZqws$V>]@xY}]Mew n_JK9wG% .hH6}i-$2=u9vqiyEUMM-(/-ø9urBcSWQ r]MKI~( e% 6!Y Hc3+\AS +(*JNnޝ¢bFN^nNZ"x>tw9 NLӣ ?֍kٙi)<,M vk!/Y-0cWԴLF*#=-5 p473s]WJRbsgOl-!5Te%EX' HcX +꺦6hOl@pxd}>*2<8foenG zh/‚yc<9;Y71Ej"0A>N/b`I#4uAxapSwq0ޥghaB8 wWg-LQ[]P +o`T 0*2u}SKh #F;;:%\UYIYUfhp[k&:jJrBXĂm G;ꨀppJ+h L-,,/+s3#=];eedwY^ݨ];Uv(HaBk+dA &66hZjBZ.** + t{PHpNS]MU /+% [_;Z86n>A\RFn"B H K0IIQm<\[hXװps.&Jn.N.nm|(1 ?t Q,DPMS;M/OK<30uc#l)=ZHi[!"aݼ`N1j2G8k +t +3j\EWE `PN<`|ت1c&ΡBćɃZ{"yv8 eP!eQEԙDN޽s~!B!B!BHu +endstream endobj 81 0 obj <> endobj 84 0 obj <> endobj 85 0 obj [0.0 0.0 0.0] endobj 86 0 obj <>/ProcSet[/PDF/ImageB]/XObject<>>>/Subtype/Form>>stream +q +/GS0 gs +270 0 0 270 43 265 cm +/Im0 Do +Q + +endstream endobj 87 0 obj <> endobj 89 0 obj <>/Filter/FlateDecode/Height 270/Intent/RelativeColorimetric/Length 13057/Name/X/Subtype/Image/Type/XObject/Width 270>>stream +Hy8Ͻ01mƚ% dBEUd/G*ԡIi 3t({X){{Q̠{.y?fy|wL0a„ &L0a„ &L0a„ &_[)/>>hTV- _7 ^ sbJљA >A9 ++}!gXYYSsgYy4mn.NNvlnԜ`XYRPMBpx!%\L0~>.vVЏAkh9 K $HyA"%ppȠ\XT|3$ A/ +8R2 +J*(44$/+% N#QI)Yy%eԼ3e"p~NqA]Vvq~!1 +ZMSK[WO100dF_OGK$'D Hi9%͗7CME^ZBt^rjAi7LPXT)#Fw:--^n036\QeBYkhlKM1a"p.9 Zsrb)9E9j6W7wAeMu5uMzK-[]\ͰhjGs,s9h.( "Gkhd=~'@ wx[746w؁'FoH-'XNۂl\TB +a79 ?0($4"*HLl\\\<]bcG{9Y[9{Frctgzl4VqQnt₇O@XLRFc5}^!Q1?';zT錌LdNO;}opT|҉4c7#2s eUKtw`EE@-մ[:z!F$&OMҲ+v(/J +oݠ, 6V-#c1bHy = !щӳ.]vx?08b!#Cֆ{2 ~̼[ZIC V䜈q꣐p"Ye^{Bc~I=_| olnx?84zztll0Q0AYc19vAsi<:08wFSmina_WK )6(2hŐRTYgsO@XѓYJޯo|K2a|brrjjj ]&C-w^H + +KpN}KylrQpe1VhAْbȩhaLp GOϽzν @E+Ifo333=9:F| 8<>5Zoxtrz3+% UxmKfgu_ȑSK?~Z1zb;x;356Bh{='-!؈HH˹~4265atvbeaFrؠm 'L!e`'(_iYťwkM]aq :8H8t0"بn'O,bʢ̸%X'(TP5ڻy_'^z *>y<N&F'sJ;o-dFGCUQf|ǦA2-VĀb oVۻ(Tb砜yO6j;omͲ٠^lЖȡYعyD$f_/w}S۳dJ-(X Iq񃍋l,j1{eg =+GO#+~~0>VV/R٠VA1)% fa oܩmx;0Lrߜ ~eeTnsN: Q󨩭bS_[A/$!1`y%P1|=W\|[628)gb/,1Տ{LLߔ /4̙Gk׺jUcVkuܱU\ &,! K¦@X" BšB3?4BNnྟ]gޣW-)M]}$bK4|ͦ?p'$.-E#@1 :D-k灓7mܒ*aH Tb;4j3SܲG&=Պ:Gc0tg39z9%RTCwhiK׬ T %S" d˾޴罸*!%HL@i3/]q=Cs.3>[R"c\+4:/V}}?pOf|F~iH3SBGh u2c;a`(mK壑1%0tG!u2gї9v#8!9E#4Fdኵ[~:rĖ-0z c lf+A`Lad d! z΃[2RrkDyOfYr.[8FE_~=#KWZqM8 ' ݲiqMsgbJ00M'v7<*|$U: l@dn<8A5ѭ'hls9 +a{גUv7q MAhh(A1NOn~+VnqBT1 yKl |RV-Tbhnqu;ZHB6lY44Pi|>1<^B~ɛ1,L@x]t +O-ӰOʗ2 hHc[2r RX%}Լ}FIl;4>x݇߂@r;SR@QyZ5<' +`,m[3{"K68I~{FR) yQ +@c$5 f$:Ac:#T*իR9<4 n+Is#X!?hI1ޝ)mT(`ȣ|g2XT$l;_42R(4X&I(`Cȣr0 ' xL/g;+KkE4wdR=$iI]|~PP!$岾^iOwwWW焑HmʢVdcaaHahOhw7#Ǥk3PY(^(ޞNqG{kKKH$j?BaC](/A%giƈ2 Θt͖* ׯ,^*}.IG[E%q#(/r2"a35mG:|.6&zܰDEgxSIx5C&w|#LdG.=)iw 5 +C9<둴5UyIcYa!Ə?.K]fI* (s3 +#QnYCGڅ2ch@.lտ(-r2RX ]OR\x Scmwx +W4ecuJ/x!z@`P:PUVv/|ɉD""8\xV =}#sH4Pl%KrPP4.joq؉1Jvq"W;َNr';F5;9mmlpJۥ +u7 'BNwppt$ "3Xˍ 4ʨQ*`(UjHO;>"ؗLtt]n +JX)XFm:bnT+F/+%>X\HəL11os̅_4 +85 +eT H eܥ8CDg2ӛ b!]鳗~IzOkNCΖr^֣?H F + OHzf1} 1cҵ^Pլ^1 jd%G342 ".O3!qIǜgϋK#(/r2"!km;_[{4@l1;fbNY9_27Hh9P?Xх`F'gpFi uLں0<%qim&v$&nI4q:I3ʹiʹN6qbb H ]K70b$@Z6wǵsF{iUe#BN +$Ɲ;S/~ͩjFŽB̉m@[mQv#4"Z,.(W6ujtS9 g~1MYpOs,5K;u4[,  8~ W~uRQ<RՕ +FdL4whT1,E~ñYaɛR?g +SGh#űG_Ӏ>1O4UQIܼjs8\.q) 4NT@iq7_3~O"tF;V{.31:`D EE]GFg0.X%gr.eV;\$Ђ\Q(hI9Г/mdW|lij47/\hP M[ VWWxVX:ukU~KfpE/)o~ȊCA-6pjXf[R0GNd-}+U|֮;hg45^-K2h ^hl +ѷMR\d5\it֕d'9Ħ֩Zp!Wn  ~ }sTl 1R%O9N*R̋N?y5T/4 D^-dc}Zfki$\n0^j՛Nw`qkpmCW +騳hew@۪q<7<&%kxx`øk7m@U}=R:xe#;.4$N ^ZP68 R7>4xyyH\^M%EA&J=7\07BO~2e Q)` 4(-1|+WNœƶc}lj%$  D! ęE:54HmAЍg^~B/Xn0(ҸN+T[7>cqzVd1qhXh }>w>F?a\tRpl,'mU0ŏIW'oF74|V83R%묶,'Qe2qˌ<`mmh*#$BRDIm8Ql`3HqfI}b4`k4B8tWbt5 YtWSDnP4LbM<_ sBg E:LHH +̌v+e {;4pH$uF{rVWWWV|sqWe񑰽2g$ r[بn`FJLC;lEvbw-{}w^r,ɑ:CNR]RPBPkE(/}GRFhphY ٥zվeԝ3gzzj;bױLcqluq:ZDuQDD"! $%5,$EE@@@$,!a :Frs/?yW7xt:F=jfaT*J̕4ԘBbg4!Z!Zڽe_Y)fRHdg0Z=WkKGU>T[KRc\3Bs ,m3PWƹ; JF+@.kQTgFy0<دhi(L-b)d3Bis>5 ]n6p4P.Ǔ^ѩ:YW{n +EooOwWGNZ^w+J#;Q,n0)s`,K Ȏ]9rT!3g'3yQZ~Y&<𓬹8?3Ee3NNdȄ:!ҀM$DM%ȉ lT@UP\V!\2IEyiIQANfjH(E& /⚖ʻdžy]pEl.[:PټalRZFfVʼ(x)NzqE1,ibEbF#6ŋpatHDQȰ@ǝLu"Id:èjPMBm0mFF4*c܈W/9}e;\:|ߛ>\O6AD (jGBc>y_JRfig (h}c'Z])ή,6}aXL +,B d/V" C|7`ǽ`ֽٗ JttšǾpO 9ɔeL&  N*#xf?:8RoN6TV8z꜕kqˌĐ](( !nf;7HYm { `#2t DrK m=JF>B_W)!`R.,w/hqjvS1<69 0LЍ~IZhQV7ETݙr E9E5m=qovT FY A(QBjf^^coxT=5;pO~(7iWCQV} +#cӳK}C p (]@WP6:&y:^سn3'$+,6tt+'gAdZUTw~C{aIcW[NNNnn^Aݒ2^}SK\1@5>95;F:=>24t?}!%`/Oe +DYe秪JZ]s~csK{WOrLX@U'2׾(Xp 8{<ˤu M2imkQS3:a<X B5FF(AI |I]ӫP-$@1;7u4ܽdH/F|+@xau G*jtьO'5کY<" Hh`@ FYFjs% 7B";{)ղAZ] 5~" 7:VJ e= $ Hos%h~ +QFѢPiu/( + /oڻ)\qh+ i'mSiFɗ/0Ɗ, i(xa4,DhkuAtQx4h`eޅvtDhzf6}a4|$[zۆyXi" }|RS%_9M׌ @B쓁Ҍh?gA7^5VG \u!y#I0+D& t>m.H +RlNg,"4i`E2=O?z5= 4@ht/-ۻ}㺵'KhT;Fn|'ľ/!~a4L JfiAR7[abOL5EB_y'Ĥh unZ=h-ɸg9X>yOOh<ݭje_{}Yfl;};7,zx +cRy<[E9e7t'CInBj{m'B 0ʼs_o5XDh6VMUɑ7]pۻcMy4{{e7lY2F]I" R4b([\Y*,Op+Y*)y-(ːmƖU>\34Hg;s06`HoϪKĆp8`Td3ci,Q,YPƆz:Z<{3#-%Y6N6&alŕX9 r1A0ąiSL/5ΧV5w O/,|_ <5>E- +4BcRn豰9>Ol#4>|X|++bd^*Kh &b48(sg;/:G)ӳs+K)%GD'_W1jyf&)FȃY^MymkOG},-̝Ҁ#fԼmqG>2Nmo(N:{wlTbvQEc;3!ɉ#wD@^ AnMeyI-X+j8x' G0R ޤΖ</ocb0 {o^4%7$Ą㱐r0A`']0&8>UgoL&^W UoƆxĦ޸_J2Hw=Į@ɗBN{p,v*Urh4 \]Z@h&=EwWGaՄH<#?DZuwwuviJhn|q齂[fDŽ~:hcaHM,<"2jzhlxBV~ieB "_<ZYZqws$V>]@xY}]Mew n_JK9wG% .hH6}i-$2=u9vqiyEUMM-(/-ø9urBcSWQ r]MKI~( e% 6!Y Hc3+\AS +(*JNnޝ¢bFN^nNZ"x>tw9 NLӣ ?֍kٙi)<,M vk!/Y-0cWԴLF*#=-5 p473s]WJRbsgOl-!5Te%EX' HcX +꺦6hOl@pxd}>*2<8foenG zh/‚yc<9;Y71Ej"0A>N/b`I#4uAxapSwq0ޥghaB8 wWg-LQ[]P +o`T 0*2u}SKh #F;;:%\UYIYUfhp[k&:jJrBXĂm G;ꨀppJ+h L-,,/+s3#=];eedwY^ݨ];Uv(HaBk+dA &66hZjBZ.** + t{PHpNS]MU /+% [_;Z86n>A\RFn"B H K0IIQm<\[hXװps.&Jn.N.nm|(1 ?t Q,DPMS;M/OK<30uc#l)=ZHi[!"aݼ`N1j2G8k +t +3j\EWE `PN<`|ت1c&ΡBćɃZ{"yv8 eP!eQEԙDN޽s~!B!B!BHu +endstream endobj 88 0 obj <> endobj 77 0 obj <> endobj 78 0 obj <> endobj 79 0 obj <> endobj 91 0 obj <> endobj 92 0 obj <> endobj 90 0 obj <> endobj 93 0 obj <> endobj 94 0 obj <> endobj 95 0 obj <> endobj 49 0 obj <> endobj 76 0 obj [/ICCBased 58 0 R] endobj 45 0 obj <>stream +Hˎ%D+Vc+A ۳#dŪ^Bh1+_no|5O=~:d?BCo_7-l?zlf+<׸P}ھ?\7['Lأ//yOγ+n%o;lHy+uwwa_·xc\{n㎌+|LY6_4><!ֽ; cJLqMy=TL&%xrOno3ۏon=~Þ|qOKI)E8L*<+*ܑgClqui7# >uAF\{*3BO!oO~0y\ asal59M oHԪrqx=W7ΎDF;lHVNܯzlzP{3tp1GK4@ndV>q{/X]zqؚDDYHLJ>]D}%3Ҷ\$ &zͧWIN!1ORh8C}+OO XdghyN~ˎ0lN4%ɴc +<'}XKRvF@НNW1qĔ0 5N+7D  -Ke^HjOz_ubxGV/V> h}{^v-*O%AŦ6KL+ uG$ᦥ o*ɻ(-n<#s:O'uV1z"Qd63ƻgYM~mT ϴz92jolr,Ժ> Ĝ0(tv%wOTD&" h\LȠ'nk6"Aa!*`c/&-$\b hwٲKjnMx麪J663"ro; ,W=LT =N)`$j;'bDsdE ܱG lԐgt );҉L +Xzи \^+l"/B*Oa6xN/ԭ6MqJ( +Үɑw_(D{1ox$bELLOz\tP& <Y툺ؘn:hQ;"7F+CӲM|jc3rsEoחVH9knBD`ʣaRk[DmYY65Wy6Pc1h8ƜRL o > `*{h A,zʐ(Vh% B|v]u gnr{C#Ctm{@J m^EB^ @64CṈk 4oť2tXҟAFZ7 [ }(ܨgE㛁+\L.dE/jND&̑VU {^ d2yCZ_gWŸN4r}Nh'k) ̄fb)T!{O  ljCA"aSD̖aXpbD| +2.dԶ]$K~(҈VwA0Je/idDn=J-/ „EG 0dz5B<_Y]7:O"t׾^k? V  0 +endstream endobj 46 0 obj <> endobj 40 0 obj <> endobj 97 0 obj <> endobj 98 0 obj <> endobj 99 0 obj <> endobj 100 0 obj <> endobj 96 0 obj [/ICCBased 58 0 R] endobj 43 0 obj <>stream +HWˎ% ߯pD=(mYEE Q* c3-t|'wϿ!yBJN)+z'B8} T=u?#WC\=$ZN7PΊM|vdW;5#? ~Cr=k,G^ # Z:^y?^_r .x8 +4GKV(2>㿎o?~?~WF|WR:S 3DHLzF?ʔ=ڀaLɌ~r  qN4eA53;"UK#Y|q>C_~'"^ce]SGHƮxxJ5AnD֘wgE#D ExH;]g"@r0\Y3-t&|vG #^?쥺Tȧ08&9bq!F{"Vu^&7ՠO 2­9/Ha ݪ.>Hiݺ0-]*N1@T,+Kq(6A}|P%YPa96p`1' <|êuA J= gVDƱODz e ipT ʄa{{(bφD,^ݎA vF"AZў)'BD6P OV\ @JMאcC1.oxb[g_xЀX@pj0<$xԀE4)PndZ#OP@e!s;/X$vj#վ!+₍6#* ]`,(GNiKCe& ";q;]^|Mئ%!k 6tZcC !,$)$PnKH;./ ?>LjWaF*"oO#Cv&qrApd1R5W=>",0 FL$~dЛql<_j6ʠ7y<n7thD"XnѬeܼ͊d:HKHU,Vgy,}s*">oJjC2|sm;vU{Qf=U9~tC +؄MĖ)Eg9#EE—,@W5B1c +|68Vn`M?CÓ0#>߼#bQ෋gD +"a TZdp`&RA) +TвAE;[yJj۟ؑv|P:C g dˎP接1*~%تq1rl.#qIM.^J=_kȼpؚ*2?XJ(+BP7!-rХ- x%Fq;¸CG> endobj 101 0 obj [/ICCBased 58 0 R] endobj 35 0 obj <>stream +HWˊWrPufK`0 H$lUnF8/Ѭq]>^*d!=+wVLo-f5lleR5o)qb}qn^ΐ6lY#$Vl"VJzD 9ͯfݾ|]~ph ǜW~" +V;z|c}Y߾X[~c|Bsd]~o]}10>BǟYTJٲ+@_,`!͡LbƋrE`?xwo̖-3c3Oݒ盦2 3lٌPG3ݧ-v׼G2ڝx-Wdk9e  -1~PqABd tx#i3>5vE67Փ .'W 7yCc4ʛ-̜\耶d= +]6!I"@jʖ^W4[9uZzh‡4GoI4Cen|$PurЉY$c5[H{:!-#WGy\l?J(VS<RIGc c)#/M岿>T^zز}``Q.K H +MR( IHI*&i&oA>=9JK 59уC;K@lG@Iw92`GHbv2It"j&\008Pa 7_MzRf9 @r2lo;w)G5AS+vTGBZWG[Y+*\H1%=Uv8u"!oQVIR O|T>W dЕ7`k7aK a{,52|()#:˦9bA6rKu} "սv -)ch Qܕ3FPt ǟ֟Z_FODmY&k͆Ԋ(e 2;- ЁAH]ѿhdwٗd#XbF\p[>Sd ~jpW)[¥ڒ9H$XO##ܵH@^<+a{e +STvnucRvpPЎv&VqA8 -:q$ +s@8@+0ƞg,6p-;":zp*"-$/P&^j;"u,n̊)GtV+N@G@++8"90p1ϒɒYP.pFT} \$vEN#./ש +3 WL%wFмIB2R Z2";ڼ7qg&0 jk^pUіWN|+:s:Ȯ`K|d'EcȽ/>VAIsoVta7}ҊT4Ic655@ E+"%qr+vw?k-#Œb [ uIF2f2+T`hOn<ϬS Igj*oL)ug,:ȮHb@s3`ޝ8|R h"!K8,M2M5+-E AoaGΖ{GI):qFbn1~Cou#, +Ja-4%uCI.j\V׫41ʵ6?\6!){{4!tk>ͅ:V"}ȸWH䪩#J x<}əWŎtk^hyZRI6+f:`9UEτ$Gs3gYI-x³X^`( +V[ gUw2(rj5`N[6"g 3gfJs\:01[یP3+R': IH`!]}BDQ6g*\յTLUhLÉu,kx]]ro ځLJլv}gzU^3 *ap0m?//IxVzۯ;dwwzU:Zɰ?bF0a!؝׷6cNL+o/4Jl'G_u;h࿐gbl +k+|7=NW@?S:{|o`(L +M cZ+^bwz?eGнO _ <6>)-{c%]1 +ü4XYR*xQU'>:,Lҷ:h?Y^quG$B)4Kk (*:첌a'vh_L9ߝʱe,9%At/& +&^yv&Eeu+:>EHJ~QZNSIzBdȭҹ}KsNa*丈|[d󄢋8AsfkJl&ȜLS8WVWTMi%QxsO3ADϳ6ko$Uu^n,d*WgXP(G|A7 ,1ǡrzJ+cWWƺ[) K8Tj3$(G}[Yx \ Z>Ɖ%vJ3!qCK2V h2')/0*Lo:F[+J/+J 1$Q6Rq>je +b37u? xc㫙^ C D ď&G@M_NOx74IϦ/2PMxPIԥpDMK^{.8x&;+޸%gqg + aZB Y71f1_* yFvO5^v/w 6tݡЍL_75`j@O=iA 1峽M IHt0+yCx$i* o:R=G(BlT/:5 ͒G UkDF2ev &0mɉ/z:5O*n +K)c +b5\@FH>Yk&q̄F3QLF&HیSK& #}-$$m .KD4w6dSdۨ,$ɢ,)w{eUL?U^yfCþd٦XQPBz2݀vw2G: Cp:;k2C^C ef0#59p/Jw(، wG0k~gO +w>9r?U|߆;r0{x)yNEU5P̆#>aZ5VAZy:9_t껕nϖ Yiweݙ#<\|9(3se~nI>k[P孹EM#j2ЈZ ubgCǰ]эT^oV{'#UPEv<W/CLYl5("k"'YYӋdn '^(.~D4u5,Snv):$f~ѭpf KNMC_G=w96Hòg'p{&29܃ Pv"̻}OL0sdp49SQ:ꡀV>zb'AՎFiEP6+C_n'n:QLeLX-ܘ.HFKiBmxƉ^%WpOu#岂=v=u\'mB'9 ^ױym(#{:AyR2a1f8w]}>ُצV lo|`hռ0 4q>gAPtb+!?Ԝ^ǵă,jGC<4Ӡ9D8k3(7tİ3<\r\ȹQqOKZX:BZBUOi|RkS.g8Χ*` k` zDXD^J/ ~/!l:Q-ĉιert'At!۬f 78QfD?&rHE^74ڈOyHg7F`>vID Þ)" ol$v`f`[{͊ikD ?v|K~* M~E֋)bU܊"1-SY.0ٖ(ɷ YkjqPF_ل+yQhM +?$˗fc|Gݞ8x.n'^xNO^.^Oztu{> S`o`'nG`  y=x#n'\z~m\ø +3[&Qcp}GOl|[No(sF ZP["$Ę +n{" NsriF&A$+6qFSwӸs<лdІ&O]PF^Il ~HƩi(̄Bb3Rc-Y("j=(w`Hx~И ۏ*\w:.kF⤚XDFťS#AZ!1r +\ZjP C44 6p))@QwzFG 9öbe~ԂoSςA}YwAR1g P㽓,r +g%2ǻVpV֋gfJo+F3uťi8 Rt"pl<α@s u)0V<f"26?#W` _oו\c aJ=?o*+*m:"8PҞgU~*Z_Z|+ _Yxu$L~u] +endstream endobj 36 0 obj <> endobj 39 0 obj <> endobj 103 0 obj <> endobj 104 0 obj <>stream +H Tޏ% ~  B  BD{ǰ~1&tʊ9pW.JL3pK4E*&rETprQRZ/ڪjSUu k KvF]0J]smNݭQ>I )Mٍ\߈YM.9 1OVfdk!a$CTK(*\T`ӄqV& ʅYz¼z0{29ʧ%̷?L]73/X;\ +6>lj;'VwL6IMbY+6M3QS'l|XL{ľfpT)R꤬.刔[<)8ť͍k;oJO_"}[F8q=Ӛ; [bӏvfΜX5qG^s[;N3Ylrnsw-(/XZj擒ޠ6h~opp %\\+pu_Mnm]$ +VV +#ъQhhc?Xt`c|`A81 1SqP1#c32U& P+JHP70bDC0 +u :G@gC50G7fK(Q6eʥ<9\k[`-gG,= O +ZO&07,e V: /k6F l5BF_/7kИEF(1J` tW;`?t8ݒI$cHflʡT&Vyj*U ]SUX.%%O20X3p=mwc.G8k4kj=toy}h})]}M].㴟u_BM:@幕J7=H7ABoĺ[?aVtW#tO#t%ԛB__l停!$Bk(#0=$sm<3#C&hNQBP_Y2I%}"88GGE)y)3 Q쉦}xK=ٗxI<3ovQW \S1b52‹t.5t9Jyx #>OKn=OᲧkVD.:(R($ +L iDֲZ[G4#RڠN Nu|mmEnrn|C.'!ݍs[>7Ӎvx_r;n|Ս'ndqHY?C[QXhXaya'kG>Nu/ 2UGM^Gx*~Us. eZ{KP_HO/E~ Ӡ]dk̈M$]`t(K&L^REd佗*&yĢdNI/%ye$/N^LeK|!8 7M($lR,y)2C 6v Uqc;gU[8;XiP%Ri*S=TQ\}C[av 4ɋC]Ob޵zJV9jʓ|{Cf|mH|RiJfT4Ҧbo5I 8tJc DH²s<˦ca8Xv2"ߙ>"${QR- qkUܹX3 6]|(d Z#4Rmk=+1bm׆a 08+CO\ + O?'xA 8Q};%j.6>Бe NTƦnM2fI$W]돸16o x?[v D۫h`yEƉg3łs-jU~NR ģ~&zX x}9OO=@t@)։+t!Dms+Uw~=U7kqm3/Yw~Ӄ[\Kofj=bF1`p~tUؓ ݬǯ3! HB< Z5:o#X/dbYȚ`g3Vy!8_]e8gV! +y r7m^jdOԁ.\@VBS;XJ_oSJ@.g3|2FŐIw7GG#mfG]ӿ ǧ De[ +ە68;)0=TCH/po 8'O[|i 㘖9}dS(|#|uvb} \ -2׀9[H9G&rSN+$]ٜ!3v$:l}HVfdke&پ>ٺ@*[SGpwkݚ)d+TI{[5`hBMAr[߹ұi,Ov$5'QnI,c&#t Ck'C ' J6q4v^n&P#,n+ĘzI5)d962&i8,8Sӭ9ʆ=ldv?_ugCҹ"<!ܼϷY2S#,ӄ9MHd~_ +ρWߐg9^5$_og=A\u5q~t@FVJس2i#h՛ ;{/0wCbhOңLG`rS.am3!/Qh(3PGt{Iw:[o5zHG /Eғԙ(AiMg>ŏs)<*ͼ=S"AAD\M%B}:nP(/Ыu>O +CqEytQܜstKyr/|þ6޾T,_g+e_c%3r Vr_r+6U_yA4B@9i >  ~ $H1@:H0n$ABtw0 =6HH_ DyA @:Ƚ@b$ + d42A yA2A42A Mt@F9ȃ@F;C@8:@:#@9H_]]W{9%cLmj5jjSk]44uo,sMbmꜳiIhQ ц,\VĉΦ.sV"V$q"""ED"";y[)c,ޜ_~zy=3I8MIy#p%q$γY)ΛIӜę*3կΫKꪺn;h`(dC.A!LPմ"a)Õu6n; G8|ᬭK|Eښ:ڢm=QnVoHM[`}x;Tװ26gC'A\XrK_[gYı| GncmzK +[m:⎛lv`[̱qU6lF`l6pDbG\4/8f: ʀhs Fi_T)*}DͳC-B:l_`d 싂l ;Cdg +UKl ;K  +?d#Av [#Ⱦ!Ⱦ-6 o +uoٹ/bAv L $ ZAv D](Ⱦ%&y쫂AARAl ;0tl&D$1 1P8pfH"U:\m؎qO[i}B(}Awbko<MȮCoļ09dzT(ߐ>(o_t"5lQLz 4~D%TF'c*eGV@N򚯆Ky4ʧNiMTDϰްbUӱ_ +8X؀\b#o {܌C܂[q~=t>:DQ/}NG#w~B?wt Mb}1`-clZ* ?ƏXI=*L{ćax!p%3UznɺDו: P/+tn@wmw0Z)}N_m} +M``m +L1eԚJ6kM;Ԙ.f٣V@s?w섽QƳQ?\o&>4TuɩɩvJRSS|Lu֌2y)2SUSJ;jǻx9i䤑N:i(?265IIukOc]}>a3WOo{L5ؔ*Sc"̴5tf9` sڜ7W sS^񊼩^7˛-xxyo;7M.zFx~)f3i!..܏8sxmOetP}'ZOVZD}h#% t|?yD_\o ~1ֿ_o +2 ?(J&˂`Mtۃ/8W4>ċ3;XZaE՘o. 3N*A-"Ū "0jk!ڋ{T$k+ZZj Z} 2&dYc6=kڳlE:{)ʶeY_v";]̮d7;كl(Oļ!rۼ3_7]ywޓ}y~*/W^|&jym|PkMͮ-kKk/ԾS[SPuzjkko~ذ!Hdkkkkkkkkkkkkcg=8{pكg=8{pكg=8{pكg=8{pكg=8p6lـg 8p6lـg 8p6lـg 8p6lـg 8p6lـg8;pvفg8;pvفg8;pvفg8;pvفg8kpYg 58kpYg 58kpYg 58kpYg 58kpYg -8[plقg -8[plقg -8[plقg -8[plقg m[>&.:>>o&o..诣:诣6o%ESH8Xγ;bl,g<Е`>H.Wt=VǢưQDgQ<5ZhK]tNʒ6}D$oV(&l # :n=f6- ȶlCfػ: K; ]o¯~ ~'Ⳗ}:K{oF{o~N]*1ދE~;M HJ +9wF9㪔/[j:N9UNvkn*-Ɗ^}ߧI'nVuiv.LK%d3e r|MkVyYm=UʧRSfT-leCV% Y,luĢeEe1bneQ<Y9fUc?Z.DO8/3Jcr?90:%nRjk+b ղ4O*!;ǣ4KcgFEYzDs6)'eȝ,qꪺʺMDQE`CtX5b6ߥ~d-Q^|MNN-#cٟݤQ?Q%qX]VDEeFel7*JjSdr1|̂-BUuZ="Ii+uV]c\ݏZL"[2gYC,Uv6^u/QbOô=reRN4/\mLk +Z͖̞ZyQFyQsFLPMÍޣ|e$|Ke좸<&s=M|Qҕ ɇome[Ֆ$Y?]Qd7o5t!ި{)m/Dms54B +<5ˉr$Gݢ_/QBsR4>5gF}=l|B<-)l(ZJ]AW:Uz2~bh +v2X#LGʖ +Ѷ%ɴd +gv=c}21XdiZљv l<-  &;4zam6M\_ΥL9괨^Z!:Nʏś~YCY1rPſ U|+Tߊ*NP_s+=m{̍yŗM.mp{z6QyթejD~u^ST3LʇY2?xYӝ!~[H{4ދ0m &FMPB"0Fgɼa_ ;di$KȲ0Bڱ1ZKз&p% Y&2Y5ĆxJ#2ٞ k]:>ĄvqSF7He5 +* 6A*k2aD+RJeer e rYIoCF΄XQFE}G5yϰ0RNQY +Z٪G5~ב|$м_Z??I $CA) BDc %©AH/hO+5Z8`(yXfd + +L6&=;sq)iǝS!Ӟ88]L'` NRƓ_ + 5|WӮ7q uf%'UJ[)wI!mvHf~Iq+ZVhVY"ƊhaE'4+ND[ݿSncfZ|vm'h>Òv%+nbʝU٤uAĞD2E\5fޑ i=M1*jy3D@Z%1q1r$s;0LEtG7EБ섺!8FLr +1;q~ո{p/\CxaєgCtEl9v}a 2xޟr>?_owfwn'1;UtܜVKA2.jbiVejZm;ȊUgq4D:A\h]wnj.4q!ʲoQZIsL/+DqSxބ5Q~ղs`^V|Գ `/EI^ O|R|x^'fXĒDCWv;y$!ЗcRGMicY< 7k#xd#L)HO5#3e*Y].'ʥ$L4ai"wt@'Q'ΠXO4E6>/.eW4uۿ[LUJ.g#^ԮpWf!e!,)HЃ<zzYjrlelFX4QPA%zd]ɢgɦF;2R~U bΊ'q C!-ֈ5kZRNX'bP +"Z^-H:y F&WUB\-a!ޖlK:2lhSm`9lYB66XH2l1b+ +sAmsRffNȪ!++~H&'cQ$cD"I'E((+n +jQZI$MNoKLd;}o;7e`Y-oÏ`eN}K7F$tXH`6<Śhj׷-?la)( +IZd˛՜,i *!DaQ~T +njm"F7kAs'u󈬖q27S_LsiR0BYw]x&͇a|* R*Ƚz1=g**#|@)T&(t-B١|PN(IMPSTE|uZVuzR=6ZѦhsmK|ZP :%=FOSus<_E%}F7}}~\?^op0Hp]\GcS8s˜DzY?:zUuuu~=]Iz=M.y鼓3;':WNhe1}$5ԩMZjqEEg*vۘ<+_R1!-BZr'~!.S]>^ve/A"r-,at[F@%]'OGlrT$]2iM#7gsB &Zu4hzkb!3G8R@Bt7Mqf7ɋL5, )#|3=] \gR1Q^O0p 4h*L0IYc\whb:cWh@C 4p1SOL~JKS4Z*|E-而]& v8[UTz,q,&Xb#<\kqM܀dL52g4$^&1z7:>{2ޒi$lZ 4f0.3|!ke|IfGh̤t\"Y&e̱d7 d2rY6za~*_^ ?YIu:)帓;ݜlW[ ^umf%=szV=ɺI7ږmc;3ݬM4u䌞4tMm]wNM d{>zvѶiζ[~g{~PcI;l};Ƹhdi)}_Kk%=Vֿ{T[U9!6L1g1&r,fJ435n2%SJ@ʀ6 $,l:'4epq5xJ\pU-VЊܟJCx(Oq3n|p% |Jh>~y-5g$i~Mw&e}]O1Xw;ޝA\]UYϹEAj! ]QPt]ZB^RHBPH % E +;KSz -^>f~nyǛQD>2E(Ǽ޻m^"V,`9J4SԻkyLq)g>aÿrI>=0%#Sf1eV> +KC U Vš +qj2̔9/`S@51Ʉc^HEi7(Ou|*@HV)0PBJT5`j-WX*qT +P؎`{*uH](R$nٸVhntAq'eqڄ'Gܗqp 8 p +Nsy|L^@):Mg,tf4XI&dZBj;.Ԃԁm-܁;r' [`+lvOs/ᥜ9K2J::\B5xC=?]+w0FF$wdrY:8 _r8Gs|lG:\Gga#v;yw~DiڻES(B(H 5SZ"+X= I$B֌U[R|?>^שb_XJ'5etyN5 &gN.wXI.5otGz)?K)53K>̑.Yuԩ075Hb X'J9xH{+kZ9꭭#:h}BXϮ+o$^/zd6Gf|<:Yj̎6EM?Mg4]j^gԘ kLi0,l7G7sf㘕s{+ r?I5c4l4-fY+4Ǥ\,y ^EY{s?"PPހR +ՖZ` &B4ʢ(J$`MىM$niMm( +e_ +3Rޝssv\'up9Ez8kp8?{8k8k8kWY+ sό\/=o<Iu(I9Y߱E:a~H}T +|3=5fc?!=]s1L3#s8 9K&ߒ#s/=<.=gH|;IS?U"׬I/ɷk6LC,2澌1gqcKϬgϑ?WzyңdkcvϜ0%yLz `HL11$ %cN8?gurȗ(R LfX]lK5?/# E\H}*=f5 ץcm!M |Co;.w2#Pϗ9/we/Hxߗ78G 8_R\&Z%{r $rV7|+%r/]p]6Ȥ|DdBfBoȩ|~ 5F1Mb?beoC[8&ڢdq/!C38#73rԸ^=ar9ΐ%Ƴs{d䐱&;Ƹzyv|u=b\u<-g/T`ueX֒cE[?mg6f8b8y8c8`8d8fqO *aJdf>'{|ęI/s}_;L!|YU`OA!ʂ䂥f,iLN"l!%7!{ oSRP/E"*=vkbPg]XCrº^lF;LW]lEsD[z8ΒU蛶/gC٭Ha4܆o^]J; ׍YpXy Hvx,,f68vD=iG6/Gc&5ݒDxft{$܉ a7d$Ĺ/s3 >$3}Xd)ļ>"νQ)#y>&s}\T)4qӥ`&3y>!}RgL)SSyy+b^9_ +tA3{aܻHm#jX +z]"nGx ȰV&τߜ 8߽̄U&m2A /k9P {5JB$sU͒pINK"%&0K՝$u$Cug qE?Խ&yJuwI0?=%3S%`Խ$a$`.%a3$33%ֽ%3$aFHgI8JLP'}Vf: uIX:[e=@ֽΑYJBo$KlQZt/^ F u$>B\%aC$r}[ȵZ$ {.u}$dw],5^" 9^,^* ^) ^"u]& X- X*^. 纮# +,gmE5{Y;11B)5 JPP.;#*Q-,JJ4R**(|>9gfwi=^c3lkAkȲ6'k-;eGӝ,.Qv}+-~wբj -jdfQf -[VXia5+-p,,9|EoyE=>-Ra"$qyE}ۂz=y(ﵠzE->`~y,[`,XԽhdQvfrErrEeˑ8Q9c-p-*>dAaXP/cQYڂzXYd^/Y>nٲ|sa9"zf)5?gQkyc/Xd3mʹ_% ?'ےt.j3٠?f:'ϰAY6϶slPk3٠3|霿1|,0ەlP_lٮ\brR y2Q6XP~~߰T.A}v[Wڠf곍6;WL=w ε6S]gsԋߴAԗ߶AԣߵAԯ߷i=~h0imn<ɢf [,jnEmٷ[aAcڣXPԢg?=e/-j5eAEſs7uւ΄{,,-_`AE}T >߂OXP٢/T/ZT?dAWY:ݢfZ߿-|ĢQ[R>fKmI-֞%lPG;<3s[%{FfJvTjd +{\Ǚ^++s@W6rV|5P+٪2#E}92#Rn+,u~Wjrol:̵u?u6^LRQ8&a61cm䬪GļU|GļU9*]9+gX9*<.U1PUO ,do֝+YQkO^Ve*tm`nWۜؤu::9\d=!*Y72UrRsC*5^n 7\k{͵'\@UkԾnsm%*4;dRis}.koﶹ Qﱉ9QF~TuddF%~3yPɁAzGJWw[`X`ZH-O\ͩo.6f̼ƻDM,.6D7fF/'M"msF7ΙDn-,1Og,8?gBbo& 52> KW[޵gD^--m+K]{M̈y5xʺ}xLݱ9m/Ik{Kn&rҳ|%]6%6Q'6ѣe6ѷ6]ȇJde{%-qF%rmoYvĜдgdX"gN6mgȜLm&jA}nxi +}Țʲe_KXM}F7 3Z 6#qLmdFiWبuFU67Zݡ]m#׮;BSUs۬{q>S!Sйv=Zf{l|s}&֫ofZ[boz@jLdTWF}a6}+<_es-s&@Vm,}GˬI&j{X +=-VZ^ɀ2Й1\_]mKd{h?2O52Y֚u:F:ϚӮ&3/L-,Sc}eNuj,s[-ӟ6dò59357M~ejp1D/%"[事ZOD,6Df-.%a%g%l%mm- 23-|[Z&?eξ̳-om`8.[ǖo^&@U]g?wϽAU6 (kbBN[`hRKR%qe2KQNDC-c\0$nAEl)ь(UܗcLa=Qfw2?c÷+V\X ;^\ |@Şn@X!s O!sWcR; Ew!~t `'v)]V0؊@Ux}UNo|2lxw'U`'_Mϋ7S*`sa'`,dMhxc Qy 0|Wz g-`Cw Źk} $`cX@5lB'X".R *&a;- +]hxa6 1g .%x6L`0'a1Z V1 w+p׌q z6%11U 94m*M12pQ BkW|oxO9w|?|h(8'c@AnOr=nN49|oܿWo z6bt|7>X|ˇ7Lǹp>Ğ*|}{Uğ>ļ>M}Йp*b ĻiѴZ7!qgCw _!ۄ&d aKus)JHo}А;`zd:ӺT"&T2() + qII(:$$!`E⟠)J/ꐧ~f=x>y~YÉY_H.;o}rsk_Ho6GHy:~z<#T7{ĴE~shC#QLHoh>3m0k7,J/9U.jVVaiU<*}l^bYHحG'*f?yI?:" +قb}A6bɦ}RRݬݓ-Eϭ+Z |m-ȭJ&o2&ض눮w-חa%ӷg]cM|;ckb.{4`=C76D(HQWe敊sw_[y(ëZ5_׮4o qy;ri(XOMޒ2#~DI\}ig؇\^77DGa%ݼ2 kɞ9KΝf4 +7k^ro%4xo3r:{Faͅ6{p?MfZ"u$kI + >9_/2.ol9C'p%N_z:Ir3JG~-+ͬr4ʵ3[R8S/mU/=F3I0{ ʋ2%l3RO`v{F(}G6٥v@h8+crƨdIY~oގSoAUxx9!6-y8w ^d44 ʳK;/\Sj9I$Y[OA89;'jIއ~dVuK j=k^9tmuߓ\7I.֙\g*/ H;PVƓ;3Ch#ߑ@0toB[G:T:`;;v6B:!4n-o#5qC*A.?, E^.5 D;^Frq!ՎY_, ZYHu`R-;L3֠HܪG4_ O\0lhoz*_(mq.~G"UIYRWXߤ&Wj_\8:絔du,!@΅ud]VϪn[j;[aQxdiW:iU+kd6(p'qNJ{vym0{5:6㖿;y=}yYquUYij %Z; x"O&AgƄfLϷ(7z;1{w~q^SMk{ ntgWg=k&:Έ<΢Osy>NX^2[H>:]_LՇ]Du6Qb)0i1iƤo&ZWr0N* LuRPu],1YhK#{ ǜw9 mVn}gYt㪞gO WPox>΍pfkwHnjXT~JRrjoqo-Ф[om/ 6:oG~{!?_˓>>c7{p> fcؽ, GGZx+X+>ٛ`-c-BK99M$цjϘb:Հߪdik x'_swqwpϤ->^(Ҹ}|̧l"9SzkSmouCLبR&E ;]Ў_0ǡu~;O=68|/=ݪps;½Ҡby1߅xlρe:+uj1dJ3QvMe͋h*x=`2 Ad! N>᯦n3)>k! ɫӏѹ\"\[%kry9q~E<" +UV{ȕ^P@*a՞z3y: +3'8o&٨MUyWp";V--eMUAwz틉mј!VNq~&YvNr6N=UPŽqx>M7}kXV'4f)٩&&S6֪UZjî/LDj?ϙm};:5&V< JMIe"z%93Sj_x+4hĺjYc* W=E|:]pbi;ƷETPD}ˋ_Awsݯ`uD +N6W=+?ŕ؇U|TS_3@VcY{FcFYo?7m\=NG$&YdtF:9J;L>UB{%ԩhr%ղuHŧh_A&˩ۧB[$CD>+\J}-ınڇh+6HWR6wrltіĚ +-l̔dZonU CX)3b++aVogU57~C:Rdc +-b5PҐXkE)P;S+O8ONKla:k5Z>綡g +tԛ"_s%ԓhr}qR傏eh&gZLwjSK5V]ڝ#C~ NQWM~ݧY z.1;V*jG*f\<7V +Bye9zbu$ltsס]U, \h~o:> ZAaV4{8o)|n&Os}JЍ%r=[+^5ZJn儉srGh}? oV[1m#ZWܧ^>hg/ j{xDBZ6㹼6\S)ɟz]=!՗\ݨy&3 +W.̹YLdLNc1#mL~d跣;9ok6^Wyܩs9pOS˻aߞ^ Q+ڼyPvX9g27e]U}$B +hZ H)2 m d!a -VTX6mSLiJڔ6PQkE+bX{*rtM>>}Mܣûǻ̧7zkX.|D?W m\yCqn}z*uL<2o26{oe/ΐx{o#%W[qqjVHg=92~_y 9qY.{T +c? &Ay̓z?r.f5ؗ\/F*|=%yQ9(Qy'K޳@jKkXpA6{NsNij4Z6.mtuD/6w>Y&g$>3db~M:!ѡfnӹaxCYrmU:'&1os^E21CE2z8Wf\V}hl9Dk)3|&0N q 0#̵6>Mj ԰cz9 WMŲ\G3Sڟ̥5s-$UʒCqG_(zFĥp6$u&9N7iԸ⤑{$.ϙ K,iϮnӃc8&1k'iQ:cy/j!+F:fqZm6+lMu)|]9V軥yfb=r#e4i,aީwp?M~ds χzo7IVou{TZ-艗Kk=,no9X]PywN"xwCƇ4㤊w,hy),qppppppppqErB8K\CCʿ +;888888\5]{щ&JwJJK.u󈗿*N>1$j>ҹ>Y5(cqSh{%VgDQ"mYQO K:߷]ܶ8fi$K=hNڲO=[K) [4Wa=m)'R KDKd\ wLB)c{ K]e,-VX[Ȟ=7=,eM2U8vSO@FII@Xg "YrdV~E/e9RF2NF?urY&)U$kY{%#zI]fl5]9d{6γ#6RV-2?DǕ=Y\]H ]RRRrz5kXW9Hi2CKɦ^R=ܡa-:e>95eδ.>\Rv{f\s裀䬹;4hfFk,F2Me]d#Wtk)qv_X(N׋YQjJ1wogr|uyu!UCx(9_}yE ^GG bnuH@OWS7j +@5H%j P5L W)jJU#(5}7? x $a0&$f܂b )T(Fn܆a<&`"nɘS]HGi!cfbf\db*ZQj*TEsU 1 q7`)a9V +|jA֢E('P6e(ǽX +ܧbzzD=cqQOmUOiUQ;Գj'>ϠylE܏M_W5lڧKAWT:^U؊o!| UxQT1<'P' F-v<:<x;!1)9ZSmihNAtE`A0X,KertGD/F ֢= 0C00#0?c~``,a<&`"&a2~Lo0300s00 K˰+k[Om؎؉]؍=؋88888888.. +nnpwqOxxxxxx´_ eFH(I3*1:c0&c160.1~X Iɘ)i阞Y٘9y|,B,",b,,R,2,r, +YYUYY5YYuYـ ولMٌق-يÑlöl®Ne_c~9?'0_8:\.K9c999+p*p{# +w{8s9 (<\¥\\\\ZznFnfnV?q;wp'wq7p/>! OO // +oo __ ?~/Q@LNQYQQWTEStPLRlQ\S|%PB%Rb%QR%JW)JFiNAIEYMٕC9+() + +JJX]Z#klM5ZZ+kmmAT^**[UQUUSuPMRmQ]S}5PC5Rc5QS5SsPKRkQ[S{uPGuRguQWuSwPORoQ_a3mͶ96|[` m-%Ԗr[a+m5zS}A5H?' v.m{lh;hv̎ ;i총vh]5nk={j칽/1ko쭽8M$M֯žoܷ.p3\Er]MT5Ew1\Lvq\\w \B%vI\R%w)\Jʥvi4]34S4e<C HDKw +*vŵFkΕzmFmfmV?jڮک]ڭ=ګOu@uHuDGuLu5utҵ)9]%]]5]wuC7uKuGwuO@HDOLB/JFoNA>_}}g>杏#H>&xn>>c8>>O$>O>OS4>O >3,>>s<>/ "//K2/ +?@5hɶm۵aZyf۶m۶m۶њZKkkպZOkm~A!aHkmʹHmѶvЎI;kݴОK{kЁ:Hb]:BG(ct:A'$StN:Cg,st@"]Kt.BW*]ktA7&ݬ[tnCw.ݭ{tz@!=GzBO)=gzA/%W^zCo-w@#}O>B_+}oA?'_~C/C4D pP!"# "#R"R# "#2"2# "#r"r#ƎB>GD!FE1G D)FE9GTD%TFTE5TG &j6uQ  AFBpD "mQh耎肮聞胾񘀉ɘ阁٘XXXXXXXX؀؄؂؆؁؅؃؇88888888󸀋˸븁۸xxxxxxxxh1QqIc&d"&f&e2&g +d*fe:gfd&fffe6fgd.fe>gd!fe1g d)fe9gVd%VfVe5Vg &k6ЗuYl? 3 c7M&{S4o:#؈لMٌقlVl6l(c{v`GvbgvaWvcw`Oboa_co'p q0p(q8Gp$Gq4p,qw;zwɻ]z׼ɜ©=p6p.q>p!q1p)q9Wp%Wq5p-q=7p#7q3p+q;wp'wq7p/qσaD REJ5.5ćoV|I_$P$XB$T$\"4g~W~w/?f?a1-6ĜűfZ""Ce 2RFh#ceĖĒZ2Kn),ԖFfl#se̗PbY"Ke,Yz`- ٲf"[elMvYva9-Y?՝8ϱ$0Amx$0kc[_M!lɛsml~RUy*ݺuw61 )9݇GCa|?/oo#Qz=DO3Yz^D/+UzDo;]z}>D'S}D___#Q~?O3Y~_/+U~o;]~?'S_oз_?t}DX&M'ɘ}vu/S: f˨{yDNs^o8tozBbKmۣ=()O&7Horn]r .;УWb50K Z +w\Ά#Z}x',j`ڀ kK 8߀W4\Xv@i0},#UYUURTJHOF=dsy`!>QC1 ƔŒJYkޕFR :'Z34*RFS5cw~'u't̟ʭft԰*TŖdli EPZk}ALkÑd9#{5 8O $08NP CǑ({\%"aU $ƹ0m͙/s1 q-`lY&7k$J%~YX;|.A]k- jimv Kmɗm'zGNo `EHK4Ur1a+[6C&.;$@>څJ +mnjiC%#\q@ҬKVk{ݙ łX %b X %%MobUN $@r 8k k kF'rZg6NnPRFty؁|||,ёx  + +!!4+ee,*e 2XVl8oy҇[[^,Sz`m.{  ^,[p$\;wdĐMP%G[9'8II&jJʖ#VDR-Rҭ1zO&e*NK`'/${gO=s鑙#Yye\Tm/tG..k~}膼`ۗ7n'Jjs*l\UR4 huE@htkŤj( Jd=-^gIVmY5+ba^;Xk]U +Ac1lH.FC]a@W`;8HtW5uD=dI4tq9ys7ջɮ]ջɮ޽ N!)%7\FrΆ Ң wGAhGX3@a@a@a@a@a@alA*,'r wqOuߔz9ɬ_^SC]0<'R +~(Ppu*=LDvFH+{8Rw;!&wHNu8*e1Ѧ3f*KV8V2%U'S8mx:g,47ēvBܗ~x]hu?D7ܥ&9zC D'P&uWyN "*\q8w9\qn<#.%SD)p)'>ƉۉTnywyergj7@;iOKƩ +7ʫN˩0I9>'YK+'3;-]|bhx> ZtIU +\LU$*?"d9aYRPAD0g  osRT~! +%;:I 5& $:as' 6C`F0DT{3w$#U"Vˌp坫 D&Qs>NDP a 9<Z$v&ILH$7C[DY! `C&ݛO.ت«*7=^"M~1}/ؿǰ @p,p1&s:5M(aP5 zhBP 2=lSyR?O5l.`ͻn25d<6AIu*հ:͉;kY"ilܤEUQП C27 `$WIW*E[*$t2h4,q]t<: 9aG@DM9=|K]L\d|vcH75klCC}dϴZ0G.bsoٙZ ع!6 Hx @! CdE*S P,+8C:Xe<(lW5\RT4#Bf_s 2˸%ɵ<δ$r>C=tW[:pLtV+Ohqihx9+jfվ0!i'n~)*vHsvsR/j$2 }~y{hs_{{K^j*ףC%LEW#G9DC"4`d+vQ\^=i߈LepmF#h'jwj*&:D9DKZ[)kfe?/1A[iX"lm+9ڲ8ژVAII^3.:vJo1 \Tt;sP.o a%//Ewԅ}(Z]P5k(/)!_B>_KH,\E9+\.F.F\v1u14c {4K.>GCO&lL +ZmVr}e/Dk'xey|xEOje}{Ҥ+M S2vPsɲ$/ît-md"W$vi^9>zATojvQ=OpCNJȦSHzSRJ(һI,|_^3-⩽8n+Qَ\])dzhn<n v3KX22H~fS/3!oeT3>UΜʙ}H CY) y+~Ey(Ue''e)]T1J(Jht.ۇHueP]|w'[rNQ-r(F5uk5k7u7T1?;z,Gs3ԏhwn˵+*] +aa8 8Yqdqr o3*fx&ڰa˅ذvfYvWϺ;nڽ9[hƳ{sgg-l`v;O ?} ǫ|ۅoiA1 s[V1 )gs/DIS™4')L gJ83ICRbA;'iSrۗ}c^m°97b[L󙾕?)ʻlfWe]Cae+j|7!da:xU{WL^ר([n`GYG|ΐjon0ǎCѽx&߮LZ3̾/}~~(bMTy,Jv,0Х*KUT.UQ]TEuGDΘpƄ3&1 gL83?3?3?}^5Q` = .D-[4XE"z)(v[ɃVo#{bT쑊=RT'>! OH}Bӥi}B8™΄p&LgB8$L$LrO^k5y15kw@ H5tրtЙ4Μp3ןk=ȝB1OuvyT2n~{uNͅnKMU)bCRlH CRaH/^p^_*.τ +( Ql4"!Hi4"Ft((X3%)L gJ8S™Δp$ /Hng 6\oZqB+I"pE|nm0m/=o2` +0Z;GgJK/wO,]㢢1 w̱|S\lX컺WtrTl2xw;&ʼnǚ7NV;(v|CBw_]9֪e{5M'Ҵ}Yb&WmxޅYʊwgS*WR`eOx2QهI(jJvE7;yzCLn,[+sR{YUTgJgj+=3]T)OȃVeT Ոɰ~7!tWg.C`!MvzP08̅l]@H fWS8DkXOƚvimZ4՜:0no ᛄJh0ODǍ0θb-u<&UUƩvhKu3+`N̴ wfo@)8؄[%LԂ0 xc-2|B|U5? kL -0D1/ .-m!JQm% !xbWaSHbYU4 ElʂV?\454Ai̴fǶvTO"!mTNA[xww,Ixwp,]aF$b)6Iߪ)F[&0y2S?|A!x_l+YSD1g)y + GAEC"d$Br@#H$H$ID!yCrDlHC/py5f(1†ӱșx0#( \!Fa1FE1`w1Yh/K/m\ C yq=w|,IhiKd 4;/!p?$zf4Fgs{k^3̽f5s{k^3̽f5s{k^3̽^[uŽp-^Wk^/sqsW½i^̯۸ FBopvb nmq/l˛a̻acj-XˮթjJmYeTtUڲylI;FX:4\ӂ\$."0."dd.H]$CrH"[k.XwE""BvHv"ٱE2$Ef}jU9VT؇N a蠵v#S,"H\㦫^#-c()0A9*W/{J.c4sS |w%U%ů&t^mWNc>"+a_2]8|IM{_R9*`zNc&xlߢCKL}G 㗄/<{pqZ~AE*"I V$h~]"󗓗."we>QJ,QXlx vix^M#)wZI ͣĝ=Mn28x9tHR<wTfB_䋹N,tG7wq0SkʼnXGǃ# !}%^E,RÐYIquU"3$Vݜ{҅S(@)U-lp-'Rml'8CS?xVlP~ A}t*裠O!賠sA_)BХ+A_%蛠}â.FN0nCtG; H;kH+qiQ%im~*E*jL*6nYlѫ;HeKqJ $ iPA)>A=CVmJtkJUB.XaG40i}=FFwg#{ۆҞu#Z$`- dO ׀q+ Jɐ$ ӏ4_z2h8{XYpЬ }nߚȄ ##}wlZ*GcӞ96џ~oJYy_}v]W;O;T5v0uL uj{tÓ.ɇC:#`xVVa8۵Eo :Z!czYEY?={}(DztM`=0w+p$EBW0ȏh,l%wMGeN9RnP6.< dt­)4ԇvbړLċmfiMk&8<6ȴfFξx@#|6V@/vl`x3gZN,raQ$%-%<%6'֥;TL%Y, +PfѭrؿvP'RG`KOAyX{i$'6fmZ?Ǧټ!sګ?UڜpW}l #4W3|}qr86ð!]Ҭl:~seAQw:H2e#a ƏwQyK>QVEe3*0{UVU͆F` zКt` +,18RJ_n>įVϮkk@jtZ#nj)HNt^e},Y]6z:Ci4LS_H;lQI8 93_֡ђ>P{_Qòۇlǩ;6f]\ ?cc6Mm[jWuᲯӾv<19vǠ! 7U ]:urat7Bp&9P(7gi'ˡXRڈ>zU|Xwyq^KVVexyAUkOFU[o?i=ZVL{S^E+_WȴHL+Z +y*U&σi>9C¥&/ />Y\{oaӮ@._]kmq8-"[v1}<9q/i-9ʲ!2"! qyǠU܇rw|Qa!Dc B9xXvEe]$>X>rOmw]y\/Ł>)a BX.7۸_bLWcyQv!|I:;޾vv6 4{B>?$28>A*8o[Ջ'u`*~R"4Xv=VX_h˱]ȯ\ GI{ú>~ +sĝ*SGYrhj jd EJ8G +j52p}QxXjZfM#nLMHӗe4}]dV"k4r9kNS/ 49蓣O>9蓣O^D/bbݼMu#"N1h9XcpN9+%rKzs"???? +~*UQaG*UKJӿxWЁ)830 p N)8#X>hQ& $k/Ho˟vv]uϒŻoe(,Vm1BNMj^ xƫsnO2DΗiUyzY^.]ŪԠ㺳7[XuwZޟC[Icwh/~Ĥ̴1(fŔRPB +JHA )(!%RPB +c,K$yJ@I(Iڒ"Py$P( ғV oyNo]C3)GuAzٝ?cKyH.շ1 y跓WqemB}X)MZ;S%t᥻0d.gF:}!}/9[sgu_R>/[ht0ft{~)ZPp}?܄pzg/*pS_]TGbaK}>j%}U}9-viQǸyRA!ˇd}qǥv}|+*!uy.<9z(tB$%vQ!#0 +jItIw:%NKP3R真s~9{J8uT4α@~F7D^¹Cوc 8d{bC;>N>5dSpqߡ@'gkաC99ѱO{ho6ɝۓt%OiƉϧnd=yr )?O9XcpNHf+?5~O| 3?AZ)-y_;joȹGizG3_gEMiȇ g;,AVq'=9qO{rܓwwwȷH"?E~)SO"?8ߣ y=Gو8s3~SZbPΌ pdrxգS2ˬR$xJJ_:25#?2|2Mуu欞1zPoJlIτw()yyo{\N~]=#ybh~~fs[?Ӥ/_3xF(A"^;UE^-cgx&9ٿ ͣ[P\?3o_tVO>3Q /ãGū8 +?㝣e=Wh6-Fɾ|k獼G:ݧ^?pkcsXL3ap3M6W`K~v~`9e~g=xk?~~t-'3?E >:96WOo=;Ǒ{ i i i лsCW~7x$K ]}?qwH}Vm^Ӄ,bߋX;{g GH[KʴZOV)Z^UtI|#E{/k^;x_ދqGG5|$5ټ>xB1U֝^yfR:(G/ܢyN _a2}S1T FRM}C"0활nNTғBʓ3$$l#㕸[{1.ʧ_bƻpTyGg2o}jzL2ؼ?B2|}z!O%DԌm)B~B!Egx8r{W6·km)C_{۽ Q{n=Z;7~OɆ\+r(nKY4E=/xE}/pdQJ HhVi XlG3$mGS 2?^s;7vno i٢rwo+O2y=;CvVq\ouʯ+]ٻwe+Bv{G"vqّSO;hsOx8;;v8q`ǁ______Z 3IEVCo %|>+rjɉb2ۉhe} ZU33 noWӐz{3<baG1e1,Cdb(-Q =Ћ9v$:^ =CEKJg_ +\ЇJQ.WRB .u_EM;M>5}V|>ۖݮP=q|瘞}3mзBm[ϬY+6kthml܏xZ_;[{̯/;hP[ 3W' 'WYMɄ)?X-øQ )\'& R ({`! +Ȅ;jR}nO()y҅̑0"aKV'!M<3ÝB$_$_$_$_$_$_$_$_$_ԩTuFFFF*= U5T5TU U U o5 ÿo7[U ÿ@{V;̽f/>Lu~ׇ}ε%7y:Quo|?k\{t=r)ܢ~ϼmMnsӕng,Wcxv?bkU3ZO%=>){{aA {_q8%Mf:7S=)ݏx5k׼$#=1ZSw+5]QA]ƏL-TЩE*qvJvj0v ¿/ ¿/ ¿oM>,(ǧ >.Nȯ.ۏ;h]\~Q|CկN}|W#}O݃qs/]O۷[NޟC6ѯ~mk_F6ѯ~nxtswww;;(ww}߿ ~ +endstream endobj 102 0 obj [/ICCBased 58 0 R] endobj 33 0 obj [32 0 R 31 0 R 30 0 R 29 0 R 28 0 R] endobj 105 0 obj <> endobj xref +0 106 +0000000004 65535 f +0000000016 00000 n +0000000203 00000 n +0000039756 00000 n +0000000000 00000 f +0000039835 00000 n +0000000000 00000 f +0000000000 00000 f +0000051685 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000051758 00000 n +0000051976 00000 n +0000053152 00000 n +0000118741 00000 n +0000184330 00000 n +0000249919 00000 n +0000000000 00000 f +0000040347 00000 n +0000040832 00000 n +0000041301 00000 n +0000047385 00000 n +0000047464 00000 n +0000047542 00000 n +0000047619 00000 n +0000047699 00000 n +0000410947 00000 n +0000041812 00000 n +0000355970 00000 n +0000363059 00000 n +0000043994 00000 n +0000051572 00000 n +0000363122 00000 n +0000352246 00000 n +0000043708 00000 n +0000043851 00000 n +0000352945 00000 n +0000355871 00000 n +0000349151 00000 n +0000352184 00000 n +0000292235 00000 n +0000293494 00000 n +0000348993 00000 n +0000293556 00000 n +0000294752 00000 n +0000042316 00000 n +0000043646 00000 n +0000048352 00000 n +0000292200 00000 n +0000046894 00000 n +0000044029 00000 n +0000044245 00000 n +0000044124 00000 n +0000047028 00000 n +0000047148 00000 n +0000047269 00000 n +0000048236 00000 n +0000048267 00000 n +0000048120 00000 n +0000048151 00000 n +0000048004 00000 n +0000048035 00000 n +0000047888 00000 n +0000047919 00000 n +0000047772 00000 n +0000047803 00000 n +0000048624 00000 n +0000048961 00000 n +0000049499 00000 n +0000349116 00000 n +0000347930 00000 n +0000347993 00000 n +0000348136 00000 n +0000295040 00000 n +0000333967 00000 n +0000295103 00000 n +0000320658 00000 n +0000334081 00000 n +0000334144 00000 n +0000334174 00000 n +0000334436 00000 n +0000347818 00000 n +0000334509 00000 n +0000348495 00000 n +0000348279 00000 n +0000348374 00000 n +0000348629 00000 n +0000348748 00000 n +0000348869 00000 n +0000352910 00000 n +0000352389 00000 n +0000352556 00000 n +0000352677 00000 n +0000352799 00000 n +0000355934 00000 n +0000410911 00000 n +0000363441 00000 n +0000363691 00000 n +0000411000 00000 n +trailer +<]>> +startxref +411188 +%%EOF diff --git a/Doc/Logo/resources/preview.pdf b/Doc/Logo/resources/preview.pdf new file mode 100644 index 000000000..493190329 --- /dev/null +++ b/Doc/Logo/resources/preview.pdf @@ -0,0 +1,2436 @@ +%PDF-1.5 % +1 0 obj <>/OCGs[11 0 R 12 0 R 13 0 R 14 0 R 15 0 R 98 0 R 99 0 R 100 0 R 101 0 R 102 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream + + + + + application/pdf + + + flow-logo + + + Adobe Illustrator 24.0 (Windows) + 2020-06-25T13:44:16+02:00 + 2020-06-25T13:46:51+02:00 + 2020-06-25T13:46:51+02:00 + + + + 256 + 36 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAJAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A4/iqvZ2yXEpR5VhAUnm3 SvhluHGJmiaac+UwjYBkiG0pViLtdRBlBJSoJ2FdqHMoaIcNmcR5OJ+fPEAIS36qa2FQSZo137kd Nt+uGGgvnOI+P4/ATPX1yhI/D8fgtnT1Bp9YjPuDtkj2eAa44sR2gSL8OSjc24hKgSLJWv2e1Mxt TpxiqpCV9zkabUHLdxMa71HMZyn2t+X9tc3P5T6Hb20xt7iXS4UinFQUYxijCm+2WYpCMgSLDVmg ZQIiaJHNWufLXmt0WKDWmiSL1vRmLSM55VMZkFQHpsDUn2zMjqcPMw7u74uDLSZ+Qnyvv+FpTrtz e+WNGjg1TzOEuJ47qFrmUSPNSRoxFJFFHUl40jO5oOTE1zIwRjnncMewrbautgnz+4NGeZ08AJ5N ze+99KIA7gPmWH3v5h20cNtcS+cpYFJWNWjtrhhI8LK8/NCDSolAFP65mHSiJIOL7R8PucWOpMxx DL9h+P3sztvLXm7UNMtbq28wv9XuI4po0Ek68kcB6+oSZRyB+jME6rDGRBh933cnOGlzSiCJ/f8A fzZT5X0vVtN05rfVL5tQuDKzidixorAfD8VTsQe/3dBg6nLCcrgOEOdpcU4RqcuIvia4/RLNcxzU S7aac+s3qUUA/ACFqNzX9nLcXgmFS2nvvv8ADl+pozeOMlx3htt6d+/n+tRP6ErTem1GHPvtvXuK 1NNsy4fk+R/334vqem2ziy/O8x/vfft5dB133S5ypdio4qSeI8BmpmQZGtg7eAIiL3K3Isk5tf8A lDtU/wC2jp//ACYvcVSbFXYq7FXYq7FXYqmfl7/e+X/mDvv+oObFUsxV2KuxV2KuxV2KuxV2KuxV Xs7O4vLhYIF5SN9wA6k+2XYMEsshGPMtGo1EMMDOfIJtceWfQgd3uOTopYgLtsK+Obw9g8MDIz3A 7nRQ9oOKYiIbE1z/AGJTNbCOPnyrvSlMwNX2eMUOK73dnpdccs+GqUM1jsXYq+4Pyr/8lv5a/wC2 db/8mxirKcVfNXnO5l1jzfqk167GOGSYcVO6xQEqiLUEDoO3vnb6OAx4YiPUD5l8/wBZkOXPMy6E /IME80NZjT9Pit+QImuZCrsGbiywqG2VdiUYfQcllvxN+4fpcnSf3XxP6H115QFPKeig/wDLBa/8 mVzi8/8AeS95eyw/RH3BNsqbXwbLqgtr1yIectvPO0bFvhrIabrSu1Nt8y8Gq8OjVmN18fx3uDqN H4vEOKoyAvv28/2LYdQlml4W9rzY/wC6wS3wqRTttQLmdp9fIyqGO76e6v0D9LhZ+z4iNzyUB15c 7+8n9C+f9IQopltuIJAHJwd+JFAO2Zc/zIAvHz75Du6dzjY/y0iayfKJ7+vehry+leN4nj4+q3Pd q06e3+TmJrtXk4TCca4jxc77v1e9zNDo8YkJxlfCOHlXf+v3foE27BfJmqseg1CwP3QXuaUmg7qE eKQHek0UOpy24uI7GV4CHYSgMVpGKuagdFBqfDMf8x5O4/kfb6x+Pitik5rUjiQaEdcuhPiFut1W nOKfCTbUkrKyoic2au1adMGTJwt2i0RzkgGlpmkUgMgAqAaNXqaeGVR1IJqnMz9jSxxJ4uQvkrZk ulRttpF7cWzXKKFhWvxsaVp1pmbp+z8uWJlEekd7gajtLFimISPqPciNCjaPUZVbr9Svjt/zBzZT nwSxS4Zc3Jw5o5I2ENb6ZcTWzXNKQqacvfx+WZej7OlmiZk1Hl8XE1faMcUxDnLn8P1oRlKsVPUb ZgZMZhIxPMOdCYlESHIo7RtKfUrkxBuEca85H60Fabe++ZOh0Zzz4bodXD7Q1w02Piqydg3rOmrY XCxKWIZeXx7HqR7ZZ2jpIYJARJNjqw7M1stRAykAKPRBQwvNNHDGKySMEQe7GgzBhAykAOZc/JMQ iZHkBad6h5bjs4FcyM7V4swAC1pXbOhPYuOIFyPE87i7cnORqIEftSN14uyjsSPuzQZocMzEdCXo sUuKIPeFuVs3YqynyOiEXzkfGojUH2bkT/xEZ0HYMRcz7v0vM+0kjUB09X6EZqN3p5tZ1dw1yfUT gHNQQSqjip/Xm4yTjKMgT6txV/DkP0uowYpxnEiPp9JuvjzP6GL3hHoAeJGartY/ugPN3/Zg/en3 ILOcd87FX3B+Vf8A5Lfy1/2zrf8A5NjFWU4q8J8wflf59nv9YutPtwj3RnNrKlxHG37ySo35ArVc 6U9o4DijEncV0eVxdmZ455TrYmXUdUo8of8AOPXmq91qO884SrDZRsGnjE3r3E/GlE5LyCqehPKv gO+UZe04RjWPm7HH2fKUrnyfRiIiIqIoVFACqBQADYAAZoXct4q/P7Uf+Ohdf8ZZP+JHFWX6BZQ2 miJcAVlnUySN3oCaD7s67srFHHg4+p3LxHa+eWXUcHSOwQ3mCF44YizKSZBVVqafC3c0zN1EpERs df0Fq0PDcqv6f0hjV9/eL/q/xzm+2P7wf1XqOyvoPvRsQJ8k6sBuTf2AA/54XuaaXIu5wECcSe8I zTfOnl6x0y20+TRnukWJkupjeXETs0o4yCNYyEQMoAIoeQ65hg10emzQMjYmOn8I6MaiMbGVolZY mkYxK+7Ba/DU+NMycIqLo+0pcWX4OLrHMGc0XgQD71GVakE07DsLLGJlZpDPN6jKAKkkdBQAA5Tj ibDsdXnicctxyRmbB49kcur28WjWVvC6M/pskykVKFu9PHOjwavEMMYmQ5G3mMmhyy1E50eYrz/Y g9FkEmpykdBZXwH/AEhzZp9bnGXJY5O90eE44Ueappd3MunTWbxiSGYFoWWREKt/lVOy7VNczdDq pY4GNWDuNxsf1Ou1+lhPKJg1IbH0k2PLbmlE6SI/7ynI77EH9ROazMZGRMuZdth4eGo8gmvlu/it Dd81LerGFUKUBrX/AC2X8Mz+zNQMRkT1Hl+kh1na+lllEKNUfP8AQChLiDUrqT1J5Fleg+JpYzse w+L36ZjZRlyG5Gz/AFh+ty8MsOIVAcI/qy/Uo6fOlvf207glIpUdgKVorAmlaZTgmIZIyPQgt2px meKURzlEj5hONVub69vyYWAtz8SRSSxAAgUNfjIH35uc+syyzXD6e4yj3V3ul0ukxY8NT+vvEZd9 9yU3MD8TLxUAH4vjQnf2BJzC1soT9URR67j9bsdGZR9JN92x/Uhc1zsHYqnflzW7TTEuhOkjGfhw 9MA04cq1qV/mza9ma6GDi4gd65fF03a/Z2TU8PAQOG+fnXke5BXN9FLdTTKG4yOzKDStCa775k/y rj32lzPd3+9jHszIIgEjYAfZ7kLNM0hqdgOgzV6rVSzSs7Acg7LTaaOIUOanmK5LsVfcH5V/+S38 tf8AbOt/+TYxVlOKuxV2KuxV2Kvz+1H/AI6F1/xlk/4kcVZjBKq+VUo4Di2am+9aHOw0sh+V5/wl 4fUwJ1p2/jH6GMyXkstGnlL06cjXBLNGIuUvtc+GnN1GPyCAnl9SQt26D5ZzWs1Hi5DLp0eg0mDw oV16pra/8odqn/bR0/8A5MXuYrkpNirsVdirsVdirsVTPy9/vfL/AMwd9/1BzYqlmKuxV2KuxV2K uxV2Kph/zr//AC9/8k8Vd/zr/wDy9/8AJPFXf86//wAvf/JPFXf86/8A8vf/ACTxV3/Ov/8AL3/y TxVcn6Cr8P1j35+l+GX4OZ+n/Oac3L+L4Lv9wlf93f8AJLL9/wDa/sadv6f2vs78sPS/5V55d9Ll 6X6Pg4c6cqcB1ptmC5jJ8VdirsVdirsVfB2ofoD6/c1+t19V6/3f8xxVD/8AOv8A/L3/AMk8Vd/z r/8Ay9/8k8Vd/wA6/wD8vf8AyTxVOLX9Bf4R1Kn1rh+kLDl/d1r6N5Sn44qk/wDzr/8Ay9/8k8Vd /wA6/wD8vf8AyTxV3/Ov/wDL3/yTxV3/ADr/APy9/wDJPFXf86//AMvf/JPFXf8AOv8A/L3/AMk8 VTLQP0D9el4/Wq/U73r6fT6pLX8MVS3/AJ1//l7/AOSeKu/51/8A5e/+SeKu/wCdf/5e/wDknirv +df/AOXv/knirv8AnX/+Xv8A5J4q7/nX/wDl7/5J4q7/AJ1//l7/AOSeKv8A/9k= + + + + proof:pdf + uuid:65E6390686CF11DBA6E2D887CEACB407 + xmp.did:9520677b-5829-7f4e-b7ba-47dd9cadb709 + uuid:389ea6d5-19a8-4fb6-890d-e23a94a8bd38 + + uuid:6e099798-987a-4a34-b1f9-4e5a3167e7da + xmp.did:8a8bab92-bf7c-3249-ba0b-df1e1401a5f9 + uuid:65E6390686CF11DBA6E2D887CEACB407 + default + + + + + saved + xmp.iid:7e0fac8b-8f59-c34b-a801-a9c4f4f6a483 + 2020-06-18T11:15:20+02:00 + Adobe Illustrator 24.0 (Windows) + / + + + saved + xmp.iid:9520677b-5829-7f4e-b7ba-47dd9cadb709 + 2020-06-25T13:44:16+02:00 + Adobe Illustrator 24.0 (Windows) + / + + + + Web + Adobe Illustrator + 1 + True + False + + 800.000000 + 800.000000 + Pixels + + + + + Inter-ExtraLight + Inter + Extra Light + Open Type + Version 3.013;git-d82f67bfa + False + Inter-ExtraLight.otf + + + InterV + Inter V + Regular + TrueType + Version 3.013;git-d82f67bfa + False + Inter-V.otf + + + + + + Cyan + Magenta + Yellow + Black + + + + + + Default Swatch Group + 0 + + + + White + RGB + PROCESS + 255 + 255 + 255 + + + Black + RGB + PROCESS + 0 + 0 + 0 + + + RGB Red + RGB + PROCESS + 255 + 0 + 0 + + + RGB Yellow + RGB + PROCESS + 255 + 255 + 0 + + + RGB Green + RGB + PROCESS + 0 + 255 + 0 + + + RGB Cyan + RGB + PROCESS + 0 + 255 + 255 + + + RGB Blue + RGB + PROCESS + 0 + 0 + 255 + + + RGB Magenta + RGB + PROCESS + 255 + 0 + 255 + + + R=193 G=39 B=45 + RGB + PROCESS + 193 + 39 + 45 + + + R=237 G=28 B=36 + RGB + PROCESS + 237 + 28 + 36 + + + R=241 G=90 B=36 + RGB + PROCESS + 241 + 90 + 36 + + + R=247 G=147 B=30 + RGB + PROCESS + 247 + 147 + 30 + + + R=251 G=176 B=59 + RGB + PROCESS + 251 + 176 + 59 + + + R=252 G=238 B=33 + RGB + PROCESS + 252 + 238 + 33 + + + R=217 G=224 B=33 + RGB + PROCESS + 217 + 224 + 33 + + + R=140 G=198 B=63 + RGB + PROCESS + 140 + 198 + 63 + + + R=57 G=181 B=74 + RGB + PROCESS + 57 + 181 + 74 + + + R=0 G=146 B=69 + RGB + PROCESS + 0 + 146 + 69 + + + R=0 G=104 B=55 + RGB + PROCESS + 0 + 104 + 55 + + + R=34 G=181 B=115 + RGB + PROCESS + 34 + 181 + 115 + + + R=0 G=169 B=157 + RGB + PROCESS + 0 + 169 + 157 + + + R=41 G=171 B=226 + RGB + PROCESS + 41 + 171 + 226 + + + R=0 G=113 B=188 + RGB + PROCESS + 0 + 113 + 188 + + + R=46 G=49 B=146 + RGB + PROCESS + 46 + 49 + 146 + + + R=27 G=20 B=100 + RGB + PROCESS + 27 + 20 + 100 + + + R=102 G=45 B=145 + RGB + PROCESS + 102 + 45 + 145 + + + R=147 G=39 B=143 + RGB + PROCESS + 147 + 39 + 143 + + + R=158 G=0 B=93 + RGB + PROCESS + 158 + 0 + 93 + + + R=212 G=20 B=90 + RGB + PROCESS + 212 + 20 + 90 + + + R=237 G=30 B=121 + RGB + PROCESS + 237 + 30 + 121 + + + R=199 G=178 B=153 + RGB + PROCESS + 199 + 178 + 153 + + + R=153 G=134 B=117 + RGB + PROCESS + 153 + 134 + 117 + + + R=115 G=99 B=87 + RGB + PROCESS + 115 + 99 + 87 + + + R=83 G=71 B=65 + RGB + PROCESS + 83 + 71 + 65 + + + R=198 G=156 B=109 + RGB + PROCESS + 198 + 156 + 109 + + + R=166 G=124 B=82 + RGB + PROCESS + 166 + 124 + 82 + + + R=140 G=98 B=57 + RGB + PROCESS + 140 + 98 + 57 + + + R=117 G=76 B=36 + RGB + PROCESS + 117 + 76 + 36 + + + R=96 G=56 B=19 + RGB + PROCESS + 96 + 56 + 19 + + + R=66 G=33 B=11 + RGB + PROCESS + 66 + 33 + 11 + + + + + + Grays + 1 + + + + R=0 G=0 B=0 + RGB + PROCESS + 0 + 0 + 0 + + + R=26 G=26 B=26 + RGB + PROCESS + 26 + 26 + 26 + + + R=51 G=51 B=51 + RGB + PROCESS + 51 + 51 + 51 + + + R=77 G=77 B=77 + RGB + PROCESS + 77 + 77 + 77 + + + R=102 G=102 B=102 + RGB + PROCESS + 102 + 102 + 102 + + + R=128 G=128 B=128 + RGB + PROCESS + 128 + 128 + 128 + + + R=153 G=153 B=153 + RGB + PROCESS + 153 + 153 + 153 + + + R=179 G=179 B=179 + RGB + PROCESS + 179 + 179 + 179 + + + R=204 G=204 B=204 + RGB + PROCESS + 204 + 204 + 204 + + + R=230 G=230 B=230 + RGB + PROCESS + 230 + 230 + 230 + + + R=242 G=242 B=242 + RGB + PROCESS + 242 + 242 + 242 + + + + + + Web Color Group + 1 + + + + R=63 G=169 B=245 + RGB + PROCESS + 63 + 169 + 245 + + + R=122 G=201 B=67 + RGB + PROCESS + 122 + 201 + 67 + + + R=255 G=147 B=30 + RGB + PROCESS + 255 + 147 + 30 + + + R=255 G=29 B=37 + RGB + PROCESS + 255 + 29 + 37 + + + R=255 G=123 B=172 + RGB + PROCESS + 255 + 123 + 172 + + + R=189 G=204 B=212 + RGB + PROCESS + 189 + 204 + 212 + + + + + + + Adobe PDF library 15.00 + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3 0 obj <> endobj 5 0 obj <>/Resources<>/Font<>/ProcSet[/PDF/Text]/Properties<>/Shading<>>>/Thumb 111 0 R/TrimBox[0.0 0.0 1280.0 800.0]/Type/Page>> endobj 6 0 obj <>/Resources<>/Properties<>/Shading<>>>/Thumb 114 0 R/TrimBox[0.0 0.0 1024.0 512.0]/Type/Page>> endobj 7 0 obj <>/Resources<>/Properties<>/Shading<>>>/Thumb 117 0 R/TrimBox[0.0 0.0 800.0 800.0]/Type/Page>> endobj 8 0 obj <>/Resources<>/Properties<>/Shading<>/XObject<>>>/Thumb 123 0 R/TrimBox[0.0 0.0 1280.0 800.0]/Type/Page>> endobj 17 0 obj <>/Resources<>/Font<>/ProcSet[/PDF/Text]/Properties<>/Shading<>>>/Thumb 126 0 R/TrimBox[0.0 0.0 1280.0 800.0]/Type/Page>> endobj 124 0 obj <>stream +HWM7sK%]@&&?3; 9hZUOUw?Jwo^Wi*9|WǯSI%{8Rҗ?_̓)IԵeiƚ{F羴Lja# \ԁꙬ>AfYNHe7 L-Qy Jo ?S Dx[UU x ,nX3Xٳ{ݻO%}^OoKXI2.[ϵ ^3 '5._8xi $̕Kˡ$ vX3L.U};ha˪n_[:jυziw1\D0-` UJ6L\ i- V!Cݲ#oA8xAn~#Ctfɳ=tZ/#p`z34Y_ʼS%kRsQE!Ʌ֍wiy]'Xs;44g+=rًܵRtMOFug !d9nr/ C0q:zMO{sR>;gO[JRQ a0H(u^3wг dU@N+?P +k) +Z7p}ZP::oH;rшŮq`dE!EA!}p XePCTM}z%Na;(rѫNj KP]y6]gq#"PL `?rGłE]sYȵF&-(ܕA3ɢ#;܀fJ!aX#-Œ:IaF i֣&%ğǛqy t\CAv0}|-4\B^@oM +endstream endobj 125 0 obj <> endobj 126 0 obj <>stream +8;Z]!6&ri*$q7X6"Y2P89=h-)]gV==PVKTQ8V;jHeO7LbUSqq4N1[jZqMm;E:O7a9 +[@tstm4<"pE8X(7#PVN.%pV\)aB6p;aZEh?#LL2+(1SXB +RRpQ9ULV)lbE5-;_]t66#'im?cEXbKEsduWL`EqaZ]-hDdA9NiPuXh[fk-sD6qqfW +#Y60eg8IDBU^e%\&Til$*kY6IlOoT,4Hso[.aU@mB#[r=@^V_H*hMu-bpZAF!;NO8 +Sa\=7Mb'k+EPN5b;l)fKX/XH]l(Q?6=!'4i3`41%ZIXjTqh[eE=cquqYKg%j2CNW' +HfV8RNZ'?>[nLtnLkpb0Pbo*/QX.(Z,SfBF%/4$t!LfeW/[m!_4@^Ku$9'Gf7*7+" +$FEqC&c(o4-:5[!N4EuhCm')Xnp^&#dZJ@i_e\WerBI:WAd,b6X,^_M-p?3ZkiO.U2Qf1PI]H=(;+X^HO6l65FnNIJC?/mX +O4=V%I-Nj0jk6j4SaB+)L)mP*k@iK[)[]m,`Z3gNL-etNs#3G4!ru0tWSm~> +endstream endobj 127 0 obj [/Indexed/DeviceRGB 255 128 0 R] endobj 128 0 obj <>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> +endstream endobj 109 0 obj <> endobj 110 0 obj <> endobj 130 0 obj <> endobj 131 0 obj <> endobj 129 0 obj <> endobj 132 0 obj <> endobj 133 0 obj <> endobj 134 0 obj <> endobj 98 0 obj <> endobj 99 0 obj <> endobj 100 0 obj <> endobj 101 0 obj <> endobj 102 0 obj <> endobj 143 0 obj [/View/Design] endobj 144 0 obj <>>> endobj 141 0 obj [/View/Design] endobj 142 0 obj <>>> endobj 139 0 obj [/View/Design] endobj 140 0 obj <>>> endobj 137 0 obj [/View/Design] endobj 138 0 obj <>>> endobj 135 0 obj [/View/Design] endobj 136 0 obj <>>> endobj 97 0 obj <> endobj 145 0 obj <> endobj 146 0 obj <> endobj 147 0 obj <>stream +HU{P ww/]wK E!.5p5Q"GBD%ZiZ3&IW5Tm$3m4}eNfv99s~M6mМ_孨[㙵|Y77ƞHUcξAB)G OSo2+fja'ùk!D P!Q# \a0G(KRd> 3ٲL3f Ͳ`Yf5/YU>uy\*OJWRWڪI܌})HN9s_^]JqW,8U +4}o}2B.߭G,%ӛz__o'B=m rP[𼛜I4J*2j"$6a$|_x)P|c}D'Z[4I^ +y +mIMh4vo-=[H8Iߚk,5eEC÷Q8D;tj(]{1wCCZ yb4EI%f}&!)#:)N9 +]7X<љhE &j!(b#PV"Ok} hLOHf՗1/b/_!)ćFEOH +{CA_ e$'.Z8K9L +J w[ԋ&7$]NZH3im6h+yBܬoGk z|2M&WIIwoW M:/Wj]]g[T6~{Y/L˟Ք8#o,v(2&sT +|R(Ȯ9q_ㇰQ&֩CȆv=HLBy?j,BNp DJ+A{9K*Uӄ FEh~h76ES0-)}2a-A7yPߤנwk.A?5N>S1s .ć؄\l3Oy^#O +3v +g\ZXDyDo +;1:hwyr%nwj\fLijoT;hiRKTfN2QCqXo Jʄ 20-Zt8 xA'=`嬜v)aJ ؂\mhU |Yaƛ䦏]"cCu:HljqT`#]obM2r7U>KAi(mTK7Syo'oQC\<8Mm{[F9@TW<}["sJn:s 3fS3]1*1|<zhF1t0YN=Tnˢk]|PfJ}pmC\FNKCSi |7ݒh i0^=*UU[KQ}N +iO4r耓:hM/7="^X(>g6o=<ΰbNaU"n{҉; >lAuDZ9> endobj 106 0 obj <> endobj 148 0 obj <> endobj 149 0 obj <>stream +%!PS-Adobe-3.0 +%%Creator: Adobe Illustrator(R) 24.0 +%%AI8_CreatorVersion: 24.0.2 +%%For: (Steven Kalinke) () +%%Title: (preview.pdf) +%%CreationDate: 6/25/2020 1:46 PM +%%Canvassize: 16383 +%%BoundingBox: -2232 -822 3512 -22 +%%HiResBoundingBox: -2232 -822 3511.95224586406 -22 +%%DocumentProcessColors: Cyan Magenta Yellow Black +%AI5_FileFormat 14.0 +%AI12_BuildNumber: 373 +%AI3_ColorUsage: Color +%AI7_ImageSettings: 0 +%%RGBProcessColor: 0 0 0 ([Registration]) +%AI3_Cropmarks: 112 -822 912 -22 +%AI3_TemplateBox: 640.5 -400.5 640.5 -400.5 +%AI3_TileBox: 206 -818 818 -26 +%AI3_DocumentPreview: None +%AI5_ArtSize: 14400 14400 +%AI5_RulerUnits: 6 +%AI9_ColorModel: 1 +%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 +%AI5_TargetResolution: 800 +%AI5_NumLayers: 5 +%AI9_OpenToView: -2844.95744680851 2502.82978723404 0.163194444444444 1098 1034 18 1 0 78 121 0 0 0 1 1 0 1 1 0 1 +%AI5_OpenViewLayers: 77777 +%%PageOrigin:240 -700 +%AI7_GridSettings: 72 32 72 32 1 0 0.623529434204102 0.623529434204102 0.623529434204102 0.811764717102051 0.811764717102051 0.811764717102051 +%AI9_Flatten: 1 +%AI12_CMSettings: 00.MS +%%EndComments + +endstream endobj 150 0 obj <>stream +%AI24_ZStandard_Data(/X(>d /R+H}w8&@K,wSRRfkM5= +(F%궰l -,T" B ++rp/7*w6 8{vHRHPXq +\L$1,$E^dZ>Z4Efn5$v$g4Hbv@+X`8y]$ mh L I`*# $ؐ`4lJwLGcA #K$H g%,QoXH1RpkHKBl I!@đjIX(H8E4jbE[Z3tPME==F2rq$ļ4:xFRIG$ cH|II_u IIHP I$$C"`(/HrRmmvC)LsϷH IoQ@}P$>MCE2A7/޸4 [,Zǽ@$F`41dWEYII,h aIR85(a c8!  W`$l h$(j8C@ +FrC/C +p!-a +[0:_^/8M:I(D*rl#I $YLdBx"P$ Fp$V@E*T+ +ECP‹ZbX41(\ YȆ6Fh4 rQH:񅃱 BH  $)18R%qP,raI0uP ɂ #I9S@bah h(o F5p0C8c*TS +R8#H(D"&4KX J8+$)`CA +$IP"/]͊đ$++f caB@2$jcH\LZ\$ P"@ gok#E*!Zay?B*IU\i6ٵw4 +$ߞ9 +I(¡p8vvukXưjUބCxkEȆw5ye(߄-𸆄cCPesZwpy5T|u[EVkZvjZ;9#*Ruoˆia!">3l;**]y{7TIrHJ'^~*»TԢ3]: 8V /hAX( +"H(XP୵Ml. -ARRG2R̼t: +<*&2bX$_W $@ׄ* u(hP2X4jP9ՕDFV^J׈|M~{Bt1?]*x/<+Z~;Q S:,?iKaZ]#ECe.t CHbE-Q"1 jPQjÎFc6A#$|K+,W +/0 70JO0 ł8c8;ԁs4 ±^M̅$0Ar.@2 e !N8^ P r .Y-YMs2 '*kٮ!$x\xA!r!,Y\&n'<*fUʛ^CEJi0w錆::SyoCSbX_%8-nqk\GHh4""&&*..h0UJJBB::r^[ZYXV. jl;A RPN"H,v ]"-j-P(+T +T Hb$q8`8 +G‘pq:ԡt$:΁$@P*T$rѠ@xH`xx@"($H%<(LG + H:Lp,xp% \P Ҽ\ 'K~ ڨGHzMTۙYh b QjQTj82ګB]mhz>eK8ޢ;"PI,ifú:##]uUx'Vqgo|EG譙fהU1zMZ X,KQ]>zK%xW;HUN_,eۻieԷg.$9,thwXJwMIC][Ktl㳫L?ś:#Z4UumR,XoҮVWKvC͖͛J[6'܊ޫyjz.ͱ,rlm ]27l_ ҏKJJFdX_ѹ4( Pă8XqVtsZr^1-t$Za 6ؽ>PViY;z3ٗY˾'- Ųog2h(eHXts\Vji҂,+kxv~kFs[Mnqm+m[zsLVYzu2KdYb5٭\{ZQT,O]UI$˒:ym5g۱-4;Y+G̛*vA+'kzCW/UnGN]Ю{!ӈiVnsEϹ"Z\;S-kcXEe{^V,;?y5,7Ut0~쨊rk6³ksrz8yYgߺrFkDzJ>z{ve*杻3=מJmEgoڎG:*?dnNmN]hUgʾpTՓVnM4yUؕK̓[%wu~En*'),/ZJ܆vb=kjmvXkiUN97淒bA:16 Ժ!yIYKe&ԫq8- I@$x 4xDJ +  + P@$.`€B.(.(T +MH{Tx$:0D [;*iƯrHÄ DHL@"I"2a9H($ID@ $6E"+f襁|⏈>P_TRޡ [uY)l[w(-]bR!\]ߣW̿uԹhfn)rF9-hfHGuG=/${@]E*Pqj$ֿG $YM63Owҷ樵rֆSO))^h68Ov瘬{jT:WmSZcz7wV8eCujv󓶇s˖PokVá6g|Q.'ɚO?D֜in6h4=ܩs ڐ]Դ{94͠!jjMfx6AgnQϵO.)=j /i~~⍈CfjY=OGWNZC/~ran;ceь6w-ӪaT㲴lݨnyZbMzڰeX8g9DģLfXcY}KjMUrYnSfd{UE ]+6brl>ugo:̆yI7j ZE{znJBιiYO-^rRM7~&E|ZiY8B3jXQу 6U^+ē꧊h1ω6 $dGnkM 6SV]7vWwjLk% sXGJ<հhtV(}GKY+5CD=BKM氎jzugίiGqȴLw[d-*ϦhXwG6+mҲI]ZV'yw" ]Ixs]UjXrF$ۜjK}dwt<D]{-]6{Ujӈ3RgcXEY 5)Gm\;G6.J;nm]YsTHmhUN{+ߕl:+޽6w!(rVB:c :H GY6VeN6[URZh!7,[]}uulkk<\9}K\2^t;j}6B=ZuYFCJU=D3:|?^(L vc;N.wEvfRҖZx8ؐ~:»֤iuGVw/ӯ )}߲檝"M{u73J{ڛthgʶh˿zx{zzJ>ªfZml\4RD;ړ޿4+LT,[,m҉=.ԄItKWU:c{gb,-Sε' nARuOZ䢕/4,3:h5Xy~뛪RE4һ%Wi&Y.2)1N15OV5Z[[[)+톖{?ͥ1x54V%p}+)ZʳVvtMjY{]#ZʛՃ?JCgjn)&-;X-T\̴|dXT{b򪶋jvx4GZƼݑ֪2z22k΅HWݭy缺l쾊6Xg+^U-m=M5dU*tϯ%+=iRʡm^GV>f4WS q Ni%'T!њ*niJ|7{5Y.K;~Ht6m+U8y.Wq3E56Hц{\64k(L8`1mLy?]'xkDe?Y5KK5nTGuVN9WE;:TXTr-^i٪I*S"j}'4ܺ_VT+YxߘPϘDC'ɬZ|[޹;u>U#רyyyixxKSH-sk O\^kRօFO>mV͹4yv񶊙xf&Uz[,M35:+t3BC3+o~SUWfxkxk(r]^ELwL#UP. +GRJӿ*h{d#sjLG^7[bHV{FUuUezDXUuGGvռꬨiְTx3RW +!Z0g IɨsV9ir=1,k]i22ɉtji%*t"L "+[QtCwgݸJNJζzXU~"$h۳ULk-QM<_]x4jwb'UUsީ~-Bjs.%^o홥h MV.{khϵR/xK KePLZJUCY+y9DWT@v}/ c:'KDUx.Ls]"јw,vUKEcdh[3;ӡu>#-ԝ n_"-1KlN6kt~+olwؗ}ѺݹVNEfj+iV6dCޚf|wҡth?'Zhkj-hG̲:LMz>#e~KkhOKv뿡ݯ}aj+]%U)њhҚm[XYtծ܋,/gh^ +gv7=}TѿYy-vLS+:Y-]4{V[N^3R\j.+uXDZǴt*muunZ%ae|YfոsEyO%ԝzѧjyD{Tjk2dʩʝ$[oz.|1~T/M]g_ Un{7]+bv;*i%M^S;MϤй/5K;NcV3kQe5Xvh3ώƹbS"e'uUL(qrѬw4u{.֕]y.;;r|Wrowp}LOV9%^*o+t4Ws[S_GBx8hM_yIE],rYNv5x:ՒѠTwju~o?K0Lc}_.&- VKuRHӑm稆g6 Q37o}.pgShp.d|`^]Ga) D^FKgD1)Vhl;&㌅ 6eke;iå>szWw4CaVİCn,Dlw=2*hY[DvCYK~`R`pyd^'_c]ʼa#M N.[pG:t!g1ib/$V[ k +eq"h֑ u^dEK[m-߇2$!k:X,v4_;Sdma6$`gީ`!(u :Dv.5QRgx -ε[轿]Nsl-! XQ%VE䊅KxB&NߘA mۿ9g7j݂ ć@Y +ts,qO2/¯xI/'$HA]krޚnnug XVg8[@.ieeb4ڣn2ouBZ-JQuM+@@9+Γkfa"cAup> D~U*>,`- owPee8!0JEhSkwmW\\Xiy Y] +f #G7Xrlij٤znx.hM q6pUMgo&}#PV B")M3ုs}z6z`]Z6+[6"6,#ܚaʁ3f!xMPutIWԭ+XvΥ0/!w?>;(U\涎A Meλy0Z,KWBbi\m5cy g+R BnB&GU6b{̖% q2@ۄ~8P8ʱ5K3*FM8$H׼Lgvt)JO]Q#gܪkFx(ȑ|  vvu!R%!qfj-,~)!1X.){ :˔DU4Eo9RtSwP{(4Oi +hp0i6n 1^]4']%oޣBDž?a a,1ƷWuO=kA~C*I*2~*)t 7BHqJ&gY9q衛F5a s46ECb[yv_D r O}d_kVPj([*79LDGNLf~/A$]j&=]2ԲS9o'iUv6FCUl7 I +/Ue4< #Y ٠\"35hBÊk}/lN +YAuLdɼjaKAU߯5EkMD3 j]Kkps~hYpl= ݘ!!-}7#˾BA% ]ž؇+%yMwĺL"]Q2HN߁STcn:6  p1_QWps쏜>3GU+Yَ.*YÂj|+f\٤=v7^O2mi-kı1t}0GfnGHޖYm; A: M 3BOYs|qAXyocJ,, [!JlgYZ0/{2yd7٦./V>]:=pi&j= j P$ Іh9I#ѐ@m WL\eE'jP@։P_gUY4Guq/z;Ld?h΂0߉cuxc:#J +Θu쪽ɈhB2j#±3] vXmBc JyvNsފu[;=F?=09|ZTiaja걺@PXM*i[S$Z?F%&>r5S 1olrJ/D(r˯f :9f~g䉈!=_%Gp>لXo;'Ɗocџj?K@Hohr~AHd[Nޜ3 RuI0*nB Nv!Ae; ?hR.MZg- . 'vGe$4 Ǥ76g1)|$t=dHr#CTf_^͈GNE< RJXKpLSKpZJF&urJ粢n/!w!7c#"9? C{bHdG''pR_|2}/oӾtԗVfPN +㞛IC$zot T !tkL C}iUssr|4xƹgVP@؞H4PAcgWF\,D3LӞbCSuz'bO^h4.=)2`[*eRX@hҚw(6S%bEp #Eu3jI@ڒFAR o-sd[d^ȠO *,"vӦ[[ULLq;_mB2?k 8Q*q xjGR5нNdӂcÑqT̿6Gja^E>GT$a%*K@=1$͜<KLe*(9%wĠ=%8XJV'63ZH얱qeCЩ_NJMe f XUZ&Bژ|& 6'sR,Mryfz8&gﷻ?sHN>o.o_j8v!&u/kثbz(BM˓M?^m]AҿƩ`y?.8S%MuSg +_;Zȥh2O@f1Ai)KKlE`aF.]勞HTR^V2[9UHL#kkQýt2ZX4wrDm4!!D>QGTm/m VL=؈>|*;̏أؔ>XAn|XPX2<+ {46DFFeG̰ii(׫*X 4qˀm穄?Jt2C|ϲӘLrN52"gjZK L DDs:p;85B|&bSfn53;%TMU niq;N1*kG'>?BKƊ¶'Pw_dr_wnq`XYjZUKMV}Odq~V*Ml';H_)rNHẹ‹,uP@zmz&Pu=-"!ogosS1MkH#|?'u(l'®Vn(QTEq&UQY";R ĐHLVkWTV)'B&_9,bË2e TKmU$% + iV^hFy+k0dJ@N}jSYzGRMLgAˆȒ!<9jb{D`uI@a$+bi5&*p(fKTNY02`!r)@\\-Dj\Ui2W [zY w,hi/Շ #^_Y$`A0%Cq:l0ň"Xab".f1Aݒ#n1!17 qFdBO$>P&UU'4]O(LЌ7gθ|gpFFxbiЉ6#}Wz"Bs!Lp5AX'o WyM + +I dlxıbb:a\Gf4bd6Ȫy5λ9rE}v48q8'pٖؗAFO5җAH'f-qŜT+fCCsbUm\rIꤗ4N8N$ uuaM;738ΘC+ ݹ +빪¥d@){W4l^:ٹiF "=r(H$=O3 v8Ϣ4IGOhn*v +[~DB wGǹ43BaT\. %}[Н- JNhw̲$~E +;9pQ7W:ҪZ +ށǣ`8OZwO4'~Cʟ<XV;6V}+nlũ:7S@GaY$PZId^vH->J(D6*{P й{*%$X V);6S(~M|' DBŻH[BVދP֡'c~wD/ǓʮF?֦At0hAndP@eGj6$䤗p^)n% *NqkQVKhbEdbPL!}<WTXlLTGT&)_إH)lj,H{U, mO% 8 XrtJnQJZ|킢)ZCV9ITgrցUv{$4X[DkNPD48-IߣyyJ; eE$4@2 uM|2G 9G&3=9tokʺى,g!U?d,5Zd-{^E<Բ +iѵ݅Pع+$*|&P* <׀$[i%VbCdn'4.D͋+̃{,/B!]༯ݩif5'zBZ7X q]hʘiFa ؆ B&z\ BE'9ӝP]N$;£o=!KY6ړ)@tf& +{B5|oI{j.{ MM>ŷi +](#7gSH#%`RS(hb%bgOPI9֥T-!ºCVëT[nF60ϨLGx]}&#U/!\"^ [ʍ{HGX8eXDQƪ<za_vKBՅ)Cnx /[Av" U;6)j7L Mpj (vnh{Y̍(HS߄:ʯ8:23BRiVEDys8b +;AlTt=;Qxi >\($EȮY6F : wy0c.x(x'-tytn)Q"YL^3`+JcK lXv ٺ9j=> )XqxU-JuY${'?PҨ9VY{_"!Ԏ{#$7G5{/N"9_~g)ƥj `Vqp })ITu?A8˭|Ϭ3}b3 A8 @hH.*>6b .;A3 H>Ֆ&JNAÒp~玈/.u:άj:_vؕ?,ҎZaFbSM"Ak!Zl1z ')P1NTmWXqpXV5ߞ'h"Fo'y!?lўc--U1}K2qϠ2DO[I +o#wYU!u91]yÉ rgQj0f#2+K!B S!w^${aR?VjE-bRkAyJf'Ѻ7I-qGh I;k +mNzchPD¶_,䏅nw#34I j34Wb䔙 |"/#zyEg IWoyY}STISWdCfGI!na\ӪЉ͜nssߺi6XwHڞcIG q ΐ%Gvc=?Ɓ-%> bÆ`3J^D!B'ߊB1ImUز# EmGo[^'AF-i;B* K,ZU%wV/bv/Ut !m/E!&#$FG e3Vb@ 㰹SԭS +)`Ywtɒ@b|ʪ eV\85]B^0xЋ]G5dgFJ9ƆHcUJ +KHK{`6Պ֫8 2q\&_E{Qy5j`yVBENc/neem\87YC0A?+>"5K=ԮY`Mb6?41QnH? @TlG MRKފP.UViP:L-ڗKF^nM+d_-HInp:Rc>U#'d74*[̠E7L]j r a'd2$O/{eoBS+`q,Gҗ%* z&4]f^(. +>66S;׵%ɰA}_nV29S 3erVj- +쫾Tn ZQ1_q(5DYgeC͒/,4T +p,L^:˖I+b~8)SPGY$n.)Se%MS}axkuJjʫbiuwJ4t&oO<-pHJEO3S3yv48 [)7~8b0TN⩒I&u ԿYWiX;m,Me:GŪC.H"|zSTmuRQnH*LgZ2t‹s,IJjj3mLfCey ٌٯj"YN! +g''b&ye6؅\9' V #E$) p\ UAVc(-ߊ:$ͻ3* {$aquf1`hd/Zsv:# +$$KFrH5Y ~On''HN(./-K\ElGsbH;z2-#_ԞuYO~kfVU{+h+aTb1l hvC*x~f~b O 96,6c;'I<@qgG%Lp E~'`^a +63_'W,4nZފ޿iYIsL0*o.TRU* +cbiXܕuis0͘h# _K%ƌ8\IBh{EG 1sƚ.S~oǢoX :G/Rqs},m9K&)_ zHG}<G^@Νn,ya]~ +P6 cBpQܒ +BBeC)WZ< =j8ɯw@S?GSw"CjT03ݹA$]ԑ1rZ_>-3ԠȩD2^Y(Ս-,pB޹ZeX yRPX o筧ч$T1sU,L%N(缁򋌟uwDzJOG\VеL5tV+n[\jo] +[l_QG9jGf>򁬫 aՍ +"SR#1}L9&/)+j"Z8H2RaUGmEX.F1X>erm|vOm8FMOЛ'`4k@9C:S1sBknmB JYqnZEf 3y4ANT ke +zQj?3놬Mw$RM:ڼ2g]ޅKTAˍ]3am3~nY@GOqP4>9f[JUq\IS;h3tusKS~;4+k-pa)ZK:~F>~3* |N-#+)NeƆL`DS?GT'"TJ{aU($|DđغAp>|pܫ;x[7zTj-No S=ⅲ\h=߳2DžVRH^mW۰Wlvvv{K@F =ЈNnVOqҡ?> +ۄ7d/Hݽ-k7Ml=bحb;K?؆X玟}t$o~SiK㕯qm#-\'leԠNE>9fMEDn)ҝf2.Si3\'ٓ~h6KT:&+/Ւi*U +t="%\ n2޸I;it;'x-WULsC}8TcSsWO;29 +濃C~b8=a"V^JKCw8'iZ*Hi{]E S'gX +gRû2|2]Iz,-U5tY* +x{:39DUmMߨ>A{sIB8zT(@ocoWqݿO/G6aM0NPiCQ K< +듑!܆2jJ&6Qlk,*RiML&Z̞ uDؤ 'ƹ[NC3JV꿠`|XYŖ嗾2+ViC؍Q;#f;)]X/6Mϫ O px5 c$;\doEVZ?# +tV +Dvd1ųdTWl[Ks]8ۊZjACVZIHDU:%w٭` +SEud]ekPo%V ;ŋTR.7EO4sj VX +Ҽ[=hݶXFU@dF+_)DF=?}=HMħI3ؽ +g?k MvBPyVh\]NHr*+FČ T 0NBuڝq5c0Nl+P?š-xwG؜ +M{%B(%=Cp^5>UDYB0V4{`L[xk| HĂȪLϛ<\<0\b <2ϨÜ@?Jp +FIPFmC<쨨 Meȝ cJTG;K\oI_x +HIz/@u{“/bv pe|!T[z!:9 !((MH\?Ig@: DSd Oq`kBˤŏ;vO |$. >d4 CT| 1@^L J鲜w5ps{&'\n4Zqj94VbbB|cjyd&rȩ7屠#PHGn!OkR~Ћ¿W,59GGOj(%f?0CI=}bxə6r3׽XvPR(o]Ģ=ҫBe +z{%s2BϿi=++L~N[K5, "FQ= {˜=J#6$JٝMu8C79"aNeiZ՜{zD6pz1#6,@]M>W:,留>g8K _kӧ@o1_ȶNi|D#OFx/FuP:*-9G^!`@ppz;fWBB8b9묣U@Rd!ѕ>?("2pRfqZx +kK"ʽѤ53?ҔVQjej/CM[km* {39-۲yVn7.ޢ*N*j ]q0咜[?{Օ!ކx1 qIJV]f紉!xד ƼttA>>TBpǤm)K,qM@R5N0QjdG M+^.bTn uޅatTDȢűF XH@0Q6pXt +XEo/S hUin*VM>߭fձ^ WPNop|( Lu[8ݜT +0C\-̥\n>xq@[k  :.YJ8y8/@P^USC" 㜥V+2,#]UC @˾]w/t>_tkag|{T A/}"/{QW&aݩ Gb)5JՅDѤʤoD@ Lv@L+s "lsE$4+"la`!$J7L4P7Q-ڍ >pwNH'A}lJ. + &8xPSԁ4vJ@ά`FrpH `'#{*CB5|̫)##IP3ixzX1م4LeX!܀t~4 Ha錱afiIX1 '2̅x%s݂KWz/Wt>,k"6D0X |t Gq t|[s|KYH߻wHݘ}Y8z171aI rOHy#щcy] }F +W~xOWg%|ו>t6'߯५z_ף=RդE6mt ;BNd>oϾ^`BFjzJ_b^G" E8$60tŊ,'?Zvk(78.xX'{$j=C^Y{7MCJ(G{:BV"n%pW_; h )'Ī +|PLs_VFF%:k HhS۩}j fC=Eg0eގSvvBrDž ߲FNjbdalS(Ad!H &6u&7̈́~ = ("k ɝ&@>uma,Й.0kGNUYޗ2 +_bRߩp˫V: Bbΐ1v5oM"CQ X%(yB5Q;U2KѵԔҰXɤu\ +ҫ)TkjJ,R"͒"EjUu O|5s?g 0P4~ )ILN^09Qi1M7sub >14m." b4#$Q!' j%^fl,B0ֈevq'#TM(dL'$$$:Ѡ')i=Z:nH%̙:poM@tfP|Ŭawg$B7]O˯{tKDE] ]j:k0-7H'bE#hv%-j?㵶FӖngdK ]%S>GːƳX;Z\_.pTV Z C\r JW}f,NUdJB!%_ +Tr_!گ酎(p[QE;ܡ ޷H4vP32ne`"8r<<>xUӡnd.y 8QB-[m7[stq)',7N[_,4A2yeNS6ɫ d6&tdKmQҳ3*bKx!5'dK@g{!җcʷjA,RYVft牼nIdxDzY` KXf&pQAw|0Uy7_q=_]!(4~"N(7EEYAM![M *i{$42 (zll^RԠk:6dZU FN'Qs'qT}͍/nH! 笭9y_q ֠SAMM<@V!4]N6-#1>ޚb|giMJ+V)\mg25Ca Hc}פ#uP*N)+-0Q29A K.]zZxop96>T; Ŭ#TX?" {-Kѹ>>hJ|GyXr1gG1L"OYzG1zs/C{IgLs9RمBjCFG8a+Ibc!_,HƕqR"u>uhRD]˷_F$JvJ,^!m-n7TEfـJu{ b&Z@+SxX%W +2!7+6VR!'6d=}SZ%GE87 z HBv[==g 1ne8{R\6d9sSq'^Nf u/f滶i=YMY.JŦ` N USfl-]dZ6y!ճH]4צ*[y ջ#QSfmTb-G.ɌaFդY-Ɋ(8ZJE/zLI9Y 5\^)% Why6~dP=$co7ńp48`C9r'77iŇ VN@JH}Po$P%ސ6sMu}d̽>,**Vf_#K2WȱkF*KeZძO{R >_#χ?v73;OU{.a^B;?Zo[٬( K;TbcU%8EdxylP,K;0jsFX +t&l邖,]Wz<5DQ]KA켏1/fmUT2Yʪ. -F*KfD >B%rۙ\UekX-ǘV,PgF)_Cߕ&"KhoZͪ۫0g]yhn`Q\TN͌]πrǟ.p<>\.R 1Z)<LuU P$b3R$m)&ۜ1M߀Wxƭ]En0 ąV*L0M`R27X&Յh+::c#GLU?%2NJ]ބѼ'v!2}՗\w+-`ϝ:~0]>" DWך%pY Ps}[>D 6' +1fws,Ds9x_!/#4$P1)6I>TScŁ y NqH-EQ& P~zpkr/vJ/F% 2W^^,%ARM5)rbO S< +",W}1Kܨb +Ɵ>!MMtT -/X?&ku@}26ZTbby_İ[%O?*U"nB8bu7kY5> j߰ +VW\NdH1GorfpT _>Z[vv-m-BQ[8oĻ7 6V^ ~_'mo?Pe=NIl]?RY 2]n7nwpp6g=Q u@ȹxDQb'zP+BskR1k\=`RAR'2^BT(#yh4*4}>v__OA_/Q4ODA{}ff(U뛙<JM!A$"C.zC-=b!DSѸ KaǴHPoUzCmIQ!<k>U꛹(պ7CG]Q$J$5#DAJR}aʭ#CwX?#)?zclqpdٲ o`-Cg~P%MZL.JFvFsC7^jY9*0f=9 AOӡbF\65"7(\=L M$,^j3CMqZFGHj hm_px?Խa#( YR6^"V uQ=}ۨ2`S{)jVpXjW` -ۆ^Z(Yqce5[fGԦ.W4Oɀ!o/ir]US ǴptTq5wb\wuɋcbC,]~'sM/>"'U8/{YKl.s.PsI,\+֖;EuEs-U˅hv-+ =LTz(]'(p1Q3lD +\Pͱ~/bJ,y, &zv`AhתK|P,TI6JOj ^ʕ<c==47E Rmf"%!IPIl&gxnƬ 'j5A(5i*\*};RB2p@<=[lQƯgqqƂo`E"\|$Xyx%$靖[ (Im>bN9R0VQC66ɮ_OX^^_%*5?t/eP|E# TfRdJ]I}=^:'2fƞ竚4'S*?T "N$Zqy+Kj"hlDA5/RI3f^(̸>Z|8kSSZjzP +h :jQ%JL5UTl$jShHY*ȹX7&:WDAfe^QfzhT(Ɖ*x -(>9j^nB1IH *"kpQp\0rj#WQPUBȪNUAސδ<*k~PYV\CHK)Phu9AIZ5ld|0%h„AՂH5OLk$34!B? ҄ + Cb*f`X:e>SDzu'TD1&% +ZA $.u#!uH1AFLld)_IHa c%/$ WEzyitDՐSl.e 2M)9;<ք(BUPLUO,aRLJJmf%}.AXez5\)`#z c1d?*sB*19L :HDAR9ُC6// NeLxp;Eܛxq`O|q@__Bz=u_)J(.upPK\>V~Q)c,Z$H~Ub~$+G|A@kY0` rԼp)AyA?Gd7bRg1 l-8&PS>c]zcaJ1hڑt,p4H"XUBHOVIXۊP0j2NwM Cb^B% +2^DvhШzE+X+P,!qkIDK,"<+G" cG!^Cir/*EJ)%"eA(Ĺ +NPCsSFC$PI+AMO#$2Ԛ%=(D%$RBR_(3 g)ȥBؑE'EK&li75Z=EEXVLQ6P E+h0m O QA)bRG'U-8T0dI9tܴ'`bn +d<0LgeZR!7iw E .Ahǿ&?>L7aćLEԕhPx#2?}ajUTcuJ1uJ5Iq3 1.@ @ X@48L@P`Rv@x1"[faLo@2"AcTK/-#IBSXwM +FȤ@#67*2=QgVJmB&M5Ӡ27<+k>;!C^7)r=̉C.*d7PV;q`4-{53Oc!8qˈ( +aǀƥp 3Y8C'BCP|\YpnpMl큈9FP>0^RQb?̈́1ߤU=QTt{&&PTb Ql&Q02Uk?m-O< +Ukm"_+$_]дz6q{^M_2 +E +Diq"$ +ңHShdzQ;Tlb(jN,FjU-dFGL +U蝊!b2oL hF'(Ea?K~VCUt^S0Jlb6Ʀ;4_ejtCPgVUWQLL0.0W]?ym~`shH<0N+% E<# +y1ACG3g"и@*$ WWm0B70HV` +!hpxn"J{4^&T1 + +qj&'SYV b7ݢT'q` js,C2 1*1Ig* BQ.)S0LTNT@ *>O{Pa\} ̴flVaJ A$%M ݭϦ #=/#yX4bZMcQU)c8M)^«I2FX~/طbuNCfQ8mhwPj6)nĎpѝcQ fT}"2:4+axPf3 V;e ^jJ/t;3n_*DhGHҏeB䐓& A9H?ִJ#=(-ߚM"%g^ߪPJTRM5=*MD'FB6ktu@4"BGN")e'7]j]-LCLbhdXf0*z.ъVaV*q*]]8tQ@X`J2b(!F%LA -9g@( 4{t%S/Y e5"qp,R*R %a)-H )K://a_W-nf)ć23j 7-r qh;ʄjk֬ % "bDD*A$,5B.|( р3A0ApP02>-yB A!,a:Nۦf{ xQ! !bptr2/g<Laz3/Dڌk%!sR$B43TaJI(I0` +@ċ!?'LH\2 @m/2 #A@r!rD^mCae؋%2C@@38\[P%e.~DmJދ{ 5^ښPe75+O +w%E'VOUb3V}Q +E"Ev{%iSZC9CB1A%Qi  +`xeqGbA5N5jYɰZV MiFX-\1]F5ŪKb:\c7 _ܸݕܚ5NXTM,*N1+,ԋ{<dzjIy !]QfN|iHo[>vug`t$)XkU]&@ZI`i!Z Vw_CaQT->t9pO-8q q9#o1MOt6ӕI(G2H+\-8J= 3 䐶l2 Jܬb I El`2񝕈3e?S?pD!鈂Dp 1!%G-f)D gx*ӓ>F%{h I#{õ^$un'2d(b#+7JxmXEx`1qRrՁ]Y}lq"'xW!#tc{|((W$T`!E[bEK<"Ho f EkSt>NӼ|# I%묪+h#lg9}6y_$LL| +}OAK+8[%[ ngjtMr%CW j1YxDw>=JО:.W.38;ɬ5:vz wY_CzBzARܓNw%`,K8It͙͘ Kx#Nd4FvϪK7>Z:r+ŔX_*U`kYF %lUTWpњm6803ÄIpWP64-Bį=+(TяٕzA jve>?"* -}!ÃӣxWHط\;U{n,ԏ4ϬC *HeFdV34EeqZda0n+Kؖ`ˮM״I4MdFg+w뭶5ۜ Ilŧcz5Z^$0kfYE=.W=UՋu%(pluD$ݦdRspF='|l wQ9P2\:y\Ǻ\@R$p3. 5y/Rpt Nު|1RgA9  fmb|b}NaBK)xe'>'Y37 (!+B&l +XP%R+mlY!jhr*N+‚LjdZK_⒕9E=Oдl-^]bjbZ^q[!rgם =@iYQFݛF8}TLa*B;֕.Vd)%L +R*Ƒ&{xOb9 p Z(>c/G=0PQmH!E EWiK.H}8E +$5z&#@V뺖׭#oL;JF/֧cԎWqv|*|dETQR &$cDfIv,ׯHd~zAd-G3'mX̃v ( B%Q~jY5 +Oؒģ`X,+!8. +xF]|g _rnOJv1/gZ`FF#T"̄8w>5_%eYƁگCbZSb0ŖJ.__{b,^D Hͣ +_7'n_^'+:p#Ϲ"0nIqSĿ&!2ĽZWGt tD^m蒇? *,CXXl01B;?/_nzީ=!?o2̈BbfD_A4QH`].&6jwwxRˇ&uC|"?DeJ%z,Z]4 Xrb3"HK{я ;pwqSecPwBC"I QVCͩQ^r$ TI¥sQF {+?SŁweYIn +pUXE3'B%jxL{TzI]* +іhQθLUn|2zi»i,O+5~dZEAbu66ȨDh0.FUd"!FF &K*J >_ɪ4+Cf%idFLk-  >EҾᗪ!.\oj&v8Xst蚾CdE BD??9wep:?`g͇eۇRC|C:8v@-CCV+!:'HW&;p8ҍ H`_dx=Ӈ}YtT{oZ]k2lة2Oɺ>-rN-+jMsP@rFN|=%A*;|iP a0P#;x]<@? 0taf> .'It9GÑ[. L +0f-A.YI199!ڜ QNr-߾`"@9':D0'J8"j2qD0Փ(BRqB\EP"s/thL8yFxkf i5yDOG 'DIqv7YvMʶ 5&6Y$d~P:+%4&d Zۖ`T%Z zFLh4ME&v&J9&+@ Ϥ M7dfםj"3 ~tBZ2a8cx +c"bODaNlP./*:ddQZQ@E[ 0  qI+E'üZ` +qmY=$hIL+p, +.d:,\*J(P3!>ϓ#BiAt%@ZY&o7J(yҨ$b)Y,4%aᯔtXDJȏHPqZz_#J 0{EqҢzK&-IQIx$qZMr-IAu[q%a.6.RBI.h.$c$t<|"Gg^pH>Y/g$&y}*њDCX'+B[E!AgARqn ($&gƉ +- ƅ~dI \bh"b(2mcGw$򏱫#Det$y$k4#0 p +7reF4_h7uHmD4c#k3[#ۏ3)jc653&I#}}nFzrFc_24ߕF!,&F`+jPE95"!dѶNZ$X)\wFܹ"0`+RS@Hlo aX)Ҷm"oc/({X,nX M*%B7|5BA!څc8Eq @DGBDrs:<c)χTB=DPCyO89xC>]!CeRlHct + 9 :#C\Gb{eLj]ȐQb`A6wDo`yw?R) 6 +ҚE%DxJB%bqc!lf!r=sCЃu! A A|>|h3Se܂LB̬R 2O=E`y ڏ7j dc4h?x$`+dHC Ni@ ( P 1I7A %&f +)+Iu(ϯ'!(A/Y&D:|CSAjbp # 0T%3FrlB`gDCWQvra~P;F!g#E 6~r ʏjQ'a [nvyb};( c Շ".}Tn6 S|J5 xˇ;gY#t(| >4D캇$ICh\EGuP BB^7A)Cz"1퇘8 }q`D\ւŐȩ0"]q/N8H ǃ +>HDU7o͡RԪKoHwC߉xۍ^DT)29UƊHyr97hEnC cmVFԮ Hj2x6)7"lY| `i92(#c;Ra{ G|ɅŏlxvWZ;@5NS6!Yt5qHh1$0HF,#4f$Iݜ>J4hIRb${_lgPuّ'h솒FGfш/%q#T*Sи4]:?C1,a3b3K D$۝𖌨3|rFmDpїmlFlF0YM8tB33#t2>f`a&! &/Mf2:&Ԥ9!XZI4*6ِ2ZwDXʶdGF(j"#\!Kr2ExhAWc, WQ1j6'Co{tRPX'2FzaO.FvbFG>1IF !~Lah3qį ND& "" } d#14U0`Չs[^(WoN/Ey|_-i( ) nc z%z!yacN4ŻË0d"Ś`vq{].'rEtbp.BE~u2*E$2N`g.2\riX/.Puu2,J;Y[,lYU׎{Z'k 6ɮE~2+QݴŷjQ?P20(VqeaZ`9p=Ze]??ZXO> _egEe]QZ* +~ɂ BEcQj))ƒ]Ja+,Re@FPV +?gQ@+,ZAH̊``J%40TF}6BOWPř׆T**TU⬊_9Mf;ZrT WTTJR`eT +HT*$ҊPo)l+kwʶ"W*8][ڕוŸ*"N)H֊z}e +>U`Q) + "QdcQ|b! +z0PX(Z+^DPw(Yz +P-i(Y, +e$P?)Z̤EApqZD}NKo 8-++;+Z ^}hˉK}]zhf"xǼpT"VՋ#7%!256lC|C/:DS%~A!aCL +0vK]ǽ4[+cЍ($B&>Bw0CcAD4atf ֠a Tat(z6 @̪C@%1#E41s(;a**@#ń.)? Xߘ4d9f!KǴ>hTP>2ժ>==.ApɌ7@ !l$=xEeEm22l}ԃuߟ ~避_0X2Lbf +$6`$f2ff{Ú/wt1q;xDgi.ۙTe`gփg6۶glSA#ԁC 5J;CS`TС0XϸpNպ2s4bKN9 Q1ʺ\`ӡ]~8}~jR#x8԰*QMA֪EVopjF|c@kYnȪ5º[27 k tn6,PtFlLaX]eC̄ϱ| +0dCkp 7)! +jP 6ށD\KmDa[نhXm v!ẍ́?C'\πLzܨjlRal7 i  Pyt#dߌB27C8԰u 382$¡c+f7h4gZ)> bQ<'(⬏8 Vj<8IC +gܿ` jBpH &/9$P.yƄx,Gb.ĜtQ7$6IRLsЈ 2^߂-:Vۂ zѵ@J4#<@tJ N YHN. Vg(Ym,{Rb!,h:$ +yŽZ`mL +ؖi\CxvhGe;fdINu& w_*UxrU-U*:j;[J0âT)ʝқn@KR<))b#H[GhFKD!; +ݝa) (XO?!NF>b xx OnxT'$Ü`|K&>.6lRsJU>Є3&OqcWM0>.hB쓝N( rϱ1m ?ʄ01O9S~!%L?\ƄS)&p?y 6c%(fYWM%柆RG J?8 @$` PMBՑ 'PN! HHn> !q}Ɋ,*Bia wJaTQ@;x#+&9,Fv^ +F v՞XT3ǍF'5B:T!@D} ABMWnb(ZG{hn.BpF@{ +jEdf3.r3.#x3E@5B%M̿uWhBuk]iJE@V?@a ˣp\J'!ĦEt\^8̄> s" +,iw=EЮSZan\)SO=Lkpզ2'B"TxQ0XP]R"x4sZkPN%?"i%<&.?lL2BjYYC EDXsF4Hɷ%[;^e)3&D()D9jaˑ7"T\T@)z"xh_Q8!`Dr+:_jf2fǩ,dBѾ]8SC +ҲiRI~jLrH@١DҠL;G{ݲ[jrE7sA+6wp 9lHZ.5PY@VK¤^:2 .2c6pIvU0Y'm!?XX`욝 /<ly GEh8%}p)vK1xe>A,ECw_h{irIh~[(fe^g/莓:UyvRn``L3jtS;s*\x ZUߺ#Hl<d!"͕1WoR*tƨh5VnLE|i,;9؆8zk8@'pPy!~AOۃzj#6v`%Fqnqm<Q(* *$y46hRWdh\տk漕cF a:Ud:_0d ľiPjAi9 `hJyDczzV]B7L@`#‚eS|H0©*M]AX5Z4Arc(VP_Fnbu%.9U0BUz(xnx:gI)$1|f)h KAy!e2RjIM:!Nd:ADzM( BF rtPOJRa?ٍd`@XUM5COZ; Na=xb#t XDlN`! +9ܨmEJ0;χ'—x\,"Nm$$x]2p";kT 6a5sG5rJF ]| R .e)F|ÿ\/- nHV<a$k=j'D!C; +ئ Ny_^lGUb uny K qx$^+a吲w<#o+:4@lӬ ;``D~LW|6y> * .n +zWP +fZ`;ن/^$X5#!nwV A, RO:f%et` n{9q<{B $E;8X7+ +UMQ `$ewa6"rdFV!=(l؀W(fpˬJpi׬pn4Fs|/50U@h̫ h_ԯT;6&2n_ɐLna 7- TD*tYK{n1,0.T]k O.9jO?@5KOb)-3Y$ ;/rT D'hqAW)WVJm ~T`57TǦ+-Iaxd1EEE[Rz0I +$6a2QfI,X8 lğ ˎ>i&")҃a8YQL$mR~8;K٘O/$g?4E1hYKli#peur4Y [,,[)Ply-dm7""2!WjVdX3: +pT|E$[\]W~o0KrNo{\6&N +pPxfoXĶ۰J9| q$Qu&~u:@^tqo/7j1? +c,~S Hd-YFdn9brUDԡ޼=`hrUgR"|7α8@qڟiR-ʔc Y,Lyſ2qVvq_rIl3^S){ݟ7{NtqrM PUK)JPCHwpQW7oxݓ;? 梳x c At +\u:owV ,t ,~S6(?6.ҟXᨼ&iwzrB)zF>eؿv Qs:J.x+: 玑ߡ-&s&[!0oIc~6+r@utŶ Y%馰ղD +Q_ݛ=kp`;ԾҩG7ǘ#lz"v17@{9;GRTRwI_^5o{~Kkd(r~nH +p%Y7߂@5iֽ_"Cf `׌;<3~ *-LŏR wiy_d*ןxKz^/HN*3U$8odh},pސ9}c xZ 7ke4݇YEEL(N{uwU{pb_*~SO#頋05K0u%Qvi$?m# +Ы1)^pIn}?*  m Yߙk~-sg})zg'pȯ!Cz!R/vN/oٿmi$:|k~xi!9vLbWElq?!$o_2. g?OBlTCRX}w9R'ߐ@8>}J K<׏ ]/׳TVYmGEg lnTn KӁހfN$sծ SSi2-P`yEٓ׃QϽH}Aax*zi` }1k^ ;"Ւqw~q!&},۸PĹGaAM>j>CdX,jg8XuY@\)Ӳc,(aYϜ`t-4SC1VңrCIy>y$9ç!]}H;GI{AT{%frGu4㽿i +"@w7 6Yd2Ǐuo|wl^Gn%4i2qi{ Ӱ9'=–uɏTck@n+RU5VHrb^{XW3B5j? <1=o).JFIОh7hU{졾+QZRa}Cɢ& ",x { +z׹g{R篾])Ȳ7Y;㢈~F/b^>믚#`vk]O +3fq:"[߃ޔ9h ϘOE֏A|3ޟC>'lw9L*[ReU?KKDQE7JIbcT=E=&~RF/PﳪN4ObMFK' \Jgzw$j4NeeUz,-aҷGQ7Z F +Zԋ{:dE0X?Pr[ZbPCUslc 3Os'ƺA˂J$a~ /6`$uS>ok/d8nյeznөuwXeYDxJa}SS}|:vjLeQ(%kCxACӸW[# ̏M:Z51()1,矴ZZ4Bb^!ky{sgcRT2 _O8퍉4iLX^Kdb:ڃwabը[A:\[['h:b +`cFPAxBIG%_ppX1+|p:c?l?~C)# -3zkӎw%&Ml?t}@ġmoۄ#jA"l3Ri}?1\MoX|CRdع,JOi؜@6P̉K" ['qK(70x-V9dLsxHDM%^#Bbaxm) ,g|L/-^#\ Exѫԏ&~1; Ӆ[Ճ}=߅,GKe |Kńm>͜)yKaW"@ Cu.*`)o΁ǘ]PEl  8WYA(p]{wlyދi)Za4*wb*s0 + h tw[֍T5#hI;l5:xwhu"}%)q6Ub=RDQT]5 t >YTmg՚L}M9}|҂6R1Sگ*ay/A,9́KVT$fFPn~*l&8oAJ{[pa%>*5⏠>)3NYLF$?t"u׊PFH[Ju +Oq6KƷwtgA}wt٩K덢UPjP8{h:(N"=WfrނQ?u7?+sAT +*Zz-᠂zvoj.osH"{?=u kG[hfR<}j3۰ +L|6:`dTUtbW3>,5.DAɐk=5 +CD9rsֹ#bƤ~m sTW0=ҙF熫t>X==%3>! nge'hO3ْX{߽U&ddUiD@Ozͫ=yD]Ǜv?ڎMffG%8E"5=DƂ +v i-Ţ9x/(d:{"c/8wtGJT <_6}^` 1| +{__ZgWmp//<'H?Z+kYQ*qjfr4*Hg^򙋲̀t0 iX-CXMꕑ`ctj[9VH#:4rόy93z[J FEnC|z忨_|sf|o5͒*SM/߀Q+^ڠ_^ RT`IeN5M/6~ `"ɂ4퐮sz"- @4{n~\7GcJ̡gZ 5 uWð&?̽Xٸݻ>t2~kWoP9̣_xWP:8T0lKޑwraσʣD19A[}֦Fyy ]rK\uQD\Ivj[r wb1^u]\qjoT}ҫBћY?89s[z0%JÜ`N0N@} Uasaz" "E0oFZJ0X`Q8`IzB䴡Xg8 hSg3TaJj nDձs; d4I0#͒9b5&rMI05 xs"_̏pq1'17p# k~l3i'9"p JBruԎns ?ҟd WzҤ\eJN^ML[ sRR* s Xs}gcb],'w3|=xk^uV]N:UQ:8/>TL)Kǔ.兰@dwA-\KHEe(IP'o- "zv 65yBy˒g} ALeGΥW> %;aF>@ҵ"_({BOy(EtWt"rCg*1"ʐOMH? ƥZ@nsΓ xFP_E+>"?Dɹ q'r܇ĎD S+|uvLT4p7Noy )S&X@qi~$較_+#$mz2RL.]u01/z^aH"~㟷a%xzz^B 3хAW  +YS#ZKA7X-w:)~߼)kq8B:E%`;,Oq7:WJ\څX%m݃JD]R,IJS{kT}AX;}j?=߻!A0X./uob.H߈&|bW9{׌pw Jqۢw6>0"ꍮ%ud6dGv<A.TEB(Ry dm»exZ +4Jb歷lx^dơV0 |#u0λf^'4A{un:;'*`<ͳgw2= +Q\j_XRF׺3(͞7͑Q7_WI!WQm"U Aj9^:Ņ7~؎x틘vrN⁇ad+ uᷰqv<$lhCK5V!ΡTl | +vw + +lQ4|*>Ώ5~ %ztI5VeעNyN]UѸhRcͫDFT7ѐ k. +ZȎQ +w]m^=s`:uj=-Xi;kuۉKlW>j +hٞ#u+gJR=q$z +OWr_!k U_^_#\\nn:x(ڻtLnƻuT^`aH,0A,t ˩S5cU'Iq3ځ2i^AT`?0 +>)z  (rK?ր/zj*k5򧀁uܐX^/M6̝ +EG1p^ol;$(ۭ5V2JXNj(ז}/X{K3z%j*+ʏێ頉l+f֭ȼʴ0,pØJ*+fSt`ZH7Y*)*5\+?ZWvW}A9JUј_|LGiaf„Tp<aU +ׁoe0TP]m*îY"b?KMHXA+X ϵ2FDbo͒]&?Y*j qz]P]Ur\^ZeqUF'; q^f,8f MgqäNT͎m4棝t6Q3J+5Ў363c- +ԊBLɪ=]Y 4Tҽ-fň!:e;1]&qihޖ]d5n B-PQEVN0#L[ 1 [Ά1=#[۾5^t[B\OKp^ƈۀ.X@k\](:9[ fhSo?>yKΕb$)gIm ەb;^)iܻC𦪡IIx:x$ܛ.V +vJk#h|^2=N=[+20Քk@~Hi$ߋfV]dTId?ߞFӋccžh}{iV]~BĔ>YVKMM>5!$0H@.l!E+},`F I[8'X:2 |wtv/$`S5bAD#…)M_1]pD+4 Οsq`2$<ބZW#ke^g}᫿,Z#|[v6L#g7n0}N~j@!.A(έFhU#v? ʍ/p %Y6fb-ʼSHy6Q[?q 5isw\܋ⓝTm\8ø4ݎ1e#1psơU"эA" ktsm(:p:B1BSrO~GlXt9?=&|(%, +c+O#]8KqϼGӔ.Mil<̉QG;n_h/P{tYri{9a3nǍ+wҁ3l%GkiRDv"` 7<@6(8'I]w"ut<=" c5i @s̵5.M86LlU;Se5nudGF 牓fx2nLHl Wy[ XAqu\ 41gEU F rvG?3X?-A65j Ce#upsds[c +k` ȰwGcHՍ||P!4O҅m0 졐Q"BJ,tAV0Yò nkPȄKV ƗoQ|BVL$WbӅ\wq)$' #wMIr>3(ΐW>a3d2WEX'rA< +k&CgA|r.Mm80r0%yl: +E/fZ#9Hlul<0 DD. 83'bWR./"* ]G|%n{D.gz\53HYBҁ;^nXVdךGx$z 𲦑! +(``FP59H44qPZ8Gy;Ip7#>(gɖedXedM^&s ֖f '6&d|R!Ë "g)>Ш%vl4KXB†9dx-k!e؜lMh yΞfRј Zz)?HiO`=D]V|쟿m-(;a oPc!ɾ(6,PT9EoBߕ25N,'V7`2Ųg9-]/pG{r\R,/h<1wE%7nyhn2?x#*ƀyF +͸}_ sT3>nwAޭ8f3e3o&N @Sl*fC84w̘L9K nTB:rrX֙qhP;cb1YEVѣ9}Vi&s~޵rL"4·:QM9^Яn))סh7DE԰}6ۊ>n|h4A-xhߧ&> mK.VdU7\IF+O:, ?S{>|X.fb鮨Lir }3r%!y9~e= 2uG7.2u2S0OB'vbH.jRCPc5aZ3IԹN]]$q&9r"/'#VqR݌ԉɔQxxP/H &8&1eI",WYQQ̝ԡꮑ:KQ,BR^ 68mԘIRO2RO䮦C^QnDo.&Hl;$7?Uwp+΅\ c_Ȩ̙ɨ k+m@͕oˇwgFF::/җu3\cG@PloEC]^2ZrH򡞓e<?1z0wwZue2>jP\5Ѕk(l2و#Z(BBphr>?%|?r;ԏ{2!R t̨L?PhFl#(iuH/Q/IČ|;b3jWzu3Q}q3jXHTq0 Z(Sc~F5˯PS=7չqZ=hኮFJNfw=A0cpXE=BF⃹:|W5dvεVQ('Q`Lkd}@`}ĩ-j ;6XO HOV-kodžR4+&H ieú" +!I4O&5t6z`ϞOh{%4sy +5,mnҖ]/%M$ +endstream endobj 151 0 obj <>stream +6xxcfݔ-y۬,kVvx5C4sA^!'6釷o4nV\CK6Cph YjMf]ϸsY4m%9odqܑt]~e,7-L&5f}[BN_;ܟCbonAcsЈw,p`NC~N\۷~ɞ"QlN(\/]'o[GE7dNl4I^|훡s{m?m?toeP'"Vw^\H=9~sk:4 q!Yq x"ZatNɾݞrCG-Y`PgL4>k +js3&gr&sTﯞ=nIZQ[Ofx).|=b:u7=|i165]_EnǕ.65'Y=8ku9-좞ڈ QBr:v\]8ekj6 +ZRjEb9Ȏ7$,;5k.٥ޟ}qL-os&M NoRhy.FK[w$7쎿۽|IG5.L޽wCTe4)ghYִꀷ'77`Mšz&? '4<`v"L)/"F3v\O،xXǣqy WE$$niΝRs&[|< ?͊y?i3pWZy~+U;H"{Y^CZCz `լ60ΞQҷD0}^}V{X-zXVkQ~=PI^Gٛ>)f%l"Dd}^DKaA +Ǹ/0}'v߼4gz 5q"X)KN. FZ/KlQIFY?s?1Pl/";|(K)WJ>fjB8?URjBߐ=81K7\d@.7S3@I1cߣ|k.G'\ޯp"!@5s(!` +k"昸{D4`BF$RuH7xg9'y^,deEg eoXzo졦OԽ38?&נ5A?!Igl ٠ߠE埅: _w&{_?v3w֜+˭W[LDz%񗓮ӒOwGԬ ۤo9LK_п~%?:\cf&?R "watPjsM<Ś G +޿,Wa ykI ܨ<&tq 1R1(`TP/8Q4@˚8%=T: 5zi /|:Cy,ӁY&% +Jޅ6E@$T{o@*MK@k1;(v)GIUO]l,-`PX+Ǵ2;$HÑ%tؖ@J|ǰhy m`qa0eA1Q9K + (ci͔O#f>־03.d"NgB^%}^?-L0I#V"6DB q|RC-E-ifx[ٳ Y]K&C{DŞ Ur_$O2-ZM;c3E祥 +6Uߪ3$!DmO^T_映VI9|]N Ѐ^[ڋ1 #V|7ՕH \jQ H -Vx(<^s¥\iMςYmEu ILFGm@*6aQ]:d\ qƩVL3EҀׄuLme2V7,nngTgQK5;X #4/5#ryKYE +)&%B,v5Y`_85˸"۟cT2NqȘFcFB ^xq.L]gaiԧa ɃSKצRRNYQ<}UgaUZ%[NIe[|6i!?EjXʟ1Ц#t|L CBfm+Tt`c053ekNK5{Q +d$XiUG|d}@oclSn_O8Uf[!f0muY xUP$!;2[Gyۉ6ǶnXpys!TZ.~O-a$4pX6 +BmP^^7g`<} }NPKNcW7a?U#64$<&p"}kjcqr(oG":Ol1%d0#bJ7Ul)ว´Aa㸩=l*I+:u-}Pg߂ F +3r7 B("su@8/iN==aR)IcNDx>o`_jWx]SMǟgb:gW>gc^}f"y22$LKHQ#WT1a@]ES.uŤ1 2CK?i=ipIL +NpI#]BHGM܁R M2)+b0[Ӳޮt˟L\dm؆Au&6i2r"D2!w}%V7X4met g/g=:'>^(oƈY%F,zs%g"j943_m 56صМ{Hi=(IN(>*VnȀ0}pWM;, v<3uaR)"i".OXPc~01|ŹKik3 =ʇACkxupgm 9)D?kPJŤ=\2H8 t g`[$f+[^]+7D%~b&hFS*#LQY9%[,}Z$82Gv-m' &E#jjl+ k!kZ{^],; sA*eNFU_ +XtesT⩶2VKKMlն%-,7ʏz~WBV/x"+(8aB+ TIzѹ( e=ZkpAQVEʧɕi79t \9Tl^EZޥ֑4MkēUSZ#5KA-˓zeog@/q8  sRrJCul<"jm|r EaUܙ5X#ChwܿJLÕwT9S[A@.΢{'M-+tKi.εk=[JmK +-Ee(3n+޲x–\(#g&D1Reoyf0INDT) ++rp. { +T/hxhb*z +Rbf:OBCܗW{\;{j0Ob(m#O(A sWR֋ +&V;un=N‡h_Әe)ޏUƒUk݌k#x7 8M5SË~ h71VV79: c"{h2c}*c±/(o H&Np;2ѼH2s0CBD'8B!%zCJNNL6!vgaW@v{IDv>V:kOҞd|s> '".x-6I<^6h/uOGuC@_J> ~j'S=.&P0B(B:޷ @pu~/uo0d8p`{= DgI(L8mg`[S"LՊx\?Ool?` +`Uഘ݊HDA{ݏfpLFCP WZH590DpU Fl-z.Q(EX,JwEde@1fe^U*Can,eI;r֗c +X|֕Tq P$Lq`d!2nCVR|}'-n၏nҋWlV/b_OqkpE)1sL+jfΤ4PwxPʪ>/ ntO.B?\}G[Bԝuv/l uzO>,}$؂pTHbᒦ1DSD.@'5/q7ıL|( tƌlmHÇKPmXB$MGNպT:@ki Q f=<|b!oeoeRn)A<1Ӆ\o.&O^@ G!T@anD vPtIOLS䀑=k!B ^Mer wA|W$ w3z*jk|kpm̍ 4dIS{ik:O i̞/-TfqLyN3s̘I 5,V-tPgȟ~¡/\tiM+51!7j[ЦD%OG:(o"N"ʹj7k_VTy9U¹r">lrEWvEekhkDpA"4|sxR&HGMjCC9,gw8+p0͑('gbB ~Bq 7M8t' ;~ +&8#akh=#`זbV>qmOQMjVq +AOWSiJdVERY2yoKŧ+Ʒ\+4k 9veޗЦb-/Vf?p ڍ]á0rD%t}3ίYJ .i XUmg89\5 4Y/QGi nֶpHHD+̺5cB> + +zvaosBDqv*JikXt8* G&g`jW`3\D,*F)kGsj&s#+)T1C%lHӨtuHZ׃jPSSAӠ΀at C=&:* =}@AyhÅv&Qwxo5ѡYMcACT*36|q&&Z Gfd'^ &e +'pb3W]ҹ(0Ҡ m>AQq,;T\"BHe]tLSmXn+l6wOMʰLxˊv{smwP%S 1⁥@$z,o4v|~58 p{b[Q8h@tb !H>OWvüigf3xh3b$JƛD8[mMV+gnB f0Q"o%o#=X5jϐ; +M9F|hx[ԊOA3%CõC2X~3h9#霣@ Hbݟ3gj@6cXl~&P\N̎$h0J⏳u>#_sXub>sqYfT朄)E}Og02:(n±Z  I(Ic?0c' dj0kl A Hi`nlJ5?r'`N0Z@x>gw +~!!}ރ("C8y9L,G!Q#k.o*Zw%AXD@=A;PZR^tJHE<&/à;d8<2!]=r>pF|ީ:~ +MxK׋'(鬯4KM X0U7$k/mS>#YQ9ƛ<T H`EjoھMڷ[:a78. {/)sV%}&S`bkqT I{is|3V0o`90L(t E4q&ѱ#a/6 +N8W:4'B2J ioN ^cľ3|e#\Uݜ;.i_4vg$JơJ?-#'FLG&}#fb;~#(Z?wwߏ +Q'0xCz%MZ=r_(7}NOߡHs'e(Fh`M?vx .ID{8e_Ԉۏ5f7kV'q XNi0_Kz*%]4 x$8Hw>Mٍ"S; +/spQ|I3 ;2qd ư6hgaߘ7PdnȾN=^i!;`x(@v6[}^oD̽ϓgܝ4xjZE|By8mfYmfZM[5{i7U/6`LAw)t`W/z:p7>÷:(o H<H8k D4e$:x5a5v%=4S.&mM>w/WE* +S>,ƺ;&Nl G{4оpF2 + P$K(w AyZ̻lw!Uţ7JF@`C8og㢄 Cujua/ ˉp񜧙KA6ym~.;s=tQn4O0O0?:D)΋"pA8g 1!Iό^+h1nu)Ag b؜:> H_r6/ԨK8 +J E}8ȁ1m_t#=r/^o옸9N3n6~l`ݳ%<_Ty +:&Nlm<حCgfBy:bsSe60z̮Kaok}_`,GfVG}x/XlG N$zvxҘ- x +J8oaw/&47fTkj2怼>.k)o"KOӗ68b;p(%LB)4(te;eC{xMxw_Ф% ADzyQ^>ԸA}0+m~M +@Ka.k4wg6a\##(sn<乯#iLڍp08/o ģP &PqD cheh70/O!c=蜴)g^.87G.B$i[LfX:axH 䝭1y/y.mNqޓm"Cy4{f6]-sG3gh920r]k%C66hvͮCce{/oWǿ^0p\V4yjeg HpΊ0hyAokZl-YF.}h{A1oS'm +AE;#vyl5uzd4+u@xGQ}h82\Vô}kh=$M=sxg5ziv C0|ÓR +CR[#2Atzx52#v bÉ"$~)Ã<xp1o>\T9']HQ_.s|`{2rgXwWx7(kD9bʾBzGtJb 7K˩\"0%$ᬡ@: +IC8k܍#{n!<#fح3yeZ#mn[,g}!=Ĉw|לCn4k<4O͞Kaؾ1sd_A'm7/SGVЅNdsp߆Oܝ3ufv8FPM9 %kM tUB{^G E;_D"ϡwޚmço־Mk5xj?tH0#^ C6{k}HrOˁMmv8a738wYKa\r2gq7T;i+y?4'#3額^'!sPt=uAyO8b6HMgf[^+7pw&m) me/hvW68#N@;H2ܳ*"L? U^цQ;sXWR'  uNۗaܾ0n-Zn/ݵ3˪fw_lb)F}_2ܙ}a6Gv|Y$~f؏< Z=swV PɸT D/g;rC5gh<M-g66~luP?pZxH%yq!>vv؆*ah#0xU?x7 w("ʾQf±vB^f?x>Goؼ\Y=3gv1@R?万%y1.%"7hn1)|>u u~rË(8a7vǻ3(ql^g$/IS; +~'S):m9i[Ѡ(}>AwpRg* ]>tH.)qmߦȁ4wgvQw"%{PhV@'PއYr0X%w޽cvve@ƣY__(z"H\G,w 0܍"iw?zAoo }r F;gP }F-YuX&~R$2se X]6>v,A1:c8C{ 5E|yN[y + Got 99b;GQCz?CzhGÓ0ø_{$p6 bˡD q$̾Ǽ0e9-f>[l =˺y2&O񗓨?6~j X-$yP~'oQ)teff/A(&!g`5ۆoͦCmּ ڍwح4|tM^33zbw WF4%m/MZ-i̼N`jka9.l?u7{o [(vn¹5;p~[$SٗC\8O߀(:-F?' wlαoцJ%JxS_E)TOjH +L,z(Q2^DO3wn2oG30J%QeJ;d8MBy'q %:bf.=sƎ햁3o]ƥDW EjW Jig4Ñ4(x  =5xjw X08&G { F;o 5(TB5x4Hcֲi8F|}+> :tHy ^Y}#V@v?f8mζLgj+տ\`1me4Zw̮34xgwXm=˿V+#7F0oZ:UƼսչ4dY~W,gmy3Axǰ0o`:G~ ܝm>ϸAyH)I8;csjA[rM}'QdZ ~(d*'i}`ܿsH~18I/OęB?p*:stGġR9T25Kc\)} F;\'0ݾNX@v#3}~QdG  @$PxѤ^#xy82Fo)u8893?wf~d_EJ8̫Z8R!%@j@y_H1/_ ̩`0^0"ʾ?4 M};.AÃrAC8q6t*=F !Ǿ#g!F=#^n?r#3V1o_ _گ[aؗE6j گ38?CgV[n/^ $iwy+})^/g Cސ¶Z&ol#cľִk5^h]mfø/a_n{~Uwcs k]_8ߍ˽V5dг*h.a31l`u`[~͝SXw3u޷koW Dҧ?4ۊv{i7'0YE7vL>`:@øbd=sh2B%ġH Rg_=skCw_01'}pAC~e3={fcAx'`Twᾍ F}yo׾^qaҾh4,G6̅1ocx!C|yP"^'Ł"4`&1؉ >:;uy +;힉;mn#ƿ skPIGď44 ˃r$̾|hQ/Zˑ,&Pq=}k=˿9c{3iG_=u?- 3xfu \^}yi~i>3l\:t o7f8gF^`ZZ0sזּ^C@{5pW֗<.`7nkU\]Cz+Tތf0/-7WޥCYk-kxe귆C +5#}g̾4f `CVfн/f\^Ƽ^f.`=gu C?t0`ΕVKmzF KՄmjBMWZ|*N5hjj7:[v4 nt6MTM ntºZV\-fS*DEDu3OYq+*;EEŭjiiQ]]SU\n[vJkEUe5ZaZ*7[unW)nV;Zm۫j^e۸Y) ۫vjj^m7bfUYUԵjV]YmU*+Ԭ*kRi׬[aXvKNmmV*mU۽V]Mmک-^YQmY.ՖjnWVkvnյjKuujl^[v^YiUWn[.v;nvnv^mVVY*˽nvr\,un[UnZVk^q-vj^Z{bY˽jUjYmV˽fYv{j,ZiVZnUkeEuViU٪*m6[^iTUT,vJuV]]Qi`TlV;^el6rUU6rWY*+ TfUfWm˵f^Yl6fثUVkeEj٬*kbj0euNUYaZmK^,KRaY*6uNa5{enWzeRY]iSZY-UfZ֪6ZMQ],֪J[efVܬ:en-))+[VqUWn6{UeU5eeVUMm*lU֊ +{n*JfUl +{VmUZljZUaVWmUUvʊj[Eub^YV˥^i)6˥^WV[RMQQMmT5kj{RaU,*jm6fZnjSVXn6kEUVQaUTXU{^mUT٩k7K^U٪kV+˥f)*-Na5;^*RY]SWثʊ;rUV;NiZ-UJNiةvJf)n5k5rTVVSSTVWmTնJ^TVܪԔvjJKurT,r*JKjګ*+VU]ƶUKu^m+nvjfګ6V]\픶 +bWl6kZaS*յ*{VUqZ.Rqثnܪ+nbW,^حUʽ^e۫+6KuRUq+ku^]eWWY*UzuuNUUQeY +fSv{fTi-Z^-6{flUVljŵnV,j{RUmV, +VYiiW,7[eŭRU]V,7˽jWW,fYU6[f׬ +˽j,7k@bVTU٩bFLsizm.;-hOxY:`oBv%F" |F! OUJ>&+([ ȤԒD^aTTBKңnՀƻ.zETUQ#~#SH"e ,c=|URvI1Jrc嘇 ~@jPwl%XJd/3PiJ#(!9NV􆲊.Zx,pQ+K rvyK/k񐗷xXU>ЕEIŠeL&Ud?xQ~nyqxm1P*pl%TLϺ8Z+Kte̲F# ++Yl=`/e`!E Ĕ3NT'orce({@,.|"'9c)c,9+c;)Q].\wYYôR0&aI#0X`+/mK2И']1 cc Iɿ##&Ԁc2S$tB!LUHI@xPMUpPC z5C"uJ,=F/ {dn" +i$Mܤ-cRw*Y$̄4"΄"x8$RȢeJFU*#C<&@~^ x[0Ā_ BZ%Y50 K22?hP 1bү I?##$'T\Bd\<5ݵJ9I bUaayb[ҸBf]Y+\4>typ!ȜV$AkP?I8iLuYDn6*]M ^NDܵwݑ99y-Aj2,d ,bK,,V&YLbX)Hs?$a#L$/B2SFEImIʘ0sl䳓1 ٓ1`ggI._H|FU*qʘ&$Ę68;1 ojJ J |%=3*13>Ua=\AU{A D˨ eΕLtW0KP6AUBElo^xm^4R%qEpI</i$& )hP1K4l+Pjd{8g0FFN$J(dPi2&e*dNE$UR%ug)d2E8*fIMJ%}-=8 ŕ2KQ'oA-pb2!DDƄFȻVCsDlq(rdji'%3%1>%_-6,1%+pjV+ Y@^ e[a 6]ʠR#I%(cbë=y ߲.5n.7l8+@;*IjU)9,8%+`*9jB[Y(DRq7JT(j\p.܉LVp'N9339#S-ͯRiBYw2zci3\7d)z/)ِDlCKaSp.^m̯zk.0f_ +7,@!f~GݐyNeǀG"BzS)ꨤ>2-kJOɈ;.rޣĶC mVF҅+;62KEZ=Yb樽Yf8msAQ)bM!bYbQr]qG BRVsNYAEÚ(&*!j/+%j &$x 3".\PN=*($ǥk*);ʊ;(s.ˉ:lJv"P5JgEv'P :4xpYqWg[veբǤo-.jp>.&b"oZlu}b@΂BzcI5P)GF|)=R +ZE[ON}֕;B͚{$ѐ{t~8GRq?\!&Eɉ/Ǥxo\ +/5n zF4J!UP+Np1GDQLG|Z-v^ṄUx$[p<`WsyGv%(0nZHՋJhaϒ2? ' ?U F!yG YkPPC{w{r"%9 5RH,+nH9H,1uc^0mb] Q2+ "s##s#%'Sϵ9VE SHg-AJ᧊P@ʡIo)9xXRLi +7w&UŜ'~FYK@IK@I_ici=`AXUD:&G< ?!ɦH'M59HBU !aT0&FG`B^ȾCqP_|`8[xj kčŔp¢3 z+X2p@Jrf1tvݠIC(9[ͰF,RxR%&R2U F9sh Z,Qloyl5S((- J( T4Y4vME*x#a7(m +E@g +L>Kz2-ć&p#ʾ H];4!p?v8ߛhNVE)$4fJE€T%1SC|ţWp"GϧFL +?`:D V(~*xd9{:=R R;H(}$M?AC;/:oI~AD7?l=ZӾXW0NLGĥyiϿ<Gl92zF T,ZՈ$䳉.!=F<u6A1y7~*6|T ZL}+4T C[(2+as$?"s96m*=cw'B*s&DG0K@t ĉ Ҙv`P# +ɻ[ԫF #E4: X)7`x? 3f7b5#FA +nRgS,$2*8bˇ"r$M?#K>*^Dsp7 ][ ԈF $,>xoBwf̖qlވ/AŻd*7zm_'0nIy(>A ǻhЭ4ug XFǴ1oauMڝ#g~~ z % M@g!J<+ +UU3&.TG+m"vR'GBԾY(GWD}7OD +P0T1"oAG0'`d/enR[Pi;@vvSkRZ{U9$SŸdPk(҉SiG".u=`.%"gg\ J<T/Uţ_$J7ĠDq +6)uA4W:4i+=S'kÒȤD(lk#6Vڪe }]k #G6v+ at~"5R! ;)<80G/1H/1Ñ8"6%` :Q1I`ŢQ3X$To?ă&S9˅'RCֺR!P=Ӧ ujK.1 +^z Axu4$JD8~-D)i&"p NBف zr8fn#ʾK>D:USP +uo!!3 w T k0dFfHB @4>zТ^xP^Cc-0g 1q#K?C;Y)%wb1-̝0%@|I3 åHT/&l̹jƤ-EBF {>531pH'qt|U#m7ktUwy +(>{6"A2uf5 zbƼ:rYWq b0Ɉ<CT51)9y8Gwp?틶}U/"#Щ4pgM^.Gb~k V<|M7eQ1)mlI{*(A5Ygj ŻeZWhĝ@3׊Bxw!4#S)٫\kC΅wqlv#yWIwdmt7yo-3k0>"^${MVjH?4r=o3HWI(ipYWJ R@m%q=_JD ɛ򆠚Y?;ڧa:3?Swf}-es#F?p Nؗ/YOAis0J=@ +xHöo-1vHdɬ3*m-9JN"*5R4@D?CySXwOh:g-1XHPio,rzaYOLwG(ĵ5,wQdϠ\?B{9oMۯ[edj0zƎ̮C7{kݝ,?3/u1ߵˮ_su"pi J_ OH)R{S8*Vj4("5#hkçv) 90k_y n%!L[&. C B C7p}/1G0po|fޥչh<7ql> +W8"J_==gFĉ5vkvM!É$=f'}*4aM4wSو-P+Xb<ź49H o *a)+k>dP.qc윿7|G.7js!E ļG\MB|0}!nY."Lяm}9$yF0^b3xM2wd5p7F{Gnu vڻջZ::A!…<0#Q@zki%ù˃D}!T._ [R8&~{$D^ r"c!M)`~єoDhs&+pƐuD#'BͲ.?.&ZBYB2~j0v7 ,J D=PHA= D{DJtސe̅D?Ys%,7/|"]LR'B"Z a?*8biT[p"JgX 7.e֝c-6vA3~yɼ/XWй4pVV }KCϐ!C(P)(vHB/ۗg0~ <&z[ +ٜi+. +[@t̘FXrea{-T)b]A=PQ_pZC9/XHWYP&iPqCmf'm\Rk,-5Gct*X/k9f{\4ft#}4G<5يvsu +zaud* +zk+/2(90*6jJ + ;z9;R&k UNxp4Q͓(Wߐh OJ4wNxE4I⺁UI2 5 P$n0gP<~O5 ۬à<Aֆ;Wu?t,t 0dyX:2w*VH EDc=U#n +-`H(k%ozÖҚNud +#i=|1("^Ji@ɨ1N$q&&.&*Fmscn7wo~掌uqp"ܿ< wBǺP!+cƼfԼ3{inkiID :΂DĠy7<`*jH< OxcȗyPiSq vl/@DoAk(@w L +,K :R@ bcڢ[aK# +\PT:*A{O# g'ykt&lI fHa/z >0|'%tߞseu=4/%mLĹG(Q,!=Zgy]8o_>r@ E@xeXNxaז3RO mG=ZI4vCrPu@)?9Ea~PV6 +l9R񠜇<3 |\齴9sX.!;n4u2le00k岞nGxg/8=][,@u,/d]ZV; 6k;q!dKӯ[ h'WN%멼-p)8hoi18~y6Le7cX*x#0X3K p77RL3sxBjO0"Js "d4Av81*f{_l{R\[rI;@[x`Fw}eƺ8|+*wCyW'ޖ5i[X~`r ,cLk٢JZ'9ˌzD*wDBx٠qPz5R 8bP D@ ɎF%njaK3ӨlWmHލ);hAMHɉ'Q?T Dxpɾ0Wk$t)mj+.Ȼ +JU 2eT:*@ċcBy[Z.\S^ CNtav8MG&ܫ+~P~+0]*%C_ z)(>ZaZQRo%KA<)20,JJ{ +  NsyV~!A 6t, +C =cJVO]/y׆ELV>dll"fR`w ɯ(] (ѥK?EԎ +!fS"ϛgBd\M@x[LB SHg+Gy琎 +8cspz)~xB&3cW%uE{wOw{`oM8[auboE a};Ncm/C⭱r">^ـnC*wnP|`iPѡ\ te]R,~$j"kPwχ$aCdO`O*G>_ pF1!4l̯6 M'3$_<;'&RˣDq )"8#H1l`SXpilTW C,YSZ:]D^,vXvm.3;%8㲂*#}F^,2FCe +9(}T,~0›n\xӢ@ᅕQi Ĺ  59"DѼPT/ +F`vQ(,3gp#@.]@cO 5 2hbPѮ`Fϸ?A)X(@VeeI]E6" 0V{:+F{uJh]E#`cQR' LXm󷦥"M{SQ)82羽%Б"tiۻZ[ Z,\(Xߚl;X׫{1p`Zdʴ2._udV6`.c鰠" ARO3eNLPʩ``7$sPtBq)+[`zAvk%_T3(D|s.f`~ZPU80MN"^ׁͮ хUAڝC`ÐތsaqMn]zle +$Oܘ,Md`}S +5 GW,+,w[%u$.aFN]CJ9 h9dQ%Cթھ•O^DKt k,]xyU뫼EKl +"xhYxIA/8ePA,ˀRK \PTlNzcQhm6_R"i}w +bp]1yb[w;,({lbg{h`a3暩A{"L*ˢ+؄혣 xSĔ5! -"b6D39H(UV\HDb!zt +zv;t .r1 +/X WYv0["v.wX~1ǒBrE939S]\HI8M+V+cR{%KA.[wY[_wC\5h}L<؂+@2(Ei`v}R"}"$ROeCDtYKCV`]ڪPnpJw>pƕtʫ\B8`-6l54򕬿*́5#b@"a! ('衕 |˪,ƒ@VYZdehe8\\ *>ؑx%cm AT-#i:O8uvYb8ՌH[f:MHYmBiʙ(k-Tjr oQpו@lx:f6LyHl6YZyy2 hP+`+o]# ^|D0c纔hPPALJ$7 B2K~V&ҭAʪeXb Sw S@o~)f $0|*+P6D/ҼzYkt RRNc4 ^ǁA6z:@[ԻMKg;# EWOl'9#/y> w-W@02@ M>ݕ (h]RZJA9= V)XUi UmܗJ0+~0iZ% KL\ȖX*ӠTNq bͪC~pf kwIu,^_ u8D.#;O +گȋ&~CUsaF W +@ xaIcs^חW~9ַÆr  0 9ipIt a ~ ̚@xp*DuGb/(<^L1 %#f9GZ{$tɕPN!A!j^qs>VP>0:gsX*ˠT!AH qVɨ7 M2?H$wppzL]¡cR=!BB'+` L]ulKr)~AbHqXb9A(M%tVBEԱ?Et>gl:L9Ń%aN˱a1. 3<"ܛE%TyT{0A)qbrlŤ8 Jq8PTsV4ԑYY1%%bJ2)iP +Md* tzN1]>iM9ݦtctmL1=t^wzOobK +2J` R (=\ 2lyG$A-i ^ ᬔ8$$Ri($TɰPQT J/,uV{R +AI!ZIcSH!&)iRWV`&^J8c˗^9]r]ʫlZ)L$؄uЛLSD]t~mzN:](? 5E֭3AEV+:L%"!zH~Dq2@-7@:=Y򈷊3I8/TfY. HbФ 1ṛ&!O"E 3 U//xNɧC?:0@( DBv + tl~jQ5I)Y{N7@ݨ#$^Gx`;B:rЏjԁQI}3)iA0PqeIn<)& 󠘈k"ROI K1H|!q&d82-uHVo41: +$&FMnhTTm)6FBӔ֕vmfƼMlaتT3) 4%~M}I5=ha`;"s`хe sÂ*;`PY6Ԉ™;2zF00%ޚ;AJj7h;+PDNM Z, `8L |E@iopbq39HK?19nϣ$"q +2< F<((%G8OA 鷚aY+y} +0 Ƽ䘷`Dgk ЬndS/&k&k YŨ\@xR QG SB=s:b8$ͿTOT&O`E*=Ax&Obݯcso)Tp1 =y$M 5X4ɇ//&M<iLmvDIu~LXgWz34$0>Θ'u=hZ;s6_OqCsmH/ HoO$οOd͟7:ҘH M^M9xcq\ZԈGitF]d7bМH~m~Qfj¹{kӦbAD9ơP&A_(#43}✟3aLtZ^LW<:Qe W=Uՠt~% -NML?v\5[hJ78DPtpV=,{ {I3,1P-$,NF}tj[ T0"a4E|ވhng O9ߛ!mC:ǼfBywx*K8A*a! 4vi6aG D( G2us;d}Q34&oc.zeC lz)},KoGO`ϡTơR bPڏ}vdM"_`iMCagmU㒾9spbjorZ'(x/d$شF0DL W4~"NB)3ze{gjαgvrȤR :J?r7h +F(,,j)m60JƑ.rKXX<@JƇltS+pjd\KJ_R"ߊ"B(ȉ6|i^G,w_U0,$zI3YE||\ R(Q5(o" +Oq)P!ȸ]}, HA5f]=&g*#(A2L^X6ivQ%? )m.RA3[άksl9T@,+E(!~@;`^4 4gw\YwS3;ެZ/$?wit 6ڪI52?<`0PVÕ4s’Oڋ)،G18,z!yyMZ{~9{BPve!K`"?QoPN"7'i7@y#@]rÍ0RRA|ݠ4:Ɲ<7f`).Lc?g}g̾KkAH'M'ehL9mGGa:3}u_(j%' PDm(oO/0h7"J#J@ş5.oA!ż0.J NzxePQySňF= R8|\N~Ǻ_WglQ¿:-p{{XvHۀ7<ʴ +Q2>'V4 (Dwô}{^{u./k٧cyrkH wP]~;8 ctrY0y?a' T$ٴ96 +$ >"b/ej#L"w +J{*'-A*-zRK`B:0Uzl\Y8 @ +HqYswdW9,$2@8 ՍL;K@BEKIUTK0YBow` oDIIS YEچopZxM>v5%m |7y:1]f}VE:q~P5~hve߇$d_jr82{-_ĺ^!Q +Zɾ2k÷f7>њ +F} 7uc H:R/7(T+u$6FtЙ1ibuM]{S`0ZC~%07mb jQi7ys>;mK9p38c D4m B ==%KAIL fQ%_ (AF4;~9/a_oO!#6ux^<[ +F-'*bm ]yAE)hK&F~8]F{o ۟4ѥ#jw&l6=uCU s x+_n`蚺>4a3s!4z¶QIa<5. 'dZ(ٷ`Ţ_bQN̶ =è4vg~, 3#M?wy~KH L$z% ^ ӆV4{Iirž|2J̝6s)é mm}÷:xL߃ v9*ө`-ŢBJw=1Iwi.u#E}M$?UPkez$N5' 6,k D@kv6Ae^80xh7}~ll@BziKPIe82oupؾzp ź&V; J1//ˍF{`J?| 30_CxNSwvǴ;2/h!1l`L8PZ@u?k9|L66JV4(m'QdoiA߅`!6zoOuetj`fT@B7(0(q #0d$ķ5.8pޛCxw+aI@<[fn34ue&/-;kr5o5sbmuWw/倥տ||!$ޭL9CZ?y+a{>y.m}3{dtθ#P>/UB2qd0El޲]7SZfξL}((>Z K!h#[F8òT=FsB<#~(R'Gki@L9`!t4%0D)|P"ߑ&^vߌz(` ȿ++kon@OswfwnXPkJPm%I7\ ll#ʾߠݑY700(L8d貯뙨\GL*6 +ǤJ=ď |uyOWx 9eiX"]6M,8b5< lǴ2mc7W V ^ľ]A6#mO>rP}ҡI5q۟#7zm:7|& ZfKz=\JD +M> I;o=ԕu4 ˚ +ƟH;ɔl?(L@Rbks"Pe)r~)4/8 7@;4!XFhgB{?`:s߼5mvόgXԅBwi49o޼ rg-ݵT*1⋓ߣ̾/sGƚz{~u578!1@ E@">@JƓ2xfʐl;JeDb^&hd*Eb0jH ē^ =ww /O9b7<-잹9qi-_+CWAPfM9&%|I`$C>z'=mҐ$'Y{3wW[ֆg"j_؜8>حY<ǶT D);l: HC]4݌cf0 +LJ(m6u +šG$-J' Eb#yaTXGF,#W$y6% .f[iV1۫3W&_tMόȺA +ǻ(O.~ ^N`gФu_:EO2(t +!N ü}eƼ9mtNʇ&$Jgl82ITpQwsR7hW)B:@RTEie4"6~WwG;/IkAt_QuEb~T!Ix̟edKN|C9o>u(/W#YDx_^t4icpόV)iwE)Q[ո@{g<&FȇcyDtF}'(Q9f_^v{9hYa%g_.61/7:n6+GI +l +07(BH2AxO:c@ZwMI) +? |_[8 PD6&UGNT+q<en"="7'v)u%'vbݐ݀ţ-!藂: Sk>44ٗOi_pj_ZkHҙshN6O\MhFN E>"yyI U"-` 1}"mE˻3{f#= i3H6þTV^{7{G!;t6#hG/`hw%qgP2Z?igvT0 ?hYAw )>71qgmtz, f Z-7V3}?2o7.?T|2qe `DJ@ĝHGA핡2e'U}ɸV4T{n' m<=uuݵ}.7n#_]:K%NFn%N{isn>2xXZDF C>2gnK#o$2met]/ev&t&uSi!/gV@!C!B K56,?v4w ` A 1:su%`a!Ka˩-'yw@J [ŁYcP~U+"d8_ BMۃ-2 +uD4ϊ"3LҨvB`X7SĘ>!\k4Wxy_ hD:ϰaYobj_xi?0gfk[ >M [#7k aѤ-zȒZge9!$.Hu8 sļ&)7T9GPqM +Fbw$HA +;PJP߽$p:'v;p/#ؼ@6|j^.lsr:;myog/4l cplwPa\8 6nk/'4Rׇ +{wʿA2LTB<9~rS,"o F@ HBo)w$9NcdfF:_ }kveM{}O "ZgCB:ܑ}qHJ!l@ Ji })}$Dȳ?*Ͱ"x# X5y91zF{eEu  粮.4ڦu Fa?w l81n@gF+Z^62oWmgY4zfKYݵ^ֶtyg_:^ga9c9 ڪd3w+%_uO^$(PF 8g YLgn9J ^Y/W~ sw-I' lqh@7oOcDW1rb71Wj}`m6^@v ZbT*$PMEr9y5{EDxH\SS l&ѱ'@vGp-ͯdM&oc^[}C X-z1jJۡ_-л,`T"(`+w KŃ{Afk)slpLj8-с׫*n݁]E݌fi9RIDRѨH\`bC"TC'Q,$M ol%m%od̼:p5MZmUû8bzs8ܽV0um!@axWb]1k׾3wj_75e6AxKp5`h[roϽZ8ܫ&6 1hgR:CP9+m9a!F6' ]@6A_eNPbn,D( +E(7'7Ɉ;_ǛZRF Z,zmV0oa]71o}df4.}^@ Z4Ay y/eF 9ny}#N4om`W4}gϣD7چ3JGZ(r3l=D|vP$]dw? jLMˀ/%}h;1I+a=CTE RN'$;/GFܱզ[ޗq%vkkIбm߲`k@EרB)hN:L>w*$]-W^tB\4zVg|&:~}] YPUo(=#Җ +xgxBZNoQ"! +P93@@b <|Vc"0 C׬nH`߹5Sk gvlunicPfN{u 6O5|~dtrDH!nJm:M \ehRCu?CH'A ݋U1!{+Ubty MF~gEn_eIM9[='TX;$ Y$}iW\Lװ' ö|M-SeJԘKJGgzIƝ_ wM /[zؽ ܋_s84^%CoJs4*i"X83ۖuX gwݯ'νj%=rd82x7_!}x퀻U$\5p*d1fK?:i~Ͼ?yZ '#tbs?ͮ޲r T6WRz]_gPp(ì\KnA= HoI_$%=Y@fV4`_wfvER\y::w>^э[[ad|gGi;ļ>3w$]YK5_GE!_^ܧ!7OkO2{ƨr?:FqռP.R}MLt}o~$tx3+ Θǝ +TΤ "ϔؙז}MZ趡sA?cg +{C%)iuK7 m <"e^_C| -R8/ĭO[ \[TmBSmAh^Ʃi1<w`k`VO~J Q"?@;o $/Mswܝ<=;ZÌ둫7;faö]uky;,lIkmw7O|.TyaPlIZIQͬ&他EڼQTx3 eЛcǨ0QB?M$ :ͭ"<)>k̨:8ʝBsF[ty%nba}Z.%v&/e͇?Bѭ$ j67 CRX"9VE_dG4$6.Mb:E<[NxK_`Cf~{0R4LJJ2|&]L9׃ʷzYO.O+GIL_݉>W ߧ@G#}նR52U(Yfu yvM5]U+P`SֆAo;l{,qV1љtU=o_𲧩x(B (nj+lLK $GzYc( +H!rpFDw~Yg)&0[-Ʒ74 7s9>Nf;j^ݱ";F kI* HZd{6`1pr#@C=,q$g +ZA PTnI0O&b~{F1GMmJ1F7;留gfP9@'U(BtMs){TfS5Y3'sx}6NQr f| ,Qw8qa.l-Vq\KCC;xԗ i=>H]Jט'n 8Zh_>52ojٖ//8?U4ۮG`R7Zo~4tYDY쯽$,|YF\ TWxoX|\96. +; ]}ÀOgFS濅Ra_1KAznhxdXPn;./PQ7E5_n&vA4C~_Ug,w]K iN_J> 8ik~=C% 7PΠ +:B4)[;J93`[OMA!6DQ -ͷ7NZҷ3:1H$(")z?tqX +ڃdžOܨJx/sIr}/Dk6ԇϕ>İLswÉfGv_%'0Hu\*P2^AF7qVhQl՟o*TmE*^u,~ +fחG;iLSD4I"r|O%/܌e˂F)|s@A[ +#1, +0S1;i\ 1%9T́Xx? e}`[cM ;ǂpSijD +@u +jNy9u bEڅ|+:ru(eK:m1*V[%ƑZJҍ,ie_1{ _/r@X]򅎨Տb㟈*^R5ozU"9 7ůIao-_kq4[RLcR8 +a INali8p6T͐Eu_6潏C$RtB@6,2}"D؏.Y?8j$kgA7DeϨTɬ%(Ƨ$aJ[XPSI%L 9ސOls&gE;mCP` +(K̺`Wlx2ap ܨ|G;i hKUkbFvidQ({+]FLϚP0aȚ;6+s-ð< +U +mlǀzft|_("L,[BaTΘ}NƭKXOpD ,A'w!& "h<ݡī붸jEҺ@NGiZB[022T1@ڛ]@bBfU ͇C7(1_/"iPy>⠈^2>*ݴw9u@u#a!P"|>KB#p+S"M Zu42SyMMT!5b!7+wj6z+X!},FVh_)fjqˉ;@GAӜ+>L5neĥl iѶrcKLtFo tЌZhyw\^JSK3^q)2t&b7\NZq2`鯰mˉCTKVžgN*+⛒'V*#d*aM)_хoS[`TFeC]qYo~y[NBɫ: +_TqH +FlpeD@ ι[,^9$W3j7U*(rwRhsc ',ҹQK)Te9ݡCcmj-!QES}S'KPI*X,AJvBhʘ.83YJZ@7L &u:2rY6+~}Vs |Hn|וylb,얨swgRw_E*qV`LHP' "#Kt' +g*g`HnE_mBʫ!=P±nrT+|Ev9Xb&ܕ' 9 5>ޘ8}DZgFFx :_~g-H:: ccȘ>ڑ繁[UՁ崵xGj7&rtgñ_,-Ҭ!v EӾ~O9$ob +:ɯ(^Ap׉WmS +K0[vX04 j*m &S&C; *{ƛVY.t~&ϩdg +/pFߨ#jўm_É} iFCr y׮9^GCVgbZ+>;@2[c*Gs4y$V`Su0bcYbHԯqp[pn#t";tAb64'(\S*CƗ<ӵ +6VGز R9eĥ,>XC7`|R j2FH,ڴɵILIc.bbH 11|P*=WlzДQFqE))CI2sLZNq]@3p̨}IK-oy4E"bmxw݊=kAs +Ylkw72 308Ǟ(rՋ{#Dr4 Ϗ5L$'p(4ej/f#0!]#U<"IHtAS#N%"?c +hA -,WsNfu>SSP5\ F/Kc HenRuKd"6 4je}2kXNpelIRc:w\H@I@25j9\*(/->`q#=Zw[Z(.bEUc$s 97TAQl.0Һq2_TYq"4Usb +W-V 01̬ ?quf2bMۖ. # "+ R%<_mZ4ew$1^k#^T2MX"mQ!E˗A] sUECb5?Hdrn8gwt +T Ćy2YԢ+[/{>m>3ZLG'ǩ"= +cO&; (Ke.'_n$ǂ[1u&f0df219a 2Y"cϽrsr"F`*c85BCgݯB㕶tNfΙ'bKGLv4xh4Sd Y NB;yK8{3AtVL6e]qk>dPMeIpʜ- lr: @6_s5GCxй1  +b`{[( 2{9Pkׅ,MsТ-f~ޑ +݃E0֖ &O*0} t}`Em$Yw,+t_+:YGb̅ + [pk}E:UUi#!&Fk5N]*=_W?Uf[gBW4; (06}G424t +fOԐ0K Ml>fOs3;h[xMK(o\a _(w^ J>o̦!".g >*7S0ȑ0unS)RYn]ـit8%.B+)"wdWlѪ[l>DhpОA%'vH77/oe KtBQ _z| jjTwMl0g$T' ˈFaQdBs457cekjx@@8m~.lyJ]B7 z%Ӽ2MrJ+>+c+pB՘W~C'`]/&Mqg:R(Uum*aKzEɯOP>=VL)i\%՛4A_up[߫.@E;7LBPG½-*q>cSEBff)B`Ⱦ 焄&N<{*3[ G>v胡m]ؐ>u}UTYU?G񒢑ZIBM<ȓmKm\ҐH1K 9Y a%0~_VLbsےvL X\"H{;L;5&x{bU%]r#-pEk ޶;AF0Wv0갴 iW_n bn{+*  +.Kd Ú*:n/" 4bpdh w뭂kY<=&q]IĉjRl-ġO5! ~dmF:Q(J޹W0fIK`Xĺ{:T't3/0Rэ?`t 4ǭIs.8b33s@?!s4yWhKX gH/Ϝ@7 +4%ɰ5(`ܛSȦiBco`oй΅JV1t7}`t|4554ml10SVGFilter +/ : +/XMLNode1xmlnode-nodetyp/Array;children(feTurbulence) /Unicodenodename/2resultattribute(turbvalu; ,numOctaves2baseFrequency0.05stitchTilnoSt1feCompositin2operatorinSourceGraphicinh(100%d)AI_Alpha_1idoyxxw,/Def ;4fractalNois4GaussianBlubstdDevi1feOffseo2ddd11fePointL2--5xz2zeSpecularspecOu2styll-color:whsurfaceExponent1Consta21litPaiarithmet2k3k3k21014411feMergeNod24BevelShadow2x4Morphologyaddila2radiu1.bbnbn-b20n1feDisplacementMap2(b3s3yChannelSelecAxRxMatri(b4m311anim2restartalwayaccumunond5NN2additrebeg0sfromto5tocalcMlineafillfreez51cn8ccccccc8ccc1ccc1nbCoolB-5x12D_66erErod66_(771 1;20 15;200 200; 15 20;1 1 1RsplipeatDindefinremov17cnPixelPlay50 5;20 20;yellow;green;blue;indigo;violet;red;oran5Dielev6azimu8Diffusedd11lular1re0011102nred6881322(-1yx410.0.ccSta82x045dddonFloofloodblack; opacity:sCn13521arithmiÛ! @"3NQ-<AaQ0$@00@`L li>H<}c&kobe]E |rseh ]g ͽnI2L4DZCb&wUK~i- +>LQ#ee57Z/dGtNOJ+9ib6c.mx)Q֥HpHJ{f)NV\ ZB -17 +DڭJ~A-PU_VZ˜*c7I<@ 8 PGBg_ Dw s Y-3* }N\ڞO++!uLdv{nKi.۵*w\7g"`U:(QM|F9P2Xoid\Qn~j'lwNHYM8)yXOqBe!{ &Ԟ9ţ(oE^`}NjJXu[-E\-ٌ7r()qs9*PB)m\6|-$dWܛ +t8r \G A hŸ3*=-K0e/)`ttXѣ<'ƬQG3Xuϒ.`z6IS]R~0/1[Ckߟb$5B f {lrΗ#]#!=8v f&#ImoGl?/_ܝKBqDA|!;XrG5{.sƗ>rR`A<\qwz_cP >DiI0"9uQqMA-&bȂ]`9558f^Du<ԙ]vJ30!(#zF}ꭒ>8i(iW_,#ŕc:eQ~n8 Q:Z4"-֌A +"X3@쁉1>{f%`M$7<\' @zKtI+%!%(0 ݭL +w]aG9wl~xMBc`M+w~\L .?2ГSCAF6jsH>mMYNg`O0 /V ېPKf_:՜pqfDIT5QyY.eJm -&BnUA5+j)HU%އr5ke 4] lJq4|`ZDEydL #/ ^Tf܀Fs%+\$o,wT8e* կZ-R"#b̸"_(> 膖7r:] d? H FjǮ\qh<ˑ5[ʘm0iƪZYy +-qr| շ$K 68TnPf,Bu~eA/z'ɡAG=oP `m\C ԊkzOMI6Fd2]tgxW>:oJA;K;%%PpeH ňKʒ{'k h"|6ɛŁ+NfNnd9,aNdn&?mayg}A%jXiXNIbI1VYw<]-T iCxJ*Tp˸FC]藇;VdE]FS=j… +j`eˤTq )`,mOKJ v9セ̉wULUj8)`<[ar z=^|ǘ~)ˣҿ5\ߚ ͫB5u{)z% V[Cp'M2UUUUUUU"km)Ro)Xn.(Eh-6LT[I[+$O?R&ZUH(ujQ (="pDiH4iVkf9\yWjሰv˹m6m7 G&/n8\XŞ{%_3w\0߸g1 G5K_ͬ^X41EVaT#LW5v׵^L߿m0_͕s}:Ʉ eL`T]0AA@$C<$ +!y\0@+qE DO2ʃ*q<<$'DD<$ P@ H`S%`s֘$ !yHɣ0<@9 9w,R ۚp7l9Wwml-Ya[e]fm{1=7un9 nUmbʮ5r]=;)glvsy[Ϭ6Li8*TAW7sQfrduϸo?t˾*ojj[M#Mi GD1%PMTSE4H*dA<$M^Jb`!H|?hdA^\f&f jqR3(0e՘#33M-Gez!@b&^ sS-TnusfXww/3ݭYQNzs7lpT2Y33Y3ɬʞ̘|~l) c/t~3gl 60 tfAg*-gl5V *0 1Ơ;~ec._U[?19ue=rR]-#4 qi*.˸.;f^;5LQ]Dz(o(+c^}ws'0!L0B E~L ؖ-[y߰9 jqt fhSIegPn[1_.S>*r\i8"P]JnAZ2̻eULm8.^$@IHx +'Rń3A\DMH%c{{wCxX_ GV3d]#[p85}FRԠpD!yH!yH!yH!yH!yH!yHpP`bFxel)'l8".Woc,wmg͕Yf wrcj 6Ֆn5)2vm8& t G kJ^nV/Θv\pD[/eZ ՚ڌ7 mKa~]f9u//,^yl\3W.1޽JlV8p_]ݥKWطvi{3IR 250HI`"I0myKEXP3QTы$l6Ŗ;fv\r 2g[ [3,oŁE`l5m*;f߲hb-{}ˠ7`fMAgatt|l3蘆Atcs zQA;GIPDȑ\3՜vjd;ws)Yuͭ/]VnZdf]c+RDɣi*4iFh$ɣiɣH45^vx(2@p2@0׹L{eΩg2@`|uMiSwS\stKWɜ'3fޚe>snݘc vS[[MnZ2nΙU[{֪ښc1@5l=.ci澳n>kޞ1 } s9O߶ RL`@On7=75mRճmk֍i/]ɚr9;lҝ?.g۫m{ݵۧf6.ۧv[-ٵΙ:UkoMvw _^l_ӻicgs ȔWf3to.ӽml%֭i3e,cƖd>ot1s߫Wrw]~{wus.֯VYzֵkeeTr{۾]{m}s+S|vʭ˚R:Ͼ p2Lu25Ylƺe*s]\em׻ Лuftkڝ:nNW2@P24PhL yݻ[:yY[d,?U}s]oc`ggĶ͚{;Og霷jcx/3{m oXwz7w:u͝2@`9Ե96ewe_ey p[_{S5\1@ЛOVso:]7dfKml%Jڝ57Y3 2^WΗ7Sǟml53@ ;eu;fc! PH4 G@Bz#AH\DÃtq,F ^uaͿytZgɼ5{\ӥ0Z@*e< +IxDEtLdXDZLA$ae@ʁ4Eخ^kTRQR[+ʑ-]ueޚw땞۹fT (J,ρ^ -^T0xO@A6xq`4p9'*҄i-m:uvɞL7l.DXcޮ1g]nɩ.ݱe̹.^M6Ɩg;mY;ocwe5ݖ^O4xTeBPxlj** W9Ӌg09 Mx*98 E҂xQ"(0I"M*U4 1 vDE&R$-P~ I¢"8O@s3M簢R! XH BNE Ba$=4y +)Ex&Lq..z(# #EPA=9F#R79A "]8YPy& +JTH$Z#bq&H$T#= %r'ã.BZVe PpR^X&T&UDUT5Ab,}ɲH*z$mð<ŢLEHHEYhzS]<ԣ +SEβHȉEZi0"ɢ, z* ң< ,T<ⱐ, "-IZi(QTar*SUHX*/z GY*t8ꩠBzkMkԲHX G'L K@,b@UE (Rb,,ʂ*"Y(i&h&%pBR^X<5Y,EEM)LE&S-4ePqVY@,]8iA\XU$JQDG]8ȁ*, +e rV 40!Uр " +PFP@֚S 81yQ.ta@pE7ܽN)GdÜ?y݆˄;R,fPb5d&;rŤ5Y&(2R/x(~ڬ-kګcG]HCԓnK! 8-9I rURန$>"yCQiauyqR6bm#UR N 9 6,6v +]'ûUZ7)@̚,h;9 ڈwnTpic|pNsp $eBz`i1u |On^1|{l+B8Y%Lg^an0YhoExN֗"M CAAK s ]j+Q+Ŏ9so뫃K4 +dR_6npQ7y4єzTW<!:0SF ggSr>&cMFM@&*} oc>D*"M'A3]kQ&6yh\/HG-=/bM+%8,ک4#aY P m+=!.Hu>]šڛV +,/ErT_h*Y+G¸CxCcp 5f0*x~0k&9?푡$J Di<(`ؐWX-x`C fpà%9iMNG#2SX4n՜잸 $8=Wt5xVk95uarknApBat(+ +X!T<ƍ0+cfs d '!Tď}4֠U"šq|TNuUL܏~LzL[ +mΨLojsbE!9oeodlzJeR;Ⰽuhpxv=_N8'am^[d0 ;% nȢQ9u0F zoSO+')4^ߢ% Q&ڃJ՜*P{1/0-4fu6u5Dxfc։gd-yxA攞=b+VEKkh\T 7`܌/#E7\xK$o@eTdYR~L#c6"B;ʳUR)$I!x_s.tCjqt5a(XasJ?0={qO2[H K +=;ia)) -c?I(l#Wh2 *ChL)B.0Ϻ{dE=̛ [la)9 Nİ0 b4@Yo.E +endstream endobj 152 0 obj <>stream +M"6#:nugDWM^.&B2G1J񼂖mHVI|dz;WK$XRWTmzcڎƅi&dT$Dhb۠rX' Ba͐Q:st\jXg--8I/ ky)O2qkJU# Pn5vkzPR=7 +U9}B|Rq^`b \@{@i?r d; &r-HQUSB5!*T- rx| 6]a|Td2Ah `>فD/L6NG(mIWNc0r ji7 82zU7 +ϣ<[ {[H_He73YMFm6#ÒG}9UBKI9봫V~75WbcC +e5[)fW\6Z? I+{ @HȒ,-kl + +ZKWHTkr3䭍`ԍB^ F0aM* +ܐ6P] p(LB%JLkuBLCtx_$]⌌QnSL&:N={Q'gVqrG竕LTx> x U(syXH"DogҸ#rs9Eo 5dѠӐn??09 Ud!ۣN-^TDVgݤ:Z$U?XV@EVHq,=]S!6\O +0~>(i\SC}󛗁9yП7|H7EtvW; +T +QRMxC{Yn,)W C)p^P/H,d[ -֠aQ̈EhM}$K*)Zo$+J>igz쮂 ~Š)a;sV`,o%#fX`!s٠#„SHzcQ~O'uWZ P we!ZgW'vb;QVEGEN؄r'#UIPczlS?s~OQ&Y}{@ =aЁ$h;c ׼I$ Ν7M$}nʺs}iN{z{Ml%z,ȇrnTP֙7ƕxLJxP(!$ctŲeZڈ[f&R뎶"ԻZ8}t0m訉P}ӈYm^%Yyͤ>);\X>c)!E]̏.{􋋰'R~{WxB=) i[vc"GfqaOʡ2MݥTk/qnEcJs;)wCI+Fs +x`'&]>A AqM ZD|Hr6Zm,<>235RHE;' + {GKJfMs_,"y3ox-Hg^$luErųj0?Fs9otZUIȹ{cK }ӉR=ԍiJAU4d݇'JϜjSL!P'b[_0a$KJ]ԻG /R./WVFa=k Y8AjX +7w E*fINMT `Z-s$'-DN D<081c"pxz.|h\?47<1v~R]F?2ʋ%pH}.WpxHYHUl~Խ@boLDvӨvǟQ +N?i#5:1Hh0)0 m׉ 98-#= +&C@)f7ryFBVcnoQݵ#E„&%IAA>=Q DzD *ִ^h{ུeD:=S!=P54v+<),O eZ%}u!D  #* Pj1=I @әioՠ؄{&.SLmê4dBX5fuKi9wWo pݕژa0 +q8^`71郅=6Fהk!</"ia1VXl`_§neu jLJ-r(d1@؟2." ܒdTTs遏#ϐ*:BiwyQs$B̂b{L++S~.gƅ3.krhlA )ʣhP#VtH0#<pA9[ D +SUtD5olĠ "j&^UyjD"_aG=D[Uk<9Cv(ޯ foPaW1>_v[/֤\13|Q +75lD |LOWq"iQ6^gԷ!1FH263a,C̕tt1=y.R0Ej!)!cIs!^mV h"-z4G7~n.9ԅ [ Q#~%!:dY԰h TpC6iܑ^MNޣ*^!t߁ǖ=-Fe[2E/I7;+Ra;f@_ȷcxFu|ѿ_NtY.._#qәJ%b>%Ϸtr9VeExsAEbA'5EqӇLjPy98yYd^_:ٓ.^d~LSC$NasAHO֧[S-s&H*ZE#tIaNb,[(m( Nt `tbffcP"Dh~Bu9uաg2=m$аo˫Hv"j E"y2X]BSٔ k :MpLD75e/T߭#L5x %#Xʢh,]# 0Jqπ2$/KGz mA$Eہ_jn4ywŵ@*9plOa&Bf<뗻.Dpdw4}a=v?|0V_.Z],םXeY?eyMN_u3@%!=¿20 (4JpbPz&f>?Jhfubާl>NWVnx^^ǣB9ʂ{H:Bw>ZU݄7s3aO6`Q[D؊@,>dGtQ иPG I'"qW +TkR]܈oogD7twqеGIBk E?QؕE]+Yl? +RQ5H-/2bCpT2%|r3=xfJil~‚)Ļ9!ջVthrɤx,xIV%0}?HM|%ֵu +} =MKc| e7j¥W?xyzvpӉǗRSQDlTBF) +K +%ǣAC2+Ƽ kkhAZf/0֠ue9¾beG.S6B&T]+& .A+7F#Al_5mvo|S̖Ks(4A+ElL'=bxM o]crGI6жqsko. +תsJB5T*."R9f)H3#O1Sz(B[%&=IHU0[gcBFF~?3Q;} *rDoy|5k4~;pg^+T% 8a/.pel艱EOЂ:Jq)ki@.^6C$^Ylt, BgGH("ɕ1?!s^L7''OseA+3E zl#W,%rJTf'$yΝnhجQ}'?SJAdRԯRÂwSK^55a nbeWɘ(s- fΗC-|.(VBkLb=I0e-&Hua_2V'\e}݃// a7 s6'68~W%$2`!dc4 #).RD3Iw[J?LpK\MC'#Q{'i4y9w"Bل7Et A6񑲚wd6~©0Gf[?x>@P\20f.i4O^E +0 ݥ)@ԣeIڀr^L"?]VtP};J,8JΕ=D.ti)&0F-zt4fLL:.be 3:%C;7X{ʬÈJB W~F-YCwqh/As|iM/E +Bf>~w;4N5CQӪ3\,IV LZTbiT%tC1pj7!N42цZϷJ ldX @Yjsz+ţZѸj fUzI LEMz"# GWஐIg0<_-m KMٛUQ6isH+4epSh*?s:[F ޠߨ!G'kg/N]-N^Mn+L5\?|Ti`NNy܆F;Sp?uz 2,,e Ǒy$0 [E 憻%s:,Օž8Zhb,IjxMǒJ&Q-#8`u=Wcݙ.0T %(sgǻ)_QH)K6 ?x(%kОB\MXwwph~-K9pSԱ+9P~5ÖLT(,nÝkYדhz0 c%XYu%)SH$%OkS7B e \ +po[W :ƛM0PE)(XCe9q>sj Iج" L䁮[RM']61;(a\pZ`'go: +NqJٗ=RcERoRU3RZ5žmEEE$6!i0BɌllrEbZ1OCzg!`\ ꛵IS+wJٯҎ|ua#m_#h?uس{Ѳf raΈvliTH.zG#PHP&A͛J&&2c +̅u2)gQ倅rszi0,[go -)ag-d A8س @`p +LuD<+t0Q^h6\t0&vg%O;'}A?K-t;lOkZK.K)]NH1rcD&%\rCA3PZ!`aCXƒ'%/}P浺y,Zb{¸JP;Mx{UBZO s 4;^E^݄QKQcKJط; + O_U8nK٠<_LfԣS6XrȻL쟇[joG"ݴ5ҔEJ ]S/w c꣮7d84{϶F6R_%爣ˎ;l"o=rU*Udg'؏7@z#:@Yb/@r T⽶@OZ+X,~5an13 Ln mNY޴2&Ac8MkP$0~wm)-|>Q4E4²amiEj-/҈bzs.W-݊WDBF$JZ[<\ 3/5, Jj4$ 5!E"2X)%҂W{c V:b05(i7cIFL!I`jZSf(i*sesNS&`,D99e̦٧j-6< ծ?v2!| 0]~]F4mum~_F'QYb17ʥ8Ϳ|jp^^J{m[T:TdB8.^SP٧coq|HZ4~oӖ@&mGߟ eYtz +Qd"# Nl4<1ϟUr N=_E(M=S|Ѿ&ֻLcevNmtG&=O؋B=ZL*q/Vʋ[XH|E6"{[u)O1s/(!x+oB3]ap \8qܵϰDXG-$[3G7 +M.y$gTbkԻ=x'WiAQw|ژiK"Ю>-{83NXh'g ْa$Nnq q%N x +4ܑc][Xğrس^'h ~@yh<͉ +(;aQJv}z@* 8= BKe:,Q.vrONc?pi=/ 8d8Рj.{_pt d;tLչ5/+5~3גe&`\p2@>|fUC]~D.@cA[9btC/FT[+ycRott:+ :0IZb)0δiiea +\g 2e +DC.2D3dx>n<!(9&⏒3:UX6bw 0f&*U , 8`C5P h'H~\\ +Cb +5<;Vx}..fQET85^=j1#;̊rY@qOHQ !%SP +n͍\\60p{J*cyа~ƴ4QO–$)_ !~%=>F*cDˆ{`zP[HzS uZ\\ċsgm5!0ZL#*op]8DuNIl'iLG.J1nlW[J;j8$9*㳗8to+miTZozLm܋#Vϵx)^,l~8CEe&&ah4ިr8]', +4ҁ"w24UׅQ:o\&Jl-z*đ2hT*wvU}{>dׯAD3@Έf%jzoneE9sq ey_N7bDJ4ZV¥qkapazSe32Yiˢb^Z"ݓE .+l6v_RSiFBcȷ32\홅W|zxAbُ,L %0-΂\{t%@&Gݍ81lh + [?ԊgL<)u/&2, t +, Ȇax.~ɵ<u6mx.^X -D`WRPyv JP &:AúX2J̡UJV2̃ÆX]@Ԇ'$$$HfCC! ,> 1AKd4j,1D]BS<*ܬ;* +bnfM,T+1`:QXa V7u5@5@Jar-HeJTHeJTfjNj2pgk]dɜ9m LdF2%%8PÂCĈ[B@*Ù* U8 +=.Td\5Z}2az7B +8v\kbi,#D.ĉb荬[m&zQd6J%v"gX^q\㈂ +=ѦPSaW`/vx@^ È0C埂$=L@y 1D 1c4jVh{bqZYO:F#0M9XJ +- +'%Q5\ D 1`#Eb<h Ѩ00ZL%x! H *R%Fz;F@_LPa:Qzi@ xhA%E]h~@VZPLPz) QI l(_@ 2-@7OC!PÎ,B ˝*ClШl3 ҺmŢKB2O/2 +:),1 ̈́ȐOMCt`VD00X(@D()3~ !6o"am$Ȁ4e塱r ؔ +<v &Yl*}-(Y Y*Y 0p@$0(]L$dXC0Dix:F@O&+TgZszTdB3ntZFpZ4XhEh\PoBD2-FZ}$lu4 􅢅jbM'iiXT,p·fPPΩeKgj"RD DŽtB8\bRak#'v +]BOF[u{yh@j`0X4T0YRdOQ z[hL&gj&G5VX8h"k&ʕ1SY@7PvFTd ֙zd# iA> +vDf6VBw@O"%$m3u"` `πMr6CcuL}Jx~@7ς!h.R1&"%q Mh% r ACSպ8 a 6Wә5.MpBw r^QN13m1h˂Ԣu:FCv.FȥLQ11h&[X5uNd=\eP%1CCЁQN9hҺR06`C0Dl(ʣ~]:Ѱl\9I5,T+3>-l:Fc g/"ivXTGhA!l s6EL2 :u;bIJbXc4D,10jT`FZUO + ^1H`tlQPn2={Xc4TF[-TDq<*x"f{ din!Db ={@9yæ)‹1["DO7emI.rtA8LÎѰ@Ы6`S{y @E{:FrM!PC@;zJ +\A@ "odxRL lYklYτk1r} +`ğ1P h*Tۄ^(<1=$/ȍQYTW29M( "@0ΑCj_"zO-MKh\D}{&`B$@fFd`46ٛ`fP0Qy@Ja1>c*21 -ԡB b 3f'A1&W*Y 'A@Kȣf&*#Vg'g@ $Dzem$Gh/nfTd]Mqzf = \D@|Tg P5) LYRd|, "虶6cD@ 5C?JpǓ11nk3esqC>-O3εG2:hu3 F =GzjU`gVT"@q='"vo + *V2-G֏Kkq*|^pmG|$whϊ%$\)xPH /YY&$\NRbuBAYHLb 'l j竆! 3Y8Ԓk+ 8!~ +^RrX7$PL20Dŕ=H? c4"Yd_ЪqB4p+ ˯b/P<ǔ +Gñ|Z3RbςB;FãJuĉ /Wx `;FMv}cG2:Ftݫ.n 0:`<+8Hju5kZHf~1m "$ѠƱO,̓U|l^1fTJlK͆Ce8>rWPtBB +5C]H!/gDce,f#MSziwZjW1ɏ+(8ӫ . FB bBNdj'6YfPxF* n&ԭ{plfPH}c><n y9Ca4~a2C Q$]rhczVj%๸I9`s 8&̿Ah$1fY2K)+a2'҉D(҈&a􍞡 PS9;939 +l@6*YRKzyhܘ\@;PdR0$\0R(\`&gf(9%4Z!Zi,ﰕ@d( p̗MF2}VDk$-ɎuDp D)$|TLвdF n 0^y&TqR =0qCA ՃfmC5=שCS/]F\cjUJbID,HzB hp`GCkh(HͺRȂhC = +10 5* zM`̎ѐ 5$qd3xPIh!Tpx׷k)гYlLgP=zPC0JK]N/ut`ur z)$$9Vhg~6f4Z C @ȉOA@cG?Klk&zSja'`/LcR5KЛTCoѻ#eh(.z[ GahP o& +%f*Y7$$< +AUJ5lS@ХKkh$qafS(PT-: " +6%BƖgʈk/,.^`cdc;F㣭bF/ & rir&U"+ b]Bh +$y\vTO31 f/tO$CD@^^0 AЁ GAn#A"Hv`d3%U7H+1^8يB0>QpXbfdB[8#uDbQpOtNʍFlGf8}=J8uQwh, ?ĆlN& +EX3)X"$݁3 C2m6JŠ: +^!CQPYXg^[_Jݎuf+ϧqʮsVj>|_?i3~Sy)m}ocI+|//'}ZWmg4(VAZρ)rR,:^ϝJ{os^k>vsK~ǖ>}2Yg2c9;Z[] znunm Ykx^Lf6)%Zb^K'QAp3oo]̬&Lf6QfKb5@4t, ,L"39ю|:j}*D]h*D.łmyh.ЈpC,Гx ց0^rU4/B\A5z +Aty%c FX}3Zh9*jhjUO{kMf\ȇp;F# \FJd]퀋p`O$F,K] 6e4a4{}+Q|xR/L0 T0}EZ)t0tF"),` P>*ؘ8Ho6gvnuPHN[[V`&$;Fa#=ek&UQ=45}̃ƻ\fpY2%XZO0SXZ,T* ${` XF"f f@y0>Qp,f{*X8`KACp +aY* YXcS(aaqH.Z90B/V "%p"ą23l.X%dQLPѰUp`_`BA21 "&,q2^D+DT7ѥ +%dl6Bf= +n&&;$= t0aG +aB +L +2 t,ʁ:J>Z= +(،1F =УHCr6V<d-̣1o 8Qf3BV +`40`ƾD\cJ@Bt/ATC/@2:8A J''&UpTWb?}kahYe|z.[kL &0xbШD@ Bd~2)n2 # +\ +r&Z/jɎBkB +E䰐{DB/!)>܌Orwa`zNT>!xPCYZޤ ވ/(RO0Ƽdc2UCɗy :؟jا +ju&I:N: &KQ)|>$yy]r +c4IPFW\Vp6fzVŀkv2Y?RWNI@F4/Rwq +ċ4Uy㉒d + +Lz,/PW`k>Z|&3HԆaZ 0 , +?"B^.bNIx\P,AQkuPLxff-9M6O_'KTs"<ƭ>/?YHL| +`ݡCYf)q,YC JТhHH*Zc"gvd5q_ATe5]-V"Jg l0Ssa|#s-_f`W T"]kfC\ɀ1Yҍ.p)9Md`ɟ)|P`zMLb2E/[0R )LLthLۏf2>Y73p)zς +-1.kyлi9wGLm0+*\!Um#)lR dRc/ V2$FĤ"5Js M>s2=93+kO F$< Hp}ryts<@2_P!CPԬ1O#R>гgu PC\,?!&CP\&S*-L09^ |K*sh<3$ rR)CX0RkjqAYyE`9UCC[JaLOdmʼng$3Ba@H^yc0~ +4ʜN2ˇ( O^PW10c ==`!ОEpaτqc&ҁT.zDV1ςW:Ck=t25Il{dD< X(L!a!DU<,(["< S _.^`WD/y9I܋BڋV( +\rQoLNph<:ENCGD!& "qie$ 0S[(L3&$&3YPHNMM 2܌xH D lh-3TřL s B.A,}u;߾hp\յVZ]~ﰴml%~A_}ۚ~km+0ٙw։3kR*:{/I/)6Kgj7Z;Mgݶ6N*W<'=_ۯ3oθIgޖg[i:l9;YkO:Igbjz}Z,'*[+ŴoZ|֊e2S9*t֧:vջ:irV:}srf?wvZ;3鸷3ƏN~_ov祎*=yZzNد~lIou^x~9?u/uJ̶mo3??[qmoIwگ|9nO=M:}r^]瘎m8[9guԻ[]kuյz0(lJѵ~maӧ*^o>u^ڵ~{=3ߗpVu)us`~Isqܒbʛ~7NJښSw[kUVWNͶ|㷸v+N=:AsϽzIqSm%ͳ>εʯsdZsӱw^㱬]z;~ηb祵is̙z%ZlyiŹhtvݔ^|Tzƶ-iŸwKZmW[ҿֱJZw;/aOƟKN;ﹱtΧ~lٿx^Iݶ9ҫm͹=\_.o?J0u^J%^sn/֗OJ34*㌻c֋ݩw~4mKkשt-/-N|O}9iӷKkkkS>?cW~ʹ{m:s~L;*+a3;SѠ}鞩uJ?37zV;yi8;?yyllo}mcL_Q_0׶߾|6uJlsn٧w~ٺWLefJ9<9S<6u'.i?2ZZ%Sy{_y~|g)sJ튱v%ku|J[iOtl81 ̌e Yj62?~|㿞1tVvLy-ƟJ]~O1vꔶ^:&bti-by/=+iѠXM>SV1gvLl6n7|oO4_Z[yޙukg6w<ğ4[Lqm:3Nrx:vվ}gTS8SJdhlӾ=O\m%bl% .cmo'9]b,chPڧt21KKʟs:dXՁ1`  +Gt1cH*J>@(, H@, +1((r!; +ﳭGfyx=h, NvԬ0=΁#ܗ} !De,@S%utrx@%}3JnPW), xmo{{C{r\mz֯Oz1V,A7罰q&#>-  [DZ -usC2sΙJD҅EDjlӏ(iZ,ܡ}"[LQ=~L/M0nn2"kD\ˌÏkn"H]"hhEM$u Z&"4fiڮC493.&aU85\'oq#QtzcQ\ +Z)ՑØ~>_(/C%@g޹mT&"sAsPyR,-7KzmMup$51QZ4tv!1r1tLH(;!E11 \ b"z՘Jle}4 +7e` Ctt +e k:@.h?^@M鞄ZPƬ^VN.<~I~ ?*P;:.s1lZظck%&M哱M:M 5t +̸;† 'p|ᡖiI?S3+@!z""=T8 ]NnӛS 20,72\R[5ML:. +%pJ]_ȹNL40H/^oLzR9s +V-TxxZ޵&!{][잟ulnZ9>ɭY*x!ٜ&cg3LGW`H=2ى֙X\.J5č5 "Ex6řY +fEʲ-V}ødYj~7WcEN3{"Īǰl0ߡ} v*:0(U1sm[&@P$\@;k\W +[9 •:7TL kF:I ֙8/HiRiuޕݱ*1S,uXp6X*xoqZ7Hdr(eb SkTL\1:q( JvHXܭٯ$G+zo!J !"P +>)i޾`0J 78$(#: `,7ZvZW*n ׾UI%[% C ljҦL΢e3 +X~|(659 ptj;`}ZH?d@ĚͶcg; }*kmC:spw:Ā_fɥ\;w% B$I.[β5$kg] [PJ U>R?] D˙ehh!COm}(H=0K,s߮d礔SZ}\T+ض' +|$0dGo-#fvSi!gqDB=حt'CYrC!Nֹȃ/ˆY"J"; s@ c+bu0g̓db6XI[Na)I {#h3g7#@ iE +cVoњ0v޲Ndmdc8ㅎ\4 f rҘ=^b'y@_H\L4&Y"UZ7~¢+ x_*0V!Gvv*遦WGqH]Ve +d̓pdBT MDa'I9>h1~G9#z=5WZ.w%Wd<#sʀY tF9 |dC5[p3 gY^T@eF97i?(Kpzck)  @SA!lW{'n ۵z&csW^eiI cN~e0.'pnZ|zS:=#y?pCīVXTJYrYot(y֣'Y#3[N%zCPt5ծ#`W?u8oa8_RϥK3^~]o}RLfы*"uAD1:{0mp]7M!9K/̌=w\S󔿔JhqNLI MʼnJ-*/"!w">e4[P9qq1m]Qq-Jt|$PZWs/t0 +93i"^}f6Rmf"jKLmŞUDhQ:KP@f/S|wh#FЭ+"OkNED Uwbx1=Դo#cn(hJ޴Vߍ~7Ϟncc"T:x_qg^^ +o5FRnh P[b oH!]C>rND5TtSO ٦kߓE R!@΢՗\XPE5S dOYxl+ùͰKro%aL+T$NU*々q:-7@ݕS,ߎ_Z.Ksp^3hz_n{"6wuNX +e}Q2^&|Dv\Ҝ5ȱ(ޥ$O=h/.KE{g׮۱1GjD'^+z\߭ȏD+\:S%n3xbfSUץ=10 ކ#Z.[_+ -"dHSf>oVÎvػh+7h^$&zBT\A&,ylM342%dlZ5w~Mj}a;dچZ@G.I%y|E絰[a[h3,͌^/Ea098R& W"Dٮ?b/ݩq6n`y_fӤ"=BN~9eukp;^/֩lIkQ'6&C jTFk<$h6Pn~*.Kó#bEƇfXkj9=dX5wQL tToPU prB I/\Y\d@yNO1Ա-Q+<"|[W\p1Ĥ#D-$T_Dɡx;bƼ^J^ҷ󞼗Q$nZ]\솁 Z9Hl]IX&;zT70ɚVF /e44ka:8pK0>usxaz2`Iᡠl'^A؎",4YjFTKHtzFs59:z m"7B4NOg%+3Az(n2Ǻ_JhVJ3Fl(y$|oހx _qPOvte{tѿ|BDeÚIrGf.HR"MD)+W,l%0bsy`")YY9QliyKw#Vː'28Q\Nl DK8۟:U' iL^DBt[ssrVdMOq'ąҘHƨee^v +ZqSٻ20 ^ƥQx +#t %Ջ_ZZ׉AM\Sе疍?rgkkadE,A6} Ms͌ 70ڈb뎨xA$d#!h'kdfN4'hbWϥ3wq"zIv\?c(d`Ӂ8"^gaOH /"EXT]BY)XJpF֜L@U&_u9>"awmH65 E#b$p+eD˼,ZʨpY]~*asf1Mkϓ/XQ؛tK5t!7?l@*Ea*Y`ݿ1^O& b +4k'gڪcY,ř[^2:ֆ2xkhOCB@ ӺCw}`$KS 0vr柌i3A,#-ENՕIgf /N.~ L/ȗt=]U'~`#H3WvnMTH_ +GHjꀊNa*}e=^ykçFyKh\W}H"8#" +@{ +́fZ\>{S2`2M +^j5ARj +\ht鮵(SG05[?A++Iϥs:e("ɅL(\B"N,Xd2ʰn"<ʄ1@2g6b3XnGwqxGC0;Fi T/.M tȈ ?|`gyn*nL9)r OG↳Y93c+漢zLcFvt)`j GnwZU^gs񇽼TNlSIk CX8cHô!i+a".-)8&ZOm6C'J2p\ΰ?߱=" Q'l2XYFv0oEbVd|Pޚ[EYnqSWr Orőg6JIU +l?fy`x"BG8x^p9xG +~6S2Ukaَ`U䤶"Ѽ|U$[B *ҙ4})MfH A**R(=A! U"'ɁFjQE"H1!Vd"݊hqv3*r"[$>"k$Q"pGy'Y[Ya2/p4(oР:2 G}^XL{V_*L햞<"o6b'G06Yq(@rP;^CPpabyJ^MCi+cz~atH &VwHA洰F 3ݝbZaGlgFEZP6%z!Q]pFӲsװԊ$ x78 QOn"47iT k)Mhu/ -iρ:E8\Eor#.JJ_-_e:؆] JkX&e s\)uRS(3Mw7PO%SHNm޽6(q*#eà%YSQ@BIimTqb.N5 XM߈`U ؒ\ 6g8 s6).oXDslQBzY/{DZ~B7>2> zZx31$Ct92ݗp{e~lTY> kZA`HpF)4ZV'6dH{_KAYPD˾c,5 !532YƄB&l\4IIȐ50TeEE<_#$h4º6brbWI]2 W~aux-V]LE0fi#ځgiiс2D˨KK4+ ^=^j{b~yؚU~]*NDa*]TUc؋Gro9KU@U.fwj~ANn:&h@~fanrOT`s>׻z 5^e-dgYcP}X%lEkq*x.a蓉=щz?CF}.4e0gJ{ŧ @ԒcN$t!CO9uN Zo=hd1gBCʢG=2m V*ZP 70[W7H'd5"ҡTl"XPpz ^I( X";kn[,8[ i5s@6#rwH!7 \"hs iO/K+'ZTm[BtO͐^d eb^@kӧxpט{#U[_} Uمɯz>-%2Cc[7;Ѝ)465/ 2bns}3綮yCf~'jr?]Hh u>{M ‚b[]4ku@|%u^-Y(T 8JӠ!'fciBMg\8grc *FĿa쵟X>tZ-"0Ko{o4F*VjhFl[ +LQ4$HrѽM8XjhDpp@fk%˺C"8KtfeEܐLDR,ؕ1 g5۠* yծ_J9X1.nXWY5aV^f:柪K"8@7,&wv?i( +"Dmy(X=ud¿̃+#2+Qj|M3c@ 6y|`ae aEo_X7 ęDgFnJC{̣ ]C6t9?iqUuRjҏe霢P(')T>4JǹI8nZbX[+#Ȭ]\fx86`L)+ xkr2RH:&/n tB҇88 |ck)%@Ր<+`C8tؔLMX2U?8N/o\L^5ugd"bi=u} +ZiYvBKm *.; lGX:Bq*൅fV m@/hC= +uu7:4gXO6?}5 *~[Y],:H +:%7o)ӛ]M &*u`CwPc){S~,17Ot%@ƙh=5k3A>Q씄hcO D6s|Gݽ q/:8 :Ղhm(p=y`?*9yQ~Xqbēc9}Bzit"M6yCti(e#֮fV1>E*=֕÷+=] X'p +\ڧ>Ӳ*CcԼOjk/%sBHUD8|K,uDa3*)ISʱ(C8z5X, q'b"_w>>dIg1:'i\3ER?q -ZAy)`adVѤV8`?3쀴QXR|lxj椕AcX(%uhu뇨ѿ_M.L4uy8jb!xkMK{Mδ]"!>̿d1C +lN.B7VF +}_zx}zXN7KGHFdzx +.Sp/ p2!zgc ͬXp섦+WM6!=,iDT 06E8W;eE!4E U?NIs"j. +M>ODm&!S~ḧ(Rv4vT2j:sSzD,[4ZP>Ae=LӠW880qvN{U񰜖:äe VRU9652c$YnC?UL}nC!U&=xKv {e+?=(K#+éq;ᘈ7)GԢ'GrDcc(cw48z/ lI9)zCJ2<>88k)J*=땪&,mb\( z8J7J xJ s?Z:M[ja"L|.^aI]HsԾ +z0 M(==Vԛ+6/C!"#`'=1X`,.XByK<)æ%2^M&0:a=lϟh_#b<|X*mۭQl7-Z7 `pSC,2Ep|nF|&t-nAvBjU2.U^Ew$·]kRɇ!w"8rV*񀍡N57h[b`mZюh!@/\ԘL7w;˃+:ov>($b$V7r 3ZbD+ѭtwGe3x8&Nٴo@l0^4;1IYՐP/yU#"f{r NC7aM365*Zq\g؉T]̿|E ˺ɺe f kzPz屑^>Ns% +Z<8l'ځ OmHDL`ÞK +5'*6AL/$ o%9^ؔ"IX +hP*GT=%ud^ph]mC?6V=G3`Z?9cl$v- +?B,W(ӧjN=;@Oér O'U<'VOd' +*B|ɀlSS<x;啁7@_\bLVnSzZBiCv\2} vf?K1U pۓ4ݑ*¼E0{>z!|,IHDS$Sie'xK }% b6}?"FDy-g#FWxgjVFA7HֺDiEqXCj"ۡoUS|Ӎ`/S\cijx}NRSРQQa?࿪! (?JSƒn̏Dc>ý* 9xpBeEY`+~@y k#L6mh^m`Ӽ=s]Ѷ}BczT }HDP` m}E$Ai0<7w& + FwrtMX@:4^$M5&}OG4wOA~&/޾71wDf7\(3+8`DPdB_#S_5@iel_޳Iѿ+~l[ל墽 Ɂ'w cn"cTrEa^aeW"PIxW`T|4LϤ=ej̛°@'DɑXJ/}ւ vDVK>=)6핉C-K_'UF%r. _T|GQhKntVA53XÒG$h?NbtH +L:r͡ +RD~'  1'hS[l f +9Obm ~.֣GʗDȠ~g}5M =rC*)J :f3gon{ʻ\ϯìh`pyMOI)%+X[dHsrpWs&n䘞ej`) X+u"ǥ}۰֥9o_zț mm&c3ńBel2Q 6i48,fD<ՙ!ljA +*L[:0G8Uϐ!d20{6Z>LhB4fgHzbGh XEkH/[gZauNw2*)$bLèX\B4r;tb O%0d/§Q[$#1BY]}bK;(qPD  "!Ff o +5vM"ժZ ޹}ciwy}DV9CɎ3.R͑¹Y8#T1/xHb#r0-UH5{v9Ae\ +wtq9Ō#%'e$'6j8uC Q)eLlsIZ󻕭A.hC Džw(-P1D"3X%*_/" qI2y+ZAq׾+--jajzC +n6 LOqM b G 69^l?@\Ta#MB$Y+$K8ʑ^ʺII0% {=6^9`yoI Ϟu_70h=zb3DD:.GC rɻ +h85?䏴1܂f2VS HS:<1p|=BUL5"]A|9r+>SDAaXu⍺u|WzG?ML +D-5"uHH? yo퐇N5#PJ /gL59_'SE]qv5b IJ&k"Y봂b'n%WP_Tm3&G[N&L. %(MM&.-bdN+5&3 sǚW:ΟtCA/A84>ܧg(>Yx3( їѰ@owvEAk/zŒhRYƹ.CxHt'㠄d)M U[T>@v5\q(,Nv !_/3u935r꺨 _T8S=5ψ jhyzS8$;!}Z 4cMfe-m+CuNb*a1]VUy5k_fg`& +Q1l 1x-m11Qvk,p/cdKq[>l XzSjH8-AKuqJH-ܫd&'SpyU>^v>kƧ7fG0H/cn0xbv^[Si&trwX VE:H˜Rk{[/t+@ BR; +!v' eP$WvpF5X+7׾i hlog+}eJfKh+2G쬉mq2f߻)U30󓘴g|bryp։" v@/) SQ6 +m;!-ynܝ9Jf܂sH<(> U 5*kx\-zs}O; /6]y1jOM>\Z#\g "BX*آ?&$,-߰ OI~Lq9L˺HUĭ[, "ی ǯl 'eDAUi5.f3ØvY 5cQ$kDv<]K "qdU-,ذKkK<_7]w~^0R056ΠK&,Zh fOI N˲Bi.KsrJ_\Za@7oI}1唐\9q>%(}c<>ok$42,0N{ Ր!ů[ 5i0jFe<OM#h`c30'C/&ghhCMQS4ҧ=ڬɫq3pFwR8G{s +Q؀ʁq8ܠ/VkibZUD!?mkgytiJ&*欫oƫ$EZe8[tg 8˖pt8z޶kz#Gt'!'RJm-RDkG +l)G`EuPEz䐄-od(pDĺ!m΋ h$w-HZa!i714` ¨12wdحH|6!17KQĚI4 +˜WS.䶗1$1x)&73%4kRxs#Q_v]u}X((܉PxNvcIiV|hyYv=qjD$Զ2rMw#(O>r>9״U8h#x-ZbU`)v +#Ǭrm ̃Z>@^a8M=%+`MPHsYpWxFЬG Ns+UT..3:":y׹y7A!x O5`&:y~|}9|C .EAɁҨA)-\fI<Ơ2pY%QvZ ب*@-$@JH/^̓#mW&ަ0<FBD[敆Sb)d梂1^aMWiS~r=` tbڇ߅ +iAAlg>ѪU" + ]jCTk8;vjC&O|B;h 6.Ԙwc-q-GZk=|C&.&u﹭,t%$s=fW9QX{o&ɣY +Sy89v&(4IăB#^c$"I+~b?@#>GRj[AOGCV8E噦/R JmQcVZ?D2?*Lqq.N"(K͙z2kjn7rZ4Q'x`1?4ERHsrԋ67 zCu=5:g8HA:FΈu HMW/UA:`n 8d}vp!^DUTXئ3Ae0a>~MGc6[BKuRgZMMBV'jY5@IK.V+L)?%1U$= 5j5Qc!{:*SMi8[Լ_7,QS 8urfíz_o-S }H6ta}X[rݻayH,m yV ֦>y! w "S\(oΛGNt_zy ~ޥf3T~@SvɼP1(`2ai)?Z: N6Exp.SYBl ` L*AE!<3$^F.r=*{wW#S8ɿg$S^+5A<`7p’lvA8"fwM/QY9eeJ,uo >[11q<'I-B/e+yNZ6jnJN5d rʠ%"yP*h=J)eK_BݩCW\PeȥI94|9RIC6NMͅ.9/o0} +v, Wo >͗KPa~)#pP ?z{݋.*9^͊prMBB15iF>cf78GfCy$Q]Cٝ^|x\7W?>(<>m,ܺ1~1rԢ5}Zn,5mQKB[Κ=g0]>u _s_iDIrf4nb4gKY[-0ح!)9n'%Xzc&,$JWxXjKשd",H 6`3 MGRi&l"ka$Q-MHRJ)%YO[Z%gߧiͬާ[O5v}tq,ܵ>;|xpll迳#{0m,@eT%E))**RJU" +]sqY}]v]~~~Nf[G'SPVQ&'O~cѱ?GB*\•3T`"(RPܑY*厣"QHYHw #/Lb0e2gSrR\%(w;ٻ;m{u0{ M3+cPU 9sp.bmE/?{Q=(|ȇ8ߑ;!W cykBAXEHJT5Z*KuKkXbXԦeΦΤ'g%f&g'y?MM3Yez ?"Ap!? Оc{ξG뿱5:O`&p 偲BPT&=T)Y*-hHw*UU5Vi]uT.1$I]ljm}={={{Rgjr^'qeZ0q X~#Z-8H{Aه/} C 96< HA`]`,Pt=<Ȳ$, 0h Z{_ǁLp   2Q01$$bXa%xEkIW8vbb +( 8``bbăa;aB{`9n:11NL++lhx&&6lJ+#LLD21122`k M O6Sk l9"T\JtA2.Yl-4q.h8I|iG<:*>L&hMẹZZ+Vl7\7"4iu:IUPJc3i@v\Z3,cWn>vZr.nSQW jv[-@݀,l9ݺxX дWE4a`ӱN_kVͅ|* +cQU?Vo|l-nQ8;huim +j dž`v=KC'c%~fen觭ަv_(DZ闥~Yi^86X NJYzX G]rYehe觥^~Yz,DZOTCe8)Yӣ?3YeO=oS  Lk] m~e};-7tmko;e$PȇGp|T8ƱYGh\vZy)_=vݺmmM3fEr}><86…5BPcuKW͜͜KRgwɷs'Q.; 4RpCAvݪ5 +GAw +؋.>;4p @qK,ԉJ)QDbS>Qt1uDL{:;Av➂-azwS<{/>=/fvtnTV*Mh..-FhMф!0$3p&:,67ͬgm)GY 1DY ĹsuG}37I]js-MϳNߧh'e[vT:t@h]9L1H#s.iI8jf6f>Ossmj}nmr~x' #T9"[ +G s ;\y'bƫ1K}%f5ɵֹZ(g-BƥOs9a\؏2wWpe&u,kѺѲJar޹Z|\m[t:v¶/PGS3XX9\L=ei6f̸11&K#lM͍O5%5.F%XNr .FhkFxꄫx!p.L +{@Y KRY'EꎖR-@6l9S OsQ&|V ^*((ҽauḁ8G[bxXz?` Ae5T($KU ci\L`rvi#?栲<KUBU'7R(ʒun@vӲ"l/.-O͗j%44V6mX +`BPRX,w.J%n@v^.'^"4e*ȴ#@=HY^H(nH"U*Vb9W,d/.bF3&`b3Ձ ,U YRYn@c9 ˹ {a$6)a-ZWl.a{q1]+F +U^XYfryt!>? A.V`e +X+o7{p/{up0@; z';D {%;磬~/5_j43"4?62 +W/`; + pH,̺HF&X`m'Z}7 +'];'ps$uSOx&h&„{"`%BPɽF\kDeTɽNNu`LocdI͛/1`AO @raN YTC]$URY#{B](RY(2 ayJ:GKK}~/='^zOj̺ij':RA$w?3AO37g{uP]DP ehDW%Lcy}&ؙG'9š>P y{^nrT$m„;(w +\[b*uPը#tIG\`wPaPWEn +Or +x\#NRni$M>}S;{G@pCpi .A;0%%hDq1ԛY7jh^ċ<)pU]{Y͉|0.3a<`}@TNFc77 + Avdo1`(TE.2fnΏȋ~(>6Hqb)TE]i +l#* P*V4vOx*cEyEY'M(kHmbdB3rFmLiUuSBUJgzF`XVASvҕu2Rib<t}B@><:88:D\iA]%=(DQXH,gq,/: x\zKDePV +uS;m0.:>W6.kDePX}ߖzޢǣ1\xqɽJRQU*xY +j藥ZH!EytT؈2VʵFHSQ0[= =4?:KsºJ*뤲FETJYGADZA^[ݔ*Bs@g¼`0^'J.36.U0Ch d XO,\ZkJUm |bL,+¥'`e.aa#, R*[5ύCMIxAr4?X5-e1v?)j :8 `́1p*{5e*veKA 56>h_!``ÅE\ɽPE*YW)*m;[ A( Xpa".lBm)?ϳC30& IRL84l 1°ta4Mȱ.;SFIBJv4& M`)veԶ4PͼI4i`LF!26CTȰ #$&s6usi-.5n?eM0 +Ax`@{2 O0m,.9ԏS̴ #\Xw,`c#ƥ;ץ"Ƣ|+SANKKOO!\]eIc) f}Ȧ/?[/*qF%J$$K΁L\CJ 2mVKj[IJSt^Xkx~[[dE*ZJ:jhNzܫ!2*OElσ'-m\D%OVv;i]\f`Ye U"%(EEDewZqC@Pn~LؤEsD匥_M|&v k$*'d(dXhUJ k]$q ?0Vqw dO9MdTtW<ʑ jy.kˡ 8BH5(L23~'i-@I^:wuR@p`^\űNb`j ]Fsg6'< jKH_@5B3^P1HkKWa\D);I.2dr 9e$bhuBnb&X뫣K1 `̐mFfOeq2쉶aJ@%č֗IwL/H?5.5\CnZ9uA| /5҆~^#[?-}Ҥ\wm1'=#E.?JTѲB8P G)}tNfQ.b;&>?Ch0:S%jςXW("e`p?#Nr~.: @v +d5@DY_tT6gKi]DЧLhJQ'[NL#W/5h[vFF/k{MmW)r]iK(dDOЦ;UcO 0.)*3QC1r+iP3p)Q7G`e}\.PG;b|&!D'V6QjT%8|*.=5j U1eP̸Kvz!d.&'tWD˳`d6oT$1a?A~(ȁlq"NT7^%a/ ̧JeVc/+Neu$}Qg9{TB#Imy"6NCRʃVA[߀ >ҡ2E ^fDY;A_BI|ʥͿc{:@-_Ո ËesՖ8gt<եy +DF(ײN˕j9'a9_( sW3NNO }j:,7aר.ĤP<f㊊iZ" J$ s!9zƈ^ŠեgwݲIU%U(%xtIK`Zsm|`=,7iU{k ɗg$ WT0.(u)T`-1Z&WUxq_ rʼ+Zv@j}AR$r$efYj|Ԍj?*iDR^2زUI}V])h@SC/tLtT;}o9Cc `w!q82[)VZ:i`_(0aS&kʶ1Ÿ-rǛ&GβD\զš$>LLk%#Ƨ//wƕp-\``R(Œ/߀ KB 1!&|'zB><&.WF2[06caK3b,+)QK $}rF2SuHt`ԸJI1>v-~|0.UI& [M+SI%uI\li 5T fוVϤ-Y-]tk9Q4mxџ$E}!u Vi )IM~zZ檺9O-ft- +tm" q7'J ﵗG>o,,x`9|@7ʰ#h s%*sJ2ƛ>te0a`Z$ES2IRb`$}xTI'ՏC焀e*UZPCdIɇln=-6˚I%3D%Է)eZ]/<Ċ_#DŽROECRɅ9fn1vreJ6=`x28}Y F%Zo)0xd1sr˔?xǴckհt:mjG=xN]&1̡bF&dċ}K1EX*ӊfsKH{g'/2vߟ#=H[ЯgZW4w:K]B0wT2_ZrWҠ&2:Gn~PZK֫Ee%u(jMq0,r %<қ)wyu&DPyr$Eةwr܆ChI{TV` tO^xĞ#vIU=ڲC %'BuPG$VYPc*g iB$/;gbih/m3&Ӓa$&v3pC2d5uM.FR?˃$Mj[olIod^/).k_ЖDAa g90v)FFTZҖa/fɯU:|%Dv ̮I?k "*!psAZb49&I=4-y*qWR ϋTBX͌DzNCȵMt_{f<2"Id؄r1qz~s@d9/S>?oyב 9—6TD*m~U +R*K +D/kP x_>(">xyA~dZprH|,n' ui=I^Ӗ ÿ}W~\%T/Z%s1ګ:G~L !H4e) R0>auusH= AT2F/\Y]bwݔL9y~/^ցy" ZwA6 X޿yRmbG& 󮅿0_C/vZR9}S3TXZM=~}Bc'Sky5v m֦R/\ %cuU0}\P-*C%@0~`#GلGXU)X E $WS Be+Uꉁ\i0l{~nn}-w`kk+[R"ĈO|ݬb|6NBS0NZh@Ib 0xVXdǿQIæ +i;r!˞+ ͮ9WO?!&3#*ڈГB Bp/]Hs)u`?^_J.vE , $-WV JfaxL{*iײLD6%osYm~\& [fɜ>]T/}^^Wb<e қ_༅/[K8&aH!.{uD ?z88'Pu;LN*S1#L@,|wR3t ]4Wjrx?FE%pm)*,: Ze/4W/Zo+ +L'6/K8IN}Q|Aʘ88@ +Uߪ(?-"0Yb뒰˓uo8 x٪$f$/bv,_&*2K_%7EEs~6 b e.eFܰ bb2pD+6( ~ۂƀ?JdW +L@IrwIbNlH1#FrcK 1Hz |_;J%}cL~T$zDع~kWѕ,(˼QIR瀙::/ZL&[,M++%-FRԕ8zLPy0T>6+CBb*due1VH/+O+0}Kjf-&)5>e>z]l%0 =|F rVe_ %H|kN&IץDR;%+94Ơ܆ܠӔ.],ɆI@CoALH Cy:ys*%Z$rR%N0~R\-\BZ$rI:=g|J6>K} ?AT'W# L$˕^PY@=fi@:)߅ lN&8 `[̹}\m|zHz|i / A뗰,4pI'263f\}J][`ΰK,;Iz>LO, ̏*5`Q9Ǩ_|13떎< SZVR$L n\\;{Ϛ/rric !aNe\"uZ.|3n#^DL] 7I)O.f'LK cNOԻl +l5g7r,"5Tq%]K0^{ WK'ږ5i%]mZydvhK<2Y}캬%$iE-IoB~&:/*0bg+`f+6?٢mH>3A$SE c! f9I}n ƹAp}eT#E+ 7A!Br => 9Ò@0aU\My l(OM}2e*k B"!Dҷ aϊb/rC!]8v#+F-jZW%xKp\хmeiJMVHM$+|T0;;3AXBuZr4hb>GFqrF9Di$mdPQ<;߼_~OV,r,-߽>zGFc/˯&b(ޚJUz8"Hlq>j}{" ) + *pU(\sȣSȓ`Sڻܹsk{-kPu49ˡ)1lLsS!1\c"P!^Qs~۝.gog+ܶQ=zK]?;lw?$DACpDPEN +žBS!<[S.m{rkϥ[k__vFq[RΊ5=ق5v  7.;u ~zܿמ;okRRw{?FfPGĠ 2ž%U(tEc-mw{k;{66i+iNxԔ UܔSuA޿-܃϶=Zyt}}mߜ)t{jwgLTrgo))<6# {n=8=851C9\.lԸ-4lg>8H#&"מ +ڽZZ݂"Hܔ0QbDygDCŜguO( u@^{i: ),˄۪O~i|L쥽klLgSAS;^osYmLLMCp/T/ls DtLj4-O; bio}ddoLo/'+V3 +0;>r1? `r'x ۝pOC;ݝ0kp>~qT'?pL`o3Ǵre/;8L4 +]L{띿={13j澚g+& 1?t\Vah'ӝ`qt'{1ŴcӇ/v1dzޫU^ 1Mi[L>_<5V3'CO?c̄>ΟLCdh؆k4c1;.wNvPO.V3><O{ +t'C?ڿx9i-& +OWAxXWϿs'*>2{j([ʫ6o5w_5u +ߴ=LU(lǼL_TwM7"C=W,vʮ潔|ZOu5kuRQQnsy{*}wvd^Q]Pܮv[WnwMvJz=T:п5ádo;{ShT~{'{{&].WͼKQPݶ;mn{5^'yfn^SRvT}CAqnW˼~Zq]^jvj ~Oq[k={~ WWϪ1n6+TmWkUQo(nwQݖj}_k0X'߬弯{KUVЪg"wڶZh(~GE{mboky{ټ~Xܫ]{Kmmgl]lmciث{U~ORܾr;m/nsu{{4*}g>گ_Kk9K-_i[ڶַn[=U~_巷aIj}^{l筚~kk-]{or[o-߭psyw3׼lWs'WuZm=/Cxsl 6`^/Laay7ng{=Ugojg{[`0ԋ|ފ{,U[U{,jaޓ3Ο;b_=(ςvkz]OHIP_tWp$uG?XֻX߉P8*z[ͽ +Pyz_35س{KBg!ΠPhM4Y]uftoRw3js';k}~g>B?̫f~dh[컳Nz,(f$3 ɜ&3&|Fgy2k4FluVkumK^>}vljMuaRLS ! 9A2<`py7,'2=;55IG>H/59@AAA@>>=<)oljNʖq]V#!"$xA60FωOπxAP!A25:*qoje`V['!>:с!DN[+28*uvvwvvvUMs[SC;#SuN9 )! rHP#^8qSAC h)KL4# 2gĭ+C{emmmmm- +'hN_5jHz\@hC3106hpB D #hJKm*G +& |_+-/$I’$ª)#"  h+PD==a `f N9IA4@* #)m abB?CJ:(xFdbGs0&xiJ(;B´dD#G4@CQSSSSSӒHȐ|:* 2 ^:\ۘhQx蘠F2bE  Ԙ@|2LJ!AA:@LA0`+vL| a0" <04  (R!#4a 4رǎ;4 r`l40# + +:76/6d@02)Bf(!1Nb@@4Q5jԨ f,A9QgDyFċ\:̞fD 0^`" ilptR` b /\X8$Dܞ1^\` 8x#3|ƀ⡃ bB@AH67777}::(P0(::z2dt>=Z&Q{sĝE<8]ɖaZE];~4 hC΁"QY!Bĉ( SƴS`o-5s{rZdk,ij(Ι8:sKAih{{moqMhTͶټ띏i]ޏs.HSԃQ/CCȓȓ3أ#1Þ ::=5::=2:ffdd R0{R!|/^:ʝ-_Ql}k;4'fo)NtTsBid|J9p^0϶?x8(r Q(QbDyMN! 6,tylO(ta]4Jx|썅LrPgwz[Zm'}?:MmWy{|̹aGk{^/l;jl5:;<8;${r*nyl +wrQܔQ DƄ鄩ਖ਼+ӯu[9b][[_7WKYvvQOݎO܆Ѩڶ~,{Ͷzkh߳_/j i Π! +C88+n +W8cSB! ,t_ӘUνPwc_ Ynki;YfrZSTBhNOܞQ)~[wU[ދo{<@Fy߈M;<9<79;9,L$; E C (t]VZGJOWoUX\"$e>==9951)%!QY0;&ފJNEEDDCCCDS*Ե;Jbe_ᢕJD@:50pQZm.АrrѐoJ8"Р~)$JFIKN+|fW'xIyes ''e$]ۘT7`a ؀<> 4HHHhhhJ5BRbzZ^WYZܝa,V<2at܈ 94`!ECES* )I)j +.>JVbr)X֓b1N6vu5APPANRSVK&_iy!'-1(VYSBz0+n H<.ЁJ0R4r]/hu19{7gGh%2SsѰO˫$DH!V# ңW\$34(lprux}eDHJKLM7&XV"( ! +I??@H]W&ddeffgM=GJabIK,Y6<7*F/LhA|0B)&OI"7GW./0q2,+K'hf4\2 #, +\^^^^_`Q2rKf-Zprr%?t0+n  *P6  M/\.&*.6:Z"9YiSS˦ @!u*2DjE,#*.2266::>>Z)9Iiy +17hc??p`$$%ee%,YlF2im)Px!bZabbbffjjfɲEC?*jab(M777h҉V=Avl85GJݲea7"vTkcr$K-Hae^\0XXދC6`ZPNέ%W".#ɹUyeq0DGXc??dZJ6=I2 +cUؘaC᠉Y 8'Un$B'JD6ͩFAc~)xWH +$ +uQ5|@/LԚX*,ťC#h`,}T(V3_WH7DM-! +(H>"ڽu}!` F +V8A"P2PB*= R%E½9(JH>L"xr(cY%#T0C# }tld[&r @ōIyЯ4X/)! y~dZ!^6d`IB*E@vD " L礕r_ٗXjd x??t HGf% +qC)F|(.Y2TF:&QY+ +KQppcvH.W0WB +endstream endobj 153 0 obj <>stream +zP@ {!Å +(XNB2MQ[EUǍ ~UĎtJ`bܴ  WښYiH!XJZa4̓R5&ع51/)# <KA^ a20X*%!ܜB G \gW~wqQʾY6X1/V Дl bO6hlD$bT463M}B`@Ag@xؐ +( $[۲y)8FՅQZdnx[431/-)%!ˀ{vqmhc^V*Џ8@@%DYKpؚL62U#>u#-37lٲsK,W ꦰ}]QM)  fB5v0@ĬT ccuJS'n6@EJLM-|wT4YuEee"a CE Oa Q4/'T31-%,6*jb-R(iESSSS333˥e%+}xuSڞqYyLEDF`&ʟ1/\2@o0h`$gY) X{V]2cdh [d)YiyҲrr2 +#a ^]&cH\%""#2`΋:~i  |>B|HS&pwW <:62*"ܠ8aꛅB#G3 Bg͟10< +XhJLmQ 'e,TT EYcPˇ~|zwtrpI`lvx "+Y/n +[Z$[Wo7kzjbZRJJJf̤꤬9aJZECBAR /*V*7dű9CEN=-!Q|@:/faj2/nLlB)I d>|B x , ?4`&0bN/J$~ a@D3hبG ESV!͊n$e5֦X{K[EJ1 "DȐ!>D1bȏ#E BBd`6j8@֫ +:r"B%I 2H!)Z$:(@ +.@zbvhiv{m2!S'hhzU^ثuDA9p+XPT6+L #D|| M[/X<º"RLS#?>@ z(bbAI"?BԤ)-* ,%KƖ( oI~FMZ-xRIJSKS"D%=Y+.$J9yem JnhI{Ʌ؀HS8,4)Rhi;RbMJ]];;*troPPS#AH1DiAU+>5.1SĈ( *>5$ʛ\ݝ` 2vEHE,3){voMOGB?F~KRݪ.%M֤ ˀyrQƴPT !FZdn \PR m#jHdBRG7hhʕHk"?S3 GiքmϏp2rR-*DchzaG@uJAKb}:J`-%hou{SnIeL+T$2]ZJʊW(-`jR?A FfP.Iqu2 +MYJҤ.ZĒE˖'-]":J8z!BѭiQU]048?C+MA#gZ23*W(dfѢe t +llPI,(T$4] +Tb!##5垄Yid),28BARt2sD|| I@YgS )!ƎtWbjr|x!4UH*-Z&xl.]kR<"J* (ge*Ĩc)U6cfC<#,&gn.q2B̭=1SGz7ClNk!xަ5}J"2\bIZī{UeŌ.M.9Mi`$Ӕo6X)\,u%ۀT &.-X3Putg~{a -IƸTMwv¤ sNȑ}6 {I*:ED8 +<##:b%rmMͨj$醴r6o%E?H!Tz5 @0򿲓u|slYÄyb)Eԥ-DR'g׶j\kN)8RPC;rH0uXlxsK#E+YA@ &8<*nNC@ziBHkjiR3AURLwb\iRNH\#JybueǡUuXtĩW,EtG]X6!@/r%ԝRJcLęQV̲\c-׀"v4r\'fW >O:Ya.0ptJG8[V8y~؄f ~,c눮Cߡ06ox\M`y8*c%GK , xЉC{lXra?4{p$QKD\G|xzc#t7*q5%+qY sKB0/%rC 1xe9Ymeo0iersaC$aCarILlJ(' ZBQJx)mQ).}8[b +ʯSď{pCbUkڧJgAreH9!k*qPq Uħ UDCC 1DVKӓZ9WڸCRwb"@-?d'G/;=~?\n^ l~/w4!x:$$edoEJyT'Iu7 :SR* lK%,yռbА~"r QAa軄 yMNhQ]U&tT:BGQb pڮWToDלr6 +)[\Oɜ%G!)7;?OG]J_ϷN;_ja~5қc[wd~Z>]\%.¦V'f*GP!%@*UaʽNj87fR;IBPZl_87@3w'  S!SN5'"DP%M&Ƈ ٕ]@–-_rCF_p*r`ws I)c,N#.*i\vK {5^6o&*g!#Z!TZ(#94DVZ {$HhKHR金4l{NڶM?\kv>eOJ|ly>AK {Qdk5X74.rE[Ò;Ԥ95@mM1:+y 3 Y$hInd[FiI:cwlC|AI`4%$*kd[+VNL-D/+eL +el̶l9'9yDA NĜVdWtQ@=,)Tnc JԷ +XC57Y^z0#k Iyd Q%P$b0UMQ;Hp=*eK ;hgOF~-ʤõHRB{K"? Fo6I-N0KL)fFa]]=䤮23灱!9y[K>-Ir`9pe^xTۈ*o`N[nKC-Ä.cO77a-EN}8=έ &"ّގ178KMEDD|\ܙ.,"ʛ1-0.jH/Et/)+-+1u@.:P {YZSG/ ذ"ÔmYKaDU@-J)I$_ˎ\\B[:k/AxH؃[ZZ%Jw3вWL ڂ,\|˱RNA<\QS %\H25\漅!xn=FiQI1iqJ3-e_Z6"30P0 \fEp-*V'*Ue[ދo/0,rX݆iј[!AbzԞLǒ'4_[I3㤍( RtbC铅y\4*Jz9 ^ +TB *F}+2KxK>PŁ,uEl`~@Է*D+j. $ $|C6W#:o҆˞2fϤ*1ӘxNX$1'mH^Y嫴ji4:Z ,,dޡ@%/:jEUv_Ii L_!C?A.1En'TL1/$}:J<4~)dGҐ$ntI$ETEOyE}!|:0)J[c2 +2$ʰ~ 0WF$ފTVu{hZ#ꒋG&%/C b-DF>'9kHxخ=)2m$)SvJXe|Bt/Qսq2YDj +rLFvcx=U FM^D/"Up0yah{W% +8 Bs!y\斬0z @Ky%g{r!RvP D\1rU}))]D*-OU=OU%tȬ\j/8rex4ȞVe_,BQҥņ\e(yK'Be;r)0CK<_RZ$U:`L>8`!̒.J@ީQ&E `0 * 0&GBy\-yc$0coq-ߘv08c/& [*/Izͫ>Tx4n/j9;àeDPp \ .P)wK)q^~RDXqg'D9-.E -mOpnuis9:IlQF7hwfFLeNt8,%y8^E_r&= Z5N~1lV uA=cb\gx3%6>Tuj[Ja zoߦvEɼ l&$m/< ̄_μ2`jYoly XGH>'?IEgKw.We㞋˜I|jJ -%/Q#pFD5C B&=53CCk·TCneh4'Wlu7/r-ϯ2J:P8j^̟<"QN7P}pTucA꾽.[({WK2Ed= h)؈21 83*u\3E^ݻ*-L|JT/350%>.scNh\ +J1*;DJ]5xk2v}DDF 0RߜiKR)vZWB*;4eDSAXN=( fK˵YTK/;E *`ZCfhVWK!V蜫J|e,+''weUw{dĖE{Iw(Qv֣JL6 Hf0l5_4bhs2XH [t6e_zo&"2JF%ϯLZ 6+.0dыX/Tj̭h^qNjʊ'v`q2BVtSN:QeE +P93Ɍ.L//EmO>tFD96MNYfp &~%0#`Z.q>oOvfp}]zv&\4rCj3dedLn#NZl {zwae̗pBDž&~1N& ̬dz+-H% i}l ҟQJ|&TF"_~$ yCm(X¼4;^9'P)ŮLҳ6rf|HaWm(yHgݙ+WYNeu}tK>2ه;^Yx-iC@O@d7ts==7ýeƈ$ PV\E` 1 *@45`>_T0'p0DH4B.C2HpцoGa| +)Jl Eaa]0ShPZ(Pbq4xCay}~P pAHta8c$! +XE! 4xc:c?2H!y"$H=ظqX">#dA6 D +\F̀!pDRTE`a5P<A yE$H"$l# 43—d KcA$Wp2Ltܱ4H$ȩĒK0Ʉr EHC:t!͚%"A5>ādJ\ M8c'6l +$|1a <t!&@  7TpmyH&dN&t8'va<A&}8f `uAi9`B'(y=R V@2ׂ@"[5`#ȱ$MxbP"7|xPC ;aQ`` 0Xc; 8T :ɣg $stL@DZ5渣A,9{DYLrEaP()4䰣KD0eT"],C7@2 x 1+j5N\@ 0JzFG(dNjAZE >@sC<"M:g(LbEkB)` ędN\2 dx O`1Ҙ#6nMɳG)",!|9pE$!8 6}G(O(,\L-AZ8hfI䎞PF!G!D\ +$G`‰`-`" 0 6Q"XB;@I/J.p$p""Dy#dR玞P6%̘{4%@i`A^|(1q-X> +Q$9|gT@ +B h\?adL8'0>,@TtQ,pFdR+[E,q.pÎ6oPI'ZPF)( M#iǛGprp 9@% 8lbG(08[F YD&)4fXN@\ 1jf0ahǛGԹg)U@A`!gı!TP>eBπO`Fw$xG*[!Vx I x0= S&wfx(9qְ#Ej/@ASx*#"LF<n@ŋ` ^QQxCCXɝ=/`X ! +\DEqq#s eQD%P 8!Pɓ<[HPϠQf fJ鄓M49TB %rh`8P{yND$8FQ8pp)aj! D9tx‰&T"'GțC +D@iӦ>(% `1zH(L*F b ya:ꠃ: hQ@IM.F!? +x 6Hh 91G!q,g=ytBgGA@ȃ +Y۶򳐨]~S!v]&V"v)."Dbi՗XkyiNYٴ-c_v}/}M2rFάfLҳ]rpSϱ9kCc^5w"wDA\$k.\u_[MWw6c%]:$ +:TUbs\f=-wLF.i٧ʨhڙhuVܪxY޿ߘʛَ;j۫0+My%b;rYy2^s۹nb߾4ĽjOWFm?,Fəx߾k!p:K[}\vݔ9 Wmw \'Vސ(hݽܾK=$ +:6\__o,K䴾2Lid#cCW];_94JҨ}Ku;93u{嬜˽i]:ltm!QUmG\jYh:r=ԳgϝFɚŗ_|zۅ(ySqI@>lϥo g(O%br[ֳwڅDNdcOk-.];\,_kMV3^E{+3NwUC>g%2ן=-b9&-+gޯ>_NMO^Ƽfl/|FkoxlZӗyG~lvVwh黣=T߮E{/FiڏZؽH/͟ӶW9۲y9vU_cW{9Y"nid˅ݸΫݸfn֌iQ;PUM{m7/$*;]>DA@ވUsѻUYZ۬vZ.b%_~ەN۬跦jn$;%vs#}#dtL6l[ozix5$ gnM< ISH4zlM i &d#}enwHTM"bD?mWڨuQ1K39Ѷ?[[W[L;;$":$.퐨\eܭV8-N!Q+xKmشʭ |9$")crHDޠ,Z.;-ݭB]ϯ=,.m6\eRܴ2ڵRR麺 ubשN[65$*٦syzkV7NŮ!QiZF^|ʥ_V7s3$*.{5.2.2zn3n?w-zjmsvVfe5W"o'Neu_k>okHTʏvեG0ڴ6I{jA_o^~_%k66.Kvݖmn_nffVnnfoooouofnnfnnfmmenfnn۽ۛnS}}V;g]vmoWiw}ww{ovJi3۳Ӿ);nn>Tcno׻+|iQܛu;K\KŸҮVd<~޳I?}w_#^ew;";;8?Y{X]$)ޛʼ&so4o-+6/y{Z5}qzw-wwqަ]TwXw9ޝ^s۝sc9~nR2;TeV]n;nnuԀ S_>;RtwTr.ZRR{wuW3_q7mW"oow-) ͯ{}J + +BK+yw/oۯ{+Vz{ߔ^]$߻˾v*>+ۛ{j了Rُ+j+;6bZo5,5Hݕ]߆ohMwMA߇7]k/蹧AFy_IxpqIZoþS볐]looƛJ{I]g]{7bjMhWɈ7=[MXFڽϛ볒PO˱PU{UWSS;u;)[T+Ot\ɥ\z3jRSﺰVob}Ur՛JUOԛ,QQobT#n)2t+j[t-lJ)TZպ=߽S^nzI˷rWUlﻫso{/;s/H[2-ORoo1ɓ;IVtΧW\XY$.D?r̺Rxb\ޯkgf./}9:"kMwWg^ghYS+M0ϵn~o꛼l{IAZ~{cj[a }.$ +2clVf_Ƶ#J:|i}k1&%5 aWSD]eSӪ9/ɶб6ҧ,Z)ISHZ9wek1O~8~Y[5NaN9Vz1rY>oyMXg֚~6X  3LD2d@>m< 8FDLB6d0A BCPM1f9KZXS`CqՀ[[dG5L +j=K1TA56js{2v +."cj% :\=S+T7HG+q.6A^8ռB:,LB2h#&!K2עd)ە$ea6;pPCF"D1ӛzT3* +\g=r/$4t)K 3%\?UA5Vc REč#*l]g}:X^FϹLD56sa*؍ +Ɠa'~)ݜϛ{u9dMwWP`Q):$`j";x +ߋ$PwMW1ȷ +{g%f3BI7oΣY^t)?!Z=: +3{>US.-ָ9K tQF|^I8!<@TY_m6$ BPr݇7eA +xmr╎SX(=2&i8qyP Oro\}NJrЕQc <(e(xb +Ssk3|h'!yլcD+aX_vy=c(,nY"w52Q&<qݘwTjm,NU оl3|8wfY;dޙ\FS=kQswX% < + ְCҀpvDnQfKB~vr*y,_ݹq/t h?;&W'+C0bd;>Fh'֒P4Kk+Zӫ+a@AAy?]hPPT2,xQF;}ΰ/5)Da@d$?w&A`S(,SHC`J6L֠|aK70dgu|a%p:{\II2_dsxd HڃeQǪ~ZC]Gy؜t Ehy2Tr1&`M$5 +zN>ZzZi?gzl 9CXj 3 ]dĨQ6eG-V5Iazs&K!nbru0~dLT!;\x"4)P(r_Mg nnpNlQpHSg.; C~c$Q9SԳw6@!}r,;^CQ +p8SN ^8GK0>:ԉ,.uT׆WfPr|gff4Ж@ "Q4s):LB#3lN@5; H\0UEč/3~) +.O[n1tӰ),ʯ{DKe:gqtXuɢ =.Trs)W0dhOMk\DXpXfjG"L̤ đ dTT?io>x7/P-b'g'`K@Vx4 ni}; w<`\/ (a )aE3U:#suo2E50sZe9AyN,&lj(Q?'3x"lK?3{+~MD$|eJ8ؽgV 0$!OhqP|,Σq?w/FPRHM@l| &GeĆq(U#ʔ4z?ܚ?~N> w2f+K{܈`?iNK 9qaçDUI;YKbLRʂ/}4}Y$]K[)laa(A:t4sB "AkJ(K 1|̃lu'W7QD!KNOZ*KD#gx5JtYϲpt\!LW+\b۳ަ~`c]*Z59>Gt9aF+jEED},gqTn룭- +fu 1AlF'q&D8PD%1&r*ŏůRrʷk'9fp<1{epR!Тq#T+>;m1Eho"oGB )&B>xQ}LrC(0jat`xzOtp~s[IdD=P!^GN;8iiV۞[n)Gz!UQ]aل 2PZ.:@A<'OA[qa`Y R``(Z +>Tr2yyJWDӮg΢@aM/Q*n'z^x;gdw+ +Ӱo˜xc=ڟYd5(% ±ʁʜrl9D8ݽ9X]Ǚ!@΄~h vqNzJY7e&{.c"c4R3W82ܡnt$^Ё G(/U8`>N~4o`%?.a)C܌'=wLޤ!6WJrDrӣ/9D)aW. +4bHhsp*:4s#4Y6Z'cN땙yVvL0a ڌL>E agܠHq9woZ7=u=|Q%jM9mzILXnXa\нLH#e&QcQU &*Z Tĩ>x`:>I6y/8-r@ ̼́$ꅰ+Sy~CY=ZzeQzpAP_hYuYG}DP‡7[cGR fd`&±7k䷑J f3+n^jJj@ˈ􈥟o!dN($4j6=rʒN,'WT4Bm iW=80(|~4D]1 +\/Q3[[!( x&\(ggGMlI͢ w6_8t&wXYFB7< VKe}#X>"EEn($GGďy 2O8|*#;K +;:pAQh92D iݏ=Y -CY+F̷S+q^gԱ䟕‹Н(&>J|Ju Tsw'o`EYI gj6).F0E9p[Erx xlp0"dbm+䓝IT:Qـf8A!ZZRrkYZ`[#.GDds`i A"v>2 t8Hm8hA_뿨b|W~u +őPqN yLI?="*QhX$l +1L&Ĕ\U #軤בE][<ޣYA;uz.$: /y>M L,ˎm u_-Zxc7M"WzP.܎NpV8фDz2ȺjD_(+4ըG[8kQ &Y;X + M\׈QpK_3Qdl>L(=TBTu^_ <fJ$[Rɫe8ظ*(Z^جdx Y w[fAk.Q`ߌIx[['+~x\3H}Y쳕1k4P@JWl{\kc˩o~('Н>q|蒮з_u4!6LAzSG}\b pVVsym( p /~GYcYf[6(!9:~iٟGpHPf'=`H*䄭\>YX ;WR;"^)gH\QӍ*ʔ]ՠуnuo'wD,nI-DlݡjVf!'Z^yZ@|*k¡k~Fר- +T|\u0"8 6fR}lF8(Eumsr\ W1(_nh6| iC=o'^ M)9MiLĢ@oK@ !Iq +yrKݟMsK1 Wo0(r2M8qPĶ6 2xw *@a'" /ym/N]+Ճ$phqy!һ܊@=,|ڛ5Gy/d^@Mξҟ,eX3.ok_ HYqyTy29z4d+X/!Dυ'o@G>٦6gHԬ*Щr*ÊL"P"bTG-ƈJfJsT䢇IhvI\(0nKYzdYAraGT-I,=4i\qR^ #oE+e!.g_M𭕐7tn4Iĺf] {.R9k6t~&jk1rEy}0;/'CBz#4Ǟ⤷|bQxOu*DD}Bi=e_q6秕XM@sXf9!4!;ݨbA㪥KEBrwP}Vp7́5ܙ@ќY"˸A!c@™LNGVL'풨w0!@P\vٻap ^f+:&zë~69Z +h\7㗬XsDf bT$&`>s)3towɬ$Nb{uYS1},LXFSֱE;f[t^YE]Ff.xg>ybc /52aPA+{=t2zzY$ *hIN_UF5PHp[ m떈u,thBk)tHoe~O`g{.h,w0H4V jd$šoW)Ns̤$OKELreVrsR0S+Bɂ79#\p xF[o#1#Kh68aic ǃ1IzrF=~G.؇MEMͣp u-'T Qخ/ ]f)1qD"%iCGlZ'ǎ-jdBnhˬV{5Lt9#@ \'!dM: c1rO ׆8I8aBנe9;tb!ȷz[Orh[`TLRy?ND]mkf":Ҙ+{'Md; $SF5{)=!~xtkE\c[p3wxnRt l ;]eb jM5p/@t>0AEv-.m쩳y2Ջ`pP1.7^E ʗֻ{GW:BȍrF$p%}TI줖JsMXC UŰUSG^}չe$'J +Q{C`jS#d q|PPLh8[8JK49!E/E#9f a tՉ ?1{SYrFLbb s_H0+S%++ sH+ +a֋'KHa:v(T>2ʟ%~B4~@$&4M"h*Њ&݄*x%'|X|{hQv&wU+|o1?j#l+#Vz1:Lޭ}W ?H"kTb3Pe{cs'fҫ#w;bUV-5\s]6l=ʬ¼5W|zϚ߼IҁKbJMzyͷ +B׹f^"=%dܑJjM8Q%u ur&Ҷ!ÍΛҕml6"֒Q׮a|eiHL:BXB[-%ݔ<ۮq|  {9[S<UK`L  fH: +4Q)š3D.ٓ+ 68 |$jXU, 1ERe߅pbOnД9vho:Lg~xrݛ)rUfb=P9mGˈ+Ň?͘9 jLDB"x +ʓXƏ?.n$@뮈|^I#]/nx2ty &.ӣ> n|ޒҁd$+I ZT=Qxd.cCcA&BIo0Q-5X;>XFe[|.M0Zס5#p{;@ FMN|ZF +RAZ)AݩiRa5|Xm:A//&\R|!I!5 4?: \BOl IPPOc#mWE2yl| 8^̓V Ewr$*}\Γ^Ik.i/ J]5qm +<|yY&Oc` ;t Pb|AA*j,|my1vL9r0iXǣyE +@^#74 +T +2')evaNx<7r'}l@)[ձ1mlȅž'7m1QG:!x0@e{eǯs:dԇ,>ň&v#Feц*b,k 򗞢U 9%D Gf#}{FTh{:}mX0wʃ sb[=T9_[4jLn8͐G^QM-&=X*T= v/"cta.%? 02rO?|$ D<N.FcO=Ыu.$;v9BHI +%u\%/hZ$&߿'CÄ+cvqSoX̊}|( UTi\@A-FO޺N=uɪrK(ѬKq&?L|2)`gGi۲Db'jY=S2.ڍ%ݙ'6Z,%6r=oWI`FA~V+VGvl+]b𕆦4P :Z)ڹϢ/Zρ쳙>& ,wymVnqhaM{ 3Tsd~ͬ87Wim_lOqK纀Zlazk=pY1a38%  3b-X% '7}@{e`O009 P}XSNyIV?m: _kl6Nx'- vqgfC-hdw[\Cv=2xIl~'ep)z*Mȝ)!:'qGӅ@~G+ j7cʝgB-&ڪڞ#^R' S,RI(Sz[xeISQK*oܬ^ʍѬYT3%jTMIn*\)6Lq#*QXl) B{Qs|驛!<ț#g=jal!2o!x8ۭJ%7n.aK>hrW}#,ْGI{++ثꕹ`dce s#+pߑG^hWC&2B dΚ @r.P݅OE'Ѱj.fȷ-D"3A=)~-B*< ZJ0(u$/v1946HHXʧAWS@/n@o$q\BydGa܋5=2J0'}@ 3Xh܀FԘ5 lNP!@koTF1 $׀mإ ʌNO#{ܟ(ta +xQ +ЃXҌ@Vjœ@:TO6ԤTv*9tw2DH7@{ PLzS9iA~4c^?cŷIpTA7i\z/%VPwE3+*&@tZO%B hɰڒ*X +@^wJ2Dp`R}O! D{rBVA?7G©4ѵ>ԖLK6 +Kj WQ@)gpB=tZBP̨m!c9 X1iOl iFX0+~St0 DE!L dx/!jnY񸕝Rg(FE1hu;;isdd !N5:V*9ܲ/ȼ^VgXOxOF~hk1Vڧ #q +@7~&`z8 oĕPׄx#UO(|=ơS% VbVޥ\>=zFslHA''*6?k4K%+= $$^TnSig^ي(ۺR5P*qȉS;9[8t怞LMliϛȗdZH(mp4Jf$蠤+>Q>4a?8fQzVM+5%*4 3: \F@0T5[@Tk.tAZMU`u Vi܄I=Rs1:Sb)V4s`uӐو u#)dr^Zd |Q3)3^P7 S +@J\@8O4ZdQ`&//qLXVm,h +beP0zT<)n|!*hblpAv5Ѻ^h?;y2='MprCD+2cQq{XqJmq08Ŭ`%)b'78AMCė@ܓF&]!B#0dsu%,z1W2QtL~|¥3 L\Tىq+_])d)F=o#B `*fJ<Є~%yd,ƍPQUC'Т'58hn'J%a:}[T{G`WjF:i?e y=x(`)J>xNvD.'lN10U<:M -CtCG&˭J<ƽN_BxtYIxF|Dž&A)W2]BAc`@mm~}aоs%= lKJxnvoJn:lPp}J[#6fZw\v +Wn;hj!!ѫ@P$4ȂRśO(; @YAu7ߴ$Y KU'jixy(9xIyal!{زs쌔lgہm̲##i VZ94!@va -GHK3HF8Y_g[A? UtwEɆ_ GV\GǤk 2|9`V\3.c3ׄѰh!b@Z-!Ѩ "f|@I($EB# SwO_DZQjcLh'-d=xJF+Y :AIoL E}-<[uހ:ZpyEAaHaUT rK׷B[~+QV5eUύˊO;p4Ne(QD#}#Qt4h8@ 8h3Bf7T=ԉuL D>Y ]91{ 8="x89(tEmV4ɽT-K}j3mCc[;f$ab,vhZ.M !+bHyߌ;$!_ +=국ck{eYh +hfv^ff%TcL@-WIY`6-ٟΛђvi +ECʞa-~<?E/)$.g7Z&%Oty3RT~+~Ƌ +rFeQPb8GvF{@[Q@=0R7 syQF2j~҄P1TDc*3^ Q 7<4pkvXk-dUO>;)"#6H{'I=9UJxMQkt'YƥEK;H|f~.@% 6Bd?YJt@Q)R +"o {6ڬ h3H%Ygkqqcp 6#@r‚yv~]q2w@XH(4؊H(/`;XB&'ϩߦn>^+Yؤe2N{3/jz`VJ랼[K[ +dso4T2YlPg2c*>sqT-M{iE`|(_ƥqil[,7N +ڨn#<аwZo!8CaN̤ؑ!ȶoB«"LvCk(ġ<@1WuY60mt|dDTUĻ)d^Bq7$wB"H^G7C#u=eRo::#pnk5'BX#Ao{Ec԰̕`--P~Qe 2/;~i-]+2kZ` /)Yվ+ğ/zq$s`, ),;ᧁ6W84eLmT`05Y}| 1@4#6GqK)P: +C‌O$RfEBEgzx&Y) mxXYeYjK!.X b3^ pG} Ǐ8j!5~jPYw>Zkf#]q'7ޢ?[RV=3od(# +>J?YG1)`jnj ~E m*I}C\GE"y2 죦B8o(N~hpP+ozs%lнݦEGzg'5&y v韟Sn8c +7MgRn2jsr4MG}X#,;h,qO3`'3Q{9(w*9jEL$/TA )/(#7G= 7A4OY>xmejwdڎ5l5A\_s^Bn.h7fEr{-Կs*)%JHU*^ fj.1߻]2HLv%6'(~Ɏ(R] +] l!^I*_= J\F (WIsr%mA 61x33p䖬3Қ +5 /V-zhȢa}L1Z'=`9n3աvmNLd& `hV!a,Opo]hzbeTu- J׃.0|>Ua~-[N[ +a 僭ΓkMs ֈ3#aAr}2m=MXiȖa.A`iu0_g1>b|a)@a4L[-CXzdzIc/G) e@z:g!':R#8Ihpʲ>q JNLlށKo- ,zuaq#{ӗ.rDYw`?Xj:Lf 2f$+5 rN_S)XoP0u_=7Bz&;#A$Oء"$1'.6^g[ +$~۫g[I9DIɫWGse>Ǡ.*KTZ?<\*P q"o|Nd +r诖V]paǥބ{saHVg"F}ؾ7SYip0w,o9J#}#&#tRr)ޘS:ZdD|r2X(tZp{#t.6*,9/ d +~#II4:B +~}f(YU̝"UsUK#DBunxSB8Z_ao!"uBo:SR"Z>bkxYN[xϷ`Ҽ|B]q/Qhd? J̓'ڒ+򻐅%ߙ=hho'"#t@!ANuh,a)R|ž"- B$G]!ϐdsSF\٠w7{[jȺ$ay(a¸ǴR*\]0BEA;M0{D_s24OOFg E[ +! +D8D_/C*jXTK!]3{5h$2| f]%5PV@<*~ uK:{9}rC?6V*\L>°p+WjqPglR/Y.F6ELٺ1boD}/S93/9唩)5!gU *> ֕:D0Ma)h&0{=_́1oV$l23^5wG{XiHiqbN#(:hP:. UHT_$_ZH(6Uœ/҄"Q__) .&`&.G%dp;+yB5FelN7#J}\䍷^}&k"~*]ȅğ#7RAȴ&jd-NvAĖ_~F-o:wYMZpDQ{Ul,u+Ez<=ӚY}>^RcQ]W$@h>qQY^qP~}}tٿа܀GkPTY*0UY6jUYI!!YKG0se|3gU b1\..Bk!2h=Y9cTVVE (.MA6n~N*YZ9.eu Z/\**EZ.Qؤ[E"6NjCZ+G.\c08E؃x*+Gy%jۯMFҺu1<f~-]9.m[yi& ̪ef!XIX:(Zd)

M|NQ_c'ڎװG^& nS\kHK 'v*cCh=N{ +u/~|[bE#$vXϙI❢x|fQu@Nf(Ef%§dzrXnm(l )2 iT>H4-pSI <-d,/u068B5EFp؃#? >XAK\E?vKP Q 8;k8.0 Ɇlu׮W hڧPGy )1AM'E6ٕr:"/e8NF;i 4v峰6@y`cJp1pPH|n'a &l`.`#IOcK&0yA S"C-0 +Uv_%6k{ʧ2P :BFhQT(&wD (k8Wk !BW80 +Z;3qEr@(SC7\O 3ʘ2){nΐˁ J6941dxJ a5sl"&Po79hp'"o)MJ?=3[q = `4}{8V$("i4gE0BGiV:V+5JE-d9k"DEmjb +~])Bba?MM('JU},ܔV}@K1@J5vX2 +HQwuE;ixEPʾF;5ՄQB ZR2~ٕP2"h%zAwY ˡ1iCJ/4OLCeRI*Az#!|@}_pD8VgZ"-Ѷ3R(3: +a$; 9lT0R~@_esXV1O[D'w)ZPW1viA})k2}XF>aN[:kR~"6ۘн@_I0 /Ll;Pc]oe2|΋N +XrhC| cV~P9/bL;PR@SiCn ŖMp,=vR,l|eE\vu TA>*r3AT'SYHm;4x9 rD_~%輢;jƾj&l2?Ȋ\5~m,tOûDy(^rw> ڭȌU^e8/<"~88R3M4\V^ձ#'&apn +mTYmy LAro宲y/㙚Tx-#A|I8μe򨲄V bAơD̳^``I#I1B"@F%2ll9q;^Hςߚ7)"i}g-5XsE$ߞĖ@'6n HRJ*,ZV$b|2ԓc0nS5͈y5+\tlֹn]fKIr ? T  @b]DŌ< Q+Pj|7ƒ&D2ydPfOTEO##``QM? dث=MIsͶ}]k# 2Z@{ScO'`:MeMcŕLjmeX̢*cuF0l3ьwu.PGeԻO_Cw(:dX;E͐e:XڶvN: ؼm. {Č[ ·{}]GnӅI9◤-:ZxE@&Y+l5"v$TgtGy ӀgWT6`sl>JӰ;"suEe|\3uL_T!CE~7q"GxULh@SpG#lQt>FL<>l~%KPQ蟂AzK]7KPG@0V@@C913/D/@ +LOe@CRB1SBxlrNvoT? " yz.%fsx6܁nU#!Rݹgæ-QUnbouq|Jgn19'u▄vl7["Vm-b$<ڝ}ӯvg䐛#ngF~3sy9E8mD(\U$Cݿ*|} j`L>[ePu҄0wj;xH8/wng²ر/*$Zjګl1$7KŁ@sۓ\D.$ c+lֻŧ!9:ca 8.\@Vi\(|?J 24vF &;/Hȱy ]CN+xń 3@j}nE.+ 4 loKT#X5dNл8 Hq@Vf5quH"9BqM%(&+v5'YpU*ɚ PRo BP2>WX(Iv&uBI Z椋ѕc!E8\$++sS⯕;8Qkm1hrȊJkHPC*a#E*9W @$$Ad%);"H N1Hك3 +endstream endobj 118 0 obj <>stream +HWˎ6+|^vr0N`II;3ُG1W-. Ő;/_>nMᢓzI\}k{E{ԣ a*" +y(5.>m>m^擤PjǃO:ѐ5͵Fيsq0LOez۰Pe\=w"%?~{StŻ{Nw%_z,qPSwyt3kȱĘrPa(v*w]DCj(z _F }A)AIl#4ZFEN6B#Ie{!iM)ɘdrYԘI03^}p|p}pb!d]C )Q7eB4 ,:V9k:QLK{6ořӏkδs_ $=,֒4$(~bFC2 >(n>wH߶;rB_a%|0(3`9ک{Hg쓎+4ρ Xnn :+L )|2X"O0; d<>73HnPu&:F @g0+)(!# Cyߞ$A2Ku@!TŬ4} +@NϘh.(XRT/VhxШV8jxZ` O6  O{!hU KrlFjV%R@PljX- OW+btäbv NbcN>:&~-0X؈99 }ihӎs_KITy]Fc|J1vwڦE}侢a5x YͺYPne]81Y +Ko 3)Ͳ@  9w& +=U'`|fZ!L\> endobj 123 0 obj <>stream +8;Z]!Z&XGj%#.iN@%o;n)^Co6kr)>Xeu&dHo)u]:%sbSsBL6O2CSco_3(b^/DXGc" +Ic/ecmHmV0a0UmC3dSG3TrcZmOVKp'A064dS5LLIde.G-?@2c=\s#0A%O>1ld.Dud +EG_VdIUao\TJ_8&b,+OlY.Re@[ApTU#M'aeV0AKO:_%E1VtAlr]ZQ,_qPif1#+\pE +MBec#Lu^=>dj%XeG82jO]t-B:p3?n'mB9T'o>jS8\W5jPlQRTpe$ir/i)aLd&PkZV +Wmc?/*.b9]W+3?4sHb?f98b!38GtO,Bq[&(+.L+*G/id;IO0OXEJm +W)mre+-o+bHit#C$&.#%8E:Ig4q4A2oI8[Y]T8dLbsu*614!]nlgj!.c5kJ3/tgdD +6jaZ714As.qb5RYLee+N>+52X18fN&4&rpdTrcZmOVKp'A064dA;-$bkO[*Y!,mF,mf~> +endstream endobj 121 0 obj <>/Shading<>>>/Subtype/Form>>stream +q +601.698 301.285 m +541.263 301.285 l +541.309 398.841 l +541.309 451.921 584.621 498.714 637.7 498.714 c +670.218 498.714 l +670.242 436.571 l +642.038 436.571 l +617.862 436.571 601.746 420.454 601.746 396.279 c +601.745 303.608 601.698 301.285 y +W n +q +0 g +/GS0 gs +128.9794312 0 0 -128.9794312 541.2623901 400 cm +BX /Sh0 sh EX Q +Q +q +670.242 404.446 m +670.327 428.622 l +642.123 428.622 l +621.978 428.622 609.891 416.534 609.891 396.389 c +609.805 372.128 l +638.009 372.214 l +658.154 372.214 670.242 384.301 670.242 404.446 c +W n +q +0 g +/GS0 gs +37.9786873 -43.9988213 -43.9988213 -37.9786873 621.055481 422.3986511 cm +BX /Sh0 sh EX Q +Q +q +678.302 498.714 m +738.737 498.714 l +738.691 401.159 l +738.691 348.079 695.379 301.285 642.3 301.285 c +609.782 301.285 l +609.758 363.43 l +637.962 363.43 l +662.138 363.43 678.254 379.546 678.254 403.721 c +678.255 496.392 678.302 498.714 y +W n +q +0 g +/GS0 gs +-128.9794312 0 0 128.9794312 738.7376099 400 cm +BX /Sh1 sh EX Q +Q + +endstream endobj 122 0 obj <>/ProcSet[/PDF/ImageC]/XObject<>>>/Subtype/Form>>stream +q +/GS0 gs +270 0 0 270 43 265 cm +/Im0 Do +Q + +endstream endobj 157 0 obj <> endobj 159 0 obj <>/Filter/FlateDecode/Height 270/Intent/RelativeColorimetric/Length 25294/Name/X/SMask 160 0 R/Subtype/Image/Type/XObject/Width 270>>stream +H]ou5;;Bw}\Im(BnaNjD]ղD.di"P;e(,[`hrhγ''FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF>>]JWoI~Ogdž[~e';ʳ;<^Lmr z[Y_w͞O%h(WV*{I~Y>e'):Иc. pݕr_8 #< c,|Xw>K  EU 0\ [KKr2i :abP|¼LqRcBs)"( +\q2ŶsJyEb.piGRiײZ6m`38;rGQƢu(ފ(-Ĭݮ8 ;)8x43t&j՘Uk.8VU }/8f,_G?>˾xѿv{:vlvݿz}F(8n7RX~8x7߻E8nnSz HV`wĶA7xV"\ ,F!2 ٝH$EspBAC{  <|X(WzҾWX[*XV߶S5'w0*m qs=@uޢj7R:{J%]g|37(j~K4lW5`tt re3,y3 ;*>tBv$4q͌$'7obu0.Z9yC.9CB!QҌ +Rt攑ǙR01ag)}ghNE5)] +}yR{ أ}) _ +j\QSMLM1gv80lξpȑ(6ɋd+N q>I|и&J,줮a_-?3P6#zv*wsݪZ>.~\z4^z&C blj?SEIZЀ_ZȻ։ ?TwRMM3Ց԰SԁR.Lt<`X,V +)b,.VIk5C: P29dd`=k^Yxn~w𶉿BJ+ҋh_;y 3v+wZ]fa@hDbA|S=?&},t"$I?LI"#`ču#C)iǺ԰d}xc7`&X0V+=mR22.[Njwn־>.P#&u)+6b}Z:3"`:SL!hVpPfXEX8\_Ve))gOGJ}\^&^5|TY^=MWwULGN;07,SRNV5ƙ2}Z%k'L0u@mBjL/F&.21 &XLYػt,c(`S[™҃LvESbe bɒ/aI +W/)4NK쓔/a[y_o&zYP +PR@EkMщ낔 J%FBI9Rl\(cUqӄ[~lӋq`nJ`ZJY`BvԡbRn݅Ef +JQCor_JY3(jtw݌&X ŋl +V DzRIͷWH/IRN9T7Rn坫%(_ٍ L?a/B +\J0Y+)+FJVJ6PD(J.{ L-^)[Q}=#)eu ef +.'&!Â,-`K52i/i]LΓJ" JOa<єH +|oJ)p (g3rb 3LbeȔzzRF3Lх@1/j/71$^0UHKTyE;!,_@Z3JFp@paFBc+bSJzDp)e$Sew>Y y ;؂4\yXs%wl} +_C{Bm)e量wۥ@jO*nd7[ІzW` NNRFJ! L@fz1,M(V,JzNA Ծ2# `ynv4屮~mh_{%r3$,p&7oZ`yAj̪7b^`uLY}+I yj XnbRFb0)la@HXҸه+KW.1#/=B C5=0Eb-@)ߗRu66eR:ۀ#}Շ,40PXL VMJ1ɔb&Sxp/+ظ22Щwj,}oJt0#&9*(}}iWy~Qlo~',ПpE[-7?yQ9jaF|+,YDxTNY)B)H$iR0L룤. |,O< |zH&i_"\3u멚VS +_J'IʭK)8w_tQzV͜rU%U? ½`~LXT1!YNY )'ib"NI&a \ +O$_6ě5:%sNQ7{S^|2㓝<|cwv>RށykRvlg?SH^(xgŞ =rRRJ/Ƅ? 4_sE\C% W`;Ld)ɢ^* +0y)]̔ܣY>Aʞl_;\ +VE?E ԹXSZS +mQ]:L1=adRNR&(eTX 0j_b2L2dHAtBG z70b"A,} ʘzX4P=Ք'P,J$)((=)7>ױ9O`TXX܈OBXL/Ӿ/E0ELw +aGBU5!2wx/m G.UA0,PKaՋ1*tK1jX/X\#{"Cp xgOןj7=. +m8oSRs^ݚi5 I! (%Nc 33U&읦 0/'+lWyik>~a{Xt=θcnwTЈ.L!vGo>z:`Kx?-OWvS+őRsEOҁRKX +by,WHuEy>nݥnMk. ?~?G `S.BvI & FjukˮU5׹%eG` Imlp(zkYRL{,,&E20*V$/]#^ud$Y(01qI qT*=QU=H%eSG!̧9}Q A"dziNJdI L /d B"qm"9g1OmL+\+,e ҵhx,DӴcBQ/)oiqÕ\)bS6p^^/f~LWыeǒbJF`[i)R⢧ȕf:DA;>'n5qqM8SNAc}\UAM+͂ 51fkv`PSh8GSHCSR ->'h%egg=^½i7 ze k =aIlx +V 5,Fp!cNAJ֓@hZ;Y ]h(%%ubOmR Un-W5PBcL$z1HO~)IgWT ܒnIYסVi?oڃl$f +°ۘ2c(%ER(1YqX~$H\fnVg x] _wd$,^=Xb.S0FJVh䅆aLXgR?_J}ZH&mIYrppl}v'`NڜnQkʚI!C)Gy2LKXV ՘g O# ZULVZ/?L΀43\gT``Vc+/U^~-VX!1бDgX =RHi~ӓ=qiK:OV慗5L[4tY`.h1V /&zmHMy'2L #14CܥRPĺ^ΫS?I1*,"5+LiĒHLω'R?(7o]yH$"ؒr/(f s:9e a:,XXXgML )+Ks[7"ɀh.c%u0Bv{ +Fe.KDT/]O*r<-THe`H `GJ*r_;Jr Ro$R.JJZ=KJה()` !^ *y6DJWbŒĖ i ] D.&!.Ώ\F6%I$R9)>7- +65t˜nlU=剔uWHs͐lIY߱%t4ZLJJRRPPP(zeARʦ0)?~M0ИU6t+AA˥P(ta[i sIM]d9&)t#0GB +?)XOq.oIYQT`+4ܟgrKJfZ U()VZLKFRyVbxuƄCWC'!ϊы"e֢0AЮ$ 1[Ll*7bT=@&P&I18&T`(!1}9 q_Irnj) [R~C=8{&?ʂ䮌/ +`sSRzIRV +1.$ŃO0 Cb2F| ]F/v\'An23œ'* "[-*%͘L0Q,))_I6rW%e}=) _foC죛!?>7FH/^^U,&)*צM|O8*u&S0t5i#N\ N\,|cZ DJkV;4pg5\NJFsg0|m=ŶeZ?)=$FBJLj%ISȗc2t.!)v4rlrB71nRDF"x: 9q1y^R=o"Җh^~hb=w,:JX>dJI٘D1re'l(xWP(wAΛW H -t]$)XLL7?܄][ "2b1OqJsr@[Rvvv= +C %fn%`hl?{sW|jEfIvmY6P'_gJ&ô(\}v%${9g/X&HsFg2s~~YVB2 +\ܾ.YJj_j)ȆCŌUū^[gC!5Pi3L'JWp E4-&[,΁XCk*eXnVsO}9Zace5D&f{ +&*W5FRoV{$_uc91SܵDuK GIҤH$L&LbC ρeLJKTʫTwׯ^xaJhɄ`\2D){g/E+|pT<' K!2DHL/URQ2S fb2H"#G3>H1M8bs*e/rSJ9^xsh{70>\m !b `*F)Ի0STXj0T"&xKqSL,&t$wtrcP#|Pi]b<-bJ)}T/H??K2C/!3 +a/ھ@JncD+"шS>FX<,XI<xcxb2IL' I1 }$#X +01#w6Re3Wҭ@ώA$ '29XZt"%Ժ3ߟ̃Ia"3pERdH&(E#uή;B<2A)")dHm`G[I,WG# )?iAJXSVWPn-`+(%a . /&8Lz19' ")p= + R>@cA}ǁԒ^JDOTfB4ҋSU]ZBp*}3|" K<o $f)FMLdrh@$< eGhB(oM񥥣ptճb +R@X)lvnl R4v^%)A!+p0S_Gå+\L.dbr4%3i\qLd[haI1{-`s&:oqI@D}])<r`n?A)ۺ>r9R:#!%I.&/$j &9DHE:={ZfWlk'B{$o%I6?{LRȮdM:S$.J\7cvPJhoL\J)1RWeu*(U2dR:S8&*Gdh&(8;z汞y(oC|K +[7_JA)U+)X%'&IR.cOIH2%-+}-%_¯5`2qcIdDg{nI`y.)F+P +,)Ծ0PMg4S'!e3U,UMd U[n2e eRLFZHL T萔k(JB9= O.ɇaUL3W {BFwػ}@x(7Ck’"zwo[MK'I k@d)JHĖQ"{W~6TN6[`)/R^iRߡCI#[n}ڝYJ)7kؔ-KHڦ۴9:ڱcxEofCZ( +^ FI@>zOEm\Iu(baR0 LF(fA`zPxF dC0b<) %^))S0FzL }@v먧bMSΑiIB- 0Sg+0dΩ1t8LP +lr̂(>r;ɿr#%3NH)Xs<#)6V?eԮ,jeY_K5)+#e}rj?LrI3_b">=BU_zuzYL##e˒Ii_p +"۶i0Kb5] BdqRn^r=Hlue +)%s͹& +ɧ؄Y0rBBDQqϥңWFVT"l6Y0;EڵC{F[o#&kRVKʜHO +dQ|3>xq|&ܦ! CJpDN9d 5G|GByJ1~ tJHqw]}_'x'q);Dʭ5)+#~HqZ=aoйM 1crJ>]C'BPFP 4)v6RLEK;&E{虤+..5`&eŤX2 e @Lt&ظfURdr12L\JF&~ ITuA,xJ_'=QOgTIjIȊSV/-!bc;4$R֤zge% 9mTBsqP,$5>L,#V%$0MqY8L08f]w]J[ +.SL U.#;0?vM1&Z?RE[[kRL=9W19F2bdze:?L&JJL,ca m +@+GlQ`{+ +%y\di*R3(l_cYppӼE,ۉc U'4Lca@1 AɽJ&w*W &ؤ*!:#Fq  LF a2LXB7), +bG4}ۮ#4Rij_a tӸ-f !nZ|Rt6f^Ap暺aO :s*D\JdabUa{ 3gZ(Uܯ eE1!@w3$O7n#ҿIY)̍c^4vT,W)$5Ȉf +&HJwMm.BISFwٺET '(&&y/$Q)m{ +bԾ|:/pGd-ydZ@HK>cM4R^ÑrvI@FzӎZ `b,&&Ej׸m\ĈtUɸˆ 'h +1|:&^,y6 :LطԻ*b/#&RU}YPFdOnDQߘ&r&eq6YdBN.L)NRlJ&?ɸ2Ra26!4JFH%и#qȂQo`  +BzvNˑrSVBJ1RZ%&•.C5̐P4 +ᝪ#މݭ{פ,cۗ]%&Bu I!Ffn@a2kȉ](_(C6)2؄ИMF FԸH"',6,<(`?& bOE՝L)ąDfɪHjc:8/vDg;W0}- +;ɞNv#M-Rk=rһI;e:ʕ˾,I U";-S3W#f] bh3d05,;NcivR /JJ9#F`D^ /Š|CwD~%@~A@7f\:(H:w7/Ɩ%ۺYe !&p$\ y9jR5UXPZQTOZ"*Ș$[QVjr -_3#HrN_6*nxF*+ZY09)R-/k15qu A܁/meT 捔}mbHy93pR$o"IʟP\@}!nq'HI冨ٷ1Ɯ2$ˀXHZl#{ļMr/&9#} u5)'MJ۪Mv_+}%b߄h JM)yJg&m@+P&5W/)L=H^DAd19Dr=0箌wض¯ߦeACX:RCuit4t(&H ;%*z57R#%>( d +Ѯ$w)*(zO# zNI?>ܩzs2dM4/&3dԾp.i=#BXLRtlKW^%_yS\p^A/--638uMNMhr^M5J-!G!6s@̩]e,)mte/`mBvQlꙭ^Y^$%,Tx ^&@ָ kgPȤ95)6L$]c b"^d-Q|ʆ=k>q`~ҤtfF/`ʅB)f /\ع]՜5[RX(oHDCkDMb`3c4a5+V5fU-ZiQUì?&έɼ¡QϚ;Kґ@׭VփͲ1,k2E&y%aJ!)o]"^/T3W/4rjjij8#W2XqLvYSE,DäHw8 +ִ0<֬JRpLN Mg$5 dh!R2#RiT!ڒ.OWӴaH1,0 K>]BNMQì|qXOhW꺰`y*0iL)v}ة#w5]}*T?fz 捔RzI.+QiH\/p)CR4,d䒖KbLX1ژe,+-#V1 w'ZN#1RiZɒiY+񰸝#Ş?aK¿\:5+B')GdHyeIyWuPװŤf@pљ~S`YgI J,Ԋ5ի1ɘY@(]a@xJm()z55B')o-)/P=#HD^Tɠ%ŀxm_Yl|L.CFRJ#SezvF7Ul3S%KPVI/zC}%$IyDD +W)rebɳDd(&O[iRʰ}MdJH)zt$mۻ&Eϋ9t+DTj e6K!Mm씚s + eA rZ f?y1kD(cf*RbyɅ0fQO|9-m?w㸵e0AIDL y7#MђM,&8*E>VVF#S`-x8.&i e;dtN"#Γ4.#6=HP6n.S%rQ@=K)д:M-&g&+YS5QhYdH>IgP +%żPvGrj2gR#=E#E%eMic$sF>M%M2FH rRZrq;/B(+)'H;Kʛ{ +MRPw +ӱ0RDd\ֱ0by/B([Q4B-)'B +CRq-cׇGdVH1ALj{@Z 0B|Y2)kk I Ͳ<˧uO4lR0bbRK,/I lhsrIYH}?()J5^/(`,]ZB) +ќu PRN!)DžR1QC^rX7Rlb>,~ ١^6B|%+)I9DkT%-xRZ([_E$;$%%>~HiI 872Ie;; ;$/Ry>=3=r.@OuM5 j!dX)eJ,ceS {w K7_~8/՞}+岝G#eXr),~&H9GC@Y)Vʸ`'r'SQr+*PJR*R&ѻ;/ID/~O@'47걸wwJR*XҊDKᥗn&Խ+;L8/xA0ֿ;+Jyt56ѽqDKO+ (#+JD7 34{WR?}|JR01)zI .0'Ɖ޵rJRf0o,5I(M.zS c=Ơq-`JYn)".߾ '⪋LG…r|B?@;Nlvwc,``"T|%Uµ#5O,]^dZ/D.Y(&#+eIDX1H.NWX)4\'/x-͓E]X)K)ebLD爏͓/] + ey+eɤQe L[Rr& %A/p8pc!t- Rs)dRv ZI(Y +!$׋yۅd2REazEDk%6Nd|>F CM=u: ͓ㅜ'c,q&¯>e#KFZ5H`xEFJ) \sj_.5q zC)pRVk{^ּws񙌬Ŕ1@KzS +nJF$QW_Rr͸sıqgS&+# dd,Pr)HNJoxqi@tQ$I:1sV1p8/ R*#E3,J +/GJVqLUt#dl=qbq-9wܿ?c,FTJHHz`+D,trȑ)L/<)+eQR +2wfRV/BSIJ NDՈIgyҞݾ'w +-cUE\(yfMq& >VʜK1L`}*FȈ +2Qpx=ƨt/32RX9@ŋX)kWTcjexumLFVHy#36UT +PHI +t#^ypXj&#+e<3\);Xtj^jVT&pS&;pɚccRRzY9⼳+k6 Ȳ3Y)?q,W. QP|4y#Y"$܍p8ttC'eȅ/j)YeK +iA.e8!|7͐r:CR2aRR.LI54QdH[!,^QTx%Jtqc$50y&u^0LJʹ2ȥ )%eK*q)ofK1TViRNs)Ld)K!$e2VJcP \+yB=RP;I"&zP4*DardbR)j=<73EW/2hQ޵)Ծ7Km<7 )Mj_iҹF5S rgʉh|)s.*D! +Dg +h"VKY#(F"X9S&7RHyb榌ܼqZ1L-R)Ëܷ.\ް(;[;`dN5PUΌ@12ezu6& drï$)_)B|R؁d xc&d>dL&(%D3SJX `!P})^a]p86C*M(JV|?egwo @hbEKU/*`[ywY63 'DzAGʹP@F +&*P +)Ĥ[~)HJVR^A)!B&K3w]d ~ (Yth,bbRKѻ@ TPtM9睍5j\v\!)|v.  qG),j  ;cQE+o@йCrN|sqbcIXNPD3,`W,TRD!tBhE+|,S7p|T9;E_ȈzW0)VI~:f#m~z pD6Ϥӛ{{ Z}Oi7 )}a owo 2EW}m屒W1RT+42E3K ș4<cS)_ G)_"k6dJ~!&)yt6\ΖYScU eJE0<:%P!.j_j76t`xJ(QbוO!s%d7wljE.? P0MnSl_Ӥ \F*,1XNdYTPLFN 3._K_IInGJ,&Mf={po;c\{80/hkb̼]G!'?|(Ƈ=ym EUSDڴ6H(' R睙]J@/h5uMH6i-&%]bwJ W)G6ܾ2ꕏdz%HaIGk/ébRv#cN O/v +MD &IޟaՓrt;U&HD +E[vZP"R08 DkZhP6M#X% !о6Cj8~u=Y?(&%xe/=/BZ)2&y;XSfҊwʸMPBFlW!Z(N9[~a,mUN8B;evʖ_hke'LV}ɛbB FILJ&_q&M0=B hHP# F0IꃵT5Bu *d UFի+W@R[]g0RfqCf렀, +2)4 f.)z%))61)P#EsM{ۗH lNowRh_Eh_BX.SLcyFEV0, Lab`&Yg4@Pަtoa`1d63,Y6CFDg?LOH;%qz-t + I59e)ۑS8H>Yt1ѾB1=Rz#%kw +0#L,)O)FJ}%}ԾX(0xd ,`a>aR<*ɀVRnk;W/7 Qs ,uKZ(`0IB1SYr0rn 1чֹ+Jf&/(ζKBl8wI. +픙N {WV%ʸͅ#zqad"A`r,a;=jNAfGHRϥwDJ ų2/ wqNIxUijX8R=^(0u+"ZtS:T_Ō܍IM22Tɛۨ^~ *(`J u0('TS*wa,ѾȈF*^UxKn\7YlgRRݲO,Դ)CT|rJtS>.j&UPj pinu%n~Z9>61rn;:bRҗO&3fA k$itu4RX.X(3 \/r`L0J]ip1/{D}ԧR5 X`2➝)DZäD Hq+4IpT !w8Uz%A(Wh] ߔ=P+N-]n 631 &ePNt8G~/Y>-i#C]q|,=.`.եqAJ@\B)DW%M.K +cFO/PIڨĤi&jfvO'rmUoU\^menEfV&5M?T"K=A#g{"xNcDzPdHD#'94q+)#j&uIU/l#%Fh)^2G( cޅeeRҷ%"7gBO%IvEϣLĸ5>CG{j|)7pw4v1GS^4cD[җڌ+lTsx4YaZs;h^ԕ}g)1mN?.QT_(™fT{Pnz.| 0vuT +endstream endobj 160 0 obj <>/Filter/FlateDecode/Height 270/Intent/RelativeColorimetric/Length 13057/Name/X/Subtype/Image/Type/XObject/Width 270>>stream +Hy8Ͻ01mƚ% dBEUd/G*ԡIi 3t({X){{Q̠{.y?fy|wL0a„ &L0a„ &L0a„ &_[)/>>hTV- _7 ^ sbJљA >A9 ++}!gXYYSsgYy4mn.NNvlnԜ`XYRPMBpx!%\L0~>.vVЏAkh9 K $HyA"%ppȠ\XT|3$ A/ +8R2 +J*(44$/+% N#QI)Yy%eԼ3e"p~NqA]Vvq~!1 +ZMSK[WO100dF_OGK$'D Hi9%͗7CME^ZBt^rjAi7LPXT)#Fw:--^n036\QeBYkhlKM1a"p.9 Zsrb)9E9j6W7wAeMu5uMzK-[]\ͰhjGs,s9h.( "Gkhd=~'@ wx[746w؁'FoH-'XNۂl\TB +a79 ?0($4"*HLl\\\<]bcG{9Y[9{Frctgzl4VqQnt₇O@XLRFc5}^!Q1?';zT錌LdNO;}opT|҉4c7#2s eUKtw`EE@-մ[:z!F$&OMҲ+v(/J +oݠ, 6V-#c1bHy = !щӳ.]vx?08b!#Cֆ{2 ~̼[ZIC V䜈q꣐p"Ye^{Bc~I=_| olnx?84zztll0Q0AYc19vAsi<:08wFSmina_WK )6(2hŐRTYgsO@XѓYJޯo|K2a|brrjjj ]&C-w^H + +KpN}KylrQpe1VhAْbȩhaLp GOϽzν @E+Ifo333=9:F| 8<>5Zoxtrz3+% UxmKfgu_ȑSK?~Z1zb;x;356Bh{='-!؈HH˹~4265atvbeaFrؠm 'L!e`'(_iYťwkM]aq :8H8t0"بn'O,bʢ̸%X'(TP5ڻy_'^z *>y<N&F'sJ;o-dFGCUQf|ǦA2-VĀb oVۻ(Tb砜yO6j;omͲ٠^lЖȡYعyD$f_/w}S۳dJ-(X Iq񃍋l,j1{eg =+GO#+~~0>VV/R٠VA1)% fa oܩmx;0Lrߜ ~eeTnsN: Q󨩭bS_[A/$!1`y%P1|=W\|[628)gb/,1Տ{LLߔ /4̙Gk׺jUcVkuܱU\ &,! K¦@X" BšB3?4BNnྟ]gޣW-)M]}$bK4|ͦ?p'$.-E#@1 :D-k灓7mܒ*aH Tb;4j3SܲG&=Պ:Gc0tg39z9%RTCwhiK׬ T %S" d˾޴罸*!%HL@i3/]q=Cs.3>[R"c\+4:/V}}?pOf|F~iH3SBGh u2c;a`(mK壑1%0tG!u2gї9v#8!9E#4Fdኵ[~:rĖ-0z c lf+A`Lad d! z΃[2RrkDyOfYr.[8FE_~=#KWZqM8 ' ݲiqMsgbJ00M'v7<*|$U: l@dn<8A5ѭ'hls9 +a{גUv7q MAhh(A1NOn~+VnqBT1 yKl |RV-Tbhnqu;ZHB6lY44Pi|>1<^B~ɛ1,L@x]t +O-ӰOʗ2 hHc[2r RX%}Լ}FIl;4>x݇߂@r;SR@QyZ5<' +`,m[3{"K68I~{FR) yQ +@c$5 f$:Ac:#T*իR9<4 n+Is#X!?hI1ޝ)mT(`ȣ|g2XT$l;_42R(4X&I(`Cȣr0 ' xL/g;+KkE4wdR=$iI]|~PP!$岾^iOwwWW焑HmʢVdcaaHahOhw7#Ǥk3PY(^(ޞNqG{kKKH$j?BaC](/A%giƈ2 Θt͖* ׯ,^*}.IG[E%q#(/r2"a35mG:|.6&zܰDEgxSIx5C&w|#LdG.=)iw 5 +C9<둴5UyIcYa!Ə?.K]fI* (s3 +#QnYCGڅ2ch@.lտ(-r2RX ]OR\x Scmwx +W4ecuJ/x!z@`P:PUVv/|ɉD""8\xV =}#sH4Pl%KrPP4.joq؉1Jvq"W;َNr';F5;9mmlpJۥ +u7 'BNwppt$ "3Xˍ 4ʨQ*`(UjHO;>"ؗLtt]n +JX)XFm:bnT+F/+%>X\HəL11os̅_4 +85 +eT H eܥ8CDg2ӛ b!]鳗~IzOkNCΖr^֣?H F + OHzf1} 1cҵ^Pլ^1 jd%G342 ".O3!qIǜgϋK#(/r2"!km;_[{4@l1;fbNY9_27Hh9P?Xх`F'gpFi uLں0<%qim&v$&nI4q:I3ʹiʹN6qbb H ]K70b$@Z6wǵsF{iUe#BN +$Ɲ;S/~ͩjFŽB̉m@[mQv#4"Z,.(W6ujtS9 g~1MYpOs,5K;u4[,  8~ W~uRQ<RՕ +FdL4whT1,E~ñYaɛR?g +SGh#űG_Ӏ>1O4UQIܼjs8\.q) 4NT@iq7_3~O"tF;V{.31:`D EE]GFg0.X%gr.eV;\$Ђ\Q(hI9Г/mdW|lij47/\hP M[ VWWxVX:ukU~KfpE/)o~ȊCA-6pjXf[R0GNd-}+U|֮;hg45^-K2h ^hl +ѷMR\d5\it֕d'9Ħ֩Zp!Wn  ~ }sTl 1R%O9N*R̋N?y5T/4 D^-dc}Zfki$\n0^j՛Nw`qkpmCW +騳hew@۪q<7<&%kxx`øk7m@U}=R:xe#;.4$N ^ZP68 R7>4xyyH\^M%EA&J=7\07BO~2e Q)` 4(-1|+WNœƶc}lj%$  D! ęE:54HmAЍg^~B/Xn0(ҸN+T[7>cqzVd1qhXh }>w>F?a\tRpl,'mU0ŏIW'oF74|V83R%묶,'Qe2qˌ<`mmh*#$BRDIm8Ql`3HqfI}b4`k4B8tWbt5 YtWSDnP4LbM<_ sBg E:LHH +̌v+e {;4pH$uF{rVWWWV|sqWe񑰽2g$ r[بn`FJLC;lEvbw-{}w^r,ɑ:CNR]RPBPkE(/}GRFhphY ٥zվeԝ3gzzj;bױLcqluq:ZDuQDD"! $%5,$EE@@@$,!a :Frs/?yW7xt:F=jfaT*J̕4ԘBbg4!Z!Zڽe_Y)fRHdg0Z=WkKGU>T[KRc\3Bs ,m3PWƹ; JF+@.kQTgFy0<دhi(L-b)d3Bis>5 ]n6p4P.Ǔ^ѩ:YW{n +EooOwWGNZ^w+J#;Q,n0)s`,K Ȏ]9rT!3g'3yQZ~Y&<𓬹8?3Ee3NNdȄ:!ҀM$DM%ȉ lT@UP\V!\2IEyiIQANfjH(E& /⚖ʻdžy]pEl.[:PټalRZFfVʼ(x)NzqE1,ibEbF#6ŋpatHDQȰ@ǝLu"Id:èjPMBm0mFF4*c܈W/9}e;\:|ߛ>\O6AD (jGBc>y_JRfig (h}c'Z])ή,6}aXL +,B d/V" C|7`ǽ`ֽٗ JttšǾpO 9ɔeL&  N*#xf?:8RoN6TV8z꜕kqˌĐ](( !nf;7HYm { `#2t DrK m=JF>B_W)!`R.,w/hqjvS1<69 0LЍ~IZhQV7ETݙr E9E5m=qovT FY A(QBjf^^coxT=5;pO~(7iWCQV} +#cӳK}C p (]@WP6:&y:^سn3'$+,6tt+'gAdZUTw~C{aIcW[NNNnn^Aݒ2^}SK\1@5>95;F:=>24t?}!%`/Oe +DYe秪JZ]s~csK{WOrLX@U'2׾(Xp 8{<ˤu M2imkQS3:a<X B5FF(AI |I]ӫP-$@1;7u4ܽdH/F|+@xau G*jtьO'5کY<" Hh`@ FYFjs% 7B";{)ղAZ] 5~" 7:VJ e= $ Hos%h~ +QFѢPiu/( + /oڻ)\qh+ i'mSiFɗ/0Ɗ, i(xa4,DhkuAtQx4h`eޅvtDhzf6}a4|$[zۆyXi" }|RS%_9M׌ @B쓁Ҍh?gA7^5VG \u!y#I0+D& t>m.H +RlNg,"4i`E2=O?z5= 4@ht/-ۻ}㺵'KhT;Fn|'ľ/!~a4L JfiAR7[abOL5EB_y'Ĥh unZ=h-ɸg9X>yOOh<ݭje_{}Yfl;};7,zx +cRy<[E9e7t'CInBj{m'B 0ʼs_o5XDh6VMUɑ7]pۻcMy4{{e7lY2F]I" R4b([\Y*,Op+Y*)y-(ːmƖU>\34Hg;s06`HoϪKĆp8`Td3ci,Q,YPƆz:Z<{3#-%Y6N6&alŕX9 r1A0ąiSL/5ΧV5w O/,|_ <5>E- +4BcRn豰9>Ol#4>|X|++bd^*Kh &b48(sg;/:G)ӳs+K)%GD'_W1jyf&)FȃY^MymkOG},-̝Ҁ#fԼmqG>2Nmo(N:{wlTbvQEc;3!ɉ#wD@^ AnMeyI-X+j8x' G0R ޤΖ</ocb0 {o^4%7$Ą㱐r0A`']0&8>UgoL&^W UoƆxĦ޸_J2Hw=Į@ɗBN{p,v*Urh4 \]Z@h&=EwWGaՄH<#?DZuwwuviJhn|q齂[fDŽ~:hcaHM,<"2jzhlxBV~ieB "_<ZYZqws$V>]@xY}]Mew n_JK9wG% .hH6}i-$2=u9vqiyEUMM-(/-ø9urBcSWQ r]MKI~( e% 6!Y Hc3+\AS +(*JNnޝ¢bFN^nNZ"x>tw9 NLӣ ?֍kٙi)<,M vk!/Y-0cWԴLF*#=-5 p473s]WJRbsgOl-!5Te%EX' HcX +꺦6hOl@pxd}>*2<8foenG zh/‚yc<9;Y71Ej"0A>N/b`I#4uAxapSwq0ޥghaB8 wWg-LQ[]P +o`T 0*2u}SKh #F;;:%\UYIYUfhp[k&:jJrBXĂm G;ꨀppJ+h L-,,/+s3#=];eedwY^ݨ];Uv(HaBk+dA &66hZjBZ.** + t{PHpNS]MU /+% [_;Z86n>A\RFn"B H K0IIQm<\[hXװps.&Jn.N.nm|(1 ?t Q,DPMS;M/OK<30uc#l)=ZHi[!"aݼ`N1j2G8k +t +3j\EWE `PN<`|ت1c&ΡBćɃZ{"yv8 eP!eQEԙDN޽s~!B!B!BHu +endstream endobj 158 0 obj <> endobj 161 0 obj <> endobj 162 0 obj [0.0 0.0 0.0] endobj 163 0 obj <>/ProcSet[/PDF/ImageB]/XObject<>>>/Subtype/Form>>stream +q +/GS0 gs +270 0 0 270 43 265 cm +/Im0 Do +Q + +endstream endobj 164 0 obj <> endobj 166 0 obj <>/Filter/FlateDecode/Height 270/Intent/RelativeColorimetric/Length 13057/Name/X/Subtype/Image/Type/XObject/Width 270>>stream +Hy8Ͻ01mƚ% dBEUd/G*ԡIi 3t({X){{Q̠{.y?fy|wL0a„ &L0a„ &L0a„ &_[)/>>hTV- _7 ^ sbJљA >A9 ++}!gXYYSsgYy4mn.NNvlnԜ`XYRPMBpx!%\L0~>.vVЏAkh9 K $HyA"%ppȠ\XT|3$ A/ +8R2 +J*(44$/+% N#QI)Yy%eԼ3e"p~NqA]Vvq~!1 +ZMSK[WO100dF_OGK$'D Hi9%͗7CME^ZBt^rjAi7LPXT)#Fw:--^n036\QeBYkhlKM1a"p.9 Zsrb)9E9j6W7wAeMu5uMzK-[]\ͰhjGs,s9h.( "Gkhd=~'@ wx[746w؁'FoH-'XNۂl\TB +a79 ?0($4"*HLl\\\<]bcG{9Y[9{Frctgzl4VqQnt₇O@XLRFc5}^!Q1?';zT錌LdNO;}opT|҉4c7#2s eUKtw`EE@-մ[:z!F$&OMҲ+v(/J +oݠ, 6V-#c1bHy = !щӳ.]vx?08b!#Cֆ{2 ~̼[ZIC V䜈q꣐p"Ye^{Bc~I=_| olnx?84zztll0Q0AYc19vAsi<:08wFSmina_WK )6(2hŐRTYgsO@XѓYJޯo|K2a|brrjjj ]&C-w^H + +KpN}KylrQpe1VhAْbȩhaLp GOϽzν @E+Ifo333=9:F| 8<>5Zoxtrz3+% UxmKfgu_ȑSK?~Z1zb;x;356Bh{='-!؈HH˹~4265atvbeaFrؠm 'L!e`'(_iYťwkM]aq :8H8t0"بn'O,bʢ̸%X'(TP5ڻy_'^z *>y<N&F'sJ;o-dFGCUQf|ǦA2-VĀb oVۻ(Tb砜yO6j;omͲ٠^lЖȡYعyD$f_/w}S۳dJ-(X Iq񃍋l,j1{eg =+GO#+~~0>VV/R٠VA1)% fa oܩmx;0Lrߜ ~eeTnsN: Q󨩭bS_[A/$!1`y%P1|=W\|[628)gb/,1Տ{LLߔ /4̙Gk׺jUcVkuܱU\ &,! K¦@X" BšB3?4BNnྟ]gޣW-)M]}$bK4|ͦ?p'$.-E#@1 :D-k灓7mܒ*aH Tb;4j3SܲG&=Պ:Gc0tg39z9%RTCwhiK׬ T %S" d˾޴罸*!%HL@i3/]q=Cs.3>[R"c\+4:/V}}?pOf|F~iH3SBGh u2c;a`(mK壑1%0tG!u2gї9v#8!9E#4Fdኵ[~:rĖ-0z c lf+A`Lad d! z΃[2RrkDyOfYr.[8FE_~=#KWZqM8 ' ݲiqMsgbJ00M'v7<*|$U: l@dn<8A5ѭ'hls9 +a{גUv7q MAhh(A1NOn~+VnqBT1 yKl |RV-Tbhnqu;ZHB6lY44Pi|>1<^B~ɛ1,L@x]t +O-ӰOʗ2 hHc[2r RX%}Լ}FIl;4>x݇߂@r;SR@QyZ5<' +`,m[3{"K68I~{FR) yQ +@c$5 f$:Ac:#T*իR9<4 n+Is#X!?hI1ޝ)mT(`ȣ|g2XT$l;_42R(4X&I(`Cȣr0 ' xL/g;+KkE4wdR=$iI]|~PP!$岾^iOwwWW焑HmʢVdcaaHahOhw7#Ǥk3PY(^(ޞNqG{kKKH$j?BaC](/A%giƈ2 Θt͖* ׯ,^*}.IG[E%q#(/r2"a35mG:|.6&zܰDEgxSIx5C&w|#LdG.=)iw 5 +C9<둴5UyIcYa!Ə?.K]fI* (s3 +#QnYCGڅ2ch@.lտ(-r2RX ]OR\x Scmwx +W4ecuJ/x!z@`P:PUVv/|ɉD""8\xV =}#sH4Pl%KrPP4.joq؉1Jvq"W;َNr';F5;9mmlpJۥ +u7 'BNwppt$ "3Xˍ 4ʨQ*`(UjHO;>"ؗLtt]n +JX)XFm:bnT+F/+%>X\HəL11os̅_4 +85 +eT H eܥ8CDg2ӛ b!]鳗~IzOkNCΖr^֣?H F + OHzf1} 1cҵ^Pլ^1 jd%G342 ".O3!qIǜgϋK#(/r2"!km;_[{4@l1;fbNY9_27Hh9P?Xх`F'gpFi uLں0<%qim&v$&nI4q:I3ʹiʹN6qbb H ]K70b$@Z6wǵsF{iUe#BN +$Ɲ;S/~ͩjFŽB̉m@[mQv#4"Z,.(W6ujtS9 g~1MYpOs,5K;u4[,  8~ W~uRQ<RՕ +FdL4whT1,E~ñYaɛR?g +SGh#űG_Ӏ>1O4UQIܼjs8\.q) 4NT@iq7_3~O"tF;V{.31:`D EE]GFg0.X%gr.eV;\$Ђ\Q(hI9Г/mdW|lij47/\hP M[ VWWxVX:ukU~KfpE/)o~ȊCA-6pjXf[R0GNd-}+U|֮;hg45^-K2h ^hl +ѷMR\d5\it֕d'9Ħ֩Zp!Wn  ~ }sTl 1R%O9N*R̋N?y5T/4 D^-dc}Zfki$\n0^j՛Nw`qkpmCW +騳hew@۪q<7<&%kxx`øk7m@U}=R:xe#;.4$N ^ZP68 R7>4xyyH\^M%EA&J=7\07BO~2e Q)` 4(-1|+WNœƶc}lj%$  D! ęE:54HmAЍg^~B/Xn0(ҸN+T[7>cqzVd1qhXh }>w>F?a\tRpl,'mU0ŏIW'oF74|V83R%묶,'Qe2qˌ<`mmh*#$BRDIm8Ql`3HqfI}b4`k4B8tWbt5 YtWSDnP4LbM<_ sBg E:LHH +̌v+e {;4pH$uF{rVWWWV|sqWe񑰽2g$ r[بn`FJLC;lEvbw-{}w^r,ɑ:CNR]RPBPkE(/}GRFhphY ٥zվeԝ3gzzj;bױLcqluq:ZDuQDD"! $%5,$EE@@@$,!a :Frs/?yW7xt:F=jfaT*J̕4ԘBbg4!Z!Zڽe_Y)fRHdg0Z=WkKGU>T[KRc\3Bs ,m3PWƹ; JF+@.kQTgFy0<دhi(L-b)d3Bis>5 ]n6p4P.Ǔ^ѩ:YW{n +EooOwWGNZ^w+J#;Q,n0)s`,K Ȏ]9rT!3g'3yQZ~Y&<𓬹8?3Ee3NNdȄ:!ҀM$DM%ȉ lT@UP\V!\2IEyiIQANfjH(E& /⚖ʻdžy]pEl.[:PټalRZFfVʼ(x)NzqE1,ibEbF#6ŋpatHDQȰ@ǝLu"Id:èjPMBm0mFF4*c܈W/9}e;\:|ߛ>\O6AD (jGBc>y_JRfig (h}c'Z])ή,6}aXL +,B d/V" C|7`ǽ`ֽٗ JttšǾpO 9ɔeL&  N*#xf?:8RoN6TV8z꜕kqˌĐ](( !nf;7HYm { `#2t DrK m=JF>B_W)!`R.,w/hqjvS1<69 0LЍ~IZhQV7ETݙr E9E5m=qovT FY A(QBjf^^coxT=5;pO~(7iWCQV} +#cӳK}C p (]@WP6:&y:^سn3'$+,6tt+'gAdZUTw~C{aIcW[NNNnn^Aݒ2^}SK\1@5>95;F:=>24t?}!%`/Oe +DYe秪JZ]s~csK{WOrLX@U'2׾(Xp 8{<ˤu M2imkQS3:a<X B5FF(AI |I]ӫP-$@1;7u4ܽdH/F|+@xau G*jtьO'5کY<" Hh`@ FYFjs% 7B";{)ղAZ] 5~" 7:VJ e= $ Hos%h~ +QFѢPiu/( + /oڻ)\qh+ i'mSiFɗ/0Ɗ, i(xa4,DhkuAtQx4h`eޅvtDhzf6}a4|$[zۆyXi" }|RS%_9M׌ @B쓁Ҍh?gA7^5VG \u!y#I0+D& t>m.H +RlNg,"4i`E2=O?z5= 4@ht/-ۻ}㺵'KhT;Fn|'ľ/!~a4L JfiAR7[abOL5EB_y'Ĥh unZ=h-ɸg9X>yOOh<ݭje_{}Yfl;};7,zx +cRy<[E9e7t'CInBj{m'B 0ʼs_o5XDh6VMUɑ7]pۻcMy4{{e7lY2F]I" R4b([\Y*,Op+Y*)y-(ːmƖU>\34Hg;s06`HoϪKĆp8`Td3ci,Q,YPƆz:Z<{3#-%Y6N6&alŕX9 r1A0ąiSL/5ΧV5w O/,|_ <5>E- +4BcRn豰9>Ol#4>|X|++bd^*Kh &b48(sg;/:G)ӳs+K)%GD'_W1jyf&)FȃY^MymkOG},-̝Ҁ#fԼmqG>2Nmo(N:{wlTbvQEc;3!ɉ#wD@^ AnMeyI-X+j8x' G0R ޤΖ</ocb0 {o^4%7$Ą㱐r0A`']0&8>UgoL&^W UoƆxĦ޸_J2Hw=Į@ɗBN{p,v*Urh4 \]Z@h&=EwWGaՄH<#?DZuwwuviJhn|q齂[fDŽ~:hcaHM,<"2jzhlxBV~ieB "_<ZYZqws$V>]@xY}]Mew n_JK9wG% .hH6}i-$2=u9vqiyEUMM-(/-ø9urBcSWQ r]MKI~( e% 6!Y Hc3+\AS +(*JNnޝ¢bFN^nNZ"x>tw9 NLӣ ?֍kٙi)<,M vk!/Y-0cWԴLF*#=-5 p473s]WJRbsgOl-!5Te%EX' HcX +꺦6hOl@pxd}>*2<8foenG zh/‚yc<9;Y71Ej"0A>N/b`I#4uAxapSwq0ޥghaB8 wWg-LQ[]P +o`T 0*2u}SKh #F;;:%\UYIYUfhp[k&:jJrBXĂm G;ꨀppJ+h L-,,/+s3#=];eedwY^ݨ];Uv(HaBk+dA &66hZjBZ.** + t{PHpNS]MU /+% [_;Z86n>A\RFn"B H K0IIQm<\[hXװps.&Jn.N.nm|(1 ?t Q,DPMS;M/OK<30uc#l)=ZHi[!"aݼ`N1j2G8k +t +3j\EWE `PN<`|ت1c&ΡBćɃZ{"yv8 eP!eQEԙDN޽s~!B!B!BHu +endstream endobj 165 0 obj <> endobj 167 0 obj [/ICCBased 168 0 R] endobj 168 0 obj <>stream +HyTSwoɞc [5laQIBHADED2mtFOE.c}08׎8GNg9w߽'0 ֠Jb  + 2y.-;!KZ ^i"L0- @8(r;q7Ly&Qq4j|9 +V)gB0iW8#8wթ8_٥ʨQQj@&A)/g>'Kt;\ ӥ$պFZUn(4T%)뫔0C&Zi8bxEB;Pӓ̹A om?W= +x-[0}y)7ta>jT7@tܛ`q2ʀ&6ZLĄ?_yxg)˔zçLU*uSkSeO4?׸c. R ߁-25 S>ӣVd`rn~Y&+`;A4 A9=-tl`;~p Gp| [`L`< "A YA+Cb(R,*T2B- +ꇆnQt}MA0alSx k&^>0|>_',G!"F$H:R!zFQd?r 9\A&G rQ hE]a4zBgE#H *B=0HIpp0MxJ$D1D, VĭKĻYdE"EI2EBGt4MzNr!YK ?%_&#(0J:EAiQ(()ӔWT6U@P+!~mD eԴ!hӦh/']B/ҏӿ?a0nhF!X8܌kc&5S6lIa2cKMA!E#ƒdV(kel }}Cq9 +N')].uJr + wG xR^[oƜchg`>b$*~ :Eb~,m,-ݖ,Y¬*6X[ݱF=3뭷Y~dó ti zf6~`{v.Ng#{}}jc1X6fm;'_9 r:8q:˜O:ϸ8uJqnv=MmR 4 +n3ܣkGݯz=[==<=GTB(/S,]6*-W:#7*e^YDY}UjAyT`#D="b{ų+ʯ:!kJ4Gmt}uC%K7YVfFY .=b?SƕƩȺy چ k5%4m7lqlioZlG+Zz͹mzy]?uuw|"űNwW&e֥ﺱ*|j5kyݭǯg^ykEklD_p߶7Dmo꿻1ml{Mś nLl<9O[$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! +zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Km +endstream endobj 154 0 obj <> endobj 155 0 obj <> endobj 156 0 obj <> endobj 170 0 obj <> endobj 171 0 obj <> endobj 169 0 obj <> endobj 172 0 obj <> endobj 173 0 obj <> endobj 174 0 obj <> endobj 120 0 obj <> endobj 115 0 obj <>stream +Hˎ7D+Tck1+c`x17fŕOEβRbV>"3ol?'zݹol0ي㿏=|{i ާUeD {e%yvqG !os.6Uo~̛ym=ȸ.޸Ǵۘe3E8?nbK@oopQ)ڼ)o_VǗ䣄=_n{ofϏ'_ G} +D&>$6<ϊ?JՒwik.Krm+$'zΘWȧGP)4!>zE'X}eFFC3<ZeGA6'dZ1p >%\MNR);g` XN'֋8bJ҄QL~DU⅖XڋT/$uyYj7Nwy2l2oHe:qG^~dZ{hBڳBS Dd4;Rj{<ϒܑ炴"'-&Fdi#3QF{3WGs$΢YQ#$Vt67fhI%XsFsA]kJ?]WJǃt|DdO>gܐ0\ڦM~dkuc }ZROGlٳ yOJHGYIαJm+㼔@aKcм&*.Nj7:R9γ;lLeC酪<;xb }(noj#8/s@T^yyOL>ݵՓlz]/ܛ_Sp U[Ut .aV[@ۺ؝$`v -IL$rg۫e"yMhxxR`7l8ddC@-[{0iBFOՃp_"wu+|U*I~*%o>^ :]s!o/4XJe2 i-'x67ǦlF#T.p}[i58"}ֲqN, PBdΐu \\X3wz&%ܓ/ W9cZz}Dbb|A$ϥ"Qʴ ږ [1"LQjnAT[2(T˙oH_K39v) ^OԱ +M˘O{8s8&')/q[nf.n6N>Iaw{d<'3#lUFCD/NNJ1@#URم~A=/E +\꧒ bSz%:# FpRN7]7d:gp(qE'4Jt7YIQj `H #neπHVBTA; I0=XXKF,P[~ێG0z RtM`W[3&6B[pgZi7S9n\j]tDbNfz`Omu:;; '"4~}&dГ^5WD0qFb` `d}F;l%5&Xt]x% +a^cogFHB&* BJs0Zg1"9" sX#R6j3:QDMˎ}]E h\WPhy6gM˗sc!b0 +<'zl|]%@`AiHۻKG Wv7tE<"J&c'=`^K.:(щN [f{AVDEڬvD]lLYoFK 塂i٦it>|9ȹ"^+܀57!sjipȊFl0vp]-϶,+5[SVy5g <#`1>_!"<|8_[Q||O85] +ȶ ~̸c~:[ !zY_wѿB>;[ .:37 㡉= O6Z/@!Hfp ]!~O_εvv7@Dg:,iVTfǠeYi UC>nT댳Ԣy.H&EW~"5LE " }bo+7U {^XX6 i]uJ5+,Z + X0L,*soK >C8pWM-PP8r;;2'!'%G*T3S0B.-i"@h,ڶlbۏEuC2F3ţ3Q >œ CH2t֢F+[jV>x:`N3H9?u<5 k Jxljh`ġ  +endstream endobj 116 0 obj <> endobj 117 0 obj <>stream +8;Z\799QA!&DYti=lCN=Bs2V9QgjuEGt!,]&T&F?B&\M5co?1WOHh(o]`GolF+<2= +\=8I.7SIGGX7]1&=RBX">\5`,s0?7Rc`(V]]AW;h:2G1oSN(D@#<_R`CH65Xeju1lX6^>snfUO&SNcTg(\H8[M"W@r#CV>bgH"bs3!]Pki;Fm0+nCk2<9MU!Tf=#!.itiE +fTZPgYF^o9=W$-?S@qaiOBpsNi:dNgSrZ\H5rcA8g#2pl_fuS$;@2oAMBh7.p]n$Q +kjJ95S!XLj#*]/=aOqJ/IC0&bd$dAf.T<(&PB5jY&_2_u'n"'pQ"YL(9M=eLoDt%r +r?o=9s2dM)9%Hq@Il&,i,/T%#XKL?kgZ4;'2i5g(!nOC?8cM>dDaK++iKII:V!7 +]@s6:4sDmA8XqtQW/!Qs./")Bd"gM`2FY(Dh];>$.UZspJuaMfgdF5PJH&hm[-JrJ +"(Gl4<]]FhfsQB1.in8EWoF4PPk&"WNu7[V<>g53GnU-B!R?Nc.b6TC,G;hj`rd7sCR"-0Hl$8uqP\B)K0G$0 +_!Gi4fk>PM_Ekep>;nJOqEQ#Rm)4SNdSj/GNscA_Cj`"=@31GFbRJB!oJ$jmN7=tL +d"en]oO9&?O$!VUj(b/0*1un$QRMVu+4X#Kl_A!r7X][\7G0sKone8eI5J'&UlWs' +WqCB)^JLki-SePfeX$2&Bfp50XnXgT&+^O%~> +endstream endobj 108 0 obj <> endobj 175 0 obj <> endobj 176 0 obj <> endobj 177 0 obj <> endobj 178 0 obj <> endobj 112 0 obj <>stream +HWˎ% ߯pD=(mYEE Q* c3-t|'wϿ!yBJN)+z'B8} T=u?#WC\=$ZN7PΊM|vdW;5#? ~Cr=k,G^ # Z:^y?^_r .x8 +4GKV(2>㿎o?~?~WF|WR:S 3DHLzF?ʔ=ڀaLɌ~r  qN4eA53;"UK#Y|q>C_~'"^ce]SGHƮxxJ5AnD֘wgE#D ExH;]g"@r0\Y3-t&|vG #^?쥺Tȧ08&9bq!F{"Vu^&7ՠO 2­9/Ha ݪ.>Hiݺ0-]*N1@T,+Kq(6A}|P%YPa96p`1' <|êuA J= gVDƱODz e ipT ʄa{{(bφD,^ݎA vF"AZў)'BD6P OV\ @JMאcC1.oxb[g_xЀX@pj0<$xԀE4)PndZ#OP@e!s;/X$vj#վ!+₍6#* ]`,(GNiKCe& ";q;]^|Mئ%!k 6tZcC !,$)$PnKH;./ ?>LjWaF*"oO#Cv&qrApd1R5W=>",0 FL$~dЛql<_j6ʠ7y<n7thD"XnѬeܼ͊d:HKHU,Vgy,}s*">oJjC2|sm;vU{Qf=U9~tC +؄MĖ)Eg9#EE—,@W5B1c +|68Vn`M?CÓ0#>߼#bQ෋gD +"a TZdp`&RA) +TвAE;[yJj۟ؑv|P:C g dˎP接1*~%تq1rl.#qIM.^J=_kȼpؚ*2?XJ(+BP7!-rХ- x%Fq;¸CG> endobj 114 0 obj <>stream +8;Z\60lk2T$uAXl.e+(JZE*p'!W/E1+_-YP8L$!S8^Q\Ffq)=uX2P)=,@mS6a%bZQu"DLlF^HaZ-FpCO=H3DK(bk$$IsLr[ilJ9OOT]Dh$f!lGiU,d +Ui\Y5Tr7Ccka]"\a2nrJ%dgg@#^R\k*+5216cuW`Asi?A(#K4:0^dC>WP`M`-p6Z6@\SuVZp&0eV^^AHO%-N +6+u$SG'aEtjNc3iI&^+Hb@&.TgDICL$7a`=^cKc,)n/_FjMUQee^5C7V-+=HlA0#'6.)RCh7 +AMaUndHTb>V0cD7]JuJ9\+lJ4$MMriBVh>cd6[*s_ulp&IQErj5N&HcN;=DAg/"8: +Mq3Zr6Do%2PE0ZInTD:*#/B<>3/.3Cb"#jWrF@J58c +endstream endobj 104 0 obj <>stream +HWˊGWZ:3=Ki`fa6vKϜUnF8O>Ѭq]>*do!-+d6uuyׯf}1Ydfcַ˗,kte!)qb}qnVΐ6lY=$Vl"VJD 9ͯnfݾ|[ ~9 47D"w6u7~~meqe q8w[tu9D{y#3gQ}(eˮO~u<؛f7"/[_+` xclIC}U}B<4edf4:>m)= rEv i˹Sz+p bbW *D@W76SSiW$h3~S=~rp#x7$:F٢h+Mec 0\+汫liqEJ3Sw{0-|ȮAsHJS:T떿GrUn`A G hEM2V#KG0#B`i/ȮeX@Gt`:?=dHBcDYN  ';Bfve$6{Ywx4Ԡ281~ *dǿSFŒ( 2ZSX#~6ԪQA<\s+s8.ȮG!GyRyAi;~)&'zpyg R<6 yN4@5,y[LN&CCDē tGj9 Ģ]>^f AO8p>h_[^Fm#|‰}T4 yX2z9:kGu$dy^q1ѹUYrܳH!Qu`cPpQ7+BRe(Gs5qAv ]izvNَ B DzY#÷22qAl#t`!$P (RkВk9v`E]9cni.uNAwJZ@q/jEmdzLЖeꑻ&OlHR*N1َ D؎[Lvx\}I?bUj+fx5 /pLdO-*T|@W4W[ 's锘iDvU qЋg% Rp+c+ AR2H&ail~ ]؏(J ^=o`N8P׶~Pw㲼"PߒzJ"Sܭy֚ Ё=]q +ބ*6u:.t'CCU3Pt\he3s`eS@6^]NEdŁE{<KpWxtY069j ~h(a"6{ee;[$2Yr:Y2x""Ո@vբdԮu `)b:]aኩĢ>#5"8#7IWF*Aks\&W:`GW44|Vm *V>2rrԉO}Eg`Sٵlם|q| ת3(r6Wu2͊.=CZQ؟&i,&bhEDD1]nEg7edB\L25y#;UƌyC\f mɍu_]9!8#y\1U)ETI5rpyFlһOd-}B$՚}` GT)@b3BH cqd9-r#)E:W-Yon`EYP)FP$n(Eʹqz&W֚FǙU&:e_4A<>OsᦎH62.=%[(-jxRB.!~rfU#D!$TR*ybh:]u+wG8)ZqFUyΟ *. \xmV"9!FU"i(b3BtGhZJ*&`*K +G4&DyL:5\|/ ځLJ٬v}gzU^3 *ap0ӷ?w$ןo_߷?Ρ ^>=;XW+^'j {‹ 7̤mYtbj!\d`9 ?3?訫X$F\ۿo TSXXs߽ +'Um֑xGqRph\d@'4S7W4T(r f +Ԍq_]U,A +68ez4Ւ> tuIUpiz5MO:#0OM~gl0׿6O06iK_EU]#}S7O*п aEݩ[[BMN 判Gx1 7 !A(=oRT\_c(S_I62\˩{* WRCn/[J2tTII'e HODs,:@8"ZA@/gI~WrQNIdp8&41EW0є5-V7|Alx$*ڂh"1r\Mk;}qEg=.ZL'.M#ˏfmFzDRhƤ}2[m,U%lg%EZb&*ŋƵ-q&,>0.D gJ%VGÒgN4SuNE+sH+B бd{h(ӃA#Ot0x*RyIս廥 KЏ$ʡ҇ _0NB zvX290Yi eҦ24U47Cfm[w`'YTf=~-l@gumƻ5X-Z [BoH$uJj*|MM`d`4SB4aI lhœϑ"%+;:/|N bR,IP {Oh$XfȖhj5+9EhMEӷ%lʲM 5Vi)?hƶueD61"e3J-a F,Ԣ7,Gҡ$%zy:!LeMܖOdH!RGᄏ`+xZ %g\ |ePebFG +L0ӔӖyb &YaB'gIojrVqܟ&d +#4Ǭ+B{X7tx3%{?B.XW`TCe& zN6Gۏ v +j)}*>p?T|Lǵx/%/ݭYbCSߍy},!Ƕ@'LlE7`Hv[9HOv,r7]n9 @~xj5}fQ?kGP孹EN#Z` Z< u"gcXF*7O *fJ̤Vs"r&WxL0-BAw䭆E@uˉ0>F(} +eb#뇢IoX AD@M׭|9N C>E@v?5 W +mt3֙X:? q".Zx09\?yD5X#ogh#Z,׼b$4V`gܟ\y[Y'ByksL-.qn +)(vhjmjv.#343g5nV]gGJmVe!H-l so!^IJ A;/Lt +4)j qI-nբ?ǰ_ua۩S(둅vcv9 R FH׃nP"%zB(W{6@^,4}~4&Sg( |G>ef'mbva17ΰN~ C5F +0ސ, +샞h vN 7, _e(N +_p;HU 2CHȬ +w|Ҳ|u3olj^`<~o$/{m |]:r].+s`W_w%yҖ.t"q3=(#{:AyR2a1f8w]}>ُצV lo|`hռ0 4q>gAPtb+!?Ԝ^ǵă,jGC<4Ӡ9D8k3(7tİ3<\r\ȹQqOKZX:BZBUOi|RkS.g8Χ*` k` zDXD^J/ ~/!l:Q-ĉιert'At!۬f 78QfD?&rHE^74ڈOyHg7F`>vID Þ)" ol$v`f`[{͊ikD ?v|K~* M~E֋)bU܊"1-SY.0ٖ(ɷ YkjqPF_ل+yQhM +?$˗fc|Gݞ8x.n'^xNO^.^Oztu{> S`o`'nG`  y=x#n'\z~m\ø +3[&Qcp}GOl|[No(sF ZP["$Ę +n{" NsriF&A$+6qFSwӸs<лdІ&O]PF^Il ~HƩi(̄Bb3Rc-Y("j=(w`Hx~И ۏ*\w:.kF⤚XDFťS#AZ!1r +\ZjP C44 6p))@QwzFG 9öbe~ԂoSςA}YwAR1g P㽓,r +g%2ǻVpV֋gfJo+F3uťi8 Rt"pl<α@s u)0V<f"26?#W` _oו\c aJ=?o*+*m:"8PҞgU~*Z_Z|+ _Yxu$L~uz +endstream endobj 105 0 obj <> endobj 111 0 obj <>stream +8;Z]!6#sjc$q7X;Ki[af[)B#Ll6UiXUJsQf@lMLpCh8ciV,9jKM94rN"Z$b8DlP(qD>&7Bj^@8ME4cuGJ4Y58?&?*#)^-'n-n[]XeP"3;8$mHO@-SuZ +h$u[U)>]0[H/pGA-9e0?%:7JZdVO;'Q]HAe0=glA]Gj6",?D]mL71r>U5$1]W),Nn +T%Z]#KJl$JWH#%n\pZDg@3lVHmWrZgK83HNAf2E1SW0tpS+*FRYO3t;V8*c%6 +j(et_r`?ZRqsE0f=Nr\eft/\kM7gHa-8Ze"`nqHE!s" +endstream endobj 96 0 obj <> endobj 179 0 obj <> endobj 180 0 obj <>stream +H Tggx Oy\pKTDDG.(hDP<ДxZ1MŨMRӃZkR5$J5$1Q7';owv[P ĉv7 pl~AmI95uoP4[̘Տ饪t`aOu5l'^bT4.l {0@UCdbה/Pޠ I )MĆ T׀Y. aB@HlQQ0]X0fTуك 3{Y¼z0{29ʧ#̷+?,]2/X;\: +l`| K+vN(KXjU+jERCV,5myYk郖NЩxgѰL{}˱᎖T)Rj.尔]Jg5JO_"}[Fx=?u¾'&LlkIO<ؙ3{rUmy n9YRgsv~Y~K~OJN2xڠR/i8Yp p.eW| 7| ᎒X*TZy(RL[*(FC;Ea<p & C00S0b81?1O?$xFOSu.tK ]g2]kMY4#it*TJ3fZJTG?FZLjz~F?<6s 0p;;_7OwFeD61(1fLLr!uzW|އS2U& T+JHP0adƒa +t%z·R=WυJ]anM0S:,lʆCrR!Ժ56bZFO)z + +M ddoXxuy l0@x2aj¯F_g87F1^6 +BQlrI91/ +ir7v>p %.HܒQ*TٔC%d5\"rTUG%"Uګnu =Q\OKKd`6:g[Wz| p܇]1F Eߤ{ ?9R-:/6} V']}.c.uWBW5OW幕Jׄ=@Aoĺ?!Vt[tG#t%ԛB__Ń8CHQ֒{HxgG L8G C}Cfl;'qclHd#AI} Xl)T'v4}^r&KFʞ˞FȮE$vlDAɔB&QȐg$YO#-'5jݒ>rw9ZhN8הr;IYUɍ{7~ԍou{N7Ӎvn|ÍqoIn%7ƷsubjaeFό1c!ƌ7a&Ig`e:!՜bNq),+:02V7ezU5W͑X&Uj-B}!=I^LvM߮i2#7YzXċvMw]ed/ś(3%{Jݒ^̚M9%"#̗M铼d;}{)2-A^L$7#4yIBz˔y3$wy3TǍeWm N`"YCHLD_HKSeFr~ Q2?$oA5Ld'/^^ +{0w=yq*YM*O %"WuJM+mQiJm{$a&` *!a<, ˦Bs,ˎ`ɰc|gJDZ/Hh,GUK/ͯWqbcμ[/t'qdkqLJĈ]B%ÐPY>s)C?cG Qh^KnhD[JWhmfjz@Gbo϶28Q16Wh=&^u?-pO}lu3%vlŊ' Α +D&[T*Ve>,:mK=4@uL >Y~X'С|ͭTMVݬŵͼdMn[fs-MG[iY#E<ƀe$ΏUBg`O&t"TF~΄3 e )_,"|j=נ꼍`HOe"k8mX +4_|vyRYX3+p-ȱrDJܴ{=RRLs;Y N`M;*}M{*}[-—`vȸC"j<$-lG[䛩7ZwO{?~0įTOpcHwao)lW8_tLg>S$;Bo#ͿoX"7O<_rxo2cZG渖9OՏUۉ5/o$s|H^椾n%"LM9ٮB>ftesl ݓv4q"ZE>d WdbݫnMjvk6S$n]OO6W5{n}nsKǦ?ڑlלD %ds֎4M Yf"9v y&@XXp +,(=xQz@f>EnW)hd|ҽ^R{4͇kue:-Ǚe8rj _T_CZ3[nD/m\VH7mM;aiZ[7""[`uN|6ujBS ~^? K!wMtKq,Μ4oT!'_3xU[vnt26fZ*cfL\$۩ژdL7l'sldYZd6mvObii#1s=l=eN7%ltOd$?jf~cF`o &Umof~ +b`[ސ\GI%̧<e(LʘyX7dlNMp*Yeu IËK0_KpB?fLaL3@7!sX)?^}CvuKR0wLe`:o2τ|ھD%kp/oWگCunu'Yl=W#}H'IORgKhͦ6n:HGk5?x˫87> NAJ 9r%J4 +ƺCuܾ@օ>W(rs Q +Fq.sGqsn9y/M "|zFR}|K|^nB@Z: ;/@Z9U uk@Z;u O8ȯ@T!~I@:i tpZ@::tv ] @9Hh A€p@z:H8^RSr; }n }.~ridD q( >id0yȳpi d42A      G|vu]{}缗j1ըIMuYԽ=7sΦ֦E$AD%D,sZq6'V:YqRXLĉ)NDܓo{s~ $$4%q& $sYę"8 +giX8o&qNsgprT:.꺺{! 0B)Wj`C#,WUڠa @/.J[ThkgZhkjDuvںNZ 5rlq6PasZl^jj6ڜmŸln?l>—6kwOkpb-}!wTnusf6cXd3laU̶m,a(nQl F;nف6n1!VEY6~F,Nw،á6qislK$|b+5BmQ5 n{}.Ȗ / + AR)V / Ղ˂,Al(Lقl ,Ⱦ) d_d +dE2Aׂl [/6 +dkAv d +sW_Kٟ |CM vl4L Cqfp#1p2Vap=a;nM>m % tL.gs4S# +~"-/W?3r2{c~sG;\7s||E<5=t@SpniOg|>IFfYV#/<dm\+O+\5-[Xq01JŠdz֮O,c+ !d)CO$TR4= /|, 3ڻX1@\`%$U,Ylwg +j jUK//(rtDUܪ$ mt挏W2$% Vȿ jH)s\dRd8#3txMyGț±RWDcdnL\˭):y:툫zbք*D2d^J~0Th>GsI!/cS*ETI3^jzU7k=a(5N8Y#FJlͷJ2b!˹mNR{`O3p nmuŻܮBKĻglmmp 6rml#g9:g[lmsu6t mlCg:ۄM8ۄM8ۄMmQkB/K#k~BX׸]va4rIC' 49ϑ9ϑ9ϑ9ϑ:ϡ:ϡ:ϡ:ϡmHMF:b~0C1D=7sun*Aw-Gӽ>K2&bSjL72b֘vm3'is\17Oy^7+z,o[:^w.zx7qݦ{ͤW`+.Rp?x +e>A!2Hji>-fZIkim=ӎЗt.Ui~sF_7YͿ ( r8( >X, Z5A{lvDp:8\ nwTZ(//3b{k9D.15Wc.ջ 8EΫ $VèKjԆh/V[bS=XkEZkE-6k>;;2γggv'g5kgK쥬+ۖd}ى\v1d<|jޒMn|e&ߐwyO'?| _ɯ{?򡚨ZC66fj_-PNmMmC]QcÒd 9HGGGGGGAAAAAACCCCCCFFFFFFEEEEE=8{pكg=8{pكg=8{pكg=8{pكg=8{plـg 8p6lـg 8p6lـg 8p6lـg 8p6lـg8;pvفg8;pvفg8;pvفg8;pvفg8;pvYg 58kpYg 58kpYg 58kpYg 58kpYg -8[plقg -8[plقg -8[plقg -8[plقg -8[p_l؛ػؗ>>o&o..诣:诣6o6|DWO!Zc9ϲK`1McXBWu"^f [Gs:GME4jc,\v9UoӾRl:^xqF:-b/F|q5&X3(KR۬ OCYf{L1&Pmšlp.t#ʶ]}c3,2,R/tQ ^¯7ZL|/^ğ:MwiFdz/ƾ}N 7-#A**p5tRl;o=8T;ml'cMy_û^~>+h_x}&yRlHiG[N;hו۹t0/͔A/ȍ5yT~(oJN;YigT++.jJuNVC.rS!Y,fq2sQE!gVdmW@ +k=#d`,2u-gGوn,'{#w'ǩ*6y:D{c׈l~ |Fy"79:Q쏌ev>GG4oN$sWɕa9F̓cE&6/ū]y]q@v@D]TauY]}EbMܨ*ſMէIW3 +Ui k4&hrVXIZvqu?kMN3 Blʜ%gRd e䳖fTqxե~ȾDUw= +t͗iLK9=܋Ӽp2A6 j5[:2{jZN'E-.E)2A5 7z >)-q}[/nV,Md~ƟKK6EIW2&&N;W+ު>&nU[K4ftEqޜEow,Vִb9t{b&Ҧ \: *d,':u hgDm IKԠL TL$ok)uzI_Trϊ%+`y:Z0)[b+TfG6$Ӓi+htdbiNGgY$0l,{,,#mN5JX6qI\:2g|ӢZ{i\&^:+?o=g~{6g@ˡC.TP+8Ɋ*NC-ϭ17_6PQuQ>DOc_AVelqzy!NQΐ3)fP{F9T#?$N! (Ʉ]$K)YgR'6emҿ':l`EN%Ib>:J9%fDg)he^G’C^~j:;&!$lLff7<$-BO +rR +"=`hအ<,oaUB%T+(H3,x{{{?ƥwvL]i2`,aIQG%UxmbIK=] vS T@_>~$K 5 f0ܬqa0#I +/K|#HSjZNV_P[սIڨ^SokqGk W[.ViA.\=IO՝[z=_S%Oq~J?z#awtqd:r#eNN[u.v.srf(XVWkkkC!1yWܒ{)tw'ɓ)L,4znJI~mAP^619#5FcIFccXmT;q޸e o!@Sv(U!KT0y:|(|6/Xq},^LO^TN*AA&ifjA)BuERg+u D6[V-Ԗj+ +Lw ½I}^/W-z={㎄{(ܧqwq?JeU\Uj^ M.3x(0&O3U.q˽\A)Gk[FR6r[?i<5XK}>yԝAG0aP/<@W-S,6/PeJ'+hvYs%R}mvb` =sɁ&UV{3 +a>O_|Y]eкl..$of'O!x" MJH SzG- <=!  PҀ JoRo=TA'ܯ}מr|)+bпOѿ2P@cmفC +?׋y3 p ( W/+'/ێpBNMl:%VH+\zx {!y&)TWui>6X;7{@b!} 8 a7# +7!\ <Л`! C) +SK@ ZDj)P_F}`9 4VXEca554bȠ$ȄtnaIGdV1V42QfO~$s*8n&8C}PQIPP"П*H,̤.GIalmiwiDK?Y,Ku|UVQItɐ6p X䃟q\ Qxk)DHI&{GDm~C~K+ _4fƙ2 +&/3հ0lthv1'pIGy>0é.$H0\'eYse4~,cdܡC])?4Ј +IJTO=1)-yLk2Vv0%Ll.njTR 8G뱠]$cml<؋s 5q2lp:.x<8.TzKIljy,țd̠򅬕y%&rDRh-]2qY dU2ΒL="e%6fTfꅱ|-{3g9{$H6NtskR^o&zMum^o^֋zFYݪ[&&h[ֶ`t6,gsI3zB4C5Uvݡ;5I7.e Fnk;zSoٮaC}'CP;@}-ZYQmU Ķ3ŜA&ěLȡޛ#(@gPɀLe(U(P& ӔeNy.ո>w\+qeU.N~ZA+r*x *4H.)y敛,4x|6wn&u=vǸcqxwr}wUe?soV$tEDABuwi zNH! B#5$@B*,M%{?>λfo2Gqզw|zy z[0o+y\zwLQ)3ŽY{| ƾZ%zL)zΛǼ^X'& +.5T1x[* Ʃ\ʔ23S{n^0uL9kc$&{a"imݴhShDx-CLe&;drH)V !J5XT,QqVv-S_ xT"$$FL5 tXCʀEj +LاaZ~|EWA,b:q,N`#M|K=cMc(b؊ck*TӨ.8hjc( +PJ=qgPL8` Li:nM4Yb-})P\$dHR!Y@ +)* R HSa_c$Q)lCaؖJc;*,vױ#NT;S8vJf[i.nyqǝi$m?h7}&z9#8+pEĕ +CDB2Tհ~p_9p'18'$)8xy93yI4tjqcӜcM'hnbxi Mk P j{Pr܎sȝ`3l  ?"^Yr6p.]˔OW*]tp] + C3w܍Ha~*'@N1-8 spOS4Sxix8Ox/eǡ ?W*tNR?O4 Bi"43ft,0Y) 0d$znc>OK+fT3|mƙ1H-yOޔRL#-T3L3J3|kfY6s\3Ϥ&CI\rIY9_ѯ%\kr_^xG@n+<'&Sa/!wT'w?7|}~O2or_3+onK6ñ+$Ǭ֍u3릺w|eFQfWLRU:K/Ku ULKNw١wֿ}@ tЋrS?Mj5O)bdsr^\rCs u!w;{>R42g?9zmyGpGF86Km[ёJ!6i[ՑE Gmt_I}ˑOlkXv<wZڷmյ/s$}Gl?p$ȑQ #x C"4 + 8$OBZZd}!C ,jg`:X̶5wЮ5D9)`ZX1zX,oٶ̲upm{l8m[c+y׶#;:R;.sHmGuum7GQ|` z8*Ѷ5ٶ3Q[m9*϶;*GݲMpm +9١| t(XRaP vhVu(أaԱHpG8bܑɡg/r$x^;|6`K Rm z#lsec,w;Yﰿ3ݧJEvkMUt %4LjjЋ$FbUl3(W$"Z3VnIF\{;s^~Gc+5scԼYO;Qj$:Eߩc&5wܿeIX,5Լ,2gK0Gf={ֱSR#5l^b +"X ?!q +%RxO3))b}Z +c/úT + 9^ +88s%,e9eRV`}El5q^u5!}f"6u-X߆w3=1cq],W?`Xg |G3'\!XGtP^VzY1otꁵ[kWڞb|I ZVG9+_cOZY>S]YE}hUa.F]V;Vo5P˚š^&:^.e-1Tñ#6 kF`+\֕jz*cYO+/\(cPz ]X:s}lEj_Les1Է0˖bEe+axoHOmPvq؃XwH<Pkʷ%Iݔw7oޒ7&֘Ko!]L1⬑wIN|{J0}Qq}|1Aq4Q3M$8XWS2M{>]1C9x|Rw̒l n { <,Y=:O96?W/ì\`-L̗E;+sqLVv&~B$1g瞂3J̧gg8sij8sg8sy1 RG(ƹ%8,L*+bůJyMuox7xJoNJ'<{_/X?89cs9{>5#1r{c;+C^~8C}"y|*8~.U0Λ+{*0[IͤL7:^gIEB FsmM;U^iR~c%{=}W|c={ڞ8V'sf-)8}UX_l zg# ik +1c}?bؾ0{z苶m 3PlI8 6g̈́yž%mSqfy65Ύ8u+i[sVڶK<s`qCcc~7l;IY*. s6gvH8HUx7 K<ׂzb=%03^RNGھ2II|%}'/ܳ8a{)9jw>1*|C3?LaNg} +k0CppL60]yŽ@\$9ɎI0pff;N5/m}!̉ Nྡ.f(C}S Iz}3$xgJn%=9[{uc7syfyNu8c5,qɅ#" y1GR`a|KĹ/ژ?9s8f9By1\8B_ +9ծu'}FI`k%8O_']z dm=sF h ]vSb-9a޲[$x﷊&9nkw$ݙ+cLiwK`mc36c3O%/m4Qܛ R&JNd1; v6U4 tyRcF4҆{O3ffϖi̽scVj81np w4|G']֌`γp^|TsPey0s\1xUg(@ByJi+T[bk-4&* +((1ᒸ@E6e'j46Q6 *})KY~{wfν#q8f1Gq}ك_g0G'=3r̾ \?$=}8&qfq~X="Q))<&*&֘k8vq#Ř3׺PQzdzN,,=27g~Kν\g.؟y"==$=:OT݋?Ks?g|\&k$߮و35e~˳GȘ2f<nj1eoYGz\3I^1ec=s ֣2IIԣ7eZ"=F>T3ԓ[&旌=8|Qɹj&#_"?H3Yawų%.LL8vdlt%rݾ"=y$_~7% +9py]+#70@3z>_漌ޕѳ2BP"}/_2;_K$|K%rjD%VW4?u[ȽtUuZ"zXF"r$_ u = +)#=7HDŸ7a7qE orkƽ |QzR5b_̾;C kCƚd㾻CygE~`\۵bG]bgObܳq׉\pr"kSmO]֕ce[Kmu_ٰ^w ȋqȌM̃̒-QzF}&?-g= Y3:zG@3`1Mi;KAl؇TۭC@mwa]l ]S +Ʀ +b{I^i0]uϙmo5KX/GV#8KV%oھU f Ӱs֒; {w](3`\7fa Q[$# Kċ2b_ `d_l%u$#| 12fܱ gpfma83ٶ7<gՎп):wKF=p'2̎ߐvnf~8d6/̈aq`^Sd +fG8G`d? ̕qqS`yNrIq3`NO\~a%3 gR0sN +=f3Әg&o%q/cc/$ ;G"o3ϾӠ7ع\IY0{ |)w?rf s"aFЫb) v8Rj[%rZ->vU}46fڏfܑz)gv8F)mv8f)[ęͷJaoj 𓆳OϚGZMYssĘijFVkKBA?sd +{oO~+w1O~RvѾN ?J`6wIa_[|VD{>:]tY [ Mku̿W> Ko= w {P\7qfߥϮg_ {!q؍RXM췛>Ö}a۞߯%sl{Lxy_}g sxB2]8[ۓ's32ϊ3o>/q/syI3Li/7~s2| 3~V`Y6` X k@ 'xglQ@( ^U5K¹&_;Ij/_$]ߚH,Uw)0՝%uI̮P$~50+%3{HTLRNNYΐ̔sZ̒#$*3AW憺ZI $G%al IX:Gzg+ Γ~\_/ E=Pk=Hsd{}$~%Ol %rMZ9Tn=L"j$zDMuDx$x}D{$dz=B"k${}Du$db=J"k|$c}D{$B"kp$z\eY3g L#CO&+E@AE\.*j\DX;(*J `/du֚ygޥxȯv6#N;،,@-NwD٢jux(łzjW7X`&.o5~㲛E-Vw{3oYaQ|{±|ۂj-V ̾my(X`.o{HyfN ]n Xׂz}y(﷠Eʾ;YoY`QvrE!ˡa[`v,GXd/GZL/GY)^L-?bA|Eej c-2ӗZP/gy|fEf ̅x˧,2O[PƢ -k,Z5YP/9^>kE-Q`Q{t͔{_K6Ӻ~ٖ+W,lKZSlйttffzt<g٠?f:ϱAtgδmsƀU_lW.A9|fr K-0LCG`Aut6~S6So]iz*6ڠ\m356;Lw 6S/~}[6S_~};6S~}{6S~[l Ôlт&ڣ-(o=ՂrGGYPfnQ{t-j~bAYSڣYPܢ񿴨YWwZ\seuڂ΁XY[ :w翷~ջYP-Ѣ~ ?YTO?`A5gXP,62lmdުؤ?Fzd3I=F]tZdČUaV=FeVl#3wles`ȺT=g@ T=y>r6TZw2cddg%3G=yYZl=o^ms֮^cZ3lznr̫dȬVɹJ  נ{2ds6מbsyVɮQvM̵|ҨIȋzlO2R_#3D&ڢFQYבLA%檋m땾9_+}\ߑs>l>b>jQ"_k?asۓ6ؘ2VOR6ĻD5ߘ-f61m=8gݶ<ݞaHh YUK7k.,_m{מiyնľ,wY61#YfldK):I1wF$ֶ& -O̻mȽBKEtDfDDD߶DvWX"+-UtĽ6 9vȁMdAsBӞai;DNm"s7k3QmF5zzbmY❧1+4y"k*z}-cm?K7^j}ȃD4ƉlG[ش߬}V^Y>OD-cm%zY}[Gtϰi,vKzsm$ yԯLuHF|o٤k_lɑPk6H4΂Y0^.]aJW٤{hwvd^Mu@VU_n#osƵlNlNCڙh=2۳e-}SXejon}ګ2Q]z%/Z,|ӗ:ϵ̙ܟoYѷ-&}g˾ea>+,[i>{Y&*Bgp}}w-qvzUF?2X&Zb_gYk޲֙\#z`Mr3,' O-oi\92϶ef,3,o[K{Uuq{=U76l)&t nDDJld:ZƸ@ZqI܂6SbiQֹ/iMǘ)ƒ{Qfw2?c÷+V\X ;^\ |@Şn@X!s O!s B;OEw!~t `ݧvi]V0؊@Ux}MNo +|2lxw'E`'_Mϋ7S,`sa'`dM拳hxc Ay 0|Wz gm0ɡLໆ\>01,OL@,{)Po]@ 40i3 o&gcϓg ~#`XfHkx=s I wߘ&11] Y4m*M1r2pQ BkW|oxO9w|?|h(8'@AnOr=nN49|oܿo z 6bt|7>X|ˇ7Lǹp>Ğ*|}{Uğ>ļ>M}Йp*b ĻiѴZ)!NqcCw _!ۄ'&d aus9JHo}А`zd:Ӻ\"&RT+QR`J- W^⒒C] Q4t0IICz4<&?EG*Cy!'|8k߂_ϭ{i 8!tIGrr`K3G!}ŎbB4}C#LiYCaW˶ҬfήrAM+LqyߞS"@n=>Q 桧GH4Vv]XA?[T/(Æ_*r.ȺsT7knz˼us&ce +.~l6_7׷+[ܺh-c.ŒmzaIvcv]4d5_T476-JG ٣I Јp;$zcCо ɡIߌu0crUj^-_w({`(|O{e/VjM×N075\:園fiRDZGEe&;h/D ULGkV7􅸜Ympwln +aX?n"U$4F3G#.^rR뎣I0Of +7myϟa4r7{_roE4x_r2w̨'FTaE6w)i3ą?WMfX7u$kI + >yd^Te]rG&NJ< +-z)#uutNɓr3JG-+լѲ45R0[/dYNzf`~<_;rj‰ |>9mW%27wdbݪmq2/g,yYJNMWґ1h YP˹>nF~P]"~RHC }*~@?5;QC2>$-#rЯ[T_]cUA=h +wREl-d;SH~\Dځ0wXmc-r!Ub "UFPJs;nѶE"aUV]<|̝}` G{;Ճvh7Bɂ;QÎ@TqFgI]a~ _}s1:F> +O|^Gܑ邶VlSIvPUhU9AAKmv]<AmD`pHkUGA'#j8)1%=`uÅq'ړ;c93Ӟb=cӨ!~dݰ6p]ޮ,~zhk`Qu~mI|9i*OI}u*b%`Ԫȫv]~)tOjd7 +8' +yy^teYȃ=ves<#@zk,Ě h;-mZZfyuR򏭳*]~0@M F\&,P47`A +QMWBV QLG#RfMlYҙ1aYsvtHb's~9>^WUN<А_үX'dB4qfLX/=i| qS޼w>ѴwNJ~g\Yp;3g^=k]w UVߢ3>؞&Z483&͘4c-D]BFp^^u4aZ +ξ22/ muid"?3.8߭O8k?w\SLtz + {q}gvFv;OD-!^6Mev1iG}*]wp7Q6nbR4ԣoFOzkukYpbFogo}X2 +Yd,ڃ5Dzo>c֒T~zvAM.ܪ^^ɹ=="s{KaOEHs+b{?>_QM,ϋlv:; `C/4A#:wV{-mNq^zU|xw{A%c ؞ϒש`O|x=v+x?T{=lRwk^DmU둿Op& ǝ]w2YQ0͜lņ ''N?Fr5ƃpm2<*ԚKT[=FOn1/S{jg&uxgOVqLQ9\Ewr[[Xo5c4`"~1C7>ZiMַ4o伛mݣ{qb?B~oaװ3OhQSSMMlU*Ԇ]_@FcG~f3Xrowt 0kLyƷ5X*`?DKs~g}~_x+4hĺjYc* W=M|:pbi;ƷETPD}ˋ_Awsݯ`uD +N6W=+?FXbCbq$c +)wB;tіĚ +-l̔dZonU CԎX)3b+aVogU57~C:Rdc +-b5PҐXkE)P@wW)o'=fRh;[.*XhΚ('(z̀Am|&"ל*}=-Xν3UW\QN|R\tj{ت Wtt) +/v{{>KA"sJUChX֌kfXt_(^6񜣬?~QO6}пVn~{zkjgށѧ葡D +H["JxJ۳+5j_;]N819ޡ.w}t{ i_  ʠQ=fvy?u}u?zzvֻItN)Mάoc>;i359ɝBȝyoЅY}%hݍg=œKa4&39ކYGy~?k΍~;ʽ6fu9̝?MQ D]:{p͛GUi7s('~@WuUax/ )P+R -C "Ca, #B3QŊkڦm)M)VF6M+TZƊ+*?^2\,]uϴ>{{>){}xw۪xWt&o5%a=+=o!ͼORO=-E[ 3%+ZpɈ-[qqjHg90~_y 9qY.{rc?'FAx̕:5ɜ?r.f ؛X"sVT9SgL3`#fa滑q6G,Bvkm"!|fa=FKk+Xs}5D/'Ierg:d/"ŵ?K[k~m]D8WK|%"⢏̿Pe[K +mIj'Mhsd +DA㊓FrƓȻϱJF-E3V9֋sGI/ŧNg9tN%SE< ӔH'0P"ibMy0P %˘-8?/3]["Rɑ+cuDȻ\yW:Ʊk7:#DN6"ҥ7Q'Y K:'뱦%l=nzʝ("[e-+i|IvKRۖl#$?Qv}dm9ZI[I@o~ qC9ŖcUiq*hǵ]2%(R&Le̐]$2XIN2eˊgL({YʶdqjˣTd&g BY +DV~/a9RJ%2F?u2Y.)U(X{#zI͝fl59L%[JMimgGt֕mJ%I[Re8cm ~+{y,ػ:{keelrz5kYW9mHi2CKe艦^=ܮa :eSL}:sMkJei]|>W\R\_Y=3As4sg mלI3c1i,;kB/;B4|A,] z>WSu$5P R7!=p*E SjF'z7E?p$ ܄d܌[0Cd Uw!ÐHí0800w S0阆阁 |31 1GRVu@"S|,B,b,X{eXX V!yX5X|C +QOXmA JQ{Om>azTU UT)UR;ӪV=vg.|A>؄/%Kxx*pu4 -G ~jx3ox48]+~&H4z='ь?8 _qcd 4,p-hEaDpp/~7.{1Xc1޸ݸØ`|p]0UAK̥a]DKP P:cN^CSR_D!!!1 A]$C>R %R!5 -" ȂȆȁȅȃȇ(((tEQCq@I +z4ʠ,ʡ<*"*2*"jZ:zx >|8&hfhhVh6hvhLE'tFtE7tfzc|^<|, +ALK~ ?`5bP_+ bF;1q I)i0 1s1 "K˰+k?;l&ll6c;v`'v{ppGpp'p24iYy\E\Ÿ+&5\ -=#)9^%^ok7xw.4:&`B&bb&!HIə)ita33233 23s2s32  KK-YeYYYYU(Vcu`Mbma]{lوC~l¦llllölbWvcw`O~O؋7/3~NA_q007#8qh0: c89999S993gq6pn1n[map!q1=a,㸄K˹+*<\õ\W7p#7q3p+1۹;{y |ȃ<<£<<<<óЇHDMLB-JFmNAIE]MC=>Q/}ꣾkY6\gm-Eآ-b-ΖR[fmUZ }4X_kj&l[lmxۮoFnc{mva;bGvNi;cg휝 4Jk]kvnMeݵ{vC{1=g\4^4Q4YS썽uw]Bgι.K$i钻.KR4.p\zet\feu\vt\nY9 +jkj+ŊVb%+iVh*WCkN~ѯMmFHY[Uڡڥڣڧ::îk#꘎NN.?uYWtUt]7tSt[wtWt_PXOꙞ^?zFoy>Ox nO>OS>O#|:g}&gY}69}.y}>}!_E}1_ܗ%})_ڗe}9_W}%_WU}|u_|m_#\( |al۶67۶m۶mͶms:ZW}PhihiFhcmM6-6Vi{v.Uiw=>Wiu!:TXQ:BG(ct:A'$StN:Cg,st@"]Kt.BW*]ktA7&ݬ[tnCw.ݭ{tz@!=GzBO)=gzA/%W^(7zG=>D3}/F;}~E7?G?DCtX 8x@ !!1 )!9R %R!5 -!=2 #2!3 +!;r 'r!7 ovȇ((((((((򨀊ʨꨁڨA=G4D#@ " @c4AS4Cs@$ZZ ڢڣ:: zzcbcbcFbFc bc&b&c +bcfbfcbcbc bcVbVc bc6b6c bcvbvcbNN .. +p7ppwppO/o_?c0&c16= +0.1> iLLL¤LLLLôL¬ü,,,¢,,,,ò,ʬªڬúa=go}G0A fCM&y)To7ݛpF1)9[0-ينmَفىم]ٍك=ًه}ُ9Ł¡ñxgsywѻ]xWk^w99S9939\|.B.b.R.rJjZznFnfnVnvNn^~<(yHb<£x'xxgxxxxWxۼûJ!>"RT1)Ii)#esK,UTRCj_ ߊ=?#?HIHIDHc~~7~HOo_hbYlLYk,hf ,%2L)d2NKlI,%RZ*Kmid̑2OY(d,L +Yii- 2h-lMjderYncy-V +Ya9)䴜rN(\rMܐrKn[+jŬJYi+ce +V*YebUUVjYmcuY}k` [Z[Z[5&ԚYskaZYkkcm:Ygb]Kk]zet\feu٬r\.|.+ +B+⊺bz+ʸ+*쪸j긺s]5r\ q.̅5qM]3ܵpkZ6kڻ>Y`;q$ c#AI`\ӻH`nǶc)P5C͓79*!uUu݋n_{}~z=A~ +=EIz=Eϡ Ez^EMzEC}>EK  ?ŏI~? E~_ůM~C?şK;}NG?zoJot}2 'l7_:`&7G4H1)I7&Ω'-AT=:܃B 2dr&7fL!!Xyl =z%]c +øXļ0xl:Շ>1|2BV +k : Xڰ:ڀ 8ߨ AN Ek4ߚa2.ю8RUYQUP +*UA*TTjdH0. 5d8`L9)̨F]iD-ՠs5M"e4\O=vw;ZwrAܪiv(@9@ [bKUlJPfطd6):@V89*W DNB te0H{R]\+Y0N2a ֜b:N;`8gaY6 f,`kATUESwԵVђZ^6 XjǰԖ|v2yV[d]PPJsQ+V2mK*k#.9dCK/X䳭] +[Q.v8T2g;i +Z|kם9ɰ_,%J X %b XQ,VeK@r $׀k k Innt"Wuf5;*etA;׎׎R갠)RB2XVˢ]`Y,+eĕ6-}%N2' +W/ 10u!w(@µxGAN @ݔ. ZrjxDscTpjK!lI9jE-R-L)dRVdv{B' +ɞ|dޓ=7WȥLB'i{₰J/ݏnK +}y~YX?ׯrUUh.J^Z)\FqFPLƁz p:Hv܃uVd߆o˝a&ddJqpT} s ns"S-([P4`r8@q^s 6'E "_d]# DˌgΕ^~xMg7ĚSfp:J)?OLe +s~"FA>p/l#X a;tJv]0e//R3e `HX˃o qU%eAE3"dUjYX9' +"[\ LlN!3ԳyOw(#ai inHgGhMQ ZEbQŵ.\\ u1u1ⲋ.!cPߣIԔX?v>"}77afcbUjJG@/x%Z{?%.ø>{5+gRW+ܓ&\iM~P̟DOEO5&yvsmi#,Ei]"#Mq r%zTӵyUwTB6BF֣RZEMZ4`cjiA uOq]Mvt-J=EspKY"hQtD3Sz x[-ͬrTC\Jac}e^+C*>)>)c~O*QFQWF[u>EF +;9|ʕw\*nI|7E0\Q.֨X\QX㿙-}! HΔp%4d}+l}_fGkjrcQc/.UQ]TEuRե*;"DUpƄ3&1 gL8c™=U򽭉ki w$jn٢*)_hk NGLz#{bT쑊WϠb~5'>! OH}BR.ύN™΄p&3gB8y&g&g{~2_!cL]Y\ým@ 5ۀwp3'yG\OaEξA~C31u#߫pj.t[lO!bCRlH +C|B8/B8/$TIva ~&W@Orf#!iDHi4FFy")L gJ8S™Δp /H~Ar'<^:xsֲ펫Djw?_I+0,5u`oi{>;PA׺ݱ<< Uw_PZz g}bm%if囒wo(d`ƪ`յ$$H]nݥb[1.N4O\?ּqblDA;\7ʱV/۫i:-8XcFΊ6Lo.RVd;W/~S>L*GWP,[2/fzvdqZ ˪ :P +?S[z]L0| F,J8FL(#~@ :s)ܿSi +DhЫofa.d6f_@j5ܘ!z]#z +7 L l"<ԥ椀ԁqP|! $T @Gy}":nqƥKo?nalY7ٟ +H6NDwZY(bSڝ}mG9 \]GOs_f578z) aLl렢 p5ǃcI"Że* 0"KA0INVL ._7R.?09̛ f5,GCҏ b[ɒ]"jd'>{HHVHH8 -/${$@ yE"H2$ +#w$'$gCzȫE5C1ψa6Fc-԰Q Fi +1J1J/bQ˸92\F~_h$|"`B6ɞ09H6 2@&tKX@̯ߺtd `W]UuWkkkkkkkkkkkk6kUu{-˱b^^Ku{] yn0B?9yb ² ˲3&wXXթTES[NSiic$bd=LӂL$&"0&"d$&HM$A2Hl"Kk&"Y7Dh"c"B6Hrh"ɱD$Ef}jXU9vT8N a蠴vCSl"H\㦫t)= mR̓1}H-J)D6bPO 6 m܀Ɩc7o̸2=0nA=޼_/6Kﵱޡ=DgC_6SFvPUj|s"tGj~dE Le<)WJ{#vUSbI6,S!LS>@-ԜH0pK~9 81_<u}~}LXV|5C 3^Q &Y(,6Y'ڴ +$L> :EП.] +U_ [wA?,RhchpFZG!{kkvuR͔-c z連jjˍ\VK?pAQʒ`N hEjѭ(uvyx^FEF 7'4Wx"Wpj7~VukXN\xKA}t*裠O!賠sA_)BХ+A_%蛠}"CPXU`SXv YU`)3zVU!U`Z%RVñU`WHXCjU`*vSXlTVNqXRVIUSUVUZlCU61'*c&iFI<|2Ƀ'?z9>YwӏӤPõg[qqj +k^w-!7ZHi!ok=f|prΌ#3N98ᛴ}ju'¼+h´p̈Vҋg˅w_AzB:7O،&Uf<1slF?!dm"㛷\wv.;,S?k30"ɪUow''];:#dxVVa8۵Eo :ZY!kzYE?"=HD&0aHf8WփpE"+D"Џh,Ol%wGeN9RnP6.< Ydt£i4ԇqbƓLċmFЌf4qdFh#g[yu_3 10lwa{4?w|>~*gYhԝҺ DH]T6~^eO}QYƠ, ^oU6~k#Xf$#0 p NAv9W?zZ1+{Z +Ҡbp%o uhԞ~l;)aT'qꎍrWB9MSֿ]nẕs1hzu>HikBwe nsݫA7A!ܟ q͙rr(Ի.6ϱ^~?_ay/AW0ņR{ğG"^^s.oUF@ZqOkV^ŔWWU`2-RӊֿB^ +y`uuaΐpi*6rOW)۾;(-Fش+%Pkq~_N;H6qLx_/OF|yv˳rZ"x!?@섁EqHG\=1(|8>4_{xdbAzP%B^i ]fx,fmW=suv& ,nm!AKqOvu +뻳@FB6>X,mbEm`뻰λ/aw pB&OɅ O +.[ovbIX_짔n> niϷV1rl+)(W;vQ%^øD/qhZ,|çwQ)uΑCLqz$\_Yqӈz, `eSpe4}M_FUkg9\NT (H/ f>9蓣O>9W7KXl7/nfȺH{L@}f`Sp>%JDn~ï_ +~vTQaG +~*mƒ/>EU>5t` + p +91CsI ۮ]]hw]h$qt[6U[v 'E2zW +An* %j5DZU^/v窋+)5/'z]ֻ߫ms'u1)3'` Y1e-(!%RPB +JHA )(!%dz$%˒)I"PRJv-I6B$JB$'y{{{{E[WL.Qw]~<vϘRK1dp">jm5qh~BU\7~YPvw| +wT Ax6> Y~E_A_ f }c֜yGsW4qTv'99 2' |9真s~N-Nt9#+ "s,})3 pnc|_69cǹd@4:'>9ӧObͽ&}g|z8w3{tٚ{u{}}nt졯Ӟ>۽Mxr<;]g S?9q"zٽqO{ܣ+H{<|g%Spf`SpJjyS&%LOhJCdDE?Zrdzs'.GSZ1auB~|KЃ~'=9qO{rwܓ ->RO"?E~)SO-N(/yF^y6"܌9ߔ3#_‡8u9ޥt{b(ԁ 2i24ιxȏ ,_S`9'D-oLo{ԛ:[3JJagfGOHV?4KgD&3xF9z̨5{o]9~9>9^WrCag]9vؕhVxMO) + QWF,!>gaG][o=z͸&⓺^%[r#+&o~ı#];>"`76:~c/gdVTYn?6ɝp_sҌ~/7ubL\}?Tȭ3o^/1Ou$[@ybNp8oU+"Eh.sݷY]p+7ݾ{~_dGD/N>gno%җt? }k[~XS }Kˮfl"׹=\}qwxn$sQz9I9ɽ'~Z o8LK}Gw3|_[xm;~W8ϻk=|Y;G.=v[ps''89 NNprq<NdGF?_-k%~ :}gΑ?d.ܚl^tOd5xOOTWY[}l!D>YTPjFMk!yHhk?!{F3<+ C5Ҷ󔡯==MS}~dC.ڕ}L9r~%,FBu뢾8(N|44n,_6}W6MR;77vlsǻߧo6[o-yg֬d5:o~?66GOw_Nm{gy?4-fqwz^ȓ,Ӧ od”?{}Oak(Sz)e,c %nP|SQ I懊9{?d.gb`UvE:_ũ:70!A[nɃ<?y<D//AA? 4fv4}ȃ1cfts˃<ɋ|:h}ld'9^$a ט ~ ǑaEaO D;jR}nO()y҅̑0"aKV'!M<3ÝB$_$_$_$_$_$_$_$_$_ԩTuFFFF*= U5T5TU U U o5 ÿo7[U ÿ@{V;̽f/>Lu~ׇ}ε%7y:Quo|?k\{t=r)ܢ~ϼmMnsӕng,Wcxv?bkU3ZO%=>){{aA {_q8%Mf:7S=)ݏx5k׼$#=1ZSw+5]QA]ƏL-TЩE*qvJvj0v ¿/ ¿/ ¿oM>,(ǧ >.Nȯ.ۏ;h]\~Q|CկN}|W#}O݃qs/]O۷[NޟC6ѯ~mk_F6ѯ~nxtswww;;(ww}߿ j}k +endstream endobj 11 0 obj <> endobj 12 0 obj <> endobj 13 0 obj <> endobj 14 0 obj <> endobj 15 0 obj <> endobj 57 0 obj [/View/Design] endobj 58 0 obj <>>> endobj 55 0 obj [/View/Design] endobj 56 0 obj <>>> endobj 53 0 obj [/View/Design] endobj 54 0 obj <>>> endobj 51 0 obj [/View/Design] endobj 52 0 obj <>>> endobj 49 0 obj [/View/Design] endobj 50 0 obj <>>> endobj 103 0 obj [102 0 R 101 0 R 100 0 R 99 0 R 98 0 R] endobj 181 0 obj <> endobj xref +0 182 +0000000004 65535 f +0000000016 00000 n +0000000280 00000 n +0000039783 00000 n +0000000000 00000 f +0000039859 00000 n +0000040370 00000 n +0000040853 00000 n +0000041320 00000 n +0000000000 00000 f +0000000000 00000 f +0000412621 00000 n +0000412700 00000 n +0000412778 00000 n +0000412855 00000 n +0000412935 00000 n +0000000000 00000 f +0000041831 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000413472 00000 n +0000413503 00000 n +0000413356 00000 n +0000413387 00000 n +0000413240 00000 n +0000413271 00000 n +0000413124 00000 n +0000413155 00000 n +0000413008 00000 n +0000413039 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000364826 00000 n +0000047027 00000 n +0000046037 00000 n +0000046118 00000 n +0000046198 00000 n +0000046278 00000 n +0000046361 00000 n +0000413588 00000 n +0000356889 00000 n +0000363971 00000 n +0000050366 00000 n +0000050252 00000 n +0000352381 00000 n +0000045024 00000 n +0000045172 00000 n +0000364037 00000 n +0000353056 00000 n +0000355983 00000 n +0000356049 00000 n +0000347982 00000 n +0000351009 00000 n +0000351075 00000 n +0000287606 00000 n +0000288861 00000 n +0000347858 00000 n +0000289735 00000 n +0000290910 00000 n +0000288927 00000 n +0000042333 00000 n +0000043660 00000 n +0000043726 00000 n +0000044459 00000 n +0000044509 00000 n +0000045539 00000 n +0000045320 00000 n +0000045417 00000 n +0000045677 00000 n +0000045798 00000 n +0000045920 00000 n +0000046909 00000 n +0000046941 00000 n +0000046791 00000 n +0000046823 00000 n +0000046673 00000 n +0000046705 00000 n +0000046555 00000 n +0000046587 00000 n +0000046437 00000 n +0000046469 00000 n +0000047301 00000 n +0000047639 00000 n +0000048179 00000 n +0000050442 00000 n +0000050678 00000 n +0000051855 00000 n +0000117445 00000 n +0000183035 00000 n +0000248625 00000 n +0000346774 00000 n +0000346838 00000 n +0000346986 00000 n +0000291176 00000 n +0000330110 00000 n +0000291240 00000 n +0000316800 00000 n +0000330226 00000 n +0000330292 00000 n +0000330323 00000 n +0000330589 00000 n +0000343974 00000 n +0000330664 00000 n +0000344087 00000 n +0000344124 00000 n +0000347353 00000 n +0000347134 00000 n +0000347231 00000 n +0000347491 00000 n +0000347611 00000 n +0000347733 00000 n +0000352529 00000 n +0000352700 00000 n +0000352822 00000 n +0000352945 00000 n +0000365145 00000 n +0000365395 00000 n +0000413645 00000 n +trailer +<<75F4E0DD052022469F2F49CA0AB77016>]>> +startxref +413833 +%%EOF diff --git a/Doc/app.ico b/Doc/app.ico index 362c8747f..36b1d22d0 100644 Binary files a/Doc/app.ico and b/Doc/app.ico differ diff --git a/Doc/app.png b/Doc/app.png index ba17c1a66..bc5701ac8 100644 Binary files a/Doc/app.png and b/Doc/app.png differ diff --git a/Doc/app_error.png b/Doc/app_error.png index 4c035da0c..70599f504 100644 Binary files a/Doc/app_error.png and b/Doc/app_error.png differ diff --git a/Doc/app_missing_img.png b/Doc/app_missing_img.png new file mode 100644 index 000000000..11d5466f0 Binary files /dev/null and b/Doc/app_missing_img.png differ diff --git a/Flow.Launcher.Core/Configuration/Portable.cs b/Flow.Launcher.Core/Configuration/Portable.cs index c46a6102d..5bca087b8 100644 --- a/Flow.Launcher.Core/Configuration/Portable.cs +++ b/Flow.Launcher.Core/Configuration/Portable.cs @@ -32,10 +32,9 @@ namespace Flow.Launcher.Core.Configuration try { MoveUserDataFolder(DataLocation.PortableDataPath, DataLocation.RoamingDataPath); -#if DEBUG +#if !DEBUG // Create shortcuts and uninstaller are not required in debug mode, // otherwise will repoint the path of the actual installed production version to the debug version -#else CreateShortcuts(); CreateUninstallerEntry(); #endif @@ -48,10 +47,7 @@ namespace Flow.Launcher.Core.Configuration } catch (Exception e) { -#if !DEBUG - Log.Exception("Portable", "Error occured while disabling portable mode", e); -#endif - throw; + Log.Exception("|Portable.DisablePortableMode|Error occured while disabling portable mode", e); } } @@ -60,10 +56,9 @@ namespace Flow.Launcher.Core.Configuration try { MoveUserDataFolder(DataLocation.RoamingDataPath, DataLocation.PortableDataPath); -#if DEBUG +#if !DEBUG // Remove shortcuts and uninstaller are not required in debug mode, // otherwise will delete the actual installed production version -#else RemoveShortcuts(); RemoveUninstallerEntry(); #endif @@ -76,10 +71,7 @@ namespace Flow.Launcher.Core.Configuration } catch (Exception e) { -#if !DEBUG - Log.Exception("Portable", "Error occured while enabling portable mode", e); -#endif - throw; + Log.Exception("|Portable.EnablePortableMode|Error occured while enabling portable mode", e); } } @@ -103,7 +95,7 @@ namespace Flow.Launcher.Core.Configuration public void MoveUserDataFolder(string fromLocation, string toLocation) { - FilesFolders.Copy(fromLocation, toLocation); + FilesFolders.CopyAll(fromLocation, toLocation); VerifyUserDataAfterMove(fromLocation, toLocation); } @@ -125,14 +117,13 @@ namespace Flow.Launcher.Core.Configuration public void CreateUninstallerEntry() { var uninstallRegSubKey = @"Software\Microsoft\Windows\CurrentVersion\Uninstall"; - // NB: Sometimes the Uninstall key doesn't exist - using (var parentKey = - RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Default) - .CreateSubKey("Uninstall", RegistryKeyPermissionCheck.ReadWriteSubTree)) {; } - var key = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Default) - .CreateSubKey(uninstallRegSubKey + "\\" + Constant.FlowLauncher, RegistryKeyPermissionCheck.ReadWriteSubTree); - key.SetValue("DisplayIcon", Constant.ApplicationDirectory + "\\app.ico", RegistryValueKind.String); + using (var baseKey = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Default)) + using (var subKey1 = baseKey.CreateSubKey(uninstallRegSubKey, RegistryKeyPermissionCheck.ReadWriteSubTree)) + using (var subKey2 = subKey1.CreateSubKey(Constant.FlowLauncher, RegistryKeyPermissionCheck.ReadWriteSubTree)) + { + subKey2.SetValue("DisplayIcon", Path.Combine(Constant.ApplicationDirectory, "app.ico"), RegistryValueKind.String); + } using (var portabilityUpdater = NewUpdateManager()) { @@ -142,7 +133,10 @@ namespace Flow.Launcher.Core.Configuration internal void IndicateDeletion(string filePathTodelete) { - using (StreamWriter sw = File.CreateText(filePathTodelete + "\\" + DataLocation.DeletionIndicatorFile)){} + var deleteFilePath = Path.Combine(filePathTodelete, DataLocation.DeletionIndicatorFile); + using (var _ = File.CreateText(deleteFilePath)) + { + } } ///

@@ -152,21 +146,18 @@ namespace Flow.Launcher.Core.Configuration public void PreStartCleanUpAfterPortabilityUpdate() { // Specify here so this method does not rely on other environment variables to initialise - var portableDataPath = Path.Combine(Directory.GetParent(Assembly.GetExecutingAssembly().Location.NonNull()).ToString(), "UserData"); - var roamingDataPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "FlowLauncher"); + var portableDataDir = Path.Combine(Directory.GetParent(Assembly.GetExecutingAssembly().Location.NonNull()).ToString(), "UserData"); + var roamingDataDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "FlowLauncher"); - bool DataLocationPortableDeleteRequired = false; - bool DataLocationRoamingDeleteRequired = false; + // Get full path to the .dead files for each case + var portableDataDeleteFilePath = Path.Combine(portableDataDir, DataLocation.DeletionIndicatorFile); + var roamingDataDeleteFilePath = Path.Combine(roamingDataDir, DataLocation.DeletionIndicatorFile); - if ((roamingDataPath + "\\" + DataLocation.DeletionIndicatorFile).FileExits()) - DataLocationRoamingDeleteRequired = true; - - if ((portableDataPath + "\\" + DataLocation.DeletionIndicatorFile).FileExits()) - DataLocationPortableDeleteRequired = true; - - if (DataLocationRoamingDeleteRequired) + // If the data folder in %appdata% is marked for deletion, + // delete it and prompt the user to pick the portable data location + if (File.Exists(roamingDataDeleteFilePath)) { - FilesFolders.RemoveFolderIfExists(roamingDataPath); + FilesFolders.RemoveFolderIfExists(roamingDataDir); if (MessageBox.Show("Flow Launcher has detected you enabled portable mode, " + "would you like to move it to a different location?", string.Empty, @@ -176,18 +167,15 @@ namespace Flow.Launcher.Core.Configuration Environment.Exit(0); } - - return; } - - if(DataLocationPortableDeleteRequired) + // Otherwise, if the portable data folder is marked for deletion, + // delete it and notify the user about it. + else if (File.Exists(portableDataDeleteFilePath)) { - FilesFolders.RemoveFolderIfExists(portableDataPath); + FilesFolders.RemoveFolderIfExists(portableDataDir); MessageBox.Show("Flow Launcher has detected you disabled portable mode, " + "the relevant shortcuts and uninstaller entry have been created"); - - return; } } @@ -196,7 +184,7 @@ namespace Flow.Launcher.Core.Configuration var roamingLocationExists = DataLocation.RoamingDataPath.LocationExists(); var portableLocationExists = DataLocation.PortableDataPath.LocationExists(); - if(roamingLocationExists && portableLocationExists) + if (roamingLocationExists && portableLocationExists) { MessageBox.Show(string.Format("Flow Launcher detected your user data exists both in {0} and " + "{1}. {2}{2}Please delete {1} in order to proceed. No changes have occured.", diff --git a/Flow.Launcher.Core/Flow.Launcher.Core.csproj b/Flow.Launcher.Core/Flow.Launcher.Core.csproj index 87c390d34..189a6669e 100644 --- a/Flow.Launcher.Core/Flow.Launcher.Core.csproj +++ b/Flow.Launcher.Core/Flow.Launcher.Core.csproj @@ -54,12 +54,7 @@ - - - - - diff --git a/Flow.Launcher.Core/Plugin/PluginAssemblyLoader.cs b/Flow.Launcher.Core/Plugin/PluginAssemblyLoader.cs new file mode 100644 index 000000000..b9b878a7b --- /dev/null +++ b/Flow.Launcher.Core/Plugin/PluginAssemblyLoader.cs @@ -0,0 +1,57 @@ +using Flow.Launcher.Infrastructure; +using System; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Runtime.Loader; + +namespace Flow.Launcher.Core.Plugin +{ + internal class PluginAssemblyLoader : AssemblyLoadContext + { + private readonly AssemblyDependencyResolver dependencyResolver; + + private readonly AssemblyDependencyResolver referencedPluginPackageDependencyResolver; + + private readonly AssemblyName assemblyName; + + internal PluginAssemblyLoader(string assemblyFilePath) + { + dependencyResolver = new AssemblyDependencyResolver(assemblyFilePath); + assemblyName = new AssemblyName(Path.GetFileNameWithoutExtension(assemblyFilePath)); + + referencedPluginPackageDependencyResolver = + new AssemblyDependencyResolver(Path.Combine(Constant.ProgramDirectory, "Flow.Launcher.Plugin.dll")); + } + + internal Assembly LoadAssemblyAndDependencies() + { + return LoadFromAssemblyName(assemblyName); + } + + protected override Assembly Load(AssemblyName assemblyName) + { + string assemblyPath = dependencyResolver.ResolveAssemblyToPath(assemblyName); + + // When resolving dependencies, ignore assembly depenedencies that already exits with Flow.Launcher.Plugin + // Otherwise will get unexpected behaviour with plugins, e.g. JsonIgnore attribute not honored in WebSearch or other plugins + // that use Newtonsoft.Json + if (assemblyPath == null || ExistsInReferencedPluginPackage(assemblyName)) + return null; + + return LoadFromAssemblyPath(assemblyPath); + } + + internal Type FromAssemblyGetTypeOfInterface(Assembly assembly, Type type) + { + var allTypes = assembly.ExportedTypes; + + return allTypes.First(o => o.IsClass && !o.IsAbstract && o.GetInterfaces().Contains(type)); + } + + internal bool ExistsInReferencedPluginPackage(AssemblyName assemblyName) + { + return referencedPluginPackageDependencyResolver.ResolveAssemblyToPath(assemblyName) != null; + } + } +} diff --git a/Flow.Launcher.Core/Plugin/PluginConfig.cs b/Flow.Launcher.Core/Plugin/PluginConfig.cs index d12dee0c4..b946fa44d 100644 --- a/Flow.Launcher.Core/Plugin/PluginConfig.cs +++ b/Flow.Launcher.Core/Plugin/PluginConfig.cs @@ -2,9 +2,8 @@ using System.Collections.Generic; using System.Linq; using System.IO; -using System.Threading.Tasks; using Newtonsoft.Json; -using Flow.Launcher.Infrastructure.Exception; +using Flow.Launcher.Infrastructure; using Flow.Launcher.Infrastructure.Logger; using Flow.Launcher.Plugin; @@ -13,24 +12,16 @@ namespace Flow.Launcher.Core.Plugin internal abstract class PluginConfig { - private const string PluginConfigName = "plugin.json"; - private static readonly List PluginMetadatas = new List(); - /// - /// Parse plugin metadata in giving directories + /// Parse plugin metadata in the given directories /// /// /// public static List Parse(string[] pluginDirectories) { - PluginMetadatas.Clear(); + var allPluginMetadata = new List(); var directories = pluginDirectories.SelectMany(Directory.GetDirectories); - ParsePluginConfigs(directories); - return PluginMetadatas; - } - private static void ParsePluginConfigs(IEnumerable directories) - { // todo use linq when diable plugin is implmented since parallel.foreach + list is not thread saft foreach (var directory in directories) { @@ -50,15 +41,17 @@ namespace Flow.Launcher.Core.Plugin PluginMetadata metadata = GetPluginMetadata(directory); if (metadata != null) { - PluginMetadatas.Add(metadata); + allPluginMetadata.Add(metadata); } } } + + return allPluginMetadata; } private static PluginMetadata GetPluginMetadata(string pluginDirectory) { - string configPath = Path.Combine(pluginDirectory, PluginConfigName); + string configPath = Path.Combine(pluginDirectory, Constant.PluginMetadataFileName); if (!File.Exists(configPath)) { Log.Error($"|PluginConfig.GetPluginMetadata|Didn't find config file <{configPath}>"); @@ -81,7 +74,6 @@ namespace Flow.Launcher.Core.Plugin return null; } - if (!AllowedLanguage.IsAllowed(metadata.Language)) { Log.Error($"|PluginConfig.GetPluginMetadata|Invalid language <{metadata.Language}> for config <{configPath}>"); diff --git a/Flow.Launcher.Core/Plugin/PluginInstaller.cs b/Flow.Launcher.Core/Plugin/PluginInstaller.cs deleted file mode 100644 index df38ca608..000000000 --- a/Flow.Launcher.Core/Plugin/PluginInstaller.cs +++ /dev/null @@ -1,202 +0,0 @@ -using System; -using System.IO; -using System.Windows; -using ICSharpCode.SharpZipLib.Zip; -using Newtonsoft.Json; -using Flow.Launcher.Plugin; - -namespace Flow.Launcher.Core.Plugin -{ - internal class PluginInstaller - { - internal static void Install(string path) - { - if (File.Exists(path)) - { - string tempFoler = Path.Combine(Path.GetTempPath(), "flowlauncher\\plugins"); - if (Directory.Exists(tempFoler)) - { - Directory.Delete(tempFoler, true); - } - UnZip(path, tempFoler, true); - - string iniPath = Path.Combine(tempFoler, "plugin.json"); - if (!File.Exists(iniPath)) - { - MessageBox.Show("Install failed: plugin config is missing"); - return; - } - - PluginMetadata plugin = GetMetadataFromJson(tempFoler); - if (plugin == null || plugin.Name == null) - { - MessageBox.Show("Install failed: plugin config is invalid"); - return; - } - - string pluginFolerPath = Infrastructure.UserSettings.DataLocation.PluginsDirectory; - - string newPluginName = plugin.Name - .Replace("/", "_") - .Replace("\\", "_") - .Replace(":", "_") - .Replace("<", "_") - .Replace(">", "_") - .Replace("?", "_") - .Replace("*", "_") - .Replace("|", "_") - + "-" + Guid.NewGuid(); - string newPluginPath = Path.Combine(pluginFolerPath, newPluginName); - string content = $"Do you want to install following plugin?{Environment.NewLine}{Environment.NewLine}" + - $"Name: {plugin.Name}{Environment.NewLine}" + - $"Version: {plugin.Version}{Environment.NewLine}" + - $"Author: {plugin.Author}"; - PluginPair existingPlugin = PluginManager.GetPluginForId(plugin.ID); - - if (existingPlugin != null) - { - content = $"Do you want to update following plugin?{Environment.NewLine}{Environment.NewLine}" + - $"Name: {plugin.Name}{Environment.NewLine}" + - $"Old Version: {existingPlugin.Metadata.Version}" + - $"{Environment.NewLine}New Version: {plugin.Version}" + - $"{Environment.NewLine}Author: {plugin.Author}"; - } - - var result = MessageBox.Show(content, "Install plugin", MessageBoxButton.YesNo, MessageBoxImage.Question); - if (result == MessageBoxResult.Yes) - { - if (existingPlugin != null && Directory.Exists(existingPlugin.Metadata.PluginDirectory)) - { - //when plugin is in use, we can't delete them. That's why we need to make plugin folder a random name - File.Create(Path.Combine(existingPlugin.Metadata.PluginDirectory, "NeedDelete.txt")).Close(); - } - - UnZip(path, newPluginPath, true); - Directory.Delete(tempFoler, true); - - //exsiting plugins may be has loaded by application, - //if we try to delelte those kind of plugins, we will get a error that indicate the - //file is been used now. - //current solution is to restart Flow Launcher. Ugly. - //if (MainWindow.Initialized) - //{ - // Plugins.Initialize(); - //} - if (MessageBox.Show($"You have installed plugin {plugin.Name} successfully.{Environment.NewLine}" + - "Restart Flow Launcher to take effect?", - "Install plugin", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes) - { - PluginManager.API.RestartApp(); - } - } - } - } - - private static PluginMetadata GetMetadataFromJson(string pluginDirectory) - { - string configPath = Path.Combine(pluginDirectory, "plugin.json"); - PluginMetadata metadata; - - if (!File.Exists(configPath)) - { - return null; - } - - try - { - metadata = JsonConvert.DeserializeObject(File.ReadAllText(configPath)); - metadata.PluginDirectory = pluginDirectory; - } - catch (Exception) - { - string error = $"Parse plugin config {configPath} failed: json format is not valid"; -#if (DEBUG) - { - throw new Exception(error); - } -#endif - return null; - } - - - if (!AllowedLanguage.IsAllowed(metadata.Language)) - { - string error = $"Parse plugin config {configPath} failed: invalid language {metadata.Language}"; -#if (DEBUG) - { - throw new Exception(error); - } -#endif - return null; - } - if (!File.Exists(metadata.ExecuteFilePath)) - { - string error = $"Parse plugin config {configPath} failed: ExecuteFile {metadata.ExecuteFilePath} didn't exist"; -#if (DEBUG) - { - throw new Exception(error); - } -#endif - return null; - } - - return metadata; - } - - /// - /// unzip - /// - /// The ziped file. - /// The STR directory. - /// overwirte - private static void UnZip(string zipedFile, string strDirectory, bool overWrite) - { - if (strDirectory == "") - strDirectory = Directory.GetCurrentDirectory(); - if (!strDirectory.EndsWith("\\")) - strDirectory = strDirectory + "\\"; - - using (ZipInputStream s = new ZipInputStream(File.OpenRead(zipedFile))) - { - ZipEntry theEntry; - - while ((theEntry = s.GetNextEntry()) != null) - { - string directoryName = ""; - string pathToZip = ""; - pathToZip = theEntry.Name; - - if (pathToZip != "") - directoryName = Path.GetDirectoryName(pathToZip) + "\\"; - - string fileName = Path.GetFileName(pathToZip); - - Directory.CreateDirectory(strDirectory + directoryName); - - if (fileName != "") - { - if ((File.Exists(strDirectory + directoryName + fileName) && overWrite) || (!File.Exists(strDirectory + directoryName + fileName))) - { - using (FileStream streamWriter = File.Create(strDirectory + directoryName + fileName)) - { - byte[] data = new byte[2048]; - while (true) - { - int size = s.Read(data, 0, data.Length); - - if (size > 0) - streamWriter.Write(data, 0, size); - else - break; - } - streamWriter.Close(); - } - } - } - } - - s.Close(); - } - } - } -} diff --git a/Flow.Launcher.Core/Plugin/PluginManager.cs b/Flow.Launcher.Core/Plugin/PluginManager.cs index b92226ccd..3b697a1ee 100644 --- a/Flow.Launcher.Core/Plugin/PluginManager.cs +++ b/Flow.Launcher.Core/Plugin/PluginManager.cs @@ -19,10 +19,6 @@ namespace Flow.Launcher.Core.Plugin { private static IEnumerable _contextMenuPlugins; - /// - /// Directories that will hold Flow Launcher plugin directory - /// - public static List AllPlugins { get; private set; } public static readonly List GlobalPlugins = new List(); public static readonly Dictionary NonGlobalPlugins = new Dictionary(); @@ -32,27 +28,18 @@ namespace Flow.Launcher.Core.Plugin // todo happlebao, this should not be public, the indicator function should be embeded public static PluginsSettings Settings; private static List _metadatas; - private static readonly string[] Directories = { Constant.PreinstalledDirectory, DataLocation.PluginsDirectory }; - private static void ValidateUserDirectory() - { - if (!Directory.Exists(DataLocation.PluginsDirectory)) - { - Directory.CreateDirectory(DataLocation.PluginsDirectory); - } - } + /// + /// Directories that will hold Flow Launcher plugin directory + /// + private static readonly string[] Directories = { Constant.PreinstalledDirectory, DataLocation.PluginsDirectory }; private static void DeletePythonBinding() { const string binding = "flowlauncher.py"; - var directory = DataLocation.PluginsDirectory; - foreach (var subDirectory in Directory.GetDirectories(directory)) + foreach (var subDirectory in Directory.GetDirectories(DataLocation.PluginsDirectory)) { - var path = Path.Combine(subDirectory, binding); - if (File.Exists(path)) - { - File.Delete(path); - } + File.Delete(Path.Combine(subDirectory, binding)); } } @@ -76,7 +63,8 @@ namespace Flow.Launcher.Core.Plugin static PluginManager() { - ValidateUserDirectory(); + // validate user directory + Directory.CreateDirectory(DataLocation.PluginsDirectory); // force old plugins use new python binding DeletePythonBinding(); } @@ -132,9 +120,10 @@ namespace Flow.Launcher.Core.Plugin GlobalPlugins.Add(plugin); // Plugins may have multiple ActionKeywords, eg. WebSearch - plugin.Metadata.ActionKeywords.Where(x => x != Query.GlobalPluginWildcardSign) - .ToList() - .ForEach(x => NonGlobalPlugins[x] = plugin); + plugin.Metadata.ActionKeywords + .Where(x => x != Query.GlobalPluginWildcardSign) + .ToList() + .ForEach(x => NonGlobalPlugins[x] = plugin); } if (failedPlugins.Any()) @@ -144,11 +133,6 @@ namespace Flow.Launcher.Core.Plugin } } - public static void InstallPlugin(string path) - { - PluginInstaller.Install(path); - } - public static List ValidPluginsForQuery(Query query) { if (NonGlobalPlugins.ContainsKey(query.ActionKeyword)) @@ -164,9 +148,9 @@ namespace Flow.Launcher.Core.Plugin public static List QueryForPlugin(PluginPair pair, Query query) { + var results = new List(); try { - List results = null; var metadata = pair.Metadata; var milliseconds = Stopwatch.Debug($"|PluginManager.QueryForPlugin|Cost for {metadata.Name}", () => { @@ -175,13 +159,12 @@ namespace Flow.Launcher.Core.Plugin }); metadata.QueryCount += 1; metadata.AvgQueryTime = metadata.QueryCount == 1 ? milliseconds : (metadata.AvgQueryTime + milliseconds) / 2; - return results; } catch (Exception e) { Log.Exception($"|PluginManager.QueryForPlugin|Exception for plugin <{pair.Metadata.Name}> when query <{query}>", e); - return new List(); } + return results; } public static void UpdatePluginMetadata(List results, PluginMetadata metadata, Query query) @@ -221,47 +204,34 @@ namespace Flow.Launcher.Core.Plugin public static List GetContextMenusForPlugin(Result result) { + var results = new List(); var pluginPair = _contextMenuPlugins.FirstOrDefault(o => o.Metadata.ID == result.PluginID); if (pluginPair != null) { - var metadata = pluginPair.Metadata; var plugin = (IContextMenu)pluginPair.Plugin; try { - var results = plugin.LoadContextMenus(result); + results = plugin.LoadContextMenus(result); foreach (var r in results) { - r.PluginDirectory = metadata.PluginDirectory; - r.PluginID = metadata.ID; + r.PluginDirectory = pluginPair.Metadata.PluginDirectory; + r.PluginID = pluginPair.Metadata.ID; r.OriginQuery = result.OriginQuery; } - return results; } catch (Exception e) { - Log.Exception($"|PluginManager.GetContextMenusForPlugin|Can't load context menus for plugin <{metadata.Name}>", e); - return new List(); + Log.Exception($"|PluginManager.GetContextMenusForPlugin|Can't load context menus for plugin <{pluginPair.Metadata.Name}>", e); } } - else - { - return new List(); - } - + return results; } public static bool ActionKeywordRegistered(string actionKeyword) { - if (actionKeyword != Query.GlobalPluginWildcardSign && - NonGlobalPlugins.ContainsKey(actionKeyword)) - { - return true; - } - else - { - return false; - } + return actionKeyword != Query.GlobalPluginWildcardSign + && NonGlobalPlugins.ContainsKey(actionKeyword); } /// @@ -299,7 +269,7 @@ namespace Flow.Launcher.Core.Plugin GlobalPlugins.Remove(plugin); } - if(oldActionkeyword != Query.GlobalPluginWildcardSign) + if (oldActionkeyword != Query.GlobalPluginWildcardSign) NonGlobalPlugins.Remove(oldActionkeyword); diff --git a/Flow.Launcher.Core/Plugin/PluginsLoader.cs b/Flow.Launcher.Core/Plugin/PluginsLoader.cs index 513d85c96..224dbd85e 100644 --- a/Flow.Launcher.Core/Plugin/PluginsLoader.cs +++ b/Flow.Launcher.Core/Plugin/PluginsLoader.cs @@ -21,7 +21,7 @@ namespace Flow.Launcher.Core.Plugin public static List Plugins(List metadatas, PluginsSettings settings) { - var dotnetPlugins = DotNetPlugins(metadatas).ToList(); + var dotnetPlugins = DotNetPlugins(metadatas); var pythonPlugins = PythonPlugins(metadatas, settings.PythonDirectory); var executablePlugins = ExecutablePlugins(metadatas); var plugins = dotnetPlugins.Concat(pythonPlugins).Concat(executablePlugins).ToList(); @@ -41,80 +41,63 @@ namespace Flow.Launcher.Core.Plugin { #if DEBUG - var assembly = AssemblyLoadContext.Default.LoadFromAssemblyPath(metadata.ExecuteFilePath); - var types = assembly.GetTypes(); - var type = types.First(o => o.IsClass && !o.IsAbstract && o.GetInterfaces().Contains(typeof(IPlugin))); + var assemblyLoader = new PluginAssemblyLoader(metadata.ExecuteFilePath); + var assembly = assemblyLoader.LoadAssemblyAndDependencies(); + var type = assemblyLoader.FromAssemblyGetTypeOfInterface(assembly, typeof(IPlugin)); var plugin = (IPlugin)Activator.CreateInstance(type); #else - Assembly assembly; + Assembly assembly = null; + IPlugin plugin = null; + try { - assembly = AssemblyLoadContext.Default.LoadFromAssemblyPath(metadata.ExecuteFilePath); - } - catch (Exception e) - { - erroredPlugins.Add(metadata.Name); + var assemblyLoader = new PluginAssemblyLoader(metadata.ExecuteFilePath); + assembly = assemblyLoader.LoadAssemblyAndDependencies(); + var type = assemblyLoader.FromAssemblyGetTypeOfInterface(assembly, typeof(IPlugin)); + + plugin = (IPlugin)Activator.CreateInstance(type); + } + catch (Exception e) when (assembly == null) + { Log.Exception($"|PluginsLoader.DotNetPlugins|Couldn't load assembly for the plugin: {metadata.Name}", e); - return; - } - - Type type; - try - { - var types = assembly.GetTypes(); - - type = types.First(o => o.IsClass && !o.IsAbstract && o.GetInterfaces().Contains(typeof(IPlugin))); } catch (InvalidOperationException e) { - erroredPlugins.Add(metadata.Name); - Log.Exception($"|PluginsLoader.DotNetPlugins|Can't find the required IPlugin interface for the plugin: <{metadata.Name}>", e); - return; } catch (ReflectionTypeLoadException e) { - erroredPlugins.Add(metadata.Name); - Log.Exception($"|PluginsLoader.DotNetPlugins|The GetTypes method was unable to load assembly types for the plugin: <{metadata.Name}>", e); - return; - } - - IPlugin plugin; - try - { - plugin = (IPlugin)Activator.CreateInstance(type); } catch (Exception e) { - erroredPlugins.Add(metadata.Name); - Log.Exception($"|PluginsLoader.DotNetPlugins|The following plugin has errored and can not be loaded: <{metadata.Name}>", e); + } + + if (plugin == null) + { + erroredPlugins.Add(metadata.Name); return; } #endif - PluginPair pair = new PluginPair + plugins.Add(new PluginPair { Plugin = plugin, Metadata = metadata - }; - plugins.Add(pair); + }); }); metadata.InitTime += milliseconds; - } if (erroredPlugins.Count > 0) { - var errorPluginString = ""; + var errorPluginString = String.Join(Environment.NewLine, erroredPlugins); var errorMessage = "The following " + (erroredPlugins.Count > 1 ? "plugins have " : "plugin has ") + "errored and cannot be loaded:"; - erroredPlugins.ForEach(x => errorPluginString += x + Environment.NewLine); - Task.Run(() => { MessageBox.Show($"{errorMessage}{Environment.NewLine}{Environment.NewLine}" + @@ -127,65 +110,74 @@ namespace Flow.Launcher.Core.Plugin return plugins; } - public static IEnumerable PythonPlugins(List source, string pythonDirecotry) + public static IEnumerable PythonPlugins(List source, string pythonDirectory) { - var metadatas = source.Where(o => o.Language.ToUpper() == AllowedLanguage.Python); - string filename; - - if (string.IsNullOrEmpty(pythonDirecotry)) + // try to set Constant.PythonPath, either from + // PATH or from the given pythonDirectory + if (string.IsNullOrEmpty(pythonDirectory)) { var paths = Environment.GetEnvironmentVariable(PATH); if (paths != null) { - var pythonPaths = paths.Split(';').Where(p => p.ToLower().Contains(Python)); - if (pythonPaths.Any()) + var pythonInPath = paths + .Split(';') + .Where(p => p.ToLower().Contains(Python)) + .Any(); + + if (pythonInPath) { - filename = PythonExecutable; + Constant.PythonPath = PythonExecutable; } else { Log.Error("|PluginsLoader.PythonPlugins|Python can't be found in PATH."); - return new List(); } } else { Log.Error("|PluginsLoader.PythonPlugins|PATH environment variable is not set."); - return new List(); } } else { - var path = Path.Combine(pythonDirecotry, PythonExecutable); + var path = Path.Combine(pythonDirectory, PythonExecutable); if (File.Exists(path)) { - filename = path; + Constant.PythonPath = path; } else { - Log.Error("|PluginsLoader.PythonPlugins|Can't find python executable in (); + Log.Error($"|PluginsLoader.PythonPlugins|Can't find python executable in {path}"); } } - Constant.PythonPath = filename; - var plugins = metadatas.Select(metadata => new PluginPair + + // if we have a path to the python executable, + // load every python plugin pair. + if (String.IsNullOrEmpty(Constant.PythonPath)) { - Plugin = new PythonPlugin(filename), - Metadata = metadata - }); - return plugins; + return new List(); + } + else + { + return source + .Where(o => o.Language.ToUpper() == AllowedLanguage.Python) + .Select(metadata => new PluginPair + { + Plugin = new PythonPlugin(Constant.PythonPath), + Metadata = metadata + }); + } } public static IEnumerable ExecutablePlugins(IEnumerable source) { - var metadatas = source.Where(o => o.Language.ToUpper() == AllowedLanguage.Executable); - - var plugins = metadatas.Select(metadata => new PluginPair - { - Plugin = new ExecutablePlugin(metadata.ExecuteFilePath), - Metadata = metadata - }); - return plugins; + return source + .Where(o => o.Language.ToUpper() == AllowedLanguage.Executable) + .Select(metadata => new PluginPair + { + Plugin = new ExecutablePlugin(metadata.ExecuteFilePath), + Metadata = metadata + }); } } diff --git a/Flow.Launcher.Core/Plugin/QueryBuilder.cs b/Flow.Launcher.Core/Plugin/QueryBuilder.cs index 9ad6466e9..df336e14b 100644 --- a/Flow.Launcher.Core/Plugin/QueryBuilder.cs +++ b/Flow.Launcher.Core/Plugin/QueryBuilder.cs @@ -29,7 +29,6 @@ namespace Flow.Launcher.Core.Plugin else { // non action keyword actionKeyword = string.Empty; - actionParameters = terms.ToList(); search = rawQuery; } @@ -38,10 +37,7 @@ namespace Flow.Launcher.Core.Plugin Terms = terms, RawQuery = rawQuery, ActionKeyword = actionKeyword, - Search = search, - // Obsolete value initialisation - ActionName = actionKeyword, - ActionParameters = actionParameters + Search = search }; return query; diff --git a/Flow.Launcher.Core/Resource/Internationalization.cs b/Flow.Launcher.Core/Resource/Internationalization.cs index 1df6f2a04..64b949cbb 100644 --- a/Flow.Launcher.Core/Resource/Internationalization.cs +++ b/Flow.Launcher.Core/Resource/Internationalization.cs @@ -88,7 +88,6 @@ namespace Flow.Launcher.Core.Resource { language = language.NonNull(); - Settings.Language = language.LanguageCode; RemoveOldLanguageFiles(); if (language != AvailableLanguages.English) @@ -96,6 +95,7 @@ namespace Flow.Launcher.Core.Resource LoadLanguage(language); } UpdatePluginMetadataTranslations(); + Settings.Language = language.LanguageCode; } diff --git a/Flow.Launcher.Core/Resource/Theme.cs b/Flow.Launcher.Core/Resource/Theme.cs index 606e6712d..a5f12bbb9 100644 --- a/Flow.Launcher.Core/Resource/Theme.cs +++ b/Flow.Launcher.Core/Resource/Theme.cs @@ -21,7 +21,7 @@ namespace Flow.Launcher.Core.Resource private ResourceDictionary _oldResource; private string _oldTheme; public Settings Settings { get; set; } - private const string Folder = "Themes"; + private const string Folder = Constant.Themes; private const string Extension = ".xaml"; private string DirectoryPath => Path.Combine(Constant.ProgramDirectory, Folder); private string UserDirectoryPath => Path.Combine(DataLocation.DataDirectory(), Folder); @@ -137,18 +137,31 @@ namespace Flow.Launcher.Core.Resource var dict = CurrentThemeResourceDictionary(); Style queryBoxStyle = dict["QueryBoxStyle"] as Style; - if (queryBoxStyle != null) + Style querySuggestionBoxStyle = dict["QuerySuggestionBoxStyle"] as Style; + + if (queryBoxStyle != null && querySuggestionBoxStyle != null) { - queryBoxStyle.Setters.Add(new Setter(TextBox.FontFamilyProperty, new FontFamily(Settings.QueryBoxFont))); - queryBoxStyle.Setters.Add(new Setter(TextBox.FontStyleProperty, FontHelper.GetFontStyleFromInvariantStringOrNormal(Settings.QueryBoxFontStyle))); - queryBoxStyle.Setters.Add(new Setter(TextBox.FontWeightProperty, FontHelper.GetFontWeightFromInvariantStringOrNormal(Settings.QueryBoxFontWeight))); - queryBoxStyle.Setters.Add(new Setter(TextBox.FontStretchProperty, FontHelper.GetFontStretchFromInvariantStringOrNormal(Settings.QueryBoxFontStretch))); + var fontFamily = new FontFamily(Settings.QueryBoxFont); + var fontStyle = FontHelper.GetFontStyleFromInvariantStringOrNormal(Settings.QueryBoxFontStyle); + var fontWeight = FontHelper.GetFontWeightFromInvariantStringOrNormal(Settings.QueryBoxFontWeight); + var fontStretch = FontHelper.GetFontStretchFromInvariantStringOrNormal(Settings.QueryBoxFontStretch); + + queryBoxStyle.Setters.Add(new Setter(TextBox.FontFamilyProperty, fontFamily)); + queryBoxStyle.Setters.Add(new Setter(TextBox.FontStyleProperty, fontStyle)); + queryBoxStyle.Setters.Add(new Setter(TextBox.FontWeightProperty, fontWeight)); + queryBoxStyle.Setters.Add(new Setter(TextBox.FontStretchProperty, fontStretch)); var caretBrushPropertyValue = queryBoxStyle.Setters.OfType().Any(x => x.Property.Name == "CaretBrush"); var foregroundPropertyValue = queryBoxStyle.Setters.OfType().Where(x => x.Property.Name == "Foreground") .Select(x => x.Value).FirstOrDefault(); if (!caretBrushPropertyValue && foregroundPropertyValue != null) //otherwise BaseQueryBoxStyle will handle styling queryBoxStyle.Setters.Add(new Setter(TextBox.CaretBrushProperty, foregroundPropertyValue)); + + // Query suggestion box's font style is aligned with query box + querySuggestionBoxStyle.Setters.Add(new Setter(TextBox.FontFamilyProperty, fontFamily)); + querySuggestionBoxStyle.Setters.Add(new Setter(TextBox.FontStyleProperty, fontStyle)); + querySuggestionBoxStyle.Setters.Add(new Setter(TextBox.FontWeightProperty, fontWeight)); + querySuggestionBoxStyle.Setters.Add(new Setter(TextBox.FontStretchProperty, fontStretch)); } Style resultItemStyle = dict["ItemTitleStyle"] as Style; diff --git a/Flow.Launcher.Core/Updater.cs b/Flow.Launcher.Core/Updater.cs index 3c4a15d30..20df23e40 100644 --- a/Flow.Launcher.Core/Updater.cs +++ b/Flow.Launcher.Core/Updater.cs @@ -16,6 +16,7 @@ using Flow.Launcher.Infrastructure.Http; using Flow.Launcher.Infrastructure.Logger; using System.IO; using Flow.Launcher.Infrastructure.UserSettings; +using Flow.Launcher.Plugin; namespace Flow.Launcher.Core { @@ -28,11 +29,14 @@ namespace Flow.Launcher.Core GitHubRepository = gitHubRepository; } - public async Task UpdateApp(bool silentIfLatestVersion = true) + public async Task UpdateApp(IPublicAPI api , bool silentUpdate = true) { UpdateManager updateManager; UpdateInfo newUpdateInfo; + if (!silentUpdate) + api.ShowMsg("Please wait...", "Checking for new update"); + try { updateManager = await GitHubUpdateManager(GitHubRepository); @@ -62,12 +66,15 @@ namespace Flow.Launcher.Core if (newReleaseVersion <= currentVersion) { - if (!silentIfLatestVersion) + if (!silentUpdate) MessageBox.Show("You already have the latest Flow Launcher version"); updateManager.Dispose(); return; } - + + if (!silentUpdate) + api.ShowMsg("Update found", "Updating..."); + try { await updateManager.DownloadReleases(newUpdateInfo.ReleasesToApply); @@ -84,10 +91,10 @@ namespace Flow.Launcher.Core if (DataLocation.PortableDataLocationInUse()) { var targetDestination = updateManager.RootAppDirectory + $"\\app-{newReleaseVersion.ToString()}\\{DataLocation.PortableFolderName}"; - FilesFolders.Copy(DataLocation.PortableDataPath, targetDestination); + FilesFolders.CopyAll(DataLocation.PortableDataPath, targetDestination); if (!FilesFolders.VerifyBothFolderFilesEqual(DataLocation.PortableDataPath, targetDestination)) - MessageBox.Show(string.Format("Flow Launcher was not able to move your user profile data to the new update version. Please manually" + - "move your profile data folder from {0} to {1}", DataLocation.PortableDataPath, targetDestination)); + MessageBox.Show("Flow Launcher was not able to move your user profile data to the new update version. Please manually " + + $"move your profile data folder from {DataLocation.PortableDataPath} to {targetDestination}"); } else { @@ -96,11 +103,15 @@ namespace Flow.Launcher.Core var newVersionTips = NewVersinoTips(newReleaseVersion.ToString()); - MessageBox.Show(newVersionTips); Log.Info($"|Updater.UpdateApp|Update success:{newVersionTips}"); // always dispose UpdateManager updateManager.Dispose(); + + if (MessageBox.Show(newVersionTips, "New Update", MessageBoxButton.YesNo) == MessageBoxResult.Yes) + { + UpdateManager.RestartApp(Constant.ApplicationFileName); + } } [UsedImplicitly] diff --git a/Flow.Launcher.CrashReporter/Images/app_error.png b/Flow.Launcher.CrashReporter/Images/app_error.png index 4c035da0c..70599f504 100644 Binary files a/Flow.Launcher.CrashReporter/Images/app_error.png and b/Flow.Launcher.CrashReporter/Images/app_error.png differ diff --git a/Flow.Launcher.Infrastructure/Alphabet.cs b/Flow.Launcher.Infrastructure/Alphabet.cs deleted file mode 100644 index e0eb60de4..000000000 --- a/Flow.Launcher.Infrastructure/Alphabet.cs +++ /dev/null @@ -1,199 +0,0 @@ -using System; -using System.Collections.Concurrent; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using hyjiacan.util.p4n; -using hyjiacan.util.p4n.format; -using JetBrains.Annotations; -using Flow.Launcher.Infrastructure.Logger; -using Flow.Launcher.Infrastructure.Storage; -using Flow.Launcher.Infrastructure.UserSettings; - -namespace Flow.Launcher.Infrastructure -{ - public interface IAlphabet - { - string Translate(string stringToTranslate); - } - - public class Alphabet : IAlphabet - { - private readonly HanyuPinyinOutputFormat Format = new HanyuPinyinOutputFormat(); - private ConcurrentDictionary PinyinCache; - private BinaryStorage> _pinyinStorage; - private Settings _settings; - - public void Initialize([NotNull] Settings settings) - { - _settings = settings ?? throw new ArgumentNullException(nameof(settings)); - InitializePinyinHelpers(); - } - - private void InitializePinyinHelpers() - { - Format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); - - Stopwatch.Normal("|Flow Launcher.Infrastructure.Alphabet.Initialize|Preload pinyin cache", () => - { - _pinyinStorage = new BinaryStorage>("Pinyin"); - - lock(_pinyinStorage) - { - var loaded = _pinyinStorage.TryLoad(new Dictionary()); - - PinyinCache = new ConcurrentDictionary(loaded); - } - - // force pinyin library static constructor initialize - PinyinHelper.toHanyuPinyinStringArray('T', Format); - }); - Log.Info($"|Flow Launcher.Infrastructure.Alphabet.Initialize|Number of preload pinyin combination<{PinyinCache.Count}>"); - } - - public string Translate(string str) - { - return ConvertChineseCharactersToPinyin(str); - } - - public string ConvertChineseCharactersToPinyin(string source) - { - if (!_settings.ShouldUsePinyin) - return source; - - if (string.IsNullOrEmpty(source)) - return source; - - if (!ContainsChinese(source)) - return source; - - var combination = PinyinCombination(source); - - var pinyinArray=combination.Select(x => string.Join("", x)); - var acronymArray = combination.Select(Acronym).Distinct(); - - var joinedSingleStringCombination = new StringBuilder(); - var all = acronymArray.Concat(pinyinArray); - all.ToList().ForEach(x => joinedSingleStringCombination.Append(x)); - - return joinedSingleStringCombination.ToString(); - } - - public void Save() - { - if (!_settings.ShouldUsePinyin) - { - return; - } - - lock(_pinyinStorage) - { - _pinyinStorage.Save(PinyinCache.ToDictionary(i => i.Key, i => i.Value)); - } - } - - private static string[] EmptyStringArray = new string[0]; - private static string[][] Empty2DStringArray = new string[0][]; - - [Obsolete("Not accurate, eg 音乐 will not return yinyue but returns yinle ")] - /// - /// replace chinese character with pinyin, non chinese character won't be modified - /// should be word or sentence, instead of single character. e.g. 微软 - /// - public string[] Pinyin(string word) - { - if (!_settings.ShouldUsePinyin) - { - return EmptyStringArray; - } - - var pinyin = word.Select(c => - { - var pinyins = PinyinHelper.toHanyuPinyinStringArray(c); - var result = pinyins == null ? c.ToString() : pinyins[0]; - return result; - }).ToArray(); - return pinyin; - } - - /// - /// replace chinese character with pinyin, non chinese character won't be modified - /// Because we don't have words dictionary, so we can only return all possiblie pinyin combination - /// e.g. 音乐 will return yinyue and yinle - /// should be word or sentence, instead of single character. e.g. 微软 - /// - public string[][] PinyinCombination(string characters) - { - if (!_settings.ShouldUsePinyin || string.IsNullOrEmpty(characters)) - { - return Empty2DStringArray; - } - - if (!PinyinCache.ContainsKey(characters)) - { - var allPinyins = new List(); - foreach (var c in characters) - { - var pinyins = PinyinHelper.toHanyuPinyinStringArray(c, Format); - if (pinyins != null) - { - var r = pinyins.Distinct().ToArray(); - allPinyins.Add(r); - } - else - { - var r = new[] { c.ToString() }; - allPinyins.Add(r); - } - } - - var combination = allPinyins.Aggregate(Combination).Select(c => c.Split(';')).ToArray(); - PinyinCache[characters] = combination; - return combination; - } - else - { - return PinyinCache[characters]; - } - } - - public string Acronym(string[] pinyin) - { - var acronym = string.Join("", pinyin.Select(p => p[0])); - return acronym; - } - - public bool ContainsChinese(string word) - { - if (!_settings.ShouldUsePinyin) - { - return false; - } - - if (word.Length > 40) - { - //Skip strings that are too long string for Pinyin conversion. - return false; - } - - var chinese = word.Select(PinyinHelper.toHanyuPinyinStringArray) - .Any(p => p != null); - return chinese; - } - - private string[] Combination(string[] array1, string[] array2) - { - if (!_settings.ShouldUsePinyin) - { - return EmptyStringArray; - } - - var combination = ( - from a1 in array1 - from a2 in array2 - select $"{a1};{a2}" - ).ToArray(); - return combination; - } - } -} diff --git a/Flow.Launcher.Infrastructure/Constant.cs b/Flow.Launcher.Infrastructure/Constant.cs index 0936ce8c4..df1464048 100644 --- a/Flow.Launcher.Infrastructure/Constant.cs +++ b/Flow.Launcher.Infrastructure/Constant.cs @@ -8,6 +8,7 @@ namespace Flow.Launcher.Infrastructure { public const string FlowLauncher = "Flow.Launcher"; public const string Plugins = "Plugins"; + public const string PluginMetadataFileName = "plugin.json"; public const string ApplicationFileName = FlowLauncher + ".exe"; @@ -22,14 +23,17 @@ namespace Flow.Launcher.Infrastructure public static readonly string Version = FileVersionInfo.GetVersionInfo(Assembly.Location.NonNull()).ProductVersion; public static readonly int ThumbnailSize = 64; - public static readonly string DefaultIcon = Path.Combine(ProgramDirectory, "Images", "app.png"); - public static readonly string ErrorIcon = Path.Combine(ProgramDirectory, "Images", "app_error.png"); + private static readonly string ImagesDirectory = Path.Combine(ProgramDirectory, "Images"); + public static readonly string DefaultIcon = Path.Combine(ImagesDirectory, "app.png"); + public static readonly string ErrorIcon = Path.Combine(ImagesDirectory, "app_error.png"); + public static readonly string MissingImgIcon = Path.Combine(ImagesDirectory, "app_missing_img.png"); public static string PythonPath; - public static string EverythingSDKPath; public static readonly string QueryTextBoxIconImagePath = $"{ProgramDirectory}\\Images\\mainsearch.png"; public const string DefaultTheme = "Darker"; + + public const string Themes = "Themes"; } } diff --git a/Flow.Launcher.Infrastructure/Exception/ExceptionFormatter.cs b/Flow.Launcher.Infrastructure/Exception/ExceptionFormatter.cs index 78cd4f9ea..3849f6e30 100644 --- a/Flow.Launcher.Infrastructure/Exception/ExceptionFormatter.cs +++ b/Flow.Launcher.Infrastructure/Exception/ExceptionFormatter.cs @@ -67,7 +67,6 @@ namespace Flow.Launcher.Infrastructure.Exception sb.AppendLine($"* IntPtr Length: {IntPtr.Size}"); sb.AppendLine($"* x64: {Environment.Is64BitOperatingSystem}"); sb.AppendLine($"* Python Path: {Constant.PythonPath}"); - sb.AppendLine($"* Everything SDK Path: {Constant.EverythingSDKPath}"); sb.AppendLine($"* CLR Version: {Environment.Version}"); sb.AppendLine($"* Installed .NET Framework: "); foreach (var result in GetFrameworkVersionFromRegistry()) diff --git a/Flow.Launcher.Infrastructure/Flow.Launcher.Infrastructure.csproj b/Flow.Launcher.Infrastructure/Flow.Launcher.Infrastructure.csproj index 3a756cd26..28d4c0e1f 100644 --- a/Flow.Launcher.Infrastructure/Flow.Launcher.Infrastructure.csproj +++ b/Flow.Launcher.Infrastructure/Flow.Launcher.Infrastructure.csproj @@ -38,6 +38,7 @@ + @@ -48,13 +49,11 @@ - - - + diff --git a/Flow.Launcher.Infrastructure/FodyWeavers.xml b/Flow.Launcher.Infrastructure/FodyWeavers.xml new file mode 100644 index 000000000..4e68ed1a8 --- /dev/null +++ b/Flow.Launcher.Infrastructure/FodyWeavers.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Flow.Launcher.Infrastructure/FuzzyMatcher.cs b/Flow.Launcher.Infrastructure/FuzzyMatcher.cs deleted file mode 100644 index 3df719b28..000000000 --- a/Flow.Launcher.Infrastructure/FuzzyMatcher.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System; - -namespace Flow.Launcher.Infrastructure -{ - [Obsolete("This class is obsolete and should not be used. Please use the static function StringMatcher.FuzzySearch")] - public class FuzzyMatcher - { - private string query; - private MatchOption opt; - - private FuzzyMatcher(string query, MatchOption opt) - { - this.query = query.Trim(); - this.opt = opt; - } - - public static FuzzyMatcher Create(string query) - { - return new FuzzyMatcher(query, new MatchOption()); - } - - public static FuzzyMatcher Create(string query, MatchOption opt) - { - return new FuzzyMatcher(query, opt); - } - - public MatchResult Evaluate(string str) - { - return StringMatcher.Instance.FuzzyMatch(query, str, opt); - } - } -} diff --git a/Flow.Launcher.Infrastructure/Http/Http.cs b/Flow.Launcher.Infrastructure/Http/Http.cs index b7d274205..1d5f240e1 100644 --- a/Flow.Launcher.Infrastructure/Http/Http.cs +++ b/Flow.Launcher.Infrastructure/Http/Http.cs @@ -66,18 +66,12 @@ namespace Flow.Launcher.Infrastructure.Http response = response.NonNull(); var stream = response.GetResponseStream().NonNull(); - using (var reader = new StreamReader(stream, Encoding.GetEncoding(encoding))) - { - var content = await reader.ReadToEndAsync(); - if (response.StatusCode == HttpStatusCode.OK) - { - return content; - } - else - { - throw new HttpRequestException($"Error code <{response.StatusCode}> with content <{content}> returned from <{url}>"); - } - } + using var reader = new StreamReader(stream, Encoding.GetEncoding(encoding)); + var content = await reader.ReadToEndAsync(); + if (response.StatusCode != HttpStatusCode.OK) + throw new HttpRequestException($"Error code <{response.StatusCode}> with content <{content}> returned from <{url}>"); + + return content; } } } \ No newline at end of file diff --git a/Flow.Launcher.Infrastructure/Image/ImageCache.cs b/Flow.Launcher.Infrastructure/Image/ImageCache.cs index 5d7224c5b..b1c09024f 100644 --- a/Flow.Launcher.Infrastructure/Image/ImageCache.cs +++ b/Flow.Launcher.Infrastructure/Image/ImageCache.cs @@ -2,44 +2,84 @@ using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; +using System.Threading.Tasks; using System.Windows.Media; namespace Flow.Launcher.Infrastructure.Image { [Serializable] + public class ImageUsage + { + + public int usage; + public ImageSource imageSource; + + public ImageUsage(int usage, ImageSource image) + { + this.usage = usage; + imageSource = image; + } + } + public class ImageCache { - private const int MaxCached = 5000; - public ConcurrentDictionary Usage = new ConcurrentDictionary(); - private readonly ConcurrentDictionary _data = new ConcurrentDictionary(); - + private const int MaxCached = 50; + public ConcurrentDictionary Data { get; private set; } = new ConcurrentDictionary(); + private const int permissibleFactor = 2; + + public void Initialization(Dictionary usage) + { + foreach (var key in usage.Keys) + { + Data[key] = new ImageUsage(usage[key], null); + } + } public ImageSource this[string path] { get { - Usage.AddOrUpdate(path, 1, (k, v) => v + 1); - var i = _data[path]; - return i; - } - set { _data[path] = value; } - } + if (Data.TryGetValue(path, out var value)) + { + value.usage++; + return value.imageSource; + } - public Dictionary CleanupAndToDictionary() - => Usage - .OrderByDescending(o => o.Value) - .Take(MaxCached) - .ToDictionary(i => i.Key, i => i.Value); + return null; + } + set + { + Data.AddOrUpdate( + path, + new ImageUsage(0, value), + (k, v) => + { + v.imageSource = value; + v.usage++; + return v; + } + ); + + // To prevent the dictionary from drastically increasing in size by caching images, the dictionary size is not allowed to grow more than the permissibleFactor * maxCached size + // This is done so that we don't constantly perform this resizing operation and also maintain the image cache size at the same time + if (Data.Count > permissibleFactor * MaxCached) + { + // To delete the images from the data dictionary based on the resizing of the Usage Dictionary. + foreach (var key in Data.OrderBy(x => x.Value.usage).Take(Data.Count - MaxCached).Select(x => x.Key)) + Data.TryRemove(key, out _); + } + } + } public bool ContainsKey(string key) { - var contains = _data.ContainsKey(key); + var contains = Data.ContainsKey(key) && Data[key] != null; return contains; } public int CacheSize() { - return _data.Count; + return Data.Count; } /// @@ -47,8 +87,7 @@ namespace Flow.Launcher.Infrastructure.Image /// public int UniqueImagesInCache() { - return _data.Values.Distinct().Count(); + return Data.Values.Select(x => x.imageSource).Distinct().Count(); } } - -} +} \ No newline at end of file diff --git a/Flow.Launcher.Infrastructure/Image/ImageLoader.cs b/Flow.Launcher.Infrastructure/Image/ImageLoader.cs index ed3a6584d..ac333d567 100644 --- a/Flow.Launcher.Infrastructure/Image/ImageLoader.cs +++ b/Flow.Launcher.Infrastructure/Image/ImageLoader.cs @@ -13,12 +13,13 @@ namespace Flow.Launcher.Infrastructure.Image { public static class ImageLoader { - private static readonly ImageCache _imageCache = new ImageCache(); - private static readonly ConcurrentDictionary _guidToKey = new ConcurrentDictionary(); - private static readonly bool _enableHashImage = true; - + private static readonly ImageCache ImageCache = new ImageCache(); private static BinaryStorage> _storage; + private static readonly ConcurrentDictionary GuidToKey = new ConcurrentDictionary(); private static IImageHashGenerator _hashGenerator; + private static bool EnableImageHash = true; + public static ImageSource DefaultImage { get; } = new BitmapImage(new Uri(Constant.MissingImgIcon)); + private static readonly string[] ImageExtensions = { @@ -36,25 +37,25 @@ namespace Flow.Launcher.Infrastructure.Image _storage = new BinaryStorage>("Image"); _hashGenerator = new ImageHashGenerator(); - _imageCache.Usage = LoadStorageToConcurrentDictionary(); + var usage = LoadStorageToConcurrentDictionary(); - foreach (var icon in new[] { Constant.DefaultIcon, Constant.ErrorIcon }) + foreach (var icon in new[] { Constant.DefaultIcon, Constant.MissingImgIcon }) { ImageSource img = new BitmapImage(new Uri(icon)); img.Freeze(); - _imageCache[icon] = img; + ImageCache[icon] = img; } Task.Run(() => { Stopwatch.Normal("|ImageLoader.Initialize|Preload images cost", () => { - _imageCache.Usage.AsParallel().ForAll(x => + ImageCache.Data.AsParallel().ForAll(x => { Load(x.Key); }); }); - Log.Info($"|ImageLoader.Initialize|Number of preload images is <{_imageCache.Usage.Count}>, Images Number: {_imageCache.CacheSize()}, Unique Items {_imageCache.UniqueImagesInCache()}"); + Log.Info($"|ImageLoader.Initialize|Number of preload images is <{ImageCache.CacheSize()}>, Images Number: {ImageCache.CacheSize()}, Unique Items {ImageCache.UniqueImagesInCache()}"); }); } @@ -62,13 +63,13 @@ namespace Flow.Launcher.Infrastructure.Image { lock (_storage) { - _storage.Save(_imageCache.CleanupAndToDictionary()); + _storage.Save(ImageCache.Data.Select(x => (x.Key, x.Value.usage)).ToDictionary(x => x.Key, x => x.usage)); } } private static ConcurrentDictionary LoadStorageToConcurrentDictionary() { - lock(_storage) + lock (_storage) { var loaded = _storage.TryLoad(new Dictionary()); @@ -106,11 +107,11 @@ namespace Flow.Launcher.Infrastructure.Image { if (string.IsNullOrEmpty(path)) { - return new ImageResult(_imageCache[Constant.ErrorIcon], ImageType.Error); + return new ImageResult(ImageCache[Constant.MissingImgIcon], ImageType.Error); } - if (_imageCache.ContainsKey(path)) + if (ImageCache.ContainsKey(path)) { - return new ImageResult(_imageCache[path], ImageType.Cache); + return new ImageResult(ImageCache[path], ImageType.Cache); } if (path.StartsWith("data:", StringComparison.OrdinalIgnoreCase)) @@ -139,8 +140,8 @@ namespace Flow.Launcher.Infrastructure.Image Log.Exception($"|ImageLoader.Load|Failed to get thumbnail for {path} on first try", e); Log.Exception($"|ImageLoader.Load|Failed to get thumbnail for {path} on second try", e2); - ImageSource image = _imageCache[Constant.ErrorIcon]; - _imageCache[path] = image; + ImageSource image = ImageCache[Constant.MissingImgIcon]; + ImageCache[path] = image; imageResult = new ImageResult(image, ImageType.Error); } } @@ -156,9 +157,8 @@ namespace Flow.Launcher.Infrastructure.Image if (Directory.Exists(path)) { /* Directories can also have thumbnails instead of shell icons. - * Generating thumbnails for a bunch of folders while scrolling through - * results from Everything makes a big impact on performance and - * Flow.Launcher responsibility. + * Generating thumbnails for a bunch of folder results while scrolling + * could have a big impact on performance and Flow.Launcher responsibility. * - Solution: just load the icon */ type = ImageType.Folder; @@ -192,8 +192,8 @@ namespace Flow.Launcher.Infrastructure.Image } else { - image = _imageCache[Constant.ErrorIcon]; - path = Constant.ErrorIcon; + image = ImageCache[Constant.MissingImgIcon]; + path = Constant.MissingImgIcon; } if (type != ImageType.Error) @@ -213,33 +213,37 @@ namespace Flow.Launcher.Infrastructure.Image option); } + public static bool CacheContainImage(string path) + { + return ImageCache.ContainsKey(path) && ImageCache[path] != null; + } + public static ImageSource Load(string path, bool loadFullImage = false) { var imageResult = LoadInternal(path, loadFullImage); var img = imageResult.ImageSource; if (imageResult.ImageType != ImageType.Error && imageResult.ImageType != ImageType.Cache) - { - // we need to get image hash - string hash = _enableHashImage ? _hashGenerator.GetHashFromImage(img) : null; + { // we need to get image hash + string hash = EnableImageHash ? _hashGenerator.GetHashFromImage(img) : null; if (hash != null) { - if (_guidToKey.TryGetValue(hash, out string key)) - { - // image already exists - img = _imageCache[key]; + + if (GuidToKey.TryGetValue(hash, out string key)) + { // image already exists + img = ImageCache[key] ?? img; } else - { - // new guid - _guidToKey[hash] = path; + { // new guid + GuidToKey[hash] = path; } } // update cache - _imageCache[path] = img; + ImageCache[path] = img; } + return img; } diff --git a/Flow.Launcher.Infrastructure/PinyinAlphabet.cs b/Flow.Launcher.Infrastructure/PinyinAlphabet.cs new file mode 100644 index 000000000..80fd12820 --- /dev/null +++ b/Flow.Launcher.Infrastructure/PinyinAlphabet.cs @@ -0,0 +1,85 @@ +using System; +using System.Collections.Concurrent; +using System.Linq; +using System.Text; +using JetBrains.Annotations; +using Flow.Launcher.Infrastructure.UserSettings; +using ToolGood.Words.Pinyin; + +namespace Flow.Launcher.Infrastructure +{ + public interface IAlphabet + { + string Translate(string stringToTranslate); + } + + public class PinyinAlphabet : IAlphabet + { + private ConcurrentDictionary _pinyinCache = new ConcurrentDictionary(); + private Settings _settings; + + public void Initialize([NotNull] Settings settings) + { + _settings = settings ?? throw new ArgumentNullException(nameof(settings)); + } + + public string Translate(string content) + { + if (_settings.ShouldUsePinyin) + { + if (!_pinyinCache.ContainsKey(content)) + { + if (WordsHelper.HasChinese(content)) + { + var resultList = WordsHelper.GetPinyinList(content); + + StringBuilder resultBuilder = new StringBuilder(); + + for (int i = 0; i < resultList.Length; i++) + { + if (content[i] >= 0x3400 && content[i] <= 0x9FD5) + resultBuilder.Append(resultList[i].First()); + } + + resultBuilder.Append(' '); + + bool pre = false; + + for (int i = 0; i < resultList.Length; i++) + { + if (content[i] >= 0x3400 && content[i] <= 0x9FD5) + { + resultBuilder.Append(' '); + resultBuilder.Append(resultList[i]); + pre = true; + } + else + { + if (pre) + { + pre = false; + resultBuilder.Append(' '); + } + resultBuilder.Append(resultList[i]); + } + } + + return _pinyinCache[content] = resultBuilder.ToString(); + } + else + { + return content; + } + } + else + { + return _pinyinCache[content]; + } + } + else + { + return content; + } + } + } +} \ No newline at end of file diff --git a/Flow.Launcher.Infrastructure/Storage/WoxJsonStorage.cs b/Flow.Launcher.Infrastructure/Storage/FlowLauncherJsonStorage.cs similarity index 100% rename from Flow.Launcher.Infrastructure/Storage/WoxJsonStorage.cs rename to Flow.Launcher.Infrastructure/Storage/FlowLauncherJsonStorage.cs diff --git a/Flow.Launcher.Infrastructure/StringMatcher.cs b/Flow.Launcher.Infrastructure/StringMatcher.cs index aef8bf7ed..2a4270fb4 100644 --- a/Flow.Launcher.Infrastructure/StringMatcher.cs +++ b/Flow.Launcher.Infrastructure/StringMatcher.cs @@ -21,18 +21,6 @@ namespace Flow.Launcher.Infrastructure public static StringMatcher Instance { get; internal set; } - [Obsolete("This method is obsolete and should not be used. Please use the static function StringMatcher.FuzzySearch")] - public static int Score(string source, string target) - { - return FuzzySearch(target, source).Score; - } - - [Obsolete("This method is obsolete and should not be used. Please use the static function StringMatcher.FuzzySearch")] - public static bool IsMatch(string source, string target) - { - return Score(source, target) > 0; - } - public static MatchResult FuzzySearch(string query, string stringToCompare) { return Instance.FuzzyMatch(query, stringToCompare); @@ -83,9 +71,18 @@ namespace Flow.Launcher.Infrastructure bool allSubstringsContainedInCompareString = true; var indexList = new List(); + List spaceIndices = new List(); for (var compareStringIndex = 0; compareStringIndex < fullStringToCompareWithoutCase.Length; compareStringIndex++) { + + // To maintain a list of indices which correspond to spaces in the string to compare + // To populate the list only for the first query substring + if (fullStringToCompareWithoutCase[compareStringIndex].Equals(' ') && currentQuerySubstringIndex == 0) + { + spaceIndices.Add(compareStringIndex); + } + if (fullStringToCompareWithoutCase[compareStringIndex] != currentQuerySubstring[currentQuerySubstringCharacterIndex]) { matchFoundInPreviousLoop = false; @@ -147,15 +144,31 @@ namespace Flow.Launcher.Infrastructure // proceed to calculate score if every char or substring without whitespaces matched if (allQuerySubstringsMatched) { - var score = CalculateSearchScore(query, stringToCompare, firstMatchIndex, lastMatchIndex - firstMatchIndex, allSubstringsContainedInCompareString); + var nearestSpaceIndex = CalculateClosestSpaceIndex(spaceIndices, firstMatchIndex); + var score = CalculateSearchScore(query, stringToCompare, firstMatchIndex - nearestSpaceIndex - 1, lastMatchIndex - firstMatchIndex, allSubstringsContainedInCompareString); return new MatchResult(true, UserSettingSearchPrecision, indexList, score); } - return new MatchResult (false, UserSettingSearchPrecision); + return new MatchResult(false, UserSettingSearchPrecision); } - private static bool AllPreviousCharsMatched(int startIndexToVerify, int currentQuerySubstringCharacterIndex, + // To get the index of the closest space which preceeds the first matching index + private int CalculateClosestSpaceIndex(List spaceIndices, int firstMatchIndex) + { + if (spaceIndices.Count == 0) + { + return -1; + } + else + { + int? ind = spaceIndices.OrderBy(item => (firstMatchIndex - item)).Where(item => firstMatchIndex > item).FirstOrDefault(); + int closestSpaceIndex = ind ?? -1; + return closestSpaceIndex; + } + } + + private static bool AllPreviousCharsMatched(int startIndexToVerify, int currentQuerySubstringCharacterIndex, string fullStringToCompareWithoutCase, string currentQuerySubstring) { var allMatch = true; @@ -298,18 +311,6 @@ namespace Flow.Launcher.Infrastructure public class MatchOption { - /// - /// prefix of match char, use for hightlight - /// - [Obsolete("this is never used")] - public string Prefix { get; set; } = ""; - - /// - /// suffix of match char, use for hightlight - /// - [Obsolete("this is never used")] - public string Suffix { get; set; } = ""; - public bool IgnoreCase { get; set; } = true; } } diff --git a/Flow.Launcher.Infrastructure/UserSettings/DataLocation.cs b/Flow.Launcher.Infrastructure/UserSettings/DataLocation.cs index 310c1e33a..e93c341dc 100644 --- a/Flow.Launcher.Infrastructure/UserSettings/DataLocation.cs +++ b/Flow.Launcher.Infrastructure/UserSettings/DataLocation.cs @@ -30,5 +30,6 @@ namespace Flow.Launcher.Infrastructure.UserSettings } public static readonly string PluginsDirectory = Path.Combine(DataDirectory(), Constant.Plugins); + public static readonly string PluginSettingsDirectory = Path.Combine(DataDirectory(), "Settings", Constant.Plugins); } } diff --git a/Flow.Launcher.Infrastructure/UserSettings/PluginSettings.cs b/Flow.Launcher.Infrastructure/UserSettings/PluginSettings.cs index 4c47ca425..ccd9beb86 100644 --- a/Flow.Launcher.Infrastructure/UserSettings/PluginSettings.cs +++ b/Flow.Launcher.Infrastructure/UserSettings/PluginSettings.cs @@ -15,6 +15,16 @@ namespace Flow.Launcher.Infrastructure.UserSettings if (Plugins.ContainsKey(metadata.ID)) { var settings = Plugins[metadata.ID]; + + // TODO: Remove. This is one off for 1.2.0 release. + // Introduced a new action keyword in Explorer, so need to update plugin setting in the UserData folder. + // This kind of plugin meta update should be handled by a dedicated method trigger by version bump. + if (metadata.ID == "572be03c74c642baae319fc283e561a8" && metadata.ActionKeywords.Count != settings.ActionKeywords.Count) + settings.ActionKeywords = metadata.ActionKeywords; + + if (string.IsNullOrEmpty(settings.Version)) + settings.Version = metadata.Version; + if (settings.ActionKeywords?.Count > 0) { metadata.ActionKeywords = settings.ActionKeywords; @@ -28,6 +38,7 @@ namespace Flow.Launcher.Infrastructure.UserSettings { ID = metadata.ID, Name = metadata.Name, + Version = metadata.Version, ActionKeywords = metadata.ActionKeywords, Disabled = metadata.Disabled }; @@ -39,6 +50,7 @@ namespace Flow.Launcher.Infrastructure.UserSettings { public string ID { get; set; } public string Name { get; set; } + public string Version { get; set; } public List ActionKeywords { get; set; } // a reference of the action keywords from plugin manager /// diff --git a/Flow.Launcher.Infrastructure/UserSettings/Settings.cs b/Flow.Launcher.Infrastructure/UserSettings/Settings.cs index 4e1a8d7d8..832b6fbfa 100644 --- a/Flow.Launcher.Infrastructure/UserSettings/Settings.cs +++ b/Flow.Launcher.Infrastructure/UserSettings/Settings.cs @@ -9,10 +9,18 @@ namespace Flow.Launcher.Infrastructure.UserSettings { public class Settings : BaseModel { + private string language = "en"; + public string Hotkey { get; set; } = $"{KeyConstant.Alt} + {KeyConstant.Space}"; public string OpenResultModifiers { get; set; } = KeyConstant.Alt; public bool ShowOpenResultHotkey { get; set; } = true; - public string Language { get; set; } = "en"; + public string Language + { + get => language; set { + language = value; + OnPropertyChanged(); + } + } public string Theme { get; set; } = Constant.DefaultTheme; public bool UseDropShadowEffect { get; set; } = false; public string QueryBoxFont { get; set; } = FontFamily.GenericSansSerif.Name; @@ -70,12 +78,6 @@ namespace Flow.Launcher.Infrastructure.UserSettings public PluginsSettings PluginSettings { get; set; } = new PluginsSettings(); public ObservableCollection CustomPluginHotkeys { get; set; } = new ObservableCollection(); - [Obsolete] - public double Opacity { get; set; } = 1; - - [Obsolete] - public OpacityMode OpacityMode { get; set; } = OpacityMode.Normal; - public bool DontPromptUpdateMsg { get; set; } public bool EnableUpdateLog { get; set; } @@ -108,12 +110,4 @@ namespace Flow.Launcher.Infrastructure.UserSettings Empty, Preserved } - - [Obsolete] - public enum OpacityMode - { - Normal = 0, - LayeredWindow = 1, - DWM = 2 - } } \ No newline at end of file diff --git a/Flow.Launcher.Plugin/Feature.cs b/Flow.Launcher.Plugin/Feature.cs index 62da96c57..81839d816 100644 --- a/Flow.Launcher.Plugin/Feature.cs +++ b/Flow.Launcher.Plugin/Feature.cs @@ -11,23 +11,6 @@ namespace Flow.Launcher.Plugin List LoadContextMenus(Result selectedResult); } - [Obsolete("If a plugin has a action keyword, then it is exclusive. This interface will be remove in v1.3.0")] - public interface IExclusiveQuery : IFeatures - { - [Obsolete("If a plugin has a action keyword, then it is exclusive. This method will be remove in v1.3.0")] - bool IsExclusiveQuery(Query query); - } - - /// - /// Represent plugin query will be executed in UI thread directly. Don't do long-running operation in Query method if you implement this interface - /// This will improve the performance of instant search like websearch or cmd plugin - /// - [Obsolete("Flow Launcher is fast enough now, executed on ui thread is no longer needed")] - public interface IInstantQuery : IFeatures - { - bool IsInstantQuery(string query); - } - /// /// Represent plugins that support internationalization /// diff --git a/Flow.Launcher.Plugin/Features/IContextMenu.cs b/Flow.Launcher.Plugin/Features/IContextMenu.cs deleted file mode 100644 index f60e02a69..000000000 --- a/Flow.Launcher.Plugin/Features/IContextMenu.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System; - -namespace Flow.Launcher.Plugin.Features -{ - [Obsolete("Delete Flow.Launcher.Plugin.Features using directive, " + - "and use Flow.Launcher.Plugin.Feature.IContextMenu instead, " + - "this method will be removed in v1.3.0")] - public interface IContextMenu { } -} \ No newline at end of file diff --git a/Flow.Launcher.Plugin/Features/IExclusiveQuery.cs b/Flow.Launcher.Plugin/Features/IExclusiveQuery.cs deleted file mode 100644 index 57eddd93e..000000000 --- a/Flow.Launcher.Plugin/Features/IExclusiveQuery.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System; - -namespace Flow.Launcher.Plugin.Features -{ - [Obsolete("Delete Flow.Launcher.Plugin.Features using directive, " + - "and use Flow.Launcher.Plugin.Feature.IInstantQuery instead, " + - "this method will be removed in v1.3.0")] - public interface IExclusiveQuery { } -} diff --git a/Flow.Launcher.Plugin/Features/IInstantQuery.cs b/Flow.Launcher.Plugin/Features/IInstantQuery.cs deleted file mode 100644 index 465640ae9..000000000 --- a/Flow.Launcher.Plugin/Features/IInstantQuery.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System; - -namespace Flow.Launcher.Plugin.Features -{ - [Obsolete("Delete Flow.Launcher.Plugin.Features using directive, " + - "and use Flow.Launcher.Plugin.Feature.IInstantQuery instead, " + - "this method will be removed in v1.3.0")] - public interface IInstantQuery { } -} \ No newline at end of file diff --git a/Flow.Launcher.Plugin/Flow.Launcher.Plugin.csproj b/Flow.Launcher.Plugin/Flow.Launcher.Plugin.csproj index ff4700e94..0f6450d18 100644 --- a/Flow.Launcher.Plugin/Flow.Launcher.Plugin.csproj +++ b/Flow.Launcher.Plugin/Flow.Launcher.Plugin.csproj @@ -1,4 +1,4 @@ - + netcoreapp3.1 @@ -14,10 +14,10 @@ - 1.0.0 - 1.0.0-beta3 - 1.0.0 - 1.0.0 + 1.3.0 + 1.3.0 + 1.3.0 + 1.3.0 Flow.Launcher.Plugin Flow-Launcher MIT @@ -60,12 +60,9 @@ - + - - - \ No newline at end of file diff --git a/Flow.Launcher.Plugin/IPublicAPI.cs b/Flow.Launcher.Plugin/IPublicAPI.cs index 2e754a0ff..ccc00d5e9 100644 --- a/Flow.Launcher.Plugin/IPublicAPI.cs +++ b/Flow.Launcher.Plugin/IPublicAPI.cs @@ -8,15 +8,6 @@ namespace Flow.Launcher.Plugin /// public interface IPublicAPI { - /// - /// Push result to query box - /// - /// - /// - /// - [Obsolete("This method will be removed in Flow Launcher 1.3")] - void PushResults(Query query, PluginMetadata plugin, List results); - /// /// Change Flow.Launcher query /// @@ -27,42 +18,11 @@ namespace Flow.Launcher.Plugin /// void ChangeQuery(string query, bool requery = false); - /// - /// Just change the query text, this won't raise search - /// - /// - [Obsolete] - void ChangeQueryText(string query, bool selectAll = false); - - /// - /// Close Flow Launcher - /// - [Obsolete] - void CloseApp(); - /// /// Restart Flow Launcher /// void RestartApp(); - /// - /// Restart Flow Launcher - /// - [Obsolete("Use RestartApp instead. This method will be removed in Flow Launcher 1.3")] - void RestarApp(); - - /// - /// Hide Flow Launcher - /// - [Obsolete] - void HideApp(); - - /// - /// Show Flow Launcher - /// - [Obsolete] - void ShowApp(); - /// /// Save all Flow Launcher settings /// @@ -103,24 +63,6 @@ namespace Flow.Launcher.Plugin /// void OpenSettingDialog(); - /// - /// Show loading animation - /// - [Obsolete("automatically start")] - void StartLoadingBar(); - - /// - /// Stop loading animation - /// - [Obsolete("automatically stop")] - void StopLoadingBar(); - - /// - /// Install Flow Launcher plugin - /// - /// Plugin path (ends with .flowlauncher) - void InstallPlugin(string path); - /// /// Get translation of current language /// You need to implement IPluginI18n if you want to support multiple languages for your plugin diff --git a/Flow.Launcher.Plugin/PluginMetadata.cs b/Flow.Launcher.Plugin/PluginMetadata.cs index fb615459b..d81b442e2 100644 --- a/Flow.Launcher.Plugin/PluginMetadata.cs +++ b/Flow.Launcher.Plugin/PluginMetadata.cs @@ -43,9 +43,6 @@ namespace Flow.Launcher.Plugin return Name; } - [Obsolete("Use IcoPath")] - public string FullIcoPath => IcoPath; - /// /// Init time include both plugin load time and init time /// diff --git a/Flow.Launcher.Plugin/Query.cs b/Flow.Launcher.Plugin/Query.cs index 33310f2aa..1eb5c9c14 100644 --- a/Flow.Launcher.Plugin/Query.cs +++ b/Flow.Launcher.Plugin/Query.cs @@ -94,14 +94,5 @@ namespace Flow.Launcher.Plugin } public override string ToString() => RawQuery; - - [Obsolete("Use ActionKeyword, this property will be removed in v1.3.0")] - public string ActionName { get; internal set; } - - [Obsolete("Use Search instead, this property will be removed in v1.3.0")] - public List ActionParameters { get; internal set; } - - [Obsolete("Use Search instead, this method will be removed in v1.3.0")] - public string GetAllRemainingParameter() => Search; } } diff --git a/Flow.Launcher.Plugin/Result.cs b/Flow.Launcher.Plugin/Result.cs index bfd2fb0a4..70be1e9dc 100644 --- a/Flow.Launcher.Plugin/Result.cs +++ b/Flow.Launcher.Plugin/Result.cs @@ -104,21 +104,6 @@ namespace Flow.Launcher.Plugin return Title + SubTitle; } - - /// - /// Context menus associate with this result - /// - [Obsolete("Use IContextMenu instead")] - public List ContextMenu { get; set; } - - [Obsolete("Use Object initializer instead")] - public Result(string Title, string IcoPath, string SubTitle = null) - { - this.Title = Title; - this.IcoPath = IcoPath; - this.SubTitle = SubTitle; - } - public Result() { } /// @@ -130,5 +115,15 @@ namespace Flow.Launcher.Plugin /// Plugin ID that generated this result /// public string PluginID { get; internal set; } + + /// + /// Show message as ToolTip on result Title hover over + /// + public string TitleToolTip { get; set; } + + /// + /// Show message as ToolTip on result SubTitle hover over + /// + public string SubTitleToolTip { get; set; } } } \ No newline at end of file diff --git a/Flow.Launcher.Plugin/SharedCommands/FilesFolders.cs b/Flow.Launcher.Plugin/SharedCommands/FilesFolders.cs index ce067e8a0..27cd1a558 100644 --- a/Flow.Launcher.Plugin/SharedCommands/FilesFolders.cs +++ b/Flow.Launcher.Plugin/SharedCommands/FilesFolders.cs @@ -8,7 +8,16 @@ namespace Flow.Launcher.Plugin.SharedCommands public static class FilesFolders { private const string FileExplorerProgramName = "explorer"; - public static void Copy(this string sourcePath, string targetPath) + + private const string FileExplorerProgramEXE = "explorer.exe"; + + /// + /// Copies the folder and all of its files and folders + /// including subfolders to the target location + /// + /// + /// + public static void CopyAll(this string sourcePath, string targetPath) { // Get the subdirectories for the specified directory. DirectoryInfo dir = new DirectoryInfo(sourcePath); @@ -41,7 +50,7 @@ namespace Flow.Launcher.Plugin.SharedCommands foreach (DirectoryInfo subdir in dirs) { string temppath = Path.Combine(targetPath, subdir.Name); - Copy(subdir.FullName, temppath); + CopyAll(subdir.FullName, temppath); } } catch (Exception e) @@ -105,7 +114,7 @@ namespace Flow.Launcher.Plugin.SharedCommands return Directory.Exists(path); } - public static bool FileExits(this string filePath) + public static bool FileExists(this string filePath) { return File.Exists(filePath); } @@ -115,7 +124,7 @@ namespace Flow.Launcher.Plugin.SharedCommands var psi = new ProcessStartInfo { FileName = FileExplorerProgramName, UseShellExecute = true, Arguments = fileOrFolderPath }; try { - if (LocationExists(fileOrFolderPath) || FileExits(fileOrFolderPath)) + if (LocationExists(fileOrFolderPath) || FileExists(fileOrFolderPath)) Process.Start(psi); } catch (Exception e) @@ -128,6 +137,11 @@ namespace Flow.Launcher.Plugin.SharedCommands } } + public static void OpenContainingFolder(string path) + { + Process.Start(FileExplorerProgramEXE, $" /select,\"{path}\""); + } + /// /// This checks whether a given string is a directory path or network location string. /// It does not check if location actually exists. @@ -164,7 +178,7 @@ namespace Flow.Launcher.Plugin.SharedCommands /// /// Gets the previous level directory from a path string. /// Checks that previous level directory exists and returns it - /// as a path string, or empty string if doesn't exit + /// as a path string, or empty string if doesn't exist /// public static string GetPreviousExistingDirectory(Func locationExists, string path) { diff --git a/Flow.Launcher.Plugin/SharedCommands/SearchWeb.cs b/Flow.Launcher.Plugin/SharedCommands/SearchWeb.cs index b23da730e..95d057707 100644 --- a/Flow.Launcher.Plugin/SharedCommands/SearchWeb.cs +++ b/Flow.Launcher.Plugin/SharedCommands/SearchWeb.cs @@ -1,3 +1,4 @@ +using Microsoft.Win32; using System; using System.Diagnostics; using System.IO; @@ -7,12 +8,37 @@ namespace Flow.Launcher.Plugin.SharedCommands { public static class SearchWeb { + private static string GetDefaultBrowserPath() + { + string name = string.Empty; + try + { + using var regDefault = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice", false); + var stringDefault = regDefault.GetValue("ProgId"); + + using var regKey = Registry.ClassesRoot.OpenSubKey(stringDefault + "\\shell\\open\\command", false); + name = regKey.GetValue(null).ToString().ToLower().Replace("\"", ""); + + if (!name.EndsWith("exe")) + name = name.Substring(0, name.LastIndexOf(".exe") + 4); + + } + catch + { + return string.Empty; + } + + return name; + } + /// /// Opens search in a new browser. If no browser path is passed in then Chrome is used. /// Leave browser path blank to use Chrome. /// public static void NewBrowserWindow(this string url, string browserPath = "") { + browserPath = string.IsNullOrEmpty(browserPath) ? GetDefaultBrowserPath() : browserPath; + var browserExecutableName = browserPath? .Split(new[] { Path.DirectorySeparatorChar }, StringSplitOptions.None) .Last(); @@ -44,7 +70,9 @@ namespace Flow.Launcher.Plugin.SharedCommands /// public static void NewTabInBrowser(this string url, string browserPath = "") { - var psi = new ProcessStartInfo() { UseShellExecute = true}; + browserPath = string.IsNullOrEmpty(browserPath) ? GetDefaultBrowserPath() : browserPath; + + var psi = new ProcessStartInfo() { UseShellExecute = true }; try { if (!string.IsNullOrEmpty(browserPath)) diff --git a/Flow.Launcher.Test/FuzzyMatcherTest.cs b/Flow.Launcher.Test/FuzzyMatcherTest.cs index 68d5d43ac..468b94457 100644 --- a/Flow.Launcher.Test/FuzzyMatcherTest.cs +++ b/Flow.Launcher.Test/FuzzyMatcherTest.cs @@ -77,7 +77,7 @@ namespace Flow.Launcher.Test } [TestCase("Chrome")] - public void WhenGivenNotAllCharactersFoundInSearchStringThenShouldReturnZeroScore(string searchString) + public void WhenNotAllCharactersFoundInSearchString_ThenShouldReturnZeroScore(string searchString) { var compareString = "Can have rum only in my glass"; var matcher = new StringMatcher(); @@ -92,7 +92,7 @@ namespace Flow.Launcher.Test [TestCase("cand")] [TestCase("cpywa")] [TestCase("ccs")] - public void WhenGivenStringsAndAppliedPrecisionFilteringThenShouldReturnGreaterThanPrecisionScoreResults(string searchTerm) + public void GivenQueryString_WhenAppliedPrecisionFiltering_ThenShouldReturnGreaterThanPrecisionScoreResults(string searchTerm) { var results = new List(); var matcher = new StringMatcher(); @@ -107,7 +107,10 @@ namespace Flow.Launcher.Test foreach (var precisionScore in GetPrecisionScores()) { - var filteredResult = results.Where(result => result.Score >= precisionScore).Select(result => result).OrderByDescending(x => x.Score).ToList(); + var filteredResult = results.Where(result => result.Score >= precisionScore) + .Select(result => result) + .OrderByDescending(x => x.Score) + .ToList(); Debug.WriteLine(""); Debug.WriteLine("###############################################"); @@ -124,20 +127,22 @@ namespace Flow.Launcher.Test } [TestCase(Chrome, Chrome, 157)] - [TestCase(Chrome, LastIsChrome, 103)] - [TestCase(Chrome, HelpCureHopeRaiseOnMindEntityChrome, 21)] - [TestCase(Chrome, UninstallOrChangeProgramsOnYourComputer, 15)] + [TestCase(Chrome, LastIsChrome, 147)] + [TestCase(Chrome, HelpCureHopeRaiseOnMindEntityChrome, 25)] + [TestCase(Chrome, UninstallOrChangeProgramsOnYourComputer, 21)] [TestCase(Chrome, CandyCrushSagaFromKing, 0)] - [TestCase("sql", MicrosoftSqlServerManagementStudio, 56)] - [TestCase("sql manag", MicrosoftSqlServerManagementStudio, 99)]//double spacing intended - public void WhenGivenQueryStringThenShouldReturnCurrentScoring(string queryString, string compareString, int expectedScore) + [TestCase("sql", MicrosoftSqlServerManagementStudio, 110)] + [TestCase("sql manag", MicrosoftSqlServerManagementStudio, 121)]//double spacing intended + public void WhenGivenQueryString_ThenShouldReturn_TheDesiredScoring( + string queryString, string compareString, int expectedScore) { // When, Given var matcher = new StringMatcher(); var rawScore = matcher.FuzzyMatch(queryString, compareString).RawScore; // Should - Assert.AreEqual(expectedScore, rawScore, $"Expected score for compare string '{compareString}': {expectedScore}, Actual: {rawScore}"); + Assert.AreEqual(expectedScore, rawScore, + $"Expected score for compare string '{compareString}': {expectedScore}, Actual: {rawScore}"); } [TestCase("goo", "Google Chrome", StringMatcher.SearchPrecisionScore.Regular, true)] @@ -150,7 +155,7 @@ namespace Flow.Launcher.Test [TestCase("ccs", "Candy Crush Saga from King", StringMatcher.SearchPrecisionScore.Low, true)] [TestCase("cand", "Candy Crush Saga from King",StringMatcher.SearchPrecisionScore.Regular, true)] [TestCase("cand", "Help cure hope raise on mind entity Chrome", StringMatcher.SearchPrecisionScore.Regular, false)] - public void WhenGivenDesiredPrecisionThenShouldReturnAllResultsGreaterOrEqual( + public void WhenGivenDesiredPrecision_ThenShouldReturn_AllResultsGreaterOrEqual( string queryString, string compareString, StringMatcher.SearchPrecisionScore expectedPrecisionScore, @@ -185,8 +190,8 @@ namespace Flow.Launcher.Test [TestCase("sql manag", MicrosoftSqlServerManagementStudio, StringMatcher.SearchPrecisionScore.Regular, true)] [TestCase("sql", MicrosoftSqlServerManagementStudio, StringMatcher.SearchPrecisionScore.Regular, true)] [TestCase("sql serv", MicrosoftSqlServerManagementStudio, StringMatcher.SearchPrecisionScore.Regular, true)] - [TestCase("sqlserv", MicrosoftSqlServerManagementStudio, StringMatcher.SearchPrecisionScore.Regular, false)] - [TestCase("sql servman", MicrosoftSqlServerManagementStudio, StringMatcher.SearchPrecisionScore.Regular, false)] + [TestCase("servez", MicrosoftSqlServerManagementStudio, StringMatcher.SearchPrecisionScore.Regular, false)] + [TestCase("sql servz", MicrosoftSqlServerManagementStudio, StringMatcher.SearchPrecisionScore.Regular, false)] [TestCase("sql serv man", MicrosoftSqlServerManagementStudio, StringMatcher.SearchPrecisionScore.Regular, true)] [TestCase("sql studio", MicrosoftSqlServerManagementStudio, StringMatcher.SearchPrecisionScore.Regular, true)] [TestCase("mic", MicrosoftSqlServerManagementStudio, StringMatcher.SearchPrecisionScore.Regular, true)] @@ -199,7 +204,7 @@ namespace Flow.Launcher.Test [TestCase("cod", VisualStudioCode, StringMatcher.SearchPrecisionScore.Regular, true)] [TestCase("code", VisualStudioCode, StringMatcher.SearchPrecisionScore.Regular, true)] [TestCase("codes", "Visual Studio Codes", StringMatcher.SearchPrecisionScore.Regular, true)] - public void WhenGivenQueryShouldReturnResultsContainingAllQuerySubstrings( + public void WhenGivenQuery_ShouldReturnResults_ContainingAllQuerySubstrings( string queryString, string compareString, StringMatcher.SearchPrecisionScore expectedPrecisionScore, @@ -225,5 +230,60 @@ namespace Flow.Launcher.Test $"Raw Score: {matchResult.RawScore}{Environment.NewLine}" + $"Precision Score: {(int)expectedPrecisionScore}"); } + + [TestCase("man", "Task Manager", "eManual")] + [TestCase("term", "Windows Terminal", "Character Map")] + [TestCase("winterm", "Windows Terminal", "Cygwin64 Terminal")] + public void WhenGivenAQuery_Scoring_ShouldGiveMoreWeightToStartOfNewWord( + string queryString, string compareString1, string compareString2) + { + // When + var matcher = new StringMatcher { UserSettingSearchPrecision = StringMatcher.SearchPrecisionScore.Regular }; + + // Given + var compareString1Result = matcher.FuzzyMatch(queryString, compareString1); + var compareString2Result = matcher.FuzzyMatch(queryString, compareString2); + + Debug.WriteLine(""); + Debug.WriteLine("###############################################"); + Debug.WriteLine($"QueryString: \"{queryString}\"{Environment.NewLine}"); + Debug.WriteLine($"CompareString1: \"{compareString1}\", Score: {compareString1Result.Score}{Environment.NewLine}"); + Debug.WriteLine($"CompareString2: \"{compareString2}\", Score: {compareString2Result.Score}{Environment.NewLine}"); + Debug.WriteLine("###############################################"); + Debug.WriteLine(""); + + // Should + Assert.True(compareString1Result.Score > compareString2Result.Score, + $"Query: \"{queryString}\"{Environment.NewLine} " + + $"CompareString1: \"{compareString1}\", Score: {compareString1Result.Score}{Environment.NewLine}" + + $"Should be greater than{ Environment.NewLine}" + + $"CompareString2: \"{compareString2}\", Score: {compareString1Result.Score}{Environment.NewLine}"); + } + + [TestCase("vim", "Vim", "ignoreDescription", "ignore.exe", "Vim Diff", "ignoreDescription", "ignore.exe")] + public void WhenMultipleResults_ExactMatchingResult_ShouldHaveGreatestScore( + string queryString, string firstName, string firstDescription, string firstExecutableName, + string secondName, string secondDescription, string secondExecutableName) + { + // Act + var matcher = new StringMatcher(); + var firstNameMatch = matcher.FuzzyMatch(queryString, firstName).RawScore; + var firstDescriptionMatch = matcher.FuzzyMatch(queryString, firstDescription).RawScore; + var firstExecutableNameMatch = matcher.FuzzyMatch(queryString, firstExecutableName).RawScore; + + var secondNameMatch = matcher.FuzzyMatch(queryString, secondName).RawScore; + var secondDescriptionMatch = matcher.FuzzyMatch(queryString, secondDescription).RawScore; + var secondExecutableNameMatch = matcher.FuzzyMatch(queryString, secondExecutableName).RawScore; + + var firstScore = new[] { firstNameMatch, firstDescriptionMatch, firstExecutableNameMatch }.Max(); + var secondScore = new[] { secondNameMatch, secondDescriptionMatch, secondExecutableNameMatch }.Max(); + + // Assert + Assert.IsTrue(firstScore > secondScore, + $"Query: \"{queryString}\"{Environment.NewLine} " + + $"Name of first: \"{firstName}\", Final Score: {firstScore}{Environment.NewLine}" + + $"Should be greater than{ Environment.NewLine}" + + $"Name of second: \"{secondName}\", Final Score: {secondScore}{Environment.NewLine}"); + } } } \ No newline at end of file diff --git a/Flow.Launcher.Test/Plugins/ExplorerTest.cs b/Flow.Launcher.Test/Plugins/ExplorerTest.cs index 0a1dece4f..c91144825 100644 --- a/Flow.Launcher.Test/Plugins/ExplorerTest.cs +++ b/Flow.Launcher.Test/Plugins/ExplorerTest.cs @@ -58,8 +58,8 @@ namespace Flow.Launcher.Test.Plugins $"Actual: {result}{Environment.NewLine}"); } - [TestCase("C:\\", "SELECT TOP 100 System.FileName, System.ItemPathDisplay, System.ItemType FROM SystemIndex WHERE directory='file:C:\\'")] - [TestCase("C:\\SomeFolder\\", "SELECT TOP 100 System.FileName, System.ItemPathDisplay, System.ItemType FROM SystemIndex WHERE directory='file:C:\\SomeFolder\\'")] + [TestCase("C:\\", "SELECT TOP 100 System.FileName, System.ItemUrl, System.ItemType FROM SystemIndex WHERE directory='file:C:\\'")] + [TestCase("C:\\SomeFolder\\", "SELECT TOP 100 System.FileName, System.ItemUrl, System.ItemType FROM SystemIndex WHERE directory='file:C:\\SomeFolder\\'")] public void GivenWindowsIndexSearch_WhenSearchTypeIsTopLevelDirectorySearch_ThenQueryShouldUseExpectedString(string folderPath, string expectedString) { // Given @@ -74,7 +74,7 @@ namespace Flow.Launcher.Test.Plugins $"Actual string was: {queryString}{Environment.NewLine}"); } - [TestCase("C:\\SomeFolder\\flow.launcher.sln", "SELECT TOP 100 System.FileName, System.ItemPathDisplay, System.ItemType " + + [TestCase("C:\\SomeFolder\\flow.launcher.sln", "SELECT TOP 100 System.FileName, System.ItemUrl, System.ItemType " + "FROM SystemIndex WHERE (System.FileName LIKE 'flow.launcher.sln%' " + "OR CONTAINS(System.FileName,'\"flow.launcher.sln*\"',1033))" + " AND directory='file:C:\\SomeFolder'")] @@ -126,7 +126,7 @@ namespace Flow.Launcher.Test.Plugins $"Actual string was: {resultString}{Environment.NewLine}"); } - [TestCase("flow.launcher.sln", "SELECT TOP 100 \"System.FileName\", \"System.ItemPathDisplay\", \"System.ItemType\" " + + [TestCase("flow.launcher.sln", "SELECT TOP 100 \"System.FileName\", \"System.ItemUrl\", \"System.ItemType\" " + "FROM \"SystemIndex\" WHERE (System.FileName LIKE 'flow.launcher.sln%' " + "OR CONTAINS(System.FileName,'\"flow.launcher.sln*\"',1033)) AND scope='file:'")] public void GivenWindowsIndexSearch_WhenSearchAllFoldersAndFiles_ThenQueryShouldUseExpectedString( @@ -184,6 +184,55 @@ namespace Flow.Launcher.Test.Plugins $"Actual number of results is {results.Count} {Environment.NewLine}"); } + [TestCase(@"some words", @"FREETEXT('some words')")] + public void GivenWindowsIndexSearch_WhenQueryWhereRestrictionsIsForFileContentSearch_ThenShouldReturnFreeTextString( + string querySearchString, string expectedString) + { + // Given + var queryConstructor = new QueryConstructor(new Settings()); + + //When + var resultString = queryConstructor.QueryWhereRestrictionsForFileContentSearch(querySearchString); + + // Then + Assert.IsTrue(resultString == expectedString, + $"Expected QueryWhereRestrictions string: {expectedString}{Environment.NewLine} " + + $"Actual string was: {resultString}{Environment.NewLine}"); + } + + [TestCase("some words", "SELECT TOP 100 System.FileName, System.ItemUrl, System.ItemType " + + "FROM SystemIndex WHERE FREETEXT('some words') AND scope='file:'")] + public void GivenWindowsIndexSearch_WhenSearchForFileContent_ThenQueryShouldUseExpectedString( + string userSearchString, string expectedString) + { + // Given + var queryConstructor = new QueryConstructor(new Settings()); + + //When + var resultString = queryConstructor.QueryForFileContentSearch(userSearchString); + + // Then + Assert.IsTrue(resultString == expectedString, + $"Expected query string: {expectedString}{Environment.NewLine} " + + $"Actual string was: {resultString}{Environment.NewLine}"); + } + + public void GivenQuery_WhenActionKeywordForFileContentSearchExists_ThenFileContentSearchRequiredShouldReturnTrue() + { + // Given + var query = new Query { ActionKeyword = "doc:", Search = "search term" }; + + var searchManager = new SearchManager(new Settings(), new PluginInitContext()); + + // When + var result = searchManager.IsFileContentSearch(query.ActionKeyword); + + // Then + Assert.IsTrue(result, + $"Expected True for file content search. {Environment.NewLine} " + + $"Actual result was: {result}{Environment.NewLine}"); + } + [TestCase(@"c:\\", false)] [TestCase(@"i:\", true)] [TestCase(@"\c:\", false)] diff --git a/Flow.Launcher.sln b/Flow.Launcher.sln index b244c97de..4d8997177 100644 --- a/Flow.Launcher.sln +++ b/Flow.Launcher.sln @@ -13,9 +13,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Plugins", "Plugins", "{3A73 EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Flow.Launcher", "Flow.Launcher\Flow.Launcher.csproj", "{DB90F671-D861-46BB-93A3-F1304F5BA1C5}" ProjectSection(ProjectDependencies) = postProject - {230AE83F-E92E-4E69-8355-426B305DA9C0} = {230AE83F-E92E-4E69-8355-426B305DA9C0} {1EE20B48-82FB-48A2-8086-675D6DDAB4F0} = {1EE20B48-82FB-48A2-8086-675D6DDAB4F0} {0B9DE348-9361-4940-ADB6-F5953BFFCCEC} = {0B9DE348-9361-4940-ADB6-F5953BFFCCEC} + {4792A74A-0CEA-4173-A8B2-30E6764C6217} = {4792A74A-0CEA-4173-A8B2-30E6764C6217} {FDB3555B-58EF-4AE6-B5F1-904719637AB4} = {FDB3555B-58EF-4AE6-B5F1-904719637AB4} {F9C4C081-4CC3-4146-95F1-E102B4E10A5F} = {F9C4C081-4CC3-4146-95F1-E102B4E10A5F} {59BD9891-3837-438A-958D-ADC7F91F6F7E} = {59BD9891-3837-438A-958D-ADC7F91F6F7E} @@ -24,14 +24,12 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Flow.Launcher", "Flow.Launc {9B130CC5-14FB-41FF-B310-0A95B6894C37} = {9B130CC5-14FB-41FF-B310-0A95B6894C37} {FDED22C8-B637-42E8-824A-63B5B6E05A3A} = {FDED22C8-B637-42E8-824A-63B5B6E05A3A} {A3DCCBCA-ACC1-421D-B16E-210896234C26} = {A3DCCBCA-ACC1-421D-B16E-210896234C26} - {049490F0-ECD2-4148-9B39-2135EC346EBE} = {049490F0-ECD2-4148-9B39-2135EC346EBE} {403B57F2-1856-4FC7-8A24-36AB346B763E} = {403B57F2-1856-4FC7-8A24-36AB346B763E} + {588088F4-3262-4F9F-9663-A05DE12534C3} = {588088F4-3262-4F9F-9663-A05DE12534C3} EndProjectSection EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Flow.Launcher.Infrastructure", "Flow.Launcher.Infrastructure\Flow.Launcher.Infrastructure.csproj", "{4FD29318-A8AB-4D8F-AA47-60BC241B8DA3}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Flow.Launcher.Plugin.PluginManagement", "Plugins\Flow.Launcher.Plugin.PluginManagement\Flow.Launcher.Plugin.PluginManagement.csproj", "{049490F0-ECD2-4148-9B39-2135EC346EBE}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Flow.Launcher.Core", "Flow.Launcher.Core\Flow.Launcher.Core.csproj", "{B749F0DB-8E75-47DB-9E5E-265D16D0C0D2}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Flow.Launcher.Plugin.Program", "Plugins\Flow.Launcher.Plugin.Program\Flow.Launcher.Plugin.Program.csproj", "{FDB3555B-58EF-4AE6-B5F1-904719637AB4}" @@ -48,13 +46,12 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Flow.Launcher.Plugin.Url", EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Flow.Launcher.Plugin.Color", "Plugins\Flow.Launcher.Plugin.Color\Flow.Launcher.Plugin.Color.csproj", "{F35190AA-4758-4D9E-A193-E3BDF6AD3567}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Flow.Launcher.Plugin.Everything", "Plugins\Flow.Launcher.Plugin.Everything\Flow.Launcher.Plugin.Everything.csproj", "{230AE83F-E92E-4E69-8355-426B305DA9C0}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{FFD651C7-0546-441F-BC8C-D4EE8FD01EA7}" ProjectSection(SolutionItems) = preProject .gitattributes = .gitattributes .gitignore = .gitignore appveyor.yml = appveyor.yml + Directory.Build.targets = Directory.Build.targets Scripts\flowlauncher.nuspec = Scripts\flowlauncher.nuspec LICENSE = LICENSE Scripts\post_build.ps1 = Scripts\post_build.ps1 @@ -62,18 +59,18 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution SolutionAssemblyInfo.cs = SolutionAssemblyInfo.cs EndProjectSection EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HelloWorldCSharp", "Plugins\HelloWorldCSharp\HelloWorldCSharp.csproj", "{03FFA443-5F50-48D5-8869-F3DF316803AA}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Flow.Launcher.Plugin.Shell", "Plugins\Flow.Launcher.Plugin.Shell\Flow.Launcher.Plugin.Shell.csproj", "{C21BFF9C-2C99-4B5F-B7C9-A5E6DDDB37B0}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Flow.Launcher.Plugin.BrowserBookmark", "Plugins\Flow.Launcher.Plugin.BrowserBookmark\Flow.Launcher.Plugin.BrowserBookmark.csproj", "{9B130CC5-14FB-41FF-B310-0A95B6894C37}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Flow.Launcher.Plugin.Calculator", "Plugins\Flow.Launcher.Plugin.Calculator\Flow.Launcher.Plugin.Calculator.csproj", "{59BD9891-3837-438A-958D-ADC7F91F6F7E}" EndProject -Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "HelloWorldFSharp", "Plugins\HelloWorldFSharp\HelloWorldFSharp.fsproj", "{30DDA7D9-3712-44F4-BD18-DC1C05B2DD9E}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Flow.Launcher.Plugin.Explorer", "Plugins\Flow.Launcher.Plugin.Explorer\Flow.Launcher.Plugin.Explorer.csproj", "{F9C4C081-4CC3-4146-95F1-E102B4E10A5F}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Flow.Launcher.Plugin.ProcessKiller", "Plugins\Flow.Launcher.Plugin.ProcessKiller\Flow.Launcher.Plugin.ProcessKiller.csproj", "{588088F4-3262-4F9F-9663-A05DE12534C3}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Flow.Launcher.Plugin.PluginsManager", "Plugins\Flow.Launcher.Plugin.PluginsManager\Flow.Launcher.Plugin.PluginsManager.csproj", "{4792A74A-0CEA-4173-A8B2-30E6764C6217}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -132,18 +129,6 @@ Global {4FD29318-A8AB-4D8F-AA47-60BC241B8DA3}.Release|x64.Build.0 = Release|Any CPU {4FD29318-A8AB-4D8F-AA47-60BC241B8DA3}.Release|x86.ActiveCfg = Release|Any CPU {4FD29318-A8AB-4D8F-AA47-60BC241B8DA3}.Release|x86.Build.0 = Release|Any CPU - {049490F0-ECD2-4148-9B39-2135EC346EBE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {049490F0-ECD2-4148-9B39-2135EC346EBE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {049490F0-ECD2-4148-9B39-2135EC346EBE}.Debug|x64.ActiveCfg = Debug|Any CPU - {049490F0-ECD2-4148-9B39-2135EC346EBE}.Debug|x64.Build.0 = Debug|Any CPU - {049490F0-ECD2-4148-9B39-2135EC346EBE}.Debug|x86.ActiveCfg = Debug|Any CPU - {049490F0-ECD2-4148-9B39-2135EC346EBE}.Debug|x86.Build.0 = Debug|Any CPU - {049490F0-ECD2-4148-9B39-2135EC346EBE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {049490F0-ECD2-4148-9B39-2135EC346EBE}.Release|Any CPU.Build.0 = Release|Any CPU - {049490F0-ECD2-4148-9B39-2135EC346EBE}.Release|x64.ActiveCfg = Release|Any CPU - {049490F0-ECD2-4148-9B39-2135EC346EBE}.Release|x64.Build.0 = Release|Any CPU - {049490F0-ECD2-4148-9B39-2135EC346EBE}.Release|x86.ActiveCfg = Release|Any CPU - {049490F0-ECD2-4148-9B39-2135EC346EBE}.Release|x86.Build.0 = Release|Any CPU {B749F0DB-8E75-47DB-9E5E-265D16D0C0D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B749F0DB-8E75-47DB-9E5E-265D16D0C0D2}.Debug|Any CPU.Build.0 = Debug|Any CPU {B749F0DB-8E75-47DB-9E5E-265D16D0C0D2}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -241,30 +226,6 @@ Global {F35190AA-4758-4D9E-A193-E3BDF6AD3567}.Release|x64.Build.0 = Release|Any CPU {F35190AA-4758-4D9E-A193-E3BDF6AD3567}.Release|x86.ActiveCfg = Release|Any CPU {F35190AA-4758-4D9E-A193-E3BDF6AD3567}.Release|x86.Build.0 = Release|Any CPU - {230AE83F-E92E-4E69-8355-426B305DA9C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {230AE83F-E92E-4E69-8355-426B305DA9C0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {230AE83F-E92E-4E69-8355-426B305DA9C0}.Debug|x64.ActiveCfg = Debug|Any CPU - {230AE83F-E92E-4E69-8355-426B305DA9C0}.Debug|x64.Build.0 = Debug|Any CPU - {230AE83F-E92E-4E69-8355-426B305DA9C0}.Debug|x86.ActiveCfg = Debug|Any CPU - {230AE83F-E92E-4E69-8355-426B305DA9C0}.Debug|x86.Build.0 = Debug|Any CPU - {230AE83F-E92E-4E69-8355-426B305DA9C0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {230AE83F-E92E-4E69-8355-426B305DA9C0}.Release|Any CPU.Build.0 = Release|Any CPU - {230AE83F-E92E-4E69-8355-426B305DA9C0}.Release|x64.ActiveCfg = Release|Any CPU - {230AE83F-E92E-4E69-8355-426B305DA9C0}.Release|x64.Build.0 = Release|Any CPU - {230AE83F-E92E-4E69-8355-426B305DA9C0}.Release|x86.ActiveCfg = Release|Any CPU - {230AE83F-E92E-4E69-8355-426B305DA9C0}.Release|x86.Build.0 = Release|Any CPU - {03FFA443-5F50-48D5-8869-F3DF316803AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {03FFA443-5F50-48D5-8869-F3DF316803AA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {03FFA443-5F50-48D5-8869-F3DF316803AA}.Debug|x64.ActiveCfg = Debug|Any CPU - {03FFA443-5F50-48D5-8869-F3DF316803AA}.Debug|x64.Build.0 = Debug|Any CPU - {03FFA443-5F50-48D5-8869-F3DF316803AA}.Debug|x86.ActiveCfg = Debug|Any CPU - {03FFA443-5F50-48D5-8869-F3DF316803AA}.Debug|x86.Build.0 = Debug|Any CPU - {03FFA443-5F50-48D5-8869-F3DF316803AA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {03FFA443-5F50-48D5-8869-F3DF316803AA}.Release|Any CPU.Build.0 = Release|Any CPU - {03FFA443-5F50-48D5-8869-F3DF316803AA}.Release|x64.ActiveCfg = Release|Any CPU - {03FFA443-5F50-48D5-8869-F3DF316803AA}.Release|x64.Build.0 = Release|Any CPU - {03FFA443-5F50-48D5-8869-F3DF316803AA}.Release|x86.ActiveCfg = Release|Any CPU - {03FFA443-5F50-48D5-8869-F3DF316803AA}.Release|x86.Build.0 = Release|Any CPU {C21BFF9C-2C99-4B5F-B7C9-A5E6DDDB37B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C21BFF9C-2C99-4B5F-B7C9-A5E6DDDB37B0}.Debug|Any CPU.Build.0 = Debug|Any CPU {C21BFF9C-2C99-4B5F-B7C9-A5E6DDDB37B0}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -301,18 +262,6 @@ Global {59BD9891-3837-438A-958D-ADC7F91F6F7E}.Release|x64.Build.0 = Release|Any CPU {59BD9891-3837-438A-958D-ADC7F91F6F7E}.Release|x86.ActiveCfg = Release|Any CPU {59BD9891-3837-438A-958D-ADC7F91F6F7E}.Release|x86.Build.0 = Release|Any CPU - {30DDA7D9-3712-44F4-BD18-DC1C05B2DD9E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {30DDA7D9-3712-44F4-BD18-DC1C05B2DD9E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {30DDA7D9-3712-44F4-BD18-DC1C05B2DD9E}.Debug|x64.ActiveCfg = Debug|Any CPU - {30DDA7D9-3712-44F4-BD18-DC1C05B2DD9E}.Debug|x64.Build.0 = Debug|Any CPU - {30DDA7D9-3712-44F4-BD18-DC1C05B2DD9E}.Debug|x86.ActiveCfg = Debug|Any CPU - {30DDA7D9-3712-44F4-BD18-DC1C05B2DD9E}.Debug|x86.Build.0 = Debug|Any CPU - {30DDA7D9-3712-44F4-BD18-DC1C05B2DD9E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {30DDA7D9-3712-44F4-BD18-DC1C05B2DD9E}.Release|Any CPU.Build.0 = Release|Any CPU - {30DDA7D9-3712-44F4-BD18-DC1C05B2DD9E}.Release|x64.ActiveCfg = Release|Any CPU - {30DDA7D9-3712-44F4-BD18-DC1C05B2DD9E}.Release|x64.Build.0 = Release|Any CPU - {30DDA7D9-3712-44F4-BD18-DC1C05B2DD9E}.Release|x86.ActiveCfg = Release|Any CPU - {30DDA7D9-3712-44F4-BD18-DC1C05B2DD9E}.Release|x86.Build.0 = Release|Any CPU {F9C4C081-4CC3-4146-95F1-E102B4E10A5F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F9C4C081-4CC3-4146-95F1-E102B4E10A5F}.Debug|Any CPU.Build.0 = Debug|Any CPU {F9C4C081-4CC3-4146-95F1-E102B4E10A5F}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -325,12 +274,35 @@ Global {F9C4C081-4CC3-4146-95F1-E102B4E10A5F}.Release|x64.Build.0 = Release|Any CPU {F9C4C081-4CC3-4146-95F1-E102B4E10A5F}.Release|x86.ActiveCfg = Release|Any CPU {F9C4C081-4CC3-4146-95F1-E102B4E10A5F}.Release|x86.Build.0 = Release|Any CPU + {588088F4-3262-4F9F-9663-A05DE12534C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {588088F4-3262-4F9F-9663-A05DE12534C3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {588088F4-3262-4F9F-9663-A05DE12534C3}.Debug|x64.ActiveCfg = Debug|Any CPU + {588088F4-3262-4F9F-9663-A05DE12534C3}.Debug|x64.Build.0 = Debug|Any CPU + {588088F4-3262-4F9F-9663-A05DE12534C3}.Debug|x86.ActiveCfg = Debug|Any CPU + {588088F4-3262-4F9F-9663-A05DE12534C3}.Debug|x86.Build.0 = Debug|Any CPU + {588088F4-3262-4F9F-9663-A05DE12534C3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {588088F4-3262-4F9F-9663-A05DE12534C3}.Release|Any CPU.Build.0 = Release|Any CPU + {588088F4-3262-4F9F-9663-A05DE12534C3}.Release|x64.ActiveCfg = Release|Any CPU + {588088F4-3262-4F9F-9663-A05DE12534C3}.Release|x64.Build.0 = Release|Any CPU + {588088F4-3262-4F9F-9663-A05DE12534C3}.Release|x86.ActiveCfg = Release|Any CPU + {588088F4-3262-4F9F-9663-A05DE12534C3}.Release|x86.Build.0 = Release|Any CPU + {4792A74A-0CEA-4173-A8B2-30E6764C6217}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4792A74A-0CEA-4173-A8B2-30E6764C6217}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4792A74A-0CEA-4173-A8B2-30E6764C6217}.Debug|x64.ActiveCfg = Debug|Any CPU + {4792A74A-0CEA-4173-A8B2-30E6764C6217}.Debug|x64.Build.0 = Debug|Any CPU + {4792A74A-0CEA-4173-A8B2-30E6764C6217}.Debug|x86.ActiveCfg = Debug|Any CPU + {4792A74A-0CEA-4173-A8B2-30E6764C6217}.Debug|x86.Build.0 = Debug|Any CPU + {4792A74A-0CEA-4173-A8B2-30E6764C6217}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4792A74A-0CEA-4173-A8B2-30E6764C6217}.Release|Any CPU.Build.0 = Release|Any CPU + {4792A74A-0CEA-4173-A8B2-30E6764C6217}.Release|x64.ActiveCfg = Release|Any CPU + {4792A74A-0CEA-4173-A8B2-30E6764C6217}.Release|x64.Build.0 = Release|Any CPU + {4792A74A-0CEA-4173-A8B2-30E6764C6217}.Release|x86.ActiveCfg = Release|Any CPU + {4792A74A-0CEA-4173-A8B2-30E6764C6217}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution - {049490F0-ECD2-4148-9B39-2135EC346EBE} = {3A73F5A7-0335-40D8-BF7C-F20BE5D0BA87} {FDB3555B-58EF-4AE6-B5F1-904719637AB4} = {3A73F5A7-0335-40D8-BF7C-F20BE5D0BA87} {403B57F2-1856-4FC7-8A24-36AB346B763E} = {3A73F5A7-0335-40D8-BF7C-F20BE5D0BA87} {1EE20B48-82FB-48A2-8086-675D6DDAB4F0} = {3A73F5A7-0335-40D8-BF7C-F20BE5D0BA87} @@ -338,13 +310,12 @@ Global {0B9DE348-9361-4940-ADB6-F5953BFFCCEC} = {3A73F5A7-0335-40D8-BF7C-F20BE5D0BA87} {A3DCCBCA-ACC1-421D-B16E-210896234C26} = {3A73F5A7-0335-40D8-BF7C-F20BE5D0BA87} {F35190AA-4758-4D9E-A193-E3BDF6AD3567} = {3A73F5A7-0335-40D8-BF7C-F20BE5D0BA87} - {230AE83F-E92E-4E69-8355-426B305DA9C0} = {3A73F5A7-0335-40D8-BF7C-F20BE5D0BA87} - {03FFA443-5F50-48D5-8869-F3DF316803AA} = {3A73F5A7-0335-40D8-BF7C-F20BE5D0BA87} {C21BFF9C-2C99-4B5F-B7C9-A5E6DDDB37B0} = {3A73F5A7-0335-40D8-BF7C-F20BE5D0BA87} {9B130CC5-14FB-41FF-B310-0A95B6894C37} = {3A73F5A7-0335-40D8-BF7C-F20BE5D0BA87} {59BD9891-3837-438A-958D-ADC7F91F6F7E} = {3A73F5A7-0335-40D8-BF7C-F20BE5D0BA87} - {30DDA7D9-3712-44F4-BD18-DC1C05B2DD9E} = {3A73F5A7-0335-40D8-BF7C-F20BE5D0BA87} {F9C4C081-4CC3-4146-95F1-E102B4E10A5F} = {3A73F5A7-0335-40D8-BF7C-F20BE5D0BA87} + {588088F4-3262-4F9F-9663-A05DE12534C3} = {3A73F5A7-0335-40D8-BF7C-F20BE5D0BA87} + {4792A74A-0CEA-4173-A8B2-30E6764C6217} = {3A73F5A7-0335-40D8-BF7C-F20BE5D0BA87} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {F26ACB50-3F6C-4907-B0C9-1ADACC1D0DED} diff --git a/Flow.Launcher/App.xaml.cs b/Flow.Launcher/App.xaml.cs index 43316cc5b..59bdbc896 100644 --- a/Flow.Launcher/App.xaml.cs +++ b/Flow.Launcher/App.xaml.cs @@ -1,5 +1,6 @@ using System; using System.Diagnostics; +using System.Text; using System.Threading.Tasks; using System.Timers; using System.Windows; @@ -28,7 +29,7 @@ namespace Flow.Launcher private SettingWindowViewModel _settingsVM; private readonly Updater _updater = new Updater(Flow.Launcher.Properties.Settings.Default.GithubRepo); private readonly Portable _portable = new Portable(); - private readonly Alphabet _alphabet = new Alphabet(); + private readonly PinyinAlphabet _alphabet = new PinyinAlphabet(); private StringMatcher _stringMatcher; [STAThread] @@ -85,6 +86,8 @@ namespace Flow.Launcher Http.Proxy = _settings.Proxy; + Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); + RegisterExitEvents(); AutoStartup(); @@ -118,12 +121,12 @@ namespace Flow.Launcher var timer = new Timer(1000 * 60 * 60 * 5); timer.Elapsed += async (s, e) => { - await _updater.UpdateApp(); + await _updater.UpdateApp(API); }; timer.Start(); // check updates on startup - await _updater.UpdateApp(); + await _updater.UpdateApp(API); } }); } diff --git a/Flow.Launcher/CustomQueryHotkeySetting.xaml.cs b/Flow.Launcher/CustomQueryHotkeySetting.xaml.cs index bf5c7d769..d036c008c 100644 --- a/Flow.Launcher/CustomQueryHotkeySetting.xaml.cs +++ b/Flow.Launcher/CustomQueryHotkeySetting.xaml.cs @@ -57,7 +57,6 @@ namespace Flow.Launcher App.API.ChangeQuery(pluginHotkey.ActionKeyword); Application.Current.MainWindow.Visibility = Visibility.Visible; }); - MessageBox.Show(InternationalizationManager.Instance.GetTranslation("success")); } else { @@ -76,7 +75,6 @@ namespace Flow.Launcher App.API.ChangeQuery(updateCustomHotkey.ActionKeyword); Application.Current.MainWindow.Visibility = Visibility.Visible; }); - MessageBox.Show(InternationalizationManager.Instance.GetTranslation("success")); } Close(); diff --git a/Flow.Launcher/Flow.Launcher.csproj b/Flow.Launcher/Flow.Launcher.csproj index 987a685ac..8548ba39e 100644 --- a/Flow.Launcher/Flow.Launcher.csproj +++ b/Flow.Launcher/Flow.Launcher.csproj @@ -1,4 +1,4 @@ - + WinExe @@ -72,23 +72,13 @@ - - - - all runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - diff --git a/Flow.Launcher/Helper/ErrorReporting.cs b/Flow.Launcher/Helper/ErrorReporting.cs index 3d0263338..94e2ed2bc 100644 --- a/Flow.Launcher/Helper/ErrorReporting.cs +++ b/Flow.Launcher/Helper/ErrorReporting.cs @@ -41,8 +41,7 @@ namespace Flow.Launcher.Helper public static string DependenciesInfo() { - var info = $"\nPython Path: {Constant.PythonPath}" + - $"\nEverything SDK Path: {Constant.EverythingSDKPath}"; + var info = $"\nPython Path: {Constant.PythonPath}"; return info; } } diff --git a/Flow.Launcher/Images/app.png b/Flow.Launcher/Images/app.png index ba17c1a66..bc5701ac8 100644 Binary files a/Flow.Launcher/Images/app.png and b/Flow.Launcher/Images/app.png differ diff --git a/Flow.Launcher/Images/app_error.png b/Flow.Launcher/Images/app_error.png index 4c035da0c..70599f504 100644 Binary files a/Flow.Launcher/Images/app_error.png and b/Flow.Launcher/Images/app_error.png differ diff --git a/Flow.Launcher/Images/app_missing_img.png b/Flow.Launcher/Images/app_missing_img.png new file mode 100644 index 000000000..11d5466f0 Binary files /dev/null and b/Flow.Launcher/Images/app_missing_img.png differ diff --git a/Flow.Launcher/Languages/en.xaml b/Flow.Launcher/Languages/en.xaml index 0bf211bd9..adb49b65d 100644 --- a/Flow.Launcher/Languages/en.xaml +++ b/Flow.Launcher/Languages/en.xaml @@ -96,7 +96,7 @@ Version You have activated Flow Launcher {0} times Check for Updates - New version {0} is available, please restart Flow Launcher. + New version {0} is available, would you like to restart Flow Launcher to use the update? Check updates failed, please check your connection and proxy settings to api.github.com. Download updates failed, please check your connection and proxy settings to github-cloud.s3.amazonaws.com, @@ -111,7 +111,7 @@ Done Can't find specified plugin New Action Keyword can't be empty - New Action Keywords have been assigned to another plugin, please assign other new action keyword + This new Action Keyword is already assigned to another plugin, please choose a different one Success Use * if you don't want to specify an action keyword diff --git a/Flow.Launcher/Languages/sk.xaml b/Flow.Launcher/Languages/sk.xaml index a2ff5926d..bf001d507 100644 --- a/Flow.Launcher/Languages/sk.xaml +++ b/Flow.Launcher/Languages/sk.xaml @@ -1,12 +1,12 @@ - Nepodarilo sa registrovať klávesovú skratku {0} Nepodarilo sa spustiť {0} - Neplatný formát súboru pre plugin Flow Launcher - Pri tomto dopyte umiestniť navrchu - Zrušiť umiestnenie navrchu pri tomto dopyte + Neplatný formát súboru pre plugin Flow Launchera + Pri tomto zadaní umiestniť navrchu + Zrušiť umiestnenie navrchu pri tomto zadaní Spustiť dopyt: {0} Posledný čas realizácie: {0} Otvoriť @@ -15,61 +15,71 @@ Ukončiť - Nastavenia Flow Launcher + Nastavenia Flow Launchera Všeobecné Spustiť Flow Launcher po štarte systému Schovať Flow Launcher po strate fokusu Nezobrazovať upozornenia na novú verziu Zapamätať si posledné umiestnenie Jazyk - Posledný dopyt + Posledné vyhľadávanie Ponechať - Označiť posledný dopyt - Prázdne + Označiť + Vymazať Max. výsledkov - Ignorovať klávesové skraty v režime na celú obrazovku + Ignorovať klávesové skratky v režime na celú obrazovku Priečinok s Pythonom Automatická aktualizácia Vybrať Schovať Flow Launcher po spustení - Schovať ikonu v oblasti oznámení + Schovať ikonu z oblasti oznámení + Presnosť vyhľadávania + Použiť Pinyin Plugin Nájsť ďalšie pluginy Zakázať Skratka akcie - Priečinok s pluginmy + Aktuálna akcia skratky: + Nová akcia skratky: + Priečinok s pluginmi Autor - Čas inic.: - Čas dopytu: + Príprava: {0}ms + Čas dopytu: {0}ms Motív Prehliadať viac motívov - Písmo poľa pre dopyt + Ahojte + Písmo vyhľadávacieho poľa Písmo výsledkov Režim okno Nepriehľadnosť + Motív {0} neexistuje, návrat na predvolený motív + Nepodarilo sa nečítať motív {0}, návrat na predvolený motív - Klávesová skratka + Klávesové skratky Klávesová skratka pre Flow Launcher - Otvorte modifikátory výsledkov - Vlastná klávesová skratka pre dopyt + Modifikáčné klávesy na otvorenie výsledkov Zobraziť klávesovú skratku + Vlastná klávesová skratka na vyhľadávanie Odstrániť Upraviť Pridať Vyberte položku, prosím Ste si istý, že chcete odstrániť klávesovú skratku {0} pre plugin? + Tieňový efekt v poli vyhľadávania + Tieňový efekt významne využíva GPU. + Neodporúča sa, ak je výkon počítača obmedzený. HTTP Proxy Povoliť HTTP Proxy HTTP Server Port - Používateľské meno + Použív. meno Heslo Test Proxy Uložiť @@ -86,13 +96,13 @@ Verzia Flow Launcher bol aktivovaný {0}-krát Skontrolovať aktualizácie - Je dostupná nová verzia {0}, prosím, reštartujte Flow Launcher. + Je dostupná nová verzia {0}, chcete reštartovať Flow Launcher, aby sa mohol aktualizovať? Kontrola aktualizácií zlyhala, prosím, skontrolujte pripojenie na internet a nastavenie proxy k api.github.com. Sťahovanie aktualizácií zlyhalo, skontrolujte pripojenie na internet a nastavenie proxy k github-cloud.s3.amazonaws.com, - alebo prejdite na https://github.com/Flow-Launcher/Flow.Launcher/releases pre manuálne stiahnutie aktualizácií. + alebo prejdite na https://github.com/Flow-Launcher/Flow.Launcher/releases pre manuálne stiahnutie aktualizácie. - Poznámky k vydaniu: + Poznámky k vydaniu Stará skratka akcie @@ -131,7 +141,7 @@ Flow Launcher zaznamenal chybu - Je dostupné nové vydanie Flow Launcher {0} + Je dostupná nová verzia Flow Launcher {0} Počas inštalácie aktualizácií došlo k chybe Aktualizovať Zrušiť diff --git a/Flow.Launcher/MainWindow.xaml b/Flow.Launcher/MainWindow.xaml index 23ca5b677..07bb96339 100644 --- a/Flow.Launcher/MainWindow.xaml +++ b/Flow.Launcher/MainWindow.xaml @@ -22,7 +22,6 @@ Loaded="OnLoaded" Initialized="OnInitialized" Closing="OnClosing" - Drop="OnDrop" LocationChanged="OnLocationChanged" Deactivated="OnDeactivated" PreviewKeyDown="OnKeyDown" @@ -64,8 +63,7 @@ diff --git a/Flow.Launcher/MainWindow.xaml.cs b/Flow.Launcher/MainWindow.xaml.cs index 2c0beaaab..3812b4e1f 100644 --- a/Flow.Launcher/MainWindow.xaml.cs +++ b/Flow.Launcher/MainWindow.xaml.cs @@ -52,12 +52,14 @@ namespace Flow.Launcher private void OnInitialized(object sender, EventArgs e) { - // show notify icon when flowlauncher is hided - InitializeNotifyIcon(); + } private void OnLoaded(object sender, RoutedEventArgs _) { + // show notify icon when flowlauncher is hidden + InitializeNotifyIcon(); + // todo is there a way to set blur only once? ThemeManager.Instance.SetBlurForWindow(); WindowsInteropHelper.DisableControlBox(this); @@ -87,11 +89,17 @@ namespace Flow.Launcher }; _settings.PropertyChanged += (o, e) => { - if (e.PropertyName == nameof(Settings.HideNotifyIcon)) + switch (e.PropertyName) { - _notifyIcon.Visible = !_settings.HideNotifyIcon; + case nameof(Settings.HideNotifyIcon): + _notifyIcon.Visible = !_settings.HideNotifyIcon; + break; + case nameof(Settings.Language): + UpdateNotifyIconText(); + break; } }; + InitializePosition(); } @@ -103,6 +111,18 @@ namespace Flow.Launcher _settings.WindowLeft = Left; } + private void UpdateNotifyIconText() + { + var menu = _notifyIcon.ContextMenuStrip; + var open = menu.Items[0]; + var setting = menu.Items[1]; + var exit = menu.Items[2]; + + open.Text = InternationalizationManager.Instance.GetTranslation("iconTrayOpen"); + setting.Text = InternationalizationManager.Instance.GetTranslation("iconTraySettings"); + exit.Text = InternationalizationManager.Instance.GetTranslation("iconTrayExit"); + } + private void InitializeNotifyIcon() { _notifyIcon = new NotifyIcon @@ -179,25 +199,6 @@ namespace Flow.Launcher } } - - private void OnDrop(object sender, DragEventArgs e) - { - if (e.Data.GetDataPresent(DataFormats.FileDrop)) - { - // Note that you can have more than one file. - string[] files = (string[])e.Data.GetData(DataFormats.FileDrop); - if (files[0].ToLower().EndsWith(".flowlauncher")) - { - PluginManager.InstallPlugin(files[0]); - } - else - { - MessageBox.Show(InternationalizationManager.Instance.GetTranslation("invalidFlowLauncherPluginFileFormat")); - } - } - e.Handled = false; - } - private void OnPreviewDragOver(object sender, DragEventArgs e) { e.Handled = true; @@ -294,7 +295,5 @@ namespace Flow.Launcher _viewModel.QueryTextCursorMovedToEnd = false; } } - - } } \ No newline at end of file diff --git a/Flow.Launcher/PublicAPIInstance.cs b/Flow.Launcher/PublicAPIInstance.cs index 530e6443c..90d4fff63 100644 --- a/Flow.Launcher/PublicAPIInstance.cs +++ b/Flow.Launcher/PublicAPIInstance.cs @@ -21,11 +21,11 @@ namespace Flow.Launcher { private readonly SettingWindowViewModel _settingsVM; private readonly MainViewModel _mainVM; - private readonly Alphabet _alphabet; + private readonly PinyinAlphabet _alphabet; #region Constructor - public PublicAPIInstance(SettingWindowViewModel settingsVM, MainViewModel mainVM, Alphabet alphabet) + public PublicAPIInstance(SettingWindowViewModel settingsVM, MainViewModel mainVM, PinyinAlphabet alphabet) { _settingsVM = settingsVM; _mainVM = mainVM; @@ -48,12 +48,6 @@ namespace Flow.Launcher _mainVM.ChangeQueryText(query); } - [Obsolete] - public void CloseApp() - { - Application.Current.MainWindow.Close(); - } - public void RestartApp() { _mainVM.MainWindowVisibility = Visibility.Hidden; @@ -82,7 +76,6 @@ namespace Flow.Launcher _settingsVM.Save(); PluginManager.Save(); ImageLoader.Save(); - _alphabet.Save(); } public void ReloadAllPluginData() @@ -90,18 +83,6 @@ namespace Flow.Launcher PluginManager.ReloadData(); } - [Obsolete] - public void HideApp() - { - _mainVM.MainWindowVisibility = Visibility.Hidden; - } - - [Obsolete] - public void ShowApp() - { - _mainVM.MainWindowVisibility = Visibility.Visible; - } - public void ShowMsg(string title, string subTitle = "", string iconPath = "") { ShowMsg(title, subTitle, iconPath, true); @@ -134,11 +115,6 @@ namespace Flow.Launcher _mainVM.ProgressBarVisibility = Visibility.Collapsed; } - public void InstallPlugin(string path) - { - Application.Current.Dispatcher.Invoke(() => PluginManager.InstallPlugin(path)); - } - public string GetTranslation(string key) { return InternationalizationManager.Instance.GetTranslation(key); @@ -151,21 +127,6 @@ namespace Flow.Launcher public event FlowLauncherGlobalKeyboardEventHandler GlobalKeyboardEvent; - [Obsolete("This will be removed in Flow Launcher 1.3")] - public void PushResults(Query query, PluginMetadata plugin, List results) - { - results.ForEach(o => - { - o.PluginDirectory = plugin.PluginDirectory; - o.PluginID = plugin.ID; - o.OriginQuery = query; - }); - Task.Run(() => - { - _mainVM.UpdateResultView(results, plugin, query); - }); - } - #endregion #region Private Methods diff --git a/Flow.Launcher/ReportWindow.xaml.cs b/Flow.Launcher/ReportWindow.xaml.cs index b4e0414ab..7318fe4cd 100644 --- a/Flow.Launcher/ReportWindow.xaml.cs +++ b/Flow.Launcher/ReportWindow.xaml.cs @@ -52,8 +52,8 @@ namespace Flow.Launcher var link = new Hyperlink { IsEnabled = true }; link.Inlines.Add(url); link.NavigateUri = new Uri(url); - link.RequestNavigate += (s, e) => SearchWeb.NewBrowserWindow(e.Uri.ToString()); - link.Click += (s, e) => SearchWeb.NewBrowserWindow(url); + link.RequestNavigate += (s, e) => SearchWeb.NewTabInBrowser(e.Uri.ToString()); + link.Click += (s, e) => SearchWeb.NewTabInBrowser(url); paragraph.Inlines.Add(textBeforeUrl); paragraph.Inlines.Add(link); diff --git a/Flow.Launcher/Resources/app.ico b/Flow.Launcher/Resources/app.ico index 362c8747f..36b1d22d0 100644 Binary files a/Flow.Launcher/Resources/app.ico and b/Flow.Launcher/Resources/app.ico differ diff --git a/Flow.Launcher/ResultListBox.xaml b/Flow.Launcher/ResultListBox.xaml index a8560c263..072196605 100644 --- a/Flow.Launcher/ResultListBox.xaml +++ b/Flow.Launcher/ResultListBox.xaml @@ -42,7 +42,7 @@ + Source="{Binding Image.Value}" /> @@ -62,7 +62,7 @@ @@ -71,7 +71,7 @@ - diff --git a/Flow.Launcher/SettingWindow.xaml b/Flow.Launcher/SettingWindow.xaml index acd992b6c..32f9e9a6e 100644 --- a/Flow.Launcher/SettingWindow.xaml +++ b/Flow.Launcher/SettingWindow.xaml @@ -172,7 +172,7 @@ - + @@ -211,10 +211,10 @@ + + - @@ -248,12 +248,13 @@ - - - + + diff --git a/Flow.Launcher/SettingWindow.xaml.cs b/Flow.Launcher/SettingWindow.xaml.cs index eb5fd7de0..e5583da33 100644 --- a/Flow.Launcher/SettingWindow.xaml.cs +++ b/Flow.Launcher/SettingWindow.xaml.cs @@ -8,6 +8,7 @@ using NHotkey; using NHotkey.Wpf; using Flow.Launcher.Core.Plugin; using Flow.Launcher.Core.Resource; +using Flow.Launcher.Infrastructure; using Flow.Launcher.Infrastructure.Hotkey; using Flow.Launcher.Infrastructure.UserSettings; using Flow.Launcher.Plugin; @@ -228,7 +229,7 @@ namespace Flow.Launcher var uri = new Uri(website); if (Uri.CheckSchemeName(uri.Scheme)) { - SearchWeb.NewBrowserWindow(website); + SearchWeb.NewTabInBrowser(website); } } } @@ -262,7 +263,7 @@ namespace Flow.Launcher private void OnRequestNavigate(object sender, RequestNavigateEventArgs e) { - SearchWeb.NewBrowserWindow(e.Uri.AbsoluteUri); + SearchWeb.NewTabInBrowser(e.Uri.AbsoluteUri); e.Handled = true; } @@ -275,5 +276,10 @@ namespace Flow.Launcher { Close(); } + + private void OpenPluginFolder(object sender, RoutedEventArgs e) + { + FilesFolders.OpenPath(Path.Combine(DataLocation.DataDirectory(), Constant.Themes)); + } } } diff --git a/Flow.Launcher/Themes/Base.xaml b/Flow.Launcher/Themes/Base.xaml index d8aed73ab..eb2af490a 100644 --- a/Flow.Launcher/Themes/Base.xaml +++ b/Flow.Launcher/Themes/Base.xaml @@ -1,6 +1,8 @@  + + + + + + #4F6180 \ No newline at end of file + + + + + + + + + + + + + #4F6180 + + + + - + + diff --git a/Flow.Launcher/Themes/Gray.xaml b/Flow.Launcher/Themes/Gray.xaml index e52d4201b..16a1db274 100644 --- a/Flow.Launcher/Themes/Gray.xaml +++ b/Flow.Launcher/Themes/Gray.xaml @@ -8,6 +8,13 @@ + + + + + + + + + diff --git a/Flow.Launcher/Themes/Pink.xaml b/Flow.Launcher/Themes/Pink.xaml index 93f2dee6e..d3130584b 100644 --- a/Flow.Launcher/Themes/Pink.xaml +++ b/Flow.Launcher/Themes/Pink.xaml @@ -6,6 +6,12 @@ + + + diff --git a/Flow.Launcher/ViewModel/MainViewModel.cs b/Flow.Launcher/ViewModel/MainViewModel.cs index f18b74022..7a3aa9f2f 100644 --- a/Flow.Launcher/ViewModel/MainViewModel.cs +++ b/Flow.Launcher/ViewModel/MainViewModel.cs @@ -136,7 +136,7 @@ namespace Flow.Launcher.ViewModel StartHelpCommand = new RelayCommand(_ => { - SearchWeb.NewBrowserWindow("https://github.com/Flow-Launcher/Flow.Launcher/wiki/Flow-Launcher/"); + SearchWeb.NewTabInBrowser("https://github.com/Flow-Launcher/Flow.Launcher/wiki/Flow-Launcher/"); }); OpenResultCommand = new RelayCommand(index => diff --git a/Flow.Launcher/ViewModel/ResultViewModel.cs b/Flow.Launcher/ViewModel/ResultViewModel.cs index 0a9731f18..00a0e1ae5 100644 --- a/Flow.Launcher/ViewModel/ResultViewModel.cs +++ b/Flow.Launcher/ViewModel/ResultViewModel.cs @@ -1,23 +1,66 @@ using System; +using System.Threading.Tasks; using System.Windows; using System.Windows.Media; -using System.Windows.Threading; using Flow.Launcher.Infrastructure; using Flow.Launcher.Infrastructure.Image; using Flow.Launcher.Infrastructure.Logger; using Flow.Launcher.Infrastructure.UserSettings; using Flow.Launcher.Plugin; - namespace Flow.Launcher.ViewModel { public class ResultViewModel : BaseModel { + public class LazyAsync : Lazy> + { + private T defaultValue; + + private readonly Action _updateCallback; + public new T Value + { + get + { + if (!IsValueCreated) + { + base.Value.ContinueWith(_ => + { + _updateCallback(); + }); + + return defaultValue; + } + + if (!base.Value.IsCompleted || base.Value.IsFaulted) + return defaultValue; + + return base.Value.Result; + } + } + public LazyAsync(Func> factory, T defaultValue, Action updateCallback) : base(factory) + { + if (defaultValue != null) + { + this.defaultValue = defaultValue; + } + + _updateCallback = updateCallback; + } + } + public ResultViewModel(Result result, Settings settings) { if (result != null) { Result = result; + + Image = new LazyAsync( + SetImage, + ImageLoader.DefaultImage, + () => + { + OnPropertyChanged(nameof(Image)); + }); } Settings = settings; @@ -25,31 +68,45 @@ namespace Flow.Launcher.ViewModel public Settings Settings { get; private set; } - public Visibility ShowOpenResultHotkey => Settings.ShowOpenResultHotkey ? Visibility.Visible : Visibility.Hidden; + public Visibility ShowOpenResultHotkey => Settings.ShowOpenResultHotkey ? Visibility.Visible : Visibility.Hidden; public string OpenResultModifiers => Settings.OpenResultModifiers; - public ImageSource Image + public string ShowTitleToolTip => string.IsNullOrEmpty(Result.TitleToolTip) + ? Result.Title + : Result.TitleToolTip; + + public string ShowSubTitleToolTip => string.IsNullOrEmpty(Result.SubTitleToolTip) + ? Result.SubTitle + : Result.SubTitleToolTip; + + public LazyAsync Image { get; set; } + + private async Task SetImage() { - get + var imagePath = Result.IcoPath; + if (string.IsNullOrEmpty(imagePath) && Result.Icon != null) { - var imagePath = Result.IcoPath; - if (string.IsNullOrEmpty(imagePath) && Result.Icon != null) + try { - try - { - return Result.Icon(); - } - catch (Exception e) - { - Log.Exception($"|ResultViewModel.Image|IcoPath is empty and exception when calling Icon() for result <{Result.Title}> of plugin <{Result.PluginDirectory}>", e); - imagePath = Constant.ErrorIcon; - } + return Result.Icon(); } - + catch (Exception e) + { + Log.Exception($"|ResultViewModel.Image|IcoPath is empty and exception when calling Icon() for result <{Result.Title}> of plugin <{Result.PluginDirectory}>", e); + imagePath = Constant.MissingImgIcon; + } + } + + if (ImageLoader.CacheContainImage(imagePath)) + { // will get here either when icoPath has value\icon delegate is null\when had exception in delegate return ImageLoader.Load(imagePath); } + else + { + return await Task.Run(() => ImageLoader.Load(imagePath)); + } } public Result Result { get; } @@ -76,6 +133,5 @@ namespace Flow.Launcher.ViewModel { return Result.ToString(); } - } } diff --git a/Flow.Launcher/ViewModel/SettingWindowViewModel.cs b/Flow.Launcher/ViewModel/SettingWindowViewModel.cs index 634c05d37..853925852 100644 --- a/Flow.Launcher/ViewModel/SettingWindowViewModel.cs +++ b/Flow.Launcher/ViewModel/SettingWindowViewModel.cs @@ -45,7 +45,7 @@ namespace Flow.Launcher.ViewModel public async void UpdateApp() { - await _updater.UpdateApp(false); + await _updater.UpdateApp(App.API, false); } public bool AutoUpdates @@ -319,36 +319,30 @@ namespace Flow.Launcher.ViewModel { new Result { - Title = "WoX is a launcher for Windows that simply works.", - SubTitle = "You can call it Windows omni-eXecutor if you want a long name." + Title = "Explorer", + SubTitle = "Search for files, folders and file contents", + IcoPath = Path.Combine(Constant.ProgramDirectory, @"Plugins\Flow.Launcher.Plugin.Explorer\Images\explorer.png") }, new Result { - Title = "Search for everything—applications, folders, files and more.", - SubTitle = "Use pinyin to search for programs. (yyy / wangyiyun → 网易云音乐)" + Title = "WebSearch", + SubTitle = "Search the web with different search engine support", + IcoPath =Path.Combine(Constant.ProgramDirectory, @"Plugins\Flow.Launcher.Plugin.WebSearch\Images\web_search.png") }, new Result { - Title = "Keyword plugin search.", - SubTitle = "search google with g search_term." + Title = "Program", + SubTitle = "Launch programs as admin or a different user", + IcoPath =Path.Combine(Constant.ProgramDirectory, @"Plugins\Flow.Launcher.Plugin.Program\Images\program.png") }, new Result { - Title = "Build custom themes at: ", - SubTitle = Theme - }, - new Result - { - Title = "Install plugins from: ", - SubTitle = Plugin - }, - new Result - { - Title = $"Open Source: {_updater.GitHubRepository}", - SubTitle = "Please star it!" + Title = "ProcessKiller", + SubTitle = "Terminate unwanted processes", + IcoPath =Path.Combine(Constant.ProgramDirectory, @"Plugins\Flow.Launcher.Plugin.ProcessKiller\Images\app.png") } }; - var vm = new ResultsViewModel(); + var vm = new ResultsViewModel(Settings); vm.AddResults(results, "PREVIEW"); return vm; } diff --git a/Flow.Launcher/app.png b/Flow.Launcher/app.png index 5b75521c8..bc5701ac8 100644 Binary files a/Flow.Launcher/app.png and b/Flow.Launcher/app.png differ diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md deleted file mode 100644 index 8575ec9b6..000000000 --- a/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,102 +0,0 @@ - - -### Are you submitting a bug report? - -(write your answer here) - - - - - -### Steps to reproduce - - - -1. -2. -3. - -### Flow Launcher Error Window text - - -(paste here) - - -### Detailed logs - - -(drop your log file here) - -### Screenshots (optional) - - -(drop your screenshot here) - diff --git a/JsonRPC/wox.py b/JsonRPC/wox.py deleted file mode 100644 index 1beaa1d7e..000000000 --- a/JsonRPC/wox.py +++ /dev/null @@ -1,115 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import print_function -import json -import sys -import inspect - -class FlowLauncher(object): - """ - Flow.Launcher python plugin base - """ - - def __init__(self): - rpc_request = json.loads(sys.argv[1]) - # proxy is not working now - self.proxy = rpc_request.get("proxy",{}) - request_method_name = rpc_request.get("method") - request_parameters = rpc_request.get("parameters") - methods = inspect.getmembers(self, predicate=inspect.ismethod) - - request_method = dict(methods)[request_method_name] - results = request_method(*request_parameters) - - if request_method_name == "query" or request_method_name == "context_menu": - print(json.dumps({"result": results})) - - def query(self,query): - """ - sub class need to override this method - """ - return [] - - def context_menu(self, data): - """ - optional context menu entries for a result - """ - return [] - - def debug(self,msg): - """ - alert msg - """ - print("DEBUG:{}".format(msg)) - sys.exit() - -class FlowLauncherAPI(object): - - @classmethod - def change_query(cls,query,requery = False): - """ - change flowlauncher query - """ - print(json.dumps({"method": "Flow.Launcher.ChangeQuery","parameters":[query,requery]})) - - @classmethod - def shell_run(cls,cmd): - """ - run shell commands - """ - print(json.dumps({"method": "Flow.Launcher.ShellRun","parameters":[cmd]})) - - @classmethod - def close_app(cls): - """ - close flowlauncher - """ - print(json.dumps({"method": "Flow.Launcher.CloseApp","parameters":[]})) - - @classmethod - def hide_app(cls): - """ - hide flowlauncher - """ - print(json.dumps({"method": "Flow.Launcher.HideApp","parameters":[]})) - - @classmethod - def show_app(cls): - """ - show flowlauncher - """ - print(json.dumps({"method": "Flow.Launcher.ShowApp","parameters":[]})) - - @classmethod - def show_msg(cls,title,sub_title,ico_path=""): - """ - show messagebox - """ - print(json.dumps({"method": "Flow.Launcher.ShowMsg","parameters":[title,sub_title,ico_path]})) - - @classmethod - def open_setting_dialog(cls): - """ - open setting dialog - """ - print(json.dumps({"method": "Flow.Launcher.OpenSettingDialog","parameters":[]})) - - @classmethod - def start_loadingbar(cls): - """ - start loading animation in flowlauncher - """ - print(json.dumps({"method": "Flow.Launcher.StartLoadingBar","parameters":[]})) - - @classmethod - def stop_loadingbar(cls): - """ - stop loading animation in flowlauncher - """ - print(json.dumps({"method": "Flow.Launcher.StopLoadingBar","parameters":[]})) - - @classmethod - def reload_plugins(cls): - """ - reload all flowlauncher plugins - """ - print(json.dumps({"method": "Flow.Launcher.ReloadPlugins","parameters":[]})) diff --git a/LICENSE b/LICENSE index cb4b563c0..8be14c31d 100644 --- a/LICENSE +++ b/LICENSE @@ -1,5 +1,6 @@ The MIT License (MIT) +Copyright (c) 2019 Flow-Launcher Copyright (c) 2015 Wox Permission is hereby granted, free of charge, to any person obtaining a copy of diff --git a/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Bookmark.cs b/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Bookmark.cs index 1149042dd..790c03686 100644 --- a/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Bookmark.cs +++ b/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Bookmark.cs @@ -19,10 +19,8 @@ namespace Flow.Launcher.Plugin.BrowserBookmark set { m_Name = value; - PinyinName = m_Name.Unidecode(); } } - public string PinyinName { get; private set; } public string Url { get; set; } public string Source { get; set; } public int Score { get; set; } diff --git a/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Commands/Bookmarks.cs b/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Commands/Bookmarks.cs index fab372834..c7013aa67 100644 --- a/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Commands/Bookmarks.cs +++ b/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Commands/Bookmarks.cs @@ -6,21 +6,22 @@ namespace Flow.Launcher.Plugin.BrowserBookmark.Commands { internal static class Bookmarks { - internal static bool MatchProgram(Bookmark bookmark, string queryString) + internal static MatchResult MatchProgram(Bookmark bookmark, string queryString) { - if (StringMatcher.FuzzySearch(queryString, bookmark.Name).IsSearchPrecisionScoreMet()) return true; - if (StringMatcher.FuzzySearch(queryString, bookmark.PinyinName).IsSearchPrecisionScoreMet()) return true; - if (StringMatcher.FuzzySearch(queryString, bookmark.Url).IsSearchPrecisionScoreMet()) return true; + var match = StringMatcher.FuzzySearch(queryString, bookmark.Name); + if (match.IsSearchPrecisionScoreMet()) + return match; - return false; + return StringMatcher.FuzzySearch(queryString, bookmark.Url); } internal static List LoadAllBookmarks() { var allbookmarks = new List(); - + var chromeBookmarks = new ChromeBookmarks(); var mozBookmarks = new FirefoxBookmarks(); + var edgeBookmarks = new EdgeBookmarks(); //TODO: Let the user select which browser's bookmarks are displayed // Add Firefox bookmarks @@ -29,6 +30,9 @@ namespace Flow.Launcher.Plugin.BrowserBookmark.Commands // Add Chrome bookmarks chromeBookmarks.GetBookmarks().ForEach(x => allbookmarks.Add(x)); + // Add Edge (Chromium) bookmarks + edgeBookmarks.GetBookmarks().ForEach(x => allbookmarks.Add(x)); + return allbookmarks.Distinct().ToList(); } } diff --git a/Plugins/Flow.Launcher.Plugin.BrowserBookmark/EdgeBookmarks.cs b/Plugins/Flow.Launcher.Plugin.BrowserBookmark/EdgeBookmarks.cs new file mode 100644 index 000000000..376808549 --- /dev/null +++ b/Plugins/Flow.Launcher.Plugin.BrowserBookmark/EdgeBookmarks.cs @@ -0,0 +1,87 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text.RegularExpressions; + +namespace Flow.Launcher.Plugin.BrowserBookmark +{ + public class EdgeBookmarks + { + private List bookmarks = new List(); + + public List GetBookmarks() + { + bookmarks.Clear(); + LoadEdgeBookmarks(); + + return bookmarks; + } + + private void ParseEdgeBookmarks(string path, string source) + { + if (!File.Exists(path)) return; + + string all = File.ReadAllText(path); + Regex nameRegex = new Regex("\"name\": \"(?.*?)\""); + MatchCollection nameCollection = nameRegex.Matches(all); + Regex typeRegex = new Regex("\"type\": \"(?.*?)\""); + MatchCollection typeCollection = typeRegex.Matches(all); + Regex urlRegex = new Regex("\"url\": \"(?.*?)\""); + MatchCollection urlCollection = urlRegex.Matches(all); + + List names = (from Match match in nameCollection select match.Groups["name"].Value).ToList(); + List types = (from Match match in typeCollection select match.Groups["type"].Value).ToList(); + List urls = (from Match match in urlCollection select match.Groups["url"].Value).ToList(); + + int urlIndex = 0; + for (int i = 0; i < names.Count; i++) + { + string name = DecodeUnicode(names[i]); + string type = types[i]; + if (type == "url") + { + string url = urls[urlIndex]; + urlIndex++; + + if (url == null) continue; + if (url.StartsWith("javascript:", StringComparison.OrdinalIgnoreCase)) continue; + if (url.StartsWith("vbscript:", StringComparison.OrdinalIgnoreCase)) continue; + + bookmarks.Add(new Bookmark() + { + Name = name, + Url = url, + Source = source + }); + } + } + } + + private void LoadEdgeBookmarks(string path, string name) + { + if (!Directory.Exists(path)) return; + var paths = Directory.GetDirectories(path); + + foreach (var profile in paths) + { + if (File.Exists(Path.Combine(profile, "Bookmarks"))) + ParseEdgeBookmarks(Path.Combine(profile, "Bookmarks"), name + (Path.GetFileName(profile) == "Default" ? "" : (" (" + Path.GetFileName(profile) + ")"))); + } + } + + private void LoadEdgeBookmarks() + { + string platformPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); + LoadEdgeBookmarks(Path.Combine(platformPath, @"Microsoft\Edge\User Data"), "Microsoft Edge"); + LoadEdgeBookmarks(Path.Combine(platformPath, @"Microsoft\Edge Dev\User Data"), "Microsoft Edge Dev"); + LoadEdgeBookmarks(Path.Combine(platformPath, @"Microsoft\Edge SxS\User Data"), "Microsoft Edge Canary"); + } + + private string DecodeUnicode(string dataStr) + { + Regex reg = new Regex(@"(?i)\\[uU]([0-9a-f]{4})"); + return reg.Replace(dataStr, m => ((char)Convert.ToInt32(m.Groups[1].Value, 16)).ToString()); + } + } +} \ No newline at end of file diff --git a/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Flow.Launcher.Plugin.BrowserBookmark.csproj b/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Flow.Launcher.Plugin.BrowserBookmark.csproj index 13daddf10..85b745a6b 100644 --- a/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Flow.Launcher.Plugin.BrowserBookmark.csproj +++ b/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Flow.Launcher.Plugin.BrowserBookmark.csproj @@ -1,11 +1,13 @@  + Library netcoreapp3.1 {9B130CC5-14FB-41FF-B310-0A95B6894C37} Properties Flow.Launcher.Plugin.BrowserBookmark Flow.Launcher.Plugin.BrowserBookmark + true false false diff --git a/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Languages/sk.xaml b/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Languages/sk.xaml new file mode 100644 index 000000000..825fa7737 --- /dev/null +++ b/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Languages/sk.xaml @@ -0,0 +1,15 @@ + + + + Prehliadač záložiek + Vyhľadáva záložky prehliadača + + + Otvoriť záložky v: + Nové okno + Nová karta + Nastaviť cestu k prehliadaču: + Prehliadať + \ No newline at end of file diff --git a/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Main.cs b/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Main.cs index 5d74ed4ad..47493654f 100644 --- a/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Main.cs +++ b/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Main.cs @@ -12,7 +12,7 @@ namespace Flow.Launcher.Plugin.BrowserBookmark public class Main : ISettingProvider, IPlugin, IReloadable, IPluginI18n, ISavable { private PluginInitContext context; - + private List cachedBookmarks = new List(); private readonly Settings _settings; @@ -33,40 +33,60 @@ namespace Flow.Launcher.Plugin.BrowserBookmark public List Query(Query query) { - string param = query.GetAllRemainingParameter().TrimStart(); + string param = query.Search.TrimStart(); // Should top results be returned? (true if no search parameters have been passed) var topResults = string.IsNullOrEmpty(param); - - var returnList = cachedBookmarks; + if (!topResults) { // Since we mixed chrome and firefox bookmarks, we should order them again - returnList = cachedBookmarks.Where(o => Bookmarks.MatchProgram(o, param)).ToList(); - returnList = returnList.OrderByDescending(o => o.Score).ToList(); - } - - return returnList.Select(c => new Result() - { - Title = c.Name, - SubTitle = c.Url, - IcoPath = @"Images\bookmark.png", - Score = 5, - Action = (e) => + var returnList = cachedBookmarks.Select(c => new Result() { - if (_settings.OpenInNewBrowserWindow) + Title = c.Name, + SubTitle = c.Url, + IcoPath = @"Images\bookmark.png", + Score = Bookmarks.MatchProgram(c, param).Score, + Action = _ => { - c.Url.NewBrowserWindow(_settings.BrowserPath); - } - else - { - c.Url.NewTabInBrowser(_settings.BrowserPath); - } + if (_settings.OpenInNewBrowserWindow) + { + c.Url.NewBrowserWindow(_settings.BrowserPath); + } + else + { + c.Url.NewTabInBrowser(_settings.BrowserPath); + } - return true; - } - }).ToList(); + return true; + } + }).Where(r => r.Score > 0); + return returnList.ToList(); + } + else + { + return cachedBookmarks.Select(c => new Result() + { + Title = c.Name, + SubTitle = c.Url, + IcoPath = @"Images\bookmark.png", + Score = 5, + Action = _ => + { + if (_settings.OpenInNewBrowserWindow) + { + c.Url.NewBrowserWindow(_settings.BrowserPath); + } + else + { + c.Url.NewTabInBrowser(_settings.BrowserPath); + } + + return true; + } + }).ToList(); + } } public void ReloadData() diff --git a/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Views/SettingsControl.xaml b/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Views/SettingsControl.xaml index 0aea8f04e..8457f52f7 100644 --- a/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Views/SettingsControl.xaml +++ b/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Views/SettingsControl.xaml @@ -31,7 +31,7 @@