From 32a6e437ae6ad809232c7aa24db8f06bc6a3a62a Mon Sep 17 00:00:00 2001 From: Huey Yao Date: Fri, 31 May 2024 14:42:39 +0800 Subject: [PATCH] new features: add distributed scheduling support. (#3725) --- spring-cloud-alibaba-dependencies/pom.xml | 25 + spring-cloud-alibaba-examples/pom.xml | 5 +- .../README-en.md | 101 ++ .../spring-cloud-scheduling-example/README.md | 100 ++ .../images/idea-server-port.png | Bin 0 -> 586685 bytes .../spring-cloud-scheduling-example/pom.xml | 65 + .../schedule/ScheduleApplication.java | 36 + .../examples/schedule/job/SimpleJob.java | 57 + .../resources/application-schedulerx.yaml | 17 + .../main/resources/application-shedlock.yaml | 13 + .../src/main/resources/application.yaml | 17 + spring-cloud-alibaba-starters/pom.xml | 1 + .../pom.xml | 70 + .../cloud/scheduling/SchedulingConstants.java | 38 + .../scheduling/schedulerx/JobProperty.java | 151 ++ .../schedulerx/SchedulerxAutoConfigure.java | 36 + .../schedulerx/SchedulerxConfigurations.java | 178 ++ .../schedulerx/SchedulerxProperties.java | 786 +++++++++ .../constants/SchedulerxConstants.java | 85 + .../schedulerx/service/JobSyncService.java | 435 +++++ .../service/ScheduledJobSyncConfigurer.java | 194 +++ .../schedulerx/util/CronExpression.java | 1540 +++++++++++++++++ .../shedlock/ShedLockAutoConfigure.java | 69 + .../main/resources/META-INF/spring.factories | 3 + .../shedlock/schema/schema-mysql.sql | 2 + .../schedulerx/util/CronExpressionTest.java | 73 + 26 files changed, 4094 insertions(+), 3 deletions(-) create mode 100644 spring-cloud-alibaba-examples/spring-cloud-scheduling-example/README-en.md create mode 100644 spring-cloud-alibaba-examples/spring-cloud-scheduling-example/README.md create mode 100644 spring-cloud-alibaba-examples/spring-cloud-scheduling-example/images/idea-server-port.png create mode 100644 spring-cloud-alibaba-examples/spring-cloud-scheduling-example/pom.xml create mode 100644 spring-cloud-alibaba-examples/spring-cloud-scheduling-example/src/main/java/com/alibaba/cloud/examples/schedule/ScheduleApplication.java create mode 100644 spring-cloud-alibaba-examples/spring-cloud-scheduling-example/src/main/java/com/alibaba/cloud/examples/schedule/job/SimpleJob.java create mode 100644 spring-cloud-alibaba-examples/spring-cloud-scheduling-example/src/main/resources/application-schedulerx.yaml create mode 100644 spring-cloud-alibaba-examples/spring-cloud-scheduling-example/src/main/resources/application-shedlock.yaml create mode 100644 spring-cloud-alibaba-examples/spring-cloud-scheduling-example/src/main/resources/application.yaml create mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/pom.xml create mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/SchedulingConstants.java create mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/schedulerx/JobProperty.java create mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/schedulerx/SchedulerxAutoConfigure.java create mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/schedulerx/SchedulerxConfigurations.java create mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/schedulerx/SchedulerxProperties.java create mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/schedulerx/constants/SchedulerxConstants.java create mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/schedulerx/service/JobSyncService.java create mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/schedulerx/service/ScheduledJobSyncConfigurer.java create mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/schedulerx/util/CronExpression.java create mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/shedlock/ShedLockAutoConfigure.java create mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/resources/META-INF/spring.factories create mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/resources/shedlock/schema/schema-mysql.sql create mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/test/java/com/alibaba/cloud/scheduling/schedulerx/util/CronExpressionTest.java diff --git a/spring-cloud-alibaba-dependencies/pom.xml b/spring-cloud-alibaba-dependencies/pom.xml index cd1dd63b6..86a9268c8 100644 --- a/spring-cloud-alibaba-dependencies/pom.xml +++ b/spring-cloud-alibaba-dependencies/pom.xml @@ -23,6 +23,8 @@ 1.6.1 1.8.6 1.0.11 + 4.23.0 + 1.11.4 2.2.1 @@ -160,6 +162,23 @@ ${seata.version} + + + net.javacrumbs.shedlock + shedlock-spring + ${shedlock.version} + + + net.javacrumbs.shedlock + shedlock-provider-jdbc-template + ${shedlock.version} + + + com.aliyun.schedulerx + schedulerx2-worker + ${schedulerx.worker.version} + + com.alibaba.cloud @@ -251,6 +270,12 @@ ${revision} + + com.alibaba.cloud + spring-cloud-starter-alibaba-schedulerx + ${revision} + + com.alibaba.spring spring-context-support diff --git a/spring-cloud-alibaba-examples/pom.xml b/spring-cloud-alibaba-examples/pom.xml index a7b5aecb6..06b6e9531 100644 --- a/spring-cloud-alibaba-examples/pom.xml +++ b/spring-cloud-alibaba-examples/pom.xml @@ -46,7 +46,7 @@ rocketmq-example/rocketmq-tx-example rocketmq-example/rocketmq-pollable-consume-example rocketmq-example/rocketmq-retrieable-consume-example - + spring-cloud-scheduling-example spring-cloud-bus-rocketmq-example spring-cloud-alibaba-sidecar-examples/spring-cloud-alibaba-sidecar-nacos-example spring-cloud-alibaba-sidecar-examples/spring-cloud-alibaba-sidecar-consul-example @@ -57,7 +57,7 @@ integrated-example/integrated-praise-provider integrated-example/integrated-praise-consumer integrated-example/integrated-common - integrated-example/integrated-frontend + integrated-example/integrated-frontend governance-example/label-routing-example/istio-consumer-example governance-example/label-routing-example/opensergo-consumer-example governance-example/label-routing-example/consumer-example @@ -65,7 +65,6 @@ governance-example/label-routing-example/provider-version-example governance-example/authentication-example/istio-authentication-provider-mvc-example governance-example/authentication-example/istio-authentication-provider-webflux-example - diff --git a/spring-cloud-alibaba-examples/spring-cloud-scheduling-example/README-en.md b/spring-cloud-alibaba-examples/spring-cloud-scheduling-example/README-en.md new file mode 100644 index 000000000..2b8183a38 --- /dev/null +++ b/spring-cloud-alibaba-examples/spring-cloud-scheduling-example/README-en.md @@ -0,0 +1,101 @@ +# Spring Cloud Alibaba Scheduling Example + +## Project description + +Spring Cloud Alibaba Scheduling provides a timing task scheduling capability based on Spring Scheduling, supporting distributed scenarios for timing task scheduling. It offers a quick integration solution for timing task scheduling services in distributed scenarios. + +The current offering is based on the open-source ShedLock for distributed lock acquisition, along with Alibaba Cloud's SchedulerX service [quick start](https://sca.aliyun.com/en/docs/2023/user-guide/schedulerx/quick-start/), Subsequent releases will provide access to more open-source solutions implementations. + +## Project dependencies + +### Access `spring-cloud-starter-alibaba-schedulerx` + +Add the following dependencies to the project `pom.xml`: + + ```xml + + com.alibaba.cloud + spring-cloud-starter-alibaba-schedulerx + + ``` + +## Project config description + +In the Example project, two types of integration configuration modes are provided for `shedlock` and `schedulerx`, Select the required access mode configuration file in `application.yaml`, the example defaults to the shedlock solution. + +### Solution 1. Distributed shedlock integration configuration + +Edit the following configuration to the `application-schedulerx.yml`: + ```yaml + spring: + cloud: + scheduling: + # Distributed mode: shedlock, schedulerx + # Set config value: shedlock + distributed-mode: shedlock + datasource: + driver-class: com.mysql.cj.jdbc.Driver + url: {jdbc_url} + username: {jdbc.username} + password: {jdbc.password} + ``` +You should replace `{jdbc_url}`,`{jdbc.username}`, and `{jdbc.password}` with your actual database connection information. + +>️ Precautions:If there's no database instance can be used, please create a database instance first. + +### Solution 2. Alibaba Cloud's SchedulerX integration configuration +Edit the following configuration to the `application-schedulerx.yml`: + ```yaml + spring: + cloud: + scheduling: + # Distributed mode: shedlock, schedulerx + # Set config value: schedulerx + distributed-mode: schedulerx + schedulerx: + # This configuration is required, Please get it from aliyun schedulerx console + endpoint: acm.aliyun.com + namespace: aad167f6-xxxx-xxxx-xxxx-xxxxxxxxx + groupId: xxxxx + appKey: PZm1XXXXXXXXXXXX + # Optional config, if you need to sync task to schedulerx + # task-sync: true + # region-id: public + # aliyun-access-key: XXXXXXXXXXXX + # aliyun-secret-key: XXXXXXXXXXXX + # task-model-default: standalone + ``` +On Alibaba Cloud service, each account has be granted a free quota for schedulerx. For detailed instructions on how to configure and use cloud product integrations, please refer to the respective product documentation. Refer to: [SchedulerX Spring Task](https://www.alibabacloud.com/help/en/schedulerx/user-guide/spring-jobs) + +## Start application + +After completing the above selection and configuration, simply run the `ScheduleApplication` class in Example to start the application. The `SimpleJob` class in this example project includes two Spring scheduled tasks that run every minute. Upon starting, you can expect to see the following logs: + +```text +2024-05-17T11:20:59.981+08:00 INFO 66613 --- [spring-cloud-alibaba-schedule-example] [ sca-schedule-4] c.a.c.examples.schedule.job.SimpleJob : time=2024-05-17 11:20:59 do job1... +2024-05-17T11:20:59.985+08:00 INFO 66613 --- [spring-cloud-alibaba-schedule-example] [ sca-schedule-1] c.a.c.examples.schedule.job.SimpleJob : time=2024-05-17 11:20:59 do job2... +``` +### Distributed running verification + +Create two application launch configurations in IDEA, each with the startup parameter `--server.port={port}` to start the corresponding application processes. The example project defaults to using `shedlock`, +We can observe that `job1` will be triggered by both applications, whereas `job2` which has been annotated with `@SchedulerLock` will only be triggered in one application at the same time. +![idea-server-port](images/idea-server-port.png) + +- ScheduleApplication-1, startup parameter: `--server.port=18080`, application logs: +```text +2024-05-20T14:02:00.003+08:00 INFO 80520 --- [spring-cloud-alibaba-schedule-example] [ sca-schedule-4] c.a.c.examples.schedule.job.SimpleJob : time=2024-05-20 14:02:00 do job1... +2024-05-20T14:03:00.008+08:00 INFO 80520 --- [spring-cloud-alibaba-schedule-example] [ sca-schedule-4] c.a.c.examples.schedule.job.SimpleJob : time=2024-05-20 14:03:00 do job1... +2024-05-20T14:03:00.008+08:00 INFO 80520 --- [spring-cloud-alibaba-schedule-example] [ sca-schedule-1] c.a.c.examples.schedule.job.SimpleJob : time=2024-05-20 14:03:00 do job2... +2024-05-20T14:04:00.006+08:00 INFO 80520 --- [spring-cloud-alibaba-schedule-example] [ sca-schedule-3] c.a.c.examples.schedule.job.SimpleJob : time=2024-05-20 14:04:00 do job1... +2024-05-20T14:04:00.010+08:00 INFO 80520 --- [spring-cloud-alibaba-schedule-example] [ sca-schedule-2] c.a.c.examples.schedule.job.SimpleJob : time=2024-05-20 14:04:00 do job2... +2024-05-20T14:05:00.003+08:00 INFO 80520 --- [spring-cloud-alibaba-schedule-example] [ sca-schedule-5] c.a.c.examples.schedule.job.SimpleJob : time=2024-05-20 14:05:00 do job1... +``` +- ScheduleApplication-2, startup parameter: `--server.port=18081`, application logs: +```text +2024-05-20T14:02:00.003+08:00 INFO 80596 --- [spring-cloud-alibaba-schedule-example] [ sca-schedule-4] c.a.c.examples.schedule.job.SimpleJob : time=2024-05-20 14:02:00 do job1... +2024-05-20T14:02:00.008+08:00 INFO 80596 --- [spring-cloud-alibaba-schedule-example] [ sca-schedule-3] c.a.c.examples.schedule.job.SimpleJob : time=2024-05-20 14:02:00 do job2... +2024-05-20T14:03:00.004+08:00 INFO 80596 --- [spring-cloud-alibaba-schedule-example] [ sca-schedule-5] c.a.c.examples.schedule.job.SimpleJob : time=2024-05-20 14:03:00 do job1... +2024-05-20T14:04:00.006+08:00 INFO 80596 --- [spring-cloud-alibaba-schedule-example] [ sca-schedule-3] c.a.c.examples.schedule.job.SimpleJob : time=2024-05-20 14:04:00 do job1... +2024-05-20T14:05:00.004+08:00 INFO 80596 --- [spring-cloud-alibaba-schedule-example] [ sca-schedule-2] c.a.c.examples.schedule.job.SimpleJob : time=2024-05-20 14:05:00 do job1... +2024-05-20T14:05:00.007+08:00 INFO 80596 --- [spring-cloud-alibaba-schedule-example] [ sca-schedule-4] c.a.c.examples.schedule.job.SimpleJob : time=2024-05-20 14:05:00 do job2... +``` diff --git a/spring-cloud-alibaba-examples/spring-cloud-scheduling-example/README.md b/spring-cloud-alibaba-examples/spring-cloud-scheduling-example/README.md new file mode 100644 index 000000000..76e7835dc --- /dev/null +++ b/spring-cloud-alibaba-examples/spring-cloud-scheduling-example/README.md @@ -0,0 +1,100 @@ +# Spring Cloud Alibaba Scheduling Example + +## 项目说明 + +Spring Cloud Alibaba Scheduling 提供了基于 Spring Scheduling 的定时任务调度能力,支持分布式场景下的定时任务调度,为分布式场景下的定时任务调度服务提供快速接入方案。 + +目前提供基于开源shedlock分布式抢锁模式,以及阿里云上SchedulerX服务的 [快速接入](https://sca.aliyun.com/docs/2023/user-guide/schedulerx/quick-start/) ,后续将提供更多实现的开源方案接入。 + +## 应用依赖 + +### 接入 `spring-cloud-starter-alibaba-schedulerx` + +在项目 pom.xml 中加入以下依赖: + + ```xml + + com.alibaba.cloud + spring-cloud-starter-alibaba-schedulerx + + ``` + +## 配置说明 + +在Example工程中提供shedlock和schedulerx的两种接入配置模式(***二选一***),在`application.yaml`中选择需要的接入模式配置文件,案例中默认采用开源的shedlock方案。 + +### 方案一、分布式shedlock接入配置说明 + +在 application-schedulerx.yml 配置文件中修改以下配置: + ```yaml + spring: + cloud: + scheduling: + # Distributed mode: shedlock, schedulerx + # Set config value: shedlock + distributed-mode: shedlock + datasource: + driver-class: com.mysql.cj.jdbc.Driver + url: {jdbc_url} + username: {jdbc.username} + password: {jdbc.password} + ``` +使用时请需要替换`{jdbc_url}`、`{jdbc.username}`、`{jdbc.password}`为实际自有的数据库连接信息。 + +>️ 注意:如未创建数据库,请先手动创建数据实例。 + +### 方案二、云产品SchedulerX接入配置说明 +在 application-schedulerx.yml 配置文件中修改以下配置: + ```yaml + spring: + cloud: + scheduling: + # Distributed mode: shedlock, schedulerx + # Set config value: schedulerx + distributed-mode: schedulerx + schedulerx: + # This configuration is required, Please get it from aliyun schedulerx console + endpoint: acm.aliyun.com + namespace: aad167f6-xxxx-xxxx-xxxx-xxxxxxxxx + groupId: xxxxx + appKey: PZm1XXXXXXXXXXXX + # Optional config, if you need to sync task to schedulerx + # task-sync: true + # region-id: public + # aliyun-access-key: XXXXXXXXXXXX + # aliyun-secret-key: XXXXXXXXXXXX + # task-model-default: standalone + ``` +阿里云上产品每个用户开通后都会有免费额度,详细云上产品接入配置使用说明,请参考:[阿里云SchedulerX Spring定时任务](https://help.aliyun.com/zh/schedulerx/user-guide/spring-jobs) + +## 启动应用 + +在完成上述接入选择和配置后,直接运行Example中的 `ScheduleApplication`类即可启动运行。本案例工程中的`SimpleJob`类包含了两个每分钟执行一次的Spring定时任务,启动后可得到如下日志: +```text +2024-05-17T11:20:59.981+08:00 INFO 66613 --- [spring-cloud-alibaba-schedule-example] [ sca-schedule-4] c.a.c.examples.schedule.job.SimpleJob : time=2024-05-17 11:20:59 do job1... +2024-05-17T11:20:59.985+08:00 INFO 66613 --- [spring-cloud-alibaba-schedule-example] [ sca-schedule-1] c.a.c.examples.schedule.job.SimpleJob : time=2024-05-17 11:20:59 do job2... +``` +### 分布式运行验证 + +在IDEA环境中创建两个应用启动项,各自分别配置启动参数`--server.port={应用端口}`,启动相应的应用进程。案例工程默认采用`shedlock`, +我们可以直接看到`job1`两个应用都会同时触发,而`job2`添加了`@SchedulerLock`注解则会同一时间点只会在一个应用进程中执行。 +![idea-server-port](images/idea-server-port.png) + +- ScheduleApplication-1,启动参数:`--server.port=18080`,定时任务运行日志如下: +```text +2024-05-20T14:02:00.003+08:00 INFO 80520 --- [spring-cloud-alibaba-schedule-example] [ sca-schedule-4] c.a.c.examples.schedule.job.SimpleJob : time=2024-05-20 14:02:00 do job1... +2024-05-20T14:03:00.008+08:00 INFO 80520 --- [spring-cloud-alibaba-schedule-example] [ sca-schedule-4] c.a.c.examples.schedule.job.SimpleJob : time=2024-05-20 14:03:00 do job1... +2024-05-20T14:03:00.008+08:00 INFO 80520 --- [spring-cloud-alibaba-schedule-example] [ sca-schedule-1] c.a.c.examples.schedule.job.SimpleJob : time=2024-05-20 14:03:00 do job2... +2024-05-20T14:04:00.006+08:00 INFO 80520 --- [spring-cloud-alibaba-schedule-example] [ sca-schedule-3] c.a.c.examples.schedule.job.SimpleJob : time=2024-05-20 14:04:00 do job1... +2024-05-20T14:04:00.010+08:00 INFO 80520 --- [spring-cloud-alibaba-schedule-example] [ sca-schedule-2] c.a.c.examples.schedule.job.SimpleJob : time=2024-05-20 14:04:00 do job2... +2024-05-20T14:05:00.003+08:00 INFO 80520 --- [spring-cloud-alibaba-schedule-example] [ sca-schedule-5] c.a.c.examples.schedule.job.SimpleJob : time=2024-05-20 14:05:00 do job1... +``` +- ScheduleApplication-2,启动参数:`--server.port=18081`,定时任务运行日志如下: +```text +2024-05-20T14:02:00.003+08:00 INFO 80596 --- [spring-cloud-alibaba-schedule-example] [ sca-schedule-4] c.a.c.examples.schedule.job.SimpleJob : time=2024-05-20 14:02:00 do job1... +2024-05-20T14:02:00.008+08:00 INFO 80596 --- [spring-cloud-alibaba-schedule-example] [ sca-schedule-3] c.a.c.examples.schedule.job.SimpleJob : time=2024-05-20 14:02:00 do job2... +2024-05-20T14:03:00.004+08:00 INFO 80596 --- [spring-cloud-alibaba-schedule-example] [ sca-schedule-5] c.a.c.examples.schedule.job.SimpleJob : time=2024-05-20 14:03:00 do job1... +2024-05-20T14:04:00.006+08:00 INFO 80596 --- [spring-cloud-alibaba-schedule-example] [ sca-schedule-3] c.a.c.examples.schedule.job.SimpleJob : time=2024-05-20 14:04:00 do job1... +2024-05-20T14:05:00.004+08:00 INFO 80596 --- [spring-cloud-alibaba-schedule-example] [ sca-schedule-2] c.a.c.examples.schedule.job.SimpleJob : time=2024-05-20 14:05:00 do job1... +2024-05-20T14:05:00.007+08:00 INFO 80596 --- [spring-cloud-alibaba-schedule-example] [ sca-schedule-4] c.a.c.examples.schedule.job.SimpleJob : time=2024-05-20 14:05:00 do job2... +``` diff --git a/spring-cloud-alibaba-examples/spring-cloud-scheduling-example/images/idea-server-port.png b/spring-cloud-alibaba-examples/spring-cloud-scheduling-example/images/idea-server-port.png new file mode 100644 index 0000000000000000000000000000000000000000..fee23d02470738e3961e440b78603df0ea3b45c1 GIT binary patch literal 586685 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

x)2ztBFnAN(Tbm>xEqxK~GW}qUlaqQg@PMfPIO< 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

U!ep?_uP>#9T4@o)OH^8c>TX|P0Hqh)sVW5F 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

