From cddb029c34356b41008bb6d21e7f28f5e629bb7e Mon Sep 17 00:00:00 2001 From: gspikehalo <2318002579@qq.com> Date: Tue, 1 Oct 2024 23:32:41 -0700 Subject: [PATCH 01/44] Add clone & edit button on detail page --- .../detail/hub-workflow-detail.component.html | 15 ++++++++++++++- .../detail/hub-workflow-detail.component.scss | 17 +++++++++++++++++ .../detail/hub-workflow-detail.component.ts | 19 +++++++++++++++++++ .../service/workflow/hub-workflow.service.ts | 6 ++++++ 4 files changed, 56 insertions(+), 1 deletion(-) diff --git a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html index 36258b6210b..6ca1b07fe6a 100644 --- a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html +++ b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html @@ -12,7 +12,20 @@
-

Workflow Detail Page

+
+
+

Workflow Detail Page

+
+
+ +
+
+

ID

diff --git a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.scss b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.scss index fc50182c694..89e8bcc5b75 100644 --- a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.scss +++ b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.scss @@ -72,3 +72,20 @@ texera-mini-map { left: 20px; top: 20px; } + +.header-info { + display: flex; + align-items: center; + justify-content: space-between; + padding: 10px 0; +} + +.clone-button { + background-color: black; + color: white; + border-radius: 15px; + padding: 5px 10px; + cursor: pointer; + border: none; + box-shadow: none; +} diff --git a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.ts b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.ts index c6f6d6b6d31..1c5252a4d79 100644 --- a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.ts +++ b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.ts @@ -39,6 +39,9 @@ export class HubWorkflowDetailComponent implements AfterViewInit, OnDestroy, OnI workflowName: string = ""; ownerName: string = ""; workflowDescription: string = ""; + clonedWorklowId: number | undefined; + isLogin = this.userService.isLogin(); + workflow = { steps: [ { @@ -88,6 +91,12 @@ export class HubWorkflowDetailComponent implements AfterViewInit, OnDestroy, OnI if (!this.wid) { this.wid = this.route.snapshot.params.id; } + this.userService + .userChanged() + .pipe(untilDestroyed(this)) + .subscribe(() => { + this.isLogin = this.userService.isLogin(); + }); this.currentUser = this.userService.getCurrentUser(); } @@ -225,4 +234,14 @@ export class HubWorkflowDetailComponent implements AfterViewInit, OnDestroy, OnI goBack(): void { this.location.back(); } + + cloneWorkflow(): void { + this.hubWorkflowService + .cloneWorkflow(Number(this.wid)) + .pipe(untilDestroyed(this)) + .subscribe(newWid => { + this.clonedWorklowId = newWid; + this.router.navigate([`/workflow/${this.clonedWorklowId}`]); + }); + } } diff --git a/core/gui/src/app/hub/service/workflow/hub-workflow.service.ts b/core/gui/src/app/hub/service/workflow/hub-workflow.service.ts index 03b15fa80de..903b7bd2bfe 100644 --- a/core/gui/src/app/hub/service/workflow/hub-workflow.service.ts +++ b/core/gui/src/app/hub/service/workflow/hub-workflow.service.ts @@ -8,6 +8,8 @@ import { Workflow } from "../../../common/type/workflow"; import { filter, map } from "rxjs/operators"; import { WorkflowUtilService } from "../../../workspace/service/workflow-graph/util/workflow-util.service"; +export const WORKFLOW_BASE_URL = `${AppSettings.getApiEndpoint()}/workflow`; + @Injectable({ providedIn: "root", }) @@ -45,4 +47,8 @@ export class HubWorkflowService { const params = new HttpParams().set("wid", wid); return this.http.get(`${this.BASE_URL}/workflow_description/`, { params, responseType: "text" }); } + + public cloneWorkflow(wid: number): Observable { + return this.http.post(`${WORKFLOW_BASE_URL}/clone/${wid}`, null); + } } From f440ec1b2a624b815353a55d17573d3a563d7fb1 Mon Sep 17 00:00:00 2001 From: gspikehalo <2318002579@qq.com> Date: Fri, 4 Oct 2024 13:23:19 -0700 Subject: [PATCH 02/44] Modify the clone button style --- .../detail/hub-workflow-detail.component.html | 2 +- .../detail/hub-workflow-detail.component.scss | 27 ++++++++++++++++--- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html index 6ca1b07fe6a..4bcf61bdbaa 100644 --- a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html +++ b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html @@ -21,7 +21,7 @@

Workflow Detail Page

*ngIf="isHub && isLogin" (click)="cloneWorkflow()" class="clone-button"> - Copy & Edit +
diff --git a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.scss b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.scss index 89e8bcc5b75..de72e057a95 100644 --- a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.scss +++ b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.scss @@ -81,11 +81,30 @@ texera-mini-map { } .clone-button { - background-color: black; - color: white; - border-radius: 15px; - padding: 5px 10px; + background-color: white; + color: black; + width: 38px; + height: 38px; + border-radius: 0; + padding: 0; cursor: pointer; border: none; box-shadow: none; + display: flex; + align-items: center; + justify-content: center; + margin-right: 10px; + margin-bottom: 10px; + transition: background-color 0.3s ease; +} + +.clone-button:hover { + background-color: #e0e0e0; +} + +.clone-button i { + font-size: 20px; } + + + From e84ee162efd4c401c8d2eb67586e24a5c0279b27 Mon Sep 17 00:00:00 2001 From: gspikehalo <2318002579@qq.com> Date: Fri, 4 Oct 2024 13:31:59 -0700 Subject: [PATCH 03/44] fmt fix --- .../workflow/detail/hub-workflow-detail.component.html | 5 ++++- .../workflow/detail/hub-workflow-detail.component.scss | 3 --- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html index 4bcf61bdbaa..a61019990eb 100644 --- a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html +++ b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html @@ -21,7 +21,10 @@

Workflow Detail Page

*ngIf="isHub && isLogin" (click)="cloneWorkflow()" class="clone-button"> - +
diff --git a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.scss b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.scss index de72e057a95..81f3443660c 100644 --- a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.scss +++ b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.scss @@ -105,6 +105,3 @@ texera-mini-map { .clone-button i { font-size: 20px; } - - - From 4a3ae5a75fae91f6a92955de6d9b3e8ed37d8724 Mon Sep 17 00:00:00 2001 From: gspikehalo <2318002579@qq.com> Date: Fri, 4 Oct 2024 13:38:17 -0700 Subject: [PATCH 04/44] Add two new tables: workflow_user_clones and workflow_user_likes. --- .../web/model/jooq/generated/Indexes.java | 10 ++ .../texera/web/model/jooq/generated/Keys.java | 16 ++ .../web/model/jooq/generated/Tables.java | 12 ++ .../web/model/jooq/generated/TexeraDb.java | 16 +- .../generated/tables/WorkflowUserClones.java | 161 +++++++++++++++++ .../generated/tables/WorkflowUserLikes.java | 161 +++++++++++++++++ .../tables/daos/WorkflowUserClonesDao.java | 70 ++++++++ .../tables/daos/WorkflowUserLikesDao.java | 70 ++++++++ .../interfaces/IWorkflowUserClones.java | 51 ++++++ .../tables/interfaces/IWorkflowUserLikes.java | 51 ++++++ .../tables/pojos/WorkflowUserClones.java | 84 +++++++++ .../tables/pojos/WorkflowUserLikes.java | 84 +++++++++ .../records/WorkflowUserClonesRecord.java | 165 ++++++++++++++++++ .../records/WorkflowUserLikesRecord.java | 165 ++++++++++++++++++ core/scripts/sql/texera_ddl.sql | 20 ++- core/scripts/sql/update/16.sql | 18 ++ 16 files changed, 1152 insertions(+), 2 deletions(-) create mode 100644 core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/WorkflowUserClones.java create mode 100644 core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/WorkflowUserLikes.java create mode 100644 core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/daos/WorkflowUserClonesDao.java create mode 100644 core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/daos/WorkflowUserLikesDao.java create mode 100644 core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/interfaces/IWorkflowUserClones.java create mode 100644 core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/interfaces/IWorkflowUserLikes.java create mode 100644 core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/pojos/WorkflowUserClones.java create mode 100644 core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/pojos/WorkflowUserLikes.java create mode 100644 core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/records/WorkflowUserClonesRecord.java create mode 100644 core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/records/WorkflowUserLikesRecord.java create mode 100644 core/scripts/sql/update/16.sql diff --git a/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/Indexes.java b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/Indexes.java index 9b3f1ac9781..f53d4c72a2e 100644 --- a/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/Indexes.java +++ b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/Indexes.java @@ -18,6 +18,8 @@ import edu.uci.ics.texera.web.model.jooq.generated.tables.WorkflowOfUser; import edu.uci.ics.texera.web.model.jooq.generated.tables.WorkflowRuntimeStatistics; import edu.uci.ics.texera.web.model.jooq.generated.tables.WorkflowUserAccess; +import edu.uci.ics.texera.web.model.jooq.generated.tables.WorkflowUserClones; +import edu.uci.ics.texera.web.model.jooq.generated.tables.WorkflowUserLikes; import edu.uci.ics.texera.web.model.jooq.generated.tables.WorkflowVersion; import org.jooq.Index; @@ -67,6 +69,10 @@ public class Indexes { public static final Index WORKFLOW_RUNTIME_STATISTICS_PRIMARY = Indexes0.WORKFLOW_RUNTIME_STATISTICS_PRIMARY; public static final Index WORKFLOW_USER_ACCESS_PRIMARY = Indexes0.WORKFLOW_USER_ACCESS_PRIMARY; public static final Index WORKFLOW_USER_ACCESS_WID = Indexes0.WORKFLOW_USER_ACCESS_WID; + public static final Index WORKFLOW_USER_CLONES_PRIMARY = Indexes0.WORKFLOW_USER_CLONES_PRIMARY; + public static final Index WORKFLOW_USER_CLONES_WID = Indexes0.WORKFLOW_USER_CLONES_WID; + public static final Index WORKFLOW_USER_LIKES_PRIMARY = Indexes0.WORKFLOW_USER_LIKES_PRIMARY; + public static final Index WORKFLOW_USER_LIKES_WID = Indexes0.WORKFLOW_USER_LIKES_WID; public static final Index WORKFLOW_VERSION_PRIMARY = Indexes0.WORKFLOW_VERSION_PRIMARY; public static final Index WORKFLOW_VERSION_WID = Indexes0.WORKFLOW_VERSION_WID; @@ -107,6 +113,10 @@ private static class Indexes0 { public static Index WORKFLOW_RUNTIME_STATISTICS_PRIMARY = Internal.createIndex("PRIMARY", WorkflowRuntimeStatistics.WORKFLOW_RUNTIME_STATISTICS, new OrderField[] { WorkflowRuntimeStatistics.WORKFLOW_RUNTIME_STATISTICS.WORKFLOW_ID, WorkflowRuntimeStatistics.WORKFLOW_RUNTIME_STATISTICS.EXECUTION_ID, WorkflowRuntimeStatistics.WORKFLOW_RUNTIME_STATISTICS.OPERATOR_ID, WorkflowRuntimeStatistics.WORKFLOW_RUNTIME_STATISTICS.TIME }, true); public static Index WORKFLOW_USER_ACCESS_PRIMARY = Internal.createIndex("PRIMARY", WorkflowUserAccess.WORKFLOW_USER_ACCESS, new OrderField[] { WorkflowUserAccess.WORKFLOW_USER_ACCESS.UID, WorkflowUserAccess.WORKFLOW_USER_ACCESS.WID }, true); public static Index WORKFLOW_USER_ACCESS_WID = Internal.createIndex("wid", WorkflowUserAccess.WORKFLOW_USER_ACCESS, new OrderField[] { WorkflowUserAccess.WORKFLOW_USER_ACCESS.WID }, false); + public static Index WORKFLOW_USER_CLONES_PRIMARY = Internal.createIndex("PRIMARY", WorkflowUserClones.WORKFLOW_USER_CLONES, new OrderField[] { WorkflowUserClones.WORKFLOW_USER_CLONES.UID, WorkflowUserClones.WORKFLOW_USER_CLONES.WID }, true); + public static Index WORKFLOW_USER_CLONES_WID = Internal.createIndex("wid", WorkflowUserClones.WORKFLOW_USER_CLONES, new OrderField[] { WorkflowUserClones.WORKFLOW_USER_CLONES.WID }, false); + public static Index WORKFLOW_USER_LIKES_PRIMARY = Internal.createIndex("PRIMARY", WorkflowUserLikes.WORKFLOW_USER_LIKES, new OrderField[] { WorkflowUserLikes.WORKFLOW_USER_LIKES.UID, WorkflowUserLikes.WORKFLOW_USER_LIKES.WID }, true); + public static Index WORKFLOW_USER_LIKES_WID = Internal.createIndex("wid", WorkflowUserLikes.WORKFLOW_USER_LIKES, new OrderField[] { WorkflowUserLikes.WORKFLOW_USER_LIKES.WID }, false); public static Index WORKFLOW_VERSION_PRIMARY = Internal.createIndex("PRIMARY", WorkflowVersion.WORKFLOW_VERSION, new OrderField[] { WorkflowVersion.WORKFLOW_VERSION.VID }, true); public static Index WORKFLOW_VERSION_WID = Internal.createIndex("wid", WorkflowVersion.WORKFLOW_VERSION, new OrderField[] { WorkflowVersion.WORKFLOW_VERSION.WID }, false); } diff --git a/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/Keys.java b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/Keys.java index 7e2200d95dd..d6891cdd6d4 100644 --- a/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/Keys.java +++ b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/Keys.java @@ -18,6 +18,8 @@ import edu.uci.ics.texera.web.model.jooq.generated.tables.WorkflowOfUser; import edu.uci.ics.texera.web.model.jooq.generated.tables.WorkflowRuntimeStatistics; import edu.uci.ics.texera.web.model.jooq.generated.tables.WorkflowUserAccess; +import edu.uci.ics.texera.web.model.jooq.generated.tables.WorkflowUserClones; +import edu.uci.ics.texera.web.model.jooq.generated.tables.WorkflowUserLikes; import edu.uci.ics.texera.web.model.jooq.generated.tables.WorkflowVersion; import edu.uci.ics.texera.web.model.jooq.generated.tables.records.DatasetRecord; import edu.uci.ics.texera.web.model.jooq.generated.tables.records.DatasetUserAccessRecord; @@ -33,6 +35,8 @@ import edu.uci.ics.texera.web.model.jooq.generated.tables.records.WorkflowRecord; import edu.uci.ics.texera.web.model.jooq.generated.tables.records.WorkflowRuntimeStatisticsRecord; import edu.uci.ics.texera.web.model.jooq.generated.tables.records.WorkflowUserAccessRecord; +import edu.uci.ics.texera.web.model.jooq.generated.tables.records.WorkflowUserClonesRecord; +import edu.uci.ics.texera.web.model.jooq.generated.tables.records.WorkflowUserLikesRecord; import edu.uci.ics.texera.web.model.jooq.generated.tables.records.WorkflowVersionRecord; import org.jooq.ForeignKey; @@ -82,6 +86,8 @@ public class Keys { public static final UniqueKey KEY_WORKFLOW_OF_USER_PRIMARY = UniqueKeys0.KEY_WORKFLOW_OF_USER_PRIMARY; public static final UniqueKey KEY_WORKFLOW_RUNTIME_STATISTICS_PRIMARY = UniqueKeys0.KEY_WORKFLOW_RUNTIME_STATISTICS_PRIMARY; public static final UniqueKey KEY_WORKFLOW_USER_ACCESS_PRIMARY = UniqueKeys0.KEY_WORKFLOW_USER_ACCESS_PRIMARY; + public static final UniqueKey KEY_WORKFLOW_USER_CLONES_PRIMARY = UniqueKeys0.KEY_WORKFLOW_USER_CLONES_PRIMARY; + public static final UniqueKey KEY_WORKFLOW_USER_LIKES_PRIMARY = UniqueKeys0.KEY_WORKFLOW_USER_LIKES_PRIMARY; public static final UniqueKey KEY_WORKFLOW_VERSION_PRIMARY = UniqueKeys0.KEY_WORKFLOW_VERSION_PRIMARY; // ------------------------------------------------------------------------- @@ -107,6 +113,10 @@ public class Keys { public static final ForeignKey WORKFLOW_RUNTIME_STATISTICS_IBFK_2 = ForeignKeys0.WORKFLOW_RUNTIME_STATISTICS_IBFK_2; public static final ForeignKey WORKFLOW_USER_ACCESS_IBFK_1 = ForeignKeys0.WORKFLOW_USER_ACCESS_IBFK_1; public static final ForeignKey WORKFLOW_USER_ACCESS_IBFK_2 = ForeignKeys0.WORKFLOW_USER_ACCESS_IBFK_2; + public static final ForeignKey WORKFLOW_USER_CLONES_IBFK_1 = ForeignKeys0.WORKFLOW_USER_CLONES_IBFK_1; + public static final ForeignKey WORKFLOW_USER_CLONES_IBFK_2 = ForeignKeys0.WORKFLOW_USER_CLONES_IBFK_2; + public static final ForeignKey WORKFLOW_USER_LIKES_IBFK_1 = ForeignKeys0.WORKFLOW_USER_LIKES_IBFK_1; + public static final ForeignKey WORKFLOW_USER_LIKES_IBFK_2 = ForeignKeys0.WORKFLOW_USER_LIKES_IBFK_2; public static final ForeignKey WORKFLOW_VERSION_IBFK_1 = ForeignKeys0.WORKFLOW_VERSION_IBFK_1; // ------------------------------------------------------------------------- @@ -141,6 +151,8 @@ private static class UniqueKeys0 { public static final UniqueKey KEY_WORKFLOW_OF_USER_PRIMARY = Internal.createUniqueKey(WorkflowOfUser.WORKFLOW_OF_USER, "KEY_workflow_of_user_PRIMARY", WorkflowOfUser.WORKFLOW_OF_USER.UID, WorkflowOfUser.WORKFLOW_OF_USER.WID); public static final UniqueKey KEY_WORKFLOW_RUNTIME_STATISTICS_PRIMARY = Internal.createUniqueKey(WorkflowRuntimeStatistics.WORKFLOW_RUNTIME_STATISTICS, "KEY_workflow_runtime_statistics_PRIMARY", WorkflowRuntimeStatistics.WORKFLOW_RUNTIME_STATISTICS.WORKFLOW_ID, WorkflowRuntimeStatistics.WORKFLOW_RUNTIME_STATISTICS.EXECUTION_ID, WorkflowRuntimeStatistics.WORKFLOW_RUNTIME_STATISTICS.OPERATOR_ID, WorkflowRuntimeStatistics.WORKFLOW_RUNTIME_STATISTICS.TIME); public static final UniqueKey KEY_WORKFLOW_USER_ACCESS_PRIMARY = Internal.createUniqueKey(WorkflowUserAccess.WORKFLOW_USER_ACCESS, "KEY_workflow_user_access_PRIMARY", WorkflowUserAccess.WORKFLOW_USER_ACCESS.UID, WorkflowUserAccess.WORKFLOW_USER_ACCESS.WID); + public static final UniqueKey KEY_WORKFLOW_USER_CLONES_PRIMARY = Internal.createUniqueKey(WorkflowUserClones.WORKFLOW_USER_CLONES, "KEY_workflow_user_clones_PRIMARY", WorkflowUserClones.WORKFLOW_USER_CLONES.UID, WorkflowUserClones.WORKFLOW_USER_CLONES.WID); + public static final UniqueKey KEY_WORKFLOW_USER_LIKES_PRIMARY = Internal.createUniqueKey(WorkflowUserLikes.WORKFLOW_USER_LIKES, "KEY_workflow_user_likes_PRIMARY", WorkflowUserLikes.WORKFLOW_USER_LIKES.UID, WorkflowUserLikes.WORKFLOW_USER_LIKES.WID); public static final UniqueKey KEY_WORKFLOW_VERSION_PRIMARY = Internal.createUniqueKey(WorkflowVersion.WORKFLOW_VERSION, "KEY_workflow_version_PRIMARY", WorkflowVersion.WORKFLOW_VERSION.VID); } @@ -164,6 +176,10 @@ private static class ForeignKeys0 { public static final ForeignKey WORKFLOW_RUNTIME_STATISTICS_IBFK_2 = Internal.createForeignKey(edu.uci.ics.texera.web.model.jooq.generated.Keys.KEY_WORKFLOW_EXECUTIONS_PRIMARY, WorkflowRuntimeStatistics.WORKFLOW_RUNTIME_STATISTICS, "workflow_runtime_statistics_ibfk_2", WorkflowRuntimeStatistics.WORKFLOW_RUNTIME_STATISTICS.EXECUTION_ID); public static final ForeignKey WORKFLOW_USER_ACCESS_IBFK_1 = Internal.createForeignKey(edu.uci.ics.texera.web.model.jooq.generated.Keys.KEY_USER_PRIMARY, WorkflowUserAccess.WORKFLOW_USER_ACCESS, "workflow_user_access_ibfk_1", WorkflowUserAccess.WORKFLOW_USER_ACCESS.UID); public static final ForeignKey WORKFLOW_USER_ACCESS_IBFK_2 = Internal.createForeignKey(edu.uci.ics.texera.web.model.jooq.generated.Keys.KEY_WORKFLOW_PRIMARY, WorkflowUserAccess.WORKFLOW_USER_ACCESS, "workflow_user_access_ibfk_2", WorkflowUserAccess.WORKFLOW_USER_ACCESS.WID); + public static final ForeignKey WORKFLOW_USER_CLONES_IBFK_1 = Internal.createForeignKey(edu.uci.ics.texera.web.model.jooq.generated.Keys.KEY_USER_PRIMARY, WorkflowUserClones.WORKFLOW_USER_CLONES, "workflow_user_clones_ibfk_1", WorkflowUserClones.WORKFLOW_USER_CLONES.UID); + public static final ForeignKey WORKFLOW_USER_CLONES_IBFK_2 = Internal.createForeignKey(edu.uci.ics.texera.web.model.jooq.generated.Keys.KEY_WORKFLOW_PRIMARY, WorkflowUserClones.WORKFLOW_USER_CLONES, "workflow_user_clones_ibfk_2", WorkflowUserClones.WORKFLOW_USER_CLONES.WID); + public static final ForeignKey WORKFLOW_USER_LIKES_IBFK_1 = Internal.createForeignKey(edu.uci.ics.texera.web.model.jooq.generated.Keys.KEY_USER_PRIMARY, WorkflowUserLikes.WORKFLOW_USER_LIKES, "workflow_user_likes_ibfk_1", WorkflowUserLikes.WORKFLOW_USER_LIKES.UID); + public static final ForeignKey WORKFLOW_USER_LIKES_IBFK_2 = Internal.createForeignKey(edu.uci.ics.texera.web.model.jooq.generated.Keys.KEY_WORKFLOW_PRIMARY, WorkflowUserLikes.WORKFLOW_USER_LIKES, "workflow_user_likes_ibfk_2", WorkflowUserLikes.WORKFLOW_USER_LIKES.WID); public static final ForeignKey WORKFLOW_VERSION_IBFK_1 = Internal.createForeignKey(edu.uci.ics.texera.web.model.jooq.generated.Keys.KEY_WORKFLOW_PRIMARY, WorkflowVersion.WORKFLOW_VERSION, "workflow_version_ibfk_1", WorkflowVersion.WORKFLOW_VERSION.WID); } } diff --git a/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/Tables.java b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/Tables.java index 95de94a9538..61da626741e 100644 --- a/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/Tables.java +++ b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/Tables.java @@ -18,6 +18,8 @@ import edu.uci.ics.texera.web.model.jooq.generated.tables.WorkflowOfUser; import edu.uci.ics.texera.web.model.jooq.generated.tables.WorkflowRuntimeStatistics; import edu.uci.ics.texera.web.model.jooq.generated.tables.WorkflowUserAccess; +import edu.uci.ics.texera.web.model.jooq.generated.tables.WorkflowUserClones; +import edu.uci.ics.texera.web.model.jooq.generated.tables.WorkflowUserLikes; import edu.uci.ics.texera.web.model.jooq.generated.tables.WorkflowVersion; @@ -97,6 +99,16 @@ public class Tables { */ public static final WorkflowUserAccess WORKFLOW_USER_ACCESS = WorkflowUserAccess.WORKFLOW_USER_ACCESS; + /** + * The table texera_db.workflow_user_clones. + */ + public static final WorkflowUserClones WORKFLOW_USER_CLONES = WorkflowUserClones.WORKFLOW_USER_CLONES; + + /** + * The table texera_db.workflow_user_likes. + */ + public static final WorkflowUserLikes WORKFLOW_USER_LIKES = WorkflowUserLikes.WORKFLOW_USER_LIKES; + /** * The table texera_db.workflow_version. */ diff --git a/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/TexeraDb.java b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/TexeraDb.java index c3f059a344d..1a672afd2da 100644 --- a/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/TexeraDb.java +++ b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/TexeraDb.java @@ -18,6 +18,8 @@ import edu.uci.ics.texera.web.model.jooq.generated.tables.WorkflowOfUser; import edu.uci.ics.texera.web.model.jooq.generated.tables.WorkflowRuntimeStatistics; import edu.uci.ics.texera.web.model.jooq.generated.tables.WorkflowUserAccess; +import edu.uci.ics.texera.web.model.jooq.generated.tables.WorkflowUserClones; +import edu.uci.ics.texera.web.model.jooq.generated.tables.WorkflowUserLikes; import edu.uci.ics.texera.web.model.jooq.generated.tables.WorkflowVersion; import java.util.ArrayList; @@ -35,7 +37,7 @@ @SuppressWarnings({ "all", "unchecked", "rawtypes" }) public class TexeraDb extends SchemaImpl { - private static final long serialVersionUID = -202156650; + private static final long serialVersionUID = -1537460404; /** * The reference instance of texera_db @@ -112,6 +114,16 @@ public class TexeraDb extends SchemaImpl { */ public final WorkflowUserAccess WORKFLOW_USER_ACCESS = edu.uci.ics.texera.web.model.jooq.generated.tables.WorkflowUserAccess.WORKFLOW_USER_ACCESS; + /** + * The table texera_db.workflow_user_clones. + */ + public final WorkflowUserClones WORKFLOW_USER_CLONES = edu.uci.ics.texera.web.model.jooq.generated.tables.WorkflowUserClones.WORKFLOW_USER_CLONES; + + /** + * The table texera_db.workflow_user_likes. + */ + public final WorkflowUserLikes WORKFLOW_USER_LIKES = edu.uci.ics.texera.web.model.jooq.generated.tables.WorkflowUserLikes.WORKFLOW_USER_LIKES; + /** * The table texera_db.workflow_version. */ @@ -153,6 +165,8 @@ private final List> getTables0() { WorkflowOfUser.WORKFLOW_OF_USER, WorkflowRuntimeStatistics.WORKFLOW_RUNTIME_STATISTICS, WorkflowUserAccess.WORKFLOW_USER_ACCESS, + WorkflowUserClones.WORKFLOW_USER_CLONES, + WorkflowUserLikes.WORKFLOW_USER_LIKES, WorkflowVersion.WORKFLOW_VERSION); } } diff --git a/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/WorkflowUserClones.java b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/WorkflowUserClones.java new file mode 100644 index 00000000000..7e04edd15c6 --- /dev/null +++ b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/WorkflowUserClones.java @@ -0,0 +1,161 @@ +/* + * This file is generated by jOOQ. + */ +package edu.uci.ics.texera.web.model.jooq.generated.tables; + + +import edu.uci.ics.texera.web.model.jooq.generated.Indexes; +import edu.uci.ics.texera.web.model.jooq.generated.Keys; +import edu.uci.ics.texera.web.model.jooq.generated.TexeraDb; +import edu.uci.ics.texera.web.model.jooq.generated.tables.records.WorkflowUserClonesRecord; + +import java.util.Arrays; +import java.util.List; + +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.Index; +import org.jooq.Name; +import org.jooq.Record; +import org.jooq.Row2; +import org.jooq.Schema; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.TableImpl; +import org.jooq.types.UInteger; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class WorkflowUserClones extends TableImpl { + + private static final long serialVersionUID = -666496644; + + /** + * The reference instance of texera_db.workflow_user_clones + */ + public static final WorkflowUserClones WORKFLOW_USER_CLONES = new WorkflowUserClones(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return WorkflowUserClonesRecord.class; + } + + /** + * The column texera_db.workflow_user_clones.uid. + */ + public final TableField UID = createField(DSL.name("uid"), org.jooq.impl.SQLDataType.INTEGERUNSIGNED.nullable(false), this, ""); + + /** + * The column texera_db.workflow_user_clones.wid. + */ + public final TableField WID = createField(DSL.name("wid"), org.jooq.impl.SQLDataType.INTEGERUNSIGNED.nullable(false), this, ""); + + /** + * Create a texera_db.workflow_user_clones table reference + */ + public WorkflowUserClones() { + this(DSL.name("workflow_user_clones"), null); + } + + /** + * Create an aliased texera_db.workflow_user_clones table reference + */ + public WorkflowUserClones(String alias) { + this(DSL.name(alias), WORKFLOW_USER_CLONES); + } + + /** + * Create an aliased texera_db.workflow_user_clones table reference + */ + public WorkflowUserClones(Name alias) { + this(alias, WORKFLOW_USER_CLONES); + } + + private WorkflowUserClones(Name alias, Table aliased) { + this(alias, aliased, null); + } + + private WorkflowUserClones(Name alias, Table aliased, Field[] parameters) { + super(alias, null, aliased, parameters, DSL.comment("")); + } + + public WorkflowUserClones(Table child, ForeignKey key) { + super(child, key, WORKFLOW_USER_CLONES); + } + + @Override + public Schema getSchema() { + return TexeraDb.TEXERA_DB; + } + + @Override + public List getIndexes() { + return Arrays.asList(Indexes.WORKFLOW_USER_CLONES_PRIMARY, Indexes.WORKFLOW_USER_CLONES_WID); + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.KEY_WORKFLOW_USER_CLONES_PRIMARY; + } + + @Override + public List> getKeys() { + return Arrays.>asList(Keys.KEY_WORKFLOW_USER_CLONES_PRIMARY); + } + + @Override + public List> getReferences() { + return Arrays.>asList(Keys.WORKFLOW_USER_CLONES_IBFK_1, Keys.WORKFLOW_USER_CLONES_IBFK_2); + } + + public User user() { + return new User(this, Keys.WORKFLOW_USER_CLONES_IBFK_1); + } + + public Workflow workflow() { + return new Workflow(this, Keys.WORKFLOW_USER_CLONES_IBFK_2); + } + + @Override + public WorkflowUserClones as(String alias) { + return new WorkflowUserClones(DSL.name(alias), this); + } + + @Override + public WorkflowUserClones as(Name alias) { + return new WorkflowUserClones(alias, this); + } + + /** + * Rename this table + */ + @Override + public WorkflowUserClones rename(String name) { + return new WorkflowUserClones(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public WorkflowUserClones rename(Name name) { + return new WorkflowUserClones(name, null); + } + + // ------------------------------------------------------------------------- + // Row2 type methods + // ------------------------------------------------------------------------- + + @Override + public Row2 fieldsRow() { + return (Row2) super.fieldsRow(); + } +} diff --git a/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/WorkflowUserLikes.java b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/WorkflowUserLikes.java new file mode 100644 index 00000000000..342e53f5179 --- /dev/null +++ b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/WorkflowUserLikes.java @@ -0,0 +1,161 @@ +/* + * This file is generated by jOOQ. + */ +package edu.uci.ics.texera.web.model.jooq.generated.tables; + + +import edu.uci.ics.texera.web.model.jooq.generated.Indexes; +import edu.uci.ics.texera.web.model.jooq.generated.Keys; +import edu.uci.ics.texera.web.model.jooq.generated.TexeraDb; +import edu.uci.ics.texera.web.model.jooq.generated.tables.records.WorkflowUserLikesRecord; + +import java.util.Arrays; +import java.util.List; + +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.Index; +import org.jooq.Name; +import org.jooq.Record; +import org.jooq.Row2; +import org.jooq.Schema; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.TableImpl; +import org.jooq.types.UInteger; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class WorkflowUserLikes extends TableImpl { + + private static final long serialVersionUID = -470369784; + + /** + * The reference instance of texera_db.workflow_user_likes + */ + public static final WorkflowUserLikes WORKFLOW_USER_LIKES = new WorkflowUserLikes(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return WorkflowUserLikesRecord.class; + } + + /** + * The column texera_db.workflow_user_likes.uid. + */ + public final TableField UID = createField(DSL.name("uid"), org.jooq.impl.SQLDataType.INTEGERUNSIGNED.nullable(false), this, ""); + + /** + * The column texera_db.workflow_user_likes.wid. + */ + public final TableField WID = createField(DSL.name("wid"), org.jooq.impl.SQLDataType.INTEGERUNSIGNED.nullable(false), this, ""); + + /** + * Create a texera_db.workflow_user_likes table reference + */ + public WorkflowUserLikes() { + this(DSL.name("workflow_user_likes"), null); + } + + /** + * Create an aliased texera_db.workflow_user_likes table reference + */ + public WorkflowUserLikes(String alias) { + this(DSL.name(alias), WORKFLOW_USER_LIKES); + } + + /** + * Create an aliased texera_db.workflow_user_likes table reference + */ + public WorkflowUserLikes(Name alias) { + this(alias, WORKFLOW_USER_LIKES); + } + + private WorkflowUserLikes(Name alias, Table aliased) { + this(alias, aliased, null); + } + + private WorkflowUserLikes(Name alias, Table aliased, Field[] parameters) { + super(alias, null, aliased, parameters, DSL.comment("")); + } + + public WorkflowUserLikes(Table child, ForeignKey key) { + super(child, key, WORKFLOW_USER_LIKES); + } + + @Override + public Schema getSchema() { + return TexeraDb.TEXERA_DB; + } + + @Override + public List getIndexes() { + return Arrays.asList(Indexes.WORKFLOW_USER_LIKES_PRIMARY, Indexes.WORKFLOW_USER_LIKES_WID); + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.KEY_WORKFLOW_USER_LIKES_PRIMARY; + } + + @Override + public List> getKeys() { + return Arrays.>asList(Keys.KEY_WORKFLOW_USER_LIKES_PRIMARY); + } + + @Override + public List> getReferences() { + return Arrays.>asList(Keys.WORKFLOW_USER_LIKES_IBFK_1, Keys.WORKFLOW_USER_LIKES_IBFK_2); + } + + public User user() { + return new User(this, Keys.WORKFLOW_USER_LIKES_IBFK_1); + } + + public Workflow workflow() { + return new Workflow(this, Keys.WORKFLOW_USER_LIKES_IBFK_2); + } + + @Override + public WorkflowUserLikes as(String alias) { + return new WorkflowUserLikes(DSL.name(alias), this); + } + + @Override + public WorkflowUserLikes as(Name alias) { + return new WorkflowUserLikes(alias, this); + } + + /** + * Rename this table + */ + @Override + public WorkflowUserLikes rename(String name) { + return new WorkflowUserLikes(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public WorkflowUserLikes rename(Name name) { + return new WorkflowUserLikes(name, null); + } + + // ------------------------------------------------------------------------- + // Row2 type methods + // ------------------------------------------------------------------------- + + @Override + public Row2 fieldsRow() { + return (Row2) super.fieldsRow(); + } +} diff --git a/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/daos/WorkflowUserClonesDao.java b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/daos/WorkflowUserClonesDao.java new file mode 100644 index 00000000000..090a6fb103a --- /dev/null +++ b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/daos/WorkflowUserClonesDao.java @@ -0,0 +1,70 @@ +/* + * This file is generated by jOOQ. + */ +package edu.uci.ics.texera.web.model.jooq.generated.tables.daos; + + +import edu.uci.ics.texera.web.model.jooq.generated.tables.WorkflowUserClones; +import edu.uci.ics.texera.web.model.jooq.generated.tables.records.WorkflowUserClonesRecord; + +import java.util.List; + +import org.jooq.Configuration; +import org.jooq.Record2; +import org.jooq.impl.DAOImpl; +import org.jooq.types.UInteger; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class WorkflowUserClonesDao extends DAOImpl> { + + /** + * Create a new WorkflowUserClonesDao without any configuration + */ + public WorkflowUserClonesDao() { + super(WorkflowUserClones.WORKFLOW_USER_CLONES, edu.uci.ics.texera.web.model.jooq.generated.tables.pojos.WorkflowUserClones.class); + } + + /** + * Create a new WorkflowUserClonesDao with an attached configuration + */ + public WorkflowUserClonesDao(Configuration configuration) { + super(WorkflowUserClones.WORKFLOW_USER_CLONES, edu.uci.ics.texera.web.model.jooq.generated.tables.pojos.WorkflowUserClones.class, configuration); + } + + @Override + public Record2 getId(edu.uci.ics.texera.web.model.jooq.generated.tables.pojos.WorkflowUserClones object) { + return compositeKeyRecord(object.getUid(), object.getWid()); + } + + /** + * Fetch records that have uid BETWEEN lowerInclusive AND upperInclusive + */ + public List fetchRangeOfUid(UInteger lowerInclusive, UInteger upperInclusive) { + return fetchRange(WorkflowUserClones.WORKFLOW_USER_CLONES.UID, lowerInclusive, upperInclusive); + } + + /** + * Fetch records that have uid IN (values) + */ + public List fetchByUid(UInteger... values) { + return fetch(WorkflowUserClones.WORKFLOW_USER_CLONES.UID, values); + } + + /** + * Fetch records that have wid BETWEEN lowerInclusive AND upperInclusive + */ + public List fetchRangeOfWid(UInteger lowerInclusive, UInteger upperInclusive) { + return fetchRange(WorkflowUserClones.WORKFLOW_USER_CLONES.WID, lowerInclusive, upperInclusive); + } + + /** + * Fetch records that have wid IN (values) + */ + public List fetchByWid(UInteger... values) { + return fetch(WorkflowUserClones.WORKFLOW_USER_CLONES.WID, values); + } +} diff --git a/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/daos/WorkflowUserLikesDao.java b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/daos/WorkflowUserLikesDao.java new file mode 100644 index 00000000000..faabd781c7f --- /dev/null +++ b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/daos/WorkflowUserLikesDao.java @@ -0,0 +1,70 @@ +/* + * This file is generated by jOOQ. + */ +package edu.uci.ics.texera.web.model.jooq.generated.tables.daos; + + +import edu.uci.ics.texera.web.model.jooq.generated.tables.WorkflowUserLikes; +import edu.uci.ics.texera.web.model.jooq.generated.tables.records.WorkflowUserLikesRecord; + +import java.util.List; + +import org.jooq.Configuration; +import org.jooq.Record2; +import org.jooq.impl.DAOImpl; +import org.jooq.types.UInteger; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class WorkflowUserLikesDao extends DAOImpl> { + + /** + * Create a new WorkflowUserLikesDao without any configuration + */ + public WorkflowUserLikesDao() { + super(WorkflowUserLikes.WORKFLOW_USER_LIKES, edu.uci.ics.texera.web.model.jooq.generated.tables.pojos.WorkflowUserLikes.class); + } + + /** + * Create a new WorkflowUserLikesDao with an attached configuration + */ + public WorkflowUserLikesDao(Configuration configuration) { + super(WorkflowUserLikes.WORKFLOW_USER_LIKES, edu.uci.ics.texera.web.model.jooq.generated.tables.pojos.WorkflowUserLikes.class, configuration); + } + + @Override + public Record2 getId(edu.uci.ics.texera.web.model.jooq.generated.tables.pojos.WorkflowUserLikes object) { + return compositeKeyRecord(object.getUid(), object.getWid()); + } + + /** + * Fetch records that have uid BETWEEN lowerInclusive AND upperInclusive + */ + public List fetchRangeOfUid(UInteger lowerInclusive, UInteger upperInclusive) { + return fetchRange(WorkflowUserLikes.WORKFLOW_USER_LIKES.UID, lowerInclusive, upperInclusive); + } + + /** + * Fetch records that have uid IN (values) + */ + public List fetchByUid(UInteger... values) { + return fetch(WorkflowUserLikes.WORKFLOW_USER_LIKES.UID, values); + } + + /** + * Fetch records that have wid BETWEEN lowerInclusive AND upperInclusive + */ + public List fetchRangeOfWid(UInteger lowerInclusive, UInteger upperInclusive) { + return fetchRange(WorkflowUserLikes.WORKFLOW_USER_LIKES.WID, lowerInclusive, upperInclusive); + } + + /** + * Fetch records that have wid IN (values) + */ + public List fetchByWid(UInteger... values) { + return fetch(WorkflowUserLikes.WORKFLOW_USER_LIKES.WID, values); + } +} diff --git a/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/interfaces/IWorkflowUserClones.java b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/interfaces/IWorkflowUserClones.java new file mode 100644 index 00000000000..7dd698dac98 --- /dev/null +++ b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/interfaces/IWorkflowUserClones.java @@ -0,0 +1,51 @@ +/* + * This file is generated by jOOQ. + */ +package edu.uci.ics.texera.web.model.jooq.generated.tables.interfaces; + + +import java.io.Serializable; + +import org.jooq.types.UInteger; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public interface IWorkflowUserClones extends Serializable { + + /** + * Setter for texera_db.workflow_user_clones.uid. + */ + public void setUid(UInteger value); + + /** + * Getter for texera_db.workflow_user_clones.uid. + */ + public UInteger getUid(); + + /** + * Setter for texera_db.workflow_user_clones.wid. + */ + public void setWid(UInteger value); + + /** + * Getter for texera_db.workflow_user_clones.wid. + */ + public UInteger getWid(); + + // ------------------------------------------------------------------------- + // FROM and INTO + // ------------------------------------------------------------------------- + + /** + * Load data from another generated Record/POJO implementing the common interface IWorkflowUserClones + */ + public void from(edu.uci.ics.texera.web.model.jooq.generated.tables.interfaces.IWorkflowUserClones from); + + /** + * Copy data into another generated Record/POJO implementing the common interface IWorkflowUserClones + */ + public E into(E into); +} diff --git a/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/interfaces/IWorkflowUserLikes.java b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/interfaces/IWorkflowUserLikes.java new file mode 100644 index 00000000000..ba231018991 --- /dev/null +++ b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/interfaces/IWorkflowUserLikes.java @@ -0,0 +1,51 @@ +/* + * This file is generated by jOOQ. + */ +package edu.uci.ics.texera.web.model.jooq.generated.tables.interfaces; + + +import java.io.Serializable; + +import org.jooq.types.UInteger; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public interface IWorkflowUserLikes extends Serializable { + + /** + * Setter for texera_db.workflow_user_likes.uid. + */ + public void setUid(UInteger value); + + /** + * Getter for texera_db.workflow_user_likes.uid. + */ + public UInteger getUid(); + + /** + * Setter for texera_db.workflow_user_likes.wid. + */ + public void setWid(UInteger value); + + /** + * Getter for texera_db.workflow_user_likes.wid. + */ + public UInteger getWid(); + + // ------------------------------------------------------------------------- + // FROM and INTO + // ------------------------------------------------------------------------- + + /** + * Load data from another generated Record/POJO implementing the common interface IWorkflowUserLikes + */ + public void from(edu.uci.ics.texera.web.model.jooq.generated.tables.interfaces.IWorkflowUserLikes from); + + /** + * Copy data into another generated Record/POJO implementing the common interface IWorkflowUserLikes + */ + public E into(E into); +} diff --git a/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/pojos/WorkflowUserClones.java b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/pojos/WorkflowUserClones.java new file mode 100644 index 00000000000..4f6cc1c89a1 --- /dev/null +++ b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/pojos/WorkflowUserClones.java @@ -0,0 +1,84 @@ +/* + * This file is generated by jOOQ. + */ +package edu.uci.ics.texera.web.model.jooq.generated.tables.pojos; + + +import edu.uci.ics.texera.web.model.jooq.generated.tables.interfaces.IWorkflowUserClones; + +import org.jooq.types.UInteger; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class WorkflowUserClones implements IWorkflowUserClones { + + private static final long serialVersionUID = 251192233; + + private UInteger uid; + private UInteger wid; + + public WorkflowUserClones() {} + + public WorkflowUserClones(IWorkflowUserClones value) { + this.uid = value.getUid(); + this.wid = value.getWid(); + } + + public WorkflowUserClones( + UInteger uid, + UInteger wid + ) { + this.uid = uid; + this.wid = wid; + } + + @Override + public UInteger getUid() { + return this.uid; + } + + @Override + public void setUid(UInteger uid) { + this.uid = uid; + } + + @Override + public UInteger getWid() { + return this.wid; + } + + @Override + public void setWid(UInteger wid) { + this.wid = wid; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("WorkflowUserClones ("); + + sb.append(uid); + sb.append(", ").append(wid); + + sb.append(")"); + return sb.toString(); + } + + // ------------------------------------------------------------------------- + // FROM and INTO + // ------------------------------------------------------------------------- + + @Override + public void from(IWorkflowUserClones from) { + setUid(from.getUid()); + setWid(from.getWid()); + } + + @Override + public E into(E into) { + into.from(this); + return into; + } +} diff --git a/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/pojos/WorkflowUserLikes.java b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/pojos/WorkflowUserLikes.java new file mode 100644 index 00000000000..c8b70baa1d9 --- /dev/null +++ b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/pojos/WorkflowUserLikes.java @@ -0,0 +1,84 @@ +/* + * This file is generated by jOOQ. + */ +package edu.uci.ics.texera.web.model.jooq.generated.tables.pojos; + + +import edu.uci.ics.texera.web.model.jooq.generated.tables.interfaces.IWorkflowUserLikes; + +import org.jooq.types.UInteger; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class WorkflowUserLikes implements IWorkflowUserLikes { + + private static final long serialVersionUID = -632412413; + + private UInteger uid; + private UInteger wid; + + public WorkflowUserLikes() {} + + public WorkflowUserLikes(IWorkflowUserLikes value) { + this.uid = value.getUid(); + this.wid = value.getWid(); + } + + public WorkflowUserLikes( + UInteger uid, + UInteger wid + ) { + this.uid = uid; + this.wid = wid; + } + + @Override + public UInteger getUid() { + return this.uid; + } + + @Override + public void setUid(UInteger uid) { + this.uid = uid; + } + + @Override + public UInteger getWid() { + return this.wid; + } + + @Override + public void setWid(UInteger wid) { + this.wid = wid; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("WorkflowUserLikes ("); + + sb.append(uid); + sb.append(", ").append(wid); + + sb.append(")"); + return sb.toString(); + } + + // ------------------------------------------------------------------------- + // FROM and INTO + // ------------------------------------------------------------------------- + + @Override + public void from(IWorkflowUserLikes from) { + setUid(from.getUid()); + setWid(from.getWid()); + } + + @Override + public E into(E into) { + into.from(this); + return into; + } +} diff --git a/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/records/WorkflowUserClonesRecord.java b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/records/WorkflowUserClonesRecord.java new file mode 100644 index 00000000000..ee84dac55ef --- /dev/null +++ b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/records/WorkflowUserClonesRecord.java @@ -0,0 +1,165 @@ +/* + * This file is generated by jOOQ. + */ +package edu.uci.ics.texera.web.model.jooq.generated.tables.records; + + +import edu.uci.ics.texera.web.model.jooq.generated.tables.WorkflowUserClones; +import edu.uci.ics.texera.web.model.jooq.generated.tables.interfaces.IWorkflowUserClones; + +import org.jooq.Field; +import org.jooq.Record2; +import org.jooq.Row2; +import org.jooq.impl.UpdatableRecordImpl; +import org.jooq.types.UInteger; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class WorkflowUserClonesRecord extends UpdatableRecordImpl implements Record2, IWorkflowUserClones { + + private static final long serialVersionUID = 1619439529; + + /** + * Setter for texera_db.workflow_user_clones.uid. + */ + @Override + public void setUid(UInteger value) { + set(0, value); + } + + /** + * Getter for texera_db.workflow_user_clones.uid. + */ + @Override + public UInteger getUid() { + return (UInteger) get(0); + } + + /** + * Setter for texera_db.workflow_user_clones.wid. + */ + @Override + public void setWid(UInteger value) { + set(1, value); + } + + /** + * Getter for texera_db.workflow_user_clones.wid. + */ + @Override + public UInteger getWid() { + return (UInteger) get(1); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record2 key() { + return (Record2) super.key(); + } + + // ------------------------------------------------------------------------- + // Record2 type implementation + // ------------------------------------------------------------------------- + + @Override + public Row2 fieldsRow() { + return (Row2) super.fieldsRow(); + } + + @Override + public Row2 valuesRow() { + return (Row2) super.valuesRow(); + } + + @Override + public Field field1() { + return WorkflowUserClones.WORKFLOW_USER_CLONES.UID; + } + + @Override + public Field field2() { + return WorkflowUserClones.WORKFLOW_USER_CLONES.WID; + } + + @Override + public UInteger component1() { + return getUid(); + } + + @Override + public UInteger component2() { + return getWid(); + } + + @Override + public UInteger value1() { + return getUid(); + } + + @Override + public UInteger value2() { + return getWid(); + } + + @Override + public WorkflowUserClonesRecord value1(UInteger value) { + setUid(value); + return this; + } + + @Override + public WorkflowUserClonesRecord value2(UInteger value) { + setWid(value); + return this; + } + + @Override + public WorkflowUserClonesRecord values(UInteger value1, UInteger value2) { + value1(value1); + value2(value2); + return this; + } + + // ------------------------------------------------------------------------- + // FROM and INTO + // ------------------------------------------------------------------------- + + @Override + public void from(IWorkflowUserClones from) { + setUid(from.getUid()); + setWid(from.getWid()); + } + + @Override + public E into(E into) { + into.from(this); + return into; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached WorkflowUserClonesRecord + */ + public WorkflowUserClonesRecord() { + super(WorkflowUserClones.WORKFLOW_USER_CLONES); + } + + /** + * Create a detached, initialised WorkflowUserClonesRecord + */ + public WorkflowUserClonesRecord(UInteger uid, UInteger wid) { + super(WorkflowUserClones.WORKFLOW_USER_CLONES); + + set(0, uid); + set(1, wid); + } +} diff --git a/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/records/WorkflowUserLikesRecord.java b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/records/WorkflowUserLikesRecord.java new file mode 100644 index 00000000000..fcab17e7f23 --- /dev/null +++ b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/records/WorkflowUserLikesRecord.java @@ -0,0 +1,165 @@ +/* + * This file is generated by jOOQ. + */ +package edu.uci.ics.texera.web.model.jooq.generated.tables.records; + + +import edu.uci.ics.texera.web.model.jooq.generated.tables.WorkflowUserLikes; +import edu.uci.ics.texera.web.model.jooq.generated.tables.interfaces.IWorkflowUserLikes; + +import org.jooq.Field; +import org.jooq.Record2; +import org.jooq.Row2; +import org.jooq.impl.UpdatableRecordImpl; +import org.jooq.types.UInteger; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class WorkflowUserLikesRecord extends UpdatableRecordImpl implements Record2, IWorkflowUserLikes { + + private static final long serialVersionUID = -1129677921; + + /** + * Setter for texera_db.workflow_user_likes.uid. + */ + @Override + public void setUid(UInteger value) { + set(0, value); + } + + /** + * Getter for texera_db.workflow_user_likes.uid. + */ + @Override + public UInteger getUid() { + return (UInteger) get(0); + } + + /** + * Setter for texera_db.workflow_user_likes.wid. + */ + @Override + public void setWid(UInteger value) { + set(1, value); + } + + /** + * Getter for texera_db.workflow_user_likes.wid. + */ + @Override + public UInteger getWid() { + return (UInteger) get(1); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record2 key() { + return (Record2) super.key(); + } + + // ------------------------------------------------------------------------- + // Record2 type implementation + // ------------------------------------------------------------------------- + + @Override + public Row2 fieldsRow() { + return (Row2) super.fieldsRow(); + } + + @Override + public Row2 valuesRow() { + return (Row2) super.valuesRow(); + } + + @Override + public Field field1() { + return WorkflowUserLikes.WORKFLOW_USER_LIKES.UID; + } + + @Override + public Field field2() { + return WorkflowUserLikes.WORKFLOW_USER_LIKES.WID; + } + + @Override + public UInteger component1() { + return getUid(); + } + + @Override + public UInteger component2() { + return getWid(); + } + + @Override + public UInteger value1() { + return getUid(); + } + + @Override + public UInteger value2() { + return getWid(); + } + + @Override + public WorkflowUserLikesRecord value1(UInteger value) { + setUid(value); + return this; + } + + @Override + public WorkflowUserLikesRecord value2(UInteger value) { + setWid(value); + return this; + } + + @Override + public WorkflowUserLikesRecord values(UInteger value1, UInteger value2) { + value1(value1); + value2(value2); + return this; + } + + // ------------------------------------------------------------------------- + // FROM and INTO + // ------------------------------------------------------------------------- + + @Override + public void from(IWorkflowUserLikes from) { + setUid(from.getUid()); + setWid(from.getWid()); + } + + @Override + public E into(E into) { + into.from(this); + return into; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached WorkflowUserLikesRecord + */ + public WorkflowUserLikesRecord() { + super(WorkflowUserLikes.WORKFLOW_USER_LIKES); + } + + /** + * Create a detached, initialised WorkflowUserLikesRecord + */ + public WorkflowUserLikesRecord(UInteger uid, UInteger wid) { + super(WorkflowUserLikes.WORKFLOW_USER_LIKES); + + set(0, uid); + set(1, wid); + } +} diff --git a/core/scripts/sql/texera_ddl.sql b/core/scripts/sql/texera_ddl.sql index 4785301269d..eb2296ffe47 100644 --- a/core/scripts/sql/texera_ddl.sql +++ b/core/scripts/sql/texera_ddl.sql @@ -209,4 +209,22 @@ CREATE FULLTEXT INDEX `idx_dataset_name_description` ON `texera_db`.`dataset` (n CREATE FULLTEXT INDEX `idx_dataset_version_name` ON `texera_db`.`dataset_version` (name); ALTER TABLE workflow -ADD is_published BOOLEAN NOT NULL DEFAULT false; \ No newline at end of file +ADD is_published BOOLEAN NOT NULL DEFAULT false; + +CREATE TABLE IF NOT EXISTS workflow_user_likes +( + `uid` INT UNSIGNED NOT NULL, + `wid` INT UNSIGNED NOT NULL, + PRIMARY KEY (`uid`, `wid`), + FOREIGN KEY (`uid`) REFERENCES `user` (`uid`) ON DELETE CASCADE, + FOREIGN KEY (`wid`) REFERENCES `workflow` (`wid`) ON DELETE CASCADE + ) ENGINE = INNODB; + +CREATE TABLE IF NOT EXISTS workflow_user_clones +( + `uid` INT UNSIGNED NOT NULL, + `wid` INT UNSIGNED NOT NULL, + PRIMARY KEY (`uid`, `wid`), + FOREIGN KEY (`uid`) REFERENCES `user` (`uid`) ON DELETE CASCADE, + FOREIGN KEY (`wid`) REFERENCES `workflow` (`wid`) ON DELETE CASCADE + ) ENGINE = INNODB; \ No newline at end of file diff --git a/core/scripts/sql/update/16.sql b/core/scripts/sql/update/16.sql new file mode 100644 index 00000000000..ddf34605f91 --- /dev/null +++ b/core/scripts/sql/update/16.sql @@ -0,0 +1,18 @@ +USE texera_db; +CREATE TABLE IF NOT EXISTS workflow_user_likes +( + `uid` INT UNSIGNED NOT NULL, + `wid` INT UNSIGNED NOT NULL, + PRIMARY KEY (`uid`, `wid`), + FOREIGN KEY (`uid`) REFERENCES `user` (`uid`) ON DELETE CASCADE, + FOREIGN KEY (`wid`) REFERENCES `workflow` (`wid`) ON DELETE CASCADE + ) ENGINE = INNODB; + +CREATE TABLE IF NOT EXISTS workflow_user_clones +( + `uid` INT UNSIGNED NOT NULL, + `wid` INT UNSIGNED NOT NULL, + PRIMARY KEY (`uid`, `wid`), + FOREIGN KEY (`uid`) REFERENCES `user` (`uid`) ON DELETE CASCADE, + FOREIGN KEY (`wid`) REFERENCES `workflow` (`wid`) ON DELETE CASCADE + ) ENGINE = INNODB; \ No newline at end of file From 5ebe2c22892471ed523c47ae47702833c903c192 Mon Sep 17 00:00:00 2001 From: gspikehalo <2318002579@qq.com> Date: Fri, 4 Oct 2024 13:42:51 -0700 Subject: [PATCH 05/44] add like button on list item --- .../hub/workflow/HubWorkflowResource.scala | 69 +++++++++++++++++++ .../user/list-item/list-item.component.html | 21 ++++++ .../user/list-item/list-item.component.ts | 47 ++++++++++++- .../service/workflow/hub-workflow.service.ts | 14 ++++ 4 files changed, 150 insertions(+), 1 deletion(-) diff --git a/core/amber/src/main/scala/edu/uci/ics/texera/web/resource/dashboard/hub/workflow/HubWorkflowResource.scala b/core/amber/src/main/scala/edu/uci/ics/texera/web/resource/dashboard/hub/workflow/HubWorkflowResource.scala index cc85ee61957..40f26602a06 100644 --- a/core/amber/src/main/scala/edu/uci/ics/texera/web/resource/dashboard/hub/workflow/HubWorkflowResource.scala +++ b/core/amber/src/main/scala/edu/uci/ics/texera/web/resource/dashboard/hub/workflow/HubWorkflowResource.scala @@ -104,4 +104,73 @@ class HubWorkflowResource { .where(WORKFLOW.WID.eq(wid)) .fetchOneInto(classOf[String]) } + + @GET + @Path("/isLiked") + @Produces(Array(MediaType.APPLICATION_JSON)) + def isLiked(@QueryParam("workflowId") workflowId: UInteger, @QueryParam("userId") userId: UInteger): Boolean = { + val existingLike = context + .selectFrom(WORKFLOW_USER_LIKES) + .where(WORKFLOW_USER_LIKES.UID.eq(userId) + .and(WORKFLOW_USER_LIKES.WID.eq(workflowId))) + .fetchOne() + + existingLike != null + } + + @POST + @Path("/like") + @Consumes(Array(MediaType.APPLICATION_JSON)) + def likeWorkflow(likeRequest: Array[UInteger]): Boolean = { + if (likeRequest.length != 2) { + return false + } + + val workflowId = likeRequest(0) + val userId = likeRequest(1) + + val existingLike = context + .selectFrom(WORKFLOW_USER_LIKES) + .where(WORKFLOW_USER_LIKES.UID.eq(userId) + .and(WORKFLOW_USER_LIKES.WID.eq(workflowId))) + .fetchOne() + + if (existingLike == null) { + context.insertInto(WORKFLOW_USER_LIKES) + .set(WORKFLOW_USER_LIKES.UID, userId) + .set(WORKFLOW_USER_LIKES.WID, workflowId) + .execute() + true + } else { + false + } + } + + @POST + @Path("/unlike") + @Consumes(Array(MediaType.APPLICATION_JSON)) + def unlikeWorkflow(likeRequest: Array[UInteger]): Boolean = { + if (likeRequest.length != 2) { + return false + } + + val workflowId = likeRequest(0) + val userId = likeRequest(1) + + val existingLike = context + .selectFrom(WORKFLOW_USER_LIKES) + .where(WORKFLOW_USER_LIKES.UID.eq(userId) + .and(WORKFLOW_USER_LIKES.WID.eq(workflowId))) + .fetchOne() + + if (existingLike != null) { + context.deleteFrom(WORKFLOW_USER_LIKES) + .where(WORKFLOW_USER_LIKES.UID.eq(userId) + .and(WORKFLOW_USER_LIKES.WID.eq(workflowId))) + .execute() + true + } else { + false + } + } } diff --git a/core/gui/src/app/dashboard/component/user/list-item/list-item.component.html b/core/gui/src/app/dashboard/component/user/list-item/list-item.component.html index 39230edcbb3..47041ef6260 100644 --- a/core/gui/src/app/dashboard/component/user/list-item/list-item.component.html +++ b/core/gui/src/app/dashboard/component/user/list-item/list-item.component.html @@ -183,4 +183,25 @@ nzType="delete"> + +
+ +
diff --git a/core/gui/src/app/dashboard/component/user/list-item/list-item.component.ts b/core/gui/src/app/dashboard/component/user/list-item/list-item.component.ts index 72dca33ba7b..841ee077f81 100644 --- a/core/gui/src/app/dashboard/component/user/list-item/list-item.component.ts +++ b/core/gui/src/app/dashboard/component/user/list-item/list-item.component.ts @@ -22,6 +22,8 @@ import { FileSaverService } from "src/app/dashboard/service/user/file/file-saver import { firstValueFrom } from "rxjs"; import { SearchService } from "../../../service/user/search.service"; import { HubWorkflowDetailComponent } from "../../../../hub/component/workflow/detail/hub-workflow-detail.component"; +import { HubWorkflowService } from "../../../../hub/service/workflow/hub-workflow.service"; + @UntilDestroy() @Component({ @@ -43,6 +45,7 @@ export class ListItemComponent implements OnInit, OnChanges { ROUTER_WORKFLOW_DETAIL_BASE_URL = "/dashboard/hub/workflow/search/result/detail"; entryLink: string[] = []; public iconType: string = ""; + isLiked: boolean = false; @Input() isPrivateSearch = false; @Input() editable = false; private _entry?: DashboardEntry; @@ -68,7 +71,8 @@ export class ListItemComponent implements OnInit, OnChanges { private modalService: NzModalService, private workflowPersistService: WorkflowPersistService, private fileSaverService: FileSaverService, - private modal: NzModalService + private modal: NzModalService, + private hubWorkflowService: HubWorkflowService ) {} initializeEntry() { @@ -102,12 +106,24 @@ export class ListItemComponent implements OnInit, OnChanges { ngOnInit(): void { this.initializeEntry(); + if (this.entry.id !== undefined && this.currentUid !== undefined) { + // eslint-disable-next-line rxjs-angular/prefer-takeuntil + this.hubWorkflowService.isWorkflowLiked(this.entry.id, this.currentUid).subscribe((isLiked: boolean) => { + this.isLiked = isLiked; + }); + } } ngOnChanges(changes: SimpleChanges): void { if (changes["entry"]) { this.initializeEntry(); } + if (this.entry.id !== undefined && this.currentUid !== undefined) { + // eslint-disable-next-line rxjs-angular/prefer-takeuntil + this.hubWorkflowService.isWorkflowLiked(this.entry.id, this.currentUid).subscribe((isLiked: boolean) => { + this.isLiked = isLiked; + }); + } } public async onClickOpenShareAccess(): Promise { @@ -259,4 +275,33 @@ export class ListItemComponent implements OnInit, OnChanges { } } } + + + toggleLike(workflowId: number | undefined, userId: number | undefined): void { + if (workflowId === undefined || userId === undefined) { + return; + } + + if (this.isLiked) { + // eslint-disable-next-line rxjs-angular/prefer-takeuntil + this.hubWorkflowService.postUnlikeWorkflow(workflowId, userId).subscribe((success: boolean) => { + if (success) { + this.isLiked = false; + console.log("Successfully unliked the workflow"); + } else { + console.error("Error unliking the workflow"); + } + }); + } else { + // eslint-disable-next-line rxjs-angular/prefer-takeuntil + this.hubWorkflowService.postLikeWorkflow(workflowId, userId).subscribe((success: boolean) => { + if (success) { + this.isLiked = true; + console.log("Successfully liked the workflow"); + } else { + console.error("Error liking the workflow"); + } + }); + } + } } diff --git a/core/gui/src/app/hub/service/workflow/hub-workflow.service.ts b/core/gui/src/app/hub/service/workflow/hub-workflow.service.ts index 903b7bd2bfe..4acc9fd3202 100644 --- a/core/gui/src/app/hub/service/workflow/hub-workflow.service.ts +++ b/core/gui/src/app/hub/service/workflow/hub-workflow.service.ts @@ -51,4 +51,18 @@ export class HubWorkflowService { public cloneWorkflow(wid: number): Observable { return this.http.post(`${WORKFLOW_BASE_URL}/clone/${wid}`, null); } + + public isWorkflowLiked(workflowId: number, userId: number): Observable { + return this.http.get(`${this.BASE_URL}/isLiked`, { + params: { workflowId: workflowId.toString(), userId: userId.toString() } + }); + } + + public postLikeWorkflow(workflowId: number, userId: number): Observable { + return this.http.post(`${this.BASE_URL}/like`, [workflowId, userId]); + } + + public postUnlikeWorkflow(workflowId: number, userId: number): Observable { + return this.http.post(`${this.BASE_URL}/unlike`, [workflowId, userId]); + } } From 2347c265c33a97811a445b3b8e9035308822aa1a Mon Sep 17 00:00:00 2001 From: gspikehalo <2318002579@qq.com> Date: Fri, 4 Oct 2024 14:10:44 -0700 Subject: [PATCH 06/44] add live button in detail page --- .../user/list-item/list-item.component.html | 8 +-- .../user/list-item/list-item.component.scss | 30 ++++++++ .../user/list-item/list-item.component.ts | 1 - .../detail/hub-workflow-detail.component.html | 14 ++++ .../detail/hub-workflow-detail.component.scss | 72 +++++++++++++++++++ .../detail/hub-workflow-detail.component.ts | 38 ++++++++++ 6 files changed, 157 insertions(+), 6 deletions(-) diff --git a/core/gui/src/app/dashboard/component/user/list-item/list-item.component.html b/core/gui/src/app/dashboard/component/user/list-item/list-item.component.html index 47041ef6260..42fe4dee23d 100644 --- a/core/gui/src/app/dashboard/component/user/list-item/list-item.component.html +++ b/core/gui/src/app/dashboard/component/user/list-item/list-item.component.html @@ -190,17 +190,15 @@ diff --git a/core/gui/src/app/dashboard/component/user/list-item/list-item.component.scss b/core/gui/src/app/dashboard/component/user/list-item/list-item.component.scss index a0921331622..5f4fbaeadf2 100644 --- a/core/gui/src/app/dashboard/component/user/list-item/list-item.component.scss +++ b/core/gui/src/app/dashboard/component/user/list-item/list-item.component.scss @@ -157,3 +157,33 @@ } } } + +.like-button { + background-color: transparent; + border: none; + cursor: pointer; + padding: 0; + margin: 0; + display: inline-flex; + align-items: center; + justify-content: center; + + &:hover { + background-color: #f0f0f0; + } +} + +.like-icon { + color: black; + stroke-width: 2px; + font-size: 18px; + + &.liked { + color: red; + } + + &.not-liked { + color: black; + } +} + diff --git a/core/gui/src/app/dashboard/component/user/list-item/list-item.component.ts b/core/gui/src/app/dashboard/component/user/list-item/list-item.component.ts index 841ee077f81..fbb2a5a839f 100644 --- a/core/gui/src/app/dashboard/component/user/list-item/list-item.component.ts +++ b/core/gui/src/app/dashboard/component/user/list-item/list-item.component.ts @@ -276,7 +276,6 @@ export class ListItemComponent implements OnInit, OnChanges { } } - toggleLike(workflowId: number | undefined, userId: number | undefined): void { if (workflowId === undefined || userId === undefined) { return; diff --git a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html index a61019990eb..4a510370236 100644 --- a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html +++ b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html @@ -17,6 +17,20 @@

Workflow Detail Page

+
diff --git a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.scss b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.scss index 8768d634cea..097adda2ccc 100644 --- a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.scss +++ b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.scss @@ -57,9 +57,9 @@ texera-mini-map { //z-index: 3; } -//.prevent-select { -// user-select: none; -//} +.prevent-select { + user-select: none; +} .workflow-description { padding: 10px; @@ -86,64 +86,56 @@ texera-mini-map { gap: 10px; } -.clone-button { +.clone-button, .like-button { background-color: white; color: black; - width: 38px; + width: auto; + min-width: 90px; height: 38px; - border-radius: 0; - padding: 0; + border-radius: 8px; + padding: 0 12px; cursor: pointer; - border: none; - box-shadow: none; + border: 1px solid #e0e0e0; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); display: flex; align-items: center; - justify-content: center; + justify-content: space-between; margin-right: 10px; margin-bottom: 10px; - transition: background-color 0.3s ease; + transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease; } -.clone-button:hover { - background-color: #e0e0e0; +.clone-button:hover, .like-button:hover { + background-color: #f0f0f0; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); } -.clone-button i { - font-size: 20px; +.like-button.liked { + border-color: red; } -.like-button { - background-color: white; - color: black; - width: 38px; - height: 38px; - border-radius: 0; - padding: 0; - cursor: pointer; - border: none; - box-shadow: none; - display: flex; - align-items: center; - justify-content: center; +.clone-button i, .like-icon { + font-size: 20px; margin-right: 10px; - margin-bottom: 10px; - transition: background-color 0.3s ease; +} - &:hover { - background-color: #e0e0e0; - } +.like-icon.liked { + color: red; } -.like-icon { - font-size: 20px; - color: black; - stroke-width: 2px; +.separator { + width: 1px; + height: 60%; + background-color: #ccc; + margin: 0 8px; +} - &.liked { - color: red; - } +.clone-button span, .like-button span { + font-size: 14px; + color: #888; + margin-left: 8px; +} - &.not-liked { - color: black; - } +.like-button.liked span { + color: red; } diff --git a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.ts b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.ts index f642993bd5a..8874c6ae245 100644 --- a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.ts +++ b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.ts @@ -43,6 +43,8 @@ export class HubWorkflowDetailComponent implements AfterViewInit, OnDestroy, OnI isLogin = this.userService.isLogin(); isLiked: boolean = false; currentUid: number | undefined; + likeCount: number = 0; + cloneCount: number = 0; workflow = { steps: [ @@ -108,6 +110,20 @@ export class HubWorkflowDetailComponent implements AfterViewInit, OnDestroy, OnI this.route.parent?.snapshot.url.some(segment => segment.path === "detail") || this.route.snapshot.url.some(segment => segment.path === "detail"); + if (this.wid) { + this.hubWorkflowService.getLikeCount(this.wid) + .pipe(untilDestroyed(this)) + .subscribe(count => { + this.likeCount = count; + }); + + this.hubWorkflowService.getCloneCount(this.wid) + .pipe(untilDestroyed(this)) + .subscribe(count => { + this.cloneCount = count; + }); + } + this.hubWorkflowService .getOwnerUser(this.wid) .pipe(untilDestroyed(this)) @@ -127,8 +143,7 @@ export class HubWorkflowDetailComponent implements AfterViewInit, OnDestroy, OnI this.workflowDescription = workflowDescription || "No description available"; }); if (this.wid !== undefined && this.currentUid != undefined) { - // eslint-disable-next-line rxjs-angular/prefer-takeuntil - this.hubWorkflowService.isWorkflowLiked(this.wid, this.currentUid).subscribe((isLiked: boolean) => { + this.hubWorkflowService.isWorkflowLiked(this.wid, this.currentUid).pipe(untilDestroyed(this)).subscribe((isLiked: boolean) => { this.isLiked = isLiked; }); } @@ -261,20 +276,24 @@ export class HubWorkflowDetailComponent implements AfterViewInit, OnDestroy, OnI } if (this.isLiked) { - // eslint-disable-next-line rxjs-angular/prefer-takeuntil - this.hubWorkflowService.postUnlikeWorkflow(workflowId, userId).subscribe((success: boolean) => { + this.hubWorkflowService.postUnlikeWorkflow(workflowId, userId).pipe(untilDestroyed(this)).subscribe((success: boolean) => { if (success) { this.isLiked = false; + this.hubWorkflowService.getLikeCount(workflowId).pipe(untilDestroyed(this)).subscribe((count: number) => { + this.likeCount = count; + }); console.log("Successfully unliked the workflow"); } else { console.error("Error unliking the workflow"); } }); } else { - // eslint-disable-next-line rxjs-angular/prefer-takeuntil - this.hubWorkflowService.postLikeWorkflow(workflowId, userId).subscribe((success: boolean) => { + this.hubWorkflowService.postLikeWorkflow(workflowId, userId).pipe(untilDestroyed(this)).subscribe((success: boolean) => { if (success) { this.isLiked = true; + this.hubWorkflowService.getLikeCount(workflowId).pipe(untilDestroyed(this)).subscribe((count: number) => { + this.likeCount = count; + }); console.log("Successfully liked the workflow"); } else { console.error("Error liking the workflow"); @@ -282,4 +301,11 @@ export class HubWorkflowDetailComponent implements AfterViewInit, OnDestroy, OnI }); } } + + formatLikeCount(count: number): string { + if (count >= 1000) { + return (count / 1000).toFixed(1) + "k"; + } + return count.toString(); + } } diff --git a/core/gui/src/app/hub/service/workflow/hub-workflow.service.ts b/core/gui/src/app/hub/service/workflow/hub-workflow.service.ts index 3525ad21856..d9f2a0cf673 100644 --- a/core/gui/src/app/hub/service/workflow/hub-workflow.service.ts +++ b/core/gui/src/app/hub/service/workflow/hub-workflow.service.ts @@ -65,4 +65,12 @@ export class HubWorkflowService { public postUnlikeWorkflow(workflowId: number, userId: number): Observable { return this.http.post(`${this.BASE_URL}/unlike`, [workflowId, userId]); } + + public getLikeCount(wid: number): Observable { + return this.http.get(`${this.BASE_URL}/likeCount/${wid}`); + } + + public getCloneCount(wid: number): Observable { + return this.http.get(`${this.BASE_URL}/cloneCount/${wid}`); + } } From 3c04c01a2caa17f869dcf7167956e75c4a0f8d10 Mon Sep 17 00:00:00 2001 From: gspikehalo <2318002579@qq.com> Date: Sat, 5 Oct 2024 12:37:52 -0700 Subject: [PATCH 10/44] Disable the copy button for the owner preview detail interface --- .../detail/hub-workflow-detail.component.html | 16 ++++++++++++++++ .../detail/hub-workflow-detail.component.scss | 7 +++++++ 2 files changed, 23 insertions(+) diff --git a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html index d6120da676d..0e52e0a1789 100644 --- a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html +++ b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html @@ -45,6 +45,22 @@

Workflow Detail Page

nzTheme="outline"> {{ formatLikeCount(cloneCount) }} + + diff --git a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.scss b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.scss index 097adda2ccc..7614517e886 100644 --- a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.scss +++ b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.scss @@ -139,3 +139,10 @@ texera-mini-map { .like-button.liked span { color: red; } + +.disabled-button { + background-color: #f0f0f0; + color: #a0a0a0; + border-color: #d0d0d0; + cursor: not-allowed; +} From eb29b7bd503ee2106e1799292431ed01402c4e54 Mon Sep 17 00:00:00 2001 From: gspikehalo <2318002579@qq.com> Date: Sat, 5 Oct 2024 12:42:29 -0700 Subject: [PATCH 11/44] fmt fix --- .../user/workflow/WorkflowResource.scala | 3 +- .../user/list-item/list-item.component.ts | 75 +++++++++++------- .../detail/hub-workflow-detail.component.html | 14 ++-- .../detail/hub-workflow-detail.component.scss | 18 +++-- .../detail/hub-workflow-detail.component.ts | 79 +++++++++++-------- 5 files changed, 115 insertions(+), 74 deletions(-) diff --git a/core/amber/src/main/scala/edu/uci/ics/texera/web/resource/dashboard/user/workflow/WorkflowResource.scala b/core/amber/src/main/scala/edu/uci/ics/texera/web/resource/dashboard/user/workflow/WorkflowResource.scala index 1f62c32e890..30dc578a363 100644 --- a/core/amber/src/main/scala/edu/uci/ics/texera/web/resource/dashboard/user/workflow/WorkflowResource.scala +++ b/core/amber/src/main/scala/edu/uci/ics/texera/web/resource/dashboard/user/workflow/WorkflowResource.scala @@ -407,7 +407,8 @@ class WorkflowResource extends LazyLogging { .fetchOne() if (existingCloneRecord == null) { - context.insertInto(WORKFLOW_USER_CLONES) + context + .insertInto(WORKFLOW_USER_CLONES) .set(WORKFLOW_USER_CLONES.UID, sessionUser.getUid) .set(WORKFLOW_USER_CLONES.WID, wid) .execute() diff --git a/core/gui/src/app/dashboard/component/user/list-item/list-item.component.ts b/core/gui/src/app/dashboard/component/user/list-item/list-item.component.ts index 0362d90ce36..f694774ea05 100644 --- a/core/gui/src/app/dashboard/component/user/list-item/list-item.component.ts +++ b/core/gui/src/app/dashboard/component/user/list-item/list-item.component.ts @@ -77,14 +77,17 @@ export class ListItemComponent implements OnInit, OnChanges { initializeEntry() { if (this.entry.type === "workflow") { if (typeof this.entry.id === "number") { - this.searchService.getWorkflowOwners(this.entry.id).pipe(untilDestroyed(this)).subscribe((data: number[]) => { - this.owners = data; - if (this.currentUid !== undefined && this.owners.includes(this.currentUid)) { - this.entryLink = [this.ROUTER_WORKFLOW_BASE_URL, String(this.entry.id)]; - } else { - this.entryLink = [this.ROUTER_WORKFLOW_DETAIL_BASE_URL, String(this.entry.id)]; - } - }); + this.searchService + .getWorkflowOwners(this.entry.id) + .pipe(untilDestroyed(this)) + .subscribe((data: number[]) => { + this.owners = data; + if (this.currentUid !== undefined && this.owners.includes(this.currentUid)) { + this.entryLink = [this.ROUTER_WORKFLOW_BASE_URL, String(this.entry.id)]; + } else { + this.entryLink = [this.ROUTER_WORKFLOW_DETAIL_BASE_URL, String(this.entry.id)]; + } + }); } // this.entryLink = this.ROUTER_WORKFLOW_BASE_URL + "/" + this.entry.id; this.iconType = "project"; @@ -105,9 +108,12 @@ export class ListItemComponent implements OnInit, OnChanges { ngOnInit(): void { this.initializeEntry(); if (this.entry.id !== undefined && this.currentUid !== undefined) { - this.hubWorkflowService.isWorkflowLiked(this.entry.id, this.currentUid).pipe(untilDestroyed(this)).subscribe((isLiked: boolean) => { - this.isLiked = isLiked; - }); + this.hubWorkflowService + .isWorkflowLiked(this.entry.id, this.currentUid) + .pipe(untilDestroyed(this)) + .subscribe((isLiked: boolean) => { + this.isLiked = isLiked; + }); } } @@ -116,9 +122,12 @@ export class ListItemComponent implements OnInit, OnChanges { this.initializeEntry(); } if (this.entry.id !== undefined && this.currentUid !== undefined) { - this.hubWorkflowService.isWorkflowLiked(this.entry.id, this.currentUid).pipe(untilDestroyed(this)).subscribe((isLiked: boolean) => { - this.isLiked = isLiked; - }); + this.hubWorkflowService + .isWorkflowLiked(this.entry.id, this.currentUid) + .pipe(untilDestroyed(this)) + .subscribe((isLiked: boolean) => { + this.isLiked = isLiked; + }); } } @@ -278,23 +287,29 @@ export class ListItemComponent implements OnInit, OnChanges { } if (this.isLiked) { - this.hubWorkflowService.postUnlikeWorkflow(workflowId, userId).pipe(untilDestroyed(this)).subscribe((success: boolean) => { - if (success) { - this.isLiked = false; - console.log("Successfully unliked the workflow"); - } else { - console.error("Error unliking the workflow"); - } - }); + this.hubWorkflowService + .postUnlikeWorkflow(workflowId, userId) + .pipe(untilDestroyed(this)) + .subscribe((success: boolean) => { + if (success) { + this.isLiked = false; + console.log("Successfully unliked the workflow"); + } else { + console.error("Error unliking the workflow"); + } + }); } else { - this.hubWorkflowService.postLikeWorkflow(workflowId, userId).pipe(untilDestroyed(this)).subscribe((success: boolean) => { - if (success) { - this.isLiked = true; - console.log("Successfully liked the workflow"); - } else { - console.error("Error liking the workflow"); - } - }); + this.hubWorkflowService + .postLikeWorkflow(workflowId, userId) + .pipe(untilDestroyed(this)) + .subscribe((success: boolean) => { + if (success) { + this.isLiked = true; + console.log("Successfully liked the workflow"); + } else { + console.error("Error liking the workflow"); + } + }); } } } diff --git a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html index 0e52e0a1789..e845079d145 100644 --- a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html +++ b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html @@ -53,13 +53,13 @@

Workflow Detail Page

title="Copy" *ngIf="isLogin" [ngClass]="{ 'disabled-button': !isHub }" - [disabled]="!isHub" - (click)="cloneWorkflow()"> - - {{ formatLikeCount(cloneCount) }} + [disabled]="!isHub" + (click)="cloneWorkflow()"> + + {{ formatLikeCount(cloneCount) }} diff --git a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.scss b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.scss index 7614517e886..eddbda10d83 100644 --- a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.scss +++ b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.scss @@ -86,7 +86,8 @@ texera-mini-map { gap: 10px; } -.clone-button, .like-button { +.clone-button, +.like-button { background-color: white; color: black; width: auto; @@ -102,10 +103,15 @@ texera-mini-map { justify-content: space-between; margin-right: 10px; margin-bottom: 10px; - transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease; + transition: + background-color 0.3s ease, + color 0.3s ease, + border-color 0.3s ease, + box-shadow 0.3s ease; } -.clone-button:hover, .like-button:hover { +.clone-button:hover, +.like-button:hover { background-color: #f0f0f0; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); } @@ -114,7 +120,8 @@ texera-mini-map { border-color: red; } -.clone-button i, .like-icon { +.clone-button i, +.like-icon { font-size: 20px; margin-right: 10px; } @@ -130,7 +137,8 @@ texera-mini-map { margin: 0 8px; } -.clone-button span, .like-button span { +.clone-button span, +.like-button span { font-size: 14px; color: #888; margin-left: 8px; diff --git a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.ts b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.ts index 8874c6ae245..de6767889ad 100644 --- a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.ts +++ b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.ts @@ -111,17 +111,19 @@ export class HubWorkflowDetailComponent implements AfterViewInit, OnDestroy, OnI this.route.snapshot.url.some(segment => segment.path === "detail"); if (this.wid) { - this.hubWorkflowService.getLikeCount(this.wid) + this.hubWorkflowService + .getLikeCount(this.wid) .pipe(untilDestroyed(this)) .subscribe(count => { - this.likeCount = count; - }); + this.likeCount = count; + }); - this.hubWorkflowService.getCloneCount(this.wid) + this.hubWorkflowService + .getCloneCount(this.wid) .pipe(untilDestroyed(this)) .subscribe(count => { - this.cloneCount = count; - }); + this.cloneCount = count; + }); } this.hubWorkflowService @@ -143,9 +145,12 @@ export class HubWorkflowDetailComponent implements AfterViewInit, OnDestroy, OnI this.workflowDescription = workflowDescription || "No description available"; }); if (this.wid !== undefined && this.currentUid != undefined) { - this.hubWorkflowService.isWorkflowLiked(this.wid, this.currentUid).pipe(untilDestroyed(this)).subscribe((isLiked: boolean) => { - this.isLiked = isLiked; - }); + this.hubWorkflowService + .isWorkflowLiked(this.wid, this.currentUid) + .pipe(untilDestroyed(this)) + .subscribe((isLiked: boolean) => { + this.isLiked = isLiked; + }); } } @@ -276,29 +281,41 @@ export class HubWorkflowDetailComponent implements AfterViewInit, OnDestroy, OnI } if (this.isLiked) { - this.hubWorkflowService.postUnlikeWorkflow(workflowId, userId).pipe(untilDestroyed(this)).subscribe((success: boolean) => { - if (success) { - this.isLiked = false; - this.hubWorkflowService.getLikeCount(workflowId).pipe(untilDestroyed(this)).subscribe((count: number) => { - this.likeCount = count; - }); - console.log("Successfully unliked the workflow"); - } else { - console.error("Error unliking the workflow"); - } - }); + this.hubWorkflowService + .postUnlikeWorkflow(workflowId, userId) + .pipe(untilDestroyed(this)) + .subscribe((success: boolean) => { + if (success) { + this.isLiked = false; + this.hubWorkflowService + .getLikeCount(workflowId) + .pipe(untilDestroyed(this)) + .subscribe((count: number) => { + this.likeCount = count; + }); + console.log("Successfully unliked the workflow"); + } else { + console.error("Error unliking the workflow"); + } + }); } else { - this.hubWorkflowService.postLikeWorkflow(workflowId, userId).pipe(untilDestroyed(this)).subscribe((success: boolean) => { - if (success) { - this.isLiked = true; - this.hubWorkflowService.getLikeCount(workflowId).pipe(untilDestroyed(this)).subscribe((count: number) => { - this.likeCount = count; - }); - console.log("Successfully liked the workflow"); - } else { - console.error("Error liking the workflow"); - } - }); + this.hubWorkflowService + .postLikeWorkflow(workflowId, userId) + .pipe(untilDestroyed(this)) + .subscribe((success: boolean) => { + if (success) { + this.isLiked = true; + this.hubWorkflowService + .getLikeCount(workflowId) + .pipe(untilDestroyed(this)) + .subscribe((count: number) => { + this.likeCount = count; + }); + console.log("Successfully liked the workflow"); + } else { + console.error("Error liking the workflow"); + } + }); } } From 298f1e40fac0dbf0a4a3db6390b73767679ae03d Mon Sep 17 00:00:00 2001 From: gspikehalo <2318002579@qq.com> Date: Sun, 6 Oct 2024 16:02:00 -0700 Subject: [PATCH 12/44] quick fix --- .../detail/hub-workflow-detail.component.html | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html index e845079d145..c0ddecdeaf0 100644 --- a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html +++ b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html @@ -34,17 +34,6 @@

Workflow Detail Page

{{ formatLikeCount(likeCount) }} - diff --git a/core/gui/src/app/dashboard/component/user/list-item/list-item.component.scss b/core/gui/src/app/dashboard/component/user/list-item/list-item.component.scss index e8079ea65f5..f0337e222cd 100644 --- a/core/gui/src/app/dashboard/component/user/list-item/list-item.component.scss +++ b/core/gui/src/app/dashboard/component/user/list-item/list-item.component.scss @@ -159,30 +159,53 @@ } .like-button { - background-color: transparent; - border: none; + background-color: white; + color: black; + width: auto; + min-width: 70px; + height: 30px; + border-radius: 6px; + padding: 0 8px; cursor: pointer; - padding: 0; - margin: 0; - display: inline-flex; + border: 1px solid #e0e0e0; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + display: flex; align-items: center; - justify-content: center; + justify-content: space-between; + margin-right: 8px; + margin-bottom: 8px; + transition: + background-color 0.3s ease, + color 0.3s ease, + border-color 0.3s ease, + box-shadow 0.3s ease; +} - &:hover { - background-color: #f0f0f0; - } +.like-button:hover { + background-color: #f0f0f0; + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.2); +} + +.like-button.liked { + border-color: red; } .like-icon { - color: black; - stroke-width: 2px; - font-size: 18px; + font-size: 16px; + margin-right: 6px; +} - &.liked { - color: red; - } +.like-icon.liked { + color: red; +} - &.not-liked { - color: black; - } +.like-button span { + font-size: 12px; + color: #888; + margin-left: 6px; } + +.like-button.liked span { + color: red; +} + diff --git a/core/gui/src/app/dashboard/component/user/list-item/list-item.component.ts b/core/gui/src/app/dashboard/component/user/list-item/list-item.component.ts index f694774ea05..2f5343c58c8 100644 --- a/core/gui/src/app/dashboard/component/user/list-item/list-item.component.ts +++ b/core/gui/src/app/dashboard/component/user/list-item/list-item.component.ts @@ -37,6 +37,7 @@ export class ListItemComponent implements OnInit, OnChanges { @ViewChild("descriptionInput") descriptionInput!: ElementRef; editingName = false; editingDescription = false; + likeCount: number = 0; ROUTER_WORKFLOW_BASE_URL = "/dashboard/user/workspace"; ROUTER_USER_PROJECT_BASE_URL = "/dashboard/user/project"; @@ -88,6 +89,12 @@ export class ListItemComponent implements OnInit, OnChanges { this.entryLink = [this.ROUTER_WORKFLOW_DETAIL_BASE_URL, String(this.entry.id)]; } }); + this.hubWorkflowService + .getLikeCount(this.entry.id) + .pipe(untilDestroyed(this)) + .subscribe(count => { + this.likeCount = count; + }); } // this.entryLink = this.ROUTER_WORKFLOW_BASE_URL + "/" + this.entry.id; this.iconType = "project"; @@ -293,6 +300,12 @@ export class ListItemComponent implements OnInit, OnChanges { .subscribe((success: boolean) => { if (success) { this.isLiked = false; + this.hubWorkflowService + .getLikeCount(workflowId) + .pipe(untilDestroyed(this)) + .subscribe((count: number) => { + this.likeCount = count; + }); console.log("Successfully unliked the workflow"); } else { console.error("Error unliking the workflow"); @@ -305,6 +318,12 @@ export class ListItemComponent implements OnInit, OnChanges { .subscribe((success: boolean) => { if (success) { this.isLiked = true; + this.hubWorkflowService + .getLikeCount(workflowId) + .pipe(untilDestroyed(this)) + .subscribe((count: number) => { + this.likeCount = count; + }); console.log("Successfully liked the workflow"); } else { console.error("Error liking the workflow"); @@ -312,4 +331,11 @@ export class ListItemComponent implements OnInit, OnChanges { }); } } + + formatLikeCount(count: number): string { + if (count >= 1000) { + return (count / 1000).toFixed(1) + "k"; + } + return count.toString(); + } } diff --git a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html index c0ddecdeaf0..95aaf738c3b 100644 --- a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html +++ b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html @@ -28,7 +28,7 @@

Workflow Detail Page

diff --git a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.scss b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.scss index eddbda10d83..59fdeb8b158 100644 --- a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.scss +++ b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.scss @@ -130,13 +130,6 @@ texera-mini-map { color: red; } -.separator { - width: 1px; - height: 60%; - background-color: #ccc; - margin: 0 8px; -} - .clone-button span, .like-button span { font-size: 14px; From b34c9f1eab86766bcf9f96eeadab180649267fbd Mon Sep 17 00:00:00 2001 From: shenghao fu <2318002579@qq.com> Date: Wed, 9 Oct 2024 12:17:13 -0700 Subject: [PATCH 14/44] enable the like button on hub list item when user is not logged in --- .../user/list-item/list-item.component.html | 25 +++++++++---------- .../user/list-item/list-item.component.scss | 12 +++++++++ 2 files changed, 24 insertions(+), 13 deletions(-) diff --git a/core/gui/src/app/dashboard/component/user/list-item/list-item.component.html b/core/gui/src/app/dashboard/component/user/list-item/list-item.component.html index 0846821f930..9985b26c0d1 100644 --- a/core/gui/src/app/dashboard/component/user/list-item/list-item.component.html +++ b/core/gui/src/app/dashboard/component/user/list-item/list-item.component.html @@ -183,26 +183,25 @@ nzType="delete"> -
diff --git a/core/gui/src/app/dashboard/component/user/list-item/list-item.component.scss b/core/gui/src/app/dashboard/component/user/list-item/list-item.component.scss index f0337e222cd..4498475282c 100644 --- a/core/gui/src/app/dashboard/component/user/list-item/list-item.component.scss +++ b/core/gui/src/app/dashboard/component/user/list-item/list-item.component.scss @@ -209,3 +209,15 @@ color: red; } +.disabled-like { + background-color: #e0e0e0; + color: #a0a0a0; + border-color: #d0d0d0; + cursor: not-allowed; +} + +.disabled-like:hover { + background-color: #f0f0f0; + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.2); + color: #a0a0a0; +} From 7684f1c2dba64ae20aedcb032eaef5657a7c7843 Mon Sep 17 00:00:00 2001 From: gspikehalo <2318002579@qq.com> Date: Wed, 9 Oct 2024 12:43:20 -0700 Subject: [PATCH 15/44] display but disable like and clone button in detail page --- .../user/list-item/list-item.component.html | 20 +++++++++---------- .../user/list-item/list-item.component.scss | 2 +- .../detail/hub-workflow-detail.component.html | 11 +++++----- .../detail/hub-workflow-detail.component.scss | 2 +- 4 files changed, 18 insertions(+), 17 deletions(-) diff --git a/core/gui/src/app/dashboard/component/user/list-item/list-item.component.html b/core/gui/src/app/dashboard/component/user/list-item/list-item.component.html index 9985b26c0d1..cc22c01251a 100644 --- a/core/gui/src/app/dashboard/component/user/list-item/list-item.component.html +++ b/core/gui/src/app/dashboard/component/user/list-item/list-item.component.html @@ -192,16 +192,16 @@ class="dropdown-item like-button" title="Like" [ngClass]="{ liked: isLiked, 'disabled-like': !currentUid }" - (click)="toggleLike(this.entry.id, this.currentUid)" - [attr.disabled]="!currentUid ? true : null"> - - {{ formatLikeCount(likeCount) }} + (click)="toggleLike(this.entry.id, this.currentUid)" + [attr.disabled]="!currentUid ? true : null"> + + {{ formatLikeCount(likeCount) }} diff --git a/core/gui/src/app/dashboard/component/user/list-item/list-item.component.scss b/core/gui/src/app/dashboard/component/user/list-item/list-item.component.scss index 4498475282c..9a3d6df3ca2 100644 --- a/core/gui/src/app/dashboard/component/user/list-item/list-item.component.scss +++ b/core/gui/src/app/dashboard/component/user/list-item/list-item.component.scss @@ -213,7 +213,7 @@ background-color: #e0e0e0; color: #a0a0a0; border-color: #d0d0d0; - cursor: not-allowed; + //cursor: not-allowed; } .disabled-like:hover { diff --git a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html index 95aaf738c3b..007552897e0 100644 --- a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html +++ b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html @@ -17,13 +17,14 @@

Workflow Detail Page

+ +
@@ -9,4 +19,3 @@

Welcome to Texera!

- diff --git a/core/gui/src/app/hub/component/landing-page/landing-page.component.scss b/core/gui/src/app/hub/component/landing-page/landing-page.component.scss index ca8e7ddc341..9e869f710cb 100644 --- a/core/gui/src/app/hub/component/landing-page/landing-page.component.scss +++ b/core/gui/src/app/hub/component/landing-page/landing-page.component.scss @@ -28,3 +28,9 @@ max-width: 1200px; margin-bottom: 40px; } + +.underline-link { + text-decoration: underline; + color: blue; + cursor: pointer; +} diff --git a/core/gui/src/app/hub/component/landing-page/landing-page.component.ts b/core/gui/src/app/hub/component/landing-page/landing-page.component.ts index a4364b4068c..6b882a516fd 100644 --- a/core/gui/src/app/hub/component/landing-page/landing-page.component.ts +++ b/core/gui/src/app/hub/component/landing-page/landing-page.component.ts @@ -1,10 +1,36 @@ -import { Component } from "@angular/core"; +import { Component, OnInit } from "@angular/core"; +import { Observable } from "rxjs"; +import { HubWorkflowService } from "../../service/workflow/hub-workflow.service"; +import { untilDestroyed } from "@ngneat/until-destroy"; +import { Router } from "@angular/router"; @Component({ selector: "texera-landing-page", templateUrl: "./landing-page.component.html", styleUrls: ["./landing-page.component.scss"], }) -export class LandingPageComponent { +export class LandingPageComponent implements OnInit { + public workflowCount: number = 0; + constructor( + private hubWorkflowService: HubWorkflowService, + private router: Router + ) {} + + ngOnInit(): void { + this.getWorkflowCount(); + } + + getWorkflowCount(): void { + this.hubWorkflowService + .getWorkflowCount() + .pipe(untilDestroyed(this)) + .subscribe((count: number) => { + this.workflowCount = count; + }); + } + + navigateToSearch(): void { + this.router.navigate(["/dashboard/search"], { queryParams: { q: "" } }); + } } From f5ae49b2df1ad8fdd7c7548a9f6caa8c3eaa5823 Mon Sep 17 00:00:00 2001 From: gspikehalo <2318002579@qq.com> Date: Fri, 11 Oct 2024 20:55:26 -0700 Subject: [PATCH 22/44] remove unused components. --- core/gui/src/app/app-routing.module.ts | 9 ++--- core/gui/src/app/app.module.ts | 4 --- .../user/list-item/list-item.component.ts | 2 +- .../component/user/search/search.component.ts | 5 --- .../src/app/hub/component/hub.component.html | 2 +- .../landing-page/landing-page.component.ts | 7 ++-- .../result/hub-workflow-result.component.html | 26 -------------- .../result/hub-workflow-result.component.scss | 29 --------------- .../result/hub-workflow-result.component.ts | 23 ------------ .../hub-workflow-search-bar.component.html | 19 ---------- .../hub-workflow-search-bar.component.ts | 36 ------------------- 11 files changed, 9 insertions(+), 153 deletions(-) delete mode 100644 core/gui/src/app/hub/component/workflow/result/hub-workflow-result.component.html delete mode 100644 core/gui/src/app/hub/component/workflow/result/hub-workflow-result.component.scss delete mode 100644 core/gui/src/app/hub/component/workflow/result/hub-workflow-result.component.ts delete mode 100644 core/gui/src/app/hub/component/workflow/search-bar/hub-workflow-search-bar.component.html delete mode 100644 core/gui/src/app/hub/component/workflow/search-bar/hub-workflow-search-bar.component.ts diff --git a/core/gui/src/app/app-routing.module.ts b/core/gui/src/app/app-routing.module.ts index ffb55a0ed33..d9621e8fe80 100644 --- a/core/gui/src/app/app-routing.module.ts +++ b/core/gui/src/app/app-routing.module.ts @@ -18,7 +18,6 @@ import { AdminGmailComponent } from "./dashboard/component/admin/gmail/admin-gma import { UserDatasetExplorerComponent } from "./dashboard/component/user/user-dataset/user-dataset-explorer/user-dataset-explorer.component"; import { UserDatasetComponent } from "./dashboard/component/user/user-dataset/user-dataset.component"; import { HubWorkflowSearchComponent } from "./hub/component/workflow/search/hub-workflow-search.component"; -import { HubWorkflowResultComponent } from "./hub/component/workflow/result/hub-workflow-result.component"; import { HubWorkflowComponent } from "./hub/component/workflow/hub-workflow.component"; import { HubWorkflowDetailComponent } from "./hub/component/workflow/detail/hub-workflow-detail.component"; import { LandingPageComponent } from "./hub/component/landing-page/landing-page.component"; @@ -46,15 +45,11 @@ if (environment.userSystemEnabled) { component: HubWorkflowComponent, children: [ { - path: "search", + path: "result", component: HubWorkflowSearchComponent, }, { - path: "search/result", - component: HubWorkflowResultComponent, - }, - { - path: "search/result/detail/:id", + path: "result/detail/:id", component: HubWorkflowDetailComponent, }, ], diff --git a/core/gui/src/app/app.module.ts b/core/gui/src/app/app.module.ts index b0a294d06da..13a9e45679f 100644 --- a/core/gui/src/app/app.module.ts +++ b/core/gui/src/app/app.module.ts @@ -134,9 +134,7 @@ import { ListItemComponent } from "./dashboard/component/user/list-item/list-ite import { HubComponent } from "./hub/component/hub.component"; import { HubWorkflowSearchComponent } from "./hub/component/workflow/search/hub-workflow-search.component"; import { GoogleLoginComponent } from "./dashboard/component/user/google-login/google-login.component"; -import { HubWorkflowResultComponent } from "./hub/component/workflow/result/hub-workflow-result.component"; import { HubWorkflowComponent } from "./hub/component/workflow/hub-workflow.component"; -import { HubWorkflowSearchBarComponent } from "./hub/component/workflow/search-bar/hub-workflow-search-bar.component"; import { HubWorkflowDetailComponent } from "./hub/component/workflow/detail/hub-workflow-detail.component"; import { LandingPageComponent } from "./hub/component/landing-page/landing-page.component"; @@ -223,9 +221,7 @@ registerLocaleData(en); HubComponent, HubWorkflowComponent, HubWorkflowSearchComponent, - HubWorkflowSearchBarComponent, HubWorkflowDetailComponent, - HubWorkflowResultComponent, GoogleLoginComponent, LandingPageComponent, ], diff --git a/core/gui/src/app/dashboard/component/user/list-item/list-item.component.ts b/core/gui/src/app/dashboard/component/user/list-item/list-item.component.ts index a07ee7746d2..88ad81734fd 100644 --- a/core/gui/src/app/dashboard/component/user/list-item/list-item.component.ts +++ b/core/gui/src/app/dashboard/component/user/list-item/list-item.component.ts @@ -41,7 +41,7 @@ export class ListItemComponent implements OnInit, OnChanges { ROUTER_WORKFLOW_BASE_URL = "/dashboard/user/workspace"; ROUTER_USER_PROJECT_BASE_URL = "/dashboard/user/project"; ROUTER_DATASET_BASE_URL = "/dashboard/user/dataset"; - ROUTER_WORKFLOW_DETAIL_BASE_URL = "/dashboard/hub/workflow/search/result/detail"; + ROUTER_WORKFLOW_DETAIL_BASE_URL = "/dashboard/hub/workflow/result/detail"; entryLink: string[] = []; public iconType: string = ""; isLiked: boolean = false; diff --git a/core/gui/src/app/dashboard/component/user/search/search.component.ts b/core/gui/src/app/dashboard/component/user/search/search.component.ts index 78b50e5a125..2adab8fa51e 100644 --- a/core/gui/src/app/dashboard/component/user/search/search.component.ts +++ b/core/gui/src/app/dashboard/component/user/search/search.component.ts @@ -64,19 +64,14 @@ export class SearchComponent implements AfterViewInit { if (keyword) { this.searchParam = keyword; this.updateMasterFilterList(); - } else { - this.filters.masterFilterList = []; - this.search(); } }); - console.log(this.filters.getSearchKeywords()); } async search(): Promise { // if (this.filters.masterFilterList.length === 0) { // return; // } - console.log(this.filters.getSearchKeywords()); const sameList = this.filters.masterFilterList.length === this.masterFilterList.length && this.filters.masterFilterList.every((v, i) => v === this.masterFilterList[i]); diff --git a/core/gui/src/app/hub/component/hub.component.html b/core/gui/src/app/hub/component/hub.component.html index e6ac67f44a4..36fa02c23ff 100644 --- a/core/gui/src/app/hub/component/hub.component.html +++ b/core/gui/src/app/hub/component/hub.component.html @@ -15,7 +15,7 @@ nz-tooltip="Search public workflows" nzMatchRouter="true" nzTooltipPlacement="right" - routerLink="/dashboard/hub/workflow/search"> + routerLink="/dashboard/hub/workflow/result"> diff --git a/core/gui/src/app/hub/component/landing-page/landing-page.component.ts b/core/gui/src/app/hub/component/landing-page/landing-page.component.ts index 6b882a516fd..448edca51d2 100644 --- a/core/gui/src/app/hub/component/landing-page/landing-page.component.ts +++ b/core/gui/src/app/hub/component/landing-page/landing-page.component.ts @@ -18,19 +18,22 @@ export class LandingPageComponent implements OnInit { ) {} ngOnInit(): void { + console.log("in init") this.getWorkflowCount(); } getWorkflowCount(): void { + console.log("in get count") this.hubWorkflowService .getWorkflowCount() - .pipe(untilDestroyed(this)) + // eslint-disable-next-line rxjs-angular/prefer-takeuntil .subscribe((count: number) => { this.workflowCount = count; + console.log("after count") }); } navigateToSearch(): void { - this.router.navigate(["/dashboard/search"], { queryParams: { q: "" } }); + this.router.navigate(["/dashboard/hub/workflow/result"]); } } diff --git a/core/gui/src/app/hub/component/workflow/result/hub-workflow-result.component.html b/core/gui/src/app/hub/component/workflow/result/hub-workflow-result.component.html deleted file mode 100644 index 3a302831f5e..00000000000 --- a/core/gui/src/app/hub/component/workflow/result/hub-workflow-result.component.html +++ /dev/null @@ -1,26 +0,0 @@ - - - -
- - -

ID: {{ workflow.wid }}

-

Description: {{ workflow.description }}

-

Created On: {{ workflow.creationTime | date }}

-

Modified On: {{ workflow.lastModifiedTime | date }}

- -
-
-
-
diff --git a/core/gui/src/app/hub/component/workflow/result/hub-workflow-result.component.scss b/core/gui/src/app/hub/component/workflow/result/hub-workflow-result.component.scss deleted file mode 100644 index 4985d3c4279..00000000000 --- a/core/gui/src/app/hub/component/workflow/result/hub-workflow-result.component.scss +++ /dev/null @@ -1,29 +0,0 @@ -.workflow-list { - display: flex; - flex-wrap: wrap; - justify-content: space-around; - padding: 20px; - background-color: #f9f9f9; -} - -.workflow-card { - width: 300px; - transition: - transform 0.3s, - box-shadow 0.3s; -} - -.workflow-card:hover { - transform: scale(1.05); - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); -} - -.workflow-card p { - margin: 0; - color: #666; -} - -.workflow-card button { - margin-top: 10px; - width: 100%; -} diff --git a/core/gui/src/app/hub/component/workflow/result/hub-workflow-result.component.ts b/core/gui/src/app/hub/component/workflow/result/hub-workflow-result.component.ts deleted file mode 100644 index 84e309120d7..00000000000 --- a/core/gui/src/app/hub/component/workflow/result/hub-workflow-result.component.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { Component } from "@angular/core"; -import { HubWorkflowService } from "../../../service/workflow/hub-workflow.service"; -import { HubWorkflow } from "../../type/hub-workflow.interface"; -import { UntilDestroy, untilDestroyed } from "@ngneat/until-destroy"; - -@UntilDestroy() -@Component({ - selector: "texera-hub-workflow-result", - templateUrl: "hub-workflow-result.component.html", - styleUrls: ["hub-workflow-result.component.scss"], -}) -export class HubWorkflowResultComponent { - listOfWorkflows: HubWorkflow[] = []; - - constructor(hubWorkflowService: HubWorkflowService) { - hubWorkflowService - .getWorkflowList() - .pipe(untilDestroyed(this)) - .subscribe(workflows => { - this.listOfWorkflows = workflows; - }); - } -} diff --git a/core/gui/src/app/hub/component/workflow/search-bar/hub-workflow-search-bar.component.html b/core/gui/src/app/hub/component/workflow/search-bar/hub-workflow-search-bar.component.html deleted file mode 100644 index 24e603e5fa8..00000000000 --- a/core/gui/src/app/hub/component/workflow/search-bar/hub-workflow-search-bar.component.html +++ /dev/null @@ -1,19 +0,0 @@ -
- - - - - -
diff --git a/core/gui/src/app/hub/component/workflow/search-bar/hub-workflow-search-bar.component.ts b/core/gui/src/app/hub/component/workflow/search-bar/hub-workflow-search-bar.component.ts deleted file mode 100644 index 7fdbfb50e68..00000000000 --- a/core/gui/src/app/hub/component/workflow/search-bar/hub-workflow-search-bar.component.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { Component } from "@angular/core"; -import { HubWorkflowService } from "../../../service/workflow/hub-workflow.service"; -import { UntilDestroy, untilDestroyed } from "@ngneat/until-destroy"; -import { Router } from "@angular/router"; - -@UntilDestroy() -@Component({ - selector: "texera-hub-workflow-search-bar", - templateUrl: "hub-workflow-search-bar.component.html", -}) -export class HubWorkflowSearchBarComponent { - inputValue?: string; - workflowNames: string[] = []; - filteredOptions: string[] = []; - - constructor( - hubWorkflowService: HubWorkflowService, - private router: Router - ) { - this.filteredOptions = this.workflowNames; - hubWorkflowService - .getWorkflowList() - .pipe(untilDestroyed(this)) - .subscribe(workflows => (this.workflowNames = workflows.map(obj => obj.name))); - } - - onChange(value: string) { - this.filteredOptions = this.workflowNames.filter( - option => option.toLowerCase().indexOf(value.toLowerCase()) !== -1 - ); - } - - onSubmit() { - this.router.navigate(["/dashboard/hub/workflow/search/result"]); - } -} From bf3fe046be22ee1af1c71341a68d6e8d93c397a5 Mon Sep 17 00:00:00 2001 From: gspikehalo <2318002579@qq.com> Date: Fri, 11 Oct 2024 23:39:51 -0700 Subject: [PATCH 23/44] refactor landing page --- .../landing-page/landing-page.component.html | 31 +++++---- .../landing-page/landing-page.component.scss | 63 ++++++++++++------- .../landing-page/landing-page.component.ts | 3 - 3 files changed, 60 insertions(+), 37 deletions(-) diff --git a/core/gui/src/app/hub/component/landing-page/landing-page.component.html b/core/gui/src/app/hub/component/landing-page/landing-page.component.html index 31ff85e4771..18e960a1e1c 100644 --- a/core/gui/src/app/hub/component/landing-page/landing-page.component.html +++ b/core/gui/src/app/hub/component/landing-page/landing-page.component.html @@ -1,17 +1,22 @@
-
-

Welcome to Texera!

-

Start your search journey with our powerful tools.

-

- There are - - {{ workflowCount }} workflows - - available. -

+
+ +
+

Texera Hub

+

+ Join our community to explore public workflows, collaborate with others, and enhance your data analytics + capabilities. Access + + {{workflowCount}} workflows + + provided by Texera and our community. +

+
+ + hub icon
diff --git a/core/gui/src/app/hub/component/landing-page/landing-page.component.scss b/core/gui/src/app/hub/component/landing-page/landing-page.component.scss index 9e869f710cb..b65de40f162 100644 --- a/core/gui/src/app/hub/component/landing-page/landing-page.component.scss +++ b/core/gui/src/app/hub/component/landing-page/landing-page.component.scss @@ -1,36 +1,57 @@ +.search-bar-wrapper { + width: 100%; + max-width: 1200px; + margin-bottom: 40px; +} + .landing-page-container { display: flex; flex-direction: column; + padding: 32px 20px 0 20px; align-items: center; - justify-content: flex-start; - height: 100vh; - text-align: center; - padding-top: 50px; - background-color: #f0f2f5; + height: 100%; + width: 100%; } -.title-text { - margin-bottom: 20px; +.search-bar { + max-width: 1200px; + width: 100%; +} + +.section-intro { + max-width: 1200px; + margin-top: 20px; + padding: 20px 0; + width: 100%; + display: flex; + justify-content: space-between; + align-items: center; } -.title-text h2 { - font-size: 2.5rem; - margin-bottom: 10px; +.section-intro-text { + max-width: 500px; } -.title-text p { - font-size: 1.25rem; - color: #555; +.section-intro-text > h1 { + font-size: 40px; + font-weight: bold; + margin: 0; } -.search-bar-wrapper { - width: 80%; - max-width: 1200px; - margin-bottom: 40px; +.section-intro-text > p { + color: grey; + font-size: 13px; + font-weight: 300; + margin-bottom: 20px; } -.underline-link { - text-decoration: underline; - color: blue; - cursor: pointer; +.section-intro-img { + max-height: 176px; } + +.browse-section { + max-width: 1200px; + width: 100%; + padding-bottom: 40px; +} + diff --git a/core/gui/src/app/hub/component/landing-page/landing-page.component.ts b/core/gui/src/app/hub/component/landing-page/landing-page.component.ts index 448edca51d2..4e40c60b8e9 100644 --- a/core/gui/src/app/hub/component/landing-page/landing-page.component.ts +++ b/core/gui/src/app/hub/component/landing-page/landing-page.component.ts @@ -18,18 +18,15 @@ export class LandingPageComponent implements OnInit { ) {} ngOnInit(): void { - console.log("in init") this.getWorkflowCount(); } getWorkflowCount(): void { - console.log("in get count") this.hubWorkflowService .getWorkflowCount() // eslint-disable-next-line rxjs-angular/prefer-takeuntil .subscribe((count: number) => { this.workflowCount = count; - console.log("after count") }); } From 275a2bff7c61d6ecfaec03c9351808f237d4320d Mon Sep 17 00:00:00 2001 From: gspikehalo <2318002579@qq.com> Date: Sat, 12 Oct 2024 10:27:34 -0700 Subject: [PATCH 24/44] fmt fix --- .../component/workflow/detail/hub-workflow-detail.component.html | 1 - 1 file changed, 1 deletion(-) diff --git a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html index 9807ada0235..007552897e0 100644 --- a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html +++ b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html @@ -45,7 +45,6 @@

Workflow Detail Page

[ngClass]="{ 'disabled-button': !isLogin || !isHub }" [disabled]="!isLogin || !isHub" (click)="cloneWorkflow()"> - Date: Sat, 12 Oct 2024 14:48:01 -0700 Subject: [PATCH 25/44] add browse section to the landing page --- .../hub/workflow/HubWorkflowResource.scala | 93 ++- core/gui/src/app/app.module.ts | 2 + .../component/dashboard.component.scss | 1 + .../browse-section.component.html | 39 ++ .../browse-section.component.scss | 79 +++ .../browse-section.component.spec.ts | 21 + .../browse-section.component.ts | 14 + .../landing-page/landing-page.component.html | 9 + .../landing-page/landing-page.component.scss | 3 +- .../landing-page/landing-page.component.ts | 71 ++- .../service/workflow/hub-workflow.service.ts | 9 + core/gui/src/assets/card_background.jpg | Bin 0 -> 414278 bytes core/gui/src/assets/svg/hub_icon.svg | 560 ++++++++++++++++++ 13 files changed, 895 insertions(+), 6 deletions(-) create mode 100644 core/gui/src/app/hub/component/browse-section/browse-section.component.html create mode 100644 core/gui/src/app/hub/component/browse-section/browse-section.component.scss create mode 100644 core/gui/src/app/hub/component/browse-section/browse-section.component.spec.ts create mode 100644 core/gui/src/app/hub/component/browse-section/browse-section.component.ts create mode 100644 core/gui/src/assets/card_background.jpg create mode 100644 core/gui/src/assets/svg/hub_icon.svg diff --git a/core/amber/src/main/scala/edu/uci/ics/texera/web/resource/dashboard/hub/workflow/HubWorkflowResource.scala b/core/amber/src/main/scala/edu/uci/ics/texera/web/resource/dashboard/hub/workflow/HubWorkflowResource.scala index 4d89f7ab1c7..9a837cc61e5 100644 --- a/core/amber/src/main/scala/edu/uci/ics/texera/web/resource/dashboard/hub/workflow/HubWorkflowResource.scala +++ b/core/amber/src/main/scala/edu/uci/ics/texera/web/resource/dashboard/hub/workflow/HubWorkflowResource.scala @@ -6,14 +6,68 @@ import edu.uci.ics.texera.web.model.jooq.generated.Tables._ import edu.uci.ics.texera.web.model.jooq.generated.enums.UserRole import edu.uci.ics.texera.web.model.jooq.generated.tables.daos.WorkflowDao import edu.uci.ics.texera.web.model.jooq.generated.tables.pojos.{User, Workflow} +import edu.uci.ics.texera.web.resource.dashboard.hub.workflow.HubWorkflowResource.fetchDashboardWorkflowsByWids import edu.uci.ics.texera.web.resource.dashboard.user.workflow.WorkflowAccessResource -import edu.uci.ics.texera.web.resource.dashboard.user.workflow.WorkflowResource.WorkflowWithPrivilege +import edu.uci.ics.texera.web.resource.dashboard.user.workflow.WorkflowResource.{DashboardWorkflow, WorkflowWithPrivilege} +import org.jooq.impl.DSL +import scala.jdk.CollectionConverters._ import java.util import javax.ws.rs._ import javax.ws.rs.core.MediaType import org.jooq.types.UInteger +import java.util.Collections + +object HubWorkflowResource { + final private lazy val context = SqlServer.createDSLContext() + + def fetchDashboardWorkflowsByWids(wids: Seq[UInteger]): util.List[DashboardWorkflow] = { + if (wids.nonEmpty) { + context + .select( + WORKFLOW.NAME, + WORKFLOW.DESCRIPTION, + WORKFLOW.WID, + WORKFLOW.CREATION_TIME, + WORKFLOW.LAST_MODIFIED_TIME, + USER.NAME.as("ownerName"), + WORKFLOW_OF_USER.UID.as("ownerId") + ) + .from(WORKFLOW) + .join(WORKFLOW_OF_USER).on(WORKFLOW.WID.eq(WORKFLOW_OF_USER.WID)) + .join(USER).on(WORKFLOW_OF_USER.UID.eq(USER.UID)) + .where(WORKFLOW.WID.in(wids: _*)) + .fetch() + .asScala + .map(record => { + val workflow = new Workflow( + record.get(WORKFLOW.NAME), + record.get(WORKFLOW.DESCRIPTION), + record.get(WORKFLOW.WID), + null, + record.get(WORKFLOW.CREATION_TIME), + record.get(WORKFLOW.LAST_MODIFIED_TIME), + null + ) + + DashboardWorkflow( + isOwner = false, + accessLevel = "", + ownerName = record.get("ownerName", classOf[String]), + workflow = workflow, + projectIDs = List(), + ownerId = record.get("ownerId", classOf[UInteger]) + ) + }) + .toList + .asJava + } else { + Collections.emptyList[DashboardWorkflow]() + } + } +} + @Produces(Array(MediaType.APPLICATION_JSON)) @Path("/hub/workflow") class HubWorkflowResource { @@ -214,7 +268,42 @@ class HubWorkflowResource { .from(WORKFLOW_USER_CLONES) .where(WORKFLOW_USER_CLONES.WID.eq(wid)) .fetchOne(0, classOf[Int]) - cloneCount } + + @GET + @Path("/topLovedWorkflows") + @Produces(Array(MediaType.APPLICATION_JSON)) + def getTopLovedWorkflows: util.List[DashboardWorkflow] = { + val topLovedWorkflowsWids = context + .select(WORKFLOW_USER_LIKES.WID) + .from(WORKFLOW_USER_LIKES) + .groupBy(WORKFLOW_USER_LIKES.WID) + .orderBy(DSL.count(WORKFLOW_USER_LIKES.WID).desc()) + .limit(8) + .fetchInto(classOf[UInteger]) + .asScala.toSeq + + println(fetchDashboardWorkflowsByWids(topLovedWorkflowsWids)) + + fetchDashboardWorkflowsByWids(topLovedWorkflowsWids) + } + + @GET + @Path("/topClonedWorkflows") + @Produces(Array(MediaType.APPLICATION_JSON)) + def getTopClonedWorkflows: util.List[DashboardWorkflow] = { + val topClonedWorkflowsWids = context + .select(WORKFLOW_USER_CLONES.WID) + .from(WORKFLOW_USER_CLONES) + .groupBy(WORKFLOW_USER_CLONES.WID) + .orderBy(DSL.count(WORKFLOW_USER_CLONES.WID).desc()) + .limit(8) + .fetchInto(classOf[UInteger]) + .asScala.toSeq + + println(fetchDashboardWorkflowsByWids(topClonedWorkflowsWids)) + + fetchDashboardWorkflowsByWids(topClonedWorkflowsWids) + } } diff --git a/core/gui/src/app/app.module.ts b/core/gui/src/app/app.module.ts index 13a9e45679f..b896e420361 100644 --- a/core/gui/src/app/app.module.ts +++ b/core/gui/src/app/app.module.ts @@ -137,6 +137,7 @@ import { GoogleLoginComponent } from "./dashboard/component/user/google-login/go import { HubWorkflowComponent } from "./hub/component/workflow/hub-workflow.component"; import { HubWorkflowDetailComponent } from "./hub/component/workflow/detail/hub-workflow-detail.component"; import { LandingPageComponent } from "./hub/component/landing-page/landing-page.component"; +import { BrowseSectionComponent } from "./hub/component/browse-section/browse-section.component"; registerLocaleData(en); @@ -224,6 +225,7 @@ registerLocaleData(en); HubWorkflowDetailComponent, GoogleLoginComponent, LandingPageComponent, + BrowseSectionComponent, ], imports: [ BrowserModule, diff --git a/core/gui/src/app/dashboard/component/dashboard.component.scss b/core/gui/src/app/dashboard/component/dashboard.component.scss index f80b1b7cebd..2da4ee9db9f 100644 --- a/core/gui/src/app/dashboard/component/dashboard.component.scss +++ b/core/gui/src/app/dashboard/component/dashboard.component.scss @@ -67,6 +67,7 @@ nz-content { .nav-links { list-style-type: none; + min-height: 70px; height: 70px; padding: 10px; margin: 0; diff --git a/core/gui/src/app/hub/component/browse-section/browse-section.component.html b/core/gui/src/app/hub/component/browse-section/browse-section.component.html new file mode 100644 index 00000000000..61de4a51c57 --- /dev/null +++ b/core/gui/src/app/hub/component/browse-section/browse-section.component.html @@ -0,0 +1,39 @@ +
+

{{ sectionTitle }}

+
+ +

{{ workflow.name }}

+

{{ workflow.description || 'No description available' }}

+ + +
+ example + +
+
+
+
+
diff --git a/core/gui/src/app/hub/component/browse-section/browse-section.component.scss b/core/gui/src/app/hub/component/browse-section/browse-section.component.scss new file mode 100644 index 00000000000..a6915cf15a0 --- /dev/null +++ b/core/gui/src/app/hub/component/browse-section/browse-section.component.scss @@ -0,0 +1,79 @@ +.results-container { + display: flex; + flex-direction: column; + align-items: center; + width: 100%; + padding: 20px; + + .results-title { + font-size: 24px; + margin-bottom: 20px; + text-align: center; + } + + .workflow-cards { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + width: 100%; + max-width: 1200px; + + .workflow-card { + flex: 1 1 calc(25% - 20px); + margin: 10px; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); + border-radius: 8px; + overflow: hidden; + display: flex; + flex-direction: column; + + .card-title { + font-size: 18px; + margin: 10px 0; + text-align: center; + } + + .card-description { + padding: 0 15px; + font-size: 14px; + color: #666; + } + + .footer { + margin-top: auto; + display: flex; + justify-content: space-between; + padding: 10px 15px; + border-top: 1px solid #eee; + + .footer-text { + font-size: 12px; + color: #999; + } + } + + .cover-container { + position: relative; + width: 100%; + height: 150px; + overflow: hidden; + display: flex; + justify-content: center; + align-items: center; + + img.card-cover-image { + width: 100%; + height: 100%; + object-fit: cover; + } + + .workflow-avatar { + position: absolute; + bottom: 10px; + left: 10px; + background-color: grey; + } + } + } + } +} diff --git a/core/gui/src/app/hub/component/browse-section/browse-section.component.spec.ts b/core/gui/src/app/hub/component/browse-section/browse-section.component.spec.ts new file mode 100644 index 00000000000..86c8c9a06c8 --- /dev/null +++ b/core/gui/src/app/hub/component/browse-section/browse-section.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from "@angular/core/testing"; + +import { BrowseSectionComponent } from "./browse-section.component"; + +describe("BrowseSectionComponent", () => { + let component: BrowseSectionComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [BrowseSectionComponent], + }); + fixture = TestBed.createComponent(BrowseSectionComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it("should create", () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/core/gui/src/app/hub/component/browse-section/browse-section.component.ts b/core/gui/src/app/hub/component/browse-section/browse-section.component.ts new file mode 100644 index 00000000000..c1ebacf5334 --- /dev/null +++ b/core/gui/src/app/hub/component/browse-section/browse-section.component.ts @@ -0,0 +1,14 @@ +import { Component, Input } from "@angular/core"; +import { DashboardEntry } from "../../../dashboard/type/dashboard-entry"; + +@Component({ + selector: "texera-browse-section", + templateUrl: "./browse-section.component.html", + styleUrls: ["./browse-section.component.scss"], +}) +export class BrowseSectionComponent{ + @Input() workflows: DashboardEntry[] = []; + @Input() sectionTitle: string = ""; + defaultBackground: string = "../../../../../assets/card_background.jpg"; + +} diff --git a/core/gui/src/app/hub/component/landing-page/landing-page.component.html b/core/gui/src/app/hub/component/landing-page/landing-page.component.html index 18e960a1e1c..fd5051fc864 100644 --- a/core/gui/src/app/hub/component/landing-page/landing-page.component.html +++ b/core/gui/src/app/hub/component/landing-page/landing-page.component.html @@ -23,4 +23,13 @@

Texera Hub

+ + + + +
diff --git a/core/gui/src/app/hub/component/landing-page/landing-page.component.scss b/core/gui/src/app/hub/component/landing-page/landing-page.component.scss index b65de40f162..55b4bc03aa4 100644 --- a/core/gui/src/app/hub/component/landing-page/landing-page.component.scss +++ b/core/gui/src/app/hub/component/landing-page/landing-page.component.scss @@ -7,10 +7,11 @@ .landing-page-container { display: flex; flex-direction: column; - padding: 32px 20px 0 20px; + padding: 32px 133px 0 133px; align-items: center; height: 100%; width: 100%; + overflow-y: auto; } .search-bar { diff --git a/core/gui/src/app/hub/component/landing-page/landing-page.component.ts b/core/gui/src/app/hub/component/landing-page/landing-page.component.ts index 4e40c60b8e9..064ece81779 100644 --- a/core/gui/src/app/hub/component/landing-page/landing-page.component.ts +++ b/core/gui/src/app/hub/component/landing-page/landing-page.component.ts @@ -1,9 +1,14 @@ import { Component, OnInit } from "@angular/core"; import { Observable } from "rxjs"; import { HubWorkflowService } from "../../service/workflow/hub-workflow.service"; -import { untilDestroyed } from "@ngneat/until-destroy"; +import { UntilDestroy, untilDestroyed } from "@ngneat/until-destroy"; import { Router } from "@angular/router"; +import { DashboardWorkflow } from "../../../dashboard/type/dashboard-workflow.interface"; +import { SearchService } from "../../../dashboard/service/user/search.service"; +import { DashboardEntry, UserInfo } from "../../../dashboard/type/dashboard-entry"; +import { map, switchMap } from "rxjs/operators"; +@UntilDestroy() @Component({ selector: "texera-landing-page", templateUrl: "./landing-page.component.html", @@ -11,22 +16,82 @@ import { Router } from "@angular/router"; }) export class LandingPageComponent implements OnInit { public workflowCount: number = 0; + public topLovedWorkflows: DashboardEntry[] = []; + public topClonedWorkflows: DashboardEntry[] = []; constructor( private hubWorkflowService: HubWorkflowService, - private router: Router + private router: Router, + private searchService: SearchService, ) {} ngOnInit(): void { this.getWorkflowCount(); + this.fetchTopWorkflows( + this.hubWorkflowService.getTopLovedWorkflows(), + (workflows) => (this.topLovedWorkflows = workflows), + "Top Loved Workflows" + ); + this.fetchTopWorkflows( + this.hubWorkflowService.getTopClonedWorkflows(), + (workflows) => (this.topClonedWorkflows = workflows), + "Top Cloned Workflows" + ); } getWorkflowCount(): void { this.hubWorkflowService .getWorkflowCount() - // eslint-disable-next-line rxjs-angular/prefer-takeuntil + .pipe(untilDestroyed(this)) .subscribe((count: number) => { this.workflowCount = count; + console.log("Workflow count:", this.workflowCount); + }); + } + + /** + * Helper function to fetch top workflows and associate user info with them. + * @param workflowsObservable Observable that returns workflows (Top Loved or Top Cloned) + * @param updateWorkflowsFn Function to update the component's workflow state + * @param workflowType Label for logging + */ + fetchTopWorkflows( + workflowsObservable: Observable, + updateWorkflowsFn: (entries: DashboardEntry[]) => void, + workflowType: string + ): void { + workflowsObservable + .pipe( + // eslint-disable-next-line rxjs/no-unsafe-takeuntil + untilDestroyed(this), + // 提取出所有者的 userIds + map((workflows: DashboardWorkflow[]) => { + const userIds = new Set(); + workflows.forEach((workflow) => { + userIds.add(workflow.ownerId); + }); + return { workflows, userIds: Array.from(userIds) }; + }), + switchMap(({ workflows, userIds }) => + this.searchService.getUserInfo(userIds).pipe( + map((userIdToInfoMap: { [key: number]: UserInfo }) => { + const dashboardEntries = workflows.map((workflow) => { + const userInfo = userIdToInfoMap[workflow.ownerId]; + const entry = new DashboardEntry(workflow); + if (userInfo) { + entry.setOwnerName(userInfo.userName); + entry.setOwnerGoogleAvatar(userInfo.googleAvatar ?? ""); + } + return entry; + }); + return dashboardEntries; + }) + ) + ) + ) + .subscribe((dashboardEntries: DashboardEntry[]) => { + updateWorkflowsFn(dashboardEntries); + console.log(`${workflowType} with Owner Info:`, dashboardEntries); }); } diff --git a/core/gui/src/app/hub/service/workflow/hub-workflow.service.ts b/core/gui/src/app/hub/service/workflow/hub-workflow.service.ts index d9f2a0cf673..b80fa74a274 100644 --- a/core/gui/src/app/hub/service/workflow/hub-workflow.service.ts +++ b/core/gui/src/app/hub/service/workflow/hub-workflow.service.ts @@ -7,6 +7,7 @@ import { User } from "src/app/common/type/user"; import { Workflow } from "../../../common/type/workflow"; import { filter, map } from "rxjs/operators"; import { WorkflowUtilService } from "../../../workspace/service/workflow-graph/util/workflow-util.service"; +import { DashboardWorkflow } from "../../../dashboard/type/dashboard-workflow.interface"; export const WORKFLOW_BASE_URL = `${AppSettings.getApiEndpoint()}/workflow`; @@ -73,4 +74,12 @@ export class HubWorkflowService { public getCloneCount(wid: number): Observable { return this.http.get(`${this.BASE_URL}/cloneCount/${wid}`); } + + public getTopLovedWorkflows(): Observable { + return this.http.get(`${this.BASE_URL}/topLovedWorkflows`); + } + + public getTopClonedWorkflows(): Observable { + return this.http.get(`${this.BASE_URL}/topClonedWorkflows`); + } } diff --git a/core/gui/src/assets/card_background.jpg b/core/gui/src/assets/card_background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d3da0bf766600b64a94a9f2f70532072762308ab GIT binary patch literal 414278 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

u2C(HWFX0(4e_aZ0M*p&YO5O&;G4cC4V+?v4W zXo6aF|V|8zN32)|F%^c|;=J#qP2ZF*>H4bP|n#ToW+U9>VO7en`u($`6 zV$(D_tu)`0tJBZZOa%O&#w3S`7s{0HAG^1`NMNmNU25hK$0?K@7}TVYC2^*H@8EZL8lF;7_HcAN)B zVnl>Q5r;0m=V9A>cWO|zFb2C$owcV-i81^u7~*f)x2?4^CO`lzOe5l%Z6`a?`+Ig` zMOvpo-hj7v6OblNMcLuAY0vEmi5hz-<)7L+$=?r){{ZXr#Gl(AuBqHn$W?FP-v{m; z)KK(A_VxTvh;OL$UncRgLg)|j(hdQqyPb)oGYAVdYuvx#YD)sb3euN~$3K4j3q~}( z!Y0|;-CX&{Yb9{$^bUF!WF>z^%`X+pzUts zo~5`bJ{#$PSc9vP9m1g(W<*jBBax>fQ#S&~r_Hls zB0z$GM)8%CqeDHn7>jkc)}4&8?jU<}V0eb{e2<(D>q5Lh9K5>oq7f;N3Lia(T;C|)N9=E|)4>rcRkIOt8FDCcU!Q5;1egY!Kq9;gk1A>Gz2*0wlP%k9I^@ z^Iu2=#W<2JA@`F5g(UY?EJ$&dv6Cb1Kwx;G6^3{&6@+((<-N$L>a=BFTwHGjf=NgH*4S|5jY^qG{{S@LH3-KpY_vrxmYYGxVimPy-PNHMFNSCP=A2F|%5Bhk5*u}vv0z)xbA93h4 zT93!IeebNBHgx?=`EHVCxR5kjS&o+C*7GOJU)iFiP^i}a(JUrN_wa#ohMOq-bMhIT(==)I4s-jy zV~KM_PM%}0I#{`BKjzB`#69gvgWcypo&F6c@=ZC`=$kH2ere@~%b0zP*U6R-4wF*r z34+>PLyz#u`BN52S$x{IxwpKxg6h(Eu5E5&j(dBE7MUTQ8B!G-u}GRN3rPheaRdbd z2d+w+E^`?&TiW(aXnP*V2Q|!aR=KVaAc6{w#vqFMihPOMY14H2iBlxclQHt9%9_&2 zlIBZsYuNTWEptdh4)91In-;Kyl@d5P#Oa=x8_aJSc%gw6x-|QF|3zMr&I}Hez|r;*wilm z^A=G%T=2lD@cr>@#m<@{wh;Jd%9Yx6o*tZY&knE%R#+ioI%>ESI5>wL^_Bdps8x;Y76_odO zohHf%KDMsd?!r4DHrMQzckd{7q#p4Dl2m}1;59KVm?%3HM5cJw-`!I!CqE}@bh9+i z;di-?jJJz8WJV7baNI(IE7<$HyrlPxhP{Z{tN>4w#0#aksZdZCOL}`ApW$#01Xj}n zU5!qHr_UU6wjl|TUU+AeZAQ4O3D4pve4(AS4twkA<@0f1xm8@{2xA7Oa6^xU4wO*w zul~~?W?I6K&Lb-Vo9dJ@RE0U#uhHMNvC~nT(w<|Dyi|{kL;OP#5k)8;Y>GmU2@>NG zp+|CuT*-HPfqR;$OF>A-gr<2rWNx;oj`Ik~a{?Y07M+2>kg?6M-f9;y#C8GK6WQ(V z%%=!dvSkiQWHD4vI)*MqAeBUoww;G?AZ=P3GgpSnl3Dik^w`;R04v$Z?Y~`%;s~k| z-9kPl3zZF!olY+Pn&{jx&A4f{_!mF5Q(0-hJUFQ`o@nIf12E(g+1i9OU5ur}(068fqI0dsgH} zGT8qBHGdMzoisyiNDZ{mO-{CMp+lUESW96>$N7q@(J_Qc7_52yy0TPr=3HO_1~|vaU?Gx5lU^ddpFcb@*0i10U8zGk=(gBz z8>u$?(n~HBasBDtmVkf=VcP`lJ~S(yrsyNi5j~xhl&mX=J;ZD1%|JNit!zc$6y^#* zK(9YoP_BB!*%S;y=X?3$lsaZFh^7=RuzBI8S^|{xT0@>fm4*YHIg9efh0GfoV}`;W zoigwd23>5W8G%3o@C%>9*;HEP)U_(V5hk@Jr1aEb-1)OXP)Awv&WaN_S{e<22p0{x zZoe~F%YNL!V~p^icqa&^UAgbaufU^AZB_^D>RZ@C?Rwl_x|U+!-$)JK9)Ak0RbeFURU0o=Qq4{ zFP$-3!R?bNN%?YtJS_@PxSw;#yNNac1XB`l0sjClH19t=l3J>y#@jgv6g3d%lX93{ z0r9Jo87w^oPoDhp4e&_DmR>9)w7_`%s`SH#58ivu9?b5N>6=O2Z-+S5q9*POc- zOXE2YAB{C{XD!0HP%$8>OzBA4O)E+Pi5*U9GGk@6Tz3pf>gNh%rp%t?VgYA62Cil$ zasobeCbiwjhyawjjZ~xeD_XMvANWN8ez}jCG`y-NNnzlpc|y4$6*H%j*+be4ZsLmL zzW^`-7Rn{!v;zTN`uB%E(T+!Rk_p!%4>&^WMzOq#ZH6(qTvH5iLbkBU83iPO<;UET zKgwyT4jHniIRf}bC$z-pPcqo{jwY!=8#rzvJ+RnsN3Do(Bu6bxLy!e=7>smq_|ln6 zrXqro7%yI2>tjekR-P={VG;_dL?e0=QvJ!hQ@k%Ah%%yoc`+C!7}-nJ!Bry!wN@FM zA?mdPM5nz%rwcJzj)PVP$J~M_+$i4e(7RQul_l+PV0RSK1O%obb%osq49kJ6yU37` zl&}GUK+pyN4ggSW1Ez7D&B?hpC-sigakyWX*7#HR#70W>Y0#HK_1Ra~GR!E(wc$X!G&W9EOs}Nq| z5sih(Q-C!K-aGDlzG&_Ft?j-fmOsvsFHd;1(Fq~HmV(Fll&l4TScQ*i-%|Q+>XW8N z&PnsyLzTn$Y*1H$gdQgd``!v&pkAZgg0(DZ{T%a`BsKK zplW)y#;+Fn<*hb}D~D=%5szY2e8YSQ=DBv;WqaM#+aHPh2cEUdT4FZCJ>0F?QS)w6 z3LzYn`Wt*}UO)*odgI3)@11h)y1fB4VleuE0~IIF&b(vBjO;<-<>|z5%UVGLHj{>H z+BR&qanqq3(KmuU61C*x>EHQ&d3z2D0znQWtZol4j3ef%y3q^QVeqByETOp^vY;K3 z4~9ga?x8qlB!TW| zy0}IOh=dA(YFQ}(m{xM9czb`~)S<~me z<7-$1wu9K@-caWYnmUr*`VK7Oud^Jr!Uc9A^TBhv?8>rvb2=9X!iP-|sR5dVZS$e& z)GCaZFs^IjE|!H2mOkj3XUjjc>qS*L_F~GqJ;A{r^Mo7WLQlJ`kd8WCo7RTg<#EA1wjud;s z8_WAUdnO4K1+MYswqG?8iTR1Pmlg+{n3P(nmCg;4v{OWx+$Ig0I1WL_=pwZ9G7;KRy#739Jc2|Cx|(H9PsEmeDKKR5esh| z;x~3t@}@v0)KEEt*`H+xo-%aXroS=`c)0^9a6^P{0>HyOKJcj-Zvi6}hS76|J{^=I zXx;mNKd9|tlsy#^!{L5k8jzOzZidm8$aJ)=v~718*Wz#d3fs203S@T!#bQ-?pu=`C zK9ofFuASgV=^Muo!vsN|bX`f{aAGwZ2pZCj-I{gd@m_Tv*DMY1vX)v!PYw;B!@ntZ zV#Jm0KWG%EvDO_T6Y!`fjW5?}VHKn@DHC1E&PoXjMZ5(nS#U)pkf9qC0@6VaGZ(L# zTE?^z((*;nhO~v;Tv4eQ0yd1N@tq@Q>gG?H!1-EsAZw7c&X@>o$ctr%x)B7hU#USNYqABEAIGX4e)Rd-cRq zv8ppd!`U6Yusr#TRmA&yvc#ukeRpA68)I5_Xx_EqT-32a2yYY^{A%AnZqsOE*?)po zpN7$^vrzq>!_l)+#D$@VjCMjJ1K|a$eD4j0J7M;{t53sl=>Gt|XjoPj^56EW3B&YJ z9?H}3$7VQ+x3TN5mZ@P>A#y(hhlX`wJ8GnUtc}pEb@**Lb$k!gDLGR$8p-_5tX!|h$B*-|JWD0LG+ zkX*Jkan$Lnftr?(iZ9Y&mBw%YxVQiUl2iZ&{{S9B=}%m4^u@cc+yzLhJCLF%!`!Hp zr04+^IFJsMG@j4kPE-E?3Sy7+pAnr8D_CEw((tHbbuy48$e042*a)J9QyRodL)Dq} z+WwzET;jwo17>?7klclB3)i5BBmuI)e9(-sg;J=U>D&!pgLk&vaaX&{vBb;P8TTtb{;7>5LBIn8h^acKz_o)dh;Y>=_Wj5=u=nSUo!B2@Wg zAK}iF$&HRpcyI@3Ljjd#Ey?<&;*HtM9q-|H)wpLDaeIrVYBlAsNm8qf(9A02wrn-? z*t}^l1&g5M89Awl#B+s2Py8pj^(T)`*}4gYUPHL#DKP#7(m)ETSuvX|1!k?m`m^C% z(u8j>#cny($_cuU@it*pcDuDo$`i27Zx9-hogH+yh^r3Jtrm|EAN2ve+M;Lv72bM( zcAw>IWs7{L2~&s&Q{>Gc6<^sg%9z$_-7{HlI8$@GuI;bwjYQUS$8#BQ{{RxAQuz&C zm&!vI4&y0&(C?&zFd(SjcAPp;hKhEb;#~PNB+ULvtaP^lbphZLyeL?%Qj2SMA%|er zoiG&Qd$JtKfCCs}ejd0bN@?UGK}hTMvMS^O>w9+4Juw)0uMXUUHf7`4hQYT!l43@k zQW>B~{*aB=eUDmNd&Qv)Kw8j&fU49I<@P)9cO~)!$D1!Tx8FM^7$nr0DHOvEm<^eg z*c6h#o8Q-86#oG0U)EpL{{R!Ee)0|J<8A(I)C-U7`wP|Xt=t2D2(hrY<^JnqiOw`q z{#KJuFBZvRKiuFP?Ee69JL~9<=+gfHMcrN9r9?7xas#vDdj!{$w~g+sQIe`gy`HYG zXRE8;czMOUbJbUc8>8TA)EYL=KV0=Dnn`dr;Ckn&4hT+H8>xuP0CpDh*mJXi%mdj1 zyT~+$gmK#%aR$9d=J~L&ck+~7ofM=zMRWA%Q;1ao#Eg9O{PSQ?k%2Ozd63c8-4ny&4hWLD?S4B@(di`eE7Yor1kbo>5SnC^v*95;pjo z^eBW%!~Xye)8(DelLQa`EzvjHBBF`Hssj59VNpZg-QBtFU3KNUf|%Hyqb{v}bW#OX zhPX9x!JCe}bG2%zvLWn_HYR|WHe3)zt=SW9RDX9`-e1ayENyNtCnbbdu*o{=Sh`|L zibLwA6{&3Ps;&*i2newVcEuoYQBhjSvNX(m-9+hHc|le4<}y=ZVjTB09l)u;7}j3! z{{ZPfiT9a8?@gxVfRI#gWcT-6q*SKP(5!=_O*|}UTO=}6$1FHOB&i|*#6l)Kx8q)Y z-v0oecMgO(x_3|SIiW`ml3xUpaQ^_go*2WujhPE)S*vpXkN9hMB@5mYUhk=Z1c}%9 zOEOzaYgGvroES}VutU0Z%iACisoY0k;TyBrdh;&x{{V4&=T=_b6rDGA%PIq!)2h^_ z*|Wfu)3uTT2O7!NJG#Sm#30?)R<Uok(mt|hD)1~s5yDa`JMq_>UzzU#2P-dAb~wy?FD?qWy} z90)5Z1pfdOgb2_DO4g7nbJ_H}D6JNbZ+L4ox)}hO+R5_t^3W<7jtwt6CAD7cn$l~8 zs^8Za8}#qXm6LNe^8V1Axh>B>I?xUrsD%5JhXE)^8f1x6OsC6pcz=fGy5c+}6SgtE z@rX+LZJpUBS9cEWl+=+cMl^DUJPnuf+T*p(_qs8AiB+ucLsXYZs!r6JgW4G9FoB4% z0FA^b@JjNK90_Zn=D4(j1R$Xth&Al>ZnID6U+R?J5uF>Ge90{S8M%~@rc|=-TZxo8 zuC3A?YqFI`n)1;Al&G7lbot{E7Y8@uk%{&d^MC(}~(wxW;1u3-X*$&6X|x zV+R))cbWcs_$0r`Wjnlkxsv5~+?D`})-$}M%O2SiNk+F+!3{Q{#Ry3go$~k{FP8T^ z${C@KYk6ay31dvKO$>>W8DdxpM3KmnQz8}!AxR`0G&%IA&JSpN9M`q&;%nGJYuJh$ z2q;2W+T^9H=eZgwlIFft>2H@dQ_Q)t<~7WjE@MhLk7)|WG=wc7M`5UC{pAgI>dmws zIAO80IgFn)L@FmM=C@yf#UGRS>9^Z% zw%qK5VOchpPKXnzb?T^0CjRV>YVG5u&c^j@#ZH@aJ4x%X54B|aO+BD)FvkePehP9m z3BSApm_FS>?AS0QpU*Kfrm2Ctrqsu3FEVmU$@H3QL&NRM(*q8^y8FH?UmE!U8b4O3 z%w*Y{dd$Kk<+idtEQ>?*PhPM!4Zgc_uZhN+PKEY$cJ<6$>6nuNXySJ6$Mmd|NvA|m zg*yP<0d99pDnD;^{{U3o)d&8gV9$wr$U`>FHhj!Ju3`C8N&f)Ld5x2Vi*5U5SwDBk z{w%0j&4OT~JDeh^ZT|qT+bhYfWRB|9e3B*p0$nOggCt7=szSi14Ng@jl|UT$6!|Qe z9V%#6l|zU)Ii!de{{Ex+{YwZsHotM0E~raydd6o z;#j^Fr{SIxRl^||9jH?i8t_;L1qA_)&eOY3Ftxy;D#u{)5o`z_P*@v57tr(?`C9n` zWV6EY39^azOK||E3c`xVe&KX*AbM1XJ3iL$^YhB+!b)xhJWURj4)wyF#-E?dH(`hg znH$r|Dy8HkE&=C{g$|W04%Q&H-_OoDYT=zKqxo;xqtD;F~^ zf*m3Ic+lyb8i2;H!%md)*}GeeM$EV8vX)E${#D-?*0JvS?wym#8LzxpDM`V~1}k?W zj4J%Wve42~BD|BRP;>RNWCEnQ_xWu?=&T8VY%?os#<#lM_Q|uE0Y3I`c2Ypy{9k-1MBZjD1v?+Me21M=A7fvhni$BED;D*%lkh#1y1 zy&%e1zrvnZYCDr%YHH@1>6v*U8mK`euGpovB|vK?EYuh^ja9q}DcWOrP}RHF2B*)r z^2rTpaq~0-o&bj4Nsq#nSRufvudW(nw?nrawV?n9;-0XfCQMa|0(*9!G>4TWv8(X& z>*oiwAn7@8p~ ze^DEp02HMV5(1P-AOMyml1Tsn0VI;Z0!aW9mNmFET!;vjFbR&xVw)+3Xt{C$6;uEK zRFeci3Y!gr++6YA{{GnB_ZGIQCwAJ-RT&OH6*njfxmc(2!<1X3;D?ZoX(^U>Zio6- ze94U;J>%TBmfMC4#>M0qn10yeo$KF6yc;S^hbEFpKth2!U@mEzf5HSMg1*vS0^|^+ zL}=lLEY$PBcji*D^D`*zJ$02Zn8gMqu)q!&`PrVNIr$-6RdeyH(;0jNY6lU~yI(y@ zbMrjD)}|94oxpkXw>?WUG9AAUy%MzD(p(;33L^%q#H(skw_zvY2NyKTrp;`zn~nnm zx0F*63~90?zIozO*T+IW(y_m(-G9rV-D1aV5m< z#@PUaawn}$Nt77C#Pvya$}R&D$}*!6r!>D^qUxnfVll@h>FET$RsY&PDq zUxqhfw6r&DQ!U#Rk?^QMf_WckkxspZJd~z!{_&s3G)e>(%2432GYn0W=?DP0JWGvc z-NmF5bgrKR}vOq3!);kZJi41h5qBbeD&rBSYlXUCM$RmFj0hR5{F+T#HXhh!qT?5L@%dlf+` z1rZ5w7c;gz>*H;vMr zr|y}v(q!`KGKel~5hlz8ue2ZX+lLc@BEhN&s9nsn-O6UTky0&K6=0F7P?7MVBSfSD zw{C6;2uKGphmT8AzbagY21%CLYygk~sXIxFj%1bPOY#uHmHf`m8F*Yk87EzNi#8{U z*cj!?x-qzNFr#bfi1N)`v4%VR{y!Q9aUu(1hB!os`Q3BRQi{17Urb*fBv)<+t7Av_D90O-ct~d^SGXj7~gza`xCpC<)FZ8Uk@%MLQO{C=6Q{anoj4#9Ltvlmy~I z@ZYz=2sah(N*dQrBkPw4-2#ko#{LUY^J1~Gew>dy>#uey286TV$LEi;1D3Rdikwes zU@AUoP-1A!^?bQwz@Im8|?tm@YwCdzeBSx1r8flK55F!QL|$h-_FXJ4$X;L zlm>7Z=td8Y%{`r&Ye5iDMjoe}Hc%5{7jf+t9leyC`@ShjQb3MHRnjP@f4B-%mv92M z^I?*t&T|o`+}r`fagSxTiiOqbWlUGKzb*0iG(e@enu%b9f(|jEi?x;_5~Q#tg2hs5 z&h+je9BGr9_P8i9$_gtVoh|Z-;}9y2A4%MB++$dOdo0}F-cA^aE+i>9d?;5UdpS}& z06Q}<#&9xQNKa!_Z80V}uI#a__dws1q|-@1vP%QA4shZ=B=rgdEJmy_8+{%8zKx!E z1{+Wm^A|(<)T{ev~#?>dm%F+w5T|H{;4MYV zdghiJ4_O{mI!J{{4@_~Vw0kMrnvjO-u^UHMqZspLL%#g2L*dcOT({aWf^7wRAq~6f6~9Ss|(K6q_zz8 z%jGTzFLF-II_KKvy9aG6vgg+X*$TnlCcXa9-nTL#PYfhl+tt(V;3O3e5=vxV)=+!~ zaot?cnK{HCX!f^rNd)t9ovU7<+?sFb^b#88q{*v3Y!LCy0EV5cU~6}SWvG;>;QI!Q zOAudY?~on!I}1T>A@(~tRzSyLh_>oKxp&#O2HNJHTN*|`&4^e-i#s`F+ zDxM}3N`%WA(IiqNDmBJJkhGeGB!b1T+6@SB!dNw~0nI8L6cAJqvdS(MYY}wEN^zGl zu4CAET*oLaaJV3dXOa+A2q#l&MuQWlbvgrv*TXzni0t!1eQRQR;~j{4@T!fr)Ph;- zhkNB^i-E@kH(2@N7i}<3L2=?cMOJN2AbKBT0pFT%4!QJjIaP%G3E%Du%O4u8R?UDs zM#}n~yg25igjyrVpIwx}JM~C-ValsjwFMcv*H*xJ@6AgLeYd(}jvjSkKW`|6^BrEa zHqD{-`wtAzupig6vaR#>{{Zf)&9mrVh~cd(v9?zn(6FV{<f;e^gMlYt^vstK46m$%CMX^UJ*|}I`VB)vJw(hNnjc4tNbOKT?T2uV`b?E%ySj9 zJOD{@02H1p4_}NjqVQOV5Lt|cf|dmc$CWz(>?G8h05|gSw#)KRo)irIS(rmXA%MX` z5^!+5Jeax6^k5?^~PL{H!v6A44~%R{O@P>P-&zY|_;q~--B{tJ zJ*jww({jY^Ph3-(Qps^k*sM3(8y({LQz*5gw!16b1zV5LBTP2x+bz!L&Q4H>2^8@u zHOP|+ zf_ACgzZ#U1-=t)`;*m)FM}tw@SAoZ=)CSi^;e+Hym9oPPvHcZyXHs(81Tn#O91wEM z`k39*-|owVT<+`3s|$pXMAmc5Z6G58r9!lofZuA|9aE7>A|SXFQb9sWstdxwESOY? z)5+8~pzS4Nkn_iHhv(t9K6Q%Kf>OGh6k4V z&?G8G)_ZA7oJn()okYM0B|;!k?pWfTgpWf(O#EBBXZxfHnn#c!EQykr58+Hy20u&N zi~`nq@Ym~Kg7=}0E#|Ag4_qmOU&Zh2xsJ>GK(wJG;H!ur3360MIT`bo7CBrC+X8mb zj{IX?CNhM*OIGra48+Ujy%d3i3$Yl-A^6+I8?(cIran6H-HrX7?WczP8{#eZ72TE0 zH!un8_f5=}NfJXM(v>ds+aM)MO3Ks)3uSVL&(uheKjO}m%v6Uxpz;8d%82gn?U?;` zlS?vN*!kL-GWZ_XHOOW+iCW+k2B|;@hi~RDnQHi@QBuqaU0Wcr>rbbiIqDpO3L0ewq;0RCI%len z5C<<>VFsyFgzAag_OLcAed4@QW>ryY%k%sn%q z0-VOcm+j}ugPPRZhWigfjM&=U-mD_h+Iy9jq!B4>U7boubW|2@!)&;+zqv zrfwMHvw0ZW8+mO?#CyZ?j_=b4HbZ9X90^aBK2)`eEXkk}G4{)H;hkkY$>3iPS`;qo zIk%*tt9Kzp4mMjrP>eA5iD962>+*D3zFZLLjt>Fj-o~YY3uZwSf>J{{W<>B%~z`M496Z37$5^6hNl)1OrVyHcl7TArl*%S3a9GCxVwQqTY||`=0Za=91!wfu0@7%Uq zf*Duu_sr(v=mL;N?Xg-&N`M59#NL>bu}HU&0gF}40JIadg8{Pxy?(~ML;bMs*J``R zSKjkj-<93+hM!JLNe5f1X)bd~Kz>e_iA}?&wz#*-j6Na=Ah|diJ{`1d@!+yMY2pdV z03|l0Vwrn^F3q{YqX_3*jPTs)-W!K?-EyT%Ria^)+@E`HRc#?JuQXi1jkKi(Yu)c` z?G~N<4RI3wS&3dLM9V4+6&e?PtZT>n_Dl4=?XHvw3^UB>V#9)aM9_mF##);S(a(3v z3n3sg8YcnjdgGIT0vrjr1KLGIaU9Mj=N_OeH&SFsY~XcbKS_bT9Tvj$!51J zvA9>=?;sxPMOJ7f4VGv-_gmd=NpCZBIcr~0dyTeSziNl0@Tc~0NYUK~4HfiH%Bukqw9Q(OHQ1=&$peo(hCL81> z?l)c8N-tnwIh2Hh?(X0R3yX53fW}0`uY_iLUi#7ZlNL+(CbTQ`(+F(Vfp-826Brlk zVK*E>rUS`))9~)}{B~+2WjSzt0s2~m*{lC?lfQCeZ}3M zUOMUBT+(dRRWUXlyw=K2%D$6Ki42kv13!jQ#HB*7?%SHa-rP%&JGf#*O!=iq2YG~H zZzQ&AYbVlal_7_Q7$*GeGN@(s-aio-bzoJcX^vHVOf4b^icW-PQj9?UjQ*6}y6@JNn_K8Hm+P zS#xZEhWl(`j^PpFwUX#0e->0D#NRuPW8sBryQ(yzK zk(35@azXC`ow>i;!l+6XjLG;XkB4BJgaxH&BjHd|2-*|~pyDtaHsh8{aRd_tL%4zn zCgDbVDQ_HHO*SFTAyeuO1la@**k@S5Hdiw)NYfh#*0d@`f|%U|r2IqzqQKDr`!kg= z@w5>Y3JAmyqhf)CYXjA4C233BHQ+cB-=nzyKt+m>Eod!?^Vv{y`^Id@O8y%NAb?L1T-^lR&;|-`TS#2i zl%c|#I5w50I^~GAQ=f0?QN_fPNr}HdkBtwIaRgxA*4jMlmb4}XAszS-w;d%c%qwFI z?*k3V&M@0pdwWCfw}sq5FpgF7;>87uK;z0lrUW-hc`=m5ih+{iU@wjcw%buUiHkB} z1R*fk07HO9IAPgBR%q1k!w=6T2Bo$x`1$;37ryxg18?e^sWrHB!Tj)k;g$v{Ud%gT z;vqu5WOn4X9Sw^~Nc22SUvA#)y`f5MDZi-lp(adAm51ndt^n|><$`@}$d&BtRW#Gq5WWYAldJ9}xr_k_`huNG4Q_ zi@J1QPO5WY3dm!J{{WODFXR}-=tl{xNAf=T;o|P;4v7G2rZ(Uo_yCB-7IIn={{Wa* zAMYb3^5Y-B5BU?X<-<7vxm@w}H3_G9{+>y>;W+;Qjn}$vjcSOvc70FFIvZnFbj-?R zm+-izQ5OL8!(i&q#~kerMv&+2LDy$0VKKiJqYMVe*`7i#4fpK7h8wA6&{YezD;8mgj6a)wM|ftKXSBSUn5SQ)*c3)Cw}JyAZ5a^Btq&hvWwGcT{GV` zLk*b_N(^!ZZ31sz+65Sd-&ZOqLoOW`>WX zKm@c@Kx9P|iqXiX6+PNF9ijWOqU8qhFx);X7@Jrs(M)Us#PtYKIIS3pG3oh!O^DMd zbHD{ToVRs+=%xe!CE|0A_`@Xv=#)k)Ph}scpuzMnOp51m98=GI6wwd>`whAHd`UxS z%o@J5^TQe)t8>8GY?*vFQA}-$KtsY5Z+C9BUfsiPC>FO_6)A~76pAbud?0}T0K`Q` zMV~lHl=-B6AfPrbKS&BmKH>>Pg6*jt4w&loGNiT~ZX8Zj;g%yY+?ognG5`x%Q`{mn zr3gq$P?V)9V8IC-sR4$70oj~v7dc$$xROcVa(9@WrnBS1z!=aP#(>Z;0jL1j0ssUv z#*n<4-pwBN;b}lG$cE;TXHbL+pFk?)HCWOEW4Ac-h{Fg7RVB%ts&@>Q5>XuGMlnna zoQN+0^%DlP)E9YgON-J`5HMRg9Em^7kQ{yL!(ssbS`R3z^Wr!-yW3!L*a|PLmZtRD z2|7^My!_e1?{N08t(ej;{x<^UvQS{DQ;)V%!D})|(TM1|W@};>A4ksG0I+1uX%gq#T7!sg8%G?F*Aik0OQD7Xb(G^6ii()AX@nrVjeFgVAEym{KRmDkN(u&H zBq78i!uT$GR<-0jKRqr#VK!%%9})agof%bB}* zUe8|2kC;*rAlU9XZs#0puXf2LfY9yP=S;Dy#1bWJAiF3DgrNo|%edyBc-Ot#5*haP z`#4sZ)Q8K2W1p=@%q1h7M$gy8=UVbH!wf}1WBKjSwu3EbAV89!Mi4nB%X(!WGZng< zB1dOx8-g=h_q$`S5Ju2?H8Rm~uo>Rb%Xe>VbjT>gX9AbUI265W?%CX$99gK`aMvA} zW%tZ)zd8b8LQ^ukk6oZ=UJ;E=TE8yuEtiELEDk+*)NI?O!kgb};TTs!HlSd{vD*AJ zW9{LVHZekQD44^`$w`a=dW1uc`&u}nZmmiSkM4lOtvx$3+K!rFV5+7m6u~zAf~_rf zL^hXGCr62VGKdTm#wj(vPV)tr+e_%ryQ-} zNI`s$ZtLEQW9)InXVvyl>0`v`-5sll*M|(z2=VZ}87=6Dv9`t7aJixLMEChiM=#EPmZ&PgXqZu%&TNAf5TyoBb%NaUiI+|5d`35R110F@22J2`M$8B!4l(rOj773i0H|-s^n+8PZmEEo+BJKS#K>}d(4XKu zGXTgui<-%k#x)ezzL@O8T{|Qm6F8VhnZgk}ajYU+(g73*Z3p3c4?JYKZKvAL$8IMm zc*isyb`KotLR;}w@gzf`LT8EGw`UwN@7vOuL*j#ZUBOeGszy}ECc%Zq%!suInmkKz zZz7nu>6AO^J#487PqcUK8SPH5NW~Es2qBnr16)1@Yxx{aC^C{Gx;9JOz|k{aM5hCP zX^6kLWw6uAP9u&jsP@y_l|Kk#d=M{S6gwSbcm)fd8zWKw01)1PXKuTx!D*JC!`t9b zy_hK=jX#!-c^-^VA0cYy8B$*GWAwJ_9N>Wh8zFT}cSe|NHPR)xEVdCkY(L@4Ej%O> zXSlVSornuqB1CN9-PH%Lu5q^lFZSi|_}8g1(F=-LL47*pK4h@w8+)H;Uq;G^DCAWq zZHFPW1k43AV;)y%@f&)_Wm6hH891soJ1Hd_%W=wxL&&aI5MH9WM29=r)HiabaL2|U z0Y$e~_`2N^G6%l3TApiFsDxFyml0#`rU9xx1t0Meswfku)jv+)p7s(8rMSSt?Y|4J zAKV~87L3>Te2(#9<3B4<(0)|*h=dSqz@z3%%n}Q3#{@%_H+|Kn^|u!matRVSM3JlE zniaR%G-RGbizss;VyIGskv}GEol7|76(6`+%sD-(QtA=~AZ{xK)@k)R3BM~+($^I% zaE!UFAHGwF0E=-p4q+(fh$}|X>H&XIwXhZQ!u$nHV37D<#)odBBMxYP@S3RF<45eo zzbAukRiC|eV67c;(eq40K3rmRZ6uRD@~3#7st&`SHLqpb+(u%kzz>Xo&;59 z(BbL_(c8c2n(z@D>=|!9Nmm+-W4M#!0=;8Zn`h7+cpk!O)Cc+0wJtVUL`X2qo}#s3 zKG@$F@64V4wOO|Q?yXPEaqZJI;0Dm%q;1UGB;QvPx+CCu`qqZqg$bbptu*-zX`1}9 zagET!#}m17s|nXbz65&h_*G`xABLI+_13#8&6<`Fuz(54A~#ip_(b@p-?Z0Bv@$3q zDJm-1)Y|2!+MF{^06%Uv!FmP)8zBvu;h>UG1SM0>`?D|+qLA381mNp5QtN@yCaf@h zryZHs04B?`c1WLdZJ|xonWY383>#v0oX$}oM)kRZhuM##SH1J1!GX`7Uw=xVnH)w6 zy+W0^f#94G{{Xw(Qv!dKzfG8Ba~b?M#eI+1p3@z)M46}ONkR(Em52VLcLC0@ifu^= zBv+L$+#e9f&GKLa5D0Sb9dKB;mZTX3kgrSVgY^h9}##j+HI10On!O9}g;( zk{0_c5RW@!=}n^3Ks$8p!;KAnawCvj?Isc34B?L|l#(n{Z)LLe^G4BaP~*2~^NmA2 zIEM0rX@DuZ>7F^`Qqo#gVv0AE#yAXjrc~5+&r&h(HN&aKq_(xluQ3AwggWi1IZYsq zkvN4Z4z`%nk=tw?G;c>8!;VCl>yhzXHhR>QrYc!IVGy`R5x&~OpXxh)+<0^JkAGX) z-A`vHiEnpThvZGX(m*a?xVsnkkxZDDl+6*g-O39@foVLz5K96_b+Er%E#Q@u*UV9H zTHY3wybIw2wiS@~M21b)%5&J)i7lBlae(d@HM}e!n6#^rK@k^$ubJrHHz=fmGYm-~ zmACFl*nfx}xySrxtxqG)vUlkuzvy$NlWa$0qHTkz`1g&v*eI$a{qX7k z0K}K4P%>P-T&Mj+%XUs4-cAeR1q%Hn=2!={F4G_UB@bfLsZv%skff+$=^;bVmhH(P zhXrX48MLVF8zV!IT2a8X(wGMlAOo^~p$uDv^y$aV<$=?&~~}r~YLOcpTsQ zcPo^Fq8uu1vKC02Zc>r@j`GvVX)_!cFf$(39K;m3=Kxm)T9?>(8sb6?-RyShBoc^{ zCYh;5<`E@AxUEBlGS=xzM3h9f;RGb2DXe=}`8J+fi838Iz(AK7a=|7AOGAi<@`&S8 zz1iUX$81umB9`@Fzcti>NOz$S#FRudqJr@b;AO4S%egNndMHdlh&KnOtPNNtEmDgkHE4jF4?O941k zM&y;+cKj9w*p91HshambWY@jqsdJALknM0MVHGB{5P|T=8e9tUg2ZfaO-{I-q-BAO z7Hf7udi|;kP-c}`kILrWMLdWhDotrBLjV9IgFrC@S_+1t+T#q|0TdD3BVaki`cx*N zgsPHJKvHaPb%Dm}5Y(p9d@G}|B)whB?AxbIwq2q#-30TDMmMNEM4Q9H$pLRjF7&BQ zmBFQT58uNc-L3!`wtaq=@~90=kX9Lt<8HZTYF%S<_J`QSZP!=rt3PIU*8W{#2oqTL zrb&!0yKQ0Rd~uCQ;#iddLmg;)4^x9-$2;NL0mK{=Z^GE^gqqh&aY9qKcVA&vfJtf& zCV&H};2p`?T=8ieMq)Iu^OEcrI|bC70x31Y57b{14-)vddtXGpdnhIT&E3c1Df|_R zl?o(F79WY5-`tkR-wlH!Ilz*rB7iO!5sDuRVP9ANBixSePT=nS8`;CCe81}Thyniq zyVa!GjVeFjw9Ak(`AJY;d9OEPpJ6YW7mHtVY{#BEYbO%V@{Q+*)8SdW^v3v4x^JvX ziCvZGnIOCStJuQ3gwV@Ts;g2TD*S$T9GUV>EdOYE;tK98B_5CPo?r#@AMOAdZpFVCoXR7U#i zok}5J2qX@V#{#2P0l;j=O_-#d1OSJ`u6~t}=``hy0X@YDIVgbSArlg&6&Jgo8trb~ zHQ`>&4nUaoT(RCT<%VZ8+-Y;@W9#?jTTHQ^6wQnmGm%ME6M>_Qgl4&q4`bZNu<%YWjzw@6)HNEGFHpV9tK z=t}Pc#Q+0vp{U{ng`D!Qacw+z7V{)7DdAdVibNa=7J^cs0|QqCvVc?OUDMeyf@HUcvB6sQ zkmj5Vfd^^~Ru@rNti24~JjY3&De|VvJTI3qj$_#2gPP=UCgTHvAqa`z-TlSi98a%9 zfTczvxsRPT5W+V^2WZamh7~=e)2c!qP&sVgm~4k$-F@E`I`R7Y>f>0UJ0Ev~AC`c1fX;{8?o`aOJea9?h0t z*#y;o0Df=u?a!D7lMs+TJsR^;=Bgd5mAV`0%UQkh3~MhWVV_k-zy%&D`%eOsu11|N z<+wb3E-^s>aU9}AGs=pQH;izfskU5OhV-$gtnVkVoJ|Uk^vM|{B3Rz2SR87V3ZXzL zClI0M$d{;=Sl|}zdaB28dvGn-m&6qo0G#tltdp#gCrU7Y zdr2Hp--}!}U~J%o6t|ISJ<6IC6#>laCzT1UIhI3q2P9xIYWCkN`416nRy{vaDo75P z_O%H?66ZuBG(@gq8$~@9=7KU8Irr z@5dYy9kf1H*{^mq*A~-Jv9iX32rxoE9zS|po&v>AOMUyi6j1pZw5FAM)7rlb*AGx(Iw2l$~$Q8@D;k~>Ni1~?>!cg)6|4ge4Bh)fj~LfJ+(UR4V+ zaV~sJTw|C}fZ-Dh6gZ_tm#2C5cAsZ%N)6&z#B7Ie+Jt+`-acD8^`#eyej=r*^77em zgeX_LA|h1UC)U>8NysqR z4A8(SfmOisje*XEnKPw=XYhxrkC$F<&iZ|F;1x1dCx2V0N6f?>yoc?>1vp!6BP}W@ z;~zTUJ9uT_U;>0hx&0D{bK_;t2&{WHa;#_LUlJ#B+Zb(@4)nW85DF{s(LX7=kQzEm zrrjiba(q=pY6e%kv?o(AIsX9UOCioF7r2k|ghGN4yulj-7dD|g>%GT!$P(q1)lF&n zKp*njR2jr?{{SpGIGq$BgdRPuDq57alC>>GN>YhZl%h#0QjJQKNh(n;Npf7A<)eiW z15@chjUWgHsz3-JvO*Q-W^WNC#F9xQl_Zi$B%6{+B$BFeH5$8&o4MRGtS}h;iG8~d zTyv;xC3z>B)V`hn0Kk-&Nab@6jy0+yC4q6E!oNnQkDV?_*uHhQJVe~=`2Muia5{og z3W*^g07)d81`h9_6*xAT*>VIZ0E}Rq`O?eDAPd+A+>?S_n2MF|?aRr@Ey_V(+#{zV zHWgwNx2seozle$hJ5Wlsh88Z0oDf0-Z)Hg7w16Y#09>IOY~8NFxp0UFH(E~}qv^%S z#O=hF+S=p5H#i8KP6MG*tZjs07+jSY*bS!yqLA7!6s8z36!SqxX4fcuz*MQ+R{Z)K z?o$9?6<&n)c3=?v)o(Bc%+1?XO1@jG$>cb ztQ-ZbR;H2H6PR6e{{WdWlGQ^`6NxY`AwbL82+HVDD=zLmD3>B;sDsBeiE^&LEw1+v zkvwk*5Csff{@y#{IC-M9NS09G%FhZ5SC48w(L1W{5b|M{=xq#t=b;AxLwz<1E6xc7k;F~$n?wg(+fpWEu zXmBZ74|xgr6lsVRNq_F^#DEUNvB0K$ick|cUZL#(;9?w@DHdM{S!(oLBsh@_P6aGL z+e1(f0(NL}=9K`S0n~d1Moy50Sm717&={$OG6GaNkU; z-qkA}&kE?Gw4h^OJ7`TCyDVzh98?6k${Qhl_|$a8F<71`+Z~xLb;wBVW~hH<7@m#X z>W`UzBL%tZ!ZGDt6g5Z%@z9C1`LL#?C-lbOitK5TT54X3@nQK*06kkhxI!ce3akM8fT^QJx z^x{5GO_^x6X$ukO=TXy2L|{E(($G!+0Pt?v5FO@{IF61S$e=qBUz6nh2riz{6k}ZF zMA;aeNgYGGy^E|5!d$n$0Z@=7i<}FTeXAMI9w)Hli{d@Jb2X1HqxP(sZMheAe_=rG zpi0T+NG>td95KfnTdsBq7J~EZp;{q&w$V}hi&BrYa{}%U-M6%g;KvGKmIne=Q3QFL z-o-g3?z?J(0;NJ{+hfl>XiSkEn3F=?_|WE#0jCsA{h6d8eY8s+E~+d?>X`b_`6I>0 z&D&&l1A79e4d z%#rFmwo}le*!4)5q8~z=ckQ9lL>QX8mf4LPXnh+DGolt4e!f=+IxUkh?HTPIWqKbh zZ$=>0oKKy8Sy30d4_quljBQ3Sz+((A;g;RBnv%3AE;STLl_h9WOBAUmnJY=rNl*k~ zhkb1kaS^;kUITh%M6|WQwdmmBT0w|=TnKYc!qP_7tkb(M6TNqBz35=Ir;>E&i_C0BZe2(@xLxyD$LAE!k z2~QA=FB}NC>#{T+c#e6B(KeUPasQ#RoR^50@S?MR|FxJJRvOiKjQhQBPO z!4BQXIcydbOWv|wnl~}~f{s{ysg=jww`cF?46VSFOYgwkc~V&T!(!xD;kZ^Q@wMTa z@+$<9$!3pvAO@!9WP$Wmt&*Yv)BRQhEi2d@;1Xij(OAGQH?+2 z9Q~yDfNMo35yKYZK7L<1tu&~@{h4+8RrXhxd$#5~t2vBPpfUa=NT1@4R3C;&)bGf; zKg5!i2OTbS%{f;xK~WA()k^@?*Kz&BOUc|J8o7{*QM&ETJZ0|^cprBGeW|LD8S#q z`tBH2#QYW;2q(wmRU2RK@MgoM2|Cvd)Uz;S9>na0{xyG{g7Zu4=neH*w%R)EJ1F6> z?e7_<0E|~HnBjF^%DA7l7<-8G_;%KbvnwGf1d>|-J8;8kEHhHVEgw8%vt{bv)CPh{ z2m-`{5JRMiJ7|n{NrfZ;3Xj~TVqUBr*)+f!;$KeSD5wd`5xA~2EX`4vLMUh|07$|P zF(90<7!|K73@F{eca6I--s8SHKq8 zLftGWjhmDKBOg7-!wmFQpFGT1XnpEg@FF^0Ixej5t%%?DaUX4n~QbJ;oj$E&AF@a?koGaMc@NWHwApeML89OtNUV*(ZLa@xD=3H9lfHZWjT#c zdp45bJyk8^jXfUfxln&_yaI!Oki-E(r3#%!I*>9m*!YmgXBaF@Vr{mhWloaQ{$n75 z1xzpWu6v215$=0}&XgyDmOX=*b)c>TBEC!S!U9=KQad8O8jzK#loQ!_P zQFxr?PxPol2+eCI?tN6Y3G;YfSAtObLVo*_3P4&2g%o4lmakBhKV?+?!#M%d zq59fJ&w(qwLHJF7UNDrf#rfF%KMLsXxV2i}24sQkaC;7Q@&LueY(-voDz)&2C;vmQGMBuzIFq+m2l+vpOGE@8MS1CW{MRwzpCF>l)@0TufadVnl?7pD| zH}^N3R)U)&=M|SebcaR_Ahs)JlqrNCw<g8k( zt5YGmtLd91#&~#oP|uplVIKCd9LQe5?)xUnH*dLCpbYaOF{&aS@lB`1NI?Gp+s?yD zFoFvhc6e;4>D}cmiY2kr4rN%w+6gegfy$5CZp#=sPq`8-V7bVaw67roFit;jYv$Y# zSe$rD4oEgeB*wvQ5vcDCRL&sBe7%y#2^sr}xWQEjT&hU|z(P_001vPZRDq#NLjg)* z!(q+S5CDqC5JW)af2;D^?TL4MdZxgQ&!@CzJHtTf( zHLxlpYhf6nOlZ6dzz(}Rdqz3zcSm`$9f=+3QS(~^nxX5K{mDk{q$ZC|K16XpC(l%5 z<|tI-I>}!cBMs6U@Mq}Y?yYc9#tZ>m{PQ(j_q})(vMp< zDh0q$P6Hj7!W9obTn_GcL6mScB(B;3NA^DLV#`g{`WA_1OBZ`fG~CYMQE86?Mpr$;TL>3_v>{F9 z7Xg({{sr7;zW)Fx(8!xCze%AdytSZ(X_cgN9V%0>N&1r}SqAMdgbi>M$OQtZ00No- zz+m(ZTwgKWb<`{B;>Rh5*d{SKSH17|y${jz)nLrw&KMJDDT+LIW#0rsPRN!>;GJr3ZPUWn}y)L;@V@ddk_^L-Lc0DoJ956ULXDOdD?Zk+j1AhFouQkwV z%a0ilX+Sd|LmL28sNZUa-CPQXJ-BxHtA@ZF#m#=>lo)U>L=H~~OJ*V$2PKnMk9!m*XlAfkh&-S07{{W4MMk)dw z>%Sk+cf$j9a=2!+B&|%K8$MD4`^X|>wY<5UOeIh>`>Q2x-x}`S{Ev2p{u2Ftdm2h{v@~pgkgJU1p92S+AM*OQP&D- z+1EHAL7G6}Jyi^j2W2sGBMGOj00w{LkE1fx^?JYJv1Io17#f}bWAcFGO1j}r~ zI)fMq1~oUtg{41g!;?V8`G+t$gqtYJcguSbEJci9=8}rt_Ar4JkjU0ITEVGf%lOxe zjH}w?0>`XD5QUKlfu-d^$Eg5p+1Z;__=15PL0l6P*3y*#@njsb+fI<)_9-G!!1F|) zq__OC9_nFP-s^J9n9K0EJOPt}J2L{&8!51bV;%T7CP*CkFzDUq+_-p97iqGhs;5;BYpik zRHT*(cgMUw&deIDYBbB5)kB4d_-wb04Ec#=*q7RR^)#Z(Q)_G^u=O1qExidb>9XfE z820>W89)HH1{8YLytW%ET-Kr;gb}wsY0M=FG4}^J#`q1HZskbHQpW+<4;*lQItRlq zUt%Ww}2=G+}x-hNKvR1_mZqXyNN1W6UqtN zJuJ;s=F4OS-1H<%WsAti`C2h?13Hb@cZ97BhfkV8LPWW0j+-!oTFa_p@;;WS$R026 z8_TWfc{TOifpgBTWsnF;1__EZ*On-f$c+#1qz7_Jj%^}CH1e4ySVk~#fdZ=%;$iM_ zB)H;L0w5k|sn$)^&Y3=Yi{?ymB#1N*+SY~kwV?nJKrt&wax2c6xCKyxo(Z}E_;Jzw7JK#e(j|yal3aK zEkIiT0GT-zTYM-5fl3J!*rm5JoVO}znEASb_yCOt5xiC?n8gVoRKA-`*>#1=9e)pgCg{ggj3rN1Tjbm<+~2TD3o@fU@N2J?4}zA z+@!lR0m(w-ypeopmIXHFu&98?8^Z9SP}>SqNAh2d54R~V%eIJPRIUTh?Rs?)#T>Cm zBAHSvl_*FCMGBRvDFl2eNKq?1s0_tgWLeWhra9$c)f-L&H6;b0tA$H3h&M5e%N*7SM}K8=iP2OHSX#=QQ}00ZT<2yKVBd&yErQ$frm zh60*{@@#uEx+Tv=j6vQAjmp4`cGU}ov=4^YFM)qSO8PaHf`GAD>{S4By$a{uAO<^@ zFr}3PINI*P^(-`~@7F9-0u7;mOp0#8gL}}ya3O3nhViNR110$ z?~TA%s^Yjtms~8&{6iP^<%~r+q&n*w74KDw3~*Jt;Z!ObhSL#&_4eX&+7a)^6KsI> z^6g4pQEEewbjOIpqwAKl5UK(pMBhU`VL*;5(s>B1O;lo1NaQ61Rl#G&3LG)7Ome_T zAuoqGP;*=y3V`4NBh(=fDyIw$SefJjq)#|}e${JA4pZp$sK+k^?HR_R=E!5Xi%$W% zM1(zrMoEg|3lm2;Y6hP$xW1I(Ueh`YBN^Ss*)qhIYk--cewZjiCM_jZNAkY&+ zgB%x_KWpQGwRob1wQ8NC>i+;tGWw635Jt!)`cZ{-?!$Gcak2h>&fKwu6aos2{+lmq z;eQ&Bm{mZ)5zlq~J$mHFgIBh+;ZD7@dk?t8TjtA-4cJ#|rC^xoQl5Bgbx= zHf5qedXAVuSiuK|9b#*)LP30RW2o1^x}DEeL`3oHtSUZnQ3$|WemyNkd`VMn4#deJ ztJIXCI^q%u80(pC?`c0VxZv@XJ$2UR0k92e*XXrL5zGr#{<`9G&)$SPp@t`;C5(z6haeyiyrpDiW3ou1Qe>|!} zQ}8_emiv~3O&%l$)6?1+{EUuZK-m~3*vFUXO-M?8qrc)U*D4&C+GM!VRN=~Y3RKXJ z)0DkQIS(?OzX~zwwnyU9h|&`XZNSPu48+|ND4wUT*cm4D}2ikNUq zgpL8Q&M`E(&n|b=@=4xJxmzRyZF;_$jFBo-nPC|%jF!ZQwXFas%-roH(1}slT%O_e zCvH+eU9c)K#XchHH&lZi0kZgGZo$-Oe8?^~`xtu-HsuFpu!M1Kv`HG(9FdTyNdz5ol_AOr4h2C42swfx2*8e1(uJ;Ln%A-5wd`|4nD&rEn&yy0fd~j7f-VyI zXTttCj(>H#_wv&e$CVIoH8Nt9&?OhVtRj?>!sQ@DvflVcqE@VryZha)Et9PvIvg5^ zHLka|b%R}p%uW|9cy4_E0Kb11e6cfE-3@ffVO=vq6wF||ou$TO0AJu0n8E&0Z~=oU z8&E)IF2prl79fLAL3af%4j{F2knjQ_vvCG1juwn-0~&~-5waW(RuO^_NK0N7O099B zZF_o=?9EKFhWir~xHzgMyJ>=dDB!!Gi?n(Qq}mG5;5+MF*X4n6j@)9N zr!yN+uhlv3Lk5Fr9%Teh;|wzNXnPrVgo6O-B z#ZzrAz4y8h4=U!Au>;-Pt&SnWI)!!gsf`eDS5dx&Ws))cYD+#)>9Piec8 zyb5tLRIjA_=QUte5rN23@mymXh(+PmCMLNJKrmX0-^%kLJnhWw`!5LMs>1cw3uaS;j<`xH~L_;N7CQplodL?tXp)9yS- z#8kdSc9p3YyOIKY*7$=CRVOFBUQf1L0s>;A3eLsBh#Y>GzeYpYtiY ziaxkxN63^Aa6pX7iY6q14S+7%l9Q{RWAg}ADAu*40y7Q8Ffj0^QM%zk1s3t8ssN2R z^&pV_n)ZtMY#+2hpeeO|Hk)Nqa;MF5EZKx03C7_AxPj-e1QgmVfaPR>Ke_;7almRZ z)w*O?fDM3xr~?rblCHqG)SRahgt(g(Qcl~FQ}i^-Y{?AN(^l-#pE^E6m=#pSDcE{g zZ`)FGQCAQy08p1xio($wZWv9IH5tx26Y{Rg@z){Dy`ln)cOb*Aa}o-oZ5}Jwky~x1 z6K2GgW)#>smcTX*-q{J}5xwkgvGwJ=RJ4>NZv^fUyhe5M_x)9GPwh|D&E;Z+b3@_H z)4BI5L%2=Bw_f$U0jLyb-du|mtZZlj&Qsj-OLR?g0A|dYFqOCjOK*cAyqGOz8YggR z*%AxOoJtsrG~`o+g}isy8kG^jpH|hnj+Mg<$ri;6LY;t`J+nD&1|4?ZmsD8Nym8q> zf$Qzf3jx?xG~qDpBdnoR81(OdO*2Bn6f2U1%EuARSl$DC+QgI{e}q#<&gHsfvaNgAL4jd#Tigq#)dVLY z=S&m9Y{s?CI2Nd~6ervYK|$=jNv%9fe+wq%G2Nnp$oEo#v@HXWm#t$xad`<{A+UU-KmY)X_^_>*=`%9X8lt28N{ zCy~xAGI@~Cs<{VD$jR?5EYgp0lI*4g3zrxq9KFH2Y714|y2(J6G*4)X$|H+$mgI5& z07!Q z$Y^!>jCfZA?7_An6bA^RbrBd;T;>6ROjjkg)F_dL`a5kd4#n!+G_E^%j>DFS2!H}9 z0ab9#1T2|~ik~jfbDH_t|ExNvGKiFFksc~G*5DGQMxzI>)t9-f-P^Y)guzhibaTJ zNn`v`NU(eA1z)Gse@&><&sQY5vfSk++(0}8&7^^i@LChRbRY8$@7CypM;48)U^`j)lhL~X5m2H`Vw(leosoMDlW6tA-C_Xpy*;5iFDnbLt;b>$dybZ*{ ztbEsBpI#XbW0M#U6YJ?x(q*hL$0KYp11;NVB-50Tq^U_MAf-t>stX0uq^J;5Q$h$J zrHKS&M?8pvj!;4rA~y&@5sHYcbE!FUgNF%dA;Aks1QwVOK~Pr^K~+L8QVreX%ZO5& zZSGfd5cpGekUtR{1_or)@d+BLlYlB@cFD4P;mrOXrDitYG!J`i^#Yt=S$?(tXjDeC z@mVugZ+Gy>n5E9sxRD}bu6|Lxmu!rpOa!!n>9>qGF$wLbM9{1{B#l6%oth9*;1m!P zlZrtjCOUg2jyY})X|tL^1mGZ4aN-IOa3-Q<=%&b+Wlog&a~t(F?Lr1%#5faYH1LpM zY@PU8!t=ylFz~M6-NT;yeR!8~Zo5!ikAHi;EnrHO$_WUJEmBB8EQBi%laX5{Zn|`> z9FfI0RWXt!gjIaf7zr6Qc#c35l}OLj>HDKWt?x})4AS>*lTodn;{YY;6vs7JJ z?|BHSiYi09Ws1>4)C9)_s`vl^1WSM?QWy4;qDdhxXiitCl3va>g)A9ew;^xsx(pX( z1*XfV<#81N_ zL$?65{{RB&#of|K%_nKwJ%z47Kvp4 z!d0^v@DUe?5bz<2f&@=GitncJ={UiRiL7``oD8>b3g*XVM6NKFuE!0$10QFg&PD)l zn&MU=N^Pt>yeP*N#xWcD(D?zY_3MvzjniSy#0WsKAT5p_v5isBSPY|q=?6aA6?S=I zl#z-Q$3RG6{dGTFkt_#2kVJGsq9jeAY!i}3kvaS_rWLaYOOgyNlALTaN{8JcDoWC- zg{4V76bNI82DB!db0onX(eVmAV~*;8d*Z8Nq~*FhPsa6*rboM4(x(bal$O=fNH3rr zH90f_P(muF49DxT)Tc~TRDdQBgi6Nt#yymZ%egeIdTi6CUIz*Qi4{4V(LCr^y&_G= zV8iX5Cngv-W(4W&e#+(T0RhJA*JTGXVv<*IC07um9+r|=Y)caCbS^u!$4(h@8nKQ1 zkjI@0_oq0aHv27w3%$C6&I#`BWDwiiM5$(#Uuq*ja(I&ADM0v^q7sl)p_fXQ>5pW# zw~6m?XaWjOdm$Ho(4?TCXX+)%midz&8pbre&L}_v=Qle5B1s?xBm>3&02FwFe-Q5_ z+$)+pI7*|jwkP~3iL8<}4aDpfGKCV!i9ZBjoZmyFW|Bt;M@%3(YsmVJ4H)n;A*!)b zVo9$w?@sc6cu#cCrd+aHCRr=O(u(4R3*JW)&Jb_X*3@XEIXh@aoGV_rG!T6SlOAC( z7TkiPgMo*gb;um-(}DTx=DFpH0v7r22kcaGt%n6nW7jRdS00VqaeaL>aG($*9P*Ly zMxIpEou<606;TwWa*5Amr7ky!Xt^bP6hzd{j$7wTmewc$5a$&Q0J+gQ!oWo2l{($q zrW-iIV@s&kNt6MSLN>SBm%#ymXR5v<7dCUB6A=^uf(Gu$n46nIr)0@&vBJ@Rsn7+< z9}F5GJ53#m)yQ=D(ZD|1n)D*M*Cqo1PS0JGYZ@|uwjpmG-hLEPD?zY#J2t=@4`wY) zj`zYmgnv&j3MqhJvmt_Xv`QOC(w&a@^lk@^CnKW6 zYT>ijPTDqBNC$2_@g$(b60}Pj1Vkq2gzQ{4U!4(#+xw=v)Qu?gau0S;_w!o}yzuQf zLWyfhAYcwq0yoT^uqU>kMX(hhB`FR`EC3jiOEm+zZlfqJSf4=%<9*arwigfrlY(5F z136SjrzXwgCx>5o?^{glxL(H9w>7 zqU3&~iLJs=gvS*TdxG#S&?~mKoZOZ&FW%oyRV0fhDAcpeNC)|gt5B9eW&kBXFvc5Q zInHpF2`TS++xtQT1O&LjA`b6D?oBHs%5>nyuqVot&;S9j`HoDEk1bOFt`rkr5=$NE09Al2}T3K*W*cKiAv?JNjX5!=E zz8KJNdU8Acu8Ir@QZKzpsucr@i~%_PIAgW8<-u`23Fku0dV-Ni^e}?e3W4w%aK^ft z?9G&fLyqviLl~WzM0dY9Vwu=%=;SGN!Z2e|T5H5(vb4*=Fh72F9$TnaJ2Iv`y#SBe zs8lVcI1193)rr96tSS)Pd3EVQz3T-)b4ZoVcVkp4+?vo+i!s_6yz$M%BSJo9!q||D z5;o=%#xSMV1|f$^b*RAk>>wK$gV<F#MuoJs*Dq#=O zg?plQDxCMOQM%V?mS|`XIzy0|2{e2GqJ=4__GQ4K!^5^YZxtIpRHv*sP6d!9GZrBD zjiQ{2?im;>`ATo%s$KM06bv8Y1CCq@=DVS{AJ+m>p{MC)G&r;Pg6Q9>__saA_5%jW zIhmP2u>=}-gX||SX;3>2L(Eo^h|;7X5wt=P4#XH5@sC}E9@9bt4YgszE@>!%u|ppn zi-5gH&4D0dsBAMg!v6qcUNNyWCHPZ~1LD%VH_coB& zAhNEP?`C2t1SjDeT1kpX+9NtqaQ4xZz?U05F;p!sbkL`bUswnzPNQBeQA`rBbtNB57~30CAbion09@Vv*<9#+Ont(7z1_&GFYXr!~t1>*MCOrIw6K5O!_z!xqCTaIss0Vt|N} zM)<>N*-mSb0k@S>QttS(SC0>F(L+qEg$HygpyCeR%AWX7$5&g3$78&`?e^y!sTC@^ zun+fJDQEf62X$JlK!E=Mhgt~tYL)KZ_?x5Qlc?gGrVwm6rb!?AWR!aXugWGLu!HS5 zr{o`tNbg}YRiiA@caPM6Zl73jY~a-SbB%_ffm~rVt{&#+%UkW$eQ6c-rTwJ#v!|LV zkuo_{0CJKE=R}BZRm8NWL@VK1MISPkH%~fSX3Cu{^4=A%YuZ$U5JkZlw4;HzwRtrC zF1t%UW|vW2n`;Ok6;feK?x z(bMHLp?al@L!H<_OWrAsGG3cj^a5W1DfPXrNSNG|givpx(r;^0S}S?vJb5EaJ2@pv zECoxXo(Cv?rd|wrHnT@*Qw^yNlxuVolZo?WunVUXh{Xa1smL#lRK4=J($@BIB%D_y zi&;4T07_6BVqT4_8~K&9N}v!CU&+JCo4^(XVa&X znwD`mVt%shaUW_Jt7S;1SyIV0=TTp1D|bIFamZ5vB}p!djv}O##bepd=B4BmgF{*o z2LnTFAc3F&FK9%a`zFbNATa39t$w?4$d3>(LKMOo@4)(Psd*<0#KCO{lv`eyO`U$- zFx#=Xn$uqFhWp`empYY_L;{%I+mmzwu|8s@o1zbWYLt=jLQH4;xS*HdTVJ;v-dl^M zp+#f3PV0nRAdomjL{ha4`E&Sy_RJiA>iS#Hf*0k=7>seNMT-y`p3HP1jY#&>AWRX$Ambg! z^@jSFlHh<6VaSBQUp3{~YAlNiQ)A*zudfZDVUV5$%nssLDBFMOQt}Uip~nx6UYj<0 zP?usW*ut2a4Ihp}nj%p%j4m)xBDmRVT1ixlJi)Llfy1#Nw8CuZheyMWb#doH6wD7V z9QoVhQt}OmO!iwWI?9FV#ryn{wC`^cZ;RNMiTpb6rbVJ(Vr^rEDGh*NDV+OF zBjo9{@`MW{%V`88LqKuI6L71*%fO>Ed0rsAUx!_w6Xw*s#J0Og{4Nd%7J*DEaB4Y4*j-z?TU>7r;k z6U=$lDue?>flNYQ)Zy6Gt__+N5OFyo`43g5eB%q>sN=Z8sxgy@dhm1FbnOQ#;UMg^ zZZ{j_k1Du-_?2OG@U0AVW@gp8b|23*EW~ymyw=DQNEh6yECEKx2+I|6`IE5`xaLD`Obf$#c3 zFd(2?E#YplBzFq3AcyyIE0}?yLJzwqg2|?t zDpaZR{mqzV5F%LOutOHKfOi!EVhFrur&Xhx-U*V1s3A@^1O(*wjv<&W7seGj-P_(& z6vurhy#xXHf`rDTlHcMcG0LRvTRKm~d57C6r`5O+$?oD76F5UiKjRI!Ie5)P(wH%=tUU58Iu`;Fd{ct zgj@RHwT#SZQVN0zF$HmiVh#rtQAFWUqhYD*LJk6~YeC*KaNG&K#zaIR+A+!$491A< zSY&SuPg&7uS5Q8tx*T1Ozd+g8YGiUJGrHkzh{AxH+wFyt*cDj)qX-$dlA@y>H9K~9 z(Z-pv0PWrZwa1Jy#OE6|gs)K;b)6ixlb8zBR1FRvEjD)NeRbKCBN~jH!5=-5@-%wd zY%74)zg{5MQ?or$Gv(aJZ&%td9O^}DHWfd+dwWM<&idTBl&ER)?s*>Hik-`7RF=|w zEAyi`?G1_39W%C+F~aMIhb%IvT}-Ik2=#P`URglZ*7}2UZoBR6azKN3T1#}W{{Z4D zB)oAx+2tsSBT}$6t)@InW8Ub1(o?_%v|tl8N{`cbT;BBW4JUWW2j*)v67=Bz03%*c z%$h=4RK7WmIB>X{;O+MDxZXFno5Jm4ORMXd?(P<%k=^Ys>=Nh3+8k)@E{2^wiKwDMR095Upwve*y=UKWDv+)2ifRGkmE zu(!`T;!A|)58uLw01J7ajce~Xdj46_b9VAk*I}*DTkEkR{m@ec7N8~8LvuSf!sHEw z^~iH(f_Oo30b-y>d`uw>W0*-TG?Lbbmc__oN7HaQ!E=JbxfQ!Nnch2_c3!)xdmD8~ zbrPWh8J~~5jby!Ej!PWo`dvw#qtneLOQkeBYuGp)%Za4#JB4`%c<6tl?@fN3H5)Hg zG_Yav<~!!HHy|=&V~wy%O6q(|^y8+QKUNRJE12RTu#=xJ6<=63M5u^w>Jh~50;AV6 zkm2iB>#zex+8U*X*9q^sELApIJ#MLa60CP8#ZdFI4!{E9d{14zcJaq(U}is>9PV?+ zt@SS^S6Ih>CfgIXKXW!D9i%(q`F(XD*3o{lBJ>`T(;lKtY{s?-!=qbH72|(k7h)e<=$`EZ!N=V3nwO3 zj>z@53qfx|ZYIXHtDS4N>Djj;IIp1Dnc8woc*)9_Xl(m@Pl-xO4efWkYSW1RUq22XCcT>0#85p1I`O)F06tp-^6 zOljq*4pgjar4m%5tx4e7^7gO`SyUo+^#YN~ybg5vv!BHGml0(| zAKK6ZKoAhT4c3#Ds`v)mUM}4Sla>K(%6>P>Jw$Tyq!l1Um00E0+eU^=aSe+He_D1o zuNMG-45@B>RY(C-3?u5E6(rr4g7O0#h3ALiTanD9xd@Y~0hf=&2{cf6txS)U{w9y% zy;2`Z0bJF~7VO+=d%N{RQ7eVV__EQi&CUI<=7{g{e{iQ(j6-cH^X>hPM`?%{FJZv- z*+=G`5r2jIFI(E)O=B-Qekhc}XtYom5O51XG$TSmaA`^MMAq=1t*Th`xWpm_2Nsy( z4I87@%+gISZ@G>^He6BQS;8O(v>$7&aOD;?e3W1A+mRB2(>1)ICt|{R(g@K>T2crs zL8hSQK0?UUN-hb*F{&^^P?3TVO`%x?;>}))cgi8{n9w6Q(f(%20fKXx%6^5i! zhvhXI9jwo?oH!iijR8nE!Ex}9T)h7P<_xI`7;{(4VdlQv--JU1x1K9hbFnbYg^mc6 z8vOqNCQtcC97F7VaiegqT_k@IQXmq054Vd?a8vhK%fF63>U)> z3K+kLCuzbMZ1hSCF0I1=G#<}U*_Sn-nC}}xp`=WBR9l$sKMxNIO?nSLeC^Ac03ak5 z)D*|x<6-eln|4w%?IVC2C|Cz9D%IJE%fJ99T+^hXT`-kCc1(9e4eD{OJNW+q#e;lZ z9n-tzKiPJYAAKqdCjRXNx`7Acwt-F|1;ny*Pf#M|%loIh&YgmM;68N5!K6l82nZMX zoDjSDN3#4?=iU3>-_<u%Bv#bCu|Qsg1cD2gGZ%56kz= z%3B0JgeQ$-mDxxj4UOrcJafn_o}N|IS9R`L_k#JzRCcLTDrTz4#SwzRO28>qN;P#d zNb~2iP~iuPW&jwCt~f4NJEKJD^zNKNh+sEDr7&)LP8;D;r0(dg9i#NtZg;!na9 zMk{>)r$%?^&r?i2xfq+`aq7Yur5?sZ)i2mByu&&r4XDMn!w2g}uEFfYcR4Oe%c}}0 zvhlFp5)(b?61dSAt(=d9X`>FEDPGEDZkYm*0~jwQhRQ9hj@%Osy+C;qirWGONYhT; zdbe&aJDf`4bCRj`1#1>#G1O=!BWW_NK2|kB_kRVYNNp-rK$igktR(I4kVyx zB$Kiz6y0GPlYDAkM5j%eE>j1+?hOeaamR3pCNS-+fgPlF@kbIq$j}fdG}Q4VIoft> z3g;I&&nT`Wo^bFV3sz>vwp6ytXVAumjLHRA;#{sdl2>M?8uJvsATiq29%wOV8M6or z9@LGjB1z|zBS@I@3=rDtmkYf)TWuPRGmhnf!` z8l_N@<+$PPqYaxnWq|P@KoaC-mT^01SG`s@$wwqe!)#+qstvl(U{0;C@0SHt7)P>& zd&ePtu^lZ?s7*$lDc|{ha?ncJ@yLOK-yOKx^dp>wP0S8<>$a#=IM9=&9D6fylq29V zMTb~Wu6YE3hC4TH#x%O1XQ3xf1XO7K`V*In4c%IWd#@N`VTF*c?XUo4OR54%I0t%g z7~(s!#zHxi!>-TJNsb%Vz>7dGCmqYh;%W?D|$pb2xbLQxdc|FB)HM}O0}b9>~K{=n}xNGARid*=T_P+art=b0q zAcaRNN}^a>SK%%|bBbt1Hi2HXdq{x?dc_v%I)$naP{+$C_Lh}DP(hc~5dsnf*2M=- zFR*Om?dzAf5Qv9(E0OfKI8;>9GC9KldcAm{3X&L9y%-AOJx*BLpi)QxCS?}*t+1%+ zrzo2yF}LZrBM24RedLlz&(5_h>xzljP&DbBrdvZ;#vj-k(TCF1P@9Z#D^rXCt!qF| z7PY*?Lhp_=4&pH6fc4nUH1nYwPHfobpdlMauRZl;InX<}&&DvRmCz|yd zL1@Q@jgKC^`euY6BO}pE;{#%}_PD`wx`phyjz0=YNWm4TG~3=gH1EpX2@t+^IOE|O zEt3d>p}xX!=NvxNHfw+B5408}bg#q+IAS>Cl@+me8wkw{Pz&5FP#y7x%)2PIOc0JRC)G;k zDG4KIr>2Kd=h;=!Y<^H9Yz^>-+ngo74ZbLv<8{bKEa6uc&rl{pf1Ma}{{R*s76X0J zDB?y-(#!ysINeKQh`9d%!yojU)Cc5xPB~Jw(#N_|N}NT^w>$W5IFiYSfp8BP2u!Aq zx_;*pIN)Dgl>8b5Ol{lGJ%+KFPFs1{jI+YjB51Y^wWobMiRfD+zvSGaq6!Lh!Q@!XOk7E`;Y0Ft1DQtv~d7IWn9P<-am&NBFZ5 z&R^{a%Rw@`Swy0qZ)N#SKHg`wy%{aTw#TlPhRgtRNEF3H3@NK(%sBBGThbtA3{gmma~3JM<3>v)q5?=b3-(8T z7}BuK0#_$AsQW?0lT%jZ1@#m(z?`AaXt~PK^6?o_50^R3VoP<(2YXOsbR|(?y&`J4 zZ!ObN&b)9#Jur0;&iLp}6rVIfH`c&;gOcyW}DA{^B003Pv>2)Ezf;QH~rK1WNE$!hY z=UBwD0%NP;@T3v592+7&bmC9(2!)x#(Q7CRid?QMMl(&P01+vtdb&GQ^>IRGRI75i zBwcV))<8NIcA;=K1{oRrMHIQpruRFQGUtv`65B0^8pbpc`&!X_;bV_&=)Z?NQN4UE zckk?0nJwi~P3G>HtMIpJ6y`j&hT$oscTqHnG*FT^K_^46)OUQs`6L!NgEmWv`Ev$k z6t&<%uWz_mt5u{P`0hOie@OW{#_&yJNYiU2fG26miVF#{i9-1k4+E~!$D_w5JTc-8 z)8gwxal0ibxQQt@yS`$9b!Me7{$d3sfl4hE%uf`w2a--`)1PQ{+HUZd$ESC^C(V%b z6JZaz-@e#>1AOJ{*?j!NqLHa6bl@ITUz6MQj?O{mmI&FY$qRG zIAt!Eu`OW>;+gnU**9wLzc65W#*&iXXy`>dDW!BgPE=)_flGd#o2aHu$fuVuZEN~c z{{V!o2YVexlmeamS@JvB1>y>X>nLsWqvXsb2#R5j?1;;FO0Zc}Q(PNwA1$D4g)l*K z&gr{5L$amhy3xrlkX7Bc*0&aJS&5^L!><~?80a4&OdnP3Z@MYrx~3#L*k`d40?>~1 zG0K@mi2xp4PiSgZj&VJDHbR&nqYU6p?04QftZGtAq6Q!(^Dx9&1aE+&JDv}9c48nj z>E-JpU1&QVi%Vch6gga%aLwWW0L=)PaYTjMViaa#Acg7~^CSs@R#TK`!tZOjMZ1Pk zsc^B{k?i#9z;VYnnA~u&>%x&C$`Nt}W3b{e5h|#bt!f195{-^ko%|qyfC1MT(e2jhDfPy`s@s(1F*6|{*?k%o9 z_{054TTN+wyZk5N>z-??Te~!GZS!!8bwT);B)9xczU{IysLK$L%Mao&5|JWOR}lcD z$;kX+{7rtQcnCv`sVy#22s|#B@B$cz2C%@OaI60S&!sXFWfvkwW0UDW%E+OJQu`1{ zubaEebzE+_{luws5Pi(a6qyNR^Es$kVeb%Xg&Y{9oPpBF>Ku=u=2o(;A9zaFN)x3y z3Zvzl%W^LX5gaD$b(|t12m%)XIEQ=*CEAR~+U=z>z7hqD1YnWJFh(j0ZCW|Ad0=*O z{dQ8Sfv|qjUeT{m-kG6jD`oZNzACiwG#rWEo(45SqbCs9vGcUhJ^<7}E5Es+VHS^{ z->6etF)VhFcYHFcOe0)z!MyeK%?MD36yFM9m<|xwRzIa}9gOo9iWy`NiV{jjF6tm8 z0jrk{$2t-o@$6|RGJ!kH0ob*t>ZM8w`K@FO9Ac2OM0tR*F`^Loesvd~L_!WJPxBOd zu?QMeDEx~CiRte~frK1+U=tb=XM4(MB2yhO#xC|YIbG1&1Th#t9_X@$zU;`b{{R%F z!|*_4j)W*bV>P;2O#wl91NRkOi2#`n+7f4YYGzsDTS^cmg#Q5CNhbIv>S!e?43woH z1^@t*hQf(qPp;FRAT*Ey48KYkJC0AdVo zySv7u8M1(E@ChQ#o3NZ8fN_J02M}Xf0^UR|DN+=brC};c&_POpVhT-YM#dyi;hB(+ z4R9gAg$@{nf^6Lp%+@73Sz&Wr2y+Qg;Eo8eAlTX)_O9PvRj6^~78N<~PO07cAmWvP9Zuo=SjbpFX-w^wa z*JHS0k)_@;i`&Gc{{ZfGifAKK8VRocHXwp6i2}I;UoV@&_!D{aZ|nvQPVEJ4||_&Um=%dTDwo)rM_C9r1*->9s%B7{{V1F zYNa}?FC{<^Q4PpV#B|4$EY3CtV^(~Zxu@}IUoAm&nWZuZLwm_4IjQR^m6I>BJNBKHPmUmNCTFXP zyBtm)nhYJdWLb{@;9?T{6hjPsYEn$A5;rehy_wKUiLozVrW_mRr7{!Vru*>S5HQBZ z(Y;Damu}y`!vhS_PneK75i%4Tkgkx*^8?g9Ho;=$^wXI+ig;XwtM#zJu;dUZzqkX1Pot7Mh*303=ZaK?p<6-Qu|Uy7LI}=0_BpR} z91+bV5wu-4Vm2k~F=WHEz9MQ?&NxU)j^k|Om?l_M$X_`?P+Jd4{MWlPhcbbpkAv_K;E^PqKe zKZXHS;^IWe9K;adcG{wMB${mYQ?j&uSkny1unXnXdbp@*j~k7IV-isHjYT)QIipI) z@GF&F65$sI-nBm%kbi?*9Nhk^(>tpKh^S zO(tW?M8!J?#HZ;BO>F&@^XJ=_HJ~BJ$1biYH@w6f1ATy?2d>1dH~Np_{{X>9Cg9z& zwe7@UZyC_1Ri(74acqSOrsm-X`J|p`t@*ni=Sp72%1;fOBcm?bI0XUW*NPeH>uKq|X0 zSVNtB{ZOA8u%$KAx{XiYj(3M7TzBuK2RJ4>)+^7lrCXoFOS=iWy+Wh6qLB-f$#5t_ zmKo!PRU(0M1}OkAEwhegYcC{i#8&bo!2-N;7 zM4>4{5Dq3qeH)|AI< z)V4-+!fgRzk}8;Ogi6~rqgv8Xn`5_kSkXA`n*hd~d#i_j7!0JiVpR5+4VyPnEoGpC z0b}JKIwcLQN5fiF;ay*2hoIxPDRbizZcq!R?V0U~qFTWMQ8E$P90s0ola?cx*^(y3;zHOw>um`*%iQj|$0 zMDr80ldlb!02l|?{U_U&iLj(H{! z^F00(OKu>khp#Kdftu8}a&G4Lmnt7)JO9c%=AeK2Wp7ZG1|$cyfWKzIGwqD zqqR(Ifa6&gbjTmX)i^<`E?C;+;&fB#X$?^YE)hyPs5D}DwLL04^~jARg(=rvVJ!KC zg(q;{kdEc;-Bc<9&&qa(W8IsuDcu-zMcEHcv>eB&ARXu-8{fqS<5U<)z&A!M$6)#U zT|+uzE#RtDXM(E4@2Zy#aB6U`MyIm6<*c+Xk6l>MuYKY!qZom_F438)RR$!1Qq8M% z6n#G|+~Ip;=QE??~}p2NJ$JZIY=Lp-{7u03?tB8y`$fJKLcw zYq*sn0!K5A2>0y-3mXD^O5%xp<5Vga#9>{y^g4d|b4Y+ehi_PmZjB2vX5fmOv&KFZ zLg5AIX;5@-to#dQppjxnU2dTq@Q4Xh1aQw0Cgnl&--j`UG-xiN&hrdlixcw_dV9_x%w?rV*zg+f|^`-uAY_T!ti7X%hqZaI4Fp&a!Q00i1j$nJtA zET|aNXk4F7J1X2YIc*B}l*Tv+Lp97pe=1#2hb}3G54Qu4oigVAB7}327gb#F^Nmmt zxX4meQbhui;IP<1et@=G*F^~-AS?!PT=N*M2{5(5wao>gLxCJXg+(CafJ8BYT5c=( zk?_ocGDQl2=t!F&KTlF1)d>MN>{b@?R^XN&cQzwj5gw# z=UfWH_XOJC5tXPk@dh*`@#$R#%DL22EGQI15>PA@r(%Qp*DO;nvUY>pLl%r_Odn^? zhdOY{E)(bVu*)W7R7u%8b zU9mJSYjT$~Z3xAmQM0dm=A^2C3Xo!u?efBnWY9oFBP>T^=eCDS9zAQrh~RwiS`aoI zBZ2HuwC9Z&$J>%0L*<6rS|v?uJU0+?d*~%hv6_+0gUr+w3J#JV0zt<*Y2hKl;DRAy zIr6oMr@gZ0%9|!&A1-ShE#Q&#x(XI5(vBE{0l{lA!m)j81>7k60hJ_^NR30{m1V;rz7AbB<8+KQmO=;5VCh6w57s`93k|V?c_Pz?C%|`@6gf29k z){8C+3^6|-4PKb(O}R+~K>d%~t&~iyLtsLfU@->qPR+Fm@g3r9?Ji(}UiS5HNPv`6 z+@)z{ElMr~oTXfmfy_w?B_Ib2Qd}iY;QF{qA&R1qKgGhSnS>y@KXYl$qI`+7hX$Fm z81;Dn05#2Y16u>Z!~uJX1O=^9O<@V7C+$cAy1f~Jqd56ewazT}TmickRYMKxd~IHx zEra(GLdTvkkKWjd6FidqOj+shflU}YngNe{<5Dt%0wY_Ughw$5Lpl#S9m^7HQ(9@p zo%-bu5j&x`t-lJ9mf#Qpv?Ld2XM`zeWBBCT$~~gKxN$gTP6b0y5CJeLfES9U%<1zV z?QTTJWDz{MRW8B|P9Y(>(xPkE$OB|_~ zk7hk>q@+g5?D>!14R+-Y5h@_0c6iw%M6t^oA&&38x8;H|AR3-MT;(qaMoHIY6xWa- zgc#BbL%$qdgLmum%7}{Ra&Sv!3#}B#W?+!Hx1ud7sEUgXj_p7=?d;ozQf-V=F^ViQ zqFV49?kJYeKaD%P@2__?+&BBK>RUUw70ngICzWn~E@X~W zXZ_RP(mTh8PpE5TYY`gQ30i`el26d{b10Qn`DB0q@ZZXR3)c4+%+}~WZo9ex;(ODJ zQK4xdCaIu%Ea$L5iw4>-cziv7>)aG@}O9Q*sH{G9QVN9M6peD;> zge_$hzu;WpD_#^EeXexaYCFJ7A&7uX{Brf9v@3&<#6u_6kLShfCkmXY{9EevhfjPkPh3TPVMr;|e5Br@@qhv{q zNJAF$7Wmrn#-!xAP~A$9Pd@-`D#ThUHKIhnGE^20!jcp^R17rXh%ZsX;DCY%#R!ef ztq5jwshKF|xrWXKuG-QNgUI|%PvN!`MHIxR28&uQOpKh$4hnE;?roMKy8c->_jh23l`HHDCg!+a|-K#a~plC5a4;`mS~kN zA;UDp<(4@dtTr0o@IV5x0#cCcQ6VWv)Tu>+K-8#!9gf_9@T5lY18U*+Qwv=tWIH8G z?p%2lT&fYi{D0t&4+Wz0eOujJp~v92T2Ax1<{!eNY@=-vIDb0gCMK<&v%59AfD2?f zpr5K|@Y(~2hz|ESZfV&VQSH}hq@Z-xlBh!m86+y(+7oFDWJ<#O{{Z#&;B&>{uMfoo zk`sHr;$eH}NkzH@5!(zmnN*4UMFq+4dZ#_zk6qf;EQ!0Jryw zIF%CTG7@{UMW_D&E<*!{?|Au>6l2EzA~!UFeCubt^%Fr3n&gP#2Zf{%F4ln9#y3^0 zZ!M^(W*D|M!zkzo52z1nVNQ{kx4(q+_Cnpe5o2>OK3C0PWh2+vVX*g0p3t%FBCaZPu9qiKZ`YjA4-D%0Q@0O zXy;C&!;&aH#L0{dQ5Z5W{{Rx1B9x#l$1HAv-@V`hzerqT7zNJxsl<18!vcvi%kncl ztsm(JjS~-TIUeV-fO94hB8Cf@MnVpUlz|x0*&diP`e`gbM-jlk+;4QS+yo++P|oiS zRNKtpYQ?hJ7&k0jZ~WO>w_0gH08W52VSoTLHwMj%A?+W3L64x>&bJjqg$hVNxPOK zmzqmO5>$~@#7;6rfPGgT61+z$nB<){sqzSES4t)=7i#|IZOyiJ2yY#)?)GaMUesox zquTPkF91Q4E`tWXCAfkhGF`0kPaJbYB4mz4f`y>`C+I;05I`YL2nE2MW19AdFo!gV z5!498Tv&lvPNGxgJ@Ved$FamYuDDMyZU|695KJh<3fe;v-1xO{2ORFBrnOZ!!ymov zvWq~r#;;0x_Rv$<`Py0{Jd!#q!Ru+m7t5V#zp zhJUR_PG$Fb_E_bbQM+jwj*dH8pmh#?nYaN`FjLzDl2~#uz|>^sC@Ty({lq+DQX6To z_<$O@zy>8moB#xsJs3W@wT3_~@B=v8(($N?@`)+JNw5G!l|TT^&;ufv!nnuc-S~Iz z{{Y?>;FVkZ&%;>)r{%M?c%dL^?-_HRGMwX+=9#l!F;S(+&~R&D)Q%u=9i>ve%ecF! zcUN@i^koFr%lW#57u3%`GIGcE5+w!wvfH|&DwAn$kCkx)Xr@4)N|_7;ZuCBtS(qdh zDMcwrB$8MF1CmSVGgpuzK!8;slmhsAi`AOI;u;zWBme*rCZg9@l3Yxsxd{iA0nHFF z2Z{TYtCLo2#y)4vadIFQ2#Cn>EuOoCAR|aW*CE=DS_JIF}+l*baV}c_+e7 zOs=qpD-S+mfn3YSZnzzLc(p6Cg3NM)m{^hJu=eZ0 zN4p$Krp}dj)TF6+qQkfBJW6h%6U&WXZFTZH2V9KzAR`mhdW}g*mzWFGV|){y6e3v` zr39cANTL#ifaOb32|@rBbtt7hpkiMlIIV)524vYkxkl`bNXlRcTv4JVl7KWt&L?0~ zYXVU#pI!~!$=qAJ!#kZM5A68&U9_CP#c(EyOQoDDyO}0YI+8KZvFM~XMcul6D7>93 zTKf;;7IDoh0~wBYz*oy%@vL`yci(t-i3;6Twrt5;BsJeJPSLPQmnu|UA`MJaM?}jKzl{o`fKXDf76hHAld6_vPGEeu2rb%D4`Z&^j2ti| z5J4dRdue;aSKZo{YIKuKsjSE9Y{nDrl{JUkGF#2sarZQ}$VO(|9xJo)1SJeDx12~O zdo?NffT5bzX0pQWNF(0DX&@=(kyv+lcVz7YmNO(c@UmzYx-wt`+Wfz3uF|Bmdf##W zOQr9rVWWpnu9nj2+DAB^AU>(OcNF=uVhIHN$wdUfLOsQ$DPneP)Q9uajzMckDsuDq za*a+o`9>U)-hQ+$Wj`<#*Q1J#nv5vHpCmRgEfy+bs8El$+J}4gM1={Jm$&t!UL4+H zDUR)#Kt(dSt;wiF#8x`sCIjIuNkAXQatC;6eq(-owc}tMd6od2TT2QlRpC?nQl>kb zyhA4)9MkNYR!K1poQH~8Bq~e+TZhbt?x~8P zKWbTNdg?Lb`R7M4K9B)BMm}B@wM7L`$7&ekos4fC_}9cTFL&>SE0mji$YPa9!Ip=H zMWaBm?$AgyP%LW784iVw)M&s`A1Ur=a(>c7fFeH9T;w7kstBRPyV7g)UE*C6D^n_5 z$2Ddw^?HSf~oIq}HS@0z@bjtU5^4;nW(j1Of;khjE+m7L+h^Ne6Fa2*`{1 zFij6{8w$0+Ij$KlBH-Xb3JeIKd&Ggr2E58UD8ahW;{D?#X~)!aL1j6^sL(pslxQjY zoQG-zOQs62sJ+Eqy@rGu;ijeghNm^Dnw&h7Z#svV^|{~LVYzMLwmW=)xTTDL8dOF! zI&IaD4QX7JC=h|s`v`c73G-3FlVTP&ZUf=FDu&2NE_x9{4L)Cy$!!3Gfe42y^|F;R zXA+Zc!cHG<+JN}m#ZdTXcNIiYCiT2ZVf&nouqnmK zB$noBXP!mNH1aNKrI3{_S!7XCYmekO3r;SO6+d9P}5@n+u<&(?^NnN`z`C8_LAm0YEof3A!!7sU7Ysx3JOM0gK@n_gPX4 zV!nVKm*i?m1nY3jQq5QRQ=@ve+=}NZIeGoDPgUszanr#|v&LL?X1nfcOGi z_w3Q%401c1ySskfi?GowSm1LjzR+IWXp|NzT9TBd)TIQZ0BWUBRe{tw*}!Ekds?L7 z6B_}4)3%C|$35Y#RdEdfVo5-|7X7hGoWp3FXi*9W!j$s608~v>r`6O+J$rKs_nD7# z$wK0>SPTX>6_(3uB+F!$m`iFc)zK~|6)q&<1g^cq156EHP8D;DaLWNyFhsT@C&QK2 zlKG0bn`E19)^@5F0VLDm9?U;BeUF>97Aef4VynuAbJ0+hxhaz0ZMub0sBxjgLr<<< zLOtP8VT3N0C$B18!$ItSYlit{jUaP3PPRcHv^>YbMi3i(uokLS4kf4#f~4`LIb{s@ zlqzFzA$xWVs)a%sz&c<&gWZN&%)MjThdgLExnX;qsumHquR2{&;wU>9_Klo2X7-QY z&J-)&5cY_rubQg)RSJZkxKKEH{@$l9XaHXE%fkv0&bh}exMS88LZNLirW63^<7OVt zEn;SuxErsx;OHrR4 zU%!qyb8Mw8xd7+V(64$D6=I-8F|pjEeNd=zao?c9o~7LOX6*_<<{-9@Vo;B9Qjl1~ zHODZ6E%dUWt`y)8$)C}(@K-yL5SH}F(6e8PsTl3Z5%7Xu=(6Fi4NXbovYqwI0YDI{ z7=RWW6Z>`gS5nM0)WF_ep!;r(4 zWZ{!^z2iDi44kuNwJv?_NCMXp?i(Mt5NkK@pTx9U!uk3x9S)_yxQ2psvt4puCBNjj z{{TFc5m!rbTFO>i&v$Q_4aV=dOzBAeWM$Dj1z09{RC&;Jc2X6J7NK0v$<#`o(CJSE zShx2AY#iH-_Baz>Yp>91`?hb&)=6}tN-|^}CTJIQsjc?BW+3*DsiK#jCw>B~Ds}db z_oiP#C<(Nn>o1K3xP-aG;>F#c_aBuj)ny_u77CE(zqW#0M8wnRG^Yco;whUnDYy_f z>kIO(Q*}9wyLQldp(K_`J%qNE*ABx+&6*TC%2Y2{ZunMhgJ9{wANL=|6JiTF0Z1{w1cmBI+RobGiR7e~c zfC;E)!L{}=TY?>hNX>DMHXC=~OD8=b1YwC&;U1C{qTz@*~`d{8_xheaRJA?ENwEvfH~mtdQB-rl3`1n-U5knl1(+SwdIb zK=zz@I47AzlA`3Oo?@jFQb}@2#JMH)BN2!&L{$W?Aac*vviW5YV9*c<00saH41j>Z zR111q{vP3BBl&VV(AW-R@r_udlT8vv%;TELB2?0VhCJ~$3II0%paBWCL>nb#dL2j2 zl+sVRpf&iI4{12WT;f69QTdS0-cBIwuDOnV#_v;7@}F&hb{@Ek_X%$wSqV?Ii~?@QVvBjunUK_NJ+wZA9=s`(mZ&>py#_dRGNa|WHj&~w zUCT=P1eQl0d z7?NSxZw}K*NgD!3vaN{PS-pDY4hI1N8)28PIwg-Qv|Da{4@yQvIW#AL(BZbd*;9lp z6p`XYXr{Xn&*Az~5+H};qhUfHr8quNLX7e2C9=^>aLxz7=kcW#5mBa$>TCy-PUppt ze@qu>#XMnZDXxS_A}1BkD5=|um|CSo5*Q2}+*LzqCmx$UQse}Ivz6dBN2}Gti-M4t zefgDLw35ePzTq>xg1NKjHpQ3^>(bdWDK?(>Uf(j6o$UoEH)zblk za`?(+O9#UZr-&5mnhg^c_W%<#DGUbiKr_ZGc9~KP$;*46@}2}q);Xe%XjL51OB!X0XqK5Hnk9gwNgRk$ktAzLbjXzys22x0l)xU*F^=P7 zfO8zz2Q|Qegb<;?g)JbERvSE)UmUl(T*kg!);PA}4L{1prwwKqHK6abr)mos_P}bJ{uz zoPjl@a)S0JSS?Ly-Gbqc+wO`c_*L<4_fkhF4e?f>>)7Ou>ITSe5hC{xz*!fvrR6>t zVBCticHm>Xl{NSp;nl$$FlG(Y8k~tSr4WdWMbQ%Zda0>d4}cI{*JAcyD^=N|G#MmP zV~q|~EQ%4vkOfNQkfjL&`^ODg@&v|`ctlOW0wiu1$x}VGHK%eW7YJ;MRGX&rY^_Mc z`hnps*Kakd_mB34)v}3AzUx7|Q9|5=nS!IVM=XJ9{{S6K2n_g0=(Jk7%ySI0EHTT) zH`(oSm;$eXTQodz$t1I?q6vs5|CZ@`oX;93XgJb zn_b?J;TJdL-&|J(2v8xljX+=)E&wbmQ<)Zb8z5&*bMfJplG-y0Rm2-WwishUx4qB& zCIJ-p9wL#jAOLevbH=dl{onp0-^7jWz3;ChCI0{psf<=>;G0MUR=^Ac#7>S`!IJbk zc?bAXSi^GS)qEg5w2-ipupgz2frHN;zn!#DtdWngtYeM&JM#;#&=B9le>m zrQnBnwnL*Br4cVubLY2e+8{)!+d}2E#ItSvw0@nBl(~j5By7i!D@RMzZM0TCarIcx zxor-OueIr|aN6COL#2WW$JAre#>q#sP^lk|J96LYLngD~iJ=>6)FkP!xORM`%QqG_ z%X0SNg&i+Z5QZ5W;+9Vgv!#EruH~$7EG7Q+jzlr73i*HbUB+}Y^JXs#2^Iz3(FMfs zv{2K(<~n(Bbmo^w+QY`^YzjZ|5JzQi{{W_jHxmK2I8x_n21T|nqD>BjHdx&bFLY7? zqC1t@9EH{Ca7+0Nl8CP``Fmo=B*aA^c2 zQN)tcgalDovw806w|&B`r%RO9HKZO%VZclCc{c1&yR5*^dUm-}yoM}Uc zU*9PqK^}S0Om(9OFRdpcTwrOT7=y#RC?OPi!|o`SI4!~)cXVkrrLZQr9wX1oDsVT$ zc`4gOHQXm=JG%~ax{}AdjkWdj!zwLRJ2A8Y&d9h^fl&hkdR=K}0lRcMZQ)#`h;Q1K z-4RY{Q6JZDYQm^csrGfnsLVSvM>IhYE^8BqUS_Te5OS(YKm?j>XCs5S?Aet^bB4t6^jh6}Dj^SuIg08px_7+$vQh)dYa)lffSPPFMWQ7GqE^hY zf`jzhm+72H98$`0GaasJ!TDfN0}BDK?)h5g1w0d)KZi77lO_+`!`jtWm~fo0VRr@G z5!_qIC5crE6jDeZ5>}UVEeGyF0E4s;bC64!E^AvdSp}s+fT(}O(-7cD1Qpo?TnksG zo2QuRQ<=c_DuWPOZ04Ieq(!a}A#nr)aIT=g1F+Dy<;DA48X~A|hC(sh)#@&5QBZ9j zy>7;gTgiagPAVN^opCelM1ufw@=>zUdvQ$ z=3P!g9k{1u4e@^aJEz0fYK?rCSEKM2tXWA^=^|+pS9q<2q!1{ghiAxI`M)bpj;tevqYhxG>`L|S7Z|1UA$iuN$#?Is(E8_;=h+105LLrKxCeNTnI0ZA4|`sO zwW>*S%9WYG#VE%U_b6=T8k~u#oP*^wl`(vIfoxz*PFU2QhfE62EkuO1Ciu8s!`cpN za1|a@q`2lC^&Y+X2Bq4t?_;)E#YS6Ff$u#h^*!CJlfxHj-u5I2nJj$9 zZB<~y6uo9^nTY0mL1SDQ!5cKG*N6?Arelm_Xb#iak7aqRiE4;18y-o!&J`ZHn7cpJ z`O{A4$Zv9}h2zVAH8|%JQxYX$i`F{^JfT3YCU>m|3T^!QaVH_Y;2$6|viM`O3Y3#B z(DJg6nawJoc+2lLn(mB^2F zW&@u%bSh3%xQqqw6Su4Gpp(ms9itlYPsZry<9bHFVJo?LOG z_MN@`<+eUVd!vC~lav%2tZGVBy9iui1G8|)X8MqRpKigvd}p}rq)$8+_a}MX0trvJ z-KqRjD-Z;erU&n&nFOH32}Kfe|6gbTJkBmzg58#MQWm_SamEEFl8uJuCCIKiA_8KT zh_}909}WT=q8pkjB2sywAwkiE}^U5bxoMWXv9#F*{F8Kpb)O%u7Xr zt_#xER_TT$6c`LjUp?D5#)QgBRm=%WfpAjbq=Ml+=#A|KvbYU3DQ5Nbb?DzNSPAh zhH<@am-<=3s7$Gz`7XKziwVtz2G*97S@(2zn|s4e#Nt1wl0>~g7`Z*OK>k^P5^{KR zQi?4M=K=?K9%>3mwsGbX&ZK= zec$E*=4Qzc5c-4%ZH{9jaDhrHV|raB^Z z&`=`+2_$-B)Plvptd^GCM~DKr5CBb?p^c4_h}FywE#WFYSm7fOO7jT_#Z+fe%Yp;f zQvEUYW971A03@tH^SIm0Wxk^3y#x@({j1BfJ5Vc{0yS{pk2^*>y)s)HjwC~OU6cgJ zs_!R%X52<%vB!zGy^n`%?>Ck5nh1Zwi6jYbXOI&Wv<@pIs-_&Vp(~L?kqXR)mrXNM zF_LA0#Pb&$F{>9l6lgZNDA5uqJzln6mrm*PkF}u#L5rVYz;SWBL;{k48sY}}-xt0h z-d8)$`C!dC_#;U^?%o6zirNrxiX@f~Rj8^(d}~oT=9^D1O(~M4h%`jv=O3x=Ik<&6 zKv)X%oo23Pu6y+pO1b3#QjBN^g^dwLw=JZ^lB?O-++I%|wX8~-X$u6PXaIF7N8v&S zDq4t2Mki|@F{}iy(w#X6-@pN(J;IZ#SWR-;m8C~CEUlmy-;E+XJV+M6x`qonEhNG2|dlvEZlj1v?D zsj#V9EyLkP+C6Dr)2_Jz&P6JA9B+htk^>0Tthr_bD22mm+iVw|T$_4=MOlZY3~0mC zD0|@u4>g2(I|8LhNn+svj8_#+{+MFQAg&um1G|s0tC8IMsZ~sH8F+aWH6toqAcM^_ zwkOgSs#k6dt30^!(Ek9HFHX&yYm_;~P!tM-4;A%Fn$xuUBIvez`#?q?it9G8poSq8norD{RMN zoM1OWXo4*GR~ioP9oTWlDRc5DG5v7DikASY2wPyd4?RV&gsxZeJ#MKfk0Wr&7oOt25QS2> znBj=VguhTfZCfm1QDPIVoh1zS0)D6*;5=?>g+lm)OljXyrlZ?jutGOX6(iTB4Ke!! zEgSCH%9mUZwvS#NpEqYYc(C0Q)vrBHw{#N&@o$*Q?(<2yz zk%EqWzj#on9*kR7Jb2ae{=0hkP>y~e*+E#tHON&8hQA0Qyz0-{+g!1P2uIJ#E59lk z??s9xBg)rYsdd87L)p^?^VDIMZ=oLWrA>?m!fqjkIMoV*wWS3qvbr~}Uecf@5bWk? zSG)%l7qQ#Vx5B7YE@}&4=ccs8X-`b-NAE*D(1A_MXxUdCw7TJLrNILcs3o7}uMCnB z5ec4sgC0~9-(rO=d~oY!E@2O+sP<)?N+4UZ>YJ{)XO#^17#*p~HA3MeouK2XeWkiH z`eB=h0H}J{oTyj770klGMSXe3mRvNTI~|)3M&aZ5;@_rms9}NfgLsO$G5IuLp{ehpD5awTssq^hYjgR!)96m z1*$?JKtyfNW;7ez3A_`>8}h3xw^hdRo7`KZ02xxsr}uFnoK$ssgrIy&A%Fl98o;K& z=Al6Bk7Y({b<(twjLC*5M7e0Ldy>u14kr~1RX8mE%XLA!p!YB!o@P|Ck^IS&AL3CT z!XM#4B`5@9T|~A3(FDF5h4$~P3tO$5te9rZAYbLnvluRbLMFw;@i>U28aSi+_jtRn z6mH$tl#-p*x)UUT&?e(~&Z*0ad_vwEek`%KDV*i+;ux&)B6`yPQEgc|fYvs)Or zpio*dhCHM9tF4uFXEH8rZWnDjKFMKHlCfL~1O*`f01_4yg*{So`7d)F#K#tq6$K-= zFk+y<<57CHNz}@8nerPtQ-o#BYh2T`2$0}W9MT*ST0yLfx_o5}p*H*JCN+@4{uBWc zi-3O-0s&NN{-wedAMq3*R8Hx;#1I=i0dL|p5RdURSpNWsK$svm^Un7CYGVPL-KUL$ zKhn&1@fspXlQfa@5dtz{4oC;R5~a(I+EgZ3l!>BP=8i-!oe}~~QlyqWm{brB60IPB z=8*P~pn|O~p2e50>^Ha~#6QwH5`W0y&BmaT-9PQZ*k4!K>5TN@l|3 zfH~j^8R3E1dZ2UMqlno+B;9xIJ18Z<6>4JPjUC1tcyK#%_y~3mq5AKw@RT6jL~XK! z#UMN_L1q=(Uv7ux!#%raXG)cD0JmLwt~547Uh>#^*DG*R2sg1owsn;Zh5J;f~I)NT>GD~JX;gW-#_YfM!jw0i_*j@<&qOtAv{kTos za&Gdd;etT29HvW@kG%^xrWp~;gBYrUzCY>8%bdqG&9IL9geX-A!)`U0X*;GtkoIc$ zT{deAQtXsm2Md@=tj0Js++;wHV8qSRxb9$%;u7&q8YDq%5}*he;-9pQ2s<))D$qg@ z;Go!9elfC&#oWipn)x#U50>{!c>e$sN-AV-HWd_%$|$}jStS zA@`&tM$iV)heG0*)7o;P7SSk0mgp=+#ys!~MKQ-Xjn<@Ojhy*AUysvVjzNW#ABZ$d zA7U;pJSio{RB+VP)G<2tX^F~Q0z)*(KoPoQmN3eTV}Ona?w&BJBuB!)c?2_>RN-7S z${y4UiFbkRvQwKdld-4(D0GP+nsxKB zn<+5sq&q0NWFZ{+LaFy8y$ft^>~yPoh&!qS^))EAynuKr)_1g)4$Zs?cljlV{(=6PYuYYn|7^j zHJ3Sc&$?xhl)|@l$!NB;xFZN9SH8@zbbd#v?x!|X&Mi)exm_T*aY<1Z>D*w#s7#~$ zH^loL?yP6>pTKkfCK#zxv{;dCl^VP8XNUKAlikfG@Q@x~cV!t=bYkY>QyevLK6BuEiUOL& zyWaD9?^T&Mmhij1Q@9rsEm0($5eOm}#VC|UkT_A8-7Kj=87Zw9v<1c_{YRWAmg}D| zg6ETpDNaF9Uj!H_N)Nl^_ZQIx21Li)thEO@0VIq*895IM>s+=#;GDut9C!`~-DScK zLywJHRWs*lrYF@be8%VPULmnsTucN&y-4S>J3YOi?a+LwnFmXWJS((8c@6y~LrT;P z`wu+Ns^SIcOx9!yf)7d&(}sXH%>c?=#KBP%5q}bP;j*M9>Nc+2cKWI=>K8ScKf-u0 zCC^M>gE2c>DRi<3Kw@$9gnV$LrRo#+4rCzbVaS7Zg)Da++~Ly+N=W}N)~Caf3ePD~peTtUBX8cX zix+lCI|wL%S_ttWY2k zg46=n!1JldI)WLE7-zmrwkT@=M2J#H`ix`Bt~Il!!Sh_^{{Smp!qmtBf*67d;gK1#gNj(4C*H2)Ky3Ev*KeP9I90gk=tD+cHT$19y^CjG2oS8J<=<)S(Dcqg&r} z!@Okas8-4;BowFuG9!Tm zg9B>xZ6>Z(s#9mlcN1L)0-Q~7P9{8l*8_YAM*=|xg35zhGl#*v)vL!Uc#hH|barw~8sQSR0QT zRY}@CJ)WC(Wh5aZDsu`z<8A#VEVQ|77@fFzYxWROU#&IF!bC6rv-QBVX>w0r(^V$J(Hz&^u44ex3YG zi%9^6q89JTRDzIzrvxx(xA#gDKDIoOzCsjCQB*|2tQLz_+60^OvFJVHRpQ$ z6zvq(N}SX!i(Wp7j3oouQX^ywN{0YKREibhR%}if)H`5yp51cVhnU;oivtxMd<__a zLqpT@!(~C?$2>Oe>z{>2O>OUy+_#SScv`VHkN3g7-m%z5w}*B`?$iS@yq}g!f^l_5 zffOTWDyr|Cf4pXilgzf2Y>~rtSD3!aAqL;}oD#hg@lNj=UhX=VH74ty^J8%#irFLm zM~-LuhVua`8j;_a`pQt`c0khCS4g#ia;SpAl8{5KYNAs3u{AZKK{{n~W(iC$D4;+b zP6Okzou`ob^II$f7`UaHE^XPFAXF+z)U~Z^QBtHON;tVC%}MNR0AZMOG0r8#g(Q-y zq@B=AfvlO5TGq5QdsqWNSRnD*drmaDlm{3d)AIV~Tx5{AWKnnCni@(RA-y(MhFw7? zfN|TM7cJ9x5#4)LxB}d#kCkcfR0vQdB_+Xp2q2`sA&7c50f;pf;sD$z+mG6;7~3MO z5T-Crc0M(n5qvJ~Ev~`;0K8j6DR1grX)D=KzF=r77`1biGIz|AE?_EVOKC9|L~$sQ z;#Ba3d7RxR^xCaNfJ%1vv98|A{Pp8Z0T~(YQbqx9vggz8YEo3Y zbg72n`fLq6v^suTdBow7UjG2F_~E?Nl&NT)K-~3&C@k{1I&?a4e&O16$ggo5`%rb; zc*dlqF%VgAuy!u}wVXdhH+RLqckGED2!nK5sDp}{^6;eUz*)wkH6&r2xA6Tq{qTF%6Us2u=pP%l*&R7Rv6f>S6lbH@qhg@UR^|pNTVbwGRN|)j~yb zF2ZKNu`mAszS)2PrEX%y!Ts}^%z5B?z;HU-vBudUuO^i&@wPc(v~7<@zg9D)H3J`-6ne;Cs;l-aX0>7NbVN#TQJF1@nBJ zzs)Wq79kupoqj+0j}Hciz9tgTLnLdQRJ9=4db4uUfvwa;wgPt${ve;sqN;+G0s#al z6sQ`42yjB25K}@JhYWK7)}q`Pw1)yBE})?T2!sN#F|75^Yl5_|5;zc47MOw@AVCBn z1qdn>SGQjHmviq3uG7q@OUHK*!drEaRscWo5W+~0^`)JZU0SUpb#fgjpl}>=oI>!t zKpfH0Yla}I5(PiIyUpF(t7f69=|v^amOtW2aaZNl~D3! zxLr8fK-@UEdWA=K<34Y7>c5&uZ165tQ-OAWw7hhcg%lW;z$?Z#}rY-P;bj(i&B59GN(8=s|aY}zX?I^ zYDFU!+@T^jT5<>~44_2_AcInI*g&oZ^5rpc3a76tiM{0j?K*qIj}z74KBZ30zyI%~CV#H?a((zC~+gFOh-+02n8UvnYt$oD6eV>5hOvV5Hl@cObty&3l)__M4^=6}ow)k-h!O!hP(@ z1?oWfBTY&pPr{5zQn{32=V~1>%Hs&|v=}!C@PuYQ0wLwnK@CoBfonButYQ$|ad3*6*Z!V&3ktJ4Kph^-50Q?nB7^~Wf4 zuC7ax7ZeG#A3OGC6((j3RFmu_npCm6k?J zED>R`7cN7qRpQ;r8!N>7DYCu0Qb{+6!Vurh4fev1moF5-4)TzPpN%alQ5=hL@i=4+ zaI3e&#FtUfYmuJ&-0g|SGXzw$Q7Usyr*qiM0$%no;m15c8H-h3>Pf1hN1_1u0Pn82 z@zW!h5?0x4`_#;dOk@Dwe|E(p$&ese-kFNhv`#IfGjwb^bZ2a-&&ZWqsQceI9&~#I z6yDsr_)!?`7=Xm=95H%(U-MCL5ht|%rynXMpa3?%Gz0zJK?(JfNo08-+BW=(-i&n3M~VzU!LWj0!`3r7(jx&HvT;37&02na&msuQPLSF*M4?tCma zkZ@0m(%$&2V~04NVHI)hrPTnf1v_7D7%tJ5 zB+9B(G-d!7&;w68x2{^yq->1}=Y=`sISN@&24FQ}c(+5{UA%J8;8if`XlJ~Y2Iz|c z10N7-lK{ku0@ydv#=_aS5P<-n@gz2muMv=?<|sz{pva8E$Fiwh7_cW}>^0J(&fL3l zSs}6=y%|(esk2Mr4-m$|B%HvC}1B+p! z6IL}nn|kHJIbBBFcHY8-d(d4;hR_YS6|`|dORg6V!_GcI>rAzzDgxBl2sZm-XjjbI zV5(7hc9^ZNg;1zNQ@3A2dTq-E$FJIjd+(6S$CmzEsdc~~4K@#9>!}q#qj1gSDL7?9M0H_?Icfg2PffcnSd%v|B6c01+b-iLbjY&#)AK66A0sD+S_ ztB+(!h%vdUO`8GCMR+?N)~?@7-J;}>21=g2in#Bf-#7yRcB%mp4DFOMs#R)$;PV=t z0DgdiC~7)kT(*UD=R_b#=ZbC1(<*AiajSSs%7m0cgZ$amRG=T>Mgel255d12TVPz6m0lJDcSPJZO-^93wy=dTTSAD?l1U*T zscIpL;_wlcZFOt4^j`O&+ zfV+>w?*3aCxlRN%xitQ*9-=+L(;n!3L?FO61GNbo>*}Ax`@DB=<6X<9b9i6<44p*K zk@>o{)l6HJS==NNU@8v02G?WzY{2wwxv+K8B?L|=Y@4!)j!I>o#4hdFLBEkW-719~ zMik};p?o_s#+wu)F}VGxH?%1kSk*-0=D6wK=9wU2;GP!rpk^}*1K>s;6!z}lH~Xzm zYcobv43^RkdwD^`sx$Vi*ZGl@EI-_E$$EW6$tU=3A*6+2B(R|-Aea&?TN|9kLU)ID zX?4Jf@|Iu+hI0{8JC?*eG;zkbV^(iXhcW@gn?fnP1x4DKW0gdNfWyTp}=DNfh5~X`{ZU?MSMK4D=)gvIOl|jrnwk>2%YzGXo_woLu4v zYZ_t1&VS2YZ~v_4wo`k zv4L4JB~BSkZ~1QqBo{CilVxR;#MQ(KNG=^D1};xW#H5ixJC0c5guxK@c|dp#)fp;d zUP2he7UPKK1=fSemOUI3!Rg-lON37G&2F2h`D7r-5f2|2?82b?(%0P1qL2a>N{}`? z^Cpy{y$GvkAJ$3vQ(OXuyb;qui6-G&H1_rLphC1v6 zX2AJN?i2Z8<3%;&>WBds;kR!3Qd9sw5PxAoO`-l&rc&TJql%)~2z~I{O*yY5rcoOs z)>JuZ(eV%K`DG3Y4_$Jj7~oG4f|8;z{c^&Ql_sI;fBIJQ!zd_(C;~Cxjud3Fq5{Et zRQOWn5=kUst$lW5){TZoaUd^Z?YAspdOk~3ffNI`Vr|)K-`q1%&NyqMk`HOfGaq|E zlonX}Z1Aa>4L~9GLZ=HXA#}ZJu?z_^Pb6@oRZOuMEwRWYfWSWh`3>slKq-s>B!yGE zo#9gQSqxAM_?xCMA7eo7{7Jg)ei;4b;)al?k~iZttxDpQud^!to@2_vi~QHvfu%$e zwj8j9ZMc6|d|%;B;rRam4O~OJdAU<{Y^0mGFX2glad??o3dH-l z;f_0tb$oD2lHpQa**br8&iyoWCM_KbCB;M-ap~I6aXqa8e9ce)l(aen+Bq zi@bF0dqTTUsbV)(q?%##bkmDSX(a>Ymby&Q?U^mW4jxr_NA)vy{-eNFtGT1!P)E;w zx$o`_*ARjC+*v71o4Y5%Xi$~H2t~|MDY?COxqIV9-jaZl8zWH0hfdNsw~eA4PnPI> z*(Cn)?ra3cw4pyVepUFNdwwmb27eZ-yXMR-()X0MJLJ7ewpO94v;wUusX0Dp_;wiPe>xD5L(&BCmW73Yy zZnYyTQ@5fycqa2f=CUvFq=h{>Ly%sK1!!tG=o=%xSy%|IuBPzYXl}JhO4R@qkXw%t zg_0|R9?T-OHn!cD7uK*`d$Aw9K<6?LmXSXS{t!yf#1HV`X^Cl>GA2%x*M^}XNhJs& zLxBb)s3b!X5D{^mM!HUxeAzsFd@d!Sp6_8Q)hHVVkS?$&a67AT!j>~BQk_BvyGwPd zj{-Sd)CQ(m{Ubt`IFuG1-x!?22pxpgM|(^s_-qUryzvz|hyVunV^l822!Fzb2rc&n zx{Vv}F0D50*hX|^F`-)4jPpGH`zg)UO_-lDW1bEKpau}(2+^>1XG3R%>4-nRn(4F* zsqM`|1Lfgu(ah13rXpmS_-`0<5TN%EyRaJ%{{RGtE>k3GU=)QU zINA1=P$MF_r4Yct=g)Qe73kVcRGmzw&Xn#cZy)Moht$WmJTGmWHxQtMLKd2k+7>$S zuAu#O!6YJuw~tW$Dn*ACD{a{IbIOuh18{!s-%P3E+aX{#ZR-jtj#T-kEoJm&_;&D<`-ElSRtdlNV87+f> zlG@fWp%JWL4QLR-pjAddapgTKdn);&g-#;_5r$EQ+PG*IC#>O6-R*v7pWViwA%W5u z(Q-KpSR@A@!jj);f8xwms&JV85JwAC2;Aa!d3~D)-S0O*thg2ToQMpq%dctES+_TioCDlz7<=A~u-ptSi5C-!HsO#8Ie~ zE@iIfgDuhC#*!@^l+DDoA>G~23;-Wa&2s6E!vFm5jRc-rlK%iY`Sp5i737O9{<;~)q~y!> zkD2rzY7IQN?Zls_9X8`o^%d?G%IDEBsW~$7NLUV|@rCdWJh=S3zaiRRBE7_zM=XZZ z>$VjoDV~e8;5jUF$6$Mj8S20SPXGl^VBxnTID{nHB%SEIukga8WlK_srED=c4WM;; z<=^StC$N(g`7(25lG@r)bL> zN&|DZ7~@}=Qx+g#A-N+#?h@Ew&O0%Gkjb*ih%kbYw#(P01oebq0`pKkM~w%W0=;qU zq3jsshFtET-r|dv8}GEoGtPs|kGZK_G!D(*N7pWG#201zC`Y)&VpQ@fy>nbB{^0R! z`=gf1_{nj*R9P6RYbSs3T%LFaDu90n~wB3w&==WGxyG9?wd|PH4wmrb{?`IID32g;to~~R=1i7t zI$Pzt7))Vdy1){nC?%_o(?+DV(iX+8Ep%X!1{hkS_avDlBEJ!C@&_CPw%)liSR5==5D~l%J~5BN zqo=&OW08KN6h%UU8xlK3A@9n51s6djm=Z-QLt^Eq+ZmkY#!!L%!?5;?j1G6f7R^Tj zHO^M9QE5`BaRox=ZJlwa^;^c{c+V$>_f-7by4GL%rNl~f-rYv3TA^uhyGu2Pkb}!T z(r8s22`b7vpS%7`Myhj9&U;obJ3*n0Q?|OXl?IeeP35)Zd z)9sq^X>B6xmPAZL-k35F;_)E#54d%vIy2WDW%V8KTDJ@d$$x*o^hC>HYRP3l5av`9n5MkRBM zN9k9HDOMb48%{X>SmiEq1v&GMUk=P_MpU9m0jf$M7y*tczqL)eDJ{x|4^CtE9+Yw31n4;fujv}W@@W-iqay#D=d7&u_ZHyyR za#`(Z5C9H&A%r<0SYm0&t#GGLP8i{^@y9AJBoIJD9B|sdWx|eN31c16$vO7rPep1d z>FbO3)`7+zq&`w!1&W^vDWmBK6*1kg;nL9vtvF+&b)$aVGKaW`;&*&~4HCg&k}oPD z9i>BoqmKQQ@8~w=MCMe-8*N;#vKZQkXo#>w1zZvv<7KDgwAHDpA+&Pt{4so}ycWSh zUC{CLK2$?WBx8w9+o7@>Nwpo_mH|um%1fpeYCEjZ5BWo?nt`PNdYPOp;TL&`5caLH zfjKT)YEwfmif_y*!olq(KJ#Q2_K3z26m3wG!-)*vT#D2R1T0YBu8=~c-tvpJHeC8c z8lg~@A&(PA?8gc{b6{7ksY5yOJ*cB#P3V|KDw7Q=^f(qhbf;67G(bgnDE06`Lb>tJ zJR{hhcF?F@!vm-~4#Hb+N6o=Iu(k&{FHoV}^dtoYSl@0}s+9|Aj=}6_>Fvu}R{#bB z6Sogq5$*>VZ8s->g-~tF&}_rmM;+DqwSX12!4BIWUDPYziev|`UR6=HQT`Lb!2sy) zT85`!%K%SUBzZwPS{d^K5L^Kf0HU0szsF@%ZC8dHT!Xhj4Mwy*xMsrPdyqlUrBoi20=Tsczhe;Zm(Y)#3XT(!lo7)XDcJ(L@#IH*7{x}tVt%BoeoWB6U05=-qMX~$y@nPA$yxA^ScLb_|B zs1bLMk7R0vM1-G(DSSa8&r(|+{T~NLd3@thTQ%%u|u3&v)i}NYXyb*-@=7-4q$|i8@vwwRI1ac zqtmx;TE$C44!=)29$?3j!=vNbO06QJX!Ghaz={bw)GuC?G{J}%F4A}JL|ZO2?(W?Z z?*;qGIij^e_~ZlPSs2FS33(aUcd6-o-bbl|s}vc=Lb}YKpS1QWu@E=E(R!FVFU+kHs@#}f;+!L zd&|6Z8WsraHJWWIU)wr!SolT_VR2j%HS=mo7b1$}_?IG-rKq_jawx52!24 zzy=bhY)_*Dy2vDho~{IbN{I%C4jV^LG}%Wmk_N>G z!4u003S%~Aynx%1VdGS&wg(0zaDPmDdotFL3~z@%p@jo6h-`84^e{O1R*F%f1o0gS zW5n>oW8s!GB7tS}6a?97A#9G(5xDKi4rJArh%T*?BDhknt<&(b)%@ti6Yxk}r~u4~ z95oW8jL7Nrvl;Dq4`7U7=8y2ZAqX4hFIeuox%BhNnJ6|y(x8@);k=N3rT~Ed0F8)q z1kvQ)TV9~aZy;G=&VtF3GWabHNE9rf={SOOGcJ6&QFf8!dMjW*bMH2h%z*>*GYWBP)cV1l3VZVFux zq_GYQDndTQ3X%Lv!7YeW$bcAjV0ra=n(qA+-CKjci6Re}gsyFtsIJXm+)aVUSC=zh zNN1g8YcvD+P@NKl{{RX>&|*ue&2ooDLAWct9hZRKiF(X*(q%}LB}!;(TYOyO{LgWV zoO6H?4FE!iEHQn)-#)or7{aj2%BfOlPQJ}g%=Y1(27pP=3_n$-u=|GF_Ez?HOR&6# z@ec7UbEHtNHGDFo{$vsW!G^YRB}d{5U^;Ztu8xAA;#KK@?inW@7h2hVpp{yx7`Z!{ujz~ zrMX)9Z*yEMTIP}n?FKY5dtj$p877qe6N|pW`igMZDR>>ZoQ@r~*|IV+r=e(YQEnk} zwq4z)ZAG`WlB9(|potLcL2tQ%_(A^gr5d0Ezzt-tn=FC#v)tU^iU;>KV1;->MyC6} zP#H0#I2J$J>!1YvT#doBO+jUk8e>7GwHWox1MG3@YBEBewajfpxvX~XBUjdeLo znyPVvMlmPD!ii(7GO=B-6qKmJr~{BVoO|h0`ytAXgi4s|jZ4W5Y)TS>0WS!VpO-iSy59G)0wXB57y%G<>Kv_Lu>zk6POJtQ zL!`7stAh4&7++w^ciTrC5$tZ2qeB?%@tl6wh(O}i*m(c`z+Ppy5unMnvp$eYp9-32(R@>EFUN~%3b z?HG3cez~e;;z{#c)5FvtFv#}$EH>?{tZpwXFKw@EE@!j5wv{tm-P=fFxPfUe&m4(m z1Ipn^suq$^w5bJ2ERy+>X3Lu;@0B%=4`j)1EqfiCTo8yrix8lK2^6hNsT!>;{Wh{p ztyY?Jvo3Ur><^VSh6S%-2CAQ)57)7T40F;QV?;=4> zp7&4%l4C$u;IGsLV{gISC_GAmWI%mKxW6WDyt75F;gzj-wp7-&C2Gj9EerCen5aQ1 z>+CEfvc7cu)BU`e+|8ff{mfmc?uM)N8hMWn)c1Qy`h%Q7)agMe9*0pRLSUHCX4Y$3 z0-UuCU7NFy3=3A7%Qx4UwaJVz7em_v&l*BoWD`Q2Au49yZ|v2ZYQX6S%FaFTGfXR-v{lDdj9exrF}! z?h(N-u?gY(h}00((9~@0?aSN%C^?UTp=C|9dEvWpO!5>OcyT>PZ?oud*^%BXIx#oF zJv#)HnX3;By73#RH1Ok3HN!!VQPU`RDozmibd@D8Wr4@De`hKYG)(m2fYYTI>JFzP zxv(WRoY3YDURSk9N||W=#(V6z&}rbsKnB_J+WQFU(GM0u8zN=!%i&T|reLY*w{~Nq z8hBij+m9b_&EAcaJY$3w@ZH-HvKOftQwT`I9D&D|LNp?H9l!)1lhTdfPL#;+U>rs& zyssQ8MpVR3fH?BY#~KqnCbX;J=UgzMEMA#OYT{$pVvj|_kCiZO2zx%q^%0>n!$JnQ z`Pz2thy>*h7aY4PMqI>5!^>gW(xnHQ9az4U^8NK~qa(Su1S(&yu7>p?DrY3mZX2P< z-4>$z=W@ZlAop?(Ns#6Vz;!~Sz!A+7*a;AH9LXVI9FH>-F`ghXZTmdh4A~wCk-qkIthha6^P_2EY|O>5MT>&a(BT zl#mE;z?MHFTsZKqXhMPpM)~&skjk4?5bh6_`f4t@xU+LftEE-?-W z1094`fDJQJ2Eny074wgsT~Pr=Ia?h1Cbeo{OBNKa+Ofmb6Pll^0b?DIHy2J&Q?k`% z3lW7_zh!-RhRVzdQ694WE2-_@e{;L8k#%b!j#Sd4nGz(L$0{5J#;giX1(cGN0HJwP zrbu|1Dcmm@+!2dh6av$T+(HpTYjm2_gvr=HvYL`+fs6+*x)?AC+|Tg zm5Hx+oOIz*<08G#C3kEK;EPg{rK&)E^4vNRpw|++*V^Bvir#(rIT;3ZChVVfkYBbkfEF72-{`%}}%#BQs5*=t#Se+;_YKINA%i)t6=D7n% zCLIw2AB}!sPHe`iwb=rYP2on%tplAcryn>o4jqq^SrVHe@FNkk1j2xME3zrHL$A1? z_X!|7;6V1bw=ZcRz%F}~P)@N=9>NgUmtmGuMa*&)AB>pBhYANW_(??NX@>Om*1 z9D9CRzDZ@y?}yrlnBYW0C<<3QX9(o6v?-m@zwY-Or`>}+oQvk3(Mll-d}W12#50W+ z2P}=tC{SXN^?lzbS_1ng0Fvf`5tCj&dkMqpYO5mxZ*_OxtGXt89A@cWR(6%n_PD57 zl8IlJIX`e5FZyNz5R9E=z2Ur$9pSrf2vl+*Xj)Gs*7Kp3fV6^2C5=ESkHVo)RD)b% zeu?s2`4i=@6I|BCp(5EB|= z*^F=wLZE=4mX$n~@Xq~<#9OL6!N@M6BHwsIj3T;7buA+i6zOT9#005Gca2%|j`Gky zL92A436}6*CBz?mrxikCIOU&X*5m{Gfj;^8{{VeU@4oM5s1~dtUv>%iOsNt_KATY7u;M8gfb9-%%V!Ei8$9CPZQ^i(;6VT zpcX{^JS!G_!l&Fyt>Cdz03$Mk6LpPYAJtDBCvn=Vac-&kcg6H4@iRuRi*{K`k_v$z zW#!6A5C?c+D!8JR0nGmZboYPHf6tu7lEOGzL?%2(5}XZzb@-3A!NRfr_wOU8VbjVW zPny`4s>)$Riox#&7ATL0CP+7V30xMZnmO)M39oN_)@ii|giW+%L3uf-P^7BbHot(|YBp06@r+h6$OB~Y zNY%m|DNrcS*h_lQzEbCbXqsmHAjG@m8 zNim7GH}TDO#x*M?fB+FLV0PkFVU_n)zlCZMg#!=E2Y+iEa+2jFo@hNf5UCk0JJ;P9 zCIa?5(QkmSCd{d1B_%|fB`GRXo&XoYsQq-v&v+3g3QU?G0+V)<%Nk z*a19{n8htdtvo-xr*C&*a!2(l5`^KRr3f4jogX30)<|NPPGfK*h&Y7))xPBrjA~j> zcK3wjGPHVv2_EAt%WO^6<%5_e!AXTkZM+-2*2PJ-fMTzCFe)8W5?8YhZU(sp{p+O) z0hut17PS`-soWrA8*()@C-MDzh~pAuZuZA^DFq2Au z6p8==T9okt>5!k^sJt=`_qijP0C;gmq~!iM0S11oh(t-1W3kVA!#*7MQOkb`?#SDn zHxm&@T-<>5Ole7{0&+9E%Tndx;9~y(D^&KlyQ@^BuH)|MMP6smKjNFh3T%|tq<_Um zAl$pU7WYI73 zAqV*Q`R5qb_Zz%Okdz@PQb8zWr6A+*o=_PlO@{zLBRZ8a%qr&>0%H3Qd9y+ETF2?Qj{(jxT_l0q0SKj%K}s(2zIK# z@=@DRQzj#bbT~>7g5g4*kb($X)e5%`9Hdi3*Aum|=;5-);}TfmA@J zE_(>IXl;-~knPfytG11@z1d@Ujfn#_C@6Q#YW*sah>GDI+d^+jrBFuB5H|Fy(^tc< z6P5xMIEg&+L&)CgLOx=tMu;VeCNPST3k>dKzRSY;yLO0Tk>X3*J67E5j^@wjOFcJZgo(9>rIS1`R;K9@k=OhZ8X4?r$C8q#vpuJ>msBWn7>2=!!O0qN@^a?6$q)kEXMSNJjyvdQ%V@KW)PhFD z!F=g;TOd``G+@Wnjupe$Gk=(J9zPmGYKkcIyMN?lf{CWN;T3vH{0+lNjJY{#T9 zDyl-2SSUVw??SpzzZq#UL#aS(o21xd>M{{Tg$S7f7t zlH+J1p1C2jK#CQ{Avt(Z^EAZ4uW3Va2nmQ7t`-4yQmeC&;IvZ@xOLF*YG&=6(or0^ zTgKiLE41$+0ck@Bk+57s7-vgKWiT)BKEO-qi;lg`mojTb)iX}qc3CfbQXi(6LVFc) za$%Z$cTp|f;k%2ro^%9Sy$3i-=WP*(EM>kaF*qQC>Pwq3h9yvJzghCA9`T(wP8}*x zW9OTz+FL7#e&xHrm5>7OfI}xXQlUQXD3X*RAt*`;5|pH100#!ui8$njO_U;BmOul! z*mWD$BK z7?YY%&eG0Eu#%AwP@wI&q}6F~st9Dn*OkVsX@iU_wef7UO=DWTOkMEBpqGII+` z%xV}X5Y0$MRN0I+R(Jl~_cYyC?K4a5TA7CLCjA`3uFVK*BQBaD9a(q&X?O5;+JpyVk9lrV8a-YO|j zMo44a$8iE$L4gVi5Rlt($q1Zx4Ph89Jh44Yas64>vY~3x`Dwf>TJ6{ZXmg0)?^^OURLc7>acsN3Lm41qeO6sbUVJ9P(dn>A-_xw7Qa5gR%XL zd;b7BWlad^z=)=JUYf&)XRnn`d@p)tv|W^hnJo`IPF?NfQ?obxDLI3^60|ikRJnkM zGAc94aQ@Q^SgsX|_wJO+p3PGSvr+AsfS{bg0&rQ3P3~)r==_14HiVB>Iop9KHpi{R z)I_%;0dXH6y$_iQTZI5Y8ix;sHZ=>1I3R*3Trm~EzN2Anasz^uz*}YnLjb9k`kt2LM9o3zAqt}2HZvCf6a$a- zD3j8T{n;7K_Y5HNIT8N=*wHf|{2;dCYyw|}`?mA0q>jAW3en$C0NPu)S2ZgDGhSHW zQx4kHw**4~cW+DPF#S-KIIy5*{q;EYIY9ub$9Rt4A1Wn;l?3h>;=AE`LPWFk0tPOA zUoPs`C~y`Q#xa2)+dKWCMaxnGK<`L-kb*QWbpQzfllL|pF)yp=Fv=Vd?AlkeX7%x- zr8E*1#SR1RL{ue?`Vnxs3$Y0Q04M;5uiRYMXgm&3_Tzl|%LL^bk(0vE*mE(6w#3+w zpw|f`l4_^KzqYtx$AvP7Fd-mjS0RuP3DjXyGUh@hbMzyBSWu~BqgPQLu++q6kw0x(b8C+X&8_$AJ$)lk= z8iQ*V#--WMT`d270rrexn@Bm!EEIk55}griMrW>Q$l|RQa);u zKB<9a%l`mR8N5Y#=Y4;;x>-ZycSMJ3<`RGIwIT9!?M!9K2|joS7nv-~5nPG=Jn)9* z-Mi60*_*x#XzXB;d1mGJw=>9I7zFoHb4<5V)h917Kqw_BNEFXIgS#}cHACb`V+58N zj(Qh8?jwPma~!TQB%+3>2o}6|^AE_o%Uhv8*6Suuex_?>OO~QsnQUr4X_Y0MGTXw| zwV~W4{^+>IvUT0Bx{*l$@|vVS@DjnR{3JDgY-i_7;dyLe6}wt}LZU|5)(;|in8vw% z)^IWR1YSi}2?Mf(%*b~bVSpn6pznI?jz=Xv*ZnifkCd)ND5$v-y`#s{l2nl#RuX@` zNAIU==Ui>XqUQm)lMfmrf#M(%n6^G$a;xm*{59MY;E=GH8Jpcm=vxt>2cM5C>6S@* zWlU?-qLAYg?Q|Wo&c_|AOVl&x>E_BHaTb!#?`OHFGf;*WD`QhB;b#Cp8eyRaVFkhZ z=2gwTj$2b7Kvx`NSlpSmj!^U~o*7#78s;2BcXxX_>NaIAY9jC1j531ZvZUnA`{x6m z1bI+t;nQfPM<1^Zn2e0z6oVWN7CS9ca%L#Y9(ZSxV;T=UOyF#%XPWkbk;u*p4*2<6 zq$NzZ}9nBz=1uxfM8a`CZ0DF9jrqn!z2bvdgvb1U%aM|23%3Rx^ ziVlQedc@R(sfe3k7t6G5?4dKl??UzJc6RO9Yqiou2oPKKc;gz7l`%1f(whi8y=Y9( zur&EqyRhsd44{BiU{yUTLR`q^wpiZ-*M*{+^KwJIZOm&4j^P1D+Tn>YDE|Noo9>Bt zEjkujS!t-xXKo3PYJ6&cy8F^*f@pJ9@?791$xt|l^EF`Ejk{fEF9VcY4PRN$XK^jH z!VGf6SxGo4CaGE!z%2?*Qn5lXVh92`t_rCFsgxtgCKtWy(lpwcdWkHZCH!*c2skVV zxGg_RfrFahpu-|XEgETvCj-E@ZyczAZWfPg&_c%?a)SDbQE8#2Ml{E3`*M;9C}@^C zAS?}|*q&6PlGxN5e*KS?5eFFF#@D!pRQ8lR;Y+O|gKnK0T0ggG%7|3)v_VK(9=k72 z1}Y7)hu)}KTDohmpFA?B1TYu3UY}}f9I(d>I_qsvq`7gfK70K&%E}c5Kt)~AhTVx* zs_@E;A(1db4*viuvs{4^3HVIV9i!sV2BJam`3VK_Dg00~M~nv_zNznIr%( zxgcCr0`C4PZ9;q6j(1X3le`K5I#7;#Qn^L>dUP zAPUkDn}bmpmwoMcmv|1VTYTrD_vZ-P2^uYh{BmlN=c> zz!eU0gC-zGyZm2EfFusl4; z+u!S+0K-5$za@W{kob=yR}C1UjYc+qWx{aKeI5E;TQ&p1!p>RA)JHfa)t!Qf0sd9K<&ETOE`d zc^eM2~>OjD7~BB{R1q!z>Ehp&XC;MPM%cMRmN^ zlkT@oio|FC0Ghv1wv6gRlWv=(ZNc!Y@8ddiH@qD@g>IHhoDcq_-{H4$3^N=tKu*fU zKinNx$nIHMCX|`p8m6_tANU$jC(H;0L7DOzaF1srmoON);X&K`=RPh8amhS|>&4qG zEF-mkAAVJJgzvm8KmY@MX4pUd<}JGp%yrrmHQ-BeQhkq6Vf34zvEQ>Ae5QNaryM%; zy?)0f2E9omfqZt;(B#IX2oXr*=3sJM3BAYWBg{50YA1wFaTF?Rcx4LbjS3IQT zD_wT=%bNGJt6V~0u)F~bmqT%KF#71ry4PsphdX-X|GMsPqNcH+k+ z%hXH=NNbgIX%`m|AdP|<)NI`pw{dW}>>!Ms)jJ4)=NgaQZkfaKDG~-?9HCBMMGjm) zyxA$5sbr2Y=Eq?h!3BFqDvq1o^MG+-W7T06p2DI(-Fl8)S=>ie!y;Oa5LB8zDo7!l z7a^EFPnR}XFmNkyvFtIrVdqhri4*1ha-IPF!K%}Ah=%UWC>6p_#044nv0<~1W=mlU zm@wIK9n1Ep*AS*FeV1D z`gwYme7UVr9tQ;CV~_4(HaUwpK#NthedDR_>CK;}n1qnojC5trVjpD2tVSWghcv~m z1y?oxpLqHW-Mr(x3Q}!u0&Ta=kv!5z2RFla8fYZ^D%50(M30I;dkVr8BMd9Q`-%FE zGog6ye*|wO86BN=bo8H|IvPqIyM{bw5wn|Wf z7Eq9kmVEZIP?M(tlA6%KLIPSpmlV8iNhL&A4)@KN>9YxY-sd^R(N_{l*e~r=ZbJ&m zDYtS728Td2(2DG*rehrPA%1E$uG{(SqZusVA_gjr7LI4Fw8CIDqk%z>$^M@tx!9a? zPb!d;EbxE<#FCc%V0qV-Yy8BPs+oXnTn!z+ha7ffcRJ*lZ|nmDk4B|*?c!(x;diDP z^Tx#u8n@jSlY#DR?j)r-VOUFG;YBG!(-J__Rsv1b$!FI#TLQorw7GVGOR)%};^!ZYPiemxnBqQevQupdQr|Jww-d~;im}XN0Y+f( zcI-uDmg-~vc;W?|0?0ul{{R_pWPINA)VO;aDVu|ycE!#j=G-B7)c%|Ctph;$lQlDl z03mZ_2<&4^u>O8#i^1Xj(Fh!t5GhH)QuEBCw7jZNIzPj$G{`U3>Yhr@cn0C9zw(kx^1Ug3qvvh5T?D|n$(LmV+A=^7G&fYAv6Y{RZZm|Xa{ zxz5bEl5z!m01gUHSTP4dGOKTZ$s6zu)5dkW>(`iagUz(-ZKV@+*kF@0k5qp}@wHYuJN+t({qgu?=gZmYR78LkJE zSO`K(gzfS@x`)#>;Q$3Ik`C1(Bn4ZFxtN0GQ9v;oD1S9(6Lpi_}-c%Qg+i$-I=>Z;HWV+?OdHts-YWy2bqQ6|+M1UZ3isQDBqK$6t(eHU~ZxYdf3{a`UrPL}xLYS%&mYRZX_z9JI8%oBpL#v9`3ayaOJxxI=Q1|4sj%NhDI?ve7D!Mf3R=4(IhfG;G;~1B$K| z*iSkg;1K0PixL*qQi=<6B_+ur6ekrlOqn4Vg=4DUvv z(VB-hZ0Y2}W7Q!YqT6@;C@1K2gdh89AQ+Rvha?42448&op$vp`tyQ~sY7(U`5R`dbr3qeQ}RM~)3peA=ljm`nG9mGli*UcqKL=6s#p#Te_3shS6 z;@L`E79RR2YMB-$Sohiy82gbPBb~z3FewJEZ+U8^0l@ae#aK997{jt53a(K)N8(-H z5_YCroiHI}ub5mV9NgqQP9MspjY#nnATix`GJ;3GL2tL-0x7VRYp~Q8XBj$IdA?#b z+yTH{3Ka^VlbXPRd{Qi#-8yzSxEZCPQ{K~^)ufe)PN%4JU~zBm>+WCgYcQbm3wic>t6~U*s3lyfi_ud zi(YtK(po_dgPR8f17i*N(h^2BAuJBodeVVLfN=R`MC>Q9_S&B=DufKxY!=82cc#T! z2fQtR5em{ddC|=zW!cJcNO1oE5^xPt+Kh#&lk+8z0WWI3v0d%D#0#oJV$`0FcgvdC zfY&1)N`ZfCiO3bfVr@`+n|S5>fO`C3wt=c>+z%YUyg~vy2by2QetArZuWPtL1STc} zYh47r>_x$~3q_)$T%koONlFS-2x7%uT(JRwIKBfYam5Xs3=YLxAipY;GXv$2)KK=5 z5MYiM1vcGM;8hZ!F>tN}m4Ir1=Mr|d+H6q?@l^*1Lt(41*hVTK5DkRl4)x5?*+T{a zwe`WtI0o0-l)Dg-Q`ms^8;UAh@jwvs-nSPvKvFr-xsn{>*dJ*1+ruhwxdI?uC5$7p zmJlmO%W=GHp>nre=w#8c(z>^tOa6Hs!9*j{!)!YgWk$<-i(Kr1^}`w&ENv!%g>%QmwHtMjsznJ~P2+ENV+i^0AVSxksrjY`ro})ICrPONQ^0d-lIqCv2 zsv5YtY!VN~ zuuk*;0CGyYPjYEeB!642XePugtr#Q-Sn3{a{z$RP7F(lr?ptALx@;}1AOqq>ykQEE zyK_w`d8bj;Q^_KU7>ou*Crzi)Gv(=}GD|TM+MGu>6)t)I027HPI>9wPzsOAqNg}RNM{~JT%mj*>DKae{zy+5EKD30CL8L zCyHjk0E}V*F2^!sp6bcI2;KhYbbZqLGSL5&2HD=4+*CT79}nE#eA)&YqJTg96qGV2i0HRO?>MO+9OopI|naVYKhHO360g<`7VI z&om^M0~%>NIPNn@1N0ms* znyDD|4cUA^pz}k*m7%8-^3s$bX_4Jxm)U#%zBMB*Vx(ga(ELs4MDU9C`)k`uw_d0t zFh{`OE23<@NJ^P(tsgIjTdW>Cmt_c=7Y3i7P9Ddo zY!v3IAlZTpW7pn7RMbTHThv&6=uGi&*R!`_+r_(5=7R%=hJACX2~#$czr=4Cd@3cs zcN9C)-;}g>F#>Jp<#K{*V^|ebD>YJG!T95422j%&9H9cPDv&n#6kAq9-976wLo^t^ zL&y_lDk^^FtQ#?+#sT1PxR60^8ojfg&UtO8jK?fRmXcg;3Q7JnEDmHWP^7rjWH*8e z5F>n+Dmhvgfi>wmdGe>qmo`(ww*^Q8 zyq%d*&3J&^DM=79I1}7!`Q;>FM)A6cW0n~TRY@Vi82P6ikHZY0ff5Rh-gZw~YYH9x zd}@Uu(pc>WXk+F3#VeYTjp8BN7sYu~!9osRN2pZ`OMyn(+7YYv{`pA=Q?sc2bEY(^ zg*Sqj^b)C9*G+c*e%kCAp=c|3mA{v1?W@&!Q3>m?#vAdiwD6Thf>*PuXmBxr<~QuU z4Bq!YhO&{1Nk8&X*s_85iXY`ejew{=nFC(&E=dhQ>At|Y2r1bC!Zx^bKfC1o?MqyW z*(2sST}UJ4gR_Ypv^Jm%G&u0v!)Ho&XCADsfNv|q8j}o5DN+bp)RI99#V7~+zjCyw z1R8=CqG{p`X#ljVh`55ZD&U}-4$76#>DpN7vl1@h6Qcm(|kY!0B^Cy`~NkjgDwL6cM@=S^7gO+`;@KV{+2~jw1}5m?M$| zw5bmO`jY3@^UDcXggc-zz#Mi`Lk1;$Dx)P?$s1hz8#*pR7bPeadHt%$G98tnSvXL7 z`RSUN2tFe5zl;-QFfig%$JVMcF|RX@KFaLP6yqJ_)q@5x@~sS^=tpiZ-<=cC1pH}% zrvOu6tpw_cXj(}sjY*LtD+M7zLvEmFmk_E7h!GJHbjGYD@d6A3foTLlhXgAT1SYaP zmjYBKRF@K=GK%RULc=vbiGxw}pv>pY;$vJtcn-8Z!BZ@D;wudK23+UMApZakW0{ih zxP?2w=Rzlyp0zmf?e>1z8ScSgFSp_{&$6T>%fyXPe<)x+d^lOqznlpn)`GZx!G3JB9j9WN=7l?_o)d?L7E=ZyJQo# zgv}$kdSK$632LxzF52XGIX9x5avK!KW@l;An1x8+=m(!dxfS|XU@UwvF4U4G-uIJT zlc~3Z{iU&~`&I6ykvcT4F)y6{Hz3Q@Q#lt2j>7xb$Ui;R9Z!9? zO4kC;@6$_?LcmU+{CU<1#2V>LIdG!FvMHDh8?vYA-GG zc-ZLo)_qU=n2iN|>y^xyI2{A@y66%HDzy1hy}|^c9M^0C5bZVlHiXTb{%|=Ggw>miiwmk?}f%5wvIrld~=X*aH|?_p(!=avBPxVhXHK z6xiO)-2R;(`%$ez+4E_A^F8!@eOT=a~FmEIlIGw1hnlZa~c zQv;c((?~@wewt&MHe97qr*p$ql2l{pd^5bahV_$w?`V-O^pqHFlBK8cyPnC^QDwW* zzlabNRdsr#39lwxk^vlLF^Ms$)5ww}N^va(Tv`tt*Z$`{Ab-NZQH>3}YASA@U9X&G zOqLid#=Y%mV?jI(xhMfw9u+Q9k*O>`8JP0>$>59}LIUL@jYMhTi(t$$8~ee5LuI(1 z@el!z`jj2qsz*=UQyiRg5&7T6yh-EXv`arb;bi)rDY^m zWyv9?q!k335-KaJ}7d_4xlp`4Ifvk^D zB2Iu8u6x3_ToAGYC=@Z5MC;`IY!qxgxD&?k_Z|e8sXSRyf)J+Ed_HS zE^}WxHd~0w9dF)oTDQ**?4xfgI#j}OzHvlIM=joU+Dj08vBxxXacnRm%hy{@VTiPP z5%sR|QF_+^He%hx_T@xvPPzL0PL}cj5g-LN+An+|uv1Zij<`01r+4L*I3Yk5Ffmh4 z1yydb_|pgk;f@r?qy4)!=A;pSFuj+iHOPv#O^~z__)`HCtqb~W>*l$tMNn@@^|!*V z915ls$`Zl&Q>8Me6+5AIjyMl53ScFwItLhMR)-a0+L85Q+;dvkc^3=eRY=7^BsB#| z!lnJZPQgsEwz(0oxwcVA8zwQTOn6ZeiD7%f*mE0Twbv-Cs6Pe_eDuwg*aRD5Q+9c* zX+`-C*!AN=@2tX-W`&BtCPa#r2K&;G?nm(rMMYi7lQj{K1u!<;5UE3%=04>!yX|XEW~ao5`n2FS_4vhs4{zFV1v&%_D33pdw?Krhy)Dz#v87<(59(1 zqYl3p9NLiLq@DXWRSE>VB$I(P!+@@=9+=Vc;IIGyAXNgBwkkfXA zP&~v60Zj{?TjX1_Wy0h7Y}>wvbCj+FKU$#Fo+SC#=bJ(i;x&li;V}lPp+%WXZA&KNJZOC7iRD$3E*$#bP zsasI%fb9M9*4t(mJ-=WDA;l6PDgAIhFciAMBvJIH*DM>&b81uE7VrS>+a29rk8b_b z%GVcZ4j9J*huet@m>f>2h|x4F9N!3YLJLOya`QEh>-)oqnL2kAP8ZD>=GkWfgPtO6 z!URcm7bKHTIt?;IKnOs)W4<4HfOj*~YtAW`ym4vYhkUaiZBK-roq4A#3j4xYy6$*NyM}r}~w?VM@ZG+^|?~ zR8$a^+S{gUro;pIyQ$JZ)huc=rGzn$!_3#v{{Vw%zoYzTM+APg`i*PVK_YC!E>SBV z@?|l@VTJ1qbCzx{`m?)vdQ&cFDSO3nh#hp5l{f(CLniw-LcX9hIqA1)mRY&#qfS z%xO?ECdV5gT+_z_mG5{39f2*>Ha}7H&6)&NLJvQU3h^C?nP&>3d#G)rRI?}|F!ea7 zwGxzvDp@oM9dL3T@#~(PO^9f3fH?=7dCwXR{K-6}f>bah zm&9uCLtQdsUe^U_vKXKvc-ft*t$SZ%8<1`~&fZiqRJjA8=oq%jVVj%6%A*g4?5|b@ zRWK>cQ1#J8!KD}%?Z?*~?Fs~lAQ9wK3*VMd+N^VoaoZX~K+Z)Tpl|?w-mjfFA`C!| z^@4Imv_>`E9kh&qn)aQp@A>z>nXm|sIgZ1Rh)U5Q6eS?FGVt~3xUp5T$uilp1LCW7 zIgGi--H@oxz?2M5PL_C@8gA3t)4CZYVZHevNY#Ai58>)TbSx(T1J?y~9zWL%Xq2fn zYSee?{B>$lxzbcqT>_Znlzn?gIzm*^gB%)-hv(F0j}Ti}6SFTE(F}A~2<=#yVX-ph zP~GKg?x#@$;E~pr6iNOuN_;9VHiZG0JygG!Fpxd2_W%X69kr5ZXMEXU7kikEF;8j| z*DOp&wm6No9+-hLBWCzb00yddBnPj4oebu zz+h656j1@N*B!LOzPmITOW=?(TvZ{8uYtWik1#?*vg!(Qq4K2Gnrsd#TwwZ>#N|aZ zBcAUIbWIk?ijjqiftG2u{P3aEBo}msVnY%*oug$NK+Nxy5V@iFL_r|E5ehO}g_6+- zcjmc_?L(wOPcW?=p0viKGxr9>2c}Tr!az)y1zbX|3F4Gv9b{PCLmO_xp%IdxR-&ZR zxV}EZ!%U&dq@4D3WTTi#AgF>xQF9R)FN7im3zj3X&jE{6iV_~945iUTu!K|rjwu9< zt;&s-T>u0Hh}wK|{b`-k;cfZi8BBYpcg=EuK$hfz4U{fLWxJP_6p@KSRJjg_RdUTg zck1=7O*EHGiW!N+DXD%ruJ(k;E1~q5QZ@bg-F?u`KJeAckVsZY{{S;nGcT8?XB5{j z^AOfRlHiq=H#g|!?zQBf#8+o|Oc_ST%~D&~C0ix9JhxXs98!^O8LbqYa&0H$5+#8B zbi=4{L-J(tOOg`7&xFT;if}ZH>jCc{_ZwS0x>s}Q#)?@yKh4%m8@U{TiV2kVoMeTr2qvfv0B|~cPb>-b+YA1m-6JxWR?pu zTLW4-0TYK2QdLPNu*d3kI?2w|YV{MfGu}@W>F;#egk%eeM&#Cj*5CjML+%y#8sOg3 z$4YD4l{~=}7ZZ|!hGc=;MadTCdm-o2(0M^w2u(_eNZ|DJa(f8KW5ZhMlMf46A2H_W*0j0jkOcf}c>`%+jo)QyVvxzTwu%681fe6|DS>0pAzF_W z9Osf`woI8)n`umA4)%ZvU-1x6JJ*rwb#B$_bsDE$eCN&F9DS`YfNOX~umaUwk&xku z9UM~^pr^EE!~=ZSv*T7{tN~tjMUR4PP4xxd_P>U>Qb1%#43X3LNvH?=g~l`ugVqaI zEXtT$`y6|u=`K{n!YPP>fXLfA2XL2tG3==gPNJWdM08wE-nL=Y%&e1PzqMD(&YIje9G5p1 ziY%GY?-Bn1(IE$z4V=-a=~96BWx6SZJ@V`x-XJjIWx|tp0}Z1pAHAg)$(5*RQz_gp zhwOY>N+q5U!}oR^oisk$>cI7`l@e`6{#2=;{K;&7M2~RV91!l0rFid|QpuhaNF01o z{{Ss*)8awJ@K0gR+p2f(XgQYqPi2>KR>yYBDrHP`xP31iZ5tIsg|ji|UOU3daKcd% z%X~8qN}K>!#DjxcmN{V;% z)$)gkE?y%aj>M@6Q&gvHVYH@xVuQ~P(L;wEeGghYVTv5pf{WZlbsCYCGSSOwi!S;R zG&qJV9gAQ{J#h5fwGU~Chr}+Y*FBJ-Q$pAbHhJyBqPUEq#wO$K=N0m!<;>>1m+zmHASP%{OEJNS^Vo2p>y$aD zrC|(JcgF%w+th@qrU7ApzG^-;p)*47h6TrC`P6BR66W04h1tD)X!&yz@mpZ4Y$5lk zmj3|UFz;v@k=?`<_<6{#r`*idR7-scC{rx}u}X$}IFyg5A=pz4`Z=1&yQ974XeJ@z znWmUQnZ8 zAK^M?16?$}acGE^I07PZe&U4Z1O2s>cU+M#PS=o*oI}d0@L7XDrXwyaDld09wt;dG z3aFGM{{Rxs0F8l)m9PV=W+H3;TMM}XnLBn|z|{7hQJpoc!|Hj-g7<=(H*Kv@xfZ1< zN>S!6r4?dHCCS9&>4sv;l`9h%;!Y*@!Om$IpEMJ4wQ?U?qxFV%u#}*uxPOCI*{Q_7K~BuK96sD5rN=nj8$5#MLU0 znqu2SSEVym&Ku!O49!Pp-n1(xR&9za~9mCGB54A7xX(W?dlg05(LAypNPE9Z`D z#$pKUBoXIVLy_z?sa+`U`vw)Jb;TSxfKM`&V8T%0h$_2qsg~`!_q(%ojR~4eL)UK+k9MCifbStmP=g+}t`S;3TP=nIoFhZ|WS&^yh!ZsOM+8Y2nPymy zB!&gaT7$U3@{e@K2DC-QHKY7aA+7BsY_;(;a7$yROdv~?$35hr0g~EY_Z1?|2OHNg zEN$c6wia8yB!L};rM;pVfIi|R#-%W!D_ByVj#Zyf)5{utJe@m94U;L7h6-5JaZKFc z=N;z?`P*AP+Wls$R`oB{>L$-5s(~@&wYvitTGX-(gJ;g096>yO+fu(}D;&gwwAA_+ zKV0PDptO;70C;?B@*KFvB*MyL=Xy#&OZPv2pWTB(q8p6jxgMjQbesoOHsKiHo50E)0XEgxs%Ua@87#yt#b=g#LKt^EsEhQi) znT7$&X-#www=4tcAjcT(gfZL~bYhT5ROgp7hWscM*7Du<{ND2FB6W^6d*!+Q?0n3B z%u?G%hBHk*VFj|>hxa%JgS@#FHf`NNPwy=jokYzcXI zBHrFf6{6)(jVF&PdDKVz$vHM(cesR^Ff=No2NCTk2Vtn0-;l}**%Dm)jyb1*f8lQt zBM+&kWdfgj?+cX#CP5KdV2Dx3`Y>4vkmx?}J((%GO+2urrOErANkomH)Lan7F^xw| z?@es;!pDhVlxt*w(;PU8yo~+Z;YK_zg+;$?Oo}U(L2#9=WlAn>rJy8|z>1wqlcNXT zd@s;X;T$btmRbM+LG6lLaQM{cPQ*qEA-K`8*Glp0rbT$M#@EAlSk#o4l7*^G zkYBNU;A6h7_sIkV{6_;u541gYH6xc?>e_@0CMN z>iOfRT+ogy{3!Wu2E-ySJ($D=@`Y@Ql1sR!@3hlgpumxoDAu^3IHo;8dc8D&cvYA? z_nbSa(={Mm;T2O3%5z-{rg(HBokf(p2gfNQH+13=$^9398>(6C75-1f)>4_$; zMx+XmOIOx}s(=Z$AvTSW=d&6mfW(yv1oKciezkZ(cQkK0epyifVy9)hai&(_Kiywv zb{^ij)pb)UT}c3c4RoWHs~+sNfdNpF%Va4t90P)wrG@TmMomLium=q>J#anQzfm2E zHt&eBrE#s0Z9an<_bnJuH9*Adubq|8S8;_^*rpuAL_D^b&^_a1V+MGGq5lAwfZqXD zDi{)yYH9GAvl<H@~T%x05J3US1o7*dIcFTi071P1fW>*>#fy7$-uTW+SSKQ-jd>^k`wLr%POH@ zVb%63Tpd*r;F3$LE^AUI{dm?p ztk#*u(&Z8*S{yx9@>3s(A1aLYyEI$%K%e!%+y1G1SODPY<6MU+exg~ zU=*%e9Mb`rHoo81lHuSGM;KwatOZlbr4aOgN)q_{cIL#OCo1N!k{28?`*W+47{EIK zB^^<(>o$tOSFDCZhm;1#;l1pA)OFA9Px=^&F zY~|qjA*~36paYrRUrp&W?b2yomOOhaX13r(kbU0*a5jppHtT1Lreq&$w{)sIVn}kvb5)A0QA(= z!TD*^EKm>vOhu66ibs&_pjWB!Z=#4QPa73e@0W0aFazH~>M8L#TnsW;Rw%j&7ygE%vdg$1sDy)x-R5 zMMkvQNgz}*>iTQh43n%HvJf01Fl)+$lSja)x|BsugFup0*hg>)Vb?QLEYnKUFtSr{ z_c)<*$q_CoU`a-V4aroR5?I$-etC5ZHGR;;c3^zFYVb(!cInfu$- zaG+-@4n*_MnpMG0$7iOjJMzkono)MZb|;~xP^yE)k54Re=8Q3E^Iwfd&4PnEq@ka`hOz~r|8 zK|4lS3v3{c%EH6S#3lzYLc@3}6O?HsBTQV=Zl6}BP~w4m7TDil5y25wp2HN*1INvL zsBZMK_qNMOAI?k2ovxAgbW%ct166X;l><>P=CGhr(hFg7k=qbZZ9*_2TT3_kd5vGC z-r0#@w%@=?nAu}k(&5bNQ2qq~0mYKe4vtH>G^-rLIjW=xn_kQ5p2e)bQQ>1+Ku!?5 z%t_mR#OJK2$6+O(ygeC@kw?mFn&c`H1cdDzsBFkl1QYQAu(73IX&M^4x!q2K?F?TkZ3~>pVugL;cPoks?qEi<^pX7KMEHjh)F$3=~v2L z0*vz56q-6%3I*W|$%1b*Q*(Gj#2zA0R`0S}ZB#&3@VO@1#V+*|EE72dza_kLD?$c2 zD@)ya&3E}STqUXgG{u)B9K(qBoPz_&=Ro(D8|3H-K-tirz#B4lXb6Zr}?COy*jV_78i^r zRQRnH@gm;dIG}&>04dmWE!{Fi{dBG*ERr2P>zfmR9fj^` zj#sD;$hBuh-1E?u%+)!%Rv;jx!c5b3gr+=0G0!(C0YQ&pBB0>;%$(EzZ!#QM=TH?4nrvMjLSWbZR}m>^R+$f3C+5i{4|_e$%z^a|VjyBb6)oMmuaT)}asC|A81hU3C)oI196*dv zoU0gI3X(N!M!hI?9ht`-RH#CbKyQuFHdb>c3Am3M19Ck$bjP4M6rfxJob%fru&HS# z*2gSFJ`2i)`{i0(LvWfHq)NbiLP_Qa3MmCapIYS%d6w|;c03fu;YGwtN?^2cmM6)4 zmk3Oj<}ObCq-_r2IgIn2$WpY0qvA@^6oa8khcZqLfg1G8^c(>P+Cq%TF%jA>m5Q(y zxV6x8RgMPX%_v7`G%{qf6ug$KDh;6_+AZy#7|fK?${b6i32-fLg-*-ld?W2Kvb?|W|> zqlQ;>1+(A#M#A6$?|sUPj#c0)!z4 za9puW7aEb5F*n@?%aQ6mC`|EV+u67C$7^LSYCzcRMTB_||8VjGxZA)SM&B^(u1Mz4uK4>CyaV03ZtKLVCGR!iLd z?=!pR2EU2=S&jx{1WQl;Y_Rl0{OW zN>m6bBoUDaLP5hi^ocWN&X+E1se)v=jSghS*~8F_5K+K_2m}xZEfhN*oHljWyR#~D zV+@Hm!>>9qkH-;xy(ToOkwW8Iwk{lsajjapL)uDmz5vBnazcm%6xtTlxkzF#b6v0X zf2LMK9hhwy^QN`LlqqO<4zo2%lFkkV+lb9b`nHdV?D(ANma3GR4OkF*Y2E9Tkc5o7 z@uoGwO2J4?`1aD5QzqWtS=7xM3V{BlxJnb+vXISJ$l8gGktSrwD?+qFFED5kg1J0! zqIB}i>GI_T_c#X_pkM{hEB&DJMXYftDpHoC%%v$xQ8grz>L+88O-(h|IHQRql_T6q zB%<+RyW($rFwB}D&;kGe0AK)s3y?ujt><;`<{aIJ#OFSVAuhV_?Gve%TWb^Z>t}dvm&@bVU6q- zE4^~M#cDx-BBXQKZe2zxRT2gzvZXoG04Bj{btnSnj$Bafe({~eL{or(2PC34_n|~b zAw1v0vx1JrJ2H>;V0B|s>2p#JFc2GZ1i>S=gPo`01=7R?+AtZ7n=lrq3ig4-eOz=j z*~d37Re%u@fmB#UcNhwhV{dN>z=Ej z7YDMbD`G=oujTpuGhQKlEVy#S@)cmk0F!;4c~SkzaDCm>B)7#J$paQ3# zj!M$ajK;0U5Z)o%9oEFuZ+XcCNthM|(#gmlaOVefY02bw&{w<72Mvxg>5eCPPGUWH z2ttLH$j2M(9eB`*q<5_=i7#9a04w=D278Er#`_1}A_{6kTQIRs&7FEgOslD@hv@nN z+2;(7z)h72mlRvy<2M=VPEkmIKB?V|VRhU{Wf@4u1m1>TUxOIhxh5De~6tpoP)DkAU zl$OohQ)O~g%SO|Q0=4Vy&!BNTKLP93P_Gjb_NL_{u|OS_N~KW2u?yUHG#0USVwnHsYWuWmCyl{;o*D;A2qsH$bhr(GAJV9{b(PQO0GYZ1~}nF*^-G#4}_~ za9s|d3vdEsh8AJ5J?5$%a0>)RCAJ1SON)C|B8+C6cmP-#Z4J01G)$JvyS zLgp~3DK3f=xg*Nh6iXi}depkX7=USB=jhcs^gw&ls`x+=Rx$(CQUex6`@vZo2CS^cBnKN}oxz{JHpQ=?002*~Qe?OjV z(4;JPF6iZn?21s%aYA;(d5k*3mQy)m=AAgX)SSA9bBgahf-4M$`lWh#^Z6dj4lDtV zDeHwMV}jjq0d7y0OR|<;Js3OJZAO~umNX|gq(1vGG?zI{4haHN70d1_l~#;N=}*p% z-FD}A!0+rmmlTH*gmakfWpT`jMLT$tUdhQB^EW*l|L zDs%2h1mFiP{j^&orV6DaWyN=PY+Ah$62##2!_;HhhptlRswqXo4EnYdT)A5eHbxLZ zkk7MoDU2Hb01Yv%K*hB?C>yR+_mWOGQ*wIgD7kX2e=W*ji4_BW_z&vN`2PUY{{W`m zFy2T|MCWtMyX{oq6L-DW9_@%HX&;JO+yX#DyA0Kln8u>1UBE^?nQYo}Z^pC(Ro`9P zDa|FLQpwKxZU}63 zemyo*E-s02AcBM@XoWT|-T0av(I;u$lI~tzv8qgg_KZpW^R$55yqMt}Ld0Q1ykBa7 zyD`TbRc23wnp9Br!i@NFe7oA9T#Rx|&ip(Qg?K?Etl4EjBdF#geQE~0jGZoXxe3z3(vche*CKBuLm@(YH_da!!2l5kZeh)*`K?2 zkgL+Br5K!g@yh^SvA}aeoVQeb=m565tBdQx9I0*``>_5>4URV0ro*)O5sG zZcWMu#ZD(|DWoVf=tv#4+tR%*ZmGi?c z0XO2ApzFq?C#*RyjaenNz1m7Aj4u`;#F3q-TXQ7s1L0A{CoE%#RLhq<69qO^p#=Hb zXP3%(1wkz(THr;T)k6Z9I13Saif8bd4qYN*_>a)FYV z@Zc07gfQe`%RTU^EjN3}oZ!jDx_PJ@60+WZ!t#Bjn>Fys&V@y!9b6VXI*luq08Oe$ zxRMm%4$n|mamtfYaiDAi)E!4r=N#-;W~Shoc_AIKG*u^BtiE(1~lT4$j(l)b_UOP~&(;ITLlKtne&pWY{^QRWT>6f+a4m%%WR^toI%MkA3+j79HRR*O;dW$>3Pne8i=>^NKk zKe!a6RF_J1B`vNgrC)77e1zZ>-#%pGo(u3&)gHO?#W3B`g&{Ietz7CT+dX36!d~^wp$rwtQTpG@JFB`?lV|?`RXwBs0HxBFz3p^pwm1S@add>dx5)VYDg0SLl(*sfF~Sg zOOPQUDF7uSl^_5TkSGE|St&>uB_Im012XPBA_)(q2o1nN2Edh!v4!s9aWOnjarY8T zRm7Dfo2ru<6FtT~9M+ot+(xa4&T?F-D2sSveIZgZr4o=mdfjjrG!}W;*!JVazkGFJ zLWdX=pPAWGQe_fC1w`f7YGh3ao_F=vZr_mEi)2@n8*m>SIgz_Ml9eeC0k?R<7!1xU zL8qS@zt)ZQeR?s-?DZ{ys5lUf^oa_P3Vc}8| zrC9_9V4+OX!!BaBwpkD^LyU_cf0Yy)9CLFsYTH?j&HE$>;6^xDkByYKg+ohrS!7V!|{`4(V>wiI2&i%7x!)^fh!keYeghX~Gp z%VPfkB&Ar!?{QNV;RZ0TIsDgDAFI;nT2;DfCUn50{{S0N01E#AES5Cxm~&dlN}fP! zd8=1QJ%G3ErVW|y5Q!AYN_Du3!~;SAKv?*d!yc_wF5!p7l${yKp~Thk!>vZl(1a)k zFvNsHKTNK$G~p?r!BXlEff&HR_-3h^Gg1h{5EL{UMy}6R)yX-j*dyWLhe8mhwpqc@ zu~0&8KLHJ}HH*AMYZaa1`3Oum0L>051DLdtf@%D<;2pUL#8)`Zx>w1bNCZomIM`7@ z2JKLz+I$E#o%cNF>a@&K4A~@0m{cpF?QsMTt)}=mJ7q)e08k_lL3UydE3<)o#W;w7 zM>rh!k~qg4JAiA$Z)ectcMyl4kCpm`Ny#=-iSY^NQmw~v_?_M& zC*!nHfm=!s#|b(&DvEgWH%Uz#-Yq{2IHjHl{{Sgc)3ypZWGV-}B>b&ecpl9_6GmKM zaLpJM;sM1M>RP^Z2vh9d%W>On|pubbO~6V5uG78*kl0W=_6aT6&%tOOPZK z2qmu@1rqoe7R%C9ZQ$0j>dd zr>R?E0YsT{rvM)IlFalA6r`S zi5}M~s@Q@~NC2w;0Lvv9%9!b7e%F5yvAxJ}1|byOD&PJ=?EupraR)WoWXjHm&o zOHfF>Af&1jp2OQ&H*}Ynnk0X(b55I9wG_ z3eqb>Q$y#Y`E04p0D+i_+sDh}MYYx=#*|VqY+tis`t8bG6)b^9;6=_5KA6!0AROss zCGj-}rZle+*!W|Wb=sW@XnK@HQJy0A7@_?twFV?(nz$;c!9my(3xU5bb$W|_qKqV-m=NdU~+^Nnegk26<8+cQ| zK>(kkb)8VMT(KvI9iDZ~Da;TB0_Trjl&X|XS@;M1+s?VsC>0MXYd|W$ez|4NqOw7w zaeO@2D|5-T2alh_;?MvHDd;a$2fLMsW=hMy0HfT>IAUKMwp`QzJmdj8N<`!{p=RmS zmogZZ`nSz7!kQ~OQ!g=sfT9`s#2Oqh3&+7LOs&o<2qNOE;a9CnfZ}#$q^<9tQ1Gh; zldxw_?#cNt5R-(dk}b7R=0m{ zOXp}b4Jg@C->R4a{qu>HBoVS(CKNb7YK*3-Yl!Mkupiroa$@xuuE=~%U;!G5hzR{J=0Gb z?cswv8()JO&&YemO-(r-a zN$or~WcGm64FRB7Gyn%60O=|i%yh>WOmTb7+~*e;ZC4UbT)Qb|>0bUGuKk%{EifTT zx$@o1opep>MIbYZHFfjnx{hgSuBud*t_R!K>z!5F@*rY7MN@`)n@9IayL~uq=FViw+Mgo zxqtka$LqnhW#Z^UMxn}`>U6{w4^r;=M71TkrU*m?c3Ev~GpRYP5iTpRCyBkyfEY#* z9lHRYorRhRVx&&0et}5O6J<8gQL`wf0k2W1Y5OvWlip)8{XOyhz6my$J*hX zR@t5PmSZnX2yyB1_Gb`yvF+=&yJSJ!^Rn33T+AkrvfoL3~RTqt~nX(;;`T8vK1*M*3T?S#B(2|>69Iq5dBXM%?}fi zUWN!kvHfv58kCgm?x3%PcZ{-*(iVr}z)nyw3a>5uV4ggoM~C|kd`({% zjFbd8Y_%3jst7bV^!&1??GRg!E$Oul_Yo=hY=N-2A$geWrV^$vi1~2H?`omQ6+1dx zQS#hI@f`P#v!+r=G%V~Xh&mei`6z{fqvg3rh~4(}rV&!$)NIsn>%{9!GJ+71%ya2E zQOtF(95(c!F@|tqA?h?E&fiR_?Z*;Rt-cWLEsrWQ8&I8`!mT$LrxI!BujiEz5+VXS zJ1C&=Py%kCZStZJ!emeh0kzeJ)ADmup?sv4hN2*F_i*T$VK#pD4TNwNTM%d63- zk|O~l3^3d4^Y&zSBZ`nb==RLvfPhZa#NH?DPBi>vnmu%@8vboluDMH?Vqio{Y`s0R zvPI|Eg68%xrVKDiNn%3D!P4wmzUmjPJND&4sHLQXkSMz>owVl8R8R@qmBZ&ZN%uobE70DDODw>(-1imqpt0D%u1k)Djqhi}90T}Xt;g&}DR zO2G(J`XIz`Wfm&XB!;w~T!+T7%~qxQf>>J_$1B-s}`fFa0l@r5vm^&kNH_tk;nPn8Ob$z8Z?kDfX1qZuU-;!b5D5PHT5 z3SkJN_cxlJ8haM!feW0n-$gQ2kS^QXA+s~v8eu5fH~{Ao$G5BE`B8Bg9rmS` zr*ohmpPtO_lx|c2c412`P7aun)qvOOoq(idqdv%IOK<~uBjy{SF>Pt=CV5Hqk zf5h2G6tS5Q5iG^p{{ZEv(Nl3IwK%z{B;rj@q@3BHw&M4W!L)%w{ zHGgK~hg{fLE%B(?p#dv#_VI;SgNW@Jb5wgy0Y>9~OSsTe0;e!~?WO{Nw1~!61XnkOR`ACMw5oYQ~z4bsQP{dUxg388j(&SZ)@&bfIb3%?oY%Q`mb( zYz2tG#V(sO#-k?`RU3H$*Nr<8i6FZWDt0!np}_DRnRP`^L`?i`=qPUS+!lMxEcUU;x_%j6$JPv2U7JY5U_-p>S#bG=~2G!g(aLDi4(S zmS5>SQq?`8Cb8c1+_(Fz{{Xp!m{eLjnB7+Etp_~{7S-gGA$tOWb6_lQ7!1)bva*dA zdFge-_!ClK9{DdJlbf00vzwFHT-?yYukhJ1ZwTd)#iEb6o$1ZaM65+v6 z%^x^Q0irK_2>w>8aUI6o&J=9!@BX?&$!h$Q^BIA2+7!wM{B8P>*f$icn{bxqVSqSb z0~|O|Fs(4AXwXSgaV2pk5sY#qkx))>h8PHML5c)K78Vew&hrH@5cOF~64aq2n(07k z!lzuYrs#v&74S&>DRPRc@LYlGKri;kqDh2^>bfF z#jx@-qzbsvEomYMf)QM)WvBo~G_MVO*JhbX7~!52=8FN=+Ku>v#P1#7Dq~B}05jWB z$x>7N$hQ9gH4dNi1RXLKyHEW_o#DUcFc-6G4|9Li)dOl&*K}%zk66Oul4m5T+W{ki z{{ZN6EIyL@!q*bBhw5FAeF$d5M&V38W*1D1Hz>F!K09mEB(mO#h9i0S#)MCBu;ZOf z17i9Sfqt~p42=7m-q;+@_1&@y(D<~65}Ohm;5{SWrcy5d^& zgcxvzOys*sa&22L`Rvv7#z(Gl?(|3(+yerR1Jr|jzSD=7$;ZpqUDmYQG{_Y zvO_4@C}gO|y1O(ze9^L-(admxzIzTmAH58fE>Ee2V(f zta2f`gg(9^hsuHpeMNpmVZe`;Qs9^(;fPJURewr0TYy2135dVOlQKQ-*VpA()6j(<*K?RcMC(L794lV$Zx!+LaK+dci;&iZ{Bubh( zfHAMNod$-V2nPyg<5e(yZ4SIbHP_e>*odb3q3+owepB5k*fjqD5t~qw9tP(+1m3J0 z!pdL)S&2n}Ov98uqn*k%qo{4BTm3|rgyP{R2McZ@2N8r|iwdXodZ}>@6B;p;RNwgs z599%ac2!cu6atb$fv+-1P%p58K@~U__0JG92P}6Sy9ui?@2F3SJUJfri{8Q!9rQ?O)_xSul(`T}p~cK= zFYbwI#z+FpmJpDj0OD$8BR> z=XQxCxxA3HV5v#r8d)ev8&r^x0jW~9oZ-5;-!g33&VVG4F%1xCMO8$)MzdWeo$X|u zJg^Dj3#%&UoHnRHUsLH#KdN(cEUX=O3KsJv?8Ea6L%e?$1!RfCMssY3iPS$89^Xi(X9G{?eZz(OJMJn zIaWCh*0|0qP7(B_SAlFF(@&AjeQDuPEz&#bbrJ;&R;P!qt(CdJs1X_M_3GlB!3D(m zbSjs}j+tK}bzExo(JUP2s^Ns8f?Y9BzWQP-o<>TDDbT%Bpbu9ZG!?)$Zr7v@tO@Of z{V~FmGDi{OV@q=he99~Z}T ztOCF%fa{cNsOIFA5&}t$VPh5?r<+|1GivRce83_VL`9%*#<##oAcO_32OEMj+fq5? z1;{jaOYAO21k{2J9C2)#=W!tgK>()wVwMM}R6`lU;t^1gN?pM8nNXRRiF|weI+N-< z5b{+DLoZ#w8ai7=juF_qdWulVmqKx1NgM@0!_La&XPBG7eyR8Lqh++1W=CdzIQrKn zd^KiwPT<{kWgtr(ta98iZ}&G(b2HZzu3vY9fRG5LeFM9soj!+6EQEK<4|quN&G($G z!~{$Ly?C#GYJacqeRS|kne*KyN=NuQaq?J@h;U(l`l!03QEnc1dDJ#bE=V8|#DZgT zK=}F8V`ZEI4ZST=WPM(>6~l&<tJym zbqc*zCn{W$#h~P)N zojDnH(ZL7u?ZYEH7Q|r?xQw}{ZLd|2)M>zDv<&8{j19LU-+!g!Qj%P#goH3CH*U`B=7epP@wgbLYvMzO#ls5i zrbaC`C1VRh2dHlmGRof&^j^ zsm~{N6fl9tG*ToPIRG5Qr6C|{_>NXfioxILR|nidQp z*KZ{Pt|l7-)8c&p09;#TGbgjah3jQ-npW}J5c*S5Dz(#wns;~Q zZUlgrUBL~{iKaGb1TQkMCu-R3*&1~OajSX3$6PC1smzDFF`h>s1oWpibWu?(kwqpX zVm9j&1n+-(3NG%Q!L-d`ow0Bj5SZrJ& zWd(aT3G9&>c<3S+HMxtNtR-BWFVR8zK<%AZrWxE7C z(D=g)@{It$-Iqv>QD0e46l(q@My^ms3QUO#KvHoBoteRKNF+*{1B0c!IE(>B&8Y%Z zK!je(7JQ*LTjkA`OHMf)9MS;*i;oosFbm6d+el+s1wV9a56dESBAAR638H}&3{2FQ zwqrP&5Ra%67Mn-Vh!9mTSeC9t%`?om#2B%_dtSwX*i{3D1Z@h6uu*eX)|j{NmWci6 zB2W{RETOS3aeOsa++TEAP{H)OO8M-_n=FVly(>)wMQx{RaLByiE0{Bfg|`*C>_Zp z<;(;K->F%?H|tw>y=jm|-$XyQGLR^)&zt7rv=7FgWFE%<~2XHB4HpN3?>A3ETt zwox!4i+5)HzK{V@7?&iHIQMyfrfdWW7X&9RiQ1I+l_z97KK0oofm|u)zte_V65t}C z?dm^z1?B*A>#Qrplip8$cS1}?+X3UZ!mLSlV8BqnN;l2)ZMkbKPAZ+1A2g>CIQXba zxGU|^s80%e8_pSE3k*^pey)@R=!D2GU52d%i|l`A=dN5lCg(XFzaEC&e~xr`*!2q^CG-!mk6(qZoy!E5~F7oU4#y~ z(^0B~oN6{|Fzn5eC=3c`K;*bk?G^!k`hrjJ2Ui z1j7@G0dO%pDk^q6hU?(Iv8Q7oklMK$X!PhX*?`N231s~~>$7b{&oC!7zDww^`%#NK zGk(9r6e39EOH3s|l0SEX%F>`hgE(V~hytV$r_5}oIqq8^%}hcheGy584JuselbP}y z<~gYIHKolmfH8j)P=YKX6p%5c_s8k&x}oRXDowhQ2{uzG`-ur9%rh5MD^YS&AyhoY zlBkkHNAZ`r&T)&6k}6;YlhrFe(Ed(zjb@i#$4r#K0M#%LoHKOkZG_b)h`L%lT(!o6 zTSt0gO`YYu@n6716F|7t?^MZXq(A`s#L9pRl%$V& za-@<_mW{$=e~PlH$NiZjGV(jJbkB6t@|drN-csxhIYC%*wP-5wv^o3E8t*5J;}Zl^x_;Ip|()kwiF@Whk>$1^fC zax}sP*z2D07sP1Q57DZGNz$B{2fr?1^8t8_CLpT$C*;LdP-`7=m0HnvN!{K?Gvs zBDyPR;z}aN%^^~9INIj9gtg6p?1(vx;D(_4($RL@(#Op#I_jv2b_?2o)Lsr5LC!{b zC~#<4;+t*E#v377PKI+QqX-R{rA34DEjfsLZjlNBNSyPUx!Uih&V)A_W04->q%0xQ z^=h4!DG>(mj=_-iMH4*ux#?HLY3$>`0x~>*gk8PERNUf>Quzk#cpfUIBgEm!m%$*r0X49U!H zl2OOzYDr^=Fir_VYk|QowaDodYIRY1Q;GA(Iq^h8Y+!Tv^kZH$&;vjgPOl!==Sr6AYA;ZITlG~+1<0I-a9h4 z2o3pW6vKRWQ7vi(#Q1FZ{i=m4lyR#ajjv{DWJ8hMX^m>C+a0}Tyo%No@pXsxe(+S0 zj$3QctBBhK$V*QM{{Sk;T1Jt`1_0*}?_D?a`jX~^mpNXaY~g$RPOOm}Izw~FNia!(Q^0q`mgQbW^`T*)I&UKz-KV3{qCZJs!g-`oPM z0Z>*49nr$(Y26}h$qrSQG0brw{?h`dHlZ1)+eynUNj0Y457p}04FRTB0Fp6S!^}dmkWe>G#O>|Kh8a-L)JBJLZ z*F+#Ra)=}#?Ac%_wlguX1ltd_DJ9&ge~X)fk`+t_!=(e#y4Ncr2qAo9jcgl2Gk+CcL;|F#43cmV7oenB_yz^z>y$=Xnq~9MF!HE7aLnD zhhH4+zhY5Ll`wwQRI*=jAm^Q_Ne~DuLYq{V7~o1@P<7h+?32EB58~J#Tl^D|vD}(XbxA)4(I3o7=14c`90-_t*1wC@|q4FV#KGBHN0a|$g zWhDZL9E$pOrUz{l$5?h1>ymoV`B9HgO8Sh{_0aM0qb0oGk-<=Pxqu0bYr(N_RNPTP2FOAhxBE_J{%R8_0J#ks zj}kyBIDbelu3Fto!f^oWM$U%YMBR=_ku7f?%;MQg@b+2!_J30;0Yp@Z@{e zAH>^oCi*n|3j_%6P%0vkLV;qw>OxN{k0Oad_!lvO#aR`MA_)r!W#Nrv9m(Gh&_DWp zL3^~N@d!(#IG`_MOiN1t01=Q;?rJ(%Qms76h?WbZDi3O{cI9X_mB5;gli^;JLR|b{d--2 z+rlq`!v(KJ?yWxyME8Vr&+^v>V(o?G06)XN5rygJ&O1H1j4A>UfJA0uU}BwNjOzqq zFj$SWl!urS*kRv^?9ErM-+`yI>Kj&;U)p^6+msx4n8U*^R6{d3AXhDwX4M{-lrxIIYj*`DLzK&Udy;mVfzLGb_w1hhDY zDy0^~o>b9W)h3z{O?_LtHZCM0s8t07diABJ3@ng{L(T%VB%Db-b6V;$nSJCCm;Me_ zX;{fYeH?^?(1*m5Qyu&|X$X;=dS1$BaM^!p@6Fj_T*occYq;0_ybp0ZzMkqOB-i+cZKRd`POe0w z5cz|M59Dd$n3(|3;j?AwedVee9_`lZ{{Vcc6Fy)603*PcDK`AawAk3%xh%PAY6F@u zJ-}9j4Eg~)fWZFUnFOy93|N4qB9dZGCz(^Ss8p)0SRJSHZp_n&Z-U$=<<6WKF^`wV zsxndepN1ZB^4YH$j1??a`%tMptLIh>2F(Ypw8rm{jp1Rh`|CR4{{Xzi9h$YPGv!kp zcwPzpuEy~36!~mCZHQHX&t-nVrA0_I1?$B1#2i?LE;eW1m{cZRcvth*@PzM<#foBw ze`F~cBNeAnu(l(!XR-5o9Q#NRg2ym(7werSvJhC8JSu-K-1TTQn|9$#NUe+k(_a4o zqc)kbXaM_yj48knB2@L%XpZLG({Fo{Rm_Vx3QfeKj^)HLk_a-$F`?v1=Rd*}4zpI> zD*_>!_)BSs+UI|SZMi@(N$%$Er+19yAseDNBHmI0t=6sU+i%hdItKc_qb5$vB&y)QGm~&&wGljg={(lGp+gK05z(+5R>*=%860O0ts=CXB{xt4C0d-kuWwsb?OqFjzbZj_(?_N zLdVLTLDRH(_3y~jFz45uN=bR%;GPX)aVu zyrK_hjWm@EF#))oG1zIeHb=i~)i2!@{Jc5df%R;z0)D1YI}d7EoHWXV#BRx;Dbj=Uk5ELy}>2 zUoRRpgsNL;!XQI+{wqx*YaaRnIBFQMcWj`<5uaB>QWD(&2@8Q3{rVMh3zx@66<}~- zsNgW;l#qmssP;Rsg&XpzO^hZe>Z}9EOB&Ev? zi-)+hA^uQ8raxEij?3J#2{lU)^~2{;<)1YB^^N&e%aR0?u)in;?5n^hPp5lls=RH@ z2-s8~jarnp$LaI^v(=+DOhF)8-d}pX2ON5~IAU>pb5hWDZUVcEueTftAnq6r-b;34 zQ4LHu`8#We4AIR30~`^2eJ|TrY|)s_4hp@P?5?Ii5=mg`z?zzt9$V>YZG(|-9grQI z;Y*!49?>76Q<({Zrv6oAYZ%mRA79G8%;?L6B5_oXaQN-23CM_JaH_b#mGgzE$ka4d zLs9)34&q@&)eJvR#>JG9euoM z;&vq4BLTb;okE*Ju%V@DUxf@ez*h#@MX6MDe5C&l=nBO5rh* z?#c=zC_92fhe*`V)4f>t0RZNbt#fiA$_B%Q)|07|r`Ag{rZfivvgQl1<{V4yQGp8) zi~?fq!C99Jetdw9@T8kE_U4^US5*yMtQa(#mqsl89(uKwg0+1NFV6aj^r03n2 zd#OI^;?C;Se-f@CS_0KjRH+Ji7F!Ng@``fPCd+)XrL!9E?IU@G*EnO@k4|*ij&Yg@ zD2;(eH3S-|0&y`gTR?P*XCaF)9DKRU=r;r;W$>kmCCT&WV9mo&2P$G$FTaY_OhHS; zWr{B=)}aql3ll(i^w)>a4s+E&fW++d20v=FxhE+0-(~}8@~hH=N^}CacjJ!+rvy3o z1884Sonq^!@F^$&|dt@)Njbxv`cwFtsQwc!obn^bco>u22ujNKdlWz~Ok7?gbA~JEW z4Fmgpc;*aB>hM6uJ}s%;Ge`7*7m9;!L;408?M!jXkoHSlFk`arg9xK zI3!ALJOG{U_Y}w}^{-s+%{bEcZjML<7U|i<0{wG8i1=VjoI&-hXCVyQ)AGYyDc@X{ z)I zR<&$MCrwm-6#oDbz#H)Z005#`z>sn=+P)Ribn|sC;g$pwiN+0J&Bwq6;wAwuAosWP zUay&FmM}?>6VBn$|G@Kzl8@e1O#GG?(4#~N{Iuh1onR3yfa`4wgWsl&~r!CV4xAT zGVDE-xFli6*XgGmxL77s1i%RklJ+0gw?dq;*Z}PF=T@+oj$rl*kC=VLrH5tD+OI;I zhYFu(oHD=>1_R6Dl^-;qTtGfHzS_MCpsgL>8Z%d2ow(-BULY-=?0l*|X&&$GPG{{8 z(yvKk4xb~ho|$mPF<&(`88to0pN>AJnM#wDVH17)sJ8F4yS|waSle7(%(bNmj@~88Nl{>* zfhq}ei7WtONEORT02ev{1u=jE>xRXseN5R>$P*?qSaIQKnC7sT6$sGc(pLZlt2S;w z0dHG)5+_U+Yg;O1&aot+V!Vlp9&!+eVa~KUDp6u-826d);xJ$!FcefK-tUs>a-98K=Ky9tOABR}DE5hyI6-RxLBi6dUyVy)@RgJx8;Pd6TR9KzBcUhl zL&=VYPTaOzETupjE@DNMGq%db_5J?OdZ8ucj2t1O>&O_>{N&K| z!LyMxF5wbvouNU8l88_S3}`tQo$e&tU`4+1YPu8xKzuxt?P2W85aYh^g@j|YnhtBP zwmgO&S$Wm>R)2}MQbK>3AM+!td}#;ZALm1-15z_dtoe*09A8k5BjO=%Dps3Q@+Y;< zD98II0Tf|D#E1Dv2ed}j6jP)UL8j2&c;-Ka0 z2E-xch(Qj_I_&cj6EfT>>fnM48W6?7p?AQzF4Y+svRU`tfiiw0i0}~!1ytEv-4eJzG zz=#yOrg&ir%DcN<*A~gtkk@|Mr|EGp0%ic%2LuEFs6bc0z@dqO&pEClq(4d#)DcnM zz&1v4K@d>gGW*)HnR0|a3OAhB3^Kxm%`?4e>Ra2yohT_nJDdPHn*nRbaLb}3CCZ3F zABH6C@ZVQ%jD{awi%AiV%Cn%C>vy| zxy$sYceTFt-x4OX%8lJ@PyL(?J<5UDWs(#cRK#mc=0A<;{hFOo5pfb2RXwct%sWAI zrSopXUS0X_to-c~-bg*&2RokcAgQDg#k z3Tx*b2WDvSpg~C}GyOaxP61#kIad1Ni#`qOj^E0bQ=ijl1-e{hEsYS?U^kL#E#ht5 zo$b2kw~Zj(LiZMigZZdQc*#G*Iys{_9%Uf6!;m|}P5oAx>;Yyo_>#Z9p!-)Rg=x&D zRXyCA&-s43RM$d8&*5r6_}oH1#Z0&GzxzXgMXo*1Aq0a$KHy!!)DfW=F{r~@V6Igv zqBw}%JS=P1r7{B1vPWqktU-!qEKtyC2o-l)UcRL=^po(|R$jg4~$n zkDVbbhNPNzf@3JyJc>%h|MwOo>sLM)}j-92LAwBMoAg#wTDx~v#AuysHQR@FNyP{ z)T36TJCIHtnpex^FAC(w3%=_cCiq^7YitFqy#DmE?xs!>DY2>M09Qpj>%)c&w;mKi zhQSOs?i52Mw3xM}E=U}{=VVP%Z&n|eAwltC4@U;B2FzU6hbbV75JW&IB1S4AnTusk zY>95LAu@5~A`07P>QPsbk^-Yp(3GeVTxdXTa3?@;Cp=dH@h5pH;ZJUz8wW(E)Y01l zFT3JtRQBeDMLIH)ai*d5BysHIo9XT!O?z4qwfh_`b0lxn$#D3yN_Xh8Qy?Fkf(Y7U=zFp52@qdPg=y*F0%vIt6&fna(O)(7azLn7x3g`q&qVuEmDx9%&<#F5Xzw zP_#^vl_hB;6cQW-0tg{owH0i0ubRgMceIrNIC8jvi5DWXkC8A2xrMW3xCb@z&k!wi zLx6&U5P~?MVRWp2;;rU{Ng+zou?Y7N09`7Wj%gGa)J8|df4BvChH(!1)sLLw($@)p z!IVT*;Qs&++`ttk2zWrnD=_XY33Da2?JW=fJmvO~%Q2@S;2?@(;vx-VNr`n5Nh&T$ zH6+xN#Fu@pbBYxzaV27NDr45_&!vF?0B8UsQUC-143iDin)K=4TstUu_6()PO`r(_ zVaJ~BluHUbd?^_YEvYpJuY2aZIrb$I%kCWcb&68!!=e1Xc^;n6tAFe1Nyu?=fI8wd z@A>CO#cYNd_3K12c!G1?ODMarZ$5C!Nl-Q{H#^<5Z<5sORM?FLrYNd@_FsM-uRnydsjq8=uYjntC#JWuzXAz4Q>{krg zt|N9|3R~re#>8Tm*kU_xSBVJ@2s;_Ou*+0uf78tJq?R;5j}!5yZ6+#)M3eSN6m>kZ zC9xWFBLW(wj)9WMh*j*}f^4KumKBc!0^4FEyuhlRwOp&IFWFptpO!f3#ZKX~Gi1mm zZd+9n&?R>HLJ3pv(|ba@{o%Zp2u-EBZDK9|02=LF@)Vt-2w1Z)lmbJH%=Z+q?L^t< z>6I)osr>T^RN5HQ6d&D&IJf3{pO>N1=-UISo@TsfD^3Rp+-E(fB3WowTrv~+m-6|^ ziNh-rW3ynw)#pu?hQJJV_Eidz@Tv6k-I|g!1D!L33_EI*EipdF?E^Y4XvKF&?M)0g zkUHxczjv&iX;x}v%E89Y*=Fqb+ql_>w#8W|qE0-uK8^m?i zIa134l3J)xn5B?ItT~NXYV~~_`c(FG8Qvo-e$eZ}xe^&$9=vJY)w*Zj7iqPCa{mAv z^C|f);RFRprYuRKV?Zw=$VgxmQa-Oz%^agLWKEdCcettnkj2FPAxXd)9_;Sf{pqS^ zo=8ClPMSipOrU+wc4r1M?|BUf6pXbMjkfNzj?&c}kwm}~RV_+lxg zzytsRmnZIT-iE!|a|nX%An(J@`O>E2{m0g$_aGNm*KY5~dooiD6E30awC$+*r3p{w zBRmK(+xk>~g(Mx` z1CY#DrpbDkoML&Q*aeDhhIHZ;L9}@uez_Qo2<`0YDpo_#gM1^7U7)7_02a`yfLgU< zfg@3iV@wWE_LhQyL`+o@H-+s|(p;9YFgS?8Mtk$$O(9q~!vb{Cx;-{jXa+?i>P$iu zB@S8mg&XQpOVTQ*EH;j|7|{zw5hwhlj*bBx4RGU;-ULC1D2%Pu>PLu{g#KW=(2o@x zHi|BVX`yE7b@pU;06|!!Vd+Flc~Q6`60Fd1ap1A&56rv2`x8=~IUgD@AfGN+~I}(_U$HWg{`M%FQ zc!D5mg~Ws?e_fR9a&s^~SbIHq=TxFgc8nJA&Jo_5>4btv!?)>Gu! zK(R4ZJMs8$$X!Ij9@xW$V;oLEb(pruTMAbIUteEu*E=jLfF52Lbd^Coz$n{{4l5gD z%AAcrfkDB^udNRU#p#t6AtVGN7?fS`jWA9>&FKLgghj!^n?l3WO*m7t&Ka)&A~(dY zK2+g5XdBTJeo4BWLW_X?HOk#C5%9yWUUb&Z5Q-Z>;BO1^jX4^QCl2SQv>tKoE9Uy#Ip z35dk&76sCxYHA}t7BnrBFv@s8vB%yM59S}@9wG+>2fU2A(trgu4Ft(5RK%-ZQFt6~ zN|59rT+$&T-QXxOn8`wrbRg8Ixhf`yn!L{7@{yTv*0={Ws4)fwLUP?0!4j}Ju9{{$ z=BSv`jsziT5a9yA3;=-&Vjt<-8IFAUOx06*La+~v;# z5aSA4rAvADF{)s#R-XuXRBr3^!p>J-@7{CUnzUDNqU8e$d&o>O0i%@2Yl+7$9p^AY zV;blxhj5sjinbR;8E)Hqy^aXSA}9gDdq_^wxbCRs*Xh@ZZCz1Y!MspEipq4Akwg9r z!WjVm>OzZ}JLQACwC+IXI$hx4Q8u_2c%T&FpqxII@dIuGq@Bh%AJ!EapLX8ZtCIH8 z=Fxa^+`%LV9kL}UKk}2z)FtTQIgekK=D%x5aPTIY-8-5?T+-A*?g`BbDKR%s3i46d zJmIGo4k|LIIFkYnB$Hv{rqoj;#@}t{0D=h~cfAPU!_@iX!%Wf7K?n@-Cx2Vgjh80S z+W~uYr7vulM0^evIF~pB$5!?}Q0L_V690Ngfk^EPOU~um9qe-t84^NDqtuli?_sn81SEod_b}Q+`ET+Zy-shzP7WKR>A32 z+?Y@`=1>944C#aB&6h1=`HX4U9OXQ?LFIT3JeQ}5}l1wd7AjE zB&%5}kwsFi)gdLxm1L?#6SYzmDC$Y6&RhbNAE2*QKp+GKwhTNxDMhHe4%4pRK3%{d z0XOf&(%cCo;64lMK{uB4hRr;QX>JwqCO4u%!BP?SjY59)Re%mg`dlcTE{Xk%Y+m`0SVX_tI}o|0gA6E z*NJld!(iE)1PE~ll2C5}yTCEpZ4HnEn%7U4ZOtRw&-LFyyg_#-iu!hT`z;92)3!T` z`~je+8^;hkFXLAQ0w16~Y3W?t1PCyoW?kEllq+ypzHZed45Q+vquwImsJ^lCtATpx zaN*bTaZR~(0XqEgR!1eD1aqWJ=8r+(v(KPIiWh`jbU*C4UB&0YHzH2U*1{`8jVJ-Qyc*t0o-$c z{u?--9FT7qWDV8&cXu}`w}t!`sZnzsvQ5!>%jpcMB!3sU zK#mY7;1n&kmdP!Y*5IdU^tE8R@5(#hR9qW5nptOvaA{a2y2Sqgn*KSsTs^z5S#!hN znmZT~a9~6VS{evrjWH$|lqjY!&e=fg7vTHe-yI5%Syh5L1oOR^SUk z{{Y13*aBPK+BuDB*6PdOshri8XF1P%CAfuoFC>S|0v6$xKt*vwYZM^qrx&l!zbIwK z=yD!O>4MP{$x>GbM{*$L;6+Dw_V9~z?#tcbBNJ~4F(v;1#GQWx5$!zEsV)V1LW?lT zGVYjT1?c=c2hwRB-Wu&bjlc1p1JCkFU@x5VaN%Ha1mZ$mR~e$dR5!6-PO_yU`3;Z}y{H)k0Ae0y%?Y3iQopm9sRnG|Xsg43jQXMVr9R z8DLxKA*q<7=p}1hhZU(yeZ0hx>PZ>PfI$QGLz0k6V+^dOy!L6n3V|$9GV1hB1OU!4 zYiSdfxFd zPBY~2zB6SbO5MQy4m(hAmBpmxQ5n}$Q?ng(`u6R}Pj$)J3)K9kpxcBycjcTDWeA;p zen-<%G5vtWP^JBO)P$yFkmOere~*O=opm*Cm~qCqcMw^!Gl>9{Qxk{8QSzH;SwHb| zx_l^9>*Iw$a0hnZR_YlJB?-Bs<+92*@5}9N_=}oNgkt(}bB5C1%!=|rClY%$^$#jK zQz8i)_h1h6-%#E2x>0x)HMvZ8IFNoA=Q|e85V9ZnfH5Vcaq$73G0U^{w)Cu*yF10w zIAu=-@>B*Gm&yx$R9zsXXbYKY7&8HrZCzmnZtL&l9Exk3~TM~!lm+$4cX_C$9BpklFx29 zox{uHNXaWbTwuiQ*0mqDXy=51j5E(@PPS1^m$5bh6WRLS)Qppst^*2Ji$0rvxl-eD zd0&_mQ)Mn3gaGSjjUy!EOkRZJfv(?5amt+Hq+~%5h(zn{MKV_GtqxncRu1vD@B9w( zH!&n8+jw(KIeye!1ODbZ021mVWQ`Lc0DLsWJKIhqY7EBz0GBuyg#EJtS&inQ;1A}7 ztJFUl)tz36vSvAF=>ugF>$*xGlJWhm22uXjl1CJA-NcnTv*6E<$USj)8G> z^@jM?yUR)aMuuxZS(1R%F(P=Sg>W0#Tp<+zVzrQ^ULl!DM#;b=g>Z8(s_1(seZM}$v{e{CEeGEqL|D(PhDKn60E%|u=`IRXU!B-8El4l{l7{| zMS$V0+sx8yp)ieqs*5PJQo2^Qw3t##Si=M1l|&yF-(8HOhN23PIn zN-b_0gJ$2@Vri7V1V$+zk3UKwt%w5U2i_iWhdN3{udWTk}R#&x9pD_UyhlyJ~9 zwL2+CttvvoJK&!l#O$XvumFHmq(X?FSZzwtSCdq81#nscY+Snn?pzmaD8K-ss=3-L z(8`CBeGSBp;PxBwa>#VzhAS^Hez_L#k= zhP%$@=IZHELZukeNQ|L%P$!vE6uL{upjLhwCy-Du&zMh``I8HW5o>*|OPIybC3ugy zVo@?6@|sd`qS}oEuGTUAwq|t4?(N8c+3vXq~{PVyKc<# ztA9-PkYL~=3$Egx6dhD5-0xO3Z2X+pSTO64^4Uk@AwEU^5{ z#;y9y(yJRX|1db+eyl0!MiXXZY< zGu?fwtE8x>T5FG|9XneJ=U|Yia`mejYN`S21Nu|8vNDzi3ynY>ic3g660fEiyBv6x zVuW?iIv#Te1A;0LQYOU~IRbF4vF2aQ;H`DWyR6w;-IQWWgn*QI991=<@Q4_c^> zSua;L{FJXOq#^)Gss2PrP<%Pd5)N{{=auqwOe6qjx${Z{_WdkXEA%uFsACacZTUu{ z`kwcjC?9T>lJw0|pgEwvY9T57N0yWe?26QtQWJ--%S_3a2#E5BkL%8$0|2~tDtdU; zYLJb)HV*JTI_8Ss<&I^?x8qj~1fT<*P^k#v&_8?UMacz0mAr0mi8xb30z^lD!mr)( z6TB<{fBW^GCr`x1r=Ox`JO(`?cwC8L0~Ouyr^{dtX+Re(yS8-$U$Ui&;X*6t+xh3{ zTt3PAZm;Kbf&@p?1cotA9>I=o(kxOD2cCW~+evuG1AY0PP~TKr z*xYX$sI2W{GEXwO5I=<=KQiP~5QIh@YhUoB8aoAUbm?*>K6J+hv5iu0PEBaLoZ^9? zM3O0*O(vsTsFkJDOEV`;cMDr!1>EIG6|u_73arsXf!A zY>8w(VIkA!A{nzdP@KfJeKMK*TN18wja6_cb!Kqbb?LW9%~*g$D2iZiP_IkbO__iZ z3Vb}M4ba4lD_$&L^8B)65pi5Hx9d^!3hz~1BD4nSxl3_w1%v#?NoG8{@TmEVj&a`~ zy+X|+w3k5^1{dtdvv8*4Q_}(* z?Z%Wnnm8f$WOt%(LCQW6*&J$GOW~cO4aP)lNJa+srqH77PK^6Tp!w4riuR;O>GtPR zvYZMW(2iH@Dj{m7U2zG)^l-(;XOomZHW2|=X61-mWXdbU#W1?A`KQc_%@35Zi0@;MQ8@P!$%wKodpKj9+~e~8gRAO0~0fVL)q z&zdE-ghlSQZ4p;uLC7MKh5%H)ibL5Pi*!D7cvCmA^{3DTsGrgJ?zv&s^7q#6{j2?cG}N zr(%#h98L;zhaEe6_U42XwlOGIx6@@*tO$xlEU@&-n@M6QG1*bm>760S`gYot#!1X# z2u-7J#}%uFj30x1v#Qy7iBubhnGvO~z$-(JUx185ea4z$L-W%wlF;B+1L;6&=6?~f zX!c$o%yamWuoPNB<-iUPr>M&dKtw845k(3nB73|-_WXBKF|5(eJDB+&Jk*527X^=k z9=1~i;h6v?AjfU4dvT{@TAN1M-K&$8nQ_a0A0B7728qLE_VT}u8?kORnmq=U1&iYQ zGeX#re99bifxj?mt(^s2cAbzb_q{lUxdGViIC>9g`sGD|2|{)cF^{K(HM8+i$pGvq zmb?uZvw>2OrBWdL3dlGnt_2II7HSH*g??E#fIX?$opP;A*0xwi{{Wa#1`XQegm4Rp zB!D9#ie5y7Bme+ll!jrzRq0b#Ev{DiKo}?qbY06HM%kue{L<$aIF&!SRd?7X5C{T7 z5l?wprtu#75EF2K9145nfPa>(8DY=6CuvD=LqAP7&1o{fWBD~6eS0La)3_-xX91z9cpo6H)rw9#I1wyq7 zgS$2C#<9L95+65gZB~xKw8E^llY`t<%1wjF%!E<8GN!Mu1#e z`?ZEN1yC!C>cQVG1t&=kOl7!_{jTD?EaA2!p$zV}m2)0KMIIDv1cV?R-jxu({W0-< zfKrjWW8N`>f0?^(Be+pchw$t7HzJNm5UaN&4)fByg_va$h$c6LD*pg5E@_U~Q-9^t z*&Yrs6X+ns6M}=14jiHtYAH2^)s%)C+iROi1}M6QTV=R#07S?_iFz;u9_+cZTQl6( zHe&rDt`8OwP`t4fc1SEJ=8){12u!vr5u848FgN?MAR zqNOO3r6`i3O-Urwlc_mq2)ju=rD|M;glj+zXaS%E01N;S?4`{~tqI45cSAV+M)x&R z&I7kBV7cYjUt#LAQvU#!ZUQdSPidsMtB%Naed|RM8ys=kz;^<1X29*sfDTfZ0d^A- zn`3gf*pwrRf=^j}tECoZIJx6c&t4ALXKjE?tprim-ZUf4hdzaDO&=C)H7ECcxuHeL zf<`IQ3IXb*q!5J2lj#cC%Ql&7NCk2+>&kmvEsN+e9&0(7z^~nR^=IkVtqzJ0rI6y<_^$^wG&sX8gwpaLI4XDion~ z7$g2aT9sJ%QWpxmx?0(Zj@$^7(8{p27aI_sua^b^iuiTB8pZXWkW5DnJch7;JmbdX zK!h=*G;Srxa}_n+yRUUw5U6b65)b&2C*Mm-(Q@+?s5kJ0zL|RfflDRTb{OH53~{VG zU9Z<_TH!ZUFtRGfJLOATeGC9b2oDy}YFz}>0rmk>!vz(*;|Hx;!?3F3D-# zoz(3^-K(6#{WPbe8sQ1k8-#BzSqlFE=5jJ1JXHQc_hW1=HF)a#EK_k+As(yKi zD~K`O*2+du2AUTbVeC9|TR=s`6@}3)&&Hx=;~Ri8MJa9AZLA&op}oSVwA_%b(+X34 zc*hx}N|S3DX8!;VE_sSemzFc2%bH4yrd#o`Fbe={FZ@Hhi)8A1&TC4|F4F0VAMmA+ zXG{_D3__W;;lP2p+dk$Q5=09pwBwC}#GyH`X%70QabQA<^VWBqjd< z^ApU1_>!H0gq%2225o+jpSz?4UQhqThVW3@aY)USJV$04j|G;!;*W;zmMCp#84s zAmXkcnD)0a6#||dR|G}cvBssez2i5#Wz2hji75{hl2AG128S@&k5ULWa(jVA9d1p- zb93UY*ShZF{#W8f)an4LDJ<;X=2am?F-nAKi9n8Is!m0Kq5+rg?K#x+pzq4G>z)V|Cc>CxZ6 zDRCeZu&E?NE8dG_v=I=?5_359l_4a?wPtqnhz--JIZKM(J{e%Rq;sO1ELjxYEC%#} z-gXK?Nx0M&qk4UMW{z@N`?|I}#TMCV>QATJwvm!h1GpzZ4K`r@Yn2kEOgDAwMK)f< z17uH0U=NGk&<94PNtyLwwg0+?#hd> zCO86fqM0b%2N_*#R3lJWzJBz{=}V7XSL7P#|pr6i~* z5THm>R2Za!#UyA_Tqt7T*ElrDLLjLG7!ZmGJ4KG%Azr~G0s#o%KyYw~AjPC+2#D>V z^GR0AYpzoC1PI_0E_=Lp z(TruG6XDRLB$3NIVmqWBg4egZ>(dM|%^hozp6|Ja*sKK<#^P|W#X;+`l95_I6)(5;uNZul~VTC7HL^nr2#>Y zWe*?QH6a&zB4Lk2Jp%v9HQX^Y(LLL+38^3HQW1UP18lsNlP&a_z42t-gq;~FOnQeRy`X&d{?iQ>0H zbqbb27^NA4iLC$xzFN`qT*fx_7b`9|)cGkm0API)p?5Yfg zuCK1%xv6?sF5DN^ni&9)+0ch!s!G&JW4BCr)y`;Kus}ShHSqz@YY!aUdsXLbu9+F4|?vh*1*cmQ^M= z(HJUJi%|gyKmw{!ECKCdlK9vd>4m|pXfAV|000U}TmT(Hqraz`_qJ15>5qGZ7{&tU zJ?<#hv^9OipiAcfNXwoc@ZvWep@1zg*B?CB? zzg~5dQHO_5D4&+o``u$Tz(T9uffo=M<6Esdxh%K%u1spI>PW8}67 zv>XSJsQI4aMnh^ZNzzn)>B!ku;e!K)zqU$esPcDR3I<^Tb|Kn8;=`-Z3!y>>5stL) z_G&cAOgCH*atjIqX|_a@+CUz0sP)#Ziw5hnWd(b7wo8@!V7JN$v9~1LZ&6cmU7eq< z{6^^Y&42NG3;MHn4`+6uHP2$8)ly5()orKG+AaRF1q z^uKL48n7YVwDoS>MR;t;k8Dt2RyI5O&ZVTiIBgLacCLPE5Q9!evQCfbU#8rlz!*df zbA~?BWzh@=u=!cHx8%QXyhS1U&&!?YCu2Q5aJ=QgL{nA zcEzI6me=-uICa;HWM_jAHmETh6KKyEWGKmRP!36Jrr6&P4C&M;y9^C~ZpzoPxgEfe zK&c5%3Wm`uzjsmWCu0ikBnS)=nyqI9BW-9@O%flD0Gx+8;fy5T2HS|`%KH+=)i0xz z?L@}0umkFJ2y1;ygaCq-z*M~nOi`r>q7oS)`|GJVldfUj9^zc!q?ONd2*6>LWs<;_ z(JhTev;YDUiHS&(Oi9i=D_}v^yD&Y+HANPR;F%l*RvhS-y*C*2Y-ofPN;dMlVPBm( zZ0k@H#WyTBCRC}8Dni|&_q2O?!Zg}h!;Zq*J*vj?vdprs7(W_f%=A9klbVYr+!nx?#E)exq$% z1C*>rD!JdKr;tLKL6rChVh^&Mdkg1-K*QJ9Z&0Lh72$LeH-<47L*j6yZopKLk_bG8 zowf4x*ejMv2py8%F^6Az162P2djL}$b|HK;wW?dV3Cq8yK5r#5cYOrT;T4#9@l!i-tL&O+s)C_)J!t+oE@Phlaj z)}^qq0OA5F@{KNTvxC~gT@RAiCBVn z!_t~Wt&W_1hfbMU207$$*&9OGXHRU@*|OuWhieF5F~rb0t|NtOnz%F%q$#uljj*-( z+d3v&$tjvH*!UvndS7^M!!S2?;pGA5LPcZ%RzQ$H!~&}U%F+shs29AQPXYNa`a-kqk802>n<=qam+fq`SXzl$nhBzKn z`mHUl&|E zh~R`BkhibRU-i}C{{RJVOWy)`T^qRW`60C4{w2Cr>bRE7iEk#4bl53Y?=7i5?$Z58 z1^_u$rlBvB{ynbNOB$KRZ_EYElmynb{{Tw8-sn9Pv?mf?)~u7cyT43ZsG4P#xRy%> zSuF?$8=+|NHo#dBSI1A)-wG?i7kjeO#`5OlcW--JnUOuhBSpd{ww*D}Xr;nZg(O8Z z69uIRT7uM-Bmn0-(CZzmWWwe(j+WpEX(gmMC?FLgAcQ2^^*tv;C5|uRbixm?JOCJT zB0NQYl0g7O0&RoVFae0++{{?_4Ra#EppgQg19Y)I2cbt2fSsLZRTIhyAk$1bWwbkr z0&0#uo$vI|P_HNxKebS^Qhd`dXh1to{-Mg1RV74)ZK)o)-3s>*3B;ehR!frj>OAbG zT+gR>>+3^4+t1(9y_*P-Goc>>Pgbj9j!6g+#-*2I%922(9N;n3jgB6#005a~2<=Z= zkDW2C3imajsZv1fQ$-=&S1T#!RB)xgh?TFeDqIc#sC_QRk^!;Dd^%Owl?|!y2>_lD z`Gv3q4i?)tM)@@F!i`&Qn?x~`$uVO^E0G15RVZU!g=ZSL%i7h)X9gl%v^oEo=Cr60CLFouRG;|1T{p(!U!MOCZ0I)c>8TWDI~fSsc167`O1 z-!^KQk9+U+IJg0E3k6#MFKQ_qj$V|gXAQKw(BY5l<}T&ME|_*NOHh;Bcth0`4~I%h z8K^6$YL@NOL+iIJ1|X25FDi)CH88k08AOb+-XWD1f?O&z^VzP^-voHD zx*JfL0250B1HqG?#Z3w zsS=o?TT%Lnph8@-KnaH&!wGHvZYM>pb!Q7tcW)F>z>yqKr4hz~P?V%F7?P(Xl1r5+ zl4@LI;qI8{J?&axNiI@J zFruMCM4Es>@5c?jc#2}hFpw7I3f%2o*72}P#&u0CCnE)ljfcrLozy!1;u{-FtLv47 z+uFe`%*r%q;zE|D+M)nTXys}H6OtPQB|=2@Ds3j;8jNh2y1DYS@>*RtQ8ALGv@BgQ z!HrbGv2(1A1lJF@uJD_BU)}E+&-1SCB)C|5AuA`6F!be$Ac%lt@T61&o3-jt(@A8Ol#7dgr<+D&xSmNLxT@3}#5WE2NE|Yjxl21TegqT5 zl_|P*WZ4A7t%nHCKWu3nDaKPEH!8!ye#WN01Gx9r7Z$}%t6Pw?gZ}_$a5;qw)83(P zpyq8@)cPE~HS109aq|ZoCkXT^?`6q@k##`GBky}wr#ZeIQ_*0tE5Q_r~sS%FwBeJo7iLE~ecx6CnF4Cz}izZZ` z=OAo#5h6w`wisqMc;PA&-Due2r0rAT3eEeHdDLlx9Oav*Mi8Y-2=+cPuq|;ow=xAo zW|Nul9hhq6vG$HQwg&!@69*O&9_n}ir z`i+&NhUu+5zDFe#^N&&WIMLGCp7ZeQZ3~u6YAalO0PLgXE-Fb7-{xrfY(1#E2Hm%& z_d-ggn&5{KphkjqT!-R45`^iuK}_3B)qCF<1XM`6J}u=EFroXvq`6Xs-tHs)tUwhk zt}1g#Y|X!>dyd<94ez|KA`6Wvi+5Tt1;rxT;_66N9Hn6*-3}ZOr6FK~Msq*Lw8M*4 zs&FXK-8`ZKql!$LRK*ZW1|bO`ZSyb9yV`b)_jZd-Glj*^)@m7cOk-9~o?O5L$$9!m}ODZ8@0e;*m2_?sY*XN0Sxm$=Cl0kxy z6U(JIQB0P%3*O?=KNSe!Nag@l z{{Z2vfr;igK4g2cY6;Q_x=dy9M$8*OX}yg?{z0Ta_WGuzRz%W~g1%dc$M>{jYXB-y zD&4@>3JPHU+{zmqY6@FYDFJQy^^WR7RpJ5jsrhxN%AA1!06|Xkha~Z$nA;SIw&O^x zbl^Q|!?4r0D>lmLa)eIs7t0zgt*{u}_MW`y2^Q{4(4O2dbERpsDIqe#7};_h&U8~6 zIS(GLe)N=!azNM6etSCRhA>otQkf(U;8%P_62`@F7T?#6CnCV6oHf_eDWX^sIm4DT zoQggE#;83xEdi2{5{P4Q>+cFmMYE2hVLNNXPb|76jj_br;k?p{ULYFr zCC1Gd;{Hx({o9Vjk3Loejf6F+6MrgEYQ$95wa3p~a;?_ee3#F*`Mr(DJ43~3SrpEF z52I^bP7Pi;()swr71%n8Q7mpJmhQVb(yCCYqwIZsxm)g$g_bLig|YCawW^8_WD|bc zpsP}IN^lkcZl$DFBx{5AXQ}OJKs!!BZ%AC+qS`4Ykg_9BF>F+Sg$Wyc6uS|od= zgrPN}Pyk5i><(ZiJj`)>kz7OtghBzZK?SQZmnD*P=34?XT(SX3l5XclE^$&$-GZ@S z>R#^mce}rOp)8xLby>_nKjT`SXo)yF;FFX+S`)K4?|ez&n=Wufn9|38bh84xTHpuv zlr^3H8Lau5O;&}+-KL%=%Lo4eD^L;1v9nr9NDeVr$YEbEr)C+4tjyjWCOq#~AQ4@< zeEqb~R;zs3fD;_P71gpC+~5JPch@^Y=%GSUa*v1|l!8erYS8UoC%n6MX6+b@5pALi z`d+nH#^6wvItSB(*AGnHNb5V&o_*GfamFdxUY5$vfAQ@trY99H6!U-L04!?kr^T^3 z(UB%-_sW(^-+%+!)IKBQc4~D}ljUkAumw@Z=QsZV3yB^dakBVlbWQfhHM))_8I(Zi znNuosc5zK*|(!zsZ^kPtu+8rjPnw(Y*WN zw-Hl#M|{Ot(Qk4G{fy{JwEh|W(Zuc0><&A-vsONqGGLGSZv?|*gH5B&DEVKIcVxs5 zn=(N^`LbLakM3s}!)C>`1-jik&f2r?`?#5jQlODYZ9X)GBUFr8$QZswnWvvBGbGJ! z5tihQ;sFpy#u2F*I^7D((oLjhDL%b+ip==A_MSG94Dp6&QRBJ4Va|I!S zd}^hng6zQU+mD~yJ=eyrGCNat-La`BhWXRIV7x~uHgT%p1qVr49_1i`g;cT#E;(FO zWW5O^QptbFNRq8kLr=NH8-CkZsv6A}_wn7w z&lwjmSr3w%t)lL$S3Hz4o%Dl>ck@|Orx-BYN;1RFH zi(VF;OW z07I33J@XhaNDQzg5Z`dmon+4ocu;QW#`M37{rvI&0Jnxjhq8u2_bDccxs^0ikL1Qe z2ga#0jQ6K{{P+I=OQ(167~&>O2mI%QU`6Gz)-d95;zSLvLHuv=zvyMRyfu>l0Pkk7 z0JcC$zyAPFDc~-aQ^G5O5Y*0W9B(RLv3QHn&D=l|q_8f;Ju$_agpTgg;Y)FVSR3yH z;x~9y-1Z?T02@YGa{HmE?a(8b07XVS0I$y_ve(WTMx$mYxTZ*OfCxKM^bX{EPR&{0 zg?jDDa=`_vxLX7rE`AjsI~~Ksr2)BM3+SQV$0af)atrC}QS&082%=@x>OFMC8Zq>! z_EZliC9ouJ4aVc00W;cHJTVD>0CKWae&l24XXlex(5Vmz9bI2e$^c~lyO@V;GlS*-&0r=N)S)+At$t?9s<2KW)0)q;r=2# zO=lW+t63Ydgkk$fkzQpef)#=6KR&GQ-H_%Dh=$n%=Y>nie_4DGq1pfA)@N9oiIjNplsQ$5E$l`AFvq8RlNbFk4XRaHX} zz_`#qsLCGPK;Pl%QUTu4yb!$C)6*I&8usZzaqZjJBRrcCYZ%7e9+cTG5Rd472KjbT z8+g|;(G+3UvI0QkUSf0rVt<9JQ;}wnz+B=0OTkI?B$#Ikl+!WuUfFCMPjMgx7R;O) z5lJe5Et018w&=BmF@of=k$={+i8}znB7hDglLUDJ<8)N)7&Wm#b0pI*+D*vkYR5BmV#hw(ZcT5=jnypIm*Jsc2MCH;}z2Sucnw z1jJ%~J1K;k1KKIwM>(l!5xCA3t{_$+cc)?X6vAo;9kl(vnbmg?7lF$ChSb7nz_v6F zYr?-S;hw|PdSBMGCJ+cALIogpTtnk(W;KM>Ix~i+Z`T~?aSNfzE`2Jlb6gT2n;R!$ zo=F<&yHp{nb2JhVR>wWJEd$RAI2@H||^vDl1y&G3;2hvJOH|)NYm|Yz`JH zMqR=U)bA#MGXcAmHXns{063oDPoH0}a5Zt`8A3Mp#{1TH`WR3fe`iiiIIOI%#+&3;)=bQD4gy=+zSq2_BM zTP&U-`;?~U=63cj1`{C-&|yN|HT1(Za|qfDAP+v4mf6@I-g)E94W^ky)f{oJ%g@Uy zb1slM8+Klv*@_Syqdr7ni4C0TxYksl04!^bI+0C1TPbsH3=b$R6D{gOkOIVS8}TTI z!i&HugE%hR2pe$Qx2xo7fB<$B8}aq2IUl$EBORwLfCcT$<+}ow4ToA5$Jd5JdzE;Q zTokr81bAap5>?oU=L|}0!>H0b!*&SCySG61N-s2EQZ*C)B3b?g66*{(R9yTd^14Q& zjU`NXxCLX0`hW-;b8tu%h=s&L*7tV;>ST{&i8ES1;h*Pdhq1(afP-9y4KPk5iftf~ zN}U4(iyz2ha_5*PbTp>rWy1lE<-HY!6#xoQ0fBD14ZC<`NrVHm3>8iw0f|hiPE$k_ zMHhTw$|J#Ov`MI=pFn9-x8wogkx98Q#P#WXDnd{xj5$P`98&AEDk}DXX5% zGBcc1AW}`d>P}Nrz;7iKuUw%;p+I5ggAq-q8nzi7j@y4~{i1&Roo!Uhp%xORf!iMJ^!E>|Hc z3Zz!i=f3dSTqsd;Pj^h@?FkGB1n)5N8+X&*V43yss@7Xt;@m6bk4)Z&d4L$-ltnJ7 z7?8t`l?R0|!>jGf8o)p?=ll_hRNg0tn#lS85BrDP7LSa4@W-}7VI@`TRZ~7gqZdQjv|p%xrMBtDMVOy8eujh zkYtgDBq1P@`Z-_#=zTKgwFcUZovZ_kfrZ5(#876a6p~? zyc793tq7>OuYnsAky36dE_R}G!hFKTSTrTY*8VoJwGcvp08l4D0|Byuk_AuBnPo&w z1d`&Ui;_te4V1zcg?b&Ge>}Wkmh!<5>kCw5(Q|dfvp&$2(iTHjxC7U3vy0$! zZzwN-US!x*Z15ui6vwr9kf=5sDahpP8q-#*He3P$&lTs+^%XcG^XvqD%|9HQPB`|O z5Z#@7vgVzh(P-G*$h1DNr)SXz#5 z_~yKt8*6l#C7odiPaoncH3&))3e>6ur6opy4B68eDUX{m+$@#}ClinZ5>*0Rz!j*2 zrJJdq$r2b}HfzHe(0P(bvl`LF_ZT&y#F1I+a@j??ts=IGl(Kp5C1MQHkjh(Vln0J9 zyP*U6l%jF1Mxol7relu?hXa3+w*z@3IoXve00Of)9oH+nw1ZDA9P)VP%|NqepjRYF zU_RD1&0rY0%Oi?fv+$?1Y^Qs;(>7(!>V($IQ1}BC+GB`VULcHDH75++IMm`v@2_xr zCIJ0apFVwU>)^(9B9ng)%fRZHpGpq9k|B50&pqN#HfZUdNq%?&Bwmpav&EFCOCk1 z4hK506!@fW4B3#9NNT9}DwHrtKt*!|1_VP4_nhQUittAVE!GpOtC8c7d}*U8kPM z!9IzA%72Mr$`P!>7qoYI`R5=d0`z+L*PU>cMCXTvb{624!;U_j57Q`f?xxnlCMdtJ zjd5rg_-tQ?s#d)2!wS^9n!D*kT|Jb@&oFV#V5SRz_+ySHwAeUr6&>G}U)mNELXZs6 zywDwe^kAMq?fxoWHEb#b*CI_J?I4({i=z0TPSI+b?!8IT>e(^J_)j8K;UDtc;5f+t z009Bw@C7#ES>$4*)Ks`MFHk`m5L^+Zdn4X(jk5{Zo@Vvwl9&n=f?Py!;FuM-*+S-% z5#)UvU8a<-MtLem0}faCd}!%xRKqQUKZof;W{`efq4CG*+B=*~0^T5}rrqKjV0^Y& zHwDNG_1O_Z=8>t1#GRkFcXMQSmED$ma!j$u8ai7nmIs+Vd?;kncUNndgXO%b^Ijz74O${RUN;QIr*d^Ni*l%7fDgx=j!zW(%y)DIL!sN%pD zLub*uuTFHj4Lq_D&u7n=G5M2^83s3NOInyA+&nAtJ!kd(_pP4Nve__cWX2yWP5dBj z`<@>#75({9YmP~fxTQj5ibRyj8o*K%lZaAIJ6~-@MGTmPAxv|Hk0ZQxRD6Q@Pi)C< za~{GR*R=4tr!jko5Fl(}3dLR_@cfos_jVz3S=CZRT~gZsMPC^q75Ia$KlqM5Jc{P< zsRA9T3~@PPZCUqpcf7q{42@3=y-7y3@NBu}-rN~9$JqwB{RAInK_!^6I(LIk(Ae#K zj^ar|RW>JuWh|G=4W>4vB$fDR{rC#^<4n=S0glAwigv@aLW*RxK%Bi!9$_g7CF6%f zj?KE_{c*|;B%P%_g0v}UkQA*7QWld!l_fy3m5`c#PzP<9K0+{X1&}V-hG@ih$o}J|Mts zq4KY?ouGbaDsYG@t8)Wu+hr2Q+SQ?H6Rll zv-Hbq)4)=L;R>Z|8oOvb{QL5v6Uv&_ru_Q*Qsk4g?86UdTylvZ7$324O;f!Ukke3ssYI5OC@%0)trBz|pfFeMgw7ceH$|h#(l_;Rw>6Gu@|o z_;UFnB~w`?8^#t6u4`8_BoFV~DrAwhwooqemGgA72p;KaHM#p&h!6A^8009A#&y5Z z_uiX`@XFN(X(mMn@ss5hI0?;`0ay}ab>qmc9h`P|=M}G8@T-#GBsF~nUcH!c&sSF2 zVD_|<0)_Ztx1_BSfSjt-eWkYjAM(z?A+T7Gn4+SujUuvwLr20oI{btbF0eM>m(J^>a{YF z6M}QV{{X|pTj4@(d=ufzkXp`5Vn^L;aWqV6Q5=evKBJIpsV5`M?wuR#$4fb}_LtNe$IlLhRK@n1flmY>3Demn| z{{YDJ&z(3*(;Y11BsN=K_DnC9*@fqg%EHi%K%pY4X*+Kd+d{O;k#!2kFn&ZV5Z`Ko zWGRoN(t_U6CIGVw9f)%s+6V^0K)900Q>bVtD{cE@32Jqo z!nundhnJZo5TFiPHF|f!v!$Fz@e1X;cX1ypbeUG${) zV2=?Wh98UmHS-HQ+g&gCLEL%?4+Br3#hb0xCCjpSvBk+rx$(mCS^vSR5c@2&x<5*gPs5 zQWax~UCKsVO-C-6l1TfX8q|Tpjo;ssm{cZStG~CyIBCrxcgJpiDGqc3^w9GWtqo1+P?BaBH$6`jZ?JL$?vmbLMk~guihFE&WiN?3n5H+D^!oFzuzC?UX zQzXAL<|<-K{^M?3#6s*e;uPbdZtvLlWJfmO{CSF(lKULf9KIvcosC#=&{ww}ud^b% zJEV8!3=SSUs#;6zn+L$BSi*^0DW0_y_2Zx)MySe6LBJuuU2Lfk6yMz^%3?l~-`-oGVG8LS6ZkPILVee1s z9tRbPmedF3g~r@uD!3w`0*VzDV&`LG3w<$sav5sak+S2mrdasx#Amy)c2_|8`j4(w zT1E@HH1P0tZ|m<}^Bf-!KQAwu^}AVVhwXsPEJR~!<1+A5nyy{GNsXz5 zD``A1W^7&iJdDt{BOF12jgWc7)q{aVMZ_3IaJV~_YV_l;X5Al#bcgMaW$TNE1TNT* z4z@&6w`%2;CCEI1h{eK>7W6&N2@)Dms4B3&UNs-AcoP^14jct?KI;(?)DpXjV6XuM z8ZjY)wl^LaY}g)zDxb1!!lIw;h=`6c3ET1WtMM!xWQtwL!|(gaQS^E3gut*xe(u7W33M7|8g1YjmwcQ|$Hq^VP91 zED0OzZ^-l6vY3fZ*tVFHO^1VKuMi~y=a1i>8>qQ%B#4j*Ft`W8{{U=g&AnS31$MKK zTJUX}g*1?v~=>&4Bpn?c$C>jvNR1ioY;?)@B zIfV*~fTMVb+X6G(l`$cph=l|YK>(_Vg0Mt^7>k9W7yGa9tM~ANt7#QR1pAeoBRYf< z35=1aDI~L(BT{BGG2{t=EMOcFIEHSw5QJ2OQUqqRyT7G>%#=Uv<`DsTPCu}mT5iXG zrX&jL6h4%v0O9pI9{hG^Z!jh+8|^?j{(`kBwm9vC6n?Z;6tn7Ii*cvYtz3%p1iIr= z5}LPwJ5cz;!4l?*z?uSTPS9NJrw>O1W=3%cg5n&83SxOwl(wl5778(lK)IFKg%pV= zOfdY;AGtlEy~~A`(OuOgDWGlInW%urE?tG8OY(p)0QzgkUdj!ExT=z)nNSr{q@^|^ zD=s_m1}O}1BNwE&hQ{9F`s9RLSliEgaHBw*YbaN9IVS{x6iXzNrwWdoL^KG!!L1uy zKmc2^KUE3uUL~`g)=1r zlnDa?pGcP@t)05H zR+x}#NmXhv7@noOMq1PRQ3xFzFMiq@WXD7R03|`cV%u-tJA4UO!jVURObH~>wfysX z3TbnoNrEDj2RHzcv@UC|b6-tc>)V^L6$laY9U2k#Dd7kVQ*JfbkwCa40@TD)hwYaD zsxe4y&#xK^V_H!_CM9v%*@oyPSSK`a4&5IOn`-pwvo~eRs(^{J?dwtVC5I^r5qDt@ zNoB|ixi=}m^9oVJj__Zzj|{Y2MI(HwK5Ul;lpw0A6giV0Jnyy01;c#GLfqYP)?7?A7rF%<;r*#1A)3ouscP@Lf-v}l?5tD_<8Ls&G zZ!m`U5hVe7zkBefk+rhWi3?xP@4BL=GGVIqZ;yFzm>PT#M_BNHSMQwru0T5%`Xn1W(?OQIl zia>~{Q?|gK+-dma!H>4MxyKQp(E1k3^6}`J#dVAx_$B=ltWt?ZFi0gz2?5lllF3R^ z9codiWP!}8Fb;6ZlFR`(dRwE|am6)~i6j7ANkGwZg;;r;|?)$#K z_`S-OAhQMj3p;m201Y|EG{g_$m0Hs(bj~;NtQ7*lz`!PCM(U=$L%RF4cVBjCw2=9Y zW2R~h2NtGsK60Pkz)NL=aMld!Cn~~0QJ_dJ`T*pUv4AIrUdKiVRR!bPAR~L#X9R?7 z5UgwyEt@SE)+;la=bBTKL$~3eD1O!370L>5HGz{Q}at=w^l}I-| z*WmB$uIkWS!yzO3Ie?I9Pj*)QaLeRO`BP<07Gv1sf2Bg&F>3nMA9!j10IAaIH2BSv zHGyr!irvSEH?UVALcugH4MCu#NNpH~YU_@2w?Al8ZHkdN**4dbM;IJNMz;hWIBn~c zIoO{LvD=>_$TL6%#6TfAM7D0Z5pW8!E;%l*?v({RdwP7c{umwZ@EpHlWkfBa}n%hH=BSH__6i@`r>l z&z%dFMtbeU`e{M0cMPPQU_7YlY_vBIUbp2)vZj_eQvB0Mn8Ow>vH??KIYXbL}g9}XINi)Yd@gw-F~!_^Ciic<|z@> zPWDO)5HHMljA6RDKP-Syd?P?GNULG61_Me8>*(a&Hlkn!k$V6!@vjVH3fz)Hl5SQc zl47KlIpP*HjEft44yLv9$0#J9K6$2eTN`LVZ}98kNXa2CMilL+rF8OL@~4qvhhjxB zjibAkG*cU67+VaG;G4%JO2=Lz@Y-f8yWNROCUq`bFu@X>O0DopC3>nS2w6V?LWe4c zb4|xE5O!g3AaRXmozdT196Eh-iC{*vQhm;r5d&u=T+4ws>S`mwZ@IX#b(E<{Qc6~p z6sal&DoT?=6q3ayBryiAD#RR$;%rGf!eN(QHJr<0fLc|h2q3QzF$JVRf)NOTRSQGp zmXtl_r>D1XOsUQYMfX^5?6nrzd5yqBuPQ=WYgHGok?en3WkkX_c~NYakoXPVFKruH?ep@aWSO7qUWT>WM`cb{;sw`Y4fZx#DU#ur zD4wi76pWK?JT(2g17of^Nh+wk%yPJ*nJ;H6^FA2(Rv_`UhvDwie-LPIU*3kIE|Q;! zxPS4Z9`hf)GP{u3#e3sUWzQ4ZJ(HJ-4W@)u2H!EELCiWauSEP~Rr9pxNb(HbC?75= zT_Cun>y+v`b4vyW#1+8U?M8C$Z;W<0KJHl-BCg9`zN z>b&VisJX{iQ8z4=3jY8Uf%FI6DVs+2wrK1(j&ZHcYDt=yOK~}#mZcG;G9gKk zAxKzKR+1>BtSJjg(DNXao(DT{4h61MArJPDgaynJhn+w@&THD{k{r$#wBj7o#M8)t zM&Vpw-n+SbuXRxqOBC{Q?85u7r7zmqm(v-=+A?*NqTY8v+~ z4z0TF9+z0uO-zY%O`zuln9`WGU~oIBG`S^Pa2zN>$H{!Eimkl&=I$`zOC}i;9%v6U z8l%hz%{_h|HM#-XTCO_>*V8*`$8$#^9!8Z`<(1UjVUK6i9_;lFO4YexLK@svsxgSA zJj9LO3-PNFuVX3>0Tf^GcfemM?74=1(ad3bzM=0}!AoqTTY4_-hkhlm5005MvFaQ7oKmi~O07w8N3;+NI&#bhPhVC&W#FAo3-x5zc z{5YD>8h`)*XaE2J;eY@L00IC401*T#J9qp;uTW^sUN5C`e81bY^u3AMQ4^b;<9rbp z!+y$*+?+|SEv66h4eOI-ffJ8ia;R-XW5R(5LK5m=dDL#`Feer-O1ro{T-PVdHcJpW z03q~|Qm79HMo$xOM; zI`pXds}e4z2H5W0t5NH;E8=Rg7*db3Ty)7z1Y-jqB>gBEjuBWYs5^-BN{!tBIjcv* zwTE+e6WVO0Bql_a$rtVRsOiKh-`J2ny+)(gcqz3sBj?7T>r9z00x^tyDmHbUz1@Hx zjUKd6_fc&3NDqxU0LN>Mbnnb`=A_4*+~c$v;Zj{=}B4p>{44gxsyTjp{! zO4&fEK+y7z+Sg{4^7$FfMKF!J1Abf9q}cxeXpDHRxJS13&ZoPNcZ4N3vxZTvvK2y< zoMs^Z08^iID!`SvbhIYAcyTgim@n~2CMOmGu^-I{m|Ji!4MUIfIX4bBH*q)=moKM$9*Z5!MyoJsj6! zfo*ka5x2C{I`-iMi(O^k1W2OC1GUY3Vs{+5*I{*YQN#CR*EFZK=EN@H?&|QuJ8QD1 z!MYJqfFK?^>fV)eLD+MrwZtY_brD5vi^Ch#v2gzY-a72#n#G`tf=B@s3f%LGBu-01 zPIwa>0;)A32(%?UnrO^$E`NT<%@CNO>`3-_LX-0jLa#}2r)QtbJckf`y(_rk5Is9S z^ukqK4KO&0YF`gr>b4)4Pad{kZ8VZYJxxssZvB<+!#!QbqxnwIyrJiY3s)sQ_UxO{vmJJpYPjSnXe>N=L|rwX=6l+^@_mnPtcEIuhw+SiYm z$fB_>EyQ;H@U<=!r85#qpaUFqW)Iui*}nn0h+_~BG5{+;7qndSz;8dT8MIJ^jHj6B zym>$TYGPQO1HNt;5-57{=WHrFP~h@JxDLSNiQTYR;wYGz>IpAh8@byyEp9`X+JRIk zg>ob>VRd)!j~?Nja5pa#@vW}I;qj{wr6`KyTm$1bIY-%tq`gTTgKemi9!72o>M5j@xbFz|y~!2Sbo1 zfE7qph3^rUU|9}qQANs@H}a|nQVKJdMS zW5RIB5Z*A_oeT7j2nmw)`Ev|lzeA1=V2&J3M+*=wg){(gu8eVEPsn4&k90}EL#>~# zG}%pvCdUsVeiT*|VET5Gv%RX@Hsn*9q+@RdTvDW^HUQoVN(^nhW!kAlAxSLs0}wDR zx97yr}R(f3XqF4WbJK)z5E=rim@Fzr zLzpJ9u6r8i5E|0vf=C3TL5Z+L8z_bF2w$jYQr|Jw z>?dX!^NAr!!mLcJ!~miQRccEYs5EELj=AdZnRP_83P*WgjePy_{_6h2@t26VY7$Wl zd(PtG*f%IPxBR!(>;(!_9l(q=9Ry+ya(yJvnIc<>3R(dXT8U{h<~Z(E~6Oc<`qU#-8dxyYl@j|St}mWY5+3{FFN z-isBWo(q*faffcqYr%D6vZ3qO7ku0RaYeDf?C}&N(1ZaLUrMzr4s1Y833K+0vSRrh^bk zu}lmuu*RQ``9Zmo6e&K?;po-{f%&6meQ~;iFP5L+qk6n(!p#KSVZgxL+Rna-V#O}f1U;lsbTy^CZB182u(8j)7jpkKl8A)X(5&^rAYe-MJ1T(5s>=|p{!z_z& zC>Z3Vi=YsMJ=xrTuw`pu~BtZyb|lQ_?nHHFT5V#MXd9=F25PNtY;^gM%@v}<B%a*CbWUR(PWC?XN2DO+U!jYNdcc6P)G*yC$T@_6LywEsh1!rs4~CaPQ9E z<+K2dao>KsDmJ@Pfd#c^^TQ}}mI-WmTF}}#S5h}lo<#!Kq|j|~?K*JTk=$ZHFw4&f z0R;<=`ZG`NX$uyfXzq9w!a3tn9}!uN=euXNNFMng&$dz0;xI~5`Uz5160~K5QUeb) z3sU4p8HN24@u~jj)c*iOtd%&Q;W+%c+hsV8Cnj>-1IPA|p-DIvX$naN!m0>3f(Zm3 zAiL@a$PYFh7@O?`Vdg8<<**P4LLh`$%Mf=EgkV7!P^qNGrwn_1fzp{nj^lV3m}7{7 ztZ<{{vc!Q4{5e5IsARHY{ReG(TsNtp10%i2t;ZdawXd8}Ho}f$FvQ&CGV0|ioyd=S zeq~eg+eW4E3t#f%ZZ%ScTynY9+oWd{-Yggijs(Cd*%N4ylG1y{;$D=nK+SMse}sFU zyAQM*-m|~yjewJQZ!Pa4T{f2KvVfdD{n6){TRs>f0otN&CG#K0WN}ZQskoHEDTIXg z&5M%p3~0#%vngIx`Npe*Nu%!eA9kW^wNpU<0Lzd#Wr*Nry<-)YxFu!j7m0TR7C5

%VaHR^}3Lf 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 z zHF}(u!5b_Ua=7v6V^Q-Aa*2ho1w3-)LFBoTAg)qaRH0Q*Mn7rjLqA3`Ss*uTBee8t zCsQSl`kE925dsLjMft8YjJMIO^2j~fh{mM^m)4|fjRxGCEy)3Rm4;*NIaWKV(z&Ww zc-oEtS5{@5+9hF;&Qz#fXNbpB~UnkP%FK}9B~-nEm70j&`3f>h%iOA7yuI`Oe#K`%c+3( zlgL5DC0u~hVmW(`I_Z-5TY&A2N6ko}0W6zLQ?)r$QJ1NyAXMXq58vE!#vmkMmcoFV zNnZ?C-F|dh54At#`R75=2Pj12Wj$d)%n^>&8z2+U#)?FyP~u0=+B0cnm0po^k6Wl0 zh%R2KMIuu+rJIXB%-s}-+T+PW;c-Acs3@r4nEKn8KHy1&omozQauB#gv66QS{< z5ur-~lEH;dJq>mm1CDxwbDG5jh+QLlTAYp{f{8Q?!L0Gt_D*ZejAGVLg8{XU_ecnX&cG4r`-ByyOrD0A}e{_Pn9~hR)|5a&M@W`ehY64O{Vihq{{Y}WhMwt?&iL;+ zXZ~ramVc*`@&5qOX{I*ir8qTn+D97uq{$*&A2MiZZymwzuWc^Fgxp)I6_Ko#>v3JC zIZ`WDLt#wfZwTOErrd@{e~e*X@%Ys5nWfZe%9A2!dvPLM_Qz-e^4;55{c^c3Pe-HR z$BXUyX3Zpo3k4+r$7##Ua@6bD&IL9@8d-9&BSO@Fua`SUTG-t1-8vbMglJik^T^?Q z!A~qPp!>?o-+4e_xK64u$dUZWB>uS0fYd1}_+(GQpzJ|GX={vnMbSW$L5Qbz80JBwhXNzBJ^L}`Sp3#slHM^1 z`rSQ3P;@VZXS1)R)vhA|aGZ=)R^HK^YXU3CMq1$2Wh&pU+am(l_j8az10y}W% z((06gTeA(c#=daNSOxJ+*O7t`98i%$J%LVZa&Y}RN}*CYHELk>;&_(f#~SAJJJ}d0 zD;$p9oRv>HsLNeQ;#dP(_Th$H3ZgBtAYsctji`4r79uwwsqN2wYwtKyiEox|NGu9g zJ{>JN71+m2h zd@HdaCYy0_Pd}b+RYLHh0#yMyiz=mxjG=m2VU3OYPO`1J!;gxi3csE_F{X9xfdGh% zK|P9pTBis2d@FBwSbRgRD%r3kmqjfCE#ec_s#q2ymAd=aN|R~ZgYcp0$2tfB1;dvN zLJShN)?^g^xZzb9LmJnMcIsUDY}6QtfHn&(BBPR(OPXL|g1~RLpIJ~1@wzQH!U2$b zo1`R&uF#S163jv*0FQeUilsy;IL4%q$EGw96(w)TL##1T34ZPGEk}1bC6h8kip-GW zcu6KMVG)+}{lFuU9@BA(cZTk|-Lw0fq%*mSRJn>|gZDH*4M^&VbSSaA>rz0SDEF|ARSQFJLt zE(HsugG|(bZUNo_^QKFC!6Z0>t%xLCrU_2Lzc<~t{o8!+Yj(rj?<>f^_$E$N?IxA( zN9m+IaS`s5E!QcFNRBz$k7symgA=rUZQgd=GTKqE&l*ed~s^tO zV@AvT&+<8BfA~Su0K#mIEBi~N7jHrr!i%Hz@5hLVaLP9o*isi6_uHr4zcNU2ZEj#L ztmDH{>8%usZBroiQn>OOL_i^X=B>&;%PuW(g`am z@}i0@WJE-$tY7L=#IPP)&kk-Yl9S4#6x+_#M280%t^h7HPYU6i%=|Y-@P1yiR>%T4 zn<8XMx6s4BHpoW3A5H$`cYsGt&}g0r1n@gh!b74WW=sH~QL+RSqW1p)>WL`-0KRxM zhG#aL@N6{YxZU2RXC65MXW>pQSzY2{Pzjo1iHFfT5ivki?Wt`)`;rg&-OiB+>3YJc ziZ$9}^#hrWsMWvvqVSm`@tz&=9lPRSlXcysHkF>$XHfj6gg)GZGw`i@PqSI0fA=8#=9m&6t(pX2URC=az( zcb7hZ>5yiA9p4QnglT5pE!1!+*d|MFXWR*iAMOw1&rg{BY?yxiD_xSQl{xSVp#hJE zMDS_JExk(9H!`|n9Lvxj!;TIpmETOrc{86TI%5Q0J2Z;fKQ zuKfIGyktz$%j$;xVS;JR!YyvB=S?w@CI(mSi=o`n69i91Y`nMu28b4Gw4xJYxgWel0h>byFI3dS>V)Of5Ru zQ>9IAsi6M=_@h}ciH>u4L!44vr*SpTFKJ=sKY@G);eXT3%8kY0P1hdovmBCK&VQYM zyzWprP3H8zQbf161pU1Hut1aU?O=i-$($Eo-a5YX)SXVUd7Cmk4NewHX^#x4YDBS` zE1h?_&W(B|kGiy7)u%db6oD#Oi{JH4oaFlFO#m5=x><}0CAE!(PSRX)Aa}pi9HFqs z>2i(91G5uD&mI_F5f|E}d_{4a#-14bKaQ^yBW>S)Bi~~lL->U$HxL2?4r}P=Um68FIH15*A zSr+$z4mGho+GrZBPTFk4Crg3l@D&j?NhHMa7~>UHJ54B~Lt5?C{{TOpT-8vS&@T(b z66%>_ODwm;=N`?6Op?#2bMiDB#9VS9Uv~WS?WI;-xIeYNS$MeKJm?9c`_VUXd}&1% zQ5#8q4PRWm5`fu86b!-jZ}t1q(rS30S06X*$pdCE?Vu(IJ8GW7eiV|iCG{e_8|G>C zIW2?@x#X>7D?XbT{uEyppu{fV@V)_J?3IN>NZEKZuTX z)PjE0Fn@(CD)c1OXxS!QumB`SK3H`OHi0&4pY3VkY7(Eh$ZfLr2Mlo?aJS}i1Csh+ zM{k{(a5jJ_dv;3Frq)`Cqnh9{B+f&&?iE2|Xie#gDZxlHMqGU&CK$I5Y zPt3z_9311<4&3Y#GANf%3}KL=-T)5l?IBDcu+JQD32>pc=yi8-$B!Ke%Y&4_h$oKR zV+=f~cLl;Ai~`=#=MIQz)kDPg>>h;oaLw9)#HVkj;g*}-@R)+{4=}*nLoPbl`RKV zrU&^+4b)2(`dz~?0i45uObg6ADeC^lVw|wwV;m8AR&rSg8!8Mp483b`qA)sj zrz9=hlppnc}5|A9Io=^tTqQDNMXGElM>#v1Z<+za6jxt~x0+Mn-t8v>w?z~5B z0QYvo@luRbl@!7VIF+$0*g^vn{95LP@P}?)bhRZTxu(oVYCnL)5WLfn4OC+P0E*Ww zsNK%*H#flcSNR2_b=|#pm4jM;Dll z!3M!gg^`VRU>nml;~PbhMaFpboiMb7#d7tgZQ_>dXzlILsV131G)9qCDAB*903Avs zfRuuwKm_LO4w&G^4ktK()`*f$Cm=B<00lIe(5h!qh>Aj^ zLfMVN0ZO>uyu-cq^E=B>W+85#SS^t$eukf^?u=$kKwea!Ml|rXOoDa=wrM&&6z307_Bi*~c^7%xN6>V=Mhz6f@+@chXrE&q$ zhHolV`N#NDrcF3-w73LCDu^&rTn0%|n$32HLf$QIuT7>9Bj?Ry9ASeAGYP>O!cGfW zA9Vhd_>T0YSJK&Tn2B;Glks;wkXsWNAYvDAnzjM+CnvdelM2jqxg#DY2fW!w15Xab zF9O@E4et-nJC{wwG>p{i-YxRk{XCWb0OX#JA#PhFgdhl*Wev~zN8!s+8uyI%``SUv z%!NoSZArwBb!<$^O>kYweO%!yE4cKGLp9T9yA>i^RLALLPyQ@>aBlJc0C2nJcN=ta zw7LekkQ~+>O!k2QM9KdE!v;7>7Py6Foz1wnHs~C?vvt_mu>0-p<4mTws&xh2DD5hg zxyLe+bn-Od2{L6%IkADRF~!k$jbI(&-o54CF5=hgwOXZLZ0XN*w%h5H2$bGT9#toX zwKXIcI-2To>VlbJ{+mPg(O7=r{{T0!IoobGk2;Tk(s_A`FAv^29QFrz@^u3@_j2^2 zkl;EWZdl75{(^v+cW(5eQ2m3c&c&I_{*yqy<9Df|v40P5&o-bYVb9Wt$BKGwHFPjWq?`_BGRNS3n)@lIaHM-s3;I>2qTq4 z5JMbJS6L>oG@)q@Yk(obEg{H34zq)S4g^4g2&tuk`%B`GM*_~@KbBa+gZ)X`o>h$M zLY(jB;D^IyOo#iBz0rGQo?zpe zH3ua*@@-z2==GYdH|>=@?Pk^=bh8``w=p7X_J{qw{H|Z;AA$ZU`CCg&-udob9Q|l% z2j%yimj3`p-jdu!oX+sm>Ol}75J(FcZMkL}engL*Gr3>2cKWBHRP5n>!1{Vo>tj%M z>D9fDlO^NJ)}p5f9)1ODI(~=7W$}WN4F=`jg+M(=HK=NFAk+}x9hu9&6kvaPHp<;3 z_X2Pu<&H)uZ3P(Dmj3{`^FCkWMkELKo`Ji^@tqZc3eM0D70Su28R^^uQ?T$9YTylX z=&ojA4t-wL;Bxf|1xxJs<$~_UhRbXH-jB_lxVWX>MvX7@YhHpAle-xMcB9{Rr3*ky^vyh~ ziI9bxZM*~=882+G-V58u$2n486BFVa$Rdq&7o)vC_$zKxhk_V;ejNHe2ZjT&90DG3^gF?I%A<{u z<0pH|$3z7ZDxMw^+5%4$)RmKY{EQXF*B5(a$9Uq%j5amVjyO-^mJRjxzux9`F{#st zd2NVRFII_8QApw>J&OD!nSAHmSZ5l4Sypj4@dXI5`lfjyG&HeixPJOFn;?;zk@3Drj8sYq@?uWb!8tqVi;nE<%TYq&FjP1+LnF(8<8UlvlQnVmT4j zt~`r&M7@Gk>ef-l=Y7@HvS2!sq=ZP>4_Y6*f3WkwJGn*?NzU#a816 z%LdFmrnT2lavHv?KT2~xc0EA0rE+IAAjJ~NU(#eoA7_&w=(tDdCSZgn?oU!CpDvwp zNQ$z7mZJd*5|uJQd`B@{1Q632n$5*7V&L$$IfQ;D&a-jBIRlUY)R7L!YRfZqH`Gg59j+-1PpjhhI@ z=O8EL_(&T83BSeqARs?9sT@OK>xh{ji0X&s5|HoUCv;J&Oy8*#Jf6*HjsmzxKKF=R z`LuGeK2qM6&%y~EM6B!dT}Qq{)eXk5#Z^l#G?!}XoqykW)NaFN=>KK1ThiM4Mfs8C zqj2@?PV5MiqvhWY1z7fliVn;{g{WTu8Q904a#c07oZ5wcC=go3L>3}>1PLjQ4UYqN zy*id7ZWHoI!zi4XE}@vHpm>ncQjr6$n6V+wp3VXI$q2cE#Q6y{ZhzSbd=Z+Y96ju3 zFr`cvkExc?prH$d{CBzy$O-`-`9AAAm9^}h=WDDa8{TV~i!JsI5n<4w?wz&AN4fl@ zS`Pr&$lFlDadJs|8gInzb23w2;k|-#B##R<8j=g|@!%JH1Luh>mP@rrEGkxF$}g5l zBSDb0Jxuj~dx@Z-w3#h}(G-Qt)dl=H`Wxj`yXmOb@16a1 z`R+Q357#fKFMj{c5#G9&U738MWJ0}cXk8w(7s)lN@`fOeJrKzYhq;VD!?*llPt9m? zTR%mp72f+h1JXb~km>n;_{A4XqSGS1XpT0}FLa%=R?I4C9Yp?wY;X3k4$QKIfzP^5yatGk04Ez>B#_DOlh>qV+x z6}reH?n;RGv9Tr98RfHh)wom=HfBHfIyABy?hJ(I(*?t0{cPAwbK=Sqd1S8PPAl59 zmsN9OMtR*A@zA&%d73zVXCJ$ks3}2)7>?GA)zC(Hi!uyG7{~OFM+>}YqT2s9-d;r`g*Ke7^*q(4X z3#Gs7MOaJpG%dDg)enl)|2ft-Yp;tQPA1>bQ03COs<_c`A}ME!c{8ufhiA(9gtVu0 zoYO)Pla*;TV8bhRaww^=)f6_TcX2^c7sLu73O5PPYje0xd^$M6=nH+i~V&tHL8{g-Wl?G0^T zvu@i1@T!2fZh4MPHt5lSqnO0CUQqPmRU6yN&GCt=<~}jBGeEP4_%Bgz7wId(PGspD z8V^wZ6_4SIf0*U+gmLZJba0YvWf2;kCfybXPA#VMB{GyF2HyNADEXVH1`~T^%&Hix zcZdjKt-dB~Tq$tg2~ETydBuwIs*Wap=TE3X-1L)F~ok zG*mLYj>m}PIr?eV94PIg1pOB=j9A!;J{-N#X&ZirU^I)DO5{b$Q5y~?jL=44@^Mm7 za@x4BZ`NngSuFE)2`DXdZ1fVNno;0m@XghA23F1pt+XV4SkYmZ)mngUNQkFCT1!Q6 z0pp5s-+e#Fju-!7Ri(rpZs};<{*9u4mRO{go%MdYDM9tc53zNBhcIZXoUA8LbFyXh z#r02v2GC7HuUw!l9kf0uZGt9yR@V@ z^QMTKk7uM}LP10x*zz7;2UsDrs%(9X8h$Vaf`|x=OdtWdEOBUG=+Zvp@1)oJH9|WN z@@n^(l|^;~1LR~VXsWK_FsB*6g)C-jk#f4@HP=!7?V@*Qj=A4S29+iIp9b=M!S=j7 z0`82l8&k^jg_X7CyV`0O1XOYA$NNGA;2fw<(jq9@H|E$k%9LMe4409N zcFzOt7V{-gXHkpr)=X-LdYkN-cerP7QYPJD#NKEq0$$fLcg0f$xky5)2^V}kAYE!! zi;M&Pex>S(%2p}F59CSdc@ZAx7bRy?j2`rzetlOv`Tzus`*!tCQU9UOYl5V%Qf{*+ z%!v5qFrh2kUnR8V`(wtwF}}}#{>kV{x5tB(+`8h@c>K-@Ihkj=-ViGzi`rkmRo^7r zh>;jj5GMi6JwKw_n0f$|IBk{tMWYqM){ZPX!#<@ca`{y?F_9GB6JOsqE#H%I)J;DBcl9riWqHw7Q>2C=^; z6|vPFn#d9sT`acsr{>sTjiK3o%U|k+TT*@(D)9i6*)WoO7GMN3q@>!v_>7yP6Ta$M zBBf}bgNo=@eHSGppAdm-+}Q5o;*o96c-t*}k5CJZayYU(OabgFv=qAExYRuW{WG5n z`Q0{XV@0%NIpon_;I}FG29>@Wpg8jXVAy-~J8db{^MW#v?{S5~EeSu-NEO+&M^5QY-%qkS<0$#ke)iQmN}u#G=OXYnHR z?Mdm*7d2}9wR@kXQogScg%1ojy%=RPpm8*8sX7?tBFjgp!(^VvSiFq#5OTw`$M$9? zJpk4bbbSI5#4oUL0Gs-h_Lg_7o=%;>oJgw&AMXGG146sxPo&nPIYzWb9bB6MJE61r zU36#|{u*|-klC9`rn6vL0dVwkttPHCgY;)h74l?AI!KG{u zHSdMG>d&G@Ku{>dv)=3VhklZ77kk#QmH=CSl~JZb-GW{(<)aAiO0tQ`7N{-emY{4YDQ*+C3gJqflXKRuA(>y%Tp}T0=1V zJCjvsoIJSvx_?2C#AjzTd`PUd+kdS4TxvMlK>(!upp}s0j5k$azNv$(&|Vb8%664^ zuabFPxY(_{Ft({@#iHo-0}FOZ0C1>~ja#}KzHNxJLBn67fC*^2(ln2IcHkRH{A!?% zNYF}U%u(26R2+T$9rOM|*EBiC6gxg{>9i1kZ?)6%d+Ssszed)6%#~)Ip3%_GS?dWR z)`t}FD_j^;!a;SiTIqLUGD~=u(|qHbC>4c?!70>4c4%CR#uQ~*V-AYB1XhTWupVyR z#jZ@g#w+u&JY~_g52esEk*A>zCnJyi!x#ws^*2N2;F31cHoYbyv)=VC$+WVacwcF0 zFc{(`68yFYX+Y9>C&q|&qrX!&(`hxMgQ|8l?0$ln34k~$_yIEM5V9X%NS6ke9Uqk@ zwB3C-LqP7>mCO&-r9nERHgA#60zL_}90?pYC}((FeBcQEQD>d>!?lVQMpg zvo}6&>2*_LGNIIaj4ved33vGAh6M~hu$}l5P+iK@F;%f>GSl&;KFRIEQcS8=1sG|H zrhh%!ix1~yhOmOX0)#3cgHY>YBmIPfc1T+WAa?O*{0I~rUqw1$vKqID&~B(~e>YpM zHtNmZu-#^wK&6zj6uVZwVuEcl4IUybe$`8-Ocw2R^q|m5CvMqUmw6grlQ{jlYPYJ3 zFNB7eBv4BGLwjqkUaudf&^OM=E}Ir)^s%k9%+<1&|=D?0#F!K0!4zng@>n;Y8#bwXb^ocn_P4AbX0Tl zw2&bk3g2TbobbwVim}2W*747M86%m=mq-v06B^fZ_D8;H2_(UDS8>8r^93LC|7aGq z|6As)i{E1AKc{e3Y@8#G>*_kazI46sHw`}z{}%6yJRSplt**v8JBpJkofbcpI>SF{ zc`3$$G?WjYEKMVp5%LnZhYgfB*$Rx)nbSRYJkEhWT7_#rtzv0 z96i1e)-bj+aAmG`_GGH!&gdkj`|HR?*43r^&`}!-g*hmyKs>iiTBqV)`6CtjFY8vB z4s3_Sr|nB2l0sl7>_R8Q0}ef+_mJ+@o2}_)^$l~vSgZAzo_2*yn;)FQ(|%;GC>(>V z60qfbjLjAYLLE0~pMP$s%**R>Q-nq{wQ-AxD-D)8$xzlB|B!du# zrnbs&^bdgRPPp%9#p;f>GYJ;RCrg{9)GVU5-$^G6X_bqGc_DQd+PhPk>=x;`F-El2 z?M}(!_QtL2(w22-zg9+<4KfZY)c34wzTdqJCLO%>RK4?|x5Q1G4Iz8y+D_#9&2=)A zi(QJMUo0d#S)BJx;}y#84_d^+^qrW){(9pV6lSk7w_f+SnOlwO-3qq(_L&1kN{))M z`<0%MuHp|)p}bt#<~On;%=6ACqF<+PqULmT1-{-YxmEgJUZ_rkCV@Fqj}uL4Z7c$r z9A)o`MnZqNDWPb3C~WQy#T;4S_&QWJ4&is%9&z+z6kWXS*#^stRbT(vc{{0{i7^iZ zH06l!Q{i<|528Q`#EzEJhk91kO_K9GKBFmYqW#UImUf21-{Y$OMjk@6?`(|HFHTQkxR56VnC;H zRmZHUFkBc_?mW>cZu2 zx9HiwnQpUjD2ks!>I3j2Nq8Te^gj70r|PGHlEp1&Hg(stow+eG@LgN^-^91RqnhNO zr*k)%_gSpycH&Fk@5;z7?rLnHA4iY3Wd)ryTWX>gW-p5g8o@Sv^0#&QWA=qv9JU`0Dxp+T5~dvGLAafX6(Y?yFzRk z8)onguvd;yi1JRksPiu~H|*zf;EsZno0Fm#_SXU+EegFZ8yE*4*8WB?wd2&kWKZQ1 zp5lC#?Lz|`svKaV`dY1+QDcTv_CkgH9G}|W$Is9;EIS;j9;!V6wuu`TfeTm|T=Eq{ zrG(Sl=ud{-BhKIYC$S8YV{2H{G`aO%Q8Xn9-xKkT(?4GDww8@=Fhw}+zz=^9k2{Os z5gMnHMsZN?|giRuL{xrUm zUEHW$p0eS_q!kwo3mXTM#X$zMsy|0~FVffbchABs^-|GI*Bq556=uDY6JH~A?@O=6M)8XK#H_tC^i-fh~WyX{MUBN{%5eYn%bY|Se~MYLF9 zePBq>-dQP3sb(rctJ3PMWI`x9Z}Cg{%K^ue@<}zGl8+a=#davcm89-uH3FI;Oq5O&v z%*DdEv5vzRP!@m*5*6D=b?OCrX%a#GmPurw5WJLbg#LaaBP#}eegG?ExUl-Aiqyar zr$|q>TO{rq-)PwC_m+eJ$p;|Cx;sGTQ5YR5zWj>-*(itdfATTI6w-Pv&>ox`Dz2ET z0tSFLaEp5%l3+TAS60^O4OV^C5^;I)d=i>}DG<@9N8ooyy1b9$q(LF*dr$XSQYC-@ zT1ba}*xyjy+M-;nXjcKt3S1`~LX+@7$ zL4e6L453BED+{)&s~{pSRuU;LNzk@o(^RNl1SyDS3eB-#b0t2&EK?)mR&B)aQ+H)>YtoZfWrcQRLBLg#p` z;=6xsZf#^H1m3!Nq~SV$%i8-v>3Vcd6pEBfj?H!^9A>*?6)m$(pIm+IxGu&CTuB8i zA&0=+v*lg)J6V9k<^f$n1Tz3q&RkuZf31KmP+7HpA3R8-C3wZ5xFV z<8!LYZ}2<)_@$R<3^~)aER1B!+G{hxl~6$ckv27d@y(Is^j&pB7omN@M|-NaERpf` zmg%3=Z#u?*rWT)5nH8;q14{fP$2gy1M*UB!o+>bjnSWP%QLJsj`Qj=YzIV+ZsJarDmNL@C$#A(*+~ zFWk|DC6fFc^x82raGIxiftc&oQPQ7@KO~_+F`->GjFS2Den&Oyr7hVB*?hdoMXe(# ze}yApN6Zm;NWFcHldgZZb9(OW?-O>-c5h>l%GpeC@Fi4St4l#R?TK!nG4(HSqa-7mAKQ84 z6@uy_T-xuKchf%lhtM0}z1&J9_^_FCJ(watQau3qC#OUv)U7Tr4)Bh*_R;MRxA$ae z|0$=cBw-{Pgy(P>R8qGXTA81DlaWmR-u*{fvS#;Gt6x4yDEDL)5X2CjUB4}2NpgJv z3|XFt7GGo>n8vq8p$Ss|5vx_CkkdLCUGy2dNtYZMxQ!_%{H%5olcdi+YI>H2`(M6d z4idM|{3_gQC-&h#DHPTV4P^m>Q3Eg?BvJ7tb3h|8KDtnm-;@JGL5{RTSg0cSl2Vus zGy!y&+^B{*Nq%VP0MDF2XLe8aQ0U~L$;Sj+u?D-3%I_=1x8!QrNqwC=Zdv>51l=x$ z?{hRu;e_L!cpvmH3U{5oeus!7{}$z%-uPA}I`%iwAm#rShse^h!kLV~DPW>P##o)F zNp$A1*#V7%Qkjf3(LU-Jcg=8)(u8#4cpVjm7#M+IiJ@V#Cw)Ust7GGr?9gvUx2JE=Hp`u tkGTb4qII?U;kyQKV{k8gJNZa`r{(+WqtZLyn^cs?nXIJVW*ran{{xVO3(5ch literal 0 HcmV?d00001 diff --git a/core/gui/src/assets/svg/hub_icon.svg b/core/gui/src/assets/svg/hub_icon.svg new file mode 100644 index 00000000000..5d822bd7b39 --- /dev/null +++ b/core/gui/src/assets/svg/hub_icon.svg @@ -0,0 +1,560 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 3da2031aff60ab20743b034d5f452a59f8bb480e Mon Sep 17 00:00:00 2001 From: gspikehalo <2318002579@qq.com> Date: Sat, 12 Oct 2024 15:06:43 -0700 Subject: [PATCH 26/44] fmt fix --- .../hub/workflow/HubWorkflowResource.scala | 17 ++++-- .../browse-section.component.html | 54 +++++++++---------- .../browse-section.component.ts | 3 +- .../landing-page/landing-page.component.html | 5 +- .../landing-page/landing-page.component.scss | 1 - .../landing-page/landing-page.component.ts | 10 ++-- 6 files changed, 48 insertions(+), 42 deletions(-) diff --git a/core/amber/src/main/scala/edu/uci/ics/texera/web/resource/dashboard/hub/workflow/HubWorkflowResource.scala b/core/amber/src/main/scala/edu/uci/ics/texera/web/resource/dashboard/hub/workflow/HubWorkflowResource.scala index 9a837cc61e5..d513e605a45 100644 --- a/core/amber/src/main/scala/edu/uci/ics/texera/web/resource/dashboard/hub/workflow/HubWorkflowResource.scala +++ b/core/amber/src/main/scala/edu/uci/ics/texera/web/resource/dashboard/hub/workflow/HubWorkflowResource.scala @@ -8,7 +8,10 @@ import edu.uci.ics.texera.web.model.jooq.generated.tables.daos.WorkflowDao import edu.uci.ics.texera.web.model.jooq.generated.tables.pojos.{User, Workflow} import edu.uci.ics.texera.web.resource.dashboard.hub.workflow.HubWorkflowResource.fetchDashboardWorkflowsByWids import edu.uci.ics.texera.web.resource.dashboard.user.workflow.WorkflowAccessResource -import edu.uci.ics.texera.web.resource.dashboard.user.workflow.WorkflowResource.{DashboardWorkflow, WorkflowWithPrivilege} +import edu.uci.ics.texera.web.resource.dashboard.user.workflow.WorkflowResource.{ + DashboardWorkflow, + WorkflowWithPrivilege +} import org.jooq.impl.DSL import scala.jdk.CollectionConverters._ @@ -35,8 +38,10 @@ object HubWorkflowResource { WORKFLOW_OF_USER.UID.as("ownerId") ) .from(WORKFLOW) - .join(WORKFLOW_OF_USER).on(WORKFLOW.WID.eq(WORKFLOW_OF_USER.WID)) - .join(USER).on(WORKFLOW_OF_USER.UID.eq(USER.UID)) + .join(WORKFLOW_OF_USER) + .on(WORKFLOW.WID.eq(WORKFLOW_OF_USER.WID)) + .join(USER) + .on(WORKFLOW_OF_USER.UID.eq(USER.UID)) .where(WORKFLOW.WID.in(wids: _*)) .fetch() .asScala @@ -282,7 +287,8 @@ class HubWorkflowResource { .orderBy(DSL.count(WORKFLOW_USER_LIKES.WID).desc()) .limit(8) .fetchInto(classOf[UInteger]) - .asScala.toSeq + .asScala + .toSeq println(fetchDashboardWorkflowsByWids(topLovedWorkflowsWids)) @@ -300,7 +306,8 @@ class HubWorkflowResource { .orderBy(DSL.count(WORKFLOW_USER_CLONES.WID).desc()) .limit(8) .fetchInto(classOf[UInteger]) - .asScala.toSeq + .asScala + .toSeq println(fetchDashboardWorkflowsByWids(topClonedWorkflowsWids)) diff --git a/core/gui/src/app/hub/component/browse-section/browse-section.component.html b/core/gui/src/app/hub/component/browse-section/browse-section.component.html index 61de4a51c57..a74796c570e 100644 --- a/core/gui/src/app/hub/component/browse-section/browse-section.component.html +++ b/core/gui/src/app/hub/component/browse-section/browse-section.component.html @@ -6,34 +6,34 @@

{{ sectionTitle }}

-

{{ workflow.name }}

-

{{ workflow.description || 'No description available' }}

- - -
- example - + [nzCover]="coverTemplate" + class="workflow-card" + *ngFor="let workflow of workflows"> +

{{ workflow.name }}

+

{{ workflow.description || 'No description available' }}

+ - + +
+ example + +
+
diff --git a/core/gui/src/app/hub/component/browse-section/browse-section.component.ts b/core/gui/src/app/hub/component/browse-section/browse-section.component.ts index c1ebacf5334..b0de4aa9f73 100644 --- a/core/gui/src/app/hub/component/browse-section/browse-section.component.ts +++ b/core/gui/src/app/hub/component/browse-section/browse-section.component.ts @@ -6,9 +6,8 @@ import { DashboardEntry } from "../../../dashboard/type/dashboard-entry"; templateUrl: "./browse-section.component.html", styleUrls: ["./browse-section.component.scss"], }) -export class BrowseSectionComponent{ +export class BrowseSectionComponent { @Input() workflows: DashboardEntry[] = []; @Input() sectionTitle: string = ""; defaultBackground: string = "../../../../../assets/card_background.jpg"; - } diff --git a/core/gui/src/app/hub/component/landing-page/landing-page.component.html b/core/gui/src/app/hub/component/landing-page/landing-page.component.html index fd5051fc864..476af59ace1 100644 --- a/core/gui/src/app/hub/component/landing-page/landing-page.component.html +++ b/core/gui/src/app/hub/component/landing-page/landing-page.component.html @@ -1,12 +1,13 @@
-

Texera Hub

Join our community to explore public workflows, collaborate with others, and enhance your data analytics capabilities. Access - + {{workflowCount}} workflows provided by Texera and our community. diff --git a/core/gui/src/app/hub/component/landing-page/landing-page.component.scss b/core/gui/src/app/hub/component/landing-page/landing-page.component.scss index 55b4bc03aa4..422d8af825b 100644 --- a/core/gui/src/app/hub/component/landing-page/landing-page.component.scss +++ b/core/gui/src/app/hub/component/landing-page/landing-page.component.scss @@ -55,4 +55,3 @@ width: 100%; padding-bottom: 40px; } - diff --git a/core/gui/src/app/hub/component/landing-page/landing-page.component.ts b/core/gui/src/app/hub/component/landing-page/landing-page.component.ts index 064ece81779..fb8517e9966 100644 --- a/core/gui/src/app/hub/component/landing-page/landing-page.component.ts +++ b/core/gui/src/app/hub/component/landing-page/landing-page.component.ts @@ -22,19 +22,19 @@ export class LandingPageComponent implements OnInit { constructor( private hubWorkflowService: HubWorkflowService, private router: Router, - private searchService: SearchService, + private searchService: SearchService ) {} ngOnInit(): void { this.getWorkflowCount(); this.fetchTopWorkflows( this.hubWorkflowService.getTopLovedWorkflows(), - (workflows) => (this.topLovedWorkflows = workflows), + workflows => (this.topLovedWorkflows = workflows), "Top Loved Workflows" ); this.fetchTopWorkflows( this.hubWorkflowService.getTopClonedWorkflows(), - (workflows) => (this.topClonedWorkflows = workflows), + workflows => (this.topClonedWorkflows = workflows), "Top Cloned Workflows" ); } @@ -67,7 +67,7 @@ export class LandingPageComponent implements OnInit { // 提取出所有者的 userIds map((workflows: DashboardWorkflow[]) => { const userIds = new Set(); - workflows.forEach((workflow) => { + workflows.forEach(workflow => { userIds.add(workflow.ownerId); }); return { workflows, userIds: Array.from(userIds) }; @@ -75,7 +75,7 @@ export class LandingPageComponent implements OnInit { switchMap(({ workflows, userIds }) => this.searchService.getUserInfo(userIds).pipe( map((userIdToInfoMap: { [key: number]: UserInfo }) => { - const dashboardEntries = workflows.map((workflow) => { + const dashboardEntries = workflows.map(workflow => { const userInfo = userIdToInfoMap[workflow.ownerId]; const entry = new DashboardEntry(workflow); if (userInfo) { From c3009f438f9ec96651478b40b635266672a19c39 Mon Sep 17 00:00:00 2001 From: gspikehalo <2318002579@qq.com> Date: Sun, 13 Oct 2024 13:23:32 -0700 Subject: [PATCH 27/44] enable scroll bar in detail page --- .../detail/hub-workflow-detail.component.html | 166 +++++++++--------- .../detail/hub-workflow-detail.component.scss | 7 + 2 files changed, 91 insertions(+), 82 deletions(-) diff --git a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html index 007552897e0..927de907f93 100644 --- a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html +++ b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.html @@ -1,93 +1,95 @@ - +

+ -
-
-
-

Workflow Detail Page

-
-
- - +
+
+
+

Workflow Detail Page

+
+
+ + - - + + +
-
-
-
-

ID

-

{{ wid }}

+
+
+

ID

+

{{ wid }}

+
+
+

Workflow Name

+

{{ workflowName }}

+
+
+

Created By

+

{{ ownerName }}

+
-
-

Workflow Name

-

{{ workflowName }}

+
+

Description

+

{{workflowDescription}}

-
-

Created By

-

{{ ownerName }}

-
-
-
-

Description

-

{{workflowDescription}}

-
-

Preview

-
- - -
- -
-

Steps

+

Preview

+
+ + +
+ +
+

Steps

-
-

{{ step.name }}

-

{{ step.description }}

-

Status: {{ step.status }}

+
+

{{ step.name }}

+

{{ step.description }}

+

Status: {{ step.status }}

+
diff --git a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.scss b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.scss index 67bb0c2f38b..9a10c5b0fae 100644 --- a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.scss +++ b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.scss @@ -4,6 +4,13 @@ body { padding: 0; background-color: #f4f4f4; } +.hub-workflow-detail-container { + height: 100vh; + width: 100%; + overflow-y: auto; + +} + .container { width: 80%; margin: 30px auto 0; From fdb2a0815f7a81b3ac7b9071f2037d508eccb8f2 Mon Sep 17 00:00:00 2001 From: gspikehalo <2318002579@qq.com> Date: Sun, 13 Oct 2024 15:21:01 -0700 Subject: [PATCH 28/44] quick fix --- .../browse-section/browse-section.component.scss | 15 ++++++++------- .../landing-page/landing-page.component.scss | 6 +++--- .../landing-page/landing-page.component.ts | 1 - 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/core/gui/src/app/hub/component/browse-section/browse-section.component.scss b/core/gui/src/app/hub/component/browse-section/browse-section.component.scss index a6915cf15a0..0b197aa7624 100644 --- a/core/gui/src/app/hub/component/browse-section/browse-section.component.scss +++ b/core/gui/src/app/hub/component/browse-section/browse-section.component.scss @@ -1,25 +1,26 @@ .results-container { display: flex; flex-direction: column; - align-items: center; + align-items: flex-start; width: 100%; padding: 20px; .results-title { font-size: 24px; margin-bottom: 20px; - text-align: center; + text-align: left; + width: 100%; + padding-left: 10px; } .workflow-cards { - display: flex; - flex-wrap: wrap; - justify-content: space-between; + display: grid; + grid-template-columns: repeat(4, 1fr); + grid-gap: 10px; width: 100%; - max-width: 1200px; + max-width: 1350px; .workflow-card { - flex: 1 1 calc(25% - 20px); margin: 10px; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); border-radius: 8px; diff --git a/core/gui/src/app/hub/component/landing-page/landing-page.component.scss b/core/gui/src/app/hub/component/landing-page/landing-page.component.scss index 422d8af825b..a5d40e6574c 100644 --- a/core/gui/src/app/hub/component/landing-page/landing-page.component.scss +++ b/core/gui/src/app/hub/component/landing-page/landing-page.component.scss @@ -1,6 +1,6 @@ .search-bar-wrapper { width: 100%; - max-width: 1200px; + max-width: 1400px; margin-bottom: 40px; } @@ -15,12 +15,12 @@ } .search-bar { - max-width: 1200px; + max-width: 1400px; width: 100%; } .section-intro { - max-width: 1200px; + max-width: 1400px; margin-top: 20px; padding: 20px 0; width: 100%; diff --git a/core/gui/src/app/hub/component/landing-page/landing-page.component.ts b/core/gui/src/app/hub/component/landing-page/landing-page.component.ts index fb8517e9966..1db612e8db3 100644 --- a/core/gui/src/app/hub/component/landing-page/landing-page.component.ts +++ b/core/gui/src/app/hub/component/landing-page/landing-page.component.ts @@ -64,7 +64,6 @@ export class LandingPageComponent implements OnInit { .pipe( // eslint-disable-next-line rxjs/no-unsafe-takeuntil untilDestroyed(this), - // 提取出所有者的 userIds map((workflows: DashboardWorkflow[]) => { const userIds = new Set(); workflows.forEach(workflow => { From 3c5d1eb4cf6919df557bd808a550f5b4d9256964 Mon Sep 17 00:00:00 2001 From: gspikehalo <2318002579@qq.com> Date: Sun, 13 Oct 2024 15:21:40 -0700 Subject: [PATCH 29/44] fmt fix --- .../component/workflow/detail/hub-workflow-detail.component.scss | 1 - 1 file changed, 1 deletion(-) diff --git a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.scss b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.scss index 9a10c5b0fae..7d9f965a0ee 100644 --- a/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.scss +++ b/core/gui/src/app/hub/component/workflow/detail/hub-workflow-detail.component.scss @@ -8,7 +8,6 @@ body { height: 100vh; width: 100%; overflow-y: auto; - } .container { From b77e8f68e16076e561da9cf56dc617f0b6c0c5fd Mon Sep 17 00:00:00 2001 From: shenghao fu <2318002579@qq.com> Date: Tue, 15 Oct 2024 16:30:07 -0700 Subject: [PATCH 30/44] Fix the search bar to the top of the landing page --- .../hub/component/landing-page/landing-page.component.scss | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/core/gui/src/app/hub/component/landing-page/landing-page.component.scss b/core/gui/src/app/hub/component/landing-page/landing-page.component.scss index a5d40e6574c..e143ce123ef 100644 --- a/core/gui/src/app/hub/component/landing-page/landing-page.component.scss +++ b/core/gui/src/app/hub/component/landing-page/landing-page.component.scss @@ -2,12 +2,17 @@ width: 100%; max-width: 1400px; margin-bottom: 40px; + position: sticky; + top: 0; + z-index: 1000; + background-color: white; + padding: 10px 0; } .landing-page-container { display: flex; flex-direction: column; - padding: 32px 133px 0 133px; + padding: 0 133px; align-items: center; height: 100%; width: 100%; From 156cc82c6a7237514c23970346468412123544e4 Mon Sep 17 00:00:00 2001 From: shenghao fu <2318002579@qq.com> Date: Tue, 15 Oct 2024 16:43:54 -0700 Subject: [PATCH 31/44] Limit the display length of the workflow title and description in the browse section. --- .../browse-section/browse-section.component.scss | 8 ++++++++ core/gui/src/app/hub/component/hub.component.html | 1 - 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/core/gui/src/app/hub/component/browse-section/browse-section.component.scss b/core/gui/src/app/hub/component/browse-section/browse-section.component.scss index 0b197aa7624..f7420616471 100644 --- a/core/gui/src/app/hub/component/browse-section/browse-section.component.scss +++ b/core/gui/src/app/hub/component/browse-section/browse-section.component.scss @@ -32,12 +32,20 @@ font-size: 18px; margin: 10px 0; text-align: center; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } .card-description { padding: 0 15px; font-size: 14px; color: #666; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + overflow: hidden; + text-overflow: ellipsis; } .footer { diff --git a/core/gui/src/app/hub/component/hub.component.html b/core/gui/src/app/hub/component/hub.component.html index 36fa02c23ff..4d280ec1a95 100644 --- a/core/gui/src/app/hub/component/hub.component.html +++ b/core/gui/src/app/hub/component/hub.component.html @@ -22,7 +22,6 @@ Workflows
  • Date: Tue, 15 Oct 2024 22:23:09 -0700 Subject: [PATCH 32/44] update database --- .../web/model/jooq/generated/Tables.java | 6 + .../web/model/jooq/generated/TexeraDb.java | 9 +- .../jooq/generated/tables/UserActivity.java | 143 +++++++++ .../tables/interfaces/IUserActivity.java | 82 ++++++ .../generated/tables/pojos/UserActivity.java | 134 +++++++++ .../tables/records/UserActivityRecord.java | 278 ++++++++++++++++++ core/scripts/sql/texera_ddl.sql | 8 + core/scripts/sql/update/16.sql | 8 + core/util/conf/jooq-conf.xml | 2 +- .../java/edu/uci/ics/util/RunCodegen.java | 4 +- 10 files changed, 670 insertions(+), 4 deletions(-) create mode 100644 core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/UserActivity.java create mode 100644 core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/interfaces/IUserActivity.java create mode 100644 core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/pojos/UserActivity.java create mode 100644 core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/records/UserActivityRecord.java diff --git a/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/Tables.java b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/Tables.java index 61da626741e..43fcf79fcee 100644 --- a/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/Tables.java +++ b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/Tables.java @@ -11,6 +11,7 @@ import edu.uci.ics.texera.web.model.jooq.generated.tables.ProjectUserAccess; import edu.uci.ics.texera.web.model.jooq.generated.tables.PublicProject; import edu.uci.ics.texera.web.model.jooq.generated.tables.User; +import edu.uci.ics.texera.web.model.jooq.generated.tables.UserActivity; import edu.uci.ics.texera.web.model.jooq.generated.tables.UserConfig; import edu.uci.ics.texera.web.model.jooq.generated.tables.Workflow; import edu.uci.ics.texera.web.model.jooq.generated.tables.WorkflowExecutions; @@ -64,6 +65,11 @@ public class Tables { */ public static final User USER = User.USER; + /** + * The table texera_db.user_activity. + */ + public static final UserActivity USER_ACTIVITY = UserActivity.USER_ACTIVITY; + /** * The table texera_db.user_config. */ diff --git a/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/TexeraDb.java b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/TexeraDb.java index 1a672afd2da..d56c7f15050 100644 --- a/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/TexeraDb.java +++ b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/TexeraDb.java @@ -11,6 +11,7 @@ import edu.uci.ics.texera.web.model.jooq.generated.tables.ProjectUserAccess; import edu.uci.ics.texera.web.model.jooq.generated.tables.PublicProject; import edu.uci.ics.texera.web.model.jooq.generated.tables.User; +import edu.uci.ics.texera.web.model.jooq.generated.tables.UserActivity; import edu.uci.ics.texera.web.model.jooq.generated.tables.UserConfig; import edu.uci.ics.texera.web.model.jooq.generated.tables.Workflow; import edu.uci.ics.texera.web.model.jooq.generated.tables.WorkflowExecutions; @@ -37,7 +38,7 @@ @SuppressWarnings({ "all", "unchecked", "rawtypes" }) public class TexeraDb extends SchemaImpl { - private static final long serialVersionUID = -1537460404; + private static final long serialVersionUID = 271495359; /** * The reference instance of texera_db @@ -79,6 +80,11 @@ public class TexeraDb extends SchemaImpl { */ public final User USER = edu.uci.ics.texera.web.model.jooq.generated.tables.User.USER; + /** + * The table texera_db.user_activity. + */ + public final UserActivity USER_ACTIVITY = edu.uci.ics.texera.web.model.jooq.generated.tables.UserActivity.USER_ACTIVITY; + /** * The table texera_db.user_config. */ @@ -158,6 +164,7 @@ private final List> getTables0() { ProjectUserAccess.PROJECT_USER_ACCESS, PublicProject.PUBLIC_PROJECT, User.USER, + UserActivity.USER_ACTIVITY, UserConfig.USER_CONFIG, Workflow.WORKFLOW, WorkflowExecutions.WORKFLOW_EXECUTIONS, diff --git a/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/UserActivity.java b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/UserActivity.java new file mode 100644 index 00000000000..103494e581d --- /dev/null +++ b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/UserActivity.java @@ -0,0 +1,143 @@ +/* + * This file is generated by jOOQ. + */ +package edu.uci.ics.texera.web.model.jooq.generated.tables; + + +import edu.uci.ics.texera.web.model.jooq.generated.TexeraDb; +import edu.uci.ics.texera.web.model.jooq.generated.tables.records.UserActivityRecord; + +import java.sql.Timestamp; + +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.Name; +import org.jooq.Record; +import org.jooq.Row5; +import org.jooq.Schema; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.impl.DSL; +import org.jooq.impl.TableImpl; +import org.jooq.types.UInteger; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class UserActivity extends TableImpl { + + private static final long serialVersionUID = 1758075577; + + /** + * The reference instance of texera_db.user_activity + */ + public static final UserActivity USER_ACTIVITY = new UserActivity(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return UserActivityRecord.class; + } + + /** + * The column texera_db.user_activity.uid. + */ + public final TableField UID = createField(DSL.name("uid"), org.jooq.impl.SQLDataType.INTEGERUNSIGNED.nullable(false).defaultValue(org.jooq.impl.DSL.inline("0", org.jooq.impl.SQLDataType.INTEGERUNSIGNED)), this, ""); + + /** + * The column texera_db.user_activity.wid. + */ + public final TableField WID = createField(DSL.name("wid"), org.jooq.impl.SQLDataType.INTEGERUNSIGNED.nullable(false), this, ""); + + /** + * The column texera_db.user_activity.ip. + */ + public final TableField IP = createField(DSL.name("ip"), org.jooq.impl.SQLDataType.VARCHAR(15), this, ""); + + /** + * The column texera_db.user_activity.activate. + */ + public final TableField ACTIVATE = createField(DSL.name("activate"), org.jooq.impl.SQLDataType.VARCHAR(10).nullable(false), this, ""); + + /** + * The column texera_db.user_activity.activity_time. + */ + public final TableField ACTIVITY_TIME = createField(DSL.name("activity_time"), org.jooq.impl.SQLDataType.TIMESTAMP.defaultValue(org.jooq.impl.DSL.field("CURRENT_TIMESTAMP", org.jooq.impl.SQLDataType.TIMESTAMP)), this, ""); + + /** + * Create a texera_db.user_activity table reference + */ + public UserActivity() { + this(DSL.name("user_activity"), null); + } + + /** + * Create an aliased texera_db.user_activity table reference + */ + public UserActivity(String alias) { + this(DSL.name(alias), USER_ACTIVITY); + } + + /** + * Create an aliased texera_db.user_activity table reference + */ + public UserActivity(Name alias) { + this(alias, USER_ACTIVITY); + } + + private UserActivity(Name alias, Table aliased) { + this(alias, aliased, null); + } + + private UserActivity(Name alias, Table aliased, Field[] parameters) { + super(alias, null, aliased, parameters, DSL.comment("")); + } + + public UserActivity(Table child, ForeignKey key) { + super(child, key, USER_ACTIVITY); + } + + @Override + public Schema getSchema() { + return TexeraDb.TEXERA_DB; + } + + @Override + public UserActivity as(String alias) { + return new UserActivity(DSL.name(alias), this); + } + + @Override + public UserActivity as(Name alias) { + return new UserActivity(alias, this); + } + + /** + * Rename this table + */ + @Override + public UserActivity rename(String name) { + return new UserActivity(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public UserActivity rename(Name name) { + return new UserActivity(name, null); + } + + // ------------------------------------------------------------------------- + // Row5 type methods + // ------------------------------------------------------------------------- + + @Override + public Row5 fieldsRow() { + return (Row5) super.fieldsRow(); + } +} diff --git a/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/interfaces/IUserActivity.java b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/interfaces/IUserActivity.java new file mode 100644 index 00000000000..1d7c6ef2074 --- /dev/null +++ b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/interfaces/IUserActivity.java @@ -0,0 +1,82 @@ +/* + * This file is generated by jOOQ. + */ +package edu.uci.ics.texera.web.model.jooq.generated.tables.interfaces; + + +import java.io.Serializable; +import java.sql.Timestamp; + +import org.jooq.types.UInteger; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public interface IUserActivity extends Serializable { + + /** + * Setter for texera_db.user_activity.uid. + */ + public void setUid(UInteger value); + + /** + * Getter for texera_db.user_activity.uid. + */ + public UInteger getUid(); + + /** + * Setter for texera_db.user_activity.wid. + */ + public void setWid(UInteger value); + + /** + * Getter for texera_db.user_activity.wid. + */ + public UInteger getWid(); + + /** + * Setter for texera_db.user_activity.ip. + */ + public void setIp(String value); + + /** + * Getter for texera_db.user_activity.ip. + */ + public String getIp(); + + /** + * Setter for texera_db.user_activity.activate. + */ + public void setActivate(String value); + + /** + * Getter for texera_db.user_activity.activate. + */ + public String getActivate(); + + /** + * Setter for texera_db.user_activity.activity_time. + */ + public void setActivityTime(Timestamp value); + + /** + * Getter for texera_db.user_activity.activity_time. + */ + public Timestamp getActivityTime(); + + // ------------------------------------------------------------------------- + // FROM and INTO + // ------------------------------------------------------------------------- + + /** + * Load data from another generated Record/POJO implementing the common interface IUserActivity + */ + public void from(edu.uci.ics.texera.web.model.jooq.generated.tables.interfaces.IUserActivity from); + + /** + * Copy data into another generated Record/POJO implementing the common interface IUserActivity + */ + public E into(E into); +} diff --git a/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/pojos/UserActivity.java b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/pojos/UserActivity.java new file mode 100644 index 00000000000..798091d33aa --- /dev/null +++ b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/pojos/UserActivity.java @@ -0,0 +1,134 @@ +/* + * This file is generated by jOOQ. + */ +package edu.uci.ics.texera.web.model.jooq.generated.tables.pojos; + + +import edu.uci.ics.texera.web.model.jooq.generated.tables.interfaces.IUserActivity; + +import java.sql.Timestamp; + +import org.jooq.types.UInteger; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class UserActivity implements IUserActivity { + + private static final long serialVersionUID = 424442465; + + private UInteger uid; + private UInteger wid; + private String ip; + private String activate; + private Timestamp activityTime; + + public UserActivity() {} + + public UserActivity(IUserActivity value) { + this.uid = value.getUid(); + this.wid = value.getWid(); + this.ip = value.getIp(); + this.activate = value.getActivate(); + this.activityTime = value.getActivityTime(); + } + + public UserActivity( + UInteger uid, + UInteger wid, + String ip, + String activate, + Timestamp activityTime + ) { + this.uid = uid; + this.wid = wid; + this.ip = ip; + this.activate = activate; + this.activityTime = activityTime; + } + + @Override + public UInteger getUid() { + return this.uid; + } + + @Override + public void setUid(UInteger uid) { + this.uid = uid; + } + + @Override + public UInteger getWid() { + return this.wid; + } + + @Override + public void setWid(UInteger wid) { + this.wid = wid; + } + + @Override + public String getIp() { + return this.ip; + } + + @Override + public void setIp(String ip) { + this.ip = ip; + } + + @Override + public String getActivate() { + return this.activate; + } + + @Override + public void setActivate(String activate) { + this.activate = activate; + } + + @Override + public Timestamp getActivityTime() { + return this.activityTime; + } + + @Override + public void setActivityTime(Timestamp activityTime) { + this.activityTime = activityTime; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("UserActivity ("); + + sb.append(uid); + sb.append(", ").append(wid); + sb.append(", ").append(ip); + sb.append(", ").append(activate); + sb.append(", ").append(activityTime); + + sb.append(")"); + return sb.toString(); + } + + // ------------------------------------------------------------------------- + // FROM and INTO + // ------------------------------------------------------------------------- + + @Override + public void from(IUserActivity from) { + setUid(from.getUid()); + setWid(from.getWid()); + setIp(from.getIp()); + setActivate(from.getActivate()); + setActivityTime(from.getActivityTime()); + } + + @Override + public E into(E into) { + into.from(this); + return into; + } +} diff --git a/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/records/UserActivityRecord.java b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/records/UserActivityRecord.java new file mode 100644 index 00000000000..72586b8af13 --- /dev/null +++ b/core/amber/src/main/scala/edu/uci/ics/texera/web/model/jooq/generated/tables/records/UserActivityRecord.java @@ -0,0 +1,278 @@ +/* + * This file is generated by jOOQ. + */ +package edu.uci.ics.texera.web.model.jooq.generated.tables.records; + + +import edu.uci.ics.texera.web.model.jooq.generated.tables.UserActivity; +import edu.uci.ics.texera.web.model.jooq.generated.tables.interfaces.IUserActivity; + +import java.sql.Timestamp; + +import org.jooq.Field; +import org.jooq.Record5; +import org.jooq.Row5; +import org.jooq.impl.TableRecordImpl; +import org.jooq.types.UInteger; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class UserActivityRecord extends TableRecordImpl implements Record5, IUserActivity { + + private static final long serialVersionUID = -407108724; + + /** + * Setter for texera_db.user_activity.uid. + */ + @Override + public void setUid(UInteger value) { + set(0, value); + } + + /** + * Getter for texera_db.user_activity.uid. + */ + @Override + public UInteger getUid() { + return (UInteger) get(0); + } + + /** + * Setter for texera_db.user_activity.wid. + */ + @Override + public void setWid(UInteger value) { + set(1, value); + } + + /** + * Getter for texera_db.user_activity.wid. + */ + @Override + public UInteger getWid() { + return (UInteger) get(1); + } + + /** + * Setter for texera_db.user_activity.ip. + */ + @Override + public void setIp(String value) { + set(2, value); + } + + /** + * Getter for texera_db.user_activity.ip. + */ + @Override + public String getIp() { + return (String) get(2); + } + + /** + * Setter for texera_db.user_activity.activate. + */ + @Override + public void setActivate(String value) { + set(3, value); + } + + /** + * Getter for texera_db.user_activity.activate. + */ + @Override + public String getActivate() { + return (String) get(3); + } + + /** + * Setter for texera_db.user_activity.activity_time. + */ + @Override + public void setActivityTime(Timestamp value) { + set(4, value); + } + + /** + * Getter for texera_db.user_activity.activity_time. + */ + @Override + public Timestamp getActivityTime() { + return (Timestamp) get(4); + } + + // ------------------------------------------------------------------------- + // Record5 type implementation + // ------------------------------------------------------------------------- + + @Override + public Row5 fieldsRow() { + return (Row5) super.fieldsRow(); + } + + @Override + public Row5 valuesRow() { + return (Row5) super.valuesRow(); + } + + @Override + public Field field1() { + return UserActivity.USER_ACTIVITY.UID; + } + + @Override + public Field field2() { + return UserActivity.USER_ACTIVITY.WID; + } + + @Override + public Field field3() { + return UserActivity.USER_ACTIVITY.IP; + } + + @Override + public Field field4() { + return UserActivity.USER_ACTIVITY.ACTIVATE; + } + + @Override + public Field field5() { + return UserActivity.USER_ACTIVITY.ACTIVITY_TIME; + } + + @Override + public UInteger component1() { + return getUid(); + } + + @Override + public UInteger component2() { + return getWid(); + } + + @Override + public String component3() { + return getIp(); + } + + @Override + public String component4() { + return getActivate(); + } + + @Override + public Timestamp component5() { + return getActivityTime(); + } + + @Override + public UInteger value1() { + return getUid(); + } + + @Override + public UInteger value2() { + return getWid(); + } + + @Override + public String value3() { + return getIp(); + } + + @Override + public String value4() { + return getActivate(); + } + + @Override + public Timestamp value5() { + return getActivityTime(); + } + + @Override + public UserActivityRecord value1(UInteger value) { + setUid(value); + return this; + } + + @Override + public UserActivityRecord value2(UInteger value) { + setWid(value); + return this; + } + + @Override + public UserActivityRecord value3(String value) { + setIp(value); + return this; + } + + @Override + public UserActivityRecord value4(String value) { + setActivate(value); + return this; + } + + @Override + public UserActivityRecord value5(Timestamp value) { + setActivityTime(value); + return this; + } + + @Override + public UserActivityRecord values(UInteger value1, UInteger value2, String value3, String value4, Timestamp value5) { + value1(value1); + value2(value2); + value3(value3); + value4(value4); + value5(value5); + return this; + } + + // ------------------------------------------------------------------------- + // FROM and INTO + // ------------------------------------------------------------------------- + + @Override + public void from(IUserActivity from) { + setUid(from.getUid()); + setWid(from.getWid()); + setIp(from.getIp()); + setActivate(from.getActivate()); + setActivityTime(from.getActivityTime()); + } + + @Override + public E into(E into) { + into.from(this); + return into; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached UserActivityRecord + */ + public UserActivityRecord() { + super(UserActivity.USER_ACTIVITY); + } + + /** + * Create a detached, initialised UserActivityRecord + */ + public UserActivityRecord(UInteger uid, UInteger wid, String ip, String activate, Timestamp activityTime) { + super(UserActivity.USER_ACTIVITY); + + set(0, uid); + set(1, wid); + set(2, ip); + set(3, activate); + set(4, activityTime); + } +} diff --git a/core/scripts/sql/texera_ddl.sql b/core/scripts/sql/texera_ddl.sql index eb2296ffe47..3ce3aa46ccf 100644 --- a/core/scripts/sql/texera_ddl.sql +++ b/core/scripts/sql/texera_ddl.sql @@ -227,4 +227,12 @@ CREATE TABLE IF NOT EXISTS workflow_user_clones PRIMARY KEY (`uid`, `wid`), FOREIGN KEY (`uid`) REFERENCES `user` (`uid`) ON DELETE CASCADE, FOREIGN KEY (`wid`) REFERENCES `workflow` (`wid`) ON DELETE CASCADE + ) ENGINE = INNODB; + +CREATE TABLE IF NOT EXISTS user_activity ( + `uid` INT UNSIGNED NOT NULL DEFAULT 0, + `wid` INT UNSIGNED NOT NULL, + `ip` VARCHAR(15) DEFAULT NULL, + `activate` VARCHAR(10) NOT NULL, + `activity_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE = INNODB; \ No newline at end of file diff --git a/core/scripts/sql/update/16.sql b/core/scripts/sql/update/16.sql index ddf34605f91..a6ef8c3c798 100644 --- a/core/scripts/sql/update/16.sql +++ b/core/scripts/sql/update/16.sql @@ -15,4 +15,12 @@ CREATE TABLE IF NOT EXISTS workflow_user_clones PRIMARY KEY (`uid`, `wid`), FOREIGN KEY (`uid`) REFERENCES `user` (`uid`) ON DELETE CASCADE, FOREIGN KEY (`wid`) REFERENCES `workflow` (`wid`) ON DELETE CASCADE + ) ENGINE = INNODB; + +CREATE TABLE IF NOT EXISTS user_activity ( + `uid` INT UNSIGNED NOT NULL DEFAULT 0, + `wid` INT UNSIGNED NOT NULL, + `ip` VARCHAR(15) DEFAULT NULL, + `activate` VARCHAR(10) NOT NULL, + `activity_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE = INNODB; \ No newline at end of file diff --git a/core/util/conf/jooq-conf.xml b/core/util/conf/jooq-conf.xml index 0e2b5d33d14..5110bc11d91 100644 --- a/core/util/conf/jooq-conf.xml +++ b/core/util/conf/jooq-conf.xml @@ -39,7 +39,7 @@ edu.uci.ics.texera.web.model.jooq.generated - core/amber/src/main/scala + ../amber/src/main/scala diff --git a/core/util/src/main/java/edu/uci/ics/util/RunCodegen.java b/core/util/src/main/java/edu/uci/ics/util/RunCodegen.java index 3db167a5ba9..5e5193a8af0 100644 --- a/core/util/src/main/java/edu/uci/ics/util/RunCodegen.java +++ b/core/util/src/main/java/edu/uci/ics/util/RunCodegen.java @@ -25,10 +25,10 @@ public class RunCodegen { public static void main(String[] args) throws Exception { - Path jooqXmlPath = Path.of("core").resolve("util").resolve("conf").resolve("jooq-conf.xml"); + Path jooqXmlPath = Path.of("conf").resolve("jooq-conf.xml"); Configuration jooqConfig = GenerationTool.load(Files.newInputStream(jooqXmlPath)); - Path jdbcConfPath = Path.of("core").resolve("amber").resolve("src").resolve("main").resolve("resources").resolve("application.conf"); + Path jdbcConfPath = Path.of("..").resolve("amber").resolve("src").resolve("main").resolve("resources").resolve("application.conf"); Config jdbcConfig = ConfigFactory.parseFile(jdbcConfPath.toFile()); Jdbc jooqJdbcConfig = new Jdbc(); From b047928319070373d2372e770a374986456b5948 Mon Sep 17 00:00:00 2001 From: gspikehalo <2318002579@qq.com> Date: Tue, 15 Oct 2024 23:21:34 -0700 Subject: [PATCH 33/44] Add records for like, unlike, and clone in the user_activity table --- .../hub/workflow/HubWorkflowResource.scala | 44 ++++++++++++++++++- .../user/workflow/WorkflowResource.scala | 14 +++--- 2 files changed, 49 insertions(+), 9 deletions(-) diff --git a/core/amber/src/main/scala/edu/uci/ics/texera/web/resource/dashboard/hub/workflow/HubWorkflowResource.scala b/core/amber/src/main/scala/edu/uci/ics/texera/web/resource/dashboard/hub/workflow/HubWorkflowResource.scala index be950997b5b..664cb3b2c88 100644 --- a/core/amber/src/main/scala/edu/uci/ics/texera/web/resource/dashboard/hub/workflow/HubWorkflowResource.scala +++ b/core/amber/src/main/scala/edu/uci/ics/texera/web/resource/dashboard/hub/workflow/HubWorkflowResource.scala @@ -6,6 +6,7 @@ import edu.uci.ics.texera.web.model.jooq.generated.Tables._ import edu.uci.ics.texera.web.model.jooq.generated.enums.UserRole import edu.uci.ics.texera.web.model.jooq.generated.tables.daos.WorkflowDao import edu.uci.ics.texera.web.model.jooq.generated.tables.pojos.{User, Workflow} +import edu.uci.ics.texera.web.resource.dashboard.hub.workflow.HubWorkflowResource.recordUserActivity import edu.uci.ics.texera.web.resource.dashboard.user.workflow.WorkflowAccessResource import edu.uci.ics.texera.web.resource.dashboard.user.workflow.WorkflowResource.WorkflowWithPrivilege @@ -14,6 +15,41 @@ import javax.ws.rs._ import javax.ws.rs.core.MediaType import org.jooq.types.UInteger +import java.util.regex.Pattern +import javax.servlet.http.HttpServletRequest +import javax.ws.rs.core.Context + + +object HubWorkflowResource { + final private lazy val context = SqlServer.createDSLContext() + + final private val ipv4Pattern: Pattern = Pattern.compile( + "^([0-9]{1,3}\\.){3}[0-9]{1,3}$" + ) + + def recordUserActivity(request: HttpServletRequest, userId: UInteger = UInteger.valueOf(0), workflowId: UInteger, action: String): Unit = { + val userIp = request.getRemoteAddr() +// println(s"User IP from getRemoteAddr: $userIp") + + if (ipv4Pattern.matcher(userIp).matches()) { + context + .insertInto(USER_ACTIVITY) + .set(USER_ACTIVITY.UID, userId) + .set(USER_ACTIVITY.WID, workflowId) + .set(USER_ACTIVITY.IP, userIp) + .set(USER_ACTIVITY.ACTIVATE, action) + .execute() + } else { + context + .insertInto(USER_ACTIVITY) + .set(USER_ACTIVITY.UID, userId) + .set(USER_ACTIVITY.WID, workflowId) + .set(USER_ACTIVITY.ACTIVATE, action) + .execute() + } + } +} + @Produces(Array(MediaType.APPLICATION_JSON)) @Path("/hub/workflow") class HubWorkflowResource { @@ -127,7 +163,7 @@ class HubWorkflowResource { @POST @Path("/like") @Consumes(Array(MediaType.APPLICATION_JSON)) - def likeWorkflow(likeRequest: Array[UInteger]): Boolean = { + def likeWorkflow(@Context request: HttpServletRequest, likeRequest: Array[UInteger]): Boolean = { if (likeRequest.length != 2) { return false } @@ -150,6 +186,8 @@ class HubWorkflowResource { .set(WORKFLOW_USER_LIKES.UID, userId) .set(WORKFLOW_USER_LIKES.WID, workflowId) .execute() + + recordUserActivity(request, userId, workflowId, "like") true } else { false @@ -159,7 +197,7 @@ class HubWorkflowResource { @POST @Path("/unlike") @Consumes(Array(MediaType.APPLICATION_JSON)) - def unlikeWorkflow(likeRequest: Array[UInteger]): Boolean = { + def unlikeWorkflow(@Context request: HttpServletRequest, likeRequest: Array[UInteger]): Boolean = { if (likeRequest.length != 2) { return false } @@ -185,6 +223,8 @@ class HubWorkflowResource { .and(WORKFLOW_USER_LIKES.WID.eq(workflowId)) ) .execute() + + recordUserActivity(request, userId, workflowId, "unlike") true } else { false diff --git a/core/amber/src/main/scala/edu/uci/ics/texera/web/resource/dashboard/user/workflow/WorkflowResource.scala b/core/amber/src/main/scala/edu/uci/ics/texera/web/resource/dashboard/user/workflow/WorkflowResource.scala index a3b24a1dfaf..7a0666ddf52 100644 --- a/core/amber/src/main/scala/edu/uci/ics/texera/web/resource/dashboard/user/workflow/WorkflowResource.scala +++ b/core/amber/src/main/scala/edu/uci/ics/texera/web/resource/dashboard/user/workflow/WorkflowResource.scala @@ -5,13 +5,9 @@ import edu.uci.ics.texera.web.SqlServer import edu.uci.ics.texera.web.auth.SessionUser import edu.uci.ics.texera.web.model.jooq.generated.Tables._ import edu.uci.ics.texera.web.model.jooq.generated.enums.WorkflowUserAccessPrivilege -import edu.uci.ics.texera.web.model.jooq.generated.tables.daos.{ - WorkflowDao, - WorkflowOfProjectDao, - WorkflowOfUserDao, - WorkflowUserAccessDao -} +import edu.uci.ics.texera.web.model.jooq.generated.tables.daos.{WorkflowDao, WorkflowOfProjectDao, WorkflowOfUserDao, WorkflowUserAccessDao} import edu.uci.ics.texera.web.model.jooq.generated.tables.pojos._ +import edu.uci.ics.texera.web.resource.dashboard.hub.workflow.HubWorkflowResource.recordUserActivity import edu.uci.ics.texera.web.resource.dashboard.user.workflow.WorkflowAccessResource.hasReadAccess import edu.uci.ics.texera.web.resource.dashboard.user.workflow.WorkflowResource._ import io.dropwizard.auth.Auth @@ -27,6 +23,8 @@ import javax.ws.rs.core.MediaType import scala.collection.mutable.ListBuffer import scala.jdk.CollectionConverters.IterableHasAsScala import scala.util.control.NonFatal +import javax.servlet.http.HttpServletRequest +import javax.ws.rs.core.Context /** * This file handles various request related to saved-workflows. @@ -393,7 +391,7 @@ class WorkflowResource extends LazyLogging { @Consumes(Array(MediaType.APPLICATION_JSON)) @Produces(Array(MediaType.APPLICATION_JSON)) @Path("/clone/{wid}") - def cloneWorkflow(@PathParam("wid") wid: UInteger, @Auth sessionUser: SessionUser): UInteger = { + def cloneWorkflow(@PathParam("wid") wid: UInteger, @Auth sessionUser: SessionUser, @Context request: HttpServletRequest): UInteger = { val workflow: Workflow = workflowDao.fetchOneByWid(wid) val newWorkflow: DashboardWorkflow = createWorkflow( new Workflow( @@ -408,6 +406,8 @@ class WorkflowResource extends LazyLogging { sessionUser ) + recordUserActivity(request, sessionUser.getUid, wid, "clone") + val existingCloneRecord = context .selectFrom(WORKFLOW_USER_CLONES) .where(WORKFLOW_USER_CLONES.UID.eq(sessionUser.getUid)) From abb873261d04d13fa022b52d4e8b83fe954ac33c Mon Sep 17 00:00:00 2001 From: gspikehalo <2318002579@qq.com> Date: Tue, 15 Oct 2024 23:24:42 -0700 Subject: [PATCH 34/44] fmt fix --- .../hub/workflow/HubWorkflowResource.scala | 13 ++++++++++--- .../dashboard/user/workflow/WorkflowResource.scala | 13 +++++++++++-- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/core/amber/src/main/scala/edu/uci/ics/texera/web/resource/dashboard/hub/workflow/HubWorkflowResource.scala b/core/amber/src/main/scala/edu/uci/ics/texera/web/resource/dashboard/hub/workflow/HubWorkflowResource.scala index 664cb3b2c88..229d9edcf3f 100644 --- a/core/amber/src/main/scala/edu/uci/ics/texera/web/resource/dashboard/hub/workflow/HubWorkflowResource.scala +++ b/core/amber/src/main/scala/edu/uci/ics/texera/web/resource/dashboard/hub/workflow/HubWorkflowResource.scala @@ -19,7 +19,6 @@ import java.util.regex.Pattern import javax.servlet.http.HttpServletRequest import javax.ws.rs.core.Context - object HubWorkflowResource { final private lazy val context = SqlServer.createDSLContext() @@ -27,7 +26,12 @@ object HubWorkflowResource { "^([0-9]{1,3}\\.){3}[0-9]{1,3}$" ) - def recordUserActivity(request: HttpServletRequest, userId: UInteger = UInteger.valueOf(0), workflowId: UInteger, action: String): Unit = { + def recordUserActivity( + request: HttpServletRequest, + userId: UInteger = UInteger.valueOf(0), + workflowId: UInteger, + action: String + ): Unit = { val userIp = request.getRemoteAddr() // println(s"User IP from getRemoteAddr: $userIp") @@ -197,7 +201,10 @@ class HubWorkflowResource { @POST @Path("/unlike") @Consumes(Array(MediaType.APPLICATION_JSON)) - def unlikeWorkflow(@Context request: HttpServletRequest, likeRequest: Array[UInteger]): Boolean = { + def unlikeWorkflow( + @Context request: HttpServletRequest, + likeRequest: Array[UInteger] + ): Boolean = { if (likeRequest.length != 2) { return false } diff --git a/core/amber/src/main/scala/edu/uci/ics/texera/web/resource/dashboard/user/workflow/WorkflowResource.scala b/core/amber/src/main/scala/edu/uci/ics/texera/web/resource/dashboard/user/workflow/WorkflowResource.scala index 7a0666ddf52..e81d6f14d29 100644 --- a/core/amber/src/main/scala/edu/uci/ics/texera/web/resource/dashboard/user/workflow/WorkflowResource.scala +++ b/core/amber/src/main/scala/edu/uci/ics/texera/web/resource/dashboard/user/workflow/WorkflowResource.scala @@ -5,7 +5,12 @@ import edu.uci.ics.texera.web.SqlServer import edu.uci.ics.texera.web.auth.SessionUser import edu.uci.ics.texera.web.model.jooq.generated.Tables._ import edu.uci.ics.texera.web.model.jooq.generated.enums.WorkflowUserAccessPrivilege -import edu.uci.ics.texera.web.model.jooq.generated.tables.daos.{WorkflowDao, WorkflowOfProjectDao, WorkflowOfUserDao, WorkflowUserAccessDao} +import edu.uci.ics.texera.web.model.jooq.generated.tables.daos.{ + WorkflowDao, + WorkflowOfProjectDao, + WorkflowOfUserDao, + WorkflowUserAccessDao +} import edu.uci.ics.texera.web.model.jooq.generated.tables.pojos._ import edu.uci.ics.texera.web.resource.dashboard.hub.workflow.HubWorkflowResource.recordUserActivity import edu.uci.ics.texera.web.resource.dashboard.user.workflow.WorkflowAccessResource.hasReadAccess @@ -391,7 +396,11 @@ class WorkflowResource extends LazyLogging { @Consumes(Array(MediaType.APPLICATION_JSON)) @Produces(Array(MediaType.APPLICATION_JSON)) @Path("/clone/{wid}") - def cloneWorkflow(@PathParam("wid") wid: UInteger, @Auth sessionUser: SessionUser, @Context request: HttpServletRequest): UInteger = { + def cloneWorkflow( + @PathParam("wid") wid: UInteger, + @Auth sessionUser: SessionUser, + @Context request: HttpServletRequest + ): UInteger = { val workflow: Workflow = workflowDao.fetchOneByWid(wid) val newWorkflow: DashboardWorkflow = createWorkflow( new Workflow( From d0f213651380f6d1002cd937f7c02b2760806d26 Mon Sep 17 00:00:00 2001 From: gspikehalo <2318002579@qq.com> Date: Wed, 16 Oct 2024 16:10:19 -0700 Subject: [PATCH 35/44] fmt fix --- .../resource/dashboard/hub/workflow/HubWorkflowResource.scala | 1 - 1 file changed, 1 deletion(-) diff --git a/core/amber/src/main/scala/edu/uci/ics/texera/web/resource/dashboard/hub/workflow/HubWorkflowResource.scala b/core/amber/src/main/scala/edu/uci/ics/texera/web/resource/dashboard/hub/workflow/HubWorkflowResource.scala index 5ec97040a13..121fff6da9b 100644 --- a/core/amber/src/main/scala/edu/uci/ics/texera/web/resource/dashboard/hub/workflow/HubWorkflowResource.scala +++ b/core/amber/src/main/scala/edu/uci/ics/texera/web/resource/dashboard/hub/workflow/HubWorkflowResource.scala @@ -357,4 +357,3 @@ class HubWorkflowResource { fetchDashboardWorkflowsByWids(topClonedWorkflowsWids) } } - From 76f34acabbc939ac04720b2286e8dbf24deb281b Mon Sep 17 00:00:00 2001 From: shenghao fu <2318002579@qq.com> Date: Thu, 17 Oct 2024 18:00:29 -0700 Subject: [PATCH 36/44] quick fix --- core/util/conf/jooq-conf.xml | 2 +- core/util/src/main/java/edu/uci/ics/util/RunCodegen.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/util/conf/jooq-conf.xml b/core/util/conf/jooq-conf.xml index 5110bc11d91..0e2b5d33d14 100644 --- a/core/util/conf/jooq-conf.xml +++ b/core/util/conf/jooq-conf.xml @@ -39,7 +39,7 @@ edu.uci.ics.texera.web.model.jooq.generated - ../amber/src/main/scala + core/amber/src/main/scala diff --git a/core/util/src/main/java/edu/uci/ics/util/RunCodegen.java b/core/util/src/main/java/edu/uci/ics/util/RunCodegen.java index 5e5193a8af0..3db167a5ba9 100644 --- a/core/util/src/main/java/edu/uci/ics/util/RunCodegen.java +++ b/core/util/src/main/java/edu/uci/ics/util/RunCodegen.java @@ -25,10 +25,10 @@ public class RunCodegen { public static void main(String[] args) throws Exception { - Path jooqXmlPath = Path.of("conf").resolve("jooq-conf.xml"); + Path jooqXmlPath = Path.of("core").resolve("util").resolve("conf").resolve("jooq-conf.xml"); Configuration jooqConfig = GenerationTool.load(Files.newInputStream(jooqXmlPath)); - Path jdbcConfPath = Path.of("..").resolve("amber").resolve("src").resolve("main").resolve("resources").resolve("application.conf"); + Path jdbcConfPath = Path.of("core").resolve("amber").resolve("src").resolve("main").resolve("resources").resolve("application.conf"); Config jdbcConfig = ConfigFactory.parseFile(jdbcConfPath.toFile()); Jdbc jooqJdbcConfig = new Jdbc(); From 6fc0a0fc6461d3073c6a2fb58b13e5ae908028ed Mon Sep 17 00:00:00 2001 From: shenghao fu <2318002579@qq.com> Date: Mon, 21 Oct 2024 13:30:32 -0700 Subject: [PATCH 37/44] add animation to card --- .../component/dashboard.component.html | 4 +- .../component/dashboard.component.ts | 31 ++++-- .../browse-section.component.scss | 95 +++++++++++++++++++ 3 files changed, 118 insertions(+), 12 deletions(-) diff --git a/core/gui/src/app/dashboard/component/dashboard.component.html b/core/gui/src/app/dashboard/component/dashboard.component.html index d8281f671cc..34ea6c5b32f 100644 --- a/core/gui/src/app/dashboard/component/dashboard.component.html +++ b/core/gui/src/app/dashboard/component/dashboard.component.html @@ -142,14 +142,14 @@