^p2nWx_J?C13Wgh1%0=jUsf*z$1LGlu*cwI`;f zxIdS!|9I4pcE`q&zI^x6i^XXf(`w?n?#H1)w2o(wZe=GLReDNWJbpAZB~@a3^>d$R z`C)kzrTZ6s3^tZca^uqdMDn!@kK1$0Nj6Q^+lrn9#*ueZ%%k=MoudVE`X?$lY9`(B zfvm=iOZct%g4}Xm0C9<8`S}}vHt7W}rN6+QYjze{zB=dMMHYP4=nFKoId0}`xZA0D zf$yqngRJu9-+qq#{dAE4`dl~uqM7i{BXd2obq{TwRjjH->~X`zblwR`in**gpNYTC z4D56qCHF+rkD(PE+U4P=2f8(FpXv^|T1NHY+W4w;eNeYGb-B&9iFWJhlgkXL ze|pIla;~|xq=Pgqoe99n_$F=tEF&tHKW zqc0qv$7rSk_UPiCXxo>#RuzyU7xNMN8%%+7RQ0UTONQNkSLmAYuyTHF*p;MeKc9^( z88+Eg$f6GTNHLRn1|!Z(+F8svX?gN-cjC(l$Nj%I(kTbY=#<}kDYEqsNBTaA7Lv6$ z5+Y>>d4UoM@rwY+7;>*kt>3lOUO@b6mqaz4EU9~Z!|hf90boh)5BUN)JM0Qm_z-B@!u zMfv$yn2M9Ku;(CiD>kpc%0J8@%i@Mz7}h&qqP%Hu!WYWd9#r0aedg1F4Zja;|CDC4 zu?Dee{gM*ry-VGdDT1fQw60;d@DF>iI(CDkJzZCBOf2L8__@y1*c@(9=g4F!>7Z^Gvpa}{mjhn z86Jf0=aS(Z(n7;0EA-O&t5|{wCpW|xOfZK_fSFrW;Yz0A>vHt=#S@XB{O2AE@yRNR zEQcfna(BoGmDl$R`(U4!fJW%pg(g*~_7PT{@1`1RF$t)r&ayF)zIF}E7|Sp@2Re)2 zekhl!q+eROgrkC8pfaPb7^87518U)dpZ0(_j#aEd<)SS`$69)D zJbVhHG3t>GtgxLkZbi4bVvYaugJk}vuJ6-EKHo023{72`!hm$5D8ePY9C_R2QTB;q z$Wv+CYbuW{uC46A4q!`%IQMvadP_mg!1#B?FcJz;Vese7(c}Agc*2d$*xM++)$K4p zu@5T%=rcR2|rKER1$gH03k%w7co_s0s?D~gXTyAd4 z)!HIsIz`zlTAt>MXNFXy}Ha`fAh_j^X^m*bCk z$Y-RQ?`vN4pV_|VCGE;A!~OILQW!A2+A;PbBG+h?WIv`6(n5`(v-D{x6hpd*R@%BJ zdE_>WbtnI{VB_zQoMY5>FhXeRXw~_{R zxDZfNFN6ci?n;R=QFVTENf)qqbGUX6lSSg&lCzW~fhM2H3bF0n>}a#|6Q)Pae)o#g z49Vs>S!m7b;t(1$3Nmtgjc3otB6>A&`%LhpSZb)s&5{nm&i9IKtaDp}y#%ReE~HyD z(}{yzqGBkf&sKpmqv&uFy+l75a?AGlM8z;Y^&)}k&yIEfIk0Q8=7?CLst!@X4mIrF zWa$m}k)qAEcfjx0p#;y;?8^B#w%tln7C_90995~75$U*cTN%$@sbWV7Uh8#p(Y!c* zwrc_C5>#B+#`65uuIea&J-`;wHFHSu4FokDrzv1dqOE2H_ZsVYuYvYUmip9r=Fr8{ z%53QciLDls3x{mvE0cOKI^Utlcz+<&c4kXG2W(e3Nx(WmqU%tzquwiC=O~I|B8KAs z?aeJwDC0BjiTk>zjKV9*DKdvm@b40>0dRR)eqBcqvjbZ|xSQVG^i&YIzNGx4E~&mZ z%B4)4*5!wXc`@P{#kQWNlboYP8?@E->t|YSyyhZ+sxB~D?DmDJqdjNRCuHH{!Rua9 z#^rfCmG`gPzQff%Nc6515^3VPl*E!Sg@g|j(e6wOPsH zztDWWq`|02Q#Z_fQ2X(NGAuL1Mx|r^7F2CU?wg{%T;sVqsb*bz$D!^LyZ^CJeNLX? z@tw$}qCLFqX4y5BO9+4o|JxVmYm(FF+6So5={zPP{ClJYWI^4*30Zh~Rv|8T)p^-xpK4PT)9it8GkEs{an{X8E7|jUS-H~_~-+H75zidsm>wA&Z>-xJE zjH{=?pUJ~B#(VqyN0^%=67u_$Z4a)^XgIQh47vZu-5)bCENfq6Ww-MP7YxDb79R~7 z@R>~@`#5LD)h$&`e`mdsNKDTKRpl1F<}WsQ^}iP8hLx)>o%G2d8%Rklh6q=!xlDrW zbj$mmgqjs+?6E5wpqSk9J6PU zBT~Eb3f&Ouv(d*GT22PL+QoeLslf%N8ryT(Agp}dW3~4{k_NvWy?~b=qV?sOcD~2+ z+Z8~rMtD~r)vEVSx~l(PqPZ77v-z*jn+0A2XTT>$al5N?|E1O^-v-v!yc}d2zl>vh zyqU{OIrq^mDZ4ag(MMPg)L`h=+4(w3#0qvtL$|ax()aZjyiTi@*FLV)MpbOT2A= zHvL-Sw5C0Krne4D3LBi@DeEsD?d=i0zi;FWv*pGvNf;o;)M&0)(o%B+cSHWc!A~VR zlg50aW9DLbD8S{s5GBCJ&BdS_FtC4 zbc)X`8JXwdt?O*U@qjHc=wgk71(`bYRA^#nMOjwD9`*?v(bXmy*ujfS*^Yk8f4Jof zmFr1Uj?=uQ%WYt(VC{lilzut(yr!@NapVNUYx`w%dA-Lo7!3UNwm5Yl~ z5xs4Br`t8d=bqHa_h3&B1ui-iL6n=Bx!F^r{e5`qbTyOeIBgg%IH$Ieb-(rqb8gjA z6qCQUti4HNSkIgh?ol{fP%O=b$~~{!sFb(SvY4nvl$EYFyG0(jNcRZ|#hc6pD%-E@=T+*SO6>F;nhDz&cM&Uk zPWbE9pmSRJ=Xrt(2{>c+$boao2%u#ta$90`7l3Ycka|l^RXink0#^=l=lvPx{e_q5@qjK zy)1@*zg8kRqVsBUd}J96*RISEe9^R}DXbg~M8M~)Y^$+O+pw~YynX5JCbnw$#sMzR z!StZ)hxhCpON>79EHj^*c4x>>GFfxL!8H!{*&q1GQnv9Hp}t?Dn5kh?Xei>1wsti%ZI#4{xdnhaabihMmqJQNsN- z{a*_x^vCsbZSNb{gv(>6GLN@^%K&b7EsJo>|DH&qe<$VN?caE40N!u|pE1-gpKl$d z5Ellt*0If-ZC8WCY?h*|)K}2ihps@Ms<=A0Ik~X^(NUT%;J7b=!^M{| zTfLEk;PaL)gjL%H<_Dj2s89I9Ug74dJ|YZ&IQ7@c3t(%3%^&pMrn(mn+bS4+^D^gJ z4ljZ&^rEx3)d#bde+8eG@w%=1yE5Bxnqzse>!K;NU$8H2^*UK5sZ8{eGzRP+mZj;#{t{(i@-DEqOO#ceaHx>I^X`<{SG=D3>$5gvlT=!D80HT77gaO zzm=wJ9`G_}hj}Jx!~w<-1^;I%arYRKkuL?Z3dG zn!x$|*Sd>SR{}NqTyM)37i?lbRLYD2lM7D~C9*FNgk2_eun`&3){i z_@qGAK{eA6%pyb0)GpSI@j<0CD9R_9-^W%K1l|JgekI29IES*fNT2KhrtSYRLN@w$ zwfqWo^S3BMt8Yr(Gi_ex`?9eb*v*xz5#sc3)k<$`^6YKQleB0IoT0`4^k*ZC$}`YO zVUWjSQ@Dm+3D|Mw+aGi!OzTh;f-6ET`Mwv_;f4HAc61u_A`pF=PWAJ+c*y5~ID<%YnFq z3^US~^&}GN3TLIAt6_!WOZlOQGC7B~K(`O0{R}%&QTEHVU*lS97fV8`8&1P}{_lwO z9Gf@R7i?s3NHn|ye9A7|7vhzL`Ax?(NYr;i$Um|HGd%A(7fx27Cl}a9kPHl| zlDHp^A#0LvEen*7&4-e#|IPs}=!M#~zme)-_YZ}k6UIl+xkR3G+%x0m*=_p|(yzTS?AYIAn(mdISh}AZmQ;AV1ra1z_;vx< z^v%++&8k9XBkk@PIy6AEKO&D=ewi}ll=85RcomV4SeEN&#|1LREI5?af**`- z=)wv(kV&k;s*!XSDLS~8Pd5y-9Sg<_Iy_y}Zl;}Ar@!SLV!|I@G^;Z)Xwhi&{~}6e za1Fk=g;%X_ez5D{2tCm}YrnP^a2G9^WQ*xaWzPO-qG{sgMPG@1MJcD}Sz_|veu(wq z<;!jvUtu|hRkeXMb>zCyTx}hb+++R5c*c4J+-<(BS~BB2yq;N%R;8y7#ixrev1|bT zO$W9!tzdpOhC;Tt8+8cn;xl?qSz=P4T2qs3yfAhYH1jVk{T-wKy$+Me@fsLw6xF&jvBLB;&q zPEW9^jQS{hvG@@d*EYv7pT{Ciq@ck(5SCD&a#dp0p;&NV{J(Nd!s*8jVS+z>0$U6A z#+s7$$urD&mm%yabv$fDT>psa!Lb3HxAEzc|IE60J(y7jF*q-I$y47F*qO5*j&-1P?^3}*kv<7}F;_V{&Hh~q-(o=5|W=#o=R zUlGpZ1G^(36y5^Sa^jHLv_`W2KI7?*?l!7IbI$!;3u<`rp0 zD|u;1+lmtFNwTQ`XJx0OZ_&Tis+QR=V8JGmKR8aF0b{Vl6BwMV7gYTcM@QKKOqOL$ z@x{?~|KDBHT9aJJe(9xEBiBA2sxzM*KBp)ir3txe)`7Y|$a7S*+}?%evq}D4{nx4d zGN4tQq4}7@T>BF*;r&PT4f)L`QDSqG3GrN1tFGztB*J^|UK259UPMu-Eke2NuIhXk zk#4><&u6WwCDfq0KvFi@WnB4=FbKVc-XECv^oD}8*zgWCRf1B5!*2?ZJ6{3QFX zu=qUz&)s%7a&);MJ$9DUBmIcQ!T_?CZHk+|$fxKM3>c3m2xaLju4@(tTmWu3=LIDa6dVji2L zaYk@AiJ@$btSr`;&fr3f+n_N8=1mHzZzVYvOm1 z7Ekz1qJU6I^9DymJW|T+M3w~juo@@~@W2PqYMJl8SNz=m%Hdy$k~h^NBH649F$}UB z(mOAwabKWSyFQbJCyT(H6Oz73J$?ZiT7(1egLW{>^|!jKvC@LMO2c#iV3C(p?N`_0 zi+wpG;4WM%EB6GY3rPDNvJYvS@&NFDI&x0&QsTM9u+gL25Xy{vFv8v7KU3NUC4-qo zo{AzS%hi9wH)uG^D%MmN_TCGuvt^WwLDMpi$rd;3N7`R(2(@^;Ro|-xr*6 z{i1U9J={YqFe1`_WvKlq-{Z%M5JIY}Cb2O5t1pA@7mVLnf$cUpI}N@cbZqeIm9X&5 z%;U6D^s*~w&M98@z!sCoj?yiPruJ=NjIV4DI#>tHPyx`7u}@SUCIu!@1que(YrPpl z0X@|0i%_2>0~JYTu$a_9zY<9|q_eAK;GR#}enqhJ8m5GEL`vxL?CN-Uy!b=>QM!lD zPvmFzgrAiFhUZ&)G0~&_QgSPjg+ReL7CMfwiUFL&a>2<8?+|E>jI}s*t*{Uh%chg# zpvdMcd-X?Y)#PgWG585A31TNgbx~SFusG9ht_7^ju;rMGj=6f1syXhR zkbw_+^OqSGm?(P)srVWe{PYHj2$E~}DFc%$?k_@WEv_OiE$FpEoh#vGBE?M58NhF@ zqY_+Ou4=gW)vy&a<}Kv-f9O|pg2xw6SiceU@pocw3Hm~TTtJ|krvj|~Y(GdDpg7rj z1fqj%TfihJa*_L)FU2jegp-Q6_DHy|-LQe*^}F|T2|diMEf)6vXzm+DQ7l(*`{(WQ z>~o$yEMJ3;8j-#1%A@J#tQqi}rw0Tz@dnz?Uykq(1({8|qEgWX|N| zWg73l9V%Hf@^!9ZuGNnx2r<0ad|is!XBm#0L9wWP6CI~v3s7A+g<(9d;0M-Pp6z@u zTsj_>JiP!h+Ek(qrWiJ_kPS@%;JvFx;Bpk9kd2PtBPgjn0{p;49%8LX--Mh*z$1BX z%ZK(bg4cSY;cdt9U!dU;({-q8KnJp)LBogYp05l8aDd}Th43=H zKdz2`K1aO;!Bh+!_AHV(onVHI{{EEcwbNb+28 zq=1*5cKsXbx^Oj+WcR!#LB1aR3^~)F&kGdpDdH($5U)&wXwI2y2eKgAhitFuhh8^O z$X;MI?L=@UJFqK;_3nEFQ8dzX!n6euZr5E>f~6X`p83_`&=7_Io=Dg>{P0J?rU)i- zCS7BKwmZ-&VLYt85TOdxd4~Dab-4+LNE^MkB%FuR5%yei7f$sSk4xDJsy#h}A->91bK0*6WT{rt|ldbvo3UH7} zN_Ie61RbrWq2Laj<6scp1*^N5_Xlu~g=v<9Im8YPlDy$nWa7JE+l5|9WDVpfoZxK$ z(~k-cfZwO#odGz+q4!YeC6h1My}>XJs|!t*5Hnl8{VrH}pa~Du#KRgEBOE~pEt+Zn z^HE#c={{guE(SgX^U2lu>wxHnHb_tc+|}?eiDw|&`n?pM=&U@0>Ex{K>5VI#Z}=Ff z+_@ybUgjECqwMCPvt@aQ!Hh^t-6(Jy2HpUV79Z6u4PMNW3+Z_Vr`t?1x3|Q{Q431$T}Qj0 zZ4*H+O;v4wir6&lF^ae6rTbwBQbMMZ>1h!v<3i{h0M+FnIk}vqH0!eLzYG z!4+PF^|8(2v8*TIt-&*npp9XhT|MB+VT+Tp&_piqiO`)84sZ;u=afO?j>eJNfp&S| z12H0^+QE2)%3+-U@F%%VJY8m76K*bGvwq&Uh&q~QXndr6k_Zfc|F>ZZ7*wvIYMk?D z(jY~PFo1!N^VeWv%+E8N^rlzQcTx}JL}%^&4vK{YFU~6s9)n*k+c5R8w+o6tg6yO7 zEao*7xrA^`OD`h8J_I4fX0Ej$FV+ZT3OWk2|aFknqv2E`ynVEQ1bV{#ki-OX8eKjdAp6nK zRnX$e$Mjr^+JUo;*Q_ZG{D(ue-$muP_?Q7`M`o`yUeLd#u^QT#tYD}G1B8Wz z?A50Jncm`jR_m7F`S=~Xu3+bFjch2j z*(%B=vfcDYw3V%3>c>5$4qU+g=^Su-tYd~^!?wV>Q&oQ8)B4s}L&ZXaAYj;!lERKm z=7Y6L*wFx8hBReY7gxAIy=G%CabVY&D+w>RefMWuq1d>}m$8ax>MPmW`T|V{O%eP0 zE0WYbh)nulxC*NaP7I_%VDSgC4`nb6iDsgNrdM#d;?9J(9!kLVV}I?R{#Aagn=tR9 z1Uqf+BLXSsjyam<&n4Uq34j0OC3z$}Dru%({WNs^Y7If9pE!U4|ByOnLW9C4-!ex3^X~q~ zx``MBh!=eE(!FAQb4H}WnWZ(=9Ipla-iL6@8>l$hRaKS{$Mx)4E|<6QntPXdvtO%O3%woR)NOK9bNV6KGtyZx2 zI}atxpzqg{3o7UnWLhQc@Pqz}ar}^cgrG-wGhW;mN+79dKtMrmORGRjc+m7T-ySwH zTLgdUh|TB%7wJ)mP3))t0;%l1r@bqwlscw)$U0aU+(9pNmlAcMF`0Co;+ z2dpa+qaWJeEhmNksSzkv9w;o5<6X-qVxS?}ga+C|W_ia#YKYWJ;_H4R zS`KY(D)>mkX5UO>5}@O-kC}pWZ{VhFQkRW=RN?BGhW1cQvNyDLV;Ly?O*k+(aEw=w zY#g*UYubqe-sEb?xQYNa^r19H=K?$w{K)$eR2l2JO|{I!b28;Lv`(7tFcii6W zxG)9{s6vgQ&>jn|u;!eArlDWrQ~;*{qaqE17W9T1wgJ}g13sl1JD{>H=F<()LiYbI zBv!})Sqd{BFu$@IBAC{fX?XDhAeSCdYkJY`waF&0~wqa;H+J6e~1dI2;rUCc@gxQOVGgg#Yg9rwblH^k`x#7~tAOTuh@6`|y9a4@U7 z9WXV)8Je7fcmsUM)!>cX81``1yfe#YM?Ob2YfeHb+uz{m^9?Ucv0QHhKr}06KILy7 z;QfF{!7TxFI@E&CF&}vD>_9kV@XjM3OR{W}IVMo?T&s_sg~-p3-GQQfz6t?pOn|1h zjITxuf56DI{jI=k0DT)_3q~w6(8#eIN+=N29!mO^6#F-L`ur3CRn@>`0pJHxXK;=r zad4s%c8Paol$*@HwO&@GBL3_zm|8KMPBeH^h@<=9(h_Y*?!?!LmTcA(% zh~f1cBM<2nGczgrQMrFxSDJh#`hhCg5nOgsRQ`+kpCz4%d^Pizn_m5$*Y6&E`r@&Q zi*H{^n)99i<}JU<-8FvQI&&k+yx6{XAVm~cm*29#W#OQQ9A&;SINEG|Us-#s7Ogrz zgId%zV`I%IbnAGO+to>}jO{Q$4n~oUBSX7z4rI1Krl_EWtZi4M|Q1jw`m5S&_7Ni@9xrX)VU3k%{Tkd4#fpMO{LZ0uy3Yl|lQdTh9jUI@Za@{iP&kjzO(m z)YZWgI>Q-Mi#yy0)20&43z%Zj@Y#k*F9J)MN7vx6uD$p$a~r<2;E1ZUd5NQXgcUc$ zQbI)0R>T<(3Is5%yP&XPiDRcgZBLz1mNnEyb~R;*L?M#|d9Wxus&+C6Ww+$XWYk_P zj9DP`aM*NNI_c~b)i}6U*y!j_gK75W@wWWUU5*L!dIAB)bz46cC+H$=m$htHDM?%# zuu3+#E=b$RpsCi%gKKWUY>A;jm}#*EV}^^p&tuw?d7_9`qbM=Y)i;IZOk#~Nk`MhV z$2NPpvIu0+SILjK8W|*UymY1FVXJa~xrL`MQ*J;>Ev23`#~p3DV1i9I4+JWuF+y!q za74C%oL*0O=t^yJrNSt*k?_6i&5SCvCln43X*XH|;7 zrJCArh9C$|i7hTn*OruKJroK^CHk^mL&PZ4q!*88t6g5 zTWVq3G@aQ#r=-+UUZ9=g(IutLas1i4P-0VG3{5`iVA_iob>LKq&i=9x_brGv?j zhqS*Hx~(7hGE`yKH~A1}LZ>DBr;HeRh_7%I>j+Yn#lo<-y7Y{})ET=tRY2N#P#E0X zOyCRt#Xw+r$w~F6Cx9ecE0U zXs;oJne)iz0e$YlsJ?RIXo9ZzQ%1r;MhTBewVv56YPQ+WQdNK2`QyD1Cc^YQMO{X# zI}LW^nkA|p?77mV`H4bpbD$)`h%-%pJM-v{SKyn!rF`QmU^qJ(vfCZ)^LXiptnF4- z`?F>S<&fC&7wS_U#-+9`T~fA&9_HOHnDm*a7-da|sfSv;3yHFjBRkN)WgWsa3W*F= zTd{!yb5omgZwo%Br84a`&VAD%Z&;eh5rjK1iL)gR)h^vGBf#E{k)BmvJ!_AugFQ9D zlsIDgUgt?t;Fhz`a@!_`x>jTxC`^571WSXkx zR<)fodtUaH#qN~XWVtRU=FvH&qvvUR#m=Xe@;7y@59y0 zLq6h4BZyi3X58%gQWeap62xfj+nblT;)2@WcYw=U3X_Br+CL)P7Ocg(cDd_w-dyN- z$gkq<6=r>##3>lnT-NfG0|l(K2vS@GjXh{C&G5I^W#sO&oC-Gn2UZOm?DG{2y$ty+ z*8E*K4?B##t$l_i?Lapk-kmXZ?=9O`N}h(;GA3>aboKHu)$L&`d>($V)ra*)vxFvh z-`F5=I|BuDck1+q^Auw;%(Gj0DIRF&-CMz9GKQfD(;hH$LO$b))c#vX6;b8BRV+C2 zxP98voTPFYiiP|}Jz2zZ4eOaMmj@$xOxYZu_&+?bTuv!hSQ3M!*RB-BuQZn@ zKuXXw0T1D;2PkC^4<72EW})K^OEp=;Hss&Y9=I=4uB0t?)Ojis%1!a`(qo3R)8OzP ztdMIi2kmE_Un5LF^~7_6bm{ktl{Ks`%o1MZM}*R1Q>?Bz>U?@uU*gD-|69X@J?!Vc zIQ$n_pkSCvgsUg&`R(L-;$Zd&P5+<(%NWNR5< zx-jtcHekN?mdBtyh9>=w@b=Iqf?KEz{< zUX%xe*F61M&PLWg^Dd4yF(_H6comY}t1BltQjML{^nsk(k6njl@B-kBw;vS43o3ar z!{b}r1)A}j_ORUKzO3yTZx;Go_)o9vO2ySJLQzC+N!yn+ifU4nM?1*0!+jC)VZDY< ztRpxMvRwgeOo;*Y4^zYmeS(BKt}r3bC<=1zGMcQKy;Fl5ZHk_+uKhGi5!Kf}9IG4J zK!i9*Hx5{pcj!h)pRx3Zl6n}&X09vc$}>+%(WJq%7HJyn>y7Q!g(h9xdY zs8Xj^TPDk!Ar6|z8VCv@*}SL+Qem)PZN|tUf(1hQERpf8V2~Jv%(u7KVcVq@^1(I5nyL+$`s}DKRDzh?XV3t0 z;suDOd$mfqlkE2K=G>ye;=x()wb1%8qgJ}oW!QK9C536h^9vYBhRN zR8`apMH$MUH)=R*&^##{U}yX+zD@*9GkDg?;qGHpnyX<#A*VI#Hthin#f}iT<~v{< z#rr8j!9+9K9G6E=lqA&_OgXkF1eHJ#Ll}W6iwaQ#4HOI8K3U@Wrt%02^QW=kBT1${8B$voDQ{T*@T@YBq z3CWldR_CZqQ^N=pmw$j!TxL3B%f?(J`VZH9=vaP`0h#iMdz=%Q0KbfpavYIa+U%LL z&fpH4Jp!g-)=8^v{>6jQvSKxbVUn8rT^Dra0KlwIhEEw|GBllpJHewEpLT9wDwlrS zd9@w$^Sw(I&^4|9SKOrgyW=|YH$1{JH zfgntrr%2bb$!7H7Remzqt_auo0aQsI|fyLeN9(mJ^-(x6(V z(xSpdvgWvAWph$OcrxL#-qnkfVXZ0Gvjw>tc^(NR#iXoGi5Abs_YAm4Hoy- zA!sjwYsT0#KhK*izzuI~*|dNQCoO{97)1XmzcU5^Fw$zpX&}Sw2y$xQrXdmLJ1l3B zq+GaqN^agcVu~3H83feyx18KM_(bsPDn?o|Avs}cH-pCwL_h$i3T-XAMhu+Ai<~F! z7M09Z=;VZy0GOcR$E;Gca}h?99CcrkV-%dzc#bMY+Ziak8T zE!JFSy&>uyg5%*f$`{4{nA+`Y~`uDfqQ+A_b*y=glT#IKl70O zhUx#6k?~*qP*W#@v^GXymz6d|-SmkFRyCG2wbD7B9AilUFx=yb-L=9Xnc>tRFT=fC zo@I&&P@gKyF8_YiT^LEadIudr&T_T46cTfv+%L=e*0r@On60=fH7AzuE|(pNXsJTU z6XM`MoWnNKvy2^fZY2=y*ebqut;NDlg4wy2h%Sy+FRJDPK_d^=>=lPRrms+x^=AT1 ztBblSP6x8FuYl;!agQc-qY{LzwtX~NFL33kougTAP#iGvyHz$W<;LC0$%Tjfd*p{^&3A%zpoJ?K{#4_r%C>}MOUsXm* z5GN!HrKhCi?Fi*>sQXwdFHN^?*5ZN~SM?!wc!H5O+>_(tj>Z}b^-f@ni)9XR` znPAo80TvcyFrM5G77;`(g7eLiR&}2;O1ZHmxc-ORQ1}zu#<NAV&7(hka@}>Op;^ zo9^%tzO}qTR5z$O>x>0jaY!(LGjasyy^ItGytKx_3Px>itgJbz)pcs0YAs`(%D#6L zt-TysT6!o-6EiCqWxcPWzTcd{nH8maiH@BF5zoFC-=m)d>7yqx&t0R5O_qnKEvVDw z{Z46_HjnJMS{iULL^I~Fu1v{OCJ}muQbvxXl03x-q(OAB z0A*RAGA=y}0lxrG2^x+qme7-DYp1~*Lr(9-#J1OJ6Hz1X@9Ie>@uM7Il(e7qa{8l`Qh+qvn&9jPUZ!x@>-<-*kZ=`%)FCb$q*WU z=U7bHG4%-7ZeOQbOK2CZlchyyONZJRBnt{-9%9RtD1bnzg8PB+T(W6aIaSp?>R=%R zSQT1T(!k7Nyh?GTpl$Q5EPFrQ@N5vNH2`j)MC`7-J{)=F9-g(%?lPyf23|6^Ol| zV70xBWl<&3NOk9?r=-)29( z%yU)1laOW4h_VH`_L&G^AUA7B++gh~E2< z=}lE2KaU859R)1=WIxeZz-7VID4iEisX(Wo3D0Yvt=?>G7 zvr5Yj5qUYbz`nrMyG!-d2b7rtgxDHTC6NX__1L|{nI078u{(zGP=cq@?of@Qm9!`3 zHw^^WLs|Iv_?V8|N8-zPmtU; zOcP0|Q;?HVn-Ji_L^L8A;KRKE&y)T;!?D_ZKfsndXzOz2L;fF2g~c38&@f2Y39elq zG$ZmmEAWlbVE&-N`(uhW%{| z2y0YRt^p*fDt1EI8exI+bhB{mB2h>hFyBdfTY;_9a`IX@gB?FWy)S7~;XO^{uhugH zag)TG3|V@Uz2;B`0=N+DRC8`^iWKm2pz;T-*OT0Yj{5PE2M+?N|C%f*0B^2WU3 zTXGd;?m!EdsBa^*k$jUW&ZakQ2gl}zYaxzjz+Dri05mPWh!1Kz%`qJNiE zDm!4bW=h?kJF?s3IIIP#8-RL$lHh}YM{8}*vRs{hQx`*D*DN|a2-IOmf~maV0IABR z+>B_&6DUZ!&e#hA{e>FPUv>u6p;jS|rS4kR)|Pfsl^F%!^#ZZgyn5<(@b+wGqq~Y7 zJXoPG+g!R_1ilmq%5d0v22TyJsHwJCP@&FdriMk#O2Kii&0Uk_%j@9Z_ll|gb-2Sm z;%MwV#e4_O4EJ$aKl2u`Dp&)7*^30IJpwYwD))F~HxJYY02A7XE=172u0ie0&@W4M zMIfoJNl2kGk3fIJvu5OVBpIRSY0!9&dyrDdA4dDrJoI&hgPUJm7m-Qb}MQE|P06gvDh{oVPDyag|p-lylCT(?f z7M~-45Cgz>u%HkTYd@A^tA6Uxr?oj%Pw!g>R3K|qFH2*>-`&B=8bi- z%w=PhvVL>{m!Z8FI`LDj&j9hwLf%glCaJAP2)!@><22QZhs#obx)7YLI|J0$OWIcBQxb5Hyo2FlbGLef z5L9&e2cLpBN>CL9VM(}yR;}DAfUG7FkN65PiXM)(G}2si#QGMv?cznri+OA6IDp*1 z?opvImCHe4B^AvW@eO2zMLLyk=&UqnbI&82}V^{8^tsbFm z1p{Fm33o^PCoO^@Q|g$AMG>TZxT=axe}q>IF2LX1)ok0#=*~l|iR?0R7L8Pc zE}BBG0K*=qh4Uoqau$-kH^j|443}D(Y+vnDfu}7pw^D&~#p+1-w-rOwdZFSDADo3T zVt%WjWfyB(whvGV#nR!}>5%?b1mnenOdKV*fp5e4eLZ42TiM=g;J8;?f&d3w-k1N$ODY8u95??@DD`n zrmRe*)GVsD?`m~?T^QMVRmuHQc3}_!w&H{^#O4WZAZ5_$a&Tbj;T7Sp`|`!h?pmBs zS*C0bwsUfg$#SR0EwutUY{$_^9bBS+zkCDXEXMpP&5|hBx&9k-?;h90neUHpx92R| z?{3YWvRm7ulJ2$^?XFTUHQbWaW4Fpu9k*0z6-X<#6sbgvh#{A0mu{&=r4=j6C1Wd^ zB0_4p!~jXW6jClplmHQOlUpJQNg%^yNG3D$duaFkF8`h1c3*q;ueR3L%rki|pU?aK zd4Jx|G|(702czxCP=W~}MK0qWo0J>`v!&5Et2Aboxhc+Ttf8*h#b%ba9mdp}_7-ZF z!+OoLw{IRdR8B(bOoSX}iQq8M3M613;yHze`83)dYTm8nak1*uR)s=!*<;+Qh;<}* z!vj?RG>c6#4-*;x8YA;#`c_XWu|clA!g64Gg^wpuDAqQ@L#(2i@bG$4jjjx(@y$6} zOm9at-^gtf!43W-Py`H?LX^}+m!}lrN`XUM1K%_f74d4<;OuwQ- z)A|bR7pG8z7HotsX~yM%ngr6JWAJX*D_qQ9%grk!ur#geH6mP<7tV6jm|f|=YyX}l z2ZUjBKGjUN@Zhy>h zjUEJogRA2;yJ}2}m{M-vCdsw!E)(P*&9X)6L7j)X5`Hcy2hzOIzO_S-xJHzF%BX9F z1DSDS%Lynm7M#z->s`Wzc=;^Pr8=$XN)@0N5o{zxvC4lK$zB*_vPcG`5``5(z*V3h?Nl zXt79So(|7ftkr`8sfz=8DS!m32Q0ffpvaH|W!)o!2B0A7w9Wv+;4`-4TAW}5WmCQCOC~e|NRJ{Ma>0lJanqaE;(wp;Wczo-yM78 ztP;$8L#+0*@M+F@5tfK}-z#5X%s zrSmVlla3%uu2rSBNCA1x8;JT|d?^PC=wIY(gH`rb@Vl9LDUxtXrBm@d^+6tyGgO@q zdoK0wzxsldYJ;0r>`U@vQBuZxF56eT9btv!_A;YgdXVa{ld@)Rda%^@KDHj}c0h;-T4>?y^UE6WM21W!_2)OgHMjn_yP?}t|{_ zV>7GZ0~tn%8+7zs8LDt>lK^h@90Zhr(azn3{DUyHSqFv0;;2i1ZTsdfRX(xsNb4=s7ONy9E(aq z;f=pzVSxsUAJ)|0wW{}!Tw-$wg2Se=k^nCY;vV_~Ci?B-TZ;BMJ%IV5qXEfvpXGn2p-6COstH@(sc|z+CoHS?f67@>#1usyUP{;l$06}}B(6V~3$y{!Th;^GgeT9> zUH*weM6{n`Es4kL<%s4?HSW(gCJR85O$?hp6;E_mP2e|XI{Y6Lt>|o;YdM*KZ-J5v zdbk_$PeG_E^_hOV`@eU0_`cdNnr%1FzRY!f$w#EUF97M(6EKI1&NQ3JH(sD>*0Y}E z|8CAj{K_Jncy!Zr@t#JG%B3NUGMEZ^hR-L@jWKwMGkn1iraXa^&AIM>;gO6V_n3Dq zlIK5S27ctZ0;d050-b4)GQOd2GtcBb@ipkIS_F5Vy;$Sht;P)0l(m}zeSpqLsZ4V{mL*3AqYc0L9tbT0x!PEH@7{(V&>hwo9{y%Drzy0kFk4so{P$2Q zH8ja$>l1btu@})8IU@uWe{QJ9lXd%M{2lg22exvmacB{Yk}sbyPrn=mmoDj5 z;_rzRZCC}wDYS8)?I%x^1kNv`e_rq|%?v%*8n=G25g=7#zE7QAq+x%6Nvn~_WoFd| z`-8xYz*wu@J)wVeV&}rkp)G=F0O%76^PlG&XHyZ(b+q%Xr!xJ?tN8EboGLkNKHAh8 zK0B9VJX$-aU59=RyNx_k_cCcs%yq2LD+qNZ}2(A85P7vtBmf68W;Q6%H?OuxBlEnO6S2@DDu?Cad#Zcuq^xn73;fWpVN8HIiGpe4w^~< z=;nXxY05N}BbH4X?9StQF8X~Uf0DKwee)oZJF7yD?&NUT zNhCu&yT$B%A+wT5{qK*I_Wm$^CwP2jrS>$p<@-rIqnaavCCu=hF5_VQjAZ^Aj}~?o z@8rl5$NUvNCT8fnuE<>Lzxi&ehTRp{sK`eA9v*z;mlJuv?WPU=On{zsQ_7Sfg-vYmEeOCioLBA)o99MvtM&hhOfN*rF;F0f{DAgHAYBJSi7n&;o zaZr<3Ih$B3mmO;Qfk*-*gFiW8*WZ4GWsUqH6olGQxNZ(M7lPqJ4*A4~!UO|;lAx&yT=mtffiWKTv; zA?+4P3UkRG<=-d+ix`gsPa&Hway)HZ^c!O=yN2G4{V^U3v+T#Z5@aq9u4 z=fYNM^>@>`kDHPH!riz+V@|IeM#RJqh+3;JqQ{d#(^;asIiJ`NCz80_NTQ3ptAw~1 zblTw_jx$v{iSVeL!&J+}fLH^?H_LJ|^l>byzE16LYW{CRW6}Z&s9}2cA~SROei+Mx zj|QDedqJ?)FU7|%SR+R%@qGB)Sa<_{G0%REL=k#?rWUssWwQ@EZU~9YYl~Ru@fZ!4^+YiK5O%(; z@LO*lL%SnFQEC3|H(m{!}nA+Rd%eLs!aUf7?RdgD)bA zxmp+c$kGXuEm-czo2dGT8>7#MtNop8EQG{JfnFB5Pgm61(bdF1OE@OtwbHf=ZyC@tZD_iseaCI?xD4uY=NuZ-IA&23!B>`?^pwg(JPV#HuzX+d~s;A;K6xLkMCNgYvDN-DsG1B86pfy++ zA4!c<9|^J?G}S7E3xcyxm)8=(^7Dd|a*!ydnz=%M34=EYK+M$bKlpVE&jb_NqIXPYii-LN-#FOmrY@u5;{hEUBNIo6pyO2L1f*plBIlie#U6>~&EM{-Bmm8`u zYsOA4MKsGw6{SJ^&TYRo{@4@zpWF+U&&0nTgCsL)iQeNlB#mG9&Pm+fqd(c2ai-^WmdYdT?^q|z7 zOtd?W5qpg>$IKmYp4tg`IeT@YO?3#l3rJA z#O1#j3^#_GWAH+&vb4#jJZPZinv)JQIP0)`mo*_hNhl@Jh9LDz zNhI{m+rGE0g2sTQ}oNeGoXvocr}D3Q=JEhYxK)p?S$)4%$af` zpI*Qg9G|PGd;T_X{MygXxn?8Hac_fA8Dt&ev8s^&`5NqB^0QjF707|cG%reI8Ynstf`C)B{&}g zRu8sqX4BV33iRgfEz<~g7l8gP`5xdn(NmNasI3qK;oUCC;|Bk)wGJq27xh^6yP>+8 z@PXPRE+DH~2^XGHz0?QV>;|xnGtFAiy2b0qU9$dOuM;H{A1wgkC}OHRqe;ZYct z>{RQ;o;W%%p2!JY%UK&TB(-SIEGx}Mzuvd}KhHC@F;SHp1UieOAlH`$X(J2vf(M(H zTyy@mD>*)ydrs_Ac{riYS}sQtAM;s~sO^M3Mq+s?I;C-MFL%u-WuNn1HnYHam5nwr_OD@vsk zCX;}+c#hE*%e%=F1ZPPSBNKmf`AZrp`tD56gX;5h?I%e-5j*j#LXPeJ%h$ESot$@; z7hes4@GUO+fLa*zb)G8Vx7mZ5gN_^PC}KvT5eXxmCv{03apn|I?>LVaUtPC^&%jO+ zFTl)`TdZ499XsKOwlp}Gr$*;2K0zd=Rx*L>t{b)}i1bwTtZlU!(T)kbu% zIMMl*O1CvA2{_dm&CJfL|1?m`J;gzWC0hPX49t zp_yYXzAjnQI>z=4cvuGxf)Z2c!8pM7(+?yIpKV>cWH4)CaACfH`v<&z{%zpGu{Emi zSlX>wT?}|J$8T8}bRVm@ecfm&dC_mFS(k+*z@2u#I#^sD`_uQdbkPHiNFv(FiJ5|_ zQ4Tg3x;Z*wrmUlOh!MvaBir4ZRro>ArILX61INOW=`FIZSQ_)`U}n6 zBc!T4blr0>-)a>4b^h`>LeTl-o1AX=dHcq7OU7-k;05vXSsl6d?+TdulGHKk~-8 z_n0O&0n*-yorRI248ORzt0rN7?s&MRyv~^TRz7y2Q$NBf*f*7Q%e#~WL(b!xP`fN} zL2QA)ib1lN@Y?c1ooVY5eF_QmIJ;^(J^_uleBiWFTPbz{QyD#P2$bK4zvQpUT|ol6 z7l8Aj=+$z~o>*IGpF!BetIb|}HxM2^d4&BaF~bM#&i{!0%NRnaTH^}IPO6@!MoK`f zmOryO^qi&o=!5Q+HlTgM-3{n6XRTmY2GoCP&%kmryU=qv7A{1>K*WF!E(&gXc=~DJ zlq9_Z2$bPBK-LcW!uw-0`x{R?H~z>+^uVDwdTKegQ4WlYhLI!8x&1&O6u1|~d7aVg z*Z8TjEw+Mt?3fCUy5I)U#a+PUH??G~KV$SZlkQ1hyJS)F3-Ly8i|qKFKhg_lu%qOh zXYN5@T01-K(Buaf{RH*}wUkGjwTHNa&D?E_n)pv$@kF#QDCa0bC~rYsmKP@TZ~zon zIxt7G^uae^Bv9EKM7z!<&}0UFLFDsxW3T-B<2dVSl<@ z9eJIaE{C2e-@4y;``3;q*2P%ZjNQ7oEW!WiEty-|t@0iF7Pb0+J9^Qqj@`1XRNR~+ zJ}jtama~x3sfjmzJLxY%?r_B%sd1TGkL}ddHnStkPC#$wi*(Wd=9DZeJ#L68e+G8uUmG+ zXx21)ktel9 zZIlhS!*k8z2O4!Paz6BW_`D@%5}aR9mYc~-IaE--37UVxem!U6edz+{F}OqL?JQ^% zs1IhnY!n~3c_TKtGaGgOWzPAKxmuh44!t1JU`j_R+y34@Es<;fJkpcAiYXe^Jk*`g z7*igD5Sj_EmLeB@wLmb4YKE78R8DXm$>@y^spoeakkj{Tvdxg{i-X9g>uHwJ`dls# zcxJUw>aaWVkHJ*xDBx1dSjnrn-?}ujQLfT{kSE1q!G|7S^f6II-ERojOo(xp z^sx;k&29#8rN9y4@MWwF^8IiKcZ+s=gnYfHP0@OYr8OzJ~<@jL<+JHtif4%$yq{y3+DxY4mTlx2*u6(9Pf zBmmf9T^#%zIeLPKITlL0y7yIHAd?=9nu_@~U?*M`geT(o7Rd={)2Z8+3m$BUxi-Vm zeK46k_(Z92FMwBq;_U7Wet1GVF`IWaiSuYX@HAWwOkWr=uIh*POO?dA>5C`z&t}4h zuapD|?jL*C269PfXVLOE-6#EFrKI(A znmSOmv~G2$@k6_6o_3}o8r5#rj?dHi#CAX-jv(T^6pbgfx6$3W{?0(t;@)zMyRz2sGb_&UMQu?R(F>7w2?v`O z(hH}uU5xJ7n>loRXU2%*s!k4WC^vu;i*252L&P!V9~~WjGx<5Gc(m})#jU3fYE7b; zcK$l2L~A#UyIxP z|A$$=jR^wYtv-ie^e%$lodt|p;EQ`_g@`UTfc*?0^Cq_RXvV}HX%3sI=D@@Au8B5s zGO!6Mr5*h@|kbH^u*1)Wl+>YjkMChSn{p zX<5n=vi}uW$_>r>I)cQ1@!HIiRlt`@^+vhFyp+p`vj2SJHx}rLa`QsFhZ=g?fVfq-&0KANesp-$1a+6)t8*?82*DNMvu*hty@L&z~ip9 zc($F@IUPCqkbpT+sQokba$RS!g?~%65A>Y?%ZyCktNFY5z;25e22O>0YN`Wz?k>>Y z#hw0=&-)VCPn{PI9$vT$dN*j#yL@6cYLf6-vT*YR=JWibkU4mwn!_6L^A zcLk^OZAS{2^^kfBblIPSBw^$B+d1Z4X|I5d11SKiT)1ij zbMsomc4C-21eW*1H@~0?-c8(~5Rw>pZL}jhxKQVd-{@GckZ}GaN#S|87L`ta_+qj(ArJ1;sUVzg}l6mz>bu6lGd& z-=Dj8kf)gQ6nq@-w~6&Rbnrrin%!U4;aB@3tN%|){dU;e7eeEoD7^$g(qPCqvQR23 zIA};ZqJ6d@YRck}Pvcnd(Vt6q-2kcK40-*6Dbc(q(n`mS<&q=G@x`Q;OsU>3OA+#z9@crYRDp8tn&sz@APSZ`1Ik1;)ZCa zRjGLZ9G+r- zu>6|vQpbs?soTq*BnHIT8+7-IGs+v2yA)D=!fJ(934+XUMFP)(*(x=X#6M@P`N>b- z|4GVAn_n}S_=`O#chiyO9rR>%^V#7_AB@IkAr&_jatTqA(bYhJEonqtA@ zSV|ys>p*1CrFm5wnuO-lT^7H_Tht^3BbMYQU`Hg*{o#799umkwrbRk2U|OmBnRoc1e~rkM`$@WCYuHXcr&V|Ok5In!962RvE-Rh z(*}^SPQ35A6Da@(_!Hf+Ewx1tE_60>$$}Tx$LNyr=bwyv4o%XyKInVcUyK)$6LBA# z@C#O=dKke#8e9kU=eth$k{fcV@JGBHc*N}KpGSC(|&yg(gAhCzIayy%lKvI4HRMi$OnG*ktM zEMZ;xlK0Fb0LBxWjy)jDGah7Bc;tK9Hngc2r2E=DKt{&#p9mrES?q7cpBY{K!PVZJVRCR4SV+R+G#yxZ20o zg<|&8X4V7sx!luyA)I7;`ha@I7)*=Q%! z$pMMdwkjlSO?R`9$Z^UoCTvR5@B*J#rHET2mo*t{fQDEe%55U@(TX27aWs#KhCx9j zlfUcxt{!(qHV#Z#h6lm}B%k`$Q!&|bsxDM-lw6XcJ;(!vLFtfK{26HQQYbud*gYNY z@0m}7s}Sc766m71tLRz~Fvj03Uj8bKg8~ZG6EI3BG)GJPHLeC7NR6}20zxK6%XudP zc(0E5RRjW~ESCf*%OE4O!-pkD9%L_dz?=mN*TTV2T*Thhp3QI&cAj=0pw%SH@Iy0L zDvt_Ws!^1KGlhac0HZlT9kkR_&MSvn%eSaQ*XK)_!pZRqZmxSVDAmB5SBSXZdh83% zvL`JGxzY}p{txgl`CrrqA=Bw8GTSPVr@m%?m2^a+XaT9cdKeXzM`bf|;rg@F)zyfU z182g8fXtoD5OLTy5Co)M3w4rWn={W9PG_$|!V9Y9T5Y${Y=XFwxy)ci!HvWKMV$fV zK^?H2W$igZg^ql>B_6Vc!qXST)dZdh68oleo)ZpSp$!s4i*v%+Nbk)0-&?&jSA>u5 z_Z&TolUoj|ZtVX2Pj4=HeB1Ir{nt;Q{lka=Z`NyZa))oA5 zdEKvm`RhNPW+*S--J6~3R)+VO*|LQ6OKq>mQC;mzaCY~MPu=Xswr3Ic$OyM%hfVUQROUYmf%*(BfO;VouWvEv@s5#}Q3r$!iDU zUhUh=Gt252AGeRmR{PG6iwE@DDiQLbs3twNS1wI7XRL9it#QhpP8S^@Uvf`(u%-?| zx73dixyIM}a+~sJD7C=AYUDTNU(fkObU7Y5f-0Q$*s&Pb(CI)uVt66FEc9BL%Jtol zY!COd;;?VK&{A=Te@i;LVd!vG!?F(8UxRMv+i?xfeyb_}SovyS$^vuJ5NnGp=16hU z^@J*Fsw@r;*&M&sELhDj{WVTF=ssB3ONSM7xH@8Cd*lQ7!#GU!(R$PEHrho?aCyJk zQr{t%ycpm&IK{b3YdD5ob<8NFUx5a~en^dFDql%`*cIp8ynG}w#Du7_I`+*Q10k2hpCkM85XUNPkt zDU@4rDL66Bb}VR06$QO}PdKDm$T!vH7H>(QEBtH)iJ{X-GtUqwR~X5vpSr-mDn)X!#|hYtU(hP)Z}PyYOl4|gp3u5GFLyD$>HBNW8&ynO3o5D`_N21GM*`X;c`hZXJn6Dsf z&1xh(ogrvF2eqCPoyzdmW6||;zx|Ao{RsZ-jGUdeMy_hVM&O17xPgmJ8#|BnVVEo3 zdl%0bf#Y1VlYF(WBtX6xIit?uKII_PTE!MeL|+oP&(o`+TWmwa%BeJNZC=ykX#L{? z<7W-*R_X7sd0Ta$Eq2WQA=#31WolzO>nLqca8(bp(plCGUF@_Ps6CV}@K+ovM-QZg z1|e5fLznnUmsK!%0BS_Gu_gHBPH)O})>~Zf`2z|1p_4Xkks)-M#g93IM@@NRZ=_R0 z3JQtyS|T9?zQkEY&$zU+D zqG&x=$*SSR5Ans|b-iO*cHQ=DmwAgDV?*0s14$TmCbp{F^* z6?pP09^#kyimy-mT!|u=0nkC@ouh>jb&sNWr$*BjO#0gRm z$7Tf*)3@z@NX`-8Qp@FDJv*X0WwAabofZa--qvrlJ+~tX`CJ7Z$)h_JMUc=JqZs&cE7Ach34Y8e+`y%qwX-i-F7kOAaHz*- z47OmYU4!25sz0+kxOD|gYoZ0uC4HlPP>}0D>o`8gp+n*DUZO1-Hi$z_UNO)YX16F#b3!6n&Gg}KL=`!ufti6mT#O0flmnV0xE$! z1p#BnP^lWtNo!{KU+qa6?np{5^2s{L?oTZIk4My4g5B}@H=5PD zkcA36E@0X1c=wI7m~u`b!YYJ(+@+*lc?i}n@n;7;W# zq)+QFp>L0-wuH_!fb|IRtgf0p12w_`Bp`EThYX@~a+!1>yjoc)M(gwM@%Qj%j;p6T z)x(frHIz7(<(f~E1>LNHj6~jL^-I-|YH@4KcS#KOEA{7N>5XQ@`G~8tROp_LZA1=> zdRU12Bl0qf`bn93{(_i0yMxg$=_?cwjb?CAlAT(71B_nioX3V9!4u_3pe0@VnR6ht z-n(*C+&ct@A&>J3b^wco>r1^nV{sVaagJ;7w6nhguJS4B2gYH;r zQ;4w!$VJ}S$_>sFC9rR)X5N5MBZ&Gto(?1xFA^+JQIbZ}W;1LKw|9(qA+3YYXRgi0i23PehKaq2jECzt)&>x^5&{zw+%P4n$W^8Im@@*N(m311MiKef4h zjv~@VPi}!m!XJHXDShh~%rkMp5@VqjdtXGh%oHyJH&PmK|6JBpvbIDfbjaqSyY~nU|VT(VayqJCd}_wRVk$T$d!-sd-&-(5NUK_v9TRW84^wZvmNEB(!etjG_|5+UWIf zN%GB^L3>y6&xIo2m+Vyz?k)|t$%7X-q*mF)Mjo8S9U*?N4fwYBB?y+IJ-$uqbJ-={ zG7M93c%Eh1!@7L#OlF6j>SqB?-DpQIh{=D~OTTM>-M{miW`~)@xvHqNIDV_velT_v zcQ+aD?xWG`nv}PVR!Y!*T@w32SJ-u=$gGX#P_2p{ta#Y$4Ce@PfLs`etY~y|sQ8?k zhdYC7^k&72*U9Tw%hM8z)R!V)d%k@9LwwHB#fyv-Y0t0HH^L4Z#n*u|BqZlwc!Tks z*=zxqwp@kbcvwUgN0q2^u2Ca4hZVJkJa9*loerzXb{#V$&=0V0|&Ii3C{9?B}(qayW$78O!7Pq!Z{HH1i>}aIduY1L>z&9@}bX3S6nq5o3)Hb63Q zQ+dubE@tvaY!1@KVt=Z6o4uS4RML~vMnC|-=!~km(EdFjkWAV69_&;9?|C72YEF}q z?O?b-OA0;Ph2SNJ@sCx-sEZfs1<8W;m;wn|UD{m7JCgT`a>%Bm0;74Uzg|ms#;o^6 z>{xncSXg);*Z50Ib;aL$>MFY zEPwI2R<6sQ%|7E`{1vI@T`hX}I!S)}3lQzq4b3rU{3}2M*E{N=h2qkOjq11A+x9ZF z`P?j#RI=r^cZC`cqlvUi)L3ruIW&*r-UQFV=^`ES9K6I;tsUWOHO9cQ-^nb^n%sBE z=0il7jK9i1{5mt+1v!c{haXPiLP{pCr&6XY5+(lyzXV(AdC2PpEZOE3cpqD@P%2v+ce9R+W!B=apldaLyc4e`o#(GUf{;UEkoCzJbSs1pK&pK$wOy0 zB9UBKvE7oSN0m9+>3Sq!%JO*1 zMBmC5Q#A-(oy!TClCe&u>RdyYT27v|m?~SKM!rnEu4wI)FXdi3GOqqswuk;T{#^^- zC^dmz&PFAjwHA|ns%9P{-t1&Qg>P1Y51o^yc=-0@RSdF)JC!yd4#?<}5;jn1qG^Vo6%e3#q|SICt7*P_x0&6PD2ya4i-;e7wiy z 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 z

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 z zYKC8T<$&o2Cq3Z<#x~4-qX#e!qIq2vGuoR9o8VE28z{PuL1Y`CU?!Ud24F!HH@$-? z{&kl$0gNe6w1Y=zy*2a%CltB;7wG`iGx1KSz_dW<;7I^X`(v_mjloOoxmEJkyDBh4nvRMN zgv?@}$!q945{h|xAQQIKmez71&2{!(Gcv!x(^fKg%K zw|m@N2hEl>4pl*;GXV!#P~8fDg^;Y>JRtV$4!4+uh+$lH6pwV@-qUXAb1Dl!0jA<=!@N<^gv@v zFvFU3N3TWNn3!1N=kGng#0vU(_Zc3dT0bvvqID{`v`$ls9Lw!ROi2KQGNtD7n+eA3aGwxnSO#Z=_JqEK52gl&hb$xz;Y07_ z14}z!lNDqn^)NAp+20}`g&G>cbp>RsX_bg$E$bLWJ$m{k`yTY$)I9ionMQ7wvvpyA zvG%ak@P?jgYr7}jtoR^+D*QHy;Xmk+Z++}LavHb(lhDow{_Vq_L(I^h9z18T%ooU} z%R~Nqh}<(!s-S(tzfYiVmxZ@mJdBf4VR7Vsg@DRAzjHn#KN478Kr{1PYJ`RE=H!R| zcd7Zjha7fm#9pbPm0ypT#$#-JTjLR5iaJDILV|3D;4ncca3>BhHc17s;S$ogghDP2 z?Jnr4GdKDiF~%Z~w%aE7{+`*v`vG zt%`fFEvSs$kO!nzoRvH77YjnB?#yjI{RQ!eYar`(z*polO35h;3YvOF;ee%4by_Xw5Cbp?Yl=2YKp@NH1uR)7Irvnn0Dwn6{gJ>gBg(k79CSg1CxM>HJFV|1y5 zHGqBOfJ;DBU^0AA&212m%`B9|;B>ngzC z#F_&0lG{u8SNK=qgA!h@BM*U@jN!@c<%gxxAN0%sxJ(xhX{9YRuB%wpy6dvP zmQIvyl<9n5mvHYHpRtGDWQL~c1J6!$ru}rcZPln>aL(!AztY^?Xs#E2V>?i5%aVtN zdguzHjP|VJ(g;10O75{Ra-3Y7z*?*#v22Ycnxb1;o{g-Cgkl7@-{-Xjy9^<~ z3OG{FVy8{z+)Hw487uGWA>QDZyUT`89eIXqI;_*IfA6iGSm1>|NWNP1(K;-CDCrJ( z`GJcVIH~|?SQ{q-gckG21H;@3!9JL(13S)WP(`2(;LbgyuVH`=-?N!-#caj&eFVV^ z4vM)7<`TdW1X$ory{wPn0U5eQQ74Qo*K|eu7EkH!#6qx852p2m%&RWSbr;u$~g+htu z!_%f1Dsz`B_*c=k6cf@q4x5hvg+u}ozqg{1@4X;VHH2NC-?kUQoOn0}AI_-Dve#ED zf)y=N0hNdNU~z@AJ_^;z40dx9Z=Kj72&8*$+NgVWDc@k=o@<4qMR|DmJEpl#no38* zMbo=mLeIo0gCTNoME#;7ERC=OP6Mhypc3Bdv{tDObKNG~S%WJLbF%cFlA|X-6(r!m z&=fplfi>+v1kC_6s}mtCJ>)iGGG_f51qu@gbZvxZr;h+rEdF_93|!4&SS!d+`y|Zu zFjN6{ppp#wJgjVjQL;F2rq%`1hDsa2dlWeb`V9$@7chBKdB5z>N4(mn>E{%$>tYO( zp(czmIw-z(Z48>?wODVP9)@oHA19k@FmwhBF0h)AVKFQxac~dFT_E{UOK2>xRuEuN z?+AiHi;dun7yCs(y$tM6u>h_#h}Osh9s)Dr1Uu%OFo-%}IdxJn<%e1f!V``}4z?8o z3>0HuuvWMt^ya4*ct};7`5T`h{Eu9#VGADi5mh$J z_N0^PjtxCvmq z_6EcYSbprTVQYwp9iHMt+4ov}tVZ)*L=7$FIAUuXHt_EhQRu5eLt-EMgBIF`dVzv% zv>ARl;(0Y!wm$+pF#*%5hY-#yPK1B^tc!*TX#HQ9B(L}7NPs0>-) z+s=z*JK4AWGX1^g^RRsPX9X%_!st=sK zplN)rZsBZvmyaryk~iBF6;g7`Tm!x0Y3rHlh~P!B`X69_bIXbfC~L3l{tN>l{UlWPDeno)ffs z@)WSDA?Rvv0Mgd`C@NK=NDFxaB5Y3tlbh?J7^H-Ay)DtMArweuV3wd2k4nI_g|J<3 z-U>s&ZnaxyDEDf^wY~z%F-;?WJ60fuy+aEI0U{;;#62HjrC6tR8 zRWZiMeM%(QAm9m@W*sR;!U>6Ax!eDcZ8 z59>(3_!pPU&pVBwh@cD0(ujY1mv z>>TZ%^MgIZ4Ol@ZD11NE?(G_2(40bJ#2I;TQj&Fn{LZ@xB1g7}u43eCkV42CZox#~<_qEDVX=i65v~*|G+xuQ4@$lxlm1 z2vOd?VBlWN=us2<3oWe>>4eX{C}oI0A~Jp5C)x2neqkTk14sU$If|o9u~moWQ9vk< zu_j-xIxk7(H-CgNgD^RBDq78hQBQ&gi+@06G7y-sLfHyP6{~;|abIP-40BAy)C4o_ z(VQAX@LInZJTFKXcL&ow6{%}{z>VlZ!2&unpBItSNQ`)9`|MyClb)w;v)WiL7qNrAM-Fe430>LAUxQuYLvJ0BLP#l7C)q+ zzi>%b;@kY-#1I!&nJ?lL$gU44@Cv02cEOM^7EV1d55-zHn2WBJo_f@H1ni z2ihDXQbZ5Cs1$lNl!oDFo(OC+%A^TsV?p^>-a=U)gFpN+1q?0_j8zAIU@h)cU_1?) zO)!i{TpSK4INXr=*bVdGn32M=Vh-lRiV1t(9>jUqE6~DPBDh2FfI{p8W{V&ycYy7< z4Dfx>Jn&LBaw{cd!qt2GIw`(nX#0R!)8}nz zhP*m2@C%@YQ$XHE;S!jVXlw<_0L%)+>PrP+LrY0O9ot}(AMdF^E)9Y^NZ=mOxL=_B z%S7HQVzz`X(~q0L^6kXGeHHR!!Fts2f*!v>!+4#nNy7uc75e6WQ`ir;cM2!8d?c`H zm>nOy7(wwAJdxo$E4@R*FZMAi@B>Bdk>H)@=;0-f?FFGz_qP|wS~GQ?&8>|bb;!_7 zpwr_Nv{}*?{J?ufo@bOjq)$UmSrK6VWR=zDE_y?4zIgL z#X9kQ8Zc(V_-L*lwpEdgjCMLfb24#6!>k^CIAegZ-5{Su=Y~Xx4H^I#)s+2(j=$|Y z;JL7wepo@ueWP4w%dYW_h%w%WEpR|E2}$A^ar*kWML7QiMAQd2A)K(}oIA(C@uL9Y*_ z7Fz~M18X5r#C80`3dTBxk@^;VFl!rJmyuKlHQViazP~L(X8A~H|ES|st4a7r$7eB_QCVCN; z)zXLonw#sTe{#-M^B+N@6Klg&1vya(6H;xAyoR|a45M-!T*P>YSHqHq=W*WmvB5jP zM?U?l5j2cZe)Gn1P*OKPxWR0V2!*o8v~YLoZdR3D*$(yc3PaC@%}vBumN zGp?&!`Nv`c{%pN_P(0dVkZ-CKdb!7TlI)gIV1GxfuK|S<;q4 z$e98^q}x?uEKtQ%A(=pKfQT~>Y7=yZA>zCOO0RMPZBc1VZXAhzcAh6fZyy*w*M{)l*wD5lWcUEAKzt(s>2d2p-hzm?5j~+73uvZZ1^Gs_A ziu2}cVi>r984g0_Ht?ddkmo4&At&!-XoV0q2;)mI!>I1T&~Mmns)&$3cM|sR+O}4U ziQuigb%6}Iavy^pU@{nEg_4ZaG3KJmZGl6O6bQ3Z>P~8-l&1N~pJsqHrW)SJrAHdF z-Z{o;VCcCQ%L%$*yEvNTl|b<9S;MFGcfkKDaymGNf8a~zcDhTl6k_1EC7^4e9T`+Z zaL*y{nq+2)x2FPf)=yO!ZZTngX#<2Td!{KDgHzgg>|uJF>gK2Q_7rgUg0q21P>Ttp z-rybDD~`{0+=RDp{}z3odm1P8-faYn^##8AOR&TWpLEqeSoV_gA`fi1S`$8i8BGF= z=nuG8c`?+|dFn&wZH{l5e(ph12LJ#cgwq429%>Ow-NU%I?0l90#^n0^lg%$Ft9kyC zF6prOqoo>eoM4|D#;aiHG0zQz6I3|!vQ=e^d>_HK458J{XfYAzy+^^affaW$u7aak zWF49woIcq+Crf~^DdLNMqSfh0z* zmcw1NAl^2xSuTWpxJN1q@Ph!Ml<0!wNS+jQH4sd|P@pA)S$s?d@v9!c`bg6mup!}@>i&;Ip5CE);RUB~J0q=Z%phwV0a)Y%dcwj*y0{$Bx z^;F=nbu#@pJoCcwrcvk=um0OF1t)ZZ3;O^P2BAQs6jVrMk98yjLn};2Edvun-^ZXo z1;g7;qr#%+IVB12<8uPuHI9)BK)BBT8%Lt$J z9>qi~@KkdSA>LGwzhL@?ZGmx0V7QeBC7k53C<`{iv%+%a?X;9;DrjiHGqlkVOtLSW z5LH36>0O1BUe@?za!Qwz*nz%Xk%D=a%bV}WDxncr@8Di(TEd`Uwk)RYsfz3c4D;<2 zX!a?Uj%4_iCipj4g9YX$*{Sq-@e1E`^R(^rMH6iEm%bgOY_Je@N0|p(iI{y%dE>Is zskT;87Tz-2Le6c*!DD8Ie}mPjni$_FfSZ6lF<=_;4E8&}=8;q_13ovXXI3&An(`*p z8PoLLC;&1>C9ZNCRF+sMgx)k>@hA6Au?(=6@HLAVh+#1#^Ld~v0>hnB(|G?O7e|#V zziH}yNT2V*n?e0twjBAizDFC4<(;r9)C^cbEbk$}U!oFJ;BG;#qf*kO)VUWDostZf!B znEtgztmP^iz=(q3JPN2*RJ>k4);&w{j$|f?5m1?Vso^80<@kU`G!ki~BSs^zrcp zq&pcEjW{eo#l1vgfWTY#y*R)JaH+m3c$gq^Q3{PF*cgcyNu)>044eb*;w3`m1X+KT zvkV(K8AA6kx9i22q0V(}C11Toue>0Hxjkg5t`v4-Cj1+$X$H%j-b(qV^>QBl?-4z~ zf1i_sKWK{Au8QS4-j zQl#Qg->v9Y@<=9_^+P{N#S9bDhFWq3*6n0t+R%tw3!DOU zJU1X_#V}}|Y3D<;U;r5sB$on=J3h`&Ze%&}@dnNiczS_t{8{`whAi)Zyy@N$FrW;v zSY^rsBMfqzY?@D^_ok8Bh%lRiIUcgEh6hNo*}jEPgJU|FUKAkbDv2+pxrZZ2M)f0n zH*l$@k9i>6sAi7$d}zife)l+ci6r1r2jd;OOJvWth%4SPhBi$&`AzdSdePM_2kC=)on|68>@5iUSFvt6 zK~WSZ0&^Y;o2{tQw)%u+P9lV}V$cvh&qNf3%K5lfHS zeY+Af0+C!Q7zy`j`CXDr9cFVFKth5LQ}Q*u@wmz-_Ycda)I>fqWY9M`KjuU3E-{cs zjO$@Z_b??@SYhsL3vg(?J%UBzlh6!xJ}y})7k5clTFHZu`Z~~Z48f*G!y72cO#R$D zL-7;M0cR{M7UsEQi_ND?4dcMbvaK~0m}CnG3As{JV}e&-J(=NSg=!iys;&Pqn8WswHr$BKN2DR{Gvq zTJX+9>jjEsbDS=iG_uS(N)QE4f#!<-cRyBnun}ZSuR#wqTHGgSVASK! z7Az)1Ml$rC;zOoZ>XoLniT=?y93tW^Ch|+Fb#TfP-BdO}Tarz!)K@*R_6l2yEwhJ$ zS#Al=NUD}O4}a(d@@GPb(P3 zb2dFkZ^<+_5rZKxz471Tqw%RI?$3)kaz-nug zC^d4eIBAnK0o+`UiDWPEw!m~V{9?D~i^A2y8XGr~+A%%#n z6d<}@hrgeo*}PJdc&ivrt4eNOlxj}HW2U%JMwldzdAj=~$T76w#1S>Bk>Ter{-lo+b$>tAEuqcg!#lGoa;RcFeq9iu~VPh82rF|L#*n~(5>53ra0lI7a4Km=d%d$Kihc|m$9sqH-c!&&kvxF^II78Z3iCYP3xW4w z-gmK_{0?kH;M79N(5YS7DmNBjU`o->jeYRl@5P^DWk1G%$Zs(fw<Mgc5)wWmn~)5`ATN~IGr z+w|lfNuY9AMZMPuAp``zyv)`p^By~rCzq)K(kB_S^~>DflEL;%5*luW%mF8=2d5jM z+Kgb>N7XXlU>buJa1-0_ci*Q=JSIS|(wc zuWQ4j6*!T%$PEDlax*7#q=lY}2wVWA9W)JXgUNbyR;syxY>aXuCN(d0%skh-83HY) zk?CC?Ese7_CBdM#gzU=@*CJ;nOACimr3Nno$gl8monUm-4SqHlveR41vDXkt$TdsQ z0V#wbHMdz6ALh34LFpqH0q=djcAGRi*{oeIQxMH*Vv}egBLJbUd4qUmQBwjcc7`CW za2YS$2{_@(V@xT`)tgI~iVT3?whE3>e9PJp=`99CWiWzV2s-E37tgbBITBFaa=X;6 zOw)EasnS%K`G*7wgIgx(*5M^8xSD5$tC^0A68!`26p6b9aqaO@+!m7LfqQBIlx)Fb z1aI_jhY3#KGmh~mGIoZsf%|I%fiD8%b2T!BOr+qin_&X^>Tl+VVGA&bS~Q70%d_-e z9Q4%<^h)qwauE#yFxuPU50+w3<03PS1M^L|+yq4+p0X>l2yrm?k?H3RJ2;(&2PkBe zdk44u4_PXPMtoP=Iw-8M7!M*$@R8&AIcItYZ3Y(shM|;rqz5DpfnZ8?}Uib>=4Ypo+?#% z`0H{YTj}5Yvv9N(sSqaO1#fa_sz6zXH6Lwyng7hgHt7X(Yssx`ftR*N;(ba2G#`u4 zMqV4zPJB!axir0En7{_-9FS(-1dq*IEmZoWR%5u*_dI7i{iGeZMD$Caul1A%2F>Bu zpsU-Yki8}hy_zU{!w}YA@cFL{asKJk!MkI|j`N`7O$wO&TbwjrKjy6~Veez=lkQ#Q z6@MEk?3e1{lbBbgfPdaA)gIMF0tl0A!@8ZF5nnT2ZHfP(W$hu37&>a2y zSH#b|HGXGHjPa#sFRdQry3{i+mbc(;dRKSb3o(wa95lCJoE$G4K!B=Au~xfhc`(Xx z4H#aF90!*`Ug&vHYFp#=SBX9UCF<_Pk6C#OKr;!(TWRypl6(5G7QmbgQP+vtM@@x& z%XKriLy|2d0K5CsTK596T;y7L461D`Z*SJ%?WzX5-Dc>eEQ!ez6rMWqAX~zz z>Veb5i3VO@K1UqkZU;v`_Q-aN(K+2e<&>L zZOE+?j-TW@UjfC{QLm#-byT?+dIN|@#iYeR=m(~Oj}z`X&`B)L=SU4fCpQgMRDh3~;#GbhS?w_Xv ztHtm>lSAJhcoU$05Xkt}<3JvR2g61!KUeO7C>pX6EH6Ru+*{(3?S+Q@!@-sqa#n%{ znoc4Jc41@y979lpN~wyTmM6E1V;G3{KD@WBiPU*Zj;_y zP6-|1$U~NphXQD-TRo)jcf&A;I&{coZ&aCE{pki(#)KH;0rwPVr`SaCG0r+$S;rva zl1%6HfML)@mC%u;;#wPr+;)mnDmZ3KsX)N8MJzocLL9;}h64Pc`=x$9kTM`hxnf?Z zyWn0VXclbanS0c&vZ@d|xQ*XMzW>>Ci67)hdGb6m$CRcpiWvg7Af(Qq4+a;3&YgSl zUN8^P{(#-ROv>-~Eu4_XM3WGUSR_H!q0P4C46(@`XIE)xZZMOvyQ>4Y7b5<7K5jrA zupuUYuSo(n9_HE)&5}TzQOiJ7EKjW*fsAJm_uNO<`0jx(g2S-Mz;Z8Q;IjpC?=b;* zN+WokN{sd~n#@{6Pme6p2$#TFXAIUP>B7+H zhTcAwVqP-O!RqJn0wqeo^f{q;B~EnC%s(&8yTVhhy;x3%ej78{7BuASD*4GD1@D-& zp@nS_ISbvPzj%>QxqZ`+`%J*^jTHfF=N6+E9e11Ehl)a3|Tm^py{b;~m);45McJOCN0q+Qv!zA8@TFDy|(d4=(p$ z)BN6R@>Z)}270?iKtUtkDckjsx(mca5m?k5GF>ml&jUu#OoZtKuwE!5^k%qvrg=+2 zCv-&*UW~VdR9y>|pg3p(MqEuh(Nh7R17-$L=1skoELXL$q}|;LVLcW|YJ_aj6rkT> zatk)XKpSlk|Ev5uc!PrjhBi9jI>YfK%i~7|}z`SlzK%xYGC?F!C)AF4(UGVK=z`9a6g-f7k5&<6r@Hklim^y_=fZcP8 zVQ2u16d@1WC*MR#}g-J8+i*%P83@*@96?3hV%ol6$^jQeEfI6`_JDc zuUxU=peZcyDqFe_S>N$GmrveCJbAHU(ZbhvY2SE@AZ}m1>$9)!>p6_S|8dHdcm8wF zKi)ou=6L4h6bz9(wfhH`Uzq>Wm+69QR{itmeao_Q{+8~z&g{YQ>hWK9Nm6g9TCd?m z#}U^4!m=dd*ve|gOVdl-RbuXF+8UB&>U!F64fQy=t&sdt8Dn<+gQw$F++MSP${DV8 zQs{aLJiGp*9p$T8ebJN+{!^F7mQt*pNu;*XQrauVI5GQ4e_F;^U-Vs@Nu6|q!qv$` z?NjNm7>`o?8T2;~Q?TDHq$I2$yZ;;=U&0ojBMS5H6Rmqr_&yMdJ{ zT5z-Hq_kJPbQBII?uH7EycCa?(#C3(>%}9_cM5lHQOhUg;A{se?`Q5NwU0*6iM7Se zBHNy?a4nood6&W}l)h`s&u?EzD3QNI8TktCitr8cR#!3w)UoU~NkR(iK+-JwaN*j( zluM$zB+_U3QT{)dQciR0gkJ^gl0NBjzRfab%@~c) zF-KavaCS3mJe~d0-o*Uf@=5*|;bOYt1if=f{qJ=#6JJHAP(B$HerNwX(G^vfa-*Z1 z`=)WLY|m&GaZ4KfW|TD^KQ{GDYrV4kuIVP#l0Dtk7v-OFHw#u(r!bf-eXt=bUN!d5 z(UipV+4LtGOFiG?&dpyDyVVtSxWqH%5aRjgTJ*(I+-XVcHR@?sbHdgW6-o4JN$&S) zxVtIGkp*ZKj_$(AhSNmVi5)W!;m59>;zbRm4$MTpYo5g0--+8m8c12qADFqsn6*ZH zTZ<*~^nY7rT2N?@Jnq9nL2n-fS|udve*H*RAIx68bA^ku61 zBm_ubnD1E|xFk5eu!P-3I7DkpCw(9~oi~GSIw;L^^;t%|ak4XSiGu4t8ZfeToIm4}f$le#gF+rGzhhGeFkn}L?8 za=%|*Z%QIBpk`%SE4;apce7@A${4d``)avY64qG~<=1D@Eu%H+4tokaeQyF<{lkMV zJ1j~hm?27BXT*un@p&&J3qFvYQK8YWBN&;}T?cB>n~-w;p3r}aH$?6`nnW~COO_7L zLC&RaNGQR(zo#a!tmC3ds8KIV@@?)pHrJUiC+T)t@?1%11>_EHzFF8Z)?q&v}d7`r(`@+xZn=~DXB2N=65 z9l=gje`j<$zxOD`&^z{G^gyk@l6;vxnnvn)#d+yiYzV@}^J^G`9ig{GtiCk)!SOlu zt|;5eYWIWJOSsjg61aq_Pfre!2$$0SSLNg#u20ICmVBkqJ=4kB1TP^%!G>co`2!Z~ zXyF{P<+_And9Xjqmd;Zm?-O0|$jDa(89gQZE%nOgK7xHD{IxRC8gE$5o=Qdcla_;b47{y{!6@Msr6l);)Usk`%86bDN9 z>0sZB)YaOw&sf)`TU>oFax9*z3#l=cl$h(31#sX<-atx%ZI&p1j;vdfTeEQX>4md< zm-b;b(|9$!3S9@C?S)yq-S7@#H$KaYI*cTYJe|#%^VbqIeT_I_>+S?w-sR@ZzmnTV z=Zd(!@8K}^5@)Mc;o$0s$|2L!f{p?po`{XH>-W+OMBUHd?Gn~`D&6& zw{)zIa-)Nt>>T(S|FtVEE8~^zlqXFK6#F{Uu(cqXzp?Qd6Rd`6I2K!+C?AgVu->S? z)c0aE{Fgo53dfh{U%!U*3i^G)$h8Zk6;O4_Ht&`1>7s~ozi1#%E$;}ZHi?&6l`vJ6u<|fj=p2x~LAKqC znO<@n-?sA1TfBJHrQuS&2$v6~u;=^ePGNfrTazRr!5?$qbXDgzpLRu4WUiaYuHEuI z4dbv?B-*B=hco1x6;FifF3>+s+%110y5?C=b>hfA3cEnu*NG$c&!o(vzl67B#^(FK z#}V72;A<^VN+f!^k_5w1{^r&BbHw@kZS^fVUu^9-VE>NK>VV_^=|?tyy=Y(7%O|>! z?gAV2IFj#u=0MU7;g(nXzm}I}WsD^|m8GyhN!X)>aAo3THmD-tk4s-cdzWTzKno=_ z^e!cF1wE!Fwe7;Q>x?R6i)Zc)RYKs&j+u8;796y`OYd4(|DdYCoD4fj8qu}VRXuh{ z?^!1)fj?G$#m%mqedm?ntbG{^LxNc(r^H?9e3Z_(2MLUom1uG4C2+tejS9KDBt^^@gD zUi-@4Wu$}LO!>a(yCbbN(S0ooE;o15EfuZ>vnj-}N%^L@4f#{xnT%4-G#-=&GtWJ{ zLeOQi?Zs<-`9;w$Je5NE|rLP z?M`q{Ig?Nb%YTyjpzC{Tc>cz{$H~TZ66wCVpL9{=$MAQiJxxvw?I(_%T&T?WY~p?W ztDhw_$lS$-Nds|rxAJ>mj7~N`Sn0|~=cFDlai2(!zP%X@j)8jRq5<~o7Mk^f;H#XIhtqe9g!$h;Bl4$?mn{#ijA#TJvB_OvM9m5u>{Z=Y)dF598r=jfTf&iZHUa({os8* z*}Qb+8N{_zT1FA{PPXd&*Uha*Rm}ia^-EGWkX+e;yEE%xrh?pWY_0VtBNY^qW&h+E zvHqIq%Gmq^8es7UGKoZsgCTBlca!%|@ z3vCd(>#aChg>za|>*cR<-uUYhxxkt|_uYauqI1f`fs?eciLHCIxY`YM;{L)pczfg> z!X+N;FV7ydN)nZGjcO$Cb9N)iy^LYHFdvXaPfhgU67C?${|6iR+EMbCInVHWA71Xy zJNELelgvq?k$e<;o9DaQdr_Q-)V}ht&?~5(HbjEGX76fG+6?nymxa>2Lbe$}D+%uR zgnU!Azpt<>iL^bIx5rb4SS8Js1?gl9(+zdz`O713k@I)EPb$ZnxmeYbz}jjFmZrvT zJ<*jCQ1njDiG_Xjttx+fiTfRN9H%?3Kda&@E6}xqno9nlGaeP=Q{L8Hm zC@2gqzuo&a-h_^pDsTNT_BE1l8C_@Il}W{cq z#rT=jCv3BCAlAICfT&#B9SZb3?CUN)Vf!PEP1OBoIkaGxhK1Hj$`iJ~A`1>aZeZb+ zVV%Brqjl><`*k6ww>BZFuHp^B8Fev00wYg*orH&-@W|6x@0tg_D>b-YoY)alwyaCX2K8XPm%>YQu<<}_DS?8X0Lk;n`uhv1Y zocqsej2<{tl4zSPJ5%~ybJVybL04X0yRiQK2!EnMhvwP+vku`EK&!f~aX;mj=Uq;~ z5R0jb4QB3?jeF7kg;kHbcc?huH7~uk9)s^Ylf?O@wEpDxb(0|EH)qZD{uim|1d2yM z3KgD*jgp_gY7EV9FPq%Cv28R8SfOTgJUv_{gu40Md^hxT{c%7tRgV>76c@a&0plr2 zyv%;Y?f_!tv_@SYNj&|KB1+&DO7z8ZZvgu7OMTZai>FLgp12}*1)YG%yAanQ@$jSp zK)k9X&7;6-Eh63Y#9^Q-1{WO!-1-sw24Ha}@iSKC?;kNw68uy|ADc2Uzdc9V9?b4a|y zWMdq3{y+V@unHHwk@Rzy8$62~Tg`m*>3DoGB@ehrXe%&iZ8U0N>q9;h@P00p^8O6- zibtfVB_+|5lkr&?kgFR>H#9vGsY}udaKUH!N1*}zEqqtxETfG2q{%;r%)&YYtg(dq z5fe`y%Os*$e+qD)P3fV+X%=qyv84b2^bPVz(+{nGfY%T5%)l$neE(hP@O)&vN!~>f zzyI>XRu`?;uj-<}C7I}IM9`ozLx)piS+DkQT_a`>M_I39xafG-VZoO|}BN1Y^?T7XumJn4MbBFH!RTt{<%E?QN^B^7 z$XH6!P|?n4Kv#Yf>*2*u@+6nKV;6N5SR*zFGu0n?Ym(q-q zP-#1$`;p>hdiOFDm$oXrIm;~MmxAUjB<7x3#UTt}&6{oZ_AGz7t9h)-K_ zy3^xN4+&OMvveECmILo0{4Lr1YKgx+UQ+qZ6OASB&+u#zWRpDmoF<&CixR*Us}c^2 zcbU|fu)< z@idA@w&-QXU++J4%|{__|Dx*Qp~~}JKmAZAHI^Jl*uSx>c%lM%Nk3Xxo72jA(gjV+ z58R%BQ#&;9zh~L(bQY7k+GKa+ydoOOdIH2S4WF9Um@6&+gc+C76%Ji!M(E|#sWkj{=uqyX%R^?YN;Oibyeh*#%3K2-U(k+i$xms5Z zXd|BVzbAQSzz!YZY(>1R=uGPHTv>NP2U0W#8M&ca`ic?Qw8w;8JW!-Sq2bydca~Hm zkn^T=bkcu44$|;$$i0qbjh~-7f7y=rT9k_54@sL#NZtnn+oTG4zOi59IJ4Y@H~L-@ zyyHC46}gk0^$C%?1<7E3Vm_2+>x~e263z}ZF3139UXYlT-jnf)z&w8 z|C}FBlDCh{9sj0Z9$kOQf9z#>d<3rF#8pciK4?dx2EW{#qad2FlSi%`?3UhQqlc;A z(zvLxUtal=X6$MSiM{1O!5VA!(42=?rDLpGm?^#=O-+Q+&dBK7t4QX6Or=@PbfFHAW70_-Un9A1PF$Hs{Bs)c*+8?W?t2U^NV_7l zmvqs2cF$RYfz7dXN|4*2fV`k0D_pX0d&TAmcQ{aZs$Jm>|Nd{J&n9mi7|k$QXXc$8 zQ-p1bzdf*IlDBD^+*t*TkXaBmKOM`xzc(|#BUl}zjZiE=%9&%EKax>qaDs&|hhyk$ z)>)$a93<3^;}~Hd{}|3`or8c1f_hvKUA!Z+as225Yprx(==0~u ztsZ5Ivp(nb5}Ikb+%m9P6W&S~I@g^PS^w~X=+h3!bShB+xXV@pnI)=TyYd*x5TWLXmIgN;g3e&v0R;pEmNhN5^xZ|37Z- zyvy_zah!AAut7{n2_7FC0szHB1x7`0blzl_b4l}4>G@OWmQ4A=Fb?52hZ7CCn#`6R zr@jKf8N^kqQK;uf3pYD2ZOy;l@Eo77lC|WSfN;m2Qi4@DUG@ntC}x|E{tbIx^XzY_ zKG*b8$boyKhSlW2?E^udz}J$l>_E8R)bgM3U9Dst7<+JGr=2r zP?MpUTOe&t#`FTJ6(@tSL$6WVtC+vDW>x_VHb?ZsrFeL@=s&&fDz{m09 z&m{Dv0pDSZK8){|j$bQSXN(h#{B7egL(j<)zH6niqL#_;gTgZX|B&|PQB7X$-hZoA zYAw@JaMHn zW;BEj+I6kXpKK&ugBvErywKlCMg~b>u-Ju-9uD@AkEj`zc^!+|tWRsp!Q!svz+q89 z++&sxu`FY|Ziq3i%QU4&^J8-dpsTv%%_6f!*Cc(+$A7U2qD}ID@I4?r%62x)_IJ@M zYh$PxDDK?H(;Gp53cw>MrnZhJn0*aT>;$Ud4S04z}Q}fT#}?J>CdOFR_@=lv$Y{%UTxZ35C{bqUxi(@)*&UzT0?o|7*1InPA>H9nj| z09Z`q-FpPEpkw%MC-dk`>#3e z`hG)H1bM&3US)rCZ{kR9Sn=a9R>^|F-=mb1-VVviD&F}YZxXUAg#|QX73&_d6Yiqv z|2fIoAWJ>l-65*jPi&hP?KVX2-2BI5kZ}g^>3_ejfM3{qhwkJS-?^*!U-RMN^uDm9 zMTE+*L(D_0etXf6H)9BUOH7kI{!R5gN^egI_o3rRWeD?lmcEEO_gClf(3Yux5%O*n z{SW+Iq|U-FKtRhcfHo9B!tMVgZ3M0Po0Nr%G`Rkiy=Lp)08r@yvG>~MZ(Uf0d`UTA z!iE%vO@H(4MQKv|NQikO+5^Dh^yQ%Ub{&5uY`3KpbgU8SZ|xf`6Ker=_5S0%)VF{c zc${oPMdg+4W%l>f?5E%d?WxHZEL)Wij-w()NBgkvLM3N?kBVyt|ZF?%-) zJN1JX*VkkVw{&z!SKf-Es<y+UTcJ+)U0im>2Nh|`2h zPv*oc4~Q7t6A=IQ-1_JJb4|ENaFEYWF{3p4+wz+IQKM;hh@!=IG<0f3(#a^>Pf6KF zqaQ`Z=GyZDWbg6v#uG5PW2`D2K9{l2U;l&3Q&R30wIC2#>fWsIv=Q_a?%-4L6PLI! zW4sqDNs_rK=ih@xeiYQ+47j*#@1?8!PRp5sbrC>PKS7l7X0_O`uhi|&)?4d_YlI{vvQo>og~*bcdrr6)oU6deg&!| zXZIEmcHRTN&N(pe&T>${11g4`q_?+04Nz0o-0+^b_sHiq{-9b1Qrg&q*G;(y8LNcO1ZwEIM> zXl7VJ?jaU84cMzK)Rh0{_jiMUDk*>$L5&e?8ImrQim~d(fE3kD zPGcnU<=0RVql2P?OXvH-&BU&9O}3gF{F0a64|fm_+4 z9=Qq(E$EG%Dlui16<3F+MnX3c)rGqCYMAxyRTuI(ug^I?@}fv>RNCCjTIH)>5%2n! zm>1Ed4}?*yw~ylL_5wI8QcPACzV(W6w-O~@d|CtPmlD&xwmei0Nj!8+R>X+A)(1WJ zhO?Q@OqIWp(?r!h87IM>rX|etjb$-=WWAFF?xWT4V65pk(Km2bRVE}MGF_umh!Y2< zhjY3X!t}c~AkdfNEDjNAa~=@2%)67onR4#)#lE>66KdELkwe zghbZVkf1I*0hz@KOdj_jd{QE-RC7dz4tEABl4ZVqf*_t;g`hFfkr*fSF@8PB&JGIPc{#7*Ab$gq92Ay z3RxOe7s7ZTL@6J+pF;$ClITivrJ_Y&Ct#2u^{Mi147X5oc(-^zbzlQa#x(L}f6`W! zGwBIgE09krmbT(uqFp?B{J9Xp^)v;Xxb(qego^?b$)dwjN2epIOc!AGVqX|a90gQI z@FkJklDm_8di9NYq`f8h02}bX;)u0EQzI;H0z)w8EiT+KOD5&=K1(HAt{K=t3Bo9DaR zlXmcaJKde+>)F1FJ7-Uowke=KC`YP^LECRBRua)6C;nj_qbGmqeZY)z0s1IPqk1#E z_5FET(;qSXB?pz99NZ{=x;qR9Dl$on)CXNbSIE1T0M={y*7fhj0cHA9yb2@spe8?O z&X~%}@CLwaxKVa%K~@n40Wv*P#k2q6^$KH3ihwTb5DP3xES!>2QTPqgtfe0p8S|9N zS1s>;uNZ>41x&8jXqosi+);xXwTsST7nD#c;2W6*QFr{45+ z%h=`;r%>ipGT7-<7JOk@5gpXb6q|>&&~|giCfkXUZE=*^l8N|NO8Kg`RFvF)6{7TYybvWiZH^kSHT#PkaIJ}g=7&30CL8hFY zYWBrXOs*h3s&N1h5=OLC;IrHQ<5A|g_}A@d96y048JjrWtW7-b=M*d|w_<+yt8K2ti9T&LKjx5nu6aq|HPzfa^A?+Z z)EH(wN~R?FFY!7!TC{(ylwwpO&7AKjYYRkcb6|CAxwCrXjY9M>ssjZa=`OZBoA>&s zI9qTZ)7j;c!P<;q6$Y4It-T?3)CJBy%T_*3ooQm3B(!Mw;VdfL@X9GReG0oKaQAkL ziMN%IU_2V;MP8zmJ0OX^*-Feo*==8Q_5@c@PrX*2zzdk*IkU6YeH1AWrm3saMr%n$ zA_#--?zTilqc$9{v$6^j;op;0%E z^BAtL4#UUFJNU`6#GIoNRK%FN|v!(=Ddhy>nWV7Cpel`I8NZr<3 zCy&X`mLLQyem47Emx53wYSG+rU?-JCU%$ub7tQ5M{q+$A<8| zr=5%XmnbveR~ruS7bhAT#?56(wRRAqrq5;bnq()*;Yz}N0+0p5kc^xXqDT34g|nYoJ+rxwJNzg#XW_lyM6@L2RoI$#k*5m z^8<@SmR*Z&sWtl#N3r0OHToG(QtcarE8jRRK}3yK)AQj&Yjhxjc7|<%1Dk)plkole zMs;))6jWUfx`O^j(K8d!xaxlk1vpqG7j)&`3!=^vH;MwBUX9jwIXP4F{Ylw3RL8RX zWK`7`=!Jik&kvWFdgr;jzxHbHsM!yS=GcryR^t19^xyYsRqWLdHvQk+h-w!ua>Ag$nMmH9H{)2sGfr$Rj34Tz#AK4su`c^=XzbsKoi#*{5&HfMW!V8|#|w8{KvQbC5iz_RlV}$^%Xlf}yV^eW6K8 zq}Q1uYwy~epJ%Ldp*sS7wxMdA4z6wIvK+rcJ(^8>c;#LDyWh4V(G}l?J*Ms4QWzLr zRjyoVQJ_Ugi4iOXZb`9!Y(~O!c7~Eqal=CGhQ5p*SO zIDTC8RP5d}Fp>eRqvE;M*JN3DbMzfW_BOupmKv=zc~KIP_|F{zDcyez|B=GU>+Nm&QfjlGkm%EH zM91eE0|xb-2?sDo-q=7)C$;*YjYw9=UKiG!?D{jjivxcR-8KL{?+4#`MqqAo(cNJ8 z)fvBb<5xLK{A^M_^|2;7o8L|NK72DDcl;P%+>~vpyG!JANlYf^XM$z$KDPPF&IZ@# zNdtL;vy%mZwDl#;EshcxJJ}A3-~{&pHsu;`rno@h9oe!feq|a1DlNTGM0x1~r1{hUnVT0zQ^==%$a}A6^QM zo3g)2_lHYU)aBdYlC7ZexeTOigEw-92j~0PhDsoe2C7DiG*8u2Gd@CY0u-oeLBz6( z9VH##GZ&#h+XtjrMGKqu;#XnE15TCir6fIn004nqhlr}fKYs(TdqNQ!wEIt=1+pAMjf9{}I~@`rw) zL}2UJgTD2xp_8ur^+$ogMgmH-n30Q}NT7Rv&nIlv4{iv1*#6g->7qBM6EcHB)%y_x z!OgM9kq8(Mp$4=w2-x0`0bZZ?Pe@5 z11q4dwIAs~wX?AH!R1aLB}r(>Jk{J+Q5Xi+*Rko#ib$*#FE7TD8cOO=QRL_h%i5h$ zXoK;zaXR#NUQ~F?I@-GNS{JcX?}b}Y5Ve+|8hYx;^H%^5r{FuXp1M%6K0= zrKd#Hibg*EVnSROVD7Gw8yZ{ZdxQPlXpvq&330Mft*yssy}Fspn!U$MZR+@TB)O}q zLXGH!F|YwL&EpG>pNf5B6rjo|NZC7EFDGwP3>2bU5-vfCiPG3lMG=Fxq3&#sI90}- zi9%9X z5M+&_&nG-E7|L5>^ntbn`FTOTU6%yjf4lPnOh9S6wJ)Wnpl5S1n%+=%>!VcKttZ~} z!gq#-q){@I21C#(uZ|He!;SI$q-;>v(@@6}(JkVvZ0-5mAsr;tu zd-4t+h?jT!16l#Ggm$@76n>~Jrl?FvOQsYk4Ce3AC*vsTO~c0T!KW*eC;>{CX|jZe z%MgT-8ZQvya|`*8TwrCn@?Wz8(e51?=SpvQ9^t2Yb!fC-MK6w&&D4hy$9@T5zS*ll z_xy-1Hq@*q^B0rl?bnjc@qg^<&2;E*=4!sIW*?>r11#z*(1M$En;s3W|GSs5mGT%e zMr(ZTqZAO+Wd@&VSyNpf{{u5^T+t_s$7h}k7!uD-wKp!kX6HAFb%_*fj-{P3Zrj)+ zD8XD1<2Z(*gX%O|l_)xZdBnT-_YcI%wG1@!s)o0GQJ%BTYj^aN<91XQErE6yiYTKc zbc!=WQ3ssDi+8Y=Px(zGFdk%0*R#xPW-WX8QC?dmeK=?~oYU&{)bC=RGyjo|*onH zapWrMGS{#M!|T$x7Ur8D*`ZV%pZEJ3G2-V9NIM%JB=vI_xI391SB1E_pGL!u*hL?V z`~%58BD=e1Z$f)|iZ0Se0} z=jfvwF-4E30G{>vO)7qs{T?90g2)O1PIfdr3-^O0I`9HB_q~4kUtbe+d4WO~q;KcU zq7cROX=;jlq+)&6t;b*L)X1Xv4do}_`B_}|xJMJ`aSoMn@}|2Ae&`7=e_x2F)_tK0 z#dmR%G_HB4%#xbQ93|=7hM{{?ZX`@+@S4cyMh6GJn-JFy5QpU*FI(!S01yh{+%%wEE;_^Q^D8G68H$@a*R zhjPO^X_li+M0;v{ZqwOqQn~DIPBl?@O>OaWlEi-5^kKK6-wD?_@MKnuA6cCmyu+F; zGCsQVOvJHO2>;f0N8T;g(!`r9&!pt>bM`E>P@)G^&LB@v;wlVAo`0eXn{gQI-9ellna?}+^sL5cWnbehua=5$PT zjXaQaJ1My9tvTl9{dbp-KGYv1>2vl~$dJ~?RjQTa(2Oj9G;*^r&X9^fyVa(wO=bpY90 zJ79_;pDWJf^!fUDRCtcc?x@+AeH8QdPV=*h?Fyt+j%CdS-3L`s^S*!5JS~kEK9B9q zfZ-pXwI{3Q!qJo1dr4l7f!}^7Wz7v8uh37&{2}y!Fb-1Jur|`TpXl0#H}JX1QAmwm z)Ar-@g)POxFZjV<7~Z8L!Ffd@`b+@9z3nJgqgeIdj1$xp%iTSYf2UD6fXP{d$mdR> zS}z{T!vEd@dXoFY#6VP`xj5m*H2})b8EEtecsFvy>j1c4u^?Z>9yfh#I7;t7*mB=f ztAOsk0~lT~iOWG{eU;Q;f4~I@eL#z6S0EYWfc@{mQ#l|=6PtnR9pJ0kc|dzXe@kEP zoTXk1#P~mjY5!ynGDM(Bw;cuq_GLoQQK;W9)FO7LyednZFyE>YW0tMrP6m_BB*6a$Wy`2LBml21{ zOvVA%o*=TS`c^@WxY|YDw4cd`@nNYTgH?>U`z0yG*;7-cpD(>!LBVr41c*Ul_z2%j%d4>)xW zX?Mb8F=?f@=Nu=J9?+Uxu7S-pyk6$du|7DCKF$pzzuT|lvpzO_`j{!#pWN@gmF+uw z-ZiI$dxvXlu5{F0L42udb9F}aHoV2d@!O^`cc4WrEe3eX`0VwP3hpK0HNG-N%BGK< zxPjRG+k*38=Z6Q?YTt*Zxu9*WcB2c*b%s|mm!t|OG^%nfgVrE9BiroK5QtMv8$(|*#aaJZX)TwY`Y*7{>`{q0?e{+mdP zoFsn{(a@(28b7D;3HyjFtzMT_fM^U$?A?IQ{{K7a5&814_ftL}?{L^vyB#3kd%|`T zRh5A9Zkq!p7w;kZD4@1t{m$}8bmrs$xMNcwFT`*_L==By=wARPB$V{LGRkZyDmN#@ zE^b+TQWP_sd?V>toagz644akI^!8)&LKje_9?5PL3%-vf?(GS->ah2x{U5U%8urr) zsbc5fs`t|v*R2*R8*Q3$xAAf>YhTq!KIh&L$l<5B;wSHFi32LpkZFCh>!x1Ic>U!( zC1qd(Vt{16HB>=Yym7cJT%qYHUq@E8%r|7$sJ*gLXAPd3%5nONqh1H=xZC7n3or8{v8f^O8h8q_tvACcAY+K6 zq+e>Vd^B|I%?AEr4;XUzmoGtS2OE5>*H>*QMAL*9ozb6Rh~nUlvEk--4y^o(++!^b z_0bkLM@i%7RZ?ep4hCb(4NYm8@M2_KIU>kcf-t_3TTwZc3{a5$4(Da@V^eeJD6)fMglYezAsqaBY`tZhWo3Xc%%gdJ{E!?qSn@ zTEn#MKB>Q}lO(F(m=zHnj7B^N=;;VO8YI%upck~gZE2KkBvZrvUmrIF&da~{;WOVB z+^`Kdlup^6Haj<4TeFUIEeR`jN|*C&o66Vyrh7i<^}VclOVnb#N&9*X4^`T2&IfyU^9`CKYuf)f@XKNNqVQVgwhUFiBrou z!YEpx4)FoLKxKgTXNLgkA!3fdB)d)jxu!a*v@CrOayt6mPIYym)?2@1v*K+RZJ0NE zI`}paCB5s*_>$>(DmH4OyoLz+gJY?OEEj?5vuKemuxluJpVwaNupd0=D!w>Tu>j0- z{zWHz(UG@saRRjVm_JedSLpwDXrstey&1IIw}a{q-qG!E3}HRweQoA%|GL${6yhbI zMS(jYf60IF6j-9>uwf+Wm0PkI2=DFyhyXOD@wbrx;J7~rym z#+pcx==MY9kPF+1fwb~%59r%>`kG(Z!oi^i*BrHjkup%ur0KGlbabVXL0batv{hn8 z@h;2to`;I5AV*~a0(_GwAc!96!Gw5T@r#o5V^~9 zdKa&xjjtPA5?FZ`?{2oVko1=9qyhYD#8|{D#J|RX*?$bGpN#3=>5JaI#d|PbwRP~% zD$Utr`>A%(u7vE-4Gx+I>dAr7iKN>H`8-ymzOt~h(HB0%bLyJHc)gULp7()3J9%4* z-w=bv=TH}j9*L;6Ca+JQ4`wdCz>=rqHy>`kgw_p8^&qSWH;Y66qQXu45gtMbjuc9YeXZvq4%VovHU^+YAkAR%7mW z(cg$WZK9b4YVrJ;v%m8CEdx)u>Ce8eE&YcVU!Pq9jmIR z2$Laf7-&OIV@lO|>eO$qg}CJi%IT}d(q7c(u<1_YKH0m3Y-}Z{H+~)3vx{VB8pcx} z$#&KX3n21Jc!=9AfV8mHl<;)mt~hmeDkbn2F}K8(GvOnyB^!UD{uuZQnv#II5pKuY z=On9++W3JTdtuuh(aiy(efv)RtL2T9ipz-j{6{5OhbHE9_m_)1{USDHbR#f*vOf!& zOJ<@w%~FEfq(RvzWE)1Wiq{RZZ?3D%v7Jp?^072W?ZOShf$JQij44#U8*+${+0^Nn zWteM8mp(`CBF`CoYOT#JVtmTzK&GF?aBt%V>?2^iAJhT zit99~ff=YQI~aCX9tKkZ-56k*7Rlo3`|uOfV&v^a!@MlzQEN~ABB$3<&%n7MKN;6& zF57qSTVG~09|R}2Nj2hXDU0;_m9$@8zLnGNOQ4AjyngvIjm!4V#edS@1N#330b}{Y z4VwrvJ`?{tzLm)ArUUS%e*u&#{>`Tp;{OT(f0=wn181OB0PCdy7}fzeNB~1m>K~?2 zJ+Pw0u)qEb%=$M6r2duo5_p8Q152|o@i!DdoVajgg9F~)qQD9xy;cxz1fgfixbW}Z zK))GWja|zotCQlP?ktmvRkq(_(pFj?FfNY;>%*cXl2IVyqa86ukcE@;ygO3{sEu;x z!0JQynhOD3>AoXKM!ut*UFmEDM@RiSSX_ZQb=d03&eKEKV?GB3yo6kNk(0dIvK|x* zF33-QtWP-@p$|VG>Z0YyqTWze{vRfM^V9vb)3>szg;z9ZU-xSDslVt7Yp?M>Qscac zHWh?)|M0HDX@zhuv_dO8YgFGm{lsiZw>gW9r^dxT`y{sW!6lHusr$8>Az${|c0#3ivLN>NY-$G5<|7{8>lr)auc@2>u7chi#>3n=K;>3* z;P>{^J_sIzh3%H{S1y2%tgtwCZtI3xpo(n~R zzFwL1=^dMOJM;O|jx;$GY+av)jRkBM4T7Efx}lVBe=g2c#Xs0jRE>YRqf6yaC98}O zd?MEjdTZy`^ZT6)V%_=WhEJ#CzSrRR4IB1i49eKtI9Rl;*(_~%lnqlGT8^rD!RukP z=K$QXz;sE-shXC?FVWQHQPm-!ZWqR{GOhX#Uhe;60y?8tik=t*Kh2GArV0D@ozBF? zUshf!2O%sRu6`j(EP{()_)C4R$eLZ6K;8`t68#6Mv)VcdvE4&mzW4qk?y?)mg0NBj zP3l9{Uq*97S33El@NT*EAYBDKs*)}p%427paJlDi1*V8&rlVQJp|HQ(%>T9f%e>EB z!mgSwQw*bF+GNY&|Jmh43uPoj*{VNb4$cfmctRG=ON+0Wh`~aT?FU2h<2sV170Wh8 zh9nwKUt}Ti0oHcqtZQED`jHWnN$r_B0qhN{_j4jnMx;kVr#t|N8Jo=vDme|u9Et;` zeRAEW&`$PFeLYD@8k^8ffZ9>Z-HApvjg?gFFC|&C%4kl%Mwb+^(cP z5z1zcva6lu{bcP1*v#|c4Kkn0d6T?q6F`aR!UGypax`3WgX#n{v-b0)>Kr0yr2jRP zTJl9DHT}&eQ|*g!?xZTQjIs2#l5tnEf9(x@CB5_w!9o@h0+)DwsL>w`?iE3*A_%ld zbo>wUZ9R_8)VV`7rw5mDLVIA`(B6@DvsjXv5~}KXTyBU(ZAL-`H|g!SRho9y!f2Dw z8pVkWUE$@Qau7d=eV2E)Z>E(0GVXRP2Ym0m3pBo%`MP5N%-rh@&}L0z-lO%oa$dL} z`CJ^65{F`p)TxafWdAz4yg%jJ_Yg+Qla2-N`>qjR=qBg67l91o+~I>{Z&X=bml2Ck z%$yBAnEqR^UI-5X9Z-kl9u0Q$a$SP;nv1zS+d{|1{%BM6&oR79S@n5tDgPK-%`fbr z@UcXW|Jc$V2-+V_DSMQS1Dr@|M8Jw?A7X-3r@ZMHoj#b~=}^X{1c(to{-)!5nC8u*m*%@Rb_5hTG|G6J zE#9_+oWk#4{H=3bx6G$}zef+;KY7J>qQu}x_6{SVNH@sMthU^3W3z}q_BQ+yy7`$8 zw3yY&pSI`ly;5S04^%sa)s`c3dfNKg_xPd&X*CU7uoGpsqM#!i_?Gbq@VAbVF}bgZ z1$i^e|KQ^{SeUi;`DIs+)vVay-jrVBF1yNWT0&L4XN#r3qm-{raiCQYQWRRg(huHD z2Rq&OM4lfU0^BzB?_Do}MXf|W19{)(Md$}R%IbGK>JkS71$QwCSluQPD}&*3x8eZp zcDUCS&z9*0#Dk)w8C;WNXNY*C<<(&~Qkb~e2Yo>uLjZ>9czI=T%hjiv#@2OxEx-6V zz5Sao321GU*E5|YQ_8tHOY!$qUJD(FY8m_HH^esw*U+C7GT>Bd%5aBq$>o7 z+h(GgHXyJ;Qy9C_o6!HM)FkRgVi z+|I6`2kLiSX2?Klkb|x#EsXD~Nce?`j#!3ql=N$c@>MV(kO4uYU70_cT!NQ5P5I{u zAaS85?O@EiNAM1FYEMaoZI#$)6r~PsAKWmz_y8CSCPhy6CBhr-uD@FlUBGhnm`zdrUJ=H; zQgL&8Gtvve8~kL$$X=3?mhAP7&#gOI4ud1NvdGO~yy3syJAF0hJTX-svr@+Pn=n6U zx|6UKRDWL|b(Seb=aVbj4StMn<2d^crmZTchJw zKfAlbF7Q23$hQZXB%6U|0BuElhg?mv_6M)�GlZBQUpy^;XZ%(Lw78lcxv5#{LxB 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%0D%V3V!dm<&=lB^`!|27$rnig{gHgg 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 envOMd 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

J_h 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 literal 0 HcmV?d00001 diff --git a/spring-cloud-alibaba-examples/spring-cloud-scheduling-example/pom.xml b/spring-cloud-alibaba-examples/spring-cloud-scheduling-example/pom.xml new file mode 100644 index 000000000..37bbe6cd2 --- /dev/null +++ b/spring-cloud-alibaba-examples/spring-cloud-scheduling-example/pom.xml @@ -0,0 +1,65 @@ + + + + spring-cloud-alibaba-examples + com.alibaba.cloud + ${revision} + ../pom.xml + + 4.0.0 + + spring-cloud-scheduling-example + Spring Cloud Starter Alibaba Scheduling Example + Example demonstrating how to use Spring Cloud Schedule + jar + + + 8.0.28 + + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-schedulerx + + + + org.springframework.boot + spring-boot-starter-web + + + + + org.springframework.boot + spring-boot-starter-jdbc + + + + mysql + mysql-connector-java + ${mysql.version} + + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + org.apache.maven.plugins + maven-deploy-plugin + ${maven-deploy-plugin.version} + + true + + + + + diff --git a/spring-cloud-alibaba-examples/spring-cloud-scheduling-example/src/main/java/com/alibaba/cloud/examples/schedule/ScheduleApplication.java b/spring-cloud-alibaba-examples/spring-cloud-scheduling-example/src/main/java/com/alibaba/cloud/examples/schedule/ScheduleApplication.java new file mode 100644 index 000000000..a2aab18eb --- /dev/null +++ b/spring-cloud-alibaba-examples/spring-cloud-scheduling-example/src/main/java/com/alibaba/cloud/examples/schedule/ScheduleApplication.java @@ -0,0 +1,36 @@ +/* + * Copyright 2024-2025 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.alibaba.cloud.examples.schedule; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.scheduling.annotation.EnableScheduling; + +/** + * ScheduleApplication. + * + * @author yaohui + */ +@SpringBootApplication +@EnableScheduling +public class ScheduleApplication { + + public static void main(String[] args) { + SpringApplication.run(ScheduleApplication.class, args); + } + +} diff --git a/spring-cloud-alibaba-examples/spring-cloud-scheduling-example/src/main/java/com/alibaba/cloud/examples/schedule/job/SimpleJob.java b/spring-cloud-alibaba-examples/spring-cloud-scheduling-example/src/main/java/com/alibaba/cloud/examples/schedule/job/SimpleJob.java new file mode 100644 index 000000000..654e2cb81 --- /dev/null +++ b/spring-cloud-alibaba-examples/spring-cloud-scheduling-example/src/main/java/com/alibaba/cloud/examples/schedule/job/SimpleJob.java @@ -0,0 +1,57 @@ +/* + * Copyright 2024-2025 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.alibaba.cloud.examples.schedule.job; + +import java.util.concurrent.TimeUnit; + +import net.javacrumbs.shedlock.spring.annotation.SchedulerLock; +import org.joda.time.DateTime; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +/** + * @author yaohui + **/ +@Component +public class SimpleJob { + + private static final Logger logger = LoggerFactory.getLogger(SimpleJob.class); + + /** + * run without lock, all instance running at the same time. + */ + @Scheduled(cron = "0 */1 * * * ?") + public void job1() { + logger.info("time=" + DateTime.now().toString("YYYY-MM-dd HH:mm:ss") + " do job1..."); + } + + + /** + * run with lock, only one instance running at the same time. + * + * @throws InterruptedException interrupted exception + */ + @Scheduled(cron = "0 */1 * * * ?") + @SchedulerLock(name = "lock-job2", lockAtMostFor = "10s") + public void job2() throws InterruptedException { + logger.info("time=" + DateTime.now().toString("YYYY-MM-dd HH:mm:ss") + " do job2..."); + TimeUnit.SECONDS.sleep(1L); + } +} diff --git a/spring-cloud-alibaba-examples/spring-cloud-scheduling-example/src/main/resources/application-schedulerx.yaml b/spring-cloud-alibaba-examples/spring-cloud-scheduling-example/src/main/resources/application-schedulerx.yaml new file mode 100644 index 000000000..d01f8bf75 --- /dev/null +++ b/spring-cloud-alibaba-examples/spring-cloud-scheduling-example/src/main/resources/application-schedulerx.yaml @@ -0,0 +1,17 @@ +spring: + cloud: + scheduling: + # Distributed mode: shedlock, schedulerx + distributed-mode: schedulerx + schedulerx: + # This configuration is required, Please get it from aliyun schedulerx console + endpoint: acm.aliyun.com + namespace: aad167f6-xxxx-xxxx-xxxx-xxxxxxxxx + groupId: xxxxx + appKey: PZm1XXXXXXXXXXXX + # Optional config, if you need to sync task to schedulerx +# task-sync: true +# region-id: public +# aliyun-access-key: XXXXXXXXXXXX +# aliyun-secret-key: XXXXXXXXXXXX +# task-model-default: standalone diff --git a/spring-cloud-alibaba-examples/spring-cloud-scheduling-example/src/main/resources/application-shedlock.yaml b/spring-cloud-alibaba-examples/spring-cloud-scheduling-example/src/main/resources/application-shedlock.yaml new file mode 100644 index 000000000..e0c663a32 --- /dev/null +++ b/spring-cloud-alibaba-examples/spring-cloud-scheduling-example/src/main/resources/application-shedlock.yaml @@ -0,0 +1,13 @@ +spring: + cloud: + scheduling: + # Distributed mode: shedlock, schedulerx + distributed-mode: shedlock + datasource: + driver-class: com.mysql.cj.jdbc.Driver + # Change to your database jdbc url value + url: jdbc:mysql://127.0.0.1:3306/testdb?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true + # Change to your database username value + username: root + # Change to your database password value + password: 123456 diff --git a/spring-cloud-alibaba-examples/spring-cloud-scheduling-example/src/main/resources/application.yaml b/spring-cloud-alibaba-examples/spring-cloud-scheduling-example/src/main/resources/application.yaml new file mode 100644 index 000000000..4edaaa7da --- /dev/null +++ b/spring-cloud-alibaba-examples/spring-cloud-scheduling-example/src/main/resources/application.yaml @@ -0,0 +1,17 @@ +server: + port: 18080 +spring: + profiles: + # Select the config file to use, shedlock or schedulerx + active: shedlock + application: + name: spring-cloud-alibaba-schedule-example + # Spring task scheduling config + task: + scheduling: + thread-name-prefix: sca-schedule- + pool: + size: 5 + shutdown: + await-termination: true + await-termination-period: 60s diff --git a/spring-cloud-alibaba-starters/pom.xml b/spring-cloud-alibaba-starters/pom.xml index 4700172ef..5e2be2ede 100644 --- a/spring-cloud-alibaba-starters/pom.xml +++ b/spring-cloud-alibaba-starters/pom.xml @@ -31,6 +31,7 @@ spring-cloud-starter-alibaba-governance-auth spring-cloud-starter-alibaba-governance-routing spring-cloud-alibaba-commons + spring-cloud-starter-alibaba-schedulerx diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/pom.xml b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/pom.xml new file mode 100644 index 000000000..883802617 --- /dev/null +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/pom.xml @@ -0,0 +1,70 @@ + + 4.0.0 + + + com.alibaba.cloud + spring-cloud-alibaba-starters + ${revision} + ../pom.xml + + spring-cloud-starter-alibaba-schedulerx + Spring Cloud Starter Alibaba Scheduling + + + + + + org.springframework.boot + spring-boot-autoconfigure + + + + org.springframework.boot + spring-boot-starter-test + test + + + + org.slf4j + slf4j-api + + + + junit + junit + test + + + + + com.aliyun.schedulerx + schedulerx2-worker + + + + com.aliyun + aliyun-java-sdk-schedulerx2 + 1.1.0 + + + + com.aliyun + aliyun-java-sdk-core + 4.4.6 + + + + + + net.javacrumbs.shedlock + shedlock-spring + + + + net.javacrumbs.shedlock + shedlock-provider-jdbc-template + + + + diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/SchedulingConstants.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/SchedulingConstants.java new file mode 100644 index 000000000..6445f7dfa --- /dev/null +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/SchedulingConstants.java @@ -0,0 +1,38 @@ +/* + * Copyright 2024-2025 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.alibaba.cloud.scheduling; + +/** + * @author yaohui + **/ +public final class SchedulingConstants { + + /** + * Scheduling config prefix. + */ + public static final String SCHEDULING_CONFIG_PREFIX = "spring.cloud.scheduling"; + + /** + * Scheduling distributed mode. + */ + public static final String SCHEDULING_CONFIG_DISTRIBUTED_MODE_KEY = SCHEDULING_CONFIG_PREFIX + ".distributed-mode"; + + private SchedulingConstants() { + throw new AssertionError("Must not instantiate constant utility class"); + } + +} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/schedulerx/JobProperty.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/schedulerx/JobProperty.java new file mode 100644 index 000000000..314e12de1 --- /dev/null +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/schedulerx/JobProperty.java @@ -0,0 +1,151 @@ +/* + * Copyright 2024-2025 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.alibaba.cloud.scheduling.schedulerx; + +import com.alibaba.schedulerx.common.domain.ExecuteMode; +import com.alibaba.schedulerx.common.domain.JobType; + +import org.springframework.boot.context.properties.ConfigurationProperties; + +/** + * Job property. + * + * @author xiaomeng.hxm + */ +@ConfigurationProperties(prefix = SchedulerxProperties.CONFIG_PREFIX) +public final class JobProperty { + + private String jobName; + + private String jobType = JobType.JAVA.getKey(); + + private String jobModel = ExecuteMode.STANDALONE.getKey(); + + private String className; + + private String content; + + private Integer timeType; + + private String timeExpression; + + private String cron; + + private String oneTime; + + private String jobParameter; + + private String description; + + private boolean overwrite = false; + + public String getJobType() { + return jobType; + } + + public void setJobType(String jobType) { + this.jobType = jobType; + } + + public String getJobModel() { + return jobModel; + } + + public void setJobModel(String jobModel) { + this.jobModel = jobModel; + } + + public String getClassName() { + return className; + } + + public void setClassName(String className) { + this.className = className; + } + + public String getCron() { + return cron; + } + + public void setCron(String cron) { + this.cron = cron; + } + + public String getOneTime() { + return oneTime; + } + + public void setOneTime(String oneTime) { + this.oneTime = oneTime; + } + + public String getJobParameter() { + return jobParameter; + } + + public void setJobParameter(String jobParameter) { + this.jobParameter = jobParameter; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public boolean isOverwrite() { + return overwrite; + } + + public void setOverwrite(boolean overwrite) { + this.overwrite = overwrite; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getJobName() { + return jobName; + } + + public void setJobName(String jobName) { + this.jobName = jobName; + } + + public Integer getTimeType() { + return timeType; + } + + public void setTimeType(Integer timeType) { + this.timeType = timeType; + } + + public String getTimeExpression() { + return timeExpression; + } + + public void setTimeExpression(String timeExpression) { + this.timeExpression = timeExpression; + } +} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/schedulerx/SchedulerxAutoConfigure.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/schedulerx/SchedulerxAutoConfigure.java new file mode 100644 index 000000000..261e66577 --- /dev/null +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/schedulerx/SchedulerxAutoConfigure.java @@ -0,0 +1,36 @@ +/* + * Copyright 2024-2025 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.alibaba.cloud.scheduling.schedulerx; + +import com.alibaba.cloud.scheduling.SchedulingConstants; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Import; + +/** + * schedulerx2 starter. + * + * @author yaohui + **/ +@EnableConfigurationProperties(SchedulerxProperties.class) +@ConditionalOnProperty(name = SchedulingConstants.SCHEDULING_CONFIG_DISTRIBUTED_MODE_KEY, havingValue = "schedulerx") +@Import({SchedulerxConfigurations.SchedulerxWorkerConfiguration.class, + SchedulerxConfigurations.SpringScheduleAdaptConfiguration.class}) +public class SchedulerxAutoConfigure { + +} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/schedulerx/SchedulerxConfigurations.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/schedulerx/SchedulerxConfigurations.java new file mode 100644 index 000000000..b2c92bcee --- /dev/null +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/schedulerx/SchedulerxConfigurations.java @@ -0,0 +1,178 @@ +/* + * Copyright 2024-2025 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.alibaba.cloud.scheduling.schedulerx; + +import javax.annotation.PostConstruct; + +import com.alibaba.cloud.scheduling.schedulerx.service.JobSyncService; +import com.alibaba.cloud.scheduling.schedulerx.service.ScheduledJobSyncConfigurer; +import com.alibaba.schedulerx.common.util.ConfigUtil; +import com.alibaba.schedulerx.common.util.StringUtils; +import com.alibaba.schedulerx.worker.SchedulerxWorker; +import com.alibaba.schedulerx.worker.domain.WorkerConstants; +import com.alibaba.schedulerx.worker.log.LogFactory; +import com.alibaba.schedulerx.worker.log.Logger; +import com.alibaba.schedulerx.worker.processor.springscheduling.NoOpScheduler; +import com.alibaba.schedulerx.worker.processor.springscheduling.SchedulerxAnnotationBeanPostProcessor; +import com.alibaba.schedulerx.worker.processor.springscheduling.SchedulerxSchedulingConfigurer; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.AutoConfigureAfter; +import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor; + +/** + * @author yaohui + **/ +public class SchedulerxConfigurations { + + @Configuration(proxyBeanMethods = false) + @ConditionalOnClass(SchedulerxWorker.class) + @ConditionalOnProperty(prefix = SchedulerxProperties.CONFIG_PREFIX, name = "enabled", havingValue = "true", matchIfMissing = true) + static class SchedulerxWorkerConfiguration { + + private static final Logger LOGGER = LogFactory.getLogger(SchedulerxAutoConfigure.class); + + private static final String WORKER_STARTER_SPRING_CLOUD = "springcloud"; + + @Autowired + private SchedulerxProperties properties; + + @Bean + public JobSyncService jobSyncService() { + return new JobSyncService(); + } + + @PostConstruct + public void syncJobs() throws Exception { + if (!properties.getJobs().isEmpty()) { + LOGGER.info("{}.jobs is not empty, start to sync jobs...", SchedulerxProperties.CONFIG_PREFIX); + jobSyncService().syncJobs(); + LOGGER.info("sync jobs finished."); + } + } + + @Bean + public SchedulerxWorker schedulerxWorker() { + SchedulerxWorker schedulerxWorker = new SchedulerxWorker(); + schedulerxWorker.setDomainName(properties.getDomainName()); + schedulerxWorker.setGroupId(properties.getGroupId()); + schedulerxWorker.setEnableBatchWork(properties.isEnableBatchWork()); + schedulerxWorker.setDisableSites(properties.getDisableSites()); + schedulerxWorker.setEnableSites(properties.getEnableSites()); + schedulerxWorker.setDisableUnits(properties.getDisableUnits()); + schedulerxWorker.setEnableUnits(properties.getEnableUnits()); + schedulerxWorker.setAppKey(properties.getAppKey()); + schedulerxWorker.setAliyunAccessKey(properties.getAliyunAccessKey()); + schedulerxWorker.setAliyunSecretKey(properties.getAliyunSecretKey()); + schedulerxWorker.setNamespace(properties.getNamespace()); + schedulerxWorker.setHost(properties.getHost()); + schedulerxWorker.setPort(properties.getPort()); + schedulerxWorker.setEndpoint(properties.getEndpoint()); + schedulerxWorker.setNamespaceSource(properties.getNamespaceSource()); + schedulerxWorker.setMaxTaskBodySize(properties.getMaxTaskBodySize()); + schedulerxWorker.setBlockAppStart(properties.isBlockAppStart()); + schedulerxWorker.setSTSAccessKey(properties.getStsAccessKey()); + schedulerxWorker.setSTSSecretKey(properties.getStsSecretKey()); + schedulerxWorker.setSTSSecretToken(properties.getStsToken()); + schedulerxWorker.setSlsCollectorEnable(properties.isSlsCollectorEnable()); + schedulerxWorker.setShareContainerPool(properties.isShareContainerPool()); + schedulerxWorker.setThreadPoolMode(properties.getThreadPoolMode()); + schedulerxWorker.setLabel(properties.getLabel()); + schedulerxWorker.setLabelPath(properties.getLabelPath()); + if (properties.isShareContainerPool() || WorkerConstants.THREAD_POOL_MODE_ALL.equals(properties.getThreadPoolMode())) { + schedulerxWorker.setSharePoolSize(properties.getSharePoolSize()); + schedulerxWorker.setSharePoolQueueSize(properties.getSharePoolQueueSize()); + } + if (StringUtils.isNotEmpty(properties.getEndpointPort())) { + schedulerxWorker.setEndpointPort(Integer.parseInt(properties.getEndpointPort())); + } + schedulerxWorker.setEnableCgroupMetrics(properties.isEnableCgroupMetrics()); + if (properties.isEnableCgroupMetrics()) { + schedulerxWorker.setCgroupPathPrefix(properties.getCgroupPathPrefix()); + } + if (StringUtils.isNotEmpty(properties.getNamespaceSource())) { + schedulerxWorker.setNamespaceSource(properties.getNamespaceSource()); + } + schedulerxWorker.setAkkaRemotingAutoRecover(properties.isAkkaRemotingAutoRecover()); + schedulerxWorker.setEnableHeartbeatLog(properties.isEnableHeartbeatLog()); + schedulerxWorker.setMapMasterStatusCheckInterval(properties.getMapMasterStatusCheckInterval()); + schedulerxWorker.setEnableSecondDelayCycleIntervalMs(properties.isEnableSecondDealyCycleIntervalMs()); + schedulerxWorker.setEnableMapMasterFailover(properties.isEnableMapMasterFailover()); + schedulerxWorker.setEnableSecondDelayStandaloneDispatch(properties.isEnableSecondDelayStandaloneDispatch()); + schedulerxWorker.setPageSize(properties.getPageSize()); + schedulerxWorker.setGraceShutdownMode(properties.getGraceShutdownMode()); + if (properties.getGraceShutdownTimeout() > 0) { + schedulerxWorker.setGraceShutdownTimeout(properties.getGraceShutdownTimeout()); + } + schedulerxWorker.setBroadcastDispatchThreadNum(properties.getBroadcastDispatchThreadNum()); + schedulerxWorker.setBroadcastDispatchThreadEnable(properties.isBroadcastDispatchThreadEnable()); + schedulerxWorker.setBroadcastMasterExecEnable(properties.isBroadcastMasterExecEnable()); + schedulerxWorker.setBroadcastDispatchRetryTimes(properties.getBroadcastDispatchRetryTimes()); + schedulerxWorker.setProcessorPoolSize(properties.getProcessorPoolSize()); + schedulerxWorker.setMapMasterDispatchRandom(properties.isMapMasterDispatchRandom()); + schedulerxWorker.setMapMasterRouterStrategy(properties.getMapMasterRouterStrategy()); + if (StringUtils.isNotEmpty(properties.getH2DatabaseUser())) { + schedulerxWorker.setH2DatabaseUser(properties.getH2DatabaseUser()); + } + if (StringUtils.isNotEmpty(properties.getH2DatabasePassword())) { + schedulerxWorker.setH2DatabasePassword(properties.getH2DatabasePassword()); + } + schedulerxWorker.setHttpServerEnable(properties.getHttpServerEnable()); + schedulerxWorker.setHttpServerPort(properties.getHttpServerPort()); + if (properties.getMaxMapDiskPercent() != null) { + schedulerxWorker.setMaxMapDiskPercent(properties.getMaxMapDiskPercent()); + } + + ConfigUtil.getWorkerConfig().setProperty(WorkerConstants.WORKER_STARTER_MODE, + WORKER_STARTER_SPRING_CLOUD); + return schedulerxWorker; + } + } + + + @Configuration(proxyBeanMethods = false) + @AutoConfigureAfter(SchedulerxWorkerConfiguration.class) + @ConditionalOnBean(SchedulerxWorker.class) + static class SpringScheduleAdaptConfiguration { + + @Bean(ScheduledAnnotationBeanPostProcessor.DEFAULT_TASK_SCHEDULER_BEAN_NAME) + public NoOpScheduler noOpScheduler() { + return new NoOpScheduler(); + } + + @Bean + public SchedulerxSchedulingConfigurer schedulerxSchedulingConfigurer() { + return new SchedulerxSchedulingConfigurer(); + } + + @Bean + public SchedulerxAnnotationBeanPostProcessor schedulerxAnnotationBeanPostProcessor() { + return new SchedulerxAnnotationBeanPostProcessor(); + } + + @Bean + @ConditionalOnProperty(prefix = SchedulerxProperties.CONFIG_PREFIX, name = "task-sync", havingValue = "true") + public ScheduledJobSyncConfigurer scheduledJobSyncConfigurer() { + return new ScheduledJobSyncConfigurer(); + } + } +} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/schedulerx/SchedulerxProperties.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/schedulerx/SchedulerxProperties.java new file mode 100644 index 000000000..d5fd9afeb --- /dev/null +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/schedulerx/SchedulerxProperties.java @@ -0,0 +1,786 @@ +/* + * Copyright 2024-2025 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.alibaba.cloud.scheduling.schedulerx; + +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.Map; + +import com.alibaba.cloud.scheduling.SchedulingConstants; +import com.alibaba.schedulerx.common.domain.ContactInfo; +import com.alibaba.schedulerx.common.util.JsonUtil; +import com.alibaba.schedulerx.worker.domain.WorkerConstants; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import org.springframework.beans.factory.InitializingBean; +import org.springframework.boot.context.properties.ConfigurationProperties; + +/** + * schedulerx worker properties. + * + * @author yaohui + **/ +@ConfigurationProperties(prefix = SchedulerxProperties.CONFIG_PREFIX) +public class SchedulerxProperties implements InitializingBean { + + private static final Logger logger = LoggerFactory.getLogger(SchedulerxProperties.class); + + /** + * schedulerx config prefix. + */ + public static final String CONFIG_PREFIX = SchedulingConstants.SCHEDULING_CONFIG_PREFIX + ".schedulerx"; + + /** + * domainName. + */ + private String domainName; + + /** + * groupId. + */ + private String groupId; + + /** + * host. + */ + private String host; + + /** + * client port. + */ + private int port = 0; + + private String enableUnits; + + private String disableUnits; + + private String enableSites; + + private String disableSites; + + private boolean enableBatchWork; + + /** + * enabled: true; false. + */ + private boolean enabled = true; + + /** + * appName. + */ + private String appName; + + /** + * appKey. + */ + private String appKey; + + /** + * aliyunRamRole. + */ + private String aliyunRamRole; + + /** + * aliyunAccessKey. + */ + private String aliyunAccessKey; + /** + * aliyunSecretKey. + */ + private String aliyunSecretKey; + + /** + * STS ak. + */ + private String stsAccessKey; + + /** + * STS sk. + */ + private String stsSecretKey; + + /** + * STS secret token. + */ + private String stsToken; + + /** + * Namespace UID. + */ + private String namespace; + + /** + * endpoint. + */ + private String endpoint; + + /** + * endpointPort. + */ + private String endpointPort; + + /** + * namespaceName. + */ + private String namespaceName; + + /** + * namespaceSource. + */ + private String namespaceSource; + + /** + * maxTaskBodySize (byte). + */ + private int maxTaskBodySize = WorkerConstants.TASK_BODY_SIZE_MAX_DEFAULT; + + private boolean blockAppStart = true; + + /** + * slsCollectorEnable. + */ + private boolean slsCollectorEnable = true; + + /** + * shareContainerPool. + */ + private boolean shareContainerPool = false; + + /** + * threadPoolMode. + */ + private String threadPoolMode; + + /** + * sharePoolSize. + */ + private int sharePoolSize = WorkerConstants.SHARE_POOL_SIZE_DEFAULT; + + /** + * sharePoolQueueSize. + */ + private int sharePoolQueueSize = Integer.MAX_VALUE; + + /** + * Wlabel. + */ + private String label; + + private String labelPath = "/etc/podinfo/annotations"; + + /** + * enableCgroupMetrics. + */ + private boolean enableCgroupMetrics = false; + + /** + * cgroupPathPrefix. + */ + private String cgroupPathPrefix = "/sys/fs/cgroup/cpu/"; + + /** + * akkaRemotingAutoRecover. + */ + private boolean akkaRemotingAutoRecover = true; + + /** + * enableHeartbeatLog. + */ + private boolean enableHeartbeatLog = true; + + /** + * mapMasterStatusCheckInterval(ms). + */ + private int mapMasterStatusCheckInterval = WorkerConstants.Map_MASTER_STATUS_CHECK_INTERVAL_DEFAULT; + + /** + * enableSecondDealyCycleIntervalMs. + */ + private boolean enableSecondDealyCycleIntervalMs = false; + + /** + * enableMapMasterFailover. + */ + private boolean enableMapMasterFailover = true; + + /** + * enableSecondDelayStandaloneDispatch. + */ + private boolean enableSecondDelayStandaloneDispatch = false; + + /** + * pageSize. + */ + private int pageSize = 1000; + + /** + * GraceShutdownMode(WAIT_ALL; WAIT_RUNNING;). + */ + private String graceShutdownMode; + + /** + * graceShutdownTimeout. + */ + private long graceShutdownTimeout = WorkerConstants.GRACE_SHUTDOWN_TIMEOUT_DEFAULT; + + /** + * broadcastDispatchThreadNum. + */ + private int broadcastDispatchThreadNum = 4; + + /** + * broadcastDispatchRetryTimes. + */ + private int broadcastDispatchRetryTimes = 1; + + /** + * broadcastDispatchThreadEnable. + */ + private boolean broadcastDispatchThreadEnable = false; + + /** + * broadcastMasterExecEnable. + */ + private boolean broadcastMasterExecEnable = true; + + /** + * mapMasterDispatchRandom. + */ + private boolean mapMasterDispatchRandom = false; + + private Integer mapMasterRouterStrategy; + + private String regionId; + + /** + * h2DatabaseUser. + */ + private String h2DatabaseUser; + + /** + * h2DatabasePassword. + */ + private String h2DatabasePassword; + + /** + * httpServerEnable. + */ + private Boolean httpServerEnable; + + /** + * httpServerPort. + */ + private Integer httpServerPort; + + /** + * maxMapDiskPercent. + */ + private Float maxMapDiskPercent; + + private Map jobs = new LinkedHashMap<>(); + + private String alarmChannel; + + private Map alarmUsers = new LinkedHashMap<>(); + + private Map processorPoolSize = new HashMap<>(); + + public String getDomainName() { + return domainName; + } + + public void setDomainName(String domainName) { + this.domainName = domainName; + } + + public String getGroupId() { + return groupId; + } + + public void setGroupId(String groupId) { + this.groupId = groupId; + } + + public boolean isEnabled() { + return enabled; + } + + public void setEnabled(boolean enabled) { + this.enabled = enabled; + } + + public String getHost() { + return host; + } + + public void setHost(String host) { + this.host = host; + } + + public int getPort() { + return port; + } + + public void setPort(int port) { + this.port = port; + } + + public String getEnableUnits() { + return enableUnits; + } + + public void setEnableUnits(String enableUnits) { + this.enableUnits = enableUnits; + } + + public String getDisableUnits() { + return disableUnits; + } + + public void setDisableUnits(String disableUnits) { + this.disableUnits = disableUnits; + } + + public String getEnableSites() { + return enableSites; + } + + public void setEnableSites(String enableSites) { + this.enableSites = enableSites; + } + + public String getDisableSites() { + return disableSites; + } + + public void setDisableSites(String disableSites) { + this.disableSites = disableSites; + } + + public boolean isEnableBatchWork() { + return enableBatchWork; + } + + public void setEnableBatchWork(boolean enableBatchWork) { + this.enableBatchWork = enableBatchWork; + } + + public String getAliyunAccessKey() { + return aliyunAccessKey; + } + + public void setAliyunAccessKey(String aliyunAccessKey) { + this.aliyunAccessKey = aliyunAccessKey; + } + + public String getAliyunSecretKey() { + return aliyunSecretKey; + } + + public void setAliyunSecretKey(String aliyunSecretKey) { + this.aliyunSecretKey = aliyunSecretKey; + } + + public String getNamespace() { + return namespace; + } + + public void setNamespace(String namespace) { + this.namespace = namespace; + } + + public String getEndpoint() { + return endpoint; + } + + public void setEndpoint(String endpoint) { + this.endpoint = endpoint; + } + + public String getEndpointPort() { + return endpointPort; + } + + public void setEndpointPort(String endpointPort) { + this.endpointPort = endpointPort; + } + + public String getNamespaceName() { + return namespaceName; + } + + public void setNamespaceName(String namespaceName) { + this.namespaceName = namespaceName; + } + + public String getNamespaceSource() { + return namespaceSource; + } + + public void setNamespaceSource(String namespaceSource) { + this.namespaceSource = namespaceSource; + } + + public int getMaxTaskBodySize() { + return maxTaskBodySize; + } + + public void setMaxTaskBodySize(int maxTaskBodySize) { + this.maxTaskBodySize = maxTaskBodySize; + } + + public boolean isBlockAppStart() { + return blockAppStart; + } + + public void setBlockAppStart(boolean blockAppStart) { + this.blockAppStart = blockAppStart; + } + + public String getAppName() { + return appName; + } + + public void setAppName(String appName) { + this.appName = appName; + } + + public String getAppKey() { + return appKey; + } + + public void setAppKey(String appKey) { + this.appKey = appKey; + } + + public String getStsAccessKey() { + return stsAccessKey; + } + + public void setStsAccessKey(String stsAccessKey) { + this.stsAccessKey = stsAccessKey; + } + + public String getStsSecretKey() { + return stsSecretKey; + } + + public void setStsSecretKey(String stsSecretKey) { + this.stsSecretKey = stsSecretKey; + } + + public String getStsToken() { + return stsToken; + } + + public String getAliyunRamRole() { + return aliyunRamRole; + } + + public void setAliyunRamRole(String aliyunRamRole) { + this.aliyunRamRole = aliyunRamRole; + } + + public void setStsToken(String stsToken) { + this.stsToken = stsToken; + } + + public boolean isSlsCollectorEnable() { + return slsCollectorEnable; + } + + public void setSlsCollectorEnable(boolean slsCollectorEnable) { + this.slsCollectorEnable = slsCollectorEnable; + } + + public boolean isShareContainerPool() { + return shareContainerPool; + } + + public void setShareContainerPool(boolean shareContainerPool) { + this.shareContainerPool = shareContainerPool; + } + + public int getSharePoolSize() { + return sharePoolSize; + } + + public void setSharePoolSize(int sharePoolSize) { + this.sharePoolSize = sharePoolSize; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + if (label != null) { + if (label.startsWith("#") && label.endsWith("#")) { + String labelKey = label.substring(1, label.length() - 1); + this.label = System.getenv(labelKey); + return; + } + } + this.label = label; + } + + public String getLabelPath() { + return labelPath; + } + + public void setLabelPath(String labelPath) { + this.labelPath = labelPath; + } + + public boolean isEnableCgroupMetrics() { + return enableCgroupMetrics; + } + + public void setEnableCgroupMetrics(boolean enableCgroupMetrics) { + this.enableCgroupMetrics = enableCgroupMetrics; + } + + public String getCgroupPathPrefix() { + return cgroupPathPrefix; + } + + public void setCgroupPathPrefix(String cgroupPathPrefix) { + this.cgroupPathPrefix = cgroupPathPrefix; + } + + public boolean isAkkaRemotingAutoRecover() { + return akkaRemotingAutoRecover; + } + + public void setAkkaRemotingAutoRecover(boolean akkaRemotingAutoRecover) { + this.akkaRemotingAutoRecover = akkaRemotingAutoRecover; + } + + public boolean isEnableHeartbeatLog() { + return enableHeartbeatLog; + } + + public void setEnableHeartbeatLog(boolean enableHeartbeatLog) { + this.enableHeartbeatLog = enableHeartbeatLog; + } + + public int getMapMasterStatusCheckInterval() { + return mapMasterStatusCheckInterval; + } + + public void setMapMasterStatusCheckInterval(int mapMasterStatusCheckInterval) { + this.mapMasterStatusCheckInterval = mapMasterStatusCheckInterval; + } + + public boolean isEnableSecondDealyCycleIntervalMs() { + return enableSecondDealyCycleIntervalMs; + } + + public void setEnableSecondDealyCycleIntervalMs(boolean enableSecondDealyCycleIntervalMs) { + this.enableSecondDealyCycleIntervalMs = enableSecondDealyCycleIntervalMs; + } + + public boolean isEnableMapMasterFailover() { + return enableMapMasterFailover; + } + + public void setEnableMapMasterFailover(boolean enableMapMasterFailover) { + this.enableMapMasterFailover = enableMapMasterFailover; + } + + public boolean isEnableSecondDelayStandaloneDispatch() { + return enableSecondDelayStandaloneDispatch; + } + + public void setEnableSecondDelayStandaloneDispatch(boolean enableSecondDelayStandaloneDispatch) { + this.enableSecondDelayStandaloneDispatch = enableSecondDelayStandaloneDispatch; + } + + public int getPageSize() { + return pageSize; + } + + public String getGraceShutdownMode() { + return graceShutdownMode; + } + + public void setGraceShutdownMode(String graceShutdownMode) { + this.graceShutdownMode = graceShutdownMode; + } + + public long getGraceShutdownTimeout() { + return graceShutdownTimeout; + } + + public void setGraceShutdownTimeout(long graceShutdownTimeout) { + this.graceShutdownTimeout = graceShutdownTimeout; + } + + public void setPageSize(int pageSize) { + this.pageSize = pageSize; + } + + public String getRegionId() { + return regionId; + } + + public void setRegionId(String regionId) { + this.regionId = regionId; + } + + public Map getJobs() { + return jobs; + } + + public void setJobs(Map jobs) { + this.jobs = jobs; + } + + public String getAlarmChannel() { + return alarmChannel; + } + + public void setAlarmChannel(String alarmChannel) { + this.alarmChannel = alarmChannel; + } + + public Map getAlarmUsers() { + return alarmUsers; + } + + public void setAlarmUsers(Map alarmUsers) { + this.alarmUsers = alarmUsers; + } + + public int getBroadcastDispatchThreadNum() { + return broadcastDispatchThreadNum; + } + + public void setBroadcastDispatchThreadNum(int broadcastDispatchThreadNum) { + this.broadcastDispatchThreadNum = broadcastDispatchThreadNum; + } + + public boolean isBroadcastDispatchThreadEnable() { + return broadcastDispatchThreadEnable; + } + + public void setBroadcastDispatchThreadEnable(boolean broadcastDispatchThreadEnable) { + this.broadcastDispatchThreadEnable = broadcastDispatchThreadEnable; + } + + public String getThreadPoolMode() { + return threadPoolMode; + } + + public void setThreadPoolMode(String threadPoolMode) { + this.threadPoolMode = threadPoolMode; + } + + public Map getProcessorPoolSize() { + return processorPoolSize; + } + + public void setProcessorPoolSize(Map processorPoolSize) { + this.processorPoolSize = processorPoolSize; + } + + public int getSharePoolQueueSize() { + return sharePoolQueueSize; + } + + public void setSharePoolQueueSize(int sharePoolQueueSize) { + this.sharePoolQueueSize = sharePoolQueueSize; + } + + public boolean isMapMasterDispatchRandom() { + return mapMasterDispatchRandom; + } + + public void setMapMasterDispatchRandom(boolean mapMasterDispatchRandom) { + this.mapMasterDispatchRandom = mapMasterDispatchRandom; + } + + public boolean isBroadcastMasterExecEnable() { + return broadcastMasterExecEnable; + } + + public void setBroadcastMasterExecEnable(boolean broadcastMasterExecEnable) { + this.broadcastMasterExecEnable = broadcastMasterExecEnable; + } + + public int getBroadcastDispatchRetryTimes() { + return broadcastDispatchRetryTimes; + } + + public void setBroadcastDispatchRetryTimes(int broadcastDispatchRetryTimes) { + this.broadcastDispatchRetryTimes = broadcastDispatchRetryTimes; + } + + public Integer getMapMasterRouterStrategy() { + return mapMasterRouterStrategy; + } + + public void setMapMasterRouterStrategy(Integer mapMasterRouterStrategy) { + this.mapMasterRouterStrategy = mapMasterRouterStrategy; + } + + public String getH2DatabaseUser() { + return h2DatabaseUser; + } + + public void setH2DatabaseUser(String h2DatabaseUser) { + this.h2DatabaseUser = h2DatabaseUser; + } + + public String getH2DatabasePassword() { + return h2DatabasePassword; + } + + public void setH2DatabasePassword(String h2DatabasePassword) { + this.h2DatabasePassword = h2DatabasePassword; + } + + public Boolean getHttpServerEnable() { + return httpServerEnable; + } + + public void setHttpServerEnable(Boolean httpServerEnable) { + this.httpServerEnable = httpServerEnable; + } + + public Integer getHttpServerPort() { + return httpServerPort; + } + + public void setHttpServerPort(Integer httpServerPort) { + this.httpServerPort = httpServerPort; + } + + public Float getMaxMapDiskPercent() { + return maxMapDiskPercent; + } + + public void setMaxMapDiskPercent(float maxMapDiskPercent) { + this.maxMapDiskPercent = maxMapDiskPercent; + } + + @Override + public void afterPropertiesSet() { + logger.info("SchedulerxProperties->" + JsonUtil.toJson(this)); + } +} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/schedulerx/constants/SchedulerxConstants.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/schedulerx/constants/SchedulerxConstants.java new file mode 100644 index 000000000..0710b1ba8 --- /dev/null +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/schedulerx/constants/SchedulerxConstants.java @@ -0,0 +1,85 @@ +/* + * Copyright 2024-2025 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.alibaba.cloud.scheduling.schedulerx.constants; + +/** + * Schedulerx constants. + * + * @author yaohui + */ +public final class SchedulerxConstants { + + /** + * Schedulerx default namespace source. + */ + public static final String NAMESPACE_SOURCE_SPRINGBOOT = "springboot"; + + /** + * Aliyun pop product. + */ + public static final String ALIYUN_POP_PRODUCT = "schedulerx2"; + + /** + * Aliyun pop endpoint. + */ + public static final String ALIYUN_POP_SCHEDULERX_ENDPOINT = "schedulerx.aliyuncs.com"; + + /** + * Second delay max value. + */ + public static final int SECOND_DELAY_MAX_VALUE = 60; + + /** + * Second delay min value. + */ + public static final int SECOND_DELAY_MIN_VALUE = 1; + + /** + * Job timeout default value. + */ + public static final long JOB_TIMEOUT_DEFAULT = 3600L; + + /** + * Job retry count default value. + */ + public static final int JOB_RETRY_COUNT_DEFAULT = 3; + + /** + * Job retry interval default value. + */ + public static final int JOB_RETRY_INTERVAL_DEFAULT = 30; + + /** + * Job alarm channel default value. + */ + public static final String JOB_ALARM_CHANNEL_DEFAULT = "default"; + + /** + * Job model mapreduce alias. + */ + public static final String JOB_MODEL_MAPREDUCE_ALIAS = "mapreduce"; + + @Override + public String toString() { + return super.toString(); + } + + private SchedulerxConstants() { + throw new AssertionError("Must not instantiate constant utility class"); + } + +} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/schedulerx/service/JobSyncService.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/schedulerx/service/JobSyncService.java new file mode 100644 index 000000000..67e6449fc --- /dev/null +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/schedulerx/service/JobSyncService.java @@ -0,0 +1,435 @@ +/* + * Copyright 2024-2025 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.alibaba.cloud.scheduling.schedulerx.service; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.concurrent.TimeUnit; + +import com.alibaba.cloud.scheduling.schedulerx.JobProperty; +import com.alibaba.cloud.scheduling.schedulerx.SchedulerxProperties; +import com.alibaba.cloud.scheduling.schedulerx.constants.SchedulerxConstants; +import com.alibaba.cloud.scheduling.schedulerx.util.CronExpression; +import com.alibaba.schedulerx.common.domain.ContactInfo; +import com.alibaba.schedulerx.common.domain.ExecuteMode; +import com.alibaba.schedulerx.common.domain.JobType; +import com.alibaba.schedulerx.common.domain.TimeType; +import com.alibaba.schedulerx.common.sdk.common.MonitorConfig; +import com.alibaba.schedulerx.common.util.JsonUtil; +import com.alibaba.schedulerx.common.util.StringUtils; +import com.alibaba.schedulerx.worker.log.LogFactory; +import com.alibaba.schedulerx.worker.log.Logger; +import com.aliyuncs.DefaultAcsClient; +import com.aliyuncs.auth.InstanceProfileCredentialsProvider; +import com.aliyuncs.exceptions.ClientException; +import com.aliyuncs.profile.DefaultProfile; +import com.aliyuncs.schedulerx2.model.v20190430.CreateAppGroupRequest; +import com.aliyuncs.schedulerx2.model.v20190430.CreateAppGroupResponse; +import com.aliyuncs.schedulerx2.model.v20190430.CreateJobRequest; +import com.aliyuncs.schedulerx2.model.v20190430.CreateJobResponse; +import com.aliyuncs.schedulerx2.model.v20190430.CreateNamespaceRequest; +import com.aliyuncs.schedulerx2.model.v20190430.CreateNamespaceResponse; +import com.aliyuncs.schedulerx2.model.v20190430.GetJobInfoRequest; +import com.aliyuncs.schedulerx2.model.v20190430.GetJobInfoResponse; +import com.aliyuncs.schedulerx2.model.v20190430.GetJobInfoResponse.Data.JobConfigInfo; +import com.aliyuncs.schedulerx2.model.v20190430.UpdateJobRequest; +import com.aliyuncs.schedulerx2.model.v20190430.UpdateJobResponse; + +import org.springframework.beans.factory.annotation.Autowired; + + +/** + * JobSyncService. + * + * @author xiaomeng.hxm + */ +public class JobSyncService { + + private static final Logger logger = LogFactory.getLogger(JobSyncService.class); + + @Autowired + private SchedulerxProperties properties; + + private DefaultAcsClient client; + + private synchronized DefaultAcsClient getClient() { + // build aliyun pop client + if (client == null) { + DefaultProfile.addEndpoint(properties.getRegionId(), SchedulerxConstants.ALIYUN_POP_PRODUCT, SchedulerxConstants.ALIYUN_POP_SCHEDULERX_ENDPOINT); + if (StringUtils.isNotEmpty(properties.getAliyunRamRole())) { + DefaultProfile profile = DefaultProfile.getProfile(properties.getRegionId()); + InstanceProfileCredentialsProvider provider = new InstanceProfileCredentialsProvider( + properties.getAliyunRamRole()); + client = new DefaultAcsClient(profile, provider); + } + else { + DefaultProfile defaultProfile = DefaultProfile.getProfile(properties.getRegionId(), + properties.getAliyunAccessKey(), + properties.getAliyunSecretKey()); + client = new DefaultAcsClient(defaultProfile); + } + } + return client; + } + + /** + * Sync job config. + * + * @param jobs job configs + * @param namespaceSource namespace source + * @throws Exception sync job config exception + */ + public synchronized void syncJobs(Map jobs, String namespaceSource) throws Exception { + DefaultAcsClient client = getClient(); + for (Entry entry : jobs.entrySet()) { + String jobName = entry.getKey(); + JobProperty jobProperty = entry.getValue(); + JobConfigInfo jobConfigInfo = getJob(client, jobName, namespaceSource); + if (jobConfigInfo == null) { + createJob(client, jobName, jobProperty, namespaceSource); + } + else if (jobProperty.isOverwrite()) { + updateJob(client, jobConfigInfo, jobProperty, namespaceSource); + } + } + } + + /** + * sync jobs. + * + * @throws Exception sync jobs exception + */ + public void syncJobs() throws Exception { + // 1. create namespace + if (syncNamespace(getClient())) { + // 2. create app group + if (syncAppGroup(getClient())) { + syncJobs(properties.getJobs(), getNamespaceSource()); + properties.setNamespaceSource(getNamespaceSource()); + } + } + } + + /** + * sync namespace. + * + * @param client pop client + * @return true if success + * @throws Exception sync namespace exception + */ + public boolean syncNamespace(DefaultAcsClient client) throws Exception { + if (StringUtils.isEmpty(properties.getNamespace())) { + logger.error("please set {}.namespace", SchedulerxProperties.CONFIG_PREFIX); + throw new IOException(String.format("please set %s.namespace", SchedulerxProperties.CONFIG_PREFIX)); + } + + if (StringUtils.isEmpty(properties.getNamespaceName())) { + logger.error("please set {}.namespaceName", SchedulerxProperties.CONFIG_PREFIX); + throw new IOException(String.format("please set %s.namespaceName", SchedulerxProperties.CONFIG_PREFIX)); + } + + CreateNamespaceRequest request = new CreateNamespaceRequest(); + request.setUid(properties.getNamespace()); + request.setName(properties.getNamespaceName()); + request.setSource(getNamespaceSource()); + CreateNamespaceResponse response = client.getAcsResponse(request); + if (response.getSuccess()) { + logger.info(JsonUtil.toJson(response)); + return true; + } + else { + throw new IOException(response.getMessage()); + } + + } + + /** + * sync app group. + * + * @param client pop client + * @return sync app group result + * @throws IOException sync app group exception. + * @throws ClientException sync app group pop client exception. + */ + public boolean syncAppGroup(DefaultAcsClient client) throws IOException, ClientException { + if (StringUtils.isEmpty(properties.getAppName())) { + logger.error("please set {}.appName", SchedulerxProperties.CONFIG_PREFIX); + throw new IOException(String.format("please set %s.appName", SchedulerxProperties.CONFIG_PREFIX)); + } + + if (StringUtils.isEmpty(properties.getAppKey())) { + logger.error("please set {}.appKey", SchedulerxProperties.CONFIG_PREFIX); + throw new IOException(String.format("please set %s.appKey", SchedulerxProperties.CONFIG_PREFIX)); + } + + if (StringUtils.isEmpty(properties.getGroupId())) { + logger.error("please set {}.groupId", SchedulerxProperties.CONFIG_PREFIX); + throw new IOException(String.format("please set %s.groupId", SchedulerxProperties.CONFIG_PREFIX)); + } + + CreateAppGroupRequest request = new CreateAppGroupRequest(); + request.setNamespace(properties.getNamespace()); + request.setNamespaceSource(getNamespaceSource()); + request.setAppName(properties.getAppName()); + request.setGroupId(properties.getGroupId()); + request.setAppKey(properties.getAppKey()); + if (StringUtils.isNotEmpty(properties.getAlarmChannel())) { + MonitorConfig monitorConfig = new MonitorConfig(); + monitorConfig.setSendChannel(properties.getAlarmChannel()); + request.setMonitorConfigJson(JsonUtil.toJson(monitorConfig)); + } + if (!properties.getAlarmUsers().isEmpty()) { + List contactInfos = new ArrayList(properties.getAlarmUsers().values()); + request.setMonitorContactsJson(JsonUtil.toJson(contactInfos)); + } + CreateAppGroupResponse response = client.getAcsResponse(request); + if (response.getSuccess()) { + logger.info(JsonUtil.toJson(response)); + return true; + } + else { + throw new IOException(response.getMessage()); + } + } + + /** + * Get job config info. + * + * @param client pop client + * @param jobName job name + * @param namespaceSource namespace source + * @return job config info. + * @throws Exception get job config info exception. + */ + private JobConfigInfo getJob(DefaultAcsClient client, String jobName, String namespaceSource) throws Exception { + GetJobInfoRequest request = new GetJobInfoRequest(); + request.setNamespace(properties.getNamespace()); + request.setNamespaceSource(namespaceSource); + request.setGroupId(properties.getGroupId()); + request.setJobId(0L); + request.setJobName(jobName); + GetJobInfoResponse response = client.getAcsResponse(request); + if (response.getSuccess()) { + return response.getData().getJobConfigInfo(); + } + return null; + } + + /** + * create job. + * + * @param client pop client + * @param jobName job name + * @param jobProperty job property + * @param namespaceSource namespace source + * @throws Exception create job exception + */ + private void createJob(DefaultAcsClient client, String jobName, JobProperty jobProperty, String namespaceSource) throws Exception { + CreateJobRequest request = new CreateJobRequest(); + request.setNamespace(properties.getNamespace()); + request.setNamespaceSource(namespaceSource); + request.setGroupId(properties.getGroupId()); + request.setName(jobName); + request.setParameters(jobProperty.getJobParameter()); + + if (jobProperty.getJobType().equals(JobType.JAVA.getKey())) { + request.setJobType(JobType.JAVA.getKey()); + request.setClassName(jobProperty.getClassName()); + } + else { + request.setJobType(jobProperty.getJobType()); + } + + if (SchedulerxConstants.JOB_MODEL_MAPREDUCE_ALIAS.equals(jobProperty.getJobModel())) { + request.setExecuteMode(ExecuteMode.BATCH.getKey()); + } + else { + request.setExecuteMode(jobProperty.getJobModel()); + } + if (StringUtils.isNotEmpty(jobProperty.getDescription())) { + request.setDescription(jobProperty.getDescription()); + } + + if (StringUtils.isNotEmpty(jobProperty.getContent())) { + request.setContent(jobProperty.getContent()); + } + + if (StringUtils.isNotEmpty(jobProperty.getCron()) && StringUtils.isNotEmpty(jobProperty.getOneTime())) { + throw new IOException("cron and oneTime shouldn't set together"); + } + if (StringUtils.isNotEmpty(jobProperty.getCron())) { + CronExpression cronExpression = new CronExpression(jobProperty.getCron()); + Date now = new Date(); + Date nextData = cronExpression.getTimeAfter(now); + Date next2Data = cronExpression.getTimeAfter(nextData); + if (nextData != null && next2Data != null) { + long interval = TimeUnit.MILLISECONDS.toSeconds((next2Data.getTime() - nextData.getTime())); + if (interval < SchedulerxConstants.SECOND_DELAY_MAX_VALUE) { + request.setTimeType(TimeType.SECOND_DELAY.getValue()); + request.setTimeExpression(String.valueOf(interval < SchedulerxConstants.SECOND_DELAY_MIN_VALUE ? + SchedulerxConstants.SECOND_DELAY_MIN_VALUE : interval)); + } + else { + request.setTimeType(TimeType.CRON.getValue()); + request.setTimeExpression(jobProperty.getCron()); + } + } + else { + request.setTimeType(TimeType.CRON.getValue()); + request.setTimeExpression(jobProperty.getCron()); + } + } + else if (StringUtils.isNotEmpty(jobProperty.getOneTime())) { + request.setTimeType(TimeType.ONE_TIME.getValue()); + request.setTimeExpression(jobProperty.getOneTime()); + } + else { + request.setTimeType(TimeType.API.getValue()); + } + + if (jobProperty.getTimeType() != null) { + request.setTimeType(jobProperty.getTimeType()); + if (StringUtils.isNotEmpty(jobProperty.getTimeExpression())) { + request.setTimeExpression(jobProperty.getTimeExpression()); + } + } + + request.setTimeoutEnable(true); + request.setTimeoutKillEnable(true); + request.setSendChannel(SchedulerxConstants.JOB_ALARM_CHANNEL_DEFAULT); + request.setFailEnable(true); + request.setTimeout(SchedulerxConstants.JOB_TIMEOUT_DEFAULT); + request.setMaxAttempt(SchedulerxConstants.JOB_RETRY_COUNT_DEFAULT); + request.setAttemptInterval(SchedulerxConstants.JOB_RETRY_INTERVAL_DEFAULT); + CreateJobResponse response = client.getAcsResponse(request); + if (response.getSuccess()) { + logger.info("create schedulerx job successfully, jobId={}, jobName={}", response.getData().getJobId(), jobName); + } + else { + throw new IOException("create schedulerx job failed, jobName=" + jobName + ", message=" + response.getMessage()); + } + } + + /** + * update job. + * + * @param client pop client + * @param jobConfigInfo job config info + * @param jobProperty job property + * @param namespaceSource namespace source + * @throws Exception update job exception + */ + private void updateJob(DefaultAcsClient client, JobConfigInfo jobConfigInfo, JobProperty jobProperty, String namespaceSource) throws Exception { + String executeMode = jobProperty.getJobModel(); + if (SchedulerxConstants.JOB_MODEL_MAPREDUCE_ALIAS.equals(jobProperty.getJobModel())) { + executeMode = ExecuteMode.BATCH.getKey(); + } + int timeType; + String timeExpression = null; + if (StringUtils.isNotEmpty(jobProperty.getCron()) && StringUtils.isNotEmpty(jobProperty.getOneTime())) { + throw new IOException("cron and oneTime shouldn't set together"); + } + if (StringUtils.isNotEmpty(jobProperty.getCron())) { + CronExpression cronExpression = new CronExpression(jobProperty.getCron()); + Date now = new Date(); + Date nextData = cronExpression.getTimeAfter(now); + Date next2Data = cronExpression.getTimeAfter(nextData); + if (nextData != null && next2Data != null) { + long interval = TimeUnit.MILLISECONDS.toSeconds((next2Data.getTime() - nextData.getTime())); + if (interval < SchedulerxConstants.SECOND_DELAY_MAX_VALUE) { + timeType = TimeType.SECOND_DELAY.getValue(); + timeExpression = String.valueOf(interval < SchedulerxConstants.SECOND_DELAY_MIN_VALUE ? + SchedulerxConstants.SECOND_DELAY_MIN_VALUE : interval); + } + else { + timeType = TimeType.CRON.getValue(); + timeExpression = jobProperty.getCron(); + } + } + else { + timeType = TimeType.CRON.getValue(); + timeExpression = jobProperty.getCron(); + } + } + else if (StringUtils.isNotEmpty(jobProperty.getOneTime())) { + timeType = TimeType.ONE_TIME.getValue(); + timeExpression = jobProperty.getOneTime(); + } + else { + timeType = TimeType.API.getValue(); + } + + if (!jobConfigInfo.getDescription().equals(jobProperty.getDescription()) + || !jobConfigInfo.getClassName().equals(jobProperty.getClassName()) + || !jobConfigInfo.getParameters().equals(jobProperty.getJobParameter()) + || !jobConfigInfo.getExecuteMode().equals(executeMode) + || jobConfigInfo.getTimeConfig().getTimeType() != timeType + || !jobConfigInfo.getTimeConfig().getTimeExpression().equals(timeExpression)) { + + UpdateJobRequest request = new UpdateJobRequest(); + request.setNamespace(properties.getNamespace()); + request.setNamespaceSource(namespaceSource); + request.setGroupId(properties.getGroupId()); + request.setJobId(jobConfigInfo.getJobId()); + request.setName(jobConfigInfo.getName()); + request.setParameters(jobProperty.getJobParameter()); + + //java任务 + if (jobProperty.getJobType().equals(JobType.JAVA.getKey())) { + request.setClassName(jobProperty.getClassName()); + } + request.setExecuteMode(executeMode); + if (StringUtils.isNotEmpty(jobProperty.getDescription())) { + request.setDescription(jobProperty.getDescription()); + } + request.setTimeType(timeType); + request.setTimeExpression(timeExpression); + + request.setTimeoutEnable(true); + request.setTimeoutKillEnable(true); + request.setSendChannel(SchedulerxConstants.JOB_ALARM_CHANNEL_DEFAULT); + request.setFailEnable(true); + request.setTimeout(SchedulerxConstants.JOB_TIMEOUT_DEFAULT); + request.setMaxAttempt(SchedulerxConstants.JOB_RETRY_COUNT_DEFAULT); + request.setAttemptInterval(SchedulerxConstants.JOB_RETRY_INTERVAL_DEFAULT); + + UpdateJobResponse response = client.getAcsResponse(request); + if (response.getSuccess()) { + logger.info("update schedulerx job successfully, jobId={}, jobName={}", jobConfigInfo.getJobId(), jobConfigInfo.getName()); + } + else { + throw new IOException("update schedulerx job failed, jobName=" + jobConfigInfo.getName() + ", message=" + response.getMessage()); + } + } + } + + /** + * Get namespace source. + * + * @return namespace source + */ + private String getNamespaceSource() { + if (StringUtils.isEmpty(properties.getNamespaceSource())) { + return SchedulerxConstants.NAMESPACE_SOURCE_SPRINGBOOT; + } + return properties.getNamespaceSource(); + } +} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/schedulerx/service/ScheduledJobSyncConfigurer.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/schedulerx/service/ScheduledJobSyncConfigurer.java new file mode 100644 index 000000000..5f7075fdf --- /dev/null +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/schedulerx/service/ScheduledJobSyncConfigurer.java @@ -0,0 +1,194 @@ +/* + * Copyright 2024-2025 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.alibaba.cloud.scheduling.schedulerx.service; + +import java.lang.reflect.Method; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import com.alibaba.cloud.scheduling.schedulerx.JobProperty; +import com.alibaba.cloud.scheduling.schedulerx.SchedulerxProperties; +import com.alibaba.schedulerx.common.domain.ExecuteMode; +import com.alibaba.schedulerx.common.domain.JobType; +import com.alibaba.schedulerx.common.domain.Pair; +import com.alibaba.schedulerx.common.domain.TimeType; +import com.alibaba.schedulerx.common.util.JsonUtil; +import com.alibaba.schedulerx.common.util.StringUtils; +import com.alibaba.schedulerx.scheduling.annotation.SchedulerX; +import com.alibaba.schedulerx.worker.domain.SpringScheduleProfile; +import com.alibaba.schedulerx.worker.log.LogFactory; +import com.alibaba.schedulerx.worker.log.Logger; +import com.alibaba.schedulerx.worker.processor.springscheduling.SchedulerxSchedulingConfigurer; + +import org.springframework.aop.framework.AopProxyUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.annotation.AnnotatedElementUtils; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.CronTask; +import org.springframework.scheduling.config.IntervalTask; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.Task; +import org.springframework.scheduling.support.ScheduledMethodRunnable; +import org.springframework.util.ClassUtils; +import org.springframework.util.CollectionUtils; + +/** + * Spring scheduled job sync. + * + * @author yaohui + * @create 2022/8/17 下午2:21 + **/ +public class ScheduledJobSyncConfigurer implements SchedulingConfigurer { + + private static final Logger logger = LogFactory.getLogger(ScheduledJobSyncConfigurer.class); + + @Autowired + private JobSyncService jobSyncService; + + @Autowired + private SchedulerxProperties properties; + + @Autowired + private SchedulerxSchedulingConfigurer schedulerxSchedulingConfigurer; + + @Value("${" + SchedulerxProperties.CONFIG_PREFIX + ".task-overwrite:false}") + private Boolean overwrite = false; + + @Value("${" + SchedulerxProperties.CONFIG_PREFIX + ".task-model-default:broadcast}") + private String defaultModel = ExecuteMode.BROADCAST.getKey(); + + private boolean isValidModel(String mode) { + if (mode == null) { + return false; + } + return (ExecuteMode.BROADCAST.getKey().equals(mode) || ExecuteMode.STANDALONE.getKey().equals(mode)); + } + + private JobProperty convertToJobProperty(Task task, Object target, Method method) { + JobProperty jobProperty = new JobProperty(); + Class targetClass = AopProxyUtils.ultimateTargetClass(target); + if (ClassUtils.isCglibProxyClass(targetClass)) { + targetClass = ClassUtils.getUserClass(target); + } + String jobName = targetClass.getSimpleName() + "_" + method.getName(); + String model = this.defaultModel; + + if (task != null && task instanceof CronTask) { + String expression = ((CronTask) task).getExpression(); + jobProperty.setCron(expression); + } + + if (task != null && task instanceof IntervalTask) { + long interval = ((IntervalTask) task).getInterval() / 1000; + interval = interval < 1 ? 1 : interval; + if (interval < 60) { + jobProperty.setTimeType(TimeType.SECOND_DELAY.getValue()); + } + else { + jobProperty.setTimeType(TimeType.FIXED_RATE.getValue()); + } + jobProperty.setTimeExpression(String.valueOf(interval)); + } + + SchedulerX schedulerXMethod = AnnotatedElementUtils.getMergedAnnotation(method, SchedulerX.class); + if (schedulerXMethod != null) { + if (StringUtils.isNotEmpty(schedulerXMethod.name())) { + jobName = schedulerXMethod.name(); + } + if (isValidModel(schedulerXMethod.model())) { + model = schedulerXMethod.model(); + } + if (StringUtils.isNotEmpty(schedulerXMethod.cron())) { + jobProperty.setCron(schedulerXMethod.cron()); + } + if (schedulerXMethod.fixedRate() > 0) { + long interval = schedulerXMethod.timeUnit().toSeconds(schedulerXMethod.fixedRate()); + interval = interval < 1 ? 1 : interval; + if (interval < 60) { + jobProperty.setTimeType(TimeType.SECOND_DELAY.getValue()); + } + else { + jobProperty.setTimeType(TimeType.FIXED_RATE.getValue()); + } + jobProperty.setTimeExpression(String.valueOf(interval)); + } + } + + jobProperty.setJobName(jobName); + jobProperty.setJobType(JobType.SPRINGSCHEDULE.getKey()); + jobProperty.setJobModel(model); + SpringScheduleProfile profile = new SpringScheduleProfile(); + profile.setClassName(targetClass.getName()); + profile.setMethod(method.getName()); + jobProperty.setContent(JsonUtil.toJson(profile)); + jobProperty.setOverwrite(overwrite); + return jobProperty; + } + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + logger.info("spring scheduled job is not empty, start to sync jobs..."); + try { + Map jobs = new HashMap<>(); + if (!CollectionUtils.isEmpty(taskRegistrar.getCronTaskList())) { + for (CronTask cronTask : taskRegistrar.getCronTaskList()) { + if (cronTask.getRunnable() instanceof ScheduledMethodRunnable) { + ScheduledMethodRunnable runnable = (ScheduledMethodRunnable) cronTask.getRunnable(); + JobProperty jobProperty = convertToJobProperty(cronTask, runnable.getTarget(), runnable.getMethod()); + jobs.put(jobProperty.getJobName(), jobProperty); + } + } + } + if (!CollectionUtils.isEmpty(taskRegistrar.getFixedDelayTaskList())) { + for (IntervalTask intervalTask : taskRegistrar.getFixedDelayTaskList()) { + if (intervalTask.getRunnable() instanceof ScheduledMethodRunnable) { + ScheduledMethodRunnable runnable = (ScheduledMethodRunnable) intervalTask.getRunnable(); + JobProperty jobProperty = convertToJobProperty(intervalTask, runnable.getTarget(), runnable.getMethod()); + jobs.put(jobProperty.getJobName(), jobProperty); + } + } + } + if (!CollectionUtils.isEmpty(taskRegistrar.getFixedRateTaskList())) { + for (IntervalTask intervalTask : taskRegistrar.getFixedRateTaskList()) { + if (intervalTask.getRunnable() instanceof ScheduledMethodRunnable) { + ScheduledMethodRunnable runnable = (ScheduledMethodRunnable) intervalTask.getRunnable(); + JobProperty jobProperty = convertToJobProperty(intervalTask, runnable.getTarget(), runnable.getMethod()); + jobs.put(jobProperty.getJobName(), jobProperty); + } + } + } + + // 获取仅SchedulerX注解任务 + Collection> schedulerXTasks = schedulerxSchedulingConfigurer.getSchedulerXTaskTargets(); + if (schedulerXTasks != null && schedulerXTasks.size() > 0) { + for (Pair task : schedulerXTasks) { + JobProperty jobProperty = convertToJobProperty(null, task.getFirst(), task.getSecond()); + jobs.put(jobProperty.getJobName(), jobProperty); + } + } + + jobSyncService.syncJobs(jobs, properties.getNamespaceSource()); + logger.info("spring scheduled job is not empty, sync jobs finished."); + } + catch (Exception e) { + logger.info("spring scheduled job is not empty, sync jobs failed.", e); + throw new RuntimeException(e); + } + } +} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/schedulerx/util/CronExpression.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/schedulerx/util/CronExpression.java new file mode 100644 index 000000000..bb286c847 --- /dev/null +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/schedulerx/util/CronExpression.java @@ -0,0 +1,1540 @@ +/* + * Copyright 2024-2025 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.alibaba.cloud.scheduling.schedulerx.util; + +import java.text.ParseException; +import java.util.Calendar; +import java.util.Date; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Locale; +import java.util.Map; +import java.util.SortedSet; +import java.util.StringTokenizer; +import java.util.TimeZone; +import java.util.TreeSet; + +import org.springframework.util.Assert; + +/** + * @author yaohui + */ +public final class CronExpression { + + protected static final int SECOND = 0; + protected static final int MINUTE = 1; + protected static final int HOUR = 2; + protected static final int DAY_OF_MONTH = 3; + protected static final int MONTH = 4; + protected static final int DAY_OF_WEEK = 5; + protected static final int YEAR = 6; + protected static final int ALL_SPEC_INT = 99; // '*' + protected static final int NO_SPEC_INT = 98; // '?' + protected static final Integer ALL_SPEC = ALL_SPEC_INT; + protected static final Integer NO_SPEC = NO_SPEC_INT; + + protected static final Map monthMap = new HashMap<>(20); + protected static final Map dayMap = new HashMap<>(60); + + static { + monthMap.put("JAN", 0); + monthMap.put("FEB", 1); + monthMap.put("MAR", 2); + monthMap.put("APR", 3); + monthMap.put("MAY", 4); + monthMap.put("JUN", 5); + monthMap.put("JUL", 6); + monthMap.put("AUG", 7); + monthMap.put("SEP", 8); + monthMap.put("OCT", 9); + monthMap.put("NOV", 10); + monthMap.put("DEC", 11); + + dayMap.put("SUN", 1); + dayMap.put("MON", 2); + dayMap.put("TUE", 3); + dayMap.put("WED", 4); + dayMap.put("THU", 5); + dayMap.put("FRI", 6); + dayMap.put("SAT", 7); + } + + private final String cronExpression; + private TimeZone timeZone = null; + protected transient TreeSet seconds; + protected transient TreeSet minutes; + protected transient TreeSet hours; + protected transient TreeSet daysOfMonth; + protected transient TreeSet months; + protected transient TreeSet daysOfWeek; + protected transient TreeSet years; + + protected transient boolean lastdayOfWeek = false; + protected transient int nthdayOfWeek = 0; + protected transient boolean lastdayOfMonth = false; + protected transient boolean nearestWeekday = false; + protected transient int lastdayOffset = 0; + protected transient boolean expressionParsed = false; + + /** + * MAX_YEAR. + */ + public static final int MAX_YEAR = Calendar.getInstance().get(Calendar.YEAR) + 100; + + /** + * MIN_CAL. + */ + public static final Calendar MIN_CAL = Calendar.getInstance(); + + static { + MIN_CAL.set(1970, 0, 1); + } + + /** + * MIN_DATE. + */ + public static final Date MIN_DATE = MIN_CAL.getTime(); + + /** + * Constructs a new CronExpression based on the specified + * parameter. + * + * @param cronExpression String representation of the cron expression the + * new object should represent + * @throws ParseException if the string expression cannot be parsed into a valid + * CronExpression + */ + public CronExpression(final String cronExpression) throws ParseException { + if (cronExpression == null) { + throw new IllegalArgumentException("cronExpression cannot be null"); + } + + this.cronExpression = cronExpression.toUpperCase(Locale.US); + + buildExpression(this.cronExpression); + } + + /** + * Indicates whether the given date satisfies the cron expression. Note that + * milliseconds are ignored, so two Dates falling on different milliseconds + * of the same second will always have the same result here. + * + * @param date the date to evaluate + * @return a boolean indicating whether the given date satisfies the cron + * expression. + */ + public boolean isSatisfiedBy(final Date date) { + final Calendar testDateCal = Calendar.getInstance(getTimeZone()); + testDateCal.setTime(date); + testDateCal.set(Calendar.MILLISECOND, 0); + final Date originalDate = testDateCal.getTime(); + + testDateCal.add(Calendar.SECOND, -1); + + final Date timeAfter = getTimeAfter(testDateCal.getTime()); + + return ((timeAfter != null) && (timeAfter.equals(originalDate))); + } + + /** + * Returns the next date/time after the given date/time which + * satisfies the cron expression. + * + * @param date the date/time at which to begin the search for the next valid + * date/time + * @return the next valid date/time. + */ + public Date getNextValidTimeAfter(final Date date) { + return getTimeAfter(date); + } + + /** + * Returns the next date/time after the given date/time which does + * not satisfy the expression. + * + * @param date the date/time at which to begin the search for the next + * invalid date/time + * @return the next valid date/time. + */ + public Date getNextInvalidTimeAfter(final Date date) { + long difference = 1000; + + //move back to the nearest second so differences will be accurate + final Calendar adjustCal = Calendar.getInstance(getTimeZone()); + adjustCal.setTime(date); + adjustCal.set(Calendar.MILLISECOND, 0); + Date lastDate = adjustCal.getTime(); + + Date newDate; + + //FUTURE_TODO: (QUARTZ-481) IMPROVE THIS! The following is a BAD solution to this problem. Performance will be very bad here, depending on the cron expression. It is, however A solution. + + //keep getting the next included time until it's farther than one second + // apart. At that point, lastDate is the last valid fire time. We return + // the second immediately following it. + while (difference == 1000) { + newDate = getTimeAfter(lastDate); + if (newDate == null) { + break; + } + + difference = newDate.getTime() - lastDate.getTime(); + + if (difference == 1000) { + lastDate = newDate; + } + } + + return new Date(lastDate.getTime() + 1000); + } + + /** + * Returns the time zone for which this CronExpression + * will be resolved. + * + * @return the time zone. + */ + public TimeZone getTimeZone() { + if (timeZone == null) { + timeZone = TimeZone.getDefault(); + } + + return timeZone; + } + + public void setTimeZone(final TimeZone timeZone) { + this.timeZone = timeZone; + } + + @Override + public String toString() { + return cronExpression; + } + + /** + * check cron expression is valid or not. + * + * @param cronExpression cron expression + * @return return{@code true}if Cron expression is valid,otherwise return{@code false}. + */ + public static boolean isValidExpression(final String cronExpression) { + try { + new CronExpression(cronExpression); + } + catch (final ParseException pe) { + return false; + } + return true; + } + + public static void validateExpression(final String cronExpression) throws ParseException { + new CronExpression(cronExpression); + } + + protected void buildExpression(final String expression) throws ParseException { + expressionParsed = true; + try { + if (seconds == null) { + seconds = new TreeSet<>(); + } + if (minutes == null) { + minutes = new TreeSet<>(); + } + if (hours == null) { + hours = new TreeSet<>(); + } + if (daysOfMonth == null) { + daysOfMonth = new TreeSet<>(); + } + if (months == null) { + months = new TreeSet<>(); + } + if (daysOfWeek == null) { + daysOfWeek = new TreeSet<>(); + } + if (years == null) { + years = new TreeSet<>(); + } + + int exprOn = SECOND; + + final StringTokenizer exprsTok = new StringTokenizer(expression, " \t", + false); + + while (exprsTok.hasMoreTokens() && exprOn <= YEAR) { + final String expr = exprsTok.nextToken().trim(); + + // throw an exception if L is used with other days of the month + if (exprOn == DAY_OF_MONTH && expr.indexOf('L') != -1 && expr.length() > 1 && expr.contains(",")) { + throw new ParseException("Support for specifying 'L' and 'LW' with other days of the month is not implemented", -1); + } + // throw an exception if L is used with other days of the week + if (exprOn == DAY_OF_WEEK && expr.indexOf('L') != -1 && expr.length() > 1 && expr.contains(",")) { + throw new ParseException("Support for specifying 'L' with other days of the week is not implemented", -1); + } + if (exprOn == DAY_OF_WEEK && expr.indexOf('#') != -1 && expr.indexOf('#', expr.indexOf('#') + 1) != -1) { + throw new ParseException("Support for specifying multiple \"nth\" days is not implemented.", -1); + } + + final StringTokenizer vTok = new StringTokenizer(expr, ","); + while (vTok.hasMoreTokens()) { + final String v = vTok.nextToken(); + storeExpressionVals(0, v, exprOn); + } + + exprOn++; + } + + if (exprOn <= DAY_OF_WEEK) { + throw new ParseException("Unexpected end of expression.", + expression.length()); + } + + if (exprOn <= YEAR) { + storeExpressionVals(0, "*", YEAR); + } + + final TreeSet dow = getSet(DAY_OF_WEEK); + final TreeSet dom = getSet(DAY_OF_MONTH); + + // Copying the logic from the UnsupportedOperationException below + final boolean dayOfMSpec = !dom.contains(NO_SPEC); + final boolean dayOfWSpec = !dow.contains(NO_SPEC); + + if (!dayOfMSpec || dayOfWSpec) { + if (!dayOfWSpec || dayOfMSpec) { + throw new ParseException( + "Support for specifying both a day-of-week AND a day-of-month parameter is not implemented.", 0); + } + } + } + catch (final ParseException pe) { + throw pe; + } + catch (final Exception e) { + throw new ParseException("Illegal cron expression format (" + + e.toString() + ")", 0); + } + } + + protected int storeExpressionVals(final int pos, final String s, final int type) + throws ParseException { + + int incr = 0; + int i = skipWhiteSpace(pos, s); + if (i >= s.length()) { + return i; + } + char c = s.charAt(i); + if ((c >= 'A') && (c <= 'Z') && (!s.equals("L")) && (!s.equals("LW")) && (!s.matches("^L-[0-9]*[W]?"))) { + String sub = s.substring(i, i + 3); + int sval = -1; + int eval = -1; + if (type == MONTH) { + sval = getMonthNumber(sub) + 1; + if (sval <= 0) { + throw new ParseException("Invalid Month value: '" + sub + "'", i); + } + if (s.length() > i + 3 && (s.charAt(i + 3) == '-')) { + i += 4; + sub = s.substring(i, i + 3); + eval = getMonthNumber(sub) + 1; + Assert.isTrue(eval > 0, "Invalid Month value: '" + sub + "'"); + } + } + else if (type == DAY_OF_WEEK) { + sval = getDayOfWeekNumber(sub); + if (sval < 0) { + throw new ParseException("Invalid Day-of-Week value: '" + + sub + "'", i); + } + if (s.length() > i + 3) { + c = s.charAt(i + 3); + if (c == '-') { + i += 4; + sub = s.substring(i, i + 3); + eval = getDayOfWeekNumber(sub); + Assert.isTrue(eval >= 0, "Invalid Day-of-Week value: '" + sub + "'"); + } + else if (c == '#') { + i += 4; + nthdayOfWeek = Integer.parseInt(s.substring(i)); + Assert.isTrue(nthdayOfWeek > 0 && nthdayOfWeek < 6, "A numeric value between 1 and 5 must follow the '#' option"); + } + else if (c == 'L') { + lastdayOfWeek = true; + i++; + } + } + } + else { + throw new ParseException( + "Illegal characters for this position: '" + sub + "'", + i); + } + if (eval != -1) { + incr = 1; + } + addToSet(sval, eval, incr, type); + return (i + 3); + } + + if (c == '?') { + i++; + if ((i + 1) < s.length() + && (s.charAt(i) != ' ' && s.charAt(i + 1) != '\t')) { + throw new ParseException("Illegal character after '?': " + + s.charAt(i), i); + } + if (type != DAY_OF_WEEK && type != DAY_OF_MONTH) { + throw new ParseException( + "'?' can only be specfied for Day-of-Month or Day-of-Week.", + i); + } + if (type == DAY_OF_WEEK && !lastdayOfMonth) { + final int val = daysOfMonth.last(); + if (val == NO_SPEC_INT) { + throw new ParseException( + "'?' can only be specfied for Day-of-Month -OR- Day-of-Week.", + i); + } + } + + addToSet(NO_SPEC_INT, -1, 0, type); + return i; + } + + if (c == '*' || c == '/') { + if (c == '*' && (i + 1) >= s.length()) { + addToSet(ALL_SPEC_INT, -1, incr, type); + return i + 1; + } + else if (c == '/' + && ((i + 1) >= s.length() || s.charAt(i + 1) == ' ' || s + .charAt(i + 1) == '\t')) { + throw new ParseException("'/' must be followed by an integer.", i); + } + else if (c == '*') { + i++; + } + c = s.charAt(i); + if (c == '/') { // is an increment specified? + i++; + if (i >= s.length()) { + throw new ParseException("Unexpected end of string.", i); + } + + incr = getNumericValue(s, i); + + i++; + if (incr > 10) { + i++; + } + if (incr > 59 && (type == SECOND || type == MINUTE)) { + throw new ParseException("Increment > 60 : " + incr, i); + } + else if (incr > 23 && (type == HOUR)) { + throw new ParseException("Increment > 24 : " + incr, i); + } + else if (incr > 31 && (type == DAY_OF_MONTH)) { + throw new ParseException("Increment > 31 : " + incr, i); + } + else if (incr > 7 && (type == DAY_OF_WEEK)) { + throw new ParseException("Increment > 7 : " + incr, i); + } + else if (incr > 12 && (type == MONTH)) { + throw new ParseException("Increment > 12 : " + incr, i); + } + } + else { + incr = 1; + } + + addToSet(ALL_SPEC_INT, -1, incr, type); + return i; + } + else if (c == 'L') { + i++; + if (type == DAY_OF_MONTH) { + lastdayOfMonth = true; + } + if (type == DAY_OF_WEEK) { + addToSet(7, 7, 0, type); + } + if (type == DAY_OF_MONTH && s.length() > i) { + c = s.charAt(i); + if (c == '-') { + final ValueSet vs = getValue(0, s, i + 1); + lastdayOffset = vs.value; + if (lastdayOffset > 30) { + throw new ParseException("Offset from last day must be <= 30", i + 1); + } + i = vs.pos; + } + if (s.length() > i) { + c = s.charAt(i); + if (c == 'W') { + nearestWeekday = true; + i++; + } + } + } + return i; + } + else if (c >= '0' && c <= '9') { + int val = Integer.parseInt(String.valueOf(c)); + i++; + if (i >= s.length()) { + addToSet(val, -1, -1, type); + } + else { + c = s.charAt(i); + if (c >= '0' && c <= '9') { + final ValueSet vs = getValue(val, s, i); + val = vs.value; + i = vs.pos; + } + i = checkNext(i, s, val, type); + return i; + } + } + else { + throw new ParseException("Unexpected character: " + c, i); + } + + return i; + } + + protected int checkNext(final int pos, final String s, final int val, final int type) + throws ParseException { + + int end = -1; + int i = pos; + + if (i >= s.length()) { + addToSet(val, end, -1, type); + return i; + } + + char c = s.charAt(pos); + + if (c == 'L') { + if (type == DAY_OF_WEEK) { + if (val < 1 || val > 7) { + throw new ParseException("Day-of-Week values must be between 1 and 7", -1); + } + lastdayOfWeek = true; + } + else { + throw new ParseException("'L' option is not valid here. (pos=" + i + ")", i); + } + final TreeSet set = getSet(type); + set.add(val); + i++; + return i; + } + + if (c == 'W') { + if (type == DAY_OF_MONTH) { + nearestWeekday = true; + } + else { + throw new ParseException("'W' option is not valid here. (pos=" + i + ")", i); + } + if (val > 31) { + throw new ParseException("The 'W' option does not make sense with values larger than 31 (max number of days in a month)", i); + } + final TreeSet set = getSet(type); + set.add(val); + i++; + return i; + } + + if (c == '#') { + if (type != DAY_OF_WEEK) { + throw new ParseException("'#' option is not valid here. (pos=" + i + ")", i); + } + i++; + try { + nthdayOfWeek = Integer.parseInt(s.substring(i)); + if (nthdayOfWeek < 1 || nthdayOfWeek > 5) { + throw new Exception(); + } + } + catch (final Exception e) { + throw new ParseException( + "A numeric value between 1 and 5 must follow the '#' option", + i); + } + + final TreeSet set = getSet(type); + set.add(val); + i++; + return i; + } + + if (c == '-') { + i++; + c = s.charAt(i); + final int v = Integer.parseInt(String.valueOf(c)); + end = v; + i++; + if (i >= s.length()) { + addToSet(val, end, 1, type); + return i; + } + c = s.charAt(i); + if (c >= '0' && c <= '9') { + final ValueSet vs = getValue(v, s, i); + end = vs.value; + i = vs.pos; + } + if (i < s.length() && (s.charAt(i) == '/')) { + i++; + c = s.charAt(i); + final int v2 = Integer.parseInt(String.valueOf(c)); + i++; + if (i >= s.length()) { + addToSet(val, end, v2, type); + return i; + } + c = s.charAt(i); + if (c >= '0' && c <= '9') { + final ValueSet vs = getValue(v2, s, i); + final int v3 = vs.value; + addToSet(val, end, v3, type); + i = vs.pos; + return i; + } + else { + addToSet(val, end, v2, type); + return i; + } + } + else { + addToSet(val, end, 1, type); + return i; + } + } + + if (c == '/') { + i++; + c = s.charAt(i); + final int v2 = Integer.parseInt(String.valueOf(c)); + i++; + if (i >= s.length()) { + addToSet(val, end, v2, type); + return i; + } + c = s.charAt(i); + if (c >= '0' && c <= '9') { + final ValueSet vs = getValue(v2, s, i); + final int v3 = vs.value; + addToSet(val, end, v3, type); + i = vs.pos; + return i; + } + else { + throw new ParseException("Unexpected character '" + c + "' after '/'", i); + } + } + + addToSet(val, end, 0, type); + i++; + return i; + } + + public String getCronExpression() { + return cronExpression; + } + + public String getExpressionSummary() { + final StringBuilder buf = new StringBuilder(); + + buf.append("seconds: "); + buf.append(getExpressionSetSummary(seconds)); + buf.append("\n"); + buf.append("minutes: "); + buf.append(getExpressionSetSummary(minutes)); + buf.append("\n"); + buf.append("hours: "); + buf.append(getExpressionSetSummary(hours)); + buf.append("\n"); + buf.append("daysOfMonth: "); + buf.append(getExpressionSetSummary(daysOfMonth)); + buf.append("\n"); + buf.append("months: "); + buf.append(getExpressionSetSummary(months)); + buf.append("\n"); + buf.append("daysOfWeek: "); + buf.append(getExpressionSetSummary(daysOfWeek)); + buf.append("\n"); + buf.append("lastdayOfWeek: "); + buf.append(lastdayOfWeek); + buf.append("\n"); + buf.append("nearestWeekday: "); + buf.append(nearestWeekday); + buf.append("\n"); + buf.append("NthDayOfWeek: "); + buf.append(nthdayOfWeek); + buf.append("\n"); + buf.append("lastdayOfMonth: "); + buf.append(lastdayOfMonth); + buf.append("\n"); + buf.append("years: "); + buf.append(getExpressionSetSummary(years)); + buf.append("\n"); + + return buf.toString(); + } + + protected String getExpressionSetSummary(final java.util.Set set) { + + if (set.contains(NO_SPEC)) { + return "?"; + } + if (set.contains(ALL_SPEC)) { + return "*"; + } + + final StringBuilder buf = new StringBuilder(); + + final Iterator itr = set.iterator(); + boolean first = true; + while (itr.hasNext()) { + final Integer iVal = itr.next(); + final String val = iVal.toString(); + if (!first) { + buf.append(","); + } + buf.append(val); + first = false; + } + + return buf.toString(); + } + + protected String getExpressionSetSummary(final java.util.ArrayList list) { + + if (list.contains(NO_SPEC)) { + return "?"; + } + if (list.contains(ALL_SPEC)) { + return "*"; + } + + final StringBuilder buf = new StringBuilder(); + + final Iterator itr = list.iterator(); + boolean first = true; + while (itr.hasNext()) { + final Integer iVal = itr.next(); + final String val = iVal.toString(); + if (!first) { + buf.append(","); + } + buf.append(val); + first = false; + } + + return buf.toString(); + } + + protected int skipWhiteSpace(int i, final String s) { + for (; i < s.length() && (s.charAt(i) == ' ' || s.charAt(i) == '\t'); i++) { + // empty + } + + return i; + } + + protected int findNextWhiteSpace(int i, final String s) { + for (; i < s.length() && (s.charAt(i) != ' ' || s.charAt(i) != '\t'); i++) { + // empty + } + + return i; + } + + protected void addToSet(final int val, final int end, int incr, final int type) + throws ParseException { + + final TreeSet set = getSet(type); + + if (type == SECOND || type == MINUTE) { + if ((val < 0 || val > 59 || end > 59) && (val != ALL_SPEC_INT)) { + throw new ParseException( + "Minute and Second values must be between 0 and 59", + -1); + } + } + else if (type == HOUR) { + if ((val < 0 || val > 23 || end > 23) && (val != ALL_SPEC_INT)) { + throw new ParseException( + "Hour values must be between 0 and 23", -1); + } + } + else if (type == DAY_OF_MONTH) { + if ((val < 1 || val > 31 || end > 31) && (val != ALL_SPEC_INT) + && (val != NO_SPEC_INT)) { + throw new ParseException( + "Day of month values must be between 1 and 31", -1); + } + } + else if (type == MONTH) { + if ((val < 1 || val > 12 || end > 12) && (val != ALL_SPEC_INT)) { + throw new ParseException( + "Month values must be between 1 and 12", -1); + } + } + else if (type == DAY_OF_WEEK) { + if ((val == 0 || val > 7 || end > 7) && (val != ALL_SPEC_INT) + && (val != NO_SPEC_INT)) { + throw new ParseException( + "Day-of-Week values must be between 1 and 7", -1); + } + } + + if ((incr == 0 || incr == -1) && val != ALL_SPEC_INT) { + if (val != -1) { + set.add(val); + } + else { + set.add(NO_SPEC); + } + + return; + } + + int startAt = val; + int stopAt = end; + + if (val == ALL_SPEC_INT && incr <= 0) { + incr = 1; + set.add(ALL_SPEC); // put in a marker, but also fill values + } + + if (type == SECOND || type == MINUTE) { + if (stopAt == -1) { + stopAt = 59; + } + if (startAt == -1 || startAt == ALL_SPEC_INT) { + startAt = 0; + } + } + else if (type == HOUR) { + if (stopAt == -1) { + stopAt = 23; + } + if (startAt == -1 || startAt == ALL_SPEC_INT) { + startAt = 0; + } + } + else if (type == DAY_OF_MONTH) { + if (stopAt == -1) { + stopAt = 31; + } + if (startAt == -1 || startAt == ALL_SPEC_INT) { + startAt = 1; + } + } + else if (type == MONTH) { + if (stopAt == -1) { + stopAt = 12; + } + if (startAt == -1 || startAt == ALL_SPEC_INT) { + startAt = 1; + } + } + else if (type == DAY_OF_WEEK) { + if (stopAt == -1) { + stopAt = 7; + } + if (startAt == -1 || startAt == ALL_SPEC_INT) { + startAt = 1; + } + } + else if (type == YEAR) { + if (stopAt == -1) { + stopAt = MAX_YEAR; + } + if (startAt == -1 || startAt == ALL_SPEC_INT) { + startAt = 1970; + } + } + + // if the end of the range is before the start, then we need to overflow into + // the next day, month etc. This is done by adding the maximum amount for that + // type, and using modulus max to determine the value being added. + int max = -1; + if (stopAt < startAt) { + switch (type) { + case SECOND: + max = 60; + break; + case MINUTE: + max = 60; + break; + case HOUR: + max = 24; + break; + case MONTH: + max = 12; + break; + case DAY_OF_WEEK: + max = 7; + break; + case DAY_OF_MONTH: + max = 31; + break; + case YEAR: + throw new IllegalArgumentException("Start year must be less than stop year"); + default: + throw new IllegalArgumentException("Unexpected type encountered"); + } + stopAt += max; + } + + for (int i = startAt; i <= stopAt; i += incr) { + if (max == -1) { + // ie: there's no max to overflow over + set.add(i); + } + else { + // take the modulus to get the real value + int i2 = i % max; + + // 1-indexed ranges should not include 0, and should include their max + if (i2 == 0 && (type == MONTH || type == DAY_OF_WEEK || type == DAY_OF_MONTH)) { + i2 = max; + } + + set.add(i2); + } + } + } + + TreeSet getSet(final int type) throws ParseException { + switch (type) { + case SECOND: + return seconds; + case MINUTE: + return minutes; + case HOUR: + return hours; + case DAY_OF_MONTH: + return daysOfMonth; + case MONTH: + return months; + case DAY_OF_WEEK: + return daysOfWeek; + case YEAR: + return years; + default: + throw new ParseException("Invalid type value: '" + type + "'", -1); + } + } + + protected ValueSet getValue(final int v, final String s, int i) { + char c = s.charAt(i); + final StringBuilder s1 = new StringBuilder(String.valueOf(v)); + while (c >= '0' && c <= '9') { + s1.append(c); + i++; + if (i >= s.length()) { + break; + } + c = s.charAt(i); + } + final ValueSet val = new ValueSet(); + + val.pos = (i < s.length()) ? i : i + 1; + val.value = Integer.parseInt(s1.toString()); + return val; + } + + protected int getNumericValue(final String s, final int i) { + final int endOfVal = findNextWhiteSpace(i, s); + final String val = s.substring(i, endOfVal); + return Integer.parseInt(val); + } + + protected int getMonthNumber(final String s) { + final Integer integer = monthMap.get(s); + + if (integer == null) { + return -1; + } + + return integer; + } + + protected int getDayOfWeekNumber(final String s) { + final Integer integer = dayMap.get(s); + + if (integer == null) { + return -1; + } + + return integer; + } + + public Date getTimeAfter(Date afterTime) { + + // Computation is based on Gregorian year only. + final Calendar cl = new java.util.GregorianCalendar(getTimeZone()); + + // move ahead one second, since we're computing the time *after* the + // given time + if (afterTime == null) { + return null; + } + afterTime = new Date(afterTime.getTime() + 1000); + // CronTrigger does not deal with milliseconds + cl.setTime(afterTime); + cl.set(Calendar.MILLISECOND, 0); + + boolean gotOne = false; + // loop until we've computed the next time, or we've past the endTime + while (!gotOne) { + //if (endTime != null && cl.getTime().after(endTime)) return null; + if (cl.get(Calendar.YEAR) > 2999) { // prevent endless loop... + return null; + } + + SortedSet st = null; + int t = 0; + + int sec = cl.get(Calendar.SECOND); + int min = cl.get(Calendar.MINUTE); + + // get second................................................. + st = seconds.tailSet(sec); + if (st != null && st.size() != 0) { + sec = st.first(); + } + else { + sec = seconds.first(); + min++; + cl.set(Calendar.MINUTE, min); + } + cl.set(Calendar.SECOND, sec); + + min = cl.get(Calendar.MINUTE); + int hr = cl.get(Calendar.HOUR_OF_DAY); + t = -1; + + // get minute................................................. + st = minutes.tailSet(min); + if (st != null && st.size() != 0) { + t = min; + min = st.first(); + } + else { + min = minutes.first(); + hr++; + } + if (min != t) { + cl.set(Calendar.SECOND, 0); + cl.set(Calendar.MINUTE, min); + setCalendarHour(cl, hr); + continue; + } + cl.set(Calendar.MINUTE, min); + + hr = cl.get(Calendar.HOUR_OF_DAY); + int day = cl.get(Calendar.DAY_OF_MONTH); + t = -1; + + // get hour................................................... + st = hours.tailSet(hr); + if (st != null && st.size() != 0) { + t = hr; + hr = st.first(); + } + else { + hr = hours.first(); + day++; + } + if (hr != t) { + cl.set(Calendar.SECOND, 0); + cl.set(Calendar.MINUTE, 0); + cl.set(Calendar.DAY_OF_MONTH, day); + setCalendarHour(cl, hr); + continue; + } + cl.set(Calendar.HOUR_OF_DAY, hr); + + day = cl.get(Calendar.DAY_OF_MONTH); + int mon = cl.get(Calendar.MONTH) + 1; + // '+ 1' because calendar is 0-based for this field, and we are + // 1-based + t = -1; + int tmon = mon; + + // get day................................................... + final boolean dayOfMSpec = !daysOfMonth.contains(NO_SPEC); + final boolean dayOfWSpec = !daysOfWeek.contains(NO_SPEC); + if (dayOfMSpec && !dayOfWSpec) { // get day by day of month rule + st = daysOfMonth.tailSet(day); + if (lastdayOfMonth) { + if (!nearestWeekday) { + t = day; + day = getLastDayOfMonth(mon, cl.get(Calendar.YEAR)); + day -= lastdayOffset; + day = t > day ? 1 : day; + if (t > day && ++mon > 12) { + mon = 1; + tmon = 3333; // ensure test of mon != tmon further below fails + cl.add(Calendar.YEAR, 1); + } + } + else { + t = day; + day = getLastDayOfMonth(mon, cl.get(Calendar.YEAR)); + day -= lastdayOffset; + + final Calendar tcal = Calendar.getInstance(getTimeZone()); + tcal.set(Calendar.SECOND, 0); + tcal.set(Calendar.MINUTE, 0); + tcal.set(Calendar.HOUR_OF_DAY, 0); + tcal.set(Calendar.DAY_OF_MONTH, day); + tcal.set(Calendar.MONTH, mon - 1); + tcal.set(Calendar.YEAR, cl.get(Calendar.YEAR)); + + final int ldom = getLastDayOfMonth(mon, cl.get(Calendar.YEAR)); + final int dow = tcal.get(Calendar.DAY_OF_WEEK); + + if (dow == Calendar.SATURDAY && day == 1) { + day += 2; + } + else if (dow == Calendar.SATURDAY) { + day -= 1; + } + else if (dow == Calendar.SUNDAY && day == ldom) { + day -= 2; + } + else if (dow == Calendar.SUNDAY) { + day += 1; + } + + tcal.set(Calendar.SECOND, sec); + tcal.set(Calendar.MINUTE, min); + tcal.set(Calendar.HOUR_OF_DAY, hr); + tcal.set(Calendar.DAY_OF_MONTH, day); + tcal.set(Calendar.MONTH, mon - 1); + final Date nTime = tcal.getTime(); + if (nTime.before(afterTime)) { + day = 1; + mon++; + } + } + } + else if (nearestWeekday) { + t = day; + day = daysOfMonth.first(); + + final Calendar tcal = Calendar.getInstance(getTimeZone()); + tcal.set(Calendar.SECOND, 0); + tcal.set(Calendar.MINUTE, 0); + tcal.set(Calendar.HOUR_OF_DAY, 0); + tcal.set(Calendar.DAY_OF_MONTH, day); + tcal.set(Calendar.MONTH, mon - 1); + tcal.set(Calendar.YEAR, cl.get(Calendar.YEAR)); + + final int ldom = getLastDayOfMonth(mon, cl.get(Calendar.YEAR)); + final int dow = tcal.get(Calendar.DAY_OF_WEEK); + + if (dow == Calendar.SATURDAY && day == 1) { + day += 2; + } + else if (dow == Calendar.SATURDAY) { + day -= 1; + } + else if (dow == Calendar.SUNDAY && day == ldom) { + day -= 2; + } + else if (dow == Calendar.SUNDAY) { + day += 1; + } + + tcal.set(Calendar.SECOND, sec); + tcal.set(Calendar.MINUTE, min); + tcal.set(Calendar.HOUR_OF_DAY, hr); + tcal.set(Calendar.DAY_OF_MONTH, day); + tcal.set(Calendar.MONTH, mon - 1); + final Date nTime = tcal.getTime(); + if (nTime.before(afterTime)) { + day = daysOfMonth.first(); + mon++; + } + } + else if (st != null && st.size() != 0) { + t = day; + day = st.first(); + // make sure we don't over-run a short month, such as february + final int lastDay = getLastDayOfMonth(mon, cl.get(Calendar.YEAR)); + if (day > lastDay) { + day = daysOfMonth.first(); + mon++; + } + } + else { + day = daysOfMonth.first(); + mon++; + } + + if (day != t || mon != tmon) { + cl.set(Calendar.SECOND, 0); + cl.set(Calendar.MINUTE, 0); + cl.set(Calendar.HOUR_OF_DAY, 0); + cl.set(Calendar.DAY_OF_MONTH, day); + cl.set(Calendar.MONTH, mon - 1); + // '- 1' because calendar is 0-based for this field, and we + // are 1-based + continue; + } + } + else if (dayOfWSpec && !dayOfMSpec) { // get day by day of week rule + if (lastdayOfWeek) { // are we looking for the last XXX day of + // the month? + final int dow = daysOfWeek.first(); // desired + // d-o-w + final int cDow = cl.get(Calendar.DAY_OF_WEEK); // current d-o-w + int daysToAdd = 0; + if (cDow < dow) { + daysToAdd = dow - cDow; + } + if (cDow > dow) { + daysToAdd = dow + (7 - cDow); + } + + final int lDay = getLastDayOfMonth(mon, cl.get(Calendar.YEAR)); + + if (day + daysToAdd > lDay) { // did we already miss the + // last one? + cl.set(Calendar.SECOND, 0); + cl.set(Calendar.MINUTE, 0); + cl.set(Calendar.HOUR_OF_DAY, 0); + cl.set(Calendar.DAY_OF_MONTH, 1); + cl.set(Calendar.MONTH, mon); + // no '- 1' here because we are promoting the month + continue; + } + + // find date of last occurrence of this day in this month... + while ((day + daysToAdd + 7) <= lDay) { + daysToAdd += 7; + } + day += daysToAdd; + if (daysToAdd > 0) { + cl.set(Calendar.SECOND, 0); + cl.set(Calendar.MINUTE, 0); + cl.set(Calendar.HOUR_OF_DAY, 0); + cl.set(Calendar.DAY_OF_MONTH, day); + cl.set(Calendar.MONTH, mon - 1); + // '- 1' here because we are not promoting the month + continue; + } + } + else if (nthdayOfWeek != 0) { + // are we looking for the Nth XXX day in the month? + final int dow = daysOfWeek.first(); // desired + // d-o-w + final int cDow = cl.get(Calendar.DAY_OF_WEEK); // current d-o-w + int daysToAdd = 0; + if (cDow < dow) { + daysToAdd = dow - cDow; + } + else if (cDow > dow) { + daysToAdd = dow + (7 - cDow); + } + + boolean dayShifted = false; + if (daysToAdd > 0) { + dayShifted = true; + } + + day += daysToAdd; + int weekOfMonth = day / 7; + if (day % 7 > 0) { + weekOfMonth++; + } + + daysToAdd = (nthdayOfWeek - weekOfMonth) * 7; + day += daysToAdd; + if (daysToAdd < 0 + || day > getLastDayOfMonth(mon, cl + .get(Calendar.YEAR))) { + cl.set(Calendar.SECOND, 0); + cl.set(Calendar.MINUTE, 0); + cl.set(Calendar.HOUR_OF_DAY, 0); + cl.set(Calendar.DAY_OF_MONTH, 1); + cl.set(Calendar.MONTH, mon); + // no '- 1' here because we are promoting the month + continue; + } + else if (daysToAdd > 0 || dayShifted) { + cl.set(Calendar.SECOND, 0); + cl.set(Calendar.MINUTE, 0); + cl.set(Calendar.HOUR_OF_DAY, 0); + cl.set(Calendar.DAY_OF_MONTH, day); + cl.set(Calendar.MONTH, mon - 1); + // '- 1' here because we are NOT promoting the month + continue; + } + } + else { + final int cDow = cl.get(Calendar.DAY_OF_WEEK); // current d-o-w + int dow = daysOfWeek.first(); // desired + // d-o-w + st = daysOfWeek.tailSet(cDow); + if (st != null && st.size() > 0) { + dow = st.first(); + } + + int daysToAdd = 0; + if (cDow < dow) { + daysToAdd = dow - cDow; + } + if (cDow > dow) { + daysToAdd = dow + (7 - cDow); + } + + final int lDay = getLastDayOfMonth(mon, cl.get(Calendar.YEAR)); + + if (day + daysToAdd > lDay) { // will we pass the end of + // the month? + cl.set(Calendar.SECOND, 0); + cl.set(Calendar.MINUTE, 0); + cl.set(Calendar.HOUR_OF_DAY, 0); + cl.set(Calendar.DAY_OF_MONTH, 1); + cl.set(Calendar.MONTH, mon); + // no '- 1' here because we are promoting the month + continue; + } + else if (daysToAdd > 0) { // are we switching days? + cl.set(Calendar.SECOND, 0); + cl.set(Calendar.MINUTE, 0); + cl.set(Calendar.HOUR_OF_DAY, 0); + cl.set(Calendar.DAY_OF_MONTH, day + daysToAdd); + cl.set(Calendar.MONTH, mon - 1); + // '- 1' because calendar is 0-based for this field, + // and we are 1-based + continue; + } + } + } + else { // dayOfWSpec && !dayOfMSpec + throw new UnsupportedOperationException( + "Support for specifying both a day-of-week AND a day-of-month parameter is not implemented."); + } + cl.set(Calendar.DAY_OF_MONTH, day); + + mon = cl.get(Calendar.MONTH) + 1; + // '+ 1' because calendar is 0-based for this field, and we are + // 1-based + int year = cl.get(Calendar.YEAR); + t = -1; + + // test for expressions that never generate a valid fire date, + // but keep looping... + if (year > MAX_YEAR) { + return null; + } + + // get month................................................... + st = months.tailSet(mon); + if (st != null && st.size() != 0) { + t = mon; + mon = st.first(); + } + else { + mon = months.first(); + year++; + } + if (mon != t) { + cl.set(Calendar.SECOND, 0); + cl.set(Calendar.MINUTE, 0); + cl.set(Calendar.HOUR_OF_DAY, 0); + cl.set(Calendar.DAY_OF_MONTH, 1); + cl.set(Calendar.MONTH, mon - 1); + // '- 1' because calendar is 0-based for this field, and we are + // 1-based + cl.set(Calendar.YEAR, year); + continue; + } + cl.set(Calendar.MONTH, mon - 1); + // '- 1' because calendar is 0-based for this field, and we are + // 1-based + + year = cl.get(Calendar.YEAR); + t = -1; + + // get year................................................... + st = years.tailSet(year); + if (st != null && st.size() != 0) { + t = year; + year = st.first(); + } + else { + return null; // ran out of years... + } + + if (year != t) { + cl.set(Calendar.SECOND, 0); + cl.set(Calendar.MINUTE, 0); + cl.set(Calendar.HOUR_OF_DAY, 0); + cl.set(Calendar.DAY_OF_MONTH, 1); + cl.set(Calendar.MONTH, 0); + // '- 1' because calendar is 0-based for this field, and we are + // 1-based + cl.set(Calendar.YEAR, year); + continue; + } + cl.set(Calendar.YEAR, year); + + gotOne = true; + } // while( !done ) + + return cl.getTime(); + } + + /** + * Advance the calendar to the particular hour paying particular attention + * to daylight saving problems. + * + * @param cal the calendar to operate on + * @param hour the hour to set + */ + protected void setCalendarHour(final Calendar cal, final int hour) { + cal.set(Calendar.HOUR_OF_DAY, hour); + if (cal.get(Calendar.HOUR_OF_DAY) != hour && hour != 24) { + cal.set(Calendar.HOUR_OF_DAY, hour + 1); + } + } + + protected Date getTimeBefore(final Date targetDate) { + final Calendar cl = Calendar.getInstance(getTimeZone()); + + // CronTrigger does not deal with milliseconds, so truncate target + cl.setTime(targetDate); + cl.set(Calendar.MILLISECOND, 0); + final Date targetDateNoMs = cl.getTime(); + + // to match this + Date start = targetDateNoMs; + final long minIncrement = findMinIncrement(); + Date prevFireTime; + do { + final Date prevCheckDate = new Date(start.getTime() - minIncrement); + prevFireTime = getTimeAfter(prevCheckDate); + if (prevFireTime == null || prevFireTime.before(MIN_DATE)) { + return null; + } + start = prevCheckDate; + } while (prevFireTime.compareTo(targetDateNoMs) >= 0); + return prevFireTime; + } + + public Date getPrevFireTime(final Date targetDate) { + return getTimeBefore(targetDate); + } + + private long findMinIncrement() { + if (seconds.size() != 1) { + return minInSet(seconds) * 1000; + } + else if (seconds.first() == ALL_SPEC_INT) { + return 1000; + } + if (minutes.size() != 1) { + return minInSet(minutes) * 60000; + } + else if (minutes.first() == ALL_SPEC_INT) { + return 60000; + } + if (hours.size() != 1) { + return minInSet(hours) * 3600000; + } + else if (hours.first() == ALL_SPEC_INT) { + return 3600000; + } + return 86400000; + } + + private int minInSet(final TreeSet set) { + int previous = 0; + int min = Integer.MAX_VALUE; + boolean first = true; + for (final int value : set) { + if (first) { + previous = value; + first = false; + continue; + } + else { + final int diff = value - previous; + if (diff < min) { + min = diff; + } + } + } + return min; + } + + protected boolean isLeapYear(final int year) { + return ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)); + } + + protected int getLastDayOfMonth(final int monthNum, final int year) { + switch (monthNum) { + case 1: + return 31; + case 2: + return (isLeapYear(year)) ? 29 : 28; + case 3: + return 31; + case 4: + return 30; + case 5: + return 31; + case 6: + return 30; + case 7: + return 31; + case 8: + return 31; + case 9: + return 30; + case 10: + return 31; + case 11: + return 30; + case 12: + return 31; + default: + throw new IllegalArgumentException("Illegal month number: " + + monthNum); + } + } + + private class ValueSet { + public int value; + public int pos; + } +} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/shedlock/ShedLockAutoConfigure.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/shedlock/ShedLockAutoConfigure.java new file mode 100644 index 000000000..eb480469b --- /dev/null +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/shedlock/ShedLockAutoConfigure.java @@ -0,0 +1,69 @@ +/* + * Copyright 2024-2025 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.alibaba.cloud.scheduling.shedlock; + +import javax.sql.DataSource; + +import com.alibaba.cloud.scheduling.SchedulingConstants; +import net.javacrumbs.shedlock.core.LockProvider; +import net.javacrumbs.shedlock.provider.jdbctemplate.JdbcTemplateLockProvider; +import net.javacrumbs.shedlock.spring.annotation.EnableSchedulerLock; + +import org.springframework.boot.autoconfigure.AutoConfigureAfter; +import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.io.ClassPathResource; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.datasource.init.DataSourceInitializer; +import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator; + +/** + * @author yaohui + **/ +@Configuration(proxyBeanMethods = false) +@AutoConfigureAfter(DataSourceAutoConfiguration.class) +@EnableSchedulerLock(defaultLockAtMostFor = "1m") +@ConditionalOnBean(DataSource.class) +@ConditionalOnProperty(name = SchedulingConstants.SCHEDULING_CONFIG_DISTRIBUTED_MODE_KEY, havingValue = "shedlock") +public class ShedLockAutoConfigure { + + private static final String SCHEDULED_LOCK_SCHEMA_PATH = "shedlock/schema/schema-mysql.sql"; + + @Bean + @ConditionalOnMissingBean + public LockProvider lockProvider(DataSource dataSource) { + return new JdbcTemplateLockProvider(JdbcTemplateLockProvider.Configuration.builder() + .withJdbcTemplate(new JdbcTemplate(dataSource)) + .usingDbTime() + .build()); + } + + @Bean + @ConditionalOnMissingBean + public DataSourceInitializer shedLockDataSourceInitializer(DataSource dataSource) { + ResourceDatabasePopulator resourceDatabasePopulator = new ResourceDatabasePopulator(); + resourceDatabasePopulator.addScript(new ClassPathResource(SCHEDULED_LOCK_SCHEMA_PATH)); + DataSourceInitializer dataSourceInitializer = new DataSourceInitializer(); + dataSourceInitializer.setDataSource(dataSource); + dataSourceInitializer.setDatabasePopulator(resourceDatabasePopulator); + return dataSourceInitializer; + } +} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/resources/META-INF/spring.factories b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/resources/META-INF/spring.factories new file mode 100644 index 000000000..0d03ded27 --- /dev/null +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/resources/META-INF/spring.factories @@ -0,0 +1,3 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ +com.alibaba.cloud.scheduling.schedulerx.SchedulerxAutoConfigure,\ +com.alibaba.cloud.scheduling.shedlock.ShedLockAutoConfigure diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/resources/shedlock/schema/schema-mysql.sql b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/resources/shedlock/schema/schema-mysql.sql new file mode 100644 index 000000000..c369b4c0e --- /dev/null +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/resources/shedlock/schema/schema-mysql.sql @@ -0,0 +1,2 @@ +CREATE TABLE IF NOT EXISTS shedlock(name VARCHAR(64) NOT NULL, lock_until TIMESTAMP(3) NOT NULL, + locked_at TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), locked_by VARCHAR(255) NOT NULL, PRIMARY KEY (name)); diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/test/java/com/alibaba/cloud/scheduling/schedulerx/util/CronExpressionTest.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/test/java/com/alibaba/cloud/scheduling/schedulerx/util/CronExpressionTest.java new file mode 100644 index 000000000..4e415b290 --- /dev/null +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/test/java/com/alibaba/cloud/scheduling/schedulerx/util/CronExpressionTest.java @@ -0,0 +1,73 @@ +/* + * Copyright 2024-2025 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.alibaba.cloud.scheduling.schedulerx.util; + +import java.text.ParseException; +import java.util.Date; + +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * @author yaohui + */ +class CronExpressionTest { + + @Test + void isValidExpression() { + assertThat(CronExpression.isValidExpression("0 0 0 * * ?")).isEqualTo(true); + assertThat(CronExpression.isValidExpression("0 */5 * * * ?")).isEqualTo(true); + assertThat(CronExpression.isValidExpression("0 0 8 1 JAN ?")).isEqualTo(true); + assertThat(CronExpression.isValidExpression("0 0 8 ? 10 THU")).isEqualTo(true); + assertThat(CronExpression.isValidExpression("0 0 8 ? 10 THU-SAT")).isEqualTo(true); + assertThat(CronExpression.isValidExpression("0 0 8 ? 10 FRI#1")).isEqualTo(true); + assertThat(CronExpression.isValidExpression("0 0 8 ? 10 FRI#5")).isEqualTo(true); + // false + assertThat(CronExpression.isValidExpression("0 0 8 1 JAW ?")).isEqualTo(false); + assertThat(CronExpression.isValidExpression("0 0 8 ? 10 THP-SAT")).isEqualTo(false); + assertThat(CronExpression.isValidExpression("0 0 8 ? 10 FRI#0")).isEqualTo(false); + assertThat(CronExpression.isValidExpression("0 0 8 ? 10 FRI#6")).isEqualTo(false); + } + + @Test + void getTimeAfter() throws ParseException { + CronExpression cronExpression = new CronExpression("0 0 8 1 JAN ?"); + Date nextDate = cronExpression.getTimeAfter(new Date()); + System.out.println(nextDate); + assertThat(nextDate).isNotNull(); + + cronExpression = new CronExpression("0 */5 * * * ?"); + nextDate = cronExpression.getTimeAfter(new Date()); + System.out.println(nextDate); + assertThat(nextDate).isNotNull(); + } + + @Test + void getTimeBefore() throws ParseException { + CronExpression cronExpression = new CronExpression("0 0 8 1 JAN ?"); + Date beforeDate = cronExpression.getTimeBefore(new Date()); + System.out.println(beforeDate); + assertThat(beforeDate).isNotNull(); + + cronExpression = new CronExpression("0 */5 * * * ?"); + beforeDate = cronExpression.getTimeBefore(new Date()); + System.out.println(beforeDate); + assertThat(beforeDate).isNotNull(); + } + +